[论文解读] Improving Branch Prediction By Modeling Global History with Convolutional Neural Networks
本文提出使用卷积神经网络(CNNs)作为辅助预测器,以提高现代CPU中难以预测分支(H2Ps)的分支预测准确率。通过使用CNN对全局历史进行建模,该方法能够容忍分支历史序列中的位置变化,从而在SPECint 2017中47%的H2Ps上平均减少36.6%的误预测,且采用可部署的2位量化CNN设计,使24%的H2Ps平均提升14.4%的预测准确率。
CPU branch prediction has hit a wall--existing techniques achieve near-perfect accuracy on 99% of static branches, and yet the mispredictions that remain hide major performance gains. In a companion report, we show that a primary source of mispredictions is a handful of systematically hard-to-predict branches (H2Ps), e.g. just 10 static instructions per SimPoint phase in SPECint 2017. The lost opportunity posed by these mispredictions is significant to the CPU: 14.0% in instructions-per-cycle (IPC) on Intel SkyLake and 37.4% IPC when the pipeline is scaled four-fold, on par with gains from process technology. However, up to 80% of this upside is unreachable by the best known branch predictors, even when afforded exponentially more resources. New approaches are needed, and machine learning (ML) provides a palette of powerful predictors. A growing body of work has shown that ML models are deployable within the microarchitecture to optimize hardware at runtime, and are one way to customize CPUs post-silicon by training to customer applications. We develop this scenario for branch prediction using convolutional neural networks (CNNs) to boost accuracy for H2Ps. Step-by-step, we (1) map CNNs to the global history data used by existing branch predictors; (2) show how CNNs improve H2P prediction in SPEC 2017; (3) adapt 2-bit CNN inference to the constraints of current branch prediction units; and (4) establish that CNN helper predictors are reusable across application executions on different inputs, enabling us to amortize offline training and deploy ML pattern matching to improve IPC.
研究动机与目标
- 解决一小部分难以预测分支(H2Ps)导致的系统性误预测所引发的性能瓶颈,这些H2Ps在Intel SkyLake上造成14.0%的IPC损失,且在扩展后最高可达37.4%。
- 克服现有分支预测器的局限性,这些预测器无法捕捉全局历史数据中的复杂模式,尤其是在循环迭代次数变化时。
- 开发一种可部署于分支预测单元(BPU)严格面积与延迟约束下的基于机器学习的解决方案。
- 实现训练后的机器学习模型在不同输入和执行环境中的可重用性,以分摊训练成本并支持硅后定制。
- 证明CNN能够容忍由可变迭代控制结构引起的分支历史序列位置畸变,其性能优于传统模式匹配技术。
提出的方法
- 将包含指令指针值和分支方向的全局历史数据映射为适合卷积处理的2D张量表示。
- 设计一个两层CNN,第一层使用32个滤波器,第二层使用16个滤波器,采用7位IP编码和1位方向位,以建模分支历史中的时间与空间模式。
- 将CNN量化为2位权重(三值CNN),以降低复杂度,并仅通过查表和popcount操作实现高效推理。
- 将CNN推理过程转化为一系列串行查表操作与一次popcount运算,以最小化延迟并满足BPU资源约束。
- 在每个基准测试的多个输入运行时轨迹上离线训练CNN,然后通过k折交叉验证评估其在未见工作负载上的泛化能力。
- 将CNN辅助预测器作为二级预测器,与基线TAGE-SC-L预测器协同工作,最终预测通过统计校正机制生成。
实验结果
研究问题
- RQ1卷积神经网络能否有效建模全局分支历史数据,从而提升传统预测器难以处理的难以预测分支(H2Ps)的预测准确率?
- RQ2与传统模式匹配预测器相比,CNN在多大程度上能容忍由可变迭代控制结构引起的分支历史序列位置变化?
- RQ3能否设计出满足真实世界分支预测单元严格面积与延迟约束的2位量化CNN,同时保持显著的准确率增益?
- RQ4训练后的CNN辅助预测器是否能在同一应用程序的不同输入间泛化,从而实现训练成本的分摊与生产环境中的可重用性?
- RQ5使用CNN辅助预测器在IPC提升方面的性能影响如何?与扩展现有预测器相比,其能捕获多少剩余的误预测机会?
主要发现
- 全精度CNN辅助预测器在SPECint 2017中47%的H2Ps上平均减少36.6%的误预测,证明其在系统性难以预测分支上具有显著准确率增益。
- 2位量化CNN(TP-CNN)使24%的H2Ps平均提升14.4%的预测准确率,捕获了全精度模型约一半的增益,同时保持可部署性。
- 即使将TAGE-SC-L扩展至64KB,仍有21%的H2Ps从CNN辅助预测器中受益,平均减少12.3%的误预测,表明改进的模式匹配相比单纯扩展具有根本性优势。
- CNN方法在相同应用程序的不同输入间具有泛化能力:在某一工作负载上训练并在其他工作负载上测试,均能获得一致增益,支持可重用性与训练成本分摊。
- 全精度与量化CNN之间的性能差距表明,位置模式匹配与对潜在过时数据的处理均对准确率至关重要,提示在BPU上设计中仍有进一步优化空间。
- 该方法通过仅针对极少数分支进行优化,即实现了高达14.0%的IPC提升(在Intel SkyLake上)和37.4%的IPC提升(在4倍扩展流水线中),凸显了机器学习驱动的微架构定制的巨大潜力。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。