CN113703846A - 一种面向tage分支预测器的新表项分配方法 - Google Patents
一种面向tage分支预测器的新表项分配方法 Download PDFInfo
- Publication number
- CN113703846A CN113703846A CN202111003800.5A CN202111003800A CN113703846A CN 113703846 A CN113703846 A CN 113703846A CN 202111003800 A CN202111003800 A CN 202111003800A CN 113703846 A CN113703846 A CN 113703846A
- Authority
- CN
- China
- Prior art keywords
- tage
- branch predictor
- ctr
- allocation
- indcat
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 241000282326 Felis catus Species 0.000 claims description 23
- 230000009191 jumping Effects 0.000 claims description 7
- 238000013461 design Methods 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 9
- 238000004088 simulation Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- LUTSRLYCMSCGCS-BWOMAWGNSA-N [(3s,8r,9s,10r,13s)-10,13-dimethyl-17-oxo-1,2,3,4,7,8,9,11,12,16-decahydrocyclopenta[a]phenanthren-3-yl] acetate Chemical compound C([C@@H]12)C[C@]3(C)C(=O)CC=C3[C@@H]1CC=C1[C@]2(C)CC[C@H](OC(=O)C)C1 LUTSRLYCMSCGCS-BWOMAWGNSA-N 0.000 description 2
- VJYFKVYYMZPMAB-UHFFFAOYSA-N ethoprophos Chemical compound CCCSP(=O)(OCC)SCCC VJYFKVYYMZPMAB-UHFFFAOYSA-N 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种面向TAGE分支预测器的新表项分配方法,属于处理器的分支预测器设计领域。所述方法包括:根据TAGE分支预测器预测结果的正误产生新表项的分配使能信号;根据Provider内命中表项的信息更新分配使能信号;根据分配使能信号的状态判断是否需为TAGE分支预测器分配新表项。所述方法利用TAGE分支预测器的预测信息,动态调整TAGE分支预测器误预测时新表项的分配概率,以降低冷计数器问题出现的概率,进一步提升传统TAGE分支预测器对那些难以预测的分支指令的预测准确度;且本发明不需设计额外的分支预测表,存储资源占用较低,更适合应用于低功耗低面积的处理器中。
Description
技术领域
本发明涉及一种面向TAGE分支预测器的新表项分配方法,属于处理器的分支预测器设计领域。
背景技术
为了提升处理器的性能,现代处理器大都采用超标量体系结构的思路展开设计。对于超标量处理器来说,在流水线的取指阶段,除了要从指令缓存中取得多条指令,还要根据这些已取得指令的信息预测出下一个周期的取指情况,分支预测器就是一种能完成此预测任务的装置。但是当分支预测器对某条分支指令的预测发生错误时,就需要从流水线中抹除那些已经进入流水线且处在错误预测路径上的指令,并重新从正确的地址继续取出指令,这就浪费了处理器的功耗,并且影响了处理器的指令执行效率。
分支预测器是现代处理器的核心结构之一,预测准确度较高的分支预测器能够更有效地避免由于分支指令预测错误而导致清空流水线的情况发生,从而提高处理器的性能和降低处理器执行无效指令的功耗开销。
TAGE(TAgged GEometric History Length)分支预测器凭借其出色的预测准确度,已成为目前主流的分支预测器之一。然而,TAGE分支预测器也存在着一些问题,其中,冷计数器(cold-counter)问题严重影响着其预测准确度的进一步提升(可参考PierreMichaud.An alternative TAGE-like conditional branch predictor[J].ACM Trans,2018,15(3):1544-3566.)。
造成TAGE分支预测器冷计数器问题的主要原因是:在每次发生预测错误时,TAGE分支预测器都要为预测出错的分支指令分配新表项,表项的内容包含标签tag、饱和计数器ctr以及u位,tag用来确认表项与分支是否匹配,饱和计数器ctr用来确定分支跳转的方向,u位表示表项的有用程度。新表项在分配完成之后,需要根据所属分支指令的信息进行初始化,由于在初始化时无法准确预估出饱和计数器值,因而TAGE分支预测器会根据误预测的分支指令的实际方向将新表项的饱和计数器初始化为一个弱属性的状态(弱跳转或弱不跳转),这就导致新表项需要花费一定的时间去训练饱和计数器值,以提升自身的预测置信度,在训练期间内,TAGE分支预测器的预测准确度一般都很低,会导致很多错误预测。
为了降低冷计数器问题对TAGE分支预测器的影响,提高预测准确度,国内外的专家和学者对此进行了大量的研究。法国国家信息及自动化研究院的AndréSeznec(可参考AndréSeznec.A case for(partially)TAgged GEometric history length branchprediction[J].Journal of Instruction-Level Parallelism,2006.)提出了一种使用元预测器USE_ALT_ON_NA动态监控预测的方法,可实现从Alternator和Provider中选择出预测准确度更高的那个部件的预测结果作为最终的预测输出,当预测错误时,不需要每次都给分支指令分配新表项,因此减少了新表项的分配和训练的次数,有效地改善了TAGE分支预测器存在的冷计数器问题;从2006年起,元预测器USE_ALT_ON_NA被业界公认为TAGE分支预测器中不可或缺的一部分,本申请记载的所有的传统TAGE分支预测器也都是指有元预测器的TAGE分支预测器。然而该方法虽然提升了预测准确度,降低了TAGE分支预测器的冷计数器问题的影响,但是之后的研究表明,在改善TAGE分支预测器冷计数器问题上,还有很大的提升空间。
为了进一步降低冷计数器问题对TAGE分支预测器的影响,AndréSeznec(可参考AndréSeznec.A new case for the TAGE branch predictor[C].In InternationalSymposium on Microarchitecture,2011:117-127.)还提出了一种在上述TAGE分支预测器的构成基础上增加统计偏差矫正器SC(Statistical Corrector)的方法,该方法能够矫正那些TAGE分支预测器难以预测(具有弱偏向性且没有全局历史相关性)的分支指令的预测结果,该方法可以进一步减少新表项的分配和训练过程,从而减少了冷计数器问题出现的概率,提高了预测准确度,但该方法需要设计额外的分支预测表以存储统计偏差矫正器的预测信息,不适用于那些对面积和功耗有严格限制的处理器,比如可穿戴设备、航空航天设备中的处理器。
发明内容
为了降低冷计数器问题对TAGE分支预测器的影响,提升TAGE分支预测器的预测准确度,同时使TAGE分支预测器具有更好地适用性,本发明在传统TAGE分支预测器的基础上,提供了一种面向TAGE分支预测器的新表项分配方法,其特征在于,所述方法包括:
在处理器更新TAGE分支预测器时,TAGE分支预测器根据其上次预测结果的正误产生新表项的分配使能信号ALLOC;
TAGE分支预测器根据Provider内命中表项的饱和计数器值、Provider的预测结果、部件Ti内索引表项的饱和计数器值、部件Ti内索引表项的u位,更新分配使能信号ALLOC;
TAGE分支预测器根据分配使能信号ALLOC的状态判断是否需为当前预测错误的分支指令分配新表项;
其中,所述Ti为tagged部件,i为tagged部件位置编号,P<i≤M,M为tagged部件总数,P为Provider所在的部件位置编号。
可选的,所述TAGE分支预测器根据其预测结果的正误产生新表项的分配使能信号ALLOC,包括:若预测结果为正确,则将分配使能信号ALLOC赋值为0;若预测结果为错误,则将分配使能信号ALLOC赋值为1;
可选的,所述分配使能信号ALLOC的更新步骤包括:
S1:将Provider内命中表项的饱和计数器值记为ctrP,若|2×ctrP+1|≤1且Provider的预测结果为正确,则将分配使能信号ALLOC更新为0,否则不执行任何操作;跳转至S2;
S2:若所述TAGE分支预测器的预测结果为错误,则生成一个取值范围为0~(MINAP-1)的随机数rand,其中MINAP是一个随M增大而增大的常数;
TAGE分支预测器判断随机数rand是否不小于分配节流函数值,若不成立,则将分配使能信号ALLOC更新为0;若成立,不执行任何操作;
可选的,所述分配节流函数为:
f(tage_cat[INDCAT])=(tage_cat[INDCAT]×MINAP)/(CATMAX+1)
可选的,所述分配节流函数的自变量tage_cat[INDCAT]的更新过程包括:
步骤一:将部件Ti内命中表项的饱和计数器值记为ctri,并初始化变量NUM_MLConf_ctr和state_u为0;
步骤二:TAGE分支预测器从部件TP+1开始循环遍历部件Ti内的索引表项,若索引表项的u位为0,则将变量state_u记为1;若|2×ctri+1|等于3,则将变量NUM_MLConf_ctr自加1;若|2×ctri+1|等于1,则立即退出此循环遍历,并跳转至步骤三;
步骤三:利用步骤二得到的NUM_MLConf_ctr和state_u的值计算tage_cat[INDCAT],更新公式为:
tage_cat[INDCAT]=tage_cat[INDCAT]+3-3×NUM_MLConf_ctr-state_u
步骤四:若tage_cat[INDCAT]的值小于0,则将tage_cat[INDCAT]赋值为0;若tage_cat[INDCAT]的值大于CATMAX,则将tage_cat[INDCAT]赋值为CATMAX;否则,保持原值不变。
可选的,所述TAGE分支预测器根据分配使能信号ALLOC的状态判断是否需为TAGE分支预测器分配新表项包括:
若ALLOC等于1,则TAGE分支预测器进行新表项的分配;若ALLOC等于0,则不进行新表项的分配,等待下一次的分支预测。
可选的,所述新表项的分配包括:TAGE分支预测器从部件TP+1开始循环遍历部件Ti内的索引表项,选择出一组部件编号最小且满足分配条件的索引表项进行分配;对于不满足分配条件的索引表项,则衰退其饱和计数器值。
可选的,所述分配条件为:u位为0且|2×ctri+1|≤3。
可选的,所述衰退饱和计数器值的方法包括:若ctri大于0,则将ctri自减1,若ctri小于0,则将ctri自加1。
可选的,所述MINAP的取值范围为4~8。
本发明有益效果是:
本发明提供了一种面向TAGE分支预测器的新表项分配方法,相较于传统TAGE分支预测器的新表项分配方法,该方法能够充分利用TAGE分支预测器的预测信息,如饱和计数器值、u位以及预测结果等,动态地调整TAGE分支预测器误预测时新表项的分配概率,以降低冷计数器问题出现的概率,从而进一步提升TAGE分支预测器预测准确度;而且所述新表项分配方法不需要像统计偏差矫正器SC那样设计额外的分支预测表,存储资源占用较低,更适合应用于低功耗低面积的处理器中。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是TAGE分支预测器的结构示意图。
图2是本发明提供的TAGE分支预测器的新表项分配方法的流程图。
图3是57KB存储空间下应用本发明方法的TAGE分支预测器与传统TAGE分支预测器的APPA对照仿真图。
图4是57KB存储空间下应用本发明方法的TAGE分支预测器与传统TAGE分支预测器的MPKI对照仿真图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
首先对本申请涉及的基础理论知识介绍如下:
TAGE分支预测器的结构如图1所示,由一个非tagged部件(T0)、M个tagged部件(T1~TM)和一个历史寄存器(H)构成。其中,部件T0是由饱和计数器ctr组成的基础预测表,采用指令PC地址进行索引;部件(T1~TM)是由分支指令的标签tag、饱和计数器ctr以及标记此表项是否有用的u位组成的标签预测表,采用指令PC地址与长度为Li的历史的散列结果进行索引,其中LM>LM-1>…>L1>0。
当TAGE分支预测器对分支指令进行预测时,对于部件T0,会直接根据索引表项的饱和计数器给出预测结果,对于部件T1~TM,需要先根据索引表项内的标签tag与散列计算2得到的Tag是否匹配判断本部件是否命中,只有命中时才会根据索引表项的饱和计数器给出预测结果。在得到各个部件的预测情况后,TAGE分支预测器会综合考虑各个部件的预测优先级(部件编号越大优先级越高)和元预测器USE_ALT_ON_NA的信息,选择合适部件的预测结果作为最终预测进行输出。
本申请涉及的TAGE分支预测器的一些常用定义介绍如下:
(1)M:tagged部件的总数;
(2)T0:非tagged部件;
(3)T1~TM:tagged部件;
(4)Index:tagged部件的索引地址;
(5)Provider:标签tag匹配(即命中)且具有最长历史长度的tagged部件,若所有tagged部件的tag均未匹配上,则不存在该部件;
(6)Alternator:标签tag匹配(即命中)且具有次长历史长度的tagged部件,若所有tagged部件的tag均未匹配上,则该部件为非tagged部件T0;
实施例一:
本实施例提供一种面向TAGE分支预测器的新表项分配方法,所述方法包括:
在处理器更新TAGE分支预测器时,TAGE分支预测器根据其预测结果的正误产生新表项的分配使能信号ALLOC;
TAGE分支预测器根据Provider内命中表项的饱和计数器值、Provider的预测结果、部件Ti内索引表项的饱和计数器值、部件Ti内索引表项的u位,更新分配使能信号ALLOC;
TAGE分支预测器根据分配使能信号ALLOC的状态判断是否需为当前预测错误的分支指令分配新表项;
其中,所述Ti为tagged部件,i为部件位置编号,P<i≤M,M为tagged部件总数,P为Provider所在的部件位置编号。
本实施例设计提供了一种面向TAGE分支预测器的新表项分配方法,相较于传统TAGE分支预测器的新表项分配方法,该方法能够充分利用TAGE分支预测器的预测信息,如饱和计数器值、u位以及预测结果等,动态地调整TAGE分支预测器误预测时新表项的分配概率,以降低冷计数器问题出现的概率,从而提升TAGE分支预测器对那些难以预测的分支指令的预测准确度;而且本实施例的新表项分配方法不需要像统计偏差矫正器SC那样设计额外的分支预测表,存储资源占用较低,更适合应用于低功耗低面积的处理器中。
实施例二:
本实施例提供一种面向TAGE分支预测器的新表项分配方法,参见图2,所述方法包括:
首先在处理器更新TAGE分支预测器时,TAGE分支预测器根据其预测结果的正误产生新表项的分配使能信号ALLOC;
然后TAGE分支预测器根据Provider内命中表项的饱和计数器值、Provider的预测结果、部件Ti内索引表项的饱和计数器值、部件Ti内索引表项的u位,更新分配使能信号ALLOC;其中,所述Ti为tagged部件,i为tagged部件位置编号,P<i≤M,M为tagged部件总数,P为Provider所在的部件位置编号;
最后TAGE分支预测器根据分配使能信号ALLOC的状态判断是否需为当前预测错误的分支指令分配新表项,若不需要,则等待下一次的分支预测,若需要,则根据部件Ti内索引表项的饱和计数器值及部件Ti内索引表项的u位选择出一组合适的表项进行分配。
如图2所示,本申请提供的面向TAGE分支预测器的新表项分配方法的具体过程为:
步骤一:TAGE分支预测器根据其预测结果的正误产生新表项的分配使能信号ALLOC,若预测结果为正确,则将分配使能信号ALLOC赋值为0;若预测结果为错误,则将分配使能信号ALLOC赋值为1;跳转至步骤二;
步骤二:将Provider内命中表项的饱和计数器值记为ctrP,若|2×ctrP+1|≤1且Provider的预测结果为正确,则将分配使能信号ALLOC更新为0,否则不执行任何操作;跳转至步骤三;
步骤三:若所述TAGE分支预测器的预测结果为错误,则生成一个取值范围为0~(MINAP-1)的随机数rand,其中MINAP是一个随M增大而增大的常数,MINAP的取值范围为4~8;
然后判断随机数rand分配节流函数f(tage_cat[INDCAT])的大小关系:若随机数rand小于分配节流函数f(tage_cat[INDCAT]),则将分配使能信号ALLOC更新为0;若随机数rand不小于分配节流函数f(tage_cat[INDCAT]),不执行任何操作;跳转至步骤四;
所述分配节流函数f(tage_cat[INDCAT])为:
f(tage_cat[INDCAT])=(tage_cat[INDCAT]×MINAP)/(CATMAX+1);
步骤四:首先将部件Ti内命中表项的饱和计数器值记为ctri,并初始化变量NUM_MLConf_ctr和state_u为0;然后从部件TP+1开始循环遍历部件Ti内的索引表项,若索引表项的u位为0,则将变量state_u记为1;若|2×ctri+1|等于3,则将变量NUM_MLConf_ctr自加1;若|2×ctri+1|等于1,则立即退出此循环遍历,并跳转至步骤五;
步骤五:利用步骤四得到的变量NUM_MLConf_ctr和state_u更新分配节流函数f(tage_cat[INDCAT])的自变量tage_cat[INDCAT]的值:
tage_cat[INDCAT]=tage_cat[INDCAT]+3-3×NUM_MLConf_ctr-state_u
跳转至步骤六。
步骤六:若经过步骤五得到的分配节流函数f(tage_cat[INDCAT])的自变量tage_cat[INDCAT]小于0,则将tage_cat[INDCAT]赋值为0,否则若tage_cat[INDCAT]大于CATMAX,则将tage_cat[INDCAT]赋值为CATMAX,其中CATMAX为NUM_taggedk为各tagged部件(T1~TM)内的表项数;跳转至步骤七;
步骤七:TAGE分支预测器根据当前分配使能信号ALLOC的状态判断是否需要为当前预测错误的分支指令进行新表项的分配,若ALLOC等于1,则跳转至步骤八进行新表项的分配;若ALLOC等于0,则跳转至步骤一以等待下一次的分支预测;
步骤八:TAGE分支预测器从部件TP+1开始循环遍历部件Ti(P<i≤M)内的索引表项,选择出一组部件编号最小且满足分配条件的索引表项进行分配,分配条件为:u位为0且|2×ctri+1|≤3;
对于那些不满足分配条件的索引表项,衰退它们的饱和计数器值,衰退方法为:若ctri大于0,则将ctri自减1,若ctri小于0,则将ctri自加1;然后跳转至步骤一以等待下一次的分支预测。
为了验证本实施例的新表项分配方法对TAGE分支预测器的预测准确度的提升情况,本发明在第五届分支预测锦标赛(The 5th Championship Branch Prediction,https://jilp.org/cbp2016/)提供的仿真模型上进行了算法仿真实验,该仿真模型的测试激励包含4种类别(LONG_SERVER、LONG_MOBILE、SHORT_SERVER、SHORT_MOBILE),共440条应用程序,平均每条应用程序约有上亿条微指令。
本实施例的对照实验采用的是第五届分支预测锦标赛的64KB存储预算组的冠军分支预测器TAGE-SC-L(可参考https://jilp.org/cbp2016/program.html),只使能它的TAGE分支预测器(包含元预测器USE_ALT_ON_NA),未使能它的辅助预测器(统计偏差矫正器SC和循环预测器L),其中,冠军分支预测器TAGE-SC-L的TAGE分支预测器共占用463917-bit(约57KB)的存储空间,以下简称为传统TAGE分支预测器。
传统TAGE分支预测器的参数配置信息如表1所示。
表1传统TAGE分支预测器的参数配置
本实施例在传统TAGE分支预测器的构成基础上设计了本发明提供的面向TAGE分支预测器的新表项分配方法,其中,所述新表项分配方法的实验参数M取值为36、MINAP取值为8、CATMAX取值为147455。
图3展示了在57KB的存储空间限制下,应用本发明方法的TAGE分支预测器与传统TAGE分支预测器的APPA(Allocation Probability Per Application)对照仿真图;APPA为每条应用程序的平均新表项分配概率,能够体现出TAGE分支预测器的新表项分配概率的动态调整情况。图3中横坐标为第五届分支预测锦标赛的440条应用程序(排序后),纵坐标为APPATAGE*-APPATAGE的结果,其中TAGE*表示应用本发明方法的TAGE分支预测器,TAGE表示传统TAGE分支预测器;从图3中的实验结果可以看出,应用本发明方法后,新表项分配概率进行了动态调整,以寻找较为合适的分配概率。
图4展示了在57KB的存储空间限制下,应用本发明方法的TAGE分支预测器与传统TAGE分支预测器的MPKI(Mispredictions Per Thousand Instructions)对照仿真图;MPKI为每1000条指令中被误预测的分支指令数,能够体现出TAGE分支预测器对分支指令的预测准确度。图4中横坐标为第五届分支预测锦标赛的440条应用程序(排序后),纵坐标为MPKITAGE*-MPKITAGE的结果,其中TAGE*表示应用本发明方法的TAGE分支预测器,TAGE表示传统TAGE分支预测器;从图4中的实验结果可以看出,本实施例相对于传统TAGE分支预测器,预测准确度有了进一步的提升。
表2展示了预测第五届分支预测锦标赛的440条应用程序时,各分支预测器的MPKI平均值。
表2各分支预测器的MPKI平均值
分支预测器 | TAGE | TAGE* | TAGE+SC |
存储空间 | 57KB | 57KB | 60KB |
MPKI | 3.684 | 3.557 | 3.475 |
从表2中可以看出,虽然统计偏差矫正器SC将传统TAGE分支预测器的平均MPKI降低了0.209,但是它也额外需要3KB的存储空间开销;本发明方法将传统TAGE分支预测器的平均MPKI降低了0.127,基本不需要额外的存储空间开销。
综上所述,本发明可以动态调整TAGE分支预测器的新表项分配概率,在传统TAGE分支预测器的基础上减少了冷计数器问题出现的次数,从而可以提高传统TAGE分支预测器的预测准确度;相比于设置统计偏差矫正器SC的方法,本发明虽然在提升预测准确度的方面性能稍微逊色,却可以节省额外的存储空间开销,因此本发明在提升预测准确度的同时,可以达到节省开销的目的,对于在面积和功耗有严格限制的处理器上有更好的适用性,比如可穿戴设备、航空航天设备中的处理器等。
本发明实施例中的部分步骤,可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,如光盘或硬盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种面向TAGE分支预测器的新表项分配方法,其特征在于,所述方法包括:
在处理器更新TAGE分支预测器时,TAGE分支预测器根据其预测结果的正误产生新表项的分配使能信号ALLOC;
TAGE分支预测器根据Provider内命中表项的饱和计数器值、Provider的预测结果、部件Ti内索引表项的饱和计数器值、部件Ti内索引表项的u位,更新分配使能信号ALLOC;
TAGE分支预测器根据分配使能信号ALLOC的状态判断是否需为当前预测错误的分支指令分配新表项;
其中,所述Ti为tagged部件,i为tagged部件位置编号,P<i≤M,M为tagged部件总数,P为Provider所在的部件位置编号。
2.根据权利要求1所述的方法,其特征在于,所述TAGE分支预测器根据其预测结果的正误产生新表项的分配使能信号ALLOC,包括:若预测结果为正确,则将分配使能信号ALLOC赋值为0;若预测结果为错误,则将分配使能信号ALLOC赋值为1。
3.根据权利要求2所述的方法,其特征在于,所述分配使能信号ALLOC的更新步骤包括:
S1:将Provider内命中表项的饱和计数器值记为ctrP,若|2×ctrP+1|≤1且Provider的预测结果为正确,则将分配使能信号ALLOC更新为0,否则不执行任何操作;跳转至S2;
S2:若所述TAGE分支预测器的预测结果为错误,则生成一个取值范围为0~(MINAP-1)的随机数rand,其中MINAP是一个随M增大而增大的常数;
TAGE分支预测器判断随机数rand是否不小于分配节流函数值,若不成立,则将分配使能信号ALLOC更新为0;若成立,不执行任何操作。
5.根据权利要求4所述的方法,其特征在于,所述分配节流函数的自变量tage_cat[INDCAT]的更新过程包括:
步骤一:将部件Ti内命中表项的饱和计数器值记为ctri,并初始化变量NUM_MLConf_ctr和state_u为0;
步骤二:TAGE分支预测器从部件TP+1开始循环遍历部件Ti内的索引表项,若索引表项的u位为0,则将变量state_u记为1;若|2×ctri+1|等于3,则将变量NUM_MLConf_ctr自加1;若|2×ctri+1|等于1,则立即退出此循环遍历,并跳转至步骤三;
步骤三:利用步骤二得到的NUM_MLConf_ctr和state_u的值更新tage_cat[INDCAT],更新公式为:
tage_cat[INDCAT]=tage_cat[INDCAT]+3-3×NUM_MLConf_ctr-state_u
步骤四:若tage_cat[INDCAT]的值小于0,则将tage_cat[INDCAT]赋值为0;若tage_cat[INDCAT]的值大于CATMAX,则将tage_cat[INDCAT]赋值为CATMAX;否则,保持原值不变。
6.根据权利要求5所述的方法,其特征在于,所述TAGE分支预测器根据分配使能信号ALLOC的状态判断是否需为TAGE分支预测器分配新表项包括:
若ALLOC等于1,则TAGE分支预测器进行新表项的分配;若ALLOC等于0,则不进行新表项的分配,等待下一次的分支预测。
7.根据权利要求6所述的方法,其特征在于,所述新表项的分配包括:TAGE分支预测器从部件TP+1开始循环遍历部件Ti内的索引表项,选择出一组部件编号最小且满足分配条件的索引表项进行分配;对于不满足分配条件的索引表项,则衰退其饱和计数器值。
8.根据权利要求7所述的方法,其特征在于,所述分配条件为:u位为0且|2×ctri+1|≤3。
9.根据权利要求8所述的方法,其特征在于,所述衰退饱和计数器值的方法包括:若ctri大于0,则将ctri自减1,若ctri小于0,则将ctri自加1。
10.根据权利要求9所述的方法,其特征在于,所述MINAP的取值范围为4~8。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111003800.5A CN113703846A (zh) | 2021-08-30 | 2021-08-30 | 一种面向tage分支预测器的新表项分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111003800.5A CN113703846A (zh) | 2021-08-30 | 2021-08-30 | 一种面向tage分支预测器的新表项分配方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113703846A true CN113703846A (zh) | 2021-11-26 |
Family
ID=78656753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111003800.5A Pending CN113703846A (zh) | 2021-08-30 | 2021-08-30 | 一种面向tage分支预测器的新表项分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113703846A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816032A (zh) * | 2022-06-30 | 2022-07-29 | 飞腾信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013058135A (ja) * | 2011-09-09 | 2013-03-28 | Ritsumeikan | 分岐予測器及びプロセッサ |
US20180136937A1 (en) * | 2016-11-17 | 2018-05-17 | Via Alliance Semiconductor Co., Ltd. | Efficient random number generation for update events in multi-bank conditional branch predictor |
CN111258654A (zh) * | 2019-12-20 | 2020-06-09 | 宁波轸谷科技有限公司 | 指令分支预测方法 |
CN112988233A (zh) * | 2021-02-06 | 2021-06-18 | 江南大学 | 一种面向分支指令预测的偏差矫正器及方法 |
-
2021
- 2021-08-30 CN CN202111003800.5A patent/CN113703846A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013058135A (ja) * | 2011-09-09 | 2013-03-28 | Ritsumeikan | 分岐予測器及びプロセッサ |
US20180136937A1 (en) * | 2016-11-17 | 2018-05-17 | Via Alliance Semiconductor Co., Ltd. | Efficient random number generation for update events in multi-bank conditional branch predictor |
CN111258654A (zh) * | 2019-12-20 | 2020-06-09 | 宁波轸谷科技有限公司 | 指令分支预测方法 |
CN112988233A (zh) * | 2021-02-06 | 2021-06-18 | 江南大学 | 一种面向分支指令预测的偏差矫正器及方法 |
Non-Patent Citations (2)
Title |
---|
李静梅;关海洋;: "基于同时多线程的TBHBP分支预测器研究", 计算机科学, no. 09, 15 September 2012 (2012-09-15) * |
苟鹏飞;喻明艳;杨兵;李清波;王诗博;: "基于类型预测的甚块预测器", 计算机学报, no. 07, 15 July 2012 (2012-07-15) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816032A (zh) * | 2022-06-30 | 2022-07-29 | 飞腾信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN114816032B (zh) * | 2022-06-30 | 2022-09-23 | 飞腾信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI564719B (zh) | 具有多個資料預取器的處理器、所述處理器的操作方法及所述處理器操作的電腦程式產品 | |
US9946549B2 (en) | Register renaming in block-based instruction set architecture | |
US8166486B2 (en) | Adjusting workload to accommodate speculative thread start-up cost | |
CN109308191B (zh) | 分支预测方法及装置 | |
US11636122B2 (en) | Method and apparatus for data mining from core traces | |
Collins et al. | Control flow optimization via dynamic reconvergence prediction | |
TW201905684A (zh) | 對於分支預測機制的統計校正 | |
CN107844380B (zh) | 一种支持指令预取的多核缓存wcet分析方法 | |
CN113703846A (zh) | 一种面向tage分支预测器的新表项分配方法 | |
US11567771B2 (en) | Method and apparatus for back end gather/scatter memory coalescing | |
CN111078295B (zh) | 一种乱序高性能核的混合分支预测装置及方法 | |
US10838731B2 (en) | Branch prediction based on load-path history | |
Sazeides | Modeling value speculation | |
US10613866B2 (en) | Method of detecting repetition of an out-of-order execution schedule, apparatus and computer-readable medium | |
US11580032B2 (en) | Technique for training a prediction apparatus | |
Vardhan et al. | Exploiting critical data regions to reduce data cache energy consumption | |
US20220035632A1 (en) | Method and Apparatus for Front End Gather/Scatter Memory Coalescing | |
US10620960B2 (en) | Apparatus and method for performing branch prediction | |
Deshmukh et al. | Dfcm++: Augmenting dfcm with early update and data dependence-driven value estimation | |
US10949208B2 (en) | System, apparatus and method for context-based override of history-based branch predictions | |
Li et al. | C3: Cooperative code positioning and cache locking for WCET minimization | |
Otiv et al. | H-pattern: A hybrid pattern based dynamic branch predictor with performance based adaptation | |
Nakamura et al. | Stochastic Iterative Approximation: Software/hardware techniques for adjusting aggressiveness of approximation | |
US11915002B2 (en) | Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata | |
Hicks et al. | Towards an energy efficient branch prediction scheme using profiling, adaptive bias measurement and delay region scheduling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |