JP2786124B2 - 共有メモリ型マルチプロセッサシステム - Google Patents
共有メモリ型マルチプロセッサシステムInfo
- Publication number
- JP2786124B2 JP2786124B2 JP7102532A JP10253295A JP2786124B2 JP 2786124 B2 JP2786124 B2 JP 2786124B2 JP 7102532 A JP7102532 A JP 7102532A JP 10253295 A JP10253295 A JP 10253295A JP 2786124 B2 JP2786124 B2 JP 2786124B2
- Authority
- JP
- Japan
- Prior art keywords
- store
- directory
- cluster
- cache
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
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
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)
Description
【0001】
【産業上の利用分野】本発明は共有メモリ型マルチプロ
セッサシステムに関し、特にディレクトリ方式の共有メ
モリ型マルチプロセッサシステムに関する。
セッサシステムに関し、特にディレクトリ方式の共有メ
モリ型マルチプロセッサシステムに関する。
【0002】
【従来の技術】1つのシステムバスに、複数のストアイ
ンキャッシュおよび共有メモリが接続されているマルチ
プロセッサシステム(一般的に「クラスタ」と呼ばれ
る)を、ディレクトリ方式で複数接続した共有メモリ型
マルチプロセッサシステムは既知の技術で実現されてい
る。たとえば特開平2―12361号公報記載の「階層
化バスによる並列計算機システム」、特開平4―291
446号公報記載の「スケーラブルメモリ帯域を備えた
緊密結合型多重プロセッサ」がある。しかし、特開平2
―12361号公報の技術では、クラスタ間のストアイ
ンキャッシュのコヒーレンシの保証の方法が開示されて
いない。また、特開平4―291446号公報の技術で
はクラスタ相互を接続するのにクロスバ(これに接続さ
れている複数のクラスタのうち、任意の2つのクラスタ
間の通信を可能にするスイッチ)を用いており、さらに
ストアインキャッシュのコヒーレンシを保証するため
に、クラスタ内、クラスタ間を問わず複数のストアイン
キャッシュ間で同一メモリブロックを同時にキャッシン
グ(キャッシュに貯蔵することをキャッシングするとい
う。以下この用語を使用する。)しないように制御して
いる。
ンキャッシュおよび共有メモリが接続されているマルチ
プロセッサシステム(一般的に「クラスタ」と呼ばれ
る)を、ディレクトリ方式で複数接続した共有メモリ型
マルチプロセッサシステムは既知の技術で実現されてい
る。たとえば特開平2―12361号公報記載の「階層
化バスによる並列計算機システム」、特開平4―291
446号公報記載の「スケーラブルメモリ帯域を備えた
緊密結合型多重プロセッサ」がある。しかし、特開平2
―12361号公報の技術では、クラスタ間のストアイ
ンキャッシュのコヒーレンシの保証の方法が開示されて
いない。また、特開平4―291446号公報の技術で
はクラスタ相互を接続するのにクロスバ(これに接続さ
れている複数のクラスタのうち、任意の2つのクラスタ
間の通信を可能にするスイッチ)を用いており、さらに
ストアインキャッシュのコヒーレンシを保証するため
に、クラスタ内、クラスタ間を問わず複数のストアイン
キャッシュ間で同一メモリブロックを同時にキャッシン
グ(キャッシュに貯蔵することをキャッシングするとい
う。以下この用語を使用する。)しないように制御して
いる。
【0003】
【発明が解決しようとする課題】上述した特開平2―1
2361号公報記載の構成では、クラスタ間のストアイ
ンキャッシュのコヒーレンシの保証がとれないという欠
点がある。また、特開平4―291446号公報記載の
構成ではクラスタ単体だけでも動作することができるシ
ステムを2つ接続した構成とする場合において、バス方
式でなくクロスバ方式を採用しているために、ハードウ
ェア量の増大を招くという欠点がある。さらに、ストア
インキャッシュのコヒーレンシの保証のために、共有メ
モリのいずれのメモリブロックも同時期にはどれか1個
のストアインキャッシュにしかキャッシングできないよ
うに制御される。このため、ストアインキャッシュでの
ヒット率が低下しシステム全体の性能が低下するという
欠点がある。
2361号公報記載の構成では、クラスタ間のストアイ
ンキャッシュのコヒーレンシの保証がとれないという欠
点がある。また、特開平4―291446号公報記載の
構成ではクラスタ単体だけでも動作することができるシ
ステムを2つ接続した構成とする場合において、バス方
式でなくクロスバ方式を採用しているために、ハードウ
ェア量の増大を招くという欠点がある。さらに、ストア
インキャッシュのコヒーレンシの保証のために、共有メ
モリのいずれのメモリブロックも同時期にはどれか1個
のストアインキャッシュにしかキャッシングできないよ
うに制御される。このため、ストアインキャッシュでの
ヒット率が低下しシステム全体の性能が低下するという
欠点がある。
【0004】
【課題を解決するための手段】本発明の第1の共有メモ
リ型マルチプロセッサシステムは、2つのクラスタを有
し、各クラスタが複数のプロセッサと前記プロセッサの
全てに接続されたストアインキャッシュとを有する複数
の処理装置と、共有メモリと、前記複数の処理装置と前
記共有メモリとを接続するシステムバスとを備えた共有
メモリ型マルチプロセッサであり、前記クラスタの各々
が、(a)前記システムバス間の同期を制御する同期制
御手段と、(b)自クラスタの前記システムバスと接続
されかつ他クラスタのディレクトリと相互に接続され他
クラスタのストアインキャッシュに保持された自クラス
タ内共有メモリのメモリブロックアドレスを貯蔵するデ
ィレクトリと、(c)自クラスタの前記処理装置から前
記共有メモリへのメモリアクセス要求のアドレスと他ク
ラスタの前記ディレクトリからのアドレスとを受け取り
それらのアドレスの一致を検出するアドレス一致検出手
段と、(d)前記アドレス一致検出手段の結果に応じて
自クラスタの前記メモリアクセス要求をキャンセルする
キャンセル信号を発行するキャンセル手段と、(e)前
記ストアインキャッシュに設けられキャンセル信号を受
け取り自クラスタの前記メモリアクセス要求を無効化し
再試行する再試行手段と、を備える。
リ型マルチプロセッサシステムは、2つのクラスタを有
し、各クラスタが複数のプロセッサと前記プロセッサの
全てに接続されたストアインキャッシュとを有する複数
の処理装置と、共有メモリと、前記複数の処理装置と前
記共有メモリとを接続するシステムバスとを備えた共有
メモリ型マルチプロセッサであり、前記クラスタの各々
が、(a)前記システムバス間の同期を制御する同期制
御手段と、(b)自クラスタの前記システムバスと接続
されかつ他クラスタのディレクトリと相互に接続され他
クラスタのストアインキャッシュに保持された自クラス
タ内共有メモリのメモリブロックアドレスを貯蔵するデ
ィレクトリと、(c)自クラスタの前記処理装置から前
記共有メモリへのメモリアクセス要求のアドレスと他ク
ラスタの前記ディレクトリからのアドレスとを受け取り
それらのアドレスの一致を検出するアドレス一致検出手
段と、(d)前記アドレス一致検出手段の結果に応じて
自クラスタの前記メモリアクセス要求をキャンセルする
キャンセル信号を発行するキャンセル手段と、(e)前
記ストアインキャッシュに設けられキャンセル信号を受
け取り自クラスタの前記メモリアクセス要求を無効化し
再試行する再試行手段と、を備える。
【0005】本発明の第2の共有メモリ型マルチプロセ
ッサシステムは、上記第1の構成に加え、前記ディレク
トリ内のアドレスの各々に対応して前記ディレクトリ内
に更新フラグを設け、他クラスタのストアインキャッシ
ュに保持された自クラスタの共有メモリのメモリブロッ
クが他クラスタのプロセッサによる書き込みで更新され
ている場合に、自クラスタのディレクトリに貯蔵されて
いる前記メモリブロックアドレスに対応する前記更新フ
ラグをセットする手段を備える。
ッサシステムは、上記第1の構成に加え、前記ディレク
トリ内のアドレスの各々に対応して前記ディレクトリ内
に更新フラグを設け、他クラスタのストアインキャッシ
ュに保持された自クラスタの共有メモリのメモリブロッ
クが他クラスタのプロセッサによる書き込みで更新され
ている場合に、自クラスタのディレクトリに貯蔵されて
いる前記メモリブロックアドレスに対応する前記更新フ
ラグをセットする手段を備える。
【0006】
【実施例】本発明について、図面を参照して詳細に説明
する。
する。
【0007】図1は本発明の一実施例を示すブロック図
である。
である。
【0008】図1を参照すると、演算部10〜17はそ
れぞれ4つのプロセッサ(以下EPUという)からな
り、それぞれストアインキャッシュ300〜370に接
続されている。また、ストアインキャッシュ300〜3
30はシステムバス40に接続され、ストアインキャッ
シュ340〜370はシステムバス41に接続されてい
る。本実施例に用いたストアインキャッシュにキャッシ
ングされるメモリブロックのとりうる状態は表1の通り
である。
れぞれ4つのプロセッサ(以下EPUという)からな
り、それぞれストアインキャッシュ300〜370に接
続されている。また、ストアインキャッシュ300〜3
30はシステムバス40に接続され、ストアインキャッ
シュ340〜370はシステムバス41に接続されてい
る。本実施例に用いたストアインキャッシュにキャッシ
ングされるメモリブロックのとりうる状態は表1の通り
である。
【0009】
【表1】
【0010】システムバス40および41は、本実施例
の場合、ともに5クロックサイクル(5サイクル)で1
周期となるよう制御される(表2)。システムバス40
および41は、同期制御回路20および21にそれぞれ
接続され、同期制御回路20および21は互いに接続さ
れる。システムバス40および41は互いに同期をずら
して制御される。本実施例の場合、2.5サイクルずら
している。すなわち、システムバス40のステート1
が、システムバス41のステート3と4の間にくること
になる。
の場合、ともに5クロックサイクル(5サイクル)で1
周期となるよう制御される(表2)。システムバス40
および41は、同期制御回路20および21にそれぞれ
接続され、同期制御回路20および21は互いに接続さ
れる。システムバス40および41は互いに同期をずら
して制御される。本実施例の場合、2.5サイクルずら
している。すなわち、システムバス40のステート1
が、システムバス41のステート3と4の間にくること
になる。
【0011】
【表2】
【0012】共有メモリ30はシステムバス40に接続
され、システムバス40上に発行されるリクエストに対
して、必要に応じてデータを返す。共有メモリ31も同
様であり、共有メモリ30、31はシステム内の全ての
EPUからアクセスされる可能性がある。ディレクトリ
100は、システムバス40およびディレクトリ200
に接続され、またディレクトリ200はシステムバス4
1に接続される。
され、システムバス40上に発行されるリクエストに対
して、必要に応じてデータを返す。共有メモリ31も同
様であり、共有メモリ30、31はシステム内の全ての
EPUからアクセスされる可能性がある。ディレクトリ
100は、システムバス40およびディレクトリ200
に接続され、またディレクトリ200はシステムバス4
1に接続される。
【0013】図2は図1の実施例に使用されるストアイ
ンキャッシュのブロック図である。ここではストアイン
キャッシュ300について示してあるが、他のストアイ
ンキャッシュも同様の構成である。
ンキャッシュのブロック図である。ここではストアイン
キャッシュ300について示してあるが、他のストアイ
ンキャッシュも同様の構成である。
【0014】図2を参照すると、ストアインキャッシュ
制御回路302は演算部10、ストアインキャッシュメ
モリ301、再試行指示回路303、およびシステムバ
ス40に接続されている。
制御回路302は演算部10、ストアインキャッシュメ
モリ301、再試行指示回路303、およびシステムバ
ス40に接続されている。
【0015】ストアインキャッシュ制御回路302は、
接続されているEPUからの要求に応じて、ストアイン
キャッシュメモリ301からEPUにデータを返した
り、ストアインキャッシュメモリ301を更新したり、
システムバス40にメモリブロックリード等のリクエス
ト(以下単にリクエストという)を発行する。
接続されているEPUからの要求に応じて、ストアイン
キャッシュメモリ301からEPUにデータを返した
り、ストアインキャッシュメモリ301を更新したり、
システムバス40にメモリブロックリード等のリクエス
ト(以下単にリクエストという)を発行する。
【0016】また、再試行指示回路303はシステムバ
ス40上に「キャンセル」が発行された場合、ストアイ
ンキャッシュ制御回路302に対し、リクエストを再試
行するよう指示する。
ス40上に「キャンセル」が発行された場合、ストアイ
ンキャッシュ制御回路302に対し、リクエストを再試
行するよう指示する。
【0017】図3は図1の実施例に使用されるディレク
トリのブロック図である。ここではディレクトリ100
について示してあるが、ディレクトリ200も同様の構
成である。図3を参照するとディレクトリ制御回路10
2はシステムバス40、ディレクトリメモリ101、お
よびディレクトリ200と接続される。ディレクトリメ
モリ101には、クラスタ2のいずれかのストアインキ
ャッシュがクラスタ1の共有メモリ30のメモリブロッ
クをキャッシングしている場合、そのメモリブロックの
アドレスが登録される。またそのメモリブロックがクラ
スタ2のいずれかのストアインキャッシュ内で更新され
ているかどうかの更新フラグも同時に保持される。
トリのブロック図である。ここではディレクトリ100
について示してあるが、ディレクトリ200も同様の構
成である。図3を参照するとディレクトリ制御回路10
2はシステムバス40、ディレクトリメモリ101、お
よびディレクトリ200と接続される。ディレクトリメ
モリ101には、クラスタ2のいずれかのストアインキ
ャッシュがクラスタ1の共有メモリ30のメモリブロッ
クをキャッシングしている場合、そのメモリブロックの
アドレスが登録される。またそのメモリブロックがクラ
スタ2のいずれかのストアインキャッシュ内で更新され
ているかどうかの更新フラグも同時に保持される。
【0018】ディレクトリ制御回路102は、システム
バス40上に発行されたリクエストを監視し、ディレク
トリメモリ101内の情報を索引、更新し、必要に応じ
てディレクトリ200にリクエストを転送する。また逆
に、ディレクトリ200から転送されるリクエストに応
じてディレクトリ101内の情報を索引、更新し、必要
に応じてシステムバス40にリクエストを発行する(デ
ィレクトリ100とディレクトリ200の間の転送は
1.5サイクルかかるものとする)。ディレクトリ制御
回路102がこのようにディレクトリメモリ101の情
報を登録、索引、更新することを、単に「ディレクトリ
に登録、を索引、を更新」するという。
バス40上に発行されたリクエストを監視し、ディレク
トリメモリ101内の情報を索引、更新し、必要に応じ
てディレクトリ200にリクエストを転送する。また逆
に、ディレクトリ200から転送されるリクエストに応
じてディレクトリ101内の情報を索引、更新し、必要
に応じてシステムバス40にリクエストを発行する(デ
ィレクトリ100とディレクトリ200の間の転送は
1.5サイクルかかるものとする)。ディレクトリ制御
回路102がこのようにディレクトリメモリ101の情
報を登録、索引、更新することを、単に「ディレクトリ
に登録、を索引、を更新」するという。
【0019】アドレス一致検出回路103はシステムバ
ス40およびディレクトリ200からのリクエストのア
ドレス一致を検出し、一致が検出されるとキャンセル信
号生成回路104に通知する。
ス40およびディレクトリ200からのリクエストのア
ドレス一致を検出し、一致が検出されるとキャンセル信
号生成回路104に通知する。
【0020】キャンセル信号生成回路104は、アドレ
ス一致検出回路103からの通知により、システムバス
40上に「キャンセル」を発行する。
ス一致検出回路103からの通知により、システムバス
40上に「キャンセル」を発行する。
【0021】図4は、図3のディレクトリメモリ101
のブロック図である。図4を参照すると、ディレクトリ
メモリ101の各エントリ0からNのアドレスは、クラ
スタ2のいずれかのストアインキャッシュにキャッシン
グされている共有メモリ30のメモリブロックのアドレ
スである。更新フラグは対応するアドレスのメモリブロ
ックがクラスタ2のストアキャッシュ内で更新されると
‘1’にセットされる。有効フラグは各エントリが有効
かどうかを示すものであり、‘1’にセットされていな
ければそのエントリのアドレスは、無効であり、ディレ
クトリメモリ101には登録されていないとみなされ
る。
のブロック図である。図4を参照すると、ディレクトリ
メモリ101の各エントリ0からNのアドレスは、クラ
スタ2のいずれかのストアインキャッシュにキャッシン
グされている共有メモリ30のメモリブロックのアドレ
スである。更新フラグは対応するアドレスのメモリブロ
ックがクラスタ2のストアキャッシュ内で更新されると
‘1’にセットされる。有効フラグは各エントリが有効
かどうかを示すものであり、‘1’にセットされていな
ければそのエントリのアドレスは、無効であり、ディレ
クトリメモリ101には登録されていないとみなされ
る。
【0022】次に、図1、図2、図3、図4のブロック
図を参照して本発明の実施例の動作について詳細に説明
する。便宜的にクラスタ1の演算部10のいずれかのE
PUから共有メモリ30または31をアクセスしようと
した場合について説明する。クラスタ1の他のEPUお
よびクラスタ2のEPUの場合も全く同様である。EP
Uからの要求の種類に応じて、以下の4つの場合の基本
動作に分けて説明する。 1.自クラスタのメモリ空間(共有メモリ30)に対す
るリード(読み出し) 2.他クラスタのメモリ空間(共有メモリ31)に対す
るリード(読み出し) 3.自クラスタのメモリ空間(共有メモリ30)に対す
るライト(書き込み) 4.他クラスタのメモリ空間(共有メモリ31)に対す
るライト(書き込み) 1.自クラスタのメモリ空間(共有メモリ30)に対す
るリードの場合を説明する。以下、1.1.所望のデー
タがストアインキャッシュ300内にキャッシングされ
ている場合と、1.2.所望のデータがストアインキャ
ッシュ300内にキャッシングされていない場合とに分
けて説明する。
図を参照して本発明の実施例の動作について詳細に説明
する。便宜的にクラスタ1の演算部10のいずれかのE
PUから共有メモリ30または31をアクセスしようと
した場合について説明する。クラスタ1の他のEPUお
よびクラスタ2のEPUの場合も全く同様である。EP
Uからの要求の種類に応じて、以下の4つの場合の基本
動作に分けて説明する。 1.自クラスタのメモリ空間(共有メモリ30)に対す
るリード(読み出し) 2.他クラスタのメモリ空間(共有メモリ31)に対す
るリード(読み出し) 3.自クラスタのメモリ空間(共有メモリ30)に対す
るライト(書き込み) 4.他クラスタのメモリ空間(共有メモリ31)に対す
るライト(書き込み) 1.自クラスタのメモリ空間(共有メモリ30)に対す
るリードの場合を説明する。以下、1.1.所望のデー
タがストアインキャッシュ300内にキャッシングされ
ている場合と、1.2.所望のデータがストアインキャ
ッシュ300内にキャッシングされていない場合とに分
けて説明する。
【0023】1.1.所望のデータがストアインキャッ
シュ300内にキャッシングされている場合、そのデー
タがEPUに返される。
シュ300内にキャッシングされている場合、そのデー
タがEPUに返される。
【0024】1.2.所望のデータがストアインキャッ
シュ300内にキャッシングされていない場合、ストア
インキャッシュ制御回路302はシステムバス40のス
テート1でシステムバス獲得要求を発行し、システムバ
ス40が獲得できたら、システムバス40のステート
3、4で「共有ブロックリードリクエスト」(以下SB
Rという)を発行する(以降、ストアインキャッシュが
システムバスにリクエストを発行する時は同様の動作を
するものとする)。このSBRに対するデータリプライ
が返って来たらこれをEPUに返すことになる。以下、
1.2.1.クラスタ1の他のストアインキャッシュが
DE状態でキャッシングしていた場合と、1.2.2.
クラスタ1の他のストアインキャッシュがCEまたはC
S状態でキャッシングしていた場合と、1.2.3.ク
ラスタ1の他のストアインキャッシュどれもがキャッシ
ングしていない場合とに分けて説明する。
シュ300内にキャッシングされていない場合、ストア
インキャッシュ制御回路302はシステムバス40のス
テート1でシステムバス獲得要求を発行し、システムバ
ス40が獲得できたら、システムバス40のステート
3、4で「共有ブロックリードリクエスト」(以下SB
Rという)を発行する(以降、ストアインキャッシュが
システムバスにリクエストを発行する時は同様の動作を
するものとする)。このSBRに対するデータリプライ
が返って来たらこれをEPUに返すことになる。以下、
1.2.1.クラスタ1の他のストアインキャッシュが
DE状態でキャッシングしていた場合と、1.2.2.
クラスタ1の他のストアインキャッシュがCEまたはC
S状態でキャッシングしていた場合と、1.2.3.ク
ラスタ1の他のストアインキャッシュどれもがキャッシ
ングしていない場合とに分けて説明する。
【0025】1.2.1.クラスタ1の他のストアイン
キャッシュがDE状態でキャッシングしていた場合、そ
のストアインキャッシュがシステムバス40上にデータ
リプライを行ない、自身をCS状態にする。ストアイン
キャッシュ300はデータを受けとり、CS状態で登録
し、EPUに返す。共有メモリ30もこのデータを受け
とり、メモリの内容を更新する。
キャッシュがDE状態でキャッシングしていた場合、そ
のストアインキャッシュがシステムバス40上にデータ
リプライを行ない、自身をCS状態にする。ストアイン
キャッシュ300はデータを受けとり、CS状態で登録
し、EPUに返す。共有メモリ30もこのデータを受け
とり、メモリの内容を更新する。
【0026】1.2.2.クラスタ1の他のストアイン
キャッシュがCEまたはCS状態でキャッシングしてい
た場合、CE状態の場合はCS状態に更新する。共有メ
モリ30がシステムバス40上にデータリプライを行な
う。ストアインキャッシュ300はこのデータを受けと
り、CS状態で登録し、EPUに返す。
キャッシュがCEまたはCS状態でキャッシングしてい
た場合、CE状態の場合はCS状態に更新する。共有メ
モリ30がシステムバス40上にデータリプライを行な
う。ストアインキャッシュ300はこのデータを受けと
り、CS状態で登録し、EPUに返す。
【0027】1.2.3.クラスタ1の他のストアイン
キャッシュどれもがキャッシングしていない場合、ディ
レクトリ100は、ディレクトリメモリ101を索引す
る。以下、1.2.3.1.アドレスがディレクトリ1
00に登録されていない場合と、1.2.3.2.アド
レスがディレクトリ100に登録されておりかつ更新フ
ラグが‘0’である場合と、1.2.3.3.アドレス
がディレクトリ100に登録されておりかつ更新フラグ
が‘1’である場合とに分けて説明する。
キャッシュどれもがキャッシングしていない場合、ディ
レクトリ100は、ディレクトリメモリ101を索引す
る。以下、1.2.3.1.アドレスがディレクトリ1
00に登録されていない場合と、1.2.3.2.アド
レスがディレクトリ100に登録されておりかつ更新フ
ラグが‘0’である場合と、1.2.3.3.アドレス
がディレクトリ100に登録されておりかつ更新フラグ
が‘1’である場合とに分けて説明する。
【0028】1.2.3.1.アドレスがディレクトリ
100に登録されていない場合は何もしない。この時は
共有メモリ30がシステムバス40上にデータリプライ
を行なう。ストアインキャッシュ300はこのデータを
受けとり、CE状態で登録し、EPUに返す。
100に登録されていない場合は何もしない。この時は
共有メモリ30がシステムバス40上にデータリプライ
を行なう。ストアインキャッシュ300はこのデータを
受けとり、CE状態で登録し、EPUに返す。
【0029】1.2.3.2.アドレスがディレクトリ
100に登録されておりかつ更新フラグが‘0’である
場合は何もしない。この時は共有メモリ30がデータリ
プライを行なう。ストアインキャッシュ300はデータ
を受けとり、CS状態で登録し、EPUに返す。
100に登録されておりかつ更新フラグが‘0’である
場合は何もしない。この時は共有メモリ30がデータリ
プライを行なう。ストアインキャッシュ300はデータ
を受けとり、CS状態で登録し、EPUに返す。
【0030】1.2.3.3.アドレスがディレクトリ
100に登録されておりかつ更新フラグが‘1’である
場合、更新フラグを‘0’にする。また、ディレクトリ
200にSBRを転送する。ディレクトリ200はシス
テムバス41上にSBRを発行する。このSBRに対
し、クラスタ2のいずれかのストアインキャッシュのう
ち、DE状態でキャッシングしているものがシステムバ
ス41上にデータリプライを行なう。データリプライを
行なったストアインキャッシュは状態をDEからCSに
更新する。このデータはディレクトリ200で受けとら
れ、ディレクトリ100に転送される。ディレクトリ1
00はシステムバス40上にデータリプライを行なう。
ストアインキャッシュ300はこのデータを受けとり、
CS状態で登録し、EPUに返す。共有メモリ30もこ
のデータを受けとり、メモリの内容を更新する。
100に登録されておりかつ更新フラグが‘1’である
場合、更新フラグを‘0’にする。また、ディレクトリ
200にSBRを転送する。ディレクトリ200はシス
テムバス41上にSBRを発行する。このSBRに対
し、クラスタ2のいずれかのストアインキャッシュのう
ち、DE状態でキャッシングしているものがシステムバ
ス41上にデータリプライを行なう。データリプライを
行なったストアインキャッシュは状態をDEからCSに
更新する。このデータはディレクトリ200で受けとら
れ、ディレクトリ100に転送される。ディレクトリ1
00はシステムバス40上にデータリプライを行なう。
ストアインキャッシュ300はこのデータを受けとり、
CS状態で登録し、EPUに返す。共有メモリ30もこ
のデータを受けとり、メモリの内容を更新する。
【0031】2.他クラスタのメモリ空間(共有メモリ
31)に対するリードの場合を説明する。以下、2.
1.所望のデータがストアインキャッシュ300内にキ
ャッシングされている場合と、2.2.所望のデータが
ストアインキャッシュ300内にキャッシングされてい
ない場合とに分けて説明する。
31)に対するリードの場合を説明する。以下、2.
1.所望のデータがストアインキャッシュ300内にキ
ャッシングされている場合と、2.2.所望のデータが
ストアインキャッシュ300内にキャッシングされてい
ない場合とに分けて説明する。
【0032】2.1.所望のデータがストアインキャッ
シュ300内にキャッシングされていればそのデータが
EPUに返される。
シュ300内にキャッシングされていればそのデータが
EPUに返される。
【0033】2.2.所望のデータがストアインキャッ
シュ300内にキャッシングされていなければ、システ
ムバス40にSBRを発行する。このSBRに対するデ
ータリプライが返って来たらこれをEPUに返すことに
なる。以下、2.2.1.クラスタ1の他のストアイン
キャッシュがDE状態でキャッシングしていた場合と、
2.2.2.クラスタ1の他のストアインキャッシュが
CS状態でキャッシングしていた場合と、2.2.3.
クラスタ1の他のストアインキャッシュのどれもがキャ
ッシングしていない場合とに分けて説明する。
シュ300内にキャッシングされていなければ、システ
ムバス40にSBRを発行する。このSBRに対するデ
ータリプライが返って来たらこれをEPUに返すことに
なる。以下、2.2.1.クラスタ1の他のストアイン
キャッシュがDE状態でキャッシングしていた場合と、
2.2.2.クラスタ1の他のストアインキャッシュが
CS状態でキャッシングしていた場合と、2.2.3.
クラスタ1の他のストアインキャッシュのどれもがキャ
ッシングしていない場合とに分けて説明する。
【0034】2.2.1.クラスタ1の他のストアイン
キャッシュがDE状態でキャッシングしていた場合、そ
のストアインキャッシュがシステムバス40上にデータ
リプライを行ない、自身をCS状態にする。ストアイン
キャッシュ300はこのデータを受けとり、CS状態で
登録し、EPUに返す。これと並行してディレクトリ1
00がデータを受けとり、ディレクトリ200に転送す
る。ディレクトリ200はこのデータのメモリブロック
アドレスに対する更新フラグを‘0’にする。また、シ
ステムバス41上に「メモリブロックライトリクエス
ト」を発行し、共有メモリ31にこのデータをライトす
る。
キャッシュがDE状態でキャッシングしていた場合、そ
のストアインキャッシュがシステムバス40上にデータ
リプライを行ない、自身をCS状態にする。ストアイン
キャッシュ300はこのデータを受けとり、CS状態で
登録し、EPUに返す。これと並行してディレクトリ1
00がデータを受けとり、ディレクトリ200に転送す
る。ディレクトリ200はこのデータのメモリブロック
アドレスに対する更新フラグを‘0’にする。また、シ
ステムバス41上に「メモリブロックライトリクエス
ト」を発行し、共有メモリ31にこのデータをライトす
る。
【0035】2.2.2.クラスタ1の他のストアイン
キャッシュがCS状態でキャッシングしていた場合、こ
の(これらの)ストアインキャッシュは何もしない。デ
ィレクトリ100はSBRをディレクトリ200に転送
する。ディレクトリ200はこのSBRをシステムバス
41上に発行する。共有メモリ31がシステムバス41
上にデータリプライを行なう。ディレクトリ200はこ
のデータを受けとり、ディレクトリ100に転送する。
ディレクトリ100はシステムバス40上にデータリプ
ライを行なう。ストアインキャッシュ300はデータを
受けとり、CS状態で登録し、EPUに返す。
キャッシュがCS状態でキャッシングしていた場合、こ
の(これらの)ストアインキャッシュは何もしない。デ
ィレクトリ100はSBRをディレクトリ200に転送
する。ディレクトリ200はこのSBRをシステムバス
41上に発行する。共有メモリ31がシステムバス41
上にデータリプライを行なう。ディレクトリ200はこ
のデータを受けとり、ディレクトリ100に転送する。
ディレクトリ100はシステムバス40上にデータリプ
ライを行なう。ストアインキャッシュ300はデータを
受けとり、CS状態で登録し、EPUに返す。
【0036】2.2.3.クラスタ1の他のストアイン
キャッシュのどれもがキャッシングしていない場合、デ
ィレクトリ100はSBRをディレクトリ200に転送
する。ディレクトリ200はこのSBRのアドレスを、
更新フラグを‘0’、有効フラグを‘1’として登録す
る。また、システムバス41上にSBRを発行する。以
下、このSBRに対する動作を2.2.3.1.クラス
タ2のストアインキャッシュいずれかがDE状態でキャ
ッシングしていた場合と、2.2.3.2.クラスタ2
のストアインキャッシュがCEまたはCS状態でキャッ
シングしていた場合と、2.2.3.3.クラスタ2の
ストアインキャッシュどれもがキャッシングしていない
場合とに分けて説明する。
キャッシュのどれもがキャッシングしていない場合、デ
ィレクトリ100はSBRをディレクトリ200に転送
する。ディレクトリ200はこのSBRのアドレスを、
更新フラグを‘0’、有効フラグを‘1’として登録す
る。また、システムバス41上にSBRを発行する。以
下、このSBRに対する動作を2.2.3.1.クラス
タ2のストアインキャッシュいずれかがDE状態でキャ
ッシングしていた場合と、2.2.3.2.クラスタ2
のストアインキャッシュがCEまたはCS状態でキャッ
シングしていた場合と、2.2.3.3.クラスタ2の
ストアインキャッシュどれもがキャッシングしていない
場合とに分けて説明する。
【0037】2.2.3.1.クラスタ2のストアイン
キャッシュいずれかがDE状態でキャッシングしていた
場合、そのストアインキャッシュがシステムバス41上
にデータリプライを行ない、自身をCS状態にする。デ
ィレクトリ200はこのデータを受けとり、ディレクト
リ100に転送する。共有メモリ31もこのデータを受
けとり、メモリの内容を更新する。ディレクトリ100
はシステムバス40上にデータリプライを行なう。スト
アインキャッシュ300はデータを受けとり、CS状態
で登録し、EPUに返す。
キャッシュいずれかがDE状態でキャッシングしていた
場合、そのストアインキャッシュがシステムバス41上
にデータリプライを行ない、自身をCS状態にする。デ
ィレクトリ200はこのデータを受けとり、ディレクト
リ100に転送する。共有メモリ31もこのデータを受
けとり、メモリの内容を更新する。ディレクトリ100
はシステムバス40上にデータリプライを行なう。スト
アインキャッシュ300はデータを受けとり、CS状態
で登録し、EPUに返す。
【0038】2.2.3.2.クラスタ2のストアイン
キャッシュがCEまたはCS状態でキャッシングしてい
た場合、CE状態の場合はCS状態に更新する。共有メ
モリ31がシステムバス41上にデータリプライを行な
う。ディレクトリ200はこのデータを受けとり、ディ
レクトリ100に転送する。ディレクトリ100はシス
テムバス40上にデータリプライを行なう。ストアイン
キャッシュ300はデータを受けとり、CS状態で登録
し、EPUに返す。
キャッシュがCEまたはCS状態でキャッシングしてい
た場合、CE状態の場合はCS状態に更新する。共有メ
モリ31がシステムバス41上にデータリプライを行な
う。ディレクトリ200はこのデータを受けとり、ディ
レクトリ100に転送する。ディレクトリ100はシス
テムバス40上にデータリプライを行なう。ストアイン
キャッシュ300はデータを受けとり、CS状態で登録
し、EPUに返す。
【0039】2.2.3.3.クラスタ2のストアイン
キャッシュどれもがキャッシングしていない場合、共有
メモリ31がシステムバス41上にデータリプライを行
なう。ディレクトリ200はこのデータを受けとり、デ
ィレクトリ100に転送する。ディレクトリ100はシ
ステムバス40上にデータリプライを行なう。ストアイ
ンキャッシュ300はデータを受けとり、CS状態で登
録し、EPUに返す。
キャッシュどれもがキャッシングしていない場合、共有
メモリ31がシステムバス41上にデータリプライを行
なう。ディレクトリ200はこのデータを受けとり、デ
ィレクトリ100に転送する。ディレクトリ100はシ
ステムバス40上にデータリプライを行なう。ストアイ
ンキャッシュ300はデータを受けとり、CS状態で登
録し、EPUに返す。
【0040】3.自クラスタのメモリ空間(共有メモリ
30)に対するライトの場合を説明する。以下、3.
1.ストアインキャッシュ300が、ライト対象のデー
タをDE状態でキャッシングしている場合と、3.2.
ストアインキャッシュ300が、ライト対象のデータを
CE状態でキャッシングしている場合と、3.3.スト
アインキャッシュ300が、ライト対象のデータをCS
状態でキャッシングしている場合と、3.4.ストアイ
ンキャッシュ300が、ライト対象のデータをキャッシ
ングしていない場合とに分けて説明する。
30)に対するライトの場合を説明する。以下、3.
1.ストアインキャッシュ300が、ライト対象のデー
タをDE状態でキャッシングしている場合と、3.2.
ストアインキャッシュ300が、ライト対象のデータを
CE状態でキャッシングしている場合と、3.3.スト
アインキャッシュ300が、ライト対象のデータをCS
状態でキャッシングしている場合と、3.4.ストアイ
ンキャッシュ300が、ライト対象のデータをキャッシ
ングしていない場合とに分けて説明する。
【0041】3.1.ストアインキャッシュ300が、
ライト対象のデータをDE状態でキャッシングしている
場合、これにライトする。
ライト対象のデータをDE状態でキャッシングしている
場合、これにライトする。
【0042】3.2.ストアインキャッシュ300が、
ライト対象のデータをCE状態でキャッシングしている
場合、これにライトし、自身をDE状態にする。
ライト対象のデータをCE状態でキャッシングしている
場合、これにライトし、自身をDE状態にする。
【0043】3.3.ストアインキャッシュ300が、
ライト対象のデータをCS状態でキャッシングしている
場合、これにライトし、DE状態にする。これと並行し
てシステムバス40上に「メモリブロック無効化リクエ
スト」(以下INVという)を発行する。クラスタ1の
他のストアインキャッシュでCS状態でキャッシングし
ているものがあれば、これをIV状態にして登録を抹消
する。ディレクトリ100に更新フラグが‘0’で登録
されている場合には、ディレクトリ100は有効フラグ
を‘0’として登録を抹消し、ディレクトリ200にI
NVを転送する。ディレクトリ200はINVをシステ
ムバス41上に発行する。クラスタ2のストアインキャ
ッシュでCS状態でキャッシングしているものがあれ
ば、これをIV状態にする。
ライト対象のデータをCS状態でキャッシングしている
場合、これにライトし、DE状態にする。これと並行し
てシステムバス40上に「メモリブロック無効化リクエ
スト」(以下INVという)を発行する。クラスタ1の
他のストアインキャッシュでCS状態でキャッシングし
ているものがあれば、これをIV状態にして登録を抹消
する。ディレクトリ100に更新フラグが‘0’で登録
されている場合には、ディレクトリ100は有効フラグ
を‘0’として登録を抹消し、ディレクトリ200にI
NVを転送する。ディレクトリ200はINVをシステ
ムバス41上に発行する。クラスタ2のストアインキャ
ッシュでCS状態でキャッシングしているものがあれ
ば、これをIV状態にする。
【0044】3.4.ストアインキャッシュ300がラ
イト対象のデータをキャッシングしていない場合、シス
テムバス40上に「排他ブロックリードリクエスト」
(以下EBRという)を発行する。以下、3.4.1.
クラスタ1の他のストアインキャッシュがDE状態でキ
ャッシングしている場合と、3.4.2.クラスタ1の
他のストアインキャッシュがCE状態でキャッシングし
ている場合と、3.4.3.クラスタ1の他のストアイ
ンキャッシュがCS状態でキャッシングしている場合
と、3.4.4.クラスタ1の他のストアインキャッシ
ュどれもがキャッシングしていない場合とに分けて説明
する。
イト対象のデータをキャッシングしていない場合、シス
テムバス40上に「排他ブロックリードリクエスト」
(以下EBRという)を発行する。以下、3.4.1.
クラスタ1の他のストアインキャッシュがDE状態でキ
ャッシングしている場合と、3.4.2.クラスタ1の
他のストアインキャッシュがCE状態でキャッシングし
ている場合と、3.4.3.クラスタ1の他のストアイ
ンキャッシュがCS状態でキャッシングしている場合
と、3.4.4.クラスタ1の他のストアインキャッシ
ュどれもがキャッシングしていない場合とに分けて説明
する。
【0045】3.4.1.クラスタ1の他のストアイン
キャッシュがDE状態でキャッシングしている場合、そ
のストアインキャッシュがシステムバス40上にデータ
リプライを行ない、自身をIV状態にする。ストアイン
キャッシュ300はこのデータを受けとり、これに対し
てライトし、DE状態で登録する。
キャッシュがDE状態でキャッシングしている場合、そ
のストアインキャッシュがシステムバス40上にデータ
リプライを行ない、自身をIV状態にする。ストアイン
キャッシュ300はこのデータを受けとり、これに対し
てライトし、DE状態で登録する。
【0046】3.4.2.クラスタ1の他のストアイン
キャッシュがCE状態でキャッシングしている場合、こ
れをIV状態にする。共有メモリ30がシステムバス4
0上にデータリプライを行なう。ストアインキャッシュ
300はデータを受けとり、これに対してライトし、D
E状態で登録する。
キャッシュがCE状態でキャッシングしている場合、こ
れをIV状態にする。共有メモリ30がシステムバス4
0上にデータリプライを行なう。ストアインキャッシュ
300はデータを受けとり、これに対してライトし、D
E状態で登録する。
【0047】3.4.3.クラスタ1の他のストアイン
キャッシュがCS状態でキャッシングしている場合、こ
れをIV状態にする。共有メモリ30がシステムバス4
0上にデータリプライを行なう。ストアインキャッシュ
300はデータを受けとり、これに対してライトし、D
E状態で登録する。また、これらと並行してディレクト
リ100はディレクトリを索引し、更新フラグが‘0’
で登録されているならば有効フラグ‘0’として登録を
抹消し、ディレクトリ200にINVを転送する。ディ
レクトリ200はシステムバス41上にINVを発行す
る。クラスタ2のストアインキャッシュでCS状態でキ
ャッシングしているものがあれば、これをIV状態にす
る。
キャッシュがCS状態でキャッシングしている場合、こ
れをIV状態にする。共有メモリ30がシステムバス4
0上にデータリプライを行なう。ストアインキャッシュ
300はデータを受けとり、これに対してライトし、D
E状態で登録する。また、これらと並行してディレクト
リ100はディレクトリを索引し、更新フラグが‘0’
で登録されているならば有効フラグ‘0’として登録を
抹消し、ディレクトリ200にINVを転送する。ディ
レクトリ200はシステムバス41上にINVを発行す
る。クラスタ2のストアインキャッシュでCS状態でキ
ャッシングしているものがあれば、これをIV状態にす
る。
【0048】3.4.4.クラスタ1の他のストアイン
キャッシュどれもがキャッシングしていない場合、ディ
レクトリ100は、ディレクトリメモリ101を索引す
る。以下、3.4.4.1.ディレクトリ100に登録
されていない場合と、3.4.4.2.ディレクトリ1
00に更新フラグが‘0’で登録されている場合と、
3.4.4.3.ディレクトリ100に更新フラグが
‘1’で登録されている場合とに分けて説明する。
キャッシュどれもがキャッシングしていない場合、ディ
レクトリ100は、ディレクトリメモリ101を索引す
る。以下、3.4.4.1.ディレクトリ100に登録
されていない場合と、3.4.4.2.ディレクトリ1
00に更新フラグが‘0’で登録されている場合と、
3.4.4.3.ディレクトリ100に更新フラグが
‘1’で登録されている場合とに分けて説明する。
【0049】3.4.4.1ディレクトリ100に登録
されていない場合、何もしない。この場合、共有メモリ
30がシステムバス40上にデータリプライを行なう。
ストアインキャッシュ300はデータを受けとり、これ
に対してライトし、DE状態で登録する。
されていない場合、何もしない。この場合、共有メモリ
30がシステムバス40上にデータリプライを行なう。
ストアインキャッシュ300はデータを受けとり、これ
に対してライトし、DE状態で登録する。
【0050】3.4.4.2.ディレクトリ100に更
新フラグが‘0’で登録されている場合、ディレクトリ
100は有効フラグを‘0’として登録を抹消し、ディ
レクトリ200にINVを転送する。ディレクトリ20
0はシステムバス41上にINVを発行する。クラスタ
2のストアインキャッシュでCS状態でキャッシングし
ているものがあれば、これをIV状態にする。これらと
並行して、共有メモリ30がシステムバス40上にデー
タリプライを行なう。ストアインキャッシュ300はこ
のデータを受けとり、これに対してライトし、DE状態
で登録する。
新フラグが‘0’で登録されている場合、ディレクトリ
100は有効フラグを‘0’として登録を抹消し、ディ
レクトリ200にINVを転送する。ディレクトリ20
0はシステムバス41上にINVを発行する。クラスタ
2のストアインキャッシュでCS状態でキャッシングし
ているものがあれば、これをIV状態にする。これらと
並行して、共有メモリ30がシステムバス40上にデー
タリプライを行なう。ストアインキャッシュ300はこ
のデータを受けとり、これに対してライトし、DE状態
で登録する。
【0051】3.4.4.3.ディレクトリ100に更
新フラグが‘1’で登録されている場合、有効フラグを
‘0’として登録を抹消し、ディレクトリ200にEB
Rを転送する。ディレクトリ200はシステムバス41
上にEBRを発行する。このEBRに対し、クラスタ2
のいずれかのストアインキャッシュのうち、DE状態で
キャッシングしているものがシステムバス41上にデー
タリプライを行なう。データリプライを行なったストア
インキャッシュは状態をDEからIVに更新する。この
データはディレクトリ200で受けとられ、ディレクト
リ100に転送される。ディレクトリ100はシステム
バス40上にデータリプライを行なう。ストアインキャ
ッシュ300はこのデータを受けとり、これに対してラ
イトし、DE状態で登録する。
新フラグが‘1’で登録されている場合、有効フラグを
‘0’として登録を抹消し、ディレクトリ200にEB
Rを転送する。ディレクトリ200はシステムバス41
上にEBRを発行する。このEBRに対し、クラスタ2
のいずれかのストアインキャッシュのうち、DE状態で
キャッシングしているものがシステムバス41上にデー
タリプライを行なう。データリプライを行なったストア
インキャッシュは状態をDEからIVに更新する。この
データはディレクトリ200で受けとられ、ディレクト
リ100に転送される。ディレクトリ100はシステム
バス40上にデータリプライを行なう。ストアインキャ
ッシュ300はこのデータを受けとり、これに対してラ
イトし、DE状態で登録する。
【0052】4.他クラスタのメモリ空間(共有メモリ
31)に対するライトの場合を説明する。以下、4.
1.ストアインキャッシュ300が、ライト対象のデー
タをDE状態でキャッシングしている場合と、4.2.
ストアインキャッシュ300が、ライト対象のデータを
CS状態でキャッシングしている場合と、4.3.スト
アインキャッシュ300がライト対象のデータをキャッ
シングしていない場合とに分けて説明する。
31)に対するライトの場合を説明する。以下、4.
1.ストアインキャッシュ300が、ライト対象のデー
タをDE状態でキャッシングしている場合と、4.2.
ストアインキャッシュ300が、ライト対象のデータを
CS状態でキャッシングしている場合と、4.3.スト
アインキャッシュ300がライト対象のデータをキャッ
シングしていない場合とに分けて説明する。
【0053】4.1.ストアインキャッシュ300が、
ライト対象のデータをDE状態でキャッシングしている
場合、これにライトする。
ライト対象のデータをDE状態でキャッシングしている
場合、これにライトする。
【0054】4.2.ストアインキャッシュ300が、
ライト対象のデータをCS状態でキャッシングしている
場合、これにライトし、DE状態にする。これと並行し
てシステムバス40上にINVを発行する。クラスタ1
の他のストアインキャッシュでCS状態でキャッシング
しているものがあれば、これをIV状態にする。ディレ
クトリ100はディレクトリ200にINVを転送す
る。ディレクトリ200は更新フラグを‘1’にし、I
NVをシステムバス41上に発行する。クラスタ2のス
トアインキャッシュでCS状態でキャッシングしている
ものがあれば、これをIV状態にする。
ライト対象のデータをCS状態でキャッシングしている
場合、これにライトし、DE状態にする。これと並行し
てシステムバス40上にINVを発行する。クラスタ1
の他のストアインキャッシュでCS状態でキャッシング
しているものがあれば、これをIV状態にする。ディレ
クトリ100はディレクトリ200にINVを転送す
る。ディレクトリ200は更新フラグを‘1’にし、I
NVをシステムバス41上に発行する。クラスタ2のス
トアインキャッシュでCS状態でキャッシングしている
ものがあれば、これをIV状態にする。
【0055】4.3.ストアインキャッシュ300がラ
イト対象のデータをキャッシングしていない場合、シス
テムバス40上にEBRを発行する。以下、4.3.
1.クラスタ1の他のストアインキャッシュがDE状態
でキャッシングしている場合、4.3.2.クラスタ1
の他のストアインキャッシュがCS状態でキャッシング
している場合、4.3.3.クラスタ1の他のストアイ
ンキャッシュどれもがキャッシングしていない場合とに
分けて説明する。
イト対象のデータをキャッシングしていない場合、シス
テムバス40上にEBRを発行する。以下、4.3.
1.クラスタ1の他のストアインキャッシュがDE状態
でキャッシングしている場合、4.3.2.クラスタ1
の他のストアインキャッシュがCS状態でキャッシング
している場合、4.3.3.クラスタ1の他のストアイ
ンキャッシュどれもがキャッシングしていない場合とに
分けて説明する。
【0056】4.3.1クラスタ1の他のストアインキ
ャッシュがDE状態でキャッシングしている場合、その
ストアインキャッシュがシステムバス40上にデータリ
プライを行ない、自身をIV状態にする。ストアインキ
ャッシュ300はこのデータを受けとり、これに対して
ライトし、DE状態で登録する。
ャッシュがDE状態でキャッシングしている場合、その
ストアインキャッシュがシステムバス40上にデータリ
プライを行ない、自身をIV状態にする。ストアインキ
ャッシュ300はこのデータを受けとり、これに対して
ライトし、DE状態で登録する。
【0057】4.3.2.クラスタ1の他のストアイン
キャッシュがCS状態でキャッシングしている場合、そ
のストアインキャッシュは、これをIV状態にする。デ
ィレクトリ100は、ディレクトリ200にEBRを転
送する。ディレクトリ200は更新フラグを‘1’にし
て、システムバス41上にEBRを発行する。クラスタ
2のストアインキャッシュでCS状態でキャッシングし
ているものがあれば、これをIV状態にする。共有メモ
リ31がシステムバス41上にデータリプライを行な
う。このデータはディレクトリ200で受けとられ、デ
ィレクトリ100に転送される。ディレクトリ100は
システムバス40上にデータリプライを行なう。ストア
インキャッシュ300はこのデータを受けとり、これに
対してライトし、DE状態で登録する。
キャッシュがCS状態でキャッシングしている場合、そ
のストアインキャッシュは、これをIV状態にする。デ
ィレクトリ100は、ディレクトリ200にEBRを転
送する。ディレクトリ200は更新フラグを‘1’にし
て、システムバス41上にEBRを発行する。クラスタ
2のストアインキャッシュでCS状態でキャッシングし
ているものがあれば、これをIV状態にする。共有メモ
リ31がシステムバス41上にデータリプライを行な
う。このデータはディレクトリ200で受けとられ、デ
ィレクトリ100に転送される。ディレクトリ100は
システムバス40上にデータリプライを行なう。ストア
インキャッシュ300はこのデータを受けとり、これに
対してライトし、DE状態で登録する。
【0058】4.3.3.クラスタ1の他のストアイン
キャッシュどれもがキャッシングしていない場合、ディ
レクトリ100は、ディレクトリ200にEBRを転送
する。ディレクトリ200は、更新フラグを‘1’、有
効フラグを‘1’として登録し、システムバス41上に
EBRを発行する。以下、このEBRに対する動作を
4.3.3.1.クラスタ2のストアインキャッシュい
ずれかがDE状態でキャッシングしている場合と、4.
3.3.2.クラスタ2のストアインキャッシュがCE
状態またはCS状態でキャッシングしている場合と、
4.3.3.3.クラスタ2のストアインキャッシュど
れもがキャッシングしていない場合とに分けて説明す
る。
キャッシュどれもがキャッシングしていない場合、ディ
レクトリ100は、ディレクトリ200にEBRを転送
する。ディレクトリ200は、更新フラグを‘1’、有
効フラグを‘1’として登録し、システムバス41上に
EBRを発行する。以下、このEBRに対する動作を
4.3.3.1.クラスタ2のストアインキャッシュい
ずれかがDE状態でキャッシングしている場合と、4.
3.3.2.クラスタ2のストアインキャッシュがCE
状態またはCS状態でキャッシングしている場合と、
4.3.3.3.クラスタ2のストアインキャッシュど
れもがキャッシングしていない場合とに分けて説明す
る。
【0059】4.3.3.1.クラスタ2のストアイン
キャッシュいずれかがDE状態でキャッシングしている
場合、そのストアインキャッシュがシステムバス41上
にデータリプライを行ない、自身をIV状態にする。こ
のデータはディレクトリ200で受けとられ、ディレク
トリ100に転送される。ディレクトリ100はシステ
ムバス40上にデータリプライを行なう。ストアインキ
ャッシュ300はこのデータを受けとり、これに対して
ライトし、DE状態で登録する。
キャッシュいずれかがDE状態でキャッシングしている
場合、そのストアインキャッシュがシステムバス41上
にデータリプライを行ない、自身をIV状態にする。こ
のデータはディレクトリ200で受けとられ、ディレク
トリ100に転送される。ディレクトリ100はシステ
ムバス40上にデータリプライを行なう。ストアインキ
ャッシュ300はこのデータを受けとり、これに対して
ライトし、DE状態で登録する。
【0060】4.3.3.2.クラスタ2のストアイン
キャッシュがCE状態またはCS状態ででキャッシング
している場合、これをIV状態にする。共有メモリ31
がシステムバス41上にデータリプライを行なう。この
データはディレクトリ200で受けとられ、ディレクト
リ100に転送される。ディレクトリ100はシステム
バス40上にデータリプライを行なう。ストアインキャ
ッシュ300はこのデータを受けとり、これに対してラ
イトし、DE状態で登録する。
キャッシュがCE状態またはCS状態ででキャッシング
している場合、これをIV状態にする。共有メモリ31
がシステムバス41上にデータリプライを行なう。この
データはディレクトリ200で受けとられ、ディレクト
リ100に転送される。ディレクトリ100はシステム
バス40上にデータリプライを行なう。ストアインキャ
ッシュ300はこのデータを受けとり、これに対してラ
イトし、DE状態で登録する。
【0061】4.3.3.3.クラスタ2のストアイン
キャッシュどれもがキャッシングしていない場合、共有
メモリ31がシステムバス41上にデータリプライを行
なう。このデータはディレクトリ200で受けとられ、
ディレクトリ100に転送される。ディレクトリ100
はシステムバス40上にデータリプライを行なう。スト
アインキャッシュ300はこのデータを受けとり、これ
に対してライトし、DE状態で登録する。
キャッシュどれもがキャッシングしていない場合、共有
メモリ31がシステムバス41上にデータリプライを行
なう。このデータはディレクトリ200で受けとられ、
ディレクトリ100に転送される。ディレクトリ100
はシステムバス40上にデータリプライを行なう。スト
アインキャッシュ300はこのデータを受けとり、これ
に対してライトし、DE状態で登録する。
【0062】次にアドレス一致検出と、キャンセルとの
動作を図1、図2、図3を参照して詳細に説明する。
動作を図1、図2、図3を参照して詳細に説明する。
【0063】システムバス40にリクエストが発行され
た時(システムバス40のステート3、4のタイミン
グ)、ディレクトリ200からリクエストが転送されて
来ていなければ何もしない。
た時(システムバス40のステート3、4のタイミン
グ)、ディレクトリ200からリクエストが転送されて
来ていなければ何もしない。
【0064】ディレクトリ200がディレクトリ100
にリクエストを転送する時には、システムバス41のス
テート5、1のタイミングで行なう。このリクエストは
ディレクトリ100によりシステムバス40のステート
4、5のタイミングで受けとられる。これと並行して、
ディレクトリ100はシステムバス40上のリクエスト
をシステムバス40のステート4、5のタイミングで受
けとる。したがって、アドレス一致検出回路103は、
システムバス40からのリクエストのアドレスと、ディ
レクトリ200からのリクエストのアドレスを、システ
ムバス40のステート5のタイミングで比較することが
できる。もし一致している時にはキャンセル信号生成回
路104に通知する。キャンセル信号生成回路104は
アドレス一致検出回路103からの指示により、システ
ムバス40上に「キャンセル」を発行する(システムバ
ス40の次の周期のステート1のタイミング)。
にリクエストを転送する時には、システムバス41のス
テート5、1のタイミングで行なう。このリクエストは
ディレクトリ100によりシステムバス40のステート
4、5のタイミングで受けとられる。これと並行して、
ディレクトリ100はシステムバス40上のリクエスト
をシステムバス40のステート4、5のタイミングで受
けとる。したがって、アドレス一致検出回路103は、
システムバス40からのリクエストのアドレスと、ディ
レクトリ200からのリクエストのアドレスを、システ
ムバス40のステート5のタイミングで比較することが
できる。もし一致している時にはキャンセル信号生成回
路104に通知する。キャンセル信号生成回路104は
アドレス一致検出回路103からの指示により、システ
ムバス40上に「キャンセル」を発行する(システムバ
ス40の次の周期のステート1のタイミング)。
【0065】システムバス40にリクエストを発行した
ストアインキャッシュが、たとえばストアインキャッシ
ュ300だったとする(図2参照)と、システムバス4
0上の「キャンセル」は再試行指示回路303により検
出され、再試行指示回路303はストアインキャッシュ
制御回路302に、そのリクエストを再試行するよう指
示する。ストアインキャッシュ制御回路302は、内部
でそのリクエストを無効化し、再度同じリクエストをシ
ステムバスの次の周期以降で発行する。以上、システム
バス40上に一度発行されたリクエストがキャンセルさ
れる場合を説明したが、ディレクトリ200内でアドレ
ス一致が検出された場合には、システムバス41上のリ
クエストが同様にキャンセルされることになる。
ストアインキャッシュが、たとえばストアインキャッシ
ュ300だったとする(図2参照)と、システムバス4
0上の「キャンセル」は再試行指示回路303により検
出され、再試行指示回路303はストアインキャッシュ
制御回路302に、そのリクエストを再試行するよう指
示する。ストアインキャッシュ制御回路302は、内部
でそのリクエストを無効化し、再度同じリクエストをシ
ステムバスの次の周期以降で発行する。以上、システム
バス40上に一度発行されたリクエストがキャンセルさ
れる場合を説明したが、ディレクトリ200内でアドレ
ス一致が検出された場合には、システムバス41上のリ
クエストが同様にキャンセルされることになる。
【0066】システムバス40および41は互いに2.
5サイクルずらして制御されているので、信号線105
と106上をリクエストが同時に通過することはなく、
アドレス一致検出回路103(またはクラスタ2のアド
レス一致検出回路)で必ずアドレス一致の検出が可能で
ある。すなわち、アドレス一致検出のタイミングおよび
場所は、「システムバス40のステート5のタイミング
でディレクトリ100内」→「システムバス41のステ
ート5のタイミングでディレクトリ200内」→「シス
テムバス40のステート5のタイミングディレクトリ1
00内」・・・と、クラスタ1と2で交互に行なわれる
ことになる。したがって、2つのクラスタからのリクエ
ストのアドレスを保持しておく等特別なハードウェア機
構を必要としない。また、システムバス40上に発行さ
れたリクエストでクラスタ2に転送されるものは、アド
レス一致検出回路103でアドレス一致が検出されない
限り待たされずにクラスタ2に転送され、クラスタ2の
システムバス41が獲得できしだい発行できる。また、
システムバス41上に発行されたリクエストでクラスタ
1に転送されるものについても同様である。
5サイクルずらして制御されているので、信号線105
と106上をリクエストが同時に通過することはなく、
アドレス一致検出回路103(またはクラスタ2のアド
レス一致検出回路)で必ずアドレス一致の検出が可能で
ある。すなわち、アドレス一致検出のタイミングおよび
場所は、「システムバス40のステート5のタイミング
でディレクトリ100内」→「システムバス41のステ
ート5のタイミングでディレクトリ200内」→「シス
テムバス40のステート5のタイミングディレクトリ1
00内」・・・と、クラスタ1と2で交互に行なわれる
ことになる。したがって、2つのクラスタからのリクエ
ストのアドレスを保持しておく等特別なハードウェア機
構を必要としない。また、システムバス40上に発行さ
れたリクエストでクラスタ2に転送されるものは、アド
レス一致検出回路103でアドレス一致が検出されない
限り待たされずにクラスタ2に転送され、クラスタ2の
システムバス41が獲得できしだい発行できる。また、
システムバス41上に発行されたリクエストでクラスタ
1に転送されるものについても同様である。
【0067】なお、EPUの台数、ストアインキャッシ
ュの個数等本実施例以外の構成でも本発明の原理を用い
れば、同様に実現できることはいうまでもない。
ュの個数等本実施例以外の構成でも本発明の原理を用い
れば、同様に実現できることはいうまでもない。
【0068】
【発明の効果】以上説明したように、本発明による共有
メモリ型マルチプロセッサシステムは、クラスタ間のス
トアインキャッシュのコヒーレンシの保証ができるとい
う効果がある。また、2つのクラスタを接続するのにク
ロスバを用いない構成とすることによりハードウェア量
を少なくできるという効果がある。またさらに、クラス
タ内、クラスタ間を問わず複数のストアインキャッシュ
間で同一メモリブロックを共有できるように制御するこ
とにより、ストアインキャッシュのヒット率が向上しシ
ステム全体の性能向上の達成が図れるという効果があ
る。
メモリ型マルチプロセッサシステムは、クラスタ間のス
トアインキャッシュのコヒーレンシの保証ができるとい
う効果がある。また、2つのクラスタを接続するのにク
ロスバを用いない構成とすることによりハードウェア量
を少なくできるという効果がある。またさらに、クラス
タ内、クラスタ間を問わず複数のストアインキャッシュ
間で同一メモリブロックを共有できるように制御するこ
とにより、ストアインキャッシュのヒット率が向上しシ
ステム全体の性能向上の達成が図れるという効果があ
る。
【図1】本発明の一実施例のブロック図である。
【図2】図1に用いたストアインキャッシュの詳細ブロ
ック図である。
ック図である。
【図3】図1に用いたディレクトリの詳細ブロック図で
ある。
ある。
【図4】図3に用いたディレクトリメモリのフォーマッ
ト図である。
ト図である。
1、2 クラスタ 10〜17 演算部 20、21 同期制御回路 30、31 共有メモリ 40、41 システムバス 100、200 ディレクトリ 101 ディレクトリメモリ 102 ディレクトリ制御回路 103 アドレス一致検出回路 104 キャンセル信号生成回路 105、106 信号線 300〜370 ストアインキャッシュ 301 ストアインキャッシュメモリ 302 ストアインキャッシュ制御回路 303 再試行指示回路
Claims (2)
- 【請求項1】 2つのクラスタを有し、各クラスタが、
複数のプロセッサと前記プロセッサの全てに接続された
1つのストアインキャッシュとを有する複数の処理装置
と、共有メモリと、前記複数の処理装置と前記共有メモ
リとを接続するシステムバスとを備えた共有メモリ型マ
ルチプロセッサにおいて、前記クラスタの各々が、
(a)前記システムバス間の同期を制御する同期制御手
段と、(b)自クラスタの前記システムバスと接続され
かつ他クラスタのディレクトリと相互に接続され他クラ
スタのストアインキャッシュに保持された自クラスタ内
共有メモリのメモリブロックアドレスを貯蔵するディレ
クトリと、(c)自クラスタの前記処理装置から前記共
有メモリへのメモリアクセス要求のアドレスと他クラス
タの前記ディレクトリからのアドレスとを受け取りそれ
らのアドレスの一致を検出するアドレス一致検出手段
と、(d)前記アドレス一致検出手段の結果に応じて自
クラスタの前記メモリアクセス要求をキャンセルするキ
ャンセル信号を発行するキャンセル手段と、(e)前記
ストアインキャッシュに設けられキャンセル信号を受け
取り自クラスタの前記メモリアクセス要求を無効化し再
試行する再試行手段と、を具備したことを特徴とする共
有メモリ型マルチプロセッサシステム。 - 【請求項2】 前記ディレクトリ内のアドレスの各々に
対応して前記ディレクトリ内に更新フラグを設け、他ク
ラスタのストアインキャッシュに保持された自クラスタ
の共有メモリのメモリブロックが他クラスタのプロセッ
サによる書き込みで更新されている場合に、自クラスタ
のディレクトリに貯蔵されている前記メモリブロックア
ドレスに対応する前記更新フラグをセットするようにし
たことを特徴とする請求の範囲の第1項に記載の共有メ
モリ型マルチプロセッサシステム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7102532A JP2786124B2 (ja) | 1995-04-26 | 1995-04-26 | 共有メモリ型マルチプロセッサシステム |
US08/635,171 US5860108A (en) | 1995-04-26 | 1996-04-25 | Method and clustered multi-processor system for controlling a clock phase for clusters |
FR9605305A FR2733614B1 (fr) | 1995-04-26 | 1996-04-26 | Systeme multiprocesseur en groupes et procede pour controler une phase d'horloge de groupes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7102532A JP2786124B2 (ja) | 1995-04-26 | 1995-04-26 | 共有メモリ型マルチプロセッサシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08297642A JPH08297642A (ja) | 1996-11-12 |
JP2786124B2 true JP2786124B2 (ja) | 1998-08-13 |
Family
ID=14329912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7102532A Expired - Fee Related JP2786124B2 (ja) | 1995-04-26 | 1995-04-26 | 共有メモリ型マルチプロセッサシステム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2786124B2 (ja) |
FR (1) | FR2733614B1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3288261B2 (ja) | 1997-06-19 | 2002-06-04 | 甲府日本電気株式会社 | キャッシュシステム |
US6269428B1 (en) * | 1999-02-26 | 2001-07-31 | International Business Machines Corporation | Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system |
JP2001167077A (ja) | 1999-12-09 | 2001-06-22 | Nec Kofu Ltd | ネットワークシステムにおけるデータアクセス方法、ネットワークシステムおよび記録媒体 |
US6799217B2 (en) * | 2001-06-04 | 2004-09-28 | Fujitsu Limited | Shared memory multiprocessor expansion port for multi-node systems |
JP6428521B2 (ja) * | 2015-07-23 | 2018-11-28 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05100952A (ja) * | 1991-10-07 | 1993-04-23 | Fuji Xerox Co Ltd | データ処理装置 |
EP0553743A1 (en) * | 1992-01-31 | 1993-08-04 | Motorola, Inc. | A cache controller |
US5394555A (en) * | 1992-12-23 | 1995-02-28 | Bull Hn Information Systems Inc. | Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory |
-
1995
- 1995-04-26 JP JP7102532A patent/JP2786124B2/ja not_active Expired - Fee Related
-
1996
- 1996-04-26 FR FR9605305A patent/FR2733614B1/fr not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
FR2733614A1 (fr) | 1996-10-31 |
JPH08297642A (ja) | 1996-11-12 |
FR2733614B1 (fr) | 1998-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5155824A (en) | System for transferring selected data words between main memory and cache with multiple data words and multiple dirty bits for each address | |
US5878268A (en) | Multiprocessing system configured to store coherency state within multiple subnodes of a processing node | |
US5680576A (en) | Directory-based coherence protocol allowing efficient dropping of clean-exclusive data | |
US20020087804A1 (en) | Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture | |
US20020053004A1 (en) | Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links | |
US20040215901A1 (en) | Method and mechanism to use a cache to translate from a virtual bus to a physical bus | |
JP3629511B2 (ja) | 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム | |
JPH11506852A (ja) | 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減 | |
US6751705B1 (en) | Cache line converter | |
JPH1031625A (ja) | マルチ・プロセッサ・システムにおける改良されたコピーバック性能のためのライトバック・バッファ | |
US5590310A (en) | Method and structure for data integrity in a multiple level cache system | |
US7024520B2 (en) | System and method enabling efficient cache line reuse in a computer system | |
EP0489583A2 (en) | Multiple processor cache control system | |
KR100322223B1 (ko) | 대기행렬및스누프테이블을갖는메모리제어기 | |
WO1997004392A1 (en) | Shared cache memory device | |
JP2786124B2 (ja) | 共有メモリ型マルチプロセッサシステム | |
US5978886A (en) | Method and apparatus for duplicating tag systems to maintain addresses of CPU data stored in write buffers external to a cache | |
JP3732397B2 (ja) | キャッシュシステム | |
JP3626609B2 (ja) | マルチプロセッサシステム | |
JPH0532776B2 (ja) | ||
JP3733604B2 (ja) | キャッシュメモリ | |
US5907853A (en) | Method and apparatus for maintaining duplicate cache tags with selectable width | |
JP2852247B2 (ja) | 共有メモリ型マルチプロセッサシステム | |
JP3293872B2 (ja) | キャッシュ一致化方式 | |
JPS63240651A (ja) | キヤツシユメモリ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 19980428 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090529 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100529 Year of fee payment: 12 |
|
LAPS | Cancellation because of no payment of annual fees |