JP3661764B2 - 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム - Google Patents
不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム Download PDFInfo
- Publication number
- JP3661764B2 JP3661764B2 JP2000045976A JP2000045976A JP3661764B2 JP 3661764 B2 JP3661764 B2 JP 3661764B2 JP 2000045976 A JP2000045976 A JP 2000045976A JP 2000045976 A JP2000045976 A JP 2000045976A JP 3661764 B2 JP3661764 B2 JP 3661764B2
- Authority
- JP
- Japan
- Prior art keywords
- cache line
- node
- modified cache
- home node
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
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/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- 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/12—Replacement control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、一般にデータ処理の方法およびシステム、詳細には疎ディレクトリ用のエヴィクション・プロトコルを提供するための方法およびシステムに関する。さらに詳細には、本発明は、不均等メモリ・アクセス・コンピュータ・システムにおいて、疎ディレクトリからキャッシュ・ラインをエヴィクトするための方法およびシステムに関する。
【0002】
【従来の技術】
多重プロセッサ(MP)コンピュータ・システムを形成するために、いくつかの個別プロセッサの処理能力を組み合わせることによって、より高いコンピュータ・システムの性能が達成できるということは、コンピュータ技術分野ではよく知られている。MPコンピュータ・システムは、特定アプリケーションの性能要件に応じて、いくつかの異なるトポロジーで設計することができる。たとえば、対称的多重プロセッサ(SMP)構成は、システム・メモリなどの資源が複数のプロセッサによって共用されており一般的に使用される、より単純なMPコンピュータ・システム・トポロジーの1つである。トポロジーの「対称的」という名前は、SMPコンピュータ・システム内のすべてのプロセッサが、システム内のすべての資源に対して対称的なアクセスを有するという事実に由来する。
【0003】
SMPトポロジーは比較的単純なプロセッサ間通信およびデータ共用プロトコルを使用することができるが、SMPトポロジー全体で、特にシステムのスケールが大きくなるほどシステム・メモリ・レベルで、制限されたスケーラビリティおよび帯域幅を有する。その結果、ある程度複雑さが増すことを犠牲にし、SPMトポロジーの多くの制限を解決する代替設計として、不均等メモリ・アクセス(NUMA)として知られる別のMPコンピュータ・システム・トポロジーが出現した。
【0004】
一般的なNUMAコンピュータ・システムは、いくつかの相互接続されたノードを含む。各ノードが少なくとも1つのプロセッサおよびローカル「システム」メモリを含む。NUMAトポロジーという名前は、プロセッサが有するアクセス待ち時間が、そのローカル・ノードのシステム・メモリ内に保管されたデータに関する方が、リモート・ノードのシステム・メモリ内に保管されたデータに関するよりも少ないという事実に由来する。NUMAコンピュータ・システムは、データ・コヒーレンスが異なるノードのキャッシュ間で維持されるか否かに応じて、非キャッシュ・コヒーレントまたはキャッシュ・コヒーレントのいずれかとしてさらに分類できる。NUMAトポロジーは、NUMAコンピュータ・システム内の各ノードを小規模なSMPシステムとして実装することにより、従来のSMPトポロジーが持つスケーラビリティの制限を解決している。したがって、各ノード内の共用構成要素は、ほんのわずかなプロセッサが使用するように最適化できる一方で、システム全体が比較的少ない待ち時間で大規模並列処理が使用可能となるという恩恵を受ける。
【0005】
NUMAコンピュータ・システムの疎ディレクトリに使用するエヴィクション・プロトコルの開発には、関連する問題がいくつかある。第1に、エヴィクトするために選択されるエントリの管理から発生する問題、第2に、エヴィクションを発生させるのに使用されるリモート・トランザクションの生成から発生する問題、そして第3に、ローカル・メモリに実際のデータの書き戻しを引き起こすトランザクションの生成から発生する問題である。
【0006】
【発明が解決しようとする課題】
したがって、NUMAコンピュータ・システムの疎ディレクトリからキャッシュ・ラインをエヴィクトするための改良された方法を提供することが望ましい。
【0007】
【課題を解決するための手段】
本発明の方法およびシステムにより、NUMAコンピュータ・システムは相互接続に結合された少なくとも2つのノードを含む。2つのノードはそれぞれ、ローカル・システム・メモリを含む。疎ディレクトリからのエントリをエヴィクトするための要求に応答して、エントリが修正されたキャッシュ・ラインに関連付けられている場合にその修正されたキャッシュ・ラインを有するノードに、非介入書き戻し要求が送信される。修正されたキャッシュ・ラインからのデータがノードのローカル・システム・メモリに書き戻しされた後、エントリを疎ディレクトリからエヴィクトすることができる。エントリが共用ラインに関連付けられると、表示されているディレクトリ・エントリがラインのコピーを保持できるすべてのノードに、無効化要求が送信される。すべての無効化が確認されると、エントリを疎ディレクトリからエヴィクトすることができる。
【0008】
【発明の実施の形態】
I.NUMAシステム
A.システムの概要
ここで図面、特に図1を参照すると、本発明の好ましい実施形態による、不均等メモリ・アクセス(NUMA)コンピュータ・システムの構成図が示されている。図の実施形態は、たとえば、ワークステーション、サーバ、またはメインフレーム・コンピュータとして実現することができる。図からわかるように、NUMAコンピュータ・システム8は、ノード相互接続22によって相互接続されたいくつか(N個)の処理ノード10a〜10dを含む。処理ノード10a〜10dは、それぞれ少なくとも1つ、最高M個までのプロセッサ12を含む。プロセッサ12a〜12dは同一であり、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレイション(IBM)から市販のPowerPCTMラインのプロセッサを備えることが好ましい。プロセッサ12a〜12dはそれぞれ、レジスタ、命令フロー論理、およびプログラム命令を実行するのに使用される実行ユニットに加えて、それぞれがレベル2(L2)キャッシュ14a〜14dと共に、システム・メモリ18から関連するプロセッサ12にデータをステージングする際に使用される、オンチップのレベル1(L1)キャッシュ(図示せず)を含む。つまり、L1キャッシュおよびL2キャッシュ14a〜14dは、関連するプロセッサ12によってアクセスされることの多いデータを一時的にバッファする、システム・メモリ18とプロセッサ12との間の中間記憶装置として機能する。L2キャッシュ14は一般にL1キャッシュよりも記憶域が大きいが、アクセス待ち時間は長くなる。たとえば、L2キャッシュ14a〜14dの記憶容量は1〜16メガバイト(MB)であり、オンチップのL1キャッシュの記憶容量は8〜32キロバイトである。L2キャッシュ14a〜14dは、図1ではプロセッサ12の外部にあるものとして図示されているが、別法として、追加レベルのオンチップ・キャッシュ・メモリとして、関連するプロセッサ12中に組み込むこともできることを理解されたい。さらに、追加のデータ記憶域を提供するために、1つまたは複数の追加レベルのキャッシュ・メモリ(L3、L4等)が使用できることも理解されたい。以下の考察では、プロセッサ12およびその関連するキャッシュ階層(L1、L2等)が、それぞれ単一のスヌーパであるとみなされる。
【0009】
図からわかるように、処理ノード10a〜10dはそれぞれ、システム・メモリ18およびL2キャッシュ14a〜14dと共にローカル相互接続16に結合されたノード制御装置20をさらに含む。各ノード制御装置20は、少なくとも2つの機能を実行することにより、リモート処理ノード10に対するローカル・エージェントとして働く。第1に各ノード制御装置20は、リモート処理ノード10へのローカル通信トランザクションの伝送を容易にするために、関連するローカル相互接続16をスヌープする。第2に、各ノード制御装置20は、ノード相互接続22上の通信トランザクションをスヌープし、関連するローカル相互接続16上の関連する通信トランザクションのマスタとなる。各ローカル相互接続16上での通信は、アービタ24によって制御される。以下で詳述するように、アービタ24は、プロセッサ12により生成されたバス要求信号に基づいてローカル相互接続16へのアクセスを規制し、ローカル相互接続16上でスヌープされた通信トランザクションに関するコヒーレンス応答をコンパイルする。
【0010】
もちろん、NUMAコンピュータ・システム8は、追加装置をさらに含むことができる。これらの追加装置は、本発明を理解するのに必要でなく、したがって本発明を不明瞭にするのを避けるために省略される。たとえば各ノード10は、入出力装置(たとえば、表示装置、キーボード、またはグラフィカル・ポインタ)、オペレーティング・システムおよびアプリケーション・ソフトウェアを格納するための不揮発性記憶装置、ならびにネットワークまたは付属装置に接続するためのシリアル・ポートおよびパラレル・ポートもサポートすることができる。
【0011】
B.メモリ構成
NUMAコンピュータ・システム8のすべてのプロセッサ12は、単一の物理メモリ領域を共用しており、これは、各物理アドレスがいずれか1つのシステム・メモリ18内で単一のロケーションのみに関連付けられていることを意味する。したがって、一般にNUMAコンピュータ・システム8内の任意のプロセッサ12によるアクセスが可能なシステム・メモリ全体の内容を、4つのシステム・メモリ18間で区分されているものと見なすことができる。たとえば、図1に示された本発明の例示的実施形態では、プロセッサ12は、汎用メモリ領域および未使用領域の両方を含む、16ギガバイトのアドレス領域をアドレス指定する。汎用メモリ領域は、500メガバイトのセグメントに分割され、4つの各処理ノード10が4番目ごとのセグメントに割り振られる。未使用領域はおよそ2ギガバイトを含むことが可能であり、システム制御、ならびにそれぞれがいずれか1つの各処理ノード10に割り振られている周辺のメモリおよび入出力領域を含む。
【0012】
この考察では、特定のデータをそのシステム・メモリ18に格納する処理ノードを、そのデータのホーム・ノードと呼び、他の処理ノードを特定のデータに関するリモート・ノードと呼ぶ。
【0013】
C.メモリのコヒーレンス
各システム・メモリ18内に格納されたデータは、NUMAコンピュータ・システム8内の任意のプロセッサ12による要求、アクセス、および修正が可能であるため、NUMAコンピュータ・システム8は、同じ処理ノード内のキャッシュ間および異なる処理ノード内のキャッシュ間の両方でコヒーレンスを維持するために、キャッシュ・コヒーレンス・プロトコルを実装する。したがって、NUMAコンピュータ・システム8は、CC−NUMAコンピュータ・システムとして分類するのが適切である。実装されるキャッシュ・コヒーレンス・プロトコルは実装依存型であり、たとえば周知の修正(M)、排他的(E)、共用(S)、無効(I)(MESI)プロトコルまたはその変形を備えることができる。以下では、L1キャッシュ、L2キャッシュ14、およびアービタ24が従来のMESIプロトコルを実装するが、そのノード制御装置20はM、S、およびI状態を認識し、E状態は正確さのためにM状態にマージされるとみなされる。すなわちノード制御装置20は、リモート・キャッシュによって排他的に保持されるデータが実際に修正されたかどうかにかかわらず、そのデータを修正されたと想定する。
【0014】
D.相互接続アーキテクチャ
ローカル相互接続16およびノード相互接続22は、それぞれ任意のバス・ベースの同報通信アーキテクチャ、スイッチ・ベースの同報通信アーキテクチャ、またはスイッチ・ベースの非同報通信アーキテクチャを使って実装することができる。ただし、好ましい実施形態では、少なくともノード相互接続22は、IBMコーポレイションによって開発された6xx通信プロトコルによって制御されるスイッチ・ベースの非同報通信相互接続として実装されている。ローカル相互接続16およびノード相互接続22では分割トランザクションが可能であるが、これはアドレスと通信トランザクションを備えたデータ保有期間との間に固定されたタイミング関係がなく、データ・パケットに対して関連するアドレス・パケットとは異なった命令を出すことができることを意味する。ローカル相互接続16およびノード相互接続22の使用度を、通信トランザクションのパイプライン化によって定めることも好ましい。そうすると、前の通信トランザクションのマスタが各受信者からのコヒーレンス応答を受け取る前に、後続の通信トランザクションがソースとなることが可能となる。
【0015】
ノード相互接続22を介した処理ノード10間で、およびローカル相互接続16を介したスヌーパ間で情報を搬送するために、実装される相互接続アーキテクチャのタイプにかかわらず、アドレス、データ、およびコヒーレンス応答という、少なくとも3タイプの「パケット」(ここで使用されるパケットとは、一般に情報の個別単位を指す)が使用される。ここで表1および表2を参照すると、アドレスおよびデータ・パケットに関する関連フィールドの要約および定義がそれぞれ与えてある。
【表1】
【表2】
【0016】
表1および表2に示すように、受信者ノードまたはスヌーパが各パケットが属する通信トランザクションを判定できるようにするために、通信トランザクション内の各パケットはトランザクション・タグで識別される。追加のフロー制御論理および関連するフロー制御信号を使用して、有限の通信資源の使用が規制できることを、当業者であれば理解されよう。
【0017】
各処理ノード10内では、状態およびコヒーレンス応答が各スヌーパとローカル・アービタ24との間で通信される。状態およびコヒーレンス通信に使用されるローカル相互接続16内の信号ラインを、以下の表3にまとめて示す。
【表3】
【0018】
ローカル相互接続16のARespラインおよびAStatラインを介して伝送される状態およびコヒーレンス応答は、関連するアドレス・パケットとの間に、固定されているがプログラム可能なタイミング関係を有することが好ましい。たとえば、ローカル相互接続16上で伝送されるアドレス・パケットを各スヌーパが首尾よく受け取ったか否かに関する予備表示を与えるAStatOutボートが、アドレス・パケットを受け取った後の第2サイクルで要求される場合がある。アービタ24は、AStatOutボートをコンパイルし、次いで、固定されているがプログラム可能な数のサイクル(たとえば1サイクル)後に、AStatInボートを発行する。可能なAStatボートを、以下の表4にまとめて示す。
【表4】
【0019】
AStatIn期間に続き、固定されているがプログラム可能な数のサイクル(たとえば2サイクル)後に、ARespOutボートが要求される場合がある。アービタ24は、好ましくは次のサイクル中に、各スヌーパのARespOutボートをコンパイルしてARespInボートも送達する。可能なARespボートは、降順の優先順位でARespボートなどをリスト表示した、以下の表5にまとめて示すコヒーレンス応答を含むことが好ましい。
【表5】
【0020】
通常はノード制御装置20によって発行されるReRun ARespボートは、スヌープされた要求が長い待ち時間を有し(たとえば、リモート処理ノード側のプロセッサ12またはシステム・メモリ18によって要求が提供される)、要求のソースが後でトランザクションを再発行するように命令されることを示す。したがって、Retry ARespボートとは対照的に、ReRunは、ReRunをボートしたトランザクションの受信者(トランザクションの発信者ではない)に、通信トランザクションを後で再発行させる義務を負わせる。
【0021】
次に図2を参照すると、相互接続22上のノード制御装置20間で応答およびコマンドを通信する際に使用される、Iコマンドの例示的実施形態が示されている。図からわかるように、Iコマンド36は、コマンド・タイプ・フィールド33、ターゲット・ノード・フィールド35、ソース・ノード・フィールド37、トランザクション・タグ・フィールド38、および有効(V)フィールド39という、5つのフィールドを含む。コマンド・タイプ・フィールド33は、Iコマンド36のタイプの符号化表示を提供する。コマンド・タイプ・フィールド33内で符号化できる可能なIコマンドのいくつかを、以下の表6にまとめて示す。
【表6】
【0022】
各タイプのIコマンドについて、受信者はターゲット・ノード・フィールド35に指定され、送信側ノードはソース・ノード・フィールド37に指定され、Iコマンドが関係するトランザクションはトランザクション・タグ・フィールド38内に指定される。Iコマンド36の妥当性は、有効(V)フィールド39によって示される。
【0023】
E.ノード制御装置
次に図3を参照すると、図1のNUMAコンピュータ・システム8のノード制御装置20をより詳細に表した構成図が例示されている。図3からわかるように、ローカル相互接続16とノード相互接続22との間に結合されている各ノード制御装置20は、トランザクション受信ユニット(TRU)40、トランザクション送信ユニット(TSU)42、データ受信ユニット(DRU)44、およびデータ送信ユニット(DSU)46を含む。TRU40、TSU42、DRU44、およびDSU46は、たとえばフィールド・プログラム可能ゲート配列(FPGA)またはアプリケーション特有の集積回路(ASIC)を使って実装することができる。図に示すように、ノード・コントローラ20を介したアドレス・パスおよびデータ・パスは、アドレス信号はTRU40およびTSU42で処理され、データ信号はDSU44およびDRU46で処理されるように、2つに分岐する。
【0024】
ノード相互接続22のトランザクション・フロー・オフを示すように指定されているTRU40は、Iコマンド・チャネルを介して他のノードからIコマンドを受信すること、ノード相互接続22の共用アドレス・バスからトランザクションを受け入れること、ローカル相互接続16上でトランザクションを発行すること、およびTSU42に応答を転送することに対する責任を負っている。TRU40は、ノード相互接続22からトランザクションを受信し、TSU42内のマスタ54およびコヒーレンス応答論理56の両方に選択したトランザクションを渡す、応答マルチプレクサ52を含む。応答マルチプレクサ52からの通信トランザクションの受信に応答して、バス・マスタ54は、受信された通信トランザクションと同じか、またはエヴィクションなどディレクトリ保守のためにTSU内でディレクトリ制御用に生成される、そのローカル相互接続16上での通信トランザクションを開始することができる。
【0025】
ノード相互接続22上でトランザクションを流すためのコンジットであるTSU42は、その名称が示すように、TRU40と対話してメモリ要求トランザクションを処理し、DRU44およびDSU46にコマンドを発行してローカル相互接続16とノード相互接続22との間のデータ伝送を制御する。TSU42はさらに、コヒーレンス応答論理56を備えたノード相互接続22のために選択した(すなわちMSI)コヒーレンス・プロトコルを実装し、ディレクトリ制御論理58を備えたコヒーレンス・ディレクトリ50を維持する。
【表7】
【0026】
コヒーレンス・ディレクトリ50は、ローカル処理ノードがホーム・ノードであるリモート・ノード内でキャッシュに対して確認されたデータのシステム・メモリ・アドレスの表示(たとえばキャッシュ・ライン)を格納する。各データに関するこのアドレス表示は、こうした各リモート処理ノードでのデータのコピーおよびデータのコヒーレンス状態を有する、各リモート処理ノードの識別子に関連して格納される。コヒーレンス・ディレクトリ50のエントリに関する可能なコヒーレンス状態を、表7にまとめて示す。表7に示すように、リモート処理ノードによって保持されるキャッシュ・ラインのコヒーレンス状態に関する知識は不正確である。この不正確さは、リモートに保持されたキャッシュ・ラインが、ホーム・ノードのノード制御装置20に通知せずに、SからI、EからI、またはEからMへの移行を実行できるという事実による。
【0027】
II.疎ディレクトリのエヴィクションの概要
ここで図4を参照すると、本発明の好ましい実施形態による、NUMAコンピュータ・システム内の疎ディレクトリ用のエヴィクション論理の構成図が示されている。図からわかるように、エヴィクション論理60は、エヴィクション選択論理61、エヴィクト生成論理62、およびエヴィクション・バッファ63の3つの構成要素を含む。エヴィクション選択論理61は、(図3のコヒーレンス・ディレクトリ50のような)コヒーレンス・ディレクトリ内にある現在のエントリの状態を利用して、エヴィクションに「最高の」選択を決定する。コヒーレンス・ディレクトリ内にあるすべてのエントリが保留状態にある場合、エヴィクション・ビジー・フラグが設定される。エヴィクション・ビジー・フラグが設定されると、コヒーレンス・ディレクトリで失敗し、コヒーレンス・ディレクトリにエントリを必要とするすべてのトランザクションは再試行される。エヴィクト生成論理62は、エヴィクション用に選択されたエントリ(または候補)を受け入れ、エヴィクションを完了させるのに必要な正しい相互接続トランザクションを生成する。エヴィクションを完了させるのにどんな応答が必要であるかに関する情報を保持するのに加えて、エヴィクション・バッファ63はエヴィクトされるメモリ・ラインのアドレスを保持する。エヴィクトされるメモリ・ライン用に新しい要求が受信されると、その要求は再試行される。エヴィクションがいったん完了すると、エントリはエヴィクション論理60から削除される。コヒーレンス・ディレクトリは、メイン・コヒーレンス・ディレクトリ内にあるエントリが新しいエントリに更新されるまでは、エヴィクトされるエントリがアクセスされないことを保証する。
【0028】
さらに、エヴィクト選択論理61は、エヴィクションのためにコヒーレンス・ディレクトリからエントリを選択する場合に、優先順ランダム方式を使用する。優先順ランダム方式の優先順位は、コヒーレンス・ディレクトリの状態に基づいている。一般に共用エントリが第1に選択され、修正エントリがその次に選択されるが、保留されているエントリはエヴィクトできない。共用状態または修正状態のいずれかで同じ状態のエントリ・グループでは、エヴィクトするエントリを選択するのに連続カウンタが使用される。
【0029】
次に図5を参照すると、本発明の好ましい実施形態による、疎ディレクトリ内でのエントリの構成図が示されている。図からわかるように、エントリ70は、インデックス・フィールド71、ビット・ベクトル・フィールド72、および状態フィールド73を含む。インデックス・フィールド71は、キャッシュ・ラインのタグを格納する。ビット・ベクトル・フィールド72は、どのノードがインデックス・フィールド71を有するラインを含んでいるかを示す。ベクトル・フィールド72内のサイズ(すなわちベクトル数)は、NUMAコンピュータ・システム内のノード数に対応していなければならない。ビットViとはノードiを表している。状態フィールド73は、インデックス・フィールド71に格納されたタグを有するラインの状態を示す。
【0030】
III.疎ディレクトリのエヴィクション・プロトコル
共用エントリを無効にするために、エヴィクション論理60は無効化トランザクションを生成するが、この例では、コヒーレンス・ディレクトリがその中に共用コピーが格納されている可能性があることを示す、NUMAコンピュータ・システム内のすべてのノードに転送されるDClaimトランザクションである。トランザクションには、宛先ノードにある(図3のトランザクション受信ユニット40のような)トランザクション受信ユニットを、トランザクションが消去応答で完了するまで継続してローカルで強制的に再試行させる、AutoRetryビットが設定されて発行される。トランザクションが完了すると、応答はエヴィクション・バッファ63に返信される。エヴィクション・バッファ63がすべてのDClaimトランザクションに関する確認を受信すると、エントリはエヴィクション・バッファ63から削除される。この時点で、ラインは疎ディレクトリから削除されている。
【0031】
ただし、修正エントリを無効にする場合、ローカル・メモリはエヴィクトされたデータがあれば受け入れる必要がある。これを実行するには、この例では修正を意図した読取り(Read-with-intent-to-modify)(RWITM)である、介入が禁止された無効化読取りとAutoRetryビットのセットが使用される。AutoRetryビットは、前述のDClaimトランザクションと同様に機能する。非介入モードは、データを所有しているプロセッサに対して、ホーム・ノードで発行される予定のメモリにトランザクションを強制的に生成させ、データをホーム・ノードのローカル・メモリに書き戻せるようにする必要がある。エヴィクション論理60は、データがローカル・メモリに書き戻されるまで、エントリがエヴィクション・バッファ63から消去されないことも保証しなければならない。非介入フラッシング要求を使用すると、所有しているプロセッサは、書き戻しトランザクションを生成し、システムはそれに適切な衝突検出規則を適用する。エヴィクション論理は、修正されたデータがホーム・ノードのシステム・メモリに書き戻されたことが保証された時点で完全に終了するまで、RWITM要求の試行を継続するためにだけ必要である。
【0032】
たとえば、図6ないし図8に示すように、ホーム・ノード10aは、ラインがリモート・ノード10bで修正状態に保持される可能性のある、ディレクトリ・エントリのエヴィクションを試行している。エヴィクション論理(図4から)は、図6に示すように、AutoRetryビットがアサートされ、介入可能ビットがアサートされていないRWITMトランザクション(すなわち非介入RWITMトランザクション)を生成する。リモート・ノード10bでRWITMトランザクションが発行されると、以下の3つのシナリオのうち1つが可能になる。第1のシナリオは、修正されたデータをシステム・メモリに戻そうとするとプロセッサが再試行を生成する以外の理由で、RWITMトランザクションが再試行できるものである。このシナリオでは、AutoRetryモードが、トランザクション受信ユニットにRWITMトランザクションをノード10bで強制的に再発行させる。第2のシナリオは、リモート・ノード10bに修正されたキャッシュ・ラインがない可能性があり、RWITMが消去応答を受信するというものである。ノード制御装置20bの(図3のトランザクション受信ユニット40のような)トランザクション受信ユニットは、その後エヴィクション論理に応答を返信し、エヴィクションが完了する。第3のシナリオは、キャッシュに修正されたキャッシュ・ラインがある可能性があり、介入が禁止されているので、プロセッサはRWITMを再試行した後、書き戻しキル(write-back-kill)(WBK)要求で、データをローカル・メモリに戻そうとする。
【0033】
次いでノード10bのノード制御装置20は、このトランザクションをリモート・メモリへの要求としてReRunする。その間、ノード制御装置20b内のトランザクション受信ユニットは、図7に示すようにエヴィクションRWITMトランザクションの再試行を継続するが、ノード制御装置20b内のトランザクション受信ユニットがWBKトランザクションをReRunしたので、ノード制御装置20b内のトランザクション送信ユニットはエヴィクションRWITMトランザクションを再試行する。ホーム・ノード10aでWBK要求が完了し、データ転送が完了すると、ホーム・ノード10aは応答をリモート・ノード10bに返信し、図8に示すように、ノード制御装置20b内のトランザクション送信ユニットにある保留バッファからWBK要求を消去する。ノード制御装置20b内のトランザクション送信ユニットがエヴィクション・トランザクションを再度発行しようとすると、所有しているプロセッサに修正されたキャッシュ・ラインがなくなるので、ノード制御装置20b内のトランザクション受信ユニットが消去応答を受信する。ノード制御装置20b内のトランザクション受信ユニットは、保留バッファを消去するノード10a内のエヴィクション論理に応答を転送によって戻す。修正されたキャッシュ・ライン用のエントリを格納しているディレクトリ・エントリは、これでノードのコヒーレンス・ディレクトリから首尾よくエヴィクトされ、ローカル・メモリには有効なデータが格納される。
【0034】
以上述べてきたように、本発明は、NUMAコンピュータ・システム内で、疎ディレクトリにエヴィクション・プロトコルを提供するための方法を提供する。
【0035】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0036】
(1)相互接続に結合された少なくとも2つのノードを含み、前記少なくとも2つのノードがそれぞれローカル・システム・メモリを含む、不均等メモリ・アクセス(NUMA)コンピュータ・システムにおいて、疎ディレクトリにエヴィクション・プロトコルを提供するための方法であって、
エントリを疎ディレクトリからエヴィクトするための要求に応答し、前記エントリが修正されたキャッシュ・ラインに関連付けられており、非介入書き戻し要求を前記修正されたキャッシュ・ラインを持たないノードに送信するステップと、
前記ノードのローカル・システム・メモリに書き戻しされた後、前記エントリを前記疎ディレクトリからエヴィクトするステップとを含む方法。
(2)前記非介入書き戻し要求が、AutoRetryを備えた非介入書き戻しである、上記(1)に記載の方法。
(3)前記非介入書き戻し要求が、非介入の読取りを意図した修正トランザクションである、上記(1)に記載の方法。
(4)相互接続に結合された少なくとも2つのノードを含み、前記少なくとも2つのノードがそれぞれローカル・システム・メモリを含む、疎ディレクトリにエヴィクション・プロトコルを提供できる不均等メモリ・アクセス(NUMA)コンピュータ・システムであって、
エントリを疎ディレクトリからエヴィクトするための要求に応答し、ここで前記エントリが修正されたキャッシュ・ラインに関連付けられており、非介入書き戻し要求を前記修正されたキャッシュ・ラインを持つノードに送信する手段と、前記ノードのローカル・システム・メモリに書き戻しされた後、前記エントリを前記疎ディレクトリからエヴィクトする手段とを含むNUMAコンピュータ・システム。
(5)前記非介入書き戻し要求が、AutoRetryを備えた非介入書き戻しである、上記(4)に記載のNUMAコンピュータ・システム。
(6)前記非介入書き戻し要求が、非介入の読取りを意図した修正トランザクションである、上記(4)に記載のNUMAコンピュータ・システム。
【図面の簡単な説明】
【図1】本発明の好ましい実施形態による、不均等メモリ・アクセス(NUMA)コンピュータ・システムの構成図である。
【図2】I−コマンドの例示的実施形態を示す図である。
【図3】図1に示されたノード制御装置のさらに詳細な構成図である。
【図4】本発明の好ましい実施形態による、疎ディレクトリに関するエヴィクション論理の構成図である。
【図5】本発明の好ましい実施形態による、疎ディレクトリ内にあるエントリの構成図である。
【図6】本発明の好ましい実施形態による、NUMAコンピュータ・システムの疎ディレクトリからキャッシュ・ラインをエヴィクトするための方法を示す図である。
【図7】本発明の好ましい実施形態による、NUMAコンピュータ・システムの疎ディレクトリからキャッシュ・ラインをエヴィクトするための方法を示す図である。
【図8】本発明の好ましい実施形態による、NUMAコンピュータ・システムの疎ディレクトリからキャッシュ・ラインをエヴィクトするための方法を示す図である。
【符号の説明】
10a 処理ノード
10b 処理ノード
12a プロセッサ
16 ローカル相互接続
18 メモリ
20a ノード制御装置
20b ノード制御装置
24 アービタ
Claims (6)
- 相互接続に結合された少なくとも2つのノードを含み、前記少なくとも2つのノードがそれぞれローカル・システム・メモリ及びコヒーレンス・ディレクトリを含む、不均等メモリ・アクセス(NUMA)コンピュータ・システムにおいて、キャッシュ・ラインのエントリを保持して疎ディレクトリを構成する前記コヒーレンス・ディレクトリにエヴィクション・プロトコルを提供するための方法であって、
キャッシュ・ラインのエントリを前記コヒーレンス・ディレクトリからエヴィクトするための要求に応答し、前記エントリが修正されたキャッシュ・ラインに関連付けられている場合に、前記修正されたキャッシュ・ラインのホーム・ノードから非介入書き戻し要求を前記修正されたキャッシュ・ラインを持つリモート・ノードに送信し、前記リモート・ノードにおいて非介入書き戻し要求を再発行している間に前記修正されたキャッシュ・ラインを書き戻すために前記リモート・ノードから前記ホーム・ノードに書き戻し要求を発行するステップと、
前記修正されたキャッシュ・ラインをホーム・ノードのローカル・システム・メモリに書き戻した後、前記エントリを前記コヒーレンス・ディレクトリからエヴィクトするステップと、を含み、
前記不均等メモリ・アクセス(NUMA)コンピュータ・システムは、前記修正されたキャッシュ・ラインが前記ホーム・ノードのローカル・システム・メモリに書き戻されるまで、エヴィクトされるキャッシュ・ラインのアドレスを保持するエヴィクション・バッファを備えており、
前記非介入書き戻し要求は、前記修正されたキャッシュ・ラインを所有しているプロセッサに対して、ホーム・ノードで発行される予定の、メモリに対するトランザクションを強制的に生成させ、前記修正されたキャッシュ・ラインをホーム・ノードのローカル・システム・メモリに書き戻せるようにするものであり、前記修正されたキャッシュ・ラインが前記ホーム・ノードのシステム・メモリに書き戻されたことが保証された時点で完全に終了するまで試行を継続するAutoRetryを備えたものであることを特徴とする方法。 - 前記非介入書き戻し要求が、前記修正されたキャッシュ・ラインが前記ホーム・ノードのシステム・メモリに書き戻されたことが保証された時点で完全に終了するまで試行を継続するAutoRetryを備えたものである、請求項1に記載の方法。
- 前記非介入書き戻し要求が、非介入の修正を意図した読取りトランザクションである、請求項1に記載の方法。
- 相互接続に結合された少なくとも2つのノードを含み、前記少なくとも2つのノードがそれぞれローカル・システム・メモリ及びコヒーレンス・ディレクトリを含み、キャッシュ・ラインのエントリを保持して疎ディレクトリを構成する前記コヒーレンス・ディレクトリにエヴィクション・プロトコルを提供する不均等メモリ・アクセス(NUMA)コンピュータ・システムであって、
キャッシュ・ラインのエントリを前記コヒーレンス・ディレクトリからエヴィクトするための要求に応答し、前記エントリが修正されたキャッシュ・ラインに関連付けられている場合に、前記修正されたキャッシュ・ラインのホーム・ノードから非介入書き戻し要求を前記修正されたキャッシュ・ラインを持つリモート・ノードに送信し、前記リモート・ノードにおいて非介入書き戻し要求を再発行している間に前記修正されたキャッシュ・ラインを書き戻すために前記リモート・ノードから前記ホーム・ノードに書き戻し要求を発行する手段と、
前記修正されたキャッシュ・ラインをホーム・ノードのローカル・システム・メモリに書き戻した後、前記エントリを前記コヒーレンス・ディレクトリからエヴィクトする手段と、を含み、
前記不均等メモリ・アクセス(NUMA)コンピュータ・システムは、前記修正されたキャッシュ・ラインが前記ホーム・ノードのローカル・システム・メモリに書き戻されるまで、エヴィクトされるキャッシュ・ラインのアドレスを保持するエヴィクション・バッファを備えており、
前記非介入書き戻し要求は、前記修正されたキャッシュ・ラインを所有しているプロセッサに対して、ホーム・ノードで発行される予定の、メモリに対するトランザクションを強制的に生成させ、前記修正されたキャッシュ・ラインをホーム・ノードのローカル・システム・メモリに書き戻せるようにするものであり、前記修正されたキャッシュ・ラインが前記ホーム・ノードのシステム・メモリに書き戻されたことが保証された時点で完全に終了するまで試行を継続するAutoRetryを備えたものであることを特徴とするNUMAコンピュータ・システム。 - 前記非介入書き戻し要求は、前記修正されたキャッシュ・ラインが前記ホーム・ノードのシステム・メモリに書き戻されたことことが保証された時点で完全に終了するまで試行を継続するAutoRetryを備えたものである、請求項4に記載のNUMAコンピュータ・システム。
- 前記非介入書き戻し要求が、非介入の修正を意図した読取りトランザクションである、請求項4に記載のNUMAコンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/259,365 US6266743B1 (en) | 1999-02-26 | 1999-02-26 | Method and system for providing an eviction protocol within a non-uniform memory access system |
US09/259365 | 1999-02-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000250884A JP2000250884A (ja) | 2000-09-14 |
JP3661764B2 true JP3661764B2 (ja) | 2005-06-22 |
Family
ID=22984643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000045976A Expired - Fee Related JP3661764B2 (ja) | 1999-02-26 | 2000-02-23 | 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US6266743B1 (ja) |
JP (1) | JP3661764B2 (ja) |
CN (1) | CN1156771C (ja) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438658B1 (en) * | 2000-06-30 | 2002-08-20 | Intel Corporation | Fast invalidation scheme for caches |
US6434673B1 (en) * | 2000-06-30 | 2002-08-13 | Intel Corporation | Optimized configurable scheme for demand based resource sharing of request queues in a cache controller |
US6993631B2 (en) * | 2002-05-15 | 2006-01-31 | Broadcom Corporation | L2 cache maintaining local ownership of remote coherency blocks |
US7266587B2 (en) * | 2002-05-15 | 2007-09-04 | Broadcom Corporation | System having interfaces, switch, and memory bridge for CC-NUMA operation |
US7003631B2 (en) * | 2002-05-15 | 2006-02-21 | Broadcom Corporation | System having address-based intranode coherency and data-based internode coherency |
US6965973B2 (en) * | 2002-05-15 | 2005-11-15 | Broadcom Corporation | Remote line directory which covers subset of shareable CC-NUMA memory space |
US6920532B2 (en) * | 2002-11-05 | 2005-07-19 | Newisys, Inc. | Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems |
US6934814B2 (en) * | 2002-11-05 | 2005-08-23 | Newisys, Inc. | Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering |
US6925536B2 (en) * | 2002-11-05 | 2005-08-02 | Newisys, Inc. | Cache coherence directory eviction mechanisms for unmodified copies of memory lines in multiprocessor systems |
US8751753B1 (en) | 2003-04-09 | 2014-06-10 | Guillermo J. Rozas | Coherence de-coupling buffer |
US7370154B2 (en) * | 2004-02-24 | 2008-05-06 | Silicon Graphics, Inc. | Method and apparatus for maintaining coherence information in multi-cache systems |
JP4335298B2 (ja) | 2006-02-24 | 2009-09-30 | 富士通株式会社 | スヌープ制御方法および情報処理装置 |
JP4373485B2 (ja) * | 2006-02-28 | 2009-11-25 | 富士通株式会社 | 情報処理装置及び該制御方法 |
US8898652B2 (en) * | 2006-03-23 | 2014-11-25 | Microsoft Corporation | Cache metadata for accelerating software transactional memory |
US20080209131A1 (en) * | 2006-11-22 | 2008-08-28 | Kornegay Marcus L | Structures, systems and arrangements for cache management |
US20080120469A1 (en) * | 2006-11-22 | 2008-05-22 | International Business Machines Corporation | Systems and Arrangements for Cache Management |
US8782348B2 (en) * | 2008-09-09 | 2014-07-15 | Via Technologies, Inc. | Microprocessor cache line evict array |
CN103181132B (zh) * | 2012-10-15 | 2015-11-25 | 华为技术有限公司 | 请求报文处理方法以及发送方法、节点和系统 |
CN103488606B (zh) * | 2013-09-10 | 2016-08-17 | 华为技术有限公司 | 基于节点控制器的请求响应方法和装置 |
US9866498B2 (en) * | 2014-12-23 | 2018-01-09 | Intel Corporation | Technologies for network packet cache management |
KR102428563B1 (ko) * | 2015-09-30 | 2022-08-03 | 삼성전자주식회사 | 수눕 작동을 관리하는 코히런트 인터커넥트와 이를 포함하는 데이터 처리 장치들 |
WO2017077502A1 (en) | 2015-11-04 | 2017-05-11 | Green Cache AB | Systems and methods for implementing coherent memory in a multiprocessor system |
JP2019537097A (ja) * | 2016-09-29 | 2019-12-19 | ベリタス テクノロジーズ エルエルシー | Iノードのアクセスパターンの追跡及びiノードの先取り |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4775955A (en) | 1985-10-30 | 1988-10-04 | International Business Machines Corporation | Cache coherence mechanism based on locking |
US4885680A (en) | 1986-07-25 | 1989-12-05 | International Business Machines Corporation | Method and apparatus for efficiently handling temporarily cacheable data |
US5313609A (en) | 1991-05-23 | 1994-05-17 | International Business Machines Corporation | Optimum write-back strategy for directory-based cache coherence protocols |
JP3200757B2 (ja) | 1993-10-22 | 2001-08-20 | 株式会社日立製作所 | 並列計算機の記憶制御方法および並列計算機 |
US5684977A (en) | 1995-03-31 | 1997-11-04 | Sun Microsystems, Inc. | Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system |
US5680576A (en) | 1995-05-05 | 1997-10-21 | Silicon Graphics, Inc. | Directory-based coherence protocol allowing efficient dropping of clean-exclusive data |
US5893144A (en) * | 1995-12-22 | 1999-04-06 | Sun Microsystems, Inc. | Hybrid NUMA COMA caching system and methods for selecting between the caching modes |
US6085295A (en) * | 1997-10-20 | 2000-07-04 | International Business Machines Corporation | Method of maintaining data coherency in a computer system having a plurality of interconnected nodes |
US6108764A (en) * | 1998-12-17 | 2000-08-22 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention |
-
1999
- 1999-02-26 US US09/259,365 patent/US6266743B1/en not_active Expired - Fee Related
- 1999-12-27 CN CNB991270614A patent/CN1156771C/zh not_active Expired - Fee Related
-
2000
- 2000-02-23 JP JP2000045976A patent/JP3661764B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1156771C (zh) | 2004-07-07 |
CN1264873A (zh) | 2000-08-30 |
JP2000250884A (ja) | 2000-09-14 |
US6266743B1 (en) | 2001-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3661764B2 (ja) | 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム | |
US6115804A (en) | Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention | |
US6275907B1 (en) | Reservation management in a non-uniform memory access (NUMA) data processing system | |
EP1153349B1 (en) | Non-uniform memory access (numa) data processing system that speculatively forwards a read request to a remote processing node | |
US6108764A (en) | Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention | |
US6571322B2 (en) | Multiprocessor computer system with sectored cache line mechanism for cache intervention | |
CA2280172C (en) | Non-uniform memory access (numa) data processing system that holds and reissues requests at a target processing node in response to a retry | |
US5940856A (en) | Cache intervention from only one of many cache lines sharing an unmodified value | |
US8495308B2 (en) | Processor, data processing system and method supporting a shared global coherency state | |
CA2271536C (en) | Non-uniform memory access (numa) data processing system that buffers potential third node transactions to decrease communication latency | |
JP3629511B2 (ja) | 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム | |
US5963974A (en) | Cache intervention from a cache line exclusively holding an unmodified value | |
US6279085B1 (en) | Method and system for avoiding livelocks due to colliding writebacks within a non-uniform memory access system | |
US5940864A (en) | Shared memory-access priorization method for multiprocessors using caches and snoop responses | |
US6269428B1 (en) | Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system | |
US5943685A (en) | Method of shared intervention via a single data provider among shared caches for SMP bus | |
US6226718B1 (en) | Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system | |
US7024520B2 (en) | System and method enabling efficient cache line reuse in a computer system | |
CA2279138C (en) | Non-uniform memory access (numa) data processing system that decreases latency by expediting rerun requests | |
US6336169B1 (en) | Background kill system bus transaction to optimize coherency transactions on a multiprocessor system bus | |
US6658536B1 (en) | Cache-coherency protocol with recently read state for extending cache horizontally | |
US6484241B2 (en) | Multiprocessor computer system with sectored cache line system bus protocol mechanism | |
US6553462B2 (en) | Multiprocessor computer system with sectored cache line mechanism for load and store operations | |
US10489292B2 (en) | Ownership tracking updates across multiple simultaneous operations | |
US6826654B2 (en) | Cache invalidation bus for a highly scalable shared cache memory hierarchy |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040120 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040409 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20040409 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040409 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040622 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040820 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20040907 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050308 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20050308 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050315 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |