EXACT: explicit dynamic-branch prediction with active updates

EXACT: explicit dynamic-branch prediction with active updates
复制标题

EXACT:具有主动更新的显式动态分支预测

DOI:
--
复制
发表时间:
2010
期刊:
Conf. Computing Frontiers
影响因子:
--
通讯作者:
E. Rotenberg
E. Rotenberg
中科院分区:
--
文献类型:
--
作者:
Muawya Al;Elliott Forbes;E. Rotenberg

文献摘要

被引文献

相似文献

直接或间接依赖于加载指令的分支是最先进的分支预测器错误预测的主要原因。对于这种类型的分支,对于生产者加载地址的每个唯一组合都有一个唯一的分支动态实例。基于这个定义,对错误预测的研究揭示了两个相关的问题:(i)全局分支历史通常无法区分不同的动态分支。在这种情况下,预测器无法专门针对不同的动态分支进行预测,如果它们的结果不同,则会导致错误预测。理想情况下,补救措施是使用其程序计数器 (PC) 及其生成器负载的地址来预测动态分支,因为此上下文唯一地标识动态分支。我们将此上下文称为动态分支的身份或 ID。一般来说,当获取动态分支时,生产者负载不太可能生成它们的地址。我们证明,全局分支流中远程退休分支的 ID 与最近的全局分支历史记录相结合,是预测当前分支的有效上下文。 (ii) 解决第一个问题会暴露另一个问题。存储到动态分支所依赖的地址可能会在下次遇到该地址时翻转其结果。使用传统的被动更新,在重新训练预测器之前分支会遭受错误预测。我们建议存储到动态分支所依赖的内存地址,直接更新预测器中的预测。这种新颖的“主动更新”概念避免了传统被动训练所引起的错误预测。我们重点介绍支持大型 EXACT 预测器的两个实用功能:凭借其解耦索引策略,预测路径可扩展流水线化,并且主动更新可以容忍 100 个周期的延迟,使其成为在通用内存层次结构中虚拟化此组件的理想选择。我们还提出了一种紧凑形式的预测器,它仅缓存与其整体偏差不同的静态分支的动态实例。
Branches that depend directly or indirectly on load instructions are a leading cause of mispredictions by state-of-the-art branch predictors. For a branch of this type, there is a unique dynamic instance of the branch for each unique combination of producer-load addresses. Based on this definition, a study of mispredictions reveals two related problems: (i) Global branch history often fails to distinguish between different dynamic branches. In this case, the predictor is unable to specialize predictions for different dynamic branches, causing mispredictions if their outcomes differ. Ideally, the remedy is to predict a dynamic branch using its program counter (PC) and the addresses of its producer loads, since this context uniquely identifies the dynamic branch. We call this context the identity, or ID, of the dynamic branch. In general, producer loads are unlikely to have generated their addresses when the dynamic branch is fetched. We show that the ID of a distant retired branch in the global branch stream combined with recent global branch history, is effective context for predicting the current branch. (ii) Fixing the first problem exposes another problem. A store to an address on which a dynamic branch depends may flip its outcome when it is next encountered. With conventional passive updates, the branch suffers a misprediction before the predictor is retrained. We propose that stores to the memory addresses on which a dynamic branch depends, directly update its prediction in the predictor. This novel "active update" concept avoids mispredictions that are otherwise incurred by conventional passive training. We highlight two practical features that enable large EXACT predictors: the prediction path is scalably pipelinable by virtue of its decoupled indexing strategy, and active updates are tolerant of 100s of cycles of latency making it ideal for virtualizing this component in the general-purpose memory hierarchy. We also present a compact form of the predictor that caches only dynamic instances of a static branch that differ from its overall bias.