(57)【特許請求の範囲】
【請求項１】
演算処理をそれぞれ行う複数の演算処理部と、
前記複数の演算処理部の間で共有され、データを記憶する複数の記憶部と、
前記複数の演算処理部と前記記憶部との間をそれぞれ接続し、前記記憶部から読み出されたデータを前記複数の演算処理部にそれぞれ転送する複数のバスと、
前記複数の記憶部毎に時分割された周期に従って各記憶部にアクセスし、前記複数の演算処理部のいずれかが出力した前記記憶部へのアクセス命令を実行し、当該記憶部から読み出したデータを、前記複数のバスのうち、前記アクセス命令を出力した前記演算処理部に対応するバスに転送する命令実行部と、
前記複数の演算処理部のいずれかが出力した前記記憶部へのアクセス命令を受け付け、受け付けたアクセス命令に先行する先行アクセス命令の実行に要する期間内において同一の記憶部に対する後続のアクセス命令の投入を禁止し、かつ、前記実行に要する期間より短い所定の期間内において、前記複数のバスのうち、前記先行アクセス命令と同一のバスを用いる後続のアクセス命令の投入を禁止しつつ、前記所定の期間の経過後に、投入を禁止した前記後続のアクセス命令を前記命令実行部に投入する命令投入部と、
前記先行アクセス命令の実行に要する期間内に、前記命令投入部が前記同一のバスを用いる後続のアクセス命令を前記先行アクセス命令と異なる周期で投入した場合、前記後続のアクセス命令に対応付けて遅延情報を設定する遅延情報設定部と、
前記遅延情報設定部により遅延情報が設定された後続のアクセス命令を実行する場合、前記先行アクセス命令に応じて前記記憶部から読み出されたデータの前記バスへの転送の完了後に、前記遅延情報が設定された後続のアクセス命令に応じて前記記憶部から読み出したデータの前記バスへの転送を開始するように前記命令実行部を制御するタイミング制御部とを有することを特徴とする演算処理装置。
【請求項２】
前記命令投入部はさらに、
前記先行アクセス命令の実行に要する期間内において前記命令投入部によって前記先行アクセス命令と同一のバスを用いる後続のアクセス命令が投入された場合、前記後続のアクセス命令の実行に要する期間内において前記後続のアクセス命令と同一のバスを用いるアクセス命令の投入を禁止することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記命令投入部はさらに、
前記先行アクセス命令の実行に要する期間内において前記命令投入部によって前記先行アクセス命令と同一のバスを用いる後続のアクセス命令が投入された場合、前記複数の演算処理部のうち、前記後続のアクセス命令を要求した演算処理部及び当該演算処理部と関連性がある演算処理部から要求され、かつ、前記後続のアクセス命令と同一の記憶部に対するアクセス命令の投入を禁止することを特徴とする請求項１記載の演算処理装置。
【請求項４】
演算処理をそれぞれ行う複数の演算処理部と、前記複数の演算処理部の間で共有され、データを記憶する複数の記憶部と、前記複数の演算処理部と前記記憶部との間をそれぞれ接続し、前記記憶部から読み出されたデータを前記複数の演算処理部にそれぞれ転送する複数のバスを有する演算処理装置の制御方法において、
前記演算処理装置が有する命令実行部が、前記複数の記憶部毎に時分割された周期に従って各記憶部にアクセスし、前記複数の演算処理部のいずれかが出力した前記記憶部へのアクセス命令を実行し、当該記憶部から読み出したデータを、前記複数のバスのうち、前記アクセス命令を出力した前記演算処理部に対応するバスに転送し、
前記演算処理装置が有する命令投入部が、前記複数の演算処理部のいずれかが出力した前記記憶部へのアクセス命令を受け付け、受け付けたアクセス命令に先行する先行アクセス命令の実行に要する期間内において同一の記憶部に対する後続のアクセス命令の投入を禁止し、かつ、前記実行に要する期間より短い所定の期間内において、前記複数のバスのうち、前記先行アクセス命令と同一のバスを用いる後続のアクセス命令の投入を禁止しつつ、前記所定の期間の経過後に、投入を禁止した前記後続のアクセス命令を前記命令実行部に投入し、
前記演算処理装置が有する遅延情報設定部が、前記先行アクセス命令の実行に要する期間内に、前記命令投入部が前記同一のバスを用いる後続のアクセス命令を前記先行アクセス命令と異なる周期で投入した場合、前記演算処理装置が有する遅延情報設定部が、前記後続のアクセス命令に対応付けて遅延情報を設定し、
前記演算処理装置が有するタイミング制御部が、前記遅延情報設定部により遅延情報が設定された後続のアクセス命令を実行する場合、前記演算処理装置が有するタイミング制御部が、前記先行アクセス命令に応じて前記記憶部から読み出されたデータの前記バスへの転送の完了後に、前記遅延情報が設定された後続のアクセス命令に応じて前記記憶部から読み出したデータの前記バスへの転送を開始するように前記命令実行部を制御することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
通常、演算処理を行うプロセッサコア（以下、単にコアと称する）を備えた中央処理装置（以下、単にＣＰＵと称する：Central Processing Unit）等の半導体集積回路としてのＬＳＩ（Large Scale Integrated circuit：大規模集積回路）は、処理の高速化を図る目的としてキャッシュメモリを有する。更に、半導体集積回路は、メインメモリの主記憶装置と接続され、キャッシュメモリ及び主記憶装置を記憶制御するメモリアクセスコントローラ（以下、単にＭＡＣと称する：Memory Access Controller）を有する。キャッシュメモリは、メインメモリの主記憶装置よりも高速にアクセス可能なメモリに相当し、主記憶装置に記憶されたデータの内、ＣＰＵが頻繁に使用するデータのみを記憶する。
【０００３】
また、コアは、様々な演算処理を実行する際、最初にキャッシュメモリに必要なデータを要求すべく、データ読出要求をキャッシュメモリに通知する。キャッシュメモリでは、キャッシュメモリ内に必要なデータがある場合には、キャッシュヒットとし、そのキャッシュメモリ内の必要なデータをコアに転送する。また、キャッシュメモリでは、キャッシュメモリ内に必要なデータがない場合にはキャッシュミスとし、必要なデータが主記憶装置内にある場合には該当データを主記憶装置から読み出し、読み出した該当データを格納する。そして、コアは、再度、キャッシュメモリにアクセスし、キャッシュメモリから該当データを取得する。
【０００４】
半導体集積回路が有するキャッシュ制御部は、コアからのデータ読出要求を検出した結果、キャッシュミスが発生した場合には、ムーブイン要求をＭＡＣに要求する。ＭＡＣは、ムーブイン要求を検出した場合には、ムーブイン要求に該当するデータ、すなわちキャッシュミスの該当データを主記憶装置から読み出し、該当データをキャッシュメモリに転送する。そして、キャッシュメモリは、その該当データを記憶する。更に、キャッシュ制御部は、キャッシュメモリに該当データを記憶した後、コアからのデータ読出要求を再度検出すると、コアの必要データをキャッシュメモリから読み出し、そのデータをコアに転送する。
【０００５】
ところで、近年、単一コアであるシングルコアの半導体集積回路では、消費電力の増大等の問題が無視できない状態となっており、性能アップの限界に到達しつつあるのが実情である。そこで、近年、複数コアで構成した半導体集積回路のマルチコア化と、キャッシュメモリ及び主記憶装置を複数バンクの分割による半導体集積回路の複数バンク分割化とを図ることで各種問題に対処しようとしている。この半導体集積回路では、複数のコアと、複数のＭＡＣと、複数のバンク分割したキャッシュメモリと、半導体集積回路内部のデータ転送等を制御する制御部とを有する。
【０００６】
半導体集積回路では、複数のコアが複数バンクに分割したキャッシュメモリにアクセスし、複数バンクに分割したキャッシュメモリからデータを各コアに転送する。その結果、半導体集積回路では、マルチコア化を実現することで演算処理能力の大幅向上を図る。更に、バンク分割化を実現することで、複数キャッシュメモリに対する複数コアのアクセス効率を上げて、キャッシュメモリからコアへのデータ供給能力の大幅向上を図っている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１０−１１１７９８号公報
【特許文献２】特開平５−２５７８５９号公報
【特許文献３】特開平３−０２５５５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
このような半導体集積回路では、コア及びキャッシュメモリ間を１対１でバス接続し、コア及びキャッシュメモリ間で安定したデータ転送効率を確保している。しかしながら、コア及びキャッシュメモリの個数が多い場合には、その個数に応じてバスを配置する必要があるため、バス構成が複雑化し、回路全体として考えると、コア及びキャッシュメモリ間のデータ転送効率が著しく低下するおそれがある。
【０００９】
開示の技術は、上記点に鑑みてなされたものであり、その目的とするところは、バス構成を複雑化することなく、キャッシュメモリ及び演算処理部間で安定したデータ転送効率を確保できる演算処理装置および演算処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
本願の開示するキャッシュメモリ制御装置は、一つの態様において、複数の演算処理部に共有され、キャッシュメモリとしてデータを記憶する複数の記憶部と、前記複数の演算処理部に共有され、前記記憶部から読み出されたデータを前記演算処理部に転送する複数のバスと、前記複数の記憶部毎に時分割された周期に従って各記憶部にアクセスし、前記演算処理部から前記記憶部へのアクセス命令を実行し、当該記憶部から読み出したデータを前記演算処理部に対応する前記バスに転送する命令実行部と、前記演算処理部から前記記憶部へのアクセス命令を受け付け、先行するアクセス命令の実行に要する期間内において同一の記憶部に対する後続のアクセス命令の投入を禁止し、かつ、前記実行に要する期間より短い所定の期間内において前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令の投入を禁止しつつ、前記アクセス命令を前記命令実行部に投入する命令投入部と、前記先行するアクセス命令の実行に要する期間内において前記命令投入部によって同一のバスを用いる後続のアクセス命令が投入された場合に、当該後続のアクセス命令に応じて前記記憶部から読み出されたデータを前記バスへ転送開始するタイミングを遅延させるよう前記命令実行部を制御するタイミング制御部とを有するようにした。
【発明の効果】
【００１１】
本願の開示するキャッシュメモリ制御装置、半導体集積回路及びキャッシュメモリ制御方法の一つの態様では、回路構成を複雑化することなく、キャッシュメモリ及び演算処理部間で安定したデータ転送効率を確保できるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態１のＬＳＩの構成を示すブロック図である。
【図２】図２は、実施の形態１の第１キャッシュ制御部の構成を示すブロック図である。
【図３】図３は、コア及び第１キャッシュ制御部間と、ＭＡＣ及び第１キャッシュ制御部間とのデータの流れの一例を示す説明図である。
【図４】図４は、第１キャッシュ制御部の制御パイプラインのタイミング関係を示す説明図である。
【図５】図５は、実施の形態１の第１キャッシュ制御部の制御パイプラインのタイミング関係（パイプ投入禁止区間及びバス共用禁止区間経過後に同一データバスを用いるパイプ命令が同一周期で連続投入した場合）を示す説明図である。
【図６】図６は、第１キャッシュ制御部の制御パイプラインのタイミング関係（パイプ投入禁止区間及びバス共用禁止区間経過後に同一データバスを用いるパイプ命令が異なる周期で連続投入した場合）を示す説明図である。
【図７】図７は、実施の形態２のＬＳＩの構成を示すブロック図である。
【図８】図８は、実施の形態３のＬＳＩの構成を示すブロック図である。
【図９】図９は、実施の形態３の第１キャッシュ制御部の構成を示すブロック図である。
【図１０】図１０は、コア及び第１キャッシュ制御部間と、ＭＡＣ及び第１キャッシュ制御部間とのデータの流れの一例を示す説明図である。
【図１１】図１１は、ＲＳＬの構成を示す説明図である。
【図１２】図１２は、実施の形態３の第１キャッシュ制御部の制御パイプラインのタイミング関係（パイプ投入禁止区間及びバス共用禁止区間経過後に同一データバスを用いるパイプ命令が同一周期で連続投入した場合）を示す説明図である。
【図１３】図１３は、実施の形態３の第１キャッシュ制御部の制御パイプラインのタイミング関係（パイプ投入禁止区間内で同一データバスを用いるパイプ命令が異なる周期で連続投入した場合）を示す説明図である。
【図１４】図１４は、実施の形態３の第１キャッシュ制御部内の制御パイプラインのタイミング関係（アクセス周期に偏りが生じた場合）を示す説明図である。
【図１５】図１５は、実施の形態４の第１キャッシュ制御部の構成を示すブロック図である。
【図１６】図１６は、実施の形態４の第１キャッシュ制御部の制御パイプラインのタイミング関係（アクセス周期の偏りを防止した場合）を示す説明図である。
【発明を実施するための形態】
【００１３】
以下、図面に基づき、本願の開示するキャッシュメモリ制御装置、半導体集積回路及びキャッシュメモリ制御方法に関わるＬＳＩ（Large Scale Integrated Circuit）の実施の形態について詳細に説明する。
【００１４】
［実施の形態１］
図１は、実施の形態１のＬＳＩの構成を示すブロック図である。図１に示すＬＳＩ１は、キャッシュメモリ２、コア３、メモリアクセスコントローラ（以下、単にＭＡＣと称する）４、キャッシュ制御部５及びデータバス６を有する。キャッシュメモリ２は、コア３、ＭＡＣ４、キャッシュ制御部５及びデータバス６と接続され、図示せぬ主記憶装置に格納した、コア３の演算処理に使用するデータを一時記憶する。
【００１５】
また、キャッシュメモリ２は、主記憶装置が、例えば、４個のバンクメモリ（ＭＭ０〜ＭＭ１）に分割された場合に、これら各バンクメモリ（ＭＭ０〜ＭＭ３）に対応付けて、４個のデータメモリ２Ａ（Ｍ０〜Ｍ３）に分割される。尚、キャッシュメモリ２は、例えば、ランダムアクセスメモリ（以下、単にＲＡＭと称する）等である。コア３は、例えば、データバス６及びキャッシュ制御部５と接続され、キャッシュメモリ２内のデータに基づき各種演算処理を実行する演算処理部である。尚、コア３は、例えば、８個のコア３（Ｃ０〜Ｃ７）を有する。
【００１６】
ＭＡＣ４は、キャッシュ制御部５と接続され、バンクメモリ（ＭＭ０〜ＭＭ３）を制御する。また、ＭＡＣ４は、各バンクメモリ（ＭＭ０〜ＭＭ３）に対応付けて４個のＭＡＣ４Ａ（ＭＣ０〜ＭＣ４）に分割されている。尚、ＭＡＣ４は、例えば、ＭＣ０の場合には、データメモリ２Ａ（Ｍ０）に対応付けたバンクメモリ（ＭＭ０）を制御し、ＭＣ３の場合には、データメモリ２Ａ（Ｍ３）に対応付けたバンクメモリ（ＭＭ３）を制御する。
【００１７】
キャッシュ制御部５は、コア３、ＭＡＣ４、データバス６及び主記憶装置と接続され、その内部のデータ転送等を制御する。尚、ＬＳＩ１は、例えば、８個のコア３（Ｃ０〜Ｃ７）、４個のデータメモリ２Ａ（Ｍ０〜Ｍ３）及び４個のＭＡＣ４Ａ（ＭＣ０〜ＭＣ３）を基板外周縁上に配置し、キャッシュ制御部５を基板中央に配置する。
【００１８】
更に、キャッシュ制御部５は、第１キャッシュ制御部５Ａ及び第２キャッシュ制御部５Ｂを有する。第１キャッシュ制御部５Ａは、データメモリ２Ａ（Ｍ０及びＭ１）及びＭＡＣ４Ａ（ＭＣ０及びＭＣ１）を制御する。また。第２キャッシュ制御部５Ｂは、データメモリ２Ａ（Ｍ２及びＭ３）及びＭＡＣ４Ａ（ＭＣ２及びＭＣ３）を制御する。
【００１９】
データバス６は、複数のコア３及びデータメモリ２Ａ間でデータを転送する。例えば、ＬＳＩ１は、第１データバス６Ａ及び第２データバス６Ｂを有する。第１データバス６Ａは、例えば、データメモリ２Ａから複数のコア３（Ｃ０，Ｃ１，Ｃ４及びＣ５）へデータを転送する。第２データバス６Ｂは、例えば、データメモリ２Ａから複数のコア３（Ｃ２，Ｃ３，Ｃ６及びＣ７）へデータを転送する。
【００２０】
次に、第１キャッシュ制御部５Ａの構成について説明する。図２は、実施の形態１の第１キャッシュ制御部５Ａの構成を示すブロック図である。図２に示す第１キャッシュ制御部５Ａは、制御パイプライン１０、ムーブアウトデータキュー（以下、単にＭＯＤＱと称する）１１及びムーブインデータキュー（以下、単にＭＩＤＱと称する）１２を有する。更に、第１キャッシュ制御部５Ａは、ライトバックデータキュー（以下、単にＷＢＤＱと称する）１３、キューセレクタ（以下、単にＱＳＬと称する）１４及び接続ラインＬ０を有する。更に、第１キャッシュ制御部５Ａは、出力セレクタ（以下、単にＯＳＬと称する）１５及びデータセレクタ（以下、単にＤＳＬと称する）１６を有する。更に、第１キャッシュ制御部５Ａは、ムーブインポート（以下、単にＭＩポートと称する）１７、ムーブアウトポート（以下、単にＭＯポートと称する）１８及びムーブインバッファ（以下、単にＭＩバッファと称する）１９を有する。更に、第１キャッシュ制御部５Ａは、要求セレクタ（以下、単にＲＳＬと称する）２０及びタグメモリ２１を有する。
【００２１】
制御パイプライン１０は、データメモリ２Ａ（Ｍ０及びＭ１）毎に、例えば、ＥＶＥＮ周期及びＯＤＤ周期の２サイクル周期でパイプ命令の投入を受け付ける。データメモリ２Ａ（Ｍ０）にアクセスする場合はＥＶＥＮ周期を使用し、データメモリ２Ａ（Ｍ１）にアクセスする場合はＯＤＤ周期を使用する。
【００２２】
ＭＯＤＱ１１は、データバス６及びＭＡＣ４と接続され、ムーブアウトデータを格納する。ＭＯＤＱ１１は、ＥＶＥＮ周期側のＭＯＤＱ−ＥＶ１１Ａ及びＯＤＤ周期側のＭＯＤＱ−ＯＤ１１Ｂを有し、ＭＯＤＱ−ＥＶ１１Ａは第１データバス６Ａと接続され、ＭＯＤＱ−ＯＤ１１Ｂは第２データバス６Ｂと接続される。尚、ムーブアウトデータは、キャッシュメモリ２から消去するデータである。
【００２３】
ＭＩＤＱ１２は、ＱＳＬ１４及びＭＡＣ４と接続され、ムーブインデータを格納する。ＭＩＤＱ１２は、ＥＶＥＮ周期側のＭＩＤＱ−ＥＶ１２Ａ及びＯＤＤ周期側のＭＩＤＱ−ＯＤ１２Ｂを有し、ＭＩＤＱ−ＥＶ１２Ａ及びＭＩＤＱ−ＯＤ１２Ｂは、ＭＡＣ４Ａ（ＭＣ０）及び（ＭＣ１）と接続される。尚、ムーブインデータは、キャッシュメモリ２に新規登録するデータである。
【００２４】
ＷＢＤＱ１３は、コア３及びＱＳＬ１４と接続され、ライトバックデータを格納する。ＷＢＤＱ１３は、ＥＶＥＮ周期側のＷＢＤＱ−ＥＶ１３Ａ及びＯＤＤ周期側のＷＢＤＱ−ＯＤ１３Ｂを有する。尚、ライトバックデータは、コア３内部の図示せぬキャッシュメモリ２に登録済みのデータをキャッシュメモリ２又は主記憶装置に戻すデータである。
【００２５】
ＱＳＬ１４は、データメモリ２Ａ、ＷＢＤＱ１３、ＭＩＤＱ１２及び接続ラインＬ０と接続され、ＷＢＤＱ１３の出力データ又はＭＩＤＱ１２の出力データをデータメモリ２Ａ及び接続ラインＬ０に出力する。ＱＳＬ１４は、ＥＶＥＮ周期側のＱＳＬ−ＥＶ１４Ａ及びＯＤＤ周期側のＱＳＬ−ＯＤ１４Ｂを有する。ＱＳＬ−ＥＶ１４Ａは、ＷＢＤＱ−ＥＶ１３Ａの出力データ又はＭＩＤＱ−ＥＶ１２Ａの出力データをデータメモリ２Ａ（Ｍ０）及び接続ラインＬ０に出力する。ＱＳＬ−ＯＤ１４Ｂは、ＷＢＤＱ−ＯＤ１３Ｂの出力データ又はＭＩＤＱ−ＯＤ１２Ｂの出力データをデータメモリ２Ａ（Ｍ１）及び接続ラインＬ０に出力する。
【００２６】
接続ラインＬ０は、ＱＳＬ１４及びＯＳＬ１５と接続され、例えば、ＱＳＬ−ＥＶ１４Ａ及びＯＳＬ−ＥＶ１５Ａ間、又はＱＳＬ−ＯＤ１４Ｂ及びＯＳＬ−ＯＤ１５Ｂ間を直接接続する伝送線に相当する。接続ラインＬ０は、例えば、ＱＳＬ−ＥＶ１４Ａから該当データをＯＳＬ−ＥＶ１５Ａに直接出力する。接続ラインＬ０は、例えば、ＱＳＬ−ＯＤ１４Ｂから該当データをＯＳＬ−ＯＤ１５Ｂに直接出力する。
【００２７】
ＯＳＬ１５は、データメモリ２Ａ（Ｍ０）、接続ラインＬ０及びＤＳＬ１６と接続され、データメモリ２Ａの出力データ又は、接続ラインＬ０経由のＱＳＬ１４の出力データをＤＳＬ１６に出力する。ＯＳＬ１５は、ＥＶＥＮ周期側のＯＳＬ−ＥＶ１５Ａ及びＯＤＤ周期側のＯＳＬ−ＯＤ１５Ｂを有する。ＯＳＬ−ＥＶ１５Ａは、データメモリ２Ａ（Ｍ０）の出力データ又は、接続ラインＬ０経由のＱＳＬ−ＥＶ１４Ａの出力データをＤＳＬ１６に出力する。ＯＳＬ−ＯＤ１５Ｂは、データメモリ２Ａ（Ｍ１）の出力データ又は、接続ラインＬ０経由のＱＳＬ−ＯＤ１４Ｂの出力データをＤＳＬ１６に出力する。
【００２８】
第１データバス６Ａは、コア３（Ｃ０，Ｃ１，Ｃ４，Ｃ５）及びＭＯＤＱ−ＥＶ１１Ａと接続され、第２データバス６Ｂは、コア３（Ｃ２，Ｃ３，Ｃ６，Ｃ７）及びＭＯＤＱ−ＯＤ１１Ｂと接続される。また、ＤＳＬ１６は、ＯＳＬ−ＥＶ１５Ａ及びＯＳＬ−ＯＤ１５Ｂと接続され、ＯＳＬ−ＥＶ１５Ａの出力データ又はＯＳＬ−ＯＤ１５Ｂの出力データをデータバス６（第１データバス６Ａ又は第２データバス６Ｂ）に出力する。
【００２９】
ＭＩポート１７は、コア３及びＲＳＬ２０と接続され、当該コア３からのムーブイン要求を検出すると、リード（以下、単にＲＤと称する）を発行する。ＭＩポート１７は、コア３（Ｃ０〜Ｃ７）毎に配置され、８個のＭＩポート（ＭＩＰ０〜ＭＩＰ７）を有する。尚、ＲＤは、コア３からのデータ読出要求に相当するパイプ命令である。
【００３０】
ＭＯポート１８は、コア３及びＲＳＬ２０と接続され、当該コア３からのムーブアウト要求を検出すると、バイパスムーブアウト（以下、単にＢＰＭＯと称する）を発行する。ＭＯポート１８は、コア３（Ｃ０〜Ｃ７）毎に配置され、８個のＭＯポート１８（ＭＯＰ０〜ＭＯＰ７）を有する。尚、ＢＰＭＯは、ＷＢＤＱ１３に格納されたライトバックデータをＭＯＤＱ１１に格納するパイプ命令である。
【００３１】
ＭＩバッファ１９は、ＭＡＣ４及びＲＳＬ２０と接続され、当該ＭＡＣ４への要求を出力すると共に、ＭＡＣ４からの要求に応じてパイプ命令を発行する。ＭＩバッファ１９は、ＭＡＣ４（ＭＣ０及びＭＣ１）毎に配置される。尚、ＭＩバッファ１９のパイプ命令は、キャッシュメモリ２から該当データを消去要求するムーブアウトリプレイス（以下、単にＭＯＲＰと称する）や、キャッシュメモリ２に該当データを登録要求するムーブイン（以下、単にＭＶＩＮと称する）等である。
【００３２】
ＲＳＬ２０は、ＭＩポート１７、ＭＯポート１８、ＭＩバッファ１９及び制御パイプライン１０と接続され、制御パイプライン１０上の該当周期（ＥＶＥＮ又はＯＤＤ周期）にパイプ命令を投入する。タグメモリ２１は、制御パイプライン１０及びデータメモリ２Ａと接続され、データメモリ２Ａ毎に配置され、データメモリ２Ａの該当データのアドレスを管理する。尚、タグメモリ２１は、例えば、キャッシュメモリ２の一部である。タグメモリ２１は、制御パイプライン１０上の該当周期に投入したパイプ命令に応じて該当データのアドレスを検索する。また、タグメモリ２１は、データメモリ２Ａだけでなく、コア３内部の図示せぬコアキャッシュメモリ毎に、該当データのアドレスを管理する。
【００３３】
尚、第２キャッシュ制御部５Ｂの構成についても、データメモリ２Ａ（Ｍ２又はＭ３）を対象にした点で図２とは異なるものの、実質的な構成についてはほぼ同一であるので、その重複する構成及び動作の説明は省略する。
【００３４】
次に、コア３及び第１キャッシュ制御部５Ａ間と、ＭＡＣ４及び第１キャッシュ制御部５Ａ間とのデータの流れについて説明する。図３は、コア３及び第１キャッシュ制御部５Ａ間と、ＭＡＣ４及び第１キャッシュ制御部５間とのデータの流れの一例を示す説明図である。図３に示すＲＳＬ２０は、例えば、ＭＩポート１７からコア３（Ｃ０）のＲＤを検出した場合には、制御パイプライン１０上の該当周期（ＥＶＥＮ周期又はＯＤＤ周期）にコア３（Ｃ０）のＲＤをパイプ投入する。タグメモリ２１は、制御パイプライン１０上のＲＤに基づき、データメモリ２Ａ（Ｍ０又はＭ１）内の該当データに対応するアドレスを検索する。
【００３５】
タグメモリ２１は、当該タグメモリ２１内に該当データのアドレスがある場合には、キャッシュヒットと判断し、該当データのアドレスをデータメモリ２Ａに出力する。一方、タグメモリ２１は、当該タグメモリ２１内に該当データのアドレスがない場合には、キャッシュミスと判断し、キャッシュミスの該当データの転送要求をＭＩバッファ１９に出力する。
【００３６】
更に、データメモリ２Ａ（Ｍ０又はＭ１）は、キャッシュヒットの場合に、タグメモリ２１内の該当データのアドレスに基づき、当該データメモリ２Ａから該当データを読み出し、ＯＳＬ１５経由でＤＳＬ１６に出力する。更に、ＤＳＬ１６は、第１データバス６Ａ又は第２データバス６Ｂの内、要求元のコア３（Ｃ０）のデータ転送に用いるデータバスに該当データを出力する。
【００３７】
一方、ＭＩバッファ１９は、キャッシュミスの場合に、キャッシュミスした該当データの転送要求を検出すると、該当データをＭＩＤＱ１２に転送すべく、転送要求をＭＡＣ４Ａ（ＭＣ０又はＭＣ１）に通知する。更に、ＭＩバッファ１９は、データメモリ２Ａ内に該当データを登録する空き領域を確保すべく、ＭＯＲＰを発行する。
【００３８】
ＲＳＬ２０は、ＭＯＲＰを検出した場合には、制御パイプライン１０上の該当周期にＭＯＲＰをパイプ投入する。タグメモリ２１は、制御パイプライン１０上のＭＯＲＰに基づき、タグメモリ２１内からＭＯＲＰ対象のデータのアドレスを検索する。タグメモリ２１は、ＭＯＲＰ対象のアドレスがある、例えば、コアキャッシュメモリ内のアドレスがある場合には、このコア３（Ｃ０）に対してムーブアウト要求を通知する。
【００３９】
コア３（Ｃ０）は、ムーブアウト要求を検出すると、当該コアキャッシュメモリ内から該当ムーブアウトデータを読み出す。そして、コア３（Ｃ０）は、そのデータをライトバックデータとしてＷＢＤＱ１３に格納した後、当該コア３（Ｃ０）に対応するＭＯポート１８に応答ムーブアウト要求を通知する。
【００４０】
ＭＯポート１８は、応答ムーブアウト要求を検出すると、ＢＰＭＯを発行する。ＲＳＬ２０は、ＢＰＭＯを検出すると、制御パイプライン１０上の該当周期にコア３（Ｃ０）のＢＰＭＯをパイプ投入する。タグメモリ２１は、制御パイプライン１０上のＢＰＭＯに基づき、ＭＯＲＰ対象のデータのアドレスを当該タグメモリ２１から消去し、ＷＢＤＱ１３のライトバックデータをＤＳＬ１６経由でＭＯＤＱ１１内へ転送して格納する。更に、第１キャッシュ制御部５Ａは、ＭＯＤＱ１１に格納されたライトバックデータを主記憶装置のバンクメモリ（ＭＭ０又はＭＭ１）に記憶すべく、ＭＡＣ（ＭＣ０又はＭＣ１）４Ａに要求する。
【００４１】
ＭＡＣ４Ａ（ＭＣ０又はＭＣ１）は、記憶要求を検出すると、主記憶装置への記憶準備が完了次第、ＭＯＤＱ１１内のライトバックデータを読み出し、当該ライトバックデータを主記憶装置内のバンクメモリ（ＭＭ０又はＭＭ１）に記憶する。その後、ＭＩバッファ１９は、ＭＡＣ４（ＭＣ０又はＭＣ１）からの該当データをＭＩＤＱ１２に格納した後、ＭＩＤＱ１２に格納された該当データのデータメモリ２Ａ（Ｍ０又はＭ１）への登録要求を検出すると、ＭＶＩＮを発行する。ＲＳＬ２０は、ＭＶＩＮを検出した場合には、制御パイプライン１０上の該当周期にＭＶＩＮをパイプ投入する。
【００４２】
タグメモリ２１は、制御パイプライン１０上のＭＶＩＮに基づき、当該タグメモリ２１内に該当データのアドレスを登録する。更に、データメモリ２Ａ（Ｍ０又はＭ１）は、ＭＩＤＱ１２に格納された該当データを当該データメモリ２Ａ（Ｍ０又はＭ１）に格納しながら、接続ラインＬ０経由で該当データを要求元のコア３（Ｃ０）に転送する。
【００４３】
一方で、データメモリ２Ａ（Ｍ０又はＭ１）は、例えば、ＲＤ時にタグメモリ２１内のコアキャッシュメモリにＭＯＲＰ対象のアドレスがなくても、当該データメモリ２Ａ（Ｍ０又はＭ１）内にある場合には、該当データを読み出す。そして、データメモリ２Ａ（Ｍ０又はＭ１）は、該当データを、ＱＳＬ１４及びＤＳＬ１６経由でＭＯＤＱ１１に転送して格納する。更に、ＭＯＤＱ１１は、該当データを格納すると、該当データをライトバックデータとして主記憶装置のバンクメモリ（ＭＭ０又はＭＭ１）に記憶させるべく、ＭＡＣ４Ａ（ＭＣ０又はＭＣ１）に要求する。
【００４４】
次に、実施の形態１のＬＳＩ１の動作について説明する。図４は、第１キャッシュ制御部５Ａの制御パイプライン１０のタイミング関係を示す説明図である。図４では、例えば、第１サイクル〜第２０サイクルをＥＶＥＮ周期及びＯＤＤ周期に時分割した例であり、第１キャッシュ制御部５ＡはＥＶＥＮ周期でデータメモリ２Ａ(Ｍ０)にアクセスし、ＯＤＤ周期でデータメモリ２Ａ（Ｍ１）にアクセスする。
【００４５】
ＲＳＬ２０は、例えば、制御パイプライン１０上の第１サイクル（ＥＶＥＮ周期）でコア３（Ｃ０）のＲＤをパイプ投入する。この場合、タグメモリ２１は、第２サイクル（ＯＤＤ周期）でアドレスを読み出すタグＲＤを行い、タグＲＤ後の第９サイクル（ＥＶＥＮ周期）でアドレスを書き込むタグライト（以下、単にタグＷＲと称する）を行う。そして、データメモリ２Ａ（Ｍ０）は、第８サイクル（ＯＤＤ周期）から第１１サイクルまでの期間で該当データを読み出し、第１５サイクル（ＥＶＥＮ周期）から第１８サイクルまでの期間で該当データを第１データバス６Ａ経由で要求元コア３（Ｃ０）に転送する。
【００４６】
尚、データバス６上のコア３及びデータメモリ２Ａ間の１キャッシュブロックのデータ転送には４サイクルを要する。従って、タグＲＤ後の第３サイクルから第５サイクルまでの期間の３サイクル分は、第１データバス６Ａを用いる他のパイプ投入を禁止する第１データバス６Ａのバス共用禁止区間となると共に、ＥＶＥＮ周期のパイプ投入を禁止するパイプ投入禁止区間となる。つまり、データ転送にＮサイクルを要する場合には、そのパイプ投入禁止区間及びバス共用禁止区間は、パイプ命令投入後の（Ｎ−１）サイクル分となる。
【００４７】
また、タグメモリ２１のタグＲＤは第２サイクルのＯＤＤ周期で行われるのに対し、タグメモリ２１のタグＷＲは第９サイクルのＥＶＥＮ周期で行われるので、タグＲＤ及びタグＷＲの前後命令でＥＶＥＮ／ＯＤＤが逆転している。従って、タグメモリ２１では、タグＲＤ及びタグＷＲの前後命令でアクセス周期が競合しないので、ＲＤ／ＷＲ同時にアクセス不可のシングルポートメモリでタグメモリ２１を構成できる。また、タグメモリ２１では、制御パイプライン１０上でＲＤ及びＷＲの２回のアクセスが可能であるのに対し、データメモリ２Ａは、ＲＤ又はＷＲ何れか１回しかアクセスできない。
【００４８】
また、ＲＳＬ２０は、例えば、制御パイプライン１０上の第２サイクル（ＯＤＤ周期）にコア３（Ｃ３）のＲＤをパイプ投入する。この場合、タグメモリ２１は、第３サイクル（ＥＶＥＮ周期）でタグＲＤを行い、タグＲＤ後の第１０サイクル（ＯＤＤ周期）でタグＷＲを行う。そして、データメモリ２Ａ（Ｍ１）は、第９サイクル（ＥＶＥＮ周期）から第１２サイクルまでの期間で該当データを読み出し、第１６サイクル（ＯＤＤ周期）から第１９サイクルまでの期間で該当データを第２データバス６Ｂ経由で要求元コア３（Ｃ３）に転送する。また、タグＲＤ後の第４サイクルから第６サイクルまでの期間の３サイクル分は、第２データバス６Ｂを用いる他のパイプ投入を禁止する第２データバス６Ｂのバス共用禁止区間となると共に、ＯＤＤ周期のパイプ投入を禁止するパイプ投入禁止区間となる。
【００４９】
尚、図４では、データメモリ２Ａから要求元コア３へのデータ転送を例に挙げて説明した。しかしながら、データバス６経由でＷＢＤＱ１３からＭＯＤＱ１１へのライトバックデータ転送時でも、ライトバックデータのデータ転送には４サイクルを要するので、パイプ投入禁止区間及びバス共用禁止区間はＢＰＭＯパイプ投入後の３サイクル分となる。
【００５０】
次に、制御パイプライン１０上のアクセス周期（ＥＶＥＮ周期又はＯＤＤ周期）にパイプ命令を連続投入した場合の動作について説明する。図５は、実施の形態１の第１キャッシュ制御部５Ａの制御パイプライン１０のタイミング関係（パイプ投入禁止区間及びバス共用禁止区間経過後に同一データバス６を用いるパイプ命令が同一周期で連続投入した場合）を示す説明図である。
【００５１】
ここで、パイプ命令の連続投入とは、先行のパイプ命令を投入した後、先行のパイプ命令と同一周期のパイプ投入禁止区間及び同一データバス６のバス共用禁止区間経過直後のアクセス周期に後続のパイプ命令が投入した場合である。更に、同一データバス６を用いるパイプ命令とは、例えば、第１データバス６Ａの場合には、コア３（Ｃ０）、コア３（Ｃ１）、コア３（Ｃ４）、コア３（Ｃ５）やＭＯＤＱ−ＥＶ１１Ａをデータ転送先とするパイプ命令に相当する。また、第２データバス６Ｂの場合には、コア３（Ｃ２）、コア３（Ｃ３）、コア３（Ｃ６）、コア３（Ｃ７）やＭＯＤＱ−ＯＤ１１Ｂをデータ転送先とするパイプ命令に相当する。図５では、例えば、第１サイクル〜第２０サイクルをＥＶＥＮ周期及びＯＤＤ周期に時分割した例であり、第１キャッシュ制御部５ＡはＥＶＥＮ周期でデータメモリ２Ａ(Ｍ０)にアクセスし、ＯＤＤ周期でデータメモリ２Ａ（Ｍ１）にアクセスする。
【００５２】
第１キャッシュ制御部５Ａ内のＭＩポート１７（ＭＩ０）は、例えば、コア３（Ｃ０）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０は、制御パイプライン１０上の第１サイクル（ＥＶＥＮ周期）でコア３（Ｃ０）のＲＤをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ０）のＲＤ投入後の第２サイクルから第４サイクルまでの期間の３サイクル分を、ＥＶＥＮ周期のパイプ投入禁止区間に設定すると共に、コア３（Ｃ０）と共用する第１データバス６Ａのバス共用禁止区間に設定する。
【００５３】
第１キャッシュ制御部５Ａ内のＤＳＬ１６は、コア３（Ｃ０）のＲＤ投入後の第９サイクル（ＥＶＥＮ周期）でデータメモリ２Ａ（Ｍ０）からの該当データを要求元のコア３（Ｃ０）へ転送すべく、第１データバス６Ａ上のデータ転送を開始する。第１データバス６Ａは、第９サイクル（ＥＶＥＮ周期）から第１２サイクルまでの期間の４サイクルでコア３（Ｃ０）の該当データを転送する。
【００５４】
また、ＭＩポート１７（ＭＩ３）は、例えば、コア３（Ｃ３）からデータメモリ２Ａ（Ｍ１）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０は、制御パイプライン１０上の第２サイクル（ＯＤＤ周期）でＲＤをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ３）のＲＤ投入後の第３サイクルから第５サイクルまでの期間の３サイクル分を、ＯＤＤ周期のパイプ投入禁止区間に設定すると共に、第２データバス６Ｂのバス共用禁止区間に設定する。
【００５５】
ＤＳＬ１６は、コア３（Ｃ３）のＲＤ投入後の第１０サイクル（ＯＤＤ周期）でデータメモリ２Ａ（Ｍ１）からの該当データを要求元のコア３（Ｃ３）へ転送すべく、第２データバス６Ｂ上のデータ転送を開始する。第２データバス６Ｂは、第１０サイクル（ＯＤＤ周期）から第１３サイクルまでの期間の４サイクルでコア３（Ｃ３）の該当データを転送する。
【００５６】
また、ＭＩポート１７（ＭＩ５）は、例えば、コア３（Ｃ５）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０は、ＥＶＥＮ周期のパイプ投入禁止区間経過後、かつ、第１データバス６Ａのバス共用禁止区間経過後、制御パイプライン１０上の第５サイクル（ＥＶＥＮ周期）でコア３（Ｃ５）のＲＤをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ５）のＲＤ投入後の第６サイクルから第８サイクルまでの期間の３サイクル分を、ＥＶＥＮ周期のパイプ投入禁止区間に設定すると共に、第１データバス６Ａのバス共用禁止区間に設定する。
【００５７】
ＤＳＬ１６は、コア３（Ｃ５）のＲＤ投入後の第１３サイクル（ＥＶＥＮ周期）でデータメモリ２Ａ（Ｍ０）からの該当データを要求元のコア３（Ｃ５）へ転送すべく、第１データバス６Ａ上のデータ転送を開始する。第１データバス６Ａは、第１３サイクル（ＥＶＥＮ周期）から第１６サイクルまでの期間の４サイクルでコア３（Ｃ５）の該当データを転送する。
【００５８】
更に、ＭＩポート１７（ＭＩ６）は、例えば、コア３（Ｃ６）からデータメモリ２Ａ（Ｍ１）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０は、ＯＤＤ周期のパイプ投入禁止区間経過後、かつ、第２データバス６Ｂのバス共用禁止区間経過後、制御パイプライン１０上の第６サイクル（ＯＤＤ周期）でコア３（Ｃ６）のＲＤをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ６）のＲＤ投入後の第７サイクルから第９サイクルまでの期間の３サイクル分を、ＯＤＤ周期のパイプ投入禁止区間に設定すると共に、第２データバス６Ｂのバス共用禁止区間に設定する。
【００５９】
ＤＳＬ１６は、コア３（Ｃ６）のＲＤ投入後の第１４サイクル（ＯＤＤ周期）でデータメモリ２Ａ（Ｍ１）からの該当データを要求元のコア３（Ｃ６）へ転送すべく、第２データバス６Ｂ上のデータ転送を開始する。第２データバス６Ｂは、第１４サイクル（ＯＤＤ周期）から第１７サイクルまでの期間の４サイクルでコア３（Ｃ６）の該当データを転送する。
【００６０】
また、ＭＩポート１７（ＭＩ１）は、例えば、コア３（Ｃ１）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０は、ＥＶＥＮ周期のパイプ投入禁止区間経過後、かつ、第１データバス６Ａのバス共用禁止区間経過後、制御パイプライン１０上の第９サイクル（ＥＶＥＮ周期）でコア３（Ｃ１）のＲＤをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ１）のＲＤ投入後の第１０サイクルから第１２サイクルまでの期間の３サイクル分を、ＥＶＥＮ周期のパイプ投入禁止区間に設定すると共に、第１データバス６Ａのバス共用禁止区間に設定する。
【００６１】
ＤＳＬ１６は、コア３（Ｃ１）のＲＤ投入後の第１７サイクル（ＥＶＥＮ周期）でデータメモリ２Ａ（Ｍ０）からの該当データを要求元のコア３（Ｃ１）へ転送すべく、第１データバス６Ａ上のデータ転送を開始する。第１データバス６Ａは、第１７サイクル（ＥＶＥＮ周期）から第２０サイクルまでの期間の４サイクルでコア３（Ｃ１）の該当データを転送する。
【００６２】
また、ＭＯポート１８（ＭＯ３）は、例えば、ＷＢＤＱ−ＯＤ１３ＢからＭＯＤＱ―ＯＤ１１Ｂへのムーブアウト要求をコア３（Ｃ３）から検出すると、バイパスムーブアウト（以下、単にＢＰＭＯと称する）を発行する。ＲＳＬ２０は、ＯＤＤ周期のパイプ投入禁止区間経過後、かつ、第２データバス６Ｂのバス共用禁止区間経過後、ＷＢＤＱ−ＯＤ１３Ｂへアクセスする制御パイプライン１０上の第１０サイクル（ＯＤＤ周期）でコア３（Ｃ３）のＢＰＭＯをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ３）のＢＰＭＯ投入後の第１１サイクルから第１３サイクルまでの期間の３サイクル分をＯＤＤ周期のパイプ投入禁止区間に設定すると共に、第２データバス６Ｂのバス共用禁止区間に設定する。
【００６３】
ＤＳＬ１６は、ＢＰＭＯ投入後の第１８サイクル（ＯＤＤ周期）でＷＢＤＱ−ＯＤ１３Ｂからの該当データをＭＯＤＱ−ＯＤ１１Ｂへ転送すべく、第２データバス６Ｂ上のデータ転送を開始する。第２データバス６Ｂは、第１８サイクル（ＯＤＤ周期）から第２１サイクルまでの期間の４サイクルで該当データをＭＯＤＱ−ＯＤ１１Ｂに転送する。
【００６４】
その結果、第１データバス６Ａでは、４サイクル毎のＥＶＥＮ周期で連続的にパイプ命令を投入した場合には、データメモリ２Ａ（Ｍ０）から該当データを間断なく、コア３（Ｃ０），コア３（Ｃ５）及びコア３（Ｃ１）の該当データ順に連続転送できる。第２データバス６Ｂでは、４サイクル毎のＯＤＤ周期で連続的にパイプ命令を投入した場合、データメモリ２Ａ（Ｍ１）及びＷＢＤＱ−ＯＤ１３Ｂから該当データを間断なく、コア３（Ｃ３）、コア３（Ｃ６）及びＭＯＤＱ−ＯＤ１１Ｂの該当データ順に連続転送できる。
【００６５】
上述したように実施の形態１では、複数のコア３が共有する主記憶装置を複数のバンクメモリに分割し、これらバンクメモリに対応付けてキャッシュメモリ２を複数のデータメモリ２Ａに分割する。その結果、複数のデータメモリ２Ａに対するコア３側のアクセス効率が大幅に向上すると共に、複数のデータメモリ２Ａに対するコア３側のデータ取得率が大幅に向上する。
【００６６】
更に、実施の形態１では、複数のデータメモリ２Ａ（Ｍ０及びＭ１：Ｍ２及びＭ３）のアクセス制御を１本の制御パイプライン１０で共用し、制御パイプライン１０上を２個のデータメモリ２Ａ（Ｍ０及びＭ１：Ｍ２及びＭ３）のアクセス周期に時分割する。その結果、データメモリ２Ａ毎に制御パイプライン１０を準備する必要もなくなるので、部品個数の削減及び制御の簡素化を図ることができる。
【００６７】
更に、実施の形態１では、キャッシュ制御部５を第１キャッシュ制御部５Ａ及び第２キャッシュ制御部５Ｂに分割し、これら第１キャッシュ制御部５Ａ及び第２キャッシュ制御部５Ｂでデータメモリ２Ａを分担制御する。すなわち、第１キャッシュ制御部５Ａでデータメモリ２Ａ（Ｍ０及びＭ１）を分担制御すると共に、第２キャッシュ制御部５Ｂでデータメモリ２Ａ（Ｍ２及びＭ３）を分担制御する。その結果、第１キャッシュ制御部５Ａ及び第２キャッシュ制御部５Ｂの２台に制御負担を分散化することで、処理効率の向上を図ることができる。
【００６８】
実施の形態１では、パイプ投入禁止区間及びバス共用禁止区間経過後、先行パイプ命令と同一のデータバス６を用いる後続のパイプ命令を先行パイプ命令と同一周期で連続投入した場合、パイプ命令に応じたデータを間断なく、データバス６上に連続転送できる。その結果、複雑なバス構成を要することなく、データバス６上で安定したデータ転送効率を確保できる。例えば、第１データバス６Ａを用いる後続のパイプ命令を同一周期で連続投入した場合には、パイプ命令に応じたデータを間断なく連続転送することで、第１データバス６Ａ上で安定したデータ転送効率を確保できる。同様に、第２データバス６Ｂを用いる後続のパイプ命令を同一周期で連続投入した場合には、パイプ命令に応じたデータを間断なく連続転送することで、第２データバス６Ｂ上で安定したデータ転送効率を確保できる。
【００６９】
ところで、先行パイプ命令のパイプ投入禁止区間及びバス共用禁止区間経過後に、先行パイプ命令と同一のデータバス６を用いる後続のパイプ命令が同一周期で連続投入した場合はパイプ命令に対応したデータを連続転送できる。そこで、次に、先行パイプ命令のパイプ投入禁止区間及びバス共用禁止区間経過後に、先行パイプ命令と同一のデータバス６を用いる後続のパイプ命令が異なる周期で連続投入した場合の動作について説明する。図６は、第１キャッシュ制御部５Ａの制御パイプライン１０のタイミング関係（パイプ投入禁止区間及びバス共用禁止区間経過後に、同一データバス６を用いるパイプ命令が異なる周期で連続投入した場合）を示す説明図である。図６では、例えば、第１サイクル〜第２０サイクルをＥＶＥＮ周期及びＯＤＤ周期に時分割した例であり、第１キャッシュ制御部５Ａは、ＥＶＥＮ周期でデータメモリ２Ａ(Ｍ０)にアクセスし、ＯＤＤ周期でデータメモリ２Ａ（Ｍ１）にアクセスする。
【００７０】
ＭＩポート１７（ＭＩ０）は、例えば、コア３（Ｃ０）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０は、制御パイプライン１０上の第１サイクル（ＥＶＥＮ周期）でコア３（Ｃ０）のＲＤをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ０）のＲＤ投入後の第２サイクルから第４サイクルまでの期間の３サイクル分を、ＥＶＥＮ周期のパイプ投入禁止区間に設定すると共に、第１データバス６Ａのバス共用禁止区間に設定する。
【００７１】
ＤＳＬ１６は、コア３（Ｃ０）のＲＤ投入後の第９サイクル（ＥＶＥＮ周期）でデータメモリ２Ａ（Ｍ０）からの該当データを要求元のコア３（Ｃ０）へ転送すべく、第１データバス６Ａ上のデータ転送を開始する。第１データバス６Ａは、第９サイクル（ＥＶＥＮ周期）から第１２サイクルまでの期間の４サイクルでコア３（Ｃ０）の該当データを転送する。
【００７２】
また、ＭＩポート１７（ＭＩ３）は、例えば、コア３（Ｃ３）からデータメモリ２Ａ（Ｍ１）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０は、制御パイプライン１０上の第２サイクル（ＯＤＤ周期）でコア３（Ｃ３）のＲＤをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ３）のＲＤ投入後の第３サイクルから第５サイクルまでの期間の３サイクル分を、ＯＤＤ周期のパイプ投入禁止区間に設定すると共に、第２データバス６Ｂのバス共用禁止区間に設定する。
【００７３】
ＤＳＬ１６は、コア３（Ｃ３）のＲＤ投入後の第１０サイクル（ＯＤＤ周期）でデータメモリ２Ａ（Ｍ１）からの該当データを要求元のコア３（Ｃ３）へ転送すべく、第２データバス６Ｂ上のデータ転送を開始する。第２データバス６Ｂは、第１０サイクル（ＯＤＤ周期）から第１３サイクルまでの期間の４サイクルでコア３（Ｃ３）の該当データを転送する。
【００７４】
また、ＭＩポート１７（ＭＩ７）は、例えば、コア３（Ｃ７）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０は、ＥＶＥＮ周期のパイプ投入禁止区間経過後、本来、制御パイプライン１０上の第５サイクル（ＥＶＥＮ周期）でコア３（Ｃ７）のＲＤをパイプ投入する。しかし、ＲＳＬ２０は、第５サイクル（ＥＶＥＮ周期）が第２データバス６Ｂのバス共用禁止区間（第３サイクル〜第５サイクル）内にあるので、第２データバス６Ｂ上のコア３（Ｃ３）の先行データ及びコア３（Ｃ７）の後続データが第１２サイクルで干渉する。そこで、ＲＳＬ２０では、第２データバス６Ｂのバス共用禁止区間（第３サイクル〜第５サイクル）に基づき、第５サイクル（ＥＶＥＮ周期）でのコア３（Ｃ７）のＲＤのパイプ投入を禁止し、次の第７サイクル（ＥＶＥＮ周期）までパイプ投入を待機する。
【００７５】
また、ＭＩポート１７（ＭＩ４）は、例えば、コア３（Ｃ４）からデータメモリ２Ａ（Ｍ１）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０は、ＯＤＤ周期のパイプ投入禁止区間経過後、かつ第１データバス６Ａのバス共用禁止区間経過後、制御パイプライン１０上の第６サイクル（ＯＤＤ周期）でコア３（Ｃ４）のＲＤをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ４）のＲＤ投入後の第７サイクルから第９サイクルまでの期間の３サイクル分を、ＯＤＤ周期のパイプ投入禁止区間に設定すると共に、第１データバス６Ａのバス共用禁止区間に設定する。
【００７６】
ＤＳＬ１６は、コア３（Ｃ４）のＲＤ投入後の第１４サイクル（ＯＤＤ周期）でデータメモリ２Ａ（Ｍ１）からの該当データを要求元のコア３（Ｃ４）へ転送すべく、第１データバス６Ａ上のデータ転送を開始する。第１データバス６Ａは、第１４サイクル（ＯＤＤ周期）から第１７サイクルまでの期間の４サイクルでコア３（Ｃ４）の該当データを転送する。その結果、同一の第１データバス６Ａを用いるパイプ命令が先行のパイプ命令と異なるＯＤＤ周期で連続投入したことで、第１データバス６Ａ上のコア３（Ｃ０）の先行データ及びコア３（Ｃ４）の後続データ間の第１３サイクルでは１サイクル分の間断が生じる。
【００７７】
また、ＲＳＬ２０は、ＥＶＥＮ周期のパイプ投入禁止区間経過後、かつ第２データバス６Ｂのバス共用禁止区間経過後、制御パイプライン１０上の第７サイクル（ＥＶＥＮ周期）に待機中のコア３（Ｃ７）のＲＤをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ７）のＲＤ投入後の第８サイクルから第１０サイクルまでの期間の３サイクル分を、ＥＶＥＮ周期のパイプ投入禁止区間に設定すると共に、第２データバス６Ｂのバス共用禁止区間に設定する。
【００７８】
この際、コア３（Ｃ７）のＲＤのパイプ投入は、先行のパイプ命令と同一の第２データバス６Ｂを用いて先行のパイプ命令と異なるＥＶＥＮ周期で検出されたので、１サイクル遅延する。ＤＳＬ１６は、コア３（Ｃ７）のＲＤ投入後の第１５サイクル（ＥＶＥＮ周期）でデータメモリ２Ａ（Ｍ０）からの該当データを要求元のコア３（Ｃ７）へ転送すべく、第２データバス６Ｂ上のデータ転送を開始する。第２データバス６Ｂは、第１５サイクル（ＥＶＥＮ周期）から第１８サイクルまでの期間の４サイクルでコア３（Ｃ７）の該当データを転送する。その結果、同一の第２データバス６Ｂを用いるパイプ命令が先行のパイプ命令と異なるＥＶＥＮ周期で連続投入したことで、第２データバス６Ｂ上のコア３（Ｃ３）のデータ及びコア３（Ｃ７）のデータ間の第１４サイクルでは１サイクル分の間断が生じる。
【００７９】
また、ＭＯポート１８（ＭＯ３）は、例えば、ＷＢＤＱ−ＯＤ１３ＢからＭＯＤＱ−ＯＤ１１Ｂへのムーブアウト要求をコア３（Ｃ３）から検出すると、ＢＰＭＯを発行する。ＲＳＬ２０は、ＯＤＤ周期のパイプ投入禁止区間経過後、本来、制御パイプライン１０上の第１０サイクル（ＯＤＤ周期）でコア３（Ｃ３）のＢＰＭＯをパイプ投入する。しかし、ＲＳＬ２０は、第１０サイクル（ＯＤＤ周期）が第２データバス６Ｂのバス共用禁止区間（第８サイクル〜第１０サイクル）内にあるので、第２データバス６Ｂ上のコア３（Ｃ７）及びＭＯＤＱ−ＯＤ１１Ｂのデータが第１８サイクルで干渉する。そこで、ＲＳＬ２０では、第２データバス６Ｂのバス共用禁止区間（第８サイクル〜第１０サイクル）に基づき、第１０サイクル（ＯＤＤ周期）でのコア３（Ｃ３）のＢＰＭＯのパイプ投入を禁止し、次の第１２サイクル（ＯＤＤ周期）までパイプ投入を待機する。
【００８０】
また、ＭＩポート１７（ＭＩ１）は、例えば、コア３（Ｃ１）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０は、ＥＶＥＮ周期のパイプ投入禁止区間経過後、かつ、第１データバス６Ａのバス共用禁止区間経過後、制御パイプライン１０上の第１１サイクル（ＥＶＥＮ周期）でコア３（Ｃ１）のＲＤをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ１）のＲＤ投入後の第１２サイクルから第１４サイクルまでの期間の３サイクル分を、ＥＶＥＮ周期のパイプ投入禁止区間に設定すると共に、第１データバス６Ａのバス共用禁止区間に設定する。
【００８１】
ＤＳＬ１６は、コア３（Ｃ１）のＲＤ投入後の第１９サイクル（ＥＶＥＮ周期）でデータメモリ２Ａ（Ｍ０）からの該当データを要求元のコア３（Ｃ１）へ転送すべく、第１データバス６Ａ上のデータ転送を開始する。第１データバス６Ａは、第１９サイクル（ＥＶＥＮ周期）から第２２サイクルまでの期間の４サイクルでコア３（Ｃ１）の該当データを転送する。その結果、同一の第１データバス６Ａを用いるパイプ命令が先行のパイプ命令と異なるＥＶＥＮ周期で連続投入したことで、第１データバス６Ａ上のコア３（Ｃ４）のデータ及びコア３（Ｃ１）のデータ間の第１８サイクルでは１サイクル分の間断が生じる。
【００８２】
また、ＲＳＬ２０は、ＯＤＤ周期のバス共用禁止区間経過後、かつ、第２データバス６Ｂのバス共用禁止区間経過後、制御パイプライン１０上の第１２サイクルのＯＤＤ周期に待機中のコア３（Ｃ３）のＢＰＭＯをパイプ投入する。尚、ＲＳＬ２０は、コア３（Ｃ３）のＢＰＭＯ投入後の第１３サイクルから第１５サイクルまでの期間の３サイクル分を、ＯＤＤ周期のパイプ投入禁止区間に設定すると共に、第２データバス６Ｂのバス共用禁止区間に設定する。
【００８３】
この際、コア３（Ｃ３）のＢＰＭＯのパイプ投入は、先行のパイプ命令と同一の第２データバス６Ｂを用いて先行のパイプ命令と異なるＯＤＤ周期で検出されたので、１サイクル遅延する。ＤＳＬ１６は、コア３（Ｃ３）のＢＰＭＯ投入後の第２０サイクル（ＯＤＤ周期）でＷＢＤＱ−ＯＤ１３Ｂからの該当データをＭＯＤＱ−ＯＤ１１Ｂへ転送すべく、第２データバス６Ｂ上のデータ転送を開始する。第２データバス６Ｂは、第２０サイクル（ＯＤＤ周期）から第２３サイクルまでの期間の４サイクルで該当データをＭＯＤＱ−ＯＤ１８Ｂに転送する。その結果、同一の第２データバス６Ｂを用いるパイプ命令が先行のパイプ命令と異なるＯＤＤ周期で連続投入したことで、第２データバス６Ｂ上のコア３（Ｃ７）のデータ及びＭＯＤＱ−ＯＤ１１Ｂのデータ間の第１９サイクルでは１サイクル分の間断が生じる。
【００８４】
つまり、先行パイプ命令と同一のデータバス６を用いる後続のパイプ命令が先行パイプ命令と異なる周期で連続投入した場合には、同一データバス６上の先行パイプ命令のデータ及び後続パイプ命令のデータ間に１サイクル分の間断が生じる。従って、データバス６上のデータ転送効率が低下してしまう。そこで、このような事態に対処すべく、データバス６上で安定したデータ転送効率を確保できるＬＳＩにつき、実施の形態２として、以下に説明する。
【００８５】
［実施の形態２］
図７は、実施の形態２のＬＳＩの構成を示すブロック図である。尚、実施の形態１のＬＳＩ１と同一の構成については同一符号を付すことで、その詳細な説明は省略する。図７に示すＬＳＩ１Ａは、キャッシュメモリ２、コア３、メモリアクセスコントローラ（以下、単にＭＡＣと称する）４、キャッシュ制御部５０及びデータバス６を有する。キャッシュメモリ２は、コア３、ＭＡＣ４、キャッシュ制御部５０及びデータバス６と接続され、図示せぬ主記憶装置に格納した、コア３の演算処理に使用するデータを一時記憶する。
【００８６】
また、キャッシュメモリ２は、主記憶装置が、例えば、４個のバンクメモリ（ＭＭ０〜ＭＭ１）に分割された場合に、これら各バンクメモリ（ＭＭ０〜ＭＭ３）に対応付けて、４個のデータメモリ２Ａ（Ｍ０〜Ｍ３）に分割される。尚、キャッシュメモリ２は、例えば、ＲＡＭ等である。コア３は、例えば、データバス６及びキャッシュ制御部５０と接続され、キャッシュメモリ２内のデータに基づき各種演算処理を実行する。尚、コア３は、例えば、８個のコア３（Ｃ０〜Ｃ７）を有する。
【００８７】
ＭＡＣ４は、キャッシュ制御部５０と接続され、バンクメモリ（ＭＭ０〜ＭＭ３）を制御する。また、ＭＡＣ４は、各バンクメモリ（ＭＭ０〜ＭＭ３）に対応付けて４個のＭＡＣ４Ａ（ＭＣ０〜ＭＣ４）に分割されている。尚、ＭＡＣ４は、例えば、ＭＣ０の場合には、データメモリ２Ａ（Ｍ０）に対応付けたバンクメモリ（ＭＭ０）を制御し、ＭＣ３の場合には、データメモリ２Ａ（Ｍ３）に対応付けたバンクメモリ（ＭＭ３）を制御する。
【００８８】
キャッシュ制御部５０は、コア３、ＭＡＣ４、データバス６及び主記憶装置と接続され、その内部のデータ転送等を制御する。尚、ＬＳＩ１Ａは、例えば、８個のコア３（Ｃ０〜Ｃ７）、４個のデータメモリ２Ａ（Ｍ０〜Ｍ３）及び４個のＭＡＣ４Ａ（ＭＣ０〜ＭＣ３）を基板外周縁上に配置し、キャッシュ制御部５０を基板中央に配置する。
【００８９】
更に、キャッシュ制御部５０は、第１キャッシュ制御部５０Ａ及び第２キャッシュ制御部５０Ｂを有する。第１キャッシュ制御部５０Ａは、データメモリ２Ａ（Ｍ０及びＭ１）及びＭＡＣ４Ａ（ＭＣ０及びＭＣ１）を制御する。また。第２キャッシュ制御部５０Ｂは、データメモリ２Ａ（Ｍ２及びＭ３）及びＭＡＣ４Ａ（ＭＣ２及びＭＣ３）を制御する。
【００９０】
データバス６は、複数のコア３及びデータメモリ２Ａ間でデータを転送する。例えば、ＬＳＩ１Ａは、第１データバス６Ａ及び第２データバス６Ｂを有する。第１データバス６Ａは、例えば、データメモリ２Ａから複数のコア３（Ｃ０，Ｃ１，Ｃ４及びＣ５）へデータを転送する。第２データバス６Ｂは、例えば、データメモリ２Ａから複数のコア３（Ｃ２，Ｃ３，Ｃ６及びＣ７）へデータを転送する。
【００９１】
第１キャッシュ制御部５０Ａは、命令実行部５１、命令投入部５２及びタイミング制御部５３を有する。命令実行部５１は、データメモリ２Ａ毎に時分割されたアクセス周期に従って各データメモリ２Ａにアクセスし、要求元コア３からデータメモリ２Ａへのアクセス命令を実行する。尚、命令実行部５１は、例えば、データメモリ２Ａ（Ｍ０）にアクセスする場合には、ＥＶＥＮ周期でアクセス命令を実行すると共に、データメモリ２Ａ（Ｍ１）にアクセスする場合には、ＯＤＤ周期でアクセス命令を実行する。また、命令実行部５１は、要求元コア３からデータメモリ２Ａへのアクセス命令を実行すると、データメモリ２Ａから読み出したデータを要求元コア３に対応するデータバス６に転送する。
【００９２】
また、命令投入部５２は、要求元コア３からデータメモリ２Ａへのアクセス命令を受け付け、当該アクセス命令を命令実行部５１に投入する。更に、命令投入部５２は、要求元コア３からのアクセス命令を受け付け、先行するアクセス命令の実行に要する期間内において同一のデータメモリ２Ａに対する後続のアクセス命令の投入を禁止する。尚、先行するアクセス命令の実行に要する期間とは、例えば、データ読み出し、データ書き込みやデータ転送等のアクセス命令の実行に要する期間に相当する。
【００９３】
更に、命令投入部５２は、先行するアクセス命令の実行に要する期間より短い所定の期間内において先行するアクセス命令と同一のデータバス６を用いる後続のアクセス命令の投入を禁止する。尚、先行するアクセス命令と同一のデータバス６を用いる後続のアクセス命令は、例えば、先行するアクセス命令で読み出したデータを転送する同一のデータバス６を用いる後続のアクセス命令に相当するものである。
【００９４】
また、タイミング制御部５３は、先行するアクセス命令の実行に要する期間内で同一データバス６を用いる後続のアクセス命令が投入された場合、後続のアクセス命令の後続データのデータバス６Ａ上の転送開始タイミングを制御する。更に、タイミング制御部５３は、後続のアクセス命令に応じてデータメモリ２Ａから読み出された後続データをデータバス６へ転送開始するタイミングを遅延させるように、命令実行部５１を制御する。尚、後続データをデータバス６へ転送開始するタイミングとは、例えば、後続データをデータバス６上に載せるタイミングに相当する。
【００９５】
タイミング制御部５３は、先行するアクセス命令に応じたデータをデータバス６上に転送完了した直後、後続データの転送開始タイミングを遅延して同一データバス６上に後続データの転送動作が開始すべく、命令実行部５１を制御する。その結果、同一データバス６上では、先行データ及び後続データを連続転送できる。
【００９６】
従って、実施の形態２では、先行アクセス命令の実行に要する期間内で同一のデータバス６を用いる後続アクセス命令が投入された場合、後続のアクセス命令に応じてデータメモリ２Ａから読み出されたデータをデータバス６へ転送開始するタイミングを遅延させた。その結果、同一データバス６上では、先行データ及び後続データ間でデータ干渉やデータ間断が生じることなく、連続転送できる。
【００９７】
更に、実施の形態２では、バス構成を複雑化することなく、複数のデータメモリ２Ａ及び複数のコア３間のデータバス６上で安定したデータ転送効率を確保できる。
【００９８】
［実施の形態３］
以下、図面に基づき実施の形態３のＬＳＩについて詳細に説明する。図８は、実施の形態３のＬＳＩの構成を示すブロック図である。図８に示すＬＳＩ１Ｂは、キャッシュメモリ２、コア３、メモリアクセスコントローラ（以下、単にＭＡＣと称する）４、キャッシュ制御部５００及びデータバス６を有する。キャッシュメモリ２は、コア３、ＭＡＣ４、キャッシュ制御部５００及びデータバス６と接続され、図示せぬ主記憶装置に格納した、コア３の演算処理に使用するデータを一時記憶する。
【００９９】
また、キャッシュメモリ２は、主記憶装置が、例えば、４個のバンクメモリ（ＭＭ０〜ＭＭ１）に分割された場合に、これら各バンクメモリ（ＭＭ０〜ＭＭ３）に対応付けて、４個のデータメモリ２Ａ（Ｍ０〜Ｍ３）に分割される。尚、キャッシュメモリ２は、例えば、ランダムアクセスメモリ（以下、単にＲＡＭと称する）等である。コア３は、例えば、データバス６及びキャッシュ制御部５００と接続され、キャッシュメモリ２内のデータに基づき各種演算処理を実行する。尚、コア３は、例えば、８個のコア３（Ｃ０〜Ｃ７）を有する。
【０１００】
ＭＡＣ４は、キャッシュ制御部５００と接続され、バンクメモリ（ＭＭ０〜ＭＭ３）を制御する。また、ＭＡＣ４は、各バンクメモリ（ＭＭ０〜ＭＭ３）に対応付けて４個のＭＡＣ４Ａ（ＭＣ０〜ＭＣ４）に分割されている。尚、ＭＡＣ４は、例えば、ＭＣ０の場合には、データメモリ２Ａ（Ｍ０）に対応付けたバンクメモリ（ＭＭ０）を制御し、ＭＣ３の場合には、データメモリ２Ａ（Ｍ３）に対応付けたバンクメモリ（ＭＭ３）を制御する。
【０１０１】
キャッシュ制御部５００は、コア３、ＭＡＣ４、データバス６及び主記憶装置と接続され、その内部のデータ転送等を制御する。尚、ＬＳＩ１Ｂは、例えば、８個のコア３（Ｃ０〜Ｃ７）、４個のデータメモリ２Ａ（Ｍ０〜Ｍ３）及び４個のＭＡＣ４Ａ（ＭＣ０〜ＭＣ３）を基板外周縁上に配置し、キャッシュ制御部５００を基板中央に配置する。
【０１０２】
更に、キャッシュ制御部５００は、第１キャッシュ制御部５００Ａ及び第２キャッシュ制御部５００Ｂを有する。第１キャッシュ制御部５００Ａは、データメモリ２Ａ（Ｍ０及びＭ１）及びＭＡＣ４Ａ（ＭＣ０及びＭＣ１）を制御する。また。第２キャッシュ制御部５００Ｂは、データメモリ２Ａ（Ｍ２及びＭ３）及びＭＡＣ４Ａ（ＭＣ２及びＭＣ３）を制御する。
【０１０３】
データバス６は、複数のコア３及びデータメモリ２Ａ間でデータを転送する。例えば、ＬＳＩ１は、第１データバス６Ａ及び第２データバス６Ｂを有する。第１データバス６Ａは、例えば、データメモリ２Ａから複数のコア３（Ｃ０，Ｃ１，Ｃ４及びＣ５）へデータを転送する。第２データバス６Ｂは、例えば、データメモリ２Ａから複数のコア３（Ｃ２，Ｃ３，Ｃ６及びＣ７）へデータを転送する。
【０１０４】
次に、第１キャッシュ制御部５００Ａの構成について説明する。図９は、実施の形態３の第１キャッシュ制御部５００Ａの構成を示すブロック図である。図９に示す第１キャッシュ制御部５００Ａは、制御パイプライン１０Ｂ、ムーブアウトデータキュー（以下、単にＭＯＤＱと称する）１１及びムーブインデータキュー（以下、単にＭＩＤＱと称する）１２を有する。更に、第１キャッシュ制御部５００Ａは、ライトバックデータキュー（以下、単にＷＢＤＱと称する）１３、キューセレクタ（以下、単にＱＳＬと称する）１４及び接続ラインＬ０を有する。更に、第１キャッシュ制御部５００Ａは、出力セレクタ（以下、単にＯＳＬと称する）１５及びデータセレクタ（以下、単にＤＳＬと称する）１６を有する。更に、第１キャッシュ制御部５００Ａは、ムーブインポート（以下、単にＭＩポートと称する）１７、ムーブアウトポート（以下、単にＭＯポートと称する）１８及びムーブインバッファ（以下、単にＭＩバッファと称する）１９を有する。更に、第１キャッシュ制御部５００Ａは、要求セレクタ（以下、単にＲＳＬと称する）２０Ｂ、タグメモリ２１、遅延フラグ設定部２２及び遅延レジスタ（以下、単にＬＡＴＥ−ＲＥＧと称する）２３を有する。
【０１０５】
制御パイプライン１０Ｂは、データメモリ２Ａ（Ｍ０及びＭ１）毎に、例えば、ＥＶＥＮ周期及びＯＤＤ周期の２サイクル周期でパイプ命令の投入を受け付ける。データメモリ２Ａ（Ｍ０）にアクセスする場合はＥＶＥＮ周期を使用し、データメモリ２Ａ（Ｍ１）にアクセスする場合はＯＤＤ周期を使用する。
【０１０６】
ＭＯＤＱ１１は、データバス６及びＭＡＣ４と接続され、ムーブアウトデータを格納する。ＭＯＤＱ１１は、ＥＶＥＮ周期側のＭＯＤＱ−ＥＶ１１Ａ及びＯＤＤ周期側のＭＯＤＱ−ＯＤ１１Ｂを有し、ＭＯＤＱ−ＥＶ１１Ａは第１データバス６Ａと接続され、ＭＯＤＱ−ＯＤ１１Ｂは第２データバス６Ｂと接続される。尚、ムーブアウトデータは、キャッシュメモリ２から消去するデータである。
【０１０７】
ＭＩＤＱ１２は、ＱＳＬ１４及びＭＡＣ４と接続され、ムーブインデータを格納する。ＭＩＤＱ１２は、ＥＶＥＮ周期側のＭＩＤＱ−ＥＶ１２Ａ及びＯＤＤ周期側のＭＩＤＱ−ＯＤ１２Ｂを有し、ＭＩＤＱ−ＥＶ１２Ａ及びＭＩＤＱ−ＯＤ１２Ｂは、ＭＡＣ４Ａ（ＭＣ０）及び（ＭＣ１）と接続される。尚、ムーブインデータは、キャッシュメモリ２に新規登録するデータである。
【０１０８】
ＷＢＤＱ１３は、コア３及びＱＳＬ１４と接続され、ライトバックデータを格納する。ＷＢＤＱ１３は、ＥＶＥＮ周期側のＷＢＤＱ−ＥＶ１３Ａ及びＯＤＤ周期側のＷＢＤＱ−ＯＤ１３Ｂを有する。尚、ライトバックデータは、コア３内部の図示せぬキャッシュメモリに登録済みのデータをキャッシュメモリ２又は主記憶装置に戻すデータである。
【０１０９】
ＱＳＬ１４は、データメモリ２Ａ、ＷＢＤＱ１３、ＭＩＤＱ１２及び接続ラインＬ０と接続され、ＷＢＤＱ１３の出力データ又はＭＩＤＱ１２の出力データをデータメモリ２Ａ及び接続ラインＬ０に出力する。ＱＳＬ１４は、ＥＶＥＮ周期側のＱＳＬ−ＥＶ１４Ａ及びＯＤＤ周期側のＱＳＬ−ＯＤ１４Ｂを有する。ＱＳＬ−ＥＶ１４Ａは、ＷＢＤＱ−ＥＶ１３Ａ又はＭＩＤＱ−ＥＶ１２Ａの出力データをデータメモリ２Ａ（Ｍ０）及び接続ラインＬ０に出力する。ＱＳＬ−ＯＤ１４Ｂは、ＷＢＤＱ−ＯＤ１３Ｂの出力データ又はＭＩＤＱ−ＯＤ１２Ｂの出力データをデータメモリ２Ａ（Ｍ１）及び接続ラインＬ０に出力する。
【０１１０】
接続ラインＬ０は、ＱＳＬ１４及びＯＳＬ１５と接続され、例えば、ＱＳＬ−ＥＶ１４Ａ及びＯＳＬ−ＥＶ１５Ａ間、又はＱＳＬ−ＯＤ１４Ｂ及びＯＳＬ−ＯＤ１５Ｂ間を直接接続する伝送線に相当する。接続ラインＬ０は、例えば、ＱＳＬ−ＥＶ１４Ａから該当データをＯＳＬ−ＥＶ１５Ａに直接出力する。接続ラインＬ０は、例えば、ＱＳＬ−ＯＤ１４Ｂから該当データをＯＳＬ−ＯＤ１５Ｂに直接出力する。
【０１１１】
ＯＳＬ１５は、データメモリ２Ａ（Ｍ０）、接続ラインＬ０、ＤＳＬ１６及びＬＡＴＥ−ＲＥＧ２３と接続され、データメモリ２Ａの出力データ又は、接続ラインＬ０経由のＱＳＬ１４の出力データをＤＳＬ１６に出力する。ＯＳＬ１５は、ＥＶＥＮ周期側のＯＳＬ−ＥＶ１５Ａ及びＯＤＤ周期側のＯＳＬ−ＯＤ１５Ｂを有する。ＯＳＬ−ＥＶ１５Ａは、データメモリ２Ａ（Ｍ０）の出力データをＤＳＬ１６又はＬＡＴＥ−ＲＥＧ２３Ａに出力する。更に、ＯＳＬ−ＥＶ１５Ａは、接続ラインＬ０経由のＱＳＬ−ＥＶ１４Ａの出力データをＤＳＬ１６又はＬＡＴＥ−ＲＥＧ２３Ａに出力する。ＯＳＬ−ＯＤ１５Ｂは、データメモリ２Ａ（Ｍ１）の出力データをＤＳＬ１６又はＬＡＴＥ−ＲＥＧ２３Ｂに出力する。更に、ＯＳＬ−ＯＤ１５Ｂは、接続ラインＬ０経由のＱＳＬ−ＯＤ１４Ｂの出力データをＤＳＬ１６又はＬＡＴＥ−ＲＥＧ２３Ｂに出力する。
【０１１２】
また、第１データバス６Ａは、コア３（Ｃ０，Ｃ１，Ｃ４，Ｃ５）及びＭＯＤＱ−ＥＶ１１Ａと接続され、第２データバス６Ｂは、コア３（Ｃ２，Ｃ３，Ｃ６，Ｃ７）及びＭＯＤＱ−ＯＤ１１Ｂと接続される。また、ＤＳＬ１６は、ＯＳＬ１５及びＬＡＴＥ−ＲＥＧ２３と接続され、ＯＳＬ−ＥＶ１５Ａ、ＯＳＬ−ＯＤ１５Ｂ、ＬＡＴＥ−ＲＥＧ２３Ａ及びＬＡＴＥ−ＲＥＧ２３Ｂの出力データをデータバス６（第１データバス６Ａ又は第２データバス６Ｂ）に出力する。
【０１１３】
ＭＩポート１７は、コア３及びＲＳＬ２０Ｂと接続され、当該コア３からのムーブイン要求を検出すると、リード（以下、単にＲＤと称する）を発行する。ＭＩポート１７は、コア３（Ｃ０〜Ｃ７）毎に配置され、８個のＭＩポート（ＭＩＰ０〜ＭＩＰ７）を有する。尚、ＲＤは、コア３からのデータ読出要求に相当するパイプ命令である。
【０１１４】
ＭＯポート１８は、コア３及びＲＳＬ２０Ｂと接続され、当該コア３からのムーブアウト要求を検出すると、ＢＰＭＯを発行する。ＭＯポート１８は、コア３（Ｃ０〜Ｃ７）毎に配置され、８個のＭＯポート１８（ＭＯＰ０〜ＭＯＰ７）を有する。尚、ＢＰＭＯは、ＷＢＤＱ１３に格納されたライトバックデータをＭＯＤＱ１１に格納するパイプ命令である。
【０１１５】
ＭＩバッファ１９は、ＭＡＣ４及びＲＳＬ２０Ｂと接続され、当該ＭＡＣ４への要求を出力すると共に、ＭＡＣ４からの要求に応じてパイプ命令を発行する。ＭＩバッファ１９は、ＭＡＣ４（ＭＣ０及びＭＣ１）毎に配置される。尚、ＭＩバッファ１９のパイプ命令は、キャッシュメモリ２から該当データを消去要求するムーブアウトリプレイス（以下、単にＭＯＲＰと称する）や、キャッシュメモリ２に該当データを登録要求するムーブイン（以下、単にＭＶＩＮと称する）等である。
【０１１６】
ＲＳＬ２０Ｂは、ＭＩポート１７、ＭＯポート１８、ＭＩバッファ１９及び制御パイプライン１０Ｂと接続され、制御パイプライン１０Ｂ上の該当周期（ＥＶＥＮ又はＯＤＤ周期）にパイプ命令を投入する。更に、ＲＳＬ２０Ｂは、制御パイプライン１０Ｂ上のＥＶＥＮ周期又はＯＤＤ周期でコア３のパイプ命令を投入した場合には、当該周期のパイプ投入後の３サイクル分を同一周期でのパイプ投入禁止区間とする。尚、パイプ投入禁止区間は、先行するパイプ命令の実行に要する期間、すなわちパイプ投入後の３サイクル分に相当し、先行するパイプ命令と同一周期、すなわち同一データメモリ２Ａへの後続のパイプ命令の投入を禁止する区間である。
【０１１７】
更に、ＲＳＬ２０Ｂは、ある周期でコア３のパイプ投入後の２サイクル分を当該コア３が用いるデータバス６の共用を禁止するバス共用禁止区間とする。尚、バス共用禁止区間は、先行するパイプ命令の実行に要する期間より短い所定の期間、すなわちパイプ投入後の２サイクル分に相当し、先行するパイプ命令と同一のデータバス６を用いる後続のパイプ命令の投入を禁止する区間である。
【０１１８】
タグメモリ２１は、制御パイプライン１０Ｂ及びデータメモリ２Ａと接続され、データメモリ２Ａ毎に配置され、データメモリ２Ａの該当データのアドレスを管理する。尚、タグメモリ２１は、例えば、キャッシュメモリ２の一部である。タグメモリ２１は、制御パイプライン１０Ｂ上の該当周期に投入したパイプ命令に応じて該当データのアドレスを検索する。また、タグメモリ２１は、データメモリ２Ａだけでなく、コア３内部の図示せぬコアキャッシュメモリ毎に、該当データのアドレスを管理する。
【０１１９】
また、遅延フラグ設定部２２は、同一データバス６を用いるパイプ命令が異なる周期で連続投入した場合には、そのパイプ命令に対応付けて遅延フラグを設定する。尚、同一データバス６を用いるパイプ命令が異なる周期で連続投入した場合とは、先行パイプ命令の実行に要するパイプ投入禁止期間内に先行パイプ命令と同一のデータバス６を用いる後続パイプ命令が先行パイプ命令と異なる周期で投入された場合に相当する。
【０１２０】
遅延フラグ設定部２２は、例えば、ＯＤＤ周期でコア３（Ｃ３）のパイプ投入後の３サイクル目、すなわちＥＶＥＮ周期で第２データバス６Ｂを共用するコア３（Ｃ７）のパイプ投入を検出した場合には、そのパイプ命令に対応付けて遅延フラグを設定する。
【０１２１】
ＲＳＬ２０Ｂは、コア３のパイプ命令に対応付けて遅延フラグを設定した場合には、そのパイプ命令のバス共用禁止区間をパイプ投入後の２サイクル分から３サイクル分に延長設定する。尚、延長設定したバス共用禁止区間は、後続のパイプ命令の実行に要する期間内において当該パイプ命令と同一のデータバス６を用いるパイプ命令の投入を禁止する区間に相当する。ＲＳＬ２０Ｂは、例えば、コア３（Ｃ７）のパイプ命令に対応付けて遅延フラグを設定した場合には、コア３（Ｃ７）と共用する第２データバス６Ｂのバス共用禁止区間を２サイクル分から３サイクル分に設定変更する。
【０１２２】
ＬＡＴＥ−ＲＥＧ２３は、ＯＳＬ１５及びＤＳＬ１６と接続され、データバス６上に転送する転送タイミングを、例えば１サイクル遅延出力する。ＬＡＴＥ−ＲＥＧ２３は、ＥＶＥＮ周期側のＬＡＴＥ−ＲＥＧ２３Ａ及びＯＤＤ周期側のＬＡＴＥ−ＲＧＥ２３Ｂを有する。ＬＡＴＥ−ＲＥＧ２３Ａは、ＥＶＥＮ周期のパイプ命令に対応付けた遅延フラグに基づき、ＯＳＬ−ＥＶ１５Ａの出力データのデータバス６上の転送タイミングを１サイクル遅延し、その出力データをＤＳＬ１６に出力する。更に、ＬＡＴＥ−ＲＥＧ２３Ｂは、ＯＤＤ周期のパイプ命令に対応付けた遅延フラグに基づき、ＯＳＬ−ＯＤ１５Ｂの出力データのデータバス６上の転送タイミングを１サイクル遅延し、その出力データをＤＳＬ１６に出力する。
【０１２３】
尚、第２キャッシュ制御部５００Ｂの構成についても、データメモリ２Ａ（Ｍ２又はＭ３）を対象にした点で図９とは異なるものの、実質的な構成についてはほぼ同一であるので、その重複する構成及び動作の説明は省略する。
【０１２４】
次に、コア３及び第１キャッシュ制御部５００Ａ間と、ＭＡＣ４及び第１キャッシュ制御部５００Ａ間とのデータの流れについて説明する。図１０は、コア３及び第１キャッシュ制御部５００Ａ間と、ＭＡＣ４及び第１キャッシュ制御部５００Ａ間とのデータの流れの一例を示す説明図である。図１０に示すＲＳＬ２０Ｂは、例えば、ＭＩポート１７からコア３（Ｃ０）のＲＤを検出した場合には、制御パイプライン１０Ｂ上の該当周期（ＥＶＥＮ周期又はＯＤＤ周期）にコア３（Ｃ０）のＲＤをパイプ投入する。タグメモリ２１は、制御パイプライン１０Ｂ上のＲＤに基づき、データメモリ２Ａ（Ｍ０又はＭ１）内の該当データに対応するアドレスを検索する。
【０１２５】
タグメモリ２１は、当該タグメモリ２１内に該当データのアドレスがある場合には、キャッシュヒットと判断し、該当データのアドレスをデータメモリ２Ａに出力する。一方、タグメモリ２１は、当該タグメモリ２１内に該当データのアドレスがない場合には、キャッシュミスと判断し、キャッシュミスの該当データの転送要求をＭＩバッファ１９に出力する。
【０１２６】
更に、データメモリ２Ａ（Ｍ０又はＭ１）は、キャッシュヒットの場合に、タグメモリ２１内の該当データのアドレスに基づき、当該データメモリ２Ａから該当データを読み出し、読み出した該当データをＯＳＬ１５経由でＤＳＬ１６に出力する。更に、ＤＳＬ１６は、第１データバス６Ａ又は第２データバス６Ｂの内、要求元のコア３（Ｃ０）のデータ転送に使用するデータバス６に該当データを出力する。
【０１２７】
一方、ＭＩバッファ１９は、キャッシュミスの場合に、キャッシュミスした該当データの転送要求を検出すると、該当データをＭＩＤＱ１２に転送する転送要求をＭＡＣ４Ａ（ＭＣ０又はＭＣ１）に通知する。更に、ＭＩバッファ１９は、データメモリ２Ａ内に該当データを登録する空き領域を確保すべく、ＭＯＲＰを発行する。
【０１２８】
ＲＳＬ２０は、ＭＯＲＰを検出した場合には、制御パイプライン１０Ｂ上の該当周期にＭＯＲＰをパイプ投入する。タグメモリ２１は、制御パイプライン１０Ｂ上のＭＯＲＰに基づき、タグメモリ２１内からＭＯＲＰ対象のデータのアドレスを検索する。タグメモリ２１は、ＭＯＲＰ対象のアドレスがある、例えば、コアキャッシュメモリ内のアドレスがある場合には、当該コア３（Ｃ０）に対してムーブアウト要求を通知する。
【０１２９】
コア３（Ｃ０）は、ムーブアウト要求を検出すると、当該コアキャッシュメモリ内から該当ムーブアウトデータを読み出す。そして、コア３（Ｃ０）は、そのデータをライトバックデータとしてＷＢＤＱ１３に格納した後、当該コア３（Ｃ０）に対応するＭＯポート１８に応答ムーブアウト要求を通知する。
【０１３０】
ＭＯポート１８は、応答ムーブアウト要求を検出すると、ＢＰＭＯを発行する。ＲＳＬ２０Ｂは、ＢＰＭＯを検出すると、制御パイプライン１０Ｂ上の該当周期にコア３（Ｃ０）のＢＰＭＯをパイプ投入する。タグメモリ２１は、制御パイプライン１０Ｂ上のＢＰＭＯに基づき、ＭＯＲＰ対象のデータのアドレスを当該タグメモリ２１から消去し、ＷＢＤＱ１３のライトバックデータをＤＳＬ１６経由でＭＯＤＱ１１内へ転送して格納する。更に、第１キャッシュ制御部５００Ａは、ＭＯＤＱ１１に格納されたライトバックデータを主記憶装置のバンクメモリ（ＭＭ０又はＭＭ１）に記憶すべく、ＭＡＣ（ＭＣ０又はＭＣ１）４Ａに要求する。
【０１３１】
ＭＡＣ４Ａ（ＭＣ０又はＭＣ１）は、記憶要求を検出すると、主記憶装置への記憶準備が完了次第、ＭＯＤＱ１１内のライトバックデータを読み出し、当該ライトバックデータを主記憶装置内のバンクメモリ（ＭＭ０又はＭＭ１）に記憶する。その後、ＭＩバッファ１９は、ＭＡＣ４（ＭＣ０又はＭＣ１）からの該当データをＭＩＤＱ１２に格納した後、ＭＩＤＱ１２に格納された該当データのデータメモリ２Ａ（Ｍ０又はＭ１）への登録要求を検出すると、ＭＶＩＮを発行する。ＲＳＬ２０Ｂは、ＭＶＩＮを検出した場合には、制御パイプライン１０Ｂ上の該当周期にＭＶＩＮをパイプ投入する。
【０１３２】
タグメモリ２１は、制御パイプライン１０Ｂ上のＭＶＩＮに基づき、当該タグメモリ２１内に該当データのアドレスを登録する。更に、データメモリ２Ａ（Ｍ０又はＭ１）は、ＭＩＤＱ１２に格納された該当データを当該データメモリ２Ａ（Ｍ０又はＭ１）に格納しながら、接続ラインＬ０経由で該当データを要求元のコア３（Ｃ０）に転送する。
【０１３３】
一方で、データメモリ２Ａ（Ｍ０又はＭ１）は、例えば、ＲＤ時にタグメモリ２１内のコアキャッシュメモリにＭＯＲＰ対象のアドレスがなくても、当該データメモリ２Ａ（Ｍ０又はＭ１）内にある場合には、該当データを読み出す。そして、データメモリ２Ａ（Ｍ０又はＭ１）は、該当データを、ＱＳＬ１４及びＤＳＬ１６経由でＭＯＤＱ１１に転送して格納する。更に、ＭＯＤＱ１１は、該当データを格納すると、該当データをライトバックデータとして主記憶装置のバンクメモリ（ＭＭ０又はＭＭ１）に記憶すべく、ＭＡＣ４Ａ（ＭＣ０又はＭＣ１）に要求する。
【０１３４】
次に、ＲＳＬ２０Ｂの構成について説明する。図１１は、ＲＳＬ２０Ｂの構成を示す説明図である。図１１に示すＲＳＬ２０Ｂは、ＡＮＤ回路３１、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）３２及びプライオリティ論理回路３３を有する。ＲＳＬ２０Ｂは、ＭＩポート１７、ＭＯポート１８及びＭＩバッファ１９からのパイプ命令を制御パイプライン１０Ｂ上の該当周期に投入する回路に相当するものである。
【０１３５】
ＡＮＤ回路３１は、ＭＩポート１７及びＬＲＵ３２と接続され、ＭＩポート１７毎に配置され、ＭＩポート１７からの該当パイプ命令を検出した場合には、当該パイプ命令を保持すると共に、投入許可に応じて該当パイプ命令（ＲＤ）を出力する。ＬＲＵ３２は、ＡＮＤ回路３１及びプライオリティ論理回路３３と接続され、ＡＮＤ回路３１の該当パイプ命令をＬＲＵアルゴリズムで優先出力する。プライオリティ論理回路３３は、ＬＲＵ３２、ＭＯポート１８、ＭＩバッファ１９及び制御パイプライン１０Ｂと接続され、ＬＲＵ３２、ＭＯポート１８及びＭＩバッファ１９のパイプ命令を論理出力する。
【０１３６】
次に、実施の形態３のＬＳＩ１Ｂの動作について説明する。図１２は、実施の形態３の第１キャッシュ制御部５００Ａの制御パイプライン１０Ｂのタイミング関係（パイプ投入禁止区間及びバス共用禁止区間経過後に同一データバス６を用いるパイプ命令が同一周期で連続投入した場合）を示す説明図である。
【０１３７】
ここで、パイプ命令の連続投入とは、先行のパイプ命令を投入した後、先行のパイプ命令と同一周期のパイプ投入禁止区間及び同一データバス６のバス共用禁止区間経過後直後のアクセス周期に後続のパイプ命令が投入したである。更に、同一データバス６を用いるパイプ命令とは、例えば、第１データバス６Ａの場合には、コア３（Ｃ０）、コア３（Ｃ１）、コア３（Ｃ４）、コア３（Ｃ５）やＭＯＤＱ−ＥＶ１１Ａをデータ転送先とするパイプ命令に相当する。また、第２データバス６Ｂの場合には、コア３（Ｃ２）、コア３（Ｃ３）、コア３（Ｃ６）、コア３（Ｃ７）やＭＯＤＱ−ＯＤ１１Ｂをデータ転送先とするパイプ命令に相当する。図１２では、例えば、第１サイクル〜第２０サイクルをＥＶＥＮ周期及びＯＤＤ周期に時分割した例であり、第１キャッシュ制御部５００ＡはＥＶＥＮ周期でデータメモリ２Ａ(Ｍ０)にアクセスし、ＯＤＤ周期でデータメモリ２Ａ（Ｍ１）にアクセスする。
【０１３８】
第１キャッシュ制御部５００Ａ内のＭＩポート１７（ＭＩ０）は、例えば、コア３（Ｃ０）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｂは、制御パイプライン１０Ｂ上の第１サイクル（ＥＶＥＮ周期）でコア３（Ｃ０）のＲＤをパイプ投入する。尚、ＲＳＬ２０Ｂは、コア３（Ｃ０）のＲＤ投入後の第２サイクルから第４サイクルまでの期間の３サイクル分をＥＶＥＮ周期のパイプ投入禁止区間に設定する。更に、ＲＳＬ２０Ｂは、コア３（Ｃ０）のＲＤ投入後の第２サイクルから第３サイクルまでの期間の２サイクル分を第１データバス６Ａのバス共用禁止区間に設定する。
【０１３９】
第１キャッシュ制御部５００Ａ内のＤＳＬ１６は、コア３（Ｃ０）のＲＤ投入後の第９サイクル（ＥＶＥＮ周期）でデータメモリ２Ａ（Ｍ０）からの該当データを要求元のコア３（Ｃ０）へ転送すべく、第１データバス６Ａ上のデータ転送を開始する。第１データバス６Ａは、第９サイクル（ＥＶＥＮ周期）から第１２サイクルまでの期間の４サイクルでコア３（Ｃ０）の該当データを転送する。
【０１４０】
また、ＭＩポート１７（ＭＩ３）は、例えば、コア３（Ｃ３）からデータメモリ２Ａ（Ｍ１）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｂは、制御パイプライン１０Ｂ上の第２サイクル（ＯＤＤ周期）でコア３（Ｃ３）のＲＤをパイプ投入する。尚、ＲＳＬ２０Ｂは、コア３（Ｃ３）のＲＤ投入後の第３サイクルから第５サイクルまでの期間の３サイクル分をＯＤＤ周期のパイプ投入禁止区間に設定する。更に、ＲＳＬ２０Ｂは、コア３（Ｃ３）のＲＤ投入後の第３サイクルから第４サイクルまでの期間の２サイクル分を第２データバス６Ｂのバス共用禁止区間に設定する。
【０１４１】
ＤＳＬ１６は、コア３（Ｃ３）のＲＤ投入後の第１０サイクル（ＯＤＤ周期）でデータメモリ２Ａ（Ｍ１）からの該当データを要求元のコア３（Ｃ３）へ転送すべく、第２データバス６Ｂ上のデータ転送を開始する。第２データバス６Ｂは、第１０サイクル（ＥＶＥＮ周期）から第１３サイクルまでの期間の４サイクルでコア３（Ｃ３）の該当データを転送する。
【０１４２】
また、ＭＩポート１７（ＭＩ５）は、例えば、コア３（Ｃ５）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｂは、ＥＶＥＮ周期のパイプ投入禁止区間経過後、かつ、第１データバス６Ａのバス共用禁止区間経過後、制御パイプライン１０Ｂ上の第５サイクル（ＥＶＥＮ周期）でコア３（Ｃ５）のＲＤをパイプ投入する。尚、ＲＳＬ２０Ｂは、コア３（Ｃ５）のＲＤ投入後の第６サイクルから第８サイクルまでの期間の３サイクル分をＥＶＥＮ周期のパイプ投入禁止区間に設定する。更に、ＲＳＬ２０Ｂは、コア３（Ｃ５）のＲＤ投入後の第６サイクルから第７サイクルまでの期間の２サイクル分を第１データバス６Ａのバス共用禁止区間に設定する。
【０１４３】
ＤＳＬ１６は、コア３（Ｃ５）のＲＤ投入後の第１３サイクル（ＥＶＥＮ周期）でデータメモリ２Ａ（Ｍ０）からの該当データを要求元のコア３（Ｃ５）へ転送すべく、第１データバス６Ａ上のデータ転送を開始する。第１データバス６Ａは、第１３サイクル（ＥＶＥＮ周期）から第１６サイクルまでの期間の４サイクルでコア３（Ｃ５）の該当データを転送する。
【０１４４】
また、ＭＩポート１７（ＭＩ６）は、例えば、コア３（Ｃ６）からデータメモリ２Ａ（Ｍ１）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｂは、ＯＤＤ周期のパイプ投入禁止区間経過後、かつ、第２データバス６Ｂのバス共用禁止区間経過後、制御パイプライン１０Ｂ上の第６サイクル（ＯＤＤ周期）でコア３（Ｃ６）のＲＤをパイプ投入する。尚、ＲＳＬ２０Ｂは、コア３（Ｃ６）のＲＤ投入後の第７サイクルから第９サイクルまでの期間の３サイクル分をＯＤＤ周期のパイプ投入禁止区間に設定する。更に、ＲＳＬ２０Ｂは、コア３（Ｃ６）のＲＤ投入後の第７サイクルから第８サイクルまでの期間の２サイクル分を第２データバス６Ｂのバス共用禁止区間に設定する。
【０１４５】
ＤＳＬ１６は、コア３（Ｃ６）のＲＤ投入後の第１４サイクル（ＯＤＤ周期）でデータメモリ２Ａ（Ｍ１）からの該当データを要求元のコア３（Ｃ６）へ転送すべく、第２データバス６Ｂ上のデータ転送を開始する。第２データバス６Ｂは、第１４サイクル（ＯＤＤ周期）から第１７サイクルまでの期間の４サイクルでコア３（Ｃ６）の該当データを転送する。
【０１４６】
また、ＭＩポート１７（ＭＩ１）は、例えば、コア３（Ｃ１）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｂは、ＥＶＥＮ周期のパイプ投入禁止区間経過後、かつ、第１データバス６Ａのバス共用禁止区間経過後、制御パイプライン１０Ｂ上の第９サイクル（ＥＶＥＮ周期）でコアＣ３（Ｃ１）のＲＤをパイプ投入する。尚、ＲＳＬ２０Ｂは、コア３（Ｃ１）のＲＤ投入後の第１０サイクルから第１２サイクルまでの期間の３サイクル分をＥＶＥＮ周期のパイプ投入禁止区間に設定する。更に、ＲＳＬ２０Ｂは、コア３（Ｃ１）のＲＤ投入後の第１０サイクルから第１１サイクルまでの期間の２サイクル分を第１データバス６Ａのバス共用禁止区間に設定する。
【０１４７】
ＤＳＬ１６は、コア３（Ｃ１）のＲＤ投入後の第１７サイクル（ＥＶＥＮ周期）でデータメモリ２Ａ（Ｍ０）からの該当データを要求元のコア３（Ｃ１）へ転送すべく、第１データバス６Ａ上のデータ転送を開始する。第１データバス６Ａは、第１７サイクル（ＥＶＥＮ周期）から第２０サイクルまでの期間の４サイクルでコア３（Ｃ１）の該当データを転送する。
【０１４８】
また、ＭＯポート１８（ＭＯ３）は、例えば、ＷＢＤＱ−ＯＤ１３ＢからＭＯＤＱ−ＯＤＤ１１Ｂへのムーブアウト要求をコア３（Ｃ３）から検出すると、ＢＰＭＯを発行する。ＲＳＬ２０Ｂは、ＯＤＤ周期のパイプ投入禁止区間経過後、かつ、第２データバス６Ｂのバス共用禁止区間経過後、ＷＢＤＱ−ＯＤ１３Ｂへアクセスする制御パイプライン１０Ｂ上の第１０サイクルの（ＯＤＤ周期）でコア３（Ｃ３）のＢＰＭＯをパイプ投入する。尚、ＲＳＬ２０Ｂは、コア３（Ｃ３）のＢＰＭＯ投入後の第１１サイクルから第１３サイクルまでの期間の３サイクル分をＯＤＤ周期のパイプ投入禁止区間に設定する。更に、ＲＳＬ２０Ｂは、コア３（Ｃ３）のＢＰＭＯ投入後の第１１サイクルから第１２サイクルまでの期間の２サイクル分を第２データバス６Ｂのバス共用禁止区間に設定する。
【０１４９】
ＤＳＬ１６は、ＢＰＭＯ投入後の第１８サイクルのＯＤＤ周期でＷＢＤＱ−ＯＤ１３Ｂからの該当データをＭＯＤＱ−ＯＤ１１Ｂへ転送すべく、第２データバス６Ｂ上のデータ転送を開始する。第２データバス６Ｂは、第１８サイクル（ＯＤＤ周期）から第２１サイクルまでの期間の４サイクルで該当データをＭＯＤＱ−ＯＤ１１Ｂに転送する。その結果、第１データバス６Ａでは、４サイクル毎のＥＶＥＮ周期で連続的にパイプ命令を投入した場合、データメモリ２Ａ（Ｍ０）から該当データを間断なく、コア３（Ｃ０），コア３（Ｃ５）及びコア３（Ｃ１）の該当データ順に連続転送できる。また、第２データバス６Ｂでは、４サイクル毎のＯＤＤ周期で連続的にパイプ命令を投入した場合、データメモリ２Ａ（Ｍ１）及びＷＢＤＱ−ＯＤ１３Ｂから該当データを間断なく、コア３（Ｃ３）、コア３（Ｃ６）及びＭＯＤＱ−ＯＤ１１Ｂの該当データ順に連続転送できる。
【０１５０】
図１２では、先行パイプ命令のパイプ投入禁止区間及びバス共用禁止区間経過後、先行パイプ命令と同一のデータバス６を用いるパイプ命令を先行パイプ命令と同一周期で連続投入した場合、パイプ命令に応じたデータを間断なく、データバス６上に連続転送する。その結果、複雑なバス構成を要することなく、当該データバス６上で安定したデータ転送効率を確保できる。例えば、第１データバス６Ａを用いるパイプ命令を同一周期で連続投入した場合には、第１データバス６Ａ上で安定したデータ転送効率を確保できる。同様に、第２データバス６Ｂを用いるパイプ命令を同一周期で連続投入した場合も、第２データバス６Ｂ上で安定したデータ転送効率を確保できる。
【０１５１】
次に、先行パイプ命令と同一のデータバス６を用いるパイプ命令が先行パイプ命令と異なる周期で連続投入した場合でも、当該データバス６上で安定したデータ転送効率を確保できる第１キャッシュ制御部５００Ａの動作について説明する。図１３は、実施の形態３の第１キャッシュ制御部５００Ａの制御パイプライン１０Ｂのタイミング関係（パイプ投入禁止区間内で同一データバス６を用いるパイプ命令が異なる周期で連続投入した場合）を示す説明図である。
【０１５２】
ＭＩポート１７（ＭＩ０）は、例えば、コア３（Ｃ０）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｂは、制御パイプライン１０Ｂ上の第１サイクル（ＥＶＥＮ周期）でコア３（Ｃ０）のＲＤをパイプ投入する。尚、ＲＳＬ２０Ｂは、コア３（Ｃ０）のＲＤ投入後の第２サイクルから第４サイクルまでの期間の３サイクル分をＥＶＥＮ周期のパイプ投入禁止区間に設定する。更に、ＲＳＬ２０Ｂは、コア３（Ｃ０）のＲＤ投入後の第２サイクルから第３サイクルまでの期間の２サイクル分を第１データバス６Ａのバス共用禁止区間に設定する。
【０１５３】
ＤＳＬ１６は、コア３（Ｃ０）のＲＤ投入後の第９サイクル（ＥＶＥＮ周期）でデータメモリ２Ａ（Ｍ０）からの該当データを要求元のコア３（Ｃ０）へ転送すべく、第１データバス６Ａ上のデータ転送を開始する。第１データバス６Ａは、第９サイクル（ＥＶＥＮ周期）から第１２サイクルまでの期間の４サイクルでコア３（Ｃ０）の該当データを転送する。
【０１５４】
また、ＭＩポート１７（ＭＩ３）は、例えば、コア３（Ｃ３）からデータメモリ２Ａ（Ｍ１）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｂは、制御パイプライン１０Ｂ上の第２サイクル（ＯＤＤ周期）でコア３（Ｃ３）のＲＤをパイプ投入する。尚、ＲＳＬ２０Ｂは、コア３（Ｃ３）のＲＤ投入後の第３サイクルから第５サイクルまでの期間の３サイクル分をＯＤＤ周期のパイプ投入禁止区間に設定する。更に、ＲＳＬ２０Ｂは、コア３（Ｃ３）のＲＤ投入後の第３サイクルから第４サイクルまでの期間の２サイクル分を第２データバス６Ｂのバス共用禁止区間に設定する。
【０１５５】
ＤＳＬ１６は、コア３（Ｃ３）のＲＤ投入後の第１０サイクル（ＯＤＤ周期）でデータメモリ２Ａ（Ｍ１）からの該当データを要求元のコア３（Ｃ３）へ転送すべく、第２データバス６Ｂ上のデータ転送を開始する。第２データバス６Ｂは、第１０サイクル（ＯＤＤ周期）から第１３サイクルまでの期間の４サイクルでコア３（Ｃ３）の該当データを転送する。
【０１５６】
また、ＭＩポート１７（ＭＩ７）は、例えば、コア３（Ｃ７）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｂは、第５サイクル（ＥＶＥＮ周期）がＥＶＥＮ周期のパイプ投入禁止区間経過（第２サイクル〜第４サイクル）後、かつ第２データバス６Ｂのバス共用禁止区間経過（第３及び第４サイクル）後である。その結果、ＲＳＬ２０Ｂは、第５サイクル（ＥＶＥＮ周期）でコア３（Ｃ７）のＲＤをパイプ投入する。
【０１５７】
しかしながら、コア３（Ｃ３）及びコア３（Ｃ７）は、第２データバス６Ｂを共用するので、このままの状態だと、第２データバス６Ｂ上のコア３（Ｃ３）のデータ及びコア３（Ｃ７）のデータが第１３サイクルで干渉する。そこで、遅延フラグ設定部２２は、第２データバス６Ｂ上のコア３（Ｃ７）の第１３サイクルから第１６サイクルまでのデータの転送タイミングを１サイクル遅延させるべく、ＲＳＬ２０Ｂ上でコア３（Ｃ７）のＲＤに対応付けて遅延フラグを設定する。ＲＳＬ２０Ｂは、遅延フラグを設定した場合には、第２データバス６Ｂのバス共用禁止区間をコア３（Ｃ７）のＲＤ投入後の第６サイクルから第８サイクルまでの期間の３サイクル分に延長設定する。尚、ＲＳＬ２０Ｂは、コア３（Ｃ７）のＲＤ投入後の第６サイクルから第８サイクルまでの期間の３サイクル分をＥＶＥＮ周期のパイプ投入禁止区間に設定する。
【０１５８】
そして、ＤＳＬ１６は、コア３（Ｃ７）のＲＤの遅延フラグの設定に基づき、第２データバス６Ｂ上のコア３（Ｃ７）のデータを１サイクル遅延したＥＶＥＮ周期のＬＡＴＥ−ＲＥＧ２３Ｂの出力をデータ出力とする。つまり、ＤＳＬ１６は、ＬＡＴＥ−ＲＥＧ２３Ｂの出力に応じてコア３（Ｃ７）の第１３サイクルから第１６サイクルまでのデータを１サイクル遅延して第１４サイクルから第１７サイクルまでのデータを出力する。その結果、ＤＳＬ１６は、第２データバス６Ｂ上でコア３（Ｃ３）のデータ転送完了直後である第１４サイクルからコア３（Ｃ７）のデータ転送を開始する。従って、第２データバス６Ｂ上では、コア３（Ｃ３）のデータ及びコア３（Ｃ７）のデータをデータ干渉なく連続転送できる。
【０１５９】
更に、ＭＩポート１７（ＭＩ４）は、例えば、コア３（Ｃ４）からデータメモリ２Ａ（Ｍ１）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｂは、ＯＤＤ周期のパイプ投入禁止区間経過後、かつ、第１データバス６Ａのバス共用禁止区間経過後、制御パイプライン１０Ｂ上の第６サイクル（ＯＤＤ周期）でコア３（Ｃ４）のＲＤをパイプ投入する。尚、ＲＳＬ２０Ｂは、コア３（Ｃ４）のＲＤ投入後の第７サイクルから第９サイクルまでの期間の３サイクル分をＯＤＤ周期のパイプ投入禁止区間に設定する。更に、ＲＳＬ２０Ｂは、コア３（Ｃ４）のＲＤ投入後の第７サイクルから第８サイクルまでの期間の２サイクル分を第１データバス６Ａのバス共用禁止区間に設定する。
【０１６０】
ＤＳＬ１６は、コア３（Ｃ４）のＲＤ投入後の第１４サイクル（ＯＤＤ周期）でデータメモリ２Ａ（Ｍ１）からの該当データを要求元のコア３（Ｃ４）へ転送すべく、第１データバス６Ａ上のデータ転送を開始する。第１データバス６Ａは、第１４サイクル（ＯＤＤ周期）から第１７サイクルまでの期間の４サイクルでコア３（Ｃ４）の該当データを転送する。
【０１６１】
次に、ＭＩポート１７（ＭＩ１）は、例えば、コア３（Ｃ１）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｂは、ＥＶＥＮ周期のパイプ投入禁止区間経過（第６〜第８サイクル）後、かつ、第１データバス６Ａのバス共用禁止区間経過（第６〜第８サイクル）後、制御パイプライン１０Ｂ上の第９サイクル（ＥＶＥＮ周期）でコア３（Ｃ１）のＲＤをパイプ投入する。
【０１６２】
しかしながら、コア３（Ｃ４）及びコア３（Ｃ１）は、第１データバス６Ａを共用するので、このままの状態だと、第１データバス６Ａ上のコア３（Ｃ４）のデータ及びコア３（Ｃ１）のデータが第１７サイクルで干渉する。そこで、遅延フラグ設定部２２は、第１データバス６Ａ上のコア３（Ｃ１）の第１７サイクルから第２０サイクルまでのデータの転送タイミングを１サイクル遅延させるべく、ＲＳＬ２０Ｂ上でコア３（Ｃ１）のＲＤに対応付けて遅延フラグを設定する。ＲＳＬ２０Ｂは、遅延フラグを設定した場合には、第１データバス６Ａのバス共用禁止区間をコア３（Ｃ１）のＲＤ投入後の第１０サイクルから第１２サイクルまでの期間の３サイクル分に延長設定する。また、ＲＳＬ２０Ｂは、コア３（Ｃ１）のＲＤ投入後の第１０サイクルから第１２サイクルまでの期間の３サイクル分をＥＶＥＮ周期のパイプ投入禁止区間に設定する。
【０１６３】
そして、ＤＳＬ１６は、コア３（Ｃ１）のＲＤの遅延フラグの設定に基づき、第１データバス６Ａ上のコア３（Ｃ１）のデータを１サイクル遅延したＥＶＥＮ周期のＬＡＴＥ−ＲＥＧ２３Ａの出力をデータ出力とする。つまり、ＤＳＬ１６は、ＬＡＴＥ−ＲＥＧ２３Ａの出力に応じてコア３（Ｃ１）の第１７サイクルから第２０サイクルまでのデータを１サイクル遅延して第１８サイクルから第２１サイクルまでのデータを出力する。その結果、ＤＳＬ１６は、第１データバス６Ａ上でコア３（Ｃ４）のデータ転送完了直後である第１８サイクルからコア３（Ｃ１）のデータ転送を開始する。従って、第１データバス６Ａ上では、コア３（Ｃ４）のデータ及びコア３（Ｃ１）のデータをデータ干渉なく連続転送できる。
【０１６４】
従って、実施の形態３では、パイプ投入禁止区間及びバス共用禁止区間経過後、先行パイプ命令と同一のデータバス６を用いる後続パイプ命令を先行パイプ命令と異なる周期で連続投入した場合、後続パイプ命令の後続データの転送タイミングを１サイクル遅延する。データバス６上では、先行パイプ命令の先行データと後続パイプ命令の後続データとが干渉なく連続転送する。その結果、バス構成を複雑化することなく、データバス６上で安定したデータ転送効率を確保できる。
【０１６５】
更に、実施の形態３では、先行パイプ命令と同一のデータバス６を用いる後続パイプ命令を先行パイプ命令と異なる周期で連続投入する場合には、ＲＳＬ２０Ｂ上で後続パイプ命令に対応付けて遅延フラグを設定する。その結果、ＬＡＴＥ−ＲＥＧ２３Ａ（２３Ｂ）は、遅延フラグの設定に基づき、データバス６上の後続パイプ命令の後続データの転送タイミングを１サイクル遅延できる。
【０１６６】
更に、実施の形態３では、ＲＳＬ２０Ｂ上で後続パイプ命令に対応付けて遅延フラグを設定した場合には、当該パイプ命令投入後の同一データバス６のバス共用禁止区間を１サイクル延長、すなわち、３サイクル分に延長する。その結果、同一データバス６上のデータ出力を１サイクル遅延したことで生じる後続データ以後のデータ干渉を確実に防止できる。
【０１６７】
尚、上記実施の形態３では、先行パイプ命令と同一のデータバス６を用いる後続パイプ命令を先行パイプ命令と異なる周期で連続投入した場合には、後続パイプ命令のバス共用禁止区間をパイプ投入後の３サイクルに延長設定する。しかしながら、後続パイプ命令のバス共用禁止区間をパイプ投入後の３サイクルに延長した場合には、以下に説明するように、当該後続パイプ命令と異なる周期の同一のデータバス６を用いる後続のパイプ命令が継続的に禁止されてアクセス周期に偏りが生じる。図１４は、第１キャッシュ制御部５００Ａの制御パイプライン１０Ｂのタイミング関係（アクセス周期に偏りが生じた場合）を示す説明図である。尚、図１４では、例えば、第１サイクル〜第２６サイクルをＥＶＥＮ周期及びＯＤＤ周期に時分割した例である。
【０１６８】
図１４においてＲＳＬ２０Ｂは、例えば、第１サイクル（ＥＶＥＮ周期）でコア３（Ｃ０）のＲＤ投入後、第１データバス６Ａのバス共用禁止区間内の第３サイクル（ＥＶＥＮ周期）でコア３（Ｃ５）のＲＤを検出したとしても第３サイクルでのＲＤ投入を禁止する。遅延フラグ設定部２２は、ＲＳＬ２０Ｂ上で第１データバス６Ａのバス共用禁止区間経過後、制御パイプライン１０Ｂ上の第４サイクル（ＯＤＤ周期）にコア３（Ｃ４）のＲＤを投入した場合には、コア３（Ｃ４）のＲＤに遅延フラグを設定する。尚、ＲＳＬ２０Ｂは、遅延フラグを設定した場合には、コア３（Ｃ４）の第４サイクルのＲＤ投入後のバス共用禁止区間を第５サイクルから第７サイクルまでの期間の３サイクル分に延長設定する。また、ＲＳＬ２０Ｂは、コア３（Ｃ４）のＲＤ投入後の第５サイクルから第７サイクルまでの期間の３サイクル分をＯＤＤ周期のパイプ投入禁止区間に設定する。
【０１６９】
その結果、ＲＳＬ２０Ｂは、コア３（Ｃ４）のＲＤ投入後の３サイクル分のバス共用禁止区間（第５〜第７サイクル）内の第７サイクル（ＥＶＥＮ周期）でコア３（Ｃ５）のＲＤを検出したとしても、制御パイプライン１０Ｂ上のＲＤ投入を再度禁止する。
【０１７０】
更に、ＤＳＬ１６は、コア３（Ｃ４）のＲＤの遅延フラグの設定に基づき、ＥＶＥＮ周期のＬＡＴＥ−ＲＥＧ２３Ａの出力で第１データバス６Ａ上のコア３（Ｃ４）のデータを１サイクル遅延する。その結果、第１データバス６Ａ上でコア３（Ｃ０）の先行データ及びコア３（Ｃ４）の後続データがデータ干渉なく連続転送できる。
【０１７１】
その後、遅延フラグ設定部２２は、ＲＳＬ２０Ｂ上で第１データバス６Ａのバス共用禁止区間（第５〜第７サイクル）経過後、第８サイクル（ＯＤＤ周期）にコア３（Ｃ１）のＲＤを投入した場合には、コア３（Ｃ１）のＲＤに遅延フラグを設定する。尚、ＲＳＬ２０Ｂは、遅延フラグを設定した場合には、ＲＤ投入後のバス共用禁止区間を第９サイクルから第１１サイクルまでの期間の３サイクル分に延長設定する。また、ＲＳＬ２０Ｂは、コア３（Ｃ１）のＲＤ投入後の第９サイクルから第１１サイクルまでの３サイクル分をＯＤＤ周期のパイプ投入禁止区間に設定する。
【０１７２】
その結果、ＲＳＬ２０Ｂは、コア３（Ｃ１）のＲＤ投入後の３サイクル分のバス共用禁止区間（第９〜第１１サイクル）内の第１１サイクル（ＥＶＥＮ周期）でコア３（Ｃ５）のＲＤを検出したとしても、制御パイプライン１０Ｂ上のＲＤ投入を再度禁止してしまう。更に、ＤＳＬ１６は、コア３（Ｃ１）のＲＤの遅延フラグの設定に基づき、ＯＤＤ周期のＬＡＴＥ−ＲＥＧ２３Ｂの出力で第１データバス６Ａ上のコア３（Ｃ１）のデータを１サイクル遅延する。その結果、第１データバス６Ａ上でコア３（Ｃ４）の先行データ及びコア３（Ｃ１）の後続データ同士が干渉なく連続転送できる。
【０１７３】
しかしながら、例えば、第１データバス６Ａを用いる遅延フラグを設定したパイプ命令をＯＤＤ周期で連続投入した場合、第１データバス６Ａのバス共用禁止区間を１サイクル延長してパイプ命令投入後の３サイクル分に延長設定する。その結果、第１データバス６Ａを用いるＯＤＤ周期のバス共用禁止区間がＯＤＤ周期後の３サイクルで継続的に設定されるので、第１データバス６Ａを用いるＥＶＥＮ周期でのパイプ命令の投入が継続的に禁止されてアクセス周期に偏りが生じてしまう。
【０１７４】
［実施の形態４］
そこで、このような事態に対処すべく、制御パイプライン１０Ｂ上のアクセス周期の偏りを防止する機能を備えたＬＳＩにつき、実施の形態４として、以下に説明する。尚、実施の形態３のＬＳＩ１Ｂと同一の構成については、同一符号を付すことで、その詳細な説明を省略する。図１５は、実施の形態４の第１キャッシュ制御部の構成を示すブロック図である。
【０１７５】
実施の形態３のＬＳＩ１Ｂと実施の形態４のＬＳＩ１Ｃとが異なるところは、図１５に示すように、ＲＳＬ２０Ｃ及び投入抑止フラグ設定部２４を第１キャッシュ制御部５００Ｃ（第２キャッシュ制御部５００Ｄ）に備えた点にある。
【０１７６】
投入抑止フラグ設定部２４は、同一データバス６を用いるコア３のパイプ命令に対応付けて遅延フラグを設定した場合で、かつ、同一データバス６を用いる異なる周期のパイプ命令がパイプ投入待ち状態である場合に、パイプ命令の要求元コア３及び隣接コア３に対して、同一周期でのパイプ命令の投入を禁止すべく、投入抑止フラグを設定する。尚、隣接コア３とは、例えば、コア３（Ｃ０）及びコア３（Ｃ１）同士、コア３（Ｃ２）及びコア３（Ｃ３）同士、コア３（Ｃ４）及びコア３（Ｃ５）同士、コア３（Ｃ６）及びコア３（Ｃ７）同士に相当する。
【０１７７】
ＲＳＬ２０Ｃは、投入抑止フラグが設定されたコア３からの同一周期でのパイプ命令を検出した場合には、当該投入抑止フラグに基づき、該当コア３に対応するＡＮＤ回路３１（図１１参照）の投入許可を禁止する。また、ＲＳＬ２０Ｃでは、投入抑止フラグが未設定のコア３の異なる周期のパイプ命令を検出した場合には、通常のパイプ投入禁止区間及びバス共用禁止区間経過後、該当コア３に対応するＡＮＤ回路３１の投入を許可する。また、ＲＳＬ２０Ｃは、投入抑止フラグが設定されたコア３でも、投入抑止フラグ設定の周期と異なる周期のパイプ命令を検出した場合には、通常のパイプ投入禁止区間及びバス共用禁止区間経過後、該当コア３に対応するＡＮＤ回路３１の投入を許可する。例えば、ＲＳＬ２０Ｃは、ＯＤＤ周期のパイプ命令の投入を禁止する投入抑止フラグが設定されたコア３からＥＶＥＮ周期のパイプ命令を検出した場合、通常のパイプ投入禁止区間及びバス共用禁止区間経過後、該当コア３に対応するＡＮＤ回路３１の投入を許可する。
【０１７８】
また、投入抑止フラグ設定部２４は、設定済みの投入抑止フラグの周期と異なる周期のパイプ命令の投入を検出した場合には、設定済みの全てのコア３の投入抑止フラグを解除する。尚、第２キャッシュ制御部５００Ｄの構成についても、データメモリ２Ａ（Ｍ２又はＭ３）を対象にした点で図１５とは異なるものの、実質的な構成についてはほぼ同一であるので、その重複する構成及び動作の説明は省略する。
【０１７９】
次に、実施の形態４のＬＳＩ１Ｃの動作について説明する。図１６は、実施の形態４の第１キャッシュ制御部５００Ｃの制御パイプライン１０Ｂのタイミング関係（アクセス周期の偏りを防止した場合）を示す説明図である。尚、図１６では、例えば、第１サイクル〜第２６サイクルをＥＶＥＮ周期及びＯＤＤ周期に時分割した例である。
【０１８０】
図１６においてＭＩポート１７（ＭＩ０）は、例えば、コア３（Ｃ０）からデータメモリ２Ａ（Ｍ０）へのデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｃは、制御パイプライン１０Ｂ上の第１サイクル（ＥＶＥＮ周期）でコア３（Ｃ０）のＲＤをパイプ投入する。尚、ＲＳＬ２０Ｃは、コア３（Ｃ０）のＲＤ投入後の第２サイクルから第４サイクルまでの期間の３サイクル分をＥＶＥＮ周期のパイプ投入禁止区間に設定する。更に、ＲＳＬ２０Ｃは、コア３（Ｃ０）のＲＤ投入後の第２サイクルから第３サイクルまでの期間の２サイクル分を第１データバス６Ａのバス共用禁止区間に設定する。
【０１８１】
ＭＩポート１７（ＭＩ５）は、例えば、第１データバス６Ａのバス共用禁止区間（第２〜第３サイクル）内の第３サイクル（ＥＶＥＮ周期）でコア３（Ｃ５）のデータ読出要求を検出すると、ＲＤを発行する。しかしながら、ＲＳＬ２０Ｃは、コア３（Ｃ５）のＲＤが第１データバス６Ａのバス共用禁止区間（第２〜第３サイクル）内なので、第３サイクル（ＥＶＥＮ周期）でのコア３（Ｃ５）のＲＤ投入を禁止する。
【０１８２】
また、ＭＩポート１７（ＭＩ４）は、第１データバス６Ａのバス共用禁止区間経過後、かつ、ＯＤＤ周期のパイプ投入禁止区間経過後、第４サイクル（直近ＯＤＤ周期）でコア３（Ｃ４）のデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｃは、パイプ投入禁止区間及びバス共用禁止区間経過後なので、第４サイクル（ＯＤＤ周期）でコア３（Ｃ４）のＲＤをパイプ投入する。
【０１８３】
更に、遅延フラグ設定部２２は、ＲＳＬ２０Ｃ上で第４サイクル（ＯＤＤ周期）のコア３（Ｃ４）のＲＤに遅延フラグを設定する。ＲＳＬ２０Ｃは、遅延フラグを設定した場合には、第１データバス６Ａのバス共用禁止区間をコア３（Ｃ４）のＲＤ投入後の第５サイクルから第７サイクルまでの期間の３サイクル分に延長設定する。また、ＲＳＬ２０Ｃは、コア３（Ｃ４）のＲＤ投入後の第５サイクルから第７サイクルまでの期間の３サイクル分をＯＤＤ周期のパイプ投入禁止区間に設定する。
【０１８４】
更に、投入抑止フラグ設定部２４は、第４サイクル（ＯＤＤ周期）のコア３（Ｃ４）のＲＤに対応付けて遅延フラグを設定した場合には、コア３（Ｃ４）及び隣接コア３（Ｃ５）に対してＯＤＤ周期のパイプ命令の投入を抑止する投入抑止フラグを設定する。この結果、ＲＳＬ２０Ｃは、コア３（Ｃ４）及びコア３（Ｃ５）のＯＤＤ周期のパイプ命令を検出した場合には、当該ＯＤＤ周期のパイプ命令の投入を禁止する。
【０１８５】
そして、ＤＳＬ１６は、コア３（Ｃ４）のＲＤの遅延フラグに基づき、第１データバス６Ａ上のコア３（Ｃ４）の後続データとして、１サイクル遅延したＯＤＤ周期のＬＡＴＥ−ＲＥＧ２３Ｂの出力をデータ出力とする。第１データバス６Ａ上では、コア３（Ｃ０）の先行データ及びコア３（Ｃ４）の後続データがデータ干渉なく、連続転送できる。
【０１８６】
ＭＩポート１７（ＭＩ１）は、例えば、第１データバス６Ａのバス共用禁止区間経過後、かつ、ＯＤＤ周期のパイプ投入禁止区間経過後、第８サイクル（直近のＯＤＤ周期）でコア３（Ｃ１）のデータ読出要求を検出すると、ＲＤを発行する。ＲＳＬ２０Ｃは、パイプ投入禁止区間及びバス共用禁止区間経過後なので、第８サイクル（ＯＤＤ周期）でコア３（Ｃ１）のＲＤをパイプ投入する。
【０１８７】
更に、遅延フラグ設定部２２は、ＲＳＬ２０Ｃ上でＯＤＤ周期のコア３（Ｃ１）のＲＤに対応付けて遅延フラグを設定する。ＲＳＬ２０Ｃは、遅延フラグが設定された場合には、第１データバス６Ａのバス共用禁止区間をコア３（Ｃ１）のＲＤ投入後の第９サイクルから第１１サイクルまでの期間の３サイクル分に延長設定する。更に、ＲＳＬ２０Ｃは、コア３（Ｃ１）のＲＤ投入後の第９サイクルから第１１サイクルまでの期間の３サイクル分をＯＤＤ周期のパイプ投入禁止区間に設定する。
【０１８８】
更に、投入抑止フラグ設定部２４は、第８サイクルのＯＤＤ周期のコア３（Ｃ１）のＲＤに対応付けて遅延フラグを設定した場合には、コア３（Ｃ１）及び隣接コア３（Ｃ０）に対してＯＤＤ周期のパイプ命令の投入を抑止する投入抑止フラグを設定する。この結果、ＲＳＬ２０Ｃは、コア３（Ｃ１）及びコア３（Ｃ０）のＯＤＤ周期でのパイプ命令を検出した場合には、当該ＯＤＤ周期のパイプ命令の投入を禁止する。
【０１８９】
そして、ＤＳＬ１６は、コア３（Ｃ１）のＲＤの遅延フラグに基づき、第１データバス６Ａ上のコア３（Ｃ１）の後続データとして、１サイクル遅延したＯＤＤ周期のＬＡＴＥ−ＲＥＧ２３Ｂの出力をデータ出力とする。第１データバス６Ａ上では、コア３（Ｃ４）の先行データ及びコア３（Ｃ１）の後続データがデータ干渉なく、連続転送できる。
【０１９０】
更に、ＭＩポート１７（ＭＩ０）は、例えば、第１データバス６Ａのバス共用禁止区間経過後、かつＯＤＤ周期のパイプ投入禁止区間経過後、第１２サイクル（ＯＤＤ周期）でコア３（Ｃ０）のデータ読出要求を検出すると、ＲＤを発行する。しかしながら、ＲＳＬ２０Ｃは、第１２サイクルのＯＤＤ周期でコア３（Ｃ０）のＲＤを検出した場合、コア３（Ｃ０）に投入抑止フラグが設定されているので、当該コア３（Ｃ０）のパイプ命令の投入を禁止する。
【０１９１】
その結果、ＲＳＬ２０Ｃは、ＯＤＤ周期のパイプ投入禁止区間経過後、かつ第１データバス６Ａのバス共用禁止区間経過後の第１３サイクル（ＥＶＥＮ周期）でコア３（Ｃ５）のＲＤを検出した場合には、このＥＶＥＮ周期でコア３（Ｃ５）のＲＤをパイプ投入する。尚、ＲＳＬ２０Ｃは、コア３（Ｃ５）のＲＤ投入後の第１４サイクルから第１６サイクルまでの期間の３サイクル分をパイプ投入禁止区間に設定する。更に、ＲＳＬ２０Ｃは、コア３（Ｃ５）のＲＤ投入後の第１４サイクルから第１５サイクルまでの期間の２サイクル分を第１データバス６Ａのバス共用禁止区間に設定する。
【０１９２】
更に、投入抑止フラグ設定部２４は、第１３サイクル（ＥＶＥＮ周期）でコア３（Ｃ５）のＲＤをパイプ投入したことで、現在設定済みのコア３（Ｃ０）、コア３（Ｃ１）、コア３（Ｃ４）及びコア３（Ｃ５）の投入抑止フラグの設定を全て解除する。そして、ＤＳＬ１６は、コア３（Ｃ５）のＲＤに基づき、第１データバス６Ａ上のコア３（Ｃ５）のデータを第２２サイクル（ＥＶＥＮ周期）でデータ出力する。その結果、第１データバス６Ａ上では、コア３（Ｃ１）の先行データ及びコア３（Ｃ５）の後続データがデータ干渉なく、連続転送できる。
【０１９３】
更に、ＲＳＬ２０Ｃは、例えば、ＥＶＥＮ周期のパイプ投入禁止区間（第１４〜第１６サイクル）内でも、第１データバス６Ａのバス共用禁止区間（第１４〜第１５サイクル）経過後、第１６サイクル（ＯＤＤ周期）のコア３（Ｃ３）のＲＤを検出する。ＲＳＬ２０Ｃは、第１６サイクル（ＯＤＤ周期）でコア３（Ｃ０）のＲＤを検出した場合には、第１６サイクル（ＯＤＤ周期）でコア３（Ｃ３）のＲＤをパイプ投入する。
【０１９４】
更に、遅延フラグ設定部２２は、同一の第１データバス６Ａを用いるので、ＲＳＬ２０Ｃ上で第１６サイクル（ＯＤＤ周期）のコア３（Ｃ０）のＲＤに遅延フラグを設定する。ＲＳＬ２０Ｃは、遅延フラグを設定した場合には、第１データバス６Ａのバス共用禁止区間をコア３（Ｃ０）のＲＤ投入後の第１７サイクルから第１９サイクルまでの間の３サイクル分に延長設定する。また、ＲＳＬ２０Ｃは、コア３（Ｃ０）のＲＤ投入後の第１７サイクルから第１９サイクルまでの間の３サイクル分をＯＤＤ周期のパイプ投入禁止区間に設定する。
【０１９５】
更に、投入抑止フラグ設定部２４は、ＯＤＤ周期のコア３（Ｃ０）のＲＤに対応付けて遅延フラグを設定した場合には、コア３（Ｃ０）及び隣接するコア３（Ｃ１）に対してＯＤＤ周期のパイプ命令の投入を抑止する投入抑止フラグを設定する。この結果、ＲＳＬ２０Ｃは、コア３（Ｃ０）及びコア３（Ｃ１）のＯＤＤ周期のパイプ命令を検出した場合には、当該パイプ命令の投入を禁止する。
【０１９６】
そして、ＤＳＬ１６は、コア３（Ｃ０）のＲＤの遅延フラグに基づき、第１データバス６Ａ上のコア３（Ｃ０）の後続データとして、１サイクル遅延したＯＤＤ周期のＬＡＴＥ−ＲＥＧ２３Ｂの出力をデータ出力とする。第１データバス６Ａ上では、コア３（Ｃ５）の先行データ及びコア３（Ｃ０）の後続データがデータ干渉なく、連続転送できる。以下、上述した処理動作を繰り返し実行する。
【０１９７】
従って、実施の形態４では、同一データバス６を用いる遅延フラグを設定したパイプ命令を同一周期で検出した場合、かつ、同一データバス６を用いる異なる周期のパイプ命令がパイプ投入待ち状態となっている場合は、当該パイプ命令の要求元コア３及び隣接コア３に対して同一周期のパイプ命令の投入を抑止する投入抑止フラグを設定する。そして、投入抑止フラグ設定済みのコア３に対する同一周期のパイプ命令を検出した場合には、該当周期でのパイプ命令の投入を禁止する。その結果、同一データバス６を用いる遅延フラグを設定したパイプ命令を同一周期で検出した場合でも、該当周期でのパイプ命令の投入を禁止しながら、同一データバス６を用いた異なる周期でのパイプ命令の投入を可能にする。その結果、パイプ命令を投入するアクセス周期に偏りが生じるような事態を回避できる。
【０１９８】
更に、実施の形態４では、設定済みの投入抑止フラグの周期と異なる周期のパイプ命令の投入を検出した場合には、設定済みの全てのコア３の投入抑止フラグを解除することで、簡単に投入抑止フラグの設定を解除できる。
【０１９９】
尚、上記実施の形態では、例えば、キャッシュメモリ２を４個、ＭＡＣ４を４個、キャッシュ制御部５（５０，５００）を２個に分割したが、これら分割個数は適宜変更可能である。
【０２００】
上記実施の形態では、１本の制御パイプライン１０（１０Ａ，１０Ｂ）を使用してＥＶＥＮ周期及びＯＤＤ周期の２サイクル周期で２個のデータメモリ２Ａをアクセス制御する。しかしながら、データメモリ２ＡをＮ個に分割した場合には、制御パイプライン１０をＮサイクル周期に時分割することで、Ｎ個分のデータメモリ２Ａをアクセス制御することも可能である。
【０２０１】
また、上記実施の形態では、コア３及びデータメモリ２Ａ間のデータ転送時間やデータ読出時間を４サイクルに設定し、パイプ投入禁止区間をパイプ命令投入後の３サイクル分、バス共用禁止区間をパイプ命令投入後の２サイクル分又は３サイクル分とした。しかしながら、データ転送時間やデータ読出時間を適宜設定変更することで、パイプ投入禁止区間及びバス共用禁止区間のサイクルも適宜変更可能である。
【０２０２】
また、上記実施の形態４では、パイプ命令に遅延フラグを設定した場合には、当該パイプ命令に関わるコア３及び隣接コア３に投入抑止フラグを設定するようにした。しかしながら、投入抑止フラグの設定対象をコア３及び隣接コア３に限定するものではなく、要求元コア３と同一データバス６を共用するグループ内の全コア３としても良く、例えば、コア３（Ｃ０，Ｃ１，Ｃ４，Ｃ５）やコア３（Ｃ２，Ｃ３，Ｃ６及びＣ７）のグループ単位で設定しても良い。
【０２０３】
尚、本実施の形態で説明した各種処理の内、自動的に行われるものとして説明した処理の全部又は一部を手動で行うことも可能であることは勿論のこと、その逆に、手動で行われるものとして説明した処理の全部又は一部を自動で行うことも可能である。また、本実施の形態で説明した処理手順、制御手順、具体的名称、各種データやパラメータを含む情報についても、特記した場合を除き、適宜変更可能である。
【０２０４】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【０２０５】
以上の各実施の形態を含む実施形態に関し、さらに以下の付記を開示する。
【０２０６】
（付記１）複数の演算処理部に共有され、キャッシュメモリとしてデータを記憶する複数の記憶部と、
前記複数の演算処理部に共有され、前記記憶部から読み出されたデータを前記演算処理部に転送する複数のバスと、
前記複数の記憶部毎に時分割された周期に従って各記憶部にアクセスし、前記演算処理部から前記記憶部へのアクセス命令を実行し、当該記憶部から読み出したデータを前記演算処理部に対応する前記バスに転送する命令実行部と、
前記演算処理部から前記記憶部へのアクセス命令を受け付け、先行するアクセス命令の実行に要する期間内において同一の記憶部に対する後続のアクセス命令の投入を禁止し、かつ、前記実行に要する期間より短い所定の期間内において前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令の投入を禁止しつつ、前記アクセス命令を前記命令実行部に投入する命令投入部と、
前記先行するアクセス命令の実行に要する期間内において前記命令投入部によって同一のバスを用いる後続のアクセス命令が投入された場合に、当該後続のアクセス命令に応じて前記記憶部から読み出されたデータを前記バスへ転送開始するタイミングを遅延させるよう前記命令実行部を制御するタイミング制御部と
を有することを特徴とするキャッシュメモリ制御装置。
【０２０７】
（付記２）前記先行するアクセス命令の実行に要する期間内において前記命令投入部によって前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令が投入された場合に、当該後続のアクセス命令に対応付けて遅延フラグを設定する遅延フラグ設定部を有し、
前記タイミング制御部は、
前記遅延フラグ設定部によって遅延フラグが設定されたアクセス命令を実行する場合には、前記先行するアクセス命令に応じたデータを前記バスへ転送終了した直後に、当該遅延フラグが設定されたアクセス命令に応じたデータを前記バスへ転送開始するように前記命令実行部を制御することを特徴とする付記１記載のキャッシュメモリ制御装置。
【０２０８】
（付記３）前記命令投入部は、
更に、前記先行するアクセス命令の実行に要する期間内において前記命令投入部によって前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令が投入された場合には、当該後続のアクセス命令の実行に要する期間内において当該アクセス命令と同一のバスを用いるアクセス命令の投入を禁止することを特徴とする付記１記載のキャッシュメモリ制御装置。
【０２０９】
（付記４）前記命令投入部は、
更に、前記先行するアクセス命令の実行に要する期間内において前記命令投入部によって前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令が投入された場合には、当該後続のアクセス命令を要求した演算処理部及び当該演算処理部と関連性がある演算処理部から要求され、かつ、当該後続のアクセス命令と同一の記憶部に対するアクセス命令の投入を禁止することを特徴とする付記１記載のキャッシュメモリ制御装置。
【０２１０】
（付記５）前記関連性がある演算処理部は、
前記後続のパイプ命令を要求した演算処理部と同一のバスを用いる全ての演算処理部であることを特徴とする付記４記載のキャッシュメモリ制御装置。
【０２１１】
（付記６）前記関連性がある演算処理部は、
前記後続のパイプ命令を要求した演算処理部及び、当該演算処理部と同一のバスを用いる演算処理部の内、前記後続のパイプ命令を要求した演算処理部と隣接する演算処理部であることを特徴とする付記４記載のキャッシュメモリ制御装置。
【０２１２】
（付記７）複数の演算処理部と、
前記複数の演算処理部に共有され、キャッシュメモリとしてデータを記憶する複数の記憶部と、
前記複数の演算処理部に共有され、前記記憶部から読み出されたデータを前記演算処理部に転送する複数のバスと、
前記複数の記憶部毎に時分割された周期に従って各記憶部にアクセスし、前記演算処理部から前記記憶部へのアクセス命令を実行し、当該記憶部から読み出したデータを前記演算処理部に対応する前記バスに転送する命令実行部と、
前記演算処理部から前記記憶部へのアクセス命令を受け付け、先行するアクセス命令の実行に要する期間内において同一の記憶部に対する後続のアクセス命令の投入を禁止し、かつ、前記実行に要する期間より短い所定の期間内において前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令の投入を禁止しつつ、前記アクセス命令を前記命令実行部に投入する命令投入部と、
前記先行するアクセス命令の実行に要する期間内において前記命令投入部によって同一のバスを用いる後続のアクセス命令が投入された場合に、当該後続のアクセス命令に応じて前記記憶部から読み出されたデータを前記バスへ転送開始するタイミングを遅延させるよう前記命令実行部を制御するタイミング制御部と
を有することを特徴とする半導体集積回路。
【０２１３】
（付記８）複数の演算処理部に共有され、キャッシュメモリとしてデータを記憶する複数の記憶部と、
前記複数の演算処理部に共有され、前記記憶部から読み出されたデータを前記演算処理部に転送する複数のバスと、
前記複数の記憶部毎に時分割された周期に従って各記憶部にアクセスし、前記演算処理部から前記記憶部へのアクセス命令を実行し、当該記憶部から読み出したデータを前記演算処理部に対応する前記バスに転送する命令実行部とを有するキャッシュメモリ制御装置のキャッシュメモリ制御方法であって、
前記演算処理部から前記記憶部へのアクセス命令を受け付け、先行するアクセス命令の実行に要する期間内において同一の記憶部に対する後続のアクセス命令の投入を禁止し、かつ、前記実行に要する期間より短い所定の期間内において前記先行するアクセス命令と同一のバスを用いる後続のアクセス命令の投入を禁止しつつ、前記アクセス命令を前記命令実行部に投入する命令投入ステップと、
前記先行するアクセス命令の実行に要する期間内において前記命令投入ステップによって同一のバスを用いる後続のアクセス命令が投入された場合に、当該後続のアクセス命令に応じて前記記憶部から読み出されたデータを前記バスへ転送開始するタイミングを遅延させるよう前記命令実行部を制御するタイミング制御ステップと
を含むことを特徴とするキャッシュメモリ制御方法。
【符号の説明】
【０２１４】
１Ａ  ＬＳＩ
１Ｂ  ＬＳＩ
１Ｃ  ＬＳＩ
２  キャッシュメモリ
２Ａ  データメモリ（Ｍ０〜Ｍ３）
３  コア（Ｃ０〜Ｃ７）
６Ａ  第１データバス
６Ｂ  第２データバス
１０Ｂ  制御パイプライン
２０Ｂ  ＲＳＬ
２０Ｃ  ＲＳＬ
２２  遅延フラグ設定部
２３Ａ  遅延レジスタ
２３Ｂ  遅延レジスタ
２４  投入抑止フラグ設定部
５０Ａ  第１キャッシュ制御部
５０Ｂ  第２キャッシュ制御部
５１  命令実行部
５２  命令投入部
５３  タイミング調整部
５００Ａ  第１キャッシュ制御部
５００Ｂ  第２キャッシュ制御部
５００Ｃ  第１キャッシュ制御部
５００Ｄ  第２キャッシュ制御部
【図１】
0005482145.tif 000002
【図２】
0005482145.tif 000003
【図３】
0005482145.tif 000004
【図４】
0005482145.tif 000005
【図５】
0005482145.tif 000006
【図６】
0005482145.tif 000007
【図７】
0005482145.tif 000008
【図８】
0005482145.tif 000009
【図９】
0005482145.tif 000010
【図１０】
0005482145.tif 000011
【図１１】
0005482145.tif 000012
【図１２】
0005482145.tif 000013
【図１３】
0005482145.tif 000014
【図１４】
0005482145.tif 000015
【図１５】
0005482145.tif 000016
【図１６】
0005482145.tif 000017