配置方法、分支预测器、指令识别器和电子设备与流程

文档序号:36239633发布日期:2023-12-01 23:35阅读:25来源:国知局
配置方法与流程

本公开的实施例涉及分支目标缓存的配置方法、指令识别器的配置方法、分支预测器、及指令识别器和电子设备。


背景技术:

1、现代cpu核通过流水线技术提高指令间并行度(instruction levelparallelism)来达到高性能。cpu核内部一般有多个流水阶段,比如分支预测(branchprediction)、指令提取(instruction fetch)、指令译码(decode)、指令分发与重命名(dispatch and rename)、指令执行(execute),指令结束(retire)等。为了支持高运行频率,每一个流水阶段又可能包含多个流水级(也就是时钟周期)。每个流水级执行有限的操作,这样每个时钟可以做到最短,通过提高cpu的运行频率来提高cpu核的性能。每个流水级也可以通过容纳更多条指令(成为超标量superscalar)来进一步提高cpu性能。


技术实现思路

1、本公开至少一个实施例提供一种分支目标缓存的配置方法,包括:获取待插入所述分支目标缓存的对象分支指令,所述分支目标缓存包括至少一个信息项;判断所述对象分支指令是否命中所述至少一个信息项中的命中信息项,所述命中信息项包括命中指令的命中指令信息;以及响应于所述对象分支指令命中所述至少一个信息项中的命中信息项且为位于所述命中指令之前的目标类型分支指令,从所述分支目标缓存删除所述命中信息项,并且将所述对象分支指令的对象指令信息插入所述分支目标缓存,所述目标类型分支指令为跳转概率大于预设阈值的条件跳转指令。

2、例如,在本公开一实施例提供的配置方法中,还包括:查询指令识别器获取所述对象分支指令的跳转参数,所述跳转参数用于指示所述对象分支指令的跳转概率;以及基于所述跳转参数,确定所述对象分支指令是否为所述目标类型分支指令。

3、例如,在本公开一实施例提供的配置方法中,将所述对象分支指令的所述对象指令信息插入所述分支目标缓存,包括:响应于所述对象分支指令为第一类型指令,将所述对象分支指令的对象指令信息以第一信息项类型插入分支目标缓存,所述第一类型指令为指令地址和跳转目标地址的高m位不相同的分支指令,所述第一信息项类型用于指示所针对的一条分支指令的完整跳转目标地址被存储于所述分支目标缓存;以及响应于所述对象分支指令为第二类型指令,将所述对象分支指令的对象指令信息以第二信息项类型插入分支目标缓存,所述第二类型指令为指令地址和跳转目标地址的高m位相同的分支指令,所述第二信息项类型用于指示所述针对的一条分支指令的跳转目标地址中除所述高m位之外的低位被存储于所述分支目标缓存;m为正整数。

4、例如,在本公开一实施例提供的配置方法中,还包括:响应于所述对象分支指令命中所述至少一个信息项中的命中信息项且不满足所述对象分支指令为位于所述命中指令之前的目标类型分支指令,判断所述对象分支指令是否满足所述命中信息项包括多条命中指令的命中指令信息并且所述对象分支指令位于所述多条命中指令的后面;以及响应于所述对象分支指令满足所述命中信息项包括所述多条命中指令的命中指令信息并且所述对象分支指令位于所述多条命中指令的后面,则丢弃对象分支指令的对象指令信息。

5、例如,在本公开一实施例提供的配置方法中,还包括:还包括:响应于所述对象分支指令不满足所述命中信息项包括所述多条命中指令的命中指令信息并且所述对象分支指令位于所述多条命中指令的后面,判断所述对象分支指令是否满足所述对象分支指令位于所述命中指令之后并且所述命中指令为无条件分支指令或者所述目标类型分支指令;以及响应于所述对象分支指令满足所述对象分支指令位于所述命中指令之后,并且所述命中指令为无条件分支指令或者所述目标类型分支指令,丢弃对象分支指令的指令信息。

