| 项目 | 值 |
|---|---|
| 定义 | 同一条流水线的各段可以实现不同功能(加法、乘法等) |
| 对比 | 静态流水线:各段固定功能,不同时刻只执行一种操作 |
| 特点 | 灵活性高,但控制复杂、硬件成本高 |
| 典型应用 | 超级计算机、高性能处理器 |
动态流水线(Dynamic Pipeline)又称为多功能流水线,是指流水线的各个功能段在同一时刻可以根据需要执行不同类型的操作。例如,同一时刻流水线的不同段可以分别执行浮点加法、整数乘法和数据传送。
与之对应的是静态流水线(Static Pipeline):流水线各段的功能在某一时刻是固定的,同一时刻只能执行一种类型的操作。当需要切换操作类型时,必须等流水线排空后再重新配置。
| 特性 | 静态流水线 | 动态流水线 |
|---|---|---|
| 功能切换 | 需排空流水线 | 不需排空,可动态切换 |
| 吞吐率 | 较低(切换时有空闲段) | 较高(无空闲段浪费) |
| 控制复杂度 | 简单 | 复杂 |
| 硬件成本 | 低 | 高 |
| 典型场景 | 功能单一的处理器 | 高性能多功能处理器 |
| 性质 | 静态流水线 | 动态流水线 |
|---|---|---|
| 吞吐率 | 受操作切换影响 | 操作切换不影响吞吐率 |
| 流水线利用率 | 切换时部分段闲置 | 各段始终被利用 |
| 数据冲突处理 | 较简单 | 需更复杂的旁路和调度 |
| 控制逻辑 | 固定译码 | 动态分配和调度 |
| 考法 | 解题套路 |
|---|---|
| 静态 vs 动态流水线的区别 | 从功能灵活性、吞吐率、控制复杂度三方面对比 |
| 流水线排空问题 | 静态流水线切换操作时需排空,计算排空带来的性能损失 |
| 流水线性能计算 | 动态流水线无排空开销,吞吐率计算时不需要额外时间片 |
| 分析流水线时空图 | 静态流水线在切换操作时出现空闲段,动态流水线无此问题 |
切换操作类型时,对比两种流水线的段占用:静态需"排空"(出现空闲段),动态各段始终被利用。
用 调度表 演示动态调度(乱序执行)的核心流程:每条指令经历 发射 →(等待)→ 执行 → 写回;同一周期多段可同时做不同类型操作(加/乘/减),并通过旁路转发(CDB 广播)解除 RAW、寄存器重命名消除 WAR/WAW。
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。