查看: 7759|回复: 0

开源处理器Rocket的分支预测机制研究与性能评估(三)

[复制链接]
  • TA的每日心情
    开心
    2019-11-4 13:48
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2019-2-26 16:33:18 | 显示全部楼层 |阅读模式
    分享到:
    4 Rocket处理器分支预测机制性能评估

    4.1 评估环境

    Rocket使用Chisel编写,所以可以很容易得到对应的C++模拟器,本文使用得到的C++模拟器,运行RISC-V提供的benchmark,以测试分支预测性能。默认的Rocket编译后并不会输出分支预测有关的信息,需要在rocket.scala添加如下代码。

    1. val counter0 = WideCounter(64, mem_reg_valid && !take_pc_wb && mem_ctrl.branch)
    2.   val counter1 = WideCounter(64, mem_reg_valid && !take_pc_wb && mem_ctrl.branch && mem_wrong_npc)
    3.   printf("branch inst number[%x]\n ", counter0)
    4.   printf("misprediction branch inst number[%x]\n ", counter1)
    复制代码

    上述代码定义了两个计数器,第一个计数器counter0,当访存阶段是分支指令的时候加1,第二个计数器counter1,当访存阶段是分支指令,且分支预测错误的时候加1,所以,上述两个计数器可以分别输出分支指令数、分支预测错误指令数。

    4.2 分支预测机制性能评估

    BTB的表项数量不同,会影响分支预测的准确率,分别取BTB的表项为40、60、120,其分支预测效果如图6所示。当BTB的表项为默认的40的时候,最差情况为0.815,最好情况为0.991;当BTB的表项为60的时候,最差情况为0.813,最好情况为0.991;当BTB的表项为120的时候,最差情况为0.819,最好情况为0.992。并且,从图6中可以发现对于一个特定的测试程序,当BTB表项增加的时候,其分支预测准确率相对有所提高。

    1.png
    图6 当BTB表项是40、60、120的时候的分支预测效果

    在实验过程中发现如果BTB表项数目是2的幂,那么分支预测准确率会急剧下降,如图7所示,分别取BTB表项为32、64、128,与BTB表项为40时的分支预测效果对比。

    2.png
    图7 当BTB表项是40、32、64、128的时候的分支预测效果

    原因是由于BTB Module中如下一段代码引起的。
    1.   val nextRepl =
    2.     if (!isPow2(entries)) {
    3.       Counter(r_btb_update.valid && !updateHit, entries)._1   // BTB表项不是2的幂的时候的替换算法
    4.     } else {
    5.       val plru = new PseudoLRU(entries)                   // BTB表项是2的幂的时候的替换算法
    6.       when (hits.orR) { plru.access(OHToUInt(hits)) }
    7.       plru.replace
    8.     }
    复制代码
    其中计算nextRepl的值。如果当前更新的分支指令在BTB中没有查询到,那么就从BTB中找出一个表项,用来存储这个新的分支指令,nextRepl计算的就是这个新的表项的序号。如果BTB的表项是2的幂,那么替换算法是伪最近最少使用算法(PseudoLRU),反之,替换算法就是简单地累加。算法的不同,导致最终效果的差异,建议使用的时候可以避免设置BTB表项的值为2的幂。

    结语

    RISC-V是UCB设计发布的一个开源指令集,Rocket是UCB设计发布的基于RISC-V的开源处理器,其具有分支预测功能,通过分析发现其使用的是GShare分支预测算法,并且具有比较高的分支预测准确率。在试验过程中,发现了Rocket分支预测机制实现的一个问题,即当BTB表项设置为2的幂的时候,分支预测准确率会下降,这一实验结果对于计划实际使用Rocket处理器的研发、使用人员具有一定的参考意义。


    作者:leishangwen
    来源:CSDN
    相关阅读:
    开源处理器Rocket的分支预测机制研究与性能评估(一)
    开源处理器Rocket的分支预测机制研究与性能评估(二)
    开源处理器Rocket的分支预测机制研究与性能评估(三)



    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 20:26 , Processed in 0.118872 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.