文章
161
粉丝
0
获赞
0
访问
32.7k

评分及理由
(1)得分及理由(满分3分)
学生答案正确。数组a共24行64列,每个int占4B,总大小=24×64×4B=6KB。页面大小4KB,因此需要2个页面存储。访问数组a时,按行优先访问,第一个页面(存放a[0][0]~a[15][63])会触发一次缺页,第二个页面(存放a[16][0]~a[23][63])会触发第二次缺页。页故障地址分别是起始地址0042 2000H和下一个页面起始地址0042 3000H(因为4KB=0x1000)。学生答案与此一致,得3分。
(2)得分及理由(满分2分)
学生答案基本正确。题目问“不考虑变量i和j,该程序段的数据访问是否具有时间局部性?为什么?”。标准答案指出每个元素仅被访问一次,没有重复访问,因此没有时间局部性。学生回答“只有空间局部性”,并解释“有相邻元素在不久后被访问,而没有相同的元素在不久后被访问”,虽然没有直接说“没有时间局部性”,但通过“只有空间局部性”和解释,已经正确表达了时间局部性不存在的意思。因此不扣分,得2分。
(3)得分及理由(满分4分)
学生答案部分正确,部分错误。
① 块内地址:主存块大小32B=2^5B,所以低5位(A4~A0)是块内地址。学生答“第0~4位是块内地址”,正确。
② Cache组号:数据Cache大小8KB,4路组相联,块大小32B。组数 = (8KB / 32B) / 4 = 256 / 4 = 64组。组号需要6位(2^6=64)。块内地址占5位,因此组号位于地址位A10~A5。学生答“第5~12位是组号”,这是错误的,应该是A10~A5(即第5位到第10位),学生多算了位数。
③ a[1][0]的虚拟地址:数组起始地址0042 2000H,按行优先,a[1][0]的偏移量为(1×64+0)×4 = 256 = 0x100。所以虚拟地址为0042 2000H + 0x100 = 0042 2100H。学生答0042 2040H,计算错误(可能误将行索引当作字节偏移直接加,或计算有误)。
④ Cache组号:根据正确地址0042 2100H,取A10~A5。0042 2100H二进制为...,低12位为0x100(0001 0000 0000),A10~A5是第10位到第5位:从低到高编号,A10~A5对应二进制位为“001000”(即十进制8)。学生答组号...
登录后发布评论
暂无评论,来抢沙发