Skip to content

408 > ### 计算机组成原理 > #### CO-05-05 指令流水线基本原理


一、定位信息

项目内容
所属章节第5章 中央处理器
知识单元编号CO-05-05
主题指令流水线基本原理
考纲要求掌握指令流水线的基本概念、工作原理和性能分析
历年考查频率高频(选择题+综合题)
预计分值2-6分(选择)/ 8-12分(综合)

二、知识点讲解

1. 流水线的基本概念

指令流水线(Instruction Pipelining)是一种将指令执行过程分成多个阶段,使多条指令在不同阶段并行执行的技术。其核心思想类似于工厂的装配流水线——每个工位完成一道工序,多个产品在不同工位同时加工。

与传统执行方式的对比

对比维度顺序执行流水线执行
执行方式一条指令完成后才开始下一条多条指令在不同阶段并行执行
吞吐率每n个时钟周期完成1条指令理想情况下每1个时钟周期完成1条指令
硬件利用率低(每个时刻只用到部分硬件)高(多个阶段的硬件同时工作)
延迟单条指令延迟不变单条指令延迟不变(甚至略有增加)
吞吐量显著提高

2. 五级流水线

经典的指令流水线将指令执行过程分为5个阶段(5级流水线):

IF(Instruction Fetch,取指)

  • 从指令存储器中取出当前指令
  • PC寄存器提供指令地址
  • 取出的指令送入IF/ID流水线寄存器
  • PC更新为下一条指令地址

ID(Instruction Decode,译码/寄存器读)

  • 对指令进行译码,确定操作类型和操作数
  • 从寄存器组中读取源操作数
  • 生成立即数(如有)
  • 结果送入ID/EX流水线寄存器

EX(Execute,执行/地址计算)

  • ALU执行算术/逻辑运算
  • 或计算访存地址(对于Load/Store指令)
  • 或计算分支目标地址
  • 结果送入EX/MEM流水线寄存器

MEM(Memory Access,访存)

  • Load指令:从数据存储器读取数据
  • Store指令:将数据写入数据存储器
  • 其他指令:此阶段为空操作(NOP)
  • 结果送入MEM/WB流水线寄存器

WB(Write Back,写回)

  • 将运算结果或从存储器读出的数据写回寄存器组

3. 流水线寄存器

流水线的每个阶段之间都有一个流水线寄存器(Pipeline Register),用于暂存阶段间传递的数据和控制信号。

流水线寄存器的作用:

  • 隔离各阶段:每个阶段可以独立工作,不受其他阶段影响
  • 暂存中间结果:保存上一阶段的输出,供下一阶段使用
  • 传递控制信号:将控制信息沿流水线向下传递

五个流水线寄存器分别为:IF/ID、ID/EX、EX/MEM、MEM/WB。

4. 流水线的性能指标

(1)吞吐率(Throughput, TP)

吞吐率是指单位时间内流水线完成的指令数。

TP=n(k+n1)×ΔtTP = \frac{n}{(k+n-1) \times \Delta t}

其中:n为指令数,k为流水线级数,Δt为每个流水段的时间。

当n→∞时,最大吞吐率:

TPmax=1ΔtTP_{max} = \frac{1}{\Delta t}

(2)加速比(Speedup, S)

加速比是指完成同样任务,顺序执行时间与流水线执行时间之比。

S=T顺序T流水线=n×k×Δt(k+n1)×Δt=nkk+n1S = \frac{T_{顺序}}{T_{流水线}} = \frac{n \times k \times \Delta t}{(k+n-1) \times \Delta t} = \frac{nk}{k+n-1}

当n→∞时,最大加速比:

Smax=kS_{max} = k

即最大加速比等于流水线级数。

(3)效率(Efficiency, E)

效率是指流水线中各功能段的利用率。

E=Sk=nk+n1E = \frac{S}{k} = \frac{n}{k+n-1}

当n→∞时,效率趋近于1(100%)。

5. 流水线时空图

流水线的执行过程可以用时空图(Space-Time Diagram)来表示:

以4级流水线(IF/ID/EX/WB)执行4条指令为例:

时间 →    T1    T2    T3    T4    T5    T6    T7
指令1:   [IF]  [ID]  [EX]  [WB]
指令2:         [IF]  [ID]  [EX]  [WB]
指令3:               [IF]  [ID]  [EX]  [WB]
指令4:                     [IF]  [ID]  [EX]  [WB]

从时空图可以看出:

  • 流水线的"装入"阶段(前k-1个周期):流水线逐步充满
  • 流水线的"排空"阶段(后k-1个周期):流水线逐步排空
  • 流水线的"满载"阶段(中间部分):所有功能段都在工作

总执行时间 = (k + n - 1) × Δt = (4 + 4 - 1) × Δt = 7Δt

6. 流水线的特点与限制

流水线的基本假设

  1. 每个阶段的执行时间相等(取最长阶段的时间作为时钟周期)
  2. 各阶段之间没有数据依赖冲突
  3. 指令之间没有控制依赖冲突
  4. 硬件资源充足,没有结构冲突

实际中影响流水线性能的因素

  • 结构冒险:多条指令同时需要使用同一硬件资源
  • 数据冒险:后续指令需要使用前面指令的运算结果
  • 控制冒险:分支指令导致流水线的执行方向不确定

这三种冒险将在CO-05-06中详细讨论。

7. 流水线与非流水线的本质区别

流水线并没有减少单条指令的执行时间(实际上由于流水线寄存器的开销,单条指令的延迟可能略有增加),它减少的是指令序列的平均执行时间。通过让多条指令在不同阶段并行工作,提高了系统的吞吐率。


