4.9 流水线概念与原理

基本概念

流水线(Pipelining)是一种指令级并行技术,它将指令执行过程划分为多个独立的阶段,不同指令的不同阶段可以重叠执行。类比于汽车装配线:不同工位同时处理不同的汽车,每个工位只完成特定的装配步骤。

吞吐量 vs 延迟

  • 延迟(Latency):一条指令从开始到完成所需的总时间
  • 吞吐量(Throughput):单位时间内完成的指令数量

流水线的基本权衡:

  • 延迟不降低:每条指令仍然需要经过所有阶段,因此单条指令的完成时间不变
  • 吞吐量大幅提升:理想情况下,每个时钟周期都能完成一条指令

理想情况

假设一条指令需要 5 个阶段,每个阶段耗时 1 个时间单位:

时序阶段1阶段2阶段3阶段4阶段5
T1I1
T2I2I1
T3I3I2I1
T4I4I3I2I1
T5I5I4I3I2I1
T6I6I5I4I3I2

在 T5 之后,每个周期都有一条指令完成——吞吐量提升了 5 倍。

流水线的非理想因素

实际流水线达不到理想情况的吞吐量,主要原因包括:

  1. 阶段划分不均:最慢的阶段决定时钟周期,其他阶段被拖慢
  2. 流水线寄存器开销:阶段之间需要寄存器缓存中间结果,带来延迟
  3. 冒险(Hazard):指令间的依赖关系导致流水线需要暂停或插入气泡
  4. 控制流指令:分支、跳转的预测错误需要清空流水线

相关笔记

链接到