(57)【要約】      （修正有）【課題】改良されたキャッシュ・コヒーレント・データ処理システム、キャッシュ・システム、およびキャッシュ・コヒーレント・データ処理システムにおけるデータ処理方法を提供する。【解決手段】アドレス・タグが有効であることと、記憶位置が有効データを含まないこととを示す第１のデータ無効コヒーレンシー状態に設定される。アドレス・タグに一致しており、かつ排他的アクセス動作を開始した要求元の相対的ドメイン・ロケーションを示す目標アドレスを指定する排他的アクセス要求のスヌーピングに応答して、アドレス・タグが有効であることと、記憶位置が有効データを含まないことと、要求元の相対的ロケーションに基づく排他的アクセス動作が無事完了した時に、アドレス・タグと関連する目標メモリ・ブロックが、第１のコヒーレンシー・ドメイン内にキャッシュされているかどうかとを示す、第２のデータ無効コヒーレンシー状態に更新する。【選択図】図１
2007257631.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも第１および第２のコヒーレンシー・ドメインを含むキャッシュ・コヒーレント・データ処理システム内のデータ処理方法であって、
前記データ処理システムの前記第１のコヒーレンシー・ドメイン内の第１のキャッシュ・メモリにおいて、記憶位置およびアドレス・タグと関連するコヒーレンシー状態フィールドを、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないこととを示す第１のデータ無効コヒーレンシー状態に設定するステップを含み、
前記アドレス・タグに一致しており、かつ排他的アクセス動作を開始した要求元の相対的ドメイン・ロケーションを示す、目標アドレスを指定する前記排他的アクセス動作のスヌーピングに応答して、前記第１のキャッシュ・メモリが、前記コヒーレンシー状態フィールドを、前記第１のデータ無効コヒーレンシー状態から、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないことと、前記要求元の前記相対的ドメイン・ロケーションに基づく前記排他的アクセス動作が無事完了した時に、前記アドレス・タグと関連する目標メモリ・ブロックが、前記第１のコヒーレンシー・ドメイン内にキャッシュされているかどうかとを示す、第２のデータ無効コヒーレンシー状態に更新する、キャッシュ・コヒーレント・データ処理システム内のデータ処理方法。
【請求項２】
前記排他的アクセス動作が、第１の排他的アクセス動作を含み、
前記設定するステップが、前記データ処理システムの第２のキャッシュ・メモリにより開始される第２の排他的アクセス動作に応答して、前記コヒーレンシー状態フィールドを、前記第１のデータ無効コヒーレンシー状態に設定するステップを含む、請求項１に記載の方法。
【請求項３】
前記排他的アクセス動作が、バックグラウンド・キル動作を含み、
前記方法が、第２のキャッシュ・メモリが前記目標メモリ・ブロックの排他的コヒーレンシー所有権を取得したとの表示に応答して、前記第２のキャッシュ・メモリが、前記バックグラウンド・キル動作を発行するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記第１のキャッシュ・メモリが、前記コヒーレンシー状態フィールドを参照することにより、前記メモリ・ブロックを対象とするデータ・アクセス要求のブロードキャスト伝達範囲を予測するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記排他的アクセス動作が、排他的アクセス要求と、前記排他的アクセス要求に対するシステム全体の応答を示す結合応答とを含み、
前記更新するステップが、前記要求元が前記目標メモリ・ブロックの排他的コヒーレンシー所有権を取得したことを示す前記排他的アクセス動作の前記結合応答に応答して、前記第１のキャッシュ・メモリが、前記コヒーレンシー状態フィールドを更新するステップを含む、請求項１に記載の方法。
【請求項６】
前記アドレス・タグと関連する目標メモリ・ブロックが前記第１のコヒーレンシー・ドメイン内にキャッシュされている可能性が高いかどうかを、前記第１のデータ無効コヒーレンシー状態が示し、
前記方法が、
前記要求元が前記目標メモリ・ブロックの排他的コヒーレンシー所有権を取得することに失敗したことを示す前記結合応答に応答して、前記コヒーレンシー状態フィールドを、前記第１のデータ無効コヒーレンシー状態から、前記データ記憶位置が有効データを含まないことを示し、かつ前記目標メモリ・ブロックのコピーがどこにキャッシュされているかについての場所の表示を提供しない、第３のデータ無効コヒーレンシー状態に更新するステップをさらに含む、請求項５に記載の方法。
【請求項７】
それぞれが少なくとも１つの処理装置を有する、少なくとも第１および第２のコヒーレンシー・ドメインを含むキャッシュ・コヒーレント・データ処理システムにおいて、前記第１のコヒーレンシー・ドメインおよび前記第２のコヒーレンシー・ドメインに含まれるキャッシュ・メモリであって、
キャッシュ・コントローラと、
メモリ・ブロックをキャッシュするデータ記憶位置を含むデータ・アレイと、
前記メモリ・ブロックと関連してアドレス・タグを格納するタグ・フィールドならびに、
前記タグ・フィールドおよび前記データ記憶位置と関連するコヒーレンシー状態フィールドであって、第１および第２のデータ無効コヒーレンシー状態を含む複数の可能なコヒーレンシー状態を有し、前記第１のデータ無効コヒーレンシー状態が、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないこととを示し、第２のデータ無効コヒーレンシー状態が、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないことと、前記アドレス・タグと関連する目標メモリ・ブロックが前記第１のコヒーレンシー・ドメイン内にキャッシュされている可能性が高いかどうかとを示す、コヒーレンシー状態フィールド、を含むキャッシュ・ディレクトリとを含み、
前記アドレス・タグに一致しており、かつ排他的アクセス動作を開始した要求元の相対的ドメイン・ロケーションの表示を含む、目標アドレスを指定する前記排他的アクセス動作のスヌーピングに応答して、前記キャッシュ・コントローラが、前記コヒーレンシー状態フィールドを、前記第１のデータ無効コヒーレンシー状態から、前記第２のデータ無効コヒーレンシー状態に更新する、キャッシュ・メモリ。
【請求項８】
少なくとも１つのプロセッサ・コアと、
請求項７に記載のキャッシュ・メモリとを含む、処理装置。
【請求項９】
相互接続ファブリックと、
前記相互接続ファブリックにより結合された第１および第２のコヒーレンシー・ドメインとを含み、
前記第１のコヒーレンシー・ドメインが、第１のキャッシュ・メモリによりサポートされた少なくとも第１の処理装置を含むとともに、前記第２のコヒーレンシー・ドメインが、第２のコヒーレント・キャッシュ・メモリによりサポートされた第２の処理装置を含み、前記データ処理システムの前記第１のコヒーレンシー・ドメイン内の前記第１のキャッシュ・メモリが、
前記メモリ・ブロックと関連してアドレス・タグを格納するタグ・フィールドと、
前記タグ・フィールドおよび前記データ記憶位置と関連するコヒーレンシー状態フィールドであって、前記コヒーレンシー状態フィールドが、第１および第２のデータ無効コヒーレンシー状態を含む複数の可能なコヒーレンシー状態を有し、前記第１のデータ無効コヒーレンシー状態が、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないこととを示し、第２のデータ無効コヒーレンシー状態が、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないことと、前記アドレス・タグと関連する目標メモリ・ブロックが、前記第１のコヒーレンシー・ドメイン内にキャッシュされている可能性が高いかどうかとを示す、コヒーレンシー状態フィールドとを含むキャッシュ・ディレクトリを含み、
前記アドレス・タグに一致しており、かつ排他的アクセス動作を開始した要求元の相対的ドメイン・ロケーションの表示を含む、目標アドレスを指定する前記排他的アクセス動作のスヌーピングに応答して、前記キャッシュ・コントローラが、前記コヒーレンシー状態フィールドを、前記第１のデータ無効コヒーレンシー状態から、前記第２のデータ無効コヒーレンシー状態に更新する、キャッシュ・コヒーレント・データ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的に、データ処理に関し、特に、キャッシュ・コヒーレント・データ処理システム内のデータ処理に関する。
【背景技術】
【０００２】
サーバ・コンピュータ・システムのような従来の対称型マルチプロセッサ（ＳＭＰ）コンピュータ・システムは、複数の処理装置を含み、そのすべてが、通常、１つ以上のアドレス・バス、データ・バス、およびコントロール・バスを含むシステム相互接続に結合されている。システム相互接続に結合されたシステム・メモリは、マルチプロセッサ・コンピュータ・システム内の最低レベルの揮発性メモリであり、一般的に、リードおよびライト・アクセスのために、すべての処理装置によりアクセス可能である。システム・メモリ内にある命令およびデータに対するアクセス待ち時間を減少させるために、通常、各処理装置は、さらにそれぞれのマルチレベル・キャッシュ階層によりサポートされ、このマルチレベル・キャッシュ階層の下位レベルは、１つ以上のプロセッサ・コアにより共有されうる。
【０００３】
複数のプロセッサ・コアが同じキャッシュ・ライン・データへのライト・アクセスを要求することがあり、かつ変更されたキャッシュ・ラインは、すぐにはシステム・メモリと同期しないため、通常、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は、キャッシュ・コヒーレンシー・プロトコルを実行して、システム・メモリの内容に対するプロセッサ・コアの様々な「ビュー」の間で、少なくとも最低水準のコヒーレンスを確保する。特に、キャッシュ・コヒーレンシーは、最低でも、処理装置がメモリ・ブロックのコピーにアクセスして、続いてメモリ・ブロックの更新されたコピーにアクセスした後、処理装置がメモリ・ブロックの更新前の古いコピーに再びアクセスすることはできないことを要求する。
【０００４】
通常、キャッシュ・コヒーレンシー・プロトコルは、キャッシュ階層間でキャッシュ状態情報を伝えるために利用される１組のコヒーレンシー・メッセージ、ならびに各キャッシュ階層のキャッシュ・ラインと関連して保存される１組のコヒーレンシー状態を規定する。典型的な実装では、コヒーレンシー状態情報は、公知のＭＥＳＩ（Ｍｏｄｉｆｉｅｄ，  Ｅｘｃｌｕｓｉｖｅ，  Ｓｈａｒｅｄ，  Ｉｎｖａｌｉｄ（変更、排他、共有、無効））プロトコル、またはその変形の形を取り、コヒーレンシー・メッセージは、メモリ・アクセス要求の要求元および宛先のキャッシュ階層内の、プロトコルで規定されるコヒーレンシー状態遷移を示す。
【０００５】
いくつかのキャッシュ・コヒーレンシー・プロトコルでは、後続の動作に応じて、１つ以上のコヒーレンシー状態が、不正確に形成または更新される。したがって、これらのコヒーレンシー状態は、関連するメモリ・ブロックのシステム全体のコヒーレンシー状態を正確に反映できない。本発明は、不正確な、または間違ったコヒーレンシー状態の存在は、たとえそれがコヒーレンシー・エラーを引き起こさないとしても、不正確なコヒーレンシー状態が低減、または除去された場合には要求されないであろうシステム動作が実行される原因となりうることを認識する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記に照らして、本発明は、改良されたキャッシュ・コヒーレント・データ処理システム、キャッシュ・システム、およびキャッシュ・コヒーレント・データ処理システムにおけるデータ処理方法を提供する。
【課題を解決するための手段】
【０００７】
一実施形態では、キャッシュ・コヒーレント・データ処理システムは、少なくとも第１および第２のコヒーレンシー・ドメインを含む。データ処理システムの第１のコヒーレンシー・ドメイン内の第１のキャッシュ・メモリにおいて、記憶位置およびアドレス・タグと関連するコヒーレンシー状態フィールドは、アドレス・タグが有効であることと、記憶位置が有効データを含まないこととを示す第１のデータ無効コヒーレンシー状態に設定される。アドレス・タグに一致しており、かつ排他的アクセス動作を開始した要求元の相対的ロケーションを示す目標アドレスを指定する排他的アクセス動作のスヌーピングに応答して、第１のキャッシュ・メモリは、コヒーレンシー状態フィールドを、第１のデータ無効コヒーレンシー状態から、アドレス・タグが有効であることと、記憶位置が有効データを含まないことと、要求元の相対的ロケーションに基づく排他的アクセス動作が無事完了した時に、アドレス・タグと関連する目標メモリ・ブロックが、第１のコヒーレンシー・ドメイン内にキャッシュされているかどうかとを示す、第２のデータ無効コヒーレンシー状態に更新する。データ無効コヒーレンシー状態を更新することにより、データ無効コヒーレンシー状態により提供されるヒント情報の正確さが高まり、後続のデータ・アクセス動作のブロードキャスト範囲の選択の改善につながる。
【０００８】
本発明のすべての目的、特徴、および利点は、以下の詳細に書かれた説明において明らかになるであろう。
【発明を実施するための最良の形態】
【０００９】
Ｉ．代表的なデータ処理システム
ここで、特に、図１を参照すると、本発明のキャッシュ・コヒーレント対称型マルチプロセッサ（ＳＭＰ）データ処理システムの代表的実施形態の高レベルのブロック図が示されている。図示したように、データ処理システム１００は、データおよび命令を処理する複数の処理ノード１０２ａ、１０２ｂを含む。処理ノード１０２ａ、１０２ｂは、アドレス、データ、および制御情報を伝達するシステム相互接続１１０に結合される。例えば、システム相互接続１１０は、バス型相互接続、スイッチ型相互接続、またはハイブリッド相互接続として実現されうる。
【００１０】
図示された実施形態では、各処理ノード１０２は、４つの処理装置（ＰＵ）１０４ａ〜１０４ｄを含むマルチチップ・モジュール（ＭＣＭ）として実現されて、これらの４つの処理装置１０４ａ〜１０４ｄの各々は、それぞれ集積回路として実現されることが好ましい。各処理ノード１０２内の処理装置１０４ａ〜１０４ｄは、システム相互接続１１０のように、１つ以上のバスまたはスイッチで実現されうるローカル相互接続１１４で通信を行うために結合される。
【００１１】
各ローカル相互接続１１４に結合されたデバイスは、処理装置１０４だけではなく、１つ以上のシステム・メモリ１０８ａ〜１０８ｄも含む。一般的に、システム・メモリ１０８内にあるデータおよび命令は、データ処理システム１００の任意の処理ノード１０２内の任意の処理装置１０４のプロセッサ・コアにより、アクセスかつ変更されうる。本発明の他の実施形態では、１つ以上のシステム・メモリ１０８は、ローカル相互接続１１４よりもむしろシステム相互接続１１０に結合されうる。
【００１２】
当業者は、ＳＭＰデータ処理システム１００が、相互接続ブリッジ、不揮発性記憶装置、ネットワークまたは接続デバイスの接続用ポートなどの図示されていない多数の付加的な構成要素を含みうることを理解するであろう。このような付加的な構成要素は、本発明を理解するためには必要ではないため、それらは、図１に示されず、または本明細書でさらに説明されることもない。しかしながら、また、本発明により提供される改善は、多様なアーキテクチャのキャッシュ・コヒーレント・データ処理システムに適用可能であるとともに、図１に示した一般化されたデータ処理システム・アーキテクチャに制限されないことを理解すべきである。
【００１３】
ここで図２を参照すると、本発明の代表的な処理装置１０４の、より詳細なブロック図が示されている。図示された実施形態では、各処理装置１０４は、命令およびデータを独立して処理する２つのプロセッサ・コア２００ａ、２００ｂを含む。各プロセッサ・コア２００は、少なくとも、実行する命令をフェッチして、順序付ける命令順序付けユニット（ＩＳＵ）２０８、および命令を実行する１つ以上の実行ユニット２２４を含む。さらに後述するように、実行ユニット２２４は、メモリ・ブロックを参照する、またはメモリ・ブロックを参照する動作を生じさせるメモリ・アクセス命令を実行するロード／ストア・ユニット（ＬＳＵ）２２８を含むことが好ましい。
【００１４】
各プロセッサ・コア２００の動作は、マルチレベル揮発性メモリ階層によりサポートされており、このマルチレベル揮発性メモリ階層は、その最低レベルに共有システム・メモリ１０８ａ〜１０８ｄ、およびその上位レベルに１つ以上のレベルのキャッシュ・メモリを有する。図示された実施形態では、各処理装置１０４は、その処理ノード１０２内のシステム・メモリ１０８ａ〜１０８ｄの各々に対するリードおよびライト・アクセスを、プロセッサ・コア２００ａ〜２００ｂから受信された要求、およびローカル相互接続１１４上のスヌーパ（Ｓ）２２２によりスヌープされた動作に応答して制御する統合メモリ・コントローラ（ＩＭＣ）２０６を含む。ＩＭＣ２０６は、ベース・アドレス・レジスタ（ＢＡＲ）ロジック２４０を含み、このベース・アドレス・レジスタ（ＢＡＲ）ロジック２４０は、ＩＭＣ２０６が責任を有するアドレスを規定するレンジ・レジスタを含む。
【００１５】
具体的な実施形態では、処理装置１０４のキャッシュ・メモリ階層は、各プロセッサ・コア２００内のストア・スルー・レベル１（Ｌ１）キャッシュ２２６、および処理装置１０４のすべてのプロセッサ・コア２００ａ、２００ｂにより共有されるレベル２（Ｌ２）キャッシュ２３０を含む。Ｌ２キャッシュ２３０は、Ｌ２アレイおよびディレクトリ２３４、ならびにマスタ２３２およびスヌーパ２３６を有するキャッシュ・コントローラを含む。マスタ２３２は、ローカル相互接続１１４およびシステム相互接続１１０上のトランザクションを開始するとともに、関連するプロセッサ・コア２００ａ〜２００ｂから受信されたメモリ・アクセス（および他の）要求に応じて、Ｌ２アレイおよびディレクトリ２３４にアクセスする。スヌーパ２３６は、ローカル相互接続１１４上の動作をスヌープして、適切な応答を提供するとともに、動作により要求されたＬ２アレイおよびディレクトリ２３４に対する任意のアクセスを実行する。
【００１６】
図示したキャッシュ階層は、２つのレベルのキャッシュだけを含むが、当業者は、他の実施形態では、上位レベルのキャッシュの内容を完全に含む、部分的に含む、または全く含まない、オンチップまたはオフチップのインラインまたはルックアサイド・キャッシュの付加的なレベル（Ｌ３、Ｌ４、Ｌ５など）を含みうることを理解するであろう。
【００１７】
各処理装置１０４は、データ処理システム１００内のキャッシュ・コヒーレンシーを保持する分散型コヒーレンシー・シグナリング機構の一部を実装する応答ロジック２１０をさらに含む。さらに、各処理装置１０４は、そのローカル相互接続１１４とシステム相互接続１１０の間で情報を選択的に転送する相互接続ロジック２１２のインスタンスを含む。最後に、各処理装置１０４は、Ｉ／Ｏデバイス２１６のような１つ以上のＩ／Ｏデバイスの接続をサポートする統合Ｉ／Ｏ（入出力）コントローラ２１４を含む。Ｉ／Ｏコントローラ２１４は、Ｉ／Ｏデバイス２１６による要求に応じて、ローカル相互接続１１４またはシステム相互接続１１０上に動作を発行することができる。
【００１８】
ここで図３を参照すると、Ｌ２アレイおよびディレクトリ２３４の代表的実施形態の、より詳細なブロック図が示されている。図示したように、Ｌ２アレイおよびディレクトリ２３４は、セット・アソシアティブＬ２キャッシュ・アレイ３００、ならびにＬ２キャッシュ・アレイ３００の内容のＬ２キャッシュ・ディレクトリ３０２を含む。従来のセット・アソシアティブ・キャッシュのように、システム・メモリ１０８内の記憶域は、システム・メモリの（実）アドレス内の所定のインデックス・ビットを利用して、キャッシュ・アレイ３００内の特定の合同クラスにマップされる。キャッシュ・アレイ３００内に格納された特定のキャッシュ・ラインは、キャッシュ・アレイ３００内の各キャッシュ・ラインに対して１つのディレクトリ・エントリを含むキャッシュ・ディレクトリ３０２内に記録される。当業者に理解されるように、キャッシュ・ディレクトリ３０２内の各ディレクトリ・エントリは、少なくとも、対応する実アドレスのタグ部分を利用して、キャッシュ・アレイ３００内に格納された特定のキャッシュ・ラインを指定するタグ・フィールド３０４、キャッシュ・ラインのコヒーレンシー状態を示す状態フィールド３０６、および同じ合同クラス内の他のキャッシュ・ラインについてキャッシュ・ラインの置換順序を示すＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（最長時間未使用））フィールド３０８を有する。
【００１９】
ＩＩ．代表的動作
ここで図４を参照すると、図１のデータ処理システム１００のローカルまたはシステム相互接続１１０、１１４上の代表的動作の時系列図が示されている。動作は、Ｌ２キャッシュ２３０のマスタ２３２（または、Ｉ／Ｏコントローラ２１４のような他のマスタ）が、ローカル相互接続１１４またはシステム相互接続１１０上に要求４０２を発行するときに始まる。要求４０２は、所望のアクセスのタイプを示すトランザクション・タイプと、その要求によりアクセスされる予定のリソースを示すリソース識別子（例えば、実アドレス）とを含むことが好ましい。要求の一般的な種類は、下記の表１に示したものを含むことが好ましい。
【００２０】
【表１】
2007257631.tif 000003
【００２１】
要求４０２は、メモリ・コントローラ２０６のスヌーパ２２２、ならびにＬ２キャッシュ２３０のスヌーパ２３６により受信される（図１）。若干の例外はあるものの、一般的に要求４０２は、それが処理装置１０４により内部的に処理できない場合にだけ、ローカル相互接続１１４またはシステム相互接続１１０上を送信されるため、要求４０２のマスタ２３２と同じＬ２キャッシュ２３０内のスヌーパ２３６は、要求４０２をスヌープしない（すなわち、一般的に、セルフ・スヌープを行わない）。要求４０２を受信する各スヌーパ２２２、２３６は、要求４０２に対する少なくとも当該スヌーパの応答を示す、それぞれの部分応答４０６を提供できる。メモリ・コントローラ２０６内のスヌーパ２２２は、例えば、スヌーパ２２２が、要求アドレスに対して責任があるかどうか、およびスヌーパ２２２が、要求を処理するために利用可能なリソースを有するかどうかなどに基づいて、提供する部分応答４０６を決定する。Ｌ２キャッシュ２３０のスヌーパ２３６は、例えば、そのＬ２キャッシュ・ディレクトリ３０２の可用性、要求を取り扱うスヌーパ２３６内のスヌープ・ロジックの可用性、およびＬ２キャッシュ・ディレクトリ３０２内の要求アドレスと関連するコヒーレンシー状態などに基づいて、その部分応答４０６について決定できる。
【００２２】
スヌーパ２２２および２３６の部分応答は、要求４０２に対するシステム全体の結合応答（ＣＲ）４１０を決定するために、応答ロジック２１０により、段階的に、または一度に、論理的に結合される。後述の範囲制限に従って、要求４０２に対するシステム全体の応答（例えば、成功、失敗、再試行など）を示すために、応答ロジック２１０は、そのローカル相互接続１１４またはシステム相互接続１１０を介して、マスタ２３２およびスヌーパ２２２、２３６に結合応答４１０を提供する。ＣＲ４１０が要求４０２の成功を示すとき、ＣＲ４１０は、例えば、要求されたメモリ・ブロックに対するデータ・ソース、要求されたメモリ・ブロックが、マスタ２３２によりキャッシュされる予定のキャッシュ状態、１つ以上のＬ２キャッシュ２３０内の要求されたメモリ・ブロックを無効にする「クリーンアップ」（例えば、ＫＩＬＬ）動作が必要であるかどうかなどを示すことができる。
【００２３】
結合応答４１０の受信に応答して、通常、マスタ２３２およびスヌーパ２２２、２３６のうちの１つ以上が、要求４０２を処理するために、１つ以上の動作を実行する。これらの動作は、マスタ２３２へのデータ供給と、１つ以上のＬ２キャッシュ２３０内にキャッシュされたデータのコヒーレンシー状態の無効化、またはなんらかの更新、キャストアウト動作の実行、システム・メモリ１０８へのデータの書き戻しなどを含みうる。要求４０２により要求された場合、要求されたメモリ・ブロック、すなわち目標メモリ・ブロックは、応答ロジック２１０による結合応答４１０の生成前または生成後に、マスタ２３２に、またはマスタ２３２から送信されうる。
【００２４】
次に、要求に対するスヌーパ２２２、２３６の部分応答と、要求または要求の結合応答に応答してスヌーパにより実行される動作とについて、当該スヌーパが、要求により指定される要求アドレスに関して最高コヒーレンシー点（ＨＰＣ）であるか、最低コヒーレンシー点（ＬＰＣ）であるか、またはどちらでもないかに関連して説明する。ＬＰＣは、本明細書では、メモリ・ブロックのリポジトリに対する制御点として機能するメモリ・デバイスまたはＩ／Ｏデバイスとして定義される。メモリ・ブロックに対するＨＰＣがないとき、ＬＰＣは、メモリ・ブロックの真のイメージを保持する記憶装置に対するアクセスを制御するとともに、メモリ・ブロックの付加的なキャッシュ・コピーを作る要求を認可する、または拒絶する権限を有する。図１および図２のデータ処理システム実施形態における典型的な要求では、ＬＰＣは、参照メモリ・ブロックを保持するシステム・メモリ１０８に対するメモリ・コントローラ２０６であろう。ＨＰＣは、本明細書では（ＬＰＣにおける対応するメモリ・ブロックと同じであっても、なくてもよい）メモリ・ブロックの真のイメージをキャッシュする一意的に特定されたデバイスとして定義され、メモリ・ブロックを変更する要求を認可する、または拒絶する権限を有する。ＨＰＣはまた、メモリ・ブロックを変更しない動作に応答して、要求元にメモリ・ブロックのコピーを提供できる。したがって、図１および図２のデータ処理システム実施形態における典型的な要求では、もしＨＰＣがある場合には、それはＬ２キャッシュ２３０であろう。メモリ・ブロックに対するＨＰＣを指定するために他の標識を利用しうるが、表２を参照して下記に詳述するように、本発明の好ましい実施形態は、もしメモリ・ブロックに対するＨＰＣがある場合には、Ｌ２キャッシュ２３０のＬ２キャッシュ・ディレクトリ３０２内の選択されたキャッシュ・コヒーレンシー状態を利用して、そのメモリ・ブロックに対するＨＰＣを指定する。
【００２５】
さらに図４を参照すると、要求４０２で参照されるメモリ・ブロックに対して、もしＨＰＣがある場合にはＨＰＣが、または、ＨＰＣがない場合にはメモリ・ブロックのＬＰＣが、保護ウィンドウ４０４ａの間、要求４０２に応じた、メモリ・ブロックの所有権移転を保護する責任を有することが好ましい。図４に示した代表的シナリオでは、要求４０２の要求アドレスにより指定されたメモリ・ブロックに対するＨＰＣであるスヌーパ２３６は、スヌーパ２３６がその部分応答４０６を決定してから、結合応答４１０を受信するまでの保護ウィンドウ４０４ａの間、マスタ２３２への要求メモリ・ブロックの所有権の移転を保護する。保護ウィンドウ４０４ａの間、スヌーパ２３６は、所有権がマスタ２３２に正しく移転されるまで、同じ要求アドレスを指定する他の要求に対して、他のマスタが所有権を取得することを防止する部分応答４０６を提供することにより、所有権移転を保護する。同様に、マスタ２３２は、結合応答４１０の受信に続いて、要求４０２で要求されたメモリ・ブロックの所有権を保護するために保護ウィンドウ４０４ｂを開始する。
【００２６】
すべてのスヌーパ２２２、２３６は、上述したＣＰＵおよびＩ／Ｏ要求を取り扱うリソースが限られているため、いくつかの異なったレベルの部分応答および対応するＣＲが可能である。例えば、要求されたメモリ・ブロックに対して責任があるメモリ・コントローラ２０６内のスヌーパ２２２が、要求を取り扱うために利用可能なキューを有するとき、スヌーパ２２２は、スヌーパ２２２が要求に対するＬＰＣとして機能できることを示す部分応答で応答できる。一方、スヌーパ２２２が要求を取り扱うために利用可能なキューを有しないとき、スヌーパ２２２は、スヌーパ２２２がメモリ・ブロックに対するＬＰＣであるが、現在、要求を処理できないことを示す部分応答で応答できる。
【００２７】
同様に、Ｌ２キャッシュ２３０内のスヌーパ２３６は、要求を取り扱うために、利用可能なスヌープ・ロジックを要求することができるとともに、Ｌ２キャッシュ・ディレクトリ３０２にアクセスすることができる。これらのリソースのどちらか（または、両方）に対してアクセスできないと、所要のリソースが欠如するため、現在、要求を処理できないことを示す部分応答（および対応するＣＲ）を発生させる。
【００２８】
以後、現在、要求を処理するために必要な利用可能なすべての内部リソースを有することを示す部分応答を提供するスヌーパ２２２、２３６は、要求を「肯定する」と言われる。スヌーパ２３６の場合、スヌープされる動作を肯定する部分応答は、スヌーパ２３６における要求メモリ・ブロック、すなわち目標メモリ・ブロックのキャッシュ状態を示すことが好ましい。現在、要求を処理するために必要な利用可能なすべての内部リソースをスヌーパ２３６が有しないことを示す部分応答を提供するスヌーパ２２２、２３６は、「隠されているかもしれない」、または要求を処理することが「できない」と言われうる。このようなスヌーパ２３６は、スヌーパ２３６が利用可能なスヌープ・ロジックの欠如、または現時点においてＬ２キャッシュ・ディレクトリ３０２にアクセスすることができないことにより、上記に定義された意味において要求を「肯定する」ことができず、かつ他のマスタ２３２およびスヌーパ２２２、２３６の立場から見ると、未知のコヒーレンシー状態を有するため、「隠されているかもしれない」、または要求を処理することが「できない」。
【００２９】
ＩＩＩ．データ配送ドメイン
ブロードキャストに基づく従来のデータ処理システムは、ブロードキャスト通信を介して、キャッシュ・コヒーレンシーとデータ配送の両方を取り扱い、このブロードキャスト通信は、従来システムでは、少なくとも、システム内のすべてのメモリ・コントローラおよびキャッシュ階層に対してシステム相互接続上を送信される。他のアーキテクチャおよび類似の規模のシステムと比較すると、ブロードキャストに基づくシステムは、アクセス待ち時間の減少、ならびに共有メモリ・ブロックのより良いデータ・ハンドリングおよびコヒーレンシー管理を提供し得る。
【００３０】
ブロードキャストに基づくシステムの規模が拡大するとき、システム相互接続上のトラフィック量が増加し、システム相互接続上の通信に対して、より多くの帯域幅が必要となるため、システム規模とともにシステム・コストが急上昇することを意味する。すなわち、平均トラフィック量がｎトランザクションであるｍ個のプロセッサ・コアを有するシステムは、ｍ×ｎのトラフィック量を有し、ブロードキャストに基づくシステムのトラフィック量が、加法的にではなく乗法的に拡大することを意味する。相当大きい相互接続帯域幅に対する要件を超えてシステム規模が増大すると、アクセス待ち時間を増加させるという副次的効果をもたらす。例えば、最悪の場合には、要求されたメモリ・ブロックを共有コヒーレンシー状態で保持する最も遠く離れた下位レベル・キャッシュの結合応答待ち時間により、リード・データのアクセス待ち時間が制限される。
【００３１】
システム相互接続帯域幅要件およびアクセス待ち時間を低減するとともに、さらにブロードキャストに基づくシステムの利点を保持するために、データ処理システム１００の全体に渡って分散された複数のＬ２キャッシュ２３０が、「特殊」共有コヒーレンシー状態に、同じメモリ・ブロックのコピーを保持することを許され、この「特殊」共有コヒーレンシー状態は、これらのキャッシュが、キャッシュ間介入を用いて、要求元Ｌ２キャッシュ２３０にメモリ・ブロックを供給することを可能にする。データ処理システム１００のようなＳＭＰデータ処理システム内の共有メモリ・ブロックに対する複数のコンカレント・ソースおよび分散型ソースを実装するために、２つの課題に対処しなければならない。第１に、上述した「特殊」共有コヒーレンシー状態のメモリ・ブロックのコピーの作成を管理する規則を実装しなければならない。第２に、スヌープしているＬ２キャッシュ２３０がある場合に、どのスヌープしているＬ２キャッシュ２３０が、例えば、バス・リード動作またはバスＲＷＩＴＭ動作に応答して、要求元Ｌ２キャッシュ２３０に共有メモリ・ブロックを提供するのかを管理する規則がなければならない。
【００３２】
本発明によれば、これらの課題の両方が、データ・ソーシング・ドメインの実装を通じて対処される。特に、ドメインが、データ要求への応答に関与する１つ以上の下位レベル（例えば、Ｌ２）キャッシュを含むように定義されるＳＭＰデータ処理システム内の各ドメインは、一度に、「特殊」共有コヒーレンシー状態で特定のメモリ・ブロックを保持するただ１つのキャッシュ階層だけを含むことを許される。バス・リード型（例えば、ＲＥＡＤ、またはＲＷＩＴＭ）動作が、同じドメイン内の要求元下位レベル・キャッシュにより開始されるときに、そのキャッシュ階層が存在する場合、そのキャッシュ階層は、要求を出した下位レベル・キャッシュに要求されたメモリ・ブロックを提供する責任がある。図１のデータ処理システム１００では、多数の異なったドメイン・サイズが定義されうるが、各処理ノード１０２（すなわち、ＭＣＭ）をデータ・ソーシング・ドメインとみなすと都合が良い。このような「特殊」共有状態（すなわち、Ｓｒ）の一例が、表２を参照しながら後述される。
【００３３】
ＩＶ．コヒーレンシー・ドメイン
上述したデータ配送ドメインの実装は、データ・アクセス待ち時間を改善するが、この改善は、システム規模が拡大するときのトラフィック量のｍ×ｎ乗法性には対処していない。トラフィック量を減少させるとともに、さらにブロードキャストに基づくコヒーレンシー機構を保持するために、本発明の好ましい実施形態は、コヒーレンシー・ドメインを追加的に実装する。このコヒーレンシー・ドメインは、上述したデータ配送ドメインのように、各処理ノード１０２が個々のコヒーレンシー・ドメインを形成するように実装することができる（しかし、そうされることが要求されているわけではない）。データ配送ドメインおよびコヒーレンシー・ドメインは、同一の広がりを有しうるが、そうであることを要求されているわけではなく、データ処理システム１００の代表的動作について説明する目的で、以下では、データ配送ドメインおよびコヒーレンシー・ドメインが、処理ノード１０２により定義された境界を有するものとする。
【００３４】
コヒーレンシー・ドメインの実装は、すべてのコヒーレンシー・ドメインよりも少数で要求を処理できる場合には、システム相互接続１１０上のドメイン間ブロードキャスト通信を制限することにより、システム・トラフィックを抑える。例えば、処理ノード１０２ａの処理装置１０４ａが、バス・リード動作を発行するとき、処理装置１０４ａは、他のコヒーレンシー・ドメイン（例えば、処理ノード１０２ｂ）内の関与装置に対してではなく、それ自身のコヒーレンシー・ドメイン（例えば、処理ノード１０２ａ）内のすべての関与装置に対してバス・リード動作を最初にブロードキャストすることを選択することができる。本明細書において、動作のマスタと同じコヒーレンシー・ドメイン内のそれらの関与装置だけに対して送信されるブロードキャスト動作は、「ローカル動作」と定義される。処理装置１０４ａのコヒーレンシー・ドメインの中でローカル・バス・リード動作を処理できるとき、バス・リード動作のさらなるブロードキャストは、実行されない。しかしながら、ローカル・バス・リード動作に対する部分応答および結合応答が、処理ノード１０２ａのコヒーレンシー・ドメインの中だけではバス・リード動作を処理できないことを示すとき、ローカル・コヒーレンシー・ドメインに加えて、１つ以上の付加的なコヒーレンシー・ドメインを含むようにブロードキャスト範囲を広げることができる。
【００３５】
基本的な実装では、ローカル・コヒーレンシー・ドメインだけを含む「ローカル」範囲、およびＳＭＰデータ処理システム内の他のすべてのコヒーレンシー・ドメインを含む「グローバル」範囲の２つのブロードキャスト範囲が使用される。したがって、本明細書において、ＳＭＰデータ処理システム内のすべてのコヒーレンシー・ドメインに対して送信される動作は、「グローバル動作」と定義される。動作を提供するために、ローカル動作が使用されるか、またはより拡張的な範囲の動作（例えば、グローバル動作）が使用されるかにかかわらず、キャッシュ・コヒーレンシーは、ＳＭＰデータ処理システム内のすべてのコヒーレンシー・ドメインの全体で保持されることが重要である。ローカルおよびグローバル動作の例は、米国特許出願第１１／０５５，３０５号に詳述されている。
【００３６】
好ましい実施形態では、動作の範囲は、一実施形態では、１ビットのフラグを含みうるローカル／グローバル範囲標識（信号）で、バス動作において示される。処理装置１０４内の転送ロジック２１２は、動作におけるローカル／グローバル範囲標識（信号）の設定に基づいて、ローカル相互接続１１４を介して受信される動作をシステム相互接続１１０上に転送すべきか否かを判断する。
【００３７】
本明細書では、コヒーレンシー・ドメイン（または、処理ノード）が、メモリ・ブロックのＬＰＣを含むとき、コヒーレンシー・ドメインは、メモリ・ブロックの「ホーム」コヒーレンシー・ドメイン（または、「ホーム」ノード）と言われる。
【００３８】
Ｖ．ドメイン標識
不要なローカル動作の発行を制限して、それにより動作上の待ち時間を減少させて、かつローカル相互接続上の付加的な帯域幅を保存するために、本発明は、１つのメモリ・ブロックあたり１つのドメイン標識を付与する。このドメイン標識は、関連するメモリ・ブロックのコピーが、ローカル・コヒーレンシー・ドメイン以外でキャッシュされているか否かを示す。例えば、図５は、本発明のドメイン標識の第１の代表的実装例を示す。図５に示したように、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）で実装されうるシステム・メモリ１０８は、複数のメモリ・ブロック５００を格納する。システム・メモリ１０８は、各メモリ・ブロック５００と関連して、メモリ・ブロック５００内に、もし誤りがあれば、それを訂正するために利用される誤り訂正符号（ＥＣＣ）５０２、およびドメイン標識（Ｄ）５０４を保存する。本発明のいくつかの実施形態では、ドメイン標識５０４は、特定のコヒーレンシー・ドメインを識別する（すなわち、コヒーレンシー・ドメインまたはノードＩＤを指定する）ことができるが、以下では、ドメイン標識５０４は、関連するメモリ・ブロック５００が、メモリ・ブロック５００に対するＬＰＣとして機能するメモリ・コントローラ２０６と同じコヒーレンシー・ドメインの中だけでキャッシュされるとき、（例えば、「ローカル」を示すために‘１’に）セットされる１ビットの標識であると仮定される。それ以外の場合には、ドメイン標識５０４は、（例えば、「グローバル」を示すために‘０’に）リセットされる。「ローカル」を示すためのドメイン標識５０４を間違って「グローバル」に設定してしまうと、いかなるコヒーレンシー・エラーも誘発しないが、動作のグローバル・ブロードキャストを不必要に実行するかもしれない。
【００３９】
動作に応答してメモリ・ブロックを提供するメモリ・コントローラ２０６（およびＬ２キャッシュ２３０）は、要求メモリ・ブロックと共に、関連するドメイン標識５０４を送信する。
【００４０】
ＶＩ．代表的コヒーレンシー・プロトコル
本発明は、上述したデータ配送およびコヒーレンシー・ドメインの実装を利用するように設計されたキャッシュ・コヒーレンシー・プロトコルを実装する。好ましい実施形態では、プロトコル内のキャッシュ・コヒーレンシー状態は、（１）キャッシュが、メモリ・ブロックに対するＨＰＣであるかどうかを示すことに加えて、（２）キャッシュ・コピーが、そのメモリ階層レベルのキャッシュの中で一意的であるかどうか（すなわち、システム全体で唯一のキャッシュ・コピーであるかどうか）、（３）キャッシュが、メモリ・ブロックに対する要求のマスタに、そのメモリ・ブロックのコピーを提供できるかどうか、およびいつ提供できるか、（４）メモリ・ブロックのキャッシュ・イメージが、ＬＰＣ（システム・メモリ）における対応するメモリ・ブロックと整合するかどうか、ならびに（５）リモート・コヒーレンシー・ドメイン内の他のキャッシュが、一致アドレスを有するキャッシュ・エントリを保持する（可能性がある）かどうかを示す。これらの５つの属性は、例えば、下表２にまとめられた公知のＭＥＳＩ（Ｍｏｄｉｆｉｅｄ、Ｅｘｃｌｕｓｉｖｅ、Ｓｈａｒｅｄ、Ｉｎｖａｌｉｄ（変更、排他、共有、無効））プロトコルの代表的変形で表現されうる。
【００４１】
【表２】
2007257631.tif 000004
【００４２】
Ａ．  Ｉｇ状態
メモリ・ブロックが、局所的にだけキャッシュされていることが知られているか否かを判断するために、ＬＰＣにアクセスしなければならないのを回避するために、メモリ・ブロックのコピーがコヒーレンシー・ドメイン内にキャッシュされたまま残っていない場合には、Ｉｇ（無効グローバル）のコヒーレンシー状態が、ドメイン表示を保持するために利用される。本明細書において、Ｉｇ状態は、（１）キャッシュ・アレイ内の関連するメモリ・ブロックが無効であること、（２）キャッシュ・ディレクトリ内のアドレス・タグが有効であること、および（３）アドレス・タグにより特定されるメモリ・ブロックのコピーが、ホーム・コヒーレンシー・ドメイン以外のコヒーレンシー・ドメイン内にキャッシュされる可能性があることを示すキャッシュ・コヒーレンシー状態と定義される。Ｉｇ表示は、不正確であることが好ましく、すなわち、Ｉｇ表示は、コヒーレンシーに違反しない限りにおいて不正確であってもよいことを意味する。
【００４３】
Ｉｇ状態は、ホーム・コヒーレンシー・ドメイン内の下位レベル・キャッシュが、排他的アクセス要求（例えば、バスＲＷＩＴＭ動作）に応じて他のコヒーレンシー・ドメイン内の要求元に、要求メモリ・ブロックを提供することに応答して、当該キャッシュ内に形成される。
【００４４】
Ｉｇ状態を含むキャッシュ・ディレクトリ・エントリは、潜在的に有用性のある情報を有するため、少なくともいくつかの実装では、Ｉ状態のエントリよりもＩｇ状態のエントリを優先的に保持することが好ましい（例えば、置換用キャッシュ・エントリを選択するために利用される最長時間未使用（ＬＲＵ）アルゴリズムを変更することにより）。Ｉｇディレクトリ・エントリがキャッシュ内に保持されるため、いくつかのＩｇエントリは、時間がたつにつれて「古く」なる可能性があり、その排他的アクセス要求がＩｇ状態の形成を引き起こしたキャッシュは、Ｉｇ状態のメモリ・ブロックのアドレス・タグを保持するキャッシュに対して通知することなく、メモリ・ブロックのそのコピーの割当てを解除するか、またはライト・バックしうる。このような場合には、ローカル動作の代わりに、グローバル動作が発行されるべきであると間違って示してしまう「古くなった」Ｉｇ状態は、いかなるコヒーレンシー・エラーも引き起こさないであろうが、ただ、通常であればローカル動作を利用して処理されうるいくつかの動作を、グローバル動作として発行させるに過ぎないであろう。このような非能率の発生は、「古くなった」Ｉｇキャッシュ・エントリの最終的な置換により、その継続が制限されるであろう。
【００４５】
いくつかの規則が、Ｉｇキャッシュ・エントリの選択および置換を管理する。第１に、キャッシュが置換用キャストアウト（追い出し）項目としてＩｇエントリを選択するとき、システム・メモリ１０８内の対応するドメイン標識５０４を更新するために、（Ｉ、ＩｎまたはＩｇｐエントリが選択される場合とは異なり）Ｉｇエントリのキャストアウトが実行される。第２に、メモリ・ブロックをキャッシュにロードさせる要求が、その同じキャッシュ内のＩｇキャッシュ・エントリとヒットするとき、キャッシュは、Ｉｇヒットをキャッシュ・ミスとして扱うとともに、選択されたキャストアウト項目としてＩｇエントリに対してキャストアウト動作を実行する。このようにしてキャッシュは、キャッシュ・ディレクトリ内に同じアドレス・タグの２つのコピーを置くことを回避する。第３に、Ｉｇ状態のキャストアウトは、ローカル・コヒーレンシー・ドメインの範囲に限定されたローカル専用動作として実行されることが好ましい。第４に、Ｉｇ状態のキャストアウトは、ドメイン表示がＬＰＣ内のドメイン標識５０４にライト・バックされるデータレス・アドレス専用動作として実行されることが好ましい。
【００４６】
メモリ・ブロックの有効なコピーが、ホーム・コヒーレンシー・ドメイン内にキャッシュされたまま残っていないときでも、本発明のＩｇ状態の実装は、ホーム・コヒーレンシー・ドメイン内にメモリ・ブロックに対するキャッシュされたドメイン標識を保持することにより通信効率を向上させる。後述するように、Ｉｇ状態により提供されるキャッシュ・ドメイン表示は、関連するメモリ・ブロックを対象とする動作に対する相互接続ファブリック上のグローバル・ブロードキャスト範囲を予測するために利用されうる。
【００４７】
Ｂ．Ｉｇｐ状態
メモリ・ブロックのコピーが非ホーム・コヒーレンシー・ドメイン内にキャッシュされたまま残っていない場合には、Ｉｇｐ（無効グローバル予測専用）のコヒーレンシー状態が、キャッシュ・ドメイン表示を保持するために利用される。本明細書において、Ｉｇｐ状態は、（１）キャッシュ・アレイ内の関連するメモリ・ブロックが無効であること、（２）キャッシュ・ディレクトリ内のアドレス・タグが有効であること、（３）現在のコヒーレンシー・ドメインがホーム・コヒーレンシー・ドメインではないこと、および（４）アドレス・タグにより特定されるメモリ・ブロックのコピーが、現在の非ホーム・コヒーレンシー・ドメイン以外のコヒーレンシー・ドメイン内にキャッシュされる可能性があることを示すキャッシュ・コヒーレンシー状態と定義される。たとえ正確に形成されても、Ｉｇｐ表示は、不正確に保持されていることが好ましく、すなわち、Ｉｇｐ表示は、コヒーレンシーに違反しない限りにおいて不正確であってもよいことを意味する。
【００４８】
Ｉｇｐ状態は、非ホーム・コヒーレンシー・ドメイン内の下位レベル・キャッシュが排他的アクセス要求（例えば、ＲＷＩＴＭ要求、ＤＣＬＡＩＭ要求、ＤＣＢＺ要求、ＫＩＬＬ要求、ＷＲＩＴＥ要求、またはＰＡＲＴＩＡＬ  ＷＲＩＴＥ要求）に応じて、他のコヒーレンシー・ドメイン内の要求元に対して、要求メモリ・ブロックのコヒーレンシー所有権を提供することに応答して、当該キャッシュ内に形成される。
【００４９】
Ｉｇｐ状態を含むキャッシュ・ディレクトリ・エントリは、潜在的に有用性のある情報を有するため、少なくともいくつかの実装では、Ｉ状態のエントリがもしある場合には、そのＩ状態のエントリよりもＩｇ状態のエントリを優先的に保持することが好ましい（例えば、置換用キャッシュ・エントリを選択するために利用される最長時間未使用（ＬＲＵ）アルゴリズムを変更することにより）。Ｉｇｐディレクトリ・エントリがキャッシュ内に保持されるため、いくつかのＩｇｐエントリは、時間がたつにつれて「古く」なる可能性があり、メモリ・ブロックのコピーが、Ｉｇｐ状態のメモリ・ブロックのアドレス・タグを保持するキャッシュによるスヌープなしに、コヒーレンシー・ドメインに戻りうる。このような場合には、ローカル動作の代わりに、グローバル動作が発行されるべきであると間違って示してしまう「古くなった」Ｉｇｐ状態は、いかなるコヒーレンシー・エラーも引き起こさないであろうが、ただ、通常であればローカル動作を利用して処理されうるいくつかの動作を、グローバル動作として発行させるに過ぎないであろう。このような非能率の発生は、「古くなった」Ｉｇｐキャッシュ・エントリの最終的な置換により、その継続が制限されるであろう。
【００５０】
Ｉｇエントリの取り扱いと対照的に、例えば、置換アルゴリズム（例えば、ＬＲＵ）に基づいて、置換用キャストアウト項目としてＩｇｐエントリを選択することに応答して、またはメモリ・ブロックをキャッシュにロードさせる要求が、その同じキャッシュ内のＩｇｐキャッシュ・エントリとヒットするという理由では、Ｉｇｐエントリのキャストアウトは実行されない。代わりに、Ｉｇｐエントリは単に割当てを解除される。Ｉｇｐエントリが、基本的ドメイン標識５０４のキャッシュされ、かつ変更されうるコピーを保持しないという理由で、キャストアウトされることはない。
【００５１】
メモリ・ブロックの有効なコピーが、非ホーム・コヒーレンシー・ドメイン内にキャッシュされたまま残っていないときでも、本発明のＩｇｐ状態の実装は、範囲予測のために、非ホーム・コヒーレンシー・ドメイン内にメモリ・ブロックに対するキャッシュ・ドメイン標識を保持することにより通信効率を向上させる。
【００５２】
Ｃ．Ｉｎ状態
本明細書において、Ｉｎ状態は、（１）キャッシュ・アレイ内の関連するメモリ・ブロックが無効であること、（２）キャッシュ・ディレクトリ内のアドレス・タグが有効であること、および（３）アドレス・タグにより特定されるメモリ・ブロックのコピーが、ローカル・コヒーレンシー・ドメイン内の１つ以上の他のキャッシュ階層によってのみキャッシュされる可能性が高いことを示すキャッシュ・コヒーレンシー状態と定義される。Ｉｎ表示は、不正確であることが好ましく、すなわち、Ｉｎ表示は、コヒーレンシーに違反しない限りにおいて不正確であってもよいことを意味する。Ｉｎ状態は、下位レベル・キャッシュが、排他的アクセス要求（例えば、バスＲＷＩＴＭ動作）に応じて、同じコヒーレンシー・ドメイン内の要求元に対して、要求メモリ・ブロックを提供することに応答して、当該キャッシュ内に形成される。
【００５３】
Ｉｎ状態を含むキャッシュ・ディレクトリ・エントリは、潜在的に有用性のある情報を有するため、少なくともいくつかの実装では、Ｉ状態のエントリよりもＩｎ状態のエントリを優先的に保持することが好ましい（例えば、置換用キャッシュ・エントリを選択するために利用される最長時間未使用（ＬＲＵ）アルゴリズムを変更することにより）。Ｉｎディレクトリ・エントリがキャッシュ内に保持されるため、いくつかのＩｎエントリは、時間がたつにつれて「古く」なる可能性があり、その排他的アクセス要求がＩｎ状態の形成を引き起こしたキャッシュは、それ自身で、Ｉｎ状態のメモリ・ブロックのアドレス・タグを保持するキャッシュに対して通知することなく、リモート・コヒーレンシー・ドメインに対して、メモリ・ブロックの共有コピーを供給しうる。このような場合には、グローバル動作の代わりに、ローカル動作が発行されるべきであると間違って示してしまう「古くなった」Ｉｎ状態は、いかなるコヒーレンシー・エラーも引き起こさないであろうが、ただ、いくつかの動作を、グローバル動作としてではなく、最初に誤ってローカル動作として発行させるに過ぎないであろう。このような非能率の発生は、「古くなった」Ｉｎキャッシュ・エントリの最終的な置換により、その継続が制限されるであろう。好ましい実施形態では、Ｉｎコヒーレンシー状態のキャッシュ・エントリはキャストアウトを受けないが、代わりに単に置換される。したがって、Ｉｇキャッシュ・エントリとは異なり、Ｉｎキャッシュ・エントリは、システム・メモリ１０８内のドメイン標識５０４を更新するために利用されない。
【００５４】
本発明のＩｎ状態の実装は、マスタの動作のうちの１つに対するローカル範囲を選択するためにマスタにより管理されうるメモリ・ブロックに対するキャッシュ・ドメイン標識を保持することにより通信効率を向上させる。結果として、他のコヒーレンシー・ドメイン内のシステム相互接続１１０およびローカル相互接続１１４上の帯域幅は保存される。
【００５５】
Ｄ．  Ｓｒ状態
後述される動作では、Ｓｒコヒーレンシー状態の共有要求メモリ・ブロックを保持する下位レベル・キャッシュが、要求元マスタと同じドメイン内にあるか否かを判断できることは有用である。一実施形態では、要求元マスタと同じドメイン内の「ローカル」Ｓｒスヌーパの存在は、Ｓｒコヒーレンシー状態の要求されたメモリ・ブロックを保持する下位レベル・キャッシュのスヌーパの応答特性により示されうる。例えば、バス動作がドメイン境界を越えたかどうかを示す範囲標識（例えば、マスタの明示的なドメイン識別子、または単一のローカル／非ローカル範囲ビット）を、各バス動作が含むと仮定すると、Ｓｒコヒーレンシー状態の共有メモリ・ブロックを保持する下位レベル・キャッシュは、同じデータ・ソーシング・ドメイン内のマスタによる要求に対してだけ、Ｓｒ状態の要求を肯定する部分応答を提供できるとともに、他のすべての要求に対するＳ状態を示す部分応答を提供できる。このような実施形態では、応答特性を表３に示すようにまとめることができ、表３の中で、プライム（’）表記は、メモリ・ブロックの実際のキャッシュ状態と異なりうる部分応答を示すために利用されている。
【００５６】
【表３】
2007257631.tif 000005
【００５７】
上表３に示した応答特性を仮定すると、データ・ソースとして機能できるＳＭＰデータ処理システム内に分散されたメモリ・ブロックの共有コピーの個数を増加させることにより、共有データに対する平均データ待ち時間を大幅に低減できる。
【００５８】
ＶＩＩ．代表的な排他的アクセス動作
最初に図６を参照すると、本発明に基づいて、データ処理システム内のプロセッサ（ＣＰＵ）排他的アクセス（または記憶装置変更）要求を行う、代表的方法の高レベルの論理フローチャートが示されている。本明細書に示した他の論理フローチャートと同様に、図６に示したステップのうちの少なくともいくつかは、図示した順序と異なる順序で、または並行して実行されうる。
【００５９】
図６のプロセスは、Ｌ２キャッシュ２３０内のマスタ２３２がその処理装置１０４内の関連するプロセッサ・コア２００から、ＣＰＵ排他的アクセス要求（例えば、ＣＰＵデータ格納要求、またはＣＰＵキル要求など）を受信するブロック６００で始まる。ＣＰＵ要求の受信に応答して、ブロック６０２では、ＣＰＵ排他的アクセス要求内で目標アドレスにより特定される目標メモリ・ブロックが、相互接続ファブリック上にバス動作を発行することなくＣＰＵ排他的アクセス要求の処理を可能とするコヒーレンシー状態でＬ２キャッシュ・ディレクトリ３０２内に保持されているか否かをマスタ２３２が判断する。例えば、Ｌ２キャッシュ・ディレクトリ３０２が、目標メモリ・ブロックのコヒーレンシー状態がＭまたはＭｅ状態であることを示すとき、相互接続ファブリック上にバス動作を発行することなく、ＣＰＵデータ格納要求を処理することができる。ブロック６０２で、マスタ２３２が、相互接続ファブリック上にバス動作を発行することなく、ＣＰＵ排他的アクセス要求を処理できると判断するとき、ブロック６３２に示したように、ＣＰＵ要求を処理するのに必要である場合には、マスタ２３２は、Ｌ２キャッシュ・アレイ３００にアクセスする。例えば、マスタ２３２は、ＣＰＵデータ格納要求において提供されたデータを、Ｌ２キャッシュ・アレイ３００に格納できる。ブロック６３２に続いて、プロセスはブロック６３４で終了する。
【００６０】
ブロック６０２に戻ると、相互接続ファブリック上にバス動作を発行することなくＣＰＵ排他的アクセス要求の処理を可能とするコヒーレンシー状態でＬ２ディレクトリ３０２内に、目標メモリ・ブロックが保持されていないとき、ブロック６０４で、Ｌ２キャッシュ２３０内に目標メモリ・ブロックを収容するために、既存のキャッシュ・ラインのキャストアウトが必要であるか否かについて判断される。一実施形態では、ブロック６０４で、メモリ・ブロックが、ＣＰＵ排他的アクセス要求に応じて、要求元プロセッサのＬ２キャッシュ２３０から追い出すために選ばれて、かつＬ２ディレクトリ３０２内に、Ｍ、Ｔ、Ｔｅ、Ｔｎ、またはＩｇコヒーレンシー状態のいずれかであるとマークされるとき、キャストアウト動作が必要である。ブロック６０４での、キャストアウトが必要であるとの判断に応じて、ブロック６０６に示したように、キャッシュ・キャストアウト動作が実行される。同時に、ブロック６１０で、マスタ２３２は、ＣＰＵ排他的アクセス要求を処理するために発行されるべきバス動作の範囲を判断する。例えば、一実施形態では、ブロック６１０で、マスタ２３２は、単一の処理ノード１０２に範囲を制限されたローカル動作としてバス動作をブロードキャストするか、またはデータ処理システム１００内のすべての処理ノード１０２を含むグローバル動作としてバス動作をブロードキャストするかについて判断する。
【００６１】
各バス動作が、最初にローカル動作として発行されて、かつ一度だけローカル動作として発行される第１の実施形態では、ブロック６１０に示した判断は、単に、バス動作が、すでにローカル・バス動作として発行されたか否かについて、マスタにより判断することを表しうる。ローカル範囲でローカル・バス動作を再試行できる第２の他の実施形態では、ブロック６１０に示した判断は、バス動作が、すでに閾値回数よりも多く発行されたか否かについて、マスタにより判断することを表しうる。第３の他の実施形態では、ブロック６１０で行われる判断は、ローカル・バス動作が、他のコヒーレンシー・ドメイン内の処理ノードと通信を行うことなく、目標メモリ・ブロックのコヒーレンシーの解決を成功させる可能性が高いか否かについてのマスタ２３２による予測に基づきうる。例えば、関連するＬ２キャッシュ・ディレクトリ３０２が、目標アドレスをＩｎコヒーレンシー状態と関連づけるとき、マスタ２３２は、ローカル・バス動作を選択でき、関連するＬ２キャッシュ・ディレクトリ３０２が、目標アドレスをＩｇまたはＩｇｐコヒーレンシー状態と関連づけるとき、マスタ２３２は、グローバル・バス動作を選択できる。動作の発行に失敗したとき（すなわち、再試行結合応答を受信したとき）、ブロック６１０に示した判断は、さらに、例えば、ローカル・コヒーレンシー・ドメイン内のＩｇまたはＩｇｐコヒーレンシー状態のキャッシュ・ラインの存在表示などの、失敗した動作の結合応答から得られた情報を考慮に入れることができる。
【００６２】
ブロック６１０での判断に応じて、マスタ２３２は、マスタ２３２を含むローカル・コヒーレンシー・ドメイン（例えば、処理ノード１０２）の中だけで、ローカル・バスの排他的アクセス動作ブロードキャストを発行するか（ブロック６１２）、またはデータ処理システム１００内のすべてのコヒーレンシー・ドメイン内で、グローバル・バスの排他的アクセス動作ブロードキャストを発行する（ブロック６２０）。排他的アクセス動作は、少なくとも、排他的アクセス動作の種類（ＲＷＩＴＭ、ＤＣＬＡＩＭ、ＤＣＢＺ、ＫＩＬＬ、ＷＲＩＴＥ、またはＰＡＲＴＩＡＬ  ＷＲＩＴＥ）を特定するトランザクション・タイプ（Ｔタイプ）、および目標メモリ・ブロックを特定する目標アドレスを含む。その後、マスタ２３２は、ブロック６２２および６２４に示したように、動作の結合応答の受信を待つ。
【００６３】
ここでは、結合応答は、少なくとも３つの一般型、すなわち、成功、クリーンアップをともなう成功、および再試行のうちのいずれかでありうる。結合応答が再試行を示すとき、マスタ２３２は、ブロック６１２または６２０で発行された排他的アクセス動作で、目標メモリ・ブロックのコヒーレンシー所有権を取得することに失敗しており、（場合によってはブロードキャスト範囲を拡大して）動作を再発行しなければならない。したがって、説明したように、プロセスはブロック６２２からブロック６１０に戻る。マスタ２３２が、再試行を示すＣＲを受信せず、その代わりに、クリーンアップをともなう成功を示すＣＲを受信するとき、マスタ２３２は、目標メモリ・ブロックのコヒーレンシー所有権を与えられており、他のキャッシュ・メモリ２３０内に保持されている、目標メモリ・ブロックのいかなるコピーも無効にしなければならない。それを実行するために、マスタ２３２は、ブロック６２６に示したように、選択範囲（例えば、ローカルまたはグローバル）のバックグラウンド・キル（ＢＫ）動作を開始する。少なくともいくつかの実施形態では、マスタ２３２は、排他的アクセス動作のＣＲに含まれる情報に基づいて範囲を選択できる。ブロック６２６に続いて、ブロック６２４で、バックグラウンド・キル動作のＣＲがテストされる。排他的アクセス動作またはバックグラウンド・キル動作のＣＲが成功を示すブロック６２４での判断に応じて、マスタ２３２は、目標メモリ・ブロックに対する排他的アクセスを取得することに成功した。その後、マスタ２３２は、ブロック６３０に示した範囲選択を行うために利用される予測子（例えば、コヒーレンシー状態またはヒストリーに基づく予測子）を更新する。さらに、ブロック６３２に示したように、マスタ２３２はＣＰＵ要求を処理する。その後、ブロック６３４でプロセスは終了する。
【００６４】
このようにして、同じコヒーレンシー・ドメイン内のプロセスとそれらのデータの間の親和性を仮定すると、ＣＰＵ要求は、要求元マスタのコヒーレンシー・ドメインの範囲に限定された、または完全なグローバル範囲よりも狭い他の制限範囲のコヒーレンシー・ドメインの範囲に限定されたブロードキャスト通信を利用して、頻繁に処理されうる。したがって、上述したようなデータ配送ドメインおよびコヒーレンシー・ドメインの組み合わせは、ブロードキャスト通信の範囲を制限することにより、データ・アクセス待ち時間を改善するだけでなく、システム相互接続（および、他のローカル相互接続）上のトラフィックも抑制する。
【００６５】
ここで図７〜図９を参照すると、Ｌ２キャッシュ・スヌーパ２３６のようなキャッシュ・スヌーパが、本発明に基づいて、排他的アクセス動作（ストレージ変更動作とも呼ばれる）を処理する、代表的方法の高レベルの論理フローチャートが示されている。排他的アクセス要求は、上述したＲＷＩＴＭ動作、ＤＣＬＡＩＭ動作、ＤＣＢＺ動作、ＫＩＬＬ動作、ＷＲＩＴＥ動作、およびＰＡＲＴＩＡＬ  ＷＲＩＴＥ動作を含む。
【００６６】
図示したように、プロセスは、Ｌ２キャッシュ・スヌーパ２３６によるそのローカル相互接続１１４上の要求の受信に応答して、図７のブロック７００で始まる。要求の受信に応答して、ブロック７０２で、スヌーパ２３６は、例えば、要求内のトランザクション・タイプ（Ｔタイプ）フィールドを参照することにより、要求が排他的アクセス動作であるか否かを判断する。要求が排他的アクセス動作ではないとき、スヌーパ２３６は、ブロック７０４に示したように他の処理を実行して、ブロック７４０でプロセスは終了する。しかしながら、ブロック７０２で、要求が排他的アクセス動作であるとスヌーパ２３６が判断するとき、ブロック７０６で、スヌーパ２３６は、現在スヌーパ２３６が、排他的アクセス動作に十分に応答できるか否か（例えば、スヌーパ２３６が、利用可能なスヌープ・ロジック、およびそのＬ２キャッシュ・ディレクトリ３０２に対する現在のアクセスを有するかどうか）をさらに判断する。スヌーパ２３６が、現在、ドメイン・クエリー要求に十分に応答できないとき、スヌーパ２３６は、ブロック７０８に示したように「他を再試行」と示す部分応答（ＰＲ）を提供して、ブロック７４０で排他的アクセス動作の処理は終了する。
【００６７】
スヌーパ２３６が排他的アクセス動作に十分に応答できると仮定すると、ブロック７１０で、スヌーパ２３６は、関連するＬ２キャッシュ・ディレクトリ３０２が、目標アドレスを含むメモリ・ブロックについてタグ有効、データ無効コヒーレンシー状態（例えば、Ｉｎ、Ｉｇ、Ｉｇｐ、Ｉ）を示すか否かを判断する。関連するＬ２キャッシュ・ディレクトリ３０２が、目標アドレスを含むメモリ・ブロックについてタグ有効、データ無効コヒーレンシー状態（例えば、Ｉｎ、Ｉｇ、Ｉｇｐ、Ｉ）を示すとき、プロセスは、ページ・コネクタＡを介して、後で詳述する図８に進む。しかしながら、関連するＬ２キャッシュ・ディレクトリ３０２が、データ有効コヒーレンシー状態（Ｍｘ、Ｔｘ、またはＳｘ）を示すとき、プロセスは分岐して、ブロック７１２およびそれに続く、スヌーパ２３６により実行されるコヒーレンシー状態更新処理を示すブロックに進むとともに、同時並行的に、ページ・コネクタＢを介して、スヌーパ２３６のデータ配送アクティビティおよびデータ保護アクティビティがもし行われる場合には、それらを示す図９に進む。
【００６８】
最初にブロック７１２を参照すると、スヌーパ２３６は、そのＬ２キャッシュ・ディレクトリ３０２から読み取られたコヒーレンシー状態を参照することにより、スヌーパ２３６が、スヌープされた要求の目標アドレスにより特定される目標メモリ・ブロックに対するＨＰＣにあるか否かを判断する。スヌーパ２３６が、スヌープされた要求の目標アドレスにより特定される目標メモリ・ブロックに対するＨＰＣにないとき、ブロック７１４で、スヌーパ２３６は、スヌープされた要求のＴタイプが、スヌープされた要求がバックグラウンド・キル要求であることを示すか否かをオプションで判断する。スヌープされた要求のＴタイプが、スヌープされた要求がバックグラウンド・キル要求であることを示さないとき、プロセスは、後述されるブロック７２０に進む。
【００６９】
ブロック７１４での肯定的判断に応答して、スヌーパは、最初にバックグラウンド・キル要求を発行したデバイス（例えば、Ｌ２キャッシュ２３０）と同じコヒーレンシー・ドメイン内に、スヌーパ２３６があるか否かに基づいて（ブロック７１６）、結合応答を受信する前に、スヌーパのＬ２キャッシュ・ディレクトリ３０２内の目標アドレスのコヒーレンシー状態を更新することを許可される（しかし、更新することを要求されてはいない）。例えば、スヌーパ２３６は、バックグラウンド・キル要求内に含まれる範囲ビットを調べることにより、ブロック７１６に示された判断を行うことができる。ブロック７１６で、スヌーパ２３６は、バックグラウンド・キル要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ２３６があると判断するとき、バックグラウンド・キル要求の目標アドレスに対するコヒーレンシー状態を、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩｎコヒーレンシー状態に更新する（ブロック７２４）。上述したように、Ｉｎコヒーレンシー状態は、メモリ・ブロックに対するＨＰＣが、ローカル・コヒーレンシー・ドメイン（必ずしも、ホーム・コヒーレンシー・ドメインではない）内にあり、かつメモリ・ブロックを要求する後続のローカル動作が成功しうるという不正確な表示を与える。一方、ブロック７１６で、スヌーパ２３６が、バックグラウンド・キル要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ２３６がないと判断するとき、プロセスは、ブロック７３４に進む。ブロック７３４は、スヌーパ２３６が目標アドレスのコヒーレンシー状態を、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩｇｐに更新することを示す。上述したように、Ｉｇｐコヒーレンシー状態は、目標メモリ・ブロックに対するＨＰＣが、リモート・コヒーレンシー・ドメイン内にあり、かつ目標メモリ・ブロックを要求する後続の動作がグローバルであるべきであるという不正確な表示を与える。ブロック７２４またはブロック７３４に続いて、ブロック７４０でプロセスは終了する。
【００７０】
ここでブロック７２０を参照すると、オプションのブロック７１４で否定的判断がなされるとき、またはブロック７１４で示された判断が実行されないとき、スヌーパ２３６は、排他的アクセス要求に対する結合応答の受信を待つ。ブロック７２０での結合応答の受信に応答して、ブロック７２６で、スヌーパ２３６は、排他的アクセス要求に対する結合応答が再試行を示すか否かを判断する。排他的アクセス要求に対する結合応答が再試行を示さないとき、排他的アクセス要求は成功し、成功ＣＲ、またはクリーンアップをともなう成功ＣＲを有しており、プロセスは、上述したブロック７１６に進む。しかしながら、排他的アクセス要求に対する結合応答が再試行を示すとき（すなわち、排他的アクセス要求が成功しなかったとき）、スヌーパ２３６は、ブロック７２８に示したように、単に、目標アドレスのコヒーレンシー状態を、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩに更新する。スヌーパ２３６に対する目標アドレスのＨＰＣの相対的位置は、失敗した排他的アクセス動作に対する結合応答では示されないため、Ｉｇ、ＩｇｐまたはＩｎ状態の代わりに、Ｉコヒーレンシー状態が使用される。ブロック７２８に続いて、プロセスはブロック７４０で終了する。
【００７１】
ブロック７１２に戻ると、スヌーパ２３６が目標アドレスに対するＨＰＣにあるとのスヌーパ２３６の判断に応じて、スヌーパ２３６は、ブロック７１８に示したように、排他的アクセス要求に対する結合応答の受信を待つ。スヌーパ２３６による結合応答の受信に応答して、プロセスはブロック７２２に進む。ブロック７２２は、スヌーパ２３６が、最初に排他的アクセス要求を発行したデバイス（例えば、Ｌ２キャッシュ２３０）と同じコヒーレンシー・ドメイン内にあるか否かを、スヌーパ２３６が判断することを示す。上述したように、スヌーパ２３６は、排他的アクセス要求内に含まれる範囲ビットを調べることにより、ブロック７２２に示された判断を行うことができる。ブロック７２２で、スヌーパ２３６は、排他的アクセス要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ２３６があると判断するとき、目標アドレスに対するコヒーレンシー状態を、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩｎコヒーレンシー状態に更新する（ブロック７２４）。上述したように、Ｉｎコヒーレンシー状態は、メモリ・ブロックに対するＨＰＣが、ローカル・コヒーレンシー・ドメイン（必ずしも、ホーム・コヒーレンシー・ドメインではない）内にあり、かつメモリ・ブロックを要求する後続のローカル動作が成功しうるという不正確な表示を与える。一方、ブロック７２２で、スヌーパ２３６は、排他的アクセス要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ２３６がないと判断するとき、目標アドレスのホーム・システム・メモリ１０８と同じコヒーレンシー・ドメイン内にスヌーパ２３６があるか否かに基づいて（ブロック７３０）、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内で目標アドレスのコヒーレンシー状態を更新する。１つの好ましい実施形態では、ブロック７３０に示した判断は、ＣＲの中のＭｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ  Ｌｏｃａｌ  ｔｏ  Ｓｎｏｏｐｅｒ（ＭＣＬＳ）（スヌーパに対してローカルにあるメモリ・コントローラ）フィールドの状態に基づいて行われる。ＣＲのＭＣＬＳフィールドの状態は、図１２に示した、後述の方法に基づいて設定されうる。
【００７２】
ＣＲのＭＣＬＳフィールドがアサートされていない、すなわち、スヌーパ２３６が目標アドレスのホーム・システム・メモリ１０８と同じコヒーレンシー・ドメイン内にはないとのブロック７３０での判断に応じて、スヌーパ２３６は、目標アドレスのコヒーレンシー状態を、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩｇｐに更新する（ブロック７３４）。さもなければ、スヌーパ２３６は、目標アドレスに対するコヒーレンシー状態を、Ｉｇに更新する（ブロック７３２）。ＩｇｐおよびＩｇコヒーレンシー状態は共に、目標メモリ・ブロックに対するＨＰＣが、リモート・コヒーレンシー・ドメイン内にあり、かつ目標メモリ・ブロックを要求する後続の動作がグローバルであるべきであるという不正確な表示を与える。ただし、Ｉｇｐコヒーレンシー状態は、システム・メモリ１０８への後続のキャストアウトを受けないが、単に割当てを解除される。ブロック７３２またはブロック７３４に続いて、ブロック７４０でプロセスは終了する。
【００７３】
ここで図８を参照すると、スヌーパ２３６がそのＬ２キャッシュ・ディレクトリ３０２内でデータ無効コヒーレンシー状態（例えば、Ｉｎ、Ｉｇ、Ｉｇｐ、またはＩ）を有する目標アドレスを含む排他的アクセス要求に対するスヌーパ２３６の応答が示されている。プロセスは、ページ・コネクタＡを介して図７から続き、次に、スヌーパ２３６が排他的アクセス要求に対する適切な部分応答を提供することを示すブロック７４２に進む。いくつかの実施形態では、ブロック７４２で提供される部分応答（ＰＲ）は、スヌーパ２３６を含むＬ２キャッシュ２３０が、目標メモリ・ブロックのデータ有効コピーを保持していないことを示すために、Ｉｇ以外のすべてのＩｘコヒーレンシー状態に対してヌルでありうる。Ｉｇコヒーレンシー状態では、部分応答は、目標アドレスに対するＨＰＣが、スヌーパ２３６を含むコヒーレンシー・ドメインの外にある可能性が高いことを示す再試行の形である。他の実施形態では、ブロック７４２で作られる非Ｉｇコヒーレンシー状態に対する部分応答は、ローカル・コヒーレンシー状態（ＩｇｐまたはＩｎ）で示される範囲情報を反映する範囲ヒントをさらに提供できる。ブロック７４２に続いて、プロセスは、ブロック７４４で分岐して、目標アドレスに対するローカル・コヒーレンシー状態がＩｇであるとき、ブロック７４６に進み、目標アドレスに対するローカル・コヒーレンシー状態がＩｇではないとき、ブロック７５０に進む。
【００７４】
ブロック７４６で、スヌーパ２３６は、スヌープされた要求のＴタイプが、スヌープされた要求がバックグラウンド・キル要求であることを示すか否かをオプションで判断する。スヌープされた要求のＴタイプが、スヌープされた要求がバックグラウンド・キル要求であることを示さないとき（または、オプションの判断が行われないとき）、プロセスは、後述されるブロック７４７に進む。オプションのブロック７４６で、スヌープされた要求がバックグラウンド・キル要求であると判断されるとき、ブロック７４９で、最初にバックグラウンド・キル要求を発行したデバイス（例えば、Ｌ２キャッシュ２３０）と同じコヒーレンシー・ドメイン内に、スヌーパ２３６があるか否かについて、さらなる判断が行われる。例えば、スヌーパ２３６は、バックグラウンド・キル要求内に含まれる範囲ビットを調べることにより、ブロック７４９に示された判断を行うことができる。ブロック７４９で、スヌーパ２３６が、バックグラウンド・キル要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ２３６があると判断するとき、プロセスは、ページ・コネクタＤを介して、ブロック７５７に進み、このブロック７５７は、スヌーパ２３６がバックグラウンド・キル要求の目標アドレスに対するコヒーレンシー状態を、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩｎコヒーレンシー状態に更新することを示す。上述したように、Ｉｎコヒーレンシー状態は、メモリ・ブロックに対するＨＰＣが、ローカル・コヒーレンシー・ドメイン（必ずしも、ホーム・コヒーレンシー・ドメインではない）内にあり、かつメモリ・ブロックを要求する後続のローカル動作が成功しうるという不正確な表示を与える。その後、ブロック７６０でプロセスは終了する。一方、ブロック７４９で、スヌーパ２３６が、バックグラウンド・キル要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ２３６がないと判断するとき、プロセスは、ブロック７４７に進む。
【００７５】
ブロック７４７は、スヌーパ２３６がスヌープされた要求に対する結合応答（ＣＲ）の受信を待つことを示す。スヌープされた要求に対する結合応答の受信に応答して、ブロック７４８で、結合応答が再試行を示すか否かの判断が行われる。結合応答が再試行を示すとき、スヌープされた動作は成功しておらず、スヌーパ２３６は目標アドレスに対するスヌーパ２３６のコヒーレンシー状態を更新しない。したがって、プロセスは、ページ・コネクタＣを介して進み、ブロック７６０で終了する。しかしながら、スヌープされた要求に対する結合応答が再試行を示さないとき、ブロック７５８で、スヌーパ２３６は、スヌープされた要求内に含まれる範囲ビットを参照することにより、スヌープされた要求を発行したマスタ２３２と同じコヒーレンシー・ドメイン（例えば、処理ノード１０２）内にスヌーパ２３６があるか否かを判断する。スヌープされた要求を発行したマスタ２３２と同じコヒーレンシー・ドメイン（例えば、処理ノード１０２）内にスヌーパ２３６があるとき、スヌーパ２３６は、バックグラウンド・キル要求の目標アドレスに対するコヒーレンシー状態を、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩｎコヒーレンシー状態に更新する（ブロック７５７）。その後、ブロック７６０でプロセスは終了する。
【００７６】
ブロック７５８に戻ると、スヌープされた要求を発行したマスタ２３２と同じコヒーレンシー・ドメイン内にスヌーパ２３６がないとのスヌーパ２３６による判断に応答して、スヌーパ２３６は、目標アドレスのホーム・システム・メモリ１０８と同じコヒーレンシー・ドメイン内にスヌーパ２３６があるか否かを判断する（ブロック７５９）。１つの好ましい実施形態では、ブロック７５９に示した判断は、ＣＲの中のＭＣＬＳフィールドの状態に基づいて行われる。ブロック７５９で、スヌーパ２３６が、目標アドレスのホーム・システム・メモリ１０８と同じコヒーレンシー・ドメイン内にスヌーパ２３６があると判断するとき、スヌーパ２３６は、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩｇコヒーレンシー状態への更新を行わず、ブロック７６０でプロセスは終了する。この場合、システム・メモリ１０８内の関連するドメイン標識５０４の状態を更新するために、Ｉｇコヒーレンシー状態が必要とされうるため、コヒーレンシー状態の更新を行わない。しかしながら、ブロック７５９で、スヌーパ２３６が否定的判断を行うとき、スヌーパ２３６は、バックグラウンド・キル要求の目標アドレスに対するコヒーレンシー状態を、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩｇｐコヒーレンシー状態に更新する（ブロック７５６）。コヒーレンシー状態が既にＩｇｐであるとき、スヌーパ２３６の実装の複雑さに応じて、コヒーレンシー状態の更新は、実行しても、しなくてもよい。上述したように、Ｉｇｐコヒーレンシー状態は、目標メモリ・ブロックに対するＨＰＣが、リモート・コヒーレンシー・ドメイン内にあり、かつ目標メモリ・ブロックを要求する後続の動作がグローバルであるべきであるという不正確な表示を与える。ブロック７５６に続いて、ブロック７６０でプロセスは終了する。
【００７７】
ここでブロック７５０を参照すると、スヌープされた要求の目標アドレスに対するローカル・コヒーレンシー状態がＩｇではないとき、スヌーパ２３６は、スヌーパ２３６がスヌープされた要求に割当てられる保有期間を短縮するために、スヌープされた要求のＣＲを参照することなく、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内の目標アドレスのＩｘコヒーレンシー状態をオプション更新できる。あるいは、スヌーパ２３６は、ＣＲに応答して、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内の目標アドレスのＩｘコヒーレンシー状態を更新できる。更新を実行するためにＣＲを待つことは、スヌープされた要求のマスタ２３２が目標アドレスのコヒーレンシー所有権を取得することに成功したかどうかを、ＣＲを受信する前にスヌーパ２３６は予測できないという点で、精度向上に対する保有持続時間の性能トレードオフを表す。スヌーパ２３６が、ＣＲを参照することなく、Ｉｘコヒーレンシー状態を更新ように実装されていると、プロセスは、直接、後述されるブロック７５５に進む。しかしながら、スヌーパ２３６が、スヌープされた要求に対するＣＲを参照して、Ｉｘコヒーレンシー状態を更新するように実装されていると、プロセスは、スヌーパ２３６が、スヌープされた要求のＴタイプを参照することにより、スヌープされた要求がバックグラウンド・キル要求であるか否かについてオプション判断を行うことを示すブロック７５１に進む。スヌープされた要求がバックグラウンド・キル要求であるとき、プロセスは、後述されるブロック７５５に進む。ブロック７５１で、スヌーパ２３６が、スヌープされた要求がバックグラウンド・キル要求ではないと判断するとき、ブロック７５２で、スヌーパ２３６は、スヌープされた要求に対するＣＲの受信を待つ。
【００７８】
結合応答の受信に応答して、ブロック７５３で、スヌーパ２３６は、排他的アクセス要求に対する結合応答が再試行を示すか否かを判断する。排他的アクセス要求に対する結合応答が再試行を示さないとき、排他的アクセス要求は成功し、成功ＣＲ、またはクリーンアップをともなう成功ＣＲを有しており、プロセスは、ブロック７５５に進む。しかしながら、排他的アクセス要求に対する結合応答が再試行を示すとき（すなわち、排他的アクセス要求が成功しなかったとき）、スヌーパ２３６は、ブロック７５４に示したように、単にオプションで、目標アドレスのコヒーレンシー状態を、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩに更新する。スヌーパ２３６に対する目標アドレスのＨＰＣの相対的位置は、失敗した排他的アクセス動作では示されないため、Ｉｇ、ＩｇｐまたはＩｎ状態の代わりに、Ｉコヒーレンシー状態が使用される。ブロック７５３での肯定的判断、またはオプションのブロック７５４に続いて、ブロック７６０でプロセスは終了する。
【００７９】
ここでブロック７５５を参照すると、スヌーパ２３６は、最初にスヌープされた要求を発行したデバイス（例えば、Ｌ２キャッシュ２３０）と同じコヒーレンシー・ドメイン内に、スヌーパ２３６があるか否かに基づいて、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内で目標アドレスのＩｘコヒーレンシー状態を更新する。例えば、スヌーパ２３６は、スヌープされた要求内に含まれる範囲ビットを調べることにより、ブロック７５５に示された判断を行うことができる。ブロック７５５で、スヌーパ２３６は、スヌープされた要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ２３６があると判断するとき、スヌープされた要求の目標アドレスに対するコヒーレンシー状態を、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩｎコヒーレンシー状態に更新する（ブロック７５７）。一方、ブロック７５５で、スヌーパ２３６は、スヌープされた要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ２３６がないと判断するとき、目標アドレスのコヒーレンシー状態を、スヌーパ２３６のＬ２キャッシュ・ディレクトリ３０２内でＩｇｐに更新する（ブロック７５６）。ブロック７５７でコヒーレンシー状態が既にＩｎであるか、またはブロック７５６でコヒーレンシー状態が既にＩｇｐであるとき、スヌーパ２３６の実装の複雑さに応じて、更新は実行しても、しなくてもよい。ブロック７５６またはブロック７５７に続いて、ブロック７６０でプロセスは終了する。
【００８０】
ここで図９を参照すると、目標メモリ・ブロックのキャッシュされたデータ有効コピーを保持するＬ２キャッシュ２３０のスヌーパ２３６のデータ配送アクティビティおよびデータ保護アクティビティがもし行われる場合には、それらが示されている。図示したように、ブロック７６１で、スヌーパ２３６は、例えば、スヌープされた要求により指定されるＴタイプを調べることにより、スヌープされた排他的アクセス動作がＲＷＩＴＭ動作であるか否かを判断する。上表１に示したように、ＲＷＩＴＭ動作は、イニシエータが、それを更新する（変更する）意図をもって、メモリ・ブロックのイメージの一意的なコピーを他の関与装置に要求する排他的アクセス動作である。ブロック７６１で、排他的アクセス動作がＲＷＩＴＭ動作であると判断されるとき、プロセスは、後述されるブロック７７０に進む。排他的アクセス動作がＲＷＩＴＭ動作ではないと判断されるとき、プロセスは、ブロック７６２に進み、このブロック７６２は、スヌーパ２３６が、例えば、関連するＬ２キャッシュ・ディレクトリ３０２内の目標メモリ・ブロックのコヒーレンシー状態を参照することにより、目標メモリ・ブロックに対するＨＰＣにスヌーパ２３６があるか否かを判断することを示す。ブロック７６２での、スヌーパ２３６が排他的アクセス動作の目標メモリ・ブロックに対するＨＰＣにないとの判断に応じて、スヌーパ２３６は、「ヌル」部分応答を出力する、または出力されるようにする（ブロック７６４）。しかしながら、ブロック７６２での、スヌーパ２３６がＨＰＣにあるとの判断に応じて、スヌーパ２３６は、排他的アクセス動作のイニシエータが、目標メモリ・ブロックに対する新しいＨＰＣとして選定されたことを確認する「ＨＰＣ＿ａｃｋ」部分応答を提供する（または、提供されるようにする）とともに、他の要求元がメモリ・ブロックのコヒーレンシー所有権を取得することを防止するために、保護ウィンドウ４０４ａを拡大する（ブロック７６６）。
【００８１】
ここでブロック７７０および後続のブロックを参照すると、スヌーパ２３６は、スヌーパ２３６の関連するＬ２キャッシュ・ディレクトリ３０２内の目標メモリ・ブロックのコヒーレンシー状態に基づいて、ＲＷＩＴＭ動作に応答する。特に、Ｌ２キャッシュ・ディレクトリ３０２内の目標メモリ・ブロックのコヒーレンシー状態が、Ｍｘ（例えば、Ｍ、またはＭｅ）であるとき、ブロック７７０および７７２に示したように、他の要求元が目標メモリ・ブロックの所有権を取得することを防止するために、保護ウィンドウ４０４ａを拡大して、「ＨＰＣ＿ａｃｋ」部分応答を提供して、要求元にメモリ・ブロックのコピーを提供する。
【００８２】
Ｌ２キャッシュ・ディレクトリ３０２内の目標メモリ・ブロックのコヒーレンシー状態がＭｘではなくＳｒであり、かつスヌーパ２３６が要求元と同じデータ・ソーシング・ドメイン（例えば、処理ノード１０２）内にあるとき、スヌーパ２３６は、ブロック７７４および７７６に示したように、保護ウィンドウ４０４ａを拡大して、「共有」部分応答を提供して、要求元にメモリ・ブロックのコピーを提供する。さもなければＬ２キャッシュ・ディレクトリ３０２内の目標メモリ・ブロックのコヒーレンシー状態が、ブロック７８０に示したように、Ｔｘ（例えば、Ｔ、Ｔｅ、Ｔｎ、またはＴｅｎ）であるとき、スヌーパ２３６は、ブロック７８２に示したように、他の要求元が目標メモリ・ブロックの所有権を取得することを防止するために、保護ウィンドウ４０４ａを拡大して、「ＨＰＣ＿ａｃｋ」部分応答を提供する。さらに、ブロック７８４および７８６に示したように、スヌーパ２３６は、応答ロジック２１０から受信された結合応答に応じて、要求元に目標メモリ・ブロックのコピーを提供できる。すなわち、このスヌーパ２３６が目標メモリ・ブロックのコピーを提供する責任がある（例えば、要求元と同じコヒーレンシー・ドメイン内のどのスヌーパ２３６も、Ｓｒ状態の目標メモリ・ブロックを保持していない）ことを結合応答が示すとき、スヌーパ２３６は、ブロック７８６に示したように、要求元に目標メモリ・ブロックのコピーを送信する。
【００８３】
再びブロック７８０を参照すると、否定的判断に応じて、スヌーパ２３６は、ブロック７９０に示したように、単に「ヌル」部分応答を提供する。ブロック７６６、７６４、７７２、７７６、７８４、７８６、および７９０のいずれかに続いて、ブロック７９２でプロセスは終了する。
【００８４】
ここで図１０を参照すると、ＩＭＣ２０６が、本発明に基づいて、スヌープされた要求に応答する、代表的プロセスの高レベルの論理フローチャートが示されている。図示したように、プロセスは、ブロック８００で始まり、その後、ブロック８０２に進み、このブロック８０２は、ＩＭＣ２０６が、ＢＡＲロジック２４０を参照することにより、スヌープされた要求の中で指定された目標アドレスにＩＭＣ２０６が責任を有するか否かを判断することを示す。スヌープされた要求の中で指定された目標アドレスにＩＭＣ２０６は責任がないと判断するとき、ＩＭＣ２０６は、スヌープされた要求にスヌーパ２２２を割当てず、ブロック８３０でプロセスは単に終了する。一方、ＩＭＣ２０６が、ブロック８０２で、目標アドレスにＩＭＣ２０６が責任を有すると判断するとき、ブロック８３２で、ＩＭＣ２０６はＬＰＣ＿Ａｃｋ部分応答を出力する。次に、ＩＭＣ２０６は、ブロック８０３で、スヌープされた要求のＴタイプを参照することにより、要求が排他的アクセス要求であるかどうかを判断する。要求が排他的アクセス要求ではないと判断するとき、ＩＭＣは、ブロック８０４に示したように他の処理を実行する。その後、ブロック８３０でプロセスは終了する。
【００８５】
ブロック８０３に戻ると、スヌープされた要求が排他的アクセス要求であるとの判断に応じて、さらに、ＩＭＣ２０６は、ブロック８１０および８２０で、ＩＭＣ２０６のスヌーパ２２２のうちの１つが、スヌープされた要求の目標アドレスに対してアクティブであるかどうか、およびスヌーパ２２２のうちの１つが、ディスパッチ可能であるかどうかをさらに判断する。ＩＭＣ２０６が、ブロック８１０で、スヌープされた要求の目標アドレスに対して、ＩＭＣ２０６のスヌーパ２２２のうちの１つが既にアクティブであると判断するとき、またはＩＭＣ２０６が、ブロック８２０で、ディスパッチ可能なスヌーパ２２２をＩＭＣ２０６が有しないと判断するとき、プロセスは、ＩＭＣ２０６がスヌープされた要求に再試行＿ＬＰＣ部分応答を送信することを示すブロック８１２に進む。その後、ブロック８３０でプロセスは終了する。
【００８６】
ＩＭＣ２０６が、ブロック８１０で、ＩＭＣ２０６のスヌーパ２２２が、スヌープされた要求の目標アドレスに対してアクティブではないと判断して、かつＩＭＣ２０６が、ブロック８２０で、ディスパッチ可能なスヌーパ２２２をＩＭＣ２０６が有すると判断するとき、プロセスは、ＩＭＣ２０６がスヌーパ２２２をディスパッチして、スヌープされた要求に対する結合応答の受信を待つことを示すブロック８２２および８２４に進む。結合応答の受信に応答して、ディスパッチされたスヌーパ２２２は、必要に応じて、システム・メモリ１０８から要求データを提供するとともに、必要に応じて、システム・メモリ１０８内のドメイン標識５０４を更新する（ブロック８２６）。その後、スヌーパは割当てを取り消されて、ブロック８３０でプロセスは終了する。
【００８７】
ここで図１１を参照すると、本発明に基づいて、排他的アクセス動作の部分応答を出力して累積する、代表的方法の高レベルの論理フローチャートが示されている。図示された実施形態では、部分応答は、単一の完全な部分応答が得られるまで、ノードごとに逐次的に、または並行して累積される。
【００８８】
図示したように、プロセスは、ブロック９００で始まり、その後、ブロック９０２に進み、このブロック９０２は、第１の処理ノード１０２内の処理装置１０４が、部分応答の中のすべてのビット・フィールドを０に初期設定することを示す。次に、ブロック９１０で、処理装置１０４内の各スヌーパ２２２、２３６は、各スヌーパの個々の部分応答と累積された部分応答との論理ＯＲを実行する。その後、処理ノード１０２内の応答ロジック２１０は、ブロック９１２で、ＨＰＣ＿ａｃｋ部分応答およびＬＰＣ＿ａｃｋ部分応答が、現在の処理ノード１０２内のＬ２キャッシュ・スヌーパ２３６およびメモリ・コントローラ・スヌーパ２２２のそれぞれによりアサートされたかどうかを判断する。アサートされたとき、目標メモリ・ブロックの以前のＨＰＣ、および目標メモリ・ブロックのホーム・システム・メモリ１０８は共に、この処理ノード１０２内に存在している。したがって、応答ロジック２１０は、ブロック９１４に示したように、アサートされたＭＣＬＳビットと累積された部分応答の中の対応するＭＣＬＳビットとの論理ＯＲ演算を実行する。
【００８９】
次に、ブロック９１６で、現在の処理ノード１０２の応答ロジック２１０は、現在の処理ノード１０２が、部分応答が累積されるべき最後の処理ノード１０２（例えば、排他的アクセス要求を開始したマスタ２３２を含む処理ノード１０２）であるか否かを判断する。現在の処理ノード１０２が、部分応答が累積されるべき最後の処理ノード１０２ではないと応答ロジック２１０が判断するとき、応答ロジック２１０は、ブロック９１８に示したように、処理を行う次の処理ノード１０２に、累積された部分応答を送信する。その後、部分応答は、ブロック９１０および後続のブロックに示したように、その次の処理ノード１０２内に累積される。一方、現在の処理ノード１０２が、部分応答が累積されるべき最後の処理ノード１０２であると応答ロジック２１０が判断するとき、プロセスは、ブロック９２０に進み、このブロック９２０は、排他的アクセス動作を開始したマスタ２３２を含む処理装置１０４の応答ロジック２１０に、累積された部分応答を提供することを示す。その後、図１１に示されたプロセスは、ブロック９２２で終了する。
【００９０】
ここで図１２を参照すると、本発明に基づいて、ＩｘのＬ２キャッシュ・スヌーパ２３６が存在するときに、応答ロジック２１０が排他的アクセス動作に対する結合応答を出力する、代表的方法の高レベルの論理フローチャートが示されている。１つの好ましい実施形態では、排他的アクセス動作に対する結合応答を出力する応答ロジック２１０は、排他的アクセス動作を発行したマスタ２３２を含む処理装置１０４の応答ロジック２１０である。なお、図１２のいくつかのブロック中にある記号「！」は否定を表している。
【００９１】
図示したように、プロセスは、累積された部分応答の受信に応答して、ブロック１０００で始まり、その後、ブロック１００２に進み、このブロック１００２は、排他的アクセス動作がグローバル動作であるか否か、かつ累積された部分応答がメモリ・コントローラ２０６からのＬＰＣ＿ａｃｋ部分応答を含むか否かの判断を示す。応答ロジック２１０が、ブロック１００２で、排他的アクセス動作がグローバル動作であり、かつ累積された部分応答がＬＰＣ＿ａｃｋ部分応答を含まなかったと判断するとき、目標アドレスに対するＬＰＣが無かったため、処理は、エラー状態によりブロック１００４で終了する。
【００９２】
一方、ブロック１００２で、応答ロジック２１０が否定的判断を行うとき、応答ロジック２１０は、ブロック１００６で、排他的アクセス動作がローカル範囲を有するかどうか、かつ累積された部分応答が、ＬＰＣ＿ａｃｋ部分応答またはＨＰＣ＿ａｃｋ部分応答を受信しなかったことを示すかどうかを判断する。ブロック１００６での肯定的判断は、目標アドレスに対するＬＰＣがローカル・コヒーレンシー・ドメイン内に無く、かつＨＰＣがローカル・コヒーレンシー・ドメイン内に無い可能性が高いため、排他的アクセス要求の範囲が拡大されるべきであることを示す。したがって、ブロック１００６での肯定的判断に応答して、プロセスは、ブロック１００９に進み、このブロック１００９は、応答ロジック２１０が再試行を示す結合応答を出力することを示す（オプションとして、範囲を拡大して要求を再発行するべきであることを示す）。図６のブロック６２２および６１０に関して上述したように、図１２のブロック１００１またはブロック１００２での肯定的判断に応答して出力された再試行ＣＲは、マスタ２３２に、おそらくは拡大されたブロードキャスト範囲の排他的アクセス要求を再発行させる。プロセスはその後、後述されるブロック１０２２に進む。
【００９３】
再びブロック１００６を参照すると、否定的判断に応答して、プロセスは、ブロック１００８に進む。ブロック１００８は、累積された部分応答がＬ２キャッシュ・スヌーパ２３６からのＨＰＣ＿ａｃｋ部分応答を含むか否か、または累積された部分応答がＩＭＣ２０６からの再試行＿ＬＰＣ部分応答を含まないかどうかを、応答ロジック２１０が判断することを示す。ブロック１００８での否定的判断に応答して、プロセスは、応答ロジック２１０が再試行を示す結合応答を出力することを示すブロック１００９に進む。その後、プロセスはブロック１０２２に進む。
【００９４】
ブロック１００８に戻ると、応答ロジック２１０が肯定的判断を行うとき、プロセスは、ブロック１００８からブロック１０１０に進み、このブロック１０１０は、蓄積された部分応答が、その他の再試行、または共有の部分応答の存在を示すか否かを、応答ロジック２１０が判断することを示す。累積された部分応答が、その他の再試行または共有の部分応答の存在を示すと応答ロジック２１０が判断するとき、開始したマスタ２３２に、排他的アクセス要求の目標メモリ・ブロックのコヒーレンシー所有権を与えることができるが、少なくとも１つの非ＨＰＣのＬ２キャッシュ・メモリ２３０は、目標メモリ・ブロックのキャッシュされたデータ有効コピーを保持できる。その結果、応答ロジック２１０は、Ａｄｄｒ＿ａｃｋ＿ＢＫのようなクリーンアップをともなう成功結合応答を出力する。上述したように、クリーンアップをともなう成功ＣＲは、図６のブロック６２６に示したように、開始したマスタ２３２にバックグラウンド・キル要求を発行させるであろう。その後、プロセスは、後述されるブロック１０２２に進む。
【００９５】
再びブロック１０１０を参照すると、累積された部分応答が、その他の再試行または共有の部分応答を受信したことを示さないとの、応答ロジック２１０による判断に応答して、プロセスは、応答ロジック２１０がＡｄｄｒ＿ａｃｋ結合応答のような成功を示す結合応答を出力することを示すブロック１０２０に進む。その後、プロセスはブロック１０２２に進み、このブロック１０２２は、図１１のブロック９１２および９１４に関して上述したように、応答ロジック２１０が、累積された部分応答の中でＭＣＬＳフィールドがアサートされているか否かを判断することを示す。応答ロジック２１０が、累積された部分応答の中でＭＣＬＳフィールドがアサートされていないと判断するとき、プロセスは、直接ブロック１０２６に進む。一方、ブロック１０２２で肯定的判断が行われるとき、ブロック１０２４で、応答ロジック２１０は、結合応答の中でＭＣＬＳフィールドをアサートする。その後、プロセスはブロック１０２６に進む。
【００９６】
ブロック１０２６は、応答ロジック２１０が、最初の排他的アクセス要求のブロードキャスト範囲と一致するブロードキャスト範囲を有する結合応答を送信することを示す（ブロック１０２６）。その後、ブロック１０３０で、プロセスは終了する。
【００９７】
上述したように、本発明は、メモリ・ブロックが、コヒーレンシー・ドメインの内側、または外側でキャッシュされている可能性が高いか否かの表示を提供する改良されたデータ処理システム、処理装置、キャッシュ階層、およびデータ処理方法を提供する。本発明に基づいて、コヒーレンシー状態により提供されうる表示は、排他的アクセス動作に対する結合応答に応じて、確立または更新されうる。
【００９８】
本発明は、特に、好ましい実施形態に関して説明しながら示されたが、当業者は、本発明の要旨および範囲を逸脱することなく、形式および詳細における様々な変更を本発明に行うことができることを理解するであろう。
【図面の簡単な説明】
【００９９】
【図１】本発明の代表的データ処理システムの高レベルのブロック図である。
【図２】本発明の処理装置の、より詳細なブロック図である。
【図３】図２に示したＬ２キャッシュ・アレイおよびディレクトリの、より詳細なブロック図である。
【図４】図１のデータ処理システムにおけるシステム相互接続上の代表的トランザクションの時系列図である。
【図５】本発明の好ましい実施形態のドメイン標識を示す。
【図６】キャッシュ・メモリが、本発明に基づいてデータ処理システム内のプロセッサ・コアから受信された動作を行う、代表的方法の高レベルの論理フローチャートである。
【図７】キャッシュが、本発明に基づいて、スヌープされたストレージ変更動作を処理する、代表的方法の高レベルの論理フローチャートである。
【図８】キャッシュが、本発明に基づいて、スヌープされたストレージ変更動作を処理する、代表的方法の高レベルの論理フローチャートである。
【図９】キャッシュが、本発明に基づいて、スヌープされたストレージ変更動作を処理する、代表的方法の高レベルの論理フローチャートである。
【図１０】メモリ・コントローラが、本発明に基づいて、スヌープされたストレージ変更動作を処理する、代表的方法の高レベルの論理フローチャートである。
【図１１】部分応答が、本発明の一実施形態に基づいて段階的に累積される、代表的プロセスの高レベルの論理フローチャートである。
【図１２】ストレージ変更動作に対する結合応答が、本発明の一実施形態に基づいて生成される、代表的プロセスの高レベルの論理フローチャートである。
【図１】
2007257631.tif 000006
【図２】
2007257631.tif 000007
【図３】
2007257631.tif 000008
【図４】
2007257631.tif 000009
【図５】
2007257631.tif 000010
【図６】
2007257631.tif 000011
【図７】
2007257631.tif 000012
【図８】
2007257631.tif 000013
【図９】
2007257631.tif 000014
【図１０】
2007257631.tif 000015
【図１１】
2007257631.tif 000016
【図１２】
2007257631.tif 000017