(57)【特許請求の範囲】
【請求項１】
プロセッサにおいてフェッチされた命令の分岐予測を実行するための分岐予測回路であって、
命令キュー内の条件付き分岐命令の第1の分岐予測を予測し、
前記条件付き分岐命令のための前記第1の分岐予測に基づいて第1の分岐予測履歴レジスタを更新するように構成される、第1の分岐予測器と、
前記条件付き分岐命令のための前記第1の分岐予測を投機的予測として第2の分岐予測履歴レジスタに転送するように構成される転送回路と、
前記投機的予測を含む、前記第2の分岐予測履歴レジスタに基づいて、前記命令キュー内の前記条件付き分岐命令の第2の分岐予測を予測するように構成される第2の分岐予測器とを備える、分岐予測回路。
【請求項２】
前記第2の分岐予測を前記投機的予測と比較し、
前記第2の分岐予測が前記投機的予測と異なるのに応答して、前記第2の分岐予測に基づいて、前記第1の分岐予測履歴レジスタ内の前記第1の分岐予測および前記第2の分岐予測履歴レジスタ内の前記投機的予測を更新することによって、前記投機的予測をオーバーライドするようにさらに構成される、請求項1に記載の分岐予測回路。
【請求項３】
前記第1の分岐予測器は第1の待ち時間および第1の精度で動作するように構成され、前記第2の分岐予測器は、前記第1の待ち時間より長い第2の待ち時間、および前記第1の精度より高い第2の精度で動作するように構成される、請求項1に記載の分岐予測回路。
【請求項４】
前記第1の分岐予測履歴レジスタは第1のグローバル履歴、第1のローカル履歴もしくは第1のパス履歴、またはその組合せを含み、
前記第2の分岐予測履歴レジスタは第2のグローバル履歴、第2のローカル履歴もしくは第2のパス履歴、またはその組合せを含む、請求項1に記載の分岐予測回路。
【請求項５】
前記第1の分岐予測履歴レジスタおよび前記第2の分岐予測履歴レジスタを含む単一の履歴レジスタをさらに備える、請求項1に記載の分岐予測回路。
【請求項６】
前記単一の履歴レジスタは、
前記第1の分岐予測履歴レジスタ内の最新の分岐予測を指示する第1のポインタと、
前記第2の分岐予測履歴レジスタ内の最新の分岐予測を指示する第2のポインタとを備える、請求項5に記載の分岐予測回路。
【請求項７】
集積回路に組み込まれる、請求項1に記載の分岐予測回路。
【請求項８】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなる群から選択されるデバイスに組み込まれる、請求項1に記載の分岐予測回路。
【請求項９】
プロセッサにおいてフェッチされた命令の分岐予測を実行するための分岐予測回路であって、
命令キュー内の条件付き分岐命令の第1の分岐予測を予測し、
前記条件付き分岐命令のための前記第1の分岐予測に基づいて第1の分岐予測履歴レジスタを更新する
ための第1の分岐予測器手段と、
前記条件付き分岐命令のための前記第1の分岐予測を投機的予測として第2の分岐予測履歴レジスタに転送するための転送手段と、
前記投機的予測を含む、前記第2の分岐予測履歴レジスタに基づいて、前記命令キュー内の前記条件付き分岐命令の第2の分岐予測を予測するための第2の分岐予測器手段と、
を備える、分岐予測回路。
【請求項１０】
プロセッサにおいてフェッチされた命令の分岐予測を実行するための方法であって、
第1の分岐予測履歴に基づいて、第1の分岐予測器によって命令キュー内の条件付き分岐命令の第1の分岐予測を予測するステップと、
前記条件付き分岐命令のための前記第1の分岐予測に基づいて第1の分岐予測履歴レジスタを更新するステップと、
前記条件付き分岐命令のための前記第1の分岐予測を投機的予測として第2の分岐予測履歴に転送するステップと、
前記投機的予測を含む、前記第2の分岐予測履歴に基づいて、第2の分岐予測器によって、前記命令キュー内の前記条件付き分岐命令の第2の分岐予測を予測するステップと、
を含む、方法。
【請求項１１】
前記第2の分岐予測を前記投機的予測と比較するステップと、
前記第2の分岐予測が前記投機的予測と異なるのに応答して、前記第2の分岐予測に基づいて、前記第1の分岐予測履歴内の前記第1の分岐予測および前記第2の分岐予測履歴内の前記投機的予測を更新することによって、前記投機的予測をオーバーライドするステップと、
をさらに含む、請求項10に記載の方法。
【請求項１２】
前記第1の分岐予測器は第1の待ち時間および第1の精度で動作し、前記第2の分岐予測器は、前記第1の待ち時間より長い第2の待ち時間、および前記第1の精度より高い第2の精度で動作する、請求項10に記載の方法。
【請求項１３】
前記第1の分岐予測履歴は第1のグローバル履歴、第1のローカル履歴もしくは第1のパス履歴、またはその組合せを含み、
前記第2の分岐予測履歴は第2のグローバル履歴、第2のローカル履歴もしくは第2のパス履歴、またはその組合せを含む、請求項10に記載の方法。
【請求項１４】
単一の履歴レジスタ内に前記第1の分岐予測履歴および前記第2の分岐予測履歴を記憶するステップをさらに含む、請求項10に記載の方法。
【請求項１５】
前記単一の履歴レジスタ内の前記第1の分岐予測履歴内の最新の分岐予測を第1のポインタによって指示するステップと、
前記単一の履歴レジスタ内の前記第2の分岐予測履歴内の最新の分岐予測を第2のポインタによって指示するステップとをさらに含む、請求項14に記載の方法。
【請求項１６】
プロセッサにおいてフェッチされた命令の分岐予測を実行するための方法を前記プロセッサに実施させるコンピュータ実行可能命令を記憶したコンピュータ可読記憶媒体であって、前記方法は、
第1の分岐予測履歴に基づいて、第1の分岐予測器によって命令キュー内の条件付き分岐命令の第1の分岐予測を予測するステップと、
前記条件付き分岐命令のための前記第1の分岐予測に基づいて第1の分岐予測履歴レジスタを更新するステップと、
前記条件付き分岐命令のための前記第1の分岐予測を投機的予測として第2の分岐予測履歴に転送するステップと、
前記投機的予測を含む、前記第2の分岐予測履歴に基づいて、第2の分岐予測器によって、前記命令キュー内の前記条件付き分岐命令の第2の分岐予測を予測するステップと、
を含む、コンピュータ可読記憶媒体。
【請求項１７】
前記方法は、
前記第2の分岐予測を前記投機的予測と比較するステップと、
前記第2の分岐予測が前記投機的予測と異なるのに応答して、前記第2の分岐予測に基づいて、前記第1の分岐予測履歴内の前記第1の分岐予測および前記第2の分岐予測履歴内の前記投機的予測を更新することによって、前記投機的予測をオーバーライドするステップと、
をさらに含む、請求項16に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記第1の分岐予測器は第1の待ち時間および第1の精度で動作し、前記第2の分岐予測器は、前記第1の待ち時間より長い第2の待ち時間、および前記第1の精度より高い第2の精度で動作する方法をプロセッサに実施させるコンピュータ実行可能命令を記憶した、請求項16に記載のコンピュータ可読記憶媒体。
【請求項１９】
単一の履歴レジスタ内に前記第1の分岐予測履歴および前記第2の分岐予測履歴を記憶するステップをさらに含む方法をプロセッサに実施させるコンピュータ実行可能命令を記憶した、請求項16に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記単一の履歴レジスタ内の前記第1の分岐予測履歴内の最新の分岐予測を第1のポインタによって指示するステップと、
前記単一の履歴レジスタ内の前記第2の分岐予測履歴内の最新の分岐予測を第2のポインタによって指示するステップとをさらに含む方法をプロセッサに実施させるコンピュータ実行可能命令を記憶した、請求項19に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の技術は包括的にはコンピュータシステムにおける分岐予測に関する。
【背景技術】
【０００２】
命令パイプライン方式は、各命令の処理を一連のステップに分割することによって、プロセッサによって実行されているコンピュータ命令のスループットを高めることができる処理技法である。これらのステップは、複数のステージから構成される実行パイプラインにおいて実行される。実行パイプライン内のすべてのステージが命令を同時に処理することができる場合には、最適なプロセッサ性能を達成することができる。しかしながら、実行パイプラインにおける命令の同時実行は、条件付き分岐命令の存在によって妨害される場合がある。条件付き分岐命令は、条件付き分岐命令が実行されるときに評価される条件に基づいて、プログラムのフローをリダイレクトすることができる。結果として、プロセッサは、条件付き分岐命令が実行されるまで条件付き命令のフェッチをストールさせなければならない場合があり、結果として、プロセッサ性能が低下し、電力消費量が増加する。
【０００３】
プロセッサ性能を最大化するための1つの手法は、分岐予測回路を利用して、条件付き分岐命令が行われるか否かを予測することを含む。条件付き分岐命令が行われるか否かの予測は、先行する条件付き分岐命令の分岐予測履歴に基づくことができる。その後、予測された分岐に対応する命令をプロセッサによってフェッチし、投機的に実行することができる。予測ミスによる分岐の場合、予測ミスによる分岐に対応するフェッチされた命令が実行パイプラインからフラッシュされ、行われた分岐に対応する命令がフェッチされる間、プロセッサは遅延を被る場合がある。したがって、分岐予測ミスのペナルティ(プロセッサ性能の低下および不要な電力消費量の両方に関する)を最小限に抑えるために、正確な分岐予測器が必要とされる。
【０００４】
条件付き分岐命令の精度は一般的に、分岐予測を生成するために必要とされるプロセッサクロックサイクルの数に対応することができる。たとえば、相対的に簡単な分岐予測器は、分岐予測を与えるために1プロセッサクロックサイクルしか必要としない場合があるが、結果として生成される分岐予測は正確でない場合がある。逆に、より複雑な分岐予測器は、高い精度を提供することができるが、複数サイクル待ち時間という欠点を持つ場合がある(すなわち、分岐予測を生成するために複数のプロセッサクロックサイクルを必要とする場合がある)。
【０００５】
精度と速度との間のトレードオフを軽減するために、「オーバーライド分岐予測器」が、高速で、精度が低い第1の分岐予測器を、低速で、精度が高い第2の分岐予測器とともに利用することができる。両方の分岐予測器が条件付き分岐命令ごとの予測を与え、第2の分岐予測器は、第1の分岐予測器より数プロセッサクロックサイクルだけ遅れて予測を与える。プロセッサは、最初に、第1の分岐予測器の分岐予測に基づいて命令をフェッチする。第2の分岐予測器の分岐予測が生成されるとき、プロセッサは、その分岐予測を第1の分岐予測と比較する。予測が異なる場合には、第2の予測を用いて、第1の分岐予測器のための分岐予測履歴における第1の予測をオーバーライドし、第2の分岐予測に基づいて、適切な命令が再フェッチされる。命令の再フェッチが性能ペナルティを被る場合があっても、再フェッチ前に命令が実行ステージに達するまで待つことによって被るペナルティに比べて、プロセッサは依然として正味の性能改善を達成する。これは、プロセッサが命令フェッチと命令実行との間に多数のパイプラインステージを有する場合に特に当てはまる。
【０００６】
しかしながら、オーバーライド分岐予測器の第2の分岐予測器の複数サイクル待ち時間のために、第2の分岐予測器は、その分岐予測の根拠を、「陳腐化した」(すなわち、直近に遭遇した条件付き分岐命令のための分岐予測を含まない)分岐予測履歴に置かなければならない。結果として、第2の分岐予測器の精度および性能は、最適にならない場合がある。
【発明の概要】
【課題を解決するための手段】
【０００７】
本開示の実施形態は、オーバーライド分岐予測器における投機的履歴転送を提供する。関連する回路、方法、およびコンピュータ可読媒体も開示される。これに関連して、一実施形態では、第1の分岐予測器および第2の分岐予測器を含む分岐予測回路が提供される。第1の分岐予測器は、条件付き分岐命令のための第1の分岐予測を生成し、第1の分岐予測は第1の分岐予測履歴に記憶される。また、第1の分岐予測は、第2の分岐予測履歴にも投機的に転送される。その後、第2の分岐予測器は、投機的に転送された第1の分岐予測を含む、第2の分岐予測履歴に基づいて、第2の分岐予測を生成する。第2の分岐予測器が、その分岐予測の根拠を投機的に転送された第1の分岐予測に置くことができるようにすることによって、第2の分岐予測器の精度を改善することができる。
【０００８】
別の実施形態では、プロセッサにおいてフェッチされた命令の分岐予測を実行するための分岐予測回路が提供される。分岐予測回路は、第1の分岐予測器と、転送回路と、第2の分岐予測器とを備える。第1の分岐予測器は、命令キュー内の条件付き分岐命令の第1の分岐予測を予測し、条件付き分岐命令のための第1の分岐予測に基づいて第1の分岐予測履歴レジスタを更新するように構成される。転送回路は、条件付き分岐命令のための第1の分岐予測を投機的予測として第2の分岐予測履歴レジスタに転送するように構成される。第2の分岐予測器は、投機的予測を含む、第2の分岐予測履歴レジスタに基づいて、命令キュー内の条件付き分岐命令の第2の分岐予測を予測するように構成される。このようにして、分岐予測の根拠を投機的に転送された分岐予測に置くことによって、第2の分岐予測器の精度を改善することができる。
【０００９】
別の実施形態では、プロセッサにおいてフェッチされた命令の分岐予測を実行するための分岐予測回路が提供される。分岐予測回路は、命令キュー内の条件付き分岐命令の第1の分岐予測を予測し、条件付き分岐命令のための第1の分岐予測に基づいて第1の分岐予測履歴レジスタを更新するための第1の分岐予測器手段を備える。分岐予測回路はさらに、条件付き分岐命令のための第1の分岐予測を投機的予測として第2の分岐予測履歴レジスタに転送するための転送手段を備える。また、分岐予測回路は、投機的予測を含む、第2の分岐予測履歴レジスタに基づいて、命令キュー内の条件付き分岐命令の第2の分岐予測を予測するための第2の分岐予測器手段を備える。
【００１０】
別の実施形態では、プロセッサにおいてフェッチされた命令の分岐予測を実行するための方法が提供される。その方法は、第1の分岐予測履歴に基づいて、第1の分岐予測器によって命令キュー内の条件付き分岐命令の第1の分岐予測を予測することを含む。その方法はさらに、条件付き分岐命令のための第1の分岐予測に基づいて第1の分岐予測履歴を更新することを含む。また、その方法はさらに、条件付き分岐命令のための第1の分岐予測を投機的予測として第2の分岐予測履歴に転送することを含む。その方法はさらに、投機的予測を含む、第2の分岐予測履歴に基づいて、第2の分岐予測器によって、命令キュー内の条件付き分岐命令の第2の分岐予測を予測することを含む。
【００１１】
別の実施形態では、プロセッサにおいてフェッチされた命令の分岐予測を実行するための方法をプロセッサに実施させるコンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体が提供される。コンピュータ実行可能命令によって実施される方法は、第1の分岐予測履歴に基づいて、第1の分岐予測器によって命令キュー内の条件付き分岐命令の第1の分岐予測を予測することを含む。コンピュータ実行可能命令によって実施される方法はさらに、条件付き分岐命令のための第1の分岐予測に基づいて第1の分岐予測履歴を更新することを含む。また、コンピュータ実行可能命令によって実施される方法は、条件付き分岐命令のための第1の分岐予測を投機的予測として第2の分岐予測履歴に転送することを含む。コンピュータ実行可能命令によって実施される方法はさらに、投機的予測を含む、第2の分岐予測履歴に基づいて、第2の分岐予測器によって、命令キュー内の条件付き分岐命令の第2の分岐予測を予測することを含む。
【図面の簡単な説明】
【００１２】
【図１】高速であるが、精度が低い第1の分岐予測器と、低速であるが、精度が高い第2の分岐予測器とを提供する分岐予測回路を含み、投機的履歴転送を実行するように構成される例示的なプロセッサのブロック図である。
【図２】投機的履歴転送を用いることなく、オーバーライド分岐予測器を使用する例示的な条件付き分岐命令の処理を示すタイミング図である。
【図３】分岐予測精度を改善するために例示的な条件付き分岐命令の処理中に、図1の分岐予測回路による投機的履歴転送を使用することを示すタイミング図である。
【図４】投機的履歴転送を実行するための例示的な動作の流れ図である。
【図５】複数の分岐予測履歴を記憶する例示的な単一履歴レジスタを示す図である。
【図６】図1の分岐予測回路を含むことができる例示的なプロセッサベースシステムのブロック図である。
【発明を実施するための形態】
【００１３】
次に図面を参照しながら、本開示のいくつかの例示的な実施形態が説明される。「例示的な」という用語は、本明細書において「例、事例、または実例として役に立つこと」を意味するために使用される。「例示的」として本明細書で説明するいかなる実施形態も、他の実施形態よりも好ましいか、または有利であると必ずしも解釈されるべきでない。
【００１４】
本開示の実施形態は、オーバーライド分岐予測器における投機的履歴転送を提供する。関連する回路、方法、およびコンピュータ可読媒体も開示される。これに関連して、一実施形態では、第1の分岐予測器および第2の分岐予測器を含む分岐予測回路が提供される。第1の分岐予測器は、条件付き分岐命令のための第1の分岐予測を生成し、第1の分岐予測は第1の分岐予測履歴に記憶される。また、第1の分岐予測は、第2の分岐予測履歴にも投機的に転送される。その後、第2の分岐予測器は、投機的に転送された第1の分岐予測を含む、第2の分岐予測履歴に基づいて、第2の分岐予測を生成する。第2の分岐予測器が、その分岐予測の根拠を投機的に転送された第1の分岐予測に置くことができるようにすることによって、第2の分岐予測器の精度を改善することができる。
【００１５】
別の実施形態では、プロセッサにおいてフェッチされた命令の分岐予測を実行するための分岐予測回路が提供される。分岐予測回路は、第1の分岐予測器と、転送回路と、第2の分岐予測器とを備える。第1の分岐予測器は、命令キュー内の条件付き分岐命令の第1の分岐予測を予測し、条件付き分岐命令のための第1の分岐予測に基づいて第1の分岐予測履歴レジスタを更新するように構成される。転送回路は、条件付き分岐命令のための第1の分岐予測を投機的予測として第2の分岐予測履歴レジスタに転送するように構成される。第2の分岐予測器は、投機的予測を含む、第2の分岐予測履歴レジスタに基づいて、命令キュー内の条件付き分岐命令の第2の分岐予測を予測するように構成される。このようにして、分岐予測の根拠を投機的に転送された分岐予測に置くことによって、第2の分岐予測器の精度を改善することができる。
【００１６】
この関連において、図1は、例示的なプロセッサ10のブロック図である。プロセッサ10は、本明細書において開示されるように、予測精度を改善するために投機的履歴転送を提供するように構成される分岐予測回路12を含む。「投機的履歴転送」は、補われなければ、待ち時間の問題に起因して、その分岐予測の根拠を陳腐化した分岐予測履歴に置くことになっていた第2の分岐予測器のための分岐予測履歴を補うために、第1の分岐予測器によって生成された分岐予測を利用するための動作を指している。図1のプロセッサ10の例示的な投機的履歴転送の機構を論じる前に、図1の簡潔な導入が与えられる。次に、投機的履歴転送を使用しない分岐予測の一例が、投機的履歴転送を使用しない分岐予測の図2における例示に関して論じられる。その後、分岐予測精度を改善するために、図1の分岐予測回路12によって投機的履歴転送を使用することが、図3において説明される。
【００１７】
この関連において、図1において、プロセッサ10は、数ある要素の中でも、既知のデジタル論理素子、半導体回路、処理コアおよび/またはメモリ構造のいずれか1つ、またはその組合せを含む場合がある。本明細書において記述される実施形態は、要素のいかなる特定の構成にも限定されず、開示される技法は、半導体ダイまたはパッケージ上の種々の構造またはレイアウトに容易に拡張することができる。プロセッサ10は、入力/出力回路14と、命令キャッシュ16と、データキャッシュ18とを含む。プロセッサ10はさらに、フロントエンド回路22、実行ユニット24および完了ユニット26を含む実行パイプライン20を備える。プロセッサ10はさらに、リンクスタック28と、レジスタ30とを含み、レジスタは、1つまたは複数の汎用レジスタ(GPR)32と、プログラムカウンタ34と、リンクレジスタ36とを備える。ARM(登録商標)ARM7(商標)アーキテクチャを利用する実施形態のようないくつかの実施形態では、リンクレジスタ36は、図1に示されるようなGPR32のうちの1つである。代替的には、IBM(登録商標)PowerPC(登録商標)アーキテクチャを利用する実施形態のようないくつかの実施形態は、リンクレジスタ36がGPR32とは別であることを定める場合がある(図示せず)。
【００１８】
例示的な動作では、実行パイプライン20のフロントエンド回路22は、命令キャッシュ16から命令(図示せず)をフェッチし、いくつかの実施形態では、命令は、非限定的な例として、チップレベル1(L1)キャッシュ上に存在する場合がある。フェッチされた命令はフロントエンド回路22によって復号され、実行ユニット24に発行される。実行ユニット24は、発行された命令を実行し、完了ユニット26は、実行された命令をリタイヤさせる。いくつかの実施形態では、完了ユニット26は、レジスタ30のうちの1つまたは複数のレジスタ内に命令結果を記憶するライトバック機構を備えることができる。実行ユニット24および/または完了ユニット26はそれぞれ、1つまたは複数の順次パイプラインステージを備える場合があることは理解されたい。命令は2つ以上の命令からなるグループにおいてフェッチされ、および/または復号される場合があることをさらに理解されたい。
【００１９】
性能を改善するために、プロセッサ10は分岐予測を用いる場合があり、その例示的な動作がここで説明される。フロントエンド回路22は、1つまたは複数のフェッチ/デコードパイプラインステージ38を備え、それらのステージによって、複数の命令を同時にフェッチし、復号できるようになる。実行ユニット24への未発送のフェッチされた命令を保持するための命令キュー40が、フェッチ/デコードパイプラインステージ38のうちの1つまたは複数に通信可能に接続される。また、命令キュー40は、分岐予測回路12に通信可能に接続され、分岐予測回路は、命令キュー40において遭遇する条件付き分岐命令のための分岐予測(図示せず)を生成するように構成される。図1の例では、分岐予測回路12は、第1の分岐予測器42と、第2の分岐予測器44と、転送回路45とを含む。いくつかの実施形態では、第1の分岐予測器42は、第2の分岐予測器44より少ない待ち時間で動作するように構成することができる。たとえば、第1の分岐予測器42は、単一のプロセッサクロックサイクルだけの待ち時間で分岐予測を生成することができ、一方、第2の分岐予測器44は、精度の高い分岐予測を生成するために、複数のプロセッサクロックサイクル(すなわち、複数サイクル待ち時間)を必要とする場合がある。そのような実施形態では、第1の分岐予測器42は通常、第2の分岐予測器44より少ない待ち時間で動作する。したがって、第1の分岐予測器42の実施形態は、高速であるが、精度が低い場合があり、一方、第2の分岐予測器44の実施形態は、低速である(すなわち、複数サイクル待ち時間という欠点を持つ場合がある)が、精度が高い場合がある。分岐予測回路12の転送回路45は、後にさらに詳細に論じられるように、投機的履歴転送のための動作を実行するように構成される。
【００２０】
第1の分岐予測器42および第2の分岐予測器44によって生成される1つまたは複数の分岐予測は、レジスタ30のそれぞれ第1の分岐予測履歴レジスタ46および第2の分岐予測履歴レジスタ48に記憶することができる。いくつかの実施形態では、第1の分岐予測履歴レジスタ46および/または第2の分岐予測履歴レジスタ48は、レジスタ30のGPR32の中に含まれる場合があるか、またはレジスタ30とは別に実現される場合がある。いくつかの実施形態によれば、第1の分岐予測履歴レジスタ46および第2の分岐予測履歴レジスタ48が単一の履歴レジスタ(図示せず)を用いて実現される場合があり、第1のポインタおよび第2のポインタ(図示せず)が、第1の分岐予測履歴レジスタ46および第2の分岐予測履歴レジスタ48のそれぞれに対応する最新のエントリを指示する。この実施形態は、以下の図5に関してさらに詳細に論じられる。
【００２１】
第1の分岐予測履歴レジスタ46および第2の分岐予測履歴レジスタ48は、分岐予測の場合に有用である、当該技術分野において知られている任意のタイプの履歴データを記憶するように構成できることは理解されたい。非限定的な例として、履歴データは、ローカル履歴、グローバル履歴および/またはパス履歴を含むことができる。ローカル履歴は、特定の条件付き分岐命令のための分岐予測を含む分岐予測履歴を含むことができ、一方、グローバル履歴は、すべての条件付き分岐命令のための分岐予測を含む、共有される分岐予測履歴を含むことができる。パス履歴は、分岐ターゲット、特定の分岐が行われるか否かの判断、および/または条件付き分岐命令につながるパスのコンテキストのようなデータを含む、分岐予測履歴を含むことができる。
【００２２】
図1の例では、プロセッサ10の分岐予測回路12は、オーバーライド分岐予測器として動作する。したがって、命令キュー40内で条件付き分岐命令に遭遇するとき、第1の分岐予測器42および第2の分岐予測器44の両方が、分岐予測を判断する動作を開始する。第1の分岐予測器42は、第1の分岐予測(図示せず)を生成し、第1の分岐予測は第1の分岐予測履歴レジスタ46に記憶される。プロセッサ10は、分岐予測に対応する命令を投機的にフェッチし、実行し始める。第2の分岐予測器44は、第2の分岐予測器44のさらなる待ち時間に応じて、数プロセッサクロックサイクル後に、第2の精度の高い分岐予測(図示せず)を生成する。第2の分岐予測は、第2の分岐予測履歴レジスタ48に記憶される。その後、第2の分岐予測は、第1の分岐予測と比較される。不一致がある場合には、第2の分岐予測を用いて、第1の分岐予測をオーバーライドすることによって、第1の分岐予測履歴レジスタ46を更新する。第2の分岐予測が第1の分岐予測より正確であると仮定することができるので、第2の分岐予測で第1の分岐予測履歴レジスタ46を更新することによって、第1の分岐予測器42の精度を改善することができる。その後、プロセッサ10は、第2の分岐予測に対応する命令を再フェッチする。
【００２３】
第2の分岐予測器44は、投機的履歴転送を行わない場合に第1の分岐予測器42より高い精度を達成することができるが、第2の分岐予測器44は、その複数サイクル待ち時間が第2の分岐予測履歴レジスタ48に及ぼす影響に起因して、依然として最適な精度を達成しない場合がある。詳細には、第2の分岐予測器44には複数サイクル待ち時間があるため、第2の分岐予測履歴レジスタ48は、第2の分岐予測器44が新たな分岐予測を生成した時点で、直近に遭遇した条件付き分岐命令のための分岐予測を欠いている場合がある。結果として、第2の分岐予測器44は、その分岐予測の根拠を、陳腐化した分岐予測履歴に置かなければならず、結果として、精度水準が準最適になる可能性がある。
【００２４】
投機的履歴転送を行わない場合の複数サイクル待ち時間の影響を例示するために、図2が与えられる。図2は、投機的履歴転送を用いることなく、例示的な条件付き分岐命令54(0)〜54(3)を処理することから生じる、第1の分岐予測履歴50および第2の分岐予測履歴52の内容を示すタイミング図である。図2のタイミング図の列は、この例では、F0、F1、F2およびF3と呼ばれる、実行パイプラインステージを表す。タイミング図の行は、プロセッサクロックサイクル0〜3を表し、各プロセッサクロックサイクル中の実行パイプラインステージの内容を示す。また、各行は、対応するプロセッサクロックサイクル中の第1の分岐予測履歴50および第2の分岐予測履歴52の内容も示す。第1の分岐予測履歴50は、図1の第1の分岐予測器42のような、高速で、精度が低い分岐予測器に関連付けられることは理解されたい。同様に、第2の分岐予測履歴52は、図1の第2の分岐予測器44のような、低速で、精度が高い分岐予測器に対応する。例示のために、第1の分岐予測履歴50に関連付けられる第1の分岐予測器42は、1プロセッサクロックサイクルの待ち時間56を有し、一方、第2の分岐予測履歴52に関連付けられる第2の分岐予測器44は3プロセッサクロックサイクルの複数サイクル待ち時間58を有すると仮定される。第1の分岐予測履歴50および第2の分岐予測履歴52は、図1のそれぞれ第1の分岐予測履歴レジスタ46および第2の分岐予測履歴レジスタ48に記憶される内容を表すことができることをさらに理解されたい。
【００２５】
図2を参照すると、プロセッサクロックサイクル0において処理が開始する。この時点で、条件付き分岐命令54(0)(分岐命令Aと呼ばれる)が、実行パイプラインステージF0に入る。プロセッサクロックサイクル0中に、第1の分岐予測器42および第2の分岐予測器44の両方が、分岐命令Aのための分岐予測(図示せず)を生成し始める。第1の分岐予測履歴50および第2の分岐予測履歴52はいずれもこの時点では空である。
【００２６】
プロセッサクロックサイクル1中に、第1の分岐予測器42は、分岐命令Aのための分岐予測60(0)の生成を完了している。第1の分岐予測履歴50は、分岐命令Aのための分岐予測60(0)を含むように更新される。しかしながら、第2の分岐予測器44は、分岐命令Aのための予測をまだ生成していない。したがって、第2の分岐予測履歴52は依然として空である。分岐命令Aは、引き続き実行パイプラインステージF1に進み、一方、条件付き分岐命令54(1)(分岐命令B)が実行パイプラインステージF0に入る。この時点で、第1の分岐予測器42および第2の分岐予測器44はいずれも、分岐命令Bのための分岐予測(図示せず)を生成し始める。第1の分岐予測履歴50は分岐命令Aのための分岐予測60(0)を含むので、第1の分岐予測器42は、分岐命令Bのための予測を生成する際に早期の分岐予測の恩恵を受ける。第2の分岐予測器44は、その分岐予測の根拠を置く分岐予測履歴を依然として有しない。
【００２７】
プロセッサクロックサイクル2において、第1の分岐予測器42は分岐命令Bのための分岐予測60(1)を生成しており、その分岐予測は、ここで第1の分岐予測履歴50に記憶される。第2の分岐予測履歴52は、第2の分岐予測器44が分岐命令AおよびBのいずれの分岐予測も生成するのを依然として完了していないので、空のままである。分岐命令AおよびBがそれぞれ実行パイプラインステージF2およびF1に進むとき、条件付き分岐命令54(2)(分岐命令C)が実行パイプラインステージF0に入る。第1の分岐予測器42および第2の分岐予測器44は、分岐命令Cのための分岐予測(図示せず)を生成し始める。その分岐予測を生成するとき、第1の分岐予測器42は、分岐命令AおよびBそれぞれのための分岐予測60(0)および60(1)の恩恵を受け、一方、第2の分岐予測器44は何の恩恵も受けない。
【００２８】
プロセッサクロックサイクル3において、分岐命令A、BおよびCはそれぞれ、引き続き実行パイプラインステージF3、F2およびF1に進み、条件付き分岐命令54(3)(分岐命令D)が実行パイプラインステージF0に入る。この時点までに、第1の分岐予測器42は分岐命令Cのための分岐予測60(2)を生成しており、その分岐予測は第1の分岐予測履歴50に記憶される。したがって、第1の分岐予測器42が分岐命令Dのための分岐予測(図示せず)を生成し始めるとき、その分岐予測の根拠を分岐命令A、BおよびCそれぞれのための先行する分岐予測60(0)、60(1)および60(2)に置くことができる。プロセッサクロックサイクル3では、第2の分岐予測器44は、分岐命令Aのための分岐予測62を生成するのを最終的に完了する。結果として、第2の分岐予測履歴52は、分岐予測Aのための分岐予測62を含むように更新される。分岐予測62は、プロセッサクロックサイクル1において第1の分岐予測履歴50に記憶された分岐予測60(0)と比較される。分岐予測62が分岐予測60(0)と異なる場合には、第1の分岐予測履歴50はオーバーライドされる(すなわち、分岐予測62で更新される)。第1の分岐予測履歴50をオーバーライドすることによって、第1の分岐予測器42の精度を改善することができる。しかしながら、第2の分岐予測器44が、分岐命令Dのための分岐予測(図示せず)を生成し始めるとき、その分岐予測の根拠を置く分岐命令Aのための先行する分岐予測62のみを依然として有することに留意されたい。
【００２９】
図2に示される第2の分岐予測器44に及ぼす複数サイクル待ち時間の影響を軽減するために、分岐予測回路12の転送回路45が図1のプロセッサ10内に設けられる。転送回路45は、第2の分岐予測器44の精度を改善するために、第2の分岐予測器44によって使用される分岐予測履歴を補うために投機的履歴転送を提供するように構成される。これに関連して、図3は、転送回路45によって提供される投機的履歴転送を使用して例示的な条件付き分岐命令68(0)〜68(3)を処理することから生じる、第1の分岐予測履歴64および第2の分岐予測履歴66の内容を例示するために与えられる。
【００３０】
これに関連して、図2の場合と同様に、図3のタイミング図の列は実行パイプラインステージF0、F1、F2およびF3を表し、一方、タイミング図の行は、プロセッサクロックサイクル0〜3中の第1の分岐予測履歴64および第2の分岐予測履歴66の内容を示す。この例では、第1の分岐予測履歴64は、図1の高速で、精度が低い第1の分岐予測器42に対応し、第2の分岐予測履歴66は、図1の低速で、精度が高い第2の分岐予測器44に対応する。例示のために、第1の分岐予測器42は、1プロセッサクロックサイクルの待ち時間70を有し、一方、第2の分岐予測器44は3プロセッサクロックサイクルの複数サイクル待ち時間72を有すると仮定される。第1の分岐予測履歴64および第2の分岐予測履歴66は、図1のそれぞれ第1の分岐予測履歴レジスタ46および第2の分岐予測履歴レジスタ48に記憶される内容を表すことができることをさらに理解されたい。
【００３１】
プロセッサクロックサイクル0において、条件付き分岐命令68(0)(分岐命令Aと呼ばれる)が、実行パイプラインステージF0に入ることにより処理が開始する。第1の分岐予測器42および第2の分岐予測器44はいずれも、分岐命令Aのための分岐予測を生成し始める。プロセッサクロックサイクル0中に、第1の分岐予測履歴64および第2の分岐予測履歴66はいずれも空である。
【００３２】
プロセッサクロックサイクル1中に、分岐命令のための分岐予測74(0)が第1の分岐予測器42によって生成され、第1の分岐予測履歴64に記憶される。この時点で、分岐予測回路12の転送回路45が、分岐命令Aのための第1の分岐予測器42によって生成された分岐予測74(0)を、投機的予測76(0)として第2の分岐予測履歴66に転送する。分岐命令Aは引き続き実行パイプラインステージF1に進み、一方、条件付き分岐命令68(1)(分岐命令B)が実行パイプラインステージF0に入る。この時点で、第1の分岐予測器42および第2の分岐予測器44はいずれも、分岐命令Bのための分岐予測を生成し始める。第1の分岐予測履歴64は分岐命令Aのための分岐予測74(0)を含むので、第1の分岐予測器42は、分岐命令Bのための分岐予測を生成する際に早期の分岐予測の恩恵を受ける。さらに、第2の分岐予測履歴66は、ここで、分岐予測Aのための投機的予測76(0)を含むので、第2の分岐予測器44は、ここで、分岐命令Bのための次の分岐予測の根拠を投機的予測76(0)に置くことができる。この結果として、分岐予測を陳腐化した分岐予測履歴に置くことに比べて、分岐命令Bのためのより正確な分岐予測を第2の分岐予測器44によって生成することができる。
【００３３】
処理は、プロセッサクロックサイクル2において同じようにして継続する。ここで、第1の分岐予測器42は、分岐命令Bのための分岐予測74(1)の生成を完了し、第1の分岐予測履歴64は分岐予測74(1)を記憶するように更新される。また、分岐予測74(1)は、転送回路45によって、投機的予測76(1)として第2の分岐予測履歴66に転送される。分岐命令AおよびBがそれぞれ実行パイプラインステージF2およびF1に進むとき、条件付き分岐命令68(2)(分岐命令C)が実行パイプラインステージF0に入る。第1の分岐予測器42および第2の分岐予測器44は、分岐命令Cのための分岐予測を生成し始め、第1の分岐予測器42および第2の分岐予測器44はいずれも、第1の分岐予測器42による分岐命令AおよびBのための早期の分岐予測の恩恵を受ける。
【００３４】
プロセッサクロックサイクル3において、分岐命令A、BおよびCはそれぞれ、引き続き実行パイプラインステージF3、F2およびF1に進み、条件付き分岐命令68(3)(分岐命令D)が実行パイプラインステージF0に入る。この時点で、第1の分岐予測器42は分岐命令Cのための分岐予測74(2)を生成しており、ここで、第1の分岐予測履歴64に記憶され、そして、投機的予測76(2)として第2の分岐予測履歴66に転送される。したがって、第1の分岐予測器42が分岐命令Dのための分岐予測(図示せず)を生成し始めるとき、その分岐予測の根拠を分岐命令A、BおよびCそれぞれのための先行する分岐予測74(0)、74(1)および74(2)に置く。プロセッサクロックサイクル3中に、第2の分岐予測器44は、分岐命令Aのための分岐予測78を生成するのを最終的に完了する。分岐予測78は、プロセッサクロックサイクル1において第2の分岐予測履歴66に転送された投機的予測76(0)と比較される。分岐予測78が投機的予測76(0)と異なる場合には、第2の分岐予測履歴66は、図3に示されるように、オーバーライドされる(すなわち、分岐予測78で更新される)。第1の分岐予測履歴64における分岐予測74(0)も、分岐予測78に基づいてオーバーライドすることができる。その後、第2の分岐予測器44は、第2の分岐予測履歴66の内容に基づいて分岐命令Dのための分岐予測(図示せず)を生成することに進む。
【００３５】
図4は、たとえば、図1のプロセッサ10において、先に説明された投機的履歴転送を実行するための例示的動作の流れ図である。明確にするために、図4を説明する際に図1および図3の要素が参照される。図4において、分岐予測回路12の第1の分岐予測器42が、第1の分岐予測履歴64に基づいて、命令キュー40内の条件付き分岐命令68の第1の分岐予測74を予測することで動作が開始する(ブロック80)。第1の分岐予測履歴64は、図1の第1の分岐予測履歴レジスタ46の内容に対応する。
【００３６】
図4を引き続き参照すると、分岐予測回路12は次に、条件付き分岐命令68のための第1の分岐予測74に基づいて第1の分岐予測履歴64を更新する(ブロック82)。その後、分岐予測回路12の転送回路45は、条件付き分岐命令68のための第1の分岐予測74を、投機的予測76として第2の分岐予測履歴66に転送する(ブロック84)。第2の分岐予測器44は、その後、投機的予測76を含む、第2の分岐予測履歴66に基づいて、命令キュー40内の条件付き分岐命令68の第2の分岐予測78を予測する(ブロック86)。このようにして、第1の分岐予測器42によって当初に生成された投機的予測76は、陳腐化した分岐予測履歴を用いて分岐予測を生成するのと比べて精度を改善するために、第2の分岐予測器44が利用できる。
【００３７】
いくつかの実施形態では、図1の分岐予測回路12によって、さらなるオプションのステップが実行される場合がある。分岐予測回路12は、第2の分岐予測78を投機的予測76と比較することができる(ブロック88)。その比較に基づいて、分岐予測回路12は、第2の分岐予測78が投機的予測76と異なるか否かを判断することができる(ブロック90)。異ならない場合には、投機的予測76は、正しいと仮定される(ブロック92)。分岐予測回路12が、ブロック90において、第2の分岐予測78が投機的予測76と異なると判断する場合には、分岐予測回路12は、第2の分岐予測78に基づいて、第1の分岐予測履歴64内の第1の分岐予測78および第2の分岐予測履歴66内の投機的予測76を更新することによって、投機的予測76をオーバーライドする(ブロック94)。
【００３８】
先に言及されたように、いくつかの実施形態では、第1の分岐予測履歴レジスタ46および第2の分岐予測履歴レジスタ48は、単一の履歴レジスタとして実現される場合がある。これに関連して、図5は、複数の分岐予測履歴を記憶する例示的な単一の履歴レジスタ96を示す。単一の履歴レジスタ96は、図1のレジスタ30のうち1つとして実現される場合があるか、または別の構造として実現される場合がある。
【００３９】
図5において見られるように、単一の履歴レジスタ96は、図1の第1の分岐予測器42および第2の分岐予測器44の両方によって生成される分岐予測を記憶する。2つのポインタ98および100はそれぞれ、第1の分岐予測器42および第2の分岐予測器44によって単一の履歴レジスタ96内に記憶された最新の分岐予測を示す。初期化時に、両方のポインタ98および100は、単一の履歴レジスタ96内の同じ場所を指示する。第1の分岐予測器42および第2の分岐予測器44がそれぞれ分岐予測を生成するにつれて、各ポインタ98および100によって指示される場所は、最新の分岐予測で更新され、ポインタ98および100が進められる。第1の分岐予測器42は第2の分岐予測器44より待ち時間が少ないので、第1の分岐予測器42に対応するポインタ98は、待ち時間の差に対応する数の場所だけ進む。第2の分岐予測器44が分岐予測を生成し始めると、ポインタ98および100は、ロックステップで移動する。
【００４０】
第1の分岐予測器42および第2の分岐予測器44はいずれも、単一の履歴レジスタ96内に記憶される分岐予測履歴(図示せず)にアクセスするように構成される。第2の分岐予測器44の観点から、ポインタ100とポインタ98との間の分岐予測は投機的予測である。第2の分岐予測器44が分岐予測を生成するにつれて、第2の分岐予測器44は、第1の分岐予測器42によって生成された任意の投機的予測ミスをオーバーライドするために、必要に応じて、ポインタ100によって指示される場所において分岐予測を更新することができる。
【００４１】
本明細書において開示される実施形態による分岐予測回路12は任意のプロセッサベースデバイス内に設けられるか、または組み込まれる。例は、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤを含む。
【００４２】
これに関連して、図6は、図1に示される分岐予測回路12を利用することができる、プロセッサベースシステム102の一例を示す。この例では、プロセッサベースのシステム102は、1つまたは複数の中央処理ユニット(CPU)104を含み、各CPUが図1の分岐予測回路(BPC)12を備える1つまたは複数のプロセッサ106を含む。CPU104は、一時的に記憶されたデータへの高速アクセスのためにプロセッサ106に結合されたキャッシュメモリ108を有することができる。CPU104は、システムバス110に結合され、プロセッサベースのシステム102内に含まれるマスターデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU104は、システムバス110を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU104は、メモリユニット114(0)〜114(N)を提供するメモリシステム112にバストランザクション要求を通信することができる。
【００４３】
他のマスターデバイスおよびスレーブデバイスをシステムバス110に接続することができる。図6に示されるように、これらのデバイスは、例として、メモリコントローラ116、1つまたは複数の入力デバイス118、1つまたは複数の出力デバイス120、1つまたは複数のネットワークインターフェースデバイス122、および1つまたは複数のディスプレイコントローラ124を含むことができる。入力デバイス118は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス120は、限定はしないが、音声、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス122は、ネットワーク126との間でのデータ交換を可能にするように構成される任意のデバイスとすることができる。ネットワーク126は、限定はしないが、ワイヤードネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む、任意のタイプのネットワークとすることができる。ネットワークインターフェースデバイス122は、所望の任意のタイプの通信プロトコルをサポートするように構成することができる。
【００４４】
また、CPU104は、1つまたは複数のディスプレイ128に送られる情報を制御するために、システムバス110を介してディスプレイコントローラ124にアクセスするように構成することができる。ディスプレイコントローラ124は、1つまたは複数のビデオプロセッサ130を介して表示される情報をディスプレイ128に送り、ビデオプロセッサ130は、表示される情報を、ディスプレイ128に適したフォーマットとなるように処理する。ディスプレイ128は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む任意のタイプディスプレイを含むことができる。
【００４５】
本明細書において開示される実施形態に関して説明された種々の例示的な論理ブロック、モジュール、回路およびアルゴリズムは、電子ハードウェアとして、メモリまたは別のコンピュータ可読媒体に記憶され、かつプロセッサまたは他の処理デバイスによって実行される命令として、または両方の組合せとして実現される場合があることを、当業者はさらに理解されよう。本明細書において説明されるマスターデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて利用される場合がある。本明細書において開示されるメモリは、任意のタイプおよびサイズのメモリとすることができ、任意のタイプの所望の情報を記憶するように構成することができる。この互換性を明確に示すために、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップが、一般的にその機能に関してこれまで説明されてきた。そのような機能がどのように実現されるかは、特定の適用例、設計上の選択、および/またはシステム全体に対して課される設計制約によって決まる。当業者は、説明される機能を特定の適用例ごとに様々なやり方で実現することができるが、そのような実施態様が、本開示の範囲からの逸脱を引き起こすと解釈されるべきではない。
【００４６】
本明細書において開示される実施形態と関連して説明した種々の例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途用集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブルロジックデバイス、個別のゲートもしくはトランジスタの論理、個別ハードウェア構成要素、または本明細書において説明された機能を果たすように設計されたこれらの任意の組合せを用いて、実現または実行することができる。プロセッサはマイクロプロセッサとすることができるが、代替の実施形態では、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。プロセッサはまた、コンピューティングデバイスの組合せ、たとえばDSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、1つまたは複数のマイクロプロセッサとDSPコアの併用、あるいは任意の他のそのような構成として実現される場合がある。
【００４７】
本明細書において開示される実施形態は、ハードウェアにおいて、またハードウェアに記憶される命令において具現される場合があり、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的にプログラム可能なROM(EPROM)、電気的に消去可能なプログラム可能ROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または、当技術分野で知られている任意の他の形態のコンピュータ可読媒体に存在することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替形態では、記憶媒体はプロセッサと一体に構成することができる。プロセッサおよび記憶媒体は、ASIC内に存在することができる。ASICはリモート局内に存在することができる。代替形態では、プロセッサおよび記憶媒体は、別個の構成要素としてリモート局、基地局、またはサーバ内に存在することができる。
【００４８】
本明細書の例示的な実施形態のいずれかにおいて説明される動作ステップは、例および説明を提供するために説明されることにも留意されたい。説明される動作は、例示される順序以外の数多くの異なる順序で実行することができる。さらに、単一の動作ステップで説明される動作は、実際にはいくつかの異なるステップで実施される場合がある。さらに、例示的な実施形態において論じられる1つまたは複数の動作ステップは、組み合わせることができる。流れ図に示される動作ステップは、当業者に容易に明らかになるような数多くの異なる変更を受ける場合があることは理解されたい。また、情報および信号を種々の異なる技術および技法のいずれかを使用して表すことができることも、当業者には理解されよう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表すことができる。
【００４９】
本開示のこれまでの説明は、あらゆる当業者が本開示を作製または使用できるようにするために提供される。本開示に対する種々の変更形態が当業者には容易に明らかとなり、本明細書において規定される一般原理は、本開示の趣旨または範囲から逸脱することなく、他の変形形態に適用することができる。したがって、本開示は、本明細書において説明される例および設計に限定されるものではなく、本明細書において開示される原理および新規の特徴に合致する最も広い範囲を与えられるべきである。
【符号の説明】
【００５０】
10  プロセッサ
12  分岐予測回路
14  入力/出力回路
16  命令キャッシュ
18  データキャッシュ
20  実行パイプライン
22  フロントエンド回路
24  実行ユニット
26  完了ユニット
28  リンクスタック
30  レジスタ
32  汎用レジスタ(GPR)
34  プログラムカウンタ
36  リンクレジスタ
38  フェッチ/デコードパイプラインステージ
40  命令キュー
42  第1の分岐予測器
44  第2の分岐予測器
45  転送回路
46  第1の分岐予測履歴レジスタ
48  第2の分岐予測履歴レジスタ
50  第1の分岐予測履歴
52  第2の分岐予測履歴
54(0)  条件付き分岐命令
54(1)  条件付き分岐命令
54(2)  条件付き分岐命令
54(3)  条件付き分岐命令
56  プロセッサクロックサイクル
58  複数サイクル待ち時間
60(0)  分岐予測
60(1)  分岐予測
60(2)  分岐予測
62  分岐予測
64  第1の分岐予測履歴
66  第2の分岐予測履歴
68(0)  条件付き分岐命令
68(1)  条件付き分岐命令
68(2)  条件付き分岐命令
68(3)  条件付き分岐命令
70  プロセッサクロックサイクルの待ち時間
72  複数サイクル待ち時間
74(0)  分岐予測
74(1)  分岐予測
74(2)  分岐予測
76(0)  投機的予測
76(1)  投機的予測
76(2)  投機的予測
78  分岐予測
96  単一の履歴レジスタ
98  ポインタ
100  ポインタ
102  プロセッサベースシステム
104  中央処理ユニット(CPU)
106  プロセッサ
108  キャッシュメモリ
110  システムバス
112  メモリシステム
114(0)  メモリユニット
114(N)  メモリユニット
116  コントローラ
118  入力デバイス
120  出力デバイス
122  ネットワークインターフェースデバイス
124  ディスプレイコントローラ
126  ネットワーク
128  ディスプレイ
130  ビデオプロセッサ
【図１】
0006370918.tif 000002
【図２】
0006370918.tif 000003
【図３】
0006370918.tif 000004
【図４】
0006370918.tif 000005
【図５】
0006370918.tif 000006
【図６】
0006370918.tif 000007