(57)【要約】【課題】  複数の命令を保持する命令保持部の使用効率を向上する。【解決手段】  演算処理装置は、複数の第１の種別の命令を保持し、保持した第１の種別の命令を第１の命令実行部に投入する第１の命令保持部と、複数の第２の種別の命令を保持し、保持した第２の種別の命令を第２の命令実行部に投入する第２の命令保持部と、第１の命令保持部に保持されている命令の数を計数する第１のカウンタと、第２の命令保持部に保持されている命令の数を計数する第２のカウンタを有するデコード部と、先行する第１の種別の命令の実行を完了するタイミングと後続する第２の種別の命令を完了するタイミングが所定の関係に有り、且つ、第１および第２の種別の命令で使用するレジスタの依存関係がある場合、第２のカウンタの計数値をデクリメントする第２の開放通知の出力タイミングを変更する制御部を有する。【選択図】    図１
2014044509.tif 000002
【特許請求の範囲】
【請求項１】
第１の種別の命令をデコードした場合に第１の計数値をインクリメントするとともに、第１の開放通知を入力した場合に前記第１の計数値をデクリメントする第１のカウンタと、第２の種別の命令をデコードした場合に第２の計数値をインクリメントするとともに、第２の開放通知を入力した場合に前記第２の計数値をデクリメントする第２のカウンタを有するデコード部と、
第１の種別の命令を実行する第１の命令実行部と、
第２の種別の命令を実行する第２の命令実行部と、
第１の種別の命令を保持する複数の第１のエントリを有し、前記複数の第１のエントリのいずれかに保持した第１の種別の命令を前記第１の命令実行部に投入する第１の命令保持部と、
第２の種別の命令を保持する複数の第２のエントリを有し、前記複数の第２のエントリのいずれかに保持した第２の種別の命令を前記第２の命令実行部に投入する第２の命令保持部と、
前記第２の命令実行部が投入された第２の種別の命令の実行を完了した場合に前記第２の開放通知を出力するとともに、前記第１の命令実行部が投入された先行する第１の種別の命令の実行を完了するタイミングと前記第２の命令実行部が投入された後続する第２の種別の命令を完了するタイミングが所定の関係に有り、且つ、前記先行する第１の種別の命令が演算結果を書き込むレジスタを前記後続する第２の種別の命令が使用する場合、前記第２の開放通知を出力するタイミングを変更する第１の制御部を有することを特徴とする演算処理装置。
【請求項２】
前記第１の制御部はさらに、
前記第１の命令実行部が投入された前記先行する第１の種別の命令の実行を完了するサイクルと同一サイクルで、前記第２の命令実行部が投入された前記後続する第２の種別の命令の実行を完了し、且つ、前記先行する第１の種別の命令が演算結果を書き込むレジスタを前記後続する第２の種別の命令が使用する場合、前記第２の開放通知を前記第２の種別の命令の実行を完了したサイクルの次のサイクルで出力することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記第１の制御部はさらに、
前記第１の命令実行部が投入された前記先行する第１の種別の命令の実行を完了するサイクルと異なるサイクルで、前記第２の命令実行部が投入された前記後続する第２の種別の命令の実行を完了し、または、前記先行する第１の種別の命令が演算結果を書き込むレジスタを前記後続する第２の種別の命令が使用しない場合、前記第２の開放通知を前記第２の種別の命令の実行を完了したサイクルで出力することを特徴とする請求項１又は請求項２記載の演算処理装置。
【請求項４】
前記第１の制御部はさらに、
前記第１の命令実行部が投入された前記先行する第１の種別の命令の実行を完了するサイクルの次のサイクルで、前記第２の命令実行部が前記後続する第２の種別の命令に後続する第２の種別の別の命令の実行を完了する場合、前記第２の種別の別の命令に対応する前記第２の開放通知を、前記第２の種別の別の命令の実行を完了したサイクルの次のサイクルで出力することを特徴とする請求項２記載の演算処理装置。
【請求項５】
前記演算処理装置はさらに、
前記第１の命令実行部が投入された第１の種別の命令の実行を完了した場合に前記第１の開放通知を出力するとともに、前記第１の命令実行部が投入された前記先行する第１の種別の命令の実行を完了するタイミングと前記第１の命令実行部が投入された後続する第１の種別の命令を完了するタイミングが所定の関係に有り、且つ、前記先行する第１の種別の命令が演算結果を書き込むレジスタを前記後続する第１の種別の命令が使用する場合、前記第１の開放通知を出力するタイミングを変更する第２の制御部を有することを特徴とする請求項１〜３のいずれか１項に記載の演算処理装置。
【請求項６】
前記演算処理装置はさらに、
第１の種別の命令に基づいてアクセスされてデータを出力する記憶部を有し、
前記第２の制御部はさらに、
前記第１の命令実行部が投入された前記先行する第１の種別の命令の実行を完了するサイクルと同一サイクルで、前記第１の命令実行部が投入された前記後続する第１の種別の命令によってレジスタに格納されたデータを用いて前記記憶部のアクセスアドレスを計算し、且つ、前記先行する第１の種別の命令が演算結果を書き込むレジスタを、前記後続する第１の種別の命令が前記アクセスアドレスの計算に使用する場合、前記第１の開放通知を前記先行する第１の種別の命令の実行を完了したサイクルの次のサイクルで出力することを特徴とする請求項５記載の演算処理装置。
【請求項７】
前記演算処理装置はさらに、
第１の種別の命令に基づいてアクセスされてデータを出力するとともに、データの出力を完了するサイクルで完了通知を出力する記憶部を有し、
前記第１の制御部は、
データの出力が完了したサイクルの次のサイクルで前記完了通知を受けた場合に、前記第２の開放通知を前記後続する第２の種別の命令の実行を完了したサイクルの次のサイクルで出力し、
データの出力が完了したサイクルの次のサイクルで前記完了通知を受けない場合に、前記第２の開放通知の出力を禁止することを特徴とする請求項２記載の演算処理装置。
【請求項８】
前記第１の命令保持部はさらに、
前記第１の開放通知を入力した場合、入力した開放通知に対応する第１の種別の命令を保持する第１のエントリを開放することを特徴とする請求項１〜７のいずれか１項に記載の演算処理装置。
【請求項９】
前記第２の命令保持部はさらに、
前記第２の開放通知を入力した場合、入力した開放通知に対応する第２の種別の命令を保持する第２のエントリを開放することを特徴とする請求項１〜８のいずれか１項に記載の演算処理装置。
【請求項１０】
第１の種別の命令を保持する複数の第１のエントリを備える第１の命令保持部と、第２の種別の命令を保持する複数の第２のエントリを備える第２の命令保持部と、第１の種別の命令を実行する第１の命令実行部と、第２の種別の命令を実行する第２の命令実行部を有する演算処理装置の制御方法において、
前記演算処理装置が有するデコード部が備える第１のカウンタが、第１の種別の命令をデコードした場合に第１の計数値をインクリメントし、
前記デコード部が備える第２のカウンタが、第２の種別の命令をデコードした場合に第２の計数値をインクリメントし、
前記第１の命令保持部が、前記複数の第１のエントリのいずれかに保持した第１の種別の命令を前記第１の命令実行部に投入し、
前記第２の命令保持部が、前記複数の第２のエントリのいずれかに保持した第２の種別の命令を前記第２の命令実行部に投入し
前記演算処理装置が有する制御部が、前記第２の命令実行部が投入された第２の種別の命令の実行を完了した場合に前記第２の開放通知を出力するとともに、前記第１の命令実行部が投入された先行する第１の種別の命令の実行を完了するタイミングと前記第２の命令実行部が投入された後続する第２の種別の命令を完了するタイミングが所定の関係に有り、且つ、前記先行する第１の種別の命令が演算結果を書き込むレジスタを前記後続する第２の種別の命令が使用する場合、前記第２の開放通知を出力するタイミングを変更し、
前記第１のカウンタが、第１の開放通知を入力した場合に前記第１の計数値をデクリメントし、
前記第２のカウンタが、前記第２の開放通知を入力した場合に前記第２の計数値をデクリメントすることを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
命令を複数のステージに分けて実行するパイプラインを有するプロセッサ等の演算処理装置は、例えば、デコード部から供給される命令を格納し、実行可能な命令から順に実行部に出力するリザベーションステーションを有する。リザベーションステーションにより、実行する命令の順序を入れ換えることで、命令の実行効率は向上する。
【０００３】
複数のリザベーションステーションと複数の演算部とを有する演算処理装置において、一方のリザベーションステーションに格納される命令の数を、他方のリザベーションステーションに格納される命令の数より少なくする手法が提案されている（例えば、特許文献１参照）。この手法により、一方の演算部の演算結果を他方の演算部に出力するクロスバイパスの頻度は下がり、命令の処理時間は短縮される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３０４２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、ロード命令を実行することにより記憶装置からレジスタに格納される読み出しデータが、ロード命令の実行後の後続する命令で使用される場合、読み出しデータがレジスタに格納されるサイクル中に読み出しデータを演算部にバイパスさせることで、命令の処理効率は向上する。このように、読み出しデータのバイパスは、ロード命令および後続する命令により使用されるレジスタが互いに重複する場合（命令間でレジスタの依存関係がある場合）に実行される。これに対して、ロード命令と後続する命令とで使用するレジスタが異なる場合、バイパス処理は実行されない。
【０００６】
例えば、命令間でレジスタの依存関係がある場合、リザベーションステーションに保持された後続する命令は、ロード命令の実行の完了と後続する命令の実行の完了とに基づいて無効にされる。
【０００７】
命令間でレジスタの依存関係がない場合に、リザベーションステーションに格納された後続する命令を、ロード命令の実行の完了と後続する命令の実行の完了とに基づいて無効にすると、無効にするタイミングは、ロード命令の完了を待たない場合に比べて遅くなる。
【０００８】
１つの側面では、本発明の目的は、第１および第２の種別の命令が完了するタイミングとレジスタの依存関係とに応じて、第２の開放通知の出力タイミングを変更することで、第２のカウンタのデクリメントタイミングが早くなる頻度を従来に比べて増加し、第２の命令保持部の使用効率を向上することである。
【課題を解決するための手段】
【０００９】
本発明の一形態では、演算処理装置は、第１の種別の命令をデコードした場合に第１の計数値をインクリメントするとともに、第１の開放通知を入力した場合に第１の計数値をデクリメントする第１のカウンタと、第２の種別の命令をデコードした場合に第２の計数値をインクリメントするとともに、第２の開放通知を入力した場合に第２の計数値をデクリメントする第２のカウンタを有するデコード部と、第１の種別の命令を実行する第１の命令実行部と、第２の種別の命令を実行する第２の命令実行部と、第１の種別の命令を保持する複数の第１のエントリを有し、複数の第１のエントリのいずれかに保持した第１の種別の命令を第１の命令実行部に投入する第１の命令保持部と、第２の種別の命令を保持する複数の第２のエントリを有し、複数の第２のエントリのいずれかに保持した第２の種別の命令を第２の命令実行部に投入する第２の命令保持部と、第２の命令実行部が投入された第２の種別の命令の実行を完了した場合に第２の開放通知を出力するとともに、第１の命令実行部が投入された先行する第１の種別の命令の実行を完了するタイミングと第２の命令実行部が投入された後続する第２の種別の命令を完了するタイミングが所定の関係に有り、且つ、先行する第１の種別の命令が演算結果を書き込むレジスタを後続する第２の種別の命令が使用する場合、第２の開放通知を出力するタイミングを変更する制御部を有する。
【発明の効果】
【００１０】
第１および第２の種別の命令が完了するタイミングとレジスタの依存関係とに応じて、第２の開放通知の出力タイミングを変更することで、第２のカウンタのデクリメントタイミングが早くなる頻度を従来に比べて増加でき、第２の命令保持部の使用効率を向上できる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態における演算処理装置の例を示す。
【図２】図1に示した演算処理装置の動作の例を示す。
【図３】別の実施形態における演算処理装置の例を示す。
【図４】図３に示したコア部が搭載される情報処理装置および演算処理装置の例を示す。
【図５】図３に示した実行制御部ＥＸＣＮＴａの例を示す。
【図６】図３に示した実行制御部ＥＸＣＮＴｅの例を示す。
【図７】図３に示した実行制御部ＥＸＣＮＴａにおけるレジスタの番号を保持する回路を示す。
【図８】図３に示したコア部を有する演算処理装置の動作の例を示す。
【図９】図３に示したコア部を有する演算処理装置の動作の別の例を示す。
【図１０】図３に示したコア部を有する演算処理装置の動作の別の例を示す。
【図１１】図３に示したコア部を有する演算処理装置の動作の別の例を示す。
【図１２】図３に示したコア部を有する演算処理装置の動作の別の例を示す。
【図１３】図３に示したコア部を有する演算処理装置の動作の別の例を示す。
【図１４】図３に示したコア部を有する演算処理装置の動作の別の例を示す。
【図１５】図３に示したコア部を有する演算処理装置の動作の別の例を示す。
【図１６】図３に示したコア部を有する演算処理装置の動作の別の例を示す。
【図１７】図３に示したコア部を有する演算処理装置の動作の別の例を示す。
【図１８】図３に示したコア部を有する演算処理装置の動作の別の例を示す。
【発明を実施するための形態】
【００１２】
以下、図面を用いて実施形態を説明する。
【００１３】
図１は、一実施形態における演算処理装置ＯＰＤの例を示す。例えば、演算処理装置ＯＰＤは、ＣＰＵ（Central Processing Unit）等のプロセッサである。演算処理装置ＯＰＤは、デコード部ＤＥＣ、命令保持部ＲＳＡ、ＲＳＥ、命令実行部ＥＡＧ、ＦＥＵ、制御部ＥＸＣＮＴｅおよびレジスタ部ＲＥＧを有する。
【００１４】
デコード部ＤＥＣは、カウンタＣＯＵＮＴａ、ＣＯＵＮＴｅを有する。カウンタＣＯＵＮＴａは、デコード部ＤＥＣが命令ＩＮＳａをデコードして命令保持部ＲＳＡに命令ＩＮＳａを出力した場合に計数値をインクリメントするとともに、開放通知ＦＲＥＥａを入力した場合に計数値をデクリメントする。カウンタＣＯＵＮＴｅは、デコード部ＤＥＣが命令ＩＮＳｅをデコードして命令保持部ＲＳＥに命令ＩＮＳｅを出力した場合に計数値をインクリメントするとともに、開放通知ＦＲＥＥｅを入力した場合に計数値をデクリメントする。命令ＩＮＳａは、例えば、メモリＭＥＭからデータを読み出すロード命令等の第１の種別の命令である。命令ＩＮＳｅは、データを演算する演算命令（加算命令、減算命令、シフト命令、論理演算命令）等の第２の種別の命令である。
【００１５】
命令保持部ＲＳＡは、命令ＩＮＳａを保持する複数のエントリＥＮＴａを有し、エントリＥＮＴａのいずれかに保持した命令ＩＮＳａを命令実行部ＥＡＧに投入する。命令保持部ＲＳＥは、命令ＩＮＳｅを保持する複数のエントリＥＮＴｅを有し、エントリＥＮＴｅのいずれかに保持した命令ＩＮＳｅを命令実行部ＦＥＵに投入する。
【００１６】
命令実行部ＥＡＧは、命令ＩＮＳａを実行し、例えば、レジスタ部ＲＥＧに格納されたデータを用いて記憶装置ＭＥＭにアクセス要求を発行する。記憶装置ＭＥＭから読み出されたデータＤＴは、レジスタ部ＲＥＧに格納される。なお、記憶装置ＭＥＭは、演算処理装置ＯＰＤに搭載されてもよく、演算処理装置ＯＰＤの外部に接続されてもよい。
【００１７】
命令実行部ＦＥＵは、命令ＩＮＳｅの実行に必要なデータをレジスタＲＥＧから受けて命令ＩＮＳｅを実行し、演算結果をレジスタＲＥＧに出力する。また、命令実行部ＦＥＵは、先行する命令ＩＮＳａに基づいて記憶装置ＭＥＭからレジスタ部ＲＥＧに格納されるデータＤＴを命令ＩＮＳａで使用する場合、レジスタ部ＲＥＧに格納されるデータＤＴをバイパスして受ける。
【００１８】
制御部ＥＸＣＮＴｅは、命令実行部ＦＥＵが命令ＩＮＳｅの実行を完了した場合に、開放通知ＦＲＥＥｅを出力する。制御部ＥＸＣＮＴｅは、次の２つの条件の両方を満たす場合と、２つの条件の少なくとも一方を満たさない場合とで、開放通知ＦＲＥＥｅを出力するタイミングを変更する。
（条件１）命令実行部ＥＡＧに投入された先行する命令ＩＮＳａの実行を命令実行部ＥＡＧが完了するタイミングと、命令実行部ＦＥＵに投入された後続する命令ＩＮＳｅを命令実行部ＦＥＵが完了するタイミングとが所定の関係にある。
（条件２）先行する命令ＩＮＳａが演算結果（例えば、データＤＴ）を書き込むレジスタを、後続する命令ＩＮＳｅが使用する。
【００１９】
レジスタ部ＲＥＧは、命令実行部ＥＡＧ、ＦＥＵで使用する少なくとも１つのレジスタ（例えば、ｇ１、ｇ２、ｇ３等）を有する。なお、演算処理装置ＯＰＤは、命令実行部ＥＡＧに投入された命令ＩＮＳａの実行を命令実行部ＥＡＧが完了した場合に、開放通知ＦＲＥＥａを出力する制御部を有してもよい。
【００２０】
図２は、図１に示した演算処理装置ＯＰＤの動作の例を示す。例えば、動作Ａ、動作Ｂ、動作Ｃ、動作Ｄに示す先行する命令ＩＮＳａは、命令保持部ＲＳＡから投入され、記憶装置ＭＥＭからレジスタｇ３にデータＤＴを読み出すロード命令（アクセス命令）である。
【００２１】
例えば、動作Ａ、Ｃに示す命令ＩＮＳｅは、命令ＩＮＳａの開始後に命令保持部ＲＳＥから投入され、レジスタｇ１に格納されたデータとレジスタｇ３に格納されたデータとを加算する加算命令（演算命令）である。動作Ｂ、Ｄに示す命令ＩＮＳｅは、命令ＩＮＳａの開始後に命令保持部ＲＳＥから投入され、レジスタｇ１に格納されたデータとレジスタｇ２に格納されたデータとを加算する加算命令である。
【００２２】
命令実行部ＥＡＧ、ＦＥＵの太枠は、命令ＩＮＳａ、ＩＮＳｅの実行期間を示す。例えば、太枠内の破線で区切られた領域の各々は、パイプラインの実行サイクルを示す。すなわち、動作Ａ、動作Ｂ、動作Ｃ、動作Ｄの各々は、図２の左側から右側に時間が進むタイミングチャートでもある。
【００２３】
動作Ａは、命令ＩＮＳａ、ＩＮＳｅの実行を完了するタイミングが所定の関係（例えば、同じサイクル）である場合で、先行する命令ＩＮＳａの実行により得られるデータＤＴが書き込まれるレジスタｇ３を、後続する命令ＩＮＳｅが使用する場合を示す。すなわち、動作Ａは、上述した（条件１）、（条件２）を満足する。動作Ａは、先行する命令ＩＮＳａが使用するレジスタと、後続する命令ＩＮＳｅが使用するレジスタとに依存関係がある。
【００２４】
（条件１）、（条件２）を満足する場合、命令実行部ＦＥＵは、記憶装置ＭＥＭから出力されたレジスタｇ３に格納される前のデータＤＴを受け取り、演算を実行可能である。すなわち、命令実行部ＦＥＵは、データＤＴのバイパス処理ＢＹＰＳを実行可能である。バイパス処理ＢＹＰＳを実行する場合、例えば、制御部ＥＸＣＮＴｅは、記憶装置ＭＥＭからのデータＤＴのロードの完了を示す通知ＮＴＣに基づいて、開放通知ＦＲＥＥｅを出力する。
【００２５】
例えば、記憶装置ＭＥＭが命令実行部ＦＥＵに対して離れて配置される場合、命令実行部ＦＥＵは、命令ＩＮＳｅの実行が完了した後に通知ＮＴＣを受けるかもしれない。この場合、開放通知ＦＲＥＥｅが出力されるタイミングは、動作Ｂに比べて遅くなる。例えば、開放通知ＦＲＥＥｅは、命令ＩＮＳｅの実行を完了したサイクルの次のサイクルで出力され、開放通知ＦＲＥＥｅの出力タイミングは、動作Ｂに比べて１サイクル遅くなる。
【００２６】
動作Ｂは、命令ＩＮＳａ、ＩＮＳｅの実行を完了するタイミングが所定の関係（例えば、同じサイクル）である場合で、先行する命令ＩＮＳａの実行により得られるデータＤＴが書き込まれるレジスタｇ３を、後続する命令ＩＮＳｅが使用しない場合を示す。すなわち、動作Ｂは、上述した（条件１）を満足するが、（条件２）を満足しない。動作Ｂは、先行する命令ＩＮＳａが使用するレジスタと、後続する命令ＩＮＳｅが使用するレジスタとに依存関係がない。
【００２７】
動作Ｃは、命令ＩＮＳａ、ＩＮＳｅの実行を完了するタイミングが所定の関係（例えば、同じサイクル）にない場合で、先行する命令ＩＮＳａの実行により得られるデータＤＴが書き込まれるレジスタｇ３を、後続する命令ＩＮＳｅが使用する場合を示す。すなわち、動作Ｃは、上述した（条件１）を満足しないが、（条件２）を満足する。動作Ｃは、先行する命令ＩＮＳａが使用するレジスタと、後続する命令ＩＮＳｅが使用するレジスタとに依存関係がある。
【００２８】
動作Ｄは、命令ＩＮＳａ、ＩＮＳｅの実行を完了するタイミングが所定の関係（例えば、同じサイクル）にない場合で、先行する命令ＩＮＳａによる演算結果が書き込まれるレジスタｇ３を、後続する命令ＩＮＳｅが使用しない場合を示す。すなわち、動作Ｄは、上述した（条件１）、（条件２）の両方を満足しない。動作Ｄは、先行する命令ＩＮＳａが使用するレジスタと、後続する命令ＩＮＳｅが使用するレジスタとに依存関係がない。
【００２９】
この実施形態では、（条件１）、（条件２）の少なくとも一方を満足しない場合、バイパス処理ＢＹＰＳは実行されないため、制御部ＥＸＣＮＴｅは、通知ＮＴＣを待つことなく演算が完了したタイミングで開放通知ＦＲＥＥｅを出力可能である。これにより、カウンタＣＯＵＮＴｅの計数値を通知ＮＴＣに依存することなくデクリメントできる。命令保持部ＲＳＥのエントリＥＮＴｅは、カウンタＣＯＵＮＴｅのデクリメントに伴って開放される。
【００３０】
一方、本実施形態が適用されない場合、制御部ＥＸＣＮＴｅは、動作Ａを実現するために、他の動作Ｂ、動作Ｃ、動作Ｄにおいて通知ＮＴＣを受けるタイミングを考慮して、通知ＮＴＣに基づいて開放通知ＦＲＥＥｅを出力する。この場合、動作Ｂ、動作Ｃ、動作ＤにおいてカウンタＣＯＵＮＴｅの計数値がデクリメントされるタイミングは、本実施形態に比べて遅くなる。この結果、命令保持部ＲＳＥのエントリＥＮＴｅを開放するタイミングは、本実施形態に比べて遅くなり、所定の期間に命令保持部ＲＳＥに保持可能な命令ＩＮＳｅの延べ数は、本実施形態に比べて少なくなる。
【００３１】
以上、この実施形態では、制御部ＥＸＣＮＴｅは、（条件１）、（条件２）の両方を満足する場合と、（条件１）、（条件２）の少なくとも一方を満足しない場合とで、開放通知ＦＲＥＥｅの出力タイミングを変更する。これにより、（条件１）、（条件２）の少なくとも一方を満足しない場合に、例えば、通知ＮＴＣを待つことなく開放通知ＦＲＥＥｅを出力でき、カウンタＣＯＵＮＴｅのデクリメントのタイミングを従来に比べて早くできる。したがって、所定の期間に命令保持部ＲＳＥに保持可能な命令ＩＮＳｅの延べ数を、本実施形態の適用前に比べて増やすことができる。この結果、命令保持部ＲＳＥの使用効率を向上でき、演算処理装置ＯＰＤの性能を向上できる。
【００３２】
また、バイパス処理ＢＹＰＳは、図２に示した動作Ａで実行され、動作Ｂ、動作Ｃ、動作Ｄでは実行されず、バイパス処理ＢＹＰＳが実行される頻度は、バイパス処理ＢＹＰＳが実行されない頻度より低い。この実施形態では、バイパス処理ＢＹＰＳが実行されない場合に、開放通知ＦＲＥＥｅの出力タイミングを１サイクル早くできる。このため、開放通知ＣＯＵＮＴｅがデクリメントされるタイミングの平均値を従来に比べて早くでき、命令保持部ＲＳＥがエントリＥＮＴｅを開放するタイミングの平均値を従来に比べて早くできる。
【００３３】
図３は、別の実施形態における演算処理装置ＯＰＤの例を示す。図１と同様または同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
【００３４】
例えば、演算処理装置ＯＰＤは、ＣＰＵ等のプロセッサである。演算処理装置ＯＰＤは、ＣＰＵコア等のコア部ＣＯＲＥを有する。演算処理装置ＯＰＤの例は、図４に示す。コア部ＣＯＲＥは、記憶部ＭＵＮＩＴ、命令制御部ＩＵＮＩＴおよび実行部ＥＵＮＩＴを有する。
【００３５】
記憶部ＭＵＮＩＴは、命令キャッシュＩＣＡＣＨＥ、データキャッシュＤＣＡＣＨＥおよび制御回路ＩＣＣＮＴ、ＤＣＣＮＴを有する。命令キャッシュＩＣＡＣＨＥは、実行部ＥＵＮＩＴが実行するプログラムを記憶する。データキャッシュＤＣＡＣＨＥは、実行部ＥＵＮＩＴで扱うデータを記憶する。例えば、命令キャッシュＩＣＡＣＨＥおよびデータキャッシュＤＣＡＣＨＥは、一次キャッシュメモリである。
【００３６】
制御回路ＩＣＣＮＴは、命令キャッシュＩＣＡＣＨＥへのアクセス要求に基づいて、命令キャッシュＩＣＡＣＨＥからデータ（プログラム）を読み出し、または、外部（例えば、二次キャッシュ部Ｌ２）から転送されるデータ（プログラム）を命令キャッシュＩＣＡＣＨＥに書き込む。
【００３７】
制御回路ＤＣＣＮＴは、データキャッシュＤＣＡＣＨＥへのアクセス要求に基づいて、データキャッシュＤＣＡＣＨＥからデータＤＴを読み出し、または、データキャッシュＤＣＡＣＨＥにデータＤＴを書き込む。また、制御回路ＤＣＣＮＴは、外部（例えば、二次キャッシュ部Ｌ２）から転送されるデータをデータキャッシュＤＣＡＣＨＥに書き込み、データキャッシュＤＣＡＣＨＥに記憶されたデータをコア部ＣＯＲＥの外部に出力する。
【００３８】
命令制御部ＩＵＮＩＴは、命令バッファＩＢＵＦ、デコード部ＤＥＣ、リザベーションステーションＲＳＥ（Reservation Station for Execution）、ＲＳＡ（Reservation Station for Address）および実行制御部ＥＸＣＮＴｅ、ＥＸＣＮＴａを有する。リザベーションステーションＲＳＥ、ＲＳＡにより、プログラムに記述された命令の順序と異なる順序で命令が実行されるアウトオブオーダ機構が実現される。リザベーションステーションＲＳＡは、第１の命令保持部の一例であり、リザベーションステーションＲＳＥは、第２の命令保持部の一例である。実行制御部ＥＸＣＮＴｅは、第１の制御部の一例であり、実行制御部ＥＸＣＮＴａは、第２の制御部の一例である。
【００３９】
命令バッファＩＢＵＦは、命令キャッシュＩＣＡＣＨＥから読み出されるデータ（プログラム）を保持する複数の領域を有する。命令バッファＩＢＵＦは、保持したデータを命令ＩＮＳとして順次にデコード部ＤＥＣに出力する。
【００４０】
デコード部ＤＥＣは、命令バッファＩＢＵＦから受ける命令ＩＮＳをデコードし、デコード結果に基づいて、デコードした命令をリザベーションステーションＲＳＥまたはリザベーションステーションＲＳＡに出力する。例えば、デコード部ＤＥＣは、デコードした命令ＩＮＳがロード命令やストア命令などのアクセスアドレスの計算を伴う命令ＩＮＳａ（以下、アクセス命令とも称する）の場合に、アクセス命令ＩＮＳａをリザベーションステーションＲＳＡに出力する。演算命令ＩＮＳａは、第１の種別の命令の一例である。
【００４１】
デコード部ＤＥＣは、デコードした命令ＩＮＳが演算命令ＩＮＳｅ（例えば、整数演算命令）の場合に、演算命令ＩＮＳｅをリザベーションステーションＲＳＥに出力する。演算命令ＩＮＳｅは、第２の種別の命令の一例である。
【００４２】
また、デコード部ＤＥＣは、リザベーションステーションＲＳＥに対応するカウンタＣＯＵＮＴｅおよびリザベーションステーションＲＳＡに対応するカウンタＣＯＵＮＴａを有する。カウンタＣＯＵＮＴｅは、リザベーションステーションＲＳＥに蓄積された演算命令ＩＮＳｅの数を示す。カウンタＣＯＵＮＴｅは、デコード部ＤＥＣからリザベーションステーションＲＳＥに演算命令ＩＮＳｅが投入される毎に計数値を”１”ずつインクリメントし、開放通知ＦＲＥＥｅを受ける毎に計数値を”１”ずつデクリメントする。
【００４３】
カウンタＣＯＵＮＴａは、リザベーションステーションＲＳＡに蓄積されたアクセス命令ＩＮＳａの数を示す。カウンタＣＯＵＮＴａは、デコード部ＤＥＣからリザベーションステーションＲＳＡにアクセス命令ＩＮＳａが投入される毎に計数値を”１”ずつインクリメントし、開放通知ＦＲＥＥａを受ける毎に計数値を”１”ずつデクリメントする。
【００４４】
リザベーションステーションＲＳＥは、例えば、デコード部ＤＥＣから投入される演算命令ＩＮＳｅを保持する複数のエントリＥＮＴｅを有する。各エントリＥＮＴｅは、演算命令ＩＮＳｅを格納する命令領域と、命令領域に格納された演算命令ＩＮＳｅが有効か無効かを示すバリッドフラグＶとを有する。例えば、命令領域に格納されるデータは、命令コードを示す情報および使用するレジスタの番号を含む。
【００４５】
リザベーションステーションＲＳＥは、デコード部ＤＥＣからの演算命令ＩＮＳｅの投入に基づいてバリッドフラグＶをセットし、開放通知ＦＲＥＥｅの受信に基づいてバリッドフラグＶをリセットする。すなわち、リザベーションステーションＲＳＥは、開放通知ＦＲＥＥｅを入力した場合に、入力した開放通知ＦＲＥＥｅに対応する演算命令ＩＮＳｅを保持するエントリＥＮＴｅを開放する。
【００４６】
なお、リザベーションステーションＲＳＥは、演算命令ＩＮＳｅの実行部ＥＵＮＩＴへの投入に基づいてセットされ、対応する完了通知ＳＴＶに応答してリセットされる投入フラグを、命令領域毎に有してもよい。投入フラグにより、実行部ＥＵＮＩＴにより実行されていない演算命令ＩＮＳｅが、リザベーションステーションＲＳＥから重複して投入されることが禁止される。
【００４７】
リザベーションステーションＲＳＥは、実行部ＥＵＮＩＴに投入した演算命令ＩＮＳｅに対応する完了通知ＳＴＶを所定時間受けない場合にも、投入フラグをリセットする。所定時間実行されない演算命令ＩＮＳｅは、実行部ＥＵＮＩＴによりアボートされた可能性がある。例えば、演算命令ＩＮＳｅのアボートは、ロード命令に伴うデータが、キャッシュミス等により記憶部ＭＵＮＩＴからレジスタに転送されない場合で、演算命令ＩＮＳｅがそのレジスタを参照する場合に発生する。投入フラグにより、リザベーションステーションＲＳＥは、実行部ＥＵＮＩＴに投入されてから所定時間を経過した演算命令ＩＮＳｅを実行部ＥＵＮＩＴに再び投入できる。
【００４８】
リザベーションステーションＲＳＡは、例えば、デコード部ＤＥＣから投入されるアクセス命令ＩＮＳａを保持する複数のエントリＥＮＴａを有する。各エントリＥＮＴａは、アクセス命令ＩＮＳａを格納する命令領域と、命令領域に格納されたアクセス命令ＩＮＳａが有効か無効かを示すバリッドフラグＶとを有する。例えば、命令領域に格納されるデータは、命令コードを示す情報および使用するレジスタの番号を含む。
【００４９】
リザベーションステーションＲＳＡは、デコード部ＤＥＣからのアクセス命令ＩＮＳａの投入に基づいてバリッドフラグＶをセットし、開放通知ＦＲＥＥａの受信に基づいてバリッドフラグＶをリセットする。すなわち、リザベーションステーションＲＳＡは、開放通知ＦＲＥＥａを入力した場合に、入力した開放通知ＦＲＥＥａに対応する演算命令ＩＮＳａを保持するエントリＥＮＴａを開放する。
【００５０】
なお、リザベーションステーションＲＳＡは、アクセス命令ＩＮＳａの実行部ＥＵＮＩＴへの投入に基づいてセットされ、対応する完了通知ＳＴＶに応答してリセットされる投入フラグを、命令領域毎に有してもよい。投入フラグにより、実行部ＥＵＮＩＴにより実行されていないアクセス命令ＩＮＳａが、リザベーションステーションＲＳＡから重複して投入されることが禁止される。
【００５１】
リザベーションステーションＲＳＡは、実行部ＥＵＮＩＴに投入したアクセス命令ＩＮＳａに対応する完了通知ＳＴＶを所定時間受けない場合にも、投入フラグをリセットする。所定時間実行されない演算命令ＩＮＳａは、実行部ＥＵＮＩＴによりアボートされた可能性がある。例えば、アクセス命令ＩＮＳａのアボートは、ロード命令に伴うデータが、キャッシュミス等により記憶部ＭＵＮＩＴからレジスタに転送されない場合に発生する。投入フラグにより、リザベーションステーションＲＳＡは、実行部ＥＵＮＩＴに投入されてから所定時間を経過した演算命令ＩＮＳａを実行部ＥＵＮＩＴに再び投入できる。
【００５２】
なお、命令制御部ＩＵＮＩＴは、リザベーションステーションＲＳＥ、ＲＳＡ以外に、浮動小数点の演算命令用のリザベーションステーションや分岐命令用のリザベーションステーションを有してもよい。
【００５３】
実行制御部ＥＸＣＮＴｅは、リザベーションステーションＲＳＥから実行部ＥＵＮＩＴに投入される演算命令ＩＮＳｅと完了通知ＳＴＶとを受け、開放通知ＦＲＥＥｅを出力する。開放通知ＦＲＥＥｅは、演算命令ＩＮＳｅの実行の完了を示す情報と、実行が完了した演算命令ＩＮＳｅを保持したエントリＥＮＴｅを示す情報とを含む。開放通知ＦＲＥＥｅの出力タイミングは、実行部ＥＵＮＩＴで順次に実行される演算命令ＩＮＳｅおよびアクセス命令ＩＮＳａの実行タイミングとレジスタの依存関係とに応じて変化する。実行制御部ＥＸＣＮＴｅの例は、図５に示す。開放通知ＦＲＥＥｅの出力タイミングの例は、図８から図１８に示す。
【００５４】
実行制御部ＥＸＣＮＴａは、リザベーションステーションＲＳＥから実行部ＥＵＮＩＴに投入されるアクセス命令ＩＮＳａと完了通知ＳＴＶとを受け、開放通知ＦＲＥＥａを出力する。開放通知ＦＲＥＥａは、アクセス命令ＩＮＳａの実行の完了を示す情報と、実行が完了したアクセス命令ＩＮＳａを保持したエントリＥＮＴａを示す情報とを含む。開放通知ＦＲＥＥａの出力タイミングは、実行部ＥＵＮＩＴで順次に実行される演算命令ＩＮＳｅおよびアクセス命令ＩＮＳａの実行タイミングとレジスタの依存関係とに応じて変化する。実行制御部ＥＸＣＮＴａの例は、図６に示す。開放通知ＦＲＥＥａの出力タイミングの例は、図８から図１８に示す。
【００５５】
実行部ＥＵＮＩＴは、アドレス生成部ＥＡＧ、演算部ＦＥＵ、レジスタ部ＲＥＧおよびセレクタＳＥＬｅ、ＳＥＬａを有する。レジスタ部ＲＥＧは、演算命令ＩＮＳｅおよびアクセス命令ＩＮＳａで使用する複数のレジスタ（図８等に示すレジスタｇ１、ｇ２、ｇ３等）を有する。アドレス生成部ＥＡＧは、第１の種別の命令を実行する第１の命令実行部の一例である。演算部ＦＥＵは、第２の種別の命令を実行する第２の命令実行部の一例である。
【００５６】
アドレス生成部ＥＡＧは、リザベーションステーションＲＳＡから投入されるアクセス命令ＩＮＳａおよびセレクタＳＥＬａからのデータを受け、データキャッシュＤＣＡＣＨＥのアクセス先を示すアクセスアドレスＡＤを生成する。セレクタＳＥＬａは、リザベーションステーションＲＳＥからの即値、レジスタ部ＲＥＧからのデータＤＴａまたはデータキャッシュＤＣＡＣＨＥからのデータＤＴをアドレス生成部ＥＡＧに出力する。
【００５７】
演算部ＦＥＵは、リザベーションステーションＲＳＥから投入される演算命令ＩＮＳｅおよびセレクタＳＥＬｅからのデータを受け、演算（例えば、固定小数点の演算）を実行する。セレクタＳＥＬｅは、リザベーションステーションＲＳＥからの即値、レジスタ部ＲＥＧからのデータＤＴｅまたはデータキャッシュＤＣＡＣＨＥからのデータＤＴを、演算部ＦＥＵ内の演算器毎に出力する。
【００５８】
データキャッシュＤＣＡＣＨＥからセレクタＳＥＬａおよびセレクタＳＥＬｅに転送されるデータＤＴの経路は、後述するバイパス処理に使用される。なお、実行部ＥＵＮＩＴは、演算部ＦＥＵ以外に、浮動小数点の演算部を有してもよい。
【００５９】
図４は、図３に示したコア部ＣＯＲＥが搭載される情報処理装置ＩＰＤおよび演算処理装置ＯＰＤの例を示す。情報処理装置ＩＰＤは、演算処理装置ＯＰＤおよび記憶装置ＭＥＭを有する。例えば、記憶装置ＭＥＭは、複数のＤＲＡＭ（Dynamic Random Access Memory）が搭載されたＤＩＭＭ（Dual Inline Memory Module）等のメモリモジュールである。
【００６０】
演算処理装置ＯＰＤは、少なくとも１つのコア部ＣＯＲＥ、二次キャッシュ部Ｌ２およびメモリアクセスコントローラＭＡＣを有する。二次キャッシュ部Ｌ２は、複数のコア部ＣＯＲＥに共通に設けられ、二次キャッシュメモリおよび二次キャッシュメモリの制御回路を有する。メモリアクセスコントローラＭＡＣは、各コア部ＣＯＲＥからのアクセス要求に対応するデータが二次キャッシュメモリに格納されていない場合（キャッシュミス）、二次キャッシュ部Ｌ２からのアクセス要求に基づいて、記憶装置ＭＥＭにアクセスする。
【００６１】
なお、メモリアクセスコントローラＭＡＣは、演算処理装置ＯＰＤの外部に配置されてもよい。また、二次キャッシュ部Ｌ２が記憶装置ＭＥＭのアクセスを制御する機能を有する場合、記憶装置ＭＥＭは、メモリアクセスコントローラＭＡＣを介することなく二次キャッシュ部Ｌ２に接続される。この場合、演算処理装置ＯＰＤは、メモリアクセスコントローラＭＡＣを持たない。
【００６２】
図５は、図３に示した実行制御部ＥＸＣＮＴａの例を示す。図５は、実行制御部ＥＸＣＮＴａにおける開放通知ＦＲＥＥａの生成回路を示す。実行制御部ＥＸＣＮＴａは、サイクル生成器ＣＧＥＮａ１、ＣＧＥＮａ２、信号生成器ＦＧＥＮａ１、ＦＧＥＮａ２およびマスク回路ＦＭＳＫａを有する。
【００６３】
以下に、命令を複数のステージに分けて実行するパイプラインの各サイクル（ステージ）について説明する。例えば、ロード命令ｌｄ等のアクセス命令ＩＮＳａは、次のサイクルを有する。
Ｄ（Decode）サイクル：デコード部ＤＥＣがデコード動作を実行し、デコードした命令ＩＮＳａをリザベーションステーションＲＳＡに投入するサイクル。
Ｐ（Priority）サイクル：リザベーションステーションＲＳＡがアドレス生成部ＥＡＧにアクセス命令ＩＮＳａを投入するサイクル。
Ｂ１（Buffer）サイクル：アドレスの計算に必要な値をレジスタから読み出すサイクル。
Ｂ２（Buffer）サイクル：セレクタＳＥＬａがアドレス生成部ＥＡＧにデータを供給するサイクル。
Ａサイクル（Address）：アドレス生成部ＥＡＧがデータキャッシュＤＣＡＣＨＥにアクセスするアクセスアドレスＡＤを計算するサイクル。
Ｔ（Tag）サイクル：アドレス生成部ＥＡＧから受けたアクセスアドレスＡＤを用いてデータキャッシュＤＣＡＣＨＥがタグにアクセスするサイクル。
Ｍ（Match）サイクル：データキャッシュＤＣＡＣＨＥが、タグへのアクセスに基づいてキャッシュヒット／キャッシュミスを判定するサイクル。
Ｂ（Buffer）サイクル：データキャッシュＤＣＡＣＨＥが出力したデータＤＴをレジスタ部ＲＥＧのレジスタに転送するサイクル。
Ｒ（Result）サイクル：データキャッシュＤＣＡＣＨＥからのデータＤＴの読み出しの完了を示すサイクル。
なお、ＤサイクルとＰサイクルとの間に挿入されるクロックサイクル数は、リザベーションステーションＲＳＡの動作に応じて異なるため、後述する図８から図１８では、Ｄサイクルの記載を省略する。
【００６４】
加算命令ａｄｄの演算命令ＩＮＳｅは、次のサイクルを有する。
Ｄ（Decode）サイクル：デコード部ＤＥＣがデコード動作を実行し、デコードした命令ＩＮＳｅをリザベーションステーションＲＳＥに投入するサイクル。
Ｐ（Priority）サイクル：リザベーションステーションＲＳＥが演算部ＦＥＵに演算命令ＩＮＳｅを投入するサイクル。
Ｂ１（Buffer）サイクル：演算に必要なデータをレジスタから読み出すサイクル。
Ｂ２（Buffer）サイクル：セレクタＳＥＬｅが、演算するデータを実行部ＥＵＮＩＴに供給するサイクル。
Ｘ（Execute）サイクル：演算部ＦＥＵが、セレクタＳＥＬｅから供給されたデータを演算し、演算結果をレジスタ部ＲＥＧのレジスタに出力するサイクル。
なお、ロード命令ｌｄと同様に、ＤサイクルとＰサイクルとの間に挿入されるクロックサイクル数は、リザベーションステーションＲＳＥの動作に応じて異なるため、図８から図１８では、Ｄサイクルの記載を省略する。
【００６５】
サイクル生成器ＣＧＥＮａ１は、クロックＣＬＫに同期して動作する縦続接続されたラッチ回路ＬＴ１、ＬＴ２、ＬＴ３、ＬＴ９を有する。ラッチ回路ＬＴ１は、アクセス命令ＩＮＳａのＰサイクルを示すバリッド信号ＰＶＬＤａを受ける。バリッド信号ＰＶＬＤａは、リザベーションステーションＲＳＡからアドレス生成部ＥＡＧに投入されるアクセス命令ＩＮＳａを、実行制御部ＥＸＣＮＴａがモニタすることによって生成される。
【００６６】
ラッチ回路ＬＴ３は、バリッド信号ＰＶＬＤａを３クロックサイクル遅らせたバリッド信号ＡＶＬＤａを生成する。バリッド信号ＡＶＬＤａは、アクセス命令ＩＮＳａのＡサイクルを示す。ラッチ回路ＬＴ９は、バリッド信号ＰＶＬＤａを４クロックサイクル遅らせたバリッド信号ＴＶＬＤａを生成する。バリッド信号ＴＶＬＤａは、アクセス命令ＩＮＳａのＴサイクルを示す。Ｔサイクルは、アドレス生成部ＥＡＧから受けたアクセスアドレスＡＤを用いてデータキャッシュＤＣＡＣＨＥがタグにアクセスするサイクルである。
【００６７】
サイクル生成器ＣＧＥＮａ２は、比較回路ＣＭＰａと、比較回路ＣＭＰａの出力に縦続接続され、クロックＣＬＫに同期して動作するラッチ回路ＬＴ５、ＬＴ６、ＬＴ７、ＬＴ８を有する。比較回路ＣＭＰａは、排他的否定論理和回路ＥＮＯＲ１およびアンド回路ＡＮＤ６、ＡＮＤ７を有する。
【００６８】
排他的否定論理和回路ＥＮＯＲ１は、レジスタ信号ＰＲＥＧａ、ＴＲＥＧａにより示されるレジスタの番号が一致する場合にハイレベルの重複信号ＲＥＧＬＡＰａを出力する。排他的否定論理和回路ＥＮＯＲ１は、レジスタ信号ＰＲＥＧａ、ＴＲＥＧａにより示されるレジスタの番号が互いに異なる場合にロウレベルの重複信号ＲＥＧＬＡＰａを出力する。
【００６９】
実行制御部ＥＸＣＮＴａは、リザベーションステーションＲＳＡからアドレス生成部ＥＡＧに順次に投入されるアクセス命令ＩＮＳａをモニタし、各アクセス命令ＩＮＳａで使用されるレジスタの番号を順次に保持する。レジスタ信号ＰＲＥＧａは、各アクセス命令ＩＮＳａのＰサイクルでのレジスタの番号である。レジスタ信号ＴＲＥＧａは、各アクセス命令ＩＮＳａのＰサイクルでのレジスタの番号を順次に遅らせたＴサイクルでのレジスタの番号である。レジスタの番号をＴサイクルまで保持する回路は、図７に示す。
【００７０】
なお、レジスタ信号ＰＲＥＧａは、アクセス命令ＩＮＳａのＡサイクルでアクセスアドレスＡＤの計算に使用するレジスタ（ソース）のレジスタの番号を示す。レジスタ信号ＴＲＥＧａは、アクセス命令ＩＮＳａのＲサイクルでデータが格納されるレジスタ（ディスティネーション）のレジスタの番号を示す。すなわち、排他的否定論理和回路ＥＮＯＲ１は、アクセス命令ＩＮＳａにより読み出されたデータを格納するレジスタと、アクセス命令ＩＮＳａによりデータ（アドレス）を読み出すレジスタとが一致する場合、ハイレベルの重複信号ＲＥＧＬＡＰａを出力する。
【００７１】
例えば、レジスタ番号が３ビットのレジスタ信号ＰＲＥＧａ、ＴＲＥＧａによりそれぞれ示される場合、排他的否定論理和回路ＥＮＯＲ１は、３ビットの各々を比較して、全てのビットが一致する場合に重複信号ＲＥＧＬＡＰａを生成する。
【００７２】
アンド回路ＡＮＤ６は、バリッド信号ＰＶＬＤａ、ＴＶＬＤａが互いに同じクロックサイクルに生成される場合にハイレベルの一致信号ＰＴａを出力する。アンド回路ＡＮＤ６は、バリッド信号ＰＶＬＤａ、ＴＶＬＤａが互いに異なるクロックサイクルに生成される場合にロウレベルの一致信号ＰＴａを出力する。すなわち、アンド回路ＡＮＤ６は、先行するアクセス命令ＩＮＳａのＴサイクルと、後続するアクセス命令ＩＮＳａのＰサイクルの実行サイクルが互いに同じ場合、ハイレベルの一致信号ＴＰａを出力する。
【００７３】
アンド回路ＡＮＤ７は、一致信号ＴＰａおよび重複信号ＲＥＧＬＡＰａがともにハイレベルの場合にハイレベルのバイパス信号ＢＹＰＳ０ａを出力する。アンド回路ＡＮＤ７は、一致信号ＴＰａまたは重複信号ＲＥＧＬＡＰａがロウレベルの場合にロウレベルのバイパス信号ＢＹＰＳ０ａを出力する。
【００７４】
バイパス信号ＢＹＰＳ０ａは、アクセス命令ＩＮＳａに伴ってデータＤＴを格納するレジスタが、アクセス命令ＩＮＳａの後に実行される別のアクセス命令ＩＮＳａで使用されることにより、バイパス処理が実行される場合に生成される。換言すれば、バイパス信号ＢＹＰＳ０ａは、次の条件（ａ）、（ｂ）をともに満たす場合に生成される。
（ａ）先行するアクセス命令ＩＮＳａの実行が完了されるタイミングと、後続するアクセス命令ＩＮＳａによりアクセスアドレスが計算されるタイミングとが所定の関係にある。
（ｂ）先行するアクセス命令ＩＮＳａにより演算結果が書き込まれるレジスタが、後続するアクセス命令ＩＮＳａによって使用される。
【００７５】
例えば、バイパス信号ＢＹＰＳ０ａは、先行するロード命令のＲサイクルと同一のサイクルで、後続するロード命令のＡサイクルが実行され、且つ、先行するロード命令のＲサイクルでデータを書き込むレジスタが後続するロード命令のＡサイクルで使用される場合に、後続するロード命令のＰサイクルで出力される。
【００７６】
ラッチ回路ＬＴ５、ＬＴ６、ＬＴ７、ＬＴ８は、バイパス信号ＢＹＰＳ０ａをクロックＣＬＫに同期して順次に遅らせる。ラッチ回路ＬＴ７は、バイパス信号ＢＹＰＳ０ａを３クロックサイクル遅らせたバイパス信号ＢＹＰＳ３ａを生成する。ラッチ回路ＬＴ８は、バイパス信号ＢＹＰＳ０ａを４クロックサイクル遅らせたバイパス信号ＢＹＰＳ４ａを生成する。
【００７７】
信号生成器ＦＧＥＮａ１は、インバータＩＶ１、ＩＶ２およびアンド回路ＡＮＤ３、ＡＮＤ４を有する。インバータＩＶ１は、バイパス信号ＢＹＰＳ３ａの論理を反転してアンド回路ＡＮＤ３に出力する。アンド回路ＡＮＤ３は、バイパス信号ＢＹＰＳ３ａがロウレベルの期間に、バリッド信号ＡＶＬＤａをアンド回路ＡＮＤ４に供給し、バイパス信号ＢＹＰＳ３ａがハイレベルの期間に、バリッド信号ＡＶＬＤａのアンド回路ＡＮＤ４への供給を禁止する。
【００７８】
インバータＩＶ２は、開放信号ＢＦＲａの論理を反転してアンド回路ＡＮＤ４に出力する。アンド回路ＡＮＤ４は、開放信号ＢＲＦａがロウレベルの期間に、アンド回路ＡＮＤ３の出力を開放信号ＸＦＲａとして出力し、開放信号ＢＦＲａがハイレベルの期間に、バリッド信号ＸＶＬＤａによる開放信号ＸＦＲｅの生成を禁止する。信号生成器ＦＧＥＮａ１は、後述する図８等に示すように、アクセス命令ＩＮＳａのＡサイクルで開放通知ＦＲＥＥａを生成する回路の一部である。アンド回路ＡＮＤ３、ＡＮＤ４は、Ａサイクルでの開放通知ＦＲＥＥａの生成を抑止する回路である。
【００７９】
信号生成器ＦＧＥＮａ２は、オア回路ＯＲ１、アンド回路ＡＮＤ２およびラッチ回路ＬＴ４を有する。オア回路ＯＲ１は、バイパス信号ＢＹＰＳ３ａまたはラッチ回路ＬＴ４から出力される開放信号ＢＦＲａをアンド回路ＡＮＤ２に出力する。アンド回路ＡＮＤ２は、バリッド信号ＡＶＬＤａがハイレベルの期間にオア回路ＯＲ１を介して受けるハイレベルのバイパス信号ＢＹＰＳ３ａまたはハイレベルの開放信号ＢＦＲａをラッチ回路ＬＴ４に出力する。
【００８０】
ラッチ回路ＬＴ４は、データ入力Ｄでハイレベルを受ける場合に、クロックＣＬＫに同期してセットされてハイレベルを出力し、データ入力Ｄでロウレベルを受ける場合に、クロックＣＬＫに同期してリセットされてロウレベルを出力する。
【００８１】
ラッチ回路ＬＴ４は、バリッド信号ＡＶＬＤａがハイレベルの期間に、オア回路ＯＲ１およびアンド回路ＡＮＤ２を介して受けるバイパス信号ＢＹＰＳ３ａまたは開放信号ＢＦＲａを１クロックサイクル遅らせて、開放信号ＢＦＲａとして出力する。バリッド信号ＡＶＬＤａがロウレベルの期間、バイパス信号ＢＹＰＳ３ａまたは開放信号ＢＦＲａのラッチ回路ＬＴ４への供給は、アンド回路ＡＮＤ２により禁止され、開放信号ＢＦＲａの生成が禁止される。信号生成器ＦＧＥＮａ２は、後述する図１６等に示すように、アクセス命令ＩＮＳａにおけるＡサイクルの次のサイクルで開放通知ＦＲＥＥａを生成する回路の一部である。
【００８２】
マスク回路ＦＭＳＫａは、インバータＩＶ３、ナンド回路ＮＡＮＤ１およびアンド回路ＡＮＤ５を有する。インバータＩＶ３は、完了通知ＳＴＶの論理を反転してナンド回路ＮＡＮＤ１に出力する。ナンド回路ＮＡＮＤ１は、完了通知ＳＴＶがハイレベルの期間またはバイパス信号ＢＹＰＳ４ａがロウレベルの期間にハイレベルを出力する。また、ナンド回路ＮＡＮＤ１は、バイパス信号ＢＹＰＳ４ａがハイレベルで、完了通知ＳＴＶがロウレベルの期間にロウレベルを出力する。換言すれば、マスク回路ＦＭＳＫａは、アクセス命令ＩＮＳａのＡサイクルの次のサイクルでバイパス信号ＢＹＰＳ４ａが生成され、完了通知ＳＴＶが生成されない場合、開放通知ＦＲＥＥａの出力を禁止し、アクセス命令ＩＮＳａの実行を保留する。
【００８３】
アンド回路ＡＮＤ５は、ナンド回路ＮＡＮＤ１がハイレベルを出力する期間に、オア回路ＯＲ２を介して受ける開放信号ＸＦＲａまたは開放信号ＢＦＲａを開放通知ＦＲＥＥａとして出力する。また、アンド回路ＡＮＤ５は、ナンド回路ＮＡＮＤ１がロウレベルを出力する期間に、開放信号ＸＦＲａまたは開放信号ＢＦＲａに基づく開放通知ＦＲＥＥｅの出力を禁止する。
【００８４】
なお、上述したように、開放通知ＦＲＥＥａは、アクセス命令ＩＮＳａの実行の完了を示す情報と、実行が完了したアクセス命令ＩＮＳａを保持したエントリＥＮＴａを示す情報とを含む。マスク回路ＦＭＳＫａが出力する開放通知ＦＲＥＥａは、アクセス命令ＩＮＳａの実行の完了を示す開放信号ＦＲＥＥａである。開放通知ＦＲＥＥａのうち、実行が完了したアクセス命令ＩＮＳａを保持したエントリＥＮＴａを示す情報は、実行制御部ＥＸＣＮＴａがモニタし、保持したアクセス命令ＩＮＳａを用いて、開放信号ＦＲＥＥａとともに出力される。
【００８５】
図６は、図３に示した実行制御部ＥＸＣＮＴｅの例を示す。図５に示した実行制御部ＥＸＣＮＴａと同一または同様の要素については、詳細な説明は省略する。図６は、実行制御部ＥＸＣＮＴｅにおける開放通知ＦＲＥＥｅの生成回路を示す。実行制御部ＥＸＣＮＴｅは、サイクル生成器ＣＧＥＮｅ１、ＣＧＥＮｅ２、信号生成器ＦＧＥＮｅ１、ＦＧＥＮｅ２およびマスク回路ＦＭＳＫｅを有する。
【００８６】
サイクル生成器ＣＧＥＮｅ２、信号生成器ＦＧＥＮｅ１、ＦＧＥＮｅ２およびマスク回路ＦＭＳＫｅは、図５に示したサイクル生成器ＣＧＥＮａ２、信号生成器ＦＧＥＮａ１、ＦＧＥＮａ２およびマスク回路ＦＭＳＫａとそれぞれ同一または同様の回路である。
【００８７】
サイクル生成器ＣＧＥＮｅ１は、図５に示したサイクル生成器ＣＧＥＮａ１からラッチ回路ＬＴ９を削除している。サイクル生成器ＣＧＥＮｅ１のラッチ回路ＬＴ３は、ラッチ回路ＬＴ１で受けたバリッド信号ＰＶＬＤｅを３クロックサイクル遅らせてバリッド信号ＸＶＬＤｅを生成する。バリッド信号ＰＶＬＤｅは、演算命令ＩＮＳｅのＰサイクルを示す。バリッド信号ＸＶＬＤｅは、演算命令ＩＮＳｅのＸサイクルを示す。
【００８８】
サイクル生成器ＣＧＥＮｅ２の排他的否定論理和回路ＥＮＯＲ１は、レジスタ信号ＰＲＥＧｅ、ＴＲＥＧａにより示されるレジスタの番号が一致する場合にハイレベルの重複信号ＲＥＧＬＡＰｅを出力する。排他的否定論理和回路ＥＮＯＲ１は、レジスタ信号ＰＲＥＧｅ、ＴＲＥＧａにより示されるレジスタの番号が互いに異なる場合にロウレベルの重複信号ＲＥＧＬＡＰｅを出力する。レジスタ信号ＴＲＥＧａは、図５に示した実行制御部ＥＸＣＮＴａのラッチ回路ＬＴ９が出力する。
【００８９】
実行制御部ＥＸＣＮＴｅは、リザベーションステーションＲＳＥから演算部ＦＥＵに順次に投入される演算命令ＩＮＳｅをモニタし、各演算命令ＩＮＳｅで使用されるレジスタの番号を示すレジスタ信号ＰＲＥＧｅを生成する。レジスタ信号ＰＲＥＧｅは、各演算命令ＩＮＳｅのＰサイクルでのレジスタの番号である。
【００９０】
なお、レジスタ信号ＰＲＥＧｅは、演算命令ＩＮＳｅのＢ１サイクルにおいて、演算に使用するデータが読み出されるレジスタの番号を示す。すなわち、サイクル生成器ＣＧＥＮｅ２の排他的否定論理和回路ＥＮＯＲ１は、アクセス命令ＩＮＳａにより読み出されたデータを格納するレジスタと、演算命令ＩＮＳｅによりデータを読み出すレジスタとが一致する場合、ハイレベルの重複信号ＲＥＧＬＡＰｅを出力する。
【００９１】
例えば、レジスタ番号が３ビットのレジスタ信号ＰＲＥＧｅ、ＴＲＥＧａによりそれぞれ示される場合、排他的否定論理和回路ＥＮＯＲ１は、３ビットの各々を比較して、全てのビットが一致する場合に重複信号ＲＥＧＬＡＰｅを生成する。
【００９２】
なお、演算命令ＩＮＳｅでは、演算に使用するデータが複数のレジスタに格納される場合がある。このため、比較回路ＣＭＰｅは、演算命令ＩＮＳｅで使用される複数のレジスタのレジスタ番号を示す複数のレジスタ信号ＰＲＥＧｅ（例えば、ＰＲＥＧｅ０とＰＲＥＧｅ１）とレジスタ信号ＴＲＥＧａとを比較する複数の排他的論理和回路ＥＮＯＲ１を有する。そして、重複信号ＲＥＧＬＡＰｅは、排他的論理和回路ＥＮＯＲ１の１つがハイレベルを出力する場合に生成される。
【００９３】
アンド回路ＡＮＤ６は、バリッド信号ＰＶＬＤｅ、ＴＶＬＤａが互いに同じクロックサイクルに生成される場合にハイレベルの一致信号ＰＴｅを出力する。アンド回路ＡＮＤ６は、バリッド信号ＰＶＬＤｅ、ＴＶＬＤａが互いに異なるクロックサイクルに生成される場合にロウレベルの一致信号ＰＴｅを出力する。バリッド信号ＴＶＬＤａは、アクセス命令ＩＮＳａのＴサイクルを示し、図５に示した実行制御部ＥＸＣＮＴａにより生成される。すなわち、アンド回路ＡＮＤ６は、アクセス命令ＩＮＳａのＴサイクルと、演算命令ＩＮＳｅのＰサイクルとの実行サイクルが互いに同じ場合に、ハイレベルの一致信号ＴＰｅを出力する。
【００９４】
アンド回路ＡＮＤ７は、一致信号ＴＰｅおよび重複信号ＲＥＧＬＡＰｅがともにハイレベルの場合にハイレベルのバイパス信号ＢＹＰＳ０ｅを出力する。アンド回路ＡＮＤ７は、一致信号ＴＰｅまたは重複信号ＲＥＧＬＡＰｅがロウレベルの場合にロウレベルのバイパス信号ＢＹＰＳ０ｅを出力する。
【００９５】
バイパス信号ＢＹＰＳ０ｅは、アクセス命令ＩＮＳａに伴ってデータＤＴを格納するレジスタが、アクセス命令ＩＮＳａの後に実行される演算命令ＩＮＳｅで使用されることにより、バイパス処理が実行される場合に生成される。換言すれば、バイパス信号ＢＹＰＳ０ｅは、次の条件（ｃ）、（ｄ）をともに満たす場合に生成される。
（ｃ）先行するアクセス命令ＩＮＳａの実行が完了されるタイミングと、後続する演算命令ＩＮＳｅの実行が完了されるタイミングとが所定の関係にある。
（ｄ）先行するアクセス命令ＩＮＳａにより演算結果が書き込まれるレジスタが、後続する演算命令ＩＮＳｅによって使用される。
【００９６】
例えば、バイパス信号ＢＹＰＳ０ｅは、先行するロード命令のＲサイクルと同一のサイクルで、後続する演算命令ＩＮＳｅのＸサイクルが実行され、且つ、先行するロード命令のＲサイクルでデータを書き込むレジスタが後続する演算命令のＸサイクルで使用される場合に、先行するロード命令のＴサイクルで出力される。
【００９７】
ラッチ回路ＬＴ７は、バイパス信号ＢＹＰＳ０ｅを３クロックサイクル遅らせてバイパス信号ＢＹＰＳ３ｅを生成する。ラッチ回路ＬＴ８は、バイパス信号ＢＹＰＳ３ａを１サイクル遅らせたバイパス信号ＢＹＰＳ４ａを生成する。
【００９８】
信号生成器ＦＧＥＮｅ１は、バイパス信号ＢＹＰＳ３ｅがロウレベルで、開放信号ＢＦＲｅがロウレベルの期間に、バリッド信号ＸＶＬＤｅを開放信号ＸＦＲｅとして出力する。信号生成器ＦＧＥＮｅ１は、バイパス信号ＢＹＰＳ３ｅがハイレベルの期間、または開放信号ＢＦＲｅがハイレベルの期間に、バリッド信号ＸＶＬＤｅによる開放信号ＸＦＲｅの生成を禁止する。信号生成器ＦＧＥＮｅ１は、後述する図９、図１０等に示すように、演算命令ＩＮＳｅのＸサイクルで開放通知ＦＲＥＥｅを生成する回路の一部である。アンド回路ＡＮＤ３、ＡＮＤ４は、Ｘサイクルでの開放通知ＦＲＥＥｅの生成を抑止する回路である。
【００９９】
信号生成器ＦＧＥＮｅ２は、バリッド信号ＸＶＬＤｅがハイレベルの期間に、ハイレベルのバイパス信号ＢＹＰＳ３ｅまたはハイレベルの開放信号ＢＦＲｅをラッチ回路ＬＴ４により１クロックサイクル遅らせて、開放信号ＢＦＲｅとして出力する。また、信号生成器ＦＧＥＮｅ２は、バリッド信号ＸＶＬＤｅがロウレベルの期間に、バイパス信号ＢＹＰＳ３ｅまたは開放信号ＢＦＲｅによる開放信号ＢＦＲｅの生成を禁止する。信号生成器ＦＧＥＮｅ２は、後述する図８等に示すように、演算命令ＩＮＳｅにおけるＸサイクルの次のサイクルで開放通知ＦＲＥＥｅを生成する回路の一部である。
【０１００】
マスク回路ＦＭＳＫｅは、完了通知ＳＴＶがハイレベルの期間またはバイパス信号ＢＹＰＳ４ｅがロウレベルの期間にオア回路ＯＲ２を介して受ける開放信号ＸＦＲｅまたは開放信号ＢＦＲｅを開放通知ＦＲＥＥｅとして出力する。また、マスク回路ＦＭＳＫｅは、バイパス信号ＢＹＰＳ４ｅがハイレベルで、完了通知ＳＴＶがロウレベルの期間に、開放信号ＸＦＲｅまたは開放信号ＢＦＲｅに基づく開放通知ＦＲＥＥｅの出力を禁止する。換言すれば、マスク回路ＦＭＳＫｅは、演算命令ＩＮＳｅのＸサイクルの次のサイクルでバイパス信号ＢＹＰＳ４ｅが生成され、完了通知ＳＴＶが生成されない場合、開放通知ＦＲＥＥｅの出力を禁止し、演算命令ＩＮＳｅの実行を保留する。
【０１０１】
なお、上述したように、開放通知ＦＲＥＥｅは、アクセス命令ＩＮＳｅの実行の完了を示す情報と、実行が完了したアクセス命令ＩＮＳｅを保持したエントリＥＮＴｅを示す情報とを含む。マスク回路ＦＭＳＫｅが出力する開放通知ＦＲＥＥｅは、演算命令ＩＮＳｅの実行の完了を示す開放信号ＦＲＥＥｅである。開放通知ＦＲＥＥｅのうち、実行が完了した演算命令ＩＮＳｅを保持したエントリＥＮＴｅを示す情報は、実行制御部ＥＸＣＮＴｅがモニタし、保持した演算命令ＩＮＳｅを用いて、開放信号ＦＲＥＥｅとともに出力される。
【０１０２】
図７は、図３に示した実行制御部ＥＸＣＮＴａにおけるレジスタの番号を保持する回路を示す。実行制御部ＥＸＣＮＴａは、クロックＣＬＫに同期して動作する縦続接続されたラッチ回路ＬＴ１０、ＬＴ１１、ＬＴ１２、ＬＴ１３を有する。ラッチ回路ＬＴ１０は、リザベーションステーションＲＳＡからアドレス生成部ＥＡＧに投入されるアクセス命令ＩＮＳａに含まれるレジスタの番号を示すレジスタ信号ＰＲＥＧａを受ける。ラッチ回路ＬＴ１３は、レジスタ信号ＰＲＥＧａを４クロックサイクル遅らせて、レジスタ信号ＴＲＥＧａを生成する。レジスタ信号ＰＲＥＧａは、各アクセス命令ＩＮＳａのＰサイクルに生成され、レジスタ信号ＴＲＥＧａは、各アクセス命令ＩＮＳａのＴサイクルに生成される。
【０１０３】
図８は、図３に示したコア部ＣＯＲＥを有する演算処理装置ＯＰＤの動作の例を示す。すなわち、図８は、演算処理装置ＯＰＤの制御方法を示す。この例では、リザベーションステーションＲＳＡは、アクセス命令ＩＮＳａの一種であるロード命令ｌｄをアドレス生成部ＥＡＧに投入する。リザベーションステーションＲＳＥは、演算命令ＩＮＳｅの一種である加算命令ａｄｄを演算部ＦＥＵに投入する。そして、実行部ＥＵＮＩＴは、命令（１）、（２）に示すロード命令ｌｄおよび加算命令ａｄｄを順次に実行する。
ｌｄ  ［％ｇ１＋％ｇ２］，％ｇ３  ‥‥  （１）
ａｄｄ  ％ｇ３，４，％ｇ４      ‥‥  （２）
命令（１）のロード命令ｌｄは、レジスタｇ１に格納された値とレジスタｇ２に格納された値とを加え、加えた値により示されるアクセスアドレスからデータを読み出し、レジスタｇ３に格納することを示す。命令（２）の加算命令ａｄｄは、レジスタｇ３に格納されたデータと即値”４”とを加算し、加算結果をレジスタｇ４に格納することを示す。例えば、レジスタｇ１、ｇ２、ｇ３、ｇ４は、図３に示したレジスタ部ＲＥＧ内に設けられる汎用レジスタである。
【０１０４】
命令（１）、（２）では、加算命令ａｄｄは、ロード命令ｌｄによりレジスタｇ３に読み出されたデータを用いて演算を実行する。すなわち、命令（１）、（２）は、レジスタの依存関係がある。また、ロード命令ｌｄのＴサイクルおよび加算命令ａｄｄのＰサイクルの実行サイクルは互いに同じである。このため、８番目のクロックサイクルでバイパス処理が実行される。
【０１０５】
アクセス命令ＩＮＳａにＢ１サイクルでは、レジスタｇ１、ｇ２からセレクタＳＥＬａにデータが読み出される。アクセス命令ＩＮＳａにおけるＢ２サイクルでは、セレクタＳＥＬａは、レジスタｇ１、ｇ２からの経路を選択し、レジスタｇ１、ｇ２から読み出されたデータをアドレス生成部ＥＡＧに供給する。
【０１０６】
アクセス命令ＩＮＳａにおけるＡサイクルでは、アドレス生成部ＥＡＧは、レジスタｇ１、ｇ２から読み出されたデータを加算し、アクセスアドレスＡＤを求める。アクセス命令ＩＮＳａにおけるＭサイクルで、キャッシュヒットが判定された場合、データキャッシュＤＣＡＣＨＥは、読み出したデータＤＴを実行部ＥＵＮＩＴに出力する。アクセス命令ＩＮＳａにおけるＢサイクルでは、データキャッシュＤＣＡＣＨＥから出力されたデータＤＴは、レジスタｇ３に格納される。
【０１０７】
一方、演算命令ＩＮＳｅにおけるＢ１サイクルではレジスタｇ３からセレクタＳＥＬｅにデータが読み出される。なお、この例では、バイパス処理が実行されるため、ＢサイクルでデータキャッシュＤＣＡＣＨＥからレジスタｇ３に向けて出力されるデータは、データキャッシュＤＣＡＣＨＥとセレクタＳＥＬｅとを接続するバイパス経路を介してセレクタＳＥＬｅにも供給される。
【０１０８】
演算命令ＩＮＳｅにおけるＢ２サイクルでは、セレクタＳＥＬａは、バイパス経路およびリザベーションステーションＲＳＥから出力された即値”４”を選択し演算部ＦＥＵに供給する。演算命令ＩＮＳｅにおけるＸサイクルでは、演算部ＦＥＵは、バイパス処理により得られたレジスタｇ３のデータと即値”４”とを加算し、加算結果をレジスタｇ４に格納する。
【０１０９】
図６に示した実行制御部ＥＸＣＮＴａのサイクル生成器ＣＧＥＮａ１は、ロード命令ｌｄのＰサイクルに生成されたバリッド信号ＰＶＬＤａを受け、Ａサイクルにバリッド信号ＡＶＬＤａを生成する（図８（ａ））。ロード命令ｌｄのＰサイクルは、他のアクセス命令ＩＮＳａのＴサイクルと重複しない。このため、サイクル生成器ＣＧＥＮａ２は、バイパス信号ＢＹＰＳ０ａ、ＢＹＰＳ３ａ、ＢＹＰＳ４ａをロウレベルに維持する（図８（ｂ））。
【０１１０】
信号生成器ＦＧＥＮａ２は、ロウレベルのバイパス信号ＢＹＰＳ３ａを受け、開放信号ＢＦＲａをロウレベルに維持する（図８（ｃ））。信号生成器ＦＧＥＮａ１は、ロウレベルの開放信号ＢＦＲａを受けてアンド回路ＡＮＤ３、ＡＮＤ４を有効にし、バリッド信号ＡＶＬＤａを開放信号ＸＦＲａとして出力する（図８（ｄ））。
【０１１１】
マスク回路ＦＭＳＫａのナンド回路ＮＡＮＤ１は、ロウレベルのバイパス信号ＢＹＰＳ４ａを受け、マスク信号ＭＳＫａをハイレベルに維持する（図８（ｅ））。マスク回路ＦＭＳＫａのアンド回路ＡＮＤ５は、ハイレベルのマスク信号ＭＳＫａを受けて有効になり、開放信号ＸＦＲａを開放通知ＦＲＥＥａとして出力する（図８（ｆ））。
【０１１２】
リザベーションステーションＲＳＡは、開放通知ＦＲＥＥａを受けて、実行中のロード命令ｌｄを保持したエントリＥＮＴａのバリッドフラグＶをリセットすることで、エントリＥＮＴａの１つを開放する。これにより、リザベーションステーションＲＳＡに保持されたアクセス命令ＩＮＳａの数は１つ減る。デコード部ＤＥＣのカウンタＣＯＵＮＴａは、開放通知ＦＲＥＥａを受けて計数値をデクリメントする（図８（ｇ））。このように、リザベーションステーションＲＳＡのエントリＥＮＴａは、データキャッシュＤＣＡＣＨＥのアクセスアドレスを計算するＡサイクルに基づいて開放される。
【０１１３】
一方、図５に示した実行制御部ＥＸＣＮＴｅでは、サイクル生成器ＣＧＥＮｅ１は、加算命令ａｄｄのＰサイクルに生成されたバリッド信号ＰＶＬＤｅを受け、Ｘサイクルにバリッド信号ＡＶＬＤｅを生成する（図８（ｈ））。加算命令ａｄｄのＰサイクルは、ロード命令ｌｄのＴサイクルと重複し、使用するレジスタｇ３も重複する。このため、サイクル生成器ＣＧＥＮｅ２は、５番目、８番目、９番目のクロックサイクルにバイパス信号ＢＹＰＳ０ｅ、ＢＹＰＳ３ｅ、ＢＹＰＳ４ｅをそれぞれ生成する（図８（ｉ、ｊ、ｋ））。
【０１１４】
信号生成器ＦＧＥＮｅ１は、ハイレベルのバイパス信号ＢＹＰＳ３ｅを受け、アンド回路ＡＮＤ３によりバリッド信号ＸＶＬＤｅの伝達を禁止する。これにより、加算命令ａｄｄのＸサイクルでは、開放信号ＸＦＲｅは生成されず、開放通知ＦＲＥＥｅは生成されない（図８（ｌ、ｍ））。
【０１１５】
信号生成器ＦＧＥＮｅ２は、８番目のクロックサイクルに生成されるハイレベルのバリッド信号ＸＶＬＤｅおよびハイレベルのバイパス信号ＢＹＰＳ３ｅに基づいて、９番目のクロックサイクルに開放信号ＢＦＲｅを生成する（図８（ｎ））。開放信号ＢＦＲｅは、マスク回路ＦＭＳＫｅのアンド回路ＡＮＤ５に供給される。
【０１１６】
マスク回路ＦＭＳＫｅのナンド回路ＮＡＮＤ１は、９番目のクロックサイクルにハイレベルのバイパス信号ＢＹＰＳ４ｅを受けるが、９番目のクロックサイクルでハイレベルの完了通知ＳＴＶの反転信号も受ける（図８（ｏ））。ナンド回路ＮＡＮＤ１は、ハイレベルの完了通知ＳＴＶに基づいて、マスク信号ＭＳＫｅをハイレベルに維持し、アンド回路ＡＮＤ５を有効にする（図８（ｐ））。アンド回路ＡＮＤ５は、ハイレベルのマスク信号ＭＳＫｅに基づいて、ハイレベルの開放信号ＢＦＲｅを開放通知ＦＲＥＥｅとして出力する（図８（ｑ））。
【０１１７】
リザベーションステーションＲＳＥは、開放通知ＦＲＥＥｅを受けて、実行が完了した加算命令ａｄｄを保持したエントリＥＮＴｅのバリッドフラグＶをリセットすることで、エントリＥＮＴｅの１つを開放する。これにより、リザベーションステーションＲＳＥに保持された演算命令ＩＮＳｅの数は１つ減る。デコード部ＤＥＣのカウンタＣＯＵＮＴｅは、開放通知ＦＲＥＥｅを受けて計数値をデクリメントする（図８（ｒ））。
【０１１８】
なお、完了通知ＳＴＶは、例えば、ロード命令ｌｄのＲサイクルに記憶部ＭＵＮＩＴの制御回路ＤＣＣＮＴから出力される。しかし、この実施形態では、完了通知ＳＴＶを伝達する信号線の配線負荷等により、実行制御部ＥＸＣＮＴｅ、ＥＸＣＮＴａは、完了通知ＳＴＶが出力された次のクロックサイクルに完了通知ＳＴＶを受ける。
【０１１９】
図９は、図３に示したコア部ＣＯＲＥを有する演算処理装置ＯＰＤの動作の別の例を示す。すなわち、図８は、演算処理装置ＯＰＤの制御方法を示す。図８と同一または同様の動作については、詳細な説明は省略する。
【０１２０】
この例では、図８と同様に、ロード命令ｌｄと加算命令ａｄｄが実行部ＥＵＮＩＴに投入される。そして、実行部ＥＵＮＩＴは、命令（３）、（４）に示すロード命令ｌｄおよび加算命令ａｄｄを順次に実行する。
ｌｄ  ［％ｇ１＋％ｇ２］，％ｇ３  ‥‥  （３）
ａｄｄ  ％ｇ４，４，％ｇ４      ‥‥  （４）
命令（３）、（４）では、ロード命令ｌｄで使用されるレジスタと加算命令ａｄｄで使用されるレジスタとは、互いに異なり、命令（３）、（４）は、レジスタの依存関係がない。ロード命令ｌｄのＴサイクルおよび加算命令ａｄｄのＰサイクルは、互いに同じクロックサイクルで実行されるが、レジスタの依存関係がないため、バイパス処理は実行されない。
【０１２１】
図９において、４番目のクロックサイクルまでの動作は、図８と同一または同様である。この例では、ロード命令ｌｄと加算命令ａｄｄとの間にレジスタの依存関係がないため、図６に示した比較回路ＣＭＰｅは、５番目のクロックサイクルでバイパス信号ＢＹＰＳ０ｅを生成しない（図９（ａ））。これにより、８番目および９番目のクロックサイクルでバイパス信号ＢＹＰＳ３ｅ、ＢＹＰＳ４ｅおよび開放信号ＢＦＲｅは生成されない（図９（ｂ、ｃ、ｄ））。信号生成器ＦＧＥＮｅ１は、ロウレベルのバイパス信号ＢＹＰＳ３ｅおよびロウレベルの開放信号ＢＦＲｅを受けてアンド回路ＡＮＤ３、ＡＮＤ４を有効にし、バリッド信号ＸＶＬＤｅに基づいて開放信号ＸＦＲｅを生成する（図９（ｅ））。マスク回路ＦＭＳＫｅは、ロウレベルのバイパス信号ＢＹＰＳ４ｅを受け、完了通知ＳＴＶの論理に拘わらずマスク信号ＭＳＫｅをハイレベルに維持する（図９（ｆ））。そして、マスク回路ＦＭＳＫｅは、ハイレベルのマスク信号ＭＳＫｅによりアンド回路ＡＮＤ５を有効にし、開放信号ＸＦＲｅに基づいて開放通知ＦＲＥＥｅを生成する（図９（ｇ））。
【０１２２】
図８と同様に、リザベーションステーションＲＳＥは、開放通知ＦＲＥＥｅを受けて、バリッドフラグＶをリセットし、エントリＥＮＴｅの１つを開放する。デコード部ＤＥＣのカウンタＣＯＵＮＴｅは、開放通知ＦＲＥＥｅを受けて計数値をデクリメント（図９（ｈ））。図３に示した記憶部ＭＵＮＩＴの制御回路ＤＣＣＮＴは、ロード命令ｌｄのＲサイクルに完了通知ＳＴＶを出力する（図９（ｉ））。
【０１２３】
レジスタの依存関係がない場合、開放通知ＦＲＥＥｅは、レジスタの依存関係がある場合（図８）に比べて１クロックサイクル早く出力される。これにより、カウンタＣＯＵＮＴｅは、図８に比べて１クロックサイクル早く計数値をデクリメントできる。リザベーションステーションＲＳＥは、図８に比べて１クロックサイクル早くエントリＥＮＴｅを開放できる。したがって、デコード部ＤＥＣは、図８に比べて多くの演算命令ＩＮＳｅをリザベーションステーションＲＳＥに投入できる。
【０１２４】
例えば、リザベーションステーションＲＳＥの全てのエントリＥＮＴｅに演算命令ＩＮＳｅが格納された場合、デコード部ＤＥＣは、新たな演算命令ＩＮＳｅのリザベーションステーションＲＳＥへの投入を停止する。このような場合にも、図９に示した動作を実行することで、エントリＥＮＴｅを図８に比べて早く開放できる。この結果、リザベーションステーションＲＳＥの使用効率を向上でき、演算処理装置ＯＰＤの性能を向上できる。
【０１２５】
図１０は、図３に示したコア部ＣＯＲＥを有する演算処理装置ＯＰＤの動作の別の例を示す。すなわち、図８は、演算処理装置ＯＰＤの制御方法を示す。図８および図９と同一または同様の動作については、詳細な説明は省略する。
【０１２６】
この例では、実行部ＥＵＮＩＴは、図８と同じ命令（１）、（２）、すなわち、ロード命令ｌｄおよび加算命令ａｄｄを順次に実行する。ロード命令ｌｄで使用されるレジスタｇ３は、加算命令ａｄｄで使用されるレジスタｇ３と同じであるため、ロード命令ｌｄと加算命令ａｄｄは、レジスタの依存関係がある。しかし、加算命令ａｄｄのＰサイクルは、ロード命令ｌｄのＴサイクルと異なるクロックサイクルで実行されるため、バイパス処理は実行されない。
【０１２７】
図１０において、実行制御部ＥＸＣＮＴａの動作は、図９と同一または同様である。この例では、加算命令ａｄｄのＰサイクルは、６番目のクロックサイクルで実行される。このため、バリッド信号ＰＶＬＤｅは、６番目のクロックサイクルに生成され、バリッド信号ＸＶＬＤａは、９番目のクロックサイクルに生成される（図１０（ａ、ｂ））。
【０１２８】
バリッド信号ＴＶＬＤａとバリッド信号ＰＶＬＤｅとが互いに異なるクロックサイクルで生成されるため、図６に示した比較回路ＣＭＰｅのアンド回路ＡＮＤ６は、一致信号ＴＰｅをロウレベルに維持する。これにより、図９と同様に、バイパス信号ＢＹＰＳ０ｅ、ＢＹＰＳ３ｅ、ＢＹＰＳ４ｅおよび開放信号ＢＦＲｅは生成されない（図１０（ｃ、ｄ、ｅ、ｆ））。したがって、開放信号ＸＦＲｅ、ＦＲＥＥｅは、バリッド信号ＸＶＬＤｅが生成される９番目のクロックサイクルで出力される（図１０（ｇ、ｈ））。実行制御部ＥＸＣＮＴａ、ＥＸＣＮＴｅおよび実行部ＥＵＮＩＴが完了通知ＳＴＶを受けるタイミングは、図８と同じである（図１０（ｉ））。
【０１２９】
アクセス命令ＩＮＳａのＴサイクルと、演算命令ＩＮＳｅのＰサイクルとが互いに異なるクロックサイクルで実行される場合、開放通知ＦＲＥＥｅは、図９と同様に、演算命令ＩＮＳｅのＸサイクルで出力される。これに対して、図８では、開放通知ＦＲＥＥｅは、演算命令ＩＮＳｅのＸサイクルの次のクロックサイクルで出力される。したがって、演算命令ＩＮＳｅに着目する場合、カウンタＣＯＵＮＴｅは、図８に比べて１クロックサイクル早く計数値をデクリメントできる。リザベーションステーションＲＳＥは、図８に比べて１クロックサイクル早くエントリＥＮＴｅを開放できる。したがって、デコード部ＤＥＣは、図８に比べて多くの演算命令ＩＮＳｅをリザベーションステーションＲＳＥに投入できる。この結果、図９と同様に、リザベーションステーションＲＳＥの使用効率を向上でき、演算処理装置ＯＰＤの性能を向上できる。
【０１３０】
なお、演算処理装置ＯＰＤは、アクセス命令ＩＮＳａのＴサイクルと、演算命令ＩＮＳｅのＰサイクルとが互いに異なるクロックサイクルで実行され、且つ、レジスタに依存関係がない場合にも、図１０と同じ動作を実行する。
【０１３１】
図１１は、図３に示したコア部ＣＯＲＥを有する演算処理装置ＯＰＤの動作の別の例を示す。すなわち、図８は、演算処理装置ＯＰＤの制御方法を示す。図８と同一または同様の動作については、詳細な説明は省略する。
【０１３２】
この例では、リザベーションステーションＲＳＡは、アクセス命令ＩＮＳａの一種であるロード命令ｌｄをアドレス生成部ＥＡＧに投入する。リザベーションステーションＲＳＥは、演算命令ＩＮＳｅの一種である２つの加算命令ａｄｄを演算部ＦＥＵに順次に投入する。そして、実行部ＥＵＮＩＴは、命令（５）、（６）、（７）に示すロード命令ｌｄおよび２つの加算命令ａｄｄを順次に実行する。
ｌｄ  ［％ｇ１＋％ｇ２］，％ｇ３  ‥‥  （５）
ａｄｄ  ％ｇ３，４，％ｇ４      ‥‥  （６）
ａｄｄ  ％ｇ５，４，％ｇ６      ‥‥  （７）
命令（５）、（６）は、上述した命令（１）、（２）と同じである。命令（７）の加算命令ａｄｄは、レジスタｇ５に格納されたデータと即値”４”とを加算し、加算結果をレジスタＧ６に格納することを示す。例えば、レジスタｇ１−ｇ６は、図３に示したレジスタ部ＲＥＧ内に設けられる汎用レジスタである。
【０１３３】
命令（５）、（６）では、上述した命令（１）、（２）と同様に、ロード命令ｌｄのＴサイクルおよび加算命令ａｄｄのＰサイクルの実行サイクルが互いに同じであり、且つ、使用するレジスタｇ３が互いに同じため、バイパス処理が実行される。命令（５）、（７）では、ロード命令ｌｄのＴサイクルおよび加算命令ａｄｄのＰサイクルの実行サイクルは互いに異なり、使用するレジスタも互いに異なるため、バイパス処理は実行されない。すなわち、命令（５）、（６）は、使用するレジスタの依存関係があり、命令（５）、（７）は、使用するレジスタの依存関係がない。
【０１３４】
図１１において、実行制御部ＥＸＣＮＴａの動作は、図９と同一または同様である。実行制御部ＥＸＣＮＴｅは、６番目のクロックサイクルで、２番目の加算命令ａｄｄのＰサイクルを示すバリッド信号ＰＶＬＤｅを生成する（図１１（ａ））。図１１では、２つの加算命令ａｄｄのＰサイクルが連続して実行されるため、バリッド信号ＰＶＬＤｅは、５番目と６番目のクロックサイクルでハイレベルに設定される。
【０１３５】
実行制御部ＥＸＣＮＴｅのサイクル生成器ＣＧＥＮｅ１は、バリッド信号ＰＶＬＤｅを受け、８番目と９番目のクロックサイクルにバリッド信号ＡＶＬＤｅを生成する（図１１（ｂ））。１番目の加算命令ａｄｄは、ロード命令ｌｄとの間に依存関係を有するため、サイクル生成器ＣＧＥＮｅ２は、図８と同様に、バイパス信号ＢＹＰＳ０ｅ、ＢＹＰＳ３ｅ、ＢＹＰＳ４ｅを順次に生成する（図１１（ｃ、ｄ、ｅ））。
【０１３６】
一方、２番目の加算命令ａｄｄは、ロード命令ｌｄとの間に依存関係を持たないため、６番目のクロックサイクルでは、バイパス信号ＢＹＰＳ０ｅは生成されない（図１１（ｆ））。図８と同様に、信号生成器ＦＧＥＮｅ１は、８番目のクロックサイクルにハイレベルのバイパス信号ＢＹＰＳ３ａを受け、バリッド信号ＸＶＬＤｅの伝達を禁止する。このため、１番目の加算命令ａｄｄのＸサイクルでは、開放信号ＸＦＲｅ、ＦＲＥＥｅは生成されない（図１１（ｇ、ｈ））。
【０１３７】
また、図８と同様に、信号生成器ＦＧＥＮｅ２は、９番目のクロックサイクルに開放信号ＢＦＲｅを生成し、マスク回路ＦＭＳＫｅは、開放信号ＢＦＲｅを開放通知ＦＲＥＥｅとして出力する（図１１（ｉ、ｊ））。さらに、信号生成器ＦＧＥＮｅ２は、９番目のクロックサイクルにハイレベルのバリッド信号ＸＶＬＤｅおよびハイレベルの開放信号ＢＦＲｅを受け、１０番目のクロックサイクルに開放信号ＢＦＲｅのハイレベルを維持する（図１１（ｋ））。マスク回路ＦＭＳＫｅは、ロウレベルのバイパス信号ＢＹＰＳ４ｅに基づいて、アンド回路ＡＮＤ５を有効にし、開放信号ＢＦＲｅを開放通知ＦＲＥＥｅとして出力する（図１１（ｌ））。
【０１３８】
リザベーションステーションＲＳＥは、９番目および１０番目のクロックサイクルに開放通知ＦＲＥＥｅを受けて、実行が完了した２つの加算命令ａｄｄを保持したエントリＥＮＴｅのバリッドフラグＶを順次にリセットし、エントリＥＮＴｅを開放する。これにより、リザベーションステーションＲＳＥに保持された演算命令ＩＮＳｅの数は、１つずつ減る。デコード部ＤＥＣのカウンタＣＯＵＮＴｅは、開放通知ＦＲＥＥｅを受けて計数値をデクリメントする動作を２回実行する（図１１（ｍ、ｎ））。
【０１３９】
連続する２つの演算命令ＩＮＳｅ（この例では、加算命令ａｄｄ）のうち、先行する演算命令ＩＮＳｅでバイパス処理が実行される場合、先行する演算命令ＩＮＳｅに対応する開放通知ＦＲＥＥｅは、Ｘサイクルの次のクロックサイクルに出力される。一方、後続する演算命令ＩＮＳｅでは、バイパス処理が実行されないため、図９と同様の動作をすると、後続する演算命令ＩＮＳｅに対応する開放通知ＦＲＥＥｅは、後続する演算命令ＩＮＳｅのＸサイクルで出力されることになる。
【０１４０】
この場合、先行する演算命令ＩＮＳｅと後続する演算命令ＩＮＳｅとの開放通知ＦＲＥＥｅが重複し、カウンタＣＯＵＮＴｅのデクリメント動作およびリザベーションステーションＲＳＥのエントリＥＮＴｅの開放制御が複雑になる。
【０１４１】
この実施形態では、図１１に示すように、先行する演算命令ＩＮＳｅがＸサイクルの次のクロックサイクルに開放通知ＦＲＥＥを出力する場合に、後続する演算命令ＩＮＳｅもＸサイクルの次のクロックサイクルに開放通知ＦＲＥＥを出力する。これにより、カウンタＣＯＵＮＴｅは、開放通知ＦＲＥＥ毎に計数値をデクリメントすればよく、リザベーションステーションＲＳＥは、開放通知ＦＲＥＥｅ毎にエントリＥＮＴｅを１つずつ開放すればよい。すなわち、カウンタＣＯＵＮＴｅおよびリザベーションステーションＲＳＥの回路構成および制御を、開放通知ＦＲＥＥｅが重複して出力される場合に比べて簡易にできる。
【０１４２】
図１２は、図３に示したコア部ＣＯＲＥを有する演算処理装置ＯＰＤの動作の別の例を示す。すなわち、図８は、演算処理装置ＯＰＤの制御方法を示す。図８および図１１と同一または同様の動作については、詳細な説明は省略する。
【０１４３】
この例では、実行部ＥＵＮＩＴは、図１１と同じ命令（５）、（６）、（７）、すなわち、ロード命令ｌｄおよび２つの加算命令ａｄｄを順次に実行する。但し、ロード命令ｌｄのＴサイクルにおいて、記憶部ＭＵＮＩＴの制御回路ＤＣＣＮＴは、キャッシュミスを判定し、二次キャッシュ部Ｌ２にアクセス要求を出力する。このため、制御回路ＤＣＣＮＴは、９番目のクロックサイクルで完了通知ＳＴＶを生成しない（図１２（ａ））。
【０１４４】
図１２において、実行制御部ＥＸＣＮＴａの動作は、図９と同一または同様であり、実行制御部ＥＸＣＮＴｅの動作は、マスク信号ＭＳＫｅ、開放通知ＦＲＥＥｅおよびカウンタＣＯＵＮＴｅの動作を除き、図１１と同一または同様である。
【０１４５】
実行制御部ＥＸＣＮＴｅのマスク回路ＦＭＳＫｅは、９番目のクロックサイクルにおいて、ハイレベルのバイパス信号ＢＹＰＳ４ｅとロウレベルの完了通知ＳＴＶを受け、マスク信号ＭＳＫｅをロウレベルに設定する（図１２（ｂ））。これにより、マスク回路ＦＭＳＫｅは、アンド回路ＡＮＤ５を無効にし、開放信号ＢＦＲｅに基づく開放通知ＦＲＥＥｅの生成を禁止する（図１２（ｃ））。
【０１４６】
リザベーションステーションＲＳＥは、開放通知ＦＲＥＥｅを受けないため、実行中の加算命令ａｄｄを保持したエントリＥＮＴｅのバリッドフラグＶのセット状態を維持する。このように、開放通知ＦＲＥＥｅが生成されない場合、リザベーションステーションＲＳＥのエントリＥＮＴｅは開放されない。デコード部ＤＥＣのカウンタＣＯＵＮＴｅは、開放通知ＦＲＥＥｅを受けないため、計数値を維持する（図１２（ｄ））。なお、２番目の加算命令ａｄｄに基づいて１０番目のクロックサイクルで生成される開放信号ＢＦＲｅ、ＦＲＥＥｅの波形は、図１１と同様である（図１２（ｅ、ｆ））。
【０１４７】
アドレス生成部ＥＡＧは、９番目のクロックサイクルで完了通知ＳＴＶを受けない。一方、リザベーションステーションＲＳＡは、４番目のクロックサイクルで生成された開放通知ＦＲＥＥｅにより、ロード命令ｌｄを保持したエントリＥＮＴａを開放する。リザベーションステーションＲＳＡは、ロード命令ｌｄを保持していないため、アドレス生成部ＥＡＧへのロード命令ｌｄの再投入は実行されない。
【０１４８】
記憶部ＭＵＮＩＴの制御回路ＤＣＣＮＴおよびアドレス生成部ＥＡＧは、ロード命令ｌｄのＴサイクル、Ｍサイクル、Ｂサイクル、Ｒサイクルの実行結果をキャンセルする。そして、制御回路ＤＣＣＮＴおよびアドレス生成部ＥＡＧは、二次キャッシュ部Ｌ２からデータキャッシュＤＣＡＣＨＥにデータが書き込まれた後に、ロード命令ｌｄのＴサイクル、Ｍサイクル、Ｂサイクル、Ｒサイクルを再び実行する。
【０１４９】
一方、最初の加算命令ａｄｄに対応する開放通知ＦＲＥＥｅが生成されないため、リザベーションステーションＲＳＥは、加算命令ａｄｄの保持を継続する。このため、最初の加算命令ａｄｄは、二次キャッシュ部Ｌ２からデータキャッシュＤＣＡＣＨＥにデータが書き込まれた後に、リザベーションステーションＲＳＥから演算部ＦＥＵに再び投入される。
【０１５０】
このように、完了通知ＳＴＶが出力されない場合に、開放通知ＦＲＥＥｅの出力を禁止して、対応する加算命令ａｄｄを保持したエントリＥＮＴｅの開放を禁止することで、リザベーションステーションＲＳＥから実行部ＥＵＮＩＴに加算命令ａｄｄを再投入できる。そして、再開されるロード命令ｌｄにより記憶部ＭＵＮＩＴから読み出されるデータを、再投入された加算命令ａｄｄにより演算することで、所望のデータを得ることができる。
【０１５１】
図１３は、図３に示したコア部ＣＯＲＥを有する演算処理装置ＯＰＤの動作の別の例を示す。すなわち、図１３は、演算処理装置ＯＰＤの制御方法を示す。図８および図１１と同一または同様の動作については、詳細な説明は省略する。
【０１５２】
この例では、図１１と同様に、ロード命令ｌｄおよび２つの加算命令ａｄｄが、リザベーションステーションＲＳＡ、ＲＳＥから実行部ＥＵＮＩＴに順次に投入される。実行部ＥＵＮＩＴは、命令（８）、（９）、（１０）に示すロード命令ｌｄおよび２つの加算命令ａｄｄを順次に実行する。
ｌｄ  ［％ｇ１＋％ｇ２］，％ｇ３  ‥‥  （８）
ａｄｄ  ％ｇ４，４，％ｇ５      ‥‥  （９）
ａｄｄ  ％ｇ６，４，％ｇ７      ‥‥  （１０）
命令（８）は、上述した命令（１）と同じである。命令（９）、（１０）は、上述した命令（６）と同様の加算命令ａｄｄである。例えば、レジスタｇ３−ｇ７は、図３に示したレジスタ部ＲＥＧ内に設けられる汎用レジスタである。
【０１５３】
この例では、命令（８）、（９）では、ロード命令ｌｄのＴサイクルおよび加算命令ａｄｄのＰサイクルの実行サイクルが互いに同じだが、使用するレジスタの依存関係がないため、バイパス処理は実行されない。命令（８）、（１０）では、ロード命令ｌｄのＴサイクルおよび加算命令ａｄｄのＰサイクルの実行サイクルが互いに異なり、使用するレジスタの依存関係もないため、バイパス処理は実行されない。
【０１５４】
図１３において、実行制御部ＥＸＣＮＴａの動作は、図９と同一または同様である。実行制御部ＥＸＣＮＴｅの動作は、図９に示した波形と図１０に示した波形とを足し合わせた動作になる。
【０１５５】
この例では、２つの加算命令ａｄｄともバイパス処理は実行されないため、バイパス信号ＢＹＰＳ０ｅ、ＢＹＰＳ３ｅ、ＢＹＰＳ４ｅおよび開放信号ＢＦＲｅは、図９と同様に、ロウレベルに維持される（図１３（ａ））。
【０１５６】
８番目および９番目のクロックサイクルにおいて、信号生成器ＦＧＥＮｅ１は、ロウレベルのバイパス信号ＢＹＰＳ３ｅおよびロウレベルの開放信号ＢＦＲｅを受けてアンド回路ＡＮＤ３、ＡＮＤ４を有効にする。そして、信号生成器ＦＧＥＮｅ１は、ハイレベルのバリッド信号ＸＶＬＤｅに基づいて開放信号ＸＦＲｅをハイレベルに設定する（図１３（ｂ））。
【０１５７】
８番目および９番目のクロックサイクルにおいて、マスク信号ＭＳＫｅは、ロウレベルのバイパス信号ＢＹＰＳ４ｅによりハイレベルに維持される。このため、マスク回路ＦＭＳＫｅは、ハイレベルの開放信号ＸＦＲｅに基づいて開放通知ＦＲＥＥｅをハイレベルに設定する（図１３（ｃ））。
【０１５８】
デコード部ＤＥＣのカウンタＣＯＵＮＴｅは、８番目および９番目のクロックサイクルにおいて開放通知ＦＲＥＥｅを受け、計数値を”１”ずつデクリメントする（図１３（ｄ、ｅ））。図３に示した記憶部ＭＵＮＩＴの制御回路ＤＣＣＮＴは、ロード命令ｌｄのＲサイクルに完了通知ＳＴＶを出力する（図１３（ｆ））。
【０１５９】
このように、ロード命令ｌｄに続く２つの加算命令ａｄｄともバイパス処理を実行しない場合に、実行制御部ＥＸＣＮＴｅは、各加算命令ａｄｄに対応する開放通知ＦＲＥＥｅを各加算命令ａｄｄのＸサイクルで出力する。開放通知ＦＲＥＥｅが重複して出力されることがないため、図１１と同様に、カウンタＣＯＵＮＴｅおよびリザベーションステーションＲＳＥの回路構成および制御を、開放通知ＦＲＥＥｅが重複して出力される場合に比べて簡易にできる。
【０１６０】
図１４は、図３に示したコア部ＣＯＲＥを有する演算処理装置ＯＰＤの動作の別の例を示す。すなわち、図１４は、演算処理装置ＯＰＤの制御方法を示す。図８、図１１および図１３と同一または同様の動作については、詳細な説明は省略する。
【０１６１】
この例では、図１３と同様に、ロード命令ｌｄおよび２つの加算命令ａｄｄが、リザベーションステーションＲＳＡ、ＲＳＥから実行部ＥＵＮＩＴに順次に投入される。実行部ＥＵＮＩＴは、命令（１１）、（１２）、（１３）に示すロード命令ｌｄおよび２つの加算命令ａｄｄを順次に実行する。
ｌｄ  ［％ｇ１＋％ｇ２］，％ｇ３  ‥‥  （１１）
ａｄｄ  ％ｇ４，４，％ｇ５      ‥‥  （１２）
ａｄｄ  ％ｇ３，４，％ｇ６      ‥‥  （１３）
命令（１１）は、上述した命令（１）と同じであり、命令（１２）は、上述した命令（９）と同じである。この例では、命令（１１）、（１２）では、ロード命令ｌｄのＴサイクルおよび加算命令ａｄｄのＰサイクルの実行サイクルが互いに同じだが、使用するレジスタの依存関係がないため、バイパス処理は実行されない。命令（１１）、（１３）では、使用するレジスタｇ３が共通であるが、ロード命令ｌｄのＴサイクルおよび加算命令ａｄｄのＰサイクルの実行サイクルが互いに異なるため、バイパス処理は実行されない。このため、図１４の動作は、図１３の動作と同様になる。
【０１６２】
すなわち、ロード命令ｌｄに続く２つの加算命令ａｄｄのうち、先の演算命令ＩＮＳｅがバイパス処理され、後の演算命令ＩＮＳｅがバイパス処理されない場合に、開放通知ＦＲＥＥｅは各加算命令ａｄｄのＸサイクルで出力される。これにより、図１１および図１３と同様に、カウンタＣＯＵＮＴｅおよびリザベーションステーションＲＳＥの回路構成および制御を、開放通知ＦＲＥＥｅが重複して出力される場合に比べて簡易にできる。
【０１６３】
図１５は、図３に示したコア部ＣＯＲＥを有する演算処理装置ＯＰＤの動作の別の例を示す。すなわち、図１５は、演算処理装置ＯＰＤの制御方法を示す。図８および図９と同一または同様の動作については、詳細な説明は省略する。
【０１６４】
この例では、ロード命令ｌｄ、加算命令ａｄｄおよびロード命令ｌｄが、リザベーションステーションＲＳＡ、ＲＳＥから実行部ＥＵＮＩＴに順次に投入される。実行部ＥＵＮＩＴは、命令（１４）、（１５）、（１６）に示すロード命令ｌｄ、加算命令ａｄｄおよびロード命令ｌｄを順次に実行する。
ｌｄ  ［％ｇ１＋％ｇ２］，％ｇ３  ‥‥  （１４）
ａｄｄ  ％ｇ４，４，％ｇ４      ‥‥  （１５）
ｌｄ  ［％ｇ１＋％ｇ２］，％ｇ６  ‥‥  （１６）
命令（１４）、（１６）は、上述した命令（３）、（４）と同じである。命令（１６）は、ロードしたデータを格納するレジスタが互いに異なることを除き、命令（１４）と同様である。
【０１６５】
命令（１４）、（１５）では、上述した命令（３）、（４）と同様に、ロード命令ｌｄのＴサイクルおよび加算命令ａｄｄのＰサイクルの実行サイクルが互いに同じであるが、使用するレジスタの依存関係がないため、バイパス処理は実行されない。命令（１４）、（１６）では、先行するロード命令ｌｄのＴサイクルおよび後続するロード命令ｌｄのＰサイクルの実行サイクルは互いに同じである。しかし、先行するロード命令ｌｄのディスティネーションレジスタ（Ｒ（Result）サイクルでデータが格納されるレジスタ）と、後続するロード命令ｌｄのソースレジスタ（Ａ（Address）サイクルでアクセスアドレスＡＤの計算に使用するレジスタ）とは互いに異なる。すなわち、使用するレジスタの依存関係がないため、命令（１４）、（１６）においても、バイパス処理は実行されない。
【０１６６】
実行制御部ＥＸＣＮＴｅの動作は、図９と同様である。この例では、２つのロード命令ｌｄがパイプライン処理されるため、実行制御部ＥＸＣＮＴａは、１番目および５番目のクロックサイクルでバリッド信号ＰＶＬＤａを生成し、４番目および８番目のクロックサイクルでバリッド信号ＡＶＬＤａを生成する（図１５（ａ、ｂ、ｃ、ｄ））。また、実行制御部ＥＸＣＮＴａは、ロード命令ｌｄのＡサイクルに対応する４番目および８番目のクロックサイクルで開放信号ＸＦＲａ、ＦＲＥＥａを生成する（図１５（ｅ、ｆ、ｇ、ｈ））。
【０１６７】
リザベーションステーションＲＳＡは、開放通知ＦＲＥＥａの各パルスに基づいて、バリッドフラグＶをリセットし、エントリＥＮＴａの１つを順次に開放する。デコード部ＤＥＣのカウンタＣＯＵＮＴａは、開放通知ＦＲＥＥａの各パルスに基づいて計数値を”１”ずつデクリメントする（図１５（ｉ、ｊ））。なお、図３に示した記憶部ＭＵＮＩＴの制御回路ＤＣＣＮＴは、各ロード命令ｌｄのＲサイクルに完了通知ＳＴＶを出力する（図１５（ｋ、ｌ））。
【０１６８】
このように、先行するロード命令ｌｄと後続するロード命令ｌｄの間でバイパス処理が実行されない場合、開放通知ＦＲＥＥａは、各ロード命令ｌｄのＡサイクルで出力される。カウンタＣＯＵＮＴａは、各開放通知ＦＲＥＥａに基づいて計数値をデクリメントし、リザベーションステーションＲＳＡは、各開放通知ＦＲＥＥａに基づいてエントリＥＮＴａを開放する。なお、２つのロード命令ｌｄの間に加算命令ａｄｄが存在しない場合にも、実行制御部ＥＸＣＮＴａは、図１５と同様に動作する。
【０１６９】
図１６は、図３に示したコア部ＣＯＲＥを有する演算処理装置ＯＰＤの動作の別の例を示す。すなわち、図１６は、演算処理装置ＯＰＤの制御方法を示す。図８、図９および図１５と同一または同様の動作については、詳細な説明は省略する。
【０１７０】
この例では、図１５と同様に、ロード命令ｌｄ、加算命令ａｄｄおよびロード命令ｌｄが、リザベーションステーションＲＳＡ、ＲＳＥから実行部ＥＵＮＩＴに順次に投入される。実行部ＥＵＮＩＴは、命令（１７）、（１８）、（１９）に示すロード命令ｌｄ、加算命令ａｄｄおよびロード命令ｌｄを順次に実行する。
ｌｄ  ［％ｇ１＋％ｇ２］，％ｇ３  ‥‥  （１７）
ａｄｄ  ％ｇ４，４，％ｇ４      ‥‥  （１８）
ｌｄ  ［％ｇ３＋％ｇ２］，％ｇ６  ‥‥  （１９）
命令（１７）、（１８）は、上述した命令（３）、（４）と同じである。命令（１９）は、ロードしたデータを格納するレジスタが互いに異なることを除き、命令（１７）と同様である。
【０１７１】
命令（１７）、（１８）では、上述した命令（３）、（４）と同様に、バイパス処理は実行されない。命令（１７）、（１９）では、先行するロード命令ｌｄのＴサイクルおよび後続するロード命令ｌｄのＰサイクルの実行サイクルは互いに同じである。且つ、先行するロード命令ｌｄのディスティネーションレジスタ（Ｒサイクルでデータが格納されるレジスタ）と、後続するロード命令ｌｄのソースレジスタ（ＡサイクルでアクセスアドレスＡＤの計算に使用するレジスタ）とは互いに同じである。すなわち、２つのロード命令ｌｄは、レジスタの依存関係を有する。このため、命令（１７）、（１９）では、バイパス処理が実行される。
【０１７２】
実行制御部ＥＸＣＮＴｅの動作は、図９および図１５と同様である。実行制御部ＥＸＣＮＴａにおける７番目のクロックサイクルまでの動作は、図１５と同様である。実行制御部ＥＸＣＮＴａが生成するバリッド信号ＰＶＬＤａ、ＡＶＬＤａの波形は、図１５と同様である。実行制御部ＥＸＣＮＴａのサイクル生成器ＣＧＥＮａ２は、比較回路ＣＭＰａでの比較結果に基づいて、バイパス処理の実行を判断する。そして、サイクル生成器ＣＧＥＮａ２は、５番目、８番目、９番目のクロックサイクルにバイパス信号ＢＹＰＳ０ａ、ＢＹＰＳ３ａ、ＢＹＰＳ４ａをそれぞれ生成する（図１６（ａ、ｂ、ｃ））。
【０１７３】
実行制御部ＥＸＣＮＴａの信号生成器ＦＧＥＮａ１は、８番目のクロックサイクルでハイレベルのバイパス信号ＢＹＰＳ３ａを受け、アンド回路ＡＮＤ３によりバリッド信号ＡＶＬＤａの伝達を禁止する。これにより、先行するロード命令ｌｄのＲサイクルでは、開放信号ＸＦＲａおよび開放通知ＦＲＥＥａは生成されない（図１６（ｄ、ｅ））。
【０１７４】
実行制御部ＥＸＣＮＴａの信号生成器ＦＧＥＮａ２は、８番目のクロックサイクルに生成されるハイレベルのバリッド信号ＡＶＬＤａおよびハイレベルのバイパス信号ＢＹＰＳ３ａに基づいて、９番目のクロックサイクルに開放信号ＢＦＲａを生成する（図１６（ｆ））。開放信号ＢＦＲａは、マスク回路ＦＭＳＫａのアンド回路ＡＮＤ５に供給される。
【０１７５】
マスク回路ＦＭＳＫａのナンド回路ＮＡＮＤ１は、９番目のクロックサイクルにハイレベルのバイパス信号ＢＹＰＳ４ａを受けるが、９番目のクロックサイクルでハイレベルの完了通知ＳＴＶの反転信号も受ける（図１６（ｇ））。ナンド回路ＮＡＮＤ１は、ハイレベルの完了通知ＳＴＶに基づいて、マスク信号ＭＳＫａをハイレベルに維持し、アンド回路ＡＮＤ５を有効にする（図１６（ｈ））。アンド回路ＡＮＤ５は、ハイレベルのマスク信号ＭＳＫａに基づいて、ハイレベルの開放信号ＢＦＲａを開放通知ＦＲＥＥａとして出力する（図１６（ｉ））。
【０１７６】
リザベーションステーションＲＳＡは、開放通知ＦＲＥＥａを受けて、実行が完了した後続するロード命令ｌｄを保持したエントリＥＮＴａのバリッドフラグＶをリセットし、エントリＥＮＴａの１つを開放する。これにより、リザベーションステーションＲＳＡに保持されたアクセス命令ＩＮＳａの数は１つ減る。デコード部ＤＥＣのカウンタＣＯＵＮＴａは、開放通知ＦＲＥＥａを受けて計数値をデクリメントする（図１６（ｊ））。
【０１７７】
このように、先行するロード命令ｌｄと後続するロード命令ｌｄの間でバイパス処理が実行される場合、後続するロード命令ｌｄに対応する開放通知ＦＲＥＥａは、後続するロード命令ｌｄのＡサイクルの次のクロックサイクルで出力される。これにより、記憶部ＭＵＮＩＴからの完了通知ＳＴＶの出力に合わせて、開放通知ＦＲＥＥを出力でき、カウンタＣＯＵＮＴａの計数値をデクリメントでき、エントリＥＮＴａを開放できる。なお、２つのロード命令ｌｄの間に加算命令ａｄｄが存在しない場合にも、実行制御部ＥＸＣＮＴａは、図１６と同様に動作する。
【０１７８】
図１７は、図３に示したコア部ＣＯＲＥを有する演算処理装置ＯＰＤの動作の別の例を示す。すなわち、図１７は、演算処理装置ＯＰＤの制御方法を示す。図８、図９、図１２および図１６と同一または同様の動作については、詳細な説明は省略する。
【０１７９】
この例では、実行部ＥＵＮＩＴは、図１６と同じ命令（１７）、（１８）、（１９）、すなわち、ロード命令ｌｄ、加算命令ａｄｄ、ロード命令ｌｄを順次に実行する。但し、先行するロード命令ｌｄのＴサイクルにおいて、記憶部ＭＵＮＩＴの制御回路ＤＣＣＮＴは、キャッシュミスを判定し、二次キャッシュ部Ｌ２にアクセス要求を出力する。このため、制御回路ＤＣＣＮＴは、９番目のクロックサイクルで完了通知ＳＴＶを生成しない（図１７（ａ））。
【０１８０】
図１７において、実行制御部ＥＸＣＮＴｅの動作は、図１６と同一または同様であり、実行制御部ＥＸＣＮＴａの動作は、マスク信号ＭＳＫａ、開放通知ＦＲＥＥａおよびカウンタＣＯＵＮＴａの動作を除き、図１６と同一または同様である。
【０１８１】
実行制御部ＥＸＣＮＴａのマスク回路ＦＭＳＫａは、９番目のクロックサイクルにおいて、ハイレベルのバイパス信号ＢＹＰＳ４ａとロウレベルの完了通知ＳＴＶを受け、マスク信号ＭＳＫａをロウレベルに設定する（図１７（ｂ））。これにより、マスク回路ＦＭＳＫａは、アンド回路ＡＮＤ５を無効にし、開放信号ＢＦＲａに基づく開放通知ＦＲＥＥａの生成を禁止する（図１７（ｃ））。
【０１８２】
リザベーションステーションＲＳＡは、開放通知ＦＲＥＥａを受けないため、後続するロード命令ｌｄを保持したエントリＥＮＴａのバリッドフラグＶのセット状態を維持する。このように、開放通知ＦＲＥＥａが生成されない場合、リザベーションステーションＲＳＡのエントリＥＮＴａは開放されない。デコード部ＤＥＣのカウンタＣＯＵＮＴａは、開放通知ＦＲＥＥａを受けないため、計数値を維持する（図１７（ｄ））。なお、リザベーションステーションＲＳＡにおける先行するロード命令ｌｄを保持したエントリＥＮＴａは、４番目のクロックサイクルで生成される開放通知ＦＲＥＥａに基づいて開放される（図１７（ｅ））。
【０１８３】
図１２と同様に、リザベーションステーションＲＳＡは、４番目のクロックサイクルで生成された開放通知ＦＲＥＥｅにより、先行するロード命令ｌｄを保持したエントリＥＮＴａを開放する。このため、リザベーションステーションＲＳＡからアドレス生成部ＥＡＧへの先行するロード命令ｌｄの再投入は実行されない。
【０１８４】
記憶部ＭＵＮＩＴの制御回路ＤＣＣＮＴおよびアドレス生成部ＥＡＧは、先行するロード命令ｌｄのＴサイクル、Ｍサイクル、Ｂサイクル、Ｒサイクルの実行結果をキャンセルする。そして、制御回路ＤＣＣＮＴおよびアドレス生成部ＥＡＧは、二次キャッシュ部Ｌ２からデータキャッシュＤＣＡＣＨＥにデータが書き込まれた後に、先行するロード命令ｌｄのＴサイクル、Ｍサイクル、Ｂサイクル、Ｒサイクルを再び実行する。
【０１８５】
一方、後続するロード命令ｌｄに対応する開放通知ＦＲＥＥａは生成されないため、リザベーションステーションＲＳＡは、後続するロード命令ｌｄの保持を継続する。このため、後続するロード命令ｌｄは、先行するロード命令ｌｄにより二次キャッシュ部Ｌ２からデータキャッシュＤＣＡＣＨＥにデータが書き込まれた後に、リザベーションステーションＲＳＡからアドレス生成部ＥＡＧに再び投入される。
【０１８６】
このように、完了通知ＳＴＶが出力されない場合に、開放通知ＦＲＥＥａの出力を禁止して、対応するロード命令ｌｄを保持したエントリＥＮＴａの開放を禁止することで、リザベーションステーションＲＳＡから実行部ＥＵＮＩＴにロード命令ｌｄを再投入できる。そして、再開されるロード命令ｌｄにより記憶部ＭＵＮＩＴから読み出されるデータを、再投入されたロード命令ｌｄのアクセスアドレスの計算に用いることができる。
【０１８７】
図１８は、図３に示したコア部ＣＯＲＥを有する演算処理装置ＯＰＤの動作の別の例を示す。すなわち、図１８は、演算処理装置ＯＰＤの制御方法を示す。図８および図１６と同一または同様の動作については、詳細な説明は省略する。
【０１８８】
この例では、図１６と同様に、ロード命令ｌｄ、加算命令ａｄｄおよびロード命令ｌｄが、リザベーションステーションＲＳＡ、ＲＳＥから実行部ＥＵＮＩＴに順次に投入される。実行部ＥＵＮＩＴは、命令（２０）、（２１）、（２２）に示すロード命令ｌｄ、加算命令ａｄｄおよびロード命令ｌｄを順次に実行する。
ｌｄ  ［％ｇ１＋％ｇ２］，％ｇ３  ‥‥  （２０）
ａｄｄ  ％ｇ３，４，％ｇ４      ‥‥  （２１）
ｌｄ  ［％ｇ３＋％ｇ２］，％ｇ６  ‥‥  （２２）
命令（２０）、（２１）は、上述した命令（１）、（２）と同じであり、命令（２２）は、上述した命令（１９）と同様である。命令（２０）、（２１）では、加算命令ａｄｄは、先行するロード命令ｌｄによりレジスタｇ３に読み出されたデータを用いて演算を実行する。すなわち、命令（２０）、（２１）で使用するレジスタは、依存関係がある。また、先行するロード命令ｌｄのＴサイクルおよび加算命令ａｄｄのＰサイクルの実行サイクルが互いに同じため、バイパス処理が実行される。実行制御部ＥＸＣＮＴｅの動作は、図１６と同様である。
【０１８９】
命令（２０）、（２２）では、先行するロード命令ｌｄのＴサイクルおよび後続するロード命令ｌｄのＰサイクルの実行サイクルは互いに同じである。且つ、先行するロード命令ｌｄのディスティネーションレジスタと、後続するロード命令ｌｄのソースレジスタとは互いに同じである。このため、命令（２０）、（２２）においても、レジスタの依存関係があり、バイパス処理が実行される。実行制御部ＥＸＣＮＴａの動作は、図８と同様である。
【０１９０】
なお、図８から図１８では、演算命令ＩＮＳｅとして加算命令ａｄｄが実行される例を説明しているが、演算命令ＩＮＳｅとして減算命令、シフト命令や、アンド命令、オア命令などの論理演算命令が実行されてもよい。
【０１９１】
以上、この実施形態においても、上述した実施形態と同様に、アクセス命令ＩＮＳａと演算命令ＩＮＳｅとの間でバイパス処理が実行されない場合に、開放通知ＦＲＥＥｅを従来に比べて１クロックサイクル早く出力できる。このため、カウンタＣＯＵＮＴｅの計数値を従来に比べて早くデクリメントでき、所定の期間にリザベーションステーションＲＳＥに保持可能な演算命令ＩＮＳｅの延べ数を、従来に比べて増やすことができる。
【０１９２】
また、２つのアクセス命令ＩＮＳａ間でバイパス処理が実行されない場合に、開放通知ＦＲＥＥａを従来に比べて１クロックサイクル早く出力できる。このため、カウンタＣＯＵＮＴａの計数値を従来に比べて早くデクリメントでき、所定の期間にリザベーションステーションＲＳＡに保持可能な演算命令ＩＮＳａの延べ数を、従来に比べて増やすことができる。
【０１９３】
この結果、命令保持部ＲＳＡの使用効率を向上でき、演算処理装置ＯＰＤの性能を向上できる。
【０１９４】
アクセス命令ＩＮＳａに続く２つの演算命令ＩＮＳｅのうち、先の演算命令ＩＮＳｅがバイパス処理され、後の演算命令ＩＮＳｅがバイパス処理されない場合がある。この場合に、先の演算命令ＩＮＳｅに対応する開放通知ＦＲＥＥｅだけでなく、後の演算命令ＩＮＳｅに対応する開放通知ＦＲＥＥｅも、Ｘサイクルの次のクロックサイクルで出力できる。
【０１９５】
また、アクセス命令ＩＮＳａに続く２つの演算命令ＩＮＳｅのうち、先の演算命令ＩＮＳｅがバイパス処理されず、後の演算命令ＩＮＳｅがバイパス処理される場合、または２つの演算命令ＩＮＳｅともバイパス処理されない場合がある。この場合に、各演算命令ＩＮＳｅに対応する開放通知ＦＲＥＥｅを、Ｘサイクルで出力できる。
【０１９６】
実行制御部ＥＸＣＮＴｅは、バイパス処理の有無に拘わらず、２つの演算命令ＩＮＳｅの開放通知ＦＲＥＥｅを同じクロックサイクルで出力しない制御を実行するため、カウンタＣＯＵＮＴｅおよびリザベーションステーションＲＳＥの回路構成および制御を、開放通知ＦＲＥＥｅが重複して出力される場合に比べて簡易にできる。
【０１９７】
さらに、実行制御部ＥＸＣＮＴｅは、バイパス処理の有無に応じて開放通知ＦＲＥＥｅの出力タイミングを変更する場合にも、完了通知ＳＴＶが出力されない場合、開放通知ＦＲＥＥｅの出力を禁止できる。これにより、実行が完了してない演算命令ＩＮＳｅがリザベーションステーションＲＳＥから取り除かれることを阻止でき、リザベーションステーションＲＳＥから実行部ＥＵＮＩＴに演算命令ＩＮＳｅを再投入できる。
【０１９８】
同様に、実行制御部ＥＸＣＮＴａは、バイパス処理の有無に応じて開放通知ＦＲＥＥａの出力タイミングを変更する場合にも、完了通知ＳＴＶが出力されない場合、開放通知ＦＲＥＥａの出力を禁止できる。これにより、実行が完了してないアクセス命令ＩＮＳａがリザベーションステーションＲＳＡから取り除かれることを阻止でき、リザベーションステーションＲＳＡから実行部ＥＵＮＩＴにアクセス命令ＩＮＳａを再投入できる。
【０１９９】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０２００】
ＡＤ‥アクセスアドレス；ＢＹＰＳ‥バイパス処理；ＣＯＲＥ‥コア部；ＣＯＵＮＴａ、ＣＯＵＮＴｅ‥カウンタ；ＤＣＡＣＨＥ‥データキャッシュ；ＤＣＣＮＴ‥制御回路；ＤＥＣ‥デコード部；ＤＴ‥データ；ＥＡＧ‥命令実行部、アドレス生成部；ＥＮＴａ、ＥＮＴｅ‥エントリ；ＥＵＮＩＴ‥実行部；ＥＸＣＮＴａ‥実行制御部；ＥＸＣＮＴｅ‥制御部、実行制御部；ＦＥＵ‥命令実行部、演算部；ｇ１、ｇ２、ｇ３‥レジスタ；ＦＲＥＥａ、ＦＲＥＥｅ‥開放通知；ＩＢＵＦ‥命令バッファ；ＩＣＡＣＨＥ‥命令キャッシュ；ＩＣＣＮＴ‥制御回路；ＩＮＳａ‥命令、アクセス命令；ＩＮＳｅ‥命令、演算命令；ＩＰＤ‥情報処理装置；ＩＵＮＩＴ‥命令制御部；Ｌ２‥二次キャッシュ部；ＭＡＣ‥メモリアクセスコントローラ；ＭＥＭ‥記憶装置；ＭＵＮＩＴ‥記憶部；ＯＰＤ‥演算処理装置；ＲＥＧ‥レジスタ部；ＲＳＡ、ＲＳＥ‥命令保持部、リザベーションステーション；Ｖ‥バリッドフラグ
【図１】
2014044509.tif 000003
【図２】
2014044509.tif 000004
【図３】
2014044509.tif 000005
【図４】
2014044509.tif 000006
【図５】
2014044509.tif 000007
【図６】
2014044509.tif 000008
【図７】
2014044509.tif 000009
【図８】
2014044509.tif 000010
【図９】
2014044509.tif 000011
【図１０】
2014044509.tif 000012
【図１１】
2014044509.tif 000013
【図１２】
2014044509.tif 000014
【図１３】
2014044509.tif 000015
【図１４】
2014044509.tif 000016
【図１５】
2014044509.tif 000017
【図１６】
2014044509.tif 000018
【図１７】
2014044509.tif 000019
【図１８】
2014044509.tif 000020