(57)【要約】【課題】階層キャッシュメモリにおいて包含関係を維持する場合における、回路の増加と制御の複雑化、を解決する。【解決手段】本発明のプロセッサは上位キャッシュメモリと下位キャッシュメモリとを有し、上位キャッシュメモリに記憶されているデータが下位キャッシュメモリに含まれる状態であるインクルーシブ状態とされる階層キャッシュメモリと、所定のデータへのアクセス時に、上位キャッシュメモリと下位キャッシュメモリとに対するキャッシュヒット／ミスを判定するキャッシュヒット判定部と、上位キャッシュメモリと下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、インクルーシブ状態となるよう制御する制御部と、を備える。【選択図】図１２
2018163571.tif 000002
【特許請求の範囲】
【請求項１】
上位キャッシュメモリと下位キャッシュメモリとを有し、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態とされる階層キャッシュメモリと、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定するキャッシュヒット判定部と、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記インクルーシブ状態となるよう制御する制御部と、
を備えた、
プロセッサ。
【請求項２】
請求項１に記載のプロセッサであって、
前記キャッシュヒット判定部は、前記下位キャッシュメモリがキャッシュミスの場合に、前記上位キャッシュメモリをキャッシュミスと判定する、
プロセッサ。
【請求項３】
請求項２に記載のプロセッサであって、
前記キャッシュヒット判定部は、前記下位キャッシュメモリがキャッシュミスである場合に、前記上位キャッシュメモリがキャッシュヒットであっても当該上位キャッシュメモリをキャッシュミスと判定する、
プロセッサ。
【請求項４】
請求項１乃至３のいずれかに記載のプロセッサであって、
前記制御部は、前記上位キャッシュメモリ及び前記下位キャッシュメモリがキャッシュミスと判定された場合に、前記下位キャッシュメモリよりもさらに下位のメモリに格納されているデータを用いて、前記上位キャッシュメモリと前記下位キャッシュメモリとが前記インクルーシブ状態とするよう制御する、
プロセッサ。
【請求項５】
請求項１乃至４のいずれかに記載のプロセッサであって、
前記制御部は、前記上位キャッシュメモリがキャッシュミスであり、前記下位キャッシュメモリがキャッシュヒットであると判定された場合に、前記下位キャッシュメモリに記憶されているデータを前記上位キャッシュメモリに格納して前記インクルーシブ状態とするよう制御する、
プロセッサ。
【請求項６】
請求項１乃至５のいずれかに記載のプロセッサであって、
前記上位キャッシュメモリに記憶されているデータを無効にする手段を設けずに、前記下位キャッシュメモリに記憶されているデータを無効にする無効化手段を設けた、
プロセッサ。
【請求項７】
請求項１乃至６のいずれかに記載のプロセッサであって、
前記上位キャッシュメモリに、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定する前記キャッシュヒット判定部を備えた、
プロセッサ。
【請求項８】
上位キャッシュメモリと下位キャッシュメモリとを有する階層キャッシュメモリに対して、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態となるよう制御するキャッシュメモリ制御装置であって、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定するキャッシュヒット判定部と、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記上位キャッシュメモリと前記下位キャッシュメモリとが前記インクルーシブ状態となるよう制御する制御部と、
を備えた、
キャッシュメモリ制御装置。
【請求項９】
上位キャッシュメモリと下位キャッシュメモリとを有する階層キャッシュメモリに対して、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態となるよう制御するキャッシュメモリ制御装置に、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定するキャッシュヒット判定部と、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記上位キャッシュメモリと前記下位キャッシュメモリとが前記インクルーシブ状態となるよう制御する制御部と、
を実現させるためのプログラム。
【請求項１０】
上位キャッシュメモリと下位キャッシュメモリとを有し、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態とされる階層キャッシュメモリを備えたプロセッサによるキャッシュメモリ制御方法であって、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定し、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記インクルーシブ状態となるよう制御する、
キャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサにかかり、特に、階層キャッシュメモリを備えたプロセッサに関する。
【背景技術】
【０００２】
近年、半導体プロセスの微細化により、ＬＳＩに搭載できる論理回路は飛躍的に増加し、複数コアを実装するマルチコアプロセッサが一般的になっている。マルチコアプロセッサでは、複数コアがメモリを共有し、キャッシュメモリを持つプロセッサの場合に、キャッシュとメモリのデータの整合性を考慮する必要がある。
【０００３】
そして、データの整合性を保つために、ハードウェアによりデータの整合性を維持するプロセッサ、ソフトウェアによりデータの整合性を維持するプロセッサ、ハードウェアとソフトウェアを組み合わせてデータの整合性を維持するプロセッサ、が存在する。ハードウェアによりデータの整合性を維持するプロセッサは、ソフトウェア開発の容易性やソフトウェアによるキャッシュフラッシュ制御が不要のため高性能などの利点があり広く用いられている。
【０００４】
ただし、コア数の増加とメモリレイテンシの隠ぺいをするためにキャッシュ階層が深くなる状況下で、ハードウェアによるデータの整合性を維持する制御回路の増加と複雑化が課題になっていた。特に、ベクトルプロセッサでは、ベクトルストア命令の場合に複数アドレスに対してキャッシュを無効化する必要があり、ハードウェアによるデータの整合性を維持する制御回路の問題が深刻になっていた。
【０００５】
具体的に、図１に示すような階層キャッシュメモリを備えるプロセッサにおいて、コア０（１００）、コア１（１１０）内にＬ１キャッシュ１０１，１１１とＬ２キャッシュ１０２，１１２を持ち、コア間でＬ３キャッシュ１２０を共有する構成を用いて説明する。ここで、Ｌ１キャッシュのデータはＬ２キャッシュに含まれ、Ｌ２キャッシュのデータはＬ３キャッシュに含まれるインクルーシブ・キャッシュを実現する構成であるとこととする。各キャッシュ間で包含関係を維持するためには、キャッシュ無効化制御が必要となる。
【０００６】
なお、上述したＬ１キャッシュとＬ２キャッシュのような階層キャッシュメモリに関する技術として、特許文献１，２に開示されている技術がある。特許文献１，２では、２つの階層キャッシュメモリに対して同時にキャッシュヒット／ミスの判定を行っている。
【０００７】
ここで、図１に示したプロセッサにおいて、キャッシュ制御を含めた詳細な構成を図２に示す。かかる構成において、Ｌ２キャッシュとＬ３キャッシュ間の包含関係を維持するためには、以下の制御が必要になる。
【０００８】
まず、Ｌ３キャッシュ３００は、各コア（コア０（２００，コアｎ（ｎ２００）））のＬ２キャッシュ２４０が保持しているデータの情報であるＬ２キャッシュ保持情報３０５を持つ。そして、Ｌ３キャッシュ３００の更新時に、各コア２００，ｎ２００のＬ２キャッシュ２４０が、該当データを保持しているかをチェックし、データを保持していた場合には、無効化制御部３０８が各コア２００，ｎ２００に無効化要求を出力する。そして、各コア２００，ｎ２００は、Ｌ２キャッシュ無効化制御部２４７がＬ２キャッシュアドレスアレイ２４２を無効化する。なお、Ｌ３キャッシュの更新時とは、例えば、ストア命令によるＬ３キャッシュデータアレイ３０３のデータ更新時、あるいは、Ｌ３キャッシュアドレスアレイ３０２のＷＡＹが全て使用中で１ＷＡＹ分の追い出しが必要な時、などである。
【０００９】
さらに、上記構成において、Ｌ１キャッシュ２２０とＬ２キャッシュ２４０間の包含関係を維持するためには、以下の制御が必要になる。まず、Ｌ２キャッシュ無効化制御部２４７がＬ２キャッシュ２４０の無効化情報を出力する。そして、ヒット・ミス判定部２２６が、Ｌ１キャッシュアドレスアレイコピー２２３を利用して、ヒット・ミス判定を行う。ヒットしていた場合は、Ｌ１キャッシュ無効化制御部２２８がＬ１キャッシュアドレスアレイ２２２を無効化する。ここで、Ｌ１キャッシュアドレスアレイのコピー２２３を利用したのは、使用頻度の高いＬ１キャッシュアドレスアレイ２２２に対して性能低下させずにＬ１キャッシュ２２０のヒット・ミス判定を行い無効化するためである。
【００１０】
その他には、Ｌ１キャッシュアドレスアレイ２２２のマルチポート化といった実装方法が考えられる。さらには、Ｌ１キャッシュアドレスアレイ２２２のリード要求の調停（リクエスト制御部と無効化の２つのリード要求が存在）を行う（１つのＬ１キャッシュアドレスアレイを調停して利用するため性能は低下）、という実装方法も考えられる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００２−００７３７３号公報
【特許文献２】特開２０００−００３３０８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述したＬ１キャッシュとＬ２キャッシュとのような階層キャッシュメモリ間で包含関係を維持する場合、Ｌ１キャッシュとＬ２キャッシュの両方に対して無効化制御回路を実装しているため、回路の増加とキャッシュ制御の複雑化、という問題が生じる。
【００１３】
また、上記の一般的なプロセッサに用いられるキャッシュの無効化制御以外に、ベクトルプロセッサでは、ベクトルストア命令を用いて同時に複数のアドレスにストアする。この時、ベクトル命令でアクセスされないキャッシュを備える場合（図１のＬ１キャッシュとＬ２キャッシュが対象、Ｌ３キャッシュはベクトル命令がアクセス可能とする）は、キャッシュのコヒーレンシを維持するため、ベクトルストア命令の処理と同時にキャッシュの無効化（Ｌ１キャッシュとＬ２キャッシュが対象）を行う必要がある。特に、ベクトルプロセッサにおけるキャッシュ無効化制御は、並行して複数のアドレスに対して実行する必要がある。すると、ベクトルプロセッサにおいてもＬ１キャッシュとＬ２キャッシュの両方に対して無効化制御回路を実装することとなり、大幅な回路の増加とキャッシュ制御の複雑化が一般プロセッサ以上にて問題になる。
【００１４】
このため、本発明の目的は、上述した課題である、階層キャッシュメモリにおいて包含関係を維持する場合における、回路の増加と制御の複雑化、という問題を解決することにある。
【課題を解決するための手段】
【００１５】
本発明の一形態であるプロセッサは、
上位キャッシュメモリと下位キャッシュメモリとを有し、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態とされる階層キャッシュメモリと、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定するキャッシュヒット判定部と、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記インクルーシブ状態となるよう制御する制御部と、
を備えた、
という構成をとる。
【００１６】
また、本発明の一形態であるキャッシュメモリ制御装置は、
上位キャッシュメモリと下位キャッシュメモリとを有する階層キャッシュメモリに対して、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態となるよう制御するキャッシュメモリ制御装置であって、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定するキャッシュヒット判定部と、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記上位キャッシュメモリと前記下位キャッシュメモリとが前記インクルーシブ状態となるよう制御する制御部と、
を備えた、
という構成をとる。
【００１７】
また、本発明の一形態であるプログラムは、
上位キャッシュメモリと下位キャッシュメモリとを有する階層キャッシュメモリに対して、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態となるよう制御するキャッシュメモリ制御装置に、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定するキャッシュヒット判定部と、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記上位キャッシュメモリと前記下位キャッシュメモリとが前記インクルーシブ状態となるよう制御する制御部と、
を実現させる、
という構成をとる。
【００１８】
また、本発明の一形態であるキャッシュメモリ制御方法は、
上位キャッシュメモリと下位キャッシュメモリとを有し、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態とされる階層キャッシュメモリを備えたプロセッサによるキャッシュメモリ制御方法であって、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定し、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記インクルーシブ状態となるよう制御する、
という構成をとる。
【発明の効果】
【００１９】
本発明は、以上のように構成されることにより、階層キャッシュメモリにおいて包含関係を維持する場合における、回路の増加と制御の複雑化を抑制することができる。
【図面の簡単な説明】
【００２０】
【図１】階層キャッシュメモリを備えるプロセッサと共有キャッシュとメモリとの構成を示すブロック図である。
【図２】背景技術におけるプロセッサを含む情報処理装置の構成を示すブロック図である。
【図３】本発明の実施形態１におけるプロセッサを含む情報処理装置の構成を示すブロック図である。
【図４】本発明における各キャッシュのアドレスの一例を示す図である。
【図５】本発明におけるキャッシュのアドレスアレイ及びデータアレイの構成の一例を示す図である。
【図６】本発明におけるキャッシュ毎のヒット・ミス判定の一例を示す図である。
【図７】本発明のロード命令時における、各キャッシュのヒット・ミス判定と、各キャッシュの動作の一覧を示す図である。
【図８】背景技術のロード命令時における、各キャッシュのヒット・ミス判定と、各キャッシュの動作の一覧を示す図である。
【図９】本発明のストア命令時における、各キャッシュのヒット・ミス判定と、各キャッシュの動作の一覧を示す図である。
【図１０】背景技術のストア命令時における、各キャッシュのヒット・ミス判定と、各キャッシュの動作の一覧を示す図である。
【図１１】本発明の実施形態１におけるプロセッサを含む情報処理装置の他の構成を示すブロック図である。
【図１２】本発明の実施形態２におけるプロセッサの構成を示すブロック図である。
【発明を実施するための形態】
【００２１】
＜実施形態１＞
本発明の第１の実施形態を、図１及び図３乃至図１１を参照して説明する。図１及び図３乃至図６は、プロセッサを含む情報処理装置の構成を説明するための図である。図７乃至図１０は、プロセッサの動作を説明するための図である。図１１は、情報処理装置の他の構成例を示す図である。
【００２２】
［構成］
本発明は、図１に示すように、コア０（１００）からコアｎ（１１０）のように複数のコアを有するプロセッサと、Ｌ３キャッシュ１２０と、メモリ１３０と、を備えた情報処理装置にて実現される。そして、各コア１００，１１０は、それぞれ、上位キャッシュメモリであるＬ１キャッシュ１０１，１１１と、下位キャッシュメモリであるＬ２キャッシュ１０２，１１２と、を有する階層キャッシュメモリを備えている。
【００２３】
なお、上記Ｌ３キャッシュ１２０は、Ｌ１キャッシュ及びＬ２キャッシュよりもさらに下位に位置し、コア１００，１１０間で共有されるキャッシュメモリである。また、メモリ１３０は、情報処理装置の主記憶装置であり、Ｌ３キャッシュ１２０のさらに下位に位置している。
【００２４】
そして、本発明では、特に、Ｌ１キャッシュ１０１，１１１のデータはＬ２キャッシュ１０２，１１２に含まれ、Ｌ２キャッシュ１０２，１１２のデータはＬ３キャッシュ１２０に含まれるインクルーシブ・キャッシュ（インクルーシブ状態）（インクルージョン・キャッシュとも言う）を実現する構成であるとこととする。
【００２５】
図３を参照して、上述した情報処理装置のさらに詳細な構成を説明する。なお、図３では、図１におけるコア１００，１１０を符号５００，ｎ５００で示し、図１におけるＬ１キャッシュ１０１，１１１を符号５２０で示し、図１におけるＬ２キャッシュ１０２，１１２を符号５４０で示す。また、図３では、図１におけるＬ３キャッシュ１２０を符号６００で示し、図１におけるメモリ１３０を符号６２０で示す。
【００２６】
上記コア０（５００）は、命令制御部５０１、演算制御部５０２、Ｌ１キャッシュ５２０、Ｌ２キャッシュ５４０を有する。Ｌ１キャッシュ５２０は、リクエスト制御部５２１、Ｌ１キャッシュアドレスアレイ（以下、アドレスアレイをＡＡと呼ぶ）５２２、Ｌ１キャッシュデータアレイ（以下、データアレイをＤＡと呼ぶ）５２３、リプライ制御部５２４、ヒット・ミス判定部５２５、リクエスト生成制御部５２６を有する。L２キャッシュ５４０は、リクエスト制御部５４１、Ｌ２キャッシュＡＡ５４２、Ｌ２キャッシュＤＡ５４３、リプライ制御部５４４、リクエスト生成制御部５４５、Ｌ２キャッシュ無効化制御部５４６を有する。
【００２７】
なお、コアｎ（ｎ５００）は、上記コアと同様の構成を有する。つまり、図３では図示を省略するが、コアｎは、命令制御部、演算制御部、Ｌ１キャッシュ、Ｌ２キャッシュを有する。そして、コアｎ内のＬ１キャッシュは、リクエスト制御部、Ｌ１キャッシュＡＡ、Ｌ１キャッシュＤＡ、リプライ制御部、ヒット・ミス判定部、リクエスト生成制御部を有する。コアｎ内のＬ２キャッシュは、リクエスト制御部、Ｌ２キャッシュＡＡ、Ｌ２キャッシュＤＡ、リプライ制御部、リクエスト生成制御部、Ｌ２キャッシュ無効化制御部を有する。
【００２８】
上記Ｌ３キャッシュ６００は、リクエスト制御部６０１、Ｌ３キャッシュＡＡ６０２、Ｌ３キャッシュＤＡ６０３、リプライ制御部６０４、Ｌ２キャッシュ保持情報６０５、ヒット・ミス判定部６０６、リクエスト生成制御部６０７、無効化制御部６０８を有する。
【００２９】
また、それぞれの構成要素は、図３で示す各信号線によって接続されている。但し、上記コアやＬ１キャッシュ、Ｌ２キャッシュ、Ｌ３キャッシュは、図３に示す構成であることに限定されず、他の構成要素を備えていてもよい。また、各構成要素の接続関係は、図３で示すものに限定されない。
【００３０】
また、図３で示した各構成要素は、演算装置にプログラムが組み込まれることで実現される。
【００３１】
上記構成の機能の概要について説明する。上述したように、コア５００内に装備される各制御部が、Ｌ１キャッシュ５２０のデータはＬ２キャッシュ５４０に含まれるインクルーシブ・キャッシュ（インクルーシブ状態）を実現するよう制御する。これに加えて、Ｌ２キャッシュ５４０のデータはＬ３キャッシュ６００に含まれる。
【００３２】
そして、所定のデータへのアクセス時つまりＬ１キャッシュへのアクセス時には、ヒット・ミス判定部５２５（キャッシュヒット判定部）が、Ｌ１キャッシュアドレスアレイ５２２とＬ２キャッシュアドレスアレイ５４２の両方を検索して、キャッシュヒットかキャッシュミスかの判定を行う。そして、Ｌ１キャッシュアドレスアレイ５２２とＬ２キャッシュアドレスアレイ５４２とに対するそれぞれのキャッシュヒット・ミスの判定結果に基づいて、各制御部は以下のように動作する。
【００３３】
まず、Ｌ１キャッシュ＝ヒット、及び、Ｌ２キャッシュ＝ヒットの場合は、Ｌ１キャッシュ＝ヒットとして動作する。このとき、Ｌ１キャッシュデータアレイからデータをリードして利用する。Ｌ２キャッシュデータアレイは使用しない。
【００３４】
また、Ｌ１キャッシュ＝ヒット、及び、Ｌ２キャッシュ＝ミスの場合は、Ｌ２キャッシュのみ無効化された後で、Ｌ１キャッシュにアクセスしたケースになる。このとき、Ｌ１キャッシュとＬ２キャッシュの包含関係は、Ｌ１キャッシュのデータがＬ２キャッシュに含まれていないため、一時的にノン・インクルーシブ状態になっている。この状態では、Ｌ２キャッシュに有効なデータがないため、Ｌ１キャッシュに存在しているデータを無効なデータとして扱う。そのため、Ｌ１キャッシュ＝ミス及びＬ２キャッシュ＝ミスとして動作する。このため、Ｌ１キャッシュデータアレイとＬ２キャッシュデータアレイにＬ３キャッシュからのリプライデータを登録する。この動作により、Ｌ１キャッシュとＬ２キャッシュの包含関係は、インクルーシブ状態に戻る。
【００３５】
また、Ｌ１キャッシュ＝ミス、及び、Ｌ２キャッシュ＝ヒットの場合は、Ｌ１キャッシュ＝ミス及びＬ２キャッシュ＝ヒットとして動作する。このとき、Ｌ２キャッシュデータアレイからデータをリードして、Ｌ１キャッシュデータアレイに登録する。
【００３６】
また、Ｌ１キャッシュ＝ミス、及び、Ｌ２キャッシュ＝ミスの場合は、Ｌ１キャッシュ＝ミス及びＬ２キャッシュ＝ミスとして動作する。このとき、Ｌ１キャッシュデータアレイとＬ２キャッシュデータアレイにＬ３キャッシュからのリプライデータを登録する。
【００３７】
上述した機能により、図２を参照して説明した背景技術に存在したＬ１キャッシュとＬ２キャッシュ間の包含関係を維持するためのＬ１キャッシュ無効化制御部２１８やこれに関連する構成が不要になる。つまり、本発明では、背景技術と比較して、図３に示すように、Ｌ１キャッシュ５２０にはＬ１キャッシュの無効化制御部を設けずに、Ｌ２キャッシュ５４０のみにＬ２キャッシュ無効化制御部５４６（無効化手段）を設けている。この場合、Ｌ２キャッシュのみ無効化されるケースが発生し、これにより、Ｌ１キャッシュとＬ２キャッシュの包含関係は、一時的なノン・インクルーシブ状態になる可能性がある。ところが、本発明では、上述したように、Ｌ１キャッシュのデータを実際に利用するためのアクセス時に、上記ヒット・ミス判定を行うことによりインクルーシブ状態に戻るため、Ｌ１キャッシュ５２０とＬ２キャッシュ５４０間の包含関係を維持できる。その結果、回路の増加と制御の複雑化を抑制することができる。
【００３８】
［動作］
次に、上述した構成の動作について説明する。以下に説明する動作では、メモリやキャッシュを利用する命令である「ロード命令」と「ストア命令」が出された場合を説明する。また、一例として、各キャッシュ５２０，５４０，６００は以下の構成であることとする。
【００３９】
・Ｌ１キャッシュ：容量＝６４ＫＢ、４ＷＡＹセットアソシアティブ、ラインサイズ＝６４Ｂ
・Ｌ２キャッシュ：容量＝２５６ＫＢ、８ＷＡＹセットアソシアティブ、ラインサイズ＝６４Ｂ
・Ｌ３キャッシュ：容量＝１６ＭＢ、１６ＷＡＹセットアソシアティブ、ラインサイズ＝６４Ｂ
【００４０】
上記構成の場合、アドレスを４８ビットとすると、各キャッシュのタグアドレス、インデックスアドレスは、図４に示すアドレスｂｉｔ数になる。また、コア内にあるＬ１キャッシュ５２０とＬ２キャッシュ５４０は、ライトスルー方式のキャッシュで、ストア命令キャッシュミス時のライトアロケート動作なしとする。各コアで共有しているＬ３キャッシュ６００は、ライトバック方式のキャッシュで、ストア命令キャッシュミス時のライトアロケート動作ありとする。
【００４１】
＜ロード命令の動作＞
命令制御部５０１は、ロード命令を、信号線を介してリクエスト制御部５２１へ発行する。リクエスト制御部５２１は、ロード命令のアドレスをＬ１キャッシュＡＡ５２２、Ｌ２キャッシュＡＡ５４２、Ｌ１キャッシュＤＡ５２３、ヒット・ミス判定部５２５へ信号線を介して出力する。
【００４２】
ここで、本発明におけるキャッシュ５２０，５４０のアドレスアレイ（ＡＡ）５２２，５４２及びデータアレイ（ＤＡ）５２３，５４３の構成について、図５を用いて説明する。各ＡＡには、タグアドレスと、キャッシュのステータス情報（Ｖｂｉｔ）と、キャッシュ状態、が格納される。また、ＤＡにはデータが格納されている。なお、上記ステータス情報は、各キャッシュライン毎に有効であるかを示すビット＝Ｖｂｉｔである。また、上記キャッシュ状態は、メモリの内容とキャッシュの内容が一致しているかを示すビット（=Modifiedと呼ぶ）であり、ライトバック方式で必要だがライトスルー方式では不要なため、Ｌ１キャッシュ、Ｌ２キャッシュの説明では省略する。
【００４３】
Ｌ１キャッシュＡＡ５２２とＬ２キャッシュＡＡ５４２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔを、信号線を介してヒット・ミス判定部５２５に出力する。ヒット・ミス判定部５２５は、Ｌ１キャッシュ５２０とＬ２キャッシュ５４０の両方の情報とロード命令のアドレスを用いてヒット・ミス判定を行う。
【００４４】
まず、各キャッシュ毎のヒット・ミス判定は、図６に示した４種類のケースが存在する。Vbit＝有効かつロード命令のアドレス（タグアドレスに相当するビット部分）とタグアドレスとの比較結果が一致した場合のみヒットとなる。本発明では、各キャッシュ毎のヒット・ミス判定だけでなく、Ｌ１キャッシュ５２０とＬ２キャッシュ５４０のヒット・ミス判定を組み合わせて、最終的なヒット・ミス判定を行う。図７に、本発明の各キャッシュのヒット・ミス判定と各キャッシュの動作の一覧を示す。ここでは、６種類のケースが存在し、それぞれのケースについて説明する。
【００４５】
ケース１（Ｌ１キャッシュ＝ヒット、Ｌ２キャッシュ＝ヒット、Ｌ３キャッシュ＝未使用）
【００４６】
Ｌ１キャッシュ５２０のヒット・ミス判定部５２５は、Ｌ１キャッシュ＝ヒットとして判定する。Ｌ１キャッシュＤＡ５２３からロード命令のアドレスのデータをリードし、信号線を介してリプライ制御部５２４へ出力する。リプライ制御部５２４は、信号線を介して出力されるＬ２キャッシュ５４０からのリプライデータとの調停を行って、信号線を介して演算制御部５０２へデータを出力する。演算制御部５０２は、受け取ったデータに対してロード命令として必要な処理（例えば、符号拡張など）が指定されていればデータに対して演算する。
【００４７】
ケース２（Ｌ１キャッシュ＝ヒット、Ｌ２キャッシュ＝ミス、Ｌ３キャッシュ＝ヒット）
【００４８】
Ｌ１キャッシュ５２０のヒット・ミス判定部５２５は、Ｌ１キャッシュ＝ミスとして判定する。そして、ヒット・ミス判定部５２５は、信号線を介してリクエスト制御部５２１にリクエスト出力を要求する。リクエスト制御部５２１は、信号線を介してリクエスト生成制御部５２６へリクエストを出力する。リクエスト生成制御部５２６は、命令のオペコード、アドレス、Ｌ２キャッシュ＝ミスなどの情報を付加して、リクエストを生成して信号線を介してＬ２キャッシュ５４０のリクエスト制御部５４１へ出力する。
【００４９】
Ｌ２キャッシュ５４０のリクエスト制御部５４１は、リクエストに付加されている情報を解釈して、Ｌ２キャッシュ＝ミスのロード命令のためリクエストを、信号線を介してリクエスト生成制御部５４５へ出力する。リクエスト生成制御部５４５は、リクエストを生成して信号線を介して、Ｌ３キャッシュ６００のリクエスト制御部６０１へ出力する。
【００５０】
Ｌ３キャッシュ６００のリクエスト制御部６０１は、リクエストに付加されている情報を解釈して、命令のオペコード、アドレスなどの情報を、信号線６１０を介してＬ３キャッシュＡＡ６０２、ヒット・ミス判定部６０６へ出力する。Ｌ３キャッシュＡＡ６０２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔとキャッシュ状態を、信号線を介してヒット・ミス判定部６０６に出力する。
【００５１】
Ｌ３キャッシュ６００のヒット・ミス判定部６０６は、Ｌ３キャッシュ＝ヒットとして判定する。そして、ヒット・ミス判定部６０６は、信号線を介してリクエスト制御部６０１にＬ３キャッシュＤＡ６０３のリードリクエストと、Ｌ２キャッシュ保持情報６０５への登録を要求する。リクエスト制御部６０１は、Ｌ３キャッシュＤＡ６０３のリードリクエストとＬ２キャッシュ保持情報６０５への登録を出力する。Ｌ３キャッシュＤＡ６０３は、ロード命令のアドレスを含むＬ２キャッシュのラインサイズ分のデータをリードし、信号線を介してリプライ制御部６０４へ出力する。このとき、信号線のデータ幅がＬ２キャッシュのラインサイズ未満の場合は、複数回に分割してデータをリードして出力する。リプライ制御部６０４は、信号線を介して出力されるメモリからのリプライとの調停を行って、信号線を介してＬ２キャッシュＤＡ５４３とリプライ制御部５４４へデータを出力し、データの最終要素を示す情報をＬ２キャッシュＡＡ５４２へ出力する。
【００５２】
Ｌ２キャッシュ保持情報６０５は、各コアのＬ２キャッシュとＬ３キャッシュのコヒーレンシを維持するための情報を格納している。一般的には、ディレクトリと呼ばれるものである。様々な実装方法が存在するが、単純な実装例としては、各コアのＬ２キャッシュＡＡ５４２のコピーを持ち、ヒットした場合は各コアのＬ２キャッシュが該当データを保持していることがチェックできる。上記の実装方法では、非常に大きな回路面積が必要なため、他の実装例としては、Ｌ３キャッシュの各ライン毎にどのコアのＬ２キャッシュのどのWAYがデータを保持しているかの情報を格納する。本発明では、後者の実装方法を例とする。Ｌ２キャッシュ保持情報６０５は、リプライを返却したコア番号とＬ２キャッシュのリプライ登録予定のＷＡＹ番号の情報を格納する。
【００５３】
Ｌ２キャッシュ５４０では、Ｌ３キャッシュ６００からのリプライデータをＬ２キャッシュＤＡ５４３へ格納し、ラインサイズ分のデータの最終要素を示す情報を受け取ると、Ｌ２キャッシュＡＡ５４２のＶｂｉｔを有効にする。また、リプライ制御部５４４は、信号線を介して出力されるＬ２キャッシュＤＡ５４２からのリードデータとの調停を行って、信号線を介してＬ３キャッシュ６００からのリプライを、Ｌ１キャッシュＤＡ５２３とリプライ制御部５２４へデータを出力し、データの最終要素を示す情報をＬ１キャッシュＡＡ５２２へ出力する。
【００５４】
Ｌ１キャッシュ５２０では、Ｌ２キャッシュ５４０からのリプライデータをＬ１キャッシュＤＡ５２３へ格納し、ラインサイズ分のデータの最終要素を示す情報を受け取ると、Ｌ１キャッシュＡＡ５２２のＶｂｉｔを有効にする。また、リプライ制御部５２４は、信号線を介して出力されるＬ１キャッシュＤＡ５２３からのリードデータとの調停を行って、信号線を介してキャッシュのラインサイズのデータの中でロード命令が必要としているデータを演算制御部５０２へ出力する。演算制御部５０２は、受け取ったデータに対してロード命令として必要な処理（例えば、符号拡張など）が指定されていればデータに対して演算する。
【００５５】
ケース３（Ｌ１キャッシュ＝ヒット、Ｌ２キャッシュ＝ミス、Ｌ３キャッシュ＝ミス）
【００５６】
Ｌ１キャッシュ５２０の動作は、ミス判定のため、ケース２と同じである。
Ｌ２キャッシュ５４０の動作は、ミス判定のため、ケース２と同じである。
【００５７】
Ｌ３キャッシュ６００のリクエスト制御部６０１は、リクエストに付加されている情報を解釈して、命令のオペコード、アドレスなどの情報を、信号線を介してＬ３キャッシュＡＡ６０２、ヒット・ミス判定部６０６へ出力する。Ｌ３キャッシュＡＡ６０２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔとキャッシュ状態を、信号線を介してヒット・ミス判定部６０６に出力する。Ｌ３キャッシュのヒット・ミス判定部６０６は、Ｌ３キャッシュ＝ミスかつ空きＷＡＹありとして判定する。ヒット・ミス判定部６０６は、信号線を介してリクエスト制御部６０１へリクエスト出力を要求する。
【００５８】
リクエスト制御部６０１は、信号線を介してリクエスト生成制御部６０７へリクエストを出力する。リクエスト生成制御部６０７は、命令のオペコード、アドレスなどの情報を付加してリクエスト（ロード）を生成し、信号線を介してメモリ６２０へ出力する。Ｌ２キャッシュ保持情報６０５には、リプライを返却予定のコア番号とＬ２キャッシュのリプライ登録予定のＷＡＹ番号の情報を格納する。
【００５９】
メモリ６２０は、リクエスト（ロード）のため、信号線を介して対象アドレスのリプライデータを出力する。
【００６０】
Ｌ３キャッシュ６００では、メモリ６２０からのリプライデータをＬ３キャッシュＤＡ６０３へ格納し、ラインサイズ分のデータの最終要素を示す情報を受け取ると、Ｌ３キャッシュＡＡのＶｂｉｔを有効にし、キャッシュ状態をmodified=0（メモリの内容とキャッシュの内容が一致の状態）にする。また、リプライ制御部６０４は、信号線を介して出力されるＬ３キャッシュＤＡ６０３からのリードデータとの調停を行って、信号線を介してメモリ６２０からのリプライをＬ２キャッシュＤＡ５４３とリプライ制御部５４４へデータを出力し、データの最終要素を示す情報をＬ２キャッシュＡＡ ５４２へ出力する。
【００６１】
Ｌ２キャッシュのリプライの動作は、ケース２の動作と同じである。
Ｌ１キャッシュのリプライの動作は、ケース２の動作と同じである。
演算制御部５０２の動作は、ケース２の動作と同じである。
【００６２】
ケース４（Ｌ１キャッシュ＝ミス、Ｌ２キャッシュ＝ヒット、Ｌ３キャッシュ＝未使用）
【００６３】
Ｌ１キャッシュ５２０のヒット・ミス判定部５２５は、Ｌ１キャッシュ＝ミスとして判定する。そして、ヒット・ミス判定部５２５は、信号線を介してリクエスト制御部５２１へリクエスト出力を要求する。リクエスト制御部５２１は、信号線を介してリクエスト生成制御部５２６へリクエストを出力する。リクエスト生成制御部５２６は、命令のオペコード、アドレス、Ｌ２キャッシュ＝ヒットなどの情報を付加してリクエストを生成し、信号線を介してＬ２キャッシュ５４０のリクエスト制御部５４１へ出力する。
【００６４】
Ｌ２キャッシュ５４０のリクエスト制御部５４１は、リクエストに付加されている情報を解釈して、Ｌ２キャッシュ＝ヒットのロード命令のため、Ｌ２キャッシュＤＡ５４３からロード命令のアドレスを含むＬ１キャッシュのラインサイズ分のデータをリードし、信号線を介してリプライ制御部５４４へ出力する。信号線のデータ幅がＬ１キャッシュのラインサイズ未満の場合は、複数回に分割してデータをリードして出力する。リプライ制御部５４４は、信号線を介して出力されるＬ３キャッシュ６００からのリプライとの調停を行って、信号線を介してＬ１キャッシュＤＡ５２３とリプライ制御部５２４へデータを出力し、データの最終要素を示す情報をＬ１キャッシュＡＡ５２２へ出力する。
【００６５】
Ｌ１キャッシュ５２０のリプライの動作は、ケース２の動作と同じである。
演算制御部５０２の動作は、ケース２の動作と同じである。
【００６６】
ケース５（Ｌ１キャッシュ＝ミス、Ｌ２キャッシュ＝ミス、Ｌ３キャッシュ＝ヒット）
ケース２の動作と同じである。
【００６７】
ケース６（Ｌ１キャッシュ＝ミス、Ｌ２キャッシュ＝ミス、Ｌ３キャッシュ＝ミス）
ケース３の動作と同じである。
【００６８】
ここで、参考として、本発明と比較される技術の場合の動作を、図８に示す。この場合は、４種類のケースが存在する。
【００６９】
また、上記のケース以外の動作として、Ｌ３キャッシュ＝ミスの場合にＷＡＹが全て使用中で、有効データのリプレースが必要な場合の動作が存在する。ただし、一般的なライトバック方式のキャッシュの動作と同様であり、本発明特有の動作ではないため説明は簡略化する。
【００７０】
ケース７（ライトバック動作なし）
【００７１】
Ｌ１キャッシュ５２０の動作は、ミス判定のためケース２と同じである。
Ｌ２キャッシュ５４０の動作は、ミス判定のためケース２と同じである。
【００７２】
Ｌ３キャッシュ６００のリクエスト制御部６０１は、リクエストに付加されている情報を解釈して、命令のオペコード、アドレスなどの情報を、信号線を介してＬ３キャッシュＡＡ６０２、ヒット・ミス判定部６０６へ出力する。Ｌ３キャッシュＡＡ６０２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔとキャッシュ状態を、信号線を介してヒット・ミス判定部６０６に出力する。
【００７３】
Ｌ３キャッシュのヒット・ミス判定部６０６は、Ｌ３キャッシュ＝ミスかつ全ＷＡＹ使用中を検出すると、リプレースのポリシー（例えば、ＬＲＵなど）に従い、ＷＡＹの中からリプレース対象ＷＡＹを１つ選択する。リプレース対象ＷＡＹのキャッシュ状態がmodified=0（メモリの内容とキャッシュの内容が一致の状態）の場合には、リクエスト制御部６０１へライトバック動作なしのリプレースを要求する。リクエスト制御部６０１は、Ｌ３キャッシュＡＡ６０２の対象ＷＡＹのＶｂｉｔを無効化する。また、Ｌ２キャッシュとＬ３キャッシュのコヒーレンシを維持するために、Ｌ２キャッシュ保持情報６０５のチェックを実施する。無効化制御部６０８は、各コアのＬ２キャッシュで使用中の場合に、各コアに無効化の要求を出力し、Ｌ２キャッシュ無効化制御部５４６がＬ２キャッシュＡＡ５４２のＶｂｉｔを無効化する。
【００７４】
上記の動作により、Ｌ３キャッシュ６００に１ＷＡＹ分の空きができリプレースは完了する。この後は、通常のＬ３キャッシュミス（ケース３と同等）として動作する。リクエスト制御部６０１は、信号線を介してリクエスト生成制御部６０７へリクエストを出力する。リクエスト生成制御部６０７は、命令のオペコード、アドレスなどの情報を付加してリクエスト（ロード）を生成し、信号線を介してメモリ６２０へ出力する。Ｌ２キャッシュ保持情報６０５には、リプライを返却予定のコア番号とＬ２キャッシュのリプライ登録予定のＷＡＹ番号の情報を格納する。メモリ以降の動作は、ケース３の動作と同じになる。
【００７５】
ケース８（ライトバック動作あり）
【００７６】
Ｌ１キャッシュ５２０の動作は、ミス判定のためケース２と同じである。
Ｌ２キャッシュ５４０の動作は、ミス判定のためケース２と同じである。
【００７７】
Ｌ３キャッシュ６００のリクエスト制御部６０１は、リクエストに付加されている情報を解釈して、命令のオペコード、アドレスなどの情報を、信号線を介してＬ３キャッシュＡＡ６０２、ヒット・ミス判定部６０６へ出力する。Ｌ３キャッシュＡＡ６０２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔとキャッシュ状態を、信号線を介してヒット・ミス判定部６０６に出力する。
【００７８】
Ｌ３キャッシュ６００のヒット・ミス判定部６０６は、Ｌ３キャッシュ＝ミスかつ全ＷＡＹ使用中を検出すると、リプレースのポリシー（例えば、ＬＲＵなど）に従い、ＷＡＹの中からリプレース対象ＷＡＹを１つ選択する。リプレース対象ＷＡＹのキャッシュ状態がmodified=1（メモリの内容とキャッシュの内容が不一致の状態）の場合には、リクエスト制御部へライトバック動作ありのリプレースを要求する。リクエスト制御部６０１は、Ｌ３キャッシュＡＡ６０２の対象ＷＡＹのＶｂｉｔを無効化する。
【００７９】
また、Ｌ２キャッシュとＬ３キャッシュのコヒーレンシを維持するために、Ｌ２キャッシュ保持情報６０５のチェックを実施する。無効化制御部６０８は、各コアのＬ２キャッシュで使用中の場合に各コアに無効化の要求を出力し、Ｌ２キャッシュ無効化制御部５４６がＬ２キャッシュＡＡ５４２のＶｂｉｔを無効化する。さらに、リクエスト制御部６０１は、信号線を介してリクエスト生成制御部６０７に命令のオペコード、アドレスなどの情報を出力する。また、Ｌ３キャッシュＤＡ６０３のリプレース対象ＷＡＹのＬ３キャッシュラインサイズ分のデータのリードを出力する。Ｌ３キャッシュＤＡ６０３は、信号線を介してリードデータをリクエスト生成制御部６０７へ出力する。リクエスト生成制御部６０７は、命令のオペコード、アドレス、データなどの情報を付加してリクエスト（ストア）を生成し、信号線を介してメモリ６２０へ出力する。
【００８０】
メモリ６２０は、リクエスト（ストア）のため対象アドレスにデータを格納する。上記の動作により、Ｌ３キャッシュ６２０に１ＷＡＹ分の空きができリプレースは完了する。
【００８１】
この後は、通常のＬ３キャッシュミス（ケース３と同等）として動作する。リクエスト制御部は、信号線６１０を介してリクエスト生成制御部６０７へリクエストを出力する。リクエスト生成制御部６０７は、命令のオペコード、アドレスなどの情報を付加してリクエスト（ロード）を生成し、信号線を介してメモリ６２０へ出力する。Ｌ２キャッシュ保持情報６０５には、リプライを返却予定のコア番号とＬ２キャッシュのリプライ登録予定のＷＡＹ番号の情報を格納する。メモリ以降の動作は、ケース３の動作と同じになる。
【００８２】
＜ストア命令の動作＞
命令制御部５０１は、ストア命令を信号線を介してリクエスト制御部５２１へ発行する。リクエスト制御部５２１は、ストア命令のアドレスをＬ１キャッシュＡＡ５２２、Ｌ２キャッシュＡＡ５４２、ヒット・ミス判定部５２５へ、信号線を介して出力する。Ｌ１キャッシュＡＡ５２２とＬ２キャシュＡＡ５４２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔを、信号線を介してヒット・ミス判定部５２５に出力する。
【００８３】
ヒット・ミス判定部５２５は、Ｌ１キャッシュとＬ２キャッシュの両方の情報とストア命令のアドレスを用いてヒット・ミス判定を行う。本発明では、各キャッシュ毎のヒット・ミス判定だけでなく、Ｌ１キャッシュとL２キャッシュのヒット・ミス判定を組み合わせて最終的なヒット・ミス判定を行う。図９が、本発明における各キャッシュのヒット・ミス判定と各キャッシュの動作の一覧である。６種類のケースが存在し、それぞれのケースについて説明する。
【００８４】
ケース１（Ｌ１キャッシュ＝ヒット、Ｌ２キャッシュ＝ヒット、Ｌ３キャッシュ＝ヒット）
【００８５】
Ｌ１キャッシュ５２０のヒット・ミス判定部５２５は、Ｌ１キャッシュ＝ヒットとして判定する。ヒット・ミス判定部５２５は、信号線を介してリクエスト制御部５２１にリクエスト出力とＬ１キャッシュ＝ヒットのためＬ１キャッシュＤＡ５２３へストア命令の実行を要求する。リクエスト制御部５２１は、信号線を介してリクエスト生成制御部５２６にリクエストを出力する。また、リクエスト制御部５２１は、ストア命令のアドレスとデータを、信号線を介してＬ１キャッシュＤＡ５２３へ通知する。Ｌ１キャッシュＤＡ５２３は、通知されたアドレスとデータを用いて格納されているデータを更新する。リクエスト生成制御部５２６は、命令のオペコード、アドレス、データ、Ｌ２キャッシュ＝ヒットなどの情報を付加してリクエストを生成し、信号線を介してＬ２キャッシュ５４０のリクエスト制御部５４１へ出力する。
【００８６】
Ｌ２キャッシュ５４０のリクエスト制御部５４１は、リクエストに付加されている情報を解釈して、ストア命令のため信号線を介してリクエストをリクエスト生成制御部５４５へ出力する。また、Ｌ２キャッシュ＝ヒットのストア命令のためアドレスとデータを、信号線を介してＬ２キャッシュＤＡ５４３へ通知する。Ｌ２キャッシュＤＡ５４３は、通知されたアドレスとデータを用いて格納されているデータを更新する。リクエスト生成制御部５４５は、命令のオペコード、アドレス、データなどの情報を付加してリクエストを生成し、信号線を介してＬ３キャッシュ６００のリクエスト制御部６０１へ出力する。
【００８７】
Ｌ３キャッシュ６００のリクエスト制御部６０１は、リクエストに付加されている情報を解釈して、オペコード、アドレスなどの情報を、信号線を介してＬ３キャッシュＡＡ６０２、ヒット・ミス判定部６０６へ出力する。Ｌ３キャッシュＡＡ６０２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔとキャッシュ状態を、信号線を介してヒット・ミス判定部６０６に出力する。Ｌ３キャッシュのヒット・ミス判定部６０６は、Ｌ３キャッシュ＝ヒットとして判定する。ヒット・ミス判定部６０６は、信号線を介してリクエスト制御部６０１にＬ３キャッシュ＝ヒットのためＬ３キャッシュＤＡ６０３へストア命令の実行を要求する。
【００８８】
リクエスト制御部６０１は、ストア命令のアドレスとデータとヒットしたＷＡＹを、信号線を介してＬ３キャッシュＡＡ６０２とＬ３キャッシュＤＡ６０３へ通知する。また、ストア命令のアドレスとコア番号を出力しＬ２キャッシュ保持情報６０５のチェックを要求する。Ｌ３キャッシュＡＡ６０２は、ヒットしたＷＡＹのキャッシュ状態をmodified=1に更新する。Ｌ３キャッシュＤＡ６０３は、通知されたアドレスとデータを用いて格納されているデータを更新する。Ｌ２キャッシュ保持情報６０５は、信号線を介して無効化制御部６０８へ出力される。無効化制御部６０８は、ストア命令のリクエスト要求元のコア以外が該当データを保持していた場合（ここではコアｎが該当データを保持していたとする）は、信号線を介してコアｎ（ｎ５００）のＬ２キャッシュ無効化制御部（図示せず）にＬ２キャッシュ無効化の要求を出力する。
【００８９】
コアｎのＬ２キャッシュ無効化制御部は、インデックスアドレスとＷＡＹ情報を用いて、信号線を介してコアｎのＬ２キャッシュアドレスアレイ（図示せず）のＶｂｉｔを無効化する。上記無効化の動作により、コアｎが該当データをロード命令でアクセスした場合に、Ｌ１キャッシュ＝ヒットあるいはミスかつＬ２キャッシュ＝ミスになり、Ｌ３キャッシュまでロード命令のリクエストが出力されるため、キャッシュのコヒーレンシ維持が可能になる。
【００９０】
ケース２（Ｌ１キャッシュ＝ヒット、Ｌ２キャッシュ＝ミス、Ｌ３キャッシュ＝ヒット）
【００９１】
Ｌ１キャッシュ５２０のヒット・ミス判定部５２５は、Ｌ１キャッシュ＝ミスとして判定する。ヒット・ミス判定部５２５は、信号線を介してリクエスト制御部５２１にリクエスト出力を要求する。リクエスト制御部５２１は、信号線を介してリクエスト生成制御部５２６にリクエストを出力する。リクエスト生成制御部５２６は、命令のオペコード、アドレス、データ、Ｌ２キャッシュ＝ミスなどの情報を付加してリクエストを生成し、信号線を介してＬ２キャッシュ５４０のリクエスト制御部５４１へ出力する。
【００９２】
Ｌ２キャッシュ５４０のリクエスト制御部５４１は、リクエストに付加されている情報を解釈して、ストア命令のため信号線を介してリクエストをリクエスト生成制御部５４５へ出力する。リクエスト生成制御部５４５は、命令のオペコード、アドレス、データなどの情報を付加してリクエストを生成し、信号線を介してＬ３キャッシュ６００のリクエスト制御部６０１へ出力する。Ｌ３キャッシュ以降の動作は、ケース１の動作と同じである。
【００９３】
ケース３（Ｌ１キャッシュ＝ヒット、Ｌ２キャッシュ＝ミス、Ｌ３キャッシュ＝ミス）
【００９４】
Ｌ１キャッシュ５２０の動作は、ミス判定のためケース２の動作と同じである。
Ｌ２キャッシュ５４０の動作は、ミス判定のためケース２の動作と同じである。
【００９５】
Ｌ３キャッシュ６００のリクエスト制御部６０１は、リクエストに付加されている情報を解釈して、命令のオペコード、アドレスなどの情報を、信号線を介してＬ３キャッシュＡＡ６０２、ヒット・ミス判定部６０６へ出力する。Ｌ３キャッシュＡＡ６０２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔｔとキャッシュ状態を、信号線を介してヒット・ミス判定部６０６に出力する。Ｌ３キャッシュ６００のヒット・ミス判定部６０６は、Ｌ３キャッシュ＝ミスかつ空きＷＡＹありとして判定する。ヒット・ミス判定部６０６は、信号線を介してリクエスト制御部６０１にＬ３キャッシュ＝ミスのためメモリリードのリクエスト出力を要求する。リクエスト制御部６０１は、信号線を介してリクエスト生成制御部６０７にリクエストを出力する。リクエスト生成制御部６０７は、命令のオペコード、アドレスなどの情報を付加してリクエスト（ロード）を生成し、信号線を介してメモリ６２０へ出力する。
【００９６】
メモリ６２０は、リクエスト（ロード）のため、信号線を介して対象アドレスのリプライデータを出力する。
【００９７】
Ｌ３キャッシュ６００では、メモリ６２０からのリプライデータをＬ３キャッシュＤＡ６０３へ格納し、ラインサイズ分のデータの最終要素を示す情報を受け取ると、Ｌ３キャッシュＡＡ６０２のＶｂｉｔを有効にする。また、Ｌ３キャッシュＡＡ６０２のＶｂｉｔが有効になると、リクエスト制御部６０１はストア命令のアドレスとデータと更新したＷＡＹを、信号線を介してＬ３キャッシュＡＡ６０２とＬ３キャッシュＤＡ６０３へ通知する。Ｌ３キャッシュＡＡ６０２は、更新したＷＡＹのキャッシュ状態をmodified=1に更新する。Ｌ３キャッシュＤＡ６０３は、通知されたアドレスとデータを用いて格納されているデータを更新する。
【００９８】
ケース４（Ｌ１キャッシュ＝ミス、Ｌ２キャッシュ＝ヒット、Ｌ３キャッシュ＝ヒット）
【００９９】
Ｌ１キャッシュ５２０の動作は、ミス判定のためケース２の動作と同じである。
Ｌ２キャッシュ５４０の動作は、ヒット判定のためケース１の動作と同じである。
Ｌ３キャッシュ６００の動作は、ヒット判定のためケース１の動作と同じである。
【０１００】
ケース５（Ｌ１キャッシュ＝ミス、Ｌ２キャッシュ＝ミス、Ｌ３キャッシュ＝ヒット）
【０１０１】
Ｌ１キャッシュ５２０の動作は、ミス判定のためケース２の動作と同じである。
Ｌ２キャッシュ５４０の動作は、ミス判定のためケース２の動作と同じである。
Ｌ３キャッシュ６００の動作は、ヒット判定のためケース１の動作と同じである。
【０１０２】
ケース６（Ｌ１キャッシュ＝ミス、Ｌ２キャッシュ＝ミス、Ｌ３キャッシュ＝ミス）
【０１０３】
Ｌ１キャッシュ５２０の動作は、ミス判定のためケース２の動作と同じである。
Ｌ２キャッシュ５４０の動作は、ミス判定のためケース２の動作と同じである。
Ｌ３キャッシュ６００の動作は、ミス判定のためケース３の動作と同じである。
【０１０４】
ここで、参考として、本発明と比較される技術の場合の動作を、図１０に示す。この場合は、４種類のケースが存在する。
【０１０５】
上記のケース以外の動作として、Ｌ３キャッシュ＝ミスの場合にＷＡＹが全て使用中で、有効データのリプレースが必要な場合の動作が存在する。ただし、一般的なライトバック方式のキャッシュの動作と同様であり、本発明特有の動作ではないため説明は簡略化する。
【０１０６】
ケース７（ライトバック動作なし）
【０１０７】
Ｌ１キャッシュ５２０、Ｌ２キャッシュ５４０の動作は、上記で説明した各ヒット・ミスの動作に従う。
【０１０８】
Ｌ３キャッシュ６００のリクエスト制御部６０１は、リクエストに付加されている情報を解釈して、命令のオペコード、アドレスなどの情報を、信号線を介してＬ３キャッシュＡＡ６０２、ヒット・ミス判定部６０６へ出力する。Ｌ３キャッシュＡＡ６０２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔとキャッシュ状態を、信号線を介してヒット・ミス判定部６０６に出力する。Ｌ３キャッシュのヒット・ミス判定部６０６は、Ｌ３キャッシュ＝ミスかつ全ＷＡＹ使用中を検出すると、リプレースのポリシー（例えば、ＬＲＵなど）に従いＷＡＹの中からリプレース対象ＷＡＹを１つ選択する。リプレース対象ＷＡＹのキャッシュ状態がmodified=0（メモリの内容とキャッシュの内容が一致の状態）の場合には、リクエスト制御部６０１へライトバック動作なしのリプレースを要求する。リクエスト制御部６０１は、Ｌ３キャッシュＡＡ６０２の対象ＷＡＹのＶｂｉｔを無効化する。また、Ｌ２キャッシュとＬ３キャッシュのコヒーレンシを維持するために、Ｌ２キャッシュ保持情報６０５のチェックを実施する。無効化制御部６０８は、各コアのＬ２キャッシュで使用中の場合に各コアに無効化の要求を出力し、Ｌ２キャッシュ無効化制御部５４６がＬ２キャッシュＡＡ５４２のＶｂｉｔを無効化する。
【０１０９】
上記の動作により、Ｌ３キャッシュ６００に１ＷＡＹ分の空きができリプレースは完了する。この後は、通常のＬ３キャッシュミス（ケース３と同等）として動作する。Ｌ３キャッシュ６００のリクエスト制御部６０１は、リクエストに付加されている情報を解釈して、オペコード、アドレスなどの情報を、信号線を介してＬ３キャッシュＡＡ６０２、ヒット・ミス判定部６０６へ出力する。Ｌ３キャッシュＡＡ６０２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔとキャッシュ状態を、信号線を介してヒット・ミス判定部６０６に出力する。Ｌ３キャッシュ６００のヒット・ミス判定部６０６は、Ｌ３キャッシュ＝ミスかつ空きＷＡＹありとして判定する。ヒット・ミス判定部６０６は、信号線を介してリクエスト制御部６０１にＬ３キャッシュ＝ミスのためメモリリードのリクエスト出力を要求する。リクエスト制御部６０１は、信号線を介してリクエスト生成制御部６０７にリクエストを出力する。リクエスト生成制御部６０７は、命令のオペコード、アドレスなどの情報を付加してリクエスト（ロード）を生成し、信号線を介してメモリ６２０へ出力する。メモリ以降の動作は、ケース３の動作と同じになる。
【０１１０】
ケース８（ライトバック動作あり）
【０１１１】
Ｌ１キャッシュ５２０、Ｌ２キャッシュ５４０の動作は、上記で説明した各ヒット・ミスの動作に従う。
【０１１２】
Ｌ３キャッシュ６００のリクエスト制御部６０１は、リクエストに付加されている情報を解釈して、命令のオペコード、アドレスなどの情報を、信号線を介してＬ３キャッシュＡＡ６０２、ヒット・ミス判定部６０６へ出力する。Ｌ３キャッシュＡＡ６０２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔとキャッシュ状態を、信号線を介してヒット・ミス判定部６０６に出力する。Ｌ３キャッシュのヒット・ミス判定部６０６は、Ｌ３キャッシュ＝ミスかつ全ＷＡＹ使用中を検出すると、リプレースのポリシー（例えば、ＬＲＵなど）に従い、ＷＡＹの中からリプレース対象ＷＡＹを１つ選択する。リプレース対象ＷＡＹのキャッシュ状態がmodified=1（メモリの内容とキャッシュの内容が不一致の状態）の場合には、リクエスト制御部６０１へライトバック動作ありのリプレースを要求する。
【０１１３】
リクエスト制御部６０１は、Ｌ３キャッシュＡＡ６０２の対象ＷＡＹのＶｂｉｔを無効化する。また、Ｌ２キャッシュとＬ３キャッシュのコヒーレンシを維持するために、Ｌ２キャッシュ保持情報６０５のチェックを実施する。無効化制御部６０８は、各コアのＬ２キャッシュで使用中の場合に、各コアに無効化の要求を出力し、Ｌ２キャッシュ無効化制御部５４６がＬ２キャッシュＡＡ５４２のＶｂｉｔを無効化する。さらに、リクエスト制御部６０１は、信号線を介してリクエスト生成制御部６０７に命令のオペコード、アドレスなどの情報を出力する。また、Ｌ３キャッシュＤＡ６０３のリプレース対象ＷＡＹのＬ３キャッシュラインサイズ分のデータのリードを出力する。Ｌ３キャッシュＤＡ６０３は、信号線を介してリードデータをリクエスト生成制御部６０７へ出力する。リクエスト生成制御部６０７は、命令のオペコード、アドレス、データなどの情報を付加してリクエスト（ストア）を生成し、信号線を介してメモリ６２０へ出力する。メモリ６２０は、リクエスト（ストア）のため対象アドレスにデータを格納する。
【０１１４】
上記の動作により、Ｌ３キャッシュ６００に１ＷＡＹ分の空きができリプレースは完了する。この後は、通常のＬ３キャッシュミス（ケース３と同等）として動作する。Ｌ３キャッシュ６００のリクエスト制御部６０１は、リクエストに付加されている情報を解釈して、オペコード、アドレスなどの情報を、信号線を介してＬ３キャッシュＡＡ６０２、ヒット・ミス判定部６０６へ出力する。Ｌ３キャッシュＡＡ６０２は、インデックスアドレスを用いて登録されているタグアドレスとＶｂｉｔとキャッシュ状態を、信号線を介してヒット・ミス判定部６０６に出力する。Ｌ３キャッシュ６００のヒット・ミス判定部６０６は、Ｌ３キャッシュ＝ミスかつ空きＷＡＹありとして判定する。ヒット・ミス判定部６０６は、信号線を介してリクエスト制御部６０１にＬ３キャッシュ＝ミスのためメモリリードのリクエスト出力を要求する。リクエスト制御部６０１は、信号線を介してリクエスト生成制御部６０７にリクエストを出力する。リクエスト生成制御部６０７は、命令のオペコード、アドレスなどの情報を付加してリクエスト（ロード）を生成し、信号線を介してメモリ６２０へ出力する。メモリ以降の動作は、ケース３の動作と同じになる。
【０１１５】
以上に説明したように、本発明においては以下に記載するような効果を持つ。階層キャッシュメモリを備えるプロセッサにおいて、上位キャッシュのデータは下位キャッシュに含まれるという関係が成り立つインクルーシブ・キャッシュを実現する場合に、上位キャッシュと下位キャッシュの両方の状態を用いてキャッシュのヒット・ミス判定を行うことで、上位キャッシュと下位キャッシュ間の包含関係を維持できる。これにより、上位キャッシュ用の無効化制御回路の実装が不要になる。
【０１１６】
具体的な回路削減効果を計算すると、「Ｌ１キャッシュ：容量＝６４ＫＢ、４ＷＡＹセットアソシアティブ、ラインサイズ＝６４Ｂ」の場合に、Ｌ１キャッシュ専用の無効化制御としてＬ１キャッシュＡＡのコピーを実装すると、（３４ｂｉｔ（タグアドレス）＋１ｂｉｔ（Ｖｂｉｔ））×２５６（インデックス）×４（ＷＡＹ）＝３５８４０ｂｉｔの記憶領域を削減できる。また、ベクトルプロセッサでは、同時に無効化制御を並列に実施すると仮定すると、８〜３２個を並列に実行すると３５８４０×８〜３２＝２８０Ｋ〜１１２０Ｋｂｉｔとさらに大きな記憶領域を削減できる。
【０１１７】
本実施例では、キャッシュ構成を例示したが、Ｌ１キャッシュ、Ｌ２キャッシュ、Ｌ３キャッシュの容量、ＷＡＹ数、ラインサイズ、ライト命令実行時のポリシー（ライトスルー方式、ライトバック方式）、ストア命令キャッシュミス時のアロケート方式（ライトアロケートのあり・なし）などは、キャッシュ制御回路を適切に実装すれば自由に構成可能であり限定されるものではない。Ｌ２キャッシュとＬ３キャッシュのコヒーレンシ維持の方法は、ディレクトリ方式以外のスヌープ方式など他の方式も可能である。
【０１１８】
また、階層キャッシュとしては、２階層以上のキャッシュが存在すれば良い。本実施例では、３階層のキャッシュ構成で説明を行ったが、Ｌ３キャッシュが存在しない図１１に示すＬ１キャッシュ１５１，１６１とＬ２キャッシュ１５２，１６２の２階層のキャッシュ構成であってもよい。また、Ｌ４キャッシュを備えるなど、４階層以上のキャッシュ構成も可能である。
【０１１９】
また、コア数は１個からｎ個まで自由に構成可能であり限定されるものではない。コア数が１個の場合は、他コアのストア命令によるコヒーレンシ制御が不要になるが、例えばＬ３キャッシュのＷＡＹ数がＬ２キャシュのＷＡＹ数より少ない構成時に、Ｌ３キャッシュのリプレース発生によるＬ２キャッシュの無効化が発生すると、Ｌ１キャッシュ＝ヒット、かつ、Ｌ２キャッシュ＝ミスというケースになる可能性があるためである。ベクトル命令を実行可能なベクトルプロセッサでも、本実施例と同様なキャッシュを持っていれば実装が可能である。
【０１２０】
＜実施形態２＞
次に、本発明の第２の実施形態を、図１２を参照して説明する。図１２は、実施形態２におけるプロセッサの構成を示すブロック図である。なお、本実施形態におけるプロセッサは、実施形態１で説明したプロセッサの構成の概略を示している。
【０１２１】
本実施形態におけるプロセッサ８００は、上位キャッシュメモリ８１１と下位キャッシュメモリ８１２とを有し、上位キャッシュメモリに記憶されているデータが下位キャッシュメモリに含まれる状態であるインクルーシブ状態とされる階層キャッシュメモリ８１０を備えている。これに加え、プロセッサ８００は、所定のデータへのアクセス時に、上位キャッシュメモリ８１１と下位キャッシュメモリ８１２とに対するキャッシュヒット／ミスを判定するキャッシュヒット判定部８２０と、上位キャッシュメモリ８１１と下位キャッシュメモリ８１２とに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、上述したインクルーシブ状態となるよう制御する制御部８３０と、を備えている。
【０１２２】
なお、上記キャッシュヒット判定部８２０と制御部８３０とは、キャッシュメモリ制御装置を構成しており、階層キャッシュメモリ８１０内に実装されていてもよく、階層キャッシュメモリ８１０の外部に装備されていてもよい。そして、キャッシュヒット判定部８２０と制御部８３０とは、演算装置でプログラムが実行されることで構築される。
【０１２３】
上記構成のプロセッサによると、所定のデータへのアクセス時に、まず、キャッシュヒット判定部８２０が、上位キャッシュメモリ８１１と下位キャッシュメモリ８１２とに対するキャッシュヒット／ミスを判定する。そして、制御部８３０が、上位キャッシュメモリ８１１と下位キャッシュメモリ８１２とに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、上位キャッシュメモリ８１１と下位キャッシュメモリ８１２とがインクルーシブ状態となるよう制御する。
【０１２４】
これにより、本発明では、上位キャッシュと下位キャッシュの両方の状態を用いてキャッシュのヒット・ミス判定を行うことで、上位キャッシュと下位キャッシュ間の包含関係を維持することができる。これにより、上位キャッシュ用の無効化制御回路の実装が不要になり、回路の増加と制御の複雑化を抑制することができる。
【０１２５】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるプロセッサ、キャッシュメモリ制御装置、プログラム、キャッシュメモリ制御方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【０１２６】
（付記１）
上位キャッシュメモリと下位キャッシュメモリとを有し、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態とされる階層キャッシュメモリと、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定するキャッシュヒット判定部と、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記インクルーシブ状態となるよう制御する制御部と、
を備えた、
プロセッサ。
【０１２７】
（付記２）
付記１に記載のプロセッサであって、
前記キャッシュヒット判定部は、前記下位キャッシュメモリがキャッシュミスの場合に、前記上位キャッシュメモリをキャッシュミスと判定する、
プロセッサ。
【０１２８】
（付記３）
付記２に記載のプロセッサであって、
前記キャッシュヒット判定部は、前記下位キャッシュメモリがキャッシュミスである場合に、前記上位キャッシュメモリがキャッシュヒットであっても当該上位キャッシュメモリをキャッシュミスと判定する、
プロセッサ。
【０１２９】
（付記４）
付記１乃至３のいずれかに記載のプロセッサであって、
前記制御部は、前記上位キャッシュメモリ及び前記下位キャッシュメモリがキャッシュミスと判定された場合に、前記下位キャッシュメモリよりもさらに下位のメモリに格納されているデータを用いて、前記上位キャッシュメモリと前記下位キャッシュメモリとが前記インクルーシブ状態とするよう制御する、
プロセッサ。
【０１３０】
（付記５）
付記１乃至４のいずれかに記載のプロセッサであって、
前記制御部は、前記上位キャッシュメモリがキャッシュミスであり、前記下位キャッシュメモリがキャッシュヒットであると判定された場合に、前記下位キャッシュメモリに記憶されているデータを前記上位キャッシュメモリに格納して前記インクルーシブ状態とするよう制御する、
プロセッサ。
【０１３１】
（付記６）
付記１乃至５のいずれかに記載のプロセッサであって、
前記上位キャッシュメモリに記憶されているデータを無効にする手段を設けずに、前記下位キャッシュメモリに記憶されているデータを無効にする無効化手段を設けた、
プロセッサ。
【０１３２】
（付記７）
付記１乃至６のいずれかに記載のプロセッサであって、
前記上位キャッシュメモリに、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定する前記キャッシュヒット判定部を備えた、
プロセッサ。
【０１３３】
（付記８）
上位キャッシュメモリと下位キャッシュメモリとを有する階層キャッシュメモリに対して、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態となるよう制御するキャッシュメモリ制御装置であって、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定するキャッシュヒット判定部と、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記上位キャッシュメモリと前記下位キャッシュメモリとが前記インクルーシブ状態となるよう制御する制御部と、
を備えた、
キャッシュメモリ制御装置。
【０１３４】
（付記９）
上位キャッシュメモリと下位キャッシュメモリとを有する階層キャッシュメモリに対して、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態となるよう制御するキャッシュメモリ制御装置に、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定するキャッシュヒット判定部と、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記上位キャッシュメモリと前記下位キャッシュメモリとが前記インクルーシブ状態となるよう制御する制御部と、
を実現させるためのプログラム。
【０１３５】
（付記１０）
上位キャッシュメモリと下位キャッシュメモリとを有し、前記上位キャッシュメモリに記憶されているデータが前記下位キャッシュメモリに含まれる状態であるインクルーシブ状態とされる階層キャッシュメモリを備えたプロセッサによるキャッシュメモリ制御方法であって、
所定のデータへのアクセス時に、前記上位キャッシュメモリと前記下位キャッシュメモリとに対するキャッシュヒット／ミスを判定し、
前記上位キャッシュメモリと前記下位キャッシュメモリとに対するそれぞれのキャッシュヒット／ミスの判定結果に基づいて、前記インクルーシブ状態となるよう制御する、
キャッシュメモリ制御方法。
【０１３６】
（付記１１）
付記１０に記載のキャッシュメモリ制御方法であって、
前記下位キャッシュメモリがキャッシュミスの場合に、前記上位キャッシュメモリをキャッシュミスと判定する、
キャッシュメモリ制御方法。
【０１３７】
（付記１２）
付記１１に記載のキャッシュメモリ制御方法であって、
前記下位キャッシュメモリがキャッシュミスである場合に、前記上位キャッシュメモリがキャッシュヒットであっても当該上位キャッシュメモリをキャッシュミスと判定する、
キャッシュメモリ制御方法。
【０１３８】
（付記１３）
付記１０乃至１３のいずれかに記載のキャッシュメモリ制御方法であって、
前記上位キャッシュメモリ及び前記下位キャッシュメモリがキャッシュミスと判定された場合に、前記下位キャッシュメモリよりもさらに下位のメモリに格納されているデータを用いて、前記上位キャッシュメモリと前記下位キャッシュメモリとが前記インクルーシブ状態とするよう制御する、
キャッシュメモリ制御方法。
【０１３９】
（付記１４）
付記１０乃至１３のいずれかに記載のキャッシュメモリ制御方法であって、
前記上位キャッシュメモリがキャッシュミスであり、前記下位キャッシュメモリがキャッシュヒットであると判定された場合に、前記下位キャッシュメモリに記憶されているデータを前記上位キャッシュメモリに格納して前記インクルーシブ状態とするよう制御する、
キャッシュメモリ制御方法。
【０１４０】
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１４１】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【０１４２】
１００，１１０  コア
１０１，１１１  Ｌ１キャッシュ
１０２，１１２  Ｌ２キャッシュ
１２０  Ｌ３キャッシュ
１３０  メモリ
１５０，１６０  コア
１５１，１６１  Ｌ１キャッシュ
１５２，１６２  Ｌ２キャッシュ
１７０  メモリ
２００，ｎ２００  コア
２０１  命令制御部
２０２  演算制御部
２２０  Ｌ１キャッシュ
２２１  リクエスト制御部
２２２  Ｌ１キャッシュアドレスアレイ
２２３  Ｌ１キャッシュアドレスアレイコピー
２２４  Ｌ１キャッシュデータアレイ
２２５  リプライ制御部
２２６  ヒット・ミス判定部
２２７  リクエスト生成制御部
２２８  Ｌ１キャッシュ無効化制御部
２４０  Ｌ２キャッシュ
２４１  リクエスト制御部
２４２  Ｌ２キャッシュアドレスアレイ
２４３  Ｌ２キャッシュデータアレイ
２４４  リプライ制御部
２４５  ヒット・ミス判定部
２４６  リクエスト生成制御部
２４７  Ｌ２キャッシュ無効化制御部
３００  Ｌ３キャッシュ
３０１  リクエスト制御部
３０２  Ｌ３キャッシュアドレスアレイ
３０３  Ｌ３キャッシュデータアレイ
３０４  リプライ制御部
３０５  Ｌ２キャッシュ保持情報
３０６  ヒット・ミス判定部
３０７  リクエスト生成制御部
３０８  無効化制御部
３２０  メモリ
５００，ｎ５００  コア
５０１  命令制御部
５０２  演算制御部
５２０  Ｌ１キャッシュ
５２１  リクエスト制御部
５２２  Ｌ１キャッシュアドレスアレイ
５２３  Ｌ１キャッシュデータアレイ
５２４  リプライ制御部
５２５  ヒット・ミス判定部
５２６  リクエスト生成制御部
５４０  Ｌ２キャッシュ
５４１  リクエスト制御部
５４２  Ｌ２キャッシュアドレスアレイ
５４３  Ｌ２キャッシュデータアレイ
５４４  リプライ制御部
５４５  リクエスト生成制御部
５４６  Ｌ２キャッシュ無効化制御部
６００  Ｌ３キャッシュ
６０１  リクエスト制御部
６０２  Ｌ３キャッシュアドレスアレイ
６０３  Ｌ３キャッシュデータアレイ
６０４  リプライ制御部
６０５  Ｌ２キャッシュ保持情報
６０６  ヒット・ミス判定部
６０７  リクエスト生成制御部
６０８  無効化制御部
６２０  メモリ
８００  プロセッサ
８１０  階層キャッシュメモリ
８１１  上位キャッシュメモリ
８１２  下位キャッシュメモリ
８２０  キャッシュヒット判定部
８３０  制御部
【図１】
2018163571.tif 000003
【図２】
2018163571.tif 000004
【図３】
2018163571.tif 000005
【図４】
2018163571.tif 000006
【図５】
2018163571.tif 000007
【図６】
2018163571.tif 000008
【図７】
2018163571.tif 000009
【図８】
2018163571.tif 000010
【図９】
2018163571.tif 000011
【図１０】
2018163571.tif 000012
【図１１】
2018163571.tif 000013
【図１２】
2018163571.tif 000014