【誤訳訂正書】
【提出日】平成24年4月18日(2012.4.18)
【誤訳訂正１】
【訂正対象書類名】明細書
【訂正対象項目名】０００４
【訂正方法】変更
【訂正の内容】
【０００４】
一般にすべての現実の世界のプログラムは、条件付き分岐命令を含み、この条件付き分岐命令の実際の分岐動作(branching behavior)は、命令がパイプラインにおいて深く評価されるまで、一般には知られていない。分岐命令の実際の評価を待つことからもたらされる可能性がある機能停止を回避するために、一般的な現代のプロセッサは、何らかの形態の分岐予測を使用し、それにより条件付き分岐命令の分岐動作は、パイプラインにおいて早期に予測される。予測分岐評価(predicted branch evaluation)に基づいて、プロセッサは、推論的に(speculatively)フェッチし（プリフェッチし(prefetch)）、予測されたアドレス(predicted address)  −  分岐ターゲットアドレス（分岐が成立と予測される場合(if the branch is predicted taken)）かまたは分岐命令の後の次の順次アドレス（分岐が不成立と予測される場合(if the branch is predicted not taken)）  −  からの命令を実行する。実際の分岐動作が決定されるとき、分岐が誤って予測された場合には、推論的にフェッチされた命令は、パイプラインからフラッシュされる必要があり、新しい命令は正しい次のアドレスからフェッチされる。誤った分岐予測に応じて命令をフェッチすることは、プロセッサ性能およびパワー消費に悪影響を及ぼす。その結果、分岐予測の精度(accuracy)を改善することが望ましい。
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】０００５
【訂正方法】変更
【訂正の内容】
【０００５】
知られている分岐予測技法は、静的予測と動的予測の両方を含んでいる。一部の分岐命令の可能性のある動作は、プログラマおよび／またはコンパイラによって静的に予測されることができる。一例は、エラー検査ルーチン(error checking routine)である。一般的なコードは適切に実行し、エラーは、まれである。したがって、「エラー上分岐(branch on error)」ファンクションをインプリメントする分岐命令は、非常に高いパーセンテージの時間に「不成立(not taken)」と評価することになる。そのような命令は、分岐条件の一般的に可能性のある結果の知識を用いて、プログラマまたはコンパイラによって設定される、ｏｐコード(op code)の中の静的分岐予測ビットを含むことができる。
【誤訳訂正３】
【訂正対象書類名】明細書
【訂正対象項目名】００１０
【訂正方法】変更
【訂正の内容】
【００１０】
１１−強い予測の成立(Strongly predicted taken)
１０−弱い予測の成立(Weakly predicted taken)
０１−弱い予測の不成立(Weakly predicted not taken)
００−強い予測の不成立(Strongly predicted not taken)
カウンタは、対応する分岐命令が「成立(taken)」を評価するたびに、増分し(increments)、命令が「不成立(not taken)」を評価するたびに、減分する(decrements)。カウンタのＭＳＢは、二項分岐予測器であり、それは、基礎となる予測の強度または重みにかかわらず、成立の予定である、または不成立の予定である分岐を予測することになる。飽和カウンタは、頻度の低い分岐評価方向の予測エラーを低減させる。一方法を一貫して評価する分岐は、カウンタを飽和させることになる。頻度の低い評価は、他方、カウンタ値（および予測の強度）を変更することになるが、二項予測値を変更することにはならない。それ故に、頻度の低い評価は、１回だけ誤った予測を行うにすぎないことになり、２回は行わない。飽和カウンタのテーブルは、例示の例であるにすぎず、一般に、ＢＨＴは、様々な分岐予測メカニズムを含むテーブルにインデックス付けすることができる。
【誤訳訂正４】
【訂正対象書類名】明細書
【訂正対象項目名】００１４
【訂正方法】変更
【訂正の内容】
【００１４】
ループが、多数の反復を介して実行する場合、ループ終了分岐命令の「成立」後方分岐は、部分的に、または完全にＢＨＲ１００を飽和させる。ループの反復の回数が、ＢＨＲ１００の幅に等しいか、あるいは超過する場合には、ループの端で、ｎ−ビットＢＨＲは、ループ反復からもたらされる長い一連の分岐が成立する評価に対応し、そしてループが終了するときに単一の不成立分岐評価と共に終了する、単一のゼロ（不成立）によって追随される正確にｎ−１個の１（成立）を含むことになる。これは、（ローカルまたはグローバルのＢＨＲ１００のいずれかについての）先行する分岐評価とのすべての相関が失われるので、ＢＨＲ１００の効力を効果的に破壊する。この場合には、ＢＨＲ１００は、先行する分岐評価に対する分岐命令の相関を反映する分岐予測を含むエントリに対してではなく、（ＢＰＴインデックスロジック１０４に対する他の入力に応じて）与えられた分岐命令についての同じＢＰＴ１０２に対してマッピングする可能性が高いことになる。
【誤訳訂正５】
【訂正対象書類名】明細書
【訂正対象項目名】００１６
【訂正方法】変更
【訂正の内容】
【００１６】
ループが、ＢＨＲ１００の幅よりもより少ない反復を介して実行する場合、ＢＨＲ１００は、飽和させられず、何らかの先行する分岐評価ヒストリが、保持される。しかしながら、先行する分岐評価ヒストリを表すビットは、ループ終了分岐命令の非常に多くの「成立」結果により、ＢＨＲ１００の中で移動させられる。とりわけ、ループ反復の回数が、変化する場合には、これは、分岐予測に対して２つの悪影響を有する。第１に、分岐命令は、先行する分岐評価との同じ相関を取り込むためにＢＰＴ１０２においてずっと大きな数のエントリに対してマッピングすることになり、ＢＨＲ３０に影響を及ぼすループ終了分岐なしに必要とされることになるよりも大きなＢＰＴ１０２が、同じ数の分岐命令について同じ精度をサポートすることを必要とする。第２に、ＢＰＴ１０２における分岐予測器は、「トレーニングする」ためにより長くかかることになり、ＢＰＴ１０２が正確な分岐予測を提供し始める前に実行する必要のあるコードの量を増大させる。
【誤訳訂正６】
【訂正対象書類名】明細書
【訂正対象項目名】００２５
【訂正方法】変更
【訂正の内容】
【００２５】
パイプライン１２は、メモリアドレスの変換および許可が、命令側変換索引バッファ(Instruction-side Translation Lookaside Buffer)（ＩＴＬＢ）２４によって管理されて、命令キャッシュ(Instruction cache)（Ｉ−キャッシュ）２２から命令をフェッチする。条件付き分岐命令がパイプライン１２において早期に復号化されるときに、分岐予測器２６は、分岐動作を予測し、命令プリフェッチユニット(instruction prefetch unit)２８に対してその予測を提供する。命令プリフェッチユニット２８は、「成立」分岐予測についてのパイプライン１２の中で計算される分岐ターゲットアドレスにおいて、あるいは「不成立」と予測される分岐についての次の順次アドレスにおいてＩ−キャッシュ２２から命令を推論的にフェッチする。いずれの場合にも、プリフェッチされた命令は、推論的実行のためにパイプライン１２にロードされる。
【誤訳訂正７】
【訂正対象書類名】明細書
【訂正対象項目名】００３０
【訂正方法】変更
【訂正の内容】
【００３０】
このプロセスは、図３に流れ図として示される。命令が、フェッチされ、復号化される（ブロック５２）。命令が、条件付き分岐命令でない場合（ブロック５３）、それは、パイプラインの中で進み、プロセスは、次の命令をフェッチするために戻る（ブロック５２）。命令が、条件付き分岐命令である場合には（ブロック５３）、分岐がループ終了分岐であるかどうか（ブロック５４）についての決定が行われる。そうでない場合、分岐が（パイプラインの実行ステージなどにおいて）評価するときに、ＢＨＲ３０は、単一ビットを使用して分岐評価を、すなわち分岐命令が「成立」として評価されるか、あるいは「不成立」として評価されるかを記録するように、アップデートされる（ブロック５６）。次いで、実行は、それぞれ分岐ターゲットアドレスまたは次の順次アドレスにおいて続行される（ブロック６４）。分岐がループ終了分岐である場合には（ブロック５４）、ループ反復カウントが、増分される（ブロック５８）。ループが完了するときに（ブロック６０）、ループ反復の回数を示す多ビット値が、ＢＨＲ３０へと書き込まれる（ブロック６２）。次いでループ反復カウンタはクリアされ（ブロック６３）、実行は、次の順次アドレスにおいて続行される（ブロック６４）。
【誤訳訂正８】
【訂正対象書類名】明細書
【訂正対象項目名】００３１
【訂正方法】変更
【訂正の内容】
【００３１】
両方のクエリ（ブロック５４）（すなわちループ終了分岐命令として分岐命令を識別することと）ループ反復カウントを保持することと（ブロック５８）は、様々なやり方で達成されることができる。一実施形態においては、１つまたは複数のループカウンタ（ＬＣ）３７は、ループ終了分岐であるように決定される条件付き分岐命令が、「成立」を評価するときに、増分される。ＬＣ３７の値、または（ここにおいて、より十分に論じられるように）そこから導き出される値は、ループ終了分岐がループの出口を指し示す「不成立」を評価するときに、ＢＨＲ３０に書き込まれる。ＬＣ３７もまた、その時にクリアされる。
【誤訳訂正９】
【訂正対象書類名】明細書
【訂正対象項目名】００３５
【訂正方法】変更
【訂正の内容】
【００３５】
ループ終了分岐命令は、コンパイラまたはアセンブラによって静的にマーク付けされることもできる。一実施形態においては、コンパイラは、ループ終了分岐、例えば、「ＢＲＬＰ」のために使用されるだけの特定のタイプの分岐命令を生成する。ＢＲＬＰ命令は、認識され、ＬＣ３７は、ＢＲＬＰ命令が実行パイプステージにおいて成立と評価するたびに、増分される。別の実施形態においては、コンパイラまたはアセンブラは、命令ｏｐコード内に１つまたは複数のあらかじめ定義されたビットを設定することなどにより、分岐命令にループ終了分岐表示(loop-ending branch indication)を埋め込むことができる。ループ終了分岐ビットは、検出され、ＬＣ３７は、分岐命令が、実行パイプステージにおいて成立と評価するときに、増分される。一般に、ループ終了インジケータ(Loop-Ending Indicator)は、ループ終了分岐検出ロジック３５に対して提供されることができる。ループ終了分岐の静的識別は、ループ終了識別ファンクションをコンパイラまたはアセンブラへと移動させることにより、ハードウェアと計算の複雑さを低減させる。
【誤訳訂正１０】
【訂正対象書類名】明細書
【訂正対象項目名】００４１
【訂正方法】変更
【訂正の内容】
【００４１】
ネストされるループ(Nested Loops)
ループは、１つまたは複数のネストされた、あるいは内側のループを含むことができる。したがって、一実施形態においては、複数のＬＣカウンタ（ＬＣ０、ＬＣ１、...ＬＣM）３７が提供され、これらは、ＬＢＰＣ３８レジスタの数に対応する可能性がある。ＬＣ３７は、ネストされたループの反復カウントを保持するために、成立評価と、関連するＬＢＰＣＭ３８とのマッチングのすぐ後に増分される。