(57)【特許請求の範囲】
【請求項１】
不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムであって、
ノード相互接続に結合されるリモート・ノード及びホーム・ノードを含み、
前記ホーム・ノードがホーム・システム・メモリを含み、
前記リモート・ノードが、
ローカル相互接続と、
前記ローカル相互接続と前記ノード相互接続との間に結合され且つ前記リモート・ノードと前記ホーム・ノードとの間で要求を伝送するノード制御装置と、
前記ローカル相互接続に結合される処理ユニットと
を含み、
前記処理ユニットが実行リソースに結合され、キャッシュ制御装置を含むキャッシュを含み、
前記キャッシュ制御装置が、最初に前記ローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき前記読出しタイプの要求が局所的にのみサービスされることを示すために、前記キャッシュ制御装置が前記読出しタイプの要求内のフラグを第１の状態にセットし、
前記キャッシュ制御装置が、前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記ノード制御装置に前記読出しタイプの要求を前記ホーム・ノードに送信するように命令するために、前記キャッシュ制御装置が前記フラグを第２の状態にセットする、
前記ＮＵＭＡコンピュータ・システム。
【請求項２】
前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記処理ユニットが前記フラグを前記第２の状態にセットする、請求項１記載のＮＵＭＡコンピュータ・システム。
【請求項３】
前記ノード制御装置が複数のキューを含み、前記フラグが前記第２の状態にセットされている場合にだけ、前記ノード制御装置が前記読出しタイプの要求のためにキューを割当てる、請求項１記載のＮＵＭＡコンピュータ・システム。
【請求項４】
前記読出しタイプの要求がread-with-intent-to-modify（ＲＷＩＴＭ）要求を含む、請求項１記載のＮＵＭＡコンピュータ・システム。
【請求項５】
再発行された前記読出しタイプの要求に対する組み合わせ応答を受信する前に、前記ノード制御装置が前記読出しタイプの要求を前記ホーム・ノードに伝送する、請求項１記載のＮＵＭＡコンピュータ・システム。
【請求項６】
不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムのリモート・ノード内で使用される処理ユニットであって、前記ＮＵＭＡコンピュータ・システムがノード相互接続により前記リモート・ノードに結合されるホーム・ノードを含み、前記ホーム・ノードがホーム・システム・メモリを含み、
前記リモート・ノードが、
ローカル相互接続と、
前記ローカル相互接続と前記ノード相互接続との間に結合されるノード制御装置と
を含み、
前記処理ユニットが、
実行リソースと、
実行リソースに結合され、キャッシュ制御装置を含むキャッシュと
を含み、
前記キャッシュ制御装置が、前記実行リソースによるデータ要求の受信に応答して、最初に前記ローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき前記読出しタイプの要求が局所的にのみサービスされることを示すために、前記キャッシュ制御装置が前記読出しタイプの要求内のフラグを第１の状態にセットし、
前記キャッシュ制御装置が、前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記ノード制御装置に前記読出しタイプの要求を前記ホーム・ノードに送信するように命令するために、前記キャッシュ制御装置が前記フラグを第２の状態にセットする、
前記処理ユニット。
【請求項７】
前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記キャッシュ制御装置が前記フラグを前記第２の状態にセットする、請求項６記載の処理ユニット。
【請求項８】
前記読出しタイプの要求内の前記フラグの前記第２の状態が、前記ノード制御装置に前記読出しタイプの要求をエンキューするように命令する、請求項６記載の処理ユニット。
【請求項９】
前記読出しタイプの要求がread-with-intent-to-modify（ＲＷＩＴＭ）要求を含む、請求項６記載の処理ユニット。
【請求項１０】
請求項６記載の処理ユニットと、
前記処理ユニットに結合されるローカル相互接続と、
前記ローカル相互接続及びノード相互接続に結合されるノード制御装置と
を含むＮＵＭＡコンピュータ・システムのノード。
【請求項１１】
不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムを操作する方法であって、前記ＮＵＭＡコンピュータ・システムはノード相互接続により結合されるリモート・ノード及びホーム・ノードを含み、前記ホーム・ノードがホーム・システム・メモリを含み、前記リモート・ノードが、ローカル相互接続と、前記ローカル相互接続と前記ノード相互接続との間に結合され且つ前記リモート・ノードと前記ホーム・ノードとの間で要求を伝送するノード制御装置と、前記ローカル相互接続に結合される処理ユニットとを含み、前記処理ユニットが実行リソースに結合され、キャッシュ制御装置を含むキャッシュを含み、
前記方法は、
前記キャッシュ制御装置が、前記リモート・ノードのローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき該読出しタイプの要求が局所的にのみサービスされることを示すために、前記キャッシュ制御装置が前記読出しタイプの要求内のフラグを第１の状態にセットするステップと、
前記キャッシュ制御装置が、前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記リモート・ノードのノード制御装置に、前記読出しタイプの要求を前記ホーム・ノードに送信するように命令するために、前記キャッシュ制御装置が前記フラグを第２の状態にセットするステップと
を含む方法。
【請求項１２】
前記読出しタイプの要求を再発行するステップが、前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記フラグを前記第２の状態にセットして、前記読出しタイプの要求を再発行するステップを含む、請求項１１記載の方法。
【請求項１３】
前記リモート・ノードの前記ノード制御装置が複数のキューを含み、前記フラグが前記第２の状態にセットされていることにだけ応答して、前記ノード制御装置が前記読出しタイプの要求のためにキューを割当てるステップを含む、請求項１１記載の方法。
【請求項１４】
前記読出しタイプの要求を発行するステップが、read-with-intent-to-modify（ＲＷＩＴＭ）要求を発行するステップを含む、請求項１１記載の方法。
【請求項１５】
再発行された前記読出しタイプの要求に対する組み合わせ応答を受信する前に、前記ノード制御装置が前記読出しタイプの要求を前記ホーム・ノードに伝送するステップを含む、請求項１１記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般にデータ処理システムに関し、特に、改善されたキューイング、通信及び記憶効率を有する不均等メモリ・アクセス（ＮＵＭＡ：non-uniform memory access）及び他のマルチプロセッサ・データ処理システムに関する。
【０００２】
【従来の技術】
コンピュータ技術では、複数の個々のプロセッサの処理能力をタンデムに結合することにより、偉大なコンピュータ・システム性能が達成されることが知られている。マルチプロセッサ（ＭＰ）コンピュータ・システムは、多数の異なるトポロジにより設計され、各アプリケーションの性能要求及びソフトウェア環境に応じて、様々なトポロジが特定のアプリケーションにとって、より好適となり得る。１つの一般的なＭＰコンピュータ・トポロジは、対称マルチプロセッサ（ＳＭＰ）構成であり、そこでは複数のプロセッサの各々が、システム・メモリや入出力（Ｉ／Ｏ）サブシステムなどの、共通資源のプール（pool）を共用する。これらの共通資源は一般に、共用システム相互接続に結合される。こうしたコンピュータ・システムは対称型と呼ばれる。なぜなら、ＳＭＰコンピュータ・システム内の全てのプロセッサが、理想的には、共用システム・メモリ内に記憶されるデータに対して、同一のアクセス待ち時間を有するからである。
【０００３】
ＳＭＰコンピュータ・システムは、比較的単純なプロセッサ間通信及びデータ共用方式の使用を可能にするが、ＳＭＰコンピュータ・システムは限られたスケーラビリティを有する。換言すると、典型的なＳＭＰコンピュータ・システムの性能は、一般に、スケール（すなわち、より多くのプロセッサの追加）に伴い改善されると期待されるが、これらの共用資源の利用が最適化されるインプリメンテーション依存のサイズを超えて、ＳＭＰをスケーリングしても、固有バス、メモリ、及び入出力（Ｉ／Ｏ）の帯域幅制限が、大きな利点の獲得を阻害する。従って、システムのスケールが増大するとき、ＳＭＰトポロジそのものがある程度の帯域幅制限を受け、これは特にシステム・メモリにおいて顕著である。ＳＭＰコンピュータ・システムはまた、容易に拡張することができない。例えば、ユーザは一般に、２個または４個のプロセッサを有するＳＭＰコンピュータ・システムを購入し、後に処理要求が増加したときに、システムを８個または１６個のプロセッサに拡張することができない。
【０００４】
結果的に、ＳＭＰコンピュータ・システムのスケーラビリティ及び拡張性に関する制限を解決するために、不均等メモリ・アクセス（ＮＵＭＡ）として知られるＭＰコンピュータ・システム・トポロジが登場した。図１に示されるように、従来のＮＵＭＡコンピュータ・システム８は、スイッチ１２により接続される多くのノード１０を含む。各ノード１０は、ＳＭＰシステムとして実現され、多くの処理ユニット１４が接続されるローカル相互接続１１を含む。処理ユニット１４は各々、中央処理ユニット（ＣＰＵ）１６及び関連キャッシュ階層１８を含む。揮発性メモリ階層の最下レベルにおいて、ノード１０は更にシステム・メモリ２２を含み、これは各ノード１０内で集中化されるか、図示のように処理ユニット１４の間で分散される。ＣＰＵ１６はメモリ制御装置２０を通じて、メモリ２２をアクセスする。
【０００５】
各ノード１０は更に、それぞれのノード制御装置２４を含み、これがデータ・コヒーレンスを維持し、スイッチ１２を介するノード１０間での要求及び応答の通信を容易にする。各ノード制御装置２４は、他のノード１０にキャッシュされるローカル・システム・メモリ２２からのデータを識別する関連ローカル・メモリ・ディレクトリ（ＬＭＤ）２６と、リモート・システム・メモリから検索されるデータを一時的にキャッシュするリモート・メモリ・キャッシュ（ＲＭＣ）２８と、ＲＭＣ２８の内容のディレクトリを提供するリモート・メモリ・ディレクトリ（ＲＭＤ）３０とを有する。
【０００６】
本発明は、図１に示される従来のＮＵＭＡアーキテクチャが、従来のＳＭＰアーキテクチャに勝る改善されたスケーラビリティ及び拡張性を提供できるが、従来のＮＵＭＡアーキテクチャが多数の欠点を被ることを認識する。第１に、ローカル相互接続１１を介する通信に比較して、ノード間の通信に多大な待ち時間を要し、このことはノード間通信の削減が性能を改善しがちであることを意味する。結果的に、大規模なリモート・メモリ・キャッシュ２８をインプリメントすることにより、ノード１０間で通信されなければならないデータ・アクセス要求の数を制限することが所望されることになる。しかしながら、従来のスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）によるＲＭＣ２８のインプリメンテーションは高価であり、実用的なＲＭＣ２８のサイズを制限する。その結果、各ノードは他のノードからの限られた量のデータだけをキャッシュでき、従って、頻繁な高待ち時間ノード間データ要求を必要とすることになる。
【０００７】
ノード間通信待ち時間に関連する従来のＮＵＭＡコンピュータ・システムの第２の欠点は、不要なノード間コヒーレンス通信に起因する、要求のサービス過程における遅延である。例えば、図１に示されるような従来のＮＵＭＡコンピュータ・システムは、一般に、リモート・ノードが未変更キャッシュ・ラインを黙って割当て解除することを可能にする。換言すると、リモート・ノード内のキャッシュが、キャッシュ・ラインがチェックアウトされたホーム・ノードのローカル・メモリ・ディレクトリに通知することなく、別のノードから検索される共用キャッシュ・ラインまたは無効キャッシュ・ラインを割当て解除することができる。従って、ホーム・ノードのローカル・メモリ・ディレクトリは、どのリモート・ノードが関連システム・メモリからのキャッシュ・ラインを保持するかに関して、不正確な指示を保持するだけである。その結果、あるノードでストア要求が受信されるとき、そのノードは、ホーム・ノードのローカル・メモリ・ディレクトリ内において、ターゲット・キャッシュ・ラインを保持すると示される他の全てのノードに、それらがターゲット・キャッシュ・ラインのコピーを依然キャッシュしているか否かに拘わらず、フラッシュ（すなわち無効化）命令を同報しなければならない。ある動作状況では、不要なフラッシュ命令がストア要求のサービスを遅延させ、システム性能に悪影響を及ぼすことになる。
【０００８】
第３に、ＮＵＭＡコンピュータ・システム８などの従来のＮＵＭＡコンピュータ・システムは、システム全体に渡り分散される様々なノード制御装置、メモリ制御装置、及びキャッシュ制御装置内に、深いキュー（すなわち項目数の多いキュー）をインプリメントする傾向があり、ノード間通信に影響を及ぼす長い待ち時間を生成し得る。各個々のキューのインプリメンテーションは安価ではあるが、従来のＮＵＭＡコンピュータ・システム全体に渡りインプリメントされる深いキューは、システム全体コストの大きな要素を表す。従って、本発明はＮＵＭＡコンピュータ・システムのキュー内の命令のペンデンシ（pendency）を低減し、またキューの利用度を向上させることにより、キュー項目数、従ってシステム・コストを低減することが有利であると認識するものである。
【０００９】
【発明が解決しようとする課題】
従来のＮＵＭＡコンピュータ・システムの前述の及びその他の欠点を鑑み、本発明は、改善されたキューイング、記憶、及び通信効率を有するＮＵＭＡアーキテクチャを提供することが有用且つ望ましいものと認識する。
【００１０】
【課題を解決するための手段】
本発明は、リモート・データの要求に対する再発行プロトコルをインプリメントすることにより、ノード制御装置のキュー使用率を改善する、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システム及び関連操作方法を提供することにより、従来技術の前述の及びその他の欠点を克服する。
【００１１】
本発明の好適な実施例によれば、ＮＵＭＡコンピュータ・システムが、ホーム・システム・メモリを有するホーム・ノードに、ノード相互接続により結合されるリモート・ノードを含む。リモート・ノードはローカル相互接続と、ローカル接続に結合される処理ユニット及び少なくとも１つのキャッシュと、ローカル相互接続とノード相互接続との間に結合されるノード制御装置とを含む。処理ユニットは最初に、ローカル相互接続上に、ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行する。その際、読出しタイプの要求内のフラグが第１の状態にセットされ、その読出しタイプの要求が局所的にのみサービスされることを示す。リモート・ノード内で読出しタイプの要求を局所的にサービスできないことに応答して、処理ユニットは読出しタイプの要求を再発行するが、このときフラグが第２の状態にセットされ、ノード制御装置に読出しタイプの要求をホーム・ノードに送信するように命令する。ノード制御装置は複数のキューを含み、好適には、フラグが第２の状態にセットされた再発行読出しタイプ要求を受信するまで、読出しタイプの要求をエンキューしない。
【００１２】
本発明の前述の及びその他の目的、特徴及び利点が、以下の詳細な説明から明らかとなろう。
【００１３】
【発明の実施の形態】
図２を参照すると、本発明に従うＮＵＭＡコンピュータ・システム５０の典型的な実施例が示される。図示の実施例は、例えばワークステーション、サーバ、またはメインフレーム・コンピュータとして実現される。本発明は基本的に、ＮＵＭＡコンピュータ・システム５０に関連して述べられるが、当業者であれば、本発明の多くのフィーチャが、ＳＭＰアーキテクチャを含む他のコンピュータ・システム・アーキテクチャにも適用可能であることが理解できよう。
【００１４】
図示のように、ＮＵＭＡコンピュータ・システム５０は、図示のようにスイッチとして実現されるノード相互接続５５により結合される、２つ以上のノード５２を含む。本発明により要求される訳ではないが、図示の実施例では、各ノード５２が実質的に同一であり、各ノードが、ローカル相互接続５８に結合される１つ以上の処理ユニット５４と、ローカル相互接続５８とノード相互接続５５との間に結合されるノード制御装置５６とを含む。各ノード制御装置５６は、ローカル相互接続５８上で受信される選択命令を、ノード相互接続５５を介して、他のノード５２に伝送することにより、及びノード相互接続５５を介して受信された選択命令を、ローカル相互接続５８上に伝送することにより、他のノード５２のためのローカル・エージェントとして機能する。
【００１５】
処理ユニット５４はＣＰＵ６０を含み、ＣＰＵ６０はレジスタ、命令フロー論理、及び実行ユニットを有し、これらはソフトウェア命令を実行するために利用される。各処理ユニット５４は更に、１つ以上のレベルのオンチップ・キャッシュを含むキャッシュ階層６２を含み、これはＮＵＭＡコンピュータ・システム５０全体に渡るデータ記憶から関連ＣＰＵ６０への、データをステージするために使用される。キャッシュ階層６２内で使用される好適なキャッシュ・アーキテクチャが、図５に関連して後述される。更に、処理ユニット５４の各々は、処理ユニット５４とローカル相互接続５８との間で、アドレス、データ及びコヒーレンス命令の通信を処理するインタフェース・ユニット６５を有し、また後述するように、ローカル相互接続５８に上に発行される命令に対する様々なスヌープ応答からの、組み合わせ応答を決定する応答論理６３を含む。最後に、処理ユニット５４の各々は、メモリ制御装置６４を含み、これは処理ユニット５４の間で分散される物理システム・メモリ６６の関連するものへのアクセスを制御する。本発明の別の実施例では、各ノード内のシステム・メモリが、単一のシステム・メモリとしてインプリメントされ、ローカル相互接続５８に結合される関連メモリ制御装置により制御される。
【００１６】
本明細書では、"システム・メモリ"が物理データ記憶装置として定義され、（エラー状態が存在しなければ、）物理データ記憶装置内のそれぞれの保管場所に永久に関連付けられる固有のアドレスを用いてアドレス指定される。ＮＵＭＡコンピュータ・システム５０全体を通じて、固有にデータを識別するために使用されるアドレスに関連付けられる、システム・メモリ６６内の保管場所にデータを記憶するノード５２が、そのデータのホーム・ノードと定義される。他方、他のノード５２はそのデータのリモート・ノードと定義される。
【００１７】
図２及び図３に示されるように、ノード５２間でのデータの共用をサポートするために、メモリ制御装置６４はローカル・メモリ・ディレクトリ（ＬＭＤ）７２及びリモート・メモリ・キャッシュ（ＲＭＣ）７０を使用し、後者は関連リモート・メモリ・ディレクトリ（ＲＭＤ）７４を有する。ここでは、ローカル・メモリ・ディレクトリ（ＬＭＤ）７２は、関連システム・メモリに内在するデータのためのディレクトリとして定義され、データが１つ以上のリモート・ノードにキャッシュされているか否かの指示を記憶する。逆に、リモート・メモリ・ディレクトリ（ＲＭＤ）７４は、他のノード内のシステム・メモリからのどのデータが、関連リモート・メモリ・キャッシュ（ＲＭＣ）７０にキャッシュされているかを示すディレクトリとして定義される。便宜上、関連システム・メモリ６６内のホーム・ノード・データへのアクセスを制御するメモリ制御装置６４の回路は、ここではシステム・メモリ制御装置７１と称され、ＲＭＣ７０へのアクセスを制御するメモリ制御装置６４の回路は、ＲＭＣ制御装置７３と称される。
【００１８】
もちろん、ＮＵＭＡコンピュータ・システム５０は、更に、本発明の理解には必要でなく、従って、本発明をわかりにくくすることを回避するために、ここでは省略される追加の装置を含み得る。例えば、任意のノード５２がＩ／Ｏアダプタ及びネットワーク・アダプタや、オペレーティング・システム及びアプリケーション・ソフトウェアを記憶する不揮発性記憶装置、及びネットワークまたは接続装置への接続のためのシリアル・ポート及びパラレル・ポートをサポートしてもよい。
【００１９】
メモリ構成：
ＮＵＭＡコンピュータ・システム５０の性能は、とりわけデータ・アクセス待ち時間により影響される。ノード内データ要求のためのアクセス待ち時間は、一般に、ノード間データ要求のためのアクセス待ち時間よりも遙かに少ないので、処理ユニット５４を含む各ノード５２が大きなデータ記憶容量を装備すれば、システム性能は一般に改善され、ノード間データ要求が最小化される。例えば、ＮＵＭＡコンピュータ・システム５０が４つのノードを含み、各ノードが４つの処理ユニット５４と４つのシステム・メモリ６６とを含む典型的な実施例では、４つのシステム・メモリ６６の各々が、８ギガバイト（ＧＢ）またはそれ以上の容量を有し、１２８ＧＢまたはそれ以上の総システム・メモリ記憶容量を提供する。大容量のシステム・メモリのために、コスト検討の面で、システム・メモリ６６をダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）などの、１バイト当たりのコストが安価な記憶技術により実現しがちである。
【００２０】
本発明によれば、システム・メモリ６６の記憶容量が、（例えばＮＵＭＡコンピュータ・システム５０のオペレーティング・システムにより、）１つ以上のアドレス空間に区画化される。図２に示される実施例では、各システム・メモリ６６がシステム・メモリ・アドレス空間６８を含み、これがＮＵＭＡコンピュータ・システム５０のオペレーティング・システムにより、様々なオペレーティング・システム及びアプリケーション・プロセスに、命令及びデータの記憶のために割当てられる。更に、プロセッサ・ユニット５４を含む各ノード５２内の少なくとも１つのシステム・メモリ６６が、１つ以上の他のノード５２のシステム・メモリ６６に内在するデータに対応するデータを記憶するＲＭＣ７０を含む。従って、図１に示されるように、単一のスタンドアロンのリモート・メモリ・キャッシュ２８をインプリメントする代わりに、本発明は各ノード５２において、１つのまたはことによると複数のシステム・メモリ６６内に、リモート・メモリ・キャッシュを組み込む。ＲＭＣ７０が複数のシステム・メモリ６６の間で分散される実施例では、少なくとも同一ノード５２内の任意のＣＰＵによりアクセス可能なキャッシュ・ラインが、好適には特定のＲＭＣ７０にマップされる。これはそのキャッシュ・ラインに関連付けられる物理アドレスまたは論理アドレスをハッシュすることにより行われる。
【００２１】
リモート・メモリ・キャッシュは高価なＳＲＡＭではなく、安価なＤＲＡＭによりインプリメントされるので、ＲＭＣ７０の１バイト当たりのコストは従来技術と比較して、劇的に低減される。このことは追加のコストをほとんど伴わずに、または全く伴わずに、そのサイズが大幅に増加され得ることを意味する。更に、同一ノード内の複数のシステム・メモリの間で、リモート・メモリ・キャッシュを分散することにより、従来技術のように単一のノード制御装置ではなしに、複数のメモリ制御装置６４に渡り、アクセス制御が分散されるようになり、従来技術に比べて、帯域幅の大幅な改善が達成される。
【００２２】
本発明の特定の実施例では、オペレーティング・システムが、１つ以上のノード内の物理システム・メモリの一部または全部を、リモート・メモリ・キャッシュに割当てる一方、物理システム・メモリをシステム・メモリ・アドレス空間には割当てないように選択する。こうした実施例では、システム・メモリ・アドレス空間が１つ以上のノード内でローカライズされて、例えばラック・システム内のディスク・メモリ・ドロワーとしてインプリメントされ、処理ユニットを含む他のノード内の物理システム・メモリが、リモート・メモリ・キャッシュとして割当てられる。
【００２３】
前述のように、ＲＭＣ７０の少なくとも一部を保持するように割当てられるシステム・メモリ６６に関連付けられる各メモリ制御装置６４は、当該メモリ制御装置がＲＭＣ７０のその関連部分の内容を記録するＲＭＤ７４を提供される。従来のキャッシュ・ディレクトリと同様、ＲＭＤ７４は好適にはＲＭＣ７０内のデータに関連するアドレス情報だけでなく、コヒーレンス情報、置換情報、及び任意的に追加の状態情報（例えば包含関係）も記憶する。
【００２４】
メモリ制御装置６４によるＲＭＤ７４の迅速なアクセスをサポートするために、ＲＭＤ７４は図２に示されるように、高速ＳＲＡＭでインプリメントされてもよい。このインプリメンテーションは、要求に応答して、迅速なディレクトリ検索を推進することにより、アクセス待ち時間を有利に低減する。しかしながら、ＲＭＣ７０と同様、ＲＭＤのためのＳＲＡＭの使用は高価であり、実際のシステムにおいて、ＲＭＤ７４のサイズ（従ってＲＭＣ７０のサイズ）を制限する。こうした問題を解決するために、２つの異なるアプローチが採用されてもよい。
【００２５】
第１に、ＲＭＤ７４がＳＲＡＭ（または他の高価な記憶技術）によりインプリメントされる場合、ＲＭＤ７４はＳＲＡＭ記憶容量の利用が最適化されるように、大きなセクタをインプリメントできる（すなわち、大きなデータ・ブロックを、タグ及び状態情報の各セットに関連付ける）。第２のアプローチは、図３のＮＵＭＡコンピュータ・システム５０'により例示されるように、ＲＭＤ７４をＲＭＣ７０と一緒に、システム・メモリ６６内に組み込む。このようにして、ＲＭＤ７４をインプリメントするコストが大幅に削減されるか、ＲＭＤ７４及びＲＭＣ７０のサイズが追加のコストを伴わずに、大幅に増加される。システム・メモリ６６のＤＲＡＭ内へのＲＭＤ７４の組込みは、ディレクトリ・アクセス時間を遅らせるが、この追加のディレクトリ・アクセス待ち時間が、図４に示されるように、ＲＭＣ制御装置７３内に、最近アクセスされた（従ってアクセスされる可能性が高い）ディレクトリ・エントリを含む小ディレクトリ・キャッシュ７５を装備することにより緩和される。
【００２６】
ＮＵＭＡコンピュータ・システム５０のオペレーティング・システムにより、ＲＭＤ７４及びＲＭＣ７０に割当てられるシステム・メモリ６６の量は、性能上の重要な考慮事項である。なぜなら、より大きなＲＭＣ７０及びＲＭＤ７４の割当ては、必然的にシステム・メモリ・アドレス空間６８を低減するからである。好適な実施例では、ＲＭＣ７０及びＲＭＤ７４に割当てられるシステム・メモリ６６の、システム・メモリ・アドレス空間６８に占める割合が、実行されるアプリケーションのニーズに応じて動的に可変される。例えば、オペレーティング・システムが、アプリケーションがそれが実行されるノード５２内のメモリをアクセスするだけで足りると判断すると、オペレーティング・システムはＲＭＣ７０（及びその関連ＲＭＤ７４）を、システム・メモリ・アドレス空間６８に比較して、かなり小さな空間だけ割当てる。逆に、オペレーティング・システムが、アプリケーションがリモート・メモリへの多くのアクセスを要求すると判断すると、オペレーティング・システムはシステム・メモリの大きな部分をＲＭＣ７０（及びその関連ＲＭＤ７４）に割当てる。
【００２７】
ＲＭＣ７０（及びＲＭＤ７４）は、少なくとも２つの代替方法に従い、取り込まれる。第１に、ＲＭＣ７０は、ローカル・キャッシュ階層６２内に保持される、他のノードからのデータのスーパセットを集合的に記憶する、包含（または擬似包含）キャッシュとしてインプリメントされる。この実施例では、要求キャッシュ・ラインが他のノード５２から受信されるとき、キャッシュ・ラインがノード５２のＲＭＣ７０にロードされる。或いは、ＲＭＣ７０が、ローカル・キャッシュ階層６２から割当て解除された、共用のまたは変更済みコヒーレンス状態のリモート・データのキャッシュ・ラインだけを保持する、"犠牲キャッシュ"としてインプリメントされる。
【００２８】
メモリ・コヒーレンス：
各システム・メモリ６６内に記憶されるデータは、一般に、ＮＵＭＡコンピュータ・システム５０内のＣＰＵ６０により要求され、アクセスされ、変更されるので、ＮＵＭＡコンピュータ・システム５０（または５０'）は、１つ以上の互換性のあるキャッシュ・コヒーレンス・プロトコルをインプリメントし、ノード５２内のキャッシュ階層６２とＲＭＣ７０との間のコヒーレンス（すなわち、システム・メモリ・アドレス空間６８の集約内容のコヒーレント・ビュー）を維持する。従って、ＮＵＭＡコンピュータ・システム５０はＣＣ−ＮＵＭＡコンピュータ・システムとして適切に分類される。キャッシュ・コヒーレンス・プロトコルはインプリメンテーションに依存し、例えば、周知のModified、Exclusive、Shared、Invalid（ＭＥＳＩ）プロトコル、またはそれらの変形を含む。当業者には理解できるように、キャッシュ階層６２により使用されるコヒーレンス・プロトコルは、ローカル相互接続５８及びノード相互接続５５を介して、様々なインプリメンテーション依存のメッセージを伝送する必要があり、これは例えば、ＣＰＵ６０により実行される命令のキャッシュ階層６２を通知したり、必要なデータ及び命令を獲得したり、変更データをシステム・メモリ６６に書戻したり、コヒーレンスを維持するために必要とされる他の機能を実行するために必要とされる。
【００２９】
ノード間のコヒーレンスを維持するために、システム・メモリ制御装置７１はＬＭＤ７２内に、関連システム・メモリ・アドレス空間６８からリモート・ノード５２にチェックアウトされたデータ（すなわちキャッシュ・ライン）の、システム・メモリ・アドレスの指示を記憶する。コンパクトなディレクトリを保持することが重要なローエンド・インプリメンテーションでは、ＬＭＤ７２が各データ・グラニュールに、そのデータ・グラニュールが少なくとも１つのリモート・ノード５２にチェックアウトされるか否かの不正確な指示だけを関連付けているかもしれない。或いは、ハイエンド・インプリメンテーションでは、ＬＭＤ７２は好適には、各データ・グラニュールに関連して、各リモート・ノード５２におけるキャッシュ・ラインのコヒーレンス状態の指示を記憶する。本発明の典型的な実施例に従う、ＬＭＤ７２のエントリに含まれるノードごとのコヒーレンス状態には、表１に示される項目が含まれる。
【００３０】
【表１】
＜コヒーレンス・        ＜ローカル・キャッシュ内      ＜リモート・キャッシュ内        ＜意味＞
ディレクトリ状態＞      で可能な状態＞      で可能な状態＞
Modified(Ｍ)          Ｉ               Ｍ、Ｅ又はＩ        （注１参照）
Shared(Ｓ)         Ｓ又はＩ            Ｓ又はＩ           （注２参照）
Invalid(Ｉ)        Ｍ、Ｅ、Ｓ又はＩ          Ｉ             （注３参照）
注１）ホーム・ノードのシステム・メモリに関連して、キャッシュ・ラインが  リモート・ノードで変更され得る。
注２）キャッシュ・ラインがリモート・ノードで非排他的に保持され得る。
注３）キャッシュ・ラインがリモート・ノードにより保持されない。
【００３１】
表１に示されるように、ハイエンド・インプリメンテーションでも、リモート処理ノードにより保持されるキャッシュ・ラインのコヒーレンス状態の理解が、ある程度の不正確さをもって指定される。図８及び図９に関連して後述するように、不正確さの度合いは、コヒーレンス・プロトコルのインプリメンテーションが、ホーム・ノードのＬＭＤ７２に通知することなく、遠隔的に保持されるキャッシュ・ラインがＳからＩへ、若しくはＥからＩへ、またはＥからＭへ遷移することを許可するか否かに依存する。
【００３２】
本発明の好適な実施例では、図２及び図３に示されるように、ＬＭＤ７２が高速ＳＲＡＭによりインプリメントされる。しかしながら、ＬＭＤ７２が代わりに、ＲＭＣ７０及びＲＭＤ７４と一緒に、システム・メモリ６６内に組み込まれてもよい。しかしながら、ＬＭＤ７２をシステム・メモリ６６に組み込むことは、あまり推奨できない。なぜなら、そうすることはより大規模なＲＭＣ７０及びＲＭＤ７４を助長させ、平均リモート・メモリ・アクセス待ち時間を低減しないからである。更に、ＬＭＤ７２をシステム・メモリ６６に組み込むことは、システム・メモリへのアクセス時間をほぼ倍加する。なぜなら、最初のアクセス時間が、ＬＭＤ７２を探索するために要求され、第２の等価なアクセス時間が、システム・メモリ・アドレス空間６８から要求データを獲得するために要求されるからである。
【００３３】
キャッシュ構成：
図５を参照すると、キャッシュ階層６２内にインプリメントされる典型的な低レベル・キャッシュ１３２のブロック図が示される。キャッシュ階層６２内の他の高レベル・キャッシュについても、同様に構成される。
【００３４】
図示のように、キャッシュ１３２はデータ記憶１３０、キャッシュ・ディレクトリ１４０及びキャッシュ制御装置１５６を含む。データ記憶１３０は好適には、多数の合同クラスとして編成されるセット・アソシエイティブ・アレイとしてインプリメントされ、各合同クラスが複数のキャッシュ・ラインを含む。キャッシュ・ディレクトリ１４０はデータ記憶１３０の内容及び関連状態情報を記録し、データ記憶１３０内の合同クラスにそれぞれが対応する多数のセット１４２を含む。各セット１４２は多数のディレクトリ・エントリ１４４を含み、これらはセット１４２が関連付けられるデータ記憶１３０の合同クラス内の、対応キャッシュ・ラインのアドレス・タグ及びコヒーレンス状態を記憶する。
【００３５】
キャッシュ・ディレクトリ１４０は関連ＬＲＵ論理１５０を有し、これはデータ記憶１３０の各合同クラス内の各エントリが、どのくらい最近アクセスされたかの指示を記憶する。従って、各合同クラスに関連付けられるＬＲＵ論理１５０内の指示は、最低アクセス頻度のメンバ、２番目に低いアクセス頻度のメンバ、及び３番目に低いアクセス頻度のメンバなどを示す。
【００３６】
キャッシュ１３２は、キャッシュ・オペレーション要求に関連付けられる要求アドレスを、（恐らく高レベル・キャッシュを介して、）その関連ＣＰＵ６０と、ローカル相互接続５８の両方から受信する。要求アドレスは高位のタグ・ビット、中位のインデックス・ビット、及び下位のオフセット・ビットを含む。図５に示されるように、キャッシュ１３２により受信される各要求アドレスのインデックス・ビットは、キャッシュ・ディレクトリ１４０及びＬＲＵ論理１５０の両方に入力される。インデックス・ビットの受信に応答して、ＬＲＵ論理１５０はデコードされたCASTOUT_VICTIM信号１５２を出力する。この信号は、ことによるとキャッシュ・オペレーション要求に応答して置換されているかもしれない、選択合同クラスのメンバを示す。CASTOUT_VICTIM信号１５２は、キャッシュ制御装置１５６及びマルチプレクサ１５４の両方に入力される。
【００３７】
要求アドレスのインデックス・ビットは、キャッシュ・ディレクトリ１４０内のセット１４２を選択する。次に、比較器１４６を用いて、選択セット１４２の各エントリ１４４内に記憶されるタグ（Ｔ）が、要求アドレスのタグ・ビットと個々に比較され、各比較器が１ビット・マッチ指示を生成する。比較器１４６により出力されるビットは、デコードされたＨＩＴ／ＭＩＳＳ信号１４８を形成し、これがキャッシュ制御装置１５６、マルチプレクサ１５４、及びＯＲゲート１５３に入力される。ＯＲゲート１５３は、ＨＩＴ／ＭＩＳＳ信号１４８を論理的に組み合わせることにより、選択信号を生成し、この選択信号がヒットに応答して、ＨＩＴ／ＭＩＳＳ信号１４８をマルチプレクサ１５４の出力として選択し、ミスに応答して、CASTOUT_VICTIM信号１５２をマルチプレクサ１５４の出力として選択する。マルチプレクサ１５４の出力は、デコードされたＳＥＬＥＣＴ信号１５５を形成する。
【００３８】
比較器１４６によるタグ・ビットの比較と並行して、選択セット１４２の各エントリに記憶されるコヒーレンス状態（ＣＳ）及びタグ（Ｔ）が、マルチプレクサ１４７に入力される。ＳＥＬＥＣＴ信号１５５が次に、もし要求アドレスがキャッシュ・ディレクトリ１４０内でヒットした場合、マルチプレクサ１４７の出力として、マッチング・メンバに関連付けられるコヒーレンス状態及びタグを選択し、要求アドレスがキャッシュ・ディレクトリ１４０内でミスした場合、ＬＲＵメンバに関連付けられるコヒーレンス状態及びタグを選択する。次に、選択コヒーレンス状態及びタグ１４９が、キャッシュ制御装置１５６に入力される。
【００３９】
キャッシュ・オペレーション要求、ＨＩＴ／ＭＩＳＳ信号１４８、コヒーレンス状態及びタグ１４９、及びCASTOUT_VICTIM信号１５２の受信に応答して、キャッシュ制御装置１５６は要求を要求キュー１３４の１つにエンキューし、適切なデータ処理及びディレクトリ更新操作を実行する。例えば、関連ＣＰＵ６０による読出しタイプの要求が、キャッシュ・ディレクトリ１４０内でミスしたことに応答して、キャッシュ制御装置１５６は、要求アドレスを含むキャッシュ・ラインを求める要求を、ローカル相互接続５８上に出力し、ローカル・キャッシュ階層６２、ローカル・システム・メモリ６８、または他のノード５２からの要求データの受信に際して、要求データを関連ＣＰＵ６０に提供し、要求キャッシュ・ラインを、CASTOUT_VICTIM信号１５２により指定される合同クラス・メンバに記憶する。或いは、関連ＣＰＵ６０による読出し要求のキャッシュ・ディレクトリ１４０内でのヒットに応答して、キャッシュ制御装置１５６が要求データをデータ記憶１３０から読出し、そのデータを関連ＣＰＵ６０に提供する。キャッシュ・オペレーション要求のサービスが、キャッシュ・ラインのアクセスまたはキャッシュ・ラインの置換を要求する度に、キャッシュ制御装置１５６はLRU_UPDATE信号１５８を生成し、この信号がＬＲＵ論理１５０により、アクセスされた合同クラスに関連付けられるＬＲＵ指示を更新するために使用される。後述するように、キャッシュ制御装置１５６は、ローカル相互接続５８上のスヌーピング・オペレーションに応答して、スヌープ・キュー１３５を参照することにより、同様にキャッシュ更新及びデータ処理操作を実行する。
【００４０】
リモート読出しタイプ命令：
図６を参照すると、本発明に従い、ＣＰＵロードまたはストア要求をサービスする方法のハイレベル論理フローチャートが示される。図６に示されるプロセスはブロック１００で開始し、次にブロック１０１に進み、ＮＵＭＡコンピュータ・システム５０（または５０'）のあるノード５２内の最下レベル・キャッシュ１３２が、関連ＣＰＵ６０から、データまたは命令（以下では単にデータと称す）の要求を受信する。最下レベル・キャッシュ１３２での要求の受信は、要求がキャッシュ階層６２の高レベル・キャッシュにおいて、ミスしたことを示す。
【００４１】
前述のように、要求の受信に応答して、最下レベル・キャッシュ１３２は、ブロック１０２で、要求が最下レベル・キャッシュ１３２内でヒットするか否かを判断する。ヒットする場合、ブロック１０３で、キャッシュ制御装置１５６がＣＰＵ６０に要求データを提供されることにより、要求をサービスし、プロセスはブロック１１８で終了する。しかしながら、ブロック１０２で、要求が最下レベル・キャッシュ１３２内でミスしたと判断されると、ブロック１０４で、最下レベル・キャッシュ１３２のキャッシュ制御装置１５６が、そのローカル相互接続５８上に、要求データをターゲットとする読出しタイプの要求（例えばロード要求のためのＲＥＡＤ、またはストア要求のためのＲＷＩＴＭ（read-with-intent-to-modify））を発行する。
【００４２】
図７は、本発明に従う読出しタイプの要求の典型的な実施例を示す。図示のように、読出しタイプの要求は、発信元及び宛先タグ・フィールド１１９、１２０、アドレス及びパリティ・フィールド１２１、１２２、及び命令のサイズ及びタイプ（例えばＲＥＡＤまたはＲＷＩＴＭ）を示すトランザクション記述子フィールド１２４などの、従来のフィールドを含む。更に、読出しタイプの要求は、図１７乃至図１９に関連して後述するプリフェッチ（ＰＦ）フィールド１２８を含む。更に、本発明によれば、読出しタイプの要求は、その読出しタイプの要求がローカル・ノード制御装置５６のキュー５７の１つにエンキューされるべきか否かを示す、ノード制御装置キュー（ＮＣＱ）フラグ１２６を含む。本発明によれば、ノード制御装置５６のキュー５７内の命令のペンデンシが、最初に、ＮＣＱフィールド１２６が０にセットされた読出しタイプの要求を発行し（図６のブロック１０４参照）、それによりノード制御装置５６に読出しタイプの要求をエンキューしないように命令することにより低減される。
【００４３】
図６に戻り、プロセスはブロック１０４からブロック１０６に進み、ここで他のローカル・キャッシュ階層６２、メモリ制御装置６４、及びノード制御装置５６の全てが、読出しタイプの要求をスヌープし、適切なスヌープ応答を提供する。可能なスヌープ応答は、好適には表２に示される項目を含む。
【００４４】
【表２】
＜スヌープ応答とその意味＞
再試行：要求の発信元が要求を再発行しなければならない。
変更介入：ラインがキャッシュ内で変更され、キャッシュからリクエスタに発信される。
共用介入：ラインがキャッシュ内で変更されず（ことによると共用される）、キャッシュからリクエスタに発信される。
リモート・アドレス：ラインのホーム・ノードが別のノード（ノード制御装置だけ）である。
共用：ラインがキャッシュ内で共用状態に保持される。
ヌル：ラインがキャッシュ内で無効である。
【００４５】
重要な点は、ローカル・ノード制御装置５６が、ホーム・ノードとして別のノードを有するデータに対する読出しタイプの要求に対して、"リモート・アドレス"・スヌープ応答を提供するが、ノード制御装置５６はこうした読出しタイプの要求を、リモート・ノードへの伝送のために、そのキュー５７の１つに即時エンキューしないことである。なぜなら、読出しタイプの要求のＮＣＱフィールド１２６が、０にセットされているからである。
【００４６】
ブロック１０８で示されるように、読出しタイプの要求を発行したインタフェース・ユニット６５内の応答論理６３が、全てのスヌープ応答を組み合わせ、要求がどのようにサービスされるかを示す組み合わせ応答を生成する（例えば、最も優先順位の高いスヌープ応答を示すことによる）。インタフェース・ユニット６５はこの組み合わせ応答を、要求元キャッシュ階層６２を含む、ローカル相互接続５８上の各スヌーパに提供する。組み合わせ応答が、要求アドレスが要求データの発信元として役立つローカル・キャッシュ階層６２またはＲＭＣ７０内でヒットしたことを示す場合、プロセスはブロック１０８からブロック１１０に進み、読出しタイプの要求がローカル・キャッシュ階層６２またはＲＭＣ７０によりサービスされる。その後、プロセスはブロック１１８で終了する。
【００４７】
ブロック１０８に戻り、読出しタイプの要求に対する組み合わせ応答が、ローカル・キャッシュ階層６２またはＲＭＣ７０が要求データの発信元として役立たないことを示す"リモート・アドレス"組み合わせ応答の場合、ブロック１１２で示されるように、要求キャッシュ階層６２内の最下レベル・キャッシュ１３２のキャッシュ制御装置１５６が、読出しタイプの要求を、ＮＣＱフラグ１２６が１にセットされた状態で、ローカル相互接続５８上に再発行する。既に述べたように、各々のスヌーパが読出しタイプの要求に対してスヌープ応答を提供し、インタフェース・ユニット６５が組み合わせ応答を提供する。しかしながら、ブロック１１４に示されるように、読出しタイプの要求がノード制御装置５６により再度スヌープされるとき、ノード制御装置５６は、今度はＮＣＱフィールド１２６が１にセットされているので、要求アドレスのホーム・ノード５２への伝送のために、要求をそのキュー５７の１つにエンキューする。読出しタイプの要求をエンキューした後、ノード制御装置５６は第２の組み合わせ応答を待機することなく、読出しタイプの要求をそのサービスのために、ホーム・ノード５２に転送する。（ノード制御装置５６は組み合わせ応答を受信するために待機する必要がない。なぜなら、既にＮＣＱフィールド１２６により、ノード制御装置５６が読出しタイプの要求のサービスを処理しなければならないことが示されているからである。）ブロック１１６で示されるように、ホーム・ノード５２が要求データをノード相互接続５５を介して、ノード制御装置５６に提供することにより、要求をサービスする。次に、ノード制御装置５６はローカル相互接続５８を介して、要求データを要求元キャッシュ階層６２に（及び包含キャッシュとしてインプリメントされる場合、ＲＭＣ７０にも）提供する。その後、プロセスはブロック１１８で終了する。
【００４８】
図６に示されるプロセスは、ノード制御装置５６内のキュー５７の項目数が、図１の従来のノード制御装置２４内のキュー３２の項目数よりも、遙かに浅いことを可能にする。このようにキューの項目数を低減できる理由は、エンキューされる読出しタイプの要求の数及びキューイング期間が、大幅に減少されるからである。
【００４９】
図１の従来のＮＵＭＡコンピュータ・システム８では、ノード制御装置２４がキュー３２内に、リモート・データを求めてスヌープされた各読出しタイプの要求をエンキューする。これは後に、ローカル組み合わせ応答が、その読出しタイプの要求が別のノード１０によりサービスされなければならないことを示す場合に備えるためである。従って、ノード制御装置２４は不必要にたくさんの読出しタイプの要求をエンキューし、それらが後に組み合わせ応答により示されるときに、（例えばＲＭＣ２８から）局所的にサービスされるようにする。更に、ノード制御装置２４は、要求アドレスがスヌープされる時点から、組み合わせ応答が受信される時点まで、読出しタイプの要求をエンキューする（これは例えば８０サイクル以上を費やす）。この長いインターバルの間、従来のノード制御装置２４内のキュー３２は、ローカル相互接続１１及びノード相互接続１２上の命令を、キュー３２に対してスヌープすることにより、全てのインバウンド命令及びアウトバウンド命令のグローバル・コヒーレンスを、キュー３２内に保持するように要求される。
【００５０】
それに対して、図６の方法に従えばノード制御装置５６は、サービスのために他のノード５２に送信されなければならない読出しタイプの要求をエンキューするだけである。更に、キュー５７内にエンキューされる読出しタイプの要求が、ＮＣＯフィールド１２６が１にセットされて再発行される読出しタイプの要求の受信と、ノード相互接続５５上での読出しタイプの要求の伝送との間のインターバルの間だけ、エンキューされる。従って、キュー５７の項目数が、アドレス指定から組み合わせ応答までの待ち時間に依存しない。
【００５１】
もちろん、キュー項目数のこの有利な低減は、アドレス指定から組み合わせ応答までの待ち時間の延長を、ノード５２間で伝送されなければならない読出しタイプの要求のサービスのために追加する代償として獲得される。しかしながら、大容量のＲＭＣ７０を仮定すると、こうした要求は希である。加えて、ホーム・ノードに転送されなければならない要求のサービスに関連付けられる待ち時間は一般に非常に長く、リモート・ノードにおけるアドレス指定から組み合わせ応答までの追加の待ち時間の招へいは、性能に大きな影響を与えない。
【００５２】
最後に、当業者には明らかなように、図６の方法はＮＵＭＡコンピュータ・システムに限られるものではない。代わりに、本発明は一般に、階層相互接続アーキテクチャを有するＳＭＰコンピュータ・システム、及びスヌーパ間の通信待ち時間が均一でない他のコンピュータ・システムにも適用可能である。
【００５３】
キャッシュ・ライン割当て解除：
図６のブロック１１４及び１１６に示されるように、キャッシュ・ラインが要求され、別のノード５２から受信されるとき、そのキャッシュ・ラインが要求元キャッシュ階層６２またはＲＭＣ７０から割当て解除され、新たなキャッシュ・ラインを収容できるようにしなければならない。リモート・ノードが常に未変更のキャッシュ・ラインを黙って割当て解除する、前述の従来のＮＵＭＡコンピュータ・システムとは異なり、本発明に従うＮＵＭＡコンピュータ・システムは、好適には、リモート・ノードが、ホーム・ノードからチェックアウトされたキャッシュ・ラインを割当て解除するとき、リモート・ノードがホーム・ノードにそのことを通知するように、割当て解除操作をインプリメントする。従って、本発明はＬＭＤ７２が、リモート・ノード５２に保持される関連システム・メモリ・アドレス空間６８からのデータに関して、より正確な情報を含むことを可能にする。
【００５４】
次に図８及び図９を参照すると、本発明の好適な実施例に従い、ＲＭＣ７０からのキャッシュ・ラインの割当て解除を示すハイレベル論理フローチャートが示され、そこではＲＭＣ７０が、ローカル・キャッシュ階層６２から割当て解除されたリモート・データを記憶する"犠牲キャッシュ（victim cache）"として実現される。しかしながら、当業者であれば理解できるように、図示の割当て解除プロセスは、ＲＭＣ７０がローカル・キャッシュ階層６２内に保持されるリモート・データを含む実施例にも適用可能である。
【００５５】
最初に図８を参照すると、プロセスはブロック１７０で開始し、その後、ブロック１７２に進み、ここでＲＭＣ７０を制御するメモリ制御装置６４のＲＭＣ制御装置７３が、犠牲キャッシュ・ラインを割当て解除のために選択する。この選択は、例えば、どのキャッシュ・ラインが最低使用頻度（ＬＲＵ）か、或いは最も最近使用されたか（ＭＲＵ）、またはランダム選択や他の犠牲選択基準にもとづき行われる。ブロック１７４で示されるように、ＲＭＣ制御装置７３は犠牲キャッシュ・ラインを、ＲＭＤ７４に記憶されるそのコヒーレンス状態に従い割当て解除する。ＲＭＤ７４が犠牲キャッシュ・ラインのコヒーレンス状態が無効であると示す場合、ホーム・ノード５２に何の通知も提供することなく、犠牲キャッシュ・ラインが単に要求データにより上書きされる。従って、プロセスはブロック１７４から直接ブロック１９０に移行し終了する。
【００５６】
他方、ＲＭＤ７４が、選択犠牲キャッシュ・ラインがホーム・ノード５２のシステム・メモリ・アドレス空間６８に内在する対応データに関連して、変更済みであると示す場合、メモリ制御装置６４は変更データに対して割当て解除プロセスを開始し、これがブロック１７６で示され、図９に関連して以下で詳述される。最後に、ＲＭＤ７４が、犠牲キャッシュ・ラインが共用コヒーレンス状態であると示す場合（すなわち、キャッシュ階層６２内に局所的にキャッシュされているかもしれず、その場合、ホーム・ノード５２のシステム・メモリ６６に関連して変更済みである）、メモリ制御装置６４は、割当て解除されるキャッシュ・ラインのコピーを含むシステム・メモリ６６に関連付けられるホーム・ノードのメモリ制御装置６４に通知する。こうした通知は、たとえそれがコヒーレンスを維持するために、厳密には必要でなくても行われる。
【００５７】
ブロック１７８で示されるように、メモリ制御装置６４は、アドレス専用割当て解除命令をローカル相互接続５８上に発行することにより、共用犠牲キャッシュ・ラインをリモート・メモリ・キャッシュ７０から割当て解除するプロセスを開始する。アドレス専用割当て解除命令のスヌープに応答して、ノード制御装置５６は命令をエンキューし、ローカル・キャッシュ階層６２及び他のスヌーパが、ブロック１８０で示されるように、割当て解除命令に対して、そのキャッシュ階層６２に関連して、犠牲キャッシュ・ラインのコヒーレンス状態（一般に共用状態または無効状態）を示すスヌープ応答を提供する。これらのスヌープ応答は、割当て解除命令を発行したインタフェース・ユニット６５内の応答論理により組み合わされ、組み合わせ応答が生成される。この組み合わせ応答が次に、ローカル相互接続５８に結合される全てのスヌーパに提供される。ブロック１８２で示されるように、組み合わせ応答が、１つ以上のローカル・キャッシュ階層６２が共用状態の犠牲キャッシュ・ラインを記憶することを示す場合、プロセスはブロック１９０で終了し、この場合、ホーム・ノード５２に通知することなく、犠牲キャッシュ・ラインがＲＭＣ７０から割当て解除される。ホーム・ノード５２に通知が提供されない理由は、ホーム・ノードのＬＭＤ７２の更新が必要でないからである。
【００５８】
しかしながら、組み合わせ応答が、犠牲キャッシュ・ラインが局所的に共用状態でキャッシュされていないことを示す場合（すなわち組み合わせ応答がヌル）、ブロック１８４で、ローカル・ノード制御装置５６はエンキューされたアドレス専用割当て解除命令をホーム・ノード５２のノード制御装置５６に送信し、割当て解除命令をデキューする。ホーム・ノード５２のノード制御装置５６は次に、アドレス専用割当て解除命令をそのローカル相互接続５８上に発行する。ブロック１８６で示されるように、犠牲キャッシュ・ラインのアドレスの担い手であるメモリ制御装置６４が、ＬＭＤ７２内の犠牲キャッシュ・ラインに対応する共用状態のエントリを無効状態に更新し、犠牲キャッシュ・ラインがもはやその特定のリモート・ノード５２にキャッシュされていないことを示す。その後、図８に示されるプロセスはブロック１９０で終了する。
【００５９】
次に図９を参照すると、本発明に従いＲＭＣ７０から変更キャッシュ・ラインを割当て解除する典型的な方法が示される。図示の実施例では、キャッシュ階層６２及びＲＭＣ７０によりインプリメントされるコヒーレンス・プロトコルが、タグ付き（Ｔ）コヒーレンス状態を含む周知のＭＥＳＩプロトコルの変形である。米国特許出願第０９／０２４３９３号で述べられるように、タグ付き（Ｔ）コヒーレンス状態は、１）キャッシュ・ラインがシステム・メモリに関連して変更されていること、２）キャッシュ・ラインが、異なる処理ユニットに関連付けられる複数のキャッシュ内に保持されているかもしれないこと、及び３）Ｔ状態のキャッシュ・ラインを保持するキャッシュが、現在そのキャッシュ・ラインをシステム・メモリに書戻す責任があることを示す。
【００６０】
図９に示されるプロセスは、図８のブロック１７２乃至１７４で示されるように、割当て解除のために選択されたＲＭＣ７０内の犠牲キャッシュ・ラインが、変更キャッシュ・ラインであると判断された後に、ブロック２００で開始する。プロセスは次にブロック２０２に進み、ＲＭＣ７０に関連付けられるＲＭＣ制御装置７３が、ローカル相互接続５８上にキャストアウト書込み命令を発行する。
【００６１】
図１０に示されるように、本発明に従う典型的なキャストアウト書込み命令２４０は、発信元及び宛先タグ・フィールド２４１、２４２、アドレス及びアドレス・パリティ・フィールド２４３、２４４、及び命令のサイズ及びタイプを示すトランザクション記述子フィールド２４６などの、従来のフィールドを含む。更に、後述のように、キャストアウト書込み命令は共用（Ｓ）フラグ２４８を含み、これはキャストアウト書込み命令がローカル相互接続５８上に発行されたとき、共用スヌープ応答を受信したか否かを示すようにセットされる。最後に、キャストアウト書込み命令は、変更犠牲キャッシュ・ラインを含むデータ・フィールド２５０、及び関連データ・パリティ・フィールド２５２を含む。
【００６２】
ブロック２０４で示されるように、キャストアウト書込み命令のスヌープに応答して、ローカル相互接続５８に結合されるスヌーパの各々は、キャッシュ階層６２のために、各スヌーパでの犠牲キャッシュ・ラインのコヒーレンス状態を示すスヌープ応答を提供する。更に、ノード制御装置５６がキャストアウト書込みをキュー５７にエンキューする。前述のように、キャストアウト書込み命令を発行したメモリ制御装置６４に関連付けられるインタフェース・ユニット６５内の応答論理６３が、スヌープ応答を組み合わせ、組み合わせ応答を生成し、これが全てのスヌーパに提供される。組み合わせ応答が再試行組み合わせ応答の場合、プロセスは前述したブロック２０２に戻る。しかしながら、組み合わせ応答が再試行以外の応答の場合、ノード制御装置５６は組み合わせ応答に従い、キャストアウト書込み命令内の共用フラグ２４８をセットする。従って、ブロック２０８で示されるように、組み合わせ応答が共用の場合、キャッシュ階層６２の１つが、タグ付き（Ｔ）コヒーレンス状態により許可されるように、変更犠牲キャッシュ・ラインのコピーを保持することを示し、従って、ノード制御装置５６は共用フラグ２４８を１にセットする。他方、犠牲キャッシュ・ラインの有効なコピーを保持するローカル・キャッシュ階層６２が存在しない場合、ノード制御装置５６はヌル組み合わせ応答を受信し、従って、ブロック２１０で共用フラグ２４８を０にセットする。
【００６３】
ノード制御装置５６はその後、ブロック２１２で示されるように、キャストアウト書込み命令をデキューし、それを犠牲キャッシュ・ラインのホーム・ノード５２に送信する。ホーム・ノード５２でのキャストアウト書込み命令の受信に続き、ホーム・ノード５２のノード制御装置５６が、キャストアウト書込み命令をホーム・ノード５２のローカル相互接続５８上に発行する。ブロック２１３で示されるように、キャストアウト書込み命令に応答して、犠牲キャッシュ・ライン・アドレスの担い手であるメモリ制御装置６４が、システム・メモリ・アドレス空間６８をキャストアウト・データにより更新する。更に、メモリ制御装置６４は共用フラグ２４８の状態に従い、ＬＭＤ７２内の、リモート・ノード５２の関連コヒーレンス状態を更新する。従って、ブロック２１８で示されるように、共用フラグ２４８が１にセットされている場合、メモリ制御装置６４は、キャストアウトを発行したリモート・ノード５２での犠牲キャッシュ・ラインのコヒーレンス状態を、共用にセットする。他方、共用フラグ２４８が０にセットされている場合、ブロック２１６で示されるように、メモリ制御装置６４がリモート・ノード５２の犠牲キャッシュ・ラインのコヒーレンス状態を無効に更新する。その後、図９に示される割当て解除プロセスがブロック２２０で終了する。
【００６４】
図８及び図９に示される割当て解除プロセスの一方または両方をインプリメントすることにより、ホーム・ノード５２のメモリ制御装置６４が、（例えばＲＷＩＴＭ要求に応答して、）不必要な無効命令をリモート・ノード５２に送信する可能性が大幅に減少する。その結果、複数のノード５２間で時々共用されるキャッシュ・ラインに対する、ストア命令の平均性能が改善される。また、図８に示されるアドレス専用割当て解除命令が、弱い命令（すなわち不正確な命令）としてインプリメントされる。例えば、アドレス専用割当て解除命令を発信するメモリ制御装置６４が、所定数以上の再試行スヌープ応答を受信する場合、メモリ制御装置６４は割当て解除命令の再試行を中断する。このように、再試行組み合わせ応答を招く動的条件（例えばキャッシュ・ディレクトリがビジー）の下でも、性能的な影響を受けない。
【００６５】
ローカル・メモリ・ディレクトリ保守：
本発明の一部の実施例では、図８及び図９に示される方法に加え、遠隔的に保持されるキャッシュ・ラインを割当て解除する、代わりのまたは追加の方法をインプリメントすることが望ましい。特に、図８及び図９の割当て解除方法がインプリメントされないか、ＲＭＣ７０が非常に大規模な場合、リモート・ノードがキャッシュ・ラインのアクセスを要求するのをやめたずっと後で、そのキャッシュ・ラインがリモート・ノードに保持されてもよい（或いは、少なくともホーム・ノードのＬＭＤ７２に、リモート・ノードに保持されていることが示されてもよい）。結果的に、本発明は非要求時フラッシュ命令をリモート・ノードに発行することにより、排他命令（例えばＲＷＩＴＭ要求）が、リモート・ノードに保持されるデータの無効化により遅延される頻度を低減する、特定の機構をインプリメントすることが望ましいことを認識する。
【００６６】
本発明の好適な実施例に従い、また図４に示されるように、メモリ制御装置６４のシステム・メモリ制御装置７１内に、ディレクトリ"消し込み（scrubbing）"論理（ＳＬ）６１なる機構がインプリメントされる。このディレクトリ消し込み論理（ＳＬ）６１は、関連ＬＭＤ７２内の各エントリを周期的に読出し、エントリが、特定のキャッシュ・ラインが１つ以上のリモート・ノード５２に"キャッシュアウト"されていることを示す場合、システム・メモリ制御装置７１が"弱い"アドレス専用フラッシュ照会を、それらのリモート・ノードに発行する。
【００６７】
フラッシュ照会は"弱い（weak）"と称される。なぜなら、フラッシュ照会を受信するリモート・ノード５２は、それを遵守する必要がないからである。通常状態では、フラッシュ照会がデータのコピーを保持するリモート・ノード５２内のキャッシュ階層６２によりスヌープされるとき、キャッシュ階層６２はキャッシュ内のアドレス指定ラインを無効化し、もしキャッシュ・ラインが変更済みの場合、キャッシュ・ライン・データをホーム・ノード５２に書戻す。しかしながら、データが依然リモート・ノード５２内で活発に使用されているか、キャッシュ階層のスヌープ・キューが全てビジーの場合、フラッシュ照会が無視されてもよい。
【００６８】
次に図１１を参照すると、本発明の好適な実施例に従い、ディレクトリ消し込み論理６１を操作する典型的な方法のハイレベル論理フローチャートが示される。図示のように、プロセスはブロック２６０で開始し、ブロック２６２に進み、ディレクトリ消し込み論理６１がカウントダウン・カウンタを選択カウント値によりリセットし、このカウント値が、ＬＭＤ７２内のディレクトリ・エントリが消し込まれる頻度を決定する。カウンタの初期値はハードウェアにより決定されるか、ソフトウェア・プログラマブルである。次に、ブロック２６４で、カウンタにより保持されるカウントが０か否かが判断される。０でない場合、カウンタはブロック２６６で減分され、プロセスはブロック２６４に戻る。
【００６９】
ブロック２６４で、カウンタが０にカウントダウンしたと判断されると、プロセスはブロック２６８に進み、システム・メモリ制御装置７１が、ディレクトリ・エントリ・ポインタにより示されるＬＭＤ７２内のディレクトリ・エントリを読出す。ＬＭＤ７２内のディレクトリ・エントリが、関連データがどのリモート・ノード５２内にも保持されていないと示す場合（例えばＬＭＤ７２内で無効状態）、プロセスは直接、後述のブロック２７４に移行する。しかしながら、ＬＭＤ７２から読出されるディレクトリ・エントリが、少なくとも１つのリモート・ノード５２が関連データのコピーを保持すると示す場合、プロセスはブロック２７０からブロック２７２に進む。ブロック２７２では、システム・メモリ制御装置７１がアドレス専用フラッシュ照会を、そのローカル相互接続５８上に発行する。フラッシュ照会はローカル・ノード制御装置５６によりスヌープされ、ノード制御装置５６により、ＬＭＤ７２のエントリに含まれる情報量に応じて、フラッシュ照会内で指定される各リモート・ノード５２に、或いは全てのリモート・ノード５２に送信される。ブロック２７２に続き、ブロック２７４でシステム・メモリ制御装置７１はディレクトリ・エントリ・ポインタを増分し、ＬＭＤ７０内の次のエントリを指し示す。その後、プロセスはブロック２６２に戻り、再度繰り返される。
【００７０】
次に図１２を参照すると、本発明の好適な実施例に従い、リモート・ノード５２のＲＭＣ制御装置７３が、ホーム・ノード５２から発行されたアドレス専用フラッシュ照会を処理する典型的な方法のハイレベル論理フローチャートが示される。プロセスはブロック３００で開始し、その後ブロック３０２に進み、そこでメモリ制御装置６４がアドレス専用フラッシュ照会をスヌープするまで繰り返される。アドレス専用フラッシュ照会のスヌープに応答して、プロセスはブロック３０４に進み、メモリ制御装置６４がそのＲＭＤ７４から、フラッシュ照会内のアドレスにより識別されるディレクトリ・エントリを読出す。ディレクトリ・エントリ内で示されるコヒーレンス状態にもとづき、メモリ制御装置６４はＲＭＣ７０が、フラッシュ照会アドレスに関連付けられる有効データを保持するか否かを判断する。保持しない場合、プロセスは前述のブロック３０２に戻る。
【００７１】
ブロック３０６に戻り、ＲＭＤ７４内のディレクトリ・エントリが、ＲＭＣ７０がフラッシュ照会アドレスに関連付けられる有効キャッシュ・ラインを保持すると示すことに応答して、メモリ制御装置６４は次に、ブロック３０８及び３１０により示されるように、そのキャッシュ・ラインを割当て解除するか否かを判断する。この判断は、例えば、キャッシュ・ラインがリモート・ノード５２において、活発に使用されているか否か、或いは、メモリ制御装置６４が使用可能なスヌープ・キューまたは他のファクタを有するか否かなどにもとづく。ＲＭＣ７０が、ローカル・キャッシュ階層６２により保持されるリモート・データを含むようにインプリメントされる本発明の実施例では、メモリ制御装置６４は、ＲＭＤ７４から読出されるディレクトリ・エントリ内のいずれかの包含ビットが、セットされているか否かを判断することにより、示されるキャッシュ・ラインが依然活発に使用されているか否かを判断できる。メモリ制御装置６４が、フラッシュ照会内で識別されるキャッシュ・ラインを割当て解除しないと判断する場合（例えば、キャッシュ・ラインが依然使用されているか、スヌープ・キューが使用可能でないことによる）、識別されたキャッシュ・ラインは割当て解除されず、プロセスは単に前述のブロック３０２に戻る。
【００７２】
他方、リモート・ノード５２内のメモリ制御装置６４が、キャッシュ・ラインが割当て解除されると判断すると、プロセスはキャッシュ・ライン割当て解除プロセスを表すブロック３１２乃至３１６を実行する。図示の割当て解除プロセスに従い、メモリ制御装置６４は、単にＲＭＤ７４内のディレクトリ・エントリを更新することにより、未変更のキャッシュ・ラインを割当て解除する。その際、ホーム・ノード５２へは何の通知も行われない。それに対して、変更キャッシュ・ラインはＲＭＤ７４内で無効化され、従来通りホーム・ノード５２に書戻される。もちろん当業者であれば、図８及び図９に示される割当て解除方法が、ブロック３１２乃至３１６に示される割当て解除プロセスの代わりに、インプリメントされ得ることが理解できよう。キャッシュ・ライン割当てプロセスに続き、図１２に示されるプロセはブロック３０２に戻る。
【００７３】
図１１及び図１２に示されるＬＭＤ消し込みプロセスは、ローエンド及びハイエンドＮＵＭＡコンピュータ・システムの両方に対して利点を提供する。コストが重点課題であるローエンドＮＵＭＡコンピュータ・システムでは、ＬＭＤが比較的小規模であることが有利である。従って、キャッシュ・ラインのリモート・コピーをキャッシュするノードの特定のノードＩＤは、一般にＬＭＤ内に保持されない。その結果、ホーム・ノードのメモリ制御装置が、キャッシュ・ラインへの排他アクセスの要求に応答して、そのキャッシュ・ラインを無効化するように要求されるとき（更にそのキャッシュ・ラインが変更済みの場合、ホーム・ノードへのデータの書戻しを強要されるとき）、メモリ制御装置はフラッシュ・コマンドを他の全てのノードに同報しなければならない。なぜなら、メモリ制御装置は、どのノードが実際にそのキャッシュ・ラインをアクセスしたかの記録を有さないからである。図１１及び図１２に示されるディレクトリ消し込み方法は、新たなリクエスタがデータを待機している間に、要求時フラッシュ・コマンドが同報されなければならない機会を低減することにより、ローエンド・システムの性能を向上させる。本発明のローエンド・インプリメンテーションは、依然フラッシュ照会を全てのノードに同報する必要があるが、こうした同報は、排他アクセスが続くリクエスタにより要求されるよりずっと前に実行される傾向がある。
【００７４】
非常に大規模なＲＭＣを有するハイエンドＮＵＭＡコンピュータ・システムでは、フラッシュ照会を用いて、遠隔的に保持される不要なキャッシュ・ラインを割当て解除することによる利点が、ＲＭＣの管理により大きく起因する。ハイエンド・システムは一般に非常に大規模なＲＭＣを有するので、特定のノード内の処理ユニットによりもはや要求されないキャッシュ・ラインが、そのノードのＲＭＣ内に非常に長い時間留まるかもしれず、ときとして決して割当て解除されないかもしれない。このような場合、本発明を除くと、キャッシュ・ラインがキャッシュから強制退去される唯一の方法は、そのキャッシュ・ラインへの排他アクセスの要求に応答して、ホーム・ノードが要求時フラッシュ・コマンドを発行することである。従って、本発明はリモート・ノードが、現在ＬＭＤ内で追跡されているキャッシュ・ラインのコピーを無効化することを、"弱く（weakly）"強いるものであり、ホーム・ノードがそのキャッシュ・ラインの新たなアクセス要求を受信するとき、関連メモリ制御装置が最初に要求時フラッシュ・コマンドを１つ以上のリモート・ノードに発行する必要なく、キャッシュ・ラインがシステム・メモリから即時送信される可能性が高くなる。
【００７５】
本発明の一部の実施例では、フラッシュ照会がスヌープされ、キャッシュ階層６２のキャッシュ制御装置１５６により作用される。しかしながら、フラッシュ照会のターゲット・キャッシュ・ラインのキャッシュ階層６２内での存在は、データが続いてアクセスされることを示すので、フラッシュ照会を遵守する利点は、ターゲット・キャッシュ・ラインが保持されるキャッシュ階層６２内の上位階層（higher-up）を縮小させる。従って、例えばターゲット・キャッシュ・ラインがＬ３キャッシュ内にのみ保持される場合、フラッシュ照会に従うことが賢明であるが、ターゲット・キャッシュ・ライン（またはその一部）が、関連Ｌ２またはＬ１キャッシュ内に保持される場合には、フラッシュ照会を無視することが賢明である。
【００７６】
非集中グローバル・コヒーレンス管理：
前述のように、本発明は、別のノード５２におけるサービスを要求する読出しタイプの命令が、ノード制御装置５６によりエンキューされる時間を低減することにより、ノード制御装置５６内で要求されるキュー５７の数を有利に低減する。本発明は更に、ノード制御装置５６からグローバル・コヒーレンス管理の責任を除去することにより、ノード制御装置５６内で要求されるアドレス、データ及びコマンド・キュー５７の数を低減する。
【００７７】
図１のＮＵＭＡコンピュータ・システム８などの従来システムでは、フラッシュ・コマンドがノード相互接続１２上で受信されるとき、ノード制御装置２４が、フラッシュ・コマンドがそのノード１０内で成功裡に完了されることを保証する責任を負う。従って、フラッシュ・コマンドがノード相互接続１２を介して受信されたときから、全てのローカル・キャッシュ階層１８及びＲＭＣ２８がターゲット・キャッシュ・ラインのコピーを無効化し、変更データが存在する場合、それらをホーム・ノードに書戻すまで、ノード制御装置２４はそのキュー３２の１つに、フラッシュ・コマンドを保持しなければならない。当然のことながら、このプロセスは、ノード相互接続１２を介する通信の待ち時間を考慮すると、２５００サイクル以上を要する。従って、従来のノード制御装置２４は一般に、深いすなわち項目数の多いキュー３２を装備されるにも拘わらず、コヒーレンス・トラフィックがかなり多い場合には、キュー３２は依然性能上の障害となる。この性能上の障害を解決するために、本発明の好適な実施例はＲＭＣ制御装置７３を用いて、コヒーレンス管理を非集中化する。
【００７８】
図１３を参照すると、本発明に従い、非集中コヒーレンス管理を用いて、フラッシュ・コマンドが処理される好適な方法のハイレベル論理フローチャートが示される。図示の実施例では、各ノード５２内のＲＭＣ７０が、ローカル・キヤッシュ階層６２内にキャッシュされる他のノード５２からの全てのデータをまとめて含むものと仮定される。
【００７９】
図示のように、図１３に示されるプロセスはブロック２６０で開始し、その後ブロック２６２に進み、リモート・ノード５２のノード制御装置５６が、リモート・ノード５２内で無効化されるキャッシュ・ラインのフラッシュ・アドレスを指定するフラッシュ・コマンドを受信し、変更データが存在する場合、それがホーム・ノード５２に書戻される。前述のように、こうしたフラッシュ・コマンドは一般に、ホーム・ノード５２のメモリ制御装置６４により、次のような事象に応答して、すなわち、ＬＭＤ７２内で、１つ以上のリモート・ノード５２にチェックアウト済みと示されるキャッシュ・ラインに対するＲＷＩＴＭ要求の受信に応答して発行される。フラッシュ・コマンドの受信に応答して、リモート・ノード５２のノード制御装置５２は、フラッシュ・コマンドをキュー５７にエンキューし、ブロック２６４で示されるように、フラッシュ・コマンドをそのローカル相互接続５８上に送信する。
【００８０】
フラッシュ・コマンドのスヌープに応答して、ローカル・メモリ制御装置６４の各々は、スヌープ応答を提供する。ブロック２６６で示されるように、ターゲット・アドレスがマップされたＲＭＣ７０に関連付けられるメモリ制御装置６４（以下、責任メモリ制御装置）が、自身がフラッシュ・コマンドのコヒーレンス管理責任を受諾することを示すスヌープ応答（これは単にヌル・スヌープ応答であってもよい）を提供し、フラッシュ・コマンドをそのキュー７７の１つにエンキューする。これらのスヌープ応答がノード制御装置５６により組み合わされ、"フラッシュ受諾"組み合わせ応答（例えばヌル組み合わせ応答）が生成され、これがノード制御装置５６により全てのスヌーパに提供される。重要な点は、組み合わせ応答により、責任メモリ制御装置６４が、フラッシュ・コマンドがこのリモート・ノード５２で完了されることを保証する責任を受諾したことが示されるので、ノード制御装置５６はブロック２６８で、フラッシュ・コマンドに割当てられたキュー５７を割当て解除し、この資源を他の命令のために解放する。
【００８１】
次に、ブロック２７０で、責任メモリ制御装置６４のＲＭＣ制御装置７３が、そのＲＭＤ７４内の包含関係情報を参照することにより、フラッシュ・アドレスに関連付けられるキャッシュ・ラインの有効コピーが、いずれかのローカル・キャッシュ階層６２内に保持されるか否かを判断する。保持される場合、プロセスはブロック２７２に移行し、ＲＭＣ制御装置７３がフラッシュ・コマンドをローカル相互接続５８上に再発行し、フラッシュ・アドレスに関連付けられるキャッシュ・ラインの局所的に保持されるコピーの無効化を強要する。フラッシュ・コマンドのスヌープに応答して、キャッシュ階層６２及び他のメモリ制御装置６４がスヌープ応答を提供する。前述のように、ターゲット・キャッシュ・ラインの有効コピーを保持しないキャッシュ階層６２は、ヌル・スヌープ応答を提供し、ターゲット・キャッシュ・ラインの有効コピーを保持するキャッシュ階層６２は、ターゲット・キヤッシュラインが無効化され、変更データが存在する場合、それがホーム・ノードに書戻されるまで、フラッシュ・コマンドに対して再試行スヌープ応答を提供する。これらのスヌープ応答は、責任メモリ制御装置６４に関連付けられるインタフェース・ユニット６５内の応答論理６３により組み合わされる。ブロック２７４で示されるように、組み合わせ応答が再試行組み合わせ応答の場合、少なくとも１つのキャッシュ階層６２が依然、ターゲット・キャッシュ・ラインのコピーを無効化処理中か、変更データをホーム・ノード５２に書戻し処理中であることを示し、プロセスは前述のブロック２７２に戻る。しかしながら、ヌル組み合わせ応答が受信される場合には、フラッシュ・プロセスがリモート・ノード５２において完了したことを示し、プロセスはブロック２７４からブロック２７５に進む。
【００８２】
ブロック２７５では、ＲＭＣ制御装置７３がＲＭＤ７４を参照して、その関連ＲＭＣ７０が、フラッシュ・アドレスにより識別されるキャッシュ・ラインの有効コピーを保持するか否かを判断する。保持しない場合、プロセスは後述のブロック２７６に進む。しかしながら、ＲＭＣ７０がフラッシュ・コマンドのターゲット・キャッシュ・ラインの有効コピーを保持する場合、ＲＭＣ制御装置７３はＲＭＣ７０内のターゲット・キャッシュ・ラインを無効化し、ブロック２７７で示されるように、変更データが存在する場合、それをホーム・ノード５２のシステム・メモリに書戻す。
【００８３】
プロセスは次にブロック２７７からブロック２７６に進み、ＲＭＣ制御装置７３がフラッシュ命令の局所的完了を示すフラッシュＡＣＫ命令をローカル相互接続５８上に発行し、フラッシュ・コマンドの処理に割当てられたキュー７７を割当て解除する。ブロック２７８で示されるように、ノード制御装置５６はフラッシュＡＣＫ命令を一時的にエンキューし、それをホーム・ノード５２に転送し、ホーム・ノードのメモリ制御装置６４に、フラッシュ命令がリモート・ノード５２において完了したことを示す。その後、図１３に示されるプロセスはブロック２８０で完了する。
【００８４】
図１３のプロセスにより示されるように、本発明は、グローバル・コヒーレンス管理の責任をノード制御装置からメモリ制御装置に譲渡することにより、ノード制御装置設計の単純化を可能にする一方で、同時にサービスされるグローバル・コヒーレンス管理命令の数を増加させる。このインプリメンテーションは、ＲＭＣ制御装置７３により提供されるキューの大きなプールの存在を仮定すると、非常に多数の同時コヒーレンス管理命令のサポートを可能にするだけでなく、処理ユニット５４の数の増加に伴い、スケーリングし、それにより潜在的な性能障害を解決する。
【００８５】
分散グローバル・コヒーレンス管理：
本発明は、ノード制御装置による集中コヒーレンス管理ではなく、メモリ制御装置による非集中コヒーレンス管理を推進するだけでなく、選択命令に対するグローバル・コヒーレンス管理の責任を、複数の制御装置の間で分散することにより、キュー資源の効率的な利用を推進する。
【００８６】
図１のＮＵＭＡコンピュータ・システム８などの、従来のＮＵＭＡコンピュータ・システムでは、読出しタイプの要求（例えばＲＥＡＤ、ＲＷＩＴＭなど）がリモート・ノードから受信されてから、要求キャッシュ・ラインがリモート・ノードにより成功裡に受信されるまで、ホーム・ノードのノード制御装置２４内のコヒーレンス管理キュー３２が、その読出しタイプの要求に割当てられる。ノード制御装置はこの期間を通じて、キュー割当てを保持しなければならない。なぜなら、ノード制御装置２４は、前の要求のターゲット・キャッシュ・ラインがリモート・ノードに配信されるまで、同じキャッシュ・ラインをターゲットとするフラッシュ命令をホーム・ノードから発行できないからである。換言すると、従来のＮＵＭＡコンピュータ・システムでは、グローバル・コヒーレンスを維持するために、ホーム・ノードのノード制御装置が、最初の要求、及び続く要求によるフラッシュ命令に応答して、リモート・ノードへのデータ配信を厳密に順序付ける責任を負い、従って、要求データが成功裡にリモート・ノードに配信されるまで、第１の要求へのキューの割当てを維持しなければならない。
【００８７】
本発明は、特殊コマンド（以下Ｎｕｍａｆｙコマンドと称す）をインプリメントすることにより、前述の従来のコヒーレンス管理手法を改善する。このコマンドは、グローバル・コヒーレンス管理の責任を制御装置間で譲渡し、それにより、従来のＮＵＭＡコンピュータ・システムの性能を妨げる順序付け及びキューイング要件を排除する。本発明のＮｕｍａｆｙコマンドの典型的な利用のタイミング図が図１４に示される。
【００８８】
図１４を参照すると、リモート・ノードによる読出しタイプの要求をサービスするために使用される、ＮＵＭＡコンピュータ・システム５０のリモート・ノード及びホーム・ノードのローカル相互接続上の命令を示す時間−空間図が示される。図示のプロセスは、図６に関連して前述した革新的な読出し再発行方向を採用する。
【００８９】
図示のように、リモート・ノード５２（図１４ではノード１として示される）内の低レベル・キャッシュ１３２のキャッシュ制御装置１５６が、別のノードがホーム・ノード５２であるキャッシュ・ラインの排他アクセスを得るために、読出しタイプの要求（この場合ＲＷＩＴＭ要求３００）を、そのローカル相互接続５８上に発行するときプロセスは開始する。前述のように、キャッシュ制御装置１５６が、そのキャッシュ・ディレクトリ１４０内でのＣＰＵストア要求のミスに応答して、ＲＷＩＴＭ要求３００を発行する。ＲＷＩＴＭ要求３００内では、ＮＣＱフィールド１２６が初期に０にセットされ、従って、ローカル・ノード制御装置５６は、ＲＷＩＴＭ要求３００が局所的にサービスされないと決定されるまで、ＲＷＩＴＭ要求３００をエンキューしない。ＲＷＩＴＭ要求はまた、キャッシュ制御装置１５６の要求キュー１３４の１つにエンキューされる。
【００９０】
ＲＷＩＴＭ要求３００のスヌープに応答して、ローカル相互接続５８に結合されるスヌーパ（すなわちキャッシュ制御装置１５６、メモリ制御装置６４、及びノード制御装置５６）が、スヌープ応答３０２を提供し、これらがＲＷＩＴＭ要求３００を発信したインタフェース・ユニット６５内の応答論理６３により組み合わされて、組み合わせ応答３０４が生成され、全てのスヌーパに提供される。図１４に示される典型的な動作状況は、ノード１内のスヌーパがターゲット・キャッシュ・ラインへの排他アクセスを提供できず、ＲＷＩＴＭ要求３００のターゲット・アドレスがリモート・アドレスであると、組み合わせ応答３０４が示すと仮定する。組み合わせ応答３０４に応答して、ターゲット・キャッシュ・ラインの共用コピーを有する他のローカル・キャッシュ階層６２またはＲＭＣ７０が、ターゲット・キャッシュ・ラインのそのコピーの無効化プロセスを開始し、キャッシュ制御装置１５６がＮＣＱフィールド１２６が１にセットされたＲＷＩＴＭ要求３０６を再発行する。ローカル相互接続５８に結合されるスヌーパが、スヌープ応答３０８を提供することにより、再発行されたＲＷＩＴＭ要求３０６に応答し、これらが組み合わされて、第２の組み合わせ応答３１０が生成される。
【００９１】
図６に関連して述べたように、ノード１のノード制御装置５６はＲＷＩＴＭ要求を、そのサービスのためにノード２（すなわちターゲット・キャッシュ・ラインのホーム・ノード）に転送し、ノード制御装置応答を組み合わせ応答３１０を介して、キャッシュ１３２に提供することにより要求が転送されたことを示す。組み合わせ応答３１０の受信に際して、キャッシュ制御装置１５６は、要求されたＲＷＩＴＭ要求に関連付けられるローカル・フラグ１３６（図５参照）をセットする。ローカル・フラグ１３６は、このキャッシュ１３２がターゲット・キャッシュ・ラインの局所的所有権を獲得したことを示し、従って、保護ウィンドウＴ０の間に、キャッシュ・ラインを要求する他のローカル・リクエスタが存在する場合、そうした要求に対して再試行スヌープ応答を提供することにより、彼らからターゲット・キャッシュ・ラインの所有権を保護する。しかしながら、キャッシュ制御装置１５６がホーム・ノードからのフラッシュ命令をスヌープする場合、キャッシュ制御装置１５６はフラッシュ命令を無視する。なぜなら、キャッシュ１３２はまだターゲット・キャッシュ・ラインの有効コピー、またはターゲット・キャッシュ・ラインのグローバル所有権を有さないからである。この時点で、キャッシュ制御装置１５６はホーム・ノードから、１）ターゲット・キャッシュ・ラインと、２）ターゲット・キャッシュ・ラインのグローバル所有権が付与されたことを示すＮｕｍａｆｙコマンドの受信を待機する。動的動作状態に応じて、キャッシュ制御装置１５６はターゲット・キャッシュ・ライン及びＮｕｍａｆｙコマンドを任意の順序で受信する。
【００９２】
図示のように、ノード相互接続５５を介するＲＷＩＴＭ要求の受信に応答して、ノード２のノード制御装置５６は、対応するＲＷＩＴＭ要求３２０をノード２のローカル相互接続５８上に発行する。ノード２内のスヌーパが適切なスヌープ応答３２２を提供し、これらがノード制御装置５６により組み合わされて、ＲＷＩＴＭ要求３２０が、ターゲット・キヤッシュライン・データが存在するシステム・メモリ・アドレス空間６８に関連付けられるメモリ制御装置６４によりサービスされることを示す組み合わせ応答３２４が生成される。一旦メモリ制御装置６４がＲＷＩＴＭ要求３２０を受諾し、そのメモリ制御装置６４のシステム・メモリ制御装置７１が、ＲＷＩＴＭ要求３２０をそのコヒーレンス管理キュー７９にエンキューすると、ＬＭＤ７２によりターゲット・キャッシュ・ラインのコピーを保持することが示される、ノード１以外の各リモート・ノード５２に対して、システム・メモリ制御装置７１がフラッシュ・コマンド３３０を発行する。更に、システム・メモリ制御装置７１がアドレス専用Ｎｕｍａｆｙコマンド３２６をノード１に発行し、メモリ読出しキューをディスパッチして、要求データをノード１に提供する。ＬＭＤ７２が、ターゲット・キャッシュ・ラインがリモート・ノード５２からフラッシュ・バックされる必要がないと示す場合、システム・メモリ・アドレス空間６８の読出しが即時開始し、Ｎｕｍａｆｙコマンド３２６が発行される前に、ターゲット・キャッシュ・ライン・データ３３２がノード１に提供される。
【００９３】
一旦Ｎｕｍａｆｙコマンド３２６が発行されると、要求されたあらゆるフラッシュ命令が完了し、システム・メモリ読出し操作が開始される。そして、システム・メモリ制御装置７１がＲＷＩＴＭ要求３２０がサービスされるべきとみなし、たとえノード１がまだターゲット・キャッシュ・ライン・データを受信していなくても、ＲＷＩＴＭ要求３２０に割当てられたコヒーレンス管理キュー７９を、続く要求に再割当てする。従って、本発明によれば従来技術とは異なり、キャッシュ・ラインのグローバル所有権の付与、及びキャッシュ・ライン・データ３３２の配信が分離される。
【００９４】
ノード相互接続５５を介するアドレス専用Ｎｕｍａｆｙコマンドの受信に応答して、ノード１のノード制御装置５６は、アドレス専用Ｎｕｍａｆｙコマンド３４０をローカル相互接続５８上に発行する。ノード１の要求元キャッシュ制御装置１５６がアドレス専用Ｎｕｍａｆｙコマンド３４０をスヌープするとき、キャッシュ制御装置１５６は、ＲＷＩＴＭ要求に関連付けられるグローバル・フラグ１３８をセットする。セットされたグローバル・フラグ１３８は、要求元キャッシュ１３２がターゲット・キャッシュ・ラインのグローバル所有権を受信したこと、従って、第２の保護ウィンドウＴ１の間に、ターゲット・キャッシュ・ラインを、他のローカル・リクエスタからだけではなく、ホーム・ノードからのあらゆるフラッシュまたはクリーン・コマンドからも保護しなければならないことを示す。それ故、保護ウィンドウＴ１の間、要求元キャッシュ制御装置１５６は、局所的に受信される、またはホーム・ノード（すなわちノード２）から受信されるあらゆるフラッシュ、クリーンまたは他の類似の命令に対して、再試行スヌープ応答を提供しなければならない。尚、保護ウィンドウＴ１は、要求元キャッシュ制御装置１５６がＲＷＩＴＭ要求のサービスを完了したとき閉じられる。
【００９５】
一旦要求元キャッシュ制御装置１５６がターゲット・キャッシュ・ライン・データ３４２を受信すると、キャッシュ制御装置１５６が保留のＣＰＵストア要求をサービスし、そのキャッシュ・ディレクトリ１４０内のターゲット・キャッシュ・ラインのコヒーレンス状態を、変更コヒーレンス状態に更新する。この時点で、ＲＷＩＴＭ要求のサービスが完了し、キャッシュ制御装置１５６がローカル・フラグ１３６及びグローバル・フラグ１３８の両方をリセットする。続いて、キャッシュ制御装置１５６は、ターゲット・キャッシュ・ラインをターゲットとするフラッシュまたはクリーン・コマンドに対して、再試行スヌープ応答を提供するが、代わりに、変更データをホーム・ノードにプッシュ・バックし、更にフラッシュ・コマンドに対しては、キャッシュ・ラインのコピーを無効化することにより、こうした要求を遵守してもよい。
【００９６】
このように、図１４は、グローバル・コヒーレンス管理をＮＵＭＡコンピュータ・システム内の制御装置間で分散させる方法を示し、これはシステムワイドなコヒーレンス管理の責任を、要求データの配信から分離することにより、システム・メモリ制御装置のコヒーレンス管理キューのより効率的な利用を推進する。その結果、システム・メモリ制御装置内のキュー資源が、システム・メモリ制御装置が要求のサービスに関わっているときだけ、その要求に割当てられ、その後、従来システムに比較して遙かに早く、他の要求のサービスのために使用可能になる（すなわち、２０００サイクル以上を費やす、少なくともノード相互接続５５の待ち時間の期間が短縮される）。結果的に、所与の性能レベルをサポートするために、少ない数のコヒーレンス管理キューが要求される。
【００９７】
ＬＭＤデータ所有権ヒストリ：
図１４に示されるように、システム・メモリ制御装置７１がリモート・ノードからＲＷＩＴＭ要求を受信すると、システム・メモリ制御装置７１はＲＷＩＴＭ要求をサービスするために、要求元ノードにターゲット・キャッシュ・ラインのシステムワイドな排他所有権を付与しなければならない。しかしながら、システム・メモリ制御装置７１がターゲット・キャッシュ・ラインのＲＥＡＤ要求を受信する場合、システム・メモリ制御装置７１はターゲット・キャッシュ・ラインの共用所有権か排他所有権のいずれかを付与する。
【００９８】
図１に示されるような従来のＮＵＭＡコンピュータ・システムでは、ＬＭＤ２６が、ターゲット・キャッシュ・ラインがいずれかのリモート・ノード１０にチェックアウトされていると示すとき、リモート・ノードからのＲＥＡＤ要求に応答して、一般に排他所有権がホーム・ノードにより付与される。このように、リモート・ノードにおけるターゲット・キャッシュ・ラインの共用コピーの不必要な無効化が回避される。しかしながら、ＬＭＤ２６が、ターゲット・キャッシュ・ラインがリモート・ノード１０にチェックアウトされてないと示す場合には、２つの異なるインプリメンテーションが採用された。
【００９９】
第１の従来のインプリメンテーションでは、常にホーム・ノードがＲＥＡＤ要求に応答して、ターゲット・キャッシュ・ラインの非排他所有権をリモート・ノードに付与する。このインプリメンテーションは、ターゲット・キャッシュ・ラインの遠隔的に保持されるコピーの不必要な無効化を生じないが、同じキャッシュ・ラインをターゲットとする続くストア命令に、大きな待ち時間が生じる。なぜなら、ＲＥＡＤ要求を発行したリモート・ノードが、ターゲット・キャッシュ・ラインへの排他アクセスを獲得するために、ＲＷＩＴＥ要求を発行しなければならないからである。リモート・データをターゲットとするストア命令は、長い待ち時間（例えば２０００サイクル以上）を被ることになる。
【０１００】
第２の従来のインプリメンテーションによれば、ＬＭＤ２６が、ターゲット・キャッシュ・ラインがリモート・ノードにチェックアウトされてないと示す場合、ＲＥＡＤ要求に応答して、ターゲット・キャッシュ・ラインの排他所有権を常にリモート・ノードに付与することにより、ストア命令の性能ペナルティが排除される。しかしながら、この第２のインプリメンテーションも問題を有する。なぜなら、第１のリモート・ノードが実際にキャッシュ・ラインを変更したか否かに拘わらず、ホーム・ノードが第２のリモート・ノードによる続くＲＥＡＤ要求に応答して、常にクリーン命令（すなわち、キャッシュ・ラインが変更済みの場合、その無効化は強要しないが、書戻しを強要する命令）を、排他所有権を有するリモート・ノードに発行しなければならないからである。従って、多くの場合、クリーン命令が完了するまで続くＲＥＡＤ要求が不必要に遅延される。
【０１０１】
本発明は、各ＬＭＤエントリに対して、ノードごとのヒストリ情報を保持することにより、従来技術の欠点を解決する。ヒストリ情報は、リモート・ノードによるＲＥＡＤ要求に応答して、関連キャッシュ・ラインの排他所有権または非排他所有権のいずれを付与すべきかを示す。例えば、図１５に示される好適な実施例では、ＬＭＤ７２内の各ディレクトリ・エントリ３６０が、ノードごとのコヒーレンス状態情報３６２と、ノードごとのヒストリ情報３６４の両方を含む。
【０１０２】
当業者であれば明らかなように、ノードごとのヒストリ情報３６４は、非常に多数の好適な方法のいずれかに従い、システム・メモリ制御装置７１により更新される。図１６は、ヒストリ情報３６４を更新する現在好適な１方法の状態図を示す。図示の実施例では、システム・メモリ制御装置７１が各リモート・ノードに対して、２ビット・ヒストリ指示を保持し、図１６に示される４つの可能な状態、すなわち状態Ａ、Ｂ、Ｃ及びＤを表す。システム・メモリ制御装置７１が、リモート・ノード５２から受信される各読出しタイプの要求（例えばＲＥＡＤまたはＲＷＩＴＭ）に応答して、そのリモート・ノードのヒストリ状態を更新する。リモート・ノード５２が、関連システム・メモリ・アドレス空間６８に内在するデータのキャッシュ・ラインに対するＲＥＡＤ要求を発行するとき、システム・メモリ制御装置７１は、そのキャッシュ・ライン及びリモート・ノードのヒストリ状態を参照することにより、キャッシュ・ラインの非排他所有権または排他所有権のいずれを付与すべきかを決定する。システム・メモリ制御装置７１により付与される所有権のタイプは、例えば、所有権を付与するために使用されるＮｕｍａｆｙコマンド内の排他フラグにより示される。
【０１０３】
図１６に示されるように、システム・メモリ制御装置７１は、ＬＭＤ７２の各ディレクトリ・エントリ３６０内の各リモート・ノード５２のヒストリ状態を、ヒストリ状態Ａに初期化する。その後、状態Ａから状態Ｂへの遷移、及び状態Ｂでのループにより示されるように、システム・メモリ制御装置７１は、リモート・ノード５２がＲＷＩＴＭ要求を発行することにより、キャッシュ・ラインの排他所有権を獲得するまで、そのキャッシュ・ラインの非排他所有権をそのリモート・ノード５２に付与する。
【０１０４】
ＲＷＩＴＭ要求の受信に応答して、システム・メモリ制御装置７１はターゲット・キャッシュ・ラインの排他所有権を付与し、要求元リモート・ノードのヒストリ状態を、任意の可能なヒストリ状態Ａ乃至Ｄから、状態Ｃに更新する。状態ＣとＤの間、及び状態ＤとＢの間の可能な遷移により示されるように、システム・メモリ制御装置７１はその後、同一のリモート・ノード５２による２つまでの順次ＲＥＡＤ要求に応答して、キャッシュ・ラインの排他所有権を付与する。同一のキャッシュ・ラインに対する第３の順次ＲＥＡＤ要求が、同一のリモート・ノードから受信される場合、システム・メモリ制御装置７１は、リモート・ノードがそのキャッシュ・ラインに対して再度ＲＷＩＴＭを発行するまで、非排他所有権を付与するだけである。
【０１０５】
ノードごとのヒストリ状態情報を用いて、リモート・ノードからのＲＥＡＤ要求に関わるターゲット・キャッシュ・ラインの、排他所有権または非排他所有権の付与を決定することにより、従来技術に比較して、同一のリモート・ノード内の続くストア命令に関連付けられる、または他のリモート・ノードによるＲＥＡＤ要求に関連付けられる不必要な待ち時間が、大幅に低減される。結果的に、ＮＵＭＡコンピュータ・システム５０の全体性能が改善される。
【０１０６】
データ及び命令のプリフェッチ：
図１のＮＵＭＡコンピュータ・システム８などの、従来のＮＵＭＡコンピュータ・システムでは、データ及び命令のプリフェッチ要求が、ＣＰＵのプリフェッチ・エンジンにより開始され、次にＣＰＵの最下レベルのインライン・キャッシュのキャッシュ制御装置により、プリフェッチされる各キャッシュ・ラインに対して、１つのＲＥＡＤ要求がローカル相互接続上に発行される。深いプリフェッチ・アルゴリズムでは、この従来のプリフェッチ手法は、キャッシュ制御装置に非常に多くの読出しキューを装備することが要求される。大規模なマルチプロセッサ・システムでは、これらの資源のコストが、もちろんＣＰＵチップの数だけ乗算され、従って、総システム・コストの大きな割合を占めることになる。
【０１０７】
プリフェッチ・データの発信元（例えばローカル・システム・メモリか、または別のノードのシステム・メモリか）に応じて、プリフェッチ要求に割当てられる読出しキューは、長い期間アクティブ（ビジー）でいられる。明らかに、性能的観点から、要求時読出し要求のサービスを遅延することは望ましくない。なぜなら、全ての読出しキューがプリフェッチ要求に割当てられているからである。要求時読出し要求とプリフェッチ読出し要求との間の、読出し要求の競合を解決するために、プリフェッチ読出しキューの別のセットを生成することが可能である。しかしながら、これは追加のコスト及び複雑化を招き、読出し要求をプリフェッチするために割当てられたキューがビジーでいる期間を低減しない。
【０１０８】
本発明は、従来技術における前述の欠点を、改善されたプリフェッチ手法を導入することにより解決し、そこではプリフェッチ命令がキャッシュ制御装置ではなく、メモリ制御装置により作成される。本発明によれば、初期要求時データ・ロードまたは命令フェッチが要求元処理ユニットにより発行されるとき、プリフェッチ・ヒント情報がＲＥＡＤ命令に付加される。このヒント情報が例えば、プリフェッチする多数のキャッシュ・ラインと、キャッシュ・ライン間のストライドを含む。読出しの受信に応答して、メモリ制御装置が要求データまたは命令を送信し、次にプリフェッチ・ヒントを用いて、任意的にＷＲＩＴＥ命令により、プリフェッチ・データを要求元処理ユニットに送信する。
【０１０９】
次に図１７を参照すると、本発明のプリフェッチ手法に従い、低レベル・キャッシュ１３２のキャッシュ制御装置１５６が、付加されたプリフェッチ・ヒントを有する要求時ＲＥＡＤ要求を発行する典型的な方法のハイレベル論理フローチャートが示される。図示のように、プロセスはブロック３８０で開始し、その後、キャッシュ制御装置１５６が、その関連ＣＰＵ６０からロード要求を受信するまでブロック３８２に留まる。ロード要求の受信に応答して、キャッシュ制御装置１５６はブロック３８４で、ロード要求がそのキャッシュ・ディレクトリ１４０内でヒットするか否かを判断する。ヒットする場合、ブロック３８６で、キャッシュ制御装置１５６は要求データをデータ記憶１３０から読出し、要求データをＣＰＵ６０に提供する。プロセスはその後ブロック３８２に戻る。
【０１１０】
ブロック３８４に戻り、キャッシュ制御装置１５６が、ロード要求がキャッシュ・ディレクトリ１４０内でミスしたと判断すると、ブロック３９０及び３９２で示されるように、キャッシュ制御装置はそのロード要求にもとづき、ＲＥＡＤ要求を生成し、プリフェッチ要求に含まれるプリフェッチ・ヒントが存在する場合、それをＲＥＡＤ要求に付加するか、ＲＥＡＤ要求内に含む。図７に示されるように、プリフェッチ・ヒントはＲＥＡＤ要求内のプリフェッチ（ＰＦ）フィールド１２８により伝達され、プリフェッチされるキャッシュ・ラインの数、及びプリフェッチ・キャッシュ・ライン間のアドレス・ストライドを指定する。次に、キャッシュ制御装置１５６が要求キュー１３４をＲＥＡＤ要求に割当て、ブロック３９４で示されるように、ＲＥＡＤ要求をそのローカル相互接続５８上に発行し、その後ブロック３９６で、要求データの返却を待機する。図７に関連して前述したように、ＲＥＡＤ要求は好適には、発行元キャッシュ制御装置１５６またはその処理ユニット５４を識別する発信元タグ・フィールド１１９を含む。
【０１１１】
ブロック３９８で示されるように、ＲＥＡＤ要求のターゲットである要求キャッシュ・ラインが受信されると、キャッシュ制御装置１５６はキャッシュ・ラインをデータ記憶１３０内に記憶し、キャッシュ・ディレクトリ１４０を更新し、ＲＥＡＤ要求に割当てられた要求キュー１３４を割当て解除し、ロード要求により要求されたデータを関連ＣＰＵ６０に提供する。その後、図１７に示されるプロセスは前述のブロック３８２に戻る。
【０１１２】
次に図１８を参照すると、本発明に従い、メモリ制御装置６４がプリフェッチ・ヒントを含むＲＥＡＤ要求に応答する典型的な方法のハイレベル論理フローチャートが示される。図示のように、プロセスはブロック４００で開始し、その後ブロック４０２で、メモリ制御装置６４が、より詳細にはシステム・メモリ制御装置７１がＲＥＡＤ要求（図１７のブロック３９４で発行される）を受信するまで繰り返される。ＲＥＡＤ要求の受信に応答して、プロセスはブロック４０４に進み、ここでシステム・メモリ制御装置７１がＬＭＤ７２を参照して、ＲＥＡＤ要求のターゲット・キャッシュ・ラインが、リモート・ノード５２により排他的に保持されるか否かを判断する。否定の場合、プロセスは直接ブロック４０８に進む。しかしながら、ＬＭＤ７２がターゲット・キャッシュ・ラインが遠隔的に排他的に保持されると示す場合、システム・メモリ制御装置７１は、好適には図１３に関連して前述したプロセスに従い、リモート・ノードからそのキャッシュ・ラインをフラッシュする。
【０１１３】
次にブロック４０８で、システム・メモリ制御装置７１がターゲット・キャッシュ・ラインを関連システム・メモリ・アドレス空間６８から読出し、要求キャッシュ・ラインを要求元キャッシュ１３２に発信する。更に、ブロック４１０で示されるように、システム・メモリ制御装置７１は、ＲＥＡＤ要求がそのプリフェッチ・フィールド１２８にプリフェッチ・ヒントを含むか否かを判断する。含まない場合、ＲＥＡＤ要求のサービスが完了し、プロセスは前述のブロック４０２に戻る。しかしながら、ＲＥＡＤ要求がそのプリフェッチ・フィールド１２８にプリフェッチ・ヒントを含む場合には、システム・メモリ制御装置７１はブロック４１２で、プリフェッチ要求に割当てられ得るそのキュー７９の１つが使用可能か否か、或いは、こうした全てのプリフェッチ・キューがビジーか否かを判断する。プリフェッチ要求に割当てられ得る全てのキューがビジーの場合、システム・メモリ制御装置７１はプリフェッチ・ヒントを無視し、プロセスはブロック４０２に戻る。従って、システム・メモリ制御装置７１がプリフェッチ・データを提供するオプションを有するが、プリフェッチ・ヒントが無視される場合、ＲＥＡＤ要求を再試行しないという点で、システム・メモリ制御装置７１によるプリフェッチ要求のサービスは、好適には不正確である。
【０１１４】
ブロック４１２に戻り、キュー７９の１つがプリフェッチ要求への割当てのために使用可能と仮定すると、プロセスはブロック４１４に進み、システム・メモリ制御装置７１がキュー７９の中から、プリフェッチ要求をサービスするためのプリフェッチ・キューを割当てる。ブロック４１６及び４１８で示されるように、システム・メモリ制御装置７１は次に、プリフェッチ・フィールド１２８内のプリフェッチ・ヒントにより指定されるプリフェッチ・データの１つ以上のキャッシュ・ラインを、関連システム・メモリ・アドレス空間６８から読出し、それらを要求元キャッシュ１３２に送信する。ここで重要な点は、各キャッシュ・ラインが読出しデータとしてではなく、図１０に示されるそれと類似のプリフェッチ（ＰＦ）ＷＲＩＴＥ命令において、要求元キャッシュ１３２に送信されることであり、それにより、プリフェッチ要求を管理するための読出しキューの使用が排除される。プリフェッチＷＲＩＴＥ命令の正確なルーティングを保証するために、システム・メモリ制御装置７１はＲＥＡＤ要求の発信元タグ・フィールド１１９の内容を、プリフェッチＷＲＩＴＥ命令のアドレス部分の宛先タグ・フィールド２４２に配置する。プリフェッチ・データのキャッシュ・ラインを要求元キャッシュ階層６２に送信後、システム・メモリ制御装置７１はブロック４２０で、割当てられたプリフェッチ・キューを、キュー７９の中から割当て解除する。その後、プロセスはブロック４０２に戻る。
【０１１５】
次に図１９を参照すると、本発明に従い、要求元キャッシュがスヌープされたプリフェッチＷＲＩＴＥ命令を処理する典型的な方法のハイレベル論理フローチャートが示される。図示のように、プロセスはブロック４３０で開始し、その後ブロック４３２で、キャッシュ階層６２の１つ内の最下レベル・キャッシュ１３２が、プリフェッチ（ＰＦ）ＷＲＩＴＥ命令をそのローカル相互接続５８上でスヌープするまで繰り返される。ローカル相互接続５８上でのプリフェッチＷＲＩＴＥ命令のスヌープに応答して、キャッシュ１３２のキャッシュ制御装置１５６は、プリフェッチＷＲＩＴＥ命令の宛先タグ・フィールド２４２を調査し、それがプリフェッチＷＲＩＴＥ命令のターゲットか否かを判断する。ターゲットでない場合、プロセスは終了しブロック４３２に戻る。
【０１１６】
ブロック４３４に戻り、宛先タグ・フィールド２４２が、キャッシュ１３２がスヌープされたプリフェッチＷＲＩＴＥ命令のターゲットであると示す場合、キャッシュ制御装置１５６は、そのスヌープ・キュー１３５（図５参照）の１つが、プリフェッチＷＲＩＴＥ命令への割当てのために使用可能か否かを判断する。プリフェッチＷＲＩＴＥ命令に割当てられ得る全てのスヌープ・キュー１３５がビジーの場合、プロセスは終了しブロック４３２に戻る。これはすなわち、スヌープ・キュー１３５が使用不能な場合、キャッシュ制御装置１５６がプリフェッチ・データを受諾しないか、再試行スヌープ応答を発行しないことを示す。しかしながら、スヌープ・キュー１３５の１つがプリフェッチＷＲＩＴＥ命令への割当てのために使用可能な場合、キャッシュ制御装置１５６はブロック４３８で、スヌープ・キュー１３５の１つをプリフェッチＷＲＩＴＥ命令に割当て、次にブロック４４０で、プリフェッチ・データのキャッシュ・ラインの配信を待機する。次に、プリフェッチ・データのキャッシュ・ラインの受信に応答して、キャッシュ制御装置１５６がプリフェッチ・データをデータ記憶１３０に記憶し、適宜キャッシュ・ディレクトリ１４０を更新する。その後、キャッシュ制御装置１５６は、プリフェッチＷＲＩＴＥ命令に割当てられたスヌープ・キュー１３５を割当て解除し、プロセスは前述のブロック４３２に戻る。
【０１１７】
図１７乃至図１９に示されるプリフェッチ方法は、従来技術に回る多くの利点を提供する。第１に、本発明のプリフェッチ方法は、要求元処理ユニット内のプリフェッチ読出しキューを排除することにより、全体的なシステム・キューのコストを削減する。プリフェッチＷＲＩＴＥ命令を処理するためのメモリ制御装置キューの付随的な追加は、一般にコストがかからず、あらゆる低レベル・キャッシュ内にキューを提供するよりも少ないキューしか要求しない。第２に、プリフェッチが不正確な命令によりインプリメントされるので、メモリ制御装置またはキャッシュ制御装置のいずれかがビジーの場合、プリフェッチ・ヒントが安全に無視される。その結果、再試行応答に応答して再発行されるプリフェッチ命令によるバス・トラフィックが排除される。第３に、本発明では、キューがより効率的に使用される。なぜなら、プリフェッチＷＲＩＴＥ命令をサービスするために割当てられる、要求元キャッシュ制御装置のスヌープ・キューが、従来技術において使用されるプリフェッチ読出しキューよりも遙かに短い期間ビジーであるからである。換言すると、プリフェッチＲＥＡＤ要求が発行されてから、要求プリフェッチ・データがシステム・メモリから受信されるまで、アクティブに維持されなければならない従来のプリフェッチ読出しキューと異なり、本発明では、プリフェッチＷＲＩＴＥ命令がスヌープされるまで、キャッシュ制御装置のスヌープ・キューが割当てられない。
【０１１８】
結論：
以上述べたように、本発明は、改善されたデータ記憶、キューイング、及び通信効率を有するＮＵＭＡコンピュータ・システム及びその操作方法を提供する。本発明は特に、好適な実施例に関連して述べられてきたが、当業者であれば、その形態及び詳細における様々な変更が、本発明の趣旨及び範囲から逸れることなく可能であることが理解できよう。例えば、ここではＮＵＭＡアーキテクチャの多数の改良が組み合わされて示されたが、改良がそれぞれ独立に、或いは部分的に組み合わされてインプリメントされてもよい。
【０１１９】
まとめとして、本発明の構成に関して以下の事項を開示する。
【０１２０】
（１）不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムであって、ノード相互接続に結合されるリモート・ノード及びホーム・ノードを含み、前記ホーム・ノードがホーム・システム・メモリを含み、記リモート・ノードが、
ローカル相互接続と、
前記ローカル相互接続と前記ノード相互接続との間に結合され、前記リモート・ノードと前記ホーム・ノードとの間で要求を伝送するノード制御装置と、
前記ローカル相互接続に結合される処理ユニット及び少なくとも１つのキャッシュと
を含み、前記処理ユニットが、
最初に前記ローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき前記読出しタイプの要求内のフラグが第１の状態にセットされ、該読出しタイプの要求が局所的にのみサービスされることを示し、
前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記フラグが第２の状態にセットされ、前記ノード制御装置に前記読出しタイプの要求を前記ホーム・ノードに送信するように命令するＮＵＭＡコンピュータ・システム。（２）前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記処理ユニットが前記フラグを前記第２の状態にセットする、前記（１）記載のＮＵＭＡコンピュータ・システム。
（３）前記ノード制御装置が複数のキューを含み、前記フラグが前記第２の状態にセットされている場合にだけ、前記ノード制御装置が前記読出しタイプの要求のためにキューを割当てる、前記（１）記載のＮＵＭＡコンピュータ・システム。
（４）前記読出しタイプの要求がread-with-intent-to-modify（ＲＷＩＴＭ）要求を含む、前記（１）記載のＮＵＭＡコンピュータ・システム。
（５）再発行された前記読出しタイプの要求に対する組み合わせ応答を受信する前に、前記ノード制御装置が前記読出しタイプの要求を前記ホーム・ノードに伝送する、前記（１）記載のＮＵＭＡコンピュータ・システム。
（６）ノード相互接続によりリモート・ノードに結合されるホーム・ノードを有する、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムの前記リモート・ノード内で使用される処理ユニットであって、前記ホーム・ノードがホーム・システム・メモリを含み、前記リモート・ノードがローカル相互接続と、前記ローカル相互接続と前記ノード相互接続との間に結合されるノード制御装置とを含み、前記処理ユニットが、
実行リソースと、
前記実行リソースに結合され、キャッシュ制御装置を含むキャッシュと
を含み、
前記キャッシュ制御装置が、前記実行リソースによるデータ要求の受信に応答して、最初に前記ローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき前記読出しタイプの要求内のフラグが第１の状態にセットされ、前記読出しタイプの要求が局所的にのみサービスされることを示し、
前記キャッシュ制御装置が、前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記フラグが第２の状態にセットされ、前記ノード制御装置に前記読出しタイプの要求を前記ホーム・ノードに送信するように命令する、処理ユニット。
（７）前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記キャッシュ制御装置が前記フラグを前記第２の状態にセットする、前記（６）記載の処理ユニット。
（８）前記読出しタイプの要求内の前記フラグの前記第２の状態が、前記ノード制御装置に前記読出しタイプの要求をエンキューするように命令する、前記（６）記載の処理ユニット。
（９）前記読出しタイプの要求がread-with-intent-to-modify（ＲＷＩＴＭ）要求を含む、前記（６）記載の処理ユニット。
（１０）前記（６）記載の処理ユニットと、
前記処理ユニットに結合されるローカル相互接続と、
前記ローカル相互接続及びノード相互接続に結合されるノード制御装置と
を含むＮＵＭＡコンピュータ・システムのノード。
（１１）ノード相互接続により結合されるリモート・ノード及びホーム・ノードを含み、前記ホーム・ノードがホーム・システム・メモリを含む、不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムを操作する方法であって、
前記リモート・ノードのローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき前記読出しタイプの要求内のフラグが第１の状態にセットされ、該読出しタイプの要求が局所的にのみサービスされることを示すステップと、
前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記フラグが第２の状態にセットされ、前記リモート・ノードのノード制御装置に、前記読出しタイプの要求を前記ホーム・ノードに送信するように命令するステップと
を含む方法。
（１２）前記読出しタイプの要求を再発行するステップが、前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記フラグを前記第２の状態にセットして、前記読出しタイプの要求を再発行するステップを含む、前記（１１）記載の方法。
（１３）前記リモート・ノードの前記ノード制御装置が複数のキューを含み、前記フラグが前記第２の状態にセットされていることにだけ応答して、前記ノード制御装置が前記読出しタイプの要求のためにキューを割当てるステップを含む、前記（１１）記載の方法。
（１４）前記読出しタイプの要求を発行するステップが、read-with-intent-to-modify（ＲＷＩＴＭ）要求を発行するステップを含む、前記（１１）記載の方法。
（１５）再発行された前記読出しタイプの要求に対する組み合わせ応答を受信する前に、前記ノード制御装置が前記読出しタイプの要求を前記ホーム・ノードに伝送するステップを含む、前記（１１）記載の方法。
【図面の簡単な説明】
【図１】従来技術によるＮＵＭＡコンピュータ・システムのブロック図である。
【図２】システム・メモリ内に組み込まれるリモート・メモリ・キャッシュ（ＲＭＣ）を有する、本発明に従うＮＵＭＡコンピュータ・システムの典型的な実施例を示す図である。
【図３】システム・メモリ内に組み込まれるリモート・メモリ・キャッシュ（ＲＭＣ）及び関連リモート・メモリ・ディレクトリ（ＲＭＤ）を有する、本発明に従うＮＵＭＡコンピュータ・システムの典型的な実施例を示す図である。
【図４】図２または図３のＮＵＭＡコンピュータ・システム内のメモリ制御装置の詳細ブロック図である。
【図５】図２または図３のＮＵＭＡコンピュータ・システム内の低レベル・キャッシュの詳細ブロック図である。
【図６】本発明に従い、ＮＵＭＡコンピュータ・システムの別のノードからデータを要求する、読出しタイプ要求を発行する典型的な方法のハイレベル論理フローチャートである。
【図７】本発明に従う典型的な読出しタイプ要求を示す図である。
【図８】本発明に従い、リモート・ノードから、共用コヒーレンス状態の犠牲キャッシュ・ラインを割当て解除する典型的な方法のハイレベル論理フローチャートである。
【図９】本発明に従い、ＮＵＭＡコンピュータ・システムのリモート・ノードから、変更済みコヒーレンス状態の犠牲キャッシュ・ラインを割当て解除する典型的な方法のハイレベル論理フローチャートである。
【図１０】図９の方法で使用される典型的なキャストアウト書込み命令を示す図である。
【図１１】本発明に従い、フラッシュ照会により、ＮＵＭＡコンピュータ・システムのリモート・ノード内に保持されるキャッシュ・ラインの割当て解除を要求するハイレベル論理フローチャートである。
【図１２】本発明に従い、フラッシュ照会により、ＮＵＭＡコンピュータ・システムのリモート・ノード内に保持されるキャッシュ・ラインの割当て解除を要求すハイレベル論理フローチャートである。
【図１３】本発明に従い、非集中コヒーレンス管理を用いて、ＮＵＭＡコンピュータ・システムのリモート・ノード内で、フラッシュ命令を実行する典型的な方法のハイレベル論理フローチャートである。
【図１４】Ｎｕｍａｆｙコマンドの使用により、読出しタイプの命令のターゲット・キャッシュ・ラインのグローバル・コヒーレンス管理の責任を譲渡する、時間−空間図である。
【図１５】図２または図３のＮＵＭＡコンピュータ・システム内のローカル・メモリ・ディレクトリ（ＬＭＤ）の典型的なディレクトリ・エントリを示す図である。
【図１６】ＮＵＭＡコンピュータ・システムのシステム・メモリ制御装置が、読出しタイプの要求に応答して、ローカル・メモリ・ディレクトリ（ＬＭＤ）内のリモート・ノードのヒストリ情報を更新する典型的な方法を示す状態図である。
【図１７】本発明の好適な実施例に従い、ＮＵＭＡコンピュータ・システムのシステム・メモリ制御装置がデータ及び命令のプリフェッチを制御する典型的な方法を示すハイレベル論理フローチャートである。
【図１８】本発明の好適な実施例に従い、ＮＵＭＡコンピュータ・システムのシステム・メモリ制御装置がデータ及び命令のプリフェッチを制御する典型的な方法を示すハイレベル論理フローチャートである。
【図１９】本発明の好適な実施例に従い、ＮＵＭＡコンピュータ・システムのシステム・メモリ制御装置がデータ及び命令のプリフェッチを制御する典型的な方法を示すハイレベル論理フローチャートである。
【符号の説明】
１１、５８  ローカル相互接続
２０、６４  メモリ制御装置（ＭＣ）
２２、６６  システム・メモリ（Ｍ）
２４、５６  ローカル・ノード制御装置（ＮＣ）
２６、７２  ローカル・メモリ・ディレクトリ（ＬＭＤ）
２８、７０  リモート・メモリ・キャッシュ（ＲＭＣ）
３０、７４  リモート・メモリ・ディレクトリ（ＲＭＤ）
３２、５７  キュー
６１  ディレクトリ消し込み論理（ＳＬ）
６３  応答論理（ＲＬ）
６８  システム・メモリ・アドレス空間
７７  キュー
７９  コヒーレンス管理キュー
１４２  合同クラスのセット
１４４  ディレクトリ・エントリ
【図１】
0003900478.tif 000002
【図２】
0003900478.tif 000003
【図３】
0003900478.tif 000004
【図４】
0003900478.tif 000005
【図５】
0003900478.tif 000006
【図６】
0003900478.tif 000007
【図７】
0003900478.tif 000008
【図８】
0003900478.tif 000009
【図９】
0003900478.tif 000010
【図１０】
0003900478.tif 000011
【図１１】
0003900478.tif 000012
【図１２】
0003900478.tif 000013
【図１３】
0003900478.tif 000014
【図１４】
0003900478.tif 000015
【図１５】
0003900478.tif 000016
【図１６】
0003900478.tif 000017
【図１７】
0003900478.tif 000018
【図１８】
0003900478.tif 000019
【図１９】
0003900478.tif 000020