一种提升分支方向预测器预测准确度的方法

文档序号:152904 发布日期:2021-10-26 浏览:31次 >En<

阅读说明:本技术 一种提升分支方向预测器预测准确度的方法 (Method for improving prediction accuracy of branch direction predictor ) 是由 虞致国 郭俊 顾晓峰 于 2021-07-22 设计创作,主要内容包括:本发明公开了一种提升分支方向预测器预测准确度的方法,属于处理器的分支预测器设计领域。所述分支方向预测器在传统分支方向预测器的构成基础上增加分支更新备份器,分支更新备份器包括n路的备份表、HIT检查模块、CTR更新模块和备份地址选择器;所述备份表、HIT检查模块及CTR更新模块顺次连接,且所述备份表、HIT检查模块及CTR更新模块均与所述备份地址选择器连接。本申请相对于现有增加IUM模块的方法,尽可能地考虑分支指令的更多的历史方向,从而更有效地提升分支方向预测器的预测准确度,且通过实验证明,对TAGE预测器预测准确度的修复程度超过80%,有效地解决了TAGE预测器的延迟更新问题。(The invention discloses a method for improving the prediction accuracy of a branch direction predictor, and belongs to the field of design of branch predictors of processors. The branch direction predictor is additionally provided with a branch updating backup device on the basis of the composition of the traditional branch direction predictor, wherein the branch updating backup device comprises an n-path backup table, an HIT (highest likelihood index) check module, a CTR (transfer tree) updating module and a backup address selector; the backup table, the HIT checking module and the CTR updating module are sequentially connected, and the backup table, the HIT checking module and the CTR updating module are all connected with the backup address selector. Compared with the existing method for adding the IUM module, the method considers more historical directions of the branch instruction as much as possible, so that the prediction accuracy of the branch direction predictor is improved more effectively, experiments prove that the repair degree of the prediction accuracy of the TAGE predictor exceeds 80%, and the problem of delay updating of the TAGE predictor is solved effectively.)

一种提升分支方向预测器预测准确度的方法

技术领域

本发明涉及一种提升分支方向预测器预测准确度的方法,属于处理器的分支预测器设计领域。

背景技术

对于现代处理器来说,分支预测器的预测准确度严重影响着处理器的性能。

分支预测器有分支方向预测器和分支目标预测器两类,其中分支方向预测器能对分支指令的方向(跳转或不跳转)进行预测,分支目标预测器能对分支指令的跳转地址进行预测。目前,主流的分支方向预测器包括Bimode、GShare及TAGE-based等,它们均是以多位饱和计数器为基础的预测器。

众所周知,在处理器的流水线中有三个阶段可以对饱和计数器进行更新,分别是取指阶段、执行阶段及提交阶段。在流水线的不同阶段对饱和计数器进行更新,对分支方向预测器的预测准确度是有影响的:(a)在取指阶段时,可以实现对分支方向预测器的及时更新,但是,由于无法保证当前更新的正确性,从而可能会对饱和计数器造成污染,进而对分支方向预测器的预测准确度产生极其严重的影响;(b)在执行或提交阶段(也即分支指令的方向可以被正确地计算出来)时,可以保证其更新的正确性,但是,均会带来延迟更新问题,而延迟更新问题又会对分支方向预测器的预测准确度产生一定的影响。为保守起见,在现实流水线处理器中,一般会选择在执行或提交阶段对饱和计数器进行更新。

法国国家信息及自动化研究院的Seznec等(可参考Seznec A.A new case forthe TAGE branch predictor[C].In International Symposium on Microarchitecture,2011:117-127.)提出了一种在原有分支方向预测器的基础上,增加IUM(ImmediateUpdateMimicker)模块的方法,可较为有效地解决延迟更新的问题。但是,在处理延迟更新问题时,IUM模块只是简单地将分支指令B的上一次历史方向作为本次分支指令B的预测方向,而没有考虑分支指令B的更多的历史方向,因此,IUM模块对延迟更新造成的预测准确度损失的修复程度较为有限,约为3/4。

发明内容

