JP2007207223A - 複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理するデータ処理システム、方法、およびメモリ・コントローラ - Google Patents

複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理するデータ処理システム、方法、およびメモリ・コントローラ Download PDF

Info

Publication number
JP2007207223A
JP2007207223A JP2006350414A JP2006350414A JP2007207223A JP 2007207223 A JP2007207223 A JP 2007207223A JP 2006350414 A JP2006350414 A JP 2006350414A JP 2006350414 A JP2006350414 A JP 2006350414A JP 2007207223 A JP2007207223 A JP 2007207223A
Authority
JP
Japan
Prior art keywords
cache
memory block
response
coherency
domain
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.)
Granted
Application number
JP2006350414A
Other languages
English (en)
Other versions
JP5105863B2 (ja
Inventor
Lynn Guthrie Guy
ガイ・リン・ガスリー
Edward Williams Derek
デレク・エドワード・ウィリアムズ
William John Starke
ウィリアム・ジョン・スターク
John Thomas Hollaway Jr
ジョン・トーマス・ハロウェイ・ジュニア
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 JP2007207223A publication Critical patent/JP2007207223A/ja
Application granted granted Critical
Publication of JP5105863B2 publication Critical patent/JP5105863B2/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/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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

Abstract

【課題】改善されたキャッシュ・コヒーレント・データ処理システム、データ処理の方法の提供。
【解決手段】少なくとも第1および第2コヒーレンシ・ドメインが含まれる。第1コヒーレンシ・ドメインは、ブロードキャストされるフラッシュ動作を受信する。フラッシュ動作は、ターゲット・メモリ・ブロックのターゲット・アドレスを指定する。第1コヒーレンシ・ドメインは、フラッシュ動作に関する組合せ応答も受信する。第1コヒーレンシ・ドメインでの組合せ応答の受信に応答して、その組合せ応答が、ターゲット・メモリ・ブロックのキャッシュ・コピーがデータ処理システム内に残っている可能性があることを示すかどうかの判定が行われ、可能性があることを示すと判定されたことに応答して、ターゲット・メモリ・ブロックが第1コヒーレンシ・ドメインの外部でキャッシュされることを示すように、ドメイン・インジケータが更新される。
【選択図】図5

Description

本発明は、全般的にはデータ処理に関し、具体的には、キャッシュ・コヒーレント・データ処理システムでのデータ処理に関する。
サーバ・コンピュータ・システムなどの普通の対称型マルチプロセッサ(SMP)コンピュータ・システムは、システム相互接続によって相互に結合された複数の処理ユニットを含む。通常、システム相互接続は、アドレス・バス、データ・バス、および制御バスを含み、マルチプロセッサ・コンピュータ・システムの最低レベルの不揮発性メモリを表し、一般に、すべての処理ユニットによる読取アクセスおよび書込アクセスのためにアクセス可能なシステム・メモリが結合されている。システム・メモリに常駐する命令およびデータへのアクセス待ち時間を減らすために、各処理ユニットは、通常、それぞれのマルチレベル・キャッシュ階層によってさらにサポートされ、このマルチレベル・キャッシュ階層のより下位のレベルを、プロセッサ・コアによって共用することができる。
複数のプロセッサ・コアが、データの同一のキャッシュ・ラインへの書込アクセスを要求する場合があり、変更されたキャッシュ・ラインは、即座にはシステム・メモリと同期化されないので、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は、通常、システム・メモリの内容の様々なプロセッサ・コアの「ビュー」の間の少なくとも最低レベルのコヒーレンスを保証するために、キャッシュ・コヒーレンシ・プロトコルを実施する。具体的には、キャッシュ・コヒーレンシは、最低でも、ある処理ユニットがメモリ・ブロックのコピーにアクセスし、その後、そのメモリ・ブロックの更新されたコピーにアクセスした後は、その処理ユニットが、メモリ・ブロックの古いコピーに再びアクセスできないことが必要である。
キャッシュ・コヒーレンシ・プロトコルは、通常、各キャッシュ階層のキャッシュ・ラインに関連して保管されるコヒーレンシ状態の組ならびにキャッシュ階層の間でキャッシュ状態情報を通信するのに利用されるコヒーレンシ・メッセージの組を定義する。通常の実施態様では、コヒーレンシ状態情報は、周知のMESI(Modified, Exclusive, Shared, Invalid)プロトコルまたはその変形形態の形をとり、コヒーレンシ・メッセージは、メモリ・アクセス要求の要求元および/または受信側のキャッシュ階層内のプロトコル定義のコヒーレンシ状態遷移を示す。
米国特許出願公開2006−0179252号
本発明は、改善されたキャッシュ・コヒーレント・データ処理システム、キャッシュ・システム、およびキャッシュ・コヒーレント・データ処理システムでのデータ処理の方法を提供することを目的とする。
一実施形態で、キャッシュ・コヒーレント・データ処理システムに、少なくとも第1コヒーレンシ・ドメインおよび第2コヒーレンシ・ドメインが含まれる。第1コヒーレンシ・ドメインに、メモリ・コントローラ、ターゲット・アドレスによって識別されるターゲット・メモリ・ブロックを有する関連するシステム・メモリ、およびターゲット・メモリ・ブロックが第1コヒーレンシ・ドメインの外部でキャッシュされるかどうかを示すドメイン・インジケータが含まれる。第1コヒーレンシ・ドメインは、その動作中に、第1コヒーレンシ・ドメインおよび第2コヒーレンシ・ドメインにブロードキャストされるフラッシュ動作を受信する。フラッシュ動作は、ターゲット・メモリ・ブロックのターゲット・アドレスを指定する。第1コヒーレンシ・ドメインは、フラッシュ動作に対するシステム全体の応答を表す、フラッシュ動作に関する組合せ応答も受信する。第1コヒーレンシ・ドメインでの組合せ応答の受信に応答して、その組合せ応答が、ターゲット・メモリ・ブロックのキャッシュ・コピーがデータ処理システム内に存在する可能性があることを示すかどうかの判定が行われる。組合せ応答が、ターゲット・メモリ・ブロックのキャッシュ・コピーがデータ処理システム内に存在する可能性があることを示すと判定されたことに応答して、ターゲット・メモリ・ブロックが第1コヒーレンシ・ドメインの外部でキャッシュされることを示すように、ドメイン・インジケータが更新される。
少なくともいくつかの実施形態で、フラッシュ動作は、そのフラッシュ動作を発行したマスタにターゲット・メモリ・ブロックのコヒーレンシのオーナーシップ(ownership)を付与できるようになるまで再発行される。その後、そのマスタは、必要であれば1つ以上のキル動作を発行して、ターゲット・メモリ・ブロックの共用されるキャッシュ・コピーをデータ処理システムからフラッシュする。フラッシュ動作を開始したマスタへのコヒーレンシのオーナーシップの付与は、ターゲット・メモリ・ブロックの共用されるキャッシュ・コピーの個数を増やす可能性がある読取動作が存在する状態で、フラッシュ動作が進行できることを保証する。コヒーレンシのオーナーシップをマスタに付与するために、必要な場合に、ホーム・システム・メモリでドメイン・インジケータが更新される。その結果、そのフラッシュ動作と衝突するすべての動作が、フラッシュ動作のマスタによってスヌープされ、制限されるようになる。
本発明の目的、特徴、および利点は、次の詳細な説明から明らかになるだろう。
本発明に固有と思われる新規の特徴は、添付の特許請求の範囲に記載される。しかし、本発明ならびに本発明の使用の好ましい実施態様は、添付図面とともに読まれるべき以下の例示的実施形態の詳細な説明を参照することによって最もよく理解されるだろう。
I.例示的なデータ処理システム
ここで図面、具体的には図1を参照すると、本発明によるキャッシュ・コヒーレント対称型マルチプロセッサ(SMP)データ処理システムの例示的な実施形態の高水準ブロック図が示されている。図示のように、データ処理システム100に、データおよび命令を処理する複数の処理ノード102aおよび102bが含まれる。処理ノード102aおよび102bは、アドレス、データ、および制御情報を伝えるために、システム相互接続110に結合される。システム相互接続110は、例えば、バス式相互接続、交換相互接続、またはハイブリッド相互接続として実施することができる。
図示の実施形態では、各処理ノード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)208と、命令を実行する1つ以上の実行ユニット224とが含まれる。下でさらに述べるように、実行ユニット224に、メモリ・ブロックを参照するかメモリ・ブロックを参照する動作の生成を引き起こすメモリ・アクセス命令を実行するロード・ストア・ユニット(LSU)228が含まれることが好ましい。
各プロセッサ・コア200の動作は、その最も下のレベルに共用されるシステム・メモリ108a〜108d、より上位のレベルに1つ以上のレベルのキャッシュ・メモリを有するマルチレベル揮発性メモリ階層によってサポートされる。図示の実施形態では、各処理ユニット104に、プロセッサ・コア200aおよび200bから受け取られた要求と、ローカル相互接続114上でスヌーパ(S)222によってスヌープされた動作とに応答して処理ノード102内のシステム・メモリ108a〜108dのめいめいの1つへの読取アクセスおよび書込アクセスを制御する統合メモリ・コントローラ(IMC)206が含まれる。IMC 206に、基底アドレス・レジスタ(BAR)ロジック240が含まれ、BARロジック240には、IMC 206が責任を負うアドレスを定義する範囲レジスタが含まれる。
図示の実施形態では、処理ユニット104のキャッシュ・メモリ階層に、各プロセッサ・コア200内のストアスルー式のレベル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へのアクセスのすべてを実行する。スヌーパ236に、その処理ユニット104のIMC 206が責任を負うアドレスを示すBARロジック238が含まれる。
図示のキャッシュ階層には、2レベルのキャッシュだけが含まれるが、当業者は、代替実施形態にオンチップまたはオフチップのインライン・キャッシュまたはルックアサイド・キャッシュの追加レベル(L3、L4、L5など)を含めることができ、これらに、キャッシュのより上位のレベルの内容をすべて含める、部分的に含める、または含めないものとすることができることを諒解するであろう。
各処理ユニット104に、さらに、応答ロジック210のインスタンスが含まれ、このインスタンスは、データ処理システム100内のキャッシュ・コヒーレンシを維持する分散コヒーレンシ・シグナリング機構の一部を実施する。さらに、各処理ユニット104に、そのローカル相互接続114とシステム相互接続110との間の通信を選択的に転送する相互接続ロジック212のインスタンスが含まれる。最後に、各処理ユニット104に、入出力デバイス216などの1つ以上の入出力デバイスの接続をサポートする統合された入出力コントローラ214が含まれる。入出力コントローラ214は、入出力デバイス216による要求に応答して、ローカル相互接続114および/またはシステム相互接続110で動作を発行することができる。
図3を参照すると、L2アレイおよびディレクトリ234の例示的実施形態のより詳細なブロック図が示されている。図示のように、L2アレイおよびディレクトリ234に、セット・アソシアティブのL2キャッシュ・アレイ300と、L2キャッシュ・アレイ300の内容のL2キャッシュ・ディレクトリ302とが含まれる。普通のセット・アソシアティブ・キャッシュと同様に、システム・メモリ108内のメモリ位置は、システム・メモリ(実)アドレス内の所定のインデックス・ビットを利用して、L2キャッシュ・アレイ300内の特定の合同クラス(congruence classes)にマッピングされる。L2キャッシュ・アレイ300内に保管される特定のキャッシュ・ラインは、L2キャッシュ・ディレクトリ302に記録され、L2キャッシュ・ディレクトリ302には、L2キャッシュ・アレイ300内のキャッシュ・ラインごとに1つのディレクトリ・エントリが含まれる。当業者が理解するように、L2キャッシュ・ディレクトリ302内の各ディレクトリ・エントリには、少なくとも、対応する実アドレスのタグ部分を利用してL2キャッシュ・アレイ300に保管される特定のキャッシュ・ラインを指定するタグ・フィールド304と、キャッシュ・ラインのコヒーレンシ状態を示す状態フィールド306と、同一合同クラス内の他のキャッシュ・ラインに関するキャッシュ・ラインの置換順序を示すLRU(LeastRecently Used)フィールド308とが含まれる。
II.例示的動作
図4を参照すると、図1のデータ処理システム100のシステム相互接続110またはローカル相互接続114での例示的な動作の時空間図が示されている。この動作は、L2キャッシュ230のマスタ232(または、入出力コントローラ214などの別のマスタ)が、ローカル相互接続114および/またはシステム相互接続110で要求402を発行する時に開始される。要求402に、所望のアクセスのタイプを示すトランザクション・タイプと、その要求によってアクセスされるリソースを示すリソース識別子(例えば、実アドレス)が含まれることが好ましい。一般的なタイプの要求に、下の表Iに示された要求が含まれることが好ましい。
Figure 2007207223
要求402は、L2キャッシュ230のスヌーパ236ならびにIMC 206(図1)のスヌーパ222によって受け取られる。一般に、いくつかの例外はあるが、要求402のマスタ232と同一のL2キャッシュ230内のスヌーパ236は、要求402をスヌープしない(すなわち、一般に、自己スヌーピングはない)。というのは、要求402を処理ユニット104によって内部でサービスできない場合に限って、要求402がローカル相互接続114および/またはシステム相互接続110で送られるからである。要求402を受信するスヌーパ222およびスヌーパ236のそれぞれは、少なくとも要求402に対するそのスヌーパの応答を表すめいめいの部分的応答406を供給することができる。IMC 206内のスヌーパ222は、例えば、スヌーパ222が要求アドレスに関して責任を負うかどうかおよびその要求にサービスするのに使用可能なリソースを有するかどうかに基づいて、供給される部分的応答406を決定する。L2キャッシュ230のスヌーパ236は、例えば、L2キャッシュ・ディレクトリ302の可用性、その要求を使用するためのスヌーパ236内のスヌープ・ロジック・インスタンスの可用性、およびL2キャッシュ・ディレクトリ302内の要求アドレスに関連するコヒーレンシ状態に基づいて、その部分的応答406を決定することができる。
スヌーパ222およびスヌーパ236の部分的応答は、応答ロジック210の1つ以上のインスタンスによって、段階的にまたすべて一時にのいずれかで論理的に組み合わされて、要求402に対するシステム全体の組合せ応答(CR)410が決定される。下で述べる範囲制限を受けて、応答ロジック210は、そのローカル相互接続114および/またはシステム相互接続110を介してマスタ232、スヌーパ222、およびスヌーパ236に組合せ応答410を供給して、要求402に対するシステム全体の応答(例えば、成功、失敗、再試行など)を示す。組合せ応答410が、要求402の成功を示す場合に、組合せ応答410は、例えば、要求されたメモリ・ブロックのデータ・ソース、要求されたメモリ・ブロックがマスタ232によってキャッシュされるキャッシュ状態、および1つ以上のL2キャッシュ230内の要求されたメモリ・ブロックを無効化する「クリーンアップ」(例えば、KILL)動作が必要であるかどうかを示すことができる。
組合せ応答410の受信に応答して、マスタ232、スヌーパ222、およびスヌーパ236のうちの1つ以上が、通常、要求402にサービスするために1つ以上の動作を実行する。これらの動作に、データをマスタ232に供給すること、1つ以上のL2キャッシュ230にキャッシュされたデータのコヒーレンシ状態を無効化するか他の形で更新すること、キャストアウト動作を実行すること、データをシステム・メモリ108に書き戻すことなどを含めることができる。要求402によって要求される場合に、応答ロジック210による組合せ応答410の生成の前または後に、要求されたまたはターゲットのメモリ・ブロックをマスタ232にまたはこれから送ることができる。
次の説明では、要求に対するスヌーパ222およびスヌーパ236の部分的応答と、要求および/または組合せ応答に応答してスヌーパによって実行される動作とを、そのスヌーパが、要求によって指定される要求アドレスに関して、コヒーレンシの最高点(Highest Point of Coherency、HPC)、コヒーレンシの最低点(Lowest Point of Coherency、LPC)、またはこのどちらでもないのうちのどれであるかに関して説明する。LPCは、本明細書では、メモリ・ブロックのリポジトリに関する制御点として機能するメモリ・デバイスまたは入出力デバイスと定義される。メモリ・ブロックのHPCがないときに、LPCは、メモリ・ブロックの真のイメージを保持するストレージへのアクセスを制御し、そのメモリ・ブロックの追加のキャッシュされるコピーを生成する要求を許可するか拒否する権限を有する。図1および2のデータ処理システム実施形態での通常の要求について、LPCは、参照されるメモリ・ブロックを保持するシステム・メモリ108のIMC 206である。HPCは、本明細書では、メモリ・ブロックの真のイメージ(LPCでの対応するメモリ・ブロックと一貫していてもいなくてもよい)をキャッシュし、そのメモリ・ブロックを変更する要求を許可するか拒否する権限を有するデバイスと一意に定義される。説明的には、HPCは、メモリ・ブロックを変更しない動作に応答して、要求元にメモリ・ブロックのコピーを供給することもできる。したがって、図1および2のデータ処理システム実施形態での通常の要求について、HPCは、存在する場合に、L2キャッシュ230になる。他のインジケータを使用して、メモリ・ブロックのHPCを指定することができるが、本発明の好ましい実施形態は、下で表IIを参照してさらに説明するように、メモリ・ブロックのHPCがある場合に、L2キャッシュ230のL2キャッシュ・ディレクトリ302内の選択されたキャッシュ・コヒーレンシ状態を利用して、そのHPCを指定する。
引き続き図4を参照すると、要求402で参照されるメモリ・ブロックのHPCがある場合にはHPCが、HPCがない場合にはそのメモリ・ブロックのLPCが、保護ウィンドウ404a中に要求402に応答してメモリ・ブロックののオーナーシップの転送を保護する責任を有することが好ましい。図4に示された例示的なシナリオでは、要求402の要求アドレスによって指定されるメモリ・ブロックのHPCであるスヌーパ236が、保護ウィンドウ404a中にマスタ232への要求されたメモリ・ブロックののオーナーシップの転送を保護し、保護ウィンドウ404aは、スヌーパ236がその部分的応答406を決定した時から、スヌーパ236が組合せ応答410を受信する時まで延びる。保護ウィンドウ404a中に、スヌーパ236は、のオーナーシップがマスタ232に成功裡に転送されるまで他のマスタがのオーナーシップを入手するのを妨げる、同一の要求アドレスを指定する他の要求に対する部分的応答406を供給することによって、のオーナーシップの転送を保護する。マスタ232は、同様に、組合せ応答410の受信の後に、要求402で要求されたメモリ・ブロックののオーナーシップを保護するために、保護ウィンドウ404bを開始する。
スヌーパ222およびスヌーパ236のすべてが、上で説明したCPU要求および入出力要求を処理するための限られたリソースを有するので、複数の異なるレベルの部分的応答および対応するCRが可能である。例えば、要求されたメモリ・ブロックの責任を負うIMC 206内のスヌーパ222が、要求を処理するのに使用可能なキューを有する場合に、スヌーパ222は、その要求のLPCとして働くことができることを示す部分的応答を用いて応答することができる。その一方で、スヌーパ222が、要求を処理するのに使用可能なキューを有しない場合に、スヌーパ222は、それがそのメモリ・ブロックのLPCであるが、現在その要求にサービスすることができないことを示す部分的応答を用いて応答することができる。
同様に、L2キャッシュ230内のスヌーパ236は、要求を処理するために、スヌープ・ロジックの使用可能なインスタンスおよびL2キャッシュ・ディレクトリ302へのアクセスを要求することができる。これらのリソースのいずれか(または両方)へのアクセスの不在は、必要なリソースの不在に起因して現在は要求にサービスできないことをシグナリングする部分的応答(および対応するCR)をもたらす。
以下では、要求をサービスするのに必要な場合に、スヌーパが現在その要求にサービスするのに必要な使用可能なすべての内部リソースを有することを示す部分的応答を、スヌーパ222およびスヌーパ236が供給することを、要求を「肯定する(affirm)」と言う。スヌーパ236について、スヌープされる動作を肯定する部分的応答は、スヌーパ236での要求されたまたはターゲットのメモリ・ブロックのキャッシュ状態を示すことが好ましい。スヌーパ236が要求に現在サービスするのに必要な使用可能なすべての内部リソースを有してはいないことを示す部分的応答を供給するスヌーパ222およびスヌーパ236を、要求にサービスすることから「部分的に隠されている」または「することができない」と言う場合がある。そのようなスヌーパ236は、スヌープ・ロジックの使用可能なインスタンスまたはL2キャッシュ・ディレクトリ302への現在のアクセスの欠如に起因して、上で定義した意味で要求を「肯定する」ことができないので、要求にサービスすることから「部分的に隠されている」または「することができず」、他のマスタ232、スヌーパ222、およびスヌーパ236の展望からは、未知のコヒーレンシ状態を有する。
III.データ送達ドメイン
普通のブロードキャストベースのデータ処理システムは、キャッシュ・コヒーレンシとデータ送達の両方をブロードキャスト通信を介して処理し、このブロードキャスト通信は、普通のシステムでは、システム相互接続上で、少なくとも、システム内のすべてのメモリ・コントローラおよびキャッシュ階層に送られる。代替のアーキテクチャおよび類似するスケールのシステムと比較して、ブロードキャストベースのシステムは、減らされたアクセス待ち時間と、共用メモリ・ブロックのよりよいデータ・ハンドリングおよびコヒーレンシ管理とを提供する傾向がある。
ブロードキャストベースのシステムが、サイズにおいてスケーリングされる時に、システム相互接続上のトラフィック量が倍加し、これは、システム相互接続を介する通信により多くの帯域幅が必要なので、システム・コストがシステム・スケールに伴って急激に増加することを意味する。すなわち、m個のプロセッサ・コアを有し、各プロセッサ・コアがnトランザクションの平均トラフィック量を有するシステムは、m×nのトラフィック量を有し、これは、ブロードキャストベースのシステムのトラフィック量が、加算的ではなく乗算的にスケーリングされることを意味する。実質的により大きい相互接続帯域幅の要件のほかに、システム・サイズの増加は、アクセス待ち時間を増やすという副次的影響を有する。例えば、データ読取のアクセス待ち時間は、ワースト・ケースで、要求されたデータをそこからソーシングできる共用コヒーレンシ状態内の要求されたメモリ・ブロックを保持する最も遠いより下位のレベルのキャッシュの組合せ応答待ち時間によって制限される。
システム相互接続帯域幅要件およびアクセス待ち時間を減らすと同時にブロードキャストベースのシステムの利点を維持するために、データ処理システム100全体に分散された複数のL2キャッシュ230が、これらのキャッシュがキャッシュ対キャッシュ介入を使用して要求元のL2キャッシュ230にメモリ・ブロックを供給することを可能にする「特殊な」共用コヒーレンシ状態で同一のメモリ・ブロックのコピーを保持することを許可される。データ処理システム100などのSMPデータ処理システムで共用メモリ・ブロックの複数同時分散ソースを実施するためには、2つの問題に対処しなければならない。第1に、上で述べた「特殊な」共用コヒーレンシ状態にあるメモリ・ブロックのコピーの作成を支配するあるルールを実施しなければならない。第2に、スヌープするL2キャッシュ230がある場合に、そのうちのどれが、例えばバス読取り動作またはバスRWITM動作に応答して、要求元のL2キャッシュ230に共用メモリ・ブロックを供給するのかを支配するルールがなければならない。
本発明によれば、これらの問題の両方が、データ・ソーシング・ドメインの実施態様を介して対処される。具体的に言うと、SMPデータ処理システム内の各ドメインは、ドメインが、データ要求への応答に参加する1つ以上のより下位のレベル(例えば、L2)キャッシュを含むように定義される場合に、一時に、「特殊な」共用コヒーレンシ状態の特定のメモリ・ブロックを保持する1つのキャッシュ階層だけを含むことを許可される。そのキャッシュ階層は、バス読取タイプ(例えば、読取りまたはRWITM)動作が同一ドメイン内の要求元のより下位のキャッシュ・レベルによって開始された時に存在する場合に、その要求元のより下位のキャッシュ・レベルに要求されたメモリ・ブロックをソーシングする責任を負う。多数の異なるドメイン・サイズを定義することができるが、図1のデータ処理システム100では、各処理ノード102(すなわち、MCM)がデータ・ソーシング・ドメインであると考えることが便利である。そのような「特殊な」共用状態(すなわち、Sr)の一例を、下で表IIを参照して説明する。
IV.コヒーレンシ・ドメイン
上で説明したデータ送達ドメインの実施態様は、データ・アクセス待ち時間を改善するが、この機能強化は、システム・スケールが増える時のトラフィック量のm×n倍加には対処しない。ブロードキャストベースのコヒーレンシ機構を維持しながらトラフィック量を減らすために、本発明の好ましい実施形態は、さらに、コヒーレンシ・ドメインを実施するが、このコヒーレンシ・ドメインは、上で説明したデータ送達ドメインに似て、別々のコヒーレンシ・ドメインを形成する各処理ノード102を用いて便利に実施することができる(しかし、そのように実施される必要はない)。データ送達ドメインおよびコヒーレンシ・ドメインは、そうである必要はないが共存することができ、データ処理システム100の例示的動作の説明において、以下では、処理ノード102によって定義される境界を有すると仮定する。
コヒーレンシ・ドメインの実施態様は、すべてより少ないコヒーレンシ・ドメインによる参加によって要求にサービスできる場合に、システム相互接続110を介するドメイン間ブロードキャスト通信を制限することによって、システム・トラフィックを減らす。例えば、処理ノード102aの処理ユニット104aが、発行すべきバス読取動作を有する場合に、処理ユニット104aは、まずそのバス読取動作をそれ自体のコヒーレンシ・ドメイン(例えば、バス処理ノード102a)内のすべての参加者にブロードキャストするが、他のコヒーレンシ・ドメイン(例えば、処理ノード102b)内の参加者にはブロードキャストしないことを選択することができる。動作のマスタと同一のコヒーレンシ・ドメイン内の参加者だけに送信されるブロードキャスト動作を、本明細書では「ローカル動作」と定義する。ローカル・バス読取動作に、処理ユニット104aのコヒーレンシ・ドメイン内でサービスすることができる場合に、バス読取動作のこれ以上のブロードキャストは実行されない。しかし、このローカル・バス読取動作に対する部分的応答および組合せ応答が、このバス読取動作を処理ノード102aのコヒーレンシ・ドメイン内だけではサービスできないことを示す場合には、ブロードキャストの範囲を拡張して、ローカル・コヒーレンシ・ドメインのほかに、1つ以上の追加のコヒーレンシ・ドメインを含めることができる。
基本的な実施態様では、2つのブロードキャスト・スコープ(範囲)すなわち、ローカル・コヒーレンシ・ドメインだけを含む「ローカル」スコープと、SMPデータ処理システム内の他のコヒーレンシ・ドメインのすべてを含む「グローバル」スコープとが使用される。したがって、SMPデータ処理システム内のすべてのコヒーレンシ・ドメインに送られる動作を、本明細書では「グローバル動作」と定義する。重要なことに、ローカル動作またはより広い範囲の動作(例えば、グローバル動作)のどちらが動作にサービスするのに使用されるかにかかわりなく、キャッシュ・コヒーレンシは、SMPデータ処理システム内のすべてのコヒーレンシ・ドメインにまたがって維持される。なお、このようなローカル動作およびグローバル動作の一例は、例えば、米国特許出願公開2006−0179252号に記載されている。
好ましい実施形態では、動作の範囲は、バス動作において、ローカル/グローバル・スコープ・インジケータ(信号)によって示され、このローカル/グローバル・スコープ・インジケータ(信号)には、一実施形態で、1ビット・フラグを含めることができる。処理ユニット104内の相互接続ロジック212が、動作のローカル/グローバル・スコープ・インジケータ(信号)のセッティングに基づいて、ローカル相互接続114を介して受け取られた動作を、システム相互接続110上で転送するか否かを決定することが好ましい。
この説明では、コヒーレンシ・ドメイン(または処理ノード)にメモリ・ブロックのLPCが含まれる場合に、そのコヒーレンシ・ドメインを、そのメモリ・ブロックの「ホーム」コヒーレンシ・ドメイン(または「ホーム」ノード)と呼ぶ。
V.ドメイン・インジケータ
不必要なローカル動作の発行を制限し、これによって動作待ち時間を減らし、ローカル相互接続上の追加帯域幅を保護するために、本発明は、関連するメモリ・ブロックのコピーがローカル・コヒーレンシ・ドメインの外部でキャッシュされるか否かを示す、メモリ・ブロックごとのドメイン・インジケータを実施することが好ましい。例えば、図5に、本発明によるドメイン・インジケータの第1の例示的実施態様を示す。図5に示されているように、ダイナミック・ランダム・アクセス・メモリ(DRAM)で実施できるシステム・メモリ108に、複数のメモリ・ブロック500が保管される。システム・メモリ108には、各メモリ・ブロック500に関連して、メモリ・ブロック500内に誤りがある場合にその訂正に利用される関連する誤り訂正コード(ECC)502と、ドメイン・インジケータ504とが保管される。本発明のいくつかの実施形態では、ドメイン・インジケータ504が、特定のコヒーレンシ・ドメインを識別する(すなわち、コヒーレンシ・ドメインIDまたはノードIDを指定する)ことができるが、下では、ドメイン・インジケータ504は、関連するメモリ・ブロック500が、仮にキャッシュされるとしても、メモリ・ブロック500のLPCとして働くIMC 206と同一のコヒーレンシ・ドメイン内でのみキャッシュされる場合にセットされる(例えば、「ローカル」を示すために「1」にセットされる)、1ビット・インジケータであると仮定する。ドメイン・インジケータ504は、そうでない場合にリセットされる(例えば、「グローバル」を示すために「0」にリセットされる)。「ローカル」を示すためにドメイン・インジケータ504をセットすることは、「グローバル」の誤ったセッティングがコヒーレンシ・エラーを誘導するのではなく、動作の不必要なグローバル・ブロードキャストを引き起こす可能性があるという点で、不正確に実施することができる。
動作に応答してメモリ・ブロックをソーシングするIMC 206(およびL2キャッシュ230)は、要求されたメモリ・ブロックと共に、関連するドメイン・インジケータ504を送ることが好ましい。
VI.例示的なコヒーレンシ・プロトコル
本発明は、上で説明したデータ送達ドメインおよびコヒーレンシ・ドメインの実施態様を活用するように設計されたキャッシュ・コヒーレンシ・プロトコルを実施することが好ましい。好ましい実施形態では、このプロトコル内のキャッシュ・コヒーレンシ状態は、(1)キャッシュがメモリ・ブロックのHPCであるかどうかの表示を提供するほかに、(2)キャッシュ・コピーが、そのメモリ階層レベルのキャッシュの中で一意(すなわち、システム全体で唯一のキャッシュ・コピー)であるかどうかと、(3)キャッシュが、メモリ・ブロックに関する要求のマスタにメモリ・ブロックのコピーを供給できるかどうか、およびいつ供給できるかと、(4)メモリ・ブロックのキャッシュされたイメージが、LPCの対応するメモリ・ブロック(システム・メモリ)と一貫しているかどうかと、(5)リモート・コヒーレンシ・ドメイン内(おそらく)の別のキャッシュが、一致するアドレスを有するキャッシュ・エントリを保持するかどうかとも示す。この5つの属性は、例えば、下の表IIに要約された周知のMESI(Modified, Exclusive, Shared, Invalid)プロトコルの例示的変形形態で表すことができる。
Figure 2007207223
A.Ig状態
メモリ・ブロックが、仮にキャッシュされるとしてもローカルにのみキャッシュされることがわかっているか否かを判定するためにLPCにアクセスする必要をなくすために、Ig(無効グローバル)コヒーレンシ状態を利用して、メモリ・ブロックのコピーがコヒーレンシ・ドメイン内でキャッシュされたままではない場合のドメイン表示を維持する。Ig状態は、本明細書では、(1)キャッシュ・アレイ内の関連するメモリ・ブロックが無効であり、(2)キャッシュ・ディレクトリ内のアドレス・タグが有効であり、(3)アドレス・タグによって識別されるメモリ・ブロックのコピーが、おそらくホーム・コヒーレンシ・ドメイン以外のコヒーレンシ・ドメインでキャッシュされている可能性があることを示すキャッシュ・コヒーレンシ状態と定義される。Ig表示は、不正確であることが好ましく、これは、コヒーレンシの侵害なしでIg表示を不正確にすることができることを意味する。
Ig状態は、排他的アクセス要求(例えば、バスRWITM動作)に応答してキャッシュが別のコヒーレンシ・ドメイン内の要求元に要求されたメモリ・ブロックを供給することに応答してホーム・コヒーレンシ・ドメイン内のより下位のレベルのキャッシュ内で形成される。
Ig状態を含むキャッシュ・ディレクトリ・エントリは、潜在的に有用な情報を担持するので、少なくともいくつかの実施形態で、Ig状態のエントリをI状態のエントリより優先的に保存することが望ましい(例えば、置換の犠牲キャッシュ・エントリを選択するのに利用されるLeast Recently Used(LRU)アルゴリズムを変更することによって)。Igディレクトリ・エントリがキャッシュ内で保存されるので、その排他的アクセス要求がIg状態の形成を引き起こしたキャッシュが、Ig状態のメモリ・ブロックのアドレス・タグを保持するキャッシュへの通知なしでそのメモリ・ブロックのコピーを割振り解除するかライトバックする可能性があるという点で、いくつかのIgエントリが経時的に「古く」なる可能性がある。そのような場合に、「古い」Ig状態は、ローカル動作の代わりにグローバル動作が発行されなければならないことを不正に示すが、コヒーレンシ・エラーを引き起こすのではなく、単に、そうでなければローカル動作を利用してサービスできるいくつかの動作をグローバル動作として発行させる。そのような非効率性の発生は、「古い」Igキャッシュ・エントリの最終的な置換によって、持続時間において制限される。
複数のルールが、Igキャッシュ・エントリの選択および置換を支配する。第1に、キャッシュが、置換の犠牲としてIgエントリを選択する場合に、システム・メモリ108内の対応するドメイン・インジケータ504を更新するために、Igエントリのキャストアウトが実行される(Iエントリ、Inエントリ、またはIgpエントリが選択される場合と異なって)。第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状態のエントリが存在する場合に、Ig状態のエントリをI状態のエントリより優先的に保存することが望ましい(例えば、置換の犠牲キャッシュ・エントリを選択するのに利用されるLeast Recently Used(LRU)アルゴリズムを変更することによって)。Igpディレクトリ・エントリがキャッシュ内で保存されるので、メモリ・ブロックのコピーがIgp状態のメモリ・ブロックのアドレス・タグを保持するキャッシュによってスヌープされずにコヒーレンシ・ドメインに返される場合があるという点で、いくつかのIgpエントリが経時的に「古く」なる可能性がある。そのような場合に、「古い」Igp状態は、ローカル動作の代わりにグローバル動作が発行されなければならないことを不正に示すが、コヒーレンシ・エラーを引き起こすのではなく、単に、そうでなければローカル動作を利用してサービスできるいくつかの動作をグローバル動作として発行させる。そのような非効率性の発生は、「古い」Igpキャッシュ・エントリの最終的な置換によって、持続時間において制限される。
Igエントリの処理と異なって、Igpエントリのキャストアウトは、例えば置換アルゴリズム(例えば、LRU)に従うか、キャッシュへのメモリ・ブロックのロードを引き起こす要求が同一のキャッシュ内のIgpキャッシュ・エントリにヒットしたことに起因する、置換の犠牲としてのIgpエントリの選択に応答しては実行されない。そうではなく、Igpエントリは、単純に割振り解除される。キャストアウトが実行されないのは、Igpエントリが、基礎になるドメイン・インジケータ504のキャッシュされ、おそらくは変更されたコピーを維持しないからである。
本発明によるIgp状態の実施態様は、メモリ・ブロックの有効なコピーが非ホーム・コヒーレンシ・ドメイン内でキャッシュされていない時であっても、メモリ・ブロックのキャッシュされたドメイン・インジケータを範囲予測のために非ホーム・コヒーレンシ・ドメイン内で維持することによって、通信効率を改善する。
C.In状態
In状態は、本明細書では、(1)キャッシュ・アレイ内の関連するメモリ・ブロックが無効であり、(2)キャッシュ・ディレクトリ内のアドレス・タグが有効であり、(3)アドレス・タグによって識別されるメモリ・ブロックのコピーが、仮にキャッシュされるとしても、ローカル・コヒーレンシ・ドメイン内の1つ以上の他のキャッシュ階層のみによってキャッシュされる可能性が高いことを示すキャッシュ・コヒーレンシ状態と定義される。In表示は、不正確であることが好ましく、これは、コヒーレンシの侵害なしでIn表示を不正確にすることができることを意味する。In状態は、排他的アクセス要求(例えば、バスRWITM動作)に応答してキャッシュが同一コヒーレンシ・ドメイン内の要求元に要求されたメモリ・ブロックを供給することに応答して、より下位のレベルのキャッシュ内で形成される。
In状態を含むキャッシュ・ディレクトリ・エントリは、潜在的に有用な情報を担持するので、少なくともいくつかの実施形態で、In状態のエントリをI状態のエントリより優先的に保存することが望ましい(例えば、置換の犠牲キャッシュ・エントリを選択するのに利用されるLeast Recently Used(LRU)アルゴリズムを変更することによって)。Inディレクトリ・エントリがキャッシュ内で保存されるので、その排他的アクセス要求がIn状態の形成を引き起こしたキャッシュ自体が、In状態のメモリ・ブロックのアドレス・タグを保持するキャッシュへの通知なしでそのメモリ・ブロックの共用コピーをリモート・コヒーレンシ・ドメインに供給する可能性があるという点で、いくつかのInエントリが経時的に「古く」なる可能性がある。そのような場合に、「古い」In状態は、グローバル動作の代わりにローカル動作が発行されなければならないことを不正に示すが、コヒーレンシ・エラーを引き起こすのではなく、単に、いくつかの動作を、グローバル動作ではなくまずローカル動作として誤って発行させる。そのような非効率性の発生は、「古い」Inキャッシュ・エントリの最終的な置換によって、持続時間において制限される。好ましい実施形態では、Inコヒーレンシ状態のキャッシュ・エントリは、キャストアウトの対象ではなく、単純に置換される。したがって、Igキャッシュ・エントリと異なって、Inキャッシュ・エントリは、システム・メモリ108内のドメイン・インジケータ504の更新には利用されない。
本発明によるIn状態の実施態様は、その動作のうちの1つのローカル・スコープ(範囲)を選択するためにマスタによって問い合わされる可能性がある、メモリ・ブロックのキャッシュされたドメイン・インジケータを維持することによって、通信効率を改善する。その結果、システム相互接続110および他のコヒーレンシ・ドメイン内のローカル相互接続114の帯域幅が保護される。
D.Sr状態
下で説明する動作では、Srコヒーレンシ状態の要求された共用メモリ・ブロックを保持するより下位のレベルのキャッシュが要求元マスタと同一のドメイン内に置かれているか否かを判定できることが有用である。一実施形態で、要求元マスタと同一ドメイン内の「ローカル」Srスヌーパの存在を、Srコヒーレンシ状態の要求されたメモリ・ブロックを保持する、より下位のレベルのキャッシュのスヌーパの応答挙動によって示すことができる。例えば、各バス動作に、そのバス動作がドメイン境界をまたぐかどうかを示す範囲インジケータ(例えば、マスタの明示的なドメイン識別子または単一ビットのローカル/非ローカル範囲ビット)が含まれると仮定すると、Srコヒーレンシ状態の共用メモリ・ブロックを保持する、より下位のレベルのキャッシュは、同一のデータ・ソーシング・ドメイン内のマスタによる要求だけに関してSr状態の要求を肯定する部分的応答を供給し、他のすべての要求についてS状態を示す部分的応答を供給することができる。そのような実施形態で、応答挙動を表IIIに示されたものとして要約することができ、ここで、プライム記号(’)表記は、メモリ・ブロックの実際のキャッシュ状態と異なる可能性がある部分的応答を指定するのに使用されている。
Figure 2007207223
上の表IIIに示された応答挙動を仮定すると、データ・ソースとして働くことのできるSMPデータ処理システム内に分散されたメモリ・ブロックの共用コピーの数を増やすことによって、共用データの平均データ待ち時間を大幅に減らすことができる。
VII.例示的なデータ・キャッシュ・ブロック・フラッシュ動作
図6〜7を参照すると、本発明による、キャッシュ・メモリが関連プロセッサ・コアから受け取られたデータ・キャッシュ・ブロック・フラッシュ(DCBF)動作をサービスする例示的な方法の高水準論理流れ図が示されている。本明細書で提示される他の論理流れ図と同様に、図6〜7に示されたステップの少なくとも一部を、図示と異なる順序で実行することができ、あるいは、同時に実行することができる。
図6のプロセスは、ブロック600で開始され、ブロック600は、L2キャッシュ230内のマスタ232が、処理ユニット104内の関連するプロセッサ・コア200からCPU DCBF要求を受信することを表す。CPU DCBF要求は、キャッシュ・メモリからシステム・メモリにフラッシュされるターゲット・メモリ・ブロックを指定する。異なる実施形態では、マスタ232を、自己スヌーピングありまたはなしで、CPU DCBF要求を処理するように設計することができる。マスタ232が、L2キャッシュ・ディレクトリ302に対するCPU DCBF要求で指定されたアドレスを自己スヌープするように設計されている場合に、このプロセスは、次に、ブロック602に進むが、このブロックは下で説明する。しかし、マスタ232が、CPU DCBF要求で指定されたアドレスを自己スヌープするように設計されていない場合には、このプロセスは、ブロック600からブロック604に直接に進む。
ブロック604では、マスタ232が、そのローカル相互接続114およびシステム相互接続110を介して、データ処理システム100内のすべての処理ユニット104にグローバルDCBF要求を送る。一般に、グローバルDCBF要求には、少なくとも、その要求をグローバルDCBF要求として識別するトランザクション・タイプ(Ttype)と、そのグローバルDCBF要求によってフラッシュされるターゲット・メモリ・ブロックを識別するターゲット・アドレスとが含まれる。その後、マスタ232は、そのグローバルDCBF要求の組合せ応答(CR)の受信を待って、そのグローバルDCBF要求を完了するためにさらなるアクション(例えば、ターゲット・メモリ・ブロックの残りのキャッシュ・コピーを無効化するバックグラウンド・キル(BK)動作)が必要であるかどうかを判定する。ブロック606に示されているように、そのグローバルDCBF要求の組合せ応答がRetryである場合に、このプロセスはブロック604に戻り、ブロック604は、マスタ232がそのグローバルCDBF要求を再発行することを表す。組合せ応答が、RetryではなくAddr_Ack_BK(アドレス肯定応答バックグラウンド・キル)である場合に(ブロック608)、このプロセスは、ブロック620に進むが、このブロックは下で説明する。Addr_Ack_BK組合せ応答は、DCBF要求がコヒーレンシの点に達したが、まだデータ処理システム100内に存在するターゲット・メモリ・ブロックのキャッシュ・コピーを無効化するために、バックグラウンド・キル動作が必要であることを示す。マスタ232が、ブロック606および608で、組合せ応答がRetryでもAddr_Ack_BKでもないと判定する場合には、グローバルDCBF動作が成功裡に完了しており、このプロセスはブロック630で終了する。
ブロック620を参照すると、Addr_Ack_BK組合せ応答の受信に応答して、マスタ232は、そのグローバルDCBF要求が発行された時にターゲット・メモリ・ブロックのHPCであった場合とそうでない場合があるが、ターゲット・メモリ・ブロックに関するHPC状況を仮定し、ターゲット・アドレスのHPC保護を開始する。ターゲット・アドレスのHPC保護は、マスタ232が、Retry_other部分的応答を供給することによって、ターゲット・メモリ・ブロックへのアクセスを要求する他の動作が成功しないようにすることを必要とする。さらに、ブロック622に示されているように、マスタ232は、まだデータ処理システム100内に存在するターゲット・メモリ・ブロックのすべてのキャッシュ・コピーの無効化を強制するために、ターゲット・メモリ・ブロックのアドレスを指定するグローバル・バックグラウンド・キル(BK)要求をデータ処理システム100内のすべての処理ユニット104に送る。次に、マスタ232は、ブロック624でこのグローバル・バックグラウンド・キル要求の組合せ応答を待つ。組合せ応答がNullではなく、ターゲット・メモリ・ブロックのキャッシュ・コピーがまだデータ処理システム100内に存在する可能性があることを意味する場合には、このプロセスは、ブロック622に戻り、マスタ232が、グローバル・バックグラウンド・キル要求を再発行する。その一方で、グローバル・バックグラウンド・キル要求の組合せ応答がNullであり、ターゲット・メモリ・ブロックのキャッシュ・コピーがデータ処理システム100内に残っていないことを意味する場合には、このプロセスは、ブロック626に進む。ブロック626では、マスタ232が、ターゲット・メモリ・ブロックのHPC保護を終了する。その後、図6に示されたプロセスは、ブロック630で終了する。
ブロック602に戻って、マスタ232が、L2キャッシュ・ディレクトリ302に対するCPU DCBF要求で指定されたターゲット・アドレスを自己スヌープするように設計されている場合に、マスタ232は、L2キャッシュ・ディレクトリ302にアクセスして、CPU DCBF要求のターゲット・メモリ・ブロックがL2キャッシュ・ディレクトリ302内でデータ有効コヒーレンシ状態(例えば、M、Me、T、Te、Tn、Ten、S、またはSr)であるか否かを判定する。そうでない場合には、このプロセスは、ブロック604およびそれに続くブロックに進むが、これらは説明済みである。しかし、ターゲット・メモリ・ブロックがL2キャッシュ・ディレクトリ302でデータ有効コヒーレンシ状態を有することをL2キャッシュ・ディレクトリ302が示す場合には、このプロセスは、コネクタAを介して図7のブロック640に進む。
ブロック640で、マスタ232は、L2キャッシュ・ディレクトリ302内のターゲット・メモリ・ブロックのコヒーレンシ状態が、マスタ232がそのターゲット・メモリ・ブロックのHPCに位置することを示すかどうかを判定する、すなわち、マスタ232は、コヒーレンシ状態がMx(例えば、MまたはMe)またはTx(例えば、T、Te、Tn、またはTen)であるかどうかを判定する。マスタ232が、ブロック640で、それがターゲット・メモリ・ブロックのHPCに位置しないと判定する場合に、このプロセスは、ブロック690に進み、このブロックは、マスタ232がターゲット・メモリ・ブロックのSx保護を開始することを示す。Sx保護は、マスタ232が、そのターゲット・メモリ・ブロックに関する要求にRetry_shared部分的応答を供給することを必要とする。次に、マスタ232は、ブロック691に示されているように、関連するより上位のレベルのキャッシュ(例えば、L1キャッシュ226)内のターゲット・メモリ・ブロックを無効化し、L2キャッシュ・ディレクトリ302内のターゲット・メモリ・ブロックのコヒーレンシ状態をIに更新する(ブロック692)。ブロック693および694に示されているように、マスタ232は、その後、ブロック691〜692に示された動作が完了した後に、ターゲット・メモリ・ブロックのSx保護を終了する。その後、このプロセスは、ページ・コネクタBを介して図6のブロック604に進むが、このブロックは説明済みである。
ブロック640に戻って、L2キャッシュ・ディレクトリ302内のターゲット・メモリ・ブロックのコヒーレンシ状態が、マスタ232がそのターゲット・メモリ・ブロックのHPCに位置することを示すという決定に応じて、このプロセスは、ブロック642〜643に進む。ブロック642および643は、それぞれ、マスタ232がターゲット・メモリ・ブロックのHPC保護を開始することと、その後、関連するより上位のレベルのキャッシュ(例えば、L1キャッシュ226)内のターゲット・メモリ・ブロックを無効化することを示す。マスタ232は、ターゲット・メモリ・ブロックに関するコヒーレンシ状態に従って、CPU DCBF要求も処理する。例えば、マスタ232が、ターゲット・メモリ・ブロックがL2キャッシュ・ディレクトリ302内でMeコヒーレンシ状態を有すると判定する場合に(ブロック644)、これは、キャッシュされたメモリ・ブロックがシステム・メモリ108と一貫していることを示し、システム・メモリ108へのフラッシュは不要である。その結果、CPU DCBF要求をサービスするために、マスタ232は、ブロック646に示されているように、単純に、ターゲット・メモリ・ブロックのコヒーレンシをL2キャッシュ・ディレクトリ302内でIに更新する。
ブロック650を参照すると、マスタ232が、ターゲット・メモリ・ブロックがL2キャッシュ・ディレクトリ302内でMコヒーレンシ状態を有すると判定する場合に、マスタ232は、このメモリ・ブロックの最新のコピーを用いてシステム・メモリ108を更新するためにターゲット・メモリ・ブロックのキャストアウト−プッシュを実行し、その後、ターゲット・メモリ・ブロックのコヒーレンシ状態をL2キャッシュ・ディレクトリ302内でIに更新する(ブロック652)。
もう一度ブロック650を参照すると、L2キャッシュ・ディレクトリ302内のターゲット・メモリ・ブロックのコヒーレンシ状態がMではないと判定されたことに応答して(これは、コヒーレンシ状態がTx(例えば、T、Te、Tn、またはTen)でなければならないことを意味する)、このプロセスは、ブロック662に進む。ブロック662は、マスタ232が、このメモリ・ブロックの最新のコピーを用いてシステム・メモリ108を更新するためにターゲット・メモリ・ブロックのキャストアウト−プッシュを実行し、その後、ターゲット・メモリ・ブロックのコヒーレンシ状態をL2キャッシュ・ディレクトリ302内でIに更新することを示す。次に、ブロック664に示されているように、マスタ232は、L2キャッシュ・ディレクトリ302内のメモリ・ブロックのコヒーレンシ状態を参照することによって、相互接続ファブリック上で発行されるバックグラウンド・キル動作の範囲を判定する。
コヒーレンシ状態がTnまたはTenである場合に、これは、ターゲット・メモリ・ブロックが、どこかでキャッシュされている場合に、マスタ232と同一のコヒーレンシ・ドメイン(例えば、処理ノード102)内でのみキャッシュされていることを意味し、グローバル・バックグランド・キル動作は不要である。その結果、マスタ232は、ブロック666に示されているように、ローカルの処理ノード102に制限された範囲を有するローカル・バックグラウンド・キル要求をそのローカル相互接続114上でブロードキャストする。ブロック668に示されているように、マスタ232は、Null組合せ応答が受け取られるまで、ローカル・バックグラウンド・キル要求を再発行し続ける。
ブロック664をもう一度参照すると、L2キャッシュ・ディレクトリ302内のターゲット・メモリ・ブロックのコヒーレンシ状態がTまたはTeである場合に、ターゲット・メモリ・ブロックは、おそらくローカル・コヒーレンシ・ドメインの外部でキャッシュされている。したがって、マスタ232は、ブロック670に示されているように、すべての処理ノード102を含む範囲を有するグローバル・バックグラウンド・キル要求をそのローカル相互接続114上でブロードキャストする。ブロック672に示されているように、マスタ232は、Null組合せ応答が受け取られるまで、グローバル・バックグラウンド・キル要求を再発行し続ける。
ブロック646、652、672、および668のいずれかの後に、このプロセスは、ブロック679および680に進み、これらのブロックは、マスタ232が、すべての前のステップが完了した後にターゲット・メモリ・ブロックのHPC保護を終了することを示す。その後、このプロセスは、図7のブロック681で終了する。
図8〜9を参照すると、本発明による、L2キャッシュのスヌーパ236などのキャッシュ・スヌーパがグローバルDCBF要求を処理する例示的な方法の高水準論理流れ図が示されている。図示のように、このプロセスは、図8のブロック700で、L2キャッシュのスヌーパ236によるローカル相互接続114での要求の受信に応答して開始される。この要求の受信に応答して、スヌーパ236は、ブロック702で、例えば要求内のトランザクション・タイプ(Ttype)フィールドを参照することによって、その要求がDCBF要求であるか否かを判定する。そうでない場合には、スヌーパ236は、ブロック704に示されているように他の処理を実行し、このプロセスは、ブロック724で終了する。しかし、スヌーパ236が、ブロック702で、要求がDCBF要求であると判定する場合には、スヌーパ236は、さらに、ブロック710で、現在DCBF要求に実質的に応答することができるかどうか(例えば、スヌープ・ロジックの使用可能なインスタンスおよびL2キャッシュ・ディレクトリ302への現在のアクセスを有するかどうか)を判定する。スヌーパ236が、現在ドメイン照会要求に実質的に応答できない場合には、スヌーパ236は、ブロック712に示されているように、Retry_otherの部分的応答(PR)を供給し、スヌーパ236によるDCBF要求の処理は、ブロック724で終了する。
スヌーパ236が、DCBF要求に実質的に応答できると仮定すると、スヌーパ236は、ブロック714で、ローカルのマスタ232またはスヌーパ236内のスヌープ・ロジックのインスタンスが、DCBF要求と同一のメモリ・アドレスをターゲットとする衝突する動作を現在処理しているか否かと、ローカルのマスタ232またはスヌープ・ロジック・インスタンスが、ターゲット・メモリ・ブロックがデータ有効コヒーレンシ状態(例えば、Mx、Tx、Sr、またはS)を示すかどうかとを判定する。スヌーパ236が、ブロック714で、ローカルのマスタ232またはスヌーパ236内のスヌープ・ロジックのインスタンスがDCBF要求と同一のメモリ・アドレスをターゲットとする衝突する動作を現在処理しており、かつ、メモリ・ブロックがターゲット・メモリ・ブロックに関してデータ有効コヒーレンシ状態を有すると判定する場合に、スヌーパ236は、ターゲット・メモリ・ブロックの示されたコヒーレンシ状態に応じて部分的応答を供給する(ブロック715)。すなわち、ローカルのマスタ232またはスヌープ・ロジック・インスタンスが、ターゲット・メモリ・ブロックのコヒーレンシ状態がMxまたはTxであることを示す場合に、スヌーパ236は、Retry_other部分的応答を供給し(ブロック712)、そうでない場合には、Shared部分的応答を供給する(ブロック716)。ブロック712または716のいずれかの後に、スヌーパ236によるDCBF要求の処理は、ブロック724で終了する。
しかし、スヌーパ236が、ブロック714で否定的判定を行う場合には、このプロセスは、ブロック720および730に進み、これらのブロックは、スヌーパ236が、L2キャッシュ・ディレクトリ302内のターゲット・メモリ・ブロックのコヒーレンシ状態を判定することを示す。コヒーレンシ状態がIx(例えば、I、In、Ig、Igp)である場合に、スヌーパ236は、Null部分的応答を供給し(ブロック722)、そのL2キャッシュ230が、ターゲット・メモリ・ブロックのコピーを保持しない(その結果、このDCBF要求がこのL2キャッシュ230で効果を有しない)ことを示す。その後、このプロセスはブロック724で終了する。しかし、コヒーレンシ状態がMxまたはTxである場合に、スヌーパ236は、Retry_other部分的応答を供給して(ブロック732)、スヌーパ236がターゲット・メモリ・ブロックのコピーをシステム・メモリ108にプッシュできるようになるまで、このDCBF要求の再発行を強制する。その代わりに、コヒーレンシ状態がSx(例えば、SまたはSr)である場合に、スヌーパ236は、DCBF要求に対してShared部分的応答を供給する(ブロック734)。ブロック732およびブロック734の後に、このプロセスは、それぞれページ・コネクタDおよびページ・コネクタEを介して図9に進む。
図9を参照すると、スヌーパ236のキャストアウト・アクティビティおよび保護アクティビティがある場合の、それらのアクティビティが示されている。図からわかるように、スヌーパ236が、ターゲット・メモリ・ブロックのコヒーレンシ状態がL2キャッシュ・ディレクトリ302内でSxであると判定した場合に、このプロセスは、ページ・コネクタEからブロック748に進み、このブロックは、スヌーパ236が、ターゲット・アドレスのSx保護を開始することを示し、これは、スヌーパ236が、その後、同一のターゲット・メモリ・アドレスをターゲットとする動作のスヌープに応答して、Retry_shared部分的応答を供給することを意味する。ブロック748の後に、このプロセスは、ブロック760に進むが、このブロックは下で説明する。
その一方で、スヌーパ236が、L2キャッシュ・ディレクトリ302内のターゲット・メモリ・ブロックのコヒーレンシ状態がMxまたはTxであると判定した場合に、図9に示されたプロセスは、ページ・コネクタDで開始され、その後、ブロック740に進み、このブロックは、スヌーパ236がターゲット・メモリ・ブロックのHPC保護を開始することを示し、これは、スヌーパ236が、その後、同一のターゲット・メモリ・アドレスをターゲットとするスヌープされた動作にRetry_other部分的応答を供給することを意味する。さらに、スヌーパ236は、L2キャッシュ・ディレクトリ302内のターゲット・メモリ・ブロックのコヒーレンシ状態に従ってキャストアウト−プッシュを実行する。ブロック742および744に示されているように、スヌーパ236が、ターゲット・メモリ・ブロックのコヒーレンシ状態がM、T、またはTnであると判定した場合に、スヌーパ236は、ターゲット・メモリ・ブロックのキャストアウト−プッシュを実行することによって、最新データを用いてシステム・メモリ108を更新する。その一方で、スヌーパ236が、ターゲット・メモリ・ブロックのコヒーレンシ状態がTeであると判定した場合に(ブロック750)、これは、ターゲット・メモリ・ブロックのメモリ一貫性のあるコピーが、おそらくローカル・コヒーレンシ・ドメインの外部でキャッシュされていることを意味し、スヌーパ236は、「グローバル」を示すためにドメイン・インジケータ504を更新するだけでよい。ブロック752に示されているように、この更新は、メモリ・ブロックがIgコヒーレンシ状態でキャッシュされているかのようにドメイン・インジケータのデータなしキャストアウト−プッシュを実行することによって実行することができる。その代わりに、ドメイン・インジケータ504を、ブロック744に示されているように普通のキャストアウト−プッシュを実行することによって更新することができる。ブロック744またはブロック752の後に、このプロセスは、ブロック760に進む。
ブロック760は、スヌーパ236が、より上位のレベルのキャッシュ(例えば、L1キャッシュ226)内のDCBF動作のターゲット・メモリ・ブロックを無効化するためにバック無効化信号を発行することを示す。さらに、ブロック762に示されているように、スヌーパ236は、L2キャッシュ・ディレクトリ302内の関連するエントリをIコヒーレンシ状態に更新することによって、L2キャッシュ230内のターゲット・メモリ・ブロックを無効化する。ブロック763および764に示されているように、その後、スヌーパ236は、ブロック760および762に示された動作が完全に完了した後に、ターゲット・メモリ・ブロックのHPC保護ウィンドウまたはSx保護ウィンドウを終了する。ブロック764の後に、このプロセスは、図9のブロック765で終了する。
図10を参照すると、グローバルDCBF要求の受信に応答して、スヌーパ222をディスパッチするか否かをメモリ・コントローラ(例えば、IMC 206)が判定するプロセスの高水準論理流れ図が示されている。図からわかるように、このプロセスは、ブロック800で、IMC 206による、そのローカル相互接続114を介する要求の受信に応答して開始される。次に、IMC 206は、ブロック802で、BARロジック240を参照することによって、そのIMCが、スヌープされた動作で指定されるターゲット・アドレスの責任を負うか否かを判定する。そうでない場合には、このプロセスは、ブロック824に進み、終了する。しかし、IMC 206がスヌープされた要求で指定されるアドレスの責任を負う場合には、このプロセスは、ブロック803に進み、このブロックは、IMC 206が、動作のTtypeを参照することによって、スヌープされた要求がグローバルDCBF要求であるかどうかを判定することを示す。そうでない場合には、IMC 206は、ブロック804に示されているように他の処理を実行し、このプロセスは、ブロック824で終了する。
IMC 206が、ブロック803で、スヌープされた要求がグローバルDCBF動作であると判定することに応答して、このプロセスはブロック810に進み、このブロックは、IMC 206が、グローバルDCBF要求で指定されたターゲット・アドレスに関してスヌーパ222が現在アクティブであるか否かを判定することを示す。そうである場合には、IMC 206は、ブロック812に示されているように、グローバルDCBF要求に対してRetry_LPC部分的応答を供給する。ブロック820および821に示されているように、IMC 206は、同様に、スヌーパ222がディスパッチに使用可能でない場合に、グローバルDCBF要求に対してRetry_LPC部分的応答を供給する。しかし、ブロック820でスヌーパ222がディスパッチに使用可能と判定されることに応答して、IMC 206は、ブロック822に示されているように、グローバルDCBF要求を処理するためにスヌーパ222をディスパッチする。その後、図10に示されたプロセスは、ブロック824で終了する。
図11を参照すると、本発明による、メモリ・コントローラ・スヌーパ(例えば、スヌーパ222)がグローバルDCBF要求を処理するプロセスの高水準論理流れ図が示されている。図からわかるように、このプロセスは、ブロック830で、図10のブロック822を参照して上で説明した、グローバルDCBF要求を処理するためのスヌーパ222のディスパッチに応答して開始される。次に、スヌーパ222は、ブロック832に示されているように、ターゲット・メモリ・ブロックのアドレスのLPC保護を提供し始める。そのような保護を提供している間に、スヌーパ222は、そのターゲット・メモリ・ブロックと同一のアドレスを有する動作に対してRetry_LPC部分的応答を供給する。次に、ブロック834で、スヌーパ222は、グローバルDCBF動作の組合せ応答の受信を待つ。
スヌーパ222は、グローバルDCBF要求を開始したマスタ232の相対位置に従って組合せ応答に応答する(ブロック840)。したがって、スヌープされたグローバルDCBF要求内の範囲ビットが、それがリモートの処理ノード102(すなわち、スヌーパ222を含むもの以外の処理ノード102)から発生したことを示す場合に、このプロセスは、ブロック842に進むが、このブロックは下で説明する。グローバルDCBF要求が、リモートの処理ノード102から発生したのではなく、スヌーパ222の処理ノード102内から発生した場合に、システム・メモリ108内のドメイン・インジケータ504の更新は不要である。その結果、スヌーパ222は、単純に、LPC保護の提供を終了し(ブロック850)、IMC 206によって割振り解除される(ブロック852)。その後、このプロセスはブロック860で終了する。
ブロック842を参照すると、グローバルDCBF要求を処理するために割り振られたスヌーパ222は、関連する組合せ応答がAddr_Ack_BK組合せ応答であるか否かを判定する。そうでない場合には、このプロセスはブロック850に進むが、このブロックは説明済みである。そうである場合には、これは、開始したマスタ232での処理が、ブロック620〜626を介して同時に進行していることを意味し、メモリ・コントローラのスヌーパ222は、システム・メモリ108からターゲット・メモリ・ブロックのドメイン・インジケータ504を読み取り(ブロック843)、その値をテストし(ブロック844)、必要な場合に、「グローバル」を示すようにドメイン・インジケータ504を更新する(ブロック846)。ブロック844またはブロック846のいずれかの後に、このプロセスは、ブロック850に進むが、このブロックは説明済みである。
図12を参照すると、本発明による、応答ロジック210が、グローバルDCBF動作に対する組合せ応答を提供するプロセスの高水準論理流れ図が示されている。図からわかるように、このプロセスは、ブロック900で開始され、その後、ブロック902に進み、このブロックは、Retry_otherまたはRetry_LPCの部分的応答がグローバルDCBF要求に応答して受け取られたかどうかの、応答ロジック210のインスタンス(例えば、グローバルDCBF要求を発行したマスタ232の処理ユニット104内の応答ロジック210)による判定を示す。そうである場合には、応答ロジック210は、グローバルDCBF要求を再発行しなければならないことを知らせるために、Retryの組合せ応答を生成し、グローバルにブロードキャストする(ブロック904)。その後、このプロセスはブロック930で終了する。
ブロック902に戻って、Retry_otherまたはRetry_LPCの部分的応答が受け取られなかったと応答ロジック210が判定することに応答して、このプロセスは、ブロック910に進む。ブロック910は、応答ロジック210が、グローバルDCBF要求に関してRetry_shared部分的応答が受け取られたかどうかを判定することを示す。そうである場合には、応答ロジック210は、DCBF動作を成功裡に完了するためにローカルまたはグローバルのバックグラウンド・キル要求を発行しなければならないことを示すために、Addr_Ack_BK組合せ応答を生成し、グローバルにブロードキャストする(ブロック912)。その後、このプロセスはブロック930で終了する。しかし、応答ロジック210が、ブロック910で、グローバルDCBF要求に関してRetry_shared部分的応答が受け取られなかったと判定する場合には、応答ロジック210は、Addr_ack組合せ要求を生成し、グローバルにブロードキャストし(ブロック920)、グローバルDCBF動作が成功したことを示す。その後、図12に示されたプロセスはブロック930で終了する。
上で説明したように、本発明は、複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理する改善されたデータ処理システム、処理ユニット、キャッシュ階層、およびデータ処理の方法を提供する。
本発明を、好ましい実施形態を参照して説明されるものとして具体的に図示したが、当業者は、本発明の趣旨および範囲から逸脱せずに、形態および詳細における様々な変更を行えることを理解するであろう。
本発明による例示的なデータ処理システムを示す高水準ブロック図である。 本発明による処理ユニットを示すより詳細なブロック図である。 図2に示されたL2キャッシュ・アレイおよびディレクトリを示すより詳細なブロック図である。 図1のデータ処理システムのシステム相互接続上の例示的なトランザクションを示す時空間図である。 本発明の好ましい実施形態によるドメイン・インジケータを示す図である。 本発明による、キャッシュ・メモリがデータ処理システム内のプロセッサ・コアから受け取られたデータ・キャッシュ・ブロック・フラッシュ(DCBF)動作をサービスする例示的な方法を示す高水準論理流れ図の一部である。 本発明による、キャッシュ・メモリがデータ処理システム内のプロセッサ・コアから受け取られたデータ・キャッシュ・ブロック・フラッシュ(DCBF)動作をサービスする例示的な方法を示す高水準論理流れ図の一部である。 本発明による、キャッシュ・スヌーパがDCBF動作を処理する例示的な方法を示す高水準論理流れ図の一部である。 本発明による、キャッシュ・スヌーパがDCBF動作を処理する例示的な方法を示す高水準論理流れ図の一部である。 本発明による、DCBF動作の受信に応答して、メモリ・コントローラ・スヌーパをディスパッチするか否かをメモリ・コントローラが判定するプロセスを示す高水準論理流れ図である。 本発明による、メモリ・コントローラ・スヌーパがグローバルDCBF動作を処理するプロセスを示す高水準論理流れ図である。 本発明による、グローバルDCBF動作に対する組合せ応答を提供するプロセスを示す高水準論理流れ図である。
符号の説明
100 データ処理システム
102a 処理ノード
102b 処理ノード
104a 処理ユニット
104b 処理ユニット
104c 処理ユニット
104d 処理ユニット
108a システム・メモリ
108b システム・メモリ
108c システム・メモリ
108d システム・メモリ
110 システム相互接続
114 ローカル相互接続
200a プロセッサ・コア
200b プロセッサ・コア
206 統合メモリ・コントローラ(IMC)
208 命令シーケンシング・ユニット(ISU)
210 応答ロジック
212 相互接続ロジック
214 入出力コントローラ
216 入出力デバイス
222 スヌーパ
224 実行ユニット
226 レベル1(L1)キャッシュ
228 ロード・ストア・ユニット(LSU)
230 レベル2(L2)キャッシュ
232 マスタ
234 L2アレイおよびディレクトリ
236 スヌーパ
238 BARロジック
240 基底アドレス・レジスタ(BAR)ロジック
300 L2キャッシュ・アレイ
302 L2キャッシュ・ディレクトリ
304 タグ・フィールド
306 状態フィールド
308 LRU(Least Recently Used)フィールド
402 要求
404a 保護ウィンドウ
404b 保護ウィンドウ
406 部分的応答
410 組合せ応答(CR)
500 メモリ・ブロック
502 誤り訂正コード(ECC)
504 ドメイン・インジケータ
600 開始のステップ
602 メモリ・ブロックがキャッシュ内で有効かどうかを判定するステップ
604 グローバルDCBF動作を送るステップ
606 CR=Retryかどうかを判定するステップ
608 CR=Addr_Ack_BKかどうかを判定するステップ
620 HPC保護を開始するステップ
622 グローバルBK要求を送るステップ
624 CR=Nullかどうかを判定するステップ
626 HPC保護を停止するステップ
630 終了のステップ
640 MxまたはTxであるかどうかを判定するステップ
642 HPC保護を開始するステップ
643 より上位のレベルのキャッシュ内のキャッシュ・ラインを無効化するステップ
644 Meかどうかを判定するステップ
646 キャッシュ・ブロックをIに更新するステップ
650 Mかどうかを判定するステップ
652 キャストアウト/プッシュを実行し、キャッシュ・ブロックをIに更新するステップ
662 キャストアウト/プッシュを実行し、キャッシュ・ブロックをIに更新するステップ
664 TnまたはTenかどうかを判定するステップ
666 ノードのみBKを発行するステップ
668 CR=Nullかどうかを判定するステップ
670 グローバルBKを発行するステップ
672 CR=Nullかどうかを判定するステップ
679 前のすべてのステップが完了したかどうかを判定するステップ
680 HPC保護を停止するステップ
681 終了のステップ
690 Sx保護を開始するステップ
691 より上位のレベルのキャッシュ内のキャッシュ・ラインを無効化するステップ
692 キャッシュ・ブロックをIに更新するステップ
693 前のすべてのステップが完了したかどうかを判定するステップ
694 Sx保護を停止するステップ
700 開始のステップ
702 DCBF動作をスヌープしたかどうかを判定するステップ
704 他の処理を実行するステップ
710 応答することができないかどうかを判定するステップ
712 Retry_other PRを供給するステップ
714 マスタまたはスヌーパが衝突する動作を処理しており、かつ、コヒーレンシ状態がデータ有効であるかどうかを判定するステップ
715 HPCかどうかを判定するステップ
716 Shared PRを供給するステップ
720 メモリ・ブロックがIxであるかどうかを判定するステップ
722 Null PRを供給するステップ
730 メモリ・ブロックがMxまたはTxであるかどうかを判定するステップ
732 Retry_other PRを供給するステップ
734 Shared PRを供給するステップ
724 終了のステップ
740 HPC保護を開始するステップ
742 M、T、またはTnであるかどうかを判定するステップ
744 メモリ・ブロックのキャストアウト−プッシュを実行するステップ
748 Sx保護を開始するステップ
750 Teであるかどうかを判定するステップ
752 ドメイン・インジケータをグローバルに更新するためにIgメモリ・ブロックのキャストアウト−プッシュを実行するステップ
760 より上位のレベルのキャッシュ内のキャッシュ・ラインを無効化するステップ
762 コヒーレンシ状態をIに更新するステップ
763 前のすべてのステップが完了したかどうかを判定するステップ
764 保護ウィンドウを終了するステップ
765 終了のステップ
800 開始のステップ
802 IMCが責任を負うかどうかを判定するステップ
803 スヌープされた要求がグローバルDCBF動作であるかどうかを判定するステップ
804 他の処理を実行するステップ
810 スヌーパがアドレスに関してアクティブかどうかを判定するステップ
812 Retry_LPC PRを供給するステップ
820 スヌーパは使用可能かどうかを判定するステップ
822 スヌーパをディスパッチするステップ
824 終了のステップ
830 開始のステップ
832 LPC保護を開始するステップ
834 CRを受け取ったかどうかを判定するステップ
840 DCBFがリモート・ノードから発生したかどうかを判定するステップ
842 CR=Addr_Ack_BKかどうかを判定するステップ
843 メモリのドメイン・インジケータを読み取るステップ
844 ドメイン・インジケータがグローバルであるかどうかを判定するステップ
846 ドメイン・インジケータをグローバルに更新するステップ
850 LPC保護を終了するステップ
852 スヌーパを割振り解除するステップ
860 終了のステップ
900 開始のステップ
902 受け取られたPR=Retry_otherまたはRetry_LPCかどうかを判定するステップ
910 受け取られたPR=Retry_sharedかどうかを判定するステップ
920 CR=Addr_ackを発行するステップ
930 終了のステップ

Claims (16)

  1. 第1コヒーレンシ・ドメインおよび第2コヒーレンシ・ドメインを含むキャッシュ・コヒーレント・データ処理システムにおけるデータ処理方法であって、
    前記第1コヒーレンシ・ドメインは、メモリ・コントローラと、ターゲット・アドレスによって識別されるターゲット・メモリ・ブロックを有する関連するシステム・メモリとを含み、
    前記第1コヒーレンシ・ドメイン内で、前記ターゲット・メモリ・ブロックが前記第1コヒーレンシ・ドメインの外部でキャッシュされるかどうかを示すドメイン・インジケータを維持するステップと、
    前記第1コヒーレンシ・ドメイン内で、前記第1および第2コヒーレンシ・ドメインにブロードキャストされる、前記ターゲット・メモリ・ブロックの前記ターゲット・アドレスを指定するフラッシュ動作を受信するステップと、
    前記第1コヒーレンシ・ドメイン内で、前記フラッシュ動作に対するシステム全体の応答を表す、前記フラッシュ動作に対する組合せ応答を受信するステップと、
    前記組合せ応答の前記第1コヒーレンシ・ドメイン内での受信に応答して、前記組合せ応答が、前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを示すかどうかを判定するステップと、
    前記組合せ応答が、前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを示すと判定されたことに応答して、前記ターゲット・メモリ・ブロックが前記第1コヒーレンシ・ドメインの外部でキャッシュされていることを示すために前記ドメイン・インジケータを更新するステップと、
    を含む方法。
  2. 前記フラッシュ動作が前記第1コヒーレンシ・ドメインの外部で発生したかどうかを判定するステップをさらに含み、
    前記更新するステップは、前記フラッシュ動作が前記第1コヒーレンシ・ドメインの外部で発生したと判定されたことに応答してのみ前記ドメイン・インジケータを更新するステップを含む、
    請求項1に記載の方法。
  3. 前記フラッシュ動作を開始した処理ユニットが、前記メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを示す組合せ応答の受信に応答して、前記ターゲット・メモリ・ブロックのすべてのキャッシュ・コピーを無効化するためにキル動作を発行するステップ
    をさらに含む、請求項1に記載の方法。
  4. 前記ターゲット・メモリ・ブロックが前記処理ユニットを含むコヒーレンシ・ドメイン内でのみキャッシュされることを示すキャッシュ状態である前記ターゲット・メモリ・ブロックを前記処理ユニットのキャッシュが保持すると判定されたことに応答して、前記処理ユニットが、前記キル動作の範囲を前記第1コヒーレンシ・ドメインおよび前記第2コヒーレンシ・ドメインのうちのいずれか1つに制限する、請求項3に記載の方法。
  5. 前記フラッシュ動作の受信に応答して、キャッシュ・メモリのキャッシュ・コントローラが、キャッシュ・ディレクトリにアクセスするステップと、
    前記キャッシュ・コントローラが、前記キャッシュ・ディレクトリへの参照によって、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックの変更されたコピーを保持すると判定することに応答して、
    前記キャッシュ・コントローラが、前記フラッシュ動作の再発行を強制する、前記フラッシュ動作に対するretry部分的応答を供給するステップと、
    前記キャッシュ・コントローラが、前記システム・メモリを更新するために、前記メモリ・ブロックの前記変更されたコピーのキャストアウト−プッシュを実行するステップと、
    前記キャッシュ・コントローラが、少なくとも前記キャストアウト−プッシュが完了するまで、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対してretry部分的応答を供給するステップと、
    をさらに含む、請求項1に記載の方法。
  6. 前記フラッシュ動作の受信に応答して、キャッシュ・メモリのキャッシュ・コントローラが、キャッシュ・ディレクトリにアクセスするステップと、
    前記キャッシュ・コントローラが、前記キャッシュ・ディレクトリへの参照によって、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックの共用コピーを保持すると判定することに応答して、
    前記キャッシュ・コントローラが、前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在することを示す、前記フラッシュ動作に対するretry部分的応答を供給するステップと、
    前記キャッシュ・コントローラが、前記ターゲット・メモリ・ブロックの前記共用コピーを無効化するステップと、
    前記無効化まで、前記キャッシュ・コントローラが、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対して、前記キャッシュが前記ターゲット・メモリ・ブロックの共用コピーを保持することを示す部分的応答を供給するステップと、
    をさらに含む、請求項1に記載の方法。
  7. 前記フラッシュ動作の受信に応答して、キャッシュ・メモリのキャッシュ・コントローラが、キャッシュ・ディレクトリにアクセスするステップと、
    前記キャッシュ・コントローラが、前記キャッシュ・ディレクトリへの参照によって、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックの未変更のコピーを保持するコヒーレンシの最高点であると判定することに応答して、
    前記キャッシュ・コントローラが、前記フラッシュ動作の再発行を強制する、前記フラッシュ動作に対するretry部分的応答を供給するステップと、
    前記キャッシュ・コントローラが、前記ドメイン・インジケータを更新するためにキャストアウトを実行するステップと、
    前記キャッシュ・コントローラが、少なくとも前記キャストアウトが完了するまで、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対してretry部分的応答を供給するステップと、
    をさらに含む、請求項1に記載の方法。
  8. プロセッサ・コアと関連するキャッシュ・メモリを含む処理ユニットと、ターゲット・アドレスによって識別されるターゲット・メモリ・ブロックを有するシステム・メモリを含む、第1コヒーレンシ・ドメインと、
    プロセッサ・コアと関連するキャッシュ・メモリを含む処理ユニットを含む、第2コヒーレンシ・ドメインと、
    前記ターゲット・メモリ・ブロックが前記第1コヒーレンシ・ドメインの外部でキャッシュされるかどうかを示す、前記第1コヒーレンシ・ドメイン内のドメイン・インジケータと、
    前記システム・メモリに結合された、前記第1コヒーレンシ・ドメイン内のメモリ・コントローラを備え、
    前記メモリ・コントローラは、前記第1コヒーレンシ・ドメインおよび第2コヒーレンシ・ドメインにブロードキャストされる、前記ターゲット・メモリ・ブロックの前記ターゲット・アドレスを指定するフラッシュ動作に関する組合せ応答の受信に応答して、前記ターゲット・メモリ・ブロックのキャッシュ・コピーがデータ処理システム内に存在する可能性があることを前記組合せ応答が示すかどうかを判定し、
    前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを前記組合せ応答が示すと判定されたことに応答して、前記ターゲット・メモリ・ブロックが前記第1コヒーレンシ・ドメインの外部でキャッシュされることを示すために前記ドメイン・インジケータを更新する、
    データ処理システム。
  9. 前記メモリ・コントローラが、前記フラッシュ動作が前記第1コヒーレンシ・ドメインの外部で発生したかどうかを判定し、前記フラッシュ動作が前記第1コヒーレンシ・ドメインの外部で発生したと判定されたことに応答してのみ前記ドメイン・インジケータを更新する、請求項8に記載のデータ処理システム。
  10. 前記処理ユニットが、前記フラッシュ動作を開始した開始処理ユニットを含み、
    前記開始処理ユニットが、前記メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを示す組合せ応答の受信に応答して、前記ターゲット・メモリ・ブロックのすべてのキャッシュ・コピーを無効化するためにキル動作を発行する、
    請求項8に記載のデータ処理システム。
  11. 前記ターゲット・メモリ・ブロックが前記開始処理ユニットを含むコヒーレンシ・ドメイン内でのみキャッシュされることを示すキャッシュ状態である前記ターゲット・メモリ・ブロックを前記処理ユニットのキャッシュが保持すること判定されたことに応答して、前記開始処理ユニットが、前記キル動作の範囲を前記第1コヒーレンシ・ドメインおよび前記第2コヒーレンシ・ドメインのうちのいずれかに制限する、請求項10に記載のデータ処理システム。
  12. 前記関連するキャッシュ・メモリが、キャッシュ・ディレクトリおよびキャッシュ・コントローラを含み、
    前記キャッシュ・コントローラが、前記フラッシュ動作に応答して、前記関連するキャッシュ・メモリが前記ターゲット・メモリ・ブロックの変更されたコピーを保持することを前記キャッシュ・ディレクトリが示すかどうかを判定し、前記判定に応答して、前記フラッシュ動作の再発行を強制する、前記フラッシュ動作に対するretry部分的応答を供給し、前記システム・メモリを更新するために前記メモリ・ブロックの前記変更されたコピーのキャストアウト−プッシュを実行し、少なくとも前記キャストアウト−プッシュが完了するまで、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対してretry部分的応答を供給する、
    請求項8に記載のデータ処理システム。
  13. 前記関連するキャッシュ・メモリが、キャッシュ・ディレクトリおよびキャッシュ・コントローラを含み、
    前記キャッシュ・コントローラが、前記フラッシュ動作に応答して、前記キャッシュ・ディレクトリにアクセスし、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックの共用コピーを保持することを前記キャッシュ・ディレクトリが示すことに応答して、前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在することを示す、前記フラッシュ動作に対するretry部分的応答を供給し、前記ターゲット・メモリ・ブロックの前記共用コピーを無効化し、前記無効化まで、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対して、前記キャッシュが前記ターゲット・メモリ・ブロックの共用コピーを保持することを示す部分的応答を供給する、
    請求項8に記載のデータ処理システム。
  14. 前記関連するキャッシュ・メモリが、キャッシュ・ディレクトリおよびキャッシュ・コントローラを含み、
    前記キャッシュ・コントローラが、前記フラッシュ動作の受信に応答して、前記キャッシュ・ディレクトリにアクセスし、前記キャッシュ・メモリが前記ターゲット・メモリ・ブロックの未変更のコピーを保持するコヒーレンシの最高点であることを前記キャッシュ・ディレクトリが示すことに応答して、前記フラッシュ動作の再発行を強制する、前記フラッシュ動作に対するretry部分的応答を供給し、前記ドメイン・インジケータを更新するためにキャストアウトを実行し、少なくとも前記キャストアウトが完了するまで、前記フラッシュ動作と衝突するすべてのスヌープされたデータ・アクセス動作に対してretry部分的応答を供給する、
    請求項8に記載のデータ処理システム。
  15. プロセッサ・コアと関連するキャッシュ・メモリとを含む処理ユニットをそれぞれが含む少なくとも第1コヒーレンシ・ドメインおよび第2コヒーレンシ・ドメインを含むデータ処理システム用のメモリ・コントローラであって、
    前記第1コヒーレンシ・ドメインが、さらに、ターゲット・アドレスによって識別されるターゲット・メモリ・ブロックを含むシステム・メモリと、前記ターゲット・メモリ・ブロックが前記第1コヒーレンシ・ドメインの外部でキャッシュされるかどうかを示すドメイン・インジケータとを含み、
    前記第1コヒーレンシ・ドメインおよび第2コヒーレンシ・ドメインにブロードキャストされる、前記ターゲット・メモリ・ブロックの前記ターゲット・アドレスを指定するフラッシュ動作に関する組合せ応答の受信に応答して、前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを前記組合せ応答が示すかどうかを判定する手段と、
    前記ターゲット・メモリ・ブロックのキャッシュ・コピーが前記データ処理システム内に存在する可能性があることを前記組合せ応答が示すと判定されたことに応答して、前記ターゲット・メモリ・ブロックが前記第1コヒーレンシ・ドメインの外部でキャッシュされることを示すために前記ドメイン・インジケータを更新する手段と、
    を含む、メモリ・コントローラ。
  16. 前記メモリ・コントローラが、さらに、前記フラッシュ動作が前記第1コヒーレンシ・ドメインの外部で発生したかどうかを判定する手段を含み、
    前記更新する手段が、前記フラッシュ動作が前記第1コヒーレンシ・ドメインの外部で発生したと判定されたことに応答してのみ前記ドメイン・インジケータを更新する手段を含む、
    請求項15に記載のメモリ・コントローラ。
