2010年Cache大题

知识回顾

(1)指令Cache和数据Cache分离后的数据Cache=标记阵列+数据(而不是只有数据);

(2)

题目】某计算机的主存地址空间大小为256B,按字节编址。指令Cahce和数据Cache分离,均有8个Cache行,每个Cache行大小为64B,数据Cache采用直接映射方式。现有2个功能相同的程序A和B,伪代码如下:

假定int类型数据用32位补码表示,程序编译时,i、j和sum均分配在寄存器中,数组a按行优先存放,其首地址为320(十进制数)。

(1)不用考虑用于Cache一致性维护和替换算法的控制位,数据Cache的总容量是多少?

【解析】每个Cache行对应一个标记项

有效位 脏位 替换控制位 标记项

不考虑用于Cache一致性维护和替换算法的控制位,地址总长度为28位(2^28=256M),块内地址6位(2^6=64B),Cache块号3位(8=2^3),因此Tag的位数为28-6-3=19位,另加一个有效位。

数据Cache的总容量为8×(64+ 20/8)=532B。数据Cache行的结构如下:

(2)a[0][31]和a[1][1]各自所在的主存块对应的Cache行号?(Cache行号从0开始)

【解析】数组按行优先存放,首地址为320,数组元素占4B。a[0][31]所在的主存块

数组a在主存的存放位置及其与Cache之间的映射关系如下:

【法一】

数组按行优先存放,首地址为320,数组元素占4B。a[0][31]所在的主存块对应的Cache行号为

[ (320+(0×256+31)×4)div 2^6 ]mod 2^3=6

a[1][1]所在的主存块对应的Cache行号为

[ (320+(1×256+1)×4)div 2^6 ]mod 2^3=5

【法二】

由(1)知主存和Cache的地址格式如下图:

数组按行优先方式存放,首地址为320,数组元素占4B。a[0][31]的地址为320+31×4=1 10111 1100,因此其对应的Cache行号为110=6;a[1][1]的地址为320+256×4+1×4=1348=101 0100 0111,因此其对应的Cache行号为101=5.

(3)程序A和B的数据访问命中率?哪个程序的执行时间更短?

【解析】

猜你喜欢

转载自blog.csdn.net/qq_35812205/article/details/107786209