每条指令可以分为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 |