什么是分支预测
在超标量的流水线架构上,我们得知,CPU 在运行指令的时候,会在一个时钟上做多个操作,也就是涉及到调用前后相关的指令,比如我们在一个简单的判断语句中。
if(n > 0)
{
n = 5;
}
else
{
n = -5;
}
在执行 if 语句的时候,一定会对判断语句执行结果后的下一条语句进行取址和译码,那么在还没有判断结果之前应该对哪一个语句进行取址呢?这就是分支预测要解决的问题。
简单说,分支预测就像我们铁路分叉口上的操作员,操作员在没有看到火车上面的转向旗帜的情况下,到底应该往哪边搬动扳手呢?
对于 CPU 来说,他做不到铁路系统中的提前通信告知,因此他只能根据历史来进行推测,提前做选择,如果选择错了,咱就让列车停下,倒回来,重新开。
因此,分支预测会出现预测失败的情况,而失败后的回滚操作非常占用时间,所以我们需要避免分支预测失败概率过大,或者说是把具有分支预测失败情况的判断放到循环内部,让失败回滚多次循环。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
处理器
+关注
关注
68文章
18298浏览量
222217 -
mcu
+关注
关注
146文章
16022浏览量
343682 -
cpu
+关注
关注
68文章
10451浏览量
206581 -
预测
+关注
关注
0文章
37浏览量
12293
发布评论请先 登录
相关推荐
CPU分支预测对程序的影响
分支预测的英文名字是“Branch Prediction”,如果大家在Google上搜索这个关键字,可以看到关于分支预测的很多内容。不过,要搞清楚分
发表于 09-23 14:11
•885次阅读
嵌入式处理器动态分支预测机制研究与设计
嵌入式处理器动态分支预测机制研究与设计针对嵌入式处理器的特定应用环境,通过对传统神经网络算法的改进,结合定制的分支目标缓冲,提出一种复合式动态分支预
发表于 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
模拟器分支回到主开始
参数正确传递。我需要知道为什么它已经重置(可能是PC到零,作为一个分支到零将在下一个主入口点结束)。我需要看到所有CPU寄存器的上下文以及程序计数器,以及在分支到主机之前发生了什么。我是新手。请帮忙。谢谢。阿尔文…
发表于 10-08 07:38
安腾处理器中多级分支预测机制
分支预测技术可消除分支指令之后损失的周期,防止流水线断流。高比率的分支预测精确度是高性能微处理器性能的保证。本文详细分析了安腾处理器(Ita
发表于 08-21 12:11
•12次下载
什么是CPU分枝预测和推测执行技术?
什么是分枝预测和推测执行技术?
分枝预测(branch prediction)和推测执行(speculation execution)是CPU动态执行技术中的主要内容,
发表于 02-04 10:47
•796次阅读
电缆分支箱安装_电缆分支箱的应用
你真的对电缆分支箱安装都非常的了解了么?在安装之前要准备什么、安装要注意什么、安装好之后又该如何验收等等,笔者特别提醒大家电缆分支箱安装好了才可以确保后期的稳定使用,下面就由生产厂家红苏电器为大家详细介绍电缆分支箱安装知识。
发表于 12-24 16:43
•3420次阅读
EE-373:调整ADSP-BF70xBlackfin™处理器的动态分支预测器
EE-373:调整ADSP-BF70xBlackfin™处理器的动态分支预测器
发表于 05-26 13:34
•7次下载
CPU分支预测对程序的影响
CPU会有一个提前预测机制,比如前面的执行结果都是true,那么下一次在判断if的时候,就会默认认为是true来处理,让下面的几条指令提前进入预装。
当然,这个判断不会影响实际的结果输出,这个判断只是为了让CPU并行执行代码。
发表于 09-20 11:40
•478次阅读
应对分支预测有哪些优化措施
应对分支预测有哪些优化措施 下面再来看一下分支预测,这也是 ChatGPT 给出的一个简易答案 // 不利于流水线的循环结构 for (int i = 0 ; i if (condit
如何帮助提高CPU分支跳转的正确率
B。 唯一的不同就是在分支判断的时候,prog2.c加了likely。我们先看下实际的结果如何: 可以看出,加了likely的prog2,明显用时变短。原因何在? 为了理解上面的例子,我们先介绍CPU流水线相关知识: 3.1. CPU
评论