私はlikely()/ unlikely()マクロがどのように機能するかを理解しており、分岐予測も理解しています。残念ながら、私は高水準プログラミングの文脈で分岐予測を学んでいませんでした。セグメンテーションフォールトを伴うLinuxカーネルの()/ unlikely()マクロ
私が知りたいのは、可能性の高い/おそらくないマクロ内の評価がセグメンテーションフォールトとなる場合、分岐予測履歴や現在の結果/パイプラインにどのように影響するかです。
予測の検証が完了しなかった場合、成功か失敗かはどうやって分かりますか?
である私は、この開始を考えます投機的に実行されたブランチがフラッシュされた場合の分岐予測の仕組みを知りたいので、実際に尋ねていることから疑問が湧きます。 – harold
実際にはありません。それをフラッシュするかどうかの決定は評価に依存するが、それは正しいのではないか?私の質問は、評価が完了できなかった場合です。その場合のシステムの状態は何ですか? – user3224083
はい、それは私が意味するものです。ブランチ全体がフラッシュされていれば、それだけではなくコードがフラッシュされます。可能性が高い/そうでない可能性がありますが、実際には例外でもありません(予測変数を破損する可能性があります。例外は非常に高価であり、精度は重要ではありません)。過去のいくつかの枝を推測して、最初のものを誤予測してしまいます。これにはいくつかの解決策があります。 – harold