Appearance
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)
吞吐率是指单位时间内流水线完成的指令数。
其中:n为指令数,k为流水线级数,Δt为每个流水段的时间。
当n→∞时,最大吞吐率:
(2)加速比(Speedup, S)
加速比是指完成同样任务,顺序执行时间与流水线执行时间之比。
当n→∞时,最大加速比:
即最大加速比等于流水线级数。
(3)效率(Efficiency, E)
效率是指流水线中各功能段的利用率。
当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. 流水线的特点与限制
流水线的基本假设:
- 每个阶段的执行时间相等(取最长阶段的时间作为时钟周期)
- 各阶段之间没有数据依赖冲突
- 指令之间没有控制依赖冲突
- 硬件资源充足,没有结构冲突
实际中影响流水线性能的因素:
- 结构冒险:多条指令同时需要使用同一硬件资源
- 数据冒险:后续指令需要使用前面指令的运算结果
- 控制冒险:分支指令导致流水线的执行方向不确定
这三种冒险将在CO-05-06中详细讨论。
7. 流水线与非流水线的本质区别
流水线并没有减少单条指令的执行时间(实际上由于流水线寄存器的开销,单条指令的延迟可能略有增加),它减少的是指令序列的平均执行时间。通过让多条指令在不同阶段并行工作,提高了系统的吞吐率。
三、记忆辅助
"取译执访写"五级口诀:IF(取指)、ID(译码)、EX(执行)、MEM(访存)、WB(写回)。谐音"取译执访写"。
性能公式记忆:"吞吐率 = n / (k+n-),加速比 = nk / (k+n-1),效率 = n / (k+n-1)"。三个公式分母都是(k+n-1),分子分别是n、nk、n。
最大加速比 = 流水线级数k:理想情况下,k级流水线的最大加速比就是k倍。5级流水线最多快5倍,这很直观——同一时刻有5条指令在不同阶段并行。
流水线不减单条延迟,只增吞吐量:记住流水线的本质——单条指令的执行时间不变(甚至略增),但指令序列的总时间大幅减少。
四、例题精解
例题1
题目:某处理器采用5级流水线(IF/ID/EX/MEM/WB),每级流水段需要1个时钟周期。执行100条指令(不考虑任何冒险),流水线的吞吐率和加速比分别是多少?
四步解题:
第一步:审题——5级流水线,k=5,Δt=1个时钟周期,n=100条指令,无冒险。
第二步:计算流水线执行时间:
第三步:计算性能指标:
- 吞吐率: 条/周期
- 顺序执行时间: 个周期
- 加速比:
第四步:答案——吞吐率约为 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。
第二步:计算:
- 流水线执行时间: 个周期
- 顺序执行时间: 个周期
- 加速比:
第三步:分析——10级流水线的加速比(9.17)确实高于5级流水线(4.81)。但并不是级数越多加速比就越高,因为:
- 流水线级数增加会增加流水线寄存器的开销
- 实际中每级的执行时间不可能完全相等,最慢的一级决定时钟周期
- 冒险导致的流水线停顿会随级数增加而增多
第四步:答案——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分 |
| 复习建议 | 熟练掌握性能公式,能够画出时空图并计算各项指标 |
六、易错点
总执行时间公式中的(k+n-1)容易算错:k是流水线级数,n是指令数。前k-1个周期在"装入"流水线,后k-1个周期在"排空",中间n-k+1个周期满载。总周期数 = (k-1) + n = k+n-1。
时钟周期由最慢阶段决定,不是平均值:即使其他阶段很快,只要有一个阶段很慢,整个流水线的时钟周期就必须以最慢阶段为准。这是"木桶效应"。
流水线不减少单条指令的延迟:流水线提高的是吞吐率(单位时间完成的指令数),而不是单条指令的执行时间。单条指令仍然需要经过所有k个阶段,延迟不变。
最大加速比等于级数k是有条件的:这个结论只在指令数n→∞且无冒险时才成立。当n有限时,实际加速比小于k。
效率公式中的分母容易搞错:效率E = 实际加速比 / 最大加速比 = S/k = n/(k+n-1)。注意分子是n不是nk。
七、来源标注
| 来源 | 说明 |
|---|---|
| 主要教材 | 唐朔飞《计算机组成原理》第3版,第5章5.6节 |
| 辅助教材 | 袁春风《计算机组成与系统结构》第3版 |
| 考纲依据 | 全国硕士研究生招生考试计算机学科专业基础综合考试大纲(408) |
| 补充参考 | Patterson & Hennessy《计算机组成与设计》第4章 |