JPH04191946A - スヌープキャッシュメモリ制御方式 - Google Patents
スヌープキャッシュメモリ制御方式Info
- Publication number
- JPH04191946A JPH04191946A JP2320914A JP32091490A JPH04191946A JP H04191946 A JPH04191946 A JP H04191946A JP 2320914 A JP2320914 A JP 2320914A JP 32091490 A JP32091490 A JP 32091490A JP H04191946 A JPH04191946 A JP H04191946A
- Authority
- JP
- Japan
- Prior art keywords
- block
- shared
- cache 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 119
- 238000000034 method Methods 0.000 claims description 49
- 230000004044 response Effects 0.000 description 4
- 125000001246 bromo group Chemical group Br* 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- OOYGSFOGFJDDHP-KMCOLRRFSA-N kanamycin A sulfate Chemical group OS(O)(=O)=O.O[C@@H]1[C@@H](O)[C@H](O)[C@@H](CN)O[C@@H]1O[C@H]1[C@H](O)[C@@H](O[C@@H]2[C@@H]([C@@H](N)[C@H](O)[C@@H](CO)O2)O)[C@H](N)C[C@@H]1N OOYGSFOGFJDDHP-KMCOLRRFSA-N 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、共有バス型マルチプロセッサ7ステムにおけ
るキャッシュメモリの制御方式に関するものであり、特
に、共有バスを介して共有メモリに接続された各キャッ
シュメモリ相互の記憶内容の一貫性(coherenc
e )を効果的に保証するスヌープキャッシュメモリ制
御方式に関する。
るキャッシュメモリの制御方式に関するものであり、特
に、共有バスを介して共有メモリに接続された各キャッ
シュメモリ相互の記憶内容の一貫性(coherenc
e )を効果的に保証するスヌープキャッシュメモリ制
御方式に関する。
複数のプロセッサが共有バスを介して共有メモリに接続
された共有バス型マルチプロセッサシステムにおいては
、多くの場合、各要素プロセッサ毎にキャッシュメモリ
を有する。この場合、これらのキャッシュメモリ相互間
の記憶内容に対する更新の一貫性が問題となる。このた
め共有バス型マルチプロセッサシステムにおいては共有
バスのトランザクシロンを各キャッシュメモリが監視し
、各プロセッサシステム毎にローカルにキャッシュメモ
リ内の情報更新を管理して上記一貫性を保つようにして
いる。このような一貫性を保証するためのキャッシュメ
モリの制御方式をスヌーブキャソシュ制御方式と呼ぶ。
された共有バス型マルチプロセッサシステムにおいては
、多くの場合、各要素プロセッサ毎にキャッシュメモリ
を有する。この場合、これらのキャッシュメモリ相互間
の記憶内容に対する更新の一貫性が問題となる。このた
め共有バス型マルチプロセッサシステムにおいては共有
バスのトランザクシロンを各キャッシュメモリが監視し
、各プロセッサシステム毎にローカルにキャッシュメモ
リ内の情報更新を管理して上記一貫性を保つようにして
いる。このような一貫性を保証するためのキャッシュメ
モリの制御方式をスヌーブキャソシュ制御方式と呼ぶ。
このスヌープキャ1.シュ制御方式にはキャッシュメモ
リの管理についていくつかの制御方法が提案され、評価
か試みられている(たとえば、 Cache Coh
erence Protocols:Evaluati
on tlsing a Multiprocesso
r SimulationModel″、 James
Archibald、他+ aca+ Trnasa
cLions on Computer System
s、 1986. November、 Volume
4. Number4. pp、273−298)。
リの管理についていくつかの制御方法が提案され、評価
か試みられている(たとえば、 Cache Coh
erence Protocols:Evaluati
on tlsing a Multiprocesso
r SimulationModel″、 James
Archibald、他+ aca+ Trnasa
cLions on Computer System
s、 1986. November、 Volume
4. Number4. pp、273−298)。
従来のスヌーブキャッシュメモリ制御方式(7)L)ず
れにおいても、キャッシュメモリ相互間で互いに共有し
ているブロック(これを共有ブロックと呼ぶ)の写しを
複数のキャッシュメモリで持つことは許している。一方
、共有ブロックの中のデータ(これを共有データと呼ぶ
)を書き換えた場合の扱い方として、他のキャッシュメ
モリの共有ブロックを無効にする無効化方式と、他のキ
ャッシュメモリの古いブロックを新たなブロックに更新
する更新方式との2つの方式が提案されている。
れにおいても、キャッシュメモリ相互間で互いに共有し
ているブロック(これを共有ブロックと呼ぶ)の写しを
複数のキャッシュメモリで持つことは許している。一方
、共有ブロックの中のデータ(これを共有データと呼ぶ
)を書き換えた場合の扱い方として、他のキャッシュメ
モリの共有ブロックを無効にする無効化方式と、他のキ
ャッシュメモリの古いブロックを新たなブロックに更新
する更新方式との2つの方式が提案されている。
しかしながら、どちらの方式もすべての共有データの取
扱いに対しても有効というわけではなく、ブロモ、す間
で共有データの受は渡しが頻繁に起こる場合には更新方
式が有利であるが、データの受は渡しの頻度が少ない場
合は無効化方式が有利な場合がある。
扱いに対しても有効というわけではなく、ブロモ、す間
で共有データの受は渡しが頻繁に起こる場合には更新方
式が有利であるが、データの受は渡しの頻度が少ない場
合は無効化方式が有利な場合がある。
従って、スヌープキャノシュの制御方式として無効化方
式か更新方式かのいずれかに固定した場合、ある種のデ
ータの受渡しには有効であるが他のデータについては効
率か悪くなることがある。
式か更新方式かのいずれかに固定した場合、ある種のデ
ータの受渡しには有効であるが他のデータについては効
率か悪くなることがある。
このため上記2方式を切り換えることが提案されている
。この切り換え方法としては、キャシュメモリ全体とし
てではなく、ページと呼ぶキャッシュメモリ内の一定の
記憶領域ごとに無効化方式か更新方式かのどちらの制御
方式をとるかの情報をソフトウェアで指定し、その指定
に従ってページ単位でどちらかの方式に切り換える方式
が提案されている(たとえば、[細粒度並列実行支援機
構」、松本、(社)情報処理学会「情報処理学会研究報
告J、89−ARC−77,1989年7月13日14
日、第91〜98ページ)。
。この切り換え方法としては、キャシュメモリ全体とし
てではなく、ページと呼ぶキャッシュメモリ内の一定の
記憶領域ごとに無効化方式か更新方式かのどちらの制御
方式をとるかの情報をソフトウェアで指定し、その指定
に従ってページ単位でどちらかの方式に切り換える方式
が提案されている(たとえば、[細粒度並列実行支援機
構」、松本、(社)情報処理学会「情報処理学会研究報
告J、89−ARC−77,1989年7月13日14
日、第91〜98ページ)。
しかしながら、以上述べた切換方式では共有データの特
性によってデータの記憶領域を分けると共に、無効化方
式または更新方式のどちらを使用するかをユーザが指定
する必要があり、この指定が厄介である。
性によってデータの記憶領域を分けると共に、無効化方
式または更新方式のどちらを使用するかをユーザが指定
する必要があり、この指定が厄介である。
また、事前によく検討してプログラムの実行開始前にペ
ージ単位で更新方式が無効化方式に固定的に指定したと
しても、プロセッサ間での共有データの受は渡しの頻度
(共有データの特性)が動的に変化する場合もありうる
ため、静的ないし固定的に指定した更新方式または無効
化方式では有効に働かない場合に遭遇するという問題が
ある。
ージ単位で更新方式が無効化方式に固定的に指定したと
しても、プロセッサ間での共有データの受は渡しの頻度
(共有データの特性)が動的に変化する場合もありうる
ため、静的ないし固定的に指定した更新方式または無効
化方式では有効に働かない場合に遭遇するという問題が
ある。
したがって、本発明は、該当するブロックを更新するか
無効にするかの決定をハードウェアで行なわせることに
よって、共有データの特性変化に対しても、効率の良い
スヌープキャッシュメモリ制御方式を提供することを目
的とするものである。
無効にするかの決定をハードウェアで行なわせることに
よって、共有データの特性変化に対しても、効率の良い
スヌープキャッシュメモリ制御方式を提供することを目
的とするものである。
上述した問題を解決するため、本発明は、それぞれがキ
ャシュメモリおよびプロセッサを有する複数の要素プロ
セッサの各キャ/ユメモリが共有バスを介して共有メモ
リに接続され、各キャシュメモリが共有バスのトランザ
クションを監視して当該キャシュメモリ内の情報を管理
するスヌーブキャッンユ制御方式において、あるキャッ
シュメモリ内の共有データが書き換えられる際に、同じ
共有データを含むブロックを有する他のキャッシュメモ
リが、前記ブロックを更新するか無効にするかの決定を
プロセッサによるブロックの使用状況により動的に判断
する手段を設けたものである。
ャシュメモリおよびプロセッサを有する複数の要素プロ
セッサの各キャ/ユメモリが共有バスを介して共有メモ
リに接続され、各キャシュメモリが共有バスのトランザ
クションを監視して当該キャシュメモリ内の情報を管理
するスヌーブキャッンユ制御方式において、あるキャッ
シュメモリ内の共有データが書き換えられる際に、同じ
共有データを含むブロックを有する他のキャッシュメモ
リが、前記ブロックを更新するか無効にするかの決定を
プロセッサによるブロックの使用状況により動的に判断
する手段を設けたものである。
キャッシュメモリの情報管理、すなわち、更新方式によ
るか無効化方式によるかの切換判断をプロセッサがブロ
ックを使用する状況(頻度)に応じて動的に行う。
るか無効化方式によるかの切換判断をプロセッサがブロ
ックを使用する状況(頻度)に応じて動的に行う。
より具体的に述べると、更新型のスヌーブキャッシュに
おいて、−変地のキャッシュメモリが書き換えられたこ
とに伴なって更新されたブロックは、次に他のキャッシ
ュメモリによって同じブロツクが更新されるまでにプロ
セッサによって一度もアクセスされていなければ、その
後もプロセッサがそのブロックを使用する可能性は少な
いと考えられる。したがって、そのようなブロックは無
効化しても効率的にあまり問題とはならず、再び使用す
ることが必要になった時点で改めてキャッシュメモリに
登録したほうが全体としては効率がよくなる。
おいて、−変地のキャッシュメモリが書き換えられたこ
とに伴なって更新されたブロックは、次に他のキャッシ
ュメモリによって同じブロツクが更新されるまでにプロ
セッサによって一度もアクセスされていなければ、その
後もプロセッサがそのブロックを使用する可能性は少な
いと考えられる。したがって、そのようなブロックは無
効化しても効率的にあまり問題とはならず、再び使用す
ることが必要になった時点で改めてキャッシュメモリに
登録したほうが全体としては効率がよくなる。
このように、本発明は更新型スヌーブキャッシニメモリ
制御方式で、キャッシュメモリ内のブロックをプロセッ
サが一度以上アクセスした場合にセ、ツトされるフラグ
(アクセスフラグ)をブロック単位に設け、他のキャッ
シュメモリで同じブロックが書き換えられた時点までに
自己のアクセスフラグがセットされていれば自己のブロ
ックを更新するが、アクセスフラグがセットされていな
ければ自己のブロックを無効化するとともに、ブロック
を更新したか無効化したのかいずれかの情報を更新要求
元のキャッシュメモリに知らせることによって一貫性を
保つように構成する。
制御方式で、キャッシュメモリ内のブロックをプロセッ
サが一度以上アクセスした場合にセ、ツトされるフラグ
(アクセスフラグ)をブロック単位に設け、他のキャッ
シュメモリで同じブロックが書き換えられた時点までに
自己のアクセスフラグがセットされていれば自己のブロ
ックを更新するが、アクセスフラグがセットされていな
ければ自己のブロックを無効化するとともに、ブロック
を更新したか無効化したのかいずれかの情報を更新要求
元のキャッシュメモリに知らせることによって一貫性を
保つように構成する。
すなわち、本発明は共有ブロックの不要な更新を極力低
減することにより、共有バスの使用効率を向上させると
いう構想に基づくものである。
減することにより、共有バスの使用効率を向上させると
いう構想に基づくものである。
第2図に示すように本発明の実施例としての共有バス型
キャッシュメモリ制御方式は、共有メモリ50と、複数
の要素プロセッサ6o〜70を有しており、各プロセッ
サシステム、たとえば、要素プロセッサ60はスヌーブ
キヤツシュメモリ61とプロセッサ62とを有している
。そして、各キャッシュメモリ61〜71が共有メモリ
50と共有バス80を介して接続されている。
キャッシュメモリ制御方式は、共有メモリ50と、複数
の要素プロセッサ6o〜70を有しており、各プロセッ
サシステム、たとえば、要素プロセッサ60はスヌーブ
キヤツシュメモリ61とプロセッサ62とを有している
。そして、各キャッシュメモリ61〜71が共有メモリ
50と共有バス80を介して接続されている。
共有バス80は、共有メモリ、キャッシュメモリに共通
するアドレスを転送する共有アドレスバス線1、データ
をブロック単位で転送する共有データバス線2、読み込
み要求や書き込み要求を転諾する共有バス制御線3、お
よびキャッシュメモリ相互間の一貫性を保つためデータ
を共有していることを表すシェアード線4からなり、図
示の如く共有メモリ5oと各キャッシュメモリ61〜7
1との間を接続している。
するアドレスを転送する共有アドレスバス線1、データ
をブロック単位で転送する共有データバス線2、読み込
み要求や書き込み要求を転諾する共有バス制御線3、お
よびキャッシュメモリ相互間の一貫性を保つためデータ
を共有していることを表すシェアード線4からなり、図
示の如く共有メモリ5oと各キャッシュメモリ61〜7
1との間を接続している。
また、第3図に示すように、本発明の実施例のスヌー7
’−1−ヤ・yシュメモリ制御方式におけるアドレスは
、タグ部41.インデックス部42.オフセット43か
ら構成されており、共有メモリ5゜中のブロック格納位
置はタグ部41とインデックス部42で特定され、ブロ
ック中のデータはオフセット43によって特定される。
’−1−ヤ・yシュメモリ制御方式におけるアドレスは
、タグ部41.インデックス部42.オフセット43か
ら構成されており、共有メモリ5゜中のブロック格納位
置はタグ部41とインデックス部42で特定され、ブロ
ック中のデータはオフセット43によって特定される。
また、キャッシュ中のブロックの格納位置はインデック
ス部42によって特定される。
ス部42によって特定される。
各キャッシュメモリは第1図に示す構成となっている。
第1図において、キャッシュメモリは、プロセッサから
の要求を処理するためのアドレスが格納されるアドレス
レジスタ10.アドレスレジスタ10の出力に接続され
たバッファ17、共有バス80からの要求を処理するた
めのアドレスが格納される共有アドレスレジスタ14、
アドレスレジスタ10または共有アドレスレジスタ14
の値と後述するタグメモリllaの値とを比較してキャ
ツシュヒツトを判定するヒツト判定部11、後に詳述す
るステータスメモリ12、キャッシュメモリ13、共有
データバス線2上のデータ、キャソンユメモリ13内の
データ及びデータレジスタ15のデータを相互でやり取
りするための双方向バッファ19、プロセッサに読み込
ませるデータおよびプロセッサからのデータを一時的に
格納するデータレジスタ15、キャッシュを統括制御す
るキャッシュ制御部16が、図示される如く接続されて
構成されている。
の要求を処理するためのアドレスが格納されるアドレス
レジスタ10.アドレスレジスタ10の出力に接続され
たバッファ17、共有バス80からの要求を処理するた
めのアドレスが格納される共有アドレスレジスタ14、
アドレスレジスタ10または共有アドレスレジスタ14
の値と後述するタグメモリllaの値とを比較してキャ
ツシュヒツトを判定するヒツト判定部11、後に詳述す
るステータスメモリ12、キャッシュメモリ13、共有
データバス線2上のデータ、キャソンユメモリ13内の
データ及びデータレジスタ15のデータを相互でやり取
りするための双方向バッファ19、プロセッサに読み込
ませるデータおよびプロセッサからのデータを一時的に
格納するデータレジスタ15、キャッシュを統括制御す
るキャッシュ制御部16が、図示される如く接続されて
構成されている。
マタ、キャッンユ制御部16には、アクセス要求線5、
共有バス制御線3゛およびシェアード線4が図示の如く
接続されている。また、共有データバス線2が双方向バ
ッファ19を介してキャッシュメモリ13およびデータ
レジスタ15接続され、共有アドレスバス線1がアドレ
スレジスタ10に接続されたバッファ17に接続される
と共に、共有アドレスレジスタ14およびヒツト判定部
11に接続されている。
共有バス制御線3゛およびシェアード線4が図示の如く
接続されている。また、共有データバス線2が双方向バ
ッファ19を介してキャッシュメモリ13およびデータ
レジスタ15接続され、共有アドレスバス線1がアドレ
スレジスタ10に接続されたバッファ17に接続される
と共に、共有アドレスレジスタ14およびヒツト判定部
11に接続されている。
ヒツト判定部11にはタグメモリllaとキャッシュメ
モリのヒツト判定回路が含まれている。
モリのヒツト判定回路が含まれている。
タグメモリllaにはキャツンユメモリ13に格納され
ている各ブロックに対応するアドレスのタグ部41(第
3図参照)が格納されている。
ている各ブロックに対応するアドレスのタグ部41(第
3図参照)が格納されている。
また、上記ステータスメモリ12はプロセッサがそのブ
ロックを1度以上アクセスしたことを表すアクセスフラ
グ20、他のキャッシュメモリがそのブロックを共有し
ていることを表すシエアードフラグ21、キャッシュメ
モリ内の該ブロックが存効なものであることを表すバリ
ッドフラグ22、プロセッサがそのブロックに書き込み
を行ったことを表すダーティフラグ23、および、その
ブロックの所有者であることを表すオーナフラグ24か
らなる。これらのフラグの判定及び値のセクトはキャッ
シュ制御部16によって行われる。
ロックを1度以上アクセスしたことを表すアクセスフラ
グ20、他のキャッシュメモリがそのブロックを共有し
ていることを表すシエアードフラグ21、キャッシュメ
モリ内の該ブロックが存効なものであることを表すバリ
ッドフラグ22、プロセッサがそのブロックに書き込み
を行ったことを表すダーティフラグ23、および、その
ブロックの所有者であることを表すオーナフラグ24か
らなる。これらのフラグの判定及び値のセクトはキャッ
シュ制御部16によって行われる。
ダーティフラグ23はプロセッサからの書き込み要求が
あった時に「1」にセットされ、他のキャッシュからそ
のブロックの更新要求があった時およびキャッンユから
追い出される時「0」にセットされる。またオーナフラ
グ24はプロセッサからの書き込み要求があった時およ
び共有メモリよりそのプロ、りを読み出した時「1」に
セットされ、他のキャッシュからそのブロックの更新要
求があった時およびキャッシュから追い出される時「0
」にセットされる。これらのフラグの管理は本発明に直
接関与しないため以下の説明では省略しである。
あった時に「1」にセットされ、他のキャッシュからそ
のブロックの更新要求があった時およびキャッンユから
追い出される時「0」にセットされる。またオーナフラ
グ24はプロセッサからの書き込み要求があった時およ
び共有メモリよりそのプロ、りを読み出した時「1」に
セットされ、他のキャッシュからそのブロックの更新要
求があった時およびキャッシュから追い出される時「0
」にセットされる。これらのフラグの管理は本発明に直
接関与しないため以下の説明では省略しである。
ブロモ、すからのデータの読み出し及び書き込み要求は
アクセス要求線5を通してキャッシュ制御部16に知ら
される。また共有バス80上の他のキャッシュメモリや
共有メモリとキャッシュ制御部16とのデータの読み出
し及び書き込み要求は共有バス制御線3を通して相互に
行われる。
アクセス要求線5を通してキャッシュ制御部16に知ら
される。また共有バス80上の他のキャッシュメモリや
共有メモリとキャッシュ制御部16とのデータの読み出
し及び書き込み要求は共有バス制御線3を通して相互に
行われる。
ヒツト判定部11のタグメモリ11a5ステータスメモ
リ12及びキャッシュメモリ13に対するデータの読み
出しおよび書き込み番地はアドレスレジスタ10または
共有アドレスレジスタ14のインデックス部42(第3
図参照)で指定される。
リ12及びキャッシュメモリ13に対するデータの読み
出しおよび書き込み番地はアドレスレジスタ10または
共有アドレスレジスタ14のインデックス部42(第3
図参照)で指定される。
キヤ・7シユメモリにヒツトしたことの判定は、ヒツト
判定部11においてアドレスレジスタ10または共有ア
ドレスレジスタ14のインデックス部で指定されたタグ
メモリllaの値とアドレスレジスタ10または共有ア
ドレスレジスタ14のタグ部41の値が一致したことを
示す信号30と、アドレスレジスタ10または共有アド
レスレジスタ14のインデックス部で措定されたステー
タスメモリ12のバリッドフラグ22が「1」で有るこ
とを示す信号31とをキャッシュ制御部16で調べるこ
とにより行われる。以後、特に断らない限りプロセッサ
からの要求を処理する場合のアドレスは、アドレスレジ
スタ10にセットされており、共有バス80からの要求
を処理する場合のアドレスは共有アドレスレジスタ14
にセットされているものとする。また処理に応じてどち
らかのレジスタ10.14が選択されキャッシュメモリ
13゜ステータスメモリ12.ヒツト判定部11の各部
にアドレスを供給するものとする。
判定部11においてアドレスレジスタ10または共有ア
ドレスレジスタ14のインデックス部で指定されたタグ
メモリllaの値とアドレスレジスタ10または共有ア
ドレスレジスタ14のタグ部41の値が一致したことを
示す信号30と、アドレスレジスタ10または共有アド
レスレジスタ14のインデックス部で措定されたステー
タスメモリ12のバリッドフラグ22が「1」で有るこ
とを示す信号31とをキャッシュ制御部16で調べるこ
とにより行われる。以後、特に断らない限りプロセッサ
からの要求を処理する場合のアドレスは、アドレスレジ
スタ10にセットされており、共有バス80からの要求
を処理する場合のアドレスは共有アドレスレジスタ14
にセットされているものとする。また処理に応じてどち
らかのレジスタ10.14が選択されキャッシュメモリ
13゜ステータスメモリ12.ヒツト判定部11の各部
にアドレスを供給するものとする。
なお、上述したヒツト判定部11.ステータスメモリ1
2.キャッシュ制御部16等で、本発明の、該当するブ
ロックを更新するか無効にするかの決定をブロモ、すに
よるブロックの使用状況により動的に判断する手段が構
成される。
2.キャッシュ制御部16等で、本発明の、該当するブ
ロックを更新するか無効にするかの決定をブロモ、すに
よるブロックの使用状況により動的に判断する手段が構
成される。
次にプロセッサまたは共有バスからの要求にしたがって
行われるキャッシュメモリ及びアクセスフラグの動作を
第4図を用いて説明する。
行われるキャッシュメモリ及びアクセスフラグの動作を
第4図を用いて説明する。
キャッシュ制御部16は、まず、出力された要求がプロ
セッサからの要求であるのか、共有バスからの要求であ
るのかを判断する(ステップ401)。
セッサからの要求であるのか、共有バスからの要求であ
るのかを判断する(ステップ401)。
プロセッサからの要求であれば、更にその要求内容が読
み出し要求であるのか、書き込み要求であるのかの判断
を行う(ステップ402)。読み出し要求であれば、そ
の読み出し要求の判断結果に応じて(1)プロセッサか
らの読み出し要求でキャツシュヒツトしたく要求された
データがキャッシュにある)場合、または(2)プロセ
ッサからの読み出し要求でキヤ・7シユミスした(要求
されたデータがキャッシュにない)場合へ分岐する(ス
テップ403)。
み出し要求であるのか、書き込み要求であるのかの判断
を行う(ステップ402)。読み出し要求であれば、そ
の読み出し要求の判断結果に応じて(1)プロセッサか
らの読み出し要求でキャツシュヒツトしたく要求された
データがキャッシュにある)場合、または(2)プロセ
ッサからの読み出し要求でキヤ・7シユミスした(要求
されたデータがキャッシュにない)場合へ分岐する(ス
テップ403)。
ステップ402で書き込み要求であると判断されれば、
その書き込み要求の結果に応じて(3)ブロモ、すから
の書き込み要求でキャツシュヒツトした場合、または(
4)プロセッサからの書き込み要求でキャッシュミスし
た場合へ分岐する(ステ丁ズ、ブ404)。
その書き込み要求の結果に応じて(3)ブロモ、すから
の書き込み要求でキャツシュヒツトした場合、または(
4)プロセッサからの書き込み要求でキャッシュミスし
た場合へ分岐する(ステ丁ズ、ブ404)。
11,1
ゴー’、: 1また、ステップ401で要求が共有バス
からの′要゛求であると判断されれば、更にその要求内
容が一更新要求であるのか、読み出し要求であるのかの
判断を行う(ステップ405)。更新要求であれば、そ
の更新要求でキャツシュヒツトした(要求されたブロッ
クがキャッシュにある)とき、(5)共有バスからの更
新登録要求でキャツシュヒツトした場合へ進む(ステッ
プ406)。読み出し要求であれば、その読み出し要求
でキャツシュヒツトした(要求されたブロックがキャッ
シュにある)とき、(6)共有バスからの読み出し要求
でキャツシュヒツトした場合へ進む(ステップ407)
。なお、ステップ406,407でキャッシュミスした
場合は何もしない。
からの′要゛求であると判断されれば、更にその要求内
容が一更新要求であるのか、読み出し要求であるのかの
判断を行う(ステップ405)。更新要求であれば、そ
の更新要求でキャツシュヒツトした(要求されたブロッ
クがキャッシュにある)とき、(5)共有バスからの更
新登録要求でキャツシュヒツトした場合へ進む(ステッ
プ406)。読み出し要求であれば、その読み出し要求
でキャツシュヒツトした(要求されたブロックがキャッ
シュにある)とき、(6)共有バスからの読み出し要求
でキャツシュヒツトした場合へ進む(ステップ407)
。なお、ステップ406,407でキャッシュミスした
場合は何もしない。
このように主なものとして6通りの場合が考えられるが
、この内、特に(5)の場合がキャッンユ内の共有ブロ
ックを無効化するか更新するかの選択を行う本処理フロ
ーとなり、(5)を除<(1)〜(6)の場合が、その
選択を可能にするための前処理的フローなる。以下、こ
れらの場合を個別的に説明する。
、この内、特に(5)の場合がキャッンユ内の共有ブロ
ックを無効化するか更新するかの選択を行う本処理フロ
ーとなり、(5)を除<(1)〜(6)の場合が、その
選択を可能にするための前処理的フローなる。以下、こ
れらの場合を個別的に説明する。
(1)プロセッサからの読み出し要求でキャツシュヒツ
トした場合 プロセッサによってアクセスされたので、アドレスレジ
スタ10で指定されたステータスメモリ12のアクセス
フラグ20を「1」にセントするとともに、ヒツトした
データをキャッシュメモリ13よりデータレジスタ15
にセットする(ステップ411.4.12)。
トした場合 プロセッサによってアクセスされたので、アドレスレジ
スタ10で指定されたステータスメモリ12のアクセス
フラグ20を「1」にセントするとともに、ヒツトした
データをキャッシュメモリ13よりデータレジスタ15
にセットする(ステップ411.4.12)。
(2)プロセッサからの読み出し要求でキャッシュミス
した場合 説明順序が逆になるが、便宜上、途中のステ。
した場合 説明順序が逆になるが、便宜上、途中のステ。
プ426から説明する。オフセットを除くアドレスレジ
スタ10の値を共有アドレスバス線1に出力し、かつ共
有バス制御線3にキャッシュメモリ又は共有メモリへの
読み出し要求を出すことにより、対応するブロックを共
有データバス線2より読み込んでキャッシュメモリ13
に書き込む(ステップ426,427,428)。また
ヒツト判定部11のタグメモリllaにアドレスレジス
タ10のタグ部41をセットするとともに、バリッドフ
ラグ22に「1」をセットするが、シェアードフラグ2
1は共有バス80からブロックを読み込む際、シェアー
ド線4が1になっていれば「1」を、そうでない場合は
「0」をセットする(ステップ430,431,432
,433,434)。
スタ10の値を共有アドレスバス線1に出力し、かつ共
有バス制御線3にキャッシュメモリ又は共有メモリへの
読み出し要求を出すことにより、対応するブロックを共
有データバス線2より読み込んでキャッシュメモリ13
に書き込む(ステップ426,427,428)。また
ヒツト判定部11のタグメモリllaにアドレスレジス
タ10のタグ部41をセットするとともに、バリッドフ
ラグ22に「1」をセットするが、シェアードフラグ2
1は共有バス80からブロックを読み込む際、シェアー
ド線4が1になっていれば「1」を、そうでない場合は
「0」をセットする(ステップ430,431,432
,433,434)。
ここで、プロセッサによるアクセス要求に対する処理が
行われ、上記で書き込まれたブロックにプロセッサから
要求されたデータがあるためキャツシュヒツトと同様に
、アドレスレジスタ10で指定されたステータスメモリ
12のアクセスフラグ20を「1」にセットすると共に
、上記データをキャッシュメモリ13よりデータレジス
タ15にセットする(ステップ435,436)。
行われ、上記で書き込まれたブロックにプロセッサから
要求されたデータがあるためキャツシュヒツトと同様に
、アドレスレジスタ10で指定されたステータスメモリ
12のアクセスフラグ20を「1」にセットすると共に
、上記データをキャッシュメモリ13よりデータレジス
タ15にセットする(ステップ435,436)。
なお、キャッシュミスしたデータをキャッシュメモリに
登録するにあたって、現在あるキャッシュメモリ内のブ
ロックを追い出す必要がある場合、上記処理(ステップ
426)の前に以下の処理を行う。なお、追い出すか上
書きするかは、キャッシュメモリ内の該ブロックに対す
るダーティフラグ23によって判断し、ダーティフラグ
23が「1」の場合に追い出す。
登録するにあたって、現在あるキャッシュメモリ内のブ
ロックを追い出す必要がある場合、上記処理(ステップ
426)の前に以下の処理を行う。なお、追い出すか上
書きするかは、キャッシュメモリ内の該ブロックに対す
るダーティフラグ23によって判断し、ダーティフラグ
23が「1」の場合に追い出す。
ブロックの追い出しか、上書きかを判断して、追い出し
であれば、追い出すブロックのアドレスのタグ部41を
ヒツト判定部11のタグメモリ11aより読み出し、そ
の値とアドレスレジスタ10のインデックス部42の値
とを共有アドレスバス線1に出力する(ステップ421
,422,423)。そして、キャッシュメモリ13の
ブロックを共有データバス線2に出力し、共有バス制御
信号線3により書き込み要求を共有メモリに送出する(
ステップ424,425)。
であれば、追い出すブロックのアドレスのタグ部41を
ヒツト判定部11のタグメモリ11aより読み出し、そ
の値とアドレスレジスタ10のインデックス部42の値
とを共有アドレスバス線1に出力する(ステップ421
,422,423)。そして、キャッシュメモリ13の
ブロックを共有データバス線2に出力し、共有バス制御
信号線3により書き込み要求を共有メモリに送出する(
ステップ424,425)。
(3)プロセッサからの書き込み要求でキャツシュヒツ
トした場合 キャッシュメモリ13にデータレジスタ15よリデータ
を書き込む(ステップ441)。またアドレスレジスタ
lOで指定されたステータスメモリ12のンエアードフ
ラグが「1」か否かを判断する(ステップ442)。シ
エアードフラグが「1」ならばオフセットを除いたアド
レスレジスタ10のM ヲ共有アドレスバス線1に、ア
ドレスレジスタ10で指定されたキャッシュメモリ13
のブロックを共有データバス線2に出力すると共に、共
有バス制御線3を通して他のキャッシュメモリに共有ブ
ロックの更新要求を送出する(ステップ443.444
)。さらにシェアード線4を監視し、シェアード線4が
「1」になればステータスメモリ12のンエアードフラ
グ21を「1」に、そうでない場合はrOJにセットす
る(ステップ445.446,447)。また、ブロモ
・ツサからアクセスされたので、アクセスフラグ20を
「1」にセットする(ステy 7’ 44 a )。
トした場合 キャッシュメモリ13にデータレジスタ15よリデータ
を書き込む(ステップ441)。またアドレスレジスタ
lOで指定されたステータスメモリ12のンエアードフ
ラグが「1」か否かを判断する(ステップ442)。シ
エアードフラグが「1」ならばオフセットを除いたアド
レスレジスタ10のM ヲ共有アドレスバス線1に、ア
ドレスレジスタ10で指定されたキャッシュメモリ13
のブロックを共有データバス線2に出力すると共に、共
有バス制御線3を通して他のキャッシュメモリに共有ブ
ロックの更新要求を送出する(ステップ443.444
)。さらにシェアード線4を監視し、シェアード線4が
「1」になればステータスメモリ12のンエアードフラ
グ21を「1」に、そうでない場合はrOJにセットす
る(ステップ445.446,447)。また、ブロモ
・ツサからアクセスされたので、アクセスフラグ20を
「1」にセットする(ステy 7’ 44 a )。
(4)プロセッサからの書き込み要求でキャッシュミス
した場合 データレジスタ15へのデータのセットおよびアクセス
フラグのセット(ステップ435□ 436)を除いて
、読み込み要求でキャッシュミスした場合の(2)と同
じ処理を行った後、書き込み要求でキャツシュヒツトし
た場合の(3)と同じ処理を行う。
した場合 データレジスタ15へのデータのセットおよびアクセス
フラグのセット(ステップ435□ 436)を除いて
、読み込み要求でキャッシュミスした場合の(2)と同
じ処理を行った後、書き込み要求でキャツシュヒツトし
た場合の(3)と同じ処理を行う。
(5)共有バスからの更新要求でキャ/シュヒ。
トした場合
共有アドレスレジスタ14で指定されたステータスメモ
リ12のアクセスフラグ20が「1」か否かを判定する
(ステップ451)。アクセスフラグ20が「1」なら
ば、他のキャッシュにより更新されたブロックをプロセ
ッサが一度以上アクセスしたと判断して、プロ、りを更
新する。すなわち共有データバス線2上のブロックをキ
ャッシュメモリ13に取り込むと共に、シェアード線4
を「1」にし、また、更新されたことに伴い、アクセス
フラグ20を「0」にセットする(ステップ452.4
53)。またアクセスフラグ20が「○Jの場合、−変
地のキャッシュが書き換えられたことに伴い更新された
ブロックが、次に他のキャッシュにより同じブロックが
更新されるまでにプロセッサによって一度もアクセスさ
れていないと判断して、ブロックを無効化する。すなわ
ち、データは取り込まずシェアード線4をrOJにする
と共に、バリッドフラグ22をrOJにする。
リ12のアクセスフラグ20が「1」か否かを判定する
(ステップ451)。アクセスフラグ20が「1」なら
ば、他のキャッシュにより更新されたブロックをプロセ
ッサが一度以上アクセスしたと判断して、プロ、りを更
新する。すなわち共有データバス線2上のブロックをキ
ャッシュメモリ13に取り込むと共に、シェアード線4
を「1」にし、また、更新されたことに伴い、アクセス
フラグ20を「0」にセットする(ステップ452.4
53)。またアクセスフラグ20が「○Jの場合、−変
地のキャッシュが書き換えられたことに伴い更新された
ブロックが、次に他のキャッシュにより同じブロックが
更新されるまでにプロセッサによって一度もアクセスさ
れていないと判断して、ブロックを無効化する。すなわ
ち、データは取り込まずシェアード線4をrOJにする
と共に、バリッドフラグ22をrOJにする。
(6)共有バスからの読み出し要求でキヤノンユヒ、ト
した場合 要求されたブロックを共有バスに供給する必要がある場
合、すなわち、複数のキャッシュにヒツトシタ場合、フ
ロックを供給するキャッシュを特定する必要が有る。こ
の特定をするため、オーナフラグ24が「lJか否かの
判別を行う(ステップ461)。オーナフラグ24が「
1」ならばブロックの供給を行う。
した場合 要求されたブロックを共有バスに供給する必要がある場
合、すなわち、複数のキャッシュにヒツトシタ場合、フ
ロックを供給するキャッシュを特定する必要が有る。こ
の特定をするため、オーナフラグ24が「lJか否かの
判別を行う(ステップ461)。オーナフラグ24が「
1」ならばブロックの供給を行う。
オーナフラグ24がrlJの場合、キャッシュメモリ1
3よりブロックを共有データバス線2上に出力する(ス
テップ462)。また、オーナフラグ24にかかわらず
シェアード線4を「1」にする(ステップ463)。ス
テータスメモリ12のバリ1ドフラグ22、シェアード
フラグ21及びアクセスフラグ20はその時の状態を保
持する(ステップ464)。
3よりブロックを共有データバス線2上に出力する(ス
テップ462)。また、オーナフラグ24にかかわらず
シェアード線4を「1」にする(ステップ463)。ス
テータスメモリ12のバリ1ドフラグ22、シェアード
フラグ21及びアクセスフラグ20はその時の状態を保
持する(ステップ464)。
(7)共有バスからの更新要求にたいしてキャッ/ユが
ヒ、トシない場合、何もしない。
ヒ、トシない場合、何もしない。
以上述べたように、本発明によれば他のキャッシュメモ
リにある共有データが書き換えられた際、同じブロック
を持つキャッシュメモリをlFするか無効化するかをプ
ロセッサによるブロックの使用状況をもとに動的に判断
して、この判断に基づいてキャッシュメモリを管理して
いるため、データの特性変化による依存性が低下し、共
有バスの使用効率を向上できる。
リにある共有データが書き換えられた際、同じブロック
を持つキャッシュメモリをlFするか無効化するかをプ
ロセッサによるブロックの使用状況をもとに動的に判断
して、この判断に基づいてキャッシュメモリを管理して
いるため、データの特性変化による依存性が低下し、共
有バスの使用効率を向上できる。
第1図は第2図におけるキャッシュメモリの構成の実施
例を示すプロ・Iり図、第2図は本発明の実施例のスヌ
ーブキヤツシュメモリ制御方式が適用サレる共有バス型
マルチプロセッサシステムの構成図、第3図は第2図に
おけるアドレスの構成例を示す図、第4図は本実施例の
システム動作を示すフローチャートである。 1は共有アドレスバス線、2は共有データバス線、3は
共有バス制御線、4はシェアード線、10はアドレスレ
ジスタ、11はヒツト判定部、12はステータスメモリ
、13はキャッシュメモリ、15はデータレジスタ、1
6はキャッシュ制御部、2oはアクセスフラグ、21は
シエアードフラグ、22はバリッドフラグ、23はダー
ティフラグ、24はオーナフラグである。 特許出願人 工業技術院長 杉油 賢(1)7°叶1
号からの (2)7°0セ14からの本実施
例の動作70− 第4図(その2) (5)共有へ゛スからの 本実施例の動作71 第4図(その4 (6)共有ハ゛スからの 読み出し要求で A!7ノスヒツトした
例を示すプロ・Iり図、第2図は本発明の実施例のスヌ
ーブキヤツシュメモリ制御方式が適用サレる共有バス型
マルチプロセッサシステムの構成図、第3図は第2図に
おけるアドレスの構成例を示す図、第4図は本実施例の
システム動作を示すフローチャートである。 1は共有アドレスバス線、2は共有データバス線、3は
共有バス制御線、4はシェアード線、10はアドレスレ
ジスタ、11はヒツト判定部、12はステータスメモリ
、13はキャッシュメモリ、15はデータレジスタ、1
6はキャッシュ制御部、2oはアクセスフラグ、21は
シエアードフラグ、22はバリッドフラグ、23はダー
ティフラグ、24はオーナフラグである。 特許出願人 工業技術院長 杉油 賢(1)7°叶1
号からの (2)7°0セ14からの本実施
例の動作70− 第4図(その2) (5)共有へ゛スからの 本実施例の動作71 第4図(その4 (6)共有ハ゛スからの 読み出し要求で A!7ノスヒツトした
Claims (1)
- 【特許請求の範囲】 それぞれがキャシュメモリおよびプロセッサを有する複
数の要素プロセッサからなるシステムの各キャシュメモ
リが共有バスを介して共有メモリに接続され、各キャシ
ュメモリが共有バスのトランザクションを監視して当該
キャシュメモリ内の情報を管理するスヌープキャッシュ
制御方式において、 あるキャッシュメモリ内の共有データが書き換えられる
際に、同じ共有データを含むブロックを有する他のキャ
ッシュメモリが、該当するブロックを更新するか無効に
するかの決定をプロセッサによるブロックの使用状況に
より動的に判断する手段を設けて、 ブロックを動的に更新または無効化するように構成した
ことを特徴とするスヌープキャッシュメモリ制御方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2320914A JPH04191946A (ja) | 1990-11-27 | 1990-11-27 | スヌープキャッシュメモリ制御方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2320914A JPH04191946A (ja) | 1990-11-27 | 1990-11-27 | スヌープキャッシュメモリ制御方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH04191946A true JPH04191946A (ja) | 1992-07-10 |
| JPH0532776B2 JPH0532776B2 (ja) | 1993-05-17 |
Family
ID=18126682
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2320914A Granted JPH04191946A (ja) | 1990-11-27 | 1990-11-27 | スヌープキャッシュメモリ制御方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH04191946A (ja) |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0784877A (ja) * | 1993-08-27 | 1995-03-31 | Internatl Business Mach Corp <Ibm> | マルチプロセッサ・システムにおけるコヒーレンシィ制御装置及び維持方法 |
| JPH07152646A (ja) * | 1993-07-15 | 1995-06-16 | Bull Sa | 記憶階層レベル間での交換のコヒーレンシー管理方法 |
| US5923898A (en) * | 1997-05-14 | 1999-07-13 | International Business Machines Corporation | System for executing I/O request when an I/O request queue entry matches a snoop table entry or executing snoop when not matched |
| JPH11508375A (ja) * | 1995-06-26 | 1999-07-21 | ラプラント、パトリック、アール. | 流体圧による引っ張り及び同調システム |
| US6240491B1 (en) | 1993-07-15 | 2001-05-29 | Bull S.A. | Process and system for switching between an update and invalidate mode for each cache block |
| JP2009122787A (ja) * | 2007-11-13 | 2009-06-04 | Nec Computertechno Ltd | マルチプロセッサシステム |
| US8489862B2 (en) | 2007-06-12 | 2013-07-16 | Panasonic Corporation | Multiprocessor control apparatus for controlling a plurality of processors sharing a memory and an internal bus and multiprocessor control method and multiprocessor control circuit for performing the same |
-
1990
- 1990-11-27 JP JP2320914A patent/JPH04191946A/ja active Granted
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07152646A (ja) * | 1993-07-15 | 1995-06-16 | Bull Sa | 記憶階層レベル間での交換のコヒーレンシー管理方法 |
| US6240491B1 (en) | 1993-07-15 | 2001-05-29 | Bull S.A. | Process and system for switching between an update and invalidate mode for each cache block |
| JPH0784877A (ja) * | 1993-08-27 | 1995-03-31 | Internatl Business Mach Corp <Ibm> | マルチプロセッサ・システムにおけるコヒーレンシィ制御装置及び維持方法 |
| JPH11508375A (ja) * | 1995-06-26 | 1999-07-21 | ラプラント、パトリック、アール. | 流体圧による引っ張り及び同調システム |
| US5923898A (en) * | 1997-05-14 | 1999-07-13 | International Business Machines Corporation | System for executing I/O request when an I/O request queue entry matches a snoop table entry or executing snoop when not matched |
| US8489862B2 (en) | 2007-06-12 | 2013-07-16 | Panasonic Corporation | Multiprocessor control apparatus for controlling a plurality of processors sharing a memory and an internal bus and multiprocessor control method and multiprocessor control circuit for performing the same |
| JP2009122787A (ja) * | 2007-11-13 | 2009-06-04 | Nec Computertechno Ltd | マルチプロセッサシステム |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0532776B2 (ja) | 1993-05-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6571322B2 (en) | Multiprocessor computer system with sectored cache line mechanism for cache intervention | |
| US6345342B1 (en) | Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line | |
| US5291442A (en) | Method and apparatus for dynamic cache line sectoring in multiprocessor systems | |
| KR100326980B1 (ko) | 다중-레벨 메모리 계층 구조를 포함하는 데이터 처리 시스템용 캐시 일관성 프로토콜 | |
| US6502171B1 (en) | Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data | |
| US6353875B1 (en) | Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions | |
| US6343344B1 (en) | System bus directory snooping mechanism for read/castout (RCO) address transaction | |
| US8700863B2 (en) | Computer system having a cache memory and control method of the same | |
| JPH09259036A (ja) | ライトバックキャッシュおよびライトバックキャッシュ内で整合性を維持する方法 | |
| US6321306B1 (en) | High performance multiprocessor system with modified-unsolicited cache state | |
| JP3661764B2 (ja) | 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム | |
| JP2010507160A (ja) | データ処理装置の共有メモリへの書込みアクセス要求の処理 | |
| JPH02141845A (ja) | マルチプロセッサシステムにおいて中央処理ユニットにより主メモリからデータブロックを読み取る方法 | |
| JPH0340046A (ja) | キャッシュメモリ制御方式および情報処理装置 | |
| KR100330934B1 (ko) | 정밀 모드 및 비정밀 모드를 갖는 호버링(h) 상태를 포함하는 캐시 일관성 프로토콜 | |
| US6587922B2 (en) | Multiprocessor system | |
| US6349367B1 (en) | Method and system for communication in which a castout operation is cancelled in response to snoop responses | |
| JPH04230549A (ja) | 多重レベル・キャッシュ | |
| JPH04191946A (ja) | スヌープキャッシュメモリ制御方式 | |
| KR19990072596A (ko) | 에이치_알상태를포함하는캐시일관성프로토콜 | |
| US7234028B2 (en) | Power/performance optimized cache using memory write prevention through write snarfing | |
| US6374333B1 (en) | Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention | |
| US6484241B2 (en) | Multiprocessor computer system with sectored cache line system bus protocol mechanism | |
| US6314498B1 (en) | Multiprocessor system bus transaction for transferring exclusive-deallocate cache state to lower lever cache | |
| US6553462B2 (en) | Multiprocessor computer system with sectored cache line mechanism for load and store operations |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| EXPY | Cancellation because of completion of term |