JP3924204B2 - 分散グローバル・コヒーレンス管理を有する不均等メモリ・アクセス(numa)コンピュータ・システム - Google Patents

分散グローバル・コヒーレンス管理を有する不均等メモリ・アクセス(numa)コンピュータ・システム Download PDF

Info

Publication number
JP3924204B2
JP3924204B2 JP2002164530A JP2002164530A JP3924204B2 JP 3924204 B2 JP3924204 B2 JP 3924204B2 JP 2002164530 A JP2002164530 A JP 2002164530A JP 2002164530 A JP2002164530 A JP 2002164530A JP 3924204 B2 JP3924204 B2 JP 3924204B2
Authority
JP
Japan
Prior art keywords
node
data
request
remote
home
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2002164530A
Other languages
English (en)
Other versions
JP2003030170A (ja
Inventor
ラビ・クマー・アリミリ
ジョン・スティーブン・ドッドソン
ジェームス・スティーブン・フィールズ・ジュニア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2003030170A publication Critical patent/JP2003030170A/ja
Application granted granted Critical
Publication of JP3924204B2 publication Critical patent/JP3924204B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は一般にデータ処理システムに関し、特に、改善されたキューイング、通信及び記憶効率を有する不均等メモリ・アクセス(NUMA:non-uniform memory access)及び他のマルチプロセッサ・データ処理システムに関する。
【0002】
【従来の技術】
コンピュータ技術では、複数の個々のプロセッサの処理能力をタンデムに結合することにより、偉大なコンピュータ・システム性能が達成されることが知られている。マルチプロセッサ(MP)コンピュータ・システムは、多数の異なるトポロジにより設計され、各アプリケーションの性能要求及びソフトウェア環境に応じて、様々なトポロジが特定のアプリケーションにとって、より好適となり得る。1つの一般的なMPコンピュータ・トポロジは、対称マルチプロセッサ(SMP)構成であり、そこでは複数のプロセッサの各々が、システム・メモリや入出力(I/O)サブシステムなどの、共通資源のプール(pool)を共用する。これらの共通資源は一般に、共用システム相互接続に結合される。こうしたコンピュータ・システムは対称型と呼ばれる。なぜなら、SMPコンピュータ・システム内の全てのプロセッサが、理想的には、共用システム・メモリ内に記憶されるデータに対して、同一のアクセス待ち時間を有するからである。
【0003】
SMPコンピュータ・システムは、比較的単純なプロセッサ間通信及びデータ共用方式の使用を可能にするが、SMPコンピュータ・システムは限られたスケーラビリティを有する。換言すると、典型的なSMPコンピュータ・システムの性能は、一般に、スケール(すなわち、より多くのプロセッサの追加)に伴い改善されると期待されるが、これらの共用資源の利用が最適化されるインプリメンテーション依存のサイズを超えて、SMPをスケーリングしても、固有バス、メモリ、及び入出力(I/O)の帯域幅制限が、大きな利点の獲得を阻害する。従って、システムのスケールが増大するとき、SMPトポロジそのものがある程度の帯域幅制限を受け、これは特にシステム・メモリにおいて顕著である。SMPコンピュータ・システムはまた、容易に拡張することができない。例えば、ユーザは一般に、2個または4個のプロセッサを有するSMPコンピュータ・システムを購入し、後に処理要求が増加したときに、システムを8個または16個のプロセッサに拡張することができない。
【0004】
結果的に、SMPコンピュータ・システムのスケーラビリティ及び拡張性に関する制限を解決するために、不均等メモリ・アクセス(NUMA)として知られるMPコンピュータ・システム・トポロジが登場した。図1に示されるように、従来のNUMAコンピュータ・システム8は、スイッチ12により接続される多くのノード10を含む。各ノード10は、SMPシステムとして実現され、多くの処理ユニット14が接続されるローカル相互接続11を含む。処理ユニット14は各々、中央処理ユニット(CPU)16及び関連キャッシュ階層18を含む。揮発性メモリ階層の最下レベルにおいて、ノード10は更にシステム・メモリ22を含み、これは各ノード10内で集中化されるか、図示のように処理ユニット14の間で分散される。CPU16はメモリ制御装置20を通じて、メモリ22をアクセスする。
【0005】
各ノード10は更に、それぞれのノード制御装置24を含み、これがデータ・コヒーレンスを維持し、スイッチ12を介するノード10間での要求及び応答の通信を容易にする。各ノード制御装置24は、他のノード10にキャッシュされるローカル・システム・メモリ22からのデータを識別する関連ローカル・メモリ・ディレクトリ(LMD)26と、リモート・システム・メモリから検索されるデータを一時的にキャッシュするリモート・メモリ・キャッシュ(RMC)28と、RMC28の内容のディレクトリを提供するリモート・メモリ・ディレクトリ(RMD)30とを有する。
【0006】
本発明は、図1に示される従来のNUMAアーキテクチャが、従来のSMPアーキテクチャに勝る改善されたスケーラビリティ及び拡張性を提供できるが、従来のNUMAアーキテクチャが多数の欠点を被ることを認識する。第1に、ローカル相互接続11を介する通信に比較して、ノード間の通信に多大な待ち時間を要し、このことはノード間通信の削減が性能を改善しがちであることを意味する。結果的に、大規模なリモート・メモリ・キャッシュ28をインプリメントすることにより、ノード10間で通信されなければならないデータ・アクセス要求の数を制限することが所望されることになる。しかしながら、従来のスタティック・ランダム・アクセス・メモリ(SRAM)によるRMC28のインプリメンテーションは高価であり、実用的なRMC28のサイズを制限する。その結果、各ノードは他のノードからの限られた量のデータだけをキャッシュでき、従って、頻繁な高待ち時間ノード間データ要求を必要とすることになる。
【0007】
ノード間通信待ち時間に関連する従来のNUMAコンピュータ・システムの第2の欠点は、不要なノード間コヒーレンス通信に起因する、要求のサービス過程における遅延である。例えば、図1に示されるような従来のNUMAコンピュータ・システムは、一般に、リモート・ノードが未変更キャッシュ・ラインを黙って割当て解除することを可能にする。換言すると、リモート・ノード内のキャッシュが、キャッシュ・ラインがチェックアウトされたホーム・ノードのローカル・メモリ・ディレクトリに通知することなく、別のノードから検索される共用キャッシュ・ラインまたは無効キャッシュ・ラインを割当て解除することができる。従って、ホーム・ノードのローカル・メモリ・ディレクトリは、どのリモート・ノードが関連システム・メモリからのキャッシュ・ラインを保持するかに関して、不正確な指示を保持するだけである。その結果、あるノードでストア要求が受信されるとき、そのノードは、ホーム・ノードのローカル・メモリ・ディレクトリ内において、ターゲット・キャッシュ・ラインを保持すると示される他の全てのノードに、それらがターゲット・キャッシュ・ラインのコピーを依然キャッシュしているか否かに拘わらず、フラッシュ(すなわち無効化)命令を同報しなければならない。ある動作状況では、不要なフラッシュ命令がストア要求のサービスを遅延させ、システム性能に悪影響を及ぼすことになる。
【0008】
第3に、NUMAコンピュータ・システム8などの従来のNUMAコンピュータ・システムは、システム全体に渡り分散される様々なノード制御装置、メモリ制御装置、及びキャッシュ制御装置内に、深いキュー(すなわち項目数の多いキュー)をインプリメントする傾向があり、ノード間通信に影響を及ぼす長い待ち時間を生成し得る。各個々のキューのインプリメンテーションは安価ではあるが、従来のNUMAコンピュータ・システム全体に渡りインプリメントされる深いキューは、システム全体コストの大きな要素を表す。従って、本発明はNUMAコンピュータ・システムのキュー内の命令のペンデンシ(pendency)を低減し、またキューの利用度を向上させることにより、キュー項目数、従ってシステム・コストを低減することが有利であると認識するものである。
【0009】
【発明が解決しようとする課題】
従来のNUMAコンピュータ・システムの前述の及びその他の欠点を鑑み、本発明は、改善されたキューイング、記憶、及び通信効率を有するNUMAアーキテクチャを提供することが有用且つ望ましいものと認識する。
【0010】
【課題を解決するための手段】
本発明は、分散グローバル・コヒーレンス管理を有する不均等メモリ・アクセス(NUMA)コンピュータ・システム及び関連操作方法を提供することにより、従来技術の前述の及びその他の欠点を克服する。
【0011】
本発明の好適な実施例によれば、NUMAコンピュータ・システムが、ノード相互接続により結合されるホーム・ノードと1つ以上のリモート・ノードとを含む。ホーム・ノードは、ローカル相互接続と、ローカル相互接続とノード相互接続との間に結合されるノード制御装置と、ホーム・システム・メモリと、ローカル相互接続及びホーム・システム・メモリに結合されるメモリ制御装置とを含む。リモート・ノードからのデータ要求の受信に応答して、メモリ制御装置が要求データをホーム・システム・メモリからリモート・ノードに送信し、別の転送において、要求データに対するグローバル・コヒーレンス管理の責任を、ホーム・ノードからリモート・ノードに譲渡する。このように、グローバル・コヒーレンス管理の責任を、要求データの送達から切り離すことにより、データ要求に割当てられるメモリ制御装置のキューが早く割当て解除され、性能を向上することができる。
【0012】
本発明の前述の及びその他の目的、特徴及び利点が、以下の詳細な説明から明らかとなろう。
【0013】
【発明の実施の形態】
図2を参照すると、本発明に従うNUMAコンピュータ・システム50の典型的な実施例が示される。図示の実施例は、例えばワークステーション、サーバ、またはメインフレーム・コンピュータとして実現される。本発明は基本的に、NUMAコンピュータ・システム50に関連して述べられるが、当業者であれば、本発明の多くのフィーチャが、SMPアーキテクチャを含む他のコンピュータ・システム・アーキテクチャにも適用可能であることが理解できよう。
【0014】
図示のように、NUMAコンピュータ・システム50は、図示のようにスイッチとして実現されるノード相互接続55により結合される、2つ以上のノード52を含む。本発明により要求される訳ではないが、図示の実施例では、各ノード52が実質的に同一であり、各ノードが、ローカル相互接続58に結合される1つ以上の処理ユニット54と、ローカル相互接続58とノード相互接続55との間に結合されるノード制御装置56とを含む。各ノード制御装置56は、ローカル相互接続58上で受信される選択命令を、ノード相互接続55を介して、他のノード52に伝送することにより、及びノード相互接続55を介して受信された選択命令を、ローカル相互接続58上に伝送することにより、他のノード52のためのローカル・エージェントとして機能する。
【0015】
処理ユニット54はCPU60を含み、CPU60はレジスタ、命令フロー論理、及び実行ユニットを有し、これらはソフトウェア命令を実行するために利用される。各処理ユニット54は更に、1つ以上のレベルのオンチップ・キャッシュを含むキャッシュ階層62を含み、これはNUMAコンピュータ・システム50全体に渡るデータ記憶から関連CPU60への、データをステージするために使用される。キャッシュ階層62内で使用される好適なキャッシュ・アーキテクチャが、図5に関連して後述される。更に、処理ユニット54の各々は、処理ユニット54とローカル相互接続58との間で、アドレス、データ及びコヒーレンス命令の通信を処理するインタフェース・ユニット65を有し、また後述するように、ローカル相互接続58に上に発行される命令に対する様々なスヌープ応答からの、組み合わせ応答を決定する応答論理63を含む。最後に、処理ユニット54の各々は、メモリ制御装置64を含み、これは処理ユニット54の間で分散される物理システム・メモリ66の関連するものへのアクセスを制御する。本発明の別の実施例では、各ノード内のシステム・メモリが、単一のシステム・メモリとしてインプリメントされ、ローカル相互接続58に結合される関連メモリ制御装置により制御される。
【0016】
本明細書では、"システム・メモリ"が物理データ記憶装置として定義され、(エラー状態が存在しなければ、)物理データ記憶装置内のそれぞれの保管場所に永久に関連付けられる固有のアドレスを用いてアドレス指定される。NUMAコンピュータ・システム50全体を通じて、固有にデータを識別するために使用されるアドレスに関連付けられる、システム・メモリ66内の保管場所にデータを記憶するノード52が、そのデータのホーム・ノードと定義される。他方、他のノード52はそのデータのリモート・ノードと定義される。
【0017】
図2及び図3に示されるように、ノード52間でのデータの共用をサポートするために、メモリ制御装置64はローカル・メモリ・ディレクトリ(LMD)72及びリモート・メモリ・キャッシュ(RMC)70を使用し、後者は関連リモート・メモリ・ディレクトリ(RMD)74を有する。ここでは、ローカル・メモリ・ディレクトリ(LMD)72は、関連システム・メモリに内在するデータのためのディレクトリとして定義され、データが1つ以上のリモート・ノードにキャッシュされているか否かの指示を記憶する。逆に、リモート・メモリ・ディレクトリ(RMD)74は、他のノード内のシステム・メモリからのどのデータが、関連リモート・メモリ・キャッシュ(RMC)70にキャッシュされているかを示すディレクトリとして定義される。便宜上、関連システム・メモリ66内のホーム・ノード・データへのアクセスを制御するメモリ制御装置64の回路は、ここではシステム・メモリ制御装置71と称され、RMC70へのアクセスを制御するメモリ制御装置64の回路は、RMC制御装置73と称される。
【0018】
もちろん、NUMAコンピュータ・システム50は、更に、本発明の理解には必要でなく、従って、本発明をわかりにくくすることを回避するために、ここでは省略される追加の装置を含み得る。例えば、任意のノード52がI/Oアダプタ及びネットワーク・アダプタや、オペレーティング・システム及びアプリケーション・ソフトウェアを記憶する不揮発性記憶装置、及びネットワークまたは接続装置への接続のためのシリアル・ポート及びパラレル・ポートをサポートしてもよい。
【0019】
メモリ構成:
NUMAコンピュータ・システム50の性能は、とりわけデータ・アクセス待ち時間により影響される。ノード内データ要求のためのアクセス待ち時間は、一般に、ノード間データ要求のためのアクセス待ち時間よりも遙かに少ないので、処理ユニット54を含む各ノード52が大きなデータ記憶容量を装備すれば、システム性能は一般に改善され、ノード間データ要求が最小化される。例えば、NUMAコンピュータ・システム50が4つのノードを含み、各ノードが4つの処理ユニット54と4つのシステム・メモリ66とを含む典型的な実施例では、4つのシステム・メモリ66の各々が、8ギガバイト(GB)またはそれ以上の容量を有し、128GBまたはそれ以上の総システム・メモリ記憶容量を提供する。大容量のシステム・メモリのために、コスト検討の面で、システム・メモリ66をダイナミック・ランダム・アクセス・メモリ(DRAM)などの、1バイト当たりのコストが安価な記憶技術により実現しがちである。
【0020】
本発明によれば、システム・メモリ66の記憶容量が、(例えばNUMAコンピュータ・システム50のオペレーティング・システムにより、)1つ以上のアドレス空間に区画化される。図2に示される実施例では、各システム・メモリ66がシステム・メモリ・アドレス空間68を含み、これがNUMAコンピュータ・システム50のオペレーティング・システムにより、様々なオペレーティング・システム及びアプリケーション・プロセスに、命令及びデータの記憶のために割当てられる。更に、プロセッサ・ユニット54を含む各ノード52内の少なくとも1つのシステム・メモリ66が、1つ以上の他のノード52のシステム・メモリ66に内在するデータに対応するデータを記憶するRMC70を含む。従って、図1に示されるように、単一のスタンドアロンのリモート・メモリ・キャッシュ28をインプリメントする代わりに、本発明は各ノード52において、1つのまたはことによると複数のシステム・メモリ66内に、リモート・メモリ・キャッシュを組み込む。RMC70が複数のシステム・メモリ66の間で分散される実施例では、少なくとも同一ノード52内の任意のCPUによりアクセス可能なキャッシュ・ラインが、好適には特定のRMC70にマップされる。これはそのキャッシュ・ラインに関連付けられる物理アドレスまたは論理アドレスをハッシュすることにより行われる。
【0021】
リモート・メモリ・キャッシュは高価なSRAMではなく、安価なDRAMによりインプリメントされるので、RMC70の1バイト当たりのコストは従来技術と比較して、劇的に低減される。このことは追加のコストをほとんど伴わずに、または全く伴わずに、そのサイズが大幅に増加され得ることを意味する。更に、同一ノード内の複数のシステム・メモリの間で、リモート・メモリ・キャッシュを分散することにより、従来技術のように単一のノード制御装置ではなしに、複数のメモリ制御装置64に渡り、アクセス制御が分散されるようになり、従来技術に比べて、帯域幅の大幅な改善が達成される。
【0022】
本発明の特定の実施例では、オペレーティング・システムが、1つ以上のノード内の物理システム・メモリの一部または全部を、リモート・メモリ・キャッシュに割当てる一方、物理システム・メモリをシステム・メモリ・アドレス空間には割当てないように選択する。こうした実施例では、システム・メモリ・アドレス空間が1つ以上のノード内でローカライズされて、例えばラック・システム内のディスク・メモリ・ドロワーとしてインプリメントされ、処理ユニットを含む他のノード内の物理システム・メモリが、リモート・メモリ・キャッシュとして割当てられる。
【0023】
前述のように、RMC70の少なくとも一部を保持するように割当てられるシステム・メモリ66に関連付けられる各メモリ制御装置64は、当該メモリ制御装置がRMC70のその関連部分の内容を記録するRMD74を提供される。従来のキャッシュ・ディレクトリと同様、RMD74は好適にはRMC70内のデータに関連するアドレス情報だけでなく、コヒーレンス情報、置換情報、及び任意的に追加の状態情報(例えば包含関係)も記憶する。
【0024】
メモリ制御装置64によるRMD74の迅速なアクセスをサポートするために、RMD74は図2に示されるように、高速SRAMでインプリメントされてもよい。このインプリメンテーションは、要求に応答して、迅速なディレクトリ検索を推進することにより、アクセス待ち時間を有利に低減する。しかしながら、RMC70と同様、RMDのためのSRAMの使用は高価であり、実際のシステムにおいて、RMD74のサイズ(従ってRMC70のサイズ)を制限する。こうした問題を解決するために、2つの異なるアプローチが採用されてもよい。
【0025】
第1に、RMD74がSRAM(または他の高価な記憶技術)によりインプリメントされる場合、RMD74はSRAM記憶容量の利用が最適化されるように、大きなセクタをインプリメントできる(すなわち、大きなデータ・ブロックを、タグ及び状態情報の各セットに関連付ける)。第2のアプローチは、図3のNUMAコンピュータ・システム50'により例示されるように、RMD74をRMC70と一緒に、システム・メモリ66内に組み込む。このようにして、RMD74をインプリメントするコストが大幅に削減されるか、RMD74及びRMC70のサイズが追加のコストを伴わずに、大幅に増加される。システム・メモリ66のDRAM内へのRMD74の組込みは、ディレクトリ・アクセス時間を遅らせるが、この追加のディレクトリ・アクセス待ち時間が、図4に示されるように、RMC制御装置73内に、最近アクセスされた(従ってアクセスされる可能性が高い)ディレクトリ・エントリを含む小ディレクトリ・キャッシュ75を装備することにより緩和される。
【0026】
NUMAコンピュータ・システム50のオペレーティング・システムにより、RMD74及びRMC70に割当てられるシステム・メモリ66の量は、性能上の重要な考慮事項である。なぜなら、より大きなRMC70及びRMD74の割当ては、必然的にシステム・メモリ・アドレス空間68を低減するからである。好適な実施例では、RMC70及びRMD74に割当てられるシステム・メモリ66の、システム・メモリ・アドレス空間68に占める割合が、実行されるアプリケーションのニーズに応じて動的に可変される。例えば、オペレーティング・システムが、アプリケーションがそれが実行されるノード52内のメモリをアクセスするだけで足りると判断すると、オペレーティング・システムはRMC70(及びその関連RMD74)を、システム・メモリ・アドレス空間68に比較して、かなり小さな空間だけ割当てる。逆に、オペレーティング・システムが、アプリケーションがリモート・メモリへの多くのアクセスを要求すると判断すると、オペレーティング・システムはシステム・メモリの大きな部分をRMC70(及びその関連RMD74)に割当てる。
【0027】
RMC70(及びRMD74)は、少なくとも2つの代替方法に従い、取り込まれる。第1に、RMC70は、ローカル・キャッシュ階層62内に保持される、他のノードからのデータのスーパセットを集合的に記憶する、包含(または擬似包含)キャッシュとしてインプリメントされる。この実施例では、要求キャッシュ・ラインが他のノード52から受信されるとき、キャッシュ・ラインがノード52のRMC70にロードされる。或いは、RMC70が、ローカル・キャッシュ階層62から割当て解除された、共用のまたは変更済みコヒーレンス状態のリモート・データのキャッシュ・ラインだけを保持する、"犠牲キャッシュ"としてインプリメントされる。
【0028】
メモリ・コヒーレンス:
各システム・メモリ66内に記憶されるデータは、一般に、NUMAコンピュータ・システム50内のCPU60により要求され、アクセスされ、変更されるので、NUMAコンピュータ・システム50(または50')は、1つ以上の互換性のあるキャッシュ・コヒーレンス・プロトコルをインプリメントし、ノード52内のキャッシュ階層62とRMC70との間のコヒーレンス(すなわち、システム・メモリ・アドレス空間68の集約内容のコヒーレント・ビュー)を維持する。従って、NUMAコンピュータ・システム50はCC−NUMAコンピュータ・システムとして適切に分類される。キャッシュ・コヒーレンス・プロトコルはインプリメンテーションに依存し、例えば、周知のModified、Exclusive、Shared、Invalid(MESI)プロトコル、またはそれらの変形を含む。当業者には理解できるように、キャッシュ階層62により使用されるコヒーレンス・プロトコルは、ローカル相互接続58及びノード相互接続55を介して、様々なインプリメンテーション依存のメッセージを伝送する必要があり、これは例えば、CPU60により実行される命令のキャッシュ階層62を通知したり、必要なデータ及び命令を獲得したり、変更データをシステム・メモリ66に書戻したり、コヒーレンスを維持するために必要とされる他の機能を実行するために必要とされる。
【0029】
ノード間のコヒーレンスを維持するために、システム・メモリ制御装置71はLMD72内に、関連システム・メモリ・アドレス空間68からリモート・ノード52にチェックアウトされたデータ(すなわちキャッシュ・ライン)の、システム・メモリ・アドレスの指示を記憶する。コンパクトなディレクトリを保持することが重要なローエンド・インプリメンテーションでは、LMD72が各データ・グラニュールに、そのデータ・グラニュールが少なくとも1つのリモート・ノード52にチェックアウトされるか否かの不正確な指示だけを関連付けているかもしれない。或いは、ハイエンド・インプリメンテーションでは、LMD72は好適には、各データ・グラニュールに関連して、各リモート・ノード52におけるキャッシュ・ラインのコヒーレンス状態の指示を記憶する。本発明の典型的な実施例に従う、LMD72のエントリに含まれるノードごとのコヒーレンス状態には、表1に示される項目が含まれる。
【0030】
【表1】
Figure 0003924204
【0031】
表1に示されるように、ハイエンド・インプリメンテーションでも、リモート処理ノードにより保持されるキャッシュ・ラインのコヒーレンス状態の理解が、ある程度の不正確さをもって指定される。図8及び図9に関連して後述するように、不正確さの度合いは、コヒーレンス・プロトコルのインプリメンテーションが、ホーム・ノードのLMD72に通知することなく、遠隔的に保持されるキャッシュ・ラインがSからIへ、若しくはEからIへ、またはEからMへ遷移することを許可するか否かに依存する。
【0032】
本発明の好適な実施例では、図2及び図3に示されるように、LMD72が高速SRAMによりインプリメントされる。しかしながら、LMD72が代わりに、RMC70及びRMD74と一緒に、システム・メモリ66内に組み込まれてもよい。しかしながら、LMD72をシステム・メモリ66に組み込むことは、あまり推奨できない。なぜなら、そうすることはより大規模なRMC70及びRMD74を助長させ、平均リモート・メモリ・アクセス待ち時間を低減しないからである。更に、LMD72をシステム・メモリ66に組み込むことは、システム・メモリへのアクセス時間をほぼ倍加する。なぜなら、最初のアクセス時間が、LMD72を探索するために要求され、第2の等価なアクセス時間が、システム・メモリ・アドレス空間68から要求データを獲得するために要求されるからである。
【0033】
キャッシュ構成:
図5を参照すると、キャッシュ階層62内にインプリメントされる典型的な低レベル・キャッシュ132のブロック図が示される。キャッシュ階層62内の他の高レベル・キャッシュについても、同様に構成される。
【0034】
図示のように、キャッシュ132はデータ記憶130、キャッシュ・ディレクトリ140及びキャッシュ制御装置156を含む。データ記憶130は好適には、多数の合同クラスとして編成されるセット・アソシエイティブ・アレイとしてインプリメントされ、各合同クラスが複数のキャッシュ・ラインを含む。キャッシュ・ディレクトリ140はデータ記憶130の内容及び関連状態情報を記録し、データ記憶130内の合同クラスにそれぞれが対応する多数のセット142を含む。各セット142は多数のディレクトリ・エントリ144を含み、これらはセット142が関連付けられるデータ記憶130の合同クラス内の、対応キャッシュ・ラインのアドレス・タグ及びコヒーレンス状態を記憶する。
【0035】
キャッシュ・ディレクトリ140は関連LRU論理150を有し、これはデータ記憶130の各合同クラス内の各エントリが、どのくらい最近アクセスされたかの指示を記憶する。従って、各合同クラスに関連付けられるLRU論理150内の指示は、最低アクセス頻度のメンバ、2番目に低いアクセス頻度のメンバ、及び3番目に低いアクセス頻度のメンバなどを示す。
【0036】
キャッシュ132は、キャッシュ・オペレーション要求に関連付けられる要求アドレスを、(恐らく高レベル・キャッシュを介して、)その関連CPU60と、ローカル相互接続58の両方から受信する。要求アドレスは高位のタグ・ビット、中位のインデックス・ビット、及び下位のオフセット・ビットを含む。図5に示されるように、キャッシュ132により受信される各要求アドレスのインデックス・ビットは、キャッシュ・ディレクトリ140及びLRU論理150の両方に入力される。インデックス・ビットの受信に応答して、LRU論理150はデコードされたCASTOUT_VICTIM信号152を出力する。この信号は、ことによるとキャッシュ・オペレーション要求に応答して置換されているかもしれない、選択合同クラスのメンバを示す。CASTOUT_VICTIM信号152は、キャッシュ制御装置156及びマルチプレクサ154の両方に入力される。
【0037】
要求アドレスのインデックス・ビットは、キャッシュ・ディレクトリ140内のセット142を選択する。次に、比較器146を用いて、選択セット142の各エントリ144内に記憶されるタグ(T)が、要求アドレスのタグ・ビットと個々に比較され、各比較器が1ビット・マッチ指示を生成する。比較器146により出力されるビットは、デコードされたHIT/MISS信号148を形成し、これがキャッシュ制御装置156、マルチプレクサ154、及びORゲート153に入力される。ORゲート153は、HIT/MISS信号148を論理的に組み合わせることにより、選択信号を生成し、この選択信号がヒットに応答して、HIT/MISS信号148をマルチプレクサ154の出力として選択し、ミスに応答して、CASTOUT_VICTIM信号152をマルチプレクサ154の出力として選択する。マルチプレクサ154の出力は、デコードされたSELECT信号155を形成する。
【0038】
比較器146によるタグ・ビットの比較と並行して、選択セット142の各エントリに記憶されるコヒーレンス状態(CS)及びタグ(T)が、マルチプレクサ147に入力される。SELECT信号155が次に、もし要求アドレスがキャッシュ・ディレクトリ140内でヒットした場合、マルチプレクサ147の出力として、マッチング・メンバに関連付けられるコヒーレンス状態及びタグを選択し、要求アドレスがキャッシュ・ディレクトリ140内でミスした場合、LRUメンバに関連付けられるコヒーレンス状態及びタグを選択する。次に、選択コヒーレンス状態及びタグ149が、キャッシュ制御装置156に入力される。
【0039】
キャッシュ・オペレーション要求、HIT/MISS信号148、コヒーレンス状態及びタグ149、及びCASTOUT_VICTIM信号152の受信に応答して、キャッシュ制御装置156は要求を要求キュー134の1つにエンキューし、適切なデータ処理及びディレクトリ更新操作を実行する。例えば、関連CPU60による読出しタイプの要求が、キャッシュ・ディレクトリ140内でミスしたことに応答して、キャッシュ制御装置156は、要求アドレスを含むキャッシュ・ラインを求める要求を、ローカル相互接続58上に出力し、ローカル・キャッシュ階層62、ローカル・システム・メモリ68、または他のノード52からの要求データの受信に際して、要求データを関連CPU60に提供し、要求キャッシュ・ラインを、CASTOUT_VICTIM信号152により指定される合同クラス・メンバに記憶する。或いは、関連CPU60による読出し要求のキャッシュ・ディレクトリ140内でのヒットに応答して、キャッシュ制御装置156が要求データをデータ記憶130から読出し、そのデータを関連CPU60に提供する。キャッシュ・オペレーション要求のサービスが、キャッシュ・ラインのアクセスまたはキャッシュ・ラインの置換を要求する度に、キャッシュ制御装置156はLRU_UPDATE信号158を生成し、この信号がLRU論理150により、アクセスされた合同クラスに関連付けられるLRU指示を更新するために使用される。後述するように、キャッシュ制御装置156は、ローカル相互接続58上のスヌーピング・オペレーションに応答して、スヌープ・キュー135を参照することにより、同様にキャッシュ更新及びデータ処理操作を実行する。
【0040】
リモート読出しタイプ命令:
図6を参照すると、本発明に従い、CPUロードまたはストア要求をサービスする方法のハイレベル論理フローチャートが示される。図6に示されるプロセスはブロック100で開始し、次にブロック101に進み、NUMAコンピュータ・システム50(または50')のあるノード52内の最下レベル・キャッシュ132が、関連CPU60から、データまたは命令(以下では単にデータと称す)の要求を受信する。最下レベル・キャッシュ132での要求の受信は、要求がキャッシュ階層62の高レベル・キャッシュにおいて、ミスしたことを示す。
【0041】
前述のように、要求の受信に応答して、最下レベル・キャッシュ132は、ブロック102で、要求が最下レベル・キャッシュ132内でヒットするか否かを判断する。ヒットする場合、ブロック103で、キャッシュ制御装置156がCPU60に要求データを提供されることにより、要求をサービスし、プロセスはブロック118で終了する。しかしながら、ブロック102で、要求が最下レベル・キャッシュ132内でミスしたと判断されると、ブロック104で、最下レベル・キャッシュ132のキャッシュ制御装置156が、そのローカル相互接続58上に、要求データをターゲットとする読出しタイプの要求(例えばロード要求のためのREAD、またはストア要求のためのRWITM(read-with-intent-to-modify))を発行する。
【0042】
図7は、本発明に従う読出しタイプの要求の典型的な実施例を示す。図示のように、読出しタイプの要求は、発信元及び宛先タグ・フィールド119、120、アドレス及びパリティ・フィールド121、122、及び命令のサイズ及びタイプ(例えばREADまたはRWITM)を示すトランザクション記述子フィールド124などの、従来のフィールドを含む。更に、読出しタイプの要求は、図17乃至図19に関連して後述するプリフェッチ(PF)フィールド128を含む。更に、本発明によれば、読出しタイプの要求は、その読出しタイプの要求がローカル・ノード制御装置56のキュー57の1つにエンキューされるべきか否かを示す、ノード制御装置キュー(NCQ)フラグ126を含む。本発明によれば、ノード制御装置56のキュー57内の命令のペンデンシが、最初に、NCQフィールド126が0にセットされた読出しタイプの要求を発行し(図6のブロック104参照)、それによりノード制御装置56に読出しタイプの要求をエンキューしないように命令することにより低減される。
【0043】
図6に戻り、プロセスはブロック104からブロック106に進み、ここで他のローカル・キャッシュ階層62、メモリ制御装置64、及びノード制御装置56の全てが、読出しタイプの要求をスヌープし、適切なスヌープ応答を提供する。可能なスヌープ応答は、好適には表2に示される項目を含む。
【0044】
【表2】
<スヌープ応答とその意味>
再試行:要求の発信元が要求を再発行しなければならない。
変更介入:ラインがキャッシュ内で変更され、キャッシュからリクエスタに発信される。
共用介入:ラインがキャッシュ内で変更されず(ことによると共用される)、キャッシュからリクエスタに発信される。
リモート・アドレス:ラインのホーム・ノードが別のノード(ノード制御装置だけ)である。
共用:ラインがキャッシュ内で共用状態に保持される。
ヌル:ラインがキャッシュ内で無効である。
【0045】
重要な点は、ローカル・ノード制御装置56が、ホーム・ノードとして別のノードを有するデータに対する読出しタイプの要求に対して、"リモート・アドレス"・スヌープ応答を提供するが、ノード制御装置56はこうした読出しタイプの要求を、リモート・ノードへの伝送のために、そのキュー57の1つに即時エンキューしないことである。なぜなら、読出しタイプの要求のNCQフィールド126が、0にセットされているからである。
【0046】
ブロック108で示されるように、読出しタイプの要求を発行したインタフェース・ユニット65内の応答論理63が、全てのスヌープ応答を組み合わせ、要求がどのようにサービスされるかを示す組み合わせ応答を生成する(例えば、最も優先順位の高いスヌープ応答を示すことによる)。インタフェース・ユニット65はこの組み合わせ応答を、要求元キャッシュ階層62を含む、ローカル相互接続58上の各スヌーパに提供する。組み合わせ応答が、要求アドレスが要求データの発信元として役立つローカル・キャッシュ階層62またはRMC70内でヒットしたことを示す場合、プロセスはブロック108からブロック110に進み、読出しタイプの要求がローカル・キャッシュ階層62またはRMC70によりサービスされる。その後、プロセスはブロック118で終了する。
【0047】
ブロック108に戻り、読出しタイプの要求に対する組み合わせ応答が、ローカル・キャッシュ階層62またはRMC70が要求データの発信元として役立たないことを示す"リモート・アドレス"組み合わせ応答の場合、ブロック112で示されるように、要求キャッシュ階層62内の最下レベル・キャッシュ132のキャッシュ制御装置156が、読出しタイプの要求を、NCQフラグ126が1にセットされた状態で、ローカル相互接続58上に再発行する。既に述べたように、各々のスヌーパが読出しタイプの要求に対してスヌープ応答を提供し、インタフェース・ユニット65が組み合わせ応答を提供する。しかしながら、ブロック114に示されるように、読出しタイプの要求がノード制御装置56により再度スヌープされるとき、ノード制御装置56は、今度はNCQフィールド126が1にセットされているので、要求アドレスのホーム・ノード52への伝送のために、要求をそのキュー57の1つにエンキューする。読出しタイプの要求をエンキューした後、ノード制御装置56は第2の組み合わせ応答を待機することなく、読出しタイプの要求をそのサービスのために、ホーム・ノード52に転送する。(ノード制御装置56は組み合わせ応答を受信するために待機する必要がない。なぜなら、既にNCQフィールド126により、ノード制御装置56が読出しタイプの要求のサービスを処理しなければならないことが示されているからである。)ブロック116で示されるように、ホーム・ノード52が要求データをノード相互接続55を介して、ノード制御装置56に提供することにより、要求をサービスする。次に、ノード制御装置56はローカル相互接続58を介して、要求データを要求元キャッシュ階層62に(及び包含キャッシュとしてインプリメントされる場合、RMC70にも)提供する。その後、プロセスはブロック118で終了する。
【0048】
図6に示されるプロセスは、ノード制御装置56内のキュー57の項目数が、図1の従来のノード制御装置24内のキュー32の項目数よりも、遙かに浅いことを可能にする。このようにキューの項目数を低減できる理由は、エンキューされる読出しタイプの要求の数及びキューイング期間が、大幅に減少されるからである。
【0049】
図1の従来のNUMAコンピュータ・システム8では、ノード制御装置24がキュー32内に、リモート・データを求めてスヌープされた各読出しタイプの要求をエンキューする。これは後に、ローカル組み合わせ応答が、その読出しタイプの要求が別のノード10によりサービスされなければならないことを示す場合に備えるためである。従って、ノード制御装置24は不必要にたくさんの読出しタイプの要求をエンキューし、それらが後に組み合わせ応答により示されるときに、(例えばRMC28から)局所的にサービスされるようにする。更に、ノード制御装置24は、要求アドレスがスヌープされる時点から、組み合わせ応答が受信される時点まで、読出しタイプの要求をエンキューする(これは例えば80サイクル以上を費やす)。この長いインターバルの間、従来のノード制御装置24内のキュー32は、ローカル相互接続11及びノード相互接続12上の命令を、キュー32に対してスヌープすることにより、全てのインバウンド命令及びアウトバウンド命令のグローバル・コヒーレンスを、キュー32内に保持するように要求される。
【0050】
それに対して、図6の方法に従えばノード制御装置56は、サービスのために他のノード52に送信されなければならない読出しタイプの要求をエンキューするだけである。更に、キュー57内にエンキューされる読出しタイプの要求が、NCOフィールド126が1にセットされて再発行される読出しタイプの要求の受信と、ノード相互接続55上での読出しタイプの要求の伝送との間のインターバルの間だけ、エンキューされる。従って、キュー57の項目数が、アドレス指定から組み合わせ応答までの待ち時間に依存しない。
【0051】
もちろん、キュー項目数のこの有利な低減は、アドレス指定から組み合わせ応答までの待ち時間の延長を、ノード52間で伝送されなければならない読出しタイプの要求のサービスのために追加する代償として獲得される。しかしながら、大容量のRMC70を仮定すると、こうした要求は希である。加えて、ホーム・ノードに転送されなければならない要求のサービスに関連付けられる待ち時間は一般に非常に長く、リモート・ノードにおけるアドレス指定から組み合わせ応答までの追加の待ち時間の招へいは、性能に大きな影響を与えない。
【0052】
最後に、当業者には明らかなように、図6の方法はNUMAコンピュータ・システムに限られるものではない。代わりに、本発明は一般に、階層相互接続アーキテクチャを有するSMPコンピュータ・システム、及びスヌーパ間の通信待ち時間が均一でない他のコンピュータ・システムにも適用可能である。
【0053】
キャッシュ・ライン割当て解除:
図6のブロック114及び116に示されるように、キャッシュ・ラインが要求され、別のノード52から受信されるとき、そのキャッシュ・ラインが要求元キャッシュ階層62またはRMC70から割当て解除され、新たなキャッシュ・ラインを収容できるようにしなければならない。リモート・ノードが常に未変更のキャッシュ・ラインを黙って割当て解除する、前述の従来のNUMAコンピュータ・システムとは異なり、本発明に従うNUMAコンピュータ・システムは、好適には、リモート・ノードが、ホーム・ノードからチェックアウトされたキャッシュ・ラインを割当て解除するとき、リモート・ノードがホーム・ノードにそのことを通知するように、割当て解除操作をインプリメントする。従って、本発明はLMD72が、リモート・ノード52に保持される関連システム・メモリ・アドレス空間68からのデータに関して、より正確な情報を含むことを可能にする。
【0054】
次に図8及び図9を参照すると、本発明の好適な実施例に従い、RMC70からのキャッシュ・ラインの割当て解除を示すハイレベル論理フローチャートが示され、そこではRMC70が、ローカル・キャッシュ階層62から割当て解除されたリモート・データを記憶する"犠牲キャッシュ(victim cache)"として実現される。しかしながら、当業者であれば理解できるように、図示の割当て解除プロセスは、RMC70がローカル・キャッシュ階層62内に保持されるリモート・データを含む実施例にも適用可能である。
【0055】
最初に図8を参照すると、プロセスはブロック170で開始し、その後、ブロック172に進み、ここでRMC70を制御するメモリ制御装置64のRMC制御装置73が、犠牲キャッシュ・ラインを割当て解除のために選択する。この選択は、例えば、どのキャッシュ・ラインが最低使用頻度(LRU)か、或いは最も最近使用されたか(MRU)、またはランダム選択や他の犠牲選択基準にもとづき行われる。ブロック174で示されるように、RMC制御装置73は犠牲キャッシュ・ラインを、RMD74に記憶されるそのコヒーレンス状態に従い割当て解除する。RMD74が犠牲キャッシュ・ラインのコヒーレンス状態が無効であると示す場合、ホーム・ノード52に何の通知も提供することなく、犠牲キャッシュ・ラインが単に要求データにより上書きされる。従って、プロセスはブロック174から直接ブロック190に移行し終了する。
【0056】
他方、RMD74が、選択犠牲キャッシュ・ラインがホーム・ノード52のシステム・メモリ・アドレス空間68に内在する対応データに関連して、変更済みであると示す場合、メモリ制御装置64は変更データに対して割当て解除プロセスを開始し、これがブロック176で示され、図9に関連して以下で詳述される。最後に、RMD74が、犠牲キャッシュ・ラインが共用コヒーレンス状態であると示す場合(すなわち、キャッシュ階層62内に局所的にキャッシュされているかもしれず、その場合、ホーム・ノード52のシステム・メモリ66に関連して変更済みである)、メモリ制御装置64は、割当て解除されるキャッシュ・ラインのコピーを含むシステム・メモリ66に関連付けられるホーム・ノードのメモリ制御装置64に通知する。こうした通知は、たとえそれがコヒーレンスを維持するために、厳密には必要でなくても行われる。
【0057】
ブロック178で示されるように、メモリ制御装置64は、アドレス専用割当て解除命令をローカル相互接続58上に発行することにより、共用犠牲キャッシュ・ラインをリモート・メモリ・キャッシュ70から割当て解除するプロセスを開始する。アドレス専用割当て解除命令のスヌープに応答して、ノード制御装置56は命令をエンキューし、ローカル・キャッシュ階層62及び他のスヌーパが、ブロック180で示されるように、割当て解除命令に対して、そのキャッシュ階層62に関連して、犠牲キャッシュ・ラインのコヒーレンス状態(一般に共用状態または無効状態)を示すスヌープ応答を提供する。これらのスヌープ応答は、割当て解除命令を発行したインタフェース・ユニット65内の応答論理により組み合わされ、組み合わせ応答が生成される。この組み合わせ応答が次に、ローカル相互接続58に結合される全てのスヌーパに提供される。ブロック182で示されるように、組み合わせ応答が、1つ以上のローカル・キャッシュ階層62が共用状態の犠牲キャッシュ・ラインを記憶することを示す場合、プロセスはブロック190で終了し、この場合、ホーム・ノード52に通知することなく、犠牲キャッシュ・ラインがRMC70から割当て解除される。ホーム・ノード52に通知が提供されない理由は、ホーム・ノードのLMD72の更新が必要でないからである。
【0058】
しかしながら、組み合わせ応答が、犠牲キャッシュ・ラインが局所的に共用状態でキャッシュされていないことを示す場合(すなわち組み合わせ応答がヌル)、ブロック184で、ローカル・ノード制御装置56はエンキューされたアドレス専用割当て解除命令をホーム・ノード52のノード制御装置56に送信し、割当て解除命令をデキューする。ホーム・ノード52のノード制御装置56は次に、アドレス専用割当て解除命令をそのローカル相互接続58上に発行する。ブロック186で示されるように、犠牲キャッシュ・ラインのアドレスの担い手であるメモリ制御装置64が、LMD72内の犠牲キャッシュ・ラインに対応する共用状態のエントリを無効状態に更新し、犠牲キャッシュ・ラインがもはやその特定のリモート・ノード52にキャッシュされていないことを示す。その後、図8に示されるプロセスはブロック190で終了する。
【0059】
次に図9を参照すると、本発明に従いRMC70から変更キャッシュ・ラインを割当て解除する典型的な方法が示される。図示の実施例では、キャッシュ階層62及びRMC70によりインプリメントされるコヒーレンス・プロトコルが、タグ付き(T)コヒーレンス状態を含む周知のMESIプロトコルの変形である。米国特許出願第09/024393号で述べられるように、タグ付き(T)コヒーレンス状態は、1)キャッシュ・ラインがシステム・メモリに関連して変更されていること、2)キャッシュ・ラインが、異なる処理ユニットに関連付けられる複数のキャッシュ内に保持されているかもしれないこと、及び3)T状態のキャッシュ・ラインを保持するキャッシュが、現在そのキャッシュ・ラインをシステム・メモリに書戻す責任があることを示す。
【0060】
図9に示されるプロセスは、図8のブロック172乃至174で示されるように、割当て解除のために選択されたRMC70内の犠牲キャッシュ・ラインが、変更キャッシュ・ラインであると判断された後に、ブロック200で開始する。プロセスは次にブロック202に進み、RMC70に関連付けられるRMC制御装置73が、ローカル相互接続58上にキャストアウト書込み命令を発行する。
【0061】
図10に示されるように、本発明に従う典型的なキャストアウト書込み命令240は、発信元及び宛先タグ・フィールド241、242、アドレス及びアドレス・パリティ・フィールド243、244、及び命令のサイズ及びタイプを示すトランザクション記述子フィールド246などの、従来のフィールドを含む。更に、後述のように、キャストアウト書込み命令は共用(S)フラグ248を含み、これはキャストアウト書込み命令がローカル相互接続58上に発行されたとき、共用スヌープ応答を受信したか否かを示すようにセットされる。最後に、キャストアウト書込み命令は、変更犠牲キャッシュ・ラインを含むデータ・フィールド250、及び関連データ・パリティ・フィールド252を含む。
【0062】
ブロック204で示されるように、キャストアウト書込み命令のスヌープに応答して、ローカル相互接続58に結合されるスヌーパの各々は、キャッシュ階層62のために、各スヌーパでの犠牲キャッシュ・ラインのコヒーレンス状態を示すスヌープ応答を提供する。更に、ノード制御装置56がキャストアウト書込みをキュー57にエンキューする。前述のように、キャストアウト書込み命令を発行したメモリ制御装置64に関連付けられるインタフェース・ユニット65内の応答論理63が、スヌープ応答を組み合わせ、組み合わせ応答を生成し、これが全てのスヌーパに提供される。組み合わせ応答が再試行組み合わせ応答の場合、プロセスは前述したブロック202に戻る。しかしながら、組み合わせ応答が再試行以外の応答の場合、ノード制御装置56は組み合わせ応答に従い、キャストアウト書込み命令内の共用フラグ248をセットする。従って、ブロック208で示されるように、組み合わせ応答が共用の場合、キャッシュ階層62の1つが、タグ付き(T)コヒーレンス状態により許可されるように、変更犠牲キャッシュ・ラインのコピーを保持することを示し、従って、ノード制御装置56は共用フラグ248を1にセットする。他方、犠牲キャッシュ・ラインの有効なコピーを保持するローカル・キャッシュ階層62が存在しない場合、ノード制御装置56はヌル組み合わせ応答を受信し、従って、ブロック210で共用フラグ248を0にセットする。
【0063】
ノード制御装置56はその後、ブロック212で示されるように、キャストアウト書込み命令をデキューし、それを犠牲キャッシュ・ラインのホーム・ノード52に送信する。ホーム・ノード52でのキャストアウト書込み命令の受信に続き、ホーム・ノード52のノード制御装置56が、キャストアウト書込み命令をホーム・ノード52のローカル相互接続58上に発行する。ブロック213で示されるように、キャストアウト書込み命令に応答して、犠牲キャッシュ・ライン・アドレスの担い手であるメモリ制御装置64が、システム・メモリ・アドレス空間68をキャストアウト・データにより更新する。更に、メモリ制御装置64は共用フラグ248の状態に従い、LMD72内の、リモート・ノード52の関連コヒーレンス状態を更新する。従って、ブロック218で示されるように、共用フラグ248が1にセットされている場合、メモリ制御装置64は、キャストアウトを発行したリモート・ノード52での犠牲キャッシュ・ラインのコヒーレンス状態を、共用にセットする。他方、共用フラグ248が0にセットされている場合、ブロック216で示されるように、メモリ制御装置64がリモート・ノード52の犠牲キャッシュ・ラインのコヒーレンス状態を無効に更新する。その後、図9に示される割当て解除プロセスがブロック220で終了する。
【0064】
図8及び図9に示される割当て解除プロセスの一方または両方をインプリメントすることにより、ホーム・ノード52のメモリ制御装置64が、(例えばRWITM要求に応答して、)不必要な無効命令をリモート・ノード52に送信する可能性が大幅に減少する。その結果、複数のノード52間で時々共用されるキャッシュ・ラインに対する、ストア命令の平均性能が改善される。また、図8に示されるアドレス専用割当て解除命令が、弱い命令(すなわち不正確な命令)としてインプリメントされる。例えば、アドレス専用割当て解除命令を発信するメモリ制御装置64が、所定数以上の再試行スヌープ応答を受信する場合、メモリ制御装置64は割当て解除命令の再試行を中断する。このように、再試行組み合わせ応答を招く動的条件(例えばキャッシュ・ディレクトリがビジー)の下でも、性能的な影響を受けない。
【0065】
ローカル・メモリ・ディレクトリ保守:
本発明の一部の実施例では、図8及び図9に示される方法に加え、遠隔的に保持されるキャッシュ・ラインを割当て解除する、代わりのまたは追加の方法をインプリメントすることが望ましい。特に、図8及び図9の割当て解除方法がインプリメントされないか、RMC70が非常に大規模な場合、リモート・ノードがキャッシュ・ラインのアクセスを要求するのをやめたずっと後で、そのキャッシュ・ラインがリモート・ノードに保持されてもよい(或いは、少なくともホーム・ノードのLMD72に、リモート・ノードに保持されていることが示されてもよい)。結果的に、本発明は非要求時フラッシュ命令をリモート・ノードに発行することにより、排他命令(例えばRWITM要求)が、リモート・ノードに保持されるデータの無効化により遅延される頻度を低減する、特定の機構をインプリメントすることが望ましいことを認識する。
【0066】
本発明の好適な実施例に従い、また図4に示されるように、メモリ制御装置64のシステム・メモリ制御装置71内に、ディレクトリ"消し込み(scrubbing)"論理(SL)61なる機構がインプリメントされる。このディレクトリ消し込み論理(SL)61は、関連LMD72内の各エントリを周期的に読出し、エントリが、特定のキャッシュ・ラインが1つ以上のリモート・ノード52に"キャッシュアウト"されていることを示す場合、システム・メモリ制御装置71が"弱い"アドレス専用フラッシュ照会を、それらのリモート・ノードに発行する。
【0067】
フラッシュ照会は"弱い(weak)"と称される。なぜなら、フラッシュ照会を受信するリモート・ノード52は、それを遵守する必要がないからである。通常状態では、フラッシュ照会がデータのコピーを保持するリモート・ノード52内のキャッシュ階層62によりスヌープされるとき、キャッシュ階層62はキャッシュ内のアドレス指定ラインを無効化し、もしキャッシュ・ラインが変更済みの場合、キャッシュ・ライン・データをホーム・ノード52に書戻す。しかしながら、データが依然リモート・ノード52内で活発に使用されているか、キャッシュ階層のスヌープ・キューが全てビジーの場合、フラッシュ照会が無視されてもよい。
【0068】
次に図11を参照すると、本発明の好適な実施例に従い、ディレクトリ消し込み論理61を操作する典型的な方法のハイレベル論理フローチャートが示される。図示のように、プロセスはブロック260で開始し、ブロック262に進み、ディレクトリ消し込み論理61がカウントダウン・カウンタを選択カウント値によりリセットし、このカウント値が、LMD72内のディレクトリ・エントリが消し込まれる頻度を決定する。カウンタの初期値はハードウェアにより決定されるか、ソフトウェア・プログラマブルである。次に、ブロック264で、カウンタにより保持されるカウントが0か否かが判断される。0でない場合、カウンタはブロック266で減分され、プロセスはブロック264に戻る。
【0069】
ブロック264で、カウンタが0にカウントダウンしたと判断されると、プロセスはブロック268に進み、システム・メモリ制御装置71が、ディレクトリ・エントリ・ポインタにより示されるLMD72内のディレクトリ・エントリを読出す。LMD72内のディレクトリ・エントリが、関連データがどのリモート・ノード52内にも保持されていないと示す場合(例えばLMD72内で無効状態)、プロセスは直接、後述のブロック274に移行する。しかしながら、LMD72から読出されるディレクトリ・エントリが、少なくとも1つのリモート・ノード52が関連データのコピーを保持すると示す場合、プロセスはブロック270からブロック272に進む。ブロック272では、システム・メモリ制御装置71がアドレス専用フラッシュ照会を、そのローカル相互接続58上に発行する。フラッシュ照会はローカル・ノード制御装置56によりスヌープされ、ノード制御装置56により、LMD72のエントリに含まれる情報量に応じて、フラッシュ照会内で指定される各リモート・ノード52に、或いは全てのリモート・ノード52に送信される。ブロック272に続き、ブロック274でシステム・メモリ制御装置71はディレクトリ・エントリ・ポインタを増分し、LMD70内の次のエントリを指し示す。その後、プロセスはブロック262に戻り、再度繰り返される。
【0070】
次に図12を参照すると、本発明の好適な実施例に従い、リモート・ノード52のRMC制御装置73が、ホーム・ノード52から発行されたアドレス専用フラッシュ照会を処理する典型的な方法のハイレベル論理フローチャートが示される。プロセスはブロック300で開始し、その後ブロック302に進み、そこでメモリ制御装置64がアドレス専用フラッシュ照会をスヌープするまで繰り返される。アドレス専用フラッシュ照会のスヌープに応答して、プロセスはブロック304に進み、メモリ制御装置64がそのRMD74から、フラッシュ照会内のアドレスにより識別されるディレクトリ・エントリを読出す。ディレクトリ・エントリ内で示されるコヒーレンス状態にもとづき、メモリ制御装置64はRMC70が、フラッシュ照会アドレスに関連付けられる有効データを保持するか否かを判断する。保持しない場合、プロセスは前述のブロック302に戻る。
【0071】
ブロック306に戻り、RMD74内のディレクトリ・エントリが、RMC70がフラッシュ照会アドレスに関連付けられる有効キャッシュ・ラインを保持すると示すことに応答して、メモリ制御装置64は次に、ブロック308及び310により示されるように、そのキャッシュ・ラインを割当て解除するか否かを判断する。この判断は、例えば、キャッシュ・ラインがリモート・ノード52において、活発に使用されているか否か、或いは、メモリ制御装置64が使用可能なスヌープ・キューまたは他のファクタを有するか否かなどにもとづく。RMC70が、ローカル・キャッシュ階層62により保持されるリモート・データを含むようにインプリメントされる本発明の実施例では、メモリ制御装置64は、RMD74から読出されるディレクトリ・エントリ内のいずれかの包含ビットが、セットされているか否かを判断することにより、示されるキャッシュ・ラインが依然活発に使用されているか否かを判断できる。メモリ制御装置64が、フラッシュ照会内で識別されるキャッシュ・ラインを割当て解除しないと判断する場合(例えば、キャッシュ・ラインが依然使用されているか、スヌープ・キューが使用可能でないことによる)、識別されたキャッシュ・ラインは割当て解除されず、プロセスは単に前述のブロック302に戻る。
【0072】
他方、リモート・ノード52内のメモリ制御装置64が、キャッシュ・ラインが割当て解除されると判断すると、プロセスはキャッシュ・ライン割当て解除プロセスを表すブロック312乃至316を実行する。図示の割当て解除プロセスに従い、メモリ制御装置64は、単にRMD74内のディレクトリ・エントリを更新することにより、未変更のキャッシュ・ラインを割当て解除する。その際、ホーム・ノード52へは何の通知も行われない。それに対して、変更キャッシュ・ラインはRMD74内で無効化され、従来通りホーム・ノード52に書戻される。もちろん当業者であれば、図8及び図9に示される割当て解除方法が、ブロック312乃至316に示される割当て解除プロセスの代わりに、インプリメントされ得ることが理解できよう。キャッシュ・ライン割当てプロセスに続き、図12に示されるプロセはブロック302に戻る。
【0073】
図11及び図12に示されるLMD消し込みプロセスは、ローエンド及びハイエンドNUMAコンピュータ・システムの両方に対して利点を提供する。コストが重点課題であるローエンドNUMAコンピュータ・システムでは、LMDが比較的小規模であることが有利である。従って、キャッシュ・ラインのリモート・コピーをキャッシュするノードの特定のノードIDは、一般にLMD内に保持されない。その結果、ホーム・ノードのメモリ制御装置が、キャッシュ・ラインへの排他アクセスの要求に応答して、そのキャッシュ・ラインを無効化するように要求されるとき(更にそのキャッシュ・ラインが変更済みの場合、ホーム・ノードへのデータの書戻しを強要されるとき)、メモリ制御装置はフラッシュ・コマンドを他の全てのノードに同報しなければならない。なぜなら、メモリ制御装置は、どのノードが実際にそのキャッシュ・ラインをアクセスしたかの記録を有さないからである。図11及び図12に示されるディレクトリ消し込み方法は、新たなリクエスタがデータを待機している間に、要求時フラッシュ・コマンドが同報されなければならない機会を低減することにより、ローエンド・システムの性能を向上させる。本発明のローエンド・インプリメンテーションは、依然フラッシュ照会を全てのノードに同報する必要があるが、こうした同報は、排他アクセスが続くリクエスタにより要求されるよりずっと前に実行される傾向がある。
【0074】
非常に大規模なRMCを有するハイエンドNUMAコンピュータ・システムでは、フラッシュ照会を用いて、遠隔的に保持される不要なキャッシュ・ラインを割当て解除することによる利点が、RMCの管理により大きく起因する。ハイエンド・システムは一般に非常に大規模なRMCを有するので、特定のノード内の処理ユニットによりもはや要求されないキャッシュ・ラインが、そのノードのRMC内に非常に長い時間留まるかもしれず、ときとして決して割当て解除されないかもしれない。このような場合、本発明を除くと、キャッシュ・ラインがキャッシュから強制退去される唯一の方法は、そのキャッシュ・ラインへの排他アクセスの要求に応答して、ホーム・ノードが要求時フラッシュ・コマンドを発行することである。従って、本発明はリモート・ノードが、現在LMD内で追跡されているキャッシュ・ラインのコピーを無効化することを、"弱く(weakly)"強いるものであり、ホーム・ノードがそのキャッシュ・ラインの新たなアクセス要求を受信するとき、関連メモリ制御装置が最初に要求時フラッシュ・コマンドを1つ以上のリモート・ノードに発行する必要なく、キャッシュ・ラインがシステム・メモリから即時送信される可能性が高くなる。
【0075】
本発明の一部の実施例では、フラッシュ照会がスヌープされ、キャッシュ階層62のキャッシュ制御装置156により作用される。しかしながら、フラッシュ照会のターゲット・キャッシュ・ラインのキャッシュ階層62内での存在は、データが続いてアクセスされることを示すので、フラッシュ照会を遵守する利点は、ターゲット・キャッシュ・ラインが保持されるキャッシュ階層62内の上位階層(higher-up)を縮小させる。従って、例えばターゲット・キャッシュ・ラインがL3キャッシュ内にのみ保持される場合、フラッシュ照会に従うことが賢明であるが、ターゲット・キャッシュ・ライン(またはその一部)が、関連L2またはL1キャッシュ内に保持される場合には、フラッシュ照会を無視することが賢明である。
【0076】
非集中グローバル・コヒーレンス管理:
前述のように、本発明は、別のノード52におけるサービスを要求する読出しタイプの命令が、ノード制御装置56によりエンキューされる時間を低減することにより、ノード制御装置56内で要求されるキュー57の数を有利に低減する。本発明は更に、ノード制御装置56からグローバル・コヒーレンス管理の責任を除去することにより、ノード制御装置56内で要求されるアドレス、データ及びコマンド・キュー57の数を低減する。
【0077】
図1のNUMAコンピュータ・システム8などの従来システムでは、フラッシュ・コマンドがノード相互接続12上で受信されるとき、ノード制御装置24が、フラッシュ・コマンドがそのノード10内で成功裡に完了されることを保証する責任を負う。従って、フラッシュ・コマンドがノード相互接続12を介して受信されたときから、全てのローカル・キャッシュ階層18及びRMC28がターゲット・キャッシュ・ラインのコピーを無効化し、変更データが存在する場合、それらをホーム・ノードに書戻すまで、ノード制御装置24はそのキュー32の1つに、フラッシュ・コマンドを保持しなければならない。当然のことながら、このプロセスは、ノード相互接続12を介する通信の待ち時間を考慮すると、2500サイクル以上を要する。従って、従来のノード制御装置24は一般に、深いすなわち項目数の多いキュー32を装備されるにも拘わらず、コヒーレンス・トラフィックがかなり多い場合には、キュー32は依然性能上の障害となる。この性能上の障害を解決するために、本発明の好適な実施例はRMC制御装置73を用いて、コヒーレンス管理を非集中化する。
【0078】
図13を参照すると、本発明に従い、非集中コヒーレンス管理を用いて、フラッシュ・コマンドが処理される好適な方法のハイレベル論理フローチャートが示される。図示の実施例では、各ノード52内のRMC70が、ローカル・キヤッシュ階層62内にキャッシュされる他のノード52からの全てのデータをまとめて含むものと仮定される。
【0079】
図示のように、図13に示されるプロセスはブロック260で開始し、その後ブロック262に進み、リモート・ノード52のノード制御装置56が、リモート・ノード52内で無効化されるキャッシュ・ラインのフラッシュ・アドレスを指定するフラッシュ・コマンドを受信し、変更データが存在する場合、それがホーム・ノード52に書戻される。前述のように、こうしたフラッシュ・コマンドは一般に、ホーム・ノード52のメモリ制御装置64により、次のような事象に応答して、すなわち、LMD72内で、1つ以上のリモート・ノード52にチェックアウト済みと示されるキャッシュ・ラインに対するRWITM要求の受信に応答して発行される。フラッシュ・コマンドの受信に応答して、リモート・ノード52のノード制御装置52は、フラッシュ・コマンドをキュー57にエンキューし、ブロック264で示されるように、フラッシュ・コマンドをそのローカル相互接続58上に送信する。
【0080】
フラッシュ・コマンドのスヌープに応答して、ローカル・メモリ制御装置64の各々は、スヌープ応答を提供する。ブロック266で示されるように、ターゲット・アドレスがマップされたRMC70に関連付けられるメモリ制御装置64(以下、責任メモリ制御装置)が、自身がフラッシュ・コマンドのコヒーレンス管理責任を受諾することを示すスヌープ応答(これは単にヌル・スヌープ応答であってもよい)を提供し、フラッシュ・コマンドをそのキュー77の1つにエンキューする。これらのスヌープ応答がノード制御装置56により組み合わされ、"フラッシュ受諾"組み合わせ応答(例えばヌル組み合わせ応答)が生成され、これがノード制御装置56により全てのスヌーパに提供される。重要な点は、組み合わせ応答により、責任メモリ制御装置64が、フラッシュ・コマンドがこのリモート・ノード52で完了されることを保証する責任を受諾したことが示されるので、ノード制御装置56はブロック268で、フラッシュ・コマンドに割当てられたキュー57を割当て解除し、この資源を他の命令のために解放する。
【0081】
次に、ブロック270で、責任メモリ制御装置64のRMC制御装置73が、そのRMD74内の包含関係情報を参照することにより、フラッシュ・アドレスに関連付けられるキャッシュ・ラインの有効コピーが、いずれかのローカル・キャッシュ階層62内に保持されるか否かを判断する。保持される場合、プロセスはブロック272に移行し、RMC制御装置73がフラッシュ・コマンドをローカル相互接続58上に再発行し、フラッシュ・アドレスに関連付けられるキャッシュ・ラインの局所的に保持されるコピーの無効化を強要する。フラッシュ・コマンドのスヌープに応答して、キャッシュ階層62及び他のメモリ制御装置64がスヌープ応答を提供する。前述のように、ターゲット・キャッシュ・ラインの有効コピーを保持しないキャッシュ階層62は、ヌル・スヌープ応答を提供し、ターゲット・キャッシュ・ラインの有効コピーを保持するキャッシュ階層62は、ターゲット・キヤッシュラインが無効化され、変更データが存在する場合、それがホーム・ノードに書戻されるまで、フラッシュ・コマンドに対して再試行スヌープ応答を提供する。これらのスヌープ応答は、責任メモリ制御装置64に関連付けられるインタフェース・ユニット65内の応答論理63により組み合わされる。ブロック274で示されるように、組み合わせ応答が再試行組み合わせ応答の場合、少なくとも1つのキャッシュ階層62が依然、ターゲット・キャッシュ・ラインのコピーを無効化処理中か、変更データをホーム・ノード52に書戻し処理中であることを示し、プロセスは前述のブロック272に戻る。しかしながら、ヌル組み合わせ応答が受信される場合には、フラッシュ・プロセスがリモート・ノード52において完了したことを示し、プロセスはブロック274からブロック275に進む。
【0082】
ブロック275では、RMC制御装置73がRMD74を参照して、その関連RMC70が、フラッシュ・アドレスにより識別されるキャッシュ・ラインの有効コピーを保持するか否かを判断する。保持しない場合、プロセスは後述のブロック276に進む。しかしながら、RMC70がフラッシュ・コマンドのターゲット・キャッシュ・ラインの有効コピーを保持する場合、RMC制御装置73はRMC70内のターゲット・キャッシュ・ラインを無効化し、ブロック277で示されるように、変更データが存在する場合、それをホーム・ノード52のシステム・メモリに書戻す。
【0083】
プロセスは次にブロック277からブロック276に進み、RMC制御装置73がフラッシュ命令の局所的完了を示すフラッシュACK命令をローカル相互接続58上に発行し、フラッシュ・コマンドの処理に割当てられたキュー77を割当て解除する。ブロック278で示されるように、ノード制御装置56はフラッシュACK命令を一時的にエンキューし、それをホーム・ノード52に転送し、ホーム・ノードのメモリ制御装置64に、フラッシュ命令がリモート・ノード52において完了したことを示す。その後、図13に示されるプロセスはブロック280で完了する。
【0084】
図13のプロセスにより示されるように、本発明は、グローバル・コヒーレンス管理の責任をノード制御装置からメモリ制御装置に譲渡することにより、ノード制御装置設計の単純化を可能にする一方で、同時にサービスされるグローバル・コヒーレンス管理命令の数を増加させる。このインプリメンテーションは、RMC制御装置73により提供されるキューの大きなプールの存在を仮定すると、非常に多数の同時コヒーレンス管理命令のサポートを可能にするだけでなく、処理ユニット54の数の増加に伴い、スケーリングし、それにより潜在的な性能障害を解決する。
【0085】
分散グローバル・コヒーレンス管理:
本発明は、ノード制御装置による集中コヒーレンス管理ではなく、メモリ制御装置による非集中コヒーレンス管理を推進するだけでなく、選択命令に対するグローバル・コヒーレンス管理の責任を、複数の制御装置の間で分散することにより、キュー資源の効率的な利用を推進する。
【0086】
図1のNUMAコンピュータ・システム8などの、従来のNUMAコンピュータ・システムでは、読出しタイプの要求(例えばREAD、RWITMなど)がリモート・ノードから受信されてから、要求キャッシュ・ラインがリモート・ノードにより成功裡に受信されるまで、ホーム・ノードのノード制御装置24内のコヒーレンス管理キュー32が、その読出しタイプの要求に割当てられる。ノード制御装置はこの期間を通じて、キュー割当てを保持しなければならない。なぜなら、ノード制御装置24は、前の要求のターゲット・キャッシュ・ラインがリモート・ノードに配信されるまで、同じキャッシュ・ラインをターゲットとするフラッシュ命令をホーム・ノードから発行できないからである。換言すると、従来のNUMAコンピュータ・システムでは、グローバル・コヒーレンスを維持するために、ホーム・ノードのノード制御装置が、最初の要求、及び続く要求によるフラッシュ命令に応答して、リモート・ノードへのデータ配信を厳密に順序付ける責任を負い、従って、要求データが成功裡にリモート・ノードに配信されるまで、第1の要求へのキューの割当てを維持しなければならない。
【0087】
本発明は、特殊コマンド(以下Numafyコマンドと称す)をインプリメントすることにより、前述の従来のコヒーレンス管理手法を改善する。このコマンドは、グローバル・コヒーレンス管理の責任を制御装置間で譲渡し、それにより、従来のNUMAコンピュータ・システムの性能を妨げる順序付け及びキューイング要件を排除する。本発明のNumafyコマンドの典型的な利用のタイミング図が図14に示される。
【0088】
図14を参照すると、リモート・ノードによる読出しタイプの要求をサービスするために使用される、NUMAコンピュータ・システム50のリモート・ノード及びホーム・ノードのローカル相互接続上の命令を示す時間−空間図が示される。図示のプロセスは、図6に関連して前述した革新的な読出し再発行方向を採用する。
【0089】
図示のように、リモート・ノード52(図14ではノード1として示される)内の低レベル・キャッシュ132のキャッシュ制御装置156が、別のノードがホーム・ノード52であるキャッシュ・ラインの排他アクセスを得るために、読出しタイプの要求(この場合RWITM要求300)を、そのローカル相互接続58上に発行するときプロセスは開始する。前述のように、キャッシュ制御装置156が、そのキャッシュ・ディレクトリ140内でのCPUストア要求のミスに応答して、RWITM要求300を発行する。RWITM要求300内では、NCQフィールド126が初期に0にセットされ、従って、ローカル・ノード制御装置56は、RWITM要求300が局所的にサービスされないと決定されるまで、RWITM要求300をエンキューしない。RWITM要求はまた、キャッシュ制御装置156の要求キュー134の1つにエンキューされる。
【0090】
RWITM要求300のスヌープに応答して、ローカル相互接続58に結合されるスヌーパ(すなわちキャッシュ制御装置156、メモリ制御装置64、及びノード制御装置56)が、スヌープ応答302を提供し、これらがRWITM要求300を発信したインタフェース・ユニット65内の応答論理63により組み合わされて、組み合わせ応答304が生成され、全てのスヌーパに提供される。図14に示される典型的な動作状況は、ノード1内のスヌーパがターゲット・キャッシュ・ラインへの排他アクセスを提供できず、RWITM要求300のターゲット・アドレスがリモート・アドレスであると、組み合わせ応答304が示すと仮定する。組み合わせ応答304に応答して、ターゲット・キャッシュ・ラインの共用コピーを有する他のローカル・キャッシュ階層62またはRMC70が、ターゲット・キャッシュ・ラインのそのコピーの無効化プロセスを開始し、キャッシュ制御装置156がNCQフィールド126が1にセットされたRWITM要求306を再発行する。ローカル相互接続58に結合されるスヌーパが、スヌープ応答308を提供することにより、再発行されたRWITM要求306に応答し、これらが組み合わされて、第2の組み合わせ応答310が生成される。
【0091】
図6に関連して述べたように、ノード1のノード制御装置56はRWITM要求を、そのサービスのためにノード2(すなわちターゲット・キャッシュ・ラインのホーム・ノード)に転送し、ノード制御装置応答を組み合わせ応答310を介して、キャッシュ132に提供することにより要求が転送されたことを示す。組み合わせ応答310の受信に際して、キャッシュ制御装置156は、要求されたRWITM要求に関連付けられるローカル・フラグ136(図5参照)をセットする。ローカル・フラグ136は、このキャッシュ132がターゲット・キャッシュ・ラインの局所的所有権を獲得したことを示し、従って、保護ウィンドウT0の間に、キャッシュ・ラインを要求する他のローカル・リクエスタが存在する場合、そうした要求に対して再試行スヌープ応答を提供することにより、彼らからターゲット・キャッシュ・ラインの所有権を保護する。しかしながら、キャッシュ制御装置156がホーム・ノードからのフラッシュ命令をスヌープする場合、キャッシュ制御装置156はフラッシュ命令を無視する。なぜなら、キャッシュ132はまだターゲット・キャッシュ・ラインの有効コピー、またはターゲット・キャッシュ・ラインのグローバル所有権を有さないからである。この時点で、キャッシュ制御装置156はホーム・ノードから、1)ターゲット・キャッシュ・ラインと、2)ターゲット・キャッシュ・ラインのグローバル所有権が付与されたことを示すNumafyコマンドの受信を待機する。動的動作状態に応じて、キャッシュ制御装置156はターゲット・キャッシュ・ライン及びNumafyコマンドを任意の順序で受信する。
【0092】
図示のように、ノード相互接続55を介するRWITM要求の受信に応答して、ノード2のノード制御装置56は、対応するRWITM要求320をノード2のローカル相互接続58上に発行する。ノード2内のスヌーパが適切なスヌープ応答322を提供し、これらがノード制御装置56により組み合わされて、RWITM要求320が、ターゲット・キヤッシュライン・データが存在するシステム・メモリ・アドレス空間68に関連付けられるメモリ制御装置64によりサービスされることを示す組み合わせ応答324が生成される。一旦メモリ制御装置64がRWITM要求320を受諾し、そのメモリ制御装置64のシステム・メモリ制御装置71が、RWITM要求320をそのコヒーレンス管理キュー79にエンキューすると、LMD72によりターゲット・キャッシュ・ラインのコピーを保持することが示される、ノード1以外の各リモート・ノード52に対して、システム・メモリ制御装置71がフラッシュ・コマンド330を発行する。更に、システム・メモリ制御装置71がアドレス専用Numafyコマンド326をノード1に発行し、メモリ読出しキューをディスパッチして、要求データをノード1に提供する。LMD72が、ターゲット・キャッシュ・ラインがリモート・ノード52からフラッシュ・バックされる必要がないと示す場合、システム・メモリ・アドレス空間68の読出しが即時開始し、Numafyコマンド326が発行される前に、ターゲット・キャッシュ・ライン・データ332がノード1に提供される。
【0093】
一旦Numafyコマンド326が発行されると、要求されたあらゆるフラッシュ命令が完了し、システム・メモリ読出し操作が開始される。そして、システム・メモリ制御装置71がRWITM要求320がサービスされるべきとみなし、たとえノード1がまだターゲット・キャッシュ・ライン・データを受信していなくても、RWITM要求320に割当てられたコヒーレンス管理キュー79を、続く要求に再割当てする。従って、本発明によれば従来技術とは異なり、キャッシュ・ラインのグローバル所有権の付与、及びキャッシュ・ライン・データ332の配信が分離される。
【0094】
ノード相互接続55を介するアドレス専用Numafyコマンドの受信に応答して、ノード1のノード制御装置56は、アドレス専用Numafyコマンド340をローカル相互接続58上に発行する。ノード1の要求元キャッシュ制御装置156がアドレス専用Numafyコマンド340をスヌープするとき、キャッシュ制御装置156は、RWITM要求に関連付けられるグローバル・フラグ138をセットする。セットされたグローバル・フラグ138は、要求元キャッシュ132がターゲット・キャッシュ・ラインのグローバル所有権を受信したこと、従って、第2の保護ウィンドウT1の間に、ターゲット・キャッシュ・ラインを、他のローカル・リクエスタからだけではなく、ホーム・ノードからのあらゆるフラッシュまたはクリーン・コマンドからも保護しなければならないことを示す。それ故、保護ウィンドウT1の間、要求元キャッシュ制御装置156は、局所的に受信される、またはホーム・ノード(すなわちノード2)から受信されるあらゆるフラッシュ、クリーンまたは他の類似の命令に対して、再試行スヌープ応答を提供しなければならない。尚、保護ウィンドウT1は、要求元キャッシュ制御装置156がRWITM要求のサービスを完了したとき閉じられる。
【0095】
一旦要求元キャッシュ制御装置156がターゲット・キャッシュ・ライン・データ342を受信すると、キャッシュ制御装置156が保留のCPUストア要求をサービスし、そのキャッシュ・ディレクトリ140内のターゲット・キャッシュ・ラインのコヒーレンス状態を、変更コヒーレンス状態に更新する。この時点で、RWITM要求のサービスが完了し、キャッシュ制御装置156がローカル・フラグ136及びグローバル・フラグ138の両方をリセットする。続いて、キャッシュ制御装置156は、ターゲット・キャッシュ・ラインをターゲットとするフラッシュまたはクリーン・コマンドに対して、再試行スヌープ応答を提供するが、代わりに、変更データをホーム・ノードにプッシュ・バックし、更にフラッシュ・コマンドに対しては、キャッシュ・ラインのコピーを無効化することにより、こうした要求を遵守してもよい。
【0096】
このように、図14は、グローバル・コヒーレンス管理をNUMAコンピュータ・システム内の制御装置間で分散させる方法を示し、これはシステムワイドなコヒーレンス管理の責任を、要求データの配信から分離することにより、システム・メモリ制御装置のコヒーレンス管理キューのより効率的な利用を推進する。その結果、システム・メモリ制御装置内のキュー資源が、システム・メモリ制御装置が要求のサービスに関わっているときだけ、その要求に割当てられ、その後、従来システムに比較して遙かに早く、他の要求のサービスのために使用可能になる(すなわち、2000サイクル以上を費やす、少なくともノード相互接続55の待ち時間の期間が短縮される)。結果的に、所与の性能レベルをサポートするために、少ない数のコヒーレンス管理キューが要求される。
【0097】
LMDデータ所有権ヒストリ:
図14に示されるように、システム・メモリ制御装置71がリモート・ノードからRWITM要求を受信すると、システム・メモリ制御装置71はRWITM要求をサービスするために、要求元ノードにターゲット・キャッシュ・ラインのシステムワイドな排他所有権を付与しなければならない。しかしながら、システム・メモリ制御装置71がターゲット・キャッシュ・ラインのREAD要求を受信する場合、システム・メモリ制御装置71はターゲット・キャッシュ・ラインの共用所有権か排他所有権のいずれかを付与する。
【0098】
図1に示されるような従来のNUMAコンピュータ・システムでは、LMD26が、ターゲット・キャッシュ・ラインがいずれかのリモート・ノード10にチェックアウトされていると示すとき、リモート・ノードからのREAD要求に応答して、一般に排他所有権がホーム・ノードにより付与される。このように、リモート・ノードにおけるターゲット・キャッシュ・ラインの共用コピーの不必要な無効化が回避される。しかしながら、LMD26が、ターゲット・キャッシュ・ラインがリモート・ノード10にチェックアウトされてないと示す場合には、2つの異なるインプリメンテーションが採用された。
【0099】
第1の従来のインプリメンテーションでは、常にホーム・ノードがREAD要求に応答して、ターゲット・キャッシュ・ラインの非排他所有権をリモート・ノードに付与する。このインプリメンテーションは、ターゲット・キャッシュ・ラインの遠隔的に保持されるコピーの不必要な無効化を生じないが、同じキャッシュ・ラインをターゲットとする続くストア命令に、大きな待ち時間が生じる。なぜなら、READ要求を発行したリモート・ノードが、ターゲット・キャッシュ・ラインへの排他アクセスを獲得するために、RWITE要求を発行しなければならないからである。リモート・データをターゲットとするストア命令は、長い待ち時間(例えば2000サイクル以上)を被ることになる。
【0100】
第2の従来のインプリメンテーションによれば、LMD26が、ターゲット・キャッシュ・ラインがリモート・ノードにチェックアウトされてないと示す場合、READ要求に応答して、ターゲット・キャッシュ・ラインの排他所有権を常にリモート・ノードに付与することにより、ストア命令の性能ペナルティが排除される。しかしながら、この第2のインプリメンテーションも問題を有する。なぜなら、第1のリモート・ノードが実際にキャッシュ・ラインを変更したか否かに拘わらず、ホーム・ノードが第2のリモート・ノードによる続くREAD要求に応答して、常にクリーン命令(すなわち、キャッシュ・ラインが変更済みの場合、その無効化は強要しないが、書戻しを強要する命令)を、排他所有権を有するリモート・ノードに発行しなければならないからである。従って、多くの場合、クリーン命令が完了するまで続くREAD要求が不必要に遅延される。
【0101】
本発明は、各LMDエントリに対して、ノードごとのヒストリ情報を保持することにより、従来技術の欠点を解決する。ヒストリ情報は、リモート・ノードによるREAD要求に応答して、関連キャッシュ・ラインの排他所有権または非排他所有権のいずれを付与すべきかを示す。例えば、図15に示される好適な実施例では、LMD72内の各ディレクトリ・エントリ360が、ノードごとのコヒーレンス状態情報362と、ノードごとのヒストリ情報364の両方を含む。
【0102】
当業者であれば明らかなように、ノードごとのヒストリ情報364は、非常に多数の好適な方法のいずれかに従い、システム・メモリ制御装置71により更新される。図16は、ヒストリ情報364を更新する現在好適な1方法の状態図を示す。図示の実施例では、システム・メモリ制御装置71が各リモート・ノードに対して、2ビット・ヒストリ指示を保持し、図16に示される4つの可能な状態、すなわち状態A、B、C及びDを表す。システム・メモリ制御装置71が、リモート・ノード52から受信される各読出しタイプの要求(例えばREADまたはRWITM)に応答して、そのリモート・ノードのヒストリ状態を更新する。リモート・ノード52が、関連システム・メモリ・アドレス空間68に内在するデータのキャッシュ・ラインに対するREAD要求を発行するとき、システム・メモリ制御装置71は、そのキャッシュ・ライン及びリモート・ノードのヒストリ状態を参照することにより、キャッシュ・ラインの非排他所有権または排他所有権のいずれを付与すべきかを決定する。システム・メモリ制御装置71により付与される所有権のタイプは、例えば、所有権を付与するために使用されるNumafyコマンド内の排他フラグにより示される。
【0103】
図16に示されるように、システム・メモリ制御装置71は、LMD72の各ディレクトリ・エントリ360内の各リモート・ノード52のヒストリ状態を、ヒストリ状態Aに初期化する。その後、状態Aから状態Bへの遷移、及び状態Bでのループにより示されるように、システム・メモリ制御装置71は、リモート・ノード52がRWITM要求を発行することにより、キャッシュ・ラインの排他所有権を獲得するまで、そのキャッシュ・ラインの非排他所有権をそのリモート・ノード52に付与する。
【0104】
RWITM要求の受信に応答して、システム・メモリ制御装置71はターゲット・キャッシュ・ラインの排他所有権を付与し、要求元リモート・ノードのヒストリ状態を、任意の可能なヒストリ状態A乃至Dから、状態Cに更新する。状態CとDの間、及び状態DとBの間の可能な遷移により示されるように、システム・メモリ制御装置71はその後、同一のリモート・ノード52による2つまでの順次READ要求に応答して、キャッシュ・ラインの排他所有権を付与する。同一のキャッシュ・ラインに対する第3の順次READ要求が、同一のリモート・ノードから受信される場合、システム・メモリ制御装置71は、リモート・ノードがそのキャッシュ・ラインに対して再度RWITMを発行するまで、非排他所有権を付与するだけである。
【0105】
ノードごとのヒストリ状態情報を用いて、リモート・ノードからのREAD要求に関わるターゲット・キャッシュ・ラインの、排他所有権または非排他所有権の付与を決定することにより、従来技術に比較して、同一のリモート・ノード内の続くストア命令に関連付けられる、または他のリモート・ノードによるREAD要求に関連付けられる不必要な待ち時間が、大幅に低減される。結果的に、NUMAコンピュータ・システム50の全体性能が改善される。
【0106】
データ及び命令のプリフェッチ:
図1のNUMAコンピュータ・システム8などの、従来のNUMAコンピュータ・システムでは、データ及び命令のプリフェッチ要求が、CPUのプリフェッチ・エンジンにより開始され、次にCPUの最下レベルのインライン・キャッシュのキャッシュ制御装置により、プリフェッチされる各キャッシュ・ラインに対して、1つのREAD要求がローカル相互接続上に発行される。深いプリフェッチ・アルゴリズムでは、この従来のプリフェッチ手法は、キャッシュ制御装置に非常に多くの読出しキューを装備することが要求される。大規模なマルチプロセッサ・システムでは、これらの資源のコストが、もちろんCPUチップの数だけ乗算され、従って、総システム・コストの大きな割合を占めることになる。
【0107】
プリフェッチ・データの発信元(例えばローカル・システム・メモリか、または別のノードのシステム・メモリか)に応じて、プリフェッチ要求に割当てられる読出しキューは、長い期間アクティブ(ビジー)でいられる。明らかに、性能的観点から、要求時読出し要求のサービスを遅延することは望ましくない。なぜなら、全ての読出しキューがプリフェッチ要求に割当てられているからである。要求時読出し要求とプリフェッチ読出し要求との間の、読出し要求の競合を解決するために、プリフェッチ読出しキューの別のセットを生成することが可能である。しかしながら、これは追加のコスト及び複雑化を招き、読出し要求をプリフェッチするために割当てられたキューがビジーでいる期間を低減しない。
【0108】
本発明は、従来技術における前述の欠点を、改善されたプリフェッチ手法を導入することにより解決し、そこではプリフェッチ命令がキャッシュ制御装置ではなく、メモリ制御装置により作成される。本発明によれば、初期要求時データ・ロードまたは命令フェッチが要求元処理ユニットにより発行されるとき、プリフェッチ・ヒント情報がREAD命令に付加される。このヒント情報が例えば、プリフェッチする多数のキャッシュ・ラインと、キャッシュ・ライン間のストライドを含む。読出しの受信に応答して、メモリ制御装置が要求データまたは命令を送信し、次にプリフェッチ・ヒントを用いて、任意的にWRITE命令により、プリフェッチ・データを要求元処理ユニットに送信する。
【0109】
次に図17を参照すると、本発明のプリフェッチ手法に従い、低レベル・キャッシュ132のキャッシュ制御装置156が、付加されたプリフェッチ・ヒントを有する要求時READ要求を発行する典型的な方法のハイレベル論理フローチャートが示される。図示のように、プロセスはブロック380で開始し、その後、キャッシュ制御装置156が、その関連CPU60からロード要求を受信するまでブロック382に留まる。ロード要求の受信に応答して、キャッシュ制御装置156はブロック384で、ロード要求がそのキャッシュ・ディレクトリ140内でヒットするか否かを判断する。ヒットする場合、ブロック386で、キャッシュ制御装置156は要求データをデータ記憶130から読出し、要求データをCPU60に提供する。プロセスはその後ブロック382に戻る。
【0110】
ブロック384に戻り、キャッシュ制御装置156が、ロード要求がキャッシュ・ディレクトリ140内でミスしたと判断すると、ブロック390及び392で示されるように、キャッシュ制御装置はそのロード要求にもとづき、READ要求を生成し、プリフェッチ要求に含まれるプリフェッチ・ヒントが存在する場合、それをREAD要求に付加するか、READ要求内に含む。図7に示されるように、プリフェッチ・ヒントはREAD要求内のプリフェッチ(PF)フィールド128により伝達され、プリフェッチされるキャッシュ・ラインの数、及びプリフェッチ・キャッシュ・ライン間のアドレス・ストライドを指定する。次に、キャッシュ制御装置156が要求キュー134をREAD要求に割当て、ブロック394で示されるように、READ要求をそのローカル相互接続58上に発行し、その後ブロック396で、要求データの返却を待機する。図7に関連して前述したように、READ要求は好適には、発行元キャッシュ制御装置156またはその処理ユニット54を識別する発信元タグ・フィールド119を含む。
【0111】
ブロック398で示されるように、READ要求のターゲットである要求キャッシュ・ラインが受信されると、キャッシュ制御装置156はキャッシュ・ラインをデータ記憶130内に記憶し、キャッシュ・ディレクトリ140を更新し、READ要求に割当てられた要求キュー134を割当て解除し、ロード要求により要求されたデータを関連CPU60に提供する。その後、図17に示されるプロセスは前述のブロック382に戻る。
【0112】
次に図18を参照すると、本発明に従い、メモリ制御装置64がプリフェッチ・ヒントを含むREAD要求に応答する典型的な方法のハイレベル論理フローチャートが示される。図示のように、プロセスはブロック400で開始し、その後ブロック402で、メモリ制御装置64が、より詳細にはシステム・メモリ制御装置71がREAD要求(図17のブロック394で発行される)を受信するまで繰り返される。READ要求の受信に応答して、プロセスはブロック404に進み、ここでシステム・メモリ制御装置71がLMD72を参照して、READ要求のターゲット・キャッシュ・ラインが、リモート・ノード52により排他的に保持されるか否かを判断する。否定の場合、プロセスは直接ブロック408に進む。しかしながら、LMD72がターゲット・キャッシュ・ラインが遠隔的に排他的に保持されると示す場合、システム・メモリ制御装置71は、好適には図13に関連して前述したプロセスに従い、リモート・ノードからそのキャッシュ・ラインをフラッシュする。
【0113】
次にブロック408で、システム・メモリ制御装置71がターゲット・キャッシュ・ラインを関連システム・メモリ・アドレス空間68から読出し、要求キャッシュ・ラインを要求元キャッシュ132に発信する。更に、ブロック410で示されるように、システム・メモリ制御装置71は、READ要求がそのプリフェッチ・フィールド128にプリフェッチ・ヒントを含むか否かを判断する。含まない場合、READ要求のサービスが完了し、プロセスは前述のブロック402に戻る。しかしながら、READ要求がそのプリフェッチ・フィールド128にプリフェッチ・ヒントを含む場合には、システム・メモリ制御装置71はブロック412で、プリフェッチ要求に割当てられ得るそのキュー79の1つが使用可能か否か、或いは、こうした全てのプリフェッチ・キューがビジーか否かを判断する。プリフェッチ要求に割当てられ得る全てのキューがビジーの場合、システム・メモリ制御装置71はプリフェッチ・ヒントを無視し、プロセスはブロック402に戻る。従って、システム・メモリ制御装置71がプリフェッチ・データを提供するオプションを有するが、プリフェッチ・ヒントが無視される場合、READ要求を再試行しないという点で、システム・メモリ制御装置71によるプリフェッチ要求のサービスは、好適には不正確である。
【0114】
ブロック412に戻り、キュー79の1つがプリフェッチ要求への割当てのために使用可能と仮定すると、プロセスはブロック414に進み、システム・メモリ制御装置71がキュー79の中から、プリフェッチ要求をサービスするためのプリフェッチ・キューを割当てる。ブロック416及び418で示されるように、システム・メモリ制御装置71は次に、プリフェッチ・フィールド128内のプリフェッチ・ヒントにより指定されるプリフェッチ・データの1つ以上のキャッシュ・ラインを、関連システム・メモリ・アドレス空間68から読出し、それらを要求元キャッシュ132に送信する。ここで重要な点は、各キャッシュ・ラインが読出しデータとしてではなく、図10に示されるそれと類似のプリフェッチ(PF)WRITE命令において、要求元キャッシュ132に送信されることであり、それにより、プリフェッチ要求を管理するための読出しキューの使用が排除される。プリフェッチWRITE命令の正確なルーティングを保証するために、システム・メモリ制御装置71はREAD要求の発信元タグ・フィールド119の内容を、プリフェッチWRITE命令のアドレス部分の宛先タグ・フィールド242に配置する。プリフェッチ・データのキャッシュ・ラインを要求元キャッシュ階層62に送信後、システム・メモリ制御装置71はブロック420で、割当てられたプリフェッチ・キューを、キュー79の中から割当て解除する。その後、プロセスはブロック402に戻る。
【0115】
次に図19を参照すると、本発明に従い、要求元キャッシュがスヌープされたプリフェッチWRITE命令を処理する典型的な方法のハイレベル論理フローチャートが示される。図示のように、プロセスはブロック430で開始し、その後ブロック432で、キャッシュ階層62の1つ内の最下レベル・キャッシュ132が、プリフェッチ(PF)WRITE命令をそのローカル相互接続58上でスヌープするまで繰り返される。ローカル相互接続58上でのプリフェッチWRITE命令のスヌープに応答して、キャッシュ132のキャッシュ制御装置156は、プリフェッチWRITE命令の宛先タグ・フィールド242を調査し、それがプリフェッチWRITE命令のターゲットか否かを判断する。ターゲットでない場合、プロセスは終了しブロック432に戻る。
【0116】
ブロック434に戻り、宛先タグ・フィールド242が、キャッシュ132がスヌープされたプリフェッチWRITE命令のターゲットであると示す場合、キャッシュ制御装置156は、そのスヌープ・キュー135(図5参照)の1つが、プリフェッチWRITE命令への割当てのために使用可能か否かを判断する。プリフェッチWRITE命令に割当てられ得る全てのスヌープ・キュー135がビジーの場合、プロセスは終了しブロック432に戻る。これはすなわち、スヌープ・キュー135が使用不能な場合、キャッシュ制御装置156がプリフェッチ・データを受諾しないか、再試行スヌープ応答を発行しないことを示す。しかしながら、スヌープ・キュー135の1つがプリフェッチWRITE命令への割当てのために使用可能な場合、キャッシュ制御装置156はブロック438で、スヌープ・キュー135の1つをプリフェッチWRITE命令に割当て、次にブロック440で、プリフェッチ・データのキャッシュ・ラインの配信を待機する。次に、プリフェッチ・データのキャッシュ・ラインの受信に応答して、キャッシュ制御装置156がプリフェッチ・データをデータ記憶130に記憶し、適宜キャッシュ・ディレクトリ140を更新する。その後、キャッシュ制御装置156は、プリフェッチWRITE命令に割当てられたスヌープ・キュー135を割当て解除し、プロセスは前述のブロック432に戻る。
【0117】
図17乃至図19に示されるプリフェッチ方法は、従来技術に回る多くの利点を提供する。第1に、本発明のプリフェッチ方法は、要求元処理ユニット内のプリフェッチ読出しキューを排除することにより、全体的なシステム・キューのコストを削減する。プリフェッチWRITE命令を処理するためのメモリ制御装置キューの付随的な追加は、一般にコストがかからず、あらゆる低レベル・キャッシュ内にキューを提供するよりも少ないキューしか要求しない。第2に、プリフェッチが不正確な命令によりインプリメントされるので、メモリ制御装置またはキャッシュ制御装置のいずれかがビジーの場合、プリフェッチ・ヒントが安全に無視される。その結果、再試行応答に応答して再発行されるプリフェッチ命令によるバス・トラフィックが排除される。第3に、本発明では、キューがより効率的に使用される。なぜなら、プリフェッチWRITE命令をサービスするために割当てられる、要求元キャッシュ制御装置のスヌープ・キューが、従来技術において使用されるプリフェッチ読出しキューよりも遙かに短い期間ビジーであるからである。換言すると、プリフェッチREAD要求が発行されてから、要求プリフェッチ・データがシステム・メモリから受信されるまで、アクティブに維持されなければならない従来のプリフェッチ読出しキューと異なり、本発明では、プリフェッチWRITE命令がスヌープされるまで、キャッシュ制御装置のスヌープ・キューが割当てられない。
【0118】
結論:
以上述べたように、本発明は、改善されたデータ記憶、キューイング、及び通信効率を有するNUMAコンピュータ・システム及びその操作方法を提供する。本発明は特に、好適な実施例に関連して述べられてきたが、当業者であれば、その形態及び詳細における様々な変更が、本発明の趣旨及び範囲から逸れることなく可能であることが理解できよう。例えば、ここではNUMAアーキテクチャの多数の改良が組み合わされて示されたが、改良がそれぞれ独立に、或いは部分的に組み合わされてインプリメントされてもよい。
【0119】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0120】
(1)ノード相互接続により結合される少なくともホーム・ノードとリモート・ノードとを含む不均等メモリ・アクセス(NUMA)コンピュータ・システムを操作する方法であって、
前記ホーム・ノードにおいて、前記リモート・ノードからのデータ要求の受信に応答して、要求データを前記ホーム・ノード内のホーム・システム・メモリから、前記リモート・ノードに伝送するステップと、
別の転送において、前記要求データに対するグローバル・コヒーレンス管理の責任を、前記ホーム・ノードから前記リモート・ノードに譲渡するステップと
を含む方法。
(2)前記別の転送が前記要求データの伝送の前に行われる、前記(1)記載の方法。
(3)前記別の転送が前記要求データの伝送の後に行われる、前記(1)記載の方法。
(4)前記ホーム・システム・メモリが、スヌープ・キュー及び読出しキューを有する関連メモリ制御装置を有し、前記方法が、
前記データ要求の受信に応答して、前記データ要求を前記スヌープ・キューにエンキューし、前記譲渡ステップに応答して、前記データ要求を前記スヌープ・キューからデキューするステップと、
前記要求データを前記ホーム・システム・メモリから獲得するために、前記読出しキューを割当て、前記メモリ制御装置が前記要求データを前記ホーム・システム・メモリから獲得したことに応答して、前記読出しキューを割当て解除するステップと
を含む、前記(1)記載の方法。
(5)前記リモート・ノードにおいて、前記データ要求が該リモート・ノード内でサービス不能なことに応答して、前記リモート・ノード内のリクエスタによる前記要求データのローカル所有権を示すローカル・フラグをセットするステップと、
その後、前記別の転送の受信に応答して、前記リクエスタによる前記要求データのグローバル所有権を示すグローバル・グラグをセットするステップと
を含む、前記(1)記載の方法。
(6)前記リモート・ノードにおいて、該リモート・ノード内の前記要求データの無効化を要求する命令の受信に応答して、前記グローバル・フラグがセットされるまで、再試行応答を提供するステップを含む、前記(5)記載の方法。
(7)ノード相互接続により結合される少なくともホーム・ノードとリモート・ノードとを含む不均等メモリ・アクセス(NUMA)コンピュータ・システムを操作する方法であって、
前記リモート・ノードのローカル相互接続上に、該リモート・ノード内のリクエスタによるデータ要求を発行するステップと、
前記データ要求が前記リモート・ノード内でサービス不能なことに応答して、前記データ要求を前記ホーム・ノードに送信し、前記リモート・ノード内のリクエスタによる前記データ要求内で指定される要求データのローカル所有権を示すローカル・フラグをセットし、該ローカル・フラグがセットされる間、前記要求データの所有権を前記リモート・ノード内の他のリクエスタから保護するステップと、
その後、前記ホーム・ノードからの前記要求データのグローバル・コヒーレンス管理の責任の受信に応答して、前記リクエスタによる前記要求データのグローバル所有権を示すグローバル・フラグをセットし、該グローバル・フラグがセットされる間、前記要求データの所有権を前記NUMAコンピュータ・システム内の他のリクエスタから保護するステップと、
前記要求データが受信され、前記リモート・ノード内で、前記データ要求を生成した命令が完了されたとき、前記グローバル・グラグをリセットするステップと
を含む方法。
(8)前記データ要求の受信に応答して、前記ホーム・ノードが要求データを、該ホーム・ノード内のホーム・システム・メモリから、前記リモート・ノードに提供するステップと、
別の転送において、前記要求データのグローバル・コヒーレンス管理の責任を、前記ホーム・ノードから前記リモート・ノードに譲渡するステップと
を含む、前記(7)記載の方法。
(9)前記譲渡ステップが、前記要求データを提供する前に実行される、前記(7)記載の方法。
(10)前記譲渡ステップが、前記要求データを提供した後に実行される、前記(7)記載の方法。
(11)前記ホーム・システム・メモリが、スヌープ・キュー及び読出しキューを有する関連メモリ制御装置を有し、前記方法が、
前記データ要求の受信に応答して、前記データ要求を前記スヌープ・キューにエンキューし、前記譲渡ステップに応答して、前記データ要求を前記スヌープ・キューからデキューするステップと、
前記要求データを前記ホーム・システム・メモリから獲得するために、前記読出しキューを割当て、前記メモリ制御装置が前記要求データを前記ホーム・システム・メモリから獲得したことに応答して、前記読出しキューを割当て解除するステップと
を含む、前記(7)記載の方法。
(12)ノード相互接続により結合される少なくともリモート・ノードとホーム・ノードとを含むマルチノード・コンピュータ・システムの、前記ホーム・ノード内で使用されるメモリ制御装置であって、前記ホーム・ノードがホーム・システム・メモリを含むものにおいて、
前記リモート・ノードからのデータ要求の受信に応答して、要求データを前記ホーム・システム・メモリから前記リモート・ノードに伝送する手段と、
別の転送において、前記要求データに対するグローバル・コヒーレンス管理の責任を、前記リモート・ノードに譲渡する手段と
を含むメモリ制御装置。
(13)前記メモリ制御装置が前記別の転送を前記要求データの前に伝送する、前記(12)記載のメモリ制御装置。
(14)前記メモリ制御装置が前記別の転送を前記要求データの後に伝送する、前記(12)記載のメモリ制御装置。
(15)前記メモリ制御装置がスヌープ・キュー及び読出しキューを含み、
前記データ要求の受信に応答して、前記データ要求を前記スヌープ・キューにエンキューし、前記譲渡に応答して、前記データ要求を前記スヌープ・キューからデキューし、
前記要求データを前記ホーム・システム・メモリから獲得するために、前記読出しキューを割当て、前記要求データが前記ホーム・システム・メモリから獲得されたことに応答して、前記読出しキューを割当て解除する、前記(12)記載のメモリ制御装置。
(16)ノード相互接続によりホーム・ノードに結合される1つ以上のリモート・ノードを含む、マルチノード・コンピュータ・システムの前記ホーム・ノードのためのメモリ・システムであって、
前記(12)記載のメモリ制御装置と、
前記メモリ・システムに結合されるホーム・システム・メモリと
を含むメモリ・システム。
(17)マルチノード・コンピュータのノードであって、
ローカル相互接続と、
前記ローカル相互接続に結合されるノード制御装置と、
前記ローカル相互接続に結合される、前記(14)記載のメモリ・システムと
を含むノード。
(18)ノード相互接続と、
前記ノード相互接続に結合される、前記(17)記載のホーム・ノードと、
前記ノード相互接続に結合される少なくとも1つのリモート・ノードと
を含む、コンピュータ・システム。
(19)ノード相互接続により結合される少なくともホーム・ノードとリモート・ノードとを含むマルチノード・コンピュータ・システムの、前記リモート・ノード内で使用される制御装置であって、
前記リモート・ノードのローカル相互接続上に、データ要求を発行する手段と、
前記データ要求が前記リモート・ノード内でサービス不能なことに応答して、前記データ要求内で指定される要求データの、前記リモート・ノード内でのローカル所有権を示すローカル・フラグをセットし、該ローカル・フラグがセットされる間、前記要求データの所有権を、前記リモート・ノード内で発生する他のデータ要求から保護する手段と、
その後、前記ホーム・ノードからの前記要求データのグローバル・コヒーレンス管理の責任の受信に応答して、前記要求データのグローバル所有権を示すグローバル・フラグをセットし、該グローバル・フラグがセットされる間、前記要求データの所有権を、前記コンピュータ・システム内で発生する他のデータ要求から保護する手段と、
前記要求データが受信され、前記リモート・ノード内で、前記データ要求を生成した命令が完了されたとき、前記グローバル・グラグをリセットする手段と
を含む制御装置。
(20)マルチノード・コンピュータのノードであって、
ローカル相互接続と、
前記ローカル相互接続に結合される、前記(18)記載の制御装置と、
前記制御装置に結合される処理ユニットと、
前記ローカル相互接続に結合されるノード制御装置と
を含むノード。
(21)ノード相互接続と、
前記ノード相互接続に結合される、前記(20)記載の少なくとも1つのリモート・ノードと、
前記ノード相互接続に結合されるホーム・ノードと
を含むコンピュータ・システム。
【図面の簡単な説明】
【図1】従来技術によるNUMAコンピュータ・システムのブロック図である。
【図2】システム・メモリ内に組み込まれるリモート・メモリ・キャッシュ(RMC)を有する、本発明に従うNUMAコンピュータ・システムの典型的な実施例を示す図である。
【図3】システム・メモリ内に組み込まれるリモート・メモリ・キャッシュ(RMC)及び関連リモート・メモリ・ディレクトリ(RMD)を有する、本発明に従うNUMAコンピュータ・システムの典型的な実施例を示す図である。
【図4】図2または図3のNUMAコンピュータ・システム内のメモリ制御装置の詳細ブロック図である。
【図5】図2または図3のNUMAコンピュータ・システム内の低レベル・キャッシュの詳細ブロック図である。
【図6】本発明に従い、NUMAコンピュータ・システムの別のノードからデータを要求する、読出しタイプ要求を発行する典型的な方法のハイレベル論理フローチャートである。
【図7】本発明に従う典型的な読出しタイプ要求を示す図である。
【図8】本発明に従い、リモート・ノードから、共用コヒーレンス状態の犠牲キャッシュ・ラインを割当て解除する典型的な方法のハイレベル論理フローチャートである。
【図9】本発明に従い、NUMAコンピュータ・システムのリモート・ノードから、変更済みコヒーレンス状態の犠牲キャッシュ・ラインを割当て解除する典型的な方法のハイレベル論理フローチャートである。
【図10】図9の方法で使用される典型的なキャストアウト書込み命令を示す図である。
【図11】本発明に従い、フラッシュ照会により、NUMAコンピュータ・システムのリモート・ノード内に保持されるキャッシュ・ラインの割当て解除を要求するハイレベル論理フローチャートである。
【図12】本発明に従い、フラッシュ照会により、NUMAコンピュータ・システムのリモート・ノード内に保持されるキャッシュ・ラインの割当て解除を要求すハイレベル論理フローチャートである。
【図13】本発明に従い、非集中コヒーレンス管理を用いて、NUMAコンピュータ・システムのリモート・ノード内で、フラッシュ命令を実行する典型的な方法のハイレベル論理フローチャートである。
【図14】Numafyコマンドの使用により、読出しタイプの命令のターゲット・キャッシュ・ラインのグローバル・コヒーレンス管理の責任を譲渡する、時間−空間図である。
【図15】図2または図3のNUMAコンピュータ・システム内のローカル・メモリ・ディレクトリ(LMD)の典型的なディレクトリ・エントリを示す図である。
【図16】NUMAコンピュータ・システムのシステム・メモリ制御装置が、読出しタイプの要求に応答して、ローカル・メモリ・ディレクトリ(LMD)内のリモート・ノードのヒストリ情報を更新する典型的な方法を示す状態図である。
【図17】本発明の好適な実施例に従い、NUMAコンピュータ・システムのシステム・メモリ制御装置がデータ及び命令のプリフェッチを制御する典型的な方法を示すハイレベル論理フローチャートである。
【図18】本発明の好適な実施例に従い、NUMAコンピュータ・システムのシステム・メモリ制御装置がデータ及び命令のプリフェッチを制御する典型的な方法を示すハイレベル論理フローチャートである。
【図19】本発明の好適な実施例に従い、NUMAコンピュータ・システムのシステム・メモリ制御装置がデータ及び命令のプリフェッチを制御する典型的な方法を示すハイレベル論理フローチャートである。
【符号の説明】
11、58 ローカル相互接続
20、64 メモリ制御装置(MC)
22、66 システム・メモリ(M)
24、56 ローカル・ノード制御装置(NC)
26、72 ローカル・メモリ・ディレクトリ(LMD)
28、70 リモート・メモリ・キャッシュ(RMC)
30、74 リモート・メモリ・ディレクトリ(RMD)
32、57 キュー
61 ディレクトリ消し込み論理(SL)
63 応答論理(RL)
68 システム・メモリ・アドレス空間
77 キュー
79 コヒーレンス管理キュー
142 合同クラスのセット
144 ディレクトリ・エントリ

