每条指令可以分为1个取指周期,1个译码周期,0~1个间址周期,若干个执行周期,1个写回周期。
指令发射:使指令从译码阶段进入执行阶段。
| 器件 | 数量 | 流水级数 |
|---|---|---|
| f取指单元 | 2+先行1 | 1 |
| d译码单元 | 2+先行1 | 1 |
| m乘法器 | 1 | 3 |
| a加法器 | 1 | 2 |
| l逻辑单元 | 2 | 1 |
| r装入单元 | 1 | 1 |
| s写回单元 | 2 | 1 |
考虑以下汇编程序,指出相关性、画出各种指令发射时序。
I1 MOV R8,(R3) I2 ADD R3,4 I3 MOV R9,(R3) I4 AND R1,A I5 ADD R2,R1 I6 NOT R6 I7 ADD R3,R4 I8 MUL R4,R5 I9 MUL R6,R7
取指单元一有空就取指(指令未译码时要占用取指单元);译码单元一有空就译码(指令未发射时要占用译码单元);执行单元有空,上一条已发射就执行;写回单元有空,可在上一条已经写回后写回,或与上一条同时写回。
| I1 | f1 | d1 | r1 | s1 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| I2 | f2 | d2 | a1 | a2 | s2 | |||||||||
| I3 | f1 | d1 | r1 | s1 | ||||||||||
| I4 | f2 | d2 | r1 | l1 | s2 | |||||||||
| I5 | f1 | d1 | a1 | a2 | s1 | |||||||||
| I6 | f2 | d2 | l1 | s2 | ||||||||||
| I7 | f1 | d1 | a1 | a2 | s1 | |||||||||
| I8 | f2 | d2 | m1 | m2 | m3 | s2 | ||||||||
| I9 | f1 | d1 | m1 | m2 | m3 | s1 | ||||||||
取指单元一有空就取指(指令未译码时要占用取指单元);译码单元一有空就译码(指令未发射时要占用译码单元);执行单元有空,上一条已发射就执行;写回单元一有空就写回。
发射次序正巧与“按序发射按序完成”一样。
取指单元一有空就取指(指令未译码时要占用取指单元);译码单元一有空就译码(指令未发射时要占用译码单元);执行单元一有空就执行;写回单元一有空就写回。
| I1 | f1 | d1 | r1 | s1 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| I2 | f2 | d2 | a1 | a2 | s2 | ||||||||||
| I3 | f3 | d3 | r1 | s1 | |||||||||||
| I4 | f1 | d1 | r1 | l1 | s2 | ||||||||||
| I5 | f2 | d2 | a1 | a2 | s1 | ||||||||||
| I6 | f3 | d3 | l1 | s2 | |||||||||||
| I7 | f1 | d1 | a1 | a2 | s1 | ||||||||||
| I8 | f2 | d2 | m1 | m2 | m3 | s2 | |||||||||
| I9 | f3 | d3 | m1 | m2 | m3 | s1 | |||||||||