📜  门|门CS 2008 |第 71 题

📅  最后修改于: 2021-09-26 04:02:58             🧑  作者: Mango

考虑一台具有大小为 64 KB 和块大小为 16 字节的 2 路组关联数据缓存的机器。缓存使用 32 位虚拟地址进行管理,页面大小为 4 KB。要在这台机器上运行的程序如下开始:

double ARR[1024][1024];
int i, j;
  
// Initialize array ARR to 0.0
for(i = 0; i < 1024; i++)
    for(j = 0; j < 1024; j++)
        ARR[i][j] = 0.0;

double 的大小为 8 字节。数组 ARR 位于内存中,从虚拟页 0xFF000 的开头开始,并按行主顺序存储。缓存最初是空的,不进行预取。程序所做的唯一数据存储器引用是对数组 ARR 的引用。

缓存目录中标签的总大小为
(A) 32 KB
(B) 34 KB
(C) 64 KB
(D) 68 Kbits答案: (D)
说明:虚拟地址 = 32 位
缓存地址的形式为:TAG |设置 |堵塞
对于 16 字节的 BLOCK,我们需要 4 位。
总集数(每集包含 2 个区块)= 64 KB / (2 * 16) B = 2 11
因此,SET 位数 = 11
标记位数 = 32 – (11 + 4) = 17因此,缓存地址 = 17 | 11 | 4(标记 | 设置 | 块)
标签内存大小 = 标签位数 * 块总数
= 17 * 2 * 2 11 (总块数 = 2 * 总集数)
= 68 KB因此,D 是正确的选择。
这个问题的测验