1.假设一条指令执行的过程中的分取指令,“分析指令”,条指令的执行过程可以分解为取指、分析和执行三步,在取指时间t取指=△t、分析时间t分析=2△t、执行时间t执行=3△t的情况下,分别写出执行过程中的n 条指令的所需时间表达式:

<1>顺序执行方式

<2>仅仅“取指令”“执行重叠”

(3)取指、分析和执行

解:(1)=△t+2△t+3△t=6△t

(2)

p_w_picpath

第一次:)=△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.

简便方法:指令行列对角线相同必相关,列功能部件冲突,对角数据(读/写)冲突,写读必断流

p_w_picpath