流水线技术
计算机科学· Unit 4: Processor Fundamentals· 15 分钟阅读
1. 流水线基础★★☆☆☆⏱ 4 min
指令流水线
一种性能优化技术,在执行过程中重叠多条指令,将指令周期划分为多个可并行运行的独立阶段。
例:
5级流水线在初始填充延迟后,每个时钟周期完成一条指令。
标准RISC流水线将指令周期划分为5个连续的常用阶段,每个阶段在一个时钟周期内完成:
IF (Instruction Fetch): 从主存取出指令到CPU寄存器
ID (Instruction Decode): 对操作码译码,从寄存器堆读取源操作数
EX (Execute): 执行ALU运算或计算内存地址
MEM (Memory Access): 为加载/存储指令访问数据存储器
WB (Write Back): 将指令结果写回寄存器堆
绘制3条指令在5级流水线上执行的时序图,展示每个时钟周期各指令占用的流水线阶段。
- 1
流水线按顺序填充:每个周期有一条新指令进入第一阶段。
- 2
填充完成后,每个阶段同时处理不同指令,最终时序如下:
- 3
- 4
流水线执行3条指令需要7个周期,而非流水线执行需要15个周期,获得了2倍的早期加速比。
2. 理想流水线加速比计算★★☆☆☆⏱ 3 min
理想流水线加速比
流水线可获得的最大性能提升,计算时假设不存在冒险、停顿和开销。当指令数量很大时,理想加速比接近流水线阶段数。
对于执行条指令的级流水线: 非流水线总周期 = (每条指令需要个完整周期) 流水线总周期 = (初始填充,之后每条指令占用1个周期) 加速比 =
计算忽略所有冒险时,4级流水线执行100条指令的加速比。
- 1
确定输入值:阶段数,指令数
- 2
计算非流水线总周期:
- 3
- 4
计算流水线总周期:
- 5
- 6
计算加速比:
- 7
- 8
对于大量指令,该结果非常接近理想加速比4,符合预期。
3. 流水线冒险的类型★★★☆☆⏱ 4 min
流水线冒险
一种会阻止下一条预定指令在分配的周期内执行的冲突,会导致一个或多个流水线停顿,降低整体吞吐量。
CIE 9618考试中考察的流水线冒险分为三大核心类:
结构冒险: 资源冲突:两条指令同时需要同一个硬件组件。
数据冒险: 依赖冲突:某条指令需要依赖前一条未完成指令的结果。
控制冒险: 流程冲突:分支或跳转指令改变了程序计数器,导致预取的指令无效。
识别以下指令序列中的冒险类型:ADD R1, R2, R3 之后执行 SUB R4, R1, R5
- 1
SUB指令需要R1的值,而ADD指令要在第5个(WB写回)流水线阶段才会写入R1。 - 2
当
SUB进入第3个(EX执行)阶段时,ADD还未将R1写入寄存器堆,因此SUB无法获得正确的操作数。 - 3
这种冲突来自两条指令之间的数据依赖,因此这是数据冒险。
测试你的理解:当条件分支的结果在取下一条指令之前还未确定时,会发生哪种类型的冒险?
结构冒险
数据冒险
控制冒险
无冒险
显示答案
2 —正确:控制冒险由分支和跳转导致的指令流改变产生。
4. 流水线冒险的解决★★★☆☆⏱ 4 min
不同的冒险可以通过不同的硬件和软件技术解决,总结如下表:
冒险类型 | 常用解决技术 |
|---|---|
结构冒险 | 分离指令缓存和数据缓存、复制硬件资源 |
数据冒险 | 操作数转发、编译器指令重排序、乱序执行 |
控制冒险 | 分支预测、延迟分支、预取分支目标指令 |
解释操作数转发如何解决上述ADD/SUB例子中的数据冒险。
- 1
ADD指令完成EX(执行)阶段后,结果就已经可以立即获得,不需要等到WB阶段写回寄存器堆。 - 2
操作数转发添加了硬件连接,将结果直接从EX/MEM流水线寄存器的输出传递到下一个EX阶段的输入。
- 3
SUB指令可以直接从ADD已完成的结果中获得正确的R1值,不需要流水线停顿,因此吞吐量得以保持。
5. 常见陷阱
错误做法:
声称流水线技术降低单条指令的延迟
原因:
流水线技术提升的是总吞吐量(每秒指令数),而非单条指令的延迟。每条指令完成所需的周期数仍然不变。
正确做法:
说明流水线技术提升整体指令吞吐量,让单位时间内可以完成更多指令。
错误做法:
颠倒加速比公式,或使用错误的总周期公式
原因:
很多考生错误地将加速比计算为,而非正确的非流水线周期与流水线周期的比值。
正确做法:
使用公式: where = number of stages, = number of instructions.
错误做法:
混淆结构冒险和数据冒险
原因:
结构冒险来自共享硬件的冲突,而非指令结果之间的依赖。
正确做法:
将硬件资源限制导致的冲突分类为结构冒险,指令依赖导致的冲突分类为数据冒险。
错误做法:
声称真实处理器总能达到理想加速比
原因:
几乎所有程序都存在不同组合的冒险,会导致流水线停顿,因此真实加速比总是低于理想最大值。
正确做法:
说明理想加速比是理论最大值,实际加速比因为冒险导致的流水线停顿会更低。
6. 速查表
概念 | 核心要点 |
|---|---|
5级流水线顺序 | IF → ID → EX → MEM → WB |
理想加速比(k很大时) | 等于流水线阶段数 |
总周期数(n级k条指令) | |
结构冒险成因 | 共享硬件资源冲突 |
数据冒险成因 | 指令依赖未完成的结果 |
控制冒险成因 | 分支/跳转改变指令流 |
数据冒险解决方法 | 操作数转发 |
控制冒险解决方法 | 分支预测、延迟分支 |
7. 常见问题
流水线技术会降低单条指令的延迟吗?
不会。流水线技术提升的是吞吐量(每秒完成的总指令数),但每条单指令所需的时钟周期数仍然和非流水线处理器相同。单条指令的延迟不会降低。
真题中的出现
AI 根据考纲规律估算的考点位置,请对照官方真题核实准确性。仅作复习重点参考。
- 2022 · 42
加速比计算与冒险识别
- 2021 · 41
流水线技术性能优势的解释
- 2023 · 43
描述解决流水线冒险的方法
下一步
流水线技术是现代处理器设计的核心概念,也是你在CIE 9618中学习更高级性能优化技术的基础。流水线技术相关题目频繁出现在4号试卷中,范围从2分的计算题到6分的解释题,因此你应该练习绘制时序图,记忆冒险类型和解决方法。掌握流水线技术也能帮助你理解现代高性能CPU如何实现比旧的非流水线设计更高的吞吐量。浏览下方相关主题,构建你应对考试的处理器基础知识体系。
