(57)【特許請求の範囲】
【請求項１】
システム・メモリと、それぞれが関連キャッシュ階層を有する第１及び第２のプロセッサとを含む、第１の処理ノードと、
前記第１の処理ノードに結合され、関連キャッシュ階層を有する少なくとも第３のプロセッサとシステム・メモリとを含む第２の処理ノードと
を含み、
前記第１のプロセッサの前記キャッシュ階層が、あるキャッシュ・ラインの未変更コピーを保持し、前記第３のプロセッサから前記キャッシュ・ラインに対する要求を受信する前に、前記第１のプロセッサの前記キャッシュ階層内で前記キャッシュ・ラインの前記未変更コピーを排他状態または最近コヒーレンス状態のいずれかのコヒーレンス状態に関連付け、前記第１のプロセッサの前記キャッシュ階層が前記第３のプロセッサから前記キャッシュ・ラインに対する要求を受信すると、前記第１のプロセッサの前記キャッシュ階層が前記キャッシュ・ラインを前記第３のプロセッサに発信し、前記第１のプロセッサの前記キャッシュ階層が前記キャッシュ・ラインを発信できるように前記キャッシュ・ラインの前記コピーを最近コヒーレンス状態に保持し、前記第３のプロセッサの前記キャッシュ階層が、前記第１のプロセッサの前記キャッシュ階層により発信される前記キャッシュ・ラインの受信に応答して、前記キャッシュ・ラインのコピーを前記最近コヒーレンス状態で前記キャッシュ・ラインを記憶し、前記第１のプロセッサの前記キャッシュ階層と前記第３のプロセッサの前記キャッシュ階層との両方が、同時に前記キャッシュ・ラインのコピーを前記最近コヒーレンス状態に保持する、
コンピュータ・システム。
【請求項２】
前記第１のプロセッサの前記キャッシュ階層があるキャッシュ・ラインの変更コピーを保持し、前記第３のプロセッサから前記キャッシュ・ラインに対する要求を受信すると、前記第１のプロセッサの前記キャッシュ階層が前記キャッシュ・ラインを前記第３のプロセッサに発信し、前記キャッシュ・ラインの前記コピーを前記最近コヒーレンス状態に保持する、請求項１記載のコンピュータ・システム。
【請求項３】
前記第１及び第２の処理ノードがノード相互接続により結合され、
前記第１の処理ノードが、前記ノード相互接続と前記第１のプロセッサ間に配置されるノード制御装置を含み、前記ノード制御装置が前記要求を、該要求が別の前記処理ノードからのものであることの指示と一緒に、前記第１のプロセッサに転送する、
請求項１記載のコンピュータ・システム。
【請求項４】
前記要求が読出し要求である、請求項１記載のコンピュータ・システム。
【請求項５】
システム・メモリと、それぞれが関連キャッシュ階層を有する第１及び第２のプロセッサとを含む第１の処理ノードと、前記第１の処理ノードに結合され、関連キャッシュ階層を有する少なくとも第３のプロセッサとシステム・メモリとを含む第２の処理ノードとを含むコンピュータ・システムにおける通信方法であって、
前記第１のプロセッサの前記キャッシュ階層において、前記第３のプロセッサから、前記第１のプロセッサの前記キャッシュ階層がコピーを保持するキャッシュ・ラインに対する要求を受信するステップと、
前記要求キャッシュ・ラインの未変更コピーが前記第１のプロセッサの前記キャッシュ階層内に保持される場合、前記キャッシュ・ラインを前記第１のプロセッサの前記キャッシュ階層から前記第３のプロセッサに発信し、前記第１のプロセッサの前記キャッシュ階層が前記キャッシュ・ラインを発信できるように前記第１のプロセッサの前記キャッシュ階層内の前記キャッシュ・ラインの前記コピーを、最近コヒーレンス状態に保持するステップと、
前記第１のプロセッサの前記キャッシュ階層により発信される前記キャッシュ・ラインの受信に応答して、前記第３のプロセッサの前記キャッシュ階層内において、前記キャッシュ・ラインのコピーを前記最近コヒーレンス状態で前記キャッシュ・ラインを記憶するステップとを含み、
前記第３のプロセッサから、前記第１のプロセッサの前記キャッシュ階層がコピーを保持するキャッシュ・ラインに対する要求を受信するステップが、前記第３のプロセッサから前記キャッシュ・ラインに対する要求を受信するとき、前記キャッシュ・ラインの前記未変更コピーを、前記第１のプロセッサの前記キャッシュ階層内で、排他状態または最近コヒーレンス状態のいずれかのコヒーレンス状態に関連付けるステップを含み、
前記第１のプロセッサの前記キャッシュ階層と前記第３のプロセッサの前記キャッシュ階層との両方が、同時に前記キャッシュ・ラインのコピーを前記最近コヒーレンス状態に保持する、方法。
【請求項６】
前記要求キャッシュ・ラインの変更コピーが前記第１のプロセッサの前記キャッシュ階層内に保持される場合、前記キャッシュ・ラインを前記第１のプロセッサの前記キャッシュ階層から前記第３のプロセッサに発信し、前記第１のプロセッサの前記キャッシュ階層内の前記キャッシュ・ラインの前記コピーを、前記第１のプロセッサの前記キャッシュ階層が前記キャッシュ・ラインを発信できるように最近コヒーレンス状態に保持するステップを含む、請求項５記載の方法。
【請求項７】
前記第１及び第２の処理ノードがノード相互接続により結合され、
前記第１の処理ノードが、前記ノード相互接続と前記第１のプロセッサ間に配置されるノード制御装置を含み、前記方法が、
前記ノード制御装置において前記要求を受信し、前記要求を前記ノード制御装置から、該要求が別の前記処理ノードからのものであることの指示と一緒に、前記第１のプロセッサに転送するステップを含む、請求項５記載の方法。
【請求項８】
前記要求が読出し要求の受信を含む、請求項５記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般に、データ処理のための方法及びシステムに関し、特に、不均等メモリ・アクセス（ＮＵＭＡ：non-uniform memory access）データ処理システムにおけるデータ処理に関する。より詳細には、本発明は、共用介入により要求データを供給するＭＵＭＡデータ処理システム、及びＭＵＭＡデータ処理システムにおける方法に関する。
【０００２】
【従来の技術】
コンピュータ技術では、複数の個々のプロセッサの処理能力をタンデムに結合することにより、偉大なコンピュータ・システム性能が達成され得ることが知られている。マルチプロセッサ（ＭＰ）・コンピュータ・システムは、多数の異なるトポロジにより設計され、各アプリケーションの性能要求及びソフトウェア環境に応じて、様々なトポロジが特定のアプリケーションにとってより好適となる。最も一般的なＭＰコンピュータ・トポロジの１つは、対称マルチプロセッサ（ＳＭＰ）構成であり、そこでは複数のプロセッサが、システム・メモリや入出力（Ｉ／Ｏ）サブシステムなどの共通の資源を共用する。これらの共通資源は一般に、共用システム相互接続に結合される。こうしたコンピュータ・システムは対称型と呼ばれる。なぜなら、ＳＭＰコンピュータ・システム内の全てのプロセッサが、理想的には、共用システム・メモリ内に記憶されるデータに対して同一のアクセス待ち時間を有するからである。
【０００３】
ＳＭＰコンピュータ・システムは、比較的単純なプロセッサ間通信及びデータ共用方式の使用を可能にするが、ＳＭＰコンピュータ・システムは限られたスケーラビリティを有する。換言すると、典型的なＳＭＰコンピュータ・システムの性能は、一般に、スケール（すなわちより多くのプロセッサの追加）に伴い改善されると期待されるが、共用資源の利用が最適化されるインプリメンテーション依存のサイズを超えて、ＳＭＰをスケーリングしても、固有バス、メモリ、及び入出力（Ｉ／Ｏ）の帯域幅制限が大きな利点の獲得を阻害する。従って、システムのスケールが増大するとき、ＳＭＰトポロジ自身がある程度の帯域幅制限を受け、これは特にシステム・メモリにおいて顕著である。ＳＭＰコンピュータ・システムはまた、製造効率の観点からも十分にスケーリングできない。例えば、一部のコンポーネントは、単一プロセッサ及び小規模ＳＭＰコンピュータ・システムの両方において使用されるように最適化されるが、こうしたコンポーネントは大規模ＳＭＰで使用するには、しばしば非効率的である。逆に、大規模ＳＭＰ用に設計されたコンポーネントは、小規模システムにおいて使用するには、コストの観点から非現実的である。
【０００４】
結果的に、不均等メモリ・アクセス（ＮＵＭＡ）として知られるＭＰコンピュータ・システム・トポロジが、特定の追加の複雑化を犠牲にして、ＳＭＰコンピュータ・システムの多くの制限を解決する代替設計として登場した。典型的なＮＵＭＡコンピュータ・システムは多数の相互接続ノードを含み、各ノードは１つ以上のプロセッサ及びローカル・"システム"・メモリを含む。こうしたコンピュータ・システムは、不均等メモリ・アクセスを有すると言われる。なぜなら、各プロセッサが、そのローカル・ノードのシステム・メモリに記憶されるデータに対する方が、リモート・ノードのシステム・メモリに記憶されるデータに対するよりも、低いアクセス待ち時間を有するからである。ＭＵＭＡシステムは更に、データ・コヒーレンスが異なるノード内のキャッシュ間で維持されるか否かに従い、ノンコヒーレントまたはキャッシュ・コヒーレントとして分類される。キャッシュ・コヒーレントＮＵＭＡ（ＣＣ−ＭＵＭＡ）システムの複雑性は、その大部分が、各ノード内の様々なレベルのキャッシュ・メモリとシステム・メモリ間のデータ・コヒーレンスだけでなく、異なるノード内のキャッシュ・メモリとシステム・メモリ間のデータ・コヒーレンスを維持するために、ハードウェアに要求される追加の通信に帰属する。しかしながら、ＮＵＭＡコンピュータ・システムでは、ＮＵＭＡコンピュータ・システム内の各ノードが、小規模ＳＭＰシステムとして実現され得るので、従来のＳＭＰコンピュータ・システムのスケーラビリティ制限を解決する。従って、各ノード内の共用コンポーネントが、幾つかのプロセッサだけによる使用のために最適化され、システム全体は比較的低い待ち時間を維持しながら、大規模並列性の可用性による恩恵を受ける。
【０００５】
【発明が解決しようとする課題】
ＣＣ−ＮＵＭＡコンピュータ・システムに関わる基本性能問題は、ノードを結合する相互接続を介して伝送される通信トランザクションに関連する待ち時間である。特に、最も一般的なタイプのトランザクションである読出しトランザクションは、リモート・システム・メモリ内に存在するデータをターゲットとするとき、ローカル・システム・メモリ内に存在するデータをターゲットとする読取りトランザクションに比較して、２倍の待ち時間を有し得る。ローカル相互接続上の読取りトランザクションに対し、ノード相互接続を介して伝送される読取りトランザクションに関連付けられる比較的高い待ち時間により、ノード相互接続を介して伝送される読取りトランザクションの数を低減すること、及びこうしたリモート読出しトランザクションの待ち時間を低減することが好ましい。
【０００６】
【課題を解決するための手段】
本発明によれば、不均等メモリ・アクセス（ＮＵＭＡ）・コンピュータ・システムにおける読出し要求の数及び待ち時間が、共用介入をサポートすることにより低減される。ＮＵＭＡコンピュータ・システムは、一緒に結合される第１及び第２の処理ノードを含む。第１の処理ノードはシステム・メモリと、各々がそれぞれの関連キャッシュ階層を有する第１及び第２のプロセッサとを含む。第２の処理ノードは、少なくとも第３のプロセッサとシステム・メモリとを含む。第１のプロセッサのキャッシュ階層が、あるキャッシュ・ラインの未変更コピーを保持し、第３のプロセッサからそのキャッシュ・ラインに対する要求を受信すると、第１のプロセッサのキャッシュ階層が要求キャッシュ・ラインを第３のプロセッサに発信し、そのキャッシュ・ラインのコピーを最近コヒーレンス状態に保持し、そこから第１のプロセッサのキャッシュ階層は続く要求に応答して、キャッシュ・ラインを発信することができる。
【０００７】
本発明の目的、特徴及び利点は、添付の図面に関連して述べられる本発明の実施例の詳細な説明から明らかとなろう。
【０００８】
【発明の実施の形態】
システム概要：
図１を参照すると、本発明に従うＮＵＭＡコンピュータ・システムの実施例が示される。図示の実施例は、例えばワークステーション、サーバ、またはメインフレーム・コンピュータとして実現される。図示のように、ＮＵＭＡコンピュータ・システム６は複数（Ｎ≧２）の処理ノード８ａ乃至８ｎを含み、それらがノード相互接続２２により相互接続される。処理ノード８ａ乃至８ｎは各々、Ｍ（Ｍ≧０）個のプロセッサ１０、ローカル相互接続１６、及びメモリ制御装置１７を介してアクセスされるシステム・メモリ１８を含む。プロセッサ１０ａ乃至１０ｍは好適には同一であり（但し必ずしも同一である必要はない）、ＩＢＭから提供されるＰｏｗｅｒＰＣプロセッサ・ライン内のプロセッサを含み得る。レジスタに加え、命令フロー論理及び実行ユニットがプログラム命令を実行するために使用され、これらは一般にプロセッサ・コア１２として示される。プロセッッサ１０ａ乃至１０ｍの各々は、データをシステム・メモリ１８から関連プロセッサ・コア１２にステージするために使用されるオンチップ・キャッシュ階層を含む。各キャッシュ階層１４は少なくとも１レベルのキャッシュを含み、例えばレベル１（Ｌ１）キャッシュ及びレベル２（Ｌ２）キャッシュを含み、それぞれが８キロバイト乃至３２キロバイト（ＫＢ）及び１メガバイト乃至１６メガバイト（ＭＢ）の記憶容量を有する。従来通り、こうしたキャッシュはキャッシュ制御装置により管理され、キャッシュ制御装置はとりわけ、選択キャッシュ・ライン置換法及びコヒーレンス・プロトコルを実現する。本開示では、各プロセッサ１０及びその関連キャッシュ階層１４は、単一スヌーパと見なされる。
【０００９】
処理ノード８ａ乃至８ｎの各々は、ローカル相互接続１６とノード相互接続２２間に結合されるそれぞれのノード制御装置２０を含む。各ノード制御装置２０は、少なくとも２つの機能を実行することにより、リモート処理ノード８のためのローカル・エージェントとして作用する。第１に、各ノード制御装置２０は関連ローカル相互接続１６をスヌープし、リモート処理ノード８へのローカル通信トランザクション（例えば読出し要求）の伝送を容易にする。第２に、各ノード制御装置２０はノード相互接続２２上の通信トランザクションをスヌープし、関連ローカル相互接続１６上の関連通信トランザクションを支配する。各ローカル相互接続１６上の通信は、アービタ２４により制御される。アービタ２４は、後述のように、プロセッサ１０により生成されるバス要求信号にもとづき、ローカル相互接続１６へのアクセスを調整し、ローカル相互接続１６上でスヌープされた通信トランザクションのために、コヒーレンス応答をコンパイルする。
【００１０】
ローカル相互接続１６は、メザニン・バス・ブリッジ２６を介してメザニン・バス３０に結合される。メザニン・バス３０は、例えば周辺コンポーネント相互接続（ＰＣＩ）ローカル・バスとして実現され得る。メザニン・バス・ブリッジ２６は、プロセッサ１０がＩ／Ｏ装置３２及び記憶装置３４の中の装置を直接アクセスする低待ち時間経路と、Ｉ／Ｏ装置３２及び記憶装置３４がシステム・メモリ１８をアクセスする高帯域幅経路の両方を提供する。ここでＩ／Ｏ装置３２及び記憶装置３４は、バス・メモリまたはＩ／Ｏアドレス空間にマップされる。Ｉ／Ｏ装置３２は例えば、表示装置、キーボード、グラフィカル・ポインタ、及び外部ネットワークまたは接続装置への接続のためのシリアル及びパラレル・ポートを含む。他方、記憶装置３４は光ディスクまたは磁気ディスクを含み得、これらはオペレーティング・システム及びアプリケーション・ソフトウェアのための不揮発性記憶装置を提供する。
【００１１】
メモリ構成：
ＭＵＭＡコンピュータ・システム６内の全てのプロセッサ１０が、１つの物理メモリ空間を共用し、このことは各物理アドレスが、システム・メモリ１８の１つ内の単一の位置にだけ関連付けられることを意味する。従って、システム・メモリの全体の内容が、一般にＮＵＭＡコンピュータ・システム６内の任意のプロセッサ１０によりアクセスされ、システム・メモリ１８間で区分化されると見なされる。例えば、４つの処理ノード８を有する本発明の実施例では、ＮＵＭＡコンピュータ・システムが、汎用メモリ領域及び予約領域の両方を含む、１６ギガバイト（ＧＢ）の物理アドレス空間を有し得る。汎用メモリ領域は５００ＭＢセグメントに分割され、４つの各々の処理ノード８が４セグメント毎に割当てられる。予約領域は約２ＧＢを含み得、システム制御、周辺メモリ及びＩ／Ｏ領域を含み、これらの各々がそれぞれの１つの処理ノード８に割当てられる。
【００１２】
説明の都合上、処理ノード８はそのシステム・メモリ１８内に特定のデータを記憶し、そのデータに対するホーム・ノードと呼ばれる。逆に、他の処理ノード８ａ乃至８ｎはその特定のデータに関して、リモート・ノードと呼ばれる。
【００１３】
メモリ・コヒーレンス：
各システム・メモリ１８内に記憶されるデータは、ＮＵＭＡコンピュータ・システム６内の任意のプロセッサ１０により要求され、アクセスされ、変更され得るので、ＮＵＭＡコンピュータ・システム６はキャッシュ・コヒーレンス・プロトコルを実行し、同一の処理ノード内のキャッシュ間、及び異なる処理ノード内のキャッシュ間の両方において、コヒーレンスを維持する。従って、ＮＵＭＡコンピュータ・システム６は、ＣＣ（キャッシュ・コヒーレント）−ＮＵＭＡコンピュータ・システムとして適切に分類される。実行される特定のキャッシュ・コヒーレンス・プロトコルは、インプリメンテーション依存であるが、本発明の好適な実施例では、公知の変更（Modified）、排他（Exclusive）、共用（Shared）、無効（Invalid）（すなわちＭＥＳＩ）プロトコルの変形として、５番目のＲ（最近（Recent））状態を含む。これについては、前記参照した係属中の米国特許出願で詳述されている。以下では、キャッシュ階層１４及びアービタ２４が、従来のＲ−ＭＥＳＩプロトコルを実行すると仮定し、ノード制御装置２０がＭ状態、Ｓ状態及びＩ状態を認識し、Ｅ状態がＭ状態に併合され、Ｒ状態がＳ状態に併合されるものと見なす。すなわち、ノード制御装置２０は、リモート・キャッシュにより排他的に保持されるデータが、それが実際に変更されたか否かに関わらず、変更されたものと仮定し、遠隔的に保持されたデータに対してＳ状態とＲ状態とを区別しない。
【００１４】
相互接続アーキテクチャ：
ローカル相互接続１６及びノード相互接続２２は、それぞれ任意のバス・ベースの同報アーキテクチャ、スイッチ・ベースの同報アーキテクチャ、またはスイッチ・ベースの非同報アーキテクチャにより実現され得る。しかしながら、好適な実施例では、少なくともノード相互接続２２は、ＩＢＭにより開発された６ｘｘ通信プロトコルにより管理されるスイッチ・ベースの非同報相互接続として実現される。ローカル相互接続１６及びノード相互接続２２は、トランザクションの分割を可能にし、このことはすなわち、通信トランザクションを構成するアドレス及びデータ保有期間の間に、固定のタイミング関係が存在せず、またデータ・パケットが、関連付けられるアドレス・パケットと異なって順序付けられることを意味する。ローカル相互接続１６及びノード相互接続２２の使用はまた、好適には、通信トランザクションをパイプライン化することにより向上され、これは続く通信トランザクションが、前の通信トランザクションのマスタが各受信者からコヒーレンス応答を受信するよりも先に、発信されることを可能にする。
【００１５】
実現される相互接続アーキテクチャのタイプに関係無しに、少なくとも３つのタイプの"パケット"、すなわちアドレス、データ、及びコヒーレンス応答が、ノード相互接続２２を介して処理ノード８間で、及びローカル相互接続１６を介してスヌーパ間で、情報を伝達するために使用される（ここではパケットは、情報の個別単位を指し示すために総称的に使用される）。次に、表１、表２を参照すると、アドレス及びデータ・パケットの関連フィールド及び定義の概要が、それぞれ示される。
【表１】
0003661761.tif 000002
【００１６】
【表２】
0003661761.tif 000003
【００１７】
表１及び表２に示されるように、受信ノードまたはスヌーパが、各パケットが属する通信トランザクションを判断することを可能にするために、通信トランザクション内の各パケットが、トランザクション・タグにより識別される。当業者であれば分かるように、追加のフロー制御論理及び関連フロー制御信号が、有限な通信資源の利用を調整するために使用され得る。
【００１８】
各処理ノード８内において、ステータス及びコヒーレンス応答が、各スヌーパとローカル・アービタ２４間で通信される。ステータス及びコヒーレンス通信のために使用される、ローカル相互接続１６内の信号線が、表３に要約して示される。
【表３】
0003661761.tif 000004
【００１９】
ローカル相互接続１６のAResp及びAStat信号線を介して伝送されるステータス及びコヒーレンス応答は、好適には、関連するアドレス・パケットと固定の、しかしながらプログラマブルなタイミング関係を有する。例えば、AStatOut採決は、各スヌーパがローカル相互接続１６上を伝送されるアドレス・パケットを成功裡に受信したか否かの予備指示を提供し、アドレス・パケットの受信に続く第２サイクルにおいて要求され得る。アービタ２４はAStatOut採決をコンパイルし、固定のしかしながらプログラマブルなサイクル数（例えば１サイクル）の後に、AStatIn採決を発行する。可能なAStat採決が、表４に要約されて示される。
【表４】
0003661761.tif 000005
【００２０】
AStatIn期間に続き、固定のしかしながらプログラマブルなサイクル数（例えば２サイクル）の後に、ARespOut採決が要求され得る。アービタ２４はまた、好適には次のサイクルの間に、各スヌーパのARespOut採決をコンパイルし、ARespIn採決を転送する。可能なAResp採決は、好適には、表５に示されるコヒーレンス応答を含む。
【表５】
0003661761.tif 000006
【００２１】
AResp採決の再実行は、通常ノード制御装置２０により発行され、これはスヌープされた要求が長い待ち時間を有し（例えば要求がリモート処理ノード８において、プロセッサ１０またはシステム・メモリ１８によりサービスされる）、要求元が後にトランザクションを再発行するように命令されることを示す。従って、AResp採決の再試行と比較して、再実行は、（トランザクションの発信者ではなく、）再実行を採決したトランザクションの受信者に対して、後に通信トランザクションの再発行を指示する責任を負わせる。
【００２２】
ノード制御装置：
図２を参照すると、図１のＮＵＭＡコンピュータ・システム６内のノード制御装置２０のより詳細なブロック図が示される。図２に示されるように、各ノード制御装置２０はローカル相互接続１６とノード相互接続２２との間に結合され、トランザクション受信ユニット（ＴＲＵ）４０、トランザクション送信ユニット（ＴＳＵ）４２、データ受信ユニット（ＤＲＵ）４４、及びデータ送信ユニット（ＤＳＵ）４６を含む。ＴＲＵ４０、ＴＳＵ４２、ＤＲＵ４４及びＤＳＵ４６は、例えばフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）またはアプリケーション特定集積回路（ＡＳＩＣ）により実現される。図示のように、ノード制御装置２０を通じるアドレス及びデータ経路は二股に分岐され、アドレス（及びコヒーレンス）・パケットがＴＲＵ４０及びＴＳＵ４２により処理され、データ・パケットがＤＳＵ４４及びＤＲＵ４６により処理される。
【００２３】
ＴＲＵ４０は、ノード相互接続２２からのトランザクション・フローを示すように指定され、ノード相互接続２２からアドレス及びコヒーレンス・パケットを受諾し、トランザクションをローカル相互接続１６上に発行し、応答をＴＳＵ４２に転送する責任がある。ＴＲＵ４０は応答マルチプレクサ５２を含み、これはノード相互接続２２からパケットを受信し、選択されたパケットをバス・マスタ５４及びＴＳＵ４２内のコヒーレンス応答論理５６の両方に受け渡す。応答マルチプレクサ５２からのアドレス・パケットの受信に応答して、バス・マスタ５４は、そのローカル相互接続１６上で通信トランザクションを開始する。この通信トランザクションは、受信アドレス・パケットにより示される通信トランザクションと同一のまたは異なるタイプである。
【００２４】
ＴＳＵ４２は、その用語により示されるように、ノード相互接続２２上に転送されるトランザクションのコンジット（conduit）であり、ノード相互接続２２上に発信された、まだ完了されていない通信トランザクションの属性を一時的に記憶する複数エントリ保留バッファ６０を含む。保留バッファ６０のエントリに記憶されるトランザクション属性は、好適には、少なくともトランザクションのアドレス（タグを含む）、トランザクションのタイプ、及び期待されるコヒーレンス応答の数を含む。各保留バッファ・エントリは関連ステータスを有し、これはＮｕｌｌにセットされて、保留バッファ・エントリが消去され得ることを示すか、再実行にセットされ、トランザクションがまだ保留であることを示す。ノード相互接続２２上へのアドレス・パケットの発信に加え、ＴＳＵ４２はＴＲＵ４０と対話して、メモリ要求トランザクションを処理し、またコマンドをＤＲＵ４４及びＤＳＵ４６に発行し、ローカル相互接続１６とノード相互接続２２間のデータの転送を制御する。ＴＳＵ４２はまた、コヒーレンス応答論理５６により、ノード相互接続２２のために選択された（例えばＭＳＩ）コヒーレンス・プロトコルを実行し、ディレクトリ制御論理５８により、コヒーレンス・ディレクトリ５０を保守する。
【００２５】
コヒーレンス・ディレクトリ５０は、ホーム・ノードであるローカル処理ノードにとって、リモート・ノード内のキャッシュにチェックアウトされたデータ（例えばキャッシュ・ライン）のシステム・メモリ・アドレスの指示を記憶する。各キャッシュ・ラインのアドレス指示は、そのキャッシュ・ラインのコピーを有する各リモート処理ノードの識別子、及び各こうしたリモート処理ノードにおけるそのキャッシュ・ラインのコヒーレンス・ステータスに関連して記憶される。コヒーレンス・ディレクトリ５０内のエントリの可能なコヒーレンス状態が、表６に示される。
【表６】
0003661761.tif 000007
【００２６】
表６に示されるように、リモート処理ノードにより保持されるキャッシュ・ラインのコヒーレンス状態の知識は不明瞭である。この不明瞭さは、遠隔的に保持されるキャッシュ・ラインが、ホーム・ノードのノード制御装置２０に通知することなく、Ｒ、ＳまたはＥからＩに、或いはＥからＭに遷移するし得る事実による。
【００２７】
読出し要求の処理：
プロセッサ読出し要求の待ち時間を低減するために、本発明は共用介入をサポートする。すなわち、読出し要求に応答してＮＵＭＡコンピュータ・システム６内で、未変更（すなわちＥまたはＭ）状態のデータを保持するキャッシュによりデータを発信する。ＮＵＭＡコンピュータ・システム６内の複数のキャッシュが、同一の未変更キャッシュ・ラインを同時に保持し得るので、共用介入によりキャッシュ・ラインを発信するキャッシュを調整する機構が必要とされ得る。前記係属中の米国特許出願で述べられるように、この機構はＲ（最近）キャッシュ・コヒーレンス状態である。本発明によれば、特定の処理ノード８内の１つのキャッシュ階層１４だけが、ある時点においてＲ状態の特定のキャッシュ・ラインを保持できる。しかしながら、複数の処理ノード８内のキャッシュ階層１４が、Ｒ状態の同一のキャッシュ・ラインを同時に保持し得る。
【００２８】
表７は、読出しミスに続き、ローカル相互接続１６において読出し要求を発行するキャッシュ階層１４における状態遷移を示す。
【表７】
0003661761.tif 000008
【００２９】
表７に示されるように、キャッシュ階層１４がARespIn共用コヒーレンス採決を受信する場合、キャッシュ階層１４のキャッシュ制御装置は、同一の処理ノード８内の他のスヌーパが、Ｒ状態またはＭ状態の要求キャッシュ・ラインを保持せず、要求キャッシュ・ラインがローカル・システム・メモリ１８により、またはノード制御装置２０を介してリモート・システム・メモリ１８により供給されることを知る。従って、要求元キャッシュ階層１４がローカル相互接続１６を介して要求キャッシュ・ラインを受信するとき、キャッシュ階層１４のキャッシュ制御装置は要求キャッシュ・ラインをキャッシュし、そのコヒーレンス状態を最近（Recent）にセットする。これはすなわち、要求キャッシュ・ラインを保持する複数のローカル・キャッシュ階層１４の内、要求元キャッシュ階層１４が共用介入により、要求キャッシュ・ラインを発信する責任があることを意味する。
【００３０】
要求元キャッシュ階層１４が読出し要求に応答して、ARespIn Nullコヒーレンス採決を受信する場合、要求元キャッシュ階層１４のキャッシュ制御装置は、どのローカル・キャッシュ階層１４も要求キャッシュ・ラインのコピーを記憶せず、要求キャッシュ・ラインがローカル・システム・メモリ１８により、またはノード制御装置２０を介してリモート・システム・メモリにより発信されることを知る。要求キャッシュ・ラインが要求元キャッシュ階層１４により受信されるとき、要求キャッシュ・ラインが排他状態でキャッシュされる。
【００３１】
要求元キャッシュ階層１４がARespIn共用介入または変更介入採決を受信する場合、要求元プロセッサ１０におけるキャッシュ制御装置は、要求キャッシュ・ラインが同一の処理ノード１０内の別のスヌーパにより発信されることを知り、要求キャッシュ・ラインの受信に際して、それをＲ状態で記憶する。
【００３２】
読出し要求の受信に応答したスヌーパのキャッシュ階層内の状態遷移が、表８に示される。重要な点は、読出し要求がキャッシュ・ラインのコヒーレンス状態に及ぼす影響が、読出し要求がローカル・プロセッサ１０から受信されたか、またはローカル・ノード制御装置２０を介してリモート処理ノード８内のプロセッサ１０から受信されたかに依存することである。読出し要求の発信元に関する情報は、スヌーピング・プロセッサ１０に多様に伝達され得る。例えば、ノード制御装置２０が"リモート要求"信号を各プロセッサ１０のキャッシュ階層１４に供給し、この信号がノード制御装置２０がいつリモート処理ノード８からの読出し要求をローカル相互接続１６上に発信したかを示す。こうした"リモート要求"信号は、ノード制御装置２０によりローカル相互接続１６上の読出し要求トランザクション内の定義フィールド（例えばトランザクション・タイプ）内に挿入されるか、ノード制御装置２０を各プロセッサ２０に接続する別の信号線を介して伝送され得る。
【表８】
0003661761.tif 000009
【００３３】
表８に示されるように、キャッシュ階層１４が、ローカル・プロセッサ１０により発行された読出し要求をスヌープし（すなわち、"リモート要求"信号がアサートされない）、要求キャッシュ・ラインを排他状態または最近状態で保持する場合、スヌーピング・キャッシュ階層１４が共用介入ARespOut採決を提供し、アービタ２４からの共用介入ARespIn採決の受信に応答して、要求キャッシュ・ラインをローカル相互接続１６上に発信し、要求キャッシュ・ラインのコピーのコヒーレンス状態を共用状態に更新する。同様に、キャッシュ階層１４がローカル・プロセッサ１０により発行された読出し要求をスヌープし、要求キャッシュ・ラインを変更状態で保持する場合、スヌーピング・キャッシュ階層１４が変更介入ARespOut採決を提供し、変更介入ARespIn採決の受信に応答して、要求キャッシュ・ラインをローカル相互接続１６上に発信し、要求キャッシュ・ラインのコピーのコヒーレンス状態を共用状態に更新する。他方、スヌーピング・キャッシュ階層１４が、ローカルまたはリモート・プロセッサ１０により要求されたキャッシュ・ラインを、共用または無効状態で保持する場合、スヌーピング・キャッシュ階層１４は適切なARespOut採決（すなわち、それぞれ共用またはＮｕｌｌ）を提供するがデータを発信しない。
【００３４】
表８に示される残りの３つのケースは、キャッシュ・ラインのホーム・ノードまたはリモート・ノードにおいて、キャッシュ階層１４をスヌープするとき、リモート処理ノード８からローカル・ノード制御装置２０を介して、そのキャッシュ・ラインの読出し要求を受信する。上述のように、こうした読出し要求は"リモート要求"信号により識別される。こうした読出し要求の受信に応答して、要求キャッシュ・ラインが排他的または最近状態に保持される場合、スヌーピング・キャッシュ階層１４は適切なARespOut採決、すなわち共用介入を提供し、要求キャッシュ・ラインが変更状態に保持される場合、変更介入を提供する。次に、ARespIn共用介入信号（ARespOut共用介入採決が提供された場合）、またはARespIn変更介入（ARespOut変更介入採決が提供された場合）の受信に応答して、スヌーピング・キャッシュ階層１４が要求キャッシュ・ラインをローカル相互接続１６上に発信する。更に、スヌーピング・キャッシュ階層１４における要求キャッシュ・ラインのコヒーレンス状態が、排他または変更状態の場合、最近状態に更新され、既に最近状態にセットされている場合、未変更に維持される。スヌーピング・キャッシュ階層１４により、ローカル相互接続１６上に発信されたキャッシュ・ラインは、ローカル・ノード制御装置２０により受信され、後者はキャッシュ・ラインをノード相互接続２２を介して、要求元処理ノード８のノード制御装置に送信する。
【００３５】
表７及び表８に示されない状態及びオペレーションでは、コヒーレンス状態遷移及びコヒーレンス応答は、ＭＥＳＩプロトコルに従い実行され、最近状態は共用状態のように扱われる。
【００３６】
図３及び図４を参照すると、ＮＵＭＡコンピュータ・システム６内の典型的な処理過程が示される。そこでは、リモート処理ノード８から受信される読出し要求内で要求されるキャッシュ・ラインが、共用介入により宛先処理ノード８において発信される。明瞭化のため、ＮＵＭＡコンピュータ・システム６の単純化された実施例が示され、そこでは２つの処理ノード８ａ及び８ｂの各々が、２つのプロセッサ１０ａ及び１０ｂをそれぞれ含む。
【００３７】
図３に示されるように、処理ノード８ｂのプロセッサ１０ｂが最初に、そのキャッシュ階層１４から、処理ノード８ａをホーム・ノードとして有するキャッシュ・ラインを要求する。キャッシュ階層１４内での要求ミスに応答して、プロセッサ１０ｂはそのキャッシュ・ラインに対する読出し要求を、そのローカル相互接続１６上に発信する。プロセッサ１０ａは要求をスヌープし、Null ARespOut採決により応答し、プロセッサ１０ａのキャッシュ階層１４が要求キャッシュ・ラインのコピーを記憶しないことを示し、ノード制御装置２０がARespOut再実行を採決する。アービタ（図示せず）がARespOut採決をコンパイルし、ARespIn再実行を採決するのに応答して、ノード制御装置２０はノード相互接続２２を介して読出し要求をホーム・ノードに、すなわち処理ノード８ａに転送する。
【００３８】
転送された読出し要求の受信に応答して、処理ノード８ａのノード制御装置２０は、"リモート要求"信号と一緒に、読出し要求を処理ノード８ａのローカル相互接続１６上に転送する。プロセッサ１０ｂのキャッシュ階層１４は、最近状態の要求キャッシュ・ラインのコピーを記憶するので、プロセッサ１０ｂはＡＲｅｓｐＯｕｔ共用介入採決を提供する。プロセッサ１０ｂは続いて、図４に示されるように、アービタからのＡＲｅｓｐＩｎ共用介入採決の受信に応答して、共用介入により、要求キャッシュ・ラインをローカル相互接続１６上に発信する。しかしながら、プロセッサ１０ｂはノード制御装置２０により、読出し要求が処理ノード８ｂから転送された"リモート要求"であることを通知されたので、プロセッサ１０ｂのキャッシュ階層１４は要求キャッシュ・ラインを最近状態に保持する。
【００３９】
要求キャッシュ・ラインを含むデータ・トランザクションは、処理ノード８ａのノード制御装置２０により受信され、ノード相互接続２２を介して処理ノード８ｂのノード制御装置２０に転送される。処理ノード８ａのコヒーレンス・ディレクトリ５０は、キャッシュ・ラインのコヒーレンス状態を不明瞭な共用状態に更新することにより、そのキャッシュ・ラインが処理ノード８ｂに非排他的に"チェックアウト"されたことを記録する。要求キャッシュ・ラインは次に、処理ノード８ｂのノード制御装置２０によりプロセッサ１０ｂに供給され、後者が要求キャッシュ・ラインを最近状態で記憶する。このようにして、各処理ノード８ａ及び８ｂのプロセッサ１０ｂは引き続き、キャッシュ・ラインのローカル要求及びリモート要求をサービスする。
【００４０】
上述のように、本発明はデータの共用介入をサポートすることにより、ノード相互間読出し要求の数を低減し、読出し要求の待ち時間を低減する、ＮＵＭＡコンピュータ・システムを提供する。本発明によれば、各処理ノードが、同一のキャッシュ・ラインを非排他最近状態に保持するスヌーパ（例えばキャッシュ階層）を有し、スヌーパがそこからキャッシュ・ラインを発信できる。リモート・プロセッサの読出し要求に応答して、スヌーパが最近状態、排他状態または変更状態に保持されたキャッシュ・ラインのコヒーレンス状態を共用状態に更新するのを阻止するために、各スヌーパはリモート要求信号によりこうした要求を通知される。
【００４１】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００４２】
（１）システム・メモリと、それぞれが関連キャッシュ階層を有する第１及び第２のプロセッサとを含む、第１の処理ノードと、
前記第１の処理ノードに結合され、少なくとも第３のプロセッサとシステム・メモリとを含む第２の処理ノードと
を含み、
前記第１のプロセッサの前記キャッシュ階層が、あるキャッシュ・ラインの未変更コピーを保持し、前記第３のプロセッサから前記キャッシュ・ラインに対する要求を受信すると、前記第１のプロセッサの前記キャッシュ階層が前記キャッシュ・ラインを前記第３のプロセッサに発信し、前記キャッシュ・ラインの前記コピーを最近コヒーレンス状態に保持し、そこから前記第１のプロセッサの前記キャッシュ階層が前記キャッシュ・ラインを発信できる、
コンピュータ・システム。
（２）前記第１のプロセッサの前記キャッシュ階層があるキャッシュ・ラインの変更コピーを保持し、前記第３のプロセッサから前記キャッシュ・ラインに対する要求を受信すると、前記第１のプロセッサの前記キャッシュ階層が前記キャッシュ・ラインを前記第３のプロセッサに発信し、前記キャッシュ・ラインの前記コピーを前記最近コヒーレンス状態に保持する、前記（１）記載のコンピュータ・システム。
（３）前記第１及び第２の処理ノードがノード相互接続により結合され、
前記第１の処理ノードが、前記ノード相互接続と前記第１のプロセッサ間に配置されるノード制御装置を含み、前記ノード制御装置が前記要求を、該要求が別の前記処理ノードからのものであることの指示と一緒に、前記第１のプロセッサに転送する、
前記（１）記載のコンピュータ・システム。
（４）前記要求の受信以前に、前記第１のプロセッサの前記キャッシュ階層が、前記キャッシュ・ラインの前記未変更コピーを、排他状態または最近状態のいずれかのコヒーレンス状態に関連付ける、前記（１）記載のコンピュータ・システム。
（５）前記第２の処理ノードが前記第３のプロセッサに関連付けられるキャッシュ階層を含み、前記キャッシュ階層が、前記第１のプロセッサの前記キャッシュ階層により発信される前記キャッシュ・ラインの受信に応答して、前記キャッシュ・ラインのコピーを前記最近状態で記憶し、前記第１のプロセッサの前記キャッシュ階層、及び前記第３のプロセッサの前記キャッシュ階層の両方が、同時に前記キャッシュ・ラインのコピーを前記最近状態に保持する、前記（１）記載のコンピュータ・システム。
（６）前記要求が読出し要求である、前記（１）記載のコンピュータ・システム。
（７）システム・メモリと、それぞれが関連キャッシュ階層を有する第１及び第２のプロセッサとを含む第１の処理ノードと、前記第１の処理ノードに結合され、少なくとも第３のプロセッサとシステム・メモリとを含む第２の処理ノードとを含むコンピュータ・システムにおける通信方法であって、
前記第１のプロセッサの前記キャッシュ階層において、前記第３のプロセッサから、前記第１のプロセッサの前記キャッシュ階層がコピーを保持するキャッシュ・ラインに対する要求を受信するステップと、
前記要求キャッシュ・ラインの未変更コピーが前記第１のプロセッサの前記キャッシュ階層内に保持される場合、前記キャッシュ・ラインを前記第１のプロセッサの前記キャッシュ階層から前記第３のプロセッサに発信し、前記第１のプロセッサの前記キャッシュ階層内の前記キャッシュ・ラインの前記コピーを、最近コヒーレンス状態に保持するステップであって、そこから前記第１のプロセッサの前記キャッシュ階層が前記キャッシュ・ラインを発信できる、方法。
（８）前記要求キャッシュ・ラインの変更コピーが前記第１のプロセッサの前記キャッシュ階層内に保持される場合、前記キャッシュ・ラインを前記第１のプロセッサの前記キャッシュ階層から前記第３のプロセッサに発信し、前記第１のプロセッサの前記キャッシュ階層内の前記キャッシュ・ラインの前記コピーを、最近コヒーレンス状態に保持するステップであって、そこから前記第１のプロセッサの前記キャッシュ階層が前記キャッシュ・ラインを発信できる、前記（７）記載の方法。
（９）前記第１及び第２の処理ノードがノード相互接続により結合され、
前記第１の処理ノードが、前記ノード相互接続と前記第１のプロセッサ間に配置されるノード制御装置を含み、前記方法が、
前記ノード制御装置において前記要求を受信し、前記要求を前記ノード制御装置から、該要求が別の前記処理ノードからのものであることの指示と一緒に、前記第１のプロセッサに転送するステップを含む、前記（７）記載の方法。
（１０）前記要求の受信以前に、前記キャッシュ・ラインの前記未変更コピーを、前記第１のプロセッサの前記キャッシュ階層内で、排他状態または最近状態のいずれかのコヒーレンス状態に関連付けるステップを含む、前記（７）記載の方法。
（１１）前記第２の処理ノードが前記第３のプロセッサに関連付けられるキャッシュ階層を含み、前記方法が、
前記第１のプロセッサの前記キャッシュ階層により発信される前記キャッシュ・ラインの受信に応答して、前記第３のプロセッサの前記キャッシュ階層内において、前記キャッシュ・ラインのコピーを前記最近状態で記憶するステップを含み、前記第１のプロセッサの前記キャッシュ階層、及び前記第３のプロセッサの前記キャッシュ階層の両方が、同時に前記キャッシュ・ラインのコピーを前記最近状態に保持する、前記（７）記載の方法。
（１２）前記要求が読出し要求の受信を含む、前記（７）記載の方法。
【図面の簡単な説明】
【図１】本発明に従うＮＵＭＡコンピュータ・システムの実施例を示す図である。
【図２】図１に示されるノード制御装置の詳細ブロック図である。
【図３】リモート処理ノードから受信される読出し要求内で要求されるキャッシュ・ラインが、共用介入により宛先処理ノードにおいて発信される、ＮＵＭＡコンピュータ・システム内の典型的な処理過程を示す図である。
【図４】リモート処理ノードから受信される読出し要求内で要求されるキャッシュ・ラインが、共用介入により宛先処理ノードにおいて発信される、ＮＵＭＡコンピュータ・システム内の典型的な処理過程を示す図である。
【符号の説明】
６  ＮＵＭＡコンピュータ・システム
８  リモート処理ノード
１０  プロセッサ
１２  プロセッサ・コア
１４  関連キャッシュ階層
１６  ローカル相互接続
１７  メモリ制御装置
１８  システム・メモリ
２０  ノード制御装置
２２  ノード相互接続
２４  アービタ
２６  メザニン・バス・ブリッジ
３０  メザニン・バス
３２  Ｉ／Ｏ装置
３４  記憶装置
４０  トランザクション受信ユニット（ＴＲＵ）
４２  トランザクション送信ユニット（ＴＳＵ）
４４  データ受信ユニット（ＤＲＵ）
４６  データ送信ユニット（ＤＳＵ）
５０  コヒーレンス・ディレクトリ
５２  応答マルチプレクサ
５４  バス・マスタ
５６  コヒーレンス応答論理
５８  ディレクトリ制御論理
６０  複数エントリ保留バッファ
【図１】
0003661761.tif 000010
【図２】
0003661761.tif 000011
【図３】
0003661761.tif 000012
【図４】
0003661761.tif 000013