JPH06100985B2 - 階層キャッシュ・メモリ装置 - Google Patents
階層キャッシュ・メモリ装置Info
- Publication number
- JPH06100985B2 JPH06100985B2 JP3180445A JP18044591A JPH06100985B2 JP H06100985 B2 JPH06100985 B2 JP H06100985B2 JP 3180445 A JP3180445 A JP 3180445A JP 18044591 A JP18044591 A JP 18044591A JP H06100985 B2 JPH06100985 B2 JP H06100985B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- data
- bus
- memory
- cache 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 - Lifetime
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
【0001】
【産業上の利用分野】本発明は、複数のプロセッサとメ
イン・メモリとの間に階層的に複数のキャッシュ・メモ
リを配置するように構成した階層キャッシュ・メモリ装
置に関するものである。
イン・メモリとの間に階層的に複数のキャッシュ・メモ
リを配置するように構成した階層キャッシュ・メモリ装
置に関するものである。
【0002】
【従来の技術】従来、商用並列計算機に採用されるマル
チプロセッサ・アーキテクチャには、他のマルチプロセ
ッサ・アーキテクチャと比較して、その実現の容易さ、
実行するプログラムのプログラミングの容易さなどの理
由からバス共有型のマルチプロセッサが用いられてい
る。しかし、このようなバス共有型のものは、その問題
点としてプロセッサの台数が多くなったときにバス・ボ
トルネックが生ずることがある。
チプロセッサ・アーキテクチャには、他のマルチプロセ
ッサ・アーキテクチャと比較して、その実現の容易さ、
実行するプログラムのプログラミングの容易さなどの理
由からバス共有型のマルチプロセッサが用いられてい
る。しかし、このようなバス共有型のものは、その問題
点としてプロセッサの台数が多くなったときにバス・ボ
トルネックが生ずることがある。
【0003】この問題を解決するものとして、複数のプ
ロセッサとメイン・メモリの間にキャッシュ・メモリを
設け、メイン・メモリへのアクセス頻度を実効的に減少
させることで、より多くのプロセッサがバスを共有でき
るようにすることが考えられている。
ロセッサとメイン・メモリの間にキャッシュ・メモリを
設け、メイン・メモリへのアクセス頻度を実効的に減少
させることで、より多くのプロセッサがバスを共有でき
るようにすることが考えられている。
【0004】一方、このようなアーキテクチャには、各
キャッシュ・メモリ間およびキャッシュ・メモリとメイ
ン・メモリ間のデータの一貫性に関する問題、いわゆ
る、キャッシュ・コンシステンシ問題がある。
キャッシュ・メモリ間およびキャッシュ・メモリとメイ
ン・メモリ間のデータの一貫性に関する問題、いわゆ
る、キャッシュ・コンシステンシ問題がある。
【0005】この問題の解決策としては、スヌーピング
・キャッシュを用いた方法と、ディレクトリ・ベースの
方法が考えられている。
・キャッシュを用いた方法と、ディレクトリ・ベースの
方法が考えられている。
【0006】ここで、スヌーピング・キャッシュによる
方法について述べると、この方法では、キャッシュ・メ
モリ間のデータの一貫性を保証するためにキャッシュ・
コンシステンシ・プロトコルを採用しているが、これま
でにキャッシュ・コンシステンシ・プロトコルとして数
多くのものが提案されてきた(例えば、Per Ste
nstrom,“Survey of Cache C
oherence Schemes for Mult
iprocessors,”IEEE Compute
r 23,6(1990),12−24)。
方法について述べると、この方法では、キャッシュ・メ
モリ間のデータの一貫性を保証するためにキャッシュ・
コンシステンシ・プロトコルを採用しているが、これま
でにキャッシュ・コンシステンシ・プロトコルとして数
多くのものが提案されてきた(例えば、Per Ste
nstrom,“Survey of Cache C
oherence Schemes for Mult
iprocessors,”IEEE Compute
r 23,6(1990),12−24)。
【0007】一方、このようにキャッシュ・メモリを有
するバス共有型のマルチプロセッサでも、プロセッサの
数が増えると、やはりバス・ボトルネックが問題とな
る。これは、データ・アクセスのためのバス・トランザ
クション頻度の増加と、それに加えて、キャッシュ・メ
モリ間およびメイン・メモリとキャッシュ・メモリ間で
のデータ一貫性を保つためのバス・トランザクションの
頻度が増加するためである。
するバス共有型のマルチプロセッサでも、プロセッサの
数が増えると、やはりバス・ボトルネックが問題とな
る。これは、データ・アクセスのためのバス・トランザ
クション頻度の増加と、それに加えて、キャッシュ・メ
モリ間およびメイン・メモリとキャッシュ・メモリ間で
のデータ一貫性を保つためのバス・トランザクションの
頻度が増加するためである。
【0008】この問題を解決するものとして、キャッシ
ュ・メモリとメイン・メモリの間に新たなキャッシュ・
メモリを階層的に設けた階層キャッシュ・メモリ装置が
考えられている。(例えば、Andrew W.Wil
son,Jr.,“Hierarchical Cac
he/Bus ArchitectureforSha
red Memory Multiprocessor
s,”Proc.14th Int´l Symp.
on Computer Architecture
(1987),244−252)。
ュ・メモリとメイン・メモリの間に新たなキャッシュ・
メモリを階層的に設けた階層キャッシュ・メモリ装置が
考えられている。(例えば、Andrew W.Wil
son,Jr.,“Hierarchical Cac
he/Bus ArchitectureforSha
red Memory Multiprocessor
s,”Proc.14th Int´l Symp.
on Computer Architecture
(1987),244−252)。
【0009】図52は、この種の階層キャッシュ・メモ
リ装置の概念図である。この場合、複数のプロセッサ1
にそれぞれ所有されたプライベート・キャッシュ(以下
ではファースト・キャッシュと呼ぶ)2を所定個数(図
示例では4個)の単位で相互に接続するためのバス(以
下ではキャッシュ・バスと呼ぶ)3を接続し、このキャ
ッシュ・バス3に新たなキャッシュ(以下ではセカンド
・キャッシュと呼ぶ)4を接続してクラスタ5を構成し
ている。そして、このように構成した各クラスタ5をメ
イン・メモリ6を接続した新たなバス(以下ではメモリ
・バスと呼ぶ)7に接続している。
リ装置の概念図である。この場合、複数のプロセッサ1
にそれぞれ所有されたプライベート・キャッシュ(以下
ではファースト・キャッシュと呼ぶ)2を所定個数(図
示例では4個)の単位で相互に接続するためのバス(以
下ではキャッシュ・バスと呼ぶ)3を接続し、このキャ
ッシュ・バス3に新たなキャッシュ(以下ではセカンド
・キャッシュと呼ぶ)4を接続してクラスタ5を構成し
ている。そして、このように構成した各クラスタ5をメ
イン・メモリ6を接続した新たなバス(以下ではメモリ
・バスと呼ぶ)7に接続している。
【0010】一方、このような階層構造を持つキャッシ
ュ・メモリ装置は、キャッシュ・コンシステンシ・プロ
トコルとして、ライト・スルー方式のような制御が比較
的単純で実現の容易なものが採用されることが多いが、
バス・トラフィックをさらに軽減するため、従来の1階
層のキャッシュ・コンシステンシ・プロトコルを拡張し
た複雑なプロトコルも提案されている。
ュ・メモリ装置は、キャッシュ・コンシステンシ・プロ
トコルとして、ライト・スルー方式のような制御が比較
的単純で実現の容易なものが採用されることが多いが、
バス・トラフィックをさらに軽減するため、従来の1階
層のキャッシュ・コンシステンシ・プロトコルを拡張し
た複雑なプロトコルも提案されている。
【0011】ここで、従来、1階層のキャッシュ・コン
システンシ・プロトコルとしては、すでに数多くのもの
が提案され、さまざまな性能評価も行われている。例え
ば、Berkeley方式のプロトコルでは、これはイ
ンバリデーション・タイプのキャッシュ・プロトコルで
あるが、キャッシュ・ブロックごとにキャッシュ・ブロ
ックの状態に関する情報を格納する手段を持ち、その状
態として「4」種類を有したものがある。具体的には、
各状態の意味は下記の通りである(Gaetano B
orriello et al.,“Design a
ndImplementation of an In
tegrated SnoopingData Cac
he,”UCB/CSD 84/199(198
4))。
システンシ・プロトコルとしては、すでに数多くのもの
が提案され、さまざまな性能評価も行われている。例え
ば、Berkeley方式のプロトコルでは、これはイ
ンバリデーション・タイプのキャッシュ・プロトコルで
あるが、キャッシュ・ブロックごとにキャッシュ・ブロ
ックの状態に関する情報を格納する手段を持ち、その状
態として「4」種類を有したものがある。具体的には、
各状態の意味は下記の通りである(Gaetano B
orriello et al.,“Design a
ndImplementation of an In
tegrated SnoopingData Cac
he,”UCB/CSD 84/199(198
4))。
【0012】INV(Invalid):データは無効
である。
である。
【0013】UNO(UnOwned):データは有効
であるが、他のキャッシュ・メモリと共有している可能
性がある。
であるが、他のキャッシュ・メモリと共有している可能
性がある。
【0014】NON(Owned NonExclus
ively):そのブロックのオーナーシップを持つ、
他のキャッシュ・メモリに知らせること(データの無効
化)なく更新はできない。
ively):そのブロックのオーナーシップを持つ、
他のキャッシュ・メモリに知らせること(データの無効
化)なく更新はできない。
【0015】EXC(Owned Exclusive
ly):他のキャッシュ・メモリとそのブロックを共有
していないので、局所的に更新できる。
ly):他のキャッシュ・メモリとそのブロックを共有
していないので、局所的に更新できる。
【0016】ここで、“オーナーシップを持つ”キャッ
シュ・ブロックとは、そのキャッシュ・ブロックのデー
タが最新のデータであり、そのキャッシュ・ブロックの
追い出しが発生した際にはデータをコピー・バックする
必要性があるキャッシュ・ブロックであるという意味で
ある。
シュ・ブロックとは、そのキャッシュ・ブロックのデー
タが最新のデータであり、そのキャッシュ・ブロックの
追い出しが発生した際にはデータをコピー・バックする
必要性があるキャッシュ・ブロックであるという意味で
ある。
【0017】一方、1階層のキャッシュ・コンシステン
シ・プロトコルを拡張した2階層のキャッシュ・メモリ
装置の階層キャッシュ・コンシステンシ・プロトコルも
提案されている。この場合、図52の各プロセッサ1に
備えられているファースト・キャッシュ2のキャッシュ
・ブロックの状態としては、上述の「4」つの状態をそ
のまま用いることができる。また、これらのファースト
・キャッシュ2とメイン・メモリ6との間に接続される
セカンド・キャッシュ4のキャッシュ・ブロックの状態
は、上述した4つの状態をそのままの意味で用いること
はできない。具体的には、次のような階層キャッシュ・
コンシステンシ・プロトコルが提案されている。(浅野
滋博,“2階層並列キャッシュ・コンシステンシ・プロ
トコル,”情報処理学会計算機アーキテクチャ研究会報
告80−3(1990),17−24)。
シ・プロトコルを拡張した2階層のキャッシュ・メモリ
装置の階層キャッシュ・コンシステンシ・プロトコルも
提案されている。この場合、図52の各プロセッサ1に
備えられているファースト・キャッシュ2のキャッシュ
・ブロックの状態としては、上述の「4」つの状態をそ
のまま用いることができる。また、これらのファースト
・キャッシュ2とメイン・メモリ6との間に接続される
セカンド・キャッシュ4のキャッシュ・ブロックの状態
は、上述した4つの状態をそのままの意味で用いること
はできない。具体的には、次のような階層キャッシュ・
コンシステンシ・プロトコルが提案されている。(浅野
滋博,“2階層並列キャッシュ・コンシステンシ・プロ
トコル,”情報処理学会計算機アーキテクチャ研究会報
告80−3(1990),17−24)。
【0018】INV:データは有効である。
【0019】UNO:データは有効であるが、他のセカ
ンド・キャッシュと共有している可能性がある。
ンド・キャッシュと共有している可能性がある。
【0020】NON:そのブロックのオーナーシップを
持つが、他のセカンド・キャッシに知らせることなく更
新はできない。
持つが、他のセカンド・キャッシに知らせることなく更
新はできない。
【0021】EXC:同じクラスタ内のファースト・キ
ャッシュの中にオーナーシップを持つものがある。
ャッシュの中にオーナーシップを持つものがある。
【0022】この場合、このようなキャッシュ・プロト
コルのセカンド・キャッシュのキャッシュ・ブロックの
状態遷移は、図53に示すようになっている。ここで、
図面中のRFO、RSH、WFI、WWIは、バス・コ
マンドの種類を表し、添え字C、Mは、それぞれのコマ
ンドがキャッシュ・バスまたはメモリ・バスのものであ
ることを表している。そして、これらのコマンドの意味
は次のようになっている。
コルのセカンド・キャッシュのキャッシュ・ブロックの
状態遷移は、図53に示すようになっている。ここで、
図面中のRFO、RSH、WFI、WWIは、バス・コ
マンドの種類を表し、添え字C、Mは、それぞれのコマ
ンドがキャッシュ・バスまたはメモリ・バスのものであ
ることを表している。そして、これらのコマンドの意味
は次のようになっている。
【0023】RSH:データコピーを要求するコマンド
(オーナーシップの移行を伴わない)。
(オーナーシップの移行を伴わない)。
【0024】RFO:データコピーを要求するコマンド
(オーナーシップの移行を伴う)。
(オーナーシップの移行を伴う)。
【0025】WFI:無効化のためのコマンド。
【0026】WWI:コピー・バックのためのコマン
ド。
ド。
【0027】次に、このようなコンシステンシ・プロト
コルを持つ階層キャッシュ・メモリ装置の動作例を図5
4乃至図60を用いて説明する。まず、図54は、ある
プロセッサP1がファースト・キャッシュC1にリード
の要求を出したところ、ファースト・キャッシュC1は
要求されたデータのコピーを持たず、キャッシュ・バス
B1にデータのコピーを要求するコマンドRSHを送出
した状態を示している。この場合、要求されたデータを
同じクラスタ内の他のファースト・キャッシュC2が持
っていれば、そのファースト・キャッシュC2がデータ
コピーを要求元のファースト・キャッシュC1に返すよ
うになる。ところが、同じクラスタ5内の他のファース
ト・キャッシュC2が要求されたデータを持たない場合
は、セカンド・キャッシュC3がそのデータを持ってい
れば、要求元のファースト・キャッシュC1にデータの
コピーを返すようになる。
コルを持つ階層キャッシュ・メモリ装置の動作例を図5
4乃至図60を用いて説明する。まず、図54は、ある
プロセッサP1がファースト・キャッシュC1にリード
の要求を出したところ、ファースト・キャッシュC1は
要求されたデータのコピーを持たず、キャッシュ・バス
B1にデータのコピーを要求するコマンドRSHを送出
した状態を示している。この場合、要求されたデータを
同じクラスタ内の他のファースト・キャッシュC2が持
っていれば、そのファースト・キャッシュC2がデータ
コピーを要求元のファースト・キャッシュC1に返すよ
うになる。ところが、同じクラスタ5内の他のファース
ト・キャッシュC2が要求されたデータを持たない場合
は、セカンド・キャッシュC3がそのデータを持ってい
れば、要求元のファースト・キャッシュC1にデータの
コピーを返すようになる。
【0028】しかし、セカンド・キャッシュC3にも要
求データが存在しない場合には、このセカンド・キャッ
シュC3よりメモリ・バスB2にデータのコピーを要求
するコマンドRSHを送出する(図55)。この場合、
セカンド・キャッシュC3の発したコマンドRSHの要
求するデータが他のセカンド・キャッシュC4に存在し
ないならば、メイン・メモリMがデータコピーをセカン
ド・キャッシュC3に返すようになる。また、他のセカ
ンド・キャッシュC4に要求されたデータが存在すれ
ば、そのセカンド・キャッシュC4がデータのコピーを
返すようになる。ただし、セカンド・キャッシュC4に
おいて要求されたデータがEXC状態ならば、図56が
示すように、セカンド・キャッシュC4と直接にキャッ
シュ・バスB3で接続されたファースト・キャッシュC
5のいずれかに最新のデータがあるので、セカンド・キ
ャッシュC4はキャッシュ・バスB3にデータのコピー
を要求するコマンドを発する。そして、図57が示すよ
うに、最新のデータを持つファースト・キャッシュC5
のキャッシュ・ブロックの状態をUNOにし、データコ
ピーをセカンド・キャッシュC4に返すようになる。
求データが存在しない場合には、このセカンド・キャッ
シュC3よりメモリ・バスB2にデータのコピーを要求
するコマンドRSHを送出する(図55)。この場合、
セカンド・キャッシュC3の発したコマンドRSHの要
求するデータが他のセカンド・キャッシュC4に存在し
ないならば、メイン・メモリMがデータコピーをセカン
ド・キャッシュC3に返すようになる。また、他のセカ
ンド・キャッシュC4に要求されたデータが存在すれ
ば、そのセカンド・キャッシュC4がデータのコピーを
返すようになる。ただし、セカンド・キャッシュC4に
おいて要求されたデータがEXC状態ならば、図56が
示すように、セカンド・キャッシュC4と直接にキャッ
シュ・バスB3で接続されたファースト・キャッシュC
5のいずれかに最新のデータがあるので、セカンド・キ
ャッシュC4はキャッシュ・バスB3にデータのコピー
を要求するコマンドを発する。そして、図57が示すよ
うに、最新のデータを持つファースト・キャッシュC5
のキャッシュ・ブロックの状態をUNOにし、データコ
ピーをセカンド・キャッシュC4に返すようになる。
【0029】次に、図58に示すように、セカンド・キ
ャッシュC4は、受け取ったデータを保存し、キャッシ
ュ・ブロックの状態をNONにし、データコピーをセカ
ンド・キャッシュC3に返す。データを受け取ったセカ
ンド・キャッシュC3は、図59に示すように、データ
を保存し、キャッシュ・ブロックの状態をUNOにし、
データコピーをファースト・キャッシュC1に返す。デ
ータを受け取ったファースト・キャッシュC1は、図6
0に示すように、データを保存し、キャッシュ・ブロッ
クの状態をUNOにし、プロセッサP1にデータのコピ
ーを返す。このようにして一連の動作が完了する。
ャッシュC4は、受け取ったデータを保存し、キャッシ
ュ・ブロックの状態をNONにし、データコピーをセカ
ンド・キャッシュC3に返す。データを受け取ったセカ
ンド・キャッシュC3は、図59に示すように、データ
を保存し、キャッシュ・ブロックの状態をUNOにし、
データコピーをファースト・キャッシュC1に返す。デ
ータを受け取ったファースト・キャッシュC1は、図6
0に示すように、データを保存し、キャッシュ・ブロッ
クの状態をUNOにし、プロセッサP1にデータのコピ
ーを返す。このようにして一連の動作が完了する。
【0030】ところで、一般にセカンド・キャッシュの
容量はファースト・キャッシュの容量より大きく設定さ
れることが多く、ファースト・キャッシュから追い出さ
れたブロックがセカンド・キャッシュに留まる場合があ
ることが期待される。このような場合には、このキャッ
シュ・ブロックへのアクセスが再び行われた際に、メモ
リ・バスにまで要求を出すことなく、データのフェッチ
を行うことが可能である。これは再びメイン・メモリに
アクセスする時間よりも短い時間でアクセスできるので
キャッシュの階層化によりシステム性能の向上が期待で
きる理由である。
容量はファースト・キャッシュの容量より大きく設定さ
れることが多く、ファースト・キャッシュから追い出さ
れたブロックがセカンド・キャッシュに留まる場合があ
ることが期待される。このような場合には、このキャッ
シュ・ブロックへのアクセスが再び行われた際に、メモ
リ・バスにまで要求を出すことなく、データのフェッチ
を行うことが可能である。これは再びメイン・メモリに
アクセスする時間よりも短い時間でアクセスできるので
キャッシュの階層化によりシステム性能の向上が期待で
きる理由である。
【0031】ところが、セカンド・キャッシュとして上
述した図53に示す状態遷移のキャッシュ・プロトコル
を持つ階層キャッシュ・メモリ装置においては、上述し
たような効果が必ずしも期待できない場合がある。これ
は、次のような場合である。
述した図53に示す状態遷移のキャッシュ・プロトコル
を持つ階層キャッシュ・メモリ装置においては、上述し
たような効果が必ずしも期待できない場合がある。これ
は、次のような場合である。
【0032】いま、ファースト・キャッシュにおいてE
XC状態またはNON状態にあったキャッシュ・ブロッ
クが追い出されてセカンド・キャッシュにコピー・バッ
クされると、セカンド・キャッシュではそのデータがN
ON状態となって保存される。
XC状態またはNON状態にあったキャッシュ・ブロッ
クが追い出されてセカンド・キャッシュにコピー・バッ
クされると、セカンド・キャッシュではそのデータがN
ON状態となって保存される。
【0033】次に、プロセッサがこのブロックのデータ
に対してライトのアクセスを行うと、セカンド・キャッ
シュにおいて要求されたブロックの状態は、他のクラス
タのセカンド・キャッシュとデータを共有しているかも
しれないNON状態なので、メモリ・バスに対して他の
セカンド・キャッシュの対応するエントリを無効化する
ための要求WFIが発せられる。このとき、実際には他
のセカンド・キャッシュと共有していなかったとして
も、そのセカンド・キャッシュのキャッシュ・ブロック
の状態がNON状態である限り無効化のための要求をメ
モリ・バスに発せざるをえなくなる。
に対してライトのアクセスを行うと、セカンド・キャッ
シュにおいて要求されたブロックの状態は、他のクラス
タのセカンド・キャッシュとデータを共有しているかも
しれないNON状態なので、メモリ・バスに対して他の
セカンド・キャッシュの対応するエントリを無効化する
ための要求WFIが発せられる。このとき、実際には他
のセカンド・キャッシュと共有していなかったとして
も、そのセカンド・キャッシュのキャッシュ・ブロック
の状態がNON状態である限り無効化のための要求をメ
モリ・バスに発せざるをえなくなる。
【0034】このような問題点が目立つのは、例えば、
シングルプロセッサで動作するプログラムをあるプロセ
ッサに割付けて実行するような場合を考えると、この場
合のプロセッサは他のプロセッサ上のプログラムとデー
タ共有をしていないので、メモリ・バス上に他のセカン
ド・キャッシュのブロックを無効化するためのバス・コ
マンドWFIを本来発する必要が全くない。ところが、
図53に示すキャッシュ・プロトコルでは、無駄なバス
・コマンドが発せられることになる。
シングルプロセッサで動作するプログラムをあるプロセ
ッサに割付けて実行するような場合を考えると、この場
合のプロセッサは他のプロセッサ上のプログラムとデー
タ共有をしていないので、メモリ・バス上に他のセカン
ド・キャッシュのブロックを無効化するためのバス・コ
マンドWFIを本来発する必要が全くない。ところが、
図53に示すキャッシュ・プロトコルでは、無駄なバス
・コマンドが発せられることになる。
【0035】
【発明が解決しようとする課題】このように従来の階層
キャッシュ・メモリ装置であって、コンシステンシ・キ
ャッシュ・プロトコルとしてBerkeley方式の4
状態キャッシュ・プロトコルを拡張することで得られる
プロトコルを用いたものは、メモリ・バスに本来不要な
無効化するためのバス・トランザクションが生じてしま
う。この無駄なバス・トランザクションは、システム性
能を低下させるものであり、特に、メモリ・バスがボト
ルネックとなるシステムにおいては、このような無駄な
バス・トランザクションの発生によるバス・トラフィッ
クの増加は、システム性能を著しく低下させる原因にな
っている。
キャッシュ・メモリ装置であって、コンシステンシ・キ
ャッシュ・プロトコルとしてBerkeley方式の4
状態キャッシュ・プロトコルを拡張することで得られる
プロトコルを用いたものは、メモリ・バスに本来不要な
無効化するためのバス・トランザクションが生じてしま
う。この無駄なバス・トランザクションは、システム性
能を低下させるものであり、特に、メモリ・バスがボト
ルネックとなるシステムにおいては、このような無駄な
バス・トランザクションの発生によるバス・トラフィッ
クの増加は、システム性能を著しく低下させる原因にな
っている。
【0036】本発明は上記事情に鑑みてなされたもの
で、無効化のためのバス・トランザクションのうち本来
不要なものの発生を抑えることができ、システム性能の
向上を図ることができる階層キャッシュ・メモリ装置を
提供することを目的とする。
で、無効化のためのバス・トランザクションのうち本来
不要なものの発生を抑えることができ、システム性能の
向上を図ることができる階層キャッシュ・メモリ装置を
提供することを目的とする。
【0037】
【課題を解決するための手段】本発明は、複数のプロセ
ッサにそれぞれ設けられた第1のキャッシュ・メモリ、
これらの第1のキャッシュ・メモリを所定個数の単位で
相互に接続するキャシュ・バス、これらキャシュ・バス
にそれぞれ設けられた第2のキャッシュ・メモリ、これ
ら第2のキャッシュ・メモリを相互に接続するメモリ・
バス、このメモリ・バスに接続されたメイン・メモリと
を具備した階層キャッシュ・メモリ装置であって、第2
のキャッシュ・メモリのキャッシュ・ブロックごとに、
そのデータが他の第2のキャッシュ・メモリと共有され
ておらず、かつ、第2のキャッシュ・メモリとキュャシ
ュ・バスで接続されている第1のキャッシュ・メモリ中
に更新による当該第2のキャッシュ・メモリ内のデータ
よりも最新の値を持つものがない状態、いわゆるオーナ
ーシップを持つものが存在しないことを表す情報を格納
可能にし、第1のキャッシュ・メモリから第2のキャッ
シュ・メモリに対してデータのリードまたはライトのた
めデータのコピーの要求または他のクラスタのキャッシ
ュ・メモリ内のデータの無効化のための要求が生じる
と、第2のキャッシュ・メモリのキャッシュ・ブロック
に格納された情報に基づいた状態を判断し、この状態を
満足するものである場合、他の第2のキャッシュ・メモ
リに対してリードまたはライトのためのデータのコピー
要求またはデータの無効化のための要求を送出すること
なく前記データのコピー要求元の第1のキャッシュ・メ
モリに対して応答を返すようにしている。
ッサにそれぞれ設けられた第1のキャッシュ・メモリ、
これらの第1のキャッシュ・メモリを所定個数の単位で
相互に接続するキャシュ・バス、これらキャシュ・バス
にそれぞれ設けられた第2のキャッシュ・メモリ、これ
ら第2のキャッシュ・メモリを相互に接続するメモリ・
バス、このメモリ・バスに接続されたメイン・メモリと
を具備した階層キャッシュ・メモリ装置であって、第2
のキャッシュ・メモリのキャッシュ・ブロックごとに、
そのデータが他の第2のキャッシュ・メモリと共有され
ておらず、かつ、第2のキャッシュ・メモリとキュャシ
ュ・バスで接続されている第1のキャッシュ・メモリ中
に更新による当該第2のキャッシュ・メモリ内のデータ
よりも最新の値を持つものがない状態、いわゆるオーナ
ーシップを持つものが存在しないことを表す情報を格納
可能にし、第1のキャッシュ・メモリから第2のキャッ
シュ・メモリに対してデータのリードまたはライトのた
めデータのコピーの要求または他のクラスタのキャッシ
ュ・メモリ内のデータの無効化のための要求が生じる
と、第2のキャッシュ・メモリのキャッシュ・ブロック
に格納された情報に基づいた状態を判断し、この状態を
満足するものである場合、他の第2のキャッシュ・メモ
リに対してリードまたはライトのためのデータのコピー
要求またはデータの無効化のための要求を送出すること
なく前記データのコピー要求元の第1のキャッシュ・メ
モリに対して応答を返すようにしている。
【0038】
【作用】この結果、本発明によれば、第1のキャッシュ
・メモリにおいてその第1のキャッシュ・メモリ自らが
オーナーシップを持つキャッシュ・ブロックが追い出さ
れてコピー・バックが発生した際に、第2のキャッシュ
・メモリ内に、コピー・バックされたキャッシュ・ブロ
ックの状態を、そのキャッシュ・ブロックを他のクラス
タと共有しておらず、かつ、その第2のキャッシュ・メ
モリと同じクラスタ内の第1のキャッシュ・メモリには
そのキャッシュ・ブロックのオーナーシップを持つもの
が存在しないことを表わす状態の情報を格納する。そし
て、(1)第1のキャッシュ・メモリにおいてリード・
ミスまたはライト・ミスし、データのコピーを要求する
コマンドがキャッシュ・バスに発せられ、同じクラスタ
内の他の第1のキャッシュ・メモリに要求されたデータ
が存在せず、かつ、同じクラスタ内の第2のキャッシュ
・メモリにおいて要求されたデータが上記情報に基づい
た状態を満足するものである場合は、第2のキャッシュ
・メモリは、データのコピーを要求するコマンドをメモ
リ・バスに発することなく、第1のキャッシュ・メモリ
にデータと共に応答を返す。その際、第2のキャッシュ
・メモリにおけるそのキャッシュ・ブロックの状態は、
リードの場合には変えず、ライトの場合にはEXC状態
に変えるようになる。(2)第1のキャッシュ・メモリ
において他のキャッシュとデータを共有しているキャッ
シュ・ブロックに対するライトが発生し、無効化のため
のバス・コマンドがキャッシュ・バスに発せられ、同じ
クラスタ内の第2のキャッシュ・メモリに要求されたデ
ータが他の先に述べた状態を満足するものでにある場合
は、第2のキャッシュ・メモリは、他のクラスタのデー
タを無効化するためのバス・コマンドをメモリ・バスに
発することなく、第1のキャッシュ・メモリに応答を返
すようになる。(3)第1のキャッシュ・メモリにおい
てリード・ミスし、そのデータのコピーを要求するコマ
ンドがキャッシュ・バスに発せられ、同じクラスタ内の
他の第1のキャッシュ・メモリ内にも第2のキャッシュ
・メモリ内にもそのデータが存在せず、メモリ・バス経
由で他の第2のキャッシュ・メモリに対してデータのコ
ピーを要求するコマンドが発せられ、要求されたデータ
が他のある第2のキャッシュ・メモリにおいて先に述べ
た状態を満足するものである場合は、キャッシュ・バス
に対して第1のキャッシュ・メモリへのデータのコピー
の要求のためのバス・コマンドを発することなく、メモ
リ・バスにデータのコピーと共に応答を返す。その際第
2のキャッシュ・メモリ内のそのキャッシュ・ブロック
の状態は他の第2のキャッシュ・メモリとのデータの共
有があることを表わす状態に遷移するようになる。
・メモリにおいてその第1のキャッシュ・メモリ自らが
オーナーシップを持つキャッシュ・ブロックが追い出さ
れてコピー・バックが発生した際に、第2のキャッシュ
・メモリ内に、コピー・バックされたキャッシュ・ブロ
ックの状態を、そのキャッシュ・ブロックを他のクラス
タと共有しておらず、かつ、その第2のキャッシュ・メ
モリと同じクラスタ内の第1のキャッシュ・メモリには
そのキャッシュ・ブロックのオーナーシップを持つもの
が存在しないことを表わす状態の情報を格納する。そし
て、(1)第1のキャッシュ・メモリにおいてリード・
ミスまたはライト・ミスし、データのコピーを要求する
コマンドがキャッシュ・バスに発せられ、同じクラスタ
内の他の第1のキャッシュ・メモリに要求されたデータ
が存在せず、かつ、同じクラスタ内の第2のキャッシュ
・メモリにおいて要求されたデータが上記情報に基づい
た状態を満足するものである場合は、第2のキャッシュ
・メモリは、データのコピーを要求するコマンドをメモ
リ・バスに発することなく、第1のキャッシュ・メモリ
にデータと共に応答を返す。その際、第2のキャッシュ
・メモリにおけるそのキャッシュ・ブロックの状態は、
リードの場合には変えず、ライトの場合にはEXC状態
に変えるようになる。(2)第1のキャッシュ・メモリ
において他のキャッシュとデータを共有しているキャッ
シュ・ブロックに対するライトが発生し、無効化のため
のバス・コマンドがキャッシュ・バスに発せられ、同じ
クラスタ内の第2のキャッシュ・メモリに要求されたデ
ータが他の先に述べた状態を満足するものでにある場合
は、第2のキャッシュ・メモリは、他のクラスタのデー
タを無効化するためのバス・コマンドをメモリ・バスに
発することなく、第1のキャッシュ・メモリに応答を返
すようになる。(3)第1のキャッシュ・メモリにおい
てリード・ミスし、そのデータのコピーを要求するコマ
ンドがキャッシュ・バスに発せられ、同じクラスタ内の
他の第1のキャッシュ・メモリ内にも第2のキャッシュ
・メモリ内にもそのデータが存在せず、メモリ・バス経
由で他の第2のキャッシュ・メモリに対してデータのコ
ピーを要求するコマンドが発せられ、要求されたデータ
が他のある第2のキャッシュ・メモリにおいて先に述べ
た状態を満足するものである場合は、キャッシュ・バス
に対して第1のキャッシュ・メモリへのデータのコピー
の要求のためのバス・コマンドを発することなく、メモ
リ・バスにデータのコピーと共に応答を返す。その際第
2のキャッシュ・メモリ内のそのキャッシュ・ブロック
の状態は他の第2のキャッシュ・メモリとのデータの共
有があることを表わす状態に遷移するようになる。
【0039】これにより不要なバス・トラフィックを防
ぐことができるようになり、システムの性能の向上をも
たらすことが可能になる。特に、メモリ・バスがシステ
ム性能のネックになっている場合は、その効果は著し
い。
ぐことができるようになり、システムの性能の向上をも
たらすことが可能になる。特に、メモリ・バスがシステ
ム性能のネックになっている場合は、その効果は著し
い。
【0040】
【実施例】以下、本発明の一実施例を図面に従い説明す
る。
る。
【0041】まず、本発明の階層キャッシュ・メモリ装
置の概略構成については、先に述べた図52のものと同
様であり、ここでの説明は省略する。
置の概略構成については、先に述べた図52のものと同
様であり、ここでの説明は省略する。
【0042】次に、図1は、同階層キャッシュ・メモリ
装置に用いられるセカンド・キャッシュの概略構成を示
している。図において、11はタグ・メモリ、12は状
態メモリ、13はデータ・メモリである。また、14は
上述したキャッシュ・バス3のインタフェース部、15
は上述したメモリ・バス7のインタフェース部、16は
キャッシュ・バス3に対してコマンドの受け渡しを行う
キャッシュ・バス・コントローラ、17はメモリ・バス
7に対してコマンドの受け渡しを行うメモリ・バス・コ
ントローラである。さらに、18、19はヒット/ミス
の判定出力を発するコンパレータ、20、21はセレク
タである。
装置に用いられるセカンド・キャッシュの概略構成を示
している。図において、11はタグ・メモリ、12は状
態メモリ、13はデータ・メモリである。また、14は
上述したキャッシュ・バス3のインタフェース部、15
は上述したメモリ・バス7のインタフェース部、16は
キャッシュ・バス3に対してコマンドの受け渡しを行う
キャッシュ・バス・コントローラ、17はメモリ・バス
7に対してコマンドの受け渡しを行うメモリ・バス・コ
ントローラである。さらに、18、19はヒット/ミス
の判定出力を発するコンパレータ、20、21はセレク
タである。
【0043】ここで、状態メモリ12は、キャッシュ・
ブロックの状態を表わす情報が格納されている。キャッ
シュ・バス・コントローラ16は、キャッシュ・バス3
からのコマンドに対して応答するための制御とキャッシ
ュ・バス3にコマンドを発するための制御を行う。メモ
リ・バス・コントローラ17は、メモリ・バス7からの
コマンドに対して応答するための制御とメモリ・バス7
にコマンドを発するための制御を行う。この場合、これ
らキャッシュ・バス・コントローラ16およびメモリ・
バス・コントローラ17は、それぞれの制御を行うため
にタグ・メモリ11や状態メモリ12に格納されている
情報を利用するようになっている。
ブロックの状態を表わす情報が格納されている。キャッ
シュ・バス・コントローラ16は、キャッシュ・バス3
からのコマンドに対して応答するための制御とキャッシ
ュ・バス3にコマンドを発するための制御を行う。メモ
リ・バス・コントローラ17は、メモリ・バス7からの
コマンドに対して応答するための制御とメモリ・バス7
にコマンドを発するための制御を行う。この場合、これ
らキャッシュ・バス・コントローラ16およびメモリ・
バス・コントローラ17は、それぞれの制御を行うため
にタグ・メモリ11や状態メモリ12に格納されている
情報を利用するようになっている。
【0044】次に、同実施例で採用する階層キャッシュ
・プロトコルについて説明する。
・プロトコルについて説明する。
【0045】この場合、キャッシュ・ブロックの状態の
意味を説明するために、MOESIモデルを拡張して得
られるモデルを導入する。本来のMOESIモデルはF
uturebusの標準化においてキャッシュ・プロト
コルを統一的に理解するために提案されたモデルである
(Paul Sweazey and Alan Ja
y Smith “A Class of Compa
tibleCache Consistency Pr
otocols and their Support
by the IEEE Futurebus,”P
roc. 13th Int´l Symposium
on Computer Architectur
e,(1988),280−289)。そして、MOE
SIモデルはキャッシュ・ブロックの状態を特徴付ける
性質として、次の三つを考えている。
意味を説明するために、MOESIモデルを拡張して得
られるモデルを導入する。本来のMOESIモデルはF
uturebusの標準化においてキャッシュ・プロト
コルを統一的に理解するために提案されたモデルである
(Paul Sweazey and Alan Ja
y Smith “A Class of Compa
tibleCache Consistency Pr
otocols and their Support
by the IEEE Futurebus,”P
roc. 13th Int´l Symposium
on Computer Architectur
e,(1988),280−289)。そして、MOE
SIモデルはキャッシュ・ブロックの状態を特徴付ける
性質として、次の三つを考えている。
【0046】validity:有効であるか(val
id)否か(invalid)。
id)否か(invalid)。
【0047】ownership:オーナーシップを持
つか(owned)否か(unowned)。
つか(owned)否か(unowned)。
【0048】exclusiveness:他キャッシ
ュと共有されているか(shared)否か(excl
usive)。
ュと共有されているか(shared)否か(excl
usive)。
【0049】ここで、オーナーシップを持つとは、その
キャッシュ・ブロックが最新のデータを持っており、キ
ャッシュから追い出されるときにはコピー・バックを行
う必要があるということである。この考え方に従うと、
Berkeley方式のプロトコルにおける4つの状態
の意味は次のようになる。
キャッシュ・ブロックが最新のデータを持っており、キ
ャッシュから追い出されるときにはコピー・バックを行
う必要があるということである。この考え方に従うと、
Berkeley方式のプロトコルにおける4つの状態
の意味は次のようになる。
【0050】INV:invalid UNO:valid & unowned & (po
tentially) shared NON:valid & owned & (pote
ntially)shared EXC:valid & owned & exclu
sive しかして、1階層のキャッシュ・メモリ装置の場合は、
このような意味付けで十分であったが、2階層の階層キ
ャッシュ・メモリ装置の場合のキャッシュ・コンシステ
ンシ・プロトコルの状態を説明するには、この3つの性
質だけでは十分とは言えない。特に、セカンド・キャッ
シュのキャッシュ・ブロックの状態に対しては階層キャ
ッシュ・メモリ装置のクラスタ構造を反映した性質を導
入して意味付けを行う必要がある。
tentially) shared NON:valid & owned & (pote
ntially)shared EXC:valid & owned & exclu
sive しかして、1階層のキャッシュ・メモリ装置の場合は、
このような意味付けで十分であったが、2階層の階層キ
ャッシュ・メモリ装置の場合のキャッシュ・コンシステ
ンシ・プロトコルの状態を説明するには、この3つの性
質だけでは十分とは言えない。特に、セカンド・キャッ
シュのキャッシュ・ブロックの状態に対しては階層キャ
ッシュ・メモリ装置のクラスタ構造を反映した性質を導
入して意味付けを行う必要がある。
【0051】そこで、MOESIモデルを次のように拡
張する。この場合、キャッシュ・ブロックの状態を特徴
付ける性質として次の5つを考える: validity:有効であるか(valid)否か
(invalid) c−ownership:クラスタとしてオーナーシッ
プを持つか(c−owned)否か(c−unowne
d)。
張する。この場合、キャッシュ・ブロックの状態を特徴
付ける性質として次の5つを考える: validity:有効であるか(valid)否か
(invalid) c−ownership:クラスタとしてオーナーシッ
プを持つか(c−owned)否か(c−unowne
d)。
【0052】c−exclusiveness:他クラ
スタと共有しているか(c−shared)否か(c−
exclusive)。
スタと共有しているか(c−shared)否か(c−
exclusive)。
【0053】i−ownership:クラスタ内でオ
ーナーシップを持つか(i−owned)否か(i−u
nowned)。
ーナーシップを持つか(i−owned)否か(i−u
nowned)。
【0054】i−exclusiveness:クラス
タ内で他キャッシュと共有しているか(i−share
d)否か(i−exclusive)。
タ内で他キャッシュと共有しているか(i−share
d)否か(i−exclusive)。
【0055】ここで、オーナーシップについて説明する
と、図52においてファースト・キャッシュ2は、オー
ナーシップを持っているキャッシュ・ブロックが追い出
された際には、そのデータをセカンド・キャッシュ4に
対してコピー・バックする必要があり、セカンド・キャ
ッシュ4は、オーナーシップを持つキャッシュ・ブロッ
クが追い出された際には、そのデータをメイン・メモリ
6にコピー・バックする必要がある。そして、“クラス
タとしてオーナーシップを持つ”という意味は、そのキ
ャッシュを含んでいるクラスタ5内のファースト・キャ
ッシュ2の中にそのキャシュ・ブロックのオーナーシッ
プを持つものが存在するか、もしくは、そのクラスタ5
内のファースト・キャッシュ2の中にそのキャッシュ・
ブロックのオーナーシップを持つものが無いが、セカン
ド・キャッシュ4がそのキャッシュ・ブロックのオーナ
ーシップを持っているかのいずれかであるという意味で
ある。また、セカンド・キャッシュ4が“クラスタ内で
オーナーシップ”を持つとは、そのセカンド・キャッシ
ュ4を含んでいるクラスタ5内のファースト・キャッシ
ュ2の中にはそのキャッシュ・ブロックのオーナーシッ
プを持つものがないが、セカンド・キャッシュ4自身は
そのキャッシュ・ブロックのオーナーシップを持ってい
るという意味である。さらに、ファースト・キャッシュ
2が“クラスタ内でオーナーシップを持つ”とは、その
ファースト・キャッシュ2がそのキャッシュ・ブロック
のオーナーシップを持つという意味である。従って、こ
の定義によれば、i−ownedならば必ずc−own
edであると言える。しかし、c−ownedであるか
らと言って必ずしもi−ownedではない。
と、図52においてファースト・キャッシュ2は、オー
ナーシップを持っているキャッシュ・ブロックが追い出
された際には、そのデータをセカンド・キャッシュ4に
対してコピー・バックする必要があり、セカンド・キャ
ッシュ4は、オーナーシップを持つキャッシュ・ブロッ
クが追い出された際には、そのデータをメイン・メモリ
6にコピー・バックする必要がある。そして、“クラス
タとしてオーナーシップを持つ”という意味は、そのキ
ャッシュを含んでいるクラスタ5内のファースト・キャ
ッシュ2の中にそのキャシュ・ブロックのオーナーシッ
プを持つものが存在するか、もしくは、そのクラスタ5
内のファースト・キャッシュ2の中にそのキャッシュ・
ブロックのオーナーシップを持つものが無いが、セカン
ド・キャッシュ4がそのキャッシュ・ブロックのオーナ
ーシップを持っているかのいずれかであるという意味で
ある。また、セカンド・キャッシュ4が“クラスタ内で
オーナーシップ”を持つとは、そのセカンド・キャッシ
ュ4を含んでいるクラスタ5内のファースト・キャッシ
ュ2の中にはそのキャッシュ・ブロックのオーナーシッ
プを持つものがないが、セカンド・キャッシュ4自身は
そのキャッシュ・ブロックのオーナーシップを持ってい
るという意味である。さらに、ファースト・キャッシュ
2が“クラスタ内でオーナーシップを持つ”とは、その
ファースト・キャッシュ2がそのキャッシュ・ブロック
のオーナーシップを持つという意味である。従って、こ
の定義によれば、i−ownedならば必ずc−own
edであると言える。しかし、c−ownedであるか
らと言って必ずしもi−ownedではない。
【0056】次に、共有について説明すると、一般にフ
ァースト・キャッシュ2があるキャッシュ・ブロックを
共有するとは、他のファースト・キャッシュ2がやはり
そのキャッシュ・ブロックのデータを持っていることを
意味する。また、セカンド・キャッシュ4があるキャッ
シュ・ブロックを共有するとは、他のセカンド・キャッ
シュ4がやはりそのキャッシュ・ブロックのデータを持
っていることを意味する。そして、“クラスタとして共
有している”とは、そのキャッシュを含むクラスタ5で
はない別のクラスタ5内のキャッシュ(ファースト・キ
ャッシュ2でもセカンド・キャッシュ4でもよい)がや
はりそのキャッシュ・ブロックのデータを持っているこ
とを意味する。また、セカンド・キャッシュ4が“クラ
スタ内で共有する”とは、そのセカンド・キャッシュ4
を含むクラスタ5内のファースト・キャッシュ2の中に
そのキャッシュ・ブロックのデータを持つものがあるこ
とを意味している。さらに、ファースト・キャッシュ2
が“クラスタ内で共有する”とは、そのファースト・キ
ャッシュ2を含むクラスタ5内の他のファースト・キャ
ッシュ2あるいはセカンド・キャッシュ4がそのキャッ
シュ・ブロックのデータを持っていることを意味してい
る。(本実施例では、ファースト・キャッシュ2にある
データは必ずそのクラスタ5内のセカンド・キャッシュ
4も持っているというマルチレベル包含性が成り立って
いるので、ファースト・キャッシュ2がi−exclu
siveのキャッシュ・ブロックを持つことはない。)
しかして、先に述べたBerkeley方式のキャッシ
ュ・プロトコルの素直な拡張によるキャッシュ・プロト
コルにおけるセカンド・キャッシュ4のキャッシュ・ブ
ロックの状態の意味は次のようになる: INV:invalid UNO:valid & c−unowned & c
−shared &i−unowned & i−sh
ared NON:valid & c−owned & c−s
hared & i−owned & i−share
d EXC:valid & c−owned & c−e
xclusive& i−unowned & i−s
hared セカンド・キャッシュ4の状態メモリは各ブロックがこ
れらのいずれの状態にあるかを表わす情報を格納する。
そして、本発明では、新たな状態として下記の状態を導
入する。
ァースト・キャッシュ2があるキャッシュ・ブロックを
共有するとは、他のファースト・キャッシュ2がやはり
そのキャッシュ・ブロックのデータを持っていることを
意味する。また、セカンド・キャッシュ4があるキャッ
シュ・ブロックを共有するとは、他のセカンド・キャッ
シュ4がやはりそのキャッシュ・ブロックのデータを持
っていることを意味する。そして、“クラスタとして共
有している”とは、そのキャッシュを含むクラスタ5で
はない別のクラスタ5内のキャッシュ(ファースト・キ
ャッシュ2でもセカンド・キャッシュ4でもよい)がや
はりそのキャッシュ・ブロックのデータを持っているこ
とを意味する。また、セカンド・キャッシュ4が“クラ
スタ内で共有する”とは、そのセカンド・キャッシュ4
を含むクラスタ5内のファースト・キャッシュ2の中に
そのキャッシュ・ブロックのデータを持つものがあるこ
とを意味している。さらに、ファースト・キャッシュ2
が“クラスタ内で共有する”とは、そのファースト・キ
ャッシュ2を含むクラスタ5内の他のファースト・キャ
ッシュ2あるいはセカンド・キャッシュ4がそのキャッ
シュ・ブロックのデータを持っていることを意味してい
る。(本実施例では、ファースト・キャッシュ2にある
データは必ずそのクラスタ5内のセカンド・キャッシュ
4も持っているというマルチレベル包含性が成り立って
いるので、ファースト・キャッシュ2がi−exclu
siveのキャッシュ・ブロックを持つことはない。)
しかして、先に述べたBerkeley方式のキャッシ
ュ・プロトコルの素直な拡張によるキャッシュ・プロト
コルにおけるセカンド・キャッシュ4のキャッシュ・ブ
ロックの状態の意味は次のようになる: INV:invalid UNO:valid & c−unowned & c
−shared &i−unowned & i−sh
ared NON:valid & c−owned & c−s
hared & i−owned & i−share
d EXC:valid & c−owned & c−e
xclusive& i−unowned & i−s
hared セカンド・キャッシュ4の状態メモリは各ブロックがこ
れらのいずれの状態にあるかを表わす情報を格納する。
そして、本発明では、新たな状態として下記の状態を導
入する。
【0057】EXI:valid & c−owned
& c−exclusive& i−owned &
i−shared 以下、これをEXI状態と呼ぶことにする。
& c−exclusive& i−owned &
i−shared 以下、これをEXI状態と呼ぶことにする。
【0058】次に、セカンド・キャッシュ4の状態メモ
リに格納する情報について説明する。本実施例では、セ
カンド・キャッシュ4の状態メモリ内には各キャッシュ
・ブロックのvalidity、c−ownershi
p、c−exclusiveness、i−owner
ship、i−exclusivenessを表すため
に1ビットずつのメモリ領域を割り当てている。つま
り、セカンド・キャッシュ4の状態メモリには、(00
000)をINV状態、(10000)がUNO状態、
(11010)がNON状態、(11100)がEXC
状態、(11110)がEXI状態を表すように各情報
が格納される。ここで、(b0,b1,b2,b3,b
4)の5ビットの各ビットは、b0:validit
y、b1:c−ownership、b2:c−exc
lusiveness、b3:i−ownershi
p、b4:i−exclusivenessという意味
である。以下ではこれらのビットを状態ビットと呼ぶこ
とにする。ただし、これまでの説明で分かるように、セ
カンド・キャッシュのキャッシュ・ブロックの状態はど
の状態においてもi−exclusivenessがi
−sharedなのでi−exclusiveness
に関するビットを格納する必要がない。
リに格納する情報について説明する。本実施例では、セ
カンド・キャッシュ4の状態メモリ内には各キャッシュ
・ブロックのvalidity、c−ownershi
p、c−exclusiveness、i−owner
ship、i−exclusivenessを表すため
に1ビットずつのメモリ領域を割り当てている。つま
り、セカンド・キャッシュ4の状態メモリには、(00
000)をINV状態、(10000)がUNO状態、
(11010)がNON状態、(11100)がEXC
状態、(11110)がEXI状態を表すように各情報
が格納される。ここで、(b0,b1,b2,b3,b
4)の5ビットの各ビットは、b0:validit
y、b1:c−ownership、b2:c−exc
lusiveness、b3:i−ownershi
p、b4:i−exclusivenessという意味
である。以下ではこれらのビットを状態ビットと呼ぶこ
とにする。ただし、これまでの説明で分かるように、セ
カンド・キャッシュのキャッシュ・ブロックの状態はど
の状態においてもi−exclusivenessがi
−sharedなのでi−exclusiveness
に関するビットを格納する必要がない。
【0059】次に、図2(a)は、状態メモリの内容を
示している。ここでは、セカンド・キャッシュ4は、ブ
ロック数Nで4ウェイのセット・アソシアティブ方式の
キャッシュ・メモリの場合を示している。この場合、各
エントリに対応して4ビットの領域が割り当てられられ
るが、セカンド・キャッシュ4のキャッシュ・ブロック
の状態と状態ビットの対応を表している図3から分かる
ように、c−ownership=(c−exclus
iveness|i−ownership)という関係
があるので、c−ownership、c−exclu
sive、i−ownershipの全てを状態メモリ
に保存する必要はない。そこで、これら3ビットの内c
−exclusivenessとi−ownershi
pの2ビットだけを格納してもよい。この時の例を図2
(b)に示している。図2(b)では、状態メモリ内に
validity、c−exclusiveness、
i−ownershipの3ビットを格納している。ま
た、図2には示していないが、これらの情報をエンコー
ドして格納してもよい。ただし、その場合も状態メモリ
には、5状態を識別するために、セカンド・キャッシュ
4のエントリ当たり最低3ビットを格納する領域が必要
である。
示している。ここでは、セカンド・キャッシュ4は、ブ
ロック数Nで4ウェイのセット・アソシアティブ方式の
キャッシュ・メモリの場合を示している。この場合、各
エントリに対応して4ビットの領域が割り当てられられ
るが、セカンド・キャッシュ4のキャッシュ・ブロック
の状態と状態ビットの対応を表している図3から分かる
ように、c−ownership=(c−exclus
iveness|i−ownership)という関係
があるので、c−ownership、c−exclu
sive、i−ownershipの全てを状態メモリ
に保存する必要はない。そこで、これら3ビットの内c
−exclusivenessとi−ownershi
pの2ビットだけを格納してもよい。この時の例を図2
(b)に示している。図2(b)では、状態メモリ内に
validity、c−exclusiveness、
i−ownershipの3ビットを格納している。ま
た、図2には示していないが、これらの情報をエンコー
ドして格納してもよい。ただし、その場合も状態メモリ
には、5状態を識別するために、セカンド・キャッシュ
4のエントリ当たり最低3ビットを格納する領域が必要
である。
【0060】なお、本実施例ではファースト・キャッシ
ュ2の状態はBerkeley方式をそのまま用いる。
拡張されたMOESIモデルでファースト・キャッシュ
2のキャッシュ・ブロックの状態を意味付けるならば、
ファースト・キャッシュ2は階層キャッシュ・メモリ装
置の木構造のトポロジーの葉の部分にあり、自分をルー
トとする部分木には自分以外にノードが存在しないの
で、c−ownership、i−ownership
やc−exclusive、i−exclusiveと
いった区別は不要である。そこでファースト・キャッシ
ュ2をそれ自身からなるサブクラスタであると解釈し
て、validity、c−ownership、c−
exclusivenessの三つの状態ビットで状態
を実現する。INV状態(000)、UNO状態(10
0)、NON状態(110)、EXC状態(111)の
4状態である。ファースト・キャッシュ2のキャッシュ
・ブロックの状態をB0:valid、B1:c−ow
ned、B2:c−exclusiveの3ビットの状
態ビットで表現することにする。図4は、ファースト・
キャッシュ2の状態と状態ビットの対応を表している。
ただし、状態数が4状態なので、エンコードして状態を
格納することも可能である。その場合は、1エントリあ
たり2ビットの領域で十分である。
ュ2の状態はBerkeley方式をそのまま用いる。
拡張されたMOESIモデルでファースト・キャッシュ
2のキャッシュ・ブロックの状態を意味付けるならば、
ファースト・キャッシュ2は階層キャッシュ・メモリ装
置の木構造のトポロジーの葉の部分にあり、自分をルー
トとする部分木には自分以外にノードが存在しないの
で、c−ownership、i−ownership
やc−exclusive、i−exclusiveと
いった区別は不要である。そこでファースト・キャッシ
ュ2をそれ自身からなるサブクラスタであると解釈し
て、validity、c−ownership、c−
exclusivenessの三つの状態ビットで状態
を実現する。INV状態(000)、UNO状態(10
0)、NON状態(110)、EXC状態(111)の
4状態である。ファースト・キャッシュ2のキャッシュ
・ブロックの状態をB0:valid、B1:c−ow
ned、B2:c−exclusiveの3ビットの状
態ビットで表現することにする。図4は、ファースト・
キャッシュ2の状態と状態ビットの対応を表している。
ただし、状態数が4状態なので、エンコードして状態を
格納することも可能である。その場合は、1エントリあ
たり2ビットの領域で十分である。
【0061】次に、図5は、キャッシュ・ブロックの状
態遷移について述べる。この場合、同図では、本実施例
におけるセカンド・キャッシュ4におけるキャッシュ・
ブロックの状態遷移を示している。そして、Berke
ley方式の素直な拡張により得られるキャッシュ・プ
ロトコルの状態遷移図である上述した図53と比較する
と、コピー・バックされたキャッシュ・ブロックの状態
はNON状態ではなくEXI状態になる点と、そのEX
Iに対してキャッシュ・バス3からオーナーシップの移
行を伴うデータのコピーの要求のコマンドRFOや無効
化のためのコマンドWFIが来た際にはEXCに遷移す
る点に特徴を有している。
態遷移について述べる。この場合、同図では、本実施例
におけるセカンド・キャッシュ4におけるキャッシュ・
ブロックの状態遷移を示している。そして、Berke
ley方式の素直な拡張により得られるキャッシュ・プ
ロトコルの状態遷移図である上述した図53と比較する
と、コピー・バックされたキャッシュ・ブロックの状態
はNON状態ではなくEXI状態になる点と、そのEX
Iに対してキャッシュ・バス3からオーナーシップの移
行を伴うデータのコピーの要求のコマンドRFOや無効
化のためのコマンドWFIが来た際にはEXCに遷移す
る点に特徴を有している。
【0062】次に、セカンド・キャッシュ4においてキ
ャッシュ・バス・コントローラ16がキャッシュ・バス
3からのコマンドに対して行う応答について説明する。
ャッシュ・バス・コントローラ16がキャッシュ・バス
3からのコマンドに対して行う応答について説明する。
【0063】図6は、本実施例のセカンド・キャッシュ
4がコピー・バック後のEXI状態のキャッシュ・ブロ
ックに対するバス・コマンドをキャッシュ・バス3から
受けた際の応答を示す図である。本実施例ではコピー・
バック後にNON状態ではなくEXI状態であることか
ら、他のクラスタにはそのデータのコピーが存在してい
ないことが分かるので、次にそのキャッシュ・ブロック
に対してキャッシュ・バス3からRFOやWFIが来た
際には、メモリ・バス7に対して他のクラスタの無効化
の為のコマンドWFIを送出する必要がない。つまり、
コピー・バック直後のキャッシュ・ブロックは他のセカ
ンド・キャッシュ4と共有されていないという事実を利
用して不要なバス・トランザクションを減らすことを実
現している。
4がコピー・バック後のEXI状態のキャッシュ・ブロ
ックに対するバス・コマンドをキャッシュ・バス3から
受けた際の応答を示す図である。本実施例ではコピー・
バック後にNON状態ではなくEXI状態であることか
ら、他のクラスタにはそのデータのコピーが存在してい
ないことが分かるので、次にそのキャッシュ・ブロック
に対してキャッシュ・バス3からRFOやWFIが来た
際には、メモリ・バス7に対して他のクラスタの無効化
の為のコマンドWFIを送出する必要がない。つまり、
コピー・バック直後のキャッシュ・ブロックは他のセカ
ンド・キャッシュ4と共有されていないという事実を利
用して不要なバス・トランザクションを減らすことを実
現している。
【0064】次に、本実施例においてセカンド・キャッ
シュ4が上に述べたような動作を行うためにキャッシュ
・バス・コントローラ16がRFOやWFIがキャッシ
ュ・バス3から来た際に状態メモリの内容を利用してど
のような処理を行うかを説明する。
シュ4が上に述べたような動作を行うためにキャッシュ
・バス・コントローラ16がRFOやWFIがキャッシ
ュ・バス3から来た際に状態メモリの内容を利用してど
のような処理を行うかを説明する。
【0065】この場合、セカンド・キャッシュ4のキャ
ッシュ・バス・コントローラ16は、キャッシュ・バス
7からコマンドを受けると、アドレスのタグ部とタグ・
メモリ11から検索したタグ部をコンパレータ18で比
較しキャッシュ・ヒット/ミスの判定を行う。以下では
本発明に特徴的なRFOとWFIがキャッシュ・ヒット
した場合の処理について説明する。
ッシュ・バス・コントローラ16は、キャッシュ・バス
7からコマンドを受けると、アドレスのタグ部とタグ・
メモリ11から検索したタグ部をコンパレータ18で比
較しキャッシュ・ヒット/ミスの判定を行う。以下では
本発明に特徴的なRFOとWFIがキャッシュ・ヒット
した場合の処理について説明する。
【0066】図7は、キャッシュ・バス3からのRFO
がヒットした場合のキャッシュ・バス・コントローラ1
6の処理内容を表している。キャッシュ・バス・コント
ローラ16はヒットしたエントリのc−exclusi
venessがc−exclusiveかc−shar
edかを判定する(ステップA1)。ここで、c−ex
clusiveの場合にはi−ownershipがi
−ownedかi−unownedかを判定する(ステ
ップA2)。もし、i−ownedならば、そのエント
リのデータを返し(ステップA3)、状態をEXCに遷
移させる。もし、i−unownedならば、データは
返さない(ステップA4)。一方、ステップA1で、c
−sharedを判定した場合にはvalidityが
validかinvalidかを判定する(ステップA
5)。もし、validならば、WFIをメモリ・バス
7に送出し(ステップA6)、それに対する応答が返っ
てから、状態をEXCにしてからデータを返す(ステッ
プA7)。もし、ステップA5でinvalidを判定
したならば、RFOをメモリ・バス7に送出し(ステッ
プA8)、それに対する応答が返ってから、データをデ
ータ・メモリ13に格納するとともに状態をEXCにし
てからデータを返す(ステップA9)。本実施例では、
メモリ・バス7にWFIやRFOのコマンドを送出する
際には、キャッシュ・バス・コントローラ16はメモリ
・バス・コントローラ17に対して割り込みをかけ、メ
モリ・バス・コントローラ17がメモリ・バス7へコマ
ンドを送出する。
がヒットした場合のキャッシュ・バス・コントローラ1
6の処理内容を表している。キャッシュ・バス・コント
ローラ16はヒットしたエントリのc−exclusi
venessがc−exclusiveかc−shar
edかを判定する(ステップA1)。ここで、c−ex
clusiveの場合にはi−ownershipがi
−ownedかi−unownedかを判定する(ステ
ップA2)。もし、i−ownedならば、そのエント
リのデータを返し(ステップA3)、状態をEXCに遷
移させる。もし、i−unownedならば、データは
返さない(ステップA4)。一方、ステップA1で、c
−sharedを判定した場合にはvalidityが
validかinvalidかを判定する(ステップA
5)。もし、validならば、WFIをメモリ・バス
7に送出し(ステップA6)、それに対する応答が返っ
てから、状態をEXCにしてからデータを返す(ステッ
プA7)。もし、ステップA5でinvalidを判定
したならば、RFOをメモリ・バス7に送出し(ステッ
プA8)、それに対する応答が返ってから、データをデ
ータ・メモリ13に格納するとともに状態をEXCにし
てからデータを返す(ステップA9)。本実施例では、
メモリ・バス7にWFIやRFOのコマンドを送出する
際には、キャッシュ・バス・コントローラ16はメモリ
・バス・コントローラ17に対して割り込みをかけ、メ
モリ・バス・コントローラ17がメモリ・バス7へコマ
ンドを送出する。
【0067】次に、図8は、キャッシュ・バス3からの
WFIがヒットした場合のキャッシュ・バス・コントロ
ーラ16の処理内容を表している。キャッシュ・バス・
コントローラ16はヒットしたエントリのc−excl
usivenessがc−exclusiveかc−s
haredかを判定する(ステップB1)。c−exc
lusiveの場合にはメモリ・バスに対してWFIを
送出することなく状態をEXCにしてから応答を返す
(ステップB2)。一方、ステップB1でc−shar
edを判定した場合にはvalidityがvalid
かinvalidかを判定する(ステップB3)。も
し、validならば、WFIをメモリ・バスに送出
し、それに対する応答が返ってから状態をEXCにして
から応答を返す(ステップB4)。もし、invali
dならばエラーとなる(ステップB5)。
WFIがヒットした場合のキャッシュ・バス・コントロ
ーラ16の処理内容を表している。キャッシュ・バス・
コントローラ16はヒットしたエントリのc−excl
usivenessがc−exclusiveかc−s
haredかを判定する(ステップB1)。c−exc
lusiveの場合にはメモリ・バスに対してWFIを
送出することなく状態をEXCにしてから応答を返す
(ステップB2)。一方、ステップB1でc−shar
edを判定した場合にはvalidityがvalid
かinvalidかを判定する(ステップB3)。も
し、validならば、WFIをメモリ・バスに送出
し、それに対する応答が返ってから状態をEXCにして
から応答を返す(ステップB4)。もし、invali
dならばエラーとなる(ステップB5)。
【0068】次に、本発明の効果を動作に従って説明す
る。
る。
【0069】この場合、相異なるアドレスA1 とA2 は
セカンド・キャッシュ4内のそれぞれ相異なるキャッシ
ュ・ブロックB1 とB2 にマップされ、ファースト・キ
ャッシュ2の同一のキャッシュ・ブロックBにマップさ
れるものとする。
セカンド・キャッシュ4内のそれぞれ相異なるキャッシ
ュ・ブロックB1 とB2 にマップされ、ファースト・キ
ャッシュ2の同一のキャッシュ・ブロックBにマップさ
れるものとする。
【0070】まず、従来のBerkeley方式の拡張
によるキャッシュ・プロトコルにおいて、無駄なバス・
トランザクションが発生する状況を考えると、まず、図
9は、あるプロセッサPがアドレスA1 に対してライト
を行い、ファースト・キャッシュ2でキャッシュ・ミス
が発生したところをあらわしている。図10は、ファー
スト・キャッシュ2はキャッシュ・バス3にオーナの移
行を伴うデータのコピーの要求のコマンド(RFO)を
発したが、同じクラスタ内の他のファースト・キャッシ
ュ2はそのデータのコピーを持たず、しかもセカンド・
キャシュ4においてもキャッシュ・ミスを起こしたとこ
ろを表している。図11は、セカンド・キャッシュ4は
オーナーシップの移行を伴うデータのコピーの要求のコ
マンドRFOをメモリ・バスに発したところを表してい
る。
によるキャッシュ・プロトコルにおいて、無駄なバス・
トランザクションが発生する状況を考えると、まず、図
9は、あるプロセッサPがアドレスA1 に対してライト
を行い、ファースト・キャッシュ2でキャッシュ・ミス
が発生したところをあらわしている。図10は、ファー
スト・キャッシュ2はキャッシュ・バス3にオーナの移
行を伴うデータのコピーの要求のコマンド(RFO)を
発したが、同じクラスタ内の他のファースト・キャッシ
ュ2はそのデータのコピーを持たず、しかもセカンド・
キャシュ4においてもキャッシュ・ミスを起こしたとこ
ろを表している。図11は、セカンド・キャッシュ4は
オーナーシップの移行を伴うデータのコピーの要求のコ
マンドRFOをメモリ・バスに発したところを表してい
る。
【0071】図12は、メモリ・バスに対して発したR
FOに対する応答が返り、キャッシュ・ブロックB1に
そのデータが格納され、そのエントリの状態はEXCに
なったところを表している。図13は、セカンド・キャ
ッシュ4がデータを返し、ファースト・キャッシュ2が
返されたデータを格納し、エントリの状態をEXCにし
たところを表している。図14は、ファースト・キャッ
シュ2がライトを完了し、応答をプロセッサ1に返し、
プロセッサ1は動作を再開したところを表している。図
15は、同じプロセッサ1がアドレスA2 に対してライ
トを行ないキャッシュ・ミスし、キャッシュ・ブロック
Bのデータをコピー・バックする必要が生じたところを
表している。
FOに対する応答が返り、キャッシュ・ブロックB1に
そのデータが格納され、そのエントリの状態はEXCに
なったところを表している。図13は、セカンド・キャ
ッシュ4がデータを返し、ファースト・キャッシュ2が
返されたデータを格納し、エントリの状態をEXCにし
たところを表している。図14は、ファースト・キャッ
シュ2がライトを完了し、応答をプロセッサ1に返し、
プロセッサ1は動作を再開したところを表している。図
15は、同じプロセッサ1がアドレスA2 に対してライ
トを行ないキャッシュ・ミスし、キャッシュ・ブロック
Bのデータをコピー・バックする必要が生じたところを
表している。
【0072】図16は、ファースト・キャッシュ2のキ
ャッシュ・ブロックBのデータがセカンド・キャッシュ
4にコピー・バックされ、そのエントリの状態がEXC
からNONに変えられたところを表している。図17
は、コピー・バックが完了したところを表している。続
いて、図18は、プロセッサPが要求しているアドレス
に対応するデータのコピーを要求するコマンドRFOを
メモリ・バス7に発したところ、セカンド・キャッシュ
4でキャッシュ・ミスしたところを表している。図19
は、セカンド・キャッシュ4がデータのコピーを要求す
るコマンドRFOをメモリ・バス7に発したところを表
している。
ャッシュ・ブロックBのデータがセカンド・キャッシュ
4にコピー・バックされ、そのエントリの状態がEXC
からNONに変えられたところを表している。図17
は、コピー・バックが完了したところを表している。続
いて、図18は、プロセッサPが要求しているアドレス
に対応するデータのコピーを要求するコマンドRFOを
メモリ・バス7に発したところ、セカンド・キャッシュ
4でキャッシュ・ミスしたところを表している。図19
は、セカンド・キャッシュ4がデータのコピーを要求す
るコマンドRFOをメモリ・バス7に発したところを表
している。
【0073】図20は、RFOに対する応答が返り、セ
カンド・キャッシュ4は、返されたデータを格納し、そ
のエントリの状態をEXCに変えたところを表してい
る。図21は、セカンド・キャッシュ4がデータととも
に応答をファースト・キャッシュ2に返し、ファースト
・キャッシュ2は返されたデータを格納し、そのエント
リの状態をEXCにしたところを表している。図22
は、ファースト・キャッシュ2がライトが完了し応答を
プロセッサ1に返し、プロセッサ1が動作を再開したと
ころを表している。図23は、プロセッサ1が再びアド
レスA1 に対してライトの要求をしたところが、ファー
スト・キャッシュ2のキャッシュ・ブロックBにはアド
レスA2 のデータが格納されており、コピー・バックの
必要が生じたところを表している。
カンド・キャッシュ4は、返されたデータを格納し、そ
のエントリの状態をEXCに変えたところを表してい
る。図21は、セカンド・キャッシュ4がデータととも
に応答をファースト・キャッシュ2に返し、ファースト
・キャッシュ2は返されたデータを格納し、そのエント
リの状態をEXCにしたところを表している。図22
は、ファースト・キャッシュ2がライトが完了し応答を
プロセッサ1に返し、プロセッサ1が動作を再開したと
ころを表している。図23は、プロセッサ1が再びアド
レスA1 に対してライトの要求をしたところが、ファー
スト・キャッシュ2のキャッシュ・ブロックBにはアド
レスA2 のデータが格納されており、コピー・バックの
必要が生じたところを表している。
【0074】図24は、ファースト・キャッシュ2はキ
ャッシュ・ブロックBのデータをコピー・バックするコ
マンドをキャッシュ・バス3に発し、セカンド・キャッ
シュ4のキャッシュ・ブロックB2 に最新のデータが格
納され、そのエントリの状態がNON状態に変えられた
ところを表している。図25は、アドレスA2 のデータ
のコピー・バックが完了したところを表している。図2
6は、ファースト・キャッシュ2がアドレスA1 のデー
タのコピーを要求するコマンドRFOをキャッシュ・バ
ス3に発し、それがセカンド・キャッシュ4において、
キャッシュ・ブロックB1 にヒットしたところを表して
いる。
ャッシュ・ブロックBのデータをコピー・バックするコ
マンドをキャッシュ・バス3に発し、セカンド・キャッ
シュ4のキャッシュ・ブロックB2 に最新のデータが格
納され、そのエントリの状態がNON状態に変えられた
ところを表している。図25は、アドレスA2 のデータ
のコピー・バックが完了したところを表している。図2
6は、ファースト・キャッシュ2がアドレスA1 のデー
タのコピーを要求するコマンドRFOをキャッシュ・バ
ス3に発し、それがセカンド・キャッシュ4において、
キャッシュ・ブロックB1 にヒットしたところを表して
いる。
【0075】図27は、RFOがヒットしたキャッシュ
・ブロックB1 がNON状態のために、他のセカンド・
キャッシュ4にあるかもしれないデータのコピーを無効
化するためのコマンドWFIをメモリ・バス7に発した
ところを表している。図28は、コマンドWFIに対す
る応答が返り、セカンド・キャッシュ4はキャシュ・ブ
ロックB1 の状態をEXCに変えたところを表してい
る。図29は、セカンド・キャッシュ4がファースト・
キャッシュ2に対して、アドレスA1 のデータのコピー
と共に応答を返し、ファースト・キャッシュ2は返され
たデータを格納し、そのエントリの状態をEXCに変え
たところを表している。図30は、ファースト・キャッ
シュ2が、ライトを完了し、プロセッサ1に対して応答
を返し、プロセッサ1が動作を再開したところを表して
いる。
・ブロックB1 がNON状態のために、他のセカンド・
キャッシュ4にあるかもしれないデータのコピーを無効
化するためのコマンドWFIをメモリ・バス7に発した
ところを表している。図28は、コマンドWFIに対す
る応答が返り、セカンド・キャッシュ4はキャシュ・ブ
ロックB1 の状態をEXCに変えたところを表してい
る。図29は、セカンド・キャッシュ4がファースト・
キャッシュ2に対して、アドレスA1 のデータのコピー
と共に応答を返し、ファースト・キャッシュ2は返され
たデータを格納し、そのエントリの状態をEXCに変え
たところを表している。図30は、ファースト・キャッ
シュ2が、ライトを完了し、プロセッサ1に対して応答
を返し、プロセッサ1が動作を再開したところを表して
いる。
【0076】しかして、このような動作において図26
と図27の間に他のセカンド・キャッシュ4からB1 の
データに対するRSHが来ない場合には、このWFIは
全く無駄なバス・トランザクションとなる。なぜなら
ば、他のセカンド・キャッシュ4はこのデータのコピー
を持たないからである。しかし、従来のものでは、コピ
ー・バックされたセカンド・キャッシュ4のキャッシュ
・ブロックはオーナーであって、かつ、そのクラスタ内
のファースト・キャッシュ2には最新のデータが存在し
ないという意味でNON状態にするのだが、NON状態
には、他のクラスタとデータを共有している可能性があ
るということも意味するために、他のセカンド・キャッ
シュ4に対して共有しているかもしれないデータのコピ
ーを無効化するためバス・コマンドWFIを発しなけれ
ばならない。
と図27の間に他のセカンド・キャッシュ4からB1 の
データに対するRSHが来ない場合には、このWFIは
全く無駄なバス・トランザクションとなる。なぜなら
ば、他のセカンド・キャッシュ4はこのデータのコピー
を持たないからである。しかし、従来のものでは、コピ
ー・バックされたセカンド・キャッシュ4のキャッシュ
・ブロックはオーナーであって、かつ、そのクラスタ内
のファースト・キャッシュ2には最新のデータが存在し
ないという意味でNON状態にするのだが、NON状態
には、他のクラスタとデータを共有している可能性があ
るということも意味するために、他のセカンド・キャッ
シュ4に対して共有しているかもしれないデータのコピ
ーを無効化するためバス・コマンドWFIを発しなけれ
ばならない。
【0077】ところで、バス共有のマルチプロセッサ
は、共有データへのアクセス回数の全アクセス回数に占
める割合が十分小さくなるように使われる。この割合が
大きいプログラムを実行すると、無効化のためのコマン
ドのようにキャッシュ間のデータの一貫性の保証のため
のバス・トランザクションが頻発してしまい、バス・ボ
トルネックが生じマルチプロセッサ化によるシステムの
性能の向上はあまり期待できないからである。従って、
マルチプロセッサのメモリ・アクセスはほとんどがプラ
イベート・データへのアクセスで、極一部が共有データ
へのアクセスである。このような状況では、上でのべた
WFIは、ほとんどの場合には無駄である。極端な場合
として、プログラム実行中において、各プロセッサ上の
プログラムが互いにデータを共有しない場合には、この
ようなWFIはすべて無駄となってしまう。
は、共有データへのアクセス回数の全アクセス回数に占
める割合が十分小さくなるように使われる。この割合が
大きいプログラムを実行すると、無効化のためのコマン
ドのようにキャッシュ間のデータの一貫性の保証のため
のバス・トランザクションが頻発してしまい、バス・ボ
トルネックが生じマルチプロセッサ化によるシステムの
性能の向上はあまり期待できないからである。従って、
マルチプロセッサのメモリ・アクセスはほとんどがプラ
イベート・データへのアクセスで、極一部が共有データ
へのアクセスである。このような状況では、上でのべた
WFIは、ほとんどの場合には無駄である。極端な場合
として、プログラム実行中において、各プロセッサ上の
プログラムが互いにデータを共有しない場合には、この
ようなWFIはすべて無駄となってしまう。
【0078】次に、本実施例のセカンド・キャッシュ4
により、上述した無駄なWFIの発生が防止できること
を説明する。
により、上述した無駄なWFIの発生が防止できること
を説明する。
【0079】まず、図31は、上述の図9と同じくプロ
セッサ1がアドレスA1 に対してライトを行い、ファー
スト・キャッシュ2でキャッシュ・ミスが発生したとこ
ろを表している。図32は、ファースト・キャッシュ2
がキャッシュ・バス3にオーナの移行を伴うデータのコ
ピーの要求のコマンド(RFO)を発したが、同じクラ
スタ内の他のファースト・キャッシュ2はそのデータの
コピーを持たず、しかもセカンド・キャシュ4において
もキャッシュ・ミスを起こしたところを表している。
セッサ1がアドレスA1 に対してライトを行い、ファー
スト・キャッシュ2でキャッシュ・ミスが発生したとこ
ろを表している。図32は、ファースト・キャッシュ2
がキャッシュ・バス3にオーナの移行を伴うデータのコ
ピーの要求のコマンド(RFO)を発したが、同じクラ
スタ内の他のファースト・キャッシュ2はそのデータの
コピーを持たず、しかもセカンド・キャシュ4において
もキャッシュ・ミスを起こしたところを表している。
【0080】図33は、セカンド・キャッシュ4がオー
ナーシップの移行を伴うデータのコピー要求のコマンド
RFOをメモリ・バス7に発したところを表している。
図34は、メモリ・バス7に対して発したRFOに対す
る応答が返り、キャッシュ・ブロックB1 にそのデータ
が格納され、そのエントリの状態はEXCになったとこ
ろを表している。図35は、セカンド・キャッシュ4が
データを返し、ファースト・キャッシュ2が返されたデ
ータを格納し、エントリの状態をEXCにしたところを
表している。図36は、ファースト・キャッシュ2がラ
イトを完了し、応答をプロセッサ1に返し、プロセッサ
1は動作を再開したところを表している。図37は、同
じプロセッサ1がアドレスA2 に対してライトを行ない
キャッシュ・ミスし、キャッシュ・ブロックBのデータ
をコピー・バックする必要が生じたところを表してい
る。ここまでは、従来例とまったく同じ動作である。
ナーシップの移行を伴うデータのコピー要求のコマンド
RFOをメモリ・バス7に発したところを表している。
図34は、メモリ・バス7に対して発したRFOに対す
る応答が返り、キャッシュ・ブロックB1 にそのデータ
が格納され、そのエントリの状態はEXCになったとこ
ろを表している。図35は、セカンド・キャッシュ4が
データを返し、ファースト・キャッシュ2が返されたデ
ータを格納し、エントリの状態をEXCにしたところを
表している。図36は、ファースト・キャッシュ2がラ
イトを完了し、応答をプロセッサ1に返し、プロセッサ
1は動作を再開したところを表している。図37は、同
じプロセッサ1がアドレスA2 に対してライトを行ない
キャッシュ・ミスし、キャッシュ・ブロックBのデータ
をコピー・バックする必要が生じたところを表してい
る。ここまでは、従来例とまったく同じ動作である。
【0081】図38は、ファースト・キャッシュ2のキ
ャッシュ・ブロックBのデータがセカンド・キャッシュ
4にコピー・バックされ、そのエントリの状態がEXC
からEXIに変えられたところを表している。図39
は、コピー・バックが完了したところを表している。続
いて、図40は、プロセッサ1が要求しているアドレス
A2 に対応するデータのコピーを要求するコマンドRF
Oをメモリ・バス7に発したところ、セカンド・キャッ
シュ4でキャッシュ・ミスしたところを表している。図
41は、セカンド・キャッシュ4がデータのコピーを要
求するコマンドRFOをメモリ・バス7に発したところ
を表している。
ャッシュ・ブロックBのデータがセカンド・キャッシュ
4にコピー・バックされ、そのエントリの状態がEXC
からEXIに変えられたところを表している。図39
は、コピー・バックが完了したところを表している。続
いて、図40は、プロセッサ1が要求しているアドレス
A2 に対応するデータのコピーを要求するコマンドRF
Oをメモリ・バス7に発したところ、セカンド・キャッ
シュ4でキャッシュ・ミスしたところを表している。図
41は、セカンド・キャッシュ4がデータのコピーを要
求するコマンドRFOをメモリ・バス7に発したところ
を表している。
【0082】図42は、RFOに対する応答が返り、セ
カンド・キャッシュ4が返されたデータをキャッシュ・
ブロックB2 に格納し、そのエントリの状態をEXCに
変えたところを表している。図43は、セカンド・キャ
ッシュ4がデータとともに応答をファースト・キャッシ
ュ2に返し、ファースト・キャッシュ2は返されたデー
タをキャッシュ・ブロックBに格納し、そのエントリの
状態をEXCにしたところを表している。図44は、フ
ァースト・キャッシュ2がライトが完了し応答をプロセ
ッサ1に返し、プロセッサ1が動作を再開したところを
表している。
カンド・キャッシュ4が返されたデータをキャッシュ・
ブロックB2 に格納し、そのエントリの状態をEXCに
変えたところを表している。図43は、セカンド・キャ
ッシュ4がデータとともに応答をファースト・キャッシ
ュ2に返し、ファースト・キャッシュ2は返されたデー
タをキャッシュ・ブロックBに格納し、そのエントリの
状態をEXCにしたところを表している。図44は、フ
ァースト・キャッシュ2がライトが完了し応答をプロセ
ッサ1に返し、プロセッサ1が動作を再開したところを
表している。
【0083】図45は、プロセッサ1が再びアドレスA
1 に対してライトの要求をしたところが、ファースト・
キャッシュ2のキャッシュ・ブロックBにはアドレスA
2 のデータが格納されており、コピー・バックの必要が
生じたところを表している。図46は、ファースト・キ
ャッシュ2はキャッシュ・ブロックBのデータをコピー
・バックするコマンドをキャッシュ・バス3に発し、セ
カンド・キャッシュ4のキャッシュ・ブロックB2 に最
新のデータが格納され、そのエントリの状態がEXIに
変えられたところを表している。図47は、アドレスA
2 のデータのコピー・バックが完了したところを表して
いる。図48は、ファースト・キャッシュ2がアドレス
A1 のデータのコピーを要求するコマンドRFOをキャ
ッシュ・バス3に発し、それがセカンド・キャッシュ4
において、キャッシュ・ブロックB1 にヒットしたとこ
ろを表している。
1 に対してライトの要求をしたところが、ファースト・
キャッシュ2のキャッシュ・ブロックBにはアドレスA
2 のデータが格納されており、コピー・バックの必要が
生じたところを表している。図46は、ファースト・キ
ャッシュ2はキャッシュ・ブロックBのデータをコピー
・バックするコマンドをキャッシュ・バス3に発し、セ
カンド・キャッシュ4のキャッシュ・ブロックB2 に最
新のデータが格納され、そのエントリの状態がEXIに
変えられたところを表している。図47は、アドレスA
2 のデータのコピー・バックが完了したところを表して
いる。図48は、ファースト・キャッシュ2がアドレス
A1 のデータのコピーを要求するコマンドRFOをキャ
ッシュ・バス3に発し、それがセカンド・キャッシュ4
において、キャッシュ・ブロックB1 にヒットしたとこ
ろを表している。
【0084】図49は、RFOがヒットしたキャッシュ
・ブロックB1 がEXI状態のために、他のセカンド・
キャッシュにはそのデータのコピーが存在しないことが
分かるので、WFIを発することなくエントリの状態を
EXCに変え、データのコピーをファースト・キャッシ
ュに返すことができる。図50は、セカンド・キャッシ
ュ4がファースト・キャッシュ2に対して、アドレスA
1のデータのコピーと共に応答を返し、ファースト・キ
ャッシュ2は返されたデータを格納し、そのエントリの
状態をEXCに変えたところを表している。図51は、
ファースト・キャッシュ2が、ライトを完了し、プロセ
ッサ1に対して応答を返し、プロセッサ1が動作を再開
したところを表している。
・ブロックB1 がEXI状態のために、他のセカンド・
キャッシュにはそのデータのコピーが存在しないことが
分かるので、WFIを発することなくエントリの状態を
EXCに変え、データのコピーをファースト・キャッシ
ュに返すことができる。図50は、セカンド・キャッシ
ュ4がファースト・キャッシュ2に対して、アドレスA
1のデータのコピーと共に応答を返し、ファースト・キ
ャッシュ2は返されたデータを格納し、そのエントリの
状態をEXCに変えたところを表している。図51は、
ファースト・キャッシュ2が、ライトを完了し、プロセ
ッサ1に対して応答を返し、プロセッサ1が動作を再開
したところを表している。
【0085】しかして、上述した従来の例と異なるの
は、コピー・バックされたB1 の状態がNONではなく
EXIになるということである。従って、再び同じプロ
セッサ1がA1 に対してライトを行うと、B2 に対する
コピー・バックのあと、RFOがセカンド・キャッシュ
4のキャッシュ・ブロックB1 にヒットした際に、メモ
リ・バス7に対して他のセカンド・キャッシュ4に対す
る無効化のコマンドWFIを発することなくキャッシュ
・ブロックB1 はEXCに遷移し、データがファースト
・キャッシュ2に返され、キャッシュ・ブロックBはE
XCになる。従って、上述した状況では、従来発生して
いた無駄なバス・コマンドWFIを発生しないようにで
きるので、メモリ・バス7のバス・トラフィックを減少
させることができ、システム性能を向上させることがで
きる。
は、コピー・バックされたB1 の状態がNONではなく
EXIになるということである。従って、再び同じプロ
セッサ1がA1 に対してライトを行うと、B2 に対する
コピー・バックのあと、RFOがセカンド・キャッシュ
4のキャッシュ・ブロックB1 にヒットした際に、メモ
リ・バス7に対して他のセカンド・キャッシュ4に対す
る無効化のコマンドWFIを発することなくキャッシュ
・ブロックB1 はEXCに遷移し、データがファースト
・キャッシュ2に返され、キャッシュ・ブロックBはE
XCになる。従って、上述した状況では、従来発生して
いた無駄なバス・コマンドWFIを発生しないようにで
きるので、メモリ・バス7のバス・トラフィックを減少
させることができ、システム性能を向上させることがで
きる。
【0086】また、キャッシュ・バス3からのWFIが
セカンド・キャッシュ4でEXI状態にヒットした場合
にも、WFIをメモリ・バス7に出す必要がない。この
ような状況が発生するのは、セカンド・キャッシュ4に
コピー・バックされたデータを再びプロセッサ1がリー
ドのアクセスをすると、セカンド・キャッシュ4の状態
はEXIのままで、ファースト・キャッシュ2にデータ
が返される。その返されたデータが格納されているキャ
ッシュ・ブロックに対して、ライトのアクセスが行われ
るとファースト・キャッシュ2から他のファースト・キ
ャッシュ2や他のクラスタ5のセカンド・キャッシュ4
に対してデータの無効化を要求するコマンドWFIが発
せられる。このコマンドがセカンド・キャッシュ4のコ
ピー・バックされたキャッシュ・ブロックにヒットする
と、従来例では、NON状態にヒットなのでWFIが発
せられるが、本実施例ではEXI状態なのでWFIを発
することなくEXC状態に遷移するようになる。
セカンド・キャッシュ4でEXI状態にヒットした場合
にも、WFIをメモリ・バス7に出す必要がない。この
ような状況が発生するのは、セカンド・キャッシュ4に
コピー・バックされたデータを再びプロセッサ1がリー
ドのアクセスをすると、セカンド・キャッシュ4の状態
はEXIのままで、ファースト・キャッシュ2にデータ
が返される。その返されたデータが格納されているキャ
ッシュ・ブロックに対して、ライトのアクセスが行われ
るとファースト・キャッシュ2から他のファースト・キ
ャッシュ2や他のクラスタ5のセカンド・キャッシュ4
に対してデータの無効化を要求するコマンドWFIが発
せられる。このコマンドがセカンド・キャッシュ4のコ
ピー・バックされたキャッシュ・ブロックにヒットする
と、従来例では、NON状態にヒットなのでWFIが発
せられるが、本実施例ではEXI状態なのでWFIを発
することなくEXC状態に遷移するようになる。
【0087】なお、上述した実施例では、バス・コマン
ドの数や種類を変えない。従って、従来例にしたがって
作られたシステムのセカンド・キャッシュをすべてまた
は一部のクラスタでも本実施例のセカンド・キャッシュ
4と交換しても、キャッシュの一貫性は保証される。こ
の性質より、同一のシステムにおいて、セカンド・キャ
ッシュ4に新たな状態ビットを導入しバス・トラフィッ
クの軽減による性能向上を重視するか、あるいは、少な
い状態ビット数により制御の容易さと低いコストを重視
するかにより、セカンド・キャッシュ4を選択すること
によりシステム構成に選択の余地が生ずる。
ドの数や種類を変えない。従って、従来例にしたがって
作られたシステムのセカンド・キャッシュをすべてまた
は一部のクラスタでも本実施例のセカンド・キャッシュ
4と交換しても、キャッシュの一貫性は保証される。こ
の性質より、同一のシステムにおいて、セカンド・キャ
ッシュ4に新たな状態ビットを導入しバス・トラフィッ
クの軽減による性能向上を重視するか、あるいは、少な
い状態ビット数により制御の容易さと低いコストを重視
するかにより、セカンド・キャッシュ4を選択すること
によりシステム構成に選択の余地が生ずる。
【0088】また、上述では、2階層キャッシュ・メモ
リに限定して実施例の説明を行っているが、木構造のト
ポロジーを持つならば多階層のキャッシュ・メモリ装置
においても、セカンド・キャッシュと同じ機能を持つ階
層(但しキャッシュ・メモリの容量までは同じである必
要はない)を繰り返すことにより実現できる。
リに限定して実施例の説明を行っているが、木構造のト
ポロジーを持つならば多階層のキャッシュ・メモリ装置
においても、セカンド・キャッシュと同じ機能を持つ階
層(但しキャッシュ・メモリの容量までは同じである必
要はない)を繰り返すことにより実現できる。
【0089】その他、本発明は、上記実施例にのみ限定
されず、要旨を変更しない範囲で適宜変形して実施でき
る。
されず、要旨を変更しない範囲で適宜変形して実施でき
る。
【0090】
【発明の効果】本発明によれば、(1)ファースト・キ
ャッシュでライト・ミスし、セカンド・キャッシュ内の
先に述べた状態にあるデータに対して、データのコピー
を要求するバス・コマンドがキャッシュ・バスに発せら
れても、データのコピーを要求するバス・コマンドをメ
モリ・バスに発する必要をなくすことができる。また、
(2)ファースト・キャッシュで他のキャッシュとデー
タを共有しているキャッシュ・ブロックに対するライト
が発生し、無効化のためのバス・コマンドがキャッシュ
・バスに発せられ、同じクラスタ内のセカンド・キャッ
シュにおいて要求されたデータが先の状態にある場合に
は、他のクラスタのデータを無効化するためのバス・コ
マンドをメモリ・バスに発する必要をなくすことができ
る。さらに、(3)先に述べた状態にあるデータに対し
て他のセカンド・キャッシュからリードの要求がある場
合に、ファースト・キャッシュへのリードのためのバス
・コマンドをキャッシュ・バスに対して発する必要もな
くすことができる。
ャッシュでライト・ミスし、セカンド・キャッシュ内の
先に述べた状態にあるデータに対して、データのコピー
を要求するバス・コマンドがキャッシュ・バスに発せら
れても、データのコピーを要求するバス・コマンドをメ
モリ・バスに発する必要をなくすことができる。また、
(2)ファースト・キャッシュで他のキャッシュとデー
タを共有しているキャッシュ・ブロックに対するライト
が発生し、無効化のためのバス・コマンドがキャッシュ
・バスに発せられ、同じクラスタ内のセカンド・キャッ
シュにおいて要求されたデータが先の状態にある場合に
は、他のクラスタのデータを無効化するためのバス・コ
マンドをメモリ・バスに発する必要をなくすことができ
る。さらに、(3)先に述べた状態にあるデータに対し
て他のセカンド・キャッシュからリードの要求がある場
合に、ファースト・キャッシュへのリードのためのバス
・コマンドをキャッシュ・バスに対して発する必要もな
くすことができる。
【0091】この結果として、データの一貫性を保つた
めのバス・トランザクションの内から本来不要であった
ものの発生を防ぐことが可能となり、バス・トラフィッ
クを軽減しシステムの性能を向上させることができる。
特に、メモリ・バスがボトルネックになっているような
場合には、その効果は著しい。また、バス・トラフィッ
クの軽減により、同じバスに従来例よりも多いプロセッ
サを接続させても並列効果を落とさないという効果も期
待できる。さらに、バス・コマンドの数や種類を変えな
いので、同一システムにおいて従来例と本実施例のセカ
ンド・キャッシュの共存を許し、システム構成のフレク
シビリティを高めることができる。
めのバス・トランザクションの内から本来不要であった
ものの発生を防ぐことが可能となり、バス・トラフィッ
クを軽減しシステムの性能を向上させることができる。
特に、メモリ・バスがボトルネックになっているような
場合には、その効果は著しい。また、バス・トラフィッ
クの軽減により、同じバスに従来例よりも多いプロセッ
サを接続させても並列効果を落とさないという効果も期
待できる。さらに、バス・コマンドの数や種類を変えな
いので、同一システムにおいて従来例と本実施例のセカ
ンド・キャッシュの共存を許し、システム構成のフレク
シビリティを高めることができる。
【図1】本発明の一実施例に用いられるセカンド・キャ
ッシュの概略構成を示す図。
ッシュの概略構成を示す図。
【図2】図1に示すセカンド・キャッシュの状態メモリ
の内容を示す図。
の内容を示す図。
【図3】図1に示すセカンド・キャッシュの状態と状態
ビットの対応を示す図。
ビットの対応を示す図。
【図4】本発明の一実施例に用いられるファースト・キ
ャッシュの状態と状態ビットの対応を示す図。
ャッシュの状態と状態ビットの対応を示す図。
【図5】図1に示すセカンド・キャッシュのキャッシュ
・ブロックの状態遷移図。
・ブロックの状態遷移図。
【図6】図1に示すセカンド・キャッシュのキャッシュ
・ブロックがファースト・キャッシュからコピー・バッ
クされた際にバス・コマンドに対して行う応答状態を示
す図。
・ブロックがファースト・キャッシュからコピー・バッ
クされた際にバス・コマンドに対して行う応答状態を示
す図。
【図7】図1に示すセカンド・キャッシュに対してキャ
ッシュ・バスからオーナーシップの移行を伴うデータの
コピーを要求するコマンドRFOが来た際の応答を説明
するための図。
ッシュ・バスからオーナーシップの移行を伴うデータの
コピーを要求するコマンドRFOが来た際の応答を説明
するための図。
【図8】図1に示すセカンド・キャッシュに対してキャ
ッシュ・バスから無効化のためのコマンドWFIが来た
際の応答を説明するための図。
ッシュ・バスから無効化のためのコマンドWFIが来た
際の応答を説明するための図。
【図9】従来例として無駄なバス・トランザクションが
発生する状況を説明するための図。
発生する状況を説明するための図。
【図10】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図11】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図12】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図13】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図14】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図15】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図16】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図17】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図18】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図19】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図20】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図21】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図22】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図23】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図24】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図25】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図26】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図27】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図28】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図29】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図30】従来例として無駄なバス・トランザクション
が発生する状況を説明するための図。
が発生する状況を説明するための図。
【図31】本発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図32】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図33】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図34】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図35】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図36】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図37】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図38】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図39】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図40】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図41】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図42】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図43】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図44】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図45】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図46】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図47】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図48】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図49】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図50】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図51】同発明の一実施例において無駄なバス・トラ
ンザクションの発生が防げる状況を説明するための図。
ンザクションの発生が防げる状況を説明するための図。
【図52】階層キャッシュ・メモリ装置の概略構成を示
す図。
す図。
【図53】従来のセカンド・キャッシュにおけるキャッ
シュ・ブロックの状態遷移図。
シュ・ブロックの状態遷移図。
【図54】従来の階層キャッシュ・メモリ装置の動作例
を示す図。
を示す図。
【図55】従来の階層キャッシュ・メモリ装置の動作例
を示す図。
を示す図。
【図56】従来の階層キャッシュ・メモリ装置の動作例
を示す図。
を示す図。
【図57】従来の階層キャッシュ・メモリ装置の動作例
を示す図。
を示す図。
【図58】従来の階層キャッシュ・メモリ装置の動作例
を示す図。
を示す図。
【図59】従来の階層キャッシュ・メモリ装置の動作例
を示す図。
を示す図。
【図60】従来の階層キャッシュ・メモリ装置の動作例
を示す図。
を示す図。
1…プロセッサ、2…ファースト・キャッシュ、3…キ
ャッシュ・バス、4…セカンド・キャッシュ、5…クラ
スタ、6…メイン・メモリ、7…メモリ・バス、11…
タグ・メモリ、12…状態メモリ、13…データ・メモ
リ、14…キャッシュ・バス・インタフェース部、15
…メモリ・バス・インタフェース部、16…キャッシュ
・バス・コントローラ、17…メモリ・バス・コントロ
ーラ、18、19…コンパレータ、20、21…セレク
タ。
ャッシュ・バス、4…セカンド・キャッシュ、5…クラ
スタ、6…メイン・メモリ、7…メモリ・バス、11…
タグ・メモリ、12…状態メモリ、13…データ・メモ
リ、14…キャッシュ・バス・インタフェース部、15
…メモリ・バス・インタフェース部、16…キャッシュ
・バス・コントローラ、17…メモリ・バス・コントロ
ーラ、18、19…コンパレータ、20、21…セレク
タ。
Claims (2)
- 【請求項1】 複数のプロセッサにそれぞれ設けられた
第1のキャッシュ・メモリ、これらの第1のキャッシュ
・メモリを所定個数の単位で相互に接続するキャッシュ
・バス、これらキャッシュ・バスにそれぞれ設けられた
第2のキャッシュ・メモリ、これら第2のキャッシュ・
メモリを相互に接続するメモリ・バス、このメモリ・バ
スに接続されたメイン・メモリとを具備した階層キャッ
シュ・メモリ装置において、前記第2のキャッシュ・メ
モリのキャッシュ・ブロックごとに、少なくともそのデ
ータが他の第2のキャッシュ・メモリと共有されておら
ず、かつ、前記第2のキャッシュ・メモリと前記キュッ
シュ・バスで接続されている前記第1のキャッシュ・メ
モリ中に更新による当該第2のキャッシュ・メモリ内の
データよりも最新の値を持つものがない状態を表す情報
を格納可能にし、前記第1のキャッシュ・メモリから前
記第2のキャッシュ・メモリに対してデータのリードま
たはライトのデータのコピーの要求または他のクラスタ
のキャッシュ・メモリ内のデータの無効化のための要求
が生じると、前記第2のキャッシュ・メモリのキャッシ
ュ・ブロックに格納された情報に基づいた状態を判断
し、該状態を満足するものである場合、他の第2のキャ
ッシュ・メモリに対してリードまたはライトのためのデ
ータのコピー要求またはデータの無効化のための要求を
送出することなく前記データのコピー要求元の第1のキ
ャッシュ・メモリに対して応答を返すようにしたことを
特徴とする階層キャッシュ・メモリ装置。 - 【請求項2】 第2のキャッシュ・メモリ装置のキャッ
シュ・ブロックごとに格納される状態に関する情報は、
そのデータが有効であるか否かに関する情報、そのデー
タが他の第2のキャッシュ・メモリと共有しているか否
かに関する情報、第2のキャッシュ・メモリとキュシュ
・バスで接続される第1のキャッシュ・メモリ中に更新
による当該第2のキャッシュ・メモリ内のデータよりも
最新の値を持つものがないか否かに関する情報のうち少
なくとも2つの情報を格納することを特徴とする請求項
1記載の階層キャッシュ・メモリ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3180445A JPH06100985B2 (ja) | 1991-06-26 | 1991-06-26 | 階層キャッシュ・メモリ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3180445A JPH06100985B2 (ja) | 1991-06-26 | 1991-06-26 | 階層キャッシュ・メモリ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH052534A JPH052534A (ja) | 1993-01-08 |
JPH06100985B2 true JPH06100985B2 (ja) | 1994-12-12 |
Family
ID=16083360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3180445A Expired - Lifetime JPH06100985B2 (ja) | 1991-06-26 | 1991-06-26 | 階層キャッシュ・メモリ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH06100985B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2845762B2 (ja) * | 1993-10-05 | 1999-01-13 | 甲府日本電気株式会社 | 階層バッファメモリ装置 |
US5530832A (en) * | 1993-10-14 | 1996-06-25 | International Business Machines Corporation | System and method for practicing essential inclusion in a multiprocessor and cache hierarchy |
JPH08179987A (ja) * | 1994-12-21 | 1996-07-12 | Nec Corp | データ処理システムおよびリクエスト制御方法 |
JP3498673B2 (ja) | 2000-04-05 | 2004-02-16 | 日本電気株式会社 | 記憶装置 |
JP4695367B2 (ja) | 2004-08-31 | 2011-06-08 | 富士通株式会社 | 情報処理装置,制御装置及び情報処理装置の制御方法 |
US7689771B2 (en) * | 2006-09-19 | 2010-03-30 | International Business Machines Corporation | Coherency management of castouts |
-
1991
- 1991-06-26 JP JP3180445A patent/JPH06100985B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH052534A (ja) | 1993-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7552288B2 (en) | Selectively inclusive cache architecture | |
US7698508B2 (en) | System and method for reducing unnecessary cache operations | |
KR100491435B1 (ko) | 다수의 시스템 버스를 가지는 컴퓨터 시스템 내의 메모리 일관성을 유지하기 위한 시스템 및 방법 | |
US5671391A (en) | Coherent copyback protocol for multi-level cache memory systems | |
US6976131B2 (en) | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system | |
US6141692A (en) | Directory-based, shared-memory, scaleable multiprocessor computer system having deadlock-free transaction flow sans flow control protocol | |
JP4447580B2 (ja) | 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ | |
US20080086601A1 (en) | Hierarchical cache coherence directory structure | |
US6438653B1 (en) | Cache memory control circuit including summarized cache tag memory summarizing cache tag information in parallel processor system | |
US20050188159A1 (en) | Computer system supporting both dirty-shared and non dirty-shared data processing entities | |
US6963953B2 (en) | Cache device controlling a state of a corresponding cache memory according to a predetermined protocol | |
JP2008502069A (ja) | メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法 | |
GB2390710A (en) | Data maintenance of a distributed shared memory system | |
JPH10154100A (ja) | 情報処理システム及び装置及びその制御方法 | |
US20020078304A1 (en) | System and method for allocating a directory entry for use in multiprocessor-node data processing systems | |
US20060294319A1 (en) | Managing snoop operations in a data processing apparatus | |
US6950906B2 (en) | System for and method of operating a cache | |
US6397303B1 (en) | Data processing system, cache, and method of cache management including an O state for memory-consistent cache lines | |
JP2023543231A (ja) | スケーラブル領域ベースのディレクトリ | |
US7669013B2 (en) | Directory for multi-node coherent bus | |
JPH06100985B2 (ja) | 階層キャッシュ・メモリ装置 | |
US20040133748A1 (en) | Unbalanced inclusive tags | |
US6944721B2 (en) | Asynchronous non-blocking snoop invalidation | |
JPH06100982B2 (ja) | 階層キャッシュ・メモリ装置 | |
JP2000267935A (ja) | キヤッシュメモリ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EXPY | Cancellation because of completion of term |