0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CPU中什么是分支预测

麦辣鸡腿堡 来源:轩哥谈芯 作者:义轩 2023-11-29 17:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

什么是分支预测

在超标量的流水线架构上,我们得知,CPU 在运行指令的时候,会在一个时钟上做多个操作,也就是涉及到调用前后相关的指令,比如我们在一个简单的判断语句中。

if(n > 0){    n = 5;}else{    n = -5;}

在执行 if 语句的时候,一定会对判断语句执行结果后的下一条语句进行取址和译码,那么在还没有判断结果之前应该对哪一个语句进行取址呢?这就是分支预测要解决的问题。

简单说,分支预测就像我们铁路分叉口上的操作员,操作员在没有看到火车上面的转向旗帜的情况下,到底应该往哪边搬动扳手呢?

对于 CPU 来说,他做不到铁路系统中的提前通信告知,因此他只能根据历史来进行推测,提前做选择,如果选择错了,咱就让列车停下,倒回来,重新开。

因此,分支预测会出现预测失败的情况,而失败后的回滚操作非常占用时间,所以我们需要避免分支预测失败概率过大,或者说是把具有分支预测失败情况的判断放到循环内部,让失败回滚多次循环。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20329

    浏览量

    254850
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19121

    浏览量

    403616
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11326

    浏览量

    225870
  • 预测
    +关注

    关注

    0

    文章

    40

    浏览量

    12630
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CPU分支预测对程序的影响

    分支预测的英文名字是“Branch Prediction”,如果大家在Google上搜索这个关键字,可以看到关于分支预测的很多内容。不过,要搞清楚
    发表于 09-23 14:11 1549次阅读

    如何统计蜂鸟E203的分支预测率?

    想请问大家如何统计蜂鸟E203的分支预测率,我尝试在exu_commit模块里统计,但是发现预测率都有写问题,想请教以下大家
    发表于 06-10 07:05

    基于全局预测历史的gshare分支预测器的实现细节

    的优点是假如出现了连续遇到两条分支指令的情况,后一条分支指令可以享受到前一条指令的分支历史结果。但缺点就是会存在预测失败导致BHR更新的内
    发表于 10-22 06:50

    提高条件分支指令预测正确率的方法

    的所有组合过于浪费,因此将指令地址的中部与全局历史记录进行异或运算,而当指令地址的中部相同时,指令地址下部对应的指令共用几个PHT项,这样兼顾了长全局历史表与PHT大小,改良了传统分支历史分支预测方法
    发表于 10-22 08:22

    蜂鸟E203简单分支预测的改进

    于32位指令pc值加4,16位指令,pc值加2;当预测为跳转时,则需要根据不同分支跳转指令的目标地址计算方法进行计算。例如,JALR指令的跳转目标地址为指令的16位立即数与指令中指定的寄存器
    发表于 10-24 07:45

    嵌入式处理器动态分支预测机制研究与设计

    嵌入式处理器动态分支预测机制研究与设计针对嵌入式处理器的特定应用环境,通过对传统神经网络算法的改进,结合定制的分支目标缓冲,提出一种复合式动态分支
    发表于 10-06 09:53

    git merge后,原分支的内容没有出现在新的master分支

    我新建了一个rico分支,现在想把rico分支的内容合并到master分支,但是合并之后,我在rico分钟中新建的文件夹,并没有出现在master,这是为什么呢??rico
    发表于 03-12 00:48

    优化技巧:提前if判断帮助CPU分支预测

    摘要: 在stackoverflow上有一个非常有名的问题:为什么处理有序数组要比非有序数组快?,可见分支预测对代码运行效率有非常大的影响。要提高代码执行效率,一个重要的原则就是尽量避免CPU
    发表于 06-13 16:27

    安腾处理器多级分支预测机制

    分支预测技术可消除分支指令之后损失的周期,防止流水线断流。高比率的分支预测精确度是高性能微处理器性能的保证。本文详细分析了安腾处理器(Ita
    发表于 08-21 12:11 12次下载

    什么是CPU分枝预测和推测执行技术?

    什么是分枝预测和推测执行技术?  分枝预测(branch prediction)和推测执行(speculation execution)是CPU动态执行技术的主要内容,
    发表于 02-04 10:47 960次阅读

    EE-373:调整ADSP-BF70xBlackfin™处理器的动态分支预测

    EE-373:调整ADSP-BF70xBlackfin™处理器的动态分支预测
    发表于 05-26 13:34 7次下载
    EE-373:调整ADSP-BF70xBlackfin™处理器的动态<b class='flag-5'>分支</b><b class='flag-5'>预测</b>器

    CPU分支预测对程序的影响

    CPU会有一个提前预测机制,比如前面的执行结果都是true,那么下一次在判断if的时候,就会默认认为是true来处理,让下面的几条指令提前进入预装。 当然,这个判断不会影响实际的结果输出,这个判断只是为了让CPU并行执行代码。
    发表于 09-20 11:40 897次阅读

    应对分支预测有哪些优化措施

    应对分支预测有哪些优化措施 下面再来看一下分支预测,这也是 ChatGPT 给出的一个简易答案 // 不利于流水线的循环结构 for (int i = 0 ; i if (condit
    的头像 发表于 11-29 17:32 1223次阅读

    如何帮助提高CPU分支跳转的正确率

    我们还是先看一个例子: 看上面的两个函数,它们都是calloc一个全零数组x(这里不能直接用数组赋值,否则编译器会足够聪明进行自动的优化),遍历x的每个数,如果等于0,执行分支A,否则执行分支B
    的头像 发表于 12-13 11:25 1555次阅读
    如何帮助提高<b class='flag-5'>CPU</b><b class='flag-5'>分支</b>跳转的正确率

    英特尔CPU遭遇&quot;Pathfinder&quot;漏洞攻击,用户端JPEG图像库可窃取机密信息

    据了解,Pathfinder技术利用了现代CPU分支预测机制,通过操控分支预测器的关键部分,实现对程序控制流历史记录的重构,并发动高精度的
    的头像 发表于 05-11 14:46 986次阅读