三、记忆辅助

  1. "取译执访写"五级口诀:IF(取指)、ID(译码)、EX(执行)、MEM(访存)、WB(写回)。谐音"取译执访写"。

  2. 性能公式记忆:"吞吐率 = n / (k+n-),加速比 = nk / (k+n-1),效率 = n / (k+n-1)"。三个公式分母都是(k+n-1),分子分别是n、nk、n。

  3. 最大加速比 = 流水线级数k:理想情况下,k级流水线的最大加速比就是k倍。5级流水线最多快5倍,这很直观——同一时刻有5条指令在不同阶段并行。

  4. 流水线不减单条延迟,只增吞吐量:记住流水线的本质——单条指令的执行时间不变(甚至略增),但指令序列的总时间大幅减少。


四、例题精解

例题1

题目:某处理器采用5级流水线(IF/ID/EX/MEM/WB),每级流水段需要1个时钟周期。执行100条指令(不考虑任何冒险),流水线的吞吐率和加速比分别是多少?

四步解题

第一步:审题——5级流水线,k=5,Δt=1个时钟周期,n=100条指令,无冒险。

第二步:计算流水线执行时间T流水线=(k+n1)×Δt=(5+1001)×1=104个时钟周期T_{流水线} = (k + n - 1) \times \Delta t = (5 + 100 - 1) \times 1 = 104 \text{个时钟周期}

第三步:计算性能指标

  • 吞吐率:TP=nT流水线=1001040.962TP = \frac{n}{T_{流水线}} = \frac{100}{104} \approx 0.962 条/周期
  • 顺序执行时间:T顺序=n×k×Δt=100×5×1=500T_{顺序} = n \times k \times \Delta t = 100 \times 5 \times 1 = 500 个周期
  • 加速比:S=T顺序T流水线=5001044.81S = \frac{T_{顺序}}{T_{流水线}} = \frac{500}{104} \approx 4.81

第四步:答案——吞吐率约为 0.962条/时钟周期,加速比约为 4.81

注:当n=100,k=5时,效率E = S/k = 4.81/5 ≈ 96.2%,说明流水线各功能段的利用率很高。


例题2

题目:若将例题1中的5级流水线改为10级流水线(每级仍需1个时钟周期),执行同样的100条指令,加速比变为多少?与5级流水线相比,加速比是否一定是10级更高?

四步解题

第一步:审题——10级流水线,k=10,Δt=1,n=100。

第二步:计算

  • 流水线执行时间:T流水线=(10+1001)×1=109T_{流水线} = (10 + 100 - 1) \times 1 = 109 个周期
  • 顺序执行时间:T顺序=100×10×1=1000T_{顺序} = 100 \times 10 \times 1 = 1000 个周期
  • 加速比:S=10001099.17S = \frac{1000}{109} \approx 9.17

第三步:分析——10级流水线的加速比(9.17)确实高于5级流水线(4.81)。但并不是级数越多加速比就越高,因为:

  1. 流水线级数增加会增加流水线寄存器的开销
  2. 实际中每级的执行时间不可能完全相等,最慢的一级决定时钟周期
  3. 冒险导致的流水线停顿会随级数增加而增多

第四步:答案——10级流水线加速比约为 9.17,高于5级的4.81。但级数增加带来的收益会递减,且实际中需要考虑各种开销。


例题3

题目:某指令流水线由4个流水段组成,各段执行时间分别为100ns、80ns、100ns、70ns。则该流水线的时钟周期至少应设为多少?

四步解题

第一步:审题——4个流水段,执行时间分别为100ns、80ns、100ns、70ns。

第二步:分析——流水线的时钟周期由最慢的流水段决定(木桶原理)。所有流水段必须在同一个时钟周期内完成各自的工作。

第三步:计算——时钟周期 ≥ max(100, 80, 100, 70) = 100ns。

第四步:答案——流水线的时钟周期至少应设为 100ns

注:这说明如果各段执行时间不均衡,效率会降低。第2段(80ns)和第4段(70ns)各浪费了20ns和30ns。


五、考情分析

维度说明
考查题型选择题(性能计算)+ 综合题(时空图分析/性能分析)
考查重点吞吐率/加速比/效率计算、时空图分析、时钟周期确定
命题趋势流水线基本原理常与冒险处理结合出综合题
分值预估选择题2分,综合题8-12分
复习建议熟练掌握性能公式,能够画出时空图并计算各项指标

六、易错点

  1. 总执行时间公式中的(k+n-1)容易算错:k是流水线级数,n是指令数。前k-1个周期在"装入"流水线,后k-1个周期在"排空",中间n-k+1个周期满载。总周期数 = (k-1) + n = k+n-1。

  2. 时钟周期由最慢阶段决定,不是平均值:即使其他阶段很快,只要有一个阶段很慢,整个流水线的时钟周期就必须以最慢阶段为准。这是"木桶效应"。

  3. 流水线不减少单条指令的延迟:流水线提高的是吞吐率(单位时间完成的指令数),而不是单条指令的执行时间。单条指令仍然需要经过所有k个阶段,延迟不变。

  4. 最大加速比等于级数k是有条件的:这个结论只在指令数n→∞且无冒险时才成立。当n有限时,实际加速比小于k。

  5. 效率公式中的分母容易搞错:效率E = 实际加速比 / 最大加速比 = S/k = n/(k+n-1)。注意分子是n不是nk。


七、来源标注

来源说明
主要教材唐朔飞《计算机组成原理》第3版,第5章5.6节
辅助教材袁春风《计算机组成与系统结构》第3版
考纲依据全国硕士研究生招生考试计算机学科专业基础综合考试大纲(408)
补充参考Patterson & Hennessy《计算机组成与设计》第4章

考研全科复习资料 - 基于2026考研统考大纲