分支预测之方向预测

(1)BTB

      分支目标缓存( BTB,Branch Target Buffer)技术是指使用容量有限的缓存保存最近执行过的分支指令的PC值,以及它们的跳转目标地址。对于后续需要取指的每条PC值,将其余BTB中存储的各个PC值进行比较,如果出现匹配,则预测这是一条分支指令,并使用其对应存储的跳转目标地址作为预测的跳转地址。

(2)RAS(Return address stack,RAS)技术是指使用容量有限的硬件堆栈来存储调用函数的返回地址。以RISC-V架构为例,间接跳转/分支可以在函数调用和返回。而函数的调用和返回在程序中往往是承兑出现的,因此可以在函数调用(使用分支跳转指令)时将当前PC值加4(或者2)。即其顺序执行的下一条指令的PC值压入RAS堆栈中,等到函数返回(使用函数分支跳转指令)时将RAS中的值弹出,这样就可以快速的为该函数返回的分支跳转指令预测目标。只要程序是在正常执行,其函数的调用和返回成对出现,那么RAS便能够提供较高的预测准确率。由于RAS的深度有限,如果程序中出现很多次数函数嵌套,需要不断地压入堆栈,造成堆栈溢出,则会影响到预测准确率,硬件需要特殊处理该情形。

(3)Indirect BTB

间接BTB(Indirect BTB)是指专门为间接跳转、分支指令而设计的BTB,它与普通BTB类似,存储较多历史目标地址,但是通过高级的索引方式进行匹配(而不是简单的PC值比较)。结合BTB和动态两级预测器的技术,能够提供较高跳转目标地址测试成功率。

 

 

你可能感兴趣的:(分支预测之方向预测)