文章
165
粉丝
0
获赞
10
访问
15.6k

评分及理由
(1)得分及理由(满分3分)
学生答案中计算Tag位数为19位,并考虑了有效位1位,这部分正确。但在计算Cache总容量时,公式写为8×(19+1+64×8)=4256b,其中64×8表示64字节×8位/字节=512位,但实际应为64B=512b,加上Tag和有效位共20位(即19+1),所以一行总位数应为(64×8 + 20) = 532位,再乘以8行得到4256位,换算成字节是4256/8=532B。学生最终写的是4256b(位),但标准答案要求以字节为单位,应写为532B。不过学生计算过程实质正确,只是单位未转换,且最终数值与标准答案一致(4256位=532字节),因此不扣分。得3分。
(2)得分及理由(满分4分)
对于a[0][31]:学生计算(320 + 31×32/8)/64%8,其中32/8=4正确(int为32位=4字节),31×4=124,320+124=444,444/64=6.9375,取整为6,再%8得6,与标准答案一致。对于a[1][1]:计算(320 + 256×32/8 + 32/8)/64%8,256×4=1024,1×4=4,320+1024+4=1348,1348/64=21.0625,取整21,21%8=5,与标准答案一致。虽然表达式中用了“%”可能表示取模,但计算过程和结果正确。得4分。
(3)得分及理由(满分5分)
程序A的命中率计算:学生写“32/8/64=1/16”,其中32/8=4表示一个int占4字节,但4/64=1/16表示每个Cache行64字节中,第一个访问的4字节不命中,其余15次命中,因此命中率1-1/16=15/16=93.75%,与标准答案一致。程序B的命中率:学生写“256×32/8B/64B=16>8”,其中256×4=1024字节,1024/64=16块,但数据Cache只有8行,由于直接映射,不同行的同一列元素映射到同一Cache行,每次访问都会冲突不命中,因此命中率0%,判断正确。并指出A执行时间更短,理由正确。得5分。
题目总分:3+4+5=12分
登录后发布评论
暂无评论,来抢沙发