一个有选择性访问 BTB 的功耗敏感型分枝预测器
A Power-Aware Branch Predictor by Accessing the BTB Selectively
-
摘要: 在最现代的嵌入式处理器中,分枝预测的精度影响性能更加明显,因为随着流水线长度的以及每个周期所发指令数目的增加,分枝误预测所造成的后果也随之更加严重。因此,一个准确的分枝预测器是现代嵌入式处理器中重要的部分之一。除了精度之外,在设计嵌入式处理器过程中还应该考虑分枝预测器的能耗,这是因为分枝预测器(包括 BTB )中的功耗据说占处理器总功耗的 10% 多。尤其在嵌入式处理器中,功耗已经成为设计考虑的一个重要的方面,另外应该考虑的还有性能。 在设计分枝预测器时,尤其是在设计嵌入式处理器中的分枝预测器时,微电子设计师应该考虑功耗及精度。 分枝预测技巧通常由两个交互的硬件模块组成:一个分枝方向预测器和分枝目标预测器。前者一般基于 PHT (模式历史表)实现,可以预测分枝的方向;后者通常作为 BTB (分枝目标缓冲器 )实现,可以预测分枝的目标地址。 PHT 和 BTB 的尺寸相当大,而且它们每当有取指令的时候都被访问,造成了明显的功耗。一些通用的处理器利用预解码来检测指令是否分枝,从而导致只有当指令是一个分枝时对分枝预测器( PHT 和 BTB )的访问是有选择性的。 我们定义分枝预测器由 PHT 和 BTB 组成。在这种情况下,对分枝预测器的访问应该在访问指令 Cache 之前进行。然而,如果取指阶段对时间要求苛刻,则顺序访问会导致额外的延迟。在诸如 ARM1136 和 ARM1156 等嵌入式处理器中,取指阶段对时间要求苛刻,导致对分枝预测器和指令 Cache 同时访问。从而每当取指的时候就要访问分枝预测器,招致了明显的功耗。 本文探讨了一个新的硬件技巧,它可以降低有关指令预测的功耗而不损害嵌入式处理器的性能。我们针对的是其分枝预测器和指令 Cache 在取指阶段对同时被访问的嵌入式处理器。为减少分枝预测器中不必要的功耗,如果前一条指令不是一个分枝而且在取指阶段早期所获 PHT 的预测尚未执行,则本文提出的分枝预测器中的 BTB 就不被访问。如果如果前一条指令是一个分枝,则 BTB 和 PHT 应该同时被访问以防止因采用所提方案而造成延迟。 本文提出的是一个功耗敏感型的分枝预测器,它是基于 gshare 的一个有选择性访问 BTB 的预测器。如果程序是在无分枝指令情况下顺序执行,为了使能对 BTB 有选择性的访问,本文提出的分枝预测器中的 PHT 要比传统的 PHT 提早一个周期访问。有一个意外的效果,即 PHT 的两次预测是通过一次访问 PHT 获得,结果是节电。在本文提出的分枝预测器中,如果前一条指令不是一个分枝且 PHT 的预测尚未执行,那么 BTB 就不被访问以降低功耗。如果前一条指令是一个分枝,则无论 PHT 的预测是否执行, BTB 总被访问,以防止额外的延迟 / 精度下降。 本文提出的分枝预测器能够降低功耗,硬件开销很小,不会招致额外的延迟而且决不会影响预测精度。仿真结果表明,我们提出的分枝预测器能够降低功耗 29%~47% 。Abstract: Microarchitects should consider power consumption, together withaccuracy, when designing a branch predictor, especially in embeddedprocessors. This paper proposes a power-aware branch predictor, which isbased on the gshare predictor, by accessing the BTB (Branch TargetBuffer) selectively. To enable the selective access to the BTB, the PHT(Pattern History Table) in the proposed branch predictor is accessed onecycle earlier than the traditional PHT if the program is executedsequentially without branch instructions. As a side effect, twopredictions from the PHT are obtained through one access to the PHT,resulting in more power savings. In the proposed branch predictor, ifthe previous instruction was not a branch and the prediction from thePHT is untaken, the BTB is not accessed to reduce power consumption. Ifthe previous instruction was a branch, the BTB is always accessed,regardless of the prediction from the PHT, to prevent the additionaldelay/accuracy decrease. The proposed branch predictor reduces the powerconsumption with little hardware overhead, not incurring additionaldelay and never harming prediction accuracy. The simulation results showthat the proposed branch predictor reduces the power consumption by 29--47%.