主存和高速缓存的关系
主存,也就是前面说的 DRAM 。DRAM 是一种内存类型,用于存储程序和数据,是计算机系统中的主要存储器件。而高速缓存是一种临时存储器,用于存储 CPU 访问频繁的数据和指令,以提高数据访问速度。比如我运行IDEA要占去好几个G的内存,数据是存在DRAM中的,高速缓存可没有这么大空间。
另外,高速缓存的访问速度比 DRAM 快得多,CPU 的高速缓存是距离 CPU 最近的存储器,速度比内存(包括DRAM)快很多,可以与 CPU 同步工作。而DRAM的访问速度相对较慢,通常比高速缓存慢几个数量级。
高速缓存又分为L1、L2、L3四个级。L1 缓存是最接近 CPU 核心的一级缓存,速度最快,容量较小;L2 缓存位于 L1 缓存和主内存之间,速度比 L1 缓存慢一些,容量较大一些;L3 缓存是最靠近主内存的一级缓存,速度比 L1 和 L2 缓存都要慢一些,容量最大。
整个计算机有一个存储器层级结构划分,如下图所示。L0 也就是CPU运算器中的寄存器,从上到下速度越来越慢,但是容量越来越大。
时钟周期
终于开始点题了, 计算机1秒能干多少事儿,这里的事儿反应到CPU上就是一个个的指令。比如最简单的指令包括读写寄存器、访问高速缓存、加减运算等等。
最简单的原子指令可以在一个很短的时间段内完成,这个时间段有一个特别的名称,叫做时钟周期。
我们查看电脑配置的时候有一个指标是 XXX MHz(赫兹),比如我的电脑是 2667 MHz,也就是 2.6GHz,这个指标叫做时钟频率。
时钟频率是指计算机中央处理器CPU的工作频率,表示每秒钟CPU内核工作的次数。时钟频率越高,CPU的工作速度越快。
每个时钟周期,CPU可以执行一条指令。所以说,我这台电脑 - 2.667 GHz,相当于CPU每秒钟可以执行2.667亿条指令。1秒执行2.667亿条指令,好家伙,确实是快呀,想想就累啊,可见CPU也是蛮辛苦的。
时钟周期是CPU执行指令的最基本单位。在一个时钟周期内,CPU仅完成一个最基本的动作。
计算机一些常见操作耗时
普通计算机一秒就能执行数以亿计的指令数,那对应到一些常见操作上的耗时是多少呢?
下面这个表是摘自《性能之巅:洞悉系统、企业与云计算》中的一个关于系统延时的表格,这个表是针对 3.3GHz 时钟频率的计算结果。
一个 CPU 周期当做一个基本单位,和现实世界中的1秒做对应关系,可以看出CPU到底有多快,而和CPU比起来,其他操作到底有多慢。即便对于CPU来说,其他操作很慢,但是现实世界的1秒钟足够计算机干很多事儿了。
事件
耗时
相对时间比例
1个CPU周期
0.3 ns
1s
L1缓存访问
0.9 ns
3s
L2缓存访问
2.8 ns
9s
L3缓存访问
12.9 ns
43s
主存访问(从CPU访问DRAM)
120 ns
6分
固态硬盘I/O(闪存)
50-150 μs
2-6天
旋转磁盘I/O
1-10 ms
1-12月
互联网:从旧金山到纽约
40 ms
4年
互联网:从旧金山到英国
81 ms
8年
互联网:从旧金山到澳大利亚
183 ms
19年
TCP包重传
1-3 s
105-317年
OS虚拟化系统重启
4s
423年
SCSI命令超时
30 s
3千年
硬件虚拟化系统重启
40 s
4千年
物理系统重启
5m
32千年
站在CPU的角度来看,物理重启一次的时间要花上几千年的时间。这比神话传说中的天上一天,人间一年还要夸张。
Linux之父讽刺AI炒作:很搞笑,大概我也会被大模型取代
我用这10招,能减少了80%的BUG
工作中有没有做过性能调优?一问这个便知!
知乎高问:程序员有必要知道为什么做某个功能吗?
晚上总是加班,白天上班迟到,可以吗?
Linux之父讽刺AI炒作:很搞笑,大概我也会被大模型取代
我用这10招,能减少了80%的BUG
工作中有没有做过性能调优?一问这个便知!
晚上总是加班,白天上班迟到,可以吗?返回搜狐,查看更多