为了进一步提高分支方向预测器的预测准确度,本发明基于传统的分支方向预测器,提供了一种可以有效解决延迟更新问题的分支方向预测器。

一种分支方向预测器,包括Index生成模块、分支预测表和预测输出模块,对于包含Tag的分支方向预测器,还包括Tag生成模块和Tag匹配模块,所述分支方向预测器还包括分支更新备份器,所述分支更新备份器包括:

n路的备份表、HIT检查模块、CTR更新模块和备份地址选择器;所述备份表、HIT检查模块及CTR更新模块顺次连接,且所述备份表、HIT检查模块及CTR更新模块均与所述备份地址选择器连接。

可选的,n路的备份表分别用于备份最近n次所述备份地址选择器输出的更新信息,所述更新信息包含饱和计数器更新值ctr*和预测时的Index,对于包含Tag的分支方向预测器,所述更新信息还包含预测时的Tag;

所述HIT检查模块用于根据备份表中的Index检查在处理器对分支预测表的最近n+1次更新中,是否存在对分支预测表的同一表项进行过大于1次更新的情况;对于包含Tag的分支方向预测器,HIT检查模块用于根据备份表中的Index和备份表中的Tag进行检查;

所述CTR更新模块用于根据所述HIT检查模块输出的饱和计数器值和当前分支指令的实际方向,重新计算出饱和计数器的更新值ctr*,并输出给所述备份地址选择器和所述分支预测表;

所述备份地址选择器用于根据所述HIT检查模块的检查结果,从n路的备份表中选择出一路备份表,并将所述CTR更新模块输出的饱和计数器值ctr*和预测时的Index备份到此路备份表中,对于包含Tag的分支方向预测器,还包括将预测时的Tag备份到此路备份表中,以等待下一次处理器对所述分支方向预测器的更新。

可选的,所述HIT检查模块检查近期处理器是否对所述分支预测表的同一表项进行过更新,包括:

(a)若不存在,即在备份表中未命中,则直接将预测时的饱和计数器值ctr0作为输出;

(b)若存在,即在备份表中命中,则将命中的那一路备份表的饱和计数器值ctr1作为输出。

可选的,所述更新值ctr*的计算方式为:

(a)若当前分支指令的实际方向为不跳转,则将ctr0/1减1;

(b)若当前分支指令的实际方向为跳转,则将ctr0/1加1。

可选的,所述备份地址选择器的选择备份表的策略为:

(a)若所述HIT检查模块的检查结果为未命中,则选择最近未使用的一路备份表;

(b)若所述HIT检查模块的检查结果为命中,则选择命中的一路备份表。

可选的,所述Index生成模块、分支预测表、预测输出模块依次相连;

所述Index生成模块用于根据分支指令的PC和历史寄存器的值生成分支预测表的索引地址Index;

所述分支预测表用于存储分支指令的预测信息,所述预测信息为饱和计数器的值ctr0,对于包含Tag的分支方向预测器,所述预测信息还包含用于检测本表项与分支指令是否匹配的tag;

所述预测输出模块用于根据所述分支预测表的索引结果,对于包含Tag的分支方向预测器,还要根据所述Tag匹配模块生成的命中信息,计算出分支指令的预测结果;

所述Tag生成模块用于根据分支指令的PC和历史寄存器的值生成分支指令的Tag;

所述Tag匹配模块用于根据Tag生成模块输出的Tag和索引所述分支预测表得到的tag,检测分支预测表对分支指令的命中情况。

本申请还提供一种提升分支方向预测器预测准确度的方法,所述方法在传统分支方向预测器的构成基础上增加分支更新备份器,所述分支更新备份器包括:

n路的备份表、HIT检查模块、CTR更新模块和备份地址选择器;所述备份表、HIT检查模块及CTR更新模块顺次连接,且所述备份表、HIT检查模块及CTR更新模块均与所述备份地址选择器连接;

所述传统分支方向预测器包括Index生成模块、分支预测表和预测输出模块,对于包含Tag的分支方向预测器,还包括Tag生成模块和Tag匹配模块;

