5.在一条单流水线多操作部件的处理机上执行下面的程序,取指令、指令译码各需要一个时钟周期, MOVE、ADD和MUL操作各需要2个、3个和4个时钟周期。每个操作都在第一个时钟周期从通用寄存器中读操作数, 在最后一个时钟周期把运算结果写到通用寄存器中。 K: MOVE RI, R0 ;R1←(R0) K+1: MUL R0, R2, R1 ;R0←(R2)*(R1) K+2: ADD R0, R3, R2 ;R0←(R3)+(R2) 画出指令执行的流水线时空图,并计算执行完三条指令共使用了多少个时钟周期。
时间: 2024-02-12 22:09:39 浏览: 297
指令执行的流水线时空图如下:
```
K | 取指令 | 指令译码 | MOVE | MUL | ADD
----------------------------------------------------------------
K+0 | FETCH | DECODE | READ | |
K+1 | | FETCH | | READ |
K+2 | | | | CALC | READ
K+3 | | | CALC | WRITE |
K+4 | | | | FETCH |
K+5 | | | | | CALC
K+6 | | | | | WRITE
```
执行完三条指令共使用了 12 个时钟周期。
解释如下:
- 第一条指令(MOVE指令)需要 3 个时钟周期,因为它需要取指令、指令译码和读取操作数,然后写入通用寄存器。
- 第二条指令(MUL指令)需要 5 个时钟周期,因为它需要取指令、指令译码、读取两个操作数、执行乘法操作,然后把结果写入通用寄存器。
- 第三条指令(ADD指令)需要 4 个时钟周期,因为它需要取指令、指令译码、读取两个操作数、执行加法操作,然后把结果写入通用寄存器。
因此,三条指令共使用了 12 个时钟周期。
阅读全文