A Survey of Techniques for Dynamic Branch Prediction(2018)

1 分支预测的基础知识

分支预测的tradeoff:准确率、延迟、存储开销、功耗(power)

分支的分类:条件分支和非条件分支、直接或非直接(直接指目标地址在指令中指出,非直接指目标地址在内存或寄存器中)

Aliasing(混叠):当大量不相关分支使用预测器表中的同一表项时,就会造成干扰,称为aliasing(有的地方翻译成分支别名,如下图所示例。有正混叠(positive aliasing)和负混叠(negative aliasing),负混叠会造成错误预测,通常负混叠的频率和幅度都高于正混叠,尤其是对于工作集较大的工作负载。混叠会显著降低预测器的有效性。

Side predictor(边预测器):常用的预测器可以较为精确地对绝大多数分支进行预测,但却不能很好地预测一些具有特定特征且出现频率较低的分支。为了预测这些分支,在主预测器的基础上增加边预测器(即辅助预测器)以提高整体预测准确率。

Basic block(基础块):基本块是无分支代码的最大长度序列。 除非发生异常,BB 中的指令总是一起执行。 

评价指标:IPC、MPKI

2 分支预测发展史

  • 2-bit饱和计数器; 
  • 两级自适应分支预测器及其变体(1991):由局部历史(PAg)或全局历史(GAg)索引PHT;
  • gselect、gshare(1993)[1]: 利用全局历史和分支地址共同预测。gselect中地址低位和全局历史位串联得到预测表的索引;gshare中地址低位和全局历史位异或得到预测表的索引。相比之下,gshare充分利用了全局历史和分支地址的每一位,其产生的索引也更有区分性,因此也能提高更高的预测准确率。同时 [1] 中还在此基础上提出了 双模态+gshare 的混合预测器。 

  • Bimodal预测器(1997)[2]:利用分支方向的偏向性(bias),将第二级计数器表根据分支方向的跳转与不跳转分成两部分,每次预测时同时对两部分表进行模式匹配查询,最后通过另一个选择计数器的结果选择使用哪个预测结果,而该计数器由分支地址单独索引。每次更新提供预测的计数器和选择计数器。

  • Perceptron预测器(2001)
  • PPM-like(2005):基于部分匹配的分支预测。
  • GEHL(2005):采用几何历史长度进行预测。
  • TAGE(2006):最多使用8个组件,更多也不会带来性能上的改进。在单个预测器中,是预测准确率最高的。

3 针对H2P分支的预测器

 看过的:BranchNet、wormhole、嵌套loop中的分支、

  • LEB-based预测器 [3]:当循环次数超过局部历史大小时,利用局部历史的预测器并不能提供很好的预测。利用全局历史预测也需要全局历史大小大于循环次数,或者在循环退出前有清楚的分支序列。
  • BP with correctors [4]:在主预测器的基础上添加三个矫正预测器,Two-level corrector,Bimodal corrector、Interval corrector。
  • Wormhole 预测器
  • IMLI预测器
  • DFT预测器 [5]:对出现周期较长的分支进行预测。

:以频域的形式存储历史或使用几何历史长度表都是针对周期较长的分支的解决办法,但前者是针对历史非常长的分支,而后者是针对需要短或中长度历史的分支。

  • 基于数据相关性(data correlation)的预测器:"Branch difference predictor [6]”、“value-based BP [7]”、IRF [8]
  • 基于地址相关性(address correlation)的预测器

4 针对间接分支的预测器

看过的:Bit-level、ITTAGE、 

5 混合分支预测器

6 提高预测准确率的技术

  • 改变历史长度或路径长度
  • 筛选分支历史去除分支历史中的不相关分支。(1)检测ZLBC(code zones with limited branch correlations),重置GHR [9];(2)使用一个传统预测器(CBP)和一个历史变化预测器(VBP),CBP在分支被提交时存储历史,VPB使用一个历史栈,进入一个循环或函数时,当前历史入栈,退出循环时出栈 [10];(3)根据分支地址(低2位)把全局历史分成几组,每个分支实例只能替换同组的另一个分支记录,从而限制混叠 [11];(4)研究发现:有偏向分支不影响一系列非偏向性分支,且一个重复分支的大量实例几乎不能提供额外的价值。因此,在分支相关历史中只存储非偏向性分支历史,且只存储非偏向性分支的最近一个实例,并努力发现预测分支与该实例的关系 [12]
  • 减少内核模式指令造成的混叠
  • 使用减少冲突的索引函数

  • 处理多线程和短线程 [13]
  • 利用错误路径执行的信息 [14]

7 降低分支预测器延迟、存储开销、和功耗的技术

8 Neuran BPs

perceptron

 权重表征着相关程度。

 虽然neural BPs准确率高,但同时也需要较高的开销。例如,在预测过程中需要进行十几或几百个值的点积运算,而这会增加延迟、能耗及空间,且使其无法在真实处理器中实现。

为了降低神经 BP 的实现开销(overhead),一些工作使用了模拟域(analog domain)或忆阻器(memristor)的特性。 虽然这些实现降低了能耗,但它们需要在数字域和模拟域之间进行转换。 

参考文献

[1] S. McFarling, “Combining branch predictors,” Digital Western Research Laboratory, Tech. Rep., 1993.

[2] C.-C. Lee, I.-C. K. Chen, and T. N. Mudge, “The bi-mode branch predictor,” in MICRO, 1997, pp. 4–13.

[3] T. Sherwood and B. Calder, “Loop termination prediction,” in International Symposium on High Performance Computing. Springer, 2000, pp. 73–87.

[4] C. Lai, S.-L. Lu, Y. Chen, and T. Chen, “Improving branch prediction accuracy with parallel conservative correctors,” in Computing frontiers. ACM, 2005, pp. 334–341.

[5] M. Kampe, P. Stenstrom, and M. Dubois, “The FAB predictor: Using fourier analysis to predict the outcome of conditional branches,” in HPCA, 2002, pp. 223–232.

[6] T. H. Heil, Z. Smith, and J. E. Smith, “Improving branch predictors by correlating on data values,” in MICRO, 1999, pp. 28–37.

[7] L. Chen, S. Dropsho, and D. H. Albonesi, “Dynamic data dependence tracking and its application to branch prediction,” in High-Performance Computer Architecture, 2003. HPCA-9 2003. Proceedings. The Ninth International Symposium on. IEEE, 2003, pp. 65–76.

[8] R. Thomas, M. Franklin, C. Wilkerson, and J. Stark, “Improving branch prediction by dynamic dataflow-based identification of correlated branches from a large global history,” in ISCA, 2003, pp. 314–323.

[9] L. Porter and D. M. Tullsen, “Creating artificial global history to improve branch prediction accuracy,” in ICS, 2009, pp. 266–275.

[10] Z. Xie, D. Tong, and X. Cheng, “An energy-efficient branch prediction technique via global history noise reduction,” ISLPED, 2013.

[11] M. Huang, D. He, X. Liu, M. Tan, and X. Cheng, “An energy-efficient branch prediction with grouped global history,” in ICPP,2015, pp. 140–149.

[12] D. Gope and M. H. Lipasti, “Bias-free branch predictor,” in International Symposium on Microarchitecture (MICRO). IEEE, 2014, pp.521–532.

[13] B. Choi, L. Porter, and D. M. Tullsen, “Accurate branch prediction for short threads,ASPLOS, vol. 36, no. 1, 2008.

[14] H. Akkary, S. T. Srinivasan, and K. Lai, “Recycling waste: Exploiting wrong-path execution to improve branch prediction,” in ICS,2003.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值