预测分支的方法和系统与流程

专利查询5天前  7


本发明涉及分支预测(branch prediction),特别是涉及一种预测分支的方法和系统,可通过查出进入指令获取阶段(instruction fetch stage)的第一指令的程序计数器(program counter,pc)值符合在分支指令前执行的历史指令的历史pc值,以提前获得在第一指令后执行的第二指令的分支目标地址(branch target address)。


背景技术:

1、一般来说,处理器以管线架构(pipelined architecture)执行一连串的多个指令,管线架构可包括指令获取(instruction fetch)、指令解码(instruction decode)及执行(execute)等的多个阶段(stages),且为了提高指令执行效率,可以在管线架构的不同阶段同时处理多个指令。也就是说,当第一指令进入管线架构的第二阶段时,第二指令可同时进入管线架构的第一阶段。

2、具体地,管线架构的指令获取阶段可依序分为第一指令获取阶段及第二指令获取阶段。另外,指令可包括分支指令,用来改变指令执行的顺序。然而,一旦分支指令在第二指令获取阶段确定分支采用(taken),处理器就要清除(flush)已进入第一指令获取阶段的下一个指令,即清除掉该下一个指令的指令地址,以至于浪费了一个时钟周期。


技术实现思路

1、本发明所要解决的技术问题在于,针对现有技术的不足提供一种预测分支的方法和系统,可通过查出进入指令获取阶段的第一指令的pc值符合在分支指令前执行的历史指令的历史pc值,以提前获得在第一指令后执行的第二指令的分支目标地址。

2、为了解决上述的技术问题,本发明所采用的其中一个技术方案是提供一种预测分支的方法。此方法适用于以管线架构执行一连串的多个指令的处理器,这些指令分别具有多个pc值,管线架构包括第一指令获取阶段及第二指令获取阶段,且此方法包括:当这些指令的第一指令进入第一指令获取阶段时,配置分支预测器读取储存多个参考pc值以及分别对应这些参考pc值的多个预测目标地址的分支目标缓冲器(branch target buffer,btb),并判断第一指令的pc值是否符合多个参考pc值中的一个,其中分支目标缓冲器储存的这些参考pc值包括分别在多个分支指令前执行的多个历史指令的多个历史pc值,且这些历史pc值对应的预测目标地址则分别为这些分支指令的多个目标地址;以及当第一指令进入第二指令获取阶段时,响应于判断第一指令的pc值符合多个参考pc值中的一个,根据一预测计数器值进行分支预测,并且响应于分支预测的结果为分支采用,根据分支目标缓冲器储存的这些预测目标地址,选择一分支目标地址。

3、为了解决上述的技术问题,本发明所采用的另外一个技术方案是提供一种预测分支的系统。此系统适用于以管线架构执行一连串的多个指令的处理器,这些指令分别具有多个pc值,管线架构包括第一指令获取阶段及第二指令获取阶段,且此系统包括分支预测器。分支预测器包括分支目标缓冲器,分支目标缓冲器储存多个参考pc值以及分别对应这些参考pc值的多个预测目标地址,且分支预测器经配置执行下列步骤:当这些指令的第一指令进入第一指令获取阶段时,读取分支目标缓冲器,并判断第一指令的pc值是否符合多个参考pc值中的一个,其中分支目标缓冲器储存的这些参考pc值包括分别在多个分支指令前执行的多个历史指令的多个历史pc值,且这些历史pc值对应的预测目标地址则分别为这些分支指令的多个目标地址;以及当第一指令进入第二指令获取阶段时,响应于判断第一指令的pc值符合多个参考pc值中的一个,根据一预测计数器值进行分支预测,并且响应于分支预测的结果为分支采用,根据分支目标缓冲器储存的这些预测目标地址,选择一分支目标地址。

4、为更进一步了解本发明的特征及技术内容,请参阅以下有关本发明的详细说明与附图,然而所提供的附图仅用于提供参考与说明,并非用来对本发明加以限制。



技术特征:

1.一种预测分支的方法,适用于一处理器,所述处理器以一管线架构执行一连串的多个指令,所述多个指令分别具有多个程序计数器值,所述管线架构包括一第一指令获取阶段及一第二指令获取阶段,且所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述分支目标缓冲器还储存分别对应所述多个参考pc值的多个旗标值,且所述多个旗标值中的每一个表示对应的参考pc值为所述多个历史pc值中的一个。

3.根据权利要求2所述的方法,其特征在于,判断所述第一指令的所述pc值是否符合所述多个参考pc值中的一个的步骤包括:

4.根据权利要求3所述的方法,其特征在于,根据所述预测计数器值进行分支预测及根据所述分支目标缓冲器储存的所述多个预测目标地址选择所述分支目标地址的步骤还包括:

5.根据权利要求4所述的方法,其特征在于,响应于判断所述第一指令的所述pc值符合所述多个参考pc值中的一个及所述第一指令的所述pc值不为连续的,所述比较器电路产生一第一类型的一命中信号,且响应于判断所述第一指令的所述pc值符合所述多个参考pc值中的一个及所述第一指令的所述pc值为连续的,所述比较器电路则产生一第二类型的所述命中信号。

6.根据权利要求5所述的方法,其特征在于,响应于所述分支预测的结果为分支采用,所述预测电路则产生一采用信号,且所述选择电路还输出包括所述采用信号和所述命中信号的一分支预测信息。

7.根据权利要求6所述的方法,其特征在于,所述管线架构还包括一指令解码阶段和一执行阶段,且所述方法还包括:

8.根据权利要求7所述的方法,其特征在于,还包括:

9.一种预测分支的系统,适用于一处理器,所述处理器以一管线架构执行一连串的多个指令,所述多个指令分别具有多个pc值,所述管线架构包括一第一指令获取阶段及一第二指令获取阶段,且所述系统包括:

10.根据权利要求9所述的系统,其特征在于,所述分支目标缓冲器还储存分别对应所述多个参考pc值的多个旗标值,且所述多个旗标值中的每一个表示对应的所述参考pc值是否为所述多个历史pc值中的一个。


技术总结
本发明提供了一种预测分支的方法和系统,其中方法包括读取储存多个参考程序计数器值以及多个预测目标地址的分支目标缓冲器。参考程序计数器值包括分别在多个分支指令前执行的多个历史指令的多个历史程序计数器值,且历史程序计数器值对应的预测目标地址则分别为分支指令的多个目标地址。因此,可通过查出进入指令获取阶段的第一指令的程序计数器值符合在分支指令前执行的历史指令的历史程序计数器值,以提前获得在第一指令后执行的第二指令的分支目标地址。

技术研发人员:朱致贤,施佑儒
受保护的技术使用者:瑞昱半导体股份有限公司
技术研发日:
技术公布日:2024/12/5

最新回复(0)