一种改进型PAp分支预测方法【专利摘要】一种改进型PAp分支预测方法,包括降低预测器训练时间方法和提高分支预测准确率方法,降低预测器训练时间方法包括:使用一种新的有限状态机来表示跳转指令的跳转方向;改进第一次训练时跳转方向训练方法;以及改进PT表计数器计数规则;提高分支预测准确率方法包括:在取指级当遇到不跳转的跳转指令时,同一个取指包中多取一套预测信息;跳转出错后对PT表计数器正确复位,本发明可降低预测训练时间,提高预测效率并提高预测准确率,从而提高处理器性能。【专利说明】一种改进型PAp分支预测方法
技术领域:
[0001]本发明涉及电子
技术领域:
,特别涉及一种改进型PAp分支预测方法。【
背景技术:
】[0002]现代处理器中,流水线技术被广泛应用,但对于跳转指令,其在流水线技术中应用存在问题。对于不进行分支预测的处理器,当遇到跳转指令时,流水线要被清空,从跳转目标地址重新执行。另一种对待跳转指令的方法是在编译阶段在跳转指令后面加入泡沫等空指令,这样的目的是等跳转指令解码出跳转目标地址后再执行接下来的指令。这些做法都大大地浪费了执行周期,严重降低了处理器的执行效率。对于更深级数流水线来说,跳转损失更加巨大。可以看出,分支预测技术对于处理器性能的提升意义重大。分支预测技术已经是提高处理器性能的关键技术。[0003]根据预测完成阶段的不同,分支预测技术分为静态分支预测与动态分支预测。静态分支预测是在编译阶段完成的,主要方法是延迟跳转。动态分支预测是在硬件中完成,主要方式是双峰预测与两级自适应预测。对于静态分支预测,其硬件结构简单,不需额外增加预测逻辑,但对编译器要求较高,并且通常编译出的代码量较大。动态分支预测增加了额外的硬件开销,但是预测准确率较高,且对编译器要求较低,软件可移植性较强。动态分支预测以其预测准确性的优势越来越受到重视。[0004]动态分支预测中常用到的方法包括双峰预测与两级自适应预测。双峰预测的核心部分是BTB表,表中存储着跳转指令的跳转指令地址BIA(BranchInstruct1nAddress),跳转目标地址BTA(BranchTargetAddress)和分支历史信息BHI(BranchHistoryInformat1n)等信息,通过索弓|BTB表来查找跳转指令的跳转信息,根据查出的信息进行预测。双峰预测的优势在于硬件结构简单,但是准确率较低。[0005]为了克服双峰预测准确率较低的问题,两级自适应预测应运而生。两级自适应预测是在双峰预测的基础上,为每个BTB表项增加一个分支历史模式表(branchhistorypatterntable),通过历史信息来预测当前指令的跳转情况,准确率大大提高。两级自适应预测中比较有代表性的是PAp、GaS、GShare等预测器。两级自适应预测以较小的硬件代价换取了预测准确率的大大提高。本发明采用PAp预测器进行改进,PAp预测器为每个模式表PT(patterntable)维护一个计数器,每个计数值对应一个跳转方向,通过计数值不同来预测跳转指令的不同跳转方向。PAp预测器存在的一个问题是其训练时间较长,即对PT表计数器的每个计数值都要做相应的预测方向训练,采用原有有限状态机每个计数值需要两次训练才能做正确预测。对于较大型的程序,PAp预测器在预测准确率上有明显优势,但是对于中小型程序,由于训练时间较长,在训练过程中的预测准确率较低。【
发明内容】[0006]为了克服上述现有技术的缺点,本发明的目的在于提供一种改进型PAp分支预测方法,可降低预测器训练时间,提高分支预测准确率。[0007]为了实现上述目的,本发明采用的技术方案是:[0008]—种改进型PAp分支预测方法,包括降低预测器训练时间方法和提高分支预测准确率方法,其特征在于:[0009]所述降低预测器训练时间方法包括:使用一种新的有限状态机来表示跳转指令的跳转方向;改进第一次训练时跳转方向训练方法;以及改进PT表计数器计数规则;[0010]所述提高分支预测准确率方法包括:在取指级当遇到不跳转的跳转指令时,同一个取指包中多取一套预测信息;跳转出错后对PT表计数器正确复位。[0011]所述新的有限状态机由00,10,11三个状态组成,00代表跳转方向为不跳转,10与11代表跳转方向为跳转,状态机的初始状态为00,稳定状态为00或11,当第一次遇到跳转指令时,状态由00变为10,跳转指令的PT表计数器中的某项只需一次训练,第二次该项就可以正确预测。[0012]所述改进第一次训练时跳转方向训练方法是指,对于某一跳转指令,第一次训练时,其对应的PT表计数器0000项对应其跳转方向,此时所述0000项中的BHI值被更改,与此同时,所述PT表计数器其他计数项的BHI值也做同样的更改。[0013]所述改进PT表计数器计数规则是指,训练时,当遇到某条跳转指令的跳转方向为不跳转时,该跳转指令对应的PT表计数器计数值清零,该跳转指令的历史跳转信息训练结束。[0014]所述同一个取指包中多取一套预测信息是指,预测时,对取指包中的指令进行遍历BTB表,当遍历到跳转指令时,取得表项中的跳转信息进行预测,如果所述跳转指令的跳转方向为不跳转,则继续遍历所述取指包,如果所述取指包中有另一条跳转指令,则将该所述另一条跳转指令的跳转信息同时取出,与第一条跳转指令信息一同做跳转预测。[0015]所述跳转出错后对PT表计数器正确复位是指,当执行级执行跳转指令时,如果发现预测发生错误,则清空流水线,从正确的位置重新执行,并对预测错的跳转指令对应的PT表计数器清零,同时将其他跳转指令PT表计数器恢复到正确的计数值。[0016]与现有技术相比,本发明可有效降低预测器训练时间,提高预测效率并提高分支预测准确率,进而提高处理器性能。【附图说明】[0017]图1是PAp预测方法示意图。[0018]图2是本发明实施例双发射超标量架构与六发射超长指令字架构混合处理器的流水线不意图O[0019]图3是本发明实施例中PAp预测方法的具体流程示意图。[0020]图4是传统预测方法有限状态机示意图。[0021]图5是改进型有限状态机示意图。[0022]图6是本发明PT表计数信息示意图。[0023]图7是本发明取指包中两条跳转指令的跳转信息示意图。[0024]图8是本发明PT表计数值正确复位方法示意图。【具体实施方式】[0025]下面结合说明书附图对本发明实施例的【具体实施方式】做进一步的描述。下面通过参考附图描述的实施例是示例性的,仅用于解释发明,而不能解释为对本发明的限制。[0026]图1是本发明PAp预测方法示意图,包括降低预测器训练时间方法和提高分支预测准确率方法,降低预测器训练时间方法包括:使用一种新的有限状态机来表示跳转指令的跳转方向;改进第一次训练时跳转方向训练方法;以及改进PT表计数器计数规则;提高分支预测准确率方法包括:在取指级当遇到不跳转的跳转指令时,同一个取指包中多取一套预测信息;跳转出错后对PT表计数器正确复位。[0027]为了能对本发明的实施例有更清楚的认识,本发明提出的改进型PAp分支预测方法是在一款兼容ARM指令集的双发射超标量架构与六发射超长指令字架构混合处理器上实施的,所以下面对本发明实施例提出的双发射超标量架构与六发射超长指令字架构混合处理器的流水线进行简单介绍。如图2所示,是实施例双发射超标量架构与六发射超长指令字架构混合处理器的流水线示意图,流水线设计为十级流水线结构,主要分为Fetch_PG、Fetch_PS、Fetch_WT、Fetch_IR、Fetch_EXP、Dispatch、Decode、Exel、Exe2、Exe3。在该处理器上,指令是以包的形式存在并逐级传递的,包括取指包、扩展包、分发包。取指包是指令获取单元从程序存储器中读取的256位数据包,包含16位与32位指令;扩展包在Fetch_EXP级生成,将16位指令与32位指令统一扩展成32位,每6条指令形成一个扩展包,即192位;分发包在Dispatch级生成,根据分发策略,将并行执行的指令装载在一个分发包中。[0028]图3是本发明实施例PAp预测方法的具体流程示意图,可以看到,PAp预测器由BTB表和分支历史信息PT表两部分组成。BTB表存储跳转指令的跳转信息,包括跳转指令的跳转指令地址BIA(BranchInstruct1nAddress),跳转目标地址BTA(BranchTargetAddress)和分支历史信息BHI(BranchHistoryInformat1n)等。PT表由一个计数器组成,每个计数值对应一个跳转方向信息,其中跳转方向信息由有限状态机状态表示。传统的有限状态机如图4所示,由00,01,11,10四个状态组成,其中00与01表示跳转方向为不跳转,11与10表示跳转方向为跳转。状态机的初始状态为00。对于每个状态机所对应的跳转指令,当其连续两次跳转方向为跳转时,第三次遇到才能正确预测出它的跳转方向。对于PAp预测方法,每个PT表计数值对应一种跳转历史状态,如果PT表计数器为3位,S卩O?7计数,每个状态训练两次,则训练次数为16,训练时间较长。[0029]本发明提出的第一种降低预测训练时间的方法是改进有限状态机,如图5所示,是改进后的新型有限状态机示意图。新型有限状态机由00,10,11三个状态组成,00表示跳转方向为不跳转,10与11表示跳转方向为跳转,状态机初始状态为00,训练后的稳定状态为00或11。当第一次遇到跳转指令时,状态由00变为10,第二次遇到此跳转指令时即可做出跳转预测,由两次训练变为一训练,训练时间减半。[0030]本发明提出的第二种降低预测训练时间的方法是对PT表每个计数项对应跳转方向的训练方法做出改进。如图6所示,是本发明PT表计数信息示意图。当第一次遇到跳转指令时,计数值为0000项对应此次跳转情况,传统方法是训练对该项的状态机状态进行更改,其他计数值对应的状态机状态不变。本发明改进此训练方法,当第一次遇到跳转指令时,不仅对0000项做状态机状态的更改,对其他计数项对应的状态机状态做同0000项一样的更改。这样做的原因在于,对于for(i=0;i〈10;i++)这样的循环,前面多次跳转指令的跳转方向都是跳转,最后一次跳转指令的跳转方向为不跳转,同时训练每个计数项的状态机使得所有跳转方向为跳转的跳转指令只需要一次训练即可。对于改进后的训练方法,只需两次训练即可对跳转指令进行完整的预测。[0031]本发明提出的第三种降低预测训练时间的方法是改进PT表计数器的计数方法。训练时,每当遇到同一条跳转指令,PT表计数器计数值加一并将该次跳转方向存入计数值对应项,当某条跳转指令的跳转方向为不跳转时,PT表计数器计数归零,重新累加计数。图6中,PT表计数器每当遇到跳转指令时加一,计数值为1001时对应的跳转方向为不跳转,则计数值归零,1001后面计数项无效。这样改进的意义在于,对于for(i=0;i〈10;i++)这样的循环,只需记录10次跳转状态,没有必要记录第10次之后的跳转状态。[0032]本发明提出的一种提高预测准确率的方法是取指包取两套跳转预测信息。如图7所示,是取指包中取得两套预测信息示意图。在Fetch_PG级,指令以取指包形式存在,遍历取指包中每条指令并索引BTB表项,如果发现跳转指令,则取出跳转信息进行预测。当发现的跳转指令跳转方向为不跳时,取指包中跳转指令后面的指令仍会执行,如果只取这一条跳转指令的跳转信息,此取指包中其他跳转指令无法预测。所以,当第一条跳转指令BI的跳转方向为不跳转时,继续遍历取指包,如果遍历到第二条跳转指令B2,则BI与B2跳转信息同时取出进行预测。[0033]本发明提出的另一种提高预测准确率的方法是跳转出错后PT表计数器计数值的正确复位。当一条跳转指令按照预测信息进行执行后,如果此预测是错误的,那么它后面执行的指令本不该执行,在预测错误被发现之前,会按照错误的预测执行多条指令,这些指令当中可能存在其他跳转指令,而这些跳转指令本不该执行,也即它们的PT表计数器本不该改变。为解决这种错误的计数,本发明提出跳转出错后PT表计数值正确复位方法。图8是PT表计数值正确复位方法示意图,取两套PT表计数器计数值,一套是预测阶段计数值,另一套是实际执行的计数值,实际执行的计数值代表跳转指令真正执行所对应的计数值,预测阶段的计数值则是为预测而设计的计数值,当预测出错时,实际执行的计数值是正确的计数值,此时需将错误计数值恢复到实际执行计数值即可。[0034]以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本
技术领域:
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。【主权项】1.一种改进型PAp分支预测方法,包括降低预测器训练时间方法和提高分支预测准确率方法,其特征在于:所述降低预测器训练时间方法包括:使用一种新的有限状态机来表示跳转指令的跳转方向;改进第一次训练时跳转方向训练方法;以及改进PT表计数器计数规则;所述提高分支预测准确率方法包括:在取指级当遇到不跳转的跳转指令时,同一个取指包中多取一套预测信息;跳转出错后对PT表计数器正确复位。2.根据权利要求1所述改进型PAp分支预测方法,其特征在于,所述新的有限状态机由OO,10,11三个状态组成,00代表跳转方向为不跳转,10与11代表跳转方向为跳转,状态机的初始状态为00,稳定状态为00或11,当第一次遇到跳转指令时,状态由00变为10。3.根据权利要求1所述改进型PAp分支预测方法,其特征在于,所述改进第一次训练时跳转方向训练方法是指,对于某一跳转指令,第一次训练时,其对应的PT表计数器0000项对应其跳转方向,此时所述0000项中的BHI值被更改,与此同时,所述PT表计数器其他计数项的BHI值也做同样的更改。4.根据权利要求1所述改进型PAp分支预测方法,其特征在于,所述改进PT表计数器计数规则是指,训练时,当遇到某条跳转指令的跳转方向为不跳转时,该跳转指令对应的PT表计数器计数值清零,该跳转指令的历史跳转信息训练结束。5.根据权利要求1所述改进型PAp分支预测方法,其特征在于,所述同一个取指包中多取一套预测信息是指,预测时,对取指包中的指令进行遍历BTB表,当遍历到跳转指令时,取得表项中的跳转信息进行预测,如果所述跳转指令的跳转方向为不跳转,则继续遍历所述取指包,如果所述取指包中有另一条跳转指令,则将该所述另一条跳转指令的跳转信息同时取出,与第一条跳转指令信息一同做跳转预测。6.根据权利要求1所述改进型PAp分支预测方法,其特征在于,所述跳转出错后对PT表计数器正确复位是指,当执行级执行跳转指令时,如果发现预测发生错误,则清空流水线,从正确的位置重新执行,并对预测错的跳转指令对应的PT表计数器清零,同时将其他跳转指令PT表计数器恢复到正确的计数值。7.根据权利要求1所述改进型PAp分支预测方法,其特征在于,所述复位方法为:取两套PT表计数器计数值,一套是预测阶段计数值,另一套是实际执行的计数值,实际执行的计数值代表跳转指令真正执行所对应的计数值,预测阶段的计数值则是为预测而设计的计数值,当预测出错时,实际执行的计数值是正确的计数值,此时将错误计数值恢复到实际执行计数值。【文档编号】G06F9/38GK105867884SQ201610177103【公开日】2016年8月17日【申请日】2016年3月24日【发明人】何虎,付家为,麻军平,王旭,马千里【申请人】清华大学