所述传统分支方向预测器中的Index生成模块输出预测时的Index至所述分支更新备份器的备份地址选择器,所述CTR更新模块输出饱和计数器的更新值ctr*至所述分支更新备份器的备份地址选择器,对于包含Tag的分支方向预测器,所述Tag生成模块输出预测时的Tag至所述分支更新备份器的备份地址选择器,以便所述备份地址选择器根据所述HIT检查模块的检查结果,从n路的备份表中选择出一路备份表,并将所述CTR更新模块输出的饱和计数器值ctr*和预测时的Index,对于包含Tag的分支方向预测器,还包括预测时的Tag,备份到此路备份表中,以等待下一次处理器对所述分支预测表的更新。

可选的,所述方法包括:

所述Index生成模块根据分支指令的PC地址和历史寄存器的值生成所述分支预测表的索引地址Index,对于包含Tag的分支方向预测器,所述Tag生成模块会根据分支指令的PC地址和历史寄存器的值生成分支指令的Tag信息,并将所生成的分支指令的Tag信息发送至Tag匹配模块;

所述分支预测表根据所生成的索引地址Index检索出对应表项内的饱和计数器值ctr0,对于包含Tag的分支方向预测器,所述分支预测表根据此索引地址还能检索出对应表项内的tag信息,并将检索出的对应表项内的tag信息发送至Tag匹配模块;

所述预测输出模块根据所述分支预测表输出的饱和计数器值ctr0输出对应的预测结果;

对于包含Tag的分支方向预测器,所述Tag匹配模块根据所述分支指令的Tag信息和对应表项内的tag信息输出分支指令的命中情况;所述预测输出模块根据所述分支预测表输出的饱和计数器值ctr0以及所述Tag匹配模块输出的分支指令的命中情况,输出对应的预测结果;

在处理器对所述分支方向预测器进行更新时,所述分支更新备份器根据所述Index生成模块输出的Index和所述分支预测表输出的饱和计数器值ctr0,得到饱和计数器的更新值ctr*,并更新到所述传统分支方向预测器的分支预测表中,以完成处理器对分支方向预测器的更新;

对于包含Tag的分支方向预测器,所述分支更新备份器根据所述Index生成模块输出的Index和所述分支预测表输出的饱和计数器值ctr0,以及所述Tag生成模块输出的Tag信息,得到饱和计数器的更新值ctr*,并更新到所述传统分支方向预测器的分支预测表中,以完成处理器对分支方向预测器的更新。

可选的,所述传统分支方向预测器包括GShare和TAGE预测器。

本申请还提供一种处理器,所述处理器的分支方向预测器为上述包含分支更新备份器的分支方向预测器。

本发明有益效果是:

1)相对于现有增加IUM模块的方法,本发明提供的分支更新备份器,能使分支方向预测器在处理延迟更新问题时,尽可能地考虑分支指令的更多的历史方向,从而更有效地提升分支方向预测器的预测准确度。

2)本发明提供的分支更新备份器,能根据传统分支方向预测器的特点,设置成相应的表项和合适的路数,适用于多种传统分支方向预测器。

3)实验表明,仅需配置较少路数的备份表即可达到较高的修复程度,因此,本发明提供的分支更新备份器具有较小的功耗和面积开销。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的一种分支方向预测器的结构示意图。

图2是图1中的分支更新备份器的结构示意图。

图3展示了在不同路数的备份表下,分支更新备份器对GShare预测器预测准确度的修复程度仿真图。

图4展示了在不同路数的备份表下,分支更新备份器对TAGE预测器预测准确度的修复程度仿真图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例一:

本实施例提供一种可以有效解决延迟更新问题的分支方向预测器,所述分支方向预测器的结构如图1所示,包括传统分支方向预测器(如GShare、TAGE等)和分支更新备份器。

所述传统分支方向预测器包括Index生成模块、分支预测表和预测输出模块,对于包含Tag的传统分支方向预测器(如TAGE),还包括Tag生成模块和Tag匹配模块。

所述Index生成模块用于根据分支指令的PC和历史寄存器的值生成所述分支预测表的索引地址Index;

所述分支预测表用于存储分支指令的预测信息,所述预测信息为饱和计数器的值ctr0,对于包含Tag的分支方向预测器,所述预测信息还包含用于检测本表项与分支指令是否匹配的tag等;

