TAGE预测器 “A case for (partially) TAgged GEometric history length branch prediction”

TAGE预测器 “A case for (partially) TAgged GEometric history length branch prediction”_第1张图片

结构特点

  • 使用几何级数的历史长度和部分标记。
  • T0是基础预测器,2-bit 计数器表,Ti由3-bit计数器(pred)、2-bit u、tag-bit组成。
  • USE_ALT_ON_NA在部分程序中,对新分配的项使用altpred预测更有效,使用该4-bit计数器在全局上动态监测这一特性。
  • 若一项的预测计数器是弱的则认为它是新分配的。

预测

  • 如果预测计数器不是弱的或者USE_ALT_ON_NA是无效的,则采用正常最长匹配的组件进行预测,否则使用altpred。

预测器更新

  • Provider component:历史最长的匹配组件;
  • Alternate predictor(altpred):例如如果T2和T4的tag都匹配,则T2为altpred。
  • 更新u-bit:当altpred不同于最终预测时,更新provider component的u-bit,实际预测正确时递增否则递减(即最终预测采用的是provider的预测,因此要更新provider的u-bit )。此外,需周期性重置u-bit(作为age counter),以避免一些项被一直标记为有效,最高位列全部置为0,一段时间后,最低位列全部置为0(文中周期是每256K个分支)。
  • USE_ALT_ON_NA:部分程序中使用altpred预测更为有效。
  • 周期性重置u-bit:先重置整列最高位,经过一段时间再重置最低位,以防止使用率不高的项一直保存再预测器中。
  • 更新预测计数器:提供预测的组件的预测计数器被更新。
  • 分配新项:预测错误时需分配新项;如果provider component Ti不是使用最长历史长度的,则选择在一个Tk(k>M)上分配新项。读取所有Tj(i

分支历史管理:TAGE依赖于使用非常长的全局分支历史(几百位),全局分支历史和路径历史是推测性更新的,因此在错误预测时需要恢复。通过循环缓冲区(circular buffer)存储分支历史来实现。恢复分支历史和路径历史包括恢复头指针。

具体实现中的问题

A. 预测响应时间:正常需要3个周期

预测响应时间 = 索引计算时间 + 查表时间 + 预测计算逻辑时间

  • 索引计算:使用单级 3 项异或门的非常简单的索引函数可用于索引预测器组件,而不会显着影响预测精度。(VS 全散列函数)
  • 读预测表:延迟取决于表的大小,tag 计算可以在索引计算和读表取期间执行而不影响整体预测计算时间。
  • 预测计算逻辑:标签匹配,预测选择,标签匹配计算是对从标签组件流出的标签并行执行的。

B. 解决预测响应时间大于一个周期的问题:提前流水线

       在周期 T0-X 处,使用 X 块提前程序计数器和 X 块提前全局历史读取预测表。同时计算得到2^{x}个预测结果,最后X块用于选择最后的预测。

        预测计算:假设预测计算过程需要 X-1 个周期,预测计算需如下两步。

  1. T0-X 周期:预测计算用 T0-X 周期时可用的信息初始化,即 此时的地址和历史h。除此之外还需要从 T0-X 到 T0 的路径上的信息。 X 位的向量 V 包含路径上的信息,在T0-X时向量V的值还不知道,因此有2^{X}种可能,同时计算2^{X}个预测。
  2. T0 周期:在T0-1周期结束的时候,2^{X}个预测都已经得到,且在T0时,向量V的实际值已经知道,用实际的V去选择对应的预测结果。 

 

性能评估

8-组件的预测器,一个64 Kbits的O-GEHL预测器是2.83MPKI,TAGE是2.61;1Mbit 8-组件的O-GEHL是2.27,1 Mbit 8-组件的TAGE是2.05。

一个128 Kbits 8-组件的TAGE(2.36)和一个512 Kbits 8-组件的O-GEHL(2.34)的准组起来差不多。

TAGE预测器 “A case for (partially) TAgged GEometric history length branch prediction”_第2张图片

 历史长度和TAG宽度的影响:

TAGE预测器 “A case for (partially) TAgged GEometric history length branch prediction”_第3张图片

你可能感兴趣的:(Paper,reading,of,Branch,Prediction,硬件架构)