问答题 某16位计算机中,带符号整数用补码表示,数据Cache和指令Cache分离。题44表给出了指令系统中部分指令格式,其中Rs和Rd表示寄存器,mem表示存储单元地址,(x)表示寄存器x或存储单元x的内容。该计算机采用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]。该语句对应的指令序列及其在指令流水线中的执行过程如题44图所示。I1 LOAD R1,[a]I2 LOAD R2,[b]I3 ADD R1,R2I4 STORE R2,[x]
【正确答案】正确答案:(1)若int型变量x的值为-513,存放在寄存器R1中,则执行指令“SHR R1”后,R1中的内容是多少?(用十六进制表示) x=-513=-(512+1)=(-00000010 00000001) 2 , x =(11111101 11111111) 2 =(fdff) 16 右移后,(R1)=(11111110 11111111) 2 =(feff) 16 (2)若某个时间段中,有连续的4条指令进入流水线,在其执行过程中没有发生任何阻塞,则执行这4条指令所需的时钟周期数为多少? 执行这4条指令所需的时钟周期数=5+(4-1)=8。 (3)若高级语言程序中某赋值语句为x=a+b,x、a和b均为int型变量,它们的存储单元地址分别表示为[x]、[a]和[b]。该语句对应的指令序列及其在指令流水线中的执行过程如题44图所示。则这4条指令执行过程中,I3的ID段和I4的IF段被阻塞的原因各是什么? I3的ID段被阻塞的原因是:指令I3与指令I1和I2之间都存在“先写后读”的数据相关,ID段负责指令译码并读源寄存器,需等指令I1和I2完成结果写回操作后才能继续执行I3指令。 I4的IF段被阻塞的原因是:I4与I3存在结构相关,I3占用了IF部件,需等I3进入ID部件后I4才能进入IF部件。 (4)若高级语言程序中某赋值语句为x=2*x+a,x和a均为Lresigned int类型变量,它们的存储单元地址分别表示为[x]、[a],则执行这条语句至少需要多少个时钟周期?要求模仿题44图画出这条语句对应的指令序列及其在流水线中的执行过程示意图。 该语句对应的指令序列: I1 LOKD R1,[x] I2 LOAD R2,[a] I3 SHL R1 I4 ADD R1.R2 I5 STORE R2,[x] 该语句在指令流水线中的执行过程如下图所示:
【答案解析】