JP2003044456A - マルチノード・コンピュータ・システムにおけるメモリ・ディレクトリ管理 - Google Patents

マルチノード・コンピュータ・システムにおけるメモリ・ディレクトリ管理

Info

Publication number
JP2003044456A
JP2003044456A JP2002164472A JP2002164472A JP2003044456A JP 2003044456 A JP2003044456 A JP 2003044456A JP 2002164472 A JP2002164472 A JP 2002164472A JP 2002164472 A JP2002164472 A JP 2002164472A JP 2003044456 A JP2003044456 A JP 2003044456A
Authority
JP
Japan
Prior art keywords
node
memory
cache
cache line
remote
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.)
Granted
Application number
JP2002164472A
Other languages
English (en)
Other versions
JP3900481B2 (ja
Inventor
Ravi Kumar Arimilli
ラビ・クマー・アリミリ
John Steven Dodson
ジョン・スティーブン・ドッドソン
James Stephen Fields Jr
ジェームス・スティーブン・フィールズ・ジュニア
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 JP2003044456A publication Critical patent/JP2003044456A/ja
Application granted granted Critical
Publication of JP3900481B2 publication Critical patent/JP3900481B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

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

Abstract

(57)【要約】 (修正有) 【課題】 排他アクセス操作のメモリ・アクセス時間を
改善するNUMAアーキテクチャを提供する。 【解決手段】 NUMAコンピュータ・システム50
は、ノード相互接続スイッチ55により結合され、ノー
ド52を2つ以上有している。各ノード52は同一であ
り、各ノードがローカル相互接続58に結合される1つ
以上の処理ユニット54とローカル相互接続58とノー
ド相互接続スイッチ55との間に結合されるノード制御
装置56とを含む。各ノード制御装置56はローカル相
互接続58上で受信される選択命令をノード相互接続5
5を介して他のノード52に伝送することにより、ま
た、受信された選択命令をローカル相互接続58に伝送
することにより、他のノード52のためのローカル・エ
ージェントとして機能する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般にデータ処理シ
ステムに関し、特に、改善されたキューイング、通信及
び記憶効率を有する不均等メモリ・アクセス(NUM
A:non-uniform memory access)及び他のマルチプロ
セッサ・データ処理システムに関する。
【0002】
【従来の技術】コンピュータ技術では、複数の個々のプ
ロセッサの処理能力をタンデムに結合することにより、
偉大なコンピュータ・システム性能が達成されることが
知られている。マルチプロセッサ(MP)コンピュータ
・システムは、多数の異なるトポロジにより設計され、
各アプリケーションの性能要求及びソフトウェア環境に
応じて、様々なトポロジが特定のアプリケーションにと
って、より好適となり得る。1つの一般的なMPコンピ
ュータ・トポロジは、対称マルチプロセッサ(SMP)
構成であり、そこでは複数のプロセッサの各々が、シス
テム・メモリや入出力(I/O)サブシステムなどの、
共通資源のプール(pool)を共用する。これらの共通資
源は一般に、共用システム相互接続に結合される。こう
したコンピュータ・システムは対称型と呼ばれる。なぜ
なら、SMPコンピュータ・システム内の全てのプロセ
ッサが、理想的には、共用システム・メモリ内に記憶さ
れるデータに対して、同一のアクセス待ち時間を有する
からである。
【0003】SMPコンピュータ・システムは、比較的
単純なプロセッサ間通信及びデータ共用方式の使用を可
能にするが、SMPコンピュータ・システムは限られた
スケーラビリティを有する。換言すると、典型的なSM
Pコンピュータ・システムの性能は、一般に、スケール
(すなわち、より多くのプロセッサの追加)に伴い改善
されると期待されるが、これらの共用資源の利用が最適
化されるインプリメンテーション依存のサイズを超え
て、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と、R
MC28の内容のディレクトリを提供するリモート・メ
モリ・ディレクトリ(RMD)30とを有する。
【0006】本発明は、図1に示される従来のNUMA
アーキテクチャが、従来のSMPアーキテクチャに勝る
改善されたスケーラビリティ及び拡張性を提供できる
が、従来のNUMAアーキテクチャが多数の欠点を被る
ことを認識する。第1に、ローカル相互接続11を介す
る通信に比較して、ノード間の通信に多大な待ち時間を
要し、このことはノード間通信の削減が性能を改善しが
ちであることを意味する。結果的に、大規模なリモート
・メモリ・キャッシュ28をインプリメントすることに
より、ノード10間で通信されなければならないデータ
・アクセス要求の数を制限することが所望されることに
なる。しかしながら、従来のスタティック・ランダム・
アクセス・メモリ(SRAM)によるRMC28のイン
プリメンテーションは高価であり、実用的なRMC28
のサイズを制限する。その結果、各ノードは他のノード
からの限られた量のデータだけをキャッシュでき、従っ
て、頻繁な高待ち時間ノード間データ要求を必要とする
ことになる。
【0007】ノード間通信待ち時間に関連する従来のN
UMAコンピュータ・システムの第2の欠点は、不要な
ノード間コヒーレンス通信に起因する、要求のサービス
過程における遅延である。例えば、図1に示されるよう
な従来のNUMAコンピュータ・システムは、一般に、
リモート・ノードが未変更キャッシュ・ラインを黙って
割当て解除することを可能にする。換言すると、リモー
ト・ノード内のキャッシュが、キャッシュ・ラインがチ
ェックアウトされたホーム・ノードのローカル・メモリ
・ディレクトリに通知することなく、別のノードから検
索される共用キャッシュ・ラインまたは無効キャッシュ
・ラインを割当て解除することができる。従って、ホー
ム・ノードのローカル・メモリ・ディレクトリは、どの
リモート・ノードが関連システム・メモリからのキャッ
シュ・ラインを保持するかに関して、不正確な指示を保
持するだけである。その結果、あるノードでストア要求
が受信されるとき、そのノードは、ホーム・ノードのロ
ーカル・メモリ・ディレクトリ内において、ターゲット
・キャッシュ・ラインを保持すると示される他の全ての
ノードに、それらがターゲット・キャッシュ・ラインの
コピーを依然キャッシュしているか否かに拘わらず、フ
ラッシュ(すなわち無効化)命令を同報しなければなら
ない。ある動作状況では、不要なフラッシュ命令がスト
ア要求のサービスを遅延させ、システム性能に悪影響を
及ぼすことになる。
【0008】第3に、NUMAコンピュータ・システム
8などの従来のNUMAコンピュータ・システムは、シ
ステム全体に渡り分散される様々なノード制御装置、メ
モリ制御装置、及びキャッシュ制御装置内に、深いキュ
ー(すなわち項目数の多いキュー)をインプリメントす
る傾向があり、ノード間通信に影響を及ぼす長い待ち時
間を生成し得る。各個々のキューのインプリメンテーシ
ョンは安価ではあるが、従来のNUMAコンピュータ・
システム全体に渡りインプリメントされる深いキュー
は、システム全体コストの大きな要素を表す。従って、
本発明はNUMAコンピュータ・システムのキュー内の
命令のペンデンシ(pendency)を低減し、またキューの
利用度を向上させることにより、キュー項目数、従って
システム・コストを低減することが有利であると認識す
るものである。
【0009】
【発明が解決しようとする課題】従来のNUMAコンピ
ュータ・システムの前述の及びその他の欠点を鑑み、本
発明は、改善されたキューイング、記憶、及び通信効率
を有するNUMAアーキテクチャを提供することが有用
且つ望ましいものと認識する。
【0010】
【課題を解決するための手段】本発明は、メモリ・ディ
レクトリ管理を通じて、排他アクセス操作のメモリ・ア
クセス時間を改善する不均等メモリ・アクセス(NUM
A)コンピュータ・システム及び関連操作方法を提供す
ることにより、従来技術の前述の及びその他の欠点を克
服する。
【0011】本発明の好適な実施例によれば、コンピュ
ータ・システムが、ノード相互接続により結合されるホ
ーム・ノードと1つ以上のリモート・ノードとを含む。
ホーム・ノードは、ローカル相互接続と、ローカル相互
接続とノード相互接続との間に結合されるノード制御装
置と、ホーム・システム・メモリと、複数のエントリを
含むメモリ・ディレクトリと、ローカル相互接続、ホー
ム・システム・メモリ及びメモリ・ディレクトリに結合
されるメモリ制御装置とを含む。メモリ・ディレクトリ
が複数のエントリを含み、各エントリは、ホーム・シス
テム・メモリ内の関連データ・グラニュールが、少なく
とも1つのリモート・ノード内に保持される対応するキ
ャッシュ・ラインを有するか否かの指示を提供する。メ
モリ制御装置は要求時無効化回路を含み、これがホーム
・システム・メモリ内の要求データ・グラニュールに対
するデータ要求に応答して、メモリ・ディレクトリ内の
関連エントリを読出し、要求データ・グラニュールに対
応するキャッシュ・ラインを保持する少なくとも1つの
リモート・ノードに、無効化コマンドを発行する。更
に、メモリ制御装置はディレクトリ消し込み論理を含
み、これはデータ要求とは無関係に、メモリ・ディレク
トリ内のエントリを周期的に読出し、エントリが少なく
とも1つのリモート・ノードが、関連データ・グラニュ
ールに対応するキャッシュ・ラインを保持すると示すこ
とに応答して、フラッシュ照会をその少なくとも1つの
リモート・ノードに発行し、関連データ・グラニュール
に対応するキャッシュ・ラインの割当て解除を要求す
る。
【0012】本発明の前述の及びその他の目的、特徴及
び利点が、以下の詳細な説明から明らかとなろう。
【0013】
【発明の実施の形態】図2を参照すると、本発明に従う
NUMAコンピュータ・システム50の典型的な実施例
が示される。図示の実施例は、例えばワークステーショ
ン、サーバ、またはメインフレーム・コンピュータとし
て実現される。本発明は基本的に、NUMAコンピュー
タ・システム50に関連して述べられるが、当業者であ
れば、本発明の多くのフィーチャが、SMPアーキテク
チャを含む他のコンピュータ・システム・アーキテクチ
ャにも適用可能であることが理解できよう。
【0014】図示のように、NUMAコンピュータ・シ
ステム50は、図示のようにスイッチとして実現される
ノード相互接続55により結合される、2つ以上のノー
ド52を含む。本発明により要求される訳ではないが、
図示の実施例では、各ノード52が実質的に同一であ
り、各ノードが、ローカル相互接続58に結合される1
つ以上の処理ユニット54と、ローカル相互接続58と
ノード相互接続55との間に結合されるノード制御装置
56とを含む。各ノード制御装置56は、ローカル相互
接続58上で受信される選択命令を、ノード相互接続5
5を介して、他のノード52に伝送することにより、及
びノード相互接続55を介して受信された選択命令を、
ローカル相互接続58上に伝送することにより、他のノ
ード52のためのローカル・エージェントとして機能す
る。
【0015】処理ユニット54はCPU60を含み、C
PU60はレジスタ、命令フロー論理、及び実行ユニッ
トを有し、これらはソフトウェア命令を実行するために
利用される。各処理ユニット54は更に、1つ以上のレ
ベルのオンチップ・キャッシュを含むキャッシュ階層6
2を含み、これはNUMAコンピュータ・システム50
全体に渡るデータ記憶から関連CPU60への、データ
をステージするために使用される。キャッシュ階層62
内で使用される好適なキャッシュ・アーキテクチャが、
図5に関連して後述される。更に、処理ユニット54の
各々は、処理ユニット54とローカル相互接続58との
間で、アドレス、データ及びコヒーレンス命令の通信を
処理するインタフェース・ユニット65を有し、また後
述するように、ローカル相互接続58に上に発行される
命令に対する様々なスヌープ応答からの、組み合わせ応
答を決定する応答論理63を含む。最後に、処理ユニッ
ト54の各々は、メモリ制御装置64を含み、これは処
理ユニット54の間で分散される物理システム・メモリ
66の関連するものへのアクセスを制御する。本発明の
別の実施例では、各ノード内のシステム・メモリが、単
一のシステム・メモリとしてインプリメントされ、ロー
カル相互接続58に結合される関連メモリ制御装置によ
り制御される。
【0016】本明細書では、"システム・メモリ"が物理
データ記憶装置として定義され、(エラー状態が存在し
なければ、)物理データ記憶装置内のそれぞれの保管場
所に永久に関連付けられる固有のアドレスを用いてアド
レス指定される。NUMAコンピュータ・システム50
全体を通じて、固有にデータを識別するために使用され
るアドレスに関連付けられる、システム・メモリ66内
の保管場所にデータを記憶するノード52が、そのデー
タのホーム・ノードと定義される。他方、他のノード5
2はそのデータのリモート・ノードと定義される。
【0017】図2及び図3に示されるように、ノード5
2間でのデータの共用をサポートするために、メモリ制
御装置64はローカル・メモリ・ディレクトリ(LM
D)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内
に、リモート・メモリ・キャッシュを組み込む。RMC
70が複数のシステム・メモリ66の間で分散される実
施例では、少なくとも同一ノード52内の任意のCPU
によりアクセス可能なキャッシュ・ラインが、好適には
特定のRMC70にマップされる。これはそのキャッシ
ュ・ラインに関連付けられる物理アドレスまたは論理ア
ドレスをハッシュすることにより行われる。
【0021】リモート・メモリ・キャッシュは高価なS
RAMではなく、安価なDRAMによりインプリメント
されるので、RMC70の1バイト当たりのコストは従
来技術と比較して、劇的に低減される。このことは追加
のコストをほとんど伴わずに、または全く伴わずに、そ
のサイズが大幅に増加され得ることを意味する。更に、
同一ノード内の複数のシステム・メモリの間で、リモー
ト・メモリ・キャッシュを分散することにより、従来技
術のように単一のノード制御装置ではなしに、複数のメ
モリ制御装置64に渡り、アクセス制御が分散されるよ
うになり、従来技術に比べて、帯域幅の大幅な改善が達
成される。
【0022】本発明の特定の実施例では、オペレーティ
ング・システムが、1つ以上のノード内の物理システム
・メモリの一部または全部を、リモート・メモリ・キャ
ッシュに割当てる一方、物理システム・メモリをシステ
ム・メモリ・アドレス空間には割当てないように選択す
る。こうした実施例では、システム・メモリ・アドレス
空間が1つ以上のノード内でローカライズされて、例え
ばラック・システム内のディスク・メモリ・ドロワーと
してインプリメントされ、処理ユニットを含む他のノー
ド内の物理システム・メモリが、リモート・メモリ・キ
ャッシュとして割当てられる。
【0023】前述のように、RMC70の少なくとも一
部を保持するように割当てられるシステム・メモリ66
に関連付けられる各メモリ制御装置64は、当該メモリ
制御装置がRMC70のその関連部分の内容を記録する
RMD74を提供される。従来のキャッシュ・ディレク
トリと同様、RMD74は好適にはRMC70内のデー
タに関連するアドレス情報だけでなく、コヒーレンス情
報、置換情報、及び任意的に追加の状態情報(例えば包
含関係)も記憶する。
【0024】メモリ制御装置64によるRMD74の迅
速なアクセスをサポートするために、RMD74は図2
に示されるように、高速SRAMでインプリメントされ
てもよい。このインプリメンテーションは、要求に応答
して、迅速なディレクトリ検索を推進することにより、
アクセス待ち時間を有利に低減する。しかしながら、R
MC70と同様、RMDのためのSRAMの使用は高価
であり、実際のシステムにおいて、RMD74のサイズ
(従ってRMC70のサイズ)を制限する。こうした問
題を解決するために、2つの異なるアプローチが採用さ
れてもよい。
【0025】第1に、RMD74がSRAM(または他
の高価な記憶技術)によりインプリメントされる場合、
RMD74はSRAM記憶容量の利用が最適化されるよ
うに、大きなセクタをインプリメントできる(すなわ
ち、大きなデータ・ブロックを、タグ及び状態情報の各
セットに関連付ける)。第2のアプローチは、図3のN
UMAコンピュータ・システム50'により例示される
ように、RMD74をRMC70と一緒に、システム・
メモリ66内に組み込む。このようにして、RMD74
をインプリメントするコストが大幅に削減されるか、R
MD74及びRMC70のサイズが追加のコストを伴わ
ずに、大幅に増加される。システム・メモリ66のDR
AM内へのRMD74の組込みは、ディレクトリ・アク
セス時間を遅らせるが、この追加のディレクトリ・アク
セス待ち時間が、図4に示されるように、RMC制御装
置73内に、最近アクセスされた(従ってアクセスされ
る可能性が高い)ディレクトリ・エントリを含む小ディ
レクトリ・キャッシュ75を装備することにより緩和さ
れる。
【0026】NUMAコンピュータ・システム50のオ
ペレーティング・システムにより、RMD74及びRM
C70に割当てられるシステム・メモリ66の量は、性
能上の重要な考慮事項である。なぜなら、より大きなR
MC70及びRMD74の割当ては、必然的にシステム
・メモリ・アドレス空間68を低減するからである。好
適な実施例では、RMC70及びRMD74に割当てら
れるシステム・メモリ66の、システム・メモリ・アド
レス空間68に占める割合が、実行されるアプリケーシ
ョンのニーズに応じて動的に可変される。例えば、オペ
レーティング・システムが、アプリケーションがそれが
実行されるノード52内のメモリをアクセスするだけで
足りると判断すると、オペレーティング・システムはR
MC70(及びその関連RMD74)を、システム・メ
モリ・アドレス空間68に比較して、かなり小さな空間
だけ割当てる。逆に、オペレーティング・システムが、
アプリケーションがリモート・メモリへの多くのアクセ
スを要求すると判断すると、オペレーティング・システ
ムはシステム・メモリの大きな部分をRMC70(及び
その関連RMD74)に割当てる。
【0027】RMC70(及びRMD74)は、少なく
とも2つの代替方法に従い、取り込まれる。第1に、R
MC70は、ローカル・キャッシュ階層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(M
ESI)プロトコル、またはそれらの変形を含む。当業
者には理解できるように、キャッシュ階層62により使
用されるコヒーレンス・プロトコルは、ローカル相互接
続58及びノード相互接続55を介して、様々なインプ
リメンテーション依存のメッセージを伝送する必要があ
り、これは例えば、CPU60により実行される命令の
キャッシュ階層62を通知したり、必要なデータ及び命
令を獲得したり、変更データをシステム・メモリ66に
書戻したり、コヒーレンスを維持するために必要とされ
る他の機能を実行するために必要とされる。
【0029】ノード間のコヒーレンスを維持するため
に、システム・メモリ制御装置71はLMD72内に、
関連システム・メモリ・アドレス空間68からリモート
・ノード52にチェックアウトされたデータ(すなわち
キャッシュ・ライン)の、システム・メモリ・アドレス
の指示を記憶する。コンパクトなディレクトリを保持す
ることが重要なローエンド・インプリメンテーションで
は、LMD72が各データ・グラニュールに、そのデー
タ・グラニュールが少なくとも1つのリモート・ノード
52にチェックアウトされるか否かの不正確な指示だけ
を関連付けているかもしれない。或いは、ハイエンド・
インプリメンテーションでは、LMD72は好適には、
各データ・グラニュールに関連して、各リモート・ノー
ド52におけるキャッシュ・ラインのコヒーレンス状態
の指示を記憶する。本発明の典型的な実施例に従う、L
MD72のエントリに含まれるノードごとのコヒーレン
ス状態には、表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内に組み込まれてもよい。しかしながら、L
MD72をシステム・メモリ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は関連L
RU論理150を有し、これはデータ記憶130の各合
同クラス内の各エントリが、どのくらい最近アクセスさ
れたかの指示を記憶する。従って、各合同クラスに関連
付けられるLRU論理150内の指示は、最低アクセス
頻度のメンバ、2番目に低いアクセス頻度のメンバ、及
び3番目に低いアクセス頻度のメンバなどを示す。
【0036】キャッシュ132は、キャッシュ・オペレ
ーション要求に関連付けられる要求アドレスを、(恐ら
く高レベル・キャッシュを介して、)その関連CPU6
0と、ローカル相互接続58の両方から受信する。要求
アドレスは高位のタグ・ビット、中位のインデックス・
ビット、及び下位のオフセット・ビットを含む。図5に
示されるように、キャッシュ132により受信される各
要求アドレスのインデックス・ビットは、キャッシュ・
ディレクトリ140及びLRU論理150の両方に入力
される。インデックス・ビットの受信に応答して、LR
U論理150はデコードされたCASTOUT_VICTIM信号15
2を出力する。この信号は、ことによるとキャッシュ・
オペレーション要求に応答して置換されているかもしれ
ない、選択合同クラスのメンバを示す。CASTOUT_VICTIM
信号152は、キャッシュ制御装置156及びマルチプ
レクサ154の両方に入力される。
【0037】要求アドレスのインデックス・ビットは、
キャッシュ・ディレクトリ140内のセット142を選
択する。次に、比較器146を用いて、選択セット14
2の各エントリ144内に記憶されるタグ(T)が、要
求アドレスのタグ・ビットと個々に比較され、各比較器
が1ビット・マッチ指示を生成する。比較器146によ
り出力されるビットは、デコードされたHIT/MIS
S信号148を形成し、これがキャッシュ制御装置15
6、マルチプレクサ154、及びORゲート153に入
力される。ORゲート153は、HIT/MISS信号
148を論理的に組み合わせることにより、選択信号を
生成し、この選択信号がヒットに応答して、HIT/M
ISS信号148をマルチプレクサ154の出力として
選択し、ミスに応答して、CASTOUT_VICTIM信号152を
マルチプレクサ154の出力として選択する。マルチプ
レクサ154の出力は、デコードされたSELECT信
号155を形成する。
【0038】比較器146によるタグ・ビットの比較と
並行して、選択セット142の各エントリに記憶される
コヒーレンス状態(CS)及びタグ(T)が、マルチプ
レクサ147に入力される。SELECT信号155が
次に、もし要求アドレスがキャッシュ・ディレクトリ1
40内でヒットした場合、マルチプレクサ147の出力
として、マッチング・メンバに関連付けられるコヒーレ
ンス状態及びタグを選択し、要求アドレスがキャッシュ
・ディレクトリ140内でミスした場合、LRUメンバ
に関連付けられるコヒーレンス状態及びタグを選択す
る。次に、選択コヒーレンス状態及びタグ149が、キ
ャッシュ制御装置156に入力される。
【0039】キャッシュ・オペレーション要求、HIT
/MISS信号148、コヒーレンス状態及びタグ14
9、及びCASTOUT_VICTIM信号152の受信に応答して、
キャッシュ制御装置156は要求を要求キュー134の
1つにエンキューし、適切なデータ処理及びディレクト
リ更新操作を実行する。例えば、関連CPU60による
読出しタイプの要求が、キャッシュ・ディレクトリ14
0内でミスしたことに応答して、キャッシュ制御装置1
56は、要求アドレスを含むキャッシュ・ラインを求め
る要求を、ローカル相互接続58上に出力し、ローカル
・キャッシュ階層62、ローカル・システム・メモリ6
8、または他のノード52からの要求データの受信に際
して、要求データを関連CPU60に提供し、要求キャ
ッシュ・ラインを、CASTOUT_VICTIM信号152により指
定される合同クラス・メンバに記憶する。或いは、関連
CPU60による読出し要求のキャッシュ・ディレクト
リ140内でのヒットに応答して、キャッシュ制御装置
156が要求データをデータ記憶130から読出し、そ
のデータを関連CPU60に提供する。キャッシュ・オ
ペレーション要求のサービスが、キャッシュ・ラインの
アクセスまたはキャッシュ・ラインの置換を要求する度
に、キャッシュ制御装置156はLRU_UPDATE信号158
を生成し、この信号がLRU論理150により、アクセ
スされた合同クラスに関連付けられるLRU指示を更新
するために使用される。後述するように、キャッシュ制
御装置156は、ローカル相互接続58上のスヌーピン
グ・オペレーションに応答して、スヌープ・キュー13
5を参照することにより、同様にキャッシュ更新及びデ
ータ処理操作を実行する。
【0040】リモート読出しタイプ命令:図6を参照す
ると、本発明に従い、CPUロードまたはストア要求を
サービスする方法のハイレベル論理フローチャートが示
される。図6に示されるプロセスはブロック100で開
始し、次にブロック101に進み、NUMAコンピュー
タ・システム50(または50')のあるノード52内
の最下レベル・キャッシュ132が、関連CPU60か
ら、データまたは命令(以下では単にデータと称す)の
要求を受信する。最下レベル・キャッシュ132での要
求の受信は、要求がキャッシュ階層62の高レベル・キ
ャッシュにおいて、ミスしたことを示す。
【0041】前述のように、要求の受信に応答して、最
下レベル・キャッシュ132は、ブロック102で、要
求が最下レベル・キャッシュ132内でヒットするか否
かを判断する。ヒットする場合、ブロック103で、キ
ャッシュ制御装置156がCPU60に要求データを提
供されることにより、要求をサービスし、プロセスはブ
ロック118で終了する。しかしながら、ブロック10
2で、要求が最下レベル・キャッシュ132内でミスし
たと判断されると、ブロック104で、最下レベル・キ
ャッシュ132のキャッシュ制御装置156が、そのロ
ーカル相互接続58上に、要求データをターゲットとす
る読出しタイプの要求(例えばロード要求のためのRE
AD、またはストア要求のためのRWITM(read-wit
h-intent-to-modify))を発行する。
【0042】図7は、本発明に従う読出しタイプの要求
の典型的な実施例を示す。図示のように、読出しタイプ
の要求は、発信元及び宛先タグ・フィールド119、1
20、アドレス及びパリティ・フィールド121、12
2、及び命令のサイズ及びタイプ(例えば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】重要な点は、ローカル・ノード制御装置5
6が、ホーム・ノードとして別のノードを有するデータ
に対する読出しタイプの要求に対して、"リモート・ア
ドレス"・スヌープ応答を提供するが、ノード制御装置
56はこうした読出しタイプの要求を、リモート・ノー
ドへの伝送のために、そのキュー57の1つに即時エン
キューしないことである。なぜなら、読出しタイプの要
求のNCQフィールド126が、0にセットされている
からである。
【0046】ブロック108で示されるように、読出し
タイプの要求を発行したインタフェース・ユニット65
内の応答論理63が、全てのスヌープ応答を組み合わ
せ、要求がどのようにサービスされるかを示す組み合わ
せ応答を生成する(例えば、最も優先順位の高いスヌー
プ応答を示すことによる)。インタフェース・ユニット
65はこの組み合わせ応答を、要求元キャッシュ階層6
2を含む、ローカル相互接続58上の各スヌーパに提供
する。組み合わせ応答が、要求アドレスが要求データの
発信元として役立つローカル・キャッシュ階層62また
はRMC70内でヒットしたことを示す場合、プロセス
はブロック108からブロック110に進み、読出しタ
イプの要求がローカル・キャッシュ階層62またはRM
C70によりサービスされる。その後、プロセスはブロ
ック118で終了する。
【0047】ブロック108に戻り、読出しタイプの要
求に対する組み合わせ応答が、ローカル・キャッシュ階
層62またはRMC70が要求データの発信元として役
立たないことを示す"リモート・アドレス"組み合わせ応
答の場合、ブロック112で示されるように、要求キャ
ッシュ階層62内の最下レベル・キャッシュ132のキ
ャッシュ制御装置156が、読出しタイプの要求を、N
CQフラグ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に(及び包
含キャッシュとしてインプリメントされる場合、RMC
70にも)提供する。その後、プロセスはブロック11
8で終了する。
【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から受信されると
き、そのキャッシュ・ラインが要求元キャッシュ階層6
2またはRMC70から割当て解除され、新たなキャッ
シュ・ラインを収容できるようにしなければならない。
リモート・ノードが常に未変更のキャッシュ・ラインを
黙って割当て解除する、前述の従来のNUMAコンピュ
ータ・システムとは異なり、本発明に従うNUMAコン
ピュータ・システムは、好適には、リモート・ノード
が、ホーム・ノードからチェックアウトされたキャッシ
ュ・ラインを割当て解除するとき、リモート・ノードが
ホーム・ノードにそのことを通知するように、割当て解
除操作をインプリメントする。従って、本発明はLMD
72が、リモート・ノード52に保持される関連システ
ム・メモリ・アドレス空間68からのデータに関して、
より正確な情報を含むことを可能にする。
【0054】次に図8及び図9を参照すると、本発明の
好適な実施例に従い、RMC70からのキャッシュ・ラ
インの割当て解除を示すハイレベル論理フローチャート
が示され、そこではRMC70が、ローカル・キャッシ
ュ階層62から割当て解除されたリモート・データを記
憶する"犠牲キャッシュ(victim cache)"として実現さ
れる。しかしながら、当業者であれば理解できるよう
に、図示の割当て解除プロセスは、RMC70がローカ
ル・キャッシュ階層62内に保持されるリモート・デー
タを含む実施例にも適用可能である。
【0055】最初に図8を参照すると、プロセスはブロ
ック170で開始し、その後、ブロック172に進み、
ここでRMC70を制御するメモリ制御装置64のRM
C制御装置73が、犠牲キャッシュ・ラインを割当て解
除のために選択する。この選択は、例えば、どのキャッ
シュ・ラインが最低使用頻度(LRU)か、或いは最も
最近使用されたか(MRU)、またはランダム選択や他
の犠牲選択基準にもとづき行われる。ブロック174で
示されるように、RMC制御装置73は犠牲キャッシュ
・ラインを、RMD74に記憶されるそのコヒーレンス
状態に従い割当て解除する。RMD74が犠牲キャッシ
ュ・ラインのコヒーレンス状態が無効であると示す場
合、ホーム・ノード52に何の通知も提供することな
く、犠牲キャッシュ・ラインが単に要求データにより上
書きされる。従って、プロセスはブロック174から直
接ブロック190に移行し終了する。
【0056】他方、RMD74が、選択犠牲キャッシュ
・ラインがホーム・ノード52のシステム・メモリ・ア
ドレス空間68に内在する対応データに関連して、変更
済みであると示す場合、メモリ制御装置64は変更デー
タに対して割当て解除プロセスを開始し、これがブロッ
ク176で示され、図9に関連して以下で詳述される。
最後に、RMD74が、犠牲キャッシュ・ラインが共用
コヒーレンス状態であると示す場合(すなわち、キャッ
シュ階層62内に局所的にキャッシュされているかもし
れず、その場合、ホーム・ノード52のシステム・メモ
リ66に関連して変更済みである)、メモリ制御装置6
4は、割当て解除されるキャッシュ・ラインのコピーを
含むシステム・メモリ66に関連付けられるホーム・ノ
ードのメモリ制御装置64に通知する。こうした通知
は、たとえそれがコヒーレンスを維持するために、厳密
には必要でなくても行われる。
【0057】ブロック178で示されるように、メモリ
制御装置64は、アドレス専用割当て解除命令をローカ
ル相互接続58上に発行することにより、共用犠牲キャ
ッシュ・ラインをリモート・メモリ・キャッシュ70か
ら割当て解除するプロセスを開始する。アドレス専用割
当て解除命令のスヌープに応答して、ノード制御装置5
6は命令をエンキューし、ローカル・キャッシュ階層6
2及び他のスヌーパが、ブロック180で示されるよう
に、割当て解除命令に対して、そのキャッシュ階層62
に関連して、犠牲キャッシュ・ラインのコヒーレンス状
態(一般に共用状態または無効状態)を示すスヌープ応
答を提供する。これらのスヌープ応答は、割当て解除命
令を発行したインタフェース・ユニット65内の応答論
理により組み合わされ、組み合わせ応答が生成される。
この組み合わせ応答が次に、ローカル相互接続58に結
合される全てのスヌーパに提供される。ブロック182
で示されるように、組み合わせ応答が、1つ以上のロー
カル・キャッシュ階層62が共用状態の犠牲キャッシュ
・ラインを記憶することを示す場合、プロセスはブロッ
ク190で終了し、この場合、ホーム・ノード52に通
知することなく、犠牲キャッシュ・ラインがRMC70
から割当て解除される。ホーム・ノード52に通知が提
供されない理由は、ホーム・ノードのLMD72の更新
が必要でないからである。
【0058】しかしながら、組み合わせ応答が、犠牲キ
ャッシュ・ラインが局所的に共用状態でキャッシュされ
ていないことを示す場合(すなわち組み合わせ応答がヌ
ル)、ブロック184で、ローカル・ノード制御装置5
6はエンキューされたアドレス専用割当て解除命令をホ
ーム・ノード52のノード制御装置56に送信し、割当
て解除命令をデキューする。ホーム・ノード52のノー
ド制御装置56は次に、アドレス専用割当て解除命令を
そのローカル相互接続58上に発行する。ブロック18
6で示されるように、犠牲キャッシュ・ラインのアドレ
スの担い手であるメモリ制御装置64が、LMD72内
の犠牲キャッシュ・ラインに対応する共用状態のエント
リを無効状態に更新し、犠牲キャッシュ・ラインがもは
やその特定のリモート・ノード52にキャッシュされて
いないことを示す。その後、図8に示されるプロセスは
ブロック190で終了する。
【0059】次に図9を参照すると、本発明に従いRM
C70から変更キャッシュ・ラインを割当て解除する典
型的な方法が示される。図示の実施例では、キャッシュ
階層62及びRMC70によりインプリメントされるコ
ヒーレンス・プロトコルが、タグ付き(T)コヒーレン
ス状態を含む周知のMESIプロトコルの変形である。
米国特許出願第09/024393号で述べられるよう
に、タグ付き(T)コヒーレンス状態は、1)キャッシ
ュ・ラインがシステム・メモリに関連して変更されてい
ること、2)キャッシュ・ラインが、異なる処理ユニッ
トに関連付けられる複数のキャッシュ内に保持されてい
るかもしれないこと、及び3)T状態のキャッシュ・ラ
インを保持するキャッシュが、現在そのキャッシュ・ラ
インをシステム・メモリに書戻す責任があることを示
す。
【0060】図9に示されるプロセスは、図8のブロッ
ク172乃至174で示されるように、割当て解除のた
めに選択されたRMC70内の犠牲キャッシュ・ライン
が、変更キャッシュ・ラインであると判断された後に、
ブロック200で開始する。プロセスは次にブロック2
02に進み、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をセットする。従って、ブロック2
08で示されるように、組み合わせ応答が共用の場合、
キャッシュ階層62の1つが、タグ付き(T)コヒーレ
ンス状態により許可されるように、変更犠牲キャッシュ
・ラインのコピーを保持することを示し、従って、ノー
ド制御装置56は共用フラグ248を1にセットする。
他方、犠牲キャッシュ・ラインの有効なコピーを保持す
るローカル・キャッシュ階層62が存在しない場合、ノ
ード制御装置56はヌル組み合わせ応答を受信し、従っ
て、ブロック210で共用フラグ248を0にセットす
る。
【0063】ノード制御装置56はその後、ブロック2
12で示されるように、キャストアウト書込み命令をデ
キューし、それを犠牲キャッシュ・ラインのホーム・ノ
ード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内に、ディレクトリ"消し込み(scrubbi
ng)"論理(SL)61なる機構がインプリメントされ
る。このディレクトリ消し込み論理(SL)61は、関
連LMD72内の各エントリを周期的に読出し、エント
リが、特定のキャッシュ・ラインが1つ以上のリモート
・ノード52に"キャッシュアウト"されていることを示
す場合、システム・メモリ制御装置71が"弱い"アドレ
ス専用フラッシュ照会を、それらのリモート・ノードに
発行する。
【0067】フラッシュ照会は"弱い(weak)"と称され
る。なぜなら、フラッシュ照会を受信するリモート・ノ
ード52は、それを遵守する必要がないからである。通
常状態では、フラッシュ照会がデータのコピーを保持す
るリモート・ノード52内のキャッシュ階層62により
スヌープされるとき、キャッシュ階層62はキャッシュ
内のアドレス指定ラインを無効化し、もしキャッシュ・
ラインが変更済みの場合、キャッシュ・ライン・データ
をホーム・ノード52に書戻す。しかしながら、データ
が依然リモート・ノード52内で活発に使用されている
か、キャッシュ階層のスヌープ・キューが全てビジーの
場合、フラッシュ照会が無視されてもよい。
【0068】次に図11を参照すると、本発明の好適な
実施例に従い、ディレクトリ消し込み論理61を操作す
る典型的な方法のハイレベル論理フローチャートが示さ
れる。図示のように、プロセスはブロック260で開始
し、ブロック262に進み、ディレクトリ消し込み論理
61がカウントダウン・カウンタを選択カウント値によ
りリセットし、このカウント値が、LMD72内のディ
レクトリ・エントリが消し込まれる頻度を決定する。カ
ウンタの初期値はハードウェアにより決定されるか、ソ
フトウェア・プログラマブルである。次に、ブロック2
64で、カウンタにより保持されるカウントが0か否か
が判断される。0でない場合、カウンタはブロック26
6で減分され、プロセスはブロック264に戻る。
【0069】ブロック264で、カウンタが0にカウン
トダウンしたと判断されると、プロセスはブロック26
8に進み、システム・メモリ制御装置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から発行されたアドレス専
用フラッシュ照会を処理する典型的な方法のハイレベル
論理フローチャートが示される。プロセスはブロック3
00で開始し、その後ブロック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におけるサービ
スを要求する読出しタイプの命令が、ノード制御装置5
6によりエンキューされる時間を低減することにより、
ノード制御装置56内で要求されるキュー57の数を有
利に低減する。本発明は更に、ノード制御装置56から
グローバル・コヒーレンス管理の責任を除去することに
より、ノード制御装置56内で要求されるアドレス、デ
ータ及びコマンド・キュー57の数を低減する。
【0077】図1のNUMAコンピュータ・システム8
などの従来システムでは、フラッシュ・コマンドがノー
ド相互接続12上で受信されるとき、ノード制御装置2
4が、フラッシュ・コマンドがそのノード10内で成功
裡に完了されることを保証する責任を負う。従って、フ
ラッシュ・コマンドがノード相互接続12を介して受信
されたときから、全てのローカル・キャッシュ階層18
及びRMC28がターゲット・キャッシュ・ラインのコ
ピーを無効化し、変更データが存在する場合、それらを
ホーム・ノードに書戻すまで、ノード制御装置24はそ
のキュー32の1つに、フラッシュ・コマンドを保持し
なければならない。当然のことながら、このプロセス
は、ノード相互接続12を介する通信の待ち時間を考慮
すると、2500サイクル以上を要する。従って、従来
のノード制御装置24は一般に、深いすなわち項目数の
多いキュー32を装備されるにも拘わらず、コヒーレン
ス・トラフィックがかなり多い場合には、キュー32は
依然性能上の障害となる。この性能上の障害を解決する
ために、本発明の好適な実施例はRMC制御装置73を
用いて、コヒーレンス管理を非集中化する。
【0078】図13を参照すると、本発明に従い、非集
中コヒーレンス管理を用いて、フラッシュ・コマンドが
処理される好適な方法のハイレベル論理フローチャート
が示される。図示の実施例では、各ノード52内のRM
C70が、ローカル・キヤッシュ階層62内にキャッシ
ュされる他のノード52からの全てのデータをまとめて
含むものと仮定される。
【0079】図示のように、図13に示されるプロセス
はブロック260で開始し、その後ブロック262に進
み、リモート・ノード52のノード制御装置56が、リ
モート・ノード52内で無効化されるキャッシュ・ライ
ンのフラッシュ・アドレスを指定するフラッシュ・コマ
ンドを受信し、変更データが存在する場合、それがホー
ム・ノード52に書戻される。前述のように、こうした
フラッシュ・コマンドは一般に、ホーム・ノード52の
メモリ制御装置64により、次のような事象に応答し
て、すなわち、LMD72内で、1つ以上のリモート・
ノード52にチェックアウト済みと示されるキャッシュ
・ラインに対するRWITM要求の受信に応答して発行
される。フラッシュ・コマンドの受信に応答して、リモ
ート・ノード52のノード制御装置52は、フラッシュ
・コマンドをキュー57にエンキューし、ブロック26
4で示されるように、フラッシュ・コマンドをそのロー
カル相互接続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
は、ヌル・スヌープ応答を提供し、ターゲット・キャッ
シュ・ラインの有効コピーを保持するキャッシュ階層6
2は、ターゲット・キヤッシュラインが無効化され、変
更データが存在する場合、それがホーム・ノードに書戻
されるまで、フラッシュ・コマンドに対して再試行スヌ
ープ応答を提供する。これらのスヌープ応答は、責任メ
モリ制御装置64に関連付けられるインタフェース・ユ
ニット65内の応答論理63により組み合わされる。ブ
ロック274で示されるように、組み合わせ応答が再試
行組み合わせ応答の場合、少なくとも1つのキャッシュ
階層62が依然、ターゲット・キャッシュ・ラインのコ
ピーを無効化処理中か、変更データをホーム・ノード5
2に書戻し処理中であることを示し、プロセスは前述の
ブロック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を割当て解除する。ブロック2
78で示されるように、ノード制御装置56はフラッシ
ュACK命令を一時的にエンキューし、それをホーム・
ノード52に転送し、ホーム・ノードのメモリ制御装置
64に、フラッシュ命令がリモート・ノード52におい
て完了したことを示す。その後、図13に示されるプロ
セスはブロック280で完了する。
【0084】図13のプロセスにより示されるように、
本発明は、グローバル・コヒーレンス管理の責任をノー
ド制御装置からメモリ制御装置に譲渡することにより、
ノード制御装置設計の単純化を可能にする一方で、同時
にサービスされるグローバル・コヒーレンス管理命令の
数を増加させる。このインプリメンテーションは、RM
C制御装置73により提供されるキューの大きなプール
の存在を仮定すると、非常に多数の同時コヒーレンス管
理命令のサポートを可能にするだけでなく、処理ユニッ
ト54の数の増加に伴い、スケーリングし、それにより
潜在的な性能障害を解決する。
【0085】分散グローバル・コヒーレンス管理:本発
明は、ノード制御装置による集中コヒーレンス管理では
なく、メモリ制御装置による非集中コヒーレンス管理を
推進するだけでなく、選択命令に対するグローバル・コ
ヒーレンス管理の責任を、複数の制御装置の間で分散す
ることにより、キュー資源の効率的な利用を推進する。
【0086】図1のNUMAコンピュータ・システム8
などの、従来のNUMAコンピュータ・システムでは、
読出しタイプの要求(例えばREAD、RWITMな
ど)がリモート・ノードから受信されてから、要求キャ
ッシュ・ラインがリモート・ノードにより成功裡に受信
されるまで、ホーム・ノードのノード制御装置24内の
コヒーレンス管理キュー32が、その読出しタイプの要
求に割当てられる。ノード制御装置はこの期間を通じ
て、キュー割当てを保持しなければならない。なぜな
ら、ノード制御装置24は、前の要求のターゲット・キ
ャッシュ・ラインがリモート・ノードに配信されるま
で、同じキャッシュ・ラインをターゲットとするフラッ
シュ命令をホーム・ノードから発行できないからであ
る。換言すると、従来のNUMAコンピュータ・システ
ムでは、グローバル・コヒーレンスを維持するために、
ホーム・ノードのノード制御装置が、最初の要求、及び
続く要求によるフラッシュ命令に応答して、リモート・
ノードへのデータ配信を厳密に順序付ける責任を負い、
従って、要求データが成功裡にリモート・ノードに配信
されるまで、第1の要求へのキューの割当てを維持しな
ければならない。
【0087】本発明は、特殊コマンド(以下Numaf
yコマンドと称す)をインプリメントすることにより、
前述の従来のコヒーレンス管理手法を改善する。このコ
マンドは、グローバル・コヒーレンス管理の責任を制御
装置間で譲渡し、それにより、従来のNUMAコンピュ
ータ・システムの性能を妨げる順序付け及びキューイン
グ要件を排除する。本発明のNumafyコマンドの典
型的な利用のタイミング図が図14に示される。
【0088】図14を参照すると、リモート・ノードに
よる読出しタイプの要求をサービスするために使用され
る、NUMAコンピュータ・システム50のリモート・
ノード及びホーム・ノードのローカル相互接続上の命令
を示す時間−空間図が示される。図示のプロセスは、図
6に関連して前述した革新的な読出し再発行方向を採用
する。
【0089】図示のように、リモート・ノード52(図
14ではノード1として示される)内の低レベル・キャ
ッシュ132のキャッシュ制御装置156が、別のノー
ドがホーム・ノード52であるキャッシュ・ラインの排
他アクセスを得るために、読出しタイプの要求(この場
合RWITM要求300)を、そのローカル相互接続5
8上に発行するときプロセスは開始する。前述のよう
に、キャッシュ制御装置156が、そのキャッシュ・デ
ィレクトリ140内でのCPUストア要求のミスに応答
して、RWITM要求300を発行する。RWITM要
求300内では、NCQフィールド126が初期に0に
セットされ、従って、ローカル・ノード制御装置56
は、RWITM要求300が局所的にサービスされない
と決定されるまで、RWITM要求300をエンキュー
しない。RWITM要求はまた、キャッシュ制御装置1
56の要求キュー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を提供することにより、再発行されたRW
ITM要求306に応答し、これらが組み合わされて、
第2の組み合わせ応答310が生成される。
【0091】図6に関連して述べたように、ノード1の
ノード制御装置56はRWITM要求を、そのサービス
のためにノード2(すなわちターゲット・キャッシュ・
ラインのホーム・ノード)に転送し、ノード制御装置応
答を組み合わせ応答310を介して、キャッシュ132
に提供することにより要求が転送されたことを示す。組
み合わせ応答310の受信に際して、キャッシュ制御装
置156は、要求されたRWITM要求に関連付けられ
るローカル・フラグ136(図5参照)をセットする。
ローカル・フラグ136は、このキャッシュ132がタ
ーゲット・キャッシュ・ラインの局所的所有権を獲得し
たことを示し、従って、保護ウィンドウT0の間に、キ
ャッシュ・ラインを要求する他のローカル・リクエスタ
が存在する場合、そうした要求に対して再試行スヌープ
応答を提供することにより、彼らからターゲット・キャ
ッシュ・ラインの所有権を保護する。しかしながら、キ
ャッシュ制御装置156がホーム・ノードからのフラッ
シュ命令をスヌープする場合、キャッシュ制御装置15
6はフラッシュ命令を無視する。なぜなら、キャッシュ
132はまだターゲット・キャッシュ・ラインの有効コ
ピー、またはターゲット・キャッシュ・ラインのグロー
バル所有権を有さないからである。この時点で、キャッ
シュ制御装置156はホーム・ノードから、1)ターゲ
ット・キャッシュ・ラインと、2)ターゲット・キャッ
シュ・ラインのグローバル所有権が付与されたことを示
すNumafyコマンドの受信を待機する。動的動作状
態に応じて、キャッシュ制御装置156はターゲット・
キャッシュ・ライン及びNumafyコマンドを任意の
順序で受信する。
【0092】図示のように、ノード相互接続55を介す
るRWITM要求の受信に応答して、ノード2のノード
制御装置56は、対応するRWITM要求320をノー
ド2のローカル相互接続58上に発行する。ノード2内
のスヌーパが適切なスヌープ応答322を提供し、これ
らがノード制御装置56により組み合わされて、RWI
TM要求320が、ターゲット・キヤッシュライン・デ
ータが存在するシステム・メモリ・アドレス空間68に
関連付けられるメモリ制御装置64によりサービスされ
ることを示す組み合わせ応答324が生成される。一旦
メモリ制御装置64がRWITM要求320を受諾し、
そのメモリ制御装置64のシステム・メモリ制御装置7
1が、RWITM要求320をそのコヒーレンス管理キ
ュー79にエンキューすると、LMD72によりターゲ
ット・キャッシュ・ラインのコピーを保持することが示
される、ノード1以外の各リモート・ノード52に対し
て、システム・メモリ制御装置71がフラッシュ・コマ
ンド330を発行する。更に、システム・メモリ制御装
置71がアドレス専用Numafyコマンド326をノ
ード1に発行し、メモリ読出しキューをディスパッチし
て、要求データをノード1に提供する。LMD72が、
ターゲット・キャッシュ・ラインがリモート・ノード5
2からフラッシュ・バックされる必要がないと示す場
合、システム・メモリ・アドレス空間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がアドレス専用N
umafyコマンド340をスヌープするとき、キャッ
シュ制御装置156は、RWITM要求に関連付けられ
るグローバル・フラグ138をセットする。セットされ
たグローバル・フラグ138は、要求元キャッシュ13
2がターゲット・キャッシュ・ラインのグローバル所有
権を受信したこと、従って、第2の保護ウィンドウT1
の間に、ターゲット・キャッシュ・ラインを、他のロー
カル・リクエスタからだけではなく、ホーム・ノードか
らのあらゆるフラッシュまたはクリーン・コマンドから
も保護しなければならないことを示す。それ故、保護ウ
ィンドウT1の間、要求元キャッシュ制御装置156
は、局所的に受信される、またはホーム・ノード(すな
わちノード2)から受信されるあらゆるフラッシュ、ク
リーンまたは他の類似の命令に対して、再試行スヌープ
応答を提供しなければならない。尚、保護ウィンドウT
1は、要求元キャッシュ制御装置156がRWITM要
求のサービスを完了したとき閉じられる。
【0095】一旦要求元キャッシュ制御装置156がタ
ーゲット・キャッシュ・ライン・データ342を受信す
ると、キャッシュ制御装置156が保留のCPUストア
要求をサービスし、そのキャッシュ・ディレクトリ14
0内のターゲット・キャッシュ・ラインのコヒーレンス
状態を、変更コヒーレンス状態に更新する。この時点
で、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
に内在するデータのキャッシュ・ラインに対するREA
D要求を発行するとき、システム・メモリ制御装置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要求に関わるターゲッ
ト・キャッシュ・ラインの、排他所有権または非排他所
有権の付与を決定することにより、従来技術に比較し
て、同一のリモート・ノード内の続くストア命令に関連
付けられる、または他のリモート・ノードによるREA
D要求に関連付けられる不必要な待ち時間が、大幅に低
減される。結果的に、NUMAコンピュータ・システム
50の全体性能が改善される。
【0106】データ及び命令のプリフェッチ:図1のN
UMAコンピュータ・システム8などの、従来のNUM
Aコンピュータ・システムでは、データ及び命令のプリ
フェッチ要求が、CPUのプリフェッチ・エンジンによ
り開始され、次にCPUの最下レベルのインライン・キ
ャッシュのキャッシュ制御装置により、プリフェッチさ
れる各キャッシュ・ラインに対して、1つのREAD要
求がローカル相互接続上に発行される。深いプリフェッ
チ・アルゴリズムでは、この従来のプリフェッチ手法
は、キャッシュ制御装置に非常に多くの読出しキューを
装備することが要求される。大規模なマルチプロセッサ
・システムでは、これらの資源のコストが、もちろんC
PUチップの数だけ乗算され、従って、総システム・コ
ストの大きな割合を占めることになる。
【0107】プリフェッチ・データの発信元(例えばロ
ーカル・システム・メモリか、または別のノードのシス
テム・メモリか)に応じて、プリフェッチ要求に割当て
られる読出しキューは、長い期間アクティブ(ビジー)
でいられる。明らかに、性能的観点から、要求時読出し
要求のサービスを遅延することは望ましくない。なぜな
ら、全ての読出しキューがプリフェッチ要求に割当てら
れているからである。要求時読出し要求とプリフェッチ
読出し要求との間の、読出し要求の競合を解決するため
に、プリフェッチ読出しキューの別のセットを生成する
ことが可能である。しかしながら、これは追加のコスト
及び複雑化を招き、読出し要求をプリフェッチするため
に割当てられたキューがビジーでいる期間を低減しな
い。
【0108】本発明は、従来技術における前述の欠点
を、改善されたプリフェッチ手法を導入することにより
解決し、そこではプリフェッチ命令がキャッシュ制御装
置ではなく、メモリ制御装置により作成される。本発明
によれば、初期要求時データ・ロードまたは命令フェッ
チが要求元処理ユニットにより発行されるとき、プリフ
ェッチ・ヒント情報がREAD命令に付加される。この
ヒント情報が例えば、プリフェッチする多数のキャッシ
ュ・ラインと、キャッシュ・ライン間のストライドを含
む。読出しの受信に応答して、メモリ制御装置が要求デ
ータまたは命令を送信し、次にプリフェッチ・ヒントを
用いて、任意的にWRITE命令により、プリフェッチ
・データを要求元処理ユニットに送信する。
【0109】次に図17を参照すると、本発明のプリフ
ェッチ手法に従い、低レベル・キャッシュ132のキャ
ッシュ制御装置156が、付加されたプリフェッチ・ヒ
ントを有する要求時READ要求を発行する典型的な方
法のハイレベル論理フローチャートが示される。図示の
ように、プロセスはブロック380で開始し、その後、
キャッシュ制御装置156が、その関連CPU60から
ロード要求を受信するまでブロック382に留まる。ロ
ード要求の受信に応答して、キャッシュ制御装置156
はブロック384で、ロード要求がそのキャッシュ・デ
ィレクトリ140内でヒットするか否かを判断する。ヒ
ットする場合、ブロック386で、キャッシュ制御装置
156は要求データをデータ記憶130から読出し、要
求データをCPU60に提供する。プロセスはその後ブ
ロック382に戻る。
【0110】ブロック384に戻り、キャッシュ制御装
置156が、ロード要求がキャッシュ・ディレクトリ1
40内でミスしたと判断すると、ブロック390及び3
92で示されるように、キャッシュ制御装置はそのロー
ド要求にもとづき、READ要求を生成し、プリフェッ
チ要求に含まれるプリフェッチ・ヒントが存在する場
合、それをREAD要求に付加するか、READ要求内
に含む。図7に示されるように、プリフェッチ・ヒント
はREAD要求内のプリフェッチ(PF)フィールド1
28により伝達され、プリフェッチされるキャッシュ・
ラインの数、及びプリフェッチ・キャッシュ・ライン間
のアドレス・ストライドを指定する。次に、キャッシュ
制御装置156が要求キュー134をREAD要求に割
当て、ブロック394で示されるように、READ要求
をそのローカル相互接続58上に発行し、その後ブロッ
ク396で、要求データの返却を待機する。図7に関連
して前述したように、READ要求は好適には、発行元
キャッシュ制御装置156またはその処理ユニット54
を識別する発信元タグ・フィールド119を含む。
【0111】ブロック398で示されるように、REA
D要求のターゲットである要求キャッシュ・ラインが受
信されると、キャッシュ制御装置156はキャッシュ・
ラインをデータ記憶130内に記憶し、キャッシュ・デ
ィレクトリ140を更新し、READ要求に割当てられ
た要求キュー134を割当て解除し、ロード要求により
要求されたデータを関連CPU60に提供する。その
後、図17に示されるプロセスは前述のブロック382
に戻る。
【0112】次に図18を参照すると、本発明に従い、
メモリ制御装置64がプリフェッチ・ヒントを含むRE
AD要求に応答する典型的な方法のハイレベル論理フロ
ーチャートが示される。図示のように、プロセスはブロ
ック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要求の発信元タグ・フィールド1
19の内容を、プリフェッチWRITE命令のアドレス
部分の宛先タグ・フィールド242に配置する。プリフ
ェッチ・データのキャッシュ・ラインを要求元キャッシ
ュ階層62に送信後、システム・メモリ制御装置71は
ブロック420で、割当てられたプリフェッチ・キュー
を、キュー79の中から割当て解除する。その後、プロ
セスはブロック402に戻る。
【0115】次に図19を参照すると、本発明に従い、
要求元キャッシュがスヌープされたプリフェッチWRI
TE命令を処理する典型的な方法のハイレベル論理フロ
ーチャートが示される。図示のように、プロセスはブロ
ック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つが、プリフェッチWRIT
E命令への割当てのために使用可能か否かを判断する。
プリフェッチWRITE命令に割当てられ得る全てのス
ヌープ・キュー135がビジーの場合、プロセスは終了
しブロック432に戻る。これはすなわち、スヌープ・
キュー135が使用不能な場合、キャッシュ制御装置1
56がプリフェッチ・データを受諾しないか、再試行ス
ヌープ応答を発行しないことを示す。しかしながら、ス
ヌープ・キュー135の1つがプリフェッチWRITE
命令への割当てのために使用可能な場合、キャッシュ制
御装置156はブロック438で、スヌープ・キュー1
35の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)ノード相互接続により結合されるホ
ーム・ノードと1つ以上のリモート・ノードとを含むコ
ンピュータ・システムを操作する方法であって、前記ホ
ーム・ノードのメモリ・ディレクトリ内の複数のエント
リの各々に、前記ホーム・ノードのホーム・システム・
メモリ内の関連データ・グラニュールが、少なくとも1
つの前記リモート・ノード内に保持される対応するキャ
ッシュ・ラインを有するか否かを記録するステップと、
前記ホーム・システム・メモリ内の要求データ・グラニ
ュールに対するデータ要求に応答して、前記メモリ・デ
ィレクトリ内の関連エントリを読出し、前記要求データ
・グラニュールに対応するキャッシュ・ラインを保持す
る少なくとも1つの前記リモート・ノードに、無効化コ
マンドを発行するステップと、データ要求とは無関係
に、前記メモリ・ディレクトリ内のエントリを周期的に
読出し、前記エントリが少なくとも1つの前記リモート
・ノードが、関連データ・グラニュールに対応するキャ
ッシュ・ラインを保持すると示すことに応答して、フラ
ッシュ照会を前記少なくとも1つのリモート・ノードに
発行し、前記関連データ・グラニュールに対応する前記
キャッシュ・ラインの割当て解除を要求するステップと
を含む方法。 (2)前記メモリ・ディレクトリ内のエントリを周期的
に読出すステップが、前記メモリ・ディレクトリ内のエ
ントリを周期的且つ順次的に読出すステップを含む、前
記(1)記載の方法。 (3)前記メモリ・ディレクトリ内のエントリを周期的
に読出すステップが、タイマにより指示される一定間隔
で、前記メモリ・ディレクトリ内のエントリを周期的に
読出すステップを含む、前記(1)記載の方法。 (4)前記記録ステップが、前記複数のエントリの各々
に、前記関連データ・グラニュールに対応するキャッシ
ュ・ラインを保持する各リモート・ノードの識別を記録
するステップを含む、前記(1)記載の方法。 (5)前記リモート・ノードでの前記フラッシュ照会の
受信に応答して、前記リモート・ノードにおいて、前記
フラッシュ照会に応答して、動的動作条件にもとづき、
フラッシュを実行するか否かを決定するステップと、フ
ラッシュの実行の決定に応答して、前記リモート・ノー
ド内の前記キャッシュ・ラインを無効化し、変更データ
が存在する場合、該変更データを前記ホーム・ノードに
伝送するステップとを含む、前記(1)記載の方法。 (6)前記動的動作条件にもとづき、フラッシュを実行
するか否かを決定するステップが、リソースの可用性及
び前記キャッシュ・ラインの活用の少なくともいずれか
にもとづき、フラッシュを実行するか否かを決定するス
テップを含む、前記(5)記載の方法。 (7)前記キャッシュ・ラインが保持される前記リモー
ト・ノードのキャッシュ階層内のレベルにもとづき、前
記キャッシュ・ラインの活用を決定するステップを含
む、前記(6)記載の方法。 (8)フラッシュが前記リモート・ノードにおいて実行
されたことを示す指示の受信に応答して、前記ホーム・
ノード内の前記メモリ・ディレクトリを更新するステッ
プを含む、前記(1)記載の方法。 (9)ノード相互接続によりホーム・ノードに結合され
る1つ以上のリモート・ノードを含む、マルチノード・
コンピュータ・システムの前記ホーム・ノード内で使用
されるメモリ制御装置であって、前記ホーム・ノードが
ホーム・システム・メモリと関連メモリ・ディレクトリ
とを含むものにおいて、前記メモリ・ディレクトリ内の
複数のエントリの各々に、前記ホーム・システム・メモ
リ内の関連データ・グラニュールが、少なくとも1つの
前記リモート・ノード内に保持される対応するキャッシ
ュ・ラインを有するか否かを記録する手段と、前記ホー
ム・システム・メモリ内の要求データ・グラニュールに
対するデータ要求に応答して、前記メモリ・ディレクト
リ内の関連エントリを読出し、前記要求データ・グラニ
ュールに対応するキャッシュ・ラインを保持する少なく
とも1つの前記リモート・ノードに、無効化コマンドを
発行する手段と、データ要求とは無関係に、前記メモリ
・ディレクトリ内のエントリを周期的に読出し、前記エ
ントリが少なくとも1つの前記リモート・ノードが、関
連データ・グラニュールに対応するキャッシュ・ライン
を保持すると示すことに応答して、フラッシュ照会を前
記少なくとも1つのリモート・ノードに発行し、前記関
連データ・グラニュールに対応する前記キャッシュ・ラ
インの割当て解除を要求する手段とを含むメモリ制御装
置。 (10)前記メモリ・ディレクトリ内のエントリを周期
的に読出す手段が、前記メモリ・ディレクトリ内のエン
トリを周期的且つ順次的に読出す手段を含む、前記
(9)記載のメモリ制御装置。 (11)前記メモリ・ディレクトリ内のエントリを周期
的に読出す手段が、タイマにより指示される一定間隔
で、前記メモリ・ディレクトリ内のエントリを周期的に
読出す手段を含む、前記(9)記載のメモリ制御装置。 (12)前記記録手段が、前記複数のエントリの各々
に、前記関連データ・グラニュールに対応するキャッシ
ュ・ラインを保持する各リモート・ノードの識別を記録
する手段を含む、前記(9)記載のメモリ制御装置。 (13)フラッシュが前記リモート・ノードにおいて実
行されたことを示す指示の受信に応答して、前記メモリ
・ディレクトリを更新する手段を含む、前記(9)記載
のメモリ制御装置。 (14)ノード相互接続によりホーム・ノードに結合さ
れる1つ以上のリモート・ノードを含む、マルチノード
・コンピュータ・システムの前記ホーム・ノードのため
のメモリ・システムであって、前記(9)記載のメモリ
制御装置と、前記メモリ・システムに結合されるホーム
・システム・メモリと、前記メモリ制御装置に結合され
るメモリ・ディレクトリとを含むメモリ・システム。 (15)マルチノード・コンピュータのノードであっ
て、ローカル相互接続と、前記ローカル相互接続に結合
されるノード制御装置と、前記ローカル相互接続に結合
される、前記(14)記載のメモリ・システムとを含む
ノード。 (16)ノード相互接続により結合されるホーム・ノー
ドと1つ以上のリモート・ノードとを含むコンピュータ
・システムであって、前記ホーム・ノードが、ローカル
相互接続と、前記ローカル相互接続と前記ノード相互接
続との間に結合されるノード制御装置と、ホーム・シス
テム・メモリと、複数のエントリを含むメモリ・ディレ
クトリと、前記ローカル相互接続、前記ホーム・システ
ム・メモリ、及び前記メモリ・ディレクトリに結合され
るメモリ制御装置とを含み、前記メモリ制御装置が、前
記メモリ・ディレクトリ内の複数のエントリの各々に、
前記ホーム・システム・メモリ内の関連データ・グラニ
ュールが、少なくとも1つの前記リモート・ノード内に
保持される対応するキャッシュ・ラインを有するか否か
を記録する手段と、前記ホーム・システム・メモリ内の
要求データ・グラニュールに対するデータ要求に応答し
て、前記メモリ・ディレクトリ内の関連エントリを読出
し、前記要求データ・グラニュールに対応するキャッシ
ュ・ラインを保持する少なくとも1つの前記リモート・
ノードに、無効化コマンドを発行する手段と、データ要
求とは無関係に、前記メモリ・ディレクトリ内のエント
リを周期的に読出し、前記エントリが少なくとも1つの
前記リモート・ノードが、関連データ・グラニュールに
対応するキャッシュ・ラインを保持すると示すことに応
答して、フラッシュ照会を前記少なくとも1つのリモー
ト・ノードに発行し、前記関連データ・グラニュールに
対応する前記キャッシュ・ラインの割当て解除を要求す
る手段とを含むコンピュータ・システム。 (17)前記メモリ・ディレクトリ内のエントリを周期
的に読出す手段が、前記メモリ・ディレクトリ内のエン
トリを周期的且つ順次的に読出す手段を含む、前記(1
6)記載のコンピュータ・システム。 (18)前記メモリ・ディレクトリ内のエントリを周期
的に読出す手段が、タイマにより指示される一定間隔
で、前記メモリ・ディレクトリ内のエントリを周期的に
読出す手段を含む、前記(16)記載のコンピュータ・
システム。 (19)前記記録手段が、前記複数のエントリの各々
に、前記関連データ・グラニュールに対応するキャッシ
ュ・ラインを保持する各リモート・ノードの識別を記録
する手段を含む、前記(16)記載のコンピュータ・シ
ステム。 (20)前記メモリ制御装置が、フラッシュが前記リモ
ート・ノードにおいて実行されたことを示す指示の受信
に応答して、前記メモリ・ディレクトリを更新する手段
を含む、前記(16)記載のコンピュータ・システム。 (21)前記リモート・ノードが、前記データ・グラニ
ュールに対応する前記キャッシュ・ラインを保持するキ
ャッシュ階層と、前記フラッシュ照会の受信に応答し
て、動的動作条件にもとづき、フラッシュを実行するか
否かを決定し、フラッシュの実行の決定に応答して、前
記キャッシュ・ラインを無効化し、変更データが存在す
る場合、該変更データを前記メモリ制御装置に伝送する
キャッシュ制御装置とを含む、前記(16)記載のコン
ピュータ・システム。 (22)前記キャッシュ制御装置が、リソースの可用性
及び前記キャッシュ・ラインの活用の少なくともいずれ
かにもとづき、フラッシュを実行するか否かを決定す
る、前記(21)記載のコンピュータ・システム。 (23)前記キャッシュ制御装置が、前記キャッシュ・
ラインが保持される前記キャッシュ階層内のレベルにも
とづき、前記キャッシュ・ラインの活用を決定する、前
記(22)記載のコンピュータ・システム。
【図面の簡単な説明】
【図1】従来技術によるNUMAコンピュータ・システ
ムのブロック図である。
【図2】システム・メモリ内に組み込まれるリモート・
メモリ・キャッシュ(RMC)を有する、本発明に従う
NUMAコンピュータ・システムの典型的な実施例を示
す図である。
【図3】システム・メモリ内に組み込まれるリモート・
メモリ・キャッシュ(RMC)及び関連リモート・メモ
リ・ディレクトリ(RMD)を有する、本発明に従うN
UMAコンピュータ・システムの典型的な実施例を示す
図である。
【図4】図2または図3のNUMAコンピュータ・シス
テム内のメモリ制御装置の詳細ブロック図である。
【図5】図2または図3のNUMAコンピュータ・シス
テム内の低レベル・キャッシュの詳細ブロック図であ
る。
【図6】本発明に従い、NUMAコンピュータ・システ
ムの別のノードからデータを要求する、読出しタイプ要
求を発行する典型的な方法のハイレベル論理フローチャ
ートである。
【図7】本発明に従う典型的な読出しタイプ要求を示す
図である。
【図8】本発明に従い、リモート・ノードから、共用コ
ヒーレンス状態の犠牲キャッシュ・ラインを割当て解除
する典型的な方法のハイレベル論理フローチャートであ
る。
【図9】本発明に従い、NUMAコンピュータ・システ
ムのリモート・ノードから、変更済みコヒーレンス状態
の犠牲キャッシュ・ラインを割当て解除する典型的な方
法のハイレベル論理フローチャートである。
【図10】図9の方法で使用される典型的なキャストア
ウト書込み命令を示す図である。
【図11】本発明に従い、フラッシュ照会により、NU
MAコンピュータ・システムのリモート・ノード内に保
持されるキャッシュ・ラインの割当て解除を要求するハ
イレベル論理フローチャートである。
【図12】本発明に従い、フラッシュ照会により、NU
MAコンピュータ・システムのリモート・ノード内に保
持されるキャッシュ・ラインの割当て解除を要求すハイ
レベル論理フローチャートである。
【図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 ローカル・メモリ・ディレクトリ(LM
D) 28、70 リモート・メモリ・キャッシュ(RMC) 30、74 リモート・メモリ・ディレクトリ(RM
D) 32、57 キュー 61 ディレクトリ消し込み論理(SL) 63 応答論理(RL) 68 システム・メモリ・アドレス空間 77 キュー 79 コヒーレンス管理キュー 142 合同クラスのセット 144 ディレクトリ・エントリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ラビ・クマー・アリミリ アメリカ合衆国78759、テキサス州オース ティン、スパイスブラッシュ・ドライブ 9221 (72)発明者 ジョン・スティーブン・ドッドソン アメリカ合衆国78660、テキサス州フルガ ービル、ベル・ロック・サークル 1205 (72)発明者 ジェームス・スティーブン・フィールズ・ ジュニア アメリカ合衆国78717、テキサス州オース ティン、ポコノ・ドライブ 16420 Fターム(参考) 5B005 JJ11 KK14 MM01 MM22 MM25 NN45 NN53 PP11 PP21 UU31 5B045 DD12 EE02 EE36

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】ノード相互接続により結合されるホーム・
    ノードと1つ以上のリモート・ノードとを含むコンピュ
    ータ・システムを操作する方法であって、 前記ホーム・ノードのメモリ・ディレクトリ内の複数の
    エントリの各々に、前記ホーム・ノードのホーム・シス
    テム・メモリ内の関連データ・グラニュールが、少なく
    とも1つの前記リモート・ノード内に保持される対応す
    るキャッシュ・ラインを有するか否かを記録するステッ
    プと、 前記ホーム・システム・メモリ内の要求データ・グラニ
    ュールに対するデータ要求に応答して、前記メモリ・デ
    ィレクトリ内の関連エントリを読出し、前記要求データ
    ・グラニュールに対応するキャッシュ・ラインを保持す
    る少なくとも1つの前記リモート・ノードに、無効化コ
    マンドを発行するステップと、 データ要求とは無関係に、前記メモリ・ディレクトリ内
    のエントリを周期的に読出し、前記エントリが少なくと
    も1つの前記リモート・ノードが、関連データ・グラニ
    ュールに対応するキャッシュ・ラインを保持すると示す
    ことに応答して、フラッシュ照会を前記少なくとも1つ
    のリモート・ノードに発行し、前記関連データ・グラニ
    ュールに対応する前記キャッシュ・ラインの割当て解除
    を要求するステップとを含む方法。
  2. 【請求項2】前記メモリ・ディレクトリ内のエントリを
    周期的に読出すステップが、前記メモリ・ディレクトリ
    内のエントリを周期的且つ順次的に読出すステップを含
    む、請求項1記載の方法。
  3. 【請求項3】前記メモリ・ディレクトリ内のエントリを
    周期的に読出すステップが、タイマにより指示される一
    定間隔で、前記メモリ・ディレクトリ内のエントリを周
    期的に読出すステップを含む、請求項1記載の方法。
  4. 【請求項4】前記記録ステップが、前記複数のエントリ
    の各々に、前記関連データ・グラニュールに対応するキ
    ャッシュ・ラインを保持する各リモート・ノードの識別
    を記録するステップを含む、請求項1記載の方法。
  5. 【請求項5】前記リモート・ノードでの前記フラッシュ
    照会の受信に応答して、前記リモート・ノードにおい
    て、前記フラッシュ照会に応答して、動的動作条件にも
    とづき、フラッシュを実行するか否かを決定するステッ
    プと、 フラッシュの実行の決定に応答して、前記リモート・ノ
    ード内の前記キャッシュ・ラインを無効化し、変更デー
    タが存在する場合、該変更データを前記ホーム・ノード
    に伝送するステップとを含む、請求項1記載の方法。
  6. 【請求項6】前記動的動作条件にもとづき、フラッシュ
    を実行するか否かを決定するステップが、リソースの可
    用性及び前記キャッシュ・ラインの活用の少なくともい
    ずれかにもとづき、フラッシュを実行するか否かを決定
    するステップを含む、請求項5記載の方法。
  7. 【請求項7】前記キャッシュ・ラインが保持される前記
    リモート・ノードのキャッシュ階層内のレベルにもとづ
    き、前記キャッシュ・ラインの活用を決定するステップ
    を含む、請求項6記載の方法。
  8. 【請求項8】フラッシュが前記リモート・ノードにおい
    て実行されたことを示す指示の受信に応答して、前記ホ
    ーム・ノード内の前記メモリ・ディレクトリを更新する
    ステップを含む、請求項1記載の方法。
  9. 【請求項9】ノード相互接続によりホーム・ノードに結
    合される1つ以上のリモート・ノードを含む、マルチノ
    ード・コンピュータ・システムの前記ホーム・ノード内
    で使用されるメモリ制御装置であって、前記ホーム・ノ
    ードがホーム・システム・メモリと関連メモリ・ディレ
    クトリとを含むものにおいて、 前記メモリ・ディレクトリ内の複数のエントリの各々
    に、前記ホーム・システム・メモリ内の関連データ・グ
    ラニュールが、少なくとも1つの前記リモート・ノード
    内に保持される対応するキャッシュ・ラインを有するか
    否かを記録する手段と、 前記ホーム・システム・メモリ内の要求データ・グラニ
    ュールに対するデータ要求に応答して、前記メモリ・デ
    ィレクトリ内の関連エントリを読出し、前記要求データ
    ・グラニュールに対応するキャッシュ・ラインを保持す
    る少なくとも1つの前記リモート・ノードに、無効化コ
    マンドを発行する手段と、 データ要求とは無関係に、前記メモリ・ディレクトリ内
    のエントリを周期的に読出し、前記エントリが少なくと
    も1つの前記リモート・ノードが、関連データ・グラニ
    ュールに対応するキャッシュ・ラインを保持すると示す
    ことに応答して、フラッシュ照会を前記少なくとも1つ
    のリモート・ノードに発行し、前記関連データ・グラニ
    ュールに対応する前記キャッシュ・ラインの割当て解除
    を要求する手段とを含むメモリ制御装置。
  10. 【請求項10】前記メモリ・ディレクトリ内のエントリ
    を周期的に読出す手段が、前記メモリ・ディレクトリ内
    のエントリを周期的且つ順次的に読出す手段を含む、請
    求項9記載のメモリ制御装置。
  11. 【請求項11】前記メモリ・ディレクトリ内のエントリ
    を周期的に読出す手段が、タイマにより指示される一定
    間隔で、前記メモリ・ディレクトリ内のエントリを周期
    的に読出す手段を含む、請求項9記載のメモリ制御装
    置。
  12. 【請求項12】前記記録手段が、前記複数のエントリの
    各々に、前記関連データ・グラニュールに対応するキャ
    ッシュ・ラインを保持する各リモート・ノードの識別を
    記録する手段を含む、請求項9記載のメモリ制御装置。
  13. 【請求項13】フラッシュが前記リモート・ノードにお
    いて実行されたことを示す指示の受信に応答して、前記
    メモリ・ディレクトリを更新する手段を含む、請求項9
    記載のメモリ制御装置。
  14. 【請求項14】ノード相互接続によりホーム・ノードに
    結合される1つ以上のリモート・ノードを含む、マルチ
    ノード・コンピュータ・システムの前記ホーム・ノード
    のためのメモリ・システムであって、 請求項9記載のメモリ制御装置と、 前記メモリ・システムに結合されるホーム・システム・
    メモリと、 前記メモリ制御装置に結合されるメモリ・ディレクトリ
    とを含むメモリ・システム。
  15. 【請求項15】マルチノード・コンピュータのノードで
    あって、 ローカル相互接続と、 前記ローカル相互接続に結合されるノード制御装置と、 前記ローカル相互接続に結合される、請求項14記載の
    メモリ・システムとを含むノード。
  16. 【請求項16】ノード相互接続により結合されるホーム
    ・ノードと1つ以上のリモート・ノードとを含むコンピ
    ュータ・システムであって、前記ホーム・ノードが、 ローカル相互接続と、 前記ローカル相互接続と前記ノード相互接続との間に結
    合されるノード制御装置と、 ホーム・システム・メモリと、 複数のエントリを含むメモリ・ディレクトリと、 前記ローカル相互接続、前記ホーム・システム・メモ
    リ、及び前記メモリ・ディレクトリに結合されるメモリ
    制御装置とを含み、前記メモリ制御装置が、 前記メモリ・ディレクトリ内の複数のエントリの各々
    に、前記ホーム・システム・メモリ内の関連データ・グ
    ラニュールが、少なくとも1つの前記リモート・ノード
    内に保持される対応するキャッシュ・ラインを有するか
    否かを記録する手段と、 前記ホーム・システム・メモリ内の要求データ・グラニ
    ュールに対するデータ要求に応答して、前記メモリ・デ
    ィレクトリ内の関連エントリを読出し、前記要求データ
    ・グラニュールに対応するキャッシュ・ラインを保持す
    る少なくとも1つの前記リモート・ノードに、無効化コ
    マンドを発行する手段と、 データ要求とは無関係に、前記メモリ・ディレクトリ内
    のエントリを周期的に読出し、前記エントリが少なくと
    も1つの前記リモート・ノードが、関連データ・グラニ
    ュールに対応するキャッシュ・ラインを保持すると示す
    ことに応答して、フラッシュ照会を前記少なくとも1つ
    のリモート・ノードに発行し、前記関連データ・グラニ
    ュールに対応する前記キャッシュ・ラインの割当て解除
    を要求する手段とを含むコンピュータ・システム。
  17. 【請求項17】前記メモリ・ディレクトリ内のエントリ
    を周期的に読出す手段が、前記メモリ・ディレクトリ内
    のエントリを周期的且つ順次的に読出す手段を含む、請
    求項16記載のコンピュータ・システム。
  18. 【請求項18】前記メモリ・ディレクトリ内のエントリ
    を周期的に読出す手段が、タイマにより指示される一定
    間隔で、前記メモリ・ディレクトリ内のエントリを周期
    的に読出す手段を含む、請求項16記載のコンピュータ
    ・システム。
  19. 【請求項19】前記記録手段が、前記複数のエントリの
    各々に、前記関連データ・グラニュールに対応するキャ
    ッシュ・ラインを保持する各リモート・ノードの識別を
    記録する手段を含む、請求項16記載のコンピュータ・
    システム。
  20. 【請求項20】前記メモリ制御装置が、フラッシュが前
    記リモート・ノードにおいて実行されたことを示す指示
    の受信に応答して、前記メモリ・ディレクトリを更新す
    る手段を含む、請求項16記載のコンピュータ・システ
    ム。
  21. 【請求項21】前記リモート・ノードが、 前記データ・グラニュールに対応する前記キャッシュ・
    ラインを保持するキャッシュ階層と、 前記フラッシュ照会の受信に応答して、動的動作条件に
    もとづき、フラッシュを実行するか否かを決定し、フラ
    ッシュの実行の決定に応答して、前記キャッシュ・ライ
    ンを無効化し、変更データが存在する場合、該変更デー
    タを前記メモリ制御装置に伝送するキャッシュ制御装置
    とを含む、請求項16記載のコンピュータ・システム。
  22. 【請求項22】前記キャッシュ制御装置が、リソースの
    可用性及び前記キャッシュ・ラインの活用の少なくとも
    いずれかにもとづき、フラッシュを実行するか否かを決
    定する、請求項21記載のコンピュータ・システム。
  23. 【請求項23】前記キャッシュ制御装置が、前記キャッ
    シュ・ラインが保持される前記キャッシュ階層内のレベ
    ルにもとづき、前記キャッシュ・ラインの活用を決定す
    る、請求項22記載のコンピュータ・システム。
