JP5078396B2 - 動作のスヌーピングに応答して無効コヒーレンシー状態を更新するデータ処理システム、キャッシュ・システム、および方法 - Google Patents

動作のスヌーピングに応答して無効コヒーレンシー状態を更新するデータ処理システム、キャッシュ・システム、および方法 Download PDF

Info

Publication number
JP5078396B2
JP5078396B2 JP2007062831A JP2007062831A JP5078396B2 JP 5078396 B2 JP5078396 B2 JP 5078396B2 JP 2007062831 A JP2007062831 A JP 2007062831A JP 2007062831 A JP2007062831 A JP 2007062831A JP 5078396 B2 JP5078396 B2 JP 5078396B2
Authority
JP
Japan
Prior art keywords
coherency
cache
block
data
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007062831A
Other languages
English (en)
Other versions
JP2007257631A (ja
Inventor
ガイ、リン、ガスリー
デレック、エドワード、ウィリアムズ
ウィリアム、ジョン、スターク
ジェフリー、エイ、ステューチェリ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007257631A publication Critical patent/JP2007257631A/ja
Application granted granted Critical
Publication of JP5078396B2 publication Critical patent/JP5078396B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は一般的に、データ処理に関し、特に、キャッシュ・コヒーレント・データ処理システム内のデータ処理に関する。
サーバ・コンピュータ・システムのような従来の対称型マルチプロセッサ(SMP)コンピュータ・システムは、複数の処理装置を含み、そのすべてが、通常、1つ以上のアドレス・バス、データ・バス、およびコントロール・バスを含むシステム相互接続に結合されている。システム相互接続に結合されたシステム・メモリは、マルチプロセッサ・コンピュータ・システム内の最低レベルの揮発性メモリであり、一般的に、リードおよびライト・アクセスのために、すべての処理装置によりアクセス可能である。システム・メモリ内にある命令およびデータに対するアクセス待ち時間を減少させるために、通常、各処理装置は、さらにそれぞれのマルチレベル・キャッシュ階層によりサポートされ、このマルチレベル・キャッシュ階層の下位レベルは、1つ以上のプロセッサ・コアにより共有されうる。
複数のプロセッサ・コアが同じキャッシュ・ライン・データへのライト・アクセスを要求することがあり、かつ変更されたキャッシュ・ラインは、すぐにはシステム・メモリと同期しないため、通常、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は、キャッシュ・コヒーレンシー・プロトコルを実行して、システム・メモリの内容に対するプロセッサ・コアの様々な「ビュー」の間で、少なくとも最低水準のコヒーレンスを確保する。特に、キャッシュ・コヒーレンシーは、最低でも、処理装置がメモリ・ブロックのコピーにアクセスして、続いてメモリ・ブロックの更新されたコピーにアクセスした後、処理装置がメモリ・ブロックの更新前の古いコピーに再びアクセスすることはできないことを要求する。
通常、キャッシュ・コヒーレンシー・プロトコルは、キャッシュ階層間でキャッシュ状態情報を伝えるために利用される1組のコヒーレンシー・メッセージ、ならびに各キャッシュ階層のキャッシュ・ラインと関連して保存される1組のコヒーレンシー状態を規定する。典型的な実装では、コヒーレンシー状態情報は、公知のMESI(Modified, Exclusive, Shared, Invalid(変更、排他、共有、無効))プロトコル、またはその変形の形を取り、コヒーレンシー・メッセージは、メモリ・アクセス要求の要求元および宛先のキャッシュ階層内の、プロトコルで規定されるコヒーレンシー状態遷移を示す。
いくつかのキャッシュ・コヒーレンシー・プロトコルでは、後続の動作に応じて、1つ以上のコヒーレンシー状態が、不正確に形成または更新される。したがって、これらのコヒーレンシー状態は、関連するメモリ・ブロックのシステム全体のコヒーレンシー状態を正確に反映できない。本発明は、不正確な、または間違ったコヒーレンシー状態の存在は、たとえそれがコヒーレンシー・エラーを引き起こさないとしても、不正確なコヒーレンシー状態が低減、または除去された場合には要求されないであろうシステム動作が実行される原因となりうることを認識する。
上記に照らして、本発明は、改良されたキャッシュ・コヒーレント・データ処理システム、キャッシュ・システム、およびキャッシュ・コヒーレント・データ処理システムにおけるデータ処理方法を提供する。
一実施形態では、キャッシュ・コヒーレント・データ処理システムは、少なくとも第1および第2のコヒーレンシー・ドメインを含む。データ処理システムの第1のコヒーレンシー・ドメイン内の第1のキャッシュ・メモリにおいて、記憶位置およびアドレス・タグと関連するコヒーレンシー状態フィールドは、アドレス・タグが有効であることと、記憶位置が有効データを含まないこととを示す第1のデータ無効コヒーレンシー状態に設定される。アドレス・タグに一致しており、かつ排他的アクセス動作を開始した要求元の相対的ロケーションを示す目標アドレスを指定する排他的アクセス動作のスヌーピングに応答して、第1のキャッシュ・メモリは、コヒーレンシー状態フィールドを、第1のデータ無効コヒーレンシー状態から、アドレス・タグが有効であることと、記憶位置が有効データを含まないことと、要求元の相対的ロケーションに基づく排他的アクセス動作が無事完了した時に、アドレス・タグと関連する目標メモリ・ブロックが、第1のコヒーレンシー・ドメイン内にキャッシュされているかどうかとを示す、第2のデータ無効コヒーレンシー状態に更新する。データ無効コヒーレンシー状態を更新することにより、データ無効コヒーレンシー状態により提供されるヒント情報の正確さが高まり、後続のデータ・アクセス動作のブロードキャスト範囲の選択の改善につながる。
本発明のすべての目的、特徴、および利点は、以下の詳細に書かれた説明において明らかになるであろう。
I.代表的なデータ処理システム
ここで、特に、図1を参照すると、本発明のキャッシュ・コヒーレント対称型マルチプロセッサ(SMP)データ処理システムの代表的実施形態の高レベルのブロック図が示されている。図示したように、データ処理システム100は、データおよび命令を処理する複数の処理ノード102a、102bを含む。処理ノード102a、102bは、アドレス、データ、および制御情報を伝達するシステム相互接続110に結合される。例えば、システム相互接続110は、バス型相互接続、スイッチ型相互接続、またはハイブリッド相互接続として実現されうる。
図示された実施形態では、各処理ノード102は、4つの処理装置(PU)104a〜104dを含むマルチチップ・モジュール(MCM)として実現されて、これらの4つの処理装置104a〜104dの各々は、それぞれ集積回路として実現されることが好ましい。各処理ノード102内の処理装置104a〜104dは、システム相互接続110のように、1つ以上のバスまたはスイッチで実現されうるローカル相互接続114で通信を行うために結合される。
各ローカル相互接続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)208、および命令を実行する1つ以上の実行ユニット224を含む。さらに後述するように、実行ユニット224は、メモリ・ブロックを参照する、またはメモリ・ブロックを参照する動作を生じさせるメモリ・アクセス命令を実行するロード/ストア・ユニット(LSU)228を含むことが好ましい。
各プロセッサ・コア200の動作は、マルチレベル揮発性メモリ階層によりサポートされており、このマルチレベル揮発性メモリ階層は、その最低レベルに共有システム・メモリ108a〜108d、およびその上位レベルに1つ以上のレベルのキャッシュ・メモリを有する。図示された実施形態では、各処理装置104は、その処理ノード102内のシステム・メモリ108a〜108dの各々に対するリードおよびライト・アクセスを、プロセッサ・コア200a〜200bから受信された要求、およびローカル相互接続114上のスヌーパ(S)222によりスヌープされた動作に応答して制御する統合メモリ・コントローラ(IMC)206を含む。IMC206は、ベース・アドレス・レジスタ(BAR)ロジック240を含み、このベース・アドレス・レジスタ(BAR)ロジック240は、IMC206が責任を有するアドレスを規定するレンジ・レジスタを含む。
具体的な実施形態では、処理装置104のキャッシュ・メモリ階層は、各プロセッサ・コア200内のストア・スルー・レベル1(L1)キャッシュ226、および処理装置104のすべてのプロセッサ・コア200a、200bにより共有されるレベル2(L2)キャッシュ230を含む。L2キャッシュ230は、L2アレイおよびディレクトリ234、ならびにマスタ232およびスヌーパ236を有するキャッシュ・コントローラを含む。マスタ232は、ローカル相互接続114およびシステム相互接続110上のトランザクションを開始するとともに、関連するプロセッサ・コア200a〜200bから受信されたメモリ・アクセス(および他の)要求に応じて、L2アレイおよびディレクトリ234にアクセスする。スヌーパ236は、ローカル相互接続114上の動作をスヌープして、適切な応答を提供するとともに、動作により要求されたL2アレイおよびディレクトリ234に対する任意のアクセスを実行する。
図示したキャッシュ階層は、2つのレベルのキャッシュだけを含むが、当業者は、他の実施形態では、上位レベルのキャッシュの内容を完全に含む、部分的に含む、または全く含まない、オンチップまたはオフチップのインラインまたはルックアサイド・キャッシュの付加的なレベル(L3、L4、L5など)を含みうることを理解するであろう。
各処理装置104は、データ処理システム100内のキャッシュ・コヒーレンシーを保持する分散型コヒーレンシー・シグナリング機構の一部を実装する応答ロジック210をさらに含む。さらに、各処理装置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キャッシュ・アレイ300、ならびにL2キャッシュ・アレイ300の内容のL2キャッシュ・ディレクトリ302を含む。従来のセット・アソシアティブ・キャッシュのように、システム・メモリ108内の記憶域は、システム・メモリの(実)アドレス内の所定のインデックス・ビットを利用して、キャッシュ・アレイ300内の特定の合同クラスにマップされる。キャッシュ・アレイ300内に格納された特定のキャッシュ・ラインは、キャッシュ・アレイ300内の各キャッシュ・ラインに対して1つのディレクトリ・エントリを含むキャッシュ・ディレクトリ302内に記録される。当業者に理解されるように、キャッシュ・ディレクトリ302内の各ディレクトリ・エントリは、少なくとも、対応する実アドレスのタグ部分を利用して、キャッシュ・アレイ300内に格納された特定のキャッシュ・ラインを指定するタグ・フィールド304、キャッシュ・ラインのコヒーレンシー状態を示す状態フィールド306、および同じ合同クラス内の他のキャッシュ・ラインについてキャッシュ・ラインの置換順序を示すLRU(Least Recently Used(最長時間未使用))フィールド308を有する。
II.代表的動作
ここで図4を参照すると、図1のデータ処理システム100のローカルまたはシステム相互接続110、114上の代表的動作の時系列図が示されている。動作は、L2キャッシュ230のマスタ232(または、I/Oコントローラ214のような他のマスタ)が、ローカル相互接続114またはシステム相互接続110上に要求402を発行するときに始まる。要求402は、所望のアクセスのタイプを示すトランザクション・タイプと、その要求によりアクセスされる予定のリソースを示すリソース識別子(例えば、実アドレス)とを含むことが好ましい。要求の一般的な種類は、下記の表1に示したものを含むことが好ましい。
Figure 0005078396
要求402は、メモリ・コントローラ206のスヌーパ222、ならびにL2キャッシュ230のスヌーパ236により受信される(図1)。若干の例外はあるものの、一般的に要求402は、それが処理装置104により内部的に処理できない場合にだけ、ローカル相互接続114またはシステム相互接続110上を送信されるため、要求402のマスタ232と同じL2キャッシュ230内のスヌーパ236は、要求402をスヌープしない(すなわち、一般的に、セルフ・スヌープを行わない)。要求402を受信する各スヌーパ222、236は、要求402に対する少なくとも当該スヌーパの応答を示す、それぞれの部分応答406を提供できる。メモリ・コントローラ206内のスヌーパ222は、例えば、スヌーパ222が、要求アドレスに対して責任があるかどうか、およびスヌーパ222が、要求を処理するために利用可能なリソースを有するかどうかなどに基づいて、提供する部分応答406を決定する。L2キャッシュ230のスヌーパ236は、例えば、そのL2キャッシュ・ディレクトリ302の可用性、要求を取り扱うスヌーパ236内のスヌープ・ロジックの可用性、およびL2キャッシュ・ディレクトリ302内の要求アドレスと関連するコヒーレンシー状態などに基づいて、その部分応答406について決定できる。
スヌーパ222および236の部分応答は、要求402に対するシステム全体の結合応答(CR)410を決定するために、応答ロジック210により、段階的に、または一度に、論理的に結合される。後述の範囲制限に従って、要求402に対するシステム全体の応答(例えば、成功、失敗、再試行など)を示すために、応答ロジック210は、そのローカル相互接続114またはシステム相互接続110を介して、マスタ232およびスヌーパ222、236に結合応答410を提供する。CR410が要求402の成功を示すとき、CR410は、例えば、要求されたメモリ・ブロックに対するデータ・ソース、要求されたメモリ・ブロックが、マスタ232によりキャッシュされる予定のキャッシュ状態、1つ以上のL2キャッシュ230内の要求されたメモリ・ブロックを無効にする「クリーンアップ」(例えば、KILL)動作が必要であるかどうかなどを示すことができる。
結合応答410の受信に応答して、通常、マスタ232およびスヌーパ222、236のうちの1つ以上が、要求402を処理するために、1つ以上の動作を実行する。これらの動作は、マスタ232へのデータ供給と、1つ以上のL2キャッシュ230内にキャッシュされたデータのコヒーレンシー状態の無効化、またはなんらかの更新、キャストアウト動作の実行、システム・メモリ108へのデータの書き戻しなどを含みうる。要求402により要求された場合、要求されたメモリ・ブロック、すなわち目標メモリ・ブロックは、応答ロジック210による結合応答410の生成前または生成後に、マスタ232に、またはマスタ232から送信されうる。
次に、要求に対するスヌーパ222、236の部分応答と、要求または要求の結合応答に応答してスヌーパにより実行される動作とについて、当該スヌーパが、要求により指定される要求アドレスに関して最高コヒーレンシー点(HPC)であるか、最低コヒーレンシー点(LPC)であるか、またはどちらでもないかに関連して説明する。LPCは、本明細書では、メモリ・ブロックのリポジトリに対する制御点として機能するメモリ・デバイスまたはI/Oデバイスとして定義される。メモリ・ブロックに対するHPCがないとき、LPCは、メモリ・ブロックの真のイメージを保持する記憶装置に対するアクセスを制御するとともに、メモリ・ブロックの付加的なキャッシュ・コピーを作る要求を認可する、または拒絶する権限を有する。図1および図2のデータ処理システム実施形態における典型的な要求では、LPCは、参照メモリ・ブロックを保持するシステム・メモリ108に対するメモリ・コントローラ206であろう。HPCは、本明細書では(LPCにおける対応するメモリ・ブロックと同じであっても、なくてもよい)メモリ・ブロックの真のイメージをキャッシュする一意的に特定されたデバイスとして定義され、メモリ・ブロックを変更する要求を認可する、または拒絶する権限を有する。HPCはまた、メモリ・ブロックを変更しない動作に応答して、要求元にメモリ・ブロックのコピーを提供できる。したがって、図1および図2のデータ処理システム実施形態における典型的な要求では、もしHPCがある場合には、それはL2キャッシュ230であろう。メモリ・ブロックに対するHPCを指定するために他の標識を利用しうるが、表2を参照して下記に詳述するように、本発明の好ましい実施形態は、もしメモリ・ブロックに対するHPCがある場合には、L2キャッシュ230のL2キャッシュ・ディレクトリ302内の選択されたキャッシュ・コヒーレンシー状態を利用して、そのメモリ・ブロックに対するHPCを指定する。
さらに図4を参照すると、要求402で参照されるメモリ・ブロックに対して、もしHPCがある場合にはHPCが、または、HPCがない場合にはメモリ・ブロックのLPCが、保護ウィンドウ404aの間、要求402に応じた、メモリ・ブロックの所有権移転を保護する責任を有することが好ましい。図4に示した代表的シナリオでは、要求402の要求アドレスにより指定されたメモリ・ブロックに対するHPCであるスヌーパ236は、スヌーパ236がその部分応答406を決定してから、結合応答410を受信するまでの保護ウィンドウ404aの間、マスタ232への要求メモリ・ブロックの所有権の移転を保護する。保護ウィンドウ404aの間、スヌーパ236は、所有権がマスタ232に正しく移転されるまで、同じ要求アドレスを指定する他の要求に対して、他のマスタが所有権を取得することを防止する部分応答406を提供することにより、所有権移転を保護する。同様に、マスタ232は、結合応答410の受信に続いて、要求402で要求されたメモリ・ブロックの所有権を保護するために保護ウィンドウ404bを開始する。
すべてのスヌーパ222、236は、上述したCPUおよびI/O要求を取り扱うリソースが限られているため、いくつかの異なったレベルの部分応答および対応するCRが可能である。例えば、要求されたメモリ・ブロックに対して責任があるメモリ・コントローラ206内のスヌーパ222が、要求を取り扱うために利用可能なキューを有するとき、スヌーパ222は、スヌーパ222が要求に対するLPCとして機能できることを示す部分応答で応答できる。一方、スヌーパ222が要求を取り扱うために利用可能なキューを有しないとき、スヌーパ222は、スヌーパ222がメモリ・ブロックに対するLPCであるが、現在、要求を処理できないことを示す部分応答で応答できる。
同様に、L2キャッシュ230内のスヌーパ236は、要求を取り扱うために、利用可能なスヌープ・ロジックを要求することができるとともに、L2キャッシュ・ディレクトリ302にアクセスすることができる。これらのリソースのどちらか(または、両方)に対してアクセスできないと、所要のリソースが欠如するため、現在、要求を処理できないことを示す部分応答(および対応するCR)を発生させる。
以後、現在、要求を処理するために必要な利用可能なすべての内部リソースを有することを示す部分応答を提供するスヌーパ222、236は、要求を「肯定する」と言われる。スヌーパ236の場合、スヌープされる動作を肯定する部分応答は、スヌーパ236における要求メモリ・ブロック、すなわち目標メモリ・ブロックのキャッシュ状態を示すことが好ましい。現在、要求を処理するために必要な利用可能なすべての内部リソースをスヌーパ236が有しないことを示す部分応答を提供するスヌーパ222、236は、「隠されているかもしれない」、または要求を処理することが「できない」と言われうる。このようなスヌーパ236は、スヌーパ236が利用可能なスヌープ・ロジックの欠如、または現時点においてL2キャッシュ・ディレクトリ302にアクセスすることができないことにより、上記に定義された意味において要求を「肯定する」ことができず、かつ他のマスタ232およびスヌーパ222、236の立場から見ると、未知のコヒーレンシー状態を有するため、「隠されているかもしれない」、または要求を処理することが「できない」。
III.データ配送ドメイン
ブロードキャストに基づく従来のデータ処理システムは、ブロードキャスト通信を介して、キャッシュ・コヒーレンシーとデータ配送の両方を取り扱い、このブロードキャスト通信は、従来システムでは、少なくとも、システム内のすべてのメモリ・コントローラおよびキャッシュ階層に対してシステム相互接続上を送信される。他のアーキテクチャおよび類似の規模のシステムと比較すると、ブロードキャストに基づくシステムは、アクセス待ち時間の減少、ならびに共有メモリ・ブロックのより良いデータ・ハンドリングおよびコヒーレンシー管理を提供し得る。
ブロードキャストに基づくシステムの規模が拡大するとき、システム相互接続上のトラフィック量が増加し、システム相互接続上の通信に対して、より多くの帯域幅が必要となるため、システム規模とともにシステム・コストが急上昇することを意味する。すなわち、平均トラフィック量がnトランザクションであるm個のプロセッサ・コアを有するシステムは、m×nのトラフィック量を有し、ブロードキャストに基づくシステムのトラフィック量が、加法的にではなく乗法的に拡大することを意味する。相当大きい相互接続帯域幅に対する要件を超えてシステム規模が増大すると、アクセス待ち時間を増加させるという副次的効果をもたらす。例えば、最悪の場合には、要求されたメモリ・ブロックを共有コヒーレンシー状態で保持する最も遠く離れた下位レベル・キャッシュの結合応答待ち時間により、リード・データのアクセス待ち時間が制限される。
システム相互接続帯域幅要件およびアクセス待ち時間を低減するとともに、さらにブロードキャストに基づくシステムの利点を保持するために、データ処理システム100の全体に渡って分散された複数のL2キャッシュ230が、「特殊」共有コヒーレンシー状態に、同じメモリ・ブロックのコピーを保持することを許され、この「特殊」共有コヒーレンシー状態は、これらのキャッシュが、キャッシュ間介入を用いて、要求元L2キャッシュ230にメモリ・ブロックを供給することを可能にする。データ処理システム100のようなSMPデータ処理システム内の共有メモリ・ブロックに対する複数のコンカレント・ソースおよび分散型ソースを実装するために、2つの課題に対処しなければならない。第1に、上述した「特殊」共有コヒーレンシー状態のメモリ・ブロックのコピーの作成を管理する規則を実装しなければならない。第2に、スヌープしているL2キャッシュ230がある場合に、どのスヌープしているL2キャッシュ230が、例えば、バス・リード動作またはバスRWITM動作に応答して、要求元L2キャッシュ230に共有メモリ・ブロックを提供するのかを管理する規則がなければならない。
本発明によれば、これらの課題の両方が、データ・ソーシング・ドメインの実装を通じて対処される。特に、ドメインが、データ要求への応答に関与する1つ以上の下位レベル(例えば、L2)キャッシュを含むように定義されるSMPデータ処理システム内の各ドメインは、一度に、「特殊」共有コヒーレンシー状態で特定のメモリ・ブロックを保持するただ1つのキャッシュ階層だけを含むことを許される。バス・リード型(例えば、READ、またはRWITM)動作が、同じドメイン内の要求元下位レベル・キャッシュにより開始されるときに、そのキャッシュ階層が存在する場合、そのキャッシュ階層は、要求を出した下位レベル・キャッシュに要求されたメモリ・ブロックを提供する責任がある。図1のデータ処理システム100では、多数の異なったドメイン・サイズが定義されうるが、各処理ノード102(すなわち、MCM)をデータ・ソーシング・ドメインとみなすと都合が良い。このような「特殊」共有状態(すなわち、Sr)の一例が、表2を参照しながら後述される。
IV.コヒーレンシー・ドメイン
上述したデータ配送ドメインの実装は、データ・アクセス待ち時間を改善するが、この改善は、システム規模が拡大するときのトラフィック量のm×n乗法性には対処していない。トラフィック量を減少させるとともに、さらにブロードキャストに基づくコヒーレンシー機構を保持するために、本発明の好ましい実施形態は、コヒーレンシー・ドメインを追加的に実装する。このコヒーレンシー・ドメインは、上述したデータ配送ドメインのように、各処理ノード102が個々のコヒーレンシー・ドメインを形成するように実装することができる(しかし、そうされることが要求されているわけではない)。データ配送ドメインおよびコヒーレンシー・ドメインは、同一の広がりを有しうるが、そうであることを要求されているわけではなく、データ処理システム100の代表的動作について説明する目的で、以下では、データ配送ドメインおよびコヒーレンシー・ドメインが、処理ノード102により定義された境界を有するものとする。
コヒーレンシー・ドメインの実装は、すべてのコヒーレンシー・ドメインよりも少数で要求を処理できる場合には、システム相互接続110上のドメイン間ブロードキャスト通信を制限することにより、システム・トラフィックを抑える。例えば、処理ノード102aの処理装置104aが、バス・リード動作を発行するとき、処理装置104aは、他のコヒーレンシー・ドメイン(例えば、処理ノード102b)内の関与装置に対してではなく、それ自身のコヒーレンシー・ドメイン(例えば、処理ノード102a)内のすべての関与装置に対してバス・リード動作を最初にブロードキャストすることを選択することができる。本明細書において、動作のマスタと同じコヒーレンシー・ドメイン内のそれらの関与装置だけに対して送信されるブロードキャスト動作は、「ローカル動作」と定義される。処理装置104aのコヒーレンシー・ドメインの中でローカル・バス・リード動作を処理できるとき、バス・リード動作のさらなるブロードキャストは、実行されない。しかしながら、ローカル・バス・リード動作に対する部分応答および結合応答が、処理ノード102aのコヒーレンシー・ドメインの中だけではバス・リード動作を処理できないことを示すとき、ローカル・コヒーレンシー・ドメインに加えて、1つ以上の付加的なコヒーレンシー・ドメインを含むようにブロードキャスト範囲を広げることができる。
基本的な実装では、ローカル・コヒーレンシー・ドメインだけを含む「ローカル」範囲、およびSMPデータ処理システム内の他のすべてのコヒーレンシー・ドメインを含む「グローバル」範囲の2つのブロードキャスト範囲が使用される。したがって、本明細書において、SMPデータ処理システム内のすべてのコヒーレンシー・ドメインに対して送信される動作は、「グローバル動作」と定義される。動作を提供するために、ローカル動作が使用されるか、またはより拡張的な範囲の動作(例えば、グローバル動作)が使用されるかにかかわらず、キャッシュ・コヒーレンシーは、SMPデータ処理システム内のすべてのコヒーレンシー・ドメインの全体で保持されることが重要である。ローカルおよびグローバル動作の例は、米国特許出願第11/055,305号に詳述されている。
好ましい実施形態では、動作の範囲は、一実施形態では、1ビットのフラグを含みうるローカル/グローバル範囲標識(信号)で、バス動作において示される。処理装置104内の転送ロジック212は、動作におけるローカル/グローバル範囲標識(信号)の設定に基づいて、ローカル相互接続114を介して受信される動作をシステム相互接続110上に転送すべきか否かを判断する。
本明細書では、コヒーレンシー・ドメイン(または、処理ノード)が、メモリ・ブロックのLPCを含むとき、コヒーレンシー・ドメインは、メモリ・ブロックの「ホーム」コヒーレンシー・ドメイン(または、「ホーム」ノード)と言われる。
V.ドメイン標識
不要なローカル動作の発行を制限して、それにより動作上の待ち時間を減少させて、かつローカル相互接続上の付加的な帯域幅を保存するために、本発明は、1つのメモリ・ブロックあたり1つのドメイン標識を付与する。このドメイン標識は、関連するメモリ・ブロックのコピーが、ローカル・コヒーレンシー・ドメイン以外でキャッシュされているか否かを示す。例えば、図5は、本発明のドメイン標識の第1の代表的実装例を示す。図5に示したように、ダイナミック・ランダム・アクセス・メモリ(DRAM)で実装されうるシステム・メモリ108は、複数のメモリ・ブロック500を格納する。システム・メモリ108は、各メモリ・ブロック500と関連して、メモリ・ブロック500内に、もし誤りがあれば、それを訂正するために利用される誤り訂正符号(ECC)502、およびドメイン標識(D)504を保存する。本発明のいくつかの実施形態では、ドメイン標識504は、特定のコヒーレンシー・ドメインを識別する(すなわち、コヒーレンシー・ドメインまたはノードIDを指定する)ことができるが、以下では、ドメイン標識504は、関連するメモリ・ブロック500が、メモリ・ブロック500に対するLPCとして機能するメモリ・コントローラ206と同じコヒーレンシー・ドメインの中だけでキャッシュされるとき、(例えば、「ローカル」を示すために‘1’に)セットされる1ビットの標識であると仮定される。それ以外の場合には、ドメイン標識504は、(例えば、「グローバル」を示すために‘0’に)リセットされる。「ローカル」を示すためのドメイン標識504を間違って「グローバル」に設定してしまうと、いかなるコヒーレンシー・エラーも誘発しないが、動作のグローバル・ブロードキャストを不必要に実行するかもしれない。
動作に応答してメモリ・ブロックを提供するメモリ・コントローラ206(およびL2キャッシュ230)は、要求メモリ・ブロックと共に、関連するドメイン標識504を送信する。
VI.代表的コヒーレンシー・プロトコル
本発明は、上述したデータ配送およびコヒーレンシー・ドメインの実装を利用するように設計されたキャッシュ・コヒーレンシー・プロトコルを実装する。好ましい実施形態では、プロトコル内のキャッシュ・コヒーレンシー状態は、(1)キャッシュが、メモリ・ブロックに対するHPCであるかどうかを示すことに加えて、(2)キャッシュ・コピーが、そのメモリ階層レベルのキャッシュの中で一意的であるかどうか(すなわち、システム全体で唯一のキャッシュ・コピーであるかどうか)、(3)キャッシュが、メモリ・ブロックに対する要求のマスタに、そのメモリ・ブロックのコピーを提供できるかどうか、およびいつ提供できるか、(4)メモリ・ブロックのキャッシュ・イメージが、LPC(システム・メモリ)における対応するメモリ・ブロックと整合するかどうか、ならびに(5)リモート・コヒーレンシー・ドメイン内の他のキャッシュが、一致アドレスを有するキャッシュ・エントリを保持する(可能性がある)かどうかを示す。これらの5つの属性は、例えば、下表2にまとめられた公知のMESI(Modified、Exclusive、Shared、Invalid(変更、排他、共有、無効))プロトコルの代表的変形で表現されうる。
Figure 0005078396
A. Ig状態
メモリ・ブロックが、局所的にだけキャッシュされていることが知られているか否かを判断するために、LPCにアクセスしなければならないのを回避するために、メモリ・ブロックのコピーがコヒーレンシー・ドメイン内にキャッシュされたまま残っていない場合には、Ig(無効グローバル)のコヒーレンシー状態が、ドメイン表示を保持するために利用される。本明細書において、Ig状態は、(1)キャッシュ・アレイ内の関連するメモリ・ブロックが無効であること、(2)キャッシュ・ディレクトリ内のアドレス・タグが有効であること、および(3)アドレス・タグにより特定されるメモリ・ブロックのコピーが、ホーム・コヒーレンシー・ドメイン以外のコヒーレンシー・ドメイン内にキャッシュされる可能性があることを示すキャッシュ・コヒーレンシー状態と定義される。Ig表示は、不正確であることが好ましく、すなわち、Ig表示は、コヒーレンシーに違反しない限りにおいて不正確であってもよいことを意味する。
Ig状態は、ホーム・コヒーレンシー・ドメイン内の下位レベル・キャッシュが、排他的アクセス要求(例えば、バスRWITM動作)に応じて他のコヒーレンシー・ドメイン内の要求元に、要求メモリ・ブロックを提供することに応答して、当該キャッシュ内に形成される。
Ig状態を含むキャッシュ・ディレクトリ・エントリは、潜在的に有用性のある情報を有するため、少なくともいくつかの実装では、I状態のエントリよりもIg状態のエントリを優先的に保持することが好ましい(例えば、置換用キャッシュ・エントリを選択するために利用される最長時間未使用(LRU)アルゴリズムを変更することにより)。Igディレクトリ・エントリがキャッシュ内に保持されるため、いくつかのIgエントリは、時間がたつにつれて「古く」なる可能性があり、その排他的アクセス要求がIg状態の形成を引き起こしたキャッシュは、Ig状態のメモリ・ブロックのアドレス・タグを保持するキャッシュに対して通知することなく、メモリ・ブロックのそのコピーの割当てを解除するか、またはライト・バックしうる。このような場合には、ローカル動作の代わりに、グローバル動作が発行されるべきであると間違って示してしまう「古くなった」Ig状態は、いかなるコヒーレンシー・エラーも引き起こさないであろうが、ただ、通常であればローカル動作を利用して処理されうるいくつかの動作を、グローバル動作として発行させるに過ぎないであろう。このような非能率の発生は、「古くなった」Igキャッシュ・エントリの最終的な置換により、その継続が制限されるであろう。
いくつかの規則が、Igキャッシュ・エントリの選択および置換を管理する。第1に、キャッシュが置換用キャストアウト(追い出し)項目としてIgエントリを選択するとき、システム・メモリ108内の対応するドメイン標識504を更新するために、(I、InまたはIgpエントリが選択される場合とは異なり)Igエントリのキャストアウトが実行される。第2に、メモリ・ブロックをキャッシュにロードさせる要求が、その同じキャッシュ内のIgキャッシュ・エントリとヒットするとき、キャッシュは、Igヒットをキャッシュ・ミスとして扱うとともに、選択されたキャストアウト項目としてIgエントリに対してキャストアウト動作を実行する。このようにしてキャッシュは、キャッシュ・ディレクトリ内に同じアドレス・タグの2つのコピーを置くことを回避する。第3に、Ig状態のキャストアウトは、ローカル・コヒーレンシー・ドメインの範囲に限定されたローカル専用動作として実行されることが好ましい。第4に、Ig状態のキャストアウトは、ドメイン表示がLPC内のドメイン標識504にライト・バックされるデータレス・アドレス専用動作として実行されることが好ましい。
メモリ・ブロックの有効なコピーが、ホーム・コヒーレンシー・ドメイン内にキャッシュされたまま残っていないときでも、本発明のIg状態の実装は、ホーム・コヒーレンシー・ドメイン内にメモリ・ブロックに対するキャッシュされたドメイン標識を保持することにより通信効率を向上させる。後述するように、Ig状態により提供されるキャッシュ・ドメイン表示は、関連するメモリ・ブロックを対象とする動作に対する相互接続ファブリック上のグローバル・ブロードキャスト範囲を予測するために利用されうる。
B.Igp状態
メモリ・ブロックのコピーが非ホーム・コヒーレンシー・ドメイン内にキャッシュされたまま残っていない場合には、Igp(無効グローバル予測専用)のコヒーレンシー状態が、キャッシュ・ドメイン表示を保持するために利用される。本明細書において、Igp状態は、(1)キャッシュ・アレイ内の関連するメモリ・ブロックが無効であること、(2)キャッシュ・ディレクトリ内のアドレス・タグが有効であること、(3)現在のコヒーレンシー・ドメインがホーム・コヒーレンシー・ドメインではないこと、および(4)アドレス・タグにより特定されるメモリ・ブロックのコピーが、現在の非ホーム・コヒーレンシー・ドメイン以外のコヒーレンシー・ドメイン内にキャッシュされる可能性があることを示すキャッシュ・コヒーレンシー状態と定義される。たとえ正確に形成されても、Igp表示は、不正確に保持されていることが好ましく、すなわち、Igp表示は、コヒーレンシーに違反しない限りにおいて不正確であってもよいことを意味する。
Igp状態は、非ホーム・コヒーレンシー・ドメイン内の下位レベル・キャッシュが排他的アクセス要求(例えば、RWITM要求、DCLAIM要求、DCBZ要求、KILL要求、WRITE要求、またはPARTIAL WRITE要求)に応じて、他のコヒーレンシー・ドメイン内の要求元に対して、要求メモリ・ブロックのコヒーレンシー所有権を提供することに応答して、当該キャッシュ内に形成される。
Igp状態を含むキャッシュ・ディレクトリ・エントリは、潜在的に有用性のある情報を有するため、少なくともいくつかの実装では、I状態のエントリがもしある場合には、そのI状態のエントリよりもIg状態のエントリを優先的に保持することが好ましい(例えば、置換用キャッシュ・エントリを選択するために利用される最長時間未使用(LRU)アルゴリズムを変更することにより)。Igpディレクトリ・エントリがキャッシュ内に保持されるため、いくつかのIgpエントリは、時間がたつにつれて「古く」なる可能性があり、メモリ・ブロックのコピーが、Igp状態のメモリ・ブロックのアドレス・タグを保持するキャッシュによるスヌープなしに、コヒーレンシー・ドメインに戻りうる。このような場合には、ローカル動作の代わりに、グローバル動作が発行されるべきであると間違って示してしまう「古くなった」Igp状態は、いかなるコヒーレンシー・エラーも引き起こさないであろうが、ただ、通常であればローカル動作を利用して処理されうるいくつかの動作を、グローバル動作として発行させるに過ぎないであろう。このような非能率の発生は、「古くなった」Igpキャッシュ・エントリの最終的な置換により、その継続が制限されるであろう。
Igエントリの取り扱いと対照的に、例えば、置換アルゴリズム(例えば、LRU)に基づいて、置換用キャストアウト項目としてIgpエントリを選択することに応答して、またはメモリ・ブロックをキャッシュにロードさせる要求が、その同じキャッシュ内のIgpキャッシュ・エントリとヒットするという理由では、Igpエントリのキャストアウトは実行されない。代わりに、Igpエントリは単に割当てを解除される。Igpエントリが、基本的ドメイン標識504のキャッシュされ、かつ変更されうるコピーを保持しないという理由で、キャストアウトされることはない。
メモリ・ブロックの有効なコピーが、非ホーム・コヒーレンシー・ドメイン内にキャッシュされたまま残っていないときでも、本発明のIgp状態の実装は、範囲予測のために、非ホーム・コヒーレンシー・ドメイン内にメモリ・ブロックに対するキャッシュ・ドメイン標識を保持することにより通信効率を向上させる。
C.In状態
本明細書において、In状態は、(1)キャッシュ・アレイ内の関連するメモリ・ブロックが無効であること、(2)キャッシュ・ディレクトリ内のアドレス・タグが有効であること、および(3)アドレス・タグにより特定されるメモリ・ブロックのコピーが、ローカル・コヒーレンシー・ドメイン内の1つ以上の他のキャッシュ階層によってのみキャッシュされる可能性が高いことを示すキャッシュ・コヒーレンシー状態と定義される。In表示は、不正確であることが好ましく、すなわち、In表示は、コヒーレンシーに違反しない限りにおいて不正確であってもよいことを意味する。In状態は、下位レベル・キャッシュが、排他的アクセス要求(例えば、バスRWITM動作)に応じて、同じコヒーレンシー・ドメイン内の要求元に対して、要求メモリ・ブロックを提供することに応答して、当該キャッシュ内に形成される。
In状態を含むキャッシュ・ディレクトリ・エントリは、潜在的に有用性のある情報を有するため、少なくともいくつかの実装では、I状態のエントリよりもIn状態のエントリを優先的に保持することが好ましい(例えば、置換用キャッシュ・エントリを選択するために利用される最長時間未使用(LRU)アルゴリズムを変更することにより)。Inディレクトリ・エントリがキャッシュ内に保持されるため、いくつかのInエントリは、時間がたつにつれて「古く」なる可能性があり、その排他的アクセス要求がIn状態の形成を引き起こしたキャッシュは、それ自身で、In状態のメモリ・ブロックのアドレス・タグを保持するキャッシュに対して通知することなく、リモート・コヒーレンシー・ドメインに対して、メモリ・ブロックの共有コピーを供給しうる。このような場合には、グローバル動作の代わりに、ローカル動作が発行されるべきであると間違って示してしまう「古くなった」In状態は、いかなるコヒーレンシー・エラーも引き起こさないであろうが、ただ、いくつかの動作を、グローバル動作としてではなく、最初に誤ってローカル動作として発行させるに過ぎないであろう。このような非能率の発生は、「古くなった」Inキャッシュ・エントリの最終的な置換により、その継続が制限されるであろう。好ましい実施形態では、Inコヒーレンシー状態のキャッシュ・エントリはキャストアウトを受けないが、代わりに単に置換される。したがって、Igキャッシュ・エントリとは異なり、Inキャッシュ・エントリは、システム・メモリ108内のドメイン標識504を更新するために利用されない。
本発明のIn状態の実装は、マスタの動作のうちの1つに対するローカル範囲を選択するためにマスタにより管理されうるメモリ・ブロックに対するキャッシュ・ドメイン標識を保持することにより通信効率を向上させる。結果として、他のコヒーレンシー・ドメイン内のシステム相互接続110およびローカル相互接続114上の帯域幅は保存される。
D. Sr状態
後述される動作では、Srコヒーレンシー状態の共有要求メモリ・ブロックを保持する下位レベル・キャッシュが、要求元マスタと同じドメイン内にあるか否かを判断できることは有用である。一実施形態では、要求元マスタと同じドメイン内の「ローカル」Srスヌーパの存在は、Srコヒーレンシー状態の要求されたメモリ・ブロックを保持する下位レベル・キャッシュのスヌーパの応答特性により示されうる。例えば、バス動作がドメイン境界を越えたかどうかを示す範囲標識(例えば、マスタの明示的なドメイン識別子、または単一のローカル/非ローカル範囲ビット)を、各バス動作が含むと仮定すると、Srコヒーレンシー状態の共有メモリ・ブロックを保持する下位レベル・キャッシュは、同じデータ・ソーシング・ドメイン内のマスタによる要求に対してだけ、Sr状態の要求を肯定する部分応答を提供できるとともに、他のすべての要求に対するS状態を示す部分応答を提供できる。このような実施形態では、応答特性を表3に示すようにまとめることができ、表3の中で、プライム(’)表記は、メモリ・ブロックの実際のキャッシュ状態と異なりうる部分応答を示すために利用されている。
Figure 0005078396
上表3に示した応答特性を仮定すると、データ・ソースとして機能できるSMPデータ処理システム内に分散されたメモリ・ブロックの共有コピーの個数を増加させることにより、共有データに対する平均データ待ち時間を大幅に低減できる。
VII.代表的な排他的アクセス動作
最初に図6を参照すると、本発明に基づいて、データ処理システム内のプロセッサ(CPU)排他的アクセス(または記憶装置変更)要求を行う、代表的方法の高レベルの論理フローチャートが示されている。本明細書に示した他の論理フローチャートと同様に、図6に示したステップのうちの少なくともいくつかは、図示した順序と異なる順序で、または並行して実行されうる。
図6のプロセスは、L2キャッシュ230内のマスタ232がその処理装置104内の関連するプロセッサ・コア200から、CPU排他的アクセス要求(例えば、CPUデータ格納要求、またはCPUキル要求など)を受信するブロック600で始まる。CPU要求の受信に応答して、ブロック602では、CPU排他的アクセス要求内で目標アドレスにより特定される目標メモリ・ブロックが、相互接続ファブリック上にバス動作を発行することなくCPU排他的アクセス要求の処理を可能とするコヒーレンシー状態でL2キャッシュ・ディレクトリ302内に保持されているか否かをマスタ232が判断する。例えば、L2キャッシュ・ディレクトリ302が、目標メモリ・ブロックのコヒーレンシー状態がMまたはMe状態であることを示すとき、相互接続ファブリック上にバス動作を発行することなく、CPUデータ格納要求を処理することができる。ブロック602で、マスタ232が、相互接続ファブリック上にバス動作を発行することなく、CPU排他的アクセス要求を処理できると判断するとき、ブロック632に示したように、CPU要求を処理するのに必要である場合には、マスタ232は、L2キャッシュ・アレイ300にアクセスする。例えば、マスタ232は、CPUデータ格納要求において提供されたデータを、L2キャッシュ・アレイ300に格納できる。ブロック632に続いて、プロセスはブロック634で終了する。
ブロック602に戻ると、相互接続ファブリック上にバス動作を発行することなくCPU排他的アクセス要求の処理を可能とするコヒーレンシー状態でL2ディレクトリ302内に、目標メモリ・ブロックが保持されていないとき、ブロック604で、L2キャッシュ230内に目標メモリ・ブロックを収容するために、既存のキャッシュ・ラインのキャストアウトが必要であるか否かについて判断される。一実施形態では、ブロック604で、メモリ・ブロックが、CPU排他的アクセス要求に応じて、要求元プロセッサのL2キャッシュ230から追い出すために選ばれて、かつL2ディレクトリ302内に、M、T、Te、Tn、またはIgコヒーレンシー状態のいずれかであるとマークされるとき、キャストアウト動作が必要である。ブロック604での、キャストアウトが必要であるとの判断に応じて、ブロック606に示したように、キャッシュ・キャストアウト動作が実行される。同時に、ブロック610で、マスタ232は、CPU排他的アクセス要求を処理するために発行されるべきバス動作の範囲を判断する。例えば、一実施形態では、ブロック610で、マスタ232は、単一の処理ノード102に範囲を制限されたローカル動作としてバス動作をブロードキャストするか、またはデータ処理システム100内のすべての処理ノード102を含むグローバル動作としてバス動作をブロードキャストするかについて判断する。
各バス動作が、最初にローカル動作として発行されて、かつ一度だけローカル動作として発行される第1の実施形態では、ブロック610に示した判断は、単に、バス動作が、すでにローカル・バス動作として発行されたか否かについて、マスタにより判断することを表しうる。ローカル範囲でローカル・バス動作を再試行できる第2の他の実施形態では、ブロック610に示した判断は、バス動作が、すでに閾値回数よりも多く発行されたか否かについて、マスタにより判断することを表しうる。第3の他の実施形態では、ブロック610で行われる判断は、ローカル・バス動作が、他のコヒーレンシー・ドメイン内の処理ノードと通信を行うことなく、目標メモリ・ブロックのコヒーレンシーの解決を成功させる可能性が高いか否かについてのマスタ232による予測に基づきうる。例えば、関連するL2キャッシュ・ディレクトリ302が、目標アドレスをInコヒーレンシー状態と関連づけるとき、マスタ232は、ローカル・バス動作を選択でき、関連するL2キャッシュ・ディレクトリ302が、目標アドレスをIgまたはIgpコヒーレンシー状態と関連づけるとき、マスタ232は、グローバル・バス動作を選択できる。動作の発行に失敗したとき(すなわち、再試行結合応答を受信したとき)、ブロック610に示した判断は、さらに、例えば、ローカル・コヒーレンシー・ドメイン内のIgまたはIgpコヒーレンシー状態のキャッシュ・ラインの存在表示などの、失敗した動作の結合応答から得られた情報を考慮に入れることができる。
ブロック610での判断に応じて、マスタ232は、マスタ232を含むローカル・コヒーレンシー・ドメイン(例えば、処理ノード102)の中だけで、ローカル・バスの排他的アクセス動作ブロードキャストを発行するか(ブロック612)、またはデータ処理システム100内のすべてのコヒーレンシー・ドメイン内で、グローバル・バスの排他的アクセス動作ブロードキャストを発行する(ブロック620)。排他的アクセス動作は、少なくとも、排他的アクセス動作の種類(RWITM、DCLAIM、DCBZ、KILL、WRITE、またはPARTIAL WRITE)を特定するトランザクション・タイプ(Tタイプ)、および目標メモリ・ブロックを特定する目標アドレスを含む。その後、マスタ232は、ブロック622および624に示したように、動作の結合応答の受信を待つ。
ここでは、結合応答は、少なくとも3つの一般型、すなわち、成功、クリーンアップをともなう成功、および再試行のうちのいずれかでありうる。結合応答が再試行を示すとき、マスタ232は、ブロック612または620で発行された排他的アクセス動作で、目標メモリ・ブロックのコヒーレンシー所有権を取得することに失敗しており、(場合によってはブロードキャスト範囲を拡大して)動作を再発行しなければならない。したがって、説明したように、プロセスはブロック622からブロック610に戻る。マスタ232が、再試行を示すCRを受信せず、その代わりに、クリーンアップをともなう成功を示すCRを受信するとき、マスタ232は、目標メモリ・ブロックのコヒーレンシー所有権を与えられており、他のキャッシュ・メモリ230内に保持されている、目標メモリ・ブロックのいかなるコピーも無効にしなければならない。それを実行するために、マスタ232は、ブロック626に示したように、選択範囲(例えば、ローカルまたはグローバル)のバックグラウンド・キル(BK)動作を開始する。少なくともいくつかの実施形態では、マスタ232は、排他的アクセス動作のCRに含まれる情報に基づいて範囲を選択できる。ブロック626に続いて、ブロック624で、バックグラウンド・キル動作のCRがテストされる。排他的アクセス動作またはバックグラウンド・キル動作のCRが成功を示すブロック624での判断に応じて、マスタ232は、目標メモリ・ブロックに対する排他的アクセスを取得することに成功した。その後、マスタ232は、ブロック630に示した範囲選択を行うために利用される予測子(例えば、コヒーレンシー状態またはヒストリーに基づく予測子)を更新する。さらに、ブロック632に示したように、マスタ232はCPU要求を処理する。その後、ブロック634でプロセスは終了する。
このようにして、同じコヒーレンシー・ドメイン内のプロセスとそれらのデータの間の親和性を仮定すると、CPU要求は、要求元マスタのコヒーレンシー・ドメインの範囲に限定された、または完全なグローバル範囲よりも狭い他の制限範囲のコヒーレンシー・ドメインの範囲に限定されたブロードキャスト通信を利用して、頻繁に処理されうる。したがって、上述したようなデータ配送ドメインおよびコヒーレンシー・ドメインの組み合わせは、ブロードキャスト通信の範囲を制限することにより、データ・アクセス待ち時間を改善するだけでなく、システム相互接続(および、他のローカル相互接続)上のトラフィックも抑制する。
ここで図7〜図9を参照すると、L2キャッシュ・スヌーパ236のようなキャッシュ・スヌーパが、本発明に基づいて、排他的アクセス動作(ストレージ変更動作とも呼ばれる)を処理する、代表的方法の高レベルの論理フローチャートが示されている。排他的アクセス要求は、上述したRWITM動作、DCLAIM動作、DCBZ動作、KILL動作、WRITE動作、およびPARTIAL WRITE動作を含む。
図示したように、プロセスは、L2キャッシュ・スヌーパ236によるそのローカル相互接続114上の要求の受信に応答して、図7のブロック700で始まる。要求の受信に応答して、ブロック702で、スヌーパ236は、例えば、要求内のトランザクション・タイプ(Tタイプ)フィールドを参照することにより、要求が排他的アクセス動作であるか否かを判断する。要求が排他的アクセス動作ではないとき、スヌーパ236は、ブロック704に示したように他の処理を実行して、ブロック740でプロセスは終了する。しかしながら、ブロック702で、要求が排他的アクセス動作であるとスヌーパ236が判断するとき、ブロック706で、スヌーパ236は、現在スヌーパ236が、排他的アクセス動作に十分に応答できるか否か(例えば、スヌーパ236が、利用可能なスヌープ・ロジック、およびそのL2キャッシュ・ディレクトリ302に対する現在のアクセスを有するかどうか)をさらに判断する。スヌーパ236が、現在、ドメイン・クエリー要求に十分に応答できないとき、スヌーパ236は、ブロック708に示したように「他を再試行」と示す部分応答(PR)を提供して、ブロック740で排他的アクセス動作の処理は終了する。
スヌーパ236が排他的アクセス動作に十分に応答できると仮定すると、ブロック710で、スヌーパ236は、関連するL2キャッシュ・ディレクトリ302が、目標アドレスを含むメモリ・ブロックについてタグ有効、データ無効コヒーレンシー状態(例えば、In、Ig、Igp、I)を示すか否かを判断する。関連するL2キャッシュ・ディレクトリ302が、目標アドレスを含むメモリ・ブロックについてタグ有効、データ無効コヒーレンシー状態(例えば、In、Ig、Igp、I)を示すとき、プロセスは、ページ・コネクタAを介して、後で詳述する図8に進む。しかしながら、関連するL2キャッシュ・ディレクトリ302が、データ有効コヒーレンシー状態(Mx、Tx、またはSx)を示すとき、プロセスは分岐して、ブロック712およびそれに続く、スヌーパ236により実行されるコヒーレンシー状態更新処理を示すブロックに進むとともに、同時並行的に、ページ・コネクタBを介して、スヌーパ236のデータ配送アクティビティおよびデータ保護アクティビティがもし行われる場合には、それらを示す図9に進む。
最初にブロック712を参照すると、スヌーパ236は、そのL2キャッシュ・ディレクトリ302から読み取られたコヒーレンシー状態を参照することにより、スヌーパ236が、スヌープされた要求の目標アドレスにより特定される目標メモリ・ブロックに対するHPCにあるか否かを判断する。スヌーパ236が、スヌープされた要求の目標アドレスにより特定される目標メモリ・ブロックに対するHPCにないとき、ブロック714で、スヌーパ236は、スヌープされた要求のTタイプが、スヌープされた要求がバックグラウンド・キル要求であることを示すか否かをオプションで判断する。スヌープされた要求のTタイプが、スヌープされた要求がバックグラウンド・キル要求であることを示さないとき、プロセスは、後述されるブロック720に進む。
ブロック714での肯定的判断に応答して、スヌーパは、最初にバックグラウンド・キル要求を発行したデバイス(例えば、L2キャッシュ230)と同じコヒーレンシー・ドメイン内に、スヌーパ236があるか否かに基づいて(ブロック716)、結合応答を受信する前に、スヌーパのL2キャッシュ・ディレクトリ302内の目標アドレスのコヒーレンシー状態を更新することを許可される(しかし、更新することを要求されてはいない)。例えば、スヌーパ236は、バックグラウンド・キル要求内に含まれる範囲ビットを調べることにより、ブロック716に示された判断を行うことができる。ブロック716で、スヌーパ236は、バックグラウンド・キル要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ236があると判断するとき、バックグラウンド・キル要求の目標アドレスに対するコヒーレンシー状態を、スヌーパ236のL2キャッシュ・ディレクトリ302内でInコヒーレンシー状態に更新する(ブロック724)。上述したように、Inコヒーレンシー状態は、メモリ・ブロックに対するHPCが、ローカル・コヒーレンシー・ドメイン(必ずしも、ホーム・コヒーレンシー・ドメインではない)内にあり、かつメモリ・ブロックを要求する後続のローカル動作が成功しうるという不正確な表示を与える。一方、ブロック716で、スヌーパ236が、バックグラウンド・キル要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ236がないと判断するとき、プロセスは、ブロック734に進む。ブロック734は、スヌーパ236が目標アドレスのコヒーレンシー状態を、スヌーパ236のL2キャッシュ・ディレクトリ302内でIgpに更新することを示す。上述したように、Igpコヒーレンシー状態は、目標メモリ・ブロックに対するHPCが、リモート・コヒーレンシー・ドメイン内にあり、かつ目標メモリ・ブロックを要求する後続の動作がグローバルであるべきであるという不正確な表示を与える。ブロック724またはブロック734に続いて、ブロック740でプロセスは終了する。
ここでブロック720を参照すると、オプションのブロック714で否定的判断がなされるとき、またはブロック714で示された判断が実行されないとき、スヌーパ236は、排他的アクセス要求に対する結合応答の受信を待つ。ブロック720での結合応答の受信に応答して、ブロック726で、スヌーパ236は、排他的アクセス要求に対する結合応答が再試行を示すか否かを判断する。排他的アクセス要求に対する結合応答が再試行を示さないとき、排他的アクセス要求は成功し、成功CR、またはクリーンアップをともなう成功CRを有しており、プロセスは、上述したブロック716に進む。しかしながら、排他的アクセス要求に対する結合応答が再試行を示すとき(すなわち、排他的アクセス要求が成功しなかったとき)、スヌーパ236は、ブロック728に示したように、単に、目標アドレスのコヒーレンシー状態を、スヌーパ236のL2キャッシュ・ディレクトリ302内でIに更新する。スヌーパ236に対する目標アドレスのHPCの相対的位置は、失敗した排他的アクセス動作に対する結合応答では示されないため、Ig、IgpまたはIn状態の代わりに、Iコヒーレンシー状態が使用される。ブロック728に続いて、プロセスはブロック740で終了する。
ブロック712に戻ると、スヌーパ236が目標アドレスに対するHPCにあるとのスヌーパ236の判断に応じて、スヌーパ236は、ブロック718に示したように、排他的アクセス要求に対する結合応答の受信を待つ。スヌーパ236による結合応答の受信に応答して、プロセスはブロック722に進む。ブロック722は、スヌーパ236が、最初に排他的アクセス要求を発行したデバイス(例えば、L2キャッシュ230)と同じコヒーレンシー・ドメイン内にあるか否かを、スヌーパ236が判断することを示す。上述したように、スヌーパ236は、排他的アクセス要求内に含まれる範囲ビットを調べることにより、ブロック722に示された判断を行うことができる。ブロック722で、スヌーパ236は、排他的アクセス要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ236があると判断するとき、目標アドレスに対するコヒーレンシー状態を、スヌーパ236のL2キャッシュ・ディレクトリ302内でInコヒーレンシー状態に更新する(ブロック724)。上述したように、Inコヒーレンシー状態は、メモリ・ブロックに対するHPCが、ローカル・コヒーレンシー・ドメイン(必ずしも、ホーム・コヒーレンシー・ドメインではない)内にあり、かつメモリ・ブロックを要求する後続のローカル動作が成功しうるという不正確な表示を与える。一方、ブロック722で、スヌーパ236は、排他的アクセス要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ236がないと判断するとき、目標アドレスのホーム・システム・メモリ108と同じコヒーレンシー・ドメイン内にスヌーパ236があるか否かに基づいて(ブロック730)、スヌーパ236のL2キャッシュ・ディレクトリ302内で目標アドレスのコヒーレンシー状態を更新する。1つの好ましい実施形態では、ブロック730に示した判断は、CRの中のMemory Controller Local to Snooper(MCLS)(スヌーパに対してローカルにあるメモリ・コントローラ)フィールドの状態に基づいて行われる。CRのMCLSフィールドの状態は、図12に示した、後述の方法に基づいて設定されうる。
CRのMCLSフィールドがアサートされていない、すなわち、スヌーパ236が目標アドレスのホーム・システム・メモリ108と同じコヒーレンシー・ドメイン内にはないとのブロック730での判断に応じて、スヌーパ236は、目標アドレスのコヒーレンシー状態を、スヌーパ236のL2キャッシュ・ディレクトリ302内でIgpに更新する(ブロック734)。さもなければ、スヌーパ236は、目標アドレスに対するコヒーレンシー状態を、Igに更新する(ブロック732)。IgpおよびIgコヒーレンシー状態は共に、目標メモリ・ブロックに対するHPCが、リモート・コヒーレンシー・ドメイン内にあり、かつ目標メモリ・ブロックを要求する後続の動作がグローバルであるべきであるという不正確な表示を与える。ただし、Igpコヒーレンシー状態は、システム・メモリ108への後続のキャストアウトを受けないが、単に割当てを解除される。ブロック732またはブロック734に続いて、ブロック740でプロセスは終了する。
ここで図8を参照すると、スヌーパ236がそのL2キャッシュ・ディレクトリ302内でデータ無効コヒーレンシー状態(例えば、In、Ig、Igp、またはI)を有する目標アドレスを含む排他的アクセス要求に対するスヌーパ236の応答が示されている。プロセスは、ページ・コネクタAを介して図7から続き、次に、スヌーパ236が排他的アクセス要求に対する適切な部分応答を提供することを示すブロック742に進む。いくつかの実施形態では、ブロック742で提供される部分応答(PR)は、スヌーパ236を含むL2キャッシュ230が、目標メモリ・ブロックのデータ有効コピーを保持していないことを示すために、Ig以外のすべてのIxコヒーレンシー状態に対してヌルでありうる。Igコヒーレンシー状態では、部分応答は、目標アドレスに対するHPCが、スヌーパ236を含むコヒーレンシー・ドメインの外にある可能性が高いことを示す再試行の形である。他の実施形態では、ブロック742で作られる非Igコヒーレンシー状態に対する部分応答は、ローカル・コヒーレンシー状態(IgpまたはIn)で示される範囲情報を反映する範囲ヒントをさらに提供できる。ブロック742に続いて、プロセスは、ブロック744で分岐して、目標アドレスに対するローカル・コヒーレンシー状態がIgであるとき、ブロック746に進み、目標アドレスに対するローカル・コヒーレンシー状態がIgではないとき、ブロック750に進む。
ブロック746で、スヌーパ236は、スヌープされた要求のTタイプが、スヌープされた要求がバックグラウンド・キル要求であることを示すか否かをオプションで判断する。スヌープされた要求のTタイプが、スヌープされた要求がバックグラウンド・キル要求であることを示さないとき(または、オプションの判断が行われないとき)、プロセスは、後述されるブロック747に進む。オプションのブロック746で、スヌープされた要求がバックグラウンド・キル要求であると判断されるとき、ブロック749で、最初にバックグラウンド・キル要求を発行したデバイス(例えば、L2キャッシュ230)と同じコヒーレンシー・ドメイン内に、スヌーパ236があるか否かについて、さらなる判断が行われる。例えば、スヌーパ236は、バックグラウンド・キル要求内に含まれる範囲ビットを調べることにより、ブロック749に示された判断を行うことができる。ブロック749で、スヌーパ236が、バックグラウンド・キル要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ236があると判断するとき、プロセスは、ページ・コネクタDを介して、ブロック757に進み、このブロック757は、スヌーパ236がバックグラウンド・キル要求の目標アドレスに対するコヒーレンシー状態を、スヌーパ236のL2キャッシュ・ディレクトリ302内でInコヒーレンシー状態に更新することを示す。上述したように、Inコヒーレンシー状態は、メモリ・ブロックに対するHPCが、ローカル・コヒーレンシー・ドメイン(必ずしも、ホーム・コヒーレンシー・ドメインではない)内にあり、かつメモリ・ブロックを要求する後続のローカル動作が成功しうるという不正確な表示を与える。その後、ブロック760でプロセスは終了する。一方、ブロック749で、スヌーパ236が、バックグラウンド・キル要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ236がないと判断するとき、プロセスは、ブロック747に進む。
ブロック747は、スヌーパ236がスヌープされた要求に対する結合応答(CR)の受信を待つことを示す。スヌープされた要求に対する結合応答の受信に応答して、ブロック748で、結合応答が再試行を示すか否かの判断が行われる。結合応答が再試行を示すとき、スヌープされた動作は成功しておらず、スヌーパ236は目標アドレスに対するスヌーパ236のコヒーレンシー状態を更新しない。したがって、プロセスは、ページ・コネクタCを介して進み、ブロック760で終了する。しかしながら、スヌープされた要求に対する結合応答が再試行を示さないとき、ブロック758で、スヌーパ236は、スヌープされた要求内に含まれる範囲ビットを参照することにより、スヌープされた要求を発行したマスタ232と同じコヒーレンシー・ドメイン(例えば、処理ノード102)内にスヌーパ236があるか否かを判断する。スヌープされた要求を発行したマスタ232と同じコヒーレンシー・ドメイン(例えば、処理ノード102)内にスヌーパ236があるとき、スヌーパ236は、バックグラウンド・キル要求の目標アドレスに対するコヒーレンシー状態を、スヌーパ236のL2キャッシュ・ディレクトリ302内でInコヒーレンシー状態に更新する(ブロック757)。その後、ブロック760でプロセスは終了する。
ブロック758に戻ると、スヌープされた要求を発行したマスタ232と同じコヒーレンシー・ドメイン内にスヌーパ236がないとのスヌーパ236による判断に応答して、スヌーパ236は、目標アドレスのホーム・システム・メモリ108と同じコヒーレンシー・ドメイン内にスヌーパ236があるか否かを判断する(ブロック759)。1つの好ましい実施形態では、ブロック759に示した判断は、CRの中のMCLSフィールドの状態に基づいて行われる。ブロック759で、スヌーパ236が、目標アドレスのホーム・システム・メモリ108と同じコヒーレンシー・ドメイン内にスヌーパ236があると判断するとき、スヌーパ236は、スヌーパ236のL2キャッシュ・ディレクトリ302内でIgコヒーレンシー状態への更新を行わず、ブロック760でプロセスは終了する。この場合、システム・メモリ108内の関連するドメイン標識504の状態を更新するために、Igコヒーレンシー状態が必要とされうるため、コヒーレンシー状態の更新を行わない。しかしながら、ブロック759で、スヌーパ236が否定的判断を行うとき、スヌーパ236は、バックグラウンド・キル要求の目標アドレスに対するコヒーレンシー状態を、スヌーパ236のL2キャッシュ・ディレクトリ302内でIgpコヒーレンシー状態に更新する(ブロック756)。コヒーレンシー状態が既にIgpであるとき、スヌーパ236の実装の複雑さに応じて、コヒーレンシー状態の更新は、実行しても、しなくてもよい。上述したように、Igpコヒーレンシー状態は、目標メモリ・ブロックに対するHPCが、リモート・コヒーレンシー・ドメイン内にあり、かつ目標メモリ・ブロックを要求する後続の動作がグローバルであるべきであるという不正確な表示を与える。ブロック756に続いて、ブロック760でプロセスは終了する。
ここでブロック750を参照すると、スヌープされた要求の目標アドレスに対するローカル・コヒーレンシー状態がIgではないとき、スヌーパ236は、スヌーパ236がスヌープされた要求に割当てられる保有期間を短縮するために、スヌープされた要求のCRを参照することなく、スヌーパ236のL2キャッシュ・ディレクトリ302内の目標アドレスのIxコヒーレンシー状態をオプション更新できる。あるいは、スヌーパ236は、CRに応答して、スヌーパ236のL2キャッシュ・ディレクトリ302内の目標アドレスのIxコヒーレンシー状態を更新できる。更新を実行するためにCRを待つことは、スヌープされた要求のマスタ232が目標アドレスのコヒーレンシー所有権を取得することに成功したかどうかを、CRを受信する前にスヌーパ236は予測できないという点で、精度向上に対する保有持続時間の性能トレードオフを表す。スヌーパ236が、CRを参照することなく、Ixコヒーレンシー状態を更新ように実装されていると、プロセスは、直接、後述されるブロック755に進む。しかしながら、スヌーパ236が、スヌープされた要求に対するCRを参照して、Ixコヒーレンシー状態を更新するように実装されていると、プロセスは、スヌーパ236が、スヌープされた要求のTタイプを参照することにより、スヌープされた要求がバックグラウンド・キル要求であるか否かについてオプション判断を行うことを示すブロック751に進む。スヌープされた要求がバックグラウンド・キル要求であるとき、プロセスは、後述されるブロック755に進む。ブロック751で、スヌーパ236が、スヌープされた要求がバックグラウンド・キル要求ではないと判断するとき、ブロック752で、スヌーパ236は、スヌープされた要求に対するCRの受信を待つ。
結合応答の受信に応答して、ブロック753で、スヌーパ236は、排他的アクセス要求に対する結合応答が再試行を示すか否かを判断する。排他的アクセス要求に対する結合応答が再試行を示さないとき、排他的アクセス要求は成功し、成功CR、またはクリーンアップをともなう成功CRを有しており、プロセスは、ブロック755に進む。しかしながら、排他的アクセス要求に対する結合応答が再試行を示すとき(すなわち、排他的アクセス要求が成功しなかったとき)、スヌーパ236は、ブロック754に示したように、単にオプションで、目標アドレスのコヒーレンシー状態を、スヌーパ236のL2キャッシュ・ディレクトリ302内でIに更新する。スヌーパ236に対する目標アドレスのHPCの相対的位置は、失敗した排他的アクセス動作では示されないため、Ig、IgpまたはIn状態の代わりに、Iコヒーレンシー状態が使用される。ブロック753での肯定的判断、またはオプションのブロック754に続いて、ブロック760でプロセスは終了する。
ここでブロック755を参照すると、スヌーパ236は、最初にスヌープされた要求を発行したデバイス(例えば、L2キャッシュ230)と同じコヒーレンシー・ドメイン内に、スヌーパ236があるか否かに基づいて、スヌーパ236のL2キャッシュ・ディレクトリ302内で目標アドレスのIxコヒーレンシー状態を更新する。例えば、スヌーパ236は、スヌープされた要求内に含まれる範囲ビットを調べることにより、ブロック755に示された判断を行うことができる。ブロック755で、スヌーパ236は、スヌープされた要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ236があると判断するとき、スヌープされた要求の目標アドレスに対するコヒーレンシー状態を、スヌーパ236のL2キャッシュ・ディレクトリ302内でInコヒーレンシー状態に更新する(ブロック757)。一方、ブロック755で、スヌーパ236は、スヌープされた要求を開始したデバイスと同じコヒーレンシー・ドメイン内にスヌーパ236がないと判断するとき、目標アドレスのコヒーレンシー状態を、スヌーパ236のL2キャッシュ・ディレクトリ302内でIgpに更新する(ブロック756)。ブロック757でコヒーレンシー状態が既にInであるか、またはブロック756でコヒーレンシー状態が既にIgpであるとき、スヌーパ236の実装の複雑さに応じて、更新は実行しても、しなくてもよい。ブロック756またはブロック757に続いて、ブロック760でプロセスは終了する。
ここで図9を参照すると、目標メモリ・ブロックのキャッシュされたデータ有効コピーを保持するL2キャッシュ230のスヌーパ236のデータ配送アクティビティおよびデータ保護アクティビティがもし行われる場合には、それらが示されている。図示したように、ブロック761で、スヌーパ236は、例えば、スヌープされた要求により指定されるTタイプを調べることにより、スヌープされた排他的アクセス動作がRWITM動作であるか否かを判断する。上表1に示したように、RWITM動作は、イニシエータが、それを更新する(変更する)意図をもって、メモリ・ブロックのイメージの一意的なコピーを他の関与装置に要求する排他的アクセス動作である。ブロック761で、排他的アクセス動作がRWITM動作であると判断されるとき、プロセスは、後述されるブロック770に進む。排他的アクセス動作がRWITM動作ではないと判断されるとき、プロセスは、ブロック762に進み、このブロック762は、スヌーパ236が、例えば、関連するL2キャッシュ・ディレクトリ302内の目標メモリ・ブロックのコヒーレンシー状態を参照することにより、目標メモリ・ブロックに対するHPCにスヌーパ236があるか否かを判断することを示す。ブロック762での、スヌーパ236が排他的アクセス動作の目標メモリ・ブロックに対するHPCにないとの判断に応じて、スヌーパ236は、「ヌル」部分応答を出力する、または出力されるようにする(ブロック764)。しかしながら、ブロック762での、スヌーパ236がHPCにあるとの判断に応じて、スヌーパ236は、排他的アクセス動作のイニシエータが、目標メモリ・ブロックに対する新しいHPCとして選定されたことを確認する「HPC_ack」部分応答を提供する(または、提供されるようにする)とともに、他の要求元がメモリ・ブロックのコヒーレンシー所有権を取得することを防止するために、保護ウィンドウ404aを拡大する(ブロック766)。
ここでブロック770および後続のブロックを参照すると、スヌーパ236は、スヌーパ236の関連するL2キャッシュ・ディレクトリ302内の目標メモリ・ブロックのコヒーレンシー状態に基づいて、RWITM動作に応答する。特に、L2キャッシュ・ディレクトリ302内の目標メモリ・ブロックのコヒーレンシー状態が、Mx(例えば、M、またはMe)であるとき、ブロック770および772に示したように、他の要求元が目標メモリ・ブロックの所有権を取得することを防止するために、保護ウィンドウ404aを拡大して、「HPC_ack」部分応答を提供して、要求元にメモリ・ブロックのコピーを提供する。
L2キャッシュ・ディレクトリ302内の目標メモリ・ブロックのコヒーレンシー状態がMxではなくSrであり、かつスヌーパ236が要求元と同じデータ・ソーシング・ドメイン(例えば、処理ノード102)内にあるとき、スヌーパ236は、ブロック774および776に示したように、保護ウィンドウ404aを拡大して、「共有」部分応答を提供して、要求元にメモリ・ブロックのコピーを提供する。さもなければL2キャッシュ・ディレクトリ302内の目標メモリ・ブロックのコヒーレンシー状態が、ブロック780に示したように、Tx(例えば、T、Te、Tn、またはTen)であるとき、スヌーパ236は、ブロック782に示したように、他の要求元が目標メモリ・ブロックの所有権を取得することを防止するために、保護ウィンドウ404aを拡大して、「HPC_ack」部分応答を提供する。さらに、ブロック784および786に示したように、スヌーパ236は、応答ロジック210から受信された結合応答に応じて、要求元に目標メモリ・ブロックのコピーを提供できる。すなわち、このスヌーパ236が目標メモリ・ブロックのコピーを提供する責任がある(例えば、要求元と同じコヒーレンシー・ドメイン内のどのスヌーパ236も、Sr状態の目標メモリ・ブロックを保持していない)ことを結合応答が示すとき、スヌーパ236は、ブロック786に示したように、要求元に目標メモリ・ブロックのコピーを送信する。
再びブロック780を参照すると、否定的判断に応じて、スヌーパ236は、ブロック790に示したように、単に「ヌル」部分応答を提供する。ブロック766、764、772、776、784、786、および790のいずれかに続いて、ブロック792でプロセスは終了する。
ここで図10を参照すると、IMC206が、本発明に基づいて、スヌープされた要求に応答する、代表的プロセスの高レベルの論理フローチャートが示されている。図示したように、プロセスは、ブロック800で始まり、その後、ブロック802に進み、このブロック802は、IMC206が、BARロジック240を参照することにより、スヌープされた要求の中で指定された目標アドレスにIMC206が責任を有するか否かを判断することを示す。スヌープされた要求の中で指定された目標アドレスにIMC206は責任がないと判断するとき、IMC206は、スヌープされた要求にスヌーパ222を割当てず、ブロック830でプロセスは単に終了する。一方、IMC206が、ブロック802で、目標アドレスにIMC206が責任を有すると判断するとき、ブロック832で、IMC206はLPC_Ack部分応答を出力する。次に、IMC206は、ブロック803で、スヌープされた要求のTタイプを参照することにより、要求が排他的アクセス要求であるかどうかを判断する。要求が排他的アクセス要求ではないと判断するとき、IMCは、ブロック804に示したように他の処理を実行する。その後、ブロック830でプロセスは終了する。
ブロック803に戻ると、スヌープされた要求が排他的アクセス要求であるとの判断に応じて、さらに、IMC206は、ブロック810および820で、IMC206のスヌーパ222のうちの1つが、スヌープされた要求の目標アドレスに対してアクティブであるかどうか、およびスヌーパ222のうちの1つが、ディスパッチ可能であるかどうかをさらに判断する。IMC206が、ブロック810で、スヌープされた要求の目標アドレスに対して、IMC206のスヌーパ222のうちの1つが既にアクティブであると判断するとき、またはIMC206が、ブロック820で、ディスパッチ可能なスヌーパ222をIMC206が有しないと判断するとき、プロセスは、IMC206がスヌープされた要求に再試行_LPC部分応答を送信することを示すブロック812に進む。その後、ブロック830でプロセスは終了する。
IMC206が、ブロック810で、IMC206のスヌーパ222が、スヌープされた要求の目標アドレスに対してアクティブではないと判断して、かつIMC206が、ブロック820で、ディスパッチ可能なスヌーパ222をIMC206が有すると判断するとき、プロセスは、IMC206がスヌーパ222をディスパッチして、スヌープされた要求に対する結合応答の受信を待つことを示すブロック822および824に進む。結合応答の受信に応答して、ディスパッチされたスヌーパ222は、必要に応じて、システム・メモリ108から要求データを提供するとともに、必要に応じて、システム・メモリ108内のドメイン標識504を更新する(ブロック826)。その後、スヌーパは割当てを取り消されて、ブロック830でプロセスは終了する。
ここで図11を参照すると、本発明に基づいて、排他的アクセス動作の部分応答を出力して累積する、代表的方法の高レベルの論理フローチャートが示されている。図示された実施形態では、部分応答は、単一の完全な部分応答が得られるまで、ノードごとに逐次的に、または並行して累積される。
図示したように、プロセスは、ブロック900で始まり、その後、ブロック902に進み、このブロック902は、第1の処理ノード102内の処理装置104が、部分応答の中のすべてのビット・フィールドを0に初期設定することを示す。次に、ブロック910で、処理装置104内の各スヌーパ222、236は、各スヌーパの個々の部分応答と累積された部分応答との論理ORを実行する。その後、処理ノード102内の応答ロジック210は、ブロック912で、HPC_ack部分応答およびLPC_ack部分応答が、現在の処理ノード102内のL2キャッシュ・スヌーパ236およびメモリ・コントローラ・スヌーパ222のそれぞれによりアサートされたかどうかを判断する。アサートされたとき、目標メモリ・ブロックの以前のHPC、および目標メモリ・ブロックのホーム・システム・メモリ108は共に、この処理ノード102内に存在している。したがって、応答ロジック210は、ブロック914に示したように、アサートされたMCLSビットと累積された部分応答の中の対応するMCLSビットとの論理OR演算を実行する。
次に、ブロック916で、現在の処理ノード102の応答ロジック210は、現在の処理ノード102が、部分応答が累積されるべき最後の処理ノード102(例えば、排他的アクセス要求を開始したマスタ232を含む処理ノード102)であるか否かを判断する。現在の処理ノード102が、部分応答が累積されるべき最後の処理ノード102ではないと応答ロジック210が判断するとき、応答ロジック210は、ブロック918に示したように、処理を行う次の処理ノード102に、累積された部分応答を送信する。その後、部分応答は、ブロック910および後続のブロックに示したように、その次の処理ノード102内に累積される。一方、現在の処理ノード102が、部分応答が累積されるべき最後の処理ノード102であると応答ロジック210が判断するとき、プロセスは、ブロック920に進み、このブロック920は、排他的アクセス動作を開始したマスタ232を含む処理装置104の応答ロジック210に、累積された部分応答を提供することを示す。その後、図11に示されたプロセスは、ブロック922で終了する。
ここで図12を参照すると、本発明に基づいて、IxのL2キャッシュ・スヌーパ236が存在するときに、応答ロジック210が排他的アクセス動作に対する結合応答を出力する、代表的方法の高レベルの論理フローチャートが示されている。1つの好ましい実施形態では、排他的アクセス動作に対する結合応答を出力する応答ロジック210は、排他的アクセス動作を発行したマスタ232を含む処理装置104の応答ロジック210である。なお、図12のいくつかのブロック中にある記号「!」は否定を表している。
図示したように、プロセスは、累積された部分応答の受信に応答して、ブロック1000で始まり、その後、ブロック1002に進み、このブロック1002は、排他的アクセス動作がグローバル動作であるか否か、かつ累積された部分応答がメモリ・コントローラ206からのLPC_ack部分応答を含むか否かの判断を示す。応答ロジック210が、ブロック1002で、排他的アクセス動作がグローバル動作であり、かつ累積された部分応答がLPC_ack部分応答を含まなかったと判断するとき、目標アドレスに対するLPCが無かったため、処理は、エラー状態によりブロック1004で終了する。
一方、ブロック1002で、応答ロジック210が否定的判断を行うとき、応答ロジック210は、ブロック1006で、排他的アクセス動作がローカル範囲を有するかどうか、かつ累積された部分応答が、LPC_ack部分応答またはHPC_ack部分応答を受信しなかったことを示すかどうかを判断する。ブロック1006での肯定的判断は、目標アドレスに対するLPCがローカル・コヒーレンシー・ドメイン内に無く、かつHPCがローカル・コヒーレンシー・ドメイン内に無い可能性が高いため、排他的アクセス要求の範囲が拡大されるべきであることを示す。したがって、ブロック1006での肯定的判断に応答して、プロセスは、ブロック1009に進み、このブロック1009は、応答ロジック210が再試行を示す結合応答を出力することを示す(オプションとして、範囲を拡大して要求を再発行するべきであることを示す)。図6のブロック622および610に関して上述したように、図12のブロック1001またはブロック1002での肯定的判断に応答して出力された再試行CRは、マスタ232に、おそらくは拡大されたブロードキャスト範囲の排他的アクセス要求を再発行させる。プロセスはその後、後述されるブロック1022に進む。
再びブロック1006を参照すると、否定的判断に応答して、プロセスは、ブロック1008に進む。ブロック1008は、累積された部分応答がL2キャッシュ・スヌーパ236からのHPC_ack部分応答を含むか否か、または累積された部分応答がIMC206からの再試行_LPC部分応答を含まないかどうかを、応答ロジック210が判断することを示す。ブロック1008での否定的判断に応答して、プロセスは、応答ロジック210が再試行を示す結合応答を出力することを示すブロック1009に進む。その後、プロセスはブロック1022に進む。
ブロック1008に戻ると、応答ロジック210が肯定的判断を行うとき、プロセスは、ブロック1008からブロック1010に進み、このブロック1010は、蓄積された部分応答が、その他の再試行、または共有の部分応答の存在を示すか否かを、応答ロジック210が判断することを示す。累積された部分応答が、その他の再試行または共有の部分応答の存在を示すと応答ロジック210が判断するとき、開始したマスタ232に、排他的アクセス要求の目標メモリ・ブロックのコヒーレンシー所有権を与えることができるが、少なくとも1つの非HPCのL2キャッシュ・メモリ230は、目標メモリ・ブロックのキャッシュされたデータ有効コピーを保持できる。その結果、応答ロジック210は、Addr_ack_BKのようなクリーンアップをともなう成功結合応答を出力する。上述したように、クリーンアップをともなう成功CRは、図6のブロック626に示したように、開始したマスタ232にバックグラウンド・キル要求を発行させるであろう。その後、プロセスは、後述されるブロック1022に進む。
再びブロック1010を参照すると、累積された部分応答が、その他の再試行または共有の部分応答を受信したことを示さないとの、応答ロジック210による判断に応答して、プロセスは、応答ロジック210がAddr_ack結合応答のような成功を示す結合応答を出力することを示すブロック1020に進む。その後、プロセスはブロック1022に進み、このブロック1022は、図11のブロック912および914に関して上述したように、応答ロジック210が、累積された部分応答の中でMCLSフィールドがアサートされているか否かを判断することを示す。応答ロジック210が、累積された部分応答の中でMCLSフィールドがアサートされていないと判断するとき、プロセスは、直接ブロック1026に進む。一方、ブロック1022で肯定的判断が行われるとき、ブロック1024で、応答ロジック210は、結合応答の中でMCLSフィールドをアサートする。その後、プロセスはブロック1026に進む。
ブロック1026は、応答ロジック210が、最初の排他的アクセス要求のブロードキャスト範囲と一致するブロードキャスト範囲を有する結合応答を送信することを示す(ブロック1026)。その後、ブロック1030で、プロセスは終了する。
上述したように、本発明は、メモリ・ブロックが、コヒーレンシー・ドメインの内側、または外側でキャッシュされている可能性が高いか否かの表示を提供する改良されたデータ処理システム、処理装置、キャッシュ階層、およびデータ処理方法を提供する。本発明に基づいて、コヒーレンシー状態により提供されうる表示は、排他的アクセス動作に対する結合応答に応じて、確立または更新されうる。
本発明は、特に、好ましい実施形態に関して説明しながら示されたが、当業者は、本発明の要旨および範囲を逸脱することなく、形式および詳細における様々な変更を本発明に行うことができることを理解するであろう。
本発明の代表的データ処理システムの高レベルのブロック図である。 本発明の処理装置の、より詳細なブロック図である。 図2に示したL2キャッシュ・アレイおよびディレクトリの、より詳細なブロック図である。 図1のデータ処理システムにおけるシステム相互接続上の代表的トランザクションの時系列図である。 本発明の好ましい実施形態のドメイン標識を示す。 キャッシュ・メモリが、本発明に基づいてデータ処理システム内のプロセッサ・コアから受信された動作を行う、代表的方法の高レベルの論理フローチャートである。 キャッシュが、本発明に基づいて、スヌープされたストレージ変更動作を処理する、代表的方法の高レベルの論理フローチャートである。 キャッシュが、本発明に基づいて、スヌープされたストレージ変更動作を処理する、代表的方法の高レベルの論理フローチャートである。 キャッシュが、本発明に基づいて、スヌープされたストレージ変更動作を処理する、代表的方法の高レベルの論理フローチャートである。 メモリ・コントローラが、本発明に基づいて、スヌープされたストレージ変更動作を処理する、代表的方法の高レベルの論理フローチャートである。 部分応答が、本発明の一実施形態に基づいて段階的に累積される、代表的プロセスの高レベルの論理フローチャートである。 ストレージ変更動作に対する結合応答が、本発明の一実施形態に基づいて生成される、代表的プロセスの高レベルの論理フローチャートである。

