Appearance
流水线基本概念与性能指标
考情分析
流水线性能指标计算是408考研的必考大题类型,几乎每年出现。吞吐率、加速比、效率的公式及其在各种情况(含相关/冒险)下的计算是核心考点。
流水线的基本思想
将指令的执行过程分为多个阶段,每个阶段由专用硬件完成,多条指令同时处于不同阶段。
类比流水线装配工厂:同一时刻,装配线上有多件产品处于不同工序,整体吞吐量远高于串行处理。
五段流水线
标准的五级流水线(经典 MIPS 流水线):
| 阶段 | 缩写 | 操作 |
|---|---|---|
| 取指 | IF | 从指令存储器取指令,PC+4 |
| 译码/读寄存器 | ID | 译码操作码,读寄存器堆 |
| 执行 | EX | ALU 运算或计算存储器地址 |
| 访存 | MEM | 读/写数据存储器(不访存的指令空操作) |
| 写回 | WB | 将结果写回寄存器堆 |
流水线的逻辑结构
每个流水段之后必须设置流水段寄存器(也叫锁存器、段间寄存器),用于保存该阶段的输出结果,供下一阶段在下个时钟周期使用。
IF → IF/ID → ID → ID/EX → EX → EX/MEM → MEM → MEM/WB → WB
寄存器 寄存器 寄存器 寄存器段间寄存器的作用:
- 隔离相邻流水段,使各段在同一时刻可以处理不同指令
- 锁存中间结果,确保数据在下个时钟上升沿到来时才传递给下一段
段间寄存器本身有一定的延迟。时钟周期 = 最慢流水段的延迟 + 段间寄存器延迟:
流水线不能缩短单条指令的执行延迟——单条指令仍需经过全部
流水线时空图
以连续 5 条指令为例(每段耗时 Δt):
Δt 2Δt 3Δt 4Δt 5Δt 6Δt 7Δt 8Δt 9Δt
I1 IF ID EX MEM WB
I2 IF ID EX MEM WB
I3 IF ID EX MEM WB
I4 IF ID EX MEM WB
I5 IF ID EX MEM WB完成 5 条指令共需
一般地,
其中
性能指标
吞吐率(Throughput Rate, TP)
单位时间完成的指令条数:
当
最大吞吐率:
加速比(Speedup, S)
与不使用流水线(顺序执行)相比的速度提升倍数:
当
效率(Efficiency, E)
各流水段的利用率,反映硬件资源是否被充分利用:
效率
当
各指标关系
例题
例1:5 段流水线,每段时间均为 2ns,执行 100 条指令,求吞吐率 TP、加速比 S 和效率 E。
解:
不使用流水线时:
例2:某4级流水线,各段延迟为 60ps, 80ps, 70ps, 90ps,锁存器延迟 10ps。求时钟周期和最大吞吐率。
解:
注意不是各段延迟之和(300ps),而是取最慢段加锁存器延迟。
例3:某6级流水线执行
解:
流水线的分类
| 分类标准 | 类型 | 说明 |
|---|---|---|
| 按级别 | 部件级流水线 | ALU 内部流水(如浮点加法器) |
| 处理机级流水线 | 指令执行级别(IF-ID-EX-MEM-WB) | |
| 处理机间流水线 | 多台处理机串接,宏流水线 | |
| 按功能 | 单功能流水线 | 只完成一种功能(如定点加法) |
| 多功能流水线 | 可配置为多种功能 | |
| 按可否并行 | 静态流水线 | 同一时刻只能按一种功能工作 |
| 动态流水线 | 各段可同时按不同功能工作 | |
| 按有无反馈 | 线性流水线 | 数据从头到尾单向流动,无反馈 |
| 非线性流水线 | 存在反馈回路,某些段多次经过 |
408 中最常考的是处理机级、线性、静态流水线。
流水线的瓶颈
若各段执行时间不等,时钟周期由最慢的一段决定:
设计目标:尽量使各段时间均等(均衡化),以充分发挥流水线性能。
交互可视化
易混淆知识点
1. 流水线段数越多越好吗?
不是。段数增多意味着:①段间寄存器引入更多延迟,限制时钟周期进一步缩短;②单条指令经历的周期数增加,延迟变大;③数据/控制冒险的停顿代价更大(错误指令更多);④控制逻辑急剧复杂。实际设计中段数是性能和复杂度的折中。
2. 各段时间不等时,
取最慢段的延迟(+ 段间寄存器延迟)。那些比最慢段快的流水段在每个周期内会有空闲,这就是流水线瓶颈带来的效率损失。设计时应尽量让各段时间均衡。
3. 为什么流水线适合 RISC 而非 CISC?
流水线要求指令长度统一、格式规整、采用 LOAD/STORE 架构(只有访存指令访问内存)。RISC 天然满足这些条件。CISC 指令长度不等、寻址方式复杂,难以划分均匀的流水段。
考点清单
(无冒险时);顺序执行 - 最大吞吐率
,当 时趋近 - 加速比最大值为
(流水线段数),实际加速比小于 - 效率 = 加速比 / 段数,也等于时空图中"阴影面积/总面积"
- 若各段时间不等,需先确定瓶颈段时间作为统一的
- 流水线不缩短单条指令的延迟,只提升吞吐率
- 段间寄存器延迟需计入时钟周期