JP2006350414A 2006-01-30 2006-12-26 複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理するデータ処理システム、方法、およびメモリ・コントローラ Expired - Fee Related JP5105863B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/342,951 US7543116B2 (en) 2006-01-30 2006-01-30 Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains
US11/342951 2006-01-30

Publications (2)

Publication Number Publication Date
JP2007207223A true JP2007207223A (ja) 2007-08-16
JP5105863B2 JP5105863B2 (ja) 2012-12-26

Family

ID=38323492

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006350414A Expired - Fee Related JP5105863B2 (ja) 2006-01-30 2006-12-26 複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理するデータ処理システム、方法、およびメモリ・コントローラ

Country Status (4)

Country Link
US (1) US7543116B2 (ja)
JP (1) JP5105863B2 (ja)
CN (1) CN100570582C (ja)
TW (1) TWI393005B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9035960B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
JP2017151856A (ja) * 2016-02-26 2017-08-31 富士通株式会社 演算処理装置、情報処理装置および情報処理装置の制御方法
KR20200056430A (ko) * 2017-09-18 2020-05-22 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 캐시 코히어런스 프로토콜 데이터를 사용한 캐시 기반 트레이스 기록
US11802293B2 (en) 2014-02-17 2023-10-31 King's College London Adeno-associated virus vector
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685371B1 (en) * 2006-04-19 2010-03-23 Nvidia Corporation Hierarchical flush barrier mechanism with deadlock avoidance
JP2008026944A (ja) * 2006-07-18 2008-02-07 Renesas Technology Corp バス結合型マルチプロセッサ
JP4474570B2 (ja) * 2008-01-28 2010-06-09 エヌイーシーコンピュータテクノ株式会社 キャッシュコヒーレンシ制御方法
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8935485B2 (en) 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
US9053057B2 (en) 2012-09-14 2015-06-09 Empire Technology Development Llc Cache coherence directory in multi-processor architectures
CN103729304B (zh) * 2012-10-11 2017-03-15 腾讯科技(深圳)有限公司 数据处理方法及装置
US9158689B2 (en) 2013-02-11 2015-10-13 Empire Technology Development Llc Aggregating cache eviction notifications to a directory
US9767063B2 (en) * 2015-03-04 2017-09-19 Qualcomm Incorporated Adaptive access control for hardware blocks
US10157139B2 (en) * 2016-09-19 2018-12-18 Qualcomm Incorporated Asynchronous cache operations
US10877836B2 (en) * 2018-08-29 2020-12-29 Arm Limited Method and apparatus for coherent interconnect recovery with protocol layer re-transmission
US10949346B2 (en) * 2018-11-08 2021-03-16 International Business Machines Corporation Data flush of a persistent memory cache or buffer
US10970215B1 (en) 2019-12-03 2021-04-06 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
US11157409B2 (en) * 2019-12-17 2021-10-26 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
US11157408B2 (en) * 2019-12-17 2021-10-26 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816474A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd マルチプロセッサシステム
JPH10333986A (ja) * 1997-04-14 1998-12-18 Internatl Business Mach Corp <Ibm> プロセス・バスに対するキャッシュ操作の要求ベースの発行方法及び装置
JPH1185615A (ja) * 1997-09-08 1999-03-30 Canon Inc 情報処理システム及び情報処理装置及びその制御方法
JP2000298659A (ja) * 1999-03-31 2000-10-24 Internatl Business Mach Corp <Ibm> コンプリート・アンド・コンサイス・リモート(ccr)ディレクトリ
JP2003044456A (ja) * 2001-06-21 2003-02-14 Internatl Business Mach Corp <Ibm> マルチノード・コンピュータ・システムにおけるメモリ・ディレクトリ管理
JP2003216596A (ja) * 2002-01-17 2003-07-31 Hitachi Ltd マルチプロセッサシステム及びノード装置
JP2004326758A (ja) * 2003-04-24 2004-11-18 Internatl Business Mach Corp <Ibm> 局所的なキャッシュ・ブロック・フラッシュ命令
JP2005174342A (ja) * 2003-12-10 2005-06-30 Internatl Business Mach Corp <Ibm> データ処理システムのメモリ・サブシステムにおける供給者ベースのメモリ・スペキュレーションのための方法およびシステム
JP2005234854A (ja) * 2004-02-19 2005-09-02 Hitachi Ltd マルチプロセッサシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2819982B2 (ja) * 1993-03-18 1998-11-05 株式会社日立製作所 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6442664B1 (en) * 1999-06-01 2002-08-27 International Business Machines Corporation Computer memory address translation system
US6606676B1 (en) * 1999-11-08 2003-08-12 International Business Machines Corporation Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system
WO2001057675A1 (en) * 2000-02-02 2001-08-09 Sony Electronics Inc. System and method for effectively utilizing a cache memory in an electronic device
US6654857B2 (en) * 2001-06-21 2003-11-25 International Business Machines Corporation Non-uniform memory access (NUMA) computer system having distributed global coherency management
US6785774B2 (en) * 2001-10-16 2004-08-31 International Business Machines Corporation High performance symmetric multiprocessing systems via super-coherent data mechanisms
US8140770B2 (en) * 2005-02-10 2012-03-20 International Business Machines Corporation Data processing system and method for predictively selecting a scope of broadcast of an operation
US7454578B2 (en) * 2005-02-10 2008-11-18 International Business Machines Corporation Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory
US7478201B2 (en) * 2005-05-24 2009-01-13 International Business Machines Corporation Data processing system, cache system and method for passively scrubbing a domain indication

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816474A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd マルチプロセッサシステム
JPH10333986A (ja) * 1997-04-14 1998-12-18 Internatl Business Mach Corp <Ibm> プロセス・バスに対するキャッシュ操作の要求ベースの発行方法及び装置
JPH1185615A (ja) * 1997-09-08 1999-03-30 Canon Inc 情報処理システム及び情報処理装置及びその制御方法
JP2000298659A (ja) * 1999-03-31 2000-10-24 Internatl Business Mach Corp <Ibm> コンプリート・アンド・コンサイス・リモート(ccr)ディレクトリ
JP2003044456A (ja) * 2001-06-21 2003-02-14 Internatl Business Mach Corp <Ibm> マルチノード・コンピュータ・システムにおけるメモリ・ディレクトリ管理
JP2003216596A (ja) * 2002-01-17 2003-07-31 Hitachi Ltd マルチプロセッサシステム及びノード装置
JP2004326758A (ja) * 2003-04-24 2004-11-18 Internatl Business Mach Corp <Ibm> 局所的なキャッシュ・ブロック・フラッシュ命令
JP2005174342A (ja) * 2003-12-10 2005-06-30 Internatl Business Mach Corp <Ibm> データ処理システムのメモリ・サブシステムにおける供給者ベースのメモリ・スペキュレーションのための方法およびシステム
JP2005234854A (ja) * 2004-02-19 2005-09-02 Hitachi Ltd マルチプロセッサシステム

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10078590B2 (en) 2008-03-28 2018-09-18 Intel Corporation Technique to share information among different cache coherency domains
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US9665488B2 (en) 2008-03-28 2017-05-30 Intel Corporation Technique to share information among different cache coherency domains
US10204051B2 (en) 2008-03-28 2019-02-12 Intel Corporation Technique to share information among different cache coherency domains
US9946650B2 (en) 2008-03-28 2018-04-17 Intel Corporation Technique to share information among different cache coherency domains
US9035962B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US9035960B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US11802293B2 (en) 2014-02-17 2023-10-31 King's College London Adeno-associated virus vector
JP2017151856A (ja) * 2016-02-26 2017-08-31 富士通株式会社 演算処理装置、情報処理装置および情報処理装置の制御方法
JP2020534589A (ja) * 2017-09-18 2020-11-26 マイクロソフト テクノロジー ライセンシング,エルエルシー キャッシュコヒーレンスプロトコルデータを用いたキャッシュベーストレース記録
KR20200056430A (ko) * 2017-09-18 2020-05-22 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 캐시 코히어런스 프로토콜 데이터를 사용한 캐시 기반 트레이스 기록
KR102483506B1 (ko) 2017-09-18 2022-12-30 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 캐시 코히어런스 프로토콜 데이터를 사용한 캐시 기반 트레이스 기록
JP7152474B2 (ja) 2017-09-18 2022-10-12 マイクロソフト テクノロジー ライセンシング,エルエルシー キャッシュコヒーレンスプロトコルデータを用いたキャッシュベーストレース記録
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches

