(57)【要約】      （修正有）【課題】キャッシュ・コヒーレント・データ処理システムの提供。【解決手段】メモリ・アクセス・リクエストをマスタが受けると、キャッシュ階層の上位レベル・キャッシュの第１キャッシュ・ディレクトリをアクセスする。ターゲット・アドレスが有効アドレス・タグおよび第１無効コヒーレンシ状態を有するエントリと関連付けられていることに対応して、即座に相互接続ファブリック上にターゲット・アドレスを指定するリクエストを送出する。ターゲット・アドレスが第一キャッシュディレクトリにおいて第２無効コヒーレンシ状態を有するエントリと関連付けられていることに応答して、キャッシュ・コヒーレンシの下位レベル・キャッシュの第２キャッシュ・ディレクトリにおいてターゲット・アドレスと関連付けられたコヒーレンシ状態を決定した後、相互接続ファブリック上にターゲット・アドレスを指定するリクエストを送出する。【選択図】  図６
2006285992.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）ターゲット・アドレスを表すメモリ・アクセス・リクエストをマスタが受けることに応答して、前記マスタがキャッシュ階層の上位レベル・キャッシュの第１キャッシュ・ディレクトリをアクセスする、ステップと、
（ｂ）前記ターゲット・アドレスが、前記第１キャッシュ・ディレクトリにおいて、有効アドレス・タグおよび第１無効コヒーレンシ状態を有するエントリと関連付けられていることに応答して、前記マスタが、前記キャッシュ階層の下位レベル・キャッシュの第２キャッシュ・ディレクトリにおいて前記ターゲット・アドレスと関連付けられたコヒーレンシ状態をみることなく、前記ターゲット・アドレスを指定するリクエストを相互接続ファブリック上に送出する、ステップと、
（ｃ）前記ターゲット・アドレスが前記第１キャッシュ・ディレクトリに関して第２無効コヒーレンシ状態を有することに応答して、前記マスタが、前記第２キャッシュ・ディレクトリにおいて前記ターゲット・アドレスと関連付けられたコヒーレンシ状態を決定した後、前記ターゲット・アドレスを指定するリクエストを前記相互接続ファブリック上に送出する、ステップと、
を含む方法。
【請求項２】
前記マスタが、前記第１キャッシュ・ディレクトリをアクセスすると同時に前記第２キャッシュ・ディレクトリのルックアップを遂行するステップを更に含む、請求項１に記載の方法。
【請求項３】
前記ターゲット・アドレスが、前記第１キャッシュ・ディレクトリにおいて、有効アドレス・タグおよび第１無効コヒーレンシ状態を有するエントリと関連付けられている場合、前記マスタが前記第２キャッシュ・ディレクトリのルックアップの結果を無視するステップを更に含む、請求項２に記載の方法。
【請求項４】
前記ターゲット・アドレスが、前記第１キャッシュ・ディレクトリにおいて、前記第１無効コヒーレンシ状態を有するエントリと関連付けられていないという決定に応答して、前記マスタが前記第２キャッシュ・ディレクトリのルックアップを遂行するステップを更に含む、請求項１に記載の方法。
【請求項５】
前記マスタは第１マスタであり、
前記第１無効コヒーレンシ状態は、第２マスタが、前記ターゲット・アドレスと関連付けられたターゲット・メモリ・ブロックに対する排他的アクセスを得ているということを表す、
請求項１に記載の方法。
【請求項６】
前記ステップ（ｃ）は、前記第２キャッシュ・ディレクトリにおいて前記ターゲット・アドレスと関連付けられた前記コヒーレンシ状態が、前記ターゲット・アドレスを指定するリクエストを前記相互接続ファブリック上に送出することなく前記メモリ・アクセス・リクエストがサービスされることを許容しない、ということを決定した後、前記マスタが、前記ターゲット・アドレスを指定する前記リクエストを前記相互接続ファブリック上に送出するステップを含む、請求項１に記載の方法。
【請求項７】
プロセッサ・コアと、
少なくとも、第１キャッシュ・ディレクトリを含む上位レベル・キャッシュおよび第２キャッシュ・ディレクトリを含む下位レベル・キャッシュを含むキャッシュ階層と、
を含み、
前記上位レベル・キャッシュは、ターゲット・アドレスを表すメモリ・アクセス・リクエストを前記プロセッサ・コアから受けたことに応答して前記第１キャッシュ・ディレクトリをアクセスし、前記ターゲット・アドレスが、前記第１キャッシュ・ディレクトリにおいて、有効アドレス・タグおよび第１無効コヒーレンシ状態を有するエントリと関連付けられていることに応答して、前記第２キャッシュ・ディレクトリにおいて前記ターゲット・アドレスと関連付けられたコヒーレンシ状態をみることなく、前記ターゲット・アドレスを指定する第１リクエストを相互接続ファブリック上に送出するマスタを含み、
前記マスタは、前記ターゲット・アドレスが前記第１キャッシュ・ディレクトリに関して第２無効コヒーレンシ状態を有することに応答して、前記第２キャッシュ・ディレクトにおいて前記ターゲット・アドレスと関連付けられたコヒーレンシ状態を決定した後、前記ターゲット・アドレスを指定する第２リクエストを前記相互接続ファブリック上に送出する、
処理ユニット。
【請求項８】
前記マスタは、前記第１キャッシュ・ディレクトリをアクセスすると同時に前記第２キャッシュ・ディレクトリのルックアップを遂行する、請求項７に記載の処理ユニット。
【請求項９】
前記マスタは、前記ターゲット・アドレスが、前記第１キャッシュ・ディレクトリにおいて、有効アドレス・タグおよび第１無効コヒーレンシ状態を有するエントリと関連付けられている場合、前記第２キャッシュ・ディレクトリのルックアップの結果を無視する、請求項８に記載の処理ユニット。
【請求項１０】
前記マスタは、前記ターゲット・アドレスが、前記第１キャッシュ・ディレクトリにおいて、前記第１無効コヒーレンシ状態を有するエントリと関連付けられていないという決定に応答して、前記第２キャッシュ・ディレクトリのルックアップを遂行する、請求項７に記載の処理ユニット。
【請求項１１】
前記マスタは第１マスタであり、
前記第１無効コヒーレンシ状態は、前記処理ユニットを含むデータ処理システムにおける第２マスタが、前記ターゲット・アドレスと関連付けられたターゲット・メモリ・ブロックに対する排他的アクセスを得ていることを表す、
請求項７に記載の処理ユニット。
【請求項１２】
前記マスタは、前記下位レベル・キャッシュの前記第２キャッシュ・ディレクトリにおいて前記ターゲット・アドレスと関連付けられた前記コヒーレンシ状態が、前記相互接続ファブリック上に前記第２リクエストを送出することなく前記メモリ・アクセス・リクエストがサービスされることを許容しない、ということを決定した後、前記相互接続ファブリック上に前記第２リクエストを送出する、請求項７に記載の処理ユニット。
【請求項１３】
相互接続ファブリックと、
前記相互接続ファブリックに結合されたシステム・メモリと、
前記相互接続ファブリックに結合された複数の処理ユニットと、
を含み、
前記複数の処理ユニットにおける第１処理ユニットは、プロセッサ・コアと、第１キャッシュ・ディレクトリを含む上位レベル・キャッシュおよび第２キャッシュ・ディレクトリを含む下位レベル・キャッシュを少なくとも含むキャッシュ階層とを含み、
前記上位レベル・キャッシュは、ターゲット・アドレスを表すメモリ・アクセス・リクエストを前記プロセッサ・コアから受けたことに応答して前記第１キャッシュ・ディレクトリをアクセスし、前記ターゲット・アドレスが、前記第１キャッシュ・ディレクトリにおいて、有効アドレスおよび第１無効コヒーレンシ状態を有するエントリと関連付けられていることに応答して、前記第２キャッシュ・ディレクトリにおいて前記ターゲット・アドレスと関連付けられたコヒーレンシ状態をみることなく、前記ターゲット・アドレスを指定する第１リクエストを前記相互接続ファブリック上に送出するマスタを含み、
前記マスタは、前記ターゲット・アドレスが前記第１キャッシュ・ディレクトリに関して第２無効コヒーレンシ状態を有することに応答して、前記第２キャッシュ・ディレクトにおいて前記ターゲット・アドレスと関連付けられたコヒーレンシ状態を決定した後、前記ターゲット・アドレスを指定する第２リクエストを前記相互接続ファブリック上に送出する、
データ処理システム。
【請求項１４】
前記マスタは、前記第１キャッシュ・ディレクトリをアクセスすると同時に前記第２キャッシュ・ディレクトリのルックアップを遂行する、請求項１３に記載のデータ処理システム。
【請求項１５】
前記マスタは、前記ターゲット・アドレスが、前記第１キャッシュ・ディレクトリにおいて、有効アドレス・タグおよび第１無効コヒーレンシ状態を有するエントリと関連付けられている場合、前記第２キャッシュ・ディレクトリのルックアップの結果を無視する、請求項１４に記載のデータ処理システム。
【請求項１６】
前記マスタは、前記ターゲット・アドレスが、前記第１キャッシュ・ディレクトリにおいて、前記第１無効コヒーレンシ状態を有するエントリと関連付けられていないという決定に応答して、前記第２キャッシュ・ディレクトリのルックアップを遂行する、請求項１３に記載のデータ処理システム。
【請求項１７】
前記マスタは第１マスタであり、
前記複数の処理ユニットは第２処理ユニットを含み、
前記第１無効コヒーレンシ状態は、前記第２処理ユニットにおける第２マスタが前記ターゲット・アドレスと関連付けられたターゲット・メモリ・ブロックに対する排他的アクセスを得ていることを表す、
請求項１３に記載のデータ処理システム。
【請求項１８】
前記マスタは、前記下位レベル・キャッシュの前記第２キャッシュ・ディレクトリにおいて前記ターゲット・アドレスと関連付けられた前記コヒーレンシ状態が、前記相互接続ファブリック上に前記第２リクエストを送出することなく前記メモリ・アクセス・リクエストがサービスされることを許容しない、ということを決定した後、前記相互接続ファブリック上に前記第２リクエストを送出する、請求項１３に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはデータ処理に関し、詳しくは、キャッシュ・コヒーレント・データ処理システムにおけるデータ処理に関するものである。
【背景技術】
【０００２】
サーバ・コンピュータ・システムのような通常の対称マルチプロセッサ（ＳＭＰ）コンピュータ・システムは複数の処理ユニットを含み、それらの処理にユニットは、すべて、一般には１つまたは複数のアドレス、データ、および制御バスを含むシステム相互接続体に結合される。システム相互接続体にはシステム・メモリが接続される。そのシステム・メモリは、マルチプロセッサ・コンピュータ・システムにおける最下位レベルの揮発性メモリを表し、一般には、すべての処理ユニットによる読取りおよび書込みアクセスのためにアクセス可能である。システム・メモリに存在する命令およびデータに対するアクセス待ち時間を少なくするために、各処理ユニットは、一般に、それぞれのマルチレベル・キャッシュ階層によって更にサポートされる。なお、低いレベルのキャッシュ階層は１つまたは複数のプロセッサ・コアによって共用されることがある。
【０００３】
複数のプロセッサ・コアが同じキャッシュ・ラインのデータに対して書込みアクセスを要求することがあるため、および修正されたキャッシュ・ラインが直ちにはシステム・メモリと同期化されないため、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は、一般には、システム・メモリの内容に関する種々のプロセッサ・コアの「ビュー」の間における少なくとも最下位レベルのコヒーレンスを保証するために、キャッシュ・コヒーレンシ・プロトコルを実施している。特に、キャッシュ・コヒーレンシは、処理ユニットがメモリ・ブロックのコピーをアクセスし、その後、そのメモリ・ブロックの更新されたコピーをアクセスした後では、処理ユニットがそのメモリ・ブロックの古いコピーを再びアクセスすることはできないということを、最低でも必要とする。
【０００４】
キャッシュ・コヒーレンシ・プロトコルは、各キャッシュ階層のキャッシュ・ラインと関連して記憶されたコヒーレンシ・ステータスのセット、およびキャッシュ階層間でキャッシュ状態情報を伝達するために利用されるコヒーレンシ・メッセージのセットを定義する。代表的な実施態様では、コヒーレンシ状態情報は、周知のＭＥＳＩ（Modified, Exclusive, Shared, Invalid）プロトコルまたはその変形という形体をとり、コヒーレンシ・メッセージは、メモリ・アクセス・リクエストの要求者または受領者あるいはその両方のキャッシュ階層におけるプロトコル定義のコヒーレンシ状態遷移を表す。
【０００５】
通常のマルチプロセッサ・データ処理システムでは、メモリ・ブロックを要求するオペレーションがデータ処理システムにおける他のキャッシュ階層にブロードキャストされる前に、キャッシュ・メモリ階層内の全レベルのキャッシュ・メモリがメモリ・アクセス・リクエストに応答してそれらのコヒーレンシ状態を決定するために検査される。本発明は、この従来方法が、キャッシュ階層のすべてのレベルにおいてヒットしなかったメモリ・アクセス・リクエストのサブセットに対してアクセス待ち時間を増加させている、という認識に基づくものである。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
この分野における前記のおよびその他の欠点から見て、本発明は、改良されたキャッシュ・コヒーレント・データ処理システム、キャッシュ・システム、およびキャッシュ・コヒーレント・データ処理システムにおいてデータを処理する方法を提供する。
【課題を解決するための手段】
【０００７】
１つの実施例では、ターゲット・アドレスを表すメモリ・アクセス・リクエストをマスタが受けたことに応答して、マスタは、キャッシュ階層の上位レベル・キャッシュの第１キャッシュ・ディレクトリをアクセスする。ターゲット・アドレスが、第１キャッシュ・ディレクトリにおいて有効アドレス・タグおよび第１無効コヒーレンシ状態を有するエントリと関連付けられていることに応答して、マスタは、キャッシュ階層の下位レベル・キャッシュの第２キャッシュ・ディレクトリにおけるターゲット・アドレスと関連付けられたコヒーレンシ状態をみることなく、相互接続ファブリック上にターゲット・アドレスを指定するリクエストを送出する。ターゲット・アドレスが第１キャッシュ・ディレクトリに関して第２無効コヒーレンシ状態を有することに応答して、マスタは、キャッシュ・コヒーレンシの下位レベル・キャッシュの第２キャッシュ・ディレクトリにおいてターゲット・アドレスと関連付けられたコヒーレンシ状態を決定した後、相互接続ファブリック上にターゲット・アドレスを指定するリクエストを送出する。
【０００８】
以下の詳細な説明において、本発明のすべての目的、特徴、および利点が明らかになるであろう。
【発明を実施するための最良の形態】
【０００９】
１．例示的なデータ処理システム
図面、特に、図１を参照すると、本発明によるキャッシュ・コヒーレント対称マルチプロセッサ（ＳＭＰ）データ処理システムの実施例の高レベル・ブロック図が示される。図示のように、データ処理システム１００は、データおよび命令を処理するための複数の処理ノード１０２ａ、１０２ｂを含む。処理ノード１０２ａ、１０２ｂは、アドレス、データ、および制御情報を搬送するためのシステム相互接続体１１０に結合される。システム相互接続体１１０は、例えば、バス接続の相互接続体、交換相互接続体、またはハイブリッド相互接続体として実装することが可能である。
【００１０】
図示の実施例では、各処理ノード１０２は、４つの処理ユニット１０４ａ〜１０４ｄを含むマルチチップ・モジュール（ＭＣＭ）として実現される。それら処理ユニットの各々は、それぞれの集積回路として実現されることが望ましい。各処理ノード１０２における処理ユニット１０４ａ〜１０４ｄは、システム相互接続体１１０と同様に１つまたは複数のバスまたはスイッチあるいはその両方によって具現化することが可能なローカル相互接続体１１４による伝送のために結合される。
【００１１】
各ローカル相互接続体１１４に結合された装置は、処理ユニット１０４のみならず、１つまたは複数のシステム・メモリ１０８ａ〜１０８ｄも含む。システム・メモリ１０８にあるデータおよび命令は、一般に、データ処理システム１００の任意の処理ノード１０２における任意の処理ユニット１０４のプロセッサ・コアによってアクセスおよび修正することが可能である。本発明の別の実施例では、ローカル相互接続体１１４とは別にシステム相互接続体１１０に、１つまたは複数のメモリ１０８を接続することも可能である。
【００１２】
ＳＭＰデータ処理システム１００が、相互接続ブリッジ、不揮発性記憶装置、ネットワークまたは付属装置に接続するためのポート等のような多くの更なる図示されてないコンポーネントを含み得ることは当業者には明らかであろう。そのような更なるコンポーネントは本発明を理解するためには必要ないので、それらは図１に示されず、本願ではこれ以上説明されない。しかし、本発明によって提供される機能拡張が種々のアーキテクチャのキャッシュ・コヒーレント・データ処理システムに適用し得ることおよび図１に示された汎用のデータ処理システム・アーキテクチャに決して限定されないことは明らかであろう。
【００１３】
次に図２を参照すると、本発明による例示的な処理ユニット１０４の更に詳細なブロック図が示される。図示の実施例では、各処理ユニット１０４は、命令およびデータを独立して処理するための２つのプロセッサ・コア２００ａ、２００ｂを含む。各プロセッサ・コア２００は、少なくとも、実行に備えて命令をフェッチおよび配列するための命令順序付けユニット（ＩＳＵ）２０８および命令を実行するための１つまたは複数の実行ユニット２２４を含む。実行ユニット２２４によって実行される命令は、メモリ・ブロックへのアクセスを要求するロードおよびストア命令を含むか、またはメモリ・ブロックへのアクセスを求めるリクエストをもたらす。
【００１４】
各プロセッサ・コア２００のオペレーションは、共用システム・メモリ１０８ａ〜１０８ｄを最下位レベルとして有し且つ１つまたは複数のレベルのキャッシュ・メモリを上位レベルとして有する、マルチレベル揮発性メモリ階層によってサポートされる。図示の実施例では、各処理ユニット１０４は、プロセッサ・コア２００ａ〜２００ｂから受けたリクエストおよびローカル相互接続体１１４を介してスヌーパ（Ｓ）２２２によりスヌープされたオペレーションに応答して、処理ノード１０２におけるシステム・メモリ１０８ａ〜１０８ｄの１つへの読取りおよび書込みアクセスを制御する、統合メモリ・コントローラ（ＩＭＣ）２０６を含む。ＩＭＣ２０６は、ベース・アドレス・レジスタ（ＢＡＲ）ロジック２４０を参照することによって、それが責任を負うべきアドレスを決定する。
【００１５】
図示の実施例では、処理ユニット１０４のキャッシュ・メモリ階層は、各プロセッサ・コア２００におけるストア・スルー・レベル１（Ｌ１）キャッシュ２２６、処理ユニット１０４のすべてのプロセッサ・コア２００ａ、２００ｂによって共用されるレベル２（Ｌ２）キャッシュ２３０およびレベル３（Ｌ３）キャッシュ２５０を含む。Ｌ２キャッシュ２３０は、Ｌ２アレイおよびディレクトリ２３４と、マスタ２３２およびスヌーパ２３６を含むキャッシュ・コントローラとを有する。マスタ２３２は、ローカル相互接続体１１４およびシステム相互接続体１１０を介してトランザクションを開始し、関連のプロセッサ・コア２００ａ〜２００ｂから受けたメモリ・アクセス(および他の)リクエストに応答してＬ２アレイおよびディレクトリ２３４をアクセスする。スヌーパ２３６は、ローカル相互接続体１１４を介してオペレーションをスヌープし、適切な応答を提供し、それらのオペレーションによって要求されたＬ２アレイおよびディレクトリ２３４へのすべてのアクセスを遂行する。
【００１６】
図示のように、Ｌ３キャッシュ２５０も同様に構成され、キャッシュ・コントローラ２５２、Ｌ３キャッシュ・アレイ２６０、およびＬ３キャッシュ・アレイ２６０の内容に関するＬ３ディレクトリ２５４を含む。或る実施例では、Ｌ３キャッシュ・アレイ２６０はチップ上に実装することも可能であるが、図示の実施例では、Ｌ３キャッシュ・アレイ２６０は、それがもっと大きな容量を持つことを可能にするために処理ユニット１０４の外部のメモリＤＩＭＭにおいて実装される。種々の実施例において、Ｌ３キャッシュ２５０は、Ｌ２キャッシュ２３０の内容の包含的、部分包含的、または非包含的なものとして実装することが可能である。更に、Ｌ３キャッシュ２５０は、インライン・キャッシュまたはルックアサイド・キャッシュとしても実装することが可能である。図示の実施例では、Ｌ３キャッシュ２５０は、Ｌ２キャッシュ２３０によってキャストアウトまたはビクタマイズされた「ビクティム（victim）」キャッシュとして実装される。
【００１７】
図示のキャッシュ階層は３レベルのキャッシュしか含まないが、別の実施例は更なるレベル（Ｌ４、Ｌ５等）のオンチップまたはオフチップのインラインまたはルックアサイド・キャッシュを含み得るし、それらが上位レベルのキャッシュの内容に関して完全に包含的、部分包含的、または非包含的なものであってもよいことは当業者には明らかであろう。
【００１８】
各処理ユニット１０４は、更に、データ処理システム１００においてキャッシュ・コヒーレンシを維持する分散型コヒーレンシ信号機構の部分を具現化する応答ロジック２１０のインスタンスを含む。更に、各処理ユニット１０４は、そのローカル相互接続体１１４およびシステム相互接続体１１０の間のコミュニケーションを選択的に進めるための相互接続ロジック２１２のインスタンスを含む。結局、各処理ユニット１０４は、Ｉ／Ｏ装置２１６のような１つまたは複数のＩ／Ｏ装置の接続をサポートする統合Ｉ／Ｏ（入出力）コントローラ２１４を含む。Ｉ／Ｏコントローラ２１４は、Ｉ／Ｏ装置２１６によるリクエストに応答してローカル相互接続体１１４またはシステム相互接続体１１０あるいはその両方の上にオペレーションを送出することが可能である。
【００１９】
次に図３を参照すると、Ｌ２アレイおよびディレクトリ２３４の実施例の更に詳細なブロック図が示される。図示のように、Ｌ２アレイおよびディレクトリ２３４は、セット・アソシエイティブＬ２キャッシュ・アレイ３００およびそのＬ２キャッシュ・アレイ３００の内容に関するＬ２キャッシュ・ディレクトリ３０２を含む。通常のセット・アソシエイティブ・キャッシュでは、システム・メモリ１０８におけるメモリ・ロケーションが、システム・メモリ(実)アドレスにおける所定のインデックス・ビットを利用して、キャッシュ・アレイ３００内の特定の合同クラスにマップされる。キャッシュ・アレイ３００内に記憶された特定のキャッシュ・ラインが、キャッシュ・アレイ３００における各キャッシュ・ラインに対して１つのディレクトリ・エントリを含むキャッシュ・ディレクトリ３０２に記録される。当業者には明らかなように、キャッシュ・ディレクトリ３０２における各ディレクトリ・エントリは、少なくとも、対応する実アドレスのタグ部分を利用してキャッシュ・アレイ３００に記憶された特定のキャッシュ・ラインを指定するタグ・フィールド３０４、キャッシュ・サインのコヒーレンシ状態を表す状態フィールド３０６、および同じ合同クラスにおける他のキャッシュ・ラインに関して当該キャッシュ・ラインに対する置換順序を表すＬＲＵ（LeastRecently Used - 最少使用頻度）フィールド３０８を含む。Ｌ３ディレクトリ２５４は、Ｌ２キャッシュ・ディレクトリ３０２と同様に構成されてもよい。
【００２０】
２．例示的オペレーション
次に図４を参照すると、図１のデータ処理システム１００のローカル相互接続体１１４またはシステム相互接続体１１０における例示的なオペレーションに関する時間・空間図が示される。オペレーションは、Ｌ２キャッシュ２３０のマスタ２３２（またはＩ／Ｏコントローラ２１４のような他のマスタ）がローカル相互接続体１１４またはシステム相互接続体１１０あるいはその両方の上にリクエスト４０２を送出するときに始まる。リクエスト４０２は、所望のアクセスのタイプを表すトランザクション・タイプおよびそのリクエストによってアクセスされるべきリソースを表すリソース識別標識（例えば、実アドレス）を含むことが望ましい。一般的なタイプのリクエストは下記の表１に示されるものを含むことが望ましい。
【表１】
2006285992.tif 000003
【００２１】
リクエスト４０２は、Ｌ２キャッシュ２３０(図２)のスヌーパ２３６およびメモリ・コントローラ２０６（図２）のスヌーパ２２２によって受けられる。一般に、何らかの例外によって、リクエスト４０２のマスタ２３２と同じＬ２キャッシュ２３０におけるスヌーパ２３６はリクエスト４０２をスヌープしない(即ち、一般には、自己スヌープは存在しない)。それは、リクエストが処理ユニット１０４によって内部的にサービスされ得ない場合にだけローカル相互接続体１１４またはシステム相互接続体１１０あるいはその両方を介して送られるためである。リクエスト４０２を受け取る各スヌーパ２２２，２３６は、リクエスト４０２に対する少なくともそのスヌーパの応答を表すそれぞれの部分的応答４０６を提供する。メモリ・コントローラ２０６におけるスヌーパ２２２は、例えば、スヌーパ２２２がリクエスト・アドレスに関して責任を負うかどうかおよびそれがリクエストをサービスするために利用し得るリソースを有するかどうかに基づいて提供すべき部分的応答を決定する。Ｌ２キャッシュ２３０のスヌーパ２３６は、例えば、そのＬ２キャッシュ・ディレクトリ３０２の可用性、そのリクエストを処理すべきスヌーパ２３６におけるスヌープ・ロジック・インスタンスの可用性、およびＬ２キャッシュ・ディレクトリ３０２におけるリクエスト・アドレスと関連したコヒーレンシ状態、に基づいてその部分的応答を決定することも可能である。
【００２２】
スヌーパ２２２および２３６の部分的応答は、リクエスト４０２に対するシステム全体にわたる結合応答（ＣＲ）４１０を決定するために応答ロジック２１０の１つまたは複数のインスタンスによって段階的にまたはすべて一度に論理的に結合する。後述の範囲制限次第で、応答ロジック２１０は、リクエスト４０２に対するシステム全体にわたる応答（例えば、成功、失敗、再試行等）を表すために、そのローカル相互接続体１１４またはシステム相互接続体１１０あるいはその両方を介してマスタ２３２およびスヌーパ２２２，２３６に結合応答４１０を提供する。ＣＲ４１０がリクエスト４０２の成功を表す場合、ＣＲ４１０は、例えば、要求されたメモリ・ブロックに対するデータ・ソース、要求されたメモリ・ブロックがマスタ２３２によってキャッシュされることになるキャッシュ状態、および１つまたは複数のＬ２キャッシュ２３０における要求されたメモリ・ブロックを無効にする「クリーンアップ」オペレーションが必要であるかどうかを表すことが可能である。
【００２３】
結合応答４１０を受けたことに応答して、一般には、マスタ２３２およびスヌーパ２２２，２３６の１つまたは複数が、リクエスト４０２をサービスするために１つまたは複数のオペレーションを遂行する。これらのオペレーションは、データをマスタ２３２に供給すること、１つまたは複数のＬ２キャッシュ２３０においてキャッシュされたデータのコヒーレンシ状態を無効にするかまたは更新すること、キャストアウト操作を遂行すること、システム・メモリ１０８にデータを書き戻すこと等を含むことが可能である。更に後述するように、要求されたメモリ・ブロックまたはターゲット・メモリ・ブロックは、リクエスト４０２が必要とする場合、応答ロジック２１０による結合応答４１０の発生の前または後にマスタ２３２にまたはマスタ２３２から送られることも可能である。
【００２４】
以下の説明では、リクエストに対するスヌーパ２２２、２３６の部分的応答、およびリクエストまたはその結合応答あるいはその両方に応答してスヌーパによって遂行されるオペレーションを、リクエストによって指定されたリクエスト・アドレスに関してそのスヌーパがコヒーレンシの最高ポイント（ＨＰＣ）であるか、コヒーレンシの最低ポイント（ＬＰＣ）であるか、またはそのいずれでもないか、に関して説明することにする。本願では、ＬＰＣは、メモリ・ブロックのためのリポジトリとして働くメモリ装置またはＩ／Ｏ装置として定義される。そのメモリ・ブロックに対するＨＰＣが存在しない場合、ＬＰＣは、メモリ・ブロックの真のイメージを保持し、そのメモリ・ブロックの更なるキャッシュされたコピーを生成するためのリクエストを許容または拒否する権限を有する。図１および図２のデータ処理システムの実施例における一般的なリクエストに対して、ＬＰＣは、参照されたメモリ・ブロックを保持するシステム・メモリ１０８に対するメモリ・コントローラ２０６である。ＨＰＣは、本願では、メモリ・ブロックの真のイメージ（ＬＰＣにおける対応するメモリ・ブロックと整合してもよく、整合しなくてもよい）をキャッシュし、メモリ・ブロックを修正するためのリクエストを許容または拒否する権限を有する一意的に識別された装置として定義される。説明上は、ＨＰＣは、メモリ・ブロックを修正しないオペレーションに応答して要求者にメモリ・ブロックのコピーを提供することも可能である。従って、図１および図２のデータ処理システムの実施例における一般的なリクエストに対して、ＨＰＣは、それが存在する場合、Ｌ２キャッシュ２３０である。メモリ・ブロックに対するＨＰＣを指定するために他の表示を利用することが可能であるが、本発明の実施例は、表２に関連して後述するように、Ｌ２キャッシュ２３０のＬ２キャッシュ・ディレクトリ３０２内の選択されたキャッシュ・コヒーレンシ状態を利用してメモリ・ブロックに対するＨＰＣを、それが存在する場合、指定する。
【００２５】
更に図４を参照すると、リクエスト４０２において参照されたメモリ・ブロックに対するＨＰＣが存在する場合にはそのＨＰＣが、またはＨＰＣが存在しない場合にはそのメモリ・ブロックのＬＰＣが、保護ウィンドウ４０４ａ期間中のリクエスト４０２に応答して、メモリ・ブロックの所有権の移動を保護する責任を有することが望ましい。図４に示された例示的なシナリオでは、リクエスト４０２のリクエスト・アドレスによって指定されたメモリ・ブロックに対するＨＰＣであるスヌーパ２３６は、スヌーパ２３６が結合応答４１０を受けるまで、スヌーパ２３６がその部分的応答４０６を決定する時間から継続する保護ウィンドウ４０４ａの期間中、要求されたメモリ・ブロックの所有権のマスタ２３２への移動を保護する。保護ウィンドウ４０４ａの期間中、スヌーパ２３６は、所有権がマスタ２３２にうまく移動してしまうまで他のマスタが所有権を得ないようにする部分的応答４０６を、同じリクエストを指定する他のリクエストに提供することによって所有権の移動を保護する。同様に、マスタ２３２は、結合応答４１０の受信に続いてリクエスト４０２において要求されたメモリ・ブロックの所有権を保護するために保護ウィンドウを起動する。
【００２６】
スヌーパ２２２、２３６はすべて上記のＣＰＵおよびＩ／Ｏリクエストを処理するためのリソースを限定したので、幾つもの異なるレベルの部分的応答および対応するＣＲが可能である。例えば、要求されたメモリ・ブロックに対して責任のあるメモリ・コントローラ２０６内のスヌーパ２２２がリクエストの処理のために使用可能なキューを有する場合、そのスヌーパ２２２は、それがそのリクエストに対するＬＰＣとして働くことができることを表す部分的応答でもって応答することが可能である。一方、スヌーパ２２２がリクエストの処理のために使用可能なキューを持たない場合、スヌーパ２２２は、それがメモリ・ブロックに対するＬＰＣであるが、現在そのリクエストをサービスすることができないことを表す部分的応答でもって応答することが可能である。
【００２７】
同様に、Ｌ２キャッシュ２３０におけるスヌーパ２３６は、リクエストを処理するためには、スヌープ・ロジックの使用可能なインスタンスを必要とし、Ｌ２キャッシュ・ディレクトリ３０２にアクセスすることが可能である。これらリソースのどちらか（または両方）に対するアクセスが存在しないと、その結果として、必要なリソースが存在しないためにリクエストをサービスできないことを部分的応答(及び対応するＣＲ)が信号することになる。
【００２８】
その後、スヌーパ２２２、２３６が、リクエストをサービスするために必要なすべての利用可能な内部リソースを有するということを表す部分的応答をそのスヌーパが提供することは、サービスを「肯定する（affirm）」と云える。スヌーパ２３６にとって、スヌープされたオペレーションを確認する部分的応答が、そのスヌーパにおける要求されたメモリ・ブロックまたはターゲット・メモリ・ブロックのキャッシュ状態を表すことは望ましいことである。スヌーパ２３６が、リクエストをサービスするために必要なすべての利用可能な内部リソースを有しないことを表す部分的応答をそのスヌーパが提供することは「隠蔽された可能性がある（possiblyhidden）」と云えるかもしれない。そのようなスヌーパ２３６は、スヌープ・ロジックの使用可能なインスタンスの欠如またはＬ２キャッシュ・ディレクトリ３０２へのアクセスのために、上記の定義した意味でリクエストを「肯定する」ことができないために、そのスヌーパは「隠蔽の可能性がある」であり、他のマスタ２３２およびスヌーパ２２２，２３６の見地から、未知のコヒーレンシ状態を有する。
【００２９】
３．データ配送ドメイン
通常のブロードキャスト・ベースのデータ処理システムは、キャッシュ・コヒーレンシとブロードキャスト通信を介したデータ配送との両方を処理する。なお、通常のシステムにおけるブロードキャスト通信は、システム相互接続体を介してそのシステムにおける少なくともすべてのメモリ・コントローラおよびキャッシュ階層に送られる。別のアーキテクチャおよび同様の規模のシステムに比べて、ブロードキャスト・ベースのシステムは、共用メモリ・ブロックに関する少ないアクセス待ち時間並びにより良好なデータ処理およびコヒーレンシ管理を提供する傾向がある。
【００３０】
ブロードキャスト・ベースのシステム・サイズの規模およびシステム相互接続体におけるトラフィック量が増加するとき、システム相互接続体を介した伝送のために大きな帯域幅が必要となるので、それは、システム・コストがシステムの規模と共に急激に上昇することを意味する。即ち、各々がｎ個のトランザクションの平均的トラフィック量を有するｍ個のプロセッサ・コアを有するシステムは、ｍ×ｎのトラフィック量を有し、それは、ブロードキャスト・ベースのシステムにおけるトラフィック量が、加算的ではなく乗算的に増大することを意味する。かなり大きな相互接続体の帯域幅に関する要件の他に、システム・サイズの増加がアクセス待ち時間の増加という二次的な影響を生じる。例えば、データ読取りのアクセス待ち時間は、最悪の場合、要求されたデータを調達し得る要求されたメモリ・ブロックを共用コヒーレンシ状態に保っている最遠の下位レベル・キャッシュの結合応答待ち時間によって限定される。
【００３１】
ブロードキャスト・ベースのシステムの利点をそのまま保持しながら、システム相互接続帯域幅の要件およびアクセス待ち時間を少なくするために、本発明は、要求するＬ２キャッシュ２３０とデータ・ソースとの間の平均距離を減少させることによってデータ・アクセス待ち時間を少なくする。要求するＬ２キャッシュ２３０とデータ・ソースとの間の平均距離を減少させるための１つの手法は、データ処理システム１００内に分散している多数のＬ２キャッシュ２３０に、キャッシュ対キャッシュ介入を用いてこれらのキャッシュが要求Ｌ２キャッシュ２３０にメモリ・ブロックを供給することを可能にする「特別」共用コヒーレンシ状態に同じメモリ・ブリックのコピーを保つことを、許容することである。
【００３２】
データ処理システム１００のようなＳＭＰデータ処理システムにおける共用メモリ・ブロックに対する複数の並行および分散ソースを具現化するためには、２つの懸念事項が処理されなければならない。第１に、前述の「特別」共用コヒーレンシ状態におけるメモリ・ブロックのコピーの作成を管理するルールが実施されなければならない。第２に、例えば、バス読取りオペレーションまたはバスＲＷＩＴＭオペレーションに応答して、どちらのスヌープＬ２キャッシュ２３０が、それが存在する場合、共用メモリ・ブロックを要求Ｌ２キャッシュ２３０に提供するかということを管理するルールが存在しなければならない。
【００３３】
本発明によれば、これらの懸念事項はいずれもデータ調達ドメインを実装することによって対処される。特に、ドメインが、データ・リクエストに応答して参加する１つまたは複数の下位レベル（例えば、Ｌ２）キャッシュを含むように定義される場合、ＳＭＰデータ処理システムにおける各ドメインは、特定のメモリ・ブロックを「特別」共用コヒーレンシ状態に一時的に保つ唯一のキャッシュ階層を含むことを許される。バス読取りタイプ（例えば、読取りまたはＲＷＩＴＭ）オペレーションが同じドメインにおいて要求下位レベル・キャッシュによって開始されるときにそのキャッシュ階層が存在する場合、そのキャッシュ階層は、要求下位レベル・キャッシュに対する要求されたメモリ・ブロックを調達する責任がある。多くの異なるドメイン・サイズを定義することが可能であるが、図１のデータ処理システム１００において、各処理ノード１０２(即ち、ＭＣＭ)がデータ調達ドメインと見なされる場合、それは好都合である。そのような「特別」共用状態(即ち、Ｓｒ)の一例が下記の表２を参照して後述される。
【００３４】
４．コヒーレンシ・ドメイン
上記のようなデータ分配ドメインの具現化方法はデータ・アクセス待ち時間を改善するけれども、この機能強化は、システム規模が増大するので、ｍ×ｎ倍のトラフィック量に対処するものではない。ブロードキャスト・ベースのコヒーレンシ機構を維持しながらトラフィック量を減少させるために、本発明の好適な実施例は、更に、コヒーレンシ・ドメインを実装する。このコヒーレンシ・ドメインは、前述のデータ分配ドメインのように、各処理ノード１０２が個別のコヒーレンシ・ドメインを形成することによって都合よく具現化することができる（しかし、そのように具現化する必要はない）。データ分配ドメインおよびコヒーレンシ・ドメインは、同一空間にわたるものとなり得るがその必要はなく、データ処理システム１００の例示的オペレーションを説明するために、以後、処理ノード１０２によって定義された境界を有するものと仮定する。
【００３５】
コヒーレンシ・ドメインの実装は、リクエストが全コヒーレンシ・ドメインよりも少ないドメインによる参加によってサービスされる場合、システム相互接続体１１０を介したドメイン間のブロードキャスト通信を制限することによってシステム・トラフィックを減少させる。例えば、処理ノード１０２ａの処理ユニット１０４ａが起動すべきバス読取りオペレーションを有する場合、処理ユニット１０４ａは、それ自身のコヒーレンシ・ドメイン（例えば、処理ノード１０２ａ）内のすべての参加者に対するバス読取りオペレーションであるが他のコヒーレンシ・ドメイン（例えば、処理ユニット１０２ｂ）における参加者に対するものではないバス読取りオペレーションを最初にブロードキャストすることを選ぶことが可能である。オペレーションのマスタと同じコヒーレンシ・ドメインにおける参加者のみに送られるブロードキャスト・オペレーションは、本願では「ローカル・オペレーション」と定義される。ローカル・バス読取りオペレーションを処理ユニット１０４ａのコヒーレンシ・ドメインにおいてサービスすることが可能である場合、そのローカル・バス読取りオペレーションのそれ以上のブロードキャストは遂行されない。しかし、ローカル・バス読取りオペレーションが処理ユニット１０２ａのコヒーレンシ・ドメインではサービスされ得ないことを、そのローカル・バス読取りオペレーションに対する部分的応答および結合応答が表す場合、ブロードキャストの範囲は、ローカル・コヒーレンシ・ドメインのほかに、１つまたは複数の更なるコヒーレンシ・ドメインを含むように拡張することが可能である。
【００３６】
基本的な実施方法では、２つのブロードキャスト範囲、即ち、ローカル・コヒーレンシ・ドメインのみを含む「ローカル」範囲、およびＳＭＰデータ処理システムにおける他のコヒーレンシ・ドメインをすべて含む「グローバル」範囲、が使用される。従って、ＳＭＰデータ処理システムにおけるすべてのコヒーレンシ・ドメインに送られるオペレーションは、本願では、「グローバル・オペレーション」として定義される。更に、重要なことには、より拡張的な範囲のローカル・オペレーション(例えば、グローバル・オペレーション)がオペレーションのサービスのために使用されるかどうかに関係なく、キャッシュ・コヒーレンシはＳＭＰデータ処理システムにおけるすべてのコヒーレンシ・ドメインにわたって維持される。
【００３７】
好適な実施例では、ローカル／グローバル・インジケータ(信号)によって、オペレーションの範囲がバス・オペレーションにおいて表される。処理ユニット１０４におけるフォワーディング・ロジック２１２は、ローカル相互接続体１１４を介して受けたオペレーションをシステム相互接続体１１０上に送るべきかどうかを、そのオペレーションにおけるローカル／グローバル・インジケータ(信号)の設定に基づいて決定することが望ましい。
【００３８】
５．ドメイン・インジケータ
不必要なローカル・オペレーションの起動を制限し、それによって動作待ち時間を減少させ、ローカル相互接続体における更なる帯域幅を保持するために、本発明は、関連のメモリ・ブロックのコピーがローカル・コヒーレンシ・ドメインの外でキャッシュされるか否かを表すメモリ・ブロック毎のドメイン・インジケータを実装することが望ましい。例えば、図５は、本発明に従ってドメイン・インジケータの第１の例示的実施方法を示す。図５に示されるように、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）において実装し得るシステム・メモリ１０８が複数のメモリ・ブロック５００を記憶する。システム・メモリ１０８は、メモリ・ブロック５００およびドメイン・インジケータ５０４においてエラーがあった場合にそのエラーを訂正するために利用される関連のエラー訂正コード（ＥＣＣ）５０２を、各メモリ・ブロック５００に関連して記憶する。本発明の或る実施例では、ドメイン・インジケータ５０４は特定のコヒーレンシ・ドメインを識別する（即ち、コヒーレンシ・ドメインまたはノードＩＤを指定する）ことが可能であるが、関連のメモリ・ブロック５００は、キャッシュされるにしても、そのメモリ・ブロック５００に対するＬＰＣとして働くメモリ・コントローラ２０６と同じコヒーレンシ・ドメイン内でのみキャッシュされる場合、セットされるドメイン・インジケータ５０４は１ビット・インジケータである。そうでない場合、ドメイン・インジケータ５０４は（例えば、「グローバル」を表すために「０」に）リセットされる。「ローカル」を表すためのドメイン・インジケータ５０４の設定が間違って実施されることがあり、その場合、「グローバル」という間違った設定は如何なるコヒーレンシ・エラーも生じさせないであろうが、オペレーションの不必要なグローバル・ブロードキャストを引き起こすことがある。
【００３９】
更に重要なことには、オペレーションに応答してメモリ・ブロックを調達するメモリ・コントローラ(およびＬ２キャッシュ２３０)は、要求されたメモリ・ブロックに関連してその関連のドメイン・インジケータ５０４を送ることが望ましい。
【００４０】
６．例示的コヒーレンシ・プロトコル
本発明は、上記のようにデータ分配およびコヒーレンシ・ドメインの具現化をてこ入れするように設計されたキャッシュ・コヒーレンシ・プロトコルを具現化することが望ましい。好適な実施例では、プロトコルにおけるキャッシュ・コヒーレンシ状態は下記の（１）を行うことに加えて、（２）〜（５）も表示する。
（１）キャッシュがメモリ・ブロックに対するＨＰＣであるかどうかの表示、
（２）キャッシュされたコピーがそのメモリ階層レベルにおけるキャッシュ間ではユニークである（即ち、システム全体にわたる唯一のキャッシュされたコピーである）かどうか、
（３）キャッシュがメモリ・ブロックに対するリクエストのマスタにメモリ・ブロックのコピーを提供することができるかどうか、およびそれがいつできるか、
（４）メモリ・ブロックのキャッシュされたイメージがＬＰＣ(システム・メモリ)における対応するメモリ・ブロックと整合するかどうか、
（５）リモート・コヒーレンシ・ドメインにおける別のキャッシュがマッチング・アドレスを有するキャッシュ・エントリを（可能性として）保持するかどうか。
これらの５つの属性は、例えば、下記の表２において要約された周知のＭＥＳＩプロトコルの例示的変形として表すことができる。
【表２】
2006285992.tif 000004
【００４１】
Ａ．Ｉg 状態
メモリ・ブロックが、キャッシュされるにしてもローカル的にしかキャッシュされないことを知られているかどうかを決定するためにはＬＰＣをアクセスしなければならないということを回避するために、コヒーレンシ・ドメインにおいてキャッシュされたままのメモリ・ブロックのコピーがない場合、ドメイン表示を維持するようにＩg（無効グローバル）コヒーレンシ状態が利用される。Ｉg 状態は、本願では、下記の（１）〜（３）を表すキャッシュ・コヒーレンシ状態として定義される。
（１）キャッシュ・アレイにおける関連のメモリ・ブロックが無効である、
（２）キャッシュ・ディレクトリにおけるアドレス・タグが有効である、
（３）アドレス・タグによって識別されたメモリ・ブロックのコピーが別のコヒーレンシ・ドメインにおいてキャッシュされる可能性がある。
Ｉg 表示は、それがコヒーレンシの侵害のない不正確なものであるかもしれないことを意味する不明確なものであることが望ましい。
【００４２】
下位レベル・キャッシュが、排他的アクセス・リクエスト（例えば、バスＲＷＩＴＭ）に応答して他のコヒーレンシ・ドメインにおける要求者に１つの要求されたメモリ・ブロックを提供したことに応答して、Ｉg 状態がその下位レベル・キャッシュにおいて形成される。本発明の或る実施例では、メモリ・ブロックに対するＬＰＣを含むコヒーレンシ・ドメインにおいてだけＩg状態を形成することが望ましい。そのような実施例では、ＬＰＣがそのローカル・コヒーレンシ・ドメイン内にあることを、要求されたメモリ・ブロックを調達してキャッシュに表示するために、何らかの機構（例えば、ＬＰＣによる部分応答およびその後の結合応答）が実装されなければならない。ＬＰＣがローカルであるという表示の伝送をサポートしない他の実施例では、キャッシュが排他的アクセス・リクエストに応答してリモート・コヒーレンシ・ドメインに対するメモリ・ブロックを調達したときにはいつもＩg状態を形成することが可能である。
【００４３】
Ｉg 状態を含むキャッシュ・ディレクトリ・エントリは部分的に有用な情報を保持するので、Ｉg状態におけるエントリをＩ状態におけるエントリの上に優先的に（例えば、置換のために犠牲キャッシュ・エントリを選択するために利用される最低使用頻度（ＬＲＵ）アルゴリズムを修正することによって）保つことが少なくとも或る具現化方法では望ましい。Ｉgディレクトリ・エントリはキャッシュに保持されるので、Ｉg 状態を形成させた排他的アクセス・リクエストを有するキャッシュがＩg 状態におけるメモリ・ブロックのアドレス・タグを保持していることを通知しないと、そのキャッシュがそのメモリ・ブロックのコピーを割振り解除または書き戻すことができる時間にわたって、幾つかのＩgエントリが「失効（stale）」となることがあり得る。そのような場合、グローバル・オペレーションがローカル・オペレーションの代わりに送出されなければならないということを間違って表示する「失効」Ｉg状態は如何なるコヒーレンシ・エラーも生じないし、そうでない場合にはローカル・オペレーションを利用してサービスされるオペレーションをグローバル・オペレーションとして生じるだけであろう。そのような非効率的な事態の発生は「失効」Ｉgキャッシュ・エントリの最終的な置換によって期間を限定されるであろう。
【００４４】
幾つものルールがＩg キャッシュ・エントリの選択および置換を管理する。第１に、キャッシュが置換のための犠牲者として１つのＩg エントリを選択する場合、（Ｉエントリが選択される場合とは違って）Ｉgエントリのキャストアウトが遂行される。第２に、メモリ・ブロックをキャッシュにロードさせるリクエストが同じキャッシュにおけるＩg キャッシュ・エントリにヒットする場合、キャッシュはそのＩgヒットをキャッシュ・ミスとして扱い、選択された犠牲としてＩg エントリによるキャストアウト・オペレーションを遂行する。従って、キャッシュは、同じアドレス・タグの２つのコピーをキャッシュ・ディレクトリに配置することを回避する。第３に、Ｉg状態のキャストアウトは、ローカル・オペレーションとして遂行されるか、または、グローバル・オペレーションとして遂行される場合、キャストアウト・アドレスのＬＰＣによって無視されることが望ましい。メモリ・ブロックに対するＬＰＣと同じコヒーレンシ・ドメイン内にないキャッシュにおいて形成することをＩgエントリが許される場合、ＬＰＣにおけるドメイン・インジケータに対する更新は必要ない。第４に、Ｉg 状態のキャストアウトは、ドキュメント・インジケータがＬＰＣに書き戻されるデータレス・アドレス・オンリ・オペレーションとして遂行されることが望ましい。
【００４５】
本発明によるＩg 状態の具現化は、コヒーレンシ・ドメインにおいてキャッシュされたままになっているメモリ・ブロックの有効なコピーがないときでも、コヒーレンシ・ドメインにおけるメモリ・ブロックに対するキャッシュされたドメイン・インジケータを維持することによって伝送効率を改善する。その結果、メモリ・ブロックに対するＨＰＣは、リクエストを再試行することなく及びＬＰＣへの要求されたメモリ・ブロックのプッシュを遂行することなく、リモート・コヒーレンシ・ドメインからの排他的アクセス・リクエスト（例えば、バスＲＷＩＴＭオペレーション）をサービスすることができる。
【００４６】
Ｂ．Ｉn 状態
Ｉn 状態は、本願では、下記の（１）〜（３）を表すキャッシュ・コヒーレンシ状態として定義される。
（１）キャッシュ・アレイにおける関連メモリ・ブロックが無効である、
（２）キャッシュ・ディレクトリにおけるアドレス・タグが有効である、
（３）アドレス・タグによって指定されたメモリ・ブロックのコピーは、キャッシュされるにしても、ローカル・コヒーレンシ・ドメインにおける１つまたは複数の他のキャッシュ階層によってのみキャッシュされる。
Ｉn は、それがコヒーレンシの侵害のない不正確なものであるかもしれないことを意味する不明確なものであることが望ましい。Ｉn状態は、キャッシュが排他的アクセス・リクエスト（例えば、バスＲＷＩＴＭ）に応答して同じコヒーレンシ・ドメインにおける要求者に要求されたメモリ・ブロックを提供したことに応答して、下位レベル・キャッシュにおいて形成される。
【００４７】
Ｉn 状態を含むキャッシュ・ディレクトリ・エントリが、有用である可能性のある情報を有するので、Ｉn状態におけるエントリをＩ状態におけるエントリを介して優先的に（例えば、置換のために犠牲キャッシュ・エントリを選択するために利用される最少使用頻度（ＬＲＵ）アルゴリズムを修正することによって）保持することは、少なくとも或る具現化方法では望ましい。Ｉnディレクトリ・エントリがキャッシュに保持されているので、Ｉn 状態の形成を生じさせた排他的アクセス要求を有するキャッシュがＩn 状態におけるメモリ・ブロックのアドレス・タグを保持していることを通知しないと、そのキャッシュがリモート・コヒーレンシ・ドメインにそのメモリ・ブロックの共用コピーを自己供給することができる時間にわたって、幾つかのＩnエントリが「失効（stale）」となることがあり得る。そのような場合、ローカル・オペレーションがグローバル・オペレーションの代わりに送出されなければならないことを間違って表示する「失効」Ｉn状態は如何なるコヒーレンシ・エラーも生じないであろうし、単に幾つかのオペレーションをグローバル・オペレーションとしてよりもむしろローカル・オペレーションとして間違って最初に送出させるだけであろう。そのような非効率的な事態の発生は「失効」Ｉnキャッシュ・エントリの最終的な置換によって期間を限定されるであろう。好適な実施例では、Ｉn コヒーレンシ状態におけるキャッシュ・エントリはキャストアウトを受けず、その代わり簡単に置換される。従って、Ｉgキャッシュ・エントリと違って、Ｉn キャッシュ・エントリは、システム・メモリ１０８におけるドメイン・インジケータ５０４を更新するためには利用されない。
【００４８】
本発明によるＩn 状態の具現化は、そのオペレーションの１つに対するローカル範囲を選択するためにマスタが相談し得るメモリ・ブロックに対するキャッシュされたドメイン・インジケータを維持することによって伝送効率を改善する。その結果、他のコヒーレンシ・ドメインにおけるシステム相互接続体１１０およびローカル相互接続体１１４における帯域幅が維持される。
【００４９】
Ｃ．Ｓr 状態
後述のオペレーションにおいて、共用の要求されたメモリ・ブロックをＳrコヒーレンシ状態に保持する下位レベル・キャッシュが要求マスタと同じドメイン内に設けられているか否かを決定することができることは有用である。１つの実施例では、要求されたメモリ・ブロックをＳrコヒーレンシ状態に保持する下位レベル・キャッシュにおけるスヌーパの応答動作によって、要求マスタと同じドメイン内の「ローカル」Ｓr スヌーパの存在を表すことが可能である。例えば、バス・オペレーションがドメイン境界（例えば、マスタの明示的なドメイン識別子または単一のローカル／非ローカル・ビット）を横切ったかどうかを表す範囲インジケータを各バス・オペレーションが含むものと仮定すると、共用メモリ・ブロックをＳrコヒーレンシ状態に保持する下位レベル・キャッシュは、同じデータ調達ドメイン内のマスタによるリクエストに対してのみＳr 状態におけるリクエストを肯定する部分応答を提供することができ、すべての他のリクエストに対するＳ状態を表す部分応答を提供することができる。そのような実施例では、下記の表３に示されるように応答動作を要約することができる。なお、表３では、ダッシュ記号（'）はメモリ・ブロックの実際のキャッシュ状態とは異なる部分的応答を指定するために利用される。
【表３】
2006285992.tif 000005
【００５０】
表３に示された応答動作を仮定すると、共用データに対する平均データ待ち時間は、データ・ソースとして働き得るＳＭＰデータ処理システム内に分散したメモリ・ブロックの共用コピーの数を増加させることによってかなり減少させることが可能である。
【００５１】
７．下位レベル・キャッシュ状態の選択的考察
次に図６を参照すると、本発明に従ってキャッシュ階層におけるメモリ・アクセス・リクエストをサービスする方法の第１実施例の高レベル論理的フローチャートが示される。図示のプロセスは、ブロック６００で始まり、ブロック６０２に進む。ブロック６０２は、Ｌ２キャッシュ２３０のマスタ２３２が１つまたは複数の関連のプロセッサ・コア２００からメモリ・アクセス（即ち、ロードまたはストア）オペレーションを受けたかどうかを、そのマスタ２３２が決定することを示す。一般に、メモリ・アクセス・オペレーションは、所望のタイプのアクセス(即ち、ロードまたはストア)の表示およびターゲット実アドレスを含む。メモリ・アクセス・オペレーションが受けられなかった場合、メモリ・アクセス・オペレーションが受けられるまでプロセスはブロック６０２において反復する。メモリ・アクセス・オペレーションを受けたことに応答して、ブロック６０４において、マスタ２３２がＬ２キャッシュ・ディレクトリ３０２のルックアップを開始し、そのメモリ・アクセス・オペレーションによって指定されたターゲット・アドレスに対するＬ２キャッシュ・ディレクトリ３０２内の記録されたコヒーレンシ状態を、それが存在する場合には、決定する。
【００５２】
Ｌ２キャッシュ・ディレクトリ３０２のルックアップの結果を受けたことに応答して、ターゲット・アドレスに対するＬ２キャッシュ・ディレクトリ３０２内の記録されたコヒーレンシ状態は、その状態が存在する場合、メモリ階層の下位レベルを最初にアクセスすることなく、メモリ・アクセス・オペレーションがサービスされることを許容するか否かを決定する(ブロック６０６)。例えば、メモリ・アクセス・オペレーションがロード・オペレーションである場合、およびターゲット・アドレスがいずれかの有効コヒーレンシ状態（例えば、Ｍ、Ｍe、Ｔ、Ｔn、Ｔe、Ｔen、Ｓr、またはＳ）に関連付けられていることをＬ２キャッシュ・ディレクトリ３０２が表す場合、マスタ２３２は、Ｌ２キャッシュ・アレイ３００から要求プロセッサ・コアにメモリ・ブロックを単に供給することによって、下位レベルのメモリ階層を最初にアクセスすることなくメモリ・アクセス・オペレーションをサービスすることが可能である。ストア・オペレーションに関しては、マスタ２３２は、ターゲット・アドレスがＭ、Ｍe、Ｔ、Ｔn、Ｔe、またはＴenの１つと関連付けられているということをＬ２キャッシュ・ディレクトリ３０２が表す場合のみ必要なコヒーレンシ状態におけるターゲット・メモリ・ブロックを得るために、下位レベルのメモリ階層を最初にアクセスすることなくＬ２キャッシュ・アレイ３００に対する表示された更新を遂行することによってそのオペレーションをサービスすることが可能である。マスタ２３２は、ターゲット・アドレスがＩ、Ｉg、またはＩnのいずれかと関連付けられているかまたは単にＬ２キャッシュ・ディレクトリ３０２に存在しない（即ち、ミスする）場合、下位レベルのメモリ階層を最初にアクセスすることなくロードまたはストア・オペレーションをサービスすることができない。
【００５３】
メモリ・アクセス・オペレーションがメモリ階層の下位レベルを最初にアクセスせずにサービスされることを可能にするコヒーレンシ状態のＬ２キャッシュ・ディレクトリ３０２においてターゲット・アドレスがヒットするということを、マスタ２３２がブロック６０６において決定したことに応答して、プロセスはブロック６０６からブロック６２４に進む。ブロック６２２は、マスタ２３２が、要求されたメモリ・ブロックを要求プロセッサ・コア２００に供給することによって、またはＬ２キャッシュ・アレイ３００におけるターゲット・メモリ・ブロックを更新することによって、ロードまたはストア・オペレーションをサービスすることを示す。メモリ・アクセス・オペレーションをサービスすることに関連するステップは、たとえば、米国特許出願番号１１／０５５,３０５号の出願において更に詳細に説明されている。しかし、本発明の主要な部分ではなく、当業者には容易に理解されるためここでは説明を省略する。ブロック６２４に続いて、ブロック６２６においてプロセスは終了する。
【００５４】
ブロック６０６に説明を戻すと、メモリ・アクセス・オペレーションが下位レベルのメモリ階層を最初にアクセスすることなくサービスされることを可能にするコヒーレンシ状態にあるＬ２キャッシュ・ディレクトリ３０２においてヒットしなかったということをマスタ２３２が決定する場合、プロセスはブロック６０６からブロック６１０に進む。ブロック６１０は、Ｌ２キャッシュ・ディレクトリ３０２に関するターゲット・アドレスのコヒーレンシ状態が、ローカル相互接続体１１４およびシステム相互接続体１１０を含む相互接続ファブリック上に、ターゲット・アドレスに対するメモリ・アクセス・リクエストを送出する前に、Ｌ３キャッシュ・ディレクトリ２５４のルックアップが遂行されなければならないような状態であるか否かを、マスタ２３２が決定することを示す。例えば、ターゲット・アドレスが「タグ付き」Ｉ状態の１つ（例えば、Ｉn またはＩg）におけるＬ２キャッシュ・ディレクトリ３０２においてヒットする場合、マスタ２３２は、Ｌ３キャッシュ・ディレクトリ２５４を最初にアクセスすることなく相互接続ファブリック上に、ターゲット・アドレスに対するメモリ・アクセス・リクエスト送出することを選択することが望ましい。それは、前述のように、異なるキャッシュ・コヒーレンシと関連する処理ユニット２００がターゲット・メモリ・ブロックへの排他的アクセスを得るために相互接続ファブリック上にメモリ・アクセス・リクエスト（例えば、ＲＷＩＴＭまたはＤＣlaim）をうまく送出するとき、これらのコヒーレンシ状態が確立されるためである。従って、Ｌ３キャッシュ・ディレクトリ２５４がロードまたはストア・オペレーションをサービスするために必要なコヒーレンシ状態の１つにターゲット・アドレスを保持することがありそうもないので、Ｌ３キャッシュ・ディレクトリ２５４のルックアップに関連した追加の待ち時間を最初に誘起することなく相互接続ファブリック上にメモリ・アクセス・リクエストを送出することが望ましい。同様に、ストア・オペレーションに関して、Ｌ２キャッシュ・ディレクトリ３０２におけるターゲット・アドレスのルックアップがＩn、Ｉg、Ｓ、またはＳrコヒ−レンシ状態の１つを生じる場合、Ｌ３キャッシュ・ディレクトリ２５４がストア・オペレーションをサービスするために必要なコヒーレンシ状態の１つにターゲット・アドレスを保持するということはありそうもないので、Ｌ３キャッシュ・ディレクトリ２５４のルックアップに関連した追加の待ち時間を最初に誘起することなく相互接続ファブリック上にメモリ・アクセス・リクエストを送出することが待ち時間の観点から望ましい。
【００５５】
Ｌ３キャッシュ・ディレクトリ２５４のルックアップが、相互接続ファブリック上にターゲット・アドレスに対するメモリ・アクセス・リクエストを送出する前に遂行されてはならないといことをＬ２キャッシュ・ディレクトリ３０２に関連したターゲット・アドレスのコヒーレンシ状態が表すことをマスタ２３２がブロック６１０において決定したことに応答して、ブロック６２０に示されるように、マスタ２３２が相互接続ファブリック上にターゲット・アドレスに対するメモリ・アクセス・リクエストを送出する。その後、ブロック６２２に示されるように、相互接続ファブリック上に送出されたメモリ・アクセス・リクエストが、例えば、ターゲット・メモリ・ブロックの提供を通してサービスされるまで、または、マスタ２３２が、Ｌ２キャッシュ・ディレクトリ３０２におけるターゲット・アドレスに対するコヒーレンシ状態を、メモリ・アクセス・オペレーションを遂行するために必要な状態に更新し得る、ということをコヒーレンシ・メッセージが表示するまで、マスタ２３２は待機する。しかる後、プロセスは、上記したブロック６２４および６２６に進む。
【００５６】
要求処理ユニット１０４のＬ３キャッシュ２５０がメモリ・アクセス・オペレーションのサービスを可能にするコヒーレンシ状態に必要なメモリ・ブロックを保持するという点でＬ３キャッシュ２５０の投機バイパスが間違っていることを、わずかな確率でも、証明することは明らかであろう。従って、エラーを回避するために、Ｌ３キャッシュ・コントローラ２５２は、相互接続ファブリック上のメモリ・アクセス・リクエスト（処理ユニット１０４によって送出されたリクエストを含む）をスヌープし、任意の他のスヌーパのような相互接続ファブリックを介してそれらのメモリ・アクセス・リクエストに応答する。このように、Ｌ３キャッシュ２５０の投機バイパスが不適切であることを証明する場合、メモリ・アクセス・オペレーションは、相互接続ファブリック上にメモリ・アクセス・リクエストを送出する前にＬ３キャッシュ２５０がＬ２キャッシュ２３０によって直接にアクセスされていた場合に誘起される待ち時間よりもたとえ長い待ち時間であっても、メモリ・アクセス・オペレーションは依然としてサービスされることが可能である。
【００５７】
ブロック６１０に説明を戻すと、Ｌ３キャッシュ・ディレクトリ２５４のルックアップが、相互接続ファブリック上にターゲット・アドレスに対するメモリ・アクセス・リクエストを送出する前に遂行されてはならないといことをＬ２キャッシュ・ディレクトリ３０２に関連したターゲット・アドレスのコヒーレンシ状態が表すことをマスタ２３２が決定したことに応答して、ブロック６１２において示されるように、マスタ２３２がＬ３キャッシュ・ディレクトリ２５４のルックアップを開始する。そこで、ブロック６１４において、マスタ２３２は、メモリ・アクセス・オペレーションが相互接続ファブリック上にリクエストを送出することなくサービスされることを可能にするコヒーレンシ状態におけるＬ３キャッシュ・ディレクトリ２５４においてターゲット・アドレスがヒットするか否かを決定する。それが否定される場合、プロセスは、既に説明したブロック６２０に進む。しかし、メモリ・アクセス・オペレーションが相互接続ファブリック上にリクエストを送出することなくサービスされることを可能にするコヒーレンシ状態におけるＬ３キャッシュ・ディレクトリ２５４においてターゲット・アドレスがヒットすることをマスタ２３２が決定する場合、プロセスはブロック６１６に進む。ブロック６１６は、Ｌ２キャッシュ２３０がＬ３キャッシュ２５０からターゲット・キャッシュ・ブロックを受けることを表す。しかる後、マスタ２３２は、ブロック６２４に示されるようにメモリ・アクセス・オペレーションをサービスし、そしてブロック６２６においてプロセスが終了する。
【００５８】
従って、図６は、Ｌ３キャッシュ２５０へのアクセスが逐次的であって、Ｌ２キャッシュ２３０内のターゲット・アドレスのコヒーレンシ状態を条件とする実施例を示す。明らかなように、この実施例は、Ｌ２キャッシュ２３０が下位レベル・メモリをアクセスすることなくメモリ・アクセス・オペレーションをサービスすることができ場合、またはリクエストが相互接続ファブリック上に送出されなければならない場合、Ｌ３キャッシュ・ディレクトリ２５４の不必要な利用を防止する。しかし、図７に関連して後述する本発明の別の実施例では、Ｌ３キャッシュ２５０へのアクセスを、Ｌ２キャッシュ・ディレクトリのルックアップと同時に行うことが可能である。
【００５９】
次に図７を参照すると、本発明に従ってキャッシュ階層内のメモリ・アクセス・リクエストをサービスする方法に関する第２実施例の高レベル論理フローチャートが示される。図示のプロセスは、ブロック６３０において始まり、ブロック６３２に進む。ブロック６３２は、Ｌ２キャッシュ２３０のマスタ２３２が１つまたは複数の関連のプロセッサ・コア２００からメモリ・アクセス（即ち、ロードまたはストア）オペレーションを受けたか否かをそのマスタ２３２が決定することを示す。上記のように、メモリ・アクセス・オペレーションは、所望のタイプのアクセス（即ち、ロードまたはストア）の表示およびターゲット・メモリ・ブロックを識別するターゲット実アドレスを含む。メモリ・アクセス・オペレーションを受けなかった場合、プロセスは、メモリ・アクセス・オペレーションを受けるまでブロック６３２を繰り返す。メモリ・アクセス・オペレーションを受けたことに応答して、マスタ２３２は、そのメモリ・アクセス・オペレーションによって指定されたターゲット・アドレスに対するＬ２キャッシュ・ディレクトリ３０２内に記録されたコヒーレンシ状態を、それが存在する場合、決定するために、ブロック６３４においてＬ２キャッシュ・ディレクトリ３０２のルックアップを開始する。同時に、マスタ２３２は、メモリ・アクセス・オペレーションによって指定されたターゲット・アドレス対するＬ３キャッシュ・ディレクトリ２５４内に記録されたコヒーレンシ状態を、それが存在する場合、決定するために、Ｌ３キャッシュ・ディレクトリ２５４のルックアップを開始する。一般に、マスタ２３２は、Ｌ３キャッシュ・ディレクトリのルックアップ結果を受けることに先立ってＬ２キャッシュ・ディレクトリのルックアップ結果を受けるであろう。
【００６０】
Ｌ２キャッシュ・ディレクトリ３０２のルックアップ結果を受けたことに応答して、マスタ２３２は、ブロック６３６において、Ｌ２キャッシュ・ディレクトリ３０２に記録されたコヒーレンシ状態が存在する場合にそのコヒーレンシ状態が、下位レベルのメモリ階層を最初にアクセスすることなく、メモリ・アクセス・オペレーションがサービスされることを可能にするか否かを決定する。下位レベルのメモリ階層を最初にアクセスすることなくメモリ・アクセス・オペレーションがサービスされることを可能にするコヒーレンシ状態におけるＬ２キャッシュ・ディレクトリ３０２においてターゲット・アドレスがヒットしたことを、ブロック６３６でマスタ２３２が決定したことに応答して、プロセスはブロック６３６からブロック６３８に進む。ブロック６３８は、マスタ２３２がＬ３キャッシュ・ディレクトリ２５４のルックアップ結果を無視することを示す。そこで、マスタ２３２は、ブロック６４４に示されるように、要求されたメモリ・ブロックを要求プロセッサ・コア２００に供給することによって、またはＬ２キャッシュ・アレイ３００におけるターゲット・メモリ・ブロックを更新することによって、ロードまたはストア・オペレーションをサービスする。上記のように、メモリ・アクセス・オペレーションをサービスすることに関連したステップは前述の米国特許出願にもっと詳細に説明されている。しかし、本発明の主要な部分ではなく、当業者には容易に理解されるためここでは説明を省略する。ブロック６４４に続いて、ブロック６４６においてプロセスは終了する。
【００６１】
説明をブロック６３６に戻すと、下位レベルのメモリ階層を最初にアクセスすることなく、メモリ・アクセス・オペレーションがサービスされることを可能にするコヒーレンシ状態におけるＬ２キャッシュ・ディレクトリ３０２においてターゲット・アドレスがヒットしなかったことをマスタ２３２が決定した場合、プロセスはブロック６３６からブロック６５０に進む。ブロック６５０は、ターゲット・アドレスのコヒーレンシ状態が有効であるかまたはＬ２キャッシュ・ディレクトリ３０２における「タグ付き」Ｉ状態の１つ（例えば、Ｉn またはＩg）にあるかをマスタ２３２が決定することを示す。ターゲット・アドレスがＬ２キャッシュ・ディレクトリ３０２における「タグ付き」Ｉ状態の１つ（例えば、ＩnまたはＩg）にあるか、または下位レベルのメモリ階層を最初にアクセスすることなくメモリ・アクセス・オペレーションがサービスされることを可能にしない有効状態にある場合、マスタ２３２は、Ｌ３キャッシュ・ディレクトリのルックアップ結果を受けたときにその結果を無視し(ブロック６５２)、Ｌ３キャッシュ・ディレクトリのルックアップ結果を待つことなく相互接続ファブリック上にターゲット・アドレスに対するメモリ・アクセス・リクエストを送出する（ブロック６５４）。それは、前述のように、異なるキャッシュ階層と関連した処理ユニット２００が、ターゲット・メモリ・ブロックに対する排他的アクセスを得るために相互接続ファブリック上にメモリ・アクセス・リクエスト（例えば、ＲＷＩＴＭまたはＤＣlaim）をうまく送出するとき、これらのコヒーレンシ状態が確立されるためである。従って、Ｌ３キャッシュ・ディレクトリ２５４がロードまたはストア・オペレーションをサービスするために必要なコヒーレンシ状態の１つにターゲット・アドレスを保持することはありそうもないので、Ｌ３キャッシュ・ディレクトリ２５４のルックアップ結果を待つことに関連して更なる待ち時間を生じることなく、相互接続ファブリック上にメモリ・アクセス・リクエストを送出することが望ましい。ブロック６５６に示されるように、その後、相互接続ファブリック上に送出されたメモリ・アクセス・リクエストが、例えば、ターゲット・メモリ・ブロックを提供することによってサービスされるまで、またはマスタ２３２がＬ２キャッシュ・ディレクトリ３０２内のターゲット・アドレスに対するコヒーレンシ状態をメモリ・アクセス・オペレーションの遂行のために必要な状態に更新することをコヒーレンシ・メッセージが表示するまで、マスタ２３２は待機する。しかる後、プロセスは、前述のブロック６４４およびブロック６４６に進む。
【００６２】
説明をブロック６５０に戻すと、ターゲット・アドレスが「タグ付き」Ｉ状態の１つ（例えば、Ｉn またはＩg）におけるＬ２キャッシュ・ディレクトリ３０２において、またはメモリ・アクセス・オペレーションが下位レベルのメモリ階層を最初にアクセスすることなくサービスされることを可能にしない有効状態におけるＬ２キャッシュ・ディレクトリ３０２においてヒットしなかったことをマスタ２３２が決定したことに応答して、マスタ２３２はＬ３ディレクトリ２５４のルックアップ結果を待つ。Ｌ３ディレクトリ２５４のルックアップ結果を受けたことに応答して、ブロック６６２において、マスタ２３２が、相互接続ファブリック上にリクエストを送出することなくメモリ・アクセス・オペレーションをサービスすることを可能にするコヒーレンシ状態におけるＬ３キャッシュ・ディレクトリ２５４においてヒットするかどうかをマスタ２３２が決定する。その結果が否定的である場合、プロセスは、前述したブロック６５４に進む。しかし、メモリ・アクセス・オペレーションが、相互接続ファブリック上にリクエストを送出することなくサービスされることを可能にするコヒーレンシ状態におけるＬ３キャッシュ・ディレクトリ２５４においてターゲット・アドレスがヒットするということをマスタ２３２が決定する場合、プロセスはブロック６６４に進む。ブロック６６４は、Ｌ２キャッシュ２３０がターゲット・キャッシュ・ブロックをＬ３キャッシュ２５０から受けることを示す。次に、ブロック６６８において、マスタ２３２は、それがＬ３ディレクトリ状態を無視することを選んだか否かを決定する。その結果が肯定的である場合、ブロック６７０に示されるように、マスタ２３２は、Ｌ３キャッシュ２５０から直接に受けたメモリ・ブロックを廃棄し、その代わりに、Ｌ３キャッシュ２５０から相互接続ファブリックを介してターゲット・メモリ・アドレスを受けるのを待つ。ブロック６７０に続いて、図示のプロセスにおけるこのブランチはブロック６４６において終了する。一方、マスタ２３２がターゲット・メモリ・ブロックのＬ３ディレクトリ状態を無視することを選ばなかったことをそのマスタ２３２が決定する場合、マスタ２３２は、ブロック６４４に示されるように、Ｌ３キャッシュ２５０によって提供されたデータを利用してメモリ・アクセス・オペレーションをサービスする。しかる後、ブロック６４６においてプロセスが終了する。
【００６３】
要求処理ユニット１０４のＬ３キャッシュ２５０が、メモリ・アクセス・オペレーションのサービスを可能にするコヒーレンシ状態に必要なメモリ・ブロックを保持するという点で、Ｌ３キャッシュ２５０の投機バイパスが不適切であるとわずかな確率でも証明するであろうということは留意すべきである。エラーを回避するために、Ｌ３キャッシュ・コントローラ２５２は、相互接続ファブリック上のメモリ・アクセス・リクエスト（その処理ユニット１０４によって送出されたリクエストを含む）をスヌープし、任意の他のスヌーパのような相互接続ファブリックを介してそれらのメモリ・アクセス・リクエストに応答する。このように、Ｌ３キャッシュ２５０の投機バイパスが不適切であることを証明する場合、Ｌ２キャッシュ２３０がＬ３キャッシュ２５０を直接にアクセスした場合に生じる待ち時間よりも長い待ち時間であっても、メモリ・アクセス・オペレーションが依然としてサービスされることは可能である。
【００６４】
上述のように、本発明は、少なくとも１つの下位レベル・キャッシュ・ディレクトリのルックアップ結果を待つことなく、キャッシュ階層を結合する相互接続ファブリック上にメモリ・アクセス・リクエストを選択的に送出することによってメモリ・アクセス待ち時間を減少させる、改良されたデータ処理システム、処理ユニット、キャッシュ階層、およびデータ処理の方法を提供する。下位レベルのキャッシュ・ディレクトリのルックアップ結果を待つことなく相互接続ファブリック上にメモリ・アクセス・リクエストを送出するという判断は、キャッシュ・ディレクトリにおけるターゲット・アドレスに関連したコヒーレンシ状態に少なくとも部分的に基づいて行われる。
【００６５】
本発明を好適な実施例に関連して説明したが、本発明の真意および範囲から逸脱することなく本発明における形体および細部に関する種々の変更を行い得ることは当業者には明らかであろう。
【図面の簡単な説明】
【００６６】
【図１】本発明による例示的なデータ処理システムの高レベル・ブロック図である。
【図２】本発明による処理ユニットの詳細なブロック図である。
【図３】図２に示されたＬ２キャッシュ・アレイおよびディレクトリの詳細なブロック図である。
【図４】図１に示されたデータ処理システムのシステム相互接続体を介した例示的トランザクションの時間・空間図である。
【図５】本発明の好適な実施例によるドメイン・インジケータを示す図である。
【図６】本発明によるキャッシュ階層内でメモリ・アクセス・リクエストをサービスする方法の第１実施例の高レベル論理フローチャートである。
【図７】本発明によるキャッシュ階層内でメモリ・アクセス・リクエストをサービスする方法の第２実施例の高レベル論理フローチャートである。
【図１】
2006285992.tif 000006
【図２】
2006285992.tif 000007
【図３】
2006285992.tif 000008
【図４】
2006285992.tif 000009
【図５】
2006285992.tif 000010
【図６】
2006285992.tif 000011
【図７】
2006285992.tif 000012