6.30
两分题:
20135327 郭皓 :2.5
20135329 李海空:1.5
A:
由题意知 b=2 s=2 故 两个低位是块偏移,然后是两位的组索引,剩下的位做标记:
B:
1.对于地址0x409,块偏移(CO):0x1 组引索(CI):0x2 高速缓存标记(CT):0x40 可见该标记的有效位为0,故不命中。
2.对于地址0x40A,块偏移(CO):0x2 组引索(CI):0x2 高速缓存标记(CT):0x40 可见该标记的有效位为0,故不命中。
3.对于地址0x833,块偏移(CO):0x3 组引索(CI):0x0 高速缓存标记(CT):0x83 可见该标记的有效位为1,高速缓存的标记位与地址中的标记位匹配,故命中 读出的值为0xD0。
6.37
两分题:
20135327 郭皓 :2.5
20135329 李海空:1.5
A
不命中率是100%,直接映射是每组只有一个高速缓存行,块大小为32字节,表示可以存储8个int数值。 数组是按照行优先存储的,计算数组一行的大小为256*4=1024,所以高速缓存只够存数组的一行。 所以x[0]和x[1]的每一个元素对应的高速缓存是同一个块。 因此,每次请求都在加载,驱逐,替换。不命中率为100%。
B
不命中率是1/8 ,只有加载新行时发生不命中,缓存足够大,可以存储整个数组 因此只有冷不命中,而块大小为32字节,表示可以存储8个int数值 所以每次都会加载x[0][i]~x[0][i+7]共8个数值到缓存组中,这里就只有x[0][i]是不命中的 所以不命中率为1/8。
C
不命中率为1/8 ,高速缓存只有1024字节,不够存储数组,数组的第一行和第二行分别加载到缓存同一组的不同行,不会冲突,所以最后还是相当于只有冷不命中,相当于每8个数据中只有一个是不命中的 所以不命中率为1/8 。
D
不能了,块大小不变,因为冷不命中的概率不可能被减小。
E
能,因为块的大小增加,冷不命中的频率就降低。