当循环迭代次数不恒定时,分支预测器能否完美预测?

时间:2012-09-22 18:47:12

标签: c assembly x86 branch-prediction

以下代码是否会因英特尔酷睿i7而导致分支错误预测?

for(i = 0, count = *ptr; i < count; i++) {
    // do something
}

count可以是0,1或2。

1 个答案:

答案 0 :(得分:0)

如果计数随机变化,则无法预测循环条件。如果它以某种模式运行 - 重复说0,1,2,1 - 它可以在core2或i7上完美预测。对于其他模式,它取决于。

有关更详细的说明,请参阅“分支预测”一章中的The microarchitecture of Intel, AMD and VIA CPUs: An optimization guide for assembly programmers and compiler makers