一种处理器分支指令执行结果预测方法及系统技术方案

技术编号:39586756 阅读:17 留言:0更新日期:2023-12-03 19:38
本发明专利技术提出一种处理器分支指令执行结果预测方法,包括:根据第一指令块的起始地址查询分支预测器内部记录有连续预测能力的指令块的连续预测缓存

【技术实现步骤摘要】
一种处理器分支指令执行结果预测方法及系统


[0001]本专利技术涉及分支预测
,并特别涉及一种处理器分支指令执行结果预测方法及系统


技术介绍

[0002]分支预测是处理器前端取指的关键技术,它对分支指令的执行结果进行预测,取指部件据此对推测
(speculative)
执行流进行取指,并送往后端执行部件进行执行

用于分支预测的分支预测器的核心部件是记录分支预测信息的缓存
BTB
,以指令为单位记录分支指令的信息

[0003]某些处理器会中采用一种
FTB(FetchTargetBuffer)
设计,以指令块为单位,记录其中存在的分支指令信息,以及块的结束地址

指令块代表一次预测覆盖的范围
/
单位,同一指令块内的分支指令会一起进行预测

[0004]FetchTargetBuffer
,其代表一种以块为单位存储分支指令信息的
BTB(BranchTargetBuffer)
设计,它和传统
BTB
的主要区别在于:
[0005]传统
BTB
每一项对应一条分支指令信息,通过分支指令本身的地址
(
或程序计数器
PC)
寻址存储表;而
FTB
以指令块为单位进行预测,以指令块起始地址寻址存储表,查到的项内包含该指令块内的分支指令信息,以及该指令块的结束地

如果块内没有分支指令跳转,则下一次以结束地址作为起始地址,做下一次预测
。FTB
架构的预测流程:用块的起始地址查
FTB
,得到块的范围
(
起始地址

结束地址
)
和块内的分支信息;同时从其他预测器
(
例如条件分支方向预测器
TAGE)
得到块内分支的预测结果,如果跳转,则从
FTB
或其他预测器
(
主要是间接跳转预测器和
RAS(
返回地址栈
))
得到跳转目标地址,下次预测从目标地址开始;反之,从
FTB
记录的结束地址开始预测;如果
FTB
未命中,则认为块内没有分支指令,直接把起始地址加上一个设定的宽度
(
例如
32
字节
)
,作为新的起始地址,进行下一次预测

[0006]如图1所示,
TAGE
是一种目前较优的分支预测算法,它使用不同长度的分支历史和当前
PC(
程序计数器
/
地址
)
寻址多个计数器表
(
即图1中
T0

T4
所示意的表,“计数器”指
pred
:饱和计数器,用来得到预测的跳转方向
)
,得到的各个表项都会进行各自的
tag
匹配,从命中的表项中,选取在寻址和
tag
计算中用到的分支历史最长的那个表,从其表项内容
(
主要是
pred
字段
)
中获取最终的预测结果

在预测时,对于每张表,会用
PC
和一种长度的分支历史进行哈希,计算出地址访问存储表;同时用
PC
和同一份分支历史做另一种哈希,计算出标签
(tag)
,与查出的表项中存储的标签做比较,如果相同,则认为此表预测命中

原则上会选取命中的最长历史的表作为最终预测结果,结果由其中饱和计数器的方向给出,最长的预测比较准,逻辑上是因为考虑了更多的分支历史信息,因为程序内部的分支行为间存在关联,所以可以用历史分支执行结果预测目前的分支行为

此设计只针对一次进行一条分支指令的预测,在以
FTB
为基础的架构中,会对
TAGE
进行扩展,以支持同时对多条分支指令的预测

具体做法是,在每个
TAGE
表项中存储多条分支的饱和计数器,预测过程和原设计类似


TAGE
每张使用分支历史的表来说,使用的分支历史原长度固定,计算索引
(
寻址
)

一般把分支历史按寻址宽度分段,并全部异或运算到一起后,再与
PC
异或,得到访问表项的索引;而计算
tag
使用相同的分支历史,而改变折叠宽度,从而得到不同的折叠结果,再和
PC
异或,计算出
tag。
[0007]另外,现有分支预测器一般采用流水线设计,为解决多周期延迟带来的带宽缩减问题,常用的设计是覆盖预测
(overriding)
:同时实现一个低延迟

低准确率的预测器和高延迟

高准确率的预测器

默认使用前者做快速预测,提供高速的预测取指流,而后者对前者的预测结果进行检查,若发现错误,则刷新流水线,重新以后者的预测结果进行后续预测取指

