某计算机的主存地址空间大小为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的命中率。