6、例如,在本公开一实施例提供的配置方法中,命中信息项包括两条命中指令,所述方法还包括:响应于所述对象分支指令不满足所述对象分支指令位于所述命中指令之后并且所述命中指令为无条件分支指令或者所述目标类型分支指令,将所述对象分支指令与所述两条命中指令中的第一条命中指令组成指令对,并且删除所述命中信息项,所述第一条命中指令为所述两条命中指令中地址最小的指令;判断所述指令对中地址最小的分支指令是否为所述目标类型分支指令;以及响应于所述指令对中地址最小的分支指令为所述目标类型分支指令,所述指令对中地址最小的分支指令以第二信息项类型存储到所述分支目标缓存。

7、例如,在本公开一实施例提供的配置方法中,还包括:响应于所述指令对中地址最小的分支指令不为所述目标类型分支指令,判断所述指令对中的每条分支指令是否都是第二类型指令;以及响应于所述指令对中的每条分支指令都是第二类型指令,将所述指令对中的两条分支指令的指令信息合并后以第三信息项类型存储到所述分支目标缓存中,所述第三信息项类型用于指示所针对的多条分支指令的指令信息被存储于所述分支目标缓存。

8、例如,在本公开一实施例提供的配置方法中,还包括:响应于所述指令对中存在所述第一类型指令,判断所述指令对中地址最小的指令是否为所述第一类型指令;响应于所述指令对中地址最小的指令为所述第一类型指令,将所述指令对中地址最小的分支指令的指令信息以所述第一信息项类型插入所述分支目标缓存;以及响应于所述指令对中地址最小的指令不为所述第一类型指令,将所述指令对中地址最小的分支指令的指令信息以所述第二信息项类型插入所述分支目标缓存。

9、例如,在本公开一实施例提供的配置方法中,还包括:响应于所述对象分支指令命中所述至少一个信息项中的命中信息项且为位于所述命中指令之前的无条件分支指令,从所述分支目标缓存删除所述命中信息项,并且判断所述对象分支指令是否为所述第一类型指令;响应于所述对象分支指令为所述第一类型指令,将所述对象分支指令以所述第一信息项类型插入所述分支目标缓存;以及响应于所述对象分支指令为所述第二类型指令,将所述对象分支指令以所述第二信息项类型插入所述分支目标缓存。

10、例如,在本公开一实施例提供的配置方法中,还包括:响应于所述对象分支指令未命中所述至少一个信息项,判断所述对象分支指令是否为所述第一类型指令;响应于所述对象分支指令为所述第一类型指令,将所述对象分支指令以所述第一信息项类型插入所述分支目标缓存;以及响应于所述对象分支指令为所述第二类型指令,将所述对象分支指令以所述第二信息项类型插入所述分支目标缓存。

11、本公开提供了一种指令识别器的配置方法,所述指令识别器用于存储至少一个识别信息项,所述方法包括:获取目标条件分支指令;判断所述目标条件分支指令是否命中所述至少一个识别信息项;响应于所述目标条件分支指令命中所述至少一个识别信息项,更新所述条件分支指令命中的命中识别信息项,以根据所述至少一个识别信息项判断待插入分支目标缓存的对象分支指令是否是目标类型分支指令,所述目标类型分支指令为跳转概率大于预设阈值的条件跳转指令。

12、例如,在本公开一实施例提供的指令识别器的配置方法中,所述至少一个识别信息项每个包括地址域,所述地址域用于指示所述每个识别信息项对应的条件分支指令的指令地址;判断所述目标条件分支指令是否命中所述至少一个识别信息项,包括:判断所述至少一个识别信息项是否存在与所述目标条件分支指令的指令地址相同的地址;响应于所述至少一个识别信息项存在与所述目标条件分支指令的指令地址相同的地址,所述目标条件分支指令命中所述指令识别器中的至少一个识别信息项。

13、例如,在本公开一实施例提供的指令识别器的配置方法中,至少一个识别信息项每个包括跳转参数域,所述跳转参数域用于存储所述每个识别信息项对应的条件分支指令的跳转参数,响应于所述目标条件分支指令命中所述至少一个识别信息项,更新所述条件分支指令命中的命中识别信息项,包括:响应于所述目标条件分支指令命中所述至少一个识别信息项,更新所述命中识别信息项的当前跳转参数。

14、例如,在本公开一实施例提供的指令识别器的配置方法中,响应于所述目标条件分支指令命中所述至少一个识别信息项,更新所述命中识别信息项的所述当前跳转参数,包括:响应于所述目标条件分支指令跳转,所述当前跳转参数增加预设步长;或者响应于所述目标条件分支指令没有跳转,所述当前跳转参数更新为最大参数值,所述最大参数值是所述当前跳转参数与参考值之间的差值和0中的最大值,所述参考值是根据所述预设阈值确定的。