Claims (15)

  1. ノード相互接続により結合される少なくともホーム・ノードとリモート・ノードとを含み、前記ホーム・ノードがホーム・システム・メモリを含む不均等メモリ・アクセス(NUMA)コンピュータ・システムを操作する方法であって、
    前記ホーム・ノード、前記リモート・ノードからのデータ要求の受信に応答して、要求データを前記ホーム・ノード内のホーム・システム・メモリから獲得し、前記リモート・ノードに伝送するステップと、
    前記ホーム・ノードが、前記リモート・ノードに対して、前記要求データに対するグローバル・コヒーレンス管理を行うことを指示する命令を発行するステップであって、前記要求データの伝送とは独立して前記命令を発行するステップ
    を含む方法。
  2. 前記命令の発行が前記要求データの伝送の前に行われる、請求項1記載の方法。
  3. 前記命令の発行が前記要求データの伝送の後に行われる、請求項1記載の方法。
  4. 前記ホーム・システム・メモリが、スヌープ・キュー及び読出しキューを有する関連メモリ制御装置を有し、前記方法が、
    前記データ要求の受信に応答して、前記データ要求を前記スヌープ・キューにエンキューし、前記命令の発行ステップに応答して、前記データ要求を前記スヌープ・キューからデキューするステップと、
    前記要求データを前記ホーム・システム・メモリから獲得するために、前記読出しキューを割当て、前記メモリ制御装置が前記要求データを前記ホーム・システム・メモリから獲得したことに応答して、前記読出しキューを割当て解除するステップと
    を含む、請求項1記載の方法。
  5. 前記リモート・ノードにおいて、前記データ要求が該リモート・ノード内でサービス不能なことに応答して、前記リモート・ノード内の前記データ要求をしたリクエスタは、前記リクエスタ内に設けられ、前記要求データについて前記リモート・ノード内における排他的アクセスを取得したことを示すローカル・フラグをセットするステップと、
    前記ホーム・ノードからの前記命令の受信に応答して、前記リクエスタは、前記リクエスタ内に設けられ、前記要求データについて前記NUMAコンピュータ・システム内における排他的アクセスを取得したことを示すグローバル・グラグをセットするステップと
    を含む、請求項1記載の方法。
  6. 前記リモート・ノードにおいて、該リモート・ノード内の前記要求データの無効化を要求する命令の受信に応答して、前記リクエスタは、前記グローバル・フラグがセットされるまで、再試行応答を提供するステップを含む、請求項5記載の方法。
  7. ノード相互接続により結合される少なくともホーム・ノードとリモート・ノードとを含む不均等メモリ・アクセス(NUMA)コンピュータ・システムを操作する方法であって、
    前記リモート・ノードのローカル相互接続上に、該リモート・ノード内のリクエスタデータ要求を発行するステップと、
    前記データ要求が前記リモート・ノード内でサービス不能なことに応答して、前記リモート・ノードは、前記データ要求を前記ホーム・ノードに送信し、前記リクエスタは、前記リクエスタ内に設けられ、要求データについて前記リモート・ノード内における排他的アクセスを取得したことを示すローカル・フラグをセットし、該ローカル・フラグがセットされる間、前記リモート・ノード内の他のリクエスタからの前記要求データについての 要求に対して再試行応答を提供するステップと、
    前記ホーム・ノードから、前記要求データに対するグローバル・コヒーレンス管理を行うことを指示する命令を受信することに応答して、前記リクエスタは、前記リクエスタ内に設けられ、前記要求データについて前記NUMAコンピュータ・システム内における排他的アクセスを取得したことを示すグローバル・フラグをセットし、該グローバル・フラグがセットされる間、前記NUMAコンピュータ・システム内の他のリクエスタからの前記要求データについての要求に対して再試行応答を提供するステップと、
    前記要求データが受信され、前記リモート・ノード内で、前記データ要求を生成した命令が完了されたとき、前記リクエスタは前記グローバル・ラグをリセットするステップと
    を含む方法。
  8. 前記リモート・ノードからの前記データ要求の受信に応答して、前記ホーム・ノードは、前記要求データを、該ホーム・ノード内のホーム・システム・メモリから獲得し、前記リモート・ノードに提供するステップと、
    前記ホーム・ノードが、前記リモート・ノードに対して、前記要求データに対するグローバル・コヒーレンス管理を行うことを指示する命令を発行するステップであって、前記要求データの伝送とは独立して発行するステップと
    を含む、請求項7記載の方法。
  9. ノード相互接続により結合される少なくともリモート・ノードとホーム・ノードとを含むマルチノード・コンピュータ・システムの、前記ホーム・ノード内で使用されるメモリ制御装置であって、前記ホーム・ノードがホーム・システム・メモリを含むものにおいて、
    前記リモート・ノードからのデータ要求の受信に応答して、要求データを前記ホーム・システム・メモリから獲得して、前記リモート・ノードに伝送する手段と、
    前記リモート・ノードに対して、前記要求データに対するグローバル・コヒーレンス管理を行うことを指示する命令を発行する手段であって、前記要求データの伝送とは独立して前記命令を発行する手段
    を含むメモリ制御装置。
  10. ノード相互接続によりホーム・ノードに結合される1つ以上のリモート・ノードを含む、マルチノード・コンピュータ・システムの前記ホーム・ノードのためのメモリ・システムであって、
    請求項9記載のメモリ制御装置と、
    前記メモリ・システムに結合されるホーム・システム・メモリと
    を含むメモリ・システム。
  11. マルチノード・コンピュータのノードであって、
    ローカル相互接続と、
    前記ローカル相互接続に結合されるノード制御装置と、
    前記ローカル相互接続に結合される、請求項10記載のメモリ・システムと
    を含むノード。
  12. ノード相互接続と、
    前記ノード相互接続に結合される、請求項11記載のノードと、
    前記ノード相互接続に結合される少なくとも1つのリモート・ノードと
    を含む、コンピュータ・システム。
  13. ノード相互接続により結合される少なくともホーム・ノードとリモート・ノードとを含むマルチノード・コンピュータ・システムの、前記リモート・ノード内で使用される制御装置であって、
    前記リモート・ノードのローカル相互接続上に、データ要求を発行する手段と、
    前記データ要求が前記リモート・ノード内でサービス不能なことに応答して、前記データ要求内で指定される要求データについて前記リモート・ノード内における排他的アクセスを取得したことを示すローカル・フラグをセットし、該ローカル・フラグがセットされる間、前記リモート・ノード内で発生する他のデータ要求に対して再試行応答を提供する手段と、
    前記ホーム・ノードから、前記要求データに対するグローバル・コヒーレンス管理を行うことを指示する命令を受信することに応答して、前記要求データについて前記コンピュータ・システム内における排他的アクセスを取得したことを示すグローバル・フラグをセットし、該グローバル・フラグがセットされる間、前記コンピュータ・システム内で発生する他のデータ要求に対して再試行応答を提供する手段と、
    前記要求データが受信され、前記リモート・ノード内で、前記データ要求を生成した命令が完了されたとき、前記グローバル・ラグをリセットする手段と
    を含む制御装置。
  14. マルチノード・コンピュータのノードであって、
    ローカル相互接続と、
    前記ローカル相互接続に結合される、請求項13記載の制御装置と、
    前記制御装置に結合される処理ユニットと、
    前記ローカル相互接続に結合されるノード制御装置と
    を含むノード。
  15. ノード相互接続と、
    前記ノード相互接続に結合される、請求項14記載の少なくとも1つのノードと、
    前記ノード相互接続に結合されるホーム・ノードと
    を含むコンピュータ・システム。
