考虑以下矩阵转置例程:
typedef int array[4][4];
void transpose(array dst, array src){
int i,j;
for(i=0;i<4;i++){
for (j=0;j<4;j++){
dst[j][i] = src[i][j];
}
}
}
假设此代码在具有以下属性的计算机上运行
sizeof(int)
= 4 我的任务是确定每个阵列的每次访问是否为缓存命中或未命中
我得到了dst
_____________________________________
| Col 0 Col 1 Col 2 Col 3|
|Row0 m m m m|
|Row1 m m m m|
|Row2 m m m m|
|Row3 m m m m|
______________________________________
和src数组
_____________________________________
| Col 0 Col 1 Col 2 Col 3|
|Row0 m h h h|
|Row1 m h h h|
|Row2 m h h h|
|Row3 m h h h|
______________________________________
这些是正确的吗?与其他学生一起询问,每个人似乎都得到了不同的答案。