由于程序中有很多容易预测的分支指令,此方法可以在大部分情况下,表现得如同一个高准确率

低延迟的预测器,而仅在前者预测效果不佳时,暴露准确预测器的延迟


FTB
为基础的架构中,
FTB
需要记录所有分支的信息,其存储开销大,访问延迟高,所以需要一个更小的存储结构,提供快速的预测,本专利技术中为一个全相联的
uFTB(microFTB)。

uFTB
提供的分支信息基础上,还需要预测条件分支的方向,本专利技术中采取在
uFTB
项中附带两位饱和计数器的做法,在得到
uFTB
项的同时,获得对应条件分支
(
如有
)
的跳转方向

[0008]如图2所示,是一个当前架构中,
uFTB

FTB、TAGE
等预测器的流水线关系示意图
(uBTB
即为
uFTB)。
[0009]常见的分支预测部件往往因实现复杂度而对能力有所限制

例如:一个时钟周期内只能预测出一个跳转的分支
(
预测执行结果
)
,在下一个时钟周期才能对跳转的目标地址进行预测

在分支跳转密度高的程序中,此特征往往会限制预测带宽,进而限制前端整体供指带宽

若要把现有架构扩展到支持并行预测连续的两个跳转分支,会遇到的关键问题在于,跳转分支间存在依赖关系本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种处理器分支指令执行结果预测方法,其特征在于,包括:步骤
1、
根据第一指令块的起始地址查询分支预测器内部记录有连续预测能力的指令块的连续预测缓存
NBB
,并进行标签
tag
匹配,若存在匹配的标签
tag
则执行步骤2,否则根据该分支预测器的预测流程,输出当前该第一指令块的预测结果;步骤
2、
在该分支预测器的快速预测流水级,根据该匹配的标签
tag
得到连续预测缓存
NBB
中记录的该第一指令块的预测偏向;同时从快速预测器得到对该第一指令块的快速预测结果,并比较其和该预测偏向是否一致,若是,则使用
NBB
中记载的对第二指令块的默认预测结果得到第三指令块的起始地址,以在下一个时钟周期对该第三指令块进行预测;步骤
3、
在该分支预测器的后续流水级,该分支预测器根据该第一指令块的起始地址得到该第一指令块的准确预测结果,并比较其和该预测偏向是否一致,若是,则输出该第一指令块的准确预测结果和该第二指令块的预测结果;否则,仅输出该第一指令块的准确预测结果
。2.
如权利要求1所述的处理器分支指令执行结果预测方法,其特征在于,该步骤3包括:在该第一指令块的该准确预测结果和连续预测缓存
NBB
偏向不一致时,若该快速预测流水级曾根据该第一指令块的快速预测结果,使用该第二指令块的预测结果,则进行流水线冲刷,从该第一指令块的准确预测结果

应的该第二指令块的起始地址开始,进行预测;用该连续预测缓存
NBB
中记载的该第一指令块的跳转目标作为该第二指令块的起始地址,通过预设分支预测算法得到第二指令块的预测需要的标签
tag
,执行
TAGE
预测逻辑,从而得到该分支预测器对该第二指令块的分支指令结果的预测,并结合连续预测缓存
NBB
中得到的
FTB
项,得到该第二指令块的准确预测结果,从而检查该第二指令块的预测结果,如果不符,则进行流水线冲刷,根据该第二指令块的准确预测结果,重定向至该第三指令块的起始地址
。3.
如权利要求1所述的处理器分支指令执行结果预测方法,其特征在于,还包括:步骤4,对于每个指令块的更新请求,连续预测缓存
NBB
的标签
tag
使用该第一指令块的起始地址计算,更新时用该第一指令块的起始地址查询连续预测缓存
NBB
:如果命中,则判断该第一指令块的真实分支结果是否和
NBB
项内记录的相符,若是则增加该第一指令块的偏向置信度
Bias conf
,否则降低该第一指令块的偏向置信度
Bias conf
;如果不命中,则新建
NBB
中表项,
Bias conf
从初始值起步;该步骤2包括:当根据该匹配的标签
tag
对应的偏向置信度
Bias conf
大于阈值时,根据
NBB
中记录的该匹配的标签
tag
对应的第一个块跳转路径作为该第一指令块的预测偏向
。4.
如权利要求1所述的处理器分支指令执行结果预测方法,其特征在于,该
FTB
项内最多支持的分支条数为预设的正整数
...

【专利技术属性】
技术研发人员:勾凌睿唐丹包云岗
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1