Gshare预测方法与混合预测

文章目录[x]
  1. 1:Gshare预测方法
  2. 2:混合预测

本文由本人翻译网页https://news.mynavi.jp/article/architecture-172/的内容,如有错误欢迎指出

Gshare预测方法

在使用传统全局历史分支预测方法时,为了做出更好的预测,通常是通过扩展历史记录表的长度来实现。这样做会获得更高的指令地址分辨率以即更多的PHT寻址地址位数。但是PHT的寻址位数每增加1位,都会导致其大小增加一倍,因此就需要非常大的表来存储分支预测信息,这便是传统全局历史分支预测方法所存在的问题。

为了解决这个问题,可以将分支历史与条件分支命令的地址中部取异或,然后附加比特数相对比较少的条件分支指令地址下部,工作方式如下图所示:

avatar

图中词汇翻译:

词汇 翻译
命令アドレス 指令地址
シフトレジスタ 移位寄存器
グローバル履歴 全局历史记录
コミット機構から 来自提交机构
コミット時のTaken/Not Taken 提交时的跳转/不跳转

对于某个条件分支指令而言,其全局历史是相对恒定的,让PHT同时保存全局历史的所有组合过于浪费,因此将指令地址的中部与全局历史记录进行异或运算,而当指令地址的中部相同时,指令地址下部对应的指令共用几个PHT项,这样兼顾了长全局历史表与PHT大小,改良了传统分支历史分支预测方法中PHT利用效率太差的问题。上图中12bit的全局历史记录与6bit的指令地址下部作为PHT的索引使用。

这种方法虽然使用了全局历史记录,但由于多个条件分支指令共享了一个PHT,因此该方法被称作“Gshare方法”。在各种benchmark中,Gshare方法都表现出了比较高的预测命中率,因此Gshare方法被广泛应用于最近的处理器中。

混合预测

尽管在大多数情况下Gshare是一种比较好的方法,但事实上分支预测方法很大程度上依赖程序的行为,Gshare不可能对于任何一种程序都是最优良的。即使在同一个程序中,程序的有些部分会适合局部历史记录方法,而有些部分则更适合使用全局历史记录的Gshare方法。

而且,在现在的一些处理器中,也开始混合预测方法。这种方法使用两个或两个以上的预测机制,然后在得分表中记录每种预测机制的预测结果,并采用胜率更高的机制的预测结果,具体如下图所示:

avatar

这个得分表,类似于PHT,由指令地址的下部分比特位作为索引进行访问,并采用2~3bit的饱和计数器。当双方预测结果一致的情况下得分不变,当Gshare预测正确时得分+1,当局部历史预测正确时得分-1。然后,在指令译码时,若采用2bit饱和计数器时,当得分>=2(采用3bit饱和计数器时,当得分>=4)时采用Gshare,否则采用局部历史预测方法。一些论文的结果表明,即使在表的总比特数不变的情况下,混合预测的预测精度也比单独使用任何一种算法高。

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据