(57)【要約】処理システム（１００）は、複数のプロセッサコア（１１１，１１２，１１３，１１４）と、複数の専用キャッシュ（１３１，１３２，１３３，１３４）と、を備える。各専用キャッシュは、複数のプロセッサコアの対応するプロセッサコアに関連付けられており、対応するキャッシュラインの第１セットを含む。処理システムは、複数のプロセッサコアによって共有される共有キャッシュ（１４０）をさらに備える。共有キャッシュは、キャッシュラインの第２セットを含み、シャドウタグメモリ（１４２）は、複数のエントリ（２１６）を含み、各エントリは、専用キャッシュのうち１つの専用キャッシュのキャッシュラインの第１セットの対応するキャッシュラインについての状態情報（２１５）を記憶する。【選択図】図１
2019519028.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコア（１１１，１１２，１１３，１１４）と、
複数の専用キャッシュ（１３１，１３２，１３３，１３４）であって、各専用キャッシュは、前記複数のプロセッサコアの対応するプロセッサコアに関連付けられており、対応するキャッシュラインのセットを含む、複数の専用キャッシュと、
前記複数のプロセッサコアによって共有される共有キャッシュ（１４０）と、を備え、
前記共有キャッシュは、
キャッシュラインの第２セットと、
複数のエントリ（２１６）を含むシャドウタグメモリ（１４６）であって、各エントリは、前記複数の専用キャッシュのうち１つ専用キャッシュのキャッシュラインのセットのうち対応するキャッシュラインの状態（２１５）及びアドレス情報（２１４）を記憶する、シャドウタグメモリと、を備える、
処理システム（１００）。
【請求項２】
前記専用キャッシュは、コヒーレンシ状態の第１セットに従って、キャッシュラインの前記対応するキャッシュラインのセットのキャッシュラインのコヒーレンシ状態を記憶するように構成されており、
前記シャドウタグメモリは、コヒーレンシ状態の前記第１セットのスーパーセットを含むコヒーレンシ状態の第２セットに従って、前記複数の専用キャッシュのキャッシュラインのセットのキャッシュラインのコヒーレンシ状態を記憶する、
請求項１の処理システム。
【請求項３】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから取得されたことを通知するコヒーレンシ状態を含む、
請求項２の処理システム。
【請求項４】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから変更された形態で取得されたことを通知するコヒーレンシ状態を含む、
請求項２の処理システム。
【請求項５】
前記共有キャッシュは、前記シャドウタグメモリに基づいてキャッシュプローブをフィルタリングするコントローラ（１４２）を備える、
請求項１の処理システム。
【請求項６】
前記コントローラは、
前記シャドウタグメモリを検索して、前記シャドウタグメモリがキャッシュプローブに関連するキャッシュラインに対する有効なエントリを有するかどうかを判別することと、
前記シャドウタグメモリが前記キャッシュラインに対して有効なエントリを有していないと判別したことに応じて、前記キャッシュプローブに応じてキャッシュミスを通知することと、
によって、キャッシュプローブをフィルタリングする、
請求項５の処理システム。
【請求項７】
前記コントローラは、
前記シャドウタグメモリが前記キャッシュラインに対する有効なエントリを有すると判別したことに応じて、前記有効なエントリに関連する前記専用キャッシュを識別し、前記キャッシュプローブを前記識別された専用キャッシュに転送すること
によって、キャッシュプローブをフィルタリングする、
請求項５の処理システム。
【請求項８】
複数のプロセッサコア（１１１，１１２，１１３，１１４）に関連する複数の専用キャッシュ（１３１，１３２，１３３，１３４）と、前記複数のプロセッサコアによって共有される共有キャッシュ（１４０）と、を備える処理システム（１００）における方法であって、
前記複数の専用キャッシュにて、前記複数の専用キャッシュに記憶されるキャッシュラインのコヒーレンシ情報を維持することと、
前記共有キャッシュのシャドウタグメモリ（１４２）にて、前記複数の専用キャッシュに記憶されるキャッシュラインのコヒーレンシ情報を維持することと、を含む、
方法。
【請求項９】
前記複数の専用キャッシュにて前記コヒーレンシ情報を維持することは、コヒーレンシ状態の第１セットに従って、前記複数の専用キャッシュにて前記コヒーレンシ情報を維持することを含み、
前記共有キャッシュの前記シャドウタグメモリにて前記コヒーレンシ情報を維持することは、コヒーレンシ状態の第２セットに従って前記コヒーレンシ情報を維持することであって、前記コヒーレンシ状態の第２セットが前記コヒーレンシ状態の第１のセットのスーパーセットを含む、ことを含む、
請求項８の方法。
【請求項１０】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから取得されたことを通知するコヒーレンシ状態を含む、
請求項９の方法。
【請求項１１】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから変更された形態で取得されたことを通知するコヒーレンシ状態を含む、
請求項９の方法。
【請求項１２】
前記共有キャッシュにて、前記シャドウタグメモリに基づいてキャッシュプローブをフィルタリングすることを含む、
請求項８の方法。
【請求項１３】
前記キャッシュプローブをフィルタリングすることは、
前記シャドウタグメモリを検索して、前記シャドウタグメモリがキャッシュプローブに関連するキャッシュラインに対する有効なエントリ（２１６）を有するかどうかを判別することと、
前記シャドウタグメモリが前記キャッシュラインに対する有効なエントリを有していないと判別したことに応じて、前記キャッシュプローブに応じてキャッシュミスを通知することと、を含む、
請求項１２の方法。
【請求項１４】
前記シャドウタグメモリを検索して、前記シャドウタグメモリが前記共有キャッシュからエビクトされているキャッシュラインに対する有効なエントリ（２１６）を有するかどうかを判別することと、
前記キャッシュラインに対する有効なエントリが存在しないと判別したことに応じて、前記キャッシュラインを、メモリコントローラ（１０６）にエビクトされているものとして報告することと、
前記キャッシュラインに対する有効なエントリが存在すると判別したことに応じて、前記キャッシュラインを、前記メモリコントローラにエビクトされているものとして報告するのを控えることと、を含む、
請求項８の方法。
【請求項１５】
複数の専用キャッシュ（１３１，１３２，１３３，１３４）であって、各専用キャッシュは、プロセッサコア（１１１，１１２，１１３，１１４）のセットのうち対応するプロセッサコア専用である、複数の専用キャッシュと、
前記プロセッサコアのセットによって共有される共有キャッシュ（１４０）であって、前記共有キャッシュは、前記複数の専用キャッシュに対して排他的なデータ及び前記複数の専用キャッシュに対して包括的なタグとして維持される、共有キャッシュと、を備える、
処理システム（１００）。
【請求項１６】
前記共有キャッシュは、
前記専用キャッシュに記憶されたキャッシュライン用の前記複数の専用キャッシュによって記憶されたタグ情報を表す状態情報を記憶するシャドウタグメモリ（１４２）を備える、
請求項１５の処理システム。
【請求項１７】
前記専用キャッシュの各々は、コヒーレンシ状態の第１セットに従って前記専用キャッシュのキャッシュラインのコヒーレンシ状態を記憶するように構成されており、
前記シャドウタグメモリによって記憶される前記状態情報は、コヒーレンシ状態の第２セットに従って前記複数の専用キャッシュの前記キャッシュラインの少なくともサブセットのコヒーレンシ状態を含み、前記コヒーレンシ状態の第２セットは、前記コヒーレンシ状態の第１セットのスーパーセットを含む、
請求項１６の処理システム。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連技術の説明）
処理システムは、通常、データキャッシングを利用して、システムメモリに記憶されたデータへのアクセスを高速化する。データキャッシングは、システムメモリからアクセスされたデータを複数のレベルのキャッシュが一時的に記憶するために使用されるキャッシュ階層の形態で実装される。コヒーレンシプロトコルは、このような複数のレベルのキャッシュに実装されることが多く、古くなった又は他の点で無効なキャッシュされたデータに対してプロセッサコアが動作しないことを確実にする。しかしながら、排他的なキャッシング実装（すなわち、有効なキャッシュラインが１つのレベルのキャッシュラインのみにキャッシュされることを許されている場合）では、従来のキャッシング技術は、コヒーレンシプロトコルを実装するために過剰なプローブトラフィックを引き起こすことが多く、これにより、キャッシング性能に影響を与える場合がある。
【０００２】
本開示は添付の図面を参照することによって、より良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面における同じ参照記号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、シャドウタグメモリを利用する処理システムのブロック図である。
【図２】いくつかの実施形態による、レベル２（Ｌ２）キャッシュの状態情報を記憶するためのシャドウタグメモリを有するレベル３（Ｌ３）キャッシュのブロック図である。
【図３】いくつかの実施形態による、シャドウタグメモリを実装してキャッシング性能を向上させるためのプロセスを示すフローチャートである。
【図４】いくつかの実施形態による、シャドウタグメモリを用いてキャッシュプローブをフィルタリングするためのプロセスを示すフローチャートである。
【図５】少なくともいくつかの実施形態による、シャドウタグメモリを用いて、接続されたフィル／ビクティム要求のためのプロセスを示す図である。
【図６】いくつかの実施形態による、シャドウタグメモリを用いたＦｅ（Forward with Exclusive）コヒーレンシ状態の使用例を示す図である。
【図７】いくつかの実施形態による、シャドウタグメモリを用いたＯｄ（Owned Dirty）コヒーレンシ状態の使用例を示す図である。
【図８】いくつかの実施形態による、シャドウタグメモリを用いて、キャッシュラインをキャッシュ階層からメモリにエビクトするためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【０００４】
図１〜図８は、シャドウタグメモリを利用して、効率的なキャッシュオペレーションを提供する処理システムを示す図である。処理システムは、複数のプロセッサコアと、２つ以上のレベルのキャッシュとを有する１つ以上の計算複合体を実装する。各プロセッサコアは、対応するコア専用の１つ以上のレベルのキャッシュ（以下、「専用キャッシュ」）に関連付けられている。処理システムは、別のレベルのキャッシュをさらに実装しており、このキャッシュ（以下、「共有キャッシュ」）が計算複合体のプロセッサコア間で共有される。共有キャッシュのコントローラは、シャドウタグメモリ内の専用キャッシュのキャッシュラインのアドレス及び状態情報を維持する。この状態情報は、例えば、各専用キャッシュのキャッシュラインのコヒーレンシ情報と、専用キャッシュのキャッシュラインの以前の履歴に関する情報と、を含む。かかるコヒーレンシ情報は、例えば、専用キャッシュによって実装されるコヒーレンシ状態のセットのスーパーセットであるコヒーレンシ状態のセットからのコヒーレンシ状態のインジケータを含む。このシャドウタグメモリによって、共有キャッシュは、シャドウタグメモリに存在するラインに基づいて、専用キャッシュに送られたプローブをフィルタリングすることができる。プロービングされたラインがシャドウタグメモリに存在しない場合、プローブは、専用キャッシュに送られる必要がないので、共有キャッシュによってフィルタリングされる。このプローブフィルタリングは、計算複合体から、又は、計算複合体とシステムとの間から生じるプローブのための、計算コンプレックス内の専用キャッシュへのプローブトラフィックを低減する。いくつかの実施形態では、シャドウタグメモリは、専用キャッシュのキャッシュラインの状態をより高い粒度で追跡するだけではなく、専用キャッシュレベルからのキャッシュラインフィル要求及びこれに関連するキャッシュラインビクティム要求をより効率的に処理する。
【０００５】
図１は、少なくともいくつかの実施形態による、シャドウタグメモリを利用する処理システム１００を示す図である。図示した例では、処理システム１００は、計算複合体１０２と、キャッシュ階層１０４と、メモリコントローラ１０６と、サウスブリッジ１０８と、を含む。計算複合体１０２は、この例で示す４つのプロセッサコア１１１，１１２，１１３，１１４等の複数のプロセッサコアを含む。プロセッサコアは、例えば、中央演算処理装置（ＣＰＵ）コア、グラフィック処理装置（ＧＰＵ）コア、デジタルシグナルプロセッサ（ＤＳＰ）コア、又は、これらの組み合わせを含む。計算複合体１０２のプロセッサコアの数は、４より少なくてもよいし、４より多くてもよいことが理解されるであろう。
【０００６】
メモリコントローラ１０６は、キャッシュ階層１０４とシステムメモリ１１６との間のインタフェースとして動作する。したがって、キャッシュ階層１０４にキャッシュされるデータは、通常、「キャッシュライン」と呼ばれるデータブロックとして操作され、システムメモリ１１６の物理アドレスを使用してメモリ階層でアドレスされるか、そうでなければ配置される。キャッシュラインは、キャッシュ階層１０４からのメモリ要求に応じて、メモリコントローラ１０６によってシステムメモリ１１６からアクセスされる。同様に、変更されたデータを含むキャッシュラインがキャッシュ階層１０４からエビクトされ、システムメモリ１１６において更新される必要がある場合、メモリコントローラ１０６は、このライトバックプロセスを管理する。サウスブリッジ１０８は、キャッシュ階層１０４と、メモリコントローラ１０６と、処理システム１００の１つ以上の周辺機器１１８（例えば、ネットワークインタフェース、キーボード、マウス、ディスプレイ及び他の入出力装置）との間のインタフェースとして動作する。
【０００７】
キャッシュ階層１０４は、２つ以上のレベルのキャッシュを含む。図示した例では、キャッシュ階層１０４は、３つのキャッシュレベル（レベル１（Ｌ１）、レベル２（Ｌ２）、レベル３（Ｌ３））を含む。Ｌ１の場合、コア複合体１０２は、図１に示すように、プロセッサコア１１１〜１１４の各々に対応するＬ１キャッシュ１２１，１２２，１２３，１２４として示されるプロセッサコア毎の小さい専用キャッシュを実装する。
【０００８】
Ｌ２の場合、コアコンプレックス１０２は、図１にも示すように、プロセッサコア１１１〜１１４の各々に対応するＬ２キャッシュ１３１，１３２，１３３，１３４として示されるプロセッサコア毎の大きい専用キャッシュを実装する。Ｌ２キャッシュ１３１〜１３４の各々は、対応するプロセッサコア専用であるが、キャッシュ階層１０４は、Ｌ２キャッシュ１３１〜１３４間のコヒーレンシを維持するように動作する。いくつかの実施形態では、Ｌ２キャッシュ１３１〜１３４は、直接マッピングされたキャッシュであってもよいし、ｎウェイのセットアソシエイティブキャッシュであってもよい。
【０００９】
Ｌ３キャッシュレベルの場合、キャッシュ階層１０４は、計算複合体１０２のプロセッサコアによって共有され、これにより、少なくともＬ２キャッシュ１３１〜１３４によって共有されるＬ３キャッシュ１４０を実装する。Ｌ３キャッシュ１４０は、Ｌ３コントローラ１４２と、複数のインデックス及び複数の対応するウェイを含むＬ３データアレイであって、各ウェイが、対応するキャッシュラインを対応するインデックスに記憶するＬ３データアレイと、各インデックス／ウェイに関連するタグ情報を記憶するＬ３タグアレイと、を実装する。Ｌ３データアレイ及びＬ３タグアレイは、まとめて図示されており、本明細書ではＬ３データ／タグアレイ１４４と呼ばれる。
【００１０】
Ｌ３キャッシュ１４０は、Ｌ２キャッシュ１３１〜１３４のキャッシュラインのアドレス及び状態情報を記憶するための（すなわち、Ｌ２キャッシュ１３１〜１３４のタグ情報を表す「シャドウタグ」を記憶するための）シャドウタグメモリ１４６を含む。この目的のために、シャドウタグメモリ１４６は、複数の「バンク」、複数のインデックス、複数のウェイとして階層的に構成されたシャドウタグエントリを含むように、キャッシュ、アレイ、テーブル、ラッチ、フリップフロップ又は他のストレージ構成として実装される。すなわち、シャドウタグメモリ１４６の各エントリは、特定のバンク、インデックス及びウェイの組み合せに対応する。シャドウタグメモリ１４６の各シャドウタグエントリは、Ｌ２キャッシュ１３１〜１３４のうち１つのキャッシュに存在する、対応するキャッシュラインに関する情報を追跡する。対応するキャッシュラインのシャドウタグエントリに記憶される情報は、例えば、キャッシュラインの物理アドレス（又は、その一部）と、Ｌ２キャッシュのキャッシュラインの状態と、を含む。各バンクは、複数のインデックス及びウェイを含み、Ｌ２キャッシュの何れか１つに存在するキャッシュラインを追跡するのに使用されるシャドウタグエントリを表す。したがって、図１の例では、シャドウタグメモリ１４６は、４つのＬ２キャッシュ１３１〜１３４の各々に１つずつ、すなわち４つの「バンク」を含む。
【００１１】
説明するために、図２は、いくつかの実施形態による、Ｌ３キャッシュ１４０の例示的な実装を示している。Ｌ３キャッシュ１４０は、図示した例では４つのスライス２０１，２０２，２０３，２０４（スライス１〜４とも示されている）を有する複数の「スライス」に分割されており、各通信に関連するアドレスがスライス１〜４内でどのように配置されているかに基づいて、各スライスとの間で通信をルーティングするルーティングロジック２０６を含む。各スライスは、Ｌ２キャッシュ１３１〜１３４によって使用されるアドレスの分布の対応する「スライス」を表す。また、各スライスは、シャドウタグメモリ１４６の対応する「スライス」も表す。したがって、この例では４つのスライスがあるので、各スライス２０１〜２０４は、Ｌ２キャッシュ１３１〜１３４のアドレス空間のうち対応する２５％、及び、シャドウタグメモリ１４６のエントリのうち対応する２５％を記憶する。このために、スライス２０１の詳細図で示すように、各スライスは、Ｌ３データ／タグスライス２０８と、シャドウタグスライス２１０と、スライスコントローラ２１２と、を含む。スライス２０１の場合、Ｌ３データ／タグスライス２０８は、Ｌ２キャッシュアドレス範囲の１番目の２５％に対するデータ及びタグアレイエントリを有し、スライス２０２については、Ｌ２キャッシュアドレス範囲の２番目の２５％に対するものであり、以下同様である。同様に、スライス２０１については、シャドウタグスライス２１０は、シャドウタグメモリ１４６のインデックスの１番目の２５％を含み、スライス２０２については、シャドウタグスライス２１０は、シャドウタグメモリ１４６のインデックスの２番目の２５％を含み、以下同様である。
【００１２】
図２は、シャドウタグメモリ１４６の例示的な構成をより詳細に示す図である。上述したように、シャドウタグメモリ１４６は、シャドウタグメモリ１４６に関連するアドレス範囲全体の対応する部分をそれぞれ有するシャドウタグスライス２１０のセットとして記憶される。したがって、各シャドウタグスライス２１０は、複数のバンク、インデックス及びウェイを含む。各シャドウタグスライス２１０内のバンクの数は、Ｌ２キャッシュの数に対応する。図１の例では、４つのＬ２キャッシュ１３１〜１３４が存在するので、この例では、各シャドウタグスライス２１０は、Ｌ２キャッシュ１３１，１３２，１３３，１３４に関連する４つのバンク２２１，２２２，２２３，２２４を含む。バンクのアソシエイティビティ（すなわち、ウェイの数）は、そのバンクに関連するＬ２キャッシュのアソシエイティビティと同じである。例えば、Ｌ２キャッシュが８ウェイアソシエイティブである場合、シャドウタグメモリ１４６の各バンクも８ウェイアソシエイティブであり、すなわち、８つのウェイを有する。逆に、Ｌ２キャッシュが直接マッピングされている場合、シャドウタグメモリ１４６の各バンクも直接マッピングであり、すなわち、各バンクは、事実上１ウェイセットアソシエイティブキャッシュである。所定のバンクのインデックス及びウェイの特定の組み合わせは、Ｌ２キャッシュに存在する対応するキャッシュラインを追跡するシャドウタグエントリ２１６を表す。シャドウタグメモリ１４６の各エントリは、エントリ２１６に関連するキャッシュラインのアドレスの少なくとも一部（通常、物理アドレスの上位ビット）を記憶するアドレスフィールド２１４と、キャッシュラインに対する状態情報を格記憶する状態フィールド２１５と、を有する。Ｌ２キャッシュのキャッシュラインのシャドウタグメモリ１４６の対応するエントリ２１６に記憶された状態及びアドレス情報は、通常、そのキャッシュラインのＬ２キャッシュのタグアレイに記憶されたタグ情報の少なくともサブセットを反映し、このキャッシュラインのＬ２キャッシュのタグを「シャドウ」する。したがって、Ｌ３キャッシュ１４０のシャドウタグメモリ１４６の状態情報は、Ｌ２キャッシュ１３１〜１３４の対応するキャッシュラインタグの「シャドウタグ」として見ることができる。
【００１３】
以下の表１は、対応するＬ２キャッシュラインに対する状態情報を表すように、シャドウタグメモリロケーション２１６の例示的なフォーマット及び利用を示している。
【表１】
2019519028.tif 000003
【００１４】
したがって、表１に示すように、特定のコア／Ｌ２キャッシュの特定のキャッシュラインに関連するシャドウタグエントリ２１６に記憶された状態情報は、このＬ２キャッシュのキャッシュラインの物理アドレスのタグ部分のコピーだけでなく、キャッシュラインのコヒーレンシ状態情報と、Ｌ２キャッシュからのキャッシュラインのエビクションの処理を容易にする割り当て情報と、を含む。
【００１５】
図３は、いくつかの実施形態による、Ｌ３キャッシュ１４０のシャドウタグメモリ１４６の一般的なオペレーション及び使用を示す図である。ブロック３０２で示すように、Ｌ３コントローラ１４２は、Ｌ２キャッシュ１３１〜１３４のキャッシュラインの状態の変化を識別するために、（例えば、コヒーレンシバス又は他のスヌープメカニズムを介して）Ｌ２キャッシュ１３１〜１３４の動作をモニタし、それに応じてシャドウタグメモリ１４６を更新する。例示のために、新たなキャッシュラインがＬ２キャッシュ１３１〜１３４に持ち込まれると、Ｌ３コントローラ１４２は、スライス２０１〜２０４の何れがキャッシュラインの物理アドレスに関連するかを識別し、識別されたスライスのシャドウタグスライス２１０のインデックス及びウェイを識別して、Ｌ２キャッシュに対応するバンクのシャドウタグエントリ２１６を更新してこのキャッシュラインのＬ２キャッシュへの追加を反映する。同様に、Ｌ２キャッシュ１３１〜１３４でキャッシュラインの状態が変化すると、Ｌ３コントローラ１４２は、スライス２０１〜２０４の何れがキャッシュラインに関連しているかを識別し、この識別されたスライスのシャドウタグスライス２１０でＬ２キャッシュに対応するバンクの１つのシャドウタグエントリ２１６を更新して、キャッシュラインの更新された状態を反映する。同様に、Ｌ２キャッシュ１３１〜１３４からのキャッシュラインのエビクションは、Ｌ３コントローラ１４２をトリガして、キャッシュラインをシャドウタグメモリ１４６からエビクトする。
【００１６】
いくつかの実施形態では、キャッシュ階層１０４は、Ｌ２及びＬ３キャッシングレベルを排他キャッシュとして維持する。すなわち、Ｌ２キャッシュ１３１〜１３４のうち１つのキャッシュに存在するキャッシュラインは、Ｌ３キャッシュ１４０に存在せず、逆も同様である。しかしながら、事実上、Ｌ２キャッシュ１３１〜１３４に常駐するキャッシュラインに対するＬ３キャッシュ１４０のシャドウタグメモリ１４６のタグ又は他の状態情報を維持するが、Ｌ３キャッシュ１４０に何れのＬ２キャッシュラインも維持しないことによって、結果として、Ｌ２及びＬ３キャッシュレベルがデータ排他的であるが、タグが「包括的」であるハイブリッドなアプローチとなる。すなわち、シャドウタグメモリ１４６のＬ２キャッシュラインの状態情報を維持することによって、Ｌ３キャッシュ１４０は、Ｌ２キャッシュ１３１〜１３４のキャッシュラインに関連する実際のデータの何れも記憶する必要なく、Ｌ２キャッシュ１３１〜１３４の状態及びそこに記憶されたデータのコヒーレンシ状態についての可視性を有する。Ｌ２キャッシュのキャッシュライン状態に対するこのＬ３レベルの洞察は、多くの有利なオペレーションを可能にする。
【００１７】
例示すると、ブロック３０４によって表されるように、Ｌ３キャッシュ１４０は、どのキャッシュラインがＬ２キャッシュ１３１〜１３４に記憶されているか（及び、これらのキャッシュラインの状態）に関する情報を有するので、メモリコントローラ１０６、サウスブリッジ１０８、又は、計算複合体１０２の外部の処理システム１００の他のコンポーネントによって送られたキャッシュラインに対するキャッシュプローブ用のプローブフィルタとして機能するのに適している。このプローブフィルタリングプロセスは、図４を参照して後述する。別の例として、ブロック３０６によって表されるように、Ｌ３キャッシュ１４０のシャドウタグ情報によって、Ｌ３キャッシュ１４０が、関連するＬ２キャッシュラインエビクション要求（以下、「Ｌ２ビクティム要求」と称する）も有するＬ２フィル要求を、従来のキャッシュシステムにおいてかかる要求の両方を処理するという落とし穴の多くを回避する結合要求として実施することが可能になる。この一例は、図５を参照して後述する。さらに別の例として、ブロック３０８は、Ｌ３キャッシュ１４０のシャドウタグメモリ１４６を使用して、Ｌ２キャッシュ１３１〜１３４で適用されるよりも細かい粒度でＬ２キャッシュラインのコヒーレンシを追跡するプロセスを表し、これにより、システムレベルのキャッシュプローブの数を減らして、システム全体の性能を向上させる。この細かい粒度のコヒーレンシ状態の追跡の例は、図６及び７を参照して後述する。さらに、ブロック３１０は、図８を参照して後述するように、シャドウタグメモリ１４６がＬ３ビクティム処理を容易にするプロセスを表す。
【００１８】
図４は、少なくとも１つの実施形態による、シャドウタグメモリ１４６を用いてＬ３キャッシュ１４０によって実施されるプローブフィルタ方法４００を示すフローチャートである。キャッシュ階層（例えば、処理システム１００のキャッシュ階層１０４等）では、キャッシュプローブを用いて、キャッシュされたデータを取得するか、キャッシュされたデータの状態を問い合わせるか、キャッシュされたデータの状態を変更するか、又は、キャッシュからキャッシュラインを潜在的に無効にすることによって、キャッシュされたデータを操作する。計算複合体１０２（すなわち、プロセッサコア１１１〜１１４、Ｌ１キャッシュ１２１〜１２４及びＬ２キャッシュ１３１〜１３４）又はＬ３キャッシュ１４０の外部で生じるキャッシュプローブは、本明細書では、「システムキャッシュプローブ」と称する。これらのシステムキャッシュプローブは、例えば、メモリコントローラ１０６を介して処理システム１００の異なる計算複合体から到着してもよいし、サウスブリッジ１０８を介して周辺デバイス１２０等から到着してもよい。通常、このようなシステムキャッシュプローブは、キャッシュ階層内の最低レベル（この例では、Ｌ３キャッシュレベル）から伝播する。したがって、プローブフィルタ方法４００は、このようなシステムキャッシュプローブのためのプローブフィルタ処理を示す。
【００１９】
方法４００は、ブロック４０２において、Ｌ３コントローラ１４２によってシステムキャッシュプローブの受信を開始する。ブロック４０４において、キャッシュプローブに応じて、Ｌ３コントローラ１４２は、Ｌ３データ／タグアレイ１４４のタグをチェックしてキャッシュプローブによって要求されたキャッシュラインの有効なコピーがＬ３キャッシュ１４０に存在するかどうか（すなわち、キャッシュプローブがＬ３キャッシュ１４０上でヒットするかどうか）を判別する。要求されたキャッシュラインの有効なコピーがＬ３キャッシュ１４０に存在する場合、ブロック４０６において、Ｌ３コントローラ１４２は、キャッシュヒットを通知し、Ｌ３キャッシュ１４０からキャッシュプローブをサービスする。
【００２０】
一方、要求されたキャッシュラインの有効なコピーがＬ３キャッシュ１４０に存在しない場合、ブロック４０８において、Ｌ３コントローラ１４２は、シャドウタグメモリ１４６の状態情報を検索して、Ｌ２キャッシュの少なくとも１つが、要求されたキャッシュラインの有効なコピーを記憶しているかどうかを判別する。ブロック４１０において、Ｌ３コントローラ１４２は、検索の結果を分析する。シャドウタグメモリ１４６の検索によって、Ｌ２キャッシュ１３１〜１３６の何れもが、要求されたキャッシュラインの有効なコピーを含んでいないことが明らかな場合には、ブロック４１２において、Ｌ３コントローラ１４２は、キャッシュプローブに応じてキャッシュミスを通知する。このキャッシュミスによって、メモリコントローラ１０６は、メモリアクセスを開始して、要求されたキャッシュラインをシステムメモリ１１６から取得する。一方、シャドウタグメモリ１４６の検索によって、少なくとも１つのＬ２キャッシュが、要求されたキャッシュラインの有効なコピーを有することが明らかな場合には、ブロック４１４において、（有効なコピーを有する２つ以上のＬ２が存在する場合には）有効なコピーを有するＬ２キャッシュが選択され、Ｌ３コントローラ１４２は、キャッシュプローブを、選択されたＬ２キャッシュに転送する。要求されたキャッシュラインの有効なコピーを有する２つ以上のＬ２キャッシュが存在する場合、Ｌ３コントローラは、シャドウタグメモリ１４６において示される２つ以上のＬ２キャッシュのコヒーレンシ状態の比較に基づいてキャッシュプローブをサービスするために、Ｌ２キャッシュ１３１〜１３４のうち１つのキャッシュを選択する。例示すると、要求されたキャッシュラインのシャドウタグメモリ１４６に示されたＦｏｒｗａｒｄ（Ｆ）又はＯｗｎｅｄ（Ｏ）コヒーレンシ状態を有するＬ２キャッシュが、要求されたキャッシュラインの有効なコピーを有する他のＬ２キャッシュよりも優先的に選択される。
【００２１】
したがって、方法４００が示すように、シャドウタグメモリ１４６は、何れのキャッシュラインがＬ２キャッシュ１３１〜１３４に存在し且つ有効であるかをＬ３コントローラ１４２が知るのを可能にするので、いくつかの実施形態では、Ｌ３コントローラ１４２は、Ｌ２キャッシュ１３１〜１３４に存在しない（すなわち、有効でない）キャッシュラインについて、システムキャッシュプローブに対するキャッシュミスを先制的に通知し、これにより、そうでない場合にＬ２キャッシュにブロードキャストされ、Ｌ２キャッシュにキャッシュラインが存在しないことを示すＬ２「キャッシュミス」で返されるキャッシュプローブをフィルタリングして除去する。
【００２２】
図５は、いくつかの実施形態による、シャドウタグメモリ１４６を用いて、Ｌ３キャッシュ１４０にて、接続されたフィル／ビクティムトランザクションを処理するプロセスを示す図である。上述したように、Ｌ２キャッシュに常駐するキャッシュラインのＬ２タグ及び状態ビットは、キャッシュラインに関連するインデックス、及び、Ｌ２キャッシュに関連するウェイに位置する対応するシャドウタグエントリ２１６に維持される。Ｌ２キャッシュがフィル要求を特定のＬ２インデックス及びウェイに送信すると、フィル要求は、状況に応じて、同じＬ２インデックス及びウェイで容量ビクティム要求をトリガする。この一対の要求（すなわち、容量ビクティム要求と対になるフィル要求）に対するシャドウタグメモリ１４６の状態更新は、フィル要求及びビクティム要求が別々の要求としてＬ２キャッシュからＬ３キャッシュに送信される場合に意図しないオペレーションをもたらす可能性がある。この理由は、このような要求をバッファリングするためにＬ３キャッシュによって実装されたキューが、フィル要求を受け入れ、Ｌ２キャッシュからの容量ビクティム要求を受け入れるための空きエントリを持たない可能性があるからである。フィル要求及びビクティム要求の独立した（両方とも要求キューに常駐していない）処理は、Ｌ２インデックス及びウェイでシャドウタグメモリ１４６を更新する際に問題を引き起こす可能性がある。一例として、容量ビクティム要求が未処理のままでフィル要求が完了した場合、ビクティムキャッシュラインのアドレスへのプローブがシャドウタグメモリ１４６においてミスし、したがって、Ｌ３コントローラは、Ｌ２キャッシュがビクティムキャッシュラインのコピーを有していないと考えることになる。別の例として、容量ビクティム要求が未処理のままでフィル要求が処理され、フィル要求の対象であるキャッシュラインのタグがシャドウタグメモリ１４６に未だ記憶されていない場合、フィルキャッシュラインのアドレスへのプローブがシャドウタグメモリ１４６においてミスし、Ｌ３コントローラは、Ｌ２キャッシュがフィルキャッシュラインのコピーを有していないと考えることになる。
【００２３】
このような問題を回避するために、少なくとも１つの実施形態では、キャッシュ階層１０４を、Ｌ２キャッシュ１３１〜１３４が、Ｌ３コントローラ１４２に提供される単一の要求パケットとしてフィル要求５０２及び対応するビクティム要求５０４の両方を含む結合したフィル／ビクティム要求５００としての、結果となる容量ビクティム要求を有するフィル要求を発行するように構成することができる。Ｌ３コントローラ１４２のキューコントローラ５０６は、結合したフィル／ビクティム要求５００を識別し、これにより、結合したフィル／ビクティム要求５００を２つの別個のエントリとしてエンキューする。フィル要求５０２は、フィル要求キュー５０８にエンキューされ、ビクティム要求は、書込み要求キュー５１０にエンキューされる。エンキューを成功させるために、キューコントローラ５０６は、両方のキュー５０８，５１０が少なくとも１つの空きエントリを有することが確認されるまで、何れの要求もエンキューしない。単一の要求パケットで両方の要求５０２，５０４を受信し、各キューに空きがある場合にのみ両方の要求がエンキューされることを確実にすることによって、ビクティム要求５０４がドロップされている間にフィル要求５０２がキューされるという事例が回避される。このように、フィル要求５０２及びビクティム要求５０４の各々は、シャドウタグメモリ１４６を独立して更新することができる。
【００２４】
例示のために、フィル要求５０２がキュー５０８からアクセスされ、ビクティム要求５０４の前に（フィル処理５１２によって表されるように）実行される場合（例えば、Ｌ３ヒットの場合）、フィル要求５０２を処理する際に、Ｌ３コントローラ１４２は、ビクティムタグを、シャドウタグメモリ１４６のＬ２インデックス及びウェイによってインデックスされたシャドウタグエントリ２１６にて上書きすることができる。これは、この期間におけるビクティムアドレスに対する如何なるプローブも、キュー５１０内の未処理のビクティム要求５０４と連動するので、許容される。逆に、ビクティム要求５０４がキュー５１０からアクセスされ、フィル要求５０２の前に（ビクティム処理５１４によって表されるように）実行される場合、フィルキャッシュラインのタグ情報がシャドウタグメモリ１４６の同じ位置に未だ書き込まれていない場合であっても、シャドウタグメモリ１４６の対応するインデックス及びウェイにてビクティムキャッシュラインのタグ情報をクリアすることが許容されるであろう。
【００２５】
いくつかの実施形態では、効果的なプローブフィルタリング及び正確な結合したフィル／ビクティム要求処理を容易にすることに加えて、シャドウタグメモリ１４６は、Ｌ３キャッシュ１４０が、Ｌ２キャッシュ１３１〜１３４に記憶されたキャッシュラインに対して拡張したコヒーレンシオペレーションを提供するのを可能にする。このために、いくつかの実施形態では、Ｌ３キャッシュ１４０は、Ｌ２キャッシュ１３１〜１３４によって実装されるキャッシュコヒーレンシプロトコルのスーパーセットであるキャッシュコヒーレンシプロトコルを実装する。例えば、Ｌ２キャッシュ１３１〜１３４は、ＭＯＥＳＩ（Modified-Owned-Exclusive-Shared-Invalid）コヒーレンシプロトコルを実装し、Ｌ２キャッシュ１３１〜１３４のシャドウタグメモリ１４６のＬ３コントローラによって維持されるコヒーレンシ状態が、例えば、Ｌ３コントローラが例えば内部及びシステムキャッシュプローブをより効率的に処理する一方で、Ｌ２キャッシュ１３１〜１３４がより複雑でないコヒーレンシプロトコルを使用するのを可能にし、これにより、Ｌ２キャッシュ１３１〜１３４のより複雑でない実装と、同じ計算複合体１０２のＬ２キャッシュ１３１〜１３４間のより複雑でない通信としか必要としない追加のコヒーレンシ状態と、ＭＯＥＳＩプロトコルと、を含む。
【００２６】
図６及び図７は、シャドウタグメモリ１４６用のスーパーセットコヒーレンシプロトコル実装の２つの例を示している。特に、図６及び図７は、Ｌ３コントローラ１４２が、特定のキャッシュラインがコヒーレンシの観点から又はメモリコントローラ１０６の観点から本質的に排他的であるが、１つのコアがキャッシュラインに排他的アクセスを要求する場合により大きいシステムへの特定のプローブを回避するように、キャッシュラインが計算複合体１０２内で内部的に共有されるのを許容することをリコールするのを可能にする追加のコヒーレンシ状態の使用を示している。
【００２７】
図６は、Ｌ３キャッシュ１４０がシャドウタグメモリ１４６にて「Ｆｏｒｗａｒｄ  ｗｉｔｈ  ｅｘｃｌｕｓｉｖｅ」又は「Ｆｅ」と示される追加のコヒーレンシ状態を実装する例示的な実装を示す図である。Ｆｅ状態は、シャドウタグメモリ１４６で使用され、プロセッサコアが、対応するキャッシュラインが同じ計算複合体１０２の別のコアと共有される前に当該キャッシュラインへの排他的アクセスをしたことを記録するか覚えている。これにより、Ｌ３コントローラ１４２が、内部的に、すなわちシステム全体へのプローブを必要とせずに、他のコアによるそのキャッシュラインへの排他的アクセスのための如何なる要求（本明細書では、Ｃｈａｎｇｅ  ｔｏ  Ｅｘｃｌｕｓｉｖｅ又はＣｈｇＴｏＸ要求と呼ばれる要求）を処理することを可能にする。
【００２８】
一例として説明するために、図６は、特定のキャッシュライン（「キャッシュラインＸ」と示されている）を含むキャッシュアクセスオペレーションのシーケンス６００を示す図である。シーケンス６００が進むにつれてＬ２キャッシュ１３１〜１３４の各々でキャッシュラインＸに対して維持されるコヒーレンシ状態は、左側のレーンチャート６０２によって表される。シーケンス６００が進むにつれてシャドウタグメモリ１４６でＬ２キャッシュ１３１〜１３４の各々の対応するシャドウタグエントリ２１６のキャッシュラインＸに対して維持されるコヒーレンシ状態は、右側のレーンチャート６０４によって表される。この例では、Ｌ２キャッシュ１３１〜１３４は、ＭＯＥＳＩコヒーレンシプロトコルを利用し、シャドウタグメモリ１４６は、ＭＯＥＳＩコヒーレンシプロトコルのＭ、Ｏ、Ｅ、Ｓ及びＩコヒーレンシ状態に加えてＦｅコヒーレンシ状態を利用する（すなわち、「ＭＯＥＳＩ＋」）。
【００２９】
時間０において、キャッシュラインＸはＬ２キャッシュ１３１〜１３４の何れにも有効に存在せず、したがって、キャッシュラインＸのコヒーレンシ状態は、Ｌ２キャッシュ１３１〜１３４の対応するタグと、シャドウタグメモリ１４６の（すなわち、シャドウタグエントリ２１６の）対応するシャドウタグとの両方において、Ｉ（invalid）とマークされる。時間１において、プロセッサコア１１１に関連するＬ２キャッシュ１３１は、キャッシュラインＸに対するフィル要求６０６を発行し、フィル要求の処理が完了した後に、キャッシュラインＸのコヒーレンシ状態を「Ｉ」（invalid）から「Ｅ」（Exclusive）に変更して、新たなキャッシュラインがＬ２キャッシュ１３１にインストールされたことを記録する。さらに、Ｌ３コントローラ１４２は、要求６０６に送られたこの応答を記録し、キャッシュラインＸ及びＬ２キャッシュ１３１に対するシャドウタグメモリ１４６のシャドウタグエントリ２１６を更新して、Ｅコヒーレンシ状態も反映する。
【００３０】
時間２において、プロセッサコア１１２は、キャッシュラインＸに対する読み出し要求を発行し、次に、キャッシュラインＸに対するフィル要求６０８を発行するように、プロセッサコア１１２に関連するＬ２キャッシュ１３２をトリガする。これに応じて、Ｌ３コントローラ１４２は、シャドウタグメモリ１４６を検索することによってフィル要求を処理し、Ｌ２キャッシュ１３１がこのキャッシュラインのコピーを有することを示すシャドウタグメモリ１４６の「ヒット」を識別する。これに応じて、Ｌ３コントローラ１４２は、Ｌ２キャッシュ１３１にプローブ要求を送信し、キャッシュラインデータでＬ２キャッシュ１３２に応答することによって、フィル要求６０８を満たす。この結果、Ｌ２キャッシュ１３１はキャッシュラインＸのコピーを共有し、Ｌ２キャッシュレベルのコヒーレンシコントローラは、Ｌ２キャッシュ１３１，１３２のキャッシュラインＸのコヒーレンシ状態を両方とも「Ｓ」（shared）コヒーレンシ状態に変更する。Ｌ３コントローラ１４２は、２つのシャドウタグメモリロケーションを更新しなければならず、１つのシャドウタグメモリロケーションはＬ２キャッシュ１３１に存在するキャッシュラインＸに対応するもので、もう１つのシャドウタグメモリロケーションはＬ２キャッシュ１３２に丁度送信されたキャッシュラインＸに対応するものである。しかしながら、Ｌ３コントローラ１４２は、両方の位置のシャドウタグメモリ１４６の対応するコヒーレンシ状態を「Ｓ」状態に変更するのではなく、この時点でキャッシュラインＸのコア１１１のコヒーレンシ状態がこのオペレーション時に「Ｅ」であったと認識し、これにより、Ｌ２キャッシュ１３１の「Ｅ」コヒーレンシ状態を「Ｆｅ」コヒーレンシ状態に変更する。プロセッサコア１１２は、この変更時に「Ｅ」コヒーレンシ状態でなかったので、Ｌ３コントローラ１４２は、キャッシュラインＸを共有していることを示すために、シャドウタグメモリ１４６のＬ２キャッシュ１３２のキャッシュラインＸのコヒーレンシ状態を「Ｓ」に変更する。
【００３１】
その後、時間３において、プロセッサコア１１２は、キャッシュラインＸへの排他的アクセスを取得する要求を発行し、次に、ＣｈｇＴｏＸ要求６１０を発行するようにＬ２キャッシュ１３２をトリガする。この時点でレーンチャート６０２のコヒーレンシ状態で示すように、Ｌ２キャッシュ１３１，１３２は、キャッシュラインＸの「Ｓ」状態を有し、キャッシュ１３３，１３４は、キャッシュラインＸの「Ｉ」状態を有する。このように、Ｌ２コヒーレンシ状態からは、Ｌ２キャッシュの何れも、ＣｈｇＴｏＸ要求６１０が発行された時点では、キャッシュラインＸへの排他的アクセスをするように見えない。このように、従来のシステムでは、ＣｈｇＴｏＸ要求６１０がメモリコントローラ１０６に伝播されなければならず、処理システム１００内の他の計算複合体にプローブをブロードキャストして、キャッシュラインＸの有効なコピーが他に存在するかどうかを判別し、存在する場合には、プロセッサ１がキャッシュラインＸへの排他的アクセスを取得することができるようにかかるコピーを無効化する。したがって、このプロセスは、システム１００全体に亘ってかなりのプローブトラフィックをもたらす。しかしながら、Ｌ３キャッシュ１４０のシャドウタグメモリ１４６によって提供される拡張されたＬ２コヒーレンシ状態トラッキングは、このようなプローブトラフィックを低減又は除去することができる。
【００３２】
例示すると、Ｌ３コントローラ１４２は、Ｌ２キャッシュ１３１のキャッシュラインＸのコヒーレンシ状態をシャドウタグメモリ１４６においてＦｅとしてマークしたので、プロセッサコア１１１／Ｌ２キャッシュ１３１が、計算複合体１０２内で共有される（すなわち、プロセッサコア１１２／Ｌ２キャッシュ１３２と共有される）前にキャッシュラインＸに対して排他的アクセスをしたと認識することができる。この情報から、キャッシュラインＸが計算複合体１０２の外部で共有されないので、キャッシュラインＸの有効なコピーは、計算コンプレックス１０２の外部に存在しないことになる。このように、シャドウタグメモリ１４６のキャッシュラインＸのＦｅコヒーレンシ状態を検出することに応じて、Ｌ３コントローラ１４２は、Ｌ２キャッシュ１３２がメモリコントローラ１０６にＣｈｇＴｏＸ要求６１０を転送する必要なくキャッシュラインＸに排他的アクセスをすることが可能であることをＬ２キャッシュ１３２に通知し、これにより、計算複合体１０２の外部でキャッシュラインＸのコピーを見つけて無効にするために１つ以上の外部プローブをトリガするのを回避することができる。この通知に応じて、Ｌ２キャッシュ１３１，１３２は、各々のタグを更新して、キャッシュラインＸのコヒーレンシ状態の変更をそれぞれ状態「Ｉ」及び「Ｅ」に反映する。同様に、Ｌ３コントローラ１４２は、シャドウタグメモリ１４６のＬ２キャッシュ１３１，１３２のコヒーレンシ状態に対して同じ変更を行う。このように、上述したように、シャドウタグメモリ１４６のＦｅコヒーレンシ状態を用いて、計算複合体１０２内で共有される前にキャッシュラインへの排他的アクセスを行ったコア／Ｌ２キャッシュを識別することによって、同じ計算複合体１０２の別のコアがその後排他的アクセスを要求する場合に、外部プロービングを低減又は除去することができる。
【００３３】
図７は、Ｌ３キャッシュ１４０が、シャドウタグメモリ１４６で「Ｏｗｎｅｄ−ｄｉｒｔｙ」又は「Ｏｄ」と示される追加のコヒーレンシ状態を利用する例示的な実装を示す図である。いくつかの実施形態では、Ｆｅ状態と同様に、Ｏｄ状態は、シャドウタグメモリ１４６で使用され、プロセッサコアが同じ計算複合体１０２の別のコアと共有されたキャッシュラインの変更又は「ダーティ」コピーに排他的アクセスしたことを記録又は記憶して、Ｌ３コントローラ１４２が、内部的に、すなわちシステム全体にプローブを必要とせずに、別のコアによるそのキャッシュラインへの排他的アクセスの要求（本明細書では、Ｃｈａｎｇｅ  ｔｏ  Ｅｘｃｌｕｓｉｖｅ又はＣｈｇＴｏＸ要求と呼ばれる要求）を処理するのを可能にする。
【００３４】
一例として示すために、図７は、特定のキャッシュライン（「キャッシュラインＸ」と示されている）を含むキャッシュアクセスオペレーションのシーケンス７００を示す図である。シーケンス７００が進むにつれてＬ２キャッシュ１３１〜１３４の各々でキャッシュラインＸに対して維持されるコヒーレンシ状態は、左側のレーンチャート７０２によって表される。シーケンス７００が進むにつれてシャドウタグメモリ１４６でＬ２キャッシュ１３１〜１３４の各々の対応するシャドウタグエントリ２１６のキャッシュラインＸに対して維持されるコヒーレンシ状態は、右側のレーンチャート７０４によって表される。この例では、Ｌ２キャッシュ１３１〜１３４は、ＭＯＥＳＤＩコヒーレンシプロトコルを利用し、シャドウタグメモリ１４６は、ＭＯＥＳＩコヒーレンシプロトコルのＭ、Ｏ、Ｅ、Ｓ及びＩコヒーレンシ状態に加えてＯｄコヒーレンシ状態を利用する（すなわち、「ＭＯＥＳＩ＋」）。
【００３５】
時間０において、キャッシュラインＸはＬ２キャッシュ１３１〜１３４の何れにも有効に存在せず、したがって、キャッシュラインＸのコヒーレンシ状態は、Ｌ２キャッシュ１３１〜１３４の対応するタグと、シャドウタグメモリ１４６の（すなわち、シャドウタグエントリ２１６の）対応するシャドウタグとの両方において、Ｉ（invalid）とマークされる。時間１において、プロセッサコア１１１に関連するＬ２キャッシュ１３１は、キャッシュラインＸに対するフィル要求７０６を発行し、フィル要求の処理が完了した後に、キャッシュラインＸのコヒーレンシ状態を「Ｅ」（Exclusive）に変更する。さらに、Ｌ３コントローラ１４２は、要求６０６に送られたこの応答に気づき、キャッシュラインＸ及びＬ２キャッシュ１３１に対するシャドウタグメモリ１４６のシャドウタグメモリロケーション２１６を更新して、Ｅコヒーレンシ状態も反映する。
【００３６】
時間２において、プロセッサコア１１１は、Ｌ２キャッシュ１３１に常駐するキャッシュラインＸのコピーを変更する書き込み要求７０８を発行する。これに応じて、処理システム１００は、Ｌ２キャッシュ１３１のキャッシュラインＸのコヒーレンシ状態を「Ｍ」（Modified）コヒーレンシ状態に変更する。同様に、Ｌ２キャッシュ１３１のキャッシュラインＸに対する変更を検出することに応じて、Ｌ３コントローラ１４２は、シャドウタグメモリ１４６を更新して、Ｌ２キャッシュ１３１のキャッシュラインＸの「Ｍ」コヒーレンシ状態を反映する。
【００３７】
時間３において、プロセッサコア１１２は、キャッシュラインＸに対する読み出し要求を発行し、次に、キャッシュラインＸに対するフィル要求７１０を発行するように、プロセッサコア１１２に関連するＬ２キャッシュ１３２をトリガする。これに応じて、Ｌ３コントローラ１４２は、シャドウタグメモリ１４６を検索することによってフィル要求を処理し、Ｌ２キャッシュ１３１がこのキャッシュラインのコピーを有することを示すシャドウタグメモリ１４６の「ヒット」を識別する。これに応じて、Ｌ３コントローラ１４２は、Ｌ２キャッシュ１３１にプローブ要求を送信し、キャッシュラインデータでＬ２キャッシュ１３２に応答することによって、フィル要求６０８を満たす。この結果、Ｌ２キャッシュ１３１は、キャッシュラインＸのダーティコピーをＬ２キャッシュ１３２と共有し、Ｌ２キャッシュレベルのコヒーレントコントローラは、キャッシュラインＸのコヒーレンシ状態を、Ｌ２キャッシュ１３１の「Ｓ」（Shared）コヒーレンシ状態、及び、Ｌ２キャッシュ１３２の「Ｏ」（Owned）コヒーレンシ状態に変更する。しかしながら、Ｌ３コントローラ１４２は、同じ方法でシャドウタグメモリ１４６の対応するコヒーレンシ状態を同様に変更するのではなく、このオペレーション時にキャッシュラインＸのコア１１１用のコヒーレンシ状態が「Ｍ」であったと認識し、これにより、キャッシュラインＸをＬ２キャッシュ１３２の「Ｏｄ」コヒーレンシ状態を有するものとしてマークする。このように、シャドウタグメモリ１４６は、Ｌ２キャッシュ１３２が同じ計算複合体１０２の別のコアからキャッシュラインＸのダーティコピーへのアクセスを取得したことを通知する。
【００３８】
その後、時間４において、プロセッサコア１１１は、キャッシュラインＸへの排他的アクセスを取得するための要求を発行し、ＣｈｇＴｏＸ要求７１２を発行するようにＬ２キャッシュ１３１をトリガする。この時点でのＬ２コヒーレンシ状態からは、キャッシュラインＸの排他的コピーがＬ２キャッシュ１３１〜１３４の何れかに存在するかどうかが明らかでない。このように、従来のシステムでは、ＣｈｇＴｏＸ要求７１２は、メモリコントローラ１０６に伝播されなければならず、処理システム１００内の他の計算複合体にプローブをブロードキャストして、キャッシュラインＸのコピーが他に存在するかどうかを判別し、存在する場合には、計算複合体１０２のコア１１１がキャッシュラインＸへの排他的アクセスを取得することができるように、コピーを無効化する。このプロセスは、システム１００全体に亘ってかなりのプローブトラフィックをもたらすことになる。しかしながら、Ｌ３コントローラ１４２が、Ｌ２キャッシュ１３２のキャッシュラインＸのコヒーレンシ状態をシャドウタグメモリ１４６においてＯｄとしてマークしているので、Ｌ３コントローラ１４２は、キャッシュラインＸを計算複合体１０２内の別のコア／Ｌ２キャッシュと共有する前に、プロセッサコア１１２／Ｌ２キャッシュ１３２が当該キャッシュラインＸに排他的アクセスをしたと認識することができる。この情報から、キャッシュラインＸが計算複合体１０２の外部では共有されないので、キャッシュラインＸの有効なコピーは、計算複合体１０２の外部に存在しないことになる。この情報によって、Ｌ３コントローラ１４２は、Ｌ２キャッシュ１３１がメモリコントローラ１０６にＣｈｇＴｏＸ要求７１０を転送する必要なくキャッシュラインＸに排他的アクセスをすることが可能であることをＬ２キャッシュ１３１に通知し、これにより、計算複合体１０２の外部でキャッシュラインＸのコピーを見つけて無効にするために１つ以上の外部プローブをトリガするのを回避することができる。この通知に応じて、Ｌ２キャッシュ１３１，１３２は、各々のタグを更新して、キャッシュラインＸのコヒーレンシ状態の変更をそれぞれ状態「Ｄ」及び「Ｉ」に反映する。同様に、Ｌ３コントローラ１４２は、シャドウタグメモリ１４６のＬ２キャッシュ１３１，１３２のコヒーレンシ状態に対して同じ変更を行う。このように、上述したように、シャドウタグメモリ１４６のＯｄコヒーレンシ状態を用いて、計算複合体１０２内で共有される前にキャッシュラインへの排他的アクセスを行ったコア／Ｌ２キャッシュを識別することによって、同じ計算複合体１０２の別のコアがその後排他的アクセスを要求する場合に、外部のプロービングを除去することができる。
【００３９】
図８は、少なくとも１つの実施形態による、シャドウタグメモリ１４６を用いて、メモリコントローラ１０６に報告されたキャッシュ階層１０４からのキャッシュラインエビクションを効率的に処理する方法８００を示すフローチャートである。ブロック８０２において、新たなキャッシュラインが、Ｌ３キャッシュ１４０に記憶されるために受信される。Ｌ３キャッシュ１４０に新たなキャッシュラインをインストールすると、Ｌ３キャッシュ１４０から同じ位置にある別の既存のキャッシュラインがエビクトされることがある。このエビクトは、以下の説明のために「Ｌ３ビクティム」と呼ばれる。したがって、ブロック８０４において、Ｌ３コントローラ１４２は、新たなキャッシュラインがＬ３ビクティムになるかどうかを判別する。Ｌ３ビクティムにならない場合には、Ｌ３ビクティム処理が必要とされず、方法８００は終了する。しかしながら、Ｌ３ビクティムになる場合、Ｌ３ビクティム処理が開始される。いくつかの実施形態では、Ｌ２キャッシュ１３１〜１３４は、包括的キャッシュとして実装され、したがって、対応するＬ１キャッシュ１２１〜１２４に存在する全てのキャッシュラインを含む。したがって、ブロック８０８において、Ｌ３コントローラ１４２は、シャドウタグメモリ１４６を検索して、同じキャッシュラインがシャドウタグメモリ１４６内に存在するかどうかを判別する。Ｌ３ビクティムがシャドウタグメモリ１４６内に存在する場合、Ｌ３コントローラ１４２は、検索プロセスから「ヒット」を取得し、これにより、キャッシュラインがＬ２キャッシュ１３１〜１３４のうち何れか１つに存在すると判別する。したがって、ヒットに応じて、ブロック８１０において、Ｌ３コントローラ１４２は、Ｌ３ビクティムをメモリコントローラ１０６に報告するのを控えることを含む、Ｌ３ビクティムのさらなる処理を控える。しかしながら、シャドウタグメモリ検索から「ミス」が生じた場合、Ｌ３コントローラ１４２は、キャッシュラインがＬ２キャッシュ１３１〜１３４の何れにも存在しないと判別する。したがって、ブロック８１２でのミスに応じて、Ｌ３コントローラは、Ｌ３ビクティムを、キャッシュ階層１０４からメモリコントローラ１０６へのエビクションとして報告することを含む、Ｌ３ビクティムの処理を完了する。このように、シャドウタグメモリ１４６の実装により、Ｌ３キャッシュが、Ｌ３ビクティムキャッシュラインがＬ２キャッシュ１３１〜１３４に存在する場合に、エビクションビクティムとしてメモリコントローラ１０６に報告されるＬ３ビクティムに対する要求を排除することができ、これにより、設計における電力及びメモリ帯域幅を節約する。
【００４０】
いくつかの実施形態では、上述した装置及び技術は、図１〜８を参照して上述した処理システム等のような１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を含むシステムにおいて実施される。これらのＩＣデバイスの設計及び製造には、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールを使用することができる。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表わされる。１つ以上のソフトウェアプログラムは、回路を製造するように製造システムを設計又は適合させるためのプロセスの少なくとも一部を実行するように、１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するコンピュータシステムによって実行可能なコードを備える。このコードには、命令、データ、又は、命令及びデータの組み合わせが含まれる。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じ又は異なるコンピュータ可読記憶媒体に記憶され、当該コンピュータ可読記憶媒体からアクセスされてもよい。
【００４１】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な、任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含むことができる。このような記憶媒体は、限定しないが、光学媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、マイクロ電気機械システム（ＭＥＭＳ）ベースの記憶媒体を含むことができる。コンピュータ可読記憶媒体は、コンピューティングシステムに埋め込まれてもよく（例えば、システムＲＡＭ又はＲＯＭ）、コンピューティングシステムに固定的に取り付けられてもよく（例えば、磁気ハードドライブ）、コンピューティングシステムに着脱可能に取り付けられてもよく（例えば、光ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線若しくは無線ネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能ストレージ（ＮＡＳ））。
【００４２】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体上に記憶されるか、他の方法で有形に具現化された、１つ以上の実行可能な命令のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されたときに、１つ以上のプロセッサを操作して、上述した技術の１つ以上の態様を実行する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、ソリッドステート記憶デバイス（例えば、フラッシュメモリ等）、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能な命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈され若しくは他の方法で実行可能な他の命令フォーマットであってもよい。
【００４３】
概説において上述したアクティビティ又は要素の全てが必要であるとは限らず、特定のアクティビティ又はデバイスの一部が必要でなくともよく、説明したアクティビティに加えて１つ以上の更なるアクティビティが実行されてもよいし、１つ以上の更なる要素が含まれてもよいことに留意されたい。さらに、アクティビティが列挙される順序は、必ずしもそれらが実行される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な修正及び変更を行うことができることを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、そのような変更の全ては、本発明の範囲内に含まれることが意図される。
【００４４】
利益、他の利点及び問題に対する解決手段が特定の実施形態に関して上述されている。しかしながら、利益、利点、問題に対する解決手段、及び、何等かの利益、利点、解決手段が発生するか、顕著になる可能性のある機能は、何れか又は全ての特許請求の範囲の重要な特徴、必須の特徴、本質的な特徴として解釈されるべきでない。更に、開示された発明は、本明細書における教示の利益を有する当業者には明らかであるが、異なるが同等の方法で変更され、実施され得るので、上記の開示された特定の実施形態は、例示に過ぎない。以下の特許請求の範囲に記載されているもの以外に、本明細書に示された構成又は設計の詳細に制限はない。したがって、上記の開示された特定の実施形態は、変更又は修正されてもよく、全てのそのような変形は、開示された発明の範囲内にあると考えられることが明らかである。したがって、本願で求められる保護は、以下の特許請求の範囲に記載されている。
【図１】
2019519028.tif 000004
【図２】
2019519028.tif 000005
【図３】
2019519028.tif 000006
【図４】
2019519028.tif 000007
【図５】
2019519028.tif 000008
【図６】
2019519028.tif 000009
【図７】
2019519028.tif 000010
【図８】
2019519028.tif 000011
【手続補正書】
【提出日】平成31年1月30日(2019.1.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサコア（１１１，１１２，１１３，１１４）と、
複数の専用キャッシュ（１３１，１３２，１３３，１３４）であって、各専用キャッシュは、前記複数のプロセッサコアの対応するプロセッサコアに関連付けられており、対応するキャッシュラインのセットを含む、複数の専用キャッシュと、
前記複数のプロセッサコアによって共有される共有キャッシュ（１４０）と、を備え、
前記共有キャッシュは、
キャッシュラインの第２セットと、
複数のエントリ（２１６）を含むシャドウタグメモリ（１４６）であって、各エントリは、前記複数の専用キャッシュのうち１つの専用キャッシュのキャッシュラインのセットのうち対応するキャッシュラインの状態（２１５）及びアドレス情報（２１４）を記憶する、シャドウタグメモリと、を備える、
処理システム（１００）。
【請求項２】
前記専用キャッシュは、コヒーレンシ状態の第１セットに従って、前記対応するキャッシュラインのセットのキャッシュラインのコヒーレンシ状態を記憶するように構成されており、
前記シャドウタグメモリは、コヒーレンシ状態の前記第１セットのスーパーセットを含むコヒーレンシ状態の第２セットに従って、前記複数の専用キャッシュのキャッシュラインのセットのキャッシュラインのコヒーレンシ状態を記憶する、
請求項１の処理システム。
【請求項３】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから取得されたことを通知するコヒーレンシ状態、又は、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから変更された形態で取得されたことを通知するコヒーレンシ状態を含む、
請求項２の処理システム。
【請求項４】
前記共有キャッシュは、前記シャドウタグメモリに基づいてキャッシュプローブをフィルタリングするコントローラ（１４２）を備える、
請求項１の処理システム。
【請求項５】
前記コントローラは、
前記シャドウタグメモリを検索して、前記シャドウタグメモリがキャッシュプローブに関連するキャッシュラインに対する有効なエントリを有するかどうかを判別することと、
前記シャドウタグメモリが前記キャッシュラインに対して有効なエントリを有していないと判別したことに応じて、前記キャッシュプローブに応じてキャッシュミスを通知することと、
によって、キャッシュプローブをフィルタリングする、
請求項４の処理システム。
【請求項６】
前記コントローラは、
前記シャドウタグメモリが前記キャッシュラインに対する有効なエントリを有すると判別したことに応じて、前記有効なエントリに関連する前記専用キャッシュを識別し、前記キャッシュプローブを前記識別された専用キャッシュに転送すること
によって、キャッシュプローブをフィルタリングする、
請求項４の処理システム。
【請求項７】
複数のプロセッサコア（１１１，１１２，１１３，１１４）に関連する複数の専用キャッシュ（１３１，１３２，１３３，１３４）と、前記複数のプロセッサコアによって共有される共有キャッシュ（１４０）と、を備える処理システム（１００）における方法であって、
前記複数の専用キャッシュにて、前記複数の専用キャッシュに記憶されるキャッシュラインのコヒーレンシ情報を維持することと、
前記共有キャッシュのシャドウタグメモリ（１４６）にて、前記複数の専用キャッシュに記憶されるキャッシュラインのコヒーレンシ情報を維持することと、を含む、
方法。
【請求項８】
前記複数の専用キャッシュにて前記コヒーレンシ情報を維持することは、コヒーレンシ状態の第１セットに従って、前記複数の専用キャッシュにて前記コヒーレンシ情報を維持することを含み、
前記共有キャッシュの前記シャドウタグメモリにて前記コヒーレンシ情報を維持することは、コヒーレンシ状態の第２セットに従って前記コヒーレンシ情報を維持することであって、前記コヒーレンシ状態の第２セットが前記コヒーレンシ状態の第１セットのスーパーセットを含む、ことを含む、
請求項７の方法。
【請求項９】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから取得されたことを通知するコヒーレンシ状態、又は、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから変更された形態で取得されたことを通知するコヒーレンシ状態を含む、
請求項８の方法。
【請求項１０】
前記共有キャッシュにて、前記シャドウタグメモリに基づいてキャッシュプローブをフィルタリングすることを含む、
請求項７の方法。
【請求項１１】
前記キャッシュプローブをフィルタリングすることは、
前記シャドウタグメモリを検索して、前記シャドウタグメモリがキャッシュプローブに関連するキャッシュラインに対する有効なエントリ（２１６）を有するかどうかを判別することと、
前記シャドウタグメモリが前記キャッシュラインに対する有効なエントリを有していないと判別したことに応じて、前記キャッシュプローブに応じてキャッシュミスを通知することと、を含む、
請求項１０の方法。
【請求項１２】
前記シャドウタグメモリを検索して、前記シャドウタグメモリが前記共有キャッシュからエビクトされているキャッシュラインに対する有効なエントリ（２１６）を有するかどうかを判別することと、
前記キャッシュラインに対する有効なエントリが存在しないと判別したことに応じて、前記キャッシュラインを、メモリコントローラ（１０６）にエビクトされているものとして報告することと、
前記キャッシュラインに対する有効なエントリが存在すると判別したことに応じて、前記キャッシュラインを、前記メモリコントローラにエビクトされているものとして報告するのを控えることと、を含む、
請求項７の方法。
【請求項１３】
複数の専用キャッシュ（１３１，１３２，１３３，１３４）であって、各専用キャッシュは、プロセッサコア（１１１，１１２，１１３，１１４）のセットのうち対応するプロセッサコア専用である、複数の専用キャッシュと、
前記プロセッサコアのセットによって共有される共有キャッシュ（１４０）であって、前記共有キャッシュは、前記複数の専用キャッシュに対して排他的なデータ及び前記複数の専用キャッシュに対して包括的なタグとして維持される、共有キャッシュと、を備える、
処理システム（１００）。
【請求項１４】
前記共有キャッシュは、
前記専用キャッシュに記憶されたキャッシュライン用の前記複数の専用キャッシュによって記憶されたタグ情報を表す状態情報を記憶するシャドウタグメモリ（１４６）を備える、
請求項１３の処理システム。
【請求項１５】
前記専用キャッシュの各々は、コヒーレンシ状態の第１セットに従って前記専用キャッシュのキャッシュラインのコヒーレンシ状態を記憶するように構成されており、
前記シャドウタグメモリによって記憶される前記状態情報は、コヒーレンシ状態の第２セットに従って前記複数の専用キャッシュの前記キャッシュラインの少なくともサブセットのコヒーレンシ状態を含み、前記コヒーレンシ状態の第２セットは、前記コヒーレンシ状態の第１セットのスーパーセットを含む、
請求項１４の処理システム。
【手続補正書】
【提出日】令和1年5月28日(2019.5.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサコアと、
複数の専用キャッシュであって、各専用キャッシュは、前記複数のプロセッサコアの対応するプロセッサコアに関連付けられており、対応するキャッシュラインのセットを含み、コヒーレンシ状態の第１セットに従って、キャッシュラインの前記対応するキャッシュラインのセットのキャッシュラインのコヒーレンシ状態を記憶するように構成されている、複数の専用キャッシュと、
前記複数のプロセッサコアによって共有される共有キャッシュと、を備え、
前記共有キャッシュは、
キャッシュラインの第２セットと、
複数のエントリを含むシャドウタグメモリであって、各エントリは、１つの専用キャッシュのキャッシュラインのセットのうち対応するキャッシュラインの状態情報及びアドレス情報を記憶し、シャドウタグメモリは、前記コヒーレンシ状態の第１セットのスーパーセットを含むコヒーレンシ状態の第２セットに従って、前記複数の専用キャッシュのキャッシュラインのセットのキャッシュラインのコヒーレンシ状態を記憶するように構成されている、シャドウタグメモリと、を備え、
前記状態情報は、前記コヒーレンシ状態の第２セットに従って、前記複数の専用キャッシュのキャッシュラインの少なくともサブセットのコヒーレンシ状態を含む、
処理システム（１００）。
【請求項２】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから取得されたことを通知するコヒーレンシ状態を含む、
請求項１の処理システム。
【請求項３】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから変更された形態で取得されたことを通知するコヒーレンシ状態を含む、
請求項１の処理システム。
【請求項４】
前記共有キャッシュは、前記シャドウタグメモリに基づいてキャッシュプローブをフィルタリングするコントローラを備える、
請求項１の処理システム。
【請求項５】
前記コントローラは、
前記シャドウタグメモリを検索して、前記シャドウタグメモリがキャッシュプローブに関連するキャッシュラインに対する有効なエントリを有するかどうかを判別することと、
前記シャドウタグメモリが前記キャッシュラインに対して有効なエントリを有していないと判別したことに応じて、前記キャッシュプローブに応じてキャッシュミスを通知することと、
によって、キャッシュプローブをフィルタリングする、
請求項４の処理システム。
【請求項６】
前記コントローラは、
前記シャドウタグメモリが前記キャッシュラインに対する有効なエントリを有すると判別したことに応じて、前記有効なエントリに関連する前記専用キャッシュを識別し、前記キャッシュプローブを前記識別された専用キャッシュに転送すること
によって、キャッシュプローブをフィルタリングする、
請求項４の処理システム。
【請求項７】
前記複数の専用キャッシュは、複数のレベル２（Ｌ２）キャッシュを備え、
前記共有キャッシュは、レベル３（Ｌ３）キャッシュを備える、
請求項１の処理システム。
【請求項８】
複数のプロセッサコアと、
複数の専用キャッシュであって、各専用キャッシュは、前記複数のプロセッサコアのうち対応するプロセッサコアに関連付けられており、対応するキャッシュラインのセットを含む、複数の専用キャッシュと、
前記複数のプロセッサコアによって共有される共有キャッシュと、を備え、
前記共有キャッシュは、
キャッシュラインの第２セットと、
複数のエントリを含むシャドウタグメモリであって、各エントリは、１つの専用キャッシュのキャッシュラインのセットのうち対応するキャッシュラインの状態情報及びアドレス情報を記憶する、シャドウタグメモリと、を備え、
前記専用キャッシュは、前記専用キャッシュに対するフィル要求が前記専用キャッシュからビクティムキャッシュラインをエビクトすることになると判別したことに応じて、実行される前記フィル要求と、前記共有キャッシュにエビクトされる前記ビクティムキャッシュラインを記憶するビクティム要求と、の両方を識別する単一の要求パケットを前記共有キャッシュに送信する、
処理システム。
【請求項９】
複数のプロセッサコアに関連する複数の専用キャッシュと、前記複数のプロセッサコアによって共有される共有キャッシュと、を備える処理システムにおける方法であって、
前記複数の専用キャッシュにて、コヒーレンシ状態の第１セットに従って、前記複数の専用キャッシュに記憶されるキャッシュラインのコヒーレンシ情報を維持することと、
前記共有キャッシュのシャドウタグメモリにて、前記コヒーレンシ状態の第１セットのスーパーセットを含むコヒーレンシ状態の第２セットに従って、前記複数の専用キャッシュに記憶されるキャッシュラインのコヒーレンシ情報を維持することと、を含む、
方法。
【請求項１０】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから取得されたことを通知するコヒーレンシ状態を含む、
請求項９の方法。
【請求項１１】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから変更された形態で取得されたことを通知するコヒーレンシ状態を含む、
請求項９の方法。
【請求項１２】
前記共有キャッシュにて、前記シャドウタグメモリに基づいてキャッシュプローブをフィルタリングすることを含む、
請求項９の方法。
【請求項１３】
前記キャッシュプローブをフィルタリングすることは、
前記シャドウタグメモリを検索して、前記シャドウタグメモリがキャッシュプローブに関連するキャッシュラインに対する有効なエントリを有するかどうかを判別することと、
前記シャドウタグメモリが前記キャッシュラインに対する有効なエントリを有していないと判別したことに応じて、前記キャッシュプローブに応じてキャッシュミスを通知することと、を含む、
請求項１２の方法。
【請求項１４】
前記キャッシュプローブをフィルタリングすることは、
前記シャドウタグメモリが前記キャッシュラインに対する有効なエントリを有すると判別したことに応じて、前記有効なエントリに関連する前記専用キャッシュを識別し、前記キャッシュプローブを前記識別された専用キャッシュに転送することを含む、
請求項１３の方法。
【請求項１５】
前記専用キャッシュに対するフィル要求が前記専用キャッシュからビクティムキャッシュラインをエビクトすることになると判別したことに応じて、実行される前記フィル要求と、前記共有キャッシュにエビクトされる前記ビクティムキャッシュラインを記憶するビクティム要求と、の両方を識別する単一の要求パケットを、前記専用キャッシュから前記共有キャッシュに送信することと、
前記単一の要求パケットを受信したことに応じて、前記共有キャッシュにて、前記フィル要求をフィル要求キューにバッファリングし、前記ビクティム要求をビクティム要求キューにバッファリングすることと、を含む、
請求項９の方法。
【請求項１６】
前記シャドウタグメモリを検索して、前記シャドウタグメモリが前記共有キャッシュからエビクトされているキャッシュラインに対する有効なエントリを有するかどうかを判別することと、
前記キャッシュラインに対する有効なエントリが存在しないと判別したことに応じて、前記キャッシュラインがメモリコントローラにエビクトされていると報告することと、
前記キャッシュラインに対する有効なエントリが存在すると判別したことに応じて、前記キャッシュラインが前記メモリコントローラにエビクトされていると報告するのを控えることと、を含む、
請求項９の方法。
【請求項１７】
複数の専用キャッシュであって、各専用キャッシュは、プロセッサコアのセットのうち対応するプロセッサコア専用であり、コヒーレンシ状態の第１セットに従って、対応する専用キャッシュのキャッシュラインのコヒーレンシ状態を記憶するように構成されている、複数の専用キャッシュと、
前記プロセッサコアのセットによって共有される共有キャッシュであって、前記共有キャッシュは、前記複数の専用キャッシュに対して排他的なデータ及び前記複数の専用キャッシュに対して包括的なタグとして維持される、共有キャッシュと、を備え、
前記共有キャッシュは、
前記コヒーレンシ状態の第１セットのスーパーセットを含むコヒーレンシ状態の第２セットに従って、前記複数の専用キャッシュによって記憶されたタグ情報を表す状態情報を記憶するシャドウタグメモリであって、前記状態情報は、前記複数の専用キャッシュのキャッシュラインの少なくともサブセットのコヒーレンシ状態を含む、シャドウタグメモリを備える、
処理システム。
【請求項１８】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから取得されたことを通知するコヒーレンシ状態を含む、
請求項１７の処理システム。
【請求項１９】
前記コヒーレンシ状態の第２セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち１つの専用キャッシュから変更された形態で取得されたことを通知するコヒーレンシ状態を含む、
請求項１７の処理システム。
【請求項２０】
前記共有キャッシュは、前記シャドウタグメモリに基づいてキャッシュプローブをフィルタリングするコントローラを備える、
請求項１７の処理システム。
【請求項２１】
前記コントローラは、
前記シャドウタグメモリを検索して、前記シャドウタグメモリがキャッシュプローブに関連するキャッシュラインに対する有効なエントリを有するかどうかを判別することと、
前記シャドウタグメモリが前記キャッシュラインに対して有効なエントリを有していないと判別したことに応じて、前記キャッシュプローブに応じてキャッシュミスを通知することと、
によって、キャッシュプローブをフィルタリングする、
請求項２０の処理システム。
【請求項２２】
前記コントローラは、
前記シャドウタグメモリが前記キャッシュラインに対する有効なエントリを有すると判別したことに応じて、前記有効なエントリに関連する前記専用キャッシュを識別し、前記キャッシュプローブを前記識別された専用キャッシュに転送すること
によって、キャッシュプローブをフィルタリングする、
請求項２１の処理システム。
【国際調査報告】
2019519028.tif 000012
2019519028.tif 000013