考虑上述问题中给出的数据。以下哪个数组元素与 ARR[0][0] 具有相同的缓存索引?
(A) ARR[0][4]
(B) ARR[4][0]
(C) ARR[0][5]
(D) ARR[5][0]答案:(乙)
说明:数组中元素的总数 = 2 10 * 2 10 = 2 20
缓存中的每个块可以包含 2 个元素,因为 double 是 8 个字节,每个块的大小 = 16 个字节。
缓存中可以存在的元素总数 = 块总数 * 2 = 2 * 2 11 * 2 = 2 13
为了具有相同的缓存索引,元素的 11 个设置位应该与 Arr[0][0] 相同,换句话说,元素应该映射到与 Arr[0][0] 相同的地址,
的映射应该如下:
Set No ............................... Block1................................ Block2
00000000000.....................Arr[0][0] Arr[0][1]..................Arr[4][0] Arr[4][1]
00000000001.....................Arr[0][2] Arr[0][3]
.
.
.
01111111111....................Arr[2][1022] Arr[2][1023]
10000000000....................Arr[3][0] Arr[3][1]
.
.
.
11111111111.....................Arr[3][1022] Arr[3][1023]
因此,Arr[0][0] 的索引与 Arr[4][0] 相同。因此,B 是正确的选择。
这个问题的测验