(57)【要約】【課題】マルチレベルインクルージョンを満足しつつ、小さい回路規模で、検索を高速に行える複数のプロセッサの階層キャッシュメモリ装置およびデータ検索方法を提供する。【解決手段】１次キャッシュメモリ装置を内蔵する複数のプロセッサと、主記憶装置と、その間に設けられる２次キャッシュメモリ装置とを有する情報処理装置において、アドレスの一部から一意に決定される順番で、１つのＬ１用インデックスから複数のＬ２用インデックスを作成する手段（１１１、１２１、１３１、１４１）を設け、当該複数のＬ２用インデックスにより指定される２次キャッシュメモリ装置内の記憶領域の検索を行う手段とを備えた。【選択図】図４
2008129712.tif 000002
【特許請求の範囲】
【請求項１】
それぞれに主メモリに格納されるデータの一部の写しを記憶することが可能な１次キャッシュメモリを内蔵する複数のプロセッサと、
前記複数のプロセッサと前記主メモリとの間に設けられ、前記１次キャッシュより容量が大きく、少なくとも前記１次キャッシュメモリに格納されるデータと同じデータが記憶される２次キャッシュメモリと、
前記１次キャッシュメモリのキャッシュ検索を行うメモリアドレスのインデックスを用いて前記２次キャッシュメモリのキャッシュ検索を行う際に、前記メモリアドレスの一部のビット列であるフラグとキャッシュミス判定時に更新される候補番号との演算により一意に決定される前記２次キャッシュメモリの領域からキャッシュ検索を開始する２次キャッシュ制御手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記２次キャッシュ制御手段が、
前記２次キャッシュメモリのキャッシュ検索を行う際に、前記メモリアドレスの一部のビット列であるフラグとキャッシュミス判定時に更新される候補番号との演算により一意に決定される順番で、前記インデックスと１対ｎ（ｎは２以上の整数）の対応関係にある複数の前記２次キャッシュメモリの領域に対してキャッシュ検索を行うことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記２次キャッシュ制御手段が、
前記２次キャッシュメモリのキャッシュ検索を行う際に、前記メモリアドレスの一部のビット列であるフラグとキャッシュミス判定時に更新される候補番号との演算により一意に決定される順番で、前記インデックスと１対ｎ（ｎは２以上の整数）の対応関係にある複数の前記２次キャッシュメモリの領域に対してキャッシュ検索を行い、前記キャッシュミスの判定が｛（ｎ×Ｐ）／ｍ｝回行われたとき前記２次キャッシュメモリのキャッシュ検索を終了することを特徴とする請求項１記載の情報処理装置。
ただし、Ｐ（Ｐは２以上の整数）はプロセッサの数であり、１次キャッシュメモリがｎ（ｎは２以上の整数）ウェイのセットアソシアティブ方式、２次キャッシュメモリがｍ（ｍ＞ｎ）ウェイのセットアソシアティブ方式であるとする。
【請求項４】
それぞれに主メモリに格納されるデータの一部の写しを記憶することが可能なｎ（ｎは２以上の整数）ウェイ／セットアソシアティブ方式の１次キャッシュメモリを内蔵するP（Ｐは２以上の整数）個のプロセッサと、
前記P個のプロセッサと前記主メモリとの間に設けられ、前記１次キャッシュより容量が大きく、少なくとも前記１次キャッシュメモリに格納されるデータと同じデータが記憶されるｍ（ｍ＞ｎ）ウェイ／セットアソシアティブ方式の２次キャッシュメモリとを有する階層キャッシュメモリ構造の情報処理装置のデータ検索方法であって、
前記１次キャッシュメモリのキャッシュ検索を行うメモリアドレスのインデックスを用いて前記２次キャッシュメモリのキャッシュ検索を行う際に、前記メモリアドレスの一部のビット列であるフラグと、別個に設けられた候補番号との演算により一意に決定される前記２次キャッシュメモリの領域からキャッシュ検索を開始し、
前記キャッシュミスと判定される度に前記候補番号を更新し、その更新された候補番号と前記フラグとの演算により一意に決定される前記２次キャッシュメモリの次の領域からキャッシュ検索を行い、
前記キャッシュミスの判定が｛（ｎ×Ｐ）／ｍ｝回行われた時、前記２次キャッシュメモリのキャッシュ検索を終了する
ことを特徴とするデータ検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１次キャッシュメモリ装置を内蔵する複数のプロセッサと、主記憶装置と、その間に設けられる２次キャッシュメモリ装置とを有する情報処理装置およびデータ検索方法に関するものである。
【背景技術】
【０００２】
それぞれに１次キャッシュメモリ装置を内蔵する複数のプロセッサと主記憶装置との間に２次キャッシュメモリ装置を設けた階層キャッシュメモリ構成の情報処理装置は、広く使用されている。このような情報処理装置は、キャッシュメモリ装置が階層的に複数存在することになるため、データの一貫性を確保することが必要不可欠である。
【０００３】
データの一貫性を確保するためには、マルチレベルインクルージョンを満足することが重要な要素である。マルチレベルインクルージョンとは、２次キャッシュメモリ装置が複数のプロセッサ内の１次キャッシュメモリ装置に記憶されるデータと同じデータを含む状態にすることである。
【０００４】
マルチレベルインクルージョンを満足するために、各１次キャッシュメモリ装置に記憶されるデータの記憶領域と２次キャッシュメモリ装置に記憶されるデータの記憶領域とを対応させる手法が報告されている（例えば、非特許文献１参照。）。
【０００５】
マルチレベルインクルージョンを満足させたシステムにおいては、２次キャッシュメモリ装置からデータを読み出す際に、読み出しアドレスに該当するデータが格納されているか否かを判断するため、２次キャッシュメモリ装置内の複数の領域を検索する必要がある。上記の非特許文献１には、検索するアルゴリズムとして、単純な順次検索、ＭＲＵ（Ｍｏｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）とＰａｒｔｉａｌ  Ｃｏｍｐａｒｅに係る技術が記載されている。
【非特許文献１】Ｒ．Ｋｅｓｓｌｅｒ，Ｒ．Ｊｏｏｓｓ，Ａ．Ｌｅｂｅｃｋ，Ｍ．Ｈｉｌｌ，“Ｉｎｅｘｐｅｎｓｉｖｅ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  Ｓｅｔ−Ａｓｓｏｃｉａｔｉｖｉｔｙ，”  １６ｔｈ  ＩＳＣＡ，Ｍａｙ  １９８９，ｐｐ．１３１−１３９
【発明の開示】
【発明が解決しようとする課題】
【０００６】
１次キャッシュメモリ装置を内蔵する複数のプロセッサと２次キャッシュメモリ装置とを有する情報処理装置においては、処理速度の向上と回路の小規模化とを同時に満足することが好ましい。しかしながら、上記の非特許文献１で開示されている手法では、２次キャッシュメモリ装置内の記憶領域を、常に先頭領域から検索しているため、読み出そうとするデータが２次キャッシュメモリ装置に格納されているか否かの検索に多大な時間がかかるという問題があった。
【０００７】
また、２次キャッシュメモリ装置内の複数の記憶領域に対するデータ検索を高速化する、ＭＲＵ、Ｐａｒｔｉａｌ  Ｃｏｍｐａｒｅの手法ではハードウェア機構が複雑になるという問題があった。
【０００８】
本発明では、上記問題点を解決するためになされたものであって、マルチレベルインクルージョンを満足しつつ、小さい回路規模で、検索を高速に行える情報処理装置およびデータ検索方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の実施形態に係る情報処理装置は、それぞれに主メモリに格納されるデータの一部の写しを記憶することが可能な１次キャッシュメモリを内蔵する複数のプロセッサと、前記複数のプロセッサと前記主メモリとの間に設けられ、前記１次キャッシュより容量が大きく、少なくとも前記１次キャッシュメモリに格納されるデータと同じデータが記憶される２次キャッシュメモリと、前記１次キャッシュメモリのキャッシュ検索を行うメモリアドレスのインデックスを用いて前記２次キャッシュメモリのキャッシュ検索を行う際に、前記メモリアドレスの一部のビット列であるフラグとキャッシュミス判定時に更新される候補番号との演算により一意に決定される前記２次キャッシュメモリの領域からキャッシュ検索を開始する２次キャッシュ制御手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、マルチレベルインクルージョンを満足しつつ、小さい回路規模で、検索を高速に行える情報処理装置およびデータ検索方法を提供することを目的とする。
【発明を実施するための最良の形態】
【００１１】
以下、本発明における実施の形態について、図面に基づいて説明する。
【実施例１】
【００１２】
図１は、本発明の実施形態に係る情報処理装置の全体構成を示す図である。
【００１３】
実施形態の情報処理装置は、例えば、８つのプロセッサ１０Ａ〜１０Hと、プロセッサ１０Ａ〜１０Ｈのそれぞれに固有に設けられている１次キャッシュメモリ装置１１Ａ〜１１Hと、１次キャッシュメモリ装置１１Ａ〜１１Ｈとバス１４を介して接続された２次キャッシュメモリ装置２０と、２次キャッシュメモリ装置２０と接続されたメモリコントローラ３０と、メモリコントローラ３０により制御される主記憶装置４０とを備えている。
【００１４】
ここで、１次キャッシュメモリ装置１１Ａ〜１１Ｈは、記憶領域である１次キャッシュメモリ１２Ａ〜１２Ｈと当該記憶領域に対する読み出し、書き込みを制御する１次キャッシュ制御手段１３Ａ〜１３Ｈとから構成される。そして、１次キャッシュメモリ１２Ａ〜１２Ｈには、それぞれの１次キャッシュ制御手段１３Ａ〜１３Ｈの制御により主記憶装置４０に記憶されるデータの一部の写しが記憶される。
【００１５】
２次キャッシュメモリ装置２０は、記憶領域である２次キャッシュメモリ２１と当該記憶領域に対する読み出し、書き込みを制御する２次キャッシュ制御手段２２とから構成される。そして、２次キャッシュメモリ２１には、２次キャッシュ制御手段２２の制御により１次キャッシュメモリ装置１２Ａ〜１２Ｈに記憶されたデータと同じデータが記憶される。各プロセッサ１０Ａ〜１０Ｈによるメモリアクセス処理では、それぞれに対応する１次キャッシュメモリ１２Ａ〜１２Ｈ、２次キャッシュメモリ２１、主記憶装置４０がアクセスされる。
【００１６】
各プロセッサ１０Ａ〜１０Ｈは、主記憶装置４０などに対してデータやプログラムを読み出しあるいはデータの書き込みを行うために、２次キャッシュメモリ装置２０に対してコマンド情報を送信する。当該コマンド情報には、データのアドレス情報の他に、コマンド情報（ＲｅａｄまたはＷｒｉｔｅなど）、データ長を示す情報（キャッシュラインの大きさなど）などが含まれている。
【００１７】
また、プロセッサ１０Ａ〜１０Ｈから送信されたコマンド情報は、主記憶装置４０のみならず、対応する１次キャッシュメモリ装置１１Ａ〜１１Ｈおよび２次キャッシュメモリ装置２０にて受信される。
【００１８】
次に、プロセッサ１０Ａが１次キャッシュメモリ１２Ａ又は２次キャッシュメモリ２１又は主記憶装置４０をアクセスして、データを読み出す動作について説明する。なお、プロセッサ１０Ａ〜１０Ｈが、それぞれに固有な１次キャッシュメモリ装置１１Ａ〜１１Ｈをアクセスする仕組みは全て同じであり、ここではプロセッサ１０Ａによる動作を説明する。
【００１９】
１次キャッシュ制御手段１３Ａは、プロセッサ１０Ａから送信されたコマンド情報を受信する。当該コマンド情報に含まれるアドレスにより指定されるデータが１次キャッシュメモリ１２Ａに格納されている場合、１次キャッシュメモリ装置１１Ａはキャッシュヒットとなる。その場合、１次キャッシュ制御手段１３Ａは、１次キャッシュメモリ１２Ａから読み出した当該データをプロセッサ１０Ａへ送信する。
【００２０】
一方、前記アドレスにより指定されるデータが１次キャッシュメモリ１２Ａに格納されていない場合、１次キャッシュメモリ装置１１Ａはキャッシュミスとなり、動作を終了する。
【００２１】
２次キャッシュ制御手段２２は、１次キャッシュメモリ装置１１Ａに送られるコマンド情報を同時に受信する。受信したコマンド情報に含まれるアドレスにより指定されるデータが２次キャッシュメモリ２１に格納されている場合、２次キャッシュメモリ装置２０はキャッシュヒットとなる。そして、２次キャッシュ制御手段２２は、２次キャッシュメモリ２１から読み出したデータをプロセッサ１０Ａおよび１次キャッシュメモリ装置１１Ａへ供給する。前記アドレスにより指定されるデータが２次キャッシュメモリ２１に格納されていない場合、２次キャッシュメモリ装置２０はキャッシュミスとなり、キャッシュミス時の動作が行われる。その場合、メモリコントローラ３０を介して主記憶装置４０から読み出されたデータをプロセッサ１０Ａ、１次キャッシュメモリ装置１１Ａ、および２次キャッシュメモリ装置２０へ供給する。なお、１次キャッシュメモリ装置１１Ａ、あるいは２次キャッシュメモリ装置２０からプロセッサ１０Ａにデータが供給されていた場合は、主記憶装置４０が供給したデータは無効とされる。
【００２２】
ここで、１次キャッシュメモリ１２Ａ〜１２Ｈと２次キャッシュメモリ２１は、１つのインデックスで指定される記憶領域にｎ個のデータが格納されるｎウェイのセットアソシアティブ方式のメモリで構成されている。ｎウェイのセットアソシアティブ方式のメモリでは、１回の検索でｎ個のラインデータが検索されることから、ウェイ数ｎを大きくすることにより、キャッシュメモリ装置におけるコンフリクトを防ぐ効果がある。ただし、ウェイ数ｎを一定以上大きくするのは実装上困難である。
【００２３】
次に、１次キャッシュメモリ装置１１Ａ〜１１Ｈの領域と２次キャッシュメモリ装置２０の対応関係について説明する。
【００２４】
ここでは、１次キャッシュメモリ装置１１Ａ〜１１Ｈを、例えば、記憶容量を１６ｋＢｙｔｅ、２ウェイのセットアソシアティブ方式、キャッシュラインサイズを３２Ｂｙｔｅとし、２５６個の記憶領域を備えているものとした。
【００２５】
また、２次キャッシュメモリ装置２０を、例えば、記憶容量を２５６ｋＢｙｔｅ、４ウェイのセットアソシアティブ方式、キャッシュラインサイズを３２Ｂｙｔｅ、２０４８個の記憶領域を備えているものとした。
【００２６】
そして、１次キャッシュ制御手段１３Ａは、プロセッサ１０Ａから送信された３２ｂｉｔのアドレスから１９ｂｉｔのＬ１用タグ、８ｂｉｔのＬ１用インデックス、５ｂｉｔのライン内オフセットを抽出する。Ｌ１用タグは、キャッシュラインに格納されたラインデータを識別するために用いられる。Ｌ１用インデックスは、ラインデータが格納される記憶領域を指定するために用いられる。ライン内オフセットは、ラインデータ内部の何番目のデータかを識別するために用いられる。
【００２７】
１次キャッシュ制御手段１３Ａは、Ｌ１用インデックスを用いて１次キャッシュメモリ１２Ａのアドレスを特定する。次に、特定したアドレスから読み出した複数のラインデータのタグとＬ１用タグとをそれぞれ比較する。その比較が一致すればキャッシュヒット、すべて不一致ならばキャッシュミスである。さらに、キャッシュヒットの際には、ライン内オフセットによりラインデータ内のデータを指定し、当該データをプロセッサ１０Ａに供給する。
【００２８】
一方、２次キャッシュ制御手段２２は、プロセッサ１０Ａから送信された３２ｂｉｔのアドレスから、１９ｂｉｔのＬ２用タグ（Ｌ１用タグと同じ）、５ｂｉｔのライン内オフセット（Ｌ１用のインデックスと同じ）、８ｂｉｔのインデックス（Ｌ１用インデックスと同じ）を抽出する。さらに、８ｂｉｔのインデックスの上位に、例えば、３ｂｉｔの候補番号を結合して、１１ｂｉｔのＬ２用インデックスを作成する。これは、１つのＬ１用インデックスと８つのＬ２用インデックスとに対応関係が設定されることを意味する。
【００２９】
上記１次キャッシュメモリ装置１１Ａ〜１１Ｈと２次キャッシュメモリ装置２０の対応関係についての具体例を図２に示す。
【００３０】
１次キャッシュメモリ装置１１Ａの１次キャッシュ制御手段１３Ａは、プロセッサ１０Ａから送信されたアドレスから抽出した８ｂｉｔのＬ１用インデックスが、例えば１００番地であったとする。このとき、２次キャッシュメモリ装置２０の２次キャッシュ制御手段２２も、１次キャッシュ制御手段１３Ａと同様に、プロセッサ１０Ａから送信されたアドレスからＬ１用インデックスと同じ１００番地のインデックスを抽出する。
【００３１】
これに対し、２次キャッシュメモリ２１では、１次キャッシュメモリ１２Ａのインデックス容量（２５６）に比べ８倍のインデックス容量（２０４８）を有する。そのため、２次キャッシュ制御手段２２は、抽出したＬ１用インデックスに３ｂｉｔの候補番号を結合して８つのＬ２用インデックスを作成する。ここで、例えば、８ｂｉｔのＬ１用インデックスのＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）側に３ｂｉｔの候補番号を結合する場合、１００番地のＬ１用インデックスから、１００番地、３５６（１００＋２５６）番地、６１２（１００＋５１２）番地・・・１８９２（１００＋１７９２）番地の８つのＬ２用インデックスが作成される。つまり、Ｌ１用インデックスが１００番地であるアドレスのデータは、１００番地、３５６番地、６１２番地・・・１８９２番地の８つの候補の中のいずれかに格納される。各番地からは３２ｂｙｔｅのラインデータが読み出される。
【００３２】
即ち、マルチレベルインクルージョンを満足するためには、Ｌ１用インデックスで指定される各１次キャッシュメモリ１２Ａ〜１２Ｈの記憶領域に格納された１６個のラインデータを、８つのＬ２用インデックスで指定される２次キャッシュメモリ２１の３２個のキャッシュラインに格納することとすればよい。
【００３３】
次に、２次キャッシュ制御手段２２において、Ｌ２用インデックスを作成するＬ２用インデックス算出部の構成を説明する。図３は、Ｌ２用インデックス算出部の内部構成を示すブロック図である。
【００３４】
Ｌ２用インデックス算出部１００の入力は、８ｂｉｔのＬ１用インデックスとＬ２用タグの一部のビット列であるフラグである。ここでは、例えば、フラグをＬ２用タグの下位３ｂｉｔとした。Ｌ１用インデックスは、８つのＬ２用インデックスを算出するために用いられる。フラグは、Ｌ２用インデックス算出部１００が８つのＬ２用インデックスに指定される領域を検索する順番を決定するために用いられる。
【００３５】
Ｌ２用インデックス算出部１００は、候補番号を格納する候補番号格納部１１０と、候補番号を変化させる候補番号変化部１２０と、フラグと候補番号とを演算する演算部１３０と、Ｌ１用インデックスと演算部１３０の演算結果とを結合してＬ２用インデックスを作成する結合部１４０とを有している。
【００３６】
図４は、前記Ｌ２用インデックス算出部１００の内部構成の具体例を示す。候補番号格納部１１０に対応する候補番号レジスタ１１１と、候補番号変化部１２０に対応するインクリメント演算器１２１と、演算部１３０に対応する排他的論理和演算器１３１と、結合部１４０に対応する結合器１４１とを有している。
【００３７】
図５は、Ｌ２用インデックス算出部１００の動作を示すフローチャートである。例えば、プロセッサ１０Ａから送信されたコマンドを２次キャッシュ制御手段２２が受信し、当該コマンドに含まれるアドレスのＬ１用インデックスとフラグとがＬ２用インデックス算出部１００に入力されて、動作を開始する。ここでは、Ｌ１用インデックスが１００（０１１００１００）番地、フラグが０（０００）であるとする。
【００３８】
候補番号レジスタ１１１は、ステップＳ１０１において初期化された候補番号を格納する。ここで、候補番号は３ｂｉｔのビット列であり、０（０００）に初期化される。ただし、Ｌ２用インデックス算出部１００の動作において、候補番号は０〜
３までの値しかとらず、下位２ｂｉｔのみが有効ビットとなる。候補番号のビット幅を３ｂｉｔとしたのは、後に候補番号とフラグ（３ｂｉｔ）を排他的論理和演算するため、フラグとビット幅を同じにするためである。
【００３９】
候補番号が０（０００）のときに作成される１番目のＬ２用インデックスを第１候補、次の候補番号１（００１）のときに作成される２番目のＬ２用インデックスを第２候補、さらに次の候補番号２（０１０）のときに作成される３番目のＬ２用インデックスを第３候補、さらに次の候補番号３（０１１）のときに作成される４番目のＬ２用インデックスを第４候補と呼ぶ。
【００４０】
排他的論理和演算器１３１は、ステップＳ１０２において候補番号レジスタ１１１に格納された候補番号０（０００）とフラグ０（０００）を排他的論理和演算する。第１候補作成時の演算結果は０（０００）である。以下、同様にステップＳ１０２の演算が行われたとすると、候補番号１（００１）のときの演算結果は１（００１）、候補番号２（０１０）のときの演算結果は２（０１０）、候補番号３（０１１）のときの演算結果は３（０１１）となる。
【００４１】
結合器１４１は、ステップＳ１０３において排他的論理和演算器１３１の３ｂｉｔ出力とメモリアドレスの８ｂｉｔＬ１用インデックスとを結合する。候補番号が０（０００）のとき、排他的論理和演算器１３１の出力０（０００）とＬ１用インデックス１００（０１１００１００）とを結合し、第１候補として１００番地（００００１１００１００）を生成して２次キャッシュメモリ２１に出力する。同様に、ステップＳ１０３の結合が行われたとすると、第２候補では３５６番地（００１０１１００１００）を生成して２次キャッシュメモリ２１に出力する。また、第３候補では６１２番地（０１００１１００１００）を生成して２次キャッシュメモリ２１に出力する。第４候補では８６８番地（０１１０１１００１００）を生成して２次キャッシュメモリ２１に出力する。
【００４２】
作成された１１ｂｉｔのＬ２用インデックスによって２次キャッシュメモリ２１のアドレスが指定され、読み出しアクセスが行われる（Ｓ１０４）。即ち、Ｌ２用インデックスに指定される記憶領域から読み出したラインデータのタグとＬ２用タグとを比較して、読み出しアクセスの成否（キャッシュヒット判定／キャッシュミス判定）を判断する（ステップＳ１０５）。
【００４３】
キャッシュヒット判定であった場合は、Ｌ２用インデックス算出部１００は動作を終了する。一方、キャッシュミス判定であった場合、インクリメント演算器１２１は、ステップＳ１０６において候補番号レジスタ１１１に格納されている候補番号の値に１を加える。候補番号を変化させる方式は、候補番号を一度初期化してから次に初期化するまでに、重複した値をとらないような任意の方法でよい。ここでは、候補番号を変化させる方式として、候補番号をインクリメントさせる方式を例としている。その後、上述したステップＳ１０１乃至Ｓ１０４の動作を実行して、次に作成されるＬ２用インデックスによる読み出しアクセスの成否を判断する。読み出しアクセスが失敗した場合には、ステップＳ１０６において候補番号を変化させて、ステップＳ１０１乃至Ｓ１０５を実行するという処理を繰り返す。
【００４４】
次に、２次キャッシュ制御手段２２による書き込み時の空き検索の手法を、図６を参照して説明する。
【００４５】
例えば、２次キャッシュ用制御手段２２はデータの書き込みに際し、図４で説明したアドレス生成の論理により１番目に作成したＬ２用インデックスを第１候補の書き込みアドレスとして２次キャッシュメモリ２１に出力する。第１候補のＬ２用インデックスにより指定される２次キャッシュメモリ２１の記憶領域には、４つのキャッシュラインが含まれており、２次キャッシュ制御手段２２はその４つのキャッシュラインに対して空きがあるか否かを検索する。
【００４６】
まず、第１候補により指定される２次キャッシュメモリ２１の４つのキャッシュライン中にＩｎｖａｌｉｄのフラグが設定されているキャッシュラインが存在した場合、当該キャッシュラインを空きとする（ステップＳ２０１、Ｓ２０２、Ｓ２０３）。なお、Ｉｎｖａｌｉｄなキャッシュラインが複数存在した場合には、所定のルールにより決定された１つのキャッシュラインをデータ書き込み領域として設定する。
【００４７】
一方、ステップＳ２０２でＩｎｖａｌｉｄなキャッシュラインが存在しなかった場合、１次キャッシュメモリ１２Ａ〜１２Ｈから削除されたデータでありながら、２次キャッシュメモリ２１には格納されているラインデータを検索し、当該ラインデータが格納されているキャッシュラインをデータ書き込み領域として設定する（ステップＳ２０４、Ｓ２０５、Ｓ２０６）。上記条件に適合するキャッシュラインが複数存在した場合には、所定のルールにより決定された１つのキャッシュラインをデータ書き込み領域として設定する。
【００４８】
第１候補のＬ２用インデックスによりデータ書き込み領域が見つからなかった場合は、次の領域が検索されることになる。以後、図４で説明したアドレス生成の論理により作成した第２候補のＬ２用インデックスを用いてデータ書き込み領域を検索、それでもデータ書き込み領域が見つからなければ、第３候補、第４候補と順次検索を行う。
【００４９】
書き込み時の空き検索は第１候補から順番に行われるため、第１候補により指定される記憶領域に格納される確率は最大であり、第２候補により指定される領域に格納される確率は２番目に大きく、第３候補により指定される領域に格納される確率は３番目に大きい、第４候補により指定される領域に格納される確率は４番目に大きい。
【００５０】
ここで、１次キャッシュメモリ１２Ａ〜１２Ｈおよび２次キャッシュメモリ２１にデータが全く格納されていない状態から、プロセッサ１０Ａ〜１０Ｈが、内蔵する１次キャッシュメモリ１２Ａ〜１２Ｈおよび２次キャッシュメモリ２１に対して、データＡ０，Ａ１、Ｂ０，Ｂ１、〜Ｈ０，Ｈ１の書き込みを行った場合を考える。なお、データＡ０，Ａ１、Ｂ０，Ｂ１、〜Ｈ０，Ｈ１のＬ１用インデックスは１００であり、フラグは０（０００）であったとする。このときの１次キャッシュメモリ１２Ａ〜１２Ｈおよび２次キャッシュメモリ２１を図７に示す。
【００５１】
上記の通り、Ｌ１用インデックス１００、フラグ０（０００）における第１候補は１００番地、第２候補は３５６番地・・・第８候補は１８９２番地である。ここで、書き込みのための空き検索は、第１候補から順番に行われるため、データＡ０，Ａ１、Ｂ０，Ｂ１、〜Ｈ０，Ｈ１は第１候補から第４候補に指定される記憶領域に格納される。
【００５２】
ここで、さらにプロセッサ１０Ａが、Ｌ１用インデックス１００、フラグ０（０００）のデータＸＸの書き込みコマンドを１次キャッシュメモリ装置１０Ａに送信し、１次キャッシュメモリ１２ＡのデータＡ１が削除され、データＸＸが書き込まれたとする。
【００５３】
２次キャッシュメモリ２１では、図６で説明した書き込み時の空き検索方法により、データ書き込み領域を決定する。２次キャッシュメモリ２１に格納されているデータ
Ａ０，Ａ１、Ｂ０，Ｂ１、〜Ｈ０，Ｈ１において、ｉｎｖａｌｉｄのフラグが設定されているものはない。しかし、データＡ１は既に削除されているため、図６のステップＳ２０４により、１００番地のｗａｙ１のキャッシュラインのデータＡ１がデータＸＸに書き変えられる。この後、さらに２次キャッシュメモリ２１に対して、Ｌ１用インデックス１００、フラグ０（０００）のデータの書き込みが行われたとしても、同様にデータ書き込み領域を決定できる。
【００５４】
よって、本実施の形態では、１次キャッシュメモリ１２Ａ〜１２Ｈから削除されたデータでありながら、２次キャッシュメモリ２１に格納されているラインデータは、第１候補〜第４候補に指定される記憶領域に必ず存在することが保証される。そのため、第５候補以降にデータが書き込まれることはない。よって、２次キャッシュメモリ２１からのデータ読み出し時の検索においても、第１候補〜第４候補までを検索すればよい
ここで、プロセッサの数Ｐ（Ｐは２以上の整数）、プロセッサに内蔵された１次キャッシュメモリをｎ（ｎは２以上の整数）ウェイのセットアソシアティブ方式、それぞれのプロセッサと接続された２次キャッシュメモリをｍ（ｍ＞ｎ）ウェイのセットアソシアティブ方式とする。
【００５５】
ここで、Ｐ個の１次キャッシュメモリにおいて、特定のＬ１用インデックス（例えば、１００番地）により指定される領域には、（ｎ×Ｐ）個のデータが格納されている。上記のマルチレベルインクルージョンを満足するために、Ｐ個の１次キャッシュメモリに格納された（ｎ×Ｐ）個のデータを、２次キャッシュメモリ２１に格納する。（ｎ×Ｐ）個のデータは、｛（ｎ×Ｐ）／ｍ｝個のＬ２用インデックスに指定される記憶領域に格納することができる。よって、図６で説明した書き込み時の空き検索方法と同様の手法を用いると、第１候補〜第｛（ｎ×Ｐ）／ｍ｝候補に指定されるいずれかの記憶領域に（ｎ×Ｐ）個のデータは必ず書き込まれる。このとき、２次キャッシュメモリ２１からのデータ読み出し時の検索では、第１候補〜第｛（ｎ×Ｐ）／ｍ｝候補までを検索すればよい。
【００５６】
次に、２次キャッシュ制御手段２２による読み出し時のデータ検索方法について、図８を参照して説明する。
【００５７】
データ書き込み時の空き検索と同様に、２次キャッシュ制御手段２２はデータの読み出しに際し、図４で説明したアドレス生成の論理によりまず、１番目のＬ２用インデックスを生成し、そのＬ２用インデックスを第１候補の読み出しアドレスとして用いて２次キャッシュメモリ２１を検索する。２次キャッシュメモリ２１の第１候補により指定される領域には、４つのキャッシュラインが存在する。
【００５８】
そこでまず、第１候補により指定される２次キャッシュメモリ２１の４つのキャッシュラインに格納されたラインデータを同時に読み出し、それぞれのラインデータのタグとＬ２用タグとが一致するか否かを判定する（ステップＳ３０１、Ｓ３０２）。ラインデータのタグとＬ２用タグとが一致する組があればキャッシュヒット判定を行い、一致する組がなければキャッシュミス判定とする。
【００５９】
キャッシュヒット判定であった場合（ステップＳ３０３）、Ｌ２用タグに対応するラインデータを出力すると共に、ライン内オフセットを用いて要求されたデータを抽出する。抽出したデータをプロセッサ１０Ａに送信する。
【００６０】
一方、キャッシュミス判定であった場合（ステップＳ３０４）、図４で説明したアドレス生成の論理により作成した第２候補のＬ２用インデックスを用いて、ステップＳ３０１、Ｓ３０２を実行し、キャッシュヒット判定／キャッシュミス判定を行う。キャッシュミス判定であるならば、第３候補、第４候補と順次検索を行う。上記の通り、第５候補以降にデータが書き込まれることはないので、第４候補により指定される記憶領域を検索し、キャッシュミス判定となる場合には主記憶装置４０からのデータ読み出しが必要となる。
【００６１】
本実施の形態では、４回のキャッシュミス判定を行った際は、主記憶装置４０からのデータ読み出しが必要となる。主記憶装置４０からのデータ読み出しが必要と判断するまでに要するキャッシュミス判定の回数は、上記の通り、情報処理装置の構成、即ち、プロセッサの数Ｐ、プロセッサに内蔵された１次キャッシュメモリのウェイ数ｎ、それぞれのプロセッサと接続された２次キャッシュメモリのウェイ数ｍから｛（ｎ×Ｐ）／ｍ｝回と決定することができる。
【００６２】
以上のような構成をとることにより、マルチレベルインクルージョンを満足しつつ、アドレスになんらの情報を付加することなく、フラグとＬ１用インデックスとを利用し、データ格納領域が２次キャッシュメモリ２１内の第１候補〜第４候補に特定できる。さらに、データの存在確率が大きい第１候補〜第４候補の順番で２次キャッシュメモリ２１内の読み出しデータを検索するため、検索回数を低減でき、２次キャッシュメモリ装置２０の動作の高速化と低消費電力化を実現できる。
【００６３】
また、アドレスの一部であるＬ１用インデックスとフラグとを有効に活用しており、小さい回路規模で上記効果を実現している。これは、Ｌ１用インデックスから複数のＬ２用インデックスを作成する上で主に追加された構成要件が、候補番号レジスタ１１１とインクリメント演算器１２１、排他的論理和演算器１３１、結合器１４１であることからも明らかである。
【００６４】
さらに、排他的論理和演算器１３１の代わりとして、フラグと候補番号とに１対１対応する出力結果を得られる任意の演算を選択可能であるが、その中でも排他的論理和演算は極めて簡単な回路構成で実現可能である。他にも、演算の種類としては桁あふれを無視した加算を行うことも可能である。
【００６５】
また、実施の形態で説明したのは図１に示す１次キャッシュメモリ装置および２次キャッシュメモリ装置が階層キャッシュメモリ装置を構成した場合であったが、図９に示すような階層キャッシュメモリ装置についても同様に適用でき、その応用範囲は広い。
【００６６】
さらに、本実施の形態に係る情報処理装置、データ検索方法は３次キャッシュメモリ装置、４次キャッシュメモリ装置、またはそれ以上の階層のキャッシュメモリ装置を構成要件とした場合においても、容易に拡張可能である。
【００６７】
すなわち、３次キャッシュメモリ装置は、当該３次キャッシュメモリ装置に接続される２次キャッシュメモリ装置の記憶容量の合計以上の記憶容量を有し、Ｌ２用インデックスから複数のＬ３用インデックスを作成する制御手段を有する。このとき、候補番号のビット数は、Ｌ３用インデックスのビット数とＬ２用インデックスのビット数の差分となる。候補番号と同じビット数だけ、Ｌ３用タグからビット列を抽出し、当該ビット列をフラグとして使用する。フラグとＬ２用インデックスとに一意に決定される順番で、Ｌ３用タグとＬ２用インデックスから複数作成されるＬ３用インデックスとを用いて、３次キャッシュメモリ装置へのアクセスを行う。４次キャッシュメモリ装置以降についても同様に実現可能である。
【図面の簡単な説明】
【００６８】
【図１】実施の形態にかかる複数プロセッサと階層キャッシュメモリ装置とからなる情報処理装置の全体構成を示す図である。
【図２】Ｌ１用インデックスと複数のＬ２用インデックスとの対応関係を示す図である。
【図３】Ｌ２用インデックス算出部１００の構成を示したブロック図である。
【図４】Ｌ２用インデックス算出部１００の構成の具体例を示した図である。
【図５】Ｌ２用インデックス算出部１００の動作を示すフローチャートである。
【図６】２次キャッシュメモリ装置２０に対するデータ書き込みのための空き検索の方法を示したフローチャートである。
【図７】１次キャッシュメモリ１２Ａ〜１２Ｈと２次キャッシュメモリ２１に格納されたデータを示す図である。
【図８】２次キャッシュメモリ装置２０からのデータ読み出しのためのデータ検索の方法を示したフローチャートである。
【図９】複数プロセッサと階層キャッシュメモリ装置とからなる情報処理装置の全体構成の一例を示す図である。
【符号の説明】
【００６９】
１０Ａ〜１０Ｈ  プロセッサ
１１Ａ〜１１Ｈ  １次キャッシュメモリ装置
１２Ａ〜１２Ｈ  １次キャッシュメモリ
１３Ａ〜１３Ｈ  １次キャッシュ制御手段
１４  バス
２０  ２次キャッシュメモリ装置
２１  ２次キャッシュメモリ
２２  ２次キャッシュ制御手段
３０  メモリコントローラ
４０  主記憶装置
１００  Ｌ２用インデックス算出部
１１０  候補番号格納部
１０１  候補番号レジスタ
１２０  候補番号変化部
１２１  インクリメント演算器
１３０  演算部
１３１  排他的論理和演算器
１４０  結合部
１４１  結合器
【図１】
2008129712.tif 000003
【図２】
2008129712.tif 000004
【図３】
2008129712.tif 000005
【図４】
2008129712.tif 000006
【図５】
2008129712.tif 000007
【図６】
2008129712.tif 000008
【図７】
2008129712.tif 000009
【図８】
2008129712.tif 000010
【図９】
2008129712.tif 000011