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