0

次のコードは、たとえば Intel Core i7 で分岐予測ミスのペナルティを被りますか?

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

count は 0、1、または 2 です。

4

1 に答える 1

0

count がランダムに変化する場合、ループ状態は予測できません。特定のパターン (0、1、2、1 の繰り返し) で動作する場合、core2 または i7 で完全に予測できます。他のパターンの場合は異なります。

詳細な説明については、Intel、AMD、および VIA CPU のマイクロアーキテクチャ: アセンブリ プログラマおよびコンパイラ メーカー向けの最適化ガイドの「分岐予測」の章を参照してください。

于 2012-09-23T09:38:19.297 に答える