(57)【要約】【課題】分岐命令の分岐履歴を用いて分岐予測を行う分岐予測装置で、同時に完了する複数の分岐命令の分岐情報を分岐履歴に反映し、予測制度を向上すること。【解決手段】グローバルヒストリエントリi１１０（ｉ＝１，２，・・・，ｎ）が分岐リザベーションステーション４０のＲＳＢＲ0から識別情報0および分岐情報0を、ＲＳＢＲ1から識別情報1および分岐情報1を同時に受け取り、識別情報0とタグ部１１１に記憶したタグとを比較回路１１２を用いて比較し、マッチした場合には分岐情報0および過去の分岐履歴から分岐予測i_0を生成し、識別情報1とタグ部１１１に記憶したタグとを比較回路１１３を用いて比較し、マッチした場合には分岐情報1および過去の分岐履歴からから分岐予測i_1を生成するよう構成する。【選択図】        図１
2005165950.tif 000002
【特許請求の範囲】
【請求項１】
分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測装置であって、
同時に完了した複数の分岐命令の分岐情報を受け付ける分岐情報受付手段と、
前記分岐情報受付手段により同時に受け付けられた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令の分岐予測を並行して行う並行分岐予測手段と
を備えたことを特徴とする分岐予測装置。
【請求項２】
前記並行分岐予測手段は、
分岐命令を識別する識別子を記憶する識別子記憶手段と、
前記複数の分岐命令のうち前記識別子記憶手段に記憶される識別子と識別子が同一である分岐命令に対して、該分岐命令の過去の分岐履歴および分岐情報に基づいて分岐予測を行う分岐方向予測手段と
を有する分岐予測要素手段を複数備え、該複数の分岐予測要素手段が並行して分岐予測を行うことを特徴とする請求項１に記載の分岐予測装置。
【請求項３】
前記識別子記憶手段により記憶される識別子は、分岐命令ごとに異なり、前記分岐方向予測手段は、前記分岐情報受付手段により同時に受け付けられた複数の分岐情報が識別子が同一である分岐命令についての分岐情報であるときは、該複数の分岐情報を順番に受け付けたものとして分岐予測を行うことを特徴とする請求項２に記載の分岐予測装置。
【請求項４】
分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリを有し、
前記並行分岐予測手段により並行して行われた複数の分岐予測結果を前記ブランチヒストリに並行して登録する並行登録手段
をさらに備えたことを特徴とする請求項１に記載の分岐予測装置。
【請求項５】
分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリを有し、
前記並行分岐予測手段により並行して行われた複数の分岐予測結果のうち所定の数の分岐予測結果を選択する選択手段と、
前記選択手段により選択された所定の数の分岐予測結果を前記ブランチヒストリに登録する選択登録手段と
をさらに備えたことを特徴とする請求項１に記載の分岐予測装置。
【請求項６】
前記選択手段は、分岐命令に関する所定の優先順位に基づいて分岐予測結果を選択することを特徴とする請求項５に記載の分岐予測装置。
【請求項７】
前記選択手段が選択する分岐予測結果の優先順位は、再命令フェッチとなった分岐命令の分岐予測結果、他の分岐予測機構を更新する分岐予測結果、分岐方向変更と予測された分岐予測結果、前記ブランチヒストリに分岐命令毎に登録される状態を更新する分岐予測結果の順であることを特徴とする請求項６に記載の分岐予測装置。
【請求項８】
前記他の分岐予測機構は、サブルーチンコールとリターンの無条件分岐命令の対に対して分岐予測を行うことを特徴とする請求項７に記載の分岐予測装置。
【請求項９】
前記ブランチヒストリに分岐命令毎に登録される状態は、該ブランチヒストリが分岐すると予測して分岐しなかった場合にセットされるＤｉｚｚｙフラグおよび該ブランチヒストリが分岐すると予測して分岐したが分岐先が間違っていた場合にセットされるＧｉｄｄｙフラグであることを特徴とする請求項７に記載の分岐予測装置。
【請求項１０】
分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測方法であって、
同時に完了した複数の分岐命令の分岐情報を受け付ける分岐情報受付工程と、
前記分岐情報受付工程により同時に受け付けられた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令の分岐予測を並行して行う並行分岐予測工程と
を含んだことを特徴とする分岐予測方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測装置および分岐予測方法に関し、特に、同時に完了した複数の分岐命令の分岐情報を分岐履歴に反映し、もって分岐予測の精度を向上することができる分岐予測装置および分岐予測方法に関するものである。
【背景技術】
【０００２】
従来、分岐命令の過去の分岐履歴を用いて分岐予測を行うグローバルヒストリは、分岐履歴の登録に用いる分岐情報が一つずつ送られてくることが前提とされていた。図８は、グローバルヒストリを用いる分岐予測装置の一例を示す図である。
【０００３】
同図に示すように、この分岐予測装置は、命令フェッチ部２０が、命令フェッチアドレス生成部１０により生成された命令フェッチアドレスを用いて、命令フェッチ要求を出すと同時にブランチヒストリ２００を索引する。ここで、ブランチヒストリ２００は、分岐命令のアドレスと分岐命令の予測分岐先のアドレスとを対応させて記憶し、分岐命令のアドレスから分岐先のアドレスを索引する連想記憶である。
【０００４】
すなわち、命令フェッチアドレスに対応する分岐命令がブランチヒストリ２００に登録されている場合には、命令フェッチ部２０は、ブランチヒストリ２００により予測された分岐先の命令アドレスを読み出し、次の命令フェッチは、この命令アドレスに基づいて行う。
【０００５】
一方、フェッチされた分岐命令は、命令デコーダ３０によりデコードされ、分岐リザベーションステーション４０に登録されて実行される。そして、分岐命令の処理が完了すると、分岐（Taken）または非分岐（Not Taken）のいずれかの分岐情報がグローバルヒストリ８００に渡される。
【０００６】
グローバルヒストリ８００は、各分岐命令の分岐履歴を記憶しており、受け取った分岐情報を用いて対応する分岐命令の分岐履歴を更新する。そして、更新した分岐履歴に基づいて、この分岐命令の次回の分岐方向を予測し、予測した分岐方向に基づいてブランチヒストリ２００の対応するエントリを更新する。
【０００７】
このように、この分岐予測装置では、グローバルヒストリ８００が分岐履歴を用いて分岐方向を予測し、その予測結果に基づいてブランチヒストリ２００を更新し、ブランチヒストリ２００がグローバルヒストリ８００の予測結果に基づいて分岐先を予測する（例えば、特願２００２−１９１２７７参照。）。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来のグローバルヒストリ８００は、履歴登録に用いる分岐情報が一つずつ送られてくることが前提とされていた。したがって、全ての分岐情報が完全に別サイクルで送られてくる場合は、情報を損なうこと無く操作に用いることが可能であるが、複数の分岐情報が同時に送られてくる場合には対処することができないという問題があった。
【０００９】
現在のように、スーパースカラプロセッサやアウトオブオーダの処理を採用したプロセッサにおいては、条件が揃い次第命令を実行し、複数の命令を同時に完了させることがあるため、複数の分岐命令が同時に完了することもある。したがって、グローバルヒストリは、同時に送られてくる複数の分岐情報に対応する必要がある。
【００１０】
また、同時に送られてくる複数の分岐情報にグローバルヒストリが対応する場合には、ブランチヒストリの更新も複数同時に発生するため、ブランチヒストリも複数の同時更新に対応する必要がある。しかし、ブランチヒストリはＲＡＭで構成されるため、入力ポートの数は限られることから、同時更新の数を入力ポートの数まで絞る必要もある。
【００１１】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、同時に完了した複数の分岐命令の分岐情報を分岐履歴に反映し、もって分岐予測の精度を向上することができる分岐予測装置、分岐予測方法および分岐予測プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、本発明は、分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測装置であって、同時に完了した複数の分岐命令の分岐情報を受け付ける分岐情報受付手段と、前記分岐情報受付手段により同時に受け付けられた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令の分岐予測を並行して行う並行分岐予測手段とを備えたことを特徴とする。
【００１３】
また、本発明は、分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測方法であって、同時に完了した複数の分岐命令の分岐情報を受け付ける分岐情報受付工程と、前記分岐情報受付工程により同時に受け付けられた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令の分岐予測を並行して行う並行分岐予測工程とを含んだことを特徴とする。
【００１４】
かかる発明によれば、同時に完了した複数の分岐命令の分岐情報を受け付け、同時に受け付けた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて複数の分岐命令の分岐予測を並行して行うよう構成したので、同時に完了した複数の分岐命令の分岐情報を全て分岐履歴に反映することができる。
【００１５】
また、本発明は、上記発明において、分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリを有し、前記並行分岐予測手段により並行して行われた複数の分岐予測結果を前記ブランチヒストリに並行して登録する並行登録手段をさらに備えたことを特徴とする。
【００１６】
この発明によれば、分岐命令のアドレスと分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリを有し、並行に行った複数の分岐予測結果をブランチヒストリに並行して登録するよう構成したので、同時に完了した複数の分岐命令の分岐情報を用いて行った分岐予測結果をブランチヒストリに反映することができる。
【００１７】
また、本発明は、上記発明において、分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリを有し、前記並行分岐予測手段により並行して行われた複数の分岐予測結果のうち所定の数の分岐予測結果を選択する選択手段と、前記選択手段により選択された所定の数の分岐予測結果を前記ブランチヒストリに登録する選択登録手段とをさらに備えたことを特徴とする。
【００１８】
この発明によれば、分岐命令のアドレスと分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリを有し、並行に行った複数の分岐予測結果のうち所定の数の分岐予測結果を選択し、選択した所定の数の分岐予測結果をブランチヒストリに登録するよう構成したので、ブランチヒストリの入力ポート数に合わせてブランチヒストリを更新することができる。
【発明の効果】
【００１９】
本発明によれば、同時に完了した複数の分岐命令の分岐情報を分岐履歴に反映するので、分岐予測の精度を向上することができるという効果を奏する。
【００２０】
また、本発明によれば、同時に完了した複数の分岐命令の分岐情報を用いて行った分岐予測結果をブランチヒストリに反映するので、分岐予測の精度を向上することができるという効果を奏する。
【００２１】
また、本発明によれば、ブランチヒストリの入力ポート数に合わせてブランチヒストリを更新するので、入力ポート数の少ないブランチヒストリを組み合わせて使用することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２２】
以下に添付図面を参照して、この発明に係る分岐予測装置および分岐予測方法の好適な実施例を詳細に説明する。なお、ここでは、二つの分岐命令が同時に完了する場合を中心に説明する。
【実施例】
【００２３】
まず、本実施例に係るグローバルヒストリのグローバルヒストリエントリの構成について説明する。図１は、本実施例に係るグローバルヒストリのグローバルヒストリエントリの構成を示す機能ブロック図である。同図に示すように、このグローバルヒストリ１００は、複数のグローバルヒストリエントリi（ｉ＝１，２，・・・，ｎ）から構成され、各グローバルヒストリエントリは、対応する分岐命令の分岐方向を予測し、予測した結果を分岐予測として出力する。
【００２４】
ここで、各グローバルヒストリエントリは、分岐命令のアドレスの部分ビット列によって分岐命令と対応づけられる。すなわち、命令アドレスの特定の部分ビット列が一定の複数の分岐命令が一つのグローバルヒストリエントリに対応付けられる。
【００２５】
また、各グローバルヒストリエントリは、いずれも同様の構成を有するので、ここではグローバルヒストリエントリi１１０を例にとって説明する。グローバルヒストリエントリi１１０は、タグ部１１１と、比較回路１１２および１１３と、分岐方向予測回路１１４とを有する。
【００２６】
タグ部１１１は、グローバルヒストリエントリi１１０が分岐方向を予測する分岐命令のアドレスの部分ビット列をタグとして記憶する記憶部である。すなわち、このタグ部１１１には、グローバルヒストリ１００に新たなエントリを作成する場合に、対応する分岐命令のアドレスの特定の部分ビット列がタグとして格納される。なお、タグとしては、分岐命令のアドレスの特定の部分ビット列の代わりに、アドレス全体、命令オペコードをキーとする連想情報などを用いることもできる。
【００２７】
比較回路１１２は、分岐リザベーションステーション４０の中のエントリであるＲＳＢＲ0から完了した分岐命令の識別情報0、すなわち完了した分岐命令のアドレスの特定の部分ビット列を含む情報を受け取り、タグ部１１１に記憶されたタグと比較する回路である。
【００２８】
比較回路１１３は、分岐リザベーションステーション４０の中のエントリであるＲＳＢＲ1から完了した分岐命令の識別情報1を受け取り、タグ部１１１に記憶されたタグと比較する回路である。
【００２９】
なお、分岐リザベーションステーション４０では、ＲＳＢＲ0、ＲＳＢＲ1、ＲＳＢＲ2、・・・の順に分岐命令が完了し、完了していない分岐命令はＲＳＢＲ0の方向へ順に移動される。したがって、ここでは、最大二つの分岐命令が同時に完了するため、識別情報および分岐情報は、ＲＳＢＲ0とＲＳＢＲ1とから各グローバルヒストリエントリに渡される。
【００３０】
分岐方向予測回路１１４は、ＲＳＢＲ0から分岐情報0を受け取り、ＲＳＢＲ1から分岐情報1を受け取って、内部に記憶した過去の分岐履歴情報を用いてそれぞれの分岐命令に対して分岐方向を予測する回路である。
【００３１】
例えば、この分岐方向予測回路１１４は、過去に発生した連続分岐（Taken）回数Ｔおよび連続非分岐（Not Taken）回数Ｎを記憶し、現在連続している分岐（Taken）の回数がＴになると次回を非分岐（Not Taken）と予測し、現在連続している非分岐（Not Taken）の回数がＮになると次回を分岐（Taken）と予測する。
【００３２】
そして、グローバルヒストリエントリi１１０は、分岐情報0に対して予測を行った結果と、比較回路１１２による比較結果とをＡＮＤ回路１１５によってＡＮＤを取り、分岐予測i_0を生成する。すなわち、ＲＳＢＲ0から受け取った識別情報0がタグ部１１１に記憶されたタグとマッチする場合には、分岐方向予測回路１１４が分岐履歴情報とＲＳＢＲ0から受け取った分岐情報0とを用いて分岐方向を予測して分岐予測i_0を生成する。
【００３３】
同様に、グローバルヒストリエントリi１１０は、分岐情報1に対して予測を行った結果と、比較回路１１３による比較結果とをＡＮＤ回路１１６によってＡＮＤを取り、分岐予測i_1を生成する。すなわち、ＲＳＢＲ1から受け取った識別情報1がタグ部１１１に記憶されたタグとマッチする場合には、分岐方向予測回路１１４が分岐履歴情報とＲＳＢＲ1から受け取った分岐情報1とを用いて分岐方向を予測して分岐予測i_1を生成する。
【００３４】
また、グローバルヒストリ１００は、各グローバルヒストリエントリ毎の分岐予測を各エントリの分岐予測i_0毎および分岐予測i_1毎にマージし、分岐予測0および分岐予測1を生成する。
【００３５】
図２は、各グローバルヒストリエントリによる分岐予測をマージするマージ回路の一例を示す図である。同図に示すように、このマージ回路は、各グローバルヒストリエントリの分岐予測i_0（ｉ＝１，２，・・・，ｎ）をマージし、分岐予測0を生成する。
【００３６】
なお、ここでは、グローバルヒストリ１００に新たなエントリを生成する場合には、完了して送られてきた分岐命令が既存のエントリにヒットしないことを条件としているので、分岐予測i_0（ｉ＝１・・・ｎ）のうち一つだけが生成されることが保証されている。したがって、このマージ回路のマージの仕方は、単に分岐予測i_0（ｉ＝１，２，・・・，ｎ）のＯＲをとればよい。
【００３７】
同様に、分岐予測i_1（ｉ＝１，２，・・・，ｎ）のＯＲをとることによって、分岐予測1を生成することができる。このように、分岐予測i_0および分岐予測i_1をそれぞれマージすることによって、最終的に最大二つの分岐予測、分岐予測0と分岐予測1が得られる。すなわち、別々のグローバルヒストリエントリで、識別情報0と識別情報1がそれぞれタグにマッチしたとすると、分岐予測0と分岐予測1の両方が最終的に得られる。
【００３８】
このように、各グローバルヒストリエントリがＲＳＢＲ0およびＲＳＢＲ1の両方から同時に識別情報と分岐情報とを受け付け、受け付けた識別情報のいずれかがタグ部１１１に記憶されたタグとマッチした場合に分岐予測を生成することによって、グローバルヒストリ１００は、ＲＳＢＲ0とＲＳＢＲ1の両方で同時に完了した分岐命令の分岐情報を処理することができる。
【００３９】
なお、同一のグローバルヒストリエントリに二つの分岐命令がヒット（多重ヒット）した場合には、二つの分岐命令が同一の分岐命令であれば、分岐方向予測回路１１４が二つの分岐情報を用いて分岐予測を行う。ここで、分岐リザベーションステーション４０が完全にインオーダで完了することとすると、同一の分岐命令が同時に完了する場合には、一つめの分岐命令は分岐（Taken）の可能性が高く、一つめの分岐命令を分岐（Taken）と仮定することにより、多重ヒットを効率良く処理することができる。
【００４０】
一方、タグ部１１１に記憶されたタグが分岐命令のアドレスの部分ビット列であるため、二つの分岐命令が同一の分岐命令でないにもかかわらず同一のグローバルヒストリエントリにヒットしたのであれば、分岐方向予測回路１１４が分岐情報1を用いて分岐予測を行う。ただし、無条件に分岐情報1を用いて分岐予測を行う代わりに、多重ヒットの回数や予測成功度合などを用いて、いずれかの分岐命令を選択することもできる。
【００４１】
次に、本実施例に係るグローバルヒストリ１００の構成について説明する。図３は、本実施例に係るグローバルヒストリ１００の構成を示す機能ブロック図である。同図に示すように、このグローバルヒストリ１００は、ｎ個のグローバルヒストリエントリi（ｉ＝１，２，・・・，ｎ）に加えてフラグ制御回路１２０と、マージ回路１３０および１４０と、セレクト回路１５０とを有する。
【００４２】
フラグ制御回路１２０は、ＲＳＢＲ0およびＲＳＢＲ1から前回の分岐予測、分岐情報などを受け取り、各分岐命令のＤｉｚｚｙフラグおよびＧｉｄｄｙフラグを制御する回路である。
【００４３】
ここで、Ｄｉｚｚｙフラグは、ブランチヒストリ２００が分岐すると予測したが分岐しなかった場合にセットされるフラグであり、Ｇｉｄｄｙフラグは、ブランチヒストリ２００が分岐すると予測して分岐したが分岐先が間違っていた場合にセットされるフラグである。これらのフラグは、分岐命令毎にブランチヒストリ２００に登録される。また、これらのフラグは、分岐予測成功によりリセットされる。
【００４４】
このフラグ制御回路１２０は、ブランチヒストリ２００が予測した結果と実際の分岐結果に基づいて、ＤｉｚｚｙフラグおよびＧｉｄｄｙフラグをセットまたはリセットする信号を生成する。そして、生成された信号はセレクト回路１５０によって使用される。
【００４５】
図４は、フラグ制御回路１２０の一例を示す図である。なお、ＲＳＢＲ0の分岐命令のフラグを制御する場合とＲＳＢＲ1の分岐命令のフラグを制御する場合とでは、いずれも同様の回路構成となるので、ここではＲＳＢＲ0の分岐命令のフラグを制御する場合を例にとって説明する。
【００４６】
同図に示すように、このフラグ制御回路１２０は、ＲＳＢＲ0からRSBR0_DIZZY、RSBR0_GIDDY、RSBR0_TAKEN、RSBR0_NOT_TAKEN、RSBR0_HITおよびRSBR0_TARGET_MATCHを受け取る。
【００４７】
ここで、RSBR0_DIZZYは、ＲＳＢＲ0の分岐命令の現在のＤｉｚｚｙフラグの状態を示し、RSBR0_GIDDYは、ＲＳＢＲ0の分岐命令の現在のＧｉｄｄｙフラグの状態を示す。また、RSBR0_TAKENは、ＲＳＢＲ0の分岐命令の実行結果が分岐（Taken）であることを示し、RSBR0_NOT_TAKENは、ＲＳＢＲ0の分岐命令の実行結果が非分岐（Not Taken）であることを示す。また、RSBR0_HITは、ブランチヒストリ２００がＲＳＢＲ0の分岐命令が分岐（Taken）と予測したことを示し、RSBR0_TARGET_MATCHは、ＲＳＢＲ0の分岐命令の分岐先が正しく予測されたことを示す。
【００４８】
そして、このフラグ制御回路１２０は、RSBR0_DIZZYとRSBR0_TAKENとRSBR0_HITのＡＮＤをとってDIZZY_OFF_RSBR0を生成する。ここで、DIZZY_OFF_RSBR0は、ＲＳＢＲ0の分岐命令のＤｉｚｚｙフラグをリセットする信号である。
【００４９】
すなわち、このフラグ制御回路１２０は、現在Ｄｉｚｚｙフラグがセットされていて、ブランチヒストリ２００の予測が成功した場合には、Ｄｉｚｚｙフラグをリセットする信号を生成する。
【００５０】
また、このフラグ制御回路１２０は、RSBR0_DIZZYの否定とRSBR0_NOT_TAKENとRSBR0_HITのＡＮＤをとってNew_DIZZY_RSBR0を生成する。ここで、New_DIZZY_RSBR0は、ＲＳＢＲ0の分岐命令のＤｉｚｚｙフラグをセットする信号である。
【００５１】
すなわち、このフラグ制御回路１２０は、現在Ｄｉｚｚｙフラグがセットされてなく、ブランチヒストリ２００の予測が失敗した場合には、Ｄｉｚｚｙフラグをセットする信号を生成する。
【００５２】
また、このフラグ制御回路１２０は、RSBR0_GIDDYとRSBR0_TAKENとRSBR0_HITとRSBR0_TARGET_MATCHのＡＮＤをとってGIDDY_OFF_RSBR0を生成する。ここで、GIDDY_OFF_RSBR0は、ＲＳＢＲ0の分岐命令のＧｉｄｄｙフラグをリセットする信号である。
【００５３】
すなわち、このフラグ制御回路１２０は、現在Ｇｉｄｄｙフラグがセットされていて、ブランチヒストリ２００が正しく分岐先を予測した場合には、Ｇｉｄｄｙフラグをリセットする信号を生成する。
【００５４】
また、このフラグ制御回路１２０は、RSBR0_TAKENとRSBR0_HITとRSBR0_TARGET_MATCHとのＡＮＤをとってNew_GIDDY_RSBR0を生成する。ここで、New_GIDDY_RSBR0は、ＲＳＢＲ0の分岐命令のＧｉｄｄｙフラグをセットする信号である。
【００５５】
すなわち、このフラグ制御回路１２０は、分岐すると予測して分岐したが分岐先が間違っていた場合には、Ｇｉｄｄｙフラグをセットする信号を生成する。
【００５６】
このように、フラグ制御回路１２０は、DIZZY_OFF_RSBR0、New_DIZZY_RSBR0、GIDDY_OFF_RSBR0およびNew_GIDDY_RSBR0を生成し、生成された信号は、セレクト回路１５０によって使用される。
【００５７】
マージ回路１３０は、各グローバルヒストリエントリの分岐予測i_0（ｉ＝１，２，・・・，ｎ）をマージし、分岐予測0を生成する回路であり、マージ回路１４０は、各グローバルヒストリエントリの分岐予測i_1（ｉ＝１，２，・・・，ｎ）をマージし、分岐予測1を生成する回路である。
【００５８】
セレクト回路１５０は、分岐予測0および分岐予測1が同時に生成された場合に、ブランチヒストリ２００の更新に用いる分岐予測を選択する回路である。ブランチヒストリ２００は入力ポートを一つしか備えていないため、同時に生成された二つの分岐予測を一つに絞る必要がある。そこで、分岐予測0および分岐予測1が同時に生成された場合に、このセレクト回路１５０がいずれかの分岐予測を選択する。
【００５９】
具体的には、このセレクト回路１５０は、以下の優先順位で更新する分岐命令を選択する。
（１）再命令フェッチとなる分岐命令（前回の予測が間違っていた）
（２）別の分岐予測機構が用いられる分岐命令
（３）グローバルヒストリ１００が分岐方向変更と予測した分岐命令
（４）分岐方向以外の状態値（ＤｉｚｚｙフラグおよびＧｉｄｄｙフラグの値）変更と予測した分岐命令
【００６０】
（１）の優先順位を高くする理由は以下のとおりである。ある分岐命令の完了に際して再命令フェッチ要求がでるということは、ブランチヒストリ２００の予測が間違っていたということを意味する。したがって、ブランチヒストリ２００にエントリがそもそもなければ新規に登録し、ブランチヒストリ２００にエントリはあるがそこに書かれた予測が間違っていたならば、正しいと思われる予測値に更新すべく、その分岐命令を優先的に選択する(優先順位１)。
【００６１】
なお、ある分岐命令が再命令フェッチを起こすということは、その分岐命令よりも後ろのＲＳＢＲエントリにあった分岐命令は、全て実行されない命令となるので、完了させずに破棄される。したがって、ここでは、同時完了する"再命令フェッチとなる分岐命令"は一つとなる。
【００６２】
（２）の優先順位を高くする理由は以下のとおりである。本実施例に係る分岐予測装置は、サブルーチンコールおよびリターンの無条件分岐命令に対して、これら二つを一組として別の分岐予測機構を備えている。そして、分岐予測装置は、セレクト回路１５０で選択された情報によって、この分岐予測機構のメンテナンスを行う。そのため、分岐の種類を表す信号が、サブルーチンコール／リターンなどの無条件分岐命令を示していた場合、その分岐命令を優先的に選択する(優先順位２)。
【００６３】
なお、サブルーチンコールおよびリターンは無条件分岐であるため、ブランチヒストリ２００に登録されていさえすれば少なくとも分岐方向の予測は成功するので、予測成功の確率は非常に高い。また、常に分岐（Taken）であるから、ブランチヒストリ２００のメンテナンスはそれほど必要がない。したがって、ブランチヒストリ２００への登録および更新に関係なくこの分岐予測機構のメンテナンスのための別パスを設けるならば、ブランチヒストリ２００の更新のための選択では、優先順位を特別高くする必要はない。
【００６４】
（３）の優先順位を高くする理由は、グローバルヒストリ１００が分岐方向変更と予測した場合には、その変更をブランチヒストリ２００に反映させる必要があるためである(優先順位３)。
【００６５】
（４）の優先順位を高くする理由は、フラグの状態変更と予測した場合には、その変更をブランチヒストリ２００に反映させる必要があるためである(優先順位４)。
【００６６】
また、（１）〜（４）の優先順位を用いても分岐命令を選択できない場合には、このセレクト回路１５０は、ＲＳＢＲ1の分岐命令を選択する。
【００６７】
図５は、セレクト回路１５０の一例を示す図である。同図に示すように、このセレクト回路１５０は、ＲＳＢＲ0からRSBR0_REIFTCH、RSBR0_SUBROUTINE_CALL、RSBR0_SUBROUTINE_RETURN、RSBR0_COMPLETED、RSBR0_IARおよびRSBR0_TARGET_IARを受け取る。
【００６８】
ここで、RSBR0_REIFTCHは、ＲＳＢＲ0の分岐命令の完了時の再命令フェッチ要求を示し、RSBR0_SUBROUTINE_CALLは、ＲＳＢＲ0の分岐命令がサブルーチンコールであることを示す。また、RSBR0_SUBROUTINE_RETURNは、ＲＳＢＲ0の分岐命令がサブルーチンリターンであることを示し、RSBR0_COMPLUTEDは、ＲＳＢＲ0の分岐命令の実行が完了したことを示す。また、RSBR0_IARは、ＲＳＢＲ0の分岐命令の命令アドレスであり、RSBR0_TARGET_IAR は、ＲＳＢＲ0の分岐命令の分岐先アドレスである。なお、このセレクト回路１５０は、ＲＳＢＲ1からも同様の信号を受け取る。
【００６９】
また、このセレクト回路１５０は、フラグ制御回路１２０から、DIZZY_OFF_RSBR0、New_DIZZY_RSBR0、GIDDY_OFF_RSBR0およびNew_GIDDY_RSBR0を受け取り、マージ回路１３０から、PRED_TAKEN_RSBR0およびPRED_NOT_TAKEN_RSBR0を受け取る。
【００７０】
ここで、PRED_TAKEN_RSBR0は、グローバルヒストリ１００としてＲＳＢＲ0の分岐命令が分岐すると予測したことを示し、PRED_NOT_TAKEN_RSBR0は、グローバルヒストリ１００としてＲＳＢＲ0の分岐命令が非分岐と予測したことを示す。
【００７１】
また、このセレクト回路１５０は、マージ回路１４０から、PRED_TAKEN_RSBR1およびPRED_NOT_TAKEN_RSBR1を受け取る。
【００７２】
そして、このセレクト回路１５０は、PRED_TAKEN_RSBR0とRSBR1_REIFTCHの否定とRSBR1_SUBROUTINE_CALLの否定とRSBR1_SUBROUTINE_RETURNの否定とのＡＮＤをとってRSBR0_SELECTを生成する。ここで、同時に二つの分岐命令が完了した場合には、ＲＳＢＲ0の分岐命令の実行結果は非分岐(Not Taken)であるため、PRED_TAKEN_RSBR0は、グローバルヒストリ１００としてＲＳＢＲ0の分岐命令を分岐方向変更（優先順位３）と予測したことを示す。
【００７３】
すなわち、グローバルヒストリ１００としてＲＳＢＲ0の分岐命令を分岐方向変更と予測し、ＲＳＢＲ1の分岐命令について再命令フェッチ要求もなく、ＲＳＢＲ1の分岐命令がサブルーチンコールでもリターンでもない（ＲＳＢＲ1の分岐命令は優先順位１にも２にも該当しない）場合には、このセレクト回路１５０は、ＲＳＢＲ0の分岐命令をブランチヒストリ２００の更新対象として選択する。
【００７４】
また、このセレクト回路１５０は、PRED_NOT_TAKEN_RSBR0とRSBR1_TAKENの否定とPRED_TAKEN_RSBR1の否定とPRED_NOT_TAKEN_RSBR1の否定とRSBR1_REIFTCHの否定とRSBR1_SUBROUTINE_CALLの否定とRSBR1_SUBROUTINE_RETURNの否定とのＡＮＤをとってRSBR0_SELECTを生成する。
【００７５】
ここで、再命令フェッチがないので、ＤｉｚｚｙフラグおよびＧｉｄｄｙフラグをセットすることはない。したがって、これらのフラグの更新としては、リセットの場合だけであり、RSBR1_TAKEN、すなわちＲＳＢＲ1の分岐（Taken)の場合にのみ、フラグのリセットの可能性がある。そこで、このセレクト回路１５０は、RSBR1_TAKENの場合にＲＳＢＲ1の分岐命令を選択する（優先順位４）。
【００７６】
また、PRED_TAKEN_RSBR1とPRED_NOT_TAKEN_RSBR1の両方とも成立しないことは、ＲＳＢＲ1の分岐命令に対してグローバルヒストリ１００として予測ができないことを示す。グローバルヒストリ１００として予測ができない場合としては、例えば、分岐履歴情報が十分でない場合がある。
【００７７】
すなわち、このセレクト回路１５０は、グローバルヒストリ１００としてＲＳＢＲ0の分岐命令を分岐方向変更なしと予測し、ＲＳＢＲ1の分岐命令によるフラグのリセットがなく（ＲＳＢＲ1の分岐命令は優先順位４に該当しない）、ＲＳＢＲ1の分岐命令に対してグローバルヒストリ１００として予測ができず（ＲＳＢＲ1の分岐命令は優先順位３に該当しない）、ＲＳＢＲ1の分岐命令について再命令フェッチ要求もなく（ＲＳＢＲ1の分岐命令は優先順位１に該当しない）、ＲＳＢＲ1の分岐命令がサブルーチンコールでもリターンでもない（ＲＳＢＲ1の分岐命令は優先順位２に該当しない）場合には、ＲＳＢＲ0の分岐命令をブランチヒストリ２００の更新対象として選択する。
【００７８】
また、RSBR1_COMPLETEDが成立しないことは、ＲＳＢＲ1の分岐命令が完了しなかったことを示し、その場合には、このセレクト回路１５０は、ＲＳＢＲ0の分岐命令をブランチヒストリ２００の更新対象として選択する。なお、ＲＳＢＲ0の分岐命令が再命令フェッチ（優先順位１）の場合ならびにサブルーチンコールおよびリターンの無条件分岐命令（優先順位２）の場合は、RSBR1_COMPLETEDが成立しない場合に含まれる。
【００７９】
このように、このセレクト回路１５０が、（１）〜（４）の優先順位に基づいてブランチヒストリ２００の更新対象の分岐命令を選択することによって、入力ポートが一つのブランチヒストリ２００とグローバルヒストリ１００とを組み合わせることができる。
【００８０】
次に、本実施例に係るグローバルヒストリ１００の処理手順について説明する。図６は、本実施例に係るグローバルヒストリ１００の処理手順を示すフローチャートである。同図に示すように、このグローバルヒストリ１００は、分岐リザベーションステーション４０のＲＳＢＲ0から分岐命令の識別情報0および分岐情報0を取得し、ＲＳＢＲ1から分岐命令の識別情報1および分岐情報1を取得する（ステップＳ６０１）。
【００８１】
そして、それぞれのグローバルヒストリエントリが識別情報0および識別情報1をタグ部１１１に記憶したタグと比較し（ステップＳ６０２）、タグがマッチしたグローバルヒストリエントリが分岐予測を生成する（ステップＳ６０３）。
【００８２】
そして、各グローバルヒストリエントリの分岐予測をマージしてマージ回路１３０が分岐予測0を生成し、マージ回路１４０が分岐予測1を生成する（ステップＳ６０４）。
【００８３】
そして、同時に二つの分岐予測0および分岐予測1が生成された場合には、セレクト回路１５０が分岐リザベーションステーション４０からの情報およびフラグ制御回路１２０により生成されたフラグ更新情報を用いて分岐予測0または分岐予測1を選択する分岐予測選択処理を行う（ステップＳ６０５）。そして、選択した分岐予測を用いてブランチヒストリ２００を更新する（ステップＳ６０６）。
【００８４】
このように、それぞれのグローバルヒストリエントリが識別情報0および識別情報1をタグ部１１１に記憶したタグと比較し、タグがマッチしたグローバルヒストリエントリが分岐予測を生成することによって、グローバルヒストリ１００は、同時に完了する二つの分岐命令に対応することができる。
【００８５】
次に、図６に示した分岐予測選択処理（ステップＳ６０５）の処理手順について説明する。図７は、図６に示した分岐予測選択処理の処理手順を示すフローチャートである。同図に示すように、この分岐予測選択処理は、いずれかの分岐命令の完了により再命令フェッチ要求が発生したか否かを調べる（ステップＳ７０１）。
【００８６】
そして、いずれかの分岐命令の完了により再命令フェッチ要求が発生した場合には、再命令フェッチ要求が発生した分岐命令をブランチヒストリ２００を更新する対象の分岐命令として選択する（ステップＳ７０２）。
【００８７】
一方、どちらの分岐命令の完了によっても再命令フェッチ要求が発生しなかった場合には、いずれかの分岐命令がサブルーチンコールまたはリターンであるか否かを調べる（ステップＳ７０３）。
【００８８】
そして、いずれかの分岐命令がサブルーチンコールまたはリターンである場合には、サブルーチンコールまたはリターンである分岐命令をブランチヒストリ２００を更新する対象の分岐命令として選択する（ステップＳ７０４）。
【００８９】
また、どちらの分岐命令もサブルーチンコールでもリターンでもない場合には、いずれかの分岐命令の分岐予測が分岐方向変更であるか否かを調べる（ステップＳ７０５）。そして、いずれかの分岐命令の分岐予測が分岐方向変更である場合には、分岐予測が分岐方向変更である分岐命令をブランチヒストリ２００を更新する対象の分岐命令として選択する（ステップＳ７０６）。
【００９０】
また、どちらの分岐命令の分岐予測も分岐方向変更でない場合には、いずれかの分岐命令がＤｉｚｚｙフラグまたはＧｉｄｄｙフラグを変更するか否かを調べる（ステップＳ７０７）。そして、いずれかの分岐命令がＤｉｚｚｙフラグまたはＧｉｄｄｙフラグを変更する場合には、ＤｉｚｚｙフラグまたはＧｉｄｄｙフラグを変更する分岐命令をブランチヒストリ２００を更新する対象の分岐命令として選択する（ステップＳ７０８）。
【００９１】
また、どちらの分岐命令もＤｉｚｚｙフラグもＧｉｄｄｙフラグも変更しない場合には、分岐命令1すなわちＲＳＢＲ1の分岐命令をブランチヒストリ２００を更新する対象の分岐命令として選択する（ステップＳ７０９）。
【００９２】
このように、同時に二つの分岐予測が行われた場合に、この分岐予測選択処理が分岐予測が行われた二つの分岐命令について再命令フェッチ、サブルーチンコール／リターン、分岐方向変更およびフラグ変更を順に調べ、該当する分岐命令がある場合には、その分岐命令をブランチヒストリ２００を更新する対象の分岐命令として選択することによって、入力ポートが一つしかないブランチヒストリ２００をグローバルヒストリ１００と組み合わせて利用することができる。
【００９３】
上述してきたように、本実施例では、グローバルヒストリエントリi１１０（ｉ＝１，２，・・・，ｎ）がＲＳＢＲ0から識別情報0を、ＲＳＢＲ1から識別情報1を同時に受け取り、識別情報0とタグ部１１１に記憶したタグとを比較回路１１２を用いて比較してマッチした場合には分岐予測i_0を生成し、識別情報1とタグ部１１１に記憶したタグとを比較回路１１３を用いて比較してマッチした場合には分岐予測i_1を生成することとしたので、グローバルヒストリ１００は同時に完了した二つの分岐命令を処理することができる。
【００９４】
また、本実施例では、二つの分岐予測を同時に行った場合に、セレクト回路１５０が所定の優先順位に基づいていずれかの分岐予測を選択することとしたので、ブランチヒストリ２００のポート数を増やすことなくグローバルヒストリ１００と組み合わせて精度の高い分岐予測をおこなうことができる。
【００９５】
また、本実施例では、グローバルヒストリが同時に完了する二つの分岐命令を受け付けて二つの分岐予測を行う場合について説明したが、本発明はこれに限定されるものではなく、任意の数の分岐命令が同時に完了する場合にも同様に適用することができる。
【００９６】
また、本実施例では、グローバルヒストリが同時に予測された二つの分岐予測を一つに絞ってブランチヒストリを更新する場合について説明したが、本発明はこれに限定されるものではなく、任意の数の分岐予測をブランチヒストリが同時に受け付ける数に絞る場合にも同様に適用することができる。あるいは、グローバルヒストリにより同時に予測された複数の分岐予測を複数サイクルに分割してブランチヒストリを更新することもできる。
【００９７】
また、本実施例では、グローバルヒストリの予測結果を用いてブランチヒストリを更新する場合について説明したが、本発明はこれに限定されるものではなく、グローバルヒストリの予測結果を直接分岐予測に用いる場合にも同様に適用することができる。
【００９８】
（付記１）分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測装置であって、
同時に完了した複数の分岐命令の分岐情報を受け付ける分岐情報受付手段と、
前記分岐情報受付手段により同時に受け付けられた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令の分岐予測を並行して行う並行分岐予測手段と
を備えたことを特徴とする分岐予測装置。
【００９９】
（付記２）前記並行分岐予測手段は、
分岐命令を識別する識別子を記憶する識別子記憶手段と、
前記複数の分岐命令のうち前記識別子記憶手段に記憶される識別子と識別子が同一である分岐命令に対して、該分岐命令の過去の分岐履歴および分岐情報に基づいて分岐予測を行う分岐方向予測手段と
を有する分岐予測要素手段を複数備え、該複数の分岐予測要素手段が並行して分岐予測を行うことを特徴とする付記１に記載の分岐予測装置。
【０１００】
（付記３）前記識別子記憶手段により記憶される識別子は、分岐命令ごとに異なり、前記分岐方向予測手段は、前記分岐情報受付手段により同時に受け付けられた複数の分岐情報が識別子が同一である分岐命令についての分岐情報であるときは、該複数の分岐情報を順番に受け付けたものとして分岐予測を行うことを特徴とする付記２に記載の分岐予測装置。
【０１０１】
（付記４）前記識別子記憶手段により記憶される識別子は、異なる分岐命令で同一の場合があり、前記分岐方向予測手段は、前記分岐情報受付手段により同時に受け付けられた複数の分岐情報が識別子が同一である分岐命令についての分岐情報であるときは、該複数の分岐情報のうち任意の分岐命令についての分岐情報だけを選択し、該選択した分岐情報を用いて分岐予測を行うことを特徴とする付記２に記載の分岐予測装置。
【０１０２】
（付記５）分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリを有し、
前記並行分岐予測手段により並行して行われた複数の分岐予測結果を前記ブランチヒストリに並行して登録する並行登録手段
をさらに備えたことを特徴とする付記１に記載の分岐予測装置。
【０１０３】
（付記６）分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリを有し、
前記並行分岐予測手段により並行して行われた複数の分岐予測結果のうち所定の数の分岐予測結果を選択する選択手段と、
前記選択手段により選択された所定の数の分岐予測結果を前記ブランチヒストリに登録する選択登録手段と
をさらに備えたことを特徴とする付記１に記載の分岐予測装置。
【０１０４】
（付記７）前記選択手段は、分岐命令に関する所定の優先順位に基づいて分岐予測結果を選択することを特徴とする付記６に記載の分岐予測装置。
【０１０５】
（付記８）前記選択手段が選択する分岐予測結果の優先順位は、再命令フェッチとなった分岐命令の分岐予測結果、他の分岐予測機構を更新する分岐予測結果、分岐方向変更と予測された分岐予測結果、前記ブランチヒストリに分岐命令毎に登録される状態を更新する分岐予測結果の順であることを特徴とする付記７に記載の分岐予測装置。
【０１０６】
（付記９）前記他の分岐予測機構は、サブルーチンコールとリターンの無条件分岐命令の対に対して分岐予測を行うことを特徴とする付記８に記載の分岐予測装置。
【０１０７】
（付記１０）前記ブランチヒストリに分岐命令毎に登録される状態は、該ブランチヒストリが分岐すると予測して分岐しなかった場合にセットされるＤｉｚｚｙフラグおよび該ブランチヒストリが分岐すると予測して分岐したが分岐先が間違っていた場合にセットされるＧｉｄｄｙフラグであることを特徴とする付記８に記載の分岐予測装置。
【０１０８】
（付記１１）前記分岐情報を用いてＤｉｚｚｙフラグおよびＧｉｄｄｙフラグの更新を行うフラグ制御手段をさらに備えたことを特徴とする付記１０に記載の分岐予測装置。
【０１０９】
（付記１２）分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測方法であって、
同時に完了した複数の分岐命令の分岐情報を受け付ける分岐情報受付工程と、
前記分岐情報受付工程により同時に受け付けられた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令の分岐予測を並行して行う並行分岐予測工程と
を含んだことを特徴とする分岐予測方法。
【０１１０】
（付記１３）前記並行分岐予測工程は、
分岐命令を識別する識別子を記憶装置から読み出す識別子読出工程と、
前記複数の分岐命令のうち前記識別子読出工程により記憶装置から読み出された識別子と識別子が同一である分岐命令に対して、該分岐命令の過去の分岐履歴および分岐情報に基づいて分岐予測を行う分岐方向予測工程と
を含んだ分岐予測要素工程を並行して複数実行することにより分岐予測を行うことを特徴とする付記１２に記載の分岐予測方法。
【０１１１】
（付記１４）前記識別子読出工程により読み出される識別子は、分岐命令ごとに異なり、前記分岐方向予測工程は、前記分岐情報受付工程により同時に受け付けられた複数の分岐情報が識別子が同一である分岐命令についての分岐情報であるときは、該複数の分岐情報を順番に受け付けたものとして分岐予測を行うことを特徴とする付記１３に記載の分岐予測方法。
【０１１２】
（付記１５）前記並行分岐予測工程により並行して行われた複数の分岐予測結果を、分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリに並行して登録する並行登録工程をさらに含んだことを特徴とする付記１２に記載の分岐予測方法。
【０１１３】
（付記１６）前記並行分岐予測工程により並行して行われた複数の分岐予測結果のうち所定の数の分岐予測結果を選択する選択工程と、
前記選択工程により選択された所定の数の分岐予測結果を、分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリに登録する選択登録工程と
をさらに含んだことを特徴とする付記１２に記載の分岐予測方法。
【０１１４】
（付記１７）前記選択工程は、分岐命令に関する所定の優先順位に基づいて分岐予測結果を選択することを特徴とする付記１６に記載の分岐予測方法。
【０１１５】
（付記１８）前記選択工程が選択する分岐予測結果の優先順位は、再命令フェッチとなった分岐命令の分岐予測結果、他の分岐予測機構を更新する分岐予測結果、分岐方向変更と予測された分岐予測結果、前記ブランチヒストリに分岐命令毎に登録される状態を更新する分岐予測結果の順であることを特徴とする付記１７に記載の分岐予測方法。
【０１１６】
（付記１９）前記他の分岐予測機構は、サブルーチンコールとリターンの無条件分岐命令の対に対して分岐予測を行うことを特徴とする付記１８に記載の分岐予測方法。
【０１１７】
（付記２０）前記ブランチヒストリに分岐命令毎に登録される状態は、該ブランチヒストリが分岐すると予測して分岐しなかった場合にセットされるＤｉｚｚｙフラグおよび該ブランチヒストリが分岐すると予測して分岐したが分岐先が間違っていた場合にセットされるＧｉｄｄｙフラグであることを特徴とする付記１８に記載の分岐予測方法。
【産業上の利用可能性】
【０１１８】
以上のように、本発明にかかる分岐予測装置および分岐予測方法は、プロセッサの分岐予測精度の向上に有用であり、特に、スーパースカラプロセッサやアウトオブオーダ処理を採用したプロセッサなど複数の分岐命令が同時に完了するプロセッサの分岐予測精度の向上に適している。
【図面の簡単な説明】
【０１１９】
【図１】本実施例に係るグローバルヒストリのグローバルヒストリエントリの構成を示す機能ブロック図である。
【図２】各グローバルヒストリエントリによる分岐予測をマージするマージ回路の一例を示す図である。
【図３】本実施例に係るグローバルヒストリの構成を示す機能ブロック図である。
【図４】フラグ制御回路の一例を示す図である。
【図５】セレクト回路の一例を示す図である。
【図６】本実施例に係るグローバルヒストリの処理手順を示すフローチャートである。
【図７】図６に示した分岐予測選択処理の処理手順を示すフローチャートである。
【図８】グローバルヒストリを用いる分岐予測装置の一例を示す図である。
【符号の説明】
【０１２０】
１０    命令フェッチアドレス生成部
２０    命令フェッチ部
３０    命令デコーダ
４０    分岐リザベーションステーション
５０    その他のリザベーションステーション
１００，８００    グローバルヒストリ
１１０    グローバルヒストリエントリi
１１１    タグ部
１１２，１１３    比較回路
１１４    分岐方向予測回路
１１５，１１６    ＡＮＤ回路
１２０    フラグ制御回路
１３０，１４０    マージ回路
１５０    セレクト回路
２００    ブランチヒストリ
【図１】
2005165950.tif 000003
【図２】
2005165950.tif 000004
【図３】
2005165950.tif 000005
【図４】
2005165950.tif 000006
【図５】
2005165950.tif 000007
【図６】
2005165950.tif 000008
【図７】
2005165950.tif 000009
【図８】
2005165950.tif 000010