

计算 n 条指令采用流水线技术的总执行时间(通常记为 Tk),核心逻辑分为两部分:流水线建立时间(第一条指令执行完的时间)和后续指令陆续流出的时间。
- 设指令分为 k 个阶段(即流水线的级数,如图中分为:取指、分析、执行,共 3 级,即 k=3)。
- 设每个阶段(或每个流水线周期)的执行时间为 Δt。
- 设需要执行的指令条数为 n。
第一条指令的执行时间(流水线建立时间) :
*. 从图中的坐标轴可以看出,第一条指令在时刻 3 完成,即 3×Δt。
如果不采用流水线,每条指令都需要串行独立执行完所有 k 个阶段,那么执行 n 条指令的总时间为:
Ts=n×k×Δt
在计算机组成原理中,当指令的各个执行阶段(如取指、分析、执行)所需的时间不相等时,计算 n 条指令采用流水线方式执行的总时间需要应用非等长流水线公式。
流水线周期(**Δtmax** ) :
- 木桶效应:因为各阶段耗时不等,整个流水线的运行节奏必须由最耗时的那一个阶段来决定。
- 公式:Δtmax=max(t1,t2,…,tk) (即所有阶段中时间最大者)。
第一条指令执行时间(建立时间) :
- 第 1 条指令没有前序指令辅助,必须完整走完所有的阶段。
- 公式:∑i=1kti=t取指+t分析+t执行+…
后续指令耗时:
- 当第 1 条指令执行完毕后,流水线进入稳定输出期。
- 之后每经过一个“流水线周期(Δtmax)”就会完成一条指令。
- 除去第 1 条指令,剩余的 n−1 条指令每条消耗一个周期:(n−1)×Δtmax。
流水线总执行时间=i=1∑kti+(n−1)×Δtmax
- 对比:如果不使用流水线(串行执行)的总时间为:n×∑i=1kti
题目:
一条指令的执行过程可以分解为取指、分析和执行三步。在取指时间 t取指=3Δt、分析时间 t分析=2Δt、执行时间 t执行=4Δt 的情况下:
- 若按串行方式执行,则 10 条指令全部执行完需要多少 Δt?(9Δt)
- 若按流水线的方式执行,流水线周期为多少 Δt?(4Δt)10 条指令全部执行完需要多少 Δt?(45Δt)
解析过程:
串行执行总时间:
- 单条指令耗时 =3+2+4=9Δt
- 10 条指令总耗时 =9×10=90Δt
流水线周期(**Δtmax** ) :
- 三个阶段耗时分别为 3、2、4,取最大值:
- 流水线周期 =4Δt
流水线执行总时间:
总时间=第1条指令时间+(n−1)×流水线周期=(3+2+4)+(10−1)×4=9+9×4=9+36=45Δt
流水线的吞吐率(Throughput rate, TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。
基本吞吐率公式:
TP=流水线执行时间指令条数=Tkn
- 其中 n 为指令条数,Tk 为 n 条指令的流水线总执行时间。
最大吞吐率公式:
当指令条数趋于无穷大(n→∞)时,流水线的吞吐率达到极限:
TPmax=n→∞lim(k+n−1)Δtmaxn=Δtmax1
其中 Δtmax 为流水线周期(即最耗时阶段的时间)。
题目:
一条指令的执行过程可以分解为取指、分析和执行三步,取指时间 t取指=3Δt,分析时间 t分析=2Δt,执行时间 t执行=4Δt。求:
- 10 条指令的吞吐率 (TP) 是多少?
- 最大吞吐率 (TPmax) 是多少?
解析过程:
提取参数:
- 级数 k=3
- 指令条数 n=10
- 流水线周期 Δtmax=max(3,2,4)=4Δt
**计算 10 条指令的流水线总执行时间 (Tk** ) :
Tk=i=1∑kti+(n−1)×Δtmax=(3+2+4)+(10−1)×4=9+9×4=45Δt
**计算 10 条指令的吞吐率 (TP** ) :
TP=Tkn=45Δt10=9Δt2 (条/单位时间)
**计算最大吞吐率 (TPmax** ) :
TPmax=Δtmax1=4Δt1 (条/单位时间)
题目: 下列关于流水线方式执行指令的叙述中,不正确的是( A )。
A、流水线方式可提高单条指令的执行速度
B、流水线方式下可同时执行多条指令
C、流水线方式提高了各部件的利用率
D、流水线方式提高了系统的吞吐率
【解析】
- 选项 A:流水线技术的核心是通过多个部件并行工作来提高整个程序或多条指令的整体执行效率和吞吐率,但对单条指令而言,由于它依然需要走完所有的流水线阶段,其执行时间并没有缩短(甚至因为级与级之间的寄存器延迟可能会略微增加),因此它不能提高单条指令的执行速度(错误,符合题意)。
- 选项 B:流水线将指令执行过程分为多个阶段,不同的指令可以同时在不同的阶段中执行,因此可以“同时执行多条指令”(正确)。
- 选项 C:各项部件在流水线中错开并行工作,减少了部件的闲置时间,从而提高了各硬件部件的利用率(正确)。
- 选项 D:流水线技术由于提高了单位时间内完成的指令数量,从而显著提高了系统的吞吐率(正确)。
正确答案:A。
题目:将一条指令的执行过程分解为取指、分析和执行三步,若取指时间 t取指=4Δt、分析时间 t分析=2Δt、执行时间 t执行=3Δt,则执行完 100 条指令,需要的时间为( D )Δt。
A、200
B、300
C、400
D、405
解析:
提取已知参数:
- 级数 k=3
- 指令条数 n=100
- 各阶段时间:t取指=4Δt、t分析=2Δt、t执行=3Δt
- 流水线周期(取最大值):Δtmax=max(4,2,3)=4Δt
**代入公式计算总时间 (Tk** ) :
Tk=i=1∑kti+(n−1)×Δtmax=(4+2+3)+(100−1)×4=9+99×4=9+396=405Δt
正确答案:D(405)。