【软考备考】流水线计算详解:吞吐率、加速比、效率,看懂时空图就不用背公式(附 10 道练习)

📅 2026/7/17 9:19:31
【软考备考】流水线计算详解:吞吐率、加速比、效率,看懂时空图就不用背公式(附 10 道练习)
数据表示四篇收官之后开一个新战场流水线。软考上午题每年固定考一道流水线计算题问法就三种总时间多少、吞吐率多少、加速比多少。很多同学是背公式上考场的一紧张就串——其实这三个公式根本不用背看懂一张时空图公式是你自己推出来的。一、流水线指令执行的工厂装配线一条指令的执行可以分成几段以经典的三段为例取指 → 分析译码→ 执行。顺序执行就像小作坊取完第 1 条、分析第 1 条、执行第 1 条然后才开始第 2 条。n 条指令就是 n 个三段慢慢磨。流水线是装配线思路第 1 条指令离开取指进入分析的那一刻取指工位别闲着马上开始取第 2 条。这样三条指令在时间上是重叠的段\时间 | 1 | 2 | 3 | 4 | 5 取指 | ① | ② | ③ | | 分析 | | ① | ② | ③ | 执行 | | | ① | ② | ③ |这就是时空图横轴时间纵轴流水段。3 条指令、3 段总共 5 个时间片就全部走完顺序执行要 9 个。先建立一个关键认知概念题爱考流水线没有缩短单条指令的执行时间——指令 ① 从头到尾照样花 3 个时间片。它提高的是整体吞吐单位时间内完成的指令条数变多了。二、总时间公式看图推不用背设流水线 k 段、每段时间 Δt、执行 n 条指令。看时空图第 1 条指令要完整走过 k 段花k·Δt它一旦流出后面每过一个 Δt 就流出一条新指令剩下 n-1 条再花(n-1)·Δt。合起来T (k n - 1)·Δt对照上面的图k3、n3T (33-1)Δt 5Δt和图一致 ✓。顺序执行时间更简单每条指令 k·Δtn 条就是n·k·Δt。三、三个指标都是上面两个时间的变形1. 吞吐率 TP 完成的指令数 ÷ 总时间TP n / [(kn-1)·Δt]n 趋于无穷大时(kn-1)≈n所以最大吞吐率 TP_max 1/Δt——每个时间片流出一条这是流水线的理论极限。2. 加速比 S 顺序时间 ÷ 流水时间S n·k·Δt / [(kn-1)·Δt] nk / (kn-1)n 趋于无穷大时 S→k——最大加速比就是段数。三段流水线撑死快 3 倍很直觉三个工位同时干活。3. 效率 E时空图里被占用的格子占总格子的比例E n·k 个占用格 / [k·(kn-1)] 个总格 n / (kn-1)注意一个隐藏关系E S ÷ k加速比除以段数。三个指标一串记一个全有了。四、各段时间不相等瓶颈说了算真实的流水线各段 rarely 一样长。比如取指 2Δt、分析 2Δt、执行 1Δt——流水线还能按 1Δt 的节奏走吗不能。装配线的节奏由最慢的工位决定慢工位前会堆积快工位会饿肚子。所以流水线周期 Δt 各段时间的最大值瓶颈段时间总时间 T 各段时间之和 (n-1) × 瓶颈时间公式变了形第一条指令还是要把每段都真实走一遍所以首条花的是各段时间之和之后每过一个瓶颈时间流出一条。例题取指 2Δt、分析 2Δt、执行 1Δt执行 100 条指令。周期 max(2,2,1) 2Δt T (221) 99×2 5 198 203Δt TP 100 / 203Δt注意 203Δt ≠ (3100-1)×2Δt 204Δt——各段之和和段数×瓶颈不相等时套错公式就差这一点点软考选项里一定躺着这个错误答案等你。五、断流概念题的三分流水线理想很丰满实际会断流三种相关了解概念即可数据相关后一条指令要用前一条的结果结果还没算出来只能等控制相关转移跳转指令改变了执行顺序后面预取的指令作废结构相关硬件资源冲突比如两条指令同时要访存。记住关键词相关概念题看到就能选。六、10 道练习题基础题1~51.流水线技术的本质是 。A. 提高单条指令的执行速度 B. 减少程序中的指令条数 C. 让多条指令在时间上重叠执行提高整体吞吐 D. 提高 CPU 主频2.某流水线分为 k 段每段时间均为 Δt连续执行 n 条指令所需总时间为 。A. n·k·Δt B. (kn-1)·Δt C. (kn)·Δt D. n·Δt3.某 3 段流水线每段时间均为 2ns连续执行 10 条指令总时间为 。A. 60ns B. 22ns C. 20ns D. 24ns4.同上题条件流水线相对于顺序执行的加速比为 。A. 3 B. 2.5 C. 2 D. 105.各段时间均为 Δt 的流水线其最大吞吐率为 。A. 1/Δt B. k/Δt C. n/Δt D. 1/(k·Δt)进阶题6~10带坑6.某流水线 4 段各段时间分别为 1ns、3ns、2ns、2ns该流水线的周期应取 。A. 2ns平均值 B. 8ns各段之和 C. 1ns最快段 D. 3ns最慢段7.同上题的流水线连续执行 100 条指令总时间为 。A. 800ns B. 305ns C. 309ns D. 300ns8.某 3 段流水线每段均为 2ns执行 10 条指令其效率为 。A. 100% B. 62.5% C. 83.3% D. 25%9.关于流水线下列说法错误的是 。A. 流水线段数越多最大加速比越大 B. 转移指令可能导致流水线断流 C. 流水线能提高单条指令的执行速度 D. 数据相关会影响流水线的效率10.某指令流水线由取指2Δt、译码2Δt、执行1Δt三段组成连续执行 100 条指令其吞吐率为 。A. 100/(203Δt) B. 1/(5Δt) C. 1/(2Δt) D. 100/(303Δt)七、答案与详解1. C本题是概念题的坑王流水线不缩短单条指令的执行时间每条指令照样走完所有段它靠的是多条指令时间重叠提高吞吐。选 A 的最多务必扭转这个直觉。2. B第一条走满 k·Δt之后每 Δt 出一条(kn-1)·Δt。A 是顺序执行的时间放这儿当诱饵。3. DT (310-1)×2 12×2 24ns。选 A 的算成了顺序时间 10×3×260选 C 的是 n×Δt忘了第一条要灌满流水线。4. B加速比 顺序 ÷ 流水 60 ÷ 24 2.5。坑选 A 的用了最大加速比 段数——那是 n→∞ 的极限10 条指令还到不了。5. A最大吞吐率 1/Δt每拍出一条。和段数无关——段数多只是让接近这个极限来得更快。6. D瓶颈定周期流水线节奏由最慢段决定取 max 3ns。选 A平均值是最常见的错法——流水线不按平均节奏走慢工位前会积压。7. B各段不等套变形公式T 各段之和 (n-1)×瓶颈 (1322) 99×3 8 297 305ns。坑选 C309ns的错用等段公式 (kn-1)×Δt 103×3——首条指令花的是各段之和 8不是 4×312差就差在这里。8. CE n/(kn-1) 10/12 ≈83.3%。也可以用 E S/k 2.5/3 验算结果一致——这两条路的交汇点软考都埋过选项。9. C选错误的A 对最大加速比段数B 对控制相关D 对。C 错——第 1 题的坑换个马甲再来一次流水线提高的是吞吐单条指令的执行时间一点没变短。10. A真题原型。周期 max(2,2,1) 2ΔtT (221) 99×2 203ΔtTP 100/(203Δt)。三个干扰项全是坑B 是拿顺序时间算的100/(100×5Δt)C 是最大吞吐率1/(2Δt)——题目问的是这 100 条的实际吞吐率不是理论极限D 是错用等段公式 (3100-1)×2204…… 甚至错上加错凑出 303。这类题做完一定要问自己问的是实际还是最大。八、五句话带走流水线靠时间重叠提高吞吐单条指令一点没变快各段相等T (kn-1)·Δt各段不等周期取瓶颈T 各段之和 (n-1)×瓶颈三个指标TP n/TS nk/(kn-1)E n/(kn-1) S/k看清题目问实际还是最大——最大值都是 n→∞ 的极限TP_max 1/ΔtS_max k。下一篇预告计算机组成原理的最后一座大山——存储系统Cache 命中率与平均访问时间怎么算、主存地址怎么按字块号块内地址拆分、直接映射/全相联/组相联到底差在哪。拿下它计组部分就毕业了。