某计算机的主存地址空间为256MB,按字节编址,指令Cache分离均有8个Cache行,每个Cache行的大小为64B,数据Cache:采用直接映射方式,现有两个功能相同的程序A和B,其伪代码如下页所示:
假定int类型数据用32位补码表示,程序编译时i,j,sum均分配在寄存器中,数据a按行优先方式存放,其地址为320(十进制数),请回答下列问题,要求说明理由或给出计算过程。
要组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache行号分别是多少(Cache行号从0开始)
参考答案:主存地址与cache的地址格式如下图所示:
a[i][j]占32位,共四个字节;a[0][0]的开始地址为:320;
a[0][31]与a[0][0]相距31×4个地址单位,即320+31×4=444;
444换成二进制:110111100;
a[1][1]与a[0][0]相距257×4个地址单位,即320+257×4=1348;
1348换成二进制:10101000100;