关于CPU架构:动态分支预测何时有用?

When will dynamic branch prediction be useful?

本问题已经有最佳答案,请猛点这里访问。

对于静态分支预测,我们总是假设不采用分支,而对于动态分支预测,如果在之前采用分支,则更可能再次采用分支。但我不能想出一个有用的情况?什么应用程序将从中受益?为什么不直接使用静态分支预测呢?


1
2
3
4
5
    boolean b = compute something;
         :
    for (int j=0; j<1000000; j++)
        if (b) one statement;
        else another statement;

if每次都会产生一个有条件的分支,具有相同的taken/not taken结果,但在不同的运行中可能会有所不同。

(我知道有人可以用if控制几个if-free for循环更好地编写代码,但这不是重点)