一种应用于处理器的分支预测方法以及分支预测器

文档序号:33173243发布日期:2023-02-04 03:00阅读:83来源:国知局
1.本发明涉及计算机体系结构领域,具体来说涉及处理器的分支预测
技术领域
:,更具体地说,涉及一种应用于处理器的分支预测方法以及分支预测器。
背景技术
::2.在计算机体系结构中,超标量计算机(即:每一时钟周期可以执行多于一个指令的具有多个处理组件的计算机)可以被用于高级的、计算密集的应用。通常,超标量计算机会采用一个或多个流水线处理器,以更好地处理某些计算密集的计算机程序。3.计算机程序通常包括大量的分支指令,当执行一个分支指令时,需要评估是继续执行存储器中的下一条指令,还是跳转到一条由分支目标地址指定的指令。如果程序运行跳转到分支目标地址指定的分支,则认为一个由分支指令指定的分支被“采纳”(taken),如果继续执行存储器中的下一条顺序指令,则认为“不采纳”(nottaken)。为了避免因等待对分支指令的实际评估而产生的停滞,现代处理器可采用某种形式的分支预测,借此在流水线中早期预测分支指令的分支行为,通过使用未分配的计算资源(即,流水线)提前开始推测执行相应的分支,可以节省执行时间。因此,在处理器发展进程中,分支预测技术作为提高通用处理器性能的重要方法,一直是业界研究的热点问题,不仅普遍使用在高性能处理器中,在功耗敏感的嵌入式处理器中也被广泛采用。4.分支预测策略的设计和应用是影响处理器性能和开销的重要因素。随着现代处理器朝着深流水、超标量和多核方向发展,分支预测单元发生错误预测导致的惩罚越来越不能被接受。同时,分支预测单元本身在处理器前端占据一定面积和功耗开销,这就对分支预测单元的性能和开销设计提出了更高的要求。5.o-gehl(optimizedgeometrichistorylength)分支预测器在第一届分支预测大赛提出(seznec,2004),可有效利用100-200位较长全局历史。o-gehl预测器是在gehl预测器的基础上优化而来。大赛中,64kbits的o-gehl预测器的预测准确率排名第二,并获得了最佳实践奖。o-gehl预测器使用成几何序列的历史长度索引预测表,并用类感知器模式计算预测值,在更好地利用存储资源的同时,表现出对历史长度参数选择的较强鲁棒性。对于苛刻的应用程序,o-gehl预测器中的大部分存储空间专用于相应分支指令的局部历史索引的表;而对不太苛刻的应用程序,则利用多个分支指令公用的非常长的全局历史索引的表。6.tage预测器包含多个不同的预测表,不同预测表所使用的索引历史长度不同,且呈指数趋势增长。预测时,同时索引基础预测表和其他预测表,在命中的预测表中选取索引历史最长的预测表的预测结果作为最终预测结果。tage预测器提升了预测速度和预测准确率,但硬件设计复杂度较高,面积开销较大。同时,单tage预测器使用的地址和历史混合索引机制,不可避免会出现地址冲突导致的干扰,影响预测准确率。7.分支预测机制很大程度上依赖于程序的行为,单机制预测器不会对任何程序都保持较高的准确率。相比于单机制预测器,采用多机制混合分支预测策略是目前高性能处理器中设计分支预测器的通用做法,使用多机制的混合预测器可以实现更高的预测准确度。但是目前的混合分支预测策略的预测准确性仍有待提高。技术实现要素:8.因此,本发明的目的在于克服上述现有技术的缺陷,提供一种应用于处理器的分支预测方法以及分支预测器。9.本发明的目的是通过以下技术方案实现的:10.根据本发明的第一方面,提供一种应用于处理器的分支预测方法,包括:获取tage预测器对分支指令进行分支预测的第一中间参数以及第一预测值;获取gehl预测器对所述分支指令进行分支预测的第二中间参数以及第二预测值;利用预设的组合预测器根据所述分支指令对应的pc值、第一中间参数、第一预测值、第二中间参数以及第二预测值中的指定比特位按照预定的规则重组确定多个子索引,并基于重组的多个子索引确定对应的第三预测值以及第三预测值的置信度;根据所述分支指令对应的pc值、第三预测值以及第三预测值的置信度生成查询索引,利用所述查询索引从预定的模式历史表中确定分支指令对应的最终预测值。11.在本发明的一些实施例中,所述组合预测器被配置为:针对相应子索引设有指示对应子索引的历史分支情况的饱和计数器,并在获取对应分支指令的分支结果后更新该分支指令所关联的子索引对应的饱和计数器;根据一个分支指令对应的多个子索引,基于对应的饱和计数器中的计数值之和确定第三预测值以及第三预测值的置信度。12.在本发明的一些实施例中,所述模式历史表通过饱和计数器存储指示相应查询索引对应分支指令的历史分支情况;所述方法包括:基于相应分支指令对应的查询索引从对应饱和计数器中的计数值中确定该分支指令对应的最终预测值;并且当获取到该分支指令的分支结果后根据对应的最终预测值更新该分支指令所关联的查询索引对应的饱和计数器。13.在本发明的一些实施例中,第一中间参数包括tage预测器对分支指令进行分支预测所对应的提供项、提供项的有效位、候选项;第二中间参数包括gehl预测器对分支指令进行分支预测所对应的求和结果,该求和结果为gehl预测器确定第二预测值的参考;每个子索引按照预定的规则选择分支指令对应的pc值、提供项、提供项的有效位、候选项、求和结果中的指定比特位进行拼接得到,并且其中任意两个子索引所利用的指定比特位存在差异。14.在本发明的一些实施例中,所述多个子索引包括:第一子索引,由第二预测值、第一预测值、pc值的0-7比特位拼接得到,第二子索引,由提供项的有效位、候选项的0-2位、提供项的0-2位、pc值的0-2位拼接得到,第三子索引,由gehl预测器的求和结果的0-4位、pc值的0-4位拼接得到,第四子索引,由gehl预测器的求和结果的0-4位、第二预测值、第一预测值、pc值的0-2位拼接得到,第五子索引,由提供项的有效位、候选项的0-2位、提供项的0-2位、第二预测值、第一预测值、pc值的0位拼接得到。15.在本发明的一些实施例中,所述查询索引的低位至高位依次由第三预测值、第三预测值的置信度以及pc值的0-6位拼接得到。16.在本发明的一些实施例中,所述方法还包括:获取预设的感知机预测器根据分支指令的全局历史以及局部历史的记录对分支指令进行分支预测得到的第四预测值;根据所述分支指令对应的pc值、第三预测值、第三预测值的置信度、第四预测值生成查询索引,基于所述查询索引从预定的模式历史表中确定分支指令对应的最终预测值。17.在本发明的一些实施例中,所述预设的感知机预测器包括:全局历史感知机,用于提供基于全局历史的分段进行感知得到的指示分支方向的感知值,其基于记录所有分支指令整体的分支结果的全局历史训练得到;局部历史感知机,用于提供基于局部历史的分段进行感知得到的指示分支方向的感知值,其基于记录指定分支指令的分支结果的局部历史训练得到;其中,所述第四预测值根据全局历史感知机的感知值和局部历史感知机的感知值得到。18.根据本发明的第二方面,提供一种使用第一方面所述的分支预测方法的分支预测器,包括:tage预测器,用于获取对分支指令进行分支预测的第一中间参数以及第一预测值;gehl预测器,用于获取对所述分支指令进行分支预测的第二中间参数以及第二预测值;组合预测器,用于根据所述分支指令对应的pc值、第一中间参数、第一预测值、第二中间参数以及第二预测值中的指定比特位按照预定的规则重组确定多个子索引,并基于重组的多个子索引确定对应的第三预测值以及第三预测值的置信度;以及最终预测器,用于根据所述分支指令对应的pc值、第三预测值以及第三预测值的置信度生成查询索引,利用所述查询索引从预定的模式历史表中确定分支指令对应的最终预测值。19.在本发明的一些实施例中,分支预测器还包括:感知机预测器,感知机预测器被配置为:根据分支指令的全局历史以及局部历史的记录对分支指令进行分支预测得到第四预测值;其中,最终预测器,用于根据所述分支指令对应的pc值、第三预测值、第三预测值的置信度、第四预测值生成查询索引,基于所述查询索引从预定的模式历史表中确定分支指令对应的最终预测值。20.根据本发明的第三方面,提供一种处理器,包括:分支预测器,其被配置为对待预测的分支指令执行如第一方面所述的分支预测方法以确定该分支指令对应的最终预测值;或者,其采用第二方面所述的分支预测器确定待预测的分支指令对应的最终预测值;一个或者多个处理单元,其被配置为根据所述分支预测器对分支指令对应的最终预测值,推测执行所采用的分支中对应的可执行指令。21.根据本发明的第四方面,提供一种电子设备,包括:一个或多个如第三方面所述的处理器;以及存储器,其中存储器用于存储可执行指令;所述一个或多个处理器被配置为经由执行相应的可执行指令。22.与现有技术相比,本发明的优点在于:23.本发明在预测准确率较高的两种现有分支预测器(即:tage预测器和gehl预测器)的基础上,同时利用两种现有分支预测器的中间参数(产生预测值的中间产物,为了区分,将tage预测器对应的中间参数称为第一中间参数,gehl预测器对应的中间参数称为第二中间参数)及其预测值(为了区分,tgae预测器输出的预测值称为第一预测值,gehl预测器输出的预测值称为第二预测值)与分支指令对应的pc值重组出多个子索引,并基于重组的多个子索引确定对应的第三预测值以及第三预测值的置信度;根据所述分支指令对应的pc值、第三预测值以及第三预测值的置信度生成查询索引,利用所述查询索引从预定的模式历史表中确定分支指令对应的最终预测值。由此,可以进一步提高分支预测的准确性,减少因分支预测错误而导致的开销,从而提升处理器的性能附图说明24.以下参照附图对本发明实施例作进一步说明,其中:25.图1为根据本发明实施例的分支预测方法的流程示意图;26.图2为根据本发明实施例的感知机的结构示意图;27.图3为根据本发明实施例的分支预测方法的查询索引的生成关系示意图。具体实施方式28.为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。29.如在
背景技术
:部分提到的,目前的混合分支预测策略的预测准确性仍有待提高。发明人发现,现有的混合分支预测策略只采用一些现有预测器最终输出的预测值,组合出的索引的地址冲突导致的干扰较大,影响分支预测准确性的进一步提高。因此,本发明在预测准确率较高的两种现有分支预测器(即:tage预测器和gehl预测器)的基础上,同时利用两种现有分支预测器的中间参数(产生预测值的中间产物,为了区分,将tage预测器对应的中间参数称为第一中间参数,gehl预测器对应的中间参数称为第二中间参数)及其预测值(为了区分,tgae预测器输出的预测值称为第一预测值,gehl预测器输出的预测值称为第二预测值)与分支指令对应的pc值重组出多个子索引,并基于重组的多个子索引确定对应的第三预测值以及第三预测值的置信度;根据所述分支指令对应的pc值、第三预测值以及第三预测值的置信度生成查询索引,利用所述查询索引从预定的模式历史表中确定分支指令对应的最终预测值。由此,可以进一步提高分支预测的准确性,减少因分支预测错误而导致的开销,从而提升处理器的性能。30.在对本发明的实施例进行具体介绍之前,先对其中使用到的部分术语作如下解释:31.预测值是指示一个分支是否被预测为采纳的值;预测值为整数值,比如,值为1时表示采纳,值为0时表示不采纳。换言之,预测值是一个预测器对分支指令进行分支预测所输出的结果,用于指示分支预测的结果是跳转还是不跳转;通常用1表示跳转,0表示不跳转。为了区别,后面用第一预测值指代tage预测器输出的结果;用第二预测值指代gehl预测器输出的结果;用最终预测值指代本发明的分支预测方法或者分支预测器输出的结果。32.pc是指程序计数器(programcounter),其用来存放当前欲执行指令的地址。33.分支指令对应的pc值是指分支指令的程序计数值(programcounter,或者称程序计数器的值,记录的是分支指令的地址)。34.预测值的置信度是指示一个分支是否被预测为采纳(采纳对应跳转,不采纳对应不跳转)的置信水平;通常用多比特表示,比如:00表示强不采纳,01表示弱不采纳,10表示弱采纳,11表示强采纳。35.分支结果是指分支指令是否跳转的实际结果。36.根据本发明的一个实施例,参见图1,提供一种应用于处理器的分支预测方法,包括步骤:s1、s2、s3、s4。为了更好地理解本发明,下面结合具体的实施例针对每一个步骤分别进行详细说明。37.在步骤s1中,获取tage预测器对分支指令进行分支预测的第一中间参数以及第一预测值。38.根据本发明的一个实施例,将分支指令的pc(programcount)值输入tage预测器,得到对应的第一预测值。同时,tage预测器中还会存在对应的第一中间参数,可被利用于构造子索引以提高预测精度。优选的,第一中间参数包括tage预测器对分支指令进行分支预测所对应的提供项、提供项的有效位、候选项。其中,tage预测器对分支指令进行分支预测所对应的提供项(通常称provider)是tage预测器中标志(tag)匹配中匹配到的(tagged)历史长度最长的部件。tage预测器的提供项(后面简称提供项)的有效位是用于确认这项与分支指令是否匹配的比特位,通常用u位(u-bit)表示。tage预测器的候选项(通常称altprovider)是tage预测器中标志(tag)匹配中匹配到的(tagged)历史长度次长的部件。39.在步骤s2中,获取gehl预测器对所述分支指令进行分支预测的第二中间参数以及第二预测值。40.根据本发明的一个实施例,将分支指令的pc(programcount)值输入gehl预测器,得到对应的第二预测值。同时,gehl预测器中也存在对应的第二中间参数,可被利用于构造子索引以提高预测精度。优选的,第二中间参数包括gehl预测器对分支指令进行分支预测所对应的求和结果(通常称sumresult),该求和结果为gehl预测器确定第二预测值的参考。该求和结果由gehl预测器中所有预测表输出的记录值的求和,由多个比特(bit)表示,用它来确定gehl预测器的预测值(prediction)。在本发明的实施方式中,gehl预测器可以是指o-gehl预测器或者gehl预测器。但是,优选的,本发明采用o-gehl预测器,以提供更优的预测精度。后面的给出的实验数据是在采用o-gehl预测器的情况下得到的。41.在步骤s3中,利用预设的组合预测器根据所述分支指令对应的pc值、第一中间参数、第一预测值、第二中间参数以及第二预测值中的指定比特位按照预定的规则重组确定多个子索引,并基于重组的多个子索引确定对应的第三预测值以及第三预测值的置信度;42.根据本发明的一个实施例,每个子索引通过按照预定的规则选择分支指令对应的pc值、提供项、提供项的有效位、候选项、求和结果中的指定比特位进行拼接得到,并且其中任意两个子索引所利用的指定比特位存在差异。应当理解,所述组合预测器中预设多个子模式转移表,每个子索引对应于一个子模式转移表中一个指示对应子索引的历史分支情况的饱和计数器。该实施例的技术方案至少能够实现以下有益技术效果:本发明在生成子索引的过程中,不仅用到了tage和gehl预测器的最终预测结果(预测值),还用到了产生最终预测结果的中间参数,从在索引过程中提供更多有效的信息,降低索引地址冲突的影响,提高分支预测的精度。43.为便于理解组合预测器中子索引的构成,下面给出示意性的子索引的形式,根据本发明的一个实施例,所述多个子索引包括:44.第一子索引,由第二预测值、第一预测值、pc值的0-7比特位拼接得到;45.例如,第一子模式转移表pht1对应的第一子索引的各比特位为:46.index0=predictiongehl47.index1=predictiontage48.index9:2=pc7:049.其中,index0表示子索引的第0位,index1表示子索引的第1位,index9:2表示子索引的第2-9位(后面的公式中关于子索引的位数的定义类似,后续不作赘述),predictiongehl表示第二预测值(即gehl预测器的预测值),predictiontage表示第一预测值(即tage预测器的预测值),pc7:0表示分支指令对应的pc值中的0-7位。50.第二子索引,由提供项的有效位、候选项的0-2位、提供项的0-2位、pc值的0-2位拼接得到;51.例如,第二子模式转移表pht2对应的第二子索引的各比特位为:52.index0=u53.index3:1=alt_provider2:054.index6:4=provider2:055.index9:7=pc2:056.其中,u表示提供项的有效位,alt_provider2:0表示候选项的0-2位,provider2:0表示提供项的0-2位,pc2:0表示分支指令对应的pc值中的0-2位。57.第三子索引,由gehl预测器的求和结果的0-4位、pc值的0-4位拼接得到;58.例如,第三子模式转移表pht3对应的第三子索引的各比特位为:59.index4:0=gehl-sum4:060.index9:5=pc4:061.其中,gehl-sum4:0表示gehl预测器的求和结果的0-4位,pc4:0表示分支指令对应的pc值中的0-4位。62.第四子索引,由gehl预测器的求和结果的0-4位、第二预测值、第一预测值、pc值的0-2位拼接得到,63.例如,第四子模式转移表pht4对应的第四子索引的各比特位为:64.index4:0=gehl_sum4:065.index5=predictiongehl66.index6=predictiontage67.index9:7=pc2:068.其中,gehl-sum4:0表示gehl预测器的求和结果的0-4位,predictiongehl表示第二预测值,predictiontage表示第一预测值,pc2:0表示分支指令对应的pc值中的0-2位。69.第五子索引,由提供项的有效位、候选项的0-2位、提供项的0-2位、第二预测值、第一预测值、pc值的0位拼接得到。70.例如,第五子模式转移表pht5对应的第五子索引的各比特位为:71.index0=u72.inde3:1=alt_provider2:073.index6:4=provider2:074.index7=predictiongehl75.inde8=predictiontage76.index9=pc077.其中,u表示提供项的有效位,alt_provider2:0表示候选项的0-2位,provider2:0表示提供项的0-2位,predictiongehl表示第二预测值,predictiontage表示第一预测值,pc0表示分支指令对应的pc值的0位。78.值得注意的是,以上子索引的形式只是取了指定比特位的一个特例加以举例说明,发明人经过多次测试、调整确定了以上子索引的形式。应当理解,实施者在实施时可以根据需要调整,以合理利用pc值、两个预测器的中间参数和预测值来构造有益于提高分支预测精度的子索引,例如,根据需要调整,实施者可对pc值、提供项中所利用的具体比特位进行调整,通过测试以选定其他可用的子索引的形式。79.根据本发明的一个实施例,所述组合预测器被配置为:针对相应子索引设有指示对应子索引的历史分支情况的饱和计数器,并在获取对应分支指令的分支结果后更新该分支指令所关联的子索引对应的饱和计数器;根据一个分支指令对应的多个子索引,基于对应的饱和计数器中的计数值之和确定第三预测值以及第三预测值的置信度。80.根据本发明的一个实施例,组合预测器包括tage预测器、gehl预测器以及5个子模式转移表(patternhistorytable,转移模式历史表)。每个子模式转移表对应的子索引采用10位(bits)的索引位宽,每一项对应预定位宽(比如:3位或者4位)的饱和计数器。在未达到饱和计数器所能记载的最大或者最小的数值前,每次根据分支指令对应的分支结果进行更新,若分支结果为跳转则+1,否则-1。组合预测器的预测过程为:81.1.首先由pc(programcount)值得到tage预测器和gehl预测器的中间参数以及预测值。这部分可以基于开源的tage预测器和gehl预测器得到,因此不再详述;82.2.再通过现有的pc值、tage预测器的中间参数以及预测值、gehl预测器的中间参数以及预测值进行特定组合构造出5个子索引,分别去从5个子模式转移表索引得到每个子模式转移表对应的子预测值;83.3.通过这5个子索引匹配出的子预测值(对应饱和计数器中的值)进行预定的求和处理,得到整个组合预测器输出第三预测值以及第三预测值的置信度。84.上面描述了多个子索引如何从现有的pc值、tage预测器、gehl预测器的中间参数以及预测值(预测结果)进行组合得到。根据子索引在对应的子模式转移表对应的饱和计数器中索引出的计数值计算第三预测值以及第三预测值的置信度。85.根据本发明的一个实施例,第三预测值按照以下方式确定:86.按照预定的求和公式对多个子索引分别在对应的子模式转移表的饱和计数器中索引出的计数值求和,在求和的值大于等于0时第三预测值为跳转,否则第三预测值为不跳转,其中,预定的求和公式为:[0087][0088]其中,m表示子索引的总个数,表示对m项子索引从对应的子模式转移表中索引出的计数值求和的均值偏移(偏移值),c(i)表示根据第i个子索引从对应的子模式转移表中索引出的计数值。例如,若是前述实施例所示的5个子索引,对应的,预定的求和公式为:[0089][0090]其中,是对5个子索引从对应的子模式转移表索引出的计数值求和的均值偏移,c(i)表示根据第i个子索引从对应的子模式转移表中索引出的计数值。当combinar_sum≥0时预测为跳转,combinar_sum<0时预测为不跳转。如前面提到的,子索引从对应的子模式转移表中饱和计数器可采用4位(bits)的饱和计数器。其中记录的值即为c(i)。在未达到饱和计数器所能记载的最大或者最小的数值前,每次根据分支指令对应的分支结果进行更新,若分支结果为跳转则+1,否则-1。[0091]第三预测值的置信度sumtype(和类型)由combinarsum计算而来,如下方公式所示。其中,阈值θ会在每次预测结果返回或者推测更新时更新,sumtype则表示预测结果的可信度,作为一个参数传递给最终预测器。[0092][0093]其中,θ表示预定的阈值。阈值θ可以是固定的值,或者,动态调整的值。优选的,动态调整的阈值的更新逻辑为:当组合预测器预测的第三预测值被证实为一个正确的预测时,如果当前按照预定的求和公式求出的值绝对值小于阈值θ,则阈值θ自减1,否则阈值θ不变;当组合预测器预测的第三预测值被证实为一个错误的预测时,阈值θ自增(以降低下次的置信度)。[0094]在步骤s4中,根据所述分支指令对应的pc值、第三预测值以及第三预测值的置信度生成查询索引,利用所述查询索引从预定的模式历史表中确定分支指令对应的最终预测值。[0095]根据本发明的一个实施例,预定的模式历史表通过饱和计数器存储指示相应查询索引对应分支指令的历史分支情况;相当于最终构造由相应的查询索引和对应的饱和计数器组成的预定的模式历史表,以进一步提供更多有效的信息来提高分支预测的精度。分支预测方法包括:基于相应分支指令对应的查询索引从对应饱和计数器中的计数值中确定该分支指令对应的最终预测值;并且当获取到该分支指令的分支结果后根据对应的最终预测值更新该分支指令所关联的查询索引对应的饱和计数器。根据本发明的一个实施例,查询索引对应的饱和计数器的更新可采用通用的更新方式,即:在未达到饱和计数器所能记载的最大或者最小的数值前,每次根据分支指令对应的分支结果对饱和计数器的计数值进行更新,其中,若分支结果为跳转则+1,否则-1。[0096]根据本发明的一个实施例,查询索引的低位至高位依次由第三预测值、第三预测值的置信度以及pc值的0-6位拼接得到。例如,查询索引表示为:[0097]index0=sign(combinar_sum)[0098]index2:1=sumtype[0099]index9:3=pc6:0[0100]其中,sign(combinar_sum)表示第三预测值,sumtype表示第三预测值的置信度,pc6:0表示分支指令对应的pc值中的0-6位。sign(·)表示符号函数,当combinar_sum≥0时预测为跳转,输出1,否则预测为不跳转,输出0。[0101]发明人通过在模拟器上运行spec2006benchmark的方式进行实验,占用64k存储开销的tage预测器的平均条件分支准确率分别为89.2%,gehl预测器的平均条件分支准确率为88.9%。而本发明的分支预测方法通过对两种现有预测器的中间参数和预测值进行组合,得到的第三预测值的准确率提高到了93.0%。可以看出,本发明的方法有效地降低了索引地址冲突,提高了分支预测准确率。[0102]为了进一步提高分支预测的准确率,还可以加入感知机的预测值。根据本发明的一个实施例,所述分支预测方法还包括:获取预设的感知机预测器根据分支指令的全局历史(本领域通常称globalhistory)以及局部历史(本领域通常称brachhistory))的记录对分支指令进行分支预测得到的第四预测值;根据所述分支指令对应的pc值、第三预测值、第三预测值的置信度、第四预测值生成查询索引,基于所述查询索引从预定的模式历史表中确定分支指令对应的最终预测值。根据本发明的一个实施例,预设的感知机预测器包括:全局历史感知机,用于提供基于全局历史的分段进行感知得到的指示分支方向的感知值,其基于记录所有分支指令整体的分支结果的全局历史训练得到;局部历史感知机,用于提供基于局部历史的分段进行感知得到的指示分支方向的感知值,其基于记录指定分支指令的分支结果的局部历史训练得到;其中,所述第四预测值根据全局历史感知机的感知值和局部历史感知机的感知值得到。该实施例的技术方案至少能够实现以下有益技术效果:本发明利用感知机预测器根据全局历史和局部历史预测的第四预测值来提供进一步的信息,可进一步提高分支预测准确率。[0103]根据本发明的一个实施例,全局历史感知机和局部历史感知机中的任何一个感知机的结构为:感知机包括偏置向量表和针对历史(全局历史感知机对应全局历史,局部历史感知机对应局部历史)的不同分段设置的多个权重向量表(每个分段分别对应一个权重向量表),其中,感知机被配置为:对分支指令的pc值进行哈希得到哈希索引,根据哈希索引从偏置向量表中索引出对应的偏置向量,根据分支指令的pc值进行哈希得到的哈希索引以及历史的不同分段从对应的权重向量表中索引出对应的权重向量,得到多个权重向量;并对偏置向量、索引出的多个权重向量以及预定的均值偏移求和,得到感知机的感知值。其中,感知机被配置按照以下方式更新偏置向量:若出现一次分支结果为跳转,则对应偏置向量自增1,否则自减1;感知机被配置按照以下方式更新权重向量:一个哈希索引以及历史的分段对应的权重向量指示的分支方向与分支结果相同时,该权重向量朝当前指示的分支方向自增1,否则自减1。比如:一个哈希索引以及历史的分段对应的权重向量大于等于0时表示指示的分支方向为跳转,否则为不跳转。应当理解,同一个历史的分段的不同值索引的位置不同,比如,简化来说:假设哈希索引为11010014,每个历史的分段的长度为2bit,则同一个历史的分段有00、01、10、11四种情况,分别与哈希索引组成1101001400、1101001401、1101001410、1101001411四种不同的索引值,会分别从权重向量表的四个位置去索引出对应的权重向量。该实施例的技术方案至少能够实现以下有益技术效果:本发明使用感知机可以修正在循环数较大时,主预测器使用分支历史不长的缺陷,并采用历史分段的方法,相比于简单感知机预测器,在增加能使用的历史长度的同时,减少硬件开销。为了说明原理,下面参见图2以全局历史感知机为例,说明其预测步骤:[0104]1.将分支指令的pc值哈希(hash)到一个哈希索引(hash_index)上;[0105]2.使用哈希索引从偏置向量表w0查找出对应的偏置向量w0,使用哈希索引和全局历史的分段从每个分段对应的权重向量表中索引出对应的权重向量,得到多个权重向量;例如,假设一个历史的分段的长度为step,ghr[step-1:0]表示利用全局历史中的0至step-1的比特位,对应的,可以用pc值的哈希索引以及ghr[step-1:0]从权重向量表w1索引出权重向量w1,可以用pc值的哈希索引以及ghr[2*step-1:step]从权重向量表w2索引出权重向量w2,……,可以用pc值的哈希索引以及ghr[n*step-1:(n-1)step]从权重向量表wn索引出权重向量wn;[0106]3.计算全局历史感知机输出感知值y:[0107][0108]其中,w0表示偏置向量,wi表示第i个权重向量,n表示权重向量的个数,表示预定的均值偏移。假设gwidth表示所使用的历史长度,step表示分段的长度,则预定的均值偏移为[0109]全局历史感知机(局部历史感知机类似,只是采用的历史为局部历史)更新向量的过程就是训练的过程。所有的向量按照以下方式进行以下调整:[0110]1.w0:如当前分支指令的分支结果为跳转,对应w0的值自增1,否则自减1;[0111]2.wi:如果一个哈希索引以及历史的分段对应的权重向量指示的分支方向与分支结果相同时,该权重向量朝当前指示的分支方向自增1,否则自减1。[0112]局部历史感知机的结构和更新方式与全局历史感知机类似,唯一的不同是采用的历史信息为局部历史,此处不作赘述。[0113]在引入感知机预测器的情况下,参见图3,根据本发明的一个实施例,查询索引的低位至高位依次由第四预测值、第三预测值、第三预测值的置信度以及pc值的0-5位拼接得到。例如,查询索引表示为:[0114]index0=sign(perc_sum)[0115]index1=sign(combinar_sum)[0116]index3:2=sumtype[0117]index9:4=pc5:0[0118]其中,sign(perc_sum)表示第四预测值,sign(combinar_sum)表示第三预测值,sumtype表示第三预测值的置信度,pc5:0表示分支指令对应的pc值中的0-5位。perc_sum表示全局历史感知机的感知值与局部历史感知机的感知值之和。sign(perc_sum)表示当perc_sum≥0时,输出的第四预测值为1;否则为0。[0119]发明人经过实验,在引入本发明的感知机预测器(含全局历史以及局部历史感知机)的情况下,本发明提出的分支预测方法能将每千条指令的分支错误数(missedpredictionsperkilo-instructions,mpki)降至4.5,预测准确率进一步升至94.2%。[0120]应当理解,前面的子索引以及两个具体的查询索引的例子仅为示意,本发明对此不作任何限制,本领域技术人员可以利用本发明的原理,调整一些所使用的pc值、第一中间参数、第一预测值、第二中间参数以及第二预测值中的指定比特位,来实现相似的效果。[0121]根据本发明的一个实施例,提供一种使用前述实施例所述的分支预测方法的分支预测器,包括:tage预测器,用于获取对分支指令进行分支预测的第一中间参数以及第一预测值;gehl预测器,用于获取对所述分支指令进行分支预测的第二中间参数以及第二预测值;组合预测器,用于根据所述分支指令对应的pc值、第一中间参数、第一预测值、第二中间参数以及第二预测值中的指定比特位按照预定的规则重组确定多个子索引,并基于重组的多个子索引确定对应的第三预测值以及第三预测值的置信度;以及最终预测器,用于根据所述分支指令对应的pc值、第三预测值以及第三预测值的置信度生成查询索引,利用所述查询索引从预定的模式历史表中确定分支指令对应的最终预测值。优选的,分支预测器还包括:感知机预测器,其被配置为:根据分支指令的全局历史以及局部历史的记录对分支指令进行分支预测得到第四预测值;其中,最终预测器,用于根据所述分支指令对应的pc值、第三预测值、第三预测值的置信度、第四预测值生成查询索引,基于所述查询索引从预定的模式历史表中确定分支指令对应的最终预测值。为了简要,前述实施例的分支预测方法的实施例作为该分支预测器的实施细节,此处不再赘述。[0122]根据本发明的一个实施例,提供一种处理器,包括:前述实施例的分支预测器,用于对待预测的分支指令进行分支预测以确定对应的最终预测值;一个或者多个处理单元,其被配置为根据所述分支预测器对分支指令对应的最终预测值,推测执行所采用的分支中对应的可执行指令。[0123]根据本发明的一个实施例,提供一种电子设备,包括:一个或多个如前述实施例所述的处理器;以及存储器,其中存储器用于存储可执行指令;所述一个或多个处理器被配置为经由执行相应的可执行指令。[0124]需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。[0125]本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。[0126]计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。[0127]以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本
技术领域
:的其它普通技术人员能理解本文披露的各实施例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1