(57)【特許請求の範囲】
【請求項１】
相互接続に結合された少なくとも２つのノードを含み、前記少なくとも２つのノードはホーム・ノード及びリモート・ノードを含み、前記ホーム・ノード及び前記リモート・ノードそれぞれがプロセッサ及びローカル・システム・メモリを含む、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムにおいて、前記リモート・ノードが保持する修正済みキャッシュ・ラインを前記ホーム・ノードへ書き戻す際の衝突によって生じるライブロックを避けるための方法であって、
前記ホーム・ノードのプロセッサが、前記修正済みキャッシュ・ラインにメモリ要求によってアクセスしようと試みるのとほぼ同時に、
前記リモート・ノードのプロセッサが、前記修正済みキャッシュ・ラインを前記ホーム・ノードへ書き戻そうとするのに応答して、
前記リモート・ノードが所有ノードであるとみなされる場合に限り、再試行なしで前記ホーム・ノード側での前記書き戻しの完了を可能にするステップと、
前記書き戻しの完了が可能とされた後に、前記ホーム・ノード側で前記メモリ要求を再試行するステップと、
前記ホーム・ノード側で、再試行された前記メモリ要求を完了するステップと、
を含む方法。
【請求項２】
前記メモリ要求が、所有ノードからデータを流すよう求める任意の要求である、請求項１に記載の方法。
【請求項３】
前記ホーム・ノード側で、再試行された前記メモリ要求を完了するステップが、前記ホーム・ノードにおいて前記メモリ要求をクリーン応答で完了するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記可能にするステップが、前記ホーム・ノード内のノード制御装置によって実行される、請求項１に記載の方法。
【請求項５】
前記可能にするステップが、コヒーレンス状態によって実行される、請求項４に記載の方法。
【請求項６】
相互接続に結合された少なくとも２つのノードを含み、前記少なくとも２つのノードはホーム・ノード及びリモート・ノードを含み、前記ホーム・ノード及び前記リモート・ノードそれぞれがプロセッサ及びローカル・システム・メモリを含む、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムにおいて、前記リモート・ノードが保持する修正済みキャッシュ・ラインを前記ホーム・ノードへ書き戻す際の衝突によって生じるライブロックを避けることができる不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムであって、
前記ホーム・ノードのプロセッサが、前記修正済みキャッシュ・ラインにメモリ要求によってアクセスしようと試みるのとほぼ同時に、
前記リモート・ノードのプロセッサが、前記修正済みキャッシュ・ラインを前記ホーム・ノードへ書き戻そうとするのに応答して、
前記リモート・ノードが所有ノードであるとみなされる場合に限り、再試行なしで前記ホーム・ノード側での前記書き戻しの完了を可能にする手段と、
前記書き戻しの完了が可能とされた後に、前記ホーム・ノード側で前記メモリ要求を再試行する手段と、
前記ホーム・ノード側で、再試行された前記メモリ要求を完了する手段と、
を含む、ＮＵＭＡコンピュータ・システム。
【請求項７】
前記メモリ要求が、所有ノードからデータを流すよう求める任意の要求である、請求項６に記載のＮＵＭＡコンピュータ・システム。
【請求項８】
前記ホーム・ノード側で、再試行された前記メモリ要求を完了する手段が、前記ホーム・ノードにおいて前記メモリ要求をクリーン応答で完了する手段をさらに含む、請求項６に記載のＮＵＭＡコンピュータ・システム。
【請求項９】
前記可能にする手段が前記ホーム・ノード内のノード制御装置である、請求項６に記載のＮＵＭＡコンピュータ・システム。
【請求項１０】
前記ノード制御装置が、コヒーレンス状態を含む、請求項９に記載のＮＵＭＡコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にデータ処理のための方法およびシステム、詳細にはコンピュータ・システム内でライブロックを避けるための方法およびシステムに関する。さらに詳細には、本発明は不均等メモリ・アクセス・コンピュータ・システム内で書き戻しの衝突により発生するライブロックを避けるための方法およびシステムに関する。
【０００２】
【従来の技術】
いくつかの個別プロセッサの処理能力を組み合わせて多重プロセッサ（ＭＰ）コンピュータ・システムを形成することで、より高いコンピュータ・システムの性能を達成できることが、コンピュータ技術分野ではよく知られている。ＭＰコンピュータ・システムは、特定アプリケーションの性能要件に応じていくつかの異なるトポロジーを使用して設計することができる。たとえば対称的多重プロセッサ（ＳＭＰ）構成は、一般に使用される単純なＭＰコンピュータ・システム・トポロジーの１つであり、システム・メモリなどのその資源は複数のプロセッサによって共用される。「対称的」というトポロジー名は、ＳＭＰコンピュータ・システム内のすべてのプロセッサがシステム内のすべての資源に対して対称的なアクセスを有するという事実に由来する。
【０００３】
ＳＭＰトポロジーは、比較的単純なプロセッサ間通信およびデータ共用プロトコルを使用できるようにするものであるが、ＳＭＰトポロジー全体では、システムのスケールが大きくなるにつれて、特にシステム・メモリ・レベルでスケーラビリティおよび帯域幅が制限される。その結果、ある程度の複雑さが加わるという犠牲を払って、ＳＭＰトポロジーの数多くの制限を解決する代替設計として、不均等メモリ・アクセス（ＮＵＭＡ）と呼ばれる別のＭＰコンピュータ・システム・トポロジーが出現した。
【０００４】
代表的なＮＵＭＡコンピュータ・システムは、いくつかの相互接続ノードを含む。各ノードは、少なくとも１つのプロセッサと１つのローカル「システム」メモリを含む。ＮＵＭＡトポロジーという名前は、リモート・ノード側のシステム・メモリ内に格納されているデータよりも、ローカル・ノード側のシステム・メモリ内に格納されているデータの方が、プロセッサの待ち時間が短いという事実に由来している。ＮＵＭＡコンピュータ・システムは、異なるノードのキャッシュ間でデータ・コヒーレンスが維持されるかどうかによって、非キャッシュ・コヒーレントまたはキャッシュ・コヒーレントのいずれかにさらに分類することができる。ＮＵＭＡトポロジーは、ＮＵＭＡコンピュータ・システム内の各ノードを小規模なＳＭＰシステムとして実装することによって、従来のＳＭＰトポロジーのスケーラビリティ制限を解決する。したがって、システム全体は、比較的待ち時間が少なく大規模な並列処理を使用できるという恩恵を得ながら、各ノード内の共用構成要素は、わずかなプロセッサだけで使用するように最適化することができる。
【０００５】
様々な利点があるにもかかわらず、ＮＵＭＡシステムの具体的な問題は、キャッシュ・コヒーレンス・プロトコルから生じる潜在的なライブロック問題である。たとえば、キャッシュ・ラインの修正済みコピーを含むリモート・ノード側に配置されたプロセッサが、ホーム・ノードに対して書き戻し要求を発行することで、キャッシュ・ラインをそのキャッシュ・メモリの外にキャストしようとすると同時に、ホーム・ノード側に配置されたプロセッサが同じキャッシュ・ラインにアクセスしようとした場合、ライブロック状況が発生する。
【０００６】
【発明が解決しようとする課題】
したがって、ＮＵＭＡコンピュータ・システム内で書き戻しの衝突によって発生する前述のライブロック状況を避けるための方法を提供することが望ましい。
【０００７】
【課題を解決するための手段】
本発明の方法およびシステムによれば、ＮＵＭＡコンピュータ・システムは、１つの相互接続に結合された少なくとも２つの処理ノードを含む。この２つの処理ノードはそれぞれが１つのローカル・システム・メモリを含む。所有ノード以外のノードに配置されたプロセッサが、前記所有ノード側に配置されたプロセッサが修正済みのキャッシュ・ラインをホーム・ノードへ書き戻そうとするのとほぼ同時に、所有ノード側で修正済みのキャッシュ・ラインにメモリ要求を介してアクセスしようとするのに応答して、この書き戻しは、ホーム・ノード内のコヒーレンス・ディレクトリが修正済みのキャッシュ・ラインの所有ノードとみなしたものからの書き戻しである場合に限り、再試行なしでホーム・ノード側で完了することができる。所有ノードとは、キャッシュ・ラインの最も新しいコピーが存在するノードである。次いでメモリ要求は、ホーム・ノード側で再試行および完了することができる。
【０００８】
【発明の実施の形態】
Ｉ．ＮＵＭＡシステム
Ａ．システムの概要
図面、特に図１を参照すると、本発明の好ましい実施形態による、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムの構成図が例示されている。図の実施形態は、たとえば、ワークステーション、ミッドレンジ・コンピュータ、またはメインフレーム・コンピュータとして理解することができる。図からわかるように、ＮＵＭＡコンピュータ・システム１０は、ノード相互接続２０によって相互接続された処理ノード１１、１２、および１３を含む。処理ノード１１〜１３はそれぞれ、少なくとも１つのプロセッサを含む。たとえば、処理ノード１１はプロセッサ１４ａ〜１４ｃを含み、これらはすべて互いに同一であることが好ましい。
【０００９】
プロセッサ１４ａ〜１４ｃはそれぞれ、レジスタ、命令フロー論理、およびプログラム命令の実行に使用される実行ユニットに加えて、それぞれがレベル２（Ｌ２）キャッシュ１６ａ〜１６ｃと共に、システム・メモリ１７から関連するプロセッサ１４ａ〜１４ｃのいずれか１つへデータをステージする際に使用される、オンチップのレベル１（Ｌ１）キャッシュ１５ａ〜１５ｃのうちの１つを含む。つまり、Ｌ１キャッシュ１５ａ〜１５ｃおよびＬ２キャッシュ１６ａ〜１６ｃは、プロセッサ１４ａ〜１４ｃのうちの１つによって再度アクセスされることの多いデータ用の、システム・メモリ１７とプロセッサ１４ａ〜１４ｃとの間の中間記憶装置として機能する。Ｌ２キャッシュ１６ａ〜１６ｃは一般に、Ｌ１キャッシュ１５ａ〜１５ｃよりも記憶容量がはるかに大きいが、アクセス待ち時間は長くなる。たとえば、Ｌ２キャッシュ１６ａ〜１６ｃの記憶容量は１〜１６メガバイトであるが、Ｌ１キャッシュ１５ａ〜１５ｃの記憶容量は８〜３２キロバイトしかないことがある。Ｌ２キャッシュ１６ａ〜１６ｃは図１ではプロセッサ１４ａ〜１４ｃの外部にあるとして図示されているが、別法として、それぞれ、別のレベルのオンチップ・キャッシュ・メモリとして、関連するプロセッサ１４ａ〜１４ｃの１つに組み込むこともできることを理解されたい。さらに、追加のデータ記憶域を提供するために、追加レベルのキャッシュ・メモリ（レベル３、レベル４など）が使用できることも理解されたい。本開示では、プロセッサ１４ａ〜１４ｃおよびその関連するキャッシュ階層、すなわちＬ１キャッシュおよびＬ２キャッシュをそれぞれ単一のスヌーパであるとみなす。
【００１０】
さらにまた各処理ノード１１〜１３は、処理ノード１１にはノード制御装置１９というように、それぞれのノード制御装置をさらに含む。ノード制御装置１９は、システム・メモリ１７およびＬ２キャッシュ１６ａ〜１６ｃと共に、ローカル相互接続５に結合される。ノード制御装置１９は、（１）ノード処理装置１９が、関連するローカル相互接続５上での通信トランザクションをスヌープして、リモート処理ノード１２へのローカル通信トランザクションの伝送を容易にすること、および（２）ノード処理装置１９が、ノード相互接続２０上での通信トランザクションをスヌープして、ローカル相互接続５などの関連するローカル相互接続上での関連する通信トランザクションのマスタとなることという、少なくとも２つの機能を実行することにより、リモート処理ノード１２および１３用のローカル・エージェントとしての役割を果たす。相互接続５など各ローカル相互接続上での通信は、アービタ１８などのアービタによって制御される。アービタ１８は、プロセッサ１４ａ〜１４ｃのうちの任意の１つによって生成されるバス要求信号に基づいて、ローカル相互接続５への任意のアクセスを規制し、ローカル相互接続５上でスヌープされた通信トランザクションに関するコヒーレンス応答をコンパイルする。ローカル相互接続５のコヒーレンス応答段階は、ＲｅＲｕｎコヒーレンス応答によって保留することができる。ＲｅＲｕｎ応答を受け取ったトランザクションが、ＲｅＲｕｎされたことになる。ＲｅＲｕｎ応答を発行した装置がトランザクションを完了する準備ができると、オリジナルのＲｅＲｕｎ済みトランザクションのタグが付いたＲｅＲｕｎトランザクションをローカル相互接続５に発行する。ＲｅＲｕｎトランザクションは、コヒーレンス応答段階が完了可能な時点で、元の要求者にトランザクションを再発行させる。
【００１１】
ＮＵＭＡコンピュータ・システム１０内の各処理ノード１１〜１３は、入出力装置（たとえば、表示装置、キーボード、またはグラフィカル・ポインタなど）、オペレーティング・システムおよびアプリケーション・ソフトウェアを格納するための不揮発性記憶装置、ならびにネットワークまたは付属装置に接続するためのシリアル・ポートおよびパラレル・ポートなどの追加装置をさらに含むことができる。ただし、こうした装置は本発明について理解する必要がないとみなされるため、本発明の例示を不明瞭にするのを避けるために省略されている。
【００１２】
Ｂ．メモリ構成
プロセッサ１４ａ〜１４ｃのようなＮＵＭＡコンピュータ・システム１０のすべてのプロセッサは、単一の物理メモリ領域を共用しており、これは、各物理アドレスが単一のシステム・メモリ・ロケーションにのみ関連付けられていることを意味する。したがって、一般にＮＵＭＡコンピュータ・システム１０内の任意のプロセッサによるアクセスが可能なシステム・メモリ全体の内容を、すべてのシステム・メモリ間で区分されているものと見なすことができる。たとえば、図１に示された例示的実施形態の場合、プロセッサ１４ａは、汎用メモリ領域および未使用領域の両方を含む、１６ギガバイトのアドレス領域をアドレス指定する。汎用メモリ領域は、処理ノード１１〜１３がそれぞれ３番目ごとのセグメントに割り振られた、５００メガバイトのセグメントに分割することが好ましい。未使用領域はおよそ２ギガバイトを含むことが可能であって、システム制御ならびにそれぞれが処理ノード１１〜１３のうちのそれぞれ１つに割り振られている周辺のメモリおよび入出力領域を含む。
【００１３】
説明のため、特定のデータをそのシステム・メモリに格納する処理ノード（処理ノード１１など）を、そのデータのホーム・ノードと呼ぶ。これに対して、ＮＵＭＡコンピュータ・システム内の残りの処理ノード（処理ノード１２および１３など）を、特定のデータに関するリモート・ノードと呼ぶ。
【００１４】
Ｃ．メモリのコヒーレンス
システム・メモリ１７のようなローカル・システム・メモリに格納されたデータは、ＮＵＭＡコンピュータ・システム１０内の処理ノード１１〜１３のうちの任意の１つによる要求、アクセス、修正、およびキャッシュが可能であるため、ＮＵＭＡコンピュータ・システム１０は、同じローカル処理ノード内のキャッシュ・メモリ間および他のリモート処理ノード内のキャッシュ・メモリ間の両方でコヒーレンスを維持するために、キャッシュ・コヒーレンス・プロトコルを実装する。したがって、ＮＵＭＡコンピュータ・システム１０は、キャッシュ・コヒーレントＮＵＭＡ（ＣＣ−ＮＵＭＡ）コンピュータ・システムとして分類するのが適切である。実装依存型であることが最も多いキャッシュ・コヒーレント・プロトコルは、たとえば周知の修正（Ｍｏｄｉｆｉｅｄ）、排他的（Ｅｘｃｌｕｓｉｖｅ）、共用（Ｓｈａｒｅｄ）、および無効（Ｉｎｖａｌｉｄ）（ＭＥＳＩ）プロトコルまたはその変形を備えることができる。以下では、Ｌ１キャッシュ１５ａ〜１５ｃ、Ｌ２キャッシュ１６ａ〜１６ｃ、およびアービタ１８は修正済みＭＥＳＩプロトコルを実装し、そのノード制御装置１９は修正、共用、および無効の各状態を認識して、排他的状態が正確さのために修正状態にマージされるとみなされると想定する。すなわち、ノード制御装置１９は、リモート・キャッシュによって排他的に保持されるデータが実際に修正されたかどうかにかかわらず、そのデータが修正されたと想定する。
【００１５】
Ｄ．ノード制御装置
次に図２を参照すると、図１のＮＵＭＡコンピュータ・システム１０内のノード制御装置１９の詳細な構成図が示されている。図からわかるように、ローカル相互接続５とノード相互接続２０との間に結合されたノード制御装置１９は、トランザクション受信ユニット（ＴＲＵ）３１、トランザクション送信ユニット（ＴＳＵ）３２、データ受信ユニット（ＤＲＵ）３３、およびデータ送信ユニット（ＤＳＵ）３４を含む。図に示すように、アドレス・パケットはＴＲＵ３１およびＴＳＵ３２で処理され、データ・パケットはＤＲＵ３３およびＤＳＵ３４で処理されるように、ノード制御装置１９を介したアドレス・パスおよびデータ・パスが２つに分岐する。
【００１６】
ＴＲＵ３１は、ノード相互接続２０のトランザクション・フロー・オフを示すためにこう名付けられているが、ノード相互接続２０からのアドレス・パケットおよびコヒーレンス・パケットを受信すること、ローカル相互接続５上でトランザクションを発行すること、およびＴＳＵ３２に応答を転送することに対する責任を負っている。ＴＲＵ３１は、ノード相互接続２０からのパケットを受信し、選択されたパケットをバス・マスタ３６とＴＳＵ３２内のコヒーレンス応答論理３７の両方に渡す、応答マルチプレクサ３５を含む。応答マルチプレクサ３５からのアドレス・パケットの受信に応答して、バス・マスタ３６は、受信されたアドレス・パケットと同じまたは異なるローカル相互接続５上で通信トランザクションを開始することができる。
【００１７】
ＴＳＵ３２は、その名称が示すようにノード相互接続２０へトランザクションを流すためのコンジットである。ＴＳＵ３２は、ノード相互接続２０のソースとなるまだ完了していない通信トランザクションの属性を一時的に格納する、複数エントリ保留バッファ４０を含む。保留バッファ４０のエントリに格納されるトランザクション属性は、少なくともトランザクションのアドレス（タグを含む）、トランザクションのタイプ、およびキャッシュがラインを保持できるリモート・ノードからの予測されるコヒーレンス応答の数を含むことが好ましい。タグとは、システム内のアクティブ・トランザクションを固有に識別し、アドレス・トランザクションおよびスピット・バス上のデータを関連付けるのに使用されるトランザクション識別子である。各保留バッファ・エントリは、保留バッファ・エントリが削除できるという応答がすべていったん受信されることを示すＮｕｌｌ、またはすべての応答がいったん受信された保持タグに関するＲｅＲｕｎ要求をＴＳＵ３２がＴＲＵ３１に対して発行するように命令しなければならないことを示すＲｅＲｕｎのいずれかに設定できる、関連する状態を有する。ＴＳＵ３２は、ノード相互接続２０上のアドレス・パケットをソースとするのに加えて、ＴＲＵ３１と対話しながらメモリ要求トランザクションを処理し、ローカル相互接続５とノード相互接続２０の間でデータ伝送を制御するためのコマンドをＤＲＵ３３およびＤＳＵ３４に発行する。さらにＴＳＵ３２は、コヒーレンス応答論理３７を使用してノード相互接続２０用の修正済みコヒーレンス・プロトコル（すなわちＭＳＩプロトコル）を実装し、ディレクトリ制御論理３８を使用してコヒーレンス・ディレクトリ３９を維持する。
【表１】
0003575595.tif 000002
【００１８】
コヒーレンス・ディレクトリ３９は、ローカル処理ノードがホーム・ノードであるリモート・ノード側のキャッシュによって保持されるすべてのデータのシステム・メモリ・アドレスの表示（たとえばキャッシュ・ライン）を格納する。各キャッシュ・ラインに関するこのアドレス表示は、こうした各リモート処理ノードでのキャッシュ・ラインのコピーおよびキャッシュ・ラインのコヒーレンス状態を有する、各リモート処理ノードの識別子に関連して格納される。コヒーレンス・ディレクトリ３９のエントリに関する可能なコヒーレンス状態を、表１にまとめて示す。表１に示すように、リモート処理ノードによって保持されるキャッシュ・ラインのコヒーレンス状態に関する知識は不正確である。この不正確さは、リモートに保持されたキャッシュ・ラインが、ホーム・ノードのノード制御装置に通知せずに、ＳからＩ、ＥからＩ、またはＥからＭへの移行を実行できるという事実による。
【００１９】
Ｅ．衝突の検出
アドレス・バスのパイプライン化された性質およびＲｅＲｕｎ応答を介してコヒーレンスをリモート・バスに拡張する機能によって、トランザクションの完了の決定、およびシリアル化（または優先順化）する必要のあるトランザクションのシリアル化が複雑になる。対話が可能でシリアル化が必要なトランザクションのことを互いに「衝突する」と呼び、トランザクションのうちの１つは衝突検出規則によって再試行されなければならない。一般的に言えば、エージェント（ノード制御装置など）がＲｅＲｕｎされていないメモリ要求を発行する場合、このエージェントはメモリ要求が完了するまで衝突検出に関する責任を負う。要求がＲｅＲｕｎされている場合、ＲｅＲｕｎ応答を発行するエージェントは、トランザクションに関して遅延したコヒーレンス応答がシステムによって解決できることを示すＲｅＲｕｎトランザクションに応答して、オリジナル・エージェントによってトランザクションが再発行されるまで、衝突検出に関する責任をとる。
【００２０】
ＩＩ．ライブロック問題
多重プロセッサ・バス上でライブロック状況が発生することが、防止しなければならない一般的な問題である。ライブロックは、バス上の２つのエージェントが同じキャッシュ・ラインにアクセスしようとするときに発生する可能性がある。一般にバスは、衝突を検出するための検出プロトコルと、衝突するトランザクションが再試行されるようなコヒーレンスを保証するための規則を有する。ただしある種のシナリオでは、２つの衝突するトランザクションが互いに再試行を続行し、先へ進めないようにすることが可能である。従来の技術では、再試行されたトランザクションが再度発行されるまでは、ランダム遅延を通じてライブロックを避けるための機構がある。遅延長さは、バス上で解決されるコヒーレンスに関する時間関数である。ＳＭＰ単一バス・コンピュータ・システムでは、この遅延はおよそ２０〜３０サイクルになることが多い。ＮＵＭＡコンピュータ・システムでは、相互接続交差およびコヒーレンスを解決するための時間によって導入される追加遅延は、ＳＭＰライブロック解決策がこうした大規模システムで有効になるのを妨げるほど長いものである。したがって、ＮＵＭＡコンピュータ・システムに関するライブロック問題のより良い解決策が必要である。
【００２１】
ここで図３および図４を参照すると、衝突する書き戻しによって引き起こされるライブロック状況が示されている。図からわかるように、リモート・ノード１２のプロセッサ２４ａが、Ｌ１キャッシュ２５ａまたはＬ２キャッシュ２６ａ内に修正済みのキャッシュ・ラインを有し、プロセッサ２４ａがこの修正済みキャッシュ・ラインを外部にキャストしようとするとき、プロセッサ２４ａは書き戻し消去（ｗｒｉｔｅ−ｂａｃｋ−ｃｌｅａｎ（ＷＢＣ））要求のような書き戻し要求を、ホーム・ノード１１側のノード制御装置１９に対して発行する。したがってこの例では、リモート・ノード１２は所有ノードである。同時にホーム・ノード１１側のプロセッサ１４ａがキャッシュ・ラインを読み取ろうとする場合、プロセッサ１４ａはバス５に対してＲＥＡＤ要求を発行する。ノード制御装置１９は、ＲＥＡＤ要求を観察し、キャッシュ・ラインがノード１２で修正される可能性があることをディレクトリが示していることに注目する。図３に示すように、ノード制御装置１９はプロセッサ１４ａからのＲＥＡＤ要求をＲｅＲｕｎし、ノード相互接続２０を介してノード１２に対して同じＲＥＡＤ要求を発行して、ノード１２から戻される修正済みデータをフェッチしようと試みる。
【００２２】
ＷＢＣ要求がホーム・ノード１１側で受け取られると、ＷＢＣ要求は未処理のＲＥＡＤ要求と衝突し、ＷＢＣ要求はノード１１側のノード制御装置１９によってリモート・ノード１２に戻されて再試行される。同様に、ＲＥＡＤ要求がリモート・ノード１２側で受け取られると、このＲＥＡＤ要求は未処理のＷＢＣ要求と衝突し、ＲＥＡＤ要求はノード１２側のノード制御装置１９によってホーム・ノード１１に戻されて再試行される。したがって、ＷＢＣ要求とＲＥＡＤ要求はどちらも、この時点から繰り返し再試行されることになり、その結果図４に示すようなライブロック状況が生じる。
【００２３】
ＩＩＩ．ライブロック問題の解決策
前述のライブロック状況の好ましい解決策は、ノード１２によって発行されるＷＢＣ要求が、ノード１１側のノード制御装置１９によって発行されるＲＥＡＤ要求がノード１１側のシステム・メモリ１７にフェッチ・バックしようとしているのと同じデータを搬送するということを理解することである。したがって、ＷＢＣ要求は、たとえ未処理のＲＥＡＤ要求と衝突しても完了することができる。実装例が示すように、ノード１１側のノード制御装置１９にあるキャッシュ・コヒーレンス・ディレクトリは、未処理の要求が所有ノードからのキャッシュ・ラインをフェッチ・バックしようとするのと同時に、そのキャッシュ・ラインの所有ノードからＷＢＣ要求がいつ受け取られるのかを判定するように構築することができる。コヒーレンス・ディレクトリ状態と占有ベクトルの組み合わせを使用して、この特定の条件およびＲＥＡＤ要求上で衝突検出を所有しているノード制御装置を識別する。
【００２４】
たとえばここで図５および図６を参照すると、ＷＢＣは最初に、たとえばＲＥＡＤ要求がホーム・ノード１１側で同じキャッシュ・ラインに対して発行されるのとほぼ同時に、ローカル・プロセッサまたは（リモート・ノード１３側の）リモート・プロセッサのいずれかによって、ノード制御装置１９内のＴＲＵユニットを介して、ノード１２からホーム・ノード１１へ発行される。次いでこのＲＥＡＤ要求は、未処理のＷＢＣ要求と衝突した結果、リモート・ノード１２側で再試行されるが、図５に示すようにこのＷＢＣ要求は前述の基準に合致しているため、技術的に見てたとえ衝突がある場合でも、ホーム・ノード１１側で完了することができる。
【００２５】
次いでＲＥＡＤは、図６に示すようにホーム・ノード１１に戻って再試行される。最終的には図７に示すように、ＲＥＡＤ要求がホーム・ノード１１側のプロセッサ１４ａによって再発行され、システム・メモリ１７が有効データを供給し、ＲＥＡＤ要求がクリーン応答で首尾良く完了する。したがって、ライブロック状況は避けられる。システム・メモリ１７は、ＷＢＣによって有効データに更新されたために、データを供給することができる。
【００２６】
ここで図８を参照すると、本発明の好ましい実施形態により、図５ないし図７に示すライブロック状況の解決策実行中に、コヒーレンス・ディレクトリ内で要求されるキャッシュ・ラインの様々なコヒーレンス状態が要約されている。最初、リモート・ノード１２内で要求されたキャッシュ・ラインのコヒーレンス状態は、ノード１２の修正としてコヒーレンス・ディレクトリ内に示される。次いでこの修正キャッシュ・ラインに対するＲＥＡＤ要求が、プロセッサ１４ａによって実行される。ノード制御装置は、このＲＥＡＤ要求をリモート・ノード１２に転送し、コヒーレンス状態を保留修正に移す。ＷＢＣ要求がホーム・ノード１１側で受信されると、コヒーレンス状態は所有ノードとしてのリモート・ノード１２によって保留修正になることがわかる。このため、ノード制御装置は、これはノード制御装置がフェッチ・バックしようとしている有効なデータであること、およびそれによってホーム・ノード１１側でＷＢＣ要求を完了できる（すなわち修正されたデータがシステム・メモリ１７に書き込まれる）ことが推論でき、ライブロックを避けるための衝突検出規則は破られるが、それでもなお正しいデータの整合性は維持される。いったんＷＢＣ要求が完了すると、キャッシュ・ラインへのＲＥＡＤ要求はまだ保留中であるが、ホーム・ノード１１のシステム・メモリ１７内のキャッシュ・ラインは有効であることを示すために、ノード制御装置はコヒーレンス状態を保留共用に変更する。未処理のＲＥＡＤ要求が再試行または共用応答によってリモート・ノード１２から戻されると、コヒーレンス状態は共用に移る。ＲＥＡＤ要求がプロセッサ１４ａによって再試行されると、データはホーム・ノード１１側のシステム・メモリ１７から提供される。
【００２７】
ここで図９を参照すると、本発明の好ましい実施形態により、ＷＢＣ要求が受け取られるときに実行されるすべての可能なコヒーレンス状態および処置が要約されている。図に示されているように、所有ノードから保留修正状態のキャッシュ・ラインへのＷＢＣ要求が完了できるので、衝突検出規則は破られるが、データの整合性は維持されたままである。ただしそれでも非所有ノードからのＷＢＣ要求は再試行されなければならない。以上述べてきたように、本発明は、ＮＵＭＡコンピュータ・システム内での書き戻しの衝突によるライブロックを避けるための改良方法を提供する。
【００２８】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００２９】
（１）相互接続に結合された少なくとも２つのノードを含み、前記少なくとも２つのノードがそれぞれローカル・システム・メモリを含む、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムにおいて、書き戻しの衝突によって生じるライブロックを避けるための方法であって、
所有ノード側に配置されたプロセッサが修正済みのキャッシュ・ラインを前記ホーム・ノードへ書き戻そうとするのとほぼ同時に、所有ノード以外のノードに配置されたプロセッサが、リモート・ノード側でメモリ要求を介して修正済みのキャッシュ・ラインにアクセスしようと試みるのに応答して、前記書き戻しが、前記ホーム・ノード内のコヒーレンス・ディレクトリが前記修正済みキャッシュ・ラインの所有ノードとみなしたものからのものである場合に限り、前記書き戻しを再試行なしで前記ホーム・ノード側で完了可能にするステップと、
前記ホーム・ノード側で前記メモリ要求を再試行するステップと、
前記ホーム・ノード側で前記メモリ要求を完了するステップとを含む方法。
（２）前記メモリ要求が、所有ノードからデータを流すよう求める任意の要求である、上記（１）に記載の方法。
（３）前記メモリ要求を、ホーム・ノードまたはリモート・ノードのいずれかから出すことができる、上記（１）に記載の方法。
（４）前記可能にするステップが、前記ホーム・ノード内のノード制御装置によって実行される、上記（１）に記載の方法。
（５）前記可能にするステップが、コヒーレンス状態および占有ベクトルによって実行される、上記（４）に記載の方法。
（６）相互接続に結合された少なくとも２つの処理ノードを含み、前記少なくとも２つの処理ノードがそれぞれ少なくとも１つのローカル・キャッシュ・メモリを有する少なくとも１つのプロセッサとローカル・システム・メモリとを含む、書き戻しの衝突によって生じるライブロックを避けることができる不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムであって、
リモート・ノード側にあるプロセッサが修正済みのキャッシュ・ラインを書き戻そうとするのとほぼ同時に、所有ノード以外のノードにあるプロセッサが、リモート・ノード側でメモリ要求を介して前記修正済みのキャッシュ・ラインにアクセスしようとするのに応答して、前記書き戻しを再試行なしで前記ホーム・ノード側で完了可能にする手段と、
前記メモリ要求を前記リモート・ノード側で完了する手段とを含む、ＮＵＭＡコンピュータ・システム。
（７）前記メモリ要求が、所有ノードからデータを流すよう求める任意の要求である、上記（６）に記載のＮＵＭＡコンピュータ・システム。
（８）前記完了手段が、クリーン応答を使用して前記リモート・ノード側で前記要求を完了させる手段をさらに含む、上記（６）に記載のＮＵＭＡコンピュータ・システム。
（９）前記可能にする手段が前記ホーム・ノード内のノード制御装置である、上記（６）に記載のＮＵＭＡコンピュータ・システム。
（１０）前記ノード制御装置が、コヒーレンス状態および占有ベクトルを含む、上記（９）に記載のＮＵＭＡコンピュータ・システム。
【図面の簡単な説明】
【図１】本発明の好ましい実施形態による、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムの構成図である。
【図２】図１に示されたＮＵＭＡコンピュータ・システムにおけるノード制御装置の詳細な構成図である。
【図３】書き戻しの衝突によって発生するライブロック状況を例示的に示す図である。
【図４】書き戻しの衝突によって発生するライブロック状況を例示的に示す図である。
【図５】本発明の好ましい実施形態により、書き戻しの衝突によって発生するライブロック状況の解決策を例示的に示す図である。
【図６】本発明の好ましい実施形態により、書き戻しの衝突によって発生するライブロック状況の解決策を例示的に示す図である。
【図７】本発明の好ましい実施形態により、書き戻しの衝突によって発生するライブロック状況の解決策を例示的に示す図である。
【図８】本発明の好ましい実施形態により、図５ないし図７に示されたライブロック状況の解決策実行中に、キャッシュ・コヒーレンス・ディレクトリ内での要求されたキャッシュ・ラインの様々なコヒーレンス状態を要約した図である。
【図９】本発明の好ましい実施形態により、書き戻し要求が受け取られた場合に実行可能なすべてのコヒーレンス状態および処置を要約した図である。
【符号の説明】
５  ローカル相互接続
１１  ホーム処理ノード
１２  リモート処理ノード
１４ａ  プロセッサ
１４ｂ  プロセッサ
１４ｃ  プロセッサ
１５ａ  レベル１キャッシュ
１６ａ  レベル２キャッシュ
１７  メモリ
１８  アービタ
１９  ノード制御装置
【図１】
0003575595.tif 000003
【図２】
0003575595.tif 000004
【図３】
0003575595.tif 000005
【図４】
0003575595.tif 000006
【図５】
0003575595.tif 000007
【図６】
0003575595.tif 000008
【図７】
0003575595.tif 000009
【図８】
0003575595.tif 000010
【図９】
0003575595.tif 000011