分支预测之方向预测

(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和动态两级预测器的技术,能够提供较高跳转目标地址测试成功率。

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于五级流水线CPU的分支预测+实验报告+项目说明 【项目介绍】 该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶, 或者实际项目借鉴参考! 当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 1. 项目简介 **项目内容:** 1. 实现基于局部历史的分支指令方向预测。 2. 实现基于全局历史的分支指令方向预测。 3. 实现竞争的分支指令方向预测。 本次实验实现的分支预测功能基于上学期实现的五级流水线CPU。因此我在五级流水线CPU的基础上实现了branchPredict分支预测模块。本次实验我实现的是**竞争的分支指令方向预测**,CPU线路图如下图所示 竞争的分支指令方向预测结果分析 这里由于此前基于局部历史以及全局历史的PHT饱和计数器的初值均设置为01,使得这里仅有的三条指令均预测为“不跳转”。为了方便展示竞争的预测结果,这里将LPHT的值初始化为11,使得三条指令的基于局部历史的分支预测为“跳转”。 第一条跳转指令正确方向为“不跳转”,因此基于全局历史的分支预测结果正确,而基于局部历史的分支预测结果错误,CPHT的值-1;第二条跳转指令正确方向为“跳转”,因此基于局部历史的分支预测结果正确,而基于全局历史的分支预测结果错误,CPHT的值+1;第三条跳转指令正确方向为“跳转”,因此基于局部历史的分支预测结果正确,而基于全局历史的分支预测结果错误,CPHT的值+1; 更多详情介绍见项目说明!!!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值