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

一种混合型分支方向预测方法与流程

2022-07-23 10:11:23 来源:中国专利 TAG:


1.本发明涉及处理器技术领域,具体涉及一种混合型分支方向预测方法。


背景技术:

2.现代处理器为了提高性能,大都会采用流水线(pipeline)技术并行地处理指令。有一类指令为分支指令,在处理分支指令时,为避免或减少因等待分支指令执行结果而造成的流水线停止、阻塞以及冲刷等问题,大多数现代处理器采用分支预测(branch prediction)技术,而一个准确度高的分支预测器(branch predictor)是提高现代处理器性能的关键部件。
3.然而,不同的程序会呈现出不同的特性,很难找到一种放之四海而皆准的分支预测算法,一种分支预测算法可能对某个程序有很高的预测准确度,但是对另一个程序的预测结果却难尽人意。
4.此外,准确度更高的分支预测算法往往代表着更多的硅片面积和更高的功耗,同时也会影响处理器的周期时间。需要在处理器设计的时候仔细进行权衡和折中,以便在硬件消耗、预测准确度和延迟之间找到一个平衡点。
5.现有技术中,通常采用两比特分支预测算法对分支指令的跳转结果进行预测。该算法是根据分支指令的历史跳转信息对饱和计数器进行状态更新,根据饱和计数器的跳转结果预测分支跳转结果。但是采用该算法跳转时,并未考虑其他因素影响,会忽视一些实际中会出现的特殊情况,一种饱和计数器远远无法覆盖到,从而导致预测结果准确率不高。


技术实现要素:

