设某处理器具有五段指令流水线IF(取指令)、ID(指令译码及取操作数)、EXE(ALU执行)、MEM(存储器访问)和WB(结果寄存器回写).现执行如下的指令序列: (a)SUB R2, R1, R3 ;R2←R1-R3 (b)ADD R12, R2, R5 ;R12←R2+R5 (c)OR R13, R6, R2 ;R13←R6 or R2 (d)AND R14, R5, R2 ;R14←R5 and R2 (e)ADD R15, R3, R2 ;R15←R3+R2 问:(1)如果不对这些指令之间的数据相关性进行特殊处理而允许这些指令进入流水线,哪些指令经从未准备好的数据的R2寄存器取到错误的操作数?请结合时空图具体分析。 (2)假定采用将相关指令延迟到所需操作数被写回寄存器堆时执行的方式解决数据相关问题,那么处理器执行这五条指令需要占用多少时钟周期。请结合时空图具体分析。
时间: 2023-07-15 15:11:49 浏览: 243
1、设一条流水线的执行过程分成取指令、分析指令和执行指令三个阶段.pdf
(1)根据指令序列,可以看出在第(c)条指令的ID阶段,R2寄存器被写入了操作数,但是在第(b)条指令的ID阶段,R2寄存器还没有被写入正确的操作数,所以第(b)条指令会从R2寄存器取到错误的操作数。时空图如下:
```
IF ID EXE MEM WB
(a) SUB R2, R1, R3
IF ID EXE MEM WB
(b) ADD R12, R2, R5
IF ID EXE MEM WB
(c) OR R13, R6, R2
IF ID EXE MEM WB
(d) AND R14, R5, R2
IF ID EXE MEM WB
(e) ADD R15, R3, R2
IF ID EXE MEM WB
```
(2)采用将相关指令延迟到所需操作数被写回寄存器堆时执行的方式解决数据相关问题,需要考虑以下几个方面:
- 对于第(a)条指令和第(b)条指令,因为没有数据相关性,所以可以同时执行,需要2个时钟周期。
- 对于第(c)条指令和第(d)条指令,因为需要等待R2寄存器被写回,所以需要等待第(b)条指令执行完毕,需要3个时钟周期。
- 对于第(e)条指令,因为需要等待R2寄存器被写回,所以需要等待第(c)条指令执行完毕,需要4个时钟周期。
综上所述,处理器执行这五条指令需要占用4个时钟周期。时空图如下:
```
IF ID EXE MEM WB
(a) SUB R2, R1, R3
IF ID EXE MEM WB
(b) ADD R12, R2, R5
IF ID EXE MEM WB
(c) OR R13, R6, R2
IF ID EXE MEM WB
(d) AND R14, R5, R2
IF ID EXE MEM WB
(e) ADD R15, R3, R2
IF ID EXE MEM WB
```
阅读全文