【CPU微架构】分支预测(一)

(一)分支预测的作用

从计算机发展来看,新的设计,新的架构,都是为了解决问题而产生,或功能问题,或性能问题。
以if(a>b) funcA; else funcB; 为例,这条语句可以简单分解为一条cmp比较指令(a>b)和一条jump指令决定跳到funcA还是funcB。如果没有分支预测,那么会出现如下图所示情况。
在这里插入图片描述

上图以五级流水线 为例,水平表示CPU的时间轴。如果没有分支预测,jmp指令取指后,根据指令PC是无法知道下一条指令到底是funcA还是funcB。这样,流水线可能需要停下来多个时钟周期,直到jump指令解析出下一个地址是funcA还是funcB。
因为不想要流水线在碰到分支时停顿,那么就引入了分支预测。即在jump指令取指后,就预测下一条指令。在常用软件中,约20%的指令为跳转指令,因此分支预测极其准确性是微架构的重要研究方向之一。
总之,分支预测的作用主要是通过提前预测后续指令,提高流水线的利用率,进一步提升指令并行度。随着流水线深度和发射宽度的增加,分支预测对CPU的性能影响也越大。

(二)分支预测相关的指令与分类

arm跳转指令分类

不同的指令集跳转指令实现有一些差异,这里主要介绍aarch64指令集的相关跳转指令,如下图p1,aarch64跳转指令从两个维度分类&

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值