1.假设一条指令执行的过程中的分取指令,“分析指令”,条指令的执行过程可以分解为取指、分析和执行三步,在取指时间t取指=△t、分析时间t分析=2△t、执行时间t执行=3△t的情况下,分别写出执行过程中的n 条指令的所需时间表达式:
<1>顺序执行方式
<2>仅仅“取指令”“执行重叠”
(3)取指、分析和执行
解:(1)=△t+2△t+3△t=6△t
(2)
第一次:)=△t+2△t+3△t=6△t
(n-1)次:2△t+3△t=5△t
=》6△t+(n-1)5△t=(5n+1)△t
(3)同理:第一次:)=△t+2△t+3△t=6△t
(n-1)次:max(2△t+3△t)=3△t
=》6△t+(n-1)3△t=(3n+3)△t
2.
在一台单流水线多操作部件的处理机上执行下面的程序,取指令、指令译码各需要一个时钟周期,MOVE、ADD和MUL操作分别需要2个、3个和4个时钟周期。每个操作都在第一个周期从通用寄存器中读操作数,在最后一个时钟周期把运算结果写到通用寄存器中。
k: MOVE R1 , R0 ; RI ← ( R0 )
k+l: MUL R0 , R2 , R1 ; R0 ← ( R2 ) x ( R1 )
k+2: ADD R0, R2 , R3 ; R0 ← ( R2 ) + ( R3 )
1. 就程序本身而言,可能有哪几种数据相关?
2. 在程序实际执行过程中,有哪几种数据相关会引起流水线停顿?
3. 画出指令执行过程的流水线时空图,并计算执行完这三条指令共使用了多少个时钟周期。
解:
1.
简便方法:指令行列对角线相同必相关,列功能部件冲突,对角数据(读/写)冲突,写读必断流