JPH10105464A - マルチプロセッサ内の多数のキャッシュ用のキャッシュ・コヒーレンシ方式 - Google Patents

マルチプロセッサ内の多数のキャッシュ用のキャッシュ・コヒーレンシ方式

Info

Publication number
JPH10105464A
JPH10105464A JP9103989A JP10398997A JPH10105464A JP H10105464 A JPH10105464 A JP H10105464A JP 9103989 A JP9103989 A JP 9103989A JP 10398997 A JP10398997 A JP 10398997A JP H10105464 A JPH10105464 A JP H10105464A
Authority
JP
Japan
Prior art keywords
subsystem
request
cache
packet
directory
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.)
Pending
Application number
JP9103989A
Other languages
English (en)
Inventor
Paul N Loewenstein
ポール・エヌ・ローウェンスタイン
Erik Hagersten
エリック・ハガーステン
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH10105464A publication Critical patent/JPH10105464A/ja
Pending 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
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions

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)【要約】 【課題】 マルチプロセッサ・マルチキャッシュ・コン
ピュータ・システム用の効率的な簡素化されたキャッシ
ュ・コヒーレント・プロトコルを提供する。 【解決手段】 一つのサブシステムからの要求を他のサ
ブシステムのキャッシュ行へ送り、その要求を他のサブ
システムで受け取ると、その要求がサービスされるまで
前記他のサブシステムのキャッシュ行へのすべての新し
い要求をブロッキングする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、キャッシュに関す
る。特に、本発明は、マルチプロセッサ・システム内の
多数のキャッシュ用のキャッシュ・コヒーレンシ方式に
関する。
【0002】
【従来の技術】コンピュータ技術の「ネットワークがコ
ンピュータである」というパラダイムへの移行によっ
て、ネットワーク・コンピュータ・システム内の共用グ
ローバル・メモリ・アドレス空間及びコヒーレント・キ
ャッシング・システムの必要性がますます重要になる。
図1は、従来の不均一メモリ・アーキテクチャ(NUM
A)を有するそのような1つのネットワーク・コンピュ
ータ・システム100を示すブロック図である。システ
ム100は、グローバル相互接続190を介して互いに
結合された複数のサブシステム110、120、...
180を含む。各サブシステムには、特有のネットワー
ク・ノード・アドレスが割り当てられる。各サブシステ
ムは、1つまたは複数のプロセッサ、対応する数のメモ
リ管理ユニット(MMU)及びキャッシュ、グローバル
・メモリ・アドレス空間の一部が割り当てられたメイン
・メモリ、グローバル・インタフェース並びにローカル
・サブシステム相互接続を含む。例えば、サブシステム
110は、プロセッサ111a、111b...111
i、MMU112a、112b...112i、キャッ
シュ113a、113b...113i、メイン・メモ
リ114、グローバル・インタフェース115及びロー
カル・サブシステム相互接続119を含む。
【0003】メイン・メモリ114、124、..18
4からのデータは、1つまたは複数のキャッシュ113
a...113i、123a...123i、及び18
3a...183i内に記憶される。したがって、シス
テム100が共用メモリ・プログラムを正確に実行でき
るように、キャッシュ113a...113i、123
a...123i、及び183a...183iの間の
キャッシュ・コヒーレンシが維持される。
【0004】従来のディレクトリ・ベースのキャッシュ
・コヒーレンシ方式をサポートするために、サブシステ
ム110、120、...180は、それぞれグローバ
ル・インタフェース115、125、...185に結
合されたディレクトリ116、126、...186を
含む。次に、図2を参照すると、各グローバル・インタ
フェース、例えばインタフェース115は、スレーブ・
エージェント(「SA」)、要求エージェント(「R
A」)及びディレクトリ・エージェント(「DA」)、
例えばSA115a、RA115b及びDA115cを
含む。各DAは、他のサブシステム内でキャッシュされ
たコピーを含めて、それぞれの(ホーム)メイン・メモ
リのキャッシュされた全てのコピーの状況を備えたそれ
ぞれの関連するディレクトリを更新する役目を果たす。
【0005】各ノード内のキャッシュされたコピーの状
況は、ノード当たり4つの状態の1つとしてディレクト
リ116、126、...186内に記録される。無効
(「I」)状態は、そのノードすなわちサブシステムが
注目のデータ行のコピーを有しないことを示す。共用
(「S」)状態は、そのノードがSコピーを有し、かつ
他のノードがSコピーを有する可能性があることを示
す。所有(「O」)状態は、そのノードがOコピーを有
し、かつ他のノードがSコピーを有する可能性があるこ
とを示す。Oコピーを有するノードは、交換時に書戻し
を実施することが必要になることに留意されたい。最後
に、修正(「M」)状態は、そのノードがデータ行の唯
一の所有者であること、すなわち他のノード内にそのS
コピーが存在しないことを示す。
【0006】RAは、読取り要求及び書込み要求を他の
サブシステムに送る機構をサブシステム内で形成してい
る。DAは、その関連するホーム・ディレクトリにアク
セスし、更新する役目を果たす。SAは、別のサブシス
テムのDAからの要求に応答する役目を果たす。
【0007】データ及び応答の要求は、サブシステム1
10、120、...180間のそれぞれのエージェン
トによってデータ/制御パケットの形で交換され、それ
によりサブシステムがそれらのキャッシュ113
a...113i、123a...123i、183
a...183iの状態をそれぞれディレクトリ11
6、126、...186内で追跡することができる。
これらのデータ/制御パケットは、サブシステム間でグ
ローバル相互接続190を介して転送される。残念なが
ら、グローバル相互接続190は、タイミングの観点か
ら、例えば衝突検知多重アクセス(CSMA)プロトコ
ルなどの多数の従来のネットワーク・プロトコルのいず
れか1つに基づくので、サブシステム110、12
0、...180はプロトコルのネットワーク層におい
て互いに疎に結合される。したがって、エンドツーエン
ド・パケットの到着は保証されるが、パケットの到着の
順序は必ずしも保証されない。サブシステム110、1
20、...180におけるパケットの順不同到着は、
検出され、解決されなければキャッシュ・コヒーレンシ
を混乱させる「コーナー(corner)・ケース」を
もたらすので問題となる。
【0008】そのような1つのコーナー・ケースを図3
Aないし図4Dに示す。図3Aないし図4Dでは、別の
サブシステムによって開始されたlater−in−t
ime read−to−own要求(RTO_re
q)の到着の結果として、キャッシュ行が先に無効にさ
れた後で、earlier−in−time read
−to−share要求(RTS_req)に関連した
データ・パケットが到着する。この例では、最初、サブ
システム110、サブシステム120及び第4のサブシ
ステム(図1には示されていない)は、サブシステム1
80のメモリ空間からの共用されたデータ行のコピー
(「Sコピー」)を有する。
【0009】まず、図3Aを参照すると、サブシステム
110のグローバル・インタフェース115のRA1
は、RTS_reqパケットをサブシステム180のグ
ローバル・インタフェース185のDA8に送る。図3
Bに示すように、DA8は、要求側RA1へのデータ・
パケットの転送を開始することによって応答する。
【0010】次に、図3Cに示すように、データ・パケ
ットがRA1に到達する前に、サブシステム120のグ
ローバル・インタフェース125のRA2は、read
−to−own(RTO_req)パケットをDA8に
送る。
【0011】図4Dは、DA8がRA2へのデータ・パ
ケットの転送を開始することによって応答することを示
す。さらに、DA8は、それぞれサブシステム110の
スレーブ・エージェントSA1及び第4のサブシステム
のスレーブ・エージェントSA4に無効(Invld)
パケットを送る。
【0012】残念ながら、later−in−time
Invldパケットは、earlier−in−ti
meデータ・パケットがRA1に到着する前にSA1に
到着する。したがって、SA1は、まずInvldパケ
ットを受け取り、注目のデータ行の古いSコピーを無効
にし始める。その後、RA1は、データ・パケットを受
け取るが、そのSコピーの値は、誤って先にInvld
とマークされたので、それを更新することはできない。
【0013】コーナー・ケースを解決するいくつかの従
来のブルートフォース・ハンドシェーキング・プロトコ
ルが存在する。図5Aないし図7Fに、上述のコーナー
・ケースの1つの従来技術の解決策を示す。この場合
も、図3Aないし図4Dに示される例と同じ開始条件を
使用すると、サブシステム110、サブシステム120
及び第4のサブシステムは、サブシステム180のメモ
リ空間からのデータ行のSコピーを有する。
【0014】まず図5Aを参照すると、サブシステム1
10のRA1は、サブシステム180のDA8にRTS
_reqパケットを送る。
【0015】図5Bに示すように、DA8は、要求側R
A1へのデータ・パケットの転送を開始することによっ
て応答する。次いで、DA8は、RA1からのread
−acknowledgment(RTS_ack)パ
ケットを待っている間アイドルになる。
【0016】次に、図5Cを参照すると、RA2は、D
A8にRTO_reqパケットを送る。しかしながら、
DA8は、RA1からのRTS_ackパケットを待っ
ているのでアイドルであり、したがって応答することが
できない。
【0017】図3Dに示すように、RA1からのRTS
_ackパケットを受け取った後、DA8は、もはやア
イドルではなく、RA2からのRTO_reqパケット
に応答することができる。
【0018】したがって、図6Eに示すように、DA8
は注目のデータ行のSコピーを有するサブシステムの任
意のSAにInvldパケットを送る。この例では、D
A8は、SA1及びSA4にInvldパケットを送
る。DA8はまた、データ・パケットを#Invldと
ともにRA2に送る役目を果たす。
【0019】その後、図7Fに示すように、RA2は、
SA1及びSA4からの来たInvld_ackの数を
計数し、それにより図3Aないし図4Dに示されるコー
ナー・ケースを回避する。
【0020】残念ながら、コーナー・ケースを処理また
は軽減する上述のブルートフォース・ハンドシェーキン
グ解決策は、ハンドシェーキング制御パケットの数が過
大なために不十分である。これらの余分の制御パケット
は、ネットワーク・トラフィックを大幅に増大させる。
換言すれば、まれだが損害の大きいコーナー・ケースに
対する「解決策」は、ネットワークの効率を大幅に低下
させる。
【0021】したがって、ネットワークの効率を大幅に
低下させることなく、コーナー・ケースを処理または軽
減する簡単かつ簡素化されたキャッシュ・コヒーレンシ
・プロトコルが必要である。本発明の利点には、コーナ
ー・ケースに起因する複雑な競争状態の軽減、競争状態
の軽減によるプロトコルの形式的な検証の緩和、及び得
られたキャッシュ・コヒーレント・コンピュータ・シス
テムの信頼性の向上が含まれる。
【0022】
【発明が解決しようとする課題】本発明は、マルチプロ
セッサ・マルチキャッシュ・コンピュータ・システム用
の効率的な簡素化されたキャッシュ・コヒーレンシ・プ
ロトコルを提供する。各サブシステムは、少なくとも1
つのプロセッサ及び関連するキャッシュ及びディレクト
リを含む。サブシステムはグローバル・インタフェース
を介してグローバル相互接続に結合される。
【0023】
【課題を解決するための手段】一実施態様では、各グロ
ーバル・インタフェースは、要求エージェント(R
A)、ディレクトリ・エージェント(DA)及びスレー
ブ・エージェント(SA)を含む。RAは、サブシステ
ムで読取り要求及び書込み要求を別のサブシステムのD
Aに送る機構を形成する。DAは、ホーム・ディレクト
リにアクセスし、更新する役目を果たす。SAは、別の
サブシステムのDAからの要求に応答する役目を果た
す。
【0024】さらに、本発明によれば、各サブシステム
はまたブロッカ(blocker)を含む。この実施態
様では、各ブロッカは、DAに結合され、ホーム・ディ
レクトリに関連づけられている。キャッシュ行へのすべ
ての要求は、各ホーム・ディレクトリに関連するブロッ
カによってスクリーニングされる。ブロッカは、そのキ
ャッシュ行への未解決の要求がサービスされるまで、キ
ャッシュ行への新しい要求をブロッキングする役目を果
たす。直感に反するが、ブロッキングにより新しい要求
が順次処理されるので、ブロッカによって管理される
「ロックされた」状態では、残りのわずかのコーナー・
ケースを除去すれば解決が簡単になる。
【0025】一実施態様では、ブロッカはまた、保留要
求を記憶する待ち行列を含む。ブロッカの変更及び修正
も可能である。例えば、書戻し要求及びread−to
−own要求に、read−to−share要求に関
するサービスに対する優先順位を与えることができる。
【0026】本発明の目的、特徴及び利点は、以下の説
明を読めば明らかになろう。
【0027】記号及び用語 無効(「I」)状態は、ノード/サブシステムが注目の
データ行の(キャッシュされた)コピーを有しないこと
を示す。
【0028】共用(「S」)状態は、ノード/サブシス
テムが注目のデータ行の(キャッシュされた)共用コピ
ーを有し、かつ他のノードが注目のデータ行の(キャッ
シュされた)共用コピーを有する可能性があることを示
す。
【0029】所有(「O」)状態は、ノード/サブシス
テムが所有者であること、すなわちこのノードが「マス
タ・コピー」を有することを示す。したがって、このノ
ードは、キャッシュ行が再使用される前に「マスタ・コ
ピー」を別のノードに書き込まなければならないことを
示す。他のノードが注目のデータ行の共用コピーを有す
る可能性があることを示す。
【0030】修正(「M」)状態は、ノード/サブシス
テムが注目のデータ行の唯一の(キャッシュされた)コ
ピーであることを示す。
【0031】ブロック(「B」)状態は、注目のデータ
行の読取り/書込み要求が未解決であることを示す。
【0032】要求エージェント(「RA」)は、サブシ
ステムに注目のキャッシュされたデータ行へのアクセス
を別のサブシステムに要求する機構を形成する。
【0033】ディレクトリ・エージェント(「DA」)
は、サブシステムにそのメイン・メモリのコピーの状況
を追跡するためにそのディレクトリにアクセスする機構
を形成する。
【0034】スレーブ・エージェント(「SA」)は、
サブシステムに別のサブシステムからのデータ要求に応
答する機構を形成する。
【0035】
【発明の実施の形態】以下の説明において、多数の詳細
から本発明を完全に理解することができる。これらの詳
細は、設計者が費用効率の高いキャッシュ・コヒーレン
ト・コンピュータ・システムを実施するのを助ける機能
ブロック及び例示のキャッシュ・ディレクトリを含む。
さらに、本発明については、例示のマルチキャッシュ・
マルチプロセッサ・コンピュータ・システム用の特定の
キャッシュ・コヒーレント方式に関して説明するが、本
発明は、広い範囲のキャッシュ及びネットワーク・アー
キテクチャに適用できる。他の例では、周知の回路及び
構造については、本発明を不必要に曖昧にしないために
詳細に説明しない。
【0036】図8は、本発明の例示のキャッシュ・コヒ
ーレント・ネットワーク・コンピュータ・システム40
0を示すブロック図である。システム400は、グロー
バル相互接続490を介して互いに結合された複数のサ
ブシステム410、420、...480を含む。各サ
ブシステムは、1つまたは複数のプロセッサ、対応する
数のメモリ管理ユニット(MMU)及びキャッシュ、グ
ローバル・メモリ・アドレス空間の一部が割り当てられ
たメイン・メモリ、グローバル・インタフェース並びに
サブシステム相互接続を含む。例えば、サブシステム4
10は、プロセッサ411a、411b...411
i、MMU412a、412b...412i、キャッ
シュ413a、413b...413i、メイン・メモ
リ414、グローバル・インタフェース415及びロー
カル・サブシステム相互接続419を含む。サブシステ
ム410、420、...480はまた、それぞれグロ
ーバル・インタフェース415、425、...485
に結合されたディレクトリ416、426、...48
6を含む。
【0037】図9に示される本発明は、本発明のキャッ
シュ・コヒーレンシ方式によれば、各グローバル・イン
タフェース、例えばインタフェース415は、スレーブ
・エージェント(「SA」)、要求エージェント(「R
A」)及びディレクトリ・エージェント(「DA」)及
びブロッカ、例えばSA415a、RA415b、DA
415c及びブロッカ415dを含む。したがって、各
DAと各ディレクトリの間には1対1の対応がある。
【0038】ブロッカ、DA、RA、SAはまた、それ
ぞれのグローバル・インタフェースから離れた回路内に
組み込むことができる。各ブロッカは、DAに結合さ
れ、未解決の要求がサービスされている間、キャッシュ
行の保留要求を保持する役目を果たす。「ブロッキン
グ」機能は、以下で説明するようにディレクトリ41
6、426、...486によって、あるいは専用ブロ
ッキング論理を追加することによって実施できることに
留意されたい。専用ブロッキング論理は、未解決のトラ
ンザクションを待機させ、各未解決のトランザクション
のキャッシュ行アドレスを記憶する役目を果たす。その
後、専用ブロッキング論理は、トランザクションを対応
するDAに送る前に、各未解決のトランザクションを古
いキャッシュ行アドレスと比較する。この別形態では、
各終了信号はそれぞれのアドレスをクリアするだけでよ
い。
【0039】各サブシステムのDAは、その(ホーム)
メイン・メモリの各キャッシュ行サイズの部分の状況を
備えたその関連するディレクトリを更新する役目を果た
す。したがって、メイン・メモリのそのような各部分に
対して、ディレクトリは、どのサブシステムが、その特
定の部分のキャッシュされたコピーを有するかを示す状
況を含む。この実施形態では、各ディレクトリは、サブ
システムのホーム・ディレクトリ、すなわちローカル・
ディレクトリである。したがって、各ディレクトリは、
すべてのサブシステム内のキャッシュされたコピーの状
態を示すサブシステムと関連するデータ行のキャッシュ
されたコピーのエントリを含む。DAはまた、適切な要
求パケットをそれぞれのSAに転送する役目を果たす。
【0040】図10Aないし図11Dは、サブシステム
410がサブシステム480のホーム・アドレス空間内
のデータ行からの読取り許可、すなわち共用(S)コピ
ーを必要とするが、サブシステム420によって「所
有」される例Iを示す。
【0041】まず、図10Aに示すように、サブシステ
ム410のグローバル・インタフェース415のRA1
は、サブシステム480のグローバル・インタフェース
485のブロッカ485dにread−to−shar
e要求(RTS_req)パケットを送る。ブロッカ4
85dは、DA8をブロック(B)状態(破線の円で示
す)に入れ、それによりDA8に対して注目のデータ行
への新しい要求を凍結することによって応答する。
【0042】次に、図10Bに示すように、B状態にあ
るDA8は、自分のホーム・ディレクトリ486を要求
側RA1の新しい状況が共用者となるようにマークし、
サブシステム420のグローバル・インタフェース42
5のスレーブ・エージェントSA2にRTS_reqパ
ケットを転送する。
【0043】ブロック(「B」)状態は、未解決の書込
み/読取り要求があり、同じデータ行への後続の要求
が、保留要求がサービスされるまでブロッキングされる
ことを示す。この実施形態では、DA8と関連するブロ
ッカ485dは、要求をローカルfirst−in−f
irst−out(FIFO)待ち行列内に記憶する
か、または新しい要求をフロー制御することによってデ
ータ行への新しい要求をブロッキングする。
【0044】図11Cに示すように、SA2は、RTS
_reqパケットに応答して、RA1にデータ・パケッ
トを送り、データ行の「所有者」のままである。
【0045】最後に、図11Dに示すように、RA1
は、SA2からデータ・パケットを受け取ると、ブロッ
カ485dにRTS終了(RTS_compt)パケッ
トを送る。ブロッカ485dは、DA8をB状態から脱
出させる。DA8は、注目のデータ行への待機要求をサ
ービスすることができるようになる。
【0046】図12及び図13に示す例IIにおいて、サ
ブシステム410は、そのホーム・アドレス空間がサブ
システム480内にあるがサブシステム420によって
「所有」されているデータ行からの読取り許可、すなわ
ち所有(O)コピーを必要とする。さらに、第3のサブ
システム及び第4のサブシステム(どちらも図8には図
示せず)は、データ行のSコピーを有する。
【0047】まず、図12Aに示すように、RA1は、
read−to−own要求(RTO_req)パケッ
トをブロッカ485dを介してDA8に送る。
【0048】次に、図12Bに示すように、ブロッカ4
85dは、DA8をB状態にし、キャッシュ行への新し
いトランザクションを凍結する。DA8は、自分のホー
ム・ディレクトリを要求側RA1の新しい状況を注目の
データ行の所有者とするようにマークする。すなわち、
RA1の新しい状況は所有(O)される。DA8は、そ
のディレクトリからこのデータ行の共用者の数(#_s
harer)、この例では二人の共用者を検索し、#_
sharerをRTO_reqパケットに追加し、RT
O_reqパケットをSA2に転送する。DA8はま
た、それぞれ第3のサブシステムSA3及び第4のサブ
システムSA4に無効要求(Ivld_ack)パケッ
トを送る役目を果たす。Ivld_ackパケットは、
要求側RA1の識別を含む。
【0049】図13Cは、SA2がRTO_reqパケ
ットの到着に応答して、データ行のそのコピーを無効に
し、データ・パケットを共用者の合計数とともにRA1
に送る。DA8からそれぞれのRTO_reqパケット
を受け取ると、SA3ならびにSA4は、RA1に無効
確認(Ivld_ack)パケットを送り、またそれぞ
れのSコピーを無効にする。
【0050】最後に、図13Dに示すように、SA2か
らのデータ・パケットが到着したのち、及びSA3及び
SA4からのIvld_ackパケットの正確な数すな
わち#_sharerが到着した後、RA1は、ブロッ
カ485dにRTO終了(RTO_compt)パケッ
トを送る。RTO_comptパケットは「three
−hop dirty reply」シーケンスを終了
する。DA8は、RTO_comptパケットに応答し
て、B状態を脱出し、注目のデータ行を解放する。
【0051】例IIに示されるプロトコルは、#_sha
rerをIvld_reqパケットとともに送ることに
よって簡単化できることに留意されたい。したがって、
要求側サブシステムのRA1がデータを必要としない場
合はいつでも、SA2は、RA1に#_sharerを
送るためだけにSA1にパケットを送る必要はない。換
言すれば、RA1は、SA3からでもSA4からでも#
_sharerを得ることができ、したがってネットワ
ーク・トラフィックが1パケット減少する。
【0052】他の例III を図12、及び図14、図15
に示す。例IIの場合と同様に図12A及び図12Bから
初めて、例IIの図13Cに示されるように要求側RA1
にIvld_ackパケットを送る代わりに、共用者S
A3、SA4は、図14Eに示すように、ホームDAの
ブロッカ、すなわちホーム・サブシステム480のブロ
ッカ485dにIvld_ackパケットを送る。した
がって、ホームDA8は、Ivld_ackパケットの
正確な数を計数する役目を果たし、またB状態を脱出す
る前にRA1からRTO_comptパケットを受け取
る役目をも果たす。この例では、SA3及びSA4はI
vld_ackパケットをRA1にではなくブロッカ4
85dに送るので、DA8は、他のノードに#_sha
rerを送る必要はない。
【0053】次に、図14Fに示すように、RA1は、
SA2からデータ・パケットを受け取った後、ブロッカ
485dにRTO_comptパケットを送る。ブロッ
カ485dは、Invld_ackパケットを計数し、
RTO_comptパケットの到着を認識する役目を果
たす。
【0054】最後に、図15に示すように、ブロッカ2
85dは、この例では、SA3ならびにSA4からすべ
ての期待されるInvld_ackを受け取ると、終了
確認(Compt_act)パケットをRA1に送る。
Compt_actパケットは、「four−hop
dirty−reply」シーケンスを終了し、DA8
は、B状態を脱出し、注目のデータ行を解放する。
【0055】図16に、遠隔所有者がホスト・ディレク
トリに書き戻す例、例えばサブシステム410が「所有
者」であり、サブシステム420に書戻し要求(WB_
req)を送る例IVを示す。
【0056】まず、図16Aに示すように、サブシステ
ム410のグローバル・インタフェース415のRA1
は、サブシステム480のグローバル・インタフェース
485のDA8にWB_reqパケットを送る。DA8
は、B状態に入り、キャッシュ行への新しいトランザク
ションを凍結することによって応答する。
【0057】次に、図16Bに示すように、DA8は、
要求側RA1の新しい状況を無効として反映するように
そのホーム・ディレクトリをマークし、RA1に書戻し
許可(WB_permit)パケットを返送する。
【0058】最後に、図16Cに示すように、RA1
は、交換すべきデータを含む書戻し終了(WB_com
pt)パケットを介してDA8にデータを送る。DA8
においてWB_comptパケットを受け取ると、書戻
しトランザクションが終了し、ブロッカ485dは、B
状態を脱出することによって注目のデータ行を解放す
る。RA1は、RA1がWB_permitパケットを
受け取った後でのみ「O」状態を脱出することに留意さ
れたい。ブロッカ485dからWB_permitパケ
ットを待つことによって、RA1が、後続の読取り要求
がRA1に到達する前に(書戻しを使用して)キャッシ
ュ行を交換したので、後続のRA1への読取り要求が失
敗するコーナー・ケースが除去される。
【0059】上述のキャッシュ・コヒーレント機構の様
々な最適化が可能である。例えば、単一のFIFO待ち
行列がすべての未解決の読取り要求及び書込み要求を記
憶する代わりに、RTO要求を別個の待ち行列内に記憶
し、RTO要求が最初にサービスされるように処理の優
先順位を与える。書戻し要求に優先順位を与えることに
よって、一般にサブシステムのプロセッサは共用「キ
ー」を使用してそれぞれのクリティカル・コード・セク
ションを保護するので、プロセッサ性能が向上する。プ
ロセッサは、そのクリティカル・コード・セクションを
実行する前にキーをロックし、終了時にキーを解放す
る。その後、第2のプロセッサは、キーがそのクリティ
カル・コード・セクションを実行するのをロックするこ
とができる。したがって、RTO要求に優先順位を与え
ることによって、キーが迅速に解放され、他のプロセッ
サがキーへのアクセス権を迅速に得ることができる。
【0060】他の実施形態では、選択的ブロッキングを
実施する。例えば、RTS要求または書戻し要求が未解
決の場合はブロッキングを選択的に活動化させるが、R
TO要求が未解決の場合はブロッキングを選非活動化さ
せる。
【0061】コンピュータ・システム400のサブシス
テム410、420、...480は、多数の構成に配
置できる。例えば、システム400は、インターネッ
ト、ローカル・エリア・ネットワーク(LAN)または
密に結合されたマルチプロセッサ・システムなど、広域
ネットワーク(WAN)として構成できる。
【0062】本発明の精神から逸脱することなく、他の
修正及び追加も可能である。「例えば、DAに到着する
すべての読取り要求及び書込み要求をブロックする代わ
りに、未解決のread−to−own要求または書戻
し要求がある場合にのみ、要求が未解決の場合はいつで
も、RTO要求、read−to−share要求をブ
ロッキングする。」さらに、サブシステム内のプロセッ
サが別のサブシステムのホスト・ディレクトリにアクセ
スすることなくデータを互いに提供できるように、各サ
ブシステムに「ローカル・データ転送」を実施する追加
の回路を備えることができる。以上、本発明の範囲は首
記の請求の範囲によって決定される。
【図面の簡単な説明】
【図1】 従来の不均一メモリ・アーキテクチャ(NU
MA)を有するネットワーク・コンピュータ・システム
100を示すブロック図である。
【図2】 ディレクトリ・エージェント(「DA」)、
要求エージェント(「RA」)及びスレーブ・エージェ
ント(「SA」)を含む図1のコンピュータ・システム
のグローバル・インタフェースのブロック図である。
【図3】 キャッシュ行がlater−in−time
read−to−own要求によって先に無効になっ
た後で、earlier−in−time読取り要求と
関連するデータ・パケットが到着するコーナー・ケース
を示す図である。
【図4】 キャッシュ行がlater−in−time
read−to−own要求によって前もって無効に
なった後で、earlier−in−time読取り要
求と関連するデータ・パケットが到着するコーナー・ケ
ースを示す図である。
【図5】 図3Aないし図4Dのコーナー・ケースを解
決する従来のハンドシェーキング・プロトコルを示す図
である。
【図6】 図3Aないし図4Dのコーナー・ケースを解
決する従来のハンドシェーキング・プロトコルを示す図
である。
【図7】 図3Aないし図4Dのコーナー・ケースを解
決する従来のハンドシェーキング・プロトコルを示す図
である。
【図8】 本発明の例示のキャッシュ・コヒーレント・
ネットワーク・コンピュータ・システム400を示すブ
ロック図である。
【図9】 ブロッカ、ディレクトリ・エージェント
(「DA」)、要求エージェント(「RA」)及びスレ
ーブ・エージェント(「SA」)を含む本発明のコンピ
ュータ・システムのグローバル・インタフェースのブロ
ック図である。
【図10】 未解決のread−to−share(R
TS)要求がサービスされるまで図9のディレクトリ・
エージェントが要求をブロッキングする例示の方法を示
す図である。
【図11】 未解決のread−to−share(R
TS)要求がサービスされるまで図9のディレクトリ・
エージェントが要求をブロッキングする例示の方法を示
す図である。
【図12】 未解決のread−to−own(RT
O)要求がサービスされるまで図9のディレクトリ・エ
ージェントが要求をブロッキングする例示の方法を示す
図である。
【図13】 未解決のread−to−own(RT
O)要求がサービスされるまで図9のディレクトリ・エ
ージェントが要求をブロッキングする例示の方法を示す
図である。
【図14】 未解決のread−to−own(RT
O)要求がサービスされるまで図9のディレクトリ・エ
ージェントが要求をブロッキングをする他の方法を示す
図である。
【図15】 未解決のread−to−own(RT
O)要求がサービスされるまで図9のディレクトリ・エ
ージェントが要求をブロッキングをする他の方法を示す
図である。
【図16】 未解決の書戻し(WB)要求がサービスさ
れるまで図9のディレクトリ・エージェントが要求をブ
ロッキングする例示の方法を示す図である。
【符号の説明】
100 ネットワーク・コンピュータ・システム 110、120、180、410、420、480 サ
ブシステム 111、121、181、411、421、481 プ
ロセッサ 112、122、182、412、422、482 メ
モリ管理ユニット 113、123、、183、413、423、483
キャッシュ 114、124、184、414、424、484 メ
イン・メモリ 115、125、185、415、425、485 グ
ローバル・インタフェース 115a スレーブ・エージェント(SA) 115b 要求エージェント(RA) 115c ディレクトリ・エージェント(DA) 116、126、186、416、426、486 デ
ィレクトリ 119、419、429、489 ローカル相互接続 190、490 グローバル相互接続 415d、485d ブロッカ RA 要求エージェント SA スレーブ・エージェント DA ディレクトリ・エージェント
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 エリック・ハガーステン アメリカ合衆国・94303・カリフォルニア 州・パロ アルト・コーク・オーク ウェ イ・3451

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 相互接続を介して互いに結合され、それ
    ぞれメイン・メモリ及び複数のキャッシュ行からなるキ
    ャッシュを含む複数のサブシステムを有するコンピュー
    タ・システム用のキャッシュ・アクセス方法において、 第1の前記サブシステムからの要求を第2のサブシステ
    ムのキャッシュ行へ送るステップと、 前記要求を前記第2のサブシステムで受け取るステップ
    と、 前記要求がサービスされるまで前記第2の前記サブシス
    テムの前記キャッシュ行へのすべての新しい要求をブロ
    ッキングするステップとを含む方法。
  2. 【請求項2】 相互接続を介して互いに結合され、それ
    ぞれメイン・メモリ及び複数のキャッシュ行からなるキ
    ャッシュを含む複数のサブシステムを有するコンピュー
    タ・システムで用いるキャッシュ・アクセス装置におい
    て、 第1の前記サブシステムと関連し、前記キャッシュ行へ
    の未解決の要求がサービスされるまで前記第1のサブシ
    ステムのキャッシュ行への第2の前記サブシステムから
    発生する少なくとも1つの新しい要求をブロッキングす
    るように構成されたブロッカを含む装置。
  3. 【請求項3】 相互接続を介して互いに結合され、それ
    ぞれメイン・メモリ及び複数のキャッシュ行からなるキ
    ャッシュを含む複数のサブシステムを有するコンピュー
    タ・システムで用いるキャッシュ・アクセス装置におい
    て、 第1の前記サブシステムからの要求を第2のサブシステ
    ムのキャッシュ行へ送る手段と、 前記要求を前記第2のサブシステムにおいて受け取る手
    段と、 前記要求がサービスされるまで前記第2の前記サブシス
    テムの前記キャッシュ行へのすべての新しい要求をブロ
    ッキングする手段とを含む装置。
