(57)【要約】【課題】配線コストを抑えつつ、演算処理部から主記憶部へのデータ書出しに要する時間を短縮する。【解決手段】演算処理部２０によって書出されたデータを一時的に保持するデータメモリ１１と、演算処理部２０からデータメモリ１１への入力経路Ｌ５０とデータメモリ１１から主記憶部３０への出力経路Ｌ６０とを接続する接続部１２と、出力経路Ｌ６０に設けられ、データメモリ１１から出力されるデータまたは演算処理部２０から接続部１２経由で転送されるデータの何れか一方を選択して出力経路Ｌ６０へ転送する選択部１４と、データメモリ１１から主記憶部３０へデータを書出す場合には、選択部１４を制御して、データメモリ１１から出力されるデータを出力経路Ｌ６０へ転送させ、演算処理部２０から主記憶部３０へデータを書出す場合には、選択部１４を制御して、該データを接続部１２経由で出力経路Ｌ６０へ転送させる制御部１３とを備える。【選択図】図１
2011008731.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を実行する演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とするキャッシュメモリ装置。
【請求項２】
前記制御部は、前記演算処理部から前記主記憶部へデータを書出すべき旨のデータ書出し命令を受けた場合において、他の命令に基づく処理により前記入力経路または前記出力経路が使用されている場合には、前記入力経路または前記出力経路の使用が終了するまでの間、前記データ書出し命令に基づく処理の実行開始を待機することを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項３】
前記制御部は、前記演算処理部から前記主記憶部へデータを書出すデータ書出し処理を実行している間、前記入力経路を使用する他の処理の実行開始を待機することを特徴とする請求項１または２に記載のキャッシュメモリ装置。
【請求項４】
前記制御部は、前記演算処理部から前記主記憶部へデータを書出すデータ書出し処理を実行している間、前記出力経路を使用する他の処理の実行開始を待機することを特徴とする請求項１〜３の何れか１項に記載のキャッシュメモリ装置。
【請求項５】
前記制御部は、待機している命令の実行開始タイミングとなった場合に、該命令をパイプラインへ投入して該命令に基づく処理の実行を開始することを特徴とする請求項２〜４の何れか１項に記載のキャッシュメモリ装置。
【請求項６】
前記接続部は、前記データメモリの近傍で前記入力経路と接続することを特徴とする請求項１〜５の何れか１項に記載のキャッシュメモリ装置。
【請求項７】
前記選択部は、前記データメモリの近傍に設けられることを特徴とする請求項１〜６の何れか１項に記載のキャッシュメモリ装置。
【請求項８】
演算処理を実行する演算処理部と、
主記憶部と接続し、該主記憶部へのアクセスを制御する主記憶制御部と、
前記演算処理部と前記主記憶制御部との間に介在し、前記演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから前記主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とする半導体集積回路。
【請求項９】
前記演算処理部と前記主記憶制御部と前記データメモリとをそれぞれ複数備えることを特徴とする請求項８に記載の半導体集積回路。
【請求項１０】
演算処理を実行する演算処理部と、
主記憶部と接続し、該主記憶部へのアクセスを制御する主記憶制御部と、
前記演算処理部と前記主記憶制御部との間に介在し、前記演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから前記主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とする演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ装置、半導体集積回路および演算処理装置に関する。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）などのプロセッサコアを備える演算処理装置において、処理の高速化を図るために、キャッシュメモリを設けることが一般的に行われている。キャッシュメモリは、メインメモリなどの主記憶部とプロセッサコアとの間に設けられ、プロセッサコアが頻繁に使用するデータ等を一時的に保持する。プロセッサコアは、演算処理を実行する場合に、主記憶部よりも近い位置にあるキャッシュメモリからデータを読み込むことで、メモリアクセスに要する時間を短縮することができる。
【０００３】
また、従来の演算処理装置では、プロセッサコアの演算処理によって加工されたデータは、キャッシュメモリに一旦保持され、所定のタイミングで主記憶部へ書出すことが行われる。ところが、キャッシュメモリ経由でデータを主記憶部へ書出すこととすると、キャッシュメモリを経由する分だけ、データ書出しに要する時間が長くなってしまう。そこで、データ書出しに要する時間を短縮して演算処理装置の性能を向上させるために、演算処理装置には、プロセッサコアと主記憶部との間を直接繋ぐデータ経路が設けられる場合がある。図７に、かかるデータ経路が設けられた演算処理装置の一例を示す。
【０００４】
図７に示すように、演算処理装置５００は、プロセッサコア（以下、単に「コア」と呼ぶ）５０１と、第１のキュー５０２と、第２のキュー５０３と、第３のキュー５０４とを備える。また、演算処理装置５００は、セレクタ５０５と、データメモリ５０６と、制御部５０７と、ＭＡＣ(Memory Access Controller)５０８とを備える。
【０００５】
コア５０１は、データメモリ５０６に記憶されたデータを使用して様々な演算処理を実行する演算処理部である。第１のキュー５０２は、ライトバックの実行時に、コア５０１からデータメモリ５０６へ書き戻されるデータを一時的に保持するキューである。第２のキュー５０３は、キャッシュリプレース時に、データメモリ５０６からＭＡＣ５０８を介して図示しない主記憶部へ書き戻されるデータを一時的に保持するキューである。第３のキュー５０４は、キャッシュミスが生じた場合のムーブインの実行時に、ＭＡＣ５０８からデータメモリ５０６へ転送されるデータを一時的に保持するキューである。
【０００６】
セレクタ５０５は、第１のキュー５０２および第３のキュー５０４に保持されたデータのいずれか一方を選択してデータメモリ５０６へ出力する。データメモリ５０６は、コア５０１によって頻繁に使用されるデータやコア５０１の演算処理により加工されたデータを一時的に保持する。制御部５０７は、コア５０１からの命令に基づき、パイプライン処理によりデータの書出しあるいは読込みを実行する。具体的には、制御部５０７は、ＭＯ(Move Out)ポート部５１１と、プライオリティ部５１２と、パイプライン５１３と、タグメモリ５１４とを備える。
【０００７】
ＭＯポート部５１１は、コア５０１からのデータ書出しやデータ読込み等のオーダ応答がセットされる。プライオリティ部５１２は、これらの調停(データ干渉制御)を行い、パイプライン５１３へ投入する。タグメモリ５１４は、データメモリ５０６に記憶されたデータの物理アドレスやタグ検索に用いられる論理アドレス等を保持する。パイプライン５１３は、プライオリティ部５１２からデータ書出し要求が投入されると、該要求に含まれる論理アドレスに基づきタグメモリ５１４を検索し、コア５０１が要求したデータの物理アドレスを特定する。ＭＡＣ５０８は、図示しない主記憶部に接続し、第２のキュー５０３より取得したデータを主記憶部へ書出す。なお、ＭＡＣ５０８は、その他の処理として、例えば、キャッシュミスが生じた場合に、キャッシュミスしたデータを主記憶部から取得し、第３のキュー５０４へ転送する。
【０００８】
ここで、データメモリ５０６に最新データが記憶されている場合、主記憶部へのデータ書出しには、データメモリ５０６からＭＡＣ５０８へのデータ経路Ｌ２０が用いられる。なお、コア５０１からデータメモリ５０６へのデータの書き戻しには、コア５０１から第１のキュー５０２およびセレクタ５０５を経由しデータメモリ５０６へと至るデータ経路Ｌ１０が用いられる。
【０００９】
一方、コア５０１に最新データがあり、データメモリ５０６には古いデータしかない場合、ＭＡＣ５０８へのデータ書出しには、コア５０１から直接ＭＡＣ５０８へ転送するデータ経路Ｌ３０が用いられる。このように、コア５０１とＭＡＣ５０８とを直接繋ぐデータ経路Ｌ２０を設けることにより、コア５０１に存在する最新データをデータメモリ５０６を経由することなく、主記憶部へ素早く書出すことができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開昭６３−２０６４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、コアとＭＡＣとを直接繋ぐデータ経路を新たに設けた場合、配線コストが高くなるという問題がある。そして、かかる問題は、特に、マルチコア化およびマルチバンク化されたＣＰＵにおいて顕著となる。以下、かかる点について、具体的に説明する。
【００１２】
近年、１つのコアを備えるシングルコアのＣＰＵにおいては、消費電力の増大などの問題が無視できないものとなっており、性能向上の限界が近づいている。そこで、１つの基板上に複数のコアを備えるマルチコア化によって、ＣＰＵのさらなる性能向上が図られることがある。また、マルチコア化と同時に、キャッシュメモリや主記憶部を複数のバンクに分割することにより、各コアとキャッシュメモリや主記憶部との間のスループットの向上が図られることがある。図８は、従来におけるＣＰＵの概略構成を示す図である。
【００１３】
図８に示すように、マルチコア化およびバンク分けされたＣＰＵ７００においては、複数のコア＃０〜＃７、データメモリ＃０〜＃３、ＭＡＣ＃０〜＃３が基板の外縁に配置される。また、基板の中央には、全体のデータの転送を制御する制御部が配置される。ここで、バンク分けされたそれぞれの主記憶部には、それぞれ異なるデータが記憶されるため、各コア＃０〜＃７は、基板上の全てのＭＡＣ＃０〜＃３に対してデータの書出しを行う可能性がある。そのため、コアとＭＡＣとを直接繋ぐデータ経路を設ける場合には、全てのコアおよびＭＡＣを互いに接続する可能性があり、その結果、配線コストが高くなる。
【００１４】
より具体的には、ＣＰＵ７００には、コアとＭＡＣとを接続するデータ経路Ｌ３０が、全コア＃０〜＃３及び全ＭＡＣ＃０〜＃３間に設けられる。例えば、図８に示すように、コア＃１には、全てのＭＡＣ＃０〜＃３と接続するデータ経路Ｌ３０ａ〜Ｌ３０ｄが設けられる。なお、コア＃１には、さらに、データメモリ＃０〜＃３と接続するデータ経路Ｌ２０ａ〜Ｌ２０ｄが設けられ、また、各データメモリ＃０〜＃３には、対応するＭＡＣ＃０〜＃３と接続するデータ経路Ｌ１０ａ〜Ｌ１０ｄが設けられる。
【００１５】
そして、これらのデータ経路のうち、特に、データ経路Ｌ３０ｂ及びデータ経路Ｌ３０ｄは、基板の中央に配置された制御部を横切るようにして設ける可能性があるため、配線コストが非常に高くなる。そのため、マルチコア化およびマルチバンク化されたＣＰＵ７００においては、コアとＭＡＣとを直接繋ぐデータ経路Ｌ３０の実装が困難であった。なお、図８において、コア及びＭＡＣとデータメモリ及び制御部との間の領域Ａ１，Ａ２は、配線が特に集中する領域であり、このような領域にさらにデータ経路Ｌ３０を設けることは、回路規模の増大を招く結果となるため、この点からも実装は困難であった。
【００１６】
開示の技術は、上記に鑑みてなされたものであって、配線コストを抑えつつ、演算処理部から主記憶部へのデータ書出しに要する時間を短縮することのできるキャッシュメモリ装置、半導体集積回路および演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本願の開示するキャッシュメモリ装置、半導体集積回路および演算処理装置は、一つの態様において、演算処理を実行する演算処理部によって書出されたデータを一時的に保持するデータメモリと、前記演算処理部から前記データメモリへの入力経路と、前記データメモリから主記憶部への出力経路とを接続する接続部と、前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部とを備える。
【発明の効果】
【００１８】
本願の開示するキャッシュメモリ装置、半導体集積回路および演算処理装置の一つの態様によれば、配線コストを抑えつつ、演算処理部から主記憶部へのデータ書出しに要する時間を短縮することができるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】図１は、実施例１にかかるキャッシュメモリ装置における接続関係を示す図である。
【図２】図２は、実施例２にかかるＣＰＵの概略構成を示す図である。
【図３】図３は、実施例２にかかるＣＰＵの要部構成を示す図である。
【図４】図４は、実施例２にかかるキャッシュメモリ装置における接続関係を示す図である。
【図５】図５は、実施例２にかかる制御部の処理手順を示すフローチャートである。
【図６】図６は、実施例２にかかるＣＰＵを搭載するコンピュータの一例を示すブロック図である。
【図７】図７は、従来における演算処理装置の一例を示す図である。
【図８】図８は、従来におけるＣＰＵの概略構成を示す図である。
【発明を実施するための形態】
【００２０】
以下に、本願の開示するキャッシュメモリ装置、半導体集積回路および演算処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００２１】
図１は、実施例１にかかるキャッシュメモリ装置における接続関係を示す図である。本実施例にかかるキャッシュメモリ装置１０は、演算処理部２０と主記憶部とのデータのやり取りを高速化する記憶装置であり、図１に示すように、演算処理部２０と主記憶部３０との間に設けられる。主記憶部３０は、データを記憶する記憶部であり、演算処理部２０は、主記憶部３０に記憶されたデータを使用して各種の演算処理を実行する。
【００２２】
キャッシュメモリ装置１０は、データメモリ１１と、接続部１２と、制御部１３と、選択部１４とを備える。データメモリ１１は、演算処理部２０によって演算処理されたデータを一時的に保持する。具体的には、データメモリ１１は、図１に示すように、演算処理部２０から入力経路Ｌ５０を経由して転送されるデータを一時的に保持する。
【００２３】
接続部１２は、演算処理部２０からデータメモリ１１への入力経路Ｌ５０と、データメモリ１１から主記憶部３０への出力経路Ｌ６０とを接続する配線である。選択部１４は、出力経路Ｌ６０に設けられ、制御部１３の制御により、データメモリ１１から出力されるデータまたは演算処理部２０から接続部１２経由で転送されるデータの何れか一方を選択して主記憶部３０へ転送する。
【００２４】
すなわち、制御部１３は、データメモリ１１に保持されたデータを主記憶部３０へ書出す場合には、選択部１４を制御して、データメモリ１１から出力されるデータを選択させる。そして、選択部１４は、該データを出力経路Ｌ６０経由で主記憶部３０へ転送する。
【００２５】
一方、演算処理部２０から主記憶部３０へデータを直接書出す場合、制御部１３は、選択部１４を制御して、該データを接続部１２経由で選択部１４へ転送させる。そして、選択部１４は、該データを出力経路Ｌ６０経由で主記憶部３０へ転送する。これにより、演算処理部２０によって演算処理されたデータは、演算処理部２０→入力経路Ｌ５０→接続部１２→選択部１４→出力経路Ｌ６０を経由して主記憶部３０へと書出される。
【００２６】
このように、本実施例では、演算処理部２０からデータメモリ１１を迂回して主記憶部３０へ直接データを書出す経路を設けたため、演算処理部２０から主記憶部３０へのデータ書出しに要する時間を短縮することができる。しかも、かかるデータ経路は、演算処理部２０からデータメモリ１１への入力経路Ｌ５０およびデータメモリ１１から主記憶部３０への出力経路Ｌ６０を利用して設けられるため、配線コストを抑えることができる。
【００２７】
したがって、本実施例では、配線コストを抑えつつ、演算処理部２０から主記憶部３０へのデータ書出しに要する時間を短縮することができる。
【実施例２】
【００２８】
次に、実施例２にかかるキャッシュメモリ装置、半導体集積回路および演算処理装置について説明する。なお、以下においては、半導体集積回路の一例として、１つの基板上にコア、データメモリ及びＭＡＣがそれぞれ複数配置されたＣＰＵを用いて説明する。ただし、本願開示の技術は、１つの基板上にコア、データメモリ及びＭＡＣがそれぞれ１つずつ配置されたＣＰＵに対しても適用することができる。
【００２９】
図２は、本実例にかかるＣＰＵの概略構成を示す図である。図２に示すように、ＣＰＵ１は、８つのコア＃０〜＃７と、４つのデータメモリ＃０〜＃３と、４つのＭＡＣ＃０〜＃３と、制御部とを有する半導体集積回路である。かかるＣＰＵ１において、コア＃０〜＃７、データメモリ＃０〜＃３及びＭＡＣ＃０〜＃３は、それぞれ基板の外縁に配置され、制御部は、基板の中央に配置される。
【００３０】
コア＃０〜＃７は、データメモリ＃０〜＃３に一時的に保持されたデータを取得し、様々な演算処理を実行する演算処理部である。ここで、例えば、コア＃０〜＃７により演算処理されたデータは、各コア＃０〜＃７内にそれぞれ設けられた図示しない記憶部（以下、「一次キャッシュ」と呼ぶ）またはデータメモリ＃０〜＃３に一時的に記憶される。そして、コア＃０〜＃７は、一次キャッシュに記憶されたデータ或いはデータメモリ＃０〜＃３に記憶されたデータを図示しない主記憶部へ書出すよう制御部に対して命令する。
【００３１】
データメモリ＃０〜＃３は、コア＃０〜＃７が頻繁に使用するデータやコア＃０〜＃７により演算処理されたデータ等を一時的に保持する。具体的には、制御部においてライトバック（Write Back）処理が実行されると、データメモリ＃０〜＃３は、該コアの一次キャッシュに保持されたデータを取得して記憶する。また、制御部においてデータ書出し処理が実行されると、データメモリ＃０〜＃３は、自己が保持するデータをＭＡＣ＃０〜＃３に出力する。
【００３２】
ＭＡＣ＃０〜＃３は、図示しない主記憶部と接続し、主記憶部へのアクセスを制御する主記憶制御装置である。具体的には、ＭＡＣ＃０〜＃３は、データメモリ＃０〜＃３からデータを取得し、主記憶部に対して該データを書出す。
【００３３】
制御部は、パイプライン処理によってデータ書出し処理やライトバック処理などを実行する。ここで、データ書出し処理とは、コア＃０〜＃７の一次キャッシュに記憶された最新データを主記憶部へと書き戻す処理またはデータメモリ＃０〜＃３に記憶されたデータを主記憶部へと書き戻す処理を示す。また、ライトバック処理とは、コア＃０〜＃７の一次キャッシュに記憶されたデータをデータメモリ＃０〜＃３に書き戻す処理を示す。
【００３４】
図３は、本実施例にかかるＣＰＵ１の要部構成を示す図である。なお、図３においては、特に、図２に示したＣＰＵ１のコア＃０〜＃３、データメモリ＃０，＃１およびＭＡＣ＃０，＃１に対応する部分を示している。
【００３５】
図３に示すＣＰＵ１は、制御部１０１と、第１のキュー１０２と、第２のキュー１０３と、第３のキュー１０４と、セレクタ１０５と、データメモリ１０６と、セレクタ１０７，１０８と、接続部Ｌ０とを備える。また、ＣＰＵ１は、コア２００ａ，２００ｂと、ＭＡＣ３００とを備える。なお、図３に示すＣＰＵ１は、左右対称に構成されているため、左半分についてのみ符号を付している。
【００３６】
コア２００ａ，２００ｂは、ＭＡＣ３００に接続する図示しない主記憶部またはデータメモリ１０６に記憶されたデータを使用して様々な演算処理を実行する。例えば、コア２００ａ，２００ｂは、演算処理に用いるデータを制御部１０１に対して要求し、該当するデータがデータメモリ１０６に記憶されている場合（キャッシュヒット）、データ読出し処理によりデータメモリ１０６から該当するデータを読み出す。一方、演算処理に用いるデータがデータメモリ１０６に記憶されていない場合（キャッシュミス）、コア２００ａ，２００ｂは、ムーブイン処理により主記憶部からＭＡＣ３００及び第３のキュー１０４を介してデータメモリ１０６へデータを転送させた後、該データをデータメモリ１０６から取得する。
【００３７】
また、コア２００ａ，２００ｂは、演算処理を終えると、該演算処理によって加工されたデータを自コア２００ａ，２００ｂが備える図示しない一次キャッシュに記憶する。そして、コア２００ａ，２００ｂは、データを主記憶部へ書出すデータ書出し処理の実行を制御部１０１に対して命令する。特に、本実施例にかかるコア２００ａ，２００ｂは、一次キャッシュに保持されたデータがデータメモリ経由で主記憶部へと書出される既存のデータ書出し処理の実行命令に加えて、一次キャッシュに保持されたデータを主記憶部へ直接書出すデータ書出し処理を実行すべき旨の命令を制御部１０１に対して行う。
【００３８】
制御部１０１は、コア２００ａ，２００ｂからの命令に基づき、ライトバック処理やデータ書出し処理を実行する。なお、制御部１０１は、これらの処理以外にも、コア２００ａ，２００ｂが要求するデータをデータメモリ１０６から読出すデータ読出し処理や、キャッシュミス発生時にコア２００ａ，２００ｂが要求するデータを主記憶部からデータメモリに転送するムーブイン処理等を実行する。
【００３９】
なお、制御部１０１は、コア２００ａ，２００ｂからのデータ書出し要求やライトバック要求などの命令をパイプラインに投入する場合、複数の命令が同時にデータメモリ１０６などの資源を使用する干渉が生じないように、適切な間隔をあけて命令をパイプラインに投入する。かかる点については、後述する。
【００４０】
第１のキュー１０２は、ライトバック処理の実行時に、コア２００ａ，２００ｂからデータメモリ１０６へ書き戻されるデータを一時的に保持するキューである。具体的には、第１のキュー１０２は、コア２００ａ，２００ｂの演算処理によって加工されたデータを一時的に保持し、制御部１０１の制御に応じて該データを出力する。また、第１のキュー１０２は、配線性を考慮して、データメモリ１０６の入力部分の近傍に設けられる。なお、第１のキュー１０２は、例えば、ライトバックデータキュー（ＷＢＤＱ：Write Back Data Queue）と呼ばれることがある。
【００４１】
第２のキュー１０３は、データ書出し処理の実行時に、データメモリ１０６からＭＡＣ３００を介して図示しない主記憶部へ書き戻されるデータを一時的に保持するキューである。具体的には、第２のキュー１０３は、セレクタ１０８を介して取得したデータを一時的に保持し、制御部１０１の制御により、該データをＭＡＣ３００へ出力する。また、第２のキュー１０３は、配線性を考慮して、ＭＡＣ３００の近傍に設けられる。なお、第２のキュー１０３は、例えば、ムーブアウトデータキュー（ＭＯＤＱ：Move Out Data Queue）と呼ばれることがある。
【００４２】
第３のキュー１０４は、キャッシュミスが生じた場合のムーブイン処理の実行時に、ＭＡＣ３００からデータメモリ１０６へ転送されるデータを一時的に保持するキューである。具体的には、第３のキュー１０４は、コア２００ａ，２００ｂによって要求されたＭＡＣ３００からのデータを一時的に保持し、セレクタ１０５を介してデータメモリ１０６へ出力する。また、第３のキュー１０４は、第１のキュー１０２と同様に、配線性を考慮してデータメモリ１０６の入力部分の近傍に設けられる。なお、第３のキュー１０４は、例えば、ムーブインデータキュー（ＭＩＤＱ：Move In Data Queue）と呼ばれることがある。
【００４３】
セレクタ１０５は、第１のキュー１０２に保持されたデータおよび第３のキュー１０４に保持されたデータのいずれか一方を選択してデータメモリ１０６へ出力する。具体的には、セレクタ１０５は、制御部１０１によってライトバック処理が実行されている場合は、第１のキュー１０２に保持されたデータを選択する。また、セレクタ１０５は、制御部１０１によってムーブイン処理が実行されている場合は、第３のキュー１０４に保持されたデータを選択する。
【００４４】
データメモリ１０６は、コア２００ａ，２００ｂが使用するデータやコア２００ａ，２００ｂの演算処理によって加工されたデータを一時的に保持する。具体的には、データメモリ１０６は、制御部１０１によりライトバック処理が実行されると、該コアの一次キャッシュから第１のキュー１０２に出力されたデータを取得して記憶する。また、制御部１０１によりデータ書出し処理が実行されると、データメモリ１０６は、第１のキュー１０２から取得したデータをセレクタ１０７へ出力する。なお、データメモリ１０６は、例えば、ＲＡＭ（Random Access Memory）などを使用することができる。
【００４５】
接続部Ｌ０は、コア２００ａ，２００ｂからデータメモリ１０６へのデータ経路（以下、「入力経路」と呼ぶ）と、データメモリ１０６からＭＡＣ３００へのデータ経路（以下、「出力経路」と呼ぶ）とを接続する配線である。具体的には、接続部Ｌ０は、第１のキュー１０２およびデータメモリ１０６間の入力経路とセレクタ１０７とを接続する。すなわち、接続部Ｌ０は、データメモリ１０６の近傍において入力経路と接続する。
【００４６】
そして、接続部Ｌ０は、第１のキュー１０２から出力されたデータを、データメモリ１０６を迂回するようにしてセレクタ１０７へと転送する。すなわち、本実施例にかかるＣＰＵ１は、接続部Ｌ０を設けることにより、第１のキュー１０２から出力されたデータを、データメモリ１０６を介さずにＭＡＣ３００へ直接出力させることができる。
【００４７】
セレクタ１０７は、データメモリ１０６の出力経路に設けられる選択部であり、第１のキュー１０２から接続部Ｌ０を経由して出力されたデータおよびデータメモリ１０６から出力されたデータのいずれか一方を選択してセレクタ１０８へ出力する。具体的には、セレクタ１０７は、コア２００ａ，２００ｂからＭＡＣ３００へデータが直接転送される場合には、制御部１０１の制御により、第１のキュー１０２から出力されたデータを接続部Ｌ０経由でセレクタ１０８へ転送する。また、セレクタ１０７は、データメモリ１０６に保持されたデータがＭＡＣ３００へ転送される場合には、制御部１０１の制御により、データメモリ１０６から出力されたデータをセレクタ１０８へ転送する。
【００４８】
セレクタ１０８は、セレクタ１０７から出力されたデータおよび該セレクタ１０７に対応する他のセレクタから出力されたデータのいずれか１つを選択して、ＭＡＣ３００へ出力する。具体的には、セレクタ１０８は、コア２００ａ，２００ｂまたはデータメモリ１０６に記憶されたデータをＭＡＣ３００へ転送する場合には、セレクタ１０７から出力されたデータを選択する。一方、コア２００ａ，２００ｂ以外のコアまたはデータメモリ１０６以外のデータメモリに記憶されたデータをＭＡＣ３００へ転送する場合、セレクタ１０８は、セレクタ１０７に対応する他方のセレクタから出力されたデータを選択する。
【００４９】
ＭＡＣ３００は、コア２００ａ，２００ｂが使用し得る全てのデータを記憶する図示しない主記憶部と接続し、該主記憶部へのアクセスを制御する。具体的には、ＭＡＣ３００は、第２のキュー１０３に保持されたデータを主記憶部へと書出す。なお、ＭＡＣ３００は、他の処理として、例えば、キャッシュミスが生じた場合に、キャッシュミスしたデータを主記憶部から取得し、第３のキュー１０４へ転送する。
【００５０】
続いて、本実施例にかかるコア、ＭＡＣおよびキャッシュメモリ装置の接続関係について、図４を参照してより具体的に説明する。図４は、本実施例にかかるキャッシュメモリ装置における接続関係を示す図である。なお、同図において、図２と同じ部分については、同じ符号を付し、その説明を省略する。
【００５１】
図４に示すように、キャッシュメモリ装置１００は、制御部１０１と、第１のキュー１０２と、第２のキュー１０３と、第３のキュー１０４と、セレクタ１０５，１０７，１０８と、データメモリ１０６とを有する。
【００５２】
制御部１０１は、コア２００からのデータ書出し要求に基づき、ライトバック処理やデータ書出し処理を実行する。具体的には、制御部１０１は、ＭＯポート部１１１と、プライオリティ部１１２と、パイプライン１１３と、タグメモリ１１４とを備える。ＭＯポート部１１１は、データ書出し要求等の命令をコア２００から取得する。ここで、本実施例において、データ書出し要求には、データメモリ１０６経由でデータを書出す既存のデータ書出し要求の他に、コア２００の一次キャッシュに記憶されたデータを直接主記憶部へ書出すデータ書出し要求が存在する。なお、一次キャッシュに記憶されたデータを直接ＭＡＣ３００へ転送させる場合、コア２００は、データ書出し要求として、ＭＢ−ＩＶ（Moveout Bypass & TAG InValidate）をＭＯポート部１１１へ出力する。
【００５３】
プライオリティ部１１２は、データ経路や各種資源の優位性を考慮して、ＭＯポート部１１１において取得した命令の調停を行い、パイプライン１１３へ投入する。特に、プライオリティ部１１２は、ＭＯポート部１１１においてＭＢ−ＩＶを取得した場合、内部オペコードとしてＢＰＭＯ（ByPass MoveOut）を生成して、パイプライン１１３へ投入する。なお、ＭＡＣ３００とプライオリティ部１１２との間には、キャッシュミス時におけるムーブイン要求を保持する図示しないバッファが設けられており、プライオリティ部１１２は、該バッファにおいて保持されているムーブイン要求の調停も行う。かかるバッファは、例えば、ＭＩ（Move In）バッファと呼ばれることがある。
【００５４】
タグメモリ１１４は、データメモリ１０６に保持されたデータの物理アドレスやタイプコードおよびＬＢＳＴＡＧ(Local Buffer Storage TAG)検索に用いられる論理アドレス等を記憶する。パイプライン１１３は、プライオリティ部１１２から投入された命令に基づき、タグメモリ１１４を検索し、該当するデータの物理アドレスを特定する。そして、パイプライン１１３は、投入された命令に応じて、特定した物理アドレスに記憶されたデータの更新や転送等を行う。
【００５５】
ここで、制御部１０１は、コア２００から既存のデータ書出し要求を受けた場合、先ず、ライトバック処理として、コア２００の一次キャッシュに記憶されたデータを入力経路Ｌ１００ａ〜Ｌ１００ｃを用いてデータメモリ１０６へ書き戻す。
【００５６】
すなわち、コア２００の一次キャッシュに記憶されたデータは、先ず、コア２００から入力経路Ｌ１００ａを経由して第１のキュー１０２へ転送される。続いて、第１のキュー１０２に保持されたデータは、入力経路Ｌ１００ｂを経由してセレクタ１０５へ転送される。ここで、セレクタ１０５は、制御部１０１の制御により、入力経路Ｌ１００ｂからのデータを選択して、入力経路Ｌ１００ｃ経由でデータメモリ１０６へ転送する。そして、データメモリ１０６は、入力経路Ｌ１００ｃ経由で転送されたデータ、すなわち、コア２００の一次キャッシュに記憶されていたデータを取得して保持する。これにより、ライトバック処理が完了する。
【００５７】
続いて、制御部１０１は、データ書出し処理として、データメモリ１０６に記憶されたデータを出力経路Ｌ２００ａ〜Ｌ２００ｄを用いてＭＡＣ３００へ転送させる。すなわち、データメモリ１０６に保持されたデータは、先ず、出力経路Ｌ２００ａを経由してセレクタ１０７へと転送される。続いて、セレクタ１０７は、制御部１０１の制御により、出力経路Ｌ２００ａからのデータを選択し、出力経路Ｌ２００ｂ、セレクタ１０８および出力経路Ｌ２００ｃ経由で第２のキュー１０３へ転送する。そして、第２のキュー１０３に保持されたデータは、出力経路Ｌ２００ｄを経由してＭＡＣ３００へ転送され、ＭＡＣ３００によって主記憶部へ書き戻される。これにより、主記憶部に記憶されたデータが最新の状態となり、データの一貫性（キャッシュコヒーレンシ）が保たれる。
【００５８】
ここで、セレクタ１０７は、データメモリの近傍に設けられる。すなわち、入力経路Ｌ１００ｃとセレクタ１０７とを接続する接続部Ｌ０は、データメモリ１０６の周囲にのみ設けられる非常に短いラインである。このように、接続部Ｌ０をデータメモリ１０６の周囲にのみ設けてその長さを短くすることにより、配線コストの増加をより一層抑えることができ、しかも、周辺の配線に与える影響を少なくすることができる。
【００５９】
一方、コア２００から主記憶部へデータを直接書出すデータ書出し要求をコア２００から受けたとする。すなわち、制御部１０１が、ＭＯポート部１１１において、コア２００からのデータ書出し要求としてＭＢ−ＩＶを取得したとする。かかる場合、制御部１０１は、コア２００の一次キャッシュに記憶されたデータを接続部Ｌ０を用いてＭＡＣ３００へ直接転送させる。なお、かかるデータ転送は、より具体的には、該データを排他型で保持する場合であって、コア２００の一次キャッシュに最新データが記憶されており、かつ、データメモリ１０６には古いデータしか記憶されていない場合に実行される。
【００６０】
すなわち、コア２００の一次キャッシュに記憶されたデータは、先ず、コア２００から入力経路Ｌ１００ａを経由して第１のキュー１０２へ転送される。続いて、第１のキュー１０２に保持されたデータは、制御部１０１の制御により、入力経路Ｌ１００ｂを経由してセレクタ１０５へ転送される。続いて、セレクタ１０５は、制御部１０１の制御により、入力経路Ｌ１００ｂからのデータを選択し、該データを入力経路Ｌ１００ｃへ転送する。
【００６１】
そして、セレクタ１０７は、制御部１０１の制御により、セレクタ１０５から出力されたデータを入力経路１００ｃおよび接続部Ｌ０経由で取得し、出力経路Ｌ２００ｂ、セレクタ１０８および出力経路Ｌ２００ｃ経由で第２のキュー１０３へ転送する。その後は、最新データがデータメモリ１０６に記憶されている場合と同様であり、第２のキュー１０３に保持されたデータをＭＡＣ３００が主記憶部へ書き戻すことにより、データ書出し処理が完了する。
【００６２】
このように、本実施例では、コア２００の演算処理により加工されたデータをデータメモリ１０６を迂回して図示しない主記憶部へと直接書出すデータ経路を設けることで、コア２００から主記憶部へのデータ書出しに要する時間を短縮することができる。しかも、かかるデータ経路は、ライトバック処理の実行時に用いられる入力経路Ｌ１００ａ〜Ｌ１００ｃおよびデータメモリ１０６から主記憶部へのデータ書出し処理の実行時に用いられる出力経路Ｌ２００ｂ〜Ｌ２００ｄを利用している。そのため、配線コストを抑えることができ、マルチコア化およびマルチバンク化されたＣＰＵ１への実装を容易に実現することができる。
【００６３】
ところで、本実施例において、入力経路Ｌ１００ａ〜Ｌ１００ｃは、コア２００からデータメモリ１０６へデータを書き戻す場合も、コア２００から主記憶部へ接続部Ｌ０経由でデータを書出す場合も共通して使用される。また、同様に、出力経路Ｌ２００ｂ〜Ｌ２００ｄは、コア２００から主記憶部へ接続部Ｌ０経由でデータを書出す場合も、データメモリ１０６に保持されたデータを主記憶部へ書出す場合も共通して使用される。そのため、それぞれの処理が実行されている間に他の処理が実行された場合、データの干渉が生じるおそれがある。
【００６４】
そこで、本実施例にかかる制御部１０１は、前後する要求が使用する資源やデータ経路を考慮してデータの干渉が起きないようにデータ干渉制御を行う。具体的には、プライオリティ部１１２は、コア２００からのデータ書出し要求等の命令を受けた場合、これらの命令を適切な間隔をあけてパイプラインへ投入する。以下に、本実施例にかかる制御部１０１の具体的な動作について説明する。図５は、本実施例にかかる制御部１０１の処理手順を示すフローチャートである。なお、図５は、制御部１０１が実行する処理手順のうち、コア２００の一次キャッシュに記憶されたデータをＭＡＣ３００へ直接転送するデータ書出し処理に関する処理手順のみを示している。
【００６５】
図５に示すように、制御部１０１は、先ず、ＭＯポート部１１１において、コア２００の一次キャッシュに記憶されたデータのＭＡＣ３００への直接転送を要求するＭＢ−ＩＶをＭＯポート部１１１において取得する（ステップＳ１０１）。続いて、制御部１０１は、他の命令との間でデータの干渉が生じないように、プライオリティ部１１２において調停を行う（ステップＳ１０２）。
【００６６】
そして、制御部１０１は、プライオリティ部１１２において、入力経路Ｌ１００ａ〜Ｌ１００ｃおよび出力経路Ｌ２００ａ〜Ｌ２００ｄが使用可能であるか否かを判定する（ステップＳ１０３）。すなわち、プライオリティ部１１２は、ライトバック処理の実行により入力経路Ｌ１００ａ〜Ｌ１００ｃが使用されているか否か、および、データメモリ１０６からのデータ書出し処理の実行により出力経路Ｌ２００ａ〜Ｌ２００ｄが使用されているか否かを判定する。そして、入力経路Ｌ１００ａ〜Ｌ１００ｃおよび出力経路Ｌ２００ａ〜Ｌ２００ｄが共に使用されていない場合、制御部１０１は、入力経路Ｌ１００ａ〜Ｌ１００ｃおよび出力経路Ｌ２００ａ〜Ｌ２００ｄが使用可能であると判定する。
【００６７】
かかる処理において、入力経路Ｌ１００ａ〜Ｌ１００ｃおよび出力経路Ｌ２００ａ〜Ｌ２００ｄが使用可能ではないとき（ステップＳ１０３否定）、プライオリティ部１１２は、これらの経路が使用可能となるまでＭＢ−ＩＶをＭＯポート部１１１にて待機させるよう調停を行う。すなわち、本実施例では、ライトバック処理の実行により入力経路Ｌ１００ａ〜Ｌ１００ｃが使用されている場合またはデータメモリ１０６からのデータ書出し処理の実行により出力経路Ｌ２００ａ〜Ｌ２００ｄが使用されている場合、コア２００からＭＡＣ３００へのデータの直接転送は行われない。
【００６８】
一方、入力経路Ｌ１００ａ〜Ｌ１００ｃおよび出力経路Ｌ２００ａ〜Ｌ２００ｄが使用可能であると判定すると（ステップＳ１０３肯定）、プライオリティ部１１２は、内部オペコードＢＰＭＯを生成し、パイプライン１１３へ投入する（ステップＳ１０４）。ここで、制御部１０１が、入力経路Ｌ１００ａ〜Ｌ１００ｃおよび出力経路Ｌ２００ａ〜Ｌ２００ｄが使用可能であると判定する条件には、待機している命令の実行開始タイミングが到来した場合も含まれる。
【００６９】
これにより、コア２００の一次キャッシュに記憶された最新データが第１のキュー１０２へと出力される。そして、第１のキュー１０２に保持された最新データは、セレクタ１０５を介して入力経路Ｌ１００ｃへ転送される。そして、セレクタ１０７は、制御部１０１の制御により、セレクタ１０５から出力されたデータを入力経路１００ｃおよび接続部Ｌ０経由で取得し、出力経路Ｌ２００ｂへ転送する。その結果、最新データは、出力経路Ｌ２００ｂ、セレクタ１０８および出力経路Ｌ２００ｃを経由して第２のキュー１０３へ転送され、ＭＡＣ３００により主記憶部に書き戻される。
【００７０】
このように、制御部１０１は、コア２００から主記憶部へデータを書出すべき旨のデータ書出し命令を受けた場合において、他の命令に基づく処理により入力経路Ｌ１００ａ〜Ｌ１００ｃまたは出力経路Ｌ２００ａ〜Ｌ２００ｄが使用されている場合には、これらの使用が終了するまでの間、上記データ書出し命令に基づく処理の実行開始を待機する。すなわち、制御部１０１は、入力経路Ｌ１００ａ〜Ｌ１００ｃおよび出力経路Ｌ２００ａ〜Ｌ２００ｄが使用されていないことを条件として、ＢＰＭＯをパイプライン１１３へ投入する。これにより、ライトバック処理やデータメモリ１０６からのデータ書出し処理との間でデータの干渉が生じることを防ぐことができる。
【００７１】
また、制御部１０１は、コア２００から主記憶部へのデータ書出し処理を実行している間、ライトバック処理やムーブイン処理といった入力経路を使用する処理の実行開始を待機させる。また、制御部１０１は、コア２００から主記憶部へのデータ書出し処理を実行している間、データメモリ１０６から主記憶部へのデータ書出しのように出力経路を使用する処理の実行開始を待機させる。
【００７２】
そして、制御部１０１は、コア２００から主記憶部へのデータ書出し処理が完了し、待機している命令の実行開始タイミングとなった場合に、該命令をパイプラインへ投入して該命令に基づく処理の実行を開始する。このように、制御部１０１は、コア２００から主記憶部へデータを書出すデータ書出し処理を実行している間、入力経路や出力経路を使用する他の処理の実行開始を待機するため、データの干渉をより確実に防ぐことができる。
【００７３】
なお、制御部１０１は、データメモリ１０６からのデータ書出し処理を実行する場合には、出力経路Ｌ２００ａからのデータを選択するようにセレクタ１０７を制御する。その結果、最新データは、データメモリ１０６から出力経路Ｌ２００ａを経由してセレクタ１０７へ転送される。そして、最新データは、出力経路Ｌ２００ｂ、セレクタ１０８、出力経路Ｌ２００ｃを経由して第２のキュー１０３へ転送され、ＭＡＣ３００により主記憶部に書き戻される。
【００７４】
上述してきたように、本実施例によれば、コア２００の演算処理により加工されたデータをデータメモリ１０６を迂回して図示しない主記憶部へと直接書出すデータ経路を設けることで、コア２００から主記憶部へのデータ書出しに要する時間を短縮することができる。しかも、本実施例では、かかるデータ経路を、ライトバック処理やデータメモリ１０６から主記憶部へのデータ書出し処理において使用されるデータ経路を利用して形成することにより、配線コストを抑えることができ、マルチコア化およびマルチバンク化されたＣＰＵへの実装を容易に実現することができる。
【００７５】
具体的には、本実施例によれば、接続部Ｌ０やセレクタ１０７の追加に伴う物理的コストの微小な増加により、従来技術のように各コア２００と各ＭＡＣ３００とを直接繋ぐデータ経路の確保に必要な大きな物理的コストを削減できる。また、本実施例では、短いラインの接続部Ｌ０及びセレクタ１０７が追加されるだけであるため、ＣＰＵにおいて配線が集中する領域にもこれらを容易に設けることができる。その結果、回路規模の増大を抑えることができるため、実装トランジスタ数および配線性の面で極めて有利となる。これにより、より多数のコア２００およびＭＡＣ３００を備えるＣＰＵに対して、コア２００からＭＡＣ３００へデータを直接転送するデータ経路を実装することが可能となる。
【００７６】
さらに、コア２００から主記憶部へのデータ書出し処理の制御としては、ライトバック処理やデータメモリ１０６から主記憶部へのデータ書出し処理の工程を利用しつつ、これら既存の工程に、制御部１０１がセレクタ１０７を制御する工程が追加されるだけなので、制御の複雑化を抑えることができる。その結果、ＣＰＵとしての性能に与える影響も抑えられる。
【００７７】
ところで、本実施例にかかるＣＰＵ１は、例えば、ＰＣ（personal Computer）等の演算処理装置に搭載される。図６は、本実施例にかかるＣＰＵ１を搭載するコンピュータの一例を示すブロック図である。
【００７８】
図６に示すように、演算処理装置としてのコンピュータ６００は、ＣＰＵ１と、入力装置６１０と、モニタ６２０と、ネットワークインタフェース装置６３０と、ＲＡＭ６４０と、ハードディスク装置６５０とを備える。また、コンピュータ６００は、これらをバス６６０により相互に接続する。
【００７９】
入力装置６１０は、例えば、キーボードやマウスであり、ユーザからのデータの入力を受け付ける。モニタ６２０は、各種情報を表示する表示部である。ネットワークインタフェース装置６３０は、インターネット等のネットワークを介して他のコンピュータとの間でデータの授受を行う。ＲＡＭ６４０は、主記憶部に相当し、各種情報を一時記憶する。ハードディスク装置６５０は、不揮発性の記憶装置である。
【００８０】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８１】
（付記１）演算処理を実行する演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とするキャッシュメモリ装置。
【００８２】
（付記２）前記制御部は、前記演算処理部から前記主記憶部へデータを書出すべき旨のデータ書出し命令を受けた場合において、他の命令に基づく処理により前記入力経路または前記出力経路が使用されている場合には、前記入力経路または前記出力経路の使用が終了するまでの間、前記データ書出し命令に基づく処理の実行開始を待機することを特徴とする付記１に記載のキャッシュメモリ装置。
【００８３】
（付記３）前記制御部は、前記演算処理部から前記主記憶部へデータを書出すデータ書出し処理を実行している間、前記入力経路を使用する他の処理の実行開始を待機することを特徴とする付記１または２に記載のキャッシュメモリ装置。
【００８４】
（付記４）前記制御部は、前記演算処理部から前記主記憶部へデータを書出すデータ書出し処理を実行している間、前記出力経路を使用する他の処理の実行開始を待機することを特徴とする付記１〜３の何れか１つに記載のキャッシュメモリ装置。
【００８５】
（付記５）前記制御部は、待機している命令の実行開始タイミングとなった場合に、該命令をパイプラインへ投入して該命令に基づく処理の実行を開始することを特徴とする付記２〜４の何れか１つに記載のキャッシュメモリ装置。
【００８６】
（付記６）前記入力経路に設けられ、前記演算処理部から前記データメモリまたは前記主記憶部に書出すデータを一時的に保持するキューをさらに備え、
前記制御部は、前記選択部を制御して、前記キューから出力されるデータを前記接続部経由で前記出力経路へ転送させることを特徴とする付記１〜５の何れか１つに記載のキャッシュメモリ装置。
【００８７】
（付記７）前記接続部は、前記データメモリの近傍で前記入力経路と接続することを特徴とする付記１〜６の何れか１つに記載のキャッシュメモリ装置。
【００８８】
（付記８）前記選択部は、前記データメモリの近傍に設けられることを特徴とする付記１〜７の何れか１つに記載のキャッシュメモリ装置。
【００８９】
（付記９）演算処理を実行する演算処理部と、
主記憶部と接続し、該主記憶部へのアクセスを制御する主記憶制御部と、
前記演算処理部と前記主記憶制御部との間に介在し、前記演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから前記主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とする半導体集積回路。
【００９０】
（付記１０）前記演算処理部と前記主記憶制御部と前記データメモリとをそれぞれ複数備えることを特徴とする付記９に記載の半導体集積回路。
【００９１】
（付記１１）演算処理を実行する演算処理部と、
主記憶部と接続し、該主記憶部へのアクセスを制御する主記憶制御部と、
前記演算処理部と前記主記憶制御部との間に介在し、前記演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから前記主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とする演算処理装置。
【符号の説明】
【００９２】
１  ＣＰＵ
１０１  制御部
１０２  第１のキュー
１０３  第２のキュー
１０４  第３のキュー
１０５，１０７，１０８  セレクタ
１１１  ＭＯポート部
１１２  プライオリティ部
１１３  パイプライン
１１４  タグメモリ
２００ａ，２００ｂ  コア
３００  ＭＡＣ
Ｌ０  接続部
Ｌ１００ａ〜Ｌ１００ｃ  入力経路
Ｌ２００ａ〜Ｌ２００ｄ  出力経路
１０  キャッシュメモリ装置
１１  データメモリ
１２  接続部
１３  制御部
１４  選択部
２０  演算処理部
３０  主記憶部
Ｌ５０  入力経路
Ｌ６０  出力経路
【図１】
2011008731.tif 000003
【図２】
2011008731.tif 000004
【図３】
2011008731.tif 000005
【図４】
2011008731.tif 000006
【図５】
2011008731.tif 000007
【図６】
2011008731.tif 000008
【図７】
2011008731.tif 000009
【図８】
2011008731.tif 000010