Fork me on GitHub
侧边栏

CPU 的动态流水线和静态流水线

核心区别

  • 静态流水线结构:流水线各级的功能和级间连接在运行前就确定,运行中基本不变。同一时刻,整条流水线通常只能处于一种功能模式。若要换功能,往往要等流水线排空后再重新配置。
  • 动态流水线结构:流水线各级的功能、级间连接或数据路由可以在运行时动态改变。同一时刻,不同级可以执行不同功能,甚至多条不同功能的数据流可以同时在流水线中流动。

一句话:
静态是“结构固定、全局同功能、切换要排空”;动态是“结构可配、逐级可不同、运行时路由”。


结构差异对比

维度 静态流水线 动态流水线
级间连接 固定连线,或简单全局 MUX 交叉开关、多级互连、旁路网络,逐级控制
功能单元 每级功能固定 每级多功能,或可重构功能
同一时刻功能 整条流水线同一功能 不同级可不同功能,可混合数据流
功能切换 需排空,产生气泡 可重叠切换,局部动态路由
控制复杂度 低,全局模式控制 高,需仲裁、路由、依赖检测
数据流 顺序、确定 可乱序、动态路由、可能重排
结构冲突 靠串行化解决 靠路由、仲裁、多副本解决
面积 小 大
功耗 低 高
频率 容易做高 MUX/互连可能限制频率
验证 简单 状态空间大,验证复杂
实时性 WCET 易分析,确定性好 执行时间波动大,难做硬实时

运行时行为差异

静态流水线例子:
一条 4 级多功能流水线,可做加法或乘法。

  • 做加法时,所有级都按加法模式连接。
  • 想切到乘法,必须等加法数据全部流出,排空流水线,再全局重配置。
  • 切换期间有气泡,平均吞吐率下降。

动态流水线例子:
同样 4 级,但级间有交叉开关,每级可动态选加法或乘法。

  • 第 1 级取操作数,第 2 级做加法,第 3 级做移位,第 4 级写回。
  • 同时另一条乘法流可以在其他级流动,只要无结构冲突。
  • 不需要全局排空,功能可重叠。

SoC 中的典型应用

静态流水线结构常见于:

  • MCU 的经典五级按序流水线
  • DSP 的固定 MAC 流水线
  • 视频编码、加密引擎、基带处理等固定功能加速器
  • 硬实时控制、低功耗、小面积场景

动态流水线结构常见于:

  • 应用处理器大核的乱序执行后端
  • 可重构 DSP、CGRA、粗粒度可重构阵列
  • AI 加速器中的动态数据流/可配置流水
  • 软件定义无线电、多标准编解码器

实际 SoC 往往是异构混合:
小核/实时核用静态按序流水线,大核用动态乱序流水线,加速器可能静态固定,也可能动态可重构。


选型要点

  • 固定算法、硬实时、低功耗、低成本、易验证:选静态流水线结构。
  • 多标准、多模式、高性能、灵活可重构:选动态流水线结构。
  • 动态的代价:面积、功耗、时序收敛、验证复杂度都明显上升。
  • 静态的代价:功能切换有排空开销,灵活性差,多模式平均吞吐率低。

一句话总结

在 SoC 流水线结构层面:
静态流水线 = 级间连接和功能固定,同一时刻全局同功能,换功能要排空;动态流水线 = 级间连接和功能可运行时改变,同一时刻可混合功能,靠动态路由/仲裁换功能。

posted @ 2026-09-26 12:16  yooooooo  阅读(7)  评论(0)    收藏  举报