【技术实现步骤摘要】
一种检测分支预测的方法及处理器
本专利技术实施例涉及处理器
,具体涉及一种检测分支预测的方法及处理器。
技术介绍
现代处理器一般采用流水线技术并行处理指令,以加速指令处理效率;在处理分支指令时,为避免等待分支指令执行结果而决定分支方向的情况,大多数现代处理器均采用分支预测(BranchPrediction)技术。分支预测可对分支指令的分支方向等结果进行预测,从而推动处理器进行下一步取指,避免等待分支指令执行结果而导致的流水线延迟。然而,分支预测也存在预测错误的可能,在出现分支预测错误时,需要清空流水线中由于分支预测错误引发的错误取指的指令,以纠正分支预测错误,这极为耗费流水线资源,扩大了流水线延迟。
技术实现思路
有鉴于此,本专利技术实施提供一种检测分支预测的方法及处理器,以在取指阶段提前发现分支预测错误,为在取指阶段提前纠正分支预测错误提供可能,从而降低分支预测错误引发的流水线资源消耗和延迟。为解决上述问题,本专利技术实施例提供一种检测分支预测的方法,该方法包括:一种检测分支预测的方法,所述方法由处理器执行,所述方法包括:根据分支预测缓冲器存储的第一分支信息预测分支预测结果,所述分支预测结果至少包括当前取指地址;在根据所述当前取指地址从缓存取指的阶段,如果从缓存的指令缓存块中查找到与所述当前取指地址匹配的第二分支信息,读取所述匹配的第二分支信息;其中,所述缓存的指令缓存块中存储有第二分支信息;根据所述匹配的第二分支信息检测分支预测是否正确。本专利技术实施例还提供一种处理器,所述处理器包括至少一个处理器核,所述处理器核至少包括如下逻辑:分支预测单元,用于 ...
【技术保护点】
1.一种检测分支预测的方法,其特征在于,所述方法由处理器执行,所述方法包括:根据分支预测缓冲器存储的第一分支信息预测分支预测结果,所述分支预测结果至少包括当前取指地址;在根据所述当前取指地址从缓存取指的阶段,如果从缓存的指令缓存块中查找到与所述当前取指地址匹配的第二分支信息,读取所述匹配的第二分支信息;其中,所述缓存的指令缓存块中存储有第二分支信息;根据所述匹配的第二分支信息检测分支预测是否正确。
【技术特征摘要】
1.一种检测分支预测的方法,其特征在于,所述方法由处理器执行,所述方法包括:根据分支预测缓冲器存储的第一分支信息预测分支预测结果,所述分支预测结果至少包括当前取指地址;在根据所述当前取指地址从缓存取指的阶段,如果从缓存的指令缓存块中查找到与所述当前取指地址匹配的第二分支信息,读取所述匹配的第二分支信息;其中,所述缓存的指令缓存块中存储有第二分支信息;根据所述匹配的第二分支信息检测分支预测是否正确。2.根据权利要求1所述的方法,其特征在于,所述缓存包括:一级缓存,和层级低于所述一级缓存的至少一个下级缓存;所述一级缓存的指令缓存块设置有存储第二分支信息的分支信息存储空间;所述至少一个下级缓存的指令缓存块的错误检查和纠正ECC空间存储有第二分支信息。3.根据权利要求1或2所述的方法,其特征在于,第一分支信息使用第一表项表示,第二分支信息使用第二表项表示;所述第二表项与所述第二表项所在的指令缓存块相关联,且复用所在的指令缓存块的Tag域。4.根据权利要求2所述的方法,其特征在于,所述至少一个下级缓存的指令缓存块使用奇偶校验保护。5.根据权利要求3所述的方法,其特征在于,所述从缓存的指令缓存块中查找到与所述当前取指地址匹配的第二分支信息包括:如果所述当前取指地址命中所述缓存的指令缓存块的Tag域,确定复用命中Tag域的第二表项;根据所述复用命中Tag域的第二表项,确定与所述当前取指地址匹配的第二表项。6.根据权利要求5所述的方法,其特征在于,所述当前取指地址命中所述缓存的指令缓存块的Tag域包括:所述当前取指地址命中一级缓存的指令缓存块的Tag域;或,所述当前取指地址未命中一级缓存的指令缓存块的Tag域,但命中所述至少一个下级缓存的指令缓存块的Tag域。7.根据权利要求5或6所述的方法,其特征在于,一个指令缓存块存储一个第二表项;所述根据所述复用命中Tag域的第二表项,确定与所述当前取指地址匹配的第二表项包括:将所述复用命中Tag域的第二表项确定为,与所述当前取指地址匹配的第二表项。8.根据权利要求5或6所述的方法,其特征在于,一个指令缓存块存储多个第二表项;所述根据所述复用命中Tag域的第二表项,确定与所述当前取指地址匹配的第二表项包括:从复用命中Tag域的多个第二表项中确定,记录的分支指令地址与所述当前取指地址匹配的第二表项。9.根据权利要求3所述的方法,其特征在于,所述当前取指地址包括:当前取指起始地址和当前取指结束地址;所述根据所述匹配的第二分支信息检测分支预测是否正确包括:根据匹配的第二表项记录的分支指令地址,确定当前取指起始地址和当前取指结束地址之间,或者在当前取指结束地址的位置上是否存在分支指令;如果当前取指起始地址和当前取指结束地址之间存在分支指令,或者在当前取指结束地址的位置上存在分支指令,至少根据所述分支指令的类型检测分支预测是否正确。10.根据权利要求9所述的方法,其特征在于,所述至少根据所述分支指令的类型检测分支预测是否正确包括:如果当前取指起始地址和当前取指结束地址之间存在的分支指令的类型为非条件分支指令,检测分支预测错误;如果在当前取指结束地址的位置上存在的分支指令的类型为直接分支指令,且分支预测结果指示跳转,但预测的跳转地址不等同于匹配的第二表项记录的目标地址,检测分支预测错误。11.根据权利要求3所述的方法,其特征在于,还包括:在检测分支预测错误时,重定向取指起始地址;将重定向的取指起始地址作为分支预测的输入。12.根据权利要求11所述的方法,其特征在于,所述重定向取指起始地址包括:如果分支预测错误,且当前取指地址的起始地址和结束地址之间存在非条件直接分支指令,使重定向的取指起始地址为匹配的第二表项指示的目标地址;如果分支预测错误,且当前取指地址的起始地址和结束地址之间存在返回指令,使重定向的取指起始地址为返回指令的起始地址;如果分支预测错误,且在当前取指结束地址的位置上存在直接分支指令,使重定向的取指起始地址为匹配的第二表项指示的目标地址。13.根据权利要求3所述的方法,其特征在于,所述缓存包括:一级缓存和层级低于所述一级缓存的至少一个下级缓存;一级缓存的指令缓存块的分支信息存储空间大小等同于,所述至少一个下级缓存的指令缓存块的ECC空间大小;其中,所述分支信息存储空间和所述ECC空间用于存储第二表项;所述方法还包括:当指令缓存块在一级缓存和所述至少一个下级缓存间搬移时,使搬移的指令缓存块关联的第二表项随同指令缓存块搬移。14.根据权利要求13所述的方法,其特征在于,所述当指令缓存块在一级缓存和所述至少一个下级缓存间搬移时,使搬移的指令缓存块关联的第二表项随同指令缓存块搬移包括:在从所述至少一个下级缓存回填指令缓存块到一级缓存时,将回填的指令缓存块关联的第二表项从相应的ECC空间,搬移到一级缓存相应的指令缓存块的分支信息存储空间;在一级缓存的指令缓存块被替换时,将替换的指令缓存块关联的第二表项从相应的分支信息存储空间,写回到所述至少一个下级缓存中相应指令缓存块的ECC空间。15.根据权利要求14所述的方法,其特征在于,在满足如下条件时,执行所述从所述至少一个下级缓存回填指令缓存块到一级缓存:所述当前取指地址未命中一级缓存的指令缓存块的Tag域,但命中所述至少一个下级缓存的指令缓存块的Tag域。16.根据权利要求3所述的方法,其特征在于,还包括:在检测分支预测错误时,将重定向分支信息输入分支预测单元;所述重定向分支信息包括:当前取指起始地址,和缓存中匹配的第二分支信息;如果所述当前取指起始地址命中第一表项,根据所述匹配的第二分支信息,修改命中的第一表项;如果...
【专利技术属性】
技术研发人员:崔泽汉,
申请(专利权)人:海光信息技术有限公司,
类型:发明
国别省市:天津,12
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。