xianshan分支预测单元基础与top层介绍


在这里重点介绍xianshan分支预测单元BPU的基础思想和工作原理,具体包括:分支预测块思想、多预测器、多流水线结构以及取值目标队列FTQ的作用;

2 xianshan BPU分支预测器总体架构

在这里插入图片描述

从xianshan BPU的总体架构图:可以明确看出含有多个预测器组件 + 多流水线;

2.1 分支预测器块思想

如前文所讲:分支预测器一般步骤来说:先根据给定的PC预测出该 PC 所对应的指令的相关信息,如是否是条件分支指令、是否是跳转指令。对于条件分支指令,会预测出是否会跳转以及跳转的目标地址,而对于跳转指令,则会预测出跳转目标。
缺点:这属于一条指令一条指令的进行预测,其效率较低,导致前端指令供给较慢;
xianshan BPU的策略是每次预测一个指令块;即给定一个PC,xianshan会预测出以这个PC开始的一个分支预测块(其包含若干条指令),来进行预测:是否存在分支指令、分支指令的位置、是否跳转以及跳转目标等信息。这样可以一次性预测出多条指令,将该预测结果送往取指单元IFU进行指导取指。
在预测块产生后,分支预测块还会生成执行完本预测块后跳转到的 PC,接着 BPU 会根据该 PC 继续产生下一个分支预测块
具体例子:
在这里插入图片描述
理解上面图–BPU的分支预测块的xianshan BPU的基本预测流程:
当CPU执行到0x20000118时,BPU具体经历如下步骤:
1.BPU得到输入PC 0x20000118;
2.BPU产生以0x20000118为开始的分支预测块,具体执行:
1.预测若干多条指令,并预测其中指令的条件分支指令;
2.预测中的条件分支指令,预测是否会跳转以及若taken它的跳转地址(比如0x20000110);
3.BPU将PC输出为0x20000110,并继续产生下一个分支预测块;

2.2 多预测器

xianshan BPU使用多个预测器组件,这些预测器都产生BPU的预测结果;例如:uFTB来生成基础的预测结果供后续使用;TAGE消耗时钟周期更长但是会产生更精确的预测结果;
这个后续会进行详细介绍;TBD;

2.3 多流水线

通过上面总体架构图可以指导,多个预测器组件并行开始执行,有的需要1个周期,有的需要2~3个周期,因此S1,S2,S3三个阶段都会产生预测结果;
这个可以通过仿真看看结果;------

2.4 取值目标队列–FTQ

背景:因为BPU和IFU性能上的差距,BPU产生预测结果速度更快。因此需要队列来缓存一下;
BPU 与 IFU 之间添加一个取值目标队列(FTQ)作为缓冲。FTQ本质上存储的元素是一个个数据项----BPU产生的预测结果存入到这里,然后IFU来从FTQ来取预测结果。
在这里插入图片描述
理解上述图:这个TBD;
FTB预测器中的FTB项(基本数据结构)–FTB项是由FTQ来更新的;

2.4.1 BPU预测结果内部重定向

从上面多流水线可知道:香山分支预测器BPU会有S1,S2,S3三个流水级预测结果同时输出;
FTQ如何使用这个阶段的输入预测结果呢?
对于S1,S2和S3通道输出的结果过程?
在这里插入图片描述
其中S2中的0x4x表示产生的不是0x4地址的其他地址而已;这个图能够理解了;感觉S3少一个输出,这样就能解释的通了;S3和S2产生的预测结果相同;
考虑假如S3和S2的预测地址也不一样的情况;---->首先再改过来,接着uFTB写入第二个项作为基础,再继续轮回可以继续改第二次的结果;

a.在第一个周期,一个新的PC 0x4 被送入,能在一周期内产生预测结果的预测器(叫做 uFTB)在 s1 接口输出了他的预测结果,并且结果指示下一个 PC 为 0xf,其他接口还无输出
b.在第二周期,PC 被设置为了 0xf,而 uFTB 也产生了 0xf 的预测结果,并从 s1 通道送出。与此同时,两周期预测器产生了上一轮 0x4 地址的预测结果,并从 s2 通道送出。
在这里插入图片描述
第二周期S2产生的0x4预测结果,已经在上一周期被S1所输出即放在FTQ中的表项中;需要做的并不是根据 s2 的预测结果,放置一个新的 FTQ 项,而是 对比 s2 预测结果和上一周期 s1 预测结果是否有差异,如果有差异则覆盖上一阶段 s1 接口放置的 FTQ 项;
因此S2和S3通道额外增加两个信号–redirect信号;如果该信号有效说明此时该阶段的预测结果与之前的预测结果产生差异,并且需要覆盖之前某个位置的 FTQ 项。

2.4.2 FTQ2BPU 重定向请求

无论再精确的分支预测器也不总是正确的–即S3预测的也是错误的,这种不正确会导致后续流水线中填充错误的指令,因此需要有一种机制来纠正这种错误–重定向。
后端执行模块如果发现分支预测错误,即发出重定向请求----让处理器的状态恢复到执行错误指令之前的状态。这对于我们来说,只需要关注BPU和FTQ在重定向时是怎样恢复状态的即可。
在这里插入图片描述

2.4.4 BPU的update请求

背景:现在BPU已经有了纠错能力,但是BPU中得不到更新数据,即如果无法获取指令的位置、类型、是否发生跳转以及跳转地址等信息,BPU 将得不到训练,并导致准确度大幅降低。
在这里插入图片描述
当后端执行完 FTQ 中的某一项时,该项会被标识为已提交,接下来 FTQ 将该项的更新信息,通过 Update 通道发往BPU。

2.5 总结

该节主要介绍BPU对外交互的所有主要接口,以及 FTQ 对于 BPU 的作用。介绍了预测结果接口、重定向接口、更新接口的 BPU已经可以支撑 BPU 的所有对外交互了。

[ref]
https://open-verify.cc/xs-bpu/docs/basic/01_xsbpu_basic/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值