JP2023504622A - ある要求に対してコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード - Google Patents

ある要求に対してコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード Download PDF

Info

Publication number
JP2023504622A
JP2023504622A JP2022532740A JP2022532740A JP2023504622A JP 2023504622 A JP2023504622 A JP 2023504622A JP 2022532740 A JP2022532740 A JP 2022532740A JP 2022532740 A JP2022532740 A JP 2022532740A JP 2023504622 A JP2023504622 A JP 2023504622A
Authority
JP
Japan
Prior art keywords
memory
request
cache
coherence
conflicting
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.)
Pending
Application number
JP2022532740A
Other languages
English (en)
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 JP2023504622A publication Critical patent/JP2023504622A/ja
Pending legal-status Critical Current

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
    • 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/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0877Cache access modes

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)
  • Storage Device Security (AREA)

Abstract

キャッシュ・メモリは、データ・アレイと、コヒーレンス状態情報を指定するデータ・アレイの内容のディレクトリと、データ・アレイおよびディレクトリを参照してシステム・ファブリックからスヌープされるオペレーションを処理するスヌープ・ロジックとを含む。スヌープ・ロジックは、ターゲット・アドレスを指定する複数のプロセッサ・コアのうちの1つのフラッシュ/クリーン・メモリ・アクセス・オペレーションの要求をシステム・ファブリック上でスヌープすることに応答して、要求をサービスし、その後、参照モードに入る。レフェリー・モードにある間に、スヌープ・ロジックは、複数のプロセッサ・コアによる衝突するメモリ・アクセス要求に対して、ターゲット・アドレスにより識別されるメモリ・ブロックを保護し、それゆえに、そのメモリ・ブロックのコヒーレンス所有権を引き受けることが許容される他のコヒーレンス参加部はない。

Description

