1. 引言

最近看完了深入理解计算机系统,准备写一些学习的总结,先从存储器中的高速缓存写起,因为博主在工作中总是碰到cache相关的问题,因此总结了一下深入理解计算机系统中关于cache原理这一部分。

2. 存储器层次结构

介绍高速缓存(cache)的工作原理之前,我们需要先了解一下计算机的存储器层次结构,其层次结构如下图(摘自深入理解计算机系统存储器层次结构)所示:

cache工作原理介绍

存储器层次结构的中心思想:对于每个k,第k层的更快更小的存储设备是作为第k+1层更大更慢的存储设备的缓存(cache)。

 

操作系统将存储器中存储的连续数据抽象成连续的数据块,每个数据块具有唯一性。数据在第k层和k+1层存储设备之间以数据快为传送单元进行数据的来回拷贝。第k层存储的数据块是第k+1层存储的数据块的一个子集。如下图所示:

cache工作原理介绍

缓存命中:

当程序需要第k+1层的数据对象d时, cpu会首先访问第k层存储设备,查找其中是否有某个数据块包含该对象d, 如果包含则 缓存命中。否则便叫做缓存不命中。

缓存不命中的种类:

缓存不命中包括冷不命中和冲突不命中。

冷不命中:一个空的缓存叫做冷缓存,此类不命中叫做冷不命中。

冲突不命中:硬件缓存通常会采取某种放置策略(映射规则)将第k+1层中数据块映射到第k层某个数据块,这种放置策略会导致冲突不命中。

对于冲突不命中用下面个例子解释:

k+1层中的数据块0,2,4----》k层的0, k+1层的数据块1,3,5---》k层的1, 当计算机系统需要取第k+1层的数据块2中的数据时, 发现对于k层数据块0放置的是k+1层的数据块0, 此时便导致缓存不命中,便是冲突不命中。

3. 高速cache的工作原理

相关文章: