动态分支预测什么时候有用?
When will dynamic branch prediction be useful?
对于静态分支预测,总是假设该分支未被采用,而对于动态分支预测,如果该分支在此之前被采用,则更有可能再次被采用。但是我无法想出这有用的情况吗?什么应用程序将从中受益?为什么不直接使用静态分支预测?
boolean b = compute something;
:
for (int j=0; j<1000000; j++)
if (b) one statement;
else another statement;
if
将导致条件分支每次都采用相同的 taken/not 结果,但下一个 运行 可能会有所不同。
(我知道可以通过 if
控制几个 if-free for 循环来更好地编写代码,但这不是这里的重点)
对于静态分支预测,总是假设该分支未被采用,而对于动态分支预测,如果该分支在此之前被采用,则更有可能再次被采用。但是我无法想出这有用的情况吗?什么应用程序将从中受益?为什么不直接使用静态分支预测?
boolean b = compute something;
:
for (int j=0; j<1000000; j++)
if (b) one statement;
else another statement;
if
将导致条件分支每次都采用相同的 taken/not 结果,但下一个 运行 可能会有所不同。
(我知道可以通过 if
控制几个 if-free for 循环来更好地编写代码,但这不是这里的重点)