JP2002164472A 2001-06-21 2002-06-05 不均等メモリ・アクセス(numa)コンピュータ・システムを操作する方法、メモリ制御装置、メモリ・システム、該メモリ・システムを含むノード及びnumaコンピュータ・システム Expired - Fee Related JP3900481B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/886,000 US6901485B2 (en) 2001-06-21 2001-06-21 Memory directory management in a multi-node computer system
US09/886000 2001-06-21

Publications (2)

Publication Number Publication Date
JP2003044456A true JP2003044456A (ja) 2003-02-14
JP3900481B2 JP3900481B2 (ja) 2007-04-04

Family

ID=25388160

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002164472A Expired - Fee Related JP3900481B2 (ja) 2001-06-21 2002-06-05 不均等メモリ・アクセス(numa)コンピュータ・システムを操作する方法、メモリ制御装置、メモリ・システム、該メモリ・システムを含むノード及びnumaコンピュータ・システム

Country Status (3)

Country Link
US (1) US6901485B2 (ja)
JP (1) JP3900481B2 (ja)
TW (1) TWI232373B (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285992A (ja) * 2005-03-31 2006-10-19 Internatl Business Mach Corp <Ibm> タグ付きキャッシュ状態に基づいて下位レベル・キャッシュへの参照なしに相互接続ファブリック上にリクエストを送出するためのデータ処理システム、キャッシュ・システム、および方法
JP2007199999A (ja) * 2006-01-26 2007-08-09 Nec Computertechno Ltd マルチプロセッサシステム及びその動作方法
JP2007207223A (ja) * 2006-01-30 2007-08-16 Internatl Business Mach Corp <Ibm> 複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理するデータ処理システム、方法、およびメモリ・コントローラ
JP2007535737A (ja) * 2004-03-29 2007-12-06 マイクロン テクノロジー,インコーポレイテッド メモリを順序付けるヒントを提供するメモリ・ハブおよび方法
JP2010198490A (ja) * 2009-02-26 2010-09-09 Fujitsu Ltd キャッシュ制御装置
JP2011503725A (ja) * 2007-11-08 2011-01-27 アールエヌエー ネットワークス インコーポレイテッド 分散型共有メモリを備えるネットワーク
JP2017091521A (ja) * 2015-11-10 2017-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プリフェッチ・インセンシティブのトランザクション・メモリ
US10915439B2 (en) 2015-11-10 2021-02-09 International Business Machines Corporation Prefetch insensitive transactional memory

Families Citing this family (34)

* Cited by examiner, † Cited by third party
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
US7111128B2 (en) * 2002-12-19 2006-09-19 Intel Corporation Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US7917646B2 (en) * 2002-12-19 2011-03-29 Intel Corporation Speculative distributed conflict resolution for a cache coherency protocol
KR100856626B1 (ko) * 2002-12-24 2008-09-03 엘지노텔 주식회사 캐시 플러시 시스템 및 방법
US7085897B2 (en) * 2003-05-12 2006-08-01 International Business Machines Corporation Memory management for a symmetric multiprocessor computer system
US7089361B2 (en) * 2003-08-07 2006-08-08 International Business Machines Corporation Dynamic allocation of shared cache directory for optimizing performance
US20070268901A1 (en) * 2003-12-17 2007-11-22 Paolo Narvaez Technique For Deallocation of Memory In A Multicasting Environment
US20050262250A1 (en) * 2004-04-27 2005-11-24 Batson Brannon J Messaging protocol
US7822929B2 (en) * 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
US20050240734A1 (en) * 2004-04-27 2005-10-27 Batson Brannon J Cache coherence protocol
US7257686B2 (en) * 2004-06-03 2007-08-14 International Business Machines Corporation Memory controller and method for scrubbing memory without using explicit atomic operations
US7383390B1 (en) * 2004-10-19 2008-06-03 Sun Microsystems, Inc. Resource-limited directories with fine-grained eviction
US8254411B2 (en) * 2005-02-10 2012-08-28 International Business Machines Corporation Data processing system, method and interconnect fabric having a flow governor
US7395381B2 (en) * 2005-03-18 2008-07-01 Intel Corporation Method and an apparatus to reduce network utilization in a multiprocessor system
EP1955168A2 (en) * 2005-09-30 2008-08-13 Unisys Corporation Cache coherency in an extended multiple processor environment
US20070113031A1 (en) * 2005-11-16 2007-05-17 International Business Machines Corporation Memory management system and method for storing and retrieving messages
JP4848771B2 (ja) * 2006-01-04 2011-12-28 株式会社日立製作所 キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム
US20070283104A1 (en) * 2006-05-31 2007-12-06 International Business Machines Corporation Concurrent Hardware Selftest for Central Storage
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
JP4912789B2 (ja) * 2006-08-18 2012-04-11 富士通株式会社 マルチプロセッサシステム,システムボードおよびキャッシュリプレース要求処理方法
US7725660B2 (en) * 2007-07-26 2010-05-25 International Business Machines Corporation Directory for multi-node coherent bus
US7669013B2 (en) * 2007-07-26 2010-02-23 International Business Machines Corporation Directory for multi-node coherent bus
US8037252B2 (en) * 2007-08-28 2011-10-11 International Business Machines Corporation Method for reducing coherence enforcement by selective directory update on replacement of unmodified cache blocks in a directory-based coherent multiprocessor
CA2701198C (en) * 2007-10-01 2015-07-21 Diagnostic Hybrids, Inc. Sensitive and rapid methods of using chimeric receptors to identify autoimmune disease
JP4474570B2 (ja) * 2008-01-28 2010-06-09 エヌイーシーコンピュータテクノ株式会社 キャッシュコヒーレンシ制御方法
US20090271578A1 (en) * 2008-04-23 2009-10-29 Barrett Wayne M Reducing Memory Fetch Latency Using Next Fetch Hint
US8446824B2 (en) * 2009-12-17 2013-05-21 Intel Corporation NUMA-aware scaling for network devices
US20130073811A1 (en) * 2011-09-16 2013-03-21 Advanced Micro Devices, Inc. Region privatization in directory-based cache coherence
EP2568386A4 (en) * 2011-09-30 2013-07-24 Huawei Tech Co Ltd PROCESS FOR CACHE ACCESS AND FICTIVE CACHE AGENT
US9003123B2 (en) * 2012-06-26 2015-04-07 Arm Limited Data processing apparatus and method for reducing storage requirements for temporary storage of data
US9158685B2 (en) 2012-09-11 2015-10-13 Apple Inc. System cache with cache hint control
CN103870395B (zh) * 2014-03-04 2017-08-04 华为技术有限公司 一种目录维护方法及装置
US9817607B1 (en) * 2014-06-20 2017-11-14 EMC IP Holding Company LLC Optimizations to avoid intersocket links
US10606487B2 (en) * 2017-03-17 2020-03-31 International Business Machines Corporation Partitioned memory with locally aggregated copy pools

Family Cites Families (29)

* 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 キャッシュメモリ制御方式および情報処理装置
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
US6088768A (en) * 1993-12-28 2000-07-11 International Business Machines Corporation Method and system for maintaining cache coherence in a multiprocessor-multicache environment having unordered communication
JPH08185359A (ja) 1994-10-31 1996-07-16 Toshiba Corp メモリサブシステム
US5566315A (en) * 1994-12-30 1996-10-15 Storage Technology Corporation Process of predicting and controlling the use of cache memory in a computer system
JP3889044B2 (ja) 1995-05-05 2007-03-07 シリコン、グラフィクス、インコーポレイテッド 不均一メモリ・アクセス(numa)システムにおけるページ移動
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
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
US6408313B1 (en) * 1998-12-16 2002-06-18 Microsoft Corporation Dynamic memory allocation based on free memory size
US6381681B1 (en) 1999-09-30 2002-04-30 Silicon Graphics, Inc. System and method for shared memory protection in a multiprocessor computer
US6760817B2 (en) * 2001-06-21 2004-07-06 International Business Machines Corporation Method and system for prefetching utilizing memory initiated prefetch write operations
US6760809B2 (en) * 2001-06-21 2004-07-06 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having remote memory cache incorporated within system memory
US6633959B2 (en) * 2001-06-21 2003-10-14 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides notification of remote deallocation of shared data
US6711652B2 (en) * 2001-06-21 2004-03-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides precise notification of remote deallocation of modified data
US6754782B2 (en) * 2001-06-21 2004-06-22 International Business Machines Corporation Decentralized global coherency management in a multi-node computer system
US6615322B2 (en) * 2001-06-21 2003-09-02 International Business Machines Corporation Two-stage request protocol for accessing remote memory data in a NUMA data processing system
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
US6654857B2 (en) * 2001-06-21 2003-11-25 International Business Machines Corporation Non-uniform memory access (NUMA) computer system having distributed global coherency management

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007535737A (ja) * 2004-03-29 2007-12-06 マイクロン テクノロジー,インコーポレイテッド メモリを順序付けるヒントを提供するメモリ・ハブおよび方法
JP2006285992A (ja) * 2005-03-31 2006-10-19 Internatl Business Mach Corp <Ibm> タグ付きキャッシュ状態に基づいて下位レベル・キャッシュへの参照なしに相互接続ファブリック上にリクエストを送出するためのデータ処理システム、キャッシュ・システム、および方法
JP2007199999A (ja) * 2006-01-26 2007-08-09 Nec Computertechno Ltd マルチプロセッサシステム及びその動作方法
JP4572169B2 (ja) * 2006-01-26 2010-10-27 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム及びその動作方法
US7904665B2 (en) 2006-01-26 2011-03-08 Nec Computer Techno, Ltd. Multiprocessor system and its operational method
JP2007207223A (ja) * 2006-01-30 2007-08-16 Internatl Business Mach Corp <Ibm> 複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理するデータ処理システム、方法、およびメモリ・コントローラ
JP2011503725A (ja) * 2007-11-08 2011-01-27 アールエヌエー ネットワークス インコーポレイテッド 分散型共有メモリを備えるネットワーク
JP2010198490A (ja) * 2009-02-26 2010-09-09 Fujitsu Ltd キャッシュ制御装置
JP2017091521A (ja) * 2015-11-10 2017-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プリフェッチ・インセンシティブのトランザクション・メモリ
US10915439B2 (en) 2015-11-10 2021-02-09 International Business Machines Corporation Prefetch insensitive transactional memory

Also Published As

Publication number Publication date
TWI232373B (en) 2005-05-11
US6901485B2 (en) 2005-05-31
JP3900481B2 (ja) 2007-04-04
US20030009631A1 (en) 2003-01-09

Similar Documents

Publication Publication Date Title
JP3900481B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システムを操作する方法、メモリ制御装置、メモリ・システム、該メモリ・システムを含むノード及びnumaコンピュータ・システム
JP3900478B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システム及び該コンピュータ・システムを操作する方法
JP3900479B2 (ja) システム・メモリに組み込まれるリモート・メモリ・キャッシュを有する不均等メモリ・アクセス(numa)データ処理システム
JP3924203B2 (ja) マルチノード・コンピュータ・システムにおける非集中グローバル・コヒーレンス管理
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
EP0818733B1 (en) A multiprocessing system configured to perform software initiated prefetch operations
US5958019A (en) Multiprocessing system configured to perform synchronization operations
US5881303A (en) Multiprocessing system configured to perform prefetch coherency activity with separate reissue queue for each processing subnode
US5734922A (en) Multiprocessing system configured to detect and efficiently provide for migratory data access patterns
US5887138A (en) Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes
EP0817072A2 (en) A multiprocessing system configured to store coherency state within multiple subnodes of a processing node
EP0817070A1 (en) Multiprocessing system employing a coherency protocol including a reply count
GB2460337A (en) Reducing back invalidation transactions from a snoop filter
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 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20051227

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051227

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20051227

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20051228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060712

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20061005

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061005

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20061006

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 Written amendment

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

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

Free format text: PAYMENT UNTIL: 20130112

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20140112

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees