(57)【要約】【課題】タグ・フィールドおよびキャッシュ・ライン・インデックス・フィールドを備える実効アドレスを介してキャッシュ・メモリへのアクセスを操作するための方法を提供する。【解決手段】本方法は、タグ・フィールドを第１の群のビットおよび第２の群のビットへ分割することを含む。ライン・インデックス・ビットおよび第１の群のビットがセット・ディレクトリにおいて検索される。実効アドレスのそれぞれのキャッシュ・ラインを含むセットを示すセット識別子が生成される。セット識別子、ライン・インデックス・ビットおよび第２の群のビットが有効化ディレクトリにおいて検索される。第２の検索に基づいてセットにおけるキャッシュ・ラインの存在を判定することに応答して、ヒット信号が発生される。【選択図】図２
2020523678.tif 000002
【特許請求の範囲】
【請求項１】
タグ・フィールドおよびキャッシュ・ライン・インデックス・フィールドを備える実効アドレスを介してキャッシュ・メモリへのアクセスを操作するための方法であって、前記キャッシュ・メモリが、論理的にアドレス付けおよび論理的にタグ付けされている１次キャッシュ・ディレクトリを備えており、前記方法が、
前記タグ・フィールドの第１の群のビットおよび第２の群のビットを判定することと、
前記キャッシュ・ライン・インデックス・フィールドのライン・インデックス・ビットを使用して論理的にインデックス付けされかつ前記第１の群のビットを使用して論理的にタグ付けされるセット・ディレクトリを設けることと、
前記ライン・インデックス・ビットおよびセット・ビットを使用して論理的にインデックス付けされかつ前記第２の群のビットを使用して論理的にタグ付けされる有効化ディレクトリを設けることと、
前記セット・ディレクトリにおいて前記実効アドレスの前記ライン・インデックス・ビットおよび前記第１の群のビットを求めて第１に検索し、そして前記実効アドレスのそれぞれのキャッシュ・ラインを含むセットを示すセット識別子を生成することと、
前記有効化ディレクトリにおいて前記実効アドレスの前記セット識別子、前記ライン・インデックス・ビットおよび前記第２の群のビットを求めて第２に検索することと、
前記第２の検索に基づいて前記セットにおける前記キャッシュ・ラインの存在を判定することに応答して、ヒット信号を発生することと、
を含む、方法。
【請求項２】
前記第２の検索が前記セットにおける前記キャッシュ・ラインの存在を確認しない場合、ミス信号を発生する、請求項１に記載の方法。
【請求項３】
前記キャッシュ・メモリが変換ルックアサイド・バッファ（ＴＬＢ）を更に備えており、前記１次キャッシュ・ディレクトリにおける所与のエントリが有効ビット、前記実効アドレスの一部分およびセット・インデックスを記憶しており、前記第２の検索が前記セットにおける前記キャッシュ・ラインの存在を確認しない場合、前記方法が、
前記１次キャッシュ・ディレクトリにおいて前記ライン・インデックス・ビットを求めて検索して、各見つけられるエントリに対して、論理ポインタに帰着することであり、前記論理ポインタが、前記エントリが存在する前記セットの前記セット・インデックスおよび前記実効アドレスの前記一部分を備える、ことと、
前記論理ポインタのうち前記セット・インデックスが前記セット識別子に一致する論理ポインタを選択することと、
前記実効アドレスと関連する絶対アドレスを特定するために前記ＴＬＢにおいて前記実効アドレスを求めて検索することと、
前記キャッシュ・メモリのより高レベルの２次キャッシュ・ディレクトリにおける各セットにおける前記実効アドレスに対応するエントリであり、他の絶対アドレスを備える、前記エントリを得るために前記２次キャッシュ・ディレクトリにおいて前記実効アドレスを求めて検索することと、
前記２次キャッシュ・ディレクトリの各得られた絶対アドレスを前記ＴＬＢの前記絶対アドレスと比較して、前記２次キャッシュ・ディレクトリのセットの他のセット識別子に帰着することと、
前記他のセット識別子を有する前記２次キャッシュ・ディレクトリの前記セットの前記エントリの論理アドレスを前記選択された論理ポインタと比較し、そして前記比較の結果に基づいてミス信号を確認するもしくは前記セットおよび有効化ディレクトリをそれに応じて更新するまたはその両方を行うことと、
を更に含む、請求項１に記載の方法。
【請求項４】
前記１次キャッシュ・ディレクトリの前記検索が前記第１の検索と並列に行われる、請求項３に記載の方法。
【請求項５】
前記論理ポインタの前記有効ビットが有効状態に設定されている場合に前記ヒット信号の発生が行われることを更に含む、請求項４に記載の方法。
【請求項６】
前記ＴＬＢにおける前記検索および前記２次キャッシュ・ディレクトリにおける前記検索が並列に行われる、請求項３に記載の方法。
【請求項７】
前記第１の群のビットが前記タグ・フィールドからの最下位ビットであり、そして前記第２の群のビットが前記タグ・フィールドからの最上位ビットである、請求項１に記載の方法。
【請求項８】
前記有効化ディレクトリが、前記キャッシュ・メモリの全てのセットの各キャッシュ・ラインごとに１つのディレクトリ・エントリを保持する１つの物理アレイ構造から構築される、請求項１に記載の方法。
【請求項９】
前記１次キャッシュ・ディレクトリにおける所与のエントリが有効ビット、前記実効アドレスの一部分およびセット・インデックスを記憶しており、前記方法が、前記第１の検索と並列に、前記１次キャッシュ・ディレクトリにおいて前記ライン・インデックス・ビットを検索して、前記１次キャッシュ・ディレクトリにおける各見つけられるエントリに対する有効ビット値に帰着することと、前記有効ビット値のうち関連するセット・インデックスが前記セット識別子に一致する有効ビット値を選択することであり、前記有効ビット値が有効状態を示す場合に前記ヒット信号の発生が行われる、こととを更に含む、請求項１に記載の方法。
【請求項１０】
前記１次キャッシュ・ディレクトリがＬ１レベル・キャッシュ・ディレクトリである、請求項１に記載の方法。
【請求項１１】
前記２次キャッシュ・ディレクトリがＬ２レベル・キャッシュ・ディレクトリである、請求項３に記載の方法。
【請求項１２】
前記キャッシュ・メモリが、２次キャッシュ・ディレクトリを更に備えるマルチ・レベル・キャッシュ・ディレクトリである、請求項１に記載の方法。
【請求項１３】
前記１次キャッシュ・ディレクトリにおける所与のエントリが有効ビット、前記実効アドレスの一部分およびセット・インデックスを記憶しており、前記方法が、
前記実効アドレスのシノニムである第２の実効アドレスを受けることと、
前記第２の実効アドレスを使用して前記第１および第２の検索を繰り返すことと、
前記第２の検索が前記第２の実効アドレスによって参照される前記キャッシュ・ラインの存在を確認しない場合、前記第２の実効アドレスに対応する前記セット・ディレクトリの前記エントリを無効化することと、
ミスを検出するために前記第２の実効アドレスを使用して前記第１の検索を行うことと、
前記１次キャッシュ・ディレクトリにおいて前記第２の実効アドレスを求めて検索して、前記１次キャッシュ・ディレクトリにおける各セットに対する論理ポインタに帰着することであり、前記論理ポインタが前記セット・インデックスおよび前記第２の実効アドレスの一部分を備える、ことと、
前記キャッシュ・メモリのより高レベルの２次キャッシュ・ディレクトリにおける各セットにおける前記第２の実効アドレスに対応するエントリを得るために前記２次キャッシュ・ディレクトリにおいて前記第２の実効アドレスを求めて検索することと、
前記２次キャッシュ・ディレクトリの前記セットの前記エントリの論理アドレスを前記論理ポインタの各々と比較し、そして前記比較の結果に基づいて前記１次キャッシュ・ディレクトリにおける前記キャッシュ・ラインの存在を確認することと、
前記実効アドレスに関連したエントリを前記第２の実効アドレスで上書きすることによって前記セットおよび有効化ディレクトリを更新することと、
前記第１の検索、前記第２の検索および前記ヒット信号の発生のステップを繰り返すことと、
を更に含む、請求項１に記載の方法。
【請求項１４】
前記有効化ディレクトリのエントリを無効化するための要求を受けることに応答して、前記１次キャッシュ・ディレクトリにおける対応するエントリの有効ビットをそれに応じて設定することを更に含む、請求項１に記載の方法。
【請求項１５】
前記１次キャッシュ・ディレクトリと関連付けて第１の補助データ構造を設けることであり、前記第１の補助データ構造の各エントリが、マルチプロセッサ・システムのＴＬＢパージ要求に示される情報を反映する前記実効アドレスのビットを備える、ことと、前記受けた要求に対応する前記第１の補助データ構造におけるエントリを特定することであり、前記特定されるエントリが前記１次キャッシュ・ディレクトリのエントリを示す、こととを更に含む、請求項１４に記載の方法。
【請求項１６】
前記１次キャッシュ・ディレクトリと関連付けて第２の補助データ構造を設けることであり、前記第２の補助データ構造が論理的にインデックス付けおよび物理的にタグ付けされている、ことと、前記１次キャッシュにエントリを記憶するための要求を受けることに応答して、記憶場所の絶対アドレスを特定するために前記第２の補助データ構造を使用し、そして前記絶対アドレスを使用して前記記憶場所に前記エントリを記憶することとを更に含む、請求項１に記載の方法。
【請求項１７】
タグ・フィールドおよびキャッシュ・ライン・インデックス・フィールドを備える実効アドレスを介してキャッシュ・ラインへのアクセスを制御するための装置であって、前記タグ・フィールドが第１の群のビットおよび第２の群のビットを備えており、前記装置が、
−  論理的にアドレス付けおよび論理的にタグ付けされている１次キャッシュ・ディレクトリと、
−  前記キャッシュ・ライン・インデックス・フィールドのライン・インデックス・ビットを使用して論理的にインデックス付けされかつ前記第１の群のビットを使用して論理的にタグ付けされているセット・ディレクトリと、
−  前記ライン・インデックス・ビットおよびセット・ビットを使用して論理的にインデックス付けされかつ前記第２の群のビットを使用して論理的にタグ付けされている有効化ディレクトリと、
を備え、
前記セット・ディレクトリが、前記実効アドレスの前記ライン・インデックス・ビットおよび前記第１の群のビットを受け、そして前記実効アドレスのそれぞれのキャッシュ・ラインを含むセットを示すセット識別子を生成するために構成されており、
前記有効化ディレクトリが、前記実効アドレスの前記セット識別子、前記ライン・インデックス・ビットおよび前記第２の群のビットを受け、そして前記キャッシュ・ラインがあるセットを示すセット識別子を返すために構成されている、
装置。
【請求項１８】
コンピュータ可読プログラム・コードが具現化されたコンピュータ可読記憶媒体を備えるコンピュータ・プログラム製品であって、前記コンピュータ可読プログラム・コードが、
タグ・フィールドの第１の群のビットおよび第２の群のビットを判定するステップと、
キャッシュ・ライン・インデックス・フィールドのライン・インデックス・ビットを使用して論理的にインデックス付けされかつ前記第１の群のビットを使用して論理的にタグ付けされるセット・ディレクトリを設けるステップと、
前記ライン・インデックス・ビットおよびセット・ビットを使用して論理的にインデックス付けされかつ前記第２の群のビットを使用して論理的にタグ付けされる有効化ディレクトリを設けるステップと、
前記セット・ディレクトリにおいて実効アドレスの前記ライン・インデックス・ビットおよび前記第１の群のビットを求めて第１に検索し、そして前記実効アドレスのそれぞれのキャッシュ・ラインを含むセットを示すセット識別子を生成するステップと、
前記有効化ディレクトリにおいて前記実効アドレスの前記セット識別子、前記ライン・インデックス・ビットおよび前記第２の群のビットを求めて第２に検索するステップと、
前記第２の検索に基づいて前記セットにおける前記キャッシュ・ラインの存在を判定することに応答して、ヒット信号を発生するステップと、
の全てを実装するように構成されている、
コンピュータ・プログラム製品。
【請求項１９】
前記有効化ディレクトリのエントリを無効化するための要求を受けることに応答して、１次キャッシュ・ディレクトリにおける対応するエントリの有効ビットをそれに応じて設定するステップ
を更に含む、請求項１８に記載のコンピュータ・プログラム製品。
【請求項２０】
前記１次キャッシュ・ディレクトリと関連付けて第１の補助データ構造を設けるステップであり、前記第１の補助データ構造の各エントリが、マルチプロセッサ・システムのＴＬＢパージ要求に示される情報を反映する前記実効アドレスのビットを備える、前記ステップと、
前記受けた要求に対応する前記第１の補助データ構造におけるエントリを特定するステップであり、前記特定されるエントリが前記１次キャッシュ・ディレクトリのエントリを示す、前記ステップと、
を更に含む、請求項１９に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル・コンピュータ・システムの分野に関し、より詳細には、キャッシュ・メモリへのアクセスを制御するための方法に関する。
【背景技術】
【０００２】
最近のマイクロプロセッサ・アーキテクチャは、ソフトウェアがいわゆる「仮想」（または時に「論理」と呼ばれる）アドレスを使用してメモリ位置を参照するようにする。メモリ・アクセス自体は、「物理」（または時に「絶対」と呼ばれる）アドレスを使用して行われる。２つの間で変換するために、典型的に、変換ルックアサイド・バッファ（ＴＬＢ）と呼ばれるデータ構造が伴う。変換するプロセスは時に、特にＩＢＭ（Ｒ）ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）では、動的アドレス変換（ＤＡＴ）と呼ばれる。
【０００３】
典型的なマイクロプロセッサ・システムでは、プロセッサ・コアの「近くに」メモリ内容のコピーを保つことによってメモリ・アクセスを高速化するために、数レベルのキャッシュが使用される。ＤＡＴをサポートするキャッシュ実装に関して、頻繁に使用される実装は、論理アドレスの一部を使用してキャッシュ・ディレクトリへインデックス付けし、そしてルックアップ要求が比較される、いわゆる「タグ」情報は絶対アドレスを使用している。これは、プログラムによって使用される論理アドレスの絶対アドレスへの変換を必要としており、通常ＴＬＢにおけるルックアップを伴う。
【０００４】
しかしながら、ますます増大するマイクロプロセッサ・コア・キャッシュと共に、ＴＬＢも増大しなければならず、そしてディレクトリ・ルックアップに加えてＴＬＢルックアップの電力消費はマイクロプロセッサ・コア電力の著しい一因である。また、ＴＬＢルックアップ自体がクリティカル・パスの一部になることになるので、ＴＬＢのサイズはタイミング制約によって制限される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、当技術分野では上記の問題に対処する必要がある。
【課題を解決するための手段】
【０００６】
様々な実施形態が、独立請求項の主題によって記載される、キャッシュ・メモリへのアクセスを制御するための方法、装置およびコンピュータ・プログラム製品を提供する。有利な実施形態は従属請求項に記載される。本発明の実施形態は、それらが相互に排他的でなければ、互いと自由に組み合わされることができる。
【０００７】
一態様では、本発明は、タグ・フィールドおよびキャッシュ・ライン・インデックス・フィールドを備える実効アドレスを介してキャッシュ・メモリへのアクセスを操作するための方法であって、キャッシュ・メモリが、論理的にアドレス付けおよび論理的にタグ付けされている１次キャッシュ・ディレクトリを備えている、方法に関する。本方法は、
タグ・フィールドの第１の群のビットおよび第２の群のビットを判定することと、
キャッシュ・ライン・インデックス・フィールドのライン・インデックス・ビットを使用して論理的にインデックス付けされかつ第１の群のビットを使用して論理的にタグ付けされるセット・ディレクトリを設けることと、
ライン・インデックス・ビットおよびセット・ビットを使用して論理的にインデックス付けされかつ第２の群のビットを使用して論理的にタグ付けされる有効化ディレクトリを設けることと、
セット・ディレクトリにおいて実効アドレスのライン・インデックス・ビットおよび第１の群のビットを求めて第１に検索し、そして実効アドレスのそれぞれのキャッシュ・ラインを含むセットを示すセット識別子を生成することと、
有効化ディレクトリにおいて実効アドレスのセット識別子、ライン・インデックス・ビットおよび第２の群のビットを求めて第２に検索することと、
第２の検索に基づいてセットにおけるキャッシュ・ラインの存在を判定することに応答して、ヒット信号を発生することとを含む。
【０００８】
他の態様では、本発明は、コンピュータ可読プログラム・コードが具現化されたコンピュータ可読記憶媒体を備えるコンピュータ・プログラム製品であって、コンピュータ可読プログラム・コードが、前述の実施形態に係る方法のステップの全てを実装するように構成されている、コンピュータ・プログラム製品に関する。
【０００９】
他の態様では、本発明は、タグ・フィールドおよびキャッシュ・ライン・インデックス・フィールドを備える実効アドレスを介してキャッシュ・ラインへのアクセスを制御するための装置であって、タグ・フィールドが第１の群のビットおよび第２の群のビットを備えている、装置に関する。本装置は、
−  論理的にアドレス付けおよび論理的にタグ付けされている１次キャッシュ・ディレクトリと、
−  キャッシュ・ライン・インデックス・フィールドのライン・インデックス・ビットを使用して論理的にインデックス付けされかつ第１の群のビットを使用して論理的にタグ付けされているセット・ディレクトリと、
−  ライン・インデックス・ビットおよびセット・ビットを使用して論理的にインデックス付けされかつ第２の群のビットを使用して論理的にタグ付けされている有効化ディレクトリとを備え、
セット・ディレクトリが、実効アドレスのライン・インデックス・ビットおよび第１の群のビットを受け、そして実効アドレスのそれぞれのキャッシュ・ラインを含むセットを示すセット識別子を生成するために構成されており、
有効化ディレクトリが、実効アドレスのセット識別子、ライン・インデックス・ビットおよび第２の群のビットを受け、そしてキャッシュ・ラインがあるセットを示すセット識別子を返すために構成されている。
【００１０】
以下に本発明の実施形態が、図面を参照しつつ、単に例として、更に詳細に説明される。
【図面の簡単な説明】
【００１１】
【図１】本開示の一例に従ってコンピュータ・システムを例示する。
【図２】２レベル・キャッシュを持つキャッシュ・メモリのキャッシュ構造にアクセスするための図を例示するブロック図である。
【図３】図２のキャッシュ・メモリを動作させるための方法のフローチャートである。
【図４】図２のキャッシュ・メモリにおいてシノニムを解決するための方法のフローチャートである。
【図５】キャッシュ・メモリへのアクセスを制御するための方法のフローチャートである。
【発明を実施するための形態】
【００１２】
本発明の様々な実施形態の説明が例示の目的で提示されることになるが、網羅的であるとは、または開示される実施形態に限定されるとは意図されない。記載される実施形態の範囲および思想から逸脱することなく、多くの変更および変形が当業者にとって明らかであろう。本明細書で使用される技術用語は、実施形態の原理、実際的応用もしくは市場で見つかる技術に対する技術的改良を最もよく説明するように、または当業者が理解することを可能にするように選ばれた。
【００１３】
キャッシュ・メモリはセット・アソシアティブ・キャッシュである。
【００１４】
本方法は、全ての変換関連情報をＬ１キャッシュに記憶する論理インデックス付き、論理タグ付きディレクトリを使用する。できる限り多くの電力を節約するために、本方法は、セット・ディレクトリを使用して、その他のＬ１キャッシュ構造に対する潜在的なヒット・セットを選択している。セット・ディレクトリはキャッシュ・アレイ遅延選択として使用され、それ故に従前の設計と比較して電力および領域予算を増すことはない。セット・ディレクトリを使用して、更なる電力を節約するために、従前のセット・アソシアティブ・ディレクトリ構造の代わりに「垂直スタック」ディレクトリ（すなわち有効化ディレクトリ）が使用される。結果として、常に一度に１つのセットだけが読み出されることができる一方で、先行技術では所与のインデックスに属する全てのセットが並列に読み取られ得る。例えば、キャッシュ・ディレクトリがシノニム問題を解決するために使用されることができるので、有効化ディレクトリ・セットは並列にアクセスされる必要はなくてもよい。
【００１５】
本方法は、Ｌ１キャッシュ・ヒットがより高レベルのキャッシュからの有効化を必要とする先行技術の方法と比較して高速アクセス時間および更に低い電力消費の改善されたセット・アソシアティブ・キャッシュ・メモリを提供する利点を有することができる。
【００１６】
その比較的大きなサイズのため、ＴＬＢは通常、メモリ・アレイに近接して配置されることができない。結果として、セット・アソシアティブ・キャッシュ・メモリの総キャッシュ・アクセス時間は、そのＴＬＢおよびメモリ・アレイのサイズと共に増加する。本方法は、論理タグ付きかつ論理インデックス付き有効化ディレクトリを使用し、したがってＬ１キャッシュ・ヒット信号発生のためにＴＬＢに給電する必要を回避することができる。
【００１７】
一実施形態によれば、第２の検索がセットにおけるキャッシュ・ラインの存在を確認しない場合、ミス信号を発生する。ミス信号は、要求された実効アドレス（論理または仮想アドレスとも称される）に対するキャッシュ・ミスを示すキャッシュ・ミス信号である。キャッシュ・ミス信号は、第１の検索がセット・ディレクトリに要求された論理アドレスを見つけることに失敗した場合にも発生されてもよい。発生されたミス信号に応答して、要求されたキャッシュ・ラインは、より高いキャッシュ・レベルにおいてまたはメインメモリ（例えばＲＡＭ）において検索されてもよい。
【００１８】
一実施形態によれば、キャッシュ・メモリは変換ルックアサイド・バッファＴＬＢを更に備えており、１次キャッシュ・ディレクトリにおける所与のエントリが有効ビット、実効アドレスの一部分およびセット・インデックスを記憶しており、第２の検索がセットにおけるキャッシュ・ラインの存在を確認しない場合、本方法は、１次キャッシュ・ディレクトリにおいてライン・インデックス・ビットを検索して、１次キャッシュ・ディレクトリにおける各セットに対する論理ポインタに帰着することであって、論理ポインタがセット・インデックスおよび実効アドレスの一部分を備える、ことと、論理ポインタのうちセット・インデックスがセット識別子に一致する論理ポインタを選択することと、実効アドレスと関連する絶対アドレスを特定するためにＴＬＢにおいて実効アドレスを検索することと、キャッシュ・メモリのより高レベルの２次キャッシュ・ディレクトリにおける各セットにおける実効アドレスに対応するエントリであって、他の絶対アドレスを備える、エントリを得るために２次キャッシュ・ディレクトリにおいて実効アドレスを検索することと、２次キャッシュ・ディレクトリの各得られた絶対アドレスをＴＬＢの絶対アドレスと比較して、２次キャッシュ・ディレクトリのセットの他のセット識別子に帰着することと、他のセット識別子を有する２次キャッシュ・ディレクトリのセットのエントリの論理アドレスを選択された論理ポインタと比較し、そして比較結果に基づいてミス信号を確認するまたはセットおよび有効化ディレクトリを更新することとを更に含む。
【００１９】
ＴＬＢおよびより高レベルのキャッシュは例えば、より低レベルのキャッシュにおけるキャッシュ・ミスの場合に使用される。これは、より低いキャッシュ・レベルでのキャッシュ・ミスの信頼できる有効化または確認を提供してもよい。
【００２０】
一実施形態によれば、１次キャッシュ・ディレクトリの検索は第１の検索と並列に行われる。この実施形態は、データへのアクセスを更に高速化することができる。
【００２１】
一実施形態によれば、本方法は、論理ポインタの有効ビットが有効状態に設定されている場合にヒット信号の発生が行われることを更に含む。有効ビットは、キャッシュ・ラインにおけるデータが有効であるか否かを示す情報のビットである。これは、さもなければ無効化されたデータにアクセスして、引き起こされる訂正を処理するために必要とされるであろう処理時間を更に節約することができる。
【００２２】
一実施形態によれば、ＴＬＢにおける検索および２次キャッシュ・ディレクトリにおける検索は並列に行われる。この実施形態は、データへのアクセスを更に高速化することができる。
【００２３】
一実施形態によれば、第１の群のビットはタグ・フィールドからの最下位ビットであり、そして第２の群のビットはタグ・フィールドからの最上位ビットである。第２の群のビットは、セット・ディレクトリの検索結果を確認するために第１の群のビットに相補的であってもよい。例えば、実効アドレスが０：４９ビットのタグ・フィールドを有する場合、第１の群のビットは３７：４９であってもよく、そして第２の群のビットは０：３６であってもよい。しかしながら、タグ・フィールド０：４９のいかなる部分集合でも第１または第２の群のビットとして使用されることができる。第１の群のビットの幅（すなわちビット数）は、誤った予測（あまり小さくない）とタイミング（あまり広い比較でない）制約との間のトレード・オフに基づいてもよい。第１の群のために実効アドレスのライン・インデックス（５０：５５）の隣のビットを使用することは、それが小さなメモリ・フットプリントのプログラムのためにも働くので、有益であり得る。例えば、ビット０：１２が第１の群のために使用される場合、巨大なプログラムだけが０：１２で異なる実効アドレスを有することができ、通常サイズのプログラムは１つのセットを使用し得るだけであるので、大抵のプログラムはｎ−ｗａｙ（例えばｎ＝８）連想を使用することができない可能性がある。言い換えれば、第１の群のビット（例えば３７：４９）は、それらが大抵のメモリ・アクセスに対して異なるがライン・インデックスと重複しないように選ばれる。
【００２４】
一実施形態によれば、有効化ディレクトリは、キャッシュ・メモリの全てのセットの各キャッシュ・ラインごとに１つのディレクトリ・エントリを保持する１つの物理アレイ構造から構築される。この実施形態は、一度に１つのセットだけが読み出されることができることを可能にしてもよい一方で、先行技術では所与のインデックスに属する全てのセットが並列に読み取られ得る。この実施形態は、したがってデータへのアクセスを更に高速化することができる。例えば、セット・ディレクトリの結果（例えばセット識別子）は、有効化ディレクトリを検索するためのライン・インデックス（例えばビット５０：５５）への拡張として使用されてもよい。
【００２５】
一実施形態によれば、１次キャッシュ・ディレクトリにおける所与のエントリが有効ビット、実効アドレスの一部分およびセット・インデックスを記憶しており、本方法は、第１の検索と並列に、１次キャッシュ・ディレクトリにおいてライン・インデックス・ビットを検索して、１次キャッシュ・ディレクトリにおける各セットに対する有効ビット値に帰着することと、有効ビット値のうち関連するセット・インデックスがセット識別子に一致する有効ビット値を選択することであって、有効ビット値が有効状態を示す場合にヒット信号の発生が行われる、こととを更に含む。これは、さもなければ無効化されたデータにアクセスして、引き起こされる訂正を処理するために必要とされるであろう処理時間を更に節約することができる。
【００２６】
一実施形態によれば、１次キャッシュ・ディレクトリはＬ１レベル・キャッシュ・ディレクトリである。一実施形態によれば、２次キャッシュ・ディレクトリはＬ２レベル・キャッシュ・ディレクトリである。これらの実施形態は、従来のシステムにシームレスに統合されてもよい。
【００２７】
一実施形態によれば、キャッシュ・メモリは、２次キャッシュ・ディレクトリを更に備えるマルチ・レベル・キャッシュ・ディレクトリである。キャッシュ・メモリはセット選択メモリである。
【００２８】
一実施形態によれば、１次キャッシュ・ディレクトリにおける所与のエントリが有効ビット、実効アドレスの一部分およびセット・インデックスを記憶する。本方法は、実効アドレスの第２の実効アドレス・シノニムを受けることと、第２の実効アドレスを使用して第１および第２の検索を繰り返すことと、第２の検索が第２の実効アドレスによって参照されるキャッシュ・ラインの存在を確認しない場合、第２の実効アドレスに対応するセット・ディレクトリのエントリを無効化することと、ミスを検出するために第２の実効アドレスを使用して第１の検索を行うことと、１次キャッシュ・ディレクトリにおいて第２の実効アドレスを検索して、１次キャッシュ・ディレクトリにおける各セットに対する論理ポインタに帰着することであって、論理ポインタがセット・インデックスおよび第２の実効アドレスの一部分を備える、ことと、キャッシュ・メモリのより高レベルの２次キャッシュ・ディレクトリにおける各セットにおける第２の実効アドレスに対応するエントリを得るために２次キャッシュ・ディレクトリにおいて第２の実効アドレスを検索することと、２次キャッシュ・ディレクトリのセットのエントリの論理アドレスを論理ポインタの各々と比較し、そして比較結果に基づいて１次キャッシュ・ディレクトリにおけるキャッシュ・ラインの存在を確認することと、実効アドレスに関連したエントリを第２の実効アドレスで上書きすることによってセットおよび有効化ディレクトリを更新することと、第１の検索、第２の検索および条件付きヒット信号の発生を繰り返すこととを更に含む。この実施形態は、キャッシュ・メモリでのシノニム問題を効率的に解決する利点を有することができる。それは、次のレベルのキャッシュに依存することによってシノニム問題を解決する。それは、Ｌ１キャッシュ・ディレクトリを使用してＬ１キャッシュおよびＬ２キャッシュを結びつける。
【００２９】
図１は、本開示の一例に従ってコンピュータ・システム１００を例示する。コンピュータ・システム１００は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ（ＩＢＭ（Ｒ））によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいてもよい。コンピュータ・システム１００はセット・アソシアティブ・キャッシュ・メモリ構造を使用してもよい。コンピュータ・システム１００は、少なくとも１つの処理ユニット１０１を備える。処理ユニット１０１は、入出力（Ｉ／Ｏ）デバイス１１４（表示モニタ、キーボードおよび永久記憶デバイスなど）、プログラム命令を実行するために処理ユニットによって使用されるメモリ・デバイス１１６（ランダム・アクセス・メモリまたはＲＡＭなど）、ならびに主要目的が、コンピュータが最初にオンにされるたびに周辺機器の１つを捜してそれからオペレーティング・システムをロードすることであるファームウェア１１８を含め、様々な周辺デバイスに接続されてもよい。処理ユニット１０１は、汎用インターコネクトまたはバス１２０を含め、様々な手段によって周辺デバイス（例えばファームウェア１１８、入出力デバイス１１４およびメモリ１１６）と通信する。
【００３０】
処理ユニット１０１は、コンピュータを動作させるためにプログラム命令を実行する複数のレジスタおよび実行ユニットを有するプロセッサ・コア１２２を含む。例証的な処理ユニットには、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎによって市販されるＰｏｗｅｒＰＣ（ＴＭ）プロセッサを含む。処理ユニット１０１は、１つまたは複数のキャッシュも有することができる。例えば、処理ユニット１０１は、２つのキャッシュ１２６および１３０を備えるとして図示される。キャッシュは、メモリ１１６から値をロードするより長いステップを回避することによって処理を高速化するために、プロセッサによって繰り返しアクセスされる可能性がある値を一時的に記憶するために使用される。
【００３１】
キャッシュ１２６および１３０は、プロセッサがメモリ１１６から前もって転送されたデータまたは命令の部分集合への比較的高速アクセス時間を達成することを可能にするセット・アソシアティブ・キャッシュである。
【００３２】
キャッシュ１２６はプロセッサ・コア１２２と一体的にパッケージされてもよい。キャッシュ１２６は、高速メモリ・デバイスを使用して実装される命令アレイ（図示せず）およびデータ・アレイ１４１を備えてもよい。命令およびデータは、オペランドが命令対データである演算をプロセッサ・コアが要求しているかどうかを示す信号を調べることによって、それぞれのキャッシュに向けられてもよい。キャッシュ１２６は、データ・アレイ１４１と関連するキャッシュ・ディレクトリ１４２を更に備えてもよい。例えば、データ・アレイ１４１における各キャッシュ・ラインは、キャッシュ・ディレクトリ１４２に対応するエントリを有する。キャッシュ・ディレクトリ１４２は、実効アドレスによって特定されるデータがデータ・アレイ１４１に記憶されているかどうかを示してもよい。例えば、実効アドレスを参照するプロセッサ命令がキャッシュ１２６に提供されることができる。実効アドレスがキャッシュ・ディレクトリ１４２にある場合、プロセッサは、アクセス基準が満たされていることを条件として、それがデータ・アレイ１４１から参照されたデータを得ることができると知っており、アクセス基準は有効ビットが設定されていること等を要求してもよい。例えば、実効アドレスは、タグ・フィールド、ライン・インデックス・フィールドおよびバイト・フィールドを含む。実効アドレスのタグ・フィールドは、本明細書に記載されるようにキャッシュ「ヒット」情報を提供するために活用される。実効アドレスのライン・インデックス・フィールドは、ライン・インデックス・フィールドによってインデックス付けされる、例えばデータ・キャッシュ・アレイ１４１内のＮ個のキャッシュ・ラインを得るために活用され、ＮはＮ−アソシアティブ・キャッシュ・メモリにおけるセット数である。Ｎ個のキャッシュ・ラインの１つがセット識別子を使用して選択されてもよく（遅延選択の一部として）、そして実効アドレスのバイト・フィールドは、選択されたキャッシュ・ライン内の特定のバイトにインデックス付けするために活用される。
【００３３】
データ・アレイ１４１およびキャッシュ・ディレクトリ１４２は、例えば、４Ｍまたは８Ｍ個のチップ・アレイの構成で容易に入手可能であるように、従来のメモリ・アレイから構築されてもよい。キャッシュ１２６は、例えばプロセッサ・コア１２２とキャッシュとの間のデータの転送を管理するキャッシュ・コントローラ（図示せず）と関連付けられる。
【００３４】
データ・キャッシュ・アレイ１４１は、様々なデータ値を個々に記憶する多くのキャッシュ・ラインを有する。キャッシュ・ラインは、「セット」と呼ばれるキャッシュ・ラインの群へ分けられる。例証的なキャッシュ・ラインは、状態ビット・フィールド、排他性ビット・フィールド、および実行命令またはデータを記憶するための値フィールドを含む。状態ビット・フィールドおよび包括性ビット・フィールドは、マルチプロセッサ・コンピュータ・システムにおけるキャッシュ・コヒーレンシを維持するために使用される。アドレス・タグは、対応するメモリ・ブロックの完全アドレスの部分集合である。アドレス・タグ・フィールド内のタグの１つとの到来する実効アドレスの比較一致がキャッシュ「ヒット」を示す。キャッシュにおけるアドレス・タグ（ならびに時に状態ビットおよび包括性ビット・フィールド）の全ての集合がディレクトリと称され、そして値フィールドの全ての集合がキャッシュ・エントリ・アレイである。
【００３５】
キャッシュ１２６はレベル１（Ｌ１）キャッシュと称されてもよく、そしてキャッシュ１３０は、それが（Ｌ１）キャッシュ１２６をサポートするので、レベル２（Ｌ２）キャッシュと称されてもよい。例えば、キャッシュ１３０は、メモリ１１６とＬ１キャッシュとの間の媒介として作用してもよく、そしてより長いアクセス・ペナルティではあるが、Ｌ１キャッシュができるより大量の情報（命令およびデータ）を記憶することができる。例えば、キャッシュ１３０は２５６または５１２キロバイトの記憶容量を有してもよい一方で、Ｌ１キャッシュは６４キロバイトの総記憶を有してもよい。キャッシュ１３０はバス１２０に接続され、そしてメモリ１１６からプロセッサ・コア１２２への情報の全てのロードがキャッシュ１３０を通して起こってもよい。図１が２レベル・キャッシュ階層だけを描くとはいえ、多レベルの直列に接続されるキャッシュがあるマルチ・レベル・キャッシュ階層が提供されることができる。例えば、処理ユニット１０１の部品は単一の集積チップにパッケージされてもよい。
【００３６】
図１には、実効アドレスを対応する絶対アドレスに変換するための変換ルックアサイド・バッファ（ＴＬＢ）１４３も図示される。詳細には、ＴＬＢ１４３は、実効アドレスのページ番号部分を対応する実ページ番号に変換してもよい。例えば、実効アドレスのタグ・フィールドがＴＬＢ１４３に送られて、対応する実ページ番号に変換されてもよい。
【００３７】
他の例では、コンピュータ・システム１００は、第１のもの（ＴＬＢ１）が第１のレベルのバッファであり、そして第２のもの（ＴＬＢ２）が、上記第１のものに見つからないアドレスの場合に第１のものにアドレス情報を供給するように配置される第２のレベルの変換ルックアサイド・バッファである、少なくとも２つの変換ルックアサイド・バッファを備えてもよい。例えば、メモリにおけるアドレス変換テーブルは多段構造であってもよい。例えば、２段テーブルの場合、第１レベルのテーブルは、セグメント・テーブルと呼ばれており、エントリを含み、各々ポイントによってＭＢのメモリを第２レベルのテーブルにマッピングし、これはページ・テーブルと呼ばれており、４ＫＢのメモリをマッピングする２５６個のエントリを含む。ＴＬＢ２は２種類のエントリ：１ＭＢセグメントおよび個々の４ＫＢページを有してもよい。第１レベルＴＬＢ（ＴＬＢ１）で変換が入手可能でない場合、必要とされる変換を提供する４ＫＢページ・エントリを求めてＴＬＢ２が検索される。そうでなければ、ＴＬＢ２は、変換されることになるアドレスを含むセグメントのためのセグメント・エントリを求めて検索される。そのようなエントリが見つけられれば、メモリにおけるセグメント・テーブルにアクセスしなくても適切なページ・テーブルが直接アクセスされることができるので、メモリにおける両テーブルを使用する変換は省かれる。そして、ＴＬＢ１はエントリの２次元アレイ、例えば、３２エントリ長かつ４エントリ幅を備えてもよい。各エントリは、変換された仮想アドレスおよびそれが変換した実アドレスを含む。この例では、ＴＬＢ１４３はＴＬＢ１であってもよい。
【００３８】
一例では、コンピュータ・システム１００は、ＩＢＭ（Ｒ）のｚ／ＶＭ（Ｒ）などの仮想化環境におけるハードウェア資源として使用されてもよい。例えば、処理ユニット１０１は、仮想マシンまたは論理区画においてハイパーバイザ下で実行するゲストから要求を受けてもよい。
【００３９】
図２は、本開示の一例に従って実効アドレス（または論理アドレスもしくは仮想アドレス）２０１を介して２レベル・キャッシュを持つキャッシュ・メモリのキャッシュ構造２００にアクセスするための図を例示するブロック図である。キャッシュ・メモリは、例えばＬ１キャッシュにｍセットおよびＬ２キャッシュにｎセットを備えるセット・アソシアティブ・キャッシュである。ｍはｎに等しくても等しくなくてもよい。キャッシュ構造２００は、Ｌ１キャッシュ２２６およびＬ２キャッシュ２３０を備える。Ｌ１キャッシュ２２６は、図１を参照しつつ記載されるように、データ・キャッシュ・アレイ１４１およびキャッシュ・ディレクトリ１４２を備える。図２では、Ｌ１キャッシュ２２６はセット・ディレクトリ２０３および有効化ディレクトリ２０５を更に備える。Ｌ２キャッシュ２３０はキャッシュ・ディレクトリ２４２およびキャッシュ・アレイ（図示せず）を備える。
【００４０】
セット・ディレクトリ２０３は、実効アドレス２０１のライン・インデックス・フィールド２１０のライン・インデックス・ビットを使用して論理的にインデックス付けされ、かつ実効アドレス２０１のタグ・フィールド２１２の第１の群のビット２１２ａを使用して論理的にタグ付けされる。有効化ディレクトリ２０５は、実効アドレス２０１のライン・インデックス・フィールド２１０のライン・インデックス・ビットおよびセット・ビットを使用して論理的にインデックス付けされる。有効化ディレクトリ２０５は、実効アドレス２０１のタグ・フィールド２１２の第２の群のビット２１２ｂを使用して論理的にタグ付けされる。第１および第２の群のビット２１２ａおよび２１２ｂは例証目的で非重複に図示される。しかしながら、第１の群および第２のビットは重複してもよい。例えば、第２の群のビットは、緩和された、例えばセット・ディレクトリおよび有効化ディレクトリが常に厳密に同期している必要がないことを許容する、セット・ディレクトリ更新規則を有することを可能にすることができるビット０：４９から成ってもよい。
【００４１】
セット・ディレクトリ２０３の各エントリは少なくとも第１の群のビット２１２ａおよび有効ビットを備える。例えばプロセッサ・コアがスレッド（例えばスレッドｔｈ１およびｔｈ２）をサポートする場合、エントリは各スレッドと関連する有効ビットを備えてもよい（例えば、エントリは次の通りであってもよい：ＬＡ．３７：４９，ｔｈ０  ｖｌｄ，ｔｈ１  ｖｌｄ）。有効化ディレクトリ２０５の各エントリは少なくとも第２の群のビットを備える。一例では、有効化ディレクトリ２０５のエントリは有効ビット、排他性ビットおよびキーを更に備える。有効ビットは、エントリが有効であると示す。排他性ビットは、キャッシュ・ラインが排他的に所有されていると示す。それが排他性ビットと呼ばれるのは、１つのコアがラインを排他的に有する場合、他のいかなるコアも関連ラインのコピーを有することができないからである。キャッシュ・ラインは、データが変更されると排他的に要求される。そして多くのコアがラインをリード・オンリ状態で有することができる。キーは保護のための記憶キーであり、そして任意の他の種々の情報の集合を含んでもよい。一例では、有効化ディレクトリ２０５のエントリはＡＳＣＥ要素およびＲＥＡＬ要素を更に備えており、ＡＳＣＥはアドレス空間制御要素（動的アドレス変換テーブルへのポインタ）を指し、そしてＲＥＡＬ要素は、エントリが実のエントリであることを示す。
【００４２】
Ｌ１およびＬ２キャッシュ・アレイ１４１はメモリ１１６からのデータ・コピーを保持し、そしてＬ１およびＬ２ディレクトリ１４２および２４２における各エントリは第２の群のビット２１２ｂ、アドレス空間識別子等を保持する。Ｌ１ディレクトリ１４２は例えば以下のフィールドを含む：有効ビット、論理アドレス、例えば４５：４９、およびＬ２セットＩＤ。有効ビットは、Ｌ１ディレクトリ・エントリが有効であるまたは有効でないと示す。論理アドレス４５：４９は、Ｌ２ディレクトリのアクセスを許容するＬ１論理アドレス５０：５５の拡張である。Ｌ２セットＩＤは、どのＬ２ディレクトリ・セットがＬ１キャッシュ・エントリを含むかを特定する。例えば、Ｌ１ディレクトリ１４２のエントリは次の通りであってもよい：ｓｅｔ０−Ｌ２ＣＣ（４５：４９），ｔｈ０  ｌｏｇｄｉｒ  ｖｌｄ，ｔｈ１  ｌｏｇｄｉｒ  ｖｌｄ，ｐｔｒｄｉｒ  ｖｌｄ、ここでＬ２ＣＣ（４５：４９）は実効アドレス（論理アドレスとも称される）のビット４５：４９である。データのためのＬ２がサイズ４Ｍである一方で、命令のためのＬ２はサイズ２Ｍであるので、ビット４５はデータ・キャッシュのためだけに記憶される。「ｌｏｇｄｉｒ  ｖｌｄ」は、Ｌ１キャッシュに記憶されている変換が有効であることを示す。「ｐｔｒｄｉｒ  ｖｌｄ」は、Ｌ１キャッシュにおけるデータが有効であることを示す有効ビットである。ビット「４５：４９」ビットは例えばキャッシュ・サイズ（例えば行数）から導出されてもよい。例えば、Ｌ１キャッシュがセットごとに６４行を有する場合、ライン・インデックスは５０：５５であり、そしてＬ２がセットごとに１０２４行を有する場合、インデックス付けはより広くなり、インデックス４５：５５に帰着してもよい。しかしながら、Ｌ１ディレクトリが既に５０：５５でインデックス付けされているので、Ｌ２座標を指すことは、Ｌ１ディレクトリのエントリにＬＡ．４６：４９だけおよびＬ２セットＩＤを維持することによって行われてもよい。
【００４３】
図２の説明を簡易化するために、Ｌ１キャッシュの簡易例が考えられてもよい。この例では、Ｌ１キャッシュは６４行で８セット（すなわちｍ＝８）を有し、そしてキャッシュ・ラインは６４ビット（０：６３）を有する論理アドレス（略してＬＡ（０：６３））を使用してアドレスされる。したがって、この例のライン・サイズは２５６バイトである。この例では、セット・ディレクトリ２０３はタグ（第１の群のビット）としてＬＡ（３７：４９）を使用してもよい。有効化ディレクトリ２０５のタグは、ＬＡ（０：４９）またはＬＡ（０：３６）に加えて、異なるアドレス空間の間を区別するために必要とされる追加情報であってもよい。
【００４４】
有効化ディレクトリが行ごとに１つのディレクトリ・エントリを保持する１つの物理アレイ構造から構築されるので、有効化ディレクトリ２０５は「スタック」論理ディレクトリと称されてもよい。上記例に従って、有効化ディレクトリは、各々６４行を有する８つのアレイ構造の代わりに、８×６４行＝５１２行から成る。そのような構造の利点は、アレイ行が限定数のビットだけを有することができる（物理的理由で）ことであってもよい。より多くの行を追加することは、行の幅を延長することまたはより多くのアレイ構造を追加することに対して、比較的低オーバーヘッドで済む。「スタック」手法は、それが使用する領域および電力が少なくなるので、有利であり得る。Ｌ１キャッシュ・ディレクトリ１４２は、しかしながら、各々６４行を有する８つのアレイ構造を有する。
【００４５】
図２は、Ｌ１キャッシュ・ディレクトリ１４２およびＬ２キャッシュ・ディレクトリ２４２の構造の詳細を更に例示する。Ｌ１キャッシュ・ディレクトリ１４２は、複数のＬ１セット、例えばｍ個のＬ１セットおよびそれぞれのコンパレータＬ１ＣＰ１−Ｌ１ＣＰｍを持つセット・アソシアティブ・ディレクトリ構造から成る。Ｌ２キャッシュ・ディレクトリ２４２は、複数のＬ２セット、例えばｎ個のＬ２セットおよびそれぞれのコンパレータＬ２ＣＰ１−Ｌ２ＣＰｎを持つセット・アソシアティブ・ディレクトリ構造から成る。Ｌ２キャッシュ・ディレクトリ２４２は、インデックスとして実効アドレス２０１の一部を、およびタグとして絶対アドレスを使用している。
【００４６】
例えば、Ｌ２ディレクトリのエントリは以下を備えてもよい：「ｓｅｔ０−ＡＡ．１７：５１」、ここでｓｅｔ０はエントリを備えるセットのセット・インデックスであり、ＡＡはＬ２ディレクトリにインデックス付けするために使用される実効アドレスと関連する絶対アドレスである。他の例では、Ｌ２ディレクトリのエントリは２つの追加要素「キー（０：３），ＦＰ」を更に備えてもよく、ここで「キー」は、コンピュータ・システム１００の動作のアーキテクチャ原理（例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ））に記載される規則に従って合致する必要がある４ビット・タグであり、そしてＦＰ（取出し保護）はキー比較を可能にする。
【００４７】
キャッシュ構造２００は、ＴＬＢ１４３を更に備える。
【００４８】
キャッシュ・ルックアップでは、セット・ディレクトリ２０３はインデックスＬＡ（５０：５５）および第１の群のビットＬＡ（３７：４９）を入力として受け、そしてセット・ディレクトリ２０３は、要求されたキャッシュ・ラインを保持する、Ｓｅｔ（０：７）と称されるセットＩＤを有するセットを生成または予測する。例えば、セット・ディレクトリ２０３は、セットＩＤを見つけるために検索されてもよい。インデックスＬＡ（５０：５５）に加えてセットＩＤ（Ｓｅｔ（０：７））を使用して、有効化ディレクトリ２０５は、タグ比較２２０を使用してキャッシュ・ヒットを確認するためにルックアップされて、有効化ディレクトリ２０５における対応するディレクトリ・エントリを特定することに帰着してもよい。例えば、そのために、セット・ディレクトリ２０３によって決定されたセットＩＤは８つの６４行セクションのうちの１つを選択するために使用され、そしてＬＡ（５０：５５）はセクション内の行を選択するために使用される。
【００４９】
セット・ディレクトリ２０３を検索することと並列に、Ｌ１キャッシュ・ディレクトリ１４２は、このディレクトリ・エントリに対する有効ビットを取り出すためにルックアップされる。複数のエントリがすぐに無効化されなければならない可能性があるので、有効部分はＬ１キャッシュ・ディレクトリ１４２の一部である。タグ比較２２０がヒット２４４となり、かつ有効ビットが設定されていれば、有効比較２４０がキャッシュ・ヒットと判明されたことを示す。そうでなければ、キャッシュ・ミス２４５と判明されてもよい。データ・アレイ１４１は、セット・ディレクトリ２０３からセット識別子を受けてもよく、そして実効アドレス２０１のライン・インデックス２１０およびバイト・オフセット２１３ならびにセット識別子を使用して要求されたキャッシュ・ラインのデータを提供してもよい。キャッシュ・ミスの場合、提供されるデータがキャッシュ・ミスに対応することを示すために警告が提供されてもよい。
【００５０】
キャッシュ・ミス２４５と判明された場合にまたはセット・ディレクトリ２０３における検索が失敗した（キャッシュ・ミスに帰着した）場合にだけ、図２の下部におけるデータ構造が関与されることになる。すなわち、ＴＬＢ１４３は実効アドレス２０１を使用して、およびヒット比較２５１を使用して（論理アドレス２０１の一部およびアドレス空間識別子などの変換関連情報を含む）ルックアップされ、要求に対する絶対アドレスが判定される。ヒット比較２５１はＴＬＢ自体の比較論理によって行われてもよい。ＴＬＢ１４３を検索することと並列に、Ｌ２キャッシュ・ディレクトリ２４２は、例えば実効アドレス２０１のビット４６：５５を使用してルックアップされる。そして、ヒット比較２６１が、ＴＬＢによって出力された絶対アドレスを論理アドレス２０１を使用して特定されたＬ２キャッシュ・ディレクトリの絶対アドレスと比較することによって、Ｌ２キャッシュ・ディレクトリ２４２においてヒットを求めて検索する。ヒット比較２６１の結果は、どのＬ２セットがヒットとなったか（図面はＬ２キャッシュにおける８セット（すなわちｎ＝８）を前提とする）の指標である。このヒット情報は次いで、Ｌ２キャッシュでヒットしたラインがＬ１キャッシュにも既に記憶されているかどうかを確かめるためにＬ１  ｄｉｒ比較２７０で使用される。そのために、Ｌ１  ｄｉｒ比較２７０は、Ｌ２キャッシュへの受け入れた入力論理ポインタ（ｏｕｔ１からｏｕｔｍと称される）も使用する。各論理ポインタ（例えばｏｕｔ１）は、それぞれのＬ１セットと関連付けられ、かつインデックスＬＡ（５０：５５）に対応するＬ１ディレクトリのエントリのＬ２インデックスおよびＬ２セットＩＤおよび有効ビットを備える。
【００５１】
図３は、図２のキャッシュ・メモリを動作させるための方法のフローチャートである。所与のキャッシュ・ラインにアクセスする、例えば実効または論理アドレスを介するアクセス要求を受けた上で、セット・ディレクトリ２０３（ｓｅｔｐと称される）およびＬ１キャッシュ・ディレクトリ１４２（ｐｔｒｄｉｒと称される）がステップ３１０でアクセスされる。このアクセスは例えば並列であってもよい。セット・ディレクトリ２０３およびＬ１キャッシュ・ディレクトリ１４２へのアクセスは、実効アドレスのライン・インデックス・ビット（例えばＬＡ（５０：５５））を使用して行われる。セット・ディレクトリ２０３へのアクセスは、キャッシュ・ラインが存在するセットを示すセット識別子に帰着してもしなくてもよい。Ｌ１キャッシュ・ディレクトリ１４２へのアクセスは、Ｌ１キャッシュ・ディレクトリが入力として実効アドレスのライン・インデックス・ビットだけを使用するので、それぞれのＬ１セットの複数のエントリに帰着してもしなくてもよい。
【００５２】
セット・ディレクトリ２０３を検索することから生じるキャッシュ・ミスの場合（照会２２０）、ステップ３８０〜３８７が行われてもよい。キャッシュ・ヒットの場合（照会２２０）、ステップ３３０〜３７０が行われてもよく、そしてセット・ディレクトリ２０３は、要求されたキャッシュ・ラインが存在するセットを示すセット識別子を提供してもよい。
【００５３】
ステップ３３０では、有効化ディレクトリ２０５（ｌｏｇｄｉｒと称される）は、セット・ディレクトリ２０３から受けられるセット識別子および実効アドレスのライン・インデックス・ビット（例えばＬＡ（５０：５５））を使用して検索されてもよい。
【００５４】
アドレスされたキャッシュ・ラインと関連する有効ビットがステップ３４０で判定されてもよい。これは、複数のエントリのうちセット識別子を使用するエントリを選択し、そして選択されたエントリの有効ビット値を読むことによって判定されてもよい。
【００５５】
有効化ディレクトリ２０５が検索３３０の結果としてキャッシュ・ミスを提供する、または有効ビットが無効状態を示している値を有する場合（３５０）、ステップ３１０の検索によってヒットされたセット・ディレクトリのエントリは無効化されてもよい３７０。そうでなければ、例えばヒット信号を提供することによって、ステップ３６０でキャッシュ・ヒットが解決されてもよい。
【００５６】
ステップ３８０で、要求の論理アドレスを使用して、ＴＬＢルックアップが行われる。このルックアップの結果は一致する絶対アドレスである。次に、ステップ３８１で、Ｌ２キャッシュ・ディレクトリ２４２がルックアップされ、そしてＴＬＢから供給される絶対アドレスに対して比較される。Ｌ２ミスの場合、ステップ３８２が３８３に分岐してＬ１ミスかつＬ２ミスと解決する。Ｌ１ミスかつＬ２ミスと解決した後に、次の要求に応じてセット・ディレクトリ２０３にキャッシュ・ラインが見つけられることができるように、全てのデータ構造が更新される。
【００５７】
ステップ３８２がＬ２ヒットとなると、ステップ３８４が、ステップ３１０における検索によって特定されたＬ１キャッシュ・ディレクトリ内容をＬ２ディレクトリ内容に対して比較して、キャッシュ・ラインが実際にＬ１にあるかどうかを確かめる。比較結果がＬ１ヒットを示す場合、ステップ３８５がステップ３８６に分岐することを決定する。これは、要求がセット・ディレクトリ２０３でヒットしなかったが、キャッシュ・ラインは実際にＬ１キャッシュにある場合である。これは例えば、セット・ディレクトリが正しくないための場合である可能性がある、または現在の要求がこれまでにＬ１に記憶されたシノニムとは異なるシノニムに対するため（現在の要求にとっては「セット・ディレクトリは正しくなかった」と言うことと同じである）であり得る。いずれでも、ステップ３８６はセット・ディレクトリ２０３および有効化ディレクトリ２０５を更新して現在の要求に一致させる。実際のデータ転送が起こる必要はない。ステップ３８５がＬ１ヒットとならない場合、これは、キャッシュ・ラインがＬ１キャッシュにない−どのシノニムにしても−が、Ｌ２キャッシュにはあることを示す。したがって、ステップ３８７で、Ｌ１ミスと解決され、これには、要求が繰り返された際にＬ１ヒットと判明されるように、Ｌ２からＬ１にデータを転送し、そしてセット・ディレクトリおよび有効化ディレクトリを更新することを含む。
【００５８】
ステップ３７０、３８３、３８６および３８７の各々に続いては、明らかにＬ１ヒットに帰着するであろう要求を繰り返すためのステップ３９９である。
【００５９】
図４は、本開示に従って図２のキャッシュ・メモリにおいてシノニムを解決するための方法のフローチャートである。
【００６０】
ステップ４０１で、第２の実効アドレス（シノニムＢと称される）が受けられる。第２の実効アドレスは、シノニムＡと称される前に処理された実効アドレスのシノニムである。言い換えれば、シノニムＢがキャッシュ・ラインに対して使用される一方で、他のシノニムＡが既にＬ１キャッシュにある。
【００６１】
例証目的で、図４は、アドレス・シノニムＡおよびＢを１６進法で図示する。簡潔にするために、２０ビット・アドレス（５つの１６進数字）が示される。この例では、キャッシュ・ラインへのバイト・インデックスまたはオフセットは示されない。ビットは左から右に番号付けされる（ビット０が最上位ビットである）ので、各アドレスはビット０：１９を有する。シノニムＡ＝１２３４５およびシノニムＢ＝６７８９５。この例では、セット・ディレクトリ２０３は、ビット１６：１９（すなわちアドレスの最後の１６進数字）を使用してインデックス付けされてもよく、かつビット８：１５を使用してタグ付けされてもよい。図４に図示されるように、３つのユースケース例Ａ）〜Ｃ）４３０が描かれる。
【００６２】
ユースケースＡ）では、シノニムＡおよびＢはセット・ディレクトリ２０３に同じインデックス（ｓｅｔｐインデックス＝５）を有し、かつ異なるタグを有する。シノニムＡおよびＢは同じ絶対アドレスにマッピングする。
【００６３】
ユースケースＢでは、シノニムＡおよびＢはセット・ディレクトリ２０３に同じインデックス（ｓｅｔｐインデックス＝５）および同じタグを有する。シノニムＡおよびＢは同じ絶対アドレスにマッピングする。
【００６４】
ユースケースＣでは、ラインＡおよびＢは、セット・ディレクトリ２０３に同じインデックス（ｓｅｔｐインデックス＝５）および同じタグを有する。しかしながら、それらは異なる絶対アドレスにマッピングする。
【００６５】
ステップ４０３で、セット・ディレクトリ２０３は、要求されたシノニムＢに対してキャッシュ・ヒットを特定するために検索される。これは、セット・ディレクトリ２０３が最終的に実際にヒットとならなかったセットを提供したので、「セット・ディレクトリ誤り」ケースと考えられる。
【００６６】
しかしながら、ステップ４０５で、有効化ディレクトリ２０５におけるシノニムＢの検索がキャッシュ・ミスに帰着する。ルックアップがシノニムＡに対してであれば、有効化ディレクトリ２０５における検索はヒットとなるであろう（そしてステップ３６０が実行されてもよい）。しかしながら、アクセスがシノニムＢに対してであったので、有効化ディレクトリ２０５から読まれるアドレスは要求されたアドレスに一致しないことになる。
【００６７】
ステップ４０７で、セット・ディレクトリ２０３におけるシノニムＢに対応するエントリが無効化される。そして、シノニムＢを使用する繰返しアクセスがステップ４０９でトリガされる。
【００６８】
ステップ４０３〜４２０はユースケースＢ）およびＣ）に対して実行される。
【００６９】
ステップ４１１で、セット・ディレクトリ２０３は、要求されたシノニムＢに対してキャッシュ・ミスを特定するために検索される。
【００７０】
ステップ４１１のキャッシュ・ミスを特定した上で、ステップ４１３が実行される。ステップ４１３（ステップ３８４を行う）で、シノニムＢと関連するＬ１キャッシュ・ディレクトリ内容がシノニムＢと関連するＬ２ディレクトリ内容に対して比較されて、キャッシュ・ラインが実際にＬ１にあることを見つける。
【００７１】
ステップ４１３でキャッシュ・ヒットを特定したまたは見つけた上で、セット・ディレクトリ２０３および有効化ディレクトリ２０５はステップ４１５で更新されてもよい。更新は、例えばシノニムＡ情報をシノニムＢで上書きすることによって行われてもよい。
【００７２】
ステップ４１５の更新を行った上で、シノニムＢを使用するアクセスの繰返しがステップ４１７でトリガされてもよい。繰返しアクセスは、ステップ４１８でのセット・ディレクトリ・ヒットに続いてステップ４１９で有効化ディレクトリ・ヒットに帰着し、ステップ４２０でキャッシュ・アクセスが解決されることに帰着する。
【００７３】
ステップ４１１〜４２０はユースケースＡ）に対して実行されてもよい。例えば、ユースケースＡ）のシノニムＢが受けられると、ステップ４１１でミスと判明されてもよい。言い換えれば、ユースケースＡ）の受け入れたシノニムＢに対してステップ４１１〜４２０だけが実行されてもよい。
【００７４】
図５は、タグ・フィールド２１２およびキャッシュ・ライン・インデックス・フィールド２１０を備える実効アドレス、例えば２０１を介するキャッシュ・メモリ、例えば２００へのアクセスを制御するための方法のフローチャートである。
【００７５】
ステップ５０１で、タグ・フィールド２１２の第１の群のビット２１２ａおよび第２の群のビット２１２ｂが判定されてもよい。
【００７６】
ステップ５０３で、実効アドレスのライン・インデックス・ビットおよび第１の群のビット２１２ａがセット・ディレクトリ２０３において検索されてもよく、それによって実効アドレス２０１のキャッシュ・ラインを含むセットを示すためにセット識別子が生成される。
【００７７】
ステップ５０５で、ステップ５０３で提供されたセット識別子を有するセットにおけるキャッシュ・ラインの存在を検証するために、セット識別子ならびに実効アドレス２０１のライン・インデックス・ビット２１０および第２の群のビット２１２ｂが有効化ディレクトリ２０５において検索されてもよい。このステップ５０５は、キャッシュ・ラインが有効化ディレクトリ２０５に存在するかどうかを示すことによって、セットにおけるキャッシュ・ラインの存在または非存在を示しても、または確認してもよい。
【００７８】
ステップ５０５の第２の検索に基づいてセットにおけるキャッシュ・ラインの存在を判定することに応答して、ステップ５０７でヒット信号が発生されてもよい。ヒット信号は、データ・アレイ１４１からキャッシュ・ラインのデータを提供するために使用されてもよい。
【００７９】
一例では、ステップ５０３もしくはステップ５０５またはその両方は、検索されたアドレスがそれぞれセット・ディレクトリ２０３および有効化ディレクトリに見つけられない点でキャッシュ・ミスに帰着してもよい。この場合、キャッシュ・ミスは、ステップ３８０から３９９に関しては記載されるように、ＴＬＢ１４３および２次キャッシュ・ディレクトリ２４２にアクセスすることによって確認されてもよい。
【００８０】
ＴＬＢ無効化
【００８１】
一実施形態によれば、本方法は、有効化ディレクトリの有効化ディレクトリ・エントリを無効化するための要求を受けることに応答して、１次キャッシュ・ディレクトリにおける対応する１次キャッシュ・ディレクトリ・エントリの有効ビットをそれに応じて設定することを更に含む。
【００８２】
一実施形態によれば、本方法は、１次キャッシュ・ディレクトリと関連付けて第１の補助データ構造を設けることであって、第１の補助データ構造の各エントリがマルチプロセッサ・システムのＴＬＢパージ要求に示される情報を反映する実効アドレスのビットを備える、ことと、受けた要求に対応する第１の補助データ構造におけるエントリを特定することであって、特定されるエントリが１次キャッシュ・ディレクトリ・エントリを示す、こととを更に含む。
【００８３】
例えば、ゲスト・オペレーティング・システムのためのアドレス空間が対応するハイパーバイザによって削除される場合、キャッシュ・ラインはまだＬ１キャッシュにある。しかし、それらに対する有効な変換はもはやない。これは、Ｌ１キャッシュにおけるデータが、削除された変換を使用する要求によってアクセス可能であるべきでないことを意味する。これらのエントリをアクセス不可能にするために、それらは、Ｌ１キャッシュ・ディレクトリが論理的にタグ付けされているため、Ｌ１キャッシュにおいて無効化されるべきである。無効化の前に、影響されるエントリが見つけられるべきである。例えば、特定のエントリがゲスト・オペレーティング・システムに属することを示すために、有効化ディレクトリにおけるエントリ情報の一部としてビットが使用されてもよい。ＴＬＢ無効化がそのゲスト・オペレーティング・システムに関連した全ての変換情報を削除する場合、ゲスト・ビットが設定された有効化ディレクトリ２０５における全てのディレクトリ・エントリが無効化されるべきである。
【００８４】
有効化ディレクトリ２０５では、エントリが無効化（またはパージ）されるべきか否かを見抜くために注目されることができるエントリは常に１つだけである。この問題を軽減するために、Ｌ１ディレクトリ１４２は、有効化ディレクトリ２０５における各エントリに対する変換関連情報を保持する副構造「ｐｔｒｄｉｒｅｘｔ」（すなわち第１の補助データ構造）が拡張される。Ｌ１ディレクトリと同様に、第１の補助データ構造において全てのセットが並列にアクセスされることができる。例えば、第１の補助データ構造のエントリが「ｓｅｔ０−ｔｈ  ＡＳＣＥ（４４：４９），ＰＧＳＺ（０：１），ＳＸ（３７：４３）」を備えてもよく、ここでＰＧＳＺはページ・サイズを指し（例えば、動的アドレス変換結果は４ｋ、１Ｍまたは２Ｇページ・サイズであることができる）、ＳＸ（３７：４３）は実効アドレスのビット３７：４３を指し、そしてＡＳＣＥ（４４：４９）はそれぞれのスレッドｔｈによってアドレス空間識別子として使用される実効アドレスのビット４４：４９である。
【００８５】
例えば、アドレス空間制御要素（ＡＳＣＥ）によって示される仮想記憶と関連する一連の仮想アドレスがアドレス空間と呼ばれてもよい。アドレス空間はユーザ間の隔離の程度を提供するために使用されてもよい。第１の補助データ構造の構造は、ＡＳＣＥビットを使用してより効率的な方式で所与のアドレス空間と関連するエントリをパージすることを可能にすることができる。
【００８６】
この副構造により、或る変換だけに影響するべきであるＴＬＢ無効化が、有効化ディレクトリにおける全てのエントリを１つずつスクラブすることによってよりもより著しく速く行われることができる。
【００８７】
副構造ｐｔｒｄｉｒｅｘｔは有効化ディレクトリ２０５の任意の更新と共に書き込まれる。ｐｔｒｄｉｒｅｘｔのサイズとＴＬＢ無効化の精度との間でトレード・オフがなされることができる。ゲスト対ハイパーバイザ所有のケースに対処するため、区別を行うために単一のビットが必要とされる。ＴＬＢパージが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）におけるＡＳＣＥ、すなわち５１ビット値に加えて或る制御情報などのアドレス空間識別子に基づいて行われる場合、どのエントリがパージされなければならず、どれがその必要がないかをフィルタリングするために数ビットだけまたは数ビットのハッシュを記憶するのに十分であろう。ｐｔｒｄｉｒｅｘｔの実装例は、ＡＳＣＥビットの一部、ゲスト・レベル識別子ビット、ページ・サイズ指標（複数のページ・サイズをサポートするＴＬＢアーキテクチャのため）、セグメント・インデックスまたはセグメント・インデックスの一部（より高レベルが「セグメント・テーブル」と呼ばれ、そしてセグメント・テーブルに基づく無効化が可能である、マルチ・レベル・ページ・テーブルをサポートするＴＬＢアーキテクチャのため）を保持し得る。
例えば、有効ビットがＬ１ディレクトリ・エントリの一部である場合、エントリの実際の無効化は、所与のＬ１ディレクトリにおけるセットの全てのエントリに並列に行われることもできる。
【００８８】
一実施形態によれば、本方法は、１次キャッシュ・ディレクトリと関連付けて第２の補助データ構造を設けることを更に備える。第２の補助データ構造は、１次キャッシュ・ディレクトリのエントリと関連する絶対アドレスを備える。キャッシュ・メモリにエントリを記憶するための要求を受けることに応答して、記憶場所の絶対アドレスを特定するために第２の補助データ構造を使用し、そして絶対アドレスを使用して記憶場所にエントリを記憶する。例えば、第２の補助データ構造は論理的にインデックス付けされてもよい。例えば、絶対アドレスを必要とするキャッシュ機能の目的で、絶対アドレスは、別々にアクセス可能な「ペイロード」の一部として副構造（すなわち第２の補助データ構造）に追加される。この副構造は論理的にキャッシュ・ディレクトリの一部であるが、タグの一部としては使用されない。メモリに送られる記憶がそれらの絶対アドレスを知っている必要があるので、これは記憶処理を簡単にする。それは、Ｌ１キャッシュに見つけられるキャッシュ・ラインの絶対アドレスを潜在的に知る必要があるまたは知ることから利益を得るであろう他のキャッシュ機能も可能にする。
【００８９】
上記した特徴の可能な組合せは以下であることができる：
【００９０】
タグ・フィールドおよびキャッシュ・ライン・インデックス・フィールドを備える実効アドレスを介してキャッシュ・メモリへのアクセスを操作するための方法であって、キャッシュ・メモリが、論理的にアドレス付けおよび論理的にタグ付けされている１次キャッシュ・ディレクトリを備えており、
タグ・フィールドの第１の群のビットおよび第２の群のビットを判定することと、
キャッシュ・ライン・インデックス・フィールドのライン・インデックス・ビットを使用して論理的にインデックス付けされかつ第１の群のビットを使用して論理的にタグ付けされるセット・ディレクトリを設けることと、
ライン・インデックス・ビットおよびセット・ビットを使用して論理的にインデックス付けされかつ第２の群のビットを使用して論理的にタグ付けされる有効化ディレクトリを設けることと、
セット・ディレクトリにおいて実効アドレスのライン・インデックス・ビットおよび第１の群のビットを求めて第１に検索し、そして実効アドレスのそれぞれのキャッシュ・ラインを含むセットを示すセット識別子を生成することと、
有効化ディレクトリにおいて実効アドレスのセット識別子、ライン・インデックス・ビットおよび第２の群のビットを求めて第２に検索することと、
第２の検索に基づいてセットにおけるキャッシュ・ラインの存在を判定することに応答して、ヒット信号を発生することとを含む、方法。
【００９１】
特徴組合せ１の方法であって、第２の検索がセットにおけるキャッシュ・ラインの存在を確認しない場合、ミス信号を発生する。
【００９２】
特徴組合せ１または２の方法であって、キャッシュ・メモリが変換ルックアサイド・バッファＴＬＢを更に備えており、１次キャッシュ・ディレクトリにおける所与のエントリが有効ビット、実効アドレスの一部分およびセット・インデックスを記憶しており、第２の検索がセットにおけるキャッシュ・ラインの存在を確認しない場合、本方法は、
１次キャッシュ・ディレクトリにおいてライン・インデックス・ビットを求めて検索して、各見つけられるエントリに対して、論理ポインタに帰着することであり、論理ポインタが、エントリが存在するセットのセット・インデックスおよび実効アドレスの一部分を備える、ことと、
論理ポインタのうちセット・インデックスがセット識別子に一致する論理ポインタを選択することと、
実効アドレスと関連する絶対アドレスを特定するためにＴＬＢにおいて実効アドレスを求めて検索することと、
キャッシュ・メモリのより高レベルの２次キャッシュ・ディレクトリにおける各セットにおける実効アドレスに対応するエントリであり、他の絶対アドレスを備える、エントリを得るために２次キャッシュ・ディレクトリにおいて実効アドレスを求めて検索することと、
２次キャッシュ・ディレクトリの各得られた絶対アドレスをＴＬＢの絶対アドレスと比較して、２次キャッシュ・ディレクトリのセットの他のセット識別子に帰着することと、
他のセット識別子を有する２次キャッシュ・ディレクトリのセットのエントリの論理アドレスを選択された論理ポインタと比較し、そして比較結果に基づいてミス信号を確認するもしくはセットおよび有効化ディレクトリをそれに応じて更新するまたはその両方を行うこととを更に含む。
【００９３】
前述の特徴組合せのいずれかの方法であって、１次キャッシュ・ディレクトリの検索が第１の検索と並列に行われる。
【００９４】
前述の特徴組合せのいずれかの方法であって、論理ポインタの有効ビットが有効状態に設定されている場合にヒット信号の発生が行われることを更に含む。
【００９５】
特徴組合せ３の方法であって、ＴＬＢにおける検索および２次キャッシュ・ディレクトリにおける検索が並列に行われる。
【００９６】
前述の特徴組合せのいずれかの方法であって、第１の群のビットがタグ・フィールドからの最下位ビットであり、そして第２の群のビットがタグ・フィールドからの最上位ビットである。
【００９７】
前述の特徴組合せのいずれかの方法であって、有効化ディレクトリが、キャッシュ・メモリの全てのセットの各キャッシュ・ラインごとに１つのディレクトリ・エントリを保持する１つの物理アレイ構造から構築される。
【００９８】
前述の特徴組合せのいずれかの方法であって、１次キャッシュ・ディレクトリにおける所与のエントリが有効ビット、実効アドレスの一部分およびセット・インデックスを記憶しており、本方法は、第１の検索と並列に、１次キャッシュ・ディレクトリにおいてライン・インデックス・ビットを検索して、１次キャッシュ・ディレクトリにおける各見つけられるエントリに対する有効ビット値に帰着することと、有効ビット値のうち関連するセット・インデックスがセット識別子に一致する有効ビット値を選択することであり、有効ビット値が有効状態を示す場合にヒット信号の発生が行われる、こととを更に含む。
【００９９】
前述の特徴組合せのいずれかの方法であって、１次キャッシュ・ディレクトリがＬ１レベル・キャッシュ・ディレクトリである。
【０１００】
特徴組合せ３の方法であって、２次キャッシュ・ディレクトリがＬ２レベル・キャッシュ・ディレクトリである。
【０１０１】
前述の特徴組合せのいずれかの方法であって、キャッシュ・メモリが、２次キャッシュ・ディレクトリを更に備えるマルチ・レベル・キャッシュ・ディレクトリである。
【０１０２】
前述の特徴組合せのいずれかの方法であって、１次キャッシュ・ディレクトリにおける所与のエントリが有効ビット、実効アドレスの一部分およびセット・インデックスを記憶しており、本方法は、
実効アドレスのシノニムである第２の実効アドレスを受けることと、
第２の実効アドレスを使用して第１および第２の検索を繰り返すことと、
第２の検索が第２の実効アドレスによって参照されるキャッシュ・ラインの存在を確認しない場合、第２の実効アドレスに対応するセット・ディレクトリのエントリを無効化することと、
ミスを検出するために第２の実効アドレスを使用して第１の検索を行うことと、
１次キャッシュ・ディレクトリにおいて第２の実効アドレスを求めて検索して、１次キャッシュ・ディレクトリにおける各セットに対する論理ポインタに帰着することであり、論理ポインタがセット・インデックスおよび第２の実効アドレスの一部分を備える、ことと、
キャッシュ・メモリのより高レベルの２次キャッシュ・ディレクトリにおける各セットにおける第２の実効アドレスに対応するエントリを得るために２次キャッシュ・ディレクトリにおいて第２の実効アドレスを求めて検索することと、
２次キャッシュ・ディレクトリのセットのエントリの論理アドレスを論理ポインタの各々と比較し、そして比較結果に基づいて１次キャッシュ・ディレクトリにおけるキャッシュ・ラインの存在を確認することと、
実効アドレスに関連したエントリを第２の実効アドレスで上書きすることによってセットおよび有効化ディレクトリを更新することと、
特徴組合せ１の最後の３つのステップを繰り返すこととを更に含む。
【０１０３】
前述の特徴組合せのいずれかの方法であって、有効化ディレクトリのエントリを無効化するための要求を受けることに応答して、１次キャッシュ・ディレクトリにおける対応するエントリの有効ビットをそれに応じて設定することを更に含む。
【０１０４】
特徴組合せ１４の方法であって、１次キャッシュ・ディレクトリと関連付けて第１の補助データ構造を設けることであり、第１の補助データ構造の各エントリが、マルチプロセッサ・システムのＴＬＢパージ要求に示される情報を反映する実効アドレスのビットを備える、ことと、受けた要求に対応する第１の補助データ構造におけるエントリを特定することであり、特定されるエントリが１次キャッシュ・ディレクトリ・エントリを示す、こととを更に含む。
【０１０５】
前述の特徴組合せのいずれかの方法であって、１次キャッシュ・ディレクトリと関連付けて第２の補助データ構造を設けることであり、第２の補助データ構造が論理的にインデックス付けおよび物理的にタグ付けされている、ことと、Ｌ１キャッシュにエントリを記憶するための要求を受けることに応答して、記憶場所の絶対アドレスを特定するために第２の補助データ構造を使用し、そして絶対アドレスを使用して記憶場所にエントリを記憶することとを更に含む。
【０１０６】
本発明の態様が、本発明の実施形態に係る方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート例もしくはブロック図またはその両方を参照しつつ本明細書に記載される。フローチャート例もしくはブロック図またはその両方の各ブロック、およびフローチャート例もしくはブロック図またはその両方におけるブロックの組合せがコンピュータ可読プログラム命令によって実装されることができることが理解されるであろう。
【０１０７】
本発明は、システム、方法もしくはコンピュータ・プログラム製品またはその組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためにコンピュータ可読プログラム命令を有する１つまたは複数のコンピュータ可読記憶媒体を含んでもよい。
【０１０８】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶することができる有形デバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的な列挙には以下を含む：ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチ・カードまたは命令が記録された溝に隆起された構造などの機械的に符合化されたデバイス、および上記の任意の適切な組合せ。コンピュータ可読記憶媒体は、本明細書で使用される場合、電波もしくは他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通って伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、または電線を通って伝送される電気信号など、それ自体が一過性信号であると解釈されないものとする。
【０１０９】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバまたはその組合せを備えてもよい。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、そしてコンピュータ可読プログラム命令をそれぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
【０１１０】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋等などのオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語もしくは同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードかオブジェクト・コードかであってもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意の種類のネットワークを通じてユーザのコンピュータに接続されてもよく、または外部コンピュータに接続がなされてもよい（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）。一部の実施形態において、例えば、プログラマブル論理回路網、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路網は、本発明の態様を行うために、コンピュータ可読プログラム命令の状態情報を活用して電子回路網を特性化することによってコンピュータ可読プログラム命令を実行してもよい。
【０１１１】
本発明の態様が、本発明の実施形態に係る方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート例もしくはブロック図またはその両方を参照しつつ本明細書に記載される。フローチャート例もしくはブロック図またはその両方の各ブロック、およびフローチャート例もしくはブロック図またはその両方におけるブロックの組合せがコンピュータ可読プログラム命令によって実装されることができることが理解されるであろう。
【０１１２】
これらのコンピュータ可読プログラム命令は、命令が、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行し、フローチャートもしくはブロック図のまたはその両方の１つまたは複数のブロックに指定される機能／行為を実装するための手段を生じさせるように、汎用コンピュータ、専用コンピュータまたは他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを生成してもよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートもしくはブロック図またはその両方の１つまたは複数のブロックに指定される機能／行為の態様を実装する命令を含む製品を構成するように、コンピュータ、プログラマブル・データ処理装置もしくは他のデバイスまたはその組合せに特定の方式で機能するよう指令することができるコンピュータ可読記憶媒体に記憶されてもよい。
【０１１３】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置または他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方の１つまたは複数のブロックに指定される機能／行為を実装するように、コンピュータ、他のプログラマブル・データ処理装置または他のデバイスへロードされて、コンピュータ、他のプログラマブル装置または他のデバイス上で一連の動作ステップが行われてコンピュータ実装プロセスを生成させてもよい。
【０１１４】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性および動作を例示する。この点で、フローチャートまたはブロック図における各ブロックは、モジュール、セグメントまたは命令の一部分を表現してもよく、それは指定された論理機能を実装するための１つまたは複数の実行可能命令を備える。一部の代替実装では、ブロックに示される機能は、図に示される順序と異なって起こってもよい。例えば、連続して図示される２つのブロックが、実際には、実質的に並行して実行されてもよく、またはブロックは、時に逆順に実行されてもよく、関与する機能性次第である。ブロック図もしくはフローチャート例またはその両方の各ブロック、およびブロック図もしくはフローチャート例またはその両方におけるブロックの組合せが、指定された機能もしくは行為を行うまたは専用ハードウェアおよびコンピュータ命令の組合せを実施する専用ハードウェア・ベースのシステムによって実装されることができることも留意されるであろう。
【図１】
2020523678.tif 000003
【図２】
2020523678.tif 000004
【図３】
2020523678.tif 000005
【図４】
2020523678.tif 000006
【図５】
2020523678.tif 000007
【国際調査報告】
2020523678.tif 000008
2020523678.tif 000009