typedef int array[2][2];
void transpose(array dst, array src) {
int i, j;
for (j = 0; j < 2; j++) {
for (i = 0; i < 2; i++) {
dst[i][j] = src[j][i];
}
}
}
Run Code Online (Sandbox Code Playgroud)
src数组从地址0开始,dst数组从地址0x10开始.
L1数据缓存,直接映射,写分配,8字节块大小.
缓存总大小为16个数据字节.
src和dst数组的每个条目的命中或错过是什么?
答案是:
src:
[0][0] -> miss,
[0][1] -> miss,
[1][0] -> miss,
[1][1] -> hit
dst:
[0][0] -> miss,
[0][1] -> miss,
[1][0] -> miss,
[1][1] -> miss
Run Code Online (Sandbox Code Playgroud)
如果缓存总大小为32个数据字节,答案是:
src:
[0][0] -> miss,
[0][1] -> hit,
[1][0] -> miss,
[1][1] -> …Run Code Online (Sandbox Code Playgroud)