JP9103989A 1996-04-08 1997-04-08 マルチプロセッサ内の多数のキャッシュ用のキャッシュ・コヒーレンシ方式 Pending JPH10105464A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/630,703 US5893160A (en) 1996-04-08 1996-04-08 Deterministic distributed multi-cache coherence method and system
US08/630703 1996-04-08

Publications (1)

Publication Number Publication Date
JPH10105464A true JPH10105464A (ja) 1998-04-24

Family

ID=24528258

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9103989A Pending JPH10105464A (ja) 1996-04-08 1997-04-08 マルチプロセッサ内の多数のキャッシュ用のキャッシュ・コヒーレンシ方式

Country Status (5)

Country Link
US (1) US5893160A (ja)
EP (1) EP0801349B1 (ja)
JP (1) JPH10105464A (ja)
DE (1) DE69721891T2 (ja)
HK (1) HK1002779A1 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007199999A (ja) * 2006-01-26 2007-08-09 Nec Computertechno Ltd マルチプロセッサシステム及びその動作方法
WO2007099583A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited システムコントローラおよびキャッシュ制御方法
JP2007535037A (ja) * 2004-04-27 2007-11-29 インテル・コーポレーション 効率的な2つのホップ・キャッシュ・コヒーレンシ・プロトコル
JP2008512772A (ja) * 2004-09-09 2008-04-24 インテル コーポレイション キャッシュ競合の解決
US7945754B2 (en) 2006-02-24 2011-05-17 Fujitsu Limited Multiprocessor system, processor, and cache control method
JP2012074036A (ja) * 2010-09-28 2012-04-12 Arm Ltd ライトバック順序付けによるコヒーレンス制御
US8176260B2 (en) 2006-02-24 2012-05-08 Fujitsu Limited Recording controller including snoop unit issuing invalidation request and response unit outputting notification indicating identification information for indentifying recording request and recording control method thereof
JP2015519678A (ja) * 2013-03-14 2015-07-09 オラクル・インターナショナル・コーポレイション 部分的に順序付けされたネットワーク上におけるブロードキャストキャッシュコヒーレンス

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860109A (en) * 1996-07-01 1999-01-12 Sun Microsystems, Inc. Methods and apparatus for a coherence transformer for connecting computer system coherence domains
US5897657A (en) * 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessing system employing a coherency protocol including a reply count
US5950226A (en) * 1996-07-01 1999-09-07 Sun Microsystems, Inc. Multiprocessing system employing a three-hop communication protocol
US6167490A (en) * 1996-09-20 2000-12-26 University Of Washington Using global memory information to manage memory in a computer network
US6209059B1 (en) * 1997-09-25 2001-03-27 Emc Corporation Method and apparatus for the on-line reconfiguration of the logical volumes of a data storage system
US6032217A (en) 1997-11-04 2000-02-29 Adaptec, Inc. Method for reconfiguring containers without shutting down the system and with minimal interruption to on-line processing
US6212610B1 (en) 1998-01-07 2001-04-03 Fujitsu Limited Memory protection mechanism for a distributed shared memory multiprocessor with integrated message passing support
WO1999035581A1 (en) * 1998-01-07 1999-07-15 Fujitsu Limited Cache coherence unit with integrated message passing and memory protection for a distributed, shared memory multiprocessor system
US6209064B1 (en) 1998-01-07 2001-03-27 Fujitsu Limited Cache coherence unit with integrated message passing and memory protection for a distributed, shared memory multiprocessor system
US6425060B1 (en) * 1999-01-05 2002-07-23 International Business Machines Corporation Circuit arrangement and method with state-based transaction scheduling
US6484240B1 (en) * 1999-07-30 2002-11-19 Sun Microsystems, Inc. Mechanism for reordering transactions in computer systems with snoop-based cache consistency protocols
US6356983B1 (en) * 2000-07-25 2002-03-12 Src Computers, Inc. System and method providing cache coherency and atomic memory operations in a multiprocessor computer architecture
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7324995B2 (en) * 2003-11-17 2008-01-29 Rackable Systems Inc. Method for retrieving and modifying data elements on a shared medium
US20050108300A1 (en) * 2003-11-17 2005-05-19 Terrascale Technologies Inc. Method for the management of local client cache buffers in a clustered computer environment
JP4362454B2 (ja) * 2005-04-07 2009-11-11 富士通株式会社 キャッシュコヒーレンス管理装置およびキャッシュコヒーレンス管理方法
JP4208895B2 (ja) * 2006-05-30 2009-01-14 株式会社東芝 キャッシュメモリ装置および処理方法
US7480770B2 (en) 2006-06-14 2009-01-20 Sun Microsystems, Inc. Semi-blocking deterministic directory coherence
US7574566B2 (en) * 2006-09-21 2009-08-11 Sun Microsystems, Inc. System and method for efficient software cache coherence
US7827357B2 (en) 2007-07-31 2010-11-02 Intel Corporation Providing an inclusive shared cache among multiple core-cache clusters
US8812959B2 (en) * 2009-06-30 2014-08-19 International Business Machines Corporation Method and system for delivering digital content
US8756378B2 (en) * 2011-02-17 2014-06-17 Oracle International Corporation Broadcast protocol for a network of caches
US10496538B2 (en) 2015-06-30 2019-12-03 Veritas Technologies Llc System, method and mechanism to efficiently coordinate cache sharing between cluster nodes operating on the same regions of a file or the file system blocks shared among multiple files
US10387314B2 (en) * 2015-08-25 2019-08-20 Oracle International Corporation Reducing cache coherence directory bandwidth by aggregating victimization requests
US10725915B1 (en) * 2017-03-31 2020-07-28 Veritas Technologies Llc Methods and systems for maintaining cache coherency between caches of nodes in a clustered environment
US10917198B2 (en) * 2018-05-03 2021-02-09 Arm Limited Transfer protocol in a data processing network
US11544193B2 (en) 2020-09-11 2023-01-03 Apple Inc. Scalable cache coherency protocol
US11934313B2 (en) 2021-08-23 2024-03-19 Apple Inc. Scalable system on a chip

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1239227A (en) * 1984-10-17 1988-07-12 Randy D. Pfeifer Method of and arrangement for ordering of multiprocessor operations in a multiprocessor system
JPH0731662B2 (ja) * 1986-07-15 1995-04-10 富士通株式会社 マルチプロセッサシステム
JPH07113903B2 (ja) * 1987-06-26 1995-12-06 株式会社日立製作所 キャッシュ記憶制御方式
US5161227A (en) * 1989-11-13 1992-11-03 International Business Machines Corporation Multilevel locking system and method
US5499356A (en) * 1989-12-29 1996-03-12 Cray Research, Inc. Method and apparatus for a multiprocessor resource lockout instruction
US5301337A (en) * 1990-04-06 1994-04-05 Bolt Beranek And Newman Inc. Distributed resource management system using hashing operation to direct resource request from different processors to the processor controlling the requested resource
US5224214A (en) * 1990-04-12 1993-06-29 Digital Equipment Corp. BuIffet for gathering write requests and resolving read conflicts by matching read and write requests
US5297269A (en) * 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
US5237673A (en) * 1991-03-20 1993-08-17 Digital Equipment Corporation Memory management method for coupled memory multiprocessor systems
US5303362A (en) * 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
JPH05210640A (ja) * 1992-01-31 1993-08-20 Hitachi Ltd マルチプロセッサシステム
US5551005A (en) * 1994-02-25 1996-08-27 Intel Corporation Apparatus and method of handling race conditions in mesi-based multiprocessor system with private caches
US5572702A (en) * 1994-02-28 1996-11-05 Intel Corporation Method and apparatus for supporting read, write, and invalidation operations to memory which maintain cache consistency
US5642494A (en) * 1994-12-21 1997-06-24 Intel Corporation Cache memory with reduced request-blocking

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007535037A (ja) * 2004-04-27 2007-11-29 インテル・コーポレーション 効率的な2つのホップ・キャッシュ・コヒーレンシ・プロトコル
JP4789926B2 (ja) * 2004-04-27 2011-10-12 インテル・コーポレーション 効率的な2つのホップ・キャッシュ・コヒーレンシ・プロトコル
JP2008512772A (ja) * 2004-09-09 2008-04-24 インテル コーポレイション キャッシュ競合の解決
US10078592B2 (en) 2004-09-09 2018-09-18 Intel Corporation Resolving multi-core shared cache access conflicts
JP2007199999A (ja) * 2006-01-26 2007-08-09 Nec Computertechno Ltd マルチプロセッサシステム及びその動作方法
US7904665B2 (en) 2006-01-26 2011-03-08 Nec Computer Techno, Ltd. Multiprocessor system and its operational method
US7945754B2 (en) 2006-02-24 2011-05-17 Fujitsu Limited Multiprocessor system, processor, and cache control method
US8176260B2 (en) 2006-02-24 2012-05-08 Fujitsu Limited Recording controller including snoop unit issuing invalidation request and response unit outputting notification indicating identification information for indentifying recording request and recording control method thereof
WO2007099583A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited システムコントローラおよびキャッシュ制御方法
US8327081B2 (en) 2006-02-28 2012-12-04 Fujitsu Limited Information processing device and method for controlling the same
JP2012074036A (ja) * 2010-09-28 2012-04-12 Arm Ltd ライトバック順序付けによるコヒーレンス制御
JP2015519678A (ja) * 2013-03-14 2015-07-09 オラクル・インターナショナル・コーポレイション 部分的に順序付けされたネットワーク上におけるブロードキャストキャッシュコヒーレンス

