流水线技术¶
概述¶
流水线技术
将指令执行过程分解为多个子过程,每个子过程由专门的功能部件并行执行,提高CPU吞吐率。
流水线基本原理¶
流水线原理
类似于工业生产流水线,多条指令在不同阶段同时执行。
指令流水线¶
graph LR
A[取指IF] --> B[译码ID]
B --> C[执行EX]
C --> D[访存MEM]
D --> E[写回WB]
style A fill:#E3F2FD
style B fill:#E8F5E9
style C fill:#FFF3E0
style D fill:#F3E5F5
style E fill:#FCE4EC
流水线执行过程¶
时空图
展示多条指令在流水线各阶段的执行情况。
| Text Only | |
|---|---|
流水线性能指标¶
吞吐率(TP)¶
吞吐率
单位时间内流水线完成的指令数。
公式: TP = n / T
其中: - n: 指令数 - T: 完成n条指令所需时间
加速比(S)¶
加速比
流水线方式与串行方式的速度比值。
公式: S = T串行 / T流水线
效率(E)¶
效率
流水线设备利用率。
公式: E = 有效时空区数 / 总时空区数
流水线相关¶
流水线相关
引起流水线停顿的因素。
1. 结构相关¶
结构相关(资源冲突)
多条指令同时使用同一资源。
解决方法:
- 资源重复设置
- 指令延迟执行
2. 数据相关¶
数据相关(数据冲突)
后续指令依赖前面指令的结果。
类型:
- RAW(写后读): 最常见的数据相关
- WAR(读后写)
- WAW(写后写)
解决方法:
- 暂停流水线
- 数据前递(Forwarding)
- 乱序执行
3. 控制相关¶
控制相关(分支冲突)
分支指令引起流水线断流。
解决方法:
- 分支预测
- 延迟槽技术
- 预取分支目标
流水线分类¶
按功能分类¶
流水线类型
- 指令流水线: 执行指令的流水线
- 运算流水线: 执行运算的流水线
- 存储流水线: 访问存储器的流水线
按级别分类¶
| 级别 | 说明 | 示例 |
|---|---|---|
| 部件级 | 功能部件内部流水线 | 浮点加法器流水线 |
| 处理机级 | 指令执行流水线 | 5级指令流水线 |
| 处理机间级 | 多处理机流水线 | 宏流水线 |
超标量技术¶
超标量(Superscalar)
每个时钟周期可发射多条指令。
特点:
- 多条流水线并行
- 动态指令调度
- 乱序执行
超流水线技术¶
超流水线(Superpipeline)
将流水线划分得更细,提高时钟频率。
特点:
- 流水线级数更多
- 时钟周期更短
- 每级工作更简单