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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache 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
ピュータ・システム用の効率的な簡素化されたキャッシ
ュ・コヒーレント・プロトコルを提供する。 【解決手段】 一つのサブシステムからの要求を他のサ
ブシステムのキャッシュ行へ送り、その要求を他のサブ
システムで受け取ると、その要求がサービスされるまで
前記他のサブシステムのキャッシュ行へのすべての新し
い要求をブロッキングする。
Description
る。特に、本発明は、マルチプロセッサ・システム内の
多数のキャッシュ用のキャッシュ・コヒーレンシ方式に
関する。
ンピュータである」というパラダイムへの移行によっ
て、ネットワーク・コンピュータ・システム内の共用グ
ローバル・メモリ・アドレス空間及びコヒーレント・キ
ャッシング・システムの必要性がますます重要になる。
図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を含む。
4からのデータは、1つまたは複数のキャッシュ113
a...113i、123a...123i、及び18
3a...183i内に記憶される。したがって、シス
テム100が共用メモリ・プログラムを正確に実行でき
るように、キャッシュ113a...113i、123
a...123i、及び183a...183iの間の
キャッシュ・コヒーレンシが維持される。
・コヒーレンシ方式をサポートするために、サブシステ
ム110、120、...180は、それぞれグローバ
ル・インタフェース115、125、...185に結
合されたディレクトリ116、126、...186を
含む。次に、図2を参照すると、各グローバル・インタ
フェース、例えばインタフェース115は、スレーブ・
エージェント(「SA」)、要求エージェント(「R
A」)及びディレクトリ・エージェント(「DA」)、
例えばSA115a、RA115b及びDA115cを
含む。各DAは、他のサブシステム内でキャッシュされ
たコピーを含めて、それぞれの(ホーム)メイン・メモ
リのキャッシュされた全てのコピーの状況を備えたそれ
ぞれの関連するディレクトリを更新する役目を果たす。
況は、ノード当たり4つの状態の1つとしてディレクト
リ116、126、...186内に記録される。無効
(「I」)状態は、そのノードすなわちサブシステムが
注目のデータ行のコピーを有しないことを示す。共用
(「S」)状態は、そのノードがSコピーを有し、かつ
他のノードがSコピーを有する可能性があることを示
す。所有(「O」)状態は、そのノードがOコピーを有
し、かつ他のノードがSコピーを有する可能性があるこ
とを示す。Oコピーを有するノードは、交換時に書戻し
を実施することが必要になることに留意されたい。最後
に、修正(「M」)状態は、そのノードがデータ行の唯
一の所有者であること、すなわち他のノード内にそのS
コピーが存在しないことを示す。
サブシステムに送る機構をサブシステム内で形成してい
る。DAは、その関連するホーム・ディレクトリにアク
セスし、更新する役目を果たす。SAは、別のサブシス
テムのDAからの要求に応答する役目を果たす。
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)・ケース」を
もたらすので問題となる。
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コピー」)を有する。
110のグローバル・インタフェース115のRA1
は、RTS_reqパケットをサブシステム180のグ
ローバル・インタフェース185のDA8に送る。図3
Bに示すように、DA8は、要求側RA1へのデータ・
パケットの転送を開始することによって応答する。
ットがRA1に到達する前に、サブシステム120のグ
ローバル・インタフェース125のRA2は、read
−to−own(RTO_req)パケットをDA8に
送る。
ケットの転送を開始することによって応答することを示
す。さらに、DA8は、それぞれサブシステム110の
スレーブ・エージェントSA1及び第4のサブシステム
のスレーブ・エージェントSA4に無効(Invld)
パケットを送る。
Invldパケットは、earlier−in−ti
meデータ・パケットがRA1に到着する前にSA1に
到着する。したがって、SA1は、まずInvldパケ
ットを受け取り、注目のデータ行の古いSコピーを無効
にし始める。その後、RA1は、データ・パケットを受
け取るが、そのSコピーの値は、誤って先にInvld
とマークされたので、それを更新することはできない。
来のブルートフォース・ハンドシェーキング・プロトコ
ルが存在する。図5Aないし図7Fに、上述のコーナー
・ケースの1つの従来技術の解決策を示す。この場合
も、図3Aないし図4Dに示される例と同じ開始条件を
使用すると、サブシステム110、サブシステム120
及び第4のサブシステムは、サブシステム180のメモ
リ空間からのデータ行のSコピーを有する。
10のRA1は、サブシステム180のDA8にRTS
_reqパケットを送る。
A1へのデータ・パケットの転送を開始することによっ
て応答する。次いで、DA8は、RA1からのread
−acknowledgment(RTS_ack)パ
ケットを待っている間アイドルになる。
A8にRTO_reqパケットを送る。しかしながら、
DA8は、RA1からのRTS_ackパケットを待っ
ているのでアイドルであり、したがって応答することが
できない。
_ackパケットを受け取った後、DA8は、もはやア
イドルではなく、RA2からのRTO_reqパケット
に応答することができる。
は注目のデータ行のSコピーを有するサブシステムの任
意のSAにInvldパケットを送る。この例では、D
A8は、SA1及びSA4にInvldパケットを送
る。DA8はまた、データ・パケットを#Invldと
ともにRA2に送る役目を果たす。
SA1及びSA4からの来たInvld_ackの数を
計数し、それにより図3Aないし図4Dに示されるコー
ナー・ケースを回避する。
は軽減する上述のブルートフォース・ハンドシェーキン
グ解決策は、ハンドシェーキング制御パケットの数が過
大なために不十分である。これらの余分の制御パケット
は、ネットワーク・トラフィックを大幅に増大させる。
換言すれば、まれだが損害の大きいコーナー・ケースに
対する「解決策」は、ネットワークの効率を大幅に低下
させる。
低下させることなく、コーナー・ケースを処理または軽
減する簡単かつ簡素化されたキャッシュ・コヒーレンシ
・プロトコルが必要である。本発明の利点には、コーナ
ー・ケースに起因する複雑な競争状態の軽減、競争状態
の軽減によるプロトコルの形式的な検証の緩和、及び得
られたキャッシュ・コヒーレント・コンピュータ・シス
テムの信頼性の向上が含まれる。
セッサ・マルチキャッシュ・コンピュータ・システム用
の効率的な簡素化されたキャッシュ・コヒーレンシ・プ
ロトコルを提供する。各サブシステムは、少なくとも1
つのプロセッサ及び関連するキャッシュ及びディレクト
リを含む。サブシステムはグローバル・インタフェース
を介してグローバル相互接続に結合される。
ーバル・インタフェースは、要求エージェント(R
A)、ディレクトリ・エージェント(DA)及びスレー
ブ・エージェント(SA)を含む。RAは、サブシステ
ムで読取り要求及び書込み要求を別のサブシステムのD
Aに送る機構を形成する。DAは、ホーム・ディレクト
リにアクセスし、更新する役目を果たす。SAは、別の
サブシステムのDAからの要求に応答する役目を果た
す。
はまたブロッカ(blocker)を含む。この実施態
様では、各ブロッカは、DAに結合され、ホーム・ディ
レクトリに関連づけられている。キャッシュ行へのすべ
ての要求は、各ホーム・ディレクトリに関連するブロッ
カによってスクリーニングされる。ブロッカは、そのキ
ャッシュ行への未解決の要求がサービスされるまで、キ
ャッシュ行への新しい要求をブロッキングする役目を果
たす。直感に反するが、ブロッキングにより新しい要求
が順次処理されるので、ブロッカによって管理される
「ロックされた」状態では、残りのわずかのコーナー・
ケースを除去すれば解決が簡単になる。
求を記憶する待ち行列を含む。ブロッカの変更及び修正
も可能である。例えば、書戻し要求及びread−to
−own要求に、read−to−share要求に関
するサービスに対する優先順位を与えることができる。
明を読めば明らかになろう。
データ行の(キャッシュされた)コピーを有しないこと
を示す。
テムが注目のデータ行の(キャッシュされた)共用コピ
ーを有し、かつ他のノードが注目のデータ行の(キャッ
シュされた)共用コピーを有する可能性があることを示
す。
テムが所有者であること、すなわちこのノードが「マス
タ・コピー」を有することを示す。したがって、このノ
ードは、キャッシュ行が再使用される前に「マスタ・コ
ピー」を別のノードに書き込まなければならないことを
示す。他のノードが注目のデータ行の共用コピーを有す
る可能性があることを示す。
テムが注目のデータ行の唯一の(キャッシュされた)コ
ピーであることを示す。
行の読取り/書込み要求が未解決であることを示す。
ステムに注目のキャッシュされたデータ行へのアクセス
を別のサブシステムに要求する機構を形成する。
は、サブシステムにそのメイン・メモリのコピーの状況
を追跡するためにそのディレクトリにアクセスする機構
を形成する。
サブシステムに別のサブシステムからのデータ要求に応
答する機構を形成する。
から本発明を完全に理解することができる。これらの詳
細は、設計者が費用効率の高いキャッシュ・コヒーレン
ト・コンピュータ・システムを実施するのを助ける機能
ブロック及び例示のキャッシュ・ディレクトリを含む。
さらに、本発明については、例示のマルチキャッシュ・
マルチプロセッサ・コンピュータ・システム用の特定の
キャッシュ・コヒーレント方式に関して説明するが、本
発明は、広い範囲のキャッシュ及びネットワーク・アー
キテクチャに適用できる。他の例では、周知の回路及び
構造については、本発明を不必要に曖昧にしないために
詳細に説明しない。
ーレント・ネットワーク・コンピュータ・システム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を含む。
シュ・コヒーレンシ方式によれば、各グローバル・イン
タフェース、例えばインタフェース415は、スレーブ
・エージェント(「SA」)、要求エージェント(「R
A」)及びディレクトリ・エージェント(「DA」)及
びブロッカ、例えばSA415a、RA415b、DA
415c及びブロッカ415dを含む。したがって、各
DAと各ディレクトリの間には1対1の対応がある。
ぞれのグローバル・インタフェースから離れた回路内に
組み込むことができる。各ブロッカは、DAに結合さ
れ、未解決の要求がサービスされている間、キャッシュ
行の保留要求を保持する役目を果たす。「ブロッキン
グ」機能は、以下で説明するようにディレクトリ41
6、426、...486によって、あるいは専用ブロ
ッキング論理を追加することによって実施できることに
留意されたい。専用ブロッキング論理は、未解決のトラ
ンザクションを待機させ、各未解決のトランザクション
のキャッシュ行アドレスを記憶する役目を果たす。その
後、専用ブロッキング論理は、トランザクションを対応
するDAに送る前に、各未解決のトランザクションを古
いキャッシュ行アドレスと比較する。この別形態では、
各終了信号はそれぞれのアドレスをクリアするだけでよ
い。
メイン・メモリの各キャッシュ行サイズの部分の状況を
備えたその関連するディレクトリを更新する役目を果た
す。したがって、メイン・メモリのそのような各部分に
対して、ディレクトリは、どのサブシステムが、その特
定の部分のキャッシュされたコピーを有するかを示す状
況を含む。この実施形態では、各ディレクトリは、サブ
システムのホーム・ディレクトリ、すなわちローカル・
ディレクトリである。したがって、各ディレクトリは、
すべてのサブシステム内のキャッシュされたコピーの状
態を示すサブシステムと関連するデータ行のキャッシュ
されたコピーのエントリを含む。DAはまた、適切な要
求パケットをそれぞれのSAに転送する役目を果たす。
410がサブシステム480のホーム・アドレス空間内
のデータ行からの読取り許可、すなわち共用(S)コピ
ーを必要とするが、サブシステム420によって「所
有」される例Iを示す。
ム410のグローバル・インタフェース415のRA1
は、サブシステム480のグローバル・インタフェース
485のブロッカ485dにread−to−shar
e要求(RTS_req)パケットを送る。ブロッカ4
85dは、DA8をブロック(B)状態(破線の円で示
す)に入れ、それによりDA8に対して注目のデータ行
への新しい要求を凍結することによって応答する。
るDA8は、自分のホーム・ディレクトリ486を要求
側RA1の新しい状況が共用者となるようにマークし、
サブシステム420のグローバル・インタフェース42
5のスレーブ・エージェントSA2にRTS_reqパ
ケットを転送する。
み/読取り要求があり、同じデータ行への後続の要求
が、保留要求がサービスされるまでブロッキングされる
ことを示す。この実施形態では、DA8と関連するブロ
ッカ485dは、要求をローカルfirst−in−f
irst−out(FIFO)待ち行列内に記憶する
か、または新しい要求をフロー制御することによってデ
ータ行への新しい要求をブロッキングする。
_reqパケットに応答して、RA1にデータ・パケッ
トを送り、データ行の「所有者」のままである。
は、SA2からデータ・パケットを受け取ると、ブロッ
カ485dにRTS終了(RTS_compt)パケッ
トを送る。ブロッカ485dは、DA8をB状態から脱
出させる。DA8は、注目のデータ行への待機要求をサ
ービスすることができるようになる。
ブシステム410は、そのホーム・アドレス空間がサブ
システム480内にあるがサブシステム420によって
「所有」されているデータ行からの読取り許可、すなわ
ち所有(O)コピーを必要とする。さらに、第3のサブ
システム及び第4のサブシステム(どちらも図8には図
示せず)は、データ行のSコピーを有する。
read−to−own要求(RTO_req)パケッ
トをブロッカ485dを介してDA8に送る。
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の識別を含む。
ットの到着に応答して、データ行のそのコピーを無効に
し、データ・パケットを共用者の合計数とともにRA1
に送る。DA8からそれぞれのRTO_reqパケット
を受け取ると、SA3ならびにSA4は、RA1に無効
確認(Ivld_ack)パケットを送り、またそれぞ
れのSコピーを無効にする。
らのデータ・パケットが到着したのち、及びSA3及び
SA4からのIvld_ackパケットの正確な数すな
わち#_sharerが到着した後、RA1は、ブロッ
カ485dにRTO終了(RTO_compt)パケッ
トを送る。RTO_comptパケットは「three
−hop dirty reply」シーケンスを終了
する。DA8は、RTO_comptパケットに応答し
て、B状態を脱出し、注目のデータ行を解放する。
rerをIvld_reqパケットとともに送ることに
よって簡単化できることに留意されたい。したがって、
要求側サブシステムのRA1がデータを必要としない場
合はいつでも、SA2は、RA1に#_sharerを
送るためだけにSA1にパケットを送る必要はない。換
言すれば、RA1は、SA3からでもSA4からでも#
_sharerを得ることができ、したがってネットワ
ーク・トラフィックが1パケット減少する。
に示す。例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を送る必要はない。
SA2からデータ・パケットを受け取った後、ブロッカ
485dにRTO_comptパケットを送る。ブロッ
カ485dは、Invld_ackパケットを計数し、
RTO_comptパケットの到着を認識する役目を果
たす。
85dは、この例では、SA3ならびにSA4からすべ
ての期待されるInvld_ackを受け取ると、終了
確認(Compt_act)パケットをRA1に送る。
Compt_actパケットは、「four−hop
dirty−reply」シーケンスを終了し、DA8
は、B状態を脱出し、注目のデータ行を解放する。
トリに書き戻す例、例えばサブシステム410が「所有
者」であり、サブシステム420に書戻し要求(WB_
req)を送る例IVを示す。
ム410のグローバル・インタフェース415のRA1
は、サブシステム480のグローバル・インタフェース
485のDA8にWB_reqパケットを送る。DA8
は、B状態に入り、キャッシュ行への新しいトランザク
ションを凍結することによって応答する。
要求側RA1の新しい状況を無効として反映するように
そのホーム・ディレクトリをマークし、RA1に書戻し
許可(WB_permit)パケットを返送する。
は、交換すべきデータを含む書戻し終了(WB_com
pt)パケットを介してDA8にデータを送る。DA8
においてWB_comptパケットを受け取ると、書戻
しトランザクションが終了し、ブロッカ485dは、B
状態を脱出することによって注目のデータ行を解放す
る。RA1は、RA1がWB_permitパケットを
受け取った後でのみ「O」状態を脱出することに留意さ
れたい。ブロッカ485dからWB_permitパケ
ットを待つことによって、RA1が、後続の読取り要求
がRA1に到達する前に(書戻しを使用して)キャッシ
ュ行を交換したので、後続のRA1への読取り要求が失
敗するコーナー・ケースが除去される。
々な最適化が可能である。例えば、単一のFIFO待ち
行列がすべての未解決の読取り要求及び書込み要求を記
憶する代わりに、RTO要求を別個の待ち行列内に記憶
し、RTO要求が最初にサービスされるように処理の優
先順位を与える。書戻し要求に優先順位を与えることに
よって、一般にサブシステムのプロセッサは共用「キ
ー」を使用してそれぞれのクリティカル・コード・セク
ションを保護するので、プロセッサ性能が向上する。プ
ロセッサは、そのクリティカル・コード・セクションを
実行する前にキーをロックし、終了時にキーを解放す
る。その後、第2のプロセッサは、キーがそのクリティ
カル・コード・セクションを実行するのをロックするこ
とができる。したがって、RTO要求に優先順位を与え
ることによって、キーが迅速に解放され、他のプロセッ
サがキーへのアクセス権を迅速に得ることができる。
実施する。例えば、RTS要求または書戻し要求が未解
決の場合はブロッキングを選択的に活動化させるが、R
TO要求が未解決の場合はブロッキングを選非活動化さ
せる。
テム410、420、...480は、多数の構成に配
置できる。例えば、システム400は、インターネッ
ト、ローカル・エリア・ネットワーク(LAN)または
密に結合されたマルチプロセッサ・システムなど、広域
ネットワーク(WAN)として構成できる。
修正及び追加も可能である。「例えば、DAに到着する
すべての読取り要求及び書込み要求をブロックする代わ
りに、未解決のread−to−own要求または書戻
し要求がある場合にのみ、要求が未解決の場合はいつで
も、RTO要求、read−to−share要求をブ
ロッキングする。」さらに、サブシステム内のプロセッ
サが別のサブシステムのホスト・ディレクトリにアクセ
スすることなくデータを互いに提供できるように、各サ
ブシステムに「ローカル・データ転送」を実施する追加
の回路を備えることができる。以上、本発明の範囲は首
記の請求の範囲によって決定される。
MA)を有するネットワーク・コンピュータ・システム
100を示すブロック図である。
要求エージェント(「RA」)及びスレーブ・エージェ
ント(「SA」)を含む図1のコンピュータ・システム
のグローバル・インタフェースのブロック図である。
read−to−own要求によって先に無効になっ
た後で、earlier−in−time読取り要求と
関連するデータ・パケットが到着するコーナー・ケース
を示す図である。
read−to−own要求によって前もって無効に
なった後で、earlier−in−time読取り要
求と関連するデータ・パケットが到着するコーナー・ケ
ースを示す図である。
決する従来のハンドシェーキング・プロトコルを示す図
である。
決する従来のハンドシェーキング・プロトコルを示す図
である。
決する従来のハンドシェーキング・プロトコルを示す図
である。
ネットワーク・コンピュータ・システム400を示すブ
ロック図である。
(「DA」)、要求エージェント(「RA」)及びスレ
ーブ・エージェント(「SA」)を含む本発明のコンピ
ュータ・システムのグローバル・インタフェースのブロ
ック図である。
TS)要求がサービスされるまで図9のディレクトリ・
エージェントが要求をブロッキングする例示の方法を示
す図である。
TS)要求がサービスされるまで図9のディレクトリ・
エージェントが要求をブロッキングする例示の方法を示
す図である。
O)要求がサービスされるまで図9のディレクトリ・エ
ージェントが要求をブロッキングする例示の方法を示す
図である。
O)要求がサービスされるまで図9のディレクトリ・エ
ージェントが要求をブロッキングする例示の方法を示す
図である。
O)要求がサービスされるまで図9のディレクトリ・エ
ージェントが要求をブロッキングをする他の方法を示す
図である。
O)要求がサービスされるまで図9のディレクトリ・エ
ージェントが要求をブロッキングをする他の方法を示す
図である。
れるまで図9のディレクトリ・エージェントが要求をブ
ロッキングする例示の方法を示す図である。
ブシステム 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 ディレクトリ・エージェント
Claims (3)
- 【請求項1】 相互接続を介して互いに結合され、それ
ぞれメイン・メモリ及び複数のキャッシュ行からなるキ
ャッシュを含む複数のサブシステムを有するコンピュー
タ・システム用のキャッシュ・アクセス方法において、 第1の前記サブシステムからの要求を第2のサブシステ
ムのキャッシュ行へ送るステップと、 前記要求を前記第2のサブシステムで受け取るステップ
と、 前記要求がサービスされるまで前記第2の前記サブシス
テムの前記キャッシュ行へのすべての新しい要求をブロ
ッキングするステップとを含む方法。 - 【請求項2】 相互接続を介して互いに結合され、それ
ぞれメイン・メモリ及び複数のキャッシュ行からなるキ
ャッシュを含む複数のサブシステムを有するコンピュー
タ・システムで用いるキャッシュ・アクセス装置におい
て、 第1の前記サブシステムと関連し、前記キャッシュ行へ
の未解決の要求がサービスされるまで前記第1のサブシ
ステムのキャッシュ行への第2の前記サブシステムから
発生する少なくとも1つの新しい要求をブロッキングす
るように構成されたブロッカを含む装置。 - 【請求項3】 相互接続を介して互いに結合され、それ
ぞれメイン・メモリ及び複数のキャッシュ行からなるキ
ャッシュを含む複数のサブシステムを有するコンピュー
タ・システムで用いるキャッシュ・アクセス装置におい
て、 第1の前記サブシステムからの要求を第2のサブシステ
ムのキャッシュ行へ送る手段と、 前記要求を前記第2のサブシステムにおいて受け取る手
段と、 前記要求がサービスされるまで前記第2の前記サブシス
テムの前記キャッシュ行へのすべての新しい要求をブロ
ッキングする手段とを含む装置。
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)
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)
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)
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 |
-
1996
- 1996-04-08 US US08/630,703 patent/US5893160A/en not_active Expired - Lifetime
-
1997
- 1997-03-25 EP EP97302037A patent/EP0801349B1/en not_active Expired - Lifetime
- 1997-03-25 DE DE69721891T patent/DE69721891T2/de not_active Expired - Fee Related
- 1997-04-08 JP JP9103989A patent/JPH10105464A/ja active Pending
-
1998
- 1998-02-09 HK HK98100957A patent/HK1002779A1/xx not_active IP Right Cessation
Cited By (12)
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 |