


第一步先求(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] |


















