深入理解计算机系统 家庭作业6.34

第一步先求(S,E,B,m)

题目说共C=32个字节,块大小B为16个字节,那就是分为两组:0,1.然后每组存4个int 每个4字节

C=B*E*S .B=16 ,直接映射的E就是1,所以S=2

m为啥等于7? 通过写出两个数组所有的地址可以得出m=7.

得出高速缓存的参数:(S,E,B,m)=(2,1,16,7),注意图6-26每个参数的定义即可算出:

C 32
M 128
s 1
b 4
t 2

此时脑海已经有了缓存的结构了

从图6-26的定义和我们算出来的参数就得出:

题目说数组src从0开始 因为sizeof(int)==0100 所以每个元素的地址+100就是下个元素的地址啦

加到dst[0][0]你发现刚好就等于二进制1000000 也就是十进制的64.这两个数组是紧挨着的

sizeof(int)==0100 虚拟地址(二进制) CO CI CT
src[0][0] 0000000 0000 0 00
src[0][1] 0000100 0100 0 00
src[0][2] 0001000 1000 0 00
src[0][3] 0001100 1100 0 00
src[1][0] 0010000 0000 1 00
src[1][1] 0010100 0100 1 00
src[1][2] 0011000 1000 1 00
src[1][3] 0011100 1100 1 00
src[2][0] 0100000 0000 0 01
src[2][1] 0100100 0100 0 01
src[2][2] 0101000 1000 0 01
src[2][3] 0101100 1100 0 01
src[3][0] 0110000 0000 1 01
src[3][1] 0110100 0100 1 01
src[3][2] 0111000 1000 1 01
src[3][3] 0111100 1100 1 01
dst[0][0] 1000000 0000 0 10
dst[0][1] 1000100 0100 0 10
dst[0][2] 1001000 1000 0 10
dst[0][3] 1001100 1100 0 10
dst[1][0] 1010000 0000 1 10
dst[1][1] 1010100 0100 1 10
dst[1][2] 1011000 1000 1 10
dst[1][3] 1011100 1100 1 10
dst[2][0] 1100000 0000 0 11
dst[2][1] 1100100 0100 0 11
dst[2][2] 1101000 1000 0 11
dst[2][3] 1101100 1100 0 11
dst[3][0] 1110000 0000 1 11
dst[3][1] 1110100 0100 1 11
dst[3][2] 1111000 1000 1 11
dst[3][3] 1111100 1100 1 11

每次读16字节那就是读数组的一行,读到的数放在组0还是组1取决于上表中被读元素地址的CI位

