JPH11212868A - スヌープキャッシュメモリ制御システム - Google Patents
スヌープキャッシュメモリ制御システムInfo
- Publication number
- JPH11212868A JPH11212868A JP10030653A JP3065398A JPH11212868A JP H11212868 A JPH11212868 A JP H11212868A JP 10030653 A JP10030653 A JP 10030653A JP 3065398 A JP3065398 A JP 3065398A JP H11212868 A JPH11212868 A JP H11212868A
- Authority
- JP
- Japan
- Prior art keywords
- cache memory
- owner
- snoop
- data
- snoop cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 645
- 238000012546 transfer Methods 0.000 claims abstract description 153
- 238000000034 method Methods 0.000 description 63
- 238000012545 processing Methods 0.000 description 51
- 238000010586 diagram Methods 0.000 description 13
- 230000000694 effects Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】 共有メモリへのアクセスをできるだけ抑える
ことのできるスヌープキャッシュメモリ制御システムを
実現する。 【解決手段】 スヌープキャッシュメモリ部61は、次
にオーナとなったスヌープキャッシュメモリ部のキャッ
シュメモリ番号を表す次オーナ番号を格納するための次
オーナ番号格納部14eを有する。スヌープキャッシュ
メモリ部61がオーナであるデータを追い出す場合、キ
ャッシュ制御部18は、スヌープキャッシュメモリ部6
1のキャッシュメモリ番号と、オーナ委譲要求を共有バ
ス80に出力する。スヌープキャッシュメモリ部61以
外のスヌープキャッシュメモリ部では、共有バス80上
にオーナ委譲要求が送出されていると、次オーナ番号格
納部14eを参照し、この次オーナ番号が、共有バス8
0上のキャッシュメモリ番号に一致していた場合は、自
スヌープキャッシュメモリ部を新たなオーナとする。
ことのできるスヌープキャッシュメモリ制御システムを
実現する。 【解決手段】 スヌープキャッシュメモリ部61は、次
にオーナとなったスヌープキャッシュメモリ部のキャッ
シュメモリ番号を表す次オーナ番号を格納するための次
オーナ番号格納部14eを有する。スヌープキャッシュ
メモリ部61がオーナであるデータを追い出す場合、キ
ャッシュ制御部18は、スヌープキャッシュメモリ部6
1のキャッシュメモリ番号と、オーナ委譲要求を共有バ
ス80に出力する。スヌープキャッシュメモリ部61以
外のスヌープキャッシュメモリ部では、共有バス80上
にオーナ委譲要求が送出されていると、次オーナ番号格
納部14eを参照し、この次オーナ番号が、共有バス8
0上のキャッシュメモリ番号に一致していた場合は、自
スヌープキャッシュメモリ部を新たなオーナとする。
Description
【0001】
【発明の属する技術分野】本発明は、共有バス型マルチ
プロセッサシステムにおけるキャッシュメモリの制御方
法に関するものであり、特に、共有バスを介して共有メ
モリに接続された各キャッシュメモリのデータの一貫性
を効果的に保証するスヌープキャッシュメモリ制御方法
およびそのシステムに関する。
プロセッサシステムにおけるキャッシュメモリの制御方
法に関するものであり、特に、共有バスを介して共有メ
モリに接続された各キャッシュメモリのデータの一貫性
を効果的に保証するスヌープキャッシュメモリ制御方法
およびそのシステムに関する。
【0002】
【従来の技術】複数のプロセッサが共有バスを介して共
有メモリに接続された共有バス型マルチプロセッサシス
テムにおいては、各プロセッサにキャッシュメモリを持
たせ、処理の高速化とバストラフィックの軽減化を図る
方法がよく知られている。この方法では、複数のキャッ
シュメモリが同一のデータを保持している場合に、いず
れかのデータに対して書き込みが行われると、残りのデ
ータも同じであること(コンシステンシィ)を保証する
機構が必要となる。共有バス型マルチプロセッサシステ
ムでは、各キャッシュメモリが他のキャッシュメモリの
バストランザクションを監視することにより、コンシス
テンシィを保証している。このように、バスのトランザ
クションを監視するキャッシュメモリのことをスヌープ
キャッシュメモリと呼ぶ。このスヌープキャッシュメモ
リの制御方法には、キャッシュメモリの管理についてい
くつかの制御方法が提案されている。
有メモリに接続された共有バス型マルチプロセッサシス
テムにおいては、各プロセッサにキャッシュメモリを持
たせ、処理の高速化とバストラフィックの軽減化を図る
方法がよく知られている。この方法では、複数のキャッ
シュメモリが同一のデータを保持している場合に、いず
れかのデータに対して書き込みが行われると、残りのデ
ータも同じであること(コンシステンシィ)を保証する
機構が必要となる。共有バス型マルチプロセッサシステ
ムでは、各キャッシュメモリが他のキャッシュメモリの
バストランザクションを監視することにより、コンシス
テンシィを保証している。このように、バスのトランザ
クションを監視するキャッシュメモリのことをスヌープ
キャッシュメモリと呼ぶ。このスヌープキャッシュメモ
リの制御方法には、キャッシュメモリの管理についてい
くつかの制御方法が提案されている。
【0003】例えば、従来のスヌープキャッシュメモリ
の制御方法のなかには、次のようなものがあった。即
ち、この制御方法は、あるキャッシュメモリでキャッシ
ュミスが発生した場合、このキャッシュミスしたデータ
を含むブロックを他のキャッシュメモリが保持していた
なら、アクセス速度の遅い共有メモリからそのブロック
を転送するのではなく、キャッシュメモリから直接転送
するものである。これにより、データ転送のオーバヘッ
ドを最小限に抑えようとするものであった。
の制御方法のなかには、次のようなものがあった。即
ち、この制御方法は、あるキャッシュメモリでキャッシ
ュミスが発生した場合、このキャッシュミスしたデータ
を含むブロックを他のキャッシュメモリが保持していた
なら、アクセス速度の遅い共有メモリからそのブロック
を転送するのではなく、キャッシュメモリから直接転送
するものである。これにより、データ転送のオーバヘッ
ドを最小限に抑えようとするものであった。
【0004】このような場合、キャッシュミスしたデー
タを含むブロックを持つキャッシュメモリは一つだけと
は限らないため、そのブロックを複数のキャッシュメモ
リのうち、どのキャッシュメモリがキャッシュミスした
キャッシュメモリに対して提供するかを決定する必要が
ある。そこで、あるブロックに対して、オーナ(所有
者)となるキャッシュメモリを予め決めておく必要があ
る。この方法は、例えば、“Cache Coherence Protocol
s :Evaluation Using a Multiprocessor Simulation M
odel” James Archibald,他,acm Transactions on Co
mputer Systems,1986,November,Vol.4 ,Number4 ,
pp273−298 等に示されているBerkeley方式、Dragon方
式のスヌープキャッシュメモリで採用されている。ま
た、ブロックのオーナであるキャッシュメモリは、ブロ
ック内のデータが書き換えられていて、共有メモリと一
致しない場合は、そのブロックが追い出される時に、必
ず共有メモリにブロックを書き戻す責任を持っている。
タを含むブロックを持つキャッシュメモリは一つだけと
は限らないため、そのブロックを複数のキャッシュメモ
リのうち、どのキャッシュメモリがキャッシュミスした
キャッシュメモリに対して提供するかを決定する必要が
ある。そこで、あるブロックに対して、オーナ(所有
者)となるキャッシュメモリを予め決めておく必要があ
る。この方法は、例えば、“Cache Coherence Protocol
s :Evaluation Using a Multiprocessor Simulation M
odel” James Archibald,他,acm Transactions on Co
mputer Systems,1986,November,Vol.4 ,Number4 ,
pp273−298 等に示されているBerkeley方式、Dragon方
式のスヌープキャッシュメモリで採用されている。ま
た、ブロックのオーナであるキャッシュメモリは、ブロ
ック内のデータが書き換えられていて、共有メモリと一
致しない場合は、そのブロックが追い出される時に、必
ず共有メモリにブロックを書き戻す責任を持っている。
【0005】即ち、オーナであるキャッシュメモリは、
他のキャッシュメモリでキャッシュミスが発生し、か
つ、そのキャッシュミスしたデータを含むブロックを保
持していた場合は、そのブロックを、キャッシュミスが
発生したキャッシュメモリに対して転送する責任を持つ
と共に、あるブロックを追い出す場合、そのブロック内
のデータが書き換えられていたならば、そのブロックを
必ず共有メモリに書き戻す責任を持っている。
他のキャッシュメモリでキャッシュミスが発生し、か
つ、そのキャッシュミスしたデータを含むブロックを保
持していた場合は、そのブロックを、キャッシュミスが
発生したキャッシュメモリに対して転送する責任を持つ
と共に、あるブロックを追い出す場合、そのブロック内
のデータが書き換えられていたならば、そのブロックを
必ず共有メモリに書き戻す責任を持っている。
【0006】
【発明が解決しようとする課題】しかしながら、上記従
来の制御では、あるキャッシュメモリで、オーナである
ブロックを追い出した場合、その後、いずれかのキャッ
シュメモリで同じブロックのデータにキャッシュミスが
発生すると、そのキャッシュメモリは、必ず共有メモリ
からブロック転送を行わなければならなかった。
来の制御では、あるキャッシュメモリで、オーナである
ブロックを追い出した場合、その後、いずれかのキャッ
シュメモリで同じブロックのデータにキャッシュミスが
発生すると、そのキャッシュメモリは、必ず共有メモリ
からブロック転送を行わなければならなかった。
【0007】例えば、あるキャッシュメモリがオーナで
あるブロックを追い出した時点で、同じブロックを他の
キャッシュメモリが持っていたとしても、オーナ以外H
さブロックを転送する権限はないため、そのキャッシュ
メモリからはブロックの転送はできない。その結果、こ
のような状態で、いずれかのキャッシュメモリでキャッ
シュミスが発生した場合は、共有メモリからブロックが
転送され、ブロック転送のオーバヘッドが大きくなって
しまっていた。
あるブロックを追い出した時点で、同じブロックを他の
キャッシュメモリが持っていたとしても、オーナ以外H
さブロックを転送する権限はないため、そのキャッシュ
メモリからはブロックの転送はできない。その結果、こ
のような状態で、いずれかのキャッシュメモリでキャッ
シュミスが発生した場合は、共有メモリからブロックが
転送され、ブロック転送のオーバヘッドが大きくなって
しまっていた。
【0008】また、オーナであるキャッシュメモリが、
オーナとなっているブロック内のデータを書き換えた
後、そのブロックを追い出す場合は、必ず、共有メモリ
に書き戻さなければならなかった。従って、例えば、オ
ーナが共有メモリに書き戻したブロックと同じブロック
を他のキャッシュメモリが持ち、かつ、オーナの共有メ
モリへの書き戻し後、他のキャッシュメモリがそのブロ
ック内のデータを書き換えた場合、そのキャッシュメモ
リは、共有メモリ内のデータと一致させるために、再び
そのブロックを共有メモリに書き戻さなければならなか
った。即ち、この場合、オーナが共有メモリへ書き戻し
たブロックは、他のキャッシュメモリによって再び書き
換えられるため、オーナによるブロックの書き戻し動作
が共有メモリへの無駄なアクセスになってしまってい
た。
オーナとなっているブロック内のデータを書き換えた
後、そのブロックを追い出す場合は、必ず、共有メモリ
に書き戻さなければならなかった。従って、例えば、オ
ーナが共有メモリに書き戻したブロックと同じブロック
を他のキャッシュメモリが持ち、かつ、オーナの共有メ
モリへの書き戻し後、他のキャッシュメモリがそのブロ
ック内のデータを書き換えた場合、そのキャッシュメモ
リは、共有メモリ内のデータと一致させるために、再び
そのブロックを共有メモリに書き戻さなければならなか
った。即ち、この場合、オーナが共有メモリへ書き戻し
たブロックは、他のキャッシュメモリによって再び書き
換えられるため、オーナによるブロックの書き戻し動作
が共有メモリへの無駄なアクセスになってしまってい
た。
【0009】このような点から、キャッシュメモリにオ
ーナを設定した場合に、できるだけキャッシュメモリ間
でブロック転送が行え、共有メモリへのアクセスを抑え
ることのできるスヌープキャッシュメモリ制御システム
の実現が望まれていた。
ーナを設定した場合に、できるだけキャッシュメモリ間
でブロック転送が行え、共有メモリへのアクセスを抑え
ることのできるスヌープキャッシュメモリ制御システム
の実現が望まれていた。
【0010】
【課題を解決するための手段】本発明は、前述の課題を
解決するため次の構成を採用する。 〈請求項1の構成〉各々がプロセッサに対応して設けら
れ、かつ、各々が共有バスを介して共有メモリに接続さ
れた複数のスヌープキャッシュメモリ部のうち、いずれ
かのスヌープキャッシュメモリ部でキャッシュミスが起
きた場合、キャッシュミスしたデータを転送する責任を
有するスヌープキャッシュメモリ部をそのデータのオー
ナとし、かつ、自スヌープキャッシュメモリ部が保持す
る任意のデータを追い出す時、このデータが共有メモリ
のデータと一致しない場合は、このデータを共有メモリ
に書き戻す責任を有するスヌープキャッシュメモリ部を
そのデータのオーナとして、各スヌープキャッシュメモ
リ部間のデータの一貫性を保持するスヌープキャッシュ
メモリ制御システムにおいて、各スヌープキャッシュメ
モリ部は、次にオーナとなったスヌープキャッシュメモ
リ部のキャッシュメモリ番号を格納する次オーナ番号格
納部と、いずれかのスヌープキャッシュメモリ部で、こ
のスヌープキャッシュメモリ部がオーナとなっているデ
ータを追い出す場合、オーナ以外のスヌープキャッシュ
メモリ部では、次オーナ番号格納部を参照し、この次オ
ーナ番号が、データを追い出すスヌープキャッシュメモ
リ部のキャッシュメモリ番号に一致していた場合は、自
スヌープキャッシュメモリ部を新たなオーナとするキャ
ッシュ制御部とを備えたことを特徴とするスヌープキャ
ッシュメモリ制御システムである。
解決するため次の構成を採用する。 〈請求項1の構成〉各々がプロセッサに対応して設けら
れ、かつ、各々が共有バスを介して共有メモリに接続さ
れた複数のスヌープキャッシュメモリ部のうち、いずれ
かのスヌープキャッシュメモリ部でキャッシュミスが起
きた場合、キャッシュミスしたデータを転送する責任を
有するスヌープキャッシュメモリ部をそのデータのオー
ナとし、かつ、自スヌープキャッシュメモリ部が保持す
る任意のデータを追い出す時、このデータが共有メモリ
のデータと一致しない場合は、このデータを共有メモリ
に書き戻す責任を有するスヌープキャッシュメモリ部を
そのデータのオーナとして、各スヌープキャッシュメモ
リ部間のデータの一貫性を保持するスヌープキャッシュ
メモリ制御システムにおいて、各スヌープキャッシュメ
モリ部は、次にオーナとなったスヌープキャッシュメモ
リ部のキャッシュメモリ番号を格納する次オーナ番号格
納部と、いずれかのスヌープキャッシュメモリ部で、こ
のスヌープキャッシュメモリ部がオーナとなっているデ
ータを追い出す場合、オーナ以外のスヌープキャッシュ
メモリ部では、次オーナ番号格納部を参照し、この次オ
ーナ番号が、データを追い出すスヌープキャッシュメモ
リ部のキャッシュメモリ番号に一致していた場合は、自
スヌープキャッシュメモリ部を新たなオーナとするキャ
ッシュ制御部とを備えたことを特徴とするスヌープキャ
ッシュメモリ制御システムである。
【0011】〈請求項1の説明〉請求項1の発明では、
各スヌープキャッシュメモリ部は、自スヌープキャッシ
ュメモリ部がオーナであるかどうかの情報を有すると共
に、自スヌープキャッシュメモリ部の次のオーナがどの
スヌープキャッシュメモリ部であるかという情報(=次
オーナ番号)を持っている。
各スヌープキャッシュメモリ部は、自スヌープキャッシ
ュメモリ部がオーナであるかどうかの情報を有すると共
に、自スヌープキャッシュメモリ部の次のオーナがどの
スヌープキャッシュメモリ部であるかという情報(=次
オーナ番号)を持っている。
【0012】任意のスヌープキャッシュメモリ部でデー
タを追い出し、このスヌープキャッシュメモリ部のキャ
ッシュメモリ番号が、自スヌープキャッシュメモリ部の
次オーナ番号に一致している場合、即ち、自スヌープキ
ャッシュメモリ部が、データを追い出すスヌープキャッ
シュメモリ部の前のオーナである場合は、自スヌープキ
ャッシュメモリ部が新たなオーナとなる。
タを追い出し、このスヌープキャッシュメモリ部のキャ
ッシュメモリ番号が、自スヌープキャッシュメモリ部の
次オーナ番号に一致している場合、即ち、自スヌープキ
ャッシュメモリ部が、データを追い出すスヌープキャッ
シュメモリ部の前のオーナである場合は、自スヌープキ
ャッシュメモリ部が新たなオーナとなる。
【0013】従って、キャッシュミス時に共有メモリへ
の書き戻しが必要な場合でも、書き戻ししようとするデ
ータをキャッシュメモリで保持するため、共有メモリへ
の書き戻しの頻度を下げることができる。
の書き戻しが必要な場合でも、書き戻ししようとするデ
ータをキャッシュメモリで保持するため、共有メモリへ
の書き戻しの頻度を下げることができる。
【0014】また、オーナを委譲することで、オーナで
あるデータがキャッシュメモリに存在する時間が長くな
り、キャッシュミス時のブロック転送が共有メモリから
ではなく、キャッシュメモリから行える確率が増加す
る。このような点から、キャッシュミス時に時間のかか
る共有メモリへのアクセス頻度が減少するので、キャッ
シュミス時のレスポンスの向上と、共有バスの利用効率
が下がることによりスループットの増大を期待すること
ができる。
あるデータがキャッシュメモリに存在する時間が長くな
り、キャッシュミス時のブロック転送が共有メモリから
ではなく、キャッシュメモリから行える確率が増加す
る。このような点から、キャッシュミス時に時間のかか
る共有メモリへのアクセス頻度が減少するので、キャッ
シュミス時のレスポンスの向上と、共有バスの利用効率
が下がることによりスループットの増大を期待すること
ができる。
【0015】更に、次のオーナの情報を記憶し、この次
オーナの情報を用いてオーナ委譲を行うようにしている
ので、共有メモリを意識する必要がなく、従って、次オ
ーナの情報の記憶部やこの記憶部への接続線、更にオー
ナの情報を転送する信号線のビット数の削減を図ること
ができる。
オーナの情報を用いてオーナ委譲を行うようにしている
ので、共有メモリを意識する必要がなく、従って、次オ
ーナの情報の記憶部やこの記憶部への接続線、更にオー
ナの情報を転送する信号線のビット数の削減を図ること
ができる。
【0016】〈請求項2の構成〉請求項1に記載のスヌ
ープキャッシュメモリ制御システムにおいて、いずれか
のスヌープキャッシュメモリ部で、自スヌープキャッシ
ュメモリ部が保持するデータを追い出す場合、自スヌー
プキャッシュメモリ部を次オーナとするスヌープキャッ
シュメモリ部の次オーナ番号を、自スヌープキャッシュ
メモリ部の次オーナ番号格納部に格納されている次オー
ナ番号に書き換えるキャッシュ制御部を備えたことを特
徴とするスヌープキャッシュメモリ制御システム。
ープキャッシュメモリ制御システムにおいて、いずれか
のスヌープキャッシュメモリ部で、自スヌープキャッシ
ュメモリ部が保持するデータを追い出す場合、自スヌー
プキャッシュメモリ部を次オーナとするスヌープキャッ
シュメモリ部の次オーナ番号を、自スヌープキャッシュ
メモリ部の次オーナ番号格納部に格納されている次オー
ナ番号に書き換えるキャッシュ制御部を備えたことを特
徴とするスヌープキャッシュメモリ制御システム。
【0017】〈請求項2の説明〉請求項2の発明は、請
求項1の発明に加えて、いずれかのスヌープキャッシュ
メモリ部でデータを追い出す場合は、自身を次オーナと
するスヌープキャッシュメモリ部の次オーナ番号を、自
身の次オーナ番号に書き換えるようにしたものである。
これにより、各スヌープキャッシュメモリ部の次のオー
ナの関係が正確に設定され、その結果、いずれかのスヌ
ープキャッシュメモリ部にデータが存在する場合は、必
ずスヌープキャッシュメモリ部間でデータ転送やオーナ
委譲を行うことができ、キャッシュミス時の共有メモリ
への書き戻しの頻度を更に減少させることができる。
求項1の発明に加えて、いずれかのスヌープキャッシュ
メモリ部でデータを追い出す場合は、自身を次オーナと
するスヌープキャッシュメモリ部の次オーナ番号を、自
身の次オーナ番号に書き換えるようにしたものである。
これにより、各スヌープキャッシュメモリ部の次のオー
ナの関係が正確に設定され、その結果、いずれかのスヌ
ープキャッシュメモリ部にデータが存在する場合は、必
ずスヌープキャッシュメモリ部間でデータ転送やオーナ
委譲を行うことができ、キャッシュミス時の共有メモリ
への書き戻しの頻度を更に減少させることができる。
【0018】〈請求項3の構成〉請求項2に記載のスヌ
ープキャッシュメモリ制御システムにおいて、キャッシ
ュ制御部は、自スヌープキャッシュメモリ部が任意のデ
ータを追い出す場合、自スヌープキャッシュメモリ部の
オーナ番号と次オーナ番号を共有バスに出力し、一方、
共有バス上に出力されているオーナ番号が、自スヌープ
キャッシュメモリ部の次オーナ番号と一致した場合は、
この次オーナ番号を、共有バス上に出力されている次オ
ーナ番号に更新する次オーナ番号更新制御部を備えたこ
とを特徴とするスヌープキャッシュメモリ制御システム
である。
ープキャッシュメモリ制御システムにおいて、キャッシ
ュ制御部は、自スヌープキャッシュメモリ部が任意のデ
ータを追い出す場合、自スヌープキャッシュメモリ部の
オーナ番号と次オーナ番号を共有バスに出力し、一方、
共有バス上に出力されているオーナ番号が、自スヌープ
キャッシュメモリ部の次オーナ番号と一致した場合は、
この次オーナ番号を、共有バス上に出力されている次オ
ーナ番号に更新する次オーナ番号更新制御部を備えたこ
とを特徴とするスヌープキャッシュメモリ制御システム
である。
【0019】〈請求項3の説明〉請求項3の発明は、次
オーナ番号の更新処理を行う機能部として、次オーナ番
号更新制御部を備えたものである。この次オーナ番号更
新制御部は、自スヌープキャッシュメモリ部が任意のデ
ータを追い出す場合、そのオーナ番号と次オーナ番号を
共有バスに出力する。一方、このような動作により、共
有バス上にオーナ番号と次オーナ番号とが出力されてい
る場合、他のスヌープキャッシュメモリ部の次オーナ番
号更新制御部では、先ず、共有バス上のオーナ番号が、
そのスヌープキャッシュメモリ部の次オーナ番号に一致
するかを判定する。その結果、一致した場合は、そのス
ヌープキャッシュメモリ部の次オーナ番号を、共有バス
上に出力されている次オーナ番号に更新する。
オーナ番号の更新処理を行う機能部として、次オーナ番
号更新制御部を備えたものである。この次オーナ番号更
新制御部は、自スヌープキャッシュメモリ部が任意のデ
ータを追い出す場合、そのオーナ番号と次オーナ番号を
共有バスに出力する。一方、このような動作により、共
有バス上にオーナ番号と次オーナ番号とが出力されてい
る場合、他のスヌープキャッシュメモリ部の次オーナ番
号更新制御部では、先ず、共有バス上のオーナ番号が、
そのスヌープキャッシュメモリ部の次オーナ番号に一致
するかを判定する。その結果、一致した場合は、そのス
ヌープキャッシュメモリ部の次オーナ番号を、共有バス
上に出力されている次オーナ番号に更新する。
【0020】これにより、データを追い出すスヌープキ
ャッシュメモリ部で、前のオーナが誰であるかを知る必
要がなく、次オーナ番号の更新を行うことができる。従
って、各スヌープキャッシュメモリ部の次のオーナの関
係が正確に設定され、その結果、いずれかのスヌープキ
ャッシュメモリ部にデータが存在する場合は、必ずスヌ
ープキャッシュメモリ部間でデータ転送やオーナ委譲を
行うことができ、キャッシュミス時の共有メモリへの書
き戻しの頻度を更に減少させることができる。
ャッシュメモリ部で、前のオーナが誰であるかを知る必
要がなく、次オーナ番号の更新を行うことができる。従
って、各スヌープキャッシュメモリ部の次のオーナの関
係が正確に設定され、その結果、いずれかのスヌープキ
ャッシュメモリ部にデータが存在する場合は、必ずスヌ
ープキャッシュメモリ部間でデータ転送やオーナ委譲を
行うことができ、キャッシュミス時の共有メモリへの書
き戻しの頻度を更に減少させることができる。
【0021】〈請求項4の構成〉請求項1〜3のいずれ
かに記載のスヌープキャッシュメモリ制御システムにお
いて、キャッシュ制御部は、自スヌープキャッシュメモ
リ部がオーナであるデータを追い出す時、このデータを
他のスヌープキャッシュメモリ部も保有していた場合
は、自スヌープキャッシュメモリ部のキャッシュメモリ
番号とオーナ委譲要求を共有バス上に出力し、一方、共
有バス上にオーナ委譲要求が出力され、かつ、共有バス
上のキャッシュメモリ番号が、自スヌープキャッシュメ
モリ部の次オーナ番号に一致した場合は、オーナを自ス
ヌープキャッシュメモリ部に設定するオーナ委譲制御部
を備えたことを特徴とするスヌープキャッシュメモリ制
御システムである。
かに記載のスヌープキャッシュメモリ制御システムにお
いて、キャッシュ制御部は、自スヌープキャッシュメモ
リ部がオーナであるデータを追い出す時、このデータを
他のスヌープキャッシュメモリ部も保有していた場合
は、自スヌープキャッシュメモリ部のキャッシュメモリ
番号とオーナ委譲要求を共有バス上に出力し、一方、共
有バス上にオーナ委譲要求が出力され、かつ、共有バス
上のキャッシュメモリ番号が、自スヌープキャッシュメ
モリ部の次オーナ番号に一致した場合は、オーナを自ス
ヌープキャッシュメモリ部に設定するオーナ委譲制御部
を備えたことを特徴とするスヌープキャッシュメモリ制
御システムである。
【0022】〈請求項4の説明〉請求項4の発明は、オ
ーナ委譲処理を行う機能部として、オーナ委譲制御部を
設けたものである。このオーナ委譲制御部は、自スヌー
プキャッシュメモリ部がオーナであるデータを追い出す
場合、このデータを他のスヌープキャッシュメモリ部で
も共有しているときは、自身のキャッシュメモリ番号と
オーナ委譲要求を共有バス上に出力する。一方、このよ
うな動作により、共有バス上にオーナ委譲要求とキャッ
シュメモリ番号とが出力されている場合、他のスヌープ
キャッシュメモリ部のオーナ委譲制御部では、先ず、共
有バス上のキャッシュメモリ番号が、そのスヌープキャ
ッシュメモリ部の次オーナ番号に一致するかを判定す
る。その結果、一致した場合は、自身を新たなオーナと
する。
ーナ委譲処理を行う機能部として、オーナ委譲制御部を
設けたものである。このオーナ委譲制御部は、自スヌー
プキャッシュメモリ部がオーナであるデータを追い出す
場合、このデータを他のスヌープキャッシュメモリ部で
も共有しているときは、自身のキャッシュメモリ番号と
オーナ委譲要求を共有バス上に出力する。一方、このよ
うな動作により、共有バス上にオーナ委譲要求とキャッ
シュメモリ番号とが出力されている場合、他のスヌープ
キャッシュメモリ部のオーナ委譲制御部では、先ず、共
有バス上のキャッシュメモリ番号が、そのスヌープキャ
ッシュメモリ部の次オーナ番号に一致するかを判定す
る。その結果、一致した場合は、自身を新たなオーナと
する。
【0023】これにより、データを追い出すスヌープキ
ャッシュメモリ部で、前のオーナが誰であるかを知る必
要がなく、オーナ委譲を行うことができる。従って、キ
ャッシュミス時に共有メモリへの書き戻しが必要な場合
でも、書き戻ししようとするデータをキャッシュメモリ
で保持するため、共有メモリへの書き戻しの頻度を下げ
ることができる。また、オーナを委譲することで、オー
ナであるデータがキャッシュメモリに存在する時間が長
くなり、キャッシュミス時のブロック転送が共有メモリ
からではなく、キャッシュメモリから行える確率が増加
する。このような点から、キャッシュミス時に時間のか
かる共有メモリへのアクセス頻度が減少するので、キャ
ッシュミス時のレスポンスの向上と、共有バスの利用効
率が下がることによりスループットの増大を期待するこ
とができる。
ャッシュメモリ部で、前のオーナが誰であるかを知る必
要がなく、オーナ委譲を行うことができる。従って、キ
ャッシュミス時に共有メモリへの書き戻しが必要な場合
でも、書き戻ししようとするデータをキャッシュメモリ
で保持するため、共有メモリへの書き戻しの頻度を下げ
ることができる。また、オーナを委譲することで、オー
ナであるデータがキャッシュメモリに存在する時間が長
くなり、キャッシュミス時のブロック転送が共有メモリ
からではなく、キャッシュメモリから行える確率が増加
する。このような点から、キャッシュミス時に時間のか
かる共有メモリへのアクセス頻度が減少するので、キャ
ッシュミス時のレスポンスの向上と、共有バスの利用効
率が下がることによりスループットの増大を期待するこ
とができる。
【0024】〈請求項5の構成〉請求項1〜4のいずれ
かに記載のスヌープキャッシュメモリ制御システムにお
いて、キャッシュ制御部は、キャッシュミス時のデータ
転送がスヌープキャッシュメモリ部間で行われる場合、
オーナである転送元のスヌープキャッシュメモリ部で
は、転送先のスヌープキャッシュメモリ部の番号を次オ
ーナ番号格納部に格納し、転送先のスヌープキャッシュ
メモリ部では、オーナを自スヌープキャッシュメモリ部
に設定するブロック転送制御部を備えたことを特徴とす
るスヌープキャッシュメモリ制御システムである。
かに記載のスヌープキャッシュメモリ制御システムにお
いて、キャッシュ制御部は、キャッシュミス時のデータ
転送がスヌープキャッシュメモリ部間で行われる場合、
オーナである転送元のスヌープキャッシュメモリ部で
は、転送先のスヌープキャッシュメモリ部の番号を次オ
ーナ番号格納部に格納し、転送先のスヌープキャッシュ
メモリ部では、オーナを自スヌープキャッシュメモリ部
に設定するブロック転送制御部を備えたことを特徴とす
るスヌープキャッシュメモリ制御システムである。
【0025】〈請求項5の説明〉請求項5の発明は、キ
ャッシュミス時のデータ転送をスヌープキャッシュメモ
リ部間で行う機能部としてブロック転送制御部を設けた
ものである。このブロック転送制御部は、転送元では次
オーナ番号を転送先のスヌープキャッシュメモリ部のキ
ャッシュメモリ番号に設定し、転送先では、オーナを自
身に設定する。これにより、キャッシュミス時のデータ
転送がスヌープキャッシュメモリ部間で行われる場合の
オーナと次オーナとの関係を確実に設定することができ
る。
ャッシュミス時のデータ転送をスヌープキャッシュメモ
リ部間で行う機能部としてブロック転送制御部を設けた
ものである。このブロック転送制御部は、転送元では次
オーナ番号を転送先のスヌープキャッシュメモリ部のキ
ャッシュメモリ番号に設定し、転送先では、オーナを自
身に設定する。これにより、キャッシュミス時のデータ
転送がスヌープキャッシュメモリ部間で行われる場合の
オーナと次オーナとの関係を確実に設定することができ
る。
【0026】〈請求項6の構成〉請求項1〜5のいずれ
かに記載のスヌープキャッシュメモリ制御システムにお
いて、キャッシュ制御部は、自スヌープキャッシュメモ
リ部が保持するデータにプロセッサから書き込みが行わ
れた場合、他のスヌープキャッシュメモリ部に対してデ
ータの無効化要求を行い、かつ、自スヌープキャッシュ
メモリ部をオーナに設定する無効化制御部を備えたこと
を特徴とするスヌープキャッシュメモリ制御システムで
ある。
かに記載のスヌープキャッシュメモリ制御システムにお
いて、キャッシュ制御部は、自スヌープキャッシュメモ
リ部が保持するデータにプロセッサから書き込みが行わ
れた場合、他のスヌープキャッシュメモリ部に対してデ
ータの無効化要求を行い、かつ、自スヌープキャッシュ
メモリ部をオーナに設定する無効化制御部を備えたこと
を特徴とするスヌープキャッシュメモリ制御システムで
ある。
【0027】〈請求項6の説明〉請求項6の発明は、プ
ロセッサから任意のデータに書き込みが行われた場合、
他のスヌープキャッシュメモリ部が保持するデータを無
効化するようにしたものである。
ロセッサから任意のデータに書き込みが行われた場合、
他のスヌープキャッシュメモリ部が保持するデータを無
効化するようにしたものである。
【0028】〈請求項7の構成〉請求項1〜5のいずれ
かに記載のスヌープキャッシュメモリ制御システムにお
いて、キャッシュ制御部は、自スヌープキャッシュメモ
リ部が保持するデータにプロセッサから書き込みが行わ
れ、かつ、このデータを他のスヌープキャッシュメモリ
部も保有していた場合は、自スヌープキャッシュメモリ
部をオーナに設定すると共に、自スヌープキャッシュメ
モリ部のキャッシュメモリ番号とデータ更新要求を共有
バス上に出力し、一方、共有バス上にデータ更新要求が
出力され、かつ、このデータを自スヌープキャッシュメ
モリ部が保有していた場合は、データの更新を行うと共
に、自スヌープキャッシュメモリ部がオーナであった場
合は、オーナをデータ更新要求元に移動し、かつ、次オ
ーナ番号をデータ更新要求元のスヌープキャッシュメモ
リ部のキャッシュメモリ番号に設定する更新制御部を備
えたことを特徴とするスヌープキャッシュメモリ制御シ
ステムである。
かに記載のスヌープキャッシュメモリ制御システムにお
いて、キャッシュ制御部は、自スヌープキャッシュメモ
リ部が保持するデータにプロセッサから書き込みが行わ
れ、かつ、このデータを他のスヌープキャッシュメモリ
部も保有していた場合は、自スヌープキャッシュメモリ
部をオーナに設定すると共に、自スヌープキャッシュメ
モリ部のキャッシュメモリ番号とデータ更新要求を共有
バス上に出力し、一方、共有バス上にデータ更新要求が
出力され、かつ、このデータを自スヌープキャッシュメ
モリ部が保有していた場合は、データの更新を行うと共
に、自スヌープキャッシュメモリ部がオーナであった場
合は、オーナをデータ更新要求元に移動し、かつ、次オ
ーナ番号をデータ更新要求元のスヌープキャッシュメモ
リ部のキャッシュメモリ番号に設定する更新制御部を備
えたことを特徴とするスヌープキャッシュメモリ制御シ
ステムである。
【0029】〈請求項7の説明〉請求項7の発明は、プ
ロセッサから任意のデータに書き込みが行われた場合、
他のスヌープキャッシュメモリ部が保持するデータを更
新するようにしたものである。即ち、更新制御部は、プ
ロセッサから書き込みが行われ、これが共有データであ
った場合は、自身をオーナに設定すると共に、自身のキ
ャッシュメモリ番号とデータ更新要求を共有バス上に送
出する。一方、このような動作により、共有バス上にデ
ータ更新要求とキャッシュメモリ番号とが出力されてい
る場合、他のスヌープキャッシュメモリ部の更新制御部
では、対応するデータを更新すると共に、自スヌープキ
ャッシュメモリ部がオーナであった場合は、その次オー
ナ番号を、共有バス上のキャッシュメモリ番号に設定す
る。
ロセッサから任意のデータに書き込みが行われた場合、
他のスヌープキャッシュメモリ部が保持するデータを更
新するようにしたものである。即ち、更新制御部は、プ
ロセッサから書き込みが行われ、これが共有データであ
った場合は、自身をオーナに設定すると共に、自身のキ
ャッシュメモリ番号とデータ更新要求を共有バス上に送
出する。一方、このような動作により、共有バス上にデ
ータ更新要求とキャッシュメモリ番号とが出力されてい
る場合、他のスヌープキャッシュメモリ部の更新制御部
では、対応するデータを更新すると共に、自スヌープキ
ャッシュメモリ部がオーナであった場合は、その次オー
ナ番号を、共有バス上のキャッシュメモリ番号に設定す
る。
【0030】〈請求項8の構成〉請求項1〜5のいずれ
かに記載のスヌープキャッシュメモリ制御システムにお
いて、キャッシュ制御部は、自スヌープキャッシュメモ
リ部が保持するデータにプロセッサから書き込みが行わ
れ、かつ、このデータを他のスヌープキャッシュメモリ
部も保有していた場合は、自スヌープキャッシュメモリ
部をオーナに設定すると共に、自スヌープキャッシュメ
モリ部のキャッシュメモリ番号と次オーナ番号とデータ
更新要求とを共有バス上に出力し、一方、共有バス上に
データ更新要求が出力され、かつ、このデータを自スヌ
ープキャッシュメモリ部が保有し、自スヌープキャッシ
ュメモリ部がオーナでなく、自スヌープキャッシュメモ
リ部の次オーナ番号と、データ更新要求元のキャッシュ
メモリ番号とが一致した場合は、データの更新を行うと
共に、自スヌープキャッシュメモリ部の次オーナ番号を
データ更新要求元の次オーナ番号に書き換え、このデー
タを自スヌープキャッシュメモリ部が保有し、自スヌー
プキャッシュメモリ部がオーナである場合は、データの
更新を行うと共に、自スヌープキャッシュメモリ部の次
オーナ番号をデータ更新要求元のキャッシュメモリ番号
に書き換える更新制御部を備えたことを特徴とするスヌ
ープキャッシュメモリ制御システムである。
かに記載のスヌープキャッシュメモリ制御システムにお
いて、キャッシュ制御部は、自スヌープキャッシュメモ
リ部が保持するデータにプロセッサから書き込みが行わ
れ、かつ、このデータを他のスヌープキャッシュメモリ
部も保有していた場合は、自スヌープキャッシュメモリ
部をオーナに設定すると共に、自スヌープキャッシュメ
モリ部のキャッシュメモリ番号と次オーナ番号とデータ
更新要求とを共有バス上に出力し、一方、共有バス上に
データ更新要求が出力され、かつ、このデータを自スヌ
ープキャッシュメモリ部が保有し、自スヌープキャッシ
ュメモリ部がオーナでなく、自スヌープキャッシュメモ
リ部の次オーナ番号と、データ更新要求元のキャッシュ
メモリ番号とが一致した場合は、データの更新を行うと
共に、自スヌープキャッシュメモリ部の次オーナ番号を
データ更新要求元の次オーナ番号に書き換え、このデー
タを自スヌープキャッシュメモリ部が保有し、自スヌー
プキャッシュメモリ部がオーナである場合は、データの
更新を行うと共に、自スヌープキャッシュメモリ部の次
オーナ番号をデータ更新要求元のキャッシュメモリ番号
に書き換える更新制御部を備えたことを特徴とするスヌ
ープキャッシュメモリ制御システムである。
【0031】〈請求項8の説明〉請求項8の発明は、プ
ロセッサから任意のデータに書き込みが行われた場合、
他のスヌープキャッシュメモリ部が保持するデータを更
新するようにしたものである。即ち、更新制御部は、プ
ロセッサから書き込みが行われ、これが共有データであ
った場合は、自身をオーナに設定すると共に、自身のキ
ャッシュメモリ番号と次オーナ番号とデータ更新要求を
共有バス上に送出する。一方、このような動作により、
共有バス上にデータ更新要求が出力されている場合、他
のスヌープキャッシュメモリ部の更新制御部では、対応
するデータを更新すると共に、自スヌープキャッシュメ
モリ部がオーナでなく、共有バス上のキャッシュメモリ
番号と自身の次オーナ番号が一致した場合は、この次オ
ーナ番号を、共有バス上に出力されている次オーナ番号
に設定する。また、自スヌープキャッシュメモリ部がオ
ーナである場合は、共有バス上のキャッシュメモリ番号
を自スヌープキャッシュメモリ部の次オーナ番号に設定
する。
ロセッサから任意のデータに書き込みが行われた場合、
他のスヌープキャッシュメモリ部が保持するデータを更
新するようにしたものである。即ち、更新制御部は、プ
ロセッサから書き込みが行われ、これが共有データであ
った場合は、自身をオーナに設定すると共に、自身のキ
ャッシュメモリ番号と次オーナ番号とデータ更新要求を
共有バス上に送出する。一方、このような動作により、
共有バス上にデータ更新要求が出力されている場合、他
のスヌープキャッシュメモリ部の更新制御部では、対応
するデータを更新すると共に、自スヌープキャッシュメ
モリ部がオーナでなく、共有バス上のキャッシュメモリ
番号と自身の次オーナ番号が一致した場合は、この次オ
ーナ番号を、共有バス上に出力されている次オーナ番号
に設定する。また、自スヌープキャッシュメモリ部がオ
ーナである場合は、共有バス上のキャッシュメモリ番号
を自スヌープキャッシュメモリ部の次オーナ番号に設定
する。
【0032】
【発明の実施の形態】以下、本発明の実施の形態を図面
を用いて詳細に説明する。
を用いて詳細に説明する。
【0033】《具体例1》 〈構成〉図1は本発明のスヌープキャッシュメモリ制御
システムの具体例1を示す構成図であるが、この説明に
先立ち、本発明のスヌープキャッシュメモリ制御システ
ムを適用した共有バス型マルチプロセッサシステムの構
成について説明する。
システムの具体例1を示す構成図であるが、この説明に
先立ち、本発明のスヌープキャッシュメモリ制御システ
ムを適用した共有バス型マルチプロセッサシステムの構
成について説明する。
【0034】図2は、共有バス型マルチプロセッサシス
テムの構成図である。図のシステムは、共有メモリ50
と、複数の要素プロセッサ60〜70を有しており、各
要素プロセッサ60〜70、例えば、要素プロセッサ6
0は、スヌープキャッシュメモリ部61とプロセッサ6
2とを有している。また、各スヌープキャッシュメモリ
部61〜71は、共有バス80を介して共有メモリ50
と接続されている。
テムの構成図である。図のシステムは、共有メモリ50
と、複数の要素プロセッサ60〜70を有しており、各
要素プロセッサ60〜70、例えば、要素プロセッサ6
0は、スヌープキャッシュメモリ部61とプロセッサ6
2とを有している。また、各スヌープキャッシュメモリ
部61〜71は、共有バス80を介して共有メモリ50
と接続されている。
【0035】共有バス80は、共有メモリ50と、スヌ
ープキャッシュメモリ部61、71に共通するアドレス
を転送する共有アドレスバス線81と、データを転送す
る共有データバス線82と、ブロック読み出し要求や無
効化要求等を転送する共有バスコマンド線83と、共有
メモリ50へのキャッシュブロックの書き戻しおよび共
有メモリ50からのキャッシュブロックの読み出しの時
に使用するタイミング信号を転送するための共有メモリ
アクノリッジ線84と、キャッシュミス時のブロック転
送の際に、同じブロックを他のスヌープキャッシュメモ
リ部で共有していることを表すシェアード線85と、そ
の時にそのブロックのオーナが存在していることを表す
オーナ線86と、ブロックをキャッシュメモリから転送
する時に転送先のスヌープキャッシュメモリ部の番号を
表し、また、キャッシュミス時のリプレース処理でオー
ナの委譲要求をする場合の要求元のスヌープキャッシュ
メモリ部の番号を表すオーナ番号線87と、キャッシュ
メモリ間のブロック転送時にそのブロックが書き換えら
れていることを表すダーティ線88とからなり、図示の
ように、共有メモリ50と各スヌープキャッシュメモリ
部61、71との間を接続している。尚、オーナ線86
は、キャッシュミス時のリプレース処理で、オーナの委
譲要求があった時の応答を表すためにも用いられる。
ープキャッシュメモリ部61、71に共通するアドレス
を転送する共有アドレスバス線81と、データを転送す
る共有データバス線82と、ブロック読み出し要求や無
効化要求等を転送する共有バスコマンド線83と、共有
メモリ50へのキャッシュブロックの書き戻しおよび共
有メモリ50からのキャッシュブロックの読み出しの時
に使用するタイミング信号を転送するための共有メモリ
アクノリッジ線84と、キャッシュミス時のブロック転
送の際に、同じブロックを他のスヌープキャッシュメモ
リ部で共有していることを表すシェアード線85と、そ
の時にそのブロックのオーナが存在していることを表す
オーナ線86と、ブロックをキャッシュメモリから転送
する時に転送先のスヌープキャッシュメモリ部の番号を
表し、また、キャッシュミス時のリプレース処理でオー
ナの委譲要求をする場合の要求元のスヌープキャッシュ
メモリ部の番号を表すオーナ番号線87と、キャッシュ
メモリ間のブロック転送時にそのブロックが書き換えら
れていることを表すダーティ線88とからなり、図示の
ように、共有メモリ50と各スヌープキャッシュメモリ
部61、71との間を接続している。尚、オーナ線86
は、キャッシュミス時のリプレース処理で、オーナの委
譲要求があった時の応答を表すためにも用いられる。
【0036】また、本具体例におけるアドレス構成は次
のようになっている。図3は、本具体例におけるアドレ
ス構成の説明図である。図示のように、アドレス構成
は、タグ部41、インデックス部42、ブロックオフセ
ット43から構成されており、共有メモリ50中のブロ
ック格納位置は、タグ部41とインデックス部42の値
で特定され、ブロック中のデータはブロックオフセット
43の値によって特定される。また、キャッシュメモリ
中のブロックの格納位置は、インデックス部42の値に
よって特定される。
のようになっている。図3は、本具体例におけるアドレ
ス構成の説明図である。図示のように、アドレス構成
は、タグ部41、インデックス部42、ブロックオフセ
ット43から構成されており、共有メモリ50中のブロ
ック格納位置は、タグ部41とインデックス部42の値
で特定され、ブロック中のデータはブロックオフセット
43の値によって特定される。また、キャッシュメモリ
中のブロックの格納位置は、インデックス部42の値に
よって特定される。
【0037】次に、図1を用いて本具体例のスヌープキ
ャッシュメモリ制御システムを説明する。図示の構成
は、図2におけるスヌープキャッシュメモリ部61、プ
ロセッサ62および共有バス80の部分を示している。
尚、スヌープキャッシュメモリ部71およびプロセッサ
72は、スヌープキャッシュメモリ部61およびプロセ
ッサ62と同様の構成であるため、その図示は省略す
る。
ャッシュメモリ制御システムを説明する。図示の構成
は、図2におけるスヌープキャッシュメモリ部61、プ
ロセッサ62および共有バス80の部分を示している。
尚、スヌープキャッシュメモリ部71およびプロセッサ
72は、スヌープキャッシュメモリ部61およびプロセ
ッサ62と同様の構成であるため、その図示は省略す
る。
【0038】スヌープキャッシュメモリ部61は、プロ
セッサ62側からのアクセスのためのアドレスを格納す
るアドレスレジスタ10と、共有メモリ50側からのア
クセスのためのアドレスを格納する共有アドレスレジス
タ11と、アドレスレジスタ10の値を共有バス80に
出力するためのバッファ12と、アドレスレジスタ10
または共有アドレスレジスタ11の値と後述するタグメ
モリ13aの値とを比較してキャッシュヒットを判定す
るヒット判定部13と、キャッシュメモリ15のブロッ
ク毎の状態を表すステータスメモリ14と、実際のキャ
ッシングブロックを格納するキャッシュメモリ15と、
キャッシュメモリ15から読み出されたデータあるいは
プロセッサ62からキャッシュメモリ15に書き込むデ
ータを一時的に格納するデータレジスタ16と、共有デ
ータバス線82上のデータとキャッシュメモリ15内の
データまたはデータレジスタ16のデータとを相互にや
りとりするための双方向バッファ17と、スヌープキャ
ッシュメモリ部としての各部の制御を行うキャッシュ制
御部18からなる。
セッサ62側からのアクセスのためのアドレスを格納す
るアドレスレジスタ10と、共有メモリ50側からのア
クセスのためのアドレスを格納する共有アドレスレジス
タ11と、アドレスレジスタ10の値を共有バス80に
出力するためのバッファ12と、アドレスレジスタ10
または共有アドレスレジスタ11の値と後述するタグメ
モリ13aの値とを比較してキャッシュヒットを判定す
るヒット判定部13と、キャッシュメモリ15のブロッ
ク毎の状態を表すステータスメモリ14と、実際のキャ
ッシングブロックを格納するキャッシュメモリ15と、
キャッシュメモリ15から読み出されたデータあるいは
プロセッサ62からキャッシュメモリ15に書き込むデ
ータを一時的に格納するデータレジスタ16と、共有デ
ータバス線82上のデータとキャッシュメモリ15内の
データまたはデータレジスタ16のデータとを相互にや
りとりするための双方向バッファ17と、スヌープキャ
ッシュメモリ部としての各部の制御を行うキャッシュ制
御部18からなる。
【0039】また、キャッシュ制御部18には、メモリ
オペレーションコード線20および共有バスコマンド線
83〜ダーティ線88が接続されている。更に、共有デ
ータバス線82は、双方向バッファ17を介してキャッ
シュメモリ15およびデータレジスタ16に接続されて
いる。共有アドレスバス線81は、バッファ12を介し
てアドレスレジスタ10に接続されていると共に、共有
アドレスレジスタ11とヒット判定部13に接続されて
いる。
オペレーションコード線20および共有バスコマンド線
83〜ダーティ線88が接続されている。更に、共有デ
ータバス線82は、双方向バッファ17を介してキャッ
シュメモリ15およびデータレジスタ16に接続されて
いる。共有アドレスバス線81は、バッファ12を介し
てアドレスレジスタ10に接続されていると共に、共有
アドレスレジスタ11とヒット判定部13に接続されて
いる。
【0040】ヒット判定部13には、タグメモリ13a
と、キャッシュメモリ15のヒット判定回路(図示せ
ず)が含まれている。タグメモリ13aには、キャッシ
ュメモリ15に格納されている各ブロックのインデック
ス部42の値に対応したタグ部41の値が格納されてい
る。
と、キャッシュメモリ15のヒット判定回路(図示せ
ず)が含まれている。タグメモリ13aには、キャッシ
ュメモリ15に格納されている各ブロックのインデック
ス部42の値に対応したタグ部41の値が格納されてい
る。
【0041】ステータスメモリ14は、キャッシュメモ
リ15内の該当ブロックが有効なものであることを表す
バリッドフラグ14a、他のスヌープキャッシュメモリ
部が該当ブロックを共有している可能性があることを表
すシェアードフラグ14b、該当ブロックの所有者であ
ることを表すオーナフラグ14c、プロセッサが該当ブ
ロックに書き込みを行ったことを表すダーティフラグ1
4d、および他のスヌープキャッシュメモリ部へそのブ
ロックを転送した場合等のオーナが移動した時に、次の
オーナのスヌープキャッシュメモリ部の番号を表す次オ
ーナ番号を格納する次オーナ番号格納部14eからな
る。ここで、スヌープキャッシュメモリ部の番号は、各
スヌープキャッシュメモリ部に1から順に振った番号で
ある。これらのフラグの判定および値のセットはキャッ
シュ制御部18によって行われる。
リ15内の該当ブロックが有効なものであることを表す
バリッドフラグ14a、他のスヌープキャッシュメモリ
部が該当ブロックを共有している可能性があることを表
すシェアードフラグ14b、該当ブロックの所有者であ
ることを表すオーナフラグ14c、プロセッサが該当ブ
ロックに書き込みを行ったことを表すダーティフラグ1
4d、および他のスヌープキャッシュメモリ部へそのブ
ロックを転送した場合等のオーナが移動した時に、次の
オーナのスヌープキャッシュメモリ部の番号を表す次オ
ーナ番号を格納する次オーナ番号格納部14eからな
る。ここで、スヌープキャッシュメモリ部の番号は、各
スヌープキャッシュメモリ部に1から順に振った番号で
ある。これらのフラグの判定および値のセットはキャッ
シュ制御部18によって行われる。
【0042】キャッシュ制御部18は、いずれかのスヌ
ープキャッシュメモリ部で、当該スヌープキャッシュメ
モリ部がオーナとなっているデータを追い出す場合、オ
ーナ以外のスヌープキャッシュメモリ部では、次オーナ
番号格納部14eを参照し、この次オーナ番号が、デー
タを追い出すスヌープキャッシュメモリ部の番号に一致
していた場合は、自スヌープキャッシュメモリ部を新た
なオーナとする機能を有し、オーナ委譲制御部18a、
ブロック転送制御部18b、無効化制御部18cとを備
えている。
ープキャッシュメモリ部で、当該スヌープキャッシュメ
モリ部がオーナとなっているデータを追い出す場合、オ
ーナ以外のスヌープキャッシュメモリ部では、次オーナ
番号格納部14eを参照し、この次オーナ番号が、デー
タを追い出すスヌープキャッシュメモリ部の番号に一致
していた場合は、自スヌープキャッシュメモリ部を新た
なオーナとする機能を有し、オーナ委譲制御部18a、
ブロック転送制御部18b、無効化制御部18cとを備
えている。
【0043】オーナ委譲制御部18aは、自スヌープキ
ャッシュメモリ部がオーナであるデータを追い出す時、
そのデータを他のスヌープキャッシュメモリ部が保有す
るか否かをシェアードフラグ14bに基づいて判定し、
他のスヌープキャッシュメモリ部もそのデータを保有し
ていた場合は、自スヌープキャッシュメモリ部のキャッ
シュメモリ番号とオーナ委譲要求を共有バス80上に出
力し、一方、共有バス80上にオーナ委譲要求が出力さ
れ、かつ、出力されているキャッシュメモリ番号が、自
スヌープキャッシュメモリ部の次オーナ番号に一致した
場合は、オーナを自スヌープキャッシュメモリ部に設定
する機能を有している。
ャッシュメモリ部がオーナであるデータを追い出す時、
そのデータを他のスヌープキャッシュメモリ部が保有す
るか否かをシェアードフラグ14bに基づいて判定し、
他のスヌープキャッシュメモリ部もそのデータを保有し
ていた場合は、自スヌープキャッシュメモリ部のキャッ
シュメモリ番号とオーナ委譲要求を共有バス80上に出
力し、一方、共有バス80上にオーナ委譲要求が出力さ
れ、かつ、出力されているキャッシュメモリ番号が、自
スヌープキャッシュメモリ部の次オーナ番号に一致した
場合は、オーナを自スヌープキャッシュメモリ部に設定
する機能を有している。
【0044】ブロック転送制御部18bは、キャッシュ
ミス時のデータ転送がスヌープキャッシュメモリ部間で
行われる場合、オーナである転送元のスヌープキャッシ
ュメモリ部では、転送先のスヌープキャッシュメモリ部
の番号を次オーナ番号格納部14eに格納し、転送先の
スヌープキャッシュメモリ部では、オーナを自スヌープ
キャッシュメモリ部に設定する機能を有している。
ミス時のデータ転送がスヌープキャッシュメモリ部間で
行われる場合、オーナである転送元のスヌープキャッシ
ュメモリ部では、転送先のスヌープキャッシュメモリ部
の番号を次オーナ番号格納部14eに格納し、転送先の
スヌープキャッシュメモリ部では、オーナを自スヌープ
キャッシュメモリ部に設定する機能を有している。
【0045】無効化制御部18cは、自スヌープキャッ
シュメモリ部が保持するデータに書き込みが行われた場
合、他のスヌープキャッシュメモリ部に対してそのデー
タの無効化要求を行うと共に、自スヌープキャッシュメ
モリ部をオーナに設定する機能を有している。
シュメモリ部が保持するデータに書き込みが行われた場
合、他のスヌープキャッシュメモリ部に対してそのデー
タの無効化要求を行うと共に、自スヌープキャッシュメ
モリ部をオーナに設定する機能を有している。
【0046】プロセッサ62からのデータの読み出しお
よび書き込み要求は、メモリオペレーションコード線2
0を通してキャッシュ制御部18に知らされる。また、
共有バス80上の他のスヌープキャッシュメモリ部や共
有メモリ50とキャッシュ制御部18とのブロック転送
および無効化要求等は共有バスコマンド線83を通して
相互に行われる。
よび書き込み要求は、メモリオペレーションコード線2
0を通してキャッシュ制御部18に知らされる。また、
共有バス80上の他のスヌープキャッシュメモリ部や共
有メモリ50とキャッシュ制御部18とのブロック転送
および無効化要求等は共有バスコマンド線83を通して
相互に行われる。
【0047】ヒット判定部13のタグメモリ13a、ス
テータスメモリ14に対するデータの読み出しおよび書
き込みアドレスは、アドレスレジスタ10または共有ア
ドレスレジスタ11のインデックス部42の値で指定さ
れる。キャッシュメモリ15に対するデータの読み出し
および書き込みアドレスはアドレスレジスタ10または
共有アドレスレジスタ11のインデックス部42の値と
ブロックオフセット43の値で指定される。
テータスメモリ14に対するデータの読み出しおよび書
き込みアドレスは、アドレスレジスタ10または共有ア
ドレスレジスタ11のインデックス部42の値で指定さ
れる。キャッシュメモリ15に対するデータの読み出し
および書き込みアドレスはアドレスレジスタ10または
共有アドレスレジスタ11のインデックス部42の値と
ブロックオフセット43の値で指定される。
【0048】〈動作〉以下、動作について説明する。
尚、スヌープキャッシュメモリ部61とスヌープキャッ
シュメモリ部71との動作は同様であるため、スヌープ
キャッシュメモリ部61の動作を代表して説明する。
尚、スヌープキャッシュメモリ部61とスヌープキャッ
シュメモリ部71との動作は同様であるため、スヌープ
キャッシュメモリ部61の動作を代表して説明する。
【0049】キャッシュメモリ15へのアクセスは、ヒ
ット判定処理から始まる。ヒット判定は、次にようにし
て行われる。
ット判定処理から始まる。ヒット判定は、次にようにし
て行われる。
【0050】プロセッサ62からのメモリオペレーショ
ンコード線20を介して、あるいは共有バス80の共有
バスコマンド線83を介して、スヌープキャッシュメモ
リ部61に対してアクセス要求があると、先ず、ヒット
判定部13がヒット判定を行う。
ンコード線20を介して、あるいは共有バス80の共有
バスコマンド線83を介して、スヌープキャッシュメモ
リ部61に対してアクセス要求があると、先ず、ヒット
判定部13がヒット判定を行う。
【0051】即ち、このヒット判定とは、アドレスレジ
スタ10あるいは共有アドレスレジスタ11のインデッ
クス部42の値で指定されるタグメモリ13aの値(=
キャッシュメモリ15が保持しているブロックのタグ部
41の値)と、アドレスレジスタ10あるいは共有アド
レスレジスタ11に格納されているタグ部41の値(=
アクセス要求されたアドレスにおけるタグ部41の値)
を比較する。
スタ10あるいは共有アドレスレジスタ11のインデッ
クス部42の値で指定されるタグメモリ13aの値(=
キャッシュメモリ15が保持しているブロックのタグ部
41の値)と、アドレスレジスタ10あるいは共有アド
レスレジスタ11に格納されているタグ部41の値(=
アクセス要求されたアドレスにおけるタグ部41の値)
を比較する。
【0052】そして、キャッシュ制御部18は、このヒ
ット判定部13において比較した結果得られる一致信号
と、アドレスレジスタ10あるいは共有アドレスレジス
タ11のインデックス部42で指定されるステータスメ
モリ14のバリッドフラグとを調べる。
ット判定部13において比較した結果得られる一致信号
と、アドレスレジスタ10あるいは共有アドレスレジス
タ11のインデックス部42で指定されるステータスメ
モリ14のバリッドフラグとを調べる。
【0053】一致信号がアクティブで、かつ、バリッド
フラグが「1」であればキャッシュヒットと判定する。
以後、特に断らない限り、プロセッサ62からの要求を
処理する場合のアドレスは、アドレスレジスタ10にセ
ットされており、一方、共有バス80からの要求を処理
する場合のアドレスは、共有アドレスレジスタ11にセ
ットされているものとする。
フラグが「1」であればキャッシュヒットと判定する。
以後、特に断らない限り、プロセッサ62からの要求を
処理する場合のアドレスは、アドレスレジスタ10にセ
ットされており、一方、共有バス80からの要求を処理
する場合のアドレスは、共有アドレスレジスタ11にセ
ットされているものとする。
【0054】また、プロセッサ62からの要求の処理
か、共有バス80からの要求の処理かに応じてどちらか
のレジスタが選択され、そのレジスタに格納されている
アドレスを、キャッシュメモリ15、ステータスメモリ
14、ヒット判定部13の各部に供給するものとする。
か、共有バス80からの要求の処理かに応じてどちらか
のレジスタが選択され、そのレジスタに格納されている
アドレスを、キャッシュメモリ15、ステータスメモリ
14、ヒット判定部13の各部に供給するものとする。
【0055】ヒット判定結果と、プロセッサ62あるい
は共有バス80からの要求によって、以降の処理は、
(1)プロセッサ62からの読み出し要求でキャッシュ
ヒットした場合、(2)プロセッサ62からの読み出し
要求でキャッシュミスした場合、(3)プロセッサ62
からの書き込み要求でキャッシュヒットした場合、
(4)プロセッサ62からの書き込み要求でキャッシュ
ミスした場合、(5)共有バス80からのブロック転送
要求でキャッシュヒットした場合、(6)共有バス80
からのオーナ委譲要求でキャッシュヒットし、次オーナ
番号がオーナ番号線87の値を指していた場合、(7)
共有バス80からの無効化要求でキャッシュヒットした
場合、の七つに分かれる。尚、共有バス80からの要求
でキャッシュミスした場合、本システムでは何もしな
い。上記七つの場合について以下に説明する。
は共有バス80からの要求によって、以降の処理は、
(1)プロセッサ62からの読み出し要求でキャッシュ
ヒットした場合、(2)プロセッサ62からの読み出し
要求でキャッシュミスした場合、(3)プロセッサ62
からの書き込み要求でキャッシュヒットした場合、
(4)プロセッサ62からの書き込み要求でキャッシュ
ミスした場合、(5)共有バス80からのブロック転送
要求でキャッシュヒットした場合、(6)共有バス80
からのオーナ委譲要求でキャッシュヒットし、次オーナ
番号がオーナ番号線87の値を指していた場合、(7)
共有バス80からの無効化要求でキャッシュヒットした
場合、の七つに分かれる。尚、共有バス80からの要求
でキャッシュミスした場合、本システムでは何もしな
い。上記七つの場合について以下に説明する。
【0056】(1)プロセッサからの読み出し要求でキ
ャッシュヒットした場合 キャッシュ制御部18は、アドレスレジスタ10で指定
されたキャッシュメモリ15を読み出し、データレジス
タ16にセットする。即ち、この場合はオーナの移動や
フラグの変更等も一切発生しない。
ャッシュヒットした場合 キャッシュ制御部18は、アドレスレジスタ10で指定
されたキャッシュメモリ15を読み出し、データレジス
タ16にセットする。即ち、この場合はオーナの移動や
フラグの変更等も一切発生しない。
【0057】(2)プロセッサからの読み出し要求でキ
ャッシュミスした場合 ここでのキャッシュ制御部18の処理は、以下の二つの
部分に分けられる。 ・ブロックのリプレース処理 ・データの読み出し処理 これらのそれぞれについて次に説明する。
ャッシュミスした場合 ここでのキャッシュ制御部18の処理は、以下の二つの
部分に分けられる。 ・ブロックのリプレース処理 ・データの読み出し処理 これらのそれぞれについて次に説明する。
【0058】図4は、プロセッサからの読み出し要求で
キャッシュミスした場合のフローチャートである。 (a)ブロックのリプレース処理 リプレースの対象となったブロックのシェアードフラグ
が「0」で、ダーティフラグが「1」の場合、唯一の書
き換えられたデータであることを示しているので、共有
メモリ50への書き戻しが必要となる(ステップS1〜
S2〜S3)。
キャッシュミスした場合のフローチャートである。 (a)ブロックのリプレース処理 リプレースの対象となったブロックのシェアードフラグ
が「0」で、ダーティフラグが「1」の場合、唯一の書
き換えられたデータであることを示しているので、共有
メモリ50への書き戻しが必要となる(ステップS1〜
S2〜S3)。
【0059】図5は、共有メモリ50への書き戻し処理
のフローチャートである。先ず、キャッシュ制御部18
は、共有バス80へのバス権を得る(ステップS30
1)。その後、アドレスレジスタ10に格納されている
アドレスのうち、インデックス部42とブロックオフセ
ット43の値と、インデックス部42の値で指定されて
読み出されるヒット判定部13のタグメモリ13aの
値、即ち、データのメモリアドレスを共有アドレスバス
線81に出力する(ステップS302)。
のフローチャートである。先ず、キャッシュ制御部18
は、共有バス80へのバス権を得る(ステップS30
1)。その後、アドレスレジスタ10に格納されている
アドレスのうち、インデックス部42とブロックオフセ
ット43の値と、インデックス部42の値で指定されて
読み出されるヒット判定部13のタグメモリ13aの
値、即ち、データのメモリアドレスを共有アドレスバス
線81に出力する(ステップS302)。
【0060】また、インデックス部42とブロックオフ
セット43の値で読み出されるキャッシュメモリ15の
データを共有データバス線82に出力し(ステップS3
03)、共有バスコマンド線83に書き戻し要求を出力
する(ステップS304)。次に、共有メモリアクノリ
ッジ線84がアクティブになったら(ステップS30
5)、アドレスレジスタ10のブロックオフセット43
をインクリメントし(ステップS306)、キャッシュ
メモリ15から読み出したデータを共有データバス線8
2に出力する(ステップS307)。そして、1ブロッ
ク分のデータを共有データバス線82に出力したかを判
定する(ステップS308)。この動作を繰り返すこと
により1ブロック分のデータを共有メモリ50に書き戻
す。ただし、ブロックオフセット43のインクリメント
はラップアラウンドに行う。
セット43の値で読み出されるキャッシュメモリ15の
データを共有データバス線82に出力し(ステップS3
03)、共有バスコマンド線83に書き戻し要求を出力
する(ステップS304)。次に、共有メモリアクノリ
ッジ線84がアクティブになったら(ステップS30
5)、アドレスレジスタ10のブロックオフセット43
をインクリメントし(ステップS306)、キャッシュ
メモリ15から読み出したデータを共有データバス線8
2に出力する(ステップS307)。そして、1ブロッ
ク分のデータを共有データバス線82に出力したかを判
定する(ステップS308)。この動作を繰り返すこと
により1ブロック分のデータを共有メモリ50に書き戻
す。ただし、ブロックオフセット43のインクリメント
はラップアラウンドに行う。
【0061】図4に戻り、ステップS1において、リプ
レースの対象となったブロックのシェアードフラグが
「1」である場合、同じブロックを保持するスヌープキ
ャッシュメモリ部のステータスメモリ14の次オーナ番
号が、このスヌープキャッシュメモリ部61を示してい
る可能性がある。この場合、キャッシュ制御部18のオ
ーナ委譲制御部18aは、共有メモリ50へブロックを
書き戻すのではなく、次オーナ番号がこのスヌープキャ
ッシュメモリ部61を示している同じブロックを保持す
るスヌープキャッシュメモリ部(即ち、前のオーナ)に
オーナを委譲することを試みる(オーナの委譲処理1:
ステップS5またはオーナの委譲処理2:ステップS
7)。もし、このような条件に当てはまるスヌープキャ
ッシュメモリ部が存在しなければ、通常の共有メモリ5
0への書き戻し処理を行う。
レースの対象となったブロックのシェアードフラグが
「1」である場合、同じブロックを保持するスヌープキ
ャッシュメモリ部のステータスメモリ14の次オーナ番
号が、このスヌープキャッシュメモリ部61を示してい
る可能性がある。この場合、キャッシュ制御部18のオ
ーナ委譲制御部18aは、共有メモリ50へブロックを
書き戻すのではなく、次オーナ番号がこのスヌープキャ
ッシュメモリ部61を示している同じブロックを保持す
るスヌープキャッシュメモリ部(即ち、前のオーナ)に
オーナを委譲することを試みる(オーナの委譲処理1:
ステップS5またはオーナの委譲処理2:ステップS
7)。もし、このような条件に当てはまるスヌープキャ
ッシュメモリ部が存在しなければ、通常の共有メモリ5
0への書き戻し処理を行う。
【0062】上記のステップS1でシェアードフラグが
「1」、かつ、ステップS4において、ダーティフラグ
が「1」であった場合は、ステップS5のオーナの委譲
処理1を行う。
「1」、かつ、ステップS4において、ダーティフラグ
が「1」であった場合は、ステップS5のオーナの委譲
処理1を行う。
【0063】図6はオーナの委譲処理1のフローチャー
トである。先ず、オーナ委譲制御部18aは、アドレス
レジスタ10のインデックス部42とブロックオフセッ
ト43の値と、インデックス部42で指定されて読み出
されるヒット判定部13のタグメモリ13aの値、即
ち、委譲するブロック内のデータのメモリアドレスを共
有アドレスバス線81に出力する(ステップS50
1)。また、インデックス部42とブロックオフセット
43の値で指定されて読み出されるキャッシュメモリ1
5のデータを共有データバス線82に出力する(ステッ
プS502)。更に、自スヌープキャッシュメモリ部の
キャッシュメモリ番号の値をオーナ番号線87に出力し
(ステップS503)、ダーティ線88をアクティブに
し(ステップS504)、共有バスコマンド線83にオ
ーナ委譲要求を出力する(ステップS505)。
トである。先ず、オーナ委譲制御部18aは、アドレス
レジスタ10のインデックス部42とブロックオフセッ
ト43の値と、インデックス部42で指定されて読み出
されるヒット判定部13のタグメモリ13aの値、即
ち、委譲するブロック内のデータのメモリアドレスを共
有アドレスバス線81に出力する(ステップS50
1)。また、インデックス部42とブロックオフセット
43の値で指定されて読み出されるキャッシュメモリ1
5のデータを共有データバス線82に出力する(ステッ
プS502)。更に、自スヌープキャッシュメモリ部の
キャッシュメモリ番号の値をオーナ番号線87に出力し
(ステップS503)、ダーティ線88をアクティブに
し(ステップS504)、共有バスコマンド線83にオ
ーナ委譲要求を出力する(ステップS505)。
【0064】ステップS506において、オーナ線86
がアクティブになったら、同じブロックを保持するスヌ
ープキャッシュメモリ部のステータスメモリ14の次オ
ーナ番号がこのスヌープキャッシュメモリ部61を示し
ていることを表すので、オーナ委譲処理を完了する。共
有メモリ50では、オーナ委譲要求に対して書き戻し処
理と同じ処理を開始するが、オーナ線86がアクティブ
になると書き戻し処理を中止する。
がアクティブになったら、同じブロックを保持するスヌ
ープキャッシュメモリ部のステータスメモリ14の次オ
ーナ番号がこのスヌープキャッシュメモリ部61を示し
ていることを表すので、オーナ委譲処理を完了する。共
有メモリ50では、オーナ委譲要求に対して書き戻し処
理と同じ処理を開始するが、オーナ線86がアクティブ
になると書き戻し処理を中止する。
【0065】一方、ステップS506において、オーナ
線86がアクティブにならない場合は、次オーナ番号が
このスヌープキャッシュメモリ部を示している同じブロ
ックを保持するスヌープキャッシュメモリ部が存在しな
いことを示すので、上述した共有メモリ50への書き戻
し処理を行う(ステップS507〜S510)。
線86がアクティブにならない場合は、次オーナ番号が
このスヌープキャッシュメモリ部を示している同じブロ
ックを保持するスヌープキャッシュメモリ部が存在しな
いことを示すので、上述した共有メモリ50への書き戻
し処理を行う(ステップS507〜S510)。
【0066】再び図4に戻り、ステップS1においてリ
プレースの対象となったブロックのシェアードフラグが
「1」、ステップS4においてダーティフラグが
「0」、ステップS6においてオーナフラグが「0」、
即ち、自分がそのブロックのオーナではない場合は、共
有メモリ50と値が同じであるか、あるいは同じブロッ
クを持つ他のスヌープキャッシュメモリ部が共有メモリ
50に書き戻す責任を持つことを表しているので、自ス
ヌープキャッシュメモリ部61は書き戻し処理を行わ
ず、そのまま、ステップS9のキャッシュミスしたブロ
ックの転送処理に移行する。
プレースの対象となったブロックのシェアードフラグが
「1」、ステップS4においてダーティフラグが
「0」、ステップS6においてオーナフラグが「0」、
即ち、自分がそのブロックのオーナではない場合は、共
有メモリ50と値が同じであるか、あるいは同じブロッ
クを持つ他のスヌープキャッシュメモリ部が共有メモリ
50に書き戻す責任を持つことを表しているので、自ス
ヌープキャッシュメモリ部61は書き戻し処理を行わ
ず、そのまま、ステップS9のキャッシュミスしたブロ
ックの転送処理に移行する。
【0067】一方、ステップS6において、オーナフラ
グが「1」の場合、即ち、自分がオーナである場合に
は、オーナ委譲制御部18aはオーナ委譲処理2を行う
(ステップS7)。
グが「1」の場合、即ち、自分がオーナである場合に
は、オーナ委譲制御部18aはオーナ委譲処理2を行う
(ステップS7)。
【0068】図7はオーナの委譲処理2のフローチャー
トである。この委譲処理は次の通りである。先ず、アド
レスレジスタ10のインデックス部42とブロックオフ
セット43の値と、インデックス部42の値で読み出さ
れるヒット判定部13のタグメモリ13aの値とを共有
アドレスバス線81に出力する(ステップS701)。
次に、自スヌープキャッシュメモリ部61のキャッシュ
メモリ番号の値をオーナ番号線87に出力する(ステッ
プS702)。そして、共有バスコマンド線83にオー
ナ委譲要求を出力する(ステップS703)。共有メモ
リ50では、ダーティ線88を監視することにより、当
該ブロックのダーティフラグが「1」の場合のオーナ委
譲要求と区別し、書き戻し要求と同じ処理は開始しな
い。
トである。この委譲処理は次の通りである。先ず、アド
レスレジスタ10のインデックス部42とブロックオフ
セット43の値と、インデックス部42の値で読み出さ
れるヒット判定部13のタグメモリ13aの値とを共有
アドレスバス線81に出力する(ステップS701)。
次に、自スヌープキャッシュメモリ部61のキャッシュ
メモリ番号の値をオーナ番号線87に出力する(ステッ
プS702)。そして、共有バスコマンド線83にオー
ナ委譲要求を出力する(ステップS703)。共有メモ
リ50では、ダーティ線88を監視することにより、当
該ブロックのダーティフラグが「1」の場合のオーナ委
譲要求と区別し、書き戻し要求と同じ処理は開始しな
い。
【0069】図4に戻り、ステップS1においてリプレ
ースの対象となったブロックのシェアードフラグが
「0」、ステップS4においてダーティフラグが「0」
の場合、ブロックは書き換えられておらず、また、この
ブロックを持つ他のスヌープキャッシュメモリ部が存在
しないことを示しているので、書き戻し処理およびオー
ナ委譲処理は行わない。そして、書き戻し処理あるいは
オーナ委譲処理が終了したら、キャッシュ制御部18に
おけるブロック転送制御部18bは、キャッシュミスし
たブロックの転送処理を行う(ステップS8)。
ースの対象となったブロックのシェアードフラグが
「0」、ステップS4においてダーティフラグが「0」
の場合、ブロックは書き換えられておらず、また、この
ブロックを持つ他のスヌープキャッシュメモリ部が存在
しないことを示しているので、書き戻し処理およびオー
ナ委譲処理は行わない。そして、書き戻し処理あるいは
オーナ委譲処理が終了したら、キャッシュ制御部18に
おけるブロック転送制御部18bは、キャッシュミスし
たブロックの転送処理を行う(ステップS8)。
【0070】図8、図9は、キャッシュミスしたブロッ
クの転送処理のフローチャートである。ブロック転送制
御部18bは、アドレスレジスタ10の値を共有アドレ
スバス線81に出力し(ステップS801)、自キャッ
シュメモリ番号をオーナ番号線87に出力し(ステップ
S802)、また、共有バスコマンド線83にブロック
転送要求を出力する(ステップS803)。そして、オ
ーナ線86か共有メモリアクノリッジ線84がアクティ
ブになったら共有データバス線82の値をキャッシュメ
モリに書き込む(ステップS804〜ステップS81
1)。
クの転送処理のフローチャートである。ブロック転送制
御部18bは、アドレスレジスタ10の値を共有アドレ
スバス線81に出力し(ステップS801)、自キャッ
シュメモリ番号をオーナ番号線87に出力し(ステップ
S802)、また、共有バスコマンド線83にブロック
転送要求を出力する(ステップS803)。そして、オ
ーナ線86か共有メモリアクノリッジ線84がアクティ
ブになったら共有データバス線82の値をキャッシュメ
モリに書き込む(ステップS804〜ステップS81
1)。
【0071】図10は、ブロックの書き込み処理のフロ
ーチャートである。即ち、ブロックの書き込み処理は、
ブロック転送制御部18bが、共有データバス線82の
データをキャッシュメモリ15に書き込み、1サイクル
毎にブロックオフセット43をインクリメントして、1
ブロック分のデータを書き込む(ステップS80a〜ス
テップS80c)。
ーチャートである。即ち、ブロックの書き込み処理は、
ブロック転送制御部18bが、共有データバス線82の
データをキャッシュメモリ15に書き込み、1サイクル
毎にブロックオフセット43をインクリメントして、1
ブロック分のデータを書き込む(ステップS80a〜ス
テップS80c)。
【0072】図8、図9に戻り、ブロック転送制御部1
8bは、最後のデータを書き込む時、タグメモリ13a
の、アドレスレジスタ10のインデックス部42で示さ
れる領域にキャッシュミスしたデータのタグ部41の値
を書き込む(ステップS812〜S815)。また、同
時に、ステータスメモリ14の、アドレスレジスタ10
のインデックス部42で示される領域にステータスを書
き込む(ステップS816〜S819)。
8bは、最後のデータを書き込む時、タグメモリ13a
の、アドレスレジスタ10のインデックス部42で示さ
れる領域にキャッシュミスしたデータのタグ部41の値
を書き込む(ステップS812〜S815)。また、同
時に、ステータスメモリ14の、アドレスレジスタ10
のインデックス部42で示される領域にステータスを書
き込む(ステップS816〜S819)。
【0073】ステータスの値は次の通りである。即ち、
ステップS804でオーナ線86がアクティブ、ステッ
プS806でダーティ線88がアクティブであった場合
は、ブロックの転送元が他のスヌープキャッシュメモリ
部で、かつ、そのブロックが書き換えられていることを
示すので、バリッドフラグを「1」、シェアードフラグ
を「1」、オーナフラグを「1」、ダーティフラグを
「1」、次オーナ番号を自スヌープキャッシュメモリ部
のキャッシュメモリ番号に設定し(ステップS81
6)、オーナを自スヌープキャッシュメモリ部61に移
動する。一方、この時、ステップS806でダーティ線
88がアクティブでなければ、そのブロックは書き換え
られていないことを示すので、ダーティフラグは「0」
に設定する(ステップS817)。
ステップS804でオーナ線86がアクティブ、ステッ
プS806でダーティ線88がアクティブであった場合
は、ブロックの転送元が他のスヌープキャッシュメモリ
部で、かつ、そのブロックが書き換えられていることを
示すので、バリッドフラグを「1」、シェアードフラグ
を「1」、オーナフラグを「1」、ダーティフラグを
「1」、次オーナ番号を自スヌープキャッシュメモリ部
のキャッシュメモリ番号に設定し(ステップS81
6)、オーナを自スヌープキャッシュメモリ部61に移
動する。一方、この時、ステップS806でダーティ線
88がアクティブでなければ、そのブロックは書き換え
られていないことを示すので、ダーティフラグは「0」
に設定する(ステップS817)。
【0074】ステップS804においてオーナ線86が
インアクティブ、ステップS805において共有メモリ
アクノリッジ線84がアクティブであり、かつ、ステッ
プS807においてシェアード線85がアクティブであ
った場合は、ブロックの転送元が共有メモリ50で、か
つ、そのブロックを保持しているスヌープキャッシュメ
モリ部が存在することを示しているので、バリッドフラ
グを「1」、シェアードフラグを「1」、オーナフラグ
を「1」、ダーティフラグを「0」、次オーナ番号を自
スヌープキャッシュメモリ部61のキャッシュメモリ番
号に設定する(ステップS818)。
インアクティブ、ステップS805において共有メモリ
アクノリッジ線84がアクティブであり、かつ、ステッ
プS807においてシェアード線85がアクティブであ
った場合は、ブロックの転送元が共有メモリ50で、か
つ、そのブロックを保持しているスヌープキャッシュメ
モリ部が存在することを示しているので、バリッドフラ
グを「1」、シェアードフラグを「1」、オーナフラグ
を「1」、ダーティフラグを「0」、次オーナ番号を自
スヌープキャッシュメモリ部61のキャッシュメモリ番
号に設定する(ステップS818)。
【0075】一方、ステップS805において共有メモ
リアクノリッジ線84がアクティブ、ステップS807
においてシェアード線85がインアクティブであった場
合は、ブロックの転送元が共有メモリ50で、かつ、そ
のブロックを保持しているスヌープキャッシュメモリ部
が存在しないことを示しているので、バリッドフラグを
「1」、シェアードフラグを「0」、オーナフラグを
「1」、ダーティフラグを「0」、次オーナ番号を自ス
ヌープキャッシュメモリ部61のキャッシュメモリ番号
に設定する(ステップS818)。
リアクノリッジ線84がアクティブ、ステップS807
においてシェアード線85がインアクティブであった場
合は、ブロックの転送元が共有メモリ50で、かつ、そ
のブロックを保持しているスヌープキャッシュメモリ部
が存在しないことを示しているので、バリッドフラグを
「1」、シェアードフラグを「0」、オーナフラグを
「1」、ダーティフラグを「0」、次オーナ番号を自ス
ヌープキャッシュメモリ部61のキャッシュメモリ番号
に設定する(ステップS818)。
【0076】このように、プロセッサ62からの要求で
キャッシュミスした場合、スヌープキャッシュメモリ部
61は、必ず、そのデータを含むブロックのオーナとな
り、また、次オーナ番号を自スヌープキャッシュメモリ
部61の値に設定する。
キャッシュミスした場合、スヌープキャッシュメモリ部
61は、必ず、そのデータを含むブロックのオーナとな
り、また、次オーナ番号を自スヌープキャッシュメモリ
部61の値に設定する。
【0077】(b)データの読み出し処理 図11は、データの読み出し処理(図4のおけるステッ
プS9)のフローチャートである。データの読み出し処
理は、キャッシュ制御部18が、アドレスレジスタ10
で指定されたキャッシュメモリ15のデータを読み出
し、データレジスタ16にセットするものである。
プS9)のフローチャートである。データの読み出し処
理は、キャッシュ制御部18が、アドレスレジスタ10
で指定されたキャッシュメモリ15のデータを読み出
し、データレジスタ16にセットするものである。
【0078】(3)プロセッサからの書き込み要求でキ
ャッシュヒットした場合 図12は、プロセッサからの書き込み要求でキャッシュ
ヒットした場合のフローチャートである。ステップS1
において、当該ブロックのシェアードフラグが「0」の
場合、スヌープキャッシュメモリ部61では、ローカル
にデータの書き込み処理を行う。先ず、キャッシュ制御
部18は、アドレスレジスタ10に保持されたインデッ
クス部42とブロックオフセット43の値で指定される
キャッシュメモリ15のデータにデータレジスタ16の
値を書き込む(ステップS2)。これと同時に、キャッ
シュ制御部18は、アドレスレジスタ10に保持された
インデックス部42の値で指定されるステータスメモリ
14のオーナフラグを「1」、ダーティフラグを「1」
に設定する(ステップS3)。
ャッシュヒットした場合 図12は、プロセッサからの書き込み要求でキャッシュ
ヒットした場合のフローチャートである。ステップS1
において、当該ブロックのシェアードフラグが「0」の
場合、スヌープキャッシュメモリ部61では、ローカル
にデータの書き込み処理を行う。先ず、キャッシュ制御
部18は、アドレスレジスタ10に保持されたインデッ
クス部42とブロックオフセット43の値で指定される
キャッシュメモリ15のデータにデータレジスタ16の
値を書き込む(ステップS2)。これと同時に、キャッ
シュ制御部18は、アドレスレジスタ10に保持された
インデックス部42の値で指定されるステータスメモリ
14のオーナフラグを「1」、ダーティフラグを「1」
に設定する(ステップS3)。
【0079】一方、ステップS1において、シェアード
フラグが「1」の場合、キャッシュ制御部18における
無効化制御部18cは、同じブロックを持つ他のスヌー
プキャッシュメモリ部に無効化要求を出す。この処理は
次のようになる。先ず、共有バス80のバス権を獲得す
る(ステップS4)。その後、アドレスレジスタ10の
値を共有アドレスバス線81に出力すると共に(ステッ
プS5)、共有バスコマンド線83に無効化要求を出力
する(ステップS6)。次に、上述したステップS2、
S3と同様にデータの書き込み処理を行う(ステップS
7、S8)。
フラグが「1」の場合、キャッシュ制御部18における
無効化制御部18cは、同じブロックを持つ他のスヌー
プキャッシュメモリ部に無効化要求を出す。この処理は
次のようになる。先ず、共有バス80のバス権を獲得す
る(ステップS4)。その後、アドレスレジスタ10の
値を共有アドレスバス線81に出力すると共に(ステッ
プS5)、共有バスコマンド線83に無効化要求を出力
する(ステップS6)。次に、上述したステップS2、
S3と同様にデータの書き込み処理を行う(ステップS
7、S8)。
【0080】但し、ステータスメモリ14へ書き込むス
テータスの内容は、シェアードフラグを「0」、オーナ
フラグを「1」、ダーティフラグを「1」、次オーナ番
号を自スヌープキャッシュメモリ部61のキャッシュメ
モリ番号に設定する。
テータスの内容は、シェアードフラグを「0」、オーナ
フラグを「1」、ダーティフラグを「1」、次オーナ番
号を自スヌープキャッシュメモリ部61のキャッシュメ
モリ番号に設定する。
【0081】このように、プロセッサ62からの書き込
み要求でキャッシュヒットした場合も、自スヌープキャ
ッシュメモリ部61がそのブロックのオーナとなると共
に、次オーナ番号を自スヌープキャッシュメモリ部61
の番号に設定する。
み要求でキャッシュヒットした場合も、自スヌープキャ
ッシュメモリ部61がそのブロックのオーナとなると共
に、次オーナ番号を自スヌープキャッシュメモリ部61
の番号に設定する。
【0082】(4)プロセッサからの書き込み要求でキ
ャッシュミスした場合 この場合は、上述したプロセッサからの読み出し要求で
キャッシュミスした場合のブロックのリプレース処理と
同じ処理を行った後、書き込み要求でキャッシュヒット
した場合と同じ処理を行う。従って、この場合も自スヌ
ープキャッシュメモリ部61がそのブロックのオーナと
なり、また、次オーナ番号を自スヌープキャッシュメモ
リ部61の番号に設定する。
ャッシュミスした場合 この場合は、上述したプロセッサからの読み出し要求で
キャッシュミスした場合のブロックのリプレース処理と
同じ処理を行った後、書き込み要求でキャッシュヒット
した場合と同じ処理を行う。従って、この場合も自スヌ
ープキャッシュメモリ部61がそのブロックのオーナと
なり、また、次オーナ番号を自スヌープキャッシュメモ
リ部61の番号に設定する。
【0083】(5)共有バス80からのブロック転送要
求でキャッシュヒットした場合 図13は、共有バス80からのブロック転送要求でキャ
ッシュヒットした場合のフローチャートである。
求でキャッシュヒットした場合 図13は、共有バス80からのブロック転送要求でキャ
ッシュヒットした場合のフローチャートである。
【0084】ステップS1において、共有アドレスレジ
スタ11で示されるステータスメモリ14のオーナフラ
グ14cが「1」の場合、自スヌープキャッシュメモリ
部61は、ブロック転送の転送元となる。ブロック転送
制御部18bは、先ず、オーナ線86およびシェアード
線85をアクティブにし(ステップS2)、次に、共有
アドレスレジスタ11で読み出されるキャッシュメモリ
15の値を共有データバス線82に出力する(ステップ
S5)。ここで、ダーティフラグが「1」の場合は、ダ
ーティ線88もアクティブにする(ステップS3、S
4)。
スタ11で示されるステータスメモリ14のオーナフラ
グ14cが「1」の場合、自スヌープキャッシュメモリ
部61は、ブロック転送の転送元となる。ブロック転送
制御部18bは、先ず、オーナ線86およびシェアード
線85をアクティブにし(ステップS2)、次に、共有
アドレスレジスタ11で読み出されるキャッシュメモリ
15の値を共有データバス線82に出力する(ステップ
S5)。ここで、ダーティフラグが「1」の場合は、ダ
ーティ線88もアクティブにする(ステップS3、S
4)。
【0085】更に、1サイクル毎にブロックオフセット
43をインクリメントして、1ブロック分のデータを出
力する(ステップS6、S7)。最後のデータを出力す
る時に、共有アドレスレジスタ11で示されるステータ
スメモリ14のシェアードフラグを「1」、オーナフラ
グを「0」、ダーティフラグを「0」、次オーナ番号を
オーナ番号線87の値に設定し(ステップS8)、オー
ナを転送要求元のスヌープキャッシュメモリ部に移動す
る。
43をインクリメントして、1ブロック分のデータを出
力する(ステップS6、S7)。最後のデータを出力す
る時に、共有アドレスレジスタ11で示されるステータ
スメモリ14のシェアードフラグを「1」、オーナフラ
グを「0」、ダーティフラグを「0」、次オーナ番号を
オーナ番号線87の値に設定し(ステップS8)、オー
ナを転送要求元のスヌープキャッシュメモリ部に移動す
る。
【0086】一方、ステップS1において、オーナフラ
グ14cが「0」の場合には、シェアード線85をアク
ティブにし(ステップS10)、転送要求元のスヌープ
キャッシュメモリ部にそのブロックを保持していること
を知らせるのみで、ブロック転送は行わない。
グ14cが「0」の場合には、シェアード線85をアク
ティブにし(ステップS10)、転送要求元のスヌープ
キャッシュメモリ部にそのブロックを保持していること
を知らせるのみで、ブロック転送は行わない。
【0087】即ち、以上の動作は、上記(2)における
ブロック転送元のスヌープキャッシュメモリ部の動作に
相当する。
ブロック転送元のスヌープキャッシュメモリ部の動作に
相当する。
【0088】(6)共有バス80からのオーナ委譲要求
でキャッシュヒットし、次オーナ番号がオーナ番号線の
値を指していた場合 即ち、この場合は、上述したオーナの委譲処理1、2の
委譲先のスヌープキャッシュメモリ部の動作である。
でキャッシュヒットし、次オーナ番号がオーナ番号線の
値を指していた場合 即ち、この場合は、上述したオーナの委譲処理1、2の
委譲先のスヌープキャッシュメモリ部の動作である。
【0089】図14は、この場合のフローチャートであ
る。オーナ委譲制御部18aは、先ず、オーナ線86を
アクティブにする(ステップS1)。そして、共有アド
レスレジスタ11に格納されたインデックス部42の値
に対応したステータスメモリ14のオーナフラグ14c
を「1」、次オーナ番号を自スヌープキャッシュメモリ
部61のキャッシュメモリ番号に設定し(ステップS
2)、自らがそのブロックのオーナになる。また、ダー
ティ線88がアクティブの場合にはダーティフラグも
「1」に設定する(ステップS3、S4)。
る。オーナ委譲制御部18aは、先ず、オーナ線86を
アクティブにする(ステップS1)。そして、共有アド
レスレジスタ11に格納されたインデックス部42の値
に対応したステータスメモリ14のオーナフラグ14c
を「1」、次オーナ番号を自スヌープキャッシュメモリ
部61のキャッシュメモリ番号に設定し(ステップS
2)、自らがそのブロックのオーナになる。また、ダー
ティ線88がアクティブの場合にはダーティフラグも
「1」に設定する(ステップS3、S4)。
【0090】(7)共有バス80からの無効化要求でキ
ャッシュヒットした場合 共有アドレスレジスタ11で示されるステータスメモリ
14のバリッドフラグ14aを「0」に設定する。
ャッシュヒットした場合 共有アドレスレジスタ11で示されるステータスメモリ
14のバリッドフラグ14aを「0」に設定する。
【0091】〈効果〉以上説明したように具体例1によ
れば、各スヌープキャッシュメモリ部が次オーナ番号を
保持し、ブロックを追い出すスヌープキャッシュメモリ
部の番号が、自スヌープキャッシュメモリ部の次オーナ
番号に一致した場合は、自スヌープキャッシュメモリ部
がオーナになるようにしたので、キャッシュミス時に共
有メモリ50への書き戻しが必要な場合でも、書き戻し
しようとするブロックをキャッシュメモリで保持するた
め、共有メモリ50への書き戻しの頻度を下げることが
できる。
れば、各スヌープキャッシュメモリ部が次オーナ番号を
保持し、ブロックを追い出すスヌープキャッシュメモリ
部の番号が、自スヌープキャッシュメモリ部の次オーナ
番号に一致した場合は、自スヌープキャッシュメモリ部
がオーナになるようにしたので、キャッシュミス時に共
有メモリ50への書き戻しが必要な場合でも、書き戻し
しようとするブロックをキャッシュメモリで保持するた
め、共有メモリ50への書き戻しの頻度を下げることが
できる。
【0092】また、オーナを委譲することで、オーナで
あるブロックがキャッシュメモリ15に存在する時間が
長くなり、キャッシュミス時のブロック転送が共有メモ
リ50からでなく、キャッシュメモリ15から行える確
率が増加する。即ち、キャッシュミス時、アクセスに時
間のかかる共有メモリ50へのアクセス頻度が減少する
ので、キャッシュミス時のレスポンスの向上と、共有バ
ス80の利用率が下がることによりスループットの増大
を図ることができる。
あるブロックがキャッシュメモリ15に存在する時間が
長くなり、キャッシュミス時のブロック転送が共有メモ
リ50からでなく、キャッシュメモリ15から行える確
率が増加する。即ち、キャッシュミス時、アクセスに時
間のかかる共有メモリ50へのアクセス頻度が減少する
ので、キャッシュミス時のレスポンスの向上と、共有バ
ス80の利用率が下がることによりスループットの増大
を図ることができる。
【0093】更に、次のオーナの番号を記憶し、この次
オーナ番号を用いてオーナ委譲を行うようにしているの
で、共有メモリ50を意識する必要がなく、従って、ビ
ット数の削減を図ることができる。即ち、オーナ委譲を
行う場合、オーナは委譲要求を送出するだけで、前のオ
ーナはスヌープキャッシュメモリ部であるか共有メモリ
50であるかを意識する必要がない。従って、共有メモ
リ50の番号を記憶する必要がないため、例えば、スヌ
ープキャッシュメモリ部の個数が2nであった場合、ス
テータスメモリ14における次オーナ番号格納部14e
のビット数や次オーナ番号への接続線、更に、共有バス
80上でのオーナ番号線87の信号数を1本減らすこと
ができる。
オーナ番号を用いてオーナ委譲を行うようにしているの
で、共有メモリ50を意識する必要がなく、従って、ビ
ット数の削減を図ることができる。即ち、オーナ委譲を
行う場合、オーナは委譲要求を送出するだけで、前のオ
ーナはスヌープキャッシュメモリ部であるか共有メモリ
50であるかを意識する必要がない。従って、共有メモ
リ50の番号を記憶する必要がないため、例えば、スヌ
ープキャッシュメモリ部の個数が2nであった場合、ス
テータスメモリ14における次オーナ番号格納部14e
のビット数や次オーナ番号への接続線、更に、共有バス
80上でのオーナ番号線87の信号数を1本減らすこと
ができる。
【0094】《具体例2》具体例2は、具体例1がプロ
セッサからの書き込み要求でキャッシュヒットした場合
に、そのデータを共有している他のスヌープキャッシュ
メモリ部のデータを無効化したのに対して、そのデータ
を更新するようにしたものである。
セッサからの書き込み要求でキャッシュヒットした場合
に、そのデータを共有している他のスヌープキャッシュ
メモリ部のデータを無効化したのに対して、そのデータ
を更新するようにしたものである。
【0095】〈構成〉図15は、具体例2の構成図であ
る。具体例2における図面上の構成で異なる点は、具体
例1の無効化制御部18cの代わりに更新制御部18d
を備えた点であり、他の構成は具体例1と同様である。
る。具体例2における図面上の構成で異なる点は、具体
例1の無効化制御部18cの代わりに更新制御部18d
を備えた点であり、他の構成は具体例1と同様である。
【0096】更新制御部18dは、自スヌープキャッシ
ュメモリ部61が保持するデータにプロセッサ62から
書き込みが行われ、かつ、このデータを他のスヌープキ
ャッシュメモリ部も保有していた場合は、自スヌープキ
ャッシュメモリ部61をオーナに設定すると共に、自ス
ヌープキャッシュメモリ部61のキャッシュメモリ番号
とデータ更新要求を共有バス80上に出力し、一方、共
有バス80上にデータ更新要求が出力され、かつ、その
データを自スヌープキャッシュメモリ部61が保有して
いた場合は、このデータの更新を行うと共に、自スヌー
プキャッシュメモリ部61がオーナであった場合は、オ
ーナをデータ更新要求元のスヌープキャッシュメモリ部
に移動し、かつ、次オーナ番号をこのデータの更新要求
元のスヌープキャッシュメモリ部のキャッシュメモリ番
号に設定する機能を有している。
ュメモリ部61が保持するデータにプロセッサ62から
書き込みが行われ、かつ、このデータを他のスヌープキ
ャッシュメモリ部も保有していた場合は、自スヌープキ
ャッシュメモリ部61をオーナに設定すると共に、自ス
ヌープキャッシュメモリ部61のキャッシュメモリ番号
とデータ更新要求を共有バス80上に出力し、一方、共
有バス80上にデータ更新要求が出力され、かつ、その
データを自スヌープキャッシュメモリ部61が保有して
いた場合は、このデータの更新を行うと共に、自スヌー
プキャッシュメモリ部61がオーナであった場合は、オ
ーナをデータ更新要求元のスヌープキャッシュメモリ部
に移動し、かつ、次オーナ番号をこのデータの更新要求
元のスヌープキャッシュメモリ部のキャッシュメモリ番
号に設定する機能を有している。
【0097】また、具体例2が具体例1と異なる点は、
共有バスコマンド線83が具体例1の無効化要求に代わ
って更新要求を転送する点と、オーナ番号線87が、具
体例1の役割に加えて、共有されているブロックのデー
タを更新する時にその処理を行うスヌープキャッシュメ
モリ部のキャッシュメモリ番号を表している点である。
共有バスコマンド線83が具体例1の無効化要求に代わ
って更新要求を転送する点と、オーナ番号線87が、具
体例1の役割に加えて、共有されているブロックのデー
タを更新する時にその処理を行うスヌープキャッシュメ
モリ部のキャッシュメモリ番号を表している点である。
【0098】尚、図2および図3の構成は具体例1と同
様であるため、これらの図を援用して説明する。
様であるため、これらの図を援用して説明する。
【0099】〈動作〉ヒット判定の処理は、具体例1と
同様であるため、ここでの説明は省略する。また、ヒッ
ト判定結果と、プロセッサ62あるいは共有バス80か
らの要求によって以降の処理は、具体例1と同様に七つ
の場合に分かれるが、(3)プロセッサ62からの書き
込み要求でキャッシュミスした場合と、(7)共有バス
80からの更新要求でキャッシュヒットした場合以外の
処理は具体例1と同様であるため、異なる(3)と
(7)の処理のみを説明する。
同様であるため、ここでの説明は省略する。また、ヒッ
ト判定結果と、プロセッサ62あるいは共有バス80か
らの要求によって以降の処理は、具体例1と同様に七つ
の場合に分かれるが、(3)プロセッサ62からの書き
込み要求でキャッシュミスした場合と、(7)共有バス
80からの更新要求でキャッシュヒットした場合以外の
処理は具体例1と同様であるため、異なる(3)と
(7)の処理のみを説明する。
【0100】(3)プロセッサからの書き込み要求でキ
ャッシュヒットした場合 図16は、プロセッサからの書き込み要求でキャッシュ
ヒットした場合のフローチャートである。ステップS1
において、当該ブロックのシェアードフラグが「0」の
場合、ローカルにデータの書き込み処理を行う。先ず、
キャッシュ制御部18は、アドレスレジスタ10に保持
されたインデックス部42とブロックオフセット43の
値で指定されるキャッシュメモリ15のデータにデータ
レジスタ16の値を書き込む(ステップS2)。これと
同時に、キャッシュ制御部18は、アドレスレジスタ1
0に保持されたインデックス部42の値で指定されるス
テータスメモリ14のオーナフラグを「1」、ダーティ
フラグを「1」に設定する(ステップS3)。
ャッシュヒットした場合 図16は、プロセッサからの書き込み要求でキャッシュ
ヒットした場合のフローチャートである。ステップS1
において、当該ブロックのシェアードフラグが「0」の
場合、ローカルにデータの書き込み処理を行う。先ず、
キャッシュ制御部18は、アドレスレジスタ10に保持
されたインデックス部42とブロックオフセット43の
値で指定されるキャッシュメモリ15のデータにデータ
レジスタ16の値を書き込む(ステップS2)。これと
同時に、キャッシュ制御部18は、アドレスレジスタ1
0に保持されたインデックス部42の値で指定されるス
テータスメモリ14のオーナフラグを「1」、ダーティ
フラグを「1」に設定する(ステップS3)。
【0101】一方、ステップS1において、シェアード
フラグが「1」の場合、キャッシュ制御部18における
更新制御部18dは、同じブロックを持つ他のスヌープ
キャッシュメモリ部に更新要求を出す。この処理は次の
ようになる。先ず、共有バス80のバス権を獲得する
(ステップS4)。その後、アドレスレジスタ10の値
を共有アドレスバス線81に出力すると共に(ステップ
S5)、自キャッシュメモリ番号をオーナ番号線87に
出力し(ステップS6)、共有バスコマンド線83に更
新要求を出力する(ステップS7)。そして、次サイク
ルでデータレジスタ16の値を共有データバス線82に
出力し(ステップS8)、また、上記ステップS2、S
3と同様にデータの書き込み処理を行う(ステップS1
0〜ステップS13)。
フラグが「1」の場合、キャッシュ制御部18における
更新制御部18dは、同じブロックを持つ他のスヌープ
キャッシュメモリ部に更新要求を出す。この処理は次の
ようになる。先ず、共有バス80のバス権を獲得する
(ステップS4)。その後、アドレスレジスタ10の値
を共有アドレスバス線81に出力すると共に(ステップ
S5)、自キャッシュメモリ番号をオーナ番号線87に
出力し(ステップS6)、共有バスコマンド線83に更
新要求を出力する(ステップS7)。そして、次サイク
ルでデータレジスタ16の値を共有データバス線82に
出力し(ステップS8)、また、上記ステップS2、S
3と同様にデータの書き込み処理を行う(ステップS1
0〜ステップS13)。
【0102】但し、これらステップS9〜ステップS1
3の書き込み処理において、ステータスメモリ14へ書
き込むステータスの内容は次の通りである。先ず、ステ
ップS9において、シェアード線85がアクティブの場
合は、他のスヌープキャッシュメモリ部でそのブロック
を保持していることを示しているので、更新制御部18
dは、シェアードフラグを「1」、オーナフラグを
「1」、ダーティフラグを「1」、次オーナ番号を自ス
ヌープキャッシュメモリ部61のキャッシュメモリ番号
に設定する(ステップS9〜S11〜S13)。
3の書き込み処理において、ステータスメモリ14へ書
き込むステータスの内容は次の通りである。先ず、ステ
ップS9において、シェアード線85がアクティブの場
合は、他のスヌープキャッシュメモリ部でそのブロック
を保持していることを示しているので、更新制御部18
dは、シェアードフラグを「1」、オーナフラグを
「1」、ダーティフラグを「1」、次オーナ番号を自ス
ヌープキャッシュメモリ部61のキャッシュメモリ番号
に設定する(ステップS9〜S11〜S13)。
【0103】一方、ステップS9において、シェアード
線85がインアクティブの場合は、そのブロックを保持
するスヌープキャッシュメモリ部が存在しないことを示
しているので、シェアードフラグを「0」、オーナフラ
グを「1」、ダーティフラグを「1」、次オーナ番号を
自スヌープキャッシュメモリ部61のキャッシュメモリ
番号に設定する(ステップS9〜S10〜S12)。
線85がインアクティブの場合は、そのブロックを保持
するスヌープキャッシュメモリ部が存在しないことを示
しているので、シェアードフラグを「0」、オーナフラ
グを「1」、ダーティフラグを「1」、次オーナ番号を
自スヌープキャッシュメモリ部61のキャッシュメモリ
番号に設定する(ステップS9〜S10〜S12)。
【0104】(7)共有バス80からの更新要求でキャ
ッシュヒットした場合 図17は、この場合のフローチャートである。更新制御
部18dは、先ず、シェアード線85をアクティブにす
る(ステップS1)。次に、ステップS2において、共
有アドレスレジスタ11で示されるステータスメモリ1
4のオーナフラグ14cが「1」の場合は、オーナ線8
6もアクティブとする(ステップ3)。次いで、共有デ
ータバス線82の値を共有アドレスレジスタ11で示さ
れるキャッシュメモリ15のブロックに書き込む(ステ
ップS4)。そして、ステータスメモリ14のオーナフ
ラグを「0」、ダーティフラグを「0」、次オーナ番号
の値をオーナ番号線87の値に設定する(ステップS
5)。
ッシュヒットした場合 図17は、この場合のフローチャートである。更新制御
部18dは、先ず、シェアード線85をアクティブにす
る(ステップS1)。次に、ステップS2において、共
有アドレスレジスタ11で示されるステータスメモリ1
4のオーナフラグ14cが「1」の場合は、オーナ線8
6もアクティブとする(ステップ3)。次いで、共有デ
ータバス線82の値を共有アドレスレジスタ11で示さ
れるキャッシュメモリ15のブロックに書き込む(ステ
ップS4)。そして、ステータスメモリ14のオーナフ
ラグを「0」、ダーティフラグを「0」、次オーナ番号
の値をオーナ番号線87の値に設定する(ステップS
5)。
【0105】一方、ステップS2において、オーナフラ
グが「0」であった場合は、上記のステップS4と同様
に、共有データバス線82の値を共有アドレスレジスタ
11で示されるキャッシュメモリ15のブロックに書き
込む(ステップS6)。そして、ステータスメモリ14
のオーナフラグを「0」、ダーティフラグを「0」、次
オーナ番号の値を自キャッシュメモリ番号に設定する
(ステップS7)。
グが「0」であった場合は、上記のステップS4と同様
に、共有データバス線82の値を共有アドレスレジスタ
11で示されるキャッシュメモリ15のブロックに書き
込む(ステップS6)。そして、ステータスメモリ14
のオーナフラグを「0」、ダーティフラグを「0」、次
オーナ番号の値を自キャッシュメモリ番号に設定する
(ステップS7)。
【0106】〈効果〉以上のように、具体例2によれ
ば、具体例1と同様の効果を奏すると共に、プロセッサ
からの書き込み要求でキャッシュヒットした場合は、そ
のデータを共有している他のスヌープキャッシュメモリ
部のデータを更新するようにしたので、キャッシュヒッ
トの確率を向上させることができる。
ば、具体例1と同様の効果を奏すると共に、プロセッサ
からの書き込み要求でキャッシュヒットした場合は、そ
のデータを共有している他のスヌープキャッシュメモリ
部のデータを更新するようにしたので、キャッシュヒッ
トの確率を向上させることができる。
【0107】《具体例3》具体例3は、キャッシュミス
時にブロックが追い出される場合に、追い出されるブロ
ックを次オーナとして指し示しているブロックの情報を
更新するようにし、また、具体例1と同様にデータを無
効化するようにしたものである。
時にブロックが追い出される場合に、追い出されるブロ
ックを次オーナとして指し示しているブロックの情報を
更新するようにし、また、具体例1と同様にデータを無
効化するようにしたものである。
【0108】〈構成〉図18は、具体例3の構成図であ
る。図19は、具体例3のスヌープキャッシュメモリ制
御システムを適用した共有バス型マルチプロセッサシス
テムの構成図である。
る。図19は、具体例3のスヌープキャッシュメモリ制
御システムを適用した共有バス型マルチプロセッサシス
テムの構成図である。
【0109】これらの図において、図面上で具体例1と
異なる点は、共有バス80にオーナ番号更新線89が設
けられ、また、キャッシュ制御部18が次オーナ番号更
新制御部18eを備えている点である。
異なる点は、共有バス80にオーナ番号更新線89が設
けられ、また、キャッシュ制御部18が次オーナ番号更
新制御部18eを備えている点である。
【0110】オーナ番号更新線89は、キャッシュミス
時にブロックが追い出される場合に、追い出されるブロ
ックを次オーナとして指し示しているブロックの情報を
更新する、即ち、追い出されるブロックが次オーナとし
て指し示していたブロックを新たに次オーナとするため
に設けられている。
時にブロックが追い出される場合に、追い出されるブロ
ックを次オーナとして指し示しているブロックの情報を
更新する、即ち、追い出されるブロックが次オーナとし
て指し示していたブロックを新たに次オーナとするため
に設けられている。
【0111】また、共有バス80における共有アドレス
バス線81〜ダーティ線88は、次のような機能を有し
ている。
バス線81〜ダーティ線88は、次のような機能を有し
ている。
【0112】共有アドレスバス線81は、共有メモリ5
0と、スヌープキャッシュメモリ部61、71に共通す
るアドレスを転送するために設けられている。共有デー
タバス線82は、データを転送するためのものである。
共有バスコマンド線83は、ブロック読み出し要求や無
効化要求等を転送するために設けられている。共有メモ
リアクノリッジ線84は、共有メモリ50へのキャッシ
ュブロックの書き戻しおよび共有メモリ50からのキャ
ッシュブロックの読み出しの時に使用するタイミング信
号を転送するために設けられている。
0と、スヌープキャッシュメモリ部61、71に共通す
るアドレスを転送するために設けられている。共有デー
タバス線82は、データを転送するためのものである。
共有バスコマンド線83は、ブロック読み出し要求や無
効化要求等を転送するために設けられている。共有メモ
リアクノリッジ線84は、共有メモリ50へのキャッシ
ュブロックの書き戻しおよび共有メモリ50からのキャ
ッシュブロックの読み出しの時に使用するタイミング信
号を転送するために設けられている。
【0113】シェアード線85は、キャッシュミス時
に、スヌープキャッシュメモリ部からブロック読み出し
が行われることを示すためのものである。オーナ線86
は、キャッシュミス時のリプレース処理で、オーナの委
譲要求があった時の応答を表すためのものである。オー
ナ番号線87は、ブロックをスヌープキャッシュメモリ
部から転送する時に、転送先のスヌープキャッシュメモ
リ部の番号を表し、また、キャッシュミス時のリプレー
ス処理でオーナの委譲要求をする場合の委譲元のスヌー
プキャッシュメモリ部の番号を表すために設けられてい
る。ダーティ線88は、キャッシュメモリ間のブロック
転送時とオーナの委譲時にそのブロックが書き換えられ
ていることを表すために設けられている。
に、スヌープキャッシュメモリ部からブロック読み出し
が行われることを示すためのものである。オーナ線86
は、キャッシュミス時のリプレース処理で、オーナの委
譲要求があった時の応答を表すためのものである。オー
ナ番号線87は、ブロックをスヌープキャッシュメモリ
部から転送する時に、転送先のスヌープキャッシュメモ
リ部の番号を表し、また、キャッシュミス時のリプレー
ス処理でオーナの委譲要求をする場合の委譲元のスヌー
プキャッシュメモリ部の番号を表すために設けられてい
る。ダーティ線88は、キャッシュメモリ間のブロック
転送時とオーナの委譲時にそのブロックが書き換えられ
ていることを表すために設けられている。
【0114】また、次オーナ番号更新制御部18eは、
自スヌープキャッシュメモリ部が任意のデータを追い出
す場合、自スヌープキャッシュメモリ部のオーナ番号と
次オーナ番号を共有バス80のオーナ番号線87と、オ
ーナ番号更新線89に出力し、一方、共有バス80のオ
ーナ番号線87上に出力されているオーナ番号が、自ス
ヌープキャッシュメモリ部の次オーナ番号と一致した場
合は、この次オーナ番号を、オーナ番号更新線89上に
出力されている次オーナ番号に更新する機能を有してい
る。
自スヌープキャッシュメモリ部が任意のデータを追い出
す場合、自スヌープキャッシュメモリ部のオーナ番号と
次オーナ番号を共有バス80のオーナ番号線87と、オ
ーナ番号更新線89に出力し、一方、共有バス80のオ
ーナ番号線87上に出力されているオーナ番号が、自ス
ヌープキャッシュメモリ部の次オーナ番号と一致した場
合は、この次オーナ番号を、オーナ番号更新線89上に
出力されている次オーナ番号に更新する機能を有してい
る。
【0115】〈動作〉具体例3におけるキャッシュメモ
リ15のヒット判定処理は、具体例1、2と同様である
ため、ここでの説明は省略する。
リ15のヒット判定処理は、具体例1、2と同様である
ため、ここでの説明は省略する。
【0116】ヒット判定結果と、プロセッサ62あるい
は共有バス80からの要求によって、以降の処理は、
(1)プロセッサ62からの読み出し要求でキャッシュ
ヒットした場合、(2)プロセッサ62からの読み出し
要求でキャッシュミスした場合、(3)プロセッサ62
からの書き込み要求でキャッシュヒットした場合、
(4)プロセッサ62からの書き込み要求でキャッシュ
ミスした場合、(5)共有バス80からのブロック転送
要求でキャッシュヒットした場合、(6)共有バス80
からのオーナ委譲要求でキャッシュヒットし、次オーナ
番号がオーナ番号線87の値を指していた場合、(7)
共有バス80からの次オーナ番号更新要求でキャッシュ
ヒットし、オーナ番号線が当該ブロックの次オーナ番号
の値と一致した場合、(8)共有バス80からの無効化
要求でキャッシュヒットした場合、の八つに分かれる。
尚、共有バス80からの要求でキャッシュミスした場
合、本システムでは何もしない。
は共有バス80からの要求によって、以降の処理は、
(1)プロセッサ62からの読み出し要求でキャッシュ
ヒットした場合、(2)プロセッサ62からの読み出し
要求でキャッシュミスした場合、(3)プロセッサ62
からの書き込み要求でキャッシュヒットした場合、
(4)プロセッサ62からの書き込み要求でキャッシュ
ミスした場合、(5)共有バス80からのブロック転送
要求でキャッシュヒットした場合、(6)共有バス80
からのオーナ委譲要求でキャッシュヒットし、次オーナ
番号がオーナ番号線87の値を指していた場合、(7)
共有バス80からの次オーナ番号更新要求でキャッシュ
ヒットし、オーナ番号線が当該ブロックの次オーナ番号
の値と一致した場合、(8)共有バス80からの無効化
要求でキャッシュヒットした場合、の八つに分かれる。
尚、共有バス80からの要求でキャッシュミスした場
合、本システムでは何もしない。
【0117】これらの処理のうち、具体例1と異なるの
は、(2)プロセッサからの読み出し要求でキャッシュ
ミスした場合と、(5)共有バスからのブロック転送で
キャッシュヒットした場合と、(7)共有バス80から
の次オーナ番号更新要求でキャッシュヒットし、オーナ
番号線が当該ブロックの次オーナ番号の値と一致した場
合の動作である。尚、上記(8)の共有バス80からの
無効化要求でキャッシュヒットした場合は、具体例1に
おける(7)と同様である。
は、(2)プロセッサからの読み出し要求でキャッシュ
ミスした場合と、(5)共有バスからのブロック転送で
キャッシュヒットした場合と、(7)共有バス80から
の次オーナ番号更新要求でキャッシュヒットし、オーナ
番号線が当該ブロックの次オーナ番号の値と一致した場
合の動作である。尚、上記(8)の共有バス80からの
無効化要求でキャッシュヒットした場合は、具体例1に
おける(7)と同様である。
【0118】(2)プロセッサからの読み出し要求でキ
ャッシュミスした場合 ここでのキャッシュ制御部18の処理は、以下の二つの
部分に分けられる。 ・ブロックのリプレース処理 ・データの読み出し処理 これらのそれぞれについて次に説明する。
ャッシュミスした場合 ここでのキャッシュ制御部18の処理は、以下の二つの
部分に分けられる。 ・ブロックのリプレース処理 ・データの読み出し処理 これらのそれぞれについて次に説明する。
【0119】図20は、プロセッサからの読み出し要求
でキャッシュミスした場合のフローチャートである。 (a)ブロックのリプレース処理 リプレースの対象となったブロックのシェアードフラグ
が「0」で、ダーティフラグが「1」の場合、唯一の書
き換えられたデータであることを示しているので、共有
メモリ50への書き戻しが必要となる(ステップS1〜
S2〜S3)。ここで、共有メモリ50への書き戻し処
理は、図5に示した具体例1と同様であるため、ここで
の説明は省略する。
でキャッシュミスした場合のフローチャートである。 (a)ブロックのリプレース処理 リプレースの対象となったブロックのシェアードフラグ
が「0」で、ダーティフラグが「1」の場合、唯一の書
き換えられたデータであることを示しているので、共有
メモリ50への書き戻しが必要となる(ステップS1〜
S2〜S3)。ここで、共有メモリ50への書き戻し処
理は、図5に示した具体例1と同様であるため、ここで
の説明は省略する。
【0120】ステップS1において、リプレースの対象
となったブロックのシェアードフラグが「1」である場
合、同じブロックを保持するスヌープキャッシュメモリ
部のステータスメモリ14の次オーナ番号が、このスヌ
ープキャッシュメモリ部61を示している可能性があ
る。この場合、キャッシュ制御部18のオーナ委譲制御
部18aは、共有メモリ50へブロックを書き戻すので
はなく、次オーナ番号がこのスヌープキャッシュメモリ
部61を示している同じブロックを保持するスヌープキ
ャッシュメモリ部(即ち、前のオーナ)にオーナを委譲
することを試みる(オーナの委譲処理1:ステップS5
またはオーナの委譲処理2:ステップS8)。もし、こ
のような条件に当てはまるスヌープキャッシュメモリ部
が存在しなければ、通常の共有メモリ50への書き戻し
処理を行う。
となったブロックのシェアードフラグが「1」である場
合、同じブロックを保持するスヌープキャッシュメモリ
部のステータスメモリ14の次オーナ番号が、このスヌ
ープキャッシュメモリ部61を示している可能性があ
る。この場合、キャッシュ制御部18のオーナ委譲制御
部18aは、共有メモリ50へブロックを書き戻すので
はなく、次オーナ番号がこのスヌープキャッシュメモリ
部61を示している同じブロックを保持するスヌープキ
ャッシュメモリ部(即ち、前のオーナ)にオーナを委譲
することを試みる(オーナの委譲処理1:ステップS5
またはオーナの委譲処理2:ステップS8)。もし、こ
のような条件に当てはまるスヌープキャッシュメモリ部
が存在しなければ、通常の共有メモリ50への書き戻し
処理を行う。
【0121】ここで、ステップS5のオーナの委譲処理
1およびステップS8のオーナの委譲処理2について
は、具体例1、2と同様であるためここでの説明は省略
する。
1およびステップS8のオーナの委譲処理2について
は、具体例1、2と同様であるためここでの説明は省略
する。
【0122】また、ステップS1において、リプレース
の対象となったブロックのシェアードフラグが「1」、
ステップS4においてダーティフラグが「0」、ステッ
プS6においてオーナフラグが「0」、即ち、自分がそ
のブロックのオーナではない場合は、共有メモリ50と
値が同じであるか、あるいは同じブロックを持つ他のス
ヌープキャッシュメモリ部が共有メモリ50に書き戻す
責任を持つことを表しているので、自スヌープキャッシ
ュメモリ部61は書き戻し処理を行わない。しかし、そ
のブロックがスヌープキャッシュメモリ部61から追い
出されてしまうので、そのブロックを次のオーナとして
指し示しているブロックの次オーナ番号を、追い出され
るブロックが保持している次オーナ番号に更新する必要
がある。
の対象となったブロックのシェアードフラグが「1」、
ステップS4においてダーティフラグが「0」、ステッ
プS6においてオーナフラグが「0」、即ち、自分がそ
のブロックのオーナではない場合は、共有メモリ50と
値が同じであるか、あるいは同じブロックを持つ他のス
ヌープキャッシュメモリ部が共有メモリ50に書き戻す
責任を持つことを表しているので、自スヌープキャッシ
ュメモリ部61は書き戻し処理を行わない。しかし、そ
のブロックがスヌープキャッシュメモリ部61から追い
出されてしまうので、そのブロックを次のオーナとして
指し示しているブロックの次オーナ番号を、追い出され
るブロックが保持している次オーナ番号に更新する必要
がある。
【0123】図21は、次オーナ番号更新処理のフロー
チャートである。キャッシュ制御部18における次オー
ナ番号更新制御部18eは、アドレスレジスタ10のイ
ンデックス部42とブロックオフセット43の値と、イ
ンデックス部42で読み出されるタグメモリ13aの値
とを共有アドレスバス線81に出力する(ステップS7
01)。次に、自スヌープキャッシュメモリ部61のキ
ャッシュメモリ番号をオーナ番号線87に出力する(ス
テップS702)。そして、そのブロックのステータス
メモリ14の次オーナ番号の値をオーナ番号更新線89
に出力し(ステップS703)、共有バスコマンド線8
3に次オーナ番号更新要求を出力する(ステップS70
4)。
チャートである。キャッシュ制御部18における次オー
ナ番号更新制御部18eは、アドレスレジスタ10のイ
ンデックス部42とブロックオフセット43の値と、イ
ンデックス部42で読み出されるタグメモリ13aの値
とを共有アドレスバス線81に出力する(ステップS7
01)。次に、自スヌープキャッシュメモリ部61のキ
ャッシュメモリ番号をオーナ番号線87に出力する(ス
テップS702)。そして、そのブロックのステータス
メモリ14の次オーナ番号の値をオーナ番号更新線89
に出力し(ステップS703)、共有バスコマンド線8
3に次オーナ番号更新要求を出力する(ステップS70
4)。
【0124】一方、図20中のステップS6において、
オーナフラグが「1」の場合は、オーナ委譲処理2(ス
テップS8)を行うが、この処理については上述したよ
うに具体例1、2と同様である。
オーナフラグが「1」の場合は、オーナ委譲処理2(ス
テップS8)を行うが、この処理については上述したよ
うに具体例1、2と同様である。
【0125】また、ステップS1においてリプレースの
対象となったブロックのシェアードフラグが「0」、ス
テップS2においてダーティフラグが「0」の場合、ブ
ロックは書き換えられておらず、また、このブロックを
持つ他のスヌープキャッシュメモリ部が存在しないこと
を示しているので、書き戻し処理およびオーナ委譲処理
は行わない。そして、書き戻し処理あるいはオーナ委譲
処理が終了したら、キャッシュ制御部18におけるブロ
ック転送制御部18bは、キャッシュミスしたブロック
の転送処理を行う(ステップS9)。
対象となったブロックのシェアードフラグが「0」、ス
テップS2においてダーティフラグが「0」の場合、ブ
ロックは書き換えられておらず、また、このブロックを
持つ他のスヌープキャッシュメモリ部が存在しないこと
を示しているので、書き戻し処理およびオーナ委譲処理
は行わない。そして、書き戻し処理あるいはオーナ委譲
処理が終了したら、キャッシュ制御部18におけるブロ
ック転送制御部18bは、キャッシュミスしたブロック
の転送処理を行う(ステップS9)。
【0126】図22、図23は、キャッシュミスしたブ
ロックの転送処理のフローチャートである。ブロック転
送制御部18bは、アドレスレジスタ10の値を共有ア
ドレスバス線81に出力し(ステップS901)、共有
バスコマンド線83にブロック転送要求を出力する(ス
テップS902)。そして、シェアード線85か共有メ
モリアクノリッジ線84がアクティブになったら共有デ
ータバス線82の値をキャッシュメモリ15に書き込む
(ステップS903〜ステップS908)。ここで、ス
テップS906、S907、S908におけるブロック
の書き込み処理は、具体例1、2と同様であるため、そ
の説明は省略する。
ロックの転送処理のフローチャートである。ブロック転
送制御部18bは、アドレスレジスタ10の値を共有ア
ドレスバス線81に出力し(ステップS901)、共有
バスコマンド線83にブロック転送要求を出力する(ス
テップS902)。そして、シェアード線85か共有メ
モリアクノリッジ線84がアクティブになったら共有デ
ータバス線82の値をキャッシュメモリ15に書き込む
(ステップS903〜ステップS908)。ここで、ス
テップS906、S907、S908におけるブロック
の書き込み処理は、具体例1、2と同様であるため、そ
の説明は省略する。
【0127】ブロック転送制御部18bは、最後のデー
タを書き込む時、タグメモリ13aの、アドレスレジス
タ10のインデックス部42で示される領域にキャッシ
ュミスしたデータのタグ部41の値を書き込む(ステッ
プS909、S910、S911)。また、同時に、ス
テータスメモリ14の、アドレスレジスタ10のインデ
ックス部42で示される領域にステータスを書き込む
(ステップS912、S913、S914)。
タを書き込む時、タグメモリ13aの、アドレスレジス
タ10のインデックス部42で示される領域にキャッシ
ュミスしたデータのタグ部41の値を書き込む(ステッ
プS909、S910、S911)。また、同時に、ス
テータスメモリ14の、アドレスレジスタ10のインデ
ックス部42で示される領域にステータスを書き込む
(ステップS912、S913、S914)。
【0128】ステータスの値は次の通りである。即ち、
シェアード線85がアクティブ、ダーティ線88がアク
ティブであった場合は、ブロックの転送元が他のスヌー
プキャッシュメモリ部で、かつ、そのブロックが書き換
えられていることを示すので、バリッドフラグを
「1」、シェアードフラグを「1」、オーナフラグを
「1」、ダーティフラグを「1」、次オーナ番号を自ス
ヌープキャッシュメモリ部のキャッシュメモリ番号に設
定し(ステップS912)、オーナを移動する。一方、
この時、ダーティ線88がアクティブでなければ、その
ブロックは書き換えられていないことを示すので、ダー
ティフラグは「0」に設定する(ステップS907〜S
910〜S913)。
シェアード線85がアクティブ、ダーティ線88がアク
ティブであった場合は、ブロックの転送元が他のスヌー
プキャッシュメモリ部で、かつ、そのブロックが書き換
えられていることを示すので、バリッドフラグを
「1」、シェアードフラグを「1」、オーナフラグを
「1」、ダーティフラグを「1」、次オーナ番号を自ス
ヌープキャッシュメモリ部のキャッシュメモリ番号に設
定し(ステップS912)、オーナを移動する。一方、
この時、ダーティ線88がアクティブでなければ、その
ブロックは書き換えられていないことを示すので、ダー
ティフラグは「0」に設定する(ステップS907〜S
910〜S913)。
【0129】ステップS904において、共有メモリア
クノリッジ線84がアクティブであった場合は、ブロッ
クの転送元が共有メモリ50で、かつ、そのブロックを
保持しているスヌープキャッシュメモリ部が存在しない
ことを示しているので、バリッドフラグを「1」、シェ
アードフラグを「0」、オーナフラグを「1」、ダーテ
ィフラグを「0」、次オーナ番号を自スヌープキャッシ
ュメモリ部61のキャッシュメモリ番号に設定する(ス
テップS904〜S908〜S911〜S914)。
クノリッジ線84がアクティブであった場合は、ブロッ
クの転送元が共有メモリ50で、かつ、そのブロックを
保持しているスヌープキャッシュメモリ部が存在しない
ことを示しているので、バリッドフラグを「1」、シェ
アードフラグを「0」、オーナフラグを「1」、ダーテ
ィフラグを「0」、次オーナ番号を自スヌープキャッシ
ュメモリ部61のキャッシュメモリ番号に設定する(ス
テップS904〜S908〜S911〜S914)。
【0130】このように、具体例3では、具体例1、2
と異なり、プロセッサ62からの読み出し要求でキャッ
シュミスした場合において、オーナではなかった場合は
次オーナ更新処理を行った後にキャッシュミスしたブロ
ックの転送処理を行う。
と異なり、プロセッサ62からの読み出し要求でキャッ
シュミスした場合において、オーナではなかった場合は
次オーナ更新処理を行った後にキャッシュミスしたブロ
ックの転送処理を行う。
【0131】(b)データの読み出し処理 このデータの読み出し処理においても、具体例1、2と
同様であるため、ここでの説明は省略する。
同様であるため、ここでの説明は省略する。
【0132】(5)共有バス80からのブロック転送要
求でキャッシュヒットした場合 図24は、共有バス80からのブロック転送要求でキャ
ッシュヒットした場合のフローチャートである。
求でキャッシュヒットした場合 図24は、共有バス80からのブロック転送要求でキャ
ッシュヒットした場合のフローチャートである。
【0133】ステップS1において、共有アドレスレジ
スタ11で示されるステータスメモリ14のオーナフラ
グ14cが「1」の場合、自スヌープキャッシュメモリ
部61は、ブロック転送の転送元となる。ブロック転送
制御部18bは、先ず、シェアード線85をアクティブ
にし(ステップS2)、次に、共有アドレスレジスタ1
1で読み出されるキャッシュメモリ15の値を共有デー
タバス線82に出力する(ステップS5)。この時、ダ
ーティフラグが「1」の場合は、ダーティ線88もアク
ティブにする(ステップS3、S4)。更に、1サイク
ル毎にブロックオフセット43をインクリメントして、
1ブロック分のデータを出力する(ステップS6、S
7)。最後のデータを出力する時に、共有アドレスレジ
スタ11で示されるステータスメモリ14のシェアード
フラグを「1」、オーナフラグを「0」、ダーティフラ
グを「0」、次オーナ番号をオーナ番号線87の値に設
定し(ステップS8)、オーナを転送要求元のスヌープ
キャッシュメモリ部に移動する。一方、ステップS1に
おいて、オーナフラグ14cが「0」の場合にはブロッ
ク転送は行わない。
スタ11で示されるステータスメモリ14のオーナフラ
グ14cが「1」の場合、自スヌープキャッシュメモリ
部61は、ブロック転送の転送元となる。ブロック転送
制御部18bは、先ず、シェアード線85をアクティブ
にし(ステップS2)、次に、共有アドレスレジスタ1
1で読み出されるキャッシュメモリ15の値を共有デー
タバス線82に出力する(ステップS5)。この時、ダ
ーティフラグが「1」の場合は、ダーティ線88もアク
ティブにする(ステップS3、S4)。更に、1サイク
ル毎にブロックオフセット43をインクリメントして、
1ブロック分のデータを出力する(ステップS6、S
7)。最後のデータを出力する時に、共有アドレスレジ
スタ11で示されるステータスメモリ14のシェアード
フラグを「1」、オーナフラグを「0」、ダーティフラ
グを「0」、次オーナ番号をオーナ番号線87の値に設
定し(ステップS8)、オーナを転送要求元のスヌープ
キャッシュメモリ部に移動する。一方、ステップS1に
おいて、オーナフラグ14cが「0」の場合にはブロッ
ク転送は行わない。
【0134】(7)共有バス80からの次オーナ番号更
新要求でキャッシュヒットし、オーナ番号線が当該ブロ
ックの次オーナ番号の値と一致した場合 この場合は、共有アドレスレジスタ11で示されるステ
ータスメモリ14の次オーナ番号をオーナ番号更新線8
9の値に設定する。
新要求でキャッシュヒットし、オーナ番号線が当該ブロ
ックの次オーナ番号の値と一致した場合 この場合は、共有アドレスレジスタ11で示されるステ
ータスメモリ14の次オーナ番号をオーナ番号更新線8
9の値に設定する。
【0135】〈効果〉以上説明したように具体例3によ
れば、具体例1の効果に加えて次のような効果がある。
即ち、具体例3では、キャッシュミス時のリプレース処
理によってブロックがキャッシュメモリ15から追い出
されることによる次オーナ番号の参照関係が崩れる場合
にも、共有バス80上のオーナ番号更新線89を用い
て、追い出されるブロックを指し示していたブロックの
次オーナ番号を、追い出されるブロックが指し示してい
た次オーナ番号に書き換えるよう構成している。このた
め、いずれかのスヌープキャッシュメモリ部にそのブロ
ックが存在する場合は、必ずスヌープキャッシュメモリ
部間でブロック転送やオーナ委譲を行うことができ、キ
ャッシュミス時の共有メモリ50への書き戻しの頻度を
更に減少させることができる。
れば、具体例1の効果に加えて次のような効果がある。
即ち、具体例3では、キャッシュミス時のリプレース処
理によってブロックがキャッシュメモリ15から追い出
されることによる次オーナ番号の参照関係が崩れる場合
にも、共有バス80上のオーナ番号更新線89を用い
て、追い出されるブロックを指し示していたブロックの
次オーナ番号を、追い出されるブロックが指し示してい
た次オーナ番号に書き換えるよう構成している。このた
め、いずれかのスヌープキャッシュメモリ部にそのブロ
ックが存在する場合は、必ずスヌープキャッシュメモリ
部間でブロック転送やオーナ委譲を行うことができ、キ
ャッシュミス時の共有メモリ50への書き戻しの頻度を
更に減少させることができる。
【0136】《具体例4》具体例4は、具体例3のスヌ
ープキャッシュメモリ制御システムにおいて、プロセッ
サからの書き込み要求でキャッシュヒットした場合に、
そのデータを共有している他のスヌープキャッシュメモ
リ部のデータを無効化するのではなく、更新するように
したものである。
ープキャッシュメモリ制御システムにおいて、プロセッ
サからの書き込み要求でキャッシュヒットした場合に、
そのデータを共有している他のスヌープキャッシュメモ
リ部のデータを無効化するのではなく、更新するように
したものである。
【0137】〈構成〉図25は、具体例4の構成図であ
る。具体例4における図面上の構成で異なる点は、具体
例3の無効化制御部18cの代わりに更新制御部18d
を備えた点であり、他の構成は具体例3と同様である。
る。具体例4における図面上の構成で異なる点は、具体
例3の無効化制御部18cの代わりに更新制御部18d
を備えた点であり、他の構成は具体例3と同様である。
【0138】更新制御部18dは、具体例2と同様に、
自スヌープキャッシュメモリ部61が保持するデータに
書き込みが行われた場合は、他のスヌープキャッシュメ
モリ部に対してデータの更新要求を行うと共に、データ
の更新要求を受けた場合は、対応するデータを更新する
と共に、次オーナ番号を更新する機能を有している。
自スヌープキャッシュメモリ部61が保持するデータに
書き込みが行われた場合は、他のスヌープキャッシュメ
モリ部に対してデータの更新要求を行うと共に、データ
の更新要求を受けた場合は、対応するデータを更新する
と共に、次オーナ番号を更新する機能を有している。
【0139】即ち、更新制御部18dは、自スヌープキ
ャッシュメモリ部61が保持するデータにプロセッサ6
2から書き込みが行われ、かつ、そのデータを他のスヌ
ープキャッシュメモリ部も保有していた場合は、自スヌ
ープキャッシュメモリ部61をオーナに設定すると共
に、自スヌープキャッシュメモリ部61のキャッシュメ
モリ番号と次オーナ番号とデータ更新要求とを共有バス
80上に出力する。一方、共有バス80上にデータ更新
要求が出力され、かつ、そのデータを自スヌープキャッ
シュメモリ部61が保有し、自スヌープキャッシュメモ
リ部61がオーナでなく、自スヌープキャッシュメモリ
部61の次オーナ番号と、データ更新要求元のキャッシ
ュメモリ番号とが一致した場合は、そのデータの更新を
行うと共に、自スヌープキャッシュメモリ部61の次オ
ーナ番号をデータ更新要求元の次オーナ番号に書き換え
る。また、そのデータを自スヌープキャッシュメモリ部
61が保有し、自スヌープキャッシュメモリ部61がオ
ーナである場合は、そのデータの更新を行うと共に、自
スヌープキャッシュメモリ部61の次オーナ番号をデー
タ更新要求元のキャッシュメモリ番号に書き換える機能
を有している。
ャッシュメモリ部61が保持するデータにプロセッサ6
2から書き込みが行われ、かつ、そのデータを他のスヌ
ープキャッシュメモリ部も保有していた場合は、自スヌ
ープキャッシュメモリ部61をオーナに設定すると共
に、自スヌープキャッシュメモリ部61のキャッシュメ
モリ番号と次オーナ番号とデータ更新要求とを共有バス
80上に出力する。一方、共有バス80上にデータ更新
要求が出力され、かつ、そのデータを自スヌープキャッ
シュメモリ部61が保有し、自スヌープキャッシュメモ
リ部61がオーナでなく、自スヌープキャッシュメモリ
部61の次オーナ番号と、データ更新要求元のキャッシ
ュメモリ番号とが一致した場合は、そのデータの更新を
行うと共に、自スヌープキャッシュメモリ部61の次オ
ーナ番号をデータ更新要求元の次オーナ番号に書き換え
る。また、そのデータを自スヌープキャッシュメモリ部
61が保有し、自スヌープキャッシュメモリ部61がオ
ーナである場合は、そのデータの更新を行うと共に、自
スヌープキャッシュメモリ部61の次オーナ番号をデー
タ更新要求元のキャッシュメモリ番号に書き換える機能
を有している。
【0140】また、具体例4が具体例3と異なる点は、
共有バスコマンド線83が具体例3の無効化要求に代わ
って更新要求を転送する点と、オーナ番号線87が、具
体例3の役割に加えて、共有されているブロックのデー
タを更新する時にその処理を行うスヌープキャッシュメ
モリ部のキャッシュメモリ番号を表している点である。
共有バスコマンド線83が具体例3の無効化要求に代わ
って更新要求を転送する点と、オーナ番号線87が、具
体例3の役割に加えて、共有されているブロックのデー
タを更新する時にその処理を行うスヌープキャッシュメ
モリ部のキャッシュメモリ番号を表している点である。
【0141】〈動作〉ヒット判定の処理は、具体例1〜
3と同様であるため、ここでの説明は省略する。また、
ヒット判定結果と、プロセッサ62あるいは共有バス8
0からの要求によって以降の処理は、具体例3と同様に
八つの場合に分かれるが、(3)プロセッサ62からの
書き込み要求でキャッシュミスした場合と、(8)共有
バス80からの更新要求でキャッシュヒットした場合以
外の処理は具体例3と同様であるため、異なる処理のみ
を説明する。
3と同様であるため、ここでの説明は省略する。また、
ヒット判定結果と、プロセッサ62あるいは共有バス8
0からの要求によって以降の処理は、具体例3と同様に
八つの場合に分かれるが、(3)プロセッサ62からの
書き込み要求でキャッシュミスした場合と、(8)共有
バス80からの更新要求でキャッシュヒットした場合以
外の処理は具体例3と同様であるため、異なる処理のみ
を説明する。
【0142】(3)プロセッサからの書き込み要求でキ
ャッシュヒットした場合 図26は、プロセッサからの書き込み要求でキャッシュ
ヒットした場合のフローチャートである。ステップS1
において、当該ブロックのシェアードフラグが「0」の
場合、ローカルにデータの書き込み処理を行う。先ず、
キャッシュ制御部18は、アドレスレジスタ10に保持
されたインデックス部42とブロックオフセット43の
値で指定されるキャッシュメモリ15のデータにデータ
レジスタ16の値を書き込む(ステップS2)。これと
同時に、キャッシュ制御部18は、アドレスレジスタ1
0に保持されたインデックス部42の値で指定されるス
テータスメモリ14のオーナフラグを「1」、ダーティ
フラグを「1」に設定する(ステップS3)。
ャッシュヒットした場合 図26は、プロセッサからの書き込み要求でキャッシュ
ヒットした場合のフローチャートである。ステップS1
において、当該ブロックのシェアードフラグが「0」の
場合、ローカルにデータの書き込み処理を行う。先ず、
キャッシュ制御部18は、アドレスレジスタ10に保持
されたインデックス部42とブロックオフセット43の
値で指定されるキャッシュメモリ15のデータにデータ
レジスタ16の値を書き込む(ステップS2)。これと
同時に、キャッシュ制御部18は、アドレスレジスタ1
0に保持されたインデックス部42の値で指定されるス
テータスメモリ14のオーナフラグを「1」、ダーティ
フラグを「1」に設定する(ステップS3)。
【0143】一方、ステップS1において、シェアード
フラグが「1」であった場合、更新制御部18dは同じ
ブロックを持つ他のスヌープキャッシュメモリ部に更新
要求を出すと共に、当該ブロックを次のオーナとして指
し示しているブロックの次オーナ番号を当該ブロックが
保持している次オーナ番号に更新する。この処理は次の
ようになる。
フラグが「1」であった場合、更新制御部18dは同じ
ブロックを持つ他のスヌープキャッシュメモリ部に更新
要求を出すと共に、当該ブロックを次のオーナとして指
し示しているブロックの次オーナ番号を当該ブロックが
保持している次オーナ番号に更新する。この処理は次の
ようになる。
【0144】先ず、共有バス80のバス権を獲得する
(ステップS4)。その後、アドレスレジスタ10の値
を共有アドレスバス線81に出力し(ステップS5)、
また、自キャッシュメモリ番号をオーナ番号線87に出
力すると共に(ステップS6)、当該ブロックの次オー
ナ番号の値をオーナ番号更新線89に出力する(ステッ
プS7)。更に、共有バスコマンド線83に更新要求を
出力する(ステップS8)。
(ステップS4)。その後、アドレスレジスタ10の値
を共有アドレスバス線81に出力し(ステップS5)、
また、自キャッシュメモリ番号をオーナ番号線87に出
力すると共に(ステップS6)、当該ブロックの次オー
ナ番号の値をオーナ番号更新線89に出力する(ステッ
プS7)。更に、共有バスコマンド線83に更新要求を
出力する(ステップS8)。
【0145】そして、次サイクルでデータレジスタ16
の値を共有データバス線82に出力し(ステップS
9)、次いで、上記ステップS2〜S3と同様にデータ
の書き込み処理を行う(ステップS10〜ステップS1
4)。
の値を共有データバス線82に出力し(ステップS
9)、次いで、上記ステップS2〜S3と同様にデータ
の書き込み処理を行う(ステップS10〜ステップS1
4)。
【0146】但し、これらステップS10〜ステップS
14の書き込み処理において、ステータスメモリ14へ
書き込むステータスの内容は次の通りである。先ず、ス
テップS10において、シェアード線85がアクティブ
の場合は、他のスヌープキャッシュメモリ部でそのブロ
ックを保持していることを示しているので、更新制御部
18dは、シェアードフラグを「1」、オーナフラグを
「1」、ダーティフラグを「1」、次オーナ番号を自ス
ヌープキャッシュメモリ部のキャッシュメモリ番号に設
定し、オーナを移動する(ステップS10〜S11〜S
12)。
14の書き込み処理において、ステータスメモリ14へ
書き込むステータスの内容は次の通りである。先ず、ス
テップS10において、シェアード線85がアクティブ
の場合は、他のスヌープキャッシュメモリ部でそのブロ
ックを保持していることを示しているので、更新制御部
18dは、シェアードフラグを「1」、オーナフラグを
「1」、ダーティフラグを「1」、次オーナ番号を自ス
ヌープキャッシュメモリ部のキャッシュメモリ番号に設
定し、オーナを移動する(ステップS10〜S11〜S
12)。
【0147】一方、ステップS10において、シェアー
ド線85がインアクティブの場合は、そのブロックを保
持するスヌープキャッシュメモリ部が存在しないことを
示しているので、シェアードフラグを「0」、オーナフ
ラグを「1」、ダーティフラグを「1」、次オーナ番号
を自スヌープキャッシュメモリ部のキャッシュメモリ番
号に設定する(ステップS10〜S13〜S14)。
ド線85がインアクティブの場合は、そのブロックを保
持するスヌープキャッシュメモリ部が存在しないことを
示しているので、シェアードフラグを「0」、オーナフ
ラグを「1」、ダーティフラグを「1」、次オーナ番号
を自スヌープキャッシュメモリ部のキャッシュメモリ番
号に設定する(ステップS10〜S13〜S14)。
【0148】(8)共有バス80からの更新要求でキャ
ッシュヒットした場合 図27は、この場合のフローチャートである。更新制御
部18dは、オーナフラグが「0」で(ステップS
1)、オーナ番号線87の値と、当該ブロックの次オー
ナ番号の値が一致しない場合(ステップS2)、シェア
ード線85をアクティブにし(ステップS3)、共有デ
ータバス線82の値をアドレスレジスタ10で示される
キャッシュメモリ15に書き込む(ステップS4)。ス
テータスメモリ14の値は変更しない。
ッシュヒットした場合 図27は、この場合のフローチャートである。更新制御
部18dは、オーナフラグが「0」で(ステップS
1)、オーナ番号線87の値と、当該ブロックの次オー
ナ番号の値が一致しない場合(ステップS2)、シェア
ード線85をアクティブにし(ステップS3)、共有デ
ータバス線82の値をアドレスレジスタ10で示される
キャッシュメモリ15に書き込む(ステップS4)。ス
テータスメモリ14の値は変更しない。
【0149】一方、当該ブロックのオーナフラグが
「0」で(ステップS1)、オーナ番号線87の値と、
当該ブロックの次オーナ番号の値が一致した場合、シェ
アード線85をアクティブにし(ステップS5)、共有
データバス線82の値を共有アドレスレジスタ11で示
されるキャッシュメモリ15に書き込む(ステップS
6)。更に、当該ブロックの次オーナ番号の値をオーナ
番号線87の値に設定する(ステップS7)。
「0」で(ステップS1)、オーナ番号線87の値と、
当該ブロックの次オーナ番号の値が一致した場合、シェ
アード線85をアクティブにし(ステップS5)、共有
データバス線82の値を共有アドレスレジスタ11で示
されるキャッシュメモリ15に書き込む(ステップS
6)。更に、当該ブロックの次オーナ番号の値をオーナ
番号線87の値に設定する(ステップS7)。
【0150】また、ステップS1において、当該ブロッ
クのオーナフラグが「1」の場合、シェアード線85を
アクティブにし(ステップS8)共有データバス線82
の値を共有アドレスレジスタ11で示されるキャッシュ
メモリ15に書き込み(ステップS9)、ステータスメ
モリ14のオーナフラグを「0」、ダーティフラグを
「0」、次オーナ番号の値をオーナ番号線87の値に設
定する(ステップS10)。
クのオーナフラグが「1」の場合、シェアード線85を
アクティブにし(ステップS8)共有データバス線82
の値を共有アドレスレジスタ11で示されるキャッシュ
メモリ15に書き込み(ステップS9)、ステータスメ
モリ14のオーナフラグを「0」、ダーティフラグを
「0」、次オーナ番号の値をオーナ番号線87の値に設
定する(ステップS10)。
【0151】〈効果〉以上説明したように具体例4によ
れば、具体例3と同様に、いずれかのスヌープキャッシ
ュメモリ部にそのブロックが存在する場合は、必ずスヌ
ープキャッシュメモリ部間でブロック転送やオーナ委譲
を行うことができるため、キャッシュミス時の共有メモ
リ50への書き戻しの頻度を更に減少させることができ
るという効果を奏すると共に、具体例2と同様に、キャ
ッシュヒットの確率を向上させることができるという効
果がある。
れば、具体例3と同様に、いずれかのスヌープキャッシ
ュメモリ部にそのブロックが存在する場合は、必ずスヌ
ープキャッシュメモリ部間でブロック転送やオーナ委譲
を行うことができるため、キャッシュミス時の共有メモ
リ50への書き戻しの頻度を更に減少させることができ
るという効果を奏すると共に、具体例2と同様に、キャ
ッシュヒットの確率を向上させることができるという効
果がある。
【0152】《利用形態》上記各具体例では、本発明の
スヌープキャッシュメモリ制御システムを共有バス型マ
ルチプロセッサシステムに適用した例を示したが、これ
に限定されるものではなく、この他にも、分散ファイル
システムのキャッシングにも適用が可能である。
スヌープキャッシュメモリ制御システムを共有バス型マ
ルチプロセッサシステムに適用した例を示したが、これ
に限定されるものではなく、この他にも、分散ファイル
システムのキャッシングにも適用が可能である。
【図1】本発明のスヌープキャッシュメモリ制御システ
ムの具体例1の構成図である。
ムの具体例1の構成図である。
【図2】本発明のスヌープキャッシュメモリ制御システ
ムの具体例1を適用した共有バス型マルチプロセッサシ
ステムの構成図である。
ムの具体例1を適用した共有バス型マルチプロセッサシ
ステムの構成図である。
【図3】本発明のスヌープキャッシュメモリ制御システ
ムのアドレス構成の説明図である。
ムのアドレス構成の説明図である。
【図4】本発明のスヌープキャッシュメモリ制御システ
ムの具体例1、2のプロセッサからの読み出し要求でキ
ャッシュミスした場合のフローチャートである。
ムの具体例1、2のプロセッサからの読み出し要求でキ
ャッシュミスした場合のフローチャートである。
【図5】本発明のスヌープキャッシュメモリ制御システ
ムの共有メモリへの書き戻し処理のフローチャートであ
る。
ムの共有メモリへの書き戻し処理のフローチャートであ
る。
【図6】本発明のスヌープキャッシュメモリ制御システ
ムのオーナの委譲処理1のフローチャートである。
ムのオーナの委譲処理1のフローチャートである。
【図7】本発明のスヌープキャッシュメモリ制御システ
ムのオーナの委譲処理2のフローチャートである。
ムのオーナの委譲処理2のフローチャートである。
【図8】本発明のスヌープキャッシュメモリ制御システ
ムの具体例1のキャッシュミスしたブロックの転送処理
のフローチャート(その1)である。
ムの具体例1のキャッシュミスしたブロックの転送処理
のフローチャート(その1)である。
【図9】本発明のスヌープキャッシュメモリ制御システ
ムの具体例1のキャッシュミスしたブロックの転送処理
のフローチャート(その2)である。
ムの具体例1のキャッシュミスしたブロックの転送処理
のフローチャート(その2)である。
【図10】本発明のスヌープキャッシュメモリ制御シス
テムの具体例1のブロックの書き込み処理のフローチャ
ートである。
テムの具体例1のブロックの書き込み処理のフローチャ
ートである。
【図11】本発明のスヌープキャッシュメモリ制御シス
テムのデータの読み出し処理のフローチャートである。
テムのデータの読み出し処理のフローチャートである。
【図12】本発明のスヌープキャッシュメモリ制御シス
テムの具体例1のプロセッサからの書き込み要求でキャ
ッシュヒットした場合のフローチャートである。
テムの具体例1のプロセッサからの書き込み要求でキャ
ッシュヒットした場合のフローチャートである。
【図13】本発明のスヌープキャッシュメモリ制御シス
テムの具体例1の共有バスからのブロック転送要求でキ
ャッシュヒットした場合のフローチャートである。
テムの具体例1の共有バスからのブロック転送要求でキ
ャッシュヒットした場合のフローチャートである。
【図14】本発明のスヌープキャッシュメモリ制御シス
テムの具体例1の共有バスからのオーナ委譲要求でキャ
ッシュヒットした場合のフローチャートである。
テムの具体例1の共有バスからのオーナ委譲要求でキャ
ッシュヒットした場合のフローチャートである。
【図15】本発明のスヌープキャッシュメモリ制御シス
テムの具体例2の構成図である。
テムの具体例2の構成図である。
【図16】本発明のスヌープキャッシュメモリ制御シス
テムの具体例2のプロセッサからの書き込み要求でキャ
ッシュヒットした場合のフローチャートである。
テムの具体例2のプロセッサからの書き込み要求でキャ
ッシュヒットした場合のフローチャートである。
【図17】本発明のスヌープキャッシュメモリ制御シス
テムの具体例2の共有バスからの更新要求でキャッシュ
ヒットした場合のフローチャートである。
テムの具体例2の共有バスからの更新要求でキャッシュ
ヒットした場合のフローチャートである。
【図18】本発明のスヌープキャッシュメモリ制御シス
テムの具体例3の構成図である。
テムの具体例3の構成図である。
【図19】本発明のスヌープキャッシュメモリ制御シス
テムの具体例3を適用した共有バス型マルチプロセッサ
システムの構成図である。
テムの具体例3を適用した共有バス型マルチプロセッサ
システムの構成図である。
【図20】本発明のスヌープキャッシュメモリ制御シス
テムの具体例3、4のプロセッサからの読み出し要求で
キャッシュミスした場合のフローチャートである。
テムの具体例3、4のプロセッサからの読み出し要求で
キャッシュミスした場合のフローチャートである。
【図21】本発明のスヌープキャッシュメモリ制御シス
テムの具体例3の次オーナ番号更新処理のフローチャー
トである。
テムの具体例3の次オーナ番号更新処理のフローチャー
トである。
【図22】本発明のスヌープキャッシュメモリ制御シス
テムの具体例3のキャッシュミスしたブロックの転送処
理のフローチャート(その1)である。
テムの具体例3のキャッシュミスしたブロックの転送処
理のフローチャート(その1)である。
【図23】本発明のスヌープキャッシュメモリ制御シス
テムの具体例3のキャッシュミスしたブロックの転送処
理のフローチャート(その2)である。
テムの具体例3のキャッシュミスしたブロックの転送処
理のフローチャート(その2)である。
【図24】本発明のスヌープキャッシュメモリ制御シス
テムの具体例3の共有バスからのブロック転送要求でキ
ャッシュヒットした場合のフローチャートである。
テムの具体例3の共有バスからのブロック転送要求でキ
ャッシュヒットした場合のフローチャートである。
【図25】本発明のスヌープキャッシュメモリ制御シス
テムの具体例4の構成図である。
テムの具体例4の構成図である。
【図26】本発明のスヌープキャッシュメモリ制御シス
テムの具体例4のプロセッサからの書き込み要求でキャ
ッシュヒットした場合のフローチャートである。
テムの具体例4のプロセッサからの書き込み要求でキャ
ッシュヒットした場合のフローチャートである。
【図27】本発明のスヌープキャッシュメモリ制御シス
テムの具体例4の共有バスからの更新要求でキャッシュ
ヒットした場合のフローチャートである。
テムの具体例4の共有バスからの更新要求でキャッシュ
ヒットした場合のフローチャートである。
14e 次オーナ番号格納部 18 キャッシュ制御部 18a オーナ委譲制御部 18b ブロック転送制御部 18c 無効化制御部 18d 更新制御部 18e 次オーナ番号更新制御部 50 共有メモリ 61、71 スヌープキャッシュメモリ部 62、72 プロセッサ 80 共有バス
Claims (8)
- 【請求項1】 各々がプロセッサに対応して設けられ、
かつ、各々が共有バスを介して共有メモリに接続された
複数のスヌープキャッシュメモリ部のうち、いずれかの
スヌープキャッシュメモリ部でキャッシュミスが起きた
場合、当該キャッシュミスしたデータを転送する責任を
有するスヌープキャッシュメモリ部をそのデータのオー
ナとし、かつ、自スヌープキャッシュメモリ部が保持す
る任意のデータを追い出す時、当該データが前記共有メ
モリのデータと一致しない場合は、当該データを前記共
有メモリに書き戻す責任を有するスヌープキャッシュメ
モリ部をそのデータのオーナとして、各スヌープキャッ
シュメモリ部間のデータの一貫性を保持するスヌープキ
ャッシュメモリ制御システムにおいて、 各スヌープキャッシュメモリ部は、 次にオーナとなったスヌープキャッシュメモリ部のキャ
ッシュメモリ番号を格納する次オーナ番号格納部と、 いずれかのスヌープキャッシュメモリ部で、当該スヌー
プキャッシュメモリ部がオーナとなっているデータを追
い出す場合、オーナ以外のスヌープキャッシュメモリ部
では、前記次オーナ番号格納部を参照し、この次オーナ
番号が、前記データを追い出すスヌープキャッシュメモ
リ部のキャッシュメモリ番号に一致していた場合は、自
スヌープキャッシュメモリ部を新たなオーナとするキャ
ッシュ制御部とを備えたことを特徴とするスヌープキャ
ッシュメモリ制御システム。 - 【請求項2】 請求項1に記載のスヌープキャッシュメ
モリ制御システムにおいて、 いずれかのスヌープキャッシュメモリ部で、自スヌープ
キャッシュメモリ部が保持するデータを追い出す場合、
当該自スヌープキャッシュメモリ部を次オーナとするス
ヌープキャッシュメモリ部の次オーナ番号を、自スヌー
プキャッシュメモリ部の次オーナ番号格納部に格納され
ている次オーナ番号に書き換えるキャッシュ制御部を備
えたことを特徴とするスヌープキャッシュメモリ制御シ
ステム。 - 【請求項3】 請求項2に記載のスヌープキャッシュメ
モリ制御システムにおいて、 キャッシュ制御部は、 自スヌープキャッシュメモリ部が任意のデータを追い出
す場合、自スヌープキャッシュメモリ部のオーナ番号と
次オーナ番号を共有バスに出力し、 一方、共有バス上に出力されているオーナ番号が、自ス
ヌープキャッシュメモリ部の次オーナ番号と一致した場
合は、当該次オーナ番号を、前記共有バス上に出力され
ている次オーナ番号に更新する次オーナ番号更新制御部
を備えたことを特徴とするスヌープキャッシュメモリ制
御システム。 - 【請求項4】 請求項1〜3のいずれかに記載のスヌー
プキャッシュメモリ制御システムにおいて、 キャッシュ制御部は、 自スヌープキャッシュメモリ部がオーナであるデータを
追い出す時、当該データを他のスヌープキャッシュメモ
リ部も保有していた場合は、自スヌープキャッシュメモ
リ部のキャッシュメモリ番号とオーナ委譲要求を共有バ
ス上に出力し、 一方、共有バス上にオーナ委譲要求が出力され、かつ、
当該共有バス上のキャッシュメモリ番号が、自スヌープ
キャッシュメモリ部の次オーナ番号に一致した場合は、
オーナを自スヌープキャッシュメモリ部に設定するオー
ナ委譲制御部を備えたことを特徴とするスヌープキャッ
シュメモリ制御システム。 - 【請求項5】 請求項1〜4のいずれかに記載のスヌー
プキャッシュメモリ制御システムにおいて、 キャッシュ制御部は、 キャッシュミス時のデータ転送がスヌープキャッシュメ
モリ部間で行われる場合、オーナである転送元のスヌー
プキャッシュメモリ部では、転送先のスヌープキャッシ
ュメモリ部の番号を次オーナ番号格納部に格納し、前記
転送先のスヌープキャッシュメモリ部では、オーナを自
スヌープキャッシュメモリ部に設定するブロック転送制
御部を備えたことを特徴とするスヌープキャッシュメモ
リ制御システム。 - 【請求項6】 請求項1〜5のいずれかに記載のスヌー
プキャッシュメモリ制御システムにおいて、 キャッシュ制御部は、 自スヌープキャッシュメモリ部が保持するデータにプロ
セッサから書き込みが行われた場合、他のスヌープキャ
ッシュメモリ部に対して前記データの無効化要求を行
い、かつ、自スヌープキャッシュメモリ部をオーナに設
定する無効化制御部を備えたことを特徴とするスヌープ
キャッシュメモリ制御システム。 - 【請求項7】 請求項1〜5のいずれかに記載のスヌー
プキャッシュメモリ制御システムにおいて、 キャッシュ制御部は、 自スヌープキャッシュメモリ部が保持するデータにプロ
セッサから書き込みが行われ、かつ、当該データを他の
スヌープキャッシュメモリ部も保有していた場合は、自
スヌープキャッシュメモリ部をオーナに設定すると共
に、自スヌープキャッシュメモリ部のキャッシュメモリ
番号とデータ更新要求を共有バス上に出力し、 一方、共有バス上にデータ更新要求が出力され、かつ、
当該データを自スヌープキャッシュメモリ部が保有して
いた場合は、前記データの更新を行うと共に、自スヌー
プキャッシュメモリ部がオーナであった場合は、オーナ
をデータ更新要求元に移動し、かつ、次オーナ番号を当
該データ更新要求元のスヌープキャッシュメモリ部のキ
ャッシュメモリ番号に設定する更新制御部を備えたこと
を特徴とするスヌープキャッシュメモリ制御システム。 - 【請求項8】 請求項1〜5のいずれかに記載のスヌー
プキャッシュメモリ制御システムにおいて、 キャッシュ制御部は、 自スヌープキャッシュメモリ部が保持するデータにプロ
セッサから書き込みが行われ、かつ、当該データを他の
スヌープキャッシュメモリ部も保有していた場合は、自
スヌープキャッシュメモリ部をオーナに設定すると共
に、自スヌープキャッシュメモリ部のキャッシュメモリ
番号と次オーナ番号とデータ更新要求とを共有バス上に
出力し、 一方、共有バス上にデータ更新要求が出力され、かつ、
当該データを自スヌープキャッシュメモリ部が保有し、
自スヌープキャッシュメモリ部がオーナでなく、自スヌ
ープキャッシュメモリ部の次オーナ番号と、データ更新
要求元のキャッシュメモリ番号とが一致した場合は、前
記データの更新を行うと共に、自スヌープキャッシュメ
モリ部の次オーナ番号を前記データ更新要求元の次オー
ナ番号に書き換え、当該データを自スヌープキャッシュ
メモリ部が保有し、自スヌープキャッシュメモリ部がオ
ーナである場合は、前記データの更新を行うと共に、自
スヌープキャッシュメモリ部の次オーナ番号を前記デー
タ更新要求元のキャッシュメモリ番号に書き換える更新
制御部を備えたことを特徴とするスヌープキャッシュメ
モリ制御システム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP10030653A JPH11212868A (ja) | 1998-01-28 | 1998-01-28 | スヌープキャッシュメモリ制御システム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP10030653A JPH11212868A (ja) | 1998-01-28 | 1998-01-28 | スヌープキャッシュメモリ制御システム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH11212868A true JPH11212868A (ja) | 1999-08-06 |
Family
ID=12309759
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10030653A Pending JPH11212868A (ja) | 1998-01-28 | 1998-01-28 | スヌープキャッシュメモリ制御システム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH11212868A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006048406A (ja) * | 2004-08-05 | 2006-02-16 | Fujitsu Ltd | メモリシステム制御装置およびメモリシステム制御方法 |
| JP2018018513A (ja) * | 2016-07-26 | 2018-02-01 | 三星電子株式会社Samsung Electronics Co.,Ltd. | メモリシステム、プロセシングシステム、及びメモリスタックを動作させる方法 |
-
1998
- 1998-01-28 JP JP10030653A patent/JPH11212868A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006048406A (ja) * | 2004-08-05 | 2006-02-16 | Fujitsu Ltd | メモリシステム制御装置およびメモリシステム制御方法 |
| JP2018018513A (ja) * | 2016-07-26 | 2018-02-01 | 三星電子株式会社Samsung Electronics Co.,Ltd. | メモリシステム、プロセシングシステム、及びメモリスタックを動作させる方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH09223118A (ja) | スヌープキャッシュメモリ制御システム | |
| KR100548908B1 (ko) | 중앙 집중형 스누프 필터링 방법 및 장치 | |
| US7814279B2 (en) | Low-cost cache coherency for accelerators | |
| EP0735480B1 (en) | Cache coherent computer system that minimizes invalidation and copyback operations | |
| KR20050070013A (ko) | 원격 캐쉬 존재 정보를 저장하는 프로세서 캐쉬를 구비한컴퓨터 시스템 | |
| KR20050070012A (ko) | 통합 디렉토리 및 프로세서 캐쉬를 구비한 컴퓨터 시스템 | |
| JP2010507160A (ja) | データ処理装置の共有メモリへの書込みアクセス要求の処理 | |
| US20020078305A1 (en) | Method and apparatus for invalidating a cache line without data return in a multi-node architecture | |
| US6922755B1 (en) | Directory tree multinode computer system | |
| US6587922B2 (en) | Multiprocessor system | |
| JPH10154100A (ja) | 情報処理システム及び装置及びその制御方法 | |
| US5987544A (en) | System interface protocol with optional module cache | |
| JP3009430B2 (ja) | プロセッサおよびそのキャッシュメモリ制御方法 | |
| JPH06318174A (ja) | キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法 | |
| KR100282118B1 (ko) | 하이스루풋단일포트다중갱신유니트태그제어기 | |
| WO1997004392A1 (en) | Shared cache memory device | |
| US6678800B1 (en) | Cache apparatus and control method having writable modified state | |
| US6826654B2 (en) | Cache invalidation bus for a highly scalable shared cache memory hierarchy | |
| KR20010015008A (ko) | 멀티프로세서 시스템에서의 기록-통과 기억 동작동안 캐시코히어런스를 유지하는 방법 및 시스템 | |
| JPH11212868A (ja) | スヌープキャッシュメモリ制御システム | |
| JPH04191946A (ja) | スヌープキャッシュメモリ制御方式 | |
| US8166226B2 (en) | Apparatus and related method for maintaining read caching data of south bridge with north bridge | |
| JPH11102321A (ja) | 分散共有メモリ型並列計算機のキャッシュコヒーレンシ制御方式 | |
| JP2689899B2 (ja) | 情報処理装置 | |
| JP3365488B2 (ja) | メモリ共有型マルチプロセッサシステム |