Appearance
流水线基本概念与性能指标
大纲定位
五(六)1、2 指令流水线的基本概念、基本实现
要求:理解流水线把指令拆段重叠执行的思想,能画时空图,掌握吞吐率、加速比、效率三个指标的定义与计算。
考情分析
流水线性能指标计算常以大题形式出现。吞吐率、加速比、效率的公式,及其在含相关/冒险等各种情况下的计算,是这一节的核心。
流水线的基本思想
将指令的执行过程分为多个阶段,每个阶段由专用硬件完成,多条指令同时处于不同阶段。
类比流水线装配工厂:同一时刻,装配线上有多件产品处于不同工序,整体吞吐量远高于串行处理。
五段流水线
标准的五级流水线(经典 MIPS 流水线):
| 阶段 | 缩写 | 操作 |
|---|---|---|
| 取指 | IF | 从指令存储器取指令,PC+4 |
| 译码/读寄存器 | ID | 译码操作码,读寄存器堆 |
| 执行 | EX | ALU 运算或计算存储器地址 |
| 访存 | MEM | 读/写数据存储器(不访存的指令空操作) |
| 写回 | WB | 将结果写回寄存器堆 |
流水线的逻辑结构
每个流水段之后必须设置流水段寄存器(也叫锁存器、段间寄存器),用于保存该阶段的输出结果,供下一阶段在下个时钟周期使用。
IF → IF/ID → ID → ID/EX → EX → EX/MEM → MEM → MEM/WB → WB
寄存器 寄存器 寄存器 寄存器段间寄存器的作用:
- 隔离相邻流水段,使各段在同一时刻可以处理不同指令
- 锁存中间结果,确保数据在下个时钟上升沿到来时才传递给下一段
段间寄存器本身有一定的延迟。时钟周期 = 最慢流水段的延迟 + 段间寄存器延迟:
流水线不能缩短单条指令的执行延迟——单条指令仍需经过全部

(袁春风《计算机组成与系统结构》第 3 版,见文末教材出处)
流水线相对单周期唯一的结构改动,就是在相邻两段之间插入段寄存器(图中竖直的窄条)。它们负责把上一段的结果连同还没用到的控制信号一起锁存、传给下一段——没有段寄存器,五条指令的信号会在通路上互相覆盖。
流水线时空图
以连续 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 讨论的默认对象是处理机级、线性、静态流水线。
流水线的瓶颈
若各段执行时间不等,时钟周期由最慢的一段决定:
设计目标:尽量使各段时间均等(均衡化),以充分发挥流水线性能。
什么样的指令系统有利于流水线
流水线要跑得顺,靠的是每一段的工作量都可预测、都能在一个时钟周期内做完。指令系统的三个设计选择直接决定这一点:
| 指令系统特点 | 有利吗 | 对流水线的具体好处 |
|---|---|---|
| 指令格式规整且长度一致 | ✓ | 定长 |
| 指令和数据按边界对齐存放 | ✓ | 对齐 |
| 只有 Load/Store 指令能访问存储器 | ✓ | 只有这两类指令经过 MEM 段,其余指令 MEM 段直接空过;否则运算指令也要访存,MEM 段的工作量随指令而变 |
三条是同一个诉求的三种说法:让每一段的耗时固定下来。
边界对齐这一条最容易漏
前两条一眼能看出和流水线有关,"数据按边界对齐"却像是存储器章节的事。关键在于把它翻译成时间:
流水线最怕的就是"这条指令的某一段特别慢"——时钟周期得按最慢的来,所有指令一起陪绑。
对齐规则本身见 数据对齐与大小端。
这三条也正是 RISC 的设计特征,所以说 RISC 天生适合流水线——它不是碰巧适合,是照着流水线的需求设计出来的。详见 CISC 与 RISC。
交互可视化
易混淆知识点
1. 流水线段数越多越好吗?
不是。段数增多意味着:①段间寄存器引入更多延迟,限制时钟周期进一步缩短;②单条指令经历的周期数增加,延迟变大;③数据/控制冒险的停顿代价更大(错误指令更多);④控制逻辑急剧复杂。实际设计中段数是性能和复杂度的折中。
2. 各段时间不等时,
取最慢段的延迟(+ 段间寄存器延迟)。那些比最慢段快的流水段在每个周期内会有空闲,这就是流水线瓶颈带来的效率损失。设计时应尽量让各段时间均衡。
3. 为什么流水线适合 RISC 而非 CISC?
流水线要求指令长度统一、格式规整、采用 LOAD/STORE 架构(只有访存指令访问内存)。RISC 天然满足这些条件。CISC 指令长度不等、寻址方式复杂,难以划分均匀的流水段。
考点清单
(无冒险时);顺序执行 - 最大吞吐率
,当 时趋近 - 加速比最大值为
(流水线段数),实际加速比小于 - 效率 = 加速比 / 段数,也等于时空图中"阴影面积/总面积"
- 若各段时间不等,需先确定瓶颈段时间作为统一的
- 流水线不缩短单条指令的延迟,只提升吞吐率
- 段间寄存器延迟需计入时钟周期
- 有利于流水线的三个指令系统特点:格式规整且定长、指令和数据按边界对齐、只有 Load/Store 访存——三条都是为了让各段耗时固定
真题练习
相关真题(13题)
教材出处
- 5 段流水线数据通路及段寄存器(图 6.5):袁春风《计算机组成与系统结构》第 3 版 §6.2 流水线处理器的实现,印刷页 p169