所述预测输出模块用于根据所述分支预测表的索引结果,对于包含Tag的分支方向预测器,还要根据所述Tag匹配模块生成的命中信息,计算出对分支指令的预测结果;

所述Tag生成模块用于根据分支指令的PC和历史寄存器的值生成分支指令的Tag;

所述Tag匹配模块用于根据Tag生成模块输出的Tag和索引所述分支预测表得到的tag,检测分支预测表对分支指令的命中情况。

所述分支更新备份器的结构如图2所示,包括n路的备份表、HIT检查模块、CTR更新模块和备份地址选择器。

所述备份表用于备份最近n次所述备份地址选择器输出的更新信息,所述更新信息包含饱和计数器更新值ctr*和预测时的Index,对于包含Tag的分支方向预测器,所述更新信息还包含预测时的Tag;

所述HIT检查模块用于根据备份表中的Index,对于包含Tag的分支方向预测器,还要根据备份表中的Tag,检查在处理器对分支预测表的最近n+1次更新中,是否存在对分支预测表的同一表项进行过大于1次更新的情况:

(a)若不存在,即在备份表中未命中,则直接将预测时的饱和计数器值ctr0作为输出;

(b)若存在,即在备份表中命中,则将命中的那一路备份表的饱和计数器值ctr1作为输出。

所述CTR更新模块用于根据所述HIT检查模块输出的饱和计数器值ctr0/1和当前分支指令的实际方向(是否跳转),重新计算出饱和计数器的更新值ctr*,并输出给所述备份地址选择器和所述分支预测表。

其中,计算ctr*的方式为:

(a)若当前分支指令的实际方向为不跳转,则将ctr0/1减1;

(b)若当前分支指令的实际方向为跳转,则将ctr0/1加1。

所述备份地址选择器用于根据所述HIT检查模块的检查结果,从n路的备份表中选择出一路备份表,并将所述CTR更新模块输出的饱和计数器值ctr*和预测时的Index,对于包含Tag的分支方向预测器,还包括预测时的Tag,备份到此路备份表中,以等待下一次处理器对所述分支方向预测器的更新。

其中,选择备份表的策略为:

(a)若所述HIT检查模块的检查结果为未命中,则选择最近未使用的一路备份表;

(b)若所述HIT检查模块的检查结果为命中,则选择命中的一路备份表。

为验证所述分支更新备份器对延迟更新造成的预测准确度损失的修复程度,本发明为GShare预测器和TAGE预测器分别设计了1、2、3、4路备份表的分支更新备份器。

GShare预测器(可参考王伟.乱序处理器分支预测器性能建模[D].东南大学,2017:18-19.)的实验参数为:历史寄存器的宽度为18,模式历史表(PHT)的深度为256K。

TAGE预测器(可参考Seznec A.A new case for the TAGE branch predictor[C].In International Symposium on Microarchitecture,2011:117-127.)的实验参数如表1所示。

表1 TAGE预测器的实验参数

实验是在第三届分支预测锦标赛(The 3rd Championship Branch Prediction,http://www.jilp.org/jwac-2/framework.html)提供的仿真模型上进行的,该仿真模型模拟了一个拥有14级流水线的超标量乱序处理器,该仿真模型的测试激励包含5种类别(CLIENT、INT、MM、SERVER、WS),共约5000万条微指令。

图3为不同路数的备份表下,分支更新备份器对GShare预测器预测准确度的修复程度仿真图,从图3中的实验结果可以看出,在备份表的路数为3时,所述分支更新备份器对GShare预测器预测准确度的修复程度超过80%,有效地解决了GShare预测器的延迟更新问题。

图4为不同路数的备份表下,分支更新备份器对TAGE预测器预测准确度的修复程度仿真图,从图4中的实验结果可以看出,在备份表的路数为2时,所述分支更新备份器对TAGE预测器预测准确度的修复程度超过80%,有效地解决了TAGE预测器的延迟更新问题。

本发明实施例中的部分步骤,可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,如光盘或硬盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:引导页面的生成方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!