某计算机的主存地址空间大小为256MB,按字节编址。指令Cache和数据Cache分离,均有8个Cache行,每个Cache行大小为64B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下:
问答题
若不考虑用于Cache一致性维护和替换算法的控制位,则数据Cache的总容量为多少?
【正确答案】正确答案:每个Cache行对应一个标记项,如下图所示。

不考虑用于Cache一致性维护和替换算法的控制位。地址总长度为28位(2
28
=256M),块内地址6位(2
6
=64),Cache块号3位(2
3
=8),故Tag的位数为28-6-3=19位,还需使用一个有效位,故题中数据Cache行的结构如下图所示。

【答案解析】
问答题
数组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache行号分别是多少(Cache行号从0开始)?
【正确答案】正确答案:数组a在主存的存放位置及其与Cache之间的映射关系如下图所示。

【答案解析】
问答题
程序A和B的数据访问命中率各是多少?哪个程序的执行时间更短?
【正确答案】正确答案:数组a的大小为256×256×4B=2
18
B,占用2
18
/64=2
12
个主存块,按行优先存放,程序A逐行访问数组a,共需访问的次数为2
16
次,未命中次数为2
12
次(即每个字块的第一个数未命中),因此程序A的命中率为(2
16
-2
12
)/2
16
× 100%=93.75%。
【答案解析】解析:考查Cache的组成,主存与Cache的映射关系,Cache的命中率。