以下、図面に基づき、本願の開示するキャッシュメモリ制御装置、半導体集積回路及びキャッシュメモリ制御方法に関わるLSI(Large Scale Integrated Circuit)の実施の形態について詳細に説明する。
[実施の形態1]
図1は、実施の形態1のLSIの構成を示すブロック図である。図1に示すLSI1は、キャッシュメモリ2、コア3、メモリアクセスコントローラ(以下、単にMACと称する)4、キャッシュ制御部5及びデータバス6を有する。キャッシュメモリ2は、コア3、MAC4、キャッシュ制御部5及びデータバス6と接続され、図示せぬ主記憶装置に格納した、コア3の演算処理に使用するデータを一時記憶する。
また、キャッシュメモリ2は、主記憶装置が、例えば、4個のバンクメモリ(MM0〜MM1)に分割された場合に、これら各バンクメモリ(MM0〜MM3)に対応付けて、4個のデータメモリ2A(M0〜M3)に分割される。尚、キャッシュメモリ2は、例えば、ランダムアクセスメモリ(以下、単にRAMと称する)等である。コア3は、例えば、データバス6及びキャッシュ制御部5と接続され、キャッシュメモリ2内のデータに基づき各種演算処理を実行する演算処理部である。尚、コア3は、例えば、8個のコア3(C0〜C7)を有する。
MAC4は、キャッシュ制御部5と接続され、バンクメモリ(MM0〜MM3)を制御する。また、MAC4は、各バンクメモリ(MM0〜MM3)に対応付けて4個のMAC4A(MC0〜MC4)に分割されている。尚、MAC4は、例えば、MC0の場合には、データメモリ2A(M0)に対応付けたバンクメモリ(MM0)を制御し、MC3の場合には、データメモリ2A(M3)に対応付けたバンクメモリ(MM3)を制御する。
キャッシュ制御部5は、コア3、MAC4、データバス6及び主記憶装置と接続され、その内部のデータ転送等を制御する。尚、LSI1は、例えば、8個のコア3(C0〜C7)、4個のデータメモリ2A(M0〜M3)及び4個のMAC4A(MC0〜MC3)を基板外周縁上に配置し、キャッシュ制御部5を基板中央に配置する。
更に、キャッシュ制御部5は、第1キャッシュ制御部5A及び第2キャッシュ制御部5Bを有する。第1キャッシュ制御部5Aは、データメモリ2A(M0及びM1)及びMAC4A(MC0及びMC1)を制御する。また。第2キャッシュ制御部5Bは、データメモリ2A(M2及びM3)及びMAC4A(MC2及びMC3)を制御する。
データバス6は、複数のコア3及びデータメモリ2A間でデータを転送する。例えば、LSI1は、第1データバス6A及び第2データバス6Bを有する。第1データバス6Aは、例えば、データメモリ2Aから複数のコア3(C0,C1,C4及びC5)へデータを転送する。第2データバス6Bは、例えば、データメモリ2Aから複数のコア3(C2,C3,C6及びC7)へデータを転送する。
次に、第1キャッシュ制御部5Aの構成について説明する。図2は、実施の形態1の第1キャッシュ制御部5Aの構成を示すブロック図である。図2に示す第1キャッシュ制御部5Aは、制御パイプライン10、ムーブアウトデータキュー(以下、単にMODQと称する)11及びムーブインデータキュー(以下、単にMIDQと称する)12を有する。更に、第1キャッシュ制御部5Aは、ライトバックデータキュー(以下、単にWBDQと称する)13、キューセレクタ(以下、単にQSLと称する)14及び接続ラインL0を有する。更に、第1キャッシュ制御部5Aは、出力セレクタ(以下、単にOSLと称する)15及びデータセレクタ(以下、単にDSLと称する)16を有する。更に、第1キャッシュ制御部5Aは、ムーブインポート(以下、単にMIポートと称する)17、ムーブアウトポート(以下、単にMOポートと称する)18及びムーブインバッファ(以下、単にMIバッファと称する)19を有する。更に、第1キャッシュ制御部5Aは、要求セレクタ(以下、単にRSLと称する)20及びタグメモリ21を有する。
制御パイプライン10は、データメモリ2A(M0及びM1)毎に、例えば、EVEN周期及びODD周期の2サイクル周期でパイプ命令の投入を受け付ける。データメモリ2A(M0)にアクセスする場合はEVEN周期を使用し、データメモリ2A(M1)にアクセスする場合はODD周期を使用する。
MODQ11は、データバス6及びMAC4と接続され、ムーブアウトデータを格納する。MODQ11は、EVEN周期側のMODQ−EV11A及びODD周期側のMODQ−OD11Bを有し、MODQ−EV11Aは第1データバス6Aと接続され、MODQ−OD11Bは第2データバス6Bと接続される。尚、ムーブアウトデータは、キャッシュメモリ2から消去するデータである。
MIDQ12は、QSL14及びMAC4と接続され、ムーブインデータを格納する。MIDQ12は、EVEN周期側のMIDQ−EV12A及びODD周期側のMIDQ−OD12Bを有し、MIDQ−EV12A及びMIDQ−OD12Bは、MAC4A(MC0)及び(MC1)と接続される。尚、ムーブインデータは、キャッシュメモリ2に新規登録するデータである。
WBDQ13は、コア3及びQSL14と接続され、ライトバックデータを格納する。WBDQ13は、EVEN周期側のWBDQ−EV13A及びODD周期側のWBDQ−OD13Bを有する。尚、ライトバックデータは、コア3内部の図示せぬキャッシュメモリ2に登録済みのデータをキャッシュメモリ2又は主記憶装置に戻すデータである。
QSL14は、データメモリ2A、WBDQ13、MIDQ12及び接続ラインL0と接続され、WBDQ13の出力データ又はMIDQ12の出力データをデータメモリ2A及び接続ラインL0に出力する。QSL14は、EVEN周期側のQSL−EV14A及びODD周期側のQSL−OD14Bを有する。QSL−EV14Aは、WBDQ−EV13Aの出力データ又はMIDQ−EV12Aの出力データをデータメモリ2A(M0)及び接続ラインL0に出力する。QSL−OD14Bは、WBDQ−OD13Bの出力データ又はMIDQ−OD12Bの出力データをデータメモリ2A(M1)及び接続ラインL0に出力する。
接続ラインL0は、QSL14及びOSL15と接続され、例えば、QSL−EV14A及びOSL−EV15A間、又はQSL−OD14B及びOSL−OD15B間を直接接続する伝送線に相当する。接続ラインL0は、例えば、QSL−EV14Aから該当データをOSL−EV15Aに直接出力する。接続ラインL0は、例えば、QSL−OD14Bから該当データをOSL−OD15Bに直接出力する。
OSL15は、データメモリ2A(M0)、接続ラインL0及びDSL16と接続され、データメモリ2Aの出力データ又は、接続ラインL0経由のQSL14の出力データをDSL16に出力する。OSL15は、EVEN周期側のOSL−EV15A及びODD周期側のOSL−OD15Bを有する。OSL−EV15Aは、データメモリ2A(M0)の出力データ又は、接続ラインL0経由のQSL−EV14Aの出力データをDSL16に出力する。OSL−OD15Bは、データメモリ2A(M1)の出力データ又は、接続ラインL0経由のQSL−OD14Bの出力データをDSL16に出力する。
第1データバス6Aは、コア3(C0,C1,C4,C5)及びMODQ−EV11Aと接続され、第2データバス6Bは、コア3(C2,C3,C6,C7)及びMODQ−OD11Bと接続される。また、DSL16は、OSL−EV15A及びOSL−OD15Bと接続され、OSL−EV15Aの出力データ又はOSL−OD15Bの出力データをデータバス6(第1データバス6A又は第2データバス6B)に出力する。
MIポート17は、コア3及びRSL20と接続され、当該コア3からのムーブイン要求を検出すると、リード(以下、単にRDと称する)を発行する。MIポート17は、コア3(C0〜C7)毎に配置され、8個のMIポート(MIP0〜MIP7)を有する。尚、RDは、コア3からのデータ読出要求に相当するパイプ命令である。
MOポート18は、コア3及びRSL20と接続され、当該コア3からのムーブアウト要求を検出すると、バイパスムーブアウト(以下、単にBPMOと称する)を発行する。MOポート18は、コア3(C0〜C7)毎に配置され、8個のMOポート18(MOP0〜MOP7)を有する。尚、BPMOは、WBDQ13に格納されたライトバックデータをMODQ11に格納するパイプ命令である。
MIバッファ19は、MAC4及びRSL20と接続され、当該MAC4への要求を出力すると共に、MAC4からの要求に応じてパイプ命令を発行する。MIバッファ19は、MAC4(MC0及びMC1)毎に配置される。尚、MIバッファ19のパイプ命令は、キャッシュメモリ2から該当データを消去要求するムーブアウトリプレイス(以下、単にMORPと称する)や、キャッシュメモリ2に該当データを登録要求するムーブイン(以下、単にMVINと称する)等である。
RSL20は、MIポート17、MOポート18、MIバッファ19及び制御パイプライン10と接続され、制御パイプライン10上の該当周期(EVEN又はODD周期)にパイプ命令を投入する。タグメモリ21は、制御パイプライン10及びデータメモリ2Aと接続され、データメモリ2A毎に配置され、データメモリ2Aの該当データのアドレスを管理する。尚、タグメモリ21は、例えば、キャッシュメモリ2の一部である。タグメモリ21は、制御パイプライン10上の該当周期に投入したパイプ命令に応じて該当データのアドレスを検索する。また、タグメモリ21は、データメモリ2Aだけでなく、コア3内部の図示せぬコアキャッシュメモリ毎に、該当データのアドレスを管理する。
尚、第2キャッシュ制御部5Bの構成についても、データメモリ2A(M2又はM3)を対象にした点で図2とは異なるものの、実質的な構成についてはほぼ同一であるので、その重複する構成及び動作の説明は省略する。
次に、コア3及び第1キャッシュ制御部5A間と、MAC4及び第1キャッシュ制御部5A間とのデータの流れについて説明する。図3は、コア3及び第1キャッシュ制御部5A間と、MAC4及び第1キャッシュ制御部5間とのデータの流れの一例を示す説明図である。図3に示すRSL20は、例えば、MIポート17からコア3(C0)のRDを検出した場合には、制御パイプライン10上の該当周期(EVEN周期又はODD周期)にコア3(C0)のRDをパイプ投入する。タグメモリ21は、制御パイプライン10上のRDに基づき、データメモリ2A(M0又はM1)内の該当データに対応するアドレスを検索する。
タグメモリ21は、当該タグメモリ21内に該当データのアドレスがある場合には、キャッシュヒットと判断し、該当データのアドレスをデータメモリ2Aに出力する。一方、タグメモリ21は、当該タグメモリ21内に該当データのアドレスがない場合には、キャッシュミスと判断し、キャッシュミスの該当データの転送要求をMIバッファ19に出力する。
更に、データメモリ2A(M0又はM1)は、キャッシュヒットの場合に、タグメモリ21内の該当データのアドレスに基づき、当該データメモリ2Aから該当データを読み出し、OSL15経由でDSL16に出力する。更に、DSL16は、第1データバス6A又は第2データバス6Bの内、要求元のコア3(C0)のデータ転送に用いるデータバスに該当データを出力する。
一方、MIバッファ19は、キャッシュミスの場合に、キャッシュミスした該当データの転送要求を検出すると、該当データをMIDQ12に転送すべく、転送要求をMAC4A(MC0又はMC1)に通知する。更に、MIバッファ19は、データメモリ2A内に該当データを登録する空き領域を確保すべく、MORPを発行する。
RSL20は、MORPを検出した場合には、制御パイプライン10上の該当周期にMORPをパイプ投入する。タグメモリ21は、制御パイプライン10上のMORPに基づき、タグメモリ21内からMORP対象のデータのアドレスを検索する。タグメモリ21は、MORP対象のアドレスがある、例えば、コアキャッシュメモリ内のアドレスがある場合には、このコア3(C0)に対してムーブアウト要求を通知する。
コア3(C0)は、ムーブアウト要求を検出すると、当該コアキャッシュメモリ内から該当ムーブアウトデータを読み出す。そして、コア3(C0)は、そのデータをライトバックデータとしてWBDQ13に格納した後、当該コア3(C0)に対応するMOポート18に応答ムーブアウト要求を通知する。
MOポート18は、応答ムーブアウト要求を検出すると、BPMOを発行する。RSL20は、BPMOを検出すると、制御パイプライン10上の該当周期にコア3(C0)のBPMOをパイプ投入する。タグメモリ21は、制御パイプライン10上のBPMOに基づき、MORP対象のデータのアドレスを当該タグメモリ21から消去し、WBDQ13のライトバックデータをDSL16経由でMODQ11内へ転送して格納する。更に、第1キャッシュ制御部5Aは、MODQ11に格納されたライトバックデータを主記憶装置のバンクメモリ(MM0又はMM1)に記憶すべく、MAC(MC0又はMC1)4Aに要求する。
MAC4A(MC0又はMC1)は、記憶要求を検出すると、主記憶装置への記憶準備が完了次第、MODQ11内のライトバックデータを読み出し、当該ライトバックデータを主記憶装置内のバンクメモリ(MM0又はMM1)に記憶する。その後、MIバッファ19は、MAC4(MC0又はMC1)からの該当データをMIDQ12に格納した後、MIDQ12に格納された該当データのデータメモリ2A(M0又はM1)への登録要求を検出すると、MVINを発行する。RSL20は、MVINを検出した場合には、制御パイプライン10上の該当周期にMVINをパイプ投入する。
タグメモリ21は、制御パイプライン10上のMVINに基づき、当該タグメモリ21内に該当データのアドレスを登録する。更に、データメモリ2A(M0又はM1)は、MIDQ12に格納された該当データを当該データメモリ2A(M0又はM1)に格納しながら、接続ラインL0経由で該当データを要求元のコア3(C0)に転送する。
一方で、データメモリ2A(M0又はM1)は、例えば、RD時にタグメモリ21内のコアキャッシュメモリにMORP対象のアドレスがなくても、当該データメモリ2A(M0又はM1)内にある場合には、該当データを読み出す。そして、データメモリ2A(M0又はM1)は、該当データを、QSL14及びDSL16経由でMODQ11に転送して格納する。更に、MODQ11は、該当データを格納すると、該当データをライトバックデータとして主記憶装置のバンクメモリ(MM0又はMM1)に記憶させるべく、MAC4A(MC0又はMC1)に要求する。
次に、実施の形態1のLSI1の動作について説明する。図4は、第1キャッシュ制御部5Aの制御パイプライン10のタイミング関係を示す説明図である。図4では、例えば、第1サイクル〜第20サイクルをEVEN周期及びODD周期に時分割した例であり、第1キャッシュ制御部5AはEVEN周期でデータメモリ2A(M0)にアクセスし、ODD周期でデータメモリ2A(M1)にアクセスする。
RSL20は、例えば、制御パイプライン10上の第1サイクル(EVEN周期)でコア3(C0)のRDをパイプ投入する。この場合、タグメモリ21は、第2サイクル(ODD周期)でアドレスを読み出すタグRDを行い、タグRD後の第9サイクル(EVEN周期)でアドレスを書き込むタグライト(以下、単にタグWRと称する)を行う。そして、データメモリ2A(M0)は、第8サイクル(ODD周期)から第11サイクルまでの期間で該当データを読み出し、第15サイクル(EVEN周期)から第18サイクルまでの期間で該当データを第1データバス6A経由で要求元コア3(C0)に転送する。
尚、データバス6上のコア3及びデータメモリ2A間の1キャッシュブロックのデータ転送には4サイクルを要する。従って、タグRD後の第3サイクルから第5サイクルまでの期間の3サイクル分は、第1データバス6Aを用いる他のパイプ投入を禁止する第1データバス6Aのバス共用禁止区間となると共に、EVEN周期のパイプ投入を禁止するパイプ投入禁止区間となる。つまり、データ転送にNサイクルを要する場合には、そのパイプ投入禁止区間及びバス共用禁止区間は、パイプ命令投入後の(N−1)サイクル分となる。
また、タグメモリ21のタグRDは第2サイクルのODD周期で行われるのに対し、タグメモリ21のタグWRは第9サイクルのEVEN周期で行われるので、タグRD及びタグWRの前後命令でEVEN/ODDが逆転している。従って、タグメモリ21では、タグRD及びタグWRの前後命令でアクセス周期が競合しないので、RD/WR同時にアクセス不可のシングルポートメモリでタグメモリ21を構成できる。また、タグメモリ21では、制御パイプライン10上でRD及びWRの2回のアクセスが可能であるのに対し、データメモリ2Aは、RD又はWR何れか1回しかアクセスできない。
また、RSL20は、例えば、制御パイプライン10上の第2サイクル(ODD周期)にコア3(C3)のRDをパイプ投入する。この場合、タグメモリ21は、第3サイクル(EVEN周期)でタグRDを行い、タグRD後の第10サイクル(ODD周期)でタグWRを行う。そして、データメモリ2A(M1)は、第9サイクル(EVEN周期)から第12サイクルまでの期間で該当データを読み出し、第16サイクル(ODD周期)から第19サイクルまでの期間で該当データを第2データバス6B経由で要求元コア3(C3)に転送する。また、タグRD後の第4サイクルから第6サイクルまでの期間の3サイクル分は、第2データバス6Bを用いる他のパイプ投入を禁止する第2データバス6Bのバス共用禁止区間となると共に、ODD周期のパイプ投入を禁止するパイプ投入禁止区間となる。
尚、図4では、データメモリ2Aから要求元コア3へのデータ転送を例に挙げて説明した。しかしながら、データバス6経由でWBDQ13からMODQ11へのライトバックデータ転送時でも、ライトバックデータのデータ転送には4サイクルを要するので、パイプ投入禁止区間及びバス共用禁止区間はBPMOパイプ投入後の3サイクル分となる。
次に、制御パイプライン10上のアクセス周期(EVEN周期又はODD周期)にパイプ命令を連続投入した場合の動作について説明する。図5は、実施の形態1の第1キャッシュ制御部5Aの制御パイプライン10のタイミング関係(パイプ投入禁止区間及びバス共用禁止区間経過後に同一データバス6を用いるパイプ命令が同一周期で連続投入した場合)を示す説明図である。
ここで、パイプ命令の連続投入とは、先行のパイプ命令を投入した後、先行のパイプ命令と同一周期のパイプ投入禁止区間及び同一データバス6のバス共用禁止区間経過直後のアクセス周期に後続のパイプ命令が投入した場合である。更に、同一データバス6を用いるパイプ命令とは、例えば、第1データバス6Aの場合には、コア3(C0)、コア3(C1)、コア3(C4)、コア3(C5)やMODQ−EV11Aをデータ転送先とするパイプ命令に相当する。また、第2データバス6Bの場合には、コア3(C2)、コア3(C3)、コア3(C6)、コア3(C7)やMODQ−OD11Bをデータ転送先とするパイプ命令に相当する。図5では、例えば、第1サイクル〜第20サイクルをEVEN周期及びODD周期に時分割した例であり、第1キャッシュ制御部5AはEVEN周期でデータメモリ2A(M0)にアクセスし、ODD周期でデータメモリ2A(M1)にアクセスする。
第1キャッシュ制御部5A内のMIポート17(MI0)は、例えば、コア3(C0)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20は、制御パイプライン10上の第1サイクル(EVEN周期)でコア3(C0)のRDをパイプ投入する。尚、RSL20は、コア3(C0)のRD投入後の第2サイクルから第4サイクルまでの期間の3サイクル分を、EVEN周期のパイプ投入禁止区間に設定すると共に、コア3(C0)と共用する第1データバス6Aのバス共用禁止区間に設定する。
第1キャッシュ制御部5A内のDSL16は、コア3(C0)のRD投入後の第9サイクル(EVEN周期)でデータメモリ2A(M0)からの該当データを要求元のコア3(C0)へ転送すべく、第1データバス6A上のデータ転送を開始する。第1データバス6Aは、第9サイクル(EVEN周期)から第12サイクルまでの期間の4サイクルでコア3(C0)の該当データを転送する。
また、MIポート17(MI3)は、例えば、コア3(C3)からデータメモリ2A(M1)へのデータ読出要求を検出すると、RDを発行する。RSL20は、制御パイプライン10上の第2サイクル(ODD周期)でRDをパイプ投入する。尚、RSL20は、コア3(C3)のRD投入後の第3サイクルから第5サイクルまでの期間の3サイクル分を、ODD周期のパイプ投入禁止区間に設定すると共に、第2データバス6Bのバス共用禁止区間に設定する。
DSL16は、コア3(C3)のRD投入後の第10サイクル(ODD周期)でデータメモリ2A(M1)からの該当データを要求元のコア3(C3)へ転送すべく、第2データバス6B上のデータ転送を開始する。第2データバス6Bは、第10サイクル(ODD周期)から第13サイクルまでの期間の4サイクルでコア3(C3)の該当データを転送する。
また、MIポート17(MI5)は、例えば、コア3(C5)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20は、EVEN周期のパイプ投入禁止区間経過後、かつ、第1データバス6Aのバス共用禁止区間経過後、制御パイプライン10上の第5サイクル(EVEN周期)でコア3(C5)のRDをパイプ投入する。尚、RSL20は、コア3(C5)のRD投入後の第6サイクルから第8サイクルまでの期間の3サイクル分を、EVEN周期のパイプ投入禁止区間に設定すると共に、第1データバス6Aのバス共用禁止区間に設定する。
DSL16は、コア3(C5)のRD投入後の第13サイクル(EVEN周期)でデータメモリ2A(M0)からの該当データを要求元のコア3(C5)へ転送すべく、第1データバス6A上のデータ転送を開始する。第1データバス6Aは、第13サイクル(EVEN周期)から第16サイクルまでの期間の4サイクルでコア3(C5)の該当データを転送する。
更に、MIポート17(MI6)は、例えば、コア3(C6)からデータメモリ2A(M1)へのデータ読出要求を検出すると、RDを発行する。RSL20は、ODD周期のパイプ投入禁止区間経過後、かつ、第2データバス6Bのバス共用禁止区間経過後、制御パイプライン10上の第6サイクル(ODD周期)でコア3(C6)のRDをパイプ投入する。尚、RSL20は、コア3(C6)のRD投入後の第7サイクルから第9サイクルまでの期間の3サイクル分を、ODD周期のパイプ投入禁止区間に設定すると共に、第2データバス6Bのバス共用禁止区間に設定する。
DSL16は、コア3(C6)のRD投入後の第14サイクル(ODD周期)でデータメモリ2A(M1)からの該当データを要求元のコア3(C6)へ転送すべく、第2データバス6B上のデータ転送を開始する。第2データバス6Bは、第14サイクル(ODD周期)から第17サイクルまでの期間の4サイクルでコア3(C6)の該当データを転送する。
また、MIポート17(MI1)は、例えば、コア3(C1)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20は、EVEN周期のパイプ投入禁止区間経過後、かつ、第1データバス6Aのバス共用禁止区間経過後、制御パイプライン10上の第9サイクル(EVEN周期)でコア3(C1)のRDをパイプ投入する。尚、RSL20は、コア3(C1)のRD投入後の第10サイクルから第12サイクルまでの期間の3サイクル分を、EVEN周期のパイプ投入禁止区間に設定すると共に、第1データバス6Aのバス共用禁止区間に設定する。
DSL16は、コア3(C1)のRD投入後の第17サイクル(EVEN周期)でデータメモリ2A(M0)からの該当データを要求元のコア3(C1)へ転送すべく、第1データバス6A上のデータ転送を開始する。第1データバス6Aは、第17サイクル(EVEN周期)から第20サイクルまでの期間の4サイクルでコア3(C1)の該当データを転送する。
また、MOポート18(MO3)は、例えば、WBDQ−OD13BからMODQ―OD11Bへのムーブアウト要求をコア3(C3)から検出すると、バイパスムーブアウト(以下、単にBPMOと称する)を発行する。RSL20は、ODD周期のパイプ投入禁止区間経過後、かつ、第2データバス6Bのバス共用禁止区間経過後、WBDQ−OD13Bへアクセスする制御パイプライン10上の第10サイクル(ODD周期)でコア3(C3)のBPMOをパイプ投入する。尚、RSL20は、コア3(C3)のBPMO投入後の第11サイクルから第13サイクルまでの期間の3サイクル分をODD周期のパイプ投入禁止区間に設定すると共に、第2データバス6Bのバス共用禁止区間に設定する。
DSL16は、BPMO投入後の第18サイクル(ODD周期)でWBDQ−OD13Bからの該当データをMODQ−OD11Bへ転送すべく、第2データバス6B上のデータ転送を開始する。第2データバス6Bは、第18サイクル(ODD周期)から第21サイクルまでの期間の4サイクルで該当データをMODQ−OD11Bに転送する。
その結果、第1データバス6Aでは、4サイクル毎のEVEN周期で連続的にパイプ命令を投入した場合には、データメモリ2A(M0)から該当データを間断なく、コア3(C0),コア3(C5)及びコア3(C1)の該当データ順に連続転送できる。第2データバス6Bでは、4サイクル毎のODD周期で連続的にパイプ命令を投入した場合、データメモリ2A(M1)及びWBDQ−OD13Bから該当データを間断なく、コア3(C3)、コア3(C6)及びMODQ−OD11Bの該当データ順に連続転送できる。
上述したように実施の形態1では、複数のコア3が共有する主記憶装置を複数のバンクメモリに分割し、これらバンクメモリに対応付けてキャッシュメモリ2を複数のデータメモリ2Aに分割する。その結果、複数のデータメモリ2Aに対するコア3側のアクセス効率が大幅に向上すると共に、複数のデータメモリ2Aに対するコア3側のデータ取得率が大幅に向上する。
更に、実施の形態1では、複数のデータメモリ2A(M0及びM1:M2及びM3)のアクセス制御を1本の制御パイプライン10で共用し、制御パイプライン10上を2個のデータメモリ2A(M0及びM1:M2及びM3)のアクセス周期に時分割する。その結果、データメモリ2A毎に制御パイプライン10を準備する必要もなくなるので、部品個数の削減及び制御の簡素化を図ることができる。
更に、実施の形態1では、キャッシュ制御部5を第1キャッシュ制御部5A及び第2キャッシュ制御部5Bに分割し、これら第1キャッシュ制御部5A及び第2キャッシュ制御部5Bでデータメモリ2Aを分担制御する。すなわち、第1キャッシュ制御部5Aでデータメモリ2A(M0及びM1)を分担制御すると共に、第2キャッシュ制御部5Bでデータメモリ2A(M2及びM3)を分担制御する。その結果、第1キャッシュ制御部5A及び第2キャッシュ制御部5Bの2台に制御負担を分散化することで、処理効率の向上を図ることができる。
実施の形態1では、パイプ投入禁止区間及びバス共用禁止区間経過後、先行パイプ命令と同一のデータバス6を用いる後続のパイプ命令を先行パイプ命令と同一周期で連続投入した場合、パイプ命令に応じたデータを間断なく、データバス6上に連続転送できる。その結果、複雑なバス構成を要することなく、データバス6上で安定したデータ転送効率を確保できる。例えば、第1データバス6Aを用いる後続のパイプ命令を同一周期で連続投入した場合には、パイプ命令に応じたデータを間断なく連続転送することで、第1データバス6A上で安定したデータ転送効率を確保できる。同様に、第2データバス6Bを用いる後続のパイプ命令を同一周期で連続投入した場合には、パイプ命令に応じたデータを間断なく連続転送することで、第2データバス6B上で安定したデータ転送効率を確保できる。
ところで、先行パイプ命令のパイプ投入禁止区間及びバス共用禁止区間経過後に、先行パイプ命令と同一のデータバス6を用いる後続のパイプ命令が同一周期で連続投入した場合はパイプ命令に対応したデータを連続転送できる。そこで、次に、先行パイプ命令のパイプ投入禁止区間及びバス共用禁止区間経過後に、先行パイプ命令と同一のデータバス6を用いる後続のパイプ命令が異なる周期で連続投入した場合の動作について説明する。図6は、第1キャッシュ制御部5Aの制御パイプライン10のタイミング関係(パイプ投入禁止区間及びバス共用禁止区間経過後に、同一データバス6を用いるパイプ命令が異なる周期で連続投入した場合)を示す説明図である。図6では、例えば、第1サイクル〜第20サイクルをEVEN周期及びODD周期に時分割した例であり、第1キャッシュ制御部5Aは、EVEN周期でデータメモリ2A(M0)にアクセスし、ODD周期でデータメモリ2A(M1)にアクセスする。
MIポート17(MI0)は、例えば、コア3(C0)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20は、制御パイプライン10上の第1サイクル(EVEN周期)でコア3(C0)のRDをパイプ投入する。尚、RSL20は、コア3(C0)のRD投入後の第2サイクルから第4サイクルまでの期間の3サイクル分を、EVEN周期のパイプ投入禁止区間に設定すると共に、第1データバス6Aのバス共用禁止区間に設定する。
DSL16は、コア3(C0)のRD投入後の第9サイクル(EVEN周期)でデータメモリ2A(M0)からの該当データを要求元のコア3(C0)へ転送すべく、第1データバス6A上のデータ転送を開始する。第1データバス6Aは、第9サイクル(EVEN周期)から第12サイクルまでの期間の4サイクルでコア3(C0)の該当データを転送する。
また、MIポート17(MI3)は、例えば、コア3(C3)からデータメモリ2A(M1)へのデータ読出要求を検出すると、RDを発行する。RSL20は、制御パイプライン10上の第2サイクル(ODD周期)でコア3(C3)のRDをパイプ投入する。尚、RSL20は、コア3(C3)のRD投入後の第3サイクルから第5サイクルまでの期間の3サイクル分を、ODD周期のパイプ投入禁止区間に設定すると共に、第2データバス6Bのバス共用禁止区間に設定する。
DSL16は、コア3(C3)のRD投入後の第10サイクル(ODD周期)でデータメモリ2A(M1)からの該当データを要求元のコア3(C3)へ転送すべく、第2データバス6B上のデータ転送を開始する。第2データバス6Bは、第10サイクル(ODD周期)から第13サイクルまでの期間の4サイクルでコア3(C3)の該当データを転送する。
また、MIポート17(MI7)は、例えば、コア3(C7)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20は、EVEN周期のパイプ投入禁止区間経過後、本来、制御パイプライン10上の第5サイクル(EVEN周期)でコア3(C7)のRDをパイプ投入する。しかし、RSL20は、第5サイクル(EVEN周期)が第2データバス6Bのバス共用禁止区間(第3サイクル〜第5サイクル)内にあるので、第2データバス6B上のコア3(C3)の先行データ及びコア3(C7)の後続データが第12サイクルで干渉する。そこで、RSL20では、第2データバス6Bのバス共用禁止区間(第3サイクル〜第5サイクル)に基づき、第5サイクル(EVEN周期)でのコア3(C7)のRDのパイプ投入を禁止し、次の第7サイクル(EVEN周期)までパイプ投入を待機する。
また、MIポート17(MI4)は、例えば、コア3(C4)からデータメモリ2A(M1)へのデータ読出要求を検出すると、RDを発行する。RSL20は、ODD周期のパイプ投入禁止区間経過後、かつ第1データバス6Aのバス共用禁止区間経過後、制御パイプライン10上の第6サイクル(ODD周期)でコア3(C4)のRDをパイプ投入する。尚、RSL20は、コア3(C4)のRD投入後の第7サイクルから第9サイクルまでの期間の3サイクル分を、ODD周期のパイプ投入禁止区間に設定すると共に、第1データバス6Aのバス共用禁止区間に設定する。
DSL16は、コア3(C4)のRD投入後の第14サイクル(ODD周期)でデータメモリ2A(M1)からの該当データを要求元のコア3(C4)へ転送すべく、第1データバス6A上のデータ転送を開始する。第1データバス6Aは、第14サイクル(ODD周期)から第17サイクルまでの期間の4サイクルでコア3(C4)の該当データを転送する。その結果、同一の第1データバス6Aを用いるパイプ命令が先行のパイプ命令と異なるODD周期で連続投入したことで、第1データバス6A上のコア3(C0)の先行データ及びコア3(C4)の後続データ間の第13サイクルでは1サイクル分の間断が生じる。
また、RSL20は、EVEN周期のパイプ投入禁止区間経過後、かつ第2データバス6Bのバス共用禁止区間経過後、制御パイプライン10上の第7サイクル(EVEN周期)に待機中のコア3(C7)のRDをパイプ投入する。尚、RSL20は、コア3(C7)のRD投入後の第8サイクルから第10サイクルまでの期間の3サイクル分を、EVEN周期のパイプ投入禁止区間に設定すると共に、第2データバス6Bのバス共用禁止区間に設定する。
この際、コア3(C7)のRDのパイプ投入は、先行のパイプ命令と同一の第2データバス6Bを用いて先行のパイプ命令と異なるEVEN周期で検出されたので、1サイクル遅延する。DSL16は、コア3(C7)のRD投入後の第15サイクル(EVEN周期)でデータメモリ2A(M0)からの該当データを要求元のコア3(C7)へ転送すべく、第2データバス6B上のデータ転送を開始する。第2データバス6Bは、第15サイクル(EVEN周期)から第18サイクルまでの期間の4サイクルでコア3(C7)の該当データを転送する。その結果、同一の第2データバス6Bを用いるパイプ命令が先行のパイプ命令と異なるEVEN周期で連続投入したことで、第2データバス6B上のコア3(C3)のデータ及びコア3(C7)のデータ間の第14サイクルでは1サイクル分の間断が生じる。
また、MOポート18(MO3)は、例えば、WBDQ−OD13BからMODQ−OD11Bへのムーブアウト要求をコア3(C3)から検出すると、BPMOを発行する。RSL20は、ODD周期のパイプ投入禁止区間経過後、本来、制御パイプライン10上の第10サイクル(ODD周期)でコア3(C3)のBPMOをパイプ投入する。しかし、RSL20は、第10サイクル(ODD周期)が第2データバス6Bのバス共用禁止区間(第8サイクル〜第10サイクル)内にあるので、第2データバス6B上のコア3(C7)及びMODQ−OD11Bのデータが第18サイクルで干渉する。そこで、RSL20では、第2データバス6Bのバス共用禁止区間(第8サイクル〜第10サイクル)に基づき、第10サイクル(ODD周期)でのコア3(C3)のBPMOのパイプ投入を禁止し、次の第12サイクル(ODD周期)までパイプ投入を待機する。
また、MIポート17(MI1)は、例えば、コア3(C1)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20は、EVEN周期のパイプ投入禁止区間経過後、かつ、第1データバス6Aのバス共用禁止区間経過後、制御パイプライン10上の第11サイクル(EVEN周期)でコア3(C1)のRDをパイプ投入する。尚、RSL20は、コア3(C1)のRD投入後の第12サイクルから第14サイクルまでの期間の3サイクル分を、EVEN周期のパイプ投入禁止区間に設定すると共に、第1データバス6Aのバス共用禁止区間に設定する。
DSL16は、コア3(C1)のRD投入後の第19サイクル(EVEN周期)でデータメモリ2A(M0)からの該当データを要求元のコア3(C1)へ転送すべく、第1データバス6A上のデータ転送を開始する。第1データバス6Aは、第19サイクル(EVEN周期)から第22サイクルまでの期間の4サイクルでコア3(C1)の該当データを転送する。その結果、同一の第1データバス6Aを用いるパイプ命令が先行のパイプ命令と異なるEVEN周期で連続投入したことで、第1データバス6A上のコア3(C4)のデータ及びコア3(C1)のデータ間の第18サイクルでは1サイクル分の間断が生じる。
また、RSL20は、ODD周期のバス共用禁止区間経過後、かつ、第2データバス6Bのバス共用禁止区間経過後、制御パイプライン10上の第12サイクルのODD周期に待機中のコア3(C3)のBPMOをパイプ投入する。尚、RSL20は、コア3(C3)のBPMO投入後の第13サイクルから第15サイクルまでの期間の3サイクル分を、ODD周期のパイプ投入禁止区間に設定すると共に、第2データバス6Bのバス共用禁止区間に設定する。
この際、コア3(C3)のBPMOのパイプ投入は、先行のパイプ命令と同一の第2データバス6Bを用いて先行のパイプ命令と異なるODD周期で検出されたので、1サイクル遅延する。DSL16は、コア3(C3)のBPMO投入後の第20サイクル(ODD周期)でWBDQ−OD13Bからの該当データをMODQ−OD11Bへ転送すべく、第2データバス6B上のデータ転送を開始する。第2データバス6Bは、第20サイクル(ODD周期)から第23サイクルまでの期間の4サイクルで該当データをMODQ−OD18Bに転送する。その結果、同一の第2データバス6Bを用いるパイプ命令が先行のパイプ命令と異なるODD周期で連続投入したことで、第2データバス6B上のコア3(C7)のデータ及びMODQ−OD11Bのデータ間の第19サイクルでは1サイクル分の間断が生じる。
つまり、先行パイプ命令と同一のデータバス6を用いる後続のパイプ命令が先行パイプ命令と異なる周期で連続投入した場合には、同一データバス6上の先行パイプ命令のデータ及び後続パイプ命令のデータ間に1サイクル分の間断が生じる。従って、データバス6上のデータ転送効率が低下してしまう。そこで、このような事態に対処すべく、データバス6上で安定したデータ転送効率を確保できるLSIにつき、実施の形態2として、以下に説明する。
[実施の形態2]
図7は、実施の形態2のLSIの構成を示すブロック図である。尚、実施の形態1のLSI1と同一の構成については同一符号を付すことで、その詳細な説明は省略する。図7に示すLSI1Aは、キャッシュメモリ2、コア3、メモリアクセスコントローラ(以下、単にMACと称する)4、キャッシュ制御部50及びデータバス6を有する。キャッシュメモリ2は、コア3、MAC4、キャッシュ制御部50及びデータバス6と接続され、図示せぬ主記憶装置に格納した、コア3の演算処理に使用するデータを一時記憶する。
また、キャッシュメモリ2は、主記憶装置が、例えば、4個のバンクメモリ(MM0〜MM1)に分割された場合に、これら各バンクメモリ(MM0〜MM3)に対応付けて、4個のデータメモリ2A(M0〜M3)に分割される。尚、キャッシュメモリ2は、例えば、RAM等である。コア3は、例えば、データバス6及びキャッシュ制御部50と接続され、キャッシュメモリ2内のデータに基づき各種演算処理を実行する。尚、コア3は、例えば、8個のコア3(C0〜C7)を有する。
MAC4は、キャッシュ制御部50と接続され、バンクメモリ(MM0〜MM3)を制御する。また、MAC4は、各バンクメモリ(MM0〜MM3)に対応付けて4個のMAC4A(MC0〜MC4)に分割されている。尚、MAC4は、例えば、MC0の場合には、データメモリ2A(M0)に対応付けたバンクメモリ(MM0)を制御し、MC3の場合には、データメモリ2A(M3)に対応付けたバンクメモリ(MM3)を制御する。
キャッシュ制御部50は、コア3、MAC4、データバス6及び主記憶装置と接続され、その内部のデータ転送等を制御する。尚、LSI1Aは、例えば、8個のコア3(C0〜C7)、4個のデータメモリ2A(M0〜M3)及び4個のMAC4A(MC0〜MC3)を基板外周縁上に配置し、キャッシュ制御部50を基板中央に配置する。
更に、キャッシュ制御部50は、第1キャッシュ制御部50A及び第2キャッシュ制御部50Bを有する。第1キャッシュ制御部50Aは、データメモリ2A(M0及びM1)及びMAC4A(MC0及びMC1)を制御する。また。第2キャッシュ制御部50Bは、データメモリ2A(M2及びM3)及びMAC4A(MC2及びMC3)を制御する。
データバス6は、複数のコア3及びデータメモリ2A間でデータを転送する。例えば、LSI1Aは、第1データバス6A及び第2データバス6Bを有する。第1データバス6Aは、例えば、データメモリ2Aから複数のコア3(C0,C1,C4及びC5)へデータを転送する。第2データバス6Bは、例えば、データメモリ2Aから複数のコア3(C2,C3,C6及びC7)へデータを転送する。
第1キャッシュ制御部50Aは、命令実行部51、命令投入部52及びタイミング制御部53を有する。命令実行部51は、データメモリ2A毎に時分割されたアクセス周期に従って各データメモリ2Aにアクセスし、要求元コア3からデータメモリ2Aへのアクセス命令を実行する。尚、命令実行部51は、例えば、データメモリ2A(M0)にアクセスする場合には、EVEN周期でアクセス命令を実行すると共に、データメモリ2A(M1)にアクセスする場合には、ODD周期でアクセス命令を実行する。また、命令実行部51は、要求元コア3からデータメモリ2Aへのアクセス命令を実行すると、データメモリ2Aから読み出したデータを要求元コア3に対応するデータバス6に転送する。
また、命令投入部52は、要求元コア3からデータメモリ2Aへのアクセス命令を受け付け、当該アクセス命令を命令実行部51に投入する。更に、命令投入部52は、要求元コア3からのアクセス命令を受け付け、先行するアクセス命令の実行に要する期間内において同一のデータメモリ2Aに対する後続のアクセス命令の投入を禁止する。尚、先行するアクセス命令の実行に要する期間とは、例えば、データ読み出し、データ書き込みやデータ転送等のアクセス命令の実行に要する期間に相当する。
更に、命令投入部52は、先行するアクセス命令の実行に要する期間より短い所定の期間内において先行するアクセス命令と同一のデータバス6を用いる後続のアクセス命令の投入を禁止する。尚、先行するアクセス命令と同一のデータバス6を用いる後続のアクセス命令は、例えば、先行するアクセス命令で読み出したデータを転送する同一のデータバス6を用いる後続のアクセス命令に相当するものである。
また、タイミング制御部53は、先行するアクセス命令の実行に要する期間内で同一データバス6を用いる後続のアクセス命令が投入された場合、後続のアクセス命令の後続データのデータバス6A上の転送開始タイミングを制御する。更に、タイミング制御部53は、後続のアクセス命令に応じてデータメモリ2Aから読み出された後続データをデータバス6へ転送開始するタイミングを遅延させるように、命令実行部51を制御する。尚、後続データをデータバス6へ転送開始するタイミングとは、例えば、後続データをデータバス6上に載せるタイミングに相当する。
タイミング制御部53は、先行するアクセス命令に応じたデータをデータバス6上に転送完了した直後、後続データの転送開始タイミングを遅延して同一データバス6上に後続データの転送動作が開始すべく、命令実行部51を制御する。その結果、同一データバス6上では、先行データ及び後続データを連続転送できる。
従って、実施の形態2では、先行アクセス命令の実行に要する期間内で同一のデータバス6を用いる後続アクセス命令が投入された場合、後続のアクセス命令に応じてデータメモリ2Aから読み出されたデータをデータバス6へ転送開始するタイミングを遅延させた。その結果、同一データバス6上では、先行データ及び後続データ間でデータ干渉やデータ間断が生じることなく、連続転送できる。
更に、実施の形態2では、バス構成を複雑化することなく、複数のデータメモリ2A及び複数のコア3間のデータバス6上で安定したデータ転送効率を確保できる。
[実施の形態3]
以下、図面に基づき実施の形態3のLSIについて詳細に説明する。図8は、実施の形態3のLSIの構成を示すブロック図である。図8に示すLSI1Bは、キャッシュメモリ2、コア3、メモリアクセスコントローラ(以下、単にMACと称する)4、キャッシュ制御部500及びデータバス6を有する。キャッシュメモリ2は、コア3、MAC4、キャッシュ制御部500及びデータバス6と接続され、図示せぬ主記憶装置に格納した、コア3の演算処理に使用するデータを一時記憶する。
また、キャッシュメモリ2は、主記憶装置が、例えば、4個のバンクメモリ(MM0〜MM1)に分割された場合に、これら各バンクメモリ(MM0〜MM3)に対応付けて、4個のデータメモリ2A(M0〜M3)に分割される。尚、キャッシュメモリ2は、例えば、ランダムアクセスメモリ(以下、単にRAMと称する)等である。コア3は、例えば、データバス6及びキャッシュ制御部500と接続され、キャッシュメモリ2内のデータに基づき各種演算処理を実行する。尚、コア3は、例えば、8個のコア3(C0〜C7)を有する。
MAC4は、キャッシュ制御部500と接続され、バンクメモリ(MM0〜MM3)を制御する。また、MAC4は、各バンクメモリ(MM0〜MM3)に対応付けて4個のMAC4A(MC0〜MC4)に分割されている。尚、MAC4は、例えば、MC0の場合には、データメモリ2A(M0)に対応付けたバンクメモリ(MM0)を制御し、MC3の場合には、データメモリ2A(M3)に対応付けたバンクメモリ(MM3)を制御する。
キャッシュ制御部500は、コア3、MAC4、データバス6及び主記憶装置と接続され、その内部のデータ転送等を制御する。尚、LSI1Bは、例えば、8個のコア3(C0〜C7)、4個のデータメモリ2A(M0〜M3)及び4個のMAC4A(MC0〜MC3)を基板外周縁上に配置し、キャッシュ制御部500を基板中央に配置する。
更に、キャッシュ制御部500は、第1キャッシュ制御部500A及び第2キャッシュ制御部500Bを有する。第1キャッシュ制御部500Aは、データメモリ2A(M0及びM1)及びMAC4A(MC0及びMC1)を制御する。また。第2キャッシュ制御部500Bは、データメモリ2A(M2及びM3)及びMAC4A(MC2及びMC3)を制御する。
データバス6は、複数のコア3及びデータメモリ2A間でデータを転送する。例えば、LSI1は、第1データバス6A及び第2データバス6Bを有する。第1データバス6Aは、例えば、データメモリ2Aから複数のコア3(C0,C1,C4及びC5)へデータを転送する。第2データバス6Bは、例えば、データメモリ2Aから複数のコア3(C2,C3,C6及びC7)へデータを転送する。
次に、第1キャッシュ制御部500Aの構成について説明する。図9は、実施の形態3の第1キャッシュ制御部500Aの構成を示すブロック図である。図9に示す第1キャッシュ制御部500Aは、制御パイプライン10B、ムーブアウトデータキュー(以下、単にMODQと称する)11及びムーブインデータキュー(以下、単にMIDQと称する)12を有する。更に、第1キャッシュ制御部500Aは、ライトバックデータキュー(以下、単にWBDQと称する)13、キューセレクタ(以下、単にQSLと称する)14及び接続ラインL0を有する。更に、第1キャッシュ制御部500Aは、出力セレクタ(以下、単にOSLと称する)15及びデータセレクタ(以下、単にDSLと称する)16を有する。更に、第1キャッシュ制御部500Aは、ムーブインポート(以下、単にMIポートと称する)17、ムーブアウトポート(以下、単にMOポートと称する)18及びムーブインバッファ(以下、単にMIバッファと称する)19を有する。更に、第1キャッシュ制御部500Aは、要求セレクタ(以下、単にRSLと称する)20B、タグメモリ21、遅延フラグ設定部22及び遅延レジスタ(以下、単にLATE−REGと称する)23を有する。
制御パイプライン10Bは、データメモリ2A(M0及びM1)毎に、例えば、EVEN周期及びODD周期の2サイクル周期でパイプ命令の投入を受け付ける。データメモリ2A(M0)にアクセスする場合はEVEN周期を使用し、データメモリ2A(M1)にアクセスする場合はODD周期を使用する。
MODQ11は、データバス6及びMAC4と接続され、ムーブアウトデータを格納する。MODQ11は、EVEN周期側のMODQ−EV11A及びODD周期側のMODQ−OD11Bを有し、MODQ−EV11Aは第1データバス6Aと接続され、MODQ−OD11Bは第2データバス6Bと接続される。尚、ムーブアウトデータは、キャッシュメモリ2から消去するデータである。
MIDQ12は、QSL14及びMAC4と接続され、ムーブインデータを格納する。MIDQ12は、EVEN周期側のMIDQ−EV12A及びODD周期側のMIDQ−OD12Bを有し、MIDQ−EV12A及びMIDQ−OD12Bは、MAC4A(MC0)及び(MC1)と接続される。尚、ムーブインデータは、キャッシュメモリ2に新規登録するデータである。
WBDQ13は、コア3及びQSL14と接続され、ライトバックデータを格納する。WBDQ13は、EVEN周期側のWBDQ−EV13A及びODD周期側のWBDQ−OD13Bを有する。尚、ライトバックデータは、コア3内部の図示せぬキャッシュメモリに登録済みのデータをキャッシュメモリ2又は主記憶装置に戻すデータである。
QSL14は、データメモリ2A、WBDQ13、MIDQ12及び接続ラインL0と接続され、WBDQ13の出力データ又はMIDQ12の出力データをデータメモリ2A及び接続ラインL0に出力する。QSL14は、EVEN周期側のQSL−EV14A及びODD周期側のQSL−OD14Bを有する。QSL−EV14Aは、WBDQ−EV13A又はMIDQ−EV12Aの出力データをデータメモリ2A(M0)及び接続ラインL0に出力する。QSL−OD14Bは、WBDQ−OD13Bの出力データ又はMIDQ−OD12Bの出力データをデータメモリ2A(M1)及び接続ラインL0に出力する。
接続ラインL0は、QSL14及びOSL15と接続され、例えば、QSL−EV14A及びOSL−EV15A間、又はQSL−OD14B及びOSL−OD15B間を直接接続する伝送線に相当する。接続ラインL0は、例えば、QSL−EV14Aから該当データをOSL−EV15Aに直接出力する。接続ラインL0は、例えば、QSL−OD14Bから該当データをOSL−OD15Bに直接出力する。
OSL15は、データメモリ2A(M0)、接続ラインL0、DSL16及びLATE−REG23と接続され、データメモリ2Aの出力データ又は、接続ラインL0経由のQSL14の出力データをDSL16に出力する。OSL15は、EVEN周期側のOSL−EV15A及びODD周期側のOSL−OD15Bを有する。OSL−EV15Aは、データメモリ2A(M0)の出力データをDSL16又はLATE−REG23Aに出力する。更に、OSL−EV15Aは、接続ラインL0経由のQSL−EV14Aの出力データをDSL16又はLATE−REG23Aに出力する。OSL−OD15Bは、データメモリ2A(M1)の出力データをDSL16又はLATE−REG23Bに出力する。更に、OSL−OD15Bは、接続ラインL0経由のQSL−OD14Bの出力データをDSL16又はLATE−REG23Bに出力する。
また、第1データバス6Aは、コア3(C0,C1,C4,C5)及びMODQ−EV11Aと接続され、第2データバス6Bは、コア3(C2,C3,C6,C7)及びMODQ−OD11Bと接続される。また、DSL16は、OSL15及びLATE−REG23と接続され、OSL−EV15A、OSL−OD15B、LATE−REG23A及びLATE−REG23Bの出力データをデータバス6(第1データバス6A又は第2データバス6B)に出力する。
MIポート17は、コア3及びRSL20Bと接続され、当該コア3からのムーブイン要求を検出すると、リード(以下、単にRDと称する)を発行する。MIポート17は、コア3(C0〜C7)毎に配置され、8個のMIポート(MIP0〜MIP7)を有する。尚、RDは、コア3からのデータ読出要求に相当するパイプ命令である。
MOポート18は、コア3及びRSL20Bと接続され、当該コア3からのムーブアウト要求を検出すると、BPMOを発行する。MOポート18は、コア3(C0〜C7)毎に配置され、8個のMOポート18(MOP0〜MOP7)を有する。尚、BPMOは、WBDQ13に格納されたライトバックデータをMODQ11に格納するパイプ命令である。
MIバッファ19は、MAC4及びRSL20Bと接続され、当該MAC4への要求を出力すると共に、MAC4からの要求に応じてパイプ命令を発行する。MIバッファ19は、MAC4(MC0及びMC1)毎に配置される。尚、MIバッファ19のパイプ命令は、キャッシュメモリ2から該当データを消去要求するムーブアウトリプレイス(以下、単にMORPと称する)や、キャッシュメモリ2に該当データを登録要求するムーブイン(以下、単にMVINと称する)等である。
RSL20Bは、MIポート17、MOポート18、MIバッファ19及び制御パイプライン10Bと接続され、制御パイプライン10B上の該当周期(EVEN又はODD周期)にパイプ命令を投入する。更に、RSL20Bは、制御パイプライン10B上のEVEN周期又はODD周期でコア3のパイプ命令を投入した場合には、当該周期のパイプ投入後の3サイクル分を同一周期でのパイプ投入禁止区間とする。尚、パイプ投入禁止区間は、先行するパイプ命令の実行に要する期間、すなわちパイプ投入後の3サイクル分に相当し、先行するパイプ命令と同一周期、すなわち同一データメモリ2Aへの後続のパイプ命令の投入を禁止する区間である。
更に、RSL20Bは、ある周期でコア3のパイプ投入後の2サイクル分を当該コア3が用いるデータバス6の共用を禁止するバス共用禁止区間とする。尚、バス共用禁止区間は、先行するパイプ命令の実行に要する期間より短い所定の期間、すなわちパイプ投入後の2サイクル分に相当し、先行するパイプ命令と同一のデータバス6を用いる後続のパイプ命令の投入を禁止する区間である。
タグメモリ21は、制御パイプライン10B及びデータメモリ2Aと接続され、データメモリ2A毎に配置され、データメモリ2Aの該当データのアドレスを管理する。尚、タグメモリ21は、例えば、キャッシュメモリ2の一部である。タグメモリ21は、制御パイプライン10B上の該当周期に投入したパイプ命令に応じて該当データのアドレスを検索する。また、タグメモリ21は、データメモリ2Aだけでなく、コア3内部の図示せぬコアキャッシュメモリ毎に、該当データのアドレスを管理する。
また、遅延フラグ設定部22は、同一データバス6を用いるパイプ命令が異なる周期で連続投入した場合には、そのパイプ命令に対応付けて遅延フラグを設定する。尚、同一データバス6を用いるパイプ命令が異なる周期で連続投入した場合とは、先行パイプ命令の実行に要するパイプ投入禁止期間内に先行パイプ命令と同一のデータバス6を用いる後続パイプ命令が先行パイプ命令と異なる周期で投入された場合に相当する。
遅延フラグ設定部22は、例えば、ODD周期でコア3(C3)のパイプ投入後の3サイクル目、すなわちEVEN周期で第2データバス6Bを共用するコア3(C7)のパイプ投入を検出した場合には、そのパイプ命令に対応付けて遅延フラグを設定する。
RSL20Bは、コア3のパイプ命令に対応付けて遅延フラグを設定した場合には、そのパイプ命令のバス共用禁止区間をパイプ投入後の2サイクル分から3サイクル分に延長設定する。尚、延長設定したバス共用禁止区間は、後続のパイプ命令の実行に要する期間内において当該パイプ命令と同一のデータバス6を用いるパイプ命令の投入を禁止する区間に相当する。RSL20Bは、例えば、コア3(C7)のパイプ命令に対応付けて遅延フラグを設定した場合には、コア3(C7)と共用する第2データバス6Bのバス共用禁止区間を2サイクル分から3サイクル分に設定変更する。
LATE−REG23は、OSL15及びDSL16と接続され、データバス6上に転送する転送タイミングを、例えば1サイクル遅延出力する。LATE−REG23は、EVEN周期側のLATE−REG23A及びODD周期側のLATE−RGE23Bを有する。LATE−REG23Aは、EVEN周期のパイプ命令に対応付けた遅延フラグに基づき、OSL−EV15Aの出力データのデータバス6上の転送タイミングを1サイクル遅延し、その出力データをDSL16に出力する。更に、LATE−REG23Bは、ODD周期のパイプ命令に対応付けた遅延フラグに基づき、OSL−OD15Bの出力データのデータバス6上の転送タイミングを1サイクル遅延し、その出力データをDSL16に出力する。
尚、第2キャッシュ制御部500Bの構成についても、データメモリ2A(M2又はM3)を対象にした点で図9とは異なるものの、実質的な構成についてはほぼ同一であるので、その重複する構成及び動作の説明は省略する。
次に、コア3及び第1キャッシュ制御部500A間と、MAC4及び第1キャッシュ制御部500A間とのデータの流れについて説明する。図10は、コア3及び第1キャッシュ制御部500A間と、MAC4及び第1キャッシュ制御部500A間とのデータの流れの一例を示す説明図である。図10に示すRSL20Bは、例えば、MIポート17からコア3(C0)のRDを検出した場合には、制御パイプライン10B上の該当周期(EVEN周期又はODD周期)にコア3(C0)のRDをパイプ投入する。タグメモリ21は、制御パイプライン10B上のRDに基づき、データメモリ2A(M0又はM1)内の該当データに対応するアドレスを検索する。
タグメモリ21は、当該タグメモリ21内に該当データのアドレスがある場合には、キャッシュヒットと判断し、該当データのアドレスをデータメモリ2Aに出力する。一方、タグメモリ21は、当該タグメモリ21内に該当データのアドレスがない場合には、キャッシュミスと判断し、キャッシュミスの該当データの転送要求をMIバッファ19に出力する。
更に、データメモリ2A(M0又はM1)は、キャッシュヒットの場合に、タグメモリ21内の該当データのアドレスに基づき、当該データメモリ2Aから該当データを読み出し、読み出した該当データをOSL15経由でDSL16に出力する。更に、DSL16は、第1データバス6A又は第2データバス6Bの内、要求元のコア3(C0)のデータ転送に使用するデータバス6に該当データを出力する。
一方、MIバッファ19は、キャッシュミスの場合に、キャッシュミスした該当データの転送要求を検出すると、該当データをMIDQ12に転送する転送要求をMAC4A(MC0又はMC1)に通知する。更に、MIバッファ19は、データメモリ2A内に該当データを登録する空き領域を確保すべく、MORPを発行する。
RSL20は、MORPを検出した場合には、制御パイプライン10B上の該当周期にMORPをパイプ投入する。タグメモリ21は、制御パイプライン10B上のMORPに基づき、タグメモリ21内からMORP対象のデータのアドレスを検索する。タグメモリ21は、MORP対象のアドレスがある、例えば、コアキャッシュメモリ内のアドレスがある場合には、当該コア3(C0)に対してムーブアウト要求を通知する。
コア3(C0)は、ムーブアウト要求を検出すると、当該コアキャッシュメモリ内から該当ムーブアウトデータを読み出す。そして、コア3(C0)は、そのデータをライトバックデータとしてWBDQ13に格納した後、当該コア3(C0)に対応するMOポート18に応答ムーブアウト要求を通知する。
MOポート18は、応答ムーブアウト要求を検出すると、BPMOを発行する。RSL20Bは、BPMOを検出すると、制御パイプライン10B上の該当周期にコア3(C0)のBPMOをパイプ投入する。タグメモリ21は、制御パイプライン10B上のBPMOに基づき、MORP対象のデータのアドレスを当該タグメモリ21から消去し、WBDQ13のライトバックデータをDSL16経由でMODQ11内へ転送して格納する。更に、第1キャッシュ制御部500Aは、MODQ11に格納されたライトバックデータを主記憶装置のバンクメモリ(MM0又はMM1)に記憶すべく、MAC(MC0又はMC1)4Aに要求する。
MAC4A(MC0又はMC1)は、記憶要求を検出すると、主記憶装置への記憶準備が完了次第、MODQ11内のライトバックデータを読み出し、当該ライトバックデータを主記憶装置内のバンクメモリ(MM0又はMM1)に記憶する。その後、MIバッファ19は、MAC4(MC0又はMC1)からの該当データをMIDQ12に格納した後、MIDQ12に格納された該当データのデータメモリ2A(M0又はM1)への登録要求を検出すると、MVINを発行する。RSL20Bは、MVINを検出した場合には、制御パイプライン10B上の該当周期にMVINをパイプ投入する。
タグメモリ21は、制御パイプライン10B上のMVINに基づき、当該タグメモリ21内に該当データのアドレスを登録する。更に、データメモリ2A(M0又はM1)は、MIDQ12に格納された該当データを当該データメモリ2A(M0又はM1)に格納しながら、接続ラインL0経由で該当データを要求元のコア3(C0)に転送する。
一方で、データメモリ2A(M0又はM1)は、例えば、RD時にタグメモリ21内のコアキャッシュメモリにMORP対象のアドレスがなくても、当該データメモリ2A(M0又はM1)内にある場合には、該当データを読み出す。そして、データメモリ2A(M0又はM1)は、該当データを、QSL14及びDSL16経由でMODQ11に転送して格納する。更に、MODQ11は、該当データを格納すると、該当データをライトバックデータとして主記憶装置のバンクメモリ(MM0又はMM1)に記憶すべく、MAC4A(MC0又はMC1)に要求する。
次に、RSL20Bの構成について説明する。図11は、RSL20Bの構成を示す説明図である。図11に示すRSL20Bは、AND回路31、LRU(Least Recently Used)32及びプライオリティ論理回路33を有する。RSL20Bは、MIポート17、MOポート18及びMIバッファ19からのパイプ命令を制御パイプライン10B上の該当周期に投入する回路に相当するものである。
AND回路31は、MIポート17及びLRU32と接続され、MIポート17毎に配置され、MIポート17からの該当パイプ命令を検出した場合には、当該パイプ命令を保持すると共に、投入許可に応じて該当パイプ命令(RD)を出力する。LRU32は、AND回路31及びプライオリティ論理回路33と接続され、AND回路31の該当パイプ命令をLRUアルゴリズムで優先出力する。プライオリティ論理回路33は、LRU32、MOポート18、MIバッファ19及び制御パイプライン10Bと接続され、LRU32、MOポート18及びMIバッファ19のパイプ命令を論理出力する。
次に、実施の形態3のLSI1Bの動作について説明する。図12は、実施の形態3の第1キャッシュ制御部500Aの制御パイプライン10Bのタイミング関係(パイプ投入禁止区間及びバス共用禁止区間経過後に同一データバス6を用いるパイプ命令が同一周期で連続投入した場合)を示す説明図である。
ここで、パイプ命令の連続投入とは、先行のパイプ命令を投入した後、先行のパイプ命令と同一周期のパイプ投入禁止区間及び同一データバス6のバス共用禁止区間経過後直後のアクセス周期に後続のパイプ命令が投入したである。更に、同一データバス6を用いるパイプ命令とは、例えば、第1データバス6Aの場合には、コア3(C0)、コア3(C1)、コア3(C4)、コア3(C5)やMODQ−EV11Aをデータ転送先とするパイプ命令に相当する。また、第2データバス6Bの場合には、コア3(C2)、コア3(C3)、コア3(C6)、コア3(C7)やMODQ−OD11Bをデータ転送先とするパイプ命令に相当する。図12では、例えば、第1サイクル〜第20サイクルをEVEN周期及びODD周期に時分割した例であり、第1キャッシュ制御部500AはEVEN周期でデータメモリ2A(M0)にアクセスし、ODD周期でデータメモリ2A(M1)にアクセスする。
第1キャッシュ制御部500A内のMIポート17(MI0)は、例えば、コア3(C0)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20Bは、制御パイプライン10B上の第1サイクル(EVEN周期)でコア3(C0)のRDをパイプ投入する。尚、RSL20Bは、コア3(C0)のRD投入後の第2サイクルから第4サイクルまでの期間の3サイクル分をEVEN周期のパイプ投入禁止区間に設定する。更に、RSL20Bは、コア3(C0)のRD投入後の第2サイクルから第3サイクルまでの期間の2サイクル分を第1データバス6Aのバス共用禁止区間に設定する。
第1キャッシュ制御部500A内のDSL16は、コア3(C0)のRD投入後の第9サイクル(EVEN周期)でデータメモリ2A(M0)からの該当データを要求元のコア3(C0)へ転送すべく、第1データバス6A上のデータ転送を開始する。第1データバス6Aは、第9サイクル(EVEN周期)から第12サイクルまでの期間の4サイクルでコア3(C0)の該当データを転送する。
また、MIポート17(MI3)は、例えば、コア3(C3)からデータメモリ2A(M1)へのデータ読出要求を検出すると、RDを発行する。RSL20Bは、制御パイプライン10B上の第2サイクル(ODD周期)でコア3(C3)のRDをパイプ投入する。尚、RSL20Bは、コア3(C3)のRD投入後の第3サイクルから第5サイクルまでの期間の3サイクル分をODD周期のパイプ投入禁止区間に設定する。更に、RSL20Bは、コア3(C3)のRD投入後の第3サイクルから第4サイクルまでの期間の2サイクル分を第2データバス6Bのバス共用禁止区間に設定する。
DSL16は、コア3(C3)のRD投入後の第10サイクル(ODD周期)でデータメモリ2A(M1)からの該当データを要求元のコア3(C3)へ転送すべく、第2データバス6B上のデータ転送を開始する。第2データバス6Bは、第10サイクル(EVEN周期)から第13サイクルまでの期間の4サイクルでコア3(C3)の該当データを転送する。
また、MIポート17(MI5)は、例えば、コア3(C5)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20Bは、EVEN周期のパイプ投入禁止区間経過後、かつ、第1データバス6Aのバス共用禁止区間経過後、制御パイプライン10B上の第5サイクル(EVEN周期)でコア3(C5)のRDをパイプ投入する。尚、RSL20Bは、コア3(C5)のRD投入後の第6サイクルから第8サイクルまでの期間の3サイクル分をEVEN周期のパイプ投入禁止区間に設定する。更に、RSL20Bは、コア3(C5)のRD投入後の第6サイクルから第7サイクルまでの期間の2サイクル分を第1データバス6Aのバス共用禁止区間に設定する。
DSL16は、コア3(C5)のRD投入後の第13サイクル(EVEN周期)でデータメモリ2A(M0)からの該当データを要求元のコア3(C5)へ転送すべく、第1データバス6A上のデータ転送を開始する。第1データバス6Aは、第13サイクル(EVEN周期)から第16サイクルまでの期間の4サイクルでコア3(C5)の該当データを転送する。
また、MIポート17(MI6)は、例えば、コア3(C6)からデータメモリ2A(M1)へのデータ読出要求を検出すると、RDを発行する。RSL20Bは、ODD周期のパイプ投入禁止区間経過後、かつ、第2データバス6Bのバス共用禁止区間経過後、制御パイプライン10B上の第6サイクル(ODD周期)でコア3(C6)のRDをパイプ投入する。尚、RSL20Bは、コア3(C6)のRD投入後の第7サイクルから第9サイクルまでの期間の3サイクル分をODD周期のパイプ投入禁止区間に設定する。更に、RSL20Bは、コア3(C6)のRD投入後の第7サイクルから第8サイクルまでの期間の2サイクル分を第2データバス6Bのバス共用禁止区間に設定する。
DSL16は、コア3(C6)のRD投入後の第14サイクル(ODD周期)でデータメモリ2A(M1)からの該当データを要求元のコア3(C6)へ転送すべく、第2データバス6B上のデータ転送を開始する。第2データバス6Bは、第14サイクル(ODD周期)から第17サイクルまでの期間の4サイクルでコア3(C6)の該当データを転送する。
また、MIポート17(MI1)は、例えば、コア3(C1)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20Bは、EVEN周期のパイプ投入禁止区間経過後、かつ、第1データバス6Aのバス共用禁止区間経過後、制御パイプライン10B上の第9サイクル(EVEN周期)でコアC3(C1)のRDをパイプ投入する。尚、RSL20Bは、コア3(C1)のRD投入後の第10サイクルから第12サイクルまでの期間の3サイクル分をEVEN周期のパイプ投入禁止区間に設定する。更に、RSL20Bは、コア3(C1)のRD投入後の第10サイクルから第11サイクルまでの期間の2サイクル分を第1データバス6Aのバス共用禁止区間に設定する。
DSL16は、コア3(C1)のRD投入後の第17サイクル(EVEN周期)でデータメモリ2A(M0)からの該当データを要求元のコア3(C1)へ転送すべく、第1データバス6A上のデータ転送を開始する。第1データバス6Aは、第17サイクル(EVEN周期)から第20サイクルまでの期間の4サイクルでコア3(C1)の該当データを転送する。
また、MOポート18(MO3)は、例えば、WBDQ−OD13BからMODQ−ODD11Bへのムーブアウト要求をコア3(C3)から検出すると、BPMOを発行する。RSL20Bは、ODD周期のパイプ投入禁止区間経過後、かつ、第2データバス6Bのバス共用禁止区間経過後、WBDQ−OD13Bへアクセスする制御パイプライン10B上の第10サイクルの(ODD周期)でコア3(C3)のBPMOをパイプ投入する。尚、RSL20Bは、コア3(C3)のBPMO投入後の第11サイクルから第13サイクルまでの期間の3サイクル分をODD周期のパイプ投入禁止区間に設定する。更に、RSL20Bは、コア3(C3)のBPMO投入後の第11サイクルから第12サイクルまでの期間の2サイクル分を第2データバス6Bのバス共用禁止区間に設定する。
DSL16は、BPMO投入後の第18サイクルのODD周期でWBDQ−OD13Bからの該当データをMODQ−OD11Bへ転送すべく、第2データバス6B上のデータ転送を開始する。第2データバス6Bは、第18サイクル(ODD周期)から第21サイクルまでの期間の4サイクルで該当データをMODQ−OD11Bに転送する。その結果、第1データバス6Aでは、4サイクル毎のEVEN周期で連続的にパイプ命令を投入した場合、データメモリ2A(M0)から該当データを間断なく、コア3(C0),コア3(C5)及びコア3(C1)の該当データ順に連続転送できる。また、第2データバス6Bでは、4サイクル毎のODD周期で連続的にパイプ命令を投入した場合、データメモリ2A(M1)及びWBDQ−OD13Bから該当データを間断なく、コア3(C3)、コア3(C6)及びMODQ−OD11Bの該当データ順に連続転送できる。
図12では、先行パイプ命令のパイプ投入禁止区間及びバス共用禁止区間経過後、先行パイプ命令と同一のデータバス6を用いるパイプ命令を先行パイプ命令と同一周期で連続投入した場合、パイプ命令に応じたデータを間断なく、データバス6上に連続転送する。その結果、複雑なバス構成を要することなく、当該データバス6上で安定したデータ転送効率を確保できる。例えば、第1データバス6Aを用いるパイプ命令を同一周期で連続投入した場合には、第1データバス6A上で安定したデータ転送効率を確保できる。同様に、第2データバス6Bを用いるパイプ命令を同一周期で連続投入した場合も、第2データバス6B上で安定したデータ転送効率を確保できる。
次に、先行パイプ命令と同一のデータバス6を用いるパイプ命令が先行パイプ命令と異なる周期で連続投入した場合でも、当該データバス6上で安定したデータ転送効率を確保できる第1キャッシュ制御部500Aの動作について説明する。図13は、実施の形態3の第1キャッシュ制御部500Aの制御パイプライン10Bのタイミング関係(パイプ投入禁止区間内で同一データバス6を用いるパイプ命令が異なる周期で連続投入した場合)を示す説明図である。
MIポート17(MI0)は、例えば、コア3(C0)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20Bは、制御パイプライン10B上の第1サイクル(EVEN周期)でコア3(C0)のRDをパイプ投入する。尚、RSL20Bは、コア3(C0)のRD投入後の第2サイクルから第4サイクルまでの期間の3サイクル分をEVEN周期のパイプ投入禁止区間に設定する。更に、RSL20Bは、コア3(C0)のRD投入後の第2サイクルから第3サイクルまでの期間の2サイクル分を第1データバス6Aのバス共用禁止区間に設定する。
DSL16は、コア3(C0)のRD投入後の第9サイクル(EVEN周期)でデータメモリ2A(M0)からの該当データを要求元のコア3(C0)へ転送すべく、第1データバス6A上のデータ転送を開始する。第1データバス6Aは、第9サイクル(EVEN周期)から第12サイクルまでの期間の4サイクルでコア3(C0)の該当データを転送する。
また、MIポート17(MI3)は、例えば、コア3(C3)からデータメモリ2A(M1)へのデータ読出要求を検出すると、RDを発行する。RSL20Bは、制御パイプライン10B上の第2サイクル(ODD周期)でコア3(C3)のRDをパイプ投入する。尚、RSL20Bは、コア3(C3)のRD投入後の第3サイクルから第5サイクルまでの期間の3サイクル分をODD周期のパイプ投入禁止区間に設定する。更に、RSL20Bは、コア3(C3)のRD投入後の第3サイクルから第4サイクルまでの期間の2サイクル分を第2データバス6Bのバス共用禁止区間に設定する。
DSL16は、コア3(C3)のRD投入後の第10サイクル(ODD周期)でデータメモリ2A(M1)からの該当データを要求元のコア3(C3)へ転送すべく、第2データバス6B上のデータ転送を開始する。第2データバス6Bは、第10サイクル(ODD周期)から第13サイクルまでの期間の4サイクルでコア3(C3)の該当データを転送する。
また、MIポート17(MI7)は、例えば、コア3(C7)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20Bは、第5サイクル(EVEN周期)がEVEN周期のパイプ投入禁止区間経過(第2サイクル〜第4サイクル)後、かつ第2データバス6Bのバス共用禁止区間経過(第3及び第4サイクル)後である。その結果、RSL20Bは、第5サイクル(EVEN周期)でコア3(C7)のRDをパイプ投入する。
しかしながら、コア3(C3)及びコア3(C7)は、第2データバス6Bを共用するので、このままの状態だと、第2データバス6B上のコア3(C3)のデータ及びコア3(C7)のデータが第13サイクルで干渉する。そこで、遅延フラグ設定部22は、第2データバス6B上のコア3(C7)の第13サイクルから第16サイクルまでのデータの転送タイミングを1サイクル遅延させるべく、RSL20B上でコア3(C7)のRDに対応付けて遅延フラグを設定する。RSL20Bは、遅延フラグを設定した場合には、第2データバス6Bのバス共用禁止区間をコア3(C7)のRD投入後の第6サイクルから第8サイクルまでの期間の3サイクル分に延長設定する。尚、RSL20Bは、コア3(C7)のRD投入後の第6サイクルから第8サイクルまでの期間の3サイクル分をEVEN周期のパイプ投入禁止区間に設定する。
そして、DSL16は、コア3(C7)のRDの遅延フラグの設定に基づき、第2データバス6B上のコア3(C7)のデータを1サイクル遅延したEVEN周期のLATE−REG23Bの出力をデータ出力とする。つまり、DSL16は、LATE−REG23Bの出力に応じてコア3(C7)の第13サイクルから第16サイクルまでのデータを1サイクル遅延して第14サイクルから第17サイクルまでのデータを出力する。その結果、DSL16は、第2データバス6B上でコア3(C3)のデータ転送完了直後である第14サイクルからコア3(C7)のデータ転送を開始する。従って、第2データバス6B上では、コア3(C3)のデータ及びコア3(C7)のデータをデータ干渉なく連続転送できる。
更に、MIポート17(MI4)は、例えば、コア3(C4)からデータメモリ2A(M1)へのデータ読出要求を検出すると、RDを発行する。RSL20Bは、ODD周期のパイプ投入禁止区間経過後、かつ、第1データバス6Aのバス共用禁止区間経過後、制御パイプライン10B上の第6サイクル(ODD周期)でコア3(C4)のRDをパイプ投入する。尚、RSL20Bは、コア3(C4)のRD投入後の第7サイクルから第9サイクルまでの期間の3サイクル分をODD周期のパイプ投入禁止区間に設定する。更に、RSL20Bは、コア3(C4)のRD投入後の第7サイクルから第8サイクルまでの期間の2サイクル分を第1データバス6Aのバス共用禁止区間に設定する。
DSL16は、コア3(C4)のRD投入後の第14サイクル(ODD周期)でデータメモリ2A(M1)からの該当データを要求元のコア3(C4)へ転送すべく、第1データバス6A上のデータ転送を開始する。第1データバス6Aは、第14サイクル(ODD周期)から第17サイクルまでの期間の4サイクルでコア3(C4)の該当データを転送する。
次に、MIポート17(MI1)は、例えば、コア3(C1)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20Bは、EVEN周期のパイプ投入禁止区間経過(第6〜第8サイクル)後、かつ、第1データバス6Aのバス共用禁止区間経過(第6〜第8サイクル)後、制御パイプライン10B上の第9サイクル(EVEN周期)でコア3(C1)のRDをパイプ投入する。
しかしながら、コア3(C4)及びコア3(C1)は、第1データバス6Aを共用するので、このままの状態だと、第1データバス6A上のコア3(C4)のデータ及びコア3(C1)のデータが第17サイクルで干渉する。そこで、遅延フラグ設定部22は、第1データバス6A上のコア3(C1)の第17サイクルから第20サイクルまでのデータの転送タイミングを1サイクル遅延させるべく、RSL20B上でコア3(C1)のRDに対応付けて遅延フラグを設定する。RSL20Bは、遅延フラグを設定した場合には、第1データバス6Aのバス共用禁止区間をコア3(C1)のRD投入後の第10サイクルから第12サイクルまでの期間の3サイクル分に延長設定する。また、RSL20Bは、コア3(C1)のRD投入後の第10サイクルから第12サイクルまでの期間の3サイクル分をEVEN周期のパイプ投入禁止区間に設定する。
そして、DSL16は、コア3(C1)のRDの遅延フラグの設定に基づき、第1データバス6A上のコア3(C1)のデータを1サイクル遅延したEVEN周期のLATE−REG23Aの出力をデータ出力とする。つまり、DSL16は、LATE−REG23Aの出力に応じてコア3(C1)の第17サイクルから第20サイクルまでのデータを1サイクル遅延して第18サイクルから第21サイクルまでのデータを出力する。その結果、DSL16は、第1データバス6A上でコア3(C4)のデータ転送完了直後である第18サイクルからコア3(C1)のデータ転送を開始する。従って、第1データバス6A上では、コア3(C4)のデータ及びコア3(C1)のデータをデータ干渉なく連続転送できる。
従って、実施の形態3では、パイプ投入禁止区間及びバス共用禁止区間経過後、先行パイプ命令と同一のデータバス6を用いる後続パイプ命令を先行パイプ命令と異なる周期で連続投入した場合、後続パイプ命令の後続データの転送タイミングを1サイクル遅延する。データバス6上では、先行パイプ命令の先行データと後続パイプ命令の後続データとが干渉なく連続転送する。その結果、バス構成を複雑化することなく、データバス6上で安定したデータ転送効率を確保できる。
更に、実施の形態3では、先行パイプ命令と同一のデータバス6を用いる後続パイプ命令を先行パイプ命令と異なる周期で連続投入する場合には、RSL20B上で後続パイプ命令に対応付けて遅延フラグを設定する。その結果、LATE−REG23A(23B)は、遅延フラグの設定に基づき、データバス6上の後続パイプ命令の後続データの転送タイミングを1サイクル遅延できる。
更に、実施の形態3では、RSL20B上で後続パイプ命令に対応付けて遅延フラグを設定した場合には、当該パイプ命令投入後の同一データバス6のバス共用禁止区間を1サイクル延長、すなわち、3サイクル分に延長する。その結果、同一データバス6上のデータ出力を1サイクル遅延したことで生じる後続データ以後のデータ干渉を確実に防止できる。
尚、上記実施の形態3では、先行パイプ命令と同一のデータバス6を用いる後続パイプ命令を先行パイプ命令と異なる周期で連続投入した場合には、後続パイプ命令のバス共用禁止区間をパイプ投入後の3サイクルに延長設定する。しかしながら、後続パイプ命令のバス共用禁止区間をパイプ投入後の3サイクルに延長した場合には、以下に説明するように、当該後続パイプ命令と異なる周期の同一のデータバス6を用いる後続のパイプ命令が継続的に禁止されてアクセス周期に偏りが生じる。図14は、第1キャッシュ制御部500Aの制御パイプライン10Bのタイミング関係(アクセス周期に偏りが生じた場合)を示す説明図である。尚、図14では、例えば、第1サイクル〜第26サイクルをEVEN周期及びODD周期に時分割した例である。
図14においてRSL20Bは、例えば、第1サイクル(EVEN周期)でコア3(C0)のRD投入後、第1データバス6Aのバス共用禁止区間内の第3サイクル(EVEN周期)でコア3(C5)のRDを検出したとしても第3サイクルでのRD投入を禁止する。遅延フラグ設定部22は、RSL20B上で第1データバス6Aのバス共用禁止区間経過後、制御パイプライン10B上の第4サイクル(ODD周期)にコア3(C4)のRDを投入した場合には、コア3(C4)のRDに遅延フラグを設定する。尚、RSL20Bは、遅延フラグを設定した場合には、コア3(C4)の第4サイクルのRD投入後のバス共用禁止区間を第5サイクルから第7サイクルまでの期間の3サイクル分に延長設定する。また、RSL20Bは、コア3(C4)のRD投入後の第5サイクルから第7サイクルまでの期間の3サイクル分をODD周期のパイプ投入禁止区間に設定する。
その結果、RSL20Bは、コア3(C4)のRD投入後の3サイクル分のバス共用禁止区間(第5〜第7サイクル)内の第7サイクル(EVEN周期)でコア3(C5)のRDを検出したとしても、制御パイプライン10B上のRD投入を再度禁止する。
更に、DSL16は、コア3(C4)のRDの遅延フラグの設定に基づき、EVEN周期のLATE−REG23Aの出力で第1データバス6A上のコア3(C4)のデータを1サイクル遅延する。その結果、第1データバス6A上でコア3(C0)の先行データ及びコア3(C4)の後続データがデータ干渉なく連続転送できる。
その後、遅延フラグ設定部22は、RSL20B上で第1データバス6Aのバス共用禁止区間(第5〜第7サイクル)経過後、第8サイクル(ODD周期)にコア3(C1)のRDを投入した場合には、コア3(C1)のRDに遅延フラグを設定する。尚、RSL20Bは、遅延フラグを設定した場合には、RD投入後のバス共用禁止区間を第9サイクルから第11サイクルまでの期間の3サイクル分に延長設定する。また、RSL20Bは、コア3(C1)のRD投入後の第9サイクルから第11サイクルまでの3サイクル分をODD周期のパイプ投入禁止区間に設定する。
その結果、RSL20Bは、コア3(C1)のRD投入後の3サイクル分のバス共用禁止区間(第9〜第11サイクル)内の第11サイクル(EVEN周期)でコア3(C5)のRDを検出したとしても、制御パイプライン10B上のRD投入を再度禁止してしまう。更に、DSL16は、コア3(C1)のRDの遅延フラグの設定に基づき、ODD周期のLATE−REG23Bの出力で第1データバス6A上のコア3(C1)のデータを1サイクル遅延する。その結果、第1データバス6A上でコア3(C4)の先行データ及びコア3(C1)の後続データ同士が干渉なく連続転送できる。
しかしながら、例えば、第1データバス6Aを用いる遅延フラグを設定したパイプ命令をODD周期で連続投入した場合、第1データバス6Aのバス共用禁止区間を1サイクル延長してパイプ命令投入後の3サイクル分に延長設定する。その結果、第1データバス6Aを用いるODD周期のバス共用禁止区間がODD周期後の3サイクルで継続的に設定されるので、第1データバス6Aを用いるEVEN周期でのパイプ命令の投入が継続的に禁止されてアクセス周期に偏りが生じてしまう。
[実施の形態4]
そこで、このような事態に対処すべく、制御パイプライン10B上のアクセス周期の偏りを防止する機能を備えたLSIにつき、実施の形態4として、以下に説明する。尚、実施の形態3のLSI1Bと同一の構成については、同一符号を付すことで、その詳細な説明を省略する。図15は、実施の形態4の第1キャッシュ制御部の構成を示すブロック図である。
実施の形態3のLSI1Bと実施の形態4のLSI1Cとが異なるところは、図15に示すように、RSL20C及び投入抑止フラグ設定部24を第1キャッシュ制御部500C(第2キャッシュ制御部500D)に備えた点にある。
投入抑止フラグ設定部24は、同一データバス6を用いるコア3のパイプ命令に対応付けて遅延フラグを設定した場合で、かつ、同一データバス6を用いる異なる周期のパイプ命令がパイプ投入待ち状態である場合に、パイプ命令の要求元コア3及び隣接コア3に対して、同一周期でのパイプ命令の投入を禁止すべく、投入抑止フラグを設定する。尚、隣接コア3とは、例えば、コア3(C0)及びコア3(C1)同士、コア3(C2)及びコア3(C3)同士、コア3(C4)及びコア3(C5)同士、コア3(C6)及びコア3(C7)同士に相当する。
RSL20Cは、投入抑止フラグが設定されたコア3からの同一周期でのパイプ命令を検出した場合には、当該投入抑止フラグに基づき、該当コア3に対応するAND回路31(図11参照)の投入許可を禁止する。また、RSL20Cでは、投入抑止フラグが未設定のコア3の異なる周期のパイプ命令を検出した場合には、通常のパイプ投入禁止区間及びバス共用禁止区間経過後、該当コア3に対応するAND回路31の投入を許可する。また、RSL20Cは、投入抑止フラグが設定されたコア3でも、投入抑止フラグ設定の周期と異なる周期のパイプ命令を検出した場合には、通常のパイプ投入禁止区間及びバス共用禁止区間経過後、該当コア3に対応するAND回路31の投入を許可する。例えば、RSL20Cは、ODD周期のパイプ命令の投入を禁止する投入抑止フラグが設定されたコア3からEVEN周期のパイプ命令を検出した場合、通常のパイプ投入禁止区間及びバス共用禁止区間経過後、該当コア3に対応するAND回路31の投入を許可する。
また、投入抑止フラグ設定部24は、設定済みの投入抑止フラグの周期と異なる周期のパイプ命令の投入を検出した場合には、設定済みの全てのコア3の投入抑止フラグを解除する。尚、第2キャッシュ制御部500Dの構成についても、データメモリ2A(M2又はM3)を対象にした点で図15とは異なるものの、実質的な構成についてはほぼ同一であるので、その重複する構成及び動作の説明は省略する。
次に、実施の形態4のLSI1Cの動作について説明する。図16は、実施の形態4の第1キャッシュ制御部500Cの制御パイプライン10Bのタイミング関係(アクセス周期の偏りを防止した場合)を示す説明図である。尚、図16では、例えば、第1サイクル〜第26サイクルをEVEN周期及びODD周期に時分割した例である。
図16においてMIポート17(MI0)は、例えば、コア3(C0)からデータメモリ2A(M0)へのデータ読出要求を検出すると、RDを発行する。RSL20Cは、制御パイプライン10B上の第1サイクル(EVEN周期)でコア3(C0)のRDをパイプ投入する。尚、RSL20Cは、コア3(C0)のRD投入後の第2サイクルから第4サイクルまでの期間の3サイクル分をEVEN周期のパイプ投入禁止区間に設定する。更に、RSL20Cは、コア3(C0)のRD投入後の第2サイクルから第3サイクルまでの期間の2サイクル分を第1データバス6Aのバス共用禁止区間に設定する。
MIポート17(MI5)は、例えば、第1データバス6Aのバス共用禁止区間(第2〜第3サイクル)内の第3サイクル(EVEN周期)でコア3(C5)のデータ読出要求を検出すると、RDを発行する。しかしながら、RSL20Cは、コア3(C5)のRDが第1データバス6Aのバス共用禁止区間(第2〜第3サイクル)内なので、第3サイクル(EVEN周期)でのコア3(C5)のRD投入を禁止する。
また、MIポート17(MI4)は、第1データバス6Aのバス共用禁止区間経過後、かつ、ODD周期のパイプ投入禁止区間経過後、第4サイクル(直近ODD周期)でコア3(C4)のデータ読出要求を検出すると、RDを発行する。RSL20Cは、パイプ投入禁止区間及びバス共用禁止区間経過後なので、第4サイクル(ODD周期)でコア3(C4)のRDをパイプ投入する。
更に、遅延フラグ設定部22は、RSL20C上で第4サイクル(ODD周期)のコア3(C4)のRDに遅延フラグを設定する。RSL20Cは、遅延フラグを設定した場合には、第1データバス6Aのバス共用禁止区間をコア3(C4)のRD投入後の第5サイクルから第7サイクルまでの期間の3サイクル分に延長設定する。また、RSL20Cは、コア3(C4)のRD投入後の第5サイクルから第7サイクルまでの期間の3サイクル分をODD周期のパイプ投入禁止区間に設定する。
更に、投入抑止フラグ設定部24は、第4サイクル(ODD周期)のコア3(C4)のRDに対応付けて遅延フラグを設定した場合には、コア3(C4)及び隣接コア3(C5)に対してODD周期のパイプ命令の投入を抑止する投入抑止フラグを設定する。この結果、RSL20Cは、コア3(C4)及びコア3(C5)のODD周期のパイプ命令を検出した場合には、当該ODD周期のパイプ命令の投入を禁止する。
そして、DSL16は、コア3(C4)のRDの遅延フラグに基づき、第1データバス6A上のコア3(C4)の後続データとして、1サイクル遅延したODD周期のLATE−REG23Bの出力をデータ出力とする。第1データバス6A上では、コア3(C0)の先行データ及びコア3(C4)の後続データがデータ干渉なく、連続転送できる。
MIポート17(MI1)は、例えば、第1データバス6Aのバス共用禁止区間経過後、かつ、ODD周期のパイプ投入禁止区間経過後、第8サイクル(直近のODD周期)でコア3(C1)のデータ読出要求を検出すると、RDを発行する。RSL20Cは、パイプ投入禁止区間及びバス共用禁止区間経過後なので、第8サイクル(ODD周期)でコア3(C1)のRDをパイプ投入する。
更に、遅延フラグ設定部22は、RSL20C上でODD周期のコア3(C1)のRDに対応付けて遅延フラグを設定する。RSL20Cは、遅延フラグが設定された場合には、第1データバス6Aのバス共用禁止区間をコア3(C1)のRD投入後の第9サイクルから第11サイクルまでの期間の3サイクル分に延長設定する。更に、RSL20Cは、コア3(C1)のRD投入後の第9サイクルから第11サイクルまでの期間の3サイクル分をODD周期のパイプ投入禁止区間に設定する。
更に、投入抑止フラグ設定部24は、第8サイクルのODD周期のコア3(C1)のRDに対応付けて遅延フラグを設定した場合には、コア3(C1)及び隣接コア3(C0)に対してODD周期のパイプ命令の投入を抑止する投入抑止フラグを設定する。この結果、RSL20Cは、コア3(C1)及びコア3(C0)のODD周期でのパイプ命令を検出した場合には、当該ODD周期のパイプ命令の投入を禁止する。
そして、DSL16は、コア3(C1)のRDの遅延フラグに基づき、第1データバス6A上のコア3(C1)の後続データとして、1サイクル遅延したODD周期のLATE−REG23Bの出力をデータ出力とする。第1データバス6A上では、コア3(C4)の先行データ及びコア3(C1)の後続データがデータ干渉なく、連続転送できる。
更に、MIポート17(MI0)は、例えば、第1データバス6Aのバス共用禁止区間経過後、かつODD周期のパイプ投入禁止区間経過後、第12サイクル(ODD周期)でコア3(C0)のデータ読出要求を検出すると、RDを発行する。しかしながら、RSL20Cは、第12サイクルのODD周期でコア3(C0)のRDを検出した場合、コア3(C0)に投入抑止フラグが設定されているので、当該コア3(C0)のパイプ命令の投入を禁止する。
その結果、RSL20Cは、ODD周期のパイプ投入禁止区間経過後、かつ第1データバス6Aのバス共用禁止区間経過後の第13サイクル(EVEN周期)でコア3(C5)のRDを検出した場合には、このEVEN周期でコア3(C5)のRDをパイプ投入する。尚、RSL20Cは、コア3(C5)のRD投入後の第14サイクルから第16サイクルまでの期間の3サイクル分をパイプ投入禁止区間に設定する。更に、RSL20Cは、コア3(C5)のRD投入後の第14サイクルから第15サイクルまでの期間の2サイクル分を第1データバス6Aのバス共用禁止区間に設定する。
更に、投入抑止フラグ設定部24は、第13サイクル(EVEN周期)でコア3(C5)のRDをパイプ投入したことで、現在設定済みのコア3(C0)、コア3(C1)、コア3(C4)及びコア3(C5)の投入抑止フラグの設定を全て解除する。そして、DSL16は、コア3(C5)のRDに基づき、第1データバス6A上のコア3(C5)のデータを第22サイクル(EVEN周期)でデータ出力する。その結果、第1データバス6A上では、コア3(C1)の先行データ及びコア3(C5)の後続データがデータ干渉なく、連続転送できる。
更に、RSL20Cは、例えば、EVEN周期のパイプ投入禁止区間(第14〜第16サイクル)内でも、第1データバス6Aのバス共用禁止区間(第14〜第15サイクル)経過後、第16サイクル(ODD周期)のコア3(C3)のRDを検出する。RSL20Cは、第16サイクル(ODD周期)でコア3(C0)のRDを検出した場合には、第16サイクル(ODD周期)でコア3(C3)のRDをパイプ投入する。
更に、遅延フラグ設定部22は、同一の第1データバス6Aを用いるので、RSL20C上で第16サイクル(ODD周期)のコア3(C0)のRDに遅延フラグを設定する。RSL20Cは、遅延フラグを設定した場合には、第1データバス6Aのバス共用禁止区間をコア3(C0)のRD投入後の第17サイクルから第19サイクルまでの間の3サイクル分に延長設定する。また、RSL20Cは、コア3(C0)のRD投入後の第17サイクルから第19サイクルまでの間の3サイクル分をODD周期のパイプ投入禁止区間に設定する。
更に、投入抑止フラグ設定部24は、ODD周期のコア3(C0)のRDに対応付けて遅延フラグを設定した場合には、コア3(C0)及び隣接するコア3(C1)に対してODD周期のパイプ命令の投入を抑止する投入抑止フラグを設定する。この結果、RSL20Cは、コア3(C0)及びコア3(C1)のODD周期のパイプ命令を検出した場合には、当該パイプ命令の投入を禁止する。
そして、DSL16は、コア3(C0)のRDの遅延フラグに基づき、第1データバス6A上のコア3(C0)の後続データとして、1サイクル遅延したODD周期のLATE−REG23Bの出力をデータ出力とする。第1データバス6A上では、コア3(C5)の先行データ及びコア3(C0)の後続データがデータ干渉なく、連続転送できる。以下、上述した処理動作を繰り返し実行する。
従って、実施の形態4では、同一データバス6を用いる遅延フラグを設定したパイプ命令を同一周期で検出した場合、かつ、同一データバス6を用いる異なる周期のパイプ命令がパイプ投入待ち状態となっている場合は、当該パイプ命令の要求元コア3及び隣接コア3に対して同一周期のパイプ命令の投入を抑止する投入抑止フラグを設定する。そして、投入抑止フラグ設定済みのコア3に対する同一周期のパイプ命令を検出した場合には、該当周期でのパイプ命令の投入を禁止する。その結果、同一データバス6を用いる遅延フラグを設定したパイプ命令を同一周期で検出した場合でも、該当周期でのパイプ命令の投入を禁止しながら、同一データバス6を用いた異なる周期でのパイプ命令の投入を可能にする。その結果、パイプ命令を投入するアクセス周期に偏りが生じるような事態を回避できる。
更に、実施の形態4では、設定済みの投入抑止フラグの周期と異なる周期のパイプ命令の投入を検出した場合には、設定済みの全てのコア3の投入抑止フラグを解除することで、簡単に投入抑止フラグの設定を解除できる。
尚、上記実施の形態では、例えば、キャッシュメモリ2を4個、MAC4を4個、キャッシュ制御部5(50,500)を2個に分割したが、これら分割個数は適宜変更可能である。
上記実施の形態では、1本の制御パイプライン10(10A,10B)を使用してEVEN周期及びODD周期の2サイクル周期で2個のデータメモリ2Aをアクセス制御する。しかしながら、データメモリ2AをN個に分割した場合には、制御パイプライン10をNサイクル周期に時分割することで、N個分のデータメモリ2Aをアクセス制御することも可能である。
また、上記実施の形態では、コア3及びデータメモリ2A間のデータ転送時間やデータ読出時間を4サイクルに設定し、パイプ投入禁止区間をパイプ命令投入後の3サイクル分、バス共用禁止区間をパイプ命令投入後の2サイクル分又は3サイクル分とした。しかしながら、データ転送時間やデータ読出時間を適宜設定変更することで、パイプ投入禁止区間及びバス共用禁止区間のサイクルも適宜変更可能である。
また、上記実施の形態4では、パイプ命令に遅延フラグを設定した場合には、当該パイプ命令に関わるコア3及び隣接コア3に投入抑止フラグを設定するようにした。しかしながら、投入抑止フラグの設定対象をコア3及び隣接コア3に限定するものではなく、要求元コア3と同一データバス6を共用するグループ内の全コア3としても良く、例えば、コア3(C0,C1,C4,C5)やコア3(C2,C3,C6及びC7)のグループ単位で設定しても良い。
尚、本実施の形態で説明した各種処理の内、自動的に行われるものとして説明した処理の全部又は一部を手動で行うことも可能であることは勿論のこと、その逆に、手動で行われるものとして説明した処理の全部又は一部を自動で行うことも可能である。また、本実施の形態で説明した処理手順、制御手順、具体的名称、各種データやパラメータを含む情報についても、特記した場合を除き、適宜変更可能である。
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
以上の各実施の形態を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)複数の演算処理部に共有され、キャッシュメモリとしてデータを記憶する複数の記憶部と、
前記複数の演算処理部に共有され、前記記憶部から読み出されたデータを前記演算処理部に転送する複数のバスと、
前記複数の記憶部毎に時分割された周期に従って各記憶部にアクセスし、前記演算処理部から前記記憶部へのアクセス命令を実行し、当該記憶部から読み出したデータを前記演算処理部に対応する前記バスに転送する命令実行部と、
前記演算処理部から前記記憶部へのアクセス命令を受け付け、先行するアクセス命令の実行に要する期間内において同一の記憶部に対する後続のアクセス命令の投入を禁止し、かつ、前記実行に要する期間より短い所定の期間内において前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令の投入を禁止しつつ、前記アクセス命令を前記命令実行部に投入する命令投入部と、
前記先行するアクセス命令の実行に要する期間内において前記命令投入部によって同一のバスを用いる後続のアクセス命令が投入された場合に、当該後続のアクセス命令に応じて前記記憶部から読み出されたデータを前記バスへ転送開始するタイミングを遅延させるよう前記命令実行部を制御するタイミング制御部と
を有することを特徴とするキャッシュメモリ制御装置。
(付記2)前記先行するアクセス命令の実行に要する期間内において前記命令投入部によって前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令が投入された場合に、当該後続のアクセス命令に対応付けて遅延フラグを設定する遅延フラグ設定部を有し、
前記タイミング制御部は、
前記遅延フラグ設定部によって遅延フラグが設定されたアクセス命令を実行する場合には、前記先行するアクセス命令に応じたデータを前記バスへ転送終了した直後に、当該遅延フラグが設定されたアクセス命令に応じたデータを前記バスへ転送開始するように前記命令実行部を制御することを特徴とする付記1記載のキャッシュメモリ制御装置。
(付記3)前記命令投入部は、
更に、前記先行するアクセス命令の実行に要する期間内において前記命令投入部によって前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令が投入された場合には、当該後続のアクセス命令の実行に要する期間内において当該アクセス命令と同一のバスを用いるアクセス命令の投入を禁止することを特徴とする付記1記載のキャッシュメモリ制御装置。
(付記4)前記命令投入部は、
更に、前記先行するアクセス命令の実行に要する期間内において前記命令投入部によって前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令が投入された場合には、当該後続のアクセス命令を要求した演算処理部及び当該演算処理部と関連性がある演算処理部から要求され、かつ、当該後続のアクセス命令と同一の記憶部に対するアクセス命令の投入を禁止することを特徴とする付記1記載のキャッシュメモリ制御装置。
(付記5)前記関連性がある演算処理部は、
前記後続のパイプ命令を要求した演算処理部と同一のバスを用いる全ての演算処理部であることを特徴とする付記4記載のキャッシュメモリ制御装置。
(付記6)前記関連性がある演算処理部は、
前記後続のパイプ命令を要求した演算処理部及び、当該演算処理部と同一のバスを用いる演算処理部の内、前記後続のパイプ命令を要求した演算処理部と隣接する演算処理部であることを特徴とする付記4記載のキャッシュメモリ制御装置。
(付記7)複数の演算処理部と、
前記複数の演算処理部に共有され、キャッシュメモリとしてデータを記憶する複数の記憶部と、
前記複数の演算処理部に共有され、前記記憶部から読み出されたデータを前記演算処理部に転送する複数のバスと、
前記複数の記憶部毎に時分割された周期に従って各記憶部にアクセスし、前記演算処理部から前記記憶部へのアクセス命令を実行し、当該記憶部から読み出したデータを前記演算処理部に対応する前記バスに転送する命令実行部と、
前記演算処理部から前記記憶部へのアクセス命令を受け付け、先行するアクセス命令の実行に要する期間内において同一の記憶部に対する後続のアクセス命令の投入を禁止し、かつ、前記実行に要する期間より短い所定の期間内において前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令の投入を禁止しつつ、前記アクセス命令を前記命令実行部に投入する命令投入部と、
前記先行するアクセス命令の実行に要する期間内において前記命令投入部によって同一のバスを用いる後続のアクセス命令が投入された場合に、当該後続のアクセス命令に応じて前記記憶部から読み出されたデータを前記バスへ転送開始するタイミングを遅延させるよう前記命令実行部を制御するタイミング制御部と
を有することを特徴とする半導体集積回路。
(付記8)複数の演算処理部に共有され、キャッシュメモリとしてデータを記憶する複数の記憶部と、
前記複数の演算処理部に共有され、前記記憶部から読み出されたデータを前記演算処理部に転送する複数のバスと、
前記複数の記憶部毎に時分割された周期に従って各記憶部にアクセスし、前記演算処理部から前記記憶部へのアクセス命令を実行し、当該記憶部から読み出したデータを前記演算処理部に対応する前記バスに転送する命令実行部とを有するキャッシュメモリ制御装置のキャッシュメモリ制御方法であって、
前記演算処理部から前記記憶部へのアクセス命令を受け付け、先行するアクセス命令の実行に要する期間内において同一の記憶部に対する後続のアクセス命令の投入を禁止し、かつ、前記実行に要する期間より短い所定の期間内において前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令の投入を禁止しつつ、前記アクセス命令を前記命令実行部に投入する命令投入ステップと、
前記先行するアクセス命令の実行に要する期間内において前記命令投入ステップによって同一のバスを用いる後続のアクセス命令が投入された場合に、当該後続のアクセス命令に応じて前記記憶部から読み出されたデータを前記バスへ転送開始するタイミングを遅延させるよう前記命令実行部を制御するタイミング制御ステップと
を含むことを特徴とするキャッシュメモリ制御方法。