vault backup: 2026-06-16 21:34:37
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
---
|
||||
tags:
|
||||
- 计算机系统结构
|
||||
- 重点复习
|
||||
- 流水线
|
||||
- 分类
|
||||
create time: 2026-06-16 21:21
|
||||
---
|
||||
|
||||
# 小题 2 — 流水线的分类
|
||||
|
||||
## 概述
|
||||
|
||||
本题考查流水线的多种分类维度:**单功能/多功能**、**静态/动态**、**线性/非线性** 的含义及区别。这是理解流水线技术的基础,常以选择题形式出现。
|
||||
|
||||
> [!tip] 考试重点
|
||||
> 需理解每种分类的**定义**和**区别**,尤其是静态多功能与动态多功能的对比,以及线性与非线性流水线的本质差异(是否允许反馈连接)。
|
||||
|
||||
## 正文
|
||||
|
||||
### 一、按功能分类:单功能 vs 多功能
|
||||
|
||||
| 分类 | 含义 | 特点 | 示例 |
|
||||
|------|------|------|------|
|
||||
| **单功能流水线** | 只能完成**一种**固定功能 | 设计简单、专用性强 | 浮点加法流水线、浮点乘法流水线 |
|
||||
| **多功能流水线** | 同一流水线可以完成**多种**不同功能 | 灵活性高、但控制复杂 | 可重构的 ALU 流水线 |
|
||||
|
||||
> [!question] 思考:为什么需要多功能流水线?
|
||||
> 现代处理器需要执行加法、乘法、逻辑运算等多种操作。如果每种操作都设计一条专用流水线,硬件开销太大。多功能流水线通过**动态重构**段间连接,用同一条流水线支持多种功能,提高了硬件利用率。
|
||||
|
||||
### 二、按工作方式分类:静态 vs 动态
|
||||
|
||||
这是**针对多功能流水线**的进一步细分,描述的是流水线在同一时刻能否同时执行多种功能。
|
||||
|
||||
| 分类 | 含义 | 同时执行多种功能? | 控制复杂度 | 性能 |
|
||||
|------|------|:------------------:|:----------:|:----:|
|
||||
| **静态流水线** | 同一时刻只能按**一种**功能方式工作 | **否**——切换功能需要排空流水线 | 低 | 较低 |
|
||||
| **动态流水线** | 同一时刻可以有**多种**功能在不同段中同时工作 | **是**——不同段可以执行不同功能的子任务 | 高 | 较高 |
|
||||
|
||||
```mermaid
|
||||
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 动态的关键区别
|
||||
>
|
||||
> **静态流水线**的工作过程:
|
||||
> 1. 当前阶段全部执行功能 A 的任务
|
||||
> 2. 功能 A 的最后一个任务**完全流出**后(排空)
|
||||
> 3. 才能开始执行功能 B 的任务
|
||||
> 4. 不允许 A 和 B 的任务在流水线中同时存在
|
||||
>
|
||||
> **动态流水线**的工作过程:
|
||||
> 1. 功能 A 的某个任务在段 3 执行
|
||||
> 2. 同一时刻,功能 B 的另一个任务可以在段 1 开始
|
||||
> 3. 各段独立工作,无需排空
|
||||
>
|
||||
> 代价:动态流水线需要更复杂的**段间互连**和**冲突检测**逻辑,因为不同功能可能需要不同的段间数据通路。
|
||||
|
||||
> [!question] 思考:静态流水线一定是单功能的吗?
|
||||
> 不一定。静态流水线可以是多功能的,只是在某一时刻只执行一种功能。例如一条既能做加法又能做乘法的流水线,在某段时间全部做加法,排空后全部做乘法——这是**静态多功能流水线**。
|
||||
|
||||
### 三、按结构分类:线性 vs 非线性
|
||||
|
||||
| 分类 | 含义 | 特点 | 调度难度 |
|
||||
|------|------|------|:--------:|
|
||||
| **线性流水线** | 各段**串行连接**,无反馈、无前馈 | 每拍可送入一个新任务 | 简单 |
|
||||
| **非线性流水线** | 各段之间存在**反馈**或**前馈**连接 | 不能每拍送入新任务,需要预约表调度 | 复杂 |
|
||||
|
||||
```mermaid
|
||||
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-非线性流水线调度]]。
|
||||
|
||||
### 四、分类体系总览
|
||||
|
||||
```mermaid
|
||||
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$ 送入一个任务),非线性流水线需要专门的调度算法。
|
||||
|
||||
## 关联笔记
|
||||
- [[计算机系统结构/复习文档/流水线技术]]
|
||||
- [[大题3-非线性流水线调度]]
|
||||
- [[小题3-控制冲突的解决措施]]
|
||||
Reference in New Issue
Block a user