JP2002164530A 2001-06-21 2002-06-05 分散グローバル・コヒーレンス管理を有する不均等メモリ・アクセス(numa)コンピュータ・システム Expired - Lifetime JP3924204B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/885,991 US6654857B2 (en) 2001-06-21 2001-06-21 Non-uniform memory access (NUMA) computer system having distributed global coherency management
US09/885991 2001-06-21

Publications (2)

Publication Number Publication Date
JP2003030170A JP2003030170A (ja) 2003-01-31
JP3924204B2 true JP3924204B2 (ja) 2007-06-06

Family

ID=25388140

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002164530A Expired - Lifetime JP3924204B2 (ja) 2001-06-21 2002-06-05 分散グローバル・コヒーレンス管理を有する不均等メモリ・アクセス(numa)コンピュータ・システム

Country Status (2)

Country Link
US (1) US6654857B2 (ja)
JP (1) JP3924204B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6886079B2 (en) 2001-06-21 2005-04-26 International Business Machines Corporation Dynamic history based mechanism for the granting of exclusive data ownership in a non-uniform memory access (NUMA) computer system
US6901485B2 (en) * 2001-06-21 2005-05-31 International Business Machines Corporation Memory directory management in a multi-node computer system
US6820174B2 (en) * 2002-01-18 2004-11-16 International Business Machines Corporation Multi-processor computer system using partition group directories to maintain cache coherence
US7409481B2 (en) * 2005-02-10 2008-08-05 International Business Machines Corporation Data processing system, method and interconnect fabric supporting destination data tagging
US7725619B2 (en) * 2005-09-15 2010-05-25 International Business Machines Corporation Data processing system and method that permit pipelining of I/O write operations and multiple operation scopes
US7543116B2 (en) * 2006-01-30 2009-06-02 International Business Machines Corporation Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move
US8095758B2 (en) * 2008-02-01 2012-01-10 International Business Machines Corporation Fully asynchronous memory mover
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
US8015380B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Launching multiple concurrent memory moves via a fully asynchronoous memory mover
US9697047B2 (en) * 2012-09-25 2017-07-04 International Business Machines Corporation Cooperation of hoarding memory allocators in a multi-process system
CN105068786B (zh) * 2015-07-30 2018-03-23 浪潮(北京)电子信息产业有限公司 一种处理访存请求的方法和节点控制器
US10613996B2 (en) * 2018-05-03 2020-04-07 Arm Limited Separating completion and data responses for higher read throughput and lower link utilization in a data processing network
CN111406251B (zh) * 2018-08-24 2023-12-08 华为技术有限公司 数据预取方法及装置
US10877836B2 (en) * 2018-08-29 2020-12-29 Arm Limited Method and apparatus for coherent interconnect recovery with protocol layer re-transmission

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2679363B2 (ja) 1989-06-20 1997-11-19 日本電気株式会社 マイクロプロセッサ
JPH0340046A (ja) 1989-07-06 1991-02-20 Hitachi Ltd キャッシュメモリ制御方式および情報処理装置
US5325504A (en) 1991-08-30 1994-06-28 Compaq Computer Corporation Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system
US5680576A (en) 1995-05-05 1997-10-21 Silicon Graphics, Inc. Directory-based coherence protocol allowing efficient dropping of clean-exclusive data
JP3889044B2 (ja) * 1995-05-05 2007-03-07 シリコン、グラフィクス、インコーポレイテッド 不均一メモリ・アクセス(numa)システムにおけるページ移動
US5787476A (en) 1995-05-05 1998-07-28 Silicon Graphics, Inc. System and method for maintaining coherency of virtual-to-physical memory translations in a multiprocessor computer
US5737565A (en) 1995-08-24 1998-04-07 International Business Machines Corporation System and method for diallocating stream from a stream buffer
US5892970A (en) 1996-07-01 1999-04-06 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient block copy operations
US5893922A (en) * 1997-03-06 1999-04-13 International Business Machines Corporation Home node migration for distributed shared memory systems
FR2764097B1 (fr) 1997-06-02 1999-07-02 Bull Sa Detection de points chauds dans une machine avec memoire a acces non uniforme
US6240501B1 (en) 1997-09-05 2001-05-29 Sun Microsystems, Inc. Cache-less address translation
US6209068B1 (en) * 1997-12-29 2001-03-27 Intel Corporation Read line buffer and signaling protocol for processor
US6286090B1 (en) 1998-05-26 2001-09-04 Compaq Computer Corporation Mechanism for selectively imposing interference order between page-table fetches and corresponding data fetches
US6397302B1 (en) 1998-06-18 2002-05-28 Compaq Information Technologies Group, L.P. Method and apparatus for developing multiprocessor cache control protocols by presenting a clean victim signal to an external system
US6349366B1 (en) 1998-06-18 2002-02-19 Compaq Information Technologies Group, L.P. Method and apparatus for developing multiprocessor cache control protocols using a memory management system generating atomic probe commands and system data control response commands

Also Published As

Publication number Publication date
US6654857B2 (en) 2003-11-25
US20030009635A1 (en) 2003-01-09
JP2003030170A (ja) 2003-01-31

Similar Documents

Publication Publication Date Title
JP3924203B2 (ja) マルチノード・コンピュータ・システムにおける非集中グローバル・コヒーレンス管理
JP3900478B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システム及び該コンピュータ・システムを操作する方法
JP3900479B2 (ja) システム・メモリに組み込まれるリモート・メモリ・キャッシュを有する不均等メモリ・アクセス(numa)データ処理システム
JP3900481B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システムを操作する方法、メモリ制御装置、メモリ・システム、該メモリ・システムを含むノード及びnumaコンピュータ・システム
JP3900480B2 (ja) 共用データのリモート割当て解除の通知を提供する不均等メモリ・アクセス(numa)データ処理システム
JP3898984B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システム
US6760817B2 (en) Method and system for prefetching utilizing memory initiated prefetch write operations
US6711652B2 (en) Non-uniform memory access (NUMA) data processing system that provides precise notification of remote deallocation of modified data
EP0817073B1 (en) A multiprocessing system configured to perform efficient write operations
EP0817077B1 (en) A multiprocessing system configured to perform prefetching operations and method therefor
EP0817071B1 (en) A multiprocessing system configured to detect and efficiently provide for migratory data access patterns
US5848254A (en) Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space
US5958019A (en) Multiprocessing system configured to perform synchronization operations
US5860159A (en) Multiprocessing system including an apparatus for optimizing spin--lock operations
EP0817093A1 (en) A multiprocessor system configured to perform block copy operations
JP3924204B2 (ja) 分散グローバル・コヒーレンス管理を有する不均等メモリ・アクセス(numa)コンピュータ・システム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20020624

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20020731

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051018

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060116

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060119

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060718

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061012

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061017

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070223

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110302

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120302

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130302

Year of fee payment: 6