【简答题】
某计算机的主存地址空间大小为256MB,按字节编址。指令Cache和数据Cache分离,均有8个Cache行,每个Cache行大小为B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下所示:
程序A:
int a[256][2S6];
…
int sum_array 1 ( )
{
int i, j, sum = 0;
for(i = 0; i<256; i++)
for (j = 0; j<256; j++)
sum + = a[i][j];
return sum;
}
程序B:
int a[256][256];
…
int sum_array 2 ( )
{
int i, j, sum = 0;
for(j=0; j<256; j++)
for (i=0; i<256; i++)
sum + = a[i][j];
return sum;
}
假定int类型数据用32位补码表示,程序编译时,i、j、sum均分配在寄存器中,数组a按行优先方式存放,其首地址为320(十进制)。请回答下列问题,要求说明理由或给出计算过程。 数组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache行号分别是多少(Cache行号从0开始)
参考答案:
参考解析:
举一反三
【单选题】主存的容量是16MB,cache的容量是4KB,每个字块16个字,每个字16位,在直接映射下,主存的地址格式分布为主存字块标记,缓存字块地址,字块内地址三个部分,访存地址字节地址,按照顺序,每个部分各为多少?