(57)【特許請求の範囲】
【請求項１】
相互接続に結合された少なくとも２つのノードを含み、前記少なくとも２つのノードがそれぞれローカル・システム・メモリを含む、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムにおいて、トランザクションのキャンセルによるデータ損失を避けるための方法であって、
ホーム・ノードから、修正されたデータがキャッシュメモリに保存されているリモート・ノードへのデータ・アクセス要求に応答して、前記リモート・ノードが、修正・介入ボートを前記修正されたデータと共に前記ホーム・ノードのノード制御装置へ送信するステップと、
その後、前記ホーム・ノードに配置されたノード制御装置からの再発行要求の結果として、前記ホーム・ノードに配置されたプロセッサがデータ・アクセス要求を再発行するステップと、
前記ホーム・ノードが前記再発行されたデータ・アクセス要求をキャンセルした場合には、前記ノード制御装置が、前記修正されたデータを、前記ノード制御装置から前記ホーム・ノードに配置されたローカル・システム・メモリに書き戻すための書き戻し要求を発行するステップとを含む方法。
【請求項２】
前記データ・アクセス要求及び前記再発行されたデータ・アクセス要求が、修正されたデータをメモリに書き込ませる任意の要求を含む、請求項１に記載の方法。
【請求項３】
前記再発行されたデータ・アクセス要求が、再発行インジケータ・ビット・セットを用いて表示される、請求項１に記載の方法。
【請求項４】
前記書き戻し要求がライン書き戻し要求である、請求項１に記載の方法。
【請求項５】
前記ホーム・ノードに配置されているノード制御装置が書き戻し要求を発行する前に、前記書き戻し要求に付するタグを生成するステップをさらに含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記データ・アクセス要求及び前記再発行されたデータ・アクセス要求が、READ要求である、請求項１に記載の方法。
【請求項７】
トランザクションのキャンセルによるデータの損失を避けることのできる不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムであって、相互接続に結合された少なくとも２つのノードを含み、前記少なくとも２つのノードがそれぞれローカル・システム・メモリを含み、
ホーム・ノードから、修正されたデータがキャッシュメモリに保存されているリモート・ノードへのデータ・アクセス要求に応答して、前記リモート・ノードが修正・介入ボートを前記修正されたデータと共に前記リモート・ノードから前記ホーム・ノードのノード制御装置へ送信する手段を含み、
前記ホーム・ノードに配置されたプロセッサは、前記ノード制御装置からの再発行要求の結果として、データ・アクセス要求を再発行する手段を含み、
前記ノード制御装置は、前記再発行されたデータ・アクセス要求がキャンセルされた場合に、前記修正されたデータを、前記ノード制御装置から前記ホーム・ノードに配置されたローカル・システム・メモリに送達するための書き戻し要求を発行する手段を含む、ことを特徴とするＮＵＭＡコンピュータ・システム。
【請求項８】
前記データ・アクセス要求及び前記再発行されたデータ・アクセス要求が、修正されたデータをメモリに書き込ませる任意の要求を含む、請求項７に記載のＮＵＭＡコンピュータ・システム。
【請求項９】
前記再発行されたデータ・アクセス要求が、再発行インジケータ・ビット・セットを用いて表示される、請求項７に記載のＮＵＭＡコンピュータ・システム。
【請求項１０】
前記書き戻し要求がライン書き戻し要求である、請求項７に記載のＮＵＭＡコンピュータ・システム。
【請求項１１】
前記ノード制御装置が、前記書き戻し要求に付するタグを生成する手段をさらに含む、請求項７〜１０のいずれか１項に記載のＮＵＭＡコンピュータ・システム。
【請求項１２】
前記データ・アクセス要求及び前記再発行されたデータ・アクセス要求がREAD要求である、請求項７に記載のＮＵＭＡコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にデータ処理の方法およびシステム、詳細にはコンピュータ・システムにおいてデータの損失を避けるための方法およびシステムに関する。さらに詳細には、本発明は、不均等メモリ・アクセス（ＮＵＭＡ）のコンピュータ・システムにおいて、トランザクションのキャンセルによるデータの損失を避けるための方法およびシステムに関する。
【０００２】
【従来の技術】
多数の個別プロセッサの処理能力を直列にハーネスすることによって、より高いコンピュータ・システムの性能が達成できることは、コンピュータ技術分野ではよく知られている。多重プロセッサ（ＭＰ）コンピュータ・システムは、いくつかの異なるトポロジーで設計することができ、そのそれぞれが各アプリケーションの性能要件およびソフトウェア環境に応じて、特定のアプリケーションに対してより好適である可能性がある。最も一般的なＭＰコンピュータ・トポロジーの１つが、一般に共用システム相互接続に結合されているシステム・メモリや入出力（Ｉ／Ｏ）サブシステムなどの共通の資源を複数のプロセッサが共用する、対称的マルチ・プロセッサ（ＳＭＰ）構成である。こうしたコンピュータ・システムは、ＳＭＰコンピュータ・システム内のすべてのプロセッサが、共用システム・メモリ内に格納されているデータに対して理論的に同じアクセス待ち時間を有するので、対称的であると言われる。
【０００３】
ＳＭＰコンピュータ・システムは、比較的単純なプロセッサ間通信およびデータ共用の方法を使用することができるが、スケーラビリティが制限されている。すなわち、一般的なＳＭＰコンピュータ・システムの性能は、通常、スケールに従って（すなわちさらにプロセッサが追加されるにつれて）改善されると予想できるが、固有のバス、メモリ、および入出力（Ｉ／Ｏ）の帯域幅制限により、共用資源の利用が最適化される、実装に依存したサイズを超えてＳＭＰをスケーリングすると、重要な利点が得られなくなる。したがって、システムのスケールが大きくなるほど、特にシステム・メモリにおいて、ＳＭＰトポロジーそれ自体がある程度帯域幅制限を受ける。ＳＭＰコンピュータ・システムも製造効率の点からうまくスケールされない。たとえば、構成要素によっては単一プロセッサおよび小規模ＳＭＰコンピュータ・システムのどちらでも使用できるように最適化できるが、このような構成要素は大規模ＳＭＰで使用するには効率が悪いことが多い。逆に、大規模ＳＭＰで使用するように設計された構成要素は、コストの点で、小規模システムで使用するには非実用的である。
【０００４】
その結果、ある程度複雑さが増すという犠牲を払って、ＳＭＰコンピュータ・システムの数多くの制限を解決する代替設計として、不均等メモリ・アクセス（ＮＵＭＡ）として知られるＭＰコンピュータ・システム・トポロジーが出現した。一般的なＮＵＭＡコンピュータ・システムは、それぞれが１つまたは複数のプロセッサおよびローカル「システム」メモリを含む、いくつかの相互接続されたノードを含む。リモート・ノードのシステム・メモリに格納されているデータよりも、ローカル・ノードのシステム・メモリに格納されているデータの方が各プロセッサのアクセス待ち時間が少ないので、こうしたコンピュータ・システムは、不均等メモリ・アクセスを有すると言われている。ＮＵＭＡシステムは、異なるノードのキャッシュ間でデータのコヒーレンスが維持されるかどうかによって、非コヒーレントまたはキャッシュ・コヒーレントのいずれかとしてさらに分類できる。キャッシュ・コヒーレントのＮＵＭＡ（ＣＣ−ＮＵＭＡ）システムの複雑さは、各ノード内にある様々なレベルのキャッシュ・メモリ間およびシステム・メモリ間だけではなく、異なるノードのキャッシュ・メモリ間およびシステム・メモリで、ハードウェアがデータのコヒーレンスを維持するのに追加の通信が必要なことに起因するところが大きい。しかしＮＵＭＡコンピュータ・システムは、ＮＵＭＡコンピュータ・システム内の各ノードが小規模なＳＭＰシステムとして実装できるので、従来のＳＭＰコンピュータ・システムが持つスケーラビリティの制限を解決している。したがって、各ノード内の共用構成要素は、ほんのわずかなプロセッサが使用するように最適化できる一方で、システム全体が比較的少ない待ち時間を維持しながら、大規模並列処理が利用できるという恩恵を受ける。
【０００５】
ＮＵＭＡシステムをスケーラブルなキャッシュ・コヒーレントに設計する場合は、単純なＳＭＰ設計には存在しないデータのコヒーレント問題を解決しなければならない。たとえば、単一バスのＭＰコンピュータ・システムでは、システム・バス上でトランザクションがキャンセルされる場合にデータ損失は発生しない。データ損失は、データ要素（キャッシュ・ラインなど）の有効なコピーだけがシステムの任意のまたはすべてのキャッシュまたはメモリから失われる、１組の状況として考えることができる。ＳＭＰシステムのキャッシュ・コヒーレンス・プロトコルは、こうした損失が発生しないように設計される。たとえば、ＳＭＰシステムのプロセッサによって読取りトランザクションが「再試行」される場合、データが実際にバスに送られる前に、バス上にあるすべての装置、すなわちデータの要求側、データの提供側、およびすべてのスヌーパに「再試行」を表示することができる。これによって、有効なコピーしか有しない装置によって、データが廃棄されない、すなわち「損失」しないことが保証される。また、データが提供された場合に発生するように、システム内のキャッシュの状態が変化することはないことが保証される。単一バスＭＰは、トランザクションを「キャンセル」するためのプロトコル機構の存在に対するデータのコヒーレンスも維持する。装置がデータを要求した場合、データが提供される前にデータが必要でなくなったことを要求側が示すと、トランザクションは「キャンセル」される。トランザクションは、トランザクションを発した装置、たとえばバッファが一杯になったメモリ制御装置など以外の装置によってキャンセルすることができる。第三者がこの方法でトランザクションをキャンセルすると、データがまだ必要な場合に限って、要求側はトランザクションを再発行する。その後データの有効なコピーは、常駐するメモリから提供されたり除去されたりすることはない。トランザクションのキャンセルはＳＭＰシステムの一般的な機能ではないが、すべての探索側がシステム・バス上で同時にトランザクションを見ることができるので、コヒーレンスを犠牲にせずにキャンセル機構を含むことができる。
【０００６】
トランザクションによっては潜在的に待ち時間が長いため、高性能のＮＵＭＡシステムは、プロトコル機構が以前に発行されたトランザクションをキャンセルするのにより有用となることがある。特定の環境では、ＮＵＭＡシステムはもはや必要でない見込みフェッチを取り消すためにキャンセル方法を使用することができる。プロセッサはトランザクションの一時停止を維持し、貴重なバス帯域幅を無駄にするようなデータを転送するために、資源を無駄にしてはならないので、これは適切なことであろう。ただしＮＵＭＡシステムでは、そのような状況を検出して矯正する処置を講じない限り、トランザクションのキャンセル中にデータが損失することのあるトランザクションを発生させる状況になる可能性がある。データを提供するノードでは成功するが、リモート・ノードからのデータがまだ移行中である場合に受取り側ノードではキャンセルされる、リモート処理ノードに対して発行されたＲＥＡＤトランザクションの場合を考えてみる。この場合は、データの有効なコピーのみの損失、すなわちデータのコヒーレンスの損失が発生することがある。
【０００７】
前述の場合、データを提供するノード側で、トランザクションのキャンセルがリモート処理ノードに伝送される前にキャッシュの状態が変化すると、データの損失が発生する。キャンセルは、読み取られたデータが提供されるバスとは物理的に異なるバス上で発生するので、ＳＭＰシステムで発生するようなキャッシュ状態の変更を防ぐことはできない。読取りトランザクションは、トランザクションがデータの受取り側ノードでキャンセルされる前、またはキャンセルが物理的に別個のバス間で通信可能になる前に、１つのバス上で首尾よく完了し、そのバスでのキャッシュの状態変更をトリガすることができる。このような状況下では、これらのバス間でインターフェースしている制御装置は、特に、データがまだメモリに書き込まれていないキャッシュ・ラインの修正済みコピーである場合、このデータの有効なコピーを保持し続けることができる。トランザクションがいったんキャンセルされると、ノード制御装置によって保持されるデータに対して読取り要求が発行されることはなく、したがってデータは失われ、メモリの整合性はなくなる。この問題は、ノード制御装置を介して修正済みデータをメモリへ書き込むどんなデータ・トランザクション中にでも発生する可能性がある。
【０００８】
【発明が解決しようとする課題】
したがって、これらの状況を検出して修正し、データおよびコヒーレンスの損失を避けるための方法およびシステムを提供することが必要である。
【０００９】
【課題を解決するための手段】
不均等メモリ・アクセス（ＮＵＭＡ）データ処理システムは、少なくとも第１のノードおよび第２のノードが結合されたノード相互接続を含む。第１および第２のノードはそれぞれ、ローカル相互接続と、ローカル相互接続に結合されているシステム・メモリと、ローカル相互接続とノード相互接続の間に置かれたノード制御装置とを含む。ノード制御装置は、ＮＵＭＡデータ処理システムの性質によって、データ損失を招く可能性のある一定の状況を検出する。これらの状況は、ノード制御装置が修正済みのキャッシュ・ラインのコピーのみで終わり、修正済みのキャッシュ・ラインを要求した元のトランザクションが、同じタグを使って再発行されることがないか、またはまったく再発行されないという、共通の特徴を共用する。ノード制御装置は、専用のタグを使用して修正済みのキャッシュに関するシステム・メモリへの専用の書込みトランザクションを発行することによって、これらの状況を是正し、次いで修正済みキャッシュ・ラインが保持しているデータを提供する。これにより、修正済みデータがシステム・メモリへ書き込まれることが保証される。
【００１０】
【発明の実施の形態】
Ｉ．ＮＵＭＡシステム
Ａ．システムの概要
図面、特に図１を参照すると、本発明の例示的実施形態による、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムの構成図が示されている。図の実施形態は、たとえば、ワークステーション、サーバ、またはメインフレーム・コンピュータとして実現することができる。図からわかるように、ＮＵＭＡコンピュータ・システム８は、ノード相互接続２２によって相互接続されたいくつか（Ｎ個）の処理ノード１０ａ〜１０ｄを含む。処理ノード１０ａ〜１０ｄは、それぞれ少なくとも１つ、最高Ｍ個までのプロセッサ１２を含む。プロセッサ１２ａ〜１２ｄは同一であり、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレイション（ＩＢＭ）から市販のＰｏｗｅｒＰＣＴＭラインのプロセッサを備えることが好ましい。プロセッサ１２ａ〜１２ｄはそれぞれ、レジスタ、命令フロー論理、およびプログラム命令を実行するのに使用される実行ユニットに加えて、それぞれがレベル２（Ｌ２）キャッシュ１４ａ〜１４ｄと共に、システム・メモリ１８から関連するプロセッサ１２にデータをステージングする際に使用される、オンチップのレベル１（Ｌ１）キャッシュ（図示せず）を含む。つまり、Ｌ１キャッシュおよびＬ２キャッシュ１４ａ〜１４ｄは、関連するプロセッサ１２によってアクセスされることの多いデータを一時的にバッファする、システム・メモリ１８とプロセッサ１２との間の中間記憶装置として機能する。Ｌ２キャッシュ１４は一般にＬ１キャッシュよりも記憶域が大きいが、アクセス待ち時間は長くなる。たとえば、Ｌ２キャッシュ１４ａ〜１４ｄの記憶容量は１〜１６メガバイト（ＭＢ）であり、オンチップのＬ１キャッシュの記憶容量は８〜３２キロバイトである。Ｌ２キャッシュ１４ａ〜１４ｄは、図１ではプロセッサ１２の外部にあるものとして図示されているが、別法として、追加レベルのオンチップ・キャッシュ・メモリとして、関連するプロセッサ１２中に組み込むこともできることを理解されたい。さらに、追加のデータ記憶域を提供するために、１つまたは複数の追加レベルのキャッシュ・メモリ（Ｌ３、Ｌ４等）が使用できることも理解されたい。以下の考察では、プロセッサ１２およびその関連するキャッシュ階層（Ｌ１、Ｌ２等）が、それぞれ単一のスヌーパであるとみなされる。
【００１１】
図からわかるように、処理ノード１０ａ〜１０ｄはそれぞれ、システム・メモリ１８およびＬ２キャッシュ１４ａ〜１４ｄと共にローカル相互接続１６に結合されたノード制御装置２０をさらに含む。各ノード制御装置２０は、少なくとも２つの機能を実行することにより、リモート処理ノード１０に対するローカル・エージェントとして働く。第１に各ノード制御装置２０は、リモート処理ノード１０へのローカル通信トランザクションの伝送を容易にするために、関連するローカル相互接続１６をスヌープする。第２に、各ノード制御装置２０は、ノード相互接続２２上の通信トランザクションをスヌープし、関連するローカル相互接続１６上の関連する通信トランザクションのマスタとなる。各ローカル相互接続１６上での通信は、アービタ２４によって制御される。以下で詳述するように、アービタ２４は、プロセッサ１２により生成されたバス要求信号に基づいてローカル相互接続１６へのアクセスを規制し、ローカル相互接続１６上でスヌープされた通信トランザクションに関するコヒーレンス応答をコンパイルする。
【００１２】
もちろん、ＮＵＭＡコンピュータ・システム８は、追加装置をさらに含むことができる。これらの追加装置は、本発明を理解するのに必要でなく、したがって本発明を不明瞭にするのを避けるために省略される。たとえば各ノード１０は、入出力装置（たとえば、表示装置、キーボード、またはグラフィカル・ポインタ）、オペレーティング・システムおよびアプリケーション・ソフトウェアを格納するための不揮発性記憶装置、ならびにネットワークまたは付属装置に接続するためのシリアル・ポートおよびパラレル・ポートもサポートすることができる。
【００１３】
Ｂ．メモリ構成
ＮＵＭＡコンピュータ・システム８のすべてのプロセッサ１２は、単一の物理メモリ領域を共用しており、これは、各物理アドレスがいずれか１つのシステム・メモリ１８内で単一のロケーションのみに関連付けられていることを意味する。したがって、一般にＮＵＭＡコンピュータ・システム８内の任意のプロセッサ１２によるアクセスが可能なシステム・メモリ全体の内容を、４つのシステム・メモリ１８間で区分されているものと見なすことができる。たとえば、図１に示された本発明の例示的実施形態では、プロセッサ１２は、汎用メモリ領域および未使用領域の両方を含む、１６ギガバイトのアドレス領域をアドレス指定する。汎用メモリ領域は、５００メガバイトのセグメントに分割され、４つの各処理ノード１０が４番目ごとのセグメントに割り振られる。未使用領域はおよそ２ギガバイトを含むことが可能であり、システム制御、ならびにそれぞれがいずれか１つの各処理ノード１０に割り振られている周辺のメモリおよび入出力領域を含む。
【００１４】
この考察では、特定のデータをそのシステム・メモリ１８に格納する処理ノードを、そのデータのホーム・ノードと呼び、他の処理ノードを特定のデータに関するリモート・ノードと呼ぶ。
【００１５】
Ｃ．メモリのコヒーレンス
各システム・メモリ１８内に格納されたデータは、ＮＵＭＡコンピュータ・システム８内の任意のプロセッサ１２による要求、アクセス、および修正が可能であるため、ＮＵＭＡコンピュータ・システム８は、同じ処理ノード内のキャッシュ間および異なる処理ノード内のキャッシュ間の両方でコヒーレンスを維持するために、キャッシュ・コヒーレンス・プロトコルを実装する。したがって、ＮＵＭＡコンピュータ・システム８は、ＣＣ−ＮＵＭＡコンピュータ・システムとして分類するのが適切である。実装されるキャッシュ・コヒーレンス・プロトコルは実装依存型であり、たとえば周知の修正（Ｍ）、排他的（Ｅ）、共用（Ｓ）、無効（Ｉ）（ＭＥＳＩ）プロトコルまたはその変形を備えることができる。以下では、Ｌ１キャッシュ、Ｌ２キャッシュ１４、およびアービタ２４が従来のＭＥＳＩプロトコルを実装するが、そのノード制御装置２０はＭ、Ｓ、およびＩ状態を認識し、Ｅ状態は正確さのためにＭ状態にマージされるとみなされる。すなわちノード制御装置２０は、リモート・キャッシュによって排他的に保持されるデータが実際に修正されたかどうかにかかわらず、そのデータを修正されたと想定する。
【００１６】
Ｄ．相互接続アーキテクチャ
ローカル相互接続１６およびノード相互接続２２は、それぞれ任意のバス・ベースの同報通信アーキテクチャ、スイッチ・ベースの同報通信アーキテクチャ、またはスイッチ・ベースの非同報通信アーキテクチャを使って実装することができる。ただし、例示的実施形態では、少なくともノード相互接続２２は、ＩＢＭコーポレイションによって開発された６ｘｘ通信プロトコルによって制御されるスイッチ・ベースの非同報通信相互接続として実装されている。ローカル相互接続１６およびノード相互接続２２では分割トランザクションが可能であるが、これはアドレスと通信トランザクションを備えたデータ保有期間との間に固定されたタイミング関係がなく、データ・パケットに対して関連するアドレス・パケットとは異なった命令を出すことができることを意味する。ローカル相互接続１６およびノード相互接続２２の使用度を、通信トランザクションのパイプライン化によって定めることも好ましい。そうすると、前の通信トランザクションのマスタが各受信者からのコヒーレンス応答を受け取る前に、後続の通信トランザクションがソースとなることが可能となる。
【００１７】
ノード相互接続２２を介した処理ノード１０間で、およびローカル相互接続１６を介したスヌーパ間で情報を搬送するために、実装される相互接続アーキテクチャのタイプにかかわらず、アドレス、データ、およびコヒーレンス応答という、少なくとも３タイプの「パケット」（ここで使用されるパケットとは、一般に情報の個別単位を指す）が使用される。ここで表１および表２を参照すると、アドレスおよびデータ・パケットに関する関連フィールドの要約および定義がそれぞれ与えてある。
【表１】
0003629511.tif 000002
【表２】
0003629511.tif 000003
【００１８】
表１および表２に示すように、受信者ノードまたはスヌーパが各パケットが属する通信トランザクションを判定できるようにするために、通信トランザクション内の各パケットはトランザクション・タグで識別される。追加のフロー制御論理および関連するフロー制御信号を使用して、有限の通信資源の使用が規制できることを、当業者であれば理解されよう。
【００１９】
各処理ノード１０内では、状態およびコヒーレンス応答が各スヌーパとローカル・アービタ２４との間で通信される。状態およびコヒーレンス通信に使用されるローカル相互接続１６内の信号ラインを、以下の表３にまとめて示す。
【表３】
0003629511.tif 000004
【００２０】
ローカル相互接続１６のＡＲｅｓｐラインおよびＡＳｔａｔラインを介して伝送される状態およびコヒーレンス応答は、関連するアドレス・パケットとの間に、固定されているがプログラム可能なタイミング関係を有することが好ましい。たとえば、ローカル相互接続１６上で伝送されるアドレス・パケットを各スヌーパが首尾よく受け取ったか否かに関する予備表示を与えるＡＳｔａｔＯｕｔボートが、アドレス・パケットを受け取った後の第２サイクルで要求される場合がある。アービタ２４は、ＡＳｔａｔＯｕｔボートをコンパイルし、次いで、固定されているがプログラム可能な数のサイクル（たとえば１サイクル）後に、ＡＳｔａｔＩｎボートを発行する。可能なＡＳｔａｔボートを、以下の表４にまとめて示す。
【表４】
0003629511.tif 000005
【００２１】
ＡＳｔａｔＩｎ期間に続き、固定されているがプログラム可能な数のサイクル（たとえば２サイクル）後に、ＡＲｅｓｐＯｕｔボートが要求される場合がある。アービタ２４は、好ましくは次のサイクル中に、各スヌーパのＡＲｅｓｐＯｕｔボートをコンパイルしてＡＲｅｓｐＩｎボートも送達する。可能なＡＲｅｓｐボートは、降順の優先順位でＡＲｅｓｐボートなどをリスト表示した、以下の表５にまとめて示すコヒーレンス応答を含むことが好ましい。
【表５】
0003629511.tif 000006
【００２２】
通常はノード制御装置２０によって発行されるＲｅＲｕｎ  ＡＲｅｓｐボートは、スヌープされた要求が長い待ち時間を有し（たとえば、リモート処理ノード側のプロセッサ１２またはシステム・メモリ１８によって要求が提供される）、要求のソースが後でトランザクションを再発行するように命令されることを示す。したがって、Ｒｅｔｒｙ  ＡＲｅｓｐボートとは対照的に、ＲｅＲｕｎは、ＲｅＲｕｎをボートしたトランザクションの受信者（トランザクションの発信者ではない）に、通信トランザクションを後で再発行させる義務を負わせる。
【００２３】
次に図２を参照すると、相互接続２２上のノード制御装置２０間で応答およびコマンドを通信する際に使用される、Ｉコマンドの例示的実施形態が示されている。図からわかるように、Ｉコマンド３６は、コマンド・タイプ・フィールド３３、ターゲット・ノード・フィールド３５、ソース・ノード・フィールド３７、トランザクション・タグ・フィールド３８、および有効（Ｖ）フィールド３９という、５つのフィールドを含む。コマンド・タイプ・フィールド３３は、Ｉコマンド３６のタイプの符号化表示を提供する。コマンド・タイプ・フィールド３３内で符号化できる可能なＩコマンドのいくつかを、以下の表６にまとめて示す。
【表６】
0003629511.tif 000007
【００２４】
各タイプのＩコマンドについて、受信者はターゲット・ノード・フィールド３５に指定され、送信側ノードはソース・ノード・フィールド３７に指定され、Ｉコマンドが関係するトランザクションはトランザクション・タグ・フィールド３８内に指定される。Ｉコマンド３６の妥当性は、有効（Ｖ）フィールド３９によって示される。
【００２５】
Ｅ．ノード制御装置
次に図３を参照すると、図１のＮＵＭＡコンピュータ・システム８のノード制御装置２０をより詳細に表した構成図が例示されている。図３からわかるように、ローカル相互接続１６とノード相互接続２２との間に結合されている各ノード制御装置２０は、トランザクション受信ユニット４０、トランザクション送信ユニット４２、データ受信ユニット（ＤＲＵ）４４、およびデータ送信ユニット（ＤＳＵ）４６を含む。トランザクション受信ユニット４０、トランザクション送信ユニット４２、ＤＲＵ４４、およびＤＳＵ４６は、たとえばフィールド・プログラム可能ゲート配列（ＦＰＧＡ）またはアプリケーション特有の集積回路（ＡＳＩＣ）を使って実装することができる。図に示すように、ノード・コントローラ２０を介したアドレス・パスおよびデータ・パスは、アドレス信号はトランザクション受信ユニット４０およびトランザクション送信ユニット４２で処理され、データ信号はＤＳＵ４４およびＤＲＵ４６で処理されるように、２つに分岐する。
【００２６】
ノード相互接続２２のトランザクション・フロー・オフを示すように指定されているトランザクション受信ユニット４０は、Ｉコマンド・チャネルを介して他のノードからＩコマンドを受信すること、ノード相互接続２２の共用アドレス・バスからトランザクションを受け入れること、ローカル相互接続１６上でトランザクションを発行すること、およびトランザクション送信ユニット４２に応答を転送することに対する責任を負っている。トランザクション受信ユニット４０は、ノード相互接続２２からトランザクションを受信し、トランザクション送信ユニット４２内のマスタ５４およびコヒーレンス応答論理５６の両方に選択したトランザクションを渡す、応答マルチプレクサ５２を含む。応答マルチプレクサ５２からの通信トランザクションの受信に応答して、バス・マスタ５４は、受信された通信トランザクションと同じか、またはエヴィクションなどディレクトリ保守のためにＴＳＵ内でディレクトリ制御用に生成される、そのローカル相互接続１６上での通信トランザクションを開始することができる。
【００２７】
ノード相互接続２２上でトランザクションを流すためのコンジットであるトランザクション送信ユニット４２は、その名称が示すように、トランザクション受信ユニット４０と対話してメモリ要求トランザクションを処理し、ＤＲＵ４４およびＤＳＵ４６にコマンドを発行してローカル相互接続１６とノード相互接続２２との間のデータ伝送を制御する。トランザクション送信ユニット４２はさらに、コヒーレンス応答論理５６を備えたノード相互接続２２のために選択した（すなわちＭＳＩ）コヒーレンス・プロトコルを実装し、ディレクトリ制御論理５８を備えたコヒーレンス・ディレクトリ５０を維持する。
【表７】
0003629511.tif 000008
【００２８】
コヒーレンス・ディレクトリ５０は、ローカル処理ノードがホーム・ノードであるリモート・ノード内でキャッシュに対して確認されたデータのシステム・メモリ・アドレスの表示（たとえばキャッシュ・ライン）を格納する。各データに関するこのアドレス表示は、こうした各リモート処理ノードでのデータのコピーおよびデータのコヒーレンス状態を有する、各リモート処理ノードの識別子に関連して格納される。コヒーレンス・ディレクトリ５０のエントリに関する可能なコヒーレンス状態を、表７にまとめて示す。表７に示すように、リモート処理ノードによって保持されるキャッシュ・ラインのコヒーレンス状態に関する知識は不正確である。この不正確さは、リモートに保持されたキャッシュ・ラインが、ホーム・ノードのノード制御装置２０に通知せずに、ＳからＩ、ＥからＩ、またはＥからＭへの移行を実行できるという事実による。
【００２９】
ＩＩ．データ損失の問題
次に図４および５を参照すると、ＮＵＭＡコンピュータ・システム内でトランザクションがキャンセルされることよって生じる、データ損失状況の例が図示されている。図４では、ホーム・ノード１０ａのプロセッサ１２ａによって行われるキャッシュ・ラインに対するＲＥＡＤ要求は、キャッシュ・ラインが修正状態で保持されるリモート・ノード１０ｂに転送される。次いでＲＥＡＤ要求は、リモート・ノード１０ｂで修正・介入応答を受信する。修正・介入応答は、１つのキャッシュ・メモリが、修正されたデータを１つまたは複数の他のキャッシュ・メモリに直接提供できるようにし、要求が読取り専用要求の場合は、修正されたデータを受信したすべてのキャッシュ・メモリを共用状態にする、コヒーレンス・ボートである。ＭＥＳＩプロトコルおよびＭＳＩプロトコルにおいて、共用状態とは、すべてのキャッシュ・メモリがホーム・ノード１０ａのシステム・メモリにあるラインのコピーに適合しているということを意味する。したがって、ラインを修正状態で保持したリモート・ノード１０ｂのキャッシュ・メモリは共用状態に進むが、キャッシュ・ラインのホーム・ノードがノード１０ａなので、ホーム・ノード１０ａのシステム・メモリは更新されなければならない。図５に示すように、修正・介入応答は修正データと共に、ReRunトランザクションが発行されるホーム・ノード１０ａにその後返信される。ホーム・ノード１０ａのプロセッサ１２ａがトランザクションを再発行すると、トランザクションはホーム・ノード１０ａのエージェントによってキャンセルされる。ReRunトランザクションがキャンセルされる多くの理由の１つは、トランザクションがもはや不必要であると思われる見込みＲＥＡＤであったためである。その間に、リモート・ノード１０ｂのキャッシュ・メモリは、キャッシュ・ラインが現在共用状態になっており、そのキャッシュ・ラインの唯一の有効なコピーがノード制御装置２０に保存されていて、ローカル・メモリ１８に達する方法がないので、このキャッシュ・ラインを暗黙に廃棄した可能性がある。前述の状況が検出され矯正されない限り、このデータは失われる。前述の状況に関連する別の問題は、データが損失した後にバスの衝突検出プロトコルによるデッドロックを引き起こす可能性のあるデータ転送が発生するまでは、ノード制御装置２０内のキャッシュ・コヒーレンス・ディレクトリが消去されないことである。
【００３０】
ＩＩＩ．データ損失問題の解決方法
データ損失問題を解決するには、ノード制御装置２０内のキャッシュ・コヒーレンス・ディレクトリが前述のすべての事象を監視できなければならない。これは、ノード制御装置２０がそれに対して可視性を有する情報の場合に可能である。ノード制御装置２０は、トランザクションがコヒーレンス応答ボーティング・ウィンドウから消去されるまで、すべてのトランザクションをバッファに入れる必要もある。ノード制御装置が修正・介入をボートしているＲｅＲｕｎされたトランザクションがキャンセルされたことをノード制御装置２０が検出すると、その後前述のデータ損失シナリオが発生すると言われる。ＮＵＭＡコンピュータ・システムは一般に、そのトランザクションの種類を示すトランザクションのアドレスを備えたＲビット属性などの表示を提供する。たとえば、Ｒ＝０はオリジナル・トランザクションを表し、Ｒ＝１はこれまでにＲｅＲｕｎされ、ＲｅＲｕｎ要求によって再発行されるトランザクションを表す。
【００３１】
ノード制御装置２０がいったんデータ損失シナリオを検出すると、ノード制御装置２０は以下のようにそのデータ損失シナリオを解決しなければならない。ノード制御装置２０は、修正されたデータをローカル・メモリ１８に書き戻しできるようにする、ローカル・バス１６上の要求を生成しなければならない。ノード制御装置２０は、トランザクションが応答段階を通過するまで前のトランザクションをすべて保持するので、ノード制御装置２０は、データをローカル・メモリ１８に書き戻しするために、書き戻し・消去（ＷＢＣ）バス・トランザクションを生成することができる。ノード制御装置２０は、ノード制御装置２０が所有しているタグ領域内のタグを使用しなければならない。タグを所有しているプロセッサがタグを再度使用する可能性があるか、または別のバス・マスタが同じタグによって混乱する可能性があるので、オリジナル・タグは使用できない。ノード制御装置２０は、保留バッファの識別子（ＩＤ）、ノードＩＤ、およびその独自のバス・マスタＩＤを使用して、固有のタグを生成することができる。
【００３２】
ノード制御装置２０にバスが認可されると、ノード制御装置２０は新しいタグの付いたＷＢＣトランザクションを生成し、Ｒビットは「１」に設定される。ノード制御装置２０は、データ・バッファ内に保持しているデータもＷＢＣに提供する。そのデータのタグは、新しいトランザクション・タグに合うように変更される。ノード制御装置２０が別々のアドレス・ユニットとデータ・ユニットに分けられている場合、データ・ユニット内に常駐するデータ・パケットも新しいタグに付け替える必要がある。これは、古いタグと新しいタグの両方をデータ・ユニットに渡すコマンドを使って達成される。データがメモリに書き込まれるまで、ノード制御装置２０内のコヒーレンス機構は、キャッシュ・ラインに対するトランザクションを再試行して、このキャッシュ・ラインのコヒーレンスを保護しなければならない。Ｒビットが「１」に設定されているので、ノード制御装置２０は独自のＷＢＣトランザクションを再試行しない。ＷＢＣ要求がいったん完了すると、エントリは保留バッファから削除され、ディレクトリ状態は更新される。
【００３３】
次に図６、図７、図８を参照すると、本発明の例示的実施形態による、キャンセルされたトランザクションによって引き起こされるデータ損失状況の解決例が示されている。図６に示すように、ホーム・ノード１０ａでのＲＥＡＤ要求は、修正されたデータが常駐するリモート・ノード１０ｂに転送される。ＲＥＡＤ要求は、リモート・ノード１０ｂで修正・介入のボートを受け取る。次いでリモート・ノード１０ｂは、図７に示すように、修正・介入ボートおよび修正されたデータをホーム・ノード１０ａに送信する。ホーム・ノード１０ａのプロセッサ１２ａが、ノード制御装置２０からのＲｅＲｕｎ要求の結果としてＲ＝１トランザクションを再発行すると、ホーム・ノード１０ａは再試行のボートを発行するので、トランザクションがキャンセルされる。ノード制御装置２０は、データ損失シナリオの発生を監視することができる。ノード制御装置２０は次いで前述のように新しいタグを生成し、Ｒ＝１でＷＢＣ要求を発行する。ノード制御装置２０内のコヒーレンス機構は、図８に示すように、ＷＢＣ要求がローカルに生成されたＷＢＣ要求のＲｅＲｕｎであるかのように、ＷＢＣ要求を完了させることができる。その結果、ここでローカル・メモリ１８内のデータが有効になる。
【００３４】
以上述べてきたように、本発明は、ＮＵＭＡコンピュータ・システム内でのトランザクションのキャンセルによるデータ損失を避けるための改良方法を提供するものである。
【００３５】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３６】
（１）相互接続に結合された少なくとも２つのノードを含み、前記少なくとも２つのノードがそれぞれローカル・システム・メモリを含む、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムにおいて、トランザクションのキャンセルによるデータ損失を避けるための方法であって、
ホーム・ノードから修正されたデータが常駐するリモート・ノードへのデータ・アクセス要求に応答して、修正・介入ボートを前記修正されたデータと共に前記リモート・ノードから前記ホーム・ノードへ送信するステップと、
その後、前記ホーム・ノードに配置されたノード制御装置からの再発行要求の結果として、前記ホーム・ノードに配置されたプロセッサがデータ・アクセス要求を再発行するのに応答して、前記ホーム・ノードからの前記データ・アクセス要求をキャンセルするステップと、
前記修正されたデータを、前記ノード制御装置から前記ホーム・ノードに配置されたローカル・システム・メモリに送達するための書き戻し要求を発行するステップとを含む方法。
（２）前記データ・アクセス要求が、修正されたデータをメモリに書き込ませる任意のトランザクションを含む、上記（１）に記載の方法。
（３）前記再発行されたデータ・アクセス要求トランザクションが、再発行インジケータ・ビット・セットを有する、上記（１）に記載の方法。
（４）前記書き戻し要求がライン書き戻し要求である、上記（１）に記載の方法。
（５）前記ホーム・ノードに配置されているプロセッサによって書き戻し要求を発行する前記ステップが、前記データ・アクセス要求のキャンセルに応答して実行される、上記（１）に記載の方法。
（６）書き戻し要求を発行する前記ステップが、修正・介入を送信する前記ステップとキャンセル・ボートを発行する前記ステップに応答して実行される、上記（１）に記載の方法。
（７）トランザクションのキャンセルによるデータの損失を避けることのできる不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムであって、相互接続に結合された少なくとも２つのノードを含み、前記少なくとも２つのノードがそれぞれローカル・システム・メモリを含み、
ホーム・ノードから修正されたデータが常駐するリモート・ノードへのデータ・アクセス要求に応答して、修正・介入ボートを前記修正されたデータと共に前記リモート・ノードから前記ホーム・ノードへ送信する手段と、
前記ホーム・ノードに配置されたノード制御装置からの再発行要求の結果として、前記ホーム・ノードに配置されたプロセッサがデータ・アクセス要求を再発行するのに応答して、前記ホーム・ノードからの前記データ・アクセス要求をキャンセルする手段と、
前記修正されたデータを、前記ノード制御装置から前記ホーム・ノードに配置されたローカル・システム・メモリに送達するための書き戻し要求を発行する手段とを含むＮＵＭＡコンピュータ・システム。
（８）前記データ・アクセス要求が、修正されたデータをメモリに書き込ませる任意のトランザクションを含む、上記（７）に記載のＮＵＭＡコンピュータ・システム。
（９）前記再発行されたデータ・アクセス要求トランザクションが、再発行インジケータ・ビット・セットを有する、上記（７）に記載のＮＵＭＡコンピュータ・システム。
（１０）前記書き戻し要求がライン書き戻し要求である、上記（７）に記載のＮＵＭＡコンピュータ・システム。
（１１）前記ホーム・ノードに配置されているプロセッサによって書き戻し要求を発行する前記手段が、前記データ・アクセス要求のキャンセルに応答して実行される、上記（７）に記載のＮＵＭＡコンピュータ・システム。
（１２）書き戻し要求を発行する前記手段が、修正・介入の送信とキャンセル・ボートの発行に応答して実行される、上記（７）に記載のＮＵＭＡコンピュータ・システム。
【図面の簡単な説明】
【図１】本発明の好ましい実施形態による、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムの構成図である。
【図２】Ｉ−コマンドの例示的実施形態を示す図である。
【図３】図１に示されたノード制御装置のさらに詳細な構成図である。
【図４】ＮＵＭＡコンピュータ・システムにおいて、キャンセル済みトランザクションによって引き起こされるデータ損失状況を示す図である。
【図５】ＮＵＭＡコンピュータ・システムにおいて、キャンセル済みトランザクションによって引き起こされるデータ損失状況を示す図である。
【図６】本発明の好ましい実施形態により、キャンセル済みトランザクションによって引き起こされるデータ損失状況のソリューションを示す図である。
【図７】本発明の好ましい実施形態により、キャンセル済みトランザクションによって引き起こされるデータ損失状況のソリューションを示す図である。
【図８】本発明の好ましい実施形態により、キャンセル済みトランザクションによって引き起こされるデータ損失状況のソリューションを示す図である。
【符号の説明】
１０ａ  処理ノード
１０ｂ  処理ノード
１２ａ  プロセッサ
１６  ローカル相互接続
１８  メモリ
２０  ノード制御装置
２４  アービタ
【図１】
0003629511.tif 000009
【図２】
0003629511.tif 000010
【図３】
0003629511.tif 000011
【図４】
0003629511.tif 000012
【図５】
0003629511.tif 000013
【図６】
0003629511.tif 000014
【図７】
0003629511.tif 000015
【図８】
0003629511.tif 000016