(57)【要約】【課題】ショートループを効率よく処理することのできる命令フェッチ制御装置を提供する。【解決手段】複数の命令バッファ間を任意に接続できる命令バッファ機構を用い、特定の命令バッファに格納されている命令と、他の命令バッファに格納されている命令であって、論理的に、特定の命令バッファに格納されている命令に後続する命令が同じものであった場合、他の命令バッファの命令を使わずに、他の命令バッファの命令よりも、論理的にすぐ前の命令を格納する命令バッファから特定の命令バッファに接続を張り、命令バッファ間でループを作るようにして、ショートループの実行を行う。【選択図】　　　図２
2004038337.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令バッファと、該命令バッファに対応し、命令バッファの接続関係を示すポインタ部とを有する命令バッファ手段と、
命令フェッチ要求とは異なった命令バッファ間の接続関係を、確立させる接続関係確立手段と、
を備えることを特徴とする命令フェッチ制御装置。
【請求項２】
ある命令バッファ内の命令に対し論理的に後続となる命令アドレスが、有効な命令バッファ内のアドレス範囲内にある場合、該有効な命令バッファの該当するアドレスを該ある命令バッファの該命令の接続先とすることを特徴とする請求項１に記載の命令フェッチ制御装置。
【請求項３】
ある命令バッファ内の命令に対し論理的に後続となる命令アドレスが、有効な複数の命令バッファのいずれかの先頭命令アドレスに一致した場合に、該先頭命令アドレスを該ある命令バッファの該命令の接続先とすることを特徴とする請求項１に記載の命令フェッチ制御装置。
【請求項４】
命令バッファ内に、分岐命令の存在が判明あるいは予想された場合、既に命令を格納している有効な複数の命令バッファの中の分岐先に対応する命令列に対して、分岐元命令から該分岐先命令に接続関係を付けることを特徴とする請求項１に記載の命令フェッチ制御装置。
【請求項５】
前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させる命令は、分岐命令あるいは分岐の存在が予想される場合であることを特徴とする請求項１に記載の命令フェッチ制御装置。
【請求項６】
前記分岐命令の内、無条件分岐あるいは高確率で分岐すると予想される分岐命令に限って、前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させることを特徴とする請求項５に記載の命令フェッチ制御装置。
【請求項７】
前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させる前記命令は、分岐予測機構から、命令実行のループを検出することにより決定することを特徴とする請求項１に記載の命令フェッチ制御装置。
【請求項８】
前記命令フェッチと異なる接続関係が成り立った命令バッファ間の関係を解除する手段を更に備えたことを特徴とする請求項１に記載の命令フェッチ制御装置。
【請求項９】
複数の命令バッファと、該命令バッファに対応し、命令バッファの接続関係を示すポインタ部とを設ける命令バッファステップと、
命令フェッチ要求とは異なった命令バッファ間の接続関係を、確立させる接続関係確立ステップと、
を備えることを特徴とする命令フェッチ制御方法。
【請求項１０】
前記命令フェッチと異なる接続関係が成り立った命令バッファ間の関係を解除するステップを更に備えたことを特徴とする請求項９に記載の命令フェッチ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置、特に命令実行処理部へ命令供給するための装置に関する。
【０００２】
【従来の技術】
パイプライン処理方式以降の高度な命令処理方式を採用した情報処理装置においては、一つの命令の実行の終了を待たずに、投機的に後続の命令の処理を行うことで性能の向上を図ってきた。もちろん、その命令実行に先立ち、命令供給（命令フェッチ）も投機的に行うことで性能向上を果たしてきた。
【０００３】
例えば、分岐予測機構と密に関連付けられ、命令実行部と完全に分離された命令フェッチ部を構成することで、実行部へ必要充分な命令供給能力を確保し、命令フェッチ性能の高い性能を確保してきた。
【０００４】
【発明が解決しようとする課題】
図１２及び図１３は、従来の問題点を説明する図である。
分岐予測動作は、命令フェッチ要求から幾ばくかの時間がかかるのが普通である。従って、分岐成立が予測された場合の分岐予測先命令フェッチ要求は、予測された元の要求に対して、（たとえば３τ（τはマシンサイクル）など）遅れて出されることになる。その様子を図１２（ａ）に示す。
【０００５】
つまり、従来の命令バッファの構成では、分岐成立予測が頻発すると分岐先を予測するタイムロスが見えてしまう可能性がある。特に、図１２（ｂ）のように数命令で１つのループ命令列を構成していて、何度も周回するショートループでは、特に、図１３のように、そのロスがループの度に観測されてしまうため、性能へのインパクトが大きい。
【０００６】
例えば、図１２（ｂ）の命令列（定数でメモリフィルする）の場合、１０００バイト書き込むとすると２５０回ループするので、命令実行部がスーパスカラ方式を採用しており、この命令列を（４命令同時に）１τで処理可能だとすると、分岐予測の参照ペナルティが３τならば、ターゲット命令フェッチ待ちによって１ループ当たり、まるまる２τ損するから、命令実行部の処理能力があり、ショートループになっていなければ２５０τで、１０００バイトの書き込みを終われるところ、ショートループになっているために７５０τかかってしまう。
【０００７】
このような事態を回避するために、従来では、ソフトウェア（コンパイラ）がショートループを展開した状態の命令コードを予め準備しておき、繰り返し処理であっても分岐予測ロスを隠すようにしていた。しかしながら、これでは命令コードが肥大するデメリットがあるし、既に準備されているソフトウェアを再構築する手間もあった。
【０００８】
本発明の課題は、ショートループを効率よく処理することのできる命令フェッチ制御装置を提供することである。
【０００９】
【課題を解決するための手段】
命令フェッチ制御装置は、複数の命令バッファと、該命令バッファに対応し、命令バッファの接続関係を示すポインタ部とを有する命令バッファ手段と、命令フェッチ要求とは異なった命令バッファ間の接続関係を、命令バッファに格納される命令の種類に応じて確立させる接続関係確立手段とを備えることを特徴とする。
【００１０】
命令フェッチ制御方法は、複数の命令バッファと、該命令バッファに対応し、命令バッファの接続関係を示すポインタ部とを設ける命令バッファステップと、命令フェッチ要求とは異なった命令バッファ間の接続関係を、命令バッファに格納される命令の種類に応じて確立させる接続関係確立ステップとを備えることを特徴とする。
【００１１】
本発明によれば、ショートループのように、少数の命令を繰り返し多数回繰り返し実行する命令の場合、命令フェッチの度に分岐予測していたのでは、分岐予測のための時間がかかってしまい情報処理装置の性能が劣化してしまう。そこで、ショートループを形成するような分岐命令などを検出した場合、あるいは、複数ある命令バッファ内に、ある命令の論理的に後続となる命令であって、当該ある命令と同じアドレスの命令を発見したときは、複数の命令バッファ間でループ状の接続構造を構成し、命令バッファから直接命令供給し命令実行できるようにする。
【００１２】
以上により、ショートループのような命令でも、繰り返し実行の度に命令フェッチ動作や分岐予測動作をする必要が無くなり、命令実行を高速に行うことができる。
【００１３】
【発明の実施の形態】
図１は、本発明の実施形態で使用する命令バッファを概略説明する図である。同図において、命令バッファは、６個のバッファからなっているものとする。ここで、本実施形態で使用するバッファは、データを格納するバッファ部とあるバッファに格納されている命令の次に実行すべき命令がどのバッファに格納されているかを示すポインタ部とからなっている。
【００１４】
このような構成においては、第１のバッファ部に格納されている特定の命令列に続く命令列を残りの５つのバッファの内のいずれか空いているバッファに格納し、第１のバッファ部に対応するポインタ部に、特定の命令列の次の命令列が格納されたバッファを示すＩＤを格納するようにする。
【００１５】
すると、命令列をバッファから読み出す場合には、第１の命令を順次読み出し、特定の命令列の読み出しが終わったら、ポインタ部を参照して、該ポインタ部に格納されるＩＤで示されるバッファ部から命令列を読み出すようにする。また、ポインタ部には、バッファ部のどの位置から読み出すかを指定する命令列のバッファ内におけるアドレスを格納するようにしても良い。
【００１６】
このように命令バッファを構成することにより、設けられたバッファ同士を柔軟に関連付けることができるので、命令列がどのバッファに格納されていようと、図１のように設けられた６本のバッファを効率よく利用して、命令の供給（命令フェッチ）を行うことができる。
【００１７】
図２は、本発明の実施形態で用いる命令バッファを用いた本発明の実施形態の概念説明図である。
図２（ａ）では、ポインタによる関連づけ（指示先指定）は、当該命令バッファから見て、それより後に出された命令要求に向かってなされる。ところが、図２（ｂ）〜（ｄ）では、これを当該命令バッファの前であっても、論理的に後ろになる命令と一致する命令を格納する命令バッファがあれば、それに対してポインタ指示をする。すなわち命令バッファが環状につながった状態を生成する。
【００１８】
このように構成することで、ループ中は命令フェッチ要求を出す必要が無くなり、常に命令バッファから命令を供給することができる。したがって、分岐予測のバブル損も無くなり、最良の供給速度を確保することができる。この様子を図３に示す。
【００１９】
図３は、本発明の実施形態の効果を説明する図である。
図３に示されるように、命令バッファを環状につながった構成とすることで、命令バッファには、既に命令が格納されているので、新たに命令を読み込んだりする必要が無くなり、命令バッファから直接命令を実行することができるようになる。従って、命令の実行に当たって、すぐに命令供給をすることができるようになり、前述のショートループのときの欠点を解決することができる。すなわち、ショートループの実行の際に生じる分岐予測による遅延は、０τとなる。
【００２０】
特に、命令バッファの接続先を、本来は先行している既存の命令バッファに設定するので、命令バッファの数次第では簡単・自明なショートループ命令列でなくとも効力を発揮することができる。
【００２１】
また、ある種の分岐予測方式（特にグローバルヒストリ予測方式（ブランチヒストリよりも深い履歴を格納した命令分岐の予測方式であって、ショートループならば、複数回の繰り返し実行を履歴として持つことが可能））によれば、命令バッファなどにある命令フェッチ列の命令をデコードして分岐予測を行う。このような分岐予測方式において、ある時点でループから抜け出す状態が予測された場合、前述の環状構造を解除することで、分岐予測に従った命令フェッチ動作を実現できる。
【００２２】
あるいは、ある種のプロセッサ仕様においては、マルチＣＰＵ構成において、他系ＣＰＵが自ＣＰＵの命令域を書き換えた場合に、その書き換え事象を有限時間などある一定の条件で反映しなければならない等の制約を課しているものがある。この場合、ある程度の時間ごとにコヒーレンス制御がなされている命令キャッシュをポーリングする等して書き換えられた命令域を取り込む等の制御をする必要がある。そのために、命令バッファで閉じてしまった環状構造を解除する方式を使用可能である。
【００２３】
本実施形態では、各命令バッファに対応した命令アドレスを持っている場合について説明する。
図４は、本発明の実施形態が適用される情報処理装置の要部構成例である。
【００２４】
再命令フェッチ要求、あるいは、要求アドレスが命令フェッチ要求部１０に入力されると、命令フェッチ要求部からは、命令フェッチすべきアドレスや、命令フェッチの有効フラグ、命令フェッチＩＤなどが命令キャッシュ１２、分岐予測部１１、命令フェッチ制御部１３に入力される。
【００２５】
命令キャッシュは、指定されたアドレスの命令を命令バッファ１４に入力する。分岐予測部１１は、入力された命令アドレスに関して、分岐予測を行い、分岐予測の結果得られた分岐予測先アドレスなどを命令フェッチ要求部１０にフィードバックする。また、分岐予測部１１から命令フェッチ制御部１３には、分岐予測をしたか否かを示す信号が入力される。命令フェッチ制御部１３からは、命令供給制御部１５に対し、命令バッファ１４のいずれかから命令を出力すべきかを判定するための情報が送られる。
【００２６】
分岐供給制御部１５は与えられた情報に基づいて、命令バッファ１４の何れかを選択して、命令デコード部１６に命令を供給する。
回路を簡単にするために、接続先はＩＢ＃０（ＩＢ：Ｉｎｓｔｒｕｃｔｉｏｎ　Ｂｕｆｆｅｒ）に限定する。例えば空いている命令バッファの内若い番号から使用する制御方式を採用しているのならば、ポインタ指示先をＩＢ＃０に限定しても、接続機会は多少減る程度で済み、それよりも回路を単純化できるメリットの方が大きい。
【００２７】
命令フェッチ要求発行に、要求アドレスとＩＡＲ０（ＩＢ＃０の先頭命令アドレス）の一致検出を行う。一致していなければ本手法による接続はしない。一致していた場合には本手法による接続が可能なので、状況に応じて接続するか否か決定可能となる。
【００２８】
なお、実施方法によっては、命令バッファのアドレス範囲を見て、アドレス範囲内であるか否かの検出を行い接続の可能性を見ることも可能である。
実際に接続するか否かの判定に関する実施形態は後述する。
【００２９】
たまたま前述のようにアドレス一致したからといって、分岐条件が次回は変わるかもしれず、常に接続すれば性能向上というものではない。特に、ショートループになり得る場合を検出して接続実行したいのだから、その特徴を見いだすことは重要である。
【００３０】
ＩＢＭ　Ｓ／３９０命令セットで見られるＢＣＴ（Ｂｒａｎｃｈ　ｏｎ　ｃｏｕｎｔ）命令（高確率で分岐すると予想される命令）は、主にループ制御のために使用される分岐命令である。こういったループ制御のために定義された命令があると、本手法にちょうど適応させやすい。例えば、ＳＰＡＰ．Ｃ　Ｖ９命令セットにおいて無条件に分岐する命令としては、ｂａなどがある。このように、実際の情報処理装置で使用する命令セットの中から、無条件で分岐する命令、あるいは、分岐する確率の高い命令を予め調べておき、これらの命令を検出した場合、本実施形態の利用をするように構成すればよい。
【００３１】
あるいは、ブランチヒストリ登録時連動型のグローバルヒストリがある場合、該グローバルヒストリの対応するエントリがループ命令の特徴を見いだすことを、たとえば、Ｔａｋｅｎ連続数から判断できる。
【００３２】
あるいは、分岐予測成功率は通常９５％に満たないのだから、単純に、再命令フェッチが発生せず何十回と分岐予測が当たり続けている場合も、ループ事象が発生していると判断できる。
【００３３】
分岐予測機構については、例えば特開平９−２１８７８６のようなブランチヒストリを利用し、ＢＣＴ命令の完了時や前述グローバルヒストリによる判定結果などにより、ループ命令フラグをブランチヒストリに登録しておき、ブランチヒストリの参照時に対応するエントリが読み出される場合に、このフラグを一緒に読み出せるようにしておく。
【００３４】
分岐予測して、このフラグが一緒に読み出された場合には、ショートループ接続を試みれば良い。
次に、前述の命令フェッチ要求部１０の主要回路について、図４及び図５を用いて説明する。
【００３５】
図５は、命令フェッチ要求部１０に含まれる、ＩＦ−ＲＥＱ−ＩＤを生成する回路の構成例を示した図である。
同図に示した回路は、各命令バッファのポインタ部に保持されている情報に基づいて、一つの無効化されている命令バッファ１を検索し、その検索した一つの命令バッファの識別ＩＤを、ＩＦ−ＲＥＱ−ＩＤとして出力する回路である。
【００３６】
尚、詳細は後述するが、各命令バッファのポインタ部に保持されている情報には、当該命令バッファ１が有効であるか無効であるかを示す有効フラグ（Ｖａｌｉｄ）が保持されている。同図では、各命令バッファのポインタ部から読み出された有効フラグを、ＩＢｉ＿ＶＡＬＩＤ（ｉ＝０〜５）として示している。すなわち、ＩＢｉ＿ＶＡＬＩＤ（ｉ＝０〜５）は、命令バッファ＃ｉ（ｉ＝０〜５）の有効フラグを示している。
【００３７】
また、同図の回路では、各命令バッファ１に優先度が設けられるようにして、有効フラグが無効になっている命令バッファの中から優先度の最も高い命令バッファ１の識別ＩＤをＩＦ−ＲＥＱ−ＩＤとして出力するように構成されている。
【００３８】
すなわち、このようなＩＦ−ＲＥＱ−ＩＤを出力するため、同図の回路は次のように動作する。
エンコーダ回路（ＥＮＣ）１１３は、インバータ回路１１１−０からの入力が”Ｈ”であってかつそれ以外の入力が”Ｌ”のとき、すなわち、少なくとも命令バッファ＃０の有効フラグが無効であるときに（ＩＢ０＿ＶＡＬＩＤ＝”Ｌ”）、命令バッファ＃０の識別ＩＤである０を、ＩＦ−ＲＥＱ−ＩＤとして出力する。ここで、インバータ回路１１１−０の出力信号は、ＩＦ−ＲＥＱ−ＩＤ−ＥＱ−０信号でもある。
【００３９】
尚、本実施形態において、”Ｈ”は、論理”Ｈ”を示し、”Ｌ”は、論理”Ｌ”を示す。
又は、エンコーダ回路１１３は、アンド回路１１２−１からの入力が”Ｈ”であってかつそれ以外の入力が”Ｌ”のとき、すなわち、少なくとも命令バッファ＃０の有効フラグが有効であってかつ命令バッファ＃１の有効フラグが無効であるときに（ＩＢ１＿ＶＡＬＩＤ＝”Ｌ”）、命令バッファ＃１の識別ＩＤである１を、ＩＦ−ＲＥＱ−ＩＤとして出力する。ここで、アンド回路１１２−１の出力信号は、ＩＦ−ＲＥＱ−ＩＤ−ＥＱ−１信号でもある。
【００４０】
又は、アンド回路１１２−２からの入力が”Ｈ”であってかつそれ以外の入力が”Ｌ”のとき、すなわち、少なくとも命令バッファ＃０及び＃１の有効フラグが有効であってかつ命令バッファ＃２の有効フラグが無効であるときに（ＩＢ２＿ＶＡＬＩＤ＝”Ｌ”）、命令バッファ＃２の識別ＩＤである２を、ＩＦ−ＲＥＱ−ＩＤとして出力する。ここで、アンド回路１１２−２の出力信号は、ＩＦ−ＲＥＱ−ＩＤ−ＥＱ−２信号でもある。
【００４１】
又は、アンド回路１１２−３からの入力が”Ｈ”であってかつそれ以外の入力が”Ｌ”のとき、すなわち、少なくとも命令バッファ＃０〜＃２の有効フラグが有効であってかつ命令バッファ＃３の有効フラグが無効であるときに（ＩＢ３＿ＶＡＬＩＤ＝”Ｌ”）、命令バッファ＃３の識別ＩＤである３を、ＩＦ−ＲＥＱ−ＩＤとして出力する。ここで、アンド回路１１２−３の出力信号は、ＩＦ−ＲＥＱ−ＩＤ−ＥＱ−３信号でもある。
【００４２】
又は、アンド回路１１２−４からの入力が”Ｈ”であってかつそれ以外の入力が”Ｌ”のとき、すなわち、少なくとも命令バッファ＃０〜＃３の有効フラグが有効であってかつ命令バッファ＃４の有効フラグが無効であるときに（ＩＢ４＿ＶＡＬＩＤ＝”Ｌ”）、命令バッファ＃４の識別ＩＤである４を、ＩＦ−ＲＥＱ−ＩＤとして出力する。ここで、アンド回路１１２−４の出力信号は、ＩＦ−ＲＥＱ−ＩＤ−ＥＱ−４信号でもある。
【００４３】
又は、アンド回路１１２−５からの入力が”Ｈ”であってかつそれ以外の入力が”Ｌ”のとき、すなわち、少なくとも命令バッファ＃０〜＃４の有効フラグが有効であってかつ命令バッファ１−５の有効フラグが無効であるときに（ＩＢ５＿ＶＡＬＩＤ＝”Ｌ”）、命令バッファ＃５の識別ＩＤである５を、ＩＦ−ＲＥＱ−ＩＤとして出力する。ここで、アンド回路１１２−５の出力信号は、ＩＦ−ＲＥＱ−ＩＤ−ＥＱ−５信号でもある。
【００４４】
又は、全ての命令バッファの有効フラグが有効であったときには（ＩＢｉ＿ＶＡＬＩＤ（ｉ＝０〜５）＝”Ｈ”）、ＡＮＤ回路１１２−６の出力が”Ｈ”となる（Ｉ−ＢＵＦＦＥＲ−ＦＵＬＬ）。この場合、エンコーダ回路１１３は、全ての入力が”Ｌ”となり、ＩＦ−ＲＥＱ−ＩＤを出力しない。
【００４５】
以上のような構成により、命令バッファ＃０，＃１，＃２，＃３，＃４，＃５の順に、高い優先度が設けられ、有効フラグが無効の命令バッファ１の中から優先度の最も高い命令バッファの識別ＩＤが、ＩＦ−ＲＥＱ−ＩＤとして出力されるようになる。
【００４６】
続いて、図６は、命令フェッチ要求部１０に含まれる、命令フェッチ要求アドレス（ＩＦ−ＥＡＧ）を生成する回路の構成例を示した図である。
同図に示した回路は、再命令フェッチ要求が出されたときは、再命令フェッチ要求アドレスを出力し、再命令フェッチ要求ではなく分岐予測先命令フェッチ要求が出されたときは、分岐予測先命令フェッチ要求アドレスを出力し、又は再命令フェッチ要求及び分岐予測先命令フェッチ要求の何れも出されないときは（後続命令フェッチ要求が出されたときは）、３２バイトを加算することで生成される後続命令フェッチ要求アドレスを出力するように構成される。
【００４７】
このように、再命令フェッチ要求、分岐予測先命令フェッチ要求、後続命令フェッチ要求の順に、高い優先度が設けられるように構成され、その優先度に従って、対応する命令フェッチ要求アドレス（ＩＦ−ＥＡＧ）が出力される。
【００４８】
具体的には、再命令フェッチ要求が出された場合、すなわち、再命令フェッチ要求信号及び再命令フェッチ要求アドレスが入力された場合、再命令フェッチ要求信号（”Ｈ”）は、有効フラグＶとしてレジスタ１２１−１に格納されると共に、アンド回路１２６及びインバータ回路１２２へ入力される。尚、この再命令フェッチ要求信号は、同図のＲＥＩＦＣＨ−ＲＥＱ−ＧＯ信号でもある。また、再命令フェッチ要求アドレスは、ＲＥＩＦＣＨ−ＩＡＲとしてレジスタ１２１−１に格納されると共に、アンド回路２６へ入力される。一方、インバータ回路１２２の出力は、再命令フェッチ要求信号”Ｈ”が反転されて”Ｌ”となるため、その出力に接続されるアンド回路１２４及び１２５の出力は”Ｌ”とって、その出力に接続されるアンド回路１２７及び１２８の出力も”Ｌ”となる。従って、オア回路１２９の出力であるＩＦ−ＥＡＧは、アンド回路１２６の出力、すなわちＲＥＩＦＣＨ−ＩＡＲになる。
【００４９】
また、再命令フェッチ要求が出されずに分岐予測先命令フェッチ要求が出された場合、すなわち、分岐予測先命令フェッチ要求信号及び分岐予測先命令フェッチ要求アドレスが入力された場合、分岐予測先命令フェッチ要求信号（”Ｈ”）は、有効フラグＶ（ＴＡＲＧＥＴ−ＶＡＬＩＤ）としてレジスタ１２１−２（第ニのレジスタ）に格納されると共に、アンド回路１２４及びインバータ回路１２３へ入力される。また、分岐予測先命令フェッチ要求アドレスは、ＴＡＲＧＥＴ−ＩＡＲとしてレジスタ１２１−２に格納されると共に、アンド回路１２７へ入力される。一方、再命令フェッチ要求は行われていないので、アンド回路１２６の出力は”Ｌ”となり、またインバータ回路１２２の出力は”Ｈ”となってアンド回路１２４の出力は”Ｈ”となる。尚、このアンド回路１２４の出力信号は、同図のＴＡＲＧＥＴ−ＲＥＱ−ＧＯ信号でもある。また、インバータ回路１２３の出力は、分岐予測先命令フェッチ要求信号”Ｈ”が反転されて”Ｌ”となり、その出力に接続されるＡＮＤ回路１２５の出力は”Ｌ”となって、その出力に接続されるＡＮＤ回路１２８の出力も”Ｌ”になる。従って、オア回路１２９の出力であるＩＦ−ＥＡＧは、アンド回路１２７の出力、すなわちＴＡＧＥＴ−ＩＡＲになる。
【００５０】
また、レジスタ１２１−２には、ＩＭ−ＩＤがＯＲＧ−ＩＤ（ＴＡＲＧＥＴ−ＯＲＧ−ＩＤ，分岐予測先命令フェッチ要求元情報）として格納される。尚、ＩＭ−ＩＤは、分岐予測が行われたときのＩＦ−ＲＥＱ−ＩＤであり、その分岐予測が前述の５つのステージ中のＩＭステージで行われたことを示している。これにより、分岐予測先命令フェッチ要求が出されたときに、その分岐予測先命令フェッチ要求元に対応する命令バッファの識別ＩＤを保持することが可能になり、分岐予測先命令フェッチ要求に対応する命令バッファの識別ＩＤとの関連付けが可能になる。
【００５１】
また、再命令フェッチ要求及び分岐予測先命令フェッチ要求が出されない場合（後続命令フェッチ要求が出された場合）、命令フェッチ要求信号（ＩＦ−ＲＥＱ−ＶＡＬＩＤ＝”Ｈ”）は、有効フラグＶ（ＳＥＱＵＥＮＴＩＡＬ−ＶＡＬＩＤ）としてレジスタ１２１−３（第一のレジスタ）に格納されると共に、アンド回路１２５へ入力される。また、加算器１３０によりＩＦ−ＥＡＧに３２バイトを加算して生成された後続命令フェッチ要求アドレスがＳＥＱＵＥＮＴＩＡＬ−ＩＡＲとしてレジスタ１２１−３に格納されると共に、アンド回路１２８へ入力される。一方、再命令フェッチ要求及び分岐予測先命令フェッチ要求は行われていないので、ＲＥＩＦＣＨ−ＲＥＱ−ＧＯ及びＴＡＲＧＥＴ−ＲＥＱ−ＧＯは”Ｌ”となり、アンド回路１２６及び１２７の出力は”Ｌ”となる。また、インバータ回路１２２及び１２３の出力は”Ｈ”となり、アンド回路１２５の出力は”Ｈ”となってアンド回路１２８へ入力される。従って、オア回路１２９の出力であるＩＦ−ＥＡＧは、アンド回路１２８の出力、すなわちＳＥＱＵＥＮＴＩＡＬ−ＩＡＲになる。尚、アンド回路１２５の出力信号は、同図のＳＥＱＵＥＮＴＩＡＬ−ＲＥＱ−ＧＯ信号でもある。
【００５２】
また、レジスタ１２１−３には、ＩＦ−ＲＥＱ−ＩＤがＯＲＧ−ＩＤ（ＳＥＱＵＥＮＴＩＡＬ−ＯＲＧ−ＩＤ，後続命令フェッチ要求元情報）として格納される。これにより、後続命令フェッチ要求が出されたときに、その後続命令フェッチ要求元に対応する命令バッファの識別ＩＤが保持され、後続命令フェッチ要求に対応する命令バッファの識別ＩＤとの関連付けが可能になる。
【００５３】
尚、レジスタ１２１−１にＩＦ−ＲＥＱ−ＩＤが格納されないのは、再命令フェッチ要求が出された場合には、各命令バッファのデータ部の有効フラグが全て無効にされて命令バッファ＃０から順に使用されるようになり、再命令フェッチ要求元に対応する命令バッファの識別ＩＤを保持する必要がないからである。
【００５４】
以上のような構成により、各命令フェッチ要求に対応した命令フェッチ要求アドレスが出力されるようになり、また、分岐予測先命令フェッチ要求元及び後続命令フェッチ要求元に対応する命令バッファの識別ＩＤ等が保持されるようになる。
【００５５】
次に、命令バッファのポインタ部に保持される情報について説明する。尚、この情報は、命令フェッチ制御部１３により格納（設定）されるものである。
図７は、命令バッファのポインタ部に保持される情報の一例を示した図である。
【００５６】
同図に示したように、ポインタ部には、有効フラグ（Ｖａｌｉｄ）、命令フェッチアドレス（ＩＡＲ）、分岐成立予測フラグ（Ｐｒｅｄｉｃｔｅｄ）、分岐成立予測命令オフセット（Ｐｒｅｄ−Ｏｆｆｓｅｔ）、後続命令バッファ識別子（Ｎｅｘｔ−ＩＤ，第一の指示情報）、Ｎｅｘｔ−ＩＤ指示有効フラグ（Ｎｅｘｔ−Ｖａｌｉｄ）、分岐予測先命令バッファ識別子（Ｔａｒｇｅｔ−ＩＤ，第二の指示情報）、及びＴａｒｇｅｔ−ＩＤ指示有効フラグ（Ｔａｒｇｅｔ−Ｖａｌｉｄ）等の情報が保持される。
【００５７】
有効フラグは、前述した通り、当該命令バッファが有効であるか無効であるかを示すフラグである。
命令フェッチアドレス（ＩＡＲ）は、当該命令バッファのデータ部に格納された命令列に対応する命令フェッチアドレス（ＩＦ−ＥＡＧ）である。
【００５８】
これらの有効フラグ及び命令フェッチアドレスは、命令フェッチ要求が出されて、ＩＦ−ＲＥＱ−ＩＤに対応する命令バッファ１に、ＩＦ−ＥＡＧに対応する命令列が格納されたときに、そのポインタ部に設定されるものである。
【００５９】
分岐成立予測フラグは、当該命令バッファ内に格納されている命令列に分岐成立が予測された命令が含まれているか否かを示すフラグである。
分岐成立予測命令オフセットは、当該命令バッファに保持されている命令列に分岐成立が予測された命令が含まれていた場合の、その予測された命令の命令列上の位置を示すものである。このように、分岐成立予測命令オフセットを保持させることにより、命令発行時に分岐成立が予測されている命令位置の判定が容易になる。
【００６０】
これら分岐成立予測フラグ及び分岐成立予測命令オフセットは、前述の分岐予測部３から得られる情報に基づいて設定されるものである。
後続命令バッファ識別子は、当該命令バッファに保持されている命令列の次に供給する後続の命令列が保持されている命令バッファの識別子を指示するものであり、当該命令バッファ１に対応する後続命令フェッチ要求が出されたときに設定される。
【００６１】
Ｎｅｘｔ−ＩＤ指示有効フラグは、後続命令バッファ識別子が有効であるか否かを示すフラグであり、後続命令バッファ識別子が設定されるときに、有効を示すフラグが設定される。
【００６２】
分岐予測先命令バッファ識別子は、当該命令バッファに保持されている命令列の次に供給する分岐予測先の命令列が保持されている命令バッファの識別子を指示するものであり、当該命令バッファに対応する分岐予測先命令フェッチ要求が出されたときに設定される。
【００６３】
Ｔａｒｇｅｔ−ＩＤ指示有効フラグは、分岐予測先命令バッファ識別子が有効であるか否かを示すフラグであり、分岐予測先命令バッファ識別子が設定されるときに、有効を示すフラグが設定される。
【００６４】
尚、同図では、ポインタ部にこれらの情報が保持される構成を示しているが、ポインタ部に保持される情報はこれらに限定されるものではなく、少なくとも、後続命令バッファ識別子、Ｎｅｘｔ−ＩＤ指示有効フラグ、分岐予測先命令バッファ識別子、及びＴａｒｇｅｔ−ＩＤ指示有効フラグが、ポインタ部に保持される構成であれば良い。
【００６５】
図８は、ループ接続を試みる条件生成回路の構成例を示す図である。
なお、同図の回路は、図４の命令フェッチ制御部１３に含まれるべきものである。
【００６６】
まず、ＩＭサイクルでブランチヒストリにヒットし（ＩＭ　ＢＲＨＩＳ　ＨＩＴ）、かつ、ＩＭサイクルでブランチヒストリにループが発見された（ＩＭ　ＢＲＨＩＳ　ＬＯＯＰ　ＩＮＳＴ）場合には、フリップフロップ２０をセットし、ループの接続を指示する信号（ＬＯＯＰ　ＣＯＮＮＥＣＴ　ＧＯ）が出力される。ブランチヒストリにおいてループを発見する方法は、ループを形成すると考えられる命令の検出や、ブランチヒストリ内に同じ命令を繰り返し実行している部分を検出することによって行う。
【００６７】
また、同図の回路では、再命令フェッチ要求が入力された場合や、命令フェッチ要求が有効（ＩＦ　ＲＥＱ　ＶＡＬＩＤ）であり、かつ、接続先の命令の取得要求を始めるべき旨の信号（ＴＡＲＧＥＴ　ＲＥＱ　ＧＯ）であると、フリップフロップ２０をリセットして、ループの接続を指示する信号（ＬＯＯＰ　ＣＯＮＮＥＣＴ　ＧＯ）の信号をリセットする。
【００６８】
接続に成功した場合、命令バッファは何度も繰り返し使われることになるので、接続が解除する必要がない限りは、命令発行後（命令バッファからの必要な命令全てを供給後）の無効化（解放）をしないようにする。
【００６９】
図９は、ループ接続を考慮した命令バッファ有効フラグを設定する回路例を示す図である。なお、同図の回路は、図４の命令フェッチ制御部に設けられるべきものである。
【００７０】
同図においては、命令フェッチ要求が有効（ＩＦ　ＲＥＱ　ＶＡＬＩＤ）であり、かつ、命令フェッチ要求先のバッファ番号がｘに等しいことを示す信号（ＩＦ　ＲＥＱ　ＩＤ　ＥＱ　ｘ）が入力されるとフリップフロップ２２をセットして、ｘ番の命令バッファが有効であるフラグ（ＩＢｘ　ＶＡＬＩＤ）が設定される。同図の回路は、命令バッファの個数分設けられるものであって、ｘ番の値が命令バッファをそれぞれ区別する。
【００７１】
再命令フェッチ要求、あるいは、ｘ番の命令バッファの命令フェッチのキャンセル、あるいは、ｘ番の命令フェッチが終了し（ＲＥＬＥＡＳＥ　ＩＦ　ＩＤ　ｘ）、かつ、ループが接続中である（ＬＯＯＰ　ＣＯＮＮＥＣＴＩＮＧ）場合には、フリップフロップ２２をリセットして、ｘ番の命令バッファの有効フラグをリセットする。
【００７２】
また、分岐予測の遅延による先行投機フェッチのキャンセルなど、命令投入以外の理由による部分キャンセルが発生しうる場合、せっかくできあがった環状構造がこれらのキャンセルによって分断され、命令供給がハングアップしてしまう危険性がある。特に、接続が、このキャンセルされてしまうものに対して行われることも原理的にはあり得るので考慮が必要である。対策としては、前記と同様に、このケースについてもキャンセル動作を抑制してしまうことがある。
【００７３】
もう一つの対策として、このケースのキャンセルを見越し、これに対して予め接続しない（接続対象から外す）ようにしてしまうことができる。本実施形態の場合、接続可能タイミングを分岐予測先（ターゲット）フェッチ要求時に限定すると、分岐予測待ちによる投機フェッチはキャンセル済みになっているので都合が良い。
【００７４】
図１０は、ループ接続を考慮した分岐予測先識別子設定回路の回路例を示した図である。
同図は、図４の命令フェッチ制御部１３に設けられるべき回路である。また、同回路は、命令バッファの数だけ設けられ、それぞれは、各命令バッファに対応する。信号の名前に付くｘは、各命令バッファを区別するものである。
【００７５】
同図において、接続先（分岐予測先）要求が行われ（ＴＡＲＧＥＴ　ＲＥＱ　ＧＯ）、命令フェッチ要求が有効で（ＩＦ　ＲＥＱ　ＶＡＬＩＤ）、かつ、分岐予測元の命令バッファばｘ番（ＴＡＲＧＥＴ　ＯＲＧ　ＩＤ　ＥＱ　ｘ）である場合には、フリップフロップ２４をセットし、ｘ番の命令バッファが有効である（ｘ
Ｔａｒｇｅｔ　Ｖａｌｉｄ）信号を出す。また、再命令フェッチ要求や、ｘ番の命令バッファの命令要求のキャンセル（ＣＡＮＣＥＬ　ＩＦ　ＩＤ　ｘ）、あるいは、ｘ番の命令バッファの命令の実行終了（ＲＥＬＥＡＳＥ　ＩＦ　ＩＤ　ｘ）が入力されると、フリップフロップ２４はリセットされ、ｘ　ＴａｒｇｅｔＶａｌｉｄがリセットされる。
【００７６】
命令フェッチ要求のアドレス（ＩＦ　ＥＡＧ）と、０番の命令バッファのアドレス（ＩＢ０　ＩＡＲ）が等しく、ループを接続すべき指示（ＬＯＯＰ　ＣＯＮＮＥＣＴ　ＧＯ）が合った場合には、フリップフロップ２６には、０の値がセットされ、ｘ番の命令バッファの接続先命令バッファとして、０番の命令バッファが指定される（ｘ　ｔａｒｇｅｔ　ＩＤ＝０）。しかし、上記の条件がそろわない場合には、命令フェッチ要求によって指示される命令バッファ番号（ＩＦ　ＲＥＱ　ＩＤ）がフリップフロップ２６に入力され、ｘ　ｔａｒｇｅｔ　ＩＤとして命令フェッチ要求によって指示される命令バッファ番号が出力される。ただし、これは、ｘ　Ｔａｒｇｅｔ　Ｖａｌｉｄがセットされている場合に限る。
【００７７】
また、ＩＦ　ＥＡＧとＩＢ０　ＩＡＲが等しく、ループ生成指示（ＬＯＯＰ　ＣＯＮＮＥＣＴ　ＧＯ）がある場合であって、更に、接続先命令要求がなされ（ＴＡＲＧＥＴ　ＲＥＱ　ＧＯ）、かつ、命令フェッチ要求が有効（ＩＦ　ＲＥＱＶＡＬＩＤ）である場合には、ループの接続が成功した旨の信号（ＳＵＣＣＥＳＳ
ＬＯＯＰ　ＣＯＮＮＥＣＴ）が出力されると共に、この信号がフリップフロップ２８に入力され、ループが接続されている状態であることを示す信号（ＬＯＯＰ　ＣＯＮＮＥＣＴＩＮＧ）が出力される。しかし、再命令フェッチ要求やループ解除成功の信号が入力された場合には、フリップフロップ２８はリセットされ、ループの接続状態が終わったことを示すために、ＬＯＯＰ　ＣＯＮＮＥＣＴＩＮＧがリセットされる。
【００７８】
分岐予測先命令フェッチを行おうとしている元の命令バッファの識別子がｐであり、ここで発行される命令フェッチ要求で確保される命令バッファの識別子（ＩＦ　ＲＥＱ　ＩＤ）がｑであったとする。通常はＩＢ＃ｐの論理的後続がＩＢ＃ｑになるようにポインタ設定をするが、ここで、ＩＢ＃ｐの論理的後続がＩＢ＃０になるように設定してしまう。例えば、この場合、分岐予測先命令フェッチに対応するのだから、分岐予測先命令バッファの識別子（ｐ　ＴＡＲＧＥＴ　ＩＤ）が０になるようにすれば良い。
【００７９】
なお、同図では、ループを形成する場合の接続先を０番の命令バッファとしていたが、これは、図示する回路を簡単化するためであって、実際には、任意の命令バッファ同士を接続して、ループを形成しても良い。
【００８０】
ここまでで述べてきた接続状態、すなわち命令バッファで閉じてしまった環状構造を、解除する方法を述べる。
前述の実施形態より、ｐ→ｑとなるはずの関係をｐ→０にしており、かつＩＢ＃ｑに対応する命令フェッチ要求は出している（抑制やキャンセルをしていない）。したがって、ｐ→ｑの関係に戻してループ接続を解き放てば（同時に、抑制していたキャンセルの抑制も解除）、通常通りの動作に戻る。
【００８１】
図１１は、ループ解除のための回路例を示す図である。
同図は、図４の命令フェッチ制御部に設けられるべき回路であり、また、命令バッファの数だけ設けられるものである。
【００８２】
同図のＳＵＣＣＥＳＳ　ＬＯＯＰ　ＲＥＬＥＡＳＥ信号は、図１０のループ解除成功を示す信号と同じものである。
フリップフロップ３０は、再命令フェッチ要求あるいは、ＳＵＣＣＥＳＳ　ＬＯＯＰ　ＲＥＬＥＡＳＥ信号が入力されるとリセットされる。また、ＩＦ　ＥＡＧとＩＢ０　ＩＡＲが等しく、かつ、ループを形成すべき指示信号（ＬＯＯＰ　ＣＯＮＮＥＣＴ　ＧＯ）がある場合であり、かつ、分岐先命令フェッチ要求の実行指示信号（ＴＡＲＧＥＴ　ＲＥＱ　ＧＯ）と命令フェッチ要求が有効（ＩＦ　ＲＥＱ　ＶＡＬＩＤ）である場合には、ＳＵＣＣＥＳＳ　ＬＯＯＰ　ＣＯＮＮＥＣＴ信号を出力すると共に、フリップフロップ３０をセットして、ＬＯＯＰ　ＣＯＮＮＥＣＴＩＮＧ信号を出力させる。
【００８３】
また、命令フェッチする命令バッファの番号（ＩＦ　ＲＥＱ　ＩＤ）は、フリップフロップ３２に入力され、ＬＯＯＰ　ＣＯＮＮＥＣＴＩＮＧが出力されている間は、ループ形成に必要な接続先命令バッファＩＤを維持させる（Ｒｅｔａｉｎ　ｔａｒｇｅｔ　ＩＤ）。また、ＬＯＯＰ　ＣＯＮＮＥＣＴＩＮＧが出力され、Ｒｅｔａｉｎ　ｔａｒｇｅｔ　ＩＤがフリップフロップ３４に入力され、ループ解除要求が無く、ｘ番の接続先命令バッファが有効（ｘ　Ｔａｒｇｅｔ　Ｖａｌｉｄ）の場合には、Ｒｅｔａｉｎ　ｔａｒｇｅｔ　ＩＤの命令バッファの番号がｘ　ｔａｒｇｅｔ　ＩＤとして出力される。
【００８４】
ＬＯＯＰ　ＣＯＮＮＥＣＴＩＮＧが論理値偽であり、ＩＦ　ＥＡＧとＩＢ０
ＩＡＲと等しくないか、ＬＯＯＰ　ＣＯＮＮＥＣＴ　ＧＯが論理値偽の場合には、ＩＦ　ＲＥＱ　ＩＤの値がｘ　ｔａｒｇｅｔ　ＩＤとして出力される。これは、命令フェッチ要求が通常のように入力された場合には、命令フェッチ要求に従って、命令フェッチをすることを意味する。
【００８５】
まら、ループ解除要求がなく、ｘ　Ｔａｒｇｅｔ　Ｖａｌｉｄが論理値真の場合には、フリップフロップ３６がセットされ、ループの解除途中である旨の信号（Ｌｏｏｐ　Ｒｅｌｅａｓｅ　Ｐｅｎｄｉｎｇ）が出力され、再命令フェッチ要求あるいは、ＳＵＣＣＥＳＳ　ＬＯＯＰ　ＲＥＬＥＡＳＥが入力された場合には、Ｌｏｏｐ　Ｒｅｌｅａｓｅ　Ｐｅｎｄｉｎｇがリセットされる。また、Ｌｏｏｐ
Ｒｅｌｅａｓｅ　Ｐｅｎｄｉｎｇと現在の命令バッファの番号がｘに等しい（Ｃｕｒｒｅｎｔ　ＩＤ　ｅｑ　ｘ）場合には、ＳＵＣＣＥＳＳ　ＬＯＯＰ　ＲＥＬＥＡＳＥが出力され、ループ解除が成功したことが出力される。
【００８６】
（付記１）複数の命令バッファと、該命令バッファに対応し、命令バッファの接続関係を示すポインタ部とを有する命令バッファ手段と、
命令フェッチ要求とは異なった命令バッファ間の接続関係を、確立させる接続関係確立手段と、
を備えることを特徴とする命令フェッチ制御装置。
【００８７】
（付記２）ある命令バッファ内の命令に対し論理的に後続となる命令アドレスが、有効な命令バッファ内のアドレス範囲内にある場合、該有効な命令バッファの該当するアドレスを該ある命令バッファの該命令の接続先とすることを特徴とする付記１に記載の命令フェッチ制御装置。
【００８８】
（付記３）ある命令バッファ内の命令に対し論理的に後続となる命令アドレスが、有効な複数の命令バッファのいずれかの先頭命令アドレスに一致した場合に、該先頭命令アドレスを該ある命令バッファの該命令の接続先とすることを特徴とする付記１に記載の命令フェッチ制御装置。
【００８９】
（付記４）命令バッファ内に、分岐命令の存在が判明あるいは予想された場合、既に命令を格納している有効な複数の命令バッファの中の分岐先に対応する命令列に対して、分岐元命令から該分岐先命令に接続関係を付けることを特徴とする付記１に記載の命令フェッチ制御装置。
【００９０】
（付記５）前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させる命令は、分岐命令あるいは分岐の存在が予想される場合であることを特徴とする付記１に記載の命令フェッチ制御装置。
【００９１】
（付記６）前記分岐命令の内、無条件分岐あるいは高確率で分岐すると予想される分岐命令に限って、前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させることを特徴とする付記５に記載の命令フェッチ制御装置。
【００９２】
（付記７）前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させる前記命令は、分岐予測機構から、命令実行のループを検出することにより決定することを特徴とする付記１に記載の命令フェッチ制御装置。
【００９３】
（付記８）前記命令フェッチと異なる接続関係が成り立った命令バッファ間の関係を解除する手段を更に備えたことを特徴とする付記１に記載の命令フェッチ制御装置。
【００９４】
（付記９）複数の命令バッファと、該命令バッファに対応し、命令バッファの接続関係を示すポインタ部とを設ける命令バッファステップと、
命令フェッチ要求とは異なった命令バッファ間の接続関係を、確立させる接続関係確立ステップと、
を備えることを特徴とする命令フェッチ制御方法。
【００９５】
（付記１０）ある命令バッファ内の命令に対し論理的に後続となる命令アドレスが、有効な命令バッファ内のアドレス範囲内にある場合、該有効な命令バッファの該当するアドレスを該ある命令バッファの該命令の接続先とすることを特徴とする付記９に記載の命令フェッチ制御方法。
【００９６】
（付記１１）ある命令バッファ内の命令に対し論理的に後続となる命令アドレスが、有効な複数の命令バッファのいずれかの先頭命令アドレスに一致した場合に、該先頭命令アドレスを該ある命令バッファの該命令の接続先とすることを特徴とする付記９に記載の命令フェッチ制御方法。
【００９７】
（付記１２）命令バッファ内に、分岐命令の存在が判明あるいは予想された場合、既に命令を格納している有効な複数の命令バッファの中の分岐先に対応する命令列に対して、分岐元命令から該分岐先命令に接続関係を付けることを特徴とする付記９に記載の命令フェッチ制御方法。
【００９８】
（付記１３）前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させる命令は、分岐命令あるいは分岐の存在が予想される場合であることを特徴とする付記９に記載の命令フェッチ制御方法。
【００９９】
（付記１４）前記分岐命令の内、無条件分岐あるいは高確率で分岐すると予想される分岐命令に限って、前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させることを特徴とする付記１３に記載の命令フェッチ制御方法。
【０１００】
（付記１５）前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させる前記命令は、分岐予測機構から、命令実行のループを検出することにより決定することを特徴とする付記９に記載の命令フェッチ制御方法。
【０１０１】
（付記１６）前記命令フェッチと異なる接続関係が成り立った命令バッファ間の関係を解除するステップを更に備えたことを特徴とする付記９に記載の命令フェッチ制御方法。
【０１０２】
【発明の効果】
以上にのべたように、本発明は、命令バッファ内に格納されている命令間でループするとき、繰り返し実行の度に分岐予測にようする時間がないので、特にショートループをなすケースで顕著に、情報処理装置の性能向上に大きく寄与する。
【図面の簡単な説明】
【図１】本発明の実施形態で使用する命令バッファを概略説明する図である。
【図２】本発明の実施形態で用いる命令バッファを用いた本発明の実施形態の概念説明図である。
【図３】本発明の実施形態の効果を説明する図である。
【図４】本発明の実施形態が適用される情報処理装置の要部構成例である。
【図５】命令フェッチ要求部１０に含まれる、ＩＦ−ＲＥＱ−ＩＤを生成する回路の構成例を示した図である。
【図６】命令フェッチ要求部１０に含まれる、命令フェッチ要求アドレス（ＩＦ−ＥＡＧ）を生成する回路の構成例を示した図である。
【図７】命令バッファのポインタ部に保持される情報の一例を示した図である。
【図８】ループ接続を試みる条件生成回路の構成例を示す図である。
【図９】ループ接続を考慮した命令バッファ有効フラグを設定する回路例を示す図である。
【図１０】ループ接続を考慮した分岐予測先識別子設定回路の回路例を示した図である。
【図１１】ループ解除のための回路例を示す図である。
【図１２】従来の問題点を説明する図（その１）である。
【図１３】従来の問題点を説明する図（その２）である。
【符号の説明】
１０　　　命令フェッチ要求部
１１　　　分岐予測部
１２　　　命令キャッシュ
１３　　　命令フェッチ制御部
１４　　　命令バッファ
１５　　　命令供給制御部
１６　　　命令デコード部
２０、２２、２４、２６、２８、３０、３２、３４、３６　　　フリップフロップ
【図１】
2004038337.tif 000003
【図２】
2004038337.tif 000004
【図３】
2004038337.tif 000005
【図４】
2004038337.tif 000006
【図５】
2004038337.tif 000007
【図６】
2004038337.tif 000008
【図７】
2004038337.tif 000009
【図８】
2004038337.tif 000010
【図９】
2004038337.tif 000011
【図１０】
2004038337.tif 000012
【図１１】
2004038337.tif 000013
【図１２】
2004038337.tif 000014
【図１３】
2004038337.tif 000015