(一)存储器层次结构

在这里插入图片描述
存储器的中心思想:K层的更快、更小的存储设备是K+1层更慢、更大的存储设备的高速缓存。
在这里插入图片描述

(二)缓存

(1)两个概念

  • 高速缓存:第k层是k+1层的高速缓存
  • 缓存:是一个过程,使用高速缓存的过程。

(2)缓存原理

在这里插入图片描述

(三)缓存命中

当程序需要某个数据块data时,先在本层K层进行查找,若在K层找到data数据块,就说明缓存命中。

(四)缓存不命中

当程序需要的数据块data在k层未找到,即缓存不命中。当发生缓存不命中时,第K层的缓存从K+1层取出包含data的数据块,若K层缓存已满,则将会覆盖一个现存的块(缓存策略:决定覆盖哪个块)。

(五)缓存策略

缓存策略:决定覆盖哪个块。

(1)调用缓存策略条件

  • (1)发生缓存不命中
  • (2)该层缓存已满

覆盖一个现存块的过程叫做替换或者驱逐这个块(牺牲块)。

(2)缓存策略

  • 随机替换策略:随机选择一个块进行替换
  • LRU:一个具有最近最少使用的块进行替换

    (六)缓存不命中的类型

    (1)冷缓存

    该层存储设备上的数据块为空
    在这里插入图片描述

(2)冲突不命中

这种缓存不命中的结果是使用了取模的放置策略导致的。

取模的放置策略:
在这里插入图片描述
解释:当K层要使用0时,K层的发生缓存不命中,此时要去k+1层取0数据块,根据取模放置策略,将0数据块覆盖在8数据块上。若是在K层访问8号数据块,此时发生缓存不命中,此时去k+1层上去取8数据块,根据取模放置策略,将8数据块覆盖0数据块。如此的反复下去,每次缓存都会发生不命中。这就是冲突不命中类型。

(3)容量不命中

例如:一个循环来访问同一个数组中的所有元素。这个块的集合称为工作集。当工作集超过缓存大小时,缓存会发生容量不命中。

(七)缓存管理

(软件和硬件)将各个缓存设备划分成块、在不同层次间传送块、判断是否缓存命中并处理他们。

在这里插入图片描述