(57)【要約】      （修正有）【課題】キャッシュ・コヒーレント・データ処理システムでのデータ処理の方法とを提供する。【解決手段】データ処理システムは、Ｉ／Ｏコントローラを有する第１処理ノードとメモリ用のメモリ・コントローラを含む第２処理ノードとを少なくとも含む。メモリ・コントローラは、第１および第２アドレスをそれぞれ対象とするパイプライン式第１および第２ＤＭＡ書込みオペレーションをＩ／Ｏコントローラから順番に受け取る。第２ＤＭＡ書込みオペレーションに応答して、第２アドレスに関連するドメイン標識の状態を確立し、第１処理ノードを含むオペレーション範囲を示す。メモリ・コントローラが、第２アドレスを指定し、第１処理ノードを除外する範囲を有するデータ・アクセス要求を受け取ったことに応答して、第２アドレスに関連するドメイン標識の状態に基づいて、第１処理ノードを含む範囲で強制的にデータ・アクセス要求を再発行させる。【選択図】図１
2007080266.tif 000002
【特許請求の範囲】
【請求項１】
入出力（Ｉ／Ｏ）コントローラを有する第１処理ノードと、メモリ用のメモリ・コントローラを含む第２処理ノードとを少なくとも含むデータ処理システムでのデータ処理の方法であって、
前記メモリ・コントローラが、第１および第２アドレスをそれぞれ対象とするパイプライン式第１および第２ＤＭＡ書込みオペレーションを前記Ｉ／Ｏコントローラから順番に受け取り、
前記第２ＤＭＡ書込みオペレーションに応答して、前記メモリ・コントローラが、前記第２アドレスに関連するドメイン標識の状態を確立して、前記第１処理ノードを含むオペレーション範囲を示し、
前記メモリ・コントローラが、前記第２アドレスを指定し、前記第１処理ノードを除外する範囲を有するデータ・アクセス要求を受け取ったことに応答して、前記メモリ・コントローラが、前記第２アドレスに関連する前記ドメイン標識の前記状態に基づいて、前記第１処理ノードを含む範囲で強制的に前記データ・アクセス要求を再発行させることを含む方法。
【請求項２】
前記第２ＤＭＡ書込みオペレーションが、前記第１ＤＭＡ書込みオペレーションの前に成功する
ことをさらに含む請求項１に記載の方法。
【請求項３】
前記メモリ・コントローラが、前記第２処理ノード内の処理装置から前記データ・アクセス要求を受け取ることをさらに含む請求項１に記載の方法。
【請求項４】
前記Ｉ／Ｏコントローラが、前記第１ＤＭＡ書込みオペレーションが成功するまで、前記データ・アクセス要求によるアクセスから、前記第２アドレスに関連するメモリ・ブロックを保護することをさらに含む請求項１に記載の方法。
【請求項５】
前記確立することが、前記Ｉ／Ｏコントローラから受け取った状態表示に従って前記状態を確立することを含む請求項１に記載の方法。
【請求項６】
前記メモリ・コントローラが、前記第２ＤＭＡ書込みオペレーションのデータ保有期間を有する前記状態表示を受け取ることをさらに含む請求項５に記載の方法。
【請求項７】
前記状態が、少なくとも第１状態および第２状態のうちの第１状態を含み、
前記確立することが、前記第１ＤＭＡ書込みオペレーションが成功しなかったことを前記状態表示が示す場合にのみ、前記第１状態の前記ドメイン標識を確立することを含み、
前記第１ＤＭＡ書込みオペレーションが成功したことを示す状態表示を受け取ったことに応答して、メモリ・コントローラが、前記第２状態の前記ドメイン標識を確立して、前記第１処理ノードを除外するオペレーション範囲を示すことをさらに含む
請求項５に記載の方法。
【請求項８】
相互接続と、
前記相互接続に結合され、入出力（Ｉ／Ｏ）コントローラを含む第１処理ノードと、
前記相互接続に結合され、メモリ用のメモリ・コントローラを含む第２処理ノードであって、前記メモリ・コントローラが、第１および第２アドレスをそれぞれ対象とするパイプライン式第１および第２ＤＭＡ書込みオペレーションを前記Ｉ／Ｏコントローラから順番に前記メモリ内に受け取り、前記第２ＤＭＡ書込みオペレーションに応答して、前記メモリ・コントローラが、前記第２アドレスに関連するドメイン標識の状態を確立して、前記第１処理ノードを含むオペレーション範囲を示し、前記メモリ・コントローラが、前記第２アドレスを指定し、第１処理ノードを除外する範囲を有するデータ・アクセス要求を受け取ったことに応答して、前記メモリ・コントローラが、前記第２アドレスに関連する前記ドメイン標識の状態に基づいて、前記第１処理ノードを含む範囲で強制的に前記データ・アクセス要求を再発行させる第２処理ノードと
を備えるデータ処理システム。
【請求項９】
前記データ・アクセス要求を発行する前記第２処理ノード内に処理装置をさらに備える請求項８に記載のデータ処理システム。
【請求項１０】
前記Ｉ／Ｏコントローラが、前記第１ＤＭＡ書込みオペレーションが成功するまで、前記データ・アクセス要求によるアクセスから、前記第２アドレスに関連するメモリ内のメモリ・ブロックを保護する請求項８に記載のデータ処理システム。
【請求項１１】
前記メモリ・コントローラが、前記Ｉ／Ｏコントローラから受け取った状態表示に従って前記状態を確立する請求項８に記載のデータ処理システム。
【請求項１２】
前記メモリ・コントローラが、前記第２ＤＭＡ書込みオペレーションのデータ保有期間を有する前記状態表示を受け取ることを含む請求項１１に記載のデータ処理システム。
【請求項１３】
前記状態が、少なくとも第１状態および第２状態のうちの第１状態を含み、
前記メモリ・コントローラが、前記第１ＤＭＡ書込みオペレーションが成功しなかったことを前記状態表示が示す場合にのみ、前記第１状態の前記ドメイン標識を確立し、
前記第１ＤＭＡ書込みオペレーションが成功したことを示す状態表示を受け取ったことに応答して、前記メモリ・コントローラが、前記第２状態の前記ドメイン標識を確立して、前記第１処理ノードを除外するオペレーション範囲を示す、
請求項１１に記載のデータ処理システム。
【請求項１４】
メモリ用のメモリ・コントローラであって、
第１および第２アドレスをそれぞれ対象とするパイプライン式第１および第２ＤＭＡ書込みオペレーションを前記Ｉ／Ｏコントローラから順番にメモリ内に受け取る手段と、
前記第２ＤＭＡ書込みオペレーションに応答して、前記第２アドレスに関連するドメイン標識の状態を確立して、前記第１処理ノードを含むオペレーション範囲を示す手段と、
前記メモリ・コントローラが、前記第２アドレスを指定し、前記第１処理ノードを除外する範囲を有するデータ・アクセス要求を受け取ったことに応答して、前記第２アドレスに関連する前記ドメイン標識の前記状態に基づいて、前記第１処理ノードを含む範囲で強制的に前記データ・アクセス要求を再発行させる手段と
を備えるメモリ・コントローラ。
【請求項１５】
前記第２処理ノード内の処理装置から前記データ・アクセス要求を受け取る手段をさらに備える請求項１４に記載のメモリ・コントローラ。
【請求項１６】
前記メモリ・コントローラが、Ｉ／Ｏコントローラから受け取った状態表示に従って前記状態を確立する請求項１４に記載のメモリ・コントローラ。
【請求項１７】
前記メモリ・コントローラが、前記第２ＤＭＡ書込みオペレーションのデータ保有期間を有する前記状態表示を受け取る請求項１６に記載のメモリ・コントローラ。
【請求項１８】
前記状態が、少なくとも第１状態および第２状態のうちの第１状態を含み、
前記メモリ・コントローラが、前記第１ＤＭＡ書込みオペレーションが成功しなかったことを前記状態表示が示す場合にのみ、前記第１状態の前記ドメイン標識を確立し、
前記第１ＤＭＡ書込みオペレーションが成功したことを示す状態表示を受け取ったことに応答して、前記メモリ・コントローラが、前記第２状態の前記ドメイン標識を確立して、前記第１処理ノードを除外するオペレーション範囲を示す、
請求項１４に記載のメモリ・コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはデータ処理に関し、詳細には、キャッシュ・コヒーレント・データ処理システムでのデータ処理に関する。
【背景技術】
【０００２】
サーバ・コンピュータ・システムなどの従来の対称型マルチプロセッサ（ＳＭＰ）コンピュータ・システムは、システム相互接続にすべて結合された複数の処理装置を含み、システム相互接続は、一般に１つまたは複数のアドレス・バス、データ・バス、および制御バスを備える。システム相互接続にはシステム・メモリが結合され、システム・メモリは、マルチプロセッサ・コンピュータ・システムでの最低レベルの揮発性メモリを表し、一般に、すべての処理装置による読取りアクセスおよび書込みアクセスに関してアクセス可能である。システム・メモリ内に常駐する命令およびデータに対するアクセス待ち時間を低減するために、各処理装置は、一般に、それぞれの多重レベル・キャッシュ階層によってさらにサポートされ、その下位レベルを、１つまたは複数のプロセッサ・コアで共有することができる。
【０００３】
複数のプロセッサ・コアがデータの同一のキャッシュ・ラインに対して書込みアクセスを要求する可能性があり、かつ変更後のキャッシュ・ラインがシステム・メモリと直ちに同期されないため、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は一般にキャッシュ・コヒーレンシ・プロトコルを実装して、システム・メモリの内容の様々なプロセッサ・コアの「ビュー」の間の少なくとも最小レベルのコヒーレンスを保証する。具体的には、キャッシュ・コヒーレンシは、少なくとも、処理装置がメモリ・ブロックのコピーにアクセスし、その後にメモリ・ブロックの更新後のコピーにアクセスした後に、処理装置はメモリ・ブロックの旧コピーに再びアクセスできないことを必要とする。
【０００４】
キャッシュ・コヒーレンシ・プロトコルは一般に、各キャッシュ階層のキャッシュ・ラインに関連して格納される１組のキャッシュ状態、ならびにキャッシュ階層間でキャッシュ状態情報を通信するのに使用される１組のコヒーレンシ・メッセージを定義する。典型的な実装では、キャッシュ状態情報は、周知のＭＥＳＩ（Modified, Exclusive, Shared, Invalid）プロトコルまたはその変形の形態を取り、コヒーレンシ・メッセージは、メモリ・アクセス要求の要求側または受信側あるいはその両方のキャッシュ階層内のプロトコル定義済みコヒーレンシ状態遷移（protocol-definedcoherency state transition）を示す。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来、キャッシュ・コヒーレンシ・プロトコルは、キャッシュ・コヒーレンシを維持するために、コヒーレンシ・メッセージのグローバル・ブロードキャストを使用しなければならないことを一般に仮定していた。すなわち、すべてのコヒーレンシ・メッセージをＳＭＰコンピュータ・システム内のすべてのキャッシュ階層で受信しなければならないことを仮定していた。しかし、本発明では、コヒーレンシ・メッセージのグローバル・ブロードキャストの要件がＳＭＰコンピュータ・システムのスケーラビリティの著しい妨げとなり、具体的には、システムが増大する（systems scale）につれてシステム相互接続の帯域幅の量をますます消費することを理解している。
【課題を解決するための手段】
【０００６】
当技術分野での上記およびその他の欠点を鑑みて、本発明は、改良型のキャッシュ・コヒーレント・データ処理システムと、キャッシュ・コヒーレント・データ処理システムでのデータ処理の方法とを提供する。
【０００７】
一実施形態では、データ処理システムは、入出力（Ｉ／Ｏ）コントローラを有する第１処理ノードと、メモリ用のメモリ・コントローラを含む第２処理ノードとを少なくとも含む。メモリ・コントローラは、第１および第２アドレスをそれぞれ対象とするパイプライン式第１および第２ＤＭＡ書込みオペレーションをＩ／Ｏコントローラから順番に受け取る。第２ＤＭＡ書込みオペレーションに応答して、メモリ・コントローラは、第２アドレスに関連するドメイン標識の状態を確立し、第１処理ノードを含むオペレーション範囲を示す。メモリ・コントローラが、第２アドレスを指定し、第１処理ノードを除外する範囲を有するデータ・アクセス要求を受け取ったことに応答して、メモリ・コントローラは、第２アドレスに関連するドメイン標識の状態に基づいて、第１処理ノードを含む範囲で強制的にデータ・アクセス要求を再発行させる。
【０００８】
本発明のすべての目的、特徴、および利点は、以下の詳細な説明から明らかとなるであろう。
【０００９】
本発明に特有と考えられる新規な特徴が、添付の特許請求の範囲に記載される。しかし、以下の例示的実施形態の詳細な説明を参照することにより、添付の図面と共に読むときに本発明ならびに好ましい使用の形態を理解されよう。
【発明を実施するための最良の形態】
【００１０】
Ｉ．例示的データ処理システム
ここで各図、特に図１を参照すると、本発明によるキャッシュ・コヒーレント対称型マルチプロセッサ（ＳＭＰ）データ処理システムの例示的実施形態の高レベル・ブロック図が示されている。図示されているように、データ処理システム１００は、データおよび命令を処理する複数の処理ノード１０２ａ、１０２ｂを含む。処理ノード１０２ａ、１０２ｂは、アドレス、データ、および制御情報を搬送するシステム相互接続１１０に結合される。システム相互接続１１０は、例えばバス式相互接続（bused interconnect）、交換相互接続、またはハイブリッド相互接続として実装することができる。
【００１１】
図示する実施形態では、各処理ノード１０２が、集積回路としてそれぞれ実現されることが好ましい４つの処理装置１０４ａ〜１０４ｄを含むマルチチップ・モジュール（ＭＣＭ）として実現される。各処理ノード１０２内の処理装置１０４ａ〜１０４ｄは、ローカル相互接続１１４によって通信するように結合され、ローカル相互接続１１４は、システム相互接続１１０と同様に、１つまたは複数のバスまたはスイッチあるいはその両方で実装することができる。
【００１２】
各ローカル相互接続１１４に結合された装置は、処理装置１０４だけではなく、１つまたは複数のシステム・メモリ１０８ａ〜１０８ｄも含む。システム・メモリ１０８内に常駐するデータおよび命令は一般に、データ処理システム１００の任意の処理ノード１０２内の任意の処理装置１０４内のプロセッサ・コアでアクセスし、修正することができる。本発明の代替実施形態では、１つまたは複数のシステム・メモリ１０８をローカル相互接続１１４ではなく、システム相互接続１１０に結合することができる。
【００１３】
相互接続ブリッジ、不揮発性ストレージ、ネットワークへの接続用ポート、または接続された装置などの図示されていない多数の追加の構成要素をＳＭＰデータ処理システム１００が含むことができることを当業者は理解されよう。このような追加の構成要素は本発明を理解するのに不要であるので、それらを図１では図示しておらず、または本明細書ではさらに論じない。しかし、本発明によって実現される拡張は、様々なアーキテクチャのキャッシュ・コヒーレント・データ処理システムに適用可能であり、図１に示される一般化されたデータ処理システム・アーキテクチャに決して限定されないことも理解されたい。
【００１４】
次に図２を参照すると、本発明による例示的処理装置１０４のより詳細なブロック図が示されている。図示する実施形態では、各処理装置１０４は、命令およびデータを別々に処理する２つのプロセッサ・コア２００ａ、２００ｂを含む。各プロセッサ・コア２００は、少なくとも、実行のための命令を取り出して順序付けする命令順序付けユニット（ＩＳＵ：instruction sequencing unit）２０８と、命令を実行する１つまたは複数の実行ユニット２２４とを含む。実行ユニット２２４によって実行される命令は、メモリ・ブロックへのアクセスを要求する命令、またはメモリ・ブロックへのアクセスを求める要求を生成させる命令を含む。
【００１５】
各プロセッサ・コア２００のオペレーションは、最低のレベルに共有システム・メモリ１０８ａ〜１０８ｄを有し、上位レベルに１つまたは複数のレベルのキャッシュ・メモリを有する多重レベル揮発性メモリ階層によってサポートされる。図示する実施形態では、各処理装置１０４は、プロセッサ・コア２００ａ〜２００ｂから受け取った要求と、ローカル相互接続１１４上のスヌーパ（Ｓ）２２２によってスヌープされた（snoop）オペレーションに応答して、処理ノード１０２内のシステム・メモリ１０８ａ〜１０８ｄのうちの１つへの読取りアクセスおよび書込みアクセスを制御する統合メモリ・コントローラ（ＩＭＣ）２０６を含む。
【００１６】
例示的実施形態では、処理装置１０４のキャッシュ・メモリ階層は、各プロセッサ・コア２００内のストアスルー（store-through）レベル１（Ｌ１）キャッシュ２２６と、処理装置１０４のすべてのプロセッサ・コア２００ａ、２００ｂによって共有されるレベル２（Ｌ２）キャッシュ２３０とを含む。Ｌ２キャッシュ２３０は、Ｌ２アレイおよびディレクトリ２３４、マスタ２３２、ならびにスヌーパ２３６を含む。マスタ２３２は、関連するプロセッサ・コア２００ａ〜２００ｂから受け取ったメモリ・アクセス（およびその他の）要求に応答して、ローカル相互接続１１４およびシステム相互接続１１０上のトランザクションを開始し、Ｌ２アレイおよびディレクトリ２３４にアクセスする。スヌーパ２３６は、ローカル相互接続１１４上のオペレーションをスヌープし、適切な応答を与え、オペレーションによって要求されるＬ２アレイおよびディレクトリ２３４への任意のアクセスを実施する。
【００１７】
図示するキャッシュ階層は、２レベルのキャッシュのみを含むが、代替実施形態が、上位レベルのキャッシュの内容を完全に含むことができ、部分的に含むことができ、または含まない追加のレベル（Ｌ３、Ｌ４など）のオンチップまたはオフチップのインラインまたはルックアサイド・キャッシュを含むことができることを当業者は理解されよう。
【００１８】
各処理装置１０４は、応答ロジック２１０のインスタンスをさらに含み、以下で論じるように、応答ロジック２１０は、データ処理システム１００内のキャッシュ・コヒーレンシを維持する分散コヒーレンシ・シグナリング機構（distributed coherency signaling mechanism）の一部を実装する。さらに、各処理装置１０４は、そのローカル相互接続１１４とシステム相互接続１１０の間の通信を選択的に転送する転送ロジック２１２のインスタンスを含む。最後に、各処理装置１０４は、Ｉ／Ｏ装置２１６などの１つまたは複数のＩ／Ｏ装置の接続をサポートする統合Ｉ／Ｏ（入出力）コントローラ２１４を含む。以下でさらに説明するように、Ｉ／Ｏコントローラ２１４は、Ｉ／Ｏ装置２１６による要求に応答して、ローカル相互接続１１４またはシステム相互接続１１０あるいはその両方に対するオペレーションを発行することができる。
【００１９】
次に図３を参照すると、Ｌ２アレイおよびディレクトリ２３４の例示的実施形態のより詳細なブロック図が示されている。図示するように、Ｌ２アレイおよびディレクトリ２３４は、セット連想Ｌ２キャッシュ・アレイ（set associative L2 cache array）３００と、Ｌ２キャッシュ・アレイ３００の内容のＬ２キャッシュ・ディレクトリ３０２とを含む。従来型セット連想キャッシュと同様に、システム・メモリ１０８内のメモリ位置は、システム・メモリ（実）アドレス内の所定のインデックス・ビットを使用して、キャッシュ・アレイ３００内の特定の合同クラス（congruenceclass）にマッピングされる。キャッシュ・アレイ３００内に格納される特定のキャッシュ・ラインがキャッシュ・ディレクトリ３０２に記録され、キャッシュ・ディレクトリ３０２は、キャッシュ・アレイ３００内の各キャッシュ・ラインについて１つのディレクトリ・エントリを含む。当業者は理解するであろうが、キャッシュ・ディレクトリ３０２内の各ディレクトリ・エントリは、少なくとも、対応する実アドレスのタグ部分を使用してキャッシュ・アレイ３００内に格納された特定のキャッシュ・ラインを指定するタグ・フィールド３０４と、キャッシュ・ラインのコヒーレンシ状態を示す状態フィールド３０６と、同一の合同クラス内の他のキャッシュ・ラインに対するキャッシュ・ラインについての置換順序を示すＬＲＵ（最長時間未使用）フィールド３０８とを含む。
【００２０】
ＩＩ．例示的オペレーション
次に図４を参照すると、図１のデータ処理システム１００のローカルまたはシステム相互接続１１０、１１４に対する例示的オペレーションの時空図（time-space diagram）が示されている。オペレーションは、Ｌ２キャッシュ２３０のマスタ２３２（または、Ｉ／Ｏコントローラ２１４などの別のマスタ）がローカル相互接続１１４またはシステム相互接続１１０あるいはその両方に対する要求４０２を発行するときに始まる。好ましくは、要求４０２は、所望のアクセスのタイプを示すトランザクション・タイプと、要求でアクセスすべき資源を示す資源識別子（例えば実アドレス）を含む。好ましくは、一般的なタイプの要求には、以下の表Ｉに記載されるものが含まれる。
【００２１】
【表１】
2007080266.tif 000003
【００２２】
要求４０２が、Ｌ２キャッシュ２３０のスヌーパ２３６、ならびにメモリ・コントローラ２０６のスヌーパ２２２によって受信される（図１）。一般には、いくつかの例外はあるが、要求４０２のマスタ２３２と同一のＬ２キャッシュ２３０内のスヌーパ２３６は要求４０２をスヌープしない（すなわち、一般には自己スヌーピングはない）。要求４０２を処理装置１０４で内部的にサービスすることができない場合にのみ、要求４０２がローカル相互接続１１４上またはシステム相互接続１１０上あるいはその両方で送られるからである。要求４０２を受け取る各スヌーパ２２２、２３６は、要求４０２に対する少なくともそのスヌーパの応答を表すそれぞれの部分応答４０６を提供する。メモリ・コントローラ２０６内のスヌーパ２２２は、例えばスヌーパ２２２が要求アドレスの任を担うかどうか、およびスヌーパ２２２が要求をサービスするのに利用可能な資源を有するかどうかに基づいて、提供する部分応答４０６を決定する。Ｌ２キャッシュ２３０のスヌーパ２３６は、例えばそのＬ２キャッシュ・ディレクトリ３０２の可用性、要求を処理するためのスヌーパ２３６内のスヌープ・ロジック・インスタンスの可用性、およびＬ２キャッシュ・ディレクトリ３０２内の要求アドレスに関連するコヒーレンシ状態に基づいて、その部分応答４０６を決定することができる。
【００２３】
スヌーパ２２２および２３６の部分応答は、応答ロジック２１０の１つまたは複数のインスタンスによって段階的に、またはすべて一度に論理的に組み合わされ、要求４０２に対する全システム組合せ応答（system-wide combined response）（ＣＲ）４１０が決定される。以下で論じる範囲制限を受けて、応答ロジック２１０は、ローカル相互接続１１４またはシステム相互接続１１０あるいはその両方を介して組合せ応答４１０をマスタ２３２およびスヌーパ２２２、２３６に提供し、要求４０２に対する全システム応答（例えば、成功、失敗、再試行など）を示す。ＣＲ４１０が要求４０２の成功を示す場合、ＣＲ４１０は、例えば、要求されたメモリ・ブロックに関するデータ源、要求されたメモリ・ブロックをマスタ２３２によってキャッシュすべきキャッシュ状態、および１つまたは複数のＬ２キャッシュ２３０内の要求されたメモリ・ブロックを無効にする「クリーンアップ」オペレーションが必要であるかどうかを示すことができる。
【００２４】
組合せ応答４１０の受信に応答して、マスタ２３２およびスヌーパ２２２、２３６のうちの１つまたは複数は一般に、要求４０２をサービスするために１つまたは複数のオペレーションを実施する。こうしたオペレーションは、マスタ２３２にデータを供給すること、１つまたは複数のＬ２キャッシュ２３０にキャッシュされたデータのコヒーレンシ状態を無効にし、あるいは更新すること、キャストアウト・オペレーションを実施すること、データをシステム・メモリ１０８に書き戻すことなどを含むことができる。以下でさらに論じるように、要求４０２によって要求された場合、応答ロジック２１０による組合せ応答４１０の生成の前または後に、要求されたメモリ・ブロックまたはターゲット・メモリ・ブロックを、マスタ２３２に、またはマスタ２３２から送ることができる。
【００２５】
以下の説明では、要求に対するスヌーパ２２２、２３６の部分応答と、要求またはその組合せ応答あるいはその両方に応答してスヌーパが実施するオペレーションとを、要求によって指定される要求アドレスに関してそのスヌーパがコヒーレンシの最高地点（Highest Point of Coherency）（ＨＰＣ）か、コヒーレンシの最低地点（Lowest Point ofCoherency）（ＬＰＣ）か、またはそのどちらでもないかを参照しながら説明する。本明細書では、ＬＰＣは、メモリ・ブロックのためのリポジトリとして働くメモリ装置またはＩ／Ｏ装置と定義される。メモリ・ブロックに対するＨＰＣが存在しない場合、ＬＰＣは、メモリ・ブロックの真のイメージを保持し、メモリ・ブロックの追加のキャッシュされたコピーを生成する要求を許可または拒否する権限を有する。図１および２のデータ処理システム実施形態での典型的な要求では、ＬＰＣは、参照されるメモリ・ブロックを保持するシステム・メモリ１０８に関するメモリ・コントローラ２０６となる。本明細書では、ＨＰＣは、メモリ・ブロックの真のイメージ（ＬＰＣでの対応するメモリ・ブロックと整合することもしないこともある）をキャッシュする一意的に特定される装置と定義され、メモリ・ブロックを修正する要求を許可または拒否する権限を有する。記述的には、ＨＰＣは、メモリ・ブロックを修正しないオペレーションに応答して、メモリ・ブロックのコピーを要求側に提供することもできる。したがって、図１および２のデータ処理システム実施形態での典型的要求では、ＨＰＣが存在する場合はそれがＬ２キャッシュ２３０となる。他の標識を使用してメモリ・ブロックに対するＨＰＣを指定することができるが、本発明の好ましい実施形態は、以下で表２を参照ながらさらに説明するように、Ｌ２キャッシュ２３０のＬ２キャッシュ・ディレクトリ３０２内の選択されたキャッシュ・コヒーレンシ状態を使用して、メモリ・ブロックに対するＨＰＣが存在する場合はそれを指定する。
【００２６】
図４をさらに参照すると、好ましくは、要求４０２で参照されるメモリ・ブロックに対するＨＰＣが存在する場合はそれが、またはＨＰＣが存在しない場合はメモリ・ブロックのＬＰＣが、保護ウィンドウ４０４ａの間の要求４０２に応答してメモリ・ブロックの所有権の転送を保護する任を担う。図４に示される例示的シナリオでは、要求４０２の要求アドレスで指定されるメモリ・ブロックに対するＨＰＣであるスヌーパ２３６が、スヌーパ２３６がその部分応答４０６を決定する時からスヌーパ２３６が組合せ応答４１０を受け取るまで延びる保護ウィンドウ４０４ａの間、要求されたメモリ・ブロックの所有権のマスタ２３２への転送を保護する。保護ウィンドウ４０４ａの間、スヌーパ２３６は、所有権が首尾よくマスタ２３２に転送されるまで他のマスタが所有権を得るのを防止する同一の要求アドレスを指定する他の要求に部分応答４０６を提供することにより、所有権の転送を保護する。マスタ２３２も同様に、組合せ応答４１０の受信に続いて、保護ウィンドウ４０４ｂを開始して、要求４０２で要求されるメモリ・ブロックのその所有権を保護する。
【００２７】
スヌーパ２２２、２３６はすべて、上述のＣＰＵおよびＩ／Ｏ要求を処理するために有する資源が限られているので、いくつかの異なるレベルの部分応答および対応するＣＲが可能である。例えば、要求されたメモリ・ブロックの任を担うメモリ・コントローラ２０６内のスヌーパ２２２が、要求を処理するのに利用可能なキューを有する場合、スヌーパ２２２は、要求に対するＬＰＣとして働くことができることを示す部分応答で応答することができる。一方、スヌーパ２２２が、要求を処理するのに利用可能なキューを有さない場合、スヌーパ２２２は、メモリ・ブロックに対するＬＰＣであるが、要求を現在サービスすることができないことを示す部分応答で応答することができる。
【００２８】
同様に、Ｌ２キャッシュ２３０内のスヌーパ２３６は、要求を処理するために、スヌープ・ロジックの利用可能なインスタンスを要求し、Ｌ２キャッシュ・ディレクトリ３０２にアクセスすることができる。こうした資源の一方（または両方）へのアクセスが存在しない結果、部分応答（および対応するＣＲ）が、要求された資源が存在しないために要求をサービスできないことを信号で伝える。
【００２９】
以後、要求をサービスするのに内部資源が必要な場合、必要なすべての利用可能な内部資源をスヌーパが有することを示す部分応答を提供するスヌーパ２２２、２３６を、要求を「肯定する（affirm）」と呼ぶ。スヌーパ２３６について、好ましくは、スヌープされたオペレーションを肯定する部分応答は、そのスヌーパ２３６での要求されたメモリ・ブロックまたはターゲット・メモリ・ブロックのキャッシュ状態を示す。要求をサービスするのに必要なすべての利用可能な内部資源をスヌーパ２３６が有さないことを示す部分応答を提供するスヌーパ２３６を「場合によっては隠される（possiblyhidden）」と呼ぶ。スヌープ・ロジックのインスタンスまたはＬ２キャッシュ・ディレクトリ３０２へのアクセスが欠如しているために、上記で定義された意味でスヌーパ２３６が要求を「肯定」することができず、他のマスタ２３２およびスヌーパ２２２、２３６の観点からは未知のコヒーレンシ状態を有するので、そのようなスヌーパ２３６は「場合によっては隠される」。
【００３０】
ＩＩＩ．データ送達ドメイン
従来のブロードキャスト・ベースのデータ処理システムは、ブロードキャスト通信を介してキャッシュ・コヒーレンシとデータ送達とを共に処理し、従来のシステムでは、ブロードキャスト通信は、システム相互接続上でシステム内の少なくともすべてのメモリ・コントローラおよびキャッシュ階層に送られる。代替アーキテクチャなどのシステムのスケールと比較して、ブロードキャスト・ベースのシステムは、アクセス待ち時間を低減させ、共有メモリ・ブロックのデータ処理およびコヒーレンシ管理が良好となる傾向がある。
【００３１】
ブロードキャスト・ベースのシステムのサイズが増大するとき、システム相互接続上のトラフィック・ボリュームが増大し、そのことは、システムが増大するときに、システム相互接続を介する通信により多くの帯域幅が必要となるので、システム・コストが急激に上昇することを意味する。すなわち、ｎ個のトランザクションの平均トラフィック・ボリュームをそれぞれ有するｍ個のプロセッサ・コアを有するシステムは、トラフィック・ボリュームｍ×ｎを有し、このことは、ブロードキャスト・ベースのシステムでのトラフィック・ボリュームは加法的にではなく乗法的に増大することを意味する。かなり大きな相互接続帯域幅に対する要件を超えて、システム・サイズの増大は、いくらかのアクセス待ち時間を増大させる２次効果を有する。例えば、要求されたデータをそこから供給することができる、要求されたメモリ・ブロックを共有コヒーレンシ状態に保持する最も遠く離れた下部レベル・キャッシュの組合せ応答待ち時間により、最悪の場合には、読取りデータのアクセス待ち時間が制限される。
【００３２】
システム相互接続帯域幅要件およびアクセス待ち時間を低減すると共に、ブロードキャスト・ベースのシステムの利点を依然として保持するために、本発明は、要求側Ｌ２キャッシュ２３０とデータ源との間の平均距離を短縮することによってデータ・アクセス待ち時間を低減する。要求側Ｌ２キャッシュ２３０とデータ源との間の平均距離を短縮するための一技法は、データ処理システム１００全体にわたって分散する複数のＬ２キャッシュ２３０がキャッシュ間介入（cache-to-cache intervention）を使用して要求側Ｌ２キャッシュ２３０にメモリ・ブロックを供給することを可能にする「特別な」共有コヒーレンシ状態に、これらのキャッシュが同一のメモリ・ブロックのコピーを保持することを可能にすることである。
【００３３】
データ処理システム１００などのＳＭＰデータ処理システムで共有メモリ・ブロックに対する複数の同時かつ分散されたデータ源を実装するために、２つの問題に対処しなければならない。第１に、上記で触れた「特別な」共有コヒーレンシ状態でのメモリ・ブロックのコピーの作成を管理する何らかの規則を実装しなければならない。第２に、例えばバス読取りオペレーションまたはバスＲＷＩＴＭオペレーションに応答して、スヌーピングＬ２キャッシュ２３０が存在するならばどれが共有メモリ・ブロックを要求側Ｌ２キャッシュ２３０に提供するかを管理する規則が存在しなければならない。
【００３４】
本発明によれば、これらの問題がどちらも、データ・ソーシング・ドメインの実装によって対処される。具体的には、ＳＭＰデータ処理システム内の各ドメインが、１度に特定のメモリ・ブロックを「特別な」共有コヒーレンシ状態に保持するキャッシュ階層を１つだけ含むことが許可される。ただし、ドメインは、データ要求に応答することに関与する１つまたは複数の下位レベル（例えばＬ２）キャッシュを含むように定義される。そのキャッシュ階層は、バス読取りタイプ（例えば、読取りまたはＲＷＩＴＭ）オペレーションが同じドメイン内の要求側下位レベル・キャッシュによって開始されたときに存在する場合、要求されたメモリ・ブロックを要求側下位レベル・キャッシュにソーシングする任を担う。多くの異なるドメイン・サイズを定義することができるが、図１のデータ処理システム１００では、各処理ノード１０２（すなわちＭＣＭ）をデータ・ソーシング・ドメインとみなす場合が好都合である。そのような「特別な」共有状態（すなわちＳｒ）の一例を、以下で表ＩＩを参照しながら説明する。
【００３５】
ＩＶ．コヒーレンシ・ドメイン
上述のデータ送達ドメインの実装はデータ・アクセス待ち時間を改善するが、この拡張は、システム・スケールが増大するときのトラフィック・ボリュームのｍ×ｎ増大に対処していない。トラフィック・ボリュームを低減すると共に、依然としてブロードキャスト・ベースのコヒーレンシ機構を維持するために、本発明の好ましい実施形態は、上述のデータ送達ドメインと同様に、（必須ではないが）各処理ノード１０２と共に好都合に実装することのできるコヒーレンシ・ドメインを追加的に実装し、別々のコヒーレンシ・ドメインを形成する。データ送達ドメインとコヒーレンシ・ドメインは必須ではないが同一の広がりを有する（coextensive）ことができ、データ処理システム１００の例示的オペレーションの説明では、以下では処理ノード１０２によって画定された境界を有すると仮定する。
【００３６】
コヒーレンシ・ドメインの実装は、すべてのコヒーレンシ・ドメインよりも少ない参加で要求をサービスすることができる場合、システム相互接続１１０を介するドメイン間ブロードキャスト通信を制限することによってシステム・トラフィックを低減する。例えば、処理ノード１０２ａの処理装置１０４ａが発行すべきバス読取りオペレーションを有する場合、処理装置１０４ａは、それ自体のコヒーレンシ・ドメイン（例えば処理ノード１０２ａ）内のすべての参加者にバス読取りオペレーションをまずブロードキャストするが、他のコヒーレンシ・ドメイン（例えば処理ノード１０２ｂ）内の参加者にはブロードキャストしないことを選ぶことができる。オペレーションのマスタとして同一のコヒーレンシ・ドメイン内の参加者にのみ送られたブロードキャスト・オペレーションを本明細書では「ローカル・オペレーション」と定義する。ローカル・バス読取りオペレーションを処理装置１０４ａのコヒーレンシ・ドメイン内でサービスすることができる場合、さらなるバス読取りオペレーションのブロードキャストは実施されない。しかし、ローカル・バス読取りオペレーションに対する部分応答および組合せ応答が、処理ノード１０２ａのコヒーレンシ・ドメイン内のみでバス読取りオペレーションをサービスできないことを示す場合、ローカル・コヒーレンシ・ドメインに加えて、１つまたは複数の追加のコヒーレンシ・ドメインを含むようにブロードキャストの範囲を拡張することができる。
【００３７】
基本的な実装では、ローカル・コヒーレンシ・ドメインのみを含む「ローカル」範囲と、ＳＭＰデータ処理システム内の他のコヒーレンシ・ドメインのすべてを含む「グローバル」範囲の２つのブロードキャスト範囲を使用することができる。したがって、ＳＭＰデータ処理システム内のすべてのコヒーレンシ・ドメインに送られるオペレーションを本明細書では「グローバル・オペレーション」と定義する。重要なことに、オペレーションをサービスするのにローカル・オペレーションが使用されるか、それともより広範囲のオペレーション（例えばグローバル・オペレーション）が使用されるかの如何にかかわらず、キャッシュ・コヒーレンシがＳＭＰデータ処理システム内のすべてのコヒーレンシ・ドメインにわたって維持される。
【００３８】
好ましい実施形態では、オペレーションの範囲が、バス・オペレーションではローカル／グローバル標識（信号）で示され、一実施形態では、ローカル／グローバル標識（信号）は１ビット・フラグを含むことができる。好ましくは、処理装置１０４内の転送ロジック２１２は、オペレーションでのローカル／グローバル標識（信号）の設定に基づいて、ローカル相互接続１１４を介して受け取ったオペレーションをシステム相互接続１１０上に転送するか否かを判定する。
【００３９】
Ｖ．ドメイン標識
不要なローカル・オペレーションの発行を制限し、それによって動作待ち時間を短縮し、ローカル相互接続上の追加の帯域幅を温存するために、好ましくは、本発明は、関連するメモリ・ブロックのコピーがローカル・コヒーレンシ・ドメインの外部にキャッシュされるか否かを示すドメイン標識をメモリ・ブロックごとに実装する。例えば、図５に、本発明によるドメイン標識の第１の例示的実装を示す。図５に示すように、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）で実装することのできるシステム・メモリ１０８が、複数のメモリ・ブロック５００を格納する。システム・メモリ１０８は、各メモリ・ブロック５００に関連して、メモリ・ブロック５００内に誤りがある場合はそれを訂正するのに使用される関連する誤り訂正コード（ＥＣＣ）５０２と、ドメイン標識５０４とを格納する。本発明のある実施形態では、ドメイン標識５０４は特定のコヒーレンシ・ドメインを識別することができる（すなわち、コヒーレンシ・ドメインまたはノードＩＤを指定することができる）が、以下では、ドメイン標識５０４が、メモリ・コントローラ２０６がメモリ・ブロック５００に対するＬＰＣとして働くときに、関連するメモリ・ブロック５００がキャッシュされたとしても同じコヒーレンシ・ドメイン内にのみキャッシュされる場合に（例えば「ローカル」を示すために「１」に）セットされる１ビット標識であると仮定する。そうでない場合、ドメイン標識５０４は（例えば「グローバル」を示すために「０」に）リセットされる。「ローカル」を示すためのドメイン標識５０４の設定は、誤った「グローバル」の設定がコヒーレンシ・エラーを誘発しないという点であいまいに実装されることがあるが、オペレーションの不要なグローバル・ブロードキャストを引き起こす可能性がある。
【００４０】
重要なことに、好ましくは、オペレーションに応答してメモリ・ブロックをソーシングするメモリ・コントローラ２０６（およびＬ２キャッシュ２３０）は、要求されたメモリ・ブロックと共に関連するドメイン標識５０４を送る。
【００４１】
ＶＩ．例示的コヒーレンシ・プロトコル
好ましくは、本発明は、上述のデータ送達およびコヒーレンシ・ドメインの実装を活用するように設計されたキャッシュ・コヒーレンシ・プロトコルを実装する。好ましい実施形態では、プロトコル内のキャッシュ・コヒーレンシ状態は、（１）キャッシュがメモリ・ブロックに対するＨＰＣであるかどうかの表示を与えることに加えて、（２）キャッシュされたコピーがメモリ階層レベルのキャッシュの中で一意である（すなわち、システム全体で唯一のキャッシュされたコピーである）かどうか、（３）メモリ・ブロックを求める要求のマスタにキャッシュがメモリ・ブロックのコピーを提供することができるかどうか、およびいつ提供することができるか、（４）メモリ・ブロックのキャッシュされたイメージがＬＰＣ（システム・メモリ）の対応するメモリ・ブロックと整合しているかどうか、および（５）（場合によっては）リモート・コヒーレンシ・ドメイン内の別のキャッシュが、合致するアドレスを有するキャッシュ・エントリを保持するかどうかも示す。これらの５つの属性は、例えば、以下の表ＩＩで要約される周知のＭＥＳＩ（Modified, Exclusive, Shared, Invalid）プロトコルの例示的変形例で表すことができる。
【００４２】
【表２】
2007080266.tif 000004
【００４３】
Ａ．Ｉｇ状態
ＬＰＣにアクセスしてメモリ・ブロックが、たとえあったとしてもローカルのみでキャッシュされていることが知られているか否かを判定しなければならないことを回避するために、コヒーレンシ・ドメインに依然としてキャッシュされているメモリ・ブロックのコピーがない場合に、Ｉｇ（Invalid global）コヒーレンシ状態が使用されて、ドメイン表示が維持される。本明細書では、Ｉｇ状態は、（１）キャッシュ・アレイ内の関連するメモリ・ブロックが無効であること、（２）キャッシュ・ディレクトリ内のアドレス・タグが有効であること、および（３）アドレス・タグで識別されるメモリ・ブロックのコピーが、場合によっては別のコヒーレンシ・ドメイン内にキャッシュされる可能性があることを示すキャッシュ・コヒーレンシ状態と定義される。
【００４４】
Ｉｇ状態は、排他的アクセス要求（例えばバスＲＷＩＴＭオペレーション）に応答してそのキャッシュが要求されたメモリ・ブロックを別のコヒーレンシ・ドメイン内の要求側に提供することに応答して、下位レベル・キャッシュで形成される。本発明のある実施形態では、メモリ・ブロックに対するＬＰＣを含むコヒーレンシ・ドメイン内でのみＩｇ状態を形成することが好ましいことがある。そのような実施形態では、要求されたメモリ・ブロックをソーシングするキャッシュに、ＬＰＣがそのローカル・コヒーレンシ・ドメイン内にあることを示すために、何らかの機構（例えば、ＬＰＣによる部分応答と、後続の組合せ応答）を実装しなければならない。ＬＰＣがローカルであるという表示の通信をサポートしない他の実施形態では、排他的アクセス要求に応答してキャッシュがメモリ・ブロックをリモート・コヒーレンシ・ノードにソーシングする任意の時間にＩｇ状態を形成することができる。
【００４５】
Ｉｇ状態を含むキャッシュ・ディレクトリ・エントリが潜在的に有用な情報を搬送するので、少なくとも一部の実装では、（例えば、置換のための犠牲キャッシュ・エントリ（victim cache entry）を選択するのに使用される最長時間未使用（ＬＲＵ）アルゴリズムを修正することによって）Ｉｇ状態のエントリをＩ状態のエントリに勝って優先的に保持することが望ましい。Ｉｇディレクトリ・エントリがキャッシュ内に保持されるので、その排他的アクセス要求がＩｇ状態の形成を引き起こしたキャッシュが、Ｉｇ状態のメモリ・ブロックのアドレス・タグを保持するキャッシュに通知することなくメモリ・ブロックのそのコピーを割振り解除またはライトバックすることができる点で、あるＩｇエントリが経時的に「ステール」となることが可能である。そのような場合、ローカル・オペレーションではなくグローバル・オペレーションを発行すべきであることを誤って示す「ステール」Ｉｇ状態は、コヒーレンシ・エラーを引き起こさず、普通ならローカル・オペレーションを使用してサービスすることができるあるオペレーションをグローバル・オペレーションとして発行させるに過ぎない。そのような非効率の発生は、「ステール」Ｉｇキャッシュ・エントリの偶発的置換によって期間内に（induration）制限される。
【００４６】
いくつかの規則がＩｇキャッシュ・エントリの選択および置換を支配する。第１に、キャッシュが置換のための犠牲としてＩｇエントリを選択する場合、（Ｉエントリが選択されるときとは異なり）Ｉｇエントリのキャストアウトが実施される。第２に、メモリ・ブロックをキャッシュにロードさせる要求が同一のキャッシュ内のＩｇキャッシュ・エントリにヒットする場合、キャッシュは、Ｉｇヒットをキャッシュ・ミスとして扱い、選択された犠牲としてＩｇエントリを用いてキャストアウト・オペレーションを実施する。したがって、キャッシュは、キャッシュ・ディレクトリ内に同一のアドレス・タグの２つのコピーを配置することを回避する。第３に、好ましくは、Ｉｇ状態のキャストアウトは、ローカル・オペレーションとして実施され、またはグローバル・オペレーションとして実施される場合、キャストアウト・アドレスのＬＰＣによって無視される。メモリ・ブロックに対するＬＰＣと同じコヒーレンシ・ドメイン内にないキャッシュでＩｇエントリが形成されることが許可される場合、ＬＰＣ内のドメイン標識に対する更新は不要である。第４に、好ましくは、Ｉｇ状態のキャストアウトは、（キャストアウトを実施するキャッシュに対してローカルである場合）ドメイン標識がＬＰＣに書き戻されるデータレス・アドレス専用オペレーションとして実施される。
【００４７】
本発明によるＩｇ状態の実装は、メモリ・ブロックの有効なコピーがコヒーレンシ・ドメイン内に依然としてキャッシュされるときであっても、コヒーレンシ・ドメイン内のメモリ・ブロックに関するキャッシュされるドメイン標識を維持することにより、通信効率を改善する。その結果、メモリ・ブロックに対するＨＰＣは、リモート・コヒーレンシ・ドメインからの排他的アクセス要求（例えばバスＲＷＩＴＭオペレーション）を、要求を再試行し、ＬＰＣへの要求されたメモリ・ブロックのプッシュを実施することなく、サービスすることができる。
【００４８】
Ｂ．Ｓｒ状態
以下で説明するオペレーションでは、共有される要求メモリ・ブロックをＳｒコヒーレンシ状態に保持する下位レベル・キャッシュが、要求側マスタと同じドメイン内に位置するかどうかを判定するのに役立つ。一実施形態では、要求側マスタと同じドメイン内の「ローカル」Ｓｒスヌーパの存在を、要求メモリ・ブロックをＳｒコヒーレンシ状態に保持する下位レベル・キャッシュのスヌーパの応答挙動によって示すことができる。例えば、バス・オペレーションがドメイン境界を横切ったかどうかを示す範囲標識（例えばマスタの明示的ドメイン識別子または単一のローカル／非ローカル・ビット）を各バス・オペレーションが含むと仮定すると、共有メモリ・ブロックをＳｒコヒーレンシ状態に保持する下位レベル・キャッシュは、同一のデータ・ソーシング・ドメイン内のマスタによる要求に対してのみＳｒ状態の要求を肯定する部分応答を提供することができ、その他のすべての要求に対してＳ状態を示す部分応答を提供することができる。そのような実施形態では、応答挙動は、以下の表ＩＩＩに示すように要約することができる。表ＩＩＩでは、メモリ・ブロックの実際のキャッシュ状態とは異なる可能性がある部分応答を指定するのにダッシュ（’）表記を使用する。
【００４９】
【表３】
2007080266.tif 000005
【００５０】
上記の表ＩＩＩに記載の応答挙動を仮定すると、データ源として働くことのできるＳＭＰデータ処理システム内に分散されるメモリ・ブロックの共有コピーの数を増加させることにより、共有データに関する平均データ待ち時間を著しく短縮することができる。
【００５１】
ＶＩＩ．例示的オペレーション
次に図６〜２１を全般的に参照して、プロセッサ・コア２００、Ｌ２キャッシュ２３０、およびＩ／Ｏコントローラ２１４の要求をサービスすることに関係する論理ステップを示すいくつかの高レベル論理流れ図を与える。具体的には、図６〜９は、要求のマスタ内の様々なプロセスを示し、図１０〜２１は、ローカル相互接続およびシステム相互接続１１４、１１０を介して要求を通信およびサービスすることに関係するオペレーションを示す。相互接続１１０、１１４は、必ずしもバス式相互接続ではないが、本明細書では、そのようなオペレーションをキャッシュ・オペレーションまたはＣＰＵ（プロセッサ）オペレーションと区別するために、「バス・オペレーション」（例えばバス読取りオペレーション、バス書込みオペレーションなど）と呼ぶ．論理流れ図として、これらの図はオペレーションの厳密な順序（chronology）を伝えるものではなく、図示するオペレーションのうちの多くを同時に実施することができ、または図示するのとは異なる順序で実施できることを理解されたい。
【００５２】
Ａ．ＣＰＵオペレーションおよびキャッシュ・オペレーション
まず図６を参照すると、本発明によるデータ処理システムでプロセッサ読取り値オペレーションをサービスする例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスはブロック６００で始まり、ブロック６００は、Ｌ２キャッシュ２３０内のマスタ２３２が、関連するプロセッサ・コア２００から読取り要求を受け取ることを表す。読取り要求の受信に応答して、マスタ２３２は、ブロック６０２で、要求されたメモリ・ブロックがＬ２キャッシュ・ディレクトリ３０２内でＭ、Ｍｅ、Ｔｘ（例えばＴ、Ｔｎ、Ｔｅ、またはＴｅｎ）、Ｓｒ、またはＳ状態のいずれかに保持されているか否かを判定する。そうである場合、ブロック６２４に図示するように、マスタ２３２は、Ｌ２キャッシュ・アレイ３００にアクセスして、要求されたメモリ・ブロックを取得し、要求されたメモリ・ブロックを要求側プロセッサ・コア２００に供給する。その後、プロセスはブロック６２６で終了する。
【００５３】
ブロック６０２に戻ると、要求されたメモリ・ブロックがＬ２ディレクトリ３０２内でＭ、Ｍｅ、Ｔｘ、Ｓ、またはＳｒ状態のいずれかに保持されていない場合、ブロック６０４で、既存のキャッシュ・ラインのキャストアウトが、要求されたメモリ・ブロックをＬ２キャッシュ２３０内に収容することが必要であるか否かの判定も行う。一実施形態では、要求側プロセッサのＬ２キャッシュ２３０から退去させるための犠牲として選択されたメモリ・ブロックが、Ｍ、Ｔ、Ｔｅ、Ｔｎ、またはＩｇコヒーレンシ状態のいずれかであるとしてＬ２ディレクトリ３０２内でマークされる場合、ブロック６０４および後続の図中の同様のブロックでキャストアウト・オペレーションが必要である。ブロック６０４でのキャストアウトが必要であるという判定に応答して、ブロック６０６で示すように、キャッシュ・キャストアウト・オペレーションが実施される。同時に、マスタ２３２が、ブロック６１０で、バス読取りオペレーションをローカル・オペレーションまたはグローバル・オペレーションとして発行するか否かを判定する。
【００５４】
各バス・オペレーションが当初ローカル・オペレーションとして発行され、ローカル・オペレーションとして１度だけ発行される第１実施形態では、ブロック６１０に示す判定（および後続の図中の同様の判定）は、バス読取りオペレーションがローカル・バス読取りオペレーションとして以前に発行されたか否かについてのマスタによる判定を単に表すことができる。ローカル・バス・オペレーションを再試行できる第２代替実施形態では、ブロック６１０で示す判定は、バス読取りオペレーションが回数のしきい値より多く以前に発行されたか否かについてのマスタによる判定を表すことができる。第３代替実施形態では、ブロック６１０で行われる判定は、ローカル・オペレーションが成功する可能性が高い（例えば、それがＨＰＣである、またはローカル・コヒーレンシ・ドメイン内のＨＰＣを見つける可能性が高い）か否かについてのマスタによる予測に基づくことができる。
【００５５】
ブロック６１０での、ローカル・バス読取りオペレーションではなく、グローバル・バス読取りオペレーションを発行するという判定に応答して、プロセスはブロック６１０から、以下で説明するブロック６２０に進む。一方、ブロック６１０で、ローカル・バス読取りオペレーションを発行するという判定が行われた場合、ブロック６１２に示し、図１０を参照しながら以下で説明するように、マスタ２３２は、そのローカル相互接続１１４上でローカル・バス読取りオペレーションを開始する。ローカル・バス読取りオペレーションは、マスタ２３２を含むローカル・コヒーレンシ・ドメイン（例えば処理ノード１０２）内でのみブロードキャストされる。マスタ２３２が「成功」を示すＣＲを受け取った場合（ブロック６１４）、ブロック６２４に示すように、マスタ２３２は、要求されたメモリ・ブロックを受け取り、要求されたメモリ・ブロック（またはその少なくとも一部）を要求側プロセッサ・コア２００に返す。その後、プロセスはブロック６２６で終了する。
【００５６】
ブロック６１４に戻ると、ローカル・バス読取りオペレーションに関するＣＲが「成功」を示さない場合、マスタ２３２は、ブロック６１６で、ローカル・コヒーレンシ・ドメイン内でバス読取りオペレーションをサービスすることができず、したがってグローバル・バス読取りオペレーションとして再発行すべきことをＣＲが明確に示しているか否かを判定する。そうである場合（例えば、別のコヒーレンシ・ドメイン内のＬ２キャッシュ２３０が要求されたメモリ・ブロックをＭ状態またはＭｅ状態に保持する場合）、プロセスは、以下で説明するブロック６２０に進む。一方、ローカル・コヒーレンシ・ドメイン内でバス読取りオペレーションをサービスできないことをＣＲが明確に示していない場合、プロセスはブロック６１６からブロック６１０に戻る。ブロック６１０は、ローカル・バス読取りオペレーションを発行するか否かをマスタ２３２が再び判定することを示す。この場合、マスタ２３２は、判定において、ＣＲによって提供された任意の追加の情報を利用することができる。ブロック６１０に続いて、プロセスは、上述のブロック６１２またはブロック６２０に進む。
【００５７】
ブロック６２０は、図１１〜１２を参照しながら以下で説明するように、マスタ２３０がグローバル・バス読取りオペレーションを発行することを示す。グローバル・バス読取りオペレーションのＣＲがブロック６２２で「成功」を示さない場合、マスタ２３２は、「成功」を示すＣＲを受け取るまで、ブロック６２０でグローバル・バス読取りオペレーションを反復する。グローバル・バス読取りオペレーションのＣＲが「成功」を示す場合、マスタ２３２は、ブロック６２４で、要求されたメモリ・ブロックを受け取り、要求されたメモリ・ブロック（または少なくともその一部）を要求側プロセッサ・コア２００に返す。その後、プロセスはブロック６２６で終了する。
【００５８】
したがって、同一のコヒーレンシ・ドメイン内のプロセスおよびそのデータ間のアフィニティを仮定すると、図６に示すＣＰＵ読取りオペレーションなどのオペレーションを、要求側マスタのコヒーレンシ・ドメインに範囲が限定されたブロードキャスト通信を使用して、頻繁にサービスすることができる。したがって、上述のデータ送達ドメインとコヒーレンシ・ドメインとの組合せは、ブロードキャスト通信の範囲を限定することにより、データ・アクセス待ち時間を改善するだけでなく、システム相互接続（およびその他のローカル相互接続）上のトラフィックも低減させる。
【００５９】
次に図７〜８を参照すると、本発明によるデータ処理システムでプロセッサ更新オペレーションをサービスする例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、Ｌ２キャッシュ２３０が同一の処理装置１０４内のプロセッサ・コア２００のうちの関連する１つによる更新要求を受け取ることに応答して、ブロック７００で始まる。更新要求の受信に応答して、ブロック７０２に示すように、Ｌ２キャッシュ２３０のマスタ２３２は、Ｌ２キャッシュ・ディレクトリ３０２にアクセスし、更新要求によって指定される要求アドレスによって参照されるメモリ・ブロックがＭ状態のＬ２キャッシュ２３０内にキャッシュされるかどうかを判定する。そうである場合、ブロック７０４で示すように、マスタ２３２は、プロセッサ・コア２００によって供給される新しいデータでＬ２キャッシュ２３２内のメモリ・ブロックを更新する。その後、更新プロセスはブロック７０６で終了する。
【００６０】
ブロック７１０〜７１２に示すように、そうではなく、Ｌ２キャッシュ２３０が指定のメモリ・ブロックをＭｅ状態に保持することをＬ２キャッシュ・ディレクトリ３０２が示す場合、ブロック７０４に示すように、マスタ２３２は、メモリ・ブロックを更新することに加えて、要求されたメモリ・ブロックに関する状態フィールド３０６をＭ状態に更新する。その後に、プロセスはブロック７０６で終了する。
【００６１】
図８へのページ結合子Ａに続いて、Ｌ２キャッシュ２３０が要求されたメモリ・ブロックに対するＨＰＣであり、要求されたメモリ・ブロックが、場合によっては１つまたは複数の他のＬ２キャッシュ２３０内に保持される可能性があることを意味する、ＴまたはＴｅ状態の要求されたメモリ・ブロックをＬ２キャッシュ２３０が保持することをＬ２キャッシュ・ディレクトリ３０２が示す場合（ブロック７２０）、マスタ２３２は、メモリ・ブロックに対する要求された更新を実施するために、要求されたメモリ・ブロックへの排他的アクセスを得なければならない。要求されたメモリ・ブロックへの排他的アクセスをマスタ２３２が得るプロセスを、ブロック７２２およびその後のブロックに示す。
【００６２】
このプロセスによれば、ブロック７２２に示すように、マスタ２３２は、Ｌ２キャッシュ・ディレクトリ３０２の関連する状態フィールド３０６内の要求されたメモリ・ブロックの状態をＭ状態に更新する。このアップグレードでは、他のＬ２キャッシュ２３０にまず通知することなくキャッシュ状態が許容される。ＨＰＣとして、Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックへの排他的アクセスをそれ自体に与える権限を有するからである。ブロック７２４に示すように、Ｌ２キャッシュ２３０のスヌーパ２３６は、要求されたメモリ・ブロックの所有権を他のマスタがそれによってシークしている、そのローカル相互接続１１４上にスヌープされた競合するＤＣｌａｉｍオペレーションが存在するならばそれに「ダウングレード」部分応答を提供する。こうした部分応答は、他の要求側がそのようなどんな競合オペレーションもバスＲＷＩＴＭオペレーションとして再発行しなければならないことを示す。さらに、ブロック７２６に示すように、マスタ２３２は、図１９を参照しながら以下で説明するように、システム相互接続１１０上にグローバル・バス・キル・オペレーションを発行し、メモリ・ブロックの他の任意のキャッシュされたコピーを無効にする。
【００６３】
次に、マスタ２３２は、ブロック７９０および７２８で、バス・キル・オペレーションが要求されたメモリ・ブロックの他のすべてのキャッシュされたコピーを首尾よく無効にしたことをバス・キル・オペレーションに対するＣＲが示すか否か、または追加のローカルまたはグローバル「クリーンアップ」（すなわち、他のキャッシュされたコピーの無効化）が必要かどうかを判定する。追加のクリーンアップが不要であることＣＲが示す場合、プロセスは、ページ連結子Ｃを通じて、前述の図７のブロック７０４に進む。追加のクリーンアップが必要であることをＣＲが示す場合、マスタ２３２は、要求されたメモリ・ブロックの他のキャッシュされたコピーがそのローカル・コヒーレンシ・ドメイン内に完全にあることをＣＲが示すかどうか、または要求されたメモリ・ブロックの少なくとも１つのコピーがマスタ２３２のローカル・コヒーレンシ・ドメインの外部にキャッシュされるかどうかを追加で判定する（ブロック７９０および７２８）。要求されたメモリ・ブロックの残りのキャッシュされた各コピーがマスタ２３２のローカル・コヒーレンシ・ドメイン内にあることをＣＲが示す場合、要求側Ｌ２キャッシュ２３０のスヌーパ２３６は、引き続きアクティブ・バスＤＣｌａｉｍオペレーションをダウングレードし（ブロック７８６）、要求側Ｌ２キャッシュ２３０のマスタ２３２は、メモリ・ブロックの他のすべてのキャッシュされたコピーが無効となるまで、マスタ２３２のローカル・コヒーレンシ・ドメインに範囲が限定されたローカル・バス・キル・オペレーションを引き続き発行する（ブロック７８８）。要求されたメモリ・ブロックの少なくとも１つの残りのキャッシュされたコピーがリモート・コヒーレンシ・ドメイン内にあることをＣＲが示す場合、プロセスは、前述のブロック７２４に戻る。
【００６４】
次にブロック７８０を参照すると、要求されたメモリ・ブロックがＴｎまたはＴｅｎ状態のうちの１つに保たれることをＬ２キャッシュ・ディレクトリ３０２へのアクセスが示す場合、マスタ２３２は、要求側Ｌ２キャッシュ２３０が要求されたメモリ・ブロックに対するＨＰＣであること、および要求されたメモリ・ブロックの他の任意のキャッシュされたコピーがそのローカル・コヒーレンシ・ドメイン内のキャッシュによって保たれることを認識する。したがって、ブロック７８４で示すように、マスタ２３２は、Ｌ２キャッシュ・ディレクトリ３０２の関連する状態フィールド３０６内の要求されたメモリ・ブロックの状態をＭ状態に更新する。さらに、要求側Ｌ２キャッシュ２３０のスヌーパ２３６は、「ダウングレード」部分応答を、そのローカル相互接続１１４上にスヌープされた任意の競合するＤＣｌａｉｍオペレーションに提供し（ブロック７８６）、要求側Ｌ２キャッシュ２３０のマスタ２３２は、メモリ・ブロックの他のすべてのキャッシュされたコピーが無効となるまで、マスタ２３２のローカル・コヒーレンシ・ドメインに範囲が限定されたローカル・バス・キル・オペレーションを引き続き発行する（ブロック７８８）。ローカル・バス・キル・オペレーションに対するＣＲを参照することにより、さらなるローカル・クリーンアップが不要であるとマスタ２３２が判定した場合（ブロック７９０）、プロセスは、ブロック７２８およびページ連結子Ｃを通過して、前述のブロック７０４まで進む。
【００６５】
次に図７のブロック７３０を参照すると、要求されたメモリ・ブロックがＳｒまたはＳ状態に保たれることをＬ２キャッシュ・ディレクトリ３０２へのアクセスが示す場合、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックに対するＨＰＣではなく、マスタ２３２は、メモリ・ブロックを更新する前に、ＨＰＣが存在する場合はＨＰＣから、ＨＰＣが存在しない場合はＬＰＣから、要求されたメモリ・ブロックの所有権を得なければならない。
【００６６】
したがって、マスタ２３２は、まずブロック７３１で、バスＤＣｌａｉｍオペレーションをローカル・オペレーションとして発行するか、それともグローバル・オペレーションとして発行するかを判定する。マスタ２３２がグローバル・バスＤＣｌａｉｍオペレーションを発行するように判定を行った場合、プロセスは、前述のブロック７４０に進む。ブロック７３１での、バスＤＣｌａｉｍオペレーションをローカル・オペレーションとして発行するという判定に応答して、図１６を参照しながら以下でより詳細に説明するように、マスタ２３２は、ブロック７３２でローカル・バスＤＣｌａｉｍオペレーションを発行する。次いで、マスタ２３２は、判定ブロック７３４、７３６、および７３８の集合によって表される、ローカル・バスＤＣｌａｉｍオペレーションのＣＲの受信を待つ。ＣＲが「再試行」を示す場合（ブロック７３４）、プロセスは、前述のブロック７３１に戻る。あるいは、バスＤＣｌａｉｍオペレーションをローカル・コヒーレンシ・ドメインでサービスできないことをＣＲが明確に示す場合（ブロック７３６）、プロセスは、以下で説明するブロック７４０に進む。あるいは、別の要求者が要求されたメモリ・ブロックの所有権をバスＤＣｌａｉｍオペレーションを介して得たことを意味する「ダウングレード」をＣＲが示す場合、プロセスは、以下で説明するブロック７４８に進む。あるいは、ローカル・バスＤＣｌａｉｍオペレーションに基づいて、ＨＰＣによって要求されたメモリ・ブロックの所有権がマスタ２３２に与えられたことをＣＲが示す場合、プロセスはページ連結子Ｄを通過して、前述の図８のブロック７９０および後続のブロックに進む。
【００６７】
図１７に関して以下で説明するように、ブロック７４０は、マスタ２３２がグローバル・バスＤＣｌａｉｍオペレーションを発行することを示す。次に、マスタ２３２は、ブロック７４２〜７４４で、グローバル・バスＤＣｌａｉｍオペレーションに対するＣＲが、グローバル・バスＤＣｌａｉｍオペレーションが成功したことを示すか、再試行すべきことを示すか、それともＲＷＩＴＭオペレーションに「ダウングレード」されたことを示すかを判定する。バスＤＣｌａｉｍオペレーションを再試行すべきことをＣＲが示す場合（ブロック７４２）、マスタ２３２は、ブロック７４０でグローバル・バスＤＣｌａｉｍオペレーションを再発行し、「再試行」以外のＣＲを受け取るまでそのようにし続ける。別の要求者が要求されたメモリ・ブロックを目標とするバスＤＣｌａｉｍオペレーションを首尾よく発行したことに応答して、グローバル・バスＤＣｌａｉｍオペレーションがダウングレードされたことを示すＣＲを受け取った場合、プロセスは、以下で説明するブロック７４６に進む。あるいは、グローバル・バスＤＣｌａｉｍオペレーションに基づいて、ＨＰＣによって要求されたメモリ・ブロックの所有権がマスタ２３２に与えられたことをＣＲが示す場合、プロセスは、ページ連結子Ｄを通過して、前述の図８のブロック７９０および後続のブロックに進む。
【００６８】
ブロック７４６は、要求側Ｌ２キャッシュ２３０のマスタ２３２が、バスＲＷＩＴＭオペレーションをローカル・オペレーションとして発行するか、それともグローバル・オペレーションとして発行するかを判定することを示す。マスタ２３２がグローバルＲＷＩＴＭオペレーションを発行することを選んだ場合、プロセスは、以下で説明するブロック７５４に進む。しかし、マスタ２３２がローカル・バスＲＷＩＴＭオペレーションを発行することを選んだ場合、プロセスはブロック７４８に進む。ブロック７４８は、マスタ２３２がローカル・バスＲＷＩＴＭオペレーションを発行し、関連するＣＲを待つことを示す。ブロック７５０で示すように、ＣＲが「再試行」を示す場合、プロセスはブロック７４６に戻る。ブロック７４６は、再試行ＣＲで提供される追加の情報が存在する場合はそれを使用して、ローカルＲＷＩＴＭオペレーションを発行するか、それともグローバルＲＷＩＴＭオペレーションを発行するかをマスタ２３２が再び判定することを示す。ブロック７４８で発行されたローカル・バスＲＷＴＩＭオペレーションに対するＣＲが「再試行」を示さず（ブロック７５０）、要求されたメモリ・ブロックの所有権を得る際にバスＲＷＩＴＭオペレーションが成功した（ブロック７５２）ことを示す場合、プロセスはページ連結子Ｄを通過して、前述の図８のブロック７９０に進む。ブロック７５２で、オペレーションをローカル・コヒーレンシ・ドメイン内でサービスできないことをローカル・バスＲＷＩＴＭオペレーションに対するＣＲが示すとマスタ２３２が判定した場合、プロセスはブロック７５４および後続のブロックに進む。
【００６９】
ブロック７５４および７５６は、図１４〜１５を参照しながら以下で説明するように、「再試行」以外のＣＲを受け取るまで、要求されたメモリ・ブロックに対するグローバル・バスＲＷＩＴＭオペレーションをマスタ２３２が反復的に発行することを示す。要求されたメモリ・ブロックの所有権をマスタ２３２が得ることに成功したことを示す非再試行ＣＲをマスタ２３２が受け取ったことに応答して（ブロック７５６）、プロセスはページ連結子Ｄを通過して、前述のブロック７９０および後続のブロックに進む。
【００７０】
次にブロック７６０を参照すると、ブロック７０２、７１０、７２０、５５０２、および７３０で否定的な判定が行われた場合、Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックの有効なコピーを保持しない。したがって、ブロック７６０および７７０に示すように、Ｌ２キャッシュ２３０は、必要ならキャッシュ・キャストアウト・オペレーションを実施して、要求されたメモリ・ブロックに対してキャッシュ・ラインを割り振る。その後、プロセスは、前述のブロック７４６および後続のブロックに進む。
【００７１】
次に図９を参照すると、本発明によるデータ処理システムでＩ／Ｏ書込みオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、接続されたＩ／Ｏ装置２１６によるＩ／Ｏ書込み要求を処理装置１０４のＩ／Ｏコントローラ２１４で受け取ったことに応答して、ブロック１０００で始まる。Ｉ／Ｏ書込み要求の受信に応答して、Ｉ／Ｏコントローラ２１４は、ブロック１００２で、要求されたメモリ・ブロックを得るためにグローバル・バス書込みオペレーションを発行するか、それともローカル・バス書込みオペレーションを発行するかを判定する。
【００７２】
Ｉ／Ｏコントローラ２１４がグローバル・バス書込みオペレーションを発行することを選んだ場合、プロセスは、以下で説明するブロック１０２０に進む。しかし、Ｉ／Ｏコントローラ２１４がローカル・バス書込みオペレーションを発行することを選んだ場合、プロセスはブロック１００４に進む。ブロック１００４は、Ｉ／Ｏコントローラ２１４が、図２０を参照して以下で説明するようにローカル・バス書込みオペレーションを発行し、次いで関連するＣＲを待つことを示す。ブロック１００６で示すように、再試行した場合にローカル・コヒーレンシ・ドメイン内でローカル・バス書込みオペレーションを明確にサービスできることを意味する「再試行ローカル（retry local）」をＣＲが示す場合、Ｉ／Ｏコントローラ２１４は、ブロック１００４でローカル・バス書込みオペレーションを再発行する。Ｉ／Ｏコントローラ２１４がより多義的な情報、例えば単なる「再試行」を与えるＣＲを受け取った場合（ブロック１００８）、プロセスは、前述のブロック１００２に戻る。あるいは、バス書込みオペレーションをローカル・コヒーレンシ・ドメイン内でサービスできないことを明確に示すＣＲをＩ／Ｏコントローラ２１４が受け取った場合（ブロック１０１０）、プロセスは、以下で説明するブロック１０２０に進む。最後に、要求されたメモリ・ブロックの所有権がＩ／Ｏコントローラ２１４に与えられたことを示すＣＲをＩ／Ｏコントローラ２１４が受け取った場合、プロセスは、ブロック１００４からブロック１００６、１００８、および１０１０を通じてブロック１０２４および後続のブロックに進む。ブロック１０２４は、以下で説明するように、Ｉ／Ｏコントローラ２１４が、必要ならクリーンアップ・オペレーションを実施することを示す。
【００７３】
次にブロック１０２０を参照すると、図９を参照しながら以下で説明するように、Ｉ／Ｏコントローラ２１４がグローバル・バスＩ／Ｏ書込みオペレーションを発行する。ブロック１０２２に示すように、Ｉ／Ｏコントローラ２１４は、「再試行」以外のＣＲを受け取るまで、グローバル・バスＩ／Ｏ書込みオペレーションを発行し続ける。ブロック１０２０で発行されたグローバル・バス書込みオペレーションに関するＣＲが、要求されたメモリ・ブロックの有効なコピーを他のスヌーパが保持していないことを示す場合（ブロック１０２４および１０４０）、プロセスはブロック１０２６で終了し、接続されたＩ／Ｏ装置２１６が、要求されたメモリ・ブロックに書き込むことができる。しかし、ブロック１０２４で、要求されたメモリ・ブロックの少なくとも１つのステールであるキャッシュされたコピーがそのローカル・コヒーレンシ・ドメインの外部のままであることをＣＲが示すとＩ／Ｏコントローラ２１４が判定した場合、Ｉ／Ｏコントローラ２１４は、要求されたメモリ・ブロックのステールであるキャッシュされたコピーがローカル・コヒーレンシ・ドメインの外部に残っていないことを示すＣＲをブロック１０２４で受け取るまで、ブロック１０３０に示すように、Ｉ／Ｏコントローラ２１４がスヌープする何らかの競合するＤＣｌａｉｍオペレーションをダウングレードし、ブロック１０３２に示すように、グローバル・バス・キル・オペレーションを発行することによってグローバル「クリーンアップ」を実施する。
【００７４】
ブロック１０４０で、要求されたメモリ・ブロックのステールであるキャッシュされたコピーがローカル・コヒーレンシ・ドメインの外部に残っていないが、要求されたメモリ・ブロックの少なくとも１つのステールであるキャッシュされたコピーがそのローカル・コヒーレンシ・ドメイン内に残ることをＣＲが示すとＩ／Ｏコントローラ２１４が判定した場合、要求されたメモリ・ブロックのステールであるキャッシュされたコピーがデータ処理システム１００内に残っていないことを示すＣＲを受け取るまで（ブロック１０２４および１０４０）、Ｉ／Ｏコントローラ２１４は、ブロック１０４２に示すように、コントローラ２１４がスヌープする任意の競合するＤＣｌａｉｍオペレーションをダウングレードし、ブロック１０４４に示すように、ローカル・バス・キル・オペレーションを発行することによってローカル「クリーンアップ」を実施する。クリーンアップ・オペレーションが完了した後、プロセスはブロック１０４１で終了する。
【００７５】
上述のように、ＴｎおよびＴｅｎコヒーレンシ状態の実装は、場合によっては共有されるメモリ・ブロックがローカル・コヒーレンシ・ドメイン内にのみさらにキャッシュされるかどうかの表示を与える。したがって、メモリ・ブロックをＴｎまたはＴｅｎ状態の一方に保持するキャッシュとしての、同一のコヒーレンシ・ドメイン内の要求側は、メモリ・ブロックに対する排他的アクセス・オペレーション（例えば、バスＤＣｌａｉｍ、バスＲＷＩＴＭ、バスＤＣＢＺ、またはバス書込みオペレーション）を発行したとき、バス・キル・オペレーションなどのブロードキャスト・オペレーションの範囲をローカル・コヒーレンシ・ドメインに制限することができ、相互接続帯域幅の使用が低減されるので有利である。
【００７６】
Ｂ．相互接続オペレーション
次に図１０〜２１を参照して、例示的データ処理システム１００での例示的ローカルおよびグローバル・バス・オペレーションを説明する。まず図１０を参照すると、本発明によるデータ処理システムでローカル・バス読取りオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。プロセスは、例えば図６のブロック６１２で、Ｌ２キャッシュ２３０がそのローカル相互接続１１４上にローカル・バス読取りオペレーションを発行することで、ブロック１３００で始まる。ローカル・バス読取りオペレーションをスヌープすることに応答してスヌーパ２２２、２３６が分散応答ロジック２１０に提供することのできる様々な部分応答が、判定ブロック１３０２、１３１０、１３１２、１３１４、１３２０、１３３０、１３３２、１３４０、１３４４、１３４６、および１３４８の結果により図１０に表されている。これらの部分応答は、ローカル・バス読取りオペレーションに関するＣＲを決定する。
【００７７】
ブロック１３０２に示すように、Ｌ２キャッシュ２３０が要求されたメモリ・ブロックをＭまたはＭｅ状態に保持することを示す部分応答を有するローカル・バス読取りオペレーションをＬ２キャッシュ２３０のスヌーパ２３６が肯定した場合、プロセスは、ブロック１３０２からブロック１３０４に進む。ブロック１３０４は、ローカル・バス読取りオペレーションに応答する、要求側Ｌ２キャッシュ２３０と肯定側Ｌ２キャッシュ２３０のオペレーションを示す。具体的には、肯定側Ｌ２キャッシュ２３０内のスヌーパ２３６が、要求されたメモリ・ブロックのキャッシュ状態をＭからＴｎに、またはＭｅからＴｅｎに更新する。さらに、肯定側Ｌ２キャッシュ２３０内のスヌーパ２３６は、ＣＲの受信前に、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始することができる（すなわち、「早期（early）」データを提供する）。受信時に、要求側Ｌ２キャッシュ２３０内のマスタ２３２は、Ｌ２キャッシュ・アレイ３００内の要求されたメモリ・ブロックをＳｒ状態に配置する。ブロック１３０８で示すように、プロセスは、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。
【００７８】
一方、Ｌ２キャッシュ２３０のスヌーパ２３６が、Ｌ２キャッシュ２３０が要求されたメモリ・ブロックをＴｘ状態に保持することを示す部分応答を有するローカル・バス読取りオペレーションを肯定し（ブロック１３１０）、かつＳｒ’スヌーパ２３６もバス読取りオペレーションを肯定した場合（ブロック１３１２）、プロセスはブロック１３１８に進む。ブロック１３１８は、Ｓｒ’スヌーパ２３６が、ＣＲの受信前に、要求されたメモリ・ブロックのキャッシュ状態をＳに更新し、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始する（すなわち、「早期」データを提供する）。Ｔｘスヌーパ２３６は不変のままである。要求されたメモリ・ブロックの受信時に、要求側Ｌ２キャッシュ２３０内のマスタ２３２は、Ｌ２キャッシュ・アレイ３００内の要求されたメモリ・ブロックをＳｒ状態に配置する。ブロック１３０８で示すように、プロセスは、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。
【００７９】
部分応答の複合体が、ローカル・バス読取りオペレーションを肯定するＴｘスヌーパ２３６を含み（ブロック１３１０）、バス読取りオペレーションを肯定するＳｒ’スヌーパ２３６を含まず（ブロック１３１２）、かつＳｒ’スヌーパ２３６が場合によってはローカル・データ送達ドメイン内に隠される可能性があることを示す部分応答（例えば再試行のタイプ）を提供するスヌーパ２３６を含む（ブロック１３１４）場合、プロセスはブロック１３１６に進む。ブロック１３１６は、バス読取りオペレーションを肯定したＴｘスヌーパ２３６が、ＣＲの受信後に要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始し（すなわち、「後期（late）」データを提供し）、要求されたメモリ・ブロックをＴｘ状態に保持することを表す。受信時に、要求側Ｌ２キャッシュ２３０内のマスタ２３２は、Ｌ２キャッシュ・ディレクトリ３００内の要求されたメモリ・ブロックをＳ状態に配置する（Ｓｒ’スヌーパ２３６が隠される可能性があり、ただ１つのＳｒ’スヌーパ２３６が、要求されたメモリ・ブロックに対して各データ送達ドメインで許可されるからである）。ブロック１３０８で示すように、プロセスは、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。
【００８０】
部分応答の複合体が、ローカル・バス読取りオペレーションを肯定するＴまたはＴｅスヌーパ２３６を含み（ブロック１３１０）、バス読取りオペレーションを肯定するＳｒ’スヌーパ２３６を含まず（ブロック１３１２）、かつＳｒ’スヌーパ２３６を場合によっては隠す可能性がある部分応答を提供するスヌーパ２３６を含まない（ブロック１３１４）場合、プロセスはブロック１３０６に進む。ブロック１３０６は、バス読取りオペレーションを肯定したＴまたはＴｅスヌーパ２３６が、ＣＲの受信後に要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始し（すなわち、「後期」データを提供し）、要求されたメモリ・ブロックをＴまたはＴｅ状態に保持することを表す。受信時に、要求側Ｌ２キャッシュ２３０内のマスタ２３２は、Ｌ２キャッシュ・アレイ３００内の要求されたメモリ・ブロックをＳｒ状態に配置する（ローカル・データ送達ドメイン内の要求されたメモリ・ブロックに対して他のＳｒ’スヌーパ２３６が存在しないからである）。ブロック１３０８で示すように、プロセスは、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。
【００８１】
次にブロック１３２０を参照すると、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６がローカル・バス読取りオペレーションを肯定しないが、Ｓｒ’スヌーパ２３６がローカル・バス読取りオペレーションを肯定する場合、ブロック１３２２に従ってローカル・バス読取りオペレーションがサービスされる。具体的には、バス読取りオペレーションを肯定するＳｒ’スヌーパ２３６が、ＣＲの受信前に、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始し、Ｌ２キャッシュ・ディレクトリ３０２内の要求されたメモリ・ブロックの状態をＳ状態に更新する。要求側Ｌ２キャッシュ２３０内のマスタ２３２は、そのＬ２キャッシュ・アレイ３００内の要求されたメモリ・ブロックをＳｒ状態に配置する。ブロック１３０８に示すように、プロセスは、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。
【００８２】
次にブロック１３２４を参照すると、Ｍ、Ｍｅ、Ｔｘ、またはＳｒ’スヌーパ２３６がローカル・バス読取りオペレーションを肯定しない場合、Ｌ２キャッシュ２３０は、Ｌ２キャッシュ２３０が要求されたメモリ・ブロックのアドレス・タグをＩｇ状態に保持することを示すローカル・バス読取りオペレーションを肯定する部分応答を提供する。Ｍ、Ｍｅ、Ｔｘ、またはＳｒ’スヌーパ２３６が、不完全な部分応答によって場合によっては隠されることがない場合（ブロック１３３２）、ブロック３１６４で示すように、分散応答ロジック２１０は、「ｇｏ  ｇｌｏｂａｌ」ＣＲを提供する。一方、Ｉｇスヌーパ２３６がローカル・バス読取りオペレーションを肯定し、部分応答の複合体が、Ｍ、Ｍｅ、Ｔｘ、またはＳｒ’スヌーパ２３６が場合によっては隠されることを示す場合、ブロック１３４２で示すように、応答ロジック２１０は、「再試行」ＣＲを生成する。
【００８３】
次にブロック１３３０を参照すると、Ｍ、Ｍｅ、Ｔｘ、Ｓｒ’、またはＩｇスヌーパ２３６がローカル・バス読取りオペレーションを肯定せず、さらに、スヌーパ２２２が要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答を提供しない場合、プロセスは、前述のブロック１３３２に進む。しかし、Ｍ、Ｍｅ、Ｔｘ、Ｓｒ’、またはＩｇスヌーパ２３６がローカル・バス読取りオペレーションを肯定せず、さらに、スヌーパ２２２が要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答を提供する場合、プロセスはブロック１３４０に進む。
【００８４】
次にブロック１３４０を参照すると、スヌーパ２２２が要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答を提供するが、スヌーパ２２２がローカル・バス読取りオペレーションを肯定しない場合、ブロック１３４２に示すように、応答ロジック２１０は、「再試行」を示すＣＲを生成する。しかし、スヌーパ２２２がローカル・バス読取りオペレーションを肯定する場合、プロセスはブロック１３４４に進む。メモリ・コントローラ・スヌーパ２２２がバス読取りオペレーションを肯定し、Ｌ２キャッシュ・スヌーパ２３６が要求されたメモリ・ブロックをＭ、Ｍｅ、Ｔｘ、またはＩｇ状態のうちの１つに保持できることを示す部分応答を提供するが、ローカル・バス読取りオペレーションを肯定しない場合、判定ブロック１３４４に示すように、応答ロジック２１０はやはりブロック１３４２で「再試行」ＣＲを生成する。これらの各ケースでは、バス読取りオペレーションがローカル・オペレーションとして再発行される場合、グローバル・ブロードキャストを用いることなくバス読取りオペレーションをサービスすることができるので、応答ロジック２１０が「再試行」ＣＲを生成する。
【００８５】
次にブロック１３４６を参照すると、Ｍ、Ｍｅ、Ｔｘ、またはＩｇスヌーパ２３６がローカル・バス読取りオペレーションを肯定せず、Ｍ、Ｍｅ、Ｔｘ、またはＩｇスヌーパ２３６が場合によって隠されることがなく、メモリ・コントローラ・スヌーパ２２２がローカル・バス読取りオペレーションを肯定する場合、各ブロック１３５０、１３５２、および１３５４で示すように、ローカル・バス読取りオペレーションを肯定するスヌーパ２２２は、ＣＲに応答して、要求されたメモリ・ブロックおよび関連するドメイン標識５０４を要求側Ｌ２キャッシュ２３０に提供する。ブロック１３５０、１３５２、および１３５４で示すように、要求側Ｌ２キャッシュ２３０のマスタ２３２は、ＣＲとドメイン標識５０４の状態とに従って、要求されたメモリ・ブロックを処理する。具体的には、ブロック１３６０で、要求されたメモリ・ブロックの修正後コピーをローカル・ドメインの外部にキャッシュできることを意味する「グローバル」にドメイン標識３００４がリセットされることをマスタ２３２が判定した場合、要求側Ｌ２キャッシュ２３０のマスタ２３２は、要求されたメモリ・ブロックを廃棄し、要求されたメモリ・ブロックに関してＩ状態にとどまる。さらに、「グローバル」ドメイン標識５０４に照らして、マスタ２３２は、マスタ２３２がバス読取りオペレーションをグローバル・バス読取りオペレーションとして再発行することを意味する「ｇｏ  ｇｌｏｂａｌ」をＣＲが示すと解釈する（ブロック１３６４）。
【００８６】
一方、ドメイン標識５０４が「ローカル」を示すようにセットされる場合（ブロック１３６０）、要求側キャッシュ２３０のマスタ２３２は、ＣＲが「成功」を示すと解釈し（ブロック１３０８）、要求されたメモリ・ブロックとドメイン標識５０４をどちらもそのＬ２キャッシュ・アレイ３００内に配置する。マスタ２３２はまた、要求されたメモリ・ブロックに関連する状態フィールド３０６を、ＣＲによって示される状態にセットする。具体的には、Ｓｒ’スヌーパ２３６が隠される可能性があることを部分応答、したがってＣＲが示す場合（ブロック１３４６）、メモリ・ブロックのただ１つのＳｒコピーが任意のドメインで許可されるので、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＳ状態に保持する（ブロック１３５０）。あるいは、Ｓｒ’スヌーパ２３６が隠される可能性がないが、Ｓ’スヌーパ２３６が隠される可能性があることを部分応答およびＣＲが示す場合、要求側Ｌ２キャッシュ２３６は、要求されたメモリ・ブロックをＳｒ状態に保持する（ブロック１３５２）。最後に、Ｓｒ’スヌーパ２３６とＳ’スヌーパ２３６がどちらも場合によっては隠される可能性がない場合（ブロック１３４８）、要求側Ｌ２キャッシュ２３０が、要求されたメモリ・ブロックを保持するシステム全体で唯一のキャッシュであることが保証されるので、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭｅ状態に保持する（ブロック１３５４）。
【００８７】
次に図１１〜１２を参照すると、本発明によるＴｎおよびＴｅｎコヒーレンシ状態を実装するデータ処理システムでグローバル・バス読取りオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。プロセスは、例えば図６のブロック６２０で、Ｌ２キャッシュ２３０がそのローカル相互接続１１４上にグローバル・バス読取りオペレーションを発行することで、ブロック１４００で始まる。グローバル・バス読取りオペレーションをスヌープすることに応答してスヌーパ２２２、２３６が分散応答ロジック２１０に提供することのできる様々な部分応答が、判定ブロック１４０２、１４１０、１４１２、１４１４、１４２０、１４３０、１４４０、１４４２、１４４４、および１４４６の結果により図１１に表されている。これらの部分応答は、グローバル・バス読取りオペレーションに関するＣＲを決定する。
【００８８】
ブロック１４０２に示すように、Ｌ２キャッシュ２３０が要求されたメモリ・ブロックをＭまたはＭｅ状態に保持することを示す部分応答を有するグローバル・バス読取りオペレーションをＬ２キャッシュ２３０のスヌーパ２３６が肯定した場合、プロセスは、ブロック１４０２からページ連結子Ｊを通じて図１２のブロック１４８０に進む。ブロック１４８０は、グローバル・バス読取りオペレーション内の範囲標識で示されるように、ＭまたはＭｅスヌーパ２３６が要求側Ｌ２キャッシュ２３０にとってローカル（すなわち、同一のコヒーレンシ・ドメイン内）であるかどうかに応じて、ＭまたはＭｅスヌーパ２３６がそのキャッシュ状態を異なる仕方で更新することを表す。どちらの場合も、肯定側Ｌ２キャッシュ２３０内のスヌーパ２３６は、ＣＲの受信前に、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始することができ（すなわち、「早期」データを提供する）、受信時に、要求側Ｌ２キャッシュ２３０内のマスタ２３２は、そのＬ２キャッシュ・アレイ３００内の要求されたメモリ・ブロックをＳｒ状態に配置する（ブロック１４８１および１４８２）。しかし、スヌーパ２３６が要求側Ｌ２キャッシュ２３０にとってローカルではない場合、肯定側Ｌ２キャッシュ２３０内のスヌーパ２３６が要求されたメモリ・ブロックの状態をＭからＴに、またはＭｅからＴｅに更新し（ブロック１４８１）、スヌーパ２３６がローカルである場合、要求側メモリ・ブロックの状態をＭからＴｎに、またはＭｅからＴｅｎに更新する（ブロック１４８２）。次いで、プロセスは、ページ連結子Ｎを通じて図１１に戻り、ブロック１４０８に示すように、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。
【００８９】
Ｌ２キャッシュ２３０が要求されたメモリ・ブロックをＴ、Ｔｎ、Ｔｅ、またはＴｅｎ状態（ブロック１４１０では一般的にＴｘと示す）のいずれかに保持することを示す部分応答を有するグローバル・バス読取りオペレーションをＬ２キャッシュ２３０のスヌーパ２３６が肯定し、Ｓｒ’スヌーパ２３６もバス読取りオペレーションを肯定した場合（ブロック１４１２）、プロセスはページ連結子Ｍを通じてブロック１４９２に進む。ブロック１４９２は、グローバル・バス読取りオペレーションの範囲標識が、スヌーパ２３６が要求側Ｌ２キャッシュ２３０のコヒーレンシ・ドメイン内であることを示したかどうかに応じて、肯定側Ｔｘスヌーパ２３６が、要求されたメモリ・ブロックの状態を異なる仕方で更新することを示す。どちらの場合も、Ｓｒ’スヌーパ２３６は、ＣＲの受信前に、要求されたメモリ・ブロックの状態をＳに更新し、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始する（ブロック１４９４および１４９５）。受信時に、要求側Ｌ２キャッシュ２３０内のマスタ２３２は、Ｌ２キャッシュ・アレイ３００内の要求されたメモリ・ブロックをＳｒ状態に配置する（ブロック１４９４および１４９５）。さらに、必要なら、スヌーパ２３６が要求側Ｌ２キャッシュ２３０にとってローカルではない場合、Ｔｘスヌーパ２３６は、要求されたメモリ・ブロックの状態をＴｎからＴに、またはＴｅｎからＴｅに更新するが（ブロック１４９４）、Ｔｘスヌーパ２３６が要求側Ｌ２キャッシュにとってローカルである場合、要求されたメモリ・ブロックの状態を不変のままにする（ブロック１４９５）。次いで、プロセスは、ページ連結子Ｎを通じて図１１に戻り、ブロック１４０８に示すように、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。
【００９０】
部分応答の複合体が、グローバル・バス読取りオペレーションを肯定するＴｘスヌーパ２３６を含み（ブロック１４１０）、バス読取りオペレーションを肯定するＳｒ’スヌーパ２３６を含まず（ブロック１４１２）、かつ部分応答（例えば再試行のタイプ）を提供するスヌーパ２３６が、Ｓｒ’スヌーパ２３６がローカル・データ送達ドメイン内に存在する可能性を示すが、グローバル・バス読取りオペレーションを肯定しなかった場合、プロセスは、ページ連結子Ｌを通じて図１２のブロック１４８８に進む。ブロック１４８８は、グローバル・バス読取りオペレーションの範囲標識が、スヌーパ２３６が要求側Ｌ２キャッシュ２３０のコヒーレンシ・ドメイン内であることを示したかどうかに応じて、肯定側Ｔｘスヌーパ２３６が、要求されたメモリ・ブロックの状態を異なる仕方で更新することを示す。どちらの場合も、グローバル・バス読取りオペレーションを肯定したＴｘスヌーパ２３６は、ＣＲの受信後に、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始する（ブロック１４８９および１４９０）。受信時に、要求側Ｌ２キャッシュ２３０内のマスタ２３２は、Ｌ２キャッシュ・ディレクトリ３００内の要求されたメモリ・ブロックをＳ状態に配置する（Ｓｒ’スヌーパ２３６がローカル・ドメイン内に隠される可能性があるので、要求側キャッシュ２３６およびただ１つのＳｒ’スヌーパ２３６が、要求されたメモリ・ブロックに対して各ドメインで許可される）。さらに、必要なら、Ｔｘスヌーパ２３６は、スヌーパ２３６が要求側Ｌ２キャッシュ２３０にとってローカルではない場合、要求されたメモリ・ブロックの状態をＴｎからＴに、またはＴｅｎからＴｅに更新し（ブロック１４８９）、Ｔｘスヌーパ２３６が要求側Ｌ２キャッシュにとってローカルである場合、要求されたメモリ・ブロックの状態を不変のままにする（ブロック１４９０）。次いで、プロセスは、ページ連結子Ｎを通じて図１１に戻り、ブロック１４０８に示すように、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。
【００９１】
部分応答の複合体が、グローバル・バス読取りオペレーションを肯定するＴｘスヌーパ２３６を含み、バス読取りオペレーションを肯定するＳｒ’スヌーパ２３６を含まず、かつＳｒ’スヌーパ２３６を隠す可能性がある部分応答を提供するスヌーパ２３６を含まない場合、プロセスは、ページ連結子Ｋを通じて図１２のブロック１４８４に進む。ブロック１４８４は、スヌーパ２３６が要求側Ｌ２キャッシュ２３０のコヒーレンシ・ドメイン内にあることをグローバル・バス読取りオペレーションの範囲標識が示すかどうかに応じて、肯定側Ｔｘスヌーパ２３６が、要求されたメモリ・ブロックの状態を異なる仕方で更新することを示す。どちらの場合も、グローバル・バス読取りオペレーションを肯定したＴｘスヌーパ２３６は、ＣＲの受信後に、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始し（すなわち「後期」データを提供し）、要求側Ｌ２キャッシュ２３０内のマスタ２３２は、Ｌ２キャッシュ・アレイ３００内の要求されたメモリ・ブロックをＳｒ状態に配置する（要求されたメモリ・ブロックに対してローカル・ドメイン内で他のＳｒ’スヌーパ２３６が存在しないため）。さらに、必要なら、スヌーパ２３６が要求側Ｌ２キャッシュ２３０にとってローカルではない場合、Ｔｘスヌーパ２３６は、要求されたメモリ・ブロックの状態をＴｎからＴに、またはＴｅｎからＴｅに更新するが（ブロック１４８５）、Ｔｘスヌーパ２３６が要求側Ｌ２キャッシュにとってローカルである場合、要求されたメモリ・ブロックの状態を不変のままにする（ブロック１４８６）。次いで、プロセスは、ページ連結子Ｎを通じて図１１に戻り、ブロック１４０８に示すように、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。
【００９２】
次にブロック１４２０を参照すると、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６がグローバル・バス読取りオペレーションを肯定せず、Ｓｒ’スヌーパ２３６がグローバル・バス読取りオペレーションを肯定する場合、ブロック１４２２に従ってグローバル・バス読取りオペレーションがサービスされる。具体的には、グローバル・バス読取りオペレーションを肯定したＳｒ’スヌーパ２３６が、ＣＲの受信前に、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始し、そのＬ２キャッシュ・ディレクトリ３０２内の要求されたメモリ・ブロックの状態をＳ状態に更新する。要求側Ｌ２キャッシュ２３０内のマスタ２３２は、Ｌ２キャッシュ・アレイ３００内の要求されたメモリ・ブロックをＳｒ状態に配置する。プロセスは、ブロック１４０８に示すように、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。
【００９３】
次にブロック１４３０を参照すると、Ｍ、Ｍｅ、Ｔｘ、またはＳｒ’スヌーパ２３６がグローバル・バス読取りオペレーションを肯定せず、さらに、スヌーパ２２２が要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答を提供しない場合、あらゆるメモリ・ブロックがＬＰＣを有する必要があるので、ブロック１４３２に示すように処理を停止するエラーが発生する。
【００９４】
次にブロック１４４０を参照すると、スヌーパ２２２が要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答を提供するが、グローバル・バス読取りオペレーションを肯定しない場合、ブロック１４５０で示すように、応答ロジック２１０が、「再試行」を示すＣＲを生成する。判定ブロック１４４２で示すように、メモリ・コントローラ・スヌーパ２２２がグローバル・バス読取りオペレーションを肯定し、かつ要求されたメモリ・ブロックをＭ、Ｍｅ、またはＴｘ状態のうちの１つにＬ２キャッシュ・スヌーパ２３６が保持できるが、グローバル・バス読取りオペレーションを肯定することができないことを示す部分応答をＬ２キャッシュ・スヌーパ２３６が提供する場合、応答ロジック２１０は、ブロック１４５０で同様に「再試行」ＣＲを生成する。これらの各ケースでは、要求されたメモリ・ブロックを要求側Ｌ２キャッシュ２３０にソーシングするのに、場合によっては隠されるスヌーパ２３６のうちの１つが必要である可能性があるので、応答ロジック２１０が「再試行」ＣＲを生成して、オペレーションを再発行させる。
【００９５】
次にブロック１４４４を参照すると、Ｍ、Ｍｅ、Ｔｘ、またはＳｒ’スヌーパ２３６がバス読取りオペレーションを肯定せず、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６が場合によっては隠され、かつメモリ・コントローラ・スヌーパ２２２がグローバル・バス読取りオペレーションを肯定する場合、各ブロック１４５２および１４５４で示すように、グローバル・バス読取りオペレーションを肯定するスヌーパ２２２が、ＣＲに応答して、要求されたメモリ・ブロックおよび関連するドメイン標識５０４を要求側Ｌ２キャッシュ２３０に提供する。ブロック１４４４、１４４６、１４５２、１４５４、および１４５６で示すように、要求側Ｌ２キャッシュ２３０のマスタ２３２は、部分応答に従って、要求されたメモリ・ブロックを処理し、ブロック１４０８で表される「成功」ＣＲに変換される（compile）。具体的には、Ｓｒ’またはＳ’スヌーパ２３６が場合によっては隠されないことをＣＲが示す場合、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭｅ状態に保持し（ブロック１４５６）、Ｓｒ’スヌーパ２３６が場合によっては隠されるのではなく、かつＳ’スヌーパ２３６が場合によっては隠される場合、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＳｒ状態に保持し、Ｓｒ’スヌーパ２３６が場合によっては隠される場合、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＳ状態に保持する。
【００９６】
ＣＲに応答して、要求されたメモリ・ブロックに対するＬＰＣであるメモリ・コントローラ・スヌーパ２２２は、ブロック１４６０、１４６２、１４７０、１４７２、および１４７４で示すように、次いで、要求されたメモリ・ブロックに関するドメイン標識を更新するかどうかを判定する。要求されたメモリ・ブロックに関する新しいキャッシュ状態がＭｅであることをＣＲが示す場合、ＬＰＣスヌーパ２２２は、グローバル・バス読取りオペレーション内の範囲標識を参照することにより、それが要求側Ｌ２キャッシュ２３０と同じドメイン内にあるかどうかを判定し（ブロック１４６０）、ドメイン標識５０４がローカルを示すのか、それともグローバルを示すのかを判定する（ブロック１４６０および１４７２）。ＬＰＣが要求側Ｌ２キャッシュ２３０と同じドメイン内にある場合（ブロック１４６０）、ＬＰＣスヌーパ２２２は、ドメイン標識５０４が「グローバル」にリセットされている場合、ドメイン標識５０４を「ローカル」にセットする（ブロック１４６２および１４６４）。ＬＰＣが要求側Ｌ２キャッシュ２３０と同じドメイン内にない場合（ブロック１４６０）、ＬＰＣスヌーパ２２２は、ドメイン標識５０４が「ローカル」にセットされている場合にドメイン標識５０４を「グローバル」にリセットする（ブロック１４７２および１４７４）。
【００９７】
要求されたメモリ・ブロックに関する新しいキャッシュ状態がＳまたはＳｒであることをＣＲが示す場合、ＬＰＣスヌーパ２２２は、要求側Ｌ２キャッシュ２３０と同じドメイン内にあるかどうか（ブロック１４７０）、およびドメイン標識５０４がローカルを示すか、それともグローバルを示すか（ブロック１４７２）を同様に判定する。ＬＰＣが要求側Ｌ２キャッシュ２３０と同じドメイン内にある場合（ブロック１４７０）、ドメイン標識５０４に対する更新は不要である。しかし、ＬＰＣが要求側Ｌ２キャッシュ２３０と同じドメイン内にない場合（ブロック１４７０）、ＬＰＣスヌーパ２２２は、ドメイン標識５０４が「ローカル」にセットされている場合にドメイン標識５０４を「グローバル」にリセットする（ブロック１４７２および１４７４）。したがって、ＬＰＣスヌーパ２２２は、ＣＲの受信に応答して、必要ならドメイン標識５０４を更新する。
【００９８】
次に図１３を参照すると、本発明によるデータ処理システムでローカル・バスＲＷＩＴＭオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。プロセスは、例えば図７のブロック７４８で、Ｌ２キャッシュ２３０のマスタ２３２がそのローカル相互接続１１４上にローカル・バスＲＷＩＴＭオペレーションを発行することで、ブロック１５００で始まる。スヌーパ２２２、２３６が分散応答ロジック２１０に提供することのできる様々な部分応答が、判定ブロック１５０２、１５１０、１５１２、１５２０、１５２４、１５３０、１５３４、１５４０、および１５４４の結果により図１３に表されている。これらの部分応答は、ローカル・バスＲＷＩＴＭオペレーションに関するＣＲを決定する。
【００９９】
ブロック１５０２に示すように、スヌーパ２３６を含むＬ２キャッシュ２３０が要求されたメモリ・ブロックをＭまたはＭｅ状態に保持することを示す部分応答を有するローカル・バスＲＷＩＴＭオペレーションをスヌーパ２３６が肯定した場合、プロセスは、ブロック１５０２からブロック１５０４に進む。ブロック１５０４は、ローカル・バスＲＷＩＴＭオペレーションに応答する、要求側Ｌ２キャッシュ２３０および肯定側Ｌ２キャッシュ２３０のオペレーションを示す。具体的には、肯定側Ｌ２キャッシュ２３０内のスヌーパ２３６が、要求されたメモリ・ブロックのキャッシュ状態をＭまたはＭｅ状態からＩ状態に更新し、ＣＲの受信前に、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始することができる（すなわち、「早期」データを提供する）。受信時に、要求側Ｌ２キャッシュ２３０内のマスタ２３２は、そのＬ２キャッシュ・アレイ３００内の要求されたメモリ・ブロックをＭ状態に配置する。ブロック１５０６で示すように、プロセスは、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。
【０１００】
ブロック１５１０を参照すると、スヌーパ２３６を含むＬ２キャッシュ２３０が要求されたメモリ・ブロックをＴ、Ｔｎ、Ｔｅ、またはＴｅｎ状態（図１３では一般的にＴｘと示す）のいずれかに保持することを示す部分応答を有するローカル・バスＲＷＩＴＭオペレーションをスヌーパ２３６が肯定し、かつＳｒ’スヌーパ２３６がローカル・バスＲＷＩＴＭオペレーションを肯定しない場合（ブロック１５１２）、プロセスはブロック１５１４に進む。ブロック１５１４は、ローカル・バスＲＷＩＴＭオペレーションを肯定したＴｘスヌーパ２３６が、応答ロジック２１０からのＣＲの受信に応答して、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始することを表す。要求されたメモリ・ブロックの受信に応答して、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭ状態に保持する。すべての有効な肯定側スヌーパ２３６（すなわち、Ｉｇではないスヌーパ２３６）が、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。
【０１０１】
部分応答の複合体が、ローカル・バスＲＷＩＴＭオペレーションを共に肯定するＴｘスヌーパ２３６およびＳｒ’スヌーパ２３６を含む場合（ブロック１５１０および１５１２）、プロセスはブロック１５１６に進む。ブロック１５１６は、ローカル・バスＲＷＩＴＭオペレーションを肯定したＳｒ’スヌーパ２３６が、応答ロジック２１０によって提供されるＣＲの受信前に、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始することを表す。要求されたメモリ・ブロックの受信に応答して、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭ状態に保持する。すべての肯定側スヌーパ２３６（すなわち、Ｉｇではないスヌーパ２３６）が、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。
【０１０２】
ブロック１５１７で示すように、ブロック１５１４および１５１６で表されるどちらの場合にも、応答ロジック２１０は、Ｔｘ肯定側スヌーパ２３６が要求されたメモリ・ブロックをＴ／Ｔｅ状態またはＴｎ／Ｔｅｎ状態の１つに保持するかどうかに応じて、ＣＲを生成する。Ｔｘスヌーパ２３６がＴまたはＴｅであった場合、ブロック１５１８に示すように、応答ロジック２１０は、「クリーンアップ」を示すＣＲを生成する。しかし、Ｔｘスヌーパ２３６がＴｎまたはＴｅｎであった場合、ブロック１５５６に示すように、有利には、応答ロジック２１０は、「ローカル・クリーンアップ」を示すＣＲを生成することによってクリーンアップ・オペレーションの範囲をローカル・ドメインに制限する。ＴｎまたはＴｅｎコヒーレンシ状態の存在が、要求されたメモリ・ブロックを保持するリモート・キャッシュがないことを保証し、ローカル・バスＲＷＩＴＭオペレーションまたは付随するバス・キル・オペレーションのより広いブロードキャストなしにコヒーレンシを維持できることを意味するので、クリーンアップ・オペレーションの制限された範囲が許可される。
【０１０３】
Ｍ、Ｍｅ、またはＴｘスヌーパ２３６（すなわちＨＰＣ）がローカル・バスＲＷＩＴＭオペレーションを肯定せず、データ転送を媒介できることを示す場合、ローカル・バスＲＷＩＴＭオペレーションは、再試行なしにＬ２キャッシュ・スヌーパ２３６でサービスすることができない。したがって、ブロック１５２０に示すように、Ｓｒ’スヌーパ２３６がローカル・バスＲＷＩＴＭオペレーションを肯定し、早期データを要求側Ｌ２キャッシュ２３０に供給する場合、ブロック１５２２に示すように、要求側Ｌ２キャッシュ２３０のマスタ２３２は、Ｓｒ’スヌーパ２３６によって提供されたデータを廃棄する。
【０１０４】
ブロック１５２４は、Ｌ２キャッシュ２３０のスヌーパ２３６が、ローカル・バスＲＷＩＴＭオペレーションを肯定し、Ｌ２キャッシュ２３０が要求されたメモリ・ブロックのアドレス・タグをＩｇ状態に保つことを示す部分応答を提供するかどうかに依存する、ローカル・バスＲＷＩＴＭオペレーションを処理する際の違いを表す。そうである場合、任意の有効な肯定側スヌーパ２３６（すなわち、Ｉｇではないスヌーパ２３６）が、関係するキャッシュ・エントリを無効にする（ブロック１５３２）。Ｍ、Ｍｅ、またはＴｘスヌーパ２３６が、不完全な部分応答によって場合によっては隠されない場合（ブロック１５３４）、ブロック１５３６に示すように、分散応答ロジック２１０は、「ｇｏ  ｇｌｏｂａｌ」ＣＲを提供する。一方、Ｉｇスヌーパ２３６がローカル・バスＲＷＩＴＭオペレーションを肯定し、部分応答の複合体が、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６が場合によっては隠されることを示す場合、ブロック１５３８に示すように、応答ロジック２１０は、「再試行」ＣＲを生成する。したがって、ＨＰＣがローカル・コヒーレンシ・ドメインで場合によっては隠されることがない場合、Ｉｇスヌーパ２３６によるローカル・バスＲＷＩＴＭオペレーションの肯定は、オペレーションをグローバル・オペレーションとして再発行させることになる。
【０１０５】
ブロック１５２４でＩｇスヌーパ２３６がローカル・バスＲＷＩＴＭオペレーションを肯定しない場合、ローカル・バスＲＷＩＴＭオペレーションは、ブロック１５３０および後続のブロックに従って処理される。具体的には、メモリ・コントローラ・スヌーパ２２２が要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答を提供しない場合（ブロック１５３０）、有効な各肯定側スヌーパ２３６は、それぞれのＬ２キャッシュ・ディレクトリ３０２内の要求されたメモリ・ブロックを無効にする（ブロック１５３２）。応答ロジック２１０によって生成されたＣＲは、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６が隠される可能性があることを何らかの部分応答が示すかどうかに依存する（ブロック１５３４）。すなわち、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６が隠される可能性がない場合、応答ロジック２１０は、ブロック１５３６で「ｇｏ  ｇｌｏｂａｌ」ＣＲを生成し、ローカル・バスＲＷＩＴＭオペレーションをグローバルＲＷＩＴＭオペレーションとして再発行しなければならないことをマスタ２３２に通知する。一方、要求されたメモリ・ブロックに対するＭ、Ｍｅ、またはＴｘスヌーパ２３６（すなわちＨＰＣ）が隠される可能性がある場合、再試行した場合オペレーションをローカルにサービスすることができるので、ブロック１５３８に示すように、応答ロジック２１０は「再試行」を示すＣＲを生成する。
【０１０６】
同様に、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６がローカル・バスＲＷＩＴＭオペレーションを肯定せず、それがＬＰＣであるがローカル・バスＲＷＩＴＭオペレーションを肯定しないことを示す部分応答をスヌーパ２２２が提供する場合、有効な肯定側スヌーパ２３６は、要求されたメモリ・ブロックのそれぞれのコピーを無効にし（ブロック１５４２）、応答ロジック２１０は、ローカル・バスＲＷＩＴＭオペレーションに対する「再試行」ＣＲを提供する（ブロック１５３８）。Ｍ、Ｍｅ、またはＴｘスヌーパ２３６がローカル・バスＲＷＴＩＭオペレーションを肯定せず（ブロック１５０２、１５１０）、スヌーパ２２２がローカル・バスＲＷＩＴＭオペレーションを肯定し（ブロック１５４０）、かつＭ、Ｍｅ、Ｔｘ、またはＩｇスヌーパ２３６が場合によっては隠される可能性がある（ブロック１５４４）場合、ブロック１５３８で「再試行」ＣＲがやはり生成され、スヌーパ２３６は、要求されたメモリ・ブロックのそれぞれのコピーを無効にする（ブロック１５４２）。
【０１０７】
ブロック１５４６で示すように、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６がローカル・バスＲＷＩＴＭオペレーションを肯定せず、または場合によっては隠されることがなく、ＬＰＣスヌーパ２２２がローカル・バスＲＷＩＴＭオペレーションを肯定する場合、有効な各肯定側スヌーパ２３６（すなわち、Ｉｇではないスヌーパ２３６）が、要求されたメモリ・ブロックのそれぞれのコピーを無効にする。さらに、ＬＰＣスヌーパ２２２は、応答ロジック２１０からＣＲを受信したことに応答して、要求されたメモリ・ブロックおよび関連するドメイン標識５０４を要求側Ｌ２キャッシュ２３０に提供する。要求側Ｌ２キャッシュ２３０のマスタ２３２は、ドメイン標識５０４に従ってデータを処理する。具体的には、ＬＰＣスヌーパ２２２から受け取ったデータをステールにする、リモート・キャッシュされたコピーが存在する可能性があることを意味する「グローバル」にドメイン標識５０４がリセットされる場合、マスタ２３２は、ＬＰＣスヌーパ２２２から受け取ったデータを廃棄し、要求されたメモリ・ブロックに関する無効なコヒーレンシ状態を維持し（ブロック１５５２）、応答ロジック２１０によって提供されたＣＲを「ｇｏ  ｇｌｏｂａｌ」と解釈する（ブロック１５３６）。一方、要求されたメモリ・ブロックのリモートのキャッシュされたコピーがＬＰＣスヌーパ２２２から受け取ったデータを潜在的にステールにすることを意味する「ローカル」にドメイン標識５０４がセットされる場合、マスタ２３２は、要求されたメモリ・ブロックおよびドメイン標識５０４をそのＬ２キャッシュ・アレイ３００内に配置し、関連する状態フィールド３０６をＭにセットする（ブロック１５４６）。Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されることを部分応答、したがってＣＲが示す場合（ブロック１５５４）、要求側Ｌ２キャッシュ２３０が要求されたメモリ・ブロックの他の有効なローカルにキャッシュされたコピーが存在する場合はそれを１つまたは複数のローカル・バス・キル・オペレーションを介して無効にしなければならないことを意味するローカル「クリーンアップ」をＣＲが示す（ブロック１５５６）。そのようなＳ’またはＳｒ’スヌーパ２３６が不完全な部分応答によって場合によっては隠されない場合、ブロック１５０６で示すように、ＣＲは「成功」を示す。
【０１０８】
ある実施形態では、ＬＰＣからのドメイン標識３００４の受信前に（ブロック１５５０）、ブロック１５５６で示すように、ローカル・バスＲＷＩＴＭオペレーションのマスタがローカル・クリーンアップを推論的に実施できることをさらに理解されよう。このようにして、ＬＰＣからのデータ送達に関連する待ち時間を、ローカル・クリーンアップ・オペレーションに含まれる１つまたは複数のローカル・バス・キル・オペレーションでマスクすることができる。
【０１０９】
次に図１４〜１５を参照すると、本発明によるデータ処理システムでグローバル・バスＲＷＩＴＭオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、例えば図７のブロック７５４でのグローバル・バスＲＷＩＴＭオペレーションを発行する要求側Ｌ２キャッシュ２３０のマスタ２３２に応答して、ブロック１６００で始まる。ブロック１６０２で示すように、スヌーパ２３６を含むＬ２キャッシュ２３０が要求されたメモリ・ブロックをＭまたはＭｅ状態に保持することを示す部分応答を有するグローバル・バスＲＷＩＴＭオペレーションをスヌーパ２３６が肯定する場合、ＭまたはＭｅスヌーパ２３６は、早期データを要求側マスタ２３２に提供し、要求側マスタ２３２は、要求されたメモリ・ブロックをＭ状態に保持する（ブロック１６０４またはブロック１６０６）。ブロック１６０７で示すように、応答ロジック２１０は「成功」を示すＣＲを生成する。さらに、ＭまたはＭｅスヌーパ２３６は、要求側マスタ２３２に対してローカル（すなわち、要求側マスタ２３２と同じコヒーレンシ・ドメイン内）であるか否か（ブロック１６０３）に応じて、そのキャッシュ状態をＩまたはＩｇに更新する。例えばバス・オペレーション内の範囲標識を参照することにより、要求側マスタ２３２と同じコヒーレンシ・ドメインに属しているとＭまたはＭｅスヌーパ２３６が判定する場合、ＭまたはＭｅスヌーパ２３６は、要求されたメモリ・ブロックに対するそのキャッシュ状態をＩに更新する（ブロック１６０６）。一方、要求側マスタ２３２と同じコヒーレンシ・ドメインに属していないとＭまたはＭｅスヌーパ２３６が判定する場合、ＭまたはＭｅスヌーパ２３６は、そのコヒーレンシ・ドメイン内の要求されたメモリ・ブロックに対するキャッシュされたドメイン標識を維持するために、要求されたメモリ・ブロックに対するそのキャッシュ状態をＩｇに更新する（ブロック１６０４）。したがって、ＬＰＣシステム・メモリ１０８内のドメイン標識５０４を更新するために、グローバル・バスＲＷＩＴＭオペレーションに応答して再試行プッシュ（retry-push）を行うことは不要である。
【０１１０】
次にブロック１６１０を参照すると、スヌーパ２３６を含むＬ２キャッシュ２３０が要求されたメモリ・ブロックをＴｎまたはＴｅｎ状態に保持することを示す部分応答を有するグローバル・バスＲＷＩＴＭオペレーションをスヌーパ２３６が肯定する場合、プロセスはブロック１６１２に進む。ブロック１６１２は、要求側マスタ２３２にとってローカルであるか否かをＴｎまたはＴｅｎスヌーパ２３６が判定することを表す。そうである場合、グローバル・バスＲＷＩＴＭオペレーションは、以下で説明するブロック１６１４および後続のブロックに従って処理される。しかし、要求側マスタ２３２にとってローカルではないと、グローバル・バスＲＷＩＴＭオペレーションを肯定するＴｎまたはＴｅｎスヌーパ２３６が判定する場合、グローバル・バスＲＷＩＴＭオペレーションは、Ｓｒ’スヌーパ２３６もグローバル・バスＲＷＩＴＭオペレーションを肯定したか否かに応じて、ブロック１６１８またはブロック１６２０に従ってサービスされる。
【０１１１】
ブロック１６１８で示すように、Ｓｒ’スヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定した場合、Ｓｒ’スヌーパ２３６は、早期データを要求側マスタ２３２に提供し、グローバル・バスＲＷＩＴＭオペレーションを肯定したＴｎまたはＴｅｎスヌーパ２３６は、要求されたメモリ・ブロックを含むエントリに関するそのキャッシュ状態をＩｇに更新する。要求されたメモリ・ブロックの受信に応答して、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭ状態に保持する。さらに、ＴｎまたはＴｅｎスヌーパ２３６以外の任意の有効な肯定側スヌーパ２３６（すなわち、Ｉｇではないスヌーパ２３６）は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。あるいは、ブロック１６２０で示すように、Ｓｒ’スヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定しない場合、ＴｎまたはＴｅｎスヌーパ２３６は、ＣＲの受信に応答して後期データを提供する。要求されたメモリ・ブロックの受信に応答して、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭ状態に保持する。さらに、ＴｎまたはＴｅｎスヌーパ２３６は、そのキャッシュ状態をＩｇに更新し、その他の任意の有効な肯定側スヌーパ２３６（すなわち、Ｉｇではないスヌーパ２３６）は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。したがって、リモートＴｎまたはＴｅｎスヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定する場合、肯定側ＴｎまたはＴｅｎスヌーパ２３６は、そのコヒーレンシ・ドメイン内の要求されたメモリ・ブロックに対するキャッシュされたドメイン標識を維持するためにＩｇ状態に入る。したがって、ＬＰＣシステム・メモリ１０８内のドメイン標識５０４を更新するために、グローバル・バスＲＷＩＴＭオペレーションに応答して再試行プッシュを行うことは不要である。
【０１１２】
ブロック１６１８および１６２０で表される場合のどちらでも、応答ロジック２１０は、グローバル・バスＲＷＩＴＭオペレーションをスヌープすることに応答して、Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されるか否か、すなわち要求されたメモリ・ブロックのそのコピーを無効にすることができないかどうかに応じて、ＣＲを生成する。ブロック１６２６で、グローバル・バスＲＷＩＴＭオペレーションに対する部分応答に基づいて、Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されると応答ロジック２１０が判定を行う場合、ブロック１６２８に示すように、応答ロジック２１０は、「クリーンアップ」を示すＣＲを生成する。あるいは、Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されることがないと応答ロジック２１０が判定する場合、ブロック１６０７で示すように、応答ロジック２１０は、「成功」を示すＣＲを生成する。
【０１１３】
ブロック１６１２に戻ると、要求側マスタ２３２にとってローカルであるＴｎまたはＴｅｎスヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定する場合、Ｓｒ’スヌーパ２３６もグローバル・バスＲＷＩＴＭオペレーションを肯定したか否かに応じて、ブロック１６２４またはブロック１６２２に従ってグローバル・バスＲＷＩＴＭオペレーションがサービスされる。
【０１１４】
ブロック１６２４で示すように、Ｓｒ’スヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定した場合、Ｓｒ’スヌーパ２３６は、早期データを要求側マスタ２３２に提供し、グローバル・バスＲＷＩＴＭオペレーションを肯定した有効な各スヌーパ２３６は、要求されたメモリ・ブロックを含むエントリに関するそれぞれのキャッシュ状態をＩに更新する。要求されたメモリ・ブロックの受信に応答して、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭ状態に保持する。あるいは、ブロック１６２２で示すように、Ｓｒ’スヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定しない場合、ＴｎまたはＴｅｎスヌーパ２３６は、ＣＲの受信に応答して後期データを提供する。要求されたメモリ・ブロックの受信に応答して、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭ状態に保持する。さらに、有効な各肯定側スヌーパ２３６（すなわち、Ｉｇではないスヌーパ２３６）は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。
【０１１５】
ブロック１６２４および１６２２で表される場合のどちらでも、応答ロジック２１０は、グローバル・バスＲＷＩＴＭオペレーションをスヌープすることに応答して、Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されるか否か、すなわち要求されたメモリ・ブロックのそのコピーを無効にすることができないかどうかに応じて、ＣＲを生成する。ブロック１６２５で、グローバル・バスＲＷＩＴＭオペレーションに対する部分応答に基づいて、Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されると応答ロジック２１０が判定を行う場合、ブロック１６３２に示すように、応答ロジック２１０は、「ローカル・クリーンアップ」を示すＣＲを生成する。したがって、有利には、コヒーレンシを保証するのに必要なバス・キル・オペレーションの範囲が、要求側Ｌ２キャッシュ２３０および（前の）ＴｎまたはＴｅｎスヌーパ２３６を含むローカル・コヒーレンシ・ドメインに限定される。あるいは、Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されると応答ロジック２１０が判定する場合、応答ロジック２１０は、ブロック１６０７で示すように、「成功」を示すＣＲを生成する。
【０１１６】
図１５のブロック１６３０へのページ連結子Ｏに続いて、ＴまたはＴｅスヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定する場合、プロセスはブロック１６３２に進む。ブロック１６３２は、要求側マスタ２３２にとってローカルであるか否かをＴまたはＴｅスヌーパ２３６が判定することを表す。そうである場合、グローバル・バスＲＷＩＴＭオペレーションは、以下で説明するブロック１６３８および後続のブロックに従って処理される。しかし、要求側マスタ２３２にとってローカルではないと、グローバル・バスＲＷＩＴＭオペレーションを肯定するＴまたはＴｅスヌーパ２３６が判定する場合、グローバル・バスＲＷＩＴＭオペレーションは、Ｓｒ’スヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定したか否かに応じて、ブロック１６３６またはブロック１６３５に従ってサービスされる。
【０１１７】
ブロック１６３５で示すように、Ｓｒ’スヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定した場合、Ｓｒ’スヌーパ２３６は、早期データを要求側マスタ２３２に提供し、グローバル・バスＲＷＩＴＭオペレーションを肯定したＴまたはＴｅスヌーパ２３６は、要求されたメモリ・ブロックを含むエントリに関するそのキャッシュ状態をＩｇに更新する。要求されたメモリ・ブロックの受信に応答して、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭ状態に保持する。さらに、ＴまたはＴｅスヌーパ２３６以外の任意の有効な肯定側スヌーパ２３６は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。あるいは、ブロック１６３６で示すように、Ｓｒ’スヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定しない場合、ＴまたはＴｅスヌーパ２３６は、ＣＲの受信に応答して後期データを提供する。要求されたメモリ・ブロックの受信に応答して、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭ状態に保持する。さらに、ＴまたはＴｅスヌーパ２３６は、そのキャッシュ状態をＩｇに更新し、その他の任意の有効な肯定側スヌーパ２３６は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。したがって、リモートＴまたはＴｅスヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定する場合、肯定側ＴまたはＴｅスヌーパ２３６は、そのコヒーレンシ・ドメイン内の要求されたメモリ・ブロックに対するキャッシュされたドメイン標識を維持するためにＩｇ状態に入る。したがって、ＬＰＣシステム・メモリ１０８内のドメイン標識５０４を更新するために、グローバル・バスＲＷＩＴＭオペレーションに応答して再試行プッシュを行うことは不要である。
【０１１８】
ブロック１６３５および１６３６で表される場合のどちらでも、応答ロジック２１０は、グローバル・バスＲＷＩＴＭオペレーションをスヌープすることに応答して、Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されるか否か、すなわち要求されたメモリ・ブロックのそのコピーを無効にすることができないかどうかに応じて、ＣＲを生成する。ブロック１６４４で、バスＲＷＩＴＭオペレーションに対する部分応答に基づいて、Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されると応答ロジック２１０が判定を行う場合、ブロック１６２６に示すように、応答ロジック２１０は、「クリーンアップ」を示すＣＲを生成する。あるいは、Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されることがないと応答ロジック２１０が判定する場合、ブロック１６０７で示すように、応答ロジック２１０は、「成功」を示すＣＲを生成する。
【０１１９】
ブロック１６３２および１６３８に戻ると、ブロック３４１２で、要求側マスタ２３２にとってローカルであるとＴまたはＴｅスヌーパ２３６が判定する場合、Ｓｒ’スヌーパ２３６もグローバル・バスＲＷＩＴＭオペレーションを肯定したかどうかに応じて、ブロック１６４０またはブロック１６４２に従ってグローバル・バスＲＷＩＴＭオペレーションがサービスされる。すなわち、ブロック１６４０に示すように、Ｓｒ’スヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定しない場合（ブロック１６３８）、グローバル・バスＲＷＩＴＭオペレーションを肯定したＴまたはＴｅスヌーパ２３６は、ＣＲの受信に応答して、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始する（すなわち、「後期」データを提供する）。要求されたメモリ・ブロックの受信に応答して、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭ状態に保持する。さらに、すべての有効な肯定側スヌーパ２３６は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。あるいは、ブロック１６４２で示すように、Ｓｒ’スヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定する場合（ブロック１６３８）、Ｓｒ’スヌーパ２３６は、ＣＲの受信前に、要求側Ｌ２キャッシュ２３０への要求されたメモリ・ブロックの送信を開始する（すなわち、「早期」データを提供する）。要求されたメモリ・ブロックの受信に応答して、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＭ状態に保持する。さらに、すべての有効な肯定側スヌーパ２３６は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。ブロック１６４０またはブロック１６４２に続いて、プロセスは、上述のブロック１６４４に進む。
【０１２０】
次にブロック１６５０を参照すると、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定し、さらに、スヌーパ２２２が要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答を提供しない場合、ブロック１６５２で示すように、エラーが発生し、処理が停止する。一方、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６がバスＲＷＩＴＭオペレーションを肯定せず、スヌーパ２２２が要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答を提供するが、バスＲＷＩＴＭオペレーションを肯定しない場合（ブロック１６６０）、有効な各肯定側スヌーパ２３６（すなわち、Ｉｇではないスヌーパ２３６）がそれぞれのＬ２キャッシュ・ディレクトリ３０２内の要求されたメモリ・ブロックを無効にし（ブロック１６７２）、ブロック１６７４で示すように、応答ロジック２１０は、「再試行」を示すＣＲを生成する。さらに、グローバル・バスＲＷＩＴＭオペレーションを肯定するＳｒ’スヌーパ２３６によって提供されたデータが存在する場合は、それがマスタ２３２によって廃棄される（ブロック１６６８および１６７０）。判定ブロック１６６２で示すように、メモリ・コントローラ・スヌーパ２２２がグローバル・バスＲＷＩＴＭオペレーションを肯定し（ブロック１６６０）、要求されたメモリ・ブロックをＭ、Ｍｅ、Ｔｘ状態のうちの１つに保持することができるが、グローバル・バスＲＷＩＴＭオペレーションを肯定できないことを示す部分応答をＬ２キャッシュ・スヌーパ２３６が提供する場合（ブロック１６６２）、ブロック１６７２で、肯定側スヌーパ２３６は、要求されたメモリ・ブロックのそれぞれのコピーを同様に無効にし、ブロック１６７４で、応答ロジック２１０は「再試行」ＣＲを生成する。
【０１２１】
次にブロック１６６４を参照すると、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６がグローバル・バスＲＷＩＴＭオペレーションを肯定せず、または場合によっては隠されることがない場合、スヌーパ２２２は、グローバル・バスＲＷＩＴＭオペレーションを肯定し、Ｓｒ’スヌーパ２３６は、グローバル・バスＲＷＩＴＭオペレーションを肯定し、グローバル・バスＲＷＩＴＭオペレーションが、上述のブロック１６４２および後続のブロックに従ってサービスされる。グローバル・バスＲＷＩＴＭオペレーションを肯定するＳｒ’スヌーパ２３６の欠如を除く同一の条件を仮定すると、グローバル・バスＲＷＩＴＭオペレーションがブロック１６６６に従ってサービスされる。具体的には、ＣＲに応答して、ＬＰＣスヌーパ２２２は、要求されたメモリ・ブロックを要求側Ｌ２キャッシュ２３０に提供し、要求側Ｌ２キャッシュ２３０は、Ｍ状態の要求されたメモリ・ブロックを取得し、すべての有効な肯定側スヌーパ２３６は、要求されたメモリ・ブロックのそれぞれのコピーがある場合はそれを無効にする。
【０１２２】
ブロック１６６６に続いて、プロセスはブロック１６８０〜１６８６に進む。ブロック１６８０〜１６８６は、ＬＰＣスヌーパ２２２が要求側マスタ２３２にとってローカルであるかどうか（ブロック１６８０）、およびドメイン標識の現在の状態（ブロック１６８２および１６８４）に基づいて、要求されたメモリ・ブロックに関するドメイン標識５０４を更新するか否かをＬＰＣスヌーパ２２２が判定することを集合的に表す。ＬＰＣスヌーパ２２２が要求側Ｌ２キャッシュ２３０にとってローカルであり、システム・メモリ１０８内のドメイン標識５０４が「ローカル」を示すようにセットされる場合、更新は不要であり、プロセスはページ連結子Ｐを通じて、以下で説明する図１４のブロック１６２５に進む。一方、ＬＰＣスヌーパ２２２が要求側マスタ２３２にとってローカルであり、ドメイン標識５０４が「グローバル」を示すようにリセットされる場合、またはＬＰＣスヌーパ２２２が要求側マスタ２３２にとってローカルではなく、ドメイン標識５０４が「ローカル」を示すようにリセットされる場合、ブロック１６８６で、ＬＰＣスヌーパ２２２はドメイン標識５０４の状態を変更する。
【０１２３】
Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されることを部分応答が示す場合（ブロック１６４４）、ブロック１６２８で、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックの任意の他の有効なキャッシュされたコピーを無効にしなければならないことを示す「クリーンアップ」ＣＲを受け取る。Ｓ’またはＳｒ’スヌーパ２３６が不完全な部分応答によって場合によっては隠される場合、ブロック１６０７で示すように、応答ロジック２１０は「成功」ＣＲを生成する。
【０１２４】
次に図１６を参照すると、本発明によるデータ処理システムでローカル・バスＤＣｌａｉｍオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、例えばマスタ２３２が図７のブロック７３２でローカル相互接続１１４上にローカル・バスＤＣｌａｉｍオペレーションを発行することで、ブロック１７００で始まる。ローカル・バスＤＣｌａｉｍオペレーションに応答してスヌーパ２３６が分散応答ロジック２１０に提供することができる様々な部分応答が、判定ブロック１７０２、１７１０、１７２０、１７４０、および１７４４の結果により図１６に表されている。これらの部分応答は、ＣＲ応答ロジック２１０がローカル・バスＤＣｌａｉｍオペレーションに関して何を生成するかを決定する。
【０１２５】
ブロック１７０２で示すように、何らかのスヌーパ２３６が、例えば図７のブロック７４８および７５４で示すローカル・バスＤＣｌａｉｍオペレーションをバスＲＷＩＴＭオペレーションにダウングレードする部分応答を発行する場合、要求されたメモリ・ブロックを有効な状態に保持するその他の各肯定側スヌーパ２３６は、ブロック１７０３で示すように、要求されたメモリ・ブロックのそれぞれのコピーを無効にする。ローカル・バスＤＣｌａｉｍオペレーションおよび部分応答に応答して、ブロック１７０４で示すように、分散応答ロジック２１０は、「ダウングレード」を示すＣＲを生成する。このＣＲに応答して、図７のブロック７４８で示すように、次にローカル・バスＤＣｌａｉｍオペレーションのマスタ２３２は、ローカル・バスＲＷＩＴＭオペレーションを使用して、要求されたメモリ・ブロックの所有権を得るように試みなければならない。
【０１２６】
ブロック１７１０に示すように、スヌーパ２３６を含むＬ２キャッシュ２３０が要求されたメモリ・ブロックをＴまたはＴｅ状態に保持することを示す部分応答を有するローカル・バスＤＣｌａｉｍオペレーションをスヌーパ２３６が肯定する場合、プロセスはブロック１７１２に進む。バスＤＣｌａｉｍオペレーションに応答してデータ転送が不要であるので、ブロック１７１２は、要求側Ｌ２キャッシュ２３０内のマスタ２３２がＬ２キャッシュ・ディレクトリ３０２内の要求されたメモリ・ブロックのキャッシュ状態をＭ状態に更新することを示す。すべての有効な肯定側スヌーパ２３６は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。ブロック１７１８で示すように、分散応答ロジック２１０は、要求側Ｌ２キャッシュ２３０が１つまたは複数のバス・キル・オペレーションを発行して、ローカル・コヒーレンシ・ドメインの外部に保持された、要求されたメモリ・ブロックのコピーが存在する場合はそれを無効にしなければならないことを意味する「クリーンアップ」を示すＣＲを生成する。
【０１２７】
ブロック１７４０で示すように、ＴｎまたはＴｅｎスヌーパ２３６がローカル・バスＤＣｌａｉｍオペレーションを肯定する場合、プロセスはブロック１７４２に進む。バスＤＣｌａｉｍオペレーションに応答してデータ転送が不要であるので、ブロック１７４２は、要求側Ｌ２キャッシュ２３０内のマスタ２３２がＬ２キャッシュ・ディレクトリ３０２内の要求されたメモリ・ブロックのキャッシュ状態をＭ状態に更新することを示す。すべての有効な肯定側スヌーパ２３６は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。ブロック１７４４で示すように、分散応答ロジック２１０は、Ｓｒ’またはＳ’スヌーパ２３６が場合によっては隠されると応答ロジック２１０で受信された部分応答が示すかどうかに依存するＣＲを生成する。そうでない場合、ローカル・コヒーレンシ・ドメインの外部のＬ２キャッシュ２３０が要求されたメモリ・ブロックのコピーを保持しないことがＴｎまたはＴｅｎコヒーレンシ状態の存在によって保証されるので、分散応答ロジック２１０は、ブロック１７４６で示すように「成功」を示す応答を生成する。Ｓｒ’またはＳ’スヌーパ２３６が場合によっては隠されることを部分応答が示す場合、応答ロジック２１０は、ブロック１７４８で示すように、「ローカル・クリーンアップ」を示すＣＲを生成する。やはりローカル・コヒーレンシ・ドメインの外部のＬ２キャッシュ２３０が要求されたメモリ・ブロックの有効なコピーを保持しないことがＴｎまたはＴｅｎコヒーレンシ状態によって保証されるので、必要なのはローカル・クリーンアップ・オペレーションだけである。
【０１２８】
次にブロック１７２０を参照すると、スヌーパがローカル・バスＤＣｌａｉｍオペレーションをダウングレードせず（ブロック１７０２）、Ｔｘスヌーパ２３６がローカル・バスＤＣｌａｉｍオペレーションを肯定せず（ブロック１７１０および１７４０）、さらに、スヌーパ２３６が要求されたメモリ・ブロックをＴｘ状態に保持することができるが、ローカル・バスＤＣｌａｉｍオペレーションを肯定できないことを示す部分応答をスヌーパ２３６が提供する場合、有効な各肯定側スヌーパ２３６は、要求されたメモリ・ブロックに関するそれぞれのコヒーレンシ状態をＩ状態に更新する（ブロック１７２１）。さらに、ブロック１７２２で示すように、応答ロジック２１０は、「再試行」を示すＣＲを生成する。「再試行」ＣＲに応答して、要求側マスタ２３２は、図７のブロック７３６を参照しながら上記で説明したように、バスＤＣｌａｉｍオペレーションをローカルまたはグローバル・オペレーションとして再発行することができる。しかし、スヌーパがローカル・バスＤＣｌａｉｍオペレーションをダウングレードせず（ブロック１７０２）、Ｔｘスヌーパ２３６がバスＤＣｌａｉｍオペレーションを肯定せず、または場合によっては隠されることがない場合（ブロック、１７０２、１７１０、１７４０、および１７２０）、応答ロジック２１０は、ブロック１７３２で示すように「ｇｏ  ｇｌｏｂａｌ」ＣＲを提供し、ブロック１７３０で示すように、要求されたメモリ・ブロックの有効なコピーを有する肯定側スヌーパが存在するならばそのすべての肯定側スヌーパが、要求されたメモリ・ブロックのそれぞれのコピーを無効にする。「ｇｏ  ｇｌｏｂａｌ」ＣＲに応答して、マスタ２３２は、図７のブロック７４０で示すように、バスＤＣｌａｉｍオペレーションをグローバル・オペレーションとして再発行する。
【０１２９】
次に図１７を参照すると、本発明によるデータ処理システムでグローバル・バスＤＣｌａｉｍオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。プロセスは、例えばＬ２キャッシュ２３０のマスタ２３２が図７のブロック７４０でシステム相互接続１１０上にグローバル・バスＤＣｌａｉｍオペレーションを発行することで、ブロック１８００で始まる。グローバル・バスＤＣｌａｉｍオペレーションに応答してスヌーパ２２２、２３６が分散応答ロジック２１０に提供することができる様々な部分応答が、判定ブロック１８０２、１８１０、１８１８、１８３０、１８４０、１８４２、および１８１９の結果により図１７に表されている。これらの部分応答は、ＣＲ応答ロジック２１０がグローバル・バスＤＣｌａｉｍオペレーションに関して何を生成するかを決定する。
【０１３０】
ブロック１８０２で示すように、何らかのスヌーパ２３６が、グローバル・バスＤＣｌａｉｍオペレーションをバスＲＷＩＴＭオペレーションにダウングレードする部分応答を発行する場合、ダウングレードするスヌーパ２３６以外の各肯定側スヌーパ２３６（すなわち、Ｉｇではないスヌーパ２３６）は、ブロック１８０３で示すように、要求されたメモリ・ブロックのそのコピーを無効にする。さらに、ブロック１８０４で示すように、分散応答ロジック２１０は、「ダウングレード」を示すＣＲを生成する。このＣＲに応答して、図７のブロック７４８および７５４で示すように、次にグローバル・バスＤＣｌａｉｍオペレーションのマスタ２３２は、バスＲＷＩＴＭオペレーションを使用して、要求されたメモリ・ブロックの所有権を得るように試みなければならない。
【０１３１】
ブロック１８１０で示すようにＴｘ（例えばＴ、Ｔｅ、Ｔｎ、またはＴｅｎ）スヌーパ２３６がグローバル・バスＤＣｌａｉｍオペレーションを肯定する場合、プロセスはブロック１８１２に進む。ブロック１８１２は、Ｔｘスヌーパ２３６が要求側マスタ２３２にとってローカルであるかどうかを判定することを示す。そうでない場合、ブロック１８１４で示すように、Ｔｘスヌーパ２３６は、その関連するエントリの状態をＩｇに更新し、要求されたメモリ・ブロックに関するキャッシュされたドメイン標識を維持する。さらに、要求側マスタ２３２は、要求されたメモリ・ブロックのそのコピーのコヒーレンシ状態をＭに更新し、Ｔｘスヌーパ２３６以外の有効な各肯定側スヌーパ２３６は、要求されたメモリ・ブロックに関するそのコヒーレンシ状態をＩに更新する（ブロック１８１４）。
【０１３２】
ブロック１８１２を参照すると、Ｔｘスヌーパ２３６が要求側マスタ２３２にとってローカルであることをＴｘスヌーパ２３６が判定する場合、ブロック１８１６に従ってグローバル・バスＤＣｌａｉｍオペレーションが処理される。具体的には、要求側Ｌ２キャッシュ２３０内のマスタ２３２は、要求されたメモリ・ブロックのそのコピーの状態をＭ状態に更新し、すべての有効な肯定側スヌーパ２３６は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をＩに更新する。
【０１３３】
ブロック１８１８および１８２２で示すように、Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されないことを部分応答が示す場合、プロセスは、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する（ブロック１８２２）。一方、グローバル・バスＤＣｌａｉｍオペレーションに応答して、場合によっては隠されるＳ’またはＳｒ’スヌーパ２３６の存在を示す少なくとも１つの部分応答が与えられたという判定がブロック１８１８で行われる場合、何らかのタイプのクリーンアップ・オペレーションが必要となる。肯定側Ｔｘスヌーパ２３６が要求側マスタ２３２と同じコヒーレンシ・ドメイン内にあり、オペレーションの前に、ＴｅおよびＴｅｎ状態のうちの１つである場合、分散応答ロジック２１０は、要求側Ｌ２キャッシュ２３０が１つまたは複数のローカル・バス・キル・オペレーションを発行して、任意のそのような隠されたＳ’またはＳｒ’スヌーパ２３６内の要求されたメモリ・ブロックを無効にしなければならないことを意味する「ローカル・クリーンアップ」を示すＣＲを生成する（ブロック１８２４）。肯定側Ｔｘスヌーパ２３６が要求側マスタ２３２と同じコヒーレンシ・ドメイン内になく、または肯定側Ｔｘスヌーパ２３６が、オペレーションの前にＴまたはＴｅコヒーレンシ状態のうちの１つであった場合、グローバル・クリーンアップが必要であり、応答ロジック２１０は、「クリーンアップ」を示すＣＲを生成する（ブロック１８２０）。したがって、ＴｎまたはＴｅｎコヒーレンシ状態の存在を再び使用して、バス・キル・オペレーションの範囲を限定することができる。
【０１３４】
次にブロック１８３０を参照すると、Ｔｘスヌーパ２３６がグローバル・バスＤＣｌａｉｍオペレーションを肯定せず、さらに、要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答をスヌーパ２２２が提供しない場合、ブロック１８３２で示すように、エラーが発生し、プロセスが停止する。一方、Ｔｘスヌーパ２３６がグローバル・バスＤＣｌａｉｍオペレーションを肯定せず、要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答をスヌーパ２２２が提供するが、グローバル・バスＤＣｌａｉｍオペレーションを肯定しない場合（ブロック１８４０）、有効な各肯定側スヌーパ２３６は、要求されたメモリ・ブロックのそれぞれのコピーを無効にし（ブロック１８４３）、ブロック１８４４で示すように、応答ロジック２１０は、「再試行」を示すＣＲを生成する。判定ブロック１８４２で示すように、メモリ・コントローラ・スヌーパ２２２がバスＤＣｌａｉｍオペレーションを肯定し（ブロック１８４０）、Ｔｘスヌーパ２３６が場合によっては隠される可能性がある場合（ブロック１８４２）、ブロック１８４３で、有効な各肯定側スヌーパは、要求されたメモリ・ブロックのそれぞれのコピーをやはり無効にし、ブロック１８４４で、応答ロジック２１０は「再試行」ＣＲを同様に生成する。
【０１３５】
ブロック１８４２で示すように、Ｔｘスヌーパ２３６がグローバル・バスＤＣｌａｉｍオペレーションを肯定せず、または場合によっては隠されることがなく、スヌーパ２２２がグローバル・バスＤＣｌａｉｍオペレーションを肯定する場合、上述のブロック１８１６に従ってグローバル・バスＤＣｌａｉｍオペレーションがサービスされる。
【０１３６】
次に図１８を参照すると、本発明によるデータ処理システムでローカル・バス・キル・オペレーションを実施する例示的方法の高レベル論理流れ図が示されている。ローカル・バス・キル・オペレーションの範囲を１つのコヒーレンシ・ドメインに限定することが、ＴｎおよびＴｅｎコヒーレンシ状態によって提供される追加の情報によって可能となり、すなわちメモリ・ブロックの共有されるコピーは、コヒーレンシ・ドメインの外部にはない。
【０１３７】
図示するように、プロセスは、例えばＬ２キャッシュ２３０のマスタ２３２が図８のブロック７８８または図９のブロック１０４４でそのローカル相互接続１１４上にローカル・バス・キル・オペレーションを発行することで、ブロック１９００で始まる。ローカル・バス・キル・オペレーションに応答してスヌーパ２２２、２３６が分散応答ロジック２１０に提供することができる様々な部分応答が、判定ブロック１９０２および１９０６の結果により図１８に表されている。これらの部分応答は、ＣＲ応答ロジック２１０がローカル・バス・キル・オペレーションに関して何を生成するかを決定する。
【０１３８】
具体的には、ブロック１９０２および１９０４で示すように、Ｍ、Ｍｅ、Ｔｘ、Ｓｒ’、またはＳ’状態のいずれかのバス・キル・オペレーションを肯定する任意のスヌーパ２３６は、ＣＲの受信に応答してデータを送信することなく、要求されたメモリ・ブロックのそのコピーを無効にする。肯定側Ｉｇスヌーパ２３６が存在する場合は、肯定側Ｉｇスヌーパ２３６はＩｇ状態にとどまる。ブロック１９０６、１９０８、および１９１０でさらに示すように、応答ロジック２１０は、ローカル・バス・キル・オペレーションを肯定しない部分応答を何らかのスヌーパ２３６が提供する場合、「ローカル・クリーンアップ」を示すＣＲを生成し、そうでない場合、「成功」を示すＣＲを生成する。
【０１３９】
図１９を参照すると、本発明によるグローバル・バス・キル・オペレーションを実施する例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、例えばＬ２キャッシュ２３０のマスタ２３２が例えば図６のブロック６２６または図７のブロック７２６でシステム相互接続１１０上にバス・キル・オペレーションを発行することで、ブロック２０００で始まる。グローバル・バス・キル・オペレーションに応答してスヌーパ２２２、２３６が分散応答ロジック２１０に提供することができる様々な部分応答が、判定ブロック２００２および２００６の結果により図１９に表されている。これらの部分応答は、ＣＲ応答ロジック２１０がバス・キル・オペレーションに関して何を生成するかを決定する。
【０１４０】
具体的には、ブロック２００２および２００４で示すように、Ｍ、Ｍｅ、Ｔｘ、Ｓｒ’、またはＳ’状態のいずれかのバス・キル・オペレーションを肯定する任意の有効なスヌーパ２３６は、ＣＲの受信に応答してデータを送信することなく、要求されたメモリ・ブロックのそのコピーを無効にする。肯定側Ｉｇスヌーパ２３６が存在する場合は、肯定側Ｉｇスヌーパ２３６はＩｇ状態にとどまる。ブロック２００６、２００８、および２０１０でさらに示すように、応答ロジック２１０は、バス・キル・オペレーションを肯定しない部分応答を何らかのスヌーパ２３６が提供した場合、「クリーンアップ」を示すＣＲを生成し、そうでない場合、「成功」を示すＣＲを生成する。
【０１４１】
次に図２０を参照すると、本発明の好ましい実施形態によるデータ処理システムでローカル・バス書込みオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。プロセスは、例えば図９のブロック１００４でのＩ／Ｏコントローラ２１４によるローカル相互接続１１４上のローカル・バス書込みオペレーションの発行と共に、ブロック２５００で始まる。スヌーパ２２２、２３６が分散応答ロジック２１０に提供することができる様々な部分応答が、判定ブロック２５０２、２５１０、２５１２、２５２０、２５２２、および２５３０の結果により図２０に表されている。これらの部分応答は、ローカル・バス書込みオペレーションに関するＣＲを決定する。
【０１４２】
ターゲット・メモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答をスヌーパ２２２が提供しない場合（ブロック２５０２）、ブロック２５０４で示すように、有効な各肯定側スヌーパ２３６は、ターゲット・メモリ・ブロックのそれぞれのコピーを無効にし、ブロック２５０６で示すように、応答ロジック２１０は「ｇｏ  ｇｌｏｂａｌ」ＣＲを提供する。ＬＰＣは、バス書込みオペレーションで必要な参加者であるからである。ブロック２５１０で示すように、要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）が、ローカル・バス書込みオペレーションを肯定しないことを示す部分応答をスヌーパ２２２が提供し（ブロック２５１２）、ＭまたはＭｅスヌーパ２３６がローカル・バス書込みオペレーションを肯定する場合（ブロック２５１０）、ＭまたはＭｅスヌーパ２３６は、要求されたメモリ・ブロックのそのコピーを無効にする（ブロック２２５４）。さらに、ターゲット・メモリ・ブロックを受け取るためにＬＰＣが利用可能でなければならないので、ブロック２５１８で示すように、応答ロジック２１０は、「再試行ローカル」を示すＣＲを生成する。
【０１４３】
ターゲット・メモリ・ブロックに対するＬＰＣであることをメモリ・コントローラ・スヌーパ２２２が示し、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６がローカル・バス書込みオペレーションを肯定せず、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６が隠される可能性があることを部分応答が示す場合（ブロック２５３０）、応答ロジック２１０は、ブロック２５３４で同様に「再試行」ＣＲを生成し、有効な各肯定側スヌーパ２３６は、要求されたメモリ・ブロックのそれぞれのコピーを無効にする（ブロック２５３２）。この場合、各肯定側スヌーパ２３６は、ターゲット・メモリ・ブロックのそのコピーが存在する場合はそれを無効にし、応答ロジック２１０は「再試行」ＣＲを生成し、その結果、ローカル・バス書込みオペレーションは、要求されたメモリ・ブロックのＨＰＣコピーがシステム内に残らないときにのみ成功する。
【０１４４】
再びブロック２５１２を参照すると、ＭまたはＭｅスヌーパ２３６がローカル・バス書込みオペレーションを肯定し、スヌーパ２２２がローカル・バス書込みオペレーションをＬＰＣとして肯定すると仮定して、要求側Ｌ２キャッシュ２３０が要求されたメモリ・ブロックをＬＰＣスヌーパ２２２に送り、有効な肯定側スヌーパ２３６が存在する場合はそれが、要求されたメモリ・ブロックのそれぞれのコピーを無効にする（ブロック２５１４）。さらに、ＬＰＣスヌーパ２２２は、ターゲット・メモリ・ブロックに関連するドメイン標識５０４を「ローカル」にセットする。プロセスは、分散応答ロジック２１０が「成功」を示すＣＲを生成してブロック２５１６で終了する。
【０１４５】
ブロック２５２０および後続のブロックで示すように、ターゲット・メモリ・ブロックに対するＬＰＣであるが（ブロック２５０２）、ローカル・バス書込みオペレーションを肯定することができない（ブロック２５２２）ことを示す部分応答をスヌーパ２２２が提供し、ＭまたはＭｅスヌーパ２３６がローカル・バス書込みオペレーションを肯定せず（ブロック２５１０）、Ｔｘスヌーパ２３６がローカル・バス書込みオペレーションを肯定する場合、分散応答ロジック２１０は、「再試行ローカル」を示すＣＲを生成して（ブロック２５１８）、強制的にオペレーションをローカルに再発行させ、ローカル・バス書込みオペレーションを肯定する有効なスヌーパ２３６は、要求されたメモリ・ブロックのそれぞれのコピーを無効にする（ブロック２５２４）。ローカル・バス書込みオペレーションを肯定するＬＰＣスヌーパ２２２を除いて同一の部分応答を仮定すると（ブロック２５２２）、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＬＰＣスヌーパ２２２に送り、ローカル・バス書込みオペレーションを肯定する有効な各スヌーパ２３６は、要求されたメモリ・ブロックのそれぞれのコピーを無効にする（ブロック２５２６）。さらに、ＬＰＣスヌーパ２２２は、ターゲット・メモリ・ブロックに関連するドメイン標識５０４を「ローカル」にセットする。
【０１４６】
ローカル・バス書込みオペレーションと、ローカル・バス書込みオペレーションを肯定するＴｘスヌーパ２３６およびＬＰＣスヌーパ２２２による部分応答とに応答して、無効化の前にＴｘスヌーパ２３６がターゲット・メモリ・ブロックをＴｎおよびＴｅｎ状態のうちの１つに保持する場合（ブロック２５４０および２５４２）、分散応答ロジック２１０は、「ローカル・クリーンアップ」を示すＣＲを生成し、そうでない場合、「クリーンアップ」を示すＣＲを生成する（ブロック２５２８）。ＴｎまたはＴｅｎコヒーレンシ状態の存在により、クリーンアップ・オペレーション中のバス・キル・オペレーションの範囲をローカル・コヒーレンシ・ドメインに限定することが可能となることに留意されたい。
【０１４７】
次に図２１を参照すると、本発明によるデータ処理システムでグローバル・バス書込みオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、例えばＩ／Ｏコントローラ２１４が図９のブロック１０２０でシステム相互接続１１０上にグローバル・バス書込みオペレーションを発行することで、ブロック２６００で始まる。スヌーパ２２２、２３６が分散応答ロジック２１０に提供することができる様々な部分応答が、判定ブロック２６１０、２６２０、２６２４、２６２６、および２６４１の結果により図２１に表されている。これらの部分応答は、グローバル・バス書込みオペレーションに関するＣＲを決定する。
【０１４８】
ブロック２６１０で示すように、要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答をスヌーパ２２２が提供しない場合、ブロック２６１２で示すように、エラーが発生し、プロセスが停止する。しかし、要求されたメモリ・ブロックの任を担う（すなわちＬＰＣ）ことを示す部分応答をスヌーパ２２２が提供するが、グローバル・バス書込みオペレーションを提供しない場合（ブロック２６２０）、有効な各肯定側スヌーパ２３６は、要求されたメモリ・ブロックのそれぞれのコピーを無効にし（ブロック２６２１）、要求されたメモリ・ブロックを受け取るためにＬＰＣが利用可能でなければならないので、応答ロジック２１０は、「再試行」を示すＣＲを生成する（ブロック２６２２）。メモリ・コントローラ・スヌーパ２２２がグローバル・バス書込みオペレーションを肯定するが、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６が場合によっては隠される可能性があることを部分応答が示す場合、応答ロジック２１０は、同様に「再試行」ＣＲを生成し、有効な各肯定側スヌーパ２３６は、要求されたメモリ・ブロックのそれぞれのコピーを無効にする（ブロック２６２４、２６２１、および２６２２）。この場合、「再試行」ＣＲが生成され、その結果、グローバル・バス書込みオペレーションは、要求されたメモリ・ブロックのＨＰＣコピーがシステム内に残らないときにのみ成功する。
【０１４９】
再びブロック２６２４を参照すると、スヌーパ２２２がグローバル・バス書込みオペレーションをＬＰＣとして肯定し、Ｍ、Ｍｅ、またはＴｘスヌーパ２３６が場合によっては隠される可能性があることを示す部分応答が生成されないと仮定すると、要求側Ｌ２キャッシュ２３０は、要求されたメモリ・ブロックをＬＰＣスヌーパ２２２に送り、バス書込みオペレーションを肯定する有効なスヌーパ２３６が存在するならばそれが、要求されたメモリ・ブロックのそれぞれのコピーを無効にする（ブロック２６２８またはブロック２６４０）。ブロック２６２６および２６３０で表すように、Ｓ’またはＳｒ’スヌーパ２３６が場合によっては隠されることがないことを部分応答が示す場合、プロセスは、分散応答ロジック２１０が「成功」を示すＣＲを生成して終了する。さらに、ＬＰＣスヌーパ２２２は、要求されたメモリ・ブロックに関連するドメイン標識５０４を、「ローカル」を示すようにセットする（ブロック２６２８）。一方、場合によっては隠されるＳ’またはＳｒ’スヌーパ２３６の存在を示す少なくとも１つの部分応答が、グローバル・バス書込みオペレーション（ブロック２６２６）に応答して与えられた場合、分散応答ロジック２１０は、クリーンアップ・オペレーションの必要を示すＣＲを生成する。具体的には、無効化の前に、Ｔｘスヌーパ２３６がターゲット・メモリ・ブロックをＴｎおよびＴｅｎ状態のうちの１つに保持し、ＬＰＣスヌーパ２２２およびＴｘスヌーパ２３６が共に要求側Ｉ／Ｏコントローラ２１４のローカル・コヒーレンシ・ドメイン内にある場合（ブロック２６４１）、分散応答ロジック２１０は、「ローカル・クリーンアップ」を示すＣＲを生成する（ブロック２６４４）。そうでない場合、応答ロジック２１０は、「クリーンアップ」を示すＣＲを生成する（ブロック２６４２）。
【０１５０】
ＶＩＩＩ．ＤＭＡ書込みパイプライン化
好ましいデータ整合性モデルは、特定のＤＭＡマスタ（例えばＩ／Ｏコントローラ２１４）による直接メモリ・アクセス（ＤＭＡ）書込みオペレーションによってシステム・メモリ１０８に格納されるデータが、ＤＭＡデータをシステム・メモリ１０８に転送するのに使用されるバス書込みオペレーションの発行順にアクセスのために利用可能となることを必要とする。したがって、ｌａｔｅｒ−ｉｎ−ｔｉｍｅ  ＤＭＡ書込みオペレーションによってシステム・メモリ１０８に格納されたデータが読取りアクセスのために利用可能となるのが、同一のＤＭＡマスタの、先に発行されたｌａｔｅｓｔ−ｔｏ−ｃｏｍｐｌｅｔｅ  ＤＭＡ書込みオペレーションによってシステム・メモリ１０８に書き込まれたデータよりも早くなるべきではない。
【０１５１】
このデータ整合性モデルを満足するための単純な手法は、ＤＭＡマスタが、前のＤＭＡ書込みオペレーションが存在するならばそれが首尾よく完了するまでは、次のＤＭＡ書込みオペレーションを発行できないようにＤＭＡ書込みオペレーションを厳密に順序付けることである。しかし、データ処理システムが大きくなり、ＤＭＡアクセスの待ち時間が増大するとき、ＤＭＡ書込みオペレーションの厳密な逐次化により、ＤＭＡ装置が達成できるスループットが厳しく制限される可能性がある。したがって、ＤＭＡ書込みオペレーションをパイプライン化できること、すなわち、追加の待ち時間の効果がマスクされるようにＤＭＡ書込みオペレーションを重複できることが望ましい。
【０１５２】
パイプライン式ＤＭＡ書込みオペレーションの存在下で好ましいデータ整合性モデルに準拠するために、何らかの技法を利用して、同じＤＭＡマスタからのすべてのｅａｒｌｉｅｒ−ｉｎ−ｔｉｍｅ  ＤＭＡ書込みオペレーションが完了するまで、ｌａｔｅｒ−ｉｎ−ｔｉｍｅ  ＤＭＡ書込みオペレーションのデータへのアクセスに対して保護しなければならない。本発明の好ましい実施形態では、ＤＭＡマスタ（例えばＩＯＣ２１４）およびＩＭＣ２０６によるドメイン標識５０４の適切な設定および保護ウィンドウ４０４ａの実装によってこの保護が実現される。
【０１５３】
次に図２２を参照すると、本発明の第１実施形態による複数のオペレーション範囲（例えばローカルおよびグローバル）をサポートする例示的データ処理システム１００でＤＭＡ書込みオペレーションをパイプライン化する方法を示す時空図が示されている。図２２に示す例示的環境では、データ処理システム１００は、Ｎ１およびＮ２として示される少なくとも２つの処理ノード１０２を含む。処理ノードＮ１  １０２はＩＯＣ２１４を含み、処理ノードＮ２  １０２は、少なくとも１つの処理装置１０４と、関連するシステム・メモリ１０８を有するＩＭＣ２０６とを含む。本発明を不明瞭にするのを避けるために、一部のオペレーション、一部の部分応答、およびすべてのオペレーションのデータ保有期間（data tenure）を図２２から省いている。
【０１５４】
例示的動作シナリオでは、処理ノードＮ１  １０２内のＩＯＣ２１４などのＤＭＡマスタが、処理ノードＮ２  １０２のＩＭＣ２０６によって制御されるシステム・メモリ１０８内のメモリ位置に割り当てられた実アドレスＡおよびＢを対象とする一連のパイプライン式バス書込みオペレーション２７００ａ、２７００ｂを発行する。具体的には、処理ノードＮ１  １０２内のＩＯＣ２１４は、バス書込みオペレーション２７００ａが成功した（例えば、Ｓｕｃｃｅｓｓ、Ｃｌｅａｎｕｐ、またはＬｏｃａｌ  Ｃｌｅａｎｕｐ組合せ応答（ＣＲ）を受け取った）という表示を受け取る前に、実アドレスＢを対象とするバス書込みオペレーション２７００ｂを発行することに留意されたい。図２２に示す動作シナリオでは、処理ノードＮ２  １０２内のＩＭＣ２０６は、バス書込みオペレーション２７００ａを処理するために利用可能なキュー・エントリが欠如しているので、Ｒｅｔｒｙ部分応答２７０２を提供し、したがって応答ロジック２１０は、バス書込みオペレーション２７００ａに対するＲｅｔｒｙ組合せ応答２７０４を提供する。もちろん、他の動作環境では、バス書込みオペレーション２７００ａなどのバス書込みオペレーションは、他の理由、例えば、ターゲット・メモリ・ブロックに対するＨＰＣであるＬ２キャッシュ２３０のスヌーパ２３６がＲｅｔｒｙ部分応答を提供するため、または前の読取りオペレーションとのアドレス・コリジョンのために、Ｒｅｔｒｙ組合せ応答を受け取ることがある。
【０１５５】
ＤＭＡバス書込みオペレーションが図２２に示す動作シナリオでパイプライン化されるので、前のバス書込みオペレーション２７００ａが成功する前に、後続のバス書込みオペレーション２７００ｂが成功する（例えば、Ｓｕｃｃｅｓｓ、Ｃｌｅａｎｕｐ、またはＬｏｃａｌ  ｃｌｅａｎｕｐ  ＣＲを受け取る）ことが可能となる。例えば、この動作シナリオでは、ＩＭＣスヌーパ２０６（およびその他のスヌーパ）が、Ａｆｆｉｒｍ部分応答２７０８を暗黙的または明示的に提供し、応答ロジック２１０が、Ｓｕｃｃｅｓｓ  ＣＲ２７１０を処理ノードＮ１  １０２内のＩＯＣ２１４と処理ノードＮ２  １０２内のＩＭＣ２０６に提供する。同一のソースからのすべての先に発行されたＤＭＡ書込みオペレーションが首尾よく完了した場合にのみ、ＤＭＡデータが読取りアクセスに対して利用可能となる好ましい整合性モデルを、処理ノードＮ１  １０２内のＩＯＣ２１４が実施できるように保証するために、参照番号２７１２で示すように、処理ノードＮ２  １０２内のＩＭＣ２０６は、Ｓｕｃｃｅｓｓ  ＣＲ２７１０に応答して、アドレスＢのターゲット・メモリ・ブロックに関連するドメイン標識５０４をリセットして「グローバル」を示す。その結果、アドレスＢを対象とする任意の後続のローカル読取りタイプ・オペレーション、例えば処理ノードＮ２  １０２の処理装置１０４のローカル・バス読取りオペレーション２７２０に、処理ノードＮ２  １０２のＩＭＣ２０６により、ドメイン標識５０４の状態に基づいて、暗黙的に、または明示的にＲｅｔｒｙ部分応答２７２２が与えられる。Ｒｅｔｒｙ部分応答２７２２は、応答ロジック２１０にＲｅｔｒｙ  ＣＲ２７２４を生成させ、ＣＲ２７２４は、処理ノードＮ２  １０２の処理装置１０４にその読取り要求を、処理ノードＮ１  １０２のＩＯＣ２１４を含むすべての処理ノード１０２内のスヌーパによって観測されるグローバル・バス読取りオペレーション２７２６として強制的に再発行させる。
【０１５６】
Ｒｅｔｒｙ部分応答２７３０およびＲｅｔｒｙ組合せ応答２７３２で示すように、ＩＯＣ２１４は、ＩＭＣ２０６のＡｆｆｉｒｍ部分応答２７３８および応答ロジック２１０のＳｕｃｃｅｓｓ組合せ応答２７３６で示すように、（バス書込みオペレーション２７３４として再発行される）アドレスＡを対象とする以前に発行されたバス書込みオペレーションが首尾よく完了するまで、アドレスＢのターゲット・メモリ・ブロックを読取りアクセスから保護する。Ｓｕｃｃｅｓｓ組合せ応答２７３８に応答して、参照番号２７４０で示すように、処理ノードＮ２  １０２は、アドレスＡのメモリ・ブロックに関連するドメイン標識５０４をリセットして「グローバル」を示す。このようにして、必要なら、ＩＯＣ２１４は、以前のそのＤＭＡバス書込みオペレーションのすべてが首尾よく完了するまで、アドレスＡのターゲット・メモリ・ブロックを読取りオペレーションに対して保護することができる。
【０１５７】
以前に発行されたすべてのＤＭＡ書込みオペレーションが首尾よく完了した後、Ａｆｆｉｒｍ部分応答２７４４およびＳｕｃｃｅｓｓ組合せ応答２７４６で示すように、処理ノードＮ１  １０２のＩＯＣ２１４は、アドレスＢに関連するメモリ・ブロックのその保護を中止し、グローバル・バス読取りオペレーション２７４２などのメモリ・ブロックに対する後続のバス読取りオペレーションが成功する。
【０１５８】
図２２から理解するであろうが、図２２に示すＤＭＡ書込みオペレーションをパイプライン化する例示的方法は、ＤＭＡ書込みオペレーションのターゲットである各メモリ・ブロックのドメイン標識５０４をリセットし、ＩＯＣ２１４が好ましいデータ整合性モデルに違反することになるＤＭＡデータへの読取りアクセスに対して保護できることを保証することを伴う。その結果、ＤＭＡデータを首尾よく読み取るのにグローバル・バス読取りオペレーションが必要となる。この要件により、好ましい整合性モデルの違反に対して保護されるが、これは、先に発行されたＤＭＡバス書込みオペレーションがＤＭＡデータへの読取りアクセスの前にすべて完了する場合に、ＤＭＡデータのさらなる保護が不要であり、ドメイン標識をリセットして「ローカル」を示すことができる点で広すぎる。したがって、図２３は、ＤＭＡデータを含むメモリ・ブロックのドメイン標識がＤＭＡ書込みオペレーションのデータ・フェーズでセットまたはリセットされ、その結果、以前のＤＭＡ書込みオペレーションに、可能ならドメイン標識の状態が確立される前に完了する機会が与えられる、ＤＭＡ書込みオペレーションをパイプライン化する改良型の方法を示す。
【０１５９】
次に図２３を参照すると、本発明の第２実施形態による複数のオペレーション範囲（例えばローカルおよびグローバル）をサポートする例示的データ処理システム１００でＤＭＡ書込みオペレーションをパイプライン化する方法を示す時空図が示されている。図２３に示す例示的環境では、データ処理システム１００は、Ｎ１およびＮ２として示される少なくとも２つの処理ノード１０２を含む。処理ノードＮ１  １０２はＩＯＣ２１４を含み、処理ノードＮ２  １０２は、少なくとも１つの処理装置１０４と、関連するシステム・メモリ１０８を有するＩＭＣ２０６とを含む。
【０１６０】
図２３に示す例示的動作シナリオでは、処理ノードＮ１  １０２内のＩＯＣ２１４などのＤＭＡマスタが、処理ノードＮ２  １０２のＩＭＣ２０６によって制御されるシステム・メモリ１０８内のメモリ位置に割り当てられた実アドレスＡおよびＢを対象とする一連のパイプライン式バス書込みオペレーション２８００ａ、２８００ｂを発行する。処理ノードＮ１  １０２内のＩＯＣ２１４は、バス書込みオペレーション２８００ａが成功した（例えば、Ｓｕｃｃｅｓｓ、Ｃｌｅａｎｕｐ、またはＬｏｃａｌ  Ｃｌｅａｎｕｐ組合せ応答（ＣＲ）を受け取った）という表示を受け取る前に、実アドレスＢを対象とするバス書込みオペレーション２８００ｂを発行することに再び留意されたい。図２３に示す動作シナリオでは、処理ノードＮ２  １０２内のＩＭＣ２０６は、（例えば、バス書込みオペレーション２８００ａを処理するために利用可能なキュー・エントリが欠如しているので）Ｒｅｔｒｙ部分応答２８０２を提供し、処理ノードＮ２  １０２の処理装置１０４は、Ａｆｆｉｒｍ部分応答２８０２ｂを提供し、したがって応答ロジック２１０は、バス書込みオペレーション２８００ａに対するＲｅｔｒｙ組合せ応答２８０４を提供する。
【０１６１】
ＤＭＡバス書込みオペレーションが図２３に示す動作シナリオでパイプライン化されるので、前のバス書込みオペレーション２８００ａが成功する前に、後続のバス書込みオペレーション２８００ｂが成功する（例えば、Ｓｕｃｃｅｓｓ、Ｃｌｅａｎｕｐ、またはＬｏｃａｌ  ｃｌｅａｎｕｐ  ＣＲを受け取る）ことが可能となる。例えば、この動作シナリオでは、ＩＭＣスヌーパ２０６（およびその他のスヌーパ）が、Ａｆｆｉｒｍ部分応答２８０８ａ、２８０８ｂを暗黙的または明示的に提供し、応答ロジック２１０が、Ｓｕｃｃｅｓｓ  ＣＲ２８１０を処理ノードＮ１  １０２内のＩＯＣ２１４（および処理ノードＮ２  １０２内のＩＭＣ２０６）に提供する。ＳｕｃｃｅｓｓＣＲに応答して、処理ノードＮ２  １０２内のＩＭＣ２０６がＤＭＡバス書込みオペレーションの各ターゲット・メモリ・ブロックに関連するドメイン標識５０４をセットして「グローバル」を示す、図２２の第１実施形態とは異なり、ＩＭＣ２０６は、適切な状態の表示がＤＭＡデータを有するＩＯＣ２１４から受信されるまで、ドメイン標識５０４の適切な状態を確立するのを待機する。その結果、先に発行されたＤＭＡバス書込みオペレーションに対して、ＤＭＡデータに対するバス読取りオペレーションに関するグローバル範囲を実施する前に成功するための追加の時間が与えられる。
【０１６２】
例えば、図２３に示すように、ＤＭＡバス書込みオペレーション２８００ｂに関連するデータ保有期間２８２２の送信前に、ＩＯＣ２１４は、メモリ・アドレスＡを対象とするＤＭＡバス書込みオペレーション２８１２を再発行することができる。この例では、例えば、Ａｆｆｉｒｍ部分応答２８１４を提供するＩＭＣ２０６と、場合によっては隠される部分応答２８１８を提供する処理装置１０４とに基づいて応答ロジック２１０からのＤＭＡバス書込みオペレーション２８１２に対するＣｌｅａｎｕｐ組合せ応答２８１６を受け取るＩＯＣ２１４により、やはり実アドレスＡを対象とするＤＭＡバス・オペレーション２８１２は、データ保有期間２８２２の送信前に成功する（図９を参照しながら述べたように、Ｃｌｅａｎｕｐ組合せ応答に応答して、ＩＯＣ２１４は、１つまたは複数のバス・キル・オペレーション２８２０を発行して、アドレスＡに関連するメモリ・ブロックの任意の残りのキャッシュされたコピーを無効にする）。前の各ＤＭＡ書込みオペレーションが成功し、それに関連するすべてのキル・オペレーション（例えばバス・キル・オペレーション２８２０）がＳｕｃｃｅｓｓＣＲ（例えば、Ａｆｆｉｒｍ部分応答２８１９および２８２１に基づいて生成されたＳｕｃｃｅｓｓＣＲ２８２３）を受け取ったと仮定すると、ＩＯＣ２１４は、ＤＭＡバス書込みオペレーション２８００ａに関するデータ保有期間を有するＩＭＣ２０６に、関連するドメイン標識５０４をリセットして「ローカル」を示すべきであるという表示を送る。データ保有期間２８２２の受信に応答して、ＩＭＣ２０６は、それに応じてアドレスＢのＤＭＡデータを格納し、関連するドメイン標識５０４をリセットして「ローカル」を示す（参照番号２８２４）。もちろん、ＩＯＣ２１４がＳｕｃｃｅｓｓＣＲ２８２３の受信前の任意の時間にデータ保有期間２８２２を送信した場合、ＩＯＣ２１４は、関連するドメイン標識をセットして「グローバル」を示すべきであるという表示をデータに提供し、ＩＭＣ２０６は、「グローバル」を示すためにそれに応じてアドレスＢに関連するドメイン標識５０４をセットしたことになる。
【０１６３】
その後、処理ノードＮ２  １０２のＩＭＣ２０６が、アドレスＢを対象とするローカル読取りタイプ・オペレーション（例えば、処理ノードＮ２  １０２の処理装置１０４のローカル・バス読取りオペレーション２８３０）を受け取ったとき、ＩＭＣ２０６は、ドメイン標識５０４のリセット状態に基づいてＡｆｆｉｒｍ部分応答２８３２を提供することができる。それに応答して、応答ロジック２１０は、ＩＯＣ２１４を含むようにブロードキャスト範囲を広げることなくＤＭＡデータを対象とするローカル・バス読取りオペレーション２８３０をサービスできることを意味する、Ｓｕｃｃｅｓｓ組合せ応答２８３４を生成すると共に、パイプライン式ＤＭＡ書込みオペレーションの存在下で好ましい整合性モデルを依然としてサービスする。すべての先に発行されたＤＭＡバス書込みオペレーションが成功したことを仮定すると、参照番号２８３８で示すように、ＤＭＡバス書込みオペレーション２８１２に関連するデータ保有期間２８３６は、ＩＭＣ２０６がメモリ・アドレスＡのドメイン標識５０４をリセットして「ローカル」を示すべきであることを同様に示す。
【０１６４】
以上説明したように、本発明は、ＤＭＡ書込みオペレーションを処理する改良型の方法およびシステムを提供する。本発明によれば、Ｉ／ＯコントローラなどのＤＭＡマスタが、一続きのパイプライン式ＤＭＡ書込みオペレーションを開始し、すべての先行するＤＭＡ書込みオペレーションが成功する前にＤＭＡ書込みオペレーションに関連するＤＭＡデータにアクセスさせることになる任意の読取りタイプ・アクセスに対してＤＭＡデータを保護する。ＤＭＡデータを保護するために、ＤＭＡマスタは、ＤＭＡ書込みオペレーションが開始した直後の時間から、ＬＰＣ（例えばメモリ・コントローラ）およびＨＰＣが存在するならばそれに関して、ＤＭＡ書込みオペレーションおよびすべてのより古いＤＭＡ書込みオペレーションが成功するまで、関連するＤＭＡデータを対象とする読取りタイプ・アクセスをＤＭＡマスタがその間に再試行する保護ウィンドウを実施する。メモリ・コントローラによって維持されるドメイン標識は、すべての関連する読取りタイプ・オペレーションが保護ウィンドウの間にＤＭＡマスタにとって可視されることを保証することにより、保護ウィンドウを実施する助けになる。上述のように、少なくとも一部の実施形態では、そのような可視性は、ＤＭＡデータを対象とするすべての読取りタイプ・オペレーションに対して必要ではない。関連するＤＭＡ書込みオペレーションおよび同一のソースからのすべての前のＤＭＡ書込みオペレーションが成功し、かつすべてのそのようなＤＭＡ書込みオペレーションに対するキル・オペレーションが存在するならばすべてのキル・オペレーションがＳｕｃｃｅｓｓ組合せ応答を受け取る場合、ＤＭＡデータに関するドメイン標識をリセットして、ＤＭＡマスタを除外する範囲（例えば「ローカル」範囲）を示すことができる。
【０１６５】
好ましい実施形態を参照しながら説明したように、本発明を具体的に示したが、本発明の精神および範囲から逸脱することなく、形態および細部の様々な変更をその中で行うことができることを理解されよう。
【図面の簡単な説明】
【０１６６】
【図１】本発明による例示的データ処理システムの高レベル・ブロック図である。
【図２】本発明による処理装置のより詳細なブロック図である。
【図３】図２に示すＬ２キャッシュ・アレイおよびディレクトリのより詳細なブロック図である。
【図４】図１のデータ処理システムのシステム相互接続上の例示的トランザクションの時空図である。
【図５】本発明の好ましい実施形態によるドメイン標識を示す図である。
【図６】本発明によるデータ処理システムでプロセッサ・コアによって読取りオペレーションをサービスする例示的方法の高レベル論理流れ図である。
【図７】本発明によるデータ処理システムでプロセッサ更新オペレーションをサービスする例示的方法の高レベル論理流れ図を形成する図である。
【図８】本発明によるデータ処理システムでプロセッサ更新オペレーションをサービスする例示的方法の高レベル論理流れ図を形成する図である。
【図９】本発明によるデータ処理システムでＩ／Ｏ書込みオペレーションを実施する例示的方法の高レベル論理流れ図である。
【図１０】本発明によるデータ処理システムでローカル・バス読取りオペレーションを実施する例示的方法の高レベル論理流れ図である。
【図１１】本発明によるデータ処理システムでグローバル・バス読取りオペレーションを実施する例示的方法の高レベル論理流れ図を形成する図である。
【図１２】本発明によるデータ処理システムでグローバル・バス読取りオペレーションを実施する例示的方法の高レベル論理流れ図を形成する図である。
【図１３】本発明によるデータ処理システムでローカル・バスＲＷＩＴＭオペレーションを実施する例示的方法の高レベル論理流れ図である。
【図１４】本発明によるデータ処理システムでグローバル・バスＲＷＩＴＭオペレーションを実施する例示的方法の高レベル論理流れ図を形成する図である。
【図１５】本発明によるデータ処理システムでグローバル・バスＲＷＩＴＭオペレーションを実施する例示的方法の高レベル論理流れ図を形成する図である。
【図１６】本発明によるデータ処理システムでローカル・バスＤＣｌａｉｍオペレーションを実施する例示的方法の高レベル論理流れ図である。
【図１７】本発明によるデータ処理システムでグローバル・バスＤＣｌａｉｍオペレーションを実施する例示的方法の高レベル論理流れ図である。
【図１８】本発明によるデータ処理システムでローカル・バス・キル・オペレーションを実施する例示的方法の高レベル論理流れ図である。
【図１９】本発明によるデータ処理システムでグローバル・バス・キル・オペレーションを実施する例示的方法の高レベル論理流れ図である。
【図２０】本発明によるデータ処理システムでローカル・バス書込みオペレーションを実施する例示的方法の高レベル論理流れ図である。
【図２１】本発明によるデータ処理システムでグローバル・バス書込みオペレーションを実施する例示的方法の高レベル論理流れ図である。
【図２２】本発明の第１実施形態によるパイプライン式ＤＭＡバス書込みオペレーションによって書き込まれるメモリ・ブロックの保護を示す時空図である。
【図２３】本発明の第２実施形態によるパイプライン式ＤＭＡバス書込みオペレーションによって書き込まれるメモリ・ブロックの保護を示す時空図である。
【符号の説明】
【０１６７】
１００  データ処理システム
１０２ａ  処理ノード
１０２ｂ  処理ノード
１０４ａ  処理装置
１０４ｂ  処理装置
１０４ｃ  処理装置
１０４ｄ  処理装置
１０８ａ  システム・メモリ
１０８ｂ  システム・メモリ
１０８ｃ  システム・メモリ
１０８ｄ  システム・メモリ
１１０  システム相互接続
１１４  ローカル相互接続
２００ａ  プロセッサ・コア
２００ｂ  プロセッサ・コア
２０６  統合メモリ・コントローラ（ＩＭＣ）
２０８  命令順序付けユニット（ＩＳＵ）
２１０  応答ロジック
２１２  転送ロジック
２１４  統合Ｉ／Ｏ（入出力）コントローラ
２１６  Ｉ／Ｏ装置
２２２  スヌーパ
２２４  実行ユニット
２２６  ストアスルー・レベル１（Ｌ１）キャッシュ
２３０  Ｌ２キャッシュ
２３２  マスタ
２３４  Ｌ２アレイおよびディレクトリ
２３６  スヌーパ
３００  キャッシュ・アレイ
３０２  Ｌ２キャッシュ・ディレクトリ
３０４  タグ・フィールド
３０６  状態フィールド
３０８  ＬＲＵ（最長時間未使用）フィールド
５００  メモリ・ブロック
５０２  誤り訂正コード（ＥＣＣ）
５０４  ドメイン標識
【図１】
2007080266.tif 000006
【図２】
2007080266.tif 000007
【図３】
2007080266.tif 000008
【図４】
2007080266.tif 000009
【図５】
2007080266.tif 000010
【図６】
2007080266.tif 000011
【図７】
2007080266.tif 000012
【図８】
2007080266.tif 000013
【図９】
2007080266.tif 000014
【図１０】
2007080266.tif 000015
【図１１】
2007080266.tif 000016
【図１２】
2007080266.tif 000017
【図１３】
2007080266.tif 000018
【図１４】
2007080266.tif 000019
【図１５】
2007080266.tif 000020
【図１６】
2007080266.tif 000021
【図１７】
2007080266.tif 000022
【図１８】
2007080266.tif 000023
【図１９】
2007080266.tif 000024
【図２０】
2007080266.tif 000025
【図２１】
2007080266.tif 000026
【図２２】
2007080266.tif 000027
【図２３】
2007080266.tif 000028