登机门|登机门CS 2008 |问题71

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

null

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) 32kbits (B) 34千比特 (C) 64kbits (D) 68kbits 答复: (D) 说明: 虚拟地址=32位 缓存地址的形式为:TAG | SET | BLOCK 对于16字节的块,我们需要4位。 集合总数(每组包含2个块)=64 KB/(2*16)B=2 11 所以,设定位数=11 标签的数量–=4+32位 因此,缓存地址=17 | 11 | 4(标记|集|块) 标记内存大小=标记位数*块总数 = 17 * 2 * 2 11 (总块数=2*总套数) =68KB 因此,D是正确的选择。 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享