加载中...

分支预测(Branch Prediction)是现代 CPU 维持流水线满载的关键机制。深流水线处理器在条件分支的结果尚未算出时,就必须决定接下来取哪条指令;分支预测器猜测分支走向并让 CPU 沿预测路径投机执行,猜对则毫无停顿,猜错则清空流水线重新取指,在现代处理器上损失十几个周期。
从静态预测发展到动态预测:两位饱和计数器为每个分支记录倾向;两级自适应预测器利用分支历史模式;gshare 将全局历史与地址哈希结合;现代高端 CPU 采用感知机(Perceptron)与 TAGE 类预测器,准确率普遍超过 95%,配合分支目标缓冲器(BTB)与返回地址栈预测间接跳转与函数返回。
对性能敏感的代码应避免数据依赖的不可预测分支:对随机数据先排序再按条件处理可数倍提速,编译器与开发者也常用无分支技巧、likely/unlikely 提示优化热路径。2018 年的 Spectre 漏洞表明分支预测可被恶意训练,诱导受害者投机执行泄漏数据的代码,迫使业界引入 retpoline 等缓解措施。

登录 后参与讨论
暂无讨论,来发表第一条评论吧