(57)【特許請求の範囲】
【請求項１】
演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と、前記演算処理部と主記憶装置との間に接続される第１のキャッシュメモリとを含む演算処理装置において、
前記第１のキャッシュメモリは、
前記主記憶装置が記憶するデータのうちの一部を前記主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第１のブロック領域を含む第１のデータメモリ部と、
前記メモリアクセス要求に含まれるアクセスアドレスが示す前記主記憶装置の記憶領域に記憶されるデータを前記第１のデータメモリ部が記憶しているかを判定する判定部と、
前記アクセスアドレスを前記判定部に出力し、前記判定部による判定結果に基づいて、前記第１のデータメモリ部または前記主記憶装置のいずれかにアクセスするとともに、前記主記憶装置から読み出される読み出しデータを前記複数の第１のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを前記演算処理部に転送するバイパス処理を実行し、前記演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの前記対象ブロック領域への書き込みを、前記ムーブイン処理の実行中に抑止する制御部を有し、
前記制御部は、
前記ムーブイン処理の実行中に、前記ムーブイン処理の対象アドレスを保持するアドレス記憶部と、
前記他のメモリアクセス要求に含まれるアクセスアドレスを、前記アドレス記憶部に保持された前記対象アドレスと比較するアドレス比較部を有し、
前記制御部は、前記アドレス比較部による比較結果が一致を示す場合、前記書き込みデータの前記対象ブロック領域への書き込みを抑止することを特徴とする演算処理装置。
【請求項２】
前記制御部は、前記第１のデータメモリ部および前記主記憶装置へのアクセスを制御するとともに、前記ムーブイン処理の完了に基づいて、前記アドレス記憶部に保持された前記対象アドレスの消去を前記アドレス記憶部に指示するアクセス制御部を有することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記アドレス記憶部は、前記メモリアクセス要求に含まれるアクセスアドレスのビットの一部を含むアドレスであって、前記複数の第１のブロック領域を識別する第１のインデックスアドレスを前記対象アドレスの代わりに記憶し、
前記アドレス比較部は、前記他のメモリアクセス要求に含まれるアクセスアドレスのうち前記第１のインデックスアドレスに対応するビット値を、前記アドレス記憶部に記憶された前記第１のインデックスアドレスの値と比較することを特徴とする請求項１または請求項２記載の演算処理装置。
【請求項４】
前記演算処理装置はさらに、
前記演算処理部と前記第１のキャッシュメモリとの間に接続される第２のキャッシュメモリを有し、
前記第２のキャッシュメモリは、前記第１のキャッシュメモリが記憶するデータのうち一部のデータを前記データブロック毎に記憶する複数の第２のブロック領域を含む第２のデータメモリ部を有し、
前記アドレス記憶部は、前記メモリアクセス要求に含まれるアクセスアドレスのビットの一部を含むアドレスであって、前記複数の第２のブロック領域を識別する第２のインデックスアドレスを前記対象アドレスの代わりに記憶し、
前記アドレス比較部は、前記第２のキャッシュメモリから出力されるアクセスアドレスのうち前記第２のインデックスアドレスに対応するビット値を、前記アドレス記憶部に記憶された前記第２のインデックスアドレスの値と比較することを特徴とする請求項１または請求項２記載の演算処理装置。
【請求項５】
前記制御部は、
前記第２のキャッシュメモリが出力するメモリアクセス要求のうちの読み出し要求を、前記読み出し要求に基づく前記ムーブイン処理の実行中に保持するコマンド記憶部と、
前記第２のキャッシュメモリが出力する他のメモリアクセス要求を、前記コマンド記憶部に保持された読み出し要求と比較するコマンド比較部を有し、
前記アドレス比較部による比較結果が一致を示し、前記コマンド比較部による比較結果が一致を示す場合、前記第２のキャッシュメモリが出力する他のメモリアクセス要求である読み出し要求に基づく読み出し動作の実行を抑止することを特徴とする請求項４記載の演算処理装置。
【請求項６】
前記第１のデータメモリ部は、前記複数の第１のブロック領域を各々含む複数のウェイを有し、
前記制御部は、
前記対象ブロック領域を含むウェイを示すウェイ番号を、前記ムーブイン処理の実行中に保持するウェイ記憶部と、
前記第２のキャッシュメモリが出力する他のメモリアクセス要求に含まれるウェイ番号を、前記ウェイ記憶部に保持されたウェイ番号と比較するウェイ比較部を有し、
前記アドレス比較部による比較結果が一致を示し、前記コマンド比較部による比較結果が一致を示し、前記ウェイ比較部による比較結果が一致を示す場合、前記第２のキャッシュメモリが出力する他のメモリアクセス要求に含まれる読み出し要求に基づく読み出し動作の実行を抑止することを特徴とする請求項５記載の演算処理装置。
【請求項７】
演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と前記演算処理部に接続された第１のキャッシュメモリとを含む演算処理装置と、前記第１のキャッシュメモリを介して前記演算処理部に接続された主記憶装置を有する情報処理装置において、
前記第１のキャッシュメモリは、
前記主記憶装置が記憶するデータのうちの一部を前記主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第１のブロック領域を含む第１のデータメモリ部と、
前記メモリアクセス要求に含まれるアクセスアドレスが示す前記主記憶装置の記憶領域に記憶されるデータを前記第１のデータメモリ部が記憶しているかを判定する判定部と、
前記アクセスアドレスを前記判定部に出力し、前記判定部による判定結果に基づいて、前記第１のデータメモリ部または前記主記憶装置のいずれかにアクセスするとともに、前記主記憶装置から読み出される読み出しデータを前記複数の第１のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを前記演算処理部に転送するバイパス処理を実行し、前記演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの前記対象ブロック領域への書き込みを、前記ムーブイン処理の実行中に抑止する制御部を有し、
前記制御部は、
前記ムーブイン処理の実行中に、前記ムーブイン処理の対象アドレスを保持するアドレス記憶部と、
前記他のメモリアクセス要求に含まれるアクセスアドレスを、前記アドレス記憶部に保持された前記対象アドレスと比較するアドレス比較部を有し、
前記制御部は、前記アドレス比較部による比較結果が一致を示す場合、前記書き込みデータの前記対象ブロック領域への書き込みを抑止することを特徴とする情報処理装置。
【請求項８】
演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と、前記演算処理部と主記憶装置との間に接続される第１のキャッシュメモリとを含み、前記第１のキャッシュメモリが、前記主記憶装置が記憶するデータのうちの一部を前記主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第１のブロック領域を含む第１のデータメモリ部を有する演算処理装置の制御方法において、
前記第１のキャッシュメモリが、
前記メモリアクセス要求に含まれるアクセスアドレスが示す前記主記憶装置の記憶領域に記憶されるデータを前記第１のデータメモリ部が記憶しているかを判定し、
前判定結果に基づいて、前記第１のデータメモリ部または前記主記憶装置のいずれかにアクセスし、
前記主記憶装置から読み出される読み出しデータを前記複数の第１のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを前記演算処理部に転送するバイパス処理を実行し、
前記演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの前記対象ブロック領域への書き込みを、前記ムーブイン処理の実行中に抑止し、
前記他のメモリアクセス要求に含まれるアクセスアドレスを、前記ムーブイン処理の実行中に保持される前記ムーブイン処理の対象アドレスと比較し、
アドレスの比較結果が一致を示す場合、前記書き込みデータの前記対象ブロック領域への書き込みを抑止することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）およびプロセッサ等の演算処理装置は、主記憶装置が記憶するデータのうち、プロセッサコアが使用するデータを保持するキャッシュメモリを設けることで、データ処理の高速化を図っている。さらに、キャッシュミス時に主記憶装置から読み出されるデータがキャッシュメモリに格納された時点で、主記憶装置から読み出したデータを、バッファを介してプロセッサコアにバイパスさせることで、データ処理のさらなる高速化が図られる。
【０００３】
この種のバイパス機能を有する演算処理装置では、キャッシュミス時に主記憶装置から読み出されるデータを保持するバッファが、主記憶装置からプロセッサコアにデータをバイパスする転送経路上に配置される（例えば、特許文献１参照）。例えば、バッファは、主記憶装置から読み出されるデータを順次に保持する一対のデータレジスタを有し、データのバイパス時に一対のデータレジスタに保持されたデータは、交互に読み出されてプロセッサコアに出力される（例えば、特許文献２参照）。また、主記憶装置から読み出されるデータを保持する退避バッファを主記憶装置とキャッシュメモリとの間に設け、プロセッサコアが要求するデータを退避バッファからプロセッサコアにバイパスする手法が提案されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１１１７９８号公報
【特許文献２】特開平９−１４６８３７号公報
【特許文献３】特開２００３−１２２６３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
プロセッサコアは、バイパスされた読み出しデータを用いて演算処理を実行し、演算処理により得られた新たなデータをキャッシュメモリに書き込む。例えば、新たなデータは、バイパスされた読み出しデータが書き込まれるキャッシュメモリの領域に書き込まれる場合がある。新たなデータのキャッシュメモリへの書き込みが、古いデータである読み出しデータのキャッシュメモリへの書き込みより前に実行された場合、誤ったデータがキャッシュメモリに保持されてしまう。このため、従来、主記憶装置からプロセッサコアへの読み出しデータのバイパスは、読み出しデータがキャッシュメモリに書き込まれた後に実行される。換言すれば、主記憶装置からの読み出しデータがキャッシュメモリに書き込まれる前に、読み出しデータをプロセッサコアにバイパスする場合、キャッシュメモリのコヒーレンシは保証されなくなる。
【０００６】
１つの側面では、本件開示の演算処理装置、情報処理装置および演算処理装置の制御方法は、キャッシュメモリに誤ったデータを保持させることなく、主記憶装置からのデータを、キャッシュメモリに格納する前に演算処理部にバイパスすることを目的とする。
【課題を解決するための手段】
【０００７】
一つの観点によれば、演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と、演算処理部と主記憶装置との間に接続される第１のキャッシュメモリとを含む演算処理装置において、第１のキャッシュメモリは、主記憶装置が記憶するデータのうちの一部を主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第１のブロック領域を含む第１のデータメモリ部と、メモリアクセス要求に含まれるアクセスアドレスが示す主記憶装置の記憶領域に記憶されるデータを第１のデータメモリ部が記憶しているかを判定する判定部と、アクセスアドレスを判定部に出力し、判定部による判定結果に基づいて、第１のデータメモリ部または主記憶装置のいずれかにアクセスするとともに、主記憶装置から読み出される読み出しデータを複数の第１のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを演算処理部に転送するバイパス処理を実行し、演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの対象ブロック領域への書き込みを、ムーブイン処理の実行中に抑止する制御部を有し、制御部は、ムーブイン処理の実行中に、ムーブイン処理の対象アドレスを保持するアドレス記憶部と、他のメモリアクセス要求に含まれるアクセスアドレスを、アドレス記憶部に保持された対象アドレスと比較するアドレス比較部を有し、制御部は、アドレス比較部による比較結果が一致を示す場合、書き込みデータの対象ブロック領域への書き込みを抑止する。
【０００８】
別の観点によれば、演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と演算処理部に接続された第１のキャッシュメモリとを含む演算処理装置と、第１のキャッシュメモリを介して演算処理部に接続された主記憶装置を有する情報処理装置において、第１のキャッシュメモリは、主記憶装置が記憶するデータのうちの一部を主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第１のブロック領域を含む第１のデータメモリ部と、メモリアクセス要求に含まれるアクセスアドレスが示す主記憶装置の記憶領域に記憶されるデータを第１のデータメモリ部が記憶しているかを判定する判定部と、アクセスアドレスを判定部に出力し、判定部による判定結果に基づいて、第１のデータメモリ部または主記憶装置のいずれかにアクセスするとともに、主記憶装置から読み出される読み出しデータを複数の第１のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを演算処理部に転送するバイパス処理を実行し、演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの対象ブロック領域への書き込みを、ムーブイン処理の実行中に抑止する制御部を有し、制御部は、ムーブイン処理の実行中に、ムーブイン処理の対象アドレスを保持するアドレス記憶部と、他のメモリアクセス要求に含まれるアクセスアドレスを、アドレス記憶部に保持された対象アドレスと比較するアドレス比較部を有し、制御部は、アドレス比較部による比較結果が一致を示す場合、書き込みデータの対象ブロック領域への書き込みを抑止する。
【０００９】
さらなる別の観点によれば、演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と、演算処理部と主記憶装置との間に接続される第１のキャッシュメモリとを含み、第１のキャッシュメモリが、主記憶装置が記憶するデータのうちの一部を主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第１のブロック領域を含む第１のデータメモリ部を有する演算処理装置の制御方法において、第１のキャッシュメモリが、メモリアクセス要求に含まれるアクセスアドレスが示す主記憶装置の記憶領域に記憶されるデータを第１のデータメモリ部が記憶しているかを判定し、判定結果に基づいて、第１のデータメモリ部または主記憶装置のいずれかにアクセスし、主記憶装置から読み出される読み出しデータを複数の第１のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを演算処理部に転送するバイパス処理を実行し、演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの対象ブロック領域への書き込みを、ムーブイン処理の実行中に抑止し、他のメモリアクセス要求に含まれるアクセスアドレスを、ムーブイン処理の実行中に保持されるムーブイン処理の対象アドレスと比較し、アドレスの比較結果が一致を示す場合、書き込みデータの対象ブロック領域への書き込みを抑止する。
【発明の効果】
【００１０】
本件開示の演算処理装置、情報処理装置および演算処理装置の制御方法は、キャッシュメモリに誤ったデータを保持させることなく、主記憶装置からのデータを、キャッシュメモリに格納する前に演算処理部にバイパスすることができる。
【図面の簡単な説明】
【００１１】
【図１】演算処理装置、情報処理装置および演算処理装置の制御方法の一実施形態を示す図である。
【図２】演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図３】図２に示すキャッシュタグ部およびキャッシュデータ部の一例を示す図である。
【図４】図２に示す検査部の一例を示す図である。
【図５】図２に示す情報処理装置の動作の一例を示す図である。
【図６】図５に示す動作において、キャッシュメモリが保持する情報の変化の一例を示す図である。
【図７】図２に示すキャッシュメモリの動作の一例を示す図である。
【図８】図２に示すキャッシュメモリの動作の別の例を示す図である。
【図９】演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図１０】図９に示すＬ１キャッシュの一例を示す図である。
【図１１】図９に示す情報処理装置の動作の一例を示す図である。
【図１２】図１１に示す動作において、Ｌ１キャッシュおよびＬ２キャッシュが保持する情報の変化の一例を示す図である。
【図１３】図１１に示す動作において、Ｌ１キャッシュおよびＬ２キャッシュが保持する情報の変化の一例（図１２の続き）を示す図である。
【図１４】図１１に示す動作において、Ｌ１キャッシュおよびＬ２キャッシュが保持する情報の変化の一例（図１３の続き）を示す図である。図である。
【図１５】図１１に示す動作において、Ｌ１キャッシュおよびＬ２キャッシュが保持する情報の変化の一例（図１４の続き）を示す図である。
【図１６】演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図１７】図１６に示す検査部の一例を示す図である。
【図１８】演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図１９】図１８に示す検査部の一例を示す図である。
【図２０】図１８に示す情報処理装置の動作の一例を示す図である。
【図２１】図２０に示す動作において、Ｌ１キャッシュおよびＬ２キャッシュが保持する情報の変化の一例を示す図である。
【図２２】図１８に示すプロセッサの動作の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を用いて実施形態を説明する。
【００１３】
図１は、演算処理装置、情報処理装置および演算処理装置の制御方法の一実施形態を示す。図１に示す情報処理装置ＩＰＥ１は、演算処理装置１と、演算処理装置１に接続される主記憶装置７とを有する。演算処理装置１は、演算処理を実行するとともにメモリアクセス要求ＭＲＥＱを出力する演算処理部２と、演算処理部２と主記憶装置７との間に接続されるキャッシュメモリ３とを有する。キャッシュメモリ３は、制御部４、判定部５およびデータメモリ部６を有する。データメモリ部６は、主記憶装置７が記憶するデータのうちの一部を主記憶装置７のアクセス単位であるデータブロック毎に記憶する複数のブロック領域ＢＬＫを有する。
【００１４】
制御部４は、メモリアクセス要求ＭＲＥＱに含まれるアクセスアドレスＡＤを判定部５に出力する。判定部５は、アクセスアドレスＡＤに基づいて、主記憶装置７の記憶領域に記憶されるデータをデータメモリ部６が記憶しているかを判定し、判定結果ＪＤＧを制御部４に出力する。判定結果ＪＤＧは、要求されたデータをデータメモリ部６が記憶していること（キャッシュヒット）を示す情報または要求されたデータをデータメモリ部６が記憶していないこと（キャッシュミス）を示す情報のいずれかを含む。制御部４は、判定部５による判定結果ＪＤＧに基づいて、データメモリ部６または主記憶装置７のいずれかにアクセスする。
【００１５】
制御部４は、メモリアクセス要求ＭＲＥＱが読み出し要求を示し、判定結果ＪＤＧがキャッシュミスを示す場合、データメモリ部６ではなく主記憶装置７にアクセスし、主記憶装置７から読み出しデータＲＤＴを読み出す。制御部４は、主記憶装置７から読み出された読み出しデータＲＤＴを複数のブロック領域ＢＬＫのいずれかである対象ブロック領域に書き込むムーブイン処理をデータメモリ部６に実行させる。そして、制御部４は、ムーブイン処理が完了する前に読み出しデータＲＤＴを演算処理部２に転送するバイパス処理を実行する。これにより、演算処理部２は、ムーブイン処理が完了した後に読み出しデータＲＤＴを受信する場合に比べて、読み出しデータＲＤＴを早く受信でき、読み出しデータＲＤＴを用いたデータ処理を早く実行できる。また、制御部４は、演算処理部２から出力される他のメモリアクセス要求ＭＲＥＱ（書き込み要求）に含まれる書き込みデータＷＤＴの対象ブロック領域への書き込みを、ムーブイン処理の実行中に抑止する。
【００１６】
例えば、制御部４は、書き込み要求に含まれるアクセスアドレスＡＤがムーブイン処理の対象アドレスと一致する場合、書き込みデータＷＤＴの対象ブロック領域への書き込みを抑止する。これにより、読み出しデータＲＤＴが、ムーブイン処理の完了前に演算処理部２にバイパスされる場合にも、他のメモリアクセス要求に含まれる書き込みデータＷＤＴが、データメモリ部６の対象ブロック領域に書き込まれることを抑止することができる。すなわち、対象ブロック領域に書き込まれた書き込みデータＷＤＴ（新たなデータ）が、ムーブイン処理による読み出しデータＲＤＴ（古いデータ）により上書きされることを抑止することができる。したがって、キャッシュメモリ３が誤ったデータを保持することを抑止することができ、キャッシュメモリ３のコヒーレンシを維持することができる。この結果、コヒーレンシを維持しつつ、読み出し要求のキャッシュミス時に、演算処理部２が読み出し要求を出力してから読み出しデータＲＤＴを受信するまでの時間（読み出しレイテンシ）を従来に比べて短縮することができる。
【００１７】
以上、図１に示す実施形態では、キャッシュメモリ３に誤ったデータを保持させることなく、主記憶装置７からのデータを、キャッシュメモリ３に格納する前に演算処理部２にバイパスすることができ、演算処理部２の処理性能を向上することができる。
【００１８】
図２は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。
【００１９】
図２に示す情報処理装置ＩＰＥ２は、ＣＰＵ等のプロセッサ１００およびメインメモリ５００を有する。プロセッサ１００およびメインメモリ５００は、プリント配線板等の共通の基板に搭載される。メインメモリ５００は、ＤＲＡＭ（Dynamic Random Access Memory）等の半導体メモリと、半導体メモリの動作を制御するメモリコントローラとを含む。プロセッサ１００は、演算処理装置の一例であり、メインメモリ５００は、主記憶装置の一例である。
【００２０】
プロセッサ１００は、プロセッサコア２００と、メインメモリ５００に記憶する情報を一時的に保持するキャッシュメモリ４００とを有する。キャッシュメモリ４００は、制御部１０、キャッシュタグ部２０およびキャッシュデータ部３０を有する。制御部１０は、コマンド受信部４０、検査部５０、データ応答部６０およびアクセス制御部７０を有する。
【００２１】
キャッシュタグ部２０は、キャッシュデータ部３０に保持されるデータを管理する情報が格納される記憶部ＴＭＥＭを有する。キャッシュデータ部３０は、データを保持する記憶部ＤＭＥＭおよびバッファ部ＢＵＦ１、ＢＵＦ２を有する。バッファ部ＢＵＦ１は、プロセッサコア２００からのデータ（書き込みデータＷＤＴ）を一時的に保持し、バッファ部ＢＵＦ２は、メインメモリ５００からのデータ（読み出しデータＲＤＴ）を一時的に保持する。記憶部ＴＭＥＭ、ＤＭＥＭの例と、キャッシュメモリ４００の動作の例は、図３で説明される。
【００２２】
コマンド受信部４０は、プロセッサコア２００からのコマンドＣＭＤ（読み出し要求および書き込み要求）を受信し、プロセッサコア２００にコマンドＣＭＤに対する応答を出力する。例えば、コマンドＣＭＤに対する応答は、プロセッサコア２００から出力される読み出し要求と、プロセッサコア２００に出力される読み出しデータとの対応を示す情報を含む。コマンドＣＭＤは、メモリアクセス要求の一例であり、コマンドＣＭＤに含まれるアドレスＡＤは、アクセスアドレスの一例である。
【００２３】
コマンド受信部４０は、プロセッサコア２００から書き込み要求を受信した場合、書き込み要求に含まれるメインメモリ５００のデータの格納先を示すアドレスＡＤを検査部５０に出力し、検査部５０からウエイト信号ＷＡＩＴを受信する。以下の説明では、書き込み要求に含まれるアドレスＡＤをコマンド受信部４０が検査部５０に出力する動作は、アドレスの問い合わせと称される。アドレスの問い合わせに対応してウエイト信号ＷＡＩＴがアサートされた場合、コマンド受信部４０は、書き込み要求（コマンドＣＭＤ）のアクセス制御部７０への出力を、ウエイト信号ＷＡＩＴがネゲートされるまで待機する。一方、コマンド受信部４０は、プロセッサコア２００から読み出し要求を受信した場合、アドレスを問い合わせることなく、受信したコマンドＣＭＤをアクセス制御部７０に出力する。
【００２４】
コマンド受信部４０は、プロセッサ２００から読み出し要求（コマンドＣＭＤ）を受信した場合、アドレスの問い合わせを実行せず、検査部５０は、ウエイト信号ＷＡＩＴをアサートしない。すなわち、読み出し要求のアクセス制御部７０への出力が、ウエイト信号ＷＡＩＴにより、ムーブイン処理の完了まで待たされることはない。これにより、読み出し要求に基づく処理をムーブイン処理の完了まで待つ場合に比べて、プロセッサ１００の処理性能を向上することができる。
【００２５】
なお、コマンド受信部４０は、プロセッサコア２００から読み出し要求を受信した場合、アドレスを問い合わせ、ウエイト信号ＷＡＩＴのアサート中に読み出し要求のアクセス制御部７０への出力を抑止してもよい。コマンド受信部４０は、書き込み要求および読み出し要求のアクセス制御部７０への出力に基づいて、データ応答部６０の動作を制御する制御信号ＤＣＮＴをデータ応答部６０に出力する。
【００２６】
検査部５０は、読み出し要求のキャッシュミス時に、メインメモリ５００からのコマンド応答ＣＭＤＲに含まれるアドレスＭＩＡＤ（読み出し要求に含まれるアドレスと同じ値）を保持するアドレスレジスタＡＲＥＧを有する。検査部５０は、アクセス制御部７０からの消去指示ＤＥＬに基づいて、アドレスレジスタＡＲＥＧに保持しているアドレスＭＩＡＤを消去し、消去の完了を示す完了通知ＤＥＬＣをアクセス制御部７０に出力する。検査部５０は、コマンド受信部４０から受信するアドレスＡＤがアドレスレジスタＡＲＥＧに保持しているアドレスＭＩＡＤと一致する場合、ウエイト信号ＷＡＩＴをアサートする。検査部５０は、アドレスＡＤがアドレスＭＩＡＤと一致しない場合、ウエイト信号ＷＡＩＴをネゲートする。なお、消去指示ＤＥＬによりアドレスレジスタＡＲＥＧに保持されたアドレスＭＩＡＤが消去された場合、検査部５０は、ウエイト信号ＷＡＩＴをネゲートする。
【００２７】
データ応答部６０は、読み出し要求のキャッシュヒット時に、キャッシュデータ部３０から読み出されるデータＨＤＴを読み出しデータＲＤＴとしてプロセッサコア２００に出力する。データ応答部６０は、読み出し要求のキャッシュミス時に、メインメモリ５００から読み出されるデータＢＤＴを読み出しデータＲＤＴとしてプロセッサコア２００に出力する。すなわち、キャッシュメモリ４００は、キャッシュミス時にメインメモリ５００から読み出されるデータをキャッシュデータ部３０とプロセッサコア２００とに並列に転送するバイパス機能を有する。
【００２８】
データ応答部６０は、読み出し要求のキャッシュミス時に、メインメモリ５００から読み出されるデータが記憶部ＤＭＥＭに格納される前に、データＢＤＴをプロセッサコア２００に出力する。これにより、プロセッサコア２００は、メインメモリ５００から読み出されたデータＭＩＤＴが記憶部ＤＭＥＭに格納される前に、データＢＤＴを受信することができ、受信したデータＢＤＴを用いた処理を開始することができる。この結果、プロセッサコア２００のデータ処理性能を従来に比べて向上することができる。データ応答部６０は、書き込み要求に応答する書き込み動作において、プロセッサコア２００から出力されるデータＷＤＴをキャッシュデータ部３０に出力する。
【００２９】
アクセス制御部７０は、キャッシュデータ部３０およびメインメモリ５００へのアクセスを制御するとともに、メインメモリ５００から読み出される読み出しデータをキャッシュデータ部３０に書き込むムーブイン処理の動作タイミングを制御する。アクセス制御部７０は、コマンド受信部４０からコマンドＣＭＤを受信し、コマンドＣＭＤに基づいて実行される処理の応答をコマンド受信部４０に出力する。例えば、コマンドＣＭＤに基づいて実行される処理の応答は、プロセッサコア２００から出力される読み出し要求と、プロセッサコア２００に出力される読み出しデータとの対応を示す情報を含む。アクセス制御部７０は、コマンド受信部４０からコマンドＣＭＤを受信した場合、コマンドＣＭＤに含まれるアドレスＡＤをキャッシュタグ部２０に出力し、キャッシュタグ部２０からヒット信号ＨＩＴおよびウェイ番号ＷＩＤを受信する。
【００３０】
アクセス制御部７０は、読み出し要求に対応するヒット信号ＨＩＴがキャッシュヒットを示す場合、コマンドＣＭＤに基づいてキャッシュデータ部３０にアクセスし、キャッシュデータ部３０からデータＨＤＴを読み出す。アクセス制御部７０は、読み出し要求に対応するヒット信号ＨＩＴがキャッシュミスを示す場合、コマンドＣＭＤをメインメモリ５００に出力し、データを読み出す読み出し動作をメインメモリ５００に実行させる。以降の説明では、読み出し動作によりメインメモリ５００から読み出されるデータをキャッシュデータ部３０に転送する処理は、ムーブイン処理と称される。メインメモリ５００からのコマンド応答ＣＭＤＲに含まれるアドレスＭＩＡＤは、ムーブイン処理において検査部５０に転送される。アクセス制御部７０は、ムーブイン処理の完了時に消去指示ＤＥＬを検査部５０に出力する。
【００３１】
アクセス制御部７０は、ムーブイン処理においてメインメモリ５００から読み出されるデータを格納するデータ領域の空きがキャッシュデータ部３０にない場合、データ領域からデータを追い出す追い出し処理をキャッシュデータ部３０に実行させる。アクセス制御部７０は、データ領域の空きの有無を、キャッシュタグ部２０を検索することで判定する。アクセス制御部７０は、追い出し処理により追い出されたデータがメインメモリ５００に保持されているデータより新しい場合、追い出されたデータをメインメモリ５００に格納する書き戻し処理をキャッシュデータ部３０に実行させる。アクセス制御部７０は、追い出し処理により追い出されたデータがメインメモリ５００に保持されているデータと同じ場合、追い出されたデータをメインメモリ５００に格納することなく破棄する。アクセス制御部７０は、ムーブイン処理の実行に基づいて、キャッシュデータ部３０に保持される情報を更新する。
【００３２】
図３は、図２に示すキャッシュタグ部２０およびキャッシュデータ部３０の一例を示す。図３では、キャッシュタグ部２０のうち記憶部ＴＭＥＭの構成と、キャッシュデータ部３０のうち記憶部ＤＭＥＭの構成を示す。
【００３３】
キャッシュデータ部３０は、８個のウェイＷＡＹ（ＷＡＹ０、ＷＡＹ１、...、ＷＡＹ７）およびウェイセレクタＷＳＥＬを有する。例えば、各ウェイＷＡＹは、プロセッサコア２００から出力されるアドレスのうち、８ビットのアドレスＭＡＤ［１４：７］に基づいて識別される２５６個のエントリを有し、各エントリは、１２８バイトのデータＤＴを記憶するデータ領域を有する。例えば、１２８バイトのデータＤＴは、メインメモリ５００に読み書きされるデータのアクセス単位であるデータブロックの一例である。各ウェイＷＡＹは、データブロックを記憶する第１のデータメモリ部の一例であり、各エントリは、第１のブロック領域の一例である。
【００３４】
ウェイセレクタＷＳＥＬは、アクセス制御部７０からのウェイ番号ＷＩＤにより示されるウェイＷＡＹを選択し、選択したウェイＷＡＹにおいてアドレスＭＡＤ（インデックスアドレス）により示されるデータ領域にアクセスする。以下の説明では、アドレスＭＡＤ［１４：７］は中位アドレスとも称される。アドレスＭＡＤより下位のビット［６：０］を含むアドレスは下位アドレスとも称され、アドレスＭＡＤより上位のビット［４０：１５］を含むアドレスは、上位アドレス（ＵＡＤ）とも称される。
【００３５】
プロセッサコア２００からの読み出し要求がキャッシュヒットと判定された場合、ウェイセレクタＷＳＥＬは、アクセスしたデータ領域から読み出されるデータＤＴのうち、下位アドレスで指定される所定数のデータＨＤＴをデータ応答部６０に出力する。読み出し要求がキャッシュミスと判定された場合、ウェイセレクタＷＳＥＬは、メインメモリ５００から読み出される１２８バイトのデータＭＩＤＴを、アドレスＭＡＤ［１４：７］およびウェイ番号ＷＩＤにより示されるデータ領域に書き込む。
【００３６】
プロセッサコア２００からの書き込み要求がキャッシュヒットと判定された場合、ウェイセレクタＷＳＥＬは、データ応答部６０からのデータＷＤＴをアクセスしたデータ領域に書き込む。書き込み要求がキャッシュミスと判定された場合、ウェイセレクタＷＳＥＬは、メインメモリ５００から読み出される１２８バイトのデータＭＩＤＴにデータＷＤＴを、下位アドレスに応じてマージする。そして、ウェイセレクタＷＳＥＬは、マージした１２８バイトのデータを、アドレスＭＡＤ［１４：７］およびウェイ番号ＷＩＤにより示されるデータ領域に書き込む。
【００３７】
キャッシュタグ部２０は、ウェイＷＡＹ０−ＷＡＹ７のそれぞれに対応する８個のタグ領域ＴＡＧ（ＴＡＧ０、ＴＡＧ１、...、ＴＡＧ７）およびアドレス比較部ＡＣＭＰを有する。例えば、各タグ領域ＴＡＧは、中位アドレスＭＡＤ［１４：７］に基づいて識別される２５６個の領域を有する。タグ領域ＴＡＧの各領域は、ウェイＷＡＹの各データ領域の状態を示す情報ＭＳＩを記憶するフラグ領域と、２６ビットの上位アドレスＵＡＤ［４０：１５］を記憶するアドレス領域とを有する。なお、図３では、タグ領域ＴＡＧに上位アドレスＵＡＤを書き込む経路と制御回路との記載は省略される。上位アドレスＵＡＤ［４０：１５］は、キャッシュデータ部３０のウェイＷＡＹのそれぞれに格納されたデータのメインメモリ５００における記憶位置を特定するタグアドレスの一例である。タグ領域ＴＡＧは、上位アドレスＵＡＤ［４０：１５］を記憶するタグメモリ部の一例である。キャッシュタグ部２０は、プロセッサコア２００からのコマンドＣＭＤに含まれるアドレスＡＤが示すメインメモリ５００の記憶領域に記憶されるデータをキャッシュデータ部３０が記憶しているかを判定する判定部の一例である。
【００３８】
フラグ領域は、対応するウェイＷＡＹの各データ領域に保持されているデータがメインメモリ５００に保持されているデータより新しい場合、モディファイＭを示す値が格納される。フラグ領域は、対応するウェイＷＡＹの各データ領域に保持されているデータがメインメモリ５００に保持されているデータと同じ場合、シェアＳを示す値が格納される。フラグ領域は、対応するウェイＷＡＹの各データ領域に保持されているデータが無効な場合、インバリッドＩを示す値が格納される。
【００３９】
アドレス比較部ＡＣＭＰは、中位アドレスＭＡＤ［１４：７］に応じてタグ領域ＴＡＧ０−ＴＡＧ７から読み出される上位アドレスＵＡＤのいずれかが、プロセッサコア２００から出力される上位アドレスＵＡＤと同じ場合、ヒット信号ＨＩＴをアサートする。そして、アドレス比較部ＡＣＭＰは、プロセッサコア２００から出力される上位アドレスＵＡＤを保持しているタグ領域ＴＡＧの番号をウェイ番号ＷＩＤとして出力する。アドレス比較部ＡＣＭＰは、タグ領域ＴＡＧ０−ＴＡＧ７から読み出される上位アドレスＵＡＤが、プロセッサコア２００から出力される上位アドレスＵＡＤと異なる場合、ヒット信号ＨＩＴをネゲートする。アドレス比較部ＡＣＭＰは、アドレスＭＡＤ［１４：７］に基づいてタグ領域ＴＡＧのいずれかから出力される上位アドレスＵＡＤと、コマンドＣＭＤに含まれる上位アドレスＵＡＤ（部分アドレス）とを比較する部分アドレス比較部の一例である。
【００４０】
ヒット信号ＨＩＴがアサートされた場合、アクセス制御部７０は、キャッシュタグ部２０から受信するウェイ番号ＷＩＤをキャッシュデータ部３０に出力し、キャッシュデータ部３０は、ウェイ番号ＷＩＤが示すウェイＷＡＹのデータ領域にアクセスする。このように、キャッシュメモリ４００は、いわゆるセットアソシエティブ方式の構造を有する。
【００４１】
図４は、図２に示す検査部５０の一例を示す。検査部５０は、図２に示すアドレスレジスタＡＲＥＧに加えて、比較器ＣＭＰを有する。比較器ＣＭＰは、コマンド受信部４０を介してプロセッサコア２００から出力される３４ビットのアドレスＡＤ［４０：７］がアドレスレジスタＡＲＥＧに保持された３４ビットのアドレスＭＩＡＤ［４０：７］と同じ場合、ウエイト信号ＷＡＩＴをアサートする。比較器ＣＭＰは、アドレスＡＤ［４０：７］がアドレスＭＩＡＤ［４０：７］と異なる場合、ウエイト信号ＷＡＩＴをネゲートする。
【００４２】
アドレスレジスタＡＲＥＧは、ムーブイン処理の完了に基づいてアクセス制御部７０から出力される消去指示ＤＥＬに基づいて、保持しているアドレスＭＩＡＤを消去し、消去の完了に基づいて、完了通知ＤＥＬＣをアクセス制御部７０に出力する。アドレスレジスタＡＲＥＧは、ムーブイン処理中にムーブイン処理の対象であるデータを記憶するメインメモリ５００のアドレスを保持するアドレス記憶部の一例である。ムーブイン処理の対象であるデータを記憶するメインメモリ５００のアドレスは、対象アドレスの一例である。比較器ＣＭＰは、メモリアクセス要求に含まれるアクセスアドレスを、アドレスレジスタＡＲＥＧに保持された対象アドレスと比較するアドレス比較部の一例である。
【００４３】
図５は、図２に示す情報処理装置ＩＰＥ２の動作の一例を示す。図５において、括弧内に示す数字は、メインメモリ５００の各記憶領域に割り当てられたアドレス（１６進数）を示す。
【００４４】
図５に示す例では、キャッシュメモリ４００は、メインメモリ５００のアドレス１０００に記憶されたデータ（図６に示すＤ１）を保持していない。また、キャッシュメモリ４００は、メインメモリ５００のアドレス９０００に記憶されたデータ（図６に示すＤ９）より新しいデータ（図６に示すＤ９ａ）を保持している（モディファイＭの状態）。このため、アドレス９０００のデータＤ９ａをキャッシュデータ部３０から追い出す場合、書き戻し処理によりデータＤ９ａはメインメモリ５００に書き戻される。また、キャッシュメモリ４００のキャッシュデータ部３０におけるアドレス１０００に対応する中位アドレスＭＡＤ［１４：７］により示される全てのウェイＷＡＹのデータ領域は、データを保持しているとする。すなわち、メインメモリ５００から出力される新たなデータを保持する空きのデータ領域はない（インバリッドＩの状態のデータ領域は存在しない）。
【００４５】
まず、プロセッサコア２００は、アドレス１０００を含む読み出し要求をキャッシュメモリ４００に出力する（図５（ａ））。キャッシュメモリ４００は、キャッシュタグ部２０の検索に基づいてキャッシュミスを判定し、読み出し要求をメインメモリ５００に出力する（図５（ｂ））。
【００４６】
また、メインメモリ５００から読み出されるデータを格納する空きのデータ領域を確保するため、キャッシュメモリ４００は、アドレス９０００のデータＤ９ａをメインメモリ５００に書き戻す書き戻し要求をメインメモリ５００に出力する（図５（ｃ））。すなわち、アドレス９０００のデータＤ９ａを保持しているデータ領域を空け、メインメモリ５００のアドレス１０００に保持されているデータＤ１を空けたデータ領域に格納するリプレース処理が起動される。
【００４７】
データを追い出すデータ領域は、中位アドレスＭＡＤにより選択されるウェイＷＡＹ０−ＷＡＹ７のデータ領域のうち、最近最も使用されていないデータを保持するデータ領域に決定される。すなわち、データを追い出すデータ領域は、ＬＲＵ（Least Recently Used）手法に基づいて決定される。なお、キャッシュデータ部３０に保持されたアドレス９０００のデータが、メインメモリ５００のアドレス９０００に保持されたデータと同じ場合（シェアＳの状態）、書き戻し要求が出力されることなくアドレス９０００のデータの追い出しのみが実行される。
【００４８】
次に、キャッシュメモリ４００は、読み出し要求に対応するデータ応答をメインメモリ５００から受信し、データ応答に含まれるアドレス１０００のデータＤ１を、データＤ９ａを追い出したデータ領域に格納するムーブイン処理を開始する（図５（ｄ））。キャッシュメモリ４００は、メインメモリ５００から受信したデータＤ１を、ムーブイン処理が完了する前に、データ応答部６０を介してプロセッサコア２００に出力する（データＤ１のバイパス）。データ応答に含まれるムーブイン処理の対象のアドレスＭＩＡＤ（１０００）は、図４に示す検査部５０のアドレスレジスタＡＲＥＧに格納される。
【００４９】
なお、データ応答に含まれるデータＤ１は、図３に示すバッファ部ＢＵＦ２に格納された後、キャッシュデータ部３０に設定された優先順にしたがって、データ領域に格納するムーンイン処理が実行される。このため、キャッシュデータ部３０において、ムーブイン処理よりも優先度の高い処理（読み出し要求に伴う読み出し処理等）が実行される場合、または先行するムーブイン処理が実行される場合、データＤ１のデータ領域への格納は待たされる。データＤ１が格納されるデータ領域は、対象ブロック領域の一例である。
【００５０】
例えば、プロセッサコア２００は、キャッシュメモリ４００からバイパスされたデータＤ１を用いて演算を実行し、演算により得られたデータＤ１ａをアドレス１０００の領域に書き込む書き込み要求をキャッシュメモリ４００に出力する（図５（ｅ））。図４に示す検査部５０の比較器ＣＭＰは、アドレスレジスタＡＲＥＧが保持するアドレス（１０００）とコマンド受信部４０が受信した書き込み要求に含まれるアドレス（１０００）とが互いに一致するため、ウエイト信号ＷＡＩＴをアサートする。このため、コマンド受信部４０は、アクセス制御部７０への書き込み要求の出力を保留し、保留した書き込み要求を保持する。
【００５１】
この後、ムーブイン処理が完了し、リプレース処理が完了する（図５（ｆ））。アクセス制御部７０は、キャッシュデータ部３０によるムーブイン処理の完了に基づいて、アドレスレジスタＡＲＥＧに消去指示ＤＥＬを出力する。アドレスレジスタＡＲＥＧは、消去指示ＤＥＬに基づいて、保持しているアドレス（１０００）を消去する。検査部５０の比較器ＣＭＰは、アドレスレジスタＡＲＥＧの消去動作により、書き込み要求に含まれるアドレス（１０００）が、アドレスレジスタＡＲＥＧに保持される値と一致しなくなるため、ウエイト信号ＷＡＩＴをネゲートする。コマンド受信部４０は、ウエイト信号ＷＡＩＴのネゲートに基づいて、アドレス１０００に対応するデータＤ１のムーブイン処理が完了したと判定し、保持している書き込み要求をアクセス制御部７０に出力する。アクセス制御部７０は、書き込み要求に含まれるアドレス１０００を用いて、キャッシュタグ部２０を検索し、キャッシュヒットを判定し、キャッシュデータ部３０にデータの書き込みを指示する。キャッシュデータ部３０は、ウェイ番号ＷＩＤが示すウェイＷＡＹにおける中位アドレスＭＡＤが示すデータ領域に、書き込み要求に含まれるデータＤ１ａを書き込み、書き込み処理を完了する（図５（ｇ））。
【００５２】
このように、検査部５０を設けることにより、ムーブイン処理により古いデータＤ１がキャッシュメモリ４００に書き込まれる前に、書き込み要求に伴う新しいデータＤ１ａがキャッシュメモリ４００に書き込まれることを抑止することができる。すなわち、キャッシュメモリ４００に書き込まれる新しいデータＤ１ａが、ムーブイン処理による古いデータＤ１により上書きされることを抑止することができ、キャッシュメモリ４００のコヒーレンシを維持することができる。
【００５３】
図６は、図５に示す動作において、キャッシュメモリ４００が保持する情報の変化の一例を示す。図６は、キャッシュメモリ４００を有するプロセッサ１００の制御方法を示す。図６に示す符号（ａ）−（ｇ）は、図５に示す符号に対応する。”−”で示す領域は、無効な情報を保持していることを示し、太枠で示す領域は、保持する情報が変化したことを示す。
【００５４】
図６では、説明を分かりやすくするために、図３に示すキャッシュタグ部２０と、キャッシュデータ部３０とが、キャッシュメモリ４００としてまとめて記載される。キャッシュデータ部３０は、２進数で”００１  ００００  ０”の中位アドレスＭＡＤ［１４：７］が割り当てられたデータ領域を示し、ウェイＷＡＹの数は４つであるとする。
【００５５】
初期状態（ａ）において、キャッシュメモリ４００は、アドレス９０００の記憶領域に対応するデータＤ９ａと、アドレス１１０００の記憶領域に対応するデータＤ１１とを保持している。また、キャッシュメモリ４００は、アドレス１９０００の記憶領域に対応するデータＤ１９と、アドレス２１０００の記憶領域に対応するデータＤ２１とを保持している。データＤ１１、Ｄ１９、Ｄ２１は、メインメモリ５００に保持されるデータと同じため、フラグ領域は、シェアＳを示す情報を保持する。データＤ９ａは、メインメモリ５００に保持されるデータＤ９より新しいため、フラグ領域は、モディファイＭを示す情報を保持する。なお、キャッシュタグ部２０は、タグ領域ＴＡＧ（図３）に上位アドレスＵＡＤを保持するが、図６では説明を分かりやすくするため、プロセッサコア２００から出力されるアドレスを記載している。
【００５６】
キャッシュメモリ４００は、プロセッサコア２００から受信する読み出し要求ＲＤ（アドレス１０００）に基づき、キャッシュミスを判定し、状態（ｂ）において、メインメモリ５００に読み出し要求ＲＤ（１０００）を出力する。状態（ｃ）において、キャッシュメモリ４００は、空いているデータ領域がないため、最も使用されていないデータＤ９ａを追い出し、空いたデータ領域に対応するフラグ領域をモディファイＭからインバリッドＩに変更する。また、キャッシュメモリ４００は、追い出したデータＤ９ａの状態がモディファイＭであるため、メインメモリ５００に書き戻し要求ＷＢ（アドレス９０００，データＤ９ａ）を出力する。
【００５７】
状態（ｄ）において、キャッシュメモリ４００は、読み出し要求ＲＤ（アドレス１０００）に応答するデータＤ１（アドレス１０００）をメインメモリ５００から受信し、ムーブイン処理を開始し、受信したデータＤ１をプロセッサコア２００にバイパスする。また、キャッシュメモリ４００は、ムーブイン処理の対象のアドレス１０００をアドレスレジスタＡＲＥＧに格納する。メインメモリ５００は、書き戻し要求ＷＢに含まれるデータＤ９ａをアドレス９０００の領域に書き込む。
【００５８】
状態（ｅ）において、プロセッサコア２００から受信する書き込み要求ＷＲ（アドレス１０００、データＤ１ａ）に含まれるアドレス１０００は、アドレスレジスタＡＲＥＧに保持しているアドレス１０００と一致する。このため、キャッシュメモリ４００は、書き込み要求ＷＲに基づく動作を保留する。状態（ｆ）において、キャッシュメモリ４００は、メインメモリ５００から読み出したデータＤ１を、データＤ９ａを追い出したデータ領域に書き込む。また、キャッシュメモリ４００は、キャッシュタグ部２０において、データＤ１を書き込んだデータ領域に対応する領域にシェアＳを示す情報と、アドレス１０００を書き込み、アドレスレジスタＡＲＥＧに保持されたアドレス１０００を消去する。そして、ムーブイン処理が完了する。
【００５９】
状態（ｇ）において、キャッシュメモリ４００は、書き込み要求に含まれるアドレス１０００と、アドレスレジスタＡＲＥＧに保持されるアドレスとの不一致に基づいて、書き込み要求に基づく動作を開始する。キャッシュメモリ４００は、キャッシュヒットを判定し、アドレス１０００に対応してデータＤ１を保持するデータ領域にデータＤ１ａを上書きする。また、キャッシュメモリ４００は、キャッシュタグ部２０において、データＤ１ａを書き込んだデータ領域に対応するフラグ領域をシェアＳからモディファイＭに変更する。そして、図５に示す一連の動作が完了する。
【００６０】
図７は、プロセッサコア２００から読み出し要求を受信した場合の図２に示すキャッシュメモリ４００の動作の一例を示す。図７は、キャッシュメモリ４００を有するプロセッサ１００の制御方法を示す。例えば、図７に示す動作は、キャッシュメモリ４００のハードウェアにより実現される。
【００６１】
キャッシュメモリ４００は、読み出し要求を受信した場合、ステップＳ１０２において、キャッシュヒットか否かを判定し、キャッシュヒットの場合、処理をステップＳ１２６に移行し、キャッシュミスの場合、処理をステップＳ１０４に移行する。
【００６２】
キャッシュミスの場合、ステップＳ１０４において、キャッシュメモリ４００は、メインメモリ５００に読み出し要求を出力し、処理をステップＳ１０６に移行する。ステップＳ１０６において、キャッシュメモリ４００は、空いているウェイＷＡＹがあるか否かを判定する。キャッシュメモリ４００は、空いているウェイＷＡＹがある場合、処理をステップＳ１１２に移行し、空いているウェイＷＡＹがない場合、処理をステップＳ１０８に移行する。ステップＳ１０８において、キャッシュメモリ４００は、ウェイＷＡＹの１つに保持している追い出し対象のデータの状態がシェアＳか否かを判定し、シェアＳの場合、処理をステップＳ１１２に移行し、モディファイＭの場合、処理をステップＳ１１０に移行する。
【００６３】
ステップＳ１１０において、キャッシュメモリ４００は、追い出し対象のデータをメインメモリ５００に書き戻す書き戻し処理を実行し、処理をステップＳ１１２に移行する。ステップＳ１１２において、キャッシュメモリ４００は、読み出し要求に応答してメインメモリ５００から出力されるデータを受信し、受信したデータのうち、読み出し要求に含まれるアドレスに対応するデータをプロセッサコア２００にバイパスする。この後、処理をステップＳ１１６に移行される。
【００６４】
ステップＳ１１６において、キャッシュメモリ４００は、メインメモリ５００から出力されるデータを空きのウェイＷＡＹに書き込むムーブイン処理を開始し、処理をステップＳ１１８に移行する。ステップＳ１１８において、キャッシュメモリ４００は、ムーブイン処理中にプロセッサコア２００から書き込み要求を受信したか否かを判定し、他の要求を受信した場合、処理をステップＳ１２０に移行し、書き込み要求を受信していない場合、処理を終了する。
【００６５】
ステップＳ１２０において、キャッシュメモリ４００は、書き込み要求に含まれるアドレスがムーブイン処理中のアドレスと同じか否かを判定し、アドレスが同じ場合、処理をステップＳ１２２に移行し、アドレスが異なる場合、処理をステップＳ１２４に移行する。ステップＳ１２２において、キャッシュメモリ４００は、ムーブイン処理が完了するまで待ち、ムーブイン処理が完了したことに基づいて処理をステップＳ１２４に移行する。ステップＳ１２４において、キャッシュメモリ４００は、ステップＳ１１８で受信した書き込み要求に基づく処理を実行し、処理を終了する。
【００６６】
一方、キャッシュヒットした場合、ステップＳ１２６において、キャッシュメモリ４００は、キャッシュヒットしたウェイＷＡＹからデータを読み出し、処理をステップＳ１３２に移行する。ステップＳ１３２において、キャッシュメモリ４００は、ウェイＷＡＹから読み出したデータのうち、読み出し要求に含まれるアドレスに対応するデータをプロセッサコア２００に出力し、処理を終了する。なお、読み出し要求がキャッシュミスした場合、ステップＳ１１２でメインメモリ５００から受信したデータのうち、読み出し要求に含まれるアドレスに対応するデータがプロセッサコア２００に出力される。
【００６７】
図８は、プロセッサコア２００から書き込み要求を受信した場合の図２に示すキャッシュメモリ４００の動作の一例を示す。図８は、キャッシュメモリ４００を有するプロセッサ１００の制御方法を示す。図７と同一または同様の処理については、詳細な説明は省略される。例えば、図８に示す動作は、キャッシュメモリ４００のハードウェアにより実現される。
【００６８】
ステップＳ２０２、Ｓ２０４、Ｓ２０６、Ｓ２０８、Ｓ２１０、Ｓ２１２、Ｓ２２６の処理は、図７に示すステップＳ１０２、Ｓ１０４、Ｓ１０６、Ｓ１０８、Ｓ１１０、Ｓ１１２、Ｓ１２６の処理と同様である。
【００６９】
書き込み要求に含まれる書き込みデータは、メインメモリ５００のアクセス単位であるデータブロックのサイズより小さい。このため、ステップＳ２１２の処理の後、ステップＳ２１４において、キャッシュメモリ４００は、書き込み要求に含まれる書き込みデータをメインメモリ５００から受信したデータブロック内にマージし、処理をステップＳ２１７に移行する。ステップＳ２１７において、キャッシュメモリ４００は、マージしたデータを空きのウェイＷＡＹに書き込むムーブイン処理を実行し、処理を終了する。
【００７０】
一方、ステップＳ２０２でキャッシュヒットした場合、ステップＳ２２６において、キャッシュメモリ４００は、キャッシュヒットしたウェイＷＡＹからデータを読み出し、処理をステップＳ２２８に移行する。ステップＳ２２８において、キャッシュメモリ４００は、書き込み要求に含まれる書き込みデータをウェイＷＡＹから読み出したデータにマージし、処理をステップＳ２３０に移行する。ステップＳ２３０において、キャッシュメモリ４００は、マージしたデータをキャッシュヒットしたウェイＷＡＹに書き込み、処理を終了する。
【００７１】
なお、キャッシュメモリ４００は、ステップＳ２１７の代わりに、図７に示すステップＳ１１６、Ｓ１１８、Ｓ１２０、Ｓ１２２、Ｓ１２４を実行してもよい。この場合、アドレスが同じで新しいデータを含む書き込み要求が、ムーブイン処理中にキャッシュメモリ４００に供給された場合に、新しいデータがムーブイン処理により古いデータに書き替えられることを抑止することができる。この結果、キャッシュメモリ４００のコヒーレンシを維持することができる。
【００７２】
以上、図２から図８に示す実施形態においても、図１に示す実施形態と同様の効果を得ることができる。すなわち、キャッシュメモリ４００に誤ったデータを保持させることなく、メインメモリ５００からのデータを、キャッシュメモリ４００に格納する前にプロセッサコア２００にバイパスすることができ、プロセッサコア２００の処理性能を向上することができる。
【００７３】
さらに、図２から図８に示す実施形態では、検査部５０のアドレスレジスタＡＲＥＧは、ムーブイン処理中に、ムーブイン処理の対象のアドレスＭＩＡＤを保持する。そして、検査部５０の比較部ＣＭＰは、コマンド受信部４０から受信する書き込み要求に含まれるアドレスＡＤがアドレスレジスタＡＲＥＧに保持しているアドレスＭＩＡＤと一致する場合、ウエイト信号ＷＡＩＴをアサートする。これにより、制御部１０は、ムーブイン処理が完了するまで、書き込み要求に伴う書き込み動作の実行を抑止することができ、キャッシュメモリ４００のコヒーレンシを維持することができる。すなわち、検査部５０によるアドレスＡＤの検査で、コヒーレンシが維持されない可能性が判定された場合、書き込み要求に伴う書き込み動作の実行を抑止することで、コヒーレンシを維持することができる。
【００７４】
アドレスレジスタＡＲＥＧに保持されたアドレスＭＩＡＤは、ムーブイン処理を制御するアクセス制御部７０からの消去指示ＤＥＬに基づいて消去される。これにより、検査部５０は、ムーブイン処理の完了に同期して生成される消去指示ＤＥＬに基づいてウエイト信号ＷＡＩＴをネゲートすることができ、書き込み要求の受け付けの抑止期間を、ムーブイン処理期間に合わせて設定することができる。
【００７５】
図９は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。図２に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【００７６】
図９に示す情報処理装置ＩＰＥ３は、プロセッサ１００Ａおよびメインメモリ５００を有する。プロセッサ１００Ａは、演算処理装置の一例である。プロセッサ１００Ａは、プロセッサコア２００と、メインメモリ５００に記憶する情報を一時的に保持するキャッシュメモリ３００、４００Ａとを有する。キャッシュメモリ３００は、プロセッサコア２００に接続され、キャッシュメモリ４００Ａを介してメインメモリ５００に接続される。キャッシュメモリ３００の例は、図１０に示される。キャッシュメモリ４００Ａは、キャッシュメモリ３００を介してプロセッサコア２００に接続される。以下の説明では、キャッシュメモリ３００は、Ｌ１キャッシュとも称され、キャッシュメモリ４００Ａは、Ｌ２キャッシュとも称される。Ｌ１キャッシュは、データＯＰ（オペランド）と命令ＩＮＳとをそれぞれ記憶する専用の記憶領域を有し、Ｌ２キャッシュは、データＯＰ（オペランド）と命令ＩＮＳとを記憶する共通の記憶領域を有する。なお、Ｌ１キャッシュが保持しているデータＯＰおよび命令ＩＮＳは、Ｌ２キャッシュにも保持されている。
【００７７】
キャッシュメモリ４００Ａは、制御部１０Ａ、キャッシュタグ部２０およびキャッシュデータ部３０を有する。キャッシュタグ部２０およびキャッシュデータ部３０は、図２に示すキャッシュタグ部２０およびキャッシュデータ部３０と同一または同様の構成を有する。制御部１０Ａは、コマンド受信部４０Ａ、検査部５０、データ応答部６０およびアクセス制御部７０を有する。検査部５０、データ応答部６０およびアクセス制御部７０は、図２に示す検査部５０、データ応答部６０およびアクセス制御部７０と同一または同様の構成を有する。
【００７８】
コマンド受信部４０Ａは、図２に示すコマンド受信部４０におけるプロセッサコア２００とのインタフェース機能の代わりに、Ｌ１キャッシュとのインタフェース機能を有することを除き、図２に示すコマンド受信部４０と同様の機能を有する。コマンド受信部４０Ａは、Ｌ１キャッシュからコマンドＣＭＤ（読み出し要求および書き戻し要求）を受信し、Ｌ１キャッシュにコマンドＣＭＤＲ（リプレース要求等）を出力する。Ｌ１キャッシュとＬ２キャッシュとの間で入出力されるコマンドＣＭＤ、ＣＭＤＲの例は、図１１に示される。
【００７９】
図１０は、図９に示すＬ１キャッシュの一例を示す。Ｌ１キャッシュは、Ｌ２キャッシュと同様に、キャッシュタグ部２１およびキャッシュデータ部３１を有する。
【００８０】
キャッシュデータ部３１は、データＯＰ（オペランド）を保持する２個のウェイＷＡＹ（ＷＡＹ０、ＷＡＹ１）と命令ＩＮＳを保持する２個のウェイＷＡＹ（ＷＡＹ０、ＷＡＹ１）とを有する。例えば、各ウェイＷＡＹは、プロセッサコア２００から出力されるアドレスのうち、６ビットのアドレスＭＡＤ［１２：７］（インデックスアドレス）に基づいて識別される６４個のエントリを有する。各エントリは、１２８バイトのデータＤＴを記憶するデータ領域を有する。各ウェイＷＡＹは、メインメモリ５００に読み書きされるデータのアクセス単位であるデータブロックを記憶する第２のデータメモリ部の一例であり、各エントリは、第２のブロック領域の一例である。
【００８１】
データＯＰ用のウェイセレクタＷＳＥＬ（ＯＰ）は、キャッシュタグ部２１からのウェイ番号ＷＩＤに基づいてウェイＷＡＹを選択し、選択したウェイＷＡＹにおいて中位アドレスＭＡＤ［１２：７］により示されるデータ領域にアクセスする。同様に、命令ＩＮＳ用のウェイセレクタＷＳＥＬ（ＩＮＳ）は、キャッシュタグ部２１からのウェイ番号ＷＩＤに基づいてウェイＷＡＹを選択し、選択したウェイＷＡＹにおいて中位アドレスＭＡＤ［１２：７］により示されるデータ領域にアクセスする。キャッシュデータ部３１は、データＯＰ用と命令ＩＮＳ用のウェイＷＡＹを有することを除き、図３に示すキャッシュデータ部３０と同様に動作する。
【００８２】
キャッシュタグ部２１は、データＯＰ用のウェイＷＡＹ０−ＷＡＹ１のそれぞれに対応する２個のタグ領域ＴＡＧ（ＴＡＧ０、ＴＡＧ１）およびアドレス比較部ＡＣＭＰ（ＯＰ）を有する。また、キャッシュタグ部２１は、命令ＩＮＳ用のウェイＷＡＹ０−ＷＡＹ１のそれぞれに対応する２個のタグ領域ＴＡＧ（ＴＡＧ０、ＴＡＧ１）およびアドレス比較部ＡＣＭＰ（ＩＮＳ）を有する。
【００８３】
例えば、各タグ領域ＴＡＧは、中位アドレスＭＡＤ［１２：７］に基づいて識別される６４個の領域を有する。タグ領域ＴＡＧの各領域は、ウェイＷＡＹの各記憶領域の状態を示す情報ＭＳＩを記憶するフラグ領域と、２８ビットの上位アドレスＵＡＤ［４０：１３］を記憶するアドレス領域とを有する。キャッシュタグ２１は、データＯＰ用と命令ＩＮＳ用のタグ領域ＴＡＧを有することを除き、図３に示すキャッシュタグ部２０と同様に動作する。
【００８４】
図１１は、図９に示す情報処理装置ＩＰＥ３の動作の一例を示す。図５に示す動作と同様の動作については、詳細な説明は省略する。
【００８５】
図１１に示す例では、Ｌ１キャッシュおよびＬ２キャッシュは、メインメモリ５００のアドレス１０００に記憶されたデータ（図１２に示すＤ１）を保持していない。また、Ｌ２キャッシュは、メインメモリ５００のアドレス９０００に記憶されたデータ（図１２に示すＤ９）より新しいデータ（図１２に示すＤ９ａ）を保持している（モディファイＭの状態）。このため、アドレス９０００のデータをＬ２キャッシュから追い出す場合、書き戻し処理によりデータＤ９ａはメインメモリ５００に書き戻される。また、Ｌ１キャッシュにおけるアドレス１０００に対応する中位アドレスＭＡＤ［１２：７］により示される全てのウェイＷＡＹのデータ領域は、データを保持しているとする。同様に、Ｌ２キャッシュにおけるアドレス１０００に対応する中位アドレスＭＡＤ［１４：７］により示される全てのウェイＷＡＹのデータ領域は、データを保持しているとする。
【００８６】
まず、プロセッサコア２００は、アドレス１０００を含む読み出し要求をＬ１キャッシュに出力する（図１１（ａ））。Ｌ１キャッシュは、キャッシュタグ部２１の検索に基づいてキャッシュミスを判定し、Ｌ１キャッシュから追い出すデータＤ１９をＬＲＵ手法に基づいて決定する。Ｌ１キャッシュは、追い出すデータＤ１９（図１２）を保持しているリプレース対象のウェイ番号ＷＩＤ（この例では、ＷＡＹ０）とともに、読み出し要求をＬ２キャッシュに出力する（図１１（ｂ））。
【００８７】
そして、Ｌ１キャッシュは、リプレース対象のウェイＷＡＹ０に保持しているデータデータＤ１９を追い出し、タグ領域ＴＡＧを更新する。データＤ１９は、Ｌ２キャッシュおよびメインメモリ５００に保持されているデータＤ１９と同じため（シェアＳ）、Ｌ１キャッシュは、データＤ１９の書き戻し要求をＬ２キャッシュに出力せず、データＤ１９を破棄する。
【００８８】
Ｌ２キャッシュは、Ｌ１キャッシュからの読み出し要求に基づいて、キャッシュタグ部２０を検索し、キャッシュミスを判定し、メインメモリ５００に読み出し要求を出力する（図１１（ｃ））。すなわち、キャッシュデータ部３０に保持されているデータを、メインメモリ５００のアドレス１０００に保持されているデータＤ１に置き換えるリプレース処理が起動される。
【００８９】
Ｌ２キャッシュは、Ｌ１キャッシュからの読み出し要求に基づいて、リプレース要求（１０００、ＷＡＹ０）をＬ１キャッシュに出力する（図１１（ｄ））。リプレース要求は、Ｌ１キャッシュに保持されているデータのうち、最近最も使用されていないデータをＬ２キャッシュが出力するデータで置き換える指示であり、Ｌ２キャッシュから置き換え用のデータが出力する前に出力される。また、Ｌ２キャッシュは、Ｌ２キャッシュから追い出すデータＤ９ａをＬＲＵ手法に基づいて決定し、データＤ９ａの書き戻し要求をメインメモリに出力する（図１１（ｅ））。
【００９０】
次に、Ｌ２キャッシュは、読み出し要求に対応するデータ応答をメインメモリ５００から受信し、データ応答に含まれるアドレス１０００のデータＤ１を、データＤ９ａを追い出したデータ領域に格納するムーブイン処理を開始する（図１１（ｆ））。また、Ｌ２キャッシュは、ムーブイン処理を実行するアドレス１０００をアドレスレジスタＡＲＥＧに格納する。なお、ムーブイン処理は、図５と同様に、所定の優先順にしたがって実行されるため、データＤ１のキャッシュデータ部３０への格納は待たされる。
【００９１】
Ｌ２キャッシュは、データＤ１のムーブイン処理が完了する前に、読み出し要求に対するデータ応答として、データＤ１をＬ１キャッシュに出力する（データＤ１のバイパス）（図１１（ｇ））。Ｌ１キャッシュは、受信したデータＤ１をキャッシュデータ部３１に格納し、キャッシュタグ部２１を更新する。また、Ｌ１キャッシュは、受信したデータＤ１をデータ応答としてプロセッサコア２００に出力する（図１１（ｈ））。
【００９２】
プロセッサコア２００は、Ｌ１キャッシュから受信したデータＤ１を用いて演算を実行し、演算により得られたデータＤ１ａをアドレス１０００の領域に書き込む書き込み要求をＬ１キャッシュに出力する（図１１（ｉ））。Ｌ１キャッシュは、アドレス１０００のデータＤ１を保持しているため、キャッシュヒットを判定し、キャッシュデータ部３１が保持しているデータＤ１を、プロセッサコア２００から受信したデータＤ１ａに置き換え、キャッシュタグ部２１を更新する。
【００９３】
次に、プロセッサコア２００は、アドレス３０００を含む読み出し要求をＬ１キャッシュに出力する（図１１（ｊ））。Ｌ１キャッシュは、キャッシュタグ部２１の検索に基づいてキャッシュミスを判定し、Ｌ１キャッシュから追い出すデータをＬＲＵ手法に基づいて決定する。この例では、Ｌ１キャッシュは、データＤ１ａを追い出すことを決定する。Ｌ１キャッシュは、追い出すデータＤ１ａを保持しているリプレース対象のウェイ番号ＷＩＤ（この例では、ＷＡＹ０）とともに、アドレス３０００の読み出し要求をＬ２キャッシュに出力する（図１１（ｋ））。
【００９４】
アドレス３０００を含む読み出し要求を受けたＬ２キャッシュは、キャッシュヒットを判定し、リプレース要求（３０００、ＷＡＹ０）をＬ１キャッシュに出力する（図１１（ｌ））。また、Ｌ２キャッシュは、キャッシュデータ部３０に保持するデータＤ３（アドレス３０００）をデータ応答としてＬ１キャッシュに出力する（図１１（ｍ））。
【００９５】
Ｌ１キャッシュは、受信したデータＤ３をキャッシュデータ部３１に格納し、キャッシュタグ部２１を更新する。また、Ｌ１キャッシュは、受信したデータＤ３をデータ応答としてプロセッサコア２００に出力する（図１１（ｎ））。Ｌ１キャッシュは、データＤ３を保持するために追い出したデータＤ１ａ（アドレス１０００）をＬ２キャッシュに書き込むための書き戻し要求をＬ２キャッシュに出力する（図１１（ｏ））。
【００９６】
図９に示す検査部５０は、アドレスレジスタＡＲＥＧが保持するアドレス（１０００）とＬ１キャッシュからの書き戻し要求に含まれるアドレス（１０００）とが互いに一致するため、ウエイト信号ＷＡＩＴをアサートする。このため、Ｌ２キャッシュは、書き戻し要求に応答する書き戻し処理の開始を保留し、保留した書き戻し要求を保持する。
【００９７】
そして、ムーブイン処理が完了し、リプレース処理が完了する（図１１（ｐ））。Ｌ２キャッシュは、ムーブイン処理の完了に基づいて、アドレスレジスタＡＲＥＧが保持しているアドレス（１０００）を消去する。検査部５０は、書き戻し要求に含まれるアドレス（１０００）が、アドレスレジスタＡＲＥＧに保持される値と一致しなくなるため、ウエイト信号ＷＡＩＴをネゲートする。Ｌ２キャッシュは、ウエイト信号ＷＡＩＴのネゲートに基づいて、アドレス１０００に対応するデータＤ１のムーブイン処理が完了したと判定し、保持している書き戻し要求に基づく書き戻し処理を開始する（図１１（ｑ））。そして、Ｌ２キャッシュにおけるデータＤ１を保持するデータ領域に、新たなデータＤ１ａが書き込まれる。
【００９８】
図１１に示す動作では、Ｌ１キャッシュからの書き戻し要求に基づいてＬ２キャッシュに書き込まれる新しいデータＤ１ａが、ムーブイン処理による古いデータＤ１により上書きされることを抑止することができる。この結果、Ｌ２キャッシュのコヒーレンシを維持することができる。
【００９９】
図１２から図１５は、図１１に示す動作において、Ｌ１キャッシュおよびＬ２キャッシュが保持する情報の変化の一例を示す。図６と同一または同様の処理については、詳細な説明は省略される。図１２から図１５は、キャッシュメモリ４００Ａを有するプロセッサ１００Ａの制御方法を示す。図１２から図１５に示す符号（ａ）から符号（ｑ）は、図１１に示す符号に対応する。
【０１００】
図１２から図１５では、説明を分かりやすくするために、Ｌ１キャッシュのキャッシュデータ部３１は、２進数で”１  ００００  ０”の中位アドレスＭＡＤ［１２：７］が割り当てられたデータ領域を示し、ウェイＷＡＹの数は２つであるとする。Ｌ２キャッシュのキャッシュデータ部３０は、２進数で”００１  ００００  ０”の中位アドレスＭＡＤ［１４：７］が割り当てられたデータ領域を示し、ウェイＷＡＹの数は４つであるとする。
【０１０１】
初期状態（ａ）において、Ｌ１キャッシュは、アドレス１９０００の記憶領域に対応するデータＤ１９と、アドレス１１０００の記憶領域に対応するデータＤ１１ａとを保持している。データＤ１９は、メインメモリ５００に保持されるデータと同じため、フラグ領域は、シェアＳを示す情報を保持する。データＤ１１ａは、メインメモリ５００に保持されるデータＤ１１より新しいため、フラグ領域は、モディファイＭを示す情報を保持する。
【０１０２】
Ｌ２キャッシュは、アドレス９０００の記憶領域に対応するデータＤ９ａと、アドレス１１０００の記憶領域に対応するデータＤ１１とを保持している。また、Ｌ２キャッシュは、アドレス１９０００の記憶領域に対応するデータＤ１９と、アドレス２１０００の記憶領域に対応するデータＤ２１とを保持している。データＤ９ａは、メインメモリ５００に保持されるデータＤ９より新しいため、フラグ領域は、モディファイＭを示す情報を保持する。データＤ１１、Ｄ１９、Ｄ２１のそれぞれは、メインメモリ５００に保持されるデータと同じため、フラグ領域は、シェアＳを示す情報を保持する。なお、図１２から図１５では説明を分かりやすくするため、キャッシュタグ部２１およびキャッシュタグ部２０に保持されるアドレスは、上位アドレスＵＡＤではなく、プロセッサコア２００から出力されるアドレスを記載している。
【０１０３】
状態（ａ）において、アドレス１０００を含む読み出し要求ＲＤを受信したＬ１キャッシュは、キャッシュミスを判定する。状態（ｂ）において、Ｌ１キャッシュは、Ｌ１キャッシュから追い出すデータＤ１９を決定し、キャッシュタグ部２１を更新し、読み出し要求ＲＤ（１０００、ＷＡＹ０）をＬ２キャッシュに出力する。
【０１０４】
状態（ｃ）において、Ｌ２キャッシュは、読み出し要求ＲＤに基づき、キャッシュミスを判定し、メインメモリ５００に読み出し要求ＲＤ（１０００）を出力する。状態（ｄ）において、Ｌ２キャッシュは、Ｌ１キャッシュからの読み出し要求ＲＤに基づいて、リプレース要求ＲＰＬ（ＷＡＹ０）をＬ１キャッシュに出力する。状態（ｅ）において、Ｌ２キャッシュは、Ｌ２キャッシュから追い出すデータＤ９ａを決定し、データＤ９ａの書き戻し要求ＷＢをメインメモリに出力する。
【０１０５】
図１３に示す状態（ｆ）において、Ｌ２キャッシュは、読み出し要求ＲＤに対応するデータ応答（Ｄ１、１０００）をメインメモリ５００から受信し、データＤ１をキャッシュデータ部３０に格納するムーブイン処理を開始する。メインメモリ５００から受信したデータＤ１は、データＤ１のムーブイン処理が完了する前にＬ１キャッシュにバイパスされる。また、Ｌ２キャッシュは、ムーブイン処理を実行するアドレス１０００をアドレスレジスタＡＲＥＧに格納する。メインメモリ５００は、書き戻し要求ＷＢに基づいて、アドレス９０００が示す記憶領域にデータＤ９ａを書き込む。なお、メインメモリ５００へのデータＤ９ａの書き込みは、状態（ｇ）以降に実行されてもよい。
【０１０６】
状態（ｇ）において、Ｌ１キャッシュは、Ｌ２キャッシュから受信したデータＤ１をキャッシュデータ部３１に格納し、キャッシュタグ部２１を更新する。状態（ｈ）において、Ｌ１キャッシュは、受信したデータＤ１をデータ応答としてプロセッサコア２００に出力する。
【０１０７】
状態（ｉ）において、Ｌ１キャッシュは、データＤ１ａをアドレス１０００の領域に書き込む書き込み要求ＷＲをプロセッサコア２００から受信する。Ｌ１キャッシュは、書き込み要求ＷＲに基づきキャッシュヒットを判定し、キャッシュデータ部３１が保持しているデータＤ１をデータＤ１ａに置き換え、キャッシュタグ部２１を更新する。状態（ｊ）において、Ｌ１キャッシュは、アドレス３０００を含む読み出し要求ＲＤをプロセッサコア２００から受信する。
【０１０８】
図１４に示す状態（ｋ）において、Ｌ１キャッシュは、読み出し要求ＲＤに基づきキャッシュミスを判定し、Ｌ１キャッシュから追い出すデータＤ１ａを決定し、キャッシュタグ部２１を更新する。また、Ｌ１キャッシュは、プロセッサコア２００から受信したアドレス３０００を含む読み出し要求ＲＤをＬ２キャッシュに出力する。
【０１０９】
状態（ｌ）において、アドレス３０００を含む読み出し要求を受けたＬ２キャッシュは、キャッシュヒットを判定し、リプレース要求ＲＰＬをＬ１キャッシュに出力する。状態（ｍ）において、Ｌ２キャッシュは、キャッシュデータ部３０に保持するデータＤ３をデータ応答としてＬ１キャッシュに出力する。Ｌ１キャッシュは、受信したデータＤ３をキャッシュデータ部３１に格納し、キャッシュタグ部２１を更新する。
【０１１０】
状態（ｎ）において、Ｌ１キャッシュは、Ｌ２キャッシュから受信したデータＤ３をデータ応答としてプロセッサコア２００に出力する。状態（ｏ）において、Ｌ１キャッシュは、データＤ３を保持するために追い出したデータＤ１ａ（アドレス１０００）をＬ２キャッシュに書き込むための書き戻し要求ＷＢをＬ２キャッシュに出力する。ここで、Ｌ２キャッシュは、検査部５０によるアドレスの比較（一致）に基づいて、書き戻し要求ＷＢに応答する書き戻し処理の開始を保留する。
【０１１１】
図１５に示す状態（ｐ）において、Ｌ２キャッシュは、データＤ１のムーブイン処理の完了に基づいて、アドレスレジスタＡＲＥＧが保持しているアドレス（１０００）を消去する。状態（ｑ）において、Ｌ２キャッシュは、検査部５０によるアドレスの比較（不一致）に基づいて、アドレス１０００に対応するデータＤ１のムーブイン処理が完了したと判定し、保持している書き戻し要求ＷＢに基づく書き戻し処理を開始する。そして、Ｌ２キャッシュは、キャッシュデータ部３０に保持しているデータＤ１を新たなデータＤ１ａに置き換える。そして、図１１に示す一連の動作が完了する。なお、Ｌ２キャッシュは、図７および図８に示すフローと同様に動作する。
【０１１２】
以上、図９から図１５に示す実施形態においても、図１から図８に示す実施形態と同様の効果を得ることができる。すなわち、キャッシュメモリ４００Ａに誤ったデータを保持させることなく、メインメモリ５００からのデータをキャッシュメモリ４００Ａに格納する前にプロセッサコア２００にバイパスすることができ、プロセッサコア２００の処理性能を向上することができる。制御部１０は、検査部５０によるアドレスＡＤの検査で、コヒーレンシが維持されない可能性が判定された場合、書き込み要求に伴う書き込み動作の実行を抑止することで、Ｌ２キャッシュのコヒーレンシを維持することができる。検査部５０は、ムーブイン処理の完了に同期して生成される消去指示ＤＥＬに基づいてウエイト信号ＷＡＩＴをネゲートすることができ、書き込み要求に伴う書き込み動作の実行の抑止期間を、ムーブイン処理期間に合わせて設定することができる。
【０１１３】
さらに、図９から図１５に示す実施形態では、Ｌ２キャッシュが、Ｌ１キャッシュを介してプロセッサコア２００に接続される場合にも、Ｌ２キャッシュのコヒーレンシを維持することができる。
【０１１４】
図１６は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。図２および図９に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【０１１５】
図１６に示す情報処理装置ＩＰＥ４は、プロセッサ１００Ｂおよびメインメモリ５００を有する。プロセッサ１００Ｂは、演算処理装置の一例である。プロセッサ１００Ｂは、プロセッサコア２００と、メインメモリ５００に記憶する情報を一時的に保持するキャッシュメモリ３００（Ｌ１キャッシュ）およびキャッシュメモリ４００Ｂ（Ｌ２キャッシュ）とを有する。
【０１１６】
キャッシュメモリ４００Ｂは、制御部１０Ｂ、キャッシュタグ部２０およびキャッシュデータ部３０を有する。キャッシュタグ部２０およびキャッシュデータ部３０は、図２に示すキャッシュタグ部２０およびキャッシュデータ部３０と同一または同様の構成を有する。制御部１０Ｂは、コマンド受信部４０Ａ、検査部５０Ｂ、データ応答部６０およびアクセス制御部７０を有する。データ応答部６０およびアクセス制御部７０は、図２に示すデータ応答部６０およびアクセス制御部７０と同一または同様の構成を有し、コマンド受信部４０Ａは、図９に示すコマンド受信部４０Ａと同一または同様の構成を有する。検査部５０Ｂの例は、図１７に示される。
【０１１７】
図１７は、図１６に示す検査部５０Ｂの一例を示す。検査部５０Ｂは、比較部ＣＭＰで比較するアドレスのビット数が異なることを除き、図４に示す検査部５０と同様の構成を有する。すなわち、検査部５０ＢのアドレスレジスタＡＲＥＧは、ムーブイン処理を実行するアドレスＭＩＡＤのうち、キャッシュタグ部２０およびキャッシュデータ部３０のインデックスアドレスに対応する８ビットのアドレス［１４：７］を保持する。比較器ＣＭＰは、コマンド受信部４０Ａから受信するアドレスＡＤ［１４：７］がアドレスレジスタＡＲＥＧに保持されたアドレスＭＩＡＤ［１４：７］と一致する場合に、ウエイト信号ＷＡＩＴをアサートする。比較器ＣＭＰは、アドレスＡＤ［１４：７］がアドレスＭＩＡＤ［１４：７］と異なる場合、ウエイト信号ＷＡＩＴをネゲートする。
【０１１８】
検査部５０ＢのアドレスレジスタＡＲＥＧが保持するアドレスＭＩＡＤのビット数は、図４に示す検査部５０のアドレスレジスタＡＲＥＧが保持するアドレスＭＩＡＤのビット数より少ない。また、検査部５０Ｂの比較器ＣＭＰで比較するアドレスＡＤのビット数は、図４に示す検査部５０の比較器ＣＭＰで比較するアドレスのヒット数に比べて少ない。これにより、検査部５０Ｂの回路規模を図４に示す検査部５０の回路規模に比べて削減することができる。図１７に示す検査部５０Ｂを有するプロセッサ１００Ｂの動作は、図１１から図１５に示すプロセッサ１００Ａの動作と同様である。
【０１１９】
なお、図１７に示すアドレスレジスタＡＲＥＧは、Ｌ１キャッシュのインデックスアドレスであるアドレスＡＤ［１２：７］を保持してもよい。この場合、図１７に示す比較部ＣＭＰは、アドレスレジスタＡＲＥＧが保持するアドレスＡＤ［１２：７］と、Ｌ１キャッシュからのコマンドＣＭＤに含まれるアドレスＡＤ［１２：７］とを比較し、比較結果に基づいてウエイト信号ＷＡＩＴを出力する。比較部ＣＭＰがアドレスＡＤ［１２：７］を比較する場合、アドレス１０００とアドレス３０００とは同じアドレスと認識される。このため、アドレスＡＤ［１２：７］を比較するアドレス検査部５０を有する情報処理装置は、後述する図２０および図２１と同様に動作する。
【０１２０】
以上、図１６から図１７に示す実施形態においても、図１から図１５に示す実施形態と同様の効果を得ることができる。すなわち、キャッシュメモリ４００Ｂに誤ったデータを保持させることなく、メインメモリ５００からのデータをキャッシュメモリ４００Ｂに格納する前にプロセッサコア２００にバイパスすることができ、プロセッサコア２００の処理性能を向上することができる。制御部１０Ｂは、検査部５０ＢによるアドレスＡＤの検査で、コヒーレンシが維持されない可能性が判定された場合、書き込み要求に伴う書き込み動作の実行を抑止することで、コヒーレンシを維持することができる。検査部５０Ｂは、ムーブイン処理の完了に同期して生成される消去指示ＤＥＬに基づいてウエイト信号ＷＡＩＴをネゲートすることができ、書き込み要求に伴う書き込み動作の実行の抑止期間を、ムーブイン処理期間に合わせて設定することができる。
【０１２１】
さらに、図１６から図１７に示す実施形態では、検査部５０ＢのアドレスレジスタＡＲＥＧは、Ｌ２キャッシュのインデックスアドレスのビット数と同じビット数のアドレスＭＩＡＤ［１４：７］を保持する。検査部５０Ｂの比較部ＣＭＰは、Ｌ２キャッシュのインデックスアドレスのビット数と同じビット数のアドレスＭＩＡＤ［１４：７］およびアドレスＡＤ［１４：７］を互いに比較する。これにより、検査部５０Ｂの回路規模を図４に示す検査部５０の回路規模に比べて削減することができ、Ｌ２キャッシュを、図９に示すＬ２キャッシュに比べて小さくすることができる。
【０１２２】
図１８は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。図２、図９および図１６に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【０１２３】
図１８に示す情報処理装置ＩＰＥ５は、プロセッサ１００Ｃおよびメインメモリ５００を有する。プロセッサ１００Ｃは、演算処理装置の一例である。プロセッサ１００Ｃは、プロセッサコア２００と、メインメモリ５００に記憶する情報を一時的に保持するキャッシュメモリ３００（Ｌ１キャッシュ）およびキャッシュメモリ４００Ｃ（Ｌ２キャッシュ）とを有する。
【０１２４】
キャッシュメモリ４００Ｃは、制御部１０Ｃ、キャッシュタグ部２０およびキャッシュデータ部３０を有する。キャッシュタグ部２０およびキャッシュデータ部３０は、図２に示すキャッシュタグ部２０およびキャッシュデータ部３０と同一または同様の構成を有する。制御部１０Ｃは、コマンド受信部４０Ｃ、検査部５０Ｃ、データ応答部６０およびアクセス制御部７０を有する。データ応答部６０およびアクセス制御部７０は、図２に示すデータ応答部６０およびアクセス制御部７０と同一または同様の構成を有する。
【０１２５】
コマンド受信部４０Ｃは、図９に示すコマンド受信部４０Ａの機能に加えて、Ｌ１キャッシュからのコマンドＣＭＤに含まれるアクセス要求とウェイ番号ＷＩＤを示す情報を、検査部５０Ｃに出力する機能を有する。以下の説明では、コマンドＣＭＤに含まれるアクセス要求は、単にコマンドＣＭＤとも称される。すなわち、コマンド受信部４０Ｃは、アドレスＡＤとアクセス要求の種別を示すコマンドＣＭＤとウェイ番号ＷＩＤとを検査部５０Ｃに出力する。なお、コマンド受信部４０Ｃは、８ビットのアドレス［１４：７］ではなく、６ビットのアドレス［１２：７］を検査部５０Ｃに出力する。
【０１２６】
検査部５０Ｃは、ムーブイン処理の対象の６ビットのアドレス［１２：７］を比較する機能に加えて、コマンドＣＭＤ（アクセス要求の種別）を比較する機能と、ウェイ番号ＷＩＤを比較する機能とを有する。検査部５０Ｃの例は、図１９に示される。
【０１２７】
図１９は、図１８に示す検査部５０Ｃの一例を示す。検査部５０Ｃは、アドレスレジスタＡＲＥＧ、コマンドレジスタＣＲＥＧ、ウェイレジスタＷＲＥＧ、比較器ＣＭＰ、ＣＭＰＣ、ＣＭＰＷおよびアンド回路ＡＮＤを有する。
【０１２８】
アドレスレジスタＡＲＥＧは、ムーブイン処理を実行するアドレスＭＩＡＤのうち、Ｌ１キャッシュ（図１０）のキャッシュデータ部３１に供給される中位アドレスＭＡＤ［１２：７］に対応する６ビットのアドレス［１２：７］を保持する。比較器ＣＭＰは、コマンド受信部４０Ｃを介してＬ１キャッシュから出力されるアドレスＡＤ［１２：７］がアドレスレジスタＡＲＥＧに保持されたアドレスＭＩＡＤ［１２：７］と同じ場合、ウエイト信号ＷＡＩＴＡをアサートする。比較器ＣＭＰは、アドレスＡＤ［１２：７］がアドレスＭＩＡＤ［１２：７］と異なる場合、ウエイト信号ＷＡＩＴＡをネゲートする。なお、コマンド受信部４０Ｃは、アクセス要求の種類に拘わらず、アクセス要求に含まれるアドレスＡＤ［１２：７］を検査部５０Ｃに出力する。
【０１２９】
コマンドレジスタＣＲＥＧは、プロセッサコア２００で使用するデータ（オペランド）をメインメモリ５００からＬ２キャッシュに格納するムーブイン処理の契機となった読み出し要求を示すコマンドＣＭＤの情報を保持する。コマンドレジスタＣＲＥＧは、読み出し要求をムーブイン処理の実行中に保持するコマンド記憶部の一例である。なお、この実施形態では、Ｌ１キャッシュは、データ（オペランド）用の読み出し要求と、命令用の読み出し要求とを別のコマンドＣＭＤとしてＬ２キャッシュに出力する。そして、プロセッサコア２００がフェッチする命令コードをメインメモリ５００からＬ２キャッシュに格納するムーブイン処理の契機となった読み出し要求を示す情報は、コマンドレジスタＣＲＥＧに保持されない。
【０１３０】
比較器ＣＭＰＣは、コマンド受信部４０Ｃを介してＬ１キャッシュから出力されるコマンドＣＭＤが、コマンドレジスタＣＲＥＧに保持された情報により示されるコマンドＣＭＤ（データ用の読み出し要求ＲＤ）と同じ場合、ウエイト信号ＷＡＩＴＣをアサートする。比較器ＣＭＰＣは、コマンド受信部４０Ｃを介してＬ１キャッシュから出力されるコマンドＣＭＤが、コマンドレジスタＣＲＥＧに保持された情報により示されるコマンドＣＭＤと異なる場合、ウエイト信号ＷＡＩＴＣをネゲートする。比較器ＣＭＰＣは、Ｌ１キャッシュが出力するコマンドＣＭＤを、コマンドレジスタＣＲＥＧに保持された読み出し要求と比較するコマンド比較部の一例である。
【０１３１】
ウェイレジスタＷＲＥＧは、ムーブイン処理の対象のウェイＷＡＹを示すウェイ番号ＷＩＤを保持する。ウェイレジスタＷＲＥＧは、ムーブイン処理の対象のウェイＷＡＹを示すウェイ番号ＷＩＤを、ムーブイン処理の実行中に保持するウェイ記憶部の一例である。比較器ＣＭＰＷは、コマンド受信部４０Ｃを介してＬ１キャッシュから出力されるウェイ番号ＷＩＤが、ウェイレジスタＷＲＥＧに保持された情報により示されるウェイ番号ＷＩＤと同じ場合、ウエイト信号ＷＡＩＴＷをアサートする。比較器ＣＭＰＷは、コマンド受信部４０Ｃを介してＬ１キャッシュから出力されるウェイ番号ＷＩＤが、ウェイレジスタＷＲＥＧに保持された情報により示されるウェイ番号ＷＩＤと異なる場合、ウエイト信号ＷＡＩＴＷをネゲートする。比較器ＣＭＰＷは、Ｌ１キャッシュが出力するコマンドＣＭＤに含まれるウェイ番号ＷＩＤを、ウェイレジスタＷＲＥＧに保持されたウェイ番号ＷＩＤと比較するウェイ比較部の一例である。
【０１３２】
アンド回路ＡＮＤは、ウエイト信号ＷＡＩＴＡ、ＷＡＩＴＣ、ＷＡＩＴＷの全てがアサートされたとき、ウエイト信号ＷＡＩＴをアサートする。また、アンド回路ＡＮＤは、ウエイト信号ＷＡＩＴＡ、ＷＡＩＴＣ、ＷＡＩＴＷの少なくともいずれかがネゲートされたとき、ウエイト信号ＷＡＩＴをネゲートする。すなわち、検査部５０Ｃは、ムーブイン処理の対象のアドレスＭＩＡＤ、コマンドＣＭＤ（ＲＤ）、ウェイ番号ＷＩＤが、Ｌ１キャッシュから出力されるアドレスＡＤ、コマンドＣＭＤ、ウェイ番号ＷＩＤと全て一致した場合、ウエイト信号ＷＡＩＴをアサートする。
【０１３３】
なお、検査部５０Ｃは、アクセス制御部７０Ａから消去指示ＤＥＬを受信した場合、アドレスレジスタＡＲＥＧ、コマンドレジスタＣＲＥＧおよびウェイレジスタＷＲＥＧに保持している情報を消去する。そして、検査部５０Ｃは、アドレスレジスタＡＲＥＧ、コマンドレジスタＣＲＥＧおよびウェイレジスタＷＲＥＧからの情報の消去の完了を示す完了通知ＤＥＬＣをアクセス制御部７０Ａに出力する。
【０１３４】
図２０は、図１８に示す情報処理装置ＩＰＥ５の動作の一例を示す。図１１に示す動作と同一または同様の動作については、詳細な説明は省略する。図２０は、キャッシュメモリ４００Ｃを有するプロセッサ１００Ｃの制御方法を示す。
【０１３５】
図２０の動作が開始されるとき、Ｌ１キャッシュ、Ｌ２キャッシュおよびメインメモリ５００は、図１２の状態（ａ）と同じデータを保持している。図２０（ａ）から図２０（ｋ）までの動作は、読み出し要求が、データ（オペランド）用の読み出し要求であることを除き、図１１（ａ）から図１１（ｋ）までの動作と同様である。
【０１３６】
図１９に示す検査部５０Ｃは、６ビットのアドレス［１２：７］を比較する。読み出し要求に含まれるアドレス３０００のうちの６ビット［１２：７］は、ムーブイン処理の対象アドレス１０００のうち、アドレスレジスタＡＲＥＧに保持される６ビット［１２：７］と一致する。
【０１３７】
ここで、ムーブイン処理の対象の読み出し要求（アドレス１０００）と、その後に発行される読み出し要求（アドレス３０００）とは、データ（オペランド）を読み出すコマンドＣＭＤである。また、ムーブイン処理の対象のウェイ番号ＷＩＤ（ＷＡＹ０）は、読み出し要求（アドレス３０００）に含まれるウェイ番号ＷＩＤ（ＷＡＹ０）と同じである。このため、検査部５０Ｃは、コマンド受信部４０Ｃから受信するデータの読み出し要求（アドレス３０００、ＷＡＹ０）に基づいて、ウエイト信号ＷＡＩＴをアサートする。したがって、コマンド受信部４０Ａは、アドレス３０００を含むデータの読み出し要求を、アクセス制御部７０Ａに出力することなく保持し、アドレス３０００の読み出し要求に対応するＬ２キャッシュからのデータの読み出し動作の実行は抑止される。
【０１３８】
このように、コマンド受信部４０Ｃは、検査部５０Ｃによる検査結果に基づいて、ムーブイン処理が完了するまで、Ｌ１キャッシュからの読み出し要求をアクセス制御部７０に出力することなく保持する。これにより、６ビットのアドレス［１２：７］の値が同じ複数の読み出し要求がＬ１キャッシュから出力される場合にも、複数の読み出し要求に対応する複数のリプレース要求がＬ２キャッシュからＬ１キャッシュに出力されることを抑止することができる。したがって、複数のデータ応答に基づいて複数の書き戻し要求がＬ１キャッシュからＬ２キャッシュに出力されることを抑止することができ、キャッシュデータ部３０のバッファＢＵＦ１がオーバフローすることを抑止することができる。
【０１３９】
次に、ムーブイン処理が完了し、リプレース処理が完了すると（図２０（ｌ））、Ｌ２キャッシュは、ムーブイン処理の完了に基づいて、アドレスレジスタＡＲＥＧ、コマンドレジスタＣＲＥＧおよびウェイレジスタＷＲＥＧが保持している情報を消去する。検査部５０Ｃは、読み出し要求（３０００、ＷＡＹ０）が、アドレスレジスタＡＲＥＧ、コマンドレジスタＣＲＥＧおよびウェイレジスタＷＲＥＧに保持された情報と異なるため、ウエイト信号ＷＡＩＴをネゲートする。コマンド受信部４０Ｃは、ウエイト信号ＷＡＩＴのネゲートに基づいて、アドレス１０００に対応するデータＤ１のムーブイン処理が完了したと判定し、アドレス３０００の読み出し要求をアクセス制御部７０Ａに出力する。アドレス３０００の読み出し要求を受けたＬ２キャッシュは、キャッシュヒットを判定し、リプレース要求（３０００、ＷＡＹ０）をＬ１キャッシュに出力する（図２０（ｍ））。そして、図２０（ｎ）に示すように、Ｌ２キャッシュは、アドレス３０００の読み出し要求のデータ応答（Ｄ３、（３０００））をＬ１キャッシュに出力する。
【０１４０】
図２０（ｍ）から図２０（ｐ）までの動作は、図１１（ｌ）から図１１（ｏ）までの動作と同じである。そして、Ｌ２キャッシュは、アドレス１０００の書き戻し要求に基づく書き戻し処理を実行する（図２０（ｑ））。アドレス１０００の書き戻し要求に基づく書き戻し処理は、ムーブイン処理（１０００、Ｄ１）の完了後に実行されるため、図１１と同様に、Ｌ２キャッシュのコヒーレンシを維持することができる。
【０１４１】
図２１は、図２０に示す動作において、Ｌ１キャッシュおよびＬ２キャッシュが保持する情報の変化の一例を示す。図１４および図１５と同一または同様の処理については、詳細な説明は省略される。図２１は、キャッシュメモリ４００Ｃを有するプロセッサ１００Ｃの制御方法を示す。図２１に示す状態（ｍ）から状態（ｑ）は、図２０に示す符号（ｍ）から符号（ｑ）に対応する。なお、図２０に示す符号（ａ）から符号（ｌ）の状態は、図１２から図１４に示す状態（ａ）から状態（ｌ）と同様である。
【０１４２】
図２１に示す状態（ｍ）では、図１５に示す状態（ｐ）と同様に、Ｌ２キャッシュは、データＤ１のムーブイン処理の完了に基づいて、コマンドレジスタＣＲＥＧおよびウェイレジスタＷＲＥＧが保持している情報を消去する。また、Ｌ２キャッシュは、ムーブイン処理により書き込まれたアドレス１０００のデータＤ１を保持する。図２１に示す状態（ｎ）および状態（ｏ）は、Ｌ２キャッシュがアドレス１０００のデータＤ１を保持していることを除き、図１４に示す状態（ｍ）および状態（ｎ）と同様である。
【０１４３】
そして、状態（ｐ）において、Ｌ１キャッシュは、データＤ３を保持するために追い出したデータＤ１ａ（アドレス１０００）をＬ２キャッシュに書き込むための書き戻し要求ＷＢをＬ２キャッシュに出力する。
【０１４４】
状態（ｑ）において、書き戻し要求ＷＢに含まれるアドレス１０００を検査部５０Ｂが不一致と判定するため、コマンド受信部４０Ａは、書き戻し要求ＷＢをアクセス制御部７０に出力する。アクセス制御部７０は、書き戻し要求ＷＢに基づいて書き戻し処理を実行し、キャッシュデータ部３０に保持しているデータＤ１をデータＤ１ａに置き換える。そして、図２０に示す一連の動作が完了する。
【０１４５】
図２２は、図１８に示すプロセッサ１００Ｃの動作の一例を示す。図２２は、キャッシュメモリ４００Ｃを有するプロセッサ１００Ｃの制御方法を示す。図２２は、ムーブイン処理を実行中の状態を示している。アドレスレジスタＡＲＥＧは、アドレスＡＤ（１０００）のうちのビット［１２：７］の値”１  ００００  ０（２進数）”を保持する。コマンドレジスタＣＲＥＧは、プロセッサコア２００で使用するデータ（オペランド）をメインメモリ５００からＬ２キャッシュに格納するムーブイン処理の契機となった読み出し要求ＲＤ（ＤＴ）を示すコマンドＣＭＤの情報を保持する。ウェイレジスタＷＲＥＧは、ムーブイン処理の対象のウェイＷＡＹ０を示すウェイ番号ＷＩＤを保持する。図２２に下線を付した要素は、図１９に示す検査部５０Ｃで、不一致が検出される要素を示す。
【０１４６】
ムーブイン処理中に、Ｌ２キャッシュがＬ１キャッシュからアドレス３０００、ウェイＷＡＹ０の読み出し要求ＲＤ（ＤＴ）を受信した場合、検査部５０Ｃは、アドレスＡＤ、コマンドＣＭＤおよびウェイ番号ＷＩＤの各々の一致を検出する。なお、アドレス３０００のビット［１２：７］の値は、２進数で”１  ００００  ０”であり、アドレスレジスタＡＲＥＧが保持している値と同じである。検査部５０Ｃは、検出結果に基づいてウエイト信号ＷＡＩＴをアサートする。Ｌ２キャッシュは、Ｌ１キャッシュから受信したデータの読み出し要求ＲＤ（ＤＴ）をムーブイン処理の完了後に開始する。
【０１４７】
ムーブイン処理中に、Ｌ２キャッシュがＬ１キャッシュからアドレス３０００、ウェイＷＡＹ１の読み出し要求ＲＤ（ＤＴ）を受信した場合、検査部５０Ｃは、ウェイ番号ＷＩＤの不一致を検出する。検査部５０Ｃは、検出結果に基づいてウエイト信号ＷＡＩＴをネゲートし、Ｌ２キャッシュは、Ｌ１キャッシュから受信したデータの読み出し要求ＲＤ（ＤＴ）をムーブイン処理中に開始する。
【０１４８】
ムーブイン処理中に、Ｌ２キャッシュがＬ１キャッシュからアドレス９１０００、ウェイＷＡＹ０の読み出し要求ＲＤ（ＩＮＳ）を受信した場合、検査部５０Ｃは、コマンドＣＭＤの不一致を検出する。なお、読み出し要求ＲＤ（ＩＮＳ）は、プロセッサコア２００がフェッチする命令コードを読み出すためのコマンドＣＭＤである。検査部５０Ｃは、検出結果に基づいてウエイト信号ＷＡＩＴをネゲートし、Ｌ２キャッシュは、Ｌ１キャッシュから受信したデータの読み出し要求ＲＤ（ＩＮＳ）をムーブイン処理中に開始する。
【０１４９】
ムーブイン処理中に、Ｌ２キャッシュがＬ１キャッシュからアドレス２０００、ウェイＷＡＹ０の読み出し要求ＲＤ（ＤＴ）を受信した場合、検査部５０Ｃは、アドレスＡＤの不一致を検出する。なお、アドレス２０００のビット［１２：７］の値は、２進数で”０  ００００  ０”であり、アドレスレジスタＡＲＥＧが保持している値（２進数で”１  ００００  ０）”と異なる。検査部５０Ｃは、検出結果に基づいてウエイト信号ＷＡＩＴをネゲートし、Ｌ２キャッシュは、Ｌ１キャッシュから受信したデータの読み出し要求ＲＤ（ＤＴ）をムーブイン処理中に開始する。
【０１５０】
図２２に示すように、Ｌ１キャッシュから受信したアクセス要求に含まれる情報が、検査部５０Ｃが保持する情報と一致する場合、Ｌ２キャッシュは、アクセス要求に基づく処理をムーブイン処理の完了後に開始する。一方、Ｌ１キャッシュから受信したアクセス要求に含まれる情報の少なくともいずれかが、検査部５０Ｃが保持する情報と一致しない場合、Ｌ２キャッシュは、アクセス要求に基づく処理をムーブイン処理中に開始する。
【０１５１】
このように、検査部５０Ｃにより、アドレスだけなく、コマンドＣＭＤおよびウェイ番号ＷＩＤを比較することで、ムーブイン処理が完了するまで実行が待たされるアクセス要求の頻度を下げることができる。この結果、アドレスのみを比較する場合に比べて、プロセッサ１００Ｃの処理性能を向上することができる。すなわち、Ｌ２キャッシュのキャッシュデータ部３０において、ムーブイン処理の対象でないデータ領域に対するアクセスが、ムーブイン処理の完了後に開始される頻度を、図１６に示す実施形態に比べて下げることができる。
【０１５２】
以上、図１８から図２２に示す実施形態においても、図１から図１７に示す実施形態と同様の効果を得ることができる。すなわち、キャッシュメモリ４００Ｃに誤ったデータを保持させることなく、メインメモリ５００からのデータをキャッシュメモリ４００Ｃに格納する前にプロセッサコア２００にバイパスすることができ、プロセッサコア２００の処理性能を向上することができる。検査部５０Ｃは、ムーブイン処理の完了に同期して生成される消去指示ＤＥＬに基づいてウエイト信号ＷＡＩＴをネゲートすることができ、アクセス要求のアクセス制御部７０への出力を抑止する期間を、ムーブイン処理期間に合わせて設定することができる。
【０１５３】
さらに、図１８から図２２に示す実施形態では、制御部１０Ｃは、アドレスＭＩＡＤの比較結果と、コマンドＣＭＤの比較結果と、ウェイ番号ＷＩＤの比較結果とが全て一致を示す場合、ムーブイン処理が完了するまで、コマンドＣＭＤの実行を抑止する。これにより、アドレスのみを比較する場合に比べて、ムーブイン処理の対象でないデータ領域に対するアクセスがムーブイン処理により待たされる確率を下げることができる。この結果、アドレスのみを比較する場合に比べて、プロセッサ１００Ｃの処理性能を向上することができる。
【０１５４】
また、アドレス［１２：７］の値が同じ複数の読み出し要求がＬ１キャッシュから出力される場合にも、複数の読み出し要求に対応する複数のデータ応答がＬ２キャッシュからＬ１キャッシュに出力されることを抑止することができる。これにより、複数のデータ応答に基づいて複数の書き戻し要求がＬ１キャッシュからＬ２キャッシュに出力されることを抑止することができ、キャッシュデータ部３０のバッファＢＵＦ１がオーバフローすることを抑止することができる。
【０１５５】
さらに、検査部５０Ｃは、Ｌ１キャッシュのインデックスアドレスのビット数と同じビット数のアドレスＭＩＡＤ［１２：７］およびアドレスＡＤ［１２：７］を互いに比較する。これにより、検査部５０Ｃの回路規模を、アドレスの全ビットを比較する場合に比べて削減することができる。
【０１５６】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と、前記演算処理部と主記憶装置との間に接続される第１のキャッシュメモリとを含む演算処理装置において、
前記第１のキャッシュメモリは、
前記主記憶装置が記憶するデータのうちの一部を前記主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第１のブロック領域を含む第１のデータメモリ部と、
前記メモリアクセス要求に含まれるアクセスアドレスが示す前記主記憶装置の記憶領域に記憶されるデータを前記第１のデータメモリ部が記憶しているかを判定する判定部と、
前記アクセスアドレスを前記判定部に出力し、前記判定部による判定結果に基づいて、前記第１のデータメモリ部または前記主記憶装置のいずれかにアクセスするとともに、前記主記憶装置から読み出される読み出しデータを前記複数の第１のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを前記演算処理部に転送するバイパス処理を実行し、前記演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの前記対象ブロック領域への書き込みを、前記ムーブイン処理の実行中に抑止する制御部を有することを特徴とする演算処理装置。
（付記２）
前記制御部は、
前記ムーブイン処理の実行中に、前記ムーブイン処理の対象アドレスを保持するアドレス記憶部と、
前記他のメモリアクセス要求に含まれるアクセスアドレスを、前記アドレス記憶部に保持された前記対象アドレスと比較するアドレス比較部を有し、
前記制御部は、前記アドレス比較部による比較結果が一致を示す場合、前記書き込みデータの前記対象ブロック領域への書き込みを抑止することを特徴とする付記１記載の演算処理装置。
（付記３）
前記制御部は、前記第１のデータメモリ部および前記主記憶装置へのアクセスを制御するとともに、前記ムーブイン処理の完了に基づいて、前記アドレス記憶部に保持された前記対象アドレスの消去を前記アドレス記憶部に指示するアクセス制御部を有することを特徴とする付記２記載の演算処理装置。
（付記４）
前記アドレス記憶部は、前記メモリアクセス要求に含まれるアクセスアドレスのビットの一部を含むアドレスであって、前記複数の第１のブロック領域を識別する第１のインデックスアドレスを前記対象アドレスの代わりに記憶し、
前記アドレス比較部は、前記他のメモリアクセス要求に含まれるアクセスアドレスのうち前記第１のインデックスアドレスに対応するビット値を、前記アドレス記憶部に記憶された前記第１のインデックスアドレスの値と比較することを特徴とする付記２または付記３記載の演算処理装置。
（付記５）
前記判定部は、
前記複数の第１のブロック領域に対応する複数のタグ領域を含み、前記複数の第１のブロック領域のそれぞれに格納されたデータの前記主記憶装置における記憶位置を特定するタグアドレスを前記複数のタグ領域に保持するタグメモリ部と、
前記第１のインデックスアドレスに基づいて前記複数のタグ領域のいずれかから出力されるタグアドレスと、前記メモリアクセス要求に含まれるアクセスアドレスのうち前記タグアドレスに対応する部分アドレスとを比較する部分アドレス比較部を有することを特徴とする付記４記載の演算処理装置。
（付記６）
前記演算処理装置はさらに、
前記演算処理部と前記第１のキャッシュメモリとの間に接続される第２のキャッシュメモリを有し、
前記第２のキャッシュメモリは、前記第１のキャッシュメモリが記憶するデータのうち一部のデータを前記データブロック毎に記憶する複数の第２のブロック領域を含む第２のデータメモリ部を有し、
前記アドレス記憶部は、前記メモリアクセス要求に含まれるアクセスアドレスのビットの一部を含むアドレスであって、前記複数の第２のブロック領域を識別する第２のインデックスアドレスを前記対象アドレスの代わりに記憶し、
前記アドレス比較部は、前記第２のキャッシュメモリから出力されるアクセスアドレスのうち前記第２のインデックスアドレスに対応するビット値を、前記アドレス記憶部に記憶された前記第２のインデックスアドレスの値と比較することを特徴とする付記２または付記３記載の演算処理装置。
（付記７）
前記制御部は、
前記第２のキャッシュメモリが出力するメモリアクセス要求のうちの読み出し要求を、前記読み出し要求に基づく前記ムーブイン処理の実行中に保持するコマンド記憶部と、
前記第２のキャッシュメモリが出力する他のメモリアクセス要求を、前記コマンド記憶部に保持された読み出し要求と比較するコマンド比較部を有し、
前記アドレス比較部による比較結果が一致を示し、前記コマンド比較部による比較結果が一致を示す場合、前記第２のキャッシュメモリが出力する他のメモリアクセス要求である読み出し要求に基づく読み出し動作の実行を抑止することを特徴とする付記６記載の演算処理装置。
（付記８）
前記第１のデータメモリ部は、前記複数の第１のブロック領域を各々含む複数のウェイを有し、
前記制御部は、
前記対象ブロック領域を含むウェイを示すウェイ番号を、前記ムーブイン処理の実行中に保持するウェイ記憶部と、
前記第２のキャッシュメモリが出力する他のメモリアクセス要求に含まれるウェイ番号を、前記ウェイ記憶部に保持されたウェイ番号と比較するウェイ比較部を有し、
前記アドレス比較部による比較結果が一致を示し、前記コマンド比較部による比較結果が一致を示し、前記ウェイ比較部による比較結果が一致を示す場合、前記第２のキャッシュメモリが出力する他のメモリアクセス要求に含まれる読み出し要求に基づく読み出し動作の実行を抑止することを特徴とする付記７記載の演算処理装置。
（付記９）
演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と前記演算処理部に接続された第１のキャッシュメモリとを含む演算処理装置と、前記第１のキャッシュメモリを介して前記演算処理部に接続された主記憶装置を有する情報処理装置において、
前記第１のキャッシュメモリは、
前記主記憶装置が記憶するデータのうちの一部を前記主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第１のブロック領域を含む第１のデータメモリ部と、
前記メモリアクセス要求に含まれるアクセスアドレスが示す前記主記憶装置の記憶領域に記憶されるデータを前記第１のデータメモリ部が記憶しているかを判定する判定部と、
前記アクセスアドレスを前記判定部に出力し、前記判定部による判定結果に基づいて、前記第１のデータメモリ部または前記主記憶装置のいずれかにアクセスするとともに、前記主記憶装置から読み出される読み出しデータを前記複数の第１のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを前記演算処理部に転送するバイパス処理を実行し、前記演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの前記対象ブロック領域への書き込みを、前記ムーブイン処理の実行中に抑止する制御部を有することを特徴とする情報処理装置。
（付記１０）
演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と、前記演算処理部と主記憶装置との間に接続される第１のキャッシュメモリとを含み、前記第１のキャッシュメモリが、前記主記憶装置が記憶するデータのうちの一部を前記主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第１のブロック領域を含む第１のデータメモリ部を有する演算処理装置の制御方法において、
前記第１のキャッシュメモリが、
前記メモリアクセス要求に含まれるアクセスアドレスが示す前記主記憶装置の記憶領域に記憶されるデータを前記第１のデータメモリ部が記憶しているかを判定し、
判定結果に基づいて、前記第１のデータメモリ部または前記主記憶装置のいずれかにアクセスし、
前記主記憶装置から読み出される読み出しデータを前記複数の第１のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを前記演算処理部に転送するバイパス処理を実行し、
前記演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの前記対象ブロック領域への書き込みを、前記ムーブイン処理の実行中に抑止することを特徴とする演算処理装置の制御方法。
【０１５７】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１５８】
１…演算処理装置；２…演算処理部；３…キャッシュメモリ；４…制御部；５…判定部；６…データメモリ部；７…主記憶装置；１０、１０Ａ、１０Ｂ、１０Ｃ…制御部；２０、２１…キャッシュタグ部；３０、３１…キャッシュデータ部；４０、４０Ａ、４０Ｃ…コマンド受信部；５０、５０Ｂ、５０Ｃ…検査部；６０…データ応答部；７０…アクセス制御部；１００、１００Ａ、１００Ｂ、１００Ｃ…プロセッサ；２００…プロセッサコア；３００（Ｌ１）…キャッシュメモリ；４００、４００Ａ、４００Ｂ、４００Ｃ（Ｌ２）…キャッシュメモリ；５００…メインメモリ；ＡＲＥＧ…アドレスレジスタ；ＢＵＦ１、ＢＵＦ２…バッファ部；ＣＭＰ、ＣＭＰＣ、ＣＭＰＷ…比較器；ＣＲＥＧ…コマンドレジスタ；ＤＥＬ…消去指示；ＤＥＬＣ…完了通知；ＤＭＥＭ…記憶部；ＩＰＥ１、ＩＰＥ２、ＩＰＥ３、ＩＰＥ４、ＩＰＥ５…情報処理装置；ＴＭＥＭ…記憶部；ＷＡＩＴ…ウエイト信号；ＷＡＹ…ウェイ；ＷＲＥＧ…ウェイレジスタ
【図１】
0006451475.tif 000002
【図２】
0006451475.tif 000003
【図３】
0006451475.tif 000004
【図４】
0006451475.tif 000005
【図５】
0006451475.tif 000006
【図６】
0006451475.tif 000007
【図７】
0006451475.tif 000008
【図８】
0006451475.tif 000009
【図９】
0006451475.tif 000010
【図１０】
0006451475.tif 000011
【図１１】
0006451475.tif 000012
【図１２】
0006451475.tif 000013
【図１３】
0006451475.tif 000014
【図１４】
0006451475.tif 000015
【図１５】
0006451475.tif 000016
【図１６】
0006451475.tif 000017
【図１７】
0006451475.tif 000018
【図１８】
0006451475.tif 000019
【図１９】
0006451475.tif 000020
【図２０】
0006451475.tif 000021
【図２１】
0006451475.tif 000022
【図２２】
0006451475.tif 000023