Also Published As

Publication number Publication date
US5893160A (en) 1999-04-06
DE69721891T2 (de) 2004-03-11
HK1002779A1 (en) 1998-09-18
DE69721891D1 (de) 2003-06-18
EP0801349B1 (en) 2003-05-14
EP0801349A1 (en) 1997-10-15

Similar Documents

Publication Publication Date Title
JPH10105464A (ja) マルチプロセッサ内の多数のキャッシュ用のキャッシュ・コヒーレンシ方式
US5983326A (en) Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
US5860159A (en) Multiprocessing system including an apparatus for optimizing spin--lock operations
EP0817073B1 (en) A multiprocessing system configured to perform efficient write operations
EP0817070B1 (en) Multiprocessing system employing a coherency protocol including a reply count
KR100970229B1 (ko) 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템
US5893149A (en) Flushing of cache memory in a computer system
EP0818733B1 (en) A multiprocessing system configured to perform software initiated prefetch operations
EP0817077B1 (en) A multiprocessing system configured to perform prefetching operations and method therefor
US7600080B1 (en) Avoiding deadlocks in a multiprocessor system
US7669018B2 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US6636906B1 (en) Apparatus and method for ensuring forward progress in coherent I/O systems
EP0817074B1 (en) Multiprocessing system employing a three-hop communication protocol
US7624236B2 (en) Predictive early write-back of owned cache blocks in a shared memory computer system
US20070079074A1 (en) Tracking cache coherency in an extended multiple processor environment
US7376793B2 (en) Cache coherence protocol with speculative writestream
US20040034747A1 (en) Scalable cache coherent distributed shared memory processing system
NO312610B1 (no) Datamaskin-system
JP2000076217A (ja) コンピュ―タ・システムにおいてロック動作を最適化するシステムおよび方法
US6973547B2 (en) Coherence message prediction mechanism and multiprocessing computer system employing the same
JPH08249231A (ja) マルチプロセッサ・システムにおける古いデータの処理システム及び方法
JP5265827B2 (ja) ハイブリッドコヒーレンスプロトコル
US7797495B1 (en) Distributed directory cache
JP2746530B2 (ja) 共有メモリマルチプロセッサ
JP2681410B2 (ja) マルチプロセッサ・キャッシュにおける排他性をロックする方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040408

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060912

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061219

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070319

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070323

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070814