概念定义
现代 CPU 在流水线里同时执行数十条指令。分支本会让一切停到解析为止;预测器改用猜测让机器投机前进,猜错就丢弃全部投机工作——代价是数十个周期。
工作机制
预测器按分支历史与全局模式学习,结构化代码准确率超过 95%。数据依赖分支(if data[i] > threshold)继承数据分布:排序输入让它近乎单调,随机输入让它变成掷硬币。无分支形式——掩码、条件传送、查表——直接移除分支。
使用场景
带数据依赖条件的热循环、按输入切换的解析器、分发密集的解释器。改写为无分支或按分支结果分区数据,经典演示里能带来数量级摆动。
常见误区
误预测的代价是数十周期、堪比一次 L1 miss——不只是数值紧循环的事,解析器、分发表、校验代码同样中招。无分支代码更难读且不总更快:两条路径都被强制计算。投机执行还是 Spectre 类攻击的泄漏面——分支行为同时是安全面。重构前先剖析,多数结构化代码预测器已处理得很好。