本発明は、データ処理に関し、具体的には、フラッシュ/クリーン・メモリ・アクセス要求に対するコヒーレンス保護を拡張し、システム・メモリを更新するキャッシュ・スヌーピング・モードに関する。
サーバ・コンピュータ・システムなどの従来のマルチプロセッサ(MP)コンピュータ・システムは、典型的には1つまたは複数のアドレス、データ、および制御バスを含むシステム相互接続に全てが結合された複数の処理ユニットを含む。システム相互接続に結合されているのはシステム・メモリであり、システム・メモリは、マルチプロセッサ・コンピュータ・システム内の共有メモリの最下位レベルを表し、一般に、全ての処理ユニットによる読取りおよび書込みアクセスについてアクセス可能である。システム・メモリに常駐する命令およびデータへのアクセス待ち時間を減少させるために、各処理ユニットは、典型的には、それぞれのマルチレベル・キャッシュ階層によってさらにサポートされ、下位は、1つまたは複数のプロセッサ・コアによって共有され得る。
キャッシュ・メモリは、必要なデータとシステム・メモリからの命令とをロードしなければならないことにより導入されるアクセス待ち時間を減少させることによって処理を高速化するために、プロセッサによってアクセスされる可能性のあるメモリ・ブロックを一時的にバッファするように一般に利用される。いくつかのMPシステムでは、キャッシュ階層は、少なくとも2つのレベルを含む。レベル1(L1)または上位のキャッシュは、通常、特定のプロセッサ・コアに関連付けられたプライベート・キャッシュであり、MPシステム内の他のコアによってアクセスすることができない。典型的には、ロードまたは格納の命令などのメモリ・アクセス命令に応答して、プロセッサ・コアは、最初に上位のキャッシュのディレクトリにアクセスする。要求されたメモリ・ブロックが上位のキャッシュ内に見つからない場合に、プロセッサ・コアは、要求されたメモリ・ブロックに対する下位のキャッシュ(例えば、レベル2(L2)またはレベル3(L3)のキャッシュ)にアクセスする。最下位のキャッシュ(例えば、L2またはL3)は、複数のプロセッサ・コアによって共有することができる。
複数のプロセッサ・コアは、データの同じキャッシュ・ラインへの書込みアクセスを要求してもよく、また、修正済みのキャッシュ・ラインがシステム・メモリと即時に同期していないため、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は、典型的には、システム・メモリの内容の様々なプロセッサ・コアの「ビュー」の間で少なくとも最小レベルのコヒーレンスを確保するために、キャッシュ・コヒーレンシ・プロトコルを実行する。特に、キャッシュ・コヒーレンシは、ハードウェア・スレッドがメモリ・ブロックのコピーにアクセスし、続いてメモリ・ブロックの更新されたコピーにアクセスした後、ハードウェア・スレッドがメモリ・ブロックの古いコピーに再度アクセスできないことを最低限必要とする。
いくつかのMPシステムは、フラッシュ・オペレーションおよびクリーン・オペレーションをサポートし、それらは、書込み権限を標示するコヒーレンス状態(本明細書では「HPC状態」と呼ばれることもある)でキャッシュ・ラインを含む固有のキャッシュ階層から、フラッシュ・オペレーションまたはクリーン・オペレーションのターゲット・アドレスに関連付けられた修正済みのキャッシュ・ラインをコピーして、もし在ればシステム・メモリに戻る。クリーン・オペレーションについては、ターゲット・キャッシュ・ラインも未修正のHPCコヒーレンス状態に移行される。フラッシュ・オペレーションについては、HPC状態のターゲット・キャッシュ・ラインは、修正されたか否かに関わらずもし在れば、無効コヒーレンス状態に移行される。フラッシュ・オペレーションは、追加的に、MPシステムの全てのキャッシュ階層において無効化される非HPC状態のターゲット・キャッシュ・ラインの任意の他の1つまたは複数のコピーを必要とする。ターゲット・キャッシュ・ラインをHPC状態に保持するキャッシュが、もし在ればその処理を完了していない際に、この無効化は完了されない場合がある。
スヌープ・ベースのコヒーレンス・プロトコルを介してコヒーレンシを維持するMPシステムでは、フラッシュ・オペレーションまたはクリーン・オペレーションは、一般に、MPシステムのシステム相互接続上で一斉送信され、HPC状態のターゲット・キャッシュ・ラインを保持するキャッシュが、フラッシュ・オペレーションまたはクリーン・オペレーションの処理を完了していない限り、Retryコヒーレンス応答を受信する。そのため、フラッシュ・オペレーションまたはクリーン・オペレーションを開始するコヒーレンス参加部は、ターゲット・キャッシュ・ラインをHPC状態に保持するキャッシュが在ればそのフラッシュ・オペレーションまたはクリーン・オペレーションの処理を完了する前に、フラッシュ・オペレーションまたはクリーン・オペレーションを複数回再発行する必要がある場合がある。HPC状態のターゲット・キャッシュ・ラインを保持していたキャッシュがフラッシュ・オペレーションまたはクリーン・オペレーションの処理を完了した際に、HPC状態のターゲット・キャッシュ・ラインの新たなコピーがまだ作成されていない場合に(クリーン・オペレーションに対する修正済みのHPC状態およびフラッシュ・オペレーションに対する修正済みまたは未修正のHPC状態において)、以降のクリーン・オペレーションの発行は成功を標示するコヒーレンス応答を受信するものとなり、以降のフラッシュ・オペレーションの発行は、成功を標示するコヒーレンス応答(ラインのキャッシュされたコピーが存在しない場合)か、またはターゲット・キャッシュ・ラインの任意の残りの非HPCキャッシュされたコピーを無効化する責務を開始コヒーレンス参加部に転送するコヒーレンス応答のどちらかを受信するものとなる。これらのフラッシュ・オペレーションのいずれの場合においても、フラッシュ・オペレーションが完全に終了しているか、またはターゲット・キャッシュ・ラインの残りの1つまたは複数の非HPCコピーが、開始コヒーレンス参加部によって無効化されると(例えば、killオペレーションの発行を介して)終了するものとなるという意味で、フラッシュ・オペレーションオペレーションは 、「成功した」と考えることができる。しかし、クリーン・オペレーションまたはフラッシュ・オペレーションの以降の発行の前に、別のコヒーレンス参加部が、関連のHPC状態で(すなわち、クリーン・オペレーションに対する修正済みのHPC状態、およびフラッシュ・オペレーションに対する修正済みまたは未修正のHPC状態で)ターゲット・キャッシュ・ラインの新たなコピーを作成する場合には、フラッシュ・オペレーションまたはクリーン・オペレーションの以降の再発行が再び再試行されるものとなり、HPC状態のターゲット・キャッシュ・ラインの新しいコピーが処理されなければならず、それゆえにフラッシュ・オペレーションまたはクリーン・オペレーションの完了の成功が遅れるものとなる。この遅延は、フラッシュ・オペレーションまたはクリーン・オペレーションのターゲット・キャッシュ・ラインの新たなHPCコピーが継続的に作成されることによりさらに悪化する可能性がある。
少なくとも1つの実施形態では、フラッシュ・オペレーションまたはクリーン・オペレーションのターゲット・キャッシュ・ラインは、ターゲット・キャッシュ・ラインのための保護ウィンドウを拡張する指定されたコヒーレンス参加部を介して、他のコヒーレンス参加部からの競合アクセスから保護される。
本発明の一態様によれば、データ・アレイと、コヒーレンス状態情報を指定するデータ・アレイの内容のディレクトリと、データ・アレイおよびディレクトリを参照してシステム・ファブリックからスヌープされるオペレーションを処理するスヌープ・ロジックとを含むキャッシュ・メモリが提供される。スヌープ・ロジックは、ターゲット・アドレスを指定する複数のプロセッサ・コアのうちの1つのフラッシュまたはクリーン・メモリ・アクセス・オペレーションの要求をシステム・ファブリック上でスヌープすることに応答して、要求をサービスし、その後、レフェリー・モードに入る。レフェリー・モードにある間に、スヌープ・ロジックは、複数のプロセッサ・コアによる衝突するメモリ・アクセス要求に対して、ターゲット・アドレスにより識別されるメモリ・ブロックを保護し、それゆえに、そのメモリ・ブロックのコヒーレンス所有権を引き受けることが許容される他のコヒーレンス参加部はない。
一実施形態による例示的なデータ処理システムの高位ブロック図である。 一実施形態による例示的な処理ユニットのより詳細なブロック図である。 一実施形態による下位キャッシュの詳細なブロック図である。 一実施形態によるプロセッサ・メモリ・アクセス・オペレーションの例示的なタイミング図である。 一実施形態による、処理ユニットがフラッシュ/クリーン・メモリ・アクセス・オペレーションを実行する例示的なプロセスの高位ロジック・フローチャートである。 一実施形態による、スヌープされたフラッシュ型またはクリーン型の要求のターゲット・キャッシュ・ラインのコヒーレンス所有権を有するキャッシュが要求を扱う例示的なプロセスの高位ロジック・フローチャートである。 一実施形態による、例示的なフラッシュ/クリーン・メモリ・アクセス・オペレーションのタイミング図である。 一実施形態による、スヌープされたフラッシュ型要求のターゲット・キャッシュの非HPC共有コピーを保持するキャッシュが要求を扱う例示的なプロセスの高位ロジック・フローチャートである。 設計プロセスを説明するデータフロー図である。
ここで図面を参照すると、同様の参照番号は同様の部品および対応する部品を全体的に指し、具体的に図1を参照すると、一実施形態による例示的なデータ処理システム100を示す高位ブロック図が示されている。図示された実施形態では、データ処理システム100は、処理データと命令とを含む複数の処理ノード102を含むキャッシュ・コヒーレント・マルチプロセッサ(MP)データ処理システムである。処理ノード102は、アドレス、データ、および制御情報を搬送するためのシステム相互接続110に結合されている。システム相互接続110は、例えば、バス化された相互接続、スイッチされた相互接続、またはハイブリッド相互接続として実装されてもよい。
図示された実施形態では、各処理ノード102は、好ましくはそれぞれの集積回路としてそれぞれ実現される4つの処理ユニット104を含むマルチチップ・モジュール(MCM)として実現される。各処理ノード102内の処理ユニット104は、ローカル相互接続114によって互いにおよびシステム相互接続110と通信するように接続され、ローカル相互接続114は、システム相互接続110のように、例えば、1つまたは複数のバスもしくはスイッチまたはその両方と共に実装されてもよい。システム相互接続110とローカル相互接続114は、合わせてシステム・ファブリックを形成する。
図2を参照して以下に詳細に説明するように、処理ユニット104はそれぞれ、ローカル相互接続114に結合されてそれぞれのシステム・メモリ108にインタフェースを提供するメモリ・コントローラ106を含む。システム・メモリ108に常駐するデータおよび命令は、概して、データ処理システム100内の任意の処理ノード102の任意の処理ユニット104において、プロセッサ・コアによってアクセスされ、キャッシュされ、修正され得る。そのため、システム・メモリ108は、データ処理システム100の分散型共有メモリ・システムにおける最下位のメモリ・ストレージを形成する。代替的な実施形態では、1つまたは複数のメモリ・コントローラ106(およびシステム・メモリ108)は、ローカル相互接続114ではなくシステム相互接続110に結合することができる。
当業者は、図1のMPデータ処理システム100が、相互接続ブリッジ、不揮発性ストレージ、ネットワークへの接続のためのポート、または付属デバイスなどの多くの図示されない追加的なコンポーネントを含むことができることを理解するものとなる。このような追加的なコンポーネントは、記載された実施形態の理解のために必要ではないことから、図1には示されず、本明細書にさらに記載される。しかし、本明細書に記載される拡張は、様々なアーキテクチャのデータ処理システムに適用可能であり、図1に示す一般化されたデータ処理システム・アーキテクチャに限定されないことも理解されるべきである。
図2を参照すると、一実施形態による例示的な処理ユニット104のより詳細なブロック図が示されている。図示された実施形態では、各処理ユニット104は、命令およびデータを処理するための複数のプロセッサ・コア200を含む集積回路である。各プロセッサ・コア200は、命令を実行するための1つまたは複数の実行ユニットを含み、そのようなものとしては、メモリ・ブロックへのアクセスを要求するメモリ・アクセス命令を実行するかまたはメモリ・ブロックへのアクセスの要求を発生させるLSU202が挙げられる。少なくともいくつかの実施形態では、各プロセッサ・コア200は、複数の実行のハードウェア・スレッドを同時に実行することができる。
各プロセッサ・コア200のオペレーションは、集積メモリ・コントローラ106を介してアクセスされる共有システム・メモリ108を最下位に有するマルチレベル・メモリ階層によってサポートされる。それよりも上位では、メモリ階層は、1つまたは複数のレベルのキャッシュ・メモリを含み、キャッシュ・メモリは、例示的な実施形態では、各プロセッサ・コア200内のおよび専用のストアスルーのレベル1(L1)キャッシュ226と、各プロセッサ・コア200用のそれぞれのストアインのレベル2(L2)キャッシュ230とを含む。キャッシュ可能なアドレスに対する複数の同時メモリ・アクセス要求を効率的に扱うために、いくつかの実施形態では、各L2キャッシュ230は、複数のL2キャッシュ・スライスを実装することができ、各L2キャッシュ・スライスは、実メモリ・アドレスのそれぞれのセットについてメモリ・アクセス要求を扱う。
図説されたキャッシュ階層は、2つのレベルのキャッシュのみを含むが、当業者は、代替的な実施形態が、追加のレベル(例えば、L3、L4、など)のオンチップまたはオフチップのインラインまたはルックアサイドのキャッシュを含み、それらが、上位のキャッシュの内容を完全に含んでいても部分的に含んでいても含まなくてもよいことを理解するものとなる。
さらに図2を参照すると、各処理ユニット104は、ローカル相互接続114およびシステム相互接続110へのオペレーションのフローの制御を担う、統合および分散されたファブリック・コントローラ216と、選択されたキャッシュ・コヒーレンシ・プロトコルで利用されるメモリ・アクセス要求に対するコヒーレンス応答を決定するための応答ロジック218とを、さらに含む。
オペレーションにおいて、プロセッサ・コア200による実行下のハードウェア・スレッドが、実行される指定のメモリ・アクセス・オペレーションを要求するメモリ・アクセス命令を含む場合に、LSU202は、アクセスされるべきターゲット実アドレスを決定するようにメモリ・アクセス命令を実行する。実行中のプロセッサ・コア200のL1キャッシュ226を参照して、要求されたメモリ・アクセスを完全に実行できない場合に、プロセッサ・コア200は、例えば、少なくとも要求タイプとターゲット実アドレスとを含むメモリ・アクセス要求を生成し、処理のためにその関連付けられたL2キャッシュ230へのメモリ・アクセス要求を発行する。
図3を参照すると、一実施形態によるL2キャッシュ230の例示的な実施形態のより詳細なブロック図が示されている。図3に示すように、L2キャッシュ230は、キャッシュ・アレイ302と、キャッシュ・アレイ302の内容のディレクトリ308とを含む。キャッシュ・アレイ302およびディレクトリ308が従来のようにセット・アソシアティブであると仮定すると、システム・メモリ108内のメモリ位置は、システム・メモリ(実)アドレス内の所定のインデックス・ビットを利用して、キャッシュ・アレイ302内の特定の合同クラスにマッピングされる。キャッシュ・アレイ302のキャッシュ・ライン内に格納された特定のメモリ・ブロックは、キャッシュ・ディレクトリ308に記録され、キャッシュ・ディレクトリ308は、各キャッシュ・ラインに対し1つのディレクトリ・エントリを含む。図3に明示的に示されていないが、キャッシュ・ディレクトリ308内の各ディレクトリ・エントリは、様々なフィールドを含み、そのようなフィールドとしては、例えば、キャッシュ・アレイ302の対応するキャッシュ・ラインに保持されたメモリ・ブロックの実アドレスを識別するタグ・フィールド、キャッシュ・ラインのコヒーレンシ状態を標示する状態フィールド、同じ合同クラス中の他のキャッシュ・ラインを参照してキャッシュ・ラインについての置換の順序を標示するLRU(Least Recently Used:最近最も使われていない)フィールド、およびメモリ・ブロックが関連のL1キャッシュ226内に保持されているか否かを標示する包括的フィールドがあることが、当業者には理解されるものとなる。
L2キャッシュ230は、関連付けられたプロセッサ・コア200から受信したメモリ・アクセス要求を独立して同時にサービスするための複数の(例えば16個の)リード-クレーム(RC)マシン312a~312n)を含む。関連付けられたプロセッサ・コア200以外のプロセッサ・コア200から発生するリモート・メモリ・アクセス要求をサービスするために、L2キャッシュ230はまた、複数のスヌープ(SN)マシン311a~311mを含む。各SNマシン311は、ローカル相互接続114からのリモート・メモリ・アクセス要求「スヌープ」を独立して同時に扱うことができる。理解されるように、RCマシン312によるメモリ・アクセス要求のサービスは、キャッシュ・アレイ302内のメモリ・ブロックの置換または無効化を必要とすることがある。したがって、L2キャッシュ230は、キャッシュ・アレイ302からのメモリ・ブロックの除去および書き戻しを管理するCO(キャストアウト)マシン310を含む。
L2キャッシュ230は、関連付けられたプロセッサ・コア200から受信されたローカル・メモリ・アクセス要求、およびローカル相互接続114上でスヌープされたリモート要求の処理を指示するように、マルチプレクサM1~M2を制御するアービタ305をさらに含む。メモリ・アクセス要求は、所与のサイクル数にわたってディレクトリ308およびキャッシュ・アレイ302に関するメモリ・アクセス要求を処理するディスパッチ・ロジック306に、アービタ305によって実装される調停ポリシーに従って転送される。
L2キャッシュ230はまた、RC待ち行列(RCQ)320と、キャッシュ・アレイ320に挿入されて除去されるデータをそれぞれバッファするキャストアウト・プッシュ介入(CPI)待ち行列318とを含む。RCQ320は、ディスパッチされた各RCマシン312が指示されたバッファ・エントリのみからデータを検索するように、それぞれがRCマシン312の特定の1つに個別に対応する多数のバッファ・エントリを含む。同様に、CPI待ち行列318は、ディスパッチされた各COマシン310および各スヌーパ311がそれぞれの指示されたCPIバッファ・エントリのみからデータを検索するように、それぞれがCOマシン310およびSNマシン311のそれぞれ1つに個別に対応する多数のバッファ・エントリを含む。
各RCマシン312はまた、キャッシュ・アレイ302から読み出されたかもしくはリロード・バス323を介してローカル相互接続114から受信されたかまたはその両方のメモリ・ブロックをバッファリングするための、複数のRCデータ(RCDAT)バッファ322のそれぞれ1つに割り当てられている。各RCマシン312に割り当てられたRCDATバッファ322は、関連付けられたRCマシン312によってサービスされ得るメモリ・アクセス要求に対応する接続および機能性を有して構築されることが好ましい。RCDATバッファ322は、アービタ305によって生成された図示されない選択信号に応答して、RCDATバッファ322にバッファリングするためにその入力の中からデータ・バイトを選択する、関連付けられたストア・データ・マルチプレクサM4を有する。
オペレーションにおいて、要求タイプ(tタイプ)、ターゲット実アドレス、およびストア・データを含むプロセッサ・ストア要求は、ストア・キュー(STQ)304内の関連するプロセッサ・コア200から受信される。STQ304から、ストア・データが、データ・パス324を介してストア・データ・マルチプレクサM4に送信され、ストア・タイプおよびターゲット・アドレスがマルチプレクサM1に渡される。マルチプレクサM1はまた、プロセッサ・コア200からのプロセッサ負荷要求とRCマシン312からのディレクトリ書込み要求とを入力として受信する。アービタ305によって生成された図示されない選択信号に応答して、マルチプレクサM1は、その入力要求の1つをマルチプレクサM2に転送するために選択し、マルチプレクサM2は、リモート要求パス326を介してローカル相互接続114から受信したリモート要求を入力として受信する。アービタ305は、処理のためのローカルおよびリモート・メモリ・アクセス要求をスケジューリングし、そのスケジューリングに基づいて、選択信号328のシーケンスを生成する。アービタ305によって生成された選択信号328に応答して、マルチプレクサM2は、マルチプレクサM1から受信されたローカル要求またはローカル相互接続114からスヌープされたリモート要求のどちらかを、処理されるべき次のメモリ・アクセス要求として選択する。
図4を参照すると、図1のデータ処理システム100のシステム・ファブリック上の例示的なオペレーションの時空間図が示されている。多くのこのようなオペレーションは、任意の所与の時点でシステム・ファブリック上で飛行中であり、複数のこれらの同時オペレーションが、いくつかのオペレーティング・シナリオにおいて、衝突するターゲット・アドレスを指定することが理解されるべきである。
このオペレーションは、マスタ400、例えばL2キャッシュ230のRCマシン312がシステム・ファブリック上に要求402を発行する要求フェーズ450から始まる。要求402は、好ましくは、所望のアクセスのタイプを標示する要求タイプと、要求によってアクセスされるべきリソースを標示するリソース識別子(例えば、実アドレス)とを少なくとも含む。要求は、以下の表Iに示されたものを含むことが好ましい。
Figure 2023504622000002
要求402は、データ処理システム100に分散されたスヌーパ404a~404n、例えば、L2キャッシュ230のSNマシン311a~311mおよびメモリ・コントローラ106内の図示されないスヌーパによって受信される。READタイプ要求については、要求402のマスタ400と同じL2キャッシュ230内のSNマシン311は、要求402をスヌープしない(すなわち、概ね自己スヌーピングがない)が、なぜなら、READタイプの要求402が処理ユニット104によって内部的にサービスされ得ない場合にのみ、要求402がシステム・ファブリック上で送信されるためである。しかし、他のタイプの要求402、例えばフラッシュ/クリーン要求(例えば、表Iに挙げられたDCBF、DCBST、AMO要求)などについては、要求402のマスタ400と同じL2キャッシュ230内のSNマシン311は、要求402を自己スヌープする。
オペレーションは、部分応答フェーズ455で継続する。部分応答フェーズ455の間、要求402を受信し処理するスヌーパ404はそれぞれ、少なくともそのスヌーパ404の要求402への応答を表すそれぞれの部分応答(「Presp」)406を提供する。統合メモリ・コントローラ106内のスヌーパ404は、例えば、スヌーパ404が要求アドレスを担うか否か、およびその要求をサービスするために現在利用可能なリソースを有するか否かに基づいて、部分応答406を決定する。L2キャッシュ230のスヌーパ404は、例えば、L2キャッシュ・ディレクトリ308の利用可能性と、要求を扱うスヌーパ404内のスヌープ・ロジック・インスタンス311の利用可能性と、もしあれば、L2キャッシュ・ディレクトリ308内の要求アドレスに関連付けられたコヒーレンス状態とに基づいて、その部分応答406を決定してもよい。
オペレーションは、結合応答フェーズ460により継続する。結合応答フェーズ460の間に、スヌーパ404の部分応答406は、応答ロジック218の1つまたは複数のインスタンスによって段階的にまたは一度に論理的に組み合わされて、システムワイドな結合応答(「Cresp」)410を要求402に対し決定する。本明細書に以降仮定される好適な一実施形態では、結合応答410の生成を担う応答ロジック218のインスタンスは、要求402を発行したマスタ400を含む処理ユニット104内に位置する。応答ロジック218は、システムワイドな応答(例えば、成功(Success)、再試行(Retry)など)を要求402に対し標示するために、システム・ファブリックを介してマスタ400とスヌーパ404とに、結合応答410を提供する。Cresp410が要求402の成功を標示する場合に、Cresp410は、例えば、要求されたメモリ・ブロックに対するデータ・ソース(適用可能であれば)、要求されたメモリ・ブロックがマスタ400によってキャッシュされるコヒーレンス状態(該当すれば)、および1つまたは複数のL2キャッシュ230における要求されたメモリ・ブロックのキャッシュされたコピーを無効化する「クリーンアップ・オペレーション」が必要であるか否か(適用可能であれば)を、標示することができる。
結合応答410の受信に応答して、1つまたは複数のマスタ400およびスヌーパ404は、典型的には、要求402をサービスするために1つまたは複数のオペレーションを実行する。これらのオペレーションは、マスタ400にデータを供給すること、1つまたは複数のL2キャッシュ230にキャッシュされたデータのコヒーレンシ状態を無効化するか、そうでなければ更新すること、キャストアウト・オペレーションを実行すること、データをシステム・メモリ108に書き込むことなどを含むことができる。要求402によって要求される場合、要求されたまたはターゲット・メモリ・ブロックは、応答ロジック218による結合応答410の生成の前または後に、マスタ400またはスヌーパ404の1つに送信されてもよい。
以下の説明において、要求402に対するスヌーパ404の部分応答406、ならびに要求402に応答してスヌーパ404によって実行されるオペレーションもしくはその結合応答410またはその両方は、スヌーパがコヒーレンシの最高点(HPC)であるか、コヒーレンシの最低点(LPC)であるか、またはどちらも上記要求によって指定された要求アドレスに関するものではないかを参照して説明される。LPCは、本明細書では、メモリ・ブロックの最終レポジトリとして機能するメモリ・デバイスまたはI/Oデバイスとして定義される。メモリ・ブロックのコピーを保持するキャッシング参加部がない場合、LPCはそのメモリ・ブロックの唯一のイメージを保持する。メモリ・ブロックに対するHPCキャッシング参加部がない場合、LPCは、メモリ・ブロックを修正するための要求を許可または拒否する唯一の権限を有する。さらに、LPCデータが最新であり、データを提供できるキャッシング参加部がない場合に、LPCは、メモリ・ブロックを読み出すかまたは修正する要求に対しデータを提供する。キャッシング参加部が、データのより最新のコピーを有するもののそれを要求に対し提供できない場合、LPCは古いデータを提供せず、要求が再試行される。図1~3に示されるデータ処理システム100の実施形態における典型的な要求に対して、LPCは、参照されたメモリ・ブロックを保持するシステム・メモリ108のためのメモリ・コントローラ106である。
HPCは、本明細書では、メモリ・ブロックの真のイメージ(LPCで対応のメモリ・ブロックと一致してもよいしそうでなくてもよい)をキャッシュする一意的に識別されたデバイスとして定義され、メモリ・ブロックを修正する要求を許可または拒否する権限を有する。記述的には、HPCもまた(そのコピーがLPCの後ろのメイン・メモリと一致していても)、メモリ・ブロック(キャッシュ対キャッシュ転送がLPC対キャッシュ転送よりも高速である)を読み出しまたは修正する任意の要求に応答して、メモリ・ブロックのコピーを要求元に提供する。そのため、データ処理システムの実施形態における典型的な要求に対して、HPCは、もしあればL2キャッシュ230となる。メモリ・ブロックに対するHPCを指示するために他のインジケータが利用されてもよいが、好適な実施形態は、もしあれば、L2キャッシュ230のL2キャッシュ・ディレクトリ308内の選択されたキャッシュ・コヒーレンス状態を利用してメモリ・ブロックに対しHPCを指示する。好適な一実施形態では、コヒーレンシ・プロトコル内のコヒーレンス状態は、(1)キャッシュがHPCであるか否かの標示をメモリ・ブロックに提供することに加えて、(2)キャッシュされたコピーが一意であるか否か(すなわち、唯一のキャッシュされたコピー・システムワイドであるか否か)、(3)オペレーションのフェーズに対して、キャッシュがメモリ・ブロックのコピーをメモリ・ブロックの要求のマスタに提供できるか否か、およびいつ提供できるか、ならびに(4)メモリ・ブロックのキャッシュされたイメージがLPC(システム・メモリ)の対応するメモリ・ブロックと一致するか否か、をも標示する。これらの4つの属性は、例えば、下記の表IIに要約した周知のMESI(修正、排他、共有、無効)プロトコルの例示的な変形例で表すことができる。コヒーレンシ・プロトコルに関するさらに別の情報は、例えば、参照により本明細書に組み込まれる米国特許第7,389,388号に記載されている。
Figure 2023504622000003
上の表IIには、キャッシュ・メモリが別のキャッシュ・メモリによってこれらの状態のいずれかに保持されたキャッシュ・ラインのコピーを同時に保持し得るという点で、すべて「共有」コヒーレンシ状態であるT状態、Te状態、S状態、およびS状態がある。T状態またはTe状態は、以前にそれぞれM状態またはMe状態のうち1つにおいて関連付けられたキャッシュ・ラインを保持し、関連付けられたキャッシュ・ラインのクエリ専用コピーを別のキャッシュ・メモリに供給していた、HPCキャッシュ・メモリを識別する。HPCとして、TまたはTeコヒーレンス状態にあるキャッシュ・ラインを保持するキャッシュ・メモリは、キャッシュ・ラインを修正する権限を有するか、またはそのような権限を別のキャッシュ・メモリに与える権限を有する。キャッシュ・ラインをTx状態(例えば、TまたはTe)に保持するキャッシュ・メモリは、キャッシュ・ラインをSL状態に保持するキャッシュ・メモリでデータ・ソースとして機能する(Cresp前)のに役立つものがない場合に、キャッシュ・メモリが別のキャッシュ・メモリへのクエリ専用コピーを供給するのみであるという点で、そのキャッシュ・ラインのクエリ専用コピーのための最後の手段(Cresp後)のキャッシュ・データ・ソースとして機能する。
状態は、キャッシュ・メモリに応答してそのキャッシュ・メモリに形成され、このキャッシュ・メモリは、Tコヒーレンス状態でキャッシュ・メモリからキャッシュ・ラインのクエリ専用コピーを受信する。S状態はHPCコヒーレンス状態ではないが、S状態のキャッシュ・ラインを保持するキャッシュ・メモリは、そのキャッシュ・ラインのクエリ専用コピーを別のキャッシュ・メモリに供給する能力を有し、Crespの受信の前にそれを実行することができる。キャッシュ・ラインのクエリ専用コピーを別のキャッシュ・メモリ(S状態を引き受ける)に供給することに応答して、キャッシュ・ラインのクエリ専用コピーを供給するキャッシュ・メモリは、キャッシュ・ラインについてそのコヒーレンシ状態をSからSに更新する。そのため、Sコヒーレンス状態の実装は、マルチプロセッサ・データ処理システム全体にわたって、頻繁に照会されるキャッシュ・ラインの多数のクエリ専用コピーを作成させることができ、有利には、それらのキャッシュ・ラインへのクエリ専用のアクセスの待ち時間を減少させることができる。
再び図4を参照すると、もしあれば、要求402で参照されるメモリ・ブロックのためのHPC、またはHPCの非存在下での、メモリ・ブロックのLPCは、必要に応じて要求402に応答して、メモリ・ブロックのコヒーレンス所有権の転送を保護する責務を負うことが好ましい。図4に示された例示的なシナリオでは、要求402の要求アドレスによって指定されたメモリ・ブロックのためのスヌーパ404nは、スヌーパ404nがその部分応答406を決定してからスヌーパ304nが結合応答410を受信するまでに拡張する保護ウィンドウ412aの間に、または結合応答410のスヌーパ404nによる受信を越えてプログラム可能な時間を拡張する後続のウィンドウ拡張412bの間に、要求されたメモリ・ブロックのコヒーレンス所有権をマスタ400へ転送することを保護する。保護ウィンドウ412aおよびウィンドウ拡張412bの間、スヌーパ404nは、所有権がマスタ400に成功裏に転送されるまで、他のマスタが所有権(例えば、Retry部分応答)を取得することを防止する同じ要求アドレスを指定する他の要求に部分応答406を提供することによって、所有権の転送を保護する。マスタ400は同様に、結合応答410の受信に続いて要求402で要求されたメモリ・ブロックのコヒーレンス所有権を保護するために、保護ウィンドウ413を開始することができる。
スヌーパ404は全て、上記のCPUおよびI/O要求を扱うためのリソースが限られているため、いくつかの異なるレベルのPrespおよび対応するCrespが可能である。例えば、要求されたメモリ・ブロックを担当するメモリ・コントローラ106内のスヌーパが、要求を扱うために利用可能な待ち行列を有する場合、スヌーパは、要求のためのLPCとして役割を果たせることを標示する部分応答に応答することができる。一方、スヌーパが、要求を扱うために利用可能な待ち行列を有しない場合、スヌーパは、それがメモリ・ブロックのためのLPCであることを標示する部分応答に応答することができるが、現行では要求をサービスすることができない。同様に、L2キャッシュ230内のスヌーパ311は、要求を扱うためにスヌープ・ロジックの利用可能なインスタンスを必要とし、L2キャッシュ・ディレクトリ406へのアクセスを必要とすることがある。これらのリソースのどちらか(または両方)へのアクセスがなければ、部分応答(および対応するCresp)は、要求されたリソースが存在しないために要求をサービスできないことをシグナリングする。
上記のように、スヌープ・ベースのコヒーレンス・プロトコルを実行するシステムでは、フラッシュ・オペレーション(例えば、DCBFおよびAMO)およびクリーン・オペレーション(例えば、DCBST)は、存在する場合には、HPC状態のターゲット・キャッシュ・ラインを含むキャッシュ階層内のフラッシュ/クリーン・オペレーションの仕上げと、最終的な成功したフラッシュ/クリーン要求を開始するフラッシュ/クリーン要求のマスタとの間の脆弱性のウィンドウにおいて、順方向進捗の問題となり得る。図5~図8を参照して以下に詳細に記載されるように、これらの順方向進行の問題は、ターゲット・キャッシュ・ラインのための保護ウィンドウを拡張するターゲット・キャッシュ・ライン(すなわちHPC)のコヒーレンス所有権を有するコヒーレンス参加部によって対処することができる。
図5を参照すると、処理ユニット104内のマスタ400(例えば、RCマシン312)が、一実施形態によるフラッシュ型またはクリーン型のメモリ・アクセス・オペレーションを実行する例示的なプロセスの高位ロジック・フローチャートが示されている。上述したように、任意の数のマスタが、それら自体のそれぞれのフラッシュ/クリーンメモリ・アクセス・オペレーションを、衝突する可能性のあるターゲット・アドレスへと同時に実行することができる。したがって、図5に示すプロセスの複数のインスタンスは、データ処理システム100内で時間的に重複して実行されてもよい。
図5のプロセスはブロック500で始まり、次いでブロック502に進み、ブロック502は、データ処理システム100のシステム・ファブリック上にメモリ・アクセス・オペレーションの要求402を発行するマスタ400を説明する。少なくともいくつかの実施形態では、L2キャッシュ230のRCマシン312などのマスタ400は、LSU202による対応する命令の実行に基づいて、関連付けられたプロセッサ・コア200からのメモリ・アクセス要求を受信することに応答して、要求402を発行する。記載された実施形態では、要求402は、概して本明細書ではフラッシュ/クリーン(FC)オペレーションと総称されるいくつかのクラスまたはタイプのオペレーションのうちの1つに属するメモリ・アクセス・オペレーションを開始する。表Iで参照されるDCBF、DCBST、およびAMOを含むこれらのFCオペレーションは、関連するシステム・メモリ108に書き戻されるターゲット・メモリ・ブロックの任意の修正済みのキャッシュされたコピーを必要とする、全ストレージ修正オペレーションである。
図4に先立つ説明において明らかにされたように、マスタ400のFC要求402は、データ処理システム100内に分散されたL2キャッシュ230およびメモリ・コントローラ106によってシステム・ファブリック上に受信される。FC要求402の受信に応答して、これらの様々なスヌーパ404は、それぞれの部分応答406を生成し、部分応答406を応答ロジック218の関連インスタンスに通信する。例示的な実施形態では、L2キャッシュ230は、以下3つのPrespのうちの1つを有するFC要求402をスヌープすることに応答する:(1)重量Retry、(2)軽量Retry、または(3)ヌル(Null)。重量Retry Prespは、そのディレクトリ308内のFC要求402のターゲット・アドレスのコヒーレンス状態に現行ではアクセスできないL2キャッシュ230によって提供される。さらに、重量Retry Prespはまた、L2キャッシュ230によって提供され、L2キャッシュ230は、ターゲット・アドレスのためのHPCとしてそのディレクトリ308内のコヒーレンス状態によって指定されるが、この時点ではFC要求402に応答できないか、またはターゲット・キャッシュ・ラインに対する要求を現在ビジー処理中である。
軽量Retry Prespは、L2キャッシュ230によって提供され、L2キャッシュ230のディレクトリ308は、アクセス可能であり、ターゲット・アドレスについてSL状態およびS状態のどちらかを標示し、(1)ターゲット・アドレスに対する別の衝突する要求を現在処理中であるか、または(2)SNマシン311をディスパッチできず、ターゲット・アドレスに対して現在アクティブであるSNマシン311がないか、または(3)FC要求402を処理するために既にSNマシン311をディスパッチしている。
L2キャッシュ230が所与のターゲット・アドレスに対する要求をアクティブ処理するSNマシン311を有する全区間について、L2キャッシュ230は、要求が最初にスヌープされた際に、ターゲット・アドレスに関連付けられたコヒーレンス状態に基づいて、重量Retry Prespまたは軽量Retry Prespを提供することが理解されるべきである。図6を参照して、ダーティ(例えば、MまたはT)HPCコヒーレンス状態でFC要求402のターゲット・アドレスを保持するL2キャッシュ230によって実行される具体的なアクションを以下に詳細に説明する。図8を参照して、共有(例えば、Te、SL、またはS)コヒーレンス状態におけるフラッシュ要求のターゲット・アドレスを保持するL2キャッシュ230によって実行されるアクションについて詳細に説明する。
FC要求(402)をスヌープすることに応答して、ターゲット・アドレス(すなわち、LPCではない)を担当しないメモリ・コントローラ106は、Presp(またはNull Presp)を提供しない。FC要求402のターゲット・アドレスのためのLPCメモリ・コントローラであるメモリ・コントローラ106は、リソースの制約に起因して、または同じアドレスを指定する別のメモリ・アクセス要求を既にサービスしているメモリ・コントローラ106に起因して、メモリ・コントローラ106がFC要求402をサービスできない場合に、Retry_LPC Prespを提供する。LPCメモリ・コントローラ106がFC要求402をサービスできる場合に、LPCメモリ・コントローラ106は、元のスヌープされたFC要求402に対して成功したCrespを受信するまで、後続のFCオペレーション(または他のオペレーション)にLPC_Retry Prespを提供することによって、FC要求402のターゲット・アドレスを保護する。
再び図5を参照すると、プロセスは、ブロック502からブロック504~506に進み、ブロック504~506は、応答ロジック218からの対応のCresp410の受信を待機しているブロック502で発行されたFCオペレーションの要求402のマスタ400を説明する。少なくとも一実施形態では、応答ロジック218は、下記の表IIIに示されるスヌーパ404の受信したPrespに基づいて、FCオペレーションに対するCresp410を生成することができる。少なくともいくつかの実施形態では、DCBST要求は(表IIIの行1、2、および4に示すように)軽量Retry Prespを受信しないが、なぜなら、DCBST要求が、SL状態およびS状態のどちらかにおいてターゲット・キャッシュ・ラインを保持するキャッシュによって無視されるためであることを留意すべきである。
Figure 2023504622000004
Cresp410の受信に応答して、マスタ400は、Cresp410がRetryを標示するか否かを、表IIIの最初の3行に示すように決定する(ブロック504)。そうであれば、プロセスは、ブロック502に戻り、ブロック502は、システム・ファブリック上のFCオペレーションの要求402を再発行するマスタ400を示す。マスタ400がブロック504で要求402のCresp410がRetryではないと判断した場合、表IIIの実施形態では、コヒーレンス結果は、Success_with_cleanup(Success_CU)(表IIIの第4行)またはSuccess(表IIIの第5行)のどちらかである。Cresp410がSuccessである場合(ブロック506で否定的な決定によって標示されるように)、フラッシュ・オペレーションまたはクリーン・オペレーションは成功裡に完了し、図5のプロセスは520で終了する。
しかし、Cresp410がSuccess_CUを標示する場合、マスタ400は保護ウィンドウ413を開き、任意の衝突するスヌープされた要求に重量Retryを受信させることによってターゲット・アドレスの保護を開始する(ブロック508)。さらに、マスタ400は、システム・ファブリック上にクリーンアップ・コマンドを発行して、HPCキャッシュに常駐するターゲット・メモリ・ブロックの修正済みのキャッシュされたコピーをシステム・メモリ108に書き戻す(ブロック510)。要求402のタイプに応じて、クリーンアップ・コマンドは、表IIに含まれるBKおよびBK_Flushコマンドと同様に、無効化されるべきターゲット・メモリ・ブロックの任意の他のキャッシュされた1つまたは複数のコピーを追加的に生じることができる。ブロック510に続いて、図5のプロセスは、クリーンアップ・コマンドのCresp410がSuccessを標示するか否かの決定を示すブロック512に進む。そうでなければ、プロセスはブロック510に戻り、ブロック510は、クリーンアップ・コマンドを再発行するマスタ400を表す。ブロック510で発行されたクリーンアップ・コマンドに対してSuccessを標示するCresp410が受信されると、マスタ400は、保護ウィンドウ413を閉じてターゲット・アドレスに対する保護を終了する(ブロック514)。その後、図5のプロセスはブロック520で終了する。
図6を参照すると、例示的なプロセスの高位ロジック・フローチャートがあり、このプロセスによって、HPCキャッシュは、一実施形態によるFCメモリ・アクセス・オペレーションのスヌープされた要求を扱う。より深い理解を促すために、図6のフローチャートは、図7のタイミング図700に関連して記載される。
図6に図示されたプロセスは、ブロック600で始まり、次いでブロック602に進み、ブロック602は、ローカル相互接続114からのFCメモリ・アクセス・オペレーションの要求をスヌープするダーティなHPCコヒーレンス状態(例えば、MまたはTコヒーレンス状態)におけるFCメモリ・アクセス・オペレーションのターゲット・キャッシュ・ラインを保持するL2キャッシュ・メモリ230を例示する。FCメモリ・アクセス・オペレーションは、例えば、前述したようなDCBF、DCBST、またはAMOオペレーション、またはシステム・メモリ108に書き戻される修正済みのキャッシュされたデータを必要とする任意の他のストレージ修正FCオペレーションであってもよい。FCメモリ・アクセス・オペレーションの要求をスヌープすることに応答して、L2キャッシュ・メモリ230は、FCメモリ・アクセス・オペレーションをサービスするSNマシン311を割り当て、その要求により指定されたターゲット実アドレスをSNマシン311が保護し始めるようにSNマシン311をビジー状態に設定する。図7は、参照符号702で、アイドル状態からビジー状態へのFCメモリ・アクセス・オペレーションの要求をサービスするために割り当てられたSNマシン311の遷移を説明する。さらに、ターゲット・キャッシュ・ラインからの修正済みデータがまだシステム・メモリ108に書き込まれていないため、L2キャッシュ・メモリ230は、FCメモリ・アクセス・オペレーションの要求に対し重量Retry Prespを提供する。
SNマシン311がビジー状態にある間に、SNマシン311は、スヌープされた要求に対し通常の処理を行う(ブロック(604)。この通常の処理は、システム・ファブリックを介して関連のシステム・メモリ108にターゲット・キャッシュ・ラインの修正済みデータを書き戻すことと、システム・メモリ108の更新が完了した際に、FC要求402により必要に応じてローカル・ディレクトリ308内のターゲット・キャッシュ・ラインを無効化することとを含む。また、ブロック604にさらに説明されるように、SNマシン311がビジー状態にある間に、L2キャッシュ230は、図7の参照符号704に示すように、ターゲット・キャッシュ・ラインへのアクセスを要求するスヌープされた要求に対して、重量Retryの部分応答を提供する。重量Retryの部分応答は、応答ロジック218の関連のインスタンスが、衝突する要求のマスタにその要求を再発行させるRetry Cresp410を形成するようにする。
いくつかの実施形態では、FCメモリ・アクセス・オペレーションの要求に割り当てられたSNマシン311は、FCメモリ・アクセス・オペレーションの要求のスヌーピングに基づいて、REF(レフェリー)モード・インジケータを(図6のブロック608および図7の参照符号706に示すように)自動的に設定する。図6のオプション・ブロック606によって表される他の実施形態では、SNマシン311がFCメモリ・アクセス・オペレーションの要求でビジーである間、SNマシン311は、非FCオペレーションの衝突する要求がL2キャッシュ230によってスヌープされた場合にのみ、ブロック608でREFモード・インジケータを条件付きで設定する。ブロック608に続いて、またはオプション・ブロック606が実装される場合に、スヌープされている衝突する非FC要求がないことが決定された後、ブロック610では、SNマシン311によるスヌープされたFC要求の処理が完了したか否かが判定される。そうでなければ、図6のプロセスは、記載されているブロック604に戻る。しかし、図7の参照符号708に図示されるように、SNマシン311によるスヌープされたFC要求の処理が完了したと判定された場合、図6のプロセスは、ブロック610からブロック612に進む。
ブロック612では、FCオペレーションの処理を完了した後、REFモード・インジケータが設定されているか否かをSNマシン311が判定することが示されている。そうでなければ、SNマシン311は、ブロック614では図6におよび参照符号710では図7に図示されるように、アイドル状態に戻る。ブロック614に続いて、図6のプロセスはブロック616で終了する。ブロック612に戻ると、REFモード・インジケータが設定されたことをSNマシン311が決定した場合に、SNマシン311は、FCオペレーションの要求の処理が完了するとアイドル状態に戻らないが、代わりに、図6のブロック620および図7の参照番号712に示されるように、ターゲット・キャッシュ・ラインの保護を拡張するREF(レフェリー)モードに入る。REFモードに入ることに関連して、SNマシン311は、一実施形態では、REFモード・タイマも開始する。
ブロック620に続いて、SNマシン311の処理は処理ループに入り、この処理ループでは、SNマシン311は、ブロック640および642にそれぞれ図示されているように、REFモード・タイマの満了と、FCクラスのオペレーションのREFモード終了要求の受信との最初の発生を監視する。この処理ループの間、SNマシン311は、図6のブロック622および図7の参照符号714に示されるように、スヌープされたFC要求と同じキャッシュ・ラインをターゲットとする任意の衝突する非FCオペレーションについてシステム・ファブリック上で監視する。任意のこのような衝突する非FC要求を検出することに応答して、SNマシン311は、図6のブロック624に示されるように、衝突する非FC要求に対して、重量Retry Prespを提供する。この重量Retry Prespは、応答ロジック218の関連インスタンスに、図5の表IIIおよびブロック504を参照して上述したようにRetry Crespを発行させる。その後、プロセスは、以下に記載されるブロック640に移る。
処理ループにある間に、SNマシン311はまた、図6のブロック630および図7の参照符号716に示されるように、より早くスヌープされたFC要求と同じキャッシュ・ラインをターゲットとする任意の衝突するFCオペレーションについてシステム・ファブリック上で監視する。任意のこのような衝突するFC要求を検出することに応答して、SNマシン311は、図6のブロック632で示されるように、衝突するFC要求に対して軽量Retryの部分応答を提供する。この軽量Retryの部分応答は、応答ロジック218の関連インスタンスに、例えば、関連するメモリ・コントローラ106によって提供された部分応答によって含意される命令に基づいて、複数の衝突する時間的に重複するFC要求のうちどれが更新システム・メモリ108に最初に選択されるかを決定させる。ブロック632に続いて、またはブロック622および630の両方で否定的な決定に応答して、図6のプロセスはブロック640に進む。
ブロック640は、REFモードのタイムアウトが発生した場合に、SNマシン311がREFモード・タイマを参照することにより決定することを示す。様々な実施形態では、タイムアウトは、静的な所定のタイマ値で、あるいは、例えば、REFモード中に受信された衝突するFCもしくは非FCまたはその両方のオペレーションの数に基づいて決定される動的な値で起こり得る。REFモードがタイムアウトしたことをブロック640で決定することに応答して、プロセスはブロック650に進み、このブロック650は、図7の参照符号718で図示されるように、REFモードを出ているSNマシン311を示している。そのため、SNマシン311は、ターゲット・キャッシュ・ラインの保護を終了し、アイドル状態に戻る(図6のブロック614および図7の参照符号720)。その後、図6のプロセスはブロック616で終了する。
しかし、SNマシン311は、REFモードがタイムアウトしていないとブロック640で判断した場合に、図7の参照符号722に図示されるように、システム・ファブリック上で、FCクラスのオペレーションの終了要求(例えば、CLEAN_ACK、BK、BK_FLUSH)が受信されているか否かをブロック642で決定する。終了要求は、様々な実施形態もしくは異なるタイプのFCメモリ・アクセス要求またはその両方に対して異なるが、元のFC要求がターゲット・メモリ・ブロックに対するメモリ・コントローラ106による処理に対し選択されることに成功したことの標示を提供する。SNマシン311がブロック642でFCオペレーションの終了要求を検出した場合に、図6のプロセスは、次いで、ブロック650および以下のブロックを通過する。しかし、SNマシン311がシステム・ファブリック上のFCクラスのオペレーションの終了要求を検出しない場合に、プロセスは、ブロック642から記載のブロック622に戻る。
図6は、HPCスヌーパが一時的にREFモードに入る技術を開示しており、このREFモードでは、HPCスヌーパがメモリ・ブロックに対しコヒーレンス保護を拡張し、メモリ・ブロックは、HPCスヌーパによって実行されるフラッシュ/クリーン活動の終了とLPCでの処理の要求の受け入れとの間の間隔におけるFCメモリ・アクセス・オペレーションの要求のターゲットであることを、当業者は理解するものとなる。ターゲット・キャッシュ・ラインのこの拡張された保護は、FCメモリ・アクセス・オペレーションが成功することが保証されるまで、ターゲット・キャッシュ・ラインに対して形成される他のHPCがないことを保証する。
図8を参照すると、スヌープされたフラッシュ型の要求(例えば、DCBFまたはAMO)のターゲット・キャッシュの非HPCの共有コピーを保持するキャッシュが、一実施形態による要求を扱う例示的なプロセスの高位ロジック・フローチャートが図示されている。クリーンな要求は、クリーンな(例えば、DCBSTの)要求のターゲット・キャッシュの共有コピーを保持するキャッシュによって無視されることに留意するべきである。
図8のプロセスは、ブロック800で始まり、L2キャッシュ230を説明するブロック802に進み、L2キャッシュ230は、フラッシュ型オペレーション(例えば、DCBFまたはAMO)または関連付けられたクリーンアップ・コマンド(例えば、BKまたはBK_フラッシュ)の最初の要求をスヌープするフラッシュ型要求のターゲット・キャッシュ・ラインを保持する。最初の要求またはクリーンアップ・コマンドをスヌープすることに応答して、L2キャッシュ230は、軽量Retry応答を提供する。さらに、最初の要求に応答して、L2キャッシュ230は、最初の要求を扱うようにSNマシン311を割り当てる。割り当てられたSNマシン311は、アイドル状態からビジー状態に遷移し、ターゲット・キャッシュ・ラインを保護し始める。
ブロック804において、ブロック802でスヌープされた要求を扱うために割り当てられたSNマシン311は、ローカル・ディレクトリ308内のターゲット・キャッシュ・ラインを無効化することによって、最初の要求またはクリーンアップ・コマンドに対する通常処理を実行する。ブロック804でさらに示されるように、SNマシン311がビジー状態にある間、L2キャッシュ230は、ターゲット・キャッシュ・ラインへのアクセスを要求する任意のスヌープされた要求に対して、軽量な軽量Retryの部分応答を提供する。ブロック806では、SNマシン311によるスヌープされた要求の処理が完了したか否かを判定する。そうでなければ、図8のプロセスは、記載されているブロック804に戻る。しかし、SNマシン311によるスヌープされた要求の処理が完了したことが判定されると、SNマシン311はアイドル状態に戻り(ブロック808)、図8のプロセスはブロック810で終了する。
図9を参照すると、例えば、半導体ICロジック設計、シミュレーション、テスト、レイアウト、および製造において使用される例示的な設計フロー900のブロック図が示されている。設計フロー900は、設計構造またはデバイスを処理して、上記のおよび図1~図3に示される設計構造もしくはデバイスまたはその両方の論理的またはその他の機能的に等価な表現を生成するためのプロセス、機械、もしくは機構、またはそれらの組合せを含む。設計フロー900によって処理されるかもしくは生成されるかまたはその両方の設計構造は、機械可読伝送または記憶媒体上で符号化されて、データもしくは命令またはその両方を含むことができ、このデータもしくは命令またはその両方は、データ処理システム上で実行またはその他処理されると、ハードウェア・コンポーネント、回路、デバイス、またはシステムの論理的、構造的、機械的、またはその他の機能的に等価な表現を生成する。機械としては、以下に限定されないが、回路、コンポーネント、デバイス、またはシステムの設計、製造、またはシミュレーションなど、IC設計プロセスで使用される任意の機械が挙げられる。例えば、機械としては、マスクを生成するためのリソグラフィ機(例えば、電子線描画装置)、機械、および/もしくは器具、設計構造をシミュレートするためのコンピュータまたは装置、製造もしくは試験プロセスで使用される任意の装置、または設計構造の機能的に等価な表現を任意の媒体にプログラミングするための任意の機械(例えば、プログラム可能なゲート・アレイをプログラムするための機械)を挙げることができる。
設計フロー900は、設計されている表現のタイプに応じて変化し得る。例えば、アプリケーション固有IC(ASIC)を構築するための設計フロー900は、標準コンポーネントを設計するための設計フロー900と異なっていてもよいし、または設計をプログラム可能なアレイ、例えば、変更可能なゲート・アレイ(PGA)もしくはAltera(登録商標)社またはXilinx(登録商標)社によって提供されるプログラム可能な ゲート・アレイ(FPGA)にインスタンス化するための設計フロー900と異なっていてもよい。
図9は、好ましくは設計プロセス900によって処理される入力設計構造920を含む複数のそのような設計構造を説明する。設計構造920は、設計プロセス900によって生成され処理されてハードウェア・デバイスの論理的に等価な機能表現を生じる、論理的シミュレーション設計構造である。設計構造920はさらに、あるいは代替的に、設計プロセス900によって処理される際に、ハードウェア・デバイスの物理的構造の機能的表現を生成するデータもしくはプログラム命令またはその両方を含んでもよい。機能的なもしくは構造的なまたはその両方の設計の特徴を表すか否かに関わらず、電子計算機支援設計(ECAD)を使用して生成されてもよく、ECADは、例えばコア開発者/設計者によって実装されている。機械可読データ伝送、ゲート・アレイ、または記憶媒体上で符号化される際に、設計構造920は、設計プロセス900内の1つまたは複数のハードウェアもしくはソフトウェアまたはその両方のモジュールによってアクセスされ処理されて、図1~3に示されるものなどの電子コンポーネント、回路、電子または論理モジュール、装置、デバイス、またはシステムをシミュレートまたはその他機能的に表現することができる。このように、設計構造920は、設計またはシミュレーション・データ処理システムによって処理される際に機能的にシミュレートするかまたはその他回路もしくは他のレベルのハードウェアロジック設計を表現する、人間もしくは機械またはその両方の可読ソースコード、コンパイルされた構造、およびコンピュータ実行可能コード構造を含むファイルまたは他のデータ構造を含むことができる。このようなデータ構造は、ハードウェア記述言語(HDL)設計エンティティ、またはVerilogやVHDLなどの下位HDL設計言語に適合するかもしくは互換性があるかまたはその両方である他のデータ構造、もしくはCやC++などのより高位の設計言語、またはその両方を含んでいてもよい。
設計プロセス900は、設計構造920などの設計構造を含み得るネットリスト980を生成するように、図1~3に示されたコンポーネント、回路、デバイス、またはロジック構造の設計/シミュレーションの機能的な等価物を合成、翻訳、または他処理するためのハードウェアもしくはソフトウェアまたはその両方のモジュールを採用し、組み込むことが好ましい。ネットリスト980は、例えば、集積回路設計における他の要素および回路への接続を記述する、ワイヤ、離散コンポーネント、ロジック・ゲート、制御回路、I/Oデバイス、モデルなどのリストを表すコンパイルされたかまたはその他処理されたデータ構造を含むことができる。ネットリスト980は、デバイスの設計仕様およびパラメータに応じて、ネットリスト980を1回または複数回再合成する反復プロセスを用いて合成することができる。本明細書に記載される他の設計構造タイプと同様に、ネットリスト980は、機械可読記憶媒体に記録されるか、またはプログラム可能なゲート・アレイにプログラムされてもよい。媒体は、磁気または光ディスク・ドライブ、プログラム可能なゲート・アレイ、コンパクト・フラッシュ、または他のフラッシュ・メモリなどの不揮発性記憶媒体であってもよい。さらに、または代替的に、媒体は、システムもしくはキャッシュ・メモリ、またはバッファ・スペースであってもよい。
設計プロセス900は、ネットリスト980を含む種々の入力データ構造タイプを処理するためのハードウェアおよびソフトウェア・モジュールを含むことがある。このようなデータ構造タイプは、例えば、ライブラリ要素930内に常駐し、所与の製造技術(例えば、異なる技術ノード、32nm、45nm、90nmなど)のための、モデル、レイアウト、および記号表現を含む、共通に使用される要素、回路、およびデバイスのセットを含むことができる。データ構造タイプは、設計仕様940と、特性化データ950と、検証データ960と、設計ルール970と、入力テストパターン、出力テスト結果、および他のテスト情報を含むことができるテスト・データ・ファイル985とをさらに含むことができる。設計プロセス900は、例えば、応力解析、熱分析、機械的事象シミュレーション、鋳造、成形、およびダイプレス成形などのオペレーションのためのプロセス・シミュレーションなど、標準的な機械的設計プロセスをさらに含むことがある。機械的設計の当業者は、本発明の範囲から逸脱することなく、設計プロセス900で使用される可能な機械的設計ツールおよびアプリケーションの範囲を理解することができる。設計プロセス900はまた、タイミング解析、検証、設計ルールチェック、場所およびルートのオペレーションなど、標準的な回路設計プロセスを実行するためのモジュールを含んでもよい。
設計プロセス900は、HDLコンパイラおよびシミュレーション・モデル構築ツールなどのロジックおよび物理的設計ツールを採用して組み込み、任意の追加の機械的設計またはデータ(適用可能であれば)と共に、設計構造920を、図示された支持データ構造のいくつかまたは全てと合わせて処理し、第2の設計構造990を生成する。設計構造990は、機械的デバイスおよび構造のデータ(例えば、IGES、DXF、Parasolid XT、JT、DRG、またはそのような機械的設計構造を格納またはレンダリングするための任意の他の適切なフォーマットで格納される情報)を交換するために用いられるデータ・フォーマットで、記憶媒体またはプログラム可能なゲート・アレイ上に常駐する。設計構造920と同様に、好ましくは、設計構造990は、1つまたは複数のファイル、データ構造、または他のコンピュータ符号化されたデータもしくは命令を含み、これらは、伝送媒体またはデータ記憶媒体上に常駐し、ECADシステムによって処理される際には、図1~3に示す本発明の1つまたは複数の実施形態の論理的またはその他機能的に等価な形態を生成する。一実施形態では、設計構造990は、図1~3に示されるデバイスを機能的にシミュレートするコンパイルされた実行可能なHDLシミュレーション・モデルを含むことがある。
設計構造990はまた、集積回路もしくは記号データ・フォーマット(例えば、GDSII(GDS2)、GL1、OASIS、マップ・ファイル、もしくはこのような設計データ構造を格納するための任意の他の適切なフォーマットに記憶された情報)またはその両方の交換に使用されるデータ・フォーマットを採用してもよい。設計構造990は、例えば、記号データ、マップ・ファイル、テスト・データ・ファイル、設計内容ファイル、製造データ、レイアウト・パラメータ、ワイヤ、配線のレベル、ビア、形状、製造ラインを通る経路指定のためのデータ、ならびに上記および図1~図3に示されるようなデバイスまたは構造を生じるために製造業者または他の設計者/開発者が必要とする任意の他のデータを含むことがある。次いで、設計構造990は段階995に進み得るが、そこでは例えば、設計構造990は、テープアウトに進み、製造に開放され、マスク・ハウスに開放され、別の設計ハウスに送られ、顧客に送り戻されるなどする。
以上記載されたように、少なくとも1つの実施形態では、キャッシュ・メモリは、データ・アレイと、コヒーレンス状態情報を指定するデータ・アレイの内容のディレクトリと、データ・アレイおよびディレクトリを参照してシステム・ファブリックからスヌープされたオペレーションを処理するスヌープ・ロジックとを含む。スヌープ・ロジックは、ターゲット・アドレスを指定する複数のプロセッサ・コアのうちの1つのFCメモリ・アクセス・オペレーションの要求をシステム・ファブリック上にスヌープすること応答して、その要求をサービスし、その後レフェリー・モードに入る。レフェリー・モードにある間に、スヌープ・ロジックは、システム・メモリのメモリ・コントローラが処理の要求を選択するように、複数のプロセッサ・コアによる衝突するメモリ・アクセス要求に対し、ターゲット・アドレスにより識別されるメモリ・ブロックを保護する。
様々な実施形態が具体的に示されて説明されてきたが、添付の特許請求の範囲の範囲から逸脱することなく、形態および詳細の様々な変更を行うことができ、これらの代替的な実装はすべて、添付の特許請求の範囲の範囲内に入ることが理解されよう。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施形態のアーキテクチャ、機能性、およびオペレーションを説明する。この点に関して、フローチャートまたはブロック図の各ブロックは、指定されたロジック機能を実装するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことがある。いくつかの代替的な実施形態では、ブロックに記載された機能は、図に記載された順序の外に生じ得る。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよいし、またはブロックが、関与する機能性に応じて、逆の順序で実行されてもよい。また、ブロック図もしくはフローチャート図またはその両方の各ブロック、ならびにブロック図もしくはフローチャート図またはその両方におけるブロックの組合せは、指定された機能もしくはオペレーションを実行するか、または専用ハードウェアとコンピュータ命令との組合せを実施する、専用ハードウェアベースのシステムによって実装できることに留意されたい。
本発明の機能を指示するプログラム・コードを実行するコンピュータ・システムに関して態様を説明してきたが、本発明は、記載された機能をデータ処理システムに実行させるようにデータ処理システムのプロセッサによって処理することができるプログラム・コードを格納する、コンピュータ可読ストレージ・デバイスを含むプログラム製品として実現されてもよいことが理解されるべきである。コンピュータ可読ストレージ・デバイスは、揮発性メモリまたは不揮発性メモリ、光学ディスクまたは磁気ディスクなどを含むことができるが、伝播信号自体、伝送媒体自体、およびエネルギー形態自体などの非法定の主題を排除する。
一例として、プログラム製品は、データ処理システム上で実行またはその他処理される際に本明細書に開示のハードウェア・コンポーネント、回路、デバイス、またはシステムの論理的、構造的、またはその他機能的に等価な表現(シミュレーションモデルを含む)を生成する、データもしくは命令またはその両方を含んでいてもよい。このようなデータもしくは命令またはその両方は、VerilogやVHDLなどの下位のHDL設計言語、もしくはCやC++などの高位の設計言語、またはその両方に適合するかもしくは互換性があるかまたはその両方である、ハードウェア記述言語(HDL)設計エンティティまたは他のデータ構造を含むことができる。さらに、データもしくは命令またはその両方は、集積回路のレイアウト・データもしくは記号データ・フォーマットまたはその両方(例えば、GDSII(GDS2)、GL1、OASIS、マップ・ファイル、またはそのような設計データ構造を格納するための任意の他の適切なフォーマットに格納されている情報)の交換に使用されるデータ・フォーマットを採用してもよい。

Claims (20)

  1. マルチプロセッサ・データ処理システムにおける複数のプロセッサ・コアのうちの関連付けられたプロセッサ・コアのキャッシュ・メモリであって、前記マルチプロセッサ・データ処理システムは、前記キャッシュ・メモリとシステム・メモリのメモリ・コントローラとを通信可能に結合してシステム・ファブリック上のオペレーションを受信する前記システム・ファブリックを含み、前記キャッシュ・メモリは、
    データ・アレイと、
    前記データ・アレイの内容のディレクトリであって、コヒーレンス状態情報を含むディレクトリと、
    前記データ・アレイおよび前記ディレクトリを参照して前記システム・ファブリックからスヌープされたオペレーションを処理するスヌープ・ロジックとを含み、
    前記スヌープ・ロジックは、ターゲット・アドレスを指定する前記複数のプロセッサ・コアのうちの1つのフラッシュまたはクリーン・メモリ・アクセス・オペレーションの要求を前記システム・ファブリック上でスヌープすることに応答して、前記要求をサービスし、その後、レフェリー・モードに入り、前記スヌープ・ロジックは、前記レフェリー・モードにある間に、前記複数のプロセッサ・コアによる衝突するメモリ・アクセス要求に対して前記ターゲット・アドレスによって識別されるメモリ・ブロックを保護し、それゆえに、前記メモリ・ブロックのコヒーレンス所有権を引き受けることが許容される他のコヒーレンス参加部はない、キャッシュ・メモリ。
  2. 前記フラッシュまたはクリーン・メモリ・アクセス・オペレーションの要求が第1の要求であり、
    前記スヌープ・ロジックは、前記第1の要求をスヌープした後に、および前記スヌープ・ロジックが前記第1の要求の処理を完了する前に、衝突する第2の要求をスヌープすることに基づいて、前記レフェリー・モードに入るように構成されている、
    請求項1に記載のキャッシュ・メモリ。
  3. 前記スヌープ・ロジックは、前記衝突するメモリ・アクセス要求に対してRetryコヒーレンス応答を発行することによって、衝突するメモリ・アクセス要求に対し前記メモリ・ブロックを保護するように構成されている、請求項1に記載のキャッシュ・メモリ。

  4. 前記スヌープ・ロジックは、前記レフェリー・モードにある間に、衝突するフラッシュ要求またはクリーン要求に対する第1のコヒーレンス応答を提供し、他のタイプの衝突する要求に対して異なる第2のコヒーレンス応答を提供するように構成されている、
    請求項1に記載のキャッシュ・メモリ。
  5. 前記スヌープ・ロジックは、前記レフェリー・モードにある間に、タイムアウト状態を検出し、前記タイムアウト状態を検出することに応答して、前記レフェリー・モードを出る、請求項1に記載のキャッシュ・メモリ。
  6. 前記スヌープ・ロジックは、前記レフェリー・モードにある間に、終了要求を前記システム・ファブリック上でスヌープすることに応答して、前記レフェリー・モードを出る、請求項1に記載のキャッシュ・メモリ。
  7. 前記キャッシュ・メモリは、前記ターゲット・アドレスに関連付けられた修正済みのキャッシュ・ラインのコヒーレンス所有権を標示する前記ディレクトリ内の前記コヒーレンス状態情報に基づいて、前記レフェリー・モードのみに入る、請求項1に記載のキャッシュ・メモリ。
  8. 請求項1~7のいずれか1項に記載のキャッシュ・メモリと、
    前記キャッシュ・メモリに結合された少なくとも1つの提携されたプロセッサ・コアと
    を含む処理ユニット。
  9. システム・ファブリックと、
    前記システム・ファブリックに結合されている請求項8に記載の複数の処理ユニットと
    を含むデータ処理システム。
  10. マルチプロセッサ・データ処理システムにおけるデータ処理の方法であって、前記マルチプロセッサ・データ処理システムにおける複数のプロセッサ・コアのうちの関連付けられたプロセッサ・コアのキャッシュ・メモリを含み、前記マルチプロセッサ・データ処理システムは、前記キャッシュ・メモリとシステム・メモリのメモリ・コントローラとを通信可能に結合してシステム・ファブリック上のオペレーションを受信する前記システム・ファブリックを含み、前記方法は、
    前記キャッシュ・メモリが、ターゲット・アドレスを指定する前記複数のプロセッサ・コアのうちの1つのフラッシュまたはクリーン・メモリ・アクセス・オペレーションの要求をシステム・ファブリック上でスヌープすること、
    前記要求をスヌープすることに基づいて、前記キャッシュ・メモリが、前記要求をサービスし、その後レフェリー・モードに入ること、ならびに
    前記レフェリー・モードにある間に、前記キャッシュ・メモリは、前記複数のプロセッサ・コアによる衝突するメモリ・アクセス要求に対してターゲット・アドレスによって識別されるメモリ・ブロックを保護し、それゆえに、前記メモリ・ブロックのコヒーレンス所有権を引き受けることが許容される他のコヒーレンス参加部がないこと
    を含む方法。
  11. 前記フラッシュまたはクリーン・メモリ・アクセス・オペレーションの要求が第1の要求であり、
    前記レフェリー・モードに入ることは、前記第1の要求をスヌープした後に、および前記スヌープ・ロジックが前記第1の要求の処理を完了する前に、衝突する第2の要求をスヌープすることに基づいて、前記レフェリー・モードに入ることを含む、
    請求項10に記載の方法。
  12. 前記保護することは、衝突するメモリ・アクセス要求に対してRetryコヒーレンス応答を発行することによって、前記衝突するメモリ・アクセス要求に対し前記メモリ・ブロックを保護することを含む、請求項10に記載の方法。
  13. 前記保護することは、前記キャッシュ・メモリが、前記レフェリー・モードにある間に、衝突するフラッシュ要求またはクリーン要求に対する第1のコヒーレンス応答を提供し、他のタイプの衝突する要求に対して異なる第2のコヒーレンス応答を提供することを含む、請求項10に記載の方法。
  14. 前記キャッシュ・メモリが、前記レフェリー・モードにある間に、タイムアウト状態を検出し、前記タイムアウト状態を検出することに応答して、前記レフェリー・モードを出ることをさらに含む、請求項10に記載の方法。
  15. 前記キャッシュ・メモリが、前記レフェリー・モードにある間に、終了要求を前記システム・ファブリック上でスヌープすることに応答して、前記レフェリー・モードを出ることをさらに含む、請求項10に記載の方法。
  16. 前記レフェリー・モードに入ることは、前記キャッシュ・メモリが、前記ターゲット・アドレスに関連付けられた修正済みのキャッシュ・ラインのコヒーレンス所有権を標示する前記ディレクトリ内の前記コヒーレンス状態情報に基づいて、前記レフェリー・モードのみに入ることを含む、請求項10に記載の方法。
  17. 集積回路の設計、製造、または試験のために機械可読ストレージ・デバイスに有形に具体化された設計構造であって、前記設計構造は、
    プロセッサ・コア
    を含む処理ユニットと、
    データ・アレイ
    を含むキャッシュ・メモリと、
    前記データ・アレイの内容のディレクトリであって、コヒーレンス状態情報を含むディレクトリと、
    前記データ・アレイおよび前記ディレクトリを参照してマルチプロセッサ・データ処理システムのシステム・ファブリックからスヌープされたオペレーションを処理するスヌープ・ロジックとを含み、
    前記スヌープ・ロジックは、ターゲット・アドレスを指定する複数のプロセッサ・コアのうちの1つのフラッシュまたはクリーン・メモリ・アクセス・オペレーションの要求を前記システム・ファブリック上でスヌープすることに応答して、前記要求をサービスし、その後、レフェリー・モードに入り、前記スヌープ・ロジックは、前記レフェリー・モードにある間に、前記複数のプロセッサ・コアによる衝突するメモリ・アクセス要求に対して前記ターゲット・アドレスによって識別されるメモリ・ブロックを保護し、それゆえに、システム・メモリのメモリ・コントローラは、前記処理の要求を選択する、設計構造。
  18. 前記フラッシュまたはクリーン・メモリ・アクセス・オペレーションの要求が第1の要求であり、
    前記スヌープ・ロジックは、前記第1の要求をスヌープした後に、および前記スヌープ・ロジックが前記第1の要求の処理を完了する前に、衝突する第2の要求をスヌープすることに基づいて、前記レフェリー・モードに入るように構成されている、
    請求項17に記載の設計構造。
  19. 前記スヌープ・ロジックは、衝突するメモリ・アクセス要求に対してRetryコヒーレンス応答を発行することによって、衝突するメモリ・アクセス要求に対し前記メモリ・ブロックを保護するように構成されている、請求項17に記載の設計構造。
  20. 前記スヌープ・ロジックは、前記レフェリー・モードにある間に、衝突するフラッシュ要求またはクリーン要求に対する第1のコヒーレンス応答を提供し、他のタイプの衝突する要求に対して異なる第2のコヒーレンス応答を提供するように構成されている、
    請求項17に記載の設計構造。
JP2022532740A 2019-12-03 2020-11-25 ある要求に対してコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード Pending JP2023504622A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/701,833 US10970215B1 (en) 2019-12-03 2019-12-03 Cache snooping mode extending coherence protection for certain requests
US16/701,833 2019-12-03
PCT/IB2020/061140 WO2021111255A1 (en) 2019-12-03 2020-11-25 Cache snooping mode extending coherence protection for certain requests

Publications (1)

Publication Number Publication Date
JP2023504622A true JP2023504622A (ja) 2023-02-06

Family

ID=75275353

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022532740A Pending JP2023504622A (ja) 2019-12-03 2020-11-25 ある要求に対してコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード

Country Status (6)

Country Link
US (1) US10970215B1 (ja)
JP (1) JP2023504622A (ja)
CN (1) CN114761932A (ja)
DE (1) DE112020005147B4 (ja)
GB (1) GB2603447B (ja)
WO (1) WO2021111255A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11157409B2 (en) * 2019-12-17 2021-10-26 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
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 (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4814981A (en) 1986-09-18 1989-03-21 Digital Equipment Corporation Cache invalidate protocol for digital data processing system
US5682516A (en) 1994-03-01 1997-10-28 Intel Corporation Computer system that maintains system wide cache coherency during deferred communication transactions
US6178484B1 (en) 1998-02-17 2001-01-23 International Business Machines Corporation DCBST with ICBI mechanism to maintain coherency of bifurcated data and instruction caches
US6557084B2 (en) 1999-07-13 2003-04-29 International Business Machines Corporation Apparatus and method to improve performance of reads from and writes to shared memory locations
US7000078B1 (en) 1999-10-01 2006-02-14 Stmicroelectronics Ltd. System and method for maintaining cache coherency in a shared memory system
US8635410B1 (en) * 2000-07-20 2014-01-21 Silicon Graphics International, Corp. System and method for removing data from processor caches in a distributed multi-processor computer system
US6633959B2 (en) 2001-06-21 2003-10-14 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides notification of remote deallocation of shared data
US7194587B2 (en) 2003-04-24 2007-03-20 International Business Machines Corp. Localized cache block flush instruction
US7389388B2 (en) 2005-02-10 2008-06-17 International Business Machines Corporation Data processing system and method for efficient communication utilizing an in coherency state
US7543116B2 (en) 2006-01-30 2009-06-02 International Business Machines Corporation Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains
US8219763B2 (en) 2006-03-16 2012-07-10 International Business Machines Corporation Structure for performing cacheline polling utilizing a store and reserve instruction
US8504777B2 (en) 2010-09-21 2013-08-06 Freescale Semiconductor, Inc. Data processor for processing decorated instructions with cache bypass
US8966457B2 (en) 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
US8793442B2 (en) 2012-02-08 2014-07-29 International Business Machines Corporation Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US8799588B2 (en) 2012-02-08 2014-08-05 International Business Machines Corporation Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US8856455B2 (en) 2012-03-28 2014-10-07 International Business Machines Corporation Data cache block deallocate requests
US9129071B2 (en) 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
US9135175B2 (en) * 2012-12-21 2015-09-15 Oracle International Corporation Distributed cache coherency directory with failure redundancy
US8990513B2 (en) 2013-01-11 2015-03-24 International Business Machines Corporation Accelerated recovery for snooped addresses in a coherent attached processor proxy
US9208091B2 (en) 2013-06-19 2015-12-08 Globalfoundries Inc. Coherent attached processor proxy having hybrid directory
US9298626B2 (en) 2013-09-26 2016-03-29 Globalfoundries Inc. Managing high-conflict cache lines in transactional memory computing environments
US10078589B2 (en) 2015-04-30 2018-09-18 Arm Limited Enforcing data protection in an interconnect
US20180143903A1 (en) * 2016-11-22 2018-05-24 Mediatek Inc. Hardware assisted cache flushing mechanism
US10592424B2 (en) * 2017-07-14 2020-03-17 Arm Limited Range-based memory system

Also Published As

Publication number Publication date
WO2021111255A1 (en) 2021-06-10
GB202208451D0 (ja) 2022-07-27
GB2603447A (en) 2022-08-03
DE112020005147T5 (de) 2022-07-14
DE112020005147B4 (de) 2023-10-12
GB2603447B (en) 2022-11-16
CN114761932A (zh) 2022-07-15
US10970215B1 (en) 2021-04-06

Similar Documents

Publication Publication Date Title
CN108885583B (zh) 高速缓存存储器访问
US9547597B2 (en) Selection of post-request action based on combined response and input from the request source
US8095733B2 (en) Virtual barrier synchronization cache castout election
US9208091B2 (en) Coherent attached processor proxy having hybrid directory
EP4066119B1 (en) Cache snooping mode extending coherence protection for certain requests
JP2023504622A (ja) ある要求に対してコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード
US10956070B2 (en) Zeroing a memory block without processor caching
US11157408B2 (en) Cache snooping mode extending coherence protection for certain requests
WO2023010975A1 (en) Data processing system having masters that adapt to agents with differing retry behaviors
CN114430819B (zh) 数据处理系统及其处理单元和处理方法
US11163700B1 (en) Initiating interconnect operation without waiting on lower level cache directory lookup
US10949346B2 (en) Data flush of a persistent memory cache or buffer
US9665297B1 (en) Injection of at least a partial cache line in a private multilevel cache hierarchy
US11561900B1 (en) Targeting of lateral castouts in a data processing system
US11561901B1 (en) Distribution of injected data among caches of a data processing system
US11748280B2 (en) Broadcast scope selection in a data processing system utilizing a memory topology data structure

Legal Events

Date Code Title Description
RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7436

Effective date: 20220624

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240821

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240903