4.9 流水线概念与原理
基本概念
流水线(Pipelining)是一种指令级并行技术,它将指令执行过程划分为多个独立的阶段,不同指令的不同阶段可以重叠执行。类比于汽车装配线:不同工位同时处理不同的汽车,每个工位只完成特定的装配步骤。
吞吐量 vs 延迟
- 延迟(Latency):一条指令从开始到完成所需的总时间
- 吞吐量(Throughput):单位时间内完成的指令数量
流水线的基本权衡:
- 延迟不降低:每条指令仍然需要经过所有阶段,因此单条指令的完成时间不变
- 吞吐量大幅提升:理想情况下,每个时钟周期都能完成一条指令
理想情况
假设一条指令需要 5 个阶段,每个阶段耗时 1 个时间单位:
| 时序 | 阶段1 | 阶段2 | 阶段3 | 阶段4 | 阶段5 |
|---|---|---|---|---|---|
| T1 | I1 | ||||
| T2 | I2 | I1 | |||
| T3 | I3 | I2 | I1 | ||
| T4 | I4 | I3 | I2 | I1 | |
| T5 | I5 | I4 | I3 | I2 | I1 |
| T6 | I6 | I5 | I4 | I3 | I2 |
在 T5 之后,每个周期都有一条指令完成——吞吐量提升了 5 倍。
流水线的非理想因素
实际流水线达不到理想情况的吞吐量,主要原因包括:
- 阶段划分不均:最慢的阶段决定时钟周期,其他阶段被拖慢
- 流水线寄存器开销:阶段之间需要寄存器缓存中间结果,带来延迟
- 冒险(Hazard):指令间的依赖关系导致流水线需要暂停或插入气泡
- 控制流指令:分支、跳转的预测错误需要清空流水线
相关笔记
链接到
- 上一个知识点:4.8 SEQ各阶段分析
- 下一个知识点:4.10 流水线硬件结构