某16位计算机中,带符号整数用补码表示,数据Cache和指令Cache分离。表5-1给出了指令系统中部分指令格式,其中Rs和Rd表示寄存器,mem表示存储单元地址,(x)表示寄存器x或存储单元x的内容。 该计算机采用5段流水方式执行指令,各流水段分别是取

admin2015-12-30  31

问题 某16位计算机中,带符号整数用补码表示,数据Cache和指令Cache分离。表5-1给出了指令系统中部分指令格式,其中Rs和Rd表示寄存器,mem表示存储单元地址,(x)表示寄存器x或存储单元x的内容。

该计算机采用5段流水方式执行指令,各流水段分别是取指(IF)、译码牍寄存器(ID)、执行/计算有效地址(EX)、访问存储器(M)和结果写回寄存器(WB),流水线采用“按序发射,按序完成”方式,没有采用转发技术处理数据相关,并且同一寄存器的读和写操作不能在同一个时钟周期内进行。
请回答下列问题:
若高级语言程序中某赋值语句为x=x*2+a,x和a均为unsigned int类型变量,它们的存储单元地址分别表示为[x]、[a],则执行这条语句至少需要多少个时钟周期?要求模仿上图画出这条语句对应的指令序列及其在流水线中的执行过程示意图。

选项

答案因2*x操作有左移和加法两种实现方法,故x=x*2+a对应的指令序列为 I1 LOAD R1,[x] I2 LOAD R2,[a] I3 SHL R1//或者ADDR1,R1 I4 ADD R1,R2 I5 STORE R2,[x] 这5条指令在流水线中执行过程如下图所示。 [*] 故执行x=x*2+a语句最少需要17个时钟周期。

解析
转载请注明原文地址:https://kaotiyun.com/show/yERi777K
0

最新回复(0)