
适合读者软考中级备考同学阅读时间3.5分钟内容流水线基本概念、时空图、吞吐率、加速比计算公式与例题1. 什么是流水线流水线是一种将指令执行过程分解为多个子阶段、让不同指令的子阶段并行执行的技术。类似于工厂的装配线每个阶段完成一部分工作多个产品同时在不同的阶段被加工。核心思想提高硬件资源的利用率缩短程序的整体执行时间。典型指令流水线阶段五级流水取指IF译码ID执行EX访存MEM回写WB2. 流水线的基本参数流水线深度级数流水线被划分的阶段个数记为 ( k )。流水线周期每个阶段花费的时间。通常各阶段时间相等记为 ( \Delta t )。若各阶段时间不等则流水线周期取最长时间段的长度。任务总数需要执行的任务指令数量记为 ( n )。3. 流水线执行时间计算3.1 不采用流水线串行执行执行 ( n ) 条指令每条指令花费 时间T串行n⋅k⋅Δt T_{\text{串行}} n \cdot k \cdot \Delta tT串行n⋅k⋅Δt3.2 采用流水线第一条指令需要 ( k \cdot \Delta t ) 时间完成填满流水线之后每隔 ( \Delta t ) 时间完成一条指令T流水线k⋅Δt(n−1)⋅Δt(kn−1)⋅Δt T_{\text{流水线}} k \cdot \Delta t (n-1) \cdot \Delta t (k n - 1) \cdot \Delta tT流水线k⋅Δt(n−1)⋅Δt(kn−1)⋅Δt示例若 ( k5 )( n100 )( \Delta t 1,\text{ns} )T流水线(5100−1)×1104 ns T_{\text{流水线}} (5100-1) \times 1 104\,\text{ns}T流水线(5100−1)×1104ns串行时间 ( 100 \times 5 500,\text{ns} )明显减少。4. 吞吐率Throughput吞吐率表示单位时间内完成的任务数量。4.1 最大吞吐率流水线稳定后每个时钟周期完成一条指令吞吐率max1Δt任务/单位时间 \text{吞吐率}_{\text{max}} \frac{1}{\Delta t} \quad \text{任务/单位时间}吞吐率maxΔt1任务/单位时间4.2 实际吞吐率考虑启动和排空对于 ( n ) 条指令吞吐率nT流水线n(kn−1)⋅Δt \text{吞吐率} \frac{n}{T_{\text{流水线}}} \frac{n}{(k n - 1) \cdot \Delta t}吞吐率T流水线n(kn−1)⋅Δtn当 ( n ) 很大时实际吞吐率趋近于 ( 1/\Delta t )。5. 加速比Speedup加速比表示流水线方式比非流水线方式快了多少倍。ST串行T流水线n⋅k⋅Δt(kn−1)⋅Δtn⋅kkn−1 S \frac{T_{\text{串行}}}{T_{\text{流水线}}} \frac{n \cdot k \cdot \Delta t}{(k n - 1) \cdot \Delta t} \frac{n \cdot k}{k n - 1}ST流水线T串行(kn−1)⋅Δtn⋅k⋅Δtkn−1n⋅k当 ( n \to \infty ) 时( S \to k )。即理论最大加速比等于流水线级数 ( k )。6. 完整计算示例题目某指令流水线分为4级每级耗时分别为 2ns、3ns、2ns、2ns。现需连续执行100条指令求流水线的实际吞吐率和加速比相对于串行执行。解流水线周期 ( \Delta t \max(2,3,2,2) 3,\text{ns} )流水线执行时间T流水线(kn−1)⋅Δt(4100−1)×3103×3309 ns T_{\text{流水线}} (k n - 1) \cdot \Delta t (4 100 - 1) \times 3 103 \times 3 309\,\text{ns}T流水线(kn−1)⋅Δt(4100−1)×3103×3309ns串行执行时间T串行n×∑各段时间100×(2322)100×9900 ns T_{\text{串行}} n \times \sum \text{各段时间} 100 \times (2322) 100 \times 9 900\,\text{ns}T串行n×∑各段时间100×(2322)100×9900ns加速比S900309≈2.91 S \frac{900}{309} \approx 2.91S309900≈2.91实际吞吐率吞吐率nT流水线100309≈0.324 条/ns3.24×108 条/秒 \text{吞吐率} \frac{n}{T_{\text{流水线}}} \frac{100}{309} \approx 0.324 \,\text{条/ns} 3.24 \times 10^8 \,\text{条/秒}吞吐率T流水线n309100≈0.324条/ns3.24×108条/秒答案吞吐率约 ( 0.324 ) 条/ns加速比约 ( 2.91 )。7. 流水线冒险常见考点流水线性能提升的前提是每个阶段都能连续工作。但以下情况会打断流水线产生冒险冒险类型原因示例结构冒险硬件资源冲突同一周期取指和访存都需访问内存数据冒险指令间数据依赖下一条指令需要上一条指令的运算结果控制冒险跳转指令改变执行流条件分支导致下一条指令不确定应对方法插入空操作气泡、转发旁路、分支预测等。8. 经典例题题目1某流水线有5级每级1ns。连续执行200条指令求流水线执行时间和加速比相对于单条指令5ns的串行方式。解T流水线(5200−1)×1204 ns T_{\text{流水线}} (5200-1)\times 1 204\,\text{ns}T流水线(5200−1)×1204nsT串行200×51000 ns T_{\text{串行}} 200 \times 5 1000\,\text{ns}T串行200×51000nsS1000204≈4.90 S \frac{1000}{204} \approx 4.90S2041000≈4.90答案204ns约4.90题目2概念以下哪个不是流水线技术的主要优点A. 提高指令吞吐率B. 减少单条指令的执行时间C. 提高硬件资源利用率D. 缩短程序整体执行时间答案B流水线不减少单条指令的执行延迟只是提高吞吐率题目3若某流水线最大吞吐率为 ( 0.5 ) 条/ns则其时钟周期至少为多少解最大吞吐率Δt10.52 ns \Delta t \frac{1}{0.5} 2\,\text{ns}Δt0.512ns答案2ns9. 记忆口诀流水线分多阶段周期取最长时间。首条需 k 个周期之后每个出一件。吞吐率看单位量加速比理论等于级数限。10. 给备考同学的一句话流水线计算题直接套公式流水线总时间T流水线(kn−1)⋅Δt T_{\text{流水线}} (k n - 1) \cdot \Delta tT流水线(kn−1)⋅Δt加速比Sn⋅kkn−1 S \frac{n \cdot k}{k n - 1}Skn−1n⋅k吞吐率吞吐率nT流水线 \text{吞吐率} \frac{n}{T_{\text{流水线}}}吞吐率T流水线n注意若各段时间不等(Δt)( \Delta t )(Δt)取最大值。考试时先判断流水线是否平衡再代入公式。本专栏日更2篇点击头像 → 专栏《软考中级高频考点》订阅需要“计算机系统知识”完整思维导图私信回复“软考计算机”免费获取#软考中级 #软件设计师 #流水线技术 #吞吐率 #加速比 #计算机系统知识