Skip to content
难度中等(★★)
建议时长90分钟
本课难点
  • 流水线周期 Tp 取最长段(不是平均值)
  • 理论公式与实践公式的适用场景区分(先理论,选项对不上再实践)
  • 吞吐率/最大吞吐率的计算与单位换算

1.6 流水线技术

本课核心知识点整理
本课核心知识点手绘流程图(SVG)

本节导学:流水线提升的是“持续产出能力”,不是单条指令瞬间完成

课程用工业流水线类比指令流水线:一个产品不再由一个工人从头做到尾,而是拆给多个工位连续加工。CPU 指令也类似,可以拆成取指、分析/译码、执行等阶段。流水线的关键不是让一条指令内部所有步骤同时发生,而是让多条指令在不同阶段交叠推进。

text
典型三段:

取指 Fetch  →  分析/译码 Decode  →  执行 Execute

因此流水线属于“准并行”:同一时刻可能有多条指令在不同部件上工作,但每一条指令仍要按阶段顺序走完。

1. 串行执行为什么浪费

假设一条指令分三段:取指 F、分析 D、执行 E。没有流水线时,必须等第一条指令完整执行完,第二条才能开始。

串行执行与流水线执行时间轴

问题在于:I1 执行 D 时,取指部件可能空着;I1 执行 E 时,取指和译码部件都可能空着。流水线正是为了减少这种部件空闲。

从单条指令看,I1 仍然经历 F+D+E,延迟没有神奇消失;从整体看,流水线稳定后几乎每个周期都能完成一条指令,吞吐率明显提高。

2. 技术演进:从串行到流水线,再到更强的并行

技术阶段核心思想优点局限后续为什么继续演进
串行执行一条指令完整结束后再执行下一条控制简单,硬件设计容易部件空闲严重,整体吞吐低需要提高 CPU 部件利用率
指令流水线指令分段,多条指令交叠执行在不复制整套 CPU 的情况下提高吞吐受最长阶段、相关冲突、分支影响需要处理更复杂的并行和预测
超标量/多发射一个周期发射多条指令到多个执行单元吞吐进一步提高调度、相关检测、乱序执行复杂硬件复杂度和功耗上升
多核并行多个核心同时运行多个线程/任务适合任务级并行单线程不一定变快,受软件并行度限制需要操作系统和程序共同配合

软考这一节主要考流水线基础公式,但理解这张表能避免一个误区:流水线不是“最终形态”,它只是提高指令级吞吐的基础技术之一。

3. 流水线周期为什么取最长段

流水线像一排按统一节拍前进的工位。若各段耗时不同,快的工位也要等慢的工位完成后才能整体推进。于是流水线周期 Tp 由最慢阶段决定:

Tp=max(t1,t2,,tK)

例子:

阶段耗时
取指3Δt
分析2Δt
执行4Δt

周期不是平均值 (3+2+4)/3,也不是总和 9Δt,而是最长段 4Δt。分析阶段只需要 2Δt,但在统一节拍下仍要等到 4Δt 这个周期结束。

流水线周期由最长阶段决定

这就是“最长段限制整体节拍”的直观含义。

4. 建立时间、稳定输出与排空

流水线执行 N 条指令时,可以看成三段过程:

text
建立:第一条指令逐段进入流水线,直到第一次完成
稳定:流水线装满后,基本每个周期完成一条
排空:最后几条指令陆续离开流水线

三段流水线的交叠过程可参考上面的时间轴图:第一条指令先填入流水线,后续指令逐周期进入,最后再逐步排空。

如果每段长度完全按统一周期看,第一条指令完成需要 K 个周期,之后每增加一条指令,多用一个周期。因此实践公式常写成:

T=(K+N1)×Tp

其中 K 是流水线段数,N 是任务或指令条数。

5. 理论公式与实践公式

课程里特别提醒:软考题常先按理论公式算,如果选项里没有,再看实践公式。

