分支预测方法、装置、电子设备及介质与流程
- 国知局
- 2024-08-22 14:21:10
本技术涉及计算机技术,尤其涉及一种分支预测方法、装置、电子设备及介质。
背景技术:
1、在计算机体系结构中,指令的执行过程可以分为取指令、指令译码与指令执行三个阶段,其中在取指令阶段,处理器会根据指令的虚拟地址从指令存储中取指令;在指令译码阶段,按照预定的指令格式,对取回的指令进行拆分和解释,识别区分出不同的指令类别以及各种获取操作数的方法;在指令执行阶段,完成指令所规定的各种操作,具体实现指令的功能。当处理器处理分支指令时,根据判定条件的真/假的不同,有可能会产生跳转。如果只是简单的顺序进行取指令、指令译码与指令执行,在指令执行阶段发现存在需要跳转的分支指令时,则需要以计算出的跳转地址为起始地址,重新开始顺序取指令,浪费了处理器的功耗,降低了执行效率。
2、分支预测是一种常见的提升处理器指令吞吐量的优化技术,用于许多高性能处理器中。通过在指令执行阶段之前,提前预测分支指令的跳转情况,来推测性的取得后续指令。该技术不必等到分支指令的执行阶段,在跳转地址计算出来后才重新进行取指令,如果分支预测正确或者正确率较高的话,可以提高处理器的运行效率。
3、分支历史表是大多动态分支预测技术常用的数据结构,该表采用全相连结构,使用分支指令的虚拟地址的部分位进行索引,不同的表项对应不同的分支指令,每个表项存放对应的分支指令是否跳转的预测信息。在指令译码阶段判断存在分支指令后,根据分支指令的虚拟地址查询分支历史表,得到是否跳转的预测信息。若查询结果为进行跳转,则获取分支指令的跳转地址,并基于该跳转地址进行取指令、指令译码以及指令执行操作;若查询结果为不跳转,则不执行调转。但是由于分支历史表仅使用分支指令的虚拟地址的部分位进行索引,实际应用中存在不同的分支指令用于索引的虚拟地址的部分位相同的情况,导致查询分支历史表得到的跳转预测结果的准确性较低,影响处理器的性能。
技术实现思路
1、本技术提供一种分支预测方法、装置、电子设备及介质,用以提升分支预测的准确性,提高处理器性能。
2、一方面,本技术提供一种分支预测方法,包括:
3、在指令译码阶段判定当前线程下取出的指令为分支指令后,获取所述当前线程下的分支指令的虚拟地址的部分地址位;
4、根据所述当前线程下的分支指令的虚拟地址的部分地址位,在分支标签表中确定一个标签表项;所述分支标签表包括多个分支指令对应的标签表项,不同的分支指令对应不同的标签表项;所述标签表项包括对应的分支指令的标签,所述分支指令的标签包括所述分支指令的虚拟地址的最高位至所述部分地址位的高一位;
5、根据确定的所述标签表项,在分支历史表中确定一个历史表项,并读取该历史表项中的跳转信息,该历史表项与所述标签表项对应;
6、若读取的所述跳转信息表征确认跳转,则获取所述分支指令对应的跳转地址并执行跳转;若读取的所述跳转信息表征拒绝跳转,则不执行跳转。
7、可选的,任一分支指令对应的历史表项在所述分支历史表中的位置和该分支指令对应的标签表项在所述分支标签表中的位置相同。
8、可选的,所述根据确定的所述标签表项,在分支历史表中确定一个历史表项,包括:
9、根据确定的所述标签表项在所述分支标签表中的位置,在所述分支历史表中确定一个历史表项,该历史表项在所述分支历史表中的位置与所述标签表项在所述分支标签表中的位置相同。
10、可选的,所述分支标签表包括多个不同线程下的分支指令对应的标签表项,不同线程下的同一分支指令对应不同的标签表项,所述标签表项还包括对应的分支指令所在线程的线程号。
11、可选的,所述分支标签表采用多路组相连结构;所述根据所述当前线程下的分支指令的虚拟地址的部分地址位,在分支标签表中确定一个标签表项,包括:
12、根据所述当前线程下的分支指令的虚拟地址的部分地址位,在所述分支标签表中确定一个标签组;所述分支标签表包含多个标签组,每个标签组下包括多个标签表项,不同的标签组对应不同的所述部分地址位;
13、根据所述当前线程下的分支指令的标签和所述当前线程的线程号,从该标签组中确定一个标签表项,该标签表项中的标签与所述当前线程下的分支指令的标签相同,该标签表项中的线程号与所述当前线程的线程号相同。
14、可选的,所述根据所述当前线程下的分支指令的虚拟地址的部分地址位,在分支标签表中确定一个标签表项之后,还包括:
15、生成命中信息,所述命中信息的位数与所述分支标签表的路数相同,所述命中信息的不同位对应所述分支标签表的不同路,且确定的所述标签表项所在的路在所述命中信息中对应的位的值为第一值,其它位的值为第二值;
16、所述根据确定的所述标签表项在所述分支标签表中的位置,在所述分支历史表中确定一个历史表项,包括:
17、根据所述当前线程下的分支指令的虚拟地址的部分地址位,在所述分支历史表中确定一个历史组;所述分支标签表采用多路组相连结构,所述分支标签表包含多个历史组,每个历史组下包括多个标签表项,不同的历史组对应不同的所述部分地址位;
18、根据所述命中信息中值为所述第一值的位所在的位置,从该历史组中确定出对应的路下的一个历史表项。
19、可选的,所述方法还包括:
20、若所述分支标签表中不存在对应的标签表项,则判定未命中,不执行跳转。
21、可选的,所述方法还包括:
22、若未命中,则根据最近最少使用算法,从所述标签组中选出最不常被访问的标签表项,将该标签表项中的标签和线程号替换为所述当前线程下的分支指令的标签和所述当前线程的线程号。
23、可选的,所述若读取的所述跳转信息表征确认跳转,则获取所述分支指令对应的跳转地址并执行跳转;若读取的所述跳转信息表征拒绝跳转,则不执行跳转,包括:
24、若所述读取的所述跳转信息的高位为1,则获取所述分支指令对应的跳转地址并执行跳转;
25、若所述读取的所述跳转信息的高位为0,则不执行跳转。
26、另一方面,本技术提供一种分支预测装置,包括:
27、获取模块,用于在指令译码阶段判定当前线程下取出的指令为分支指令后,获取所述当前线程下的分支指令的虚拟地址的部分地址位;
28、确定模块,用于根据所述当前线程下的分支指令的虚拟地址的部分地址位,在分支标签表中确定一个标签表项;所述分支标签表包括多个分支指令对应的标签表项,不同的分支指令对应不同的标签表项;所述标签表项包括对应的分支指令的标签,所述分支指令的标签包括所述分支指令的虚拟地址的最高位至所述部分地址位的高一位;
29、读取模块,用于根据确定的所述标签表项,在分支历史表中确定一个历史表项,并读取该历史表项中的跳转信息,该历史表项与所述标签表项对应;
30、跳转模块,用于若读取的所述跳转信息表征确认跳转,则获取所述分支指令对应的跳转地址并执行跳转;若读取的所述跳转信息表征拒绝跳转,则不执行跳转。
31、可选的,任一分支指令对应的历史表项在所述分支历史表中的位置和该分支指令对应的标签表项在所述分支标签表中的位置相同。
32、可选的,所述确定模块,具体用于:
33、根据确定的所述标签表项在所述分支标签表中的位置,在所述分支历史表中确定一个历史表项,该历史表项在所述分支历史表中的位置与所述标签表项在所述分支标签表中的位置相同。
34、可选的,所述分支标签表包括多个不同线程下的分支指令对应的标签表项,不同线程下的同一分支指令对应不同的标签表项,所述标签表项还包括对应的分支指令所在线程的线程号。
35、可选的,所述分支标签表采用多路组相连结构;所述确定模块,还具体用于:
36、根据所述当前线程下的分支指令的虚拟地址的部分地址位,在所述分支标签表中确定一个标签组;所述分支标签表包含多个标签组,每个标签组下包括多个标签表项,不同的标签组对应不同的所述部分地址位;
37、根据所述当前线程下的分支指令的标签和所述当前线程的线程号,从该标签组中确定一个标签表项,该标签表项中的标签与所述当前线程下的分支指令的标签相同,该标签表项中的线程号与所述当前线程的线程号相同。
38、可选的,所述确定模块,还用于:
39、生成命中信息,所述命中信息的位数与所述分支标签表的路数相同,所述命中信息的不同位对应所述分支标签表的不同路,且确定的所述标签表项所在的路在所述命中信息中对应的位的值为第一值,其它位的值为第二值;
40、所述根据确定的所述标签表项在所述分支标签表中的位置,在所述分支历史表中确定一个历史表项,包括:
41、根据所述当前线程下的分支指令的虚拟地址的部分地址位,在所述分支历史表中确定一个历史组;所述分支标签表采用多路组相连结构,所述分支标签表包含多个历史组,每个历史组下包括多个标签表项,不同的历史组对应不同的所述部分地址位;
42、根据所述命中信息中值为所述第一值的位所在的位置,从该历史组中确定出对应的路下的一个历史表项。
43、可选的,所述跳转模块还用于:
44、若所述分支标签表中不存在对应的标签表项,则判定未命中,不执行跳转。
45、可选的,所述装置还包括:
46、更新模块,用于若未命中,则根据最近最少使用算法,从所述标签组中选出最不常被访问的标签表项,将该标签表项中的标签和线程号替换为所述当前线程下的分支指令的标签和所述当前线程的线程号。
47、可选的,所述跳转模块,具体用于:
48、若所述读取的所述跳转信息的高位为1,则获取所述分支指令对应的跳转地址并执行跳转;
49、若所述读取的所述跳转信息的高位为0,则不执行跳转。
50、又一方面,本技术提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,以实现如前所述的方法。
51、又一方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如前所述的方法。
52、本技术提供的分支预测方法、装置、电子设备及介质中,设置存放分支指令虚拟地址高位的分支标签表,在指令译码阶段判定当前线程下取出的指令为分支指令后,根据该分支指令的虚拟地址的部分位,在分支标签表中确定标签表项,该标签表项包含的虚拟地址高位与分支指令的虚拟地址高位相同;在分支历史表中确定该标签表项对应的历史表项,根据历史表项中的跳转信息执行分支指令的跳转或者不跳转。通过比较分支指令的虚拟地址高位,能够准确地获取分支历史表中分支指令对应的历史表项,从而准确地对分支指令是否跳转进行预测,有效提高处理器性能。
本文地址:https://www.jishuxx.com/zhuanli/20240822/278279.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表