CPU 的动态流水线和静态流水线
核心区别
- 静态流水线结构:流水线各级的功能和级间连接在运行前就确定,运行中基本不变。同一时刻,整条流水线通常只能处于一种功能模式。若要换功能,往往要等流水线排空后再重新配置。
- 动态流水线结构:流水线各级的功能、级间连接或数据路由可以在运行时动态改变。同一时刻,不同级可以执行不同功能,甚至多条不同功能的数据流可以同时在流水线中流动。
一句话:
静态是“结构固定、全局同功能、切换要排空”;动态是“结构可配、逐级可不同、运行时路由”。
结构差异对比
| 维度 | 静态流水线 | 动态流水线 |
|---|---|---|
| 级间连接 | 固定连线,或简单全局 MUX | 交叉开关、多级互连、旁路网络,逐级控制 |
| 功能单元 | 每级功能固定 | 每级多功能,或可重构功能 |
| 同一时刻功能 | 整条流水线同一功能 | 不同级可不同功能,可混合数据流 |
| 功能切换 | 需排空,产生气泡 | 可重叠切换,局部动态路由 |
| 控制复杂度 | 低,全局模式控制 | 高,需仲裁、路由、依赖检测 |
| 数据流 | 顺序、确定 | 可乱序、动态路由、可能重排 |
| 结构冲突 | 靠串行化解决 | 靠路由、仲裁、多副本解决 |
| 面积 | 小 | 大 |
| 功耗 | 低 | 高 |
| 频率 | 容易做高 | MUX/互连可能限制频率 |
| 验证 | 简单 | 状态空间大,验证复杂 |
| 实时性 | WCET 易分析,确定性好 | 执行时间波动大,难做硬实时 |
运行时行为差异
静态流水线例子:
一条 4 级多功能流水线,可做加法或乘法。
- 做加法时,所有级都按加法模式连接。
- 想切到乘法,必须等加法数据全部流出,排空流水线,再全局重配置。
- 切换期间有气泡,平均吞吐率下降。
动态流水线例子:
同样 4 级,但级间有交叉开关,每级可动态选加法或乘法。
- 第 1 级取操作数,第 2 级做加法,第 3 级做移位,第 4 级写回。
- 同时另一条乘法流可以在其他级流动,只要无结构冲突。
- 不需要全局排空,功能可重叠。
SoC 中的典型应用
静态流水线结构常见于:
- MCU 的经典五级按序流水线
- DSP 的固定 MAC 流水线
- 视频编码、加密引擎、基带处理等固定功能加速器
- 硬实时控制、低功耗、小面积场景
动态流水线结构常见于:
- 应用处理器大核的乱序执行后端
- 可重构 DSP、CGRA、粗粒度可重构阵列
- AI 加速器中的动态数据流/可配置流水
- 软件定义无线电、多标准编解码器
实际 SoC 往往是异构混合:
小核/实时核用静态按序流水线,大核用动态乱序流水线,加速器可能静态固定,也可能动态可重构。
选型要点
- 固定算法、硬实时、低功耗、低成本、易验证:选静态流水线结构。
- 多标准、多模式、高性能、灵活可重构:选动态流水线结构。
- 动态的代价:面积、功耗、时序收敛、验证复杂度都明显上升。
- 静态的代价:功能切换有排空开销,灵活性差,多模式平均吞吐率低。
一句话总结
在 SoC 流水线结构层面:
静态流水线 = 级间连接和功能固定,同一时刻全局同功能,换功能要排空;动态流水线 = 级间连接和功能可运行时改变,同一时刻可混合功能,靠动态路由/仲裁换功能。


浙公网安备 33010602011771号