(57)【要約】リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステムである。一実施形態では、複数のプレゼンスベクトルが、他のノードへマップされた特定のデータのブロックが、遠隔にキャッシュされているかどうかを示す。プレゼンスベクトルは専用のストレージに記録せずに、リモートキャッシュプレゼンスベクトルは、プロセッサコア（５０）と関連する、Ｌ２キャッシュなどの、キャッシュメモリサブシステム（５２）の指定の位置に記録される。例えば、キャッシュメモリサブシステムのキャッシュの指定ウエイが、リモートキャッシュプレゼンスベクトルを記録するために割当てられ、一方でキャッシュの残りのウエイが、通常のプロセッサデータを記録するために使用される。新たなデータブロックはキャッシュメモリサブシステムからの取り外しに応答して遠隔にキャッシュされる、更に他の実施形態では、キャッシュメモリサブシステムの追加エントリが、プローブコマンドと応答トラフィックをフィルタリングするためにディレクトリエントリを記録するために使用される。
2006501548.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムであって、
プロセッサコア（５０）、キャッシュメモリサブシステム（５２）、および第一システムメモリ（１４Ａ）を有す第一ノード（１２Ａ）、
第二システムメモリ（１４Ｂ）を有す第二ノード（１２Ｂ）を有し、
前記キャッシュメモリサブシステムの少なくともいくつかが、前記キャッシュメモリサブシステムの動作モードに応じて、プロセッサデータあるいはリモートキャッシュプレゼンス情報のどちらか一方を選択的に記録するよう構成される、コンピュータシステム。
【請求項２】
前記第一システムメモリ（１４Ａ）が、前記第二システムメモリ（１４Ｂ）にマップされるデータを遠隔にキャッシュするよう構成され、かつ、前記リモートキャッシュプレゼンス情報が、前記第一システムメモリにおいて前記データの存在を示す、請求項１記載のコンピュータシステム。
【請求項３】
前記第一ノードが、前記第一システムメモリ内の前記データのリモートキャッシュを制御するために、リモートキャッシュコントローラを含む、請求項２記載のコンピュータシステム。
【請求項４】
前記リモートキャッシュコントローラが、データが前記第一システムメモリ内に共有状態で遠隔にキャッシュされ、かつ、ＭｏｄｉｆｉｅｄあるいはＯｗｎｅｄ状態のデータが、前記第一システムメモリ内に遠隔にキャッシュされない、キャッシュの手法を導入している、請求項３記載のコンピュータシステム。
【請求項５】
前記リモートキャッシュコントローラが、前記キャッシュメモリサブシステムからの前記ブロックの交換に応答して、前記第一システムメモリの共有状態のデータのブロックを記録するように構成される、請求項４記載のコンピュータシステム。
【請求項６】
前記リモートキャッシュコントローラが、前記キャッシュメモリサブシステムからの交換に応答してのみ、前記第一サブシステムメモリのデータを遠隔にキャッシュするように構成される、請求項５記載のコンピュータシステム。
【請求項７】
前記リモートキャッシュコントローラが、前記ブロックが前記第一システムメモリに未だ遠隔にキャッシュされていない場合のみ、前記第一システムメモリに前記ブロックを記録するように構成される、請求項６記載のコンピュータシステム。
【請求項８】
前記キャッシュメモリサブシステムの追加エントリが、前記キャッシュメモリサブシステムの前記動作モードに応じて、グローバルコヒーレンスアクティビティを制御するために、プロセッサデータあるいはディレクトリ情報のどちらか一方を選択的に記録するように構成される、請求項１〜７いずれか記載のコンピュータシステム。
【請求項９】
前記キャッシュメモリサブシステムの所定のストレージラインが、リモートキャッシュプレゼンスベクトルを含む、請求項１〜８いずれか記載のコンピュータシステム。
【請求項１０】
前記キャッシュメモリサブシステムの指定の方法が、リモートキャッシュプレゼンス情報の記録を選択的に可能にする、請求項１〜９いずれか記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムに関し、更に具体的には、コンピュータシステム内のリモートキャッシュに関する。
【背景技術】
【０００２】
典型的に、コンピュータシステムにはプロセッサがメモリへアクセスするレイテンシーを小さくするために、１つ以上のキャッシュが含まれる。概して、キャッシュは各々がコンピュータシステムのメモリシステムにおいて対応のアドレスに記録されるデータのコピーである、１つ以上のブロックを記録することができる。
【０００３】
１つ以上のキャッシュに所定のブロックが記録され、また更に、キャッシュコピーのうちの１つがメモリシステムのコピーに関して変更されるために、コンピュータシステムがキャッシュとメモリシステム間のコヒーレンシーを維持することが多い。ブロックへのアップデートが、所定のコヒーレンシープロトコルに従い、ブロックの他のキャッシュコピーにより反映される場合に、コヒーレンシーが維持される。様々な特定のコヒーレンシープロトコルは周知である。本明細書で用いられているように、“ブロック”とはコヒーレンシーのためにユニットとして扱われる、連続する記憶位置に記録される一連のバイトのことである。実施形態の中には、ブロックがキャッシュの割当ての単位、あるいは非割り当ての単位であることができるものがある。ブロックのバイト数は設計上の選択により変化し、また、いずれのサイズであることができる。一例を挙げると、３２バイト及び６４バイトブロックが頻繁に使用される。
【０００４】
多くのコヒーレンシープロトコルは、コンピュータシステム内の様々なキャッシュ間で通信を行うためにプローブを使用する。一般的に、“プローブ”とはキャッシュがブロックのコピーを有しているかを判断するために、また状況に応じて、キャッシュがブロックを配置する必要がある状態を示すために、コンピュータシステムのコヒーレンシーポイントからコンピュータシステムの１つ以上のキャッシュへ送信されるメッセージのことである。コヒーレンシーポイントは、ブロックをリードあるいはライトするために、コンポーネント（例：プロセッサ）からコマンドを受けてプローブを送信する。各プローブレシーバはブローブに応答し、かつ、プローブ応答が受信されると、コマンドは終了される。コヒーレンシーポイントは、メモリシステムに対するメモリコントローラなどのコヒーレンシーを維持する責任があるコンポーネントである。
【０００５】
一般に、コンピュータシステムはブロードキャストキャッシュのコヒーレンシープロトコル、あるいはディレクトリベースキャッシュのコヒーレンシープロトコルのどちらかを導入している。ブロードキャストプロトコルを導入しているシステムでは、プローブがすべてのプロセッサ（あるいはキャッシュサブシステム）へ同時送信される。データの共有コピーを有するサブシステムが、ブロックへの排他アクセスに対するコマンドから生じるプローブを監視する場合、典型的にそのコピーは無効にされる。同様に、データのブロックを所有中のサブシステムが、そのブロックに対応するプローブを監視する場合、所望に応じてデータをリクエスタに与えることにより、またそのコピーを無効にすることにより、ブロックを所有するサブシステムが典型的に応答する。
【０００６】
一方で、ディレクトリベースのプロトコルを導入しているシステムは、データのキャッシュコピーの存在を示す情報を含むディレクトリを維持する。ディレクトリ情報はプローブを無条件に同時送信せず、特定のコヒーレンシーアクションを起こすためにプローブが送信される必要がある、（データのキャッシュコピーを含む）特定のサブシステムを決定する。例えばディレクトリは、様々なサブシステムがデータのブロックの共有コピーを有すことを示す情報を含むことができる。そのブロックへの排他アクセスに対するコマンドを受けて、無効プローブが共有サブシステムに送信される。ディレクトリはまた、データの特定ブロックを所有中のサブシステムを示す情報も含むことができる。従って、コマンドへの応答は、所有中のサブシステムが要求中のサブシステムにデータを送信させるプローブを更に含む。非常に多くの、ディレクトリベースキャッシュのコヒーレンシープロトコルの変形は周知である。
【０００７】
ブロードキャストキャッシュのコヒーレンシープロトコルを導入しているシステムの、他のプロセッサすべてにプローブを同時送信する必要があるため、プロセッサを相互接続するネットワークに関するバンド幅が、特に多くのプロセッサを導入しているシステムに対して、あるいは多くのプローブが短期間に送信される場合に、急速に性能面での限定要因となりうる。そのような環境において、ディレクトリプロトコルを導入しているシステムが、ネットワークトラフィックの減少により、また、ネットワークバンド幅のボトルネックが回避されるために、総合的な高性能を達成する。
【０００８】
ディレクトリベースのシステムは、より効率的なキャッシュのコヒーレンシープロトコルを可能にする一方で、追加のハードウエアを要求することがよくある。ディレクトリ機構はＡＳＩＣ（特定用途向け集積回路：Application Specific Integrated Circuit）、あるいはプロセッサから離れた、他のセミカスタムチップに実装されうるディレクトリキャッシュを有することが多い。ディレクトリキャッシュがセパレートチップに実装される場合、システム全体のコストは増加し、同様に、ボード要求や電力消費、及び冷却要求も増加する。他方、プロセッサコアと同じチップにディレクトリキャッシュを組み込むことは望ましくなく、特にシングルプロセッサあるいはマルチプロセッサシステムの双方に使用することを目的とした汎用マイクロプロセッサに対しては望ましくない。シングルプロセッサシステムで使用される場合、ディレクトリキャッシュは役に立たなくなり、これにより、貴重なダイ領域を無駄にし、かつ、生産の減少のためにコストが増加することになる。
【０００９】
メモリのレイテンシーを小さくするための、共有メモリのコンピュータシステムで導入される他の技術は、リモートキャッシュとして言及される。リモートキャッシュを導入しているシステムでは、一つのノードに取り付けられているシステムメモリの一部が、他のノードへマップされたメモリ位置に対応するキャッシュデータに割当てられる。リモートキャッシュの利点は、リモートメモリのレイテンシーがローカルメモリのレイテンシーよりも非常に大きいシステムにおいて、最も顕著である。
【００１０】
リモートキャッシュを実装するシステムでは、ストレージ機構（storage mechanism）が典型的に、リモートキャッシュに含まれるラインあるいはブロックを認識するために導入される。上述のように、シングルプロセッサ環境に配置する目的の集積回路内にそのような機能を含めることが、ダイ領域を浪費し、コストを増加させることになる。
【発明の開示】
【００１１】
リモートキャッシュプレゼンス情報を記録するプロセッサを備えたコンピュータシステムが開示される。一実施形態では、他のノードへマップされた特定ブロックのデータが遠隔にキャッシュされているかどうかを示すために、複数のプレゼンスベクトルが記録される。プレゼンスベクトルは専用のディレクトリストレージに記録されず、リモートキャッシュプレゼンスベクトルは、Ｌ２キャッシュなどの、プロセッサコアに関連するキャッシュメモリサブシステムの指定の位置に記録される。例えば、キャッシュメモリサブシステムの指定のウエイ（way）がリモートキャッシュプレゼンスベクトルを記録するために割当てられ、一方で、キャッシュメモリサブシステムのその他のウエイが、通常のプロセッサデータを記録するために使用される。１つの特定の実施品では、クリーンで共有データブロックだけが、遠隔にキャッシュされる。新たなデータブロックは、キャッシュメモリサブシステムからの取り外しを受けて、遠隔にキャッシュされうる。更なる実施形態では、キャッシュメモリサブシステムの追加エントリが、プローブコマンドと応答トラフィックをフィルタリングするために、ディレクトリエントリを記録するために使用される。
【００１２】
リモートキャッシュプレゼンス情報を記録するために、キャッシュメモリサブシステムを利用することにより、別々のディレクトリに記録する必要性が回避される。その結果、全体のコストが低減し、また、必要とされるボード領域、電力消費、及び冷却要求も同様に低減される。更に、更に、リモートキャッシュプレゼンス情報を記録するために、キャッシュメモリサブシステムの利用が、サブシステムがシングルプロセッサ環境に配置されているか、あるいはマルチプロセッサ環境に配置されているか、に基づいて選択的に可能にされる実施形態が可能である。従って、シングルプロセッサ環境に配置される場合、キャッシュメモリサブシステムの記録位置が、プロセッサキャッシングオペレーションのために排他的に利用され、かつ、専用のディレクトリストレージの浪費（即ち、不利用:non-utilization）が回避される。
【００１３】
本発明の他の目的及び利点は、以下の詳細な説明を読むことによって、また添付の図面を参照することによって明らかにされるであろう。
【００１４】
本発明は、様々な改良を行い、また、他の形態で実施することができるが、ここに説明されている特定の実施例は、例示として示さたものであり、以下にその詳細を記載する。しかし当然のことながら、ここに示した特定の実施例は、本発明を開示されている特定の形態に限定するものではなく、むしろ本発明は添付の請求項によって規定されている発明の範疇に属する全ての改良、等価物、及び変形例をカバーするものである。
【発明を実施するための最良の形態】
【００１５】
図１にコンピュータシステム１０の一実施形態を示す。コンピュータシステム１０は複数の処理ノード１２Ａ、１２Ｂ、１２Ｃ、及び１２Ｄを含む。各処理ノードは、対応するメモリコントローラ１６Ａ−１６Ｄを介して、対応するメモリ１４Ａ−１４Ｄと結合されている。更に、各処理ノード１２Ａ−１２Ｄは他の処理ノード１２Ａ−１２Ｄと通信するために使用されるインターフェースロジック１８Ａ−１８Ｄを含む。例えば、処理ノード１２Ａは処理ノード１２Ｂ及び１２Ｃと通信するために、インターフェースロジック１８Ａを含む。同様に、処理ノード１２Ｂは処理ノード１２Ａ及び１２Ｄと通信するために、インターフェースロジック１８Ｂを含む、などである。図１の実施形態では、処理ノード１２Ｄが、インターフェースロジック１８Ｄを介して入力／出力（Ｉ／Ｏ）デバイス２０Ａと通信するために結合されており、かつ、Ｉ／Ｏデバイス２０Ａは更に第２のＩ／Ｏデバイス２０Ｂと結合されている。他の処理ノードも同様に他のＩ／Ｏデバイスと通信することができる。別の形態では、処理ノードは、Ｉ／Ｏバスと結合されているＩ／Ｏブリッジと通信することができる。
【００１６】
コンピュータシステム１０はノード間で通信するために、パケットベースのリンクを実装することができる。描かれている実施形態では、リンクは一連の一方向ラインとして実装される（例：ライン２４Ａは処理ノード１２Ａから処理ノード１２Ｂへパケットを送信するために使用され、またライン２４Ｂは処理ノード１２Ｂから処理ノード１２Ａへパケットを送信するために使用される）。他の一連のライン２４Ｃ−２４Ｈは図１に示すように、他の処理ノード間にパケットを送信するために使用される。リンクは処理ノード間で通信するためにキャッシュコヒーレント式で動作され、あるいはＩ／Ｏデバイス２０Ａ−２０Ｂ間（及び所望に応じて、更なるＩ／Ｏデバイス間）でデイジーチェーン構造として、非コヒーレント式で動作される。１つの処理ノードから別の処理ノードへ送信されるパケットが、１つ以上の中間のノードを通過することが知られている。例えば、処理ノード１２Ａにより、処理ノード１２Ｄへ送信されるパケットは、図１に示すように、処理ノード１２Ｂあるいは処理ノード１２Ｃのどちらかを通過する。いずれの適切なルーティングアルゴニズムが使用されうる。コンピュータシステム１０の他の実施形態では、図１に示す実施形態よりも多い、あるいは少ない処理ノードを有すことができる。更に、各処理ノードがポイントツーポイントネットワークを通って、その他のどの処理ノードと結合される、他の実施形態も可能である。
【００１７】
描かれているメモリコントローラとインターフェースロジックに加えて、以下に更に説明されているように、各処理ノード１２Ａ−１２Ｄは１つ以上のプロセッサ、及び関連キャッシュを有することができる。概して、処理ノードは少なくとも１つのプロセッサを有し、所望に応じて、メモリおよび他のロジックと通信するために、メモリコントローラを任意に有することができる。
【００１８】
メモリ１４Ａ−１４Ｄはいずれの適切なメモリデバイスを有することができる。例えば、メモリ１４Ａ−１４Ｄは、１つ以上のＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ＤＲＡＭ、スタティックＲＡＭ、などを有することができる。コンピュータシステム１０のアドレススペースは、メモリ１４Ａ−１４Ｄ間に分けられる。各処理ノード１２Ａ−１２Ｄは、どのアドレスがどのメモリ１４Ａ−１４Ｄにマップされるか、従って、特定のアドレスに対するメモリリクエストがどの処理ノード１２Ａ−１２Ｄへ送信される必要があるか、を判断するために使用されるメモリマップを有す。一実施形態では、コンピュータシステム１０内のアドレスに対するコヒーレンシーポイントは、アドレスに対応するバイトを記録するメモリに結合されるメモリコントローラ１６Ａ−１６Ｄである。メモリコントローラ１６Ａ−１６Ｄはメモリ１４Ａ−１４Ｄへインターフェース接続するための制御回路を有することができる。更に、メモリコントローラ１６Ａ−１６Ｄは、メモリリクエストを待ち行列に入れるためにリクエストキューを有することができる。
【００１９】
概して、インターフェースロジック１８Ａ−１８Ｄは、リンクからパケットを受信するとともに、リンクに送信されるべきパケットをバッファするために、バッファを有することができる。コンピュータシステム１０はパケットを送信するために、いずれの適切なフロー制御機構を導入することができる。
【００２０】
Ｉ／Ｏデバイス２０Ａ−２０Ｂはいずれの所望の周辺デバイスの一例である。例えば、Ｉ／Ｏデバイス２０Ａ−２０Ｂはネットワークインターフェースカード、ビデオアクセレータ、オーディオカード、ハードあるいはフロッピーディスクドライブあるいはドライブコントローラ、ＳＣＳＩ（小型コンピュータ用周辺機器インターフェース：Small Computer Systems Interface）アダプタ、およびテレホンカード、モデム、サウンドカード、および、ＧＰＩＢ（汎用インターフェースバス）などの様々なデータ収集カード、あるいはフィールドバスインターフェースカード、を有することができる。
【００２１】
コンピュータシステム１０の処理ノード１２Ａ−１２Ｄ間の通信は、所望に応じて、様々な特定のバケットベースのメッセージングを用いて行われる。図２はコンピュータシステム１０内のコヒーレントリンクの一実施形態に従い導入された、具体的な一連のパケットベースのメッセージを例示したテーブル３８である。他の適切なパケット定義を導入した実施形態、あるいは、バスベースの通信機構を導入した実施形態を含む、他の実施形態が可能であり、検討される。
【００２２】
図２に示すように、リードトランザクションは、ＲｅａｄＳｉｚｅｄ、ＲｄＢｌｋ、ＲｄＢｌｋＳあるいはＲｄＢｌｋＭｏｄコマンドのうちの１つを使用して開始される。ＲｅａｄＳｉｚｅｄコマンドは、キャッシュ不可能な読み取り、あるいはブロックサイズ以外のデータの読み取りに対して使用される。読み取られるデータ量は、ＲｅａｄＳｉｚｅｄコマンドパケットにエンコードされる。ブロックを読み取るために、（ｉ）書き込み可能なブロックのコピーが要求され、ＲｄＢｌｋＭｏｄコマンドが使用されうる場合、あるいは（ｉｉ）ブロックのコピーが要求されるが、ブロックの変更を目的としないことが分かっており、ＲｄＢｌｋＳコマンドが使用されうる場合でない限りは、ＲｄＢｌｋコマンドが使用される。一般的に適切なリードコマンドは、トランザクションを開始するソースから、ブロックに対応するメモリを所有するターゲットノードへ送信される。ターゲットノードはコヒーレンシーを維持するために、システムの他のノードへプローブコマンドを送信する。場合によってプローブコマンドは、特定ノードのブロックとアップデートされたブロックのコピー（存在する場合）を、ソースノードへ送信される状態へと変化させる結果をもたらす。プローブコマンドを受信する各ノードは、ソースノードへＰｒｏｂｅＲｅｓｐ応答パケットを送信する。プローブノードがアップデートされたリードデータのコピーを有している場合（即ち、ダーティデータ）、そのノードはＲｄＲｅｓｐｏｎｓｅ応答パケットとダーティデータを送信する。更に、ターゲットノードのメモリコントローラは、データパケットのデータを受けて、ＲｄＲｅｓｐｏｎｓｅ応答パケットを使用して、要求されたリードデータを送信する。ソースノードがプローブノードからＲｄＲｅｓｐｏｎｓｅ応答パケットを受信する場合、そのリードデータが使用される。ソースノードがプローブノードからＲｄＲｅｓｐｏｎｓｅ応答パケットを受信しない場合、ターゲットノードからのデータが使用される。プローブ応答とリードデータの各々がソースノードに受信されると、ソースノードはトランザクション終了の肯定応答として、ターゲットノードにＳｒｃＤｏｎｅ応答パケットを送信する。ダーティデータを送信するノードも、要求されたリードデータのターゲットノードにより送信を中止するために、ターゲットノードへＭｅｍＣａｎｃｅｌ応答パケットを送信する。
【００２３】
ライトトランザクションは対応のデータパケットを受けて、ＷｒＳｉｚｅｄ又はＶｉｃＢｌｋコマンドを使用して開始される。ＷｒＳｉｚｅｄコマンドはキャッシュ不可能な書き込みあるいはブロックサイズ以外のデータの書き込みに対して使用される。ＷｒＳｉｚｅｄコマンドに対してコヒーレンシーを維持するために、ターゲットノードはシステムの他のノードの各々へプローブコマンドを送信する。プローブコマンドに応答して、各プローブノードはターゲットノードへＰｒｏｂｅＲｅｓｐ応答パケットを送信する。プローブノードがダーティデータを記録している場合、プローブノードはＲｄＲｅｓｐ応答パケット及びダーティデータで応答する。このような方法で、ＷｒＳｉｚｅｄコマンドによりアップデートされたブロックは、ＷｒＳｉｚｅｄコマンドにより得られるデータと合わせるために、メモリコントローラへ戻される。プローブノードの各々からブローブ応答を受信すると、メモリコントローラはトランザクション終了の肯定応答を得るために、ＴｇｔＤｏｎｅ応答パケットをソースノードへ送信する。ソースノードはＳｒｃＤｏｎｅ応答パケットで応答する。
【００２４】
ノードにより変更され、ノード内のキャッシュに交換されている犠牲のブロック(victim block)は、ＶｉｃＢｌｋコマンドを使用してメモリへ送信され戻される。プローブはＶｉｃＢｌｋコマンドには必要とされない。従って、メモリへ犠牲のブロックデータを引き渡すために、ターゲットメモリコントローラが準備される場合、ターゲットメモリコントローラは犠牲のブロックのソースノードへＴｇｔＤｏｎｅ応答パケットを送信する。ソースノードは、データが引き渡されるべきであると示すＳｒｃＤｏｎｅ応答パケット、あるいは、ＶｉｃＢｌｋコマンドの送信とＴｇｔＤｏｎｅ応答パケット（例：介入しているプローブに応答して）の受信との間でデータが無効にされていることを示すＭｅｍＣａｎｃｅｌ応答パケットのどちらかで応答する。
【００２５】
ＣｈａｎｇｅｔｏＤｉｒｔｙコマンドパケットは書き込み不可能な状態のソースノードにより記録されるブロックに対して書き込み許可を得るために、ソースノードによって送信される。ＣｈａｎｇｅｔｏＤｉｒｔｙコマンドで開始されるトランザクションは、ターゲットノードがデータを戻さない点を除いて、読み取りと同様の動作をする。ＶａｌｉｄａｔｅＢｌｋコマンドは、ソースノードがブロック全体をアップデートする目的である場合、ソースノードによって記録されていないブロックに対して書き込み許可を得るために使用される。そのようなトランザクションに対して、ソースノードへデータが送信されることはないが、その他の点では、リードトランザクションと同様の動作をする。
【００２６】
ＴｇｔＳｔａｒｔ応答は、トランザクションが開始したことを示すために、ターゲットによって使用される（例：後続のトランザクションを順序付けるために）。Ｎｏｐ情報パケットは、例えば、ノード間にバッファフリーの指示を送信するために使用される、ノーオペレーションパケットである。Ｂｒｏａｄｃａｓｔコマンドはノード間にメッセージを同時送信するために使用される（例：ブロードキャストコマンドは割込みを分散するために使用される）。最後に、同期情報パケットは、ファブリックの同期化が要求される場合に使用される（例：エラー検出、リセット、初期化、など）。他の実施形態では所望に応じて、他の種類の命令や関連のコヒーレンシープロトコルが導入されうることが知られている。
【００２７】
図３に典型的な処理ノード１２Ａの一実施形態のブロック図を示す。図１の回路部分に対応する箇所には同じ番号が付けられている。処理ノード１２Ａは、メモリコントローラ１６Ａ、インターフェースロジック１８Ａ、プロセッサコア５０、キャッシュメモリサブシステム５２、およびパケット処理ロジック５８を有す。処理ノード１２Ａは所望に応じて、１つ以上の追加のプロセッサコア５４とキャッシュメモリサブシステム５６も有してよい。一実施形態では、例示の処理ノード１２Ａの機能性が、単一集積回路に組み込まれる。処理ノード１２Ｂ−１２Ｄは類似の構成であってよい。
【００２８】
一般に、パケット処理ロジック５８は、処理ノード１２Ａに結合されているリンクに受信されるコントロールパケットに応答するように、プロセッサコア５０と５４、及び／あるいはキャッシュメモリサブシステム５２と５６に応答してコントロールパケットを生成するように、メモリコントローラ１６Ａによりサービスのために選択されるトランザクションに応答して、プローブコマンドと応答パケットを生成するように、かつ、ノード１２Ａがインターフェースロジック１８Ａを介し、他のノードに対し中間ノードである  パケットを送るように、構成される。パケットを受信し、かつ、パケット処理ロジック５８が使用するインターナルクロックへパケットを同期化するためにインターフェースロジック１８Ａを含むことができる。
【００２９】
キャッシュサブシステム５２及び５６はデータのブロックを記録するように構成される高速のキャッシュメモリを有す。キャッシュメモリサブシステム５２及び５６はそれぞれのプロセッサコア５０及び５４内に統合されうる。別の形態では、キャッシュメモリサブシステム５２及び５６は所望に応じて、バックサイドキャッシュ構造で、あるいはインライン構造でプロセッサコア５２及び５６と結合される。また更に、キャッシュメモリサブシステム５２及び５６はキャッシュの階層として実装されうる。プロセッサコア５０及び５４（階層内）に近接したキャッシュは所望に応じてプロセッサコア５０及び５４に統合されてよい。一実施形態では、キャッシュメモリサブシステム５２及び５６は各々Ｌ２キャッシュ構造を表す。
【００３０】
プロセッサコア５０及び５４は所定の命令セットに従い命令を実行するために、回路を含む。例えば、ｘ８６命令セットアーキテクチャが選択されうる。他の態様では、Ａｌｐｈａ、ＰｏｗｅｒＰｃ、あるいはいずれの他の命令セットアーキテクチャが選択されうる。一般的に、プロセッサコア５０及び５４がデータと命令のために、それぞれ、キャッシュメモリサブシステム５２及び５６にアクセスする。キャッシュミス(cache miss)が検出された場合は、リードリクエストが生成され、不明のブロック(missing block)がマップされているノード内のメモリコントローラへ送信される。
【００３１】
以下に更なる詳細が解説されているように、コンピュータシステム１０の一実施形態では、ディレクトリエントリは特定のトランザクションのためにプローブコマンドと応答トラフィックをフィルタリングするために維持される。ディレクトリエントリは専用のディレクトリストレージに記録されずに、キャッシュメモリサブシステム５２（及び実装に応じて、キャッシュメモリサブシステム５６）の指定された位置に記録される。コンピュータシステム１０の更なる実施形態では、キャッシュメモリサブシステム５２の追加の位置が、リモートキャッシュプレゼンス情報を記録するために使用されうる。ディレクトリエントリの記録のために、及び／あるいは、リモートキャッシュプレゼンス情報のためにキャッシュメモリサブシステム５２を利用することにより、別々にディレクトリを記録する必要がなくなる。その結果、全体のコストが低減され、また、要求されるボード領域、電力消費、及び冷却要求も同様に低減される。更に、ディレクトリエントリを記録するために、及び／あるいはリモートキャッシュプレゼンス情報のために、キャッシュメモリサブシステム５２を利用することが、サブシステムがシングルプロセッサ環境に配置されるか、あるいはマルチプロセッサ環境に配置されるかどうかに基づき、選択的に可能にされる実施形態が可能である。従って、シングルプロセッサ環境に配置される場合、キャッシュメモリサブシステムの記録位置は、プロセッサキャッシュオペレーションに対して排他的に利用され、また、専用ディレクトリストレージの浪費（即ち、不利用）が回避される。キャッシュメモリサブシステム５２のこれらの特徴に関する特定の詳細は以下に更に解説される。
【００３２】
図４に、メモリコントローラ１６Ａの一実施形態のブロック図を示す。メモリコントローラ１６Ｂ−１６Ｄは同様の構造であってよい。図４の実施形態において、メモリコントローラ１６Ａはリクエストキュー６０、コヒーレンシー制御回路６４、及びメモリアクセス制御回路６６を有す。
【００３３】
メモリコントローラ１６Ａはパケット処理ロジック５８からリクエストキュー６０へのコマンドパケットを受信する。コマンドパケットは、コマンドにより影響を与えられるアドレスがメモリ１４Ａのメモリ位置に対応する場合に、パケット処理ロジック５８によりメモリコントローラ１６Ａに送られる。換言すれば、コマンドパケットのアドレスがメモリ１４Ａに記録されたブロックをアドレス指定する場合、コマンドパケットはメモリコントローラ１６Ａに送られる。メモリコントローラ１６Ａはリクエストキュー６０のコマンド情報を待ち行列に入れ、その後、コマンドを処理する。コヒーレンシー制御回路６４により、コマンドがコヒーレント式で確実に実施される。コマンドに対してプローブが要求される場合、コヒーレンシー制御回路６４はパケット処理ロジック５８へプローブ指示(probe indication)を送信する。例えば、プローブ指示は対応するコマンド、アドレス、及びコマンドの種類から、ＳｒｃＮｏｄｅ、ＳｒｃＵｎｉｔ、及びＳｒｃＴａｇを含む。パケット処理ロジック５８はプローブ指示に応答して、プローブコマンドを送信する。コヒーレンシー制御回路６４はパケット処理ロジック５８からＳｒｃＤｏｎｅパケットを更に受信し、かつ、ＷｒＳｉｚｅｄコマンドに対してプローブ応答を受信する。メモリアクセス制御回路６６は、コヒーレンシー制御回路６４により引き渡されるコマンドを実施するために、メモリ１４Ａと連結することができる（例：コヒーレンシーオペレーションが送信され、他のノードから受信されるべきいずれの応答が受信された後）。コマンドが読み取りの場合、データはＲｄＲｅｓｐｏｎｓｅパケットのソースノードへフォーワードするために、メモリ１４Ａからパケット処理ロジック５８へ戻されうる。
【００３４】
更にコヒーレンシー制御回路６４は特定のデータブロックに対してディレクトリエントリを維持するように構成される。上述の通り、これらのディレクトリエントリはキャッシュメモリサブシステム５２、及び／あるいはキャッシュメモリサブシステム５６の指定位置内に記録される。この目的のために、コヒーレンシー制御回路６４は、キャッシュメモリサブシステムへインターフェースを有することができる。コヒーレンシー制御回路は、コマンドの種類に基づくコマンドに対し、かつ、コマンドにより特定されるアドレスに対するディレクトリエントリの存在に基づくコマンドに対し、プローブが要求されるかどうかを判断する。ディレクトリエントリは実施品に応じて、様々なコヒーレンシー情報を含むことができる。例えば、ディレクトリエントリは所定ブロックのオーナー、ブロックが所定モードで変更されるかどうか、及び／あるいはブロックの共有コピーを有すノードの存在、を示すことができる。様々な典型的なディレクトリエントリのフォーマットについての更なる詳細は以下に解説される。
【００３５】
図５はキャッシュメモリサブシステム５２の一実施形態を例示したブロック図である。キャッシュメモリサブシステム５２はキャッシュコントローラ７４に結合されたキャッシュメモリ７２を有す。描かれている実施形態では、以下に解説されている通り、キャッシュコントローラ７４は、キャッシュメモリ７２内のディレクトリエントリの記録を可能にするようにプログラマブルに設定される、モード記録ユニット７５を有す。
【００３６】
通常のキャッシュエントリ（即ち、プロセッサコア５０により動作されるデータを記録するキャッシュメモリ７２内のエントリ）はディレクトエントリと同様、所望に応じて様々な特別なフォーマットでキャッシュに記録される。図６に２Ｌインターリーブを備えたＫ−ｗａｙセットアソシエイティブキャッシュ構造として実装される、一つの可能なキャッシュ配置を示す。データエントリ、タグフィールド、及びステートフィールドを備えた、キャッシュメモリ７２内のストレージ１０２のブロックが示されている。一実施形態では、データエントリは６４バイトのデータを有す。ステートフィールドは、ＭＯＥＳＩプロトコルにおいて、Ｍｏｄｉｆｉｅｄ、Ｏｗｎｅｄ、Ｅｘｃｌｕｓｉｖｅ、Ｓｈａｒｅｄ、あるいはＩｎｖａｌｉｄなどの、キャッシュブロックの状態を確認する。従来の方法では、キャッシュヒットは、キャッシュブロックとともに記録されるタグ情報を備えたキャッシュメモリにアクセスするために使用される、アドレスのタグフィールドを比較することによって判断される。キャッシュメモリの所定の一連のブロックはアドレスのインデックス部を用いてアクセスされる。ＬＲＵフィールドは、参照頻度が最も低いセットのエントリを示し、かつ、キャッシュコントローラ７４により導入されるキャッシュ交換アルゴリズムに関連して使用される。図６に例示するキャッシュ配置は従来のものである。他の実施形態では、キャッシュメモリ７２は他の特別なキャッシュ配置を用いて実装されうることが知られている。また、シングルプロセッサ環境に配置される場合は、キャッシュメモリ７２の全記録位置が通常のキャッシュエントリに対して使用されうることも知られている。（例：シングルプロセッサ環境モードでキャッシュコントローラ７４のモード記録ユニット７５を設定することにより）。
【００３７】
既述の通り、マルチプロセッサ環境に配置される場合、キャッシュメモリ７２の位置のいくつかは、ディレクトリエントリを記録するために使用される。ディレクトリエントリはコヒーレンシーオペレーションを制御するために、コヒーレンシー制御回路により維持され、アクセスされる。
【００３８】
ディレクトリエントリは様々な方法でキャッシュメモリ７２内に記録される。例えば、図７に、キャッシュメモリ７２の指定されたウエイ(way)がディレクトリエントリを記録するために使用されるキャッシュ配置を示す。一実施形態では、この構造はマルチプロセッサ環境モードにおいて、キャッシュコントローラ７４のモード記録ユニット７５をプログラミングすることにより、プログラマブルに設定される。
【００３９】
図７の実施形態は、所定のキャッシュブロックが複数のディレクトリエントリを記録する、ダイレクトマップディレクトリキャッシュ構成の一例である。例えば、一実施形態では、各ディレクトリエントリは１６ビットを有し、これにより、キャッシュブロックの６４バイトのデータフィールドが３２ディレクトリエントリを記録することができる。所定のディレクトリエントリは、キャッシュにアクセスするために使用されるアドレスのディレクトリインデックス部によりインデックスが付けられる。一実施形態では、ディレクトリエントリは選択されるアドレスのビットに基づいて、（図３のキャッシュメモリサブシステム５２や５６などの）マルチキャッシュメモリサブシステムを通ってインターリーブされる。ディレクトリヒットは、キャッシュブロックとともに記録されるブロックタグ（例：ＴａｇＬ２）とディレクトリエントリの一部として記録されるディレクトリタグ（例：Ｔａｇｄｉｒ）の両方が、キャッシュにアクセスするために使用される、対応のアドレスのタグ部に一致する場合に発生する。
【００４０】
コンピュータシステム１０の一実施形態では、ディレクトリエントリはＭｏｄｉｆｉｅｄ、Ｏｗｎｅｄ、あるいはＥｘｃｌｕｓｉｖｅ状態のブロックを追跡するために使用される。ディレクトリエントリの存在は、ブロックがキャッシュされることを意味する。プロセッサがＥｘｃｌｕｓｉｖｅからＭｏｄｉｆｉｅｄへとブロックを静かに移行するので、対応のキャッシュメモリサブシステムと、プロセッサコアの外側の状態Ｅ及びＭは区別がつかないことが知られている。従って、そのような実施形態では、ディレクトリエントリは状態Ｏ（Ｏｗｎｅｄ）、状態ＭＥ（Ｍｏｄｉｆｉｅｄ／Ｅｘｃｌｕｓｉｖｅ）あるいは状態Ｉ（Ｉｎｖａｌｉｄ）のいずれかを含むことができる。ディレクトリエントリの不在は、ブロックが様々なキャッシュメモリサブシステムにおいて共有されている、あるいは無効にされていることを意味する。キャッシュの競合性ミスが発生する場合、影響を受けたキャッシュブロックに対する全てのディレクトリエントリが、Ｍ、ＯあるいはＥの状態から格下げされる必要があることが知られている。ＭｏｄｉｆｉｅｄあるいはＯｗｎｅｄブロックはメモリへコピーされ戻されるとともに、状態Ｓへと移行される。
【００４１】
図８及び図９に、プローブコマンドおよび応答トラフィックをフィルタリング（または制御）するために、コンピュータシステム１０の一実施形態において利用されうるディレクトリエントリの方法を示す。図８及び９において、一連の処理ノードＰ０−Ｐ３が示されており、各々は例えば図１の対応の処理ノード１２を表している。処理ノードＰ０−Ｐ３の各々は、関連メモリ（メモリ０−３）及びＬ２キャッシュを例示する目的で示されている。先述の解説によれば、Ｌ２キャッシュの各々は対応の一連のディレクトリエントリとともに示されている。
【００４２】
図８にメモリ０にマップされるブロックへリードリクエストを発行する処理ノードＰ３に応答して実施される、典型的な一連のオペレーションを示す。この例では、リードリクエストにより、処理ノードＰ３の共有状態にインストールされるブロックがもたらされる。示されているように、メモリリクエストは処理ノードＰ２を通って処理ノードＰ０へ送られ、またディレクトリエントリがキャッシュメモリサブスステムのキャッシュブロックに対して存在するかどうかを判断するために、処理ノード０によりディレクトリルックアップが実施される（例：図４の対応のコヒーレンシー制御回路６４により）。図８の例では、ディレクトリミスがディレクトリルックアップに応答して発生する。従って、ディレクトリエントリが存在しないので、ブロックがいずれの処理ノードのキャッシュにおいて、ＳｈａｒｅｄあるいはＩｎｖａｌｉｄであることだけが可能である。その結果、処理ノードＰ０はメモリ０からデータを単純に検索し、処理ノードＰ２を通って処理ノードＰ３へデータを送る。処理ノードＰ３がデータを受信する場合、ソース完了メッセージが処理ノードＰ３から、例えば処理ノードＰ１を通って、処理ノードＰ０へ送られる。これによりトランザクションが完了する。この例では、ディレクトリルックアップがディレクトリミスをもたらすので、処理ノードＰ０はいずれの無効プローブを他のいずれの処理ノードへ送信されることが必要としないことが分かっており、この点はしかしながらブロードキャストコヒーレンシープロトコルを導入しているシステムには必要とされることである。
【００４３】
図９に処理ノードＰ３がメモリ０にマップされたブロックにリードリクエストを発行する、類似の例を示す。しかしながらこの例では、処理ノードＰ０がディレクトリルックアップを実施する場合、ディレクトリヒットが対応するキャッシュメモリのエントリに発生する。ディレクトリエントリはブロックが処理ノードＰ１においてＭＥ状態にあることを示す。従って処理ノードＰ０のコヒーレンシー制御回路は、処理ノードＰ１が処理ノードＰ３へデータをフォーワードさせるために、処理ノード１へフォーワードされるプローブコマンドを発生する。一実施形態では、データが共有状態で処理ノードＰ３にインストールされので、処理ノードＰ１のキャッシュコントローラはブロックのそのキャッシュコピーを状態ＭからＯへと格下げする。処理ノードＰ０のコヒーレンシー制御回路はまた、処理ノードＰ１のＯ状態にキャッシュ中であることを示すために、ブロックに対するディレクトリエントリをアップデートする。この例において、ディレクトリヒットはＭＥ状態にあるブロックに対して発生したので、処理ノードＰ０はいずれの処理ノードへ無効プローブを送信する（例：同時送信）必要がなかったことである。
【００４４】
様々な他の特定のコヒーレンシーオペレーションが、処理ノードによって開始される他のトランザクションに応答して呼び出される。これまでの例と同様に、プローブコマンドと応答トラフィックが、アクセスされるブロックに対するディレクトリエントリの存在に基づいて、及び／あるいはディレクトリエントリに示されているように、ブロックの状態に基づいてフィルタリングされる。例えば、図９に戻って、処理ノードＰ３が特定ブロックの排他コピーを受信するためにリードコマンドを開始する場合（例：ＲｄＢｌｋＭｏｄコマンドを開始することによって）、処理ノードＰ０は変更されたブロックのコピーを含む処理ノードＰ１へプローブコマンドをフォーワードする。処理ノードＰ１は対応して処理ノードＰ３へデータをフォーワードする。加えて、処理ノードＰ１は無効にするためにそのコピーを格下げし、処理ノードＰ０は、ブロックが処理ノードＰ３においてＭＥ状態にあることを示すために、ブロックに対してディレクトリエントリをアップデートする。様々な特定のコヒーレンシーオペレーションがトランザクションの種類、ディレクトリエントリの存在、あるいはディレクトリエントリにおけるブロックの状態、に応じて、適宜、同様に行われる。
【００４５】
多くの他のディレクトリエントリのフォーマットが他の実施形態で可能である。ディレクトリエントリの特定のフォーマットは、数ある要因の中でも特に、維持される状態情報量、システムの規模、及びディレクトリストレージオーバーヘッド、に基づく。
【００４６】
図１０にディレクトリエントリが４ウエイキャッシュ構成を使用して記録される他の形態の配置を示す。ＬＲＵフィールドはディレクトリの競合性ミス（即ち、新エントリが既存エントリに上書きする場合）が発生すると交換される、使用頻度が最も低いエントリを判断するために維持される。ディレクトリの競合性ミスが発生すると、コヒーレンシー制御回路は所望に応じて特定のコヒーレンシーアクティビティを呼び出すことが知られている。例えば、場合によっては、キャッシュコヒーレンシー回路がライトーバックオペレーションを実施するために、変更されたブロックのコピーを備えたノードをもたらす。
【００４７】
ディレクトリエントリに維持されるべき情報量もまた、実施品により様々である。図１１に、６４バイトのキャッシュブロックにおいて５１２ディレクトリエントリが与えられる実施形態を示す。１ビットのステートフィールドは、ブロックがＭｏｄｉｆｉｅｄ、Ｏｗｎｅｄ、あるいはＥｘｃｌｕｓｉｖｅ（変更、所有、あるいは排他）の状態（ＭＯＥ）であるかどうかを示す。図１２は６４のディレクトリエントリが６４バイトのキャッシュブロックにおいて与えられる実施形態を示している。例示の例では、５ビットのオーナーフィールドがＭＥあるいはＯ状態に対するオーナーをエンコードする。それは３２処理コア（例：各々が４コアを有する８ノード）をサポートするのに十分である。図１２のディレクトリフォーマットは、変更されたブロックが部分的にいくつかのページを示すワークロードに適している。
【００４８】
所定のトランザクションに応答して呼び出される特定のコヒーレンシーアクティビティ（例：プローブコマンドや応答）が、対応のディレクトリエントリに導入される特定のコヒーレンシースキームや、（もし存在するならば）対応のディレクトリエントリに含まれる情報に基づいていることが知られている。様々なディレクトリベースのプロトコルが可能である。
【００４９】
加えて、上述の実施形態において、キャッシュメモリ７２の特定の方法が、ディレクトリエントリを記録するために使用されるが、他の実施形態も可能であることが知られている。例えば、所定の一連のキャッシュメモリ７２がディレクトリエントリを記録するために使用される実施形態や、全エントリのうちのいくつかの部分（例：二分の一）がディレクトリエントリを記録するために使用される実施形態が可能である。
【００５０】
また更に、モード記録ユニット７５を含まない実施形態も可能である。キャッシュブロックとともに維持される情報は、ディレクトリ情報を含むものとしてエントリを確認するために設定される一つ以上のビットを含む。
【００５１】
図１３を参照して、コンピュータシステム１０の別の実施形態は、所定の処理ノード１２のシステムメモリ１４（即ち、１４Ａ−１４Ｄ）の一部が、他のノードのシステムメモリにマップされているアドレスを遠隔にキャッシュするために割当てられている、リモートキャッシュ機能を含む。これらのリモートキャッシュ域は図１３に、リモートキャッシュ３０２Ａ−３０２Ｄとして例示されている。図１の回路部と対応する図１３の回路部には同じ番号が付けられており、また上述のとおり同じ機能性を含む。
【００５２】
所定のシステムメモリ１４のリモートキャッシュ３０２内のリモートデータの記録は、図１４のメモリコントローラ１６Ａに描かれているように、対応のリモートキャッシュコントローラ４０２Ａにより制御される。処理ノード１２Ｂ−１２Ｄは同様のリモートキャッシュコントローラを含む。以下に更なる詳細が解説されるように、一実施形態では、リモートキャッシュコントローラ４０２Ａはキャッシュメモリサブシステム５２（及び／あるいはキャッシュメモリサブシステム５６）へインターフェースを含むことができる。キャッシュメモリサブシステム５２内の記録位置は、特定のアドレスが対応ノードの対応システムメモリ１４内のリモートキャッシュコントローラ４０２Ａにより、遠隔キャッシュされるかどうかを確認する情報を記録するために使用される。この機能に関する更なる詳細が以下に解説される。
【００５３】
一実施形態では、リモートキャッシュコントローラ４０２Ａにより導入されるリモートキャッシュの手法は、共有のリモートデータだけを記録することである。そのような実施形態において、Ｍｏｄｉｆｉｅｄ、ＯｗｎｅｄあるいはＥｘｃｌｕｓｉｖｅデータは、リモートキャッシュ３０２Ａに記録されない。リモートキャッシュ３０２Ａはキャッシュメモリサブシステム５２に関しては非エクスクルーシブ（non-inclusive）であり、また、キャッシュメモリサブシステム５２（及び所望に応じてキャッシュメモリサブシステム５６）から取り外される(evict)共有ブロックに対する犠牲のキャッシュとして機能する。そのため、リモートキャッシュ３０２Ａは、リモートキャッシュ３０２Ａに既に存在しない共有のリモートブロックが、キャッシュメモリサブシステム５２（及び／あるいはキャッシュメモリサブシステム５６）に交換される場合に、リモートキャッシュコントローラ４０２により書き込まれる。
【００５４】
図１５は、対応のリモートブロックがリモートキャッシュ３０２内にキャッシュされるかどうかを確認する情報を含むプレゼンスベクトルを記録するために、指定のウエイ（例：実施形態のウエイ１４）が使用される、キャッシュメモリサブシステム５２の構成を例示している。キャッシュブロックは複数のエントリを含むプレゼンスベクトルを有し、各々は対応のブロックが、Ｓｈａｒｅｄ（Ｓ）状態においてリモートキャッシュ３０２Ａに存在するかしないかを示す。図１４の実施形態では、各エントリは単一のプレゼンスビットよりなる。所定のプレゼンスベクトルはキャッシュメモリにアクセスするために使用されるアドレスの、選択されたインデックスビット（インデックスＬ２）によりアクセスされる。同様に所定のプレゼンスベクトルのプレゼンスビットは、他のビットのアドレス（例：インデックスＰＶ）を用いて選択される。プレゼンスベクトルヒットは、キャッシュブロックとともに記録されるブロックタグ（例：ＴａｇＬ２）が、キャッシュにアクセスするために使用されるアドレスの対応のタグビットと一致する場合に発生する。
【００５５】
リモートキャッシュ３０２Ａに対して割当てられるシステムメモリ１４Ａの物理アドレスは、リモートキャッシュコントローラ４０２Ａと関連する機器構成レジスタに記録されるＲＣベースのアドレス値に従い特定される。メモリ１４Ａのリモートキャッシュ３０２Ａ内に遠隔にキャッシュされたブロックは、描かれているように適宜、プレゼンスベクトルインデックス及びＬ２インデックスを形成しているビットと併せて、ＲＣベースのアドレスを使用して指定される。
【００５６】
図１４の実施形態において、ブロックをリモートキャッシュ３０２Ａに取り付けることが、ＭｏｄｉｆｉｅｄあるいはＯｗｎｅｄデータの取り外し（あるいはディレクトリを備えたシステムの排他データに対する交換通知）を必要としないことが知られている。更に、ブレゼンスビットが、ブロックが有効であり、かつ共有状態にあるということを示すのに十分であるので、遠隔キャッシュブロックに対して、コヒーレンシーステート情報は要求されない。共有ブロックがキャッシュメモリサブシステム５２（及び、所望に応じてキャッシュメモリサブシステム５６）と交換される場合、ブロックがまだリモートキャッシュに存在しない場合は、ブロックがリモートキャッシュ３０２Ａに取り付けられる。リモートキャッシュ３０２Ａのデータは決してダーティではないので、リモートキャッシュ３０２Ａのブロックが静かに交換され、かつ、リモートキャッシュの取り外しは不要である。他のノードが、Ｓｈａｒｅｄ（Ｓ）状態にあるブロックの排他コピーを記録あるいは要求する場合、その結果生じる、処理ノード１２Ａ（ホームノードから）により受信される無効プローブコマンドは、キャッシュメモリサブシステム５２で実施されるべきルックアップを引き起こし、これにより、ブロックがリモートキャッシュ３０２Ａあるいはキャッシュメモリサブシステム５２のどちらかに存在するかを判断する。ブロックがリモートキャッシュ３０２Ａあるいはキャッシュメモリサブシステム５２のどちらかに共有されていることを示すヒットが起きる場合、ブロックは無効にされる。
【００５７】
いくつかの実施形態においては、キャッシュメモリサブシステム５２は、上述のようにディレクトリエントリを記録するとともに、リモートキャッシュプレゼンス指示を記録するために使用される。例えば、一実施形態において、キャッシュメモリサブシステム５２はディレクトリエントリを記録するために（例：図７及び１０に示すように）一つのウエイwayを指定し（例：ウエイ１５）、一方で、プレゼンスベクトルを記録するために他のウエイを指定する。組み合わせて使用される場合、キャッシュメモリサブシステム５２へのシングルアクセスが、データがキャッシュされているかどうか（例：ウエイ０−１３）、及びデータがリモートキャッシュ３０２Ａにキャッシュされているかどうか、を判断するために実施される。更に、ローカルノードへマップされたデータにアクセスされる場合、キャッシュメモリサブシステムへのアクセスが、データが他のプロセッサのキャッシュにおいて、Ｍｏｄｉｆｉｅｄ、ＯｗｎｅｄあるいはＥｘｃｌｕｓｉｖｅの状態でキャッシュされるかどうかを更に判断し、そうである場合は、そのノードはデータを有している。更にまた、記録する場合（あるいは、データブロックの排他コピーを受信するために、他のノードから要求する場合）、処理ノードにより受信される対応の無効データが、キャッシュメモリ７４（例：ウエイ０−１３）及びリモートキャッシュ３０２Ａの双方のブロックを同時に無効にする結果をもたらす（即ち、キャッシュメモリサブシステムの方法１４において、ブロックに対応してプレゼンスビットを変更することによって）。
【００５８】
他の実施形態において、キャッシュメモリサブシステム５４に含まれるプレゼンス情報が、他の特定の構成を用いて記録されることは知られている。例えば、図１６はキャッシュメモリサブシステムが所定のプレゼンスビットへアクセスするためにインデックスが付けられる、他の形態の方法を例示している。
【００５９】
更に、リモートキャッシュプレゼンス情報を記録するために、キャッシュメモリサブシステム５２（及び／あるいはキャッシュメモリサブシステム５６）のエントリを使用することが（例：選択された方法）、動作環境に基づいて選択的に可能にされることが知られている。例えば、モード記録ユニット７５に記録される値は、リモートキャッシュプレゼンス指示機構が可能にされるかどうかをコントロールする。そのために、シングルプロセッサ環境に配置される場合、モード記録ユニット７５が、通常のキャッシュオペレーションのために、キャッシュメモリサブシステムの全エントリを指定するために設定され、これにより、ストレージリソースの浪費が回避される。
【００６０】
上記開示が十分に認識されると、多くのバリエーション及び変形が当業者には明らかになるであろう。以下の請求項は全てのそのようなバリエーション及び変形を包含するように解釈されることを意図している。
【産業上の利用可能性】
【００６１】
本発明は該してコンピュータシステムに応用が可能である。
【図面の簡単な説明】
【００６２】
【図１】コンピュータシステムの一実施形態のブロック図である。
【図２】パケット定義の一実施形態のテーブルを例示している。
【図３】処理ノードの一実施形態のブロック図である。
【図４】メモリコントローラの一実施形態のブロック図である。
【図５】キャッシュメモリサブシステムのブロック図である。
【図６】従来のキャッシュ配置の一実施形態を例示している。
【図７】ダイレクトマップのディレクトリキャッシュ構成を例示している。
【図８】ディレクトリエントリがプローブコマンドと応答トラフィックをフィルタリングするために利用する方法を例示している。
【図９】ディレクトリエントリがプローブコマンドと応答トラフィックをフィルタリングするために利用する方法を例示している。
【図１０】ディレクトリエントリが４ウエイ構造を使用して記録されるキャッシュ配置を例示している。
【図１１】別の形態のディレクトリエントリのフォーマットを例示している。
【図１２】別の形態のディレクトリエントリのフォーマットを例示している。
【図１３】リモートキャッシュを含むコンピュータシステムの別の実施形態を例示している。
【図１４】処理ノードの別の実施形態のブロック図である。
【図１５】指定のウエイがプレゼンスベクトルを記録するために使用される、キャッシュメモリサブシステムの構成を例示している。
【図１６】所定のプレゼンスビットにインデックスを付けるために別の形態のフォーマットを例示している。
【図１】
2006501548.tif 000003
【図２】
2006501548.tif 000004
【図３】
2006501548.tif 000005
【図４】
2006501548.tif 000006
【図５】
2006501548.tif 000007
【図６】
2006501548.tif 000008
【図７】
2006501548.tif 000009
【図８】
2006501548.tif 000010
【図９】
2006501548.tif 000011
【図１０】
2006501548.tif 000012
【図１１】
2006501548.tif 000013
【図１２】
2006501548.tif 000014
【図１３】
2006501548.tif 000015
【図１４】
2006501548.tif 000016
【図１５】
2006501548.tif 000017
【図１６】
2006501548.tif 000018
【国際調査報告】
2006501548.tif 000019
2006501548.tif 000020