【正确答案】高速缓存大小为1024B,块大小为32B,那么块数为1024/32=32块。
x数组占用内存空间为4×2×256B=2048B,块数为2048/32=64块。
高速缓存无法一次性容纳下整个x数组。
数组x从存储器地址0x0开始,且采用直接映射的情况下,x数组的第i块映射到高速缓存的第i%32块,如图1所示。
[*]
图1 x数组的第i块映射到高速缓存的第i%32块
分析题目代码可知,系统依次访问x[0][0],x[1][0],x[0][1],x[1][1],…
而x[0][0],x[0][1],…,x[0][7]都在主存第0块,x[1][0],x[1][1],…,x[1][7]都在主存第32块。
所以系统等于是依次访问第0块、第32块、第0块、第32块、…
又第0块和第32块都映射到高速缓存的第0块,所以每次新访问的块将上次未命中而调入缓存的块挤出,使得所有情况都是未命中的。
其他块的情况也是一样的,所以未命中率为512/512=100%。