公式表达式适用理解特点
理论公式T=ti+(N1)Tp第一条指令按真实各段耗时走完,后续按周期输出更贴近“段长不等但第一条不用被强行拉齐”的计算
实践公式T=(K+N1)Tp每段都按统一周期节拍推进更贴近硬件同步时钟下的统一节拍

同一组数据会得出不同结果,不是因为某个一定错,而是模型口径不同。考试时要读题和选项。

6. 课堂例题完整拆解

题目:一条指令分为三段,取指 3Δt、分析 2Δt、执行 4Δt,采用流水线执行 10 条指令。

第一步,求周期:

Tp=max(3Δt,2Δt,4Δt)=4Δt

第二步,理论公式:

T=ti+(N1)×Tp=(3+2+4)Δt+(101)×4Δt=9Δt+36Δt=45Δt

第三步,实践公式:

T=(K+N1)×Tp=(3+101)×4Δt=48Δt

做题顺序建议:

  1. 先取最长段得到 Tp
  2. 优先用理论公式算。
  3. 如果选项没有理论结果,再考虑实践公式。
  4. 题干若明确“按统一时钟周期”或“每段均按周期计”,直接用实践公式。

7. 吞吐率与最大吞吐率

吞吐率看的是单位时间完成多少任务:

TP=NT

最大吞吐率看流水线稳定之后的理想状态。稳定后每个周期完成一条指令,所以:

TPmax=1Tp

例如 Tp=5ms

TPmax=15ms=0.2 条/ms=200 条/s

注意单位换算。题目给纳秒、微秒、毫秒时,要把“每单位时间多少条”换成选项里的单位。

8. 流水线并不总是满效率

基础计算题默认流水线理想运行,但真实 CPU 里会遇到三类障碍:

障碍含义例子影响
结构相关多条指令争用同一硬件资源同时需要访问同一存储端口某些指令停顿
数据相关后一条指令依赖前一条结果I2 要用 I1 刚算出的寄存器值需要等待、转发或重排
控制相关分支导致下一条指令不确定条件跳转可能清空错误取入的流水线

这部分在本节计算题里通常不深入,但它解释了为什么现代处理器还需要分支预测、乱序执行、寄存器重命名等技术。它们都是为了减少流水线停顿,让“稳定输出”更接近理想值。

9. 本节考点地图

题型题干信号解题动作
周期题“各段耗时分别为...”Tp=max(ti)
总时间题“流水线执行 N 条指令”先理论:ti+(N1)Tp;再看实践:(K+N1)Tp
吞吐率题“单位时间完成多少”TP=N/T
最大吞吐率题“稳定后/最大吞吐率”TPmax=1/Tp
概念题“完全并行还是准并行”选准并行;多条指令不同阶段交叠

🧪 例题(按难度)

简单(3题)

单选
指令流水线划分为 $K$ 段,各段耗时分别为 $t_1 \sim t_K$,则流水线周期 $T_p$ 通常取:
单选
下列关于流水线的说法正确的是:
单选
在流水线稳定后,最大吞吐率 $TP_{\max}$ 的典型表达式是:

中级(3题)

例题1(理论公式)

一条指令分为 3 段:取指 3Δt、分析 2Δt、执行 4Δt。采用流水线执行 10 条指令。

求总执行时间(理论公式)。

单选
选择正确结果:

例题2(最大吞吐率)

若某流水线周期 Tp=5ms,则最大吞吐率约为:

单选
选择最大吞吐率:
单选
若题目默认各段都按同一周期 $T_p$ 执行(存在空耗),总执行时间更常用的表达式是:

困难(1题)

填空
仍以例题1为例(3 段:$3\Delta t$、$2\Delta t$、$4\Delta t$,执行 10 条指令)。若不采用流水线,按顺序执行每条指令耗时为 $3+2+4=9\Delta t$,则采用理论流水线后的加速比 $S$ 约为:

📚 本课小结

  • Tp=max(ti)
  • 理论:T=ti+(N1)Tp
  • 实践:T=(K+N1)Tp(必要时再用)
  • TP=N/TTPmax=1/Tp