(57)【要約】【課題】  分岐命令の実行制御に必要とされるデータが命令のデコード順に先頭から順次格納される複数のエントリを備える制御装置において、分岐命令処理のスループットを向上させる。【解決手段】  対応する分岐命令の実行制御が完了したエントリ２のうちで先頭からデコードの古い順に１つ以上のエントリが連続的に解放される時、残りのエントリの内容をエントリ解放数だけ先頭方向のエントリに移動させる機構３と、該内容移動と同一サイクルにおいて、移動によって空きとなるエントリを含め、先頭エントリに近い順次１つ以上の空きエントリに新たな分岐命令の実行制御に必要とされるデータを格納する手段４とを備える。【選択図】図１
2006039962.tif 000002
【特許請求の範囲】
【請求項１】
分岐命令に対応して、該分岐命令の実行制御に必要とされるデータが該分岐命令のデコード順に先頭から順次格納される複数のエントリを備える装置において、
対応する分岐命令の実行制御が完了したエントリのうちで、前記先頭エントリからデコード順が古い順序で１つ以上のエントリが連続的に解放される時、残りのエントリの内容を解放されたエントリの数だけ先頭エントリの方向のエントリに移動させるバブルアップ機構と、
該バブルアップ機構によるエントリの内容移動と同一サイクルにおいて、該移動によって空きエントリとなるエントリを含め、前記先頭エントリに近いエントリから順次１つ以上の空きエントリに、新たにデコードされた分岐命令の実行制御に必要とされるデータを格納する新規エントリデータセット手段とを備えることを特徴とする分岐命令制御装置。
【請求項２】
前記バブルアップ機構によるエントリ内容の移動と同一サイクルにおいて、前記各エントリに格納された分岐命令の実行制御に必要とされるデータを更新するエントリデータアップデート手段をさらに備えることを特徴とする請求項１記載の分岐命令制御装置。
【請求項３】
前記バブルアップ機構によるエントリの内容移動と同一サイクルにおいて、前記分岐命令の実行制御に必要とされるデータが格納されたエントリに対応する分岐命令に関する分岐予測が失敗して再命令フェッチが行われる時、前記デコード順が該分岐命令より新しい全ての分岐命令に対応するエントリの解放を行う再命令フェッチ時エントリ解放手段をさらに備えることを特徴とする請求項１記載の分岐命令制御装置。
【請求項４】
前記エントリの解放数と、前記新たにデータが格納される新規エントリ数とが等しいことを特徴とする請求項１記載の分岐命令制御装置。
【請求項５】
分岐命令に対応して、該分岐命令の実行制御に必要とされるデータが該分岐命令のデコード順に先頭から順次格納される複数のエントリを用いて分岐命令を制御する方法であって、
対応する分岐命令の実行制御が完了したエントリのうちで、前記先頭エントリからデコード順が古い順序で１つ以上のエントリが連続的に解放される時、残りのエントリの内容を解放されたエントリの数だけ先頭エントリの方向のエントリにバブルアップ機構によって移動させ、
該エントリの内容移動と同一サイクルにおいて、該移動によって空きエントリとなるエントリを含め、前記先頭エントリに近いエントリから順次１つ以上の空きエントリに、新たにデコードされた分岐命令の実行制御に必要とされるデータを格納することを特徴とする分岐命令制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は計算機システムにおける命令制御方式に係り、さらに詳しくはアウトオブオーダ方式が採用された計算機において、分岐命令を制御するための分岐リザベーションステーションのエントリ制御方式として、エントリの解放に対応して新規エントリ作成、および分岐命令の制御に必要なフラグの更新が行われながら、バブルアップ機構によってエントリの並べ替えが行われる分岐命令制御装置、および制御方法に関する。
【背景技術】
【０００２】
命令制御装置において命令制御を行っている際に先行して実行パイプラインに投入されている命令が後続の命令実行に影響を与えることがある。先行命令の実行結果に基づいて後続の命令が実行される場合には、先行している命令の処理が遅ければ、その間後続の命令は実行できず、先行の命令完了を待ち続けることになる。このように後続の命令実行に影響を与える命令のなかで分岐命令は特に後続命令に対して大きな影響を与える。先行して実行されている命令が分岐条件を変更しようとしている命令である場合において、その命令の実行結果が確定しないと分岐の有無が判断できない。分岐の有無が判断できなければ分岐命令の後続の命令シーケンスも確定できない。
【０００３】
その結果、後続の命令を実行パイプラインに投入できないので命令制御装置内での処理が一時的に止まってしまい、処理能力が低下してしまう。これは他の処理方式を採用している命令制御装置においても同様であり、命令制御装置共通の課題である。この課題を解決するため、通常、命令制御装置は分岐予測機構を保持する。分岐予測を行うことで分岐命令の完了を待たずに、分岐命令の後続の命令シーケンスを実行パイプラインに順次投入することが出来る。
【０００４】
分岐予測機構を備えたアウトオブオーダ処理方式の場合、複数の分岐命令が分岐予測結果をもとに実行パイプラインに投入される。実行パイプラインに投入された分岐命令は分岐命令制御部において制御される。分岐命令制御部は複数の分岐命令を制御可能であるが、一度に制御できる分岐命令数には上限がある。分岐命令の処理が遅くなれば分岐命令制御部のリソースは次第に減っていき、同時に処理できるエントリ数の上限に達すると実行パイプライン上に新規命令を投入することが出来なくなる。
【０００５】
このような場合は分岐予測機構における予測が正しくとも、後続の命令シーケンスを実行パイプライン上に投入できないので処理性能が低下してしまう。この問題を解決するためには、分岐命令制御部における分岐命令処理のスループットの向上や、分岐命令制御部で同時に制御できる分岐命令数を増やす必要がある。しかしながら分岐命令制御部で同時に制御できる分岐命令数（エントリ数）を増やしただけでは、後述するようにエントリの歯抜け状態が生じる場合などは、分岐命令のスループットを改善したことにはならない。
【０００６】
アウトオブオーダ方式で命令制御装置を制御した場合、全ての命令はリザベーションステーションと呼ばれる命令制御部で制御される。このリザベーションステーションは命令制御装置に複数存在し、どのリザベーションステーションで命令制御が行われるかは命令の種類によって決定される。リザベーションステーションのエントリ制御を行うにはポインタ方式、もしくはバブルアップ方式が一般的である。ポインタ方式でエントリ制御を行った場合、限られたリソースであるエントリ数を無駄なく有効に活用することが出来るが、近年の命令制御装置の著しい高周波数化に対応しにくいというデメリットがある。
【０００７】
リザベーションステーションの各エントリはその有効・無効を示すＶＡＬＩＤ信号で制御される。バブルアップ方式でエントリ制御を行った場合、従来技術ではこのＶＡＬＩＤ信号が０となっていてエントリが無効となっていなければ、後続命令がそのエントリを使用することはできなかった。したがってエントリが解放（リセット）され、後続命令がそのエントリを使用できるまで一時的にエントリは歯抜け状態となってしまい、一部エントリが使用できない無駄なサイクルが生じてしまう。
【０００８】
分岐命令をリザベーションステーションで制御する場合は、エントリの解放をインオーダで行わなければならない。したがって分岐リザベーションステーション内ではエントリは常に命令順に並んでいる必要がある。バブルアップ方式で分岐リザベーションステーションのエントリ制御を行った場合に、エントリ解放直後にエントリが一時的に歯抜け状態となりエントリを有効に使用できないと、見かけ上エントリ数の上限に達してしまい、実行パイプライン上に新規命令を投入することが出来なくなってしまう。また、実際にはエントリに空きがあるにもかかわらず、後続の分岐命令を分岐リザベーションステーションに登録することができないと分岐命令のスループットも落ちてしまう。これは命令制御装置の性能低下を引き起こしてしまう。
【０００９】
以上のような分岐リザベーションステーションを用いる分岐命令制御方式の従来技術について図１７から図２１を用いてさらに説明する。図１７は分岐リザベーションステーションにおけるエントリ解放と、新しい命令投入に伴う新規エントリの作成の経過の従来例の説明図である。
【００１０】
分岐リザベーションステーションには、例えばＲＳＢＲ０からＲＳＢＲ９までの合計１０個のエントリが備えられており、まず最初のサイクルではＲＳＢＲ０からＲＳＢＲ５までの６つのエントリに対して分岐命令１から分岐命令６までの制御に必要なデータやフラグが格納されており、デコーダ側から新しい命令として分岐命令７と分岐命令８とがそれぞれＲＳＢＲ６とＲＳＢＲ７のエントリに投入されようとしており、また分岐命令１から分岐命令３に対してはその制御が終了しようとしている。
【００１１】
次のサイクルにおいてその実行制御が終了した３つの分岐命令に対するフラグなどが格納されたＲＳＢＲ０からＲＳＢＲ２までの３つのエントリが解放され、ＲＳＢＲ６、およびＲＳＢＲ７に対して分岐命令７と分岐命令８に対するフラグなどが格納され、またデコーダ側から投入される新たな分岐命令９と分岐命令１０に対応して、ＲＳＢＲ８とＲＳＢＲ９に新たなエントリが作成されようとしている。
【００１２】
さらに次のサイクルにおいてバブルアップが行われ、各エントリの内容の先頭エントリ方向への移動が行われる。従来技術では、このバブルアップは先頭方向にあるエントリが解放され、解放されたエントリに対するバリッドフラグが落とされた後に行われる。従ってＲＳＢＲ０からＲＳＢＲ２までのエントリが解放され、バリッドフラグが落とされたことが確認された後にバブルアップが実行される。
【００１３】
ここでのバブルアップでは先頭方向にそれぞれ１つだけエントリの内容の移動が行われるものとし、ＲＳＢＲ２からＲＳＢＲ６までのエントリに分岐命令４から分岐命令８までの分岐命令に対応するフラグなどの格納が行われる。そして前のサイクルにおいてＲＳＢＲ８とＲＳＢＲ９に新たに投入されようとしていた分岐命令９と分岐命令１０に対応するデータの格納、すなわち新たなエントリ作成が行われる。
【００１４】
その結果、１０個のエントリのうち、ＲＳＢＲ０とＲＳＢＲ１、およびＲＳＢＲ７とが空となっている状態、すなわち歯抜けの状態となり、このサイクルでデコーダ側から新たな分岐命令を投入しようとしても分岐リザベーションステーションの後端側には空きのエントリが存在せず、実行パイプライン上に新たな命令を投入することができなくなってしまう。
【００１５】
図１８から図２１は、図１７の従来例に対応する制御回路の一部である。これらの回路について後述する本発明における制御回路と比較するために、その動作について説明する。
【００１６】
図１８はバブルアップ制御信号出力回路（その１）の説明図である。図１７の従来例においては、分岐リザベーションステーションのうちで先頭エントリのＲＳＢＲ０から（ｍ＋１）番目のエントリＲＳＢＲｍまでの全てのエントリが存在する、すなわちフラグなどが格納されている場合にはバブルアップ不可能を示すディセーブルバブルアップ信号がバッファ１００から出力される。これは図１７の従来例においては、バブルアップがそれぞれ先頭方向に１つずつエントリの内容が移動される形式で行われるために、先頭エントリから連続的に（ｍ＋１）番目までの全てのエントリにデータが格納されている状態ではバブルアップが不可能であることによる。
【００１７】
図１９はバブルアップ制御信号出力回路（その２）の説明図である。同図においてはＲＳＢＲ０からＲＳＢＲｍまでの全てが存在する、すなわち全てのエントリにデータが格納されている状態ではない場合、すなわち途中に１つでも空のエントリがある場合には、その空のエントリに続くエントリのバブルアップが可能なことを示すイネーブル１アップ信号がバッファ１０１から出力される。
【００１８】
図２０はデコーダからＲＳＢＲｍに対するデータのロード許可（イネーブル）信号の出力回路の説明図である。同図においてＡＮＤゲート１０２に対してＲＳＢＲ（ｍ−１）が有効であることを示すバリッド信号と、ＲＳＢＲｍからＲＳＢＲｎ、すなわち最後のエントリまでが存在しない、すなわち空であることを示す信号とが入力されると、エントリＲＳＢＲｍにデコーダからフラグなどのデータをロードすることが許可される。
【００１９】
図２１は実際に分岐リザベーションステーションのエントリとして、分岐命令の制御に必要なフラグなどのデータを保持するラッチ回路の説明図である。同図は先頭エントリのＲＳＢＲ０に対応するものであり、図１７の従来例においては先頭エントリからＲＳＢＲ２までの３つのエントリに対応して図２１と同一の形式のラッチ回路が用いられる。
【００２０】
図２１においてセット端子にはＲＳＢＲ０のエントリにフラグなどのデータをセットするためのセット信号が与えられる。またリセット端子にはＯＲゲート１０４を介してＲＳＢＲ０のエントリに対応する分岐命令が終了したことを示すコンプリート信号、後述するように再命令フェッチが必要な時にＲＳＢＲ０のエントリを解放させるためのクリア信号、その他割込みなどに伴うリセット信号としてのＲＳ１が入力され、これらの信号がＨ（１）となった時点でリセットが行われる。ここでＲＳＢＲ０のコンプリート信号は、ラッチ１０３の内容をリセットするものであるが、基本的には前述のようにバブルアップを行わせるためにバリッドフラグを落とすために用いられる。
【００２１】
ＲＳＢＲ３からＲＳＢＲ９までの７つのエントリに対するラッチ回路の構成では、ＯＲゲート１０４の入力としてコンプリート信号だけが除外される点が異なる。これは図１７の従来例では、分岐命令の制御が終了してエントリの解放が行われるのは先頭のエントリＲＳＢＲ０からＲＳＢＲ２までの３つのエントリに限られ、かつ同時に解放されるのは先頭エントリから連続して解放可能な１つ以上のエントリに限定されるためである。
【００２２】
以上のようなアウトオブオーダの命令実行制御方式に関する従来技術として次の文献がある。
【特許文献１】特開２０００−１８１７０７号公報  「命令制御装置及びその方法」
【００２３】
この文献では、解読済みで実行ユニットに発行されていない複数個の命令を一時的に格納するリザベーションステーションが設けられ、そのリザベーションステーションに対してバブルアップ方式でエントリ内の格納情報が移動される命令制御装置が開示されている。しかしながらこの技術においても、図１７で説明したように解放されたエントリのバリッドフラグが落ちた後にバブルアップが行われる動作方式では、エントリが歯抜け状態となってしまうという問題点は解決されていなかった。
【発明の開示】
【発明が解決しようとする課題】
【００２４】
本発明の課題は上述の問題点に鑑み、バブルアップ方式で分岐リザベーションステーションのエントリ制御を行う場合、エントリ解放直後の一時的な歯抜け状態を防止することによって分岐命令処理のスループットを向上させ、命令制御装置の性能低下を防ぐことである。
【課題を解決するための手段】
【００２５】
図１は本発明の分岐命令制御装置の原理構成ブロック図である。同図は分岐命令に対応して、分岐命令の実行制御に必要とされるデータが分岐命令のデコード順に先頭から順次格納される複数のエントリ２を備える分岐命令制御装置１の原理構成ブロック図であり、装置１はバブルアップ機構３と新規エントリデータセット手段４とを備える。
【００２６】
バブルアップ機構３は、対応する分岐命令の実行制御が完了したエントリのうちで、先頭エントリからデコード順が古い順に１つ以上のエントリが連続的に解放される時、残りのエントリの内容を解放されたエントリの数だけ先頭エントリの方向にそれぞれ移動させるものであり、新規エントリデータセット手段４はバブルアップ機構３によるエントリの内容移動と同一サイクルにおいて、この移動によって空きエントリとなるエントリを含め、先頭エントリに近いエントリから順次１つ以上の空きエントリに、新たにデコードされた分岐命令の実行制御に必要とされるデータをセットするものである。
【００２７】
発明の実施の形態においては、前述の解放されるエントリの数と新たにデータがセットされる新規エントリの数とを等しくすることもでき、また前述のバブルアップ機構３によるエントリ内容の移動と同一サイクルにおいて、各エントリに格納された分岐命令の実行制御に必要とされるデータを更新するエントリデータアップデート手段、例えばＲＳＢＲアップデート回路をさらに備えることもできる。
【００２８】
さらに実施の形態においては、バブルアップ機構３によるエントリの内容移動と同一サイクルにおいて、分岐命令の実行制御に必要とされるデータが格納されたエントリに対応する分岐命令に関する分岐予測が失敗して再命令フェッチが行われる時、その分岐命令に対応するバブルアップ前のエントリを含み、デコード順がその分岐命令より新しい分岐命令に対応するエントリの解放を行う再命令フェッチ時エントリ解放手段をさらに備えることもできる。
【００２９】
次に本発明の分岐命令制御方法は、分岐命令に対応してその分岐命令の実行制御に必要とされるデータが分岐命令のデコード順に先頭から順次格納される複数のエントリを用いて分岐命令の制御を行うものであり、対応する分岐命令の実行制御が完了したエントリのうちで先頭エントリからデコード順が古い順番で１つ以上のエントリが連続的に解放される時、残りのエントリの内容を解放されたエントリの数だけ先頭エントリの方向にバブルアップ機構によって移動させ、そのエントリの内容移動と同一サイクルにおいて移動によって空きエントリとなるエントリを含め、先頭エントリに近いエントリから順次１つ以上の空きエントリに新たにデコードされた分岐命令の実行制御に必要とされるデータをセットする方法が用いられる。
【発明の効果】
【００３０】
本発明によれば、分岐リザベーションステーションのエントリ解放と同時にバブルアップ機構による実行待ちのエントリの並べ替え、新たな分岐命令に対応する新規エントリ作成、分岐命令制御に必要なフラグの更新を行うことができ、ポインタ方式によるエントリ制御と同等の命令処理のスループットが実現され、命令制御装置の高周波数化により容易に対応可能となり、情報処理装置の性能向上に寄与するところが大きい。
【発明を実施するための最良の形態】
【００３１】
図２は本発明の分岐命令制御装置、例えば分岐リザベーションステーションが用いられる情報処理システムの全体構成ブロック図である。同図において情報処理装置は命令フェッチ制御部１０、命令デコード部１１、分岐リザベーションステーション１２、演算回路１３、命令完了制御部１４、および分岐予測部１５を備え、命令をアウトオブオーダで処理するものである。
【００３２】
命令フェッチ制御部１０によって命令がフェッチされると、命令フェッチアドレスに基づいて分岐予測部（ブランチ・ヒストリ）１５によって分岐予測が行われ、分岐すると予測された場合には分岐予測アドレスが命令フェッチ制御部１０に与えられる。そして命令はその予測結果とともに命令デコード部１１に投入され、その命令デコード時に分岐命令、もしくは分岐すると予測されている命令と判断された命令は、分岐リザベーションステーション（リザベーションステーション・フォー・ブランチ、ＲＳＢＲ）１２に与えられるとともに、全ての命令が与えられる命令完了制御部１４にも与えられる。なおここでＲＳＢＲはその内部で分岐命令の制御に必要とされるデータやフラグなどが格納される複数のエントリと、各エントリに対するデータ格納、更新、バブルアップなどの各種の制御を行う制御回路などをすべて含むものとする。
【００３３】
演算回路１３からは、分岐条件としてのコンディションコードや分岐先アドレスが分岐リザベーションステーション１２に与えられ、また分岐予測部１５から分岐予測結果が分岐リザベーションステーション１２に与えられる。分岐リザベーションステーション１２からは分岐命令の制御が完了したことを示す分岐命令制御終了報告、すなわちコンプリート信号が命令完了制御部１４に与えられ、また必要に応じて分岐予測更新データが分岐予測部１５に与えられ、また分岐予測に失敗して再命令フェッチを行うべき場合には再命令フェッチ要求と再命令フェッチアドレスが命令フェッチ制御部１０に与えられる。
【００３４】
分岐リザベーションステーション１２は複数の分岐命令を同時に制御するための複数のエントリＲＳＢＲ０、ＲＳＢＲ１、ＲＳＢＲ２．．を備え、エントリに空きがある場合には命令デコード部１１からの指示によってデコードサイクルで新規のエントリが作成される。ただしエントリに空きがない場合には、その旨が命令デコード部１１に通知され、全ての命令のデコードが停止される。本実施形態では、分岐リザベーションステーション１２はＲＳＢＲ０からＲＳＢＲｎまでのｎ＋１個のエントリを同時に制御することができ、また例えば同時に最大２つの命令に対応するエントリの作成が可能であり、同時に最大２つの命令に対応するエントリの解放が可能であるものとする。
【００３５】
命令デコード部１１からの指示によりＲＳＢＲにエントリを作成する場合は、命令が発行された順にＲＳＢＲ０から順番にＲＳＢＲ１、ＲＳＢＲ２、ＲＳＢＲ３・・・とエントリが作成される。エントリ作成時にすでにＲＳＢＲが有効なエントリを保持している場合には次の４つの条件が判定される。
１）ＲＳＢＲ内に保持されているエントリでＲＳＢＲ内での制御が完了した命令が存在しない。
２）ＲＳＢＲ内に保持されているエントリでＲＳＢＲ内での制御が完了した命令が存在する。
３）ＲＳＢＲ内に保持されているエントリで命令再フェッチ要求を出した命令が存在する。
４）実行パイプライン上で割り込みが発生した。
【００３６】
上記のどの条件が成立しているかが判断され、エントリ作成の可否と、作成される場所が決定される。ここでは説明のためエントリ作成時にＲＳＢＲ０〜ＲＳＢＲ４まで有効なエントリが存在していたとする。１）の条件が成立している場合、ＲＳＢＲから解放されるエントリは存在せず、ＲＳＢＲ０〜ＲＳＢＲ４までのエントリは引き続きＲＳＢＲ内で制御されなければならない。したがって新規エントリはＲＳＢＲ５若しくはＲＳＢＲ５とＲＳＢＲ６に作成される。
【００３７】
２）の条件が成立している場合、ＲＳＢＲから解放されるエントリが存在する。ここでエントリが解放されるということは、そのエントリに対応する分岐命令の実行制御が終了していることを意味する。ＲＳＢＲは制御が終了しているエントリについては削除を行い、引き続き制御が必要なエントリは継続して制御を行う。
【００３８】
ＲＳＢＲエントリの解放はインオーダで行われ、エントリはバブルアップによって常に命令デコード順に並び替えられるため、各エントリはＲＳＢＲ０から命令順に古いものから並んでいる。ＲＳＢＲ０がＲＳＢＲから解放される場合は、ＲＳＢＲ１以降のエントリはそれぞれ番号の小さい方向に向かって１エントリ分バブルアップする。バブルアップ後はＲＳＢＲ４以降は空きエントリとなるため、この場合新規エントリはＲＳＢＲ４、若しくはＲＳＢＲ４とＲＳＢＲ５に作成される。
【００３９】
３）の条件の場合、デコーダは実際には実行し得ない命令シーケンスを実行パイプライン上に供給していることになるため、ＲＳＢＲ内に新規エントリは作成されない。ただし既に登録されている命令再フェッチ要求を出した命令以前の命令制御はＲＳＢＲ内で引き続き行う。そのためＲＳＢＲからエントリが解放されるたびにバブルアップのみ行われる。４）の条件の場合はＲＳＢＲ内の全てのエントリが消去される。したがって新規エントリについても作成はしない。
【００４０】
バブルアップはＲＳＢＲから解放されるエントリ分可能である。本実施形態では最大同時に２エントリ解放されるが、この場合は２エントリ分バブルアップが行われる。ＲＳＢＲはＲＳＢＲ０、ＲＳＢＲ１からのみ解放可能である。本実施形態ではバブルアップ時に、各エントリがそれぞれ独立して、エントリが保持しているフラグ（データ）の更新が可能であるものとし、これによりバブルアップ時であっても分岐命令に関する制御が可能となる。分岐命令に関する制御とは分岐判定、分岐先アドレスの獲得、分岐予測判定、分岐予測失敗時の再命令フェッチ要求である。
【００４１】
バブルアップ時であっても分岐命令に関する制御が可能というのは、例えばＲＳＢＲ２で分岐予測判定を行った結果、分岐予測に失敗していたとする。この場合、再命令フェッチ要求をＲＳＢＲ２から命令フェッチ制御部１０に対して出さなければならない。この時に同じサイクルでＲＳＢＲ０がＲＳＢＲからの解放条件（ｃｏｍｐｌｅｔｅ条件）を満たしていたとする。ＲＳＢＲ２の分岐命令はバブルアップ条件が成立しているので、次サイクルにはＲＳＢＲ１にいなければならない。したがってＲＳＢＲ２は再命令フェッチ要求を命令フェッチ制御部１０に対して出しながらフラグやデータをＲＳＢＲ１にセットし、ＲＳＢＲ３以降に存在する分岐命令及び新規にデコードされた命令を全てクリアするために、ＲＳＢＲ２以降のエントリに対してリセット指示を出す。またＲＳＢＲ２からＲＳＢＲ１にバブルアップ中に再命令フェッチ要求を出しているので、ＲＳＢＲ１に再命令フェッチ要求を出したことを示すフラグをセットする。
【００４２】
図３は、分岐リザベーションステーション１２における各エントリの制御回路の説明図である。各エントリにはそのエントリが有効であるか否かを示すバリッドフラグの格納領域２１と、それ以外のフラグやデータを格納する格納領域２０とがある。バリッドフラグの格納領域以外の領域に格納されているデータは、例えば分岐の確定／不確定、成立／不成立などを示す分岐判定フラグ、分岐命令のアドレス、図２において演算回路１３から与えられる分岐先アドレスなどである。
【００４３】
それぞれのエントリに、例えばＲＳＢＲ０に対しては、そのフラグやデータなどの格納内容を必要に応じて更新するためのＲＳＢＲ０アップデート回路２２0が接続される。エントリの左側からは、例えば命令デコードの時点で命令デコード部１１内の４つのインストラクション・ワード・レジスタ（ＩＷＲ）から入力されるデータや、エントリのバブルアップ時に後続のエントリのデータを移動するためのデータを選択するセレクタ２３が設けられ、また右側には、後続の各エントリに対応するアップデート回路からのデータなどを選択するためのセレクタ２４が設けられている。
【００４４】
なお図３においては先頭エントリ、すなわちＲＳＢＲ０に対する制御回路だけが示されており、同様の制御回路がＲＳＢＲ１、ＲＳＢＲ２．．に対しても存在する。また、例えばセレクタ２３に与えられる分岐命令のうちＩＷＲ０とＩＷＲ１からの分岐命令が１本の経路でセレクタ２３に入力されるが、これは命令デコード部１１によって同時にデコードされる４つの命令のうち、連続する２つの命令がともに分岐命令である可能性は低いためである。
【００４５】
以下本実施形態における分岐リザベーションステーションに対する各制御回路の詳細について説明する。図４はバブルアップ制御信号出力回路（その１）の説明図である。同図は従来例における図１８と同様にバブルアップ禁止信号、すなわちディセーブルバブルアップ信号を出力する回路であり、ＡＮＤゲート２５に与えられるＲＳＢＲ０に対するコンプリート信号がＬ（０）であり、そのエントリがバリッドであることを示す信号がＨ（１）である時に、バブルアップ禁止信号を出力する。すなわちエントリＲＳＢＲ０がバリッドであり、このエントリに対応する分岐命令の実行制御が終了していない場合には先頭エントリの解放を行うことができず、従ってバブルアップは禁止される。
【００４６】
図５は、バブルアップ制御信号出力回路（その２）の説明図である。同図においてＡＮＤゲート２６からは、ＲＳＢＲ０に対応する分岐命令の実行制御が終了していることを示すコンプリート信号がＨであり、次のエントリＲＳＢＲ１に対応する分岐命令の実行制御が終了していることを示す信号がＬ、すなわち実行制御が終了していない時に、各エントリの格納内容を１つだけ先頭方向にそれぞれ移動させるイネーブル１アップ信号が出力される。
【００４７】
図６は、バブルアップ制御信号出力回路（その３）の説明図である。同図においてバッファ２７は、エントリＲＳＢＲ１に対応する分岐命令の実行制御が終了したことを示すコンプリート信号がＨである時に、各エントリの内容を先頭エントリ方向に２つずつ移動させるイネーブル２アップ信号を出力する。ここでＲＳＢＲ１は先頭エントリから２番目のエントリであり、分岐リザベーションステーション１２の制御においては先頭エントリから順次エントリの解放を行うことが基本となっており、ＲＳＢＲ１を解放して良い場合には、ＲＳＢＲ０に対するコンプリート信号もＨとなっており、同時にＲＳＢＲ０も解放されることになる。従ってそれぞれエントリの格納内容を２つだけ先頭方向に移動させるバブルアップが行われる。なお図４から図６で説明したバブルアップ制御信号出力回路は本発明の特許請求の範囲の請求項１におけるバブルアップ機構を構成するものである。
【００４８】
図７は、ＲＳＢＲｍに対する命令デコード部１１からのデータロードに対するイネーブル信号出力回路の説明図である。同図においてＯＲゲート３３は、３つのＡＮＤゲート３０、３１、３２のいずれかの出力がＨとなった時点で命令デコード部１１からエントリＲＳＢＲｍに対するデータのロードを許可するイネーブル信号を出力する。
【００４９】
ＡＮＤゲート３０は、図４のＡＮＤゲート２５の出力としてのディセーブルバブルアップ信号と、ＲＳＢＲ（ｍ−１）、すなわち直前のエントリが有効であることを示すバリッド信号と、ＲＳＢＲｍからＲＳＢＲｎ、すなわち最後のエントリまでが存在しない、すなわち空であることを示す信号とがそれぞれＨとして入力された時にＯＲゲート３３にＨを出力する。すなわちこの状態ではバブルアップは行われず、直前のエントリＲＳＢＲ（ｍ−１）がバリッドであり、データがロードされようとしているエントリＲＳＢＲｍから最後のエントリＲＳＢＲｎまでが空であるために、命令デコード部１１からのデータのロードが許可されることになる。
【００５０】
ＡＮＤゲート３１に対して、図５のＡＮＤゲート２６の出力としてのイネーブル１アップ信号と、ＲＳＢＲｍが有効なデータを格納していることを示すバリッド信号と、データがロードされようとしているエントリの次のエントリＲＳＢＲ（ｍ＋１）から最後のエントリまでが空であることを示す信号とがそれぞれＨとして入力された時、ＡＮＤゲート３１は出力としてＨをＯＲゲート３３に与える。この状態ではエントリの内容が、それぞれ先頭方向に１つだけ移動されるバブルアップが可能であるため、命令デコード部１１からロードされるデータはＲＳＢＲｍにセットされることになる。
【００５１】
ＡＮＤゲート３２に対して、図６のバッファ２７の出力としてのイネーブル２アップ信号と、ＲＳＢＲ（ｍ＋１）がバリッドであることを示す信号と、ＲＳＢＲ（ｍ＋２）から最後のエントリまでが空であることを示す信号がいずれもＨとして入力された時に、ＡＮＤゲート３２は出力ＨをＯＲゲート３３に与える。すなわちエントリの内容をそれぞれ２個ずつ先頭方向に移動するバブルアップが行われるために、命令デコード部１１からのデータはＲＳＢＲｍにセットされることになる。
【００５２】
図８は、従来例の図２１で説明したラッチ回路と同様のラッチ回路（図９）に対してデータをセットするための、ＲＳＢＲｍに対するデータやフラグのセット信号出力回路の説明図である。同図においてＯＲゲート３６は、ＡＮＤゲート３５、またはＯＲゲート４０の出力がＨである時にデータセット信号をラッチ回路に対して出力する。
【００５３】
ＡＮＤゲート３５は、図７のＯＲゲート３３の出力と、実際に命令デコード部１１から与えられるＲＳＢＲｍに対するデータやフラグのロード信号とがともにＨである時に、出力としてのＨをＯＲゲート３６に与え、その結果としてラッチ回路に対するデータのセットが行われることになる。
【００５４】
ＯＲゲート４０は、３つのＡＮＤゲート３７、３８、３９の何れかの出力がＨとなった時点で出力ＨをＯＲゲート３６に与える。ＡＮＤゲート３７は、図４のＡＮＤゲート２５の出力と、ＲＳＢＲｍが有効であることを示すバリッド信号と、ＲＳＢＲｍに格納されるべきデータやフラグがそれぞれＨである時に、ＨをＯＲゲート４０に出力する。すなわちこの状態ではバブルアップは行われず、ＲＳＢＲｍの内容はセルフループとして同じエントリにそのまま再度書き込まれることになる。
【００５５】
ＡＮＤゲート３８には、図５のＡＮＤゲート２６の出力と、ＲＳＢＲ（ｍ＋１）に対するバリッド信号、およびそのエントリに格納すべきフラグなどのデータがそれぞれＨとして入力された時点で出力ＨをＯＲゲート４０に与える。ＡＮＤゲート３９は、図６のバッファ２７の出力と、ＲＳＢＲ（ｍ＋２）に対するバリッド信号、及びフラグなどのデータがそれぞれＨとして入力された時点で出力ＨをＯＲゲート４０に与える。すなわちＡＮＤゲート３８は、１エントリ分だけバブルアップが行われるべき時にエントリＲＳＢＲ（ｍ＋１）の内容をＲＳＢＲｍに書込み、ＡＮＤゲート３９は２エントリ分のバブルアップが行われる時にＲＳＢＲ（ｍ＋２）の内容をＲＳＢＲｍに書き込むための動作を行うことになる。なお図８のデータセット信号出力回路は図７のデータロード・イネーブル信号出力回路と共に請求項１における新規エントリデータセット手段（ＡＮＤゲート３５に相当）とバブルアップ機構を構成する。
【００５６】
図９は、従来例の図２１に対応する各エントリにおけるラッチ回路の説明図である。同図において、図８のＯＲゲート３６の出力がラッチ４２のセット端子に与えられ、リセット端子にはＯＲゲート４３の出力が与えられる。ＯＲゲート４３に対して、再命令フェッチによってＲＳＢＲｍの解放が必要となったことを示すクリア信号と、例えば割り込みなどによる本実施形態とは無関係のリセット信号としてのＲＳ１のいずれかがＨとして入力された時、ＯＲゲート４３はリセット端子に対してＨを出力する。
【００５７】
すなわち本実施形態においては、エントリが解放される時、そのエントリに対応するバリッドフラグが落ちてからバブルアップを行うのではなく、例えば図８で説明したようにバブルアップを行うべきことが確定した時点で直ちにエントリの内容の移動、すなわちバブルアップがバリッドフラグの内容を見ることなく行われる。図１７の従来例においてエントリが解放される可能性がある先頭エントリＲＳＢＲ０から３番目のエントリＲＳＢＲ２までのエントリに対応するラッチ回路（図２１）で行われたコンプリート信号に対応するリセットが本実施形態では行われず、先頭エントリＲＳＢＲ０から最後のエントリＲＳＢＲｎに対して全く同じ図９のラッチ回路が使用される。なお、例えば図８のＯＲゲート３６の出力として、例えばＡＮＤゲート３８の出力としてのＲＳＢＲ（ｍ＋１）のフラグの内容がラッチ４２のセット端子に与えられても、実際にラッチ４２にその内容が格納されるのは次のサイクルとなる。
【００５８】
図１０から図１２は、分岐命令の予測が失敗して再命令フェッチが行われる場合の各エントリに対するクリア信号出力回路の説明図である。本実施形態においては、図２の分岐リザベーションステーション１２内の先頭から３つめまでのエントリ、すなわちＲＳＢＲ０、ＲＳＢＲ１、およびＲＳＢＲ２のそれぞれのエントリに対応する分岐命令における分岐予測が失敗した時に、これらの何れかのエントリに対応する分岐命令から再命令フェッチ要求が命令フェッチ制御部１０に与えられるものとする。なお図１０から図１２の回路は基本的に負論理で動作するものである。
【００５９】
図１０は、先頭から２番目のエントリＲＳＢＲ１をリセットするクリア信号出力回路の説明図である。同図においてバッファ４５にＲＳＢＲ０に対応する分岐命令から再命令フェッチ要求が出力されたことを示す信号がＬで入力された時、ＮＡＮＤゲート４６に先頭エントリＲＳＢＲ０に対するコンプリート信号と次のエントリＲＳＢＲ１に対応する分岐命令からの再命令フェッチ要求の出力を示す信号がＨで入力された時、ＮＡＮＤゲート４７にＲＳＢＲ１に対するコンプリート信号とＲＳＢＲ２に対応する分岐命令からの再命令フェッチ要求の出力を示す信号がＨで入力された時、ＡＮＤゲート４８からＲＳＢＲ１に対するクリア信号がＬとして出力される。ここでＮＡＮＤゲート４６に対する入力の条件は、ＲＳＢＲ１に対応する分岐命令から再命令フェッチ要求が出されるが、ＲＳＢＲ１の格納内容はバブルアップによってＲＳＢＲ０に移動されるために、エントリＲＳＢＲ１をリセットすべきことを示している。同様にＮＡＮＤゲート４７に対する入力は、ＲＳＢＲ０とＲＳＢＲ１とがともに空となるため、２エントリ分のバブルアップが行われ、ＲＳＢＲ２の格納内容はＲＳＢＲ０に移動されるため、ＲＳＢＲ１のリセットが行われるべきことを示している。
【００６０】
図１１は、ＲＳＢＲ２に対するクリア信号出力回路の説明図である。同図においてＲＳＢＲ０に対応する分岐命令からの再命令フェッチ要求が出力されたことを示す信号がＬで入力されるバッファ５０、同様にＲＳＢＲ１に対応する命令からの再命令フェッチ要求が出力されたことを示す信号がＬで入力されるバッファ５１、ＲＳＢＲ０に対するコンプリート信号とＲＳＢＲ２に対応する分岐命令からの再命令フェッチ要求が出力されたことを示す信号がＨで入力されるＮＡＮＤゲート５２、およびＡＮＤゲート５３を介してＲＳＢＲ２に対するクリア信号が出力される。ここでＮＡＮＤゲート５２に対する入力の条件は、先頭エントリが解放されて、バブルアップが１エントリ分行われ、ＲＳＢＲ２の格納内容はＲＳＢＲ１に移動されるため、ＲＳＢＲ２のクリアが必要となることを示している。
【００６１】
図１２は残りのエントリ、すなわちＲＳＢＲ３からＲＳＢＲｎ（ここではｎ＝９とする）までのエントリに対するクリア信号出力回路の説明図である。ＲＳＢＲ０、ＲＳＢＲ１、またはＲＳＢＲ２の何れかに対応する分岐命令から再命令フェッチ要求が出されたことを示す信号がＬでバッファ５５、５６、５７に入力された場合には残りのエントリとしてのＲＳＢＲ３からＲＳＢＲｎまでは全て解放されなければならず、ＡＮＤゲート５８からこれらのエントリに対するクリア信号が出力される。なお図１０から図１２のエントリクリア信号出力回路は請求項３における再命令フェッチ時エントリ解放手段を構成する。
【００６２】
図１３、および図１４は、図３で説明した各エントリに対応するアップデート回路の一部としての分岐判定回路と分岐先アドレス判定回路の動作の説明図である。図１３は、エントリＲＳＢＲｍに対する分岐判定回路（コンディションコードマッチ回路）の動作説明図である。同図において判定回路６０に対して図２における演算回路１３での演算が完了したことを示すＥＵ＿ＣＯＮＤＩＴＩＯＮ＿ＣＯＤＥ＿ＶＡＬＩＤ信号、演算結果としてのコンディションコードＥＵ＿ＣＯＮＤＩＴＩＯＮ＿ＣＯＤＥ信号、エントリＲＳＢＲｍにエントリされている分岐命令のＯＰＣにおけるコンディションコード、分岐判定が完了している時に１となるＲＥＳＯＬＶＥＤ信号、分岐の成立が確定している時に１となるＴＡＫＥＮ信号が入力され、分岐判定回路６０は分岐判定の完了を示すＲＥＳＯＬＶＥＤ信号が０の場合には、演算回路１３から与えられるコンディションコードとエントリされているコンディションコードとのマッチングによる分岐判定を行い、ＲＥＳＯＬＶＥＤ信号が１の場合には２つの信号をそのままスルーして出力する動作を実行する。
【００６３】
図１４の分岐先アドレス判定回路６１には、演算回路１３での分岐先アドレスの計算が完了したことを示すＥＵ＿ＴＧＴ＿ＡＤＲＳ＿ＶＡＬＩＤ信号、分岐先のアドレス計算結果ＥＵ＿ＴＧＴ＿ＡＤＲＳ信号、ＲＳＢＲｍに格納されている分岐命令の分岐先アドレスの計算が完了している時に１となるＴＧＴ＿ＡＤＲＳ＿ＶＡＬＩＤ信号、このバリッド信号が１の時は分岐先アドレス、０の時は分岐予測アドレスを示すＴＧＴ＿ＡＤＲＳ信号、このバリッド信号が１の時にのみ有効で分岐予測アドレスが正しいことを示すＴＧＴ＿ＡＤＲＳ＿ＭＡＴＣＨ信号が入力され、これらの信号入力に対して分岐先アドレス判定回路６１は、前述のバリッド信号が０の場合には分岐先アドレスの確保、および分岐予測先が正しいかどうかの判定を行い、１の場合には３つの信号をそのままスルーして出力する動作を行う。
【００６４】
なお図１３、および図１４の回路は、例えば図８のＯＲゲート３６と図９のラッチ回路４２のセット端子との間に存在し、フラグやデータの一部の更新を行うものである。図３の各エントリに対応するアップデート回路２２によって更新されるフラグやデータは前述のＲＥＳＯＬＶＥＤ信号、ＴＡＫＥＮ信号、ＴＧＴ＿ＡＤＲＳ＿ＶＡＬＩＤ信号、ＴＧＴ＿ＡＤＲＳ信号、およびＴＧＴ＿ＡＤＲＳ＿ＭＡＴＣＨ信号に相当する。
【００６５】
最後に本実施形態と従来技術におけるエントリの解放と新規登録の動作を、ともにエントリの同時解放数を２、同時新規登録数を２、バブルアップにおける移動エントリ数を２として、図１５、図１６を用いて比較する。
【００６６】
図１５は、本実施形態におけるエントリ解放、および新規登録動作の説明図である。まず最初のサイクルにおいて１０個のエントリのうちＲＳＢＲ０からＲＳＢＲ５までの６個のエントリにデータが格納されている。先頭の２つのエントリＲＳＢＲ０とＲＳＢＲ１に対応する分岐命令の実行制御が終了し、その解放が可能となっており、またデコーダ側から２つの新しい分岐命令に対応するデータの２つのエントリＲＳＢＲ６、ＲＳＢＲ７への格納がなされようとしているものとする。
【００６７】
次のサイクルにおいてＲＳＢＲ２からＲＳＢＲ５までの格納内容が２エントリ分ずつ先頭方向にバブルアップされ、ＲＳＢＲ０からＲＳＢＲ３に移動されるとともに前のサイクルで新たにＲＳＢＲ６、およびＲＳＢＲ７に格納されようとしていたデータも同時にバブルアップされてＲＳＢＲ４とＲＳＢＲ５に対して２つの新規エントリとして登録されている。また同時にこのサイクルにおいて先頭の２つのエントリ、ＲＳＢＲ０、ＲＳＢＲ１に対応する分岐命令の完了が可能となっており、さらにデコーダ側から２つの新規命令に対応するデータがＲＳＢＲ６、ＲＳＢＲ７に格納されようとしているもとのする。その結果さらに次のサイクルで２エントリ分のバブルアップが行われ、ＲＳＢＲ２からＲＳＢＲ５の格納内容は２エントリ分ずつ先頭方向に移動されるとともに、ＲＳＢＲ４、ＲＳＢＲ５に対しては新規登録エントリとして新たな分岐命令に対応するデータが格納される。
【００６８】
従来技術における動作を示す図１６では最初のサイクルにおける状態は図１５と同じであるが、次のサイクルではバブルアップは行われず、ＲＳＢＲ０、ＲＳＢＲ１は空となり、これらのエントリに対するバリッドフラグが落とされるとともに、ＲＳＢＲ６とＲＳＢＲ７に新規エントリの登録が行われる。さらに次のサイクルにおいて２エントリ分のバブルアップが行われ、ＲＳＢＲ２からＲＳＢＲ７までのエントリのデータはそれぞれＲＳＢＲ０からＲＳＢＲ５に移動されるが、新規に登録されるエントリのデータが同時にバブルアップされることはなく、新規エントリはＲＳＢＲ８とＲＳＢＲ９として作成され、ＲＳＢＲ６とＲＳＢＲ７が空である歯抜けの状態となり、また最後のＲＳＢＲ９のエントリまでデータが格納されているためにその後の新しい分岐命令に対する新規エントリの作成は不可能となってしまうことになる。
【００６９】
（付記１）  分岐命令に対応して、該分岐命令の実行制御に必要とされるデータが該分岐命令のデコード順に先頭から順次格納される複数のエントリを備える装置において、
対応する分岐命令の実行制御が完了したエントリのうちで、前記先頭エントリからデコード順が古い順序で１つ以上のエントリが連続的に解放される時、残りのエントリの内容を解放されたエントリの数だけ先頭エントリの方向のエントリに移動させるバブルアップ機構と、
該バブルアップ機構によるエントリの内容移動と同一サイクルにおいて、該移動によって空きエントリとなるエントリを含め、前記先頭エントリに近いエントリから順次１つ以上の空きエントリに、新たにデコードされた分岐命令の実行制御に必要とされるデータを格納する新規エントリデータセット手段とを備えることを特徴とする分岐命令制御装置。
【００７０】
（付記２）  前記バブルアップ機構によるエントリ内容の移動と同一サイクルにおいて、前記各エントリに格納された分岐命令の実行制御に必要とされるデータを更新するエントリデータアップデート手段をさらに備えることを特徴とする付記１記載の分岐命令制御装置。
【００７１】
（付記３）  前記バブルアップ機構によるエントリの内容移動と同一サイクルにおいて、前記分岐命令の実行制御に必要とされるデータが格納されたエントリに対応する分岐命令に関する分岐予測が失敗して再命令フェッチが行われる時、前記デコード順が該分岐命令より新しい全ての分岐命令に対応するエントリの解放を行う再命令フェッチ時エントリ解放手段をさらに備えることを特徴とする付記１記載の分岐命令制御装置。
【００７２】
（付記４）  前記エントリの解放数と、前記新たにデータが格納される新規エントリ数とが等しいことを特徴とする付記１記載の分岐命令制御装置。
（付記５）  分岐命令に対応して、該分岐命令の実行制御に必要とされるデータが該分岐命令のデコード順に先頭から順次格納される複数のエントリを備える装置において、
対応する分岐命令の実行制御が完了したエントリのうちで、前記先頭エントリからデコード順が古い順序で１つ以上のエントリが連続的に解放される時、残りのエントリの内容を解放されたエントリの数だけ先頭エントリの方向のエントリに移動させるバブルアップ機構と、
該バブルアップ機構によるエントリの内容移動と同一サイクルにおいて、該移動によって空きエントリとなるエントリを含め、前記先頭エントリに近いエントリから順次１つ以上の空きエントリに、新たにデコードされた分岐命令の実行制御に必要とされるデータを格納する新規エントリデータセット手段と、
前記バブルアップ機構によるエントリ内容の移動と同一サイクルにおいて、前記各エントリに格納された分岐命令の実行制御に必要とされるデータを更新するエントリデータアップデート手段と、
前記バブルアップ機構によるエントリの内容移動と同一サイクルにおいて、前記分岐命令の実行制御に必要とされるデータが格納されたエントリに対応する分岐命令に関する分岐予測が失敗して再命令フェッチが行われる時、前記デコード順が該分岐命令より新しい全ての分岐命令に対応するエントリの解放を行う再命令フェッチ時エントリ解放手段とを備えることを特徴とする分岐命令制御装置。
【００７３】
（付記６）  分岐命令に対応して、該分岐命令の実行制御に必要とされるデータが該分岐命令のデコード順に先頭から順次格納される複数のエントリを用いて分岐命令を制御する方法であって、
対応する分岐命令の実行制御が完了したエントリのうちで、前記先頭エントリからデコード順が古い順序で１つ以上のエントリが連続的に解放される時、残りのエントリの内容を解放されたエントリの数だけ先頭エントリの方向のエントリにバブルアップ機構によって移動させ、
該エントリの内容移動と同一サイクルにおいて、該移動によって空きエントリとなるエントリを含め、前記先頭エントリに近いエントリから順次１つ以上の空きエントリに、新たにデコードされた分岐命令の実行制御に必要とされるデータを格納することを特徴とする分岐命令制御方法。
【００７４】
（付記７）  前記バブルアップ機構によるエントリ内容の移動と同一サイクルにおいて、前記各エントリに格納された分岐命令の実行制御に必要とされるデータを更新することを特徴とする付記６記載の分岐命令制御方法。
【００７５】
（付記８）  前記バブルアップ機構によるエントリの内容移動と同一サイクルにおいて、前記分岐命令の実行制御に必要とされるデータが格納されたエントリに対応する分岐命令に関する分岐予測が失敗して再命令フェッチが行われる時、前記デコード順が該分岐命令より新しい全ての分岐命令に対応するエントリの解放を行うことを特徴とする付記６記載の分岐命令制御方法。
【００７６】
（付記９）  前記エントリの解放数と、前記新たにデータが格納される新規エントリ数とが等しいことを特徴とする付記６記載の分岐命令制御方法。
（付記１０）  分岐命令に対応して、該分岐命令の実行制御に必要とされるデータが該分岐命令のデコード順に先頭から順次格納される複数のエントリを用いて分岐命令を制御する方法であって、
対応する分岐命令の実行制御が完了したエントリのうちで、前記先頭エントリからデコード順が古い順序で１つ以上のエントリが連続的に解放される時、残りのエントリの内容を解放されたエントリの数だけ先頭エントリの方向のエントリにバブルアップ機構によって移動させ、
該バブルアップ機構によるエントリの内容移動と同一サイクルにおいて、該移動によって空きエントリとなるエントリを含め、前記先頭エントリに近いエントリから順次１つ以上の空きエントリに、新たにデコードされた分岐命令の実行制御に必要とされるデータを格納し、
前記バブルアップ機構によるエントリ内容の移動と同一サイクルにおいて、前記各エントリに格納された分岐命令の実行制御に必要とされるデータを更新し、
前記バブルアップ機構によるエントリの内容移動と同一サイクルにおいて、前記分岐命令の実行制御に必要とされるデータが格納されたエントリに対応する分岐命令に関する分岐予測が失敗して再命令フェッチが行われる時、前記デコード順が該分岐命令より新しい全ての分岐命令に対応するエントリの解放を行うことを特徴とする分岐命令制御方法。
【図面の簡単な説明】
【００７７】
【図１】本発明の分岐命令制御装置の原理構成ブロック図である。
【図２】本発明の分岐命令制御装置が用いられる情報処理システムの構成を示すブロック図である。
【図３】分岐命令制御装置におけるエントリに対する制御回路の説明図である。
【図４】バブルアップ制御信号出力回路（その１）の説明図である。
【図５】バブルアップ制御信号出力回路（その２）の説明図である。
【図６】バブルアップ制御信号出力回路（その３）の説明図である。
【図７】エントリへのデータロード・イネーブル信号出力回路の説明図である。
【図８】エントリへのデータセット信号出力回路の説明図である。
【図９】各エントリにおけるラッチ回路の説明図である。
【図１０】再命令フェッチに伴うエントリクリア信号出力回路（その１）の説明図である。
【図１１】再命令フェッチに伴うエントリクリア信号出力回路（その２）の説明図である。
【図１２】再命令フェッチに伴うエントリクリア信号出力回路（その３）の説明図である。
【図１３】エントリアップデート回路の一部としての分岐判定回路の動作説明図である。
【図１４】エントリアップデート回路の一部としての分岐先アドレス判定回路の動作説明図である。
【図１５】本実施形態におけるエントリ解放と新規登録動作例の説明図である。
【図１６】図１５と比較するための従来技術におけるエントリ解放と新規登録動作例の説明図である。
【図１７】従来技術におけるエントリ解放とバブルアップ動作例の説明図である。
【図１８】バブルアップ制御信号出力回路（その１）の従来例を示す図である。
【図１９】バブルアップ制御信号出力回路（その２）の従来例を示す図である。
【図２０】エントリに対するデータロード・イネーブル信号出力回路の従来例を示す図である。
【図２１】エントリにおけるラッチ回路の従来例を示す図である。
【符号の説明】
【００７８】
１  分岐命令制御装置
２  エントリ
３  バブルアップ機構
４  新規エントリデータセット手段
１０  命令フェッチ制御部
１１  命令デコード部
１２  分岐リザベーションステーション
１３  演算回路
１４  命令完了制御部
１５  分岐予測部
２０  ＲＳＢＲ（フラグ、データ）
２１  ＲＳＢＲバリッドフラグ
２２  ＲＳＢＲアップデート回路
２３、２４  セレクタ
６０  分岐判定回路（コンディションコードマッチ回路）
６１  分岐先アドレス判定回路
【図１】
2006039962.tif 000003
【図２】
2006039962.tif 000004
【図３】
2006039962.tif 000005
【図４】
2006039962.tif 000006
【図５】
2006039962.tif 000007
【図６】
2006039962.tif 000008
【図７】
2006039962.tif 000009
【図８】
2006039962.tif 000010
【図９】
2006039962.tif 000011
【図１０】
2006039962.tif 000012
【図１１】
2006039962.tif 000013
【図１２】
2006039962.tif 000014
【図１３】
2006039962.tif 000015
【図１４】
2006039962.tif 000016
【図１５】
2006039962.tif 000017
【図１６】
2006039962.tif 000018
【図１７】
2006039962.tif 000019
【図１８】
2006039962.tif 000020
【図１９】
2006039962.tif 000021
【図２０】
2006039962.tif 000022
【図２１】
2006039962.tif 000023