问答题

某16位计算机中,带符号整数用补码表示,数据Cache和指令Cache分离。表1给出了指令系统中部分指令格式,其中Rs和Rd表示寄存器,mem表示存储单元地址,(x)表示寄存器x或存储单元x的内容。
该计算机采用5段流水方式执行指令,各流水段分别是取指IF、译码/读寄存器ID、执行/计算有效地址EX、访问存储器M、结果写回寄存器WB,流水线采用“按序发射,按序完成”方式,没有采用转发技术处理数据相关,并且同一寄存器的读和写操作不能在同一个时钟周期内进行。请回答下列问题。
表1 指令系统中部分指令格式
名 称 指令的汇编格式 指令功能
加法指令 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
若高级语言程序中某赋值语句为x=2*x+a,x和a均为unsigned int型变量,它们的存储单元地址分别表示为[x]、[a]。执行这条语句至少需要多少个时钟周期要求模仿表2画出这条语句对应的指令序列及其在流水线中的执行过程示意图。

【参考答案】

该条语句对应的指令序列有两种情况,因为2x操作有加法(对应第一种)和左移(对应第二种)两种方法实现。
第一种 ......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)