Files
final-exam/计算机系统结构/复习文档/流水线技术.md
T

4.8 KiB
Raw Blame History

tags, create time
tags create time
计算机系统结构
复习
流水线
2026-06-15 10:00

流水线技术

概述

本文档系统讲解指令流水线的基本原理、冲突类型(结构/数据/控制)、流水线调度策略(预约表与冲突向量)以及时空图分析。流水线是提升处理器吞吐率的核心技术,也是历年考试的高频难点。

[!tip] 考试重点 流水线调度(预约表→禁止表→冲突向量→状态转移图)是分析题的核心考点,需完整掌握从预约表到最优调度策略的全过程。数据相关的三种类型(RAW/WAR/WAW)也常考。

正文

一、流水线基本概念

核心思想:将指令执行过程分成多个阶段(段),不同指令的不同阶段可以重叠执行,从而提高吞吐率。

graph LR
    A["IF: Fetch"] --> B["ID: Decode"] --> C["EX: Execute"] --> D["MEM: Memory"] --> E["WB: Write Back"]

性能指标:

指标 公式 说明
吞吐率 TP = n / T_k n 个任务在 T_k 时间内完成
加速比 S = T_{seq} / T_k 串行 vs 流水线
效率 E = S / k 流水线的利用率(k 为段数)

二、流水线冲突

2.1 结构冲突(Structural Hazard)

多条指令在同一时钟周期争用同一硬件资源。

[!example] 典型场景 指令和数据共用一个存储端口,取指和访存同时发生冲突。解决方案:分离指令 Cache 和数据 Cache。

2.2 数据冲突(Data Hazard)

后续指令需要使用前面指令的运算结果,但结果尚未写回。

类型 全称 含义 示例
RAW Read After Write 后读前写(真数据相关) ADD R1,... ; MOV R2,R1
WAR Write After Read 后写前读(反相关) MOV R2,R1 ; ADD R1,...
WAW Write After Write 后写前写(输出相关) ADD R1,... ; SUB R1,...

解决方案:

  • 数据前推/旁路(Forwarding):将结果直接从 EX/MEM 传递到下一条指令的 EX 输入
  • 插入气泡(Stall):暂停流水线等待数据就绪
  • 编译器调度:重排指令顺序避免冲突

[!question] 定向传送(旁路)为什么不能完全消除数据冲突? Load-use 冲突:从内存 Load 的数据在 EX 段结束时才可用,但下一条指令可能需要在 EX 段开始时就使用它,此时必须插入一个气泡。

2.3 控制冲突(Control Hazard)

分支指令的执行结果决定后续取指方向,但在分支确定前已经预取了后续指令。

解决方案:

  • 暂停:等待分支结果确定后再取指(最简单但性能差)
  • 预测:静态预测(总预测不跳转/总预测跳转)或动态预测(分支历史表)
  • 延迟分支:在分支指令后填充一条必定执行的指令(延迟槽)

三、流水线调度(非线性流水线)

3.1 预约表

记录一个任务在各时钟周期对各段的占用情况,是调度分析的起点。

3.2 禁止表

从预约表中提取同一段被两次以上占用的时间间隔,构成禁止表 $F$。

3.3 冲突向量

根据禁止表构建初始冲突向量 $C_0$:

  • 冲突向量的第 i 位为 1 表示间隔 i 个周期不能进入新任务
  • 位数 = 最大禁止间隔

3.4 状态转移图

对每个状态(冲突向量),计算允许的间隔 j 对应的新状态:

C_{new} = SHR^{(j)}(C) \lor C_0

其中 SHR^{(j)} 表示右移 j 位,\lor 表示按位或。

[!example] 调度示例 禁止表 $F = {1, 3, 4, 6}$,则 C_0 = 101101

  • $j=2$:SHR^{(2)}(101101) \lor 101101 = 001011 \lor 101101 = 101111 = C_1
  • $j=5$:SHR^{(5)}(101101) \lor 101101 = 000001 \lor 101101 = 101101 = C_0

在 C_1 状态:j=2 得 $C_1$,j=5 得 C_0

3.5 最优调度策略

在状态转移图中找出所有闭合回路,计算每个回路的平均延迟:

\text{平均延迟} = \frac{\text{回路中各间隔之和}}{\text{回路长度}}

平均延迟最小的回路即为最优调度策略。

调度策略 平均延迟
(5) 5
(2, 5) 3.5
(2, 7) 4.5

最优策略为 (2, 5),平均延迟 3.5 拍。

四、时空图分析

时空图是分析流水线性能的直观工具,横轴为时间(时钟周期),纵轴为流水线段或功能部件。

绘图步骤:

  1. 确定每个任务的各段执行时间
  2. 根据调度策略确定任务间的间隔
  3. 注意数据相关的约束(无定向传送时需插入气泡)
  4. 计算总完成时间和吞吐率

关联笔记