Linux内核中的CPU缓存机理及三级缓存结构

需积分: 0 1 下载量 140 浏览量 更新于2024-08-03 收藏 589KB PDF 举报
"浅谈Linux内核之CPU缓存" CPU缓存是位于CPU与内存之间的临时数据交换器,它的容量比内存小的多,但是交换速度却比内存要快得多。CPU缓存一般直接跟CPU芯片集成或位于主板总线互连的独立芯片上。为了简化与内存之间的通信,高速缓存控制器是针对数据块,而不是字节进行操作的。 在了解CPU缓存之前,我们需要了解CPU和内存之间的关系。CPU是计算机的大脑,它负责执行程序的指令,而内存负责存数据,包括程序自身的数据。在很多年前,CPU的频率与内存总线的频率在同一层面上。内存的访问速度仅比寄存器慢一些。但是,这一局面在上世纪90年代被打破了。CPU的频率大大提升,但内存总线的频率与内存芯片的性能却没有得到成比例的提升。并不是因为造不出更快的内存,只是因为太贵了。内存如果要达到目前CPU那样的速度,那么它的造价恐怕要贵上好几个数量级。 因此,CPU的运算速度要比内存读写速度快很多,这样会使CPU花费很长的时间等待数据的到来或把数据写入到内存中。为了解决CPU运算速度与内存读写速度不匹配的矛盾,就出现了CPU缓存。 CPU缓存的概念可以分为三级缓存:L1、L2、L3。L1缓存是最接近CPU的,它容量最小(例如:32K),速度最快,每个核上都有一个L1缓存,L1缓存每个核上其实有两个L1缓存,一个用于存数据的L1dCache(DataCache),一个用于存指令的L1iCache(InstructionCache)。L2缓存更大一些(例如:256K),速度要慢一些,一般情况下每个核上都有一个独立的L2缓存。L3缓存是所有核共享的,它的容量最大(例如: several MB),速度最慢。 CPU缓存的意义在于满足以下两种局部性原理:时间局部性(TemporalLocality)和空间局部性(SpatialLocality)。时间局部性是指如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。空间局部性是指如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。 CPU缓存是Linux内核中非常重要的一部分,它可以大大提高CPU的运算速度和响应时间。