以下代码是否会因英特尔酷睿i7而导致分支错误预测?
for(i = 0, count = *ptr; i < count; i++) {
// do something
}
count可以是0,1或2。
答案 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。