首页 习题正文

44.(12分)某程序中有如下循环代码段P∶"for(nti

44.(12分)某程序中有如下循环代码段P∶"for(nti=0;iOP为操作码;Rs 和 Rd为寄存器编号;OFFSET为偏移量,用补码表示。请回答下列问题,并说明理由。 1)M的存储器编址单位是什么? 2)已知 sll指令实现左移功能,数组 A中每个元素占多少位? 3)表中 bne指令的OFFSET字段的值是多少?已知 bne 指令采用相对寻址方式,当前 PC 内容为 bne 指令地址,通过分析表中指令地址和 bne指令内容,推断出 bne 指令的转移目标地址计算公式。 4)若M采用如下"按序发射、按序完成"的5级指令流水线∶IF(取值)、ID(译码及取数)、EXE(执行)、MEM(访存)、WB(写回寄存器),且硬件不采取任何转发措施,分支指令的执行均引起3个时钟周期的阻塞,则P中哪些指令的执行会由于数据相关而发生流水线阻塞?哪条指令的执行会发生控制冒险?为什么指令1的执行不会因为与指令5的数据相关而发生阻塞?



【参考答案及解析】
该题为计算机组成原理科目的综合题型,涉及到指令系统、存储管理以及 CPU三个部分内容,考生因注意各章节内容之间的联系,才能更好的把握当前考试的趋势。 (1)已知计算机 M采用32位定长指令字,即一条指令占4B,观察表中各指令的地址可知,每条指令的地址差为4个地址单位,即 4个地址单位代表 4B,一个地址单位就代表了1B,所以该计算机是按字节编址的。(2分) (2)在二进制中某数左移二位相当于以乘四,由该条件可知,数组间的数据间隔为4个地址单位,而计算机按字节编址,所以数组A中每个元素占4B。(2分) (3)由表可知,bne 指令的机器代码为1446FFFAH,根据题目给出的指令格式,后 2B 的内容为 OFFSET字段,所以该指令的 OFFSET字段为 FFFAH,用补码表示,值为-6。(1分)当系统执行到 bne 指令时,PC 自动加 4,PC 的内容就为 08048118H,而跳转的目标是08048100H,两者相差了 18H,即 24 个单位的地址间隔,所以偏移址的一位即是真实跳转地址的-24/-6=4 位。(1 分)可知 bne 指令的转移目标地址计算公式为(PC)+4+OFFSET*4。(1 分) (4)由于数据相关而发生阻塞的指令为第2、3、4、6条,因为第2、3、4、6条指令都与各自前一条指令发生数据相关。(3分) 第6条指令会发生控制冒险。(1分) 当前循环的第五条指令与下次循环的第一条指令虽然有数据相关,但由于第6条指令后有3个时钟周期的阻塞,因而消除了该数据相关。(1分) 【评分说明】 对于第1问,若考生回答∶因为指令1和2、2和 3、3和 4、5和6发生数据相关,因而发生阻塞的指令为第2、3、4、6条,同样给3分。答对3个以上给3分,部分正确酌情给分。

正在整理中,欢迎在文下评论区提供答案解析,谢谢!
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接:https://scpro.cn/v/af68adde2ea24d69.html