Appearance
流水线 vs 单周期对比模拟器使用指南
大纲定位
五(六)1 指令流水线的基本概念
要求:理解流水线相对单周期的性能优势来自"重叠执行"而非"单条指令变快",会用时空图算吞吐率与加速比。
这个模拟器帮你看清什么
加速比公式谁都会背。做题时真正卡人的是两个"为什么"——为什么流水线时钟周期取最慢阶段、为什么加速比达不到级数
这个模拟器把两种执行方式的时空图并排画出来,还给了一个可拖的指令数滑块:你能亲眼看着加速比随指令数往理想值爬,但永远爬不到 5。爬不到的那部分就是答案。
概念本身别在这里学,见文末链接。
界面速览
| 位置 | 控件 | 作用 |
|---|---|---|
| 顶部 | 单周期执行 / 流水线执行 | 切换两个场景 |
| 参数栏 | 指令数滑块(3~8) | 拖它,右侧的总时间和加速比会实时重算 |
| 中部 | 时空图 | 横轴时钟周期、纵轴指令;五段各一色 |
| 中部 | 周期提示行 | 单周期场景下会写明"只有 1 条指令在执行,其他部件全部空闲" |
| 右侧 | 对比面板 | 两种方式的总时间和加速比 |
| 底部 | ◀ | ▶/⏸ | ▶ | 上一步 | 播放暂停 | 下一步 |
| 底部 | 速度下拉 |「重新播放」 | 0.5x / 1x / 2x | 跑到末尾才出现 |
默认参数:IF=200、ID=100、EX=200、MEM=200、WB=100(单位 ps),指令数 5。下面所有数字都按这套参数算。
场景一:单周期执行
操作:选「单周期执行」,速度调 0.5x 播放,注意看每条指令长条里灰色占了多少。
盯哪里:中部那行周期提示——它会直接告诉你此刻只有 1 条指令在跑。
该看到:每条指令是一个完整的长条,内部按五段着色,但每段只占一小截,其余全是灰色空闲。第 2 条指令必须等第 1 条整个 800ps 走完才能开始,哪怕第 1 条的 WB 早在 100ps 就结束了。
单周期的核心问题
单周期时钟周期 = 所有阶段延迟之和(因为最长指令 lw 要走全部五个阶段)。即使 add 不需要访存,它也要等满 800ps 才结束——寄存器堆、ALU 大部分时间在空闲。
数字
默认参数下(IF=200, ID=100, EX=200, MEM=200, WB=100):
- 单周期时钟 = 200+100+200+200+100 = 800ps
- 5 条指令总时间 = 5 × 800 = 4000ps
场景二:流水线执行
操作:切到「流水线执行」,用 ▶ 单步走,一拍一拍数同时亮着的段有几个。
盯哪里:从第 1 拍到第 5 拍,亮着的段从 1 个涨到 5 个。
该看到:不同指令的不同阶段同时执行:
- 时钟 1:I1=IF
- 时钟 2:I1=ID, I2=IF(2 个阶段同时工作)
- 时钟 3:I1=EX, I2=ID, I3=IF(3 个阶段同时)
- 时钟 5:所有 5 个阶段全部同时工作——流水线达到稳态
最壮观的一瞬间
当动画推进到第 5 个周期时,五个阶段全部高亮——这就是流水线的全速运转状态。模拟器会特别标注"全速运转!"。之后每个周期完成一条指令,这就是流水线"理想吞吐量"的物理含义。
数字
- 流水线时钟 = max(200, 100, 200, 200, 100) = 200ps
- 5 条指令总时间 = (5 + 4) × 200 = 1800ps
- 加速比 = 4000 / 1800 = 2.22x
拖滑块:看加速比往哪儿爬
操作:把指令数滑块从 3 一格一格拖到 8,每拖一格记一次右侧面板的加速比。
该看到:加速比单调上升,但越往后涨得越慢——它在逼近一个上限:
| N | 单周期总时间 | 流水线总时间 | 加速比 |
|---|---|---|---|
| 3 | 2400ps | 1400ps | 1.71x |
| 5 | 4000ps | 1800ps | 2.22x |
| 8 | 6400ps | 2400ps | 2.67x |
| ∞ | — | — | 4.0x(理想) |
为什么达不到 5x?
理想加速比 = 流水线级数 k = 5?不对!理想加速比 = 单周期时钟 / 流水线时钟 = 800 / 200 = 4.0x。之所以不是 5x,是因为各阶段延迟不均衡(ID 和 WB 只要 100ps,但时钟必须取最慢的 200ps)。如果五个阶段完全相等,理想加速比才等于 k=5。
三个动手任务
- 把滑块拖到 3,再拖到 8,两次都把"单周期总时间 / 流水线总时间"抄下来。 用
和 手算一遍核对。核对得上,你就真的掌握了 这个公式——它不是背来的,是数出来的。 - 在流水线场景单步到第 5 拍,确认五个段全部亮起。这一拍之后每个周期完成一条指令——这才是"理想吞吐率
" 的物理含义。第 1~4 拍是填充期,末尾还有排空期,两头都不满载,这就是加速比达不到上限的原因。 - 回答一个问题:如果把 ID 和 WB 的延迟从 100ps 改成 200ps(五段全部相等),理想加速比会变成多少?(单周期时钟变成 1000ps,流水线时钟仍是 200ps,理想加速比
。只有各段完全均衡时,理想加速比才等于级数。)
做题应用
遇到流水线加速比的计算题:
- 确定
(级数)和各阶段延迟 - 流水线时钟
- 代入
算总时间,再比出加速比 - 拿这个模拟器验证一遍
概念去哪里学
本文只讲怎么用这个模拟器。它演示到的知识点都有专文,别在这里学概念: