9

Intel i7 プロセッサの分岐予測がどのように機能するか知りたいですか?

現在、「動的分岐予測」と呼ばれる予測子を知っています。

1 ビット予測子の場合: ハードウェアは、分岐命令が最後に実行されたときと同じ方向になると常に予測します。

実際にうまく機能する洗練されたバージョンは、2 ビット予測子です。予測精度をさらに向上させるために、2 ビット予測方式が導入されました。これらのスキームでは、予測が変更される前に 2 回間違っている必要があります。

i7には上記と同じ予測子がありますか?

4

2 に答える 2

9

分岐予測子について私たちが知っていることのほとんどは、テストから得られます。Intel は詳細についてあまり公開していません。予測ミスのペナルティは約 18 クロック サイクルであるため、正確な分岐予測が重要です。

Intel は 2 レベルの分岐予測子を使用します。内部レベルは、Core 2 CPU から変更されていないと考えられています。

外側のレベルはより洗練されており、最大 64 までの固定カウントでループを正確に予測することさえできます。2 つの 18 ビット グローバル履歴バッファが使用されます。1 つには、少なくとも 1 回実行されたすべてのジャンプが含まれます。もう一方には、最も重要なジャンプが含まれています。(これらのバッファ内のエントリ数は不明です。)

間接的なジャンプと呼び出しには独自の予測子があることに注意してください。

于 2012-06-30T06:44:50.227 に答える
6

短い答えはノーです。

あなたが説明した1ビット予測子を使用したIntel CPUはないと確信しています。

元の Pentium は、あなたが説明したように、2 ビットの記述子を使用していました。それが使用した 4 つの値は、通常、「強く取られていない」、「弱く取られていない」、「弱く取られている」、「強く取られている」と表現されていました。分岐が取られるたびに、カウンターは「強く取られている」方向に 1 つ移動します。ブランチが使用されていない場合は常に、「強く使用されていない」方向に 1 つ移動します。これは飽和カウンターであるため、(たとえば) カウンターが既に「強く取られている」ときに分岐が取られても、カウンターは単純に変化しません。[追加する必要があります: これは Intel が文書化した方法であり、どうやらそれが機能することを意図していたようです -- メモリが機能する場合、Agner Fog と Terje Mathiesen は、実際には少し異なる動作をすることを発見しました -- そして、一般的に、これほどうまく動作しません)。

Pentium/MMX および Pentium Pro の時点で、彼らはより洗練された 2 レベルの分岐予測器を設計しました。16 個の 2 ビット カウンターの 1 つを選択するために使用される 4 ビットの分岐履歴が追加されました。これは、(たとえば) 取られる、取られる、取られなかった、取られる (そして繰り返す) というパターンがある場合、それはすぐにそれに適応し、すべての分岐を正しく予測することを意味しました。

i7 の分岐予測の詳細についてはよくわかりません、少なくとも Pentium Pro と同じくらい洗練されており、元の Pentium の逆戻りではないと言って差し支えないと思います。

于 2012-06-30T07:26:28.327 に答える