JP2023509334A - 特定のリクエストに対するコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード - Google Patents
特定のリクエストに対するコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード Download PDFInfo
- Publication number
- JP2023509334A JP2023509334A JP2022535608A JP2022535608A JP2023509334A JP 2023509334 A JP2023509334 A JP 2023509334A JP 2022535608 A JP2022535608 A JP 2022535608A JP 2022535608 A JP2022535608 A JP 2022535608A JP 2023509334 A JP2023509334 A JP 2023509334A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- request
- cache
- coherence
- snooping
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 237
- 238000012545 processing Methods 0.000 claims abstract description 86
- 239000004744 fabric Substances 0.000 claims abstract description 31
- 230000004044 response Effects 0.000 claims description 81
- 238000013461 design Methods 0.000 claims description 66
- 238000000034 method Methods 0.000 claims description 47
- 238000003860 storage Methods 0.000 claims description 11
- 238000004519 manufacturing process Methods 0.000 claims description 8
- 238000012360 testing method Methods 0.000 claims description 8
- 230000000977 initiatory effect Effects 0.000 claims description 7
- 238000010276 construction Methods 0.000 claims 1
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 38
- 101100007917 Mus musculus Cst9 gene Proteins 0.000 description 24
- 238000010586 diagram Methods 0.000 description 19
- 238000012938 design process Methods 0.000 description 14
- 239000000872 buffer Substances 0.000 description 12
- 238000004088 simulation Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 7
- NAGBBYZBIQVPIQ-UHFFFAOYSA-N 6-methyl-3-pentyl-9-prop-1-en-2-yldibenzofuran-1-ol Chemical compound C1=CC(C(C)=C)=C2C3=C(O)C=C(CCCCC)C=C3OC2=C1C NAGBBYZBIQVPIQ-UHFFFAOYSA-N 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007723 die pressing method Methods 0.000 description 1
- 238000010894 electron beam technology Methods 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000000465 moulding Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000002076 thermal analysis method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0857—Overlapped cache accessing, e.g. pipeline by multiple requestors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
キャッシュ・メモリは、データ・アレイと、コヒーレンス状態情報を指定するデータ・アレイの内容のディレクトリと、データ・アレイおよびディレクトリの参照によりシステム・ファブリックからスヌーピングされた動作を処理するスヌーピング・ロジックと、を備える。スヌーピング・ロジックは、対象アドレスを指定する第1のフラッシュ/クリーン・メモリ・アクセス動作のリクエストをシステム・ファブリック上でスヌーピングすることに応答して、キャッシュ・メモリが対象アドレスのコヒーレンス所有権を有するか否かを判定する。キャッシュ・メモリが対象アドレスのコヒーレンス所有権を有するとの判定に基づいて、スヌーピング・ロジックは、リクエストに対応した後、レフェリー・モードを開始する。レフェリー・モードにおいて、スヌーピング・ロジックは、対象アドレスを指定する第2のフラッシュ/クリーン・メモリ・アクセス動作の最後まで、複数のプロセッサ・コアによる衝突メモリ・アクセス・リクエストに対して、対象アドレスにより識別されるメモリ・ブロックを保護する。
Description
本発明は、一般的にはデータ処理に関し、詳細には、システム・メモリをアップデートするフラッシュ/クリーン・メモリ・アクセス・リクエストに対するコヒーレンス保護(coherence protection)を拡張するキャッシュ・スヌーピング・モード(cache snooping mode)に関する。
従来のマルチプロセッサ(MP)コンピュータ・システム(サーバ・コンピュータ・システム等)は、通常1つまたは複数のアドレス、データ、および制御バスを含むシステム・インターコネクト(system interconnect)に複数の処理ユニットがすべて結合されている。システム・インターコネクトには、マルチプロセッサ・コンピュータ・システムにおける最下位レベルの共有メモリを表すとともに、すべての処理ユニットによる読み書きアクセスのため一般的にアクセス可能なシステム・メモリが結合されている。システム・メモリに存在する命令およびデータに対するアクセス・レイテンシを抑えるため、各処理ユニットは通常、それぞれのマルチレベル・キャッシュ階層によってさらにサポートされ、より低いレベルのキャッシュ階層が1つまたは複数のプロセッサ・コアにより共有され得る。
キャッシュ・メモリは一般的に、プロセッサがアクセスする可能性の高いメモリ・ブロックを一時的にバッファリングし、必要なデータおよび命令をシステム・メモリからロードすることによるアクセス・レイテンシを抑えて処理を高速化するために利用される。いくつかのMPシステムにおいて、キャッシュ階層には、少なくとも2つのレベルを含む。レベル1(L1)すなわち上位レベルのキャッシュは通例、特定のプロセッサ・コアと関連付けられたプライベート・キャッシュであり、MPシステムにおける他のコアはアクセスできない。通常は、ロード命令またはストア命令等のメモリ・アクセス命令に応答して、プロセッサ・コアがまず、上位レベルのキャッシュのディレクトリにアクセスする。要求メモリ・ブロックが上位レベルのキャッシュに見つからない場合、プロセッサ・コアは続いて、要求メモリ・ブロックを求めて下位レベルのキャッシュ(たとえば、レベル2(L2)またはレベル3(L3)キャッシュ)にアクセスする。最下位レベルのキャッシュ(たとえば、L2またはL3)は、複数のプロセッサ・コアにより共有可能である。
複数のプロセッサ・コアが同じデータ・キャッシュ・ラインへの書き込みアクセスを要求する場合があり、変更されたキャッシュ・ラインはシステム・メモリと直ちには同期されないため、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は通常、キャッシュ・コヒーレンス・プロトコル(cache coherency protocol)を実装して、システム・メモリの内容に関するプロセッサ・コアのさまざまな「ビュー」間で少なくとも最下位レベルのコヒーレンスを確保する。特に、キャッシュ・コヒーレンスでは、ハードウェア・スレッドがメモリ・ブロックのコピーにアクセスしてからメモリ・ブロックのアップデート・コピーにアクセスした後はメモリ・ブロックの旧コピーに再度アクセスできないようにすることが最低限必要である。
いくつかのMPシステムは、フラッシュおよびクリーン動作をサポートするが、これによって、書き込み権限を示すコヒーレンス状態(本明細書においては、「HPC」状態と称する場合もある)のキャッシュ・ラインを含む一意のキャッシュ階層から、フラッシュまたはクリーン動作の対象アドレスと関連付けられた変更キャッシュ・ラインがコピーされ、存在する場合はシステム・メモリに戻される。クリーン動作の場合は、対象キャッシュ・ラインも無変更HPCコヒーレンス状態へと遷移する。フラッシュ動作の場合は、HPC状態の対象キャッシュ・ラインが(変更の有無に関わらず、存在する場合は)無効コヒーレンス状態へと遷移する。フラッシュ動作ではさらに、MPシステムのすべてのキャッシュ階層において、非HPC状態の対象キャッシュ・ラインのその他任意の1つまたは複数のコピーを無効化する必要がある。この無効化は、HPC状態の対象キャッシュ・ラインを有するキャッシュ(存在する場合)がその処理を完了した時点でも、完了しない場合がある。
スヌーピングに基づくコヒーレンス・プロトコルによってコヒーレンスを維持するMPシステムにおいては一般的に、MPシステムのシステム・インターコネクト上でフラッシュまたはクリーン動作がブロードキャストされ、HPC状態の対象キャッシュ・ラインを有するキャッシュがフラッシュまたはクリーン動作の処理を完了していない限り、Retryコヒーレンス応答を受信する。このため、フラッシュまたはクリーン動作を開始するコヒーレンス・メンバー(coherence participant)は、HPC状態の対象キャッシュ・ラインを有するキャッシュ(存在する場合)がそのフラッシュまたはクリーン動作の処理を完了する前に、フラッシュまたはクリーン動作を複数回にわたって再発行することを求められる場合がある。HPC状態の対象キャッシュ・ラインを有していたキャッシュがフラッシュまたはクリーン動作の処理を完了し、HPC状態(クリーン動作の場合は変更HPC状態、フラッシュ動作の場合は変更または無変更HPC状態)の対象キャッシュ・ラインの新コピーが未生成の場合、クリーン動作の後続の発行では、成功を示すコヒーレンス応答を受信し、フラッシュ動作の後続の発行では、成功を示すコヒーレンス応答(当該ラインのキャッシング・コピーが存在しない場合)または対象キャッシュ・ラインのその他任意の非HPCキャッシング・コピーを無効化する権限を開始コヒーレンス・メンバーに移譲するコヒーレンス応答を受信することになる。これらフラッシュ動作に関するいずれの場合も、フラッシュ動作は、対象キャッシュ・ラインのその他の1つまたは複数の非HPCコピーが開始コヒーレンス・メンバーによって(たとえば、kill動作の発行によって)無効化されると、フラッシュ動作の完全な終了または今後の終了の意味において、「成功」と考えられる。ただし、クリーンまたはフラッシュ動作の後続の発行に先立って、別のコヒーレンス・メンバーが関連するHPC状態(すなわち、クリーン動作の場合は変更HPC状態、フラッシュ動作の場合は変更または無変更HPC状態)の対象キャッシュ・ラインの新コピーを生成する場合は、フラッシュまたはクリーン動作の後続の再発行が再び試行され、HPC状態の対象キャッシュ・ラインの新コピーの処理が必要となることから、フラッシュまたはクリーン動作の成功裏の完了が遅延する。この遅延は、フラッシュまたはクリーン動作の対象キャッシュ・ラインの新HPCコピーの生成の継続によって、さらに深刻となり得る。
少なくとも1つの実施形態においては、フラッシュまたはクリーン動作の対象キャッシュ・ラインに対する保護を提供する指定のコヒーレンス・メンバーを通じて、他のコヒーレンス・メンバーによる競合アクセスから、対象キャッシュ・ラインが保護される。
少なくとも1つの実施形態において、キャッシュ・メモリは、データ・アレイと、コヒーレンス状態情報を指定するデータ・アレイの内容のディレクトリと、データ・アレイおよびディレクトリの参照によりシステム・ファブリック(system fabric)からスヌーピングされた動作を処理するスヌーピング・ロジック(snoop logic)と、を備える。スヌーピング・ロジックは、対象アドレスを指定する第1のフラッシュ/クリーン・メモリ・アクセス動作のリクエストをシステム・ファブリック上でスヌーピングすることに応答して、キャッシュ・メモリが対象アドレスのコヒーレンス所有権(coherence ownership)を有するか否かを判定する。キャッシュ・メモリが対象アドレスのコヒーレンス所有権を有するとの判定に基づいて、スヌーピング・ロジックは、リクエストに対応した後、レフェリー・モード(referee mode)を開始する。レフェリー・モードにおいて、スヌーピング・ロジックは、同じ対象アドレスを指定する第2のフラッシュ/クリーン・メモリ・アクセス動作がスヌーピングされ、承認され、成功裏に完了となるまで、複数のプロセッサ・コアによる衝突メモリ・アクセス・リクエストに対して、対象アドレスにより識別されるメモリ・ブロックを保護する。その結果、他のキャッシュは、第1および第2のフラッシュ/クリーン・メモリ・アクセス動作間に対象キャッシュ・ラインのコヒーレンス所有権を得られないため、要求されたフラッシュまたはクリーンの完了の潜在的な遅延の原因が排除される。
以下、添付の図面を参照して、本発明の実施形態を説明するが、これらは一例に過ぎない。
ここで図面を参照するが、これらの図面全体を通して、同じ参照番号は、同一の対応する部分を表す。特に、図1を参照して、この図は、一実施形態に係る、例示的なデータ処理システム100を示したハイレベル・ブロック図である。図示の実施形態において、データ処理システム100は、データおよび命令を処理する複数の処理ノード102を具備するキャッシュ・コヒーレント・マルチプロセッサ(MP)データ処理システムである。処理ノード102は、アドレス、データ、および制御情報を搬送するシステム・インターコネクト110に結合されている。システム・インターコネクト110は、たとえばバス式インターコネクト、スイッチ式インターコネクト、またはハイブリッド・インターコネクトとして実装されていてもよい。
図示の実施形態において、各処理ノード102は、好適には集積回路としてそれぞれ実現された4つの処理ユニット104を含むマルチチップ・モジュール(MCM)として実現されている。各処理ノード102内の処理ユニット104は、システム・インターコネクト110と同様に、たとえば1つまたは複数のバスまたはスイッチあるいはその両方により実現され得るローカル・インターコネクト114によって、相互およびシステム・インターコネクト110と連通するように結合されている。システム・インターコネクト110およびローカル・インターコネクト114が一体となって、システム・ファブリックを構成する。
図2を参照して以下により詳しく説明する通り、処理ユニット104はそれぞれ、ローカル・インターコネクト114に結合されて各システム・メモリ108へのインターフェースを提供するメモリ・コントローラ106を具備する。システム・メモリ108に存在するデータおよび命令は一般的に、データ処理システム100内の如何なる処理ノード102の如何なる処理ユニット104中のプロセッサ・コアによってもアクセス、キャッシング、および変更可能である。したがって、データ処理システム100の分散共有メモリ・システムにおいては、システム・メモリ108が最下位レベルのメモリ・ストレージを構成する。代替実施形態においては、ローカル・インターコネクト114ではなくシステム・インターコネクト110に1つまたは複数のメモリ・コントローラ106(および、システム・メモリ108)を結合可能である。
当業者には当然のことながら、図1のMPデータ処理システム100は、インターコネクト・ブリッジ、不揮発性ストレージ、ネットワーク接続ポート、または付属機器等、図示しない多くの付加的な構成要素を具備し得る。これらの付加的な構成要素は、記載の実施形態の理解に必要ないため、図1に示すことも、以下で詳しく論じることもない。ただし、本明細書に記載の改良は、多様なアーキテクチャのデータ処理システムに適用可能であり、図1に示す一般のデータ処理システム・アーキテクチャに限定されるものではないことが了解されるものとする。
ここで図2を参照して、この図は、一実施形態に係る、例示的な処理ユニット104のより詳細なブロック図である。図示の実施形態において、各処理ユニット104は、命令およびデータを処理する複数のプロセッサ・コア200を具備する集積回路である。各プロセッサ・コア200は、メモリ・ブロックへのアクセスの要求またはメモリ・ブロックへのアクセスのリクエストの生成を行うメモリ・アクセス命令を実行するLSU202等、命令を実行する1つまたは複数の実行ユニットを具備する。少なくともいくつかの実施形態において、各プロセッサ・コア200は、複数のハードウェア実行スレッドを同時に独立して実行可能である。
各プロセッサ・コア200の動作は、統合メモリ・コントローラ106を介してアクセスされる共有システム・メモリ108を最下位レベルに有するマルチレベル・メモリ階層によりサポートされている。メモリ階層は、その上位レベルにおいて、1つまたは複数のキャッシュ・メモリ・レベルを含み、図示の実施形態においては、各プロセッサ・コア200内でそれ専用のストアスルー・レベル1(L1)キャッシュ226と、各プロセッサ・コア200それぞれのストアイン・レベル2(L2)キャッシュ230と、を含む。キャッシング可能なアドレスに対する同時複数のメモリ・アクセス・リクエストを効率的に取り扱うため、いくつかの実施形態において、各L2キャッシュ230は、一組の実メモリ・アドレスそれぞれに対するメモリ・アクセス・リクエストをそれぞれ取り扱う複数の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のキャッシュ・ライン内に格納された特定のメモリ・ブロックは、キャッシュ・ラインごとにディレクトリ・エントリを1つずつ含むキャッシュ・ディレクトリ308に記録される。図3には明示していないものの、当業者であれば、キャッシュ・ディレクトリ308中の各ディレクトリ・エントリがさまざまなフィールド(たとえば、キャッシュ・アレイ302の対応するキャッシュ・ラインに保持されたメモリ・ブロックの実アドレスを識別するタグ・フィールド、キャッシュ・ラインのコヒーレンス状態を示す状態フィールド、同じ一致クラス中の他のキャッシュ・ラインに対するキャッシュ・ラインの交換順序を示すLRU(Least Recently Used)フィールド、およびメモリ・ブロックが関連するL1キャッシュ226に保持されているかを示す包含性フィールド)を含むことが了解されよう。
L2キャッシュ230は、関連するプロセッサ・コア200から受信されたメモリ・アクセス・リクエストを独立して同時に処理する複数(たとえば、16個)のRead-Claim(RC)マシン312a~312nを具備する。また、関連するプロセッサ・コア200以外のプロセッサ・コア200に由来するリモート・メモリ・アクセス・リクエストに対応するため、L2キャッシュ230は、複数のスヌーピング(SN)マシン311a~311mを具備する。各SNマシン311は、ローカル・インターコネクト114から「スヌーピング」されたリモート・メモリ・アクセス・リクエストを独立して同時に取り扱うことができる。当然のことながら、RCマシン312がメモリ・アクセス・リクエストに対応するには、キャッシュ・アレイ302内のメモリ・ブロックの交換または無効化が必要となり得る。したがって、L2キャッシュ230は、キャッシュ・アレイ302からのメモリ・ブロックの除去および書き戻しを管理するCO(castout)マシン310を具備する。
L2キャッシュ230は、マルチプレクサM1、M2を制御して、関連するプロセッサ・コア200から受信されたローカル・メモリ・アクセス・リクエストおよびローカル・インターコネクト114上でスヌーピングされたリモート・リクエストの処理を順序付けるアービタ(arbiter)305をさらに具備する。メモリ・アクセス・リクエストは、アービタ305により実装されたアービトレーション・ポリシー(arbitration policy)に従ってディスパッチ・ロジック306に転送され、ディスパッチ・ロジックは、所与のサイクル数にわたってディレクトリ308およびキャッシュ・アレイ302に関するメモリ・アクセス・リクエストを処理する。
また、L2キャッシュ230は、キャッシュ・アレイ302に挿入されるデータおよびキャッシュ・アレイ302から除去されるデータをそれぞれバッファリングするRCキュー(RCQ)320およびCPI(castout push intervention)キュー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が関連付けられている。
動作時は、ストア・キュー(STQ)304内の関連するプロセッサ・コア200から、リクエスト・タイプ(ttype)、対象実アドレス、およびストア・データを含むプロセッサ・ストア・リクエストが受信される。ストア・データは、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に示すものが好ましい。
リクエスト402は、データ処理システム100に分布したスヌーパ404a~404n(たとえば、L2キャッシュ230のSNマシン311a~311mおよびメモリ・コントローラ106中の図示しないスヌーパ)により受信される。読み出しタイプ・リクエストの場合、リクエスト402のマスター400と同じL2キャッシュ230中のSNマシン311は、リクエスト402のスヌーピングを行わない(すなわち、一般的には自己スヌーピングが存在しない)。これは、処理ユニット104が内部で読み出しタイプ・リクエスト402に対応できない場合にのみ、リクエスト402がシステム・ファブリック上で伝送されるためである。ただし、フラッシュ/クリーン・リクエスト(たとえば、表Iに記載のDCBF、DCBST、AMOリクエスト)等、他のタイプのリクエスト402の場合、リクエスト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においては、応答ロジック218の1つまたは複数のインスタンスによって、スヌーパ404の部分応答406が段階的または同時に、論理的に組み合わされることにより、リクエスト402に対するシステム全体の組み合わせ応答(「Cresp」)410が決定される。本明細書の以下で想定する好適な一実施形態において、組み合わせ応答410の生成に関与する応答ロジック218のインスタンスは、リクエスト402を発行したマスター400を含む処理ユニット400に配置される。応答ロジック218は、システム・ファブリックを介して組み合わせ応答410をマスター400およびスヌーパ404に提供することにより、リクエスト402に対するシステム全体の応答(たとえば、Success、Retry等)を示す。Cresp410は、リクエスト402の成功を示す場合、たとえば要求メモリ・ブロックに対するデータ・ソース(必要に応じて)と、要求メモリ・ブロックがマスター400によってキャッシングされるコヒーレンス状態(必要に応じて)と、1つまたは複数のL2キャッシュ230における要求メモリ・ブロックのキャッシング・コピーを無効化する「一掃」動作が必要であるか否か(必要に応じて)と、を示し得る。
組み合わせ応答410の受信に応答して、マスター400およびスヌーパ404のうちの1つまたは複数が通常、1つまたは複数の動作を実行して、リクエスト402に対応する。これらの動作には、マスター400へのデータの供給、1つまたは複数のL2キャッシュ230にキャッシングされたデータのコヒーレンス状態の無効化あるいはアップデート、castout動作の実行、システム・メモリ108へのデータの書き戻し等を含んでいてもよい。リクエスト402が必要とする場合は、応答ロジック218による組み合わせ応答410の生成の前または後に、要求または対象メモリ・ブロックがマスター400またはスヌーパ404のうちの1つに伝送されるようになっていてもよいし、要求または対象メモリ・ブロックがマスター400またはスヌーパ404のうちの1つから伝送されるようになっていてもよい。
以下の説明においては、スヌーパ404がリクエスト402により指定されるリクエスト・アドレスに関する最高コヒーレンス点(HPC)であるか、最低コヒーレンス点(LPC)であるか、いずれでもないかに関して、リクエスト402に対するスヌーパ404の部分応答406と、リクエスト402またはその組み合わせ応答410あるいはその両方に応答してスヌーパ404が実行する動作と、を説明する。本明細書においては、メモリ・ブロックの最終的なレポジトリとして機能するメモリ・デバイスまたはI/Oデバイスとして、LPCを規定する。メモリ・ブロックのコピーを有するキャッシング・メンバーが存在しない場合、LPCは、当該メモリ・ブロックの画像のみを有する。メモリ・ブロックに対するHPCキャッシング・メンバーが存在しない場合、LPCは、メモリ・ブロックの変更要求の許可または拒否の権限のみを有する。また、LPCは、LPCデータが最新で、データを提供可能なキャッシング・メンバーが存在しない場合、メモリ・ブロックの読み取り要求または変更要求に対してデータを提供する。キャッシング・メンバーがデータのより新しいコピーを有するももの、リクエストに提供できない場合は、LPCが状態データを提供しないため、リクエストが再試行される。図1~3に示すデータ処理システム100の実施形態における代表的な要求に対して、LPCは、参照メモリ・ブロックを有するシステム・メモリ108のためのメモリ・コントローラ106となる。
本明細書においては、メモリ・ブロックの真の画像(LPCにおいて対応するメモリ・ブロックと一致していてもよいし、一致していなくてもよい)をキャッシングし、メモリ・ブロックの変更要求の許可または拒否の権限を有する一意識別デバイスとして、HPCを規定する。また、説明上、HPCは(そのコピーがLPCの背後のメイン・メモリと一致していても)、メモリ・ブロックの任意の読み取り要求または変更要求に応答して、メモリ・ブロックのコピーを要求側に提供する(キャッシュ間移動がLPC-キャッシュ間移動よりも高速である)。このため、データ処理システムの実施形態における代表的なリクエストの場合、HPCが存在すれば、それがL2キャッシュ230となる。メモリ・ブロックのHPCの指定には他のインジケータも利用可能であるが、好適な一実施形態においては、L2キャッシュ230のL2キャッシュ・ディレクトリ308内の選択キャッシュ・コヒーレンス状態を利用して、メモリ・ブロックのHPCを指定する(存在する場合)。好適な一実施形態において、コヒーレンス・プロトコル内のコヒーレンス状態は、(1)キャッシュがメモリ・ブロックのHPCであるかの指標のほか、(2)キャッシング・コピーが一意であるか(すなわち、システム全体で唯一のキャッシング・コピーであるか)、(3)動作のフェーズに対して、キャッシュがメモリ・ブロックのコピーをメモリ・ブロックのリクエストのマスターに提供可能であるか、および、どのタイミングで提供可能であるか、(4)メモリ・ブロックのキャッシング画像がLPC(システム・メモリ)において対応メモリ・ブロックと一致するか、を提供する。これら4つの属性は、たとえば周知のMESI(Modified, Exclusive, Shared, Invalid)プロトコルの例示的な一変形として表現可能であり、以下の表IIにまとめる。コヒーレンス・プロトコルに関するその他の情報については、たとえば米国特許第7,389,388号に見られるが、これを本明細書に援用する。
上表IIで注目すべきは、T、Te、SL、Sの各状態であり、これらはすべて、キャッシュ・メモリによってこれらの状態のいずれかに保持されたキャッシュ・ラインのコピーを別のキャッシュ・メモリが同時に有し得る点において、「共有」コヒーレンス状態である。状態TまたはTeは、それぞれが状態MおよびMeのうちの1つに関連するキャッシュ・ラインを有し、関連するキャッシュ・ラインのクエリ限定コピーを別のキャッシュ・メモリに供給していたHPCキャッシュ・メモリを識別する。コヒーレンス状態TまたはTeのキャッシュ・ラインを有するキャッシュ・メモリは、HPCとして、キャッシュ・ラインを変更する権限またはこのような権限を別のキャッシュ・メモリに与える権限を有する。状態Tx(たとえば、TまたはTe)のキャッシュ・ラインを有するキャッシュ・メモリは、状態SLのキャッシュ・ラインを有するキャッシュ・メモリが(Cresp前の)データ・ソースとして機能するように利用できない場合のみ、別のキャッシュ・メモリへのクエリ限定コピーを供給する点において、当該キャッシュ・ラインのクエリ限定コピーのための(Cresp後の)最後の手段のキャッシュ・データ・ソースとして機能する。
状態SLは、コヒーレンス状態Tのキャッシュ・メモリからキャッシュ・ラインのクエリ限定コピーをキャッシュ・メモリが受信したことに応答して、このキャッシュ・メモリに形成される。状態SLはHPCコヒーレンス状態ではないが、状態SLのキャッシュ・ラインを有するキャッシュ・メモリは、当該キャッシュ・ラインのクエリ限定コピーを別のキャッシュ・メモリに供給可能であり、Crespの受信に先立って、これを実行可能である。キャッシュ・ラインのクエリ限定コピーを別のキャッシュ・メモリ(状態SLを想定)に供給することに応答して、キャッシュ・ラインのクエリ限定コピーを供給するキャッシュ・メモリは、キャッシュ・ラインに対するコヒーレンス状態をSLからSにアップデートする。このように、コヒーレンス状態SLの実装によって、高頻度にクエリがあるキャッシュ・ラインの多くのクエリ限定コピーがマルチプロセッサ・データ処理システム全体で生成されるため、これらのキャッシュ・ラインへのクエリ限定アクセスのレイテンシが抑えられて都合が良い。
図4を再び参照して、リクエスト402で参照されるメモリ・ブロックのHPC(存在する場合)、またはHPCが存在しない場合、メモリ・ブロックのLPCは、リクエスト402に応答して、メモリ・ブロックのコヒーレンス所有権の移動の保護を必要に応じて担うのが好ましい。図4に示す例示的なシナリオにおいて、リクエスト402のリクエスト・アドレスにより指定されるメモリ・ブロックのHPC(または、HPCがない場合はLPC)におけるスヌーパ404nは、スヌーパ404nがその部分応答406を決定した時点からスヌーパ304nが組み合わせ応答410を受信するまで延びる保護ウィンドウ412aおよびスヌーパ404nによる組み合わせ応答410の受信を越えてプログラム可能な時間を延長する後続のウィンドウ延長412bにおいて、要求メモリ・ブロックのコヒーレンス所有権のマスター400への移動を保護する。保護ウィンドウ412aおよびウィンドウ延長412bの間、スヌーパ404nは、所有権がマスター400へと成功裏に移動するまで、他のマスターによる所有権の取得を防止する同じリクエスト・アドレスを指定する他の要求に対する部分応答406(たとえば、Retry部分応答)の提供によって、所有権の移動を保護する。マスター400は同様に、保護ウィンドウ413を開始して、組み合わせ応答410の受信後のリクエスト402において要求されるメモリ・ブロックのコヒーレンス所有権を保護する。
スヌーパ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)がフラッシュまたはクリーン・タイプのメモリ・アクセス動作を実行する例示的なプロセスのハイレベル論理フローチャートである。上述の通り、衝突する可能性のある対象アドレスに対して、任意数のマスターがそれぞれのフラッシュ/クリーン・メモリ・アクセス動作を同時に実行するようにしてもよい。その結果、データ処理システム100においては、図5に示すプロセスの複数のインスタンスが時間的に重なって実行されるようになっていてもよい。
図5のプロセスは、ブロック500で開始となった後、ブロック502に進むが、これは、マスター400がデータ処理システム100のシステム・ファブリック上で、メモリ・アクセス動作のリクエスト402を発行することを示す。少なくともいくつかの実施形態において、L2キャッシュ230のRCマシン312等のマスター400は、LSU202による対応する命令の実行に基づいて、関連するプロセッサ・コア200からメモリ・アクセス・リクエストを受信したことに応答して、リクエスト402を発行する。上記実施形態において、リクエスト402は、複数のクラスまたはタイプの動作(本明細書においては、フラッシュ/クリーン(FC)動作と総称する)のうちの1つに属するメモリ・アクセス動作を開始する。これらのFC動作には、表Iにて参照される動作DCBF、DCBST、およびAMOを含むが、これらはすべて、対象メモリ・ブロックの任意の変更キャッシング・コピーを関連するシステム・メモリ108に書き戻す必要があるストレージ変更動作である。
図4に関する先行記述で明らかとなったように、マスター400のFCリクエスト402は、データ処理システム100内に分布したL2キャッシュ230およびメモリ・コントローラ106によって、システム・ファブリック上で受信される。FCリクエスト402の受信に応答して、これらさまざまなスヌーパ404は、それぞれの部分応答406を生成して、応答ロジック218の関連するインスタンスに伝達する。例示的な一実施形態において、L2キャッシュ230は、(1)重量(heavyweight)Retry、(2)軽量(lightweight)Retry、または(3)Nullといった3つのPrespのうちの1つでFCリクエスト402のスヌーピングに応答する。重量Retry Prespは、現時点でそのディレクトリ308中のFCリクエスト402の対象アドレスのコヒーレンス状態にアクセスできないL2キャッシュ230により提供される。また、重量Retry Prespは、そのディレクトリ308中のコヒーレンス状態により対象アドレスのHPCとして指定されたものの、この時点ではFCリクエスト402に応答できないL2キャッシュ230または現時点で対象キャッシュ・ラインのリクエストの処理に忙しいL2キャッシュ230により提供される。
軽量Retry Prespは、ディレクトリ308がアクセス可能であるとともに対象アドレスに対して状態SLおよびSのいずれかを示し、(1)対象アドレスに対する別の衝突リクエストを現時点で処理しているか、(2)SNマシン311をディスパッチできず、対象アドレスに対してSNマシン311が現時点でアクティブではないか、または(3)SNマシン311をディスパッチしてFCリクエスト402を処理済みであるL2キャッシュ230によって提供される。
当然のことながら、L2キャッシュ230は、所与の対象アドレスに対するリクエストを処理するアクティブなSNマシン311を有する全期間において、リクエストが最初にスヌーピングされた際の対象アドレスと関連付けられたコヒーレンス状態に基づいて、重量Retry Prespまたは軽量Retry Prespを提供することになる。ダーティHPCコヒーレンス状態(たとえば、MまたはT)のFCリクエスト402の対象アドレスを有するL2キャッシュ230が実行する特定の動作については、図6を参照して以下に詳しく説明する。共有コヒーレンス状態(たとえば、Te、SL、またはS)のフラッシュ・リクエストの対象アドレスを有するL2キャッシュ230が実行する動作については、図8を参照して以下に詳しく説明する。
FCリクエスト402のスヌーピングに応答して、対象アドレスに関与しない(すなわち、LPCではない)メモリ・コントローラ106は、Prespを提供しない(または、Null Prespを提供する)。FCリクエスト402の対象アドレスに対するLPCメモリ・コントローラであるメモリ・コントローラ106は、リソースの制約または同じアドレスを指定する別のメモリ・アクセス・リクエストに対応済みであることによりFCリクエスト402に対応できない場合、Retry_LPC Prespを提供する。LPCメモリ・コントローラ106は、FCリクエスト402に対応可能な場合、最初にスヌーピングされたFCリクエスト402に対する成功のCrespを受信するまで、LPC_Retry Prespを任意の後続FC動作(または、他の動作)に提供することによって、FCリクエスト402の対象アドレスを保護する。
図5を再び参照して、このプロセスは、ブロック502からブロック504、505、および506に進むが、これらは、ブロック502で発行されたFC動作のリクエスト402のマスター400が応答ロジック218からの対応するCresp410の受信を待つことを示す。少なくとも1つの実施形態において、応答ロジック218は、以下の表IIIに示すように、スヌーパ404の受信Prespに基づいて、FC動作のCresp410を生成可能である。少なくともいくつかの実施形態において、DCBSTリクエストは、状態SLおよびSのいずれかに対象キャッシュ・ラインを有するキャッシュが無視するため、(表IIIの1、2、5、および6行目に示すように)軽量Retry Prespを受信しないことに留意するものとする。
Cresp410の受信に応答して、マスター400は、表IIIの最初の3行に示すように、Cresp410がRetryを示すかを判定する(ブロック504)。Retryを示す場合、このプロセスはブロック502に戻るが、これは、マスター400がシステム・ファブリック上でFC動作のリクエスト402を再発行することを示す。マスター400がブロック504において、リクエスト402のCresp410がRetryでないと判定した場合、表IIIの実施形態において、コヒーレンス結果は、HPC_Success(ブロック505における肯定判定(表IIIの4行目))、Success_with_cleanup(Success_CU)(ブロック506における肯定判定(表IIIの5および6行目))、またはSuccess(ブロック505および506の両者における否定判定(表IIIの7行目))のいずれかである。(ブロック505および506の両者における否定判定によって示すように)Cresp410がSuccessの場合、データ処理システム100には、対象キャッシュ・ラインのキャッシング・コピーが存在しない。結果として、フラッシュまたはクリーン動作は成功裏に完結し、図5のプロセスは520で終了となる。
ただし、Cresp410は、Success_CUを示す場合、1つまたは複数のキャッシュがダーティHPC状態以外の対象キャッシュ・ラインのコピーを有する可能性があり、HPC状態の対象キャッシュ・ラインのコピーを有するキャッシュが存在しなかったか、または対象キャッシュ・ラインのシステム・メモリ108への書き戻しおよび対象キャッシュ・ラインのコヒーレンス所有権のマスター400への移動の完了をCrespで示すHPC_Ack Prespによってリクエスト402に応答したことを示す。したがって、マスター400は、保護ウィンドウ413を開いて、任意の衝突するスヌーピング・リクエストに重量Retry Prespを受信させることによって、対象アドレスの保護を開始する(ブロック508)。また、FC動作がフラッシュまたはAMO動作である場合、マスター400は、システム・ファブリック上で一掃コマンド(たとえば、表IIのBKまたはBK_Flushコマンド)を発行して、対象メモリ・ブロックの1つまたは複数の任意の共有キャッシング・コピーを無効化する(ブロック510)。図5のプロセスは、ブロック510に続いてブロック512に進むが、これは、ブロック510で発行された一掃コマンドのCresp410がSuccessを示すかの判定を示す。Successを示さない場合、プロセスはブロック510に戻るが、これは、マスター400が一掃コマンドを再発行することを表す。ブロック510で発行された一掃コマンドに対して、Successを示すCresp410が受信されると、マスター400は、保護ウィンドウ413を閉じることにより、FC動作のリクエストの対象アドレスの保護を終了する(ブロック514)。その後、図5のプロセスは、ブロック520で終了となる。
FC動作のCresp410は、HPC_Successである場合、過去のダーティHPCキャッシュが所与のクラスのFC動作に必要な処理(たとえば、対象キャッシュ・ラインのシステム・メモリ108への書き戻しおよびそのディレクトリのアップデート)を完了したことを示すとともに、共有コヒーレンス状態の対象キャッシュ・ラインのコピーを有するキャッシュが存在しないこと、FC動作が対象キャッシュ・ラインの共有コピーと相互作用しないこと、またはその両者を示す。データ処理システム100に対象キャッシュ・ラインのキャッシング・コピーが存在しないか、存在してもFC動作の影響を受けないため、マスター400による一掃コマンドの発行はなされず、図5のプロセスはブロック520で終了となる。HPC_SuccessのCrespは、FC動作の最初のリクエストに対しては受信されず、図6のブロック602および630~632を参照して以下に詳述する通り、少なくとも1回のRetry後にのみ受信されることに留意するものとする。
ここで図6を参照して、この図は、一実施形態に係る、HPCキャッシュがFCメモリ・アクセス動作のスヌーピング・リクエストを取り扱う例示的なプロセスのハイレベル論理フローチャートである。より深い理解が得られるように、図6のフローチャートは、図7のタイミング図700と併せて説明する。
図6に示すプロセスは、ブロック600で開始となった後、ブロック602に進むが、これは、ダーティHPCコヒーレンス状態(たとえば、コヒーレンス状態MまたはT)のFCメモリ・アクセス動作の対象キャッシュ・ラインを有するL2キャッシュ・メモリ230がローカル・インターコネクト114からのFCメモリ・アクセス動作のリクエストをスヌーピングすることを示す。FCメモリ・アクセス動作は、たとえば上述したようなDCBF、DCBST、またはAMO動作であってもよいし、変更キャッシング・データをシステム・メモリ108に書き戻す必要があるその他任意のストレージ変更FC動作であってもよい。FCメモリ・アクセス動作のリクエストのスヌーピングに応答して、L2キャッシュ・メモリ230は、FCメモリ・アクセス動作への対応にSNマシン311を割り当て、リクエストにより指定される対象実アドレスの保護をSNマシン311が開始するように、SNマシン311をビジー状態に設定する。図7は、参照番号702において、FCメモリ・アクセス動作のリクエストへの対応に割り当てられたSNマシン311のアイドル状態からビジー状態への遷移を示している。また、L2キャッシュ・メモリ230は、対象キャッシュ・ラインからの変更データがシステム・メモリ108に書き戻されていないことから、FCメモリ・アクセス動作のリクエストに対して重量Retry Prespを提供する。
SNマシン311は、ビジー状態の間、スヌーピング・リクエストに対して通常の処理を実行する(ブロック604)。この通常の処理には、システム・ファブリックを介して対象キャッシュ・ラインの変更データを関連するシステム・メモリ108に書き戻すことと、システム・メモリ108のアップデートが完了した場合、FCリクエスト402の必要に応じてローカル・ディレクトリ308中の対象キャッシュ・ラインを無効化することと、を含む。さらに、ブロック604に示すように、SNマシン311がビジー状態の間、L2キャッシュ230は、図7の参照番号704で示すように、対象キャッシュ・ラインへのアクセスを要求する任意のスヌーピング・リクエストに対して重量Retry部分応答を提供する。重量Retry部分応答は、衝突リクエストのマスターにその要求を再発行させるRetry Cresp410を応答ロジック218の関連インスタンスに構成させる。
いくつかの実施形態において、FCメモリ・アクセス動作のリクエストに割り当てられたSNマシン311は、FCメモリ・アクセス動作のリクエストのスヌーピングに基づいて、REF(レフェリー)モード・インジケータを(図6のブロック608および図7の参照番号706で示すように)自動的に設定する。図6の動作ブロック606により表される他の実施形態において、SNマシン311は、当該SNマシン311がFCメモリ・アクセス動作のリクエストに対する作業で忙しい間、非FC動作の衝突リクエストがL2キャッシュ230によりスヌーピングされた場合にのみ、ブロック608においてREFモード・インジケータを条件付きで設定する。ブロック608の後または動作ブロック606が実施された場合は、衝突する非FCリクエストがスヌーピングされていない旨の判定に続いて、SNマシン311によるスヌーピングFCリクエストの処理が完了したか否かをブロック610で判定する。完了していない場合、図6のプロセスはブロック604に戻るが、これについては説明済みである。ただし、図7の参照番号708で示すように、SNマシン311によるスヌーピングFCリクエストの処理が完了したとの判定がなされた場合、図6のプロセスは、ブロック610からブロック612に進む。
ブロック612は、FC動作の処理の完了後、REFモード・インジケータが設定されているか否かをSNマシン311が判定することを示す。設定されていない場合、SNマシン311は、図6のブロック614および図7の参照番号710に示すように、アイドル状態に戻る。ブロック614の後、図6のプロセスは、ブロック616で終了となる。ブロック612に戻って、SNマシン311は、REFモード・インジケータが設定されているものと判定した場合、FC動作のリクエストの処理が完了してもアイドル状態に戻らず、その代替として、図6のブロック620および図7の参照番号712に示すように、REF(レフェリー)モードを開始して対象キャッシュ・ラインの保護を拡張する。また、一実施形態においては、REFモードの開始と併せて、SNマシン311がREFモード・タイマーを開始する。
ブロック620の後、SNマシン311の処理は、REFモード・タイマーの満了(ブロック640)および同じクラスのFC動作(たとえば、クリーン、フラッシュ、AMO等)のリクエストのスヌーピング(ブロック630)を当該SNマシン311が監視する処理ループに入る。この処理ループの間、SNマシン311は、図6のブロック622および図7の参照番号714に示すように、先にスヌーピングされたFCリクエストと同じキャッシュ・ラインを対象とする一方、同じクラスのFC動作ではない任意の衝突動作について、システム・ファブリック上で監視を行う。このような任意の衝突リクエストの検出に応答して、SNマシン311は、図6のブロック624に示すように、衝突する非FCリクエストに対して重量Retry Prespを提供する。重量Retry Prespは、表IIIおよび図5のブロック504を参照して上述した通り、応答ロジック218の関連インスタンスにRetry Crespを発行させる。その後、このプロセスはブロック640に進むが、これについては後述する。
また、この処理ループの間、SNマシン311は、図6のブロック630および図7の参照番号716に示すように、先にスヌーピングされたFCリクエストと同じキャッシュ・ラインを対象とし、同じクラスのFC動作(たとえば、クリーン、フラッシュ、AMO等)である任意の衝突FC動作について、システム・ファブリック上で監視を行う。衝突FC動作は、先のFCリクエストを発行したのと同じマスター400により発行されるようになっていてもよいし、異なるマスターにより発行されるようになっていてもよい。このような任意の衝突FCリクエストの検出に応答して、SNマシン311は、図6のブロック632に示すように、衝突FCリクエストに対してHPC_Ack部分応答を提供する。このHPC_Ack部分応答によって、HPC_Success Crespが生成されることになる(たとえば、表III参照)。HPC_Success Crespの受信(ブロック634)に応答して、図6のプロセスはブロック650に進むが、これについては後述する。
ブロック640は、REFモード・タイマーの参照によりREFモードのタイムアウトが発生しているかをSNマシン311が判定することを示す。種々実施形態において、タイムアウトは、静的な所定のタイマー値で発生するようになっていてもよいし、その代替として、たとえばSNマシン311がREFモードの期間中に受信された衝突FCまたは非FC動作あるいはその両方の数に基づいて決定される動的な値で発生するようになっていてもよい。タイムアウトが発生していない場合、図6のプロセスはブロック622に戻るが、これについては説明済みである。ブロック640におけるREFモードのタイムアウトの判定に応答して、このプロセスは、ブロック650に進むが、これは、図7の参照番号718で示すように、SNマシン311がREFモードを終了することを示す。SNマシン311はこのように、対象キャッシュ・ラインの保護を終えて、アイドル状態に戻る(図6のブロック614および図7の参照番号720)。その後、図6のプロセスは、ブロック616で終了となる。
当業者には当然のことながら、図6は、HPCスヌーパが実行するフラッシュ/クリーン動作の終了と同じクラスで同じ対象アドレスを指定する後続のFCメモリ・アクセス動作の終了(たとえば、Cresp)との間の期間におけるFCメモリ・アクセス動作のリクエストの対象であるメモリ・ブロックのコヒーレンス保護を拡張するREFモードをHPCスヌーパが一時的に開始する技術を開示する。この対象キャッシュ・ラインの保護の拡張によって、FCメモリ・アクセス動作の成功が保証されるまでは、対象キャッシュ・ラインに対して他のHPCが形成されることはない。
ここで図8を参照して、この図は、一実施形態に係る、スヌーピングされたフラッシュ・タイプ・リクエスト(たとえば、DCBFまたはAMO)の対象キャッシュの非HPC共有コピーを有するキャッシュがリクエストを取り扱う例示的なプロセスのハイレベル論理フローチャートである。クリーン・リクエスト(たとえば、DCBST)の対象キャッシュの共有コピーを有するキャッシュがクリーン・リクエストを無視する点に留意するものとする。
図8のプロセスは、ブロック800で開始となった後、ブロック802に進むが、これは、フラッシュ・タイプ・リクエストの対象キャッシュ・ラインを有するL2キャッシュ230がフラッシュ・タイプ動作の最初のリクエスト(たとえば、DCBFまたはAMO)または関連する一掃コマンド(たとえば、BKまたはBK_FLUSH)をスヌーピングすることを示す。最初のリクエストまたは一掃コマンドのスヌーピングに応答して、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と異なっていてもよいし、プログラマブル・アレイ(たとえば、Altera(R)Inc.またはXilinx(R)Inc.が提供するプログラマブル・ゲート・アレイ(PGA)またはフィールド・プログラマブル・ゲート・アレイ(FPGA))に設計をインスタンス化する設計フロー900と異なっていてもよい。
図9は、このような複数の設計構造を示しており、好ましくは設計プロセス900により処理される入力設計構造920を含む。設計構造920は、設計プロセス900による生成および処理によって、ハードウェア・デバイスの論理的に同等な機能的表現を生成する論理的シミュレーション設計構造であってもよい。この追加または代替として、設計構造920は、設計プロセス900により処理された場合に、ハードウェア・デバイスの物理的構造の機能的表現を生成するデータまたはプログラム命令あるいはその両方を含んでいてもよい。機能的または構造的な設計特徴あるいはその両方を表すか否かに関わらず、設計構造920は、コア開発者/設計者が実施するような電子コンピュータ支援設計(ECAD)を用いて生成されるようになっていてもよい。機械可読データ伝送、ゲート・アレイ、または記憶媒体上で符号化された場合、設計構造920は、設計プロセス900内の1つまたは複数のハードウェアまたはソフトウェア・モジュールあるいはその両方によってアクセスおよび処理によって、図1~図3に示すような電子コンポーネント、回路、電子もしくは論理モジュール、装置、デバイス、またはシステムのシミュレーションあるいは機能的表現を行い得る。このため、設計構造920は、設計またはシミュレーション・データ処理システムにより処理された場合に、回路または他のレベルのハードウェア論理設計の機能的シミュレーションあるいは表現を行う人間または機械あるいはその両方に可読のソースコード、コンパイルされた構造、ならびにコンピュータ実行可能コード構造を含むファイルまたは他のデータ構造を含んでいてもよい。このようなデータ構造には、VerilogおよびVHDL等の低水準ハードウェア記述言語(HDL)設計言語またはCもしくはC++等の高水準設計言語あるいはその両方に対する準拠または適合あるいはその両方を示すHDL設計エンティティ等のデータ構造を含み得る。
設計プロセス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は、伝送またはデータ記憶媒体上に存在し、ECADシステムにより処理された場合に、図1~図3に示す本発明の実施形態のうちの1つまたは複数の論理的あるいは機能的に等価な形態を生成する1つまたは複数のファイル、データ構造、または他のコンピュータ符号化データもしくは命令を含むのが好ましい。一実施形態において、設計構造990には、図1~図3に示すデバイスを機能的に模擬するコンパイル済みの実行可能HDLシミュレーション・モデルを含んでいてもよい。
また、設計構造990には、集積回路のレイアウト・データの交換に用いられるデータ・フォーマットまたは記号データ・フォーマットあるいはその両方を採用可能である(たとえば、GDSII(GDS2)、GL1、OASIS、マップ・ファイル、またはこのような設計データ構造を格納するその他任意の好適なフォーマットに格納された情報である)。設計構造990には、たとえば記号データ、マップ・ファイル、試験データ・ファイル、設計内容ファイル、製造データ、レイアウト・パラメータ、ワイヤ、金属のレベル、ビア、形状、製造ラインを通る配線のデータ、および図1~図3に示して上述したデバイスまたは構造を生成するのに製造業者または他の設計者/開発者が必要とするその他任意のデータ等の情報を含んでいてもよい。その後、設計構造990は段階995に進むようになっていてもよく、ここでは、たとえば設計構造990のテープアウト、製造に向けた公開、マスク・ハウスに向けた公開、別の設計ハウスへの送付、顧客への返却等が行われる。
これまで説明した通り、少なくとも1つの実施形態において、キャッシュ・メモリは、データ・アレイと、コヒーレンス状態情報を指定するデータ・アレイの内容のディレクトリと、データ・アレイおよびディレクトリの参照によりシステム・ファブリックからスヌーピングされた動作を処理するスヌーピング・ロジックと、を備える。スヌーピング・ロジックは、対象アドレスを指定する第1のフラッシュ/クリーン・メモリ・アクセス動作のリクエストをシステム・ファブリック上でスヌーピングすることに応答して、キャッシュ・メモリが対象アドレスのコヒーレンス所有権を有するか否かを判定する。キャッシュ・メモリが対象アドレスのコヒーレンス所有権を有するとの判定に基づいて、スヌーピング・ロジックは、リクエストに対応した後、レフェリー・モードを開始する。レフェリー・モードにおいて、スヌーピング・ロジックは、対象アドレスを指定する第2のフラッシュ/クリーン・メモリ・アクセス動作の最後まで、複数のプロセッサ・コアによる衝突メモリ・アクセス・リクエストに対して、対象アドレスにより識別されるメモリ・ブロックを保護する。
種々実施形態を詳細に図示および説明したが、当業者であれば、添付の特許請求の範囲の思想および範囲から逸脱することなく、形態および細部をさまざまに変更可能であり、これらの代替実施態様がすべて、添付の特許請求の範囲に含まれることが了解されよう。
図中のフローチャートおよびブロック図は、本発明の種々実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の考え得る実施態様のアーキテクチャ、機能、および動作を示している。この点、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装する1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部を表し得る。いくつかの代替実施態様において、ブロックに記載の機能は、図面に記載の順序から外れて発生するようになっていてもよい。たとえば、連続して示す2つのブロックが実際のところは、関与する機能に応じて、実質的に同時に実行されるようになっていてもよいし、場合により逆の順序で実行されるようになっていてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロックならびにブロック図またはフローチャート図あるいはその両方のブロックの組み合わせは、特定の機能または動作を実行する専用ハードウェアベースのシステムにより実装することも可能であるし、専用ハードウェアおよびコンピュータ命令の組み合わせを実行することも可能である。
本発明の機能を指示するプログラム・コードを実行するコンピュータ・システムに関して複数の態様を説明したが、本発明は代替として、データ処理システムのプロセッサにより処理されることでデータ処理システムに上記機能を実行させ得るプログラム・コードを格納したコンピュータ可読記憶装置を含むプログラム製品として実施され得ることが了解されるものとする。コンピュータ可読記憶装置としては、揮発性または不揮発性メモリ、光または磁気ディスク等が挙げられるが、伝搬信号それ自体、伝送媒体それ自体、およびエネルギー形態それ自体等、法定外の主題については除外する。
一例として、プログラム製品には、データ処理システム上で実行あるいは処理された場合に、本明細書に開示のハードウェア・コンポーネント、回路、デバイス、またはシステムの論理的、構造的、あるいは機能的に等価な表現(シミュレーション・モデルを含む)を生成するデータまたは命令あるいはその両方を含み得る。このようなデータまたは命令あるいはその両方には、VerilogおよびVHDL等の低水準ハードウェア記述言語(HDL)設計言語またはCもしくはC++等の高水準設計言語あるいはその両方に対する準拠または適合あるいはその両方を示すHDL設計エンティティ等のデータ構造を含み得る。さらに、データまたは命令あるいはその両方には、集積回路のレイアウト・データの交換に用いられるデータ・フォーマットまたは記号データ・フォーマットあるいはその両方を採用可能である(たとえば、GDSII(GDS2)、GL1、OASIS、マップ・ファイル、またはこのような設計データ構造を格納するその他任意の好適なフォーマットに格納された情報である)。
Claims (20)
- マルチプロセッサ・データ処理システムにおける複数のプロセッサ・コアのうちの関連するプロセッサ・コアのキャッシュ・メモリであり、前記マルチプロセッサ・データ処理システムが、システム・ファブリックであり、前記キャッシュ・メモリおよびシステム・メモリのメモリ・コントローラを通信可能に結合して前記システム・ファブリック上の動作を受信する、前記システム・ファブリックを含む、キャッシュ・メモリであって、
データ・アレイと、
前記データ・アレイの内容のディレクトリであり、コヒーレンス状態情報を含む、前記ディレクトリと、
前記データ・アレイおよび前記ディレクトリの参照により前記システム・ファブリックからスヌーピングされた動作を処理するスヌーピング・ロジックであり、対象アドレスを指定する前記複数のプロセッサ・コアのうちの1つの第1のフラッシュ/クリーン・メモリ・アクセス動作のリクエストを前記システム・ファブリック上でスヌーピングすることに応答して、
前記キャッシュ・メモリが前記対象アドレスのコヒーレンス所有権を有するか否かを判定することと、
前記キャッシュ・メモリが前記対象アドレスのコヒーレンス所有権を有するとの判定に基づいて、前記リクエストに対応した後、レフェリー・モードを開始することと、
前記レフェリー・モードにおいて、前記対象アドレスを指定する第2のフラッシュ/クリーン・メモリ・アクセス動作の最後まで、前記複数のプロセッサ・コアによる衝突メモリ・アクセス・リクエストに対して、前記対象アドレスにより識別されるメモリ・ブロックを保護することと、
を行う、前記スヌーピング・ロジックと、
を備えた、キャッシュ・メモリ。 - 前記フラッシュまたはクリーン動作の前記リクエストが、第1のリクエストであり、
前記スヌーピング・ロジックが、前記第1のリクエストのスヌーピング後、前記第1のリクエストの処理の完了に先立ち、衝突する第2のリクエストのスヌーピングに基づいて、前記レフェリー・モードを開始するように構成された、請求項1に記載のキャッシュ・メモリ。 - 前記スヌーピング・ロジックが、衝突メモリ・アクセス・リクエストに対するRetryコヒーレンス応答を発行することにより、前記衝突メモリ・アクセス・リクエストに対して、前記メモリ・ブロックを保護するように構成された、請求項1に記載のキャッシュ・メモリ。
- 前記スヌーピング・ロジックが、前記レフェリー・モードにおいて、前記第1のフラッシュ/クリーン・メモリ・アクセス動作と同じクラスのフラッシュ/クリーン・メモリ・アクセス動作の衝突リクエストに対して第1のコヒーレンス応答を提供するとともに、他のタイプの衝突リクエストに対して異なる第2のコヒーレンス応答を提供するように構成された、請求項1に記載のキャッシュ・メモリ。
- 前記スヌーピング・ロジックが、前記レフェリー・モードにおいて、タイムアウト条件を検出し、前記タイムアウト条件の検出に応答して、前記レフェリー・モードを終了する、請求項1に記載のキャッシュ・メモリ。
- 前記対象アドレスと関連付けられた変更キャッシュ・ラインのコヒーレンス所有権を示す前記ディレクトリ中の前記コヒーレンス状態情報に基づいて、前記レフェリー・モードの開始のみを行う、請求項1に記載のキャッシュ・メモリ。
- 請求項1に記載のキャッシュ・メモリと、
前記キャッシュ・メモリに結合された少なくとも1つの関連するプロセッサ・コアと、
を備えた処理ユニット。 - システム・ファブリックと、
前記システム・ファブリックにすべてが結合された請求項7に記載の複数の処理ユニットと、
を備えたデータ処理システム。 - マルチプロセッサ・データ処理システムにおける複数のプロセッサ・コアのうちの関連するプロセッサ・コアのキャッシュ・メモリを含む前記マルチプロセッサ・データ処理システムにおけるデータ処理の方法であり、前記マルチプロセッサ・データ処理システムが、システム・ファブリックであり、前記キャッシュ・メモリおよびシステム・メモリのメモリ・コントローラを通信可能に結合して前記システム・ファブリック上の動作を受信する、前記システム・ファブリックを含む、方法であって、
前記キャッシュ・メモリが、対象アドレスを指定する前記複数のプロセッサ・コアのうちの1つの第1のフラッシュ/クリーン・メモリ・アクセス動作のリクエストを前記システム・ファブリック上でスヌーピングすることと、
前記リクエストのスヌーピングに基づいて、前記キャッシュ・メモリが、前記対象アドレスのコヒーレンス所有権を有するか否かを判定することと、
前記キャッシュ・メモリが、前記対象アドレスのコヒーレンス所有権を有するとの判定に基づいて、前記リクエストに対応した後、レフェリー・モードを開始することと、
前記レフェリー・モードにおいて、前記キャッシュ・メモリが、前記対象アドレスを指定する第2のフラッシュ/クリーン・メモリ・アクセス動作の最後まで、前記複数のプロセッサ・コアによる衝突メモリ・アクセス・リクエストに対して、前記対象アドレスにより識別されるメモリ・ブロックを保護することと、
を含む、方法。 - 前記フラッシュまたはクリーン動作の前記リクエストが、第1のリクエストであり、
前記レフェリー・モードを開始することが、前記第1のリクエストのスヌーピング後、スヌーピング・ロジックによる前記第1のリクエストの処理の完了に先立ち、衝突する第2のリクエストのスヌーピングに基づいて、前記レフェリー・モードを開始することを含む、請求項9に記載の方法。 - 前記キャッシュ・メモリが保護することが、衝突メモリ・アクセス・リクエストに対するRetryコヒーレンス応答を発行することにより、前記衝突メモリ・アクセス・リクエストに対して、前記メモリ・ブロックを保護することを含む、請求項9に記載の方法。
- 前記キャッシュ・メモリが、前記レフェリー・モードにおいて、前記第1のフラッシュ/クリーン・メモリ・アクセス動作と同じクラスのフラッシュ/クリーン・メモリ・アクセス動作の衝突リクエストに対して第1のコヒーレンス応答を提供するとともに、他のタイプの衝突リクエストに対して異なる第2のコヒーレンス応答を提供することをさらに含む、請求項9に記載の方法。
- 前記キャッシュ・メモリが、前記レフェリー・モードにおいて、タイムアウト条件を検出し、前記タイムアウト条件の検出に応答して、前記レフェリー・モードを終了することをさらに含む、請求項9に記載の方法。
- 前記キャッシュ・メモリが前記レフェリー・モードを開始することが、前記対象アドレスと関連付けられた変更キャッシュ・ラインのコヒーレンス所有権を示す前記ディレクトリ中のコヒーレンス状態情報に基づいて、前記レフェリー・モードの開始のみを行うことを含む、請求項9に記載の方法。
- 集積回路を設計、製造、または試験するため、機械可読記憶装置において具象化された設計構造であって、
プロセッサ・コアと、
キャッシュ・メモリであり、
データ・アレイと、
前記データ・アレイの内容のディレクトリであり、コヒーレンス状態情報を含む、前記ディレクトリと、
前記データ・アレイおよび前記ディレクトリの参照によりシステム・ファブリックからスヌーピングされた動作を処理するスヌーピング・ロジックであり、対象アドレスを指定する複数のプロセッサ・コアのうちの1つの第1のフラッシュ/クリーン・メモリ・アクセス動作のリクエストを前記システム・ファブリック上でスヌーピングすることに応答して、
前記キャッシュ・メモリが前記対象アドレスのコヒーレンス所有権を有するか否かを判定することと、
前記キャッシュ・メモリが前記対象アドレスのコヒーレンス所有権を有するとの判定に基づいて、前記リクエストに対応した後、レフェリー・モードを開始することと、
前記レフェリー・モードにおいて、前記対象アドレスを指定する第2のフラッシュ/クリーン・メモリ・アクセス動作の最後まで、前記複数のプロセッサ・コアによる衝突メモリ・アクセス・リクエストに対して、前記対象アドレスにより識別されるメモリ・ブロックを保護することと、
を行う、前記スヌーピング・ロジックと、
を含む、前記キャッシュ・メモリと、
を含む処理ユニットを備えた、設計構造。 - 前記フラッシュまたはクリーン動作の前記リクエストが、第1のリクエストであり、
前記スヌーピング・ロジックが、前記第1のリクエストのスヌーピング後、前記第1のリクエストの処理の完了に先立ち、衝突する第2のリクエストのスヌーピングに基づいて、前記レフェリー・モードを開始するように構成された、請求項15に記載の設計構造。 - 前記スヌーピング・ロジックが、衝突メモリ・アクセス・リクエストに対するRetryコヒーレンス応答を発行することにより、前記衝突メモリ・アクセス・リクエストに対して、前記メモリ・ブロックを保護するように構成された、請求項15に記載の設計構造。
- 前記スヌーピング・ロジックが、前記レフェリー・モードにおいて、前記第1のフラッシュ/クリーン・メモリ・アクセス動作と同じクラスのフラッシュ/クリーン・メモリ・アクセス動作の衝突リクエストに対して第1のコヒーレンス応答を提供するとともに、他のタイプの衝突リクエストに対して異なる第2のコヒーレンス応答を提供するように構成された、請求項15に記載の設計構造。
- 前記スヌーピング・ロジックが、前記レフェリー・モードにおいて、タイムアウト条件を検出し、前記タイムアウト条件の検出に応答して、前記レフェリー・モードを終了する、請求項15に記載の設計構造。
- 前記キャッシュ・メモリが、前記対象アドレスと関連付けられた変更キャッシュ・ラインのコヒーレンス所有権を示す前記ディレクトリ中の前記コヒーレンス状態情報に基づいて、前記レフェリー・モードの開始のみを行う、請求項15に記載の設計構造。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/717,868 US11157409B2 (en) | 2019-12-17 | 2019-12-17 | Cache snooping mode extending coherence protection for certain requests |
US16/717,868 | 2019-12-17 | ||
PCT/EP2020/085894 WO2021122408A1 (en) | 2019-12-17 | 2020-12-14 | Cache snooping mode extending coherence protection for certain requests |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023509334A true JP2023509334A (ja) | 2023-03-08 |
Family
ID=74095797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022535608A Pending JP2023509334A (ja) | 2019-12-17 | 2020-12-14 | 特定のリクエストに対するコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード |
Country Status (5)
Country | Link |
---|---|
US (1) | US11157409B2 (ja) |
EP (1) | EP4066119B1 (ja) |
JP (1) | JP2023509334A (ja) |
CN (1) | CN114761933A (ja) |
WO (1) | WO2021122408A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN114265797B (zh) * | 2021-12-01 | 2024-02-27 | 杭州海康存储科技有限公司 | 存储访问控制装置、硬盘设备及方法 |
Family Cites Families (23)
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 |
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 |
US7000078B1 (en) | 1999-10-01 | 2006-02-14 | Stmicroelectronics Ltd. | System and method for maintaining cache coherency in a shared memory system |
US6763434B2 (en) * | 2000-12-30 | 2004-07-13 | International Business Machines Corporation | Data processing system and method for resolving a conflict between requests to modify a shared cache line |
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 |
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 |
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 |
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 |
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 |
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 |
US10157134B2 (en) * | 2016-04-11 | 2018-12-18 | International Business Machines Corporation | Decreasing the data handoff interval for a reserved cache line based on an early indication of a systemwide coherence response |
US10152417B2 (en) | 2016-04-11 | 2018-12-11 | International Business Machines Corporation | Early freeing of a snoop machine of a data processing system prior to completion of snoop processing for an interconnect operation |
US20180011792A1 (en) | 2016-07-06 | 2018-01-11 | Intel Corporation | Method and Apparatus for Shared Virtual Memory to Manage Data Coherency in a Heterogeneous Processing System |
US10592424B2 (en) * | 2017-07-14 | 2020-03-17 | Arm Limited | Range-based memory system |
US10970215B1 (en) * | 2019-12-03 | 2021-04-06 | International Business Machines Corporation | Cache snooping mode extending coherence protection for certain requests |
-
2019
- 2019-12-17 US US16/717,868 patent/US11157409B2/en active Active
-
2020
- 2020-12-14 EP EP20829836.4A patent/EP4066119B1/en active Active
- 2020-12-14 WO PCT/EP2020/085894 patent/WO2021122408A1/en unknown
- 2020-12-14 JP JP2022535608A patent/JP2023509334A/ja active Pending
- 2020-12-14 CN CN202080084926.7A patent/CN114761933A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021122408A1 (en) | 2021-06-24 |
CN114761933A (zh) | 2022-07-15 |
EP4066119B1 (en) | 2024-01-10 |
US20210182198A1 (en) | 2021-06-17 |
EP4066119A1 (en) | 2022-10-05 |
US11157409B2 (en) | 2021-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9547597B2 (en) | Selection of post-request action based on combined response and input from the request source | |
US9251077B2 (en) | Accelerated recovery for snooped addresses in a coherent attached processor proxy | |
US9229868B2 (en) | Data recovery for coherent attached processor proxy | |
US9390013B2 (en) | Coherent attached processor proxy supporting coherence state update in presence of dispatched master | |
US9251076B2 (en) | Epoch-based recovery for coherent attached processor proxy | |
JP2023509334A (ja) | 特定のリクエストに対するコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード | |
US9146872B2 (en) | Coherent attached processor proxy supporting master parking | |
JP2023504622A (ja) | ある要求に対してコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード | |
US10956070B2 (en) | Zeroing a memory block without processor caching | |
WO2023010975A1 (en) | Data processing system having masters that adapt to agents with differing retry behaviors | |
US11157408B2 (en) | Cache snooping mode extending coherence protection for certain requests | |
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 | |
US11748280B2 (en) | Broadcast scope selection in a data processing system utilizing a memory topology data structure | |
US11561901B1 (en) | Distribution of injected data among caches of a data processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230525 |
|
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: 20240813 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240903 |