文章
14
粉丝
0
获赞
0
访问
347
1.主存大小:256MB,故物理地址28位,cache块大小64B,故块内偏移6位,8个cache行,直接映射3位
cache标志位:28-6-3=19位,共8行需要19*8=152位,总容量:总标志位+总行大小=152+4096=4248位
2.a[0][31]=320+31*4=444,( 444 / 64 ) % 8 = 6,Cache行号为6
a[1][1]=320+(31+1)*256=320+8192=8512,( 8512 / 64 ) % 8 = 5,Cache行号为5
3.程序A更符合局部性原理,执行时间更短
程序A命中率:15/16
程序B命中率:0
评分及理由
(1)得分及理由(满分3分)
学生答案:主存地址28位、块内偏移6位、行索引3位的分析正确。但计算Cache总容量时,将总容量理解为“位(bit)”而非题目通常要求的“字节(Byte)”,且计算方式有误。标准答案的计算方法是:每行容量 = 数据(64B) + 标记(19位+1有效位=20位,即2.5B) = 66.5B,总容量 = 8 × 66.5B = 532B。学生用“152位+4096位=4248位”来计算,思路(标记位数+数据位数)基本正确,但未考虑有效位(扣1分),且最终结果单位错误且数值与标准答案不符(扣1分)。鉴于其核心思路(计算标记位数)正确,但存在计算和单位错误,给1分。
(2)得分及理由(满分4分)
学生答案:对于a[0][31]的计算“(444 / 64) % 8 = 6”完全正确。对于a[1][1],其计算“320+(31+1)*256”存在逻辑错误:a[1][1]的地址应为“首地址 + (行号×每行元素数 + 列号)×元素大小”,即320 + (1×256 + 1)×4 = 320 + 1028 = 1348。学生错误地使用了“31+1”这个不相关的数字,导致地址计算错误,进而行号计算虽然过程“8512/64%8=5”在数学上成立,但基于错误的前提,不能得分。因此,第一问正确得2分,第二问错误得0分,本小题总计得2分。
(3)得分及理由(满分5分)
学生答案:正确给出了程序A的命中率15/16和程序B的命中率0,并正确判断程序A执行时间更短。但缺少对命中率计算过程的详细说明(如每个Cache块首次访问不...
登录后发布评论
暂无评论,来抢沙发