(57)【特許請求の範囲】
【請求項１】
命令を保持する命令キャッシュメモリと、前記命令キャッシュメモリから命令を読み出す命令制御部と、前記命令キャッシュメモリから読み出された命令を実行する命令実行部を有する演算処理装置において、
前記命令キャッシュメモリは、
前記命令キャッシュメモリを動作させる複数の要求のうち、優先順位が他より高い要求を次のステージに出力し、前記要求が１つの場合、この要求を次のステージに出力する複数の選択ステージと、前記複数の選択ステージのうちの最終ステージから出力された要求に基づく処理を順次実行する複数の処理ステージとを含むパイプライン処理部と、
前記命令制御部から受信した要求を、処理ステージの処理順が要求の受信順となる選択ステージに投入する命令キャッシュ制御部とを有する
ことを特徴とする演算処理装置。
【請求項２】
請求項１に記載の演算処理装置において、
前記命令キャッシュ制御部は、
前記命令制御部から受信した要求と投入済みの要求との衝突を回避し、かつ、処理ステージの処理順が要求の受信順となる選択ステージを特定し、特定した選択ステージのうち、処理ステージに最も近い選択ステージに前記命令制御部から受信した要求を投入する
ことを特徴とする演算処理装置。
【請求項３】
請求項１または請求項２に記載の演算処理装置において、
前記複数の選択ステージは、前記複数の選択ステージのうちの最終ステージである第１の選択ステージと、前記第１の選択ステージの前段の選択ステージである第２の選択ステージと、前記第２の選択ステージの前段の選択ステージである第３の選択ステージとを含み、
前記命令キャッシュ制御部は、
前記命令制御部から受信した要求である外部要求と投入済みの要求との衝突を回避する選択ステージを特定する衝突判定部と、
外部要求の処理ステージの処理順が外部要求の受信順となる選択ステージを特定する順序判定部と、
前記順序判定部および前記衝突判定部の両方に特定された選択ステージのうち、処理ステージに最も近い選択ステージに外部要求を投入する投入決定部とを有し、
前記衝突判定部は、
前記命令キャッシュメモリ内で生成された要求である内部要求が前記第３の選択ステージに投入されたことを示す情報と、投入済みの外部要求が前記第３の選択ステージに転送されたことを示す情報との論理和を演算し、演算結果を、前記第３の選択ステージに要求が存在することを示す第３の衝突情報として前記投入決定部に出力する第３の論理和回路と、
外部要求が前記第３の選択ステージに投入されたことを示す情報と前記第３の衝突情報との論理和を演算する第２の論理和回路と、
外部要求が前記第３の選択ステージに投入されたことを示す情報と前記第３の衝突情報との論理和の演算結果を示す情報を前記第２の論理和回路から受信し、前記第２の論理和回路から受信した情報を１ステージ分遅延させて第２の衝突情報として出力する第２の遅延部と、
外部要求が前記第２の選択ステージに投入されたことを示す情報と前記第２の衝突情報との論理和を演算する第１の論理和回路と、
外部要求が前記第２の選択ステージに投入されたことを示す情報と前記第２の衝突情報との論理和の演算結果を示す情報を前記第１の論理和回路から受信し、前記第１の論理和回路から受信した情報を、前記第１の選択ステージに要求が存在することを示す第１の衝突情報として、１ステージ分遅延させて前記投入決定部に出力する第１の遅延部とを有する
ことを特徴とする演算処理装置。
【請求項４】
命令を保持する命令キャッシュメモリと、前記命令キャッシュメモリから命令を読み出す命令制御部と、前記命令キャッシュメモリから読み出された命令を実行する命令実行部を有する演算処理装置の制御方法において、
前記命令キャッシュメモリが有するパイプライン処理部は、
複数の選択ステージにおいて、前記命令キャッシュメモリを動作させる複数の要求のうち、優先順位が他より高い要求を次のステージに出力し、前記要求が１つの場合、この要求を次のステージに出力し、
複数の処理ステージにおいて、前記複数の選択ステージのうちの最終ステージから出力された要求に基づく処理を順次実行し、
前記命令キャッシュメモリが有する命令キャッシュ制御部は、前記命令制御部から受信した要求を、処理ステージの処理順が要求の受信順となる選択ステージに投入する
ことを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）等の演算処理装置は、主記憶装置に比べて高速にアクセス可能なキャッシュメモリを有する（例えば、特許文献１、２参照）。キャッシュメモリは、ＣＰＵコア等のプロセッサコアと主記憶装置との間に配置され、主記憶装置に記憶されたデータの一部を保持する。例えば、キャッシュメモリは、プロセッサコアからのリクエスト等に基づく処理を複数のステージで順次実行するパイプライン処理部を有する。
【０００３】
なお、キャッシュメモリが階層構造を有する場合、例えば、演算処理装置は、第２レベルのキャッシュメモリと、第２レベルのキャッシュメモリに比べて高速にアクセス可能な第１レベルのキャッシュメモリとを有する。以下、第１レベルのキャッシュメモリおよび第２レベルのキャッシュメモリは、１次キャッシュメモリおよび２次キャッシュメモリともそれぞれ称される。また、演算処理装置は、１次キャッシュメモリ等を、命令を保持する命令キャッシュメモリとデータを保持するデータキャッシュメモリとに分けて有する場合もある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００９／１０４２４０号パンフレット
【特許文献２】特開２００６−４００９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
キャッシュメモリにおけるパイプライン処理の段数（ステージの数）は、演算処理装置の高周波化およびマルチスレッド化に伴い、増える傾向にある。パイプライン処理の段数の増加に伴い、パイプライン処理がストールした場合のペナルティ（パイプライン処理のレイテンシ等）が大きくなる。
【０００６】
例えば、命令キャッシュメモリでは、プロセッサコアからのリクエストに基づく処理を、プロセッサコアからのリクエスト順に従って実行する。このため、複数のリクエストのうちの１つのリクエストのパイプライン処理部への投入が遅れた場合、残りのリクエストの投入も遅れる場合がある。この場合、プロセッサコアがリクエストを発行してから命令キャッシュメモリがリクエストの結果をプロセッサコアに返すまでのレイテンシが増加する。すなわち、命令キャッシュメモリがキャッシュヒットした場合のレイテンシが増加するおそれがある。
【０００７】
１つの側面では、本件開示の演算処理装置および演算処理装置の制御方法は、命令キャッシュメモリのレイテンシの増加を抑制することを目的とする。
【課題を解決するための手段】
【０００８】
一観点によれば、演算処理装置は、命令を保持する命令キャッシュメモリと、命令キャッシュメモリから命令を読み出す命令制御部と、命令キャッシュメモリから読み出された命令を実行する命令実行部を有し、命令キャッシュメモリは、命令キャッシュメモリを動作させる複数の要求のうち、優先順位が他より高い要求を次のステージに出力し、前記要求が１つの場合、この要求を次のステージに出力する複数の選択ステージと、複数の選択ステージのうちの最終ステージから出力された要求に基づく処理を順次実行する複数の処理ステージとを含むパイプライン処理部と、命令制御部から受信した要求を、処理ステージの処理順が要求の受信順となる選択ステージに投入する命令キャッシュ制御部とを有する。
【０００９】
別の観点によれば、命令を保持する命令キャッシュメモリと、命令キャッシュメモリから命令を読み出す命令制御部と、命令キャッシュメモリから読み出された命令を実行する命令実行部を有する演算処理装置の制御方法では、命令キャッシュメモリが有するパイプライン処理部は、複数の選択ステージにおいて、命令キャッシュメモリを動作させる複数の要求のうち、優先順位が他より高い要求を次のステージに出力し、前記要求が１つの場合、この要求を次のステージに出力し、複数の処理ステージにおいて、複数の選択ステージのうちの最終ステージから出力された要求に基づく処理を順次実行し、命令キャッシュメモリが有する命令キャッシュ制御部は、命令制御部から受信した要求を、処理ステージの処理順が要求の受信順となる選択ステージに投入する。
【発明の効果】
【００１０】
本件開示の演算処理装置および演算処理装置の制御方法は、命令キャッシュメモリのレイテンシの増加を抑制できる。
【図面の簡単な説明】
【００１１】
【図１】演算処理装置および演算処理装置の制御方法の一実施形態を示す図である。
【図２】演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図３】図２に示したパイプライン処理部の一例を示す図である。
【図４】図２に示した命令キャッシュ制御部の一例を示す図である。
【図５】図３に示したパイプライン処理部の動作の一例を示す図である。
【図６】図３に示したパイプライン処理部の動作の別の例を示す図である。
【図７】図３に示したパイプライン処理部の動作の比較例を示す図である。
【図８】図４に示した順序判定部による順序判定の一例を示す図である。
【図９】図４に示した順序判定部による順序判定の別の例を示す図である。
【図１０】図４に示した順序判定部による順序判定の別の例を示す図である。
【図１１】図４に示した順序判定部による判定結果の一例を示す図である。
【図１２】図４に示した衝突判定部による判定結果の一例を示す図である。
【図１３】図４に示した投入決定部による判定結果の一例を示す図である。
【図１４】図２に示した命令キャッシュメモリの動作の一例を示す図である。
【図１５】図４に示した順序判定部の動作の一例を示す図である。
【図１６】図４に示した衝突判定部の動作の一例を示す図である。
【図１７】図４に示した投入決定部の動作の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、実施形態について、図面を用いて説明する。
【００１３】
図１は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。図１に示す演算処理装置ＰＵａは、例えば、命令を実行するＣＰＵ等のプロセッサである。演算処理装置ＰＵａは、命令を保持する命令キャッシュメモリＩＣＭａと、命令キャッシュメモリＩＣＭａから命令を読み出す命令制御部ＩＵと、命令キャッシュメモリＩＣＭａから読み出された命令を実行する命令実行部ＩＥＸＥを有する。
【００１４】
命令キャッシュメモリＩＣＭａは、例えば、主記憶装置ＭＥＭに比べて高速にアクセス可能なキャッシュメモリであり、主記憶装置ＭＥＭに記憶された命令の一部を保持する。
【００１５】
例えば、命令キャッシュメモリＩＣＭａは、命令を読み出す要求ＲＥＱを命令制御部ＩＵから受信した場合、要求ＲＥＱで示されるアドレスに対応して保持している命令を命令制御部ＩＵに転送する。なお、命令キャッシュメモリＩＣＭａは、要求ＲＥＱで示されるアドレスに対応する命令を保持していない場合（キャッシュミスした場合）、主記憶装置ＭＥＭに命令の読み出しを要求する。
【００１６】
例えば、命令キャッシュメモリＩＣＭａは、パイプライン処理部ＰＬＰａおよび命令キャッシュ制御部ＩＣＭＣａを有する。図１の括弧内には、パイプライン処理部ＰＬＰａが実行するパイプライン処理の一例、すなわち、演算処理装置ＰＵａの制御方法の一例を示す。図１の要求ＲＥＱｉｎｔ（ＲＥＱｉｎｔＡ、ＲＥＱｉｎｔＢ）は、パイプライン処理部ＰＬＰａの内部で生成した要求ＲＥＱを示す。以下、パイプライン処理部ＰＬＰａの内部で生成した要求ＲＥＱ（ＲＥＱｉｎｔ）は、内部要求ＲＥＱ（ＲＥＱｉｎｔ）とも称される。また、図１の要求ＲＥＱｅｘｔ（ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢ、ＲＥＱｅｘｔＣ、ＲＥＱｅｘｔＤ）は、命令制御部ＩＵから受信する要求ＲＥＱを示す。以下、命令制御部ＩＵから受信する要求ＲＥＱ（ＲＥＱｅｘｔ）は、外部要求ＲＥＱ（ＲＥＱｅｘｔ）とも称される。例えば、内部要求ＲＥＱｉｎｔは、外部要求ＲＥＱｅｘｔよりも優先して処理される。
【００１７】
パイプライン処理部ＰＬＰａは、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔおよびパイプライン処理部ＰＬＰａの内部で生成した要求ＲＥＱｉｎｔを含む複数の要求ＲＥＱに基づくそれぞれの処理を、複数のステージで順次実行する。例えば、パイプライン処理部ＰＬＰａは、複数の選択ステージＰ（Ｐ３、Ｐ２、Ｐ１）の各々において、命令キャッシュメモリＩＣＭａを動作させる複数の要求ＲＥＱのうち、優先順位が他より高い要求ＲＥＱを次のステージに出力する。すなわち、パイプライン処理部ＰＬＰａは、複数の要求ＲＥＱのうちの優先順位の高い要求ＲＥＱを選択する処理を複数の選択ステージＰ３、Ｐ２、Ｐ１に分けて実行する。
【００１８】
また、パイプライン処理部ＰＬＰａは、複数の処理ステージＴ、Ｍ、Ｓ、Ｂ、Ｒにおいて、複数の選択ステージＰ３、Ｐ２、Ｐ１のうちの最終ステージ（選択ステージＰ１）から出力された要求ＲＥＱに基づく処理を順次実行する。このように、パイプライン処理部ＰＬＰａは、複数の選択ステージＰ３、Ｐ２、Ｐ１と複数の処理ステージＴ、Ｍ、Ｓ、Ｂ、Ｒとを有する。以下、選択ステージＰ３、Ｐ２、Ｐ１、処理ステージＴ、Ｍ、Ｓ、Ｂ、Ｒは、Ｐ３ステージ、Ｐ２ステージ、Ｐ１ステージ、Ｔステージ、Ｍステージ、Ｓステージ、Ｂステージ、Ｒステージとも称される。また、処理ステージＴ、Ｍ、Ｓ、Ｂ、Ｒは、１つにまとめて、処理ステージＴＭＳＢＲとも称される。
【００１９】
例えば、Ｐ３ステージは、Ｐ３ステージに投入された要求ＲＥＱのうち、Ｐ２ステージに転送する要求ＲＥＱを、予め決められた優先順位に基づいて選択するプライオリティステージである。Ｐ２ステージは、Ｐ２ステージに投入された要求ＲＥＱのうち、Ｐ１ステージに転送する要求ＲＥＱを、予め決められた優先順位に基づいて選択するプライオリティステージである。Ｐ１ステージは、Ｐ１ステージに投入された要求ＲＥＱのうち、Ｔステージに転送する要求ＲＥＱを、予め決められた優先順位に基づいて選択するプライオリティステージである。
【００２０】
Ｔステージは、命令キャッシュメモリＩＣＭａが有する図示しないタグおよびＴＬＢ（Translation Lookaside Buffer）等にアクセスするステージである。Ｍステージは、要求されたアドレスとタグに登録されたアドレスとを比較するステージである。Ｓステージは、キャッシュヒットしたデータ（命令）を選択するステージである。Ｂステージは、Ｓステージで選択したデータをバッファに格納するステージである。Ｒステージは、バッファに格納したデータ等の処理結果を命令制御部ＩＵ等に通知するステージである。
【００２１】
このように、図１に示す例では、パイプライン処理部ＰＬＰａは、８段のステージを含むパイプライン処理を実行する。なお、パイプライン処理の段数（ステージの数）は、図１に示す例に限定されない。
【００２２】
命令キャッシュ制御部ＩＣＭＣａは、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔを、処理ステージＴＭＳＢＲの処理順が要求ＲＥＱの受信順となる選択ステージＰに投入する。
【００２３】
図１の括弧内に示す例では、要求ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢ、ＲＥＱｅｘｔＣ、ＲＥＱｅｘｔＤが命令制御部ＩＵから命令キャッシュメモリＩＣＭａに順番に発行される。図１の太枠で示した選択ステージＰは、各要求ＲＥＱが投入されるステージを示す。
【００２４】
例えば、要求ＲＥＱｅｘｔＡは、サイクルＣＹＣ１で命令制御部ＩＵから発行され、サイクルＣＹＣ２で命令キャッシュメモリＩＣＭａに投入される。サイクルＣＹＣ２では、要求ＲＥＱｅｘｔＡより優先順位の高い要求ＲＥＱｉｎｔＡ、ＲＥＱｉｎｔＢがＰ１ステージおよびＰ２ステージにそれぞれ転送される。このため、要求ＲＥＱｅｘｔＡは、サイクルＣＹＣ２において、Ｐ３ステージに投入される。そして、サイクルＣＹＣ９のＲステージにおいて、要求ＲＥＱｅｘｔＡの結果が命令制御部ＩＵに通知される。この場合、命令制御部ＩＵが要求ＲＥＱｅｘｔＡを発行してから命令キャッシュメモリＩＣＭａが要求ＲＥＱｅｘｔＡの結果を命令制御部ＩＵに返すまでのレイテンシ（以下、要求ＲＥＱｅｘｔＡのレイテンシとも称する）は、９サイクルである。
【００２５】
ここで、例えば、命令制御部ＩＵから受信した要求ＲＥＱをＴステージの前段のＰ１ステージのみに投入する命令キャッシュメモリでは、要求ＲＥＱｅｘｔＡは、要求ＲＥＱｉｎｔＡとＰ１ステージで衝突するため、Ｐ１ステージに投入されない。この場合、要求ＲＥＱｅｘｔＡは、再投入用のポート（図示せず）に登録され、選択ステージＰ３、Ｐ２、Ｐ１のうちの所定のステージ（例えば、Ｐ２ステージ）に内部要求ＲＥＱとして再投入される。要求ＲＥＱｅｘｔＡが再投入される場合のレイテンシは、再投入用のポート等を経由するため、サイクルＣＹＣ２でＰ３ステージに要求ＲＥＱｅｘｔＡが投入される場合のレイテンシに比べて増加する。
【００２６】
要求ＲＥＱｅｘｔＢは、要求ＲＥＱｅｘｔＡが発行されてから１サイクル後のサイクルＣＹＣ２で命令制御部ＩＵから発行され、サイクルＣＹＣ３で命令キャッシュメモリＩＣＭａに投入される。この場合、要求ＲＥＱｅｘｔＢがサイクルＣＹＣ３でＰ１ステージに投入されると、要求ＲＥＱｅｘｔＢの処理は、先行する要求ＲＥＱｅｘｔＡの処理を追い越す。また、要求ＲＥＱｅｘｔＢがサイクルＣＹＣ３でＰ２ステージに投入されると、要求ＲＥＱｅｘｔＢと要求ＲＥＱｅｘｔＡとがＰ２ステージで衝突する。このため、サイクルＣＹＣ３では、命令キャッシュ制御部ＩＣＭＣａは、Ｐ３ステージに要求ＲＥＱｅｘｔＢを投入する。
【００２７】
要求ＲＥＱｅｘｔＣは、要求ＲＥＱｅｘｔＢが発行されてから２サイクル後のサイクルＣＹＣ４で命令制御部ＩＵから発行され、サイクルＣＹＣ５で命令キャッシュメモリＩＣＭａに投入される。この場合、要求ＲＥＱｅｘｔＣがサイクルＣＹＣ５でＰ１ステージに投入されると、要求ＲＥＱｅｘｔＣと要求ＲＥＱｅｘｔＢとがＰ１ステージで衝突する。要求ＲＥＱｅｘｔＣがサイクルＣＹＣ５でＰ２ステージまたはＰ３ステージに投入される場合は、要求ＲＥＱｅｘｔＣと要求ＲＥＱｅｘｔＢとの衝突、要求ＲＥＱｅｘｔＣの処理が要求ＲＥＱｅｘｔＡの処理を追い越す現象等は、発生しない。
【００２８】
このため、サイクルＣＹＣ５では、命令キャッシュ制御部ＩＣＭＣａは、Ｐ２ステージおよびＰ３ステージのうち、Ｔステージに近いＰ２ステージに要求ＲＥＱｅｘｔＣを投入する。この場合、命令制御部ＩＵが要求ＲＥＱｅｘｔＣを発行してから命令キャッシュメモリＩＣＭａが要求ＲＥＱｅｘｔＣの結果を命令制御部ＩＵに返すまでのレイテンシ（以下、要求ＲＥＱｅｘｔＣのレイテンシとも称する）は、８サイクルである。
【００２９】
これに対し、サイクルＣＹＣ５でＰ３ステージに要求ＲＥＱｅｘｔＣを投入した場合、要求ＲＥＱｅｘｔＣのレイテンシは、サイクルＣＹＣ５でＰ２ステージに要求ＲＥＱｅｘｔＣを投入した場合に比べて、Ｐ３ステージの１サイクル分増加する。換言すれば、図１に示す制御方法は、サイクルＣＹＣ５でＰ３ステージに要求ＲＥＱｅｘｔＣを投入する場合に比べて、要求ＲＥＱｅｘｔＣのレイテンシを１サイクル短くできる。
【００３０】
要求ＲＥＱｅｘｔＤは、要求ＲＥＱｅｘｔＣが発行されてから２サイクル後のサイクルＣＹＣ６で命令制御部ＩＵから発行され、サイクルＣＹＣ７で命令キャッシュメモリＩＣＭａに投入される。この場合、要求ＲＥＱｅｘｔＤがサイクルＣＹＣ７で選択ステージＰ１、Ｐ２、Ｐ３のいずれに投入されても、要求ＲＥＱｅｘｔＤと要求ＲＥＱｅｘｔＣとの衝突、要求ＲＥＱｅｘｔＤの処理が要求ＲＥＱｅｘｔＣの処理を追い越す現象等は、発生しない。このため、サイクルＣＹＣ７では、命令キャッシュ制御部ＩＣＭＣａは、Ｐ１ステージ、Ｐ２ステージおよびＰ３ステージのうち、Ｔステージに最も近いＰ１ステージ（Ｔステージの前段のステージ）に要求ＲＥＱｅｘｔＣを投入する。
【００３１】
この場合、命令制御部ＩＵが要求ＲＥＱｅｘｔＤを発行してから命令キャッシュメモリＩＣＭａが要求ＲＥＱｅｘｔＤの結果を命令制御部ＩＵに返すまでのレイテンシ（以下、要求ＲＥＱｅｘｔＤのレイテンシとも称する）は、７サイクルである。これに対し、サイクルＣＹＣ７でＰ３ステージに要求ＲＥＱｅｘｔＤを投入した場合、要求ＲＥＱｅｘｔＤのレイテンシは、サイクルＣＹＣ７でＰ１ステージに要求ＲＥＱｅｘｔＤを投入した場合に比べて、Ｐ３ステージとＰ２ステージの２サイクル分増加する。換言すれば、図１に示す制御方法は、サイクルＣＹＣ７でＰ３ステージに要求ＲＥＱｅｘｔＤを投入する場合に比べて、要求ＲＥＱｅｘｔＤのレイテンシを２サイクル短くできる。
【００３２】
ここで、例えば、選択ステージＰ３、Ｐ２、Ｐ１を１つのステージで実行し、処理ステージＳ、Ｂを１つのステージで実行する５段のパイプライン処理では、８段のパイプライン処理に比べて、１ステージの処理量が増加し、１ステージのサイクルが長くなる。したがって、５段のパイプライン処理で動作する命令キャッシュメモリでは、８段のパイプライン処理で動作する命令キャッシュメモリに比べて、各要求ＲＥＱを処理する速度が遅くなる。換言すれば、８段のパイプライン処理で動作する命令キャッシュメモリは、５段のパイプライン処理で動作する命令キャッシュメモリに比べて、各要求ＲＥＱを高速に処理できる。
【００３３】
さらに、図１に示す命令キャッシュメモリＩＣＭａは、命令制御部ＩＵから受信した要求ＲＥＱをパイプライン処理の先頭のＰ３ステージのみに投入する命令キャッシュメモリに比べて、パイプライン処理のレイテンシの増加を抑制できる。すなわち、命令キャッシュメモリＩＣＭａのレイテンシの増加を抑制しつつ、命令キャッシュメモリＩＣＭａを高速化することができる。なお、演算処理装置ＰＵａの構成は、図１に示す例に限定されない。
【００３４】
以上、図１に示す実施形態では、パイプライン処理部ＰＬＰａは、複数の選択ステージＰ３、Ｐ２、Ｐ１において、命令キャッシュメモリＩＣＭａを動作させる複数の要求ＲＥＱのうち、優先順位が他より高い要求ＲＥＱを次のステージに出力する。そして、パイプライン処理部ＰＬＰａは、複数の処理ステージＴ、Ｍ、Ｓ、Ｂ、Ｒにおいて、複数の選択ステージＰ３、Ｐ２、Ｐ１のうちの最終ステージ（選択ステージＰ１）から出力された要求ＲＥＱに基づく処理を順次実行する。また、命令キャッシュ制御部ＩＣＭＣａは、命令制御部ＩＵから受信した要求ＲＥＱを、処理ステージＴＭＳＢＲの処理順が要求ＲＥＱの受信順となる選択ステージＰに投入する。
【００３５】
すなわち、命令キャッシュ制御部ＩＣＭＣａは、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔを、要求ＲＥＱの処理順が受信順と異なる順序にならないように、複数の選択ステージＰ３、Ｐ２、Ｐ１のいずれかに投入する。これにより、選択ステージＰ３、Ｐ２、Ｐ１のうちの所定のステージのみに命令制御部ＩＵから受信した要求ＲＥＱｅｘｔが投入される場合に比べて、命令キャッシュメモリＩＣＭａのレイテンシの増加を抑制することができる。
【００３６】
図２は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図１で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。なお、図２では、図を見やすくするために、データキャッシュメモリＤＣＭとプロセッサコアＰＣＯＲとの間の信号線、データキャッシュメモリＤＣＭと２次キャッシュメモリＣＭＬＬとの間の信号線等の記載を省略している。図２に示す演算処理装置ＰＵｂは、例えば、命令を実行するＣＰＵ等のプロセッサである。
【００３７】
演算処理装置ＰＵｂは、プロセッサコアＰＣＯＲ、１次キャッシュメモリＣＭＬ１、２次キャッシュメモリＣＭＬ２および主記憶装置ＭＥＭを有する。プロセッサコアＰＣＯＲは、命令制御部ＩＵおよび命令実行部ＩＥＸＥを有する。命令制御部ＩＵおよび命令実行部ＩＥＸＥは、図１に示した命令制御部ＩＵおよび命令実行部ＩＥＸＥと同一または同様である。
【００３８】
１次キャッシュメモリＣＭＬ１は、２次キャッシュメモリＣＭＬ２に保持されたデータの一部および命令の一部を保持する。例えば、１次キャッシュメモリＣＭＬ１は、命令実行部ＩＸＥＸが実行する命令を保持する命令キャッシュメモリＩＣＭｂと、命令実行部ＩＸＥＸが使用するデータを保持するデータキャッシュメモリＤＣＭとを有する。命令キャッシュメモリＩＣＭｂおよびデータキャッシュメモリＤＣＭは、例えば、セットアソシアティブ方式のキャッシュメモリであり、２次キャッシュメモリＣＭＬ２に比べて高速にアクセス可能である。
【００３９】
データキャッシュメモリＤＣＭは、データを読み出す要求を命令制御部ＩＵから受信した場合、要求で示されるアドレスに対応して保持しているデータを命令制御部ＩＵに転送する。なお、データキャッシュメモリＤＣＭは、要求で示されるアドレスに対応するデータを保持していない場合（キャッシュミスした場合）、２次キャッシュメモリＣＭＬ２にデータの読み出しを要求する。
【００４０】
命令キャッシュメモリＩＣＭｂは、図１に示したパイプライン処理部ＰＬＰａおよび命令キャッシュ制御部ＩＣＭＣａの代わりに、パイプライン処理部ＰＬＰｂおよび命令キャッシュ制御部ＩＣＭＣｂを有する。命令キャッシュメモリＩＣＭｂのその他の構成は、図１に示した命令キャッシュメモリＩＣＭａと同一または同様である。
【００４１】
例えば、命令キャッシュメモリＩＣＭｂは、命令を読み出す要求ＲＥＱを命令制御部ＩＵから受信した場合、要求ＲＥＱで示されるアドレスに対応して保持している命令を命令制御部ＩＵに転送する。また、命令キャッシュメモリＩＣＭｂは、要求ＲＥＱで示されるアドレスに対応する命令を保持していない場合（キャッシュミスした場合）、２次キャッシュメモリＣＭＬ２に命令の読み出しを要求する。パイプライン処理部ＰＬＰｂおよび命令キャッシュ制御部ＩＣＭＣｂの詳細は、図３および図４でそれぞれ説明する。
【００４２】
２次キャッシュメモリＣＭＬ２は、例えば、セットアソシアティブ方式のキャッシュメモリであり、主記憶装置ＭＥＭに比べて高速にアクセス可能である。２次キャッシュメモリＣＭＬ２は、１次キャッシュメモリＣＭＬ１および主記憶装置ＭＥＭに接続される。例えば、２次キャッシュメモリＣＭＬ２は、主記憶装置ＭＥＭに記憶されたデータの一部および命令の一部を保持する。そして、２次キャッシュメモリＣＭＬ２は、データを読み出す要求をデータキャッシュメモリＤＣＭから受信した場合、要求で示されるアドレスに対応して保持しているデータをデータキャッシュメモリＤＣＭに転送する。なお、２次キャッシュメモリＣＭＬ２は、要求で示されるアドレスに対応するデータを保持していない場合（キャッシュミスした場合）、主記憶装置ＭＥＭにデータの読み出しを要求する。
【００４３】
また、２次キャッシュメモリＣＭＬ２は、例えば、命令を読み出す要求を命令キャッシュメモリＩＣＭｂから受信した場合、要求で示されるアドレスに対応して保持している命令を命令キャッシュメモリＩＣＭｂに転送する。なお、２次キャッシュメモリＣＭＬ２は、要求で示されるアドレスに対応する命令を保持していない場合（キャッシュミスした場合）、主記憶装置ＭＥＭに命令の読み出しを要求する。なお、演算処理装置ＰＵｂの構成は、図２に示す例に限定されない。
【００４４】
図３は、図２に示したパイプライン処理部ＰＬＰｂの一例を示す。なお、パイプライン処理部ＰＬＰｂの構成は、図３に示す例に限定されない。パイプライン処理部ＰＬＰｂは、図１で説明した８つのパイプラインステージＰ３、Ｐ２、Ｐ１、Ｔ、Ｍ、Ｓ、Ｂ、Ｒを有する。なお、図３に示す括弧内の符号Ａ、ＩＰは、命令制御部ＩＵのパイプラインステージを示す。ステージＡ（以下、Ａステージとも称する）は、命令制御部ＩＵが要求ＲＥＱｅｘｔを発行するステージである。ステージＩＰ（以下、ＩＰステージとも称する）は、Ａステージで発行された要求ＲＥＱｅｘｔがパイプライン処理部ＰＬＰｂに投入されるステージである。例えば、パイプライン処理部ＰＬＰｂは、ＩＰステージとＰ１ステージとが同じステージになるように設計される。
【００４５】
パイプライン処理部ＰＬＰｂは、パイプラインレジスタ等のレジスタＲＰ２、ＲＰ１、ＲＴＬ、ＲＭＬ、ＲＳＬ、ＲＢＬ、ＲＲＬ、ＲＥＡ、ＲＥＸ、ＲＰＴ、ＲＴＡＧ、ＲＳＡ、ＲＢＡ、ＲＲＡ、ＲＭＨ、ＲＩＤ、ＲＷ１、ＲＷ２、ＲＷ３、ＲＷ４、ＲＤＡを有する。例えば、レジスタＲＰ２等は、受信した情報を次のサイクルで出力する。さらに、パイプライン処理部ＰＬＰｂは、ポートＰＴＦ、ＰＴＲ、ＰＴＭＩＬ、ＰＴＭＩＡ、セレクタＳＰ４、ＳＰ３、ＳＰ２、ＳＰ１、ＳＰＴ、ＳＩＤ、ＳＨＷ、タグＴＡＧ、アドレス変換部ＴＬＢ、比較器ＣＭＰおよび命令保持部ＩＭＥＭを有する。
【００４６】
命令制御部ＩＵに転送する命令の格納先を示す論理アドレス、パリティビット等を含む要求ＲＥＱｅｘｔは、命令制御部ＩＵからレジスタＲＥＡ等を介してレジスタＲＴＬに転送され、図３の破線で囲んだパイプラインを流れて処理される。要求ＲＥＱｅｘｔがＰ３ステージ、Ｐ２ステージおよびＰ１ステージのいずれかのステージから順にＲステージまで流れた場合、命令制御部ＩＵへのデータ転送（命令の転送）が完了する。
【００４７】
例えば、レジスタＲＥＡは、要求ＲＥＱｅｘｔを命令制御部ＩＵから受信し、受信した次のサイクルで要求ＲＥＱｅｘｔをレジスタＲＥＸ、セレクタＳＰ１、ＳＰ２、ＳＰ３、ＳＰＴ、ＳＩＤに出力する。以下、レジスタＲＥＡからセレクタＳＰ１、ＳＰＴ、ＳＩＤに出力された要求ＲＥＱｅｘｔは、要求ＲＥＱｅｘｔ１とも称される。また、レジスタＲＥＡからセレクタＳＰ２に出力された要求ＲＥＱｅｘｔは要求ＲＥＱｅｘｔ２とも称され、レジスタＲＥＡからセレクタＳＰ３に出力された要求ＲＥＱｅｘｔは要求ＲＥＱｅｘｔ３とも称される。
【００４８】
レジスタＲＥＸは、レジスタＲＥＡから受信した要求ＲＥＱｅｘｔをポートＰＴＦ、ＰＴＲに出力する。これにより、要求ＲＥＱｅｘｔは、ＭステージでポートＰＴＦ、ＰＴＲのいずれかにセットされる。例えば、要求ＲＥＱｅｘｔのうち、命令を２次キャッシュメモリＣＭＬ２から取得するプリフェッチの要求ＲＥＱｅｘｔは、ポートＰＴＦにセットされ、その他の要求ＲＥＱｅｘｔは、ポートＰＴＲにセットされる。さらに、レジスタＲＥＸは、レジスタＲＥＡから受信した要求ＲＥＱｅｘｔを、要求ＲＥＱｅｘｔ４としてセレクタＳＰ４に出力する。
【００４９】
ポートＰＴＦは、例えば、プリフェッチの要求ＲＥＱｅｘｔがセットされた場合、プリフェッチを実行する内部要求ＲＥＱｉｎｔＰＦをセレクタＳＰ４に出力する。ポートＰＴＲは、例えば、要求ＲＥＱｅｘｔがレジスタＲＥＡからパイプラインに投入されない場合、あるいは、パイプラインに投入された要求ＲＥＱｅｘｔがストールした場合、要求ＲＥＱｅｘｔを内部要求ＲＥＱｉｎｔＲＰとしてセレクタＳＰ２に出力する。これにより、外部要求ＲＥＱｅｘｔが内部要求ＲＥＱｉｎｔＲＰとしてパイプラインに再投入される。
【００５０】
セレクタＳＰ４は、要求ＲＥＱｅｘｔ４、ＲＥＱｉｎｔＰＦ、ＲＥＱｉｎｔＭＩをレジスタＲＥＸ、ポートＰＴＦ、ＰＴＭＩＬからそれぞれ受信する。そして、セレクタＳＰ４は、受信した要求ＲＥＱのうち、優先順位の高い要求ＲＥＱをセレクタＳＰ３に出力する。要求ＲＥＱｉｎｔＭＩは、例えば、命令保持部ＩＭＥＭがキャッシュミスした場合、キャッシュミスしたデータ（命令）を２次キャッシュメモリＣＭＬ２から命令保持部ＩＭＥＭにコピーするフィルを実行する内部要求である。例えば、ポートＰＴＭＩＬは、レジスタＲＢＬから受信する情報に基づいて、内部要求ＲＥＱｉｎｔＭＩをセレクタＳＰ４に出力する。
【００５１】
図３に示す例では、要求ＲＥＱｅｘｔ４の優先順位は、要求ＲＥＱｉｎｔＰＦ、ＲＥＱｉｎｔＭＩの優先順位より低い。したがって、セレクタＳＰ４は、要求ＲＥＱｅｘｔ４のみを受信した場合、要求ＲＥＱｅｘｔ４をセレクタＳＰ３に出力する。これにより、要求ＲＥＱｅｘｔは、要求ＲＥＱｅｘｔ４としてＰ３ステージに投入される。また、例えば、セレクタＳＰ４は、要求ＲＥＱｅｘｔ４、ＲＥＱｉｎｔＰＦ、ＲＥＱｉｎｔＭＩを受信した場合、優先順位が最も高い要求ＲＥＱｉｎｔＭＩをセレクタＳＰ３に出力する。
【００５２】
ここで、要求ＲＥＱｅｘｔ４は、レジスタＲＥＡからレジスタＲＥＸを介してセレクタＳＰ４に転送されるため、命令制御部ＩＵのパイプライン処理におけるＩＰステージの次のサイクルでＰ３ステージに投入される。したがって、ＩＰステージでは、要求ＲＥＱｅｘｔ４は、Ｐ３ステージの前段のステージに投入されることになる。以下、要求ＲＥＱｅｘｔ４と他のＲＥＱｅｘｔ（ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ２、ＲＥＱｅｘｔ１）との投入タイミングを揃えて表現する場合等、Ｐ４ステージまたは選択ステージＰ４を用いて、Ｐ３ステージの前段のステージを表現する場合もある。
【００５３】
セレクタＳＰ３は、レジスタＲＥＡから受信した要求ＲＥＱｅｘｔ３とセレクタＳＰ４から受信した要求ＲＥＱとのうち、優先順位の高い要求ＲＥＱをレジスタＲＰ２に出力する。要求ＲＥＱｅｘｔ３の優先順位は、セレクタＳＰ４から受信した要求ＲＥＱの優先順位より低い。したがって、セレクタＳＰ３は、要求ＲＥＱｅｘｔ３のみを受信した場合、要求ＲＥＱｅｘｔ３をレジスタＲＰ２に出力する。すなわち、セレクタＳＰ３が要求ＲＥＱｅｘｔ３のみを受信した場合、要求ＲＥＱｅｘｔは、要求ＲＥＱｅｘｔ３としてＰ３ステージに投入され、Ｐ２ステージに転送される。なお、Ｐ３ステージで要求ＲＥＱｅｘｔ４と要求ＲＥＱｅｘｔ３とが衝突する場合、Ｐ３ステージに投入される要求ＲＥＱｅｘｔ４は、図８に示すように、衝突する要求ＲＥＱｅｘｔ３より先に発行された要求ＲＥＱｅｘｔである。
【００５４】
レジスタＲＰ２は、セレクタＳＰ３から受信した要求ＲＥＱをセレクタＳＰ２に出力する。セレクタＳＰ２は、レジスタＲＥＡから受信した要求ＲＥＱｅｘｔ２とレジスタＲＰ２から受信した要求ＲＥＱとポートＰＴＲから受信した要求ＲＥＱｉｎｔＲＰとのうち、優先順位の高い要求ＲＥＱをレジスタＲＰ１、ＲＰＴおよびセレクタＳＩＤに出力する。要求ＲＥＱｅｘｔ２の優先順位は、要求ＲＥＱｉｎｔＲＰおよびレジスタＲＰ２から受信した要求ＲＥＱの優先順位より低い。したがって、セレクタＳＰ２は、要求ＲＥＱｅｘｔ２のみを受信した場合、要求ＲＥＱｅｘｔ２をレジスタＲＰ１に出力する。すなわち、セレクタＳＰ２が要求ＲＥＱｅｘｔ２のみを受信した場合、要求ＲＥＱｅｘｔは、要求ＲＥＱｅｘｔ２としてＰ２ステージに投入され、Ｐ１ステージに転送される。
【００５５】
レジスタＲＰ１は、セレクタＳＰ２から受信した要求ＲＥＱをセレクタＳＰ１に出力する。セレクタＳＰ１は、レジスタＲＥＡから受信した要求ＲＥＱｅｘｔ１とレジスタＲＰ１から受信した要求ＲＥＱとのうち、優先順位の高い要求ＲＥＱをレジスタＲＴＬに出力する。要求ＲＥＱｅｘｔ１の優先順位は、レジスタＲＰ１から受信した要求ＲＥＱの優先順位より低い。したがって、セレクタＳＰ１は、要求ＲＥＱｅｘｔ１のみを受信した場合、要求ＲＥＱｅｘｔ１をレジスタＲＴＬに出力する。すなわち、セレクタＳＰ１が要求ＲＥＱｅｘｔ１のみを受信した場合、要求ＲＥＱｅｘｔは、要求ＲＥＱｅｘｔ１としてＰ１ステージに投入され、Ｔステージに転送される。
【００５６】
このように、要求ＲＥＱｅｘｔは、命令制御部ＩＵのパイプライン処理におけるＩＰステージにおいて、パイプライン処理部ＰＬＰｂのＰ３ステージ、Ｐ２ステージ、Ｐ１ステージのいずれかに投入される。あるいは、要求ＲＥＱｅｘｔは、命令制御部ＩＵのパイプライン処理におけるＩＰステージの次のサイクルにおいて、パイプライン処理部ＰＬＰｂのＰ３ステージに投入される。なお、要求ＲＥＱｅｘｔは、外部要求ＲＥＱｅｘｔ（ＲＥＱｅｘｔ１、ＲＥＱｅｘｔ２、ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ４）としてパイプラインに投入されなかった場合、内部要求ＲＥＱｉｎｔＲＰとしてＰ２ステージに投入される。
【００５７】
レジスタＲＴＬに転送された要求ＲＥＱは、レジスタＲＭＬ、ＲＳＬ、ＲＢＬ、ＲＲＬに順次転送される。すなわち、レジスタＲＴＬに転送された要求ＲＥＱは、Ｔステージから順にＲステージまで流れる。
【００５８】
レジスタＲＰＴは、セレクタＳＰ２から受信した要求ＲＥＱをセレクタＳＰＴに出力する。セレクタＳＰＴは、レジスタＲＥＡから受信した要求ＲＥＱｅｘｔ１とレジスタＲＰＴから受信した要求ＲＥＱとのいずれかを選択し、選択した要求ＲＥＱをタグＴＡＧおよびアドレス変換部ＴＬＢに出力する。
【００５９】
タグＴＡＧは、命令保持部ＩＭＥＭの各ウェイに保持された命令のタグアドレス等を含む情報を、インデックスアドレス毎に保持する。インデックスアドレスは、命令の格納先を示す論理アドレスの一部分のビット群で表されるアドレスであり、タグアドレスは、論理アドレスの他の一部分のビット群で表されるアドレスに対応する物理アドレスである。タグＴＡＧは、例えば、セレクタＳＰＴから受ける要求ＲＥＱで示されるインデックスアドレスに対応するタグアドレスを、命令保持部ＩＭＥＭのウェイ毎に、レジスタＲＴＡＧを介して比較器ＣＭＰに出力する。
【００６０】
アドレス変換部ＴＬＢは、セレクタＳＰＴから受ける要求ＲＥＱで示される論理アドレスを物理アドレスに変換し、変換した物理アドレスをレジスタＲＳＡに出力する。また、アドレス変換部ＴＬＢは、物理アドレスのうちのタグアドレスを比較器ＣＭＰに出力する。
【００６１】
比較器ＣＭＰは、タグＴＡＧから受信した命令保持部ＩＭＥＭの各ウェイのタグアドレスと、アドレス変換部ＴＬＢから受信したタグアドレスとを比較する。そして、比較器ＣＭＰは、タグＴＡＧから命令保持部ＩＭＥＭのウェイ毎に受信したタグアドレスのいずれかとアドレス変換部ＴＬＢから受信したタグアドレスとが一致した場合、タグアドレスが一致したウェイを示す情報をレジスタＲＭＨに出力する。すなわち、比較器ＣＭＰは、キャッシュヒットしたウェイを示す情報をレジスタＲＭＨに出力する。なお、比較器ＣＭＰは、タグＴＡＧから命令保持部ＩＭＥＭのウェイ毎に受信したタグアドレスのいずれもアドレス変換部ＴＬＢから受信したタグアドレスと一致しない場合、キャッシュミスしたことを示す情報をレジスタＲＭＨに出力する。
【００６２】
レジスタＲＭＨは、比較器ＣＭＰから受信した情報をセレクタＳＨＷに出力する。レジスタＲＳＡは、アドレス変換部ＴＬＢから受信した物理アドレス等の情報を、レジスタＲＢＡを介して、レジスタＲＲＡおよびポートＰＴＭＩＡに出力する。ポートＰＴＭＩＡは、内部要求ＲＥＱｉｎｔＭＩとセットで用いられる情報を出力する。
【００６３】
セレクタＳＩＤは、レジスタＲＥＡから受信した要求ＲＥＱｅｘｔ１とセレクタＳＰ２から受信した要求ＲＥＱとのいずれかを選択し、選択した要求ＲＥＱで示されるインデックスアドレス等の情報をレジスタＲＩＤを介して命令保持部ＩＭＥＭに出力する。
【００６４】
命令保持部ＩＭＥＭは、例えば、４つのウェイを有する。なお、ウェイの数は、４つに限定されない。命令保持部ＩＭＥＭは、各ウェイに保持した命令のうち、セレクタＳＩＤから受信したインデックスアドレスに対応する命令をウェイ毎にレジスタＲＷ（ＲＷ１、ＲＷ２、ＲＷ３、ＲＷ４）を介してセレクタＳＨＷに出力する。
【００６５】
セレクタＳＨＷは、レジスタＲＷ１、ＲＷ２、ＲＷ３、ＲＷ４から受信した命令（４つのウェイから出力された命令）のうち、レジスタＲＭＨから受信した情報が示すウェイに対応する命令を、レジスタＲＤＡを介して命令制御部ＩＵに出力する。これにより、命令制御部ＩＵへのデータ転送（命令の転送）が完了する。なお、レジスタＲＭＨから受信した情報がキャッシュミスを示す場合、セレクタＳＨＷは、レジスタＲＷ１、ＲＷ２、ＲＷ３、ＲＷ４から受信した命令のいずれも、命令制御部ＩＵに出力しない。
【００６６】
図４は、図２に示した命令キャッシュ制御部ＩＣＭＣｂの一例を示す。命令キャッシュ制御部ＩＣＭＣｂは、順序判定部ＯＪＧ（以下、判定部ＯＪＧとも称する）、衝突判定部ＣＪＧ（以下、判定部ＣＪＧとも称する）および投入決定部ＩＮＤＥＴを有する。
【００６７】
順序判定部ＯＪＧは、例えば、要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ１、ＲＥＱｅｘｔ２、ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ４として投入した場合に、要求ＲＥＱｅｘｔが投入済みの要求ＲＥＱの処理を追い越すか否かを判定する。すなわち、順序判定部ＯＪＧは、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔの投入先の候補である選択ステージＰ４、Ｐ３、Ｐ２、Ｐ１のうち、処理ステージＴＭＳＢＲの処理順が要求ＲＥＱの受信順となる選択ステージＰを特定する。
【００６８】
衝突判定部ＣＪＧは、例えば、要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ１、ＲＥＱｅｘｔ２、ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ４として投入した場合に、要求ＲＥＱｅｘｔが投入済みの要求ＲＥＱと衝突するか否かを判定する。すなわち、衝突判定部ＣＪＧは、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔの投入先の候補である選択ステージＰ４、Ｐ３、Ｐ２、Ｐ１のうち、要求ＲＥＱｅｘｔと投入済みの要求ＲＥＱとの衝突を回避する選択ステージＰを特定する。
【００６９】
例えば、衝突判定部ＣＪＧは、論理和回路ＯＲ１、ＯＲ２、ＯＲ３、レジスタＤＬＰ１、ＤＬＰ２を有する。
【００７０】
論理和回路ＯＲ３は、信号ＨＬＤｅｘｔ４と信号ＨＬＤｉｎｔＰＦと信号ＨＬＤｉｎｔＭＩと信号ＨＬＤｉｎｔＲＰとの論理和を演算し、演算結果を信号ＢＵＳＹＰ３として論理和回路ＯＲ２および投入決定部ＩＮＤＥＴに出力する。
【００７１】
例えば、信号ＨＬＤｅｘｔ４は、要求ＲＥＱｅｘｔ４（投入済みの外部要求ＲＥＱｅｘｔ）がＰ３ステージに転送されたことを示す情報であり、要求ＲＥＱｅｘｔ４がＰ３ステージに存在する場合に論理値”１”に設定される。信号ＨＬＤｉｎｔＰＦは、要求ＲＥＱｉｎｔＰＦがＰ３ステージに投入されたことを示す情報であり、要求ＲＥＱｉｎｔＰＦがＰ３ステージに存在する場合に論理値”１”に設定される。信号ＨＬＤｉｎｔＭＩは、要求ＲＥＱｉｎｔＭＩがＰ３ステージに投入されたことを示す情報であり、要求ＲＥＱｉｎｔＭＩがＰ３ステージに存在する場合に論理値”１”に設定される。また、信号ＨＬＤｉｎｔＲＰは、要求ＲＥＱｉｎｔＲＰをＰ２ステージに投入するためにＰ２ステージを空けておくための信号である。
【００７２】
したがって、論理値”１”の信号ＢＵＳＹＰ３は、要求ＲＥＱｅｘｔ４、ＲＥＱｉｎｔＰＦ、ＲＥＱｉｎｔＭＩのいずれかがＰ３ステージに存在することを示す。また、論理値”０”の信号ＢＵＳＹＰ３は、要求ＲＥＱｅｘｔ４、ＲＥＱｉｎｔＰＦ、ＲＥＱｉｎｔＭＩのいずれもＰ３ステージに存在しないことを示す。すなわち、信号ＢＵＳＹＰ３は、Ｐ３ステージに要求ＲＥＱが存在することを示す第３の衝突情報の一例である。
【００７３】
論理和回路ＯＲ２は、信号ＨＬＤｅｘｔ３と信号ＢＵＳＹＰ３との論理和を演算し、演算結果をレジスタＤＬＰ２に出力する。例えば、信号ＨＬＤｅｘｔ３は、要求ＲＥＱｅｘｔ３がＰ３ステージに投入されたことを示す情報であり、要求ＲＥＱｅｘｔ３がＰ３ステージに存在する場合に論理値”１”に設定される。すなわち、論理和回路ＯＲ２の出力信号が論理値”１”の場合、要求ＲＥＱがＰ３ステージに存在することを示す。また、論理和回路ＯＲ２の出力信号が論理値”０”の場合、要求ＲＥＱがＰ３ステージに存在しないことを示す。
【００７４】
レジスタＤＬＰ２は、論理和回路ＯＲ２から受信した情報を、受信した次のサイクルで論理和回路ＯＲ１に出力する。すなわち、レジスタＤＬＰ２は、論理和回路ＯＲ２から受信した情報を１ステージ分遅延させて出力する第２の遅延部の一例である。レジスタＤＬＰ２の出力信号ＢＵＳＹＰ２が論理値”１”の場合、要求ＲＥＱｅｘｔ４、ＲＥＱｅｘｔ３、ＲＥＱｉｎｔＰＦ、ＲＥＱｉｎｔＭＩ、ＲＥＱｉｎｔＲＰのいずれかがＰ２ステージに存在することを示す。また、レジスタＤＬＰ２の出力信号ＢＵＳＹＰ２が論理値”０”の場合、要求ＲＥＱｅｘｔ４、ＲＥＱｅｘｔ３、ＲＥＱｉｎｔＰＦ、ＲＥＱｉｎｔＭＩ、ＲＥＱｉｎｔＲＰのいずれもＰ２ステージに存在しないことを示す。
【００７５】
すなわち、信号ＢＵＳＹＰ２は、Ｐ２ステージに要求ＲＥＱが存在することを示す第２の衝突情報の一例である。
【００７６】
論理和回路ＯＲ１は、信号ＨＬＤｅｘｔ２と信号ＢＵＳＹＰ２との論理和を演算し、演算結果をレジスタＤＬＰ１に出力する。例えば、信号ＨＬＤｅｘｔ２は、要求ＲＥＱｅｘｔ２がＰ２ステージに投入されたことを示す情報であり、要求ＲＥＱｅｘｔ２がＰ２ステージに存在する場合に論理値”１”に設定される。すなわち、論理和回路ＯＲ１の出力信号が論理値”１”の場合、要求ＲＥＱｅｘｔ４、ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ２、ＲＥＱｉｎｔＰＦ、ＲＥＱｉｎｔＭＩ、ＲＥＱｉｎｔＲＰのいずれかがＰ２ステージに存在することを示す。また、論理和回路ＯＲ１の出力信号が論理値”０”の場合、要求ＲＥＱｅｘｔ４、ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ２、ＲＥＱｉｎｔＰＦ、ＲＥＱｉｎｔＭＩ、ＲＥＱｉｎｔＲＰのいずれもＰ２ステージに存在しないことを示す。
【００７７】
レジスタＤＬＰ１は、論理和回路ＯＲ１から受信した情報を、受信した次のサイクルで信号ＢＵＳＹＰ１として投入決定部ＩＮＤＥＴに出力する。信号ＢＵＳＹＰ１は、Ｐ１ステージに要求ＲＥＱが存在することを示す第１の衝突情報の一例である。すなわち、レジスタＤＬＰ１は、論理和回路ＯＲ１から受信した情報を、Ｐ１ステージに要求が存在することを示す第１の衝突情報として、１ステージ分遅延させて投入決定部ＩＮＤＥＴに出力する第１の遅延部の一例である。
【００７８】
論理値”１”の信号ＢＵＳＹＰ１は、要求ＲＥＱｅｘｔ４、ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ２、ＲＥＱｉｎｔＰＦ、ＲＥＱｉｎｔＭＩ、ＲＥＱｉｎｔＲＰのいずれかがＰ１ステージに存在することを示す。また、論理値”０”の信号ＢＵＳＹＰ１は、要求ＲＥＱｅｘｔ４、ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ２、ＲＥＱｉｎｔＰＦ、ＲＥＱｉｎｔＭＩ、ＲＥＱｉｎｔＲＰのいずれもＰ１ステージに存在しないことを示す。
【００７９】
投入決定部ＩＮＤＥＴは、命令制御部ＩＵから命令キャッシュメモリＩＣＭｂが受信した要求ＲＥＱｅｘｔの投入先となる選択ステージＰを、順序判定部ＯＪＧの判定結果および衝突判定部ＣＪＧの判定結果に基づいて決定する。例えば、投入決定部ＩＮＤＥＴは、判定対象の要求ＲＥＱｅｘｔと投入済みの要求ＲＥＱとの衝突を回避し、かつ、処理ステージＴＭＳＢＲの処理順が要求ＲＥＱの受信順となる選択ステージＰを、判定部ＯＪＧ、ＣＪＧの各々の判定結果に基づいて特定する。そして、投入決定部ＩＮＤＥＴは、特定した選択ステージＰのうち、処理ステージＴＭＳＢＲに最も近い選択ステージＰを、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔの投入先のステージに決定する。例えば、投入決定部ＩＮＤＥＴは、図３に示したセレクタＳＰ１−ＳＰ４を制御して、順序判定部ＯＪＧと衝突判定部ＣＪＧの両方に特定された選択ステージＰのうち、処理ステージＴＭＳＢＲに最も近い選択ステージＰに外部要求ＲＥＱｅｘｔを投入する。
【００８０】
図５は、図３に示したパイプライン処理部ＰＬＰｂの動作の一例を示す。なお、図５は、内部要求ＲＥＱｉｎｔがない場合と１つ存在する場合におけるパイプライン処理部ＰＬＰｂの動作の一例を示す。
【００８１】
図５に示す例では、要求ＲＥＱｅｘｔＢは、要求ＲＥＱｅｘｔＡが発行されたサイクルＣＹＣ１の次のサイクルＣＹＣ２で発行される。信号ＲＥＱＶＡＬＩＤは、要求ＲＥＱｅｘｔを発行したことを示す信号であり、命令制御部ＩＵから命令キャッシュメモリＩＣＭｂに出力される。例えば、要求ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢが発行されたサイクルＣＹＣ１、ＣＹＣ２に、論理値”１”の信号ＲＥＱＶＡＬＩＤが命令制御部ＩＵから命令キャッシュメモリＩＣＭｂに出力される。信号ＲＳＴＶは、要求ＲＥＱｅｘｔの処理が完了したことを示す信号であり、命令キャッシュメモリＩＣＭｂから命令制御部ＩＵに出力される。例えば、Ｒステージに、論理値”１”の信号ＲＳＴＶが命令キャッシュメモリＩＣＭｂから命令制御部ＩＵに出力される。
【００８２】
内部要求ＲＥＱｉｎｔがない場合、サイクルＣＹＣ２において、要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ１ＡとしてＰ１ステージに投入される。そして、要求ＲＥＱｅｘｔ１Ａは、Ｐ１ステージからＴステージ、Ｍステージ、Ｓステージ、Ｂステージ、Ｒステージの順番で流れて処理される。また、要求ＲＥＱｅｘｔＢは、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入される。要求ＲＥＱｅｘｔ１Ｂは、Ｐ１ステージからＲステージまで流れる。この場合、命令制御部ＩＵが要求ＲＥＱｅｘｔＡを発行してから要求ＲＥＱｅｘｔＡの処理が完了するまでのレイテンシは、７サイクルである。同様に、要求ＲＥＱｅｘｔＢのレイテンシは、７サイクルである。
【００８３】
内部要求ＲＥＱｉｎｔが１つ存在する場合、図５に示す例では、要求ＲＥＱｅｘｔＡは、内部要求ＲＥＱｉｎｔがない場合に比べて、１サイクル遅いサイクルＣＹＣ３でＰ１ステージに投入される。例えば、サイクルＣＹＣ０では、内部要求ＲＥＱｉｎｔＭＩがＰ３ステージに投入される。このため、サイクルＣＹＣ２において、要求ＲＥＱｅｘｔＡを要求ＲＥＱｅｘｔ１ＡとしてＰ１ステージに投入すると、要求ＲＥＱｅｘｔ１Ａは、要求ＲＥＱｉｎｔＭＩと衝突する。要求ＲＥＱｅｘｔ１Ａの優先順位は、要求ＲＥＱｉｎｔＭＩの優先順位より低いため、要求ＲＥＱｅｘｔ１Ａは、Ｐ１ステージに投入されない。このため、サイクルＣＹＣ２では、要求ＲＥＱｅｘｔＡは、要求ＲＥＱｅｘｔ２ＡとしてＰ２ステージに投入される。そして、要求ＲＥＱｅｘｔ２Ａは、Ｐ２ステージからＲステージまで流れる。
【００８４】
この場合、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入すると、要求ＲＥＱｅｘｔ１Ｂは、要求ＲＥＱｅｘｔ２Ａと衝突する。要求ＲＥＱｅｘｔ１Ｂの優先順位は、Ｐ２ステージからＰ１ステージに転送された要求ＲＥＱｅｘｔ２Ａの優先順位より低いため、要求ＲＥＱｅｘｔ１Ｂは、Ｐ１ステージに投入されない。このため、サイクルＣＹＣ３では、要求ＲＥＱｅｘｔＢは、要求ＲＥＱｅｘｔ２ＢとしてＰ２ステージに投入される。そして、要求ＲＥＱｅｘｔ２Ｂは、Ｐ２ステージからＲステージまで流れる。
【００８５】
このように、内部要求ＲＥＱｉｎｔが１つ存在する場合、要求ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢのレイテンシは、内部要求ＲＥＱｉｎｔがない場合に比べてＰ２ステージの１サイクル分増加し、８サイクルになる。
【００８６】
図６は、図３に示したパイプライン処理部ＰＬＰｂの動作の別の例を示す。なお、図６は、内部要求ＲＥＱｉｎｔが２つ存在する場合と３つ存在する場合におけるパイプライン処理部ＰＬＰｂの動作の一例を示す。図６に示す要求ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢの発行タイミング等は、図５に示した要求ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢと同じである。
【００８７】
内部要求ＲＥＱｉｎｔが２つ存在する場合、図６に示す例では、要求ＲＥＱｅｘｔＡは、図５に示した内部要求ＲＥＱｉｎｔがない場合に比べて、２サイクル遅いサイクルＣＹＣ４でＰ１ステージに投入される。例えば、サイクルＣＹＣ０では、内部要求ＲＥＱｉｎｔＭＩがＰ３ステージに投入される。そして、サイクルＣＹＣ１では、内部要求ＲＥＱｉｎｔＰＦがＰ３ステージに投入される。このため、サイクルＣＹＣ２において、要求ＲＥＱｅｘｔＡを要求ＲＥＱｅｘｔ２ＡとしてＰ２ステージに投入すると、要求ＲＥＱｅｘｔ２Ａは、要求ＲＥＱｉｎｔＰＦと衝突する。要求ＲＥＱｅｘｔ２Ａの優先順位は、要求ＲＥＱｉｎｔＰＦの優先順位より低いため、要求ＲＥＱｅｘｔ２Ａは、Ｐ２ステージに投入されない。このため、サイクルＣＹＣ２では、要求ＲＥＱｅｘｔＡは、要求ＲＥＱｅｘｔ３ＡとしてＰ３ステージに投入される。そして、要求ＲＥＱｅｘｔ３Ａは、Ｐ３ステージからＲステージまで流れる。
【００８８】
この場合、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入すると、要求ＲＥＱｅｘｔ１Ｂは、要求ＲＥＱｅｘｔ３Ａを追い越す。また、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ２ＢとしてＰ２ステージに投入すると、要求ＲＥＱｅｘｔ２Ｂは、Ｐ２ステージに転送された要求ＲＥＱｅｘｔ３Ａと衝突する。このため、サイクルＣＹＣ３では、要求ＲＥＱｅｘｔＢは、要求ＲＥＱｅｘｔ３ＢとしてＰ３ステージに投入される。そして、要求ＲＥＱｅｘｔ３Ｂは、Ｐ３ステージからＲステージまで流れる。
【００８９】
このように、内部要求ＲＥＱｉｎｔが２つ存在する場合、要求ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢのレイテンシは、内部要求ＲＥＱｉｎｔがない場合に比べて２サイクル分増加し、９サイクルになる。
【００９０】
内部要求ＲＥＱｉｎｔが３つ存在する場合、図６に示す例では、要求ＲＥＱｅｘｔＡは、内部要求ＲＥＱｉｎｔがない場合に比べて、３サイクル遅いサイクルＣＹＣ５でＰ１ステージに投入される。例えば、サイクルＣＹＣ０では、１つ目の内部要求ＲＥＱｉｎｔＭＩがＰ３ステージに投入され、サイクルＣＹＣ１では、内部要求ＲＥＱｉｎｔＰＦがＰ３ステージに投入される。そして、サイクルＣＹＣ２では、２つ目の内部要求ＲＥＱｉｎｔＭＩがＰ３ステージに投入される。このため、サイクルＣＹＣ２において、要求ＲＥＱｅｘｔＡを要求ＲＥＱｅｘｔ３ＡとしてＰ３ステージに投入すると、要求ＲＥＱｅｘｔ３Ａは、２つ目の要求ＲＥＱｉｎｔＭＩと衝突する。要求ＲＥＱｅｘｔ３Ａの優先順位は、要求ＲＥＱｉｎｔＭＩの優先順位より低いため、要求ＲＥＱｅｘｔ３Ａは、Ｐ３ステージに投入されない。このため、サイクルＣＹＣ２の次のサイクルＣＹＣ３において、要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ４ＡとしてＰ２ステージに投入される。そして、要求ＲＥＱｅｘｔ４Ａは、Ｐ３ステージからＲステージまで流れる。
【００９１】
要求ＲＥＱｅｘｔＢは、内部要求ＲＥＱｉｎｔが２つ存在する場合と同様の理由により、要求ＲＥＱｅｘｔ４ＡがＰ３ステージに投入されたサイクルＣＹＣ３の次のサイクルＣＹＣ４において、要求ＲＥＱｅｘｔ４ＢとしてＰ３ステージに投入される。そして、要求ＲＥＱｅｘｔ４Ｂは、Ｐ３ステージからＲステージまで流れる。
【００９２】
このように、内部要求ＲＥＱｉｎｔが３つ存在する場合、要求ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢのレイテンシは、内部要求ＲＥＱｉｎｔがない場合に比べて３サイクル分増加し、１０サイクルになる。
【００９３】
なお、図示していないが、内部要求ＲＥＱｉｎｔが４つ存在する場合、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔＡを要求ＲＥＱｅｘｔ４ＡとしてＰ３ステージに投入すると、要求ＲＥＱｅｘｔ４Ａは、４つ目の内部要求ＲＥＱｉｎｔと衝突する。この場合、要求ＲＥＱｅｘｔＡは、ポートＰＴＲにセットされ、内部要求ＲＥＱｉｎｔＲＰとしてＰ２ステージに投入される。
【００９４】
図５および図６に示したように、パイプライン処理部ＰＬＰｂでは、外部要求ＲＥＱｅｘｔと内部要求ＲＥＱｉｎｔとが衝突した場合、外部要求ＲＥＱｅｘｔの投入タイミングを１サイクル単位で遅らせることができる。
【００９５】
図７は、図３に示したパイプライン処理部ＰＬＰｂの動作の比較例を示す。なお、図７は、内部要求ＲＥＱｉｎｔが１つ存在する場合におけるパイプライン処理部ＰＬＰｂの動作の比較例を示す。先ず、比較例１について説明する。
【００９６】
比較例１は、要求ＲＥＱｅｘｔ２、ＲＥＱｅｘｔ３をパイプラインに投入する手段が存在しないパイプライン処理部の動作を示す。例えば、比較例１の動作は、図３に示したセレクタＳＰ３がパイプライン処理部ＰＬＰｂから省かれ、レジスタＲＰ２の出力と要求ＲＥＱｉｎｔＲＰのいずれかを選択するセレクタがセレクタＳＰ２の代わりに設けられたパイプライン処理部の動作に対応する。
【００９７】
比較例１では、内部要求ＲＥＱｉｎｔが１つ存在する場合、要求ＲＥＱｅｘｔＡは、図５に示した内部要求ＲＥＱｉｎｔがない場合に比べて、３サイクル遅いサイクルＣＹＣ５でＰ１ステージに投入される。例えば、サイクルＣＹＣ２において、要求ＲＥＱｅｘｔ１ＡをＰ１ステージに投入すると、要求ＲＥＱｅｘｔ１Ａは、要求ＲＥＱｉｎｔＭＩと衝突する。要求ＲＥＱｅｘｔ１Ａの優先順位は、要求ＲＥＱｉｎｔＭＩの優先順位より低いため、要求ＲＥＱｅｘｔ１Ａは、Ｐ１ステージに投入されない。比較例１では、要求ＲＥＱｅｘｔ２、ＲＥＱｅｘｔ３をパイプラインに投入する手段が存在しないため、要求ＲＥＱｅｘｔ１ＡをＰ１ステージに投入できない場合、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔ４ＡがＰ３ステージに投入される。そして、要求ＲＥＱｅｘｔ４Ａは、Ｐ３ステージからＲステージまで流れる。
【００９８】
このように、比較例１では、内部要求ＲＥＱｉｎｔが１つのみの場合でも、内部要求ＲＥＱｉｎｔがない場合に比べて、３サイクル遅いサイクルＣＹＣ５でＰ１ステージに投入される。このため、要求ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢのレイテンシは、図５に示した内部要求ＲＥＱｉｎｔがない場合に比べて、Ｐ４ステージ、Ｐ３ステージおよびＰ２ステージの３サイクル分増加する。すなわち、比較例１では、要求ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢのレイテンシは、内部要求ＲＥＱｉｎｔが１つのみの場合でも、図５に示した内部要求ＲＥＱｉｎｔがない場合に比べて３サイクル分増加し、１０サイクルになる。
【００９９】
これに対し、図３に示したパイプライン処理部ＰＬＰｂでは、図５で説明したように、内部要求ＲＥＱｉｎｔが１つ存在する場合、要求ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢのレイテンシは、８サイクルである。すなわち、パイプライン処理部ＰＬＰｂは、比較例１に比べて、要求ＲＥＱｅｘｔのレイテンシを２サイクル短くできる。次に、比較例２について説明する。
【０１００】
比較例２は、比較例１に比べて低周波で動作するパイプライン処理部の動作を示す。例えば、比較例２では、Ｐ３ステージ、Ｐ２ステージおよびＰ１ステージの処理が１つのＰステージで実行され、ＳステージおよびＢステージの処理が１つのＢステージで実行される。すなわち、比較例２では、５つのステージを有するパイプライン処理が実行される。また、比較例２では、命令制御部のパイプライン処理におけるＡステージおよびＩＰステージの処理が１つのＡステージで実行され、ＡステージとＰステージとが同じステージになるように設計される。このため、比較例２では、命令キャッシュメモリは、命令制御部からの要求ＲＥＱを受け取らないことを示す信号ＢＵＳＹを命令制御部に出力することにより、内部要求ＲＥＱｉｎｔと外部要求ＲＥＱｅｘｔとの衝突を回避する。
【０１０１】
比較例２では、内部要求ＲＥＱｉｎｔＭＩがＰステージに投入されるサイクルＣＹＣ１において、論理値”１”の信号ＢＵＳＹを命令制御部が受信する。このため、命令制御部は、信号ＢＵＳＹが論理値”０”になるまで同じ要求ＲＥＱｅｘｔＡを出力し続ける。そして、信号ＢＵＳＹが論理値”０”になったサイクルＣＹＣ２において、命令キャッシュメモリは、要求ＲＥＱｅｘｔＡを命令制御部から受信してＰステージに投入する。これにより、要求ＲＥＱｅｘｔＡは、ＰステージからＲステージまで流れる。この場合、要求ＲＥＱｅｘｔＡのレイテンシは、内部要求ＲＥＱｉｎｔがない場合に比べて、１サイクル分増加する。このように、比較例２では、外部要求ＲＥＱｅｘｔと内部要求ＲＥＱｉｎｔとが衝突した場合、信号ＢＵＳＹを用いて、外部要求ＲＥＱｅｘｔの投入タイミングを１サイクル単位で遅らせることができる。
【０１０２】
なお、比較例１および図３に示したパイプライン処理部ＰＬＰｂでは、ＩＰステージとＰ１ステージとが同じステージになるように設計されるため、信号ＢＵＳＹを用いた制御を実行することは困難である。このため、パイプライン処理部ＰＬＰｂでは、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔを、要求ＲＥＱｅｘｔ１、ＲＥＱｅｘｔ２、ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ４を用いて、選択ステージＰ１、Ｐ２、Ｐ３のいずれかに投入する。これにより、比較例２に比べてパイプライン処理を高周波化したパイプライン処理部ＰＬＰｂにおいても、外部要求ＲＥＱｅｘｔと内部要求ＲＥＱｉｎｔとが衝突した場合に、外部要求ＲＥＱｅｘｔの投入タイミングを１サイクル単位で遅らせることができる。この結果、要求ＲＥＱｅｘｔのレイテンシの増加を比較例１に比べて抑制することができる。
【０１０３】
図８は、図４に示した順序判定部ＯＪＧによる順序判定の一例を示す。なお、図８は、要求ＲＥＱｅｘｔＡと要求ＲＥＱｅｘｔＡの後に発行される要求ＲＥＱｅｘｔＢとの発行タイミングの差が１サイクルである場合の順序判定の一例を示す。また、図８では、要求ＲＥＱｅｘｔの処理順序を見やすくするために、Ｐ１ステージを網掛けで示している。
【０１０４】
要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ１Ａとして投入される場合、要求ＲＥＱｅｘｔ１Ａは、サイクルＣＹＣ２でＰ１ステージに投入される。この場合、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入しても、要求ＲＥＱｅｘｔ１Ｂは、先行する要求ＲＥＱｅｘｔ１Ａを追い超さない。このため、順序判定部ＯＪＧは、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入可能であると判定する。したがって、Ｐ１ステージに転送されるタイミングが要求ＲＥＱｅｘｔ１Ｂより後の要求ＲＥＱｅｘｔ２Ｂ、ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂも投入可能と判定される。
【０１０５】
要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ４Ａとして投入される場合、要求ＲＥＱｅｘｔ４Ａは、サイクルＣＹＣ３でＰ３ステージに投入され、サイクルＣＹＣ５でＰ１ステージに転送される。この場合、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入すると、要求ＲＥＱｅｘｔ１Ｂは、先行する要求ＲＥＱｅｘｔ１Ａを追い越す。また、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ２ＢとしてＰ２ステージに投入すると、要求ＲＥＱｅｘｔ２Ｂは、先行する要求ＲＥＱｅｘｔ１Ａを追い越す。あるいは、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ３ＢとしてＰ３ステージに投入すると、要求ＲＥＱｅｘｔ３Ｂは、先行する要求ＲＥＱｅｘｔ１Ａと衝突する。このため、順序判定部ＯＪＧは、要求ＲＥＱｅｘｔ１Ｂ、ＲＥＱｅｘｔ２Ｂ、ＲＥＱｅｘｔ３Ｂを投入不可と判定する。
【０１０６】
なお、サイクルＣＹＣ４において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ４ＢとしてＰ３ステージに投入した場合、要求ＲＥＱｅｘｔ４Ｂは、先行する要求ＲＥＱｅｘｔ４Ａを追い超さない。このため、順序判定部ＯＪＧは、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ４ＢとしてＰ３ステージに投入可能であると判定する。
【０１０７】
図示していないが、要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ２Ａとして投入される場合、要求ＲＥＱｅｘｔ２Ａは、要求ＲＥＱｅｘｔ１ＡがＰ１ステージに投入されるサイクルＣＹＣ２の次のサイクルＣＹＣ３でＰ１ステージに転送される。このため、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入した場合、要求ＲＥＱｅｘｔ１Ｂは、先行する要求ＲＥＱｅｘｔ２Ａと衝突する。この場合、要求ＲＥＱｅｘｔ１Ｂが投入不可と判定され、要求ＲＥＱｅｘｔ２Ｂ、ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂが投入可能と判定される。また、要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ３Ａとして投入される場合、要求ＲＥＱｅｘｔ３Ａは、要求ＲＥＱｅｘｔ１ＡがＰ１ステージに投入されるサイクルＣＹＣ２の次の次のサイクルＣＹＣ４でＰ１ステージに転送される。このため、サイクルＣＹＣ３において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ２ＢとしてＰ２ステージに投入した場合、要求ＲＥＱｅｘｔ２Ｂは、先行する要求ＲＥＱｅｘｔ３Ａと衝突する。この場合、要求ＲＥＱｅｘｔ１Ｂ、ＲＥＱｅｘｔ２Ｂが投入不可と判定され、要求ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂが投入可能と判定される。
【０１０８】
図９は、図４に示した順序判定部ＯＪＧによる順序判定の別の例を示す。なお、図９は、要求ＲＥＱｅｘｔＡと要求ＲＥＱｅｘｔＡの後に発行される要求ＲＥＱｅｘｔＢとの発行タイミングの差が２サイクルである場合の順序判定の一例を示す。また、図９では、図８と同様に、Ｐ１ステージを網掛けで示している。
【０１０９】
要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ２Ａとして投入される場合、要求ＲＥＱｅｘｔ２Ａは、サイクルＣＹＣ２でＰ２ステージに投入され、サイクルＣＹＣ３でＰ１ステージに転送される。この場合、サイクルＣＹＣ４において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入しても、要求ＲＥＱｅｘｔ１Ｂは、先行する要求ＲＥＱｅｘｔ２Ａを追い超さない。このため、順序判定部ＯＪＧは、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入可能であると判定する。したがって、Ｐ１ステージに転送されるタイミングが要求ＲＥＱｅｘｔ１Ｂより後の要求ＲＥＱｅｘｔ２Ｂ、ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂも投入可能と判定される。
【０１１０】
要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ４Ａとして投入される場合、要求ＲＥＱｅｘｔ４Ａは、サイクルＣＹＣ３でＰ３ステージに投入され、サイクルＣＹＣ５でＰ１ステージに転送される。この場合、サイクルＣＹＣ４において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入すると、要求ＲＥＱｅｘｔ１Ｂは、先行する要求ＲＥＱｅｘｔ４Ａを追い越す。また、サイクルＣＹＣ４において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ２ＢとしてＰ２ステージに投入すると、要求ＲＥＱｅｘｔ２Ｂは、先行する要求ＲＥＱｅｘｔ４Ａと衝突する。このため、順序判定部ＯＪＧは、要求ＲＥＱｅｘｔ１Ｂ、ＲＥＱｅｘｔ２Ｂを投入不可と判定する。
【０１１１】
なお、サイクルＣＹＣ４において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ３ＢとしてＰ３ステージに投入した場合、要求ＲＥＱｅｘｔ３Ｂは、先行する要求ＲＥＱｅｘｔ４Ａを追い超さない。このため、順序判定部ＯＪＧは、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ３ＢとしてＰ３ステージに投入可能であると判定する。したがって、Ｐ１ステージに転送されるタイミングが要求ＲＥＱｅｘｔ３Ｂより後の要求ＲＥＱｅｘｔ４Ｂも投入可能と判定される。
【０１１２】
図示していないが、要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ１Ａとして投入される場合、要求ＲＥＱｅｘｔ１Ａは、要求ＲＥＱｅｘｔ２ＡがＰ１ステージに転送されるサイクルＣＹＣ３の前のサイクルＣＹＣ２でＰ１ステージに投入される。このため、要求ＲＥＱｅｘｔ１Ｂ、ＲＥＱｅｘｔ２Ｂ、ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂは投入可能と判定される。また、要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ３Ａとして投入される場合、要求ＲＥＱｅｘｔ３Ａは、要求ＲＥＱｅｘｔ２ＡがＰ１ステージに転送されるサイクルＣＹＣ３の次のサイクルＣＹＣ４でＰ１ステージに転送される。このため、サイクルＣＹＣ４において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入した場合、要求ＲＥＱｅｘｔ１Ｂは、先行する要求ＲＥＱｅｘｔ３Ａと衝突する。この場合、要求ＲＥＱｅｘｔ１Ｂが投入不可と判定され、要求ＲＥＱｅｘｔ２Ｂ、ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂが投入可能と判定される。
【０１１３】
図１０は、図４に示した順序判定部ＯＪＧによる順序判定の別の例を示す。なお、図１０は、要求ＲＥＱｅｘｔＡと要求ＲＥＱｅｘｔＡの後に発行される要求ＲＥＱｅｘｔＢとの発行タイミングの差が３サイクルである場合の順序判定の一例を示す。また、図１０では、図８と同様に、Ｐ１ステージを網掛けで示している。
【０１１４】
要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ３Ａとして投入される場合、要求ＲＥＱｅｘｔ３Ａは、サイクルＣＹＣ２でＰ３ステージに投入され、サイクルＣＹＣ４でＰ１ステージに転送される。この場合、サイクルＣＹＣ５において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入しても、要求ＲＥＱｅｘｔ１Ｂは、先行する要求ＲＥＱｅｘｔ３Ａを追い超さない。このため、順序判定部ＯＪＧは、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入可能であると判定する。したがって、Ｐ１ステージに転送されるタイミングが要求ＲＥＱｅｘｔ１Ｂより後の要求ＲＥＱｅｘｔ２Ｂ、ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂも投入可能と判定される。
【０１１５】
要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ４Ａとして投入される場合、要求ＲＥＱｅｘｔ４Ａは、サイクルＣＹＣ３でＰ３ステージに投入され、サイクルＣＹＣ５でＰ１ステージに転送される。この場合、サイクルＣＹＣ５において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ１ＢとしてＰ１ステージに投入すると、要求ＲＥＱｅｘｔ１Ｂは、先行する要求ＲＥＱｅｘｔ４Ａと衝突する。このため、順序判定部ＯＪＧは、要求ＲＥＱｅｘｔ１Ｂを投入不可と判定する。
【０１１６】
なお、サイクルＣＹＣ５において、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ２ＢとしてＰ２ステージに投入した場合、要求ＲＥＱｅｘｔ２Ｂは、先行する要求ＲＥＱｅｘｔ４Ａを追い超さない。このため、順序判定部ＯＪＧは、要求ＲＥＱｅｘｔＢを要求ＲＥＱｅｘｔ２ＢとしてＰ２ステージに投入可能であると判定する。したがって、Ｐ１ステージに転送されるタイミングが要求ＲＥＱｅｘｔ２Ｂより後の要求ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂも投入可能と判定される。
【０１１７】
図示していないが、要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ２Ａとして投入される場合、要求ＲＥＱｅｘｔ２Ａは、要求ＲＥＱｅｘｔ３ＡがＰ１ステージに転送されるサイクルＣＹＣ４より前のサイクルＣＹＣ３でＰ１ステージに転送される。同様に、要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ１Ａとして投入される場合、要求ＲＥＱｅｘｔ１Ａは、要求ＲＥＱｅｘｔ３ＡがＰ１ステージに転送されるサイクルＣＹＣ４より前のサイクルＣＹＣ２でＰ１ステージに投入される。このため、要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ１Ａまたは要求ＲＥＱｅｘｔ２Ａとして投入される場合、要求ＲＥＱｅｘｔ１Ｂ、ＲＥＱｅｘｔ２Ｂ、ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂは投入可能と判定される。
【０１１８】
要求ＲＥＱｅｘｔＡと要求ＲＥＱｅｘｔＢとの発行タイミングの差が４サイクル以上である場合、要求ＲＥＱｅｘｔ１Ｂは、サイクルＣＹＣ６以降にＰ１ステージに投入されるため、要求ＲＥＱｅｘｔ１Ｂは、先行する要求ＲＥＱｅｘｔ４Ａを追い超さない。このため、要求ＲＥＱｅｘｔＡ、ＲＥＱｅｘｔＢの発行タイミングの差が４サイクル以上の場合、要求ＲＥＱｅｘｔＡが投入されるステージに拘わらず、要求ＲＥＱｅｘｔ１Ｂ、ＲＥＱｅｘｔ２Ｂ、ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂは投入可能と判定される。
【０１１９】
図１１は、図４に示した順序判定部ＯＪＧによる判定結果の一例を示す。図１１に示す例では、要求ＲＥＱｅｘｔＡは、要求ＲＥＱｅｘｔＢの直前に発行された要求である。
【０１２０】
要求ＲＥＱｅｘｔＡと要求ＲＥＱｅｘｔＢとの発行タイミングの差が１サイクルの場合では、要求ＲＥＱｅｘｔ１Ｂは、直前の要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ１Ａである場合に投入可能である。要求ＲＥＱｅｘｔ２Ｂは、直前の要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ１Ａまたは要求ＲＥＱｅｘｔ２Ａである場合に投入可能である。要求ＲＥＱｅｘｔ３Ｂは、直前の要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ１Ａ、ＲＥＱｅｘｔ２Ａ、ＲＥＱｅｘｔ３Ａのいずれかである場合に投入可能である。要求ＲＥＱｅｘｔ４Ｂは、直前の要求ＲＥＱｅｘｔＡに拘わらず、投入可能である。
【０１２１】
要求ＲＥＱｅｘｔＡと要求ＲＥＱｅｘｔＢとの発行タイミングの差が２サイクルの場合では、要求ＲＥＱｅｘｔ１Ｂは、直前の要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ１Ａまたは要求ＲＥＱｅｘｔ２Ａである場合に投入可能である。要求ＲＥＱｅｘｔ２Ｂは、直前の要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ１Ａ、ＲＥＱｅｘｔ２Ａ、ＲＥＱｅｘｔ３Ａのいずれかである場合に投入可能である。要求ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂは、直前の要求ＲＥＱｅｘｔＡに拘わらず、投入可能である。
【０１２２】
要求ＲＥＱｅｘｔＡと要求ＲＥＱｅｘｔＢとの発行タイミングの差が２サイクルの場合では、要求ＲＥＱｅｘｔ１Ｂは、直前の要求ＲＥＱｅｘｔＡが要求ＲＥＱｅｘｔ１Ａ、ＲＥＱｅｘｔ２Ａ、ＲＥＱｅｘｔ３Ａのいずれかである場合に投入可能である。要求ＲＥＱｅｘｔ２Ｂ、ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂは、直前の要求ＲＥＱｅｘｔＡに拘わらず、投入可能である。
【０１２３】
要求ＲＥＱｅｘｔＡと要求ＲＥＱｅｘｔＢとの発行タイミングの差が４サイクル以上の場合では、要求ＲＥＱｅｘｔ１Ｂ、ＲＥＱｅｘｔ２Ｂ、ＲＥＱｅｘｔ３Ｂ、ＲＥＱｅｘｔ４Ｂは、直前の要求ＲＥＱｅｘｔＡに拘わらず、投入可能である。
【０１２４】
図１２は、図４に示した衝突判定部ＣＪＧによる判定結果の一例を示す。Ｐ４ステージに要求ＲＥＱが存在する場合、要求ＲＥＱｅｘｔ４は、投入不可である。Ｐ３ステージに要求ＲＥＱが存在する場合、要求ＲＥＱｅｘｔ３は、投入不可である。Ｐ２ステージに要求ＲＥＱが存在する場合、要求ＲＥＱｅｘｔ２は、投入不可である。Ｐ１ステージに要求ＲＥＱが存在する場合、要求ＲＥＱｅｘｔ１は、投入不可である。
【０１２５】
換言すれば、Ｐ４ステージに要求ＲＥＱが存在しない場合、要求ＲＥＱｅｘｔ４は、投入可能である。Ｐ３ステージに要求ＲＥＱが存在しない場合、要求ＲＥＱｅｘｔ３は、投入可能である。Ｐ２ステージに要求ＲＥＱが存在しない場合、要求ＲＥＱｅｘｔ２は、投入可能である。Ｐ１ステージに要求ＲＥＱが存在しない場合、要求ＲＥＱｅｘｔ１は、投入可能である。
【０１２６】
図１３は、図４に示した投入決定部ＩＮＤＥＴによる判定結果の一例を示す。図１３の”○”は、順序判定部ＯＪＧおよび衝突判定部ＣＪＧの両方で投入可能と判定された要求ＲＥＱｅｘｔを示す。図１３の”×”は、順序判定部ＯＪＧおよび衝突判定部ＣＪＧの少なくとも一方で投入不可と判定された要求ＲＥＱｅｘｔを示す。図１３の”−”は、順序判定部ＯＪＧおよび衝突判定部ＣＪＧの判定結果が投入可能および投入不可のどちらでもよいことを示す。
【０１２７】
要求ＲＥＱｅｘｔ１が投入可能である場合、要求ＲＥＱｅｘｔ１がＰ１ステージに投入される。要求ＲＥＱｅｘｔ１が投入不可で要求ＲＥＱｅｘｔ２が投入可能である場合、要求ＲＥＱｅｘｔ２がＰ２ステージに投入される。要求ＲＥＱｅｘｔ１、ＲＥＱｅｘｔ２が投入不可で要求ＲＥＱｅｘｔ３が投入可能である場合、要求ＲＥＱｅｘｔ３がＰ３ステージに投入される。要求ＲＥＱｅｘｔ１、ＲＥＱｅｘｔ２、ＲＥＱｅｘｔ３が投入不可で要求ＲＥＱｅｘｔ４が投入可能である場合、要求ＲＥＱｅｘｔ４がＰ４ステージに投入される。要求ＲＥＱｅｘｔ１、ＲＥＱｅｘｔ２、ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ４が投入不可である場合、外部要求ＲＥＱｅｘｔは内部要求ＲＥＱｉｎｔＲＰとしてＰ２ステージに投入される。
【０１２８】
このように、要求ＲＥＱｅｘｔは、投入済みの要求ＲＥＱとの衝突を回避し、かつ、処理ステージＴＭＳＢＲの処理順が要求ＲＥＱｅｘｔの受信順となる選択ステージＰのうち、処理ステージＴＭＳＢＲに最も近い選択ステージＰに投入される。
【０１２９】
図１４は、図２に示した命令キャッシュメモリＩＣＭｂの動作の一例を示す。
【０１３０】
ステップＳ１００では、命令キャッシュメモリＩＣＭｂの順序判定部ＯＪＧは、図１５に示す順序判定処理を実行する。これにより、図１１に示した判定結果が得られる。
【０１３１】
次に、ステップＳ２００では、命令キャッシュメモリＩＣＭｂの衝突判定部ＣＪＧは、図１６に示す衝突判定処理を実行する。これにより、図１２に示した判定結果が得られる。
【０１３２】
次に、ステップＳ３００では、命令キャッシュメモリＩＣＭｂの投入決定部ＩＮＤＥＴは、図１７に示す投入決定処理を実行する。例えば、投入決定部ＩＮＤＥＴは、図１３で説明したように、ステップＳ１００の順序判定処理で得られる判定結果（例えば、図１１）とステップＳ２００の衝突判定処理で得られる判定結果（例えば、図１２）とに基づいて、投入する要求ＲＥＱｅｘｔを決定する。
【０１３３】
なお、命令キャッシュメモリＩＣＭｂの動作は、図１４に示す例に限定されない。例えば、ステップＳ１００は、ステップＳ２００の後に実行されてもよいし、ステップＳ２００と並列に実行されてもよい。
【０１３４】
図１５は、図４に示した順序判定部ＯＪＧの動作の一例を示す。すなわち、図１５は、図１４に示した順序判定処理Ｓ１００の一例を示す。なお、順序判定部ＯＪＧの動作は、図１５に示す例に限定されない。図１５に示す”直前の要求ＲＥＱｅｘｔ”は、判定対象、すなわち、投入対象の要求ＲＥＱｅｘｔの直前に発行された要求である。
【０１３５】
ステップＳ１１０では、順序判定部ＯＪＧは、判定対象の要求ＲＥＱｅｘｔと直前の要求ＲＥＱｅｘｔとの発行タイミングの差が１サイクルであるか否かを判定する。判定対象の要求ＲＥＱｅｘｔと直前の要求ＲＥＱｅｘｔとの発行タイミングの差が１サイクルである場合、順序判定部ＯＪＧの動作は、ステップＳ１１２に移る。一方、判定対象の要求ＲＥＱｅｘｔと直前の要求ＲＥＱｅｘｔとの発行タイミングの差が１サイクルでない場合、順序判定部ＯＪＧの動作は、ステップＳ１２０に移る。
【０１３６】
ステップＳ１１２では、順序判定部ＯＪＧは、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ４として投入されたか否かを判定する。直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ４として投入された場合、順序判定部ＯＪＧの動作は、ステップＳ１４６に移る。一方、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ４として投入されていない場合、順序判定部ＯＪＧの動作は、ステップＳ１１４に移る。
【０１３７】
ステップＳ１１４では、順序判定部ＯＪＧは、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ３として投入されたか否かを判定する。直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ３として投入された場合、順序判定部ＯＪＧの動作は、ステップＳ１４４に移る。一方、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ３として投入されていない場合、順序判定部ＯＪＧの動作は、ステップＳ１１６に移る。
【０１３８】
ステップＳ１１６では、順序判定部ＯＪＧは、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ２として投入されたか否かを判定する。直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ２として投入された場合、順序判定部ＯＪＧの動作は、ステップＳ１４２に移る。一方、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ２として投入されていない場合、順序判定部ＯＪＧの動作は、ステップＳ１４０に移る。
【０１３９】
ステップＳ１２０では、順序判定部ＯＪＧは、判定対象の要求ＲＥＱｅｘｔと直前の要求ＲＥＱｅｘｔとの発行タイミングの差が２サイクルであるか否かを判定する。判定対象の要求ＲＥＱｅｘｔと直前の要求ＲＥＱｅｘｔとの発行タイミングの差が２サイクルである場合、順序判定部ＯＪＧの動作は、ステップＳ１２２に移る。一方、判定対象の要求ＲＥＱｅｘｔと直前の要求ＲＥＱｅｘｔとの発行タイミングの差が２サイクルでない場合、順序判定部ＯＪＧの動作は、ステップＳ１３０に移る。
【０１４０】
ステップＳ１２２では、順序判定部ＯＪＧは、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ４として投入されたか否かを判定する。直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ４として投入された場合、順序判定部ＯＪＧの動作は、ステップＳ１４４に移る。一方、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ４として投入されていない場合、順序判定部ＯＪＧの動作は、ステップＳ１２４に移る。
【０１４１】
ステップＳ１２４では、順序判定部ＯＪＧは、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ３として投入されたか否かを判定する。直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ３として投入された場合、順序判定部ＯＪＧの動作は、ステップＳ１４２に移る。一方、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ３として投入されていない場合、順序判定部ＯＪＧの動作は、ステップＳ１４０に移る。
【０１４２】
ステップＳ１３０では、順序判定部ＯＪＧは、判定対象の要求ＲＥＱｅｘｔと直前の要求ＲＥＱｅｘｔとの発行タイミングの差が３サイクルであるか否かを判定する。判定対象の要求ＲＥＱｅｘｔと直前の要求ＲＥＱｅｘｔとの発行タイミングの差が３サイクルである場合、順序判定部ＯＪＧの動作は、ステップＳ１３２に移る。一方、判定対象の要求ＲＥＱｅｘｔと直前の要求ＲＥＱｅｘｔとの発行タイミングの差が３サイクルでない場合、順序判定部ＯＪＧの動作は、ステップＳ１４０に移る。
【０１４３】
ステップＳ１３２では、順序判定部ＯＪＧは、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ４として投入されたか否かを判定する。直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ４として投入された場合、順序判定部ＯＪＧの動作は、ステップＳ１４２に移る。一方、直前の要求ＲＥＱｅｘｔが要求ＲＥＱｅｘｔ４として投入されていない場合、順序判定部ＯＪＧの動作は、ステップＳ１４０に移る。
【０１４４】
ステップＳ１４０では、順序判定部ＯＪＧは、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ１、ＲＥＱｅｘｔ２、ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ４のいずれとしても投入可能であると判定し、順序判定処理を終了する。例えば、ステップＳ１４０の処理が実行された後、命令キャッシュメモリＩＣＭｂの動作は、図１４に示したステップＳ２００に移る。
【０１４５】
ステップＳ１４２では、順序判定部ＯＪＧは、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ２、ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ４のいずれかとして投入可能であると判定し、順序判定処理を終了する。例えば、ステップＳ１４２の処理が実行された後、命令キャッシュメモリＩＣＭｂの動作は、図１４に示したステップＳ２００に移る。
【０１４６】
ステップＳ１４４では、順序判定部ＯＪＧは、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ３、ＲＥＱｅｘｔ４のいずれかとして投入可能であると判定し、順序判定処理を終了する。例えば、ステップＳ１４４の処理が実行された後、命令キャッシュメモリＩＣＭｂの動作は、図１４に示したステップＳ２００に移る。
【０１４７】
ステップＳ１４６では、順序判定部ＯＪＧは、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ４として投入可能であると判定し、順序判定処理を終了する。例えば、ステップＳ１４６の処理が実行された後、命令キャッシュメモリＩＣＭｂの動作は、図１４に示したステップＳ２００に移る。
【０１４８】
図１６は、図４に示した衝突判定部ＣＪＧの動作の一例を示す。すなわち、図１６は、図１４に示した衝突判定処理Ｓ２００の一例を示す。図１６に示す例では、ステップＳ２１０、Ｓ２１２、Ｓ２１４のフローと、ステップＳ２２０、Ｓ２２２、Ｓ２２４のフローと、ステップＳ２３０、Ｓ２３２、Ｓ２３４のフローと、ステップＳ２４０、Ｓ２４２、Ｓ２４４のフローとが並列に実行される。なお、ステップＳ２１０、Ｓ２１２、Ｓ２１４のフローと、ステップＳ２２０、Ｓ２２２、Ｓ２２４のフローと、ステップＳ２３０、Ｓ２３２、Ｓ２３４のフローと、ステップＳ２４０、Ｓ２４２、Ｓ２４４のフローとは、順次実行されてもよい。
【０１４９】
ステップＳ２１０では、衝突判定部ＣＪＧは、Ｐ１ステージに要求ＲＥＱが存在するか否かを判定する。Ｐ１ステージに要求ＲＥＱが存在する場合、衝突判定部ＣＪＧは、ステップＳ２１４において、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ１として投入不可であると判定する。一方、Ｐ１ステージに要求ＲＥＱが存在しない場合、衝突判定部ＣＪＧは、ステップＳ２１２において、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ１としてＰ１ステージに投入可能であると判定する。
【０１５０】
ステップＳ２２０では、衝突判定部ＣＪＧは、Ｐ２ステージに要求ＲＥＱが存在するか否かを判定する。Ｐ２ステージに要求ＲＥＱが存在する場合、衝突判定部ＣＪＧは、ステップＳ２２４において、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ２として投入不可であると判定する。一方、Ｐ２ステージに要求ＲＥＱが存在しない場合、衝突判定部ＣＪＧは、ステップＳ２２２において、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ２としてＰ２ステージに投入可能であると判定する。
【０１５１】
ステップＳ２３０では、衝突判定部ＣＪＧは、Ｐ３ステージに要求ＲＥＱが存在するか否かを判定する。Ｐ３ステージに要求ＲＥＱが存在する場合、衝突判定部ＣＪＧは、ステップＳ２３４において、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ３として投入不可であると判定する。一方、Ｐ３ステージに要求ＲＥＱが存在しない場合、衝突判定部ＣＪＧは、ステップＳ２３２において、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ３としてＰ３ステージに投入可能であると判定する。
【０１５２】
ステップＳ２４０では、衝突判定部ＣＪＧは、Ｐ４ステージに要求ＲＥＱが存在するか否かを判定する。Ｐ４ステージに要求ＲＥＱが存在する場合、衝突判定部ＣＪＧは、ステップＳ２４４において、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ４として投入不可であると判定する。一方、Ｐ４ステージに要求ＲＥＱが存在しない場合、衝突判定部ＣＪＧは、ステップＳ２４２において、判定対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ４としてＰ４ステージに投入可能であると判定する。
【０１５３】
図１６に示す衝突判定処理が終了した後、命令キャッシュメモリＩＣＭｂの動作は、図１４に示したステップＳ３００に移る。なお、衝突判定部ＣＪＧの動作は、図１６に示す例に限定されない。
【０１５４】
図１７は、図４に示した投入決定部ＩＮＤＥＴの動作の一例を示す。すなわち、図１７は、図１４に示した投入決定処理Ｓ３００の一例を示す。なお、投入決定部ＩＮＤＥＴの動作は、図１７に示す例に限定されない。
【０１５５】
ステップＳ３１０では、投入決定部ＩＮＤＥＴは、投入可能な要求ＲＥＱｅｘｔ１が存在するか否かを判定する。例えば、投入決定部ＩＮＤＥＴは、投入対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ１としてＰ１ステージに投入可能であると順序判定部ＯＪＧおよび衝突判定部ＣＪＧの両方で判定された場合、投入可能な要求ＲＥＱｅｘｔ１が存在すると判定する。投入可能な要求ＲＥＱｅｘｔ１が存在する場合、投入決定部ＩＮＤＥＴの動作は、ステップＳ３１２に移る。一方、投入可能な要求ＲＥＱｅｘｔ１が存在しない場合、投入決定部ＩＮＤＥＴの動作は、ステップＳ３２０に移る。
【０１５６】
ステップＳ３１２では、投入決定部ＩＮＤＥＴは、要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ１としてＰ１ステージに投入し、投入決定処理を終了する。例えば、投入決定部ＩＮＤＥＴは、パイプライン処理部ＰＬＰｂのセレクタＳＰ１を制御して、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ１としてＰ１ステージに投入する。
【０１５７】
ステップＳ３２０では、投入決定部ＩＮＤＥＴは、投入可能な要求ＲＥＱｅｘｔ２が存在するか否かを判定する。例えば、投入決定部ＩＮＤＥＴは、投入対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ２としてＰ２ステージに投入可能であると順序判定部ＯＪＧおよび衝突判定部ＣＪＧの両方で判定された場合、投入可能な要求ＲＥＱｅｘｔ２が存在すると判定する。投入可能な要求ＲＥＱｅｘｔ２が存在する場合、投入決定部ＩＮＤＥＴの動作は、ステップＳ３２２に移る。一方、投入可能な要求ＲＥＱｅｘｔ２が存在しない場合、投入決定部ＩＮＤＥＴの動作は、ステップＳ３３０に移る。
【０１５８】
ステップＳ３２２では、投入決定部ＩＮＤＥＴは、要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ２としてＰ２ステージに投入し、投入決定処理を終了する。例えば、投入決定部ＩＮＤＥＴは、パイプライン処理部ＰＬＰｂのセレクタＳＰ２を制御して、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ２としてＰ２ステージに投入する。
【０１５９】
ステップＳ３３０では、投入決定部ＩＮＤＥＴは、投入可能な要求ＲＥＱｅｘｔ３が存在するか否かを判定する。例えば、投入決定部ＩＮＤＥＴは、投入対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ３としてＰ３ステージに投入可能であると順序判定部ＯＪＧおよび衝突判定部ＣＪＧの両方で判定された場合、投入可能な要求ＲＥＱｅｘｔ３が存在すると判定する。投入可能な要求ＲＥＱｅｘｔ３が存在する場合、投入決定部ＩＮＤＥＴの動作は、ステップＳ３３２に移る。一方、投入可能な要求ＲＥＱｅｘｔ３が存在しない場合、投入決定部ＩＮＤＥＴの動作は、ステップＳ３４０に移る。
【０１６０】
ステップＳ３３２では、投入決定部ＩＮＤＥＴは、要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ３としてＰ３ステージに投入し、投入決定処理を終了する。例えば、投入決定部ＩＮＤＥＴは、パイプライン処理部ＰＬＰｂのセレクタＳＰ３を制御して、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ３としてＰ３ステージに投入する。
【０１６１】
ステップＳ３４０では、投入決定部ＩＮＤＥＴは、投入可能な要求ＲＥＱｅｘｔ４が存在するか否かを判定する。例えば、投入決定部ＩＮＤＥＴは、投入対象の要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ４としてＰ４ステージに投入可能であると順序判定部ＯＪＧおよび衝突判定部ＣＪＧの両方で判定された場合、投入可能な要求ＲＥＱｅｘｔ４が存在すると判定する。投入可能な要求ＲＥＱｅｘｔ４が存在する場合、投入決定部ＩＮＤＥＴの動作は、ステップＳ３４２に移る。一方、投入可能な要求ＲＥＱｅｘｔ４が存在しない場合、投入決定処理は、終了する。
【０１６２】
ステップＳ３４２では、投入決定部ＩＮＤＥＴは、要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ４としてＰ４ステージに投入し、投入決定処理を終了する。例えば、投入決定部ＩＮＤＥＴは、パイプライン処理部ＰＬＰｂのセレクタＳＰ４を制御して、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔを要求ＲＥＱｅｘｔ４としてＰ４ステージに投入する。
【０１６３】
このように、投入決定部ＩＮＤＥＴは、セレクタＳＰ１−ＳＰ４を制御して、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔを投入可能な選択ステージＰのうち、処理ステージＴに最も近い選択ステージＰに要求ＲＥＱｅｘｔを投入する。
【０１６４】
以上、図２から図１７に示す実施形態においても、図１に示した実施形態と同様の効果を得ることができる。例えば、命令キャッシュ制御部ＩＣＭＣｂは、命令制御部ＩＵから受信した要求ＲＥＱｅｘｔと投入済みの要求ＲＥＱとの衝突を回避し、かつ、処理ステージＴＭＳＢＲの処理順が要求ＲＥＱｅｘｔの受信順となる選択ステージＰを特定する。そして、命令キャッシュ制御部ＩＣＭＣｂは、特定した選択ステージＰのうち、処理ステージＴＭＳＢＲに最も近い選択ステージＰに命令制御部ＩＵから受信した要求ＲＥＱｅｘｔを投入する。これにより、選択ステージＰ３、Ｐ２、Ｐ１のうちの所定のステージのみに命令制御部ＩＵから受信した要求ＲＥＱｅｘｔが投入される場合に比べて、命令キャッシュメモリＩＣＭｂのレイテンシの増加を抑制することができる。
【０１６５】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１６６】
ＣＪＧ‥衝突判定部；ＣＭＬ１‥１次キャッシュメモリ；ＣＭＬ２‥２次キャッシュメモリ；ＣＭＰ‥比較器；ＤＣＭ‥データキャッシュメモリ；ＤＬＰ１、ＤＬＰ２‥レジスタ；ＩＣＭａ、ＩＣＭｂ‥命令キャッシュメモリ；ＩＣＭＣａ、ＩＣＭＣｂ‥命令キャッシュ制御部；ＩＥＸＥ‥命令実行部；ＩＭＥＭ‥命令保持部；ＩＮＤＥＴ‥投入決定部；ＩＵ‥命令制御部；ＭＥＭ‥主記憶装置；ＯＪＧ‥順序判定部；ＯＲ１、ＯＲ２、ＯＲ３‥論理和回路；ＰＣＯＲ‥プロセッサコア；ＰＬＰａ、ＰＬＰｂ‥パイプライン処理部；ＰＴＦ、ＰＴＲ、ＰＴＭＩＬ、ＰＴＭＩＡ‥ポート；ＰＵａ、ＰＵｂ‥演算処理装置；ＲＢＡ、ＲＢＬ、ＲＤＡ、ＲＥＡ、ＲＥＸ、ＲＩＤ、ＲＭＨ、ＲＭＬ、ＲＰ１、ＲＰ２、ＲＰＴ、ＲＲＡ、ＲＲＬ、ＲＳＡ、ＲＳＬ、ＲＴＡＧ、ＲＴＬ、ＲＷ１、ＲＷ２、ＲＷ３、ＲＷ４‥レジスタ；ＳＰＴ、ＳＩＤ、ＳＨＷ、ＳＰ１、ＳＰ２、ＳＰ３、ＳＰ４‥セレクタ；ＴＡＧ‥タグ；ＴＬＢ‥アドレス変換部
【図１】
0006711167.tif 000002
【図２】
0006711167.tif 000003
【図３】
0006711167.tif 000004
【図４】
0006711167.tif 000005
【図５】
0006711167.tif 000006
【図６】
0006711167.tif 000007
【図７】
0006711167.tif 000008
【図８】
0006711167.tif 000009
【図９】
0006711167.tif 000010
【図１０】
0006711167.tif 000011
【図１１】
0006711167.tif 000012
【図１２】
0006711167.tif 000013
【図１３】
0006711167.tif 000014
【図１４】
0006711167.tif 000015
【図１５】
0006711167.tif 000016
【図１６】
0006711167.tif 000017
【図１７】
0006711167.tif 000018