(57)【要約】      （修正有）【課題】コードループを終了させる条件付分岐命令が検出され、ループ終了分岐評価を記憶するために分岐履歴レジスタ（ＢＨＲ）が更新される事を防ぐ。【解決手段】ループの繰り返しを実施する分岐がＢＨＲ３０からの他の分岐評価履歴を置き換えることを防止する。ループ終了分岐は、特定のタイプの分岐命令を用いてコンパイラーによってまたはループ終結分岐命令の操作コード内のインジケータービットを挿入することにより、静的に検出されてもよい。ループ終了分岐命令は、任意のバックワード(backward)分岐として、またはＢＨＲを更新する際に最後の分岐命令またはいくつかの分岐命令のＰＣを記憶することにより、および最後の分岐ＰＣ（ＬＢＰＣ）レジスタ３８（複数の場合もある）に対して分岐命令のＰＣをチェックすることにより動的に検出されてもよい。分岐ＰＣが一致するならＢＨＲの更新は抑制される。【選択図】図２
2011100466.tif 000002
【特許請求の範囲】
【請求項１】
分岐命令の特性に応答して分岐命令の実行時に分岐履歴レジスタ（ＢＨＲ）の更新を任意に抑圧することを備えた分岐予測方法。
【請求項２】
前記分岐命令の特性は前記分岐がバックワードであるということである、請求項１の方法。
【請求項３】
前記分岐命令の特性は前記分岐がループ終了分岐であるということである、請求項１の方法。
【請求項４】
前記分岐命令のＰＣは、前記ＢＨＲを更新するために最後の分岐命令のＰＣを記憶する最後の分岐ＰＣ（ＬＢＰＣ）レジスタの内容と一致する、請求項３の方法。
【請求項５】
前記分岐命令のＰＣは、前記ＢＨＲを更新するために前記最後の複数の分岐命令のＰＣｓを記憶する複数のＬＢＰＣレジスタのいずれかの内容と一致する、請求項４の方法。
【請求項６】
前記分岐命令の特性は、前記分岐命令が分岐を終了するためにコンパイラーにより発生された固有の分岐命令である、請求項３の方法。
【請求項７】
前記分岐命令の特性は、前記分岐命令が、ループ終了分岐命令であることを示す１つ以上のビットを含むことである、請求項３の方法。
【請求項８】
条件付分岐命令の評価を予測するように機能的に作用する分岐予測器と、
前記分岐予測器からの予測に基いて命令を推論的にフェッチして実行するように機能的に作用する命令実行パイプラインと、
前記条件付き分岐命令の評価を記憶するように機能的に作用する分岐履歴レジスタ（ＢＨＲ）と、
前記分岐命令の特性に応答して前記条件付分岐命令の評価を記憶することを抑圧するように機能的に作用する制御回路と、
を備えたプロセッサー。
【請求項９】
前記ＢＨＲを更新する分岐命令のＰＣを記憶するように機能的に作用する最後の分岐ＰＣ（ＬＢＰＣ）をさらに備え、前記制御回路は、前記分岐命令のＰＣが前記ＬＢＰＣレジスタの内容と一致するなら前記条件付分岐命令の評価を記憶することを抑圧するように機能的に作用する、請求項８のプロセッサー。
【請求項１０】
前記ＢＨＲを更新する複数の分岐命令のＰＣｓを記憶するように機能的に作用する複数のＬＢＰＣレジスタをさらに備え、前記制御回路は、前記分岐命令のＰＣが任意のＬＢＰＣレジスタの内容と一致するなら、前記条件付分岐命令の評価を記憶することを抑圧するように機能的に作用する、請求項９の方法。
【請求項１１】
前記分岐命令が、ループ終了命令であるという表示を含むなら、前記制御回路は、前記条件付き分岐命令の評価を記憶することを抑圧するように機能的に作用する、請求項８の方法。
【請求項１２】
前記分岐命令がループ終了命令であるという表示は命令タイプである、請求項１１の方法。
【請求項１３】
前記分岐命令目標アドレスが前記分岐命令ＰＣより小さいなら前記制御回路は、前記条件付分岐命令の評価を記憶することを抑圧するように機能的に作用する、請求項８の方法。
【請求項１４】
プログラムコードに応答して命令を発生するように機能的に作用するコンパイラーまたはアセンブラーと、
コードループを終了させる条件付分岐命令を示すように機能的に作用するループ終了分岐命令マーキング機能と、
を備えたコンパイラーまたはアセンブラー。
【請求項１５】
前記ループ終了分岐命令マーキング機能は、各ループを終了させるために固有のタイプの分岐命令を発生するように機能的に作用する、請求項１４のコンパイラーまたはアセンブラー。
【請求項１６】
前記ループ終了分岐命令マーキング機能は、ループを終了させる各条件付分岐命令にループ終了インジケーターを挿入するように機能的に作用する、請求項１４のコンパイラーまたはアセンブラー。
【請求項１７】
前記ループ終了インジケーターは、前記条件付分岐命令操作コード内の所定のフィールドに挿入された１またはそれ以上のビットを備えた、請求項１６のコンパイラーまたはアセンブラー。
【請求項１８】
以前の条件付分岐命令の評価を記憶する分岐履歴レジスタ（ＢＨＲ）を用いた分岐予測の方法において、
ループ終了分岐を検出することと、
関連する分岐命令の評価を記憶するであろうＢＨＲの更新を抑圧することと、
を備えた方法。
【請求項１９】
ループ終了分岐を検出することは、前記関連する分岐命令のＰＣと、前記ＢＨＲを更新するために最後の分岐命令のＰＣを記憶する最後の分岐ＰＣ（ＬＢＰＣ）レジスタの内容との間に一致を検出することを備えた、請求項１８の方法。
【請求項２０】
ループ終了分岐を検出することは、関連する分岐命令のＰＣと、ＢＨＲを更新するために最後の複数の分岐命令のＰＣｓを記憶する複数のＬＢＰＣレジスタのいずれかの内容との間に一致を検出することを備えた、請求項１８の方法。
【請求項２１】
ループ終了分岐を検出することは、分岐を終了させるためにコンパイラーにより発生された固有の分岐命令をデコードすることを備えた、請求項１８の方法。
【請求項２２】
ループ終了分岐を検出することは、ループ終了分岐命令であることを示す関連分岐命令操作コード内に１つまたはそれ以上のビットを検出することを備えた、請求項１８の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は一般にプロセッサーの分野に関し、特にループ終結分岐命令により分岐履歴レジスタの更新を抑制することにより分岐予測を改良する方法に関する。
【背景技術】
【０００２】
マイクロプロセッサーは、多種多様の計算タスクを実行する。改良されたプロセッサー性能は、ソフトウエアが変わることを通じてより高速な動作および／または増大された機能性を可能にするためにほとんどの場合望ましい。ポータブル電子装置のような多くの埋め込まれたアプリケーションにおいて、電力を節約することは、プロセッサーの設計および実施における目標でもある。
【０００３】
多くの最新のプロセッサーはパイプラインアーキテクチャを採用する。この場合、各々が複数の実行ステップを有するシーケンシャル命令は実行においてオーバーラップする。改良された性能のために、命令はパイプラインを介して連続的に流れなければならない。命令をパイプライン内で行き詰らせる任意の状況は、有害に性能に影響を及ぼす可能性がある。命令がパイプラインから消去されその次に再フェッチされるなら、性能と電力消費の両方が劣っている。
【０００４】
ほとんどのプログラムは条件付き分岐命令を含む。分岐命令の実際の分岐動作は、命令がパイプラインにおいて深く評価されるまで知られていない。分岐命令の実際の評価を待つことから生じるであろう行き詰まりを回避するために、最新のプロセッサーはあるフォームの分岐予測を採用してもよい。それにより条件付分岐命令の分岐動作はパイプラインにおいて早期に予測される。予測された分岐評価に基いて、プロセッサーは推論的にフェッチ（プリフェッチ）し、予測されたアドレス、すなわち、（分岐が起きると予測されるなら）分岐先アドレスまたは（分岐が起きないと予測されるなら）分岐命令の後の次のシーケンシャルアドレスからの命令を実行する。実際の分岐動作が決定されると、分岐が予測ミスされるなら、推論的にフェッチされた命令はパイプラインから消去されなければならず、新しい命令が正しい次のアドレスからフェッチされる。誤りのある分岐予測に応答して命令をプリフェッチすることは、プロセッサー性能と電力消費に悪影響を与える。従って分岐予測の性能を改良することは重要な設計目標である。
【０００５】
既知の分岐予測技術は静的予測と動的予測の両方を含む。いくつかの分岐命令の起こり得る動作は、プログラマーおよび／またはコンパイラーにより静的に予測される。分岐予測の１つの例はエラーチェッキングルーチンである。一般にコードは適切に実行し、エラーはまれである。従って、「ブランチオンエラー(branch on error)］機能を実施する分岐命令はほとんどの場合「分岐が起きない」を評価するであろう。そのような命令は、分岐条件の最も起こりそうな結果の知識を用いてプログラマーまたはコンパイラーにより設定された、操作コード内の静的分岐予測ビットを含んでいてもよい。
【０００６】
動的予測は一般に、予測される分岐命令および／または同じコードの他の分岐命令の分岐評価履歴（場合によっては、分岐予測精度履歴）に基いている。実際のコードの詳しい分析は、最近の過去の分岐評価パターンが、将来の分岐命令の評価の良好なインジケーターであるかもしれないことを示す。
【０００７】
図１に描画された動的分岐予測の１つの既知の形式は、分岐履歴レジスタ（ＢＨＲ）１００を利用して過去のｎの分岐評価を記憶することである。簡単な実施において、ＢＨＲ１００はシフトレジスタを含む。レジスタ内の最も古い過去の評価が置き換えられて最も最近の分岐評価結果がシフトされる（例えば、１は分岐することを示し、０は分岐しないことを示す）。プロセッサーは各分岐命令に対してローカルなＢＨＲ１００を維持してもよい。
【０００８】
あるいは（またはさらに）、ＢＨＲ１００は、時々グローバルＢＨＲまたはＧＨＲとして技術的に知られるすべての条件付分岐命令の最近の過去の評価を含んでいてもよい。ここに使用されるように、ＢＨＲはローカル分岐履歴レジスタとグローバル分岐履歴レジスタの両方を指す。
【０００９】
図１に描画されるように、ＢＨＲ１００は、分岐予測テーブル（ＢＰＴ）１０２をインデックスしてもよい。ＢＰＴはこの場合も先と同様にローカルまたはグローバルであってもよい。ＢＨＲ１００はＢＰＴ１０２を直接インデックスしてもよいし、またはＢＰＴインデックスロジック１０４内の分岐命令のプログラムカウンター（ＰＣ）のような他の情報と結合されてもよい。ＢＰＴインデックスロジック１０４への他の入力もさらに利用されてもよい。ＢＰＴインデックスロジック１０４は、入力を連結接続（一般にはｇｓｅｌｅｃｔとして技術的に知られている）、入力のＸＯＲ（ｇｓｈａｒｅ）をとってもよいし、ハッシュ関数を実行してもよいし、またはさまざまな方法で入力を結合しまたは変換してもよい。
【００１０】
一例として、ＢＰＴ１０２は、複数の飽和カウンターを備えていてもよい。それらのＭＳＢｓは、２つのモードを持つ分岐予測器として機能する。例えば、各テーブルエントリは、各々が重み付けされた予測値を割り当てられた４つの状態の１つを担う２ビットカウンターを備えていてもよい。
【００１１】
４つの状態は例えば、
１１−分岐が起きるであろうことが強く予測される
１０−分岐が起きるであろうことが弱く予測される
０１−分岐が起きないであろうことが弱く予測される
００−分岐が起きないであろうことが強く予測される
カウンターは対応する分岐命令が「起きる」ことを評価する毎にインクリメントし、分岐命令が「起きない」ことを評価する毎にデクリメントする。カウンターのＭＳＢは２つのモードを持つ分岐予測器である。それは、潜在する予測の強度または重みに関係なく、分岐が起きるかまたは起きないかを予測するであろう。飽和カウンターはめったに起こらない分岐評価の予測エラーを低減する。一方向を一貫して評価する分岐はカウンターを飽和するであろう。他の方向へのめったに起こらない評価は、カウンター値（および予測の強度）を変更するであろうが、２つのモードを持つ予測値を変更しないであろう。従って、めったに起こらない評価は、２度ではなく一度予測ミスするのみであろう。飽和カウンターのテーブルは説明に役立つ実例に過ぎない。一般に、ＢＨＲは、さまざまな分岐予測機構を含むテーブルをインデックスしてもよい。
【００１２】
ＢＰＴ１０２において採用された分岐予測機構にも関わらず、ＢＨＲ１００は単独でまたは分岐命令ＰＣのような他の情報と組み合わせてＢＰＴ１０２をインデックスし分岐予測を得る。以前の分岐評価をＢＨＲ１００に記憶し、分岐予測内の評価を使用することにより、予測される分岐命令が過去の分岐動作、すなわちローカルＢＨＲ１００の場合に固有の過去の動作およびグローバルＢＨＲ１００の場合には、他の分岐命令の動作に相互に関連付けられる。この相互関係は、少なくとも非常に繰り返しの多いコードの場合には、正確な分岐予測に対する解決の鍵となるかもしれない。
【００１３】
図１は、ＢＨＲ１００に記憶される分岐評価、すなわち実行パイプステージにおけるように、パイプラインの深くでしか知られていないかもしれない条件付き分岐命令の実際の評価を描画していることに留意する必要がある。これが究極の結果ではあるものの、実際には、多くの高性能プロセッサーは、ＢＰＴ１０２からの予測された分岐評価をＢＨＲ１００に記憶し、予測が誤りであるということが分かったなら、予測ミス回復動作の一部として後でＢＨＲ１００を訂正する。簡単にするために作図は、このインプリメンテーション特徴を反映していない。
【００１４】
ＢＨＲ１００を採用する分岐予測器の有効性を低減するかもしれない一般的なコード構造はループである。ループは、ループを介して毎回インクリメントされるインデックス変数がループ終了値に到達したかどうかというようなループ終了条件をテストする条件付文型命令で終わる。そうでなければ、別の反復のために、および別のループ終了条件付分岐評価のためにループの始めに実行が分岐する。ｎビットＢＨＲ１００に関して、ループに関する３つの興味あるケースがある。ループは実行しない。ループはｍの反復を介して実行する。ただしｍ＜ｎ。およびループはｍ回実行する。但しｍ＞＝ｎ。
【００１５】
ループが実行しないなら、ループの開始におけるフォワード分岐はループ本体を介して分岐し、１つの分岐が起きた分岐評価を生じる。ＢＨＲ１００内の過去の分岐評価履歴は、唯一つの分岐評価により置き換えられるので、これはＢＨＲ１００に対して最小効果を有する（（実際には、この分岐評価を有する相互関係により予測精度は改善されるかもしれない）。ループがｍの反復、但しｍ＞＝ｎを介して実行するなら、ループ終了分岐命令の「分岐が起こるであろう」逆方向の分岐はＢＨＲ１００を飽和する。すなわち、ループの終わりにおいて、ｎビットＢＨＲは、ループ反復から生じ、ループが終了するとき単一の分岐が起こらないであろう評価で終わる数多くの分岐が起こるであろう評価に相当する、単一のゼロにより後続される正確にｎ−１の「１」を常に含むであろう。これは、（ローカルまたはグローバルＢＨＲ１００のための）以前の分岐評価を有する全ての相互関係が失われるので、ＢＨＲ１００の有効性を効率的に破壊する。この場合、以前の分岐評価に対する分岐命令の相互関係を反映する分岐予測を含むエントリにマップするよりもむしろ、（ＢＰＴインデックスロジック１０４への他の入力に依存して）所定の分岐命令のための同じＢＰＴ１０２入力にマップする可能性があるであろう。
【００１６】
さらに、飽和されたＢＨＲ１００はＢＰＴ１０２内のエイリアシング(aliasing)を増加させてもよい。すなわち、多くの反復を有するループに続く全ての分岐命令は、ＢＨＲ１００がＢＰＴ１０２に直接インデックスするなら、同じＢＰＴ１０２エントリにマップするであろう。ＢＨＲ１００が他の情報と結合される場合でも、エイリアシングのチャンスは増加される。これは、ループに続く分岐命令に対してのみならずＢＰＴ１０２内のエントリを指すすべての分岐命令に対して予測精度に悪影響を及ぼす。
【００１７】
ループがｍの反復、但しｍ＜ｎを介して実行するなら、ＢＨＲ１００は飽和されず、ある以前の分岐評価履歴が保持される。しかしながら、以前の分岐評価履歴を表すビットは、ｍビット位置により置き換えられる。特にｍが変化する場合、これは分岐予測に対して２つの悪影響を有する。第１に、分岐命令は、以前の分岐評価を有する同じ相互関係を獲得するためにＢＰＴ１０２内のより大きな数のエントリにマップするであろう。そしてＢＨＲ３０に影響を及ぼすループ終了分岐なしに必要とするであろうよりも、同じ数の分岐命令に対して同じ精度をサポートするためにより大きなＢＰＴ１０２を必要とする。第２に、ＢＰＴ１０２内の分岐予測は、「トレーニング」するために長くかかるであろう。そして、ＢＰＴ１０２が正確な分岐予測の供給を開始する前に実行しなければならないコードの量を増加する。
【００１８】
一例として、８ビットＢＨＲ１００と、分岐命令Ａ−Ｈを有し、その後にループが続き、次に分岐命令Ｘが続くコードセグメントを考察する。分岐は、Ｘは分岐ＧおよびＨの評価履歴と強く相互に関連がある。介在ループの種々の反復は、Ｘを予測時に、以下の表１に提示されるＢＨＲ結果を発生するであろう。
【表１】
2011100466.tif 000003
【００１９】
この例において、いずれの場合にも、予測される分岐命令Ｘと分岐ＧおよびＨの以前の評価との間の所望の相互関係はＢＨＲ１００内に存在する。しかしながら、それはＢＨＲ１００内の異なる場所にあり、従って各ケースは異なるＢＰＴ１０２エントリにマップするであろう。これはＢＰＴ１０２スペースを浪費し、分岐予測トレーニングタイムを増加させ、ＢＰＴ１０２内のエイリアシングのチャンスを増加させる。これらのすべては予測精度を低減する。
【発明の開示】
【００２０】
１つ以上の実施形態において、ループを終了させる分岐命令の評価を記憶するという悪影響は、ループ終了分岐命令を識別し、ループ終了命令に応答してＢＨＲの更新を抑圧することにより改善される。ループ終了命令はさまざまな方法で識別される。
【００２１】
一実施形態において、分岐予測方法は、分岐命令の特性が抑制を必要とする場合に分岐命令を実行するとＢＨＲの更新を抑制することを含む。
【００２２】
他の実施形態において、プロセッサーは、条件付分岐命令の評価を予測するように機能的に作用する分岐予測器と、分岐予測器からの予測に基いて命令を推論的にフェッチし実行するように機能的に作用する実行パイプラインとを含む。また、プロセッサーは、条件付分岐命令の評価を記憶するように機能的に作用するＢＨＲと、分岐命令の特性に応答して条件付分岐命令の評価を記憶することを抑制するように機能的に作用する制御回路とを含む。
【００２３】
さらに他の実施形態において、プログラムコードに応答して命令を発生するように機能的に作用するコンパイラーまたはアセンブラーは、コードループを終了する条件付分岐命令を示すために機能的に作用するループを終了させる分岐命令のマーキング機能を含む。
【図面の簡単な説明】
【００２４】
【図１】図１は、従来技術の分岐予測回路の機能ブロック図である。
【図２】図２は、プロセッサーの機能ブロック図である。
【図３】図３は分岐命令を実行する方法のフロー図である。
【図４】図４は、１つ以上の最後の分岐ＰＣレジスタを含む分岐予測回路の機能ブロック図である。
【発明を実施するための形態】
【００２５】
図２はプロセッサー１０の機能ブロック図を描画する。プロセッサー１０は制御ロジック１４に従って、命令実行パイプライン１２内の命令を実行する。いくつかの実施形態において、パイプライン１２は、複数の並列パイプラインを有したスーパースケーラーデザインであってもよい。パイプライン１２はパイプステージに組織された種々のレジスタまたはラッチ１６、および１つ以上の算術論理演算ユニット（ＡＬＵ）１８を含む。汎用レジスタ（ＧＰＲ）ファイル２０は、メモリヒエラルキーの最上層を含むレジスタを提供する。
【００２６】
パイプライン１２は、メモリアドレス変換および命令サイド変換索引バッファー（ＩＴＬＢ）２４により管理される許可を用いて命令キャッシュ（Ｉキャッシュ）２２から命令をフェッチする。条件付き分岐命令がパイプライン１２において早期にデコードされるとき、分岐予測器２６は、分岐動作を予測し、予測を命令プリフェッチユニット２８に供給する。命令プリフェッチユニット２８は、「分岐が起きるであろう」分岐予測に対してパイプライン１２内で計算された分岐目標アドレスまたは「分岐が起きない」と予測された分岐に対して次のシーケンシャルアドレスにおいて、命令キャッシュ２２から命令を推論的にフェッチする。いずれの場合においても、プリフェッチされた命令は推論的実行のためにパイプライン１２にロードされる。
【００２７】
分岐予測器２６は、分岐履歴レジスタ（ＢＨＲ）３０、分岐予測器テーブル（ＢＰＴ）３２、ＢＰＴインデックスロジック３４、およびＢＨＲ更新ロジック３６を含む。分岐予測器２６はさらに以下により完全に記載される１つ以上の最後の分岐ＰＣレジスタ３８を含む。
【００２８】
データは、メモリアドレス変換およびメイン変換索引バッファー（ＴＬＢ）４２を用いてデータキャッシュ（Ｄキャッシュ）４０からアクセスされる。種々の実施形態において、ＩＴＬＢ２４は、ＴＬＢ４２の一部のコピーを備えていてもよい。あるいは、ＩＴＬＢ２４とＴＬＢ４２は統合されてもよい。同様に、プロセッサー１０の種々の実施形態において、Ｉキャッシュ２２およびＤキャッシュ４０は統合されてもよいしまたは一体化されてもよい。Ｉキャッシュ２２および／またはＤキャッシュ４０におけるミスは、メモリインターフェース４６の制御のもとにメイン（オフチップ）メモリ４４へのアクセスを生じる。
【００２９】
プロセッサー１０は、種々の周辺装置５０へのアクセスを制御する入力／出力（Ｉ／Ｏ）インターフェース４６を含んでいてもよい。当業者は、プロセッサー１０の多くの変形例が可能であることを認識するであろう。例えば、プロセッサー１０は、Ｉキャッシュ２２とＤキャッシュ４０のいずれかまたは両方のための第２レベル（Ｌ２）のキャッシュを含んでいてもよい。さらにプロセッサー１０内に描画された１つ以上の機能ブロックは、特定の実施形態から省略されてもよい。
【００３０】
１つ以上の実施形態によれば、分岐予測精度は、ループを終了させる分岐が分岐予測器２６内の１つ以上のＢＨＲｓ３０を改悪するのを防止することにより改善される。このプロセスは図３のフロー図として描画される。条件付き分岐命令はデコードされる（ブロック５２）。分岐がループを終了させる分岐か否かの決定が行われる（ブロック５４）。そうでなければ、ＢＨＲ３０は、分岐評価、すなわち、分岐命令が「分岐が起こる」または「分岐が起こらない」として評価されるかどうかを記録するために更新される（ブロック５６）。次に、実行は、それぞれ、分岐先アドレスまたは次のシーケンシャルアドレスにおいて継続する（ブロック５８）。分岐がループを終了させる分岐でないなら、ループを終了させる分岐命令の分岐評価を記録するためにＢＨＲ３０を更新することは、（ブロック５４からブロック５８への経路により示されるように）抑制される。このように、ループを反復させる分岐は、関連する分岐評価履歴を置き換えることによりＢＨＲ３０の内容を改悪しない。分岐命令をループを終了させる分岐命令として識別する問い合わせ（ブロック５４）は、種々の方法により成就されてもよい。
【００３１】
ループは、ループの終わりからループの始めに後方分岐することにより反復する。一実施形態によれば、分岐命令アドレスより小さい分岐先アドレスまたはＰＣを有したすべての条件付分岐命令、すなわち、バックワード分岐はループ終了分岐命令と見なされ、ＢＨＲ３０を更新するのを防止される。この実施形態は簡単という利点を提供する。ＢＨＲ３０更新時点において、分岐命令が実際にパイプライン内において評価されるとき、分岐命令ＰＣは分岐先アドレス（ＢＴＡ）と比較される。ＢＴＡ＜ＰＣなら、ＢＨＲ３０は更新されない。分岐目標アドレスが決定されるときそしてまた、ループを終了させる分岐ではないいくつかのバックワード分岐がＢＨＲ３０に記録された評価を持たないであろうとき、この実施形態は、アドレス比較を必要とする不利益を被る。
【００３２】
ループを終了させる分岐を検出する他の方法は同じ分岐命令の反復された実行を認識することである。図４に描画された一実施形態において、最後の分岐ＰＣ（ＬＢＰＣ）レジスタ３８はその評価がＢＨＲ３０に記憶された最後の分岐命令のＰＣを記憶する。簡単なループの場合に、分岐命令のＰＣがＬＢＰＣ３８に一致するなら、すなわち、分岐命令が評価された最後の分岐命令であったなら、分岐命令はループを終了させる分岐命令であると見なされ、ＢＨＲ３０のさらなる更新が抑制される。図１に対して上述したように、図４は、任意の与えられた実施において、ＢＨＲ更新ロジック３６内の実際の分岐評価と比較されるＬＢＰＣ３８の内容を描画するけれども、ＬＢＰＣ３８は、予測ミスの場合にはＢＨＲ３０が訂正されて、予測された分岐評価と比較されてもよい。この実施形態は、ループの第１の反復のみを記憶し、ＢＨＲ３０からの唯一の以前の分岐評価のみを置き換える。この実施形態はコンパイラーサポートを必要とせず、分岐の方向はＢＨＲ３０更新時に決定する必要がない。
【００３３】
ループは１つ以上のネスティングされたループを含んでいてもよいし、またはループ内の他の分岐を含んでいてもよい。この場合、内部ループによるＢＨＲ３０の飽和は、ＬＢＰＣアプローチにより抑制されてもよい。しかしながら、外部ループを終了させる分岐は依然としてＢＨＲ３０に記憶されるであろう。一実施形態において、対応するＬＢＰＣレジスタ（ＬＢＰＣ０、ＬＢＰＣ１，．．．ＬＢＰＣＭ）３８に記憶された連続的に評価された分岐命令のＰＣｓを有した２以上のＬＢＰＣレジスタ３８が提供されてもよい。分岐命令のＰＣがＬＢＰＣＮレジスタ３８のいずれかと一致するなら、ＢＨＲ３０の更新は抑圧されてもよい。
【００３４】
また、ループを終了させる分岐命令は、コンパイラーまたはアセンブラーにより静的にマークされてもよい。一実施形態において、コンパイラーは、ループを終了させる分岐にのみ使用される特定のタイプの分岐命令、例えば「ＢＲＬＰ」を発生する。ＢＲＬＰ命令は認識され、ＢＲＰＥ命令が実行パイプステージ内で評価するとき決して更新されない。他の実施形態において、コンパイラーまたはアセンブラーは、１つ以上のあらかじめ定義されたビットをオペレーションコード内に設定することによるように、ループを終了させる分岐表示を分岐命令内に埋め込んでもよい。ループ終了分岐ビットが検出され、ＢＨＲ３０の更新は、その分岐命令が実行パイプステージにおいて評価するとき抑圧される。ループ終了分岐の静的識別は、ループ終了識別機能をコンパイラーまたはアセンブラーに移動することによりハードウエアを低減し、計算的な複雑さを低減する。
【００３５】
条件付分岐命令は、例えば、分岐命令アドレスまたはＰＣ、命令タイプ、およびオペレーションコード内のインジケータービットの存在または非存在を含む、多くの特性を有する。ここで使用されるように、分岐動作の特性および／または分岐に関連するプログラムの特性は分岐命令の特性と考えられる。例えば、分岐命令ＰＣが１つ以上のＬＢＰＣレジスタ３８の内容と一致するかどうか、および分岐目標アドレスが分岐命令ＰＣに関してフォワードかバックワードかは分岐命令の特性である。
【００３６】
この発明は特定の特徴、観点および実施形態に対して記載されたけれども、この発明の広い範囲内において多数の変形例、変更および他の実施形態が可能であることは明白であろう。従って、すべての変形例、変更および実施の形態は、この発明の範囲内であるとみなされるべきである。それゆえ、この実施形態は、あらゆる面で実例として解釈されるべきであり、制限されるものではないと解釈されるべきであり、添付されたクレームの意味と等価な範囲内に入る全ての変更はクレーム内に包含されることを意図している。
【図１】
2011100466.tif 000004
【図２】
2011100466.tif 000005
【図３】
2011100466.tif 000006
【図４】
2011100466.tif 000007
【手続補正書】
【提出日】平成22年12月22日(2010.12.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分岐命令の特性に応答して分岐命令の実行時に分岐履歴レジスタ（ＢＨＲ）の更新を任意に抑制すること、ここにおいて前記分岐命令の特性は前記分岐がバックワードであるということである、
を備えた分岐予測方法。
【請求項２】
前記分岐命令のＰＣは、前記ＢＨＲを更新するために最後の分岐命令のＰＣを記憶する最後の分岐ＰＣ（ＬＢＰＣ）レジスタの内容と一致する、請求項１の方法。
【請求項３】
前記分岐命令のＰＣは、前記ＢＨＲを更新するために前記最後の複数の分岐命令のＰＣｓを記憶する複数のＬＢＰＣレジスタのいずれかの内容と一致する、請求項２の方法。
【請求項４】
前記分岐命令の特性は、前記分岐命令が分岐を終了するためにコンパイラーにより発生された固有の分岐命令である、請求項１の方法。
【請求項５】
前記分岐命令の特性は、前記分岐命令が、ループ終了分岐命令であることを示す１つ以上のビットを含むことである、請求項１の方法。
【請求項６】
条件付分岐命令の評価を予測するように機能的に作用する分岐予測器と、
前記分岐予測器からの予測に基いて命令を推論的にフェッチして実行するように機能的に作用する命令実行パイプラインと、
前記条件付き分岐命令の評価を記憶するように機能的に作用する分岐履歴レジスタ（ＢＨＲ）と、
前記分岐命令の特性がループを終了させる分岐命令であるという決定に応答して前記条件付分岐命令の評価を記憶することを抑制するように機能的に作用する制御回路と、
を備え、
前記条件付分岐命令の特性は前記分岐がバックワードであるということである、プロセッサー。
【請求項７】
前記ＢＨＲを更新する分岐命令に対応するＰＣを記憶するように機能的に作用する最後の分岐ＰＣ（ＬＢＰＣ）をさらに備え、前記制御回路は、前記分岐命令に対応するＰＣが前記ＬＢＰＣレジスタの内容と一致するなら前記条件付分岐命令の評価を記憶することを抑制するように機能的に作用する、請求項６のプロセッサー。
【請求項８】
前記ＢＨＲを更新する複数の分岐命令に対応するＰＣｓを記憶するように機能的に作用する複数のＬＢＰＣレジスタをさらに備え、前記制御回路は、前記分岐命令に対応するＰＣが任意のＬＢＰＣレジスタの内容と一致するなら、前記条件付分岐命令の評価を記憶することを抑制するように機能的に作用する、請求項７の方法。
【請求項９】
前記分岐命令がループ終了命令であるという表示は命令タイプである、請求項６の方法。
【請求項１０】
前記分岐命令目標アドレスが前記分岐命令ＰＣより小さいなら前記制御回路は、前記条件付分岐命令の評価を記憶することを抑圧するように機能的に作用する、請求項６の方法。
【請求項１１】
以前の条件付分岐命令の評価を記憶する分岐履歴レジスタ（ＢＨＲ）を用いた分岐予測の方法において、
ループを終了させる分岐を検出することと、
前記条件付分岐命令が前記ループを終了させる分岐であるという決定に応答して関連する分岐命令の評価を記憶するＢＨＲの更新を抑制することと、
を備え、
前記条件付分岐命令の特性は前記分岐がバックワードであるということである、方法。
【請求項１２】
ループ終了分岐を検出することは、前記関連する分岐命令に対応するＰＣと、前記ＢＨＲを更新するために最後の分岐命令に対応するＰＣを記憶する最後の分岐ＰＣ（ＬＢＰＣ）レジスタの内容との間に一致を検出することを備えた、請求項１１の方法。
【請求項１３】
ループ終了分岐を検出することは、関連する分岐命令に対応するＰＣと、ＢＨＲを更新するために最後の複数の分岐命令に対応するＰＣｓを記憶する複数のＬＢＰＣレジスタのいずれかの内容との間に一致を検出することを備えた、請求項１１の方法。
【請求項１４】
ループ終了分岐を検出することは、分岐を終了させるためにコンパイラーにより発生された固有の分岐命令をデコードすることを備えた、請求項１１の方法。
【請求項１５】
ループ終了分岐を検出することは、ループ終了分岐命令であることを示す関連分岐命令操作コード内に１つまたはそれ以上のビットを検出することを備えた、請求項１１の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３６
【補正方法】変更
【補正の内容】
【００３６】
この発明は特定の特徴、観点および実施形態に対して記載されたけれども、この発明の広い範囲内において多数の変形例、変更および他の実施形態が可能であることは明白であろう。従って、すべての変形例、変更および実施の形態は、この発明の範囲内であるとみなされるべきである。それゆえ、この実施形態は、あらゆる面で実例として解釈されるべきであり、制限されるものではないと解釈されるべきであり、添付されたクレームの意味と等価な範囲内に入る全ての変更はクレーム内に包含されることを意図している。
以下に他の実施形態を示す。
［１］分岐命令の特性に応答して分岐命令の実行時に分岐履歴レジスタ（ＢＨＲ）の更新を任意に抑圧することを備えた分岐予測方法。
［２］前記分岐命令の特性は前記分岐がバックワードであるということである、請求項１の方法。
［３］前記分岐命令の特性は前記分岐がループ終了分岐であるということである、請求項１の方法。
［４］前記分岐命令のＰＣは、前記ＢＨＲを更新するために最後の分岐命令のＰＣを記憶する最後の分岐ＰＣ（ＬＢＰＣ）レジスタの内容と一致する、請求項３の方法。
［５］前記分岐命令のＰＣは、前記ＢＨＲを更新するために前記最後の複数の分岐命令のＰＣｓを記憶する複数のＬＢＰＣレジスタのいずれかの内容と一致する、請求項４の方法。
［６］前記分岐命令の特性は、前記分岐命令が分岐を終了するためにコンパイラーにより発生された固有の分岐命令である、請求項３の方法。
［７］前記分岐命令の特性は、前記分岐命令が、ループ終了分岐命令であることを示す１つ以上のビットを含むことである、請求項３の方法。
［８］条件付分岐命令の評価を予測するように機能的に作用する分岐予測器と、
前記分岐予測器からの予測に基いて命令を推論的にフェッチして実行するように機能的に作用する命令実行パイプラインと、
前記条件付き分岐命令の評価を記憶するように機能的に作用する分岐履歴レジスタ（ＢＨＲ）と、
前記分岐命令の特性に応答して前記条件付分岐命令の評価を記憶することを抑圧するように機能的に作用する制御回路と、
を備えたプロセッサー。
［９］前記ＢＨＲを更新する分岐命令のＰＣを記憶するように機能的に作用する最後の分岐ＰＣ（ＬＢＰＣ）をさらに備え、前記制御回路は、前記分岐命令のＰＣが前記ＬＢＰＣレジスタの内容と一致するなら前記条件付分岐命令の評価を記憶することを抑圧するように機能的に作用する、請求項８のプロセッサー。
［１０］前記ＢＨＲを更新する複数の分岐命令のＰＣｓを記憶するように機能的に作用する複数のＬＢＰＣレジスタをさらに備え、前記制御回路は、前記分岐命令のＰＣが任意のＬＢＰＣレジスタの内容と一致するなら、前記条件付分岐命令の評価を記憶することを抑圧するように機能的に作用する、請求項９の方法。
［１１］前記分岐命令が、ループ終了命令であるという表示を含むなら、前記制御回路は、前記条件付き分岐命令の評価を記憶することを抑圧するように機能的に作用する、請求項８の方法。
［１２］前記分岐命令がループ終了命令であるという表示は命令タイプである、請求項１１の方法。
［１３］前記分岐命令目標アドレスが前記分岐命令ＰＣより小さいなら前記制御回路は、前記条件付分岐命令の評価を記憶することを抑圧するように機能的に作用する、請求項８の方法。
［１４］プログラムコードに応答して命令を発生するように機能的に作用するコンパイラーまたはアセンブラーと、
コードループを終了させる条件付分岐命令を示すように機能的に作用するループ終了分岐命令マーキング機能と、
を備えたコンパイラーまたはアセンブラー。
［１５］前記ループ終了分岐命令マーキング機能は、各ループを終了させるために固有のタイプの分岐命令を発生するように機能的に作用する、請求項１４のコンパイラーまたはアセンブラー。
［１６］前記ループ終了分岐命令マーキング機能は、ループを終了させる各条件付分岐命令にループ終了インジケーターを挿入するように機能的に作用する、請求項１４のコンパイラーまたはアセンブラー。
［１７］前記ループ終了インジケーターは、前記条件付分岐命令操作コード内の所定のフィールドに挿入された１またはそれ以上のビットを備えた、請求項１６のコンパイラーまたはアセンブラー。
［１８］以前の条件付分岐命令の評価を記憶する分岐履歴レジスタ（ＢＨＲ）を用いた分岐予測の方法において、
ループ終了分岐を検出することと、
関連する分岐命令の評価を記憶するであろうＢＨＲの更新を抑圧することと、
を備えた方法。
［１９］ループ終了分岐を検出することは、前記関連する分岐命令のＰＣと、前記ＢＨＲを更新するために最後の分岐命令のＰＣを記憶する最後の分岐ＰＣ（ＬＢＰＣ）レジスタの内容との間に一致を検出することを備えた、請求項１８の方法。
［２０］ループ終了分岐を検出することは、関連する分岐命令のＰＣと、ＢＨＲを更新するために最後の複数の分岐命令のＰＣｓを記憶する複数のＬＢＰＣレジスタのいずれかの内容との間に一致を検出することを備えた、請求項１８の方法。
［２１］ループ終了分岐を検出することは、分岐を終了させるためにコンパイラーにより発生された固有の分岐命令をデコードすることを備えた、請求項１８の方法。
［２２］ループ終了分岐を検出することは、ループ終了分岐命令であることを示す関連分岐命令操作コード内に１つまたはそれ以上のビットを検出することを備えた、請求項１８の方法。
【外国語明細書】
2011100466000001.pdf