问答题
某16位计算机中,带符号整数用补码表示,数据Cache和指令Cache分离。下表给出了指令系统中部分指令格式,其中Rs和Rd表示寄存器,mem表示存储单元地址,(x)表示寄存器x或存储单元x的内容。
指令系统中部分指令格式
指令系统中部分指令格式
名称 指令的汇编格式 指令功能
加法指令 ADD Rs,Rd (Rs)+(Rd)→Rd
算术/逻辑左移 SHL 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),流水线采用“按序发射,按序完成”方式,没有采用转发技术处理数据相关,并且同一个寄存器的读和写操作不能在同一个时钟周期内进行。请回答下列问题。
问答题
若int型变量x的值为-513,存放在寄存器R1中,则执行指令“SHR R1”后,R1的内容是多少?(用十六进制表示)
【正确答案】x的机器码为[x]补=1111 1101 11 11 11 11B,即指令执行前(R1)=FDFFH,右移1位后为11 11 11 10 11 11 11 11B,即指令执行后(R1)=FEFFH。
【答案解析】
问答题
若某个时间段中,有连续的4条指令进入流水线,在其执行过程中没有发生任何阻塞,则执行这4条指令所需的时钟周期数为多少?
【正确答案】至少需要4+(5-1)=8个时钟周期数。
【答案解析】
问答题
若高级语言程序中某赋值语句为x=a+b,x、a和b均为int型变量,它们的存储单元地址分别表示为[x]、[a]和[b]。该语句对应的指令序列及其在指令流水线中的执行过程如图所示。
【正确答案】I3的ID段被阻塞的原因:因为I3与I1和I2都存在数据相关,需等到I1和I2将结果写回寄存器后,I3才能读寄存器内容,所以I3的ID段被阻塞。I4的IF段被阻塞的原因:因为I4的前一条指令I3在ID段被阻塞,所以I4的IF段被阻塞。
【答案解析】
问答题
若高级语言程序中某赋值语句为x=2*x+a,x和a均为unsigned int类型变量,它们的存储单元地址分别表示为[x]、[a],则执行这条语句至少需要多少个时钟周期?要求模仿上图画出这条语句对应的指令序列及其在流水线中的执行过程示意图。
【正确答案】因2*x操作有左移和加法两种实现方法,故x=2*x+a对应的指令序列为:
I1 LOAD R1,[x]
12 LOAD R2,[a]
I3 SHL R1 //或者 ADD R1,R1
I4 ADD R1,R2
I5 STORE R2,[x]
这5条指令在流水线中的执行过程如下图所示。

【答案解析】