6.0 KiB
tags, create time
| tags | create time | ||||
|---|---|---|---|---|---|
|
2026-06-16 21:21 |
小题 2 — 流水线的分类
概述
本题考查流水线的多种分类维度:单功能/多功能、静态/动态、线性/非线性 的含义及区别。这是理解流水线技术的基础,常以选择题形式出现。
[!tip] 考试重点 需理解每种分类的定义和区别,尤其是静态多功能与动态多功能的对比,以及线性与非线性流水线的本质差异(是否允许反馈连接)。
正文
一、按功能分类:单功能 vs 多功能
| 分类 | 含义 | 特点 | 示例 |
|---|---|---|---|
| 单功能流水线 | 只能完成一种固定功能 | 设计简单、专用性强 | 浮点加法流水线、浮点乘法流水线 |
| 多功能流水线 | 同一流水线可以完成多种不同功能 | 灵活性高、但控制复杂 | 可重构的 ALU 流水线 |
[!question] 思考:为什么需要多功能流水线? 现代处理器需要执行加法、乘法、逻辑运算等多种操作。如果每种操作都设计一条专用流水线,硬件开销太大。多功能流水线通过动态重构段间连接,用同一条流水线支持多种功能,提高了硬件利用率。
二、按工作方式分类:静态 vs 动态
这是针对多功能流水线的进一步细分,描述的是流水线在同一时刻能否同时执行多种功能。
| 分类 | 含义 | 同时执行多种功能? | 控制复杂度 | 性能 |
|---|---|---|---|---|
| 静态流水线 | 同一时刻只能按一种功能方式工作 | 否——切换功能需要排空流水线 | 低 | 较低 |
| 动态流水线 | 同一时刻可以有多种功能在不同段中同时工作 | 是——不同段可以执行不同功能的子任务 | 高 | 较高 |
graph LR
subgraph Static["Static Pipeline"]
S1["Phase 1: All ADD"] --> S2["Phase 2: All MUL"]
S2 --> S3["Phase 3: All ADD"]
end
subgraph Dynamic["Dynamic Pipeline"]
D1["Segment 1: ADD task"] --> D2["Segment 2: MUL task"]
D2 --> D3["Segment 3: ADD task"]
end
[!note] 静态 vs 动态的关键区别
静态流水线的工作过程:
- 当前阶段全部执行功能 A 的任务
- 功能 A 的最后一个任务完全流出后(排空)
- 才能开始执行功能 B 的任务
- 不允许 A 和 B 的任务在流水线中同时存在
动态流水线的工作过程:
- 功能 A 的某个任务在段 3 执行
- 同一时刻,功能 B 的另一个任务可以在段 1 开始
- 各段独立工作,无需排空
代价:动态流水线需要更复杂的段间互连和冲突检测逻辑,因为不同功能可能需要不同的段间数据通路。
[!question] 思考:静态流水线一定是单功能的吗? 不一定。静态流水线可以是多功能的,只是在某一时刻只执行一种功能。例如一条既能做加法又能做乘法的流水线,在某段时间全部做加法,排空后全部做乘法——这是静态多功能流水线。
三、按结构分类:线性 vs 非线性
| 分类 | 含义 | 特点 | 调度难度 |
|---|---|---|---|
| 线性流水线 | 各段串行连接,无反馈、无前馈 | 每拍可送入一个新任务 | 简单 |
| 非线性流水线 | 各段之间存在反馈或前馈连接 | 不能每拍送入新任务,需要预约表调度 | 复杂 |
graph LR
subgraph Linear["Linear Pipeline"]
L1["S1"] --> L2["S2"] --> L3["S3"] --> L4["S4"]
end
subgraph NonLinear["Non-Linear Pipeline"]
NL1["S1"] --> NL2["S2"]
NL2 --> NL3["S3"]
NL3 --> NL4["S4"]
NL3 -.->|"Feedback"| NL1
end
[!note] 线性 vs 非线性的本质区别
线性流水线:数据单向流动,各段只使用一次。任务完成后立即释放所有段,下一拍可送入新任务。吞吐率恒定为 $1/\Delta t$(
\Delta t为最长段时间)。非线性流水线:由于存在反馈连接,同一个任务可能多次使用某一段。如果新任务进入的间隔太小,就会产生段冲突——两个任务在同一时刻争用同一段。因此需要通过预约表分析来确定安全的进入间隔。
非线性流水线的调度是本课程的核心难点,详见 大题3-非线性流水线调度。
四、分类体系总览
graph TD
ROOT["Pipeline Classification"] --> F["By Function"]
ROOT --> W["By Working Mode"]
ROOT --> S["By Structure"]
F --> F1["Single-Function"]
F --> F2["Multi-Function"]
W --> W1["Static"]
W --> W2["Dynamic"]
S --> S1["Linear"]
S --> S2["Non-Linear"]
F2 --> W
完整的分类组合关系:
| 组合类型 | 含义 | 实例 |
|---|---|---|
| 单功能线性 | 只做一种功能,段间串行 | 浮点加法流水线 |
| 单功能非线性 | 只做一种功能,有反馈连接 | 某些迭代计算流水线 |
| 多功能静态线性 | 多种功能但需排空后切换,无反馈 | 早期向量处理器 |
| 多功能静态非线性 | 多种功能需排空切换,有反馈 | 复杂运算单元 |
| 多功能动态线性 | 同时执行多种功能,无反馈 | 高端处理器的执行单元 |
| 多功能动态非线性 | 同时执行多种功能,有反馈 | 最复杂的情况 |
[!warning] 考试常见陷阱
- "静态"和"线性"是两个独立的维度,不要混淆。静态/动态描述的是多功能流水线的工作方式;线性/非线性描述的是段间连接结构。
- 单功能流水线无所谓静态/动态(因为它只有一种功能,不存在"切换"的问题)。
- 线性流水线的调度是确定性的(每
\Delta t送入一个任务),非线性流水线需要专门的调度算法。