Also Published As

Publication number Publication date
TW200805062A (en) 2008-01-16
TWI393005B (zh) 2013-04-11
CN100570582C (zh) 2009-12-16
CN101013398A (zh) 2007-08-08
US20070180196A1 (en) 2007-08-02
US7543116B2 (en) 2009-06-02
JP5105863B2 (ja) 2012-12-26

Similar Documents

Publication Publication Date Title
JP5105863B2 (ja) 複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理するデータ処理システム、方法、およびメモリ・コントローラ
US7404046B2 (en) Cache memory, processing unit, data processing system and method for filtering snooped operations
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
JP4928812B2 (ja) タグ付きキャッシュ状態に基づいて下位レベル・キャッシュへの参照なしに相互接続ファブリック上にリクエストを送出するためのデータ処理システム、キャッシュ・システム、および方法
US7451277B2 (en) Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US7716428B2 (en) Data processing system, cache system and method for reducing imprecise invalid coherency states
JP5116418B2 (ja) マルチプロセッサ・データ処理システムにおいて、データを処理する方法、マルチプロセッサ・データ処理システムのための処理ユニット、およびデータ処理システム
US7237070B2 (en) Cache memory, processing unit, data processing system and method for assuming a selected invalid coherency state based upon a request source
US7577797B2 (en) Data processing system, cache system and method for precisely forming an invalid coherency state based upon a combined response
US7454578B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory
JP5004571B2 (ja) 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法
US7478201B2 (en) Data processing system, cache system and method for passively scrubbing a domain indication
US7467262B2 (en) Data processing system, cache system and method for scrubbing a domain indication in response to execution of program code
US20060271742A1 (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
US7725619B2 (en) Data processing system and method that permit pipelining of I/O write operations and multiple operation scopes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091030

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: A821

Effective date: 20120731

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120731

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20120731

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120801

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: 20120912

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120912

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120912

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: 20121002

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151012

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees