System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机技术,尤其涉及一种分支预测方法、装置、电子设备及介质。
技术介绍
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、跳转模块,用于若读取的所述跳转信息表征确认跳转,则获取所述分支指令对应的跳转地址并执行跳转;若读取的所述跳转信息表征拒本文档来自技高网...
【技术保护点】
1.一种分支预测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,任一分支指令对应的历史表项在所述分支历史表中的位置和该分支指令对应的标签表项在所述分支标签表中的位置相同。
3.根据权利要求2所述的方法,其特征在于,所述根据确定的所述标签表项,在分支历史表中确定一个历史表项,包括:
4.根据权利要求1所述的方法,其特征在于,所述分支标签表包括多个不同线程下的分支指令对应的标签表项,不同线程下的同一分支指令对应不同的标签表项,所述标签表项还包括对应的分支指令所在线程的线程号。
5.根据权利要求4所述的方法,其特征在于,所述分支标签表采用多路组相连结构;所述根据所述当前线程下的分支指令的虚拟地址的部分地址位,在分支标签表中确定一个标签表项,包括:
6.根据权利要求5所述的方法,其特征在于,所述根据所述当前线程下的分支指令的虚拟地址的部分地址位,在分支标签表中确定一个标签表项之后,还包括:
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
8.根据权利要求7所述的方法,其特征
9.根据权利要求1-8任一项所述的方法,其特征在于,所述若读取的所述跳转信息表征确认跳转,则获取所述分支指令对应的跳转地址并执行跳转;若读取的所述跳转信息表征拒绝跳转,则不执行跳转,包括:
10.一种分支预测装置,其特征在于,包括:
11.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
...【技术特征摘要】
1.一种分支预测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,任一分支指令对应的历史表项在所述分支历史表中的位置和该分支指令对应的标签表项在所述分支标签表中的位置相同。
3.根据权利要求2所述的方法,其特征在于,所述根据确定的所述标签表项,在分支历史表中确定一个历史表项,包括:
4.根据权利要求1所述的方法,其特征在于,所述分支标签表包括多个不同线程下的分支指令对应的标签表项,不同线程下的同一分支指令对应不同的标签表项,所述标签表项还包括对应的分支指令所在线程的线程号。
5.根据权利要求4所述的方法,其特征在于,所述分支标签表采用多路组相连结构;所述根据所述当前线程下的分支指令的虚拟地址的部分地址位,在分支...
【专利技术属性】
技术研发人员:郭津榜,刘洋,张稚,
申请(专利权)人:北京市合芯数字科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。