i=0,j=0 => i=0,j=3
读src[0][0] 写dst[0][0]
组0: src[0][0] src[0][1] src[0][2] src[0][3] 组0: dst[0][0] dst[0][1] dst[0][2] dst[0][3]
组1: 组1:
读src[0][1] 写dst[1][0]
组0: src[0][0] src[0][1] src[0][2] src[0][3] 组0: src[0][0] src[0][1] src[0][2] src[0][3]
组1: 组1: dst[1][0] dst[1][1] dst[1][2] dst[1][3]
src[0][2] 命中 写dst[2][0]
组0: src[0][0] src[0][1] src[0][2] src[0][3] 组0: dst[2][0] dst[2][1] dst[2][2] dst[2][3]
组1: dst[1][0] dst[1][1] dst[1][2] dst[1][3] 组1: dst[1][0] dst[1][1] dst[1][2] dst[1][3]
读src[0][3] 写dst[3][0]
组0: src[0][0] src[0][1] src[0][2] src[0][3] 组0: src[0][0] src[0][1] src[0][2] src[0][3]
组1: dst[1][0] dst[1][1] dst[1][2] dst[1][3] 组1: dst[3][0] dst[3][1] dst[3][2] dst[3][3]
i=1,j=0 => i=1,j=3
读src[1][0] 写dst[0][1]
组0: 组0: dst[0][0] dst[0][1] dst[0][2] dst[0][3]
组1: src[1][0] src[1][1] src[1][2] src[1][3] 组1: src[1][0] src[1][1] src[1][2] src[1][3]
src[1][1] 命中 写dst[1][1]
组0: dst[0][0] dst[0][1] dst[0][2] dst[0][3] 组0: dst[0][0] dst[0][1] dst[0][2] dst[0][3]
组1: src[1][0] src[1][1] src[1][2] src[1][3] 组1: dst[1][0] dst[1][1] dst[1][2] dst[1][3]
读src[1][2] 写dst[2][1]
组0: dst[0][0] dst[0][1] dst[0][2] dst[0][3] 组0: dst[2][0] dst[2][1] dst[2][2] dst[2][3]
组1: src[1][0] src[1][1] src[1][2] src[1][3] 组1: src[1][0] src[1][1] src[1][2] src[1][3]
src[1][3] 命中 写dst[3][1]
组0: dst[2][0] dst[2][1] dst[2][2] dst[2][3] 组0: dst[2][0] dst[2][1] dst[2][2] dst[2][3]
组1: src[1][0] src[1][1] src[1][2] src[1][3] 组1: dst[3][0] dst[3][1] dst[3][2] dst[3][3]
i=2,j=0 => i=2,j=3
读src[2][0] 写dst[0][2]
组0: src[2][0] src[2][1] src[2][2] src[2][3] 组0: dst[0][0] dst[0][1] dst[0][2] dst[0][3]
组1: dst[3][0] dst[3][1] dst[3][2] dst[3][3] 组1: dst[3][0] dst[3][1] dst[3][2] dst[3][3]
读src[2][1] 写dst[1][2]
组0: src[2][0] src[2][1] src[2][2] src[2][3] 组0: src[2][0] src[2][1] src[2][2] src[2][3]
组1: dst[3][0] dst[3][1] dst[3][2] dst[3][3] 组1: dst[1][0] dst[1][1] dst[1][2] dst[1][3]
src[2][2] 命中 读dst[2][2]
组0: src[2][0] src[2][1] src[2][2] src[2][3] 组0: dst[2][0] dst[2][1] dst[2][2] dst[2][3]
组1: dst[1][0] dst[1][1] dst[1][2] dst[1][3] 组1: dst[1][0] dst[1][1] dst[1][2] dst[1][3]
读src[2][3] 读dst[3][2]
组0: src[2][0] src[2][1] src[2][2] src[2][3] 组0: src[2][0] src[2][1] src[2][2] src[2][3]
组1: dst[1][0] dst[1][1] dst[1][2] dst[1][3] 组1: dst[3][0] dst[3][1] dst[3][2] dst[3][3]
i=3,j=0 => i=3,j=3
读src[3][0] 读dst[0][3]
组0: src[2][0] src[2][1] src[2][2] src[2][3] 组0: src[0][0] src[0][1] src[0][2] src[0][3]
组1: src[3][0] src[3][1] src[3][2] src[3][3] 组1: src[3][0] src[3][1] src[3][2] src[3][3]
src[3][1] 命中 读dst[1][3]
组0: src[0][0] src[0][1] src[0][2] src[0][3] 组0: src[0][0] src[0][1] src[0][2] src[0][3]
组1: src[3][0] src[3][1] src[3][2] src[3][3] 组1: dst[1][0] dst[1][1] dst[1][2] dst[1][3]
读src[3][2] 读dst[2][3]
组0: src[0][0] src[0][1] src[0][2] src[0][3] 组0: dst[2][0] dst[2][1] dst[2][2] dst[2][3]
组1: src[3][0] src[3][1] src[3][2] src[3][3] 组1: src[3][0] src[3][1] src[3][2] src[3][3]
src[3][3] 命中 读dst[3][3]
组0: dst[2][0] dst[2][1] dst[2][2] dst[2][3] 组0: dst[2][0] dst[2][1] dst[2][2] dst[2][3]
组1: src[3][0] src[3][1] src[3][2] src[3][3] 组1: dst[3][0] dst[3][1] dst[3][2] dst[3][3]

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-15 11:12:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-15 11:12:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-15 11:12:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-15 11:12:03       20 阅读

热门阅读

  1. 前端开发之HTTP3

    2024-06-15 11:12:03       7 阅读
  2. 网络安全攻防演练:提升应急响应能力

    2024-06-15 11:12:03       7 阅读
  3. linux yum 安装mysql

    2024-06-15 11:12:03       7 阅读
  4. python-pandas获取excel表中每个sheet的名称

    2024-06-15 11:12:03       7 阅读
  5. Spring (59)如何在Spring中实现异步处理

    2024-06-15 11:12:03       8 阅读
  6. bigtop-3.4.0-SNAPSHOT ubuntu22.04打包

    2024-06-15 11:12:03       5 阅读