将一条指令分割成多个子操作,子操作是有顺序的,后面的子操作依赖前一个子操作的结果,因此,子操作必须是串行的。它优化的地方在于,每个子操作有专门的硬件,如果当前指令的子操作的完成了,就可以执行下一个指令的子操作,显现出并行特性。
流水线技术把处理器的一条指令操作分解为若干个可以独立处理的子操作(如取指令、分析指令、执行指令),每个子操作在一个专门的硬件上进行,若干条子操作顺序地经过流水线中多个站完成指令任务。采用流水线技术提高了指令并行执行程度,进而提高了指令执行速度。
设某流水线分为n个基本操作:操作时间分别是ti (i=1,2,…,n),执行m条指令,相应的流水线性能指标如下:操作周期:取决于基本操作时间最长的一个,即
Δt=max{t1, t2,…, ti}
吞吐率TP:单位时间内执行的指令数。
执行m条指令的时间
t=(ti的加和)+(m-1)Δt
(解释:一条指令的时间是所有子操作所用时间的总和,每增加一条指令,只是在第一条的基础上,增加Δt)
【例】某指令流水线由5段组成,第1、3、5段所需时间为Δt,第2、4段所需时间分别为3Δt和2Δt,那么连续输入m条指令时的吞吐率
TP=m /[(Δt+3Δt+Δt+2Δt+Δt)+(m-1)×3Δt]=m / (3m+5)Δt
若每一条指令都可以分解为取指、分析和执行三步。已知取指时间t取指=4Δt,分析时间t分析=3Δt,执行时间t执行=5Δt。如果按照串行方式执行完100条指令需要时间
(4Δt+3Δt+5Δt)×100=1200Δt
如果按照流水方式执行,执行完100条指令需要时间
(4Δt+3Δt+5Δt)+(100-1)×max(4Δt,3Δt,5Δt)=507Δt