美文网首页
你所不知道的cpu分支预测

你所不知道的cpu分支预测

作者: 春天的尐熊 | 来源:发表于2021-02-04 09:27 被阅读0次

    CPU执行一条指令的简单流程

    • 取指令
    • 分析指令
    • 执行程序

    我们看一下整个流程,A部件进行取指令,把指令交给B部件去分析,B部件分析完交给C部件去执行。

    这里就会引发一个问题,A取完指令之后就只能等B、C去分析和执行吗?

    不是的,这时A会顺序的取下一条指令,此时A、B、C部件是一个并行的运作模式。

    分支预测

    既然A取完一条指令会马上取下一条指令,那么如果在一个分支语句中(if-else),cpu如何知道下一条语句是什么?这时虽然cpu不知道,但是cpu会猜,如果猜对了,那么程序运行就会很顺利,否则就得重来。

    分支预测优化

    #define likely(x)    __builtin_expect(!!(x), 1) //x经常成立
    #define unlikely(x)  __builtin_expect(!!(x), 0) //x经常不成立
    

    c语言下的宏,主要是影响生成的汇编代码,尽可能在分支预测上选择正确的分支,以及减少跳转次数。

    相关文章

      网友评论

          本文标题:你所不知道的cpu分支预测

          本文链接:https://www.haomeiwen.com/subject/yyovtltx.html