系统的三级存储结构

缓存Cache-主存储器-辅存(磁盘存储器)
image-1655802335804

映像规则的三种分类

全相联映像

全相连:主存中的任意一块可以被放置到cache中任意一个位置。
image-1655885253586

直接联映像

主存中每块只能被放置到cache中唯一的一个位置。
主存i块可以放到cache中的j块。
j=i mod(M) M:cache的块数
image-1655885442474

组相连映像

是前两种的结合,把cache分组,每一个组对主存都是直接相连,对组内是全相连。
主存第i块映像到第k组。
k=i mod (G) G:cache组数
image-1655887250919

n路组相连

每组中有n个块(n=M/G)。n为相连度。相连度越高空间利用率越高,块冲突越低,不命中率也越低。

n G
全相连 M 1
直接映像 1 M
组相连 1<n<M 1<G<M

通常n<=4

替换算法

随机法

先进先出FIFO

最近最少使用LRU

使用堆栈(可以被随机访问),被访问后重新入栈,提升优先级。当需要替换时,选栈低元素。

写策略

写直达法

不只写入cache也写入主存。缺块不按写分配。

写回法

值写入cache,cache要被替换时才写入主存。(cache需要增添一个修改位),缺块按写分配。

优点 缺点
写直达法 一致性好 写停顿
写回法 速度快,存储器使用带宽低 比写直达法难实现

cache性能分析

平均访存时间

平均访存时间=命中时间+不命中率x不命中开销

降低cache不命中率

cache不命中分类

  1. 强制性不命中
    第一次访问,该块不在cache中。
  2. 容量不命中
    cache容量不足以放入整个块。但是又被重新访问。
  3. 冲突不命中
    组相连或者直接映像cache中,太多块映像到同一个块中,但对应的块都要访问,产生冲突。

增大cache大小,降低容量不命中概率。
相联度增加,降低冲突不命中。

降低cache不命中开销

两级cache加速

L1块,L2容量大
平均访存时间=命中时间L1+不命中率L1x不命中开销L1
不命中开销L1=命中时间L2+不命中率L2x不命中开销L2

局部不命中与全局不命中

局部不命中率=该级的cache不命中次数/到达该级的访问次数。
全局不命中率=该级cache的不命中次数/CPU发出访存的总次数

Q.E.D.


寄蜉蝣于天地,渺沧海之一粟