1. 题目描述
二、答案
- 答案B容易分析
答案A中src最后一个为什么是hit?
- 分析:Cache为直接映射一组一行 块大小8B
映射两个int
也就是一个缓存行映射一行数组
- src 始终按行访问 dst始终按列访问
Cache内容变化过程如下
共8次内存引用
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++
dst[j][i] = src[i][j];
// src行访问顺序 src[0][0] src[0][1] src[1][0] src[1][1]
// dst列访问顺序 dst[0][0] dst[1][0] dst[1][0] dst[1][1]
(1)访问src[0][0] src[0][0]映射到块0 初始Cache为空 不命中 同时加载sr[0][1]到Cache块0
Cache
0 | src[0][0] | src[0][1] |
1 | | |
(2)访问dst[0][0] dst[0][0]映射到块0 不命中 同时加载dst[0][1]到Cache块0
Cache
0 | dst[0][0] | dst[0][1] |
1 | | |
(3)访问src[0][1] src[0][1]映射到块0 不命中 同时加载sr[0][0]到Cache块0
Cache
0 | src[0][0] | src[0][1] |
1 | | |
(4)访问dst[1][0] dst[1][0]映射到块1 不命中 同时加载dst[1][1]到Cache块1
Cache
0 | src[0][0] | src[0][1] |
1 | dst[1][0] | dst[1][1] |
(5)访问src[1][0] src[1][0]映射到块1 不命中 同时加载sr[1][1]到Cache块1
Cache
0 | src[0][0] | src[0][1] |
1 | src[1][0] | src[1][1] |
(6)访问dst[0][1] dst[0][1]映射到块0 不命中 同时加载dst[0][0]到Cache块0
Cache
0 | dst[0][0] | dst[0][1] |
1 | src[1][0] | src[1][1] |
(7)访问src[1][1] 命中
Cache
0 | dst[0][0] | dst[0][1] |
1 | src[1][0] | src[1][1] |
(8)访问dst[1][1] dst[1][1]映射到块1 不命中 同时加载dst[1][0]到Cache块1
Cache
0 | dst[0][0] | dst[0][1] |
1 | dst[1][0] | dst[1][1] |
// 结论
1. dst 全部不命中
2. src 只有最后一个命中
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38351.html