以下、実施形態について、図面を用いて説明する。
図1は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。図1に示す演算処理装置PUaは、例えば、命令を実行するCPU等のプロセッサである。演算処理装置PUaは、命令を保持する命令キャッシュメモリICMaと、命令キャッシュメモリICMaから命令を読み出す命令制御部IUと、命令キャッシュメモリICMaから読み出された命令を実行する命令実行部IEXEを有する。
命令キャッシュメモリICMaは、例えば、主記憶装置MEMに比べて高速にアクセス可能なキャッシュメモリであり、主記憶装置MEMに記憶された命令の一部を保持する。
例えば、命令キャッシュメモリICMaは、命令を読み出す要求REQを命令制御部IUから受信した場合、要求REQで示されるアドレスに対応して保持している命令を命令制御部IUに転送する。なお、命令キャッシュメモリICMaは、要求REQで示されるアドレスに対応する命令を保持していない場合(キャッシュミスした場合)、主記憶装置MEMに命令の読み出しを要求する。
例えば、命令キャッシュメモリICMaは、パイプライン処理部PLPaおよび命令キャッシュ制御部ICMCaを有する。図1の括弧内には、パイプライン処理部PLPaが実行するパイプライン処理の一例、すなわち、演算処理装置PUaの制御方法の一例を示す。図1の要求REQint(REQintA、REQintB)は、パイプライン処理部PLPaの内部で生成した要求REQを示す。以下、パイプライン処理部PLPaの内部で生成した要求REQ(REQint)は、内部要求REQ(REQint)とも称される。また、図1の要求REQext(REQextA、REQextB、REQextC、REQextD)は、命令制御部IUから受信する要求REQを示す。以下、命令制御部IUから受信する要求REQ(REQext)は、外部要求REQ(REQext)とも称される。例えば、内部要求REQintは、外部要求REQextよりも優先して処理される。
パイプライン処理部PLPaは、命令制御部IUから受信した要求REQextおよびパイプライン処理部PLPaの内部で生成した要求REQintを含む複数の要求REQに基づくそれぞれの処理を、複数のステージで順次実行する。例えば、パイプライン処理部PLPaは、複数の選択ステージP(P3、P2、P1)の各々において、命令キャッシュメモリICMaを動作させる複数の要求REQのうち、優先順位が他より高い要求REQを次のステージに出力する。すなわち、パイプライン処理部PLPaは、複数の要求REQのうちの優先順位の高い要求REQを選択する処理を複数の選択ステージP3、P2、P1に分けて実行する。
また、パイプライン処理部PLPaは、複数の処理ステージT、M、S、B、Rにおいて、複数の選択ステージP3、P2、P1のうちの最終ステージ(選択ステージP1)から出力された要求REQに基づく処理を順次実行する。このように、パイプライン処理部PLPaは、複数の選択ステージP3、P2、P1と複数の処理ステージT、M、S、B、Rとを有する。以下、選択ステージP3、P2、P1、処理ステージT、M、S、B、Rは、P3ステージ、P2ステージ、P1ステージ、Tステージ、Mステージ、Sステージ、Bステージ、Rステージとも称される。また、処理ステージT、M、S、B、Rは、1つにまとめて、処理ステージTMSBRとも称される。
例えば、P3ステージは、P3ステージに投入された要求REQのうち、P2ステージに転送する要求REQを、予め決められた優先順位に基づいて選択するプライオリティステージである。P2ステージは、P2ステージに投入された要求REQのうち、P1ステージに転送する要求REQを、予め決められた優先順位に基づいて選択するプライオリティステージである。P1ステージは、P1ステージに投入された要求REQのうち、Tステージに転送する要求REQを、予め決められた優先順位に基づいて選択するプライオリティステージである。
Tステージは、命令キャッシュメモリICMaが有する図示しないタグおよびTLB(Translation Lookaside Buffer)等にアクセスするステージである。Mステージは、要求されたアドレスとタグに登録されたアドレスとを比較するステージである。Sステージは、キャッシュヒットしたデータ(命令)を選択するステージである。Bステージは、Sステージで選択したデータをバッファに格納するステージである。Rステージは、バッファに格納したデータ等の処理結果を命令制御部IU等に通知するステージである。
このように、図1に示す例では、パイプライン処理部PLPaは、8段のステージを含むパイプライン処理を実行する。なお、パイプライン処理の段数(ステージの数)は、図1に示す例に限定されない。
命令キャッシュ制御部ICMCaは、命令制御部IUから受信した要求REQextを、処理ステージTMSBRの処理順が要求REQの受信順となる選択ステージPに投入する。
図1の括弧内に示す例では、要求REQextA、REQextB、REQextC、REQextDが命令制御部IUから命令キャッシュメモリICMaに順番に発行される。図1の太枠で示した選択ステージPは、各要求REQが投入されるステージを示す。
例えば、要求REQextAは、サイクルCYC1で命令制御部IUから発行され、サイクルCYC2で命令キャッシュメモリICMaに投入される。サイクルCYC2では、要求REQextAより優先順位の高い要求REQintA、REQintBがP1ステージおよびP2ステージにそれぞれ転送される。このため、要求REQextAは、サイクルCYC2において、P3ステージに投入される。そして、サイクルCYC9のRステージにおいて、要求REQextAの結果が命令制御部IUに通知される。この場合、命令制御部IUが要求REQextAを発行してから命令キャッシュメモリICMaが要求REQextAの結果を命令制御部IUに返すまでのレイテンシ(以下、要求REQextAのレイテンシとも称する)は、9サイクルである。
ここで、例えば、命令制御部IUから受信した要求REQをTステージの前段のP1ステージのみに投入する命令キャッシュメモリでは、要求REQextAは、要求REQintAとP1ステージで衝突するため、P1ステージに投入されない。この場合、要求REQextAは、再投入用のポート(図示せず)に登録され、選択ステージP3、P2、P1のうちの所定のステージ(例えば、P2ステージ)に内部要求REQとして再投入される。要求REQextAが再投入される場合のレイテンシは、再投入用のポート等を経由するため、サイクルCYC2でP3ステージに要求REQextAが投入される場合のレイテンシに比べて増加する。
要求REQextBは、要求REQextAが発行されてから1サイクル後のサイクルCYC2で命令制御部IUから発行され、サイクルCYC3で命令キャッシュメモリICMaに投入される。この場合、要求REQextBがサイクルCYC3でP1ステージに投入されると、要求REQextBの処理は、先行する要求REQextAの処理を追い越す。また、要求REQextBがサイクルCYC3でP2ステージに投入されると、要求REQextBと要求REQextAとがP2ステージで衝突する。このため、サイクルCYC3では、命令キャッシュ制御部ICMCaは、P3ステージに要求REQextBを投入する。
要求REQextCは、要求REQextBが発行されてから2サイクル後のサイクルCYC4で命令制御部IUから発行され、サイクルCYC5で命令キャッシュメモリICMaに投入される。この場合、要求REQextCがサイクルCYC5でP1ステージに投入されると、要求REQextCと要求REQextBとがP1ステージで衝突する。要求REQextCがサイクルCYC5でP2ステージまたはP3ステージに投入される場合は、要求REQextCと要求REQextBとの衝突、要求REQextCの処理が要求REQextAの処理を追い越す現象等は、発生しない。
このため、サイクルCYC5では、命令キャッシュ制御部ICMCaは、P2ステージおよびP3ステージのうち、Tステージに近いP2ステージに要求REQextCを投入する。この場合、命令制御部IUが要求REQextCを発行してから命令キャッシュメモリICMaが要求REQextCの結果を命令制御部IUに返すまでのレイテンシ(以下、要求REQextCのレイテンシとも称する)は、8サイクルである。
これに対し、サイクルCYC5でP3ステージに要求REQextCを投入した場合、要求REQextCのレイテンシは、サイクルCYC5でP2ステージに要求REQextCを投入した場合に比べて、P3ステージの1サイクル分増加する。換言すれば、図1に示す制御方法は、サイクルCYC5でP3ステージに要求REQextCを投入する場合に比べて、要求REQextCのレイテンシを1サイクル短くできる。
要求REQextDは、要求REQextCが発行されてから2サイクル後のサイクルCYC6で命令制御部IUから発行され、サイクルCYC7で命令キャッシュメモリICMaに投入される。この場合、要求REQextDがサイクルCYC7で選択ステージP1、P2、P3のいずれに投入されても、要求REQextDと要求REQextCとの衝突、要求REQextDの処理が要求REQextCの処理を追い越す現象等は、発生しない。このため、サイクルCYC7では、命令キャッシュ制御部ICMCaは、P1ステージ、P2ステージおよびP3ステージのうち、Tステージに最も近いP1ステージ(Tステージの前段のステージ)に要求REQextCを投入する。
この場合、命令制御部IUが要求REQextDを発行してから命令キャッシュメモリICMaが要求REQextDの結果を命令制御部IUに返すまでのレイテンシ(以下、要求REQextDのレイテンシとも称する)は、7サイクルである。これに対し、サイクルCYC7でP3ステージに要求REQextDを投入した場合、要求REQextDのレイテンシは、サイクルCYC7でP1ステージに要求REQextDを投入した場合に比べて、P3ステージとP2ステージの2サイクル分増加する。換言すれば、図1に示す制御方法は、サイクルCYC7でP3ステージに要求REQextDを投入する場合に比べて、要求REQextDのレイテンシを2サイクル短くできる。
ここで、例えば、選択ステージP3、P2、P1を1つのステージで実行し、処理ステージS、Bを1つのステージで実行する5段のパイプライン処理では、8段のパイプライン処理に比べて、1ステージの処理量が増加し、1ステージのサイクルが長くなる。したがって、5段のパイプライン処理で動作する命令キャッシュメモリでは、8段のパイプライン処理で動作する命令キャッシュメモリに比べて、各要求REQを処理する速度が遅くなる。換言すれば、8段のパイプライン処理で動作する命令キャッシュメモリは、5段のパイプライン処理で動作する命令キャッシュメモリに比べて、各要求REQを高速に処理できる。
さらに、図1に示す命令キャッシュメモリICMaは、命令制御部IUから受信した要求REQをパイプライン処理の先頭のP3ステージのみに投入する命令キャッシュメモリに比べて、パイプライン処理のレイテンシの増加を抑制できる。すなわち、命令キャッシュメモリICMaのレイテンシの増加を抑制しつつ、命令キャッシュメモリICMaを高速化することができる。なお、演算処理装置PUaの構成は、図1に示す例に限定されない。
以上、図1に示す実施形態では、パイプライン処理部PLPaは、複数の選択ステージP3、P2、P1において、命令キャッシュメモリICMaを動作させる複数の要求REQのうち、優先順位が他より高い要求REQを次のステージに出力する。そして、パイプライン処理部PLPaは、複数の処理ステージT、M、S、B、Rにおいて、複数の選択ステージP3、P2、P1のうちの最終ステージ(選択ステージP1)から出力された要求REQに基づく処理を順次実行する。また、命令キャッシュ制御部ICMCaは、命令制御部IUから受信した要求REQを、処理ステージTMSBRの処理順が要求REQの受信順となる選択ステージPに投入する。
すなわち、命令キャッシュ制御部ICMCaは、命令制御部IUから受信した要求REQextを、要求REQの処理順が受信順と異なる順序にならないように、複数の選択ステージP3、P2、P1のいずれかに投入する。これにより、選択ステージP3、P2、P1のうちの所定のステージのみに命令制御部IUから受信した要求REQextが投入される場合に比べて、命令キャッシュメモリICMaのレイテンシの増加を抑制することができる。
図2は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図1で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。なお、図2では、図を見やすくするために、データキャッシュメモリDCMとプロセッサコアPCORとの間の信号線、データキャッシュメモリDCMと2次キャッシュメモリCMLLとの間の信号線等の記載を省略している。図2に示す演算処理装置PUbは、例えば、命令を実行するCPU等のプロセッサである。
演算処理装置PUbは、プロセッサコアPCOR、1次キャッシュメモリCML1、2次キャッシュメモリCML2および主記憶装置MEMを有する。プロセッサコアPCORは、命令制御部IUおよび命令実行部IEXEを有する。命令制御部IUおよび命令実行部IEXEは、図1に示した命令制御部IUおよび命令実行部IEXEと同一または同様である。
1次キャッシュメモリCML1は、2次キャッシュメモリCML2に保持されたデータの一部および命令の一部を保持する。例えば、1次キャッシュメモリCML1は、命令実行部IXEXが実行する命令を保持する命令キャッシュメモリICMbと、命令実行部IXEXが使用するデータを保持するデータキャッシュメモリDCMとを有する。命令キャッシュメモリICMbおよびデータキャッシュメモリDCMは、例えば、セットアソシアティブ方式のキャッシュメモリであり、2次キャッシュメモリCML2に比べて高速にアクセス可能である。
データキャッシュメモリDCMは、データを読み出す要求を命令制御部IUから受信した場合、要求で示されるアドレスに対応して保持しているデータを命令制御部IUに転送する。なお、データキャッシュメモリDCMは、要求で示されるアドレスに対応するデータを保持していない場合(キャッシュミスした場合)、2次キャッシュメモリCML2にデータの読み出しを要求する。
命令キャッシュメモリICMbは、図1に示したパイプライン処理部PLPaおよび命令キャッシュ制御部ICMCaの代わりに、パイプライン処理部PLPbおよび命令キャッシュ制御部ICMCbを有する。命令キャッシュメモリICMbのその他の構成は、図1に示した命令キャッシュメモリICMaと同一または同様である。
例えば、命令キャッシュメモリICMbは、命令を読み出す要求REQを命令制御部IUから受信した場合、要求REQで示されるアドレスに対応して保持している命令を命令制御部IUに転送する。また、命令キャッシュメモリICMbは、要求REQで示されるアドレスに対応する命令を保持していない場合(キャッシュミスした場合)、2次キャッシュメモリCML2に命令の読み出しを要求する。パイプライン処理部PLPbおよび命令キャッシュ制御部ICMCbの詳細は、図3および図4でそれぞれ説明する。
2次キャッシュメモリCML2は、例えば、セットアソシアティブ方式のキャッシュメモリであり、主記憶装置MEMに比べて高速にアクセス可能である。2次キャッシュメモリCML2は、1次キャッシュメモリCML1および主記憶装置MEMに接続される。例えば、2次キャッシュメモリCML2は、主記憶装置MEMに記憶されたデータの一部および命令の一部を保持する。そして、2次キャッシュメモリCML2は、データを読み出す要求をデータキャッシュメモリDCMから受信した場合、要求で示されるアドレスに対応して保持しているデータをデータキャッシュメモリDCMに転送する。なお、2次キャッシュメモリCML2は、要求で示されるアドレスに対応するデータを保持していない場合(キャッシュミスした場合)、主記憶装置MEMにデータの読み出しを要求する。
また、2次キャッシュメモリCML2は、例えば、命令を読み出す要求を命令キャッシュメモリICMbから受信した場合、要求で示されるアドレスに対応して保持している命令を命令キャッシュメモリICMbに転送する。なお、2次キャッシュメモリCML2は、要求で示されるアドレスに対応する命令を保持していない場合(キャッシュミスした場合)、主記憶装置MEMに命令の読み出しを要求する。なお、演算処理装置PUbの構成は、図2に示す例に限定されない。
図3は、図2に示したパイプライン処理部PLPbの一例を示す。なお、パイプライン処理部PLPbの構成は、図3に示す例に限定されない。パイプライン処理部PLPbは、図1で説明した8つのパイプラインステージP3、P2、P1、T、M、S、B、Rを有する。なお、図3に示す括弧内の符号A、IPは、命令制御部IUのパイプラインステージを示す。ステージA(以下、Aステージとも称する)は、命令制御部IUが要求REQextを発行するステージである。ステージIP(以下、IPステージとも称する)は、Aステージで発行された要求REQextがパイプライン処理部PLPbに投入されるステージである。例えば、パイプライン処理部PLPbは、IPステージとP1ステージとが同じステージになるように設計される。
パイプライン処理部PLPbは、パイプラインレジスタ等のレジスタRP2、RP1、RTL、RML、RSL、RBL、RRL、REA、REX、RPT、RTAG、RSA、RBA、RRA、RMH、RID、RW1、RW2、RW3、RW4、RDAを有する。例えば、レジスタRP2等は、受信した情報を次のサイクルで出力する。さらに、パイプライン処理部PLPbは、ポートPTF、PTR、PTMIL、PTMIA、セレクタSP4、SP3、SP2、SP1、SPT、SID、SHW、タグTAG、アドレス変換部TLB、比較器CMPおよび命令保持部IMEMを有する。
命令制御部IUに転送する命令の格納先を示す論理アドレス、パリティビット等を含む要求REQextは、命令制御部IUからレジスタREA等を介してレジスタRTLに転送され、図3の破線で囲んだパイプラインを流れて処理される。要求REQextがP3ステージ、P2ステージおよびP1ステージのいずれかのステージから順にRステージまで流れた場合、命令制御部IUへのデータ転送(命令の転送)が完了する。
例えば、レジスタREAは、要求REQextを命令制御部IUから受信し、受信した次のサイクルで要求REQextをレジスタREX、セレクタSP1、SP2、SP3、SPT、SIDに出力する。以下、レジスタREAからセレクタSP1、SPT、SIDに出力された要求REQextは、要求REQext1とも称される。また、レジスタREAからセレクタSP2に出力された要求REQextは要求REQext2とも称され、レジスタREAからセレクタSP3に出力された要求REQextは要求REQext3とも称される。
レジスタREXは、レジスタREAから受信した要求REQextをポートPTF、PTRに出力する。これにより、要求REQextは、MステージでポートPTF、PTRのいずれかにセットされる。例えば、要求REQextのうち、命令を2次キャッシュメモリCML2から取得するプリフェッチの要求REQextは、ポートPTFにセットされ、その他の要求REQextは、ポートPTRにセットされる。さらに、レジスタREXは、レジスタREAから受信した要求REQextを、要求REQext4としてセレクタSP4に出力する。
ポートPTFは、例えば、プリフェッチの要求REQextがセットされた場合、プリフェッチを実行する内部要求REQintPFをセレクタSP4に出力する。ポートPTRは、例えば、要求REQextがレジスタREAからパイプラインに投入されない場合、あるいは、パイプラインに投入された要求REQextがストールした場合、要求REQextを内部要求REQintRPとしてセレクタSP2に出力する。これにより、外部要求REQextが内部要求REQintRPとしてパイプラインに再投入される。
セレクタSP4は、要求REQext4、REQintPF、REQintMIをレジスタREX、ポートPTF、PTMILからそれぞれ受信する。そして、セレクタSP4は、受信した要求REQのうち、優先順位の高い要求REQをセレクタSP3に出力する。要求REQintMIは、例えば、命令保持部IMEMがキャッシュミスした場合、キャッシュミスしたデータ(命令)を2次キャッシュメモリCML2から命令保持部IMEMにコピーするフィルを実行する内部要求である。例えば、ポートPTMILは、レジスタRBLから受信する情報に基づいて、内部要求REQintMIをセレクタSP4に出力する。
図3に示す例では、要求REQext4の優先順位は、要求REQintPF、REQintMIの優先順位より低い。したがって、セレクタSP4は、要求REQext4のみを受信した場合、要求REQext4をセレクタSP3に出力する。これにより、要求REQextは、要求REQext4としてP3ステージに投入される。また、例えば、セレクタSP4は、要求REQext4、REQintPF、REQintMIを受信した場合、優先順位が最も高い要求REQintMIをセレクタSP3に出力する。
ここで、要求REQext4は、レジスタREAからレジスタREXを介してセレクタSP4に転送されるため、命令制御部IUのパイプライン処理におけるIPステージの次のサイクルでP3ステージに投入される。したがって、IPステージでは、要求REQext4は、P3ステージの前段のステージに投入されることになる。以下、要求REQext4と他のREQext(REQext3、REQext2、REQext1)との投入タイミングを揃えて表現する場合等、P4ステージまたは選択ステージP4を用いて、P3ステージの前段のステージを表現する場合もある。
セレクタSP3は、レジスタREAから受信した要求REQext3とセレクタSP4から受信した要求REQとのうち、優先順位の高い要求REQをレジスタRP2に出力する。要求REQext3の優先順位は、セレクタSP4から受信した要求REQの優先順位より低い。したがって、セレクタSP3は、要求REQext3のみを受信した場合、要求REQext3をレジスタRP2に出力する。すなわち、セレクタSP3が要求REQext3のみを受信した場合、要求REQextは、要求REQext3としてP3ステージに投入され、P2ステージに転送される。なお、P3ステージで要求REQext4と要求REQext3とが衝突する場合、P3ステージに投入される要求REQext4は、図8に示すように、衝突する要求REQext3より先に発行された要求REQextである。
レジスタRP2は、セレクタSP3から受信した要求REQをセレクタSP2に出力する。セレクタSP2は、レジスタREAから受信した要求REQext2とレジスタRP2から受信した要求REQとポートPTRから受信した要求REQintRPとのうち、優先順位の高い要求REQをレジスタRP1、RPTおよびセレクタSIDに出力する。要求REQext2の優先順位は、要求REQintRPおよびレジスタRP2から受信した要求REQの優先順位より低い。したがって、セレクタSP2は、要求REQext2のみを受信した場合、要求REQext2をレジスタRP1に出力する。すなわち、セレクタSP2が要求REQext2のみを受信した場合、要求REQextは、要求REQext2としてP2ステージに投入され、P1ステージに転送される。
レジスタRP1は、セレクタSP2から受信した要求REQをセレクタSP1に出力する。セレクタSP1は、レジスタREAから受信した要求REQext1とレジスタRP1から受信した要求REQとのうち、優先順位の高い要求REQをレジスタRTLに出力する。要求REQext1の優先順位は、レジスタRP1から受信した要求REQの優先順位より低い。したがって、セレクタSP1は、要求REQext1のみを受信した場合、要求REQext1をレジスタRTLに出力する。すなわち、セレクタSP1が要求REQext1のみを受信した場合、要求REQextは、要求REQext1としてP1ステージに投入され、Tステージに転送される。
このように、要求REQextは、命令制御部IUのパイプライン処理におけるIPステージにおいて、パイプライン処理部PLPbのP3ステージ、P2ステージ、P1ステージのいずれかに投入される。あるいは、要求REQextは、命令制御部IUのパイプライン処理におけるIPステージの次のサイクルにおいて、パイプライン処理部PLPbのP3ステージに投入される。なお、要求REQextは、外部要求REQext(REQext1、REQext2、REQext3、REQext4)としてパイプラインに投入されなかった場合、内部要求REQintRPとしてP2ステージに投入される。
レジスタRTLに転送された要求REQは、レジスタRML、RSL、RBL、RRLに順次転送される。すなわち、レジスタRTLに転送された要求REQは、Tステージから順にRステージまで流れる。
レジスタRPTは、セレクタSP2から受信した要求REQをセレクタSPTに出力する。セレクタSPTは、レジスタREAから受信した要求REQext1とレジスタRPTから受信した要求REQとのいずれかを選択し、選択した要求REQをタグTAGおよびアドレス変換部TLBに出力する。
タグTAGは、命令保持部IMEMの各ウェイに保持された命令のタグアドレス等を含む情報を、インデックスアドレス毎に保持する。インデックスアドレスは、命令の格納先を示す論理アドレスの一部分のビット群で表されるアドレスであり、タグアドレスは、論理アドレスの他の一部分のビット群で表されるアドレスに対応する物理アドレスである。タグTAGは、例えば、セレクタSPTから受ける要求REQで示されるインデックスアドレスに対応するタグアドレスを、命令保持部IMEMのウェイ毎に、レジスタRTAGを介して比較器CMPに出力する。
アドレス変換部TLBは、セレクタSPTから受ける要求REQで示される論理アドレスを物理アドレスに変換し、変換した物理アドレスをレジスタRSAに出力する。また、アドレス変換部TLBは、物理アドレスのうちのタグアドレスを比較器CMPに出力する。
比較器CMPは、タグTAGから受信した命令保持部IMEMの各ウェイのタグアドレスと、アドレス変換部TLBから受信したタグアドレスとを比較する。そして、比較器CMPは、タグTAGから命令保持部IMEMのウェイ毎に受信したタグアドレスのいずれかとアドレス変換部TLBから受信したタグアドレスとが一致した場合、タグアドレスが一致したウェイを示す情報をレジスタRMHに出力する。すなわち、比較器CMPは、キャッシュヒットしたウェイを示す情報をレジスタRMHに出力する。なお、比較器CMPは、タグTAGから命令保持部IMEMのウェイ毎に受信したタグアドレスのいずれもアドレス変換部TLBから受信したタグアドレスと一致しない場合、キャッシュミスしたことを示す情報をレジスタRMHに出力する。
レジスタRMHは、比較器CMPから受信した情報をセレクタSHWに出力する。レジスタRSAは、アドレス変換部TLBから受信した物理アドレス等の情報を、レジスタRBAを介して、レジスタRRAおよびポートPTMIAに出力する。ポートPTMIAは、内部要求REQintMIとセットで用いられる情報を出力する。
セレクタSIDは、レジスタREAから受信した要求REQext1とセレクタSP2から受信した要求REQとのいずれかを選択し、選択した要求REQで示されるインデックスアドレス等の情報をレジスタRIDを介して命令保持部IMEMに出力する。
命令保持部IMEMは、例えば、4つのウェイを有する。なお、ウェイの数は、4つに限定されない。命令保持部IMEMは、各ウェイに保持した命令のうち、セレクタSIDから受信したインデックスアドレスに対応する命令をウェイ毎にレジスタRW(RW1、RW2、RW3、RW4)を介してセレクタSHWに出力する。
セレクタSHWは、レジスタRW1、RW2、RW3、RW4から受信した命令(4つのウェイから出力された命令)のうち、レジスタRMHから受信した情報が示すウェイに対応する命令を、レジスタRDAを介して命令制御部IUに出力する。これにより、命令制御部IUへのデータ転送(命令の転送)が完了する。なお、レジスタRMHから受信した情報がキャッシュミスを示す場合、セレクタSHWは、レジスタRW1、RW2、RW3、RW4から受信した命令のいずれも、命令制御部IUに出力しない。
図4は、図2に示した命令キャッシュ制御部ICMCbの一例を示す。命令キャッシュ制御部ICMCbは、順序判定部OJG(以下、判定部OJGとも称する)、衝突判定部CJG(以下、判定部CJGとも称する)および投入決定部INDETを有する。
順序判定部OJGは、例えば、要求REQextを要求REQext1、REQext2、REQext3、REQext4として投入した場合に、要求REQextが投入済みの要求REQの処理を追い越すか否かを判定する。すなわち、順序判定部OJGは、命令制御部IUから受信した要求REQextの投入先の候補である選択ステージP4、P3、P2、P1のうち、処理ステージTMSBRの処理順が要求REQの受信順となる選択ステージPを特定する。
衝突判定部CJGは、例えば、要求REQextを要求REQext1、REQext2、REQext3、REQext4として投入した場合に、要求REQextが投入済みの要求REQと衝突するか否かを判定する。すなわち、衝突判定部CJGは、命令制御部IUから受信した要求REQextの投入先の候補である選択ステージP4、P3、P2、P1のうち、要求REQextと投入済みの要求REQとの衝突を回避する選択ステージPを特定する。
例えば、衝突判定部CJGは、論理和回路OR1、OR2、OR3、レジスタDLP1、DLP2を有する。
論理和回路OR3は、信号HLDext4と信号HLDintPFと信号HLDintMIと信号HLDintRPとの論理和を演算し、演算結果を信号BUSYP3として論理和回路OR2および投入決定部INDETに出力する。
例えば、信号HLDext4は、要求REQext4(投入済みの外部要求REQext)がP3ステージに転送されたことを示す情報であり、要求REQext4がP3ステージに存在する場合に論理値”1”に設定される。信号HLDintPFは、要求REQintPFがP3ステージに投入されたことを示す情報であり、要求REQintPFがP3ステージに存在する場合に論理値”1”に設定される。信号HLDintMIは、要求REQintMIがP3ステージに投入されたことを示す情報であり、要求REQintMIがP3ステージに存在する場合に論理値”1”に設定される。また、信号HLDintRPは、要求REQintRPをP2ステージに投入するためにP2ステージを空けておくための信号である。
したがって、論理値”1”の信号BUSYP3は、要求REQext4、REQintPF、REQintMIのいずれかがP3ステージに存在することを示す。また、論理値”0”の信号BUSYP3は、要求REQext4、REQintPF、REQintMIのいずれもP3ステージに存在しないことを示す。すなわち、信号BUSYP3は、P3ステージに要求REQが存在することを示す第3の衝突情報の一例である。
論理和回路OR2は、信号HLDext3と信号BUSYP3との論理和を演算し、演算結果をレジスタDLP2に出力する。例えば、信号HLDext3は、要求REQext3がP3ステージに投入されたことを示す情報であり、要求REQext3がP3ステージに存在する場合に論理値”1”に設定される。すなわち、論理和回路OR2の出力信号が論理値”1”の場合、要求REQがP3ステージに存在することを示す。また、論理和回路OR2の出力信号が論理値”0”の場合、要求REQがP3ステージに存在しないことを示す。
レジスタDLP2は、論理和回路OR2から受信した情報を、受信した次のサイクルで論理和回路OR1に出力する。すなわち、レジスタDLP2は、論理和回路OR2から受信した情報を1ステージ分遅延させて出力する第2の遅延部の一例である。レジスタDLP2の出力信号BUSYP2が論理値”1”の場合、要求REQext4、REQext3、REQintPF、REQintMI、REQintRPのいずれかがP2ステージに存在することを示す。また、レジスタDLP2の出力信号BUSYP2が論理値”0”の場合、要求REQext4、REQext3、REQintPF、REQintMI、REQintRPのいずれもP2ステージに存在しないことを示す。
すなわち、信号BUSYP2は、P2ステージに要求REQが存在することを示す第2の衝突情報の一例である。
論理和回路OR1は、信号HLDext2と信号BUSYP2との論理和を演算し、演算結果をレジスタDLP1に出力する。例えば、信号HLDext2は、要求REQext2がP2ステージに投入されたことを示す情報であり、要求REQext2がP2ステージに存在する場合に論理値”1”に設定される。すなわち、論理和回路OR1の出力信号が論理値”1”の場合、要求REQext4、REQext3、REQext2、REQintPF、REQintMI、REQintRPのいずれかがP2ステージに存在することを示す。また、論理和回路OR1の出力信号が論理値”0”の場合、要求REQext4、REQext3、REQext2、REQintPF、REQintMI、REQintRPのいずれもP2ステージに存在しないことを示す。
レジスタDLP1は、論理和回路OR1から受信した情報を、受信した次のサイクルで信号BUSYP1として投入決定部INDETに出力する。信号BUSYP1は、P1ステージに要求REQが存在することを示す第1の衝突情報の一例である。すなわち、レジスタDLP1は、論理和回路OR1から受信した情報を、P1ステージに要求が存在することを示す第1の衝突情報として、1ステージ分遅延させて投入決定部INDETに出力する第1の遅延部の一例である。
論理値”1”の信号BUSYP1は、要求REQext4、REQext3、REQext2、REQintPF、REQintMI、REQintRPのいずれかがP1ステージに存在することを示す。また、論理値”0”の信号BUSYP1は、要求REQext4、REQext3、REQext2、REQintPF、REQintMI、REQintRPのいずれもP1ステージに存在しないことを示す。
投入決定部INDETは、命令制御部IUから命令キャッシュメモリICMbが受信した要求REQextの投入先となる選択ステージPを、順序判定部OJGの判定結果および衝突判定部CJGの判定結果に基づいて決定する。例えば、投入決定部INDETは、判定対象の要求REQextと投入済みの要求REQとの衝突を回避し、かつ、処理ステージTMSBRの処理順が要求REQの受信順となる選択ステージPを、判定部OJG、CJGの各々の判定結果に基づいて特定する。そして、投入決定部INDETは、特定した選択ステージPのうち、処理ステージTMSBRに最も近い選択ステージPを、命令制御部IUから受信した要求REQextの投入先のステージに決定する。例えば、投入決定部INDETは、図3に示したセレクタSP1−SP4を制御して、順序判定部OJGと衝突判定部CJGの両方に特定された選択ステージPのうち、処理ステージTMSBRに最も近い選択ステージPに外部要求REQextを投入する。
図5は、図3に示したパイプライン処理部PLPbの動作の一例を示す。なお、図5は、内部要求REQintがない場合と1つ存在する場合におけるパイプライン処理部PLPbの動作の一例を示す。
図5に示す例では、要求REQextBは、要求REQextAが発行されたサイクルCYC1の次のサイクルCYC2で発行される。信号REQVALIDは、要求REQextを発行したことを示す信号であり、命令制御部IUから命令キャッシュメモリICMbに出力される。例えば、要求REQextA、REQextBが発行されたサイクルCYC1、CYC2に、論理値”1”の信号REQVALIDが命令制御部IUから命令キャッシュメモリICMbに出力される。信号RSTVは、要求REQextの処理が完了したことを示す信号であり、命令キャッシュメモリICMbから命令制御部IUに出力される。例えば、Rステージに、論理値”1”の信号RSTVが命令キャッシュメモリICMbから命令制御部IUに出力される。
内部要求REQintがない場合、サイクルCYC2において、要求REQextAが要求REQext1AとしてP1ステージに投入される。そして、要求REQext1Aは、P1ステージからTステージ、Mステージ、Sステージ、Bステージ、Rステージの順番で流れて処理される。また、要求REQextBは、サイクルCYC3において、要求REQext1BとしてP1ステージに投入される。要求REQext1Bは、P1ステージからRステージまで流れる。この場合、命令制御部IUが要求REQextAを発行してから要求REQextAの処理が完了するまでのレイテンシは、7サイクルである。同様に、要求REQextBのレイテンシは、7サイクルである。
内部要求REQintが1つ存在する場合、図5に示す例では、要求REQextAは、内部要求REQintがない場合に比べて、1サイクル遅いサイクルCYC3でP1ステージに投入される。例えば、サイクルCYC0では、内部要求REQintMIがP3ステージに投入される。このため、サイクルCYC2において、要求REQextAを要求REQext1AとしてP1ステージに投入すると、要求REQext1Aは、要求REQintMIと衝突する。要求REQext1Aの優先順位は、要求REQintMIの優先順位より低いため、要求REQext1Aは、P1ステージに投入されない。このため、サイクルCYC2では、要求REQextAは、要求REQext2AとしてP2ステージに投入される。そして、要求REQext2Aは、P2ステージからRステージまで流れる。
この場合、サイクルCYC3において、要求REQextBを要求REQext1BとしてP1ステージに投入すると、要求REQext1Bは、要求REQext2Aと衝突する。要求REQext1Bの優先順位は、P2ステージからP1ステージに転送された要求REQext2Aの優先順位より低いため、要求REQext1Bは、P1ステージに投入されない。このため、サイクルCYC3では、要求REQextBは、要求REQext2BとしてP2ステージに投入される。そして、要求REQext2Bは、P2ステージからRステージまで流れる。
このように、内部要求REQintが1つ存在する場合、要求REQextA、REQextBのレイテンシは、内部要求REQintがない場合に比べてP2ステージの1サイクル分増加し、8サイクルになる。
図6は、図3に示したパイプライン処理部PLPbの動作の別の例を示す。なお、図6は、内部要求REQintが2つ存在する場合と3つ存在する場合におけるパイプライン処理部PLPbの動作の一例を示す。図6に示す要求REQextA、REQextBの発行タイミング等は、図5に示した要求REQextA、REQextBと同じである。
内部要求REQintが2つ存在する場合、図6に示す例では、要求REQextAは、図5に示した内部要求REQintがない場合に比べて、2サイクル遅いサイクルCYC4でP1ステージに投入される。例えば、サイクルCYC0では、内部要求REQintMIがP3ステージに投入される。そして、サイクルCYC1では、内部要求REQintPFがP3ステージに投入される。このため、サイクルCYC2において、要求REQextAを要求REQext2AとしてP2ステージに投入すると、要求REQext2Aは、要求REQintPFと衝突する。要求REQext2Aの優先順位は、要求REQintPFの優先順位より低いため、要求REQext2Aは、P2ステージに投入されない。このため、サイクルCYC2では、要求REQextAは、要求REQext3AとしてP3ステージに投入される。そして、要求REQext3Aは、P3ステージからRステージまで流れる。
この場合、サイクルCYC3において、要求REQextBを要求REQext1BとしてP1ステージに投入すると、要求REQext1Bは、要求REQext3Aを追い越す。また、サイクルCYC3において、要求REQextBを要求REQext2BとしてP2ステージに投入すると、要求REQext2Bは、P2ステージに転送された要求REQext3Aと衝突する。このため、サイクルCYC3では、要求REQextBは、要求REQext3BとしてP3ステージに投入される。そして、要求REQext3Bは、P3ステージからRステージまで流れる。
このように、内部要求REQintが2つ存在する場合、要求REQextA、REQextBのレイテンシは、内部要求REQintがない場合に比べて2サイクル分増加し、9サイクルになる。
内部要求REQintが3つ存在する場合、図6に示す例では、要求REQextAは、内部要求REQintがない場合に比べて、3サイクル遅いサイクルCYC5でP1ステージに投入される。例えば、サイクルCYC0では、1つ目の内部要求REQintMIがP3ステージに投入され、サイクルCYC1では、内部要求REQintPFがP3ステージに投入される。そして、サイクルCYC2では、2つ目の内部要求REQintMIがP3ステージに投入される。このため、サイクルCYC2において、要求REQextAを要求REQext3AとしてP3ステージに投入すると、要求REQext3Aは、2つ目の要求REQintMIと衝突する。要求REQext3Aの優先順位は、要求REQintMIの優先順位より低いため、要求REQext3Aは、P3ステージに投入されない。このため、サイクルCYC2の次のサイクルCYC3において、要求REQextAが要求REQext4AとしてP2ステージに投入される。そして、要求REQext4Aは、P3ステージからRステージまで流れる。
要求REQextBは、内部要求REQintが2つ存在する場合と同様の理由により、要求REQext4AがP3ステージに投入されたサイクルCYC3の次のサイクルCYC4において、要求REQext4BとしてP3ステージに投入される。そして、要求REQext4Bは、P3ステージからRステージまで流れる。
このように、内部要求REQintが3つ存在する場合、要求REQextA、REQextBのレイテンシは、内部要求REQintがない場合に比べて3サイクル分増加し、10サイクルになる。
なお、図示していないが、内部要求REQintが4つ存在する場合、サイクルCYC3において、要求REQextAを要求REQext4AとしてP3ステージに投入すると、要求REQext4Aは、4つ目の内部要求REQintと衝突する。この場合、要求REQextAは、ポートPTRにセットされ、内部要求REQintRPとしてP2ステージに投入される。
図5および図6に示したように、パイプライン処理部PLPbでは、外部要求REQextと内部要求REQintとが衝突した場合、外部要求REQextの投入タイミングを1サイクル単位で遅らせることができる。
図7は、図3に示したパイプライン処理部PLPbの動作の比較例を示す。なお、図7は、内部要求REQintが1つ存在する場合におけるパイプライン処理部PLPbの動作の比較例を示す。先ず、比較例1について説明する。
比較例1は、要求REQext2、REQext3をパイプラインに投入する手段が存在しないパイプライン処理部の動作を示す。例えば、比較例1の動作は、図3に示したセレクタSP3がパイプライン処理部PLPbから省かれ、レジスタRP2の出力と要求REQintRPのいずれかを選択するセレクタがセレクタSP2の代わりに設けられたパイプライン処理部の動作に対応する。
比較例1では、内部要求REQintが1つ存在する場合、要求REQextAは、図5に示した内部要求REQintがない場合に比べて、3サイクル遅いサイクルCYC5でP1ステージに投入される。例えば、サイクルCYC2において、要求REQext1AをP1ステージに投入すると、要求REQext1Aは、要求REQintMIと衝突する。要求REQext1Aの優先順位は、要求REQintMIの優先順位より低いため、要求REQext1Aは、P1ステージに投入されない。比較例1では、要求REQext2、REQext3をパイプラインに投入する手段が存在しないため、要求REQext1AをP1ステージに投入できない場合、サイクルCYC3において、要求REQext4AがP3ステージに投入される。そして、要求REQext4Aは、P3ステージからRステージまで流れる。
このように、比較例1では、内部要求REQintが1つのみの場合でも、内部要求REQintがない場合に比べて、3サイクル遅いサイクルCYC5でP1ステージに投入される。このため、要求REQextA、REQextBのレイテンシは、図5に示した内部要求REQintがない場合に比べて、P4ステージ、P3ステージおよびP2ステージの3サイクル分増加する。すなわち、比較例1では、要求REQextA、REQextBのレイテンシは、内部要求REQintが1つのみの場合でも、図5に示した内部要求REQintがない場合に比べて3サイクル分増加し、10サイクルになる。
これに対し、図3に示したパイプライン処理部PLPbでは、図5で説明したように、内部要求REQintが1つ存在する場合、要求REQextA、REQextBのレイテンシは、8サイクルである。すなわち、パイプライン処理部PLPbは、比較例1に比べて、要求REQextのレイテンシを2サイクル短くできる。次に、比較例2について説明する。
比較例2は、比較例1に比べて低周波で動作するパイプライン処理部の動作を示す。例えば、比較例2では、P3ステージ、P2ステージおよびP1ステージの処理が1つのPステージで実行され、SステージおよびBステージの処理が1つのBステージで実行される。すなわち、比較例2では、5つのステージを有するパイプライン処理が実行される。また、比較例2では、命令制御部のパイプライン処理におけるAステージおよびIPステージの処理が1つのAステージで実行され、AステージとPステージとが同じステージになるように設計される。このため、比較例2では、命令キャッシュメモリは、命令制御部からの要求REQを受け取らないことを示す信号BUSYを命令制御部に出力することにより、内部要求REQintと外部要求REQextとの衝突を回避する。
比較例2では、内部要求REQintMIがPステージに投入されるサイクルCYC1において、論理値”1”の信号BUSYを命令制御部が受信する。このため、命令制御部は、信号BUSYが論理値”0”になるまで同じ要求REQextAを出力し続ける。そして、信号BUSYが論理値”0”になったサイクルCYC2において、命令キャッシュメモリは、要求REQextAを命令制御部から受信してPステージに投入する。これにより、要求REQextAは、PステージからRステージまで流れる。この場合、要求REQextAのレイテンシは、内部要求REQintがない場合に比べて、1サイクル分増加する。このように、比較例2では、外部要求REQextと内部要求REQintとが衝突した場合、信号BUSYを用いて、外部要求REQextの投入タイミングを1サイクル単位で遅らせることができる。
なお、比較例1および図3に示したパイプライン処理部PLPbでは、IPステージとP1ステージとが同じステージになるように設計されるため、信号BUSYを用いた制御を実行することは困難である。このため、パイプライン処理部PLPbでは、命令制御部IUから受信した要求REQextを、要求REQext1、REQext2、REQext3、REQext4を用いて、選択ステージP1、P2、P3のいずれかに投入する。これにより、比較例2に比べてパイプライン処理を高周波化したパイプライン処理部PLPbにおいても、外部要求REQextと内部要求REQintとが衝突した場合に、外部要求REQextの投入タイミングを1サイクル単位で遅らせることができる。この結果、要求REQextのレイテンシの増加を比較例1に比べて抑制することができる。
図8は、図4に示した順序判定部OJGによる順序判定の一例を示す。なお、図8は、要求REQextAと要求REQextAの後に発行される要求REQextBとの発行タイミングの差が1サイクルである場合の順序判定の一例を示す。また、図8では、要求REQextの処理順序を見やすくするために、P1ステージを網掛けで示している。
要求REQextAが要求REQext1Aとして投入される場合、要求REQext1Aは、サイクルCYC2でP1ステージに投入される。この場合、サイクルCYC3において、要求REQextBを要求REQext1BとしてP1ステージに投入しても、要求REQext1Bは、先行する要求REQext1Aを追い超さない。このため、順序判定部OJGは、要求REQextBを要求REQext1BとしてP1ステージに投入可能であると判定する。したがって、P1ステージに転送されるタイミングが要求REQext1Bより後の要求REQext2B、REQext3B、REQext4Bも投入可能と判定される。
要求REQextAが要求REQext4Aとして投入される場合、要求REQext4Aは、サイクルCYC3でP3ステージに投入され、サイクルCYC5でP1ステージに転送される。この場合、サイクルCYC3において、要求REQextBを要求REQext1BとしてP1ステージに投入すると、要求REQext1Bは、先行する要求REQext1Aを追い越す。また、サイクルCYC3において、要求REQextBを要求REQext2BとしてP2ステージに投入すると、要求REQext2Bは、先行する要求REQext1Aを追い越す。あるいは、サイクルCYC3において、要求REQextBを要求REQext3BとしてP3ステージに投入すると、要求REQext3Bは、先行する要求REQext1Aと衝突する。このため、順序判定部OJGは、要求REQext1B、REQext2B、REQext3Bを投入不可と判定する。
なお、サイクルCYC4において、要求REQextBを要求REQext4BとしてP3ステージに投入した場合、要求REQext4Bは、先行する要求REQext4Aを追い超さない。このため、順序判定部OJGは、要求REQextBを要求REQext4BとしてP3ステージに投入可能であると判定する。
図示していないが、要求REQextAが要求REQext2Aとして投入される場合、要求REQext2Aは、要求REQext1AがP1ステージに投入されるサイクルCYC2の次のサイクルCYC3でP1ステージに転送される。このため、サイクルCYC3において、要求REQextBを要求REQext1BとしてP1ステージに投入した場合、要求REQext1Bは、先行する要求REQext2Aと衝突する。この場合、要求REQext1Bが投入不可と判定され、要求REQext2B、REQext3B、REQext4Bが投入可能と判定される。また、要求REQextAが要求REQext3Aとして投入される場合、要求REQext3Aは、要求REQext1AがP1ステージに投入されるサイクルCYC2の次の次のサイクルCYC4でP1ステージに転送される。このため、サイクルCYC3において、要求REQextBを要求REQext2BとしてP2ステージに投入した場合、要求REQext2Bは、先行する要求REQext3Aと衝突する。この場合、要求REQext1B、REQext2Bが投入不可と判定され、要求REQext3B、REQext4Bが投入可能と判定される。
図9は、図4に示した順序判定部OJGによる順序判定の別の例を示す。なお、図9は、要求REQextAと要求REQextAの後に発行される要求REQextBとの発行タイミングの差が2サイクルである場合の順序判定の一例を示す。また、図9では、図8と同様に、P1ステージを網掛けで示している。
要求REQextAが要求REQext2Aとして投入される場合、要求REQext2Aは、サイクルCYC2でP2ステージに投入され、サイクルCYC3でP1ステージに転送される。この場合、サイクルCYC4において、要求REQextBを要求REQext1BとしてP1ステージに投入しても、要求REQext1Bは、先行する要求REQext2Aを追い超さない。このため、順序判定部OJGは、要求REQextBを要求REQext1BとしてP1ステージに投入可能であると判定する。したがって、P1ステージに転送されるタイミングが要求REQext1Bより後の要求REQext2B、REQext3B、REQext4Bも投入可能と判定される。
要求REQextAが要求REQext4Aとして投入される場合、要求REQext4Aは、サイクルCYC3でP3ステージに投入され、サイクルCYC5でP1ステージに転送される。この場合、サイクルCYC4において、要求REQextBを要求REQext1BとしてP1ステージに投入すると、要求REQext1Bは、先行する要求REQext4Aを追い越す。また、サイクルCYC4において、要求REQextBを要求REQext2BとしてP2ステージに投入すると、要求REQext2Bは、先行する要求REQext4Aと衝突する。このため、順序判定部OJGは、要求REQext1B、REQext2Bを投入不可と判定する。
なお、サイクルCYC4において、要求REQextBを要求REQext3BとしてP3ステージに投入した場合、要求REQext3Bは、先行する要求REQext4Aを追い超さない。このため、順序判定部OJGは、要求REQextBを要求REQext3BとしてP3ステージに投入可能であると判定する。したがって、P1ステージに転送されるタイミングが要求REQext3Bより後の要求REQext4Bも投入可能と判定される。
図示していないが、要求REQextAが要求REQext1Aとして投入される場合、要求REQext1Aは、要求REQext2AがP1ステージに転送されるサイクルCYC3の前のサイクルCYC2でP1ステージに投入される。このため、要求REQext1B、REQext2B、REQext3B、REQext4Bは投入可能と判定される。また、要求REQextAが要求REQext3Aとして投入される場合、要求REQext3Aは、要求REQext2AがP1ステージに転送されるサイクルCYC3の次のサイクルCYC4でP1ステージに転送される。このため、サイクルCYC4において、要求REQextBを要求REQext1BとしてP1ステージに投入した場合、要求REQext1Bは、先行する要求REQext3Aと衝突する。この場合、要求REQext1Bが投入不可と判定され、要求REQext2B、REQext3B、REQext4Bが投入可能と判定される。
図10は、図4に示した順序判定部OJGによる順序判定の別の例を示す。なお、図10は、要求REQextAと要求REQextAの後に発行される要求REQextBとの発行タイミングの差が3サイクルである場合の順序判定の一例を示す。また、図10では、図8と同様に、P1ステージを網掛けで示している。
要求REQextAが要求REQext3Aとして投入される場合、要求REQext3Aは、サイクルCYC2でP3ステージに投入され、サイクルCYC4でP1ステージに転送される。この場合、サイクルCYC5において、要求REQextBを要求REQext1BとしてP1ステージに投入しても、要求REQext1Bは、先行する要求REQext3Aを追い超さない。このため、順序判定部OJGは、要求REQextBを要求REQext1BとしてP1ステージに投入可能であると判定する。したがって、P1ステージに転送されるタイミングが要求REQext1Bより後の要求REQext2B、REQext3B、REQext4Bも投入可能と判定される。
要求REQextAが要求REQext4Aとして投入される場合、要求REQext4Aは、サイクルCYC3でP3ステージに投入され、サイクルCYC5でP1ステージに転送される。この場合、サイクルCYC5において、要求REQextBを要求REQext1BとしてP1ステージに投入すると、要求REQext1Bは、先行する要求REQext4Aと衝突する。このため、順序判定部OJGは、要求REQext1Bを投入不可と判定する。
なお、サイクルCYC5において、要求REQextBを要求REQext2BとしてP2ステージに投入した場合、要求REQext2Bは、先行する要求REQext4Aを追い超さない。このため、順序判定部OJGは、要求REQextBを要求REQext2BとしてP2ステージに投入可能であると判定する。したがって、P1ステージに転送されるタイミングが要求REQext2Bより後の要求REQext3B、REQext4Bも投入可能と判定される。
図示していないが、要求REQextAが要求REQext2Aとして投入される場合、要求REQext2Aは、要求REQext3AがP1ステージに転送されるサイクルCYC4より前のサイクルCYC3でP1ステージに転送される。同様に、要求REQextAが要求REQext1Aとして投入される場合、要求REQext1Aは、要求REQext3AがP1ステージに転送されるサイクルCYC4より前のサイクルCYC2でP1ステージに投入される。このため、要求REQextAが要求REQext1Aまたは要求REQext2Aとして投入される場合、要求REQext1B、REQext2B、REQext3B、REQext4Bは投入可能と判定される。
要求REQextAと要求REQextBとの発行タイミングの差が4サイクル以上である場合、要求REQext1Bは、サイクルCYC6以降にP1ステージに投入されるため、要求REQext1Bは、先行する要求REQext4Aを追い超さない。このため、要求REQextA、REQextBの発行タイミングの差が4サイクル以上の場合、要求REQextAが投入されるステージに拘わらず、要求REQext1B、REQext2B、REQext3B、REQext4Bは投入可能と判定される。
図11は、図4に示した順序判定部OJGによる判定結果の一例を示す。図11に示す例では、要求REQextAは、要求REQextBの直前に発行された要求である。
要求REQextAと要求REQextBとの発行タイミングの差が1サイクルの場合では、要求REQext1Bは、直前の要求REQextAが要求REQext1Aである場合に投入可能である。要求REQext2Bは、直前の要求REQextAが要求REQext1Aまたは要求REQext2Aである場合に投入可能である。要求REQext3Bは、直前の要求REQextAが要求REQext1A、REQext2A、REQext3Aのいずれかである場合に投入可能である。要求REQext4Bは、直前の要求REQextAに拘わらず、投入可能である。
要求REQextAと要求REQextBとの発行タイミングの差が2サイクルの場合では、要求REQext1Bは、直前の要求REQextAが要求REQext1Aまたは要求REQext2Aである場合に投入可能である。要求REQext2Bは、直前の要求REQextAが要求REQext1A、REQext2A、REQext3Aのいずれかである場合に投入可能である。要求REQext3B、REQext4Bは、直前の要求REQextAに拘わらず、投入可能である。
要求REQextAと要求REQextBとの発行タイミングの差が2サイクルの場合では、要求REQext1Bは、直前の要求REQextAが要求REQext1A、REQext2A、REQext3Aのいずれかである場合に投入可能である。要求REQext2B、REQext3B、REQext4Bは、直前の要求REQextAに拘わらず、投入可能である。
要求REQextAと要求REQextBとの発行タイミングの差が4サイクル以上の場合では、要求REQext1B、REQext2B、REQext3B、REQext4Bは、直前の要求REQextAに拘わらず、投入可能である。
図12は、図4に示した衝突判定部CJGによる判定結果の一例を示す。P4ステージに要求REQが存在する場合、要求REQext4は、投入不可である。P3ステージに要求REQが存在する場合、要求REQext3は、投入不可である。P2ステージに要求REQが存在する場合、要求REQext2は、投入不可である。P1ステージに要求REQが存在する場合、要求REQext1は、投入不可である。
換言すれば、P4ステージに要求REQが存在しない場合、要求REQext4は、投入可能である。P3ステージに要求REQが存在しない場合、要求REQext3は、投入可能である。P2ステージに要求REQが存在しない場合、要求REQext2は、投入可能である。P1ステージに要求REQが存在しない場合、要求REQext1は、投入可能である。
図13は、図4に示した投入決定部INDETによる判定結果の一例を示す。図13の”○”は、順序判定部OJGおよび衝突判定部CJGの両方で投入可能と判定された要求REQextを示す。図13の”×”は、順序判定部OJGおよび衝突判定部CJGの少なくとも一方で投入不可と判定された要求REQextを示す。図13の”−”は、順序判定部OJGおよび衝突判定部CJGの判定結果が投入可能および投入不可のどちらでもよいことを示す。
要求REQext1が投入可能である場合、要求REQext1がP1ステージに投入される。要求REQext1が投入不可で要求REQext2が投入可能である場合、要求REQext2がP2ステージに投入される。要求REQext1、REQext2が投入不可で要求REQext3が投入可能である場合、要求REQext3がP3ステージに投入される。要求REQext1、REQext2、REQext3が投入不可で要求REQext4が投入可能である場合、要求REQext4がP4ステージに投入される。要求REQext1、REQext2、REQext3、REQext4が投入不可である場合、外部要求REQextは内部要求REQintRPとしてP2ステージに投入される。
このように、要求REQextは、投入済みの要求REQとの衝突を回避し、かつ、処理ステージTMSBRの処理順が要求REQextの受信順となる選択ステージPのうち、処理ステージTMSBRに最も近い選択ステージPに投入される。
図14は、図2に示した命令キャッシュメモリICMbの動作の一例を示す。
ステップS100では、命令キャッシュメモリICMbの順序判定部OJGは、図15に示す順序判定処理を実行する。これにより、図11に示した判定結果が得られる。
次に、ステップS200では、命令キャッシュメモリICMbの衝突判定部CJGは、図16に示す衝突判定処理を実行する。これにより、図12に示した判定結果が得られる。
次に、ステップS300では、命令キャッシュメモリICMbの投入決定部INDETは、図17に示す投入決定処理を実行する。例えば、投入決定部INDETは、図13で説明したように、ステップS100の順序判定処理で得られる判定結果(例えば、図11)とステップS200の衝突判定処理で得られる判定結果(例えば、図12)とに基づいて、投入する要求REQextを決定する。
なお、命令キャッシュメモリICMbの動作は、図14に示す例に限定されない。例えば、ステップS100は、ステップS200の後に実行されてもよいし、ステップS200と並列に実行されてもよい。
図15は、図4に示した順序判定部OJGの動作の一例を示す。すなわち、図15は、図14に示した順序判定処理S100の一例を示す。なお、順序判定部OJGの動作は、図15に示す例に限定されない。図15に示す”直前の要求REQext”は、判定対象、すなわち、投入対象の要求REQextの直前に発行された要求である。
ステップS110では、順序判定部OJGは、判定対象の要求REQextと直前の要求REQextとの発行タイミングの差が1サイクルであるか否かを判定する。判定対象の要求REQextと直前の要求REQextとの発行タイミングの差が1サイクルである場合、順序判定部OJGの動作は、ステップS112に移る。一方、判定対象の要求REQextと直前の要求REQextとの発行タイミングの差が1サイクルでない場合、順序判定部OJGの動作は、ステップS120に移る。
ステップS112では、順序判定部OJGは、直前の要求REQextが要求REQext4として投入されたか否かを判定する。直前の要求REQextが要求REQext4として投入された場合、順序判定部OJGの動作は、ステップS146に移る。一方、直前の要求REQextが要求REQext4として投入されていない場合、順序判定部OJGの動作は、ステップS114に移る。
ステップS114では、順序判定部OJGは、直前の要求REQextが要求REQext3として投入されたか否かを判定する。直前の要求REQextが要求REQext3として投入された場合、順序判定部OJGの動作は、ステップS144に移る。一方、直前の要求REQextが要求REQext3として投入されていない場合、順序判定部OJGの動作は、ステップS116に移る。
ステップS116では、順序判定部OJGは、直前の要求REQextが要求REQext2として投入されたか否かを判定する。直前の要求REQextが要求REQext2として投入された場合、順序判定部OJGの動作は、ステップS142に移る。一方、直前の要求REQextが要求REQext2として投入されていない場合、順序判定部OJGの動作は、ステップS140に移る。
ステップS120では、順序判定部OJGは、判定対象の要求REQextと直前の要求REQextとの発行タイミングの差が2サイクルであるか否かを判定する。判定対象の要求REQextと直前の要求REQextとの発行タイミングの差が2サイクルである場合、順序判定部OJGの動作は、ステップS122に移る。一方、判定対象の要求REQextと直前の要求REQextとの発行タイミングの差が2サイクルでない場合、順序判定部OJGの動作は、ステップS130に移る。
ステップS122では、順序判定部OJGは、直前の要求REQextが要求REQext4として投入されたか否かを判定する。直前の要求REQextが要求REQext4として投入された場合、順序判定部OJGの動作は、ステップS144に移る。一方、直前の要求REQextが要求REQext4として投入されていない場合、順序判定部OJGの動作は、ステップS124に移る。
ステップS124では、順序判定部OJGは、直前の要求REQextが要求REQext3として投入されたか否かを判定する。直前の要求REQextが要求REQext3として投入された場合、順序判定部OJGの動作は、ステップS142に移る。一方、直前の要求REQextが要求REQext3として投入されていない場合、順序判定部OJGの動作は、ステップS140に移る。
ステップS130では、順序判定部OJGは、判定対象の要求REQextと直前の要求REQextとの発行タイミングの差が3サイクルであるか否かを判定する。判定対象の要求REQextと直前の要求REQextとの発行タイミングの差が3サイクルである場合、順序判定部OJGの動作は、ステップS132に移る。一方、判定対象の要求REQextと直前の要求REQextとの発行タイミングの差が3サイクルでない場合、順序判定部OJGの動作は、ステップS140に移る。
ステップS132では、順序判定部OJGは、直前の要求REQextが要求REQext4として投入されたか否かを判定する。直前の要求REQextが要求REQext4として投入された場合、順序判定部OJGの動作は、ステップS142に移る。一方、直前の要求REQextが要求REQext4として投入されていない場合、順序判定部OJGの動作は、ステップS140に移る。
ステップS140では、順序判定部OJGは、判定対象の要求REQextを要求REQext1、REQext2、REQext3、REQext4のいずれとしても投入可能であると判定し、順序判定処理を終了する。例えば、ステップS140の処理が実行された後、命令キャッシュメモリICMbの動作は、図14に示したステップS200に移る。
ステップS142では、順序判定部OJGは、判定対象の要求REQextを要求REQext2、REQext3、REQext4のいずれかとして投入可能であると判定し、順序判定処理を終了する。例えば、ステップS142の処理が実行された後、命令キャッシュメモリICMbの動作は、図14に示したステップS200に移る。
ステップS144では、順序判定部OJGは、判定対象の要求REQextを要求REQext3、REQext4のいずれかとして投入可能であると判定し、順序判定処理を終了する。例えば、ステップS144の処理が実行された後、命令キャッシュメモリICMbの動作は、図14に示したステップS200に移る。
ステップS146では、順序判定部OJGは、判定対象の要求REQextを要求REQext4として投入可能であると判定し、順序判定処理を終了する。例えば、ステップS146の処理が実行された後、命令キャッシュメモリICMbの動作は、図14に示したステップS200に移る。
図16は、図4に示した衝突判定部CJGの動作の一例を示す。すなわち、図16は、図14に示した衝突判定処理S200の一例を示す。図16に示す例では、ステップS210、S212、S214のフローと、ステップS220、S222、S224のフローと、ステップS230、S232、S234のフローと、ステップS240、S242、S244のフローとが並列に実行される。なお、ステップS210、S212、S214のフローと、ステップS220、S222、S224のフローと、ステップS230、S232、S234のフローと、ステップS240、S242、S244のフローとは、順次実行されてもよい。
ステップS210では、衝突判定部CJGは、P1ステージに要求REQが存在するか否かを判定する。P1ステージに要求REQが存在する場合、衝突判定部CJGは、ステップS214において、判定対象の要求REQextを要求REQext1として投入不可であると判定する。一方、P1ステージに要求REQが存在しない場合、衝突判定部CJGは、ステップS212において、判定対象の要求REQextを要求REQext1としてP1ステージに投入可能であると判定する。
ステップS220では、衝突判定部CJGは、P2ステージに要求REQが存在するか否かを判定する。P2ステージに要求REQが存在する場合、衝突判定部CJGは、ステップS224において、判定対象の要求REQextを要求REQext2として投入不可であると判定する。一方、P2ステージに要求REQが存在しない場合、衝突判定部CJGは、ステップS222において、判定対象の要求REQextを要求REQext2としてP2ステージに投入可能であると判定する。
ステップS230では、衝突判定部CJGは、P3ステージに要求REQが存在するか否かを判定する。P3ステージに要求REQが存在する場合、衝突判定部CJGは、ステップS234において、判定対象の要求REQextを要求REQext3として投入不可であると判定する。一方、P3ステージに要求REQが存在しない場合、衝突判定部CJGは、ステップS232において、判定対象の要求REQextを要求REQext3としてP3ステージに投入可能であると判定する。
ステップS240では、衝突判定部CJGは、P4ステージに要求REQが存在するか否かを判定する。P4ステージに要求REQが存在する場合、衝突判定部CJGは、ステップS244において、判定対象の要求REQextを要求REQext4として投入不可であると判定する。一方、P4ステージに要求REQが存在しない場合、衝突判定部CJGは、ステップS242において、判定対象の要求REQextを要求REQext4としてP4ステージに投入可能であると判定する。
図16に示す衝突判定処理が終了した後、命令キャッシュメモリICMbの動作は、図14に示したステップS300に移る。なお、衝突判定部CJGの動作は、図16に示す例に限定されない。
図17は、図4に示した投入決定部INDETの動作の一例を示す。すなわち、図17は、図14に示した投入決定処理S300の一例を示す。なお、投入決定部INDETの動作は、図17に示す例に限定されない。
ステップS310では、投入決定部INDETは、投入可能な要求REQext1が存在するか否かを判定する。例えば、投入決定部INDETは、投入対象の要求REQextを要求REQext1としてP1ステージに投入可能であると順序判定部OJGおよび衝突判定部CJGの両方で判定された場合、投入可能な要求REQext1が存在すると判定する。投入可能な要求REQext1が存在する場合、投入決定部INDETの動作は、ステップS312に移る。一方、投入可能な要求REQext1が存在しない場合、投入決定部INDETの動作は、ステップS320に移る。
ステップS312では、投入決定部INDETは、要求REQextを要求REQext1としてP1ステージに投入し、投入決定処理を終了する。例えば、投入決定部INDETは、パイプライン処理部PLPbのセレクタSP1を制御して、命令制御部IUから受信した要求REQextを要求REQext1としてP1ステージに投入する。
ステップS320では、投入決定部INDETは、投入可能な要求REQext2が存在するか否かを判定する。例えば、投入決定部INDETは、投入対象の要求REQextを要求REQext2としてP2ステージに投入可能であると順序判定部OJGおよび衝突判定部CJGの両方で判定された場合、投入可能な要求REQext2が存在すると判定する。投入可能な要求REQext2が存在する場合、投入決定部INDETの動作は、ステップS322に移る。一方、投入可能な要求REQext2が存在しない場合、投入決定部INDETの動作は、ステップS330に移る。
ステップS322では、投入決定部INDETは、要求REQextを要求REQext2としてP2ステージに投入し、投入決定処理を終了する。例えば、投入決定部INDETは、パイプライン処理部PLPbのセレクタSP2を制御して、命令制御部IUから受信した要求REQextを要求REQext2としてP2ステージに投入する。
ステップS330では、投入決定部INDETは、投入可能な要求REQext3が存在するか否かを判定する。例えば、投入決定部INDETは、投入対象の要求REQextを要求REQext3としてP3ステージに投入可能であると順序判定部OJGおよび衝突判定部CJGの両方で判定された場合、投入可能な要求REQext3が存在すると判定する。投入可能な要求REQext3が存在する場合、投入決定部INDETの動作は、ステップS332に移る。一方、投入可能な要求REQext3が存在しない場合、投入決定部INDETの動作は、ステップS340に移る。
ステップS332では、投入決定部INDETは、要求REQextを要求REQext3としてP3ステージに投入し、投入決定処理を終了する。例えば、投入決定部INDETは、パイプライン処理部PLPbのセレクタSP3を制御して、命令制御部IUから受信した要求REQextを要求REQext3としてP3ステージに投入する。
ステップS340では、投入決定部INDETは、投入可能な要求REQext4が存在するか否かを判定する。例えば、投入決定部INDETは、投入対象の要求REQextを要求REQext4としてP4ステージに投入可能であると順序判定部OJGおよび衝突判定部CJGの両方で判定された場合、投入可能な要求REQext4が存在すると判定する。投入可能な要求REQext4が存在する場合、投入決定部INDETの動作は、ステップS342に移る。一方、投入可能な要求REQext4が存在しない場合、投入決定処理は、終了する。
ステップS342では、投入決定部INDETは、要求REQextを要求REQext4としてP4ステージに投入し、投入決定処理を終了する。例えば、投入決定部INDETは、パイプライン処理部PLPbのセレクタSP4を制御して、命令制御部IUから受信した要求REQextを要求REQext4としてP4ステージに投入する。
このように、投入決定部INDETは、セレクタSP1−SP4を制御して、命令制御部IUから受信した要求REQextを投入可能な選択ステージPのうち、処理ステージTに最も近い選択ステージPに要求REQextを投入する。
以上、図2から図17に示す実施形態においても、図1に示した実施形態と同様の効果を得ることができる。例えば、命令キャッシュ制御部ICMCbは、命令制御部IUから受信した要求REQextと投入済みの要求REQとの衝突を回避し、かつ、処理ステージTMSBRの処理順が要求REQextの受信順となる選択ステージPを特定する。そして、命令キャッシュ制御部ICMCbは、特定した選択ステージPのうち、処理ステージTMSBRに最も近い選択ステージPに命令制御部IUから受信した要求REQextを投入する。これにより、選択ステージP3、P2、P1のうちの所定のステージのみに命令制御部IUから受信した要求REQextが投入される場合に比べて、命令キャッシュメモリICMbのレイテンシの増加を抑制することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。