首页 > 编程笔记 > 操作系统笔记 阅读:351

CPU缓存(Cache)到底是什么?

容量小而速度快的缓存在生活中也有实例:你的书桌上只摆着近期要看的少量书籍,而大量的书籍只会收在书柜里。书桌就是一种缓存。

缓存(Cache)是 CPU 和内存之间的一个数据存储区域,用来提高 CPU 访问内存的速度。

现代计算机中的 CPU 运行速度远远超过内存访问速度,换句话说,内存访问速度拖慢了 CPU 的运行速度。

例如,一个典型的 64 位桌面 CPU,工作主频是 2GHz,再加上多发射技术可以在一个时钟节拍内并行处理多条指令,这样每秒执行的指令数量就达到了 100 亿条,即每秒可以最多执行1010 次 64 位整数运算。而内存的速度提升相对比较缓慢,现在台式计算机、服务器上使用的最先进的 DDR4 内存规范,工作在 2.4GHz 时的理论峰值传输速度为 19200MB/s,相当于每秒只能给 CPU 传送 2.4×109 个 64 位整数,比 CPU 的速度慢了一个数量级。

当内存数据的供应速度跟不上 CPU 的计算速度时,CPU 只能等待内存,从而白白浪费计算时间。

缓存是使用比内存速度更快的半导体工艺制造的一块存储区域,CPU 访问缓存的速度要远远快于内存。由于制造缓存的成本比内存高,因此缓存不可能做得太大,常见计算机的内存容量在吉字节(GB)级别,而缓存容量一般不超过几十兆字节(MB)。

缓存中保存的数据是内存的一个“局部备份”。CPU 访问过的内存单元的数据都在缓存中保存起来。这样,当 CPU 再次访问相同地址的内存单元时,只需要从缓存中快速读取出数据即可,速度比访问内存快几十倍,甚至上百倍。

缓存的设计利用了计算机中的一个事实规律——“数据局部性”,即 CPU 访问的数据往往只占整个内存中非常小的一个比例,但是 CPU 会多次重复使用这些数据,这样的数据也叫作“热点数据”。缓存就是以非常小的容量保存这些热点数据的,让 CPU 在执行绝大多数的访存指令时都能快速完成。

缓存作为 CPU 和内存之间的桥梁,以较小的成本巧妙解决了内存速度不匹配的问题,是计算机原理中一个闪光的思想。

缓存的常用结构

台式计算机、服务器一般最多有三级缓存,超级计算机可能有四级缓存。

目前 CPU 主要使用多级缓存的结构,将缓存分