Skip to content

Files

Latest commit

aQuaaQua
aQua
and
aQua
Aug 27, 2018
013fc3c · Aug 27, 2018

History

History
364 lines (323 loc) · 23.3 KB

6.37.md

File metadata and controls

364 lines (323 loc) · 23.3 KB

6.37

函数 N=64 N=60
sumA 25% 25%
sumB 100% 25%
sumC 50% 25%

C = 4096, B = 16, E = 1, S = 256

每组可以缓存 4 个元素。

   0    4    8    12
 0 +----+----+----+
   | 0  | 1  | 2  |
   +----+----+----+

上图的含义是,
a[0][0:4] 会被缓存到 组0
a[0][4:8] 会被缓存到 组1
a[0][8:12] 会被缓存到 组2

N = 64

   0    4    8    12   16   20   24   28   32   36   40   44   48   52   56   60   64
 0 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 0  | 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 10 | 11 | 12 | 13 | 14 | 15 |
 1 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
 2 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
 3 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
 4 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 |
 5 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 |
 6 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 96 | 97 | 98 | 99 | 100| 101| 102| 103| 104| 105| 106| 107| 108| 109| 110| 111|
 7 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 112| 113| 114| 115| 116| 117| 118| 119| 120| 121| 122| 123| 124| 125| 126| 127|
 8 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 128| 129| 130| 131| 132| 133| 134| 135| 136| 137| 138| 139| 140| 141| 142| 143|
 9 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 144| 145| 146| 147| 148| 149| 150| 151| 152| 153| 154| 155| 156| 157| 158| 159|
10 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 160| 161| 162| 163| 164| 165| 166| 167| 168| 169| 170| 171| 172| 173| 174| 175|
11 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 176| 177| 178| 179| 180| 181| 182| 183| 184| 185| 186| 187| 188| 189| 190| 191|
12 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 192| 193| 194| 195| 196| 197| 198| 199| 200| 201| 202| 203| 204| 205| 206| 207|
13 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 208| 209| 210| 211| 212| 213| 214| 215| 216| 217| 218| 219| 220| 221| 222| 223|
14 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 224| 225| 226| 227| 228| 229| 230| 231| 232| 233| 234| 235| 236| 237| 238| 239|
15 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 240| 241| 242| 243| 244| 245| 246| 247| 248| 249| 250| 251| 252| 253| 254| 255|
16 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 0  | 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 10 | 11 | 12 | 13 | 14 | 15 |
17 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
18 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
19 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
20 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 |
21 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 |
22 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 96 | 97 | 98 | 99 | 100| 101| 102| 103| 104| 105| 106| 107| 108| 109| 110| 111|
23 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 112| 113| 114| 115| 116| 117| 118| 119| 120| 121| 122| 123| 124| 125| 126| 127|
24 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 128| 129| 130| 131| 132| 133| 134| 135| 136| 137| 138| 139| 140| 141| 142| 143|
25 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 144| 145| 146| 147| 148| 149| 150| 151| 152| 153| 154| 155| 156| 157| 158| 159|
26 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 160| 161| 162| 163| 164| 165| 166| 167| 168| 169| 170| 171| 172| 173| 174| 175|
27 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 176| 177| 178| 179| 180| 181| 182| 183| 184| 185| 186| 187| 188| 189| 190| 191|
28 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 192| 193| 194| 195| 196| 197| 198| 199| 200| 201| 202| 203| 204| 205| 206| 207|
29 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 208| 209| 210| 211| 212| 213| 214| 215| 216| 217| 218| 219| 220| 221| 222| 223|
30 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 224| 225| 226| 227| 228| 229| 230| 231| 232| 233| 234| 235| 236| 237| 238| 239|
31 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 240| 241| 242| 243| 244| 245| 246| 247| 248| 249| 250| 251| 252| 253| 254| 255|
32 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 0  | 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 10 | 11 | 12 | 13 | 14 | 15 |
33 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
34 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
35 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
36 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 |
37 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 |
38 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 96 | 97 | 98 | 99 | 100| 101| 102| 103| 104| 105| 106| 107| 108| 109| 110| 111|
39 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 112| 113| 114| 115| 116| 117| 118| 119| 120| 121| 122| 123| 124| 125| 126| 127|
40 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 128| 129| 130| 131| 132| 133| 134| 135| 136| 137| 138| 139| 140| 141| 142| 143|
41 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 144| 145| 146| 147| 148| 149| 150| 151| 152| 153| 154| 155| 156| 157| 158| 159|
42 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 160| 161| 162| 163| 164| 165| 166| 167| 168| 169| 170| 171| 172| 173| 174| 175|
43 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 176| 177| 178| 179| 180| 181| 182| 183| 184| 185| 186| 187| 188| 189| 190| 191|
44 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 192| 193| 194| 195| 196| 197| 198| 199| 200| 201| 202| 203| 204| 205| 206| 207|
45 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 208| 209| 210| 211| 212| 213| 214| 215| 216| 217| 218| 219| 220| 221| 222| 223|
46 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 224| 225| 226| 227| 228| 229| 230| 231| 232| 233| 234| 235| 236| 237| 238| 239|
47 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 240| 241| 242| 243| 244| 245| 246| 247| 248| 249| 250| 251| 252| 253| 254| 255|
48 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 0  | 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 10 | 11 | 12 | 13 | 14 | 15 |
49 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
50 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
51 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
52 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 |
53 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 |
54 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 96 | 97 | 98 | 99 | 100| 101| 102| 103| 104| 105| 106| 107| 108| 109| 110| 111|
55 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 112| 113| 114| 115| 116| 117| 118| 119| 120| 121| 122| 123| 124| 125| 126| 127|
56 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 128| 129| 130| 131| 132| 133| 134| 135| 136| 137| 138| 139| 140| 141| 142| 143|
57 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 144| 145| 146| 147| 148| 149| 150| 151| 152| 153| 154| 155| 156| 157| 158| 159|
58 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 160| 161| 162| 163| 164| 165| 166| 167| 168| 169| 170| 171| 172| 173| 174| 175|
59 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 176| 177| 178| 179| 180| 181| 182| 183| 184| 185| 186| 187| 188| 189| 190| 191|
60 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 192| 193| 194| 195| 196| 197| 198| 199| 200| 201| 202| 203| 204| 205| 206| 207|
61 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 208| 209| 210| 211| 212| 213| 214| 215| 216| 217| 218| 219| 220| 221| 222| 223|
62 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 224| 225| 226| 227| 228| 229| 230| 231| 232| 233| 234| 235| 236| 237| 238| 239|
63 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 240| 241| 242| 243| 244| 245| 246| 247| 248| 249| 250| 251| 252| 253| 254| 255|
64 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   0    4    8    12   16   20   24   28   32   36   40   44   48   52   56   60   64

方框中的数字代表 a 中的元素会缓存到 组数

sumA of N = 64

sumA 是按照 从左往右,从上往下 的顺序访问,只有 j%4 = 0 会不命中。所以,不命中率是 25%。

sumB of N = 64

sumB 是按照 从上往下,从左往右 的顺序访问,

从上图中,可以看到,第一次查询 组0,是要访问 a[0][0],不命中。第二次查询 组0 ,是要访问 a[16][0],不命中。同理可得,每次都不能命中。

所以,不命中率是 100%。

sumC of N = 64

sumC 是按照 从上往下,从左往右 的顺序访问,但是,每次访问的是 2*2 的方格子。其中

在每个 `a[j][i], a[j][i+1], a[j+1][i], a[j+1][i+1]`
以及   `a[j][i+2], a[j][i+3], a[j+1][i+2], a[j+1][i+3]` 中

      i     i+1   i+2   i+3
     +-----+-----+-----+-----+
 j   |  m  |  h  |  m  |  h  |
     +-----+-----+-----+-----+
 j+1 |  m  |  h  |  m  |  h  |
     +-----+-----+-----+-----+

其中 a[j][i+2] 为 不命中 的原因是,在访问完 a[j][i] 后,接着访问 a[j+16][i], a[j+32][i],...,a[j-16][i+2] 等元素,才会访问 a[j][i+2] ,这些元素都会缓存到同一组中,组中的元素早就被替换了。

所以,不命中率是 50%。

N = 60

   0    4    8    12   16   20   24   28   32   36   40   44   48   52   56   60
 0 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 0  | 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 10 | 11 | 12 | 13 | 14 |
 1 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
 2 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
 3 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 |
 4 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 |
 5 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 |
 6 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100| 101| 102| 103| 104|
 7 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 105| 106| 107| 108| 109| 110| 111| 112| 113| 114| 115| 116| 117| 118| 119|
 8 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 120| 121| 122| 123| 124| 125| 126| 127| 128| 129| 130| 131| 132| 133| 134|
 9 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 135| 136| 137| 138| 139| 140| 141| 142| 143| 144| 145| 146| 147| 148| 149|
10 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 150| 151| 152| 153| 154| 155| 156| 157| 158| 159| 160| 161| 162| 163| 164|
11 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 165| 166| 167| 168| 169| 170| 171| 172| 173| 174| 175| 176| 177| 178| 179|
12 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 180| 181| 182| 183| 184| 185| 186| 187| 188| 189| 190| 191| 192| 193| 194|
13 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 195| 196| 197| 198| 199| 200| 201| 202| 203| 204| 205| 206| 207| 208| 209|
14 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 210| 211| 212| 213| 214| 215| 216| 217| 218| 219| 220| 221| 222| 223| 224|
15 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 225| 226| 227| 228| 229| 230| 231| 232| 233| 234| 235| 236| 237| 238| 239|
16 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 240| 241| 242| 243| 244| 245| 246| 247| 248| 249| 250| 251| 252| 253| 254|
17 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 255| 0  | 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 10 | 11 | 12 | 13 |
18 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
19 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |
20 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 |
21 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 |
22 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 |
23 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100| 101| 102| 103|
24 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 104| 105| 106| 107| 108| 109| 110| 111| 112| 113| 114| 115| 116| 117| 118|
25 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 119| 120| 121| 122| 123| 124| 125| 126| 127| 128| 129| 130| 131| 132| 133|
26 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 134| 135| 136| 137| 138| 139| 140| 141| 142| 143| 144| 145| 146| 147| 148|
27 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 149| 150| 151| 152| 153| 154| 155| 156| 157| 158| 159| 160| 161| 162| 163|
28 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 164| 165| 166| 167| 168| 169| 170| 171| 172| 173| 174| 175| 176| 177| 178|
29 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 179| 180| 181| 182| 183| 184| 185| 186| 187| 188| 189| 190| 191| 192| 193|
30 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 194| 195| 196| 197| 198| 199| 200| 201| 202| 203| 204| 205| 206| 207| 208|
31 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 209| 210| 211| 212| 213| 214| 215| 216| 217| 218| 219| 220| 221| 222| 223|
32 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 224| 225| 226| 227| 228| 229| 230| 231| 232| 233| 234| 235| 236| 237| 238|
33 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 239| 240| 241| 242| 243| 244| 245| 246| 247| 248| 249| 250| 251| 252| 253|
34 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 254| 255| 0  | 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 10 | 11 | 12 |
35 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
36 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 |
37 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 |
38 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 |
39 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 |
40 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100| 101| 102|
41 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 103| 104| 105| 106| 107| 108| 109| 110| 111| 112| 113| 114| 115| 116| 117|
42 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 118| 119| 120| 121| 122| 123| 124| 125| 126| 127| 128| 129| 130| 131| 132|
43 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 133| 134| 135| 136| 137| 138| 139| 140| 141| 142| 143| 144| 145| 146| 147|
44 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 148| 149| 150| 151| 152| 153| 154| 155| 156| 157| 158| 159| 160| 161| 162|
45 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 163| 164| 165| 166| 167| 168| 169| 170| 171| 172| 173| 174| 175| 176| 177|
46 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 178| 179| 180| 181| 182| 183| 184| 185| 186| 187| 188| 189| 190| 191| 192|
47 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 193| 194| 195| 196| 197| 198| 199| 200| 201| 202| 203| 204| 205| 206| 207|
48 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 208| 209| 210| 211| 212| 213| 214| 215| 216| 217| 218| 219| 220| 221| 222|
49 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 223| 224| 225| 226| 227| 228| 229| 230| 231| 232| 233| 234| 235| 236| 237|
50 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 238| 239| 240| 241| 242| 243| 244| 245| 246| 247| 248| 249| 250| 251| 252|
51 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 253| 254| 255| 0  | 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 10 | 11 |
52 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
53 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
54 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
55 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 |
56 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
57 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100| 101|
58 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 102| 103| 104| 105| 106| 107| 108| 109| 110| 111| 112| 113| 114| 115| 116|
59 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   | 117| 118| 119| 120| 121| 122| 123| 124| 125| 126| 127| 128| 129| 130| 131|
60 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
   0    4    8    12   16   20   24   28   32   36   40   44   48   52   56   60

方框中的数字代表 a 中的元素会缓存到的 组数。

sumA of N = 60

sumA 是按照 从左往右,从上往下 的顺序访问,只有 j%4 = 0 会不命中。所以,不命中率是 25%。

sumB of N = 60

sumB 是按照 从上往下,从左往右 的顺序访问,

从上图中,可以看到,第一次查询 组0,是要访问 a[0][0],不命中。第二次查询 组0 ,是要访问 a[0][1],命中。同理可得, a[0][2]a[0][3] 都会命中。

所以,每一组更新后,都会命中 3 次。

所以,不命中率是 25%

sumC of N = 60

sumC 是按照 从上往下,从左往右 的顺序访问,但是,每次访问的是 2*2 的方格子。其中

在每个 `a[j][i], a[j][i+1], a[j+1][i], a[j+1][i+1]`
以及   `a[j][i+2], a[j][i+3], a[j+1][i+2], a[j+1][i+3]` 中

      i     i+1   i+2   i+3
     +-----+-----+-----+-----+
 j   |  m  |  h  |  h  |  h  |
     +-----+-----+-----+-----+
 j+1 |  m  |  h  |  h  |  h  |
     +-----+-----+-----+-----+

所以,不命中率是 25%。

one more thing

上面的缓存图,是用程序输出的。可以在线访问并运行。

https://play.golang.org/p/Wcms41I_sy6