Claims (9)

  1. 少なくとも第1および第2のコヒーレンシー・ドメインを含むキャッシュ・コヒーレント・データ処理システム内のデータ処理方法であって、
    前記データ処理システムの前記第1のコヒーレンシー・ドメイン内の第1のキャッシュ・メモリにおいて、記憶位置およびアドレス・タグと関連するコヒーレンシー状態フィールドを、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないこととを示す第1のデータ無効コヒーレンシー状態に設定するステップを含み、
    前記アドレス・タグに一致しており、かつ排他的アクセス動作を開始した要求元の相対的ドメイン・ロケーションを示す、目標アドレスを指定する前記排他的アクセス動作のスヌーピングに応答して、前記第1のキャッシュ・メモリが、前記コヒーレンシー状態フィールドを、前記第1のデータ無効コヒーレンシー状態から、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないことと、前記要求元の前記相対的ドメイン・ロケーションに基づく前記排他的アクセス動作が無事完了した時に、前記アドレス・タグと関連する目標メモリ・ブロックが、前記第1のコヒーレンシー・ドメイン内にキャッシュされているかどうかとを示す、第2のデータ無効コヒーレンシー状態に更新する、キャッシュ・コヒーレント・データ処理システム内のデータ処理方法。
  2. 前記排他的アクセス動作が、第1の排他的アクセス動作を含み、
    前記設定するステップが、前記データ処理システムの第2のキャッシュ・メモリにより開始される第2の排他的アクセス動作に応答して、前記コヒーレンシー状態フィールドを、前記第1のデータ無効コヒーレンシー状態に設定するステップを含む、請求項1に記載の方法。
  3. 前記排他的アクセス動作が、バックグラウンド・キル動作を含み、
    前記方法が、第2のキャッシュ・メモリが前記目標メモリ・ブロックの排他的コヒーレンシー所有権を取得したとの表示に応答して、前記第2のキャッシュ・メモリが、前記バックグラウンド・キル動作を発行するステップをさらに含む、請求項1に記載の方法。
  4. 前記第1のキャッシュ・メモリが、前記コヒーレンシー状態フィールドを参照することにより、前記メモリ・ブロックを対象とするデータ・アクセス要求のブロードキャスト伝達範囲を予測するステップをさらに含む、請求項1に記載の方法。
  5. 前記排他的アクセス動作が、排他的アクセス要求と、前記排他的アクセス要求に対するシステム全体の応答を示す結合応答とを含み、
    前記更新するステップが、前記要求元が前記目標メモリ・ブロックの排他的コヒーレンシー所有権を取得したことを示す前記排他的アクセス動作の前記結合応答に応答して、前記第1のキャッシュ・メモリが、前記コヒーレンシー状態フィールドを更新するステップを含む、請求項1に記載の方法。
  6. 前記アドレス・タグと関連する目標メモリ・ブロックが前記第1のコヒーレンシー・ドメイン内にキャッシュされている可能性が高いかどうかを、前記第1のデータ無効コヒーレンシー状態が示し、
    前記方法が、
    前記要求元が前記目標メモリ・ブロックの排他的コヒーレンシー所有権を取得することに失敗したことを示す前記結合応答に応答して、前記コヒーレンシー状態フィールドを、前記第1のデータ無効コヒーレンシー状態から、前記データ記憶位置が有効データを含まないことを示し、かつ前記目標メモリ・ブロックのコピーがどこにキャッシュされているかについての場所の表示を提供しない、第3のデータ無効コヒーレンシー状態に更新するステップをさらに含む、請求項5に記載の方法。
  7. それぞれが少なくとも1つの処理装置を有する、少なくとも第1および第2のコヒーレンシー・ドメインを含むキャッシュ・コヒーレント・データ処理システムにおいて、前記第1のコヒーレンシー・ドメインおよび前記第2のコヒーレンシー・ドメインに含まれるキャッシュ・メモリであって、
    キャッシュ・コントローラと、
    メモリ・ブロックをキャッシュするデータ記憶位置を含むデータ・アレイと、
    前記メモリ・ブロックと関連してアドレス・タグを格納するタグ・フィールドならびに、
    前記タグ・フィールドおよび前記データ記憶位置と関連するコヒーレンシー状態フィールドであって、第1および第2のデータ無効コヒーレンシー状態を含む複数の可能なコヒーレンシー状態を有し、前記第1のデータ無効コヒーレンシー状態が、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないこととを示し、第2のデータ無効コヒーレンシー状態が、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないことと、前記アドレス・タグと関連する目標メモリ・ブロックが前記第1のコヒーレンシー・ドメイン内にキャッシュされている可能性が高いかどうかとを示す、コヒーレンシー状態フィールド、を含むキャッシュ・ディレクトリとを含み、
    前記アドレス・タグに一致しており、かつ排他的アクセス動作を開始した要求元の相対的ドメイン・ロケーションの表示を含む、目標アドレスを指定する前記排他的アクセス動作のスヌーピングに応答して、前記キャッシュ・コントローラが、前記コヒーレンシー状態フィールドを、前記第1のデータ無効コヒーレンシー状態から、前記第2のデータ無効コヒーレンシー状態に更新する、キャッシュ・メモリ。
  8. 少なくとも1つのプロセッサ・コアと、
    請求項7に記載のキャッシュ・メモリとを含む、処理装置。
  9. 相互接続ファブリックと、
    前記相互接続ファブリックにより結合された第1および第2のコヒーレンシー・ドメインとを含み、
    前記第1のコヒーレンシー・ドメインが、第1のキャッシュ・メモリによりサポートされた少なくとも第1の処理装置を含むとともに、前記第2のコヒーレンシー・ドメインが、第2のコヒーレント・キャッシュ・メモリによりサポートされた第2の処理装置を含み、
    前記第1のコヒーレンシー・ドメイン内の前記第1のキャッシュ・メモリが、
    メモリ・ブロックと関連してアドレス・タグを格納するタグ・フィールドと、
    前記タグ・フィールドおよび前記メモリ・ブロックをキャッシュする記憶位置と関連するコヒーレンシー状態フィールドであって第1および第2のデータ無効コヒーレンシー状態を含む複数の可能なコヒーレンシー状態を有し、前記第1のデータ無効コヒーレンシー状態が、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないこととを示し、前記第2のデータ無効コヒーレンシー状態が、前記アドレス・タグが有効であることと、前記記憶位置が有効データを含まないことと、前記アドレス・タグと関連する目標メモリ・ブロックが、前記第1のコヒーレンシー・ドメイン内にキャッシュされている可能性が高いかどうかとを示す、コヒーレンシー状態フィールドとを含むキャッシュ・ディレクトリを含み、
    前記アドレス・タグに一致しており、かつ排他的アクセス動作を開始した要求元の相対的ドメイン・ロケーションの表示を含む、目標アドレスを指定する前記排他的アクセス動作のスヌーピングに応答してキャッシュ・コントローラが、前記コヒーレンシー状態フィールドを、前記第1のデータ無効コヒーレンシー状態から、前記第2のデータ無効コヒーレンシー状態に更新する、キャッシュ・コヒーレント・データ処理システム。
