简而言之,因为内存太慢了,实际上内存之所以诞生也是基于类似的原因。理论上来说,一台计算机只需要外部存储器就能运行,但是这样速度太慢,尤其是早期使用的纸带、磁带,完全跟不上处理器的运算速度。因此人们发明了内存作为CPU和外部存储器之间的缓冲区域,CPU可以把读取到的数据和指令暂时存放在内存中,以便后续立即使用。内存作为随机存储器,免去了寻道等操作,存取延迟比外部存储器可以快上数个数量级,这样大大提升了系统的运行速度。
随机存储器主要有两种,静态随机存储器SRAM和动态随机存储器DRAM。SRAM无需刷新,速度快,但密度小,造价高昂。DRAM需要不断通电刷新,速度比较慢,但制造成本更低,容量更大。内存最开始有过SRAM的时期,随后就被更廉价的DRAM取代。一开始DRAM的速度还能跟得上CPU,比如CPU的频率在2MHz时内存的频率可以达到4MHz。而从上世纪80年代开始,CPU的速度很快就远远甩开的内存,差距逐渐达到数个数量级。
CPU与DRAM的速度差距越来越大。图片来自新泽西理工学院
这时候SRAM来救场了,它的速度仍能跟得上CPU,因此人们开始将其内置到CPU中,CPU缓存也因此诞生。最早有记录使用缓存的系统是通用电气的645和IBM360/67,它们配备了TLB转换检测缓冲区,用于加快内存寻址,而最早有记录搭载了数据缓存的系统是IBM System/360 Model 85。我们比较熟悉的摩托罗拉68k系列处理器中,发布于1984年的68020是第一款真正搭载了缓存的68k CPU,拥有256字节的指令缓存。
现在的CPU大都有一套多层缓存系统,将缓存分为L1、L2、L3等,有的还有L4。当L1发生缓存命中失败后,CPU会尝试去L2中读取,如果又失败,则继续向下一层缓存寻找。数字越小,缓存的速度越快,但成本也越高,因此容量一般更小。缓存并不是越大越好,虽然更大的缓存虽然能存储更多的数据和指令,但每一次寻址需要花费更多的周期,可能最终得不偿失。缓存的设计需要平衡时间、空间和制造成本,是CPU架构设计中的一个重要环节。
图为英特尔CPU结构示意图。图片来自AnandTech
超能网友博士 2019-08-07 14:59 | 加入黑名单
支持(6) | 反对(0) | 举报 | 回复
6#
超能网友教授 2019-08-07 08:40 | 加入黑名单
该评论年代久远,荒废失修,暂不可见。
支持(0) | 反对(0) | 举报 | 回复
5#
游客 2019-08-06 20:33
4#
我匿名了 2019-08-06 20:31
该评论年代久远,荒废失修,暂不可见。
支持(1) | 反对(0) | 举报 | 回复
3#
游客 2019-08-06 15:13
该评论年代久远,荒废失修,暂不可见。
支持(0) | 反对(0) | 举报 | 回复
2#
游客 2019-08-06 13:47
该评论年代久远,荒废失修,暂不可见。
已有2次举报支持(1) | 反对(0) | 举报 | 回复
1#