精简版 · 小杯2026-08 冻结,已停止更新(发布前修订了 4 处已知错误)。后续勘误与新增内容只在正式版。看正式版(中杯)→
Skip to content

流水线 vs 单周期对比模拟器使用指南

大纲定位

五(六)1 指令流水线的基本概念

要求:理解流水线相对单周期的性能优势来自"重叠执行"而非"单条指令变快",会用时空图算吞吐率与加速比。

这个模拟器帮你看清什么

加速比公式谁都会背。做题时真正卡人的是两个"为什么"——为什么流水线时钟周期取最慢阶段为什么加速比达不到级数 k

这个模拟器把两种执行方式的时空图并排画出来,还给了一个可拖的指令数滑块:你能亲眼看着加速比随指令数往理想值爬,但永远爬不到 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单周期总时间流水线总时间加速比
32400ps1400ps1.71x
54000ps1800ps2.22x
86400ps2400ps2.67x
4.0x(理想)

为什么达不到 5x?

理想加速比 = 流水线级数 k = 5?不对!理想加速比 = 单周期时钟 / 流水线时钟 = 800 / 200 = 4.0x。之所以不是 5x,是因为各阶段延迟不均衡(ID 和 WB 只要 100ps,但时钟必须取最慢的 200ps)。如果五个阶段完全相等,理想加速比才等于 k=5。

三个动手任务

  1. 把滑块拖到 3,再拖到 8,两次都把"单周期总时间 / 流水线总时间"抄下来。N×800(N+4)×200 手算一遍核对。核对得上,你就真的掌握了 (n+k1)Δt 这个公式——它不是背来的,是数出来的。
  2. 在流水线场景单步到第 5 拍,确认五个段全部亮起。这一拍之后每个周期完成一条指令——这才是"理想吞吐率 1/Δt" 的物理含义。第 1~4 拍是填充期,末尾还有排空期,两头都不满载,这就是加速比达不到上限的原因。
  3. 回答一个问题:如果把 ID 和 WB 的延迟从 100ps 改成 200ps(五段全部相等),理想加速比会变成多少?(单周期时钟变成 1000ps,流水线时钟仍是 200ps,理想加速比 =1000/200=5=k只有各段完全均衡时,理想加速比才等于级数。

做题应用

遇到流水线加速比的计算题:

  1. 确定 k(级数)和各阶段延迟
  2. 流水线时钟 Δt=max(各阶段延迟)
  3. 代入 (n+k1)Δt 算总时间,再比出加速比
  4. 拿这个模拟器验证一遍

概念去哪里学

本文只讲怎么用这个模拟器。它演示到的知识点都有专文,别在这里学概念:

真题练习