浅谈RISC-V指令集(四)- 条件分支( 二 )
分支指令在运行过程中,比较寄存器rs1和寄存器rs2,根据比较结果,做相应的跳转动作:
rs1和rs2相等,BEQ跳转;rs1和rs2不相等,BNE跳转;rs1小于rs2,BLT和BLTU跳转;rs1大于等于rs2,BGE和BGEU跳转;众所周知,程序的执行效率和跳转的执行次数息息相关。所以软件在优化的过程中,应该保证程序中顺序代码执行的路径为主要的执行路径,将跳转执行指令放到主要执行路径之外。一般情况下,程序向前跳转可以被认为是不需要预测跳转的,而向后跳转时要被预测跳转。不过在现在的处理器中,动态分支预测器可以很好的完成上面的预测工作。
对比条件分支和无条件转移,我们可以做以下总结:
无条件转移采用相对寻址;条件分支的偏移量范围要远远小于无条件转移;条件分支对条件预测的要求比较高。
条件分支指令解析
通过上面的指令格式,我们了解到RISC-V通过直接比较rs1寄存器和rs2寄存器来进行分支操作。这和之前的X86、ARM、MIPS等指令集的处理方式不同。例如ARM指令集是通过使用条件码、MIPS则是通过比较寄存器和0。那么RISC-V为什么要这么设计,主要有以下几点考虑:
推荐阅读
- 传奇世界|浅谈传奇世界的业:战、法、道三职业相生相克,到底谁克谁呢?
- 手机游戏|梦幻西游手游:封系统治擂台?浅谈经脉学问,方寸也能实现双封!
- 游戏主播|比起技能酷炫,网游玩家更爱数值怪物?浅谈如何成功设计一个职业
- 梦幻西游手游|梦幻西游手游:你是中国好队长吗?战斗指令大全,学会就告别翻车
- 暗黑破坏神2|《暗黑破坏神2》MF值多少才是最佳—浅谈
- edg战队|浅谈,EDG2号种子出线后,带给LPL队伍的连锁反应
- 手柄|大话西游2之无差别浅谈无属性敏人
- 原神|原神:心海池即将结束,为何没人愿意抽?浅谈三大问题
- 原神|原神:浅谈个人游戏大后期大世界队伍各角色舒适度
- 陆逊|三国志战略版:从吴国法核陆逊,浅谈陆逊肉弓盛行之道!