15、例如,在本公开一实施例提供的指令识别器的配置方法中,还包括:响应于所述目标条件分支指令未命中所述至少一个识别信息项,判断所述目标条件分支指令是否满足添加至所述指令识别器的添加条件;响应于所述目标条件分支指令满所述添加条件,将所述目标条件分支指令的指令信息作为所述指令识别器的新信息项更新所述指令识别器,所述新信息项的跳转参数为预设初始值。

16、例如,在本公开一实施例提供的指令识别器的配置方法中,添加条件包括:所述目标条件分支指令在执行中跳转,所述目标条件分支指令为一个地址入口对应的第一条分支指令且为可缩短类型指令,所述可缩短类型指令为指令地址和跳转目标地址的高m位相同的分支指令。

17、例如,在本公开一实施例提供的指令识别器的配置方法中,获取所述目标条件分支指令包括:获取执行结束的条件分支指令作为所述目标条件分支指令;或者获取进行分支预测后的条件分支指令作为所述目标条件分支指令。

18、本公开至少一实施例提供一种分支目标缓存的配置方法,所述分支目标缓存包括至少一个信息项,所述方法包括:获取需要访问所述分支目标缓存的当前分支指令;判断所述当前分支指令是否命中所述至少一个信息项中多分支信息类型的命中信息项,所述多分支信息类型用于指示存储多条分支指令的指令信息;响应于所述当前分支指令命中所述多分支信息类型的信息项,判断所述多条分支指令的第一条指令是否为目标类型分支指令,所述第一条指令是指所述多条分支指令中地址最小的分支指令;响应于所述第一条指令为所述目标类型分支指令,删除所述命中信息项,并且将所述第一条指令作为新信息项插入所述分支目标缓存,所述目标类型分支指令为跳转概率大于预设阈值的条件跳转指令。

19、例如,在本公开一实施例提供的分支目标缓存的配置方法中,判断所述当前分支指令是否命中所述至少一个信息项中多分支信息类型的命中信息项,包括:在对所述当前分支指令进行分支预测时,判断所述当前分支指令是否命中所述至少一个信息项中多分支信息类型的命中信息项;或者在所述当前分支指令执行结束后,判断判断当前分支指令是否命中所述至少一个信息项中多分支信息类型的命中信息项。

20、本公开至少一个实施例提供一种分支预测器,包括:分支目标缓存;分支预测控制单元,配置为判断所述对象分支指令是否命中所述至少一个信息项中的命中信息项,所述命中信息项包括命中指令的命中指令信息;以及响应于所述对象分支指令命中所述至少一个信息项中的命中信息项且为位于所述命中指令之前的目标类型分支指令,从所述分支目标缓存删除所述命中信息项,并且将所述对象分支指令的对象指令信息插入所述分支目标缓存,所述目标类型分支指令为跳转概率大于预设阈值的条件跳转指令。

21、例如,在本公开一实施例提供的分支预测器还包括指令识别器,配置为存储条件分支指令的跳转参数,所述跳转参数用于指示所述对象分支指令的跳转概率;所述分支预测控制单元还配置为:基于所述跳转参数,确定所述对象分支指令是否为所述目标类型分支指令。

22、本公开至少一个实施例提供一种指令识别器,包括:获取单元,配置为获取目标条件分支指令;判断单元,配置为判断所述目标条件分支指令是否命中所述至少一个识别信息项;以及更新单元,配置为响应于所述目标条件分支指令命中所述至少一个识别信息项,更新所述条件分支指令命中的命中识别信息项,以根据所述至少一个识别信息项判断待插入分支目标缓存的对象分支指令是否是目标类型分支指令,所述目标类型分支指令为跳转概率大于预设阈值的条件跳转指令。

23、本公开至少一个实施例提供一种电子设备,包括所述处理器包括本公开任一实施例提供的分支预测器或者指令识别器。

24、本公开至少一个实施例提供一种电子设备,包括:一个或多个处理器,存储器,所述存储器中存储有可执行指令,所述可执行指令在所述一个或多个处理器执行时实现本公开任一实施例提供的配置方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1