I.例示的データ処理システム
ここで各図、特に図1を参照すると、本発明によるキャッシュ・コヒーレント対称型マルチプロセッサ(SMP)データ処理システムの例示的実施形態の高レベル・ブロック図が示されている。図示されているように、データ処理システム100は、データおよび命令を処理する複数の処理ノード102a、102bを含む。処理ノード102a、102bは、アドレス、データ、および制御情報を搬送するシステム相互接続110に結合される。システム相互接続110は、例えばバス式相互接続(bused interconnect)、交換相互接続、またはハイブリッド相互接続として実装することができる。
図示する実施形態では、各処理ノード102が、集積回路としてそれぞれ実現されることが好ましい4つの処理装置104a〜104dを含むマルチチップ・モジュール(MCM)として実現される。各処理ノード102内の処理装置104a〜104dは、ローカル相互接続114によって通信するように結合され、ローカル相互接続114は、システム相互接続110と同様に、1つまたは複数のバスまたはスイッチあるいはその両方で実装することができる。
各ローカル相互接続114に結合された装置は、処理装置104だけではなく、1つまたは複数のシステム・メモリ108a〜108dも含む。システム・メモリ108内に常駐するデータおよび命令は一般に、データ処理システム100の任意の処理ノード102内の任意の処理装置104内のプロセッサ・コアでアクセスし、修正することができる。本発明の代替実施形態では、1つまたは複数のシステム・メモリ108をローカル相互接続114ではなく、システム相互接続110に結合することができる。
相互接続ブリッジ、不揮発性ストレージ、ネットワークへの接続用ポート、または接続された装置などの図示されていない多数の追加の構成要素をSMPデータ処理システム100が含むことができることを当業者は理解されよう。このような追加の構成要素は本発明を理解するのに不要であるので、それらを図1では図示しておらず、または本明細書ではさらに論じない。しかし、本発明によって実現される拡張は、様々なアーキテクチャのキャッシュ・コヒーレント・データ処理システムに適用可能であり、図1に示される一般化されたデータ処理システム・アーキテクチャに決して限定されないことも理解されたい。
次に図2を参照すると、本発明による例示的処理装置104のより詳細なブロック図が示されている。図示する実施形態では、各処理装置104は、命令およびデータを別々に処理する2つのプロセッサ・コア200a、200bを含む。各プロセッサ・コア200は、少なくとも、実行のための命令を取り出して順序付けする命令順序付けユニット(ISU:instruction sequencing unit)208と、命令を実行する1つまたは複数の実行ユニット224とを含む。実行ユニット224によって実行される命令は、メモリ・ブロックへのアクセスを要求する命令、またはメモリ・ブロックへのアクセスを求める要求を生成させる命令を含む。
各プロセッサ・コア200のオペレーションは、最低のレベルに共有システム・メモリ108a〜108dを有し、上位レベルに1つまたは複数のレベルのキャッシュ・メモリを有する多重レベル揮発性メモリ階層によってサポートされる。図示する実施形態では、各処理装置104は、プロセッサ・コア200a〜200bから受け取った要求と、ローカル相互接続114上のスヌーパ(S)222によってスヌープされた(snoop)オペレーションに応答して、処理ノード102内のシステム・メモリ108a〜108dのうちの1つへの読取りアクセスおよび書込みアクセスを制御する統合メモリ・コントローラ(IMC)206を含む。
例示的実施形態では、処理装置104のキャッシュ・メモリ階層は、各プロセッサ・コア200内のストアスルー(store-through)レベル1(L1)キャッシュ226と、処理装置104のすべてのプロセッサ・コア200a、200bによって共有されるレベル2(L2)キャッシュ230とを含む。L2キャッシュ230は、L2アレイおよびディレクトリ234、マスタ232、ならびにスヌーパ236を含む。マスタ232は、関連するプロセッサ・コア200a〜200bから受け取ったメモリ・アクセス(およびその他の)要求に応答して、ローカル相互接続114およびシステム相互接続110上のトランザクションを開始し、L2アレイおよびディレクトリ234にアクセスする。スヌーパ236は、ローカル相互接続114上のオペレーションをスヌープし、適切な応答を与え、オペレーションによって要求されるL2アレイおよびディレクトリ234への任意のアクセスを実施する。
図示するキャッシュ階層は、2レベルのキャッシュのみを含むが、代替実施形態が、上位レベルのキャッシュの内容を完全に含むことができ、部分的に含むことができ、または含まない追加のレベル(L3、L4など)のオンチップまたはオフチップのインラインまたはルックアサイド・キャッシュを含むことができることを当業者は理解されよう。
各処理装置104は、応答ロジック210のインスタンスをさらに含み、以下で論じるように、応答ロジック210は、データ処理システム100内のキャッシュ・コヒーレンシを維持する分散コヒーレンシ・シグナリング機構(distributed coherency signaling mechanism)の一部を実装する。さらに、各処理装置104は、そのローカル相互接続114とシステム相互接続110の間の通信を選択的に転送する転送ロジック212のインスタンスを含む。最後に、各処理装置104は、I/O装置216などの1つまたは複数のI/O装置の接続をサポートする統合I/O(入出力)コントローラ214を含む。以下でさらに説明するように、I/Oコントローラ214は、I/O装置216による要求に応答して、ローカル相互接続114またはシステム相互接続110あるいはその両方に対するオペレーションを発行することができる。
次に図3を参照すると、L2アレイおよびディレクトリ234の例示的実施形態のより詳細なブロック図が示されている。図示するように、L2アレイおよびディレクトリ234は、セット連想L2キャッシュ・アレイ(set associative L2 cache array)300と、L2キャッシュ・アレイ300の内容のL2キャッシュ・ディレクトリ302とを含む。従来型セット連想キャッシュと同様に、システム・メモリ108内のメモリ位置は、システム・メモリ(実)アドレス内の所定のインデックス・ビットを使用して、キャッシュ・アレイ300内の特定の合同クラス(congruenceclass)にマッピングされる。キャッシュ・アレイ300内に格納される特定のキャッシュ・ラインがキャッシュ・ディレクトリ302に記録され、キャッシュ・ディレクトリ302は、キャッシュ・アレイ300内の各キャッシュ・ラインについて1つのディレクトリ・エントリを含む。当業者は理解するであろうが、キャッシュ・ディレクトリ302内の各ディレクトリ・エントリは、少なくとも、対応する実アドレスのタグ部分を使用してキャッシュ・アレイ300内に格納された特定のキャッシュ・ラインを指定するタグ・フィールド304と、キャッシュ・ラインのコヒーレンシ状態を示す状態フィールド306と、同一の合同クラス内の他のキャッシュ・ラインに対するキャッシュ・ラインについての置換順序を示すLRU(最長時間未使用)フィールド308とを含む。
II.例示的オペレーション
次に図4を参照すると、図1のデータ処理システム100のローカルまたはシステム相互接続110、114に対する例示的オペレーションの時空図(time-space diagram)が示されている。オペレーションは、L2キャッシュ230のマスタ232(または、I/Oコントローラ214などの別のマスタ)がローカル相互接続114またはシステム相互接続110あるいはその両方に対する要求402を発行するときに始まる。好ましくは、要求402は、所望のアクセスのタイプを示すトランザクション・タイプと、要求でアクセスすべき資源を示す資源識別子(例えば実アドレス)を含む。好ましくは、一般的なタイプの要求には、以下の表Iに記載されるものが含まれる。
要求402が、L2キャッシュ230のスヌーパ236、ならびにメモリ・コントローラ206のスヌーパ222によって受信される(図1)。一般には、いくつかの例外はあるが、要求402のマスタ232と同一のL2キャッシュ230内のスヌーパ236は要求402をスヌープしない(すなわち、一般には自己スヌーピングはない)。要求402を処理装置104で内部的にサービスすることができない場合にのみ、要求402がローカル相互接続114上またはシステム相互接続110上あるいはその両方で送られるからである。要求402を受け取る各スヌーパ222、236は、要求402に対する少なくともそのスヌーパの応答を表すそれぞれの部分応答406を提供する。メモリ・コントローラ206内のスヌーパ222は、例えばスヌーパ222が要求アドレスの任を担うかどうか、およびスヌーパ222が要求をサービスするのに利用可能な資源を有するかどうかに基づいて、提供する部分応答406を決定する。L2キャッシュ230のスヌーパ236は、例えばそのL2キャッシュ・ディレクトリ302の可用性、要求を処理するためのスヌーパ236内のスヌープ・ロジック・インスタンスの可用性、およびL2キャッシュ・ディレクトリ302内の要求アドレスに関連するコヒーレンシ状態に基づいて、その部分応答406を決定することができる。
スヌーパ222および236の部分応答は、応答ロジック210の1つまたは複数のインスタンスによって段階的に、またはすべて一度に論理的に組み合わされ、要求402に対する全システム組合せ応答(system-wide combined response)(CR)410が決定される。以下で論じる範囲制限を受けて、応答ロジック210は、ローカル相互接続114またはシステム相互接続110あるいはその両方を介して組合せ応答410をマスタ232およびスヌーパ222、236に提供し、要求402に対する全システム応答(例えば、成功、失敗、再試行など)を示す。CR410が要求402の成功を示す場合、CR410は、例えば、要求されたメモリ・ブロックに関するデータ源、要求されたメモリ・ブロックをマスタ232によってキャッシュすべきキャッシュ状態、および1つまたは複数のL2キャッシュ230内の要求されたメモリ・ブロックを無効にする「クリーンアップ」オペレーションが必要であるかどうかを示すことができる。
組合せ応答410の受信に応答して、マスタ232およびスヌーパ222、236のうちの1つまたは複数は一般に、要求402をサービスするために1つまたは複数のオペレーションを実施する。こうしたオペレーションは、マスタ232にデータを供給すること、1つまたは複数のL2キャッシュ230にキャッシュされたデータのコヒーレンシ状態を無効にし、あるいは更新すること、キャストアウト・オペレーションを実施すること、データをシステム・メモリ108に書き戻すことなどを含むことができる。以下でさらに論じるように、要求402によって要求された場合、応答ロジック210による組合せ応答410の生成の前または後に、要求されたメモリ・ブロックまたはターゲット・メモリ・ブロックを、マスタ232に、またはマスタ232から送ることができる。
以下の説明では、要求に対するスヌーパ222、236の部分応答と、要求またはその組合せ応答あるいはその両方に応答してスヌーパが実施するオペレーションとを、要求によって指定される要求アドレスに関してそのスヌーパがコヒーレンシの最高地点(Highest Point of Coherency)(HPC)か、コヒーレンシの最低地点(Lowest Point ofCoherency)(LPC)か、またはそのどちらでもないかを参照しながら説明する。本明細書では、LPCは、メモリ・ブロックのためのリポジトリとして働くメモリ装置またはI/O装置と定義される。メモリ・ブロックに対するHPCが存在しない場合、LPCは、メモリ・ブロックの真のイメージを保持し、メモリ・ブロックの追加のキャッシュされたコピーを生成する要求を許可または拒否する権限を有する。図1および2のデータ処理システム実施形態での典型的な要求では、LPCは、参照されるメモリ・ブロックを保持するシステム・メモリ108に関するメモリ・コントローラ206となる。本明細書では、HPCは、メモリ・ブロックの真のイメージ(LPCでの対応するメモリ・ブロックと整合することもしないこともある)をキャッシュする一意的に特定される装置と定義され、メモリ・ブロックを修正する要求を許可または拒否する権限を有する。記述的には、HPCは、メモリ・ブロックを修正しないオペレーションに応答して、メモリ・ブロックのコピーを要求側に提供することもできる。したがって、図1および2のデータ処理システム実施形態での典型的要求では、HPCが存在する場合はそれがL2キャッシュ230となる。他の標識を使用してメモリ・ブロックに対するHPCを指定することができるが、本発明の好ましい実施形態は、以下で表2を参照ながらさらに説明するように、L2キャッシュ230のL2キャッシュ・ディレクトリ302内の選択されたキャッシュ・コヒーレンシ状態を使用して、メモリ・ブロックに対するHPCが存在する場合はそれを指定する。
図4をさらに参照すると、好ましくは、要求402で参照されるメモリ・ブロックに対するHPCが存在する場合はそれが、またはHPCが存在しない場合はメモリ・ブロックのLPCが、保護ウィンドウ404aの間の要求402に応答してメモリ・ブロックの所有権の転送を保護する任を担う。図4に示される例示的シナリオでは、要求402の要求アドレスで指定されるメモリ・ブロックに対するHPCであるスヌーパ236が、スヌーパ236がその部分応答406を決定する時からスヌーパ236が組合せ応答410を受け取るまで延びる保護ウィンドウ404aの間、要求されたメモリ・ブロックの所有権のマスタ232への転送を保護する。保護ウィンドウ404aの間、スヌーパ236は、所有権が首尾よくマスタ232に転送されるまで他のマスタが所有権を得るのを防止する同一の要求アドレスを指定する他の要求に部分応答406を提供することにより、所有権の転送を保護する。マスタ232も同様に、組合せ応答410の受信に続いて、保護ウィンドウ404bを開始して、要求402で要求されるメモリ・ブロックのその所有権を保護する。
スヌーパ222、236はすべて、上述のCPUおよびI/O要求を処理するために有する資源が限られているので、いくつかの異なるレベルの部分応答および対応するCRが可能である。例えば、要求されたメモリ・ブロックの任を担うメモリ・コントローラ206内のスヌーパ222が、要求を処理するのに利用可能なキューを有する場合、スヌーパ222は、要求に対するLPCとして働くことができることを示す部分応答で応答することができる。一方、スヌーパ222が、要求を処理するのに利用可能なキューを有さない場合、スヌーパ222は、メモリ・ブロックに対するLPCであるが、要求を現在サービスすることができないことを示す部分応答で応答することができる。
同様に、L2キャッシュ230内のスヌーパ236は、要求を処理するために、スヌープ・ロジックの利用可能なインスタンスを要求し、L2キャッシュ・ディレクトリ302にアクセスすることができる。こうした資源の一方(または両方)へのアクセスが存在しない結果、部分応答(および対応するCR)が、要求された資源が存在しないために要求をサービスできないことを信号で伝える。
以後、要求をサービスするのに内部資源が必要な場合、必要なすべての利用可能な内部資源をスヌーパが有することを示す部分応答を提供するスヌーパ222、236を、要求を「肯定する(affirm)」と呼ぶ。スヌーパ236について、好ましくは、スヌープされたオペレーションを肯定する部分応答は、そのスヌーパ236での要求されたメモリ・ブロックまたはターゲット・メモリ・ブロックのキャッシュ状態を示す。要求をサービスするのに必要なすべての利用可能な内部資源をスヌーパ236が有さないことを示す部分応答を提供するスヌーパ236を「場合によっては隠される(possiblyhidden)」と呼ぶ。スヌープ・ロジックのインスタンスまたはL2キャッシュ・ディレクトリ302へのアクセスが欠如しているために、上記で定義された意味でスヌーパ236が要求を「肯定」することができず、他のマスタ232およびスヌーパ222、236の観点からは未知のコヒーレンシ状態を有するので、そのようなスヌーパ236は「場合によっては隠される」。
III.データ送達ドメイン
従来のブロードキャスト・ベースのデータ処理システムは、ブロードキャスト通信を介してキャッシュ・コヒーレンシとデータ送達とを共に処理し、従来のシステムでは、ブロードキャスト通信は、システム相互接続上でシステム内の少なくともすべてのメモリ・コントローラおよびキャッシュ階層に送られる。代替アーキテクチャなどのシステムのスケールと比較して、ブロードキャスト・ベースのシステムは、アクセス待ち時間を低減させ、共有メモリ・ブロックのデータ処理およびコヒーレンシ管理が良好となる傾向がある。
ブロードキャスト・ベースのシステムのサイズが増大するとき、システム相互接続上のトラフィック・ボリュームが増大し、そのことは、システムが増大するときに、システム相互接続を介する通信により多くの帯域幅が必要となるので、システム・コストが急激に上昇することを意味する。すなわち、n個のトランザクションの平均トラフィック・ボリュームをそれぞれ有するm個のプロセッサ・コアを有するシステムは、トラフィック・ボリュームm×nを有し、このことは、ブロードキャスト・ベースのシステムでのトラフィック・ボリュームは加法的にではなく乗法的に増大することを意味する。かなり大きな相互接続帯域幅に対する要件を超えて、システム・サイズの増大は、いくらかのアクセス待ち時間を増大させる2次効果を有する。例えば、要求されたデータをそこから供給することができる、要求されたメモリ・ブロックを共有コヒーレンシ状態に保持する最も遠く離れた下部レベル・キャッシュの組合せ応答待ち時間により、最悪の場合には、読取りデータのアクセス待ち時間が制限される。
システム相互接続帯域幅要件およびアクセス待ち時間を低減すると共に、ブロードキャスト・ベースのシステムの利点を依然として保持するために、本発明は、要求側L2キャッシュ230とデータ源との間の平均距離を短縮することによってデータ・アクセス待ち時間を低減する。要求側L2キャッシュ230とデータ源との間の平均距離を短縮するための一技法は、データ処理システム100全体にわたって分散する複数のL2キャッシュ230がキャッシュ間介入(cache-to-cache intervention)を使用して要求側L2キャッシュ230にメモリ・ブロックを供給することを可能にする「特別な」共有コヒーレンシ状態に、これらのキャッシュが同一のメモリ・ブロックのコピーを保持することを可能にすることである。
データ処理システム100などのSMPデータ処理システムで共有メモリ・ブロックに対する複数の同時かつ分散されたデータ源を実装するために、2つの問題に対処しなければならない。第1に、上記で触れた「特別な」共有コヒーレンシ状態でのメモリ・ブロックのコピーの作成を管理する何らかの規則を実装しなければならない。第2に、例えばバス読取りオペレーションまたはバスRWITMオペレーションに応答して、スヌーピングL2キャッシュ230が存在するならばどれが共有メモリ・ブロックを要求側L2キャッシュ230に提供するかを管理する規則が存在しなければならない。
本発明によれば、これらの問題がどちらも、データ・ソーシング・ドメインの実装によって対処される。具体的には、SMPデータ処理システム内の各ドメインが、1度に特定のメモリ・ブロックを「特別な」共有コヒーレンシ状態に保持するキャッシュ階層を1つだけ含むことが許可される。ただし、ドメインは、データ要求に応答することに関与する1つまたは複数の下位レベル(例えばL2)キャッシュを含むように定義される。そのキャッシュ階層は、バス読取りタイプ(例えば、読取りまたはRWITM)オペレーションが同じドメイン内の要求側下位レベル・キャッシュによって開始されたときに存在する場合、要求されたメモリ・ブロックを要求側下位レベル・キャッシュにソーシングする任を担う。多くの異なるドメイン・サイズを定義することができるが、図1のデータ処理システム100では、各処理ノード102(すなわちMCM)をデータ・ソーシング・ドメインとみなす場合が好都合である。そのような「特別な」共有状態(すなわちSr)の一例を、以下で表IIを参照しながら説明する。
IV.コヒーレンシ・ドメイン
上述のデータ送達ドメインの実装はデータ・アクセス待ち時間を改善するが、この拡張は、システム・スケールが増大するときのトラフィック・ボリュームのm×n増大に対処していない。トラフィック・ボリュームを低減すると共に、依然としてブロードキャスト・ベースのコヒーレンシ機構を維持するために、本発明の好ましい実施形態は、上述のデータ送達ドメインと同様に、(必須ではないが)各処理ノード102と共に好都合に実装することのできるコヒーレンシ・ドメインを追加的に実装し、別々のコヒーレンシ・ドメインを形成する。データ送達ドメインとコヒーレンシ・ドメインは必須ではないが同一の広がりを有する(coextensive)ことができ、データ処理システム100の例示的オペレーションの説明では、以下では処理ノード102によって画定された境界を有すると仮定する。
コヒーレンシ・ドメインの実装は、すべてのコヒーレンシ・ドメインよりも少ない参加で要求をサービスすることができる場合、システム相互接続110を介するドメイン間ブロードキャスト通信を制限することによってシステム・トラフィックを低減する。例えば、処理ノード102aの処理装置104aが発行すべきバス読取りオペレーションを有する場合、処理装置104aは、それ自体のコヒーレンシ・ドメイン(例えば処理ノード102a)内のすべての参加者にバス読取りオペレーションをまずブロードキャストするが、他のコヒーレンシ・ドメイン(例えば処理ノード102b)内の参加者にはブロードキャストしないことを選ぶことができる。オペレーションのマスタとして同一のコヒーレンシ・ドメイン内の参加者にのみ送られたブロードキャスト・オペレーションを本明細書では「ローカル・オペレーション」と定義する。ローカル・バス読取りオペレーションを処理装置104aのコヒーレンシ・ドメイン内でサービスすることができる場合、さらなるバス読取りオペレーションのブロードキャストは実施されない。しかし、ローカル・バス読取りオペレーションに対する部分応答および組合せ応答が、処理ノード102aのコヒーレンシ・ドメイン内のみでバス読取りオペレーションをサービスできないことを示す場合、ローカル・コヒーレンシ・ドメインに加えて、1つまたは複数の追加のコヒーレンシ・ドメインを含むようにブロードキャストの範囲を拡張することができる。
基本的な実装では、ローカル・コヒーレンシ・ドメインのみを含む「ローカル」範囲と、SMPデータ処理システム内の他のコヒーレンシ・ドメインのすべてを含む「グローバル」範囲の2つのブロードキャスト範囲を使用することができる。したがって、SMPデータ処理システム内のすべてのコヒーレンシ・ドメインに送られるオペレーションを本明細書では「グローバル・オペレーション」と定義する。重要なことに、オペレーションをサービスするのにローカル・オペレーションが使用されるか、それともより広範囲のオペレーション(例えばグローバル・オペレーション)が使用されるかの如何にかかわらず、キャッシュ・コヒーレンシがSMPデータ処理システム内のすべてのコヒーレンシ・ドメインにわたって維持される。
好ましい実施形態では、オペレーションの範囲が、バス・オペレーションではローカル/グローバル標識(信号)で示され、一実施形態では、ローカル/グローバル標識(信号)は1ビット・フラグを含むことができる。好ましくは、処理装置104内の転送ロジック212は、オペレーションでのローカル/グローバル標識(信号)の設定に基づいて、ローカル相互接続114を介して受け取ったオペレーションをシステム相互接続110上に転送するか否かを判定する。
V.ドメイン標識
不要なローカル・オペレーションの発行を制限し、それによって動作待ち時間を短縮し、ローカル相互接続上の追加の帯域幅を温存するために、好ましくは、本発明は、関連するメモリ・ブロックのコピーがローカル・コヒーレンシ・ドメインの外部にキャッシュされるか否かを示すドメイン標識をメモリ・ブロックごとに実装する。例えば、図5に、本発明によるドメイン標識の第1の例示的実装を示す。図5に示すように、ダイナミック・ランダム・アクセス・メモリ(DRAM)で実装することのできるシステム・メモリ108が、複数のメモリ・ブロック500を格納する。システム・メモリ108は、各メモリ・ブロック500に関連して、メモリ・ブロック500内に誤りがある場合はそれを訂正するのに使用される関連する誤り訂正コード(ECC)502と、ドメイン標識504とを格納する。本発明のある実施形態では、ドメイン標識504は特定のコヒーレンシ・ドメインを識別することができる(すなわち、コヒーレンシ・ドメインまたはノードIDを指定することができる)が、以下では、ドメイン標識504が、メモリ・コントローラ206がメモリ・ブロック500に対するLPCとして働くときに、関連するメモリ・ブロック500がキャッシュされたとしても同じコヒーレンシ・ドメイン内にのみキャッシュされる場合に(例えば「ローカル」を示すために「1」に)セットされる1ビット標識であると仮定する。そうでない場合、ドメイン標識504は(例えば「グローバル」を示すために「0」に)リセットされる。「ローカル」を示すためのドメイン標識504の設定は、誤った「グローバル」の設定がコヒーレンシ・エラーを誘発しないという点であいまいに実装されることがあるが、オペレーションの不要なグローバル・ブロードキャストを引き起こす可能性がある。
重要なことに、好ましくは、オペレーションに応答してメモリ・ブロックをソーシングするメモリ・コントローラ206(およびL2キャッシュ230)は、要求されたメモリ・ブロックと共に関連するドメイン標識504を送る。
VI.例示的コヒーレンシ・プロトコル
好ましくは、本発明は、上述のデータ送達およびコヒーレンシ・ドメインの実装を活用するように設計されたキャッシュ・コヒーレンシ・プロトコルを実装する。好ましい実施形態では、プロトコル内のキャッシュ・コヒーレンシ状態は、(1)キャッシュがメモリ・ブロックに対するHPCであるかどうかの表示を与えることに加えて、(2)キャッシュされたコピーがメモリ階層レベルのキャッシュの中で一意である(すなわち、システム全体で唯一のキャッシュされたコピーである)かどうか、(3)メモリ・ブロックを求める要求のマスタにキャッシュがメモリ・ブロックのコピーを提供することができるかどうか、およびいつ提供することができるか、(4)メモリ・ブロックのキャッシュされたイメージがLPC(システム・メモリ)の対応するメモリ・ブロックと整合しているかどうか、および(5)(場合によっては)リモート・コヒーレンシ・ドメイン内の別のキャッシュが、合致するアドレスを有するキャッシュ・エントリを保持するかどうかも示す。これらの5つの属性は、例えば、以下の表IIで要約される周知のMESI(Modified, Exclusive, Shared, Invalid)プロトコルの例示的変形例で表すことができる。
A.Ig状態
LPCにアクセスしてメモリ・ブロックが、たとえあったとしてもローカルのみでキャッシュされていることが知られているか否かを判定しなければならないことを回避するために、コヒーレンシ・ドメインに依然としてキャッシュされているメモリ・ブロックのコピーがない場合に、Ig(Invalid global)コヒーレンシ状態が使用されて、ドメイン表示が維持される。本明細書では、Ig状態は、(1)キャッシュ・アレイ内の関連するメモリ・ブロックが無効であること、(2)キャッシュ・ディレクトリ内のアドレス・タグが有効であること、および(3)アドレス・タグで識別されるメモリ・ブロックのコピーが、場合によっては別のコヒーレンシ・ドメイン内にキャッシュされる可能性があることを示すキャッシュ・コヒーレンシ状態と定義される。
Ig状態は、排他的アクセス要求(例えばバスRWITMオペレーション)に応答してそのキャッシュが要求されたメモリ・ブロックを別のコヒーレンシ・ドメイン内の要求側に提供することに応答して、下位レベル・キャッシュで形成される。本発明のある実施形態では、メモリ・ブロックに対するLPCを含むコヒーレンシ・ドメイン内でのみIg状態を形成することが好ましいことがある。そのような実施形態では、要求されたメモリ・ブロックをソーシングするキャッシュに、LPCがそのローカル・コヒーレンシ・ドメイン内にあることを示すために、何らかの機構(例えば、LPCによる部分応答と、後続の組合せ応答)を実装しなければならない。LPCがローカルであるという表示の通信をサポートしない他の実施形態では、排他的アクセス要求に応答してキャッシュがメモリ・ブロックをリモート・コヒーレンシ・ノードにソーシングする任意の時間にIg状態を形成することができる。
Ig状態を含むキャッシュ・ディレクトリ・エントリが潜在的に有用な情報を搬送するので、少なくとも一部の実装では、(例えば、置換のための犠牲キャッシュ・エントリ(victim cache entry)を選択するのに使用される最長時間未使用(LRU)アルゴリズムを修正することによって)Ig状態のエントリをI状態のエントリに勝って優先的に保持することが望ましい。Igディレクトリ・エントリがキャッシュ内に保持されるので、その排他的アクセス要求がIg状態の形成を引き起こしたキャッシュが、Ig状態のメモリ・ブロックのアドレス・タグを保持するキャッシュに通知することなくメモリ・ブロックのそのコピーを割振り解除またはライトバックすることができる点で、あるIgエントリが経時的に「ステール」となることが可能である。そのような場合、ローカル・オペレーションではなくグローバル・オペレーションを発行すべきであることを誤って示す「ステール」Ig状態は、コヒーレンシ・エラーを引き起こさず、普通ならローカル・オペレーションを使用してサービスすることができるあるオペレーションをグローバル・オペレーションとして発行させるに過ぎない。そのような非効率の発生は、「ステール」Igキャッシュ・エントリの偶発的置換によって期間内に(induration)制限される。
いくつかの規則がIgキャッシュ・エントリの選択および置換を支配する。第1に、キャッシュが置換のための犠牲としてIgエントリを選択する場合、(Iエントリが選択されるときとは異なり)Igエントリのキャストアウトが実施される。第2に、メモリ・ブロックをキャッシュにロードさせる要求が同一のキャッシュ内のIgキャッシュ・エントリにヒットする場合、キャッシュは、Igヒットをキャッシュ・ミスとして扱い、選択された犠牲としてIgエントリを用いてキャストアウト・オペレーションを実施する。したがって、キャッシュは、キャッシュ・ディレクトリ内に同一のアドレス・タグの2つのコピーを配置することを回避する。第3に、好ましくは、Ig状態のキャストアウトは、ローカル・オペレーションとして実施され、またはグローバル・オペレーションとして実施される場合、キャストアウト・アドレスのLPCによって無視される。メモリ・ブロックに対するLPCと同じコヒーレンシ・ドメイン内にないキャッシュでIgエントリが形成されることが許可される場合、LPC内のドメイン標識に対する更新は不要である。第4に、好ましくは、Ig状態のキャストアウトは、(キャストアウトを実施するキャッシュに対してローカルである場合)ドメイン標識がLPCに書き戻されるデータレス・アドレス専用オペレーションとして実施される。
本発明によるIg状態の実装は、メモリ・ブロックの有効なコピーがコヒーレンシ・ドメイン内に依然としてキャッシュされるときであっても、コヒーレンシ・ドメイン内のメモリ・ブロックに関するキャッシュされるドメイン標識を維持することにより、通信効率を改善する。その結果、メモリ・ブロックに対するHPCは、リモート・コヒーレンシ・ドメインからの排他的アクセス要求(例えばバスRWITMオペレーション)を、要求を再試行し、LPCへの要求されたメモリ・ブロックのプッシュを実施することなく、サービスすることができる。
B.Sr状態
以下で説明するオペレーションでは、共有される要求メモリ・ブロックをSrコヒーレンシ状態に保持する下位レベル・キャッシュが、要求側マスタと同じドメイン内に位置するかどうかを判定するのに役立つ。一実施形態では、要求側マスタと同じドメイン内の「ローカル」Srスヌーパの存在を、要求メモリ・ブロックをSrコヒーレンシ状態に保持する下位レベル・キャッシュのスヌーパの応答挙動によって示すことができる。例えば、バス・オペレーションがドメイン境界を横切ったかどうかを示す範囲標識(例えばマスタの明示的ドメイン識別子または単一のローカル/非ローカル・ビット)を各バス・オペレーションが含むと仮定すると、共有メモリ・ブロックをSrコヒーレンシ状態に保持する下位レベル・キャッシュは、同一のデータ・ソーシング・ドメイン内のマスタによる要求に対してのみSr状態の要求を肯定する部分応答を提供することができ、その他のすべての要求に対してS状態を示す部分応答を提供することができる。そのような実施形態では、応答挙動は、以下の表IIIに示すように要約することができる。表IIIでは、メモリ・ブロックの実際のキャッシュ状態とは異なる可能性がある部分応答を指定するのにダッシュ(’)表記を使用する。
上記の表IIIに記載の応答挙動を仮定すると、データ源として働くことのできるSMPデータ処理システム内に分散されるメモリ・ブロックの共有コピーの数を増加させることにより、共有データに関する平均データ待ち時間を著しく短縮することができる。
VII.例示的オペレーション
次に図6〜21を全般的に参照して、プロセッサ・コア200、L2キャッシュ230、およびI/Oコントローラ214の要求をサービスすることに関係する論理ステップを示すいくつかの高レベル論理流れ図を与える。具体的には、図6〜9は、要求のマスタ内の様々なプロセスを示し、図10〜21は、ローカル相互接続およびシステム相互接続114、110を介して要求を通信およびサービスすることに関係するオペレーションを示す。相互接続110、114は、必ずしもバス式相互接続ではないが、本明細書では、そのようなオペレーションをキャッシュ・オペレーションまたはCPU(プロセッサ)オペレーションと区別するために、「バス・オペレーション」(例えばバス読取りオペレーション、バス書込みオペレーションなど)と呼ぶ.論理流れ図として、これらの図はオペレーションの厳密な順序(chronology)を伝えるものではなく、図示するオペレーションのうちの多くを同時に実施することができ、または図示するのとは異なる順序で実施できることを理解されたい。
A.CPUオペレーションおよびキャッシュ・オペレーション
まず図6を参照すると、本発明によるデータ処理システムでプロセッサ読取り値オペレーションをサービスする例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスはブロック600で始まり、ブロック600は、L2キャッシュ230内のマスタ232が、関連するプロセッサ・コア200から読取り要求を受け取ることを表す。読取り要求の受信に応答して、マスタ232は、ブロック602で、要求されたメモリ・ブロックがL2キャッシュ・ディレクトリ302内でM、Me、Tx(例えばT、Tn、Te、またはTen)、Sr、またはS状態のいずれかに保持されているか否かを判定する。そうである場合、ブロック624に図示するように、マスタ232は、L2キャッシュ・アレイ300にアクセスして、要求されたメモリ・ブロックを取得し、要求されたメモリ・ブロックを要求側プロセッサ・コア200に供給する。その後、プロセスはブロック626で終了する。
ブロック602に戻ると、要求されたメモリ・ブロックがL2ディレクトリ302内でM、Me、Tx、S、またはSr状態のいずれかに保持されていない場合、ブロック604で、既存のキャッシュ・ラインのキャストアウトが、要求されたメモリ・ブロックをL2キャッシュ230内に収容することが必要であるか否かの判定も行う。一実施形態では、要求側プロセッサのL2キャッシュ230から退去させるための犠牲として選択されたメモリ・ブロックが、M、T、Te、Tn、またはIgコヒーレンシ状態のいずれかであるとしてL2ディレクトリ302内でマークされる場合、ブロック604および後続の図中の同様のブロックでキャストアウト・オペレーションが必要である。ブロック604でのキャストアウトが必要であるという判定に応答して、ブロック606で示すように、キャッシュ・キャストアウト・オペレーションが実施される。同時に、マスタ232が、ブロック610で、バス読取りオペレーションをローカル・オペレーションまたはグローバル・オペレーションとして発行するか否かを判定する。
各バス・オペレーションが当初ローカル・オペレーションとして発行され、ローカル・オペレーションとして1度だけ発行される第1実施形態では、ブロック610に示す判定(および後続の図中の同様の判定)は、バス読取りオペレーションがローカル・バス読取りオペレーションとして以前に発行されたか否かについてのマスタによる判定を単に表すことができる。ローカル・バス・オペレーションを再試行できる第2代替実施形態では、ブロック610で示す判定は、バス読取りオペレーションが回数のしきい値より多く以前に発行されたか否かについてのマスタによる判定を表すことができる。第3代替実施形態では、ブロック610で行われる判定は、ローカル・オペレーションが成功する可能性が高い(例えば、それがHPCである、またはローカル・コヒーレンシ・ドメイン内のHPCを見つける可能性が高い)か否かについてのマスタによる予測に基づくことができる。
ブロック610での、ローカル・バス読取りオペレーションではなく、グローバル・バス読取りオペレーションを発行するという判定に応答して、プロセスはブロック610から、以下で説明するブロック620に進む。一方、ブロック610で、ローカル・バス読取りオペレーションを発行するという判定が行われた場合、ブロック612に示し、図10を参照しながら以下で説明するように、マスタ232は、そのローカル相互接続114上でローカル・バス読取りオペレーションを開始する。ローカル・バス読取りオペレーションは、マスタ232を含むローカル・コヒーレンシ・ドメイン(例えば処理ノード102)内でのみブロードキャストされる。マスタ232が「成功」を示すCRを受け取った場合(ブロック614)、ブロック624に示すように、マスタ232は、要求されたメモリ・ブロックを受け取り、要求されたメモリ・ブロック(またはその少なくとも一部)を要求側プロセッサ・コア200に返す。その後、プロセスはブロック626で終了する。
ブロック614に戻ると、ローカル・バス読取りオペレーションに関するCRが「成功」を示さない場合、マスタ232は、ブロック616で、ローカル・コヒーレンシ・ドメイン内でバス読取りオペレーションをサービスすることができず、したがってグローバル・バス読取りオペレーションとして再発行すべきことをCRが明確に示しているか否かを判定する。そうである場合(例えば、別のコヒーレンシ・ドメイン内のL2キャッシュ230が要求されたメモリ・ブロックをM状態またはMe状態に保持する場合)、プロセスは、以下で説明するブロック620に進む。一方、ローカル・コヒーレンシ・ドメイン内でバス読取りオペレーションをサービスできないことをCRが明確に示していない場合、プロセスはブロック616からブロック610に戻る。ブロック610は、ローカル・バス読取りオペレーションを発行するか否かをマスタ232が再び判定することを示す。この場合、マスタ232は、判定において、CRによって提供された任意の追加の情報を利用することができる。ブロック610に続いて、プロセスは、上述のブロック612またはブロック620に進む。
ブロック620は、図11〜12を参照しながら以下で説明するように、マスタ230がグローバル・バス読取りオペレーションを発行することを示す。グローバル・バス読取りオペレーションのCRがブロック622で「成功」を示さない場合、マスタ232は、「成功」を示すCRを受け取るまで、ブロック620でグローバル・バス読取りオペレーションを反復する。グローバル・バス読取りオペレーションのCRが「成功」を示す場合、マスタ232は、ブロック624で、要求されたメモリ・ブロックを受け取り、要求されたメモリ・ブロック(または少なくともその一部)を要求側プロセッサ・コア200に返す。その後、プロセスはブロック626で終了する。
したがって、同一のコヒーレンシ・ドメイン内のプロセスおよびそのデータ間のアフィニティを仮定すると、図6に示すCPU読取りオペレーションなどのオペレーションを、要求側マスタのコヒーレンシ・ドメインに範囲が限定されたブロードキャスト通信を使用して、頻繁にサービスすることができる。したがって、上述のデータ送達ドメインとコヒーレンシ・ドメインとの組合せは、ブロードキャスト通信の範囲を限定することにより、データ・アクセス待ち時間を改善するだけでなく、システム相互接続(およびその他のローカル相互接続)上のトラフィックも低減させる。
次に図7〜8を参照すると、本発明によるデータ処理システムでプロセッサ更新オペレーションをサービスする例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、L2キャッシュ230が同一の処理装置104内のプロセッサ・コア200のうちの関連する1つによる更新要求を受け取ることに応答して、ブロック700で始まる。更新要求の受信に応答して、ブロック702に示すように、L2キャッシュ230のマスタ232は、L2キャッシュ・ディレクトリ302にアクセスし、更新要求によって指定される要求アドレスによって参照されるメモリ・ブロックがM状態のL2キャッシュ230内にキャッシュされるかどうかを判定する。そうである場合、ブロック704で示すように、マスタ232は、プロセッサ・コア200によって供給される新しいデータでL2キャッシュ232内のメモリ・ブロックを更新する。その後、更新プロセスはブロック706で終了する。
ブロック710〜712に示すように、そうではなく、L2キャッシュ230が指定のメモリ・ブロックをMe状態に保持することをL2キャッシュ・ディレクトリ302が示す場合、ブロック704に示すように、マスタ232は、メモリ・ブロックを更新することに加えて、要求されたメモリ・ブロックに関する状態フィールド306をM状態に更新する。その後に、プロセスはブロック706で終了する。
図8へのページ結合子Aに続いて、L2キャッシュ230が要求されたメモリ・ブロックに対するHPCであり、要求されたメモリ・ブロックが、場合によっては1つまたは複数の他のL2キャッシュ230内に保持される可能性があることを意味する、TまたはTe状態の要求されたメモリ・ブロックをL2キャッシュ230が保持することをL2キャッシュ・ディレクトリ302が示す場合(ブロック720)、マスタ232は、メモリ・ブロックに対する要求された更新を実施するために、要求されたメモリ・ブロックへの排他的アクセスを得なければならない。要求されたメモリ・ブロックへの排他的アクセスをマスタ232が得るプロセスを、ブロック722およびその後のブロックに示す。
このプロセスによれば、ブロック722に示すように、マスタ232は、L2キャッシュ・ディレクトリ302の関連する状態フィールド306内の要求されたメモリ・ブロックの状態をM状態に更新する。このアップグレードでは、他のL2キャッシュ230にまず通知することなくキャッシュ状態が許容される。HPCとして、L2キャッシュ230は、要求されたメモリ・ブロックへの排他的アクセスをそれ自体に与える権限を有するからである。ブロック724に示すように、L2キャッシュ230のスヌーパ236は、要求されたメモリ・ブロックの所有権を他のマスタがそれによってシークしている、そのローカル相互接続114上にスヌープされた競合するDClaimオペレーションが存在するならばそれに「ダウングレード」部分応答を提供する。こうした部分応答は、他の要求側がそのようなどんな競合オペレーションもバスRWITMオペレーションとして再発行しなければならないことを示す。さらに、ブロック726に示すように、マスタ232は、図19を参照しながら以下で説明するように、システム相互接続110上にグローバル・バス・キル・オペレーションを発行し、メモリ・ブロックの他の任意のキャッシュされたコピーを無効にする。
次に、マスタ232は、ブロック790および728で、バス・キル・オペレーションが要求されたメモリ・ブロックの他のすべてのキャッシュされたコピーを首尾よく無効にしたことをバス・キル・オペレーションに対するCRが示すか否か、または追加のローカルまたはグローバル「クリーンアップ」(すなわち、他のキャッシュされたコピーの無効化)が必要かどうかを判定する。追加のクリーンアップが不要であることCRが示す場合、プロセスは、ページ連結子Cを通じて、前述の図7のブロック704に進む。追加のクリーンアップが必要であることをCRが示す場合、マスタ232は、要求されたメモリ・ブロックの他のキャッシュされたコピーがそのローカル・コヒーレンシ・ドメイン内に完全にあることをCRが示すかどうか、または要求されたメモリ・ブロックの少なくとも1つのコピーがマスタ232のローカル・コヒーレンシ・ドメインの外部にキャッシュされるかどうかを追加で判定する(ブロック790および728)。要求されたメモリ・ブロックの残りのキャッシュされた各コピーがマスタ232のローカル・コヒーレンシ・ドメイン内にあることをCRが示す場合、要求側L2キャッシュ230のスヌーパ236は、引き続きアクティブ・バスDClaimオペレーションをダウングレードし(ブロック786)、要求側L2キャッシュ230のマスタ232は、メモリ・ブロックの他のすべてのキャッシュされたコピーが無効となるまで、マスタ232のローカル・コヒーレンシ・ドメインに範囲が限定されたローカル・バス・キル・オペレーションを引き続き発行する(ブロック788)。要求されたメモリ・ブロックの少なくとも1つの残りのキャッシュされたコピーがリモート・コヒーレンシ・ドメイン内にあることをCRが示す場合、プロセスは、前述のブロック724に戻る。
次にブロック780を参照すると、要求されたメモリ・ブロックがTnまたはTen状態のうちの1つに保たれることをL2キャッシュ・ディレクトリ302へのアクセスが示す場合、マスタ232は、要求側L2キャッシュ230が要求されたメモリ・ブロックに対するHPCであること、および要求されたメモリ・ブロックの他の任意のキャッシュされたコピーがそのローカル・コヒーレンシ・ドメイン内のキャッシュによって保たれることを認識する。したがって、ブロック784で示すように、マスタ232は、L2キャッシュ・ディレクトリ302の関連する状態フィールド306内の要求されたメモリ・ブロックの状態をM状態に更新する。さらに、要求側L2キャッシュ230のスヌーパ236は、「ダウングレード」部分応答を、そのローカル相互接続114上にスヌープされた任意の競合するDClaimオペレーションに提供し(ブロック786)、要求側L2キャッシュ230のマスタ232は、メモリ・ブロックの他のすべてのキャッシュされたコピーが無効となるまで、マスタ232のローカル・コヒーレンシ・ドメインに範囲が限定されたローカル・バス・キル・オペレーションを引き続き発行する(ブロック788)。ローカル・バス・キル・オペレーションに対するCRを参照することにより、さらなるローカル・クリーンアップが不要であるとマスタ232が判定した場合(ブロック790)、プロセスは、ブロック728およびページ連結子Cを通過して、前述のブロック704まで進む。
次に図7のブロック730を参照すると、要求されたメモリ・ブロックがSrまたはS状態に保たれることをL2キャッシュ・ディレクトリ302へのアクセスが示す場合、要求側L2キャッシュ230は、要求されたメモリ・ブロックに対するHPCではなく、マスタ232は、メモリ・ブロックを更新する前に、HPCが存在する場合はHPCから、HPCが存在しない場合はLPCから、要求されたメモリ・ブロックの所有権を得なければならない。
したがって、マスタ232は、まずブロック731で、バスDClaimオペレーションをローカル・オペレーションとして発行するか、それともグローバル・オペレーションとして発行するかを判定する。マスタ232がグローバル・バスDClaimオペレーションを発行するように判定を行った場合、プロセスは、前述のブロック740に進む。ブロック731での、バスDClaimオペレーションをローカル・オペレーションとして発行するという判定に応答して、図16を参照しながら以下でより詳細に説明するように、マスタ232は、ブロック732でローカル・バスDClaimオペレーションを発行する。次いで、マスタ232は、判定ブロック734、736、および738の集合によって表される、ローカル・バスDClaimオペレーションのCRの受信を待つ。CRが「再試行」を示す場合(ブロック734)、プロセスは、前述のブロック731に戻る。あるいは、バスDClaimオペレーションをローカル・コヒーレンシ・ドメインでサービスできないことをCRが明確に示す場合(ブロック736)、プロセスは、以下で説明するブロック740に進む。あるいは、別の要求者が要求されたメモリ・ブロックの所有権をバスDClaimオペレーションを介して得たことを意味する「ダウングレード」をCRが示す場合、プロセスは、以下で説明するブロック748に進む。あるいは、ローカル・バスDClaimオペレーションに基づいて、HPCによって要求されたメモリ・ブロックの所有権がマスタ232に与えられたことをCRが示す場合、プロセスはページ連結子Dを通過して、前述の図8のブロック790および後続のブロックに進む。
図17に関して以下で説明するように、ブロック740は、マスタ232がグローバル・バスDClaimオペレーションを発行することを示す。次に、マスタ232は、ブロック742〜744で、グローバル・バスDClaimオペレーションに対するCRが、グローバル・バスDClaimオペレーションが成功したことを示すか、再試行すべきことを示すか、それともRWITMオペレーションに「ダウングレード」されたことを示すかを判定する。バスDClaimオペレーションを再試行すべきことをCRが示す場合(ブロック742)、マスタ232は、ブロック740でグローバル・バスDClaimオペレーションを再発行し、「再試行」以外のCRを受け取るまでそのようにし続ける。別の要求者が要求されたメモリ・ブロックを目標とするバスDClaimオペレーションを首尾よく発行したことに応答して、グローバル・バスDClaimオペレーションがダウングレードされたことを示すCRを受け取った場合、プロセスは、以下で説明するブロック746に進む。あるいは、グローバル・バスDClaimオペレーションに基づいて、HPCによって要求されたメモリ・ブロックの所有権がマスタ232に与えられたことをCRが示す場合、プロセスは、ページ連結子Dを通過して、前述の図8のブロック790および後続のブロックに進む。
ブロック746は、要求側L2キャッシュ230のマスタ232が、バスRWITMオペレーションをローカル・オペレーションとして発行するか、それともグローバル・オペレーションとして発行するかを判定することを示す。マスタ232がグローバルRWITMオペレーションを発行することを選んだ場合、プロセスは、以下で説明するブロック754に進む。しかし、マスタ232がローカル・バスRWITMオペレーションを発行することを選んだ場合、プロセスはブロック748に進む。ブロック748は、マスタ232がローカル・バスRWITMオペレーションを発行し、関連するCRを待つことを示す。ブロック750で示すように、CRが「再試行」を示す場合、プロセスはブロック746に戻る。ブロック746は、再試行CRで提供される追加の情報が存在する場合はそれを使用して、ローカルRWITMオペレーションを発行するか、それともグローバルRWITMオペレーションを発行するかをマスタ232が再び判定することを示す。ブロック748で発行されたローカル・バスRWTIMオペレーションに対するCRが「再試行」を示さず(ブロック750)、要求されたメモリ・ブロックの所有権を得る際にバスRWITMオペレーションが成功した(ブロック752)ことを示す場合、プロセスはページ連結子Dを通過して、前述の図8のブロック790に進む。ブロック752で、オペレーションをローカル・コヒーレンシ・ドメイン内でサービスできないことをローカル・バスRWITMオペレーションに対するCRが示すとマスタ232が判定した場合、プロセスはブロック754および後続のブロックに進む。
ブロック754および756は、図14〜15を参照しながら以下で説明するように、「再試行」以外のCRを受け取るまで、要求されたメモリ・ブロックに対するグローバル・バスRWITMオペレーションをマスタ232が反復的に発行することを示す。要求されたメモリ・ブロックの所有権をマスタ232が得ることに成功したことを示す非再試行CRをマスタ232が受け取ったことに応答して(ブロック756)、プロセスはページ連結子Dを通過して、前述のブロック790および後続のブロックに進む。
次にブロック760を参照すると、ブロック702、710、720、5502、および730で否定的な判定が行われた場合、L2キャッシュ230は、要求されたメモリ・ブロックの有効なコピーを保持しない。したがって、ブロック760および770に示すように、L2キャッシュ230は、必要ならキャッシュ・キャストアウト・オペレーションを実施して、要求されたメモリ・ブロックに対してキャッシュ・ラインを割り振る。その後、プロセスは、前述のブロック746および後続のブロックに進む。
次に図9を参照すると、本発明によるデータ処理システムでI/O書込みオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、接続されたI/O装置216によるI/O書込み要求を処理装置104のI/Oコントローラ214で受け取ったことに応答して、ブロック1000で始まる。I/O書込み要求の受信に応答して、I/Oコントローラ214は、ブロック1002で、要求されたメモリ・ブロックを得るためにグローバル・バス書込みオペレーションを発行するか、それともローカル・バス書込みオペレーションを発行するかを判定する。
I/Oコントローラ214がグローバル・バス書込みオペレーションを発行することを選んだ場合、プロセスは、以下で説明するブロック1020に進む。しかし、I/Oコントローラ214がローカル・バス書込みオペレーションを発行することを選んだ場合、プロセスはブロック1004に進む。ブロック1004は、I/Oコントローラ214が、図20を参照して以下で説明するようにローカル・バス書込みオペレーションを発行し、次いで関連するCRを待つことを示す。ブロック1006で示すように、再試行した場合にローカル・コヒーレンシ・ドメイン内でローカル・バス書込みオペレーションを明確にサービスできることを意味する「再試行ローカル(retry local)」をCRが示す場合、I/Oコントローラ214は、ブロック1004でローカル・バス書込みオペレーションを再発行する。I/Oコントローラ214がより多義的な情報、例えば単なる「再試行」を与えるCRを受け取った場合(ブロック1008)、プロセスは、前述のブロック1002に戻る。あるいは、バス書込みオペレーションをローカル・コヒーレンシ・ドメイン内でサービスできないことを明確に示すCRをI/Oコントローラ214が受け取った場合(ブロック1010)、プロセスは、以下で説明するブロック1020に進む。最後に、要求されたメモリ・ブロックの所有権がI/Oコントローラ214に与えられたことを示すCRをI/Oコントローラ214が受け取った場合、プロセスは、ブロック1004からブロック1006、1008、および1010を通じてブロック1024および後続のブロックに進む。ブロック1024は、以下で説明するように、I/Oコントローラ214が、必要ならクリーンアップ・オペレーションを実施することを示す。
次にブロック1020を参照すると、図9を参照しながら以下で説明するように、I/Oコントローラ214がグローバル・バスI/O書込みオペレーションを発行する。ブロック1022に示すように、I/Oコントローラ214は、「再試行」以外のCRを受け取るまで、グローバル・バスI/O書込みオペレーションを発行し続ける。ブロック1020で発行されたグローバル・バス書込みオペレーションに関するCRが、要求されたメモリ・ブロックの有効なコピーを他のスヌーパが保持していないことを示す場合(ブロック1024および1040)、プロセスはブロック1026で終了し、接続されたI/O装置216が、要求されたメモリ・ブロックに書き込むことができる。しかし、ブロック1024で、要求されたメモリ・ブロックの少なくとも1つのステールであるキャッシュされたコピーがそのローカル・コヒーレンシ・ドメインの外部のままであることをCRが示すとI/Oコントローラ214が判定した場合、I/Oコントローラ214は、要求されたメモリ・ブロックのステールであるキャッシュされたコピーがローカル・コヒーレンシ・ドメインの外部に残っていないことを示すCRをブロック1024で受け取るまで、ブロック1030に示すように、I/Oコントローラ214がスヌープする何らかの競合するDClaimオペレーションをダウングレードし、ブロック1032に示すように、グローバル・バス・キル・オペレーションを発行することによってグローバル「クリーンアップ」を実施する。
ブロック1040で、要求されたメモリ・ブロックのステールであるキャッシュされたコピーがローカル・コヒーレンシ・ドメインの外部に残っていないが、要求されたメモリ・ブロックの少なくとも1つのステールであるキャッシュされたコピーがそのローカル・コヒーレンシ・ドメイン内に残ることをCRが示すとI/Oコントローラ214が判定した場合、要求されたメモリ・ブロックのステールであるキャッシュされたコピーがデータ処理システム100内に残っていないことを示すCRを受け取るまで(ブロック1024および1040)、I/Oコントローラ214は、ブロック1042に示すように、コントローラ214がスヌープする任意の競合するDClaimオペレーションをダウングレードし、ブロック1044に示すように、ローカル・バス・キル・オペレーションを発行することによってローカル「クリーンアップ」を実施する。クリーンアップ・オペレーションが完了した後、プロセスはブロック1041で終了する。
上述のように、TnおよびTenコヒーレンシ状態の実装は、場合によっては共有されるメモリ・ブロックがローカル・コヒーレンシ・ドメイン内にのみさらにキャッシュされるかどうかの表示を与える。したがって、メモリ・ブロックをTnまたはTen状態の一方に保持するキャッシュとしての、同一のコヒーレンシ・ドメイン内の要求側は、メモリ・ブロックに対する排他的アクセス・オペレーション(例えば、バスDClaim、バスRWITM、バスDCBZ、またはバス書込みオペレーション)を発行したとき、バス・キル・オペレーションなどのブロードキャスト・オペレーションの範囲をローカル・コヒーレンシ・ドメインに制限することができ、相互接続帯域幅の使用が低減されるので有利である。
B.相互接続オペレーション
次に図10〜21を参照して、例示的データ処理システム100での例示的ローカルおよびグローバル・バス・オペレーションを説明する。まず図10を参照すると、本発明によるデータ処理システムでローカル・バス読取りオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。プロセスは、例えば図6のブロック612で、L2キャッシュ230がそのローカル相互接続114上にローカル・バス読取りオペレーションを発行することで、ブロック1300で始まる。ローカル・バス読取りオペレーションをスヌープすることに応答してスヌーパ222、236が分散応答ロジック210に提供することのできる様々な部分応答が、判定ブロック1302、1310、1312、1314、1320、1330、1332、1340、1344、1346、および1348の結果により図10に表されている。これらの部分応答は、ローカル・バス読取りオペレーションに関するCRを決定する。
ブロック1302に示すように、L2キャッシュ230が要求されたメモリ・ブロックをMまたはMe状態に保持することを示す部分応答を有するローカル・バス読取りオペレーションをL2キャッシュ230のスヌーパ236が肯定した場合、プロセスは、ブロック1302からブロック1304に進む。ブロック1304は、ローカル・バス読取りオペレーションに応答する、要求側L2キャッシュ230と肯定側L2キャッシュ230のオペレーションを示す。具体的には、肯定側L2キャッシュ230内のスヌーパ236が、要求されたメモリ・ブロックのキャッシュ状態をMからTnに、またはMeからTenに更新する。さらに、肯定側L2キャッシュ230内のスヌーパ236は、CRの受信前に、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始することができる(すなわち、「早期(early)」データを提供する)。受信時に、要求側L2キャッシュ230内のマスタ232は、L2キャッシュ・アレイ300内の要求されたメモリ・ブロックをSr状態に配置する。ブロック1308で示すように、プロセスは、分散応答ロジック210が「成功」を示すCRを生成して終了する。
一方、L2キャッシュ230のスヌーパ236が、L2キャッシュ230が要求されたメモリ・ブロックをTx状態に保持することを示す部分応答を有するローカル・バス読取りオペレーションを肯定し(ブロック1310)、かつSr’スヌーパ236もバス読取りオペレーションを肯定した場合(ブロック1312)、プロセスはブロック1318に進む。ブロック1318は、Sr’スヌーパ236が、CRの受信前に、要求されたメモリ・ブロックのキャッシュ状態をSに更新し、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始する(すなわち、「早期」データを提供する)。Txスヌーパ236は不変のままである。要求されたメモリ・ブロックの受信時に、要求側L2キャッシュ230内のマスタ232は、L2キャッシュ・アレイ300内の要求されたメモリ・ブロックをSr状態に配置する。ブロック1308で示すように、プロセスは、分散応答ロジック210が「成功」を示すCRを生成して終了する。
部分応答の複合体が、ローカル・バス読取りオペレーションを肯定するTxスヌーパ236を含み(ブロック1310)、バス読取りオペレーションを肯定するSr’スヌーパ236を含まず(ブロック1312)、かつSr’スヌーパ236が場合によってはローカル・データ送達ドメイン内に隠される可能性があることを示す部分応答(例えば再試行のタイプ)を提供するスヌーパ236を含む(ブロック1314)場合、プロセスはブロック1316に進む。ブロック1316は、バス読取りオペレーションを肯定したTxスヌーパ236が、CRの受信後に要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始し(すなわち、「後期(late)」データを提供し)、要求されたメモリ・ブロックをTx状態に保持することを表す。受信時に、要求側L2キャッシュ230内のマスタ232は、L2キャッシュ・ディレクトリ300内の要求されたメモリ・ブロックをS状態に配置する(Sr’スヌーパ236が隠される可能性があり、ただ1つのSr’スヌーパ236が、要求されたメモリ・ブロックに対して各データ送達ドメインで許可されるからである)。ブロック1308で示すように、プロセスは、分散応答ロジック210が「成功」を示すCRを生成して終了する。
部分応答の複合体が、ローカル・バス読取りオペレーションを肯定するTまたはTeスヌーパ236を含み(ブロック1310)、バス読取りオペレーションを肯定するSr’スヌーパ236を含まず(ブロック1312)、かつSr’スヌーパ236を場合によっては隠す可能性がある部分応答を提供するスヌーパ236を含まない(ブロック1314)場合、プロセスはブロック1306に進む。ブロック1306は、バス読取りオペレーションを肯定したTまたはTeスヌーパ236が、CRの受信後に要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始し(すなわち、「後期」データを提供し)、要求されたメモリ・ブロックをTまたはTe状態に保持することを表す。受信時に、要求側L2キャッシュ230内のマスタ232は、L2キャッシュ・アレイ300内の要求されたメモリ・ブロックをSr状態に配置する(ローカル・データ送達ドメイン内の要求されたメモリ・ブロックに対して他のSr’スヌーパ236が存在しないからである)。ブロック1308で示すように、プロセスは、分散応答ロジック210が「成功」を示すCRを生成して終了する。
次にブロック1320を参照すると、M、Me、またはTxスヌーパ236がローカル・バス読取りオペレーションを肯定しないが、Sr’スヌーパ236がローカル・バス読取りオペレーションを肯定する場合、ブロック1322に従ってローカル・バス読取りオペレーションがサービスされる。具体的には、バス読取りオペレーションを肯定するSr’スヌーパ236が、CRの受信前に、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始し、L2キャッシュ・ディレクトリ302内の要求されたメモリ・ブロックの状態をS状態に更新する。要求側L2キャッシュ230内のマスタ232は、そのL2キャッシュ・アレイ300内の要求されたメモリ・ブロックをSr状態に配置する。ブロック1308に示すように、プロセスは、分散応答ロジック210が「成功」を示すCRを生成して終了する。
次にブロック1324を参照すると、M、Me、Tx、またはSr’スヌーパ236がローカル・バス読取りオペレーションを肯定しない場合、L2キャッシュ230は、L2キャッシュ230が要求されたメモリ・ブロックのアドレス・タグをIg状態に保持することを示すローカル・バス読取りオペレーションを肯定する部分応答を提供する。M、Me、Tx、またはSr’スヌーパ236が、不完全な部分応答によって場合によっては隠されることがない場合(ブロック1332)、ブロック3164で示すように、分散応答ロジック210は、「go global」CRを提供する。一方、Igスヌーパ236がローカル・バス読取りオペレーションを肯定し、部分応答の複合体が、M、Me、Tx、またはSr’スヌーパ236が場合によっては隠されることを示す場合、ブロック1342で示すように、応答ロジック210は、「再試行」CRを生成する。
次にブロック1330を参照すると、M、Me、Tx、Sr’、またはIgスヌーパ236がローカル・バス読取りオペレーションを肯定せず、さらに、スヌーパ222が要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答を提供しない場合、プロセスは、前述のブロック1332に進む。しかし、M、Me、Tx、Sr’、またはIgスヌーパ236がローカル・バス読取りオペレーションを肯定せず、さらに、スヌーパ222が要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答を提供する場合、プロセスはブロック1340に進む。
次にブロック1340を参照すると、スヌーパ222が要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答を提供するが、スヌーパ222がローカル・バス読取りオペレーションを肯定しない場合、ブロック1342に示すように、応答ロジック210は、「再試行」を示すCRを生成する。しかし、スヌーパ222がローカル・バス読取りオペレーションを肯定する場合、プロセスはブロック1344に進む。メモリ・コントローラ・スヌーパ222がバス読取りオペレーションを肯定し、L2キャッシュ・スヌーパ236が要求されたメモリ・ブロックをM、Me、Tx、またはIg状態のうちの1つに保持できることを示す部分応答を提供するが、ローカル・バス読取りオペレーションを肯定しない場合、判定ブロック1344に示すように、応答ロジック210はやはりブロック1342で「再試行」CRを生成する。これらの各ケースでは、バス読取りオペレーションがローカル・オペレーションとして再発行される場合、グローバル・ブロードキャストを用いることなくバス読取りオペレーションをサービスすることができるので、応答ロジック210が「再試行」CRを生成する。
次にブロック1346を参照すると、M、Me、Tx、またはIgスヌーパ236がローカル・バス読取りオペレーションを肯定せず、M、Me、Tx、またはIgスヌーパ236が場合によって隠されることがなく、メモリ・コントローラ・スヌーパ222がローカル・バス読取りオペレーションを肯定する場合、各ブロック1350、1352、および1354で示すように、ローカル・バス読取りオペレーションを肯定するスヌーパ222は、CRに応答して、要求されたメモリ・ブロックおよび関連するドメイン標識504を要求側L2キャッシュ230に提供する。ブロック1350、1352、および1354で示すように、要求側L2キャッシュ230のマスタ232は、CRとドメイン標識504の状態とに従って、要求されたメモリ・ブロックを処理する。具体的には、ブロック1360で、要求されたメモリ・ブロックの修正後コピーをローカル・ドメインの外部にキャッシュできることを意味する「グローバル」にドメイン標識3004がリセットされることをマスタ232が判定した場合、要求側L2キャッシュ230のマスタ232は、要求されたメモリ・ブロックを廃棄し、要求されたメモリ・ブロックに関してI状態にとどまる。さらに、「グローバル」ドメイン標識504に照らして、マスタ232は、マスタ232がバス読取りオペレーションをグローバル・バス読取りオペレーションとして再発行することを意味する「go global」をCRが示すと解釈する(ブロック1364)。
一方、ドメイン標識504が「ローカル」を示すようにセットされる場合(ブロック1360)、要求側キャッシュ230のマスタ232は、CRが「成功」を示すと解釈し(ブロック1308)、要求されたメモリ・ブロックとドメイン標識504をどちらもそのL2キャッシュ・アレイ300内に配置する。マスタ232はまた、要求されたメモリ・ブロックに関連する状態フィールド306を、CRによって示される状態にセットする。具体的には、Sr’スヌーパ236が隠される可能性があることを部分応答、したがってCRが示す場合(ブロック1346)、メモリ・ブロックのただ1つのSrコピーが任意のドメインで許可されるので、要求側L2キャッシュ230は、要求されたメモリ・ブロックをS状態に保持する(ブロック1350)。あるいは、Sr’スヌーパ236が隠される可能性がないが、S’スヌーパ236が隠される可能性があることを部分応答およびCRが示す場合、要求側L2キャッシュ236は、要求されたメモリ・ブロックをSr状態に保持する(ブロック1352)。最後に、Sr’スヌーパ236とS’スヌーパ236がどちらも場合によっては隠される可能性がない場合(ブロック1348)、要求側L2キャッシュ230が、要求されたメモリ・ブロックを保持するシステム全体で唯一のキャッシュであることが保証されるので、要求側L2キャッシュ230は、要求されたメモリ・ブロックをMe状態に保持する(ブロック1354)。
次に図11〜12を参照すると、本発明によるTnおよびTenコヒーレンシ状態を実装するデータ処理システムでグローバル・バス読取りオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。プロセスは、例えば図6のブロック620で、L2キャッシュ230がそのローカル相互接続114上にグローバル・バス読取りオペレーションを発行することで、ブロック1400で始まる。グローバル・バス読取りオペレーションをスヌープすることに応答してスヌーパ222、236が分散応答ロジック210に提供することのできる様々な部分応答が、判定ブロック1402、1410、1412、1414、1420、1430、1440、1442、1444、および1446の結果により図11に表されている。これらの部分応答は、グローバル・バス読取りオペレーションに関するCRを決定する。
ブロック1402に示すように、L2キャッシュ230が要求されたメモリ・ブロックをMまたはMe状態に保持することを示す部分応答を有するグローバル・バス読取りオペレーションをL2キャッシュ230のスヌーパ236が肯定した場合、プロセスは、ブロック1402からページ連結子Jを通じて図12のブロック1480に進む。ブロック1480は、グローバル・バス読取りオペレーション内の範囲標識で示されるように、MまたはMeスヌーパ236が要求側L2キャッシュ230にとってローカル(すなわち、同一のコヒーレンシ・ドメイン内)であるかどうかに応じて、MまたはMeスヌーパ236がそのキャッシュ状態を異なる仕方で更新することを表す。どちらの場合も、肯定側L2キャッシュ230内のスヌーパ236は、CRの受信前に、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始することができ(すなわち、「早期」データを提供する)、受信時に、要求側L2キャッシュ230内のマスタ232は、そのL2キャッシュ・アレイ300内の要求されたメモリ・ブロックをSr状態に配置する(ブロック1481および1482)。しかし、スヌーパ236が要求側L2キャッシュ230にとってローカルではない場合、肯定側L2キャッシュ230内のスヌーパ236が要求されたメモリ・ブロックの状態をMからTに、またはMeからTeに更新し(ブロック1481)、スヌーパ236がローカルである場合、要求側メモリ・ブロックの状態をMからTnに、またはMeからTenに更新する(ブロック1482)。次いで、プロセスは、ページ連結子Nを通じて図11に戻り、ブロック1408に示すように、分散応答ロジック210が「成功」を示すCRを生成して終了する。
L2キャッシュ230が要求されたメモリ・ブロックをT、Tn、Te、またはTen状態(ブロック1410では一般的にTxと示す)のいずれかに保持することを示す部分応答を有するグローバル・バス読取りオペレーションをL2キャッシュ230のスヌーパ236が肯定し、Sr’スヌーパ236もバス読取りオペレーションを肯定した場合(ブロック1412)、プロセスはページ連結子Mを通じてブロック1492に進む。ブロック1492は、グローバル・バス読取りオペレーションの範囲標識が、スヌーパ236が要求側L2キャッシュ230のコヒーレンシ・ドメイン内であることを示したかどうかに応じて、肯定側Txスヌーパ236が、要求されたメモリ・ブロックの状態を異なる仕方で更新することを示す。どちらの場合も、Sr’スヌーパ236は、CRの受信前に、要求されたメモリ・ブロックの状態をSに更新し、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始する(ブロック1494および1495)。受信時に、要求側L2キャッシュ230内のマスタ232は、L2キャッシュ・アレイ300内の要求されたメモリ・ブロックをSr状態に配置する(ブロック1494および1495)。さらに、必要なら、スヌーパ236が要求側L2キャッシュ230にとってローカルではない場合、Txスヌーパ236は、要求されたメモリ・ブロックの状態をTnからTに、またはTenからTeに更新するが(ブロック1494)、Txスヌーパ236が要求側L2キャッシュにとってローカルである場合、要求されたメモリ・ブロックの状態を不変のままにする(ブロック1495)。次いで、プロセスは、ページ連結子Nを通じて図11に戻り、ブロック1408に示すように、分散応答ロジック210が「成功」を示すCRを生成して終了する。
部分応答の複合体が、グローバル・バス読取りオペレーションを肯定するTxスヌーパ236を含み(ブロック1410)、バス読取りオペレーションを肯定するSr’スヌーパ236を含まず(ブロック1412)、かつ部分応答(例えば再試行のタイプ)を提供するスヌーパ236が、Sr’スヌーパ236がローカル・データ送達ドメイン内に存在する可能性を示すが、グローバル・バス読取りオペレーションを肯定しなかった場合、プロセスは、ページ連結子Lを通じて図12のブロック1488に進む。ブロック1488は、グローバル・バス読取りオペレーションの範囲標識が、スヌーパ236が要求側L2キャッシュ230のコヒーレンシ・ドメイン内であることを示したかどうかに応じて、肯定側Txスヌーパ236が、要求されたメモリ・ブロックの状態を異なる仕方で更新することを示す。どちらの場合も、グローバル・バス読取りオペレーションを肯定したTxスヌーパ236は、CRの受信後に、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始する(ブロック1489および1490)。受信時に、要求側L2キャッシュ230内のマスタ232は、L2キャッシュ・ディレクトリ300内の要求されたメモリ・ブロックをS状態に配置する(Sr’スヌーパ236がローカル・ドメイン内に隠される可能性があるので、要求側キャッシュ236およびただ1つのSr’スヌーパ236が、要求されたメモリ・ブロックに対して各ドメインで許可される)。さらに、必要なら、Txスヌーパ236は、スヌーパ236が要求側L2キャッシュ230にとってローカルではない場合、要求されたメモリ・ブロックの状態をTnからTに、またはTenからTeに更新し(ブロック1489)、Txスヌーパ236が要求側L2キャッシュにとってローカルである場合、要求されたメモリ・ブロックの状態を不変のままにする(ブロック1490)。次いで、プロセスは、ページ連結子Nを通じて図11に戻り、ブロック1408に示すように、分散応答ロジック210が「成功」を示すCRを生成して終了する。
部分応答の複合体が、グローバル・バス読取りオペレーションを肯定するTxスヌーパ236を含み、バス読取りオペレーションを肯定するSr’スヌーパ236を含まず、かつSr’スヌーパ236を隠す可能性がある部分応答を提供するスヌーパ236を含まない場合、プロセスは、ページ連結子Kを通じて図12のブロック1484に進む。ブロック1484は、スヌーパ236が要求側L2キャッシュ230のコヒーレンシ・ドメイン内にあることをグローバル・バス読取りオペレーションの範囲標識が示すかどうかに応じて、肯定側Txスヌーパ236が、要求されたメモリ・ブロックの状態を異なる仕方で更新することを示す。どちらの場合も、グローバル・バス読取りオペレーションを肯定したTxスヌーパ236は、CRの受信後に、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始し(すなわち「後期」データを提供し)、要求側L2キャッシュ230内のマスタ232は、L2キャッシュ・アレイ300内の要求されたメモリ・ブロックをSr状態に配置する(要求されたメモリ・ブロックに対してローカル・ドメイン内で他のSr’スヌーパ236が存在しないため)。さらに、必要なら、スヌーパ236が要求側L2キャッシュ230にとってローカルではない場合、Txスヌーパ236は、要求されたメモリ・ブロックの状態をTnからTに、またはTenからTeに更新するが(ブロック1485)、Txスヌーパ236が要求側L2キャッシュにとってローカルである場合、要求されたメモリ・ブロックの状態を不変のままにする(ブロック1486)。次いで、プロセスは、ページ連結子Nを通じて図11に戻り、ブロック1408に示すように、分散応答ロジック210が「成功」を示すCRを生成して終了する。
次にブロック1420を参照すると、M、Me、またはTxスヌーパ236がグローバル・バス読取りオペレーションを肯定せず、Sr’スヌーパ236がグローバル・バス読取りオペレーションを肯定する場合、ブロック1422に従ってグローバル・バス読取りオペレーションがサービスされる。具体的には、グローバル・バス読取りオペレーションを肯定したSr’スヌーパ236が、CRの受信前に、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始し、そのL2キャッシュ・ディレクトリ302内の要求されたメモリ・ブロックの状態をS状態に更新する。要求側L2キャッシュ230内のマスタ232は、L2キャッシュ・アレイ300内の要求されたメモリ・ブロックをSr状態に配置する。プロセスは、ブロック1408に示すように、分散応答ロジック210が「成功」を示すCRを生成して終了する。
次にブロック1430を参照すると、M、Me、Tx、またはSr’スヌーパ236がグローバル・バス読取りオペレーションを肯定せず、さらに、スヌーパ222が要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答を提供しない場合、あらゆるメモリ・ブロックがLPCを有する必要があるので、ブロック1432に示すように処理を停止するエラーが発生する。
次にブロック1440を参照すると、スヌーパ222が要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答を提供するが、グローバル・バス読取りオペレーションを肯定しない場合、ブロック1450で示すように、応答ロジック210が、「再試行」を示すCRを生成する。判定ブロック1442で示すように、メモリ・コントローラ・スヌーパ222がグローバル・バス読取りオペレーションを肯定し、かつ要求されたメモリ・ブロックをM、Me、またはTx状態のうちの1つにL2キャッシュ・スヌーパ236が保持できるが、グローバル・バス読取りオペレーションを肯定することができないことを示す部分応答をL2キャッシュ・スヌーパ236が提供する場合、応答ロジック210は、ブロック1450で同様に「再試行」CRを生成する。これらの各ケースでは、要求されたメモリ・ブロックを要求側L2キャッシュ230にソーシングするのに、場合によっては隠されるスヌーパ236のうちの1つが必要である可能性があるので、応答ロジック210が「再試行」CRを生成して、オペレーションを再発行させる。
次にブロック1444を参照すると、M、Me、Tx、またはSr’スヌーパ236がバス読取りオペレーションを肯定せず、M、Me、またはTxスヌーパ236が場合によっては隠され、かつメモリ・コントローラ・スヌーパ222がグローバル・バス読取りオペレーションを肯定する場合、各ブロック1452および1454で示すように、グローバル・バス読取りオペレーションを肯定するスヌーパ222が、CRに応答して、要求されたメモリ・ブロックおよび関連するドメイン標識504を要求側L2キャッシュ230に提供する。ブロック1444、1446、1452、1454、および1456で示すように、要求側L2キャッシュ230のマスタ232は、部分応答に従って、要求されたメモリ・ブロックを処理し、ブロック1408で表される「成功」CRに変換される(compile)。具体的には、Sr’またはS’スヌーパ236が場合によっては隠されないことをCRが示す場合、要求側L2キャッシュ230は、要求されたメモリ・ブロックをMe状態に保持し(ブロック1456)、Sr’スヌーパ236が場合によっては隠されるのではなく、かつS’スヌーパ236が場合によっては隠される場合、要求側L2キャッシュ230は、要求されたメモリ・ブロックをSr状態に保持し、Sr’スヌーパ236が場合によっては隠される場合、要求側L2キャッシュ230は、要求されたメモリ・ブロックをS状態に保持する。
CRに応答して、要求されたメモリ・ブロックに対するLPCであるメモリ・コントローラ・スヌーパ222は、ブロック1460、1462、1470、1472、および1474で示すように、次いで、要求されたメモリ・ブロックに関するドメイン標識を更新するかどうかを判定する。要求されたメモリ・ブロックに関する新しいキャッシュ状態がMeであることをCRが示す場合、LPCスヌーパ222は、グローバル・バス読取りオペレーション内の範囲標識を参照することにより、それが要求側L2キャッシュ230と同じドメイン内にあるかどうかを判定し(ブロック1460)、ドメイン標識504がローカルを示すのか、それともグローバルを示すのかを判定する(ブロック1460および1472)。LPCが要求側L2キャッシュ230と同じドメイン内にある場合(ブロック1460)、LPCスヌーパ222は、ドメイン標識504が「グローバル」にリセットされている場合、ドメイン標識504を「ローカル」にセットする(ブロック1462および1464)。LPCが要求側L2キャッシュ230と同じドメイン内にない場合(ブロック1460)、LPCスヌーパ222は、ドメイン標識504が「ローカル」にセットされている場合にドメイン標識504を「グローバル」にリセットする(ブロック1472および1474)。
要求されたメモリ・ブロックに関する新しいキャッシュ状態がSまたはSrであることをCRが示す場合、LPCスヌーパ222は、要求側L2キャッシュ230と同じドメイン内にあるかどうか(ブロック1470)、およびドメイン標識504がローカルを示すか、それともグローバルを示すか(ブロック1472)を同様に判定する。LPCが要求側L2キャッシュ230と同じドメイン内にある場合(ブロック1470)、ドメイン標識504に対する更新は不要である。しかし、LPCが要求側L2キャッシュ230と同じドメイン内にない場合(ブロック1470)、LPCスヌーパ222は、ドメイン標識504が「ローカル」にセットされている場合にドメイン標識504を「グローバル」にリセットする(ブロック1472および1474)。したがって、LPCスヌーパ222は、CRの受信に応答して、必要ならドメイン標識504を更新する。
次に図13を参照すると、本発明によるデータ処理システムでローカル・バスRWITMオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。プロセスは、例えば図7のブロック748で、L2キャッシュ230のマスタ232がそのローカル相互接続114上にローカル・バスRWITMオペレーションを発行することで、ブロック1500で始まる。スヌーパ222、236が分散応答ロジック210に提供することのできる様々な部分応答が、判定ブロック1502、1510、1512、1520、1524、1530、1534、1540、および1544の結果により図13に表されている。これらの部分応答は、ローカル・バスRWITMオペレーションに関するCRを決定する。
ブロック1502に示すように、スヌーパ236を含むL2キャッシュ230が要求されたメモリ・ブロックをMまたはMe状態に保持することを示す部分応答を有するローカル・バスRWITMオペレーションをスヌーパ236が肯定した場合、プロセスは、ブロック1502からブロック1504に進む。ブロック1504は、ローカル・バスRWITMオペレーションに応答する、要求側L2キャッシュ230および肯定側L2キャッシュ230のオペレーションを示す。具体的には、肯定側L2キャッシュ230内のスヌーパ236が、要求されたメモリ・ブロックのキャッシュ状態をMまたはMe状態からI状態に更新し、CRの受信前に、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始することができる(すなわち、「早期」データを提供する)。受信時に、要求側L2キャッシュ230内のマスタ232は、そのL2キャッシュ・アレイ300内の要求されたメモリ・ブロックをM状態に配置する。ブロック1506で示すように、プロセスは、分散応答ロジック210が「成功」を示すCRを生成して終了する。
ブロック1510を参照すると、スヌーパ236を含むL2キャッシュ230が要求されたメモリ・ブロックをT、Tn、Te、またはTen状態(図13では一般的にTxと示す)のいずれかに保持することを示す部分応答を有するローカル・バスRWITMオペレーションをスヌーパ236が肯定し、かつSr’スヌーパ236がローカル・バスRWITMオペレーションを肯定しない場合(ブロック1512)、プロセスはブロック1514に進む。ブロック1514は、ローカル・バスRWITMオペレーションを肯定したTxスヌーパ236が、応答ロジック210からのCRの受信に応答して、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始することを表す。要求されたメモリ・ブロックの受信に応答して、要求側L2キャッシュ230は、要求されたメモリ・ブロックをM状態に保持する。すべての有効な肯定側スヌーパ236(すなわち、Igではないスヌーパ236)が、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。
部分応答の複合体が、ローカル・バスRWITMオペレーションを共に肯定するTxスヌーパ236およびSr’スヌーパ236を含む場合(ブロック1510および1512)、プロセスはブロック1516に進む。ブロック1516は、ローカル・バスRWITMオペレーションを肯定したSr’スヌーパ236が、応答ロジック210によって提供されるCRの受信前に、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始することを表す。要求されたメモリ・ブロックの受信に応答して、要求側L2キャッシュ230は、要求されたメモリ・ブロックをM状態に保持する。すべての肯定側スヌーパ236(すなわち、Igではないスヌーパ236)が、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。
ブロック1517で示すように、ブロック1514および1516で表されるどちらの場合にも、応答ロジック210は、Tx肯定側スヌーパ236が要求されたメモリ・ブロックをT/Te状態またはTn/Ten状態の1つに保持するかどうかに応じて、CRを生成する。Txスヌーパ236がTまたはTeであった場合、ブロック1518に示すように、応答ロジック210は、「クリーンアップ」を示すCRを生成する。しかし、Txスヌーパ236がTnまたはTenであった場合、ブロック1556に示すように、有利には、応答ロジック210は、「ローカル・クリーンアップ」を示すCRを生成することによってクリーンアップ・オペレーションの範囲をローカル・ドメインに制限する。TnまたはTenコヒーレンシ状態の存在が、要求されたメモリ・ブロックを保持するリモート・キャッシュがないことを保証し、ローカル・バスRWITMオペレーションまたは付随するバス・キル・オペレーションのより広いブロードキャストなしにコヒーレンシを維持できることを意味するので、クリーンアップ・オペレーションの制限された範囲が許可される。
M、Me、またはTxスヌーパ236(すなわちHPC)がローカル・バスRWITMオペレーションを肯定せず、データ転送を媒介できることを示す場合、ローカル・バスRWITMオペレーションは、再試行なしにL2キャッシュ・スヌーパ236でサービスすることができない。したがって、ブロック1520に示すように、Sr’スヌーパ236がローカル・バスRWITMオペレーションを肯定し、早期データを要求側L2キャッシュ230に供給する場合、ブロック1522に示すように、要求側L2キャッシュ230のマスタ232は、Sr’スヌーパ236によって提供されたデータを廃棄する。
ブロック1524は、L2キャッシュ230のスヌーパ236が、ローカル・バスRWITMオペレーションを肯定し、L2キャッシュ230が要求されたメモリ・ブロックのアドレス・タグをIg状態に保つことを示す部分応答を提供するかどうかに依存する、ローカル・バスRWITMオペレーションを処理する際の違いを表す。そうである場合、任意の有効な肯定側スヌーパ236(すなわち、Igではないスヌーパ236)が、関係するキャッシュ・エントリを無効にする(ブロック1532)。M、Me、またはTxスヌーパ236が、不完全な部分応答によって場合によっては隠されない場合(ブロック1534)、ブロック1536に示すように、分散応答ロジック210は、「go global」CRを提供する。一方、Igスヌーパ236がローカル・バスRWITMオペレーションを肯定し、部分応答の複合体が、M、Me、またはTxスヌーパ236が場合によっては隠されることを示す場合、ブロック1538に示すように、応答ロジック210は、「再試行」CRを生成する。したがって、HPCがローカル・コヒーレンシ・ドメインで場合によっては隠されることがない場合、Igスヌーパ236によるローカル・バスRWITMオペレーションの肯定は、オペレーションをグローバル・オペレーションとして再発行させることになる。
ブロック1524でIgスヌーパ236がローカル・バスRWITMオペレーションを肯定しない場合、ローカル・バスRWITMオペレーションは、ブロック1530および後続のブロックに従って処理される。具体的には、メモリ・コントローラ・スヌーパ222が要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答を提供しない場合(ブロック1530)、有効な各肯定側スヌーパ236は、それぞれのL2キャッシュ・ディレクトリ302内の要求されたメモリ・ブロックを無効にする(ブロック1532)。応答ロジック210によって生成されたCRは、M、Me、またはTxスヌーパ236が隠される可能性があることを何らかの部分応答が示すかどうかに依存する(ブロック1534)。すなわち、M、Me、またはTxスヌーパ236が隠される可能性がない場合、応答ロジック210は、ブロック1536で「go global」CRを生成し、ローカル・バスRWITMオペレーションをグローバルRWITMオペレーションとして再発行しなければならないことをマスタ232に通知する。一方、要求されたメモリ・ブロックに対するM、Me、またはTxスヌーパ236(すなわちHPC)が隠される可能性がある場合、再試行した場合オペレーションをローカルにサービスすることができるので、ブロック1538に示すように、応答ロジック210は「再試行」を示すCRを生成する。
同様に、M、Me、またはTxスヌーパ236がローカル・バスRWITMオペレーションを肯定せず、それがLPCであるがローカル・バスRWITMオペレーションを肯定しないことを示す部分応答をスヌーパ222が提供する場合、有効な肯定側スヌーパ236は、要求されたメモリ・ブロックのそれぞれのコピーを無効にし(ブロック1542)、応答ロジック210は、ローカル・バスRWITMオペレーションに対する「再試行」CRを提供する(ブロック1538)。M、Me、またはTxスヌーパ236がローカル・バスRWTIMオペレーションを肯定せず(ブロック1502、1510)、スヌーパ222がローカル・バスRWITMオペレーションを肯定し(ブロック1540)、かつM、Me、Tx、またはIgスヌーパ236が場合によっては隠される可能性がある(ブロック1544)場合、ブロック1538で「再試行」CRがやはり生成され、スヌーパ236は、要求されたメモリ・ブロックのそれぞれのコピーを無効にする(ブロック1542)。
ブロック1546で示すように、M、Me、またはTxスヌーパ236がローカル・バスRWITMオペレーションを肯定せず、または場合によっては隠されることがなく、LPCスヌーパ222がローカル・バスRWITMオペレーションを肯定する場合、有効な各肯定側スヌーパ236(すなわち、Igではないスヌーパ236)が、要求されたメモリ・ブロックのそれぞれのコピーを無効にする。さらに、LPCスヌーパ222は、応答ロジック210からCRを受信したことに応答して、要求されたメモリ・ブロックおよび関連するドメイン標識504を要求側L2キャッシュ230に提供する。要求側L2キャッシュ230のマスタ232は、ドメイン標識504に従ってデータを処理する。具体的には、LPCスヌーパ222から受け取ったデータをステールにする、リモート・キャッシュされたコピーが存在する可能性があることを意味する「グローバル」にドメイン標識504がリセットされる場合、マスタ232は、LPCスヌーパ222から受け取ったデータを廃棄し、要求されたメモリ・ブロックに関する無効なコヒーレンシ状態を維持し(ブロック1552)、応答ロジック210によって提供されたCRを「go global」と解釈する(ブロック1536)。一方、要求されたメモリ・ブロックのリモートのキャッシュされたコピーがLPCスヌーパ222から受け取ったデータを潜在的にステールにすることを意味する「ローカル」にドメイン標識504がセットされる場合、マスタ232は、要求されたメモリ・ブロックおよびドメイン標識504をそのL2キャッシュ・アレイ300内に配置し、関連する状態フィールド306をMにセットする(ブロック1546)。S’またはSr’スヌーパ236が場合によっては隠されることを部分応答、したがってCRが示す場合(ブロック1554)、要求側L2キャッシュ230が要求されたメモリ・ブロックの他の有効なローカルにキャッシュされたコピーが存在する場合はそれを1つまたは複数のローカル・バス・キル・オペレーションを介して無効にしなければならないことを意味するローカル「クリーンアップ」をCRが示す(ブロック1556)。そのようなS’またはSr’スヌーパ236が不完全な部分応答によって場合によっては隠されない場合、ブロック1506で示すように、CRは「成功」を示す。
ある実施形態では、LPCからのドメイン標識3004の受信前に(ブロック1550)、ブロック1556で示すように、ローカル・バスRWITMオペレーションのマスタがローカル・クリーンアップを推論的に実施できることをさらに理解されよう。このようにして、LPCからのデータ送達に関連する待ち時間を、ローカル・クリーンアップ・オペレーションに含まれる1つまたは複数のローカル・バス・キル・オペレーションでマスクすることができる。
次に図14〜15を参照すると、本発明によるデータ処理システムでグローバル・バスRWITMオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、例えば図7のブロック754でのグローバル・バスRWITMオペレーションを発行する要求側L2キャッシュ230のマスタ232に応答して、ブロック1600で始まる。ブロック1602で示すように、スヌーパ236を含むL2キャッシュ230が要求されたメモリ・ブロックをMまたはMe状態に保持することを示す部分応答を有するグローバル・バスRWITMオペレーションをスヌーパ236が肯定する場合、MまたはMeスヌーパ236は、早期データを要求側マスタ232に提供し、要求側マスタ232は、要求されたメモリ・ブロックをM状態に保持する(ブロック1604またはブロック1606)。ブロック1607で示すように、応答ロジック210は「成功」を示すCRを生成する。さらに、MまたはMeスヌーパ236は、要求側マスタ232に対してローカル(すなわち、要求側マスタ232と同じコヒーレンシ・ドメイン内)であるか否か(ブロック1603)に応じて、そのキャッシュ状態をIまたはIgに更新する。例えばバス・オペレーション内の範囲標識を参照することにより、要求側マスタ232と同じコヒーレンシ・ドメインに属しているとMまたはMeスヌーパ236が判定する場合、MまたはMeスヌーパ236は、要求されたメモリ・ブロックに対するそのキャッシュ状態をIに更新する(ブロック1606)。一方、要求側マスタ232と同じコヒーレンシ・ドメインに属していないとMまたはMeスヌーパ236が判定する場合、MまたはMeスヌーパ236は、そのコヒーレンシ・ドメイン内の要求されたメモリ・ブロックに対するキャッシュされたドメイン標識を維持するために、要求されたメモリ・ブロックに対するそのキャッシュ状態をIgに更新する(ブロック1604)。したがって、LPCシステム・メモリ108内のドメイン標識504を更新するために、グローバル・バスRWITMオペレーションに応答して再試行プッシュ(retry-push)を行うことは不要である。
次にブロック1610を参照すると、スヌーパ236を含むL2キャッシュ230が要求されたメモリ・ブロックをTnまたはTen状態に保持することを示す部分応答を有するグローバル・バスRWITMオペレーションをスヌーパ236が肯定する場合、プロセスはブロック1612に進む。ブロック1612は、要求側マスタ232にとってローカルであるか否かをTnまたはTenスヌーパ236が判定することを表す。そうである場合、グローバル・バスRWITMオペレーションは、以下で説明するブロック1614および後続のブロックに従って処理される。しかし、要求側マスタ232にとってローカルではないと、グローバル・バスRWITMオペレーションを肯定するTnまたはTenスヌーパ236が判定する場合、グローバル・バスRWITMオペレーションは、Sr’スヌーパ236もグローバル・バスRWITMオペレーションを肯定したか否かに応じて、ブロック1618またはブロック1620に従ってサービスされる。
ブロック1618で示すように、Sr’スヌーパ236がグローバル・バスRWITMオペレーションを肯定した場合、Sr’スヌーパ236は、早期データを要求側マスタ232に提供し、グローバル・バスRWITMオペレーションを肯定したTnまたはTenスヌーパ236は、要求されたメモリ・ブロックを含むエントリに関するそのキャッシュ状態をIgに更新する。要求されたメモリ・ブロックの受信に応答して、要求側L2キャッシュ230は、要求されたメモリ・ブロックをM状態に保持する。さらに、TnまたはTenスヌーパ236以外の任意の有効な肯定側スヌーパ236(すなわち、Igではないスヌーパ236)は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。あるいは、ブロック1620で示すように、Sr’スヌーパ236がグローバル・バスRWITMオペレーションを肯定しない場合、TnまたはTenスヌーパ236は、CRの受信に応答して後期データを提供する。要求されたメモリ・ブロックの受信に応答して、要求側L2キャッシュ230は、要求されたメモリ・ブロックをM状態に保持する。さらに、TnまたはTenスヌーパ236は、そのキャッシュ状態をIgに更新し、その他の任意の有効な肯定側スヌーパ236(すなわち、Igではないスヌーパ236)は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。したがって、リモートTnまたはTenスヌーパ236がグローバル・バスRWITMオペレーションを肯定する場合、肯定側TnまたはTenスヌーパ236は、そのコヒーレンシ・ドメイン内の要求されたメモリ・ブロックに対するキャッシュされたドメイン標識を維持するためにIg状態に入る。したがって、LPCシステム・メモリ108内のドメイン標識504を更新するために、グローバル・バスRWITMオペレーションに応答して再試行プッシュを行うことは不要である。
ブロック1618および1620で表される場合のどちらでも、応答ロジック210は、グローバル・バスRWITMオペレーションをスヌープすることに応答して、S’またはSr’スヌーパ236が場合によっては隠されるか否か、すなわち要求されたメモリ・ブロックのそのコピーを無効にすることができないかどうかに応じて、CRを生成する。ブロック1626で、グローバル・バスRWITMオペレーションに対する部分応答に基づいて、S’またはSr’スヌーパ236が場合によっては隠されると応答ロジック210が判定を行う場合、ブロック1628に示すように、応答ロジック210は、「クリーンアップ」を示すCRを生成する。あるいは、S’またはSr’スヌーパ236が場合によっては隠されることがないと応答ロジック210が判定する場合、ブロック1607で示すように、応答ロジック210は、「成功」を示すCRを生成する。
ブロック1612に戻ると、要求側マスタ232にとってローカルであるTnまたはTenスヌーパ236がグローバル・バスRWITMオペレーションを肯定する場合、Sr’スヌーパ236もグローバル・バスRWITMオペレーションを肯定したか否かに応じて、ブロック1624またはブロック1622に従ってグローバル・バスRWITMオペレーションがサービスされる。
ブロック1624で示すように、Sr’スヌーパ236がグローバル・バスRWITMオペレーションを肯定した場合、Sr’スヌーパ236は、早期データを要求側マスタ232に提供し、グローバル・バスRWITMオペレーションを肯定した有効な各スヌーパ236は、要求されたメモリ・ブロックを含むエントリに関するそれぞれのキャッシュ状態をIに更新する。要求されたメモリ・ブロックの受信に応答して、要求側L2キャッシュ230は、要求されたメモリ・ブロックをM状態に保持する。あるいは、ブロック1622で示すように、Sr’スヌーパ236がグローバル・バスRWITMオペレーションを肯定しない場合、TnまたはTenスヌーパ236は、CRの受信に応答して後期データを提供する。要求されたメモリ・ブロックの受信に応答して、要求側L2キャッシュ230は、要求されたメモリ・ブロックをM状態に保持する。さらに、有効な各肯定側スヌーパ236(すなわち、Igではないスヌーパ236)は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。
ブロック1624および1622で表される場合のどちらでも、応答ロジック210は、グローバル・バスRWITMオペレーションをスヌープすることに応答して、S’またはSr’スヌーパ236が場合によっては隠されるか否か、すなわち要求されたメモリ・ブロックのそのコピーを無効にすることができないかどうかに応じて、CRを生成する。ブロック1625で、グローバル・バスRWITMオペレーションに対する部分応答に基づいて、S’またはSr’スヌーパ236が場合によっては隠されると応答ロジック210が判定を行う場合、ブロック1632に示すように、応答ロジック210は、「ローカル・クリーンアップ」を示すCRを生成する。したがって、有利には、コヒーレンシを保証するのに必要なバス・キル・オペレーションの範囲が、要求側L2キャッシュ230および(前の)TnまたはTenスヌーパ236を含むローカル・コヒーレンシ・ドメインに限定される。あるいは、S’またはSr’スヌーパ236が場合によっては隠されると応答ロジック210が判定する場合、応答ロジック210は、ブロック1607で示すように、「成功」を示すCRを生成する。
図15のブロック1630へのページ連結子Oに続いて、TまたはTeスヌーパ236がグローバル・バスRWITMオペレーションを肯定する場合、プロセスはブロック1632に進む。ブロック1632は、要求側マスタ232にとってローカルであるか否かをTまたはTeスヌーパ236が判定することを表す。そうである場合、グローバル・バスRWITMオペレーションは、以下で説明するブロック1638および後続のブロックに従って処理される。しかし、要求側マスタ232にとってローカルではないと、グローバル・バスRWITMオペレーションを肯定するTまたはTeスヌーパ236が判定する場合、グローバル・バスRWITMオペレーションは、Sr’スヌーパ236がグローバル・バスRWITMオペレーションを肯定したか否かに応じて、ブロック1636またはブロック1635に従ってサービスされる。
ブロック1635で示すように、Sr’スヌーパ236がグローバル・バスRWITMオペレーションを肯定した場合、Sr’スヌーパ236は、早期データを要求側マスタ232に提供し、グローバル・バスRWITMオペレーションを肯定したTまたはTeスヌーパ236は、要求されたメモリ・ブロックを含むエントリに関するそのキャッシュ状態をIgに更新する。要求されたメモリ・ブロックの受信に応答して、要求側L2キャッシュ230は、要求されたメモリ・ブロックをM状態に保持する。さらに、TまたはTeスヌーパ236以外の任意の有効な肯定側スヌーパ236は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。あるいは、ブロック1636で示すように、Sr’スヌーパ236がグローバル・バスRWITMオペレーションを肯定しない場合、TまたはTeスヌーパ236は、CRの受信に応答して後期データを提供する。要求されたメモリ・ブロックの受信に応答して、要求側L2キャッシュ230は、要求されたメモリ・ブロックをM状態に保持する。さらに、TまたはTeスヌーパ236は、そのキャッシュ状態をIgに更新し、その他の任意の有効な肯定側スヌーパ236は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。したがって、リモートTまたはTeスヌーパ236がグローバル・バスRWITMオペレーションを肯定する場合、肯定側TまたはTeスヌーパ236は、そのコヒーレンシ・ドメイン内の要求されたメモリ・ブロックに対するキャッシュされたドメイン標識を維持するためにIg状態に入る。したがって、LPCシステム・メモリ108内のドメイン標識504を更新するために、グローバル・バスRWITMオペレーションに応答して再試行プッシュを行うことは不要である。
ブロック1635および1636で表される場合のどちらでも、応答ロジック210は、グローバル・バスRWITMオペレーションをスヌープすることに応答して、S’またはSr’スヌーパ236が場合によっては隠されるか否か、すなわち要求されたメモリ・ブロックのそのコピーを無効にすることができないかどうかに応じて、CRを生成する。ブロック1644で、バスRWITMオペレーションに対する部分応答に基づいて、S’またはSr’スヌーパ236が場合によっては隠されると応答ロジック210が判定を行う場合、ブロック1626に示すように、応答ロジック210は、「クリーンアップ」を示すCRを生成する。あるいは、S’またはSr’スヌーパ236が場合によっては隠されることがないと応答ロジック210が判定する場合、ブロック1607で示すように、応答ロジック210は、「成功」を示すCRを生成する。
ブロック1632および1638に戻ると、ブロック3412で、要求側マスタ232にとってローカルであるとTまたはTeスヌーパ236が判定する場合、Sr’スヌーパ236もグローバル・バスRWITMオペレーションを肯定したかどうかに応じて、ブロック1640またはブロック1642に従ってグローバル・バスRWITMオペレーションがサービスされる。すなわち、ブロック1640に示すように、Sr’スヌーパ236がグローバル・バスRWITMオペレーションを肯定しない場合(ブロック1638)、グローバル・バスRWITMオペレーションを肯定したTまたはTeスヌーパ236は、CRの受信に応答して、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始する(すなわち、「後期」データを提供する)。要求されたメモリ・ブロックの受信に応答して、要求側L2キャッシュ230は、要求されたメモリ・ブロックをM状態に保持する。さらに、すべての有効な肯定側スヌーパ236は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。あるいは、ブロック1642で示すように、Sr’スヌーパ236がグローバル・バスRWITMオペレーションを肯定する場合(ブロック1638)、Sr’スヌーパ236は、CRの受信前に、要求側L2キャッシュ230への要求されたメモリ・ブロックの送信を開始する(すなわち、「早期」データを提供する)。要求されたメモリ・ブロックの受信に応答して、要求側L2キャッシュ230は、要求されたメモリ・ブロックをM状態に保持する。さらに、すべての有効な肯定側スヌーパ236は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。ブロック1640またはブロック1642に続いて、プロセスは、上述のブロック1644に進む。
次にブロック1650を参照すると、M、Me、またはTxスヌーパ236がグローバル・バスRWITMオペレーションを肯定し、さらに、スヌーパ222が要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答を提供しない場合、ブロック1652で示すように、エラーが発生し、処理が停止する。一方、M、Me、またはTxスヌーパ236がバスRWITMオペレーションを肯定せず、スヌーパ222が要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答を提供するが、バスRWITMオペレーションを肯定しない場合(ブロック1660)、有効な各肯定側スヌーパ236(すなわち、Igではないスヌーパ236)がそれぞれのL2キャッシュ・ディレクトリ302内の要求されたメモリ・ブロックを無効にし(ブロック1672)、ブロック1674で示すように、応答ロジック210は、「再試行」を示すCRを生成する。さらに、グローバル・バスRWITMオペレーションを肯定するSr’スヌーパ236によって提供されたデータが存在する場合は、それがマスタ232によって廃棄される(ブロック1668および1670)。判定ブロック1662で示すように、メモリ・コントローラ・スヌーパ222がグローバル・バスRWITMオペレーションを肯定し(ブロック1660)、要求されたメモリ・ブロックをM、Me、Tx状態のうちの1つに保持することができるが、グローバル・バスRWITMオペレーションを肯定できないことを示す部分応答をL2キャッシュ・スヌーパ236が提供する場合(ブロック1662)、ブロック1672で、肯定側スヌーパ236は、要求されたメモリ・ブロックのそれぞれのコピーを同様に無効にし、ブロック1674で、応答ロジック210は「再試行」CRを生成する。
次にブロック1664を参照すると、M、Me、またはTxスヌーパ236がグローバル・バスRWITMオペレーションを肯定せず、または場合によっては隠されることがない場合、スヌーパ222は、グローバル・バスRWITMオペレーションを肯定し、Sr’スヌーパ236は、グローバル・バスRWITMオペレーションを肯定し、グローバル・バスRWITMオペレーションが、上述のブロック1642および後続のブロックに従ってサービスされる。グローバル・バスRWITMオペレーションを肯定するSr’スヌーパ236の欠如を除く同一の条件を仮定すると、グローバル・バスRWITMオペレーションがブロック1666に従ってサービスされる。具体的には、CRに応答して、LPCスヌーパ222は、要求されたメモリ・ブロックを要求側L2キャッシュ230に提供し、要求側L2キャッシュ230は、M状態の要求されたメモリ・ブロックを取得し、すべての有効な肯定側スヌーパ236は、要求されたメモリ・ブロックのそれぞれのコピーがある場合はそれを無効にする。
ブロック1666に続いて、プロセスはブロック1680〜1686に進む。ブロック1680〜1686は、LPCスヌーパ222が要求側マスタ232にとってローカルであるかどうか(ブロック1680)、およびドメイン標識の現在の状態(ブロック1682および1684)に基づいて、要求されたメモリ・ブロックに関するドメイン標識504を更新するか否かをLPCスヌーパ222が判定することを集合的に表す。LPCスヌーパ222が要求側L2キャッシュ230にとってローカルであり、システム・メモリ108内のドメイン標識504が「ローカル」を示すようにセットされる場合、更新は不要であり、プロセスはページ連結子Pを通じて、以下で説明する図14のブロック1625に進む。一方、LPCスヌーパ222が要求側マスタ232にとってローカルであり、ドメイン標識504が「グローバル」を示すようにリセットされる場合、またはLPCスヌーパ222が要求側マスタ232にとってローカルではなく、ドメイン標識504が「ローカル」を示すようにリセットされる場合、ブロック1686で、LPCスヌーパ222はドメイン標識504の状態を変更する。
S’またはSr’スヌーパ236が場合によっては隠されることを部分応答が示す場合(ブロック1644)、ブロック1628で、要求側L2キャッシュ230は、要求されたメモリ・ブロックの任意の他の有効なキャッシュされたコピーを無効にしなければならないことを示す「クリーンアップ」CRを受け取る。S’またはSr’スヌーパ236が不完全な部分応答によって場合によっては隠される場合、ブロック1607で示すように、応答ロジック210は「成功」CRを生成する。
次に図16を参照すると、本発明によるデータ処理システムでローカル・バスDClaimオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、例えばマスタ232が図7のブロック732でローカル相互接続114上にローカル・バスDClaimオペレーションを発行することで、ブロック1700で始まる。ローカル・バスDClaimオペレーションに応答してスヌーパ236が分散応答ロジック210に提供することができる様々な部分応答が、判定ブロック1702、1710、1720、1740、および1744の結果により図16に表されている。これらの部分応答は、CR応答ロジック210がローカル・バスDClaimオペレーションに関して何を生成するかを決定する。
ブロック1702で示すように、何らかのスヌーパ236が、例えば図7のブロック748および754で示すローカル・バスDClaimオペレーションをバスRWITMオペレーションにダウングレードする部分応答を発行する場合、要求されたメモリ・ブロックを有効な状態に保持するその他の各肯定側スヌーパ236は、ブロック1703で示すように、要求されたメモリ・ブロックのそれぞれのコピーを無効にする。ローカル・バスDClaimオペレーションおよび部分応答に応答して、ブロック1704で示すように、分散応答ロジック210は、「ダウングレード」を示すCRを生成する。このCRに応答して、図7のブロック748で示すように、次にローカル・バスDClaimオペレーションのマスタ232は、ローカル・バスRWITMオペレーションを使用して、要求されたメモリ・ブロックの所有権を得るように試みなければならない。
ブロック1710に示すように、スヌーパ236を含むL2キャッシュ230が要求されたメモリ・ブロックをTまたはTe状態に保持することを示す部分応答を有するローカル・バスDClaimオペレーションをスヌーパ236が肯定する場合、プロセスはブロック1712に進む。バスDClaimオペレーションに応答してデータ転送が不要であるので、ブロック1712は、要求側L2キャッシュ230内のマスタ232がL2キャッシュ・ディレクトリ302内の要求されたメモリ・ブロックのキャッシュ状態をM状態に更新することを示す。すべての有効な肯定側スヌーパ236は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。ブロック1718で示すように、分散応答ロジック210は、要求側L2キャッシュ230が1つまたは複数のバス・キル・オペレーションを発行して、ローカル・コヒーレンシ・ドメインの外部に保持された、要求されたメモリ・ブロックのコピーが存在する場合はそれを無効にしなければならないことを意味する「クリーンアップ」を示すCRを生成する。
ブロック1740で示すように、TnまたはTenスヌーパ236がローカル・バスDClaimオペレーションを肯定する場合、プロセスはブロック1742に進む。バスDClaimオペレーションに応答してデータ転送が不要であるので、ブロック1742は、要求側L2キャッシュ230内のマスタ232がL2キャッシュ・ディレクトリ302内の要求されたメモリ・ブロックのキャッシュ状態をM状態に更新することを示す。すべての有効な肯定側スヌーパ236は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。ブロック1744で示すように、分散応答ロジック210は、Sr’またはS’スヌーパ236が場合によっては隠されると応答ロジック210で受信された部分応答が示すかどうかに依存するCRを生成する。そうでない場合、ローカル・コヒーレンシ・ドメインの外部のL2キャッシュ230が要求されたメモリ・ブロックのコピーを保持しないことがTnまたはTenコヒーレンシ状態の存在によって保証されるので、分散応答ロジック210は、ブロック1746で示すように「成功」を示す応答を生成する。Sr’またはS’スヌーパ236が場合によっては隠されることを部分応答が示す場合、応答ロジック210は、ブロック1748で示すように、「ローカル・クリーンアップ」を示すCRを生成する。やはりローカル・コヒーレンシ・ドメインの外部のL2キャッシュ230が要求されたメモリ・ブロックの有効なコピーを保持しないことがTnまたはTenコヒーレンシ状態によって保証されるので、必要なのはローカル・クリーンアップ・オペレーションだけである。
次にブロック1720を参照すると、スヌーパがローカル・バスDClaimオペレーションをダウングレードせず(ブロック1702)、Txスヌーパ236がローカル・バスDClaimオペレーションを肯定せず(ブロック1710および1740)、さらに、スヌーパ236が要求されたメモリ・ブロックをTx状態に保持することができるが、ローカル・バスDClaimオペレーションを肯定できないことを示す部分応答をスヌーパ236が提供する場合、有効な各肯定側スヌーパ236は、要求されたメモリ・ブロックに関するそれぞれのコヒーレンシ状態をI状態に更新する(ブロック1721)。さらに、ブロック1722で示すように、応答ロジック210は、「再試行」を示すCRを生成する。「再試行」CRに応答して、要求側マスタ232は、図7のブロック736を参照しながら上記で説明したように、バスDClaimオペレーションをローカルまたはグローバル・オペレーションとして再発行することができる。しかし、スヌーパがローカル・バスDClaimオペレーションをダウングレードせず(ブロック1702)、Txスヌーパ236がバスDClaimオペレーションを肯定せず、または場合によっては隠されることがない場合(ブロック、1702、1710、1740、および1720)、応答ロジック210は、ブロック1732で示すように「go global」CRを提供し、ブロック1730で示すように、要求されたメモリ・ブロックの有効なコピーを有する肯定側スヌーパが存在するならばそのすべての肯定側スヌーパが、要求されたメモリ・ブロックのそれぞれのコピーを無効にする。「go global」CRに応答して、マスタ232は、図7のブロック740で示すように、バスDClaimオペレーションをグローバル・オペレーションとして再発行する。
次に図17を参照すると、本発明によるデータ処理システムでグローバル・バスDClaimオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。プロセスは、例えばL2キャッシュ230のマスタ232が図7のブロック740でシステム相互接続110上にグローバル・バスDClaimオペレーションを発行することで、ブロック1800で始まる。グローバル・バスDClaimオペレーションに応答してスヌーパ222、236が分散応答ロジック210に提供することができる様々な部分応答が、判定ブロック1802、1810、1818、1830、1840、1842、および1819の結果により図17に表されている。これらの部分応答は、CR応答ロジック210がグローバル・バスDClaimオペレーションに関して何を生成するかを決定する。
ブロック1802で示すように、何らかのスヌーパ236が、グローバル・バスDClaimオペレーションをバスRWITMオペレーションにダウングレードする部分応答を発行する場合、ダウングレードするスヌーパ236以外の各肯定側スヌーパ236(すなわち、Igではないスヌーパ236)は、ブロック1803で示すように、要求されたメモリ・ブロックのそのコピーを無効にする。さらに、ブロック1804で示すように、分散応答ロジック210は、「ダウングレード」を示すCRを生成する。このCRに応答して、図7のブロック748および754で示すように、次にグローバル・バスDClaimオペレーションのマスタ232は、バスRWITMオペレーションを使用して、要求されたメモリ・ブロックの所有権を得るように試みなければならない。
ブロック1810で示すようにTx(例えばT、Te、Tn、またはTen)スヌーパ236がグローバル・バスDClaimオペレーションを肯定する場合、プロセスはブロック1812に進む。ブロック1812は、Txスヌーパ236が要求側マスタ232にとってローカルであるかどうかを判定することを示す。そうでない場合、ブロック1814で示すように、Txスヌーパ236は、その関連するエントリの状態をIgに更新し、要求されたメモリ・ブロックに関するキャッシュされたドメイン標識を維持する。さらに、要求側マスタ232は、要求されたメモリ・ブロックのそのコピーのコヒーレンシ状態をMに更新し、Txスヌーパ236以外の有効な各肯定側スヌーパ236は、要求されたメモリ・ブロックに関するそのコヒーレンシ状態をIに更新する(ブロック1814)。
ブロック1812を参照すると、Txスヌーパ236が要求側マスタ232にとってローカルであることをTxスヌーパ236が判定する場合、ブロック1816に従ってグローバル・バスDClaimオペレーションが処理される。具体的には、要求側L2キャッシュ230内のマスタ232は、要求されたメモリ・ブロックのそのコピーの状態をM状態に更新し、すべての有効な肯定側スヌーパ236は、要求されたメモリ・ブロックに関するそれぞれのキャッシュ状態をIに更新する。
ブロック1818および1822で示すように、S’またはSr’スヌーパ236が場合によっては隠されないことを部分応答が示す場合、プロセスは、分散応答ロジック210が「成功」を示すCRを生成して終了する(ブロック1822)。一方、グローバル・バスDClaimオペレーションに応答して、場合によっては隠されるS’またはSr’スヌーパ236の存在を示す少なくとも1つの部分応答が与えられたという判定がブロック1818で行われる場合、何らかのタイプのクリーンアップ・オペレーションが必要となる。肯定側Txスヌーパ236が要求側マスタ232と同じコヒーレンシ・ドメイン内にあり、オペレーションの前に、TeおよびTen状態のうちの1つである場合、分散応答ロジック210は、要求側L2キャッシュ230が1つまたは複数のローカル・バス・キル・オペレーションを発行して、任意のそのような隠されたS’またはSr’スヌーパ236内の要求されたメモリ・ブロックを無効にしなければならないことを意味する「ローカル・クリーンアップ」を示すCRを生成する(ブロック1824)。肯定側Txスヌーパ236が要求側マスタ232と同じコヒーレンシ・ドメイン内になく、または肯定側Txスヌーパ236が、オペレーションの前にTまたはTeコヒーレンシ状態のうちの1つであった場合、グローバル・クリーンアップが必要であり、応答ロジック210は、「クリーンアップ」を示すCRを生成する(ブロック1820)。したがって、TnまたはTenコヒーレンシ状態の存在を再び使用して、バス・キル・オペレーションの範囲を限定することができる。
次にブロック1830を参照すると、Txスヌーパ236がグローバル・バスDClaimオペレーションを肯定せず、さらに、要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答をスヌーパ222が提供しない場合、ブロック1832で示すように、エラーが発生し、プロセスが停止する。一方、Txスヌーパ236がグローバル・バスDClaimオペレーションを肯定せず、要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答をスヌーパ222が提供するが、グローバル・バスDClaimオペレーションを肯定しない場合(ブロック1840)、有効な各肯定側スヌーパ236は、要求されたメモリ・ブロックのそれぞれのコピーを無効にし(ブロック1843)、ブロック1844で示すように、応答ロジック210は、「再試行」を示すCRを生成する。判定ブロック1842で示すように、メモリ・コントローラ・スヌーパ222がバスDClaimオペレーションを肯定し(ブロック1840)、Txスヌーパ236が場合によっては隠される可能性がある場合(ブロック1842)、ブロック1843で、有効な各肯定側スヌーパは、要求されたメモリ・ブロックのそれぞれのコピーをやはり無効にし、ブロック1844で、応答ロジック210は「再試行」CRを同様に生成する。
ブロック1842で示すように、Txスヌーパ236がグローバル・バスDClaimオペレーションを肯定せず、または場合によっては隠されることがなく、スヌーパ222がグローバル・バスDClaimオペレーションを肯定する場合、上述のブロック1816に従ってグローバル・バスDClaimオペレーションがサービスされる。
次に図18を参照すると、本発明によるデータ処理システムでローカル・バス・キル・オペレーションを実施する例示的方法の高レベル論理流れ図が示されている。ローカル・バス・キル・オペレーションの範囲を1つのコヒーレンシ・ドメインに限定することが、TnおよびTenコヒーレンシ状態によって提供される追加の情報によって可能となり、すなわちメモリ・ブロックの共有されるコピーは、コヒーレンシ・ドメインの外部にはない。
図示するように、プロセスは、例えばL2キャッシュ230のマスタ232が図8のブロック788または図9のブロック1044でそのローカル相互接続114上にローカル・バス・キル・オペレーションを発行することで、ブロック1900で始まる。ローカル・バス・キル・オペレーションに応答してスヌーパ222、236が分散応答ロジック210に提供することができる様々な部分応答が、判定ブロック1902および1906の結果により図18に表されている。これらの部分応答は、CR応答ロジック210がローカル・バス・キル・オペレーションに関して何を生成するかを決定する。
具体的には、ブロック1902および1904で示すように、M、Me、Tx、Sr’、またはS’状態のいずれかのバス・キル・オペレーションを肯定する任意のスヌーパ236は、CRの受信に応答してデータを送信することなく、要求されたメモリ・ブロックのそのコピーを無効にする。肯定側Igスヌーパ236が存在する場合は、肯定側Igスヌーパ236はIg状態にとどまる。ブロック1906、1908、および1910でさらに示すように、応答ロジック210は、ローカル・バス・キル・オペレーションを肯定しない部分応答を何らかのスヌーパ236が提供する場合、「ローカル・クリーンアップ」を示すCRを生成し、そうでない場合、「成功」を示すCRを生成する。
図19を参照すると、本発明によるグローバル・バス・キル・オペレーションを実施する例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、例えばL2キャッシュ230のマスタ232が例えば図6のブロック626または図7のブロック726でシステム相互接続110上にバス・キル・オペレーションを発行することで、ブロック2000で始まる。グローバル・バス・キル・オペレーションに応答してスヌーパ222、236が分散応答ロジック210に提供することができる様々な部分応答が、判定ブロック2002および2006の結果により図19に表されている。これらの部分応答は、CR応答ロジック210がバス・キル・オペレーションに関して何を生成するかを決定する。
具体的には、ブロック2002および2004で示すように、M、Me、Tx、Sr’、またはS’状態のいずれかのバス・キル・オペレーションを肯定する任意の有効なスヌーパ236は、CRの受信に応答してデータを送信することなく、要求されたメモリ・ブロックのそのコピーを無効にする。肯定側Igスヌーパ236が存在する場合は、肯定側Igスヌーパ236はIg状態にとどまる。ブロック2006、2008、および2010でさらに示すように、応答ロジック210は、バス・キル・オペレーションを肯定しない部分応答を何らかのスヌーパ236が提供した場合、「クリーンアップ」を示すCRを生成し、そうでない場合、「成功」を示すCRを生成する。
次に図20を参照すると、本発明の好ましい実施形態によるデータ処理システムでローカル・バス書込みオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。プロセスは、例えば図9のブロック1004でのI/Oコントローラ214によるローカル相互接続114上のローカル・バス書込みオペレーションの発行と共に、ブロック2500で始まる。スヌーパ222、236が分散応答ロジック210に提供することができる様々な部分応答が、判定ブロック2502、2510、2512、2520、2522、および2530の結果により図20に表されている。これらの部分応答は、ローカル・バス書込みオペレーションに関するCRを決定する。
ターゲット・メモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答をスヌーパ222が提供しない場合(ブロック2502)、ブロック2504で示すように、有効な各肯定側スヌーパ236は、ターゲット・メモリ・ブロックのそれぞれのコピーを無効にし、ブロック2506で示すように、応答ロジック210は「go global」CRを提供する。LPCは、バス書込みオペレーションで必要な参加者であるからである。ブロック2510で示すように、要求されたメモリ・ブロックの任を担う(すなわちLPC)が、ローカル・バス書込みオペレーションを肯定しないことを示す部分応答をスヌーパ222が提供し(ブロック2512)、MまたはMeスヌーパ236がローカル・バス書込みオペレーションを肯定する場合(ブロック2510)、MまたはMeスヌーパ236は、要求されたメモリ・ブロックのそのコピーを無効にする(ブロック2254)。さらに、ターゲット・メモリ・ブロックを受け取るためにLPCが利用可能でなければならないので、ブロック2518で示すように、応答ロジック210は、「再試行ローカル」を示すCRを生成する。
ターゲット・メモリ・ブロックに対するLPCであることをメモリ・コントローラ・スヌーパ222が示し、M、Me、またはTxスヌーパ236がローカル・バス書込みオペレーションを肯定せず、M、Me、またはTxスヌーパ236が隠される可能性があることを部分応答が示す場合(ブロック2530)、応答ロジック210は、ブロック2534で同様に「再試行」CRを生成し、有効な各肯定側スヌーパ236は、要求されたメモリ・ブロックのそれぞれのコピーを無効にする(ブロック2532)。この場合、各肯定側スヌーパ236は、ターゲット・メモリ・ブロックのそのコピーが存在する場合はそれを無効にし、応答ロジック210は「再試行」CRを生成し、その結果、ローカル・バス書込みオペレーションは、要求されたメモリ・ブロックのHPCコピーがシステム内に残らないときにのみ成功する。
再びブロック2512を参照すると、MまたはMeスヌーパ236がローカル・バス書込みオペレーションを肯定し、スヌーパ222がローカル・バス書込みオペレーションをLPCとして肯定すると仮定して、要求側L2キャッシュ230が要求されたメモリ・ブロックをLPCスヌーパ222に送り、有効な肯定側スヌーパ236が存在する場合はそれが、要求されたメモリ・ブロックのそれぞれのコピーを無効にする(ブロック2514)。さらに、LPCスヌーパ222は、ターゲット・メモリ・ブロックに関連するドメイン標識504を「ローカル」にセットする。プロセスは、分散応答ロジック210が「成功」を示すCRを生成してブロック2516で終了する。
ブロック2520および後続のブロックで示すように、ターゲット・メモリ・ブロックに対するLPCであるが(ブロック2502)、ローカル・バス書込みオペレーションを肯定することができない(ブロック2522)ことを示す部分応答をスヌーパ222が提供し、MまたはMeスヌーパ236がローカル・バス書込みオペレーションを肯定せず(ブロック2510)、Txスヌーパ236がローカル・バス書込みオペレーションを肯定する場合、分散応答ロジック210は、「再試行ローカル」を示すCRを生成して(ブロック2518)、強制的にオペレーションをローカルに再発行させ、ローカル・バス書込みオペレーションを肯定する有効なスヌーパ236は、要求されたメモリ・ブロックのそれぞれのコピーを無効にする(ブロック2524)。ローカル・バス書込みオペレーションを肯定するLPCスヌーパ222を除いて同一の部分応答を仮定すると(ブロック2522)、要求側L2キャッシュ230は、要求されたメモリ・ブロックをLPCスヌーパ222に送り、ローカル・バス書込みオペレーションを肯定する有効な各スヌーパ236は、要求されたメモリ・ブロックのそれぞれのコピーを無効にする(ブロック2526)。さらに、LPCスヌーパ222は、ターゲット・メモリ・ブロックに関連するドメイン標識504を「ローカル」にセットする。
ローカル・バス書込みオペレーションと、ローカル・バス書込みオペレーションを肯定するTxスヌーパ236およびLPCスヌーパ222による部分応答とに応答して、無効化の前にTxスヌーパ236がターゲット・メモリ・ブロックをTnおよびTen状態のうちの1つに保持する場合(ブロック2540および2542)、分散応答ロジック210は、「ローカル・クリーンアップ」を示すCRを生成し、そうでない場合、「クリーンアップ」を示すCRを生成する(ブロック2528)。TnまたはTenコヒーレンシ状態の存在により、クリーンアップ・オペレーション中のバス・キル・オペレーションの範囲をローカル・コヒーレンシ・ドメインに限定することが可能となることに留意されたい。
次に図21を参照すると、本発明によるデータ処理システムでグローバル・バス書込みオペレーションを実施する例示的方法の高レベル論理流れ図が示されている。図示するように、プロセスは、例えばI/Oコントローラ214が図9のブロック1020でシステム相互接続110上にグローバル・バス書込みオペレーションを発行することで、ブロック2600で始まる。スヌーパ222、236が分散応答ロジック210に提供することができる様々な部分応答が、判定ブロック2610、2620、2624、2626、および2641の結果により図21に表されている。これらの部分応答は、グローバル・バス書込みオペレーションに関するCRを決定する。
ブロック2610で示すように、要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答をスヌーパ222が提供しない場合、ブロック2612で示すように、エラーが発生し、プロセスが停止する。しかし、要求されたメモリ・ブロックの任を担う(すなわちLPC)ことを示す部分応答をスヌーパ222が提供するが、グローバル・バス書込みオペレーションを提供しない場合(ブロック2620)、有効な各肯定側スヌーパ236は、要求されたメモリ・ブロックのそれぞれのコピーを無効にし(ブロック2621)、要求されたメモリ・ブロックを受け取るためにLPCが利用可能でなければならないので、応答ロジック210は、「再試行」を示すCRを生成する(ブロック2622)。メモリ・コントローラ・スヌーパ222がグローバル・バス書込みオペレーションを肯定するが、M、Me、またはTxスヌーパ236が場合によっては隠される可能性があることを部分応答が示す場合、応答ロジック210は、同様に「再試行」CRを生成し、有効な各肯定側スヌーパ236は、要求されたメモリ・ブロックのそれぞれのコピーを無効にする(ブロック2624、2621、および2622)。この場合、「再試行」CRが生成され、その結果、グローバル・バス書込みオペレーションは、要求されたメモリ・ブロックのHPCコピーがシステム内に残らないときにのみ成功する。
再びブロック2624を参照すると、スヌーパ222がグローバル・バス書込みオペレーションをLPCとして肯定し、M、Me、またはTxスヌーパ236が場合によっては隠される可能性があることを示す部分応答が生成されないと仮定すると、要求側L2キャッシュ230は、要求されたメモリ・ブロックをLPCスヌーパ222に送り、バス書込みオペレーションを肯定する有効なスヌーパ236が存在するならばそれが、要求されたメモリ・ブロックのそれぞれのコピーを無効にする(ブロック2628またはブロック2640)。ブロック2626および2630で表すように、S’またはSr’スヌーパ236が場合によっては隠されることがないことを部分応答が示す場合、プロセスは、分散応答ロジック210が「成功」を示すCRを生成して終了する。さらに、LPCスヌーパ222は、要求されたメモリ・ブロックに関連するドメイン標識504を、「ローカル」を示すようにセットする(ブロック2628)。一方、場合によっては隠されるS’またはSr’スヌーパ236の存在を示す少なくとも1つの部分応答が、グローバル・バス書込みオペレーション(ブロック2626)に応答して与えられた場合、分散応答ロジック210は、クリーンアップ・オペレーションの必要を示すCRを生成する。具体的には、無効化の前に、Txスヌーパ236がターゲット・メモリ・ブロックをTnおよびTen状態のうちの1つに保持し、LPCスヌーパ222およびTxスヌーパ236が共に要求側I/Oコントローラ214のローカル・コヒーレンシ・ドメイン内にある場合(ブロック2641)、分散応答ロジック210は、「ローカル・クリーンアップ」を示すCRを生成する(ブロック2644)。そうでない場合、応答ロジック210は、「クリーンアップ」を示すCRを生成する(ブロック2642)。
VIII.DMA書込みパイプライン化
好ましいデータ整合性モデルは、特定のDMAマスタ(例えばI/Oコントローラ214)による直接メモリ・アクセス(DMA)書込みオペレーションによってシステム・メモリ108に格納されるデータが、DMAデータをシステム・メモリ108に転送するのに使用されるバス書込みオペレーションの発行順にアクセスのために利用可能となることを必要とする。したがって、later−in−time DMA書込みオペレーションによってシステム・メモリ108に格納されたデータが読取りアクセスのために利用可能となるのが、同一のDMAマスタの、先に発行されたlatest−to−complete DMA書込みオペレーションによってシステム・メモリ108に書き込まれたデータよりも早くなるべきではない。
このデータ整合性モデルを満足するための単純な手法は、DMAマスタが、前のDMA書込みオペレーションが存在するならばそれが首尾よく完了するまでは、次のDMA書込みオペレーションを発行できないようにDMA書込みオペレーションを厳密に順序付けることである。しかし、データ処理システムが大きくなり、DMAアクセスの待ち時間が増大するとき、DMA書込みオペレーションの厳密な逐次化により、DMA装置が達成できるスループットが厳しく制限される可能性がある。したがって、DMA書込みオペレーションをパイプライン化できること、すなわち、追加の待ち時間の効果がマスクされるようにDMA書込みオペレーションを重複できることが望ましい。
パイプライン式DMA書込みオペレーションの存在下で好ましいデータ整合性モデルに準拠するために、何らかの技法を利用して、同じDMAマスタからのすべてのearlier−in−time DMA書込みオペレーションが完了するまで、later−in−time DMA書込みオペレーションのデータへのアクセスに対して保護しなければならない。本発明の好ましい実施形態では、DMAマスタ(例えばIOC214)およびIMC206によるドメイン標識504の適切な設定および保護ウィンドウ404aの実装によってこの保護が実現される。
次に図22を参照すると、本発明の第1実施形態による複数のオペレーション範囲(例えばローカルおよびグローバル)をサポートする例示的データ処理システム100でDMA書込みオペレーションをパイプライン化する方法を示す時空図が示されている。図22に示す例示的環境では、データ処理システム100は、N1およびN2として示される少なくとも2つの処理ノード102を含む。処理ノードN1 102はIOC214を含み、処理ノードN2 102は、少なくとも1つの処理装置104と、関連するシステム・メモリ108を有するIMC206とを含む。本発明を不明瞭にするのを避けるために、一部のオペレーション、一部の部分応答、およびすべてのオペレーションのデータ保有期間(data tenure)を図22から省いている。
例示的動作シナリオでは、処理ノードN1 102内のIOC214などのDMAマスタが、処理ノードN2 102のIMC206によって制御されるシステム・メモリ108内のメモリ位置に割り当てられた実アドレスAおよびBを対象とする一連のパイプライン式バス書込みオペレーション2700a、2700bを発行する。具体的には、処理ノードN1 102内のIOC214は、バス書込みオペレーション2700aが成功した(例えば、Success、Cleanup、またはLocal Cleanup組合せ応答(CR)を受け取った)という表示を受け取る前に、実アドレスBを対象とするバス書込みオペレーション2700bを発行することに留意されたい。図22に示す動作シナリオでは、処理ノードN2 102内のIMC206は、バス書込みオペレーション2700aを処理するために利用可能なキュー・エントリが欠如しているので、Retry部分応答2702を提供し、したがって応答ロジック210は、バス書込みオペレーション2700aに対するRetry組合せ応答2704を提供する。もちろん、他の動作環境では、バス書込みオペレーション2700aなどのバス書込みオペレーションは、他の理由、例えば、ターゲット・メモリ・ブロックに対するHPCであるL2キャッシュ230のスヌーパ236がRetry部分応答を提供するため、または前の読取りオペレーションとのアドレス・コリジョンのために、Retry組合せ応答を受け取ることがある。
DMAバス書込みオペレーションが図22に示す動作シナリオでパイプライン化されるので、前のバス書込みオペレーション2700aが成功する前に、後続のバス書込みオペレーション2700bが成功する(例えば、Success、Cleanup、またはLocal cleanup CRを受け取る)ことが可能となる。例えば、この動作シナリオでは、IMCスヌーパ206(およびその他のスヌーパ)が、Affirm部分応答2708を暗黙的または明示的に提供し、応答ロジック210が、Success CR2710を処理ノードN1 102内のIOC214と処理ノードN2 102内のIMC206に提供する。同一のソースからのすべての先に発行されたDMA書込みオペレーションが首尾よく完了した場合にのみ、DMAデータが読取りアクセスに対して利用可能となる好ましい整合性モデルを、処理ノードN1 102内のIOC214が実施できるように保証するために、参照番号2712で示すように、処理ノードN2 102内のIMC206は、Success CR2710に応答して、アドレスBのターゲット・メモリ・ブロックに関連するドメイン標識504をリセットして「グローバル」を示す。その結果、アドレスBを対象とする任意の後続のローカル読取りタイプ・オペレーション、例えば処理ノードN2 102の処理装置104のローカル・バス読取りオペレーション2720に、処理ノードN2 102のIMC206により、ドメイン標識504の状態に基づいて、暗黙的に、または明示的にRetry部分応答2722が与えられる。Retry部分応答2722は、応答ロジック210にRetry CR2724を生成させ、CR2724は、処理ノードN2 102の処理装置104にその読取り要求を、処理ノードN1 102のIOC214を含むすべての処理ノード102内のスヌーパによって観測されるグローバル・バス読取りオペレーション2726として強制的に再発行させる。
Retry部分応答2730およびRetry組合せ応答2732で示すように、IOC214は、IMC206のAffirm部分応答2738および応答ロジック210のSuccess組合せ応答2736で示すように、(バス書込みオペレーション2734として再発行される)アドレスAを対象とする以前に発行されたバス書込みオペレーションが首尾よく完了するまで、アドレスBのターゲット・メモリ・ブロックを読取りアクセスから保護する。Success組合せ応答2738に応答して、参照番号2740で示すように、処理ノードN2 102は、アドレスAのメモリ・ブロックに関連するドメイン標識504をリセットして「グローバル」を示す。このようにして、必要なら、IOC214は、以前のそのDMAバス書込みオペレーションのすべてが首尾よく完了するまで、アドレスAのターゲット・メモリ・ブロックを読取りオペレーションに対して保護することができる。
以前に発行されたすべてのDMA書込みオペレーションが首尾よく完了した後、Affirm部分応答2744およびSuccess組合せ応答2746で示すように、処理ノードN1 102のIOC214は、アドレスBに関連するメモリ・ブロックのその保護を中止し、グローバル・バス読取りオペレーション2742などのメモリ・ブロックに対する後続のバス読取りオペレーションが成功する。
図22から理解するであろうが、図22に示すDMA書込みオペレーションをパイプライン化する例示的方法は、DMA書込みオペレーションのターゲットである各メモリ・ブロックのドメイン標識504をリセットし、IOC214が好ましいデータ整合性モデルに違反することになるDMAデータへの読取りアクセスに対して保護できることを保証することを伴う。その結果、DMAデータを首尾よく読み取るのにグローバル・バス読取りオペレーションが必要となる。この要件により、好ましい整合性モデルの違反に対して保護されるが、これは、先に発行されたDMAバス書込みオペレーションがDMAデータへの読取りアクセスの前にすべて完了する場合に、DMAデータのさらなる保護が不要であり、ドメイン標識をリセットして「ローカル」を示すことができる点で広すぎる。したがって、図23は、DMAデータを含むメモリ・ブロックのドメイン標識がDMA書込みオペレーションのデータ・フェーズでセットまたはリセットされ、その結果、以前のDMA書込みオペレーションに、可能ならドメイン標識の状態が確立される前に完了する機会が与えられる、DMA書込みオペレーションをパイプライン化する改良型の方法を示す。
次に図23を参照すると、本発明の第2実施形態による複数のオペレーション範囲(例えばローカルおよびグローバル)をサポートする例示的データ処理システム100でDMA書込みオペレーションをパイプライン化する方法を示す時空図が示されている。図23に示す例示的環境では、データ処理システム100は、N1およびN2として示される少なくとも2つの処理ノード102を含む。処理ノードN1 102はIOC214を含み、処理ノードN2 102は、少なくとも1つの処理装置104と、関連するシステム・メモリ108を有するIMC206とを含む。
図23に示す例示的動作シナリオでは、処理ノードN1 102内のIOC214などのDMAマスタが、処理ノードN2 102のIMC206によって制御されるシステム・メモリ108内のメモリ位置に割り当てられた実アドレスAおよびBを対象とする一連のパイプライン式バス書込みオペレーション2800a、2800bを発行する。処理ノードN1 102内のIOC214は、バス書込みオペレーション2800aが成功した(例えば、Success、Cleanup、またはLocal Cleanup組合せ応答(CR)を受け取った)という表示を受け取る前に、実アドレスBを対象とするバス書込みオペレーション2800bを発行することに再び留意されたい。図23に示す動作シナリオでは、処理ノードN2 102内のIMC206は、(例えば、バス書込みオペレーション2800aを処理するために利用可能なキュー・エントリが欠如しているので)Retry部分応答2802を提供し、処理ノードN2 102の処理装置104は、Affirm部分応答2802bを提供し、したがって応答ロジック210は、バス書込みオペレーション2800aに対するRetry組合せ応答2804を提供する。
DMAバス書込みオペレーションが図23に示す動作シナリオでパイプライン化されるので、前のバス書込みオペレーション2800aが成功する前に、後続のバス書込みオペレーション2800bが成功する(例えば、Success、Cleanup、またはLocal cleanup CRを受け取る)ことが可能となる。例えば、この動作シナリオでは、IMCスヌーパ206(およびその他のスヌーパ)が、Affirm部分応答2808a、2808bを暗黙的または明示的に提供し、応答ロジック210が、Success CR2810を処理ノードN1 102内のIOC214(および処理ノードN2 102内のIMC206)に提供する。SuccessCRに応答して、処理ノードN2 102内のIMC206がDMAバス書込みオペレーションの各ターゲット・メモリ・ブロックに関連するドメイン標識504をセットして「グローバル」を示す、図22の第1実施形態とは異なり、IMC206は、適切な状態の表示がDMAデータを有するIOC214から受信されるまで、ドメイン標識504の適切な状態を確立するのを待機する。その結果、先に発行されたDMAバス書込みオペレーションに対して、DMAデータに対するバス読取りオペレーションに関するグローバル範囲を実施する前に成功するための追加の時間が与えられる。
例えば、図23に示すように、DMAバス書込みオペレーション2800bに関連するデータ保有期間2822の送信前に、IOC214は、メモリ・アドレスAを対象とするDMAバス書込みオペレーション2812を再発行することができる。この例では、例えば、Affirm部分応答2814を提供するIMC206と、場合によっては隠される部分応答2818を提供する処理装置104とに基づいて応答ロジック210からのDMAバス書込みオペレーション2812に対するCleanup組合せ応答2816を受け取るIOC214により、やはり実アドレスAを対象とするDMAバス・オペレーション2812は、データ保有期間2822の送信前に成功する(図9を参照しながら述べたように、Cleanup組合せ応答に応答して、IOC214は、1つまたは複数のバス・キル・オペレーション2820を発行して、アドレスAに関連するメモリ・ブロックの任意の残りのキャッシュされたコピーを無効にする)。前の各DMA書込みオペレーションが成功し、それに関連するすべてのキル・オペレーション(例えばバス・キル・オペレーション2820)がSuccessCR(例えば、Affirm部分応答2819および2821に基づいて生成されたSuccessCR2823)を受け取ったと仮定すると、IOC214は、DMAバス書込みオペレーション2800aに関するデータ保有期間を有するIMC206に、関連するドメイン標識504をリセットして「ローカル」を示すべきであるという表示を送る。データ保有期間2822の受信に応答して、IMC206は、それに応じてアドレスBのDMAデータを格納し、関連するドメイン標識504をリセットして「ローカル」を示す(参照番号2824)。もちろん、IOC214がSuccessCR2823の受信前の任意の時間にデータ保有期間2822を送信した場合、IOC214は、関連するドメイン標識をセットして「グローバル」を示すべきであるという表示をデータに提供し、IMC206は、「グローバル」を示すためにそれに応じてアドレスBに関連するドメイン標識504をセットしたことになる。
その後、処理ノードN2 102のIMC206が、アドレスBを対象とするローカル読取りタイプ・オペレーション(例えば、処理ノードN2 102の処理装置104のローカル・バス読取りオペレーション2830)を受け取ったとき、IMC206は、ドメイン標識504のリセット状態に基づいてAffirm部分応答2832を提供することができる。それに応答して、応答ロジック210は、IOC214を含むようにブロードキャスト範囲を広げることなくDMAデータを対象とするローカル・バス読取りオペレーション2830をサービスできることを意味する、Success組合せ応答2834を生成すると共に、パイプライン式DMA書込みオペレーションの存在下で好ましい整合性モデルを依然としてサービスする。すべての先に発行されたDMAバス書込みオペレーションが成功したことを仮定すると、参照番号2838で示すように、DMAバス書込みオペレーション2812に関連するデータ保有期間2836は、IMC206がメモリ・アドレスAのドメイン標識504をリセットして「ローカル」を示すべきであることを同様に示す。
以上説明したように、本発明は、DMA書込みオペレーションを処理する改良型の方法およびシステムを提供する。本発明によれば、I/OコントローラなどのDMAマスタが、一続きのパイプライン式DMA書込みオペレーションを開始し、すべての先行するDMA書込みオペレーションが成功する前にDMA書込みオペレーションに関連するDMAデータにアクセスさせることになる任意の読取りタイプ・アクセスに対してDMAデータを保護する。DMAデータを保護するために、DMAマスタは、DMA書込みオペレーションが開始した直後の時間から、LPC(例えばメモリ・コントローラ)およびHPCが存在するならばそれに関して、DMA書込みオペレーションおよびすべてのより古いDMA書込みオペレーションが成功するまで、関連するDMAデータを対象とする読取りタイプ・アクセスをDMAマスタがその間に再試行する保護ウィンドウを実施する。メモリ・コントローラによって維持されるドメイン標識は、すべての関連する読取りタイプ・オペレーションが保護ウィンドウの間にDMAマスタにとって可視されることを保証することにより、保護ウィンドウを実施する助けになる。上述のように、少なくとも一部の実施形態では、そのような可視性は、DMAデータを対象とするすべての読取りタイプ・オペレーションに対して必要ではない。関連するDMA書込みオペレーションおよび同一のソースからのすべての前のDMA書込みオペレーションが成功し、かつすべてのそのようなDMA書込みオペレーションに対するキル・オペレーションが存在するならばすべてのキル・オペレーションがSuccess組合せ応答を受け取る場合、DMAデータに関するドメイン標識をリセットして、DMAマスタを除外する範囲(例えば「ローカル」範囲)を示すことができる。
好ましい実施形態を参照しながら説明したように、本発明を具体的に示したが、本発明の精神および範囲から逸脱することなく、形態および細部の様々な変更をその中で行うことができることを理解されよう。