(57)【特許請求の範囲】
【請求項１】
主記憶装置に接続する演算処理装置において、
前記主記憶装置が記憶するデータの一部を記憶するキャッシュメモリと、
前記キャッシュメモリからの命令フェッチデータを保持する命令バッファと、
複数のエントリを有するとともに、前記キャッシュメモリから前記主記憶装置に出力する命令フェッチリクエストを前記複数のエントリのいずれかに保持するムーブインバッファと、
前記命令バッファに空きがあるか否かを判定する命令バッファ判定部と、
前記ムーブインバッファに所定数以上のエントリの空きがあるか否かを判定するムーブインバッファ判定部と、
前記キャッシュメモリが、他のキャッシュメモリまたは前記主記憶装置からの応答待ちもしくは前記他のキャッシュメモリからのリクエストによって、命令フェッチ要求を新たに受け付けられない状態であるか否かを判定するキャッシュメモリ判定部と、
前記キャッシュメモリ判定部が前記命令フェッチ要求を前記キャッシュメモリが新たに受け付けられない状態であると判定する、又は、前記命令バッファ判定部が前記命令バッファに空きがないと判定し且つ前記ムーブインバッファ判定部が前記ムーブインバッファに所定数以上のエントリの空きがあると判定する場合、前記キャッシュメモリのキャッシュラインのラインサイズに従ったアドレス境界で命令プリフェッチ要求を前記キャッシュメモリに出力する命令制御部と、
を有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置はさらに、
命令が分岐するか否かを判定し、分岐すると判定した場合、分岐先のアドレスを予測する分岐予測部を有し、
前記命令制御部は、
前記キャッシュメモリ判定部が前記命令フェッチ要求を前記キャッシュメモリが新たに受け付けられない状態であると判定する、又は、前記命令バッファ判定部が前記命令バッファに空きがないと判定し且つ前記ムーブインバッファ判定部が前記ムーブインバッファに所定数以上のエントリの空きがあると判定し、かつ、前記分岐予測部によって前記分岐先のアドレスが予測された場合、前記分岐先のアドレスを用いて、前記命令プリフェッチ要求を前記キャッシュメモリに出力することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
主記憶装置に接続するとともに、前記主記憶装置が記憶するデータの一部を記憶するキャッシュメモリと、前記キャッシュメモリからの命令フェッチデータを保持する命令バッファと、複数のエントリを有するとともに前記キャッシュメモリから前記主記憶装置に出力する命令フェッチリクエストを前記複数のエントリのいずれかに保持するムーブインバッファと、前記命令バッファに空きがあるか否かを判定する命令バッファ判定部とを有する演算処理装置の制御方法において、
前記演算処理装置が有するムーブインバッファ判定部が、前記ムーブインバッファに所定数以上のエントリの空きがあるか否かを判定し、
前記演算処理装置が有するキャッシュメモリ判定部が、他のキャッシュメモリまたは前記主記憶装置からの応答待ちもしくは前記他のキャッシュメモリからのリクエストによって、前記キャッシュメモリが、命令フェッチ要求を新たに受け付けられない状態であるか否かを判定し、
前記演算処理装置が有する命令制御部が、前記キャッシュメモリ判定部が前記命令フェッチ要求を前記キャッシュメモリが新たに受け付けられない状態であると判定する、又は、前記命令バッファ判定部が前記命令バッファに空きがないと判定し且つ前記ムーブインバッファ判定部が前記ムーブインバッファに所定数以上のエントリの空きがあると判定する場合、前記キャッシュメモリのキャッシュラインのラインサイズに従ったアドレス境界で命令プリフェッチ要求を前記キャッシュメモリに出力することを特徴とする演算処理装置の制御方法。
【請求項４】
前記演算処理装置が有する分岐予測部が、命令が分岐するか否かを判定し、分岐すると判定した場合、分岐先のアドレスを予測し、
前記演算処理装置が有する前記命令制御部が、前記キャッシュメモリ判定部が前記命令フェッチ要求を前記キャッシュメモリが新たに受け付けられない状態であると判定する、又は、前記命令バッファ判定部が前記命令バッファに空きがないと判定し且つ前記ムーブインバッファ判定部が前記ムーブインバッファに所定数以上のエントリの空きがあると判定し、かつ、前記分岐予測部が前記分岐先のアドレスを予測した場合、前記分岐先のアドレスを用いて、前記命令プリフェッチ要求を前記キャッシュメモリに出力することを特徴とする請求項３に記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令制御装置、命令制御方法および演算回路に関する。
【背景技術】
【０００２】
従来より、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などのプロセッサでは、将来に実行が予測される命令をメインメモリからキャッシュメモリ等のより高速なメモリに予め読み込んでおき、プロセッサの性能の向上を図る命令プリフェッチ制御が利用されている。
【０００３】
プロセッサは、メインメモリ、１次キャッシュ（Ｌ１キャッシュ）、２次キャッシュ（Ｌ２キャッシュ）、命令制御部、デコーダ部などの機能部を有している。メインメモリは、データやプログラムなどを記憶する主記憶装置であり、ＣＰＵなどの情報処理装置が直接読み書きできるＲＡＭ（Random  Access  Memory）やＲＯＭ（Read  Only  Memory）などの半導体記憶装置である。
【０００４】
２次キャッシュは、メインメモリに記憶される比較的利用頻度の高いデータや命令を記憶するキャッシュメモリであって、メインメモリより高速なアクセスを可能とするキャッシュメモリである。１次キャッシュは、２次キャッシュに記憶される情報よりも利用頻度の高いデータ（命令やデータ）を記憶する２次キャッシュより高速なキャッシュメモリである。
【０００５】
命令制御部は、命令のフェッチやプリフェッチ制御を行う制御部であり、デコーダ部は、命令制御部により読み出された命令をデコードして実行する制御部である。もっとも、プロセッサは、上述した機能部以外にも、例えば、次に実行する命令アドレスを示すプログラムカウンタや命令の実行完了判定であるコミット判定など他の一般的な機能部を有していてもよい。
【０００６】
ところで、上述した命令プリフェッチ制御は、上記命令制御部とＬ１キャッシュの両方で独立して実行される。命令制御部では、Ｌ１キャッシュから送られる命令フェッチデータを一時的に保持する命令バッファに空きがない場合にのみ、命令フェッチリクエストをプリフェッチリクエストに差し替えていた。この場合、Ｌ１キャッシュは、プリフェッチリクエストに対してキャッシュヒットしたか否かに関わらず、必ずしも命令制御部に命令を応答する必要はない。また、命令フェッチのアドレスは、命令バッファ１エントリ分のデータ容量に依存する。命令バッファ１エントリ分の容量は、例えば３２バイトなので命令フェッチアドレスは３２バイトアドレス境界（単位）で発行する。したがって、命令プリフェッチも同様であり、Ｌ１キャッシュのキャッシュラインは１ライン１２８バイトなので、同一ラインへのリクエストを何度も発行していた。
【０００７】
一方、Ｌ１キャッシュは、Ｌ２キャッシュからのリクエストまたは他のＬ１キャッシュからＬ２キャッシュへのリクエストにより、命令制御部から新規命令フェッチリクエストを受け付けられない場合に、Ｌ２キャッシュに対してプリフェッチリクエストを発行していた。ところが、Ｌ１キャッシュは、分岐予測機構を参照できないため、実際は分岐予測先アドレスでリクエストを発行すべきところをシーケンシャル方向、言い換えると、例えば、命令実行順序方向や命令実行するアドレス方向で発行することがあった。
【０００８】
ここで、図１３を用いて、上述した処理を具体的に説明する。従来技術に係るプロセッサの命令制御部は、命令フェッチ要求が出力できると判断した場合には（ステップＳ５０１ＹＥＳ）、命令フェッチ要求をＬ１キャッシュに出力する（ステップＳ５０２）。
【０００９】
ところが、従来技術に係るプロセッサの命令制御部は、命令フェッチ要求が出力できないと判断した場合には（ステップＳ５０１ＮＯ）、命令プリフェッチ要求がＬ１キャッシュに出力できるかを判定する（ステップＳ５０３）。ここで、プロセッサの命令制御部は、命令バッファに空きがないため命令プリフェッチ要求を出力できないと判定した場合には（ステップＳ５０３ＮＯ）、ステップＳ５０１に戻って処理を繰り返す。
【００１０】
一方、プロセッサの命令制御部は、命令バッファに空きがあり命令プリフェッチ要求を出力できると判定した場合には（ステップＳ５０３ＹＥＳ）、中断している命令フェッチは分岐予測のターゲットか否かを判定する（ステップＳ５０４）。言い換えると、例えば、プロセッサの命令制御部は、領域不足等で実行できない、本来なら実行したい命令フェッチ要求先のアドレスが分岐予測機構から分岐予測された分岐予測アドレス（分岐先アドレス）であるか否かを判定する。
【００１１】
中断している命令フェッチが分岐予測のターゲットである場合（ステップＳ５０４ＹＥＳ）、プロセッサの命令制御部は、分岐予測機構によって予測された分岐先アドレスを用いて命令プリフェッチ要求をＬ１キャッシュに出力する（ステップＳ５０５）。その後、ステップＳ５０１に戻って以降の処理を繰り返す。言い換えると、例えば、プロセッサの命令制御部は、領域不足等で実行できない、本来なら実行した命令フェッチ要求先のアドレスが分岐予測機構から分岐予測された分岐先アドレスである場合に、命令プリフェッチ要求をＬ１キャッシュに出力する。
【００１２】
また、中断している命令フェッチが分岐予測のターゲットでない場合（ステップＳ５０４ＮＯ）、プロセッサの命令制御部は、アドレスに３２バイト加算した新たなアドレスで分岐予測を行うことを分岐予測機構に要求する（ステップＳ５０６）。言い換えると、例えば、命令制御部は、領域不足等で実行できない、本来なら実行したい命令フェッチ要求先のアドレスが分岐予測機構から分岐予測された分岐先アドレスでない場合に、上記新たなアドレスで分岐予測を行うことを分岐予測機構に要求する。
【００１３】
その後、分岐予測機構によって分岐予測された場合には（ステップＳ５０７ＹＥＳ）、プロセッサの命令制御部は、ステップＳ５０５の処理を実行する。一方、プロセッサの命令制御部は、分岐予測機構によって分岐予測されなかった場合には（ステップＳ５０７ＮＯ）、命令プリフェッチ要求をＬ１キャッシュに出力する（ステップＳ５０８）。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２０００−３５７０９０号公報
【特許文献２】特開平８−２７２６１０号公報
【特許文献３】特開２００１−１６６９３４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、上述した従来の技術では、不要な命令プリフェッチ要求などが発生し、プロセッサの性能低下に繋がってしまうという課題があった。具体的には、上述したように、命令フェッチ制御部とＬ１キャッシュが異なる条件で個別にプリフェッチを発行していた。そのため、実際に必要としない領域に対してリクエストを発行することや、必要な領域をリプレースするという現象が発生していた。プロセッサは、本来は不必要であるこれらの動作を実行してしまうことで、結果的に性能面で寄与しないケースや悪化してしまうケースが発生していた。
【００１６】
例えば、図１４に示すように、命令制御部は、Ｌ１キャッシュから受け付けた命令を保持する命令バッファに空きが無い場合に、命令フェッチが中断され、命令フェッチ要求を命令プリフェッチ要求に差し替えて、Ｌ１キャッシュに何度も出力する。一方、Ｌ１キャッシュは、命令制御部から出力される命令プリフェッチ要求に関係なく、Ｌ２キャッシュからのムーブイン要求等で新規命令フェッチリクエストを受け付けられない場合に、Ｌ２キャッシュに対して命令プリフェッチ要求を発行する。
【００１７】
また、図１５に示すように、命令制御部は、３回目の命令プリフェッチ要求を分岐予測機構によって予測された分岐予測先アドレスを用いた要求でＬ１キャッシュに発行する。この場合、Ｌ１キャッシュは、分岐予測先アドレスを用いて命令プリフェッチ要求を発行する必要があるが、分岐予測先機構を参照することができないため、通常通り、命令フェッチアドレスのシーケンシャル方向で発行してしまう。つまり、図１４や図１５からわかるように、命令制御部とＬ１キャッシュとの間で、命令プリフェッチ要求が連動していない。そのため、一方が正しく命令プリフェッチ要求を発行した場合であっても、もう一方が不要な命令プリフェッチ要求を発行してしまうなど、整合性がない命令プリフェッチ要求が乱立してしまう可能性がある。
【００１８】
開示の技術は、上記に鑑みてなされたものであって、不要な命令プリフェッチ要求などの発生を抑止し、プロセッサの性能低下を防止することが可能である命令制御装置、命令制御方法および演算回路を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本願の開示する命令制御装置は、一つの態様において、メインメモリに記憶されるデータのうち利用頻度の高いデータを記憶するキャッシュメモリと、前記キャッシュメモリから受信した命令フェッチデータを保存する命令バッファに空きがあるか否かを判定する第一空き領域判定部と、前記第一空き領域判定部によって、前記命令バッファに空きがあると判定された場合に、前記キャッシュメモリから前記メインメモリに送出する命令フェッチリクエストキューを管理する、前記キャッシュメモリ内のムーブインバッファに少なくとも２エントリ以上の空きがあるか否かを判定する第二空き領域判定部と、前記第二空き領域判定部によって前記キャッシュメモリ内のムーブインバッファに少なくとも２エントリ以上の空きがあると判定された場合に、前記キャッシュラインのラインサイズに従ったアドレス境界で命令プリフェッチ要求を前記キャッシュメモリに出力する命令制御部と、を有する。
【発明の効果】
【００２０】
本願の開示する命令制御装置、命令制御方法および演算回路の一つの態様によれば、不要な命令プリフェッチ要求などの発生を抑止し、プロセッサの性能低下を防止することが可能であるという効果を奏する。
【図面の簡単な説明】
【００２１】
【図１】図１は、実施例１に係る命令制御装置の構成を示すブロック図である。
【図２】図２は、ＩＢＵＦＦの構成とＬ１キャッシュとの接続関係を示す図である。
【図３】図３は、命令プリフェッチパイプ制御の例を示す図である。
【図４】図４は、命令フェッチパイプと命令プリフェッチパイプのパイプ制御の関係例を示す図である。
【図５】図５は、命令プリフェッチ制御を説明する図である。
【図６】図６は、分岐予測結果も用いた命令プリフェッチ制御を説明する図である。
【図７】図７は、実施例１に係る命令制御装置による処理の流れを示すフローチャートである。
【図８】図８は、サイクル３が命令フェッチリクエストの最後となる場合のタイムチャートである。
【図９】図９は、サイクル３が命令フェッチリクエストの最後となり、サイクル５で分岐すると予測された場合のタイムチャートである。
【図１０】図１０は、ＰＯＲＴ−ＢＵＳＹで命令フェッチリクエストが停止している場合のタイムチャートである。
【図１１】図１１は、サイクル５でサイクル３の命令フェッチが分岐すると予測された場合のタイムチャートである。
【図１２】図１２は、サイクル１２で命令フェッチが再開する場合のタイムチャートである。
【図１３】図１３は、従来の命令プリフェッチ制御処理の流れを示すフローチャートである。
【図１４】図１４は、従来の命令プリフェッチ制御を説明する図である。
【図１５】図１５は、従来の分岐予測結果も用いた命令プリフェッチ制御を説明する図である。
【発明を実施するための形態】
【００２２】
以下に、本願の開示する命令制御装置、命令制御方法および演算回路の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの開示する命令制御装置が限定されるものではない。
【実施例１】
【００２３】
開示する命令制御装置は、各種キャッシュメモリや分岐予測機構などと接続され、ＣＰＵやＭＰＵなどのプロセッサであり、コンピュータなどの情報処理装置に用いられる。また、開示する命令制御装置を有するプロセッサは、パイプライン方式を採用しており、さらに、アウトオブオーダーで命令を実行することで、高速な処理を実行することができる。そして、開示する命令制御装置は、Ｌ１キャッシュ部と命令制御部とで独立して行われていた命令プリフェッチ制御を命令制御部のみで実行することにより、不要な命令プリフェッチ要求などの発生を抑止し、プロセッサの性能低下を防止することができる。
【００２４】
そこで、実施例１では、開示する命令制御装置の構成、処理の流れ、タイムチャート、効果等について、図を用いて説明する。
【００２５】
［命令制御装置の構成］
まず、図１を用いて、実施例１に係る命令制御装置の構成について説明する。図１は、実施例１に係る命令制御装置の構成を示すブロック図である。
【００２６】
図１に示すように、命令制御装置１０は、分岐予測機構１１と、命令制御部１２と、Ｌ１キャッシュ部１３と、Ｌ２キャッシュ部１４、デコーダ部１５とを有する。もちろん、ここで例示した機能部は、あくまで例示であり、これら以外にもレジスタ、プログラムカウンタ、コミット部などプロセッサの一般的な機能部を有していてもよい。なお、分岐予測機構１１は、特許請求の範囲に記載の分岐予測部の一例であり、命令制御部１２は、特許請求の範囲に記載の第一空き領域判定部や命令制御部などの一例であり、Ｌ１キャッシュ部１３は、特許請求の範囲に記載の第二空き領域判定部の一例である。
【００２７】
分岐予測機構１１は、命令制御部１２と接続され、現在実行されている命令の後続の命令が分岐するかを予測し、分岐する場合は分岐先の命令を命令制御部１２のパイプラインに出力する。具体的には、分岐予測機構１１は、命令制御部１２から受け付けた命令フェッチアドレスを用いて分岐予測を行い、命令フェッチアドレスを受け付けたサイクルの次にサイクルで命令制御部１２に予測結果を出力する。なお、分岐予測手法は、単純予測、静的予測、次ライン予測など様々な手法があるが、いずれの手法でも用いることができる。
【００２８】
命令制御部１２は、命令フェッチ制御、命令プリフェッチ制御、デコーダ部への命令出力等を行う制御部であり、特に、ＩＢＵＦＦ１２ａと、ＩＦＥＡＧ１２ｂと、ＩＦＣＴＬ１２ｃとを有する。
【００２９】
ＩＢＵＦＦ１２ａは、Ｌ１キャッシュ部１３から取得した命令データをデコーダ部１５に供給するまで一時的に保存するバッファである。また、ＩＢＵＦＦ１２ａは、図２に示すように、３２バイト格納可能な６個のバッファ（ＩＢＲ０〜ＩＢＲ５）を有し、それぞれのバッファに対応して命令フェッチアドレスを記憶している。なお、図２は、ＩＢＵＦＦの構成とＬ１キャッシュとの接続関係を示す図である。
【００３０】
ＩＦＥＡＧ１２ｂは、命令フェッチアドレスや命令プリフェッチアドレスを生成して、Ｌ１キャッシュ部１３等に出力する処理部である。また、ＩＦＣＴＬ１２ｃは、命令フェッチ要求（命令フェッチリクエスト）や命令プリフェッチ要求（命令プリフェッチリクエスト）をＬ１キャッシュ部１３に出力する制御部である。
【００３１】
ここで、命令制御部１２が実行する命令フェッチ制御と命令プリフェッチ制御について説明する。
【００３２】
（命令フェッチ制御）
命令制御部１２が実行する命令フェッチ制御は、５サイクル（ＩＡ、ＩＴ、ＩＭ、ＩＢ、ＩＲ）の命令フェッチパイプ（パイプライン）で実行される。
【００３３】
（ＩＡサイクル）
ＩＡサイクルでは、命令制御部１２のＩＦＣＴＬ１２ｃは、先頭命令のアドレスがプログラムカウンタからＩＦＥＡＧ１２ｂに供給されると、先頭命令の命令フェッチ要求をＬ１キャッシュ部１３に送信する。また、ＩＦＥＡＧ１２ｂは、ＩＦＣＴＬ１２ｃからの命令フェッチ要求と同時に、Ｌ１キャッシュ部１３に命令フェッチアドレスを送信する。なお、命令フェッチは３２バイト単位でおこなわれ、１サイクルで１リクエスト送ることができる。
【００３４】
（ＩＴサイクル）
ＩＴサイクルでは、命令制御部１２のＩＦＥＡＧ１２ｂは、ＩＡサイクルで作成した命令フェッチアドレスを分岐予測機構１１に送信する。ここで、分岐予測機構１１は、受け付けた命令フェッチアドレスを用いて分岐予測を行う。
【００３５】
（ＩＭサイクル）
ＩＭサイクルでは、命令制御部１２のＩＦＣＴＬ１２ｃは、分岐予測機構１１から予測結果を受信し、ＩＦＥＡＧ１２ｂは、分岐予測機構１１から予測された分岐予測アドレスを受信する。なお、命令フェッチ要求は、最大ＩＢＵＦＦ１２ａのＩＢＲの数だけＬ１キャッシュ部１３に送ることができる。そのため、毎サイクル、命令フェッチを送ると最大６リクエスト分の命令フェッチパイプが動作していることになる。ＩＭサイクルで分岐すると予測された場合、分岐予測をおこなっているＩＴ、ＩＭサイクル２サイクルの間に＋３２バイト、＋６４バイトの２個のリクエストが送られていることになる。ところが、これらのリクエストは分岐予測結果に反していることになり不必要なリクエストであるため、ＩＢサイクルでキャンセルされる。
【００３６】
（ＩＢサイクル）
ＩＢサイクルでは、命令制御部１２のＩＦＣＴＬ１２ｃは、ＩＢＵＦＦ１２ａのいずれかのＩＢＲに空きがあった場合に、ＩＭサイクルで受信した分岐予測アドレスを用いた命令フェッチ要求をＬ１キャッシュ部１３に出力する。なお、ＩＢサイクルでは、Ｌ１キャッシュ部１３からＩＢＵＦＦ１２ａに対して命令データが送信される。
【００３７】
（ＩＲサイクル）
ＩＲサイクルでは、各ＩＢＲ０〜５内の命令データが有効であることを通知するＩＦ−ＳＴＶ信号がＬ１キャッシュ部１３から命令制御部１２のＩＦＣＴＬ１２ｃに送信される。ＩＲサイクルまで完了すると命令フェッチが完了したことになる。ＩＢＵＦＦ１２ａからデコーダ部１５への命令データ供給は最短でＩＲサイクルで行われる。ＩＢＲ１個は、３２バイトの命令データを保持しており、１命令が４バイトであり、デコーダ部１５が４命令を同時処理できることから、１〜２サイクルでデコーダ部１５への命令供給が可能である。全てのデータを供給したＩＢＲはクリアされ新しい命令フェッチ制御に使用される。
【００３８】
上述したように、通常、命令制御部１２は、毎サイクルで命令フェッチ要を送信することができるが、以下の場合は送信できなくなる。（条件１）ＩＢＵＦＦの６個のバッファ（ＩＢＲ０〜５）すべて使用中の場合、（条件２）Ｌ１キャッシュ部１３がキャッシュミスし、Ｌ２キャッシュ部１４からのムーブイン待ちもしくはＬ２キャッシュ部１４からのムーブアウト要求等で新規命令フェッチリクエストを受け付けられない場合である。
【００３９】
開示する命令制御装置では、上記（条件１）、（条件２）のいずれの事象が発生した場合であっても、Ｌ１キャッシュ部１３内のムーブイン・バッファ（ＭＩＢ）に空きがあれば、命令プリフェッチ制御をおこなうことができる。命令プリフェッチ制御をおこなうことで、Ｌ１キャッシュ部１３に命令データが存在しない場合に、早めにＬ２キャッシュ部１４に対してリクエストを送ることができる。命令プリフェッチ制御のリクエスト制御はＩＦＣＴＬ１２ｃでおこなわれ、アドレスはＩＦＥＡＧ１２ｂで作成される。命令プリフェッチ制御は、要求する命令データがＬ１キャッシュ部１３にヒットするか否かに関わらず条件がそろえば命令制御部１２からＬ１キャッシュ部１３に対しておこなわれる。
【００４０】
（命令プリフェッチ制御）
ここで、命令制御部１２が実行する命令プリフェッチ制御について説明する。命令制御部１２は、上述した命令フェッチ制御が上記（条件１）もしくは（条件２）の要因で停止している場合に、今後必要であると思われる先行アドレスに対して命令プリフェッチ制御を行う。また、命令制御部１２の命令フェッチ制御と同様に、分岐予測をおこないながら複数のアドレスに対して命令プリフェッチ制御を行うことも可能である。例えば、上記（条件１）の条件は、ＩＦＣＴＬ１２ｃ内で判断される。上記（条件２）の条件については、Ｌ１キャッシュ部１３から条件成立の１τ前（Ｌ１キャッシュ部１３がキャッシュミスした信号出力後）にＩＦＣＴＬ１２ｃに通知される。
【００４１】
なお、Ｌ１キャッシュ部１３は、命令制御部１２から指示された命令プリフェッチアドレスに対してキャッシュを検索し、ヒットしなかった場合は、Ｌ２キャッシュ部１４にリクエストを出力する。Ｌ１キャッシュ部１３は、キャッシュヒットするしないに関わらず要求された命令プリフェッチリクエストに対して命令データを命令制御部１２に送信（応答）する必要はない。
【００４２】
そして、命令制御部１２は、上述した６サイクルの命令フェッチパイプとは別に、独立した４パイプ（ＰＡ、ＰＴ、ＰＭ、ＰＢ）で命令プリフェッチ制御を行う。命令制御部１２は、命令フェッチパイプとは異なりＰＡ、ＰＴ、ＰＭサイクル時は他のＰＡ、ＰＴ、ＰＭサイクルを動作させることができないので、図３に示すようなパイプ制御を行うこととなる。なお、図３は、命令プリフェッチパイプ制御の例を示す図である。
【００４３】
また、命令制御部１２は、命令フェッチパイプと命令プリフェッチパイプを同時に実行する場合、ＩＡ、ＩＴ、ＩＭサイクル時はＰＡ、ＰＴ、ＰＭサイクルを動作できない。さらに、ＩＡ、ＰＡサイクルは同時に動作できない。ただし、ＰＴ、ＰＭ、ＰＢサイクル時に新規の命令フェッチパイプを動作は可能である。以上より、命令制御部１２は、命令フェッチパイプと命令プリフェッチパイプを同時に実行する場合、図４に示すようなパイプ制御を行うこととなる。なお、図４は、命令フェッチパイプと命令プリフェッチパイプのパイプ制御の関係例を示す図である。
【００４４】
命令制御部１２は、命令プリフェッチ要求をＰＡサイクルでＬ１キャッシュ部１３に送信する。ただし、命令制御部１２は、（条件３）分岐予測がおこなわれ分岐先アドレスが供給された場合に送信することができる。また、命令制御部１２は、（条件４）命令プリフェッチアドレスがＬ１キャッシュのラインアドレス境界を指している場合に、命令プリフェッチ要求をＬ１キャッシュ部１３に送信することができる。したがって、命令制御部１２は、ＰＡサイクルだからといって必ず命令プリフェッチ要求を送信できるわけではない。
【００４５】
次に、命令プリフェッチアドレスの生成について説明する。命令プリフェッチアドレスは、命令制御部１２のＩＦＥＡＧ１２ｂで生成される。命令プリフェッチアドレスは、命令フェッチが停止したアドレスの後続アドレスである。ＩＦＥＡＧ１２ｂは、各ＩＢＲ０〜５から出力された命令フェッチアドレスを各ＩＢＲでクリアされるまで保持している。また、次に命令フェッチするアドレスもＩＦＥＡＧ１２ｂで生成され保持されている。また、ＩＦＥＡＧ１２ｂは、分岐予測機構１１によって分岐予測された分岐先アドレスも保持している。
【００４６】
命令制御部１２のＩＦＥＡＧ１２ｂは、上記（条件１）もしくは（条件２）の条件で停止した命令フェッチが次に分岐予測した分岐先アドレスを要求しようとしていた場合、命令プリフェッチアドレスに、そのまま分岐先アドレスをセットする。
【００４７】
また、命令制御部１２のＩＦＥＡＧ１２ｂは、停止した命令フェッチがそれ以外のアドレスを要求しようとしていた場合、そのアドレスがＬ１キャッシュ部１３のライン境界アドレスであれば、そのアドレスを命令プリフェッチアドレスにセットする。一方、命令制御部１２のＩＦＥＡＧ１２ｂは、アドレスがＬ１キャッシュのライン境界でない場合は、命令プリフェッチを出力しない。
【００４８】
ただしここで、命令制御部１２のＩＦＥＡＧ１２ｂは、命令フェッチパイプのＩＴ、ＩＭサイクルが起動していない場合は、命令プリフェッチパイプのＰＡサイクルを起動する。そして、命令制御部１２のＩＦＥＡＧ１２ｂは、ＰＡサイクルを起動すると、１τ後にＰＴサイクルを起動する。ＰＴサイクルでは、停止したアドレスに対して+３２バイト（３２バイト加算）されたアドレスがＩＦＥＡＧ１２ｂにセットされる。同時に、停止した命令フェッチアドレスに対して分岐予測機構１１で分岐予測が開始される。
【００４９】
続いて、ＰＭサイクルで、分岐予測機構１１は、分岐予測結果を出力し、ＩＦＥＡＧ１２ｂは、ＰＴサイクルでセットされたアドレスに対してＬ１キャッシュ部１３のライン境界であるかどうかが判定する。そして、分岐予測機構１１によって分岐すると判定された場合、ＩＦＥＡＧ１２ｂは、分岐予測機構１１によって予測された分岐先アドレスを命令プリフェッチアドレスに再セットする。一方、ＩＦＥＡＧ１２ｂは、分岐予測機構１１によって分岐しないと判定された場合には、命令プリフェッチアドレスを変更しない。
【００５０】
このように、ＩＦＥＡＧ１２ｂは、ＰＭサイクルにおいて、Ｌ１キャッシュ部１３のライン境界であると判定するか、または、分岐予測機構１１によって分岐すると判定されると、以下の処理を実行する。つまり、ＩＦＥＡＧ１２ｂは、１τ後のＰＢサイクルのタイミングで、命令プリフェッチリクエストをＬ１キャッシュ部１３に要求し、新規ＰＡサイクルを起動する。また、ＩＦＥＡＧ１２ｂは、ＰＭサイクルにおいて、Ｌ１キャッシュ部１３のライン境界でないと判定するか、または、分岐予測機構１１によって分岐されないと判定されると、以下の処理を実行する。つまり、ＩＦＥＡＧ１２ｂは、命令プリフェッチリクエストを要求しないが新規ＰＡサイクルを起動する。
【００５１】
この後、命令制御部１２は、新規命令プリフェッチパイプを同じように実行していく。そして、命令制御部１２は、命令プリフェッチパイプが実行・命令フェッチパイプラインがクリアされる、もしくは上記（条件１）、（条件２）の状態が解除され命令フェッチが再開されるとクリアする。また、命令制御部１２は、（条件１）、（条件２）の状態が続く限り、命令プリフェッチパイプラインを動作させることが可能であるが、Ｌ１キャッシュに対する命令プリフェッチ要求回数を制限することもできる。この場合、命令制御部１２は、命令プリフェッチ要求を制限回数Ｌ１キャッシュに対して送出すると、それ以降命令プリフェッチパイプラインに新規命令フェッチを要求し、再度、上記（条件１）、（条件２）の状態になるまで起動しない。
【００５２】
図１に戻り、Ｌ１キャッシュ部１３は、Ｌ２キャッシュ部１４に記憶される情報よりもさらに利用頻度の高いデータ（命令やデータ）を記憶する高速なキャッシュメモリである。また、Ｌ１キャッシュ部１３は、命令制御部１２から送られた命令プリフェッチリクエストに対して各種制御を行う。
【００５３】
具体的には、Ｌ１キャッシュ部１３は、送られてきたアドレスに対してキャッシュミスしてＬ２キャッシュ部１４以降にデータを要求する場合、ＭＩＢに２エントリ以上の空きがあるかないかを判定する。そして、Ｌ１キャッシュ部１３は、ＭＩＢに２エントリ以上の空きがない場合は、ＭＩＢの割り当てはおこなわず、Ｌ１キャッシュ部１３内でアボートされＭＩＢに２エントリ以上の空きができるまで待機する。
【００５４】
つまり、命令プリフェッチのデータ要求でＭＩＢが一杯になっている間に、命令フェッチ停止状態が解除された場合、新規命令フェッチ要求が受け付けられないからである。命令プリフェッチリクエストがＭＩＢを獲得しデータが返ってくるのを待っている間に、命令フェッチが再開する。そして、命令プリフェッチアドレスと同一キャッシュラインアドレスの命令フェッチリクエストがＬ１キャッシュ部１３に送られている場合に、Ｌ２キャッシュ部１４から命令プリフェッチに対して返されたデータがバイパスされ、後続の命令フェッチデータとして命令制御部１２に返される。Ｌ１キャッシュ部１３は、命令プリフェッチリクエストを受け付けられない場合、命令制御部１２に対してその旨を示す信号（ＩＦ−ＳＵ−ＰＲＥＦＣＨ−ＢＵＳＹ）をオンにする。また、Ｌ１キャッシュ部１３は、命令フェッチリクエストを受け付けられない場合、別信号（ＩＦ−ＳＵ−ＢＵＳＹ）をオンにする。この２つの信号は別信号でありそれぞれ独立している。したがって、ＩＦ−ＳＵ−ＢＵＳＹがオンであるからといって、ＩＦ−ＳＵ−ＰＲＥＦＣＨ−ＢＵＳＹがオンであるとは限らないし、その逆も同じである。なお、両信号がオンになることもある。
【００５５】
図２に戻り、Ｌ２キャッシュ部１４は、Ｌ１キャッシュ部１３よりも容量が多く低速で、メインメモリよりも高速なキャッシュメモリであって、比較的利用頻度の高いデータ（命令やデータ）を記憶している。
【００５６】
デコーダ部１５は、命令制御部１２のＩＢＵＦＦ１２ａから読み出した命令をデコードして実行するデコーダーである。なお、開示する装置は、上述した以外にも、プログラムカウンタやコミット判定など他の一般的な機能部を有していてもよいが、これらの機能は一般的なプロセッサ（ＣＰＵやＭＰＵなど）に搭載される機能部と同様の機能を有するので、ここでは詳細な説明は省略する。
【００５７】
［命令制御装置による処理］
次に、図５〜図７を用いて、実施例１に係る命令制御装置に処理の流れについて説明する。図５に示すように、命令制御部１２は、当該制御部１２内の命令バッファ（ＩＢＵＦＦ１２ａなど）に空きが無い場合に、命令フェッチ制御を停止する。また、命令制御部１２は、Ｌ１キャッシュ部１３からＬ２キャッシュ部１４からのムーブイン要求等で新規命令フェッチリクエストを受信できない旨が通知されると、命令フェッチ制御を停止する。これらの場合、命令制御部１２は、上述した（条件１）または（条件２）に該当することから、命令プリフェッチ要求（リクエスト）をＬ１キャッシュに送信する。なお、命令制御部１２は、上述した（条件１）および（条件２）が解除されるまで命令プリフェッチ要求（リクエスト）をＬ１キャッシュに送信するが、回数を制限することもでき、図５では、２回送信している例を示している。
【００５８】
また、図６に示すように、命令制御部１２は、当該制御部１２内の命令バッファ（ＩＢＵＦＦ１２ａなど）に空きが無い場合に、命令フェッチ制御を停止する。また、命令制御部１２は、Ｌ１キャッシュ部１３からＬ２キャッシュ部１４からのムーブイン要求等で新規命令フェッチリクエストを受信できない旨が通知されると、命令フェッチ制御を停止する。これらの場合、命令制御部１２は、上述した（条件１）または（条件２）に該当することから、命令プリフェッチ要求（リクエスト）をＬ１キャッシュに送信する。図６の場合、命令制御部１２は、命令プリフェッチ要求をＬ１キャッシュ部１３に１回送信した後、分岐予測機構１１によって予測された分岐予測アドレスを用いて、２回目の命令プリフェッチ要求をＬ１キャッシュ部１３に送信している。
【００５９】
図５と図６をみてもわかるように、Ｌ１キャッシュ部１３は、Ｌ２キャッシュ部１４からのムーブイン要求等で新規命令フェッチリクエストを受信できない旨を命令制御部１２に出力していることから、独自で命令プリフェッチ要求を送信していない。したがって、Ｌ１キャッシュと命令制御部とで独立して行われていた命令プリフェッチ制御を命令制御部のみで実行することができ、不要な命令プリフェッチ要求などの発生を抑止し、プロセッサの性能低下を防止することができる。なお、図５は、命令プリフェッチ制御を説明する図であり、図６は、分岐予測結果も用いた命令プリフェッチ制御を説明する図である。
【００６０】
次に、図７を用いて、実施例１に係る命令制御装置による処理の流れを説明する。図７は、実施例１に係る命令制御装置による処理の流れを示すフローチャートである。
【００６１】
図７に示すように、命令制御部１２は、命令フェッチ要求が出力できると判断した場合には（ステップＳ１０１ＹＥＳ）、命令フェッチ要求をＬ１キャッシュに出力する（ステップＳ１０２）。
【００６２】
ところが、命令制御部１２は、命令フェッチ要求が出力できないと判断した場合には（ステップＳ１０１ＮＯ）、命令プリフェッチ要求がＬ１キャッシュに出力できるかを判定する（ステップＳ１０３）。ここで、命令制御部１２は、命令バッファ（ＩＢＵＦＦ１２ａ）に空きがないため命令プリフェッチ要求を出力できないと判定した場合には（ステップＳ１０３ＮＯ）、ステップＳ１０１に戻って処理を繰り返す。同様に、命令制御部１２は、Ｌ２キャッシュ部１４からのムーブイン要求等で新規命令フェッチリクエストを受け付けられない旨の通知をＬ１キャッシュ部１３から受信した場合にも（ステップＳ１０３ＮＯ）、ステップＳ１０１に戻って処理を繰り返す。
【００６３】
一方、命令制御部１２は、命令バッファに空きがあり命令プリフェッチ要求を出力できると判定した場合には（ステップＳ１０３ＹＥＳ）、中断している命令フェッチは分岐予測のターゲットか否かを判定する（ステップＳ１０４）。言い換えると、例えば、命令制御部１２は、領域不足等で実行できない、本来なら実行したい命令フェッチ要求先のアドレスが分岐予測機構１１から分岐予測された分岐予測アドレス（分岐先アドレス）であるか否かを判定する。
【００６４】
中断している命令フェッチが分岐予測のターゲットである場合（ステップＳ１０４ＹＥＳ）、命令制御部１２は、分岐予測機構１１によって予測された分岐先アドレスを用いて命令プリフェッチ要求をＬ１キャッシュ部１３に出力する（ステップＳ１０５）。その後、ステップＳ１０１に戻って以降の処理を繰り返す。言い換えると、例えば、命令制御部１２は、領域不足等で実行できない、本来なら実行した命令フェッチ要求先のアドレスが分岐予測機構１１から分岐予測された分岐先アドレスである場合に、命令プリフェッチ要求をＬ１キャッシュ部１３に出力する。
【００６５】
また、中断している命令フェッチが分岐予測のターゲットでない場合（ステップＳ１０４ＮＯ）、命令制御部１２は、現在対象となっている命令フェッチアドレスに３２バイト加算した新たなアドレスで分岐予測を行うことを分岐予測機構１１に要求する（ステップＳ１０６）。言い換えると、例えば、命令制御部１２は、領域不足等で実行できない、本来なら実行したい命令フェッチ要求先のアドレスが分岐予測機構１１から分岐予測された分岐先アドレスでない場合に、上記新たなアドレスで分岐予測を行うことを分岐予測機構１１に要求する。
【００６６】
その後、分岐予測機構１１によって分岐予測された場合には（ステップＳ１０７ＹＥＳ）、命令制御部１２は、ステップＳ１０５の処理を実行する。一方、命令制御部１２は、分岐予測機構１１によって分岐予測されなかった場合には（ステップＳ１０７ＮＯ）、現在対象となっている命令フェッチアドレスがＬ１キャッシュライン境界か否かを判定する（ステップＳ１０８）。
【００６７】
そして、命令制御部１２は、現在命令フェッチ対象となっているアドレスがＬ１キャッシュライン境界である場合（ステップＳ１０８ＹＥＳ）、当該アドレスを用いて、命令プリフェッチ要求を行う（ステップＳ１０９）。一方、命令制御部１２は、現在命令フェッチ対象となっているアドレスがＬ１キャッシュライン境界でない場合（ステップＳ１０８ＮＯ）、ステップＳ１０６に戻って、以降の処理を実行する。
【００６８】
［命令制御装置のタイムチャート］
次に、図８〜図１２を用いて、命令制御装置で実施される命令フェッチ制御および命令プリフェッチ制御のタイムチャート例を説明する。なお、ここで提示しているタイムチャートは動作タイミングの一部であり全てのタイミングを示すものではない。
【００６９】
まず、図８〜図１２に登場する信号について説明する。「ＩＢＵＦＦ−ＦＵＬＬ」は、ＩＢＲ０〜５がすべて使用中であることを示す信号である。「ＰＲＥＦＣＨ−ＰＲＩＯ−ＴＧＲ」は、この信号がオンのときのみ命令プリフェッチパイプが起動できる。ただし、この信号がオンだからといってプリフェッチパイプが起動されているわけではない。
【００７０】
「ＰＲＥＦＣＨ−ＩＡＲ」は、ＩＦＥＡＧ１２ｂが保持している命令プリフェッチリクエスト用のアドレスレジスタ。＋３２とあるのは前サイクルのアドレスに対して３２バイト加算したという意味である。「ＰＲＥＦＣＨ−ＲＥＱ−ＶＡＬ」は、命令制御部１２からＬ１キャッシュ部１３への命令プリフェッチリクエスト信号である。「ＰＲＥＦＣＨ−ＲＥＱ−ＬＣＨ」は、命令プリフェッチ条件および命令プリフェッチアドレスが確定したことを示す信号であり、この信号がオンでないと命令プリフェッチ要求は送出されない。「ＰＯＲＴ−ＢＵＳＹ」は、Ｌ１キャッシュ部１３がキャッシュミスしＬ２キャッシュ部１４からのムーブイン待ちもしくはＬ２キャッシュ部１４からのムーブアウト要求等で新規命令フェッチリクエストを受け付けられないことを示す信号である。この信号がオンになると１τ後に命令制御部１２に対して、命令フェッチリクエストを受け付けられないことを通知する「ＩＦ−ＳＵ−ＢＵＳＹ」がオンとなる。
【００７１】
（パターン１）
パターン１は、図８に示すように、サイクル３が命令フェッチリクエストの最後となるパターンである。パターン１では、命令制御部１２は、サイクル４〜サイクル１２までＩＢＲ０〜５に空きがないため、命令フェッチを出力することが出来ない。サイクル４の「ＰＲＥＦＣＨ−ＩＡＲ＝＋３２」は（サイクル３で出した命令フェッチアドレス＋３２バイト）である。命令制御部１２は、サイクル５において、サイクル３で出した命令フェッチアドレスの分岐予測判定およびシーケンシャル方向の次３２バイトアドレスのＬ１キャッシュライン境界の判定を行う。ここでは、命令制御部１２は、サイクル５の時点で命令プリフェッチ条件を満たさなかったため、サイクル６のＰＡサイクルでは命令プリフェッチリクエストを出力しない。
【００７２】
また、命令制御部１２は、サイクル８において、サイクル３で出した命令フェッチアドレス＋６４バイトがＬ１キャッシュライン境界であると判定する。そのため、命令制御部１２は、サイクル９で「ＰＲＥＦＣＨ−ＲＥＱ−ＬＣＨ」をオンとし、同時に「ＰＲＥＦＣＨ−ＲＥＱ−ＶＡＬ」をオンとして、Ｌ１キャッシュ部１３に命令プリフェッチ要求を送出する。このときＬ１キャッシュに送られた命令プリフェッチアドレスは、サイクル３で出した命令フェッチアドレス＋６４バイトである。なお、命令プリフェッチアドレスは、３２バイトずつ加算されたアドレスとなるためＬ１キャッシュ部１３のライン境界を跨ぐケースがあるが、Ｌ１キャッシュ部１３内でライン境界を見ているため問題とならない。なお、図８は、サイクル３が命令フェッチリクエストの最後となる場合のタイムチャートである。
【００７３】
（パターン２）
パターン２は、図９に示すように、サイクル３が命令フェッチリクエストの最後となるパターンであるが、サイクル５でサイクル３の命令フェッチリクエストが「分岐する」と予測判定された場合のパターンである。なお、ＨＩＴとあるのは分岐予測で分岐すると予測したことを示し、「ＢＲＨＩＳ−ＴＧＴ」は、分岐先アドレスを示している。
【００７４】
命令制御部１２は、サイクル６において、命令プリフェッチアドレスを分岐先アドレスとし、「ＰＲＥＦＣＨ−ＲＥＱ−ＬＣＨ」をオンとするとともに、「ＰＲＥＦＣＨ−ＲＥＱ−ＶＡＬ」をオンにして、Ｌ１キャッシュ部１３に命令プリフェッチ要求を送出する。また、命令制御部１２は、サイクル１２において、サイクル１１でサイクル６の命令プリフェッチアドレスである「ＢＲＨＩＳ−ＴＧＴ」に＋６４バイト加算したアドレスがＬ１キャッシュライン境界であると判定したために、命令プリフェッチ要求を送出している。なお、図９は、サイクル３が命令フェッチリクエストの最後となり、サイクル５で分岐すると予測された場合のタイムチャートである。
【００７５】
（パターン３）
パターン３は、図１０に示すように、サイクル３〜１０まで「ＰＯＲＴ−ＢＵＳＹ」がオンとなっているためサイクル４〜１１まで「ＩＦ−ＳＵ−ＢＵＳＹ」がオンとなりこの間、命令フェッチリクエストが停止している状態である。この場合、命令制御部１２は、サイクル１２で「ＩＦ−ＳＵ−ＢＵＳＹ」をオフとして、命令フェッチを再開する。この場合の命令フェッチアドレスは、サイクル３の命令フェッチの続きであり、サイクル３の命令フェッチが分岐予測されていないため、サイクル３で出した命令フェッチアドレス＋３２バイトとなる。なお、図１０は、ＰＯＲＴ−ＢＵＳＹで命令フェッチリクエストが停止している場合のタイムチャートである。
【００７６】
（パターン４）
パターン４は、図１１に示すように、パターン３のケースと類似ケースであるが、サイクル５で、サイクル３の命令フェッチが分岐すると予測されている。そのため、命令制御部１２は、サイクル１２で命令フェッチが再開された場合の命令フェッチアドレスを「ＢＲＨＩＳ−ＴＧＴ」としている。なお、図１１は、サイクル５でサイクル３の命令フェッチが分岐すると予測された場合のタイムチャートである。
【００７７】
（パターン５）
パターン５は、図１２に示すように、パターン３と同様、サイクル１２で「ＩＦ−ＳＵ−ＢＵＳＹ」がオフとなり命令フェッチが再開しているパターンである。この場合の命令フェッチアドレスは、サイクル３の命令フェッチの続きであり、サイクル３の命令フェッチが分岐予測されていないため、サイクル３で出した命令フェッチアドレス＋３２バイトとなる。命令制御部１２は、プリフェッチパイプ中に分岐予測がおこなわれているため（サイクル８）、サイクル１２で再開した命令フェッチリクエストより後続のアドレスを前もって命令プリフェッチすることとなる。なお、図１２は、サイクル１２で命令フェッチが再開する場合のタイムチャートである。
【００７８】
［実施例１による効果］
このように、実施例１によれば、Ｌ１キャッシュ部１３と命令制御部１２とで独立して行われていた命令プリフェッチ制御を命令制御部１２のみで実行することができる。その結果、不要な命令プリフェッチ要求などの発生を抑止し、プロセッサの性能低下を防止することができる。
【００７９】
また、実施例１によれば、上記した（条件１）、（条件２）の状態が続く限り、命令プリフェッチパイプラインを動作させることが可能であるが、Ｌ１キャッシュに対する命令プリフェッチ要求回数を制限することができる。その結果、不要な命令プリフェッチ要求などの発生をより抑止することができ、結果として、プロセッサの性能低下をさらに防止することができる。
【実施例２】
【００８０】
さて、これまで開示する情報処理装置の実施例について説明したが、開示する命令制御装置は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に示すように、異なる実施例を説明する。
【００８１】
（パイプライン数）
実施例１で説明した命令フェッチパイプライン数や命令プリフェッチパイプライン数は、あくまで例示であり、これに限定されるものではない。
【００８２】
（システム構成等）
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができ、ＣＰＵコアが複数あってもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵやＭＰＵおよび当該ＣＰＵやＭＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８３】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【符号の説明】
【００８４】
１０  命令制御装置
１１  分岐予測機構
１２  命令制御部
１２ａ  ＩＢＵＦＦ
１２ｂ  ＩＦＥＡＧ
１２ｃ  ＩＦＣＴＬ
１３  Ｌ１キャッシュ部
１４  Ｌ２キャッシュ部
１５  デコーダ部
【図１】
0005444889.tif 000002
【図２】
0005444889.tif 000003
【図３】
0005444889.tif 000004
【図４】
0005444889.tif 000005
【図５】
0005444889.tif 000006
【図６】
0005444889.tif 000007
【図７】
0005444889.tif 000008
【図８】
0005444889.tif 000009
【図９】
0005444889.tif 000010
【図１０】
0005444889.tif 000011
【図１１】
0005444889.tif 000012
【図１２】
0005444889.tif 000013
【図１３】
0005444889.tif 000014
【図１４】
0005444889.tif 000015
【図１５】
0005444889.tif 000016