程序结构和程序执行

有两个方法来实现条件分支,一个是条件控制来实现条件分支,另一个是条件传送来实现条件分支。

int max(int a, int b)//条件控制
{          
    if(a>b)
        return a;
   else   return b; }

像 x > y的结果对处理器来说非常不可预测,即使最精密的分支预测硬件也只有50%的概率预测正确。

int max(int a, int b)//条件传送
{
      int A = a; int c = A<=b;
      if(c)
        A = b;
      return A; }

 

一般来说,同样功能的代码,条件传送要比条件控制性能好一些。这是因为处理器在遇到条件跳转时,只有当分支条件求值结束后才能决定分支往那边走。处理器采用非常精密的分支预测逻辑来猜测每条跳转指令是否会被执行,只要猜对了,指令流水线就会充满指令。可是一旦猜错了,则流水线后面的指令都要被推迟执行。

条件传送比条件控制的优越性在于处理器无需预测测试的结果就可以执行条件传送,处理器只需读源值,检查代码,然后要么更新目的寄存器,要么保持不变。

posted @ 2019-09-25 17:01  C_hp  阅读(235)  评论(0编辑  收藏  举报