文章
7
粉丝
0
获赞
0
访问
264
(1)数组中的每个元素不会被再次访问,时间局部性不好。数组每个元素的临近元素会在下次被访问到,空间局部性好。
(2)数据区32B,每块16B,说明一共有2块,块号占4位,行号占1位。当程序第一次进入循环时,x[0]所在地址为00000040H,这个地址刚好可以整除16,所以它位于一块的最开始位置,x[0]-x[3]进入第0块cache,y[0]所在地址为00000040H+32=00000060H,这个地址刚好可以整除16,y[0]-y[3]同样进入第0块cache。就这样两个数组的内容相互换来换去,命中率为0%
(3)块大小改为8B,块号占3位,一共有4块,每2块分为一组,所以一共有2组,组号占1位。当程序第一次进入循环时,x[0]所在地址为00000040H,x[0]-x[1]进入第0组,接下来访问y数组,y[0]-y[1]也进入第0组。第二次进入循环时,x[1]和y[1]都可以在cache中被找到,以此类推,命中率为50%
(4)已知每个float型占4B,那么12个float型就占48B,于是数组y的起始位置改为00000070H,数组y的结束位置在0000008CH,这些数据依旧被束缚在第0块的位置,所以命中率不变,还是0%(真的是这样吗,总觉得哪里算错了,不管了)
评分及理由
(1)得分及理由(满分2分)
得分:2分
理由:学生正确指出了时间局部性较差(每个元素只被访问一次)和空间局部性较好(临近元素被访问),与标准答案一致。
(2)得分及理由(满分3分)
得分:3分
理由:学生正确分析了Cache的映射方式、块大小和行号的计算,并准确说明了x和y数组的Cache冲突导致命中率为0%,与标准答案一致。
(3)得分及理由(满分3分)
得分:3分
理由:学生正确分析了2-路组相联映射方式、块大小和组号的计算,并准确说明了命中率为50%,与标准答案一致。
(4)得分及理由(满分3分)
得分:0分
理由:学生的分析完全错误。数组x的大小为12个float(48B),占用3个Cache块(16B/块),数组y紧随其后,占用2个Cache块。学生错误地认为数据仍被束缚在第0块,导致命中率计算错误。标准答案为75%,而学生回答为0%,且未正确分析Cache行冲突情况。
题目总分:2+3+3+0=8分
登录后发布评论
暂无评论,来抢沙发