JP3575595B2 - 不均等メモリ・アクセス・システム内で書き戻しの衝突によって生じるライブロックを避けるための方法およびシステム - Google Patents
不均等メモリ・アクセス・システム内で書き戻しの衝突によって生じるライブロックを避けるための方法およびシステム Download PDFInfo
- Publication number
- JP3575595B2 JP3575595B2 JP2000045748A JP2000045748A JP3575595B2 JP 3575595 B2 JP3575595 B2 JP 3575595B2 JP 2000045748 A JP2000045748 A JP 2000045748A JP 2000045748 A JP2000045748 A JP 2000045748A JP 3575595 B2 JP3575595 B2 JP 3575595B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- home node
- memory
- request
- computer system
- 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
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
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)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
本発明は、一般にデータ処理のための方法およびシステム、詳細にはコンピュータ・システム内でライブロックを避けるための方法およびシステムに関する。さらに詳細には、本発明は不均等メモリ・アクセス・コンピュータ・システム内で書き戻しの衝突により発生するライブロックを避けるための方法およびシステムに関する。
【0002】
【従来の技術】
いくつかの個別プロセッサの処理能力を組み合わせて多重プロセッサ(MP)コンピュータ・システムを形成することで、より高いコンピュータ・システムの性能を達成できることが、コンピュータ技術分野ではよく知られている。MPコンピュータ・システムは、特定アプリケーションの性能要件に応じていくつかの異なるトポロジーを使用して設計することができる。たとえば対称的多重プロセッサ(SMP)構成は、一般に使用される単純なMPコンピュータ・システム・トポロジーの1つであり、システム・メモリなどのその資源は複数のプロセッサによって共用される。「対称的」というトポロジー名は、SMPコンピュータ・システム内のすべてのプロセッサがシステム内のすべての資源に対して対称的なアクセスを有するという事実に由来する。
【0003】
SMPトポロジーは、比較的単純なプロセッサ間通信およびデータ共用プロトコルを使用できるようにするものであるが、SMPトポロジー全体では、システムのスケールが大きくなるにつれて、特にシステム・メモリ・レベルでスケーラビリティおよび帯域幅が制限される。その結果、ある程度の複雑さが加わるという犠牲を払って、SMPトポロジーの数多くの制限を解決する代替設計として、不均等メモリ・アクセス(NUMA)と呼ばれる別のMPコンピュータ・システム・トポロジーが出現した。
【0004】
代表的なNUMAコンピュータ・システムは、いくつかの相互接続ノードを含む。各ノードは、少なくとも1つのプロセッサと1つのローカル「システム」メモリを含む。NUMAトポロジーという名前は、リモート・ノード側のシステム・メモリ内に格納されているデータよりも、ローカル・ノード側のシステム・メモリ内に格納されているデータの方が、プロセッサの待ち時間が短いという事実に由来している。NUMAコンピュータ・システムは、異なるノードのキャッシュ間でデータ・コヒーレンスが維持されるかどうかによって、非キャッシュ・コヒーレントまたはキャッシュ・コヒーレントのいずれかにさらに分類することができる。NUMAトポロジーは、NUMAコンピュータ・システム内の各ノードを小規模なSMPシステムとして実装することによって、従来のSMPトポロジーのスケーラビリティ制限を解決する。したがって、システム全体は、比較的待ち時間が少なく大規模な並列処理を使用できるという恩恵を得ながら、各ノード内の共用構成要素は、わずかなプロセッサだけで使用するように最適化することができる。
【0005】
様々な利点があるにもかかわらず、NUMAシステムの具体的な問題は、キャッシュ・コヒーレンス・プロトコルから生じる潜在的なライブロック問題である。たとえば、キャッシュ・ラインの修正済みコピーを含むリモート・ノード側に配置されたプロセッサが、ホーム・ノードに対して書き戻し要求を発行することで、キャッシュ・ラインをそのキャッシュ・メモリの外にキャストしようとすると同時に、ホーム・ノード側に配置されたプロセッサが同じキャッシュ・ラインにアクセスしようとした場合、ライブロック状況が発生する。
【0006】
【発明が解決しようとする課題】
したがって、NUMAコンピュータ・システム内で書き戻しの衝突によって発生する前述のライブロック状況を避けるための方法を提供することが望ましい。
【0007】
【課題を解決するための手段】
本発明の方法およびシステムによれば、NUMAコンピュータ・システムは、1つの相互接続に結合された少なくとも2つの処理ノードを含む。この2つの処理ノードはそれぞれが1つのローカル・システム・メモリを含む。所有ノード以外のノードに配置されたプロセッサが、前記所有ノード側に配置されたプロセッサが修正済みのキャッシュ・ラインをホーム・ノードへ書き戻そうとするのとほぼ同時に、所有ノード側で修正済みのキャッシュ・ラインにメモリ要求を介してアクセスしようとするのに応答して、この書き戻しは、ホーム・ノード内のコヒーレンス・ディレクトリが修正済みのキャッシュ・ラインの所有ノードとみなしたものからの書き戻しである場合に限り、再試行なしでホーム・ノード側で完了することができる。所有ノードとは、キャッシュ・ラインの最も新しいコピーが存在するノードである。次いでメモリ要求は、ホーム・ノード側で再試行および完了することができる。
【0008】
【発明の実施の形態】
I.NUMAシステム
A.システムの概要
図面、特に図1を参照すると、本発明の好ましい実施形態による、不均等メモリ・アクセス(NUMA)コンピュータ・システムの構成図が例示されている。図の実施形態は、たとえば、ワークステーション、ミッドレンジ・コンピュータ、またはメインフレーム・コンピュータとして理解することができる。図からわかるように、NUMAコンピュータ・システム10は、ノード相互接続20によって相互接続された処理ノード11、12、および13を含む。処理ノード11〜13はそれぞれ、少なくとも1つのプロセッサを含む。たとえば、処理ノード11はプロセッサ14a〜14cを含み、これらはすべて互いに同一であることが好ましい。
【0009】
プロセッサ14a〜14cはそれぞれ、レジスタ、命令フロー論理、およびプログラム命令の実行に使用される実行ユニットに加えて、それぞれがレベル2(L2)キャッシュ16a〜16cと共に、システム・メモリ17から関連するプロセッサ14a〜14cのいずれか1つへデータをステージする際に使用される、オンチップのレベル1(L1)キャッシュ15a〜15cのうちの1つを含む。つまり、L1キャッシュ15a〜15cおよびL2キャッシュ16a〜16cは、プロセッサ14a〜14cのうちの1つによって再度アクセスされることの多いデータ用の、システム・メモリ17とプロセッサ14a〜14cとの間の中間記憶装置として機能する。L2キャッシュ16a〜16cは一般に、L1キャッシュ15a〜15cよりも記憶容量がはるかに大きいが、アクセス待ち時間は長くなる。たとえば、L2キャッシュ16a〜16cの記憶容量は1〜16メガバイトであるが、L1キャッシュ15a〜15cの記憶容量は8〜32キロバイトしかないことがある。L2キャッシュ16a〜16cは図1ではプロセッサ14a〜14cの外部にあるとして図示されているが、別法として、それぞれ、別のレベルのオンチップ・キャッシュ・メモリとして、関連するプロセッサ14a〜14cの1つに組み込むこともできることを理解されたい。さらに、追加のデータ記憶域を提供するために、追加レベルのキャッシュ・メモリ(レベル3、レベル4など)が使用できることも理解されたい。本開示では、プロセッサ14a〜14cおよびその関連するキャッシュ階層、すなわちL1キャッシュおよびL2キャッシュをそれぞれ単一のスヌーパであるとみなす。
【0010】
さらにまた各処理ノード11〜13は、処理ノード11にはノード制御装置19というように、それぞれのノード制御装置をさらに含む。ノード制御装置19は、システム・メモリ17およびL2キャッシュ16a〜16cと共に、ローカル相互接続5に結合される。ノード制御装置19は、(1)ノード処理装置19が、関連するローカル相互接続5上での通信トランザクションをスヌープして、リモート処理ノード12へのローカル通信トランザクションの伝送を容易にすること、および(2)ノード処理装置19が、ノード相互接続20上での通信トランザクションをスヌープして、ローカル相互接続5などの関連するローカル相互接続上での関連する通信トランザクションのマスタとなることという、少なくとも2つの機能を実行することにより、リモート処理ノード12および13用のローカル・エージェントとしての役割を果たす。相互接続5など各ローカル相互接続上での通信は、アービタ18などのアービタによって制御される。アービタ18は、プロセッサ14a〜14cのうちの任意の1つによって生成されるバス要求信号に基づいて、ローカル相互接続5への任意のアクセスを規制し、ローカル相互接続5上でスヌープされた通信トランザクションに関するコヒーレンス応答をコンパイルする。ローカル相互接続5のコヒーレンス応答段階は、ReRunコヒーレンス応答によって保留することができる。ReRun応答を受け取ったトランザクションが、ReRunされたことになる。ReRun応答を発行した装置がトランザクションを完了する準備ができると、オリジナルのReRun済みトランザクションのタグが付いたReRunトランザクションをローカル相互接続5に発行する。ReRunトランザクションは、コヒーレンス応答段階が完了可能な時点で、元の要求者にトランザクションを再発行させる。
【0011】
NUMAコンピュータ・システム10内の各処理ノード11〜13は、入出力装置(たとえば、表示装置、キーボード、またはグラフィカル・ポインタなど)、オペレーティング・システムおよびアプリケーション・ソフトウェアを格納するための不揮発性記憶装置、ならびにネットワークまたは付属装置に接続するためのシリアル・ポートおよびパラレル・ポートなどの追加装置をさらに含むことができる。ただし、こうした装置は本発明について理解する必要がないとみなされるため、本発明の例示を不明瞭にするのを避けるために省略されている。
【0012】
B.メモリ構成
プロセッサ14a〜14cのようなNUMAコンピュータ・システム10のすべてのプロセッサは、単一の物理メモリ領域を共用しており、これは、各物理アドレスが単一のシステム・メモリ・ロケーションにのみ関連付けられていることを意味する。したがって、一般にNUMAコンピュータ・システム10内の任意のプロセッサによるアクセスが可能なシステム・メモリ全体の内容を、すべてのシステム・メモリ間で区分されているものと見なすことができる。たとえば、図1に示された例示的実施形態の場合、プロセッサ14aは、汎用メモリ領域および未使用領域の両方を含む、16ギガバイトのアドレス領域をアドレス指定する。汎用メモリ領域は、処理ノード11〜13がそれぞれ3番目ごとのセグメントに割り振られた、500メガバイトのセグメントに分割することが好ましい。未使用領域はおよそ2ギガバイトを含むことが可能であって、システム制御ならびにそれぞれが処理ノード11〜13のうちのそれぞれ1つに割り振られている周辺のメモリおよび入出力領域を含む。
【0013】
説明のため、特定のデータをそのシステム・メモリに格納する処理ノード(処理ノード11など)を、そのデータのホーム・ノードと呼ぶ。これに対して、NUMAコンピュータ・システム内の残りの処理ノード(処理ノード12および13など)を、特定のデータに関するリモート・ノードと呼ぶ。
【0014】
C.メモリのコヒーレンス
システム・メモリ17のようなローカル・システム・メモリに格納されたデータは、NUMAコンピュータ・システム10内の処理ノード11〜13のうちの任意の1つによる要求、アクセス、修正、およびキャッシュが可能であるため、NUMAコンピュータ・システム10は、同じローカル処理ノード内のキャッシュ・メモリ間および他のリモート処理ノード内のキャッシュ・メモリ間の両方でコヒーレンスを維持するために、キャッシュ・コヒーレンス・プロトコルを実装する。したがって、NUMAコンピュータ・システム10は、キャッシュ・コヒーレントNUMA(CC−NUMA)コンピュータ・システムとして分類するのが適切である。実装依存型であることが最も多いキャッシュ・コヒーレント・プロトコルは、たとえば周知の修正(Modified)、排他的(Exclusive)、共用(Shared)、および無効(Invalid)(MESI)プロトコルまたはその変形を備えることができる。以下では、L1キャッシュ15a〜15c、L2キャッシュ16a〜16c、およびアービタ18は修正済みMESIプロトコルを実装し、そのノード制御装置19は修正、共用、および無効の各状態を認識して、排他的状態が正確さのために修正状態にマージされるとみなされると想定する。すなわち、ノード制御装置19は、リモート・キャッシュによって排他的に保持されるデータが実際に修正されたかどうかにかかわらず、そのデータが修正されたと想定する。
【0015】
D.ノード制御装置
次に図2を参照すると、図1のNUMAコンピュータ・システム10内のノード制御装置19の詳細な構成図が示されている。図からわかるように、ローカル相互接続5とノード相互接続20との間に結合されたノード制御装置19は、トランザクション受信ユニット(TRU)31、トランザクション送信ユニット(TSU)32、データ受信ユニット(DRU)33、およびデータ送信ユニット(DSU)34を含む。図に示すように、アドレス・パケットはTRU31およびTSU32で処理され、データ・パケットはDRU33およびDSU34で処理されるように、ノード制御装置19を介したアドレス・パスおよびデータ・パスが2つに分岐する。
【0016】
TRU31は、ノード相互接続20のトランザクション・フロー・オフを示すためにこう名付けられているが、ノード相互接続20からのアドレス・パケットおよびコヒーレンス・パケットを受信すること、ローカル相互接続5上でトランザクションを発行すること、およびTSU32に応答を転送することに対する責任を負っている。TRU31は、ノード相互接続20からのパケットを受信し、選択されたパケットをバス・マスタ36とTSU32内のコヒーレンス応答論理37の両方に渡す、応答マルチプレクサ35を含む。応答マルチプレクサ35からのアドレス・パケットの受信に応答して、バス・マスタ36は、受信されたアドレス・パケットと同じまたは異なるローカル相互接続5上で通信トランザクションを開始することができる。
【0017】
TSU32は、その名称が示すようにノード相互接続20へトランザクションを流すためのコンジットである。TSU32は、ノード相互接続20のソースとなるまだ完了していない通信トランザクションの属性を一時的に格納する、複数エントリ保留バッファ40を含む。保留バッファ40のエントリに格納されるトランザクション属性は、少なくともトランザクションのアドレス(タグを含む)、トランザクションのタイプ、およびキャッシュがラインを保持できるリモート・ノードからの予測されるコヒーレンス応答の数を含むことが好ましい。タグとは、システム内のアクティブ・トランザクションを固有に識別し、アドレス・トランザクションおよびスピット・バス上のデータを関連付けるのに使用されるトランザクション識別子である。各保留バッファ・エントリは、保留バッファ・エントリが削除できるという応答がすべていったん受信されることを示すNull、またはすべての応答がいったん受信された保持タグに関するReRun要求をTSU32がTRU31に対して発行するように命令しなければならないことを示すReRunのいずれかに設定できる、関連する状態を有する。TSU32は、ノード相互接続20上のアドレス・パケットをソースとするのに加えて、TRU31と対話しながらメモリ要求トランザクションを処理し、ローカル相互接続5とノード相互接続20の間でデータ伝送を制御するためのコマンドをDRU33およびDSU34に発行する。さらにTSU32は、コヒーレンス応答論理37を使用してノード相互接続20用の修正済みコヒーレンス・プロトコル(すなわちMSIプロトコル)を実装し、ディレクトリ制御論理38を使用してコヒーレンス・ディレクトリ39を維持する。
【表1】
【0018】
コヒーレンス・ディレクトリ39は、ローカル処理ノードがホーム・ノードであるリモート・ノード側のキャッシュによって保持されるすべてのデータのシステム・メモリ・アドレスの表示(たとえばキャッシュ・ライン)を格納する。各キャッシュ・ラインに関するこのアドレス表示は、こうした各リモート処理ノードでのキャッシュ・ラインのコピーおよびキャッシュ・ラインのコヒーレンス状態を有する、各リモート処理ノードの識別子に関連して格納される。コヒーレンス・ディレクトリ39のエントリに関する可能なコヒーレンス状態を、表1にまとめて示す。表1に示すように、リモート処理ノードによって保持されるキャッシュ・ラインのコヒーレンス状態に関する知識は不正確である。この不正確さは、リモートに保持されたキャッシュ・ラインが、ホーム・ノードのノード制御装置に通知せずに、SからI、EからI、またはEからMへの移行を実行できるという事実による。
【0019】
E.衝突の検出
アドレス・バスのパイプライン化された性質およびReRun応答を介してコヒーレンスをリモート・バスに拡張する機能によって、トランザクションの完了の決定、およびシリアル化(または優先順化)する必要のあるトランザクションのシリアル化が複雑になる。対話が可能でシリアル化が必要なトランザクションのことを互いに「衝突する」と呼び、トランザクションのうちの1つは衝突検出規則によって再試行されなければならない。一般的に言えば、エージェント(ノード制御装置など)がReRunされていないメモリ要求を発行する場合、このエージェントはメモリ要求が完了するまで衝突検出に関する責任を負う。要求がReRunされている場合、ReRun応答を発行するエージェントは、トランザクションに関して遅延したコヒーレンス応答がシステムによって解決できることを示すReRunトランザクションに応答して、オリジナル・エージェントによってトランザクションが再発行されるまで、衝突検出に関する責任をとる。
【0020】
II.ライブロック問題
多重プロセッサ・バス上でライブロック状況が発生することが、防止しなければならない一般的な問題である。ライブロックは、バス上の2つのエージェントが同じキャッシュ・ラインにアクセスしようとするときに発生する可能性がある。一般にバスは、衝突を検出するための検出プロトコルと、衝突するトランザクションが再試行されるようなコヒーレンスを保証するための規則を有する。ただしある種のシナリオでは、2つの衝突するトランザクションが互いに再試行を続行し、先へ進めないようにすることが可能である。従来の技術では、再試行されたトランザクションが再度発行されるまでは、ランダム遅延を通じてライブロックを避けるための機構がある。遅延長さは、バス上で解決されるコヒーレンスに関する時間関数である。SMP単一バス・コンピュータ・システムでは、この遅延はおよそ20〜30サイクルになることが多い。NUMAコンピュータ・システムでは、相互接続交差およびコヒーレンスを解決するための時間によって導入される追加遅延は、SMPライブロック解決策がこうした大規模システムで有効になるのを妨げるほど長いものである。したがって、NUMAコンピュータ・システムに関するライブロック問題のより良い解決策が必要である。
【0021】
ここで図3および図4を参照すると、衝突する書き戻しによって引き起こされるライブロック状況が示されている。図からわかるように、リモート・ノード12のプロセッサ24aが、L1キャッシュ25aまたはL2キャッシュ26a内に修正済みのキャッシュ・ラインを有し、プロセッサ24aがこの修正済みキャッシュ・ラインを外部にキャストしようとするとき、プロセッサ24aは書き戻し消去(write−back−clean(WBC))要求のような書き戻し要求を、ホーム・ノード11側のノード制御装置19に対して発行する。したがってこの例では、リモート・ノード12は所有ノードである。同時にホーム・ノード11側のプロセッサ14aがキャッシュ・ラインを読み取ろうとする場合、プロセッサ14aはバス5に対してREAD要求を発行する。ノード制御装置19は、READ要求を観察し、キャッシュ・ラインがノード12で修正される可能性があることをディレクトリが示していることに注目する。図3に示すように、ノード制御装置19はプロセッサ14aからのREAD要求をReRunし、ノード相互接続20を介してノード12に対して同じREAD要求を発行して、ノード12から戻される修正済みデータをフェッチしようと試みる。
【0022】
WBC要求がホーム・ノード11側で受け取られると、WBC要求は未処理のREAD要求と衝突し、WBC要求はノード11側のノード制御装置19によってリモート・ノード12に戻されて再試行される。同様に、READ要求がリモート・ノード12側で受け取られると、このREAD要求は未処理のWBC要求と衝突し、READ要求はノード12側のノード制御装置19によってホーム・ノード11に戻されて再試行される。したがって、WBC要求とREAD要求はどちらも、この時点から繰り返し再試行されることになり、その結果図4に示すようなライブロック状況が生じる。
【0023】
III.ライブロック問題の解決策
前述のライブロック状況の好ましい解決策は、ノード12によって発行されるWBC要求が、ノード11側のノード制御装置19によって発行されるREAD要求がノード11側のシステム・メモリ17にフェッチ・バックしようとしているのと同じデータを搬送するということを理解することである。したがって、WBC要求は、たとえ未処理のREAD要求と衝突しても完了することができる。実装例が示すように、ノード11側のノード制御装置19にあるキャッシュ・コヒーレンス・ディレクトリは、未処理の要求が所有ノードからのキャッシュ・ラインをフェッチ・バックしようとするのと同時に、そのキャッシュ・ラインの所有ノードからWBC要求がいつ受け取られるのかを判定するように構築することができる。コヒーレンス・ディレクトリ状態と占有ベクトルの組み合わせを使用して、この特定の条件およびREAD要求上で衝突検出を所有しているノード制御装置を識別する。
【0024】
たとえばここで図5および図6を参照すると、WBCは最初に、たとえばREAD要求がホーム・ノード11側で同じキャッシュ・ラインに対して発行されるのとほぼ同時に、ローカル・プロセッサまたは(リモート・ノード13側の)リモート・プロセッサのいずれかによって、ノード制御装置19内のTRUユニットを介して、ノード12からホーム・ノード11へ発行される。次いでこのREAD要求は、未処理のWBC要求と衝突した結果、リモート・ノード12側で再試行されるが、図5に示すようにこのWBC要求は前述の基準に合致しているため、技術的に見てたとえ衝突がある場合でも、ホーム・ノード11側で完了することができる。
【0025】
次いでREADは、図6に示すようにホーム・ノード11に戻って再試行される。最終的には図7に示すように、READ要求がホーム・ノード11側のプロセッサ14aによって再発行され、システム・メモリ17が有効データを供給し、READ要求がクリーン応答で首尾良く完了する。したがって、ライブロック状況は避けられる。システム・メモリ17は、WBCによって有効データに更新されたために、データを供給することができる。
【0026】
ここで図8を参照すると、本発明の好ましい実施形態により、図5ないし図7に示すライブロック状況の解決策実行中に、コヒーレンス・ディレクトリ内で要求されるキャッシュ・ラインの様々なコヒーレンス状態が要約されている。最初、リモート・ノード12内で要求されたキャッシュ・ラインのコヒーレンス状態は、ノード12の修正としてコヒーレンス・ディレクトリ内に示される。次いでこの修正キャッシュ・ラインに対するREAD要求が、プロセッサ14aによって実行される。ノード制御装置は、このREAD要求をリモート・ノード12に転送し、コヒーレンス状態を保留修正に移す。WBC要求がホーム・ノード11側で受信されると、コヒーレンス状態は所有ノードとしてのリモート・ノード12によって保留修正になることがわかる。このため、ノード制御装置は、これはノード制御装置がフェッチ・バックしようとしている有効なデータであること、およびそれによってホーム・ノード11側でWBC要求を完了できる(すなわち修正されたデータがシステム・メモリ17に書き込まれる)ことが推論でき、ライブロックを避けるための衝突検出規則は破られるが、それでもなお正しいデータの整合性は維持される。いったんWBC要求が完了すると、キャッシュ・ラインへのREAD要求はまだ保留中であるが、ホーム・ノード11のシステム・メモリ17内のキャッシュ・ラインは有効であることを示すために、ノード制御装置はコヒーレンス状態を保留共用に変更する。未処理のREAD要求が再試行または共用応答によってリモート・ノード12から戻されると、コヒーレンス状態は共用に移る。READ要求がプロセッサ14aによって再試行されると、データはホーム・ノード11側のシステム・メモリ17から提供される。
【0027】
ここで図9を参照すると、本発明の好ましい実施形態により、WBC要求が受け取られるときに実行されるすべての可能なコヒーレンス状態および処置が要約されている。図に示されているように、所有ノードから保留修正状態のキャッシュ・ラインへのWBC要求が完了できるので、衝突検出規則は破られるが、データの整合性は維持されたままである。ただしそれでも非所有ノードからのWBC要求は再試行されなければならない。以上述べてきたように、本発明は、NUMAコンピュータ・システム内での書き戻しの衝突によるライブロックを避けるための改良方法を提供する。
【0028】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0029】
(1)相互接続に結合された少なくとも2つのノードを含み、前記少なくとも2つのノードがそれぞれローカル・システム・メモリを含む、不均等メモリ・アクセス(NUMA)コンピュータ・システムにおいて、書き戻しの衝突によって生じるライブロックを避けるための方法であって、
所有ノード側に配置されたプロセッサが修正済みのキャッシュ・ラインを前記ホーム・ノードへ書き戻そうとするのとほぼ同時に、所有ノード以外のノードに配置されたプロセッサが、リモート・ノード側でメモリ要求を介して修正済みのキャッシュ・ラインにアクセスしようと試みるのに応答して、前記書き戻しが、前記ホーム・ノード内のコヒーレンス・ディレクトリが前記修正済みキャッシュ・ラインの所有ノードとみなしたものからのものである場合に限り、前記書き戻しを再試行なしで前記ホーム・ノード側で完了可能にするステップと、
前記ホーム・ノード側で前記メモリ要求を再試行するステップと、
前記ホーム・ノード側で前記メモリ要求を完了するステップとを含む方法。
(2)前記メモリ要求が、所有ノードからデータを流すよう求める任意の要求である、上記(1)に記載の方法。
(3)前記メモリ要求を、ホーム・ノードまたはリモート・ノードのいずれかから出すことができる、上記(1)に記載の方法。
(4)前記可能にするステップが、前記ホーム・ノード内のノード制御装置によって実行される、上記(1)に記載の方法。
(5)前記可能にするステップが、コヒーレンス状態および占有ベクトルによって実行される、上記(4)に記載の方法。
(6)相互接続に結合された少なくとも2つの処理ノードを含み、前記少なくとも2つの処理ノードがそれぞれ少なくとも1つのローカル・キャッシュ・メモリを有する少なくとも1つのプロセッサとローカル・システム・メモリとを含む、書き戻しの衝突によって生じるライブロックを避けることができる不均等メモリ・アクセス(NUMA)コンピュータ・システムであって、
リモート・ノード側にあるプロセッサが修正済みのキャッシュ・ラインを書き戻そうとするのとほぼ同時に、所有ノード以外のノードにあるプロセッサが、リモート・ノード側でメモリ要求を介して前記修正済みのキャッシュ・ラインにアクセスしようとするのに応答して、前記書き戻しを再試行なしで前記ホーム・ノード側で完了可能にする手段と、
前記メモリ要求を前記リモート・ノード側で完了する手段とを含む、NUMAコンピュータ・システム。
(7)前記メモリ要求が、所有ノードからデータを流すよう求める任意の要求である、上記(6)に記載のNUMAコンピュータ・システム。
(8)前記完了手段が、クリーン応答を使用して前記リモート・ノード側で前記要求を完了させる手段をさらに含む、上記(6)に記載のNUMAコンピュータ・システム。
(9)前記可能にする手段が前記ホーム・ノード内のノード制御装置である、上記(6)に記載のNUMAコンピュータ・システム。
(10)前記ノード制御装置が、コヒーレンス状態および占有ベクトルを含む、上記(9)に記載のNUMAコンピュータ・システム。
【図面の簡単な説明】
【図1】本発明の好ましい実施形態による、不均等メモリ・アクセス(NUMA)コンピュータ・システムの構成図である。
【図2】図1に示されたNUMAコンピュータ・システムにおけるノード制御装置の詳細な構成図である。
【図3】書き戻しの衝突によって発生するライブロック状況を例示的に示す図である。
【図4】書き戻しの衝突によって発生するライブロック状況を例示的に示す図である。
【図5】本発明の好ましい実施形態により、書き戻しの衝突によって発生するライブロック状況の解決策を例示的に示す図である。
【図6】本発明の好ましい実施形態により、書き戻しの衝突によって発生するライブロック状況の解決策を例示的に示す図である。
【図7】本発明の好ましい実施形態により、書き戻しの衝突によって発生するライブロック状況の解決策を例示的に示す図である。
【図8】本発明の好ましい実施形態により、図5ないし図7に示されたライブロック状況の解決策実行中に、キャッシュ・コヒーレンス・ディレクトリ内での要求されたキャッシュ・ラインの様々なコヒーレンス状態を要約した図である。
【図9】本発明の好ましい実施形態により、書き戻し要求が受け取られた場合に実行可能なすべてのコヒーレンス状態および処置を要約した図である。
【符号の説明】
5 ローカル相互接続
11 ホーム処理ノード
12 リモート処理ノード
14a プロセッサ
14b プロセッサ
14c プロセッサ
15a レベル1キャッシュ
16a レベル2キャッシュ
17 メモリ
18 アービタ
19 ノード制御装置
Claims (10)
- 相互接続に結合された少なくとも2つのノードを含み、前記少なくとも2つのノードはホーム・ノード及びリモート・ノードを含み、前記ホーム・ノード及び前記リモート・ノードそれぞれがプロセッサ及びローカル・システム・メモリを含む、不均等メモリ・アクセス(NUMA)コンピュータ・システムにおいて、前記リモート・ノードが保持する修正済みキャッシュ・ラインを前記ホーム・ノードへ書き戻す際の衝突によって生じるライブロックを避けるための方法であって、
前記ホーム・ノードのプロセッサが、前記修正済みキャッシュ・ラインにメモリ要求によってアクセスしようと試みるのとほぼ同時に、
前記リモート・ノードのプロセッサが、前記修正済みキャッシュ・ラインを前記ホーム・ノードへ書き戻そうとするのに応答して、
前記リモート・ノードが所有ノードであるとみなされる場合に限り、再試行なしで前記ホーム・ノード側での前記書き戻しの完了を可能にするステップと、
前記書き戻しの完了が可能とされた後に、前記ホーム・ノード側で前記メモリ要求を再試行するステップと、
前記ホーム・ノード側で、再試行された前記メモリ要求を完了するステップと、
を含む方法。 - 前記メモリ要求が、所有ノードからデータを流すよう求める任意の要求である、請求項1に記載の方法。
- 前記ホーム・ノード側で、再試行された前記メモリ要求を完了するステップが、前記ホーム・ノードにおいて前記メモリ要求をクリーン応答で完了するステップをさらに含む、請求項1に記載の方法。
- 前記可能にするステップが、前記ホーム・ノード内のノード制御装置によって実行される、請求項1に記載の方法。
- 前記可能にするステップが、コヒーレンス状態によって実行される、請求項4に記載の方法。
- 相互接続に結合された少なくとも2つのノードを含み、前記少なくとも2つのノードはホーム・ノード及びリモート・ノードを含み、前記ホーム・ノード及び前記リモート・ノードそれぞれがプロセッサ及びローカル・システム・メモリを含む、不均等メモリ・アクセス(NUMA)コンピュータ・システムにおいて、前記リモート・ノードが保持する修正済みキャッシュ・ラインを前記ホーム・ノードへ書き戻す際の衝突によって生じるライブロックを避けることができる不均等メモリ・アクセス(NUMA)コンピュータ・システムであって、
前記ホーム・ノードのプロセッサが、前記修正済みキャッシュ・ラインにメモリ要求によってアクセスしようと試みるのとほぼ同時に、
前記リモート・ノードのプロセッサが、前記修正済みキャッシュ・ラインを前記ホーム・ノードへ書き戻そうとするのに応答して、
前記リモート・ノードが所有ノードであるとみなされる場合に限り、再試行なしで前記ホーム・ノード側での前記書き戻しの完了を可能にする手段と、
前記書き戻しの完了が可能とされた後に、前記ホーム・ノード側で前記メモリ要求を再試行する手段と、
前記ホーム・ノード側で、再試行された前記メモリ要求を完了する手段と、
を含む、NUMAコンピュータ・システム。 - 前記メモリ要求が、所有ノードからデータを流すよう求める任意の要求である、請求項6に記載のNUMAコンピュータ・システム。
- 前記ホーム・ノード側で、再試行された前記メモリ要求を完了する手段が、前記ホーム・ノードにおいて前記メモリ要求をクリーン応答で完了する手段をさらに含む、請求項6に記載のNUMAコンピュータ・システム。
- 前記可能にする手段が前記ホーム・ノード内のノード制御装置である、請求項6に記載のNUMAコンピュータ・システム。
- 前記ノード制御装置が、コヒーレンス状態を含む、請求項9に記載のNUMAコンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/259,366 US6279085B1 (en) | 1999-02-26 | 1999-02-26 | Method and system for avoiding livelocks due to colliding writebacks within a non-uniform memory access system |
US09/259366 | 1999-02-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000250881A JP2000250881A (ja) | 2000-09-14 |
JP3575595B2 true JP3575595B2 (ja) | 2004-10-13 |
Family
ID=22984645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000045748A Expired - Fee Related JP3575595B2 (ja) | 1999-02-26 | 2000-02-23 | 不均等メモリ・アクセス・システム内で書き戻しの衝突によって生じるライブロックを避けるための方法およびシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US6279085B1 (ja) |
JP (1) | JP3575595B2 (ja) |
CN (1) | CN1114865C (ja) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6826619B1 (en) | 2000-08-21 | 2004-11-30 | Intel Corporation | Method and apparatus for preventing starvation in a multi-node architecture |
US6487643B1 (en) * | 2000-09-29 | 2002-11-26 | Intel Corporation | Method and apparatus for preventing starvation in a multi-node architecture |
US6772298B2 (en) | 2000-12-20 | 2004-08-03 | Intel Corporation | Method and apparatus for invalidating a cache line without data return in a multi-node architecture |
US6484241B2 (en) * | 2000-12-28 | 2002-11-19 | International Business Machines Corporation | Multiprocessor computer system with sectored cache line system bus protocol mechanism |
US6553462B2 (en) * | 2000-12-28 | 2003-04-22 | International Business Machines Corporation | Multiprocessor computer system with sectored cache line mechanism for load and store operations |
US6571322B2 (en) * | 2000-12-28 | 2003-05-27 | International Business Machines Corporation | Multiprocessor computer system with sectored cache line mechanism for cache intervention |
US6968431B2 (en) * | 2001-11-15 | 2005-11-22 | International Business Machines Corporation | Method and apparatus for livelock prevention in a multiprocessor system |
WO2003075162A1 (en) * | 2002-02-28 | 2003-09-12 | Silicon Graphics, Inc. | Method and system for cache coherence in dsm multiprocessor system without growth of the sharing vector |
US6993631B2 (en) * | 2002-05-15 | 2006-01-31 | Broadcom Corporation | L2 cache maintaining local ownership of remote coherency blocks |
US7003631B2 (en) * | 2002-05-15 | 2006-02-21 | Broadcom Corporation | System having address-based intranode coherency and data-based internode coherency |
US7000080B2 (en) * | 2002-10-03 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | Channel-based late race resolution mechanism for a computer system |
US7346744B1 (en) * | 2002-11-04 | 2008-03-18 | Newisys, Inc. | Methods and apparatus for maintaining remote cluster state information |
US8185602B2 (en) | 2002-11-05 | 2012-05-22 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters |
US6954829B2 (en) * | 2002-12-19 | 2005-10-11 | Intel Corporation | Non-speculative distributed conflict resolution for a cache coherency protocol |
JP4806959B2 (ja) * | 2005-05-17 | 2011-11-02 | 株式会社日立製作所 | 主記憶共有型マルチプロセッサシステムの高性能化技術 |
US8205045B2 (en) * | 2008-07-07 | 2012-06-19 | Intel Corporation | Satisfying memory ordering requirements between partial writes and non-snoop accesses |
US8886885B2 (en) * | 2009-11-13 | 2014-11-11 | Marvell World Trade Ltd. | Systems and methods for operating a plurality of flash modules in a flash memory file system |
WO2013165343A1 (en) * | 2012-04-30 | 2013-11-07 | Hewlett-Packard Development Company, L.P. | Hidden core to fetch data |
WO2014158161A1 (en) | 2013-03-28 | 2014-10-02 | Hewlett-Packard Development Company, L.P. | Error coordination message for a blade device having a logical processor in another system firmware domain |
JP6031212B2 (ja) | 2013-03-28 | 2016-11-24 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. | ブレードデバイスを備えるパーティションのオペレーティングシステムによって用いられるブレードデバイスのメモリの特定 |
US9781015B2 (en) | 2013-03-28 | 2017-10-03 | Hewlett Packard Enterprise Development Lp | Making memory of compute and expansion devices available for use by an operating system |
JP6040840B2 (ja) * | 2013-03-29 | 2016-12-07 | 富士通株式会社 | 演算処理装置、情報処理装置及び情報処理装置の制御方法 |
US9292442B2 (en) * | 2013-04-11 | 2016-03-22 | Qualcomm Incorporated | Methods and apparatus for improving performance of semaphore management sequences across a coherent bus |
CN111857823B (zh) * | 2020-07-15 | 2024-10-29 | 北京百度网讯科技有限公司 | 用于写回指令执行结果的装置和方法、处理装置 |
CN118394773B (zh) * | 2024-07-01 | 2024-09-13 | 山东云海国创云计算装备产业创新中心有限公司 | 多节点缓存一致性维护方法、装置、设备、介质及产品 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08185359A (ja) * | 1994-10-31 | 1996-07-16 | Toshiba Corp | メモリサブシステム |
US5950228A (en) * | 1997-02-03 | 1999-09-07 | Digital Equipment Corporation | Variable-grained memory sharing for clusters of symmetric multi-processors using private and shared state tables |
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 |
US6078981A (en) * | 1997-12-29 | 2000-06-20 | Intel Corporation | Transaction stall technique to prevent livelock in multiple-processor systems |
-
1999
- 1999-02-26 US US09/259,366 patent/US6279085B1/en not_active Expired - Fee Related
- 1999-12-27 CN CN99127060.6A patent/CN1114865C/zh not_active Expired - Fee Related
-
2000
- 2000-02-23 JP JP2000045748A patent/JP3575595B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6279085B1 (en) | 2001-08-21 |
JP2000250881A (ja) | 2000-09-14 |
CN1114865C (zh) | 2003-07-16 |
CN1264875A (zh) | 2000-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3575595B2 (ja) | 不均等メモリ・アクセス・システム内で書き戻しの衝突によって生じるライブロックを避けるための方法およびシステム | |
JP3574031B2 (ja) | 不均等メモリ・アクセス・システム内で無効化トランザクションの衝突によって生じるライブロックを避けるための方法およびシステム | |
US5887138A (en) | Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes | |
EP0817070B1 (en) | Multiprocessing system employing a coherency protocol including a reply count | |
US5881303A (en) | Multiprocessing system configured to perform prefetch coherency activity with separate reissue queue for each processing subnode | |
US5878268A (en) | Multiprocessing system configured to store coherency state within multiple subnodes of a processing node | |
US5950226A (en) | Multiprocessing system employing a three-hop communication protocol | |
JP3629511B2 (ja) | 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム | |
US5860159A (en) | Multiprocessing system including an apparatus for optimizing spin--lock operations | |
US6801986B2 (en) | Livelock prevention by delaying surrender of ownership upon intervening ownership request during load locked / store conditional atomic memory operation | |
JP3644587B2 (ja) | 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム | |
JP3431824B2 (ja) | アクセス方法及び処理装置 | |
EP0817051B1 (en) | Multiprocessing system having coherency related error logging capabilities and method therefor | |
US7003635B2 (en) | Generalized active inheritance consistency mechanism having linked writes | |
JP3661764B2 (ja) | 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム | |
US7409500B2 (en) | Systems and methods for employing speculative fills | |
US20040068622A1 (en) | Mechanism for resolving ambiguous invalidates in a computer system | |
US20050188159A1 (en) | Computer system supporting both dirty-shared and non dirty-shared data processing entities | |
KR20010101193A (ko) | 판독 요청을 원격 처리 노드에 추론적으로 전송하는비정형 메모리 액세스 데이터 처리 시스템 | |
KR20030024895A (ko) | 캐시 코히어런트 멀티-프로세서 시스템에서 순서화된입출력 트랜잭션을 파이프라이닝하기 위한 방법 및 장치 | |
US7685373B2 (en) | Selective snooping by snoop masters to locate updated data | |
US6226718B1 (en) | Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system | |
CA2279138C (en) | Non-uniform memory access (numa) data processing system that decreases latency by expediting rerun requests | |
US7000080B2 (en) | Channel-based late race resolution mechanism for a computer system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20031224 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040113 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040329 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20040329 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040329 |
|
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: 20040622 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20040625 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040630 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070716 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080716 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |