高速缓存的行匹配与字选择

问题假设

    存储器是字节寻址的;

    存储器访问的是1字节的字;

    地址的宽度为13位;

高速缓存内容

    高速缓存是2路组相联的(E=2),块大小为4字节(B=4),有8个组

    内容如下所示:

    行0:

(表中所有的数字都是以十六进制来表示的)

组索引

标记位

有效位

字节0

字节1

字节2

字节3

0
09
1
86
30
3F
10
1
45
1
60
4F
E0
23
2
EB
0
-
-
-
-
3
06
0
-
-
-
-
4
C7
1
06
78
07
C5
5
71
1
0B
DE
18
4B
6
91
1
A0
B7
26
2D
7
46
0
-
-
-
-

    行1的高速缓存内容我就不列举了,类似上表的形式。

地址内容

    现在假设一个程序运行在上述的机器上面,并且它引用地址0x0E34处的1个字节的字。则该地址格式应该如下表所示:

0           1            1                1                0              0              0                1
1     0      1
0     0

其中最左边一栏是高速缓存标记位(CT),中间一栏是高速缓存组索引(CI),最右边一栏是高速缓存块偏移(CO),它们的值分别为0x71,0x5,0x0。

是否命中

    根据表中数据可知,标记位为0x71的刚好在行0的组索引为0x5中,并且其有效位已经设置为1,因此表明标记和块中的位是有意义的。所以这次高速缓存命中了,根据块偏移为0,所以返回的高速缓存字节为0xB。

总结

    本案例帮助我加强理解了高速缓存是如何工作的,关于缓存不命中的例子这里可以介绍一个地址为0x0DD5,具体分析同上。记住一点:如果有效位没有设置或者标记不相匹配,那么我们就得到一个缓存不命中。

你可能感兴趣的:(高速缓存的行匹配与字选择)