【星海出品】计算机科学缓存命中学习
假设某计算机的 cache 共 16 行,开始为 空,主存块大小为 1 个字,采用直接映射方式,按字编址。
CPU 执行程序时,依次访问以下地址序列:2,3,11,16,21,13,64,48,19,11,3,22,4,27,6 和 11 。
1)访问上述地址序列得到的命中率是多少?
命中率 = 1/16 = 0.0625 = 6.25%
2)若 cache 数据区容量不变,而块大小改为 4 个字, 则上述地址序列的命中情况又如何?
主存块号 = 字号 ÷ 4
这意味着每个主存块对应4个字,Cache行号通过主存块号对4取模计算。
访问地址2时,块0(包含地址0、1、2、3)被加载。后续访问地址3时,由于它在同一块内,因此命中。
【索引区: 0 , 1 , 2 , 3 】
2 % 4 = 0 未命中【0 : 0,1,2,3】
> 3 % 4 = 0 命中【0:】
11 % 4 = 2 未命中【2:8,9,10,11】
16 % 4 = 4 -> 0 未命中【0:16,17,18,19】
21 % 4 = 5 ->1 未命中【1:20,21,22,23】
13 % 4 = 3 -> 未命中【3:12,13,14,15】
64 % 4 = 16 未命中【0:64,65,66,67】
48 % 4 = 12 未命中【0: 48, 49,50, 51】
19 % 4 = 4 未命中 【0:16,17,18,19】
> 11 % 4 = 2 命中【2:】