JP2007062831A 2006-03-23 2007-03-13 動作のスヌーピングに応答して無効コヒーレンシー状態を更新するデータ処理システム、キャッシュ・システム、および方法 Expired - Fee Related JP5078396B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/388017 2006-03-23
US11/388,017 US7451277B2 (en) 2006-03-23 2006-03-23 Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation

Publications (2)

Publication Number Publication Date
JP2007257631A JP2007257631A (ja) 2007-10-04
JP5078396B2 true JP5078396B2 (ja) 2012-11-21

Family

ID=38534943

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007062831A Expired - Fee Related JP5078396B2 (ja) 2006-03-23 2007-03-13 動作のスヌーピングに応答して無効コヒーレンシー状態を更新するデータ処理システム、キャッシュ・システム、および方法

Country Status (4)

Country Link
US (2) US7451277B2 (ja)
JP (1) JP5078396B2 (ja)
CN (1) CN100520738C (ja)
TW (1) TWI463318B (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US8561037B2 (en) * 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US8250311B2 (en) * 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US20100332762A1 (en) * 2009-06-30 2010-12-30 Moga Adrian C Directory cache allocation based on snoop response information
US8327107B2 (en) * 2010-03-08 2012-12-04 International Business Machines Corporation Volume coherency verification for sequential-access storage media
US8935485B2 (en) 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
US9152501B2 (en) * 2012-12-19 2015-10-06 International Business Machines Corporation Write performance in fault-tolerant clustered storage systems
TWI526966B (zh) 2013-11-25 2016-03-21 財團法人資訊工業策進會 資料處理裝置及資料處理方法
US9411542B2 (en) * 2014-02-21 2016-08-09 Analog Devices Global Interruptible store exclusive
US11163682B2 (en) * 2015-12-29 2021-11-02 Intel Corporation Systems, methods, and apparatuses for distributed consistency memory
US20170286118A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion
CN106341402B (zh) * 2016-08-30 2019-11-12 中国民生银行股份有限公司 基于多架构分布式缓存的处理方法和装置
KR20190086669A (ko) * 2016-12-12 2019-07-23 인텔 코포레이션 프로세서 아키텍처에 대한 장치들 및 방법들
US11159636B2 (en) * 2017-02-08 2021-10-26 Arm Limited Forwarding responses to snoop requests
US10248330B2 (en) * 2017-05-30 2019-04-02 Seagate Technology Llc Data storage device with buffer tenure management
US10387310B2 (en) * 2018-01-17 2019-08-20 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10713169B2 (en) 2018-01-17 2020-07-14 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10579527B2 (en) 2018-01-17 2020-03-03 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US10733102B2 (en) * 2018-12-19 2020-08-04 International Business Machines Corporation Selectively updating a coherence state in response to a storage update
CN110049104A (zh) * 2019-03-15 2019-07-23 佛山市顺德区中山大学研究院 基于分层片上互连网络的混合缓存方法、系统及存储介质
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
US20210011864A1 (en) * 2020-09-25 2021-01-14 Francesc Guim Bernat System, apparatus and methods for dynamically providing coherent memory domains
CN112433961B (zh) * 2020-12-02 2022-07-08 海光信息技术股份有限公司 复合缓存目录系统及其管理方法
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request
US11556472B1 (en) * 2021-08-04 2023-01-17 International Business Machines Corporation Data processing system having masters that adapt to agents with differing retry behaviors

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5829034A (en) * 1996-07-01 1998-10-27 Sun Microsystems, Inc. Method and apparatus for a coherence transformer with limited memory for connecting computer system coherence domains
US5852716A (en) * 1996-07-02 1998-12-22 Sun Microsystems, Inc. Split-SMP computer system with local domains and a top repeater that distinguishes local and global transactions
CN1230721A (zh) * 1998-02-17 1999-10-06 国际商业机器公司 具有指令和数据的悬停(h)状态的高速缓存相关协议
US6192451B1 (en) * 1998-02-17 2001-02-20 International Business Machines Corporation Cache coherency protocol for a data processing system including a multi-level memory hierarchy
US6141733A (en) * 1998-02-17 2000-10-31 International Business Machines Corporation Cache coherency protocol with independent implementation of optimized cache operations
US6886079B2 (en) * 2001-06-21 2005-04-26 International Business Machines Corporation Dynamic history based mechanism for the granting of exclusive data ownership in a non-uniform memory access (NUMA) computer system
US7716428B2 (en) * 2006-02-28 2010-05-11 International Business Machines Corporation Data processing system, cache system and method for reducing imprecise invalid coherency states
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation

Also Published As

Publication number Publication date
US20080301377A1 (en) 2008-12-04
JP2007257631A (ja) 2007-10-04
TW200821834A (en) 2008-05-16
CN100520738C (zh) 2009-07-29
US7451277B2 (en) 2008-11-11
US7743218B2 (en) 2010-06-22
CN101042680A (zh) 2007-09-26
TWI463318B (zh) 2014-12-01
US20070226427A1 (en) 2007-09-27

Similar Documents

Publication Publication Date Title
JP5078396B2 (ja) 動作のスヌーピングに応答して無効コヒーレンシー状態を更新するデータ処理システム、キャッシュ・システム、および方法
JP4928812B2 (ja) タグ付きキャッシュ状態に基づいて下位レベル・キャッシュへの参照なしに相互接続ファブリック上にリクエストを送出するためのデータ処理システム、キャッシュ・システム、および方法
JP5105863B2 (ja) 複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理するデータ処理システム、方法、およびメモリ・コントローラ
US8140770B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation
US7389388B2 (en) Data processing system and method for efficient communication utilizing an in coherency state
US7716428B2 (en) Data processing system, cache system and method for reducing imprecise invalid coherency states
JP4594900B2 (ja) メモリ・ブロックを初期設定するためのプロセッサ、データ処理システム、および方法
US7404046B2 (en) Cache memory, processing unit, data processing system and method for filtering snooped operations
US7577797B2 (en) Data processing system, cache system and method for precisely forming an invalid coherency state based upon a combined response
JP2008097598A (ja) 共用のグローバル・コヒーレンシ状態を支援するプロセッサ、データ処理システム、および方法
US7454578B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory
US7478201B2 (en) Data processing system, cache system and method for passively scrubbing a domain indication
JP5004571B2 (ja) 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法
US7467262B2 (en) Data processing system, cache system and method for scrubbing a domain indication in response to execution of program code
US7475195B2 (en) Data processing system, cache system and method for actively scrubbing a domain indication
US7584331B2 (en) Data processing system and method for selectively updating an invalid coherency state in response to snooping a castout
JP5063059B2 (ja) 方法、データ処理システム、メモリ・コントローラ(i/o書込みオペレーションのパイプライン化および多重オペレーション範囲を可能にするデータ処理システムおよび方法)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120718

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120807

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120828

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees