一、全局性相关
全局性相关主要指转移指令(特别是条件转移)对流水线性能的影响。由于转移指令的执行结果会影响后续指令的取指路径,可能导致已预取到指令缓冲中的内容失效,从而引发流水线断流或清空,显著降低吞吐率和效率。相比局部性相关(如数据相关、资源冲突),其影响范围更广、后果更严重。
解决方法包括:
- 猜测转移分支:默认按“未转移”方向继续预取(即顺序执行路径),若实际中转移不常发生,则命中率高,可有效减少断流;
- 加快/提前形成条件码:通过在运算器中提前生成标志位(如零、正负标志),缩短条件判断延迟,使转移决策更早完成;
- 加快缩短循环程序:将高频执行的循环代码整体放入高速指令缓冲(如循环缓冲区),避免重复取指,减少因循环跳转带来的断流。
二、RISC 的三种流水线技术
| 技术类型 | 核心逻辑 | 本质 | 特点 |
|---|---|---|---|
| 超流水线技术 | 细化流水阶段,增加流水线条数 | 时间换空间 | 单周期可完成1-2个浮点操作,CPI略高但硬件利用率提升 |
| 超标量技术 | 配备多条独立流水线,并行发射多条指令 | 空间换时间 | 时钟频率与普通流水相当,CPI更低,性能更强 |
| 超长指令字(VLIW) | 编译器静态调度多个操作打包成一条长指令 | 软件优化硬件 | 硬件结构简化,依赖编译器做并行性分析,CPI小但主频较低 |
三、吞吐率与流水建立时间
-
吞吐率(Throughput):单位时间内流水线完成的任务数量。理论最大吞吐率为:
p=1max{Δt1,Δt2,...,Δtm} p = \frac{1}{\max\{\Delta t_1, \Delta t_2, ..., \Delta t_m\}} p=max{Δt1,Δt2,...,Δtm}1
其中 Δti\Delta t_iΔti 表示第 iii 个流水段的处理时间,瓶颈段决定整体吞吐能力。 -
建立时间(Startup Time / Fill Time):指流水线从初始状态到进入满负荷工作所需的时间。对于一个 mmm 级流水线,需要 mmm 个时钟周期才能填满,此后才达到最大吞吐率。
-
动态分支预测技术通过运行时记录和分析分支指令的历史行为,动态调整对下一次转移方向(转移或不转移)的预测,从而显著减少因条件转移导致的流水线断流,有效缓解全局性相关带来的性能损失。
其核心机制包括:
-
历史记录表(Branch History Table, BHT):
使用一个有限大小的表,以分支指令地址的部分位作为索引,存储该分支最近的执行结果(如“转移”或“不转移”)。每次遇到分支时,查表获取预测方向,指导预取路径。 -
饱和计数器(2-bit Saturating Counter):
每个分支对应一个两位状态机(强不转移 → 弱不转移 → 弱转移 → 强转移),避免单次误判就改变预测结果,提升稳定性。只有连续两次相同行为才会进入“强”状态。 -
两级预测器(如gshare、gselect):
不仅考虑当前分支的历史,还结合全局最近若干次分支的结果(全局历史寄存器),提高对复杂模式(如循环中最后一次跳转不同)的预测准确率。 -
目标地址缓存(Branch Target Buffer, BTB):
同时缓存转移指令的目标地址,避免每次都要计算跳转地址,加快取指过程。 -
投机执行(Speculative Execution)配合预测:
根据预测结果提前取出并执行后续指令,若预测正确则直接提交结果;若错误,则丢弃已执行的指令,恢复状态,重新从正确路径取指。
✅ 缓解全局性相关的具体方式:
- 减少转移判断延迟,使流水线持续填充;
- 提高预取正确率(现代处理器可达90%以上),大幅降低断流频率;
- 缩短建立时间的影响周期,让流水线更快恢复满吞吐状态。
典型应用:Intel Core 系列、AMD Zen 架构均采用复杂的动态预测算法(如TAGE预测器)来优化控制相关。


1671

被折叠的 条评论
为什么被折叠?



