某笔记本电脑的机器字为32位;内存为4GB,内存按字编址和寻址; 假设 CPU中只有一级混合 Cache(即指令和数据不加区分,存放在同一 Cache中), Cache 容量为 8MB,每行4个字, Cache采用物理地址映射, 地址映射方式为 4 路组相联; 该系统采用页式虚存,页大小为4kB;假设采用C语言编写的某32位应用程序运行过程中某时刻观察到页表的部分内容如表 1所示 (表 1中的数字除有效位,均为十进制数)。该程序中 float 类型的变量 y的虚拟地址为 0x04000800,请问该程序运行过程中变量y会被映射到 Cache 中的第几组?(所有编号均从0开始,如第0个字、第0组、第0块、第0页等) \
时间: 2024-04-08 12:35:54 浏览: 147
ReadyFor4GB突破32位Windows7/Vista内存4G限制
根据表1中的页表内容,可以确定虚拟地址 0x04000800 对应的逻辑页号为 0x04000800 >> 12 = 0x004 (十进制为 4)。
Cache 容量为 8MB,每行 4 个字,所以共有 8MB / (4 * 4B) = 512 组。由于地址映射方式为 4 路组相联,所以逻辑页页号的低 9 位表示组索引。
因此,在程序运行过程中,变量 y 的虚拟地址会被映射到 Cache 中的第 4 % 512 = 4 组。
阅读全文