确定缓存上的未命中和命中

时间:2015-12-14 15:34:54

标签: c caching architecture

考虑以下矩阵转置例程:

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
  • src数组从地址0开始,dst数组从地址64
  • 开始
  • 有一个L!数据高速缓存,直接映射,直写,写分配,块大小为16字节
  • 缓存的总大小为32个数据字节,缓存最初为空。
  • 访问src和dst数组是读写错误的唯一来源。

我的任务是确定每个阵列的每次访问是否为缓存命中或未命中

我得到了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|
______________________________________

这些是正确的吗?与其他学生一起询问,每个人似乎都得到了不同的答案。

0 个答案:

没有答案