JP2852247B2 - 共有メモリ型マルチプロセッサシステム - Google Patents
共有メモリ型マルチプロセッサシステムInfo
- Publication number
- JP2852247B2 JP2852247B2 JP8157309A JP15730996A JP2852247B2 JP 2852247 B2 JP2852247 B2 JP 2852247B2 JP 8157309 A JP8157309 A JP 8157309A JP 15730996 A JP15730996 A JP 15730996A JP 2852247 B2 JP2852247 B2 JP 2852247B2
- Authority
- JP
- Japan
- Prior art keywords
- directory
- store
- cache
- memory
- shared memory
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
【0001】
【発明の属する技術分野】本発明は共有メモリ型マルチ
プロセッサシステムに関し、特にディレクトリ方式の共
有メモリ型マルチプロセッサシステムに関するものであ
る。
プロセッサシステムに関し、特にディレクトリ方式の共
有メモリ型マルチプロセッサシステムに関するものであ
る。
【0002】
【従来の技術】一つのシステムバスに、複数のストアイ
ンキャッシュ及び共有メモリが接続されているマルチプ
ロセッサシステム(一般に、クラスタと呼ばれる)を、
ディレクトリ方式で複数接続した共有メモリ型マルチプ
ロセッサシステムは既知の技術で実現されている。例え
ば、特開平2−12361号公報記載の階層化バスによ
る並列計算機システム、特開平4−291446号公報
記載のスケーラブルメモリ帯域を備えた緊密結合型多重
プロセッサなどがある。
ンキャッシュ及び共有メモリが接続されているマルチプ
ロセッサシステム(一般に、クラスタと呼ばれる)を、
ディレクトリ方式で複数接続した共有メモリ型マルチプ
ロセッサシステムは既知の技術で実現されている。例え
ば、特開平2−12361号公報記載の階層化バスによ
る並列計算機システム、特開平4−291446号公報
記載のスケーラブルメモリ帯域を備えた緊密結合型多重
プロセッサなどがある。
【0003】しかし、特開平2−12361号公報の技
術では、クラスタ間のストアインキャッシュのコヒーレ
ンシの保証の方法が開示されていない。また、特開平4
−291446号公報の技術ではクラスタ相互を接続す
るのにクロスバ(これに接続されている複数のクラスタ
のうち、任意の2つのクラスタ間の通信を可能にするス
イッチ)を用いており、更にストアインキャッシュのコ
ヒーレンシを保証するために、クラスタ内、クラスタ間
を問わず複数のストアインキャッシュ間で同一メモリブ
ロックを同時にキャッシング(キャッシュに貯蔵するこ
とをキャッシングするという。以下この用語を使用す
る。)しないように制御している。
術では、クラスタ間のストアインキャッシュのコヒーレ
ンシの保証の方法が開示されていない。また、特開平4
−291446号公報の技術ではクラスタ相互を接続す
るのにクロスバ(これに接続されている複数のクラスタ
のうち、任意の2つのクラスタ間の通信を可能にするス
イッチ)を用いており、更にストアインキャッシュのコ
ヒーレンシを保証するために、クラスタ内、クラスタ間
を問わず複数のストアインキャッシュ間で同一メモリブ
ロックを同時にキャッシング(キャッシュに貯蔵するこ
とをキャッシングするという。以下この用語を使用す
る。)しないように制御している。
【0004】
【発明が解決しようとする課題】特開平2−12361
号公報記載の構成では、クラスタ間のストアインキャッ
シュのコヒーレンシの保証がとれないという欠点があ
る。また、特開平4−291446号公報記載の構成で
はクラスタ単体だけでも動作することができるシステム
を2つ接続した構成とする場合において、バス方式でな
くクロスバ方式を採用しているために、ハードウェア量
の増大を招くという欠点がある。更に、ストアインキャ
ッシュのコヒーレンシの保証のために、共有メモリのい
ずれのメモリブロックも同時期にはどれか1個のストア
インキャッシュにしかキャッシングできないように制御
される。このため、ストアインキャッシュでのヒット率
が低下し、システム全体の性能が低下するという欠点が
ある。
号公報記載の構成では、クラスタ間のストアインキャッ
シュのコヒーレンシの保証がとれないという欠点があ
る。また、特開平4−291446号公報記載の構成で
はクラスタ単体だけでも動作することができるシステム
を2つ接続した構成とする場合において、バス方式でな
くクロスバ方式を採用しているために、ハードウェア量
の増大を招くという欠点がある。更に、ストアインキャ
ッシュのコヒーレンシの保証のために、共有メモリのい
ずれのメモリブロックも同時期にはどれか1個のストア
インキャッシュにしかキャッシングできないように制御
される。このため、ストアインキャッシュでのヒット率
が低下し、システム全体の性能が低下するという欠点が
ある。
【0005】そこで、本願出願人は、このような欠点を
解消した共有メモリ型マルチプロセッサシステムを特願
平7−102532号として出願している。このマルチ
プロセッサシステムにおいては、クラスタ内、クラスタ
間を問わず複数のストアインキャッシュ間で同一メモリ
ブロックを共有できるように制御するため、ストアイン
キャッシュのヒット率を向上でき、システム全体の性能
を向上することができる。
解消した共有メモリ型マルチプロセッサシステムを特願
平7−102532号として出願している。このマルチ
プロセッサシステムにおいては、クラスタ内、クラスタ
間を問わず複数のストアインキャッシュ間で同一メモリ
ブロックを共有できるように制御するため、ストアイン
キャッシュのヒット率を向上でき、システム全体の性能
を向上することができる。
【0006】しかしながら、上述した先願のマルチプロ
セッサシステムでは、他クラスタのストアインキャッシ
ュに保持された自クラスタ内の共有メモリのメモリブロ
ックアドレスをディレクトリ方式でディレクトリメモリ
に登録しているため、自クラスタ内の共有メモリブロッ
クアドレスのすべてをディレクトリに貯蔵しなければな
らない。そのため、ハードウェア量が大きくなり、また
共有メモリの容量を変化させたとき、それぞれに対応し
たディレクトリメモリを用意しなければならなかった。
セッサシステムでは、他クラスタのストアインキャッシ
ュに保持された自クラスタ内の共有メモリのメモリブロ
ックアドレスをディレクトリ方式でディレクトリメモリ
に登録しているため、自クラスタ内の共有メモリブロッ
クアドレスのすべてをディレクトリに貯蔵しなければな
らない。そのため、ハードウェア量が大きくなり、また
共有メモリの容量を変化させたとき、それぞれに対応し
たディレクトリメモリを用意しなければならなかった。
【0007】そこで、本発明は、上記先願を更に改良
し、ハードウェア量を著しく低減することが可能な共有
メモリ型マルチプロセッサシステムを提供することを目
的としたものである。
し、ハードウェア量を著しく低減することが可能な共有
メモリ型マルチプロセッサシステムを提供することを目
的としたものである。
【0008】
【課題を解決するための手段】本発明は、上記目的を達
成するため、各々複数のプロセッサに接続されたストア
インキャッシュを有する複数の処理装置と、前記複数の
処理装置とシステムバスで接続された共有メモリとを備
えた2つのクラスタを有する共有メモリ型マルチプロセ
ッサシステムにおいて、他クラスタのストアインキャッ
シュに保持された自クラスタ内の共有メモリのブロック
アドレスのキーアドレスを登録するためのディレクトリ
メモリと、前記ディレクトリメモリを検索し、前記共有
メモリへのメモリアクセスリクエストのアドレスがキャ
ッシュヒットするか否かを判定する手段とを有すること
を特徴としている。
成するため、各々複数のプロセッサに接続されたストア
インキャッシュを有する複数の処理装置と、前記複数の
処理装置とシステムバスで接続された共有メモリとを備
えた2つのクラスタを有する共有メモリ型マルチプロセ
ッサシステムにおいて、他クラスタのストアインキャッ
シュに保持された自クラスタ内の共有メモリのブロック
アドレスのキーアドレスを登録するためのディレクトリ
メモリと、前記ディレクトリメモリを検索し、前記共有
メモリへのメモリアクセスリクエストのアドレスがキャ
ッシュヒットするか否かを判定する手段とを有すること
を特徴としている。
【0009】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照して詳細に説明する。図1は本発明の一実
施形態を示したブロック図である。図1において、20
0及び201は各々クラスタである。クラスタ200
は、4つの処理装置230〜233とこれにシステムバ
ス250で接続された共有メモリ240、ディレクトリ
260からなっている。処理装置230〜233は、そ
れぞれ4つのプロセッサ(以下、EPUという)210
〜213とこの4つのEPUに各々接続されたストアイ
ンキャッシュ220〜223から構成されている。
て図面を参照して詳細に説明する。図1は本発明の一実
施形態を示したブロック図である。図1において、20
0及び201は各々クラスタである。クラスタ200
は、4つの処理装置230〜233とこれにシステムバ
ス250で接続された共有メモリ240、ディレクトリ
260からなっている。処理装置230〜233は、そ
れぞれ4つのプロセッサ(以下、EPUという)210
〜213とこの4つのEPUに各々接続されたストアイ
ンキャッシュ220〜223から構成されている。
【0010】また、他方のクラスタ201も全く同様の
構成であり、4つの処理装置234〜237とこれにシ
ステムバス251で接続された共有メモリ241、ディ
レクトリ261からなっている。処理装置234〜23
7は、それぞれ4つのEPU214〜217とこの4つ
のEPUに各々接続されたストアインキャッシュ224
〜227から構成されている。
構成であり、4つの処理装置234〜237とこれにシ
ステムバス251で接続された共有メモリ241、ディ
レクトリ261からなっている。処理装置234〜23
7は、それぞれ4つのEPU214〜217とこの4つ
のEPUに各々接続されたストアインキャッシュ224
〜227から構成されている。
【0011】図2は図1のクラスタ201内のディレク
トリ261を詳細に示したブロック図である。なお、デ
ィレクトリ260についてもディレクトリ261と全く
同じ構成である。図2において、100はディレクトリ
メモリ271を制御するディレクトリメモリ制御回路で
あり、他クラスタのディレクトリ260から自クラスタ
内の共有メモリ241へのメモリアクセスリクエスト、
自クラスタ内のシステムバス251から自クラスタ内の
共有メモリ241へのメモリアクセスリクエストなどの
リクエストコードとアドレスを受け付け、ディレクトリ
メモリ271の制御を行う。
トリ261を詳細に示したブロック図である。なお、デ
ィレクトリ260についてもディレクトリ261と全く
同じ構成である。図2において、100はディレクトリ
メモリ271を制御するディレクトリメモリ制御回路で
あり、他クラスタのディレクトリ260から自クラスタ
内の共有メモリ241へのメモリアクセスリクエスト、
自クラスタ内のシステムバス251から自クラスタ内の
共有メモリ241へのメモリアクセスリクエストなどの
リクエストコードとアドレスを受け付け、ディレクトリ
メモリ271の制御を行う。
【0012】図3にディレクトリメモリ271のフォー
マットを示している。ディレクトリメモリ271は、他
クラスタのストアインキャッシュ220〜223に保持
された自クラスタ内の共有メモリ241のメモリブロッ
クのキーアドレス300、そのアドレスが有効であるこ
とを示す有効ビット301、そのアドレスのメモリブロ
ックが他クラスタのEPU210〜213による書き込
みで更新されていることを示す更新ビット302を格納
する複数のコンパートメントからなっていて、各々のコ
ンパートメントにキーアドレス300、有効ビット30
1、更新ビット302が格納されている。
マットを示している。ディレクトリメモリ271は、他
クラスタのストアインキャッシュ220〜223に保持
された自クラスタ内の共有メモリ241のメモリブロッ
クのキーアドレス300、そのアドレスが有効であるこ
とを示す有効ビット301、そのアドレスのメモリブロ
ックが他クラスタのEPU210〜213による書き込
みで更新されていることを示す更新ビット302を格納
する複数のコンパートメントからなっていて、各々のコ
ンパートメントにキーアドレス300、有効ビット30
1、更新ビット302が格納されている。
【0013】102はヒット・ステータス判定回路であ
る。ヒット・ステータス判定回路102は、ディレクト
リメモリ271から読み出されたアドレスを検索し、メ
モリアクセスリクエストのアドレスがキャッシュヒット
するか否かを判定する。また詳しく後述するようにディ
レクトリメモリ271のキーアドレスの各々に付加され
ている有効ビットと更新ビットをもとにステータス判定
を行う。
る。ヒット・ステータス判定回路102は、ディレクト
リメモリ271から読み出されたアドレスを検索し、メ
モリアクセスリクエストのアドレスがキャッシュヒット
するか否かを判定する。また詳しく後述するようにディ
レクトリメモリ271のキーアドレスの各々に付加され
ている有効ビットと更新ビットをもとにステータス判定
を行う。
【0014】103はリクエスト差し替え回路であり、
ヒット・ステータス判定回路102の判定結果に基づい
てリクエストをアクセスしようとするメモリブロックの
ステータスに適したリクエストに差し替え、システムバ
ス251上またはディレクトリ260へリクエストを出
力する。104は追い出し制御回路であり、ヒット・ス
テータス判定回路102でキャッシュミスヒットと判定
された場合、ステータス判定結果に基づいてメモリアク
セスリクエストのアドレスを新たにディレクトリ271
に登録するために、既にディレクトリメモリ271に登
録されている同一セットアドレスのうちのいずれかを追
い出すように制御する。
ヒット・ステータス判定回路102の判定結果に基づい
てリクエストをアクセスしようとするメモリブロックの
ステータスに適したリクエストに差し替え、システムバ
ス251上またはディレクトリ260へリクエストを出
力する。104は追い出し制御回路であり、ヒット・ス
テータス判定回路102でキャッシュミスヒットと判定
された場合、ステータス判定結果に基づいてメモリアク
セスリクエストのアドレスを新たにディレクトリ271
に登録するために、既にディレクトリメモリ271に登
録されている同一セットアドレスのうちのいずれかを追
い出すように制御する。
【0015】なお、本実施形態に用いるストアインキャ
ッシュにキャッシングされるメモリブロックのとりうる
状態を表1に示している。
ッシュにキャッシングされるメモリブロックのとりうる
状態を表1に示している。
【0016】
【表1】 次に、図1を参照して本実施形態の基本となる動作につ
いて説明する。便宜的にクラスタ200の処理装置23
0のいずれかのEPUから共有メモリ240、または2
41をアクセスしようとした場合の動作について説明す
る。クラスタ200の他のEPU、及びクラスタ201
のEPUの場合も全く同様である。EPUからのリクエ
ストの種類に応じて、以下の4つの場合の基本動作に分
けて説明する。 (1)自クラスタのメモリ空間(共有メモリ240)に
対するリード (2)他クラスタのメモリ空間(共有メモリ241)に
対するリード (3)自クラスタのメモリ空間(共有メモリ240)に
対するライト (4)他クラスタのメモリ空間(共有メモリ241)に
対するライト まず、(1)の自クラスタのメモリ空間(共有メモリ2
40)に対するリードの場合の動作を説明する。以下、
1.1.所望のデータがストアインキャッシュ220内
にキャッシングされている場合と、1.2.所望のデー
タがストアインキャッシュ220内にキャッシングされ
ていない場合とに分けて説明する。
いて説明する。便宜的にクラスタ200の処理装置23
0のいずれかのEPUから共有メモリ240、または2
41をアクセスしようとした場合の動作について説明す
る。クラスタ200の他のEPU、及びクラスタ201
のEPUの場合も全く同様である。EPUからのリクエ
ストの種類に応じて、以下の4つの場合の基本動作に分
けて説明する。 (1)自クラスタのメモリ空間(共有メモリ240)に
対するリード (2)他クラスタのメモリ空間(共有メモリ241)に
対するリード (3)自クラスタのメモリ空間(共有メモリ240)に
対するライト (4)他クラスタのメモリ空間(共有メモリ241)に
対するライト まず、(1)の自クラスタのメモリ空間(共有メモリ2
40)に対するリードの場合の動作を説明する。以下、
1.1.所望のデータがストアインキャッシュ220内
にキャッシングされている場合と、1.2.所望のデー
タがストアインキャッシュ220内にキャッシングされ
ていない場合とに分けて説明する。
【0017】1.1.所望のデータがストアインキャッ
シュ220内にキャッシングされている場合、そのデー
タがEPUに返される。
シュ220内にキャッシングされている場合、そのデー
タがEPUに返される。
【0018】1.2.所望のデータがストアインキャッ
シュ220内にキャッシングされていない場合、ストア
インキャッシュ220はシステムバス250に対して共
有ブロックリードリクエスト(以下SBRという)を発
行する。このSBRに対するデータリプライが返ってき
たらこれをEPUに返すことになる。以下、1.2.
1.クラスタ200の他のストアインキャッシュがDE
状態でキャッシングしていた場合と、1.2.2.クラ
スタ200の他のストアインキャッシュがCE、または
CS状態でキャッシングしていた場合と、1.2.3.
クラスタ200の他のストアインキャッシュのどれもが
キャッシングしていない場合とに分けて説明する。
シュ220内にキャッシングされていない場合、ストア
インキャッシュ220はシステムバス250に対して共
有ブロックリードリクエスト(以下SBRという)を発
行する。このSBRに対するデータリプライが返ってき
たらこれをEPUに返すことになる。以下、1.2.
1.クラスタ200の他のストアインキャッシュがDE
状態でキャッシングしていた場合と、1.2.2.クラ
スタ200の他のストアインキャッシュがCE、または
CS状態でキャッシングしていた場合と、1.2.3.
クラスタ200の他のストアインキャッシュのどれもが
キャッシングしていない場合とに分けて説明する。
【0019】1.2.1.クラスタ200の他のストア
インキャッシュがDE状態でキャッシングしていた場
合、そのストアインキャッシュがシステムバス250上
にデータリプライを行い、自身をCS状態にする。スト
アインキャッシュ220はデータを受け取り、CS状態
で登録し、EPUに返す。共有メモリ240もこのデー
タを受け取り、メモリの内容を更新する。
インキャッシュがDE状態でキャッシングしていた場
合、そのストアインキャッシュがシステムバス250上
にデータリプライを行い、自身をCS状態にする。スト
アインキャッシュ220はデータを受け取り、CS状態
で登録し、EPUに返す。共有メモリ240もこのデー
タを受け取り、メモリの内容を更新する。
【0020】1.2.2.クラスタ200の他のストア
インキャッシュがCEまたはCS状態でキャッシングし
ていた場合、CE状態のときはCS状態に更新する。共
有メモリ240がシステムバス250上にデータリプラ
イを行う。ストアインキャッシュ220はこのデータを
受け取り、CS状態で登録し、EPUに返す。
インキャッシュがCEまたはCS状態でキャッシングし
ていた場合、CE状態のときはCS状態に更新する。共
有メモリ240がシステムバス250上にデータリプラ
イを行う。ストアインキャッシュ220はこのデータを
受け取り、CS状態で登録し、EPUに返す。
【0021】1.2.3.クラスタ200の他のストア
インキャッシュのどれもがキャッシングしていない場
合、ディレクトリ260はディレクトリメモリ270を
検索する。以下、1.2.3.1.アドレスがディレク
トリメモリ270に登録されていない場合と、1.2.
3.2.アドレスがディレクトリメモリ270に登録さ
れており、かつ更新ビットが“0”である場合と、1.
2.3.3.アドレスがディレクトリメモリ270に登
録されており、更新ビットが“1”である場合とに分け
て説明する。
インキャッシュのどれもがキャッシングしていない場
合、ディレクトリ260はディレクトリメモリ270を
検索する。以下、1.2.3.1.アドレスがディレク
トリメモリ270に登録されていない場合と、1.2.
3.2.アドレスがディレクトリメモリ270に登録さ
れており、かつ更新ビットが“0”である場合と、1.
2.3.3.アドレスがディレクトリメモリ270に登
録されており、更新ビットが“1”である場合とに分け
て説明する。
【0022】1.2.3.1.アドレスがディレクトリ
メモリ270に登録されていない場合は何もしない。こ
の時は共有メモリ240がシステムバス250上にデー
タリプライを行う。ストアインキャッシュ220はこの
データを受け取り、CE状態で登録し、EPUに返す。
メモリ270に登録されていない場合は何もしない。こ
の時は共有メモリ240がシステムバス250上にデー
タリプライを行う。ストアインキャッシュ220はこの
データを受け取り、CE状態で登録し、EPUに返す。
【0023】1.2.3.2.アドレスがディレクトリ
メモリ270に登録されており、かつ更新ビットが
“0”の場合は何もしない。この時は共有メモリ240
がデータリプライを行い、ストアインキャッシュ220
はデータを受け取り、CS状態で登録し、EPUに返
す。
メモリ270に登録されており、かつ更新ビットが
“0”の場合は何もしない。この時は共有メモリ240
がデータリプライを行い、ストアインキャッシュ220
はデータを受け取り、CS状態で登録し、EPUに返
す。
【0024】1.2.3.3.アドレスがディレクトリ
メモリ270に登録されており、かつ更新ビットが
“1”の場合、更新フラグを“0”にする。また、ディ
レクトリ261にSBRを転送し、ディレクトリ261
はシステムバス251上にSBRを発行する。このSB
Rに対し、クラスタ201のいずれかのストアインキャ
ッシュのうち、DE状態でキャッシングしているものが
システムバス251上にデータリプライを行う。データ
リプライを行ったストアインキャッシュは状態をDEか
らCSに更新する。このデータはディレクトリ261で
受け取られ、ディレクトリ260へ転送される。ディレ
クトリ260はシステムバス250上にデータリプライ
を行う。ストアインキャッシュ220はこのデータを受
け取り、CS状態で登録し、EPUに返す。共有メモリ
240もこのデータを受け取り、メモリの内容を更新す
る。
メモリ270に登録されており、かつ更新ビットが
“1”の場合、更新フラグを“0”にする。また、ディ
レクトリ261にSBRを転送し、ディレクトリ261
はシステムバス251上にSBRを発行する。このSB
Rに対し、クラスタ201のいずれかのストアインキャ
ッシュのうち、DE状態でキャッシングしているものが
システムバス251上にデータリプライを行う。データ
リプライを行ったストアインキャッシュは状態をDEか
らCSに更新する。このデータはディレクトリ261で
受け取られ、ディレクトリ260へ転送される。ディレ
クトリ260はシステムバス250上にデータリプライ
を行う。ストアインキャッシュ220はこのデータを受
け取り、CS状態で登録し、EPUに返す。共有メモリ
240もこのデータを受け取り、メモリの内容を更新す
る。
【0025】次に、(2)の他クラスタのメモリ空間
(共有メモリ241)に対するリードの場合について説
明する。以下、2.1.所望のデータがストアインキャ
ッシュ220内にキャッシングされている場合と、2.
2.所望のデータがストアインキャッシュ220にキャ
ッシングされていない場合に分けて説明する。
(共有メモリ241)に対するリードの場合について説
明する。以下、2.1.所望のデータがストアインキャ
ッシュ220内にキャッシングされている場合と、2.
2.所望のデータがストアインキャッシュ220にキャ
ッシングされていない場合に分けて説明する。
【0026】2.1.所望のデータがストアインキャッ
シュ220内にキャッシングされている場合、そのデー
タがEPUに返される。
シュ220内にキャッシングされている場合、そのデー
タがEPUに返される。
【0027】2.2.所望のデータがストアインキャッ
シュ220内にキャッシングされていない場合、システ
ムバス250上にSBRを発行する。このSBRに対す
るデータリプライが返ってきたらこれをEPUに返すこ
とになる。以下、2.2.1.クラスタ200の他のス
トアインキャッシュがDE状態でキャッシングしていた
場合と、2.2.2.クラスタ200の他のストアイン
キャッシュがCE、またはCS状態でキャッシングして
いた場合と、2.2.3.クラスタ200の他のストア
インキャッシュのどれもがキャッシングしていない場合
とに分けて説明する。
シュ220内にキャッシングされていない場合、システ
ムバス250上にSBRを発行する。このSBRに対す
るデータリプライが返ってきたらこれをEPUに返すこ
とになる。以下、2.2.1.クラスタ200の他のス
トアインキャッシュがDE状態でキャッシングしていた
場合と、2.2.2.クラスタ200の他のストアイン
キャッシュがCE、またはCS状態でキャッシングして
いた場合と、2.2.3.クラスタ200の他のストア
インキャッシュのどれもがキャッシングしていない場合
とに分けて説明する。
【0028】2.2.1.クラスタ200のストアイン
キャッシュがDE状態でキャッシングしていた場合、そ
のストアインキャッシュがシステムバス250上にデー
タリプライを行い、自身をCS状態にする。ストアイン
キャッシュ220はデータを受け取り、CS状態で登録
し、EPUに返す。これと並行して、ディレクトリ26
0がデータを受け取り、ディレクトリ261に転送す
る。ディレクトリ261はこのデータのメモリブロック
アドレスに対する更新ビットを“0”にする。また、シ
ステムバス251上にメモリブロックライトリクエスト
を発行し、共有メモリ241にこのデータをライトす
る。
キャッシュがDE状態でキャッシングしていた場合、そ
のストアインキャッシュがシステムバス250上にデー
タリプライを行い、自身をCS状態にする。ストアイン
キャッシュ220はデータを受け取り、CS状態で登録
し、EPUに返す。これと並行して、ディレクトリ26
0がデータを受け取り、ディレクトリ261に転送す
る。ディレクトリ261はこのデータのメモリブロック
アドレスに対する更新ビットを“0”にする。また、シ
ステムバス251上にメモリブロックライトリクエスト
を発行し、共有メモリ241にこのデータをライトす
る。
【0029】2.2.2.クラスタ200の他のストア
インキャッシュがCS状態でキャッシングしていた場
合、この(これらの)ストアインキャッシュは何もしな
い。ディレクトリ260はSBRをディレクトリ261
に転送し、ディレクトリ261はこのSBRをシステム
バス251上に発行する。共有メモリ241がシステム
バス251上にデータリプライを行う。ディレクトリ2
61はこのデータを受け取り、ディレクトリ260に転
送する。ディレクトリ260はシステムバス250上に
データリプライを行う。ストアインキャッシュ220
は、データを受け取り、CS状態で登録し、EPUに返
す。
インキャッシュがCS状態でキャッシングしていた場
合、この(これらの)ストアインキャッシュは何もしな
い。ディレクトリ260はSBRをディレクトリ261
に転送し、ディレクトリ261はこのSBRをシステム
バス251上に発行する。共有メモリ241がシステム
バス251上にデータリプライを行う。ディレクトリ2
61はこのデータを受け取り、ディレクトリ260に転
送する。ディレクトリ260はシステムバス250上に
データリプライを行う。ストアインキャッシュ220
は、データを受け取り、CS状態で登録し、EPUに返
す。
【0030】2.2.3.クラスタ200の他のストア
インキャッシュのどれもがキャッシングしていない場
合、ディレクトリ260はディレクトリ261に転送す
る。ディレクトリ261はこのSBRのアドレスを、更
新ビットを“0”、有効ビットを“1”として登録す
る。また、システムバス251上にSBRを発行する。
以下、このSBRに対する動作を2.2.3.1.クラ
スタ201のストアインキャッシュいずれかがDE状態
でキャッシングしていた場合と、2.2.3.2.クラ
スタ201のストアインキャッシュがCEまたはCS状
態でキャッシングしていた場合と、2.2.3.3.ク
ラスタ201のストアインキャッシュのどれもがキャッ
シングしていない場合とに分けて説明する。
インキャッシュのどれもがキャッシングしていない場
合、ディレクトリ260はディレクトリ261に転送す
る。ディレクトリ261はこのSBRのアドレスを、更
新ビットを“0”、有効ビットを“1”として登録す
る。また、システムバス251上にSBRを発行する。
以下、このSBRに対する動作を2.2.3.1.クラ
スタ201のストアインキャッシュいずれかがDE状態
でキャッシングしていた場合と、2.2.3.2.クラ
スタ201のストアインキャッシュがCEまたはCS状
態でキャッシングしていた場合と、2.2.3.3.ク
ラスタ201のストアインキャッシュのどれもがキャッ
シングしていない場合とに分けて説明する。
【0031】2.2.3.1.クラスタ201のストア
インキャッシュいずれかがDE状態でキャッシングして
いた場合、そのストアインキャッシュがシステムバス2
51上にデータリプライを行い、自身をCS状態にす
る。ディレクトリ261はこのデータを受け取り、ディ
レクトリ260に転送する。共有メモリ241もこのデ
ータを受け取り、メモリの内容を更新する。ディレクト
リ260はシステムバス250上にデータリプライを行
う。ストアインキャッシュ220はデータを受け取り、
CS状態で登録し、EPUに返す。
インキャッシュいずれかがDE状態でキャッシングして
いた場合、そのストアインキャッシュがシステムバス2
51上にデータリプライを行い、自身をCS状態にす
る。ディレクトリ261はこのデータを受け取り、ディ
レクトリ260に転送する。共有メモリ241もこのデ
ータを受け取り、メモリの内容を更新する。ディレクト
リ260はシステムバス250上にデータリプライを行
う。ストアインキャッシュ220はデータを受け取り、
CS状態で登録し、EPUに返す。
【0032】2.2.3.2.クラスタ201のストア
インキャッシュがCEまたはCS状態でキャッシングし
ていた場合、CE状態の場合はCS状態に更新する。共
有メモリ241がシステムバス251にデータリプライ
を行う。ディレクトリ261はこのデータを受け取り、
ディレクトリ260に転送する。ディレクトリ260は
システムバス250上にデータリプライを行う。ストア
インキャッシュ220はデータを受け取り、CS状態で
登録し、EPUに返す。
インキャッシュがCEまたはCS状態でキャッシングし
ていた場合、CE状態の場合はCS状態に更新する。共
有メモリ241がシステムバス251にデータリプライ
を行う。ディレクトリ261はこのデータを受け取り、
ディレクトリ260に転送する。ディレクトリ260は
システムバス250上にデータリプライを行う。ストア
インキャッシュ220はデータを受け取り、CS状態で
登録し、EPUに返す。
【0033】2.2.3.3.クラスタ201のストア
インキャッシュのどれもがキャッシングしていない場
合、共有メモリ241がシステムバス251上にデータ
リプライを行う。ディレクトリ261はこのデータを受
け取り、ディレクトリ260に転送する。ディレクトリ
260は、システムバス250上にデータリプライを行
う。ストアインキャッシュ220はデータを受け取り、
CS状態で登録し、EPUに返す。
インキャッシュのどれもがキャッシングしていない場
合、共有メモリ241がシステムバス251上にデータ
リプライを行う。ディレクトリ261はこのデータを受
け取り、ディレクトリ260に転送する。ディレクトリ
260は、システムバス250上にデータリプライを行
う。ストアインキャッシュ220はデータを受け取り、
CS状態で登録し、EPUに返す。
【0034】次に、(3)の自クラスタのメモリ空間
(共有メモリ240)に対するライトの場合について説
明する。以下、3.1.ストアインキャッシュ220が
ライト対象のデータをDE状態でキャッシングしている
場合と、3.2.ストアインキャッシュ220がライト
対象のデータをCE状態でキャッシングしている場合
と、3.3.ストアインキャッシュ220がライト対象
のデータをCS状態でキャッシングしている場合と、
3.4.ストアインキャッシュ220がライト対象のデ
ータをキャッシングしていない場合とに分けて説明す
る。
(共有メモリ240)に対するライトの場合について説
明する。以下、3.1.ストアインキャッシュ220が
ライト対象のデータをDE状態でキャッシングしている
場合と、3.2.ストアインキャッシュ220がライト
対象のデータをCE状態でキャッシングしている場合
と、3.3.ストアインキャッシュ220がライト対象
のデータをCS状態でキャッシングしている場合と、
3.4.ストアインキャッシュ220がライト対象のデ
ータをキャッシングしていない場合とに分けて説明す
る。
【0035】3.1.ストアインキャッシュ220がラ
イト対象のデータをDE状態でキャッシングしている場
合、これにライトする。
イト対象のデータをDE状態でキャッシングしている場
合、これにライトする。
【0036】3.2.ストアインキャッシュ220がラ
イト対象のデータをCE状態でキャッシングしている場
合、これにライトし、自身をDE状態にする。
イト対象のデータをCE状態でキャッシングしている場
合、これにライトし、自身をDE状態にする。
【0037】3.3.ストアインキャッシュ220がラ
イト対象のデータをCS状態でキャッシングしている場
合、これにライトし、DE状態にする。これと並行して
システムバス250上にメモリブロック無効化リクエス
ト(以下、INVという)を発行する。クラスタ200
の他のストアインキャッシュでCS状態でキャッシング
しているものがあれば、これをINV状態にして登録を
抹消する。ディレクトリメモリ270に更新ビットが
“0”で登録されている場合には、ディレクトリメモリ
270は有効ビットを“0”として登録を抹消し、ディ
レクトリ261にINVを転送する。ディレクトリ26
1はINVをシステムバス251上に発行する。クラス
タ201のストアインキャッシュでCS状態でキャッシ
ングしているものがあれば、これをINV状態にする。
イト対象のデータをCS状態でキャッシングしている場
合、これにライトし、DE状態にする。これと並行して
システムバス250上にメモリブロック無効化リクエス
ト(以下、INVという)を発行する。クラスタ200
の他のストアインキャッシュでCS状態でキャッシング
しているものがあれば、これをINV状態にして登録を
抹消する。ディレクトリメモリ270に更新ビットが
“0”で登録されている場合には、ディレクトリメモリ
270は有効ビットを“0”として登録を抹消し、ディ
レクトリ261にINVを転送する。ディレクトリ26
1はINVをシステムバス251上に発行する。クラス
タ201のストアインキャッシュでCS状態でキャッシ
ングしているものがあれば、これをINV状態にする。
【0038】3.4.ストアインキャッシュ220がラ
イト対象のデータをキャッシングしていない場合、シス
テムバス250上に排他ブロックリードリクエスト(以
下、EBRという)を発行する。以下、3.4.1.ク
ラスタ200の他のストアインキャッシュがDE状態で
キャッシングしている場合と、3.4.2.クラスタ2
00の他のストアインキャッシュがCE状態でキャッシ
ングしている場合と、3.4.3.クラスタ200の他
のストアインキャッシュがCS状態でキャッシングして
いる場合と、3.4.4.クラスタ200の他のストア
インキャッシュどれもがキャッシングしていない場合と
に分けて説明する。
イト対象のデータをキャッシングしていない場合、シス
テムバス250上に排他ブロックリードリクエスト(以
下、EBRという)を発行する。以下、3.4.1.ク
ラスタ200の他のストアインキャッシュがDE状態で
キャッシングしている場合と、3.4.2.クラスタ2
00の他のストアインキャッシュがCE状態でキャッシ
ングしている場合と、3.4.3.クラスタ200の他
のストアインキャッシュがCS状態でキャッシングして
いる場合と、3.4.4.クラスタ200の他のストア
インキャッシュどれもがキャッシングしていない場合と
に分けて説明する。
【0039】3.4.1.クラスタ200の他のストア
インキャッシュがDE状態でキャッシングしている場
合、そのストアインキャッシュがシステムバス250上
にデータリプライを行い、自身をINV状態にする。ス
トアインキャッシュ220はこのデータを受け取り、こ
れに対してライトし、DE状態で登録する。
インキャッシュがDE状態でキャッシングしている場
合、そのストアインキャッシュがシステムバス250上
にデータリプライを行い、自身をINV状態にする。ス
トアインキャッシュ220はこのデータを受け取り、こ
れに対してライトし、DE状態で登録する。
【0040】3.4.2.クラスタ200の他のストア
インキャッシュがCE状態でキャッシングしている場
合、これをINV状態にする。共有メモリ240がシス
テムバス250上にデータリプライを行う。ストアイン
キャッシュ220はデータを受け取り、これに対してラ
イトし、DE状態で登録する。
インキャッシュがCE状態でキャッシングしている場
合、これをINV状態にする。共有メモリ240がシス
テムバス250上にデータリプライを行う。ストアイン
キャッシュ220はデータを受け取り、これに対してラ
イトし、DE状態で登録する。
【0041】3.4.3.クラスタ200の他のストア
インキャッシュがCS状態でキャッシングしている場
合、これをINV状態にする。共有メモリ240がシス
テムバス250上にデータリプライを行う。ストアイン
キャッシュ220はデータを受け取り、これに対してラ
イトし、DE状態で登録する。また、これらと並行して
ディレクトリメモリ270を検索し、更新ビットが
“0”で登録されているならば、有効ビットを“0”と
して登録を抹消し、ディレクトリ261にINVを転送
する。ディレクトリ260はシステムバス251上にI
NVを発行する。クラスタ201のストアインキャッシ
ュでCS状態でキャッシングしているものがあれば、こ
れをINV状態にする。
インキャッシュがCS状態でキャッシングしている場
合、これをINV状態にする。共有メモリ240がシス
テムバス250上にデータリプライを行う。ストアイン
キャッシュ220はデータを受け取り、これに対してラ
イトし、DE状態で登録する。また、これらと並行して
ディレクトリメモリ270を検索し、更新ビットが
“0”で登録されているならば、有効ビットを“0”と
して登録を抹消し、ディレクトリ261にINVを転送
する。ディレクトリ260はシステムバス251上にI
NVを発行する。クラスタ201のストアインキャッシ
ュでCS状態でキャッシングしているものがあれば、こ
れをINV状態にする。
【0042】3.4.4.クラスタ200の他のストア
インキャッシュどれもがキャッシングしていない場合、
ディレクトリメモリ270を検索する。以下、3.4.
4.1.ディレクトリメモリ270に登録されていない
場合と、3.4.4.2.ディレクトリメモリ270に
更新ビットが“0”で登録されている場合と、3.4.
4.3.ディレクトリメモリ270に更新ビットが
“1”で登録されている場合とに分けて説明する。
インキャッシュどれもがキャッシングしていない場合、
ディレクトリメモリ270を検索する。以下、3.4.
4.1.ディレクトリメモリ270に登録されていない
場合と、3.4.4.2.ディレクトリメモリ270に
更新ビットが“0”で登録されている場合と、3.4.
4.3.ディレクトリメモリ270に更新ビットが
“1”で登録されている場合とに分けて説明する。
【0043】3.4.4.1.ディレクトリメモリ27
0に登録されていない場合、何もしない。この場合、共
有メモリ240がシステムバス250上にデータリプラ
イを行う。ストアインキャッシュ220はデータを受け
取り、これに対してライトしDE状態で登録する。
0に登録されていない場合、何もしない。この場合、共
有メモリ240がシステムバス250上にデータリプラ
イを行う。ストアインキャッシュ220はデータを受け
取り、これに対してライトしDE状態で登録する。
【0044】3.4.4.2.ディレクトリメモリ27
0に更新ビットが“0”で登録されている場合、ディレ
クトリメモリ270は有効ビットを“0”として登録を
抹消し、ディレクトリ261にINVを転送する。ディ
レクトリ261はシステムバス251上にINVを発行
する。クラスタ201のストアインキャッシュでCS状
態でキャッシングしているものがあれば、これをINV
状態にする。これらと並行して、共有メモリ240がシ
ステムバス250上にリプライを行う。ストアインキャ
ッシュ220はこのデータを受け取り、これに対してラ
イトし、DE状態で登録する。
0に更新ビットが“0”で登録されている場合、ディレ
クトリメモリ270は有効ビットを“0”として登録を
抹消し、ディレクトリ261にINVを転送する。ディ
レクトリ261はシステムバス251上にINVを発行
する。クラスタ201のストアインキャッシュでCS状
態でキャッシングしているものがあれば、これをINV
状態にする。これらと並行して、共有メモリ240がシ
ステムバス250上にリプライを行う。ストアインキャ
ッシュ220はこのデータを受け取り、これに対してラ
イトし、DE状態で登録する。
【0045】3.4.4.3.ディレクトリメモリ27
0に更新ビットが“1”で登録されている場合、有効ビ
ットを“0”として登録を抹消し、ディレクトリ261
にEBRを転送する。ディレクトリ261はシステムバ
ス251上にEBRを発行する。このEBRに対し、ク
ラスタ201のいずれかのストアインキャッシュのう
ち、DE状態でキャッシングしているものがシステムバ
ス251上にデータリプライを行う。データリプライを
行ったストアインキャッシュは状態をDE状態からIN
V状態に更新する。このデータはディレクトリ261で
受け取られ、ディレクトリ260に転送される。ディレ
クトリ260はシステムバス250上にデータリプライ
を行う。ストアインキャッシュ220はこのデータを受
け取り、これに対してライトし、DE状態で登録する。
0に更新ビットが“1”で登録されている場合、有効ビ
ットを“0”として登録を抹消し、ディレクトリ261
にEBRを転送する。ディレクトリ261はシステムバ
ス251上にEBRを発行する。このEBRに対し、ク
ラスタ201のいずれかのストアインキャッシュのう
ち、DE状態でキャッシングしているものがシステムバ
ス251上にデータリプライを行う。データリプライを
行ったストアインキャッシュは状態をDE状態からIN
V状態に更新する。このデータはディレクトリ261で
受け取られ、ディレクトリ260に転送される。ディレ
クトリ260はシステムバス250上にデータリプライ
を行う。ストアインキャッシュ220はこのデータを受
け取り、これに対してライトし、DE状態で登録する。
【0046】次に、(4)の他クラスタのメモリ空間
(共有メモリ241)に対するライトの場合について説
明する。以下、4.1.ストアインキャッシュ220が
ライト対象のデータをDE状態でキャッシングしている
場合と、4.2.ストアインキャッシュ220がライト
対象のデータをCS状態でキャッシングしている場合
と、4.3.ストアインキャッシュ220がライト対象
のデータをキャッシングしていない場合とに分けて説明
する。
(共有メモリ241)に対するライトの場合について説
明する。以下、4.1.ストアインキャッシュ220が
ライト対象のデータをDE状態でキャッシングしている
場合と、4.2.ストアインキャッシュ220がライト
対象のデータをCS状態でキャッシングしている場合
と、4.3.ストアインキャッシュ220がライト対象
のデータをキャッシングしていない場合とに分けて説明
する。
【0047】4.1.ストアインキャッシュ220がラ
イト対象のデータをDE状態でキャッシングしている場
合、これにライトする。
イト対象のデータをDE状態でキャッシングしている場
合、これにライトする。
【0048】4.2.ストアインキャッシュ220がラ
イト対象のデータをCS状態でキャッシングしている場
合、これにライトし、DE状態にする。これと並行し
て、システムバス250上にINVを発行する。クラス
タ200の他のストアインキャッシュでCS状態でキャ
ッシングしているものがあれば、これをINV状態にす
る。
イト対象のデータをCS状態でキャッシングしている場
合、これにライトし、DE状態にする。これと並行し
て、システムバス250上にINVを発行する。クラス
タ200の他のストアインキャッシュでCS状態でキャ
ッシングしているものがあれば、これをINV状態にす
る。
【0049】4.3.ストアインキャッシュ220がラ
イト対象のデータをキャッシングしていない場合、シス
テムバス250上にEBRを発行する。以下、4.3.
1.クラスタ200の他のストアインキャッシュがDE
状態でキャッシングしている場合、4.3.2.クラス
タ200の他のストアインキャッシュがCS状態でキャ
ッシングしている場合、4.3.3.クラスタ200の
他のストアインキャッシュどれもがキャッシングしてい
ない場合とに分けて説明する。
イト対象のデータをキャッシングしていない場合、シス
テムバス250上にEBRを発行する。以下、4.3.
1.クラスタ200の他のストアインキャッシュがDE
状態でキャッシングしている場合、4.3.2.クラス
タ200の他のストアインキャッシュがCS状態でキャ
ッシングしている場合、4.3.3.クラスタ200の
他のストアインキャッシュどれもがキャッシングしてい
ない場合とに分けて説明する。
【0050】4.3.1.クラスタ200の他のストア
インキャッシュがDE状態でキャッシングしている場
合、そのストアインキャッシュがシステムバス250上
にデータリプライを行い、自身をINV状態にする。ス
トアインキャッシュ220はこのデータを受け取り、こ
れに対してライトし、DE状態で登録する。
インキャッシュがDE状態でキャッシングしている場
合、そのストアインキャッシュがシステムバス250上
にデータリプライを行い、自身をINV状態にする。ス
トアインキャッシュ220はこのデータを受け取り、こ
れに対してライトし、DE状態で登録する。
【0051】4.3.2.クラスタ200の他のストア
インキャッシュがCS状態でキャッシングしている場
合、そのストアインキャッシュはこれをINV状態にす
る。ディレクトリ260はディレクトリ261にEBR
を転送する。ディレクトリメモリ271は更新ビットを
“1”にして、システムバス251上にEBRを発行す
る。クラスタ201のストアインキャッシュでCS状態
でキャッシングしているものがあれば、これをINV状
態にする。共有メモリ241がシステムバス251上に
データリプライを行う。このデータはディレクトリ26
1で受け取られ、ディレクトリ260に転送される。デ
ィレクトリ260は、システムバス250上にデータリ
プライを行う。ストアインキャッシュ220はこのデー
タを受け取り、これに対してライトし、DE状態で登録
する。
インキャッシュがCS状態でキャッシングしている場
合、そのストアインキャッシュはこれをINV状態にす
る。ディレクトリ260はディレクトリ261にEBR
を転送する。ディレクトリメモリ271は更新ビットを
“1”にして、システムバス251上にEBRを発行す
る。クラスタ201のストアインキャッシュでCS状態
でキャッシングしているものがあれば、これをINV状
態にする。共有メモリ241がシステムバス251上に
データリプライを行う。このデータはディレクトリ26
1で受け取られ、ディレクトリ260に転送される。デ
ィレクトリ260は、システムバス250上にデータリ
プライを行う。ストアインキャッシュ220はこのデー
タを受け取り、これに対してライトし、DE状態で登録
する。
【0052】4.3.3.クラスタ200の他のストア
インキャッシュどれもがキャッシングしていない場合、
ディレクトリ260はディレクトリ261にEBRを転
送する。ディレクトリメモリ271は更新ビットを
“1”、有効ビットを“1”として登録し、システムバ
ス251上にEBRを発行する。以下、このEBRに対
する動作を4.3.3.1.クラスタ201のストアイ
ンキャッシュいずれかがDE状態でキャッシングしてい
る場合と、4.3.3.2.クラスタ201のストアイ
ンキャッシュがCEまたはCS状態でキャッシングして
いる場合と、4.3.3.3.クラスタ201のストア
インキャッシュのどれもがキャッシングしていない場合
とに分けて説明する。
インキャッシュどれもがキャッシングしていない場合、
ディレクトリ260はディレクトリ261にEBRを転
送する。ディレクトリメモリ271は更新ビットを
“1”、有効ビットを“1”として登録し、システムバ
ス251上にEBRを発行する。以下、このEBRに対
する動作を4.3.3.1.クラスタ201のストアイ
ンキャッシュいずれかがDE状態でキャッシングしてい
る場合と、4.3.3.2.クラスタ201のストアイ
ンキャッシュがCEまたはCS状態でキャッシングして
いる場合と、4.3.3.3.クラスタ201のストア
インキャッシュのどれもがキャッシングしていない場合
とに分けて説明する。
【0053】4.3.3.1.クラスタ201のストア
インキャッシュいずれかがDE状態でキャッシングして
いる場合、そのストアインキャッシュがシステムバス2
51上にデータリプライを行い、自身をINV状態にす
る。このデータはディレクトリ261で受け取られ、デ
ィレクトリ260に転送される。ディレクトリ260は
システムバス250上にデータリプライを行う。ストア
インキャッシュ220はこのデータを受け取り、これに
対してライトし、DE状態で登録する。
インキャッシュいずれかがDE状態でキャッシングして
いる場合、そのストアインキャッシュがシステムバス2
51上にデータリプライを行い、自身をINV状態にす
る。このデータはディレクトリ261で受け取られ、デ
ィレクトリ260に転送される。ディレクトリ260は
システムバス250上にデータリプライを行う。ストア
インキャッシュ220はこのデータを受け取り、これに
対してライトし、DE状態で登録する。
【0054】4.3.3.2.クラスタ201のストア
インキャッシュがCEまたはCS状態でキャッシングし
ている場合、これをINV状態にする。共有メモリ24
1がシステムバス251上にデータリプライを行う。こ
のデータはディレクトリ261で受け取られ、ディレク
トリ260に転送される。ディレクトリ260はシステ
ムバス250上にデータリプライを行う。ストアインキ
ャッシュ220はこのデータを受け取り、これに対して
ライトし、DE状態で登録する。
インキャッシュがCEまたはCS状態でキャッシングし
ている場合、これをINV状態にする。共有メモリ24
1がシステムバス251上にデータリプライを行う。こ
のデータはディレクトリ261で受け取られ、ディレク
トリ260に転送される。ディレクトリ260はシステ
ムバス250上にデータリプライを行う。ストアインキ
ャッシュ220はこのデータを受け取り、これに対して
ライトし、DE状態で登録する。
【0055】4.3.3.3.クラスタ201のストア
インキャッシュどれもがキャッシングしていない場合、
共有メモリ241がシステムバス251上にデータリプ
ライを行う。このデータはディレクトリ261で受け取
られ、ディレクトリ260に転送される。ディレクトリ
260はシステムバス250上にデータリプライを行
う。ストアインキャッシュ220はこのデータを受け取
り、これに対してライトし、DE状態で登録する。
インキャッシュどれもがキャッシングしていない場合、
共有メモリ241がシステムバス251上にデータリプ
ライを行う。このデータはディレクトリ261で受け取
られ、ディレクトリ260に転送される。ディレクトリ
260はシステムバス250上にデータリプライを行
う。ストアインキャッシュ220はこのデータを受け取
り、これに対してライトし、DE状態で登録する。
【0056】次に、図2のディレクトリによる追い出し
処理について説明する。追い出し処理が必要となるの
は、前述の2.2.3.または4.3.3.の場合で、
アドレスを新規にディレクトリメモリに登録するため
に、既に登録されているアドレスを抹消するケースであ
る。また、抹消されるアドレスを追い出し対象アドレス
という。
処理について説明する。追い出し処理が必要となるの
は、前述の2.2.3.または4.3.3.の場合で、
アドレスを新規にディレクトリメモリに登録するため
に、既に登録されているアドレスを抹消するケースであ
る。また、抹消されるアドレスを追い出し対象アドレス
という。
【0057】以下、新規に登録するアドレスと同一のセ
ットアドレスにおいて、5.1.ディレクトリメモリに
既に登録されているアドレスブロックのいずれかが無効
である場合と、5.2.ディレクトリメモリに既に登録
されている全てのアドレスブロックが有効であり、その
うちのいずれかが更新ビット“0”である場合と、5.
3.ディレクトリメモリに既に登録されている全てのア
ドレスブロックが有効であり、そのうちのどれもが更新
ビット“1”である場合とに分けて、追い出し処理の内
容について説明する。
ットアドレスにおいて、5.1.ディレクトリメモリに
既に登録されているアドレスブロックのいずれかが無効
である場合と、5.2.ディレクトリメモリに既に登録
されている全てのアドレスブロックが有効であり、その
うちのいずれかが更新ビット“0”である場合と、5.
3.ディレクトリメモリに既に登録されている全てのア
ドレスブロックが有効であり、そのうちのどれもが更新
ビット“1”である場合とに分けて、追い出し処理の内
容について説明する。
【0058】5.1.ディレクトリメモリに既に登録さ
れているアドレスブロックのいずれかが無効である場
合、追い出し処理は行わない。
れているアドレスブロックのいずれかが無効である場
合、追い出し処理は行わない。
【0059】5.2.ディレクトリメモリに既に登録さ
れている全てのアドレスブロックが有効であり、そのう
ちのいずれかが更新ビット“0”である場合、このうち
のいずれかのアドレスを追い出し対象アドレスとする。
追い出し対象アドレスの有効ビットを“0”として登録
を抹消し、ディレクトリ261はディレクトリ260へ
INVを転送する。ディレクトリ260はシステムバス
250上にINVを発行する。クラスタ200のストア
インキャッシュでCS状態でキャッシングしているもの
は、これをINV状態にする。
れている全てのアドレスブロックが有効であり、そのう
ちのいずれかが更新ビット“0”である場合、このうち
のいずれかのアドレスを追い出し対象アドレスとする。
追い出し対象アドレスの有効ビットを“0”として登録
を抹消し、ディレクトリ261はディレクトリ260へ
INVを転送する。ディレクトリ260はシステムバス
250上にINVを発行する。クラスタ200のストア
インキャッシュでCS状態でキャッシングしているもの
は、これをINV状態にする。
【0060】5.3.ディレクトリメモリに既に登録さ
れている全てのアドレスブロックが有効であり、そのう
ちのどれもが更新ビット“1”である場合、このうちの
いずれかのアドレスを追い出し対象アドレスとする。追
い出し対象アドレスの有効ビットを“0”として登録を
抹消し、ディレクトリ261はディレクトリ260へE
BRを転送する。ディレクトリ260はシステムバス2
50上にEBRを発行する。クラスタ200のストアイ
ンキャッシュのうち、DE状態でキャッシングしている
ものがシステムバス250上にデータリプライを行う。
データリプライを行ったストアインキャッシュは状態を
DEからINVに変更する。このデータはディレクトリ
260で受け取られ、ディレクトリ261に転送され
る。ディレクトリ261はシステムバス251上にメモ
リブロックライトリクエストを発行し、共有メモリ24
1にこのデータをライトする。
れている全てのアドレスブロックが有効であり、そのう
ちのどれもが更新ビット“1”である場合、このうちの
いずれかのアドレスを追い出し対象アドレスとする。追
い出し対象アドレスの有効ビットを“0”として登録を
抹消し、ディレクトリ261はディレクトリ260へE
BRを転送する。ディレクトリ260はシステムバス2
50上にEBRを発行する。クラスタ200のストアイ
ンキャッシュのうち、DE状態でキャッシングしている
ものがシステムバス250上にデータリプライを行う。
データリプライを行ったストアインキャッシュは状態を
DEからINVに変更する。このデータはディレクトリ
260で受け取られ、ディレクトリ261に転送され
る。ディレクトリ261はシステムバス251上にメモ
リブロックライトリクエストを発行し、共有メモリ24
1にこのデータをライトする。
【0061】次に、ディレクトリ261内での追い出し
処理の具体的な動作について図2を参照して説明する。
まず、クラスタ200のディレクトリ260からメモリ
アクセスリクエストが送出されたとすると、ディレクト
リメモリ制御回路100でディレクトリメモリ271の
データが読み出され、ヒット・ステータス判定回路10
2へ送られる。ヒット・ステータス判定回路102で
は、前述のようにディレクトリメモリ271から読み出
されたアドレス、有効ビット、更新ビットをもとにキャ
ッシュヒットしているか否かを判定し、ディレクトリメ
モリ271の複数のコンパートメントから読み出された
アドレス各々についてステータス判定を行う。ここで
は、追い出し処理の説明であるので、ヒット・ステータ
ス判定回路102でキャッシュミスヒットと判定された
ものとする。
処理の具体的な動作について図2を参照して説明する。
まず、クラスタ200のディレクトリ260からメモリ
アクセスリクエストが送出されたとすると、ディレクト
リメモリ制御回路100でディレクトリメモリ271の
データが読み出され、ヒット・ステータス判定回路10
2へ送られる。ヒット・ステータス判定回路102で
は、前述のようにディレクトリメモリ271から読み出
されたアドレス、有効ビット、更新ビットをもとにキャ
ッシュヒットしているか否かを判定し、ディレクトリメ
モリ271の複数のコンパートメントから読み出された
アドレス各々についてステータス判定を行う。ここで
は、追い出し処理の説明であるので、ヒット・ステータ
ス判定回路102でキャッシュミスヒットと判定された
ものとする。
【0062】追い出し処理制御回路104では、ヒット
・ステータス判定回路102の判定結果に基づいて追い
出し処理の制御を行う。ここで、追い出し制御回路10
4の追い出し処理をステータス判定の結果により、以
下、5.1.a.いずれかのアドレスが無効である場合
と、5.2.a.全てのアドレスが有効ビット“1”で
あり、そのうちのいずれかが更新ビット“0”である場
合と、5.3.a.全てのアドレスが有効ビット“1”
であり、そのうちのどれもが更新ビット“1”である場
合とに分けて、それぞれの動作について説明する。
・ステータス判定回路102の判定結果に基づいて追い
出し処理の制御を行う。ここで、追い出し制御回路10
4の追い出し処理をステータス判定の結果により、以
下、5.1.a.いずれかのアドレスが無効である場合
と、5.2.a.全てのアドレスが有効ビット“1”で
あり、そのうちのいずれかが更新ビット“0”である場
合と、5.3.a.全てのアドレスが有効ビット“1”
であり、そのうちのどれもが更新ビット“1”である場
合とに分けて、それぞれの動作について説明する。
【0063】5.1.a.いずれかのアドレスが無効で
ある場合は、追い出し処理は行わない。
ある場合は、追い出し処理は行わない。
【0064】5.2.a.全てのアドレスが有効ビット
“1”であり、そのうちのいずれかに更新ビット“0”
のアドレスブロックがある場合、このうちのいずれかを
追い出し対象アドレスとして、クラスタのディレクトリ
260に対してINVリクエストを転送する。
“1”であり、そのうちのいずれかに更新ビット“0”
のアドレスブロックがある場合、このうちのいずれかを
追い出し対象アドレスとして、クラスタのディレクトリ
260に対してINVリクエストを転送する。
【0065】5.3.a.全てのアドレスが有効ビット
“1”であり、そのうちのどれもが更新ビット“1”で
ある場合、このうちのいずれかを追い出し対象アドレス
として、クラスタのディレクトリ260に対してEBR
リクエストを転送する。
“1”であり、そのうちのどれもが更新ビット“1”で
ある場合、このうちのいずれかを追い出し対象アドレス
として、クラスタのディレクトリ260に対してEBR
リクエストを転送する。
【0066】本実施形態では、例えばディレクトリメモ
リのセットアドレスを17ビット、キーアドレスを10
ビット、1ブロック64バイト管理により実現すると、
128Kワードのディレクトリメモリにより8Gバイト
の共有メモリの管理を行うことができる。これに対し、
従来のディレクトリ方式では、128Mワードのディレ
クトリメモリが必要であり、従来に比べて大幅にメモリ
容量を低減することができる。
リのセットアドレスを17ビット、キーアドレスを10
ビット、1ブロック64バイト管理により実現すると、
128Kワードのディレクトリメモリにより8Gバイト
の共有メモリの管理を行うことができる。これに対し、
従来のディレクトリ方式では、128Mワードのディレ
クトリメモリが必要であり、従来に比べて大幅にメモリ
容量を低減することができる。
【0067】
【発明の効果】以上説明したように本発明によれば、デ
ィレクトリメモリをキャッシュ構成とすることにより、
ディレクトリメモリの容量を従来に比べて大幅に低減す
ることができ、これによって装置の構成を著しく簡単化
及び低コスト化できるという効果がある。
ィレクトリメモリをキャッシュ構成とすることにより、
ディレクトリメモリの容量を従来に比べて大幅に低減す
ることができ、これによって装置の構成を著しく簡単化
及び低コスト化できるという効果がある。
【図1】本発明の一実施形態を示したブロック図であ
る。
る。
【図2】図1の実施形態のディレクトリを詳細に示した
ブロック図である。
ブロック図である。
【図3】図1の実施形態で用いられるディレクトリメモ
リのフォーマットを示した図である。
リのフォーマットを示した図である。
100 ディレクトリメモリ制御回路 102 ヒット・ステータス判定回路 103 リクエスト差し替え回路 104 追い出し制御回路 200,201 クラスタ 210〜217 プロセッサ(EPU) 220〜227 ストアインキャッシュ 230〜237 処理装置 240,241 共有メモリ 250,251 システムバス 260,261 ディレクトリ 270,271 ディレクトリメモリ
Claims (3)
- 【請求項1】 各々複数のプロセッサに接続されたスト
アインキャッシュを有する複数の処理装置と、前記複数
の処理装置とシステムバスで接続された共有メモリとを
備えた2つのクラスタを有する共有メモリ型マルチプロ
セッサシステムにおいて、他クラスタのストアインキャ
ッシュに保持された自クラスタ内の共有メモリのブロッ
クアドレスのキーアドレスを登録するためのディレクト
リメモリと、前記ディレクトリメモリを検索し、前記共
有メモリへのメモリアクセスリクエストのアドレスがキ
ャッシュヒットするか否かを判定する手段とを有するこ
とを特徴とする共有メモリ型マルチプロセッサシステ
ム。 - 【請求項2】 請求項1に記載の共有メモリ型マルチプ
ロセッサシステムにおいて、前記判定手段でキャッシュ
ミスヒットと判定されたときに、ミスヒットと判定され
たアドレスを前記ディレクトリメモリに新たに登録する
場合、前記判定手段によるステータス判定結果に基づい
て前記ディレクトリメモリに既に登録されている同一セ
ットアドレスのうちのいずれかを追い出すように制御す
る手段を有することを特徴とする共有メモリ型マルチプ
ロセッサシステム。 - 【請求項3】 請求項2に記載の共有メモリ型マルチプ
ロセッサシステムにおいて、前記ディレクトリメモリに
は、登録されたキーアドレスの各々について登録された
アドレスが有効であるか否かを示す有効ビット及び更新
されているか否かを示す更新ビットが付加されており、
前記判定手段は前記有効ビット及び更新ビットに基づい
てステータス判定を行うことを特徴とする共有メモリ型
マルチプロセッサシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8157309A JP2852247B2 (ja) | 1996-06-19 | 1996-06-19 | 共有メモリ型マルチプロセッサシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8157309A JP2852247B2 (ja) | 1996-06-19 | 1996-06-19 | 共有メモリ型マルチプロセッサシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH103461A JPH103461A (ja) | 1998-01-06 |
JP2852247B2 true JP2852247B2 (ja) | 1999-01-27 |
Family
ID=15646862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8157309A Expired - Fee Related JP2852247B2 (ja) | 1996-06-19 | 1996-06-19 | 共有メモリ型マルチプロセッサシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2852247B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894092B (zh) * | 2010-07-28 | 2012-09-26 | 杭州华三通信技术有限公司 | 多核cpu及其核间通信方法 |
-
1996
- 1996-06-19 JP JP8157309A patent/JP2852247B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH103461A (ja) | 1998-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2819982B2 (ja) | 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム | |
US6289420B1 (en) | System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem | |
US5802582A (en) | Explicit coherence using split-phase controls | |
US6826651B2 (en) | State-based allocation and replacement for improved hit ratio in directory caches | |
JP4447580B2 (ja) | 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ | |
EP0438211A2 (en) | Cache memory system | |
US20020053004A1 (en) | Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links | |
JP2002536715A (ja) | 仮想メモリシステムにおけるメモリアクセスの改善技術 | |
JP2001297035A (ja) | 情報処理装置 | |
JPH10240621A (ja) | マルチプロセッサ・コンピュータ・システム | |
JP2000010860A (ja) | キャッシュメモリ制御回路及びプロセッサ及びプロセッサシステム及び並列プロセッサシステム | |
US7093075B2 (en) | Location-based placement algorithms for set associative cache memory | |
US7093080B2 (en) | Method and apparatus for coherent memory structure of heterogeneous processor systems | |
US6651157B1 (en) | Multi-processor system and method of accessing data therein | |
EP0489583A2 (en) | Multiple processor cache control system | |
JP3732397B2 (ja) | キャッシュシステム | |
JP2852247B2 (ja) | 共有メモリ型マルチプロセッサシステム | |
JP2786124B2 (ja) | 共有メモリ型マルチプロセッサシステム | |
JPH04191946A (ja) | スヌープキャッシュメモリ制御方式 | |
JPH11102321A (ja) | 分散共有メモリ型並列計算機のキャッシュコヒーレンシ制御方式 | |
JPH08263374A (ja) | キャッシュ制御方法およびそれを用いたマルチプロセッサシステム | |
JP2003316756A (ja) | 分散共有メモリ型マルチプロセッサシステム及びそれに用いるタグ制御方法 | |
JPH05158793A (ja) | 並列キャッシュメモリ | |
US20030101280A1 (en) | Fast jump address algorithm | |
JP3213758B2 (ja) | 記憶一致制御方法およびそれを用いたマルチプロセッサシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |