cachelab3

缓存实验cachelab3

1.M64N64、M61N67转置(s5E1b5):

矩阵64x64规模,8分块处理结果和没有分块的差别不大,没有什么改进效果。

1

可以知道一共32组,每组一行,每行32个字节,可以存储8个整数。因此矩阵中一行每8个数占一个组,每4行填满整个cache。

注意到如右上图,当矩阵规模较小的时候,分块8x8和4x4都不会出现同一个块里面有映射到相同组的方格。

23

按8x8分块,因此每块包含竖直方向的两个格子,而且这两个格子对应数据映射到cache中同一个组。

现在分析一下同一个块中有映射到相同组的数带来性能的影响:

32x32矩阵8x8分块使得不处于对角线的矩阵上的块和转置后对应的块映射到不同的组。减少冲突次数,以减少不命中率。

1

2 
12.5%。①当一个块中出现映射到同一组的数,分析一个块,对每一个位置进行编号,相同编号的格子映射到同一组。

②假设该块不在对角线上,因此它和它在转置矩阵中的分块不会冲突。

③在原矩阵中的块是按行访问的,因此它只有每行第一个元素是不命中或者驱逐。但是看转置后矩阵中的块,是按列访问的,每一列的后4个方格和前4个方格映射到同一组,所以驱逐不命中,访问下一列的时候因为和前一列的后4个方格在映射到相同的组冲突,也发生驱逐冲突,因此在转置后的矩阵中不命中的概率是100%,原矩阵中

优化:

将8x8的矩阵再次细分成为4x4的4块。

3

 

M61N67分块测试:

这个规模的矩阵的不同之处是,8位数据一组的情况下不满足分块后一行就是一组的情况,会有分块之间的交叠。

4

nxn

3x3

4x4

5x5

6x6

7x7

8x8

9x9

Misses

2675

2545

2933

2253

2263

2183

2090

nxn

10x10

11x11

12x12

13x13

14x14

15x15

16x16

Misses

2076

2089

2057

2048

1996

2021

1992

nxn

17x17

18x18

19x19

20x20

1x1

 

misses

1950

1961

1979

2002

2181

 

 

可以看出划分的块过大或过小都不能有效提升性能,这里最优的划分是17x17的块。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hnu哈哈

请接受直女的么么哒????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值