一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

通过bypass电路提升loop分支预测算法准确率的方法与流程

2022-08-14 00:05:40 来源:中国专利 TAG:


1.本发明涉及一种通过bypass电路提升loop分支预测算法准确率的方法,属于处理器设计技术领域。


背景技术:

2.在现代超标量处理器设计中,分支预测很大程度影响了处理器的性能,而影响分支预测性能的两个主要因素为精度和速度。在参与某型号处理器的研发中发现,循环指令的最后一条分支指令的方向与之前的方向是不同的,其他预测算法对于循环的最后一条分支指令的预测难度较大。因此对于此类循环指令通常采用loop预测算法预测循环指令是否跳转。但是该预测算法虽然可以实现高精度预测循环指令的跳转方向,但是该分支预测器多作为副分支预测器使用,针对多循环嵌套这一场景,存在预测精度差,速度慢的问题,为了提高loop算法预测精度与速度,对其进行了改进,通过增加bypass反馈电路的技术方案提升该分支预测算法预测精度与速度,进而提高处理器性能。
3.loop算法的原始基本原理如下:
4.countlimitdir
5.预测器包括计数器、循环阈值、预测方向。计算器(count)表示本次循环控制分支指令的状态,阈值(limit)字段为上次循环的循环次数,预测方向(dir)标识的为分支退出的反方向。当检测到循环退出时,将count字段覆盖limit字段,同时,初始化count为1。当count《limit时,dir为分支预测方向,当count=limit,此时循环退出,用dir的反方向作为预测结果。


技术实现要素:

