JP3900478B2 - 不均等メモリ・アクセス(numa)コンピュータ・システム及び該コンピュータ・システムを操作する方法 - Google Patents
不均等メモリ・アクセス(numa)コンピュータ・システム及び該コンピュータ・システムを操作する方法 Download PDFInfo
- Publication number
- JP3900478B2 JP3900478B2 JP2002164122A JP2002164122A JP3900478B2 JP 3900478 B2 JP3900478 B2 JP 3900478B2 JP 2002164122 A JP2002164122 A JP 2002164122A JP 2002164122 A JP2002164122 A JP 2002164122A JP 3900478 B2 JP3900478 B2 JP 3900478B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- request
- cache
- controller
- read type
- 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 - Fee Related
Links
- 230000015654 memory Effects 0.000 title claims description 246
- 238000000034 method Methods 0.000 title claims description 115
- 230000004044 response Effects 0.000 claims description 150
- 238000012545 processing Methods 0.000 claims description 58
- 230000008685 targeting Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 68
- 238000007726 management method Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000008187 granular material Substances 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002000 scavenging effect Effects 0.000 description 1
- 238000005201 scrubbing Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は一般にデータ処理システムに関し、特に、改善されたキューイング、通信及び記憶効率を有する不均等メモリ・アクセス(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つのキャッシュと、ローカル相互接続とノード相互接続との間に結合されるノード制御装置とを含む。処理ユニットは最初に、ローカル相互接続上に、ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行する。その際、読出しタイプの要求内のフラグが第1の状態にセットされ、その読出しタイプの要求が局所的にのみサービスされることを示す。リモート・ノード内で読出しタイプの要求を局所的にサービスできないことに応答して、処理ユニットは読出しタイプの要求を再発行するが、このときフラグが第2の状態にセットされ、ノード制御装置に読出しタイプの要求をホーム・ノードに送信するように命令する。ノード制御装置は複数のキューを含み、好適には、フラグが第2の状態にセットされた再発行読出しタイプ要求を受信するまで、読出しタイプの要求をエンキューしない。
【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】
<コヒーレンス・ <ローカル・キャッシュ内 <リモート・キャッシュ内 <意味>
ディレクトリ状態> で可能な状態> で可能な状態>
Modified(M) I M、E又はI (注1参照)
Shared(S) S又はI S又はI (注2参照)
Invalid(I) M、E、S又はI I (注3参照)
注1)ホーム・ノードのシステム・メモリに関連して、キャッシュ・ラインが リモート・ノードで変更され得る。
注2)キャッシュ・ラインがリモート・ノードで非排他的に保持され得る。
注3)キャッシュ・ラインがリモート・ノードにより保持されない。
【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)コンピュータ・システムであって、ノード相互接続に結合されるリモート・ノード及びホーム・ノードを含み、前記ホーム・ノードがホーム・システム・メモリを含み、記リモート・ノードが、
ローカル相互接続と、
前記ローカル相互接続と前記ノード相互接続との間に結合され、前記リモート・ノードと前記ホーム・ノードとの間で要求を伝送するノード制御装置と、
前記ローカル相互接続に結合される処理ユニット及び少なくとも1つのキャッシュと
を含み、前記処理ユニットが、
最初に前記ローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき前記読出しタイプの要求内のフラグが第1の状態にセットされ、該読出しタイプの要求が局所的にのみサービスされることを示し、
前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記フラグが第2の状態にセットされ、前記ノード制御装置に前記読出しタイプの要求を前記ホーム・ノードに送信するように命令するNUMAコンピュータ・システム。(2)前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記処理ユニットが前記フラグを前記第2の状態にセットする、前記(1)記載のNUMAコンピュータ・システム。
(3)前記ノード制御装置が複数のキューを含み、前記フラグが前記第2の状態にセットされている場合にだけ、前記ノード制御装置が前記読出しタイプの要求のためにキューを割当てる、前記(1)記載のNUMAコンピュータ・システム。
(4)前記読出しタイプの要求がread-with-intent-to-modify(RWITM)要求を含む、前記(1)記載のNUMAコンピュータ・システム。
(5)再発行された前記読出しタイプの要求に対する組み合わせ応答を受信する前に、前記ノード制御装置が前記読出しタイプの要求を前記ホーム・ノードに伝送する、前記(1)記載のNUMAコンピュータ・システム。
(6)ノード相互接続によりリモート・ノードに結合されるホーム・ノードを有する、不均等メモリ・アクセス(NUMA)コンピュータ・システムの前記リモート・ノード内で使用される処理ユニットであって、前記ホーム・ノードがホーム・システム・メモリを含み、前記リモート・ノードがローカル相互接続と、前記ローカル相互接続と前記ノード相互接続との間に結合されるノード制御装置とを含み、前記処理ユニットが、
実行リソースと、
前記実行リソースに結合され、キャッシュ制御装置を含むキャッシュと
を含み、
前記キャッシュ制御装置が、前記実行リソースによるデータ要求の受信に応答して、最初に前記ローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき前記読出しタイプの要求内のフラグが第1の状態にセットされ、前記読出しタイプの要求が局所的にのみサービスされることを示し、
前記キャッシュ制御装置が、前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記フラグが第2の状態にセットされ、前記ノード制御装置に前記読出しタイプの要求を前記ホーム・ノードに送信するように命令する、処理ユニット。
(7)前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記キャッシュ制御装置が前記フラグを前記第2の状態にセットする、前記(6)記載の処理ユニット。
(8)前記読出しタイプの要求内の前記フラグの前記第2の状態が、前記ノード制御装置に前記読出しタイプの要求をエンキューするように命令する、前記(6)記載の処理ユニット。
(9)前記読出しタイプの要求がread-with-intent-to-modify(RWITM)要求を含む、前記(6)記載の処理ユニット。
(10)前記(6)記載の処理ユニットと、
前記処理ユニットに結合されるローカル相互接続と、
前記ローカル相互接続及びノード相互接続に結合されるノード制御装置と
を含むNUMAコンピュータ・システムのノード。
(11)ノード相互接続により結合されるリモート・ノード及びホーム・ノードを含み、前記ホーム・ノードがホーム・システム・メモリを含む、不均等メモリ・アクセス(NUMA)コンピュータ・システムを操作する方法であって、
前記リモート・ノードのローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき前記読出しタイプの要求内のフラグが第1の状態にセットされ、該読出しタイプの要求が局所的にのみサービスされることを示すステップと、
前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記フラグが第2の状態にセットされ、前記リモート・ノードのノード制御装置に、前記読出しタイプの要求を前記ホーム・ノードに送信するように命令するステップと
を含む方法。
(12)前記読出しタイプの要求を再発行するステップが、前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記フラグを前記第2の状態にセットして、前記読出しタイプの要求を再発行するステップを含む、前記(11)記載の方法。
(13)前記リモート・ノードの前記ノード制御装置が複数のキューを含み、前記フラグが前記第2の状態にセットされていることにだけ応答して、前記ノード制御装置が前記読出しタイプの要求のためにキューを割当てるステップを含む、前記(11)記載の方法。
(14)前記読出しタイプの要求を発行するステップが、read-with-intent-to-modify(RWITM)要求を発行するステップを含む、前記(11)記載の方法。
(15)再発行された前記読出しタイプの要求に対する組み合わせ応答を受信する前に、前記ノード制御装置が前記読出しタイプの要求を前記ホーム・ノードに伝送するステップを含む、前記(11)記載の方法。
【図面の簡単な説明】
【図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)
- 不均等メモリ・アクセス(NUMA)コンピュータ・システムであって、
ノード相互接続に結合されるリモート・ノード及びホーム・ノードを含み、
前記ホーム・ノードがホーム・システム・メモリを含み、
前記リモート・ノードが、
ローカル相互接続と、
前記ローカル相互接続と前記ノード相互接続との間に結合され且つ前記リモート・ノードと前記ホーム・ノードとの間で要求を伝送するノード制御装置と、
前記ローカル相互接続に結合される処理ユニットと
を含み、
前記処理ユニットが実行リソースに結合され、キャッシュ制御装置を含むキャッシュを含み、
前記キャッシュ制御装置が、最初に前記ローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき前記読出しタイプの要求が局所的にのみサービスされることを示すために、前記キャッシュ制御装置が前記読出しタイプの要求内のフラグを第1の状態にセットし、
前記キャッシュ制御装置が、前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記ノード制御装置に前記読出しタイプの要求を前記ホーム・ノードに送信するように命令するために、前記キャッシュ制御装置が前記フラグを第2の状態にセットする、
前記NUMAコンピュータ・システム。 - 前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記処理ユニットが前記フラグを前記第2の状態にセットする、請求項1記載のNUMAコンピュータ・システム。
- 前記ノード制御装置が複数のキューを含み、前記フラグが前記第2の状態にセットされている場合にだけ、前記ノード制御装置が前記読出しタイプの要求のためにキューを割当てる、請求項1記載のNUMAコンピュータ・システム。
- 前記読出しタイプの要求がread-with-intent-to-modify(RWITM)要求を含む、請求項1記載のNUMAコンピュータ・システム。
- 再発行された前記読出しタイプの要求に対する組み合わせ応答を受信する前に、前記ノード制御装置が前記読出しタイプの要求を前記ホーム・ノードに伝送する、請求項1記載のNUMAコンピュータ・システム。
- 不均等メモリ・アクセス(NUMA)コンピュータ・システムのリモート・ノード内で使用される処理ユニットであって、前記NUMAコンピュータ・システムがノード相互接続により前記リモート・ノードに結合されるホーム・ノードを含み、前記ホーム・ノードがホーム・システム・メモリを含み、
前記リモート・ノードが、
ローカル相互接続と、
前記ローカル相互接続と前記ノード相互接続との間に結合されるノード制御装置と
を含み、
前記処理ユニットが、
実行リソースと、
実行リソースに結合され、キャッシュ制御装置を含むキャッシュと
を含み、
前記キャッシュ制御装置が、前記実行リソースによるデータ要求の受信に応答して、最初に前記ローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき前記読出しタイプの要求が局所的にのみサービスされることを示すために、前記キャッシュ制御装置が前記読出しタイプの要求内のフラグを第1の状態にセットし、
前記キャッシュ制御装置が、前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記ノード制御装置に前記読出しタイプの要求を前記ホーム・ノードに送信するように命令するために、前記キャッシュ制御装置が前記フラグを第2の状態にセットする、
前記処理ユニット。 - 前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記キャッシュ制御装置が前記フラグを前記第2の状態にセットする、請求項6記載の処理ユニット。
- 前記読出しタイプの要求内の前記フラグの前記第2の状態が、前記ノード制御装置に前記読出しタイプの要求をエンキューするように命令する、請求項6記載の処理ユニット。
- 前記読出しタイプの要求がread-with-intent-to-modify(RWITM)要求を含む、請求項6記載の処理ユニット。
- 請求項6記載の処理ユニットと、
前記処理ユニットに結合されるローカル相互接続と、
前記ローカル相互接続及びノード相互接続に結合されるノード制御装置と
を含むNUMAコンピュータ・システムのノード。 - 不均等メモリ・アクセス(NUMA)コンピュータ・システムを操作する方法であって、前記NUMAコンピュータ・システムはノード相互接続により結合されるリモート・ノード及びホーム・ノードを含み、前記ホーム・ノードがホーム・システム・メモリを含み、前記リモート・ノードが、ローカル相互接続と、前記ローカル相互接続と前記ノード相互接続との間に結合され且つ前記リモート・ノードと前記ホーム・ノードとの間で要求を伝送するノード制御装置と、前記ローカル相互接続に結合される処理ユニットとを含み、前記処理ユニットが実行リソースに結合され、キャッシュ制御装置を含むキャッシュを含み、
前記方法は、
前記キャッシュ制御装置が、前記リモート・ノードのローカル相互接続上に、前記ホーム・システム・メモリに内在するデータをターゲットとする読出しタイプの要求を発行し、このとき該読出しタイプの要求が局所的にのみサービスされることを示すために、前記キャッシュ制御装置が前記読出しタイプの要求内のフラグを第1の状態にセットするステップと、
前記キャッシュ制御装置が、前記リモート・ノード内で前記読出しタイプの要求を局所的にサービスできないことに応答して、前記読出しタイプの要求を再発行し、このとき前記リモート・ノードのノード制御装置に、前記読出しタイプの要求を前記ホーム・ノードに送信するように命令するために、前記キャッシュ制御装置が前記フラグを第2の状態にセットするステップと
を含む方法。 - 前記読出しタイプの要求を再発行するステップが、前記読出しタイプの要求に対して、前記リモート・ノード内で前記読出しタイプの要求をサービスできないことを示す組み合わせ応答の受信に応答して、前記フラグを前記第2の状態にセットして、前記読出しタイプの要求を再発行するステップを含む、請求項11記載の方法。
- 前記リモート・ノードの前記ノード制御装置が複数のキューを含み、前記フラグが前記第2の状態にセットされていることにだけ応答して、前記ノード制御装置が前記読出しタイプの要求のためにキューを割当てるステップを含む、請求項11記載の方法。
- 前記読出しタイプの要求を発行するステップが、read-with-intent-to-modify(RWITM)要求を発行するステップを含む、請求項11記載の方法。
- 再発行された前記読出しタイプの要求に対する組み合わせ応答を受信する前に、前記ノード制御装置が前記読出しタイプの要求を前記ホーム・ノードに伝送するステップを含む、請求項11記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/885996 | 2001-06-21 | ||
US09/885,996 US6615322B2 (en) | 2001-06-21 | 2001-06-21 | Two-stage request protocol for accessing remote memory data in a NUMA data processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003044454A JP2003044454A (ja) | 2003-02-14 |
JP3900478B2 true JP3900478B2 (ja) | 2007-04-04 |
Family
ID=25388152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002164122A Expired - Fee Related JP3900478B2 (ja) | 2001-06-21 | 2002-06-05 | 不均等メモリ・アクセス(numa)コンピュータ・システム及び該コンピュータ・システムを操作する方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6615322B2 (ja) |
JP (1) | JP3900478B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101480954B1 (ko) | 2013-01-28 | 2015-01-14 | 한국과학기술원 | Numa 시스템의 스케줄링 장치 및 그 방법 |
Families Citing this family (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2820850B1 (fr) * | 2001-02-15 | 2003-05-09 | Bull Sa | Controleur de coherence pour ensemble multiprocesseur, module et ensemble multiprocesseur a architecture multimodule integrant un tel controleur |
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 |
JP2003140965A (ja) * | 2001-11-07 | 2003-05-16 | Hitachi Ltd | 分散共有メモリ型並列計算機および命令スケジューリング方法 |
US7394823B2 (en) * | 2001-11-20 | 2008-07-01 | Broadcom Corporation | System having configurable interfaces for flexible system configurations |
US7100001B2 (en) * | 2002-01-24 | 2006-08-29 | Intel Corporation | Methods and apparatus for cache intervention |
US6775748B2 (en) * | 2002-01-24 | 2004-08-10 | Intel Corporation | Methods and apparatus for transferring cache block ownership |
US6983348B2 (en) * | 2002-01-24 | 2006-01-03 | Intel Corporation | Methods and apparatus for cache intervention |
US20030212761A1 (en) * | 2002-05-10 | 2003-11-13 | Microsoft Corporation | Process kernel |
US7117305B1 (en) | 2002-06-26 | 2006-10-03 | Emc Corporation | Data storage system having cache memory manager |
US7577816B2 (en) * | 2003-08-18 | 2009-08-18 | Cray Inc. | Remote translation mechanism for a multinode system |
US8185602B2 (en) | 2002-11-05 | 2012-05-22 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters |
US7213109B1 (en) * | 2002-11-26 | 2007-05-01 | Unisys Corporation | System and method for providing speculative ownership of cached data based on history tracking |
US6928522B2 (en) * | 2003-01-07 | 2005-08-09 | Hewlett-Packard Development Company, L.P. | Unbalanced inclusive tags |
US20040153611A1 (en) * | 2003-02-04 | 2004-08-05 | Sujat Jamil | Methods and apparatus for detecting an address conflict |
US7529893B2 (en) * | 2003-04-11 | 2009-05-05 | Sun Microsystems, Inc. | Multi-node system with split ownership and access right coherence mechanism |
US20040243769A1 (en) * | 2003-05-30 | 2004-12-02 | Frame David W. | Tree based memory structure |
US7287126B2 (en) * | 2003-07-30 | 2007-10-23 | Intel Corporation | Methods and apparatus for maintaining cache coherency |
US8307194B1 (en) | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
US7543133B1 (en) | 2003-08-18 | 2009-06-02 | Cray Inc. | Latency tolerant distributed shared memory multiprocessor computer |
US7735088B1 (en) | 2003-08-18 | 2010-06-08 | Cray Inc. | Scheduling synchronization of programs running as streams on multiple processors |
US7503048B1 (en) | 2003-08-18 | 2009-03-10 | Cray Incorporated | Scheduling synchronization of programs running as streams on multiple processors |
US7743223B2 (en) * | 2003-08-18 | 2010-06-22 | Cray Inc. | Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system |
US7421565B1 (en) * | 2003-08-18 | 2008-09-02 | Cray Inc. | Method and apparatus for indirectly addressed vector load-add -store across multi-processors |
WO2005055517A1 (fr) † | 2003-12-05 | 2005-06-16 | Zte Corporation | Appareil de realisation de la recuperation d'un systeme allopatrique de commutateur logiciel utilisant un reseau a paquets |
JP4454299B2 (ja) * | 2003-12-15 | 2010-04-21 | 株式会社日立製作所 | ディスクアレイ装置及びディスクアレイ装置の保守方法 |
US7788452B2 (en) * | 2004-01-20 | 2010-08-31 | International Business Machines Corporation | Method and apparatus for tracking cached addresses for maintaining cache coherency in a computer system having multiple caches |
JP2006215799A (ja) * | 2005-02-03 | 2006-08-17 | Toshiba Corp | メモリコントローラ |
US7483428B2 (en) * | 2005-02-10 | 2009-01-27 | International Business Machines Corporation | Data processing system, method and interconnect fabric supporting a node-only broadcast |
US20060179197A1 (en) * | 2005-02-10 | 2006-08-10 | International Business Machines Corporation | Data processing system, method and interconnect fabric having a partial response rebroadcast |
US20060176890A1 (en) * | 2005-02-10 | 2006-08-10 | International Business Machines Corporation | Data processing system, method and interconnect fabric for improved communication in a data processing system |
US8254411B2 (en) * | 2005-02-10 | 2012-08-28 | International Business Machines Corporation | Data processing system, method and interconnect fabric having a flow governor |
US7474658B2 (en) | 2005-02-10 | 2009-01-06 | International Business Machines Corporation | Data processing system, method and interconnect fabric supporting concurrent operations of varying broadcast scope |
US7409481B2 (en) * | 2005-02-10 | 2008-08-05 | International Business Machines Corporation | Data processing system, method and interconnect fabric supporting destination data tagging |
US20060179253A1 (en) * | 2005-02-10 | 2006-08-10 | International Business Machines Corporation | Data processing system, method and interconnect fabric that protect ownership transfer with a protection window extension |
US7885817B2 (en) * | 2005-03-08 | 2011-02-08 | Microsoft Corporation | Easy generation and automatic training of spoken dialog systems using text-to-speech |
US7707131B2 (en) * | 2005-03-08 | 2010-04-27 | Microsoft Corporation | Thompson strategy based online reinforcement learning system for action selection |
US7734471B2 (en) * | 2005-03-08 | 2010-06-08 | Microsoft Corporation | Online learning for dialog systems |
JP4667092B2 (ja) * | 2005-03-17 | 2011-04-06 | 富士通株式会社 | 情報処理装置、情報処理装置におけるデータ制御方法 |
JP4332126B2 (ja) * | 2005-03-24 | 2009-09-16 | 富士通株式会社 | キャッシング制御プログラム、キャッシング制御装置およびキャッシング制御方法 |
US7783843B2 (en) * | 2005-05-16 | 2010-08-24 | Hewlett-Packard Development Company, L.P. | Bus interface adapted to coalesce snoop responses |
US7360032B2 (en) * | 2005-07-19 | 2008-04-15 | International Business Machines Corporation | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks |
US7395376B2 (en) * | 2005-07-19 | 2008-07-01 | International Business Machines Corporation | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks |
JP4813843B2 (ja) * | 2005-08-04 | 2011-11-09 | 株式会社日立製作所 | ストレージ装置、ディスクキャッシュ制御方法及びディスクキャッシュの容量割当方法 |
US20070079074A1 (en) * | 2005-09-30 | 2007-04-05 | Collier Josh D | Tracking cache coherency in an extended multiple processor environment |
US7653789B2 (en) * | 2006-02-01 | 2010-01-26 | Sun Microsystems, Inc. | Multiprocessor system that supports both coherent and non-coherent memory accesses |
US7698523B2 (en) | 2006-09-29 | 2010-04-13 | Broadcom Corporation | Hardware memory locks |
US7631150B2 (en) * | 2006-09-29 | 2009-12-08 | Broadcom Corporation | Memory management in a shared memory system |
US20080082622A1 (en) * | 2006-09-29 | 2008-04-03 | Broadcom Corporation | Communication in a cluster system |
US7636816B2 (en) * | 2006-09-29 | 2009-12-22 | Broadcom Corporation | Global address space management |
US8205024B2 (en) | 2006-11-16 | 2012-06-19 | International Business Machines Corporation | Protecting ownership transfer with non-uniform protection windows |
US7734876B2 (en) * | 2006-11-16 | 2010-06-08 | International Business Machines Corporation | Protecting ownership transfer with non-uniform protection windows |
US8131937B2 (en) * | 2007-06-22 | 2012-03-06 | International Business Machines Corporation | Apparatus and method for improved data persistence within a multi-node system |
US9946493B2 (en) * | 2008-04-04 | 2018-04-17 | International Business Machines Corporation | Coordinated remote and local machine configuration |
US8019920B2 (en) * | 2008-10-01 | 2011-09-13 | Hewlett-Packard Development Company, L.P. | Method to improve operating performance of a computing device |
US8086816B2 (en) * | 2008-10-20 | 2011-12-27 | Dataram, Inc. | Method for controlling performance aspects of a data storage and access routine |
US8850120B2 (en) * | 2008-12-15 | 2014-09-30 | Oracle America, Inc. | Store queue with store-merging and forward-progress guarantees |
GB2481232A (en) * | 2010-06-16 | 2011-12-21 | Advanced Risc Mach Ltd | Cache for a multiprocessor system which can treat a local access operation as a shared access operation |
US20110320720A1 (en) * | 2010-06-23 | 2011-12-29 | International Business Machines Corporation | Cache Line Replacement In A Symmetric Multiprocessing Computer |
WO2012039008A1 (ja) * | 2010-09-23 | 2012-03-29 | 富士通株式会社 | 情報処理装置、メモリ制御方法及びメモリ制御装置 |
US10360150B2 (en) | 2011-02-14 | 2019-07-23 | Suse Llc | Techniques for managing memory in a multiprocessor architecture |
US9189424B2 (en) * | 2011-05-31 | 2015-11-17 | Hewlett-Packard Development Company, L.P. | External cache operation based on clean castout messages |
US8621157B2 (en) | 2011-06-13 | 2013-12-31 | Advanced Micro Devices, Inc. | Cache prefetching from non-uniform memories |
WO2013001615A1 (ja) * | 2011-06-28 | 2013-01-03 | 富士通株式会社 | データ処理方法およびデータ処理システム |
US20130132621A1 (en) * | 2011-11-23 | 2013-05-23 | Ankit Sihare | Method and apparatus to share hardware resources across storage controllers within a system using resource sharing module |
US9298627B2 (en) * | 2013-01-14 | 2016-03-29 | Marvell World Trade Ltd. | Shared op-symmetric update-sensitive variables |
CN103294612B (zh) * | 2013-03-22 | 2014-08-13 | 浪潮电子信息产业股份有限公司 | 在多级缓存一致性域系统局部域构造Share-F状态的方法 |
US20150067246A1 (en) * | 2013-08-29 | 2015-03-05 | Apple Inc | Coherence processing employing black box duplicate tags |
KR20150090491A (ko) * | 2014-01-29 | 2015-08-06 | 삼성전자주식회사 | 전자 장치 및 전자 장치에서 데이터를 액세스하는 방법 |
US9734063B2 (en) * | 2014-02-27 | 2017-08-15 | École Polytechnique Fédérale De Lausanne (Epfl) | Scale-out non-uniform memory access |
US9652390B2 (en) * | 2014-08-05 | 2017-05-16 | Advanced Micro Devices, Inc. | Moving data between caches in a heterogeneous processor system |
US9672180B1 (en) | 2014-08-06 | 2017-06-06 | Sanmina Corporation | Cache memory management system and method |
US9384147B1 (en) * | 2014-08-13 | 2016-07-05 | Saratoga Speed, Inc. | System and method for cache entry aging |
US9535842B2 (en) * | 2014-08-28 | 2017-01-03 | Oracle International Corporation | System and method for performing message driven prefetching at the network interface |
US9715428B1 (en) | 2014-09-24 | 2017-07-25 | Sanmina Corporation | System and method for cache data recovery |
EP3251016B1 (en) * | 2015-02-27 | 2019-09-04 | Huawei Technologies Co., Ltd. | Data processing method and device in cache coherence directory architecture |
US10261704B1 (en) | 2016-06-29 | 2019-04-16 | EMC IP Holding Company LLC | Linked lists in flash memory |
US10089025B1 (en) | 2016-06-29 | 2018-10-02 | EMC IP Holding Company LLC | Bloom filters in a flash memory |
US10037164B1 (en) | 2016-06-29 | 2018-07-31 | EMC IP Holding Company LLC | Flash interface for processing datasets |
US10331561B1 (en) * | 2016-06-29 | 2019-06-25 | Emc Corporation | Systems and methods for rebuilding a cache index |
US10055351B1 (en) | 2016-06-29 | 2018-08-21 | EMC IP Holding Company LLC | Low-overhead index for a flash cache |
US10146438B1 (en) | 2016-06-29 | 2018-12-04 | EMC IP Holding Company LLC | Additive library for data structures in a flash memory |
US10042762B2 (en) * | 2016-09-14 | 2018-08-07 | Advanced Micro Devices, Inc. | Light-weight cache coherence for data processors with limited data sharing |
US11601523B2 (en) * | 2016-12-16 | 2023-03-07 | Intel Corporation | Prefetcher in multi-tiered memory systems |
US10445249B2 (en) * | 2017-11-09 | 2019-10-15 | International Business Machines Corporation | Facilitating access to memory locality domain information |
US10552309B2 (en) | 2017-11-09 | 2020-02-04 | International Business Machines Corporation | Locality domain-based memory pools for virtualized computing environment |
US10691590B2 (en) | 2017-11-09 | 2020-06-23 | International Business Machines Corporation | Affinity domain-based garbage collection |
US10613764B2 (en) | 2017-11-20 | 2020-04-07 | Advanced Micro Devices, Inc. | Speculative hint-triggered activation of pages in memory |
US10713169B2 (en) | 2018-01-17 | 2020-07-14 | International Business Machines Corporation | Remote node broadcast of requests in a multinode data processing system |
US10387310B2 (en) | 2018-01-17 | 2019-08-20 | International Business Machines Corporation | Remote node broadcast of requests in a multinode data processing system |
US10579527B2 (en) | 2018-01-17 | 2020-03-03 | International Business Machines Corporation | Remote node broadcast of requests in a multinode data processing system |
CN109032510B (zh) * | 2018-06-29 | 2021-07-09 | 山石网科通信技术股份有限公司 | 基于分布式结构的处理数据的方法和装置 |
US11068407B2 (en) | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
US10949346B2 (en) * | 2018-11-08 | 2021-03-16 | International Business Machines Corporation | Data flush of a persistent memory cache or buffer |
US10884740B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
US11119781B2 (en) | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
US11106608B1 (en) | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
US11531620B2 (en) * | 2021-03-25 | 2022-12-20 | Arm Limited | Distributed virtual memory management for data processing network |
US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
US20240143510A1 (en) * | 2022-11-01 | 2024-05-02 | Arm Limited | Apparatus and method for cache invalidation |
US20240193083A1 (en) * | 2022-12-09 | 2024-06-13 | Advanced Micro Devices, Inc. | Range-based cache flushing |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5247639A (en) | 1989-06-20 | 1993-09-21 | Nec Corporation | Microprocessor having cache bypass signal terminal |
JPH0340046A (ja) | 1989-07-06 | 1991-02-20 | Hitachi Ltd | キャッシュメモリ制御方式および情報処理装置 |
US5303362A (en) * | 1991-03-20 | 1994-04-12 | Digital Equipment Corporation | Coupled memory multiprocessor computer system including cache coherency management protocols |
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 |
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 |
FR2764097B1 (fr) | 1997-06-02 | 1999-07-02 | Bull Sa | Detection de points chauds dans une machine avec memoire a acces non uniforme |
ATE254778T1 (de) | 1997-09-05 | 2003-12-15 | Sun Microsystems Inc | Nachschlagtabelle und verfahren zur datenspeicherung darin |
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 |
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 |
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 |
US6381681B1 (en) * | 1999-09-30 | 2002-04-30 | Silicon Graphics, Inc. | System and method for shared memory protection in a multiprocessor computer |
-
2001
- 2001-06-21 US US09/885,996 patent/US6615322B2/en not_active Expired - Fee Related
-
2002
- 2002-06-05 JP JP2002164122A patent/JP3900478B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101480954B1 (ko) | 2013-01-28 | 2015-01-14 | 한국과학기술원 | Numa 시스템의 스케줄링 장치 및 그 방법 |
Also Published As
Publication number | Publication date |
---|---|
US6615322B2 (en) | 2003-09-02 |
JP2003044454A (ja) | 2003-02-14 |
US20030009643A1 (en) | 2003-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3900478B2 (ja) | 不均等メモリ・アクセス(numa)コンピュータ・システム及び該コンピュータ・システムを操作する方法 | |
JP3900479B2 (ja) | システム・メモリに組み込まれるリモート・メモリ・キャッシュを有する不均等メモリ・アクセス(numa)データ処理システム | |
JP3924203B2 (ja) | マルチノード・コンピュータ・システムにおける非集中グローバル・コヒーレンス管理 | |
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 | |
US5958019A (en) | Multiprocessing system configured to perform synchronization operations | |
US5848254A (en) | Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space | |
US5734922A (en) | Multiprocessing system configured to detect and efficiently provide for migratory data access patterns | |
EP0817076B1 (en) | A multiprocessing computer system employing local and global address spaces and multiple access modes | |
EP0817093A1 (en) | A multiprocessor system configured to perform block copy operations | |
EP0817042A2 (en) | A multiprocessing system including an apparatus for optimizing spin-lock operations | |
JP3924204B2 (ja) | 分散グローバル・コヒーレンス管理を有する不均等メモリ・アクセス(numa)コンピュータ・システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050926 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051004 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051226 Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20051226 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20051226 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20051226 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060712 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061011 Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20061011 |
|
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: 20061205 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20061206 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20061206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061222 |
|
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: 20100112 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110112 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120112 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |