📜  门| GATE CS 2008 |第71章

📅  最后修改于: 2021-07-02 15:49:18             🧑  作者: Mango

考虑一台机器,该机器具有2路集关联数据高速缓存,大小为64 KB,块大小为16个字节。高速缓存使用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比特
(B) 34比特
(C) 64 Kbits
(D) 68比特答案: (D)
说明:虚拟地址= 32位
缓存地址的格式为:TAG |设置|堵塞
对于16字节的块,我们需要4位。
集总数(每个集包含2个块)= 64 KB /(2 * 16)B = 2 11
因此,SET位数= 11
TAG位数= 32 –(11 + 4)= 17因此,缓存地址= 17 | 11 | 4(标记|设置|块)
标签存储器大小=标签位数*块总数
= 17 * 2 * 2 11 (块总数= 2 *集总数)
= 68 KB因此,D是正确的选择。
这个问题的测验