6.本发明提出一种针对循环嵌套场景,增加旁路反馈电路提高loop分支预测算法预测精度和速度的技术实现方案;为通过bypass电路提升loop分支预测算法准确率的方法,采取的技术方案为:
7.一种通过bypass电路提升loop分支预测算法准确率的方法,包括在loop分支预测算法中加入bypass电路,具体方法为:对于三个进入流水线的pc,为pc1、pc2和pc3,分别把pc1、pc2和各自对应的分支预测的结果在流水线后端通过寄存器寄存下来,然后通过bypass电路旁路到流水线的if1阶段;在电路设计中需要在流水线的if3、if4分别加入pc1和pc2的寄存器电路,pc1和pc2满足loop预测器命中时把pc1和pc2的值分别寄存到后续流水线阶段的寄存器上并通过bypass电路旁路到流水线的if1阶段和新进入的pc通过对比电路作对比;对于pc1和pc2的预测结果也要加入寄存器电路把预测结果寄存到后续流水线阶段的寄存器上,if4和if3阶段,并通过bypass电路旁路到流水线的if1阶段,待pc3通过比较电路判断出和pc1或pc2相等时,即可使用if1阶段对应的pc1、pc2旁路预测结果;
8.通过bypass电路提升loop分支预测算法准确率的方法具体为:
9.在if0阶段得到的第一个pc进入混合分支预测器,混合分支预测器的loop预测器
直接使用pc寻址;
10.当pc1在loop预测器中发生命中时,会使用寄存器对pc1进行寄存;同时,命中后会在if1阶段得到分支预测信息,在if2阶段在混合分支预测器中经过比较,得到预测结果,并把流水线if2阶段的预测结果通过寄存pc1_loop_bypass_reg寄存;
11.在下一次if0阶段取到pc2时,随后进入if1阶段,此时pc2会与pc1值进行比较,当第二个pc2和pc1相等时,通过bypass电路复用第一个pc的预测结果和命中信息即(pc1_loop_bypass_reg中的值),反之如果命中loop预测器并寄存pc2和对应预测结果到pc2_loop_bypass_reg;
12.同理对于pc3进入到if1阶段后会和pc1_bypass_reg、pc2_bypass_reg寄存的pc值进行比较,如果和pc1相等预测结果通过bypass电路把pc1_loop_bypass_reg旁路到if1使用;如果和pc2相等预测结果通过bypass电路把pc2_loop_bypass_reg旁路到if1使用;如果不相等且满足命中loop预测器,则把pc2_bypass_reg预测结果覆盖pc1_bypass_reg,并且把第三个pc得到的预测结果存入pc2_bypass_reg。
13.对本发明技术方案的优选,对于第四个pc,如果命中loop预测器,则重复以上流程,在该情况下pc4、pc3、pc2取代刚才的pc3、pc2、pc1成为一个新的三项小组;循环的把pc2、pc3和预测结果pc2_bypass_reg、pc3_bypass_reg寄存下来供后面的pc4预测使用。
14.本发明方法中,提及的loopp预测算法为已知技术,本领域技术人员已知。本发明方法中,提及的bypass电路为已知技术,本领域技术人员已知。
15.本发明与现有技术相比,其有益效果是:
16.本发明方法,由于loop预测器针对循环类指令pc重复出现的概率较大,因此该方案会提高loop算法对循环类指令的正确率,并且减少了查表等操作,降低了算法实现的功耗。
17.本发明方法,该旁路反馈机制实现对于后续的pc进行监控,一旦出现和寄存中的两个pc相同的值,会马上复用前面pc的预测结果,以提高分支预测的精度和速度。
附图说明
18.图1是本发明方法的流程框图。
19.图2是本实施例中loop预测算法的流程图。
具体实施方式
20.下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
21.为使本发明的内容更加明显易懂,以下结合附图1-附图2和具体实施方式做进一步的描述。
22.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
23.如图1所示,对于进入流水线的三个相邻pc(即pc1、pc2、pc3)。图中展示的是pc1和pc2已经进入流水线,pc3正在进入流水线的情况。
24.本发明提出的一种通过bypass电路提升loop分支预测算法准确率的方法,对于三个进入流水线的pc,为pc1、pc2和pc3,分别把pc1、pc2和各自对应的分支预测的结果在流水线后端通过寄存器寄存下来,然后通过bypass电路旁路到流水线的if1阶段;在电路设计中需要在流水线的if3、if4分别加入pc1和pc2的寄存器电路,pc1和pc2满足loop预测器命中时把pc1和pc2的值分别寄存到后续流水线阶段的寄存器上并通过bypass电路旁路到流水线的if1阶段和新进入的pc通过对比电路作对比;对于pc1和pc2的预测结果也要加入寄存器电路把预测结果寄存到后续流水线阶段的寄存器上,if4和if3阶段,并通过bypass电路旁路到流水线的if1阶段,待pc3通过比较电路判断出和pc1或pc2相等时,即可使用if1阶段对应的pc1、pc2旁路预测结果;
25.通过bypass电路提升loop分支预测算法准确率的方法具体为:
26.在if0阶段得到的第一个pc进入混合分支预测器,混合分支预测器的loop预测器直接使用pc寻址;
27.当pc1在loop预测器中发生命中时,会使用寄存器对pc1进行寄存;同时,命中后会在if1阶段得到分支预测信息,在if2阶段在混合分支预测器中经过比较,得到预测结果,并把流水线if2阶段的预测结果通过寄存pc1_loop_bypass_reg寄存;
28.在下一次if0阶段取到pc2时,随后进入if1阶段,此时pc2会与pc1值进行比较,当第二个pc2和pc1相等时,通过bypass电路复用第一个pc的预测结果和命中信息即(pc1_loop_bypass_reg中的值),反之如果命中loop预测器并寄存pc2和对应预测结果到pc2_loop_bypass_reg;
29.同理对于pc3进入到if1阶段后会和pc1_bypass_reg、pc2_bypass_reg寄存的pc值进行比较,如果和pc1相等预测结果通过bypass电路把pc1_loop_bypass_reg旁路到if1使用;如果和pc2相等预测结果通过bypass电路把pc2_loop_bypass_reg旁路到if1使用;如果不相等且满足命中loop预测器,则把pc2_bypass_reg预测结果覆盖pc1_bypass_reg,并且把第三个pc得到的预测结果存入pc2_bypass_reg。
30.对于第四个pc,如果命中loop预测器,则重复以上流程,在该情况下pc4、pc3、pc2取代刚才的pc3、pc2、pc1成为一个新的三项小组;循环的把pc2、pc3和预测结果pc2_bypass_reg、pc3_bypass_reg寄存下来供后面的pc4预测使用。
31.本发明方法,由于loop预测器针对循环类指令pc重复出现的概率较大,因此该方案会提高loop算法对循环类指令的正确率,并且减少了查表等操作,降低了算法实现的功耗。该旁路反馈机制实现对于后续的pc进行监控,一旦出现和寄存中的两个pc相同的值,会马上复用前面pc的预测结果,以提高分支预测的精度和速度。
32.如图2所示,本实施例中带有bypass电路的loop分支预测算法,包括如下步骤:
33.s1、获得pc,生成循环历史表lht的索引字段和部分标识字段,在该步骤中把pc和通过bypass电路旁路来的pc1与pc2做对比,如果不相等进入s2,如果和pc1与pc2其中一个相等,则进入s4;
34.s2、当不等于pc1和pc2时,在获取pc的下一级流水线上,通过索引字段查找出循环分支历史表格的预测项和预测信息,然后进入s3;
35.s3、通过部分标识和读出的预测项,来判断循环历史表是否命中,然后命中则根据命中信息及最后混合预测器仲裁得到最终预测结果,并且用寄存器寄存该pc和最后得到的
最终预测结果;如果不命中则不寄存相关信息。
36.s4、如果在s1步骤pc和pc1相等则将旁路到if1的pc1的预测结果作为最终结果,如果在s1阶段pc和pc2相等则将旁路到if1的pc2的预测结果作为最终结果。
37.本实施例中,生成循环历史表lht,表中每一项中包含10bit的计数器count、10bit的循环上线limit、10bit的tag、3bit的信心confidence、3bit的age和1bit的dir。count字段用于记录本次循环内部的循环次数,limit为上次循环一共的循环次数,tag用于标识lht是否命中,confidence用于判断loop预测器是否学习稳定,age用于lht的替换,dir为循环退出的反方向。由于loop预测器主要预测规整的循环条件分支,其历史信息就在count和limit字段中,无需历史,故其index和tag生成直接采用pc部分字段进行异或操作。
38.lht result_sel:根据生成的index、tag与lht的读出项进行对比,判断是否命中,并将命中项的全部内容输出。同时根据confidence是否为最大值来判断是否将loop预测器的结果替换掉主预测器的预测结果。
39.如图2所示,在loop算法的流程图上增加了对loop预测结果和预测时的hit相关满足条件,通过寄存器寄存到后续流水线,再遇到相同pc值时使用之前的预测结果即可,刚方案不仅能减少再次经过预测算法的功耗,而且由于寄存的预测结果选择的是相对正确的结果,避免预测错误情况的发生,因此可以提高预测结果的正确率。
40.本实施例的方法,根据loop预测器主要预测循环类指令,pc重复出现的概率较大这一特点;通过对命中loop预测器的index和最终预测结果的寄存,并通过bypass电路跑路到流水线的if1阶段,来减少遇到相同pc时发生预测结果出错的概率,提高处理器分支预测对指令预测的准确率。解决由于分支预测错误率较高导致处理器性能下降的问题。
41.本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
42.如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上作出各种变化。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献