Appearance
流水线性能分析
考情分析
流水线性能计算是408综合题必考内容。有冒险时如何计算总执行时间、CPI,是与简单公式题的区别所在。时空图的绘制和分析是解题的核心工具。
流水线时空图
时空图以横轴为时间(时钟周期),纵轴为指令编号,图中每个格子表示某条指令在某周期处于哪个流水线阶段。
理想情况(无冒险)
T1 T2 T3 T4 T5 T6 T7 T8 T9
I1 IF ID EX MEM WB
I2 IF ID EX MEM WB
I3 IF ID EX MEM WB
I4 IF ID EX MEM WB
I5 IF ID EX MEM WB5 条指令,5 段流水线,共用 9 个周期(
有气泡时(含 lw-use 相关)
I1: lw R1, 0(R2)
I2: ADD R3, R1, R4 ← load-use 相关,需插入1个气泡
I3: SUB R5, R3, R6 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11
I1 IF ID EX MEM WB
I2 IF ID stall EX MEM WB
I3 IF stall ID EX MEM WB插入1个气泡,总时间增加1个周期。
有冒险时的性能计算
设无冒险时
用CPI表示
其中
例题
例1:5 段流水线,每段时间
I1: ADD R1, R2, R3
I2: SUB R4, R1, R5 ← RAW(旁路解决,无气泡)
I3: lw R6, 0(R4) ← RAW(旁路解决,无气泡)
I4: AND R7, R6, R8 ← load-use,插入1个气泡
I5: OR R9, R7, R10 ← RAW(旁路解决,无气泡)
I6: ADD R11, R9, R12 ← RAW(旁路解决,无气泡)解:I3 → I4 是 lw-use 相关,需插入 1 个气泡,
例2:某5级流水线,Load指令占25%,其中40%存在load-use冒险(暂停1周期);分支指令占20%,预测错误率15%,代价2周期。求实际CPI和加速比。
解:
例3:某双发射超标量处理器实测 IPC = 1.5(每周期完成1.5条指令),理想情况下 IPC = 2。发射效率是多少?
解:发射效率 =
等价地,实测 CPI =
超标量(Superscalar)
每个时钟周期发射并执行多条指令(多发射)。
实现方式:配备多条并行的流水线(多个功能部件),指令在多条流水线上同时运行。
要求:指令间无依赖,编译器或硬件负责指令调度。
超流水线(Super-pipelining)
将每个流水线阶段进一步细分为更多的子阶段,从而提高时钟频率。
超流水线不增加硬件复制,而是通过更深的流水线(更高频率)来提升吞吐量。单条指令的时钟周期数增加(经过更多流水级),但每个时钟周期更短,因此总延迟时间基本不变。
超长指令字(VLIW)
由编译器在编译阶段挖掘指令间的并行性,将多条可并行执行的操作打包成一条超长指令字。每条 VLIW 指令包含多个操作码字段,分别控制不同的功能部件。
与超标量的区别:超标量依赖硬件动态调度指令并行,VLIW 依赖编译器静态调度。
| 对比项 | 超标量(动态多发射) | VLIW(静态多发射) |
|---|---|---|
| 并行性挖掘 | 硬件动态完成 | 编译器静态完成 |
| 硬件复杂度 | 高(需乱序执行、动态调度) | 低(控制逻辑简单) |
| 编译器要求 | 一般 | 高(需精确调度) |
| 代码兼容性 | 好(二进制兼容) | 差(指令格式与硬件绑定) |
三种高级流水线技术对比
| 对比项 | 超标量 | 超流水线 | VLIW |
|---|---|---|---|
| 方法 | 多条并行流水线 | 更深(更多级)的流水线 | 编译器打包多操作为一条长指令 |
| 关键资源 | 多组硬件部件 | 更高的时钟频率 | 编译器优化能力 |
| 每周期发射指令数 | 1条(但周期更短) | 1条(但含多个操作) | |
| 指令延迟 | 不增加 | 时钟周期数增加,但总时间基本不变 | 不增加 |
| 冒险影响 | 多条流水线间的依赖更复杂 | 分支预测错误惩罚更大 | 编译器需静态避免冲突 |
现代高性能处理器(如 Intel x86、Apple Silicon)通常同时使用超标量和超流水线技术。VLIW 在通用处理器中较少使用,但在 DSP 等特定领域应用广泛。
考点清单
- 有气泡时:总周期 = 理想周期 + 气泡数
- CPI = 1 + 气泡数/指令数(在理想CPI=1的基础上)
- 效率 = 时空图中"有效阴影面积"÷"总面积"
- 超标量:多条流水线并行,CPI < 1 成为可能(硬件动态调度)
- 超流水线:单条流水线更深,时钟频率更高,单条指令延迟不变但吞吐量提升
- VLIW:编译器静态打包多操作为一条长指令,硬件简单但编译器要求高
- 加速比的理论上界:超标量为 m(m路并行),超流水线为段数的细分倍数