(57)【要約】      （修正有）【課題】改善されたキャッシュ・コヒーレント・データ処理システム、データ処理の方法の提供。【解決手段】少なくとも第１および第２コヒーレンシ・ドメインが含まれる。第１コヒーレンシ・ドメインは、ブロードキャストされるフラッシュ動作を受信する。フラッシュ動作は、ターゲット・メモリ・ブロックのターゲット・アドレスを指定する。第１コヒーレンシ・ドメインは、フラッシュ動作に関する組合せ応答も受信する。第１コヒーレンシ・ドメインでの組合せ応答の受信に応答して、その組合せ応答が、ターゲット・メモリ・ブロックのキャッシュ・コピーがデータ処理システム内に残っている可能性があることを示すかどうかの判定が行われ、可能性があることを示すと判定されたことに応答して、ターゲット・メモリ・ブロックが第１コヒーレンシ・ドメインの外部でキャッシュされることを示すように、ドメイン・インジケータが更新される。【選択図】図５
2007207223.tif 000002
【特許請求の範囲】
【請求項１】
第１コヒーレンシ・ドメインおよび第２コヒーレンシ・ドメインを含むキャッシュ・コヒーレント・データ処理システムにおけるデータ処理方法であって、
前記第１コヒーレンシ・ドメインは、メモリ・コントローラと、ターゲット・アドレスによって識別されるターゲット・メモリ・ブロックを有する関連するシステム・メモリとを含み、
前記第１コヒーレンシ・ドメイン内で、前記ターゲット・メモリ・ブロックが前記第１コヒーレンシ・ドメインの外部でキャッシュされるかどうかを示すドメイン・インジケータを維持するステップと、
前記第１コヒーレンシ・ドメイン内で、前記第１および第２コヒーレンシ・ドメインにブロードキャストされる、前記ターゲット・メモリ・ブロックの前記ターゲット・アドレスを指定するフラッシュ動作を受信するステップと、
前記第１コヒーレンシ・ドメイン内で、前記フラッシュ動作に対するシステム全体の応答を表す、前記フラッシュ動作に対する組合せ応答を受信するステップと、
前記組合せ応答の前記第１コヒーレンシ・ドメイン内での受信に応答して、前記組合せ応答が、前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを示すかどうかを判定するステップと、
前記組合せ応答が、前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを示すと判定されたことに応答して、前記ターゲット・メモリ・ブロックが前記第１コヒーレンシ・ドメインの外部でキャッシュされていることを示すために前記ドメイン・インジケータを更新するステップと、
を含む方法。
【請求項２】
前記フラッシュ動作が前記第１コヒーレンシ・ドメインの外部で発生したかどうかを判定するステップをさらに含み、
前記更新するステップは、前記フラッシュ動作が前記第１コヒーレンシ・ドメインの外部で発生したと判定されたことに応答してのみ前記ドメイン・インジケータを更新するステップを含む、
請求項１に記載の方法。
【請求項３】
前記フラッシュ動作を開始した処理ユニットが、前記メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを示す組合せ応答の受信に応答して、前記ターゲット・メモリ・ブロックのすべてのキャッシュ・コピーを無効化するためにキル動作を発行するステップ
をさらに含む、請求項１に記載の方法。
【請求項４】
前記ターゲット・メモリ・ブロックが前記処理ユニットを含むコヒーレンシ・ドメイン内でのみキャッシュされることを示すキャッシュ状態である前記ターゲット・メモリ・ブロックを前記処理ユニットのキャッシュが保持すると判定されたことに応答して、前記処理ユニットが、前記キル動作の範囲を前記第１コヒーレンシ・ドメインおよび前記第２コヒーレンシ・ドメインのうちのいずれか１つに制限する、請求項３に記載の方法。
【請求項５】
前記フラッシュ動作の受信に応答して、キャッシュ・メモリのキャッシュ・コントローラが、キャッシュ・ディレクトリにアクセスするステップと、
前記キャッシュ・コントローラが、前記キャッシュ・ディレクトリへの参照によって、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックの変更されたコピーを保持すると判定することに応答して、
前記キャッシュ・コントローラが、前記フラッシュ動作の再発行を強制する、前記フラッシュ動作に対するｒｅｔｒｙ部分的応答を供給するステップと、
前記キャッシュ・コントローラが、前記システム・メモリを更新するために、前記メモリ・ブロックの前記変更されたコピーのキャストアウト−プッシュを実行するステップと、
前記キャッシュ・コントローラが、少なくとも前記キャストアウト−プッシュが完了するまで、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対してｒｅｔｒｙ部分的応答を供給するステップと、
をさらに含む、請求項１に記載の方法。
【請求項６】
前記フラッシュ動作の受信に応答して、キャッシュ・メモリのキャッシュ・コントローラが、キャッシュ・ディレクトリにアクセスするステップと、
前記キャッシュ・コントローラが、前記キャッシュ・ディレクトリへの参照によって、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックの共用コピーを保持すると判定することに応答して、
前記キャッシュ・コントローラが、前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在することを示す、前記フラッシュ動作に対するｒｅｔｒｙ部分的応答を供給するステップと、
前記キャッシュ・コントローラが、前記ターゲット・メモリ・ブロックの前記共用コピーを無効化するステップと、
前記無効化まで、前記キャッシュ・コントローラが、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対して、前記キャッシュが前記ターゲット・メモリ・ブロックの共用コピーを保持することを示す部分的応答を供給するステップと、
をさらに含む、請求項１に記載の方法。
【請求項７】
前記フラッシュ動作の受信に応答して、キャッシュ・メモリのキャッシュ・コントローラが、キャッシュ・ディレクトリにアクセスするステップと、
前記キャッシュ・コントローラが、前記キャッシュ・ディレクトリへの参照によって、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックの未変更のコピーを保持するコヒーレンシの最高点であると判定することに応答して、
前記キャッシュ・コントローラが、前記フラッシュ動作の再発行を強制する、前記フラッシュ動作に対するｒｅｔｒｙ部分的応答を供給するステップと、
前記キャッシュ・コントローラが、前記ドメイン・インジケータを更新するためにキャストアウトを実行するステップと、
前記キャッシュ・コントローラが、少なくとも前記キャストアウトが完了するまで、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対してｒｅｔｒｙ部分的応答を供給するステップと、
をさらに含む、請求項１に記載の方法。
【請求項８】
プロセッサ・コアと関連するキャッシュ・メモリを含む処理ユニットと、ターゲット・アドレスによって識別されるターゲット・メモリ・ブロックを有するシステム・メモリを含む、第１コヒーレンシ・ドメインと、
プロセッサ・コアと関連するキャッシュ・メモリを含む処理ユニットを含む、第２コヒーレンシ・ドメインと、
前記ターゲット・メモリ・ブロックが前記第１コヒーレンシ・ドメインの外部でキャッシュされるかどうかを示す、前記第１コヒーレンシ・ドメイン内のドメイン・インジケータと、
前記システム・メモリに結合された、前記第１コヒーレンシ・ドメイン内のメモリ・コントローラを備え、
前記メモリ・コントローラは、前記第１コヒーレンシ・ドメインおよび第２コヒーレンシ・ドメインにブロードキャストされる、前記ターゲット・メモリ・ブロックの前記ターゲット・アドレスを指定するフラッシュ動作に関する組合せ応答の受信に応答して、前記ターゲット・メモリ・ブロックのキャッシュ・コピーがデータ処理システム内に存在する可能性があることを前記組合せ応答が示すかどうかを判定し、
前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを前記組合せ応答が示すと判定されたことに応答して、前記ターゲット・メモリ・ブロックが前記第１コヒーレンシ・ドメインの外部でキャッシュされることを示すために前記ドメイン・インジケータを更新する、
データ処理システム。
【請求項９】
前記メモリ・コントローラが、前記フラッシュ動作が前記第１コヒーレンシ・ドメインの外部で発生したかどうかを判定し、前記フラッシュ動作が前記第１コヒーレンシ・ドメインの外部で発生したと判定されたことに応答してのみ前記ドメイン・インジケータを更新する、請求項８に記載のデータ処理システム。
【請求項１０】
前記処理ユニットが、前記フラッシュ動作を開始した開始処理ユニットを含み、
前記開始処理ユニットが、前記メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを示す組合せ応答の受信に応答して、前記ターゲット・メモリ・ブロックのすべてのキャッシュ・コピーを無効化するためにキル動作を発行する、
請求項８に記載のデータ処理システム。
【請求項１１】
前記ターゲット・メモリ・ブロックが前記開始処理ユニットを含むコヒーレンシ・ドメイン内でのみキャッシュされることを示すキャッシュ状態である前記ターゲット・メモリ・ブロックを前記処理ユニットのキャッシュが保持すること判定されたことに応答して、前記開始処理ユニットが、前記キル動作の範囲を前記第１コヒーレンシ・ドメインおよび前記第２コヒーレンシ・ドメインのうちのいずれかに制限する、請求項１０に記載のデータ処理システム。
【請求項１２】
前記関連するキャッシュ・メモリが、キャッシュ・ディレクトリおよびキャッシュ・コントローラを含み、
前記キャッシュ・コントローラが、前記フラッシュ動作に応答して、前記関連するキャッシュ・メモリが前記ターゲット・メモリ・ブロックの変更されたコピーを保持することを前記キャッシュ・ディレクトリが示すかどうかを判定し、前記判定に応答して、前記フラッシュ動作の再発行を強制する、前記フラッシュ動作に対するｒｅｔｒｙ部分的応答を供給し、前記システム・メモリを更新するために前記メモリ・ブロックの前記変更されたコピーのキャストアウト−プッシュを実行し、少なくとも前記キャストアウト−プッシュが完了するまで、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対してｒｅｔｒｙ部分的応答を供給する、
請求項８に記載のデータ処理システム。
【請求項１３】
前記関連するキャッシュ・メモリが、キャッシュ・ディレクトリおよびキャッシュ・コントローラを含み、
前記キャッシュ・コントローラが、前記フラッシュ動作に応答して、前記キャッシュ・ディレクトリにアクセスし、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックの共用コピーを保持することを前記キャッシュ・ディレクトリが示すことに応答して、前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在することを示す、前記フラッシュ動作に対するｒｅｔｒｙ部分的応答を供給し、前記ターゲット・メモリ・ブロックの前記共用コピーを無効化し、前記無効化まで、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対して、前記キャッシュが前記ターゲット・メモリ・ブロックの共用コピーを保持することを示す部分的応答を供給する、
請求項８に記載のデータ処理システム。
【請求項１４】
前記関連するキャッシュ・メモリが、キャッシュ・ディレクトリおよびキャッシュ・コントローラを含み、
前記キャッシュ・コントローラが、前記フラッシュ動作の受信に応答して、前記キャッシュ・ディレクトリにアクセスし、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックの未変更のコピーを保持するコヒーレンシの最高点であることを前記キャッシュ・ディレクトリが示すことに応答して、前記フラッシュ動作の再発行を強制する、前記フラッシュ動作に対するｒｅｔｒｙ部分的応答を供給し、前記ドメイン・インジケータを更新するためにキャストアウトを実行し、少なくとも前記キャストアウトが完了するまで、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対してｒｅｔｒｙ部分的応答を供給する、
請求項８に記載のデータ処理システム。
【請求項１５】
プロセッサ・コアと関連するキャッシュ・メモリとを含む処理ユニットをそれぞれが含む少なくとも第１コヒーレンシ・ドメインおよび第２コヒーレンシ・ドメインを含むデータ処理システム用のメモリ・コントローラであって、
前記第１コヒーレンシ・ドメインが、さらに、ターゲット・アドレスによって識別されるターゲット・メモリ・ブロックを含むシステム・メモリと、前記ターゲット・メモリ・ブロックが前記第１コヒーレンシ・ドメインの外部でキャッシュされるかどうかを示すドメイン・インジケータとを含み、
前記第１コヒーレンシ・ドメインおよび第２コヒーレンシ・ドメインにブロードキャストされる、前記ターゲット・メモリ・ブロックの前記ターゲット・アドレスを指定するフラッシュ動作に関する組合せ応答の受信に応答して、前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを前記組合せ応答が示すかどうかを判定する手段と、
前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを前記組合せ応答が示すと判定されたことに応答して、前記ターゲット・メモリ・ブロックが前記第１コヒーレンシ・ドメインの外部でキャッシュされることを示すために前記ドメイン・インジケータを更新する手段と、
を含む、メモリ・コントローラ。
【請求項１６】
前記メモリ・コントローラが、さらに、前記フラッシュ動作が前記第１コヒーレンシ・ドメインの外部で発生したかどうかを判定する手段を含み、
前記更新する手段が、前記フラッシュ動作が前記第１コヒーレンシ・ドメインの外部で発生したと判定されたことに応答してのみ前記ドメイン・インジケータを更新する手段を含む、
請求項１５に記載のメモリ・コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的にはデータ処理に関し、具体的には、キャッシュ・コヒーレント・データ処理システムでのデータ処理に関する。
【背景技術】
【０００２】
サーバ・コンピュータ・システムなどの普通の対称型マルチプロセッサ（ＳＭＰ）コンピュータ・システムは、システム相互接続によって相互に結合された複数の処理ユニットを含む。通常、システム相互接続は、アドレス・バス、データ・バス、および制御バスを含み、マルチプロセッサ・コンピュータ・システムの最低レベルの不揮発性メモリを表し、一般に、すべての処理ユニットによる読取アクセスおよび書込アクセスのためにアクセス可能なシステム・メモリが結合されている。システム・メモリに常駐する命令およびデータへのアクセス待ち時間を減らすために、各処理ユニットは、通常、それぞれのマルチレベル・キャッシュ階層によってさらにサポートされ、このマルチレベル・キャッシュ階層のより下位のレベルを、プロセッサ・コアによって共用することができる。
【０００３】
複数のプロセッサ・コアが、データの同一のキャッシュ・ラインへの書込アクセスを要求する場合があり、変更されたキャッシュ・ラインは、即座にはシステム・メモリと同期化されないので、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は、通常、システム・メモリの内容の様々なプロセッサ・コアの「ビュー」の間の少なくとも最低レベルのコヒーレンスを保証するために、キャッシュ・コヒーレンシ・プロトコルを実施する。具体的には、キャッシュ・コヒーレンシは、最低でも、ある処理ユニットがメモリ・ブロックのコピーにアクセスし、その後、そのメモリ・ブロックの更新されたコピーにアクセスした後は、その処理ユニットが、メモリ・ブロックの古いコピーに再びアクセスできないことが必要である。
【０００４】
キャッシュ・コヒーレンシ・プロトコルは、通常、各キャッシュ階層のキャッシュ・ラインに関連して保管されるコヒーレンシ状態の組ならびにキャッシュ階層の間でキャッシュ状態情報を通信するのに利用されるコヒーレンシ・メッセージの組を定義する。通常の実施態様では、コヒーレンシ状態情報は、周知のＭＥＳＩ（Modified, Exclusive, Shared, Invalid）プロトコルまたはその変形形態の形をとり、コヒーレンシ・メッセージは、メモリ・アクセス要求の要求元および／または受信側のキャッシュ階層内のプロトコル定義のコヒーレンシ状態遷移を示す。
【０００５】
【特許文献１】米国特許出願公開２００６−０１７９２５２号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、改善されたキャッシュ・コヒーレント・データ処理システム、キャッシュ・システム、およびキャッシュ・コヒーレント・データ処理システムでのデータ処理の方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
一実施形態で、キャッシュ・コヒーレント・データ処理システムに、少なくとも第１コヒーレンシ・ドメインおよび第２コヒーレンシ・ドメインが含まれる。第１コヒーレンシ・ドメインに、メモリ・コントローラ、ターゲット・アドレスによって識別されるターゲット・メモリ・ブロックを有する関連するシステム・メモリ、およびターゲット・メモリ・ブロックが第１コヒーレンシ・ドメインの外部でキャッシュされるかどうかを示すドメイン・インジケータが含まれる。第１コヒーレンシ・ドメインは、その動作中に、第１コヒーレンシ・ドメインおよび第２コヒーレンシ・ドメインにブロードキャストされるフラッシュ動作を受信する。フラッシュ動作は、ターゲット・メモリ・ブロックのターゲット・アドレスを指定する。第１コヒーレンシ・ドメインは、フラッシュ動作に対するシステム全体の応答を表す、フラッシュ動作に関する組合せ応答も受信する。第１コヒーレンシ・ドメインでの組合せ応答の受信に応答して、その組合せ応答が、ターゲット・メモリ・ブロックのキャッシュ・コピーがデータ処理システム内に存在する可能性があることを示すかどうかの判定が行われる。組合せ応答が、ターゲット・メモリ・ブロックのキャッシュ・コピーがデータ処理システム内に存在する可能性があることを示すと判定されたことに応答して、ターゲット・メモリ・ブロックが第１コヒーレンシ・ドメインの外部でキャッシュされることを示すように、ドメイン・インジケータが更新される。
【０００８】
少なくともいくつかの実施形態で、フラッシュ動作は、そのフラッシュ動作を発行したマスタにターゲット・メモリ・ブロックのコヒーレンシのオーナーシップ（ownership）を付与できるようになるまで再発行される。その後、そのマスタは、必要であれば１つ以上のキル動作を発行して、ターゲット・メモリ・ブロックの共用されるキャッシュ・コピーをデータ処理システムからフラッシュする。フラッシュ動作を開始したマスタへのコヒーレンシのオーナーシップの付与は、ターゲット・メモリ・ブロックの共用されるキャッシュ・コピーの個数を増やす可能性がある読取動作が存在する状態で、フラッシュ動作が進行できることを保証する。コヒーレンシのオーナーシップをマスタに付与するために、必要な場合に、ホーム・システム・メモリでドメイン・インジケータが更新される。その結果、そのフラッシュ動作と衝突するすべての動作が、フラッシュ動作のマスタによってスヌープされ、制限されるようになる。
【０００９】
本発明の目的、特徴、および利点は、次の詳細な説明から明らかになるだろう。
【００１０】
本発明に固有と思われる新規の特徴は、添付の特許請求の範囲に記載される。しかし、本発明ならびに本発明の使用の好ましい実施態様は、添付図面とともに読まれるべき以下の例示的実施形態の詳細な説明を参照することによって最もよく理解されるだろう。
【発明を実施するための最良の形態】
【００１１】
Ｉ．例示的なデータ処理システム
ここで図面、具体的には図１を参照すると、本発明によるキャッシュ・コヒーレント対称型マルチプロセッサ（ＳＭＰ）データ処理システムの例示的な実施形態の高水準ブロック図が示されている。図示のように、データ処理システム１００に、データおよび命令を処理する複数の処理ノード１０２ａおよび１０２ｂが含まれる。処理ノード１０２ａおよび１０２ｂは、アドレス、データ、および制御情報を伝えるために、システム相互接続１１０に結合される。システム相互接続１１０は、例えば、バス式相互接続、交換相互接続、またはハイブリッド相互接続として実施することができる。
【００１２】
図示の実施形態では、各処理ノード１０２が、４つの処理ユニット１０４ａ〜１０４ｄを含むマルチチップ・モジュール（ＭＣＭ）として実現され、各処理ユニットは、めいめいの集積回路として実現されることが好ましい。各処理ノード１０２内の処理ユニット１０４ａ〜１０４ｄは、通信のためにローカル相互接続１１４によって結合され、ローカル相互接続１１４は、システム相互接続１１０に似て、１つ以上のバスおよび／またはスイッチを用いて実施することができる。
【００１３】
各ローカル相互接続１１４に結合されたデバイスに、処理ユニット１０４だけではなく、１つ以上のシステム・メモリ１０８ａ〜１０８ｄも含まれる。システム・メモリ１０８に常駐するデータおよび命令に、一般に、データ処理システム１００の任意の処理ノード１０２内の任意の処理ユニット１０４内のプロセッサ・コアによってアクセスし、変更することができる。本発明の代替実施形態では、１つ以上のシステム・メモリ１０８を、ローカル相互接続１１４ではなくシステム相互接続１１０に結合することができる。
【００１４】
当業者は、ＳＭＰのデータ処理システム１００に、相互接続ブリッジ、不揮発性ストレージ、ネットワークまたは付加されたデバイスへの接続用のポートなど、多数の追加の図示されていない構成要素を含めることができることを諒解するであろう。そのような追加構成要素は、本発明の理解に不要なので、図１には図示されず、本明細書ではさらには説明しない。しかし、本発明によって提供される機能強化が、異なるアーキテクチャのキャッシュ・コヒーレント・データ処理システムに適用可能であり、いかなる形でも、図１に示された一般化されたデータ処理システム・アーキテクチャに限定されないことも理解されたい。
【００１５】
図２を参照すると、本発明による例示的な処理ユニット１０４のより詳細なブロック図が示されている。図示の実施形態では、各処理ユニット１０４に、命令およびデータを独立に処理する２つのプロセッサ・コア２００ａおよび２００ｂが含まれる。各プロセッサ・コア２００に、少なくとも、実行のために命令をフェッチし、順序付ける命令シーケンシング・ユニット（ＩＳＵ）２０８と、命令を実行する１つ以上の実行ユニット２２４とが含まれる。下でさらに述べるように、実行ユニット２２４に、メモリ・ブロックを参照するかメモリ・ブロックを参照する動作の生成を引き起こすメモリ・アクセス命令を実行するロード・ストア・ユニット（ＬＳＵ）２２８が含まれることが好ましい。
【００１６】
各プロセッサ・コア２００の動作は、その最も下のレベルに共用されるシステム・メモリ１０８ａ〜１０８ｄ、より上位のレベルに１つ以上のレベルのキャッシュ・メモリを有するマルチレベル揮発性メモリ階層によってサポートされる。図示の実施形態では、各処理ユニット１０４に、プロセッサ・コア２００ａおよび２００ｂから受け取られた要求と、ローカル相互接続１１４上でスヌーパ（Ｓ）２２２によってスヌープされた動作とに応答して処理ノード１０２内のシステム・メモリ１０８ａ〜１０８ｄのめいめいの１つへの読取アクセスおよび書込アクセスを制御する統合メモリ・コントローラ（ＩＭＣ）２０６が含まれる。ＩＭＣ  ２０６に、基底アドレス・レジスタ（ＢＡＲ）ロジック２４０が含まれ、ＢＡＲロジック２４０には、ＩＭＣ  ２０６が責任を負うアドレスを定義する範囲レジスタが含まれる。
【００１７】
図示の実施形態では、処理ユニット１０４のキャッシュ・メモリ階層に、各プロセッサ・コア２００内のストアスルー式のレベル１（Ｌ１）キャッシュ２２６と、処理ユニット１０４のすべてのプロセッサ・コア２００ａおよび２００ｂによって共用されるレベル２（Ｌ２）キャッシュ２３０とが含まれる。Ｌ２キャッシュ２３０に、Ｌ２アレイおよびディレクトリ２３４と、マスタ２３２およびスヌーパ２３６を含むキャッシュ・コントローラとが含まれる。マスタ２３２は、関連するプロセッサ・コア２００ａ〜２００ｂから受け取られたメモリ・アクセス（および他の）要求に応答して、ローカル相互接続１１４およびシステム相互接続１１０でのトランザクションを開始し、Ｌ２アレイおよびディレクトリ２３４にアクセスする。スヌーパ２３６は、ローカル相互接続１１４での動作をスヌープし、適当な応答を提供し、動作によって要求されるＬ２アレイおよびディレクトリ２３４へのアクセスのすべてを実行する。スヌーパ２３６に、その処理ユニット１０４のＩＭＣ  ２０６が責任を負うアドレスを示すＢＡＲロジック２３８が含まれる。
【００１８】
図示のキャッシュ階層には、２レベルのキャッシュだけが含まれるが、当業者は、代替実施形態にオンチップまたはオフチップのインライン・キャッシュまたはルックアサイド・キャッシュの追加レベル（Ｌ３、Ｌ４、Ｌ５など）を含めることができ、これらに、キャッシュのより上位のレベルの内容をすべて含める、部分的に含める、または含めないものとすることができることを諒解するであろう。
【００１９】
各処理ユニット１０４に、さらに、応答ロジック２１０のインスタンスが含まれ、このインスタンスは、データ処理システム１００内のキャッシュ・コヒーレンシを維持する分散コヒーレンシ・シグナリング機構の一部を実施する。さらに、各処理ユニット１０４に、そのローカル相互接続１１４とシステム相互接続１１０との間の通信を選択的に転送する相互接続ロジック２１２のインスタンスが含まれる。最後に、各処理ユニット１０４に、入出力デバイス２１６などの１つ以上の入出力デバイスの接続をサポートする統合された入出力コントローラ２１４が含まれる。入出力コントローラ２１４は、入出力デバイス２１６による要求に応答して、ローカル相互接続１１４および／またはシステム相互接続１１０で動作を発行することができる。
【００２０】
図３を参照すると、Ｌ２アレイおよびディレクトリ２３４の例示的実施形態のより詳細なブロック図が示されている。図示のように、Ｌ２アレイおよびディレクトリ２３４に、セット・アソシアティブのＬ２キャッシュ・アレイ３００と、Ｌ２キャッシュ・アレイ３００の内容のＬ２キャッシュ・ディレクトリ３０２とが含まれる。普通のセット・アソシアティブ・キャッシュと同様に、システム・メモリ１０８内のメモリ位置は、システム・メモリ（実）アドレス内の所定のインデックス・ビットを利用して、Ｌ２キャッシュ・アレイ３００内の特定の合同クラス（congruence classes）にマッピングされる。Ｌ２キャッシュ・アレイ３００内に保管される特定のキャッシュ・ラインは、Ｌ２キャッシュ・ディレクトリ３０２に記録され、Ｌ２キャッシュ・ディレクトリ３０２には、Ｌ２キャッシュ・アレイ３００内のキャッシュ・ラインごとに１つのディレクトリ・エントリが含まれる。当業者が理解するように、Ｌ２キャッシュ・ディレクトリ３０２内の各ディレクトリ・エントリには、少なくとも、対応する実アドレスのタグ部分を利用してＬ２キャッシュ・アレイ３００に保管される特定のキャッシュ・ラインを指定するタグ・フィールド３０４と、キャッシュ・ラインのコヒーレンシ状態を示す状態フィールド３０６と、同一合同クラス内の他のキャッシュ・ラインに関するキャッシュ・ラインの置換順序を示すＬＲＵ（LeastRecently Used）フィールド３０８とが含まれる。
【００２１】
ＩＩ．例示的動作
図４を参照すると、図１のデータ処理システム１００のシステム相互接続１１０またはローカル相互接続１１４での例示的な動作の時空間図が示されている。この動作は、Ｌ２キャッシュ２３０のマスタ２３２（または、入出力コントローラ２１４などの別のマスタ）が、ローカル相互接続１１４および／またはシステム相互接続１１０で要求４０２を発行する時に開始される。要求４０２に、所望のアクセスのタイプを示すトランザクション・タイプと、その要求によってアクセスされるリソースを示すリソース識別子（例えば、実アドレス）が含まれることが好ましい。一般的なタイプの要求に、下の表Ｉに示された要求が含まれることが好ましい。
【００２２】
【表１】
2007207223.tif 000003
【００２３】
要求４０２は、Ｌ２キャッシュ２３０のスヌーパ２３６ならびにＩＭＣ  ２０６（図１）のスヌーパ２２２によって受け取られる。一般に、いくつかの例外はあるが、要求４０２のマスタ２３２と同一のＬ２キャッシュ２３０内のスヌーパ２３６は、要求４０２をスヌープしない（すなわち、一般に、自己スヌーピングはない）。というのは、要求４０２を処理ユニット１０４によって内部でサービスできない場合に限って、要求４０２がローカル相互接続１１４および／またはシステム相互接続１１０で送られるからである。要求４０２を受信するスヌーパ２２２およびスヌーパ２３６のそれぞれは、少なくとも要求４０２に対するそのスヌーパの応答を表すめいめいの部分的応答４０６を供給することができる。ＩＭＣ  ２０６内のスヌーパ２２２は、例えば、スヌーパ２２２が要求アドレスに関して責任を負うかどうかおよびその要求にサービスするのに使用可能なリソースを有するかどうかに基づいて、供給される部分的応答４０６を決定する。Ｌ２キャッシュ２３０のスヌーパ２３６は、例えば、Ｌ２キャッシュ・ディレクトリ３０２の可用性、その要求を使用するためのスヌーパ２３６内のスヌープ・ロジック・インスタンスの可用性、およびＬ２キャッシュ・ディレクトリ３０２内の要求アドレスに関連するコヒーレンシ状態に基づいて、その部分的応答４０６を決定することができる。
【００２４】
スヌーパ２２２およびスヌーパ２３６の部分的応答は、応答ロジック２１０の１つ以上のインスタンスによって、段階的にまたすべて一時にのいずれかで論理的に組み合わされて、要求４０２に対するシステム全体の組合せ応答（ＣＲ）４１０が決定される。下で述べる範囲制限を受けて、応答ロジック２１０は、そのローカル相互接続１１４および／またはシステム相互接続１１０を介してマスタ２３２、スヌーパ２２２、およびスヌーパ２３６に組合せ応答４１０を供給して、要求４０２に対するシステム全体の応答（例えば、成功、失敗、再試行など）を示す。組合せ応答４１０が、要求４０２の成功を示す場合に、組合せ応答４１０は、例えば、要求されたメモリ・ブロックのデータ・ソース、要求されたメモリ・ブロックがマスタ２３２によってキャッシュされるキャッシュ状態、および１つ以上のＬ２キャッシュ２３０内の要求されたメモリ・ブロックを無効化する「クリーンアップ」（例えば、ＫＩＬＬ）動作が必要であるかどうかを示すことができる。
【００２５】
組合せ応答４１０の受信に応答して、マスタ２３２、スヌーパ２２２、およびスヌーパ２３６のうちの１つ以上が、通常、要求４０２にサービスするために１つ以上の動作を実行する。これらの動作に、データをマスタ２３２に供給すること、１つ以上のＬ２キャッシュ２３０にキャッシュされたデータのコヒーレンシ状態を無効化するか他の形で更新すること、キャストアウト動作を実行すること、データをシステム・メモリ１０８に書き戻すことなどを含めることができる。要求４０２によって要求される場合に、応答ロジック２１０による組合せ応答４１０の生成の前または後に、要求されたまたはターゲットのメモリ・ブロックをマスタ２３２にまたはこれから送ることができる。
【００２６】
次の説明では、要求に対するスヌーパ２２２およびスヌーパ２３６の部分的応答と、要求および／または組合せ応答に応答してスヌーパによって実行される動作とを、そのスヌーパが、要求によって指定される要求アドレスに関して、コヒーレンシの最高点（Highest Point of Coherency、ＨＰＣ）、コヒーレンシの最低点（Lowest Point of Coherency、ＬＰＣ）、またはこのどちらでもないのうちのどれであるかに関して説明する。ＬＰＣは、本明細書では、メモリ・ブロックのリポジトリに関する制御点として機能するメモリ・デバイスまたは入出力デバイスと定義される。メモリ・ブロックのＨＰＣがないときに、ＬＰＣは、メモリ・ブロックの真のイメージを保持するストレージへのアクセスを制御し、そのメモリ・ブロックの追加のキャッシュされるコピーを生成する要求を許可するか拒否する権限を有する。図１および２のデータ処理システム実施形態での通常の要求について、ＬＰＣは、参照されるメモリ・ブロックを保持するシステム・メモリ１０８のＩＭＣ  ２０６である。ＨＰＣは、本明細書では、メモリ・ブロックの真のイメージ（ＬＰＣでの対応するメモリ・ブロックと一貫していてもいなくてもよい）をキャッシュし、そのメモリ・ブロックを変更する要求を許可するか拒否する権限を有するデバイスと一意に定義される。説明的には、ＨＰＣは、メモリ・ブロックを変更しない動作に応答して、要求元にメモリ・ブロックのコピーを供給することもできる。したがって、図１および２のデータ処理システム実施形態での通常の要求について、ＨＰＣは、存在する場合に、Ｌ２キャッシュ２３０になる。他のインジケータを使用して、メモリ・ブロックのＨＰＣを指定することができるが、本発明の好ましい実施形態は、下で表ＩＩを参照してさらに説明するように、メモリ・ブロックのＨＰＣがある場合に、Ｌ２キャッシュ２３０のＬ２キャッシュ・ディレクトリ３０２内の選択されたキャッシュ・コヒーレンシ状態を利用して、そのＨＰＣを指定する。
【００２７】
引き続き図４を参照すると、要求４０２で参照されるメモリ・ブロックのＨＰＣがある場合にはＨＰＣが、ＨＰＣがない場合にはそのメモリ・ブロックのＬＰＣが、保護ウィンドウ４０４ａ中に要求４０２に応答してメモリ・ブロックののオーナーシップの転送を保護する責任を有することが好ましい。図４に示された例示的なシナリオでは、要求４０２の要求アドレスによって指定されるメモリ・ブロックのＨＰＣであるスヌーパ２３６が、保護ウィンドウ４０４ａ中にマスタ２３２への要求されたメモリ・ブロックののオーナーシップの転送を保護し、保護ウィンドウ４０４ａは、スヌーパ２３６がその部分的応答４０６を決定した時から、スヌーパ２３６が組合せ応答４１０を受信する時まで延びる。保護ウィンドウ４０４ａ中に、スヌーパ２３６は、のオーナーシップがマスタ２３２に成功裡に転送されるまで他のマスタがのオーナーシップを入手するのを妨げる、同一の要求アドレスを指定する他の要求に対する部分的応答４０６を供給することによって、のオーナーシップの転送を保護する。マスタ２３２は、同様に、組合せ応答４１０の受信の後に、要求４０２で要求されたメモリ・ブロックののオーナーシップを保護するために、保護ウィンドウ４０４ｂを開始する。
【００２８】
スヌーパ２２２およびスヌーパ２３６のすべてが、上で説明したＣＰＵ要求および入出力要求を処理するための限られたリソースを有するので、複数の異なるレベルの部分的応答および対応するＣＲが可能である。例えば、要求されたメモリ・ブロックの責任を負うＩＭＣ  ２０６内のスヌーパ２２２が、要求を処理するのに使用可能なキューを有する場合に、スヌーパ２２２は、その要求のＬＰＣとして働くことができることを示す部分的応答を用いて応答することができる。その一方で、スヌーパ２２２が、要求を処理するのに使用可能なキューを有しない場合に、スヌーパ２２２は、それがそのメモリ・ブロックのＬＰＣであるが、現在その要求にサービスすることができないことを示す部分的応答を用いて応答することができる。
【００２９】
同様に、Ｌ２キャッシュ２３０内のスヌーパ２３６は、要求を処理するために、スヌープ・ロジックの使用可能なインスタンスおよびＬ２キャッシュ・ディレクトリ３０２へのアクセスを要求することができる。これらのリソースのいずれか（または両方）へのアクセスの不在は、必要なリソースの不在に起因して現在は要求にサービスできないことをシグナリングする部分的応答（および対応するＣＲ）をもたらす。
【００３０】
以下では、要求をサービスするのに必要な場合に、スヌーパが現在その要求にサービスするのに必要な使用可能なすべての内部リソースを有することを示す部分的応答を、スヌーパ２２２およびスヌーパ２３６が供給することを、要求を「肯定する（affirm）」と言う。スヌーパ２３６について、スヌープされる動作を肯定する部分的応答は、スヌーパ２３６での要求されたまたはターゲットのメモリ・ブロックのキャッシュ状態を示すことが好ましい。スヌーパ２３６が要求に現在サービスするのに必要な使用可能なすべての内部リソースを有してはいないことを示す部分的応答を供給するスヌーパ２２２およびスヌーパ２３６を、要求にサービスすることから「部分的に隠されている」または「することができない」と言う場合がある。そのようなスヌーパ２３６は、スヌープ・ロジックの使用可能なインスタンスまたはＬ２キャッシュ・ディレクトリ３０２への現在のアクセスの欠如に起因して、上で定義した意味で要求を「肯定する」ことができないので、要求にサービスすることから「部分的に隠されている」または「することができず」、他のマスタ２３２、スヌーパ２２２、およびスヌーパ２３６の展望からは、未知のコヒーレンシ状態を有する。
【００３１】
ＩＩＩ．データ送達ドメイン
普通のブロードキャストベースのデータ処理システムは、キャッシュ・コヒーレンシとデータ送達の両方をブロードキャスト通信を介して処理し、このブロードキャスト通信は、普通のシステムでは、システム相互接続上で、少なくとも、システム内のすべてのメモリ・コントローラおよびキャッシュ階層に送られる。代替のアーキテクチャおよび類似するスケールのシステムと比較して、ブロードキャストベースのシステムは、減らされたアクセス待ち時間と、共用メモリ・ブロックのよりよいデータ・ハンドリングおよびコヒーレンシ管理とを提供する傾向がある。
【００３２】
ブロードキャストベースのシステムが、サイズにおいてスケーリングされる時に、システム相互接続上のトラフィック量が倍加し、これは、システム相互接続を介する通信により多くの帯域幅が必要なので、システム・コストがシステム・スケールに伴って急激に増加することを意味する。すなわち、ｍ個のプロセッサ・コアを有し、各プロセッサ・コアがｎトランザクションの平均トラフィック量を有するシステムは、ｍ×ｎのトラフィック量を有し、これは、ブロードキャストベースのシステムのトラフィック量が、加算的ではなく乗算的にスケーリングされることを意味する。実質的により大きい相互接続帯域幅の要件のほかに、システム・サイズの増加は、アクセス待ち時間を増やすという副次的影響を有する。例えば、データ読取のアクセス待ち時間は、ワースト・ケースで、要求されたデータをそこからソーシングできる共用コヒーレンシ状態内の要求されたメモリ・ブロックを保持する最も遠いより下位のレベルのキャッシュの組合せ応答待ち時間によって制限される。
【００３３】
システム相互接続帯域幅要件およびアクセス待ち時間を減らすと同時にブロードキャストベースのシステムの利点を維持するために、データ処理システム１００全体に分散された複数のＬ２キャッシュ２３０が、これらのキャッシュがキャッシュ対キャッシュ介入を使用して要求元のＬ２キャッシュ２３０にメモリ・ブロックを供給することを可能にする「特殊な」共用コヒーレンシ状態で同一のメモリ・ブロックのコピーを保持することを許可される。データ処理システム１００などのＳＭＰデータ処理システムで共用メモリ・ブロックの複数同時分散ソースを実施するためには、２つの問題に対処しなければならない。第１に、上で述べた「特殊な」共用コヒーレンシ状態にあるメモリ・ブロックのコピーの作成を支配するあるルールを実施しなければならない。第２に、スヌープするＬ２キャッシュ２３０がある場合に、そのうちのどれが、例えばバス読取り動作またはバスＲＷＩＴＭ動作に応答して、要求元のＬ２キャッシュ２３０に共用メモリ・ブロックを供給するのかを支配するルールがなければならない。
【００３４】
本発明によれば、これらの問題の両方が、データ・ソーシング・ドメインの実施態様を介して対処される。具体的に言うと、ＳＭＰデータ処理システム内の各ドメインは、ドメインが、データ要求への応答に参加する１つ以上のより下位のレベル（例えば、Ｌ２）キャッシュを含むように定義される場合に、一時に、「特殊な」共用コヒーレンシ状態の特定のメモリ・ブロックを保持する１つのキャッシュ階層だけを含むことを許可される。そのキャッシュ階層は、バス読取タイプ（例えば、読取りまたはＲＷＩＴＭ）動作が同一ドメイン内の要求元のより下位のキャッシュ・レベルによって開始された時に存在する場合に、その要求元のより下位のキャッシュ・レベルに要求されたメモリ・ブロックをソーシングする責任を負う。多数の異なるドメイン・サイズを定義することができるが、図１のデータ処理システム１００では、各処理ノード１０２（すなわち、ＭＣＭ）がデータ・ソーシング・ドメインであると考えることが便利である。そのような「特殊な」共用状態（すなわち、Ｓｒ）の一例を、下で表ＩＩを参照して説明する。
【００３５】
ＩＶ．コヒーレンシ・ドメイン
上で説明したデータ送達ドメインの実施態様は、データ・アクセス待ち時間を改善するが、この機能強化は、システム・スケールが増える時のトラフィック量のｍ×ｎ倍加には対処しない。ブロードキャストベースのコヒーレンシ機構を維持しながらトラフィック量を減らすために、本発明の好ましい実施形態は、さらに、コヒーレンシ・ドメインを実施するが、このコヒーレンシ・ドメインは、上で説明したデータ送達ドメインに似て、別々のコヒーレンシ・ドメインを形成する各処理ノード１０２を用いて便利に実施することができる（しかし、そのように実施される必要はない）。データ送達ドメインおよびコヒーレンシ・ドメインは、そうである必要はないが共存することができ、データ処理システム１００の例示的動作の説明において、以下では、処理ノード１０２によって定義される境界を有すると仮定する。
【００３６】
コヒーレンシ・ドメインの実施態様は、すべてより少ないコヒーレンシ・ドメインによる参加によって要求にサービスできる場合に、システム相互接続１１０を介するドメイン間ブロードキャスト通信を制限することによって、システム・トラフィックを減らす。例えば、処理ノード１０２ａの処理ユニット１０４ａが、発行すべきバス読取動作を有する場合に、処理ユニット１０４ａは、まずそのバス読取動作をそれ自体のコヒーレンシ・ドメイン（例えば、バス処理ノード１０２ａ）内のすべての参加者にブロードキャストするが、他のコヒーレンシ・ドメイン（例えば、処理ノード１０２ｂ）内の参加者にはブロードキャストしないことを選択することができる。動作のマスタと同一のコヒーレンシ・ドメイン内の参加者だけに送信されるブロードキャスト動作を、本明細書では「ローカル動作」と定義する。ローカル・バス読取動作に、処理ユニット１０４ａのコヒーレンシ・ドメイン内でサービスすることができる場合に、バス読取動作のこれ以上のブロードキャストは実行されない。しかし、このローカル・バス読取動作に対する部分的応答および組合せ応答が、このバス読取動作を処理ノード１０２ａのコヒーレンシ・ドメイン内だけではサービスできないことを示す場合には、ブロードキャストの範囲を拡張して、ローカル・コヒーレンシ・ドメインのほかに、１つ以上の追加のコヒーレンシ・ドメインを含めることができる。
【００３７】
基本的な実施態様では、２つのブロードキャスト・スコープ（範囲）すなわち、ローカル・コヒーレンシ・ドメインだけを含む「ローカル」スコープと、ＳＭＰデータ処理システム内の他のコヒーレンシ・ドメインのすべてを含む「グローバル」スコープとが使用される。したがって、ＳＭＰデータ処理システム内のすべてのコヒーレンシ・ドメインに送られる動作を、本明細書では「グローバル動作」と定義する。重要なことに、ローカル動作またはより広い範囲の動作（例えば、グローバル動作）のどちらが動作にサービスするのに使用されるかにかかわりなく、キャッシュ・コヒーレンシは、ＳＭＰデータ処理システム内のすべてのコヒーレンシ・ドメインにまたがって維持される。なお、このようなローカル動作およびグローバル動作の一例は、例えば、米国特許出願公開２００６−０１７９２５２号に記載されている。
【００３８】
好ましい実施形態では、動作の範囲は、バス動作において、ローカル／グローバル・スコープ・インジケータ（信号）によって示され、このローカル／グローバル・スコープ・インジケータ（信号）には、一実施形態で、１ビット・フラグを含めることができる。処理ユニット１０４内の相互接続ロジック２１２が、動作のローカル／グローバル・スコープ・インジケータ（信号）のセッティングに基づいて、ローカル相互接続１１４を介して受け取られた動作を、システム相互接続１１０上で転送するか否かを決定することが好ましい。
【００３９】
この説明では、コヒーレンシ・ドメイン（または処理ノード）にメモリ・ブロックのＬＰＣが含まれる場合に、そのコヒーレンシ・ドメインを、そのメモリ・ブロックの「ホーム」コヒーレンシ・ドメイン（または「ホーム」ノード）と呼ぶ。
【００４０】
Ｖ．ドメイン・インジケータ
不必要なローカル動作の発行を制限し、これによって動作待ち時間を減らし、ローカル相互接続上の追加帯域幅を保護するために、本発明は、関連するメモリ・ブロックのコピーがローカル・コヒーレンシ・ドメインの外部でキャッシュされるか否かを示す、メモリ・ブロックごとのドメイン・インジケータを実施することが好ましい。例えば、図５に、本発明によるドメイン・インジケータの第１の例示的実施態様を示す。図５に示されているように、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）で実施できるシステム・メモリ１０８に、複数のメモリ・ブロック５００が保管される。システム・メモリ１０８には、各メモリ・ブロック５００に関連して、メモリ・ブロック５００内に誤りがある場合にその訂正に利用される関連する誤り訂正コード（ＥＣＣ）５０２と、ドメイン・インジケータ５０４とが保管される。本発明のいくつかの実施形態では、ドメイン・インジケータ５０４が、特定のコヒーレンシ・ドメインを識別する（すなわち、コヒーレンシ・ドメインＩＤまたはノードＩＤを指定する）ことができるが、下では、ドメイン・インジケータ５０４は、関連するメモリ・ブロック５００が、仮にキャッシュされるとしても、メモリ・ブロック５００のＬＰＣとして働くＩＭＣ  ２０６と同一のコヒーレンシ・ドメイン内でのみキャッシュされる場合にセットされる（例えば、「ローカル」を示すために「１」にセットされる）、１ビット・インジケータであると仮定する。ドメイン・インジケータ５０４は、そうでない場合にリセットされる（例えば、「グローバル」を示すために「０」にリセットされる）。「ローカル」を示すためにドメイン・インジケータ５０４をセットすることは、「グローバル」の誤ったセッティングがコヒーレンシ・エラーを誘導するのではなく、動作の不必要なグローバル・ブロードキャストを引き起こす可能性があるという点で、不正確に実施することができる。
【００４１】
動作に応答してメモリ・ブロックをソーシングするＩＭＣ  ２０６（およびＬ２キャッシュ２３０）は、要求されたメモリ・ブロックと共に、関連するドメイン・インジケータ５０４を送ることが好ましい。
【００４２】
ＶＩ．例示的なコヒーレンシ・プロトコル
本発明は、上で説明したデータ送達ドメインおよびコヒーレンシ・ドメインの実施態様を活用するように設計されたキャッシュ・コヒーレンシ・プロトコルを実施することが好ましい。好ましい実施形態では、このプロトコル内のキャッシュ・コヒーレンシ状態は、（１）キャッシュがメモリ・ブロックのＨＰＣであるかどうかの表示を提供するほかに、（２）キャッシュ・コピーが、そのメモリ階層レベルのキャッシュの中で一意（すなわち、システム全体で唯一のキャッシュ・コピー）であるかどうかと、（３）キャッシュが、メモリ・ブロックに関する要求のマスタにメモリ・ブロックのコピーを供給できるかどうか、およびいつ供給できるかと、（４）メモリ・ブロックのキャッシュされたイメージが、ＬＰＣの対応するメモリ・ブロック（システム・メモリ）と一貫しているかどうかと、（５）リモート・コヒーレンシ・ドメイン内（おそらく）の別のキャッシュが、一致するアドレスを有するキャッシュ・エントリを保持するかどうかとも示す。この５つの属性は、例えば、下の表ＩＩに要約された周知のＭＥＳＩ（Modified, Exclusive, Shared, Invalid）プロトコルの例示的変形形態で表すことができる。
【００４３】
【表２】
2007207223.tif 000004
【００４４】
Ａ．Ｉｇ状態
メモリ・ブロックが、仮にキャッシュされるとしてもローカルにのみキャッシュされることがわかっているか否かを判定するためにＬＰＣにアクセスする必要をなくすために、Ｉｇ（無効グローバル）コヒーレンシ状態を利用して、メモリ・ブロックのコピーがコヒーレンシ・ドメイン内でキャッシュされたままではない場合のドメイン表示を維持する。Ｉｇ状態は、本明細書では、（１）キャッシュ・アレイ内の関連するメモリ・ブロックが無効であり、（２）キャッシュ・ディレクトリ内のアドレス・タグが有効であり、（３）アドレス・タグによって識別されるメモリ・ブロックのコピーが、おそらくホーム・コヒーレンシ・ドメイン以外のコヒーレンシ・ドメインでキャッシュされている可能性があることを示すキャッシュ・コヒーレンシ状態と定義される。Ｉｇ表示は、不正確であることが好ましく、これは、コヒーレンシの侵害なしでＩｇ表示を不正確にすることができることを意味する。
【００４５】
Ｉｇ状態は、排他的アクセス要求（例えば、バスＲＷＩＴＭ動作）に応答してキャッシュが別のコヒーレンシ・ドメイン内の要求元に要求されたメモリ・ブロックを供給することに応答してホーム・コヒーレンシ・ドメイン内のより下位のレベルのキャッシュ内で形成される。
【００４６】
Ｉｇ状態を含むキャッシュ・ディレクトリ・エントリは、潜在的に有用な情報を担持するので、少なくともいくつかの実施形態で、Ｉｇ状態のエントリをＩ状態のエントリより優先的に保存することが望ましい（例えば、置換の犠牲キャッシュ・エントリを選択するのに利用されるLeast Recently Used（ＬＲＵ）アルゴリズムを変更することによって）。Ｉｇディレクトリ・エントリがキャッシュ内で保存されるので、その排他的アクセス要求がＩｇ状態の形成を引き起こしたキャッシュが、Ｉｇ状態のメモリ・ブロックのアドレス・タグを保持するキャッシュへの通知なしでそのメモリ・ブロックのコピーを割振り解除するかライトバックする可能性があるという点で、いくつかのＩｇエントリが経時的に「古く」なる可能性がある。そのような場合に、「古い」Ｉｇ状態は、ローカル動作の代わりにグローバル動作が発行されなければならないことを不正に示すが、コヒーレンシ・エラーを引き起こすのではなく、単に、そうでなければローカル動作を利用してサービスできるいくつかの動作をグローバル動作として発行させる。そのような非効率性の発生は、「古い」Ｉｇキャッシュ・エントリの最終的な置換によって、持続時間において制限される。
【００４７】
複数のルールが、Ｉｇキャッシュ・エントリの選択および置換を支配する。第１に、キャッシュが、置換の犠牲としてＩｇエントリを選択する場合に、システム・メモリ１０８内の対応するドメイン・インジケータ５０４を更新するために、Ｉｇエントリのキャストアウトが実行される（Ｉエントリ、Ｉｎエントリ、またはＩｇｐエントリが選択される場合と異なって）。第２に、メモリ・ブロックをキャッシュにロードさせる要求が、同一のキャッシュ内のＩｇキャッシュ・エントリにヒットする場合に、そのキャッシュは、Ｉｇヒットをキャッシュ・ミスとして扱い、選択された犠牲としてそのＩｇエントリに関するキャストアウト動作を実行する。したがって、このキャッシュは、キャッシュ・ディレクトリ内に同一アドレス・タグの２つのコピーを置くことを防止する。第３に、Ｉｇ状態のキャストアウトは、スコープにおいてローカル・コヒーレンシ・ドメインに制限されたローカルのみの動作として実行されることが好ましい。第４に、Ｉｇ状態のキャストアウトは、ドメイン表示がＬＰＣ内のドメイン・インジケータ５０４に書き戻される、データなしでアドレスのみの動作として実行されることが好ましい。
【００４８】
本発明によるＩｇ状態の実施態様は、メモリ・ブロックの有効なコピーがホーム・コヒーレンシ・ドメイン内でキャッシュされていない時であっても、メモリ・ブロックのキャッシュされたドメイン・インジケータをホーム・コヒーレンシ・ドメイン内で維持することによって、通信効率を改善する。下で説明するように、Ｉｇ状態によって提供されるキャッシュ・ドメイン表示を利用して、関連するメモリ・ブロックをターゲットとする動作に関する相互接続ファブリック上のグローバル・ブロードキャスト・スコープ（範囲）を予測することができる。
【００４９】
Ｂ．Ｉｇｐ状態
Ｉｇｐ（無効グローバル予測のみ）コヒーレンシ状態は、メモリ・ブロックのコピーが非ホーム・コヒーレンシ・ドメインでキャッシュされていない場合に、キャッシュされたドメイン表示を維持するのに利用される。Ｉｇｐ状態は、本明細書では、（１）キャッシュ・アレイ内の関連するメモリ・ブロックが無効であり、（２）キャッシュ・ディレクトリ内のアドレス・タグが有効であり、（３）現在のコヒーレンシ・ドメインがホーム・コヒーレンシ・ドメインではなく、（４）アドレス・タグによって識別されるメモリ・ブロックのコピーが、おそらくは、現在の非ホーム・コヒーレンシ・ドメイン以外のコヒーレンシ・ドメインでキャッシュされる可能性があることを示すキャッシュ・コヒーレンシ状態と定義される。正確に形成されるが、Ｉｇｐ表示は、不正確に維持されることが好ましく、これは、コヒーレンシの侵害なしでＩｇｐ表示を不正確にすることができることを意味する。
【００５０】
Ｉｇｐ状態は、排他的アクセス要求（例えば、ＲＷＩＴＭ要求、ＤＣｌａｉｍ要求、ＤＣＢＺ要求、Ｋｉｌｌ要求、Ｗｒｉｔｅ要求、またはＰａｒｔｉａｌ  Ｗｒｉｔｅ要求）に応答してキャッシュが別のコヒーレンシ・ドメイン内の要求元に要求されたメモリ・ブロックのコヒーレンシのオーナーシップを供給することに応答して、非ホーム・コヒーレンシ・ドメイン内のより下位のレベルのキャッシュ内で形成される。
【００５１】
Ｉｇｐ状態を含むキャッシュ・ディレクトリ・エントリは、潜在的に有用な情報を担持するので、少なくともいくつかの実施形態で、Ｉ状態のエントリが存在する場合に、Ｉｇ状態のエントリをＩ状態のエントリより優先的に保存することが望ましい（例えば、置換の犠牲キャッシュ・エントリを選択するのに利用されるLeast Recently Used（ＬＲＵ）アルゴリズムを変更することによって）。Ｉｇｐディレクトリ・エントリがキャッシュ内で保存されるので、メモリ・ブロックのコピーがＩｇｐ状態のメモリ・ブロックのアドレス・タグを保持するキャッシュによってスヌープされずにコヒーレンシ・ドメインに返される場合があるという点で、いくつかのＩｇｐエントリが経時的に「古く」なる可能性がある。そのような場合に、「古い」Ｉｇｐ状態は、ローカル動作の代わりにグローバル動作が発行されなければならないことを不正に示すが、コヒーレンシ・エラーを引き起こすのではなく、単に、そうでなければローカル動作を利用してサービスできるいくつかの動作をグローバル動作として発行させる。そのような非効率性の発生は、「古い」Ｉｇｐキャッシュ・エントリの最終的な置換によって、持続時間において制限される。
【００５２】
Ｉｇエントリの処理と異なって、Ｉｇｐエントリのキャストアウトは、例えば置換アルゴリズム（例えば、ＬＲＵ）に従うか、キャッシュへのメモリ・ブロックのロードを引き起こす要求が同一のキャッシュ内のＩｇｐキャッシュ・エントリにヒットしたことに起因する、置換の犠牲としてのＩｇｐエントリの選択に応答しては実行されない。そうではなく、Ｉｇｐエントリは、単純に割振り解除される。キャストアウトが実行されないのは、Ｉｇｐエントリが、基礎になるドメイン・インジケータ５０４のキャッシュされ、おそらくは変更されたコピーを維持しないからである。
【００５３】
本発明によるＩｇｐ状態の実施態様は、メモリ・ブロックの有効なコピーが非ホーム・コヒーレンシ・ドメイン内でキャッシュされていない時であっても、メモリ・ブロックのキャッシュされたドメイン・インジケータを範囲予測のために非ホーム・コヒーレンシ・ドメイン内で維持することによって、通信効率を改善する。
【００５４】
Ｃ．Ｉｎ状態
Ｉｎ状態は、本明細書では、（１）キャッシュ・アレイ内の関連するメモリ・ブロックが無効であり、（２）キャッシュ・ディレクトリ内のアドレス・タグが有効であり、（３）アドレス・タグによって識別されるメモリ・ブロックのコピーが、仮にキャッシュされるとしても、ローカル・コヒーレンシ・ドメイン内の１つ以上の他のキャッシュ階層のみによってキャッシュされる可能性が高いことを示すキャッシュ・コヒーレンシ状態と定義される。Ｉｎ表示は、不正確であることが好ましく、これは、コヒーレンシの侵害なしでＩｎ表示を不正確にすることができることを意味する。Ｉｎ状態は、排他的アクセス要求（例えば、バスＲＷＩＴＭ動作）に応答してキャッシュが同一コヒーレンシ・ドメイン内の要求元に要求されたメモリ・ブロックを供給することに応答して、より下位のレベルのキャッシュ内で形成される。
【００５５】
Ｉｎ状態を含むキャッシュ・ディレクトリ・エントリは、潜在的に有用な情報を担持するので、少なくともいくつかの実施形態で、Ｉｎ状態のエントリをＩ状態のエントリより優先的に保存することが望ましい（例えば、置換の犠牲キャッシュ・エントリを選択するのに利用されるLeast Recently Used（ＬＲＵ）アルゴリズムを変更することによって）。Ｉｎディレクトリ・エントリがキャッシュ内で保存されるので、その排他的アクセス要求がＩｎ状態の形成を引き起こしたキャッシュ自体が、Ｉｎ状態のメモリ・ブロックのアドレス・タグを保持するキャッシュへの通知なしでそのメモリ・ブロックの共用コピーをリモート・コヒーレンシ・ドメインに供給する可能性があるという点で、いくつかのＩｎエントリが経時的に「古く」なる可能性がある。そのような場合に、「古い」Ｉｎ状態は、グローバル動作の代わりにローカル動作が発行されなければならないことを不正に示すが、コヒーレンシ・エラーを引き起こすのではなく、単に、いくつかの動作を、グローバル動作ではなくまずローカル動作として誤って発行させる。そのような非効率性の発生は、「古い」Ｉｎキャッシュ・エントリの最終的な置換によって、持続時間において制限される。好ましい実施形態では、Ｉｎコヒーレンシ状態のキャッシュ・エントリは、キャストアウトの対象ではなく、単純に置換される。したがって、Ｉｇキャッシュ・エントリと異なって、Ｉｎキャッシュ・エントリは、システム・メモリ１０８内のドメイン・インジケータ５０４の更新には利用されない。
【００５６】
本発明によるＩｎ状態の実施態様は、その動作のうちの１つのローカル・スコープ（範囲）を選択するためにマスタによって問い合わされる可能性がある、メモリ・ブロックのキャッシュされたドメイン・インジケータを維持することによって、通信効率を改善する。その結果、システム相互接続１１０および他のコヒーレンシ・ドメイン内のローカル相互接続１１４の帯域幅が保護される。
【００５７】
Ｄ．Ｓｒ状態
下で説明する動作では、Ｓｒコヒーレンシ状態の要求された共用メモリ・ブロックを保持するより下位のレベルのキャッシュが要求元マスタと同一のドメイン内に置かれているか否かを判定できることが有用である。一実施形態で、要求元マスタと同一ドメイン内の「ローカル」Ｓｒスヌーパの存在を、Ｓｒコヒーレンシ状態の要求されたメモリ・ブロックを保持する、より下位のレベルのキャッシュのスヌーパの応答挙動によって示すことができる。例えば、各バス動作に、そのバス動作がドメイン境界をまたぐかどうかを示す範囲インジケータ（例えば、マスタの明示的なドメイン識別子または単一ビットのローカル／非ローカル範囲ビット）が含まれると仮定すると、Ｓｒコヒーレンシ状態の共用メモリ・ブロックを保持する、より下位のレベルのキャッシュは、同一のデータ・ソーシング・ドメイン内のマスタによる要求だけに関してＳｒ状態の要求を肯定する部分的応答を供給し、他のすべての要求についてＳ状態を示す部分的応答を供給することができる。そのような実施形態で、応答挙動を表ＩＩＩに示されたものとして要約することができ、ここで、プライム記号（’）表記は、メモリ・ブロックの実際のキャッシュ状態と異なる可能性がある部分的応答を指定するのに使用されている。
【００５８】
【表３】
2007207223.tif 000005
【００５９】
上の表ＩＩＩに示された応答挙動を仮定すると、データ・ソースとして働くことのできるＳＭＰデータ処理システム内に分散されたメモリ・ブロックの共用コピーの数を増やすことによって、共用データの平均データ待ち時間を大幅に減らすことができる。
【００６０】
ＶＩＩ．例示的なデータ・キャッシュ・ブロック・フラッシュ動作
図６〜７を参照すると、本発明による、キャッシュ・メモリが関連プロセッサ・コアから受け取られたデータ・キャッシュ・ブロック・フラッシュ（ＤＣＢＦ）動作をサービスする例示的な方法の高水準論理流れ図が示されている。本明細書で提示される他の論理流れ図と同様に、図６〜７に示されたステップの少なくとも一部を、図示と異なる順序で実行することができ、あるいは、同時に実行することができる。
【００６１】
図６のプロセスは、ブロック６００で開始され、ブロック６００は、Ｌ２キャッシュ２３０内のマスタ２３２が、処理ユニット１０４内の関連するプロセッサ・コア２００からＣＰＵ  ＤＣＢＦ要求を受信することを表す。ＣＰＵ  ＤＣＢＦ要求は、キャッシュ・メモリからシステム・メモリにフラッシュされるターゲット・メモリ・ブロックを指定する。異なる実施形態では、マスタ２３２を、自己スヌーピングありまたはなしで、ＣＰＵ  ＤＣＢＦ要求を処理するように設計することができる。マスタ２３２が、Ｌ２キャッシュ・ディレクトリ３０２に対するＣＰＵ  ＤＣＢＦ要求で指定されたアドレスを自己スヌープするように設計されている場合に、このプロセスは、次に、ブロック６０２に進むが、このブロックは下で説明する。しかし、マスタ２３２が、ＣＰＵ  ＤＣＢＦ要求で指定されたアドレスを自己スヌープするように設計されていない場合には、このプロセスは、ブロック６００からブロック６０４に直接に進む。
【００６２】
ブロック６０４では、マスタ２３２が、そのローカル相互接続１１４およびシステム相互接続１１０を介して、データ処理システム１００内のすべての処理ユニット１０４にグローバルＤＣＢＦ要求を送る。一般に、グローバルＤＣＢＦ要求には、少なくとも、その要求をグローバルＤＣＢＦ要求として識別するトランザクション・タイプ（Ｔｔｙｐｅ）と、そのグローバルＤＣＢＦ要求によってフラッシュされるターゲット・メモリ・ブロックを識別するターゲット・アドレスとが含まれる。その後、マスタ２３２は、そのグローバルＤＣＢＦ要求の組合せ応答（ＣＲ）の受信を待って、そのグローバルＤＣＢＦ要求を完了するためにさらなるアクション（例えば、ターゲット・メモリ・ブロックの残りのキャッシュ・コピーを無効化するバックグラウンド・キル（ＢＫ）動作）が必要であるかどうかを判定する。ブロック６０６に示されているように、そのグローバルＤＣＢＦ要求の組合せ応答がＲｅｔｒｙである場合に、このプロセスはブロック６０４に戻り、ブロック６０４は、マスタ２３２がそのグローバルＣＤＢＦ要求を再発行することを表す。組合せ応答が、ＲｅｔｒｙではなくＡｄｄｒ＿Ａｃｋ＿ＢＫ（アドレス肯定応答バックグラウンド・キル）である場合に（ブロック６０８）、このプロセスは、ブロック６２０に進むが、このブロックは下で説明する。Ａｄｄｒ＿Ａｃｋ＿ＢＫ組合せ応答は、ＤＣＢＦ要求がコヒーレンシの点に達したが、まだデータ処理システム１００内に存在するターゲット・メモリ・ブロックのキャッシュ・コピーを無効化するために、バックグラウンド・キル動作が必要であることを示す。マスタ２３２が、ブロック６０６および６０８で、組合せ応答がＲｅｔｒｙでもＡｄｄｒ＿Ａｃｋ＿ＢＫでもないと判定する場合には、グローバルＤＣＢＦ動作が成功裡に完了しており、このプロセスはブロック６３０で終了する。
【００６３】
ブロック６２０を参照すると、Ａｄｄｒ＿Ａｃｋ＿ＢＫ組合せ応答の受信に応答して、マスタ２３２は、そのグローバルＤＣＢＦ要求が発行された時にターゲット・メモリ・ブロックのＨＰＣであった場合とそうでない場合があるが、ターゲット・メモリ・ブロックに関するＨＰＣ状況を仮定し、ターゲット・アドレスのＨＰＣ保護を開始する。ターゲット・アドレスのＨＰＣ保護は、マスタ２３２が、Ｒｅｔｒｙ＿ｏｔｈｅｒ部分的応答を供給することによって、ターゲット・メモリ・ブロックへのアクセスを要求する他の動作が成功しないようにすることを必要とする。さらに、ブロック６２２に示されているように、マスタ２３２は、まだデータ処理システム１００内に存在するターゲット・メモリ・ブロックのすべてのキャッシュ・コピーの無効化を強制するために、ターゲット・メモリ・ブロックのアドレスを指定するグローバル・バックグラウンド・キル（ＢＫ）要求をデータ処理システム１００内のすべての処理ユニット１０４に送る。次に、マスタ２３２は、ブロック６２４でこのグローバル・バックグラウンド・キル要求の組合せ応答を待つ。組合せ応答がＮｕｌｌではなく、ターゲット・メモリ・ブロックのキャッシュ・コピーがまだデータ処理システム１００内に存在する可能性があることを意味する場合には、このプロセスは、ブロック６２２に戻り、マスタ２３２が、グローバル・バックグラウンド・キル要求を再発行する。その一方で、グローバル・バックグラウンド・キル要求の組合せ応答がＮｕｌｌであり、ターゲット・メモリ・ブロックのキャッシュ・コピーがデータ処理システム１００内に残っていないことを意味する場合には、このプロセスは、ブロック６２６に進む。ブロック６２６では、マスタ２３２が、ターゲット・メモリ・ブロックのＨＰＣ保護を終了する。その後、図６に示されたプロセスは、ブロック６３０で終了する。
【００６４】
ブロック６０２に戻って、マスタ２３２が、Ｌ２キャッシュ・ディレクトリ３０２に対するＣＰＵ  ＤＣＢＦ要求で指定されたターゲット・アドレスを自己スヌープするように設計されている場合に、マスタ２３２は、Ｌ２キャッシュ・ディレクトリ３０２にアクセスして、ＣＰＵ  ＤＣＢＦ要求のターゲット・メモリ・ブロックがＬ２キャッシュ・ディレクトリ３０２内でデータ有効コヒーレンシ状態（例えば、Ｍ、Ｍｅ、Ｔ、Ｔｅ、Ｔｎ、Ｔｅｎ、Ｓ、またはＳｒ）であるか否かを判定する。そうでない場合には、このプロセスは、ブロック６０４およびそれに続くブロックに進むが、これらは説明済みである。しかし、ターゲット・メモリ・ブロックがＬ２キャッシュ・ディレクトリ３０２でデータ有効コヒーレンシ状態を有することをＬ２キャッシュ・ディレクトリ３０２が示す場合には、このプロセスは、コネクタＡを介して図７のブロック６４０に進む。
【００６５】
ブロック６４０で、マスタ２３２は、Ｌ２キャッシュ・ディレクトリ３０２内のターゲット・メモリ・ブロックのコヒーレンシ状態が、マスタ２３２がそのターゲット・メモリ・ブロックのＨＰＣに位置することを示すかどうかを判定する、すなわち、マスタ２３２は、コヒーレンシ状態がＭｘ（例えば、ＭまたはＭｅ）またはＴｘ（例えば、Ｔ、Ｔｅ、Ｔｎ、またはＴｅｎ）であるかどうかを判定する。マスタ２３２が、ブロック６４０で、それがターゲット・メモリ・ブロックのＨＰＣに位置しないと判定する場合に、このプロセスは、ブロック６９０に進み、このブロックは、マスタ２３２がターゲット・メモリ・ブロックのＳｘ保護を開始することを示す。Ｓｘ保護は、マスタ２３２が、そのターゲット・メモリ・ブロックに関する要求にＲｅｔｒｙ＿ｓｈａｒｅｄ部分的応答を供給することを必要とする。次に、マスタ２３２は、ブロック６９１に示されているように、関連するより上位のレベルのキャッシュ（例えば、Ｌ１キャッシュ２２６）内のターゲット・メモリ・ブロックを無効化し、Ｌ２キャッシュ・ディレクトリ３０２内のターゲット・メモリ・ブロックのコヒーレンシ状態をＩに更新する（ブロック６９２）。ブロック６９３および６９４に示されているように、マスタ２３２は、その後、ブロック６９１〜６９２に示された動作が完了した後に、ターゲット・メモリ・ブロックのＳｘ保護を終了する。その後、このプロセスは、ページ・コネクタＢを介して図６のブロック６０４に進むが、このブロックは説明済みである。
【００６６】
ブロック６４０に戻って、Ｌ２キャッシュ・ディレクトリ３０２内のターゲット・メモリ・ブロックのコヒーレンシ状態が、マスタ２３２がそのターゲット・メモリ・ブロックのＨＰＣに位置することを示すという決定に応じて、このプロセスは、ブロック６４２〜６４３に進む。ブロック６４２および６４３は、それぞれ、マスタ２３２がターゲット・メモリ・ブロックのＨＰＣ保護を開始することと、その後、関連するより上位のレベルのキャッシュ（例えば、Ｌ１キャッシュ２２６）内のターゲット・メモリ・ブロックを無効化することを示す。マスタ２３２は、ターゲット・メモリ・ブロックに関するコヒーレンシ状態に従って、ＣＰＵ  ＤＣＢＦ要求も処理する。例えば、マスタ２３２が、ターゲット・メモリ・ブロックがＬ２キャッシュ・ディレクトリ３０２内でＭｅコヒーレンシ状態を有すると判定する場合に（ブロック６４４）、これは、キャッシュされたメモリ・ブロックがシステム・メモリ１０８と一貫していることを示し、システム・メモリ１０８へのフラッシュは不要である。その結果、ＣＰＵ  ＤＣＢＦ要求をサービスするために、マスタ２３２は、ブロック６４６に示されているように、単純に、ターゲット・メモリ・ブロックのコヒーレンシをＬ２キャッシュ・ディレクトリ３０２内でＩに更新する。
【００６７】
ブロック６５０を参照すると、マスタ２３２が、ターゲット・メモリ・ブロックがＬ２キャッシュ・ディレクトリ３０２内でＭコヒーレンシ状態を有すると判定する場合に、マスタ２３２は、このメモリ・ブロックの最新のコピーを用いてシステム・メモリ１０８を更新するためにターゲット・メモリ・ブロックのキャストアウト−プッシュを実行し、その後、ターゲット・メモリ・ブロックのコヒーレンシ状態をＬ２キャッシュ・ディレクトリ３０２内でＩに更新する（ブロック６５２）。
【００６８】
もう一度ブロック６５０を参照すると、Ｌ２キャッシュ・ディレクトリ３０２内のターゲット・メモリ・ブロックのコヒーレンシ状態がＭではないと判定されたことに応答して（これは、コヒーレンシ状態がＴｘ（例えば、Ｔ、Ｔｅ、Ｔｎ、またはＴｅｎ）でなければならないことを意味する）、このプロセスは、ブロック６６２に進む。ブロック６６２は、マスタ２３２が、このメモリ・ブロックの最新のコピーを用いてシステム・メモリ１０８を更新するためにターゲット・メモリ・ブロックのキャストアウト−プッシュを実行し、その後、ターゲット・メモリ・ブロックのコヒーレンシ状態をＬ２キャッシュ・ディレクトリ３０２内でＩに更新することを示す。次に、ブロック６６４に示されているように、マスタ２３２は、Ｌ２キャッシュ・ディレクトリ３０２内のメモリ・ブロックのコヒーレンシ状態を参照することによって、相互接続ファブリック上で発行されるバックグラウンド・キル動作の範囲を判定する。
【００６９】
コヒーレンシ状態がＴｎまたはＴｅｎである場合に、これは、ターゲット・メモリ・ブロックが、どこかでキャッシュされている場合に、マスタ２３２と同一のコヒーレンシ・ドメイン（例えば、処理ノード１０２）内でのみキャッシュされていることを意味し、グローバル・バックグランド・キル動作は不要である。その結果、マスタ２３２は、ブロック６６６に示されているように、ローカルの処理ノード１０２に制限された範囲を有するローカル・バックグラウンド・キル要求をそのローカル相互接続１１４上でブロードキャストする。ブロック６６８に示されているように、マスタ２３２は、Ｎｕｌｌ組合せ応答が受け取られるまで、ローカル・バックグラウンド・キル要求を再発行し続ける。
【００７０】
ブロック６６４をもう一度参照すると、Ｌ２キャッシュ・ディレクトリ３０２内のターゲット・メモリ・ブロックのコヒーレンシ状態がＴまたはＴｅである場合に、ターゲット・メモリ・ブロックは、おそらくローカル・コヒーレンシ・ドメインの外部でキャッシュされている。したがって、マスタ２３２は、ブロック６７０に示されているように、すべての処理ノード１０２を含む範囲を有するグローバル・バックグラウンド・キル要求をそのローカル相互接続１１４上でブロードキャストする。ブロック６７２に示されているように、マスタ２３２は、Ｎｕｌｌ組合せ応答が受け取られるまで、グローバル・バックグラウンド・キル要求を再発行し続ける。
【００７１】
ブロック６４６、６５２、６７２、および６６８のいずれかの後に、このプロセスは、ブロック６７９および６８０に進み、これらのブロックは、マスタ２３２が、すべての前のステップが完了した後にターゲット・メモリ・ブロックのＨＰＣ保護を終了することを示す。その後、このプロセスは、図７のブロック６８１で終了する。
【００７２】
図８〜９を参照すると、本発明による、Ｌ２キャッシュのスヌーパ２３６などのキャッシュ・スヌーパがグローバルＤＣＢＦ要求を処理する例示的な方法の高水準論理流れ図が示されている。図示のように、このプロセスは、図８のブロック７００で、Ｌ２キャッシュのスヌーパ２３６によるローカル相互接続１１４での要求の受信に応答して開始される。この要求の受信に応答して、スヌーパ２３６は、ブロック７０２で、例えば要求内のトランザクション・タイプ（Ｔｔｙｐｅ）フィールドを参照することによって、その要求がＤＣＢＦ要求であるか否かを判定する。そうでない場合には、スヌーパ２３６は、ブロック７０４に示されているように他の処理を実行し、このプロセスは、ブロック７２４で終了する。しかし、スヌーパ２３６が、ブロック７０２で、要求がＤＣＢＦ要求であると判定する場合には、スヌーパ２３６は、さらに、ブロック７１０で、現在ＤＣＢＦ要求に実質的に応答することができるかどうか（例えば、スヌープ・ロジックの使用可能なインスタンスおよびＬ２キャッシュ・ディレクトリ３０２への現在のアクセスを有するかどうか）を判定する。スヌーパ２３６が、現在ドメイン照会要求に実質的に応答できない場合には、スヌーパ２３６は、ブロック７１２に示されているように、Ｒｅｔｒｙ＿ｏｔｈｅｒの部分的応答（ＰＲ）を供給し、スヌーパ２３６によるＤＣＢＦ要求の処理は、ブロック７２４で終了する。
【００７３】
スヌーパ２３６が、ＤＣＢＦ要求に実質的に応答できると仮定すると、スヌーパ２３６は、ブロック７１４で、ローカルのマスタ２３２またはスヌーパ２３６内のスヌープ・ロジックのインスタンスが、ＤＣＢＦ要求と同一のメモリ・アドレスをターゲットとする衝突する動作を現在処理しているか否かと、ローカルのマスタ２３２またはスヌープ・ロジック・インスタンスが、ターゲット・メモリ・ブロックがデータ有効コヒーレンシ状態（例えば、Ｍｘ、Ｔｘ、Ｓｒ、またはＳ）を示すかどうかとを判定する。スヌーパ２３６が、ブロック７１４で、ローカルのマスタ２３２またはスヌーパ２３６内のスヌープ・ロジックのインスタンスがＤＣＢＦ要求と同一のメモリ・アドレスをターゲットとする衝突する動作を現在処理しており、かつ、メモリ・ブロックがターゲット・メモリ・ブロックに関してデータ有効コヒーレンシ状態を有すると判定する場合に、スヌーパ２３６は、ターゲット・メモリ・ブロックの示されたコヒーレンシ状態に応じて部分的応答を供給する（ブロック７１５）。すなわち、ローカルのマスタ２３２またはスヌープ・ロジック・インスタンスが、ターゲット・メモリ・ブロックのコヒーレンシ状態がＭｘまたはＴｘであることを示す場合に、スヌーパ２３６は、Ｒｅｔｒｙ＿ｏｔｈｅｒ部分的応答を供給し（ブロック７１２）、そうでない場合には、Ｓｈａｒｅｄ部分的応答を供給する（ブロック７１６）。ブロック７１２または７１６のいずれかの後に、スヌーパ２３６によるＤＣＢＦ要求の処理は、ブロック７２４で終了する。
【００７４】
しかし、スヌーパ２３６が、ブロック７１４で否定的判定を行う場合には、このプロセスは、ブロック７２０および７３０に進み、これらのブロックは、スヌーパ２３６が、Ｌ２キャッシュ・ディレクトリ３０２内のターゲット・メモリ・ブロックのコヒーレンシ状態を判定することを示す。コヒーレンシ状態がＩｘ（例えば、Ｉ、Ｉｎ、Ｉｇ、Ｉｇｐ）である場合に、スヌーパ２３６は、Ｎｕｌｌ部分的応答を供給し（ブロック７２２）、そのＬ２キャッシュ２３０が、ターゲット・メモリ・ブロックのコピーを保持しない（その結果、このＤＣＢＦ要求がこのＬ２キャッシュ２３０で効果を有しない）ことを示す。その後、このプロセスはブロック７２４で終了する。しかし、コヒーレンシ状態がＭｘまたはＴｘである場合に、スヌーパ２３６は、Ｒｅｔｒｙ＿ｏｔｈｅｒ部分的応答を供給して（ブロック７３２）、スヌーパ２３６がターゲット・メモリ・ブロックのコピーをシステム・メモリ１０８にプッシュできるようになるまで、このＤＣＢＦ要求の再発行を強制する。その代わりに、コヒーレンシ状態がＳｘ（例えば、ＳまたはＳｒ）である場合に、スヌーパ２３６は、ＤＣＢＦ要求に対してＳｈａｒｅｄ部分的応答を供給する（ブロック７３４）。ブロック７３２およびブロック７３４の後に、このプロセスは、それぞれページ・コネクタＤおよびページ・コネクタＥを介して図９に進む。
【００７５】
図９を参照すると、スヌーパ２３６のキャストアウト・アクティビティおよび保護アクティビティがある場合の、それらのアクティビティが示されている。図からわかるように、スヌーパ２３６が、ターゲット・メモリ・ブロックのコヒーレンシ状態がＬ２キャッシュ・ディレクトリ３０２内でＳｘであると判定した場合に、このプロセスは、ページ・コネクタＥからブロック７４８に進み、このブロックは、スヌーパ２３６が、ターゲット・アドレスのＳｘ保護を開始することを示し、これは、スヌーパ２３６が、その後、同一のターゲット・メモリ・アドレスをターゲットとする動作のスヌープに応答して、Ｒｅｔｒｙ＿ｓｈａｒｅｄ部分的応答を供給することを意味する。ブロック７４８の後に、このプロセスは、ブロック７６０に進むが、このブロックは下で説明する。
【００７６】
その一方で、スヌーパ２３６が、Ｌ２キャッシュ・ディレクトリ３０２内のターゲット・メモリ・ブロックのコヒーレンシ状態がＭｘまたはＴｘであると判定した場合に、図９に示されたプロセスは、ページ・コネクタＤで開始され、その後、ブロック７４０に進み、このブロックは、スヌーパ２３６がターゲット・メモリ・ブロックのＨＰＣ保護を開始することを示し、これは、スヌーパ２３６が、その後、同一のターゲット・メモリ・アドレスをターゲットとするスヌープされた動作にＲｅｔｒｙ＿ｏｔｈｅｒ部分的応答を供給することを意味する。さらに、スヌーパ２３６は、Ｌ２キャッシュ・ディレクトリ３０２内のターゲット・メモリ・ブロックのコヒーレンシ状態に従ってキャストアウト−プッシュを実行する。ブロック７４２および７４４に示されているように、スヌーパ２３６が、ターゲット・メモリ・ブロックのコヒーレンシ状態がＭ、Ｔ、またはＴｎであると判定した場合に、スヌーパ２３６は、ターゲット・メモリ・ブロックのキャストアウト−プッシュを実行することによって、最新データを用いてシステム・メモリ１０８を更新する。その一方で、スヌーパ２３６が、ターゲット・メモリ・ブロックのコヒーレンシ状態がＴｅであると判定した場合に（ブロック７５０）、これは、ターゲット・メモリ・ブロックのメモリ一貫性のあるコピーが、おそらくローカル・コヒーレンシ・ドメインの外部でキャッシュされていることを意味し、スヌーパ２３６は、「グローバル」を示すためにドメイン・インジケータ５０４を更新するだけでよい。ブロック７５２に示されているように、この更新は、メモリ・ブロックがＩｇコヒーレンシ状態でキャッシュされているかのようにドメイン・インジケータのデータなしキャストアウト−プッシュを実行することによって実行することができる。その代わりに、ドメイン・インジケータ５０４を、ブロック７４４に示されているように普通のキャストアウト−プッシュを実行することによって更新することができる。ブロック７４４またはブロック７５２の後に、このプロセスは、ブロック７６０に進む。
【００７７】
ブロック７６０は、スヌーパ２３６が、より上位のレベルのキャッシュ（例えば、Ｌ１キャッシュ２２６）内のＤＣＢＦ動作のターゲット・メモリ・ブロックを無効化するためにバック無効化信号を発行することを示す。さらに、ブロック７６２に示されているように、スヌーパ２３６は、Ｌ２キャッシュ・ディレクトリ３０２内の関連するエントリをＩコヒーレンシ状態に更新することによって、Ｌ２キャッシュ２３０内のターゲット・メモリ・ブロックを無効化する。ブロック７６３および７６４に示されているように、その後、スヌーパ２３６は、ブロック７６０および７６２に示された動作が完全に完了した後に、ターゲット・メモリ・ブロックのＨＰＣ保護ウィンドウまたはＳｘ保護ウィンドウを終了する。ブロック７６４の後に、このプロセスは、図９のブロック７６５で終了する。
【００７８】
図１０を参照すると、グローバルＤＣＢＦ要求の受信に応答して、スヌーパ２２２をディスパッチするか否かをメモリ・コントローラ（例えば、ＩＭＣ  ２０６）が判定するプロセスの高水準論理流れ図が示されている。図からわかるように、このプロセスは、ブロック８００で、ＩＭＣ  ２０６による、そのローカル相互接続１１４を介する要求の受信に応答して開始される。次に、ＩＭＣ  ２０６は、ブロック８０２で、ＢＡＲロジック２４０を参照することによって、そのＩＭＣが、スヌープされた動作で指定されるターゲット・アドレスの責任を負うか否かを判定する。そうでない場合には、このプロセスは、ブロック８２４に進み、終了する。しかし、ＩＭＣ  ２０６がスヌープされた要求で指定されるアドレスの責任を負う場合には、このプロセスは、ブロック８０３に進み、このブロックは、ＩＭＣ  ２０６が、動作のＴｔｙｐｅを参照することによって、スヌープされた要求がグローバルＤＣＢＦ要求であるかどうかを判定することを示す。そうでない場合には、ＩＭＣ  ２０６は、ブロック８０４に示されているように他の処理を実行し、このプロセスは、ブロック８２４で終了する。
【００７９】
ＩＭＣ  ２０６が、ブロック８０３で、スヌープされた要求がグローバルＤＣＢＦ動作であると判定することに応答して、このプロセスはブロック８１０に進み、このブロックは、ＩＭＣ  ２０６が、グローバルＤＣＢＦ要求で指定されたターゲット・アドレスに関してスヌーパ２２２が現在アクティブであるか否かを判定することを示す。そうである場合には、ＩＭＣ  ２０６は、ブロック８１２に示されているように、グローバルＤＣＢＦ要求に対してＲｅｔｒｙ＿ＬＰＣ部分的応答を供給する。ブロック８２０および８２１に示されているように、ＩＭＣ  ２０６は、同様に、スヌーパ２２２がディスパッチに使用可能でない場合に、グローバルＤＣＢＦ要求に対してＲｅｔｒｙ＿ＬＰＣ部分的応答を供給する。しかし、ブロック８２０でスヌーパ２２２がディスパッチに使用可能と判定されることに応答して、ＩＭＣ  ２０６は、ブロック８２２に示されているように、グローバルＤＣＢＦ要求を処理するためにスヌーパ２２２をディスパッチする。その後、図１０に示されたプロセスは、ブロック８２４で終了する。
【００８０】
図１１を参照すると、本発明による、メモリ・コントローラ・スヌーパ（例えば、スヌーパ２２２）がグローバルＤＣＢＦ要求を処理するプロセスの高水準論理流れ図が示されている。図からわかるように、このプロセスは、ブロック８３０で、図１０のブロック８２２を参照して上で説明した、グローバルＤＣＢＦ要求を処理するためのスヌーパ２２２のディスパッチに応答して開始される。次に、スヌーパ２２２は、ブロック８３２に示されているように、ターゲット・メモリ・ブロックのアドレスのＬＰＣ保護を提供し始める。そのような保護を提供している間に、スヌーパ２２２は、そのターゲット・メモリ・ブロックと同一のアドレスを有する動作に対してＲｅｔｒｙ＿ＬＰＣ部分的応答を供給する。次に、ブロック８３４で、スヌーパ２２２は、グローバルＤＣＢＦ動作の組合せ応答の受信を待つ。
【００８１】
スヌーパ２２２は、グローバルＤＣＢＦ要求を開始したマスタ２３２の相対位置に従って組合せ応答に応答する（ブロック８４０）。したがって、スヌープされたグローバルＤＣＢＦ要求内の範囲ビットが、それがリモートの処理ノード１０２（すなわち、スヌーパ２２２を含むもの以外の処理ノード１０２）から発生したことを示す場合に、このプロセスは、ブロック８４２に進むが、このブロックは下で説明する。グローバルＤＣＢＦ要求が、リモートの処理ノード１０２から発生したのではなく、スヌーパ２２２の処理ノード１０２内から発生した場合に、システム・メモリ１０８内のドメイン・インジケータ５０４の更新は不要である。その結果、スヌーパ２２２は、単純に、ＬＰＣ保護の提供を終了し（ブロック８５０）、ＩＭＣ  ２０６によって割振り解除される（ブロック８５２）。その後、このプロセスはブロック８６０で終了する。
【００８２】
ブロック８４２を参照すると、グローバルＤＣＢＦ要求を処理するために割り振られたスヌーパ２２２は、関連する組合せ応答がＡｄｄｒ＿Ａｃｋ＿ＢＫ組合せ応答であるか否かを判定する。そうでない場合には、このプロセスはブロック８５０に進むが、このブロックは説明済みである。そうである場合には、これは、開始したマスタ２３２での処理が、ブロック６２０〜６２６を介して同時に進行していることを意味し、メモリ・コントローラのスヌーパ２２２は、システム・メモリ１０８からターゲット・メモリ・ブロックのドメイン・インジケータ５０４を読み取り（ブロック８４３）、その値をテストし（ブロック８４４）、必要な場合に、「グローバル」を示すようにドメイン・インジケータ５０４を更新する（ブロック８４６）。ブロック８４４またはブロック８４６のいずれかの後に、このプロセスは、ブロック８５０に進むが、このブロックは説明済みである。
【００８３】
図１２を参照すると、本発明による、応答ロジック２１０が、グローバルＤＣＢＦ動作に対する組合せ応答を提供するプロセスの高水準論理流れ図が示されている。図からわかるように、このプロセスは、ブロック９００で開始され、その後、ブロック９０２に進み、このブロックは、Ｒｅｔｒｙ＿ｏｔｈｅｒまたはＲｅｔｒｙ＿ＬＰＣの部分的応答がグローバルＤＣＢＦ要求に応答して受け取られたかどうかの、応答ロジック２１０のインスタンス（例えば、グローバルＤＣＢＦ要求を発行したマスタ２３２の処理ユニット１０４内の応答ロジック２１０）による判定を示す。そうである場合には、応答ロジック２１０は、グローバルＤＣＢＦ要求を再発行しなければならないことを知らせるために、Ｒｅｔｒｙの組合せ応答を生成し、グローバルにブロードキャストする（ブロック９０４）。その後、このプロセスはブロック９３０で終了する。
【００８４】
ブロック９０２に戻って、Ｒｅｔｒｙ＿ｏｔｈｅｒまたはＲｅｔｒｙ＿ＬＰＣの部分的応答が受け取られなかったと応答ロジック２１０が判定することに応答して、このプロセスは、ブロック９１０に進む。ブロック９１０は、応答ロジック２１０が、グローバルＤＣＢＦ要求に関してＲｅｔｒｙ＿ｓｈａｒｅｄ部分的応答が受け取られたかどうかを判定することを示す。そうである場合には、応答ロジック２１０は、ＤＣＢＦ動作を成功裡に完了するためにローカルまたはグローバルのバックグラウンド・キル要求を発行しなければならないことを示すために、Ａｄｄｒ＿Ａｃｋ＿ＢＫ組合せ応答を生成し、グローバルにブロードキャストする（ブロック９１２）。その後、このプロセスはブロック９３０で終了する。しかし、応答ロジック２１０が、ブロック９１０で、グローバルＤＣＢＦ要求に関してＲｅｔｒｙ＿ｓｈａｒｅｄ部分的応答が受け取られなかったと判定する場合には、応答ロジック２１０は、Ａｄｄｒ＿ａｃｋ組合せ要求を生成し、グローバルにブロードキャストし（ブロック９２０）、グローバルＤＣＢＦ動作が成功したことを示す。その後、図１２に示されたプロセスはブロック９３０で終了する。
【００８５】
上で説明したように、本発明は、複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理する改善されたデータ処理システム、処理ユニット、キャッシュ階層、およびデータ処理の方法を提供する。
【００８６】
本発明を、好ましい実施形態を参照して説明されるものとして具体的に図示したが、当業者は、本発明の趣旨および範囲から逸脱せずに、形態および詳細における様々な変更を行えることを理解するであろう。
【図面の簡単な説明】
【００８７】
【図１】本発明による例示的なデータ処理システムを示す高水準ブロック図である。
【図２】本発明による処理ユニットを示すより詳細なブロック図である。
【図３】図２に示されたＬ２キャッシュ・アレイおよびディレクトリを示すより詳細なブロック図である。
【図４】図１のデータ処理システムのシステム相互接続上の例示的なトランザクションを示す時空間図である。
【図５】本発明の好ましい実施形態によるドメイン・インジケータを示す図である。
【図６】本発明による、キャッシュ・メモリがデータ処理システム内のプロセッサ・コアから受け取られたデータ・キャッシュ・ブロック・フラッシュ（ＤＣＢＦ）動作をサービスする例示的な方法を示す高水準論理流れ図の一部である。
【図７】本発明による、キャッシュ・メモリがデータ処理システム内のプロセッサ・コアから受け取られたデータ・キャッシュ・ブロック・フラッシュ（ＤＣＢＦ）動作をサービスする例示的な方法を示す高水準論理流れ図の一部である。
【図８】本発明による、キャッシュ・スヌーパがＤＣＢＦ動作を処理する例示的な方法を示す高水準論理流れ図の一部である。
【図９】本発明による、キャッシュ・スヌーパがＤＣＢＦ動作を処理する例示的な方法を示す高水準論理流れ図の一部である。
【図１０】本発明による、ＤＣＢＦ動作の受信に応答して、メモリ・コントローラ・スヌーパをディスパッチするか否かをメモリ・コントローラが判定するプロセスを示す高水準論理流れ図である。
【図１１】本発明による、メモリ・コントローラ・スヌーパがグローバルＤＣＢＦ動作を処理するプロセスを示す高水準論理流れ図である。
【図１２】本発明による、グローバルＤＣＢＦ動作に対する組合せ応答を提供するプロセスを示す高水準論理流れ図である。
【符号の説明】
【００８８】
１００  データ処理システム
１０２ａ  処理ノード
１０２ｂ  処理ノード
１０４ａ  処理ユニット
１０４ｂ  処理ユニット
１０４ｃ  処理ユニット
１０４ｄ  処理ユニット
１０８ａ  システム・メモリ
１０８ｂ  システム・メモリ
１０８ｃ  システム・メモリ
１０８ｄ  システム・メモリ
１１０  システム相互接続
１１４  ローカル相互接続
２００ａ  プロセッサ・コア
２００ｂ  プロセッサ・コア
２０６  統合メモリ・コントローラ（ＩＭＣ）
２０８  命令シーケンシング・ユニット（ＩＳＵ）
２１０  応答ロジック
２１２  相互接続ロジック
２１４  入出力コントローラ
２１６  入出力デバイス
２２２  スヌーパ
２２４  実行ユニット
２２６  レベル１（Ｌ１）キャッシュ
２２８  ロード・ストア・ユニット（ＬＳＵ）
２３０  レベル２（Ｌ２）キャッシュ
２３２  マスタ
２３４  Ｌ２アレイおよびディレクトリ
２３６  スヌーパ
２３８  ＢＡＲロジック
２４０  基底アドレス・レジスタ（ＢＡＲ）ロジック
３００  Ｌ２キャッシュ・アレイ
３０２  Ｌ２キャッシュ・ディレクトリ
３０４  タグ・フィールド
３０６  状態フィールド
３０８  ＬＲＵ（Least Recently Used）フィールド
４０２  要求
４０４ａ  保護ウィンドウ
４０４ｂ  保護ウィンドウ
４０６  部分的応答
４１０  組合せ応答（ＣＲ）
５００  メモリ・ブロック
５０２  誤り訂正コード（ＥＣＣ）
５０４  ドメイン・インジケータ
６００  開始のステップ
６０２  メモリ・ブロックがキャッシュ内で有効かどうかを判定するステップ
６０４  グローバルＤＣＢＦ動作を送るステップ
６０６  ＣＲ＝Ｒｅｔｒｙかどうかを判定するステップ
６０８  ＣＲ＝Ａｄｄｒ＿Ａｃｋ＿ＢＫかどうかを判定するステップ
６２０  ＨＰＣ保護を開始するステップ
６２２  グローバルＢＫ要求を送るステップ
６２４  ＣＲ＝Ｎｕｌｌかどうかを判定するステップ
６２６  ＨＰＣ保護を停止するステップ
６３０  終了のステップ
６４０  ＭｘまたはＴｘであるかどうかを判定するステップ
６４２  ＨＰＣ保護を開始するステップ
６４３  より上位のレベルのキャッシュ内のキャッシュ・ラインを無効化するステップ
６４４  Ｍｅかどうかを判定するステップ
６４６  キャッシュ・ブロックをＩに更新するステップ
６５０  Ｍかどうかを判定するステップ
６５２  キャストアウト／プッシュを実行し、キャッシュ・ブロックをＩに更新するステップ
６６２  キャストアウト／プッシュを実行し、キャッシュ・ブロックをＩに更新するステップ
６６４  ＴｎまたはＴｅｎかどうかを判定するステップ
６６６  ノードのみＢＫを発行するステップ
６６８  ＣＲ＝Ｎｕｌｌかどうかを判定するステップ
６７０  グローバルＢＫを発行するステップ
６７２  ＣＲ＝Ｎｕｌｌかどうかを判定するステップ
６７９  前のすべてのステップが完了したかどうかを判定するステップ
６８０  ＨＰＣ保護を停止するステップ
６８１  終了のステップ
６９０  Ｓｘ保護を開始するステップ
６９１  より上位のレベルのキャッシュ内のキャッシュ・ラインを無効化するステップ
６９２  キャッシュ・ブロックをＩに更新するステップ
６９３  前のすべてのステップが完了したかどうかを判定するステップ
６９４  Ｓｘ保護を停止するステップ
７００  開始のステップ
７０２  ＤＣＢＦ動作をスヌープしたかどうかを判定するステップ
７０４  他の処理を実行するステップ
７１０  応答することができないかどうかを判定するステップ
７１２  Ｒｅｔｒｙ＿ｏｔｈｅｒ  ＰＲを供給するステップ
７１４  マスタまたはスヌーパが衝突する動作を処理しており、かつ、コヒーレンシ状態がデータ有効であるかどうかを判定するステップ
７１５  ＨＰＣかどうかを判定するステップ
７１６  Ｓｈａｒｅｄ  ＰＲを供給するステップ
７２０  メモリ・ブロックがＩｘであるかどうかを判定するステップ
７２２  Ｎｕｌｌ  ＰＲを供給するステップ
７３０  メモリ・ブロックがＭｘまたはＴｘであるかどうかを判定するステップ
７３２  Ｒｅｔｒｙ＿ｏｔｈｅｒ  ＰＲを供給するステップ
７３４  Ｓｈａｒｅｄ  ＰＲを供給するステップ
７２４  終了のステップ
７４０  ＨＰＣ保護を開始するステップ
７４２  Ｍ、Ｔ、またはＴｎであるかどうかを判定するステップ
７４４  メモリ・ブロックのキャストアウト−プッシュを実行するステップ
７４８  Ｓｘ保護を開始するステップ
７５０  Ｔｅであるかどうかを判定するステップ
７５２  ドメイン・インジケータをグローバルに更新するためにＩｇメモリ・ブロックのキャストアウト−プッシュを実行するステップ
７６０  より上位のレベルのキャッシュ内のキャッシュ・ラインを無効化するステップ
７６２  コヒーレンシ状態をＩに更新するステップ
７６３  前のすべてのステップが完了したかどうかを判定するステップ
７６４  保護ウィンドウを終了するステップ
７６５  終了のステップ
８００  開始のステップ
８０２  ＩＭＣが責任を負うかどうかを判定するステップ
８０３  スヌープされた要求がグローバルＤＣＢＦ動作であるかどうかを判定するステップ
８０４  他の処理を実行するステップ
８１０  スヌーパがアドレスに関してアクティブかどうかを判定するステップ
８１２  Ｒｅｔｒｙ＿ＬＰＣ  ＰＲを供給するステップ
８２０  スヌーパは使用可能かどうかを判定するステップ
８２２  スヌーパをディスパッチするステップ
８２４  終了のステップ
８３０  開始のステップ
８３２  ＬＰＣ保護を開始するステップ
８３４  ＣＲを受け取ったかどうかを判定するステップ
８４０  ＤＣＢＦがリモート・ノードから発生したかどうかを判定するステップ
８４２  ＣＲ＝Ａｄｄｒ＿Ａｃｋ＿ＢＫかどうかを判定するステップ
８４３  メモリのドメイン・インジケータを読み取るステップ
８４４  ドメイン・インジケータがグローバルであるかどうかを判定するステップ
８４６  ドメイン・インジケータをグローバルに更新するステップ
８５０  ＬＰＣ保護を終了するステップ
８５２  スヌーパを割振り解除するステップ
８６０  終了のステップ
９００  開始のステップ
９０２  受け取られたＰＲ＝Ｒｅｔｒｙ＿ｏｔｈｅｒまたはＲｅｔｒｙ＿ＬＰＣかどうかを判定するステップ
９１０  受け取られたＰＲ＝Ｒｅｔｒｙ＿ｓｈａｒｅｄかどうかを判定するステップ
９２０  ＣＲ＝Ａｄｄｒ＿ａｃｋを発行するステップ
９３０  終了のステップ
【図１】
2007207223.tif 000006
【図２】
2007207223.tif 000007
【図３】
2007207223.tif 000008
【図４】
2007207223.tif 000009
【図５】
2007207223.tif 000010
【図６】
2007207223.tif 000011
【図７】
2007207223.tif 000012
【図８】
2007207223.tif 000013
【図９】
2007207223.tif 000014
【図１０】
2007207223.tif 000015
【図１１】
2007207223.tif 000016
【図１２】
2007207223.tif 000017