6.针对现有技术的不足,本发明提供了一种混合型分支方向预测方法,所要解决的技术问题在于为了解决相关技术中分支预测状态计数器单一如且硬件消耗较高的问题。
7.本发明通过以下技术方案予以实现:
8.一种混合型分支方向预测方法,用于处理器核,所述方法包括:
9.首先获取当前指令的虚拟地址,对其进行预解码,根据分支指令的特征对预解码操作之后的指令进行识别并分类;其中,当前指令为分支指令时,获取所述分支指令所属线程的分支历史信息;
10.其次,基于所述历史分支信息和所述分支指令的虚拟地址,从模式历史表pht中获取分支指令的分支预测信息,包括:
11.基于所述分支指令的虚拟地址和所述分支指令的历史分支信息,确定模式历史表pht的索引值;将索引值作为索引查询所述pht,获得所述分支指令的分支预测信息。
12.优选的,由于所述分支指令的地址是预先设定的,故直接将每一个地址对应一个pht中的表项,假设每一个表项是一个两比特饱和计数器,因此对于32位的虚拟地址来说,需要2
30
×
2b大小的存储空间,假设指令是字对齐的,不考虑虚拟地址的低两位,显然这样的硬件消耗太过庞大;考虑到并不是所有的指令都是分支指令,因此只取虚拟地址的k比特,
来对应pht中的表项,但是这样会引入新的别名问题,原因是k比特部分相同的不同虚拟地址会对应相同的pht中的表项,从而对表项中的饱和计数器产生影响,降低分支预测准确度;所以为了避免相互干扰,引入所述分支指令的分支历史信息,与k比特的虚拟地址结合之后对应pht中的表项。
13.优选的,当确定与所述pht表项的对应关系,即确定pht的索引值时,可以首先确定分支历史信息的位宽k,然后将所述分支指令的虚拟地址经过哈希处理得到k比特数据,最后通过按位异或、拼接方式得到最终的k比特pht索引值。
14.优选的,将当前所述分支指令通过三条预测通路,使用不同的状态机描述,分别产生预测结果,包括:
15.a)将当前分支指令的虚拟地址经哈希处理后得到与所述分支指令历史信息相同位宽的数据;
16.b)分别使用基于两比特饱和计数器、两比特滞后计数器以及一比特饱和计数器所组成的三条pht预测通路;
17.c)将所述分支指令历史信息与经哈希处理后的数据进行操作,合并信息,得到新的数据,索引三条预测通路的pht得到所述分支指令预测信息;通过所述pht内部三种计数器的状态信息判断所述分支指令是否发生跳转。
18.优选的,采集每条通路产生的预测结果,对于该条通路进行训练,包括:
19.a)在btb内为所述三条通路分别设置一个计数器域;
20.b)根据所述计数器域内计数器的值判断哪条通路有更好的预测准确率,当某一计数器值最大时认为该条通路对于所述分支指令具有较高的预测准确度;
21.c)当再次执行所述分支指令时,将会选择该条通路提供的预测结果作为所述分支指令的最终预测结果。
22.优选的,所述btb为分支目标缓存,与cache结构相似,主要存放着分支指令的目标地址;所述计数器的计数方式,包括:
23.所述计数器均为具有相同位宽的有符号数;
24.当最终分支预测结果错误时,所述各个计数器均进行相应的减操作,当分支预测结果正确时,仅当所述预测计数器之和的绝对值小与某一阈值时,所述各个计数器才进行相应的加操作。
25.优选的,引入具有优先级编码的预测算法,包括:
26.当所述btb内计数器域内的计数值不相等时,优先使用所述计数器值最大的一种所属的pht预测通路的结果作为最终预测结果;
27.当所述btb内计数器域内的计数值相等时,优先使用两比特饱和计数器所对应的pht预测通路的结果作为最终预测结果。
28.优选的,所述两比特饱和计数器的状态转移关系如下:
29.00:计数器处于饱和状态,分支指令本次会被预测不发生,即表示为nt;
30.01:计数器处于不饱和状态,分支指令本次会被预测不发生,即表示为nt;
31.10:计数器处于不饱和状态,分支指令本次会被预测不发生,即表示为t;
32.11:计数器处于饱和状态,分支指令本次会被预测发生,即表示为t;
33.所述饱和计数器的核心在于:当所述分支指令连续两次执行方向都一致时,那么
所述分支指令在第三次执行时,也会有同样的执行方向;而如果所述分支指令只是偶尔发生了一次执行方向的改变时,那么所述分支指令下一次的执行方向不会发生改变。
34.优选的,所述两比特滞后技术器的状态转移关系如下:
35.00:计数器处于预测强转移不成功状态,分支指令本次会被预测不发生,即表示为nt;
36.01:计数器处于预测强转移不成功状态,分支指令本次会被预测不发生,即表示为nt;
37.10:计数器处于预测弱转移成功状态,分支指令本次会被预测不发生,即表示为t;
38.11:计数器处于预测强转移成功状态,分支指令本次会被预测发生,即表示为t。
39.所述滞后计数器的核心在于:所述分支指令在第一次预测执行方向发生错误时,状态会从弱预测状态跳转到相反的强预测状态。
40.优选的,所述一比特饱和计数器的核心在于:所述分支指令的下一次执行方向永远采用上次的执行方向。
41.本发明的有益效果为:
42.在预测是否对目标分支指令执行跳转操作时,首先通过采集三个通路中不同状态机的预测结果对该通路进行训练,然后在btb内为各个通路增加训练计数器域,当再次执行到某条分支指令时,通过btb中计数器的值判断哪个通路中的子状态机对该指令具有更好的预测准确度,进而选择该通路提供的预测结果作为最终的分支预测结果。此外,为了避免通路中对应的计数器具有相等的值,导致无法判断使用哪条通路的预测结果,额外引入了具有优先级的预测算法。这提高了分支预测的准确度并有较低的硬件开销。
附图说明
43.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
44.图1是本发明提供的混合型分支方向预测方法的结构图。
45.图2是本发明提供的一种模式历史表索引值生成方法以及预测通路结构图。
46.图3是本发明提供的一种分支历史信息示意图。
47.图4是本发明提供的一种模式历史表pht结构图。
48.图5是本发明提供的一种两比特饱和计数器状态跳转示意图。
49.图6是本发明提供的一种两比特滞后计数器状态跳转示意图。
50.图7是本发明提供的一种一比特饱和计数器状态跳转示意图。
具体实施方式
51.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
52.实施例1:
53.请参阅图1~图7所示:本实施例具体公开提供了一种混合型分支方向预测方法的技术方案,用于处理器核,可以提高分支预测的准确度,并有较低的硬件开销。所述方法包括:
54.首先获取当前指令的虚拟地址,对其进行预解码,根据分支指令的特征对预解码操作之后的指令进行识别并分类;其中,当前指令为分支指令时,获取所述分支指令所属线程的分支历史信息;
55.其次,基于所述历史分支信息和所述分支指令的虚拟地址,从模式历史表pht中获取分支指令的分支预测信息,包括:
56.基于所述分支指令的虚拟地址和所述分支指令的历史分支信息,确定模式历史表pht的索引值;将索引值作为索引查询所述pht,获得所述分支指令的分支预测信息。
57.在本发明的实施例中,由于分支指令的地址是预先设定的,可以直接将每一个地址对应一个pht中的表项(假设每一个表项是一个两比特饱和计数器),因此对于32位的虚拟地址来说,需要2
30
×
2b大小的存储空间(假设指令是字对齐的,不考虑虚拟地址的低两位),显然这样的硬件消耗太过庞大。考虑到并不是所有的指令都是分支指令,因此只取虚拟地址的k比特,来对应pht中的表项,但是这样会引入新的别名问题,原因是k比特部分相同的不同虚拟地址可能会对应相同的pht中的表项,从而对表项中的饱和计数器产生影响,降低分支预测准确度。所以为了避免相互干扰,可以引入所述分支指令的分支历史信息,与k比特的虚拟地址结合之后对应pht中的表项。综上所述,本发明可以直接基于所述分支指令的历史分支信息和所述分支指令的虚拟地址,从pht中获取分支指令的分支预测信息。
58.在本发明的实施例中,确定与pht表项的对应关系,即确定pht的索引值时,可以首先确定分支历史信息的位宽k,然后将所述分支指令的虚拟地址经过哈希处理得到k比特数据,最后通过按位异或、拼接等方式得到最终的k比特pht索引值。
59.在本发明的实施例中,将当前所述分支指令通过三条预测通路,使用不同的状态机描述,分别产生预测结果,包括:
60.a)将当前分支指令的虚拟地址经哈希处理后得到与所述分支指令历史信息相同位宽的数据;
61.b)分别使用基于两比特饱和计数器、两比特滞后计数器以及一比特饱和计数器所组成的三条pht预测通路;
62.c)将所述分支指令历史信息与经哈希处理后的数据进行操作,合并信息,得到新的数据,索引三条预测通路的pht得到所述分支指令预测信息;通过所述pht内部三种计数器的状态信息判断所述分支指令是否发生跳转。
63.在本发明的实施例中,采集每条通路产生的预测结果,对于该条通路进行训练,包括:
64.a)在btb内为所述三条通路分别设置一个计数器域;
65.b)根据所述计数器域内计数器的值判断哪条通路有更好的预测准确率,当某一计数器值最大时认为该条通路对于所述分支指令具有较高的预测准确度;
66.c)当再次执行所述分支指令时,将会选择该条通路提供的预测结果作为所述分支指令的最终预测结果。
67.在本发明的实施例中,所述btb为分支目标缓存,与cache结构相似,主要存放着分支指令的目标地址;所述计数器的计数方式,包括:
68.所述计数器均为具有相同位宽的有符号数;
69.当最终分支预测结果错误时,所述各个计数器均进行相应的减操作,当分支预测结果正确时,仅当所述预测计数器之和的绝对值小与某一阈值时,所述各个计数器才进行相应的加操作。
70.在本发明的实施例中,引入具有优先级编码的预测算法,包括:
71.当所述btb内计数器域内的计数值不相等时,优先使用所述计数器值最大的一种所属的pht预测通路的结果作为最终预测结果;
72.当所述btb内计数器域内的计数值相等时,优先使用两比特饱和计数器所对应的pht预测通路的结果作为最终预测结果。
73.在本发明的实施例中,所述分支预测方法的结构图如图1所示,包括btb选择计数器域、优先级编码单元以及三条预测通路。
74.具体地,所述btb选择计数域包含三条预测通路对应的计数器,所述计数器有如下特征:
75.(1)所述计数器均为具有相同位宽的有符号数;
76.(2)当最终分支预测结果错误时,所述各个计数器均进行相应的减操作;当分支预测结果正确时,仅当所述预测计数器之和的绝对值小与某一设定阈值时,所述各个计数器才进行相应的加操作。
77.具体地,所述优先编码单元,通过btb内计数器值控制最终的分支预测结果:
78.(1)当所述btb内计数器域内的计数值不相等时,优先使用所述计数器值最大的一种所属的pht预测通路的结果作为最终预测结果;
79.(2)当所述btb内计数器域内的计数值相等时,优先使用两比特饱和计数器所对应的pht预测通路的结果作为最终预测结果。
80.具体地,所述三条预测通路,包括:
81.(1)如图2所示的模式历史表pht的索引值生成方式,首先确定分支历史信息的位宽k,然后将所述分支指令的虚拟地址经过哈希处理得到k比特数据,最后通过按位异或、拼接等位处理方式得到最终的k比特pht索引值。
82.(2)如图3所示的分支历史信息结构;
83.(3)如图4所示的模式历史表pht结构。
84.需要说明的是,pht的表项内容为状态机的当前状态,所述三种状态机,分别为三条预测通路中分支模式历史表的表项,包括:
85.(a)如图5所示的两比特饱和计数器的状态转移图,其中:
86.00:计数器处于饱和状态,分支指令本次会被预测不发生(not taken,nt);
87.01:计数器处于不饱和状态,分支指令本次会被预测不发生(nt);
88.10:计数器处于不饱和状态,分支指令本次会被预测不发生(taken,t);
89.11:计数器处于饱和状态,分支指令本次会被预测发生(t)。
90.所述饱和计数器的核心理念是,当所述分支指令连续两次执行方向都一致时,那么所述分支指令在第三次执行时,也会有同样的执行方向;而如果所述分支指令只是偶尔
发生了一次执行方向的改变时,那么所述分支指令下一次的执行方向不会发生改变。这是一种主流的饱和计数器的状态转移图。
91.(b)如图6所示的两比特滞后技术器的状态转移图,其中:
92.00:计数器处于预测强转移不成功状态,分支指令本次会被预测不发生(not taken,nt);
93.01:计数器处于预测强转移不成功状态,分支指令本次会被预测不发生(nt);
94.10:计数器处于预测弱转移成功状态,分支指令本次会被预测不发生(taken,t);
95.11:计数器处于预测强转移成功状态,分支指令本次会被预测发生(t)。
96.所述滞后计数器的核心理念是,所述分支指令在第一次预测执行方向发生错误时,状态会从弱预测状态跳转到相反的强预测状态。在一些情况下的预测准确度高于所述两比特饱和计数器。
97.(c)如图7所示的一比特饱和计数器的状态转移图,其中:
98.所述一比特饱和计数器的核心理念是,所述分支指令的下一次执行方向永远采用上次的执行方向,在某些特殊情况下的准确率远远高于其他计数器。
99.本发明所能达到的技术效果:在预测是否对目标分支指令执行跳转操作时,首先通过采集三个通路中不同状态机的预测结果对该通路进行训练,然后在btb内为各个通路增加训练计数器域,当再次执行到某条分支指令时,通过btb中计数器的值判断哪个通路中的子状态机对该指令具有更好的预测准确度,进而选择该通路提供的预测结果作为最终的分支预测结果。此外,为了避免通路中对应的计数器具有相等的值,导致无法判断使用哪条通路的预测结果,额外引入了具有优先级的预测算法。这提高了分支预测的准确度并有较低的硬件开销。
100.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献