流水线的性能指标
三个量:吞吐率、加速比、效率。它们全部从同一张时空图算出来,而且三者之间有确定的换算关系——记住一个就能推出另外两个。
本节唯一需要背的是总时间公式,其余全是它的推论。
机制
起点:总时间
设流水线有
这个式子的来历就是5.6.1 的时空图:第一条指令要走完
不流水时的总时间(作为对照组):
每条指令老老实实走完
三个指标
吞吐率 TP
单位时间内完成的指令条数。
最大吞吐率就是”每拍一条”,永远达不到但可以逼近。
加速比 S
不流水与流水的时间之比。
加速比的上限是段数
效率 E
时空图中”有效面积”占”总面积”的比例。
“总面积”是
三者的换算关系
这组关系比三个公式本身更好用,因为算出一个就能立刻得到其余两个:
验证一下:
三个极限值也因此串在一起:
| 极限 | 含义 | |
|---|---|---|
| 每拍一条 | ||
| 快 | ||
| 没有空转 |
三者同时达到极限,因为它们本来就是同一件事的三种表述。
有停顿时怎么算
上面全部假设没有冒险。 有停顿时,公式的用法是把停顿拍数加进总时间:
或者从 CPI 的角度:
做题时按题目给的形式选一种,不要两种混用。
典型算法:给出”分支指令占 20%,每次分支浪费 2 拍;load-use 冒险占 10%,每次停 1 拍”,则
段数不是越多越好
考虑段间寄存器的固定开销
其中
段数趋于无穷时,吞吐率不是无穷,而是被段间寄存器的延迟卡死在
再加上冒险的代价,情况更差:段数越多,分支代价越大(要冲刷的段更多)、数据冒险的距离更长。所以真实处理器的段数有一个最优值,历史上 Pentium 4 把段数推到 20 级以上换主频,结果分支预测失败的代价大到得不偿失——这是”超流水线”的天花板,见 5.6.5。
与性能公式的关系
流水线动的是哪一项?
| 量 | 流水线的影响 |
|---|---|
不变(除非用软件插 nop,那时 | |
| 从 | |
| 从”整条指令”降到”最慢一段 + |
流水线是本章唯一同时改善两个因子的技术(5.2.3 那张三方案对比表)。这就是它成为所有现代处理器基础的原因。
边界
边界辨析:
/ / 各自的分母
的分母是时间 → 单位是”条/秒” 的分母是流水后的时间 → 无量纲的倍数 的分母是时空图的总面积 → 无量纲的比例,
一定是算错了。
边界辨析:加速比的上限
(段数),不是 也不是 。 且这个上限只在
时逼近。 时 ——只有一半。
边界辨析:段数越多越好吗
不是。 两个反向因素:
- 段间寄存器开销
是固定的, 的上限被卡在 - 冒险代价随段数增长——分支冲刷的段更多、数据相关的距离更长
存在最优段数。
对照速查
| 量 | 公式 | 极限( |
|---|---|---|
| 总时间 | —— | |
| 不流水 | —— | |
| 吞吐率 | ||
| 加速比 | ||
| 效率 |
| 换算 | 式子 |
|---|---|
| 效率 ← 吞吐率 | |
| 加速比 ← 效率 | |
| 加速比 ← 吞吐率 |
| 场景 | |
|---|---|
| 各段时间相同 | 该时间 |
| 各段时间不同 | 最慢段的时间 |
| 题目给段间寄存器延迟 | 最慢段 + |
考点
- 给
、 、 求三个指标:套公式,注意 取最慢段。 - 画时空图数格子:效率题常要求按面积算,画图比套公式稳。
- 有冒险时的实际 CPI:
。比 例 停 顿 拍 数 - 段数与性能的关系:能说出”段间寄存器开销 + 冒险代价”两个反向因素。
- 三者的换算:算出一个推另外两个,是节省时间的关键。
链接
- 🏠 返回总览:计算机组成原理第 5 章:中央处理器总览
- ⬅️ 上一节:5.6.3 流水线的冒险与处理
- ➡️ 下一节:5.6.5 高级流水线技术
- 📐 三因子:1.3.1 计算机的主要性能指标
- 🔗 三种执行方案:5.2.3 指令执行方案
- 📖 名词库:第 5 章名词库