若每一条指令都可以分解为取指,分析和执行三步。已知取指时间t取指=8△t,分析时间t分析=3△t,执行时间t执行=12△t。如果按照流水线方式执行指令,从头到尾执行完 100条指令至少需 (41) △t。如果取指时间t取指=8△t,分析时间t分析=12△t,执行时间 t执行=3△t,则从头到尾执行完100条指令至少需 (42) △t。
(42)处填()。
A.1200
B.1223
C.1224
D.1211
参考答案:D
解析:
采用流水线方式时,系统在同一时刻可以进行第k条指令的取指,第k+ 1条指令的分析,第k+2条指令的执行,所以效率大大提高了。采用流水线的执行示意图如图13-45所示。
[*]
平时大家看到的都是这样的示意图,但是平时我们看到的图都是笼统的。这里把所有周期都定为统一长度。这样流水线的总时间为:(n+2)×周期。如此题中为
(100+2)×12=1224
但这不是最少的,为什么先看另一个流水线总时间计算公式:
T总=第一条指令顺序执行时间+(指令条数-1)×周期
[*]
其中,k是流水线的段数,ti是各段的时间,n是总任务数。
这个公式是怎么来的呢请大家结合该题数据:取指时间t取指=8△t,分析时间t分析= 3△t,执行时间t执行=12△t,如图13-46所示。
[*]
其中黑的区域表示分析段空闲,根据这种方式算出来的总时间为
8+3+12+(100-1)×12=1211
这种方式的总时间为什么比图13-45的方式要少呢这是因为在图13-45中,限定了各段的时间一样,都为最慢的那段的时间,而图13-46的方式却没有,其在执行第一条指令时,取指段节省12-8=4的时间,分析段又节省12-3=9的时间,所以总共节省了 13的时间。按图13-45方式来执行时,第一条指令的取指和分析段有时间空闲,黑色区域表示空闲,如图13-47所示。
[*]
如果取指时间t取指=8△t,分析时间t分析=12△t,执行时间t执行=3△t,此时时空图将变成如图13-48所示。
[*]
容易看出,执行100条指令的时间不变。