1.6 流水线技术
本节导学:流水线提升的是“持续产出能力”,不是单条指令瞬间完成
课程用工业流水线类比指令流水线:一个产品不再由一个工人从头做到尾,而是拆给多个工位连续加工。CPU 指令也类似,可以拆成取指、分析/译码、执行等阶段。流水线的关键不是让一条指令内部所有步骤同时发生,而是让多条指令在不同阶段交叠推进。
典型三段:
取指 Fetch → 分析/译码 Decode → 执行 Execute因此流水线属于“准并行”:同一时刻可能有多条指令在不同部件上工作,但每一条指令仍要按阶段顺序走完。
1. 串行执行为什么浪费
假设一条指令分三段:取指 F、分析 D、执行 E。没有流水线时,必须等第一条指令完整执行完,第二条才能开始。
问题在于:I1 执行 D 时,取指部件可能空着;I1 执行 E 时,取指和译码部件都可能空着。流水线正是为了减少这种部件空闲。
从单条指令看,I1 仍然经历 F+D+E,延迟没有神奇消失;从整体看,流水线稳定后几乎每个周期都能完成一条指令,吞吐率明显提高。
2. 技术演进:从串行到流水线,再到更强的并行
| 技术阶段 | 核心思想 | 优点 | 局限 | 后续为什么继续演进 |
|---|---|---|---|---|
| 串行执行 | 一条指令完整结束后再执行下一条 | 控制简单,硬件设计容易 | 部件空闲严重,整体吞吐低 | 需要提高 CPU 部件利用率 |
| 指令流水线 | 指令分段,多条指令交叠执行 | 在不复制整套 CPU 的情况下提高吞吐 | 受最长阶段、相关冲突、分支影响 | 需要处理更复杂的并行和预测 |
| 超标量/多发射 | 一个周期发射多条指令到多个执行单元 | 吞吐进一步提高 | 调度、相关检测、乱序执行复杂 | 硬件复杂度和功耗上升 |
| 多核并行 | 多个核心同时运行多个线程/任务 | 适合任务级并行 | 单线程不一定变快,受软件并行度限制 | 需要操作系统和程序共同配合 |
软考这一节主要考流水线基础公式,但理解这张表能避免一个误区:流水线不是“最终形态”,它只是提高指令级吞吐的基础技术之一。
3. 流水线周期为什么取最长段
流水线像一排按统一节拍前进的工位。若各段耗时不同,快的工位也要等慢的工位完成后才能整体推进。于是流水线周期
例子:
| 阶段 | 耗时 |
|---|---|
| 取指 | |
| 分析 | |
| 执行 |
周期不是平均值
这就是“最长段限制整体节拍”的直观含义。
4. 建立时间、稳定输出与排空
流水线执行 N 条指令时,可以看成三段过程:
建立:第一条指令逐段进入流水线,直到第一次完成
稳定:流水线装满后,基本每个周期完成一条
排空:最后几条指令陆续离开流水线三段流水线的交叠过程可参考上面的时间轴图:第一条指令先填入流水线,后续指令逐周期进入,最后再逐步排空。
如果每段长度完全按统一周期看,第一条指令完成需要
其中
5. 理论公式与实践公式
课程里特别提醒:软考题常先按理论公式算,如果选项里没有,再看实践公式。
| 公式 | 表达式 | 适用理解 | 特点 |
|---|---|---|---|
| 理论公式 | 第一条指令按真实各段耗时走完,后续按周期输出 | 更贴近“段长不等但第一条不用被强行拉齐”的计算 | |
| 实践公式 | 每段都按统一周期节拍推进 | 更贴近硬件同步时钟下的统一节拍 |
同一组数据会得出不同结果,不是因为某个一定错,而是模型口径不同。考试时要读题和选项。
6. 课堂例题完整拆解
题目:一条指令分为三段,取指
第一步,求周期:
第二步,理论公式:
第三步,实践公式:
做题顺序建议:
- 先取最长段得到
。 - 优先用理论公式算。
- 如果选项没有理论结果,再考虑实践公式。
- 题干若明确“按统一时钟周期”或“每段均按周期计”,直接用实践公式。
7. 吞吐率与最大吞吐率
吞吐率看的是单位时间完成多少任务:
最大吞吐率看流水线稳定之后的理想状态。稳定后每个周期完成一条指令,所以:
例如
注意单位换算。题目给纳秒、微秒、毫秒时,要把“每单位时间多少条”换成选项里的单位。
8. 流水线并不总是满效率
基础计算题默认流水线理想运行,但真实 CPU 里会遇到三类障碍:
| 障碍 | 含义 | 例子 | 影响 |
|---|---|---|---|
| 结构相关 | 多条指令争用同一硬件资源 | 同时需要访问同一存储端口 | 某些指令停顿 |
| 数据相关 | 后一条指令依赖前一条结果 | I2 要用 I1 刚算出的寄存器值 | 需要等待、转发或重排 |
| 控制相关 | 分支导致下一条指令不确定 | 条件跳转 | 可能清空错误取入的流水线 |
这部分在本节计算题里通常不深入,但它解释了为什么现代处理器还需要分支预测、乱序执行、寄存器重命名等技术。它们都是为了减少流水线停顿,让“稳定输出”更接近理想值。
9. 本节考点地图
| 题型 | 题干信号 | 解题动作 |
|---|---|---|
| 周期题 | “各段耗时分别为...” | |
| 总时间题 | “流水线执行 N 条指令” | 先理论: |
| 吞吐率题 | “单位时间完成多少” | |
| 最大吞吐率题 | “稳定后/最大吞吐率” | |
| 概念题 | “完全并行还是准并行” | 选准并行;多条指令不同阶段交叠 |
🧪 例题(按难度)
简单(3题)
中级(3题)
例题1(理论公式)
一条指令分为 3 段:取指 3Δt、分析 2Δt、执行 4Δt。采用流水线执行 10 条指令。
求总执行时间(理论公式)。
例题2(最大吞吐率)
若某流水线周期
困难(1题)
📚 本课小结
- 理论:
- 实践:
(必要时再用) ,