(57)【要約】【課題】分岐命令の分岐先を予測して得られた予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定を高速におこない、この判定のための処理に起因する性能低下を防ぐこと。【解決手段】ブランチヒストリ２０１を索引して予測分岐先アドレスとともにオフセットを取得し、命令フェッチアドレスとオフセットを加算して分岐命令アドレスを算出し、予測分岐先アドレスから分岐命令アドレスを引いて予測ディスプレイスメントを算出し、この予測ディスプレイスメントを、命令デコーダによって命令から切り出されたディスプレイスメントと比較することによって予測分岐先アドレスの正否を判定する構成とする。【選択図】        図２
2006260608.tif 000002
【特許請求の範囲】
【請求項１】
分岐命令の分岐先アドレスを予測し、予測した分岐先アドレスである予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定を行う分岐予測装置であって、
前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成手段と、
前記予測相対アドレス生成手段により生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定を行う予測正否判定手段とを備え、
前記予測相対アドレス生成手段は、前記予測分岐先アドレスから前記基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、
前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする分岐予測装置。
【請求項２】
分岐命令の分岐先アドレスを予測し、予測した分岐先アドレスである予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定を行う分岐予測方法であって、
前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成ステップと、
前記予測相対アドレス生成ステップにより生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定を行う予測正否判定ステップとを有し、
前記予測相対アドレス生成ステップは、前記予測分岐先アドレスから前記基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、
前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする分岐予測方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、分岐命令の分岐先アドレスを予測し、予測した分岐先アドレスである予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定をおこなう分岐予測装置および分岐予測方法に関し、特に、予測分岐先アドレスの正否判定を高速におこない、この正否判定に起因する性能低下を防ぐことができる分岐予測装置および分岐予測方法に関する。
【背景技術】
【０００２】
パイプライン処理手法以降の高度な命令処理手法を採用した情報処理装置においては、一つの命令の実行を待たずに、投機的に後続命令の処理を開始することで性能の向上を図ってきた。
【０００３】
しかし、分岐命令を実行する場合には、命令を実行した後でないと次に実行する命令アドレスが判明しないため、後続命令の処理を開始することができない。そこで、次に実行する命令アドレスを予測することによって、分岐命令を実行する前に後続命令の処理の開始を可能とする技術が注目されている。
【０００４】
たとえば、特開平６−８９１７３号公報には、ブランチヒストリを用いて次に実行する命令アドレスを予測する技術が開示されている。この従来技術では、過去に実行した分岐命令アドレスとその分岐先アドレスとを対応させてブランチヒストリに登録し、ブランチヒストリに登録された分岐命令を新たに実行する場合には、その分岐命令に対応する分岐先アドレスを用いて次に実行する命令アドレスを予測している。
【０００５】
また、特開２０００−１７２５０７号公報には、サブルーチンリターン命令の分岐先アドレスの予測精度を高める技術が開示されている。サブルーチンリターン命令では、分岐先アドレスが変化するため、ブランチヒストリに登録された過去の分岐先アドレスが実際の分岐先と異なることが多く、予測がはずれる率が高い。そこで、この従来技術では、サブルーチンリターンアドレスを保存したリターンアドレススタックのリターンアドレスとブランチヒストリの分岐先アドレスが一致した場合に、そのアドレスを後続命令の予測アドレスとすることによって、予測精度を向上させている。
【０００６】
ただし、このような分岐予測技術を用いて投機的に後続命令の処理をおこなう場合には、予測がはずれたときに、既に実行された後続命令の処理を無効とする必要がある。このため、実際の分岐先アドレスが算出された時点で、予測分岐先アドレスと実際の分岐先アドレスを比較し、両者が一致しているか否かを判定する必要がある。しかも、この判定は、処理性能を低下させないためには、実際の分岐先アドレスの計算と同じパイプラインステージでおこなわれる必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、近年の高クロック化にともない、実際の分岐先アドレスの計算と、計算された実際の分岐先アドレスと予測分岐先アドレスとの比較をパイプラインの１サイクルでおこなうことが困難となってきている。この結果、実際の分岐先アドレスの計算と、計算された実際の分岐先アドレスと予測分岐先アドレスとの比較をパイプラインの別のサイクルでおこなうことが必要となり、処理性能が低下するという問題が発生している。
【０００８】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、予測分岐先アドレスの正否判定を高速におこない、この正否判定に起因する性能低下を防ぐことができる分岐予測装置および分岐予測方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、本発明は、分岐命令の分岐先アドレスを予測し、予測した分岐先アドレスである予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定を行う分岐予測装置であって、前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成手段と、前記予測相対アドレス生成手段により生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定を行う予測正否判定手段とを備え、前記予測相対アドレス生成手段は、前記予測分岐先アドレスから前記基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする。
【００１０】
また、本発明は、分岐命令の分岐先アドレスを予測し、予測した分岐先アドレスである予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定を行う分岐予測方法であって、前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成ステップと、前記予測相対アドレス生成ステップにより生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定を行う予測正否判定ステップとを有し、前記予測相対アドレス生成ステップは、前記予測分岐先アドレスから前記基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする。
【００１１】
かかる発明によれば、予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成し、生成した予測相対アドレスを、分岐命令の実相対アドレスと比較することにより判定を行う場合に、予測分岐先アドレスから基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることとしたので、予測分岐先アドレスの正否判定を高速におこない、この正否判定に起因する性能低下を防ぐことができる。
【発明の効果】
【００１２】
本発明によれば、予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成し、生成した予測相対アドレスを、分岐命令の実相対アドレスと比較することにより判定を行う場合に、予測分岐先アドレスから基準となるアドレスとしての分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることとしたので、予測分岐先アドレスの正否判定を高速におこない、この正否判定に起因する性能低下を防ぐことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、この発明に係る分岐予測装置および分岐予測方法の好適な実施の形態を詳細に説明する。なお、実施の形態１では、この発明を、基本的なパイプライン処理をおこなう情報処理装置に適用した場合について説明し、実施の形態２では、この発明を、アウトオブオーダ制御を採用した情報処理装置に適用した場合について説明する。
【実施例】
【００１４】
（実施の形態１）
まず、本実施の形態１に係る予測分岐先アドレス正否判定の原理、すなわち、予測された分岐先アドレスが実際の分岐先アドレスと一致しているか否かの判定の原理について説明する。図１は、本実施の形態１に係る予測分岐先アドレス正否判定の原理を説明するための説明図である。
【００１５】
同図（ａ）に示すように、従来の予測分岐先アドレス正否判定では、命令フェッチ部によってフェッチされた分岐命令を命令デコーダがデコードし、命令に含まれるディスプレイスメントを切り出す。ここで、ディスプレイスメントとは、分岐先アドレスから分岐命令アドレスを引いた相対アドレスであり、分岐命令では、ディスプレイスメントによって分岐先アドレスを指定することが多い。
【００１６】
そして、切り出されたディスプレイスメントに分岐命令アドレスを加えて実際の分岐先アドレスを算出し、算出された実際の分岐先アドレスと予測分岐先アドレスを比較することによって予測分岐先アドレスの正否を判定している。このため、命令デコーダによるディスプレイスメントの切り出しから予測分岐先アドレスの正否の判定までに、加算と比較の二つの演算が必要となる。
【００１７】
一方、同図（ｂ）に示すように、本実施の形態１に係る予測分岐先アドレス正否判定では、命令デコーダの処理と並行して予測分岐先アドレスから分岐命令アドレスを引き、予測分岐先アドレスに対するディスプレイスメントである予測ディスプレイスメントを求める。
【００１８】
そして、この予測ディスプレイスメントを命令デコーダが切り出したディスプレイスメントと比較することによって予測分岐先アドレスの正否を判定することとしている。このため、命令デコーダによるディスプレイスメントの切り出しから予測分岐先アドレスの正否の判定までに、比較演算だけが必要であり、加算演算は不要となる。
【００１９】
このように、本実施の形態１では、実際の分岐先アドレスと予測分岐先アドレスを比較することによって予測分岐先アドレスの正否を判定する替わりに、予測ディスプレイスメントを命令デコーダの処理と並行して求め、この予測ディスプレイスメントを命令デコーダが切り出したディスプレイスメントと比較することによって予測分岐先アドレスの正否の判定をおこなう。このため、命令デコーダによる命令デコード後、比較器による処理のみによって予測分岐先アドレスの正否の判定をおこなうことができ、より高速に判定をおこなうことができる。
【００２０】
次に、本実施の形態１に係る分岐予測装置の構成について説明する。図２は、本実施の形態１に係る分岐予測装置の構成を示す機能ブロック図である。同図に示すように、この分岐予測装置２００は、ブランチヒストリ２０１と、オフセット記憶部２０２と、予測分岐先アドレス記憶部２０３と、加算器２０４と、減算器２０５と、比較器２０６とを有する。
【００２１】
ブランチヒストリ２０１は、過去に実行された分岐命令の分岐先アドレスを記憶した記憶部であり、１次キャッシュから取り出された命令データに分岐命令が含まれる場合に、その分岐命令の分岐先アドレスを予測するために用いられる。
【００２２】
図３は、ブランチヒストリ２０１のエントリのデータ構造の一例を示す図である。同図に示すように、ブランチヒストリ２０１のエントリは、制御情報と、分岐命令アドレスと、予測分岐先アドレスとから構成される。
【００２３】
制御情報は、過去にこの分岐命令が実行された時に分岐が成立したか否かなどの情報を管理した情報である。分岐命令アドレスは、分岐命令の命令アドレスであり、ブランチヒストリ２０１の索引として用いられる。また、予測分岐先アドレスは、過去にこの分岐命令が実行された時の分岐先アドレスであり、次にこの分岐命令を実行する場合に、分岐先アドレスの予測値として用いられる。
【００２４】
オフセット記憶部２０２は、分岐命令アドレスから命令フェッチアドレスを引いて得られるオフセットを一時的に記憶する記憶部である。図４は、オフセットの一例を示す図である。同図において、１回にフェッチされる命令データの長さは８バイトであり、この命令データの中に、順に２バイト命令、４バイトの分岐命令、２バイト命令の３つの命令が含まれている。この例では、分岐命令アドレスは命令フェッチアドレス＋２であり、オフセットは２となる。
【００２５】
このオフセットは、ブランチヒストリ２０１を命令フェッチアドレスで索引することによってオフセット記憶部２０２にセットされる。すなわち、ブランチヒストリ２０１は、命令フェッチアドレスの他に、フェッチされる命令データに含まれる命令が全て最小命令長であると仮定した場合の全ての命令アドレスで索引される。そして、これらのアドレスのいずれかと一致する分岐命令アドレスがブランチヒストリ２０１に登録されている場合に、その分岐命令アドレスと命令フェッチアドレスの差がオフセットとしてオフセット記憶部２０２にセットされる。
【００２６】
たとえば、１回にフェッチされる命令データの長さが８バイトであり、最小命令長が２バイトである場合には、フェッチされたデータに含まれる命令が全て２バイト命令であると仮定すると、ブランチヒストリ２０１は、命令フェッチアドレス、命令フェッチアドレス＋２、命令フェッチアドレス＋４、命令フェッチアドレス＋６の四つのアドレスで索引される。そして、命令フェッチアドレス＋２のアドレスの命令が分岐命令であるとすると、２がオフセット記憶部２０２にセットされる。
【００２７】
予測分岐先アドレス記憶部２０３は、分岐命令の予測分岐先アドレスを記憶する記憶部であり、予測分岐先アドレスは、ブランチヒストリ２０１を索引することによってオフセットとともに得られる。
【００２８】
加算器２０４は、二つの入力値を加算し、加算結果を出力する処理部であり、ここでは、命令フェッチアドレスとオフセットを加えて分岐命令アドレスを算出するために用いられる。
【００２９】
減算器２０５は、二つの入力値の間で減算をおこない、その結果を出力する処理部であり、ここでは、予測分岐先アドレスから分岐命令アドレスを引き、予測ディスプレイスメントを算出するために用いられる。
【００３０】
比較器２０６は、二つの入力値を比較し、両者が一致しているか否かを出力する処理部であり、ここでは、減算器２０５が出力した予測ディスプレイスメントと命令デコーダが命令から切り出したディスプレイスメントを比較することによって、予測分岐先アドレスと実際の分岐先アドレスが一致しているか否かを判定するために用いられる。
【００３１】
このように、この比較器２０６がディスプレイスメントおよび予測ディスプレイスメントを用いて、実際の分岐先アドレスと予測分岐先アドレスが一致するか否かを判定することとしたので、ディスプレイスメントの切り出しの後に実際の分岐先アドレスを計算する必要がなく、より高速に予測分岐先アドレス正否の判定をおこなうことができる。
【００３２】
なお、図２において、ＩＡ、ＩＴ、ＩＭ、ＩＢ、ＩＲ、ＥおよびＤはパイプラインのステージ名であり、ＩＡ（Instruction Address）は、命令フェッチアドレスを生成するステージを示し、ＩＴ（Tag Read）は、キャッシュのタグを読み出すステージを示し、ＩＭ（Tag Match）は、キャッシュのタグと命令フェッチアドレスのマッチングをとるステージを示している。
【００３３】
また、ＩＢ（Buffer Read）は、命令フェッチアドレスとタグがマッチしたキャッシュの命令データを読み出すステージを示し、ＩＲ（Result）は、命令データが命令バッファにセットされるステージを示している。同様に、Ｅ（Pre-Decode）は、命令バッファから１つの命令を切り出すステージを示し、Ｄ（Decode）は、切り出された命令をデコードするステージを示している。
【００３４】
したがって、図２は、分岐予測装置２００の機能構成を示すと同時に、各機能部がパイプラインのどのステージで動作するかということも示している。具体的には、ＩＴステージおよびＩＭステージではブランチヒストリ２０１の索引がおこなわれ、ＩＭステージからＩＢステージにかけてオフセットおよび予測分岐先アドレスが得られ、ＩＢステージの後半で加算器２０４が動作して分岐命令アドレスが得られることを示している。
【００３５】
また、ＩＲステージでは減算器２０５が動作して予測ディスプレイスメントが得られ、Ｄステージでは比較器２０６が動作し、予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定がおこなわれることを示している。
【００３６】
さらに、図２は、命令をデコードするために動作する命令フェッチアドレス生成部、１次キャッシュ、命令バッファ、命令切り出し部および命令デコーダが、パイプラインのどのステージで動作するかということも示しており、特に、Ｄステージでは、１サイクルステージで命令のデコードと予測分岐先アドレス正否の判定がおこなわれることを示している。なお、同図は、ＩＲステージとＥステージが同じサイクルステージである場合を示しているが、これらのステージは、別のサイクルステージとなる場合もある。
【００３７】
次に、本実施の形態１に係る分岐予測装置２００による予測分岐先正否判定の処理手順について説明する。図５は、本実施の形態１に係る分岐予測装置２００による予測分岐先アドレス正否判定の処理手順を示すフローチャートである。
【００３８】
同図に示すように、この分岐予測装置２００は、命令フェッチアドレス生成部が生成した命令フェッチアドレスを用いてブランチヒストリ２０１を索引し、オフセットおよび予測分岐先アドレスを取得する（ステップＳ５０１）。
【００３９】
そして、取得したオフセットと命令フェッチアドレスを加算器２０４が加算して分岐命令アドレスを算出し（ステップＳ５０２）、減算器２０５が予測分岐先アドレスから分岐命令アドレスを引いて予測ディスプレイスメントを算出する（ステップＳ５０３）。
【００４０】
そして、比較器２０６が予測ディスプレイスメントと実際のディスプレイスメントを比較し、予測分岐先アドレスと実際の分岐先アドレスが一致しているか否かを判定する（ステップＳ５０４）。
【００４１】
上述してきたように、本実施の形態１では、ブランチヒストリ２０１を索引して予測分岐先アドレスとともにオフセットを取得し、命令フェッチアドレスとオフセットを加算して分岐命令アドレスを算出し、予測分岐先アドレスから分岐命令アドレスを引いて予測ディスプレイスメントを算出し、この予測ディスプレイスメントを、命令デコーダによって命令から切り出されたディスプレイスメントと比較することによって予測分岐先アドレスの正否を判定することとしたので、予測分岐先アドレスの正否判定のために実際の分岐先アドレスを計算する必要がなくなり、分岐命令のデコードと分岐先アドレス正否の判定をパイプラインの１サイクルステージで高速におこなうことができる。
【００４２】
なお、上記実施の形態１では、ブランチヒストリ２０１に予測分岐先アドレスを登録したが、予測分岐先アドレスのかわりに予測ディスプレイスメントを登録することもできる。また、ブランチヒストリ２０１に予測分岐先アドレスと予測ディスプレイスメントの両方を登録することもできる。
【００４３】
その他、上記実施の形態１では、ブラチヒストリ２０１を索引することによってオフセットを得ることとしたが、命令バッファの分岐命令をプリデコードすることによってオフセットを得ることもできる。
【００４４】
（実施の形態２）
ところで、上記実施の形態１では、本発明を基本的なパイプライン処理に適用した場合を示したが、最近の情報処理装置では、命令の実行順序を変更し、実行可能な命令から処理をおこなうアウトオブオーダ制御が採用されている。そこで、本実施の形態２では、本発明を、アウトオブオーダ制御をおこなう情報処理装置に適用した場合について説明する。
【００４５】
図６は、本実施の形態２に係る分岐予測装置の構成を示す機能ブロック図である。なお、アウトオブオーダ制御では、命令フェッチ要求をおこなった順番と命令バッファに命令データがセットされる順番が一致するとは限らない。たとえば、先に命令フェッチ要求を受けた命令データが１次キャッシュにない場合には、後から命令フェッチ要求を受けた命令データであっても、その命令データが１次キャッシュにあれば、先に命令バッファにセットされる可能性がある。
【００４６】
したがって、命令データが命令バッファにセットされるタイミングは、命令フェッチ要求時点での命令データの格納場所によって異なる。そこで、図６は、分岐予測装置のうち、命令データの格納場所に動作タイミングが依存しないパイプラインのステージ、すなわち、命令バッファに命令データがセットされた後のＥステージおよびＤステージで動作する機能部について示している。
【００４７】
同図に示すように、この分岐予測装置６００は、ＥステージおよびＤステージで動作する機能部として、予測分岐先アドレス記憶部６０１と、命令フェッチアドレス記憶部６０２と、減算器６０３と、ラッチ６０４と、オフセット記憶部６０５と、加算器６０６と、比較器６０７とを有する。
【００４８】
予測分岐先アドレス記憶部６０１は、図２に示した予測分岐先アドレス記憶部２０３と同様に、分岐命令の予測分岐先アドレスを記憶する記憶部であり、オフセット記憶部６０５は、図２に示したオフセット記憶部２０２と同様に、オフセットを記憶する記憶部である。ただし、アウトオブオーダ制御では、複数の命令フェッチ要求が並行して処理されるため、両者とも複数のデータを記憶することができる。
【００４９】
命令フェッチアドレス記憶部６０２は、命令フェッチアドレスを記憶する記憶部であり、この命令フェッチアドレス記憶部６０２も、複数の命令フェッチアドレスを記憶することができる。
【００５０】
減算器６０３は、二つの入力値の間で減算をおこない、その結果を出力する処理部であり、ここでは、予測分岐先アドレスから命令フェッチアドレスを引き、オフセットが加えられた予測ディスプレイスメントを算出するために用いられる。
【００５１】
ラッチ６０４は、同期をとるために一時的にデータを保持する記憶部であり、ここでは、オフセットが加えられた予測ディスプレイスメントを比較器６０７に入力する前に一時的に保持するために用いられる。
【００５２】
加算器６０６は、二つの入力値を加算し、加算結果を出力する処理部であり、ここでは、命令デコーダが分岐命令をデコードして出力する実際のディスプレイスメントにオフセットを加算するために用いられる。
【００５３】
比較器６０７は、二つの入力値を比較し、両者が一致しているか否かを出力する処理部であり、ここでは、予測ディスプレイスメントと実際のディスプレイスメントを、それぞれオフセットが加えられた値で比較することによって、予測分岐先アドレスと実際の分岐先アドレスが一致しているか否かを判定するために用いられる。
【００５４】
選択信号は、複数の命令バッファから次に実行する命令を選択する信号であり、この選択信号によって予測分岐先アドレス記憶部６０１、オフセット記憶部６０５および命令フェッチアドレス記憶部６０２から次に実行する分岐命令の予測分岐アドレス、オフセットおよび命令フェッチアドレスが選択される。
【００５５】
また、この選択信号は、１次キャッシュ、２次キャッシュ、主記憶などの記憶部に命令データのフェッチを要求した時刻と、それぞれの記憶部から命令バッファに命令データが書き込むまでに必要な時間に基づいて生成される。
【００５６】
なお、オフセットの値は、ディスプレイスメントと比較して非常に小さく、加算器６０６は、インクリメンタ程度の構成で作ることができる。このため、この加算器６０６は、全ビット加算器に比べて圧倒的に速く加算をおこなうことができる。また、多くのＲＩＳＣ（Reduced Instruction Set Computer）型のＣＰＵでは、命令のデコードは非常に簡単であり、命令語からのディスプレイスメント部分の切り出しを高速におこなうことができる。したがって、ＲＩＳＣ型のＣＰＵでは、図６に示した比較器６０７までの処理をＤステージで完了することができる。
【００５７】
上述してきたように、本実施の形態２では、複数の分岐命令に対応する予測分岐先アドレス、オフセットおよび命令フェッチアドレスを記憶し、次に処理する分岐命令に対応する予測分岐先アドレス、オフセットおよび命令フェッチアドレスを選択信号を用いて選択し、予測ディスプレイスメントと実際のディスプレイスメントを、それぞれにオフセットが加えられた値で比較することによって予測分岐先アドレスと実際の分岐先アドレスが一致しているか否かを判定することとしたので、アウトオブオーダ制御を採用した情報処理装置でも、ＲＩＳＣ型のＣＰＵであれば、分岐先アドレス正否の判定をパイプラインのＤステージで完了することができる。
【００５８】
一方、多くのＣＩＳＣ型のＣＰＵでは、命令のデコードが複雑であり、ディスプレイスメントの切り出しに時間がかかる。したがって、図６に示した分岐予測装置６００の構成では、比較器６０７までの処理をＤステージで完了することができない。そこで、ＣＩＳＣ型のＣＰＵの場合の分岐予測装置の構成について説明する。
【００５９】
図７は、本実施の形態２に係る分岐予測装置の変形例の構成を示す機能ブロック図である。なお、ここでは説明の便宜上、図６に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００６０】
図７に示すように、この分岐予測装置７００は、ＥステージおよびＤステージで動作する機能部として、予測分岐先アドレス記憶部６０１と、命令フェッチアドレス記憶部６０２と、減算器６０３と、ラッチ６０４と、オフセット記憶部６０５と、減算器７０１と、比較器７０２とを有する。
【００６１】
減算器７０１は、二つの入力値の間で減算をおこない、その結果を出力する処理部であり、ここでは、減算器６０３が予測分岐先アドレスから命令フェッチアドレスを引いた値から、さらにオフセットを引いて予測ディスプレイスメントを算出するために用いられる。
【００６２】
比較器７０２は、二つの入力値を比較し、両者が一致しているか否かを出力する処理部であり、ここでは、減算器７０１が出力する予測ディスプレイスメントと命令デコーダの出力する実際のディスプレイスメントを比較することによって、予測分岐先アドレスと実際の分岐先アドレスが一致しているか否かを判定するために用いられる。
【００６３】
このように、分岐予測装置７００は、予測分岐先アドレス、オフセットおよび命令フェッチアドレスを用いて、予測ディスプレイスメントを命令のデコードと並行して算出し、分岐命令をデコードして実際のディスプレイスメントが得られると直ちに予測ディスプレイスメントと比較することとしたので、ＣＩＳＣ型のＣＰＵでも、分岐命令のデコードと分岐先アドレス正否の判定をパイプラインの１つのサイクルステージで高速におこなうことができる。
【００６４】
（付記１）分岐命令の分岐先アドレスを予測し、予測した分岐先アドレスである予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定をおこなう分岐予測装置であって、
前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成手段と、
前記予測相対アドレス生成手段により生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定をおこなう予測正否判定手段と、
を備えたことを特徴とする分岐予測装置。
【００６５】
（付記２）前記予測相対アドレス生成手段は、前記予測分岐先アドレスから分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする付記１に記載の分岐予測装置。
【００６６】
（付記３）前記予測相対アドレス生成手段は、命令フェッチアドレスを入力して分岐命令の予測分岐先アドレスを生成する分岐先予測手段と、分岐命令アドレスから命令フェッチアドレスを引いたオフセットを生成するオフセット生成手段と、前記分岐先予測手段により生成された予測分岐先アドレスから前記オフセットおよび命令フェッチアドレスを引いて前記予測ディスプレイスメントを算出する予測ディスプレイスメント算出手段とを備えたことを特徴とする付記２に記載の分岐予測装置。
【００６７】
（付記４）前記予測ディスプレイスメント算出手段は、命令フェッチアドレスに前記オフセットを加算して分岐命令アドレスを算出し、算出された該分岐命令アドレスを前記分岐先予測手段により生成された予測分岐先アドレスから引いて予測ディスプレイスメントを算出することを特徴とする付記３に記載の分岐予測装置。
【００６８】
（付記５）順不同に複数の命令バッファにセットされる命令列のうち分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを記憶する複数分岐命令アドレス情報記憶手段と、前記複数分岐命令アドレス情報記憶手段から特定の分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを選択する分岐命令アドレス情報選択手段とをさらに備え、前記予測ディスプレイスメント算出手段は、前記分岐命令アドレス情報選択手段により選択された命令フェッチアドレス、オフセットおよび予測分岐先アドレスを用いて前記予測ディスプレイスメントを算出することを特徴とする付記３に記載の分岐予測装置。
【００６９】
（付記６）前記予測相対アドレス生成手段は、命令フェッチアドレスから前記予測ディスプレイスメントを索引するブランチヒストリであることを特徴とする付記２に記載の分岐予測装置。
【００７０】
（付記７）前記予測相対アドレス生成手段は、前記予測分岐先アドレスから命令フェッチアドレスを引いたオフセット加算予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントに、命令アドレスから命令フェッチアドレスを引いたオフセットを加えたオフセット加算ディスプレイスメントであることを特徴とする付記１に記載の分岐予測装置。
【００７１】
（付記８）前記予測相対アドレス生成手段は、命令フェッチアドレスを入力して分岐命令の予測分岐先アドレスを生成する分岐先予測手段と、前記分岐先予測手段により生成された予測分岐先アドレスから命令フェッチアドレスを引いたオフセット加算予測ディスプレイスメントを算出するオフセット加算予測ディスプレイスメント算出手段とを備えたことを特徴とする付記７に記載の分岐予測装置。
【００７２】
（付記９）順不同に複数の命令バッファにセットされる命令列のうち分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを記憶する複数分岐命令アドレス情報記憶手段と、前記複数分岐命令アドレス情報記憶手段から特定の分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを選択する分岐命令アドレス情報選択手段とをさらに備え、前記オフセット加算予測ディスプレイスメント算出手段は、前記分岐命令アドレス情報選択手段により選択された命令フェッチアドレスおよび予測分岐先アドレスを用いて前記オフセット加算予測ディスプレイスメントを算出し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントに、前記分岐命令アドレス情報選択手段により選択されたオフセットを加えたオフセット加算ディスプレイスメントであることを特徴とする付記８に記載の分岐予測装置。
【００７３】
（付記１０）前記予測相対アドレス生成手段は、命令フェッチアドレスから前記オフセット加算予測ディスプレイスメントを索引するブランチヒストリであることを特徴とする付記７に記載の分岐予測装置。
【００７４】
（付記１１）分岐命令の分岐先アドレスを予測し、予測した分岐先アドレスである予測分岐先アドレスが実際の分岐先アドレスと一致するか否かの判定をおこなう分岐予測方法であって、
前記予測分岐先アドレスおよび基準となるアドレスから予測相対アドレスを生成する予測相対アドレス生成工程と、
前記予測相対アドレス生成工程により生成された予測相対アドレスを、前記分岐命令の実相対アドレスと比較することにより前記判定をおこなう予測正否判定工程と、
を含んだことを特徴とする分岐予測方法。
【００７５】
（付記１２）前記予測相対アドレス生成工程は、前記予測分岐先アドレスから分岐命令アドレスを引いた予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントであることを特徴とする付記１１に記載の分岐予測方法。
【００７６】
（付記１３）前記予測相対アドレス生成工程は、命令フェッチアドレスを入力して分岐命令の予測分岐先アドレスを生成する分岐先予測工程と、分岐命令アドレスから命令フェッチアドレスを引いたオフセットを生成するオフセット生成工程と、前記分岐先予測工程により生成された予測分岐先アドレスから前記オフセットおよび命令フェッチアドレスを引いて前記予測ディスプレイスメントを算出する予測ディスプレイスメント算出工程とを含んだことを特徴とする付記１２に記載の分岐予測方法。
【００７７】
（付記１４）前記予測ディスプレイスメント算出工程は、命令フェッチアドレスに前記オフセットを加算して分岐命令アドレスを算出し、算出された該分岐命令アドレスを前記分岐先予測工程により生成された予測分岐先アドレスから引いて予測ディスプレイスメントを算出することを特徴とする付記１３に記載の分岐予測方法。
【００７８】
（付記１５）順不同に複数の命令バッファにセットされる命令列のうち分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスから、特定の分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを選択する分岐命令アドレス情報選択工程をさらに備え、前記予測ディスプレイスメント算出工程は、前記分岐命令アドレス情報選択工程により選択された命令フェッチアドレス、オフセットおよび予測分岐先アドレスを用いて前記予測ディスプレイスメントを算出することを特徴とする付記１３に記載の分岐予測方法。
【００７９】
（付記１６）前記予測相対アドレス生成工程は、命令フェッチアドレスから前記予測ディスプレイスメントをブランチヒストリ用いて索引することを特徴とする付記１２に記載の分岐予測方法。
【００８０】
（付記１７）前記予測相対アドレス生成工程は、前記予測分岐先アドレスから命令フェッチアドレスを引いたオフセット加算予測ディスプレイスメントを予測相対アドレスとして生成し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントに、命令アドレスから命令フェッチアドレスを引いたオフセットを加えたオフセット加算ディスプレイスメントであることを特徴とする付記１１に記載の分岐予測方法。
【００８１】
（付記１８）前記予測相対アドレス生成工程は、命令フェッチアドレスを入力して分岐命令の予測分岐先アドレスを生成する分岐先予測工程と、前記分岐先予測工程により生成された予測分岐先アドレスから命令フェッチアドレスを引いたオフセット加算予測ディスプレイスメントを算出するオフセット加算予測ディスプレイスメント算出工程とを含んだことを特徴とする付記１７に記載の分岐予測方法。
【００８２】
（付記１９）順不同に複数の命令バッファにセットされる命令列のうち分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスから、特定の分岐命令についての、命令フェッチアドレス、オフセットおよび予測分岐先アドレスを選択する分岐命令アドレス情報選択工程をさらに備え、前記オフセット加算予測ディスプレイスメント算出工程は、前記分岐命令アドレス情報選択工程により選択された命令フェッチアドレスおよび予測分岐先アドレスを用いて前記オフセット加算予測ディスプレイスメントを算出し、前記実相対アドレスは、分岐命令をデコードして得られるディスプレイスメントに、前記分岐命令アドレス情報選択工程により選択されたオフセットを加えたオフセット加算ディスプレイスメントであることを特徴とする付記１８に記載の分岐予測方法。
【００８３】
（付記２０）前記予測相対アドレス生成工程は、命令フェッチアドレスから前記オフセット加算予測ディスプレイスメントをブランチヒストリを用いて索引することを特徴とする付記１７に記載の分岐予測方法。
【産業上の利用可能性】
【００８４】
以上のように、本発明に係る分岐予測装置および分岐予測方法は、分岐予測を行う情報処理装置に有用であり、特に、予測分岐先アドレスの正否判定を高速におこないたい場合に適している。
【図面の簡単な説明】
【００８５】
【図１】本実施の形態１に係る予測分岐先アドレス正否判定の原理を説明するための説明図である。
【図２】本実施の形態１に係る分岐予測装置の構成を示す機能ブロック図である。
【図３】ブランチヒストリのエントリのデータ構造の一例を示す図である。
【図４】オフセットの一例を示す図である。
【図５】本実施の形態１に係る分岐予測装置による予測分岐先アドレス正否判定の処理手順を示すフローチャートである。
【図６】本実施の形態２に係る分岐予測装置の構成を示す機能ブロック図である。
【図７】本実施の形態２に係る分岐予測装置の変形例の構成を示す機能ブロック図である。
【符号の説明】
【００８６】
２００，６００，７００  分岐予測装置
２０１  ブランチヒストリ
２０２，６０５  オフセット記憶部
２０３，６０１  予測分岐先アドレス記憶部
２０４，６０６  加算器
２０５，６０３，７０１  減算器
２０６，６０７，７０２  比較器
６０２  命令フェッチアドレス記憶部
６０４  ラッチ
【図１】
2006260608.tif 000003
【図２】
2006260608.tif 000004
【図３】
2006260608.tif 000005
【図４】
2006260608.tif 000006
【図５】
2006260608.tif 000007
【図６】
2006260608.tif 000008
【図７】
2006260608.tif 000009