首页 习题正文

44.某16 位计算机中,带符号整数用补码表示,数据 Cac

44.某16 位计算机中,带符号整数用补码表示,数据 Cache 和指令Cache 分离。题44表给出了指令系统中部分指令格式,其中Rs 和 Rd 表示寄存器,mem 表示存储单元地址,(x)表示寄存器x或存储单元x 的内容。 指令系统中部分指令格式 名称:指令的汇编格式/加法指令 加法指令:ADD Rs,Rd/(Rs)+(Rd)->Rd 算术/逻辑左移:SHR Rd/2*(Rd)>Rd 算术右移:SHR Rd/(Rd)2-Rd 取数指令:LOAD Rd,mem/(mem)->Rd 存数指令:STORE Rs, mem/(Rs)->mem 该计算机采用5段流水方式执行指令,各流水段分别是取指(IF)、译码/读寄存器(ID)、执行/计算有效地址(EX)、访问存储器(M)和结果写回寄存器(WB),流水线采用"按序发射,按序完成"方式,没有采用转发技术处理数据相关,并且同一个寄存器的读和写操作不能在同一个时钟周期内进行。请回答下列问题∶ 1)若int 型变量x的值为-513,存放在寄存器R1中,则执行指令"SHR R1"后,R1的内容是多少?(用十六进制表示) 2)若某个时间段中,有连续的4条指令进入流水线,在其执行过程中没有发生任何阻塞,则执行这4条指令所需的时钟周期数为多少? 3)若高级语言程序中某赋值语句为x=a+b,x、a 和b均为int 型变量,它们的存储单元地址分别表示为【x】、【a】和【b】。该语句对应的指令序列及其在指令流水线中的执行过程如下图所示。 则这4条指令执行过程中,I3的 ID 段和I4的IF 段被阻塞的原因各是什么? 4)若高级语言程序中某赋值语句为x=x*2+a,x和 a均为 unsigned int类型变量,它们的存储单元地址分别表示为[x]、[a],则执行这条语句至少需要多少个时钟周期?要求模仿题 44 图画出这条语句对应的指令序列及其在流水线中的执行过程示意图。



【参考答案及解析】
(1)x的机器码为[x]补=1111 1101 11111111B,即指令执行前(R1)=FDFFH,右移1位后为1111111011111111B,即指令执行后(R1)=FEFFH。(2分) 【评分说明】仅正确写出指令执行前的(R1)可给1分。 (2)至少需要4+(5-1)=8个时钟周期数。(2分) (3)I3的ID段被阳塞的原因∶因为l3与I1和 l2都存在数据相关,需等到l1和I2将结果写回寄存器后,l3才能读寄存器内容,所以 l3的ID段被阻塞。(1分) l4的IF 段被阻塞的原因∶因为l4的前一条指令 l3在 ID段被阻塞,所以l4的IF 段被阻塞。(1 分)。 (4)因2*x操作有左移和加法两种实现方法,故x=x*2+a 对应的指令序列为 I1 L0AD R1,[×] I2 LOAD R2,[a] I3 SHL R1 //或者 ADD R1,R1 I4 ADD R1,R2 I5 STORE R2,[x] 【评分说明】指令正确给2分;其他正确答案同样给分;部分正确,酌情给分。 这5条指令在流水线中执行过程如下图所示。(3分) 故执行x=x*2+a语句最少需要17个时钟周期。(1分)

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

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

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