Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JPH0762836B2 - データ・アクセス管理装置および方法 - Google Patents
[go: Go Back, main page]

JPH0762836B2 - データ・アクセス管理装置および方法 - Google Patents

データ・アクセス管理装置および方法

Info

Publication number
JPH0762836B2
JPH0762836B2 JP3268665A JP26866591A JPH0762836B2 JP H0762836 B2 JPH0762836 B2 JP H0762836B2 JP 3268665 A JP3268665 A JP 3268665A JP 26866591 A JP26866591 A JP 26866591A JP H0762836 B2 JPH0762836 B2 JP H0762836B2
Authority
JP
Japan
Prior art keywords
line
processor
word
cache memory
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP3268665A
Other languages
English (en)
Other versions
JPH04260146A (ja
Inventor
フィリップ・ジョージ・エマ
ジョシュア・ウィルソン・ナイト
ケビン・パトリック・マコウリフィー
ジェイムス・ハーバート・ポメレーヌ
ルドルフ・ネイザン・リヒトシャーフェン
フランク・ジョン・スパラシオ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH04260146A publication Critical patent/JPH04260146A/ja
Publication of JPH0762836B2 publication Critical patent/JPH0762836B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般にキャッシュ・メ
モリ管理方法に係り、特に各々のプロセッサが専用キャ
ッシュを備えると共に共通主メモリ(MM)を共有する
多重プロセッサ(MP)データ処理システムにおけるキ
ャッシュ・メモリの制御に関する。
【0002】
【従来の技術】キャッシュ・メモリは、コンピュータ・
システムにおいて処理ユニットの一体要素としてパッケ
ージされており、その大きさは主メモリよりはるかに小
さいのが一般的である。このキャッシュ・メモリの目的
は、プロセッサと主メモリの間でバッファとして働き、
主メモリをそれよりはるかに速いアクセス時間でエミュ
レートすることにある。キャッシュ・メモリは、主メモ
リより小さいので、キャッシュ・メモリは単に任意の時
点で主メモリの記憶内容のサブセットを収容することに
のみ用いられる。主メモリのどの部分がキャッシュ・メ
モリ内にあるかを識別するディレクトリがキャッシュ内
で使用される。
【0003】キャッシュ内にいかなるデータを保持する
かを選択する方法は、次の2つの観測可能な現象の経験
的な観測に基づく発見的なものである。すなわち、それ
らの現象の1つは、参照される項目がある一時的ウイン
ド内で1度以上参照され易いという観測である“参照の
一時的局所性”という現象であり、他の1つは、参照項
目に近い(アドレスによる)項目がそれぞれ一時的ウイ
ンド内で参照され易い観測である“参照の空間的局所
性”という現象である。参照の時間的局所性とはキャッ
シュ中の最も最近参照された項目を保持する合理性、例
えば新たに参照された項目が最近参照された可能性が最
も少ない項目に置き代わるようにキャッシュが管理され
る合理性を意味するものである。空間的参照局所性は単
に実際に参照されている特定項目よりむしろ、キャッシ
ュ中のデータの連続する“固まり(chunks)”
(キャッシュ・ラインと呼ばれる)を格納するための理
論的根拠を与えるものである。例えば、キャッシュ・ミ
スに応じて全ライン(例えば32ワード)は主メモリか
らキャッシュに転送されるのが普通である。命令を含む
ラインはより一層空間的参照の局所性を示そうとし、デ
ータを収容するラインは一層時間的参照の局所性を示そ
うとするのが普通である。
【0004】キャッシュの容量が固定されている場合
は、キャッシュ設計時の最も重要なパラメータはライン
・サイズ(すなわち、各々のキャッシュ・ライン中のワ
ード数)とキャッシュ管理ストラテジィである。ライン
・サイズの選択は利用している参照の時間的および空間
的局所性の間の妥協に基づいてなされる。大きなライン
・サイズは空間的局所性を促進するが、固定されたキャ
ッシュ容量に対して格納されるラインがメモリに戻され
る前の時間長を短縮し、時間的局所性を犠牲にするもの
である。
【0005】大きなライン・サイズはキャッシュ・ミス
・ペナルティを増加させる。このキャッシュ・ミス・ペ
ナルティには、キャッシュ・ミス(キャッシュに現在格
納されていない項目へのプロセッサによる参照)を認識
し、主メモリからキャッシュにラインを転送するのに必
要な時間量が含まれる。このライン・サイズを、空間的
な参照の局所性を促進するのに必要なものより大きくす
ることは望ましくない。一方、ライン・サイズが小さす
ぎるときは、空間的局所性が犠牲になり、キャッシュ・
ミスがしばしば発生するようになる。その場合、キャッ
シュ・ディレクトリの大きさがライン・サイズの選択に
際して問題になる。一般に、キャッシュ・ディレクトリ
の大きさは、キャッシュ中のライン数に比例して与えら
れる。
【0006】単一プロセッサ・システムにおけるキャッ
シュ・ミス・ペナルティを低減させる従来の方法は、キ
ャッシュのセクタ化により与えられる。この方法はIB
M3/360 Model(商標)などの初期の市販キ
ャッシュ・システムで用いられたものである。しかしな
がら、この方式におけるライン・サイズは今日のマシン
に比して比較的大きく、キャッシュ・ミス・ペナルティ
が過剰になる可能性があった。上記セクタ化法において
は、キャッシュ・ラインは“セクタ”からなると考えら
れ、このセクタにおいてはセクタ・サイズは、キャッシ
ュと主メモリの間のバスの幅の倍数となすのが普通であ
る。キャッシュ・ミスが生じると、キャッシュ内には十
分なスペースが留保されて全体のラインを保持するが、
参照項目を収容するセクタのみはキャッシュに転送され
る。この方法によると、小さなディレクトリは大きなラ
イン・サイズで維持され、過剰なミス・ペナルティを受
けることはない。
【0007】単一プロセッサ・システムにおいてセクタ
化キャッシュを実施することが要求されるキャッシュ・
ディレクトリに対する唯一の変更は、各々のディレクト
リ・エントリ(ラインに対応する)がライン中にセクタ
あたり1“常駐”ビットを含むという点にある。これら
のビットは、ライン中のセクタのいずれかがキャッシュ
に常駐しているかを示すものである。
【0008】単一プロセッサ・システムにおけるセクタ
化も、一方が大きな空間的局所性(例えば命令ライン)
を有し、他方がより小さな空間的局所性(例えばデータ
ライン)を有する2種類のラインが存在する環境で動機
付けを行うことができる。このような環境においては、
命令ラインに対するミスは全体のラインの転送をもたら
し、これにより将来の不要なミスを回避でき、またデー
タ・ラインに対するミスは関係するセクタのみの転送を
もたらし、したがって不要なミス・ペナルティを回避す
ることができる。
【0009】キャッシュ管理ストラテジィには通常は最
低使用頻度(LeastRecently Used
(LRU))ストラテジィの変形としての置換えアルゴ
リズムが知られている。多重プロセッサ・システムの場
合は、キャッシュ管理ストラテジィには、システム中の
プロセッサが記憶のコヒーレントな視野を共有するよう
にラインのオーナシップを決定するアルゴリズムも含ま
れている。コヒーレンシィとは、所与のプロセッサによ
りなされるメモリ位置への格納動作が他のプロセッサに
よる同じメモリ位置に対してなされるフェッチ動作によ
り観測されることを意味する。コヒーレンシィは、所与
のプロセッサでキャッシュされたデータが他のプロセッ
サによりなされる格納動作の結果として使用されなくな
る時点を決定する手段を与えるものである。
【0010】多くのシステムにおいて、コヒーレンスは
“排他的”ビットを用いて実現される。キャッシュ・デ
ィレクトリ内の各々のエントリは排他的ビットを含んで
いる。このビットが所与のプロセッサのキャッシュ・デ
ィレクトリにセットされたときは、他のいかなるプロセ
ッサもそのキャッシュ内に対応するラインを有する必要
はない。また、このビットがキャッシュ・ディレクトリ
にセットされていないときは、他のプロセッサは対応す
るラインのコピーを有してもよいが、いかなるプロセッ
サもラインにデータを格納することはできない。
【0011】ラインは、そのディレクトリのエントリが
排他的ビットの組を有するときは“排他的に保持され
る”といわれる。この場合、プロセッサは排他的に保持
されるラインに単に格納できるだけである。格納動作が
生じると、ラインはこのラインに対するディレクトリ・
エントリに“変更された”ビットを設定することにより
“変更された”とマークされる。常駐ラインに対して排
他的ビットが設定されないときは、ラインは“読出し専
用に保持される”といわれる。
【0012】キャッシュにより変更されたラインが主メ
モリに書き込まれたときは、それは“キャストアウト”
といわれ、またこの動作も「キャストアウト」といわれ
る。“相互無効(cross invalidate)
XI”とは、リモート・プロセッサのキャッシュ中のラ
インを無効にする作用、すなわちそのラインを非常駐と
マークする作用である。“読出し専用動作に排他的な変
更(change exclusive to rea
d only(CERO)”とは、排他的ビットをリセ
ットすることによりラインの状態を読出し専用に排他的
に保持されることからリモート・プロセッサを変化させ
ることである。XIまたはCEROが、キャッシュ内に
配置されてから変化したラインに対して行われるとき、
このラインはキャストアウトされなければならない。排
他的ビットを用いた通常のコヒーレンシィ・スキーム
は、次のように、すなわちフェッチ動作が全ての常駐ラ
インから許容されるように行われる。ミスを発生するフ
ェッチ・リクエストは、最終的にはラインが読出し専用
に保持されることをもたらす。ミスの時点でリモート・
プロセッサによりラインが排他的に保持されるときは、
そのプロセッサにCEROが送出され、要求しているプ
ロセッサに対してラインのコピーを送出する前にキャス
トアウトが行われる。これにより、ミスを発生するプロ
セッサはラインの現在のコピーを受信することが保証さ
れる。
【0013】格納動作は排他的に保持された常駐ライン
に対して単に許容されるのみである。ミスを発生する格
納リクエストは、最後には、要求されたラインが排他的
に保持されることをもたらす。この要求されたラインが
ミスの発生時にリモート・プロセッサにより排他的に保
持されるときは、そのプロセッサに対してXIが送出さ
れ、そのプロセッサは要求しているプロセッサにライン
のコピーを送出する前にラインに対してキャストアウト
動作を行う。ミスの発生時に任意のリモート・プロセッ
サによりラインが読出し専用に保持されたときは、要求
しているプロセッサに対してラインのコピーを送出する
以前に全ての上記のようなプロセッサに対してXIS
発生される。これらのXIS によりリモート・プロセッ
サはラインを無効にマークする。このステップにより、
他のいかなるプロセッサもミスなしにこのラインから取
り出すことはできないことが保証される。リモート・プ
ロセッサが引き続いてミスするときは、それはローカル
・プロセッサによりなされている任意の記憶装置を観測
することを可能にする。
【0014】読出し専用に保持される常駐ラインに対し
て試みられる格納動作は、先ず、ラインを読出し専用に
保持するリモート・プロセッサにXIS を送出させ、こ
の手順はラインを排他的に保持するときになされる手順
に類似している。しかし、この場合は、共に起動される
ローカル・プロセッサにこのラインが常駐しているの
で、他のいかなるプロセッサもこのラインを排他的に保
持することはできない。この意味で排他的ラインを得る
動作は“いかなるデータも取り出さない(fetch
no data)”すなわちFNDと呼ばれる。
【0015】以上の説明はストアイン・キャッシュの動
作に対するものである。ストアイン・キャッシュとは、
キャッシュ内に常駐しないラインに対しては格納動作は
行うことができないものである。格納リクエストが非常
駐ラインに対してなされるときは、ミスが発生され、ラ
インは、格納が許容される前にキャッシュ中にもたらさ
れる。さらに、ラインに対して、その常駐動作時になさ
れるその格納動作およびその他の格納動作は、ラインが
キャストアウトされるまで主メモリに反映されることは
ない。多重格納動作はラインに対して、それが常駐して
いるときなされるので、このラインに対して格納動作が
なされる順序はキャストアウトの時点では決定できな
い。全ての格納動作はシステムに対してはキャストアウ
トの時点で同時になされているように見える。
【0016】ストアイン・キャッシュにおいてコヒーレ
ンシィを保証するためには、排他的制御が要求される。
プロセッサがデータを格納しているとき、他のプロセッ
サがこれらの変化を観測することは不可能であり、した
がってこれらの変化は偶然の順に観測することはできな
い。他のプロセッサが変化を観測しようとするときは
(キャストアウトを強制するCEROリクエストを介し
て)、論理的に行われている全ての変化を観測すること
が保証される。このようにして、排他的制御は任意のス
トアイン・キャッシュに対しては暗黙的なものである。
【0017】一方、ストアスルー・キャッシュは排他的
制御は必要としない。ストアスルー・キャッシュは、格
納動作が生じるごとに主メモリが更新されるものであ
る。格納動作が生じたとき主メモリは整合状態になされ
るので、ストアスルー・キャッシュではキャストアウト
は必要とされない。ストアスルー・キャッシュには次の
ような基本的な3種類のものがある。
【0018】Write−Through, 排他的管
理のあるWrite Allocate (WTWA
X),Write−Through, 排他的管理のな
いWrite Allocate (WTWA),Wr
ite−Through, 排他的管理のないNo W
rite Allocate (WTNWA)。
【0019】WTWAXキャッシュはストアイン・キャ
ッシュと同様に動作するが、格納動作が、これらが発行
された時点で主メモリを通して格納し、したがっていか
なるキャストアウトも存在しないという点で異なってい
る。各々の格納動作は個別事象として主メモリに発され
るので、所定ラインには1度に1つのプロセッサのみを
格納することができる。各プロセッサのキャッシュ・メ
モリからの全てのメモリ動作はシステム制御要素(SC
E)を通してチャネル化される。このSCEは、所与の
プロセッサからの格納動作命令が出される順に常にそれ
らの格納動作を受けるものである。この順序を留保する
特定の作用は何もなされない。
【0020】WTWAキャッシュはWTWAXキャッシ
ュと同様に動作するが、排他的管理が存在しない点で異
なっている。このように排他的管理がないとキャッシュ
間のコヒーレンシィを保証するために、プロセッサは一
層厳しい規則に従わなければならない。例えば、プロセ
ッサによるSCEに対する格納リクエストにしたがっ
て、SCEはラインが他のキャッシュに常駐するか否か
を決定しなければならない。もしそうなら、SCEは他
のキャッシュに指令を出してそれらのラインのコピーを
無効にし、主メモリに新しいデータを格納する前に上記
コピーが無効にされた旨の肯定応答を待たなければなら
ない。この時SCEは開始プロセッサに、格納動作が生
じた旨を通知しなければならない。
【0021】WTNWAキャッシュはWTWAキャッシ
ュに類似しているが、ラインが記憶装置上に割り付けら
れないという点でさらに簡単化される。すなわち、非常
駐ラインに対する記憶装置はミスを発生しない(これ
は、変化がストアスルーされる前にラインが主メモリか
ら検索されることをもたらす)。
【0022】上記のキャッシュ管理ストラテジィの全て
において、ラインを格納する作用は、コヒーレンシィを
維持するために、そのラインのコピーをリモート・キャ
ッシュにおいて無効にする。リモート・プロセッサが、
ローカル・プロセッサと同じラインに格納することを逐
次試みるときは、ミスが発生し、またローカル・プロセ
ッサのキャッシュ・メモリにおけるラインの現在のコピ
ーは無効にされる。これは、2つ以上のプロセッサが同
じライン内を異なるワードで動作しているときは(以後
クローズ書込みシェアリング(close write
sharing)と呼ぶ)、キャッシュの使用を非効
率的にする。2つのプロセッサは同一ワードでは動作し
ていないが、ラインは、異なるプロセッサがラインに対
して取出しまたは格納するごとにミスおよびXIS を介
してキャッシュ間を“ピン・ポン”することになる。
【0023】米国特許第4,445,174号明細書に
は、上記のような多重処理システムに対するクローズ書
込みシェアリングの問題を解消する方法がその特徴とし
て示されている。この特許においては、各々のプロセッ
サはそれ自身のキャッシュを有しており、また共有キャ
ッシュが付加されている。同一ラインの読出し専用コピ
ーが全ての私用キャッシュに同時に存在する。共有さ
れ、変更されるラインは、各々のプロセッサが格納し、
取り出すことができる共通の共有キャッシュに格納され
る。局所的な私用キャッシュにミスがあると、リモート
私用キャッシュから共有キャッシュへのライン転送がも
たらされる。このような場合は、転送によるミス・ペナ
ルティは主メモリからラインを検索することに起因する
ミス・ペナルティより小さい。
【0024】米国特許第4,484,267号明細書に
はハイブリッド・キャッシュ・システムが示してあり、
このシステムにおいては“共有(shared)”ライ
ンはWTWAXストアスルー・キャッシュにおけるもの
として処理される。一方“非共有(non−share
d)”ラインはストアイン・キャッシュにおけるものと
して処理される。キャッシュに付加された新しいライン
はストアインとして処理される。第2プロセッサがこの
ラインからの取出しまたはこのラインへの格納を開始す
ると、このラインはストアスルー・ラインに変更され
る。このハイブリッド・システムは、非共有ラインが最
小数のキャストアウトと共にストアイン・キャッシュの
性能的な利点を得ることを許容する。共有ラインに対し
ては、ラインをストアインからストアスルーに変化させ
る第1CEROまたはXIがキャストアウトをもたら
す。続くCEROおよびXIは排他的制御を変化させる
が、キャストアウトおよび関連する遅延はもたらさな
い。このシステムの欠点は、キャッシュへの格納に続い
て、ラインが、これが主メモリにストアスルーされるま
でローカル・プロセッサまたはリモート・プロセッサに
よりアクセスされ得ないことにある。さらに、ラインが
共有されるときは、プロセッサによるラインへの格納は
全てのリモート・プロセッサのキャッシュ・メモリ中の
ラインを無効にし、リモート・プロセッサに次の参照に
際して主メモリからラインを取り出させる。
【0025】
【発明が解決しようとする課題】すでに説明したよう
に、ストアイン・キャッシュを有する多重プロセッサ・
システムにおいては、コヒーレンシィの維持は一度にた
だ1つのプロセッサがライン内のダブルワード(DW)
に対して排他的制御を得ることを許容することによりな
された。クローズ書込み共有の場合には、2つ以上のプ
ロセッサは、例えこれらのプロセッサが同一ワードに対
して動作してなくても同じラインをキャストアウトし検
索する遅延に繰り返して遭遇する。
【0026】
【課題を解決するための手段】本発明はダイナミックな
キャッシュ・セクタ化システムにおいて具体化され、こ
のシステムにおいては多重処理システムの各プロセッサ
は排他的管理を有する私用キャッシュを備えており、さ
らに共有の共通主メモリが設けてある。このシステムで
は、多重プロセッサにより同一ラインの異なるワードに
対して同時的格納および取り出し動作が可能になる。
【0027】ダイナミック・キャッシュ・セクタ化シス
テムに結合された各々のプロセッサは、変更ライン・ス
タック(MLS)を有しており、その内容はローカル・
プロセッサが最近データを格納したキャッシュ中のライ
ンを識別するものである。ラインがキャッシュにもたら
された後、ローカル・プロセッサによるそのラインに対
する第1の逐次格納動作により、そのラインが最近変更
されたと識別するMLSにエントリを形成する。このM
LSはさらに、MLSに入力された後各々のライン内の
どのダブルワードが変更されているかを識別する。
【0028】各々のプロセッサはさらに、異なるプロセ
ッサがディスジョイントな組のDWに対してフェッチ動
作または格納動作を行うラインを記録するセクタ化ライ
ン・ディレクトリを保持する。最近変更されたライン
(すなわち、MLS内にエントリが存在するライン)に
リモート・プロセッサがアクセスすると、このリモート
・プロセッサがローカル・プロセッサにより変更された
同じDWまたは異なるDWをアクセスしているか否かを
判定するチェックがなされる。後者の場合にのみライン
はセクタ化に対して資格を有する。
【0029】ラインは、それぞれが1つ以上のDWを含
むセクタに分割することができる。本発明のシステム
は、個々のセクタが異なるプロセッサにより排他的に保
持される(格納アクセスに対して)ようにセクタ化ライ
ンが“排他的に共有”保持されることを可能にする。多
重プロセッサによるフェッチおよび格納動作は、リモー
ト・プロセッサにより排他的に保持されるセクタに対し
てプロセッサがフェッチまたは格納動作を試みないとき
は共有排他的ラインがキャストアウトさせない。
【0030】
【実施例】次に、本発明によるダイナミック・キャッシ
ュ・セクタ化方式について例示する。
【0031】本発明は図1に示した多重プロセッサ・シ
ステムにおいて具体化される。この多重プロセッサ・シ
ステムにおいては、各々のプロセッサは私用キャッシュ
・メモリを有し、また各プロセッサはシステム制御要素
と主メモリを有している。各々の私用キャッシュは変更
ライン・スタックおよびセクタ化ライン・ディレクトリ
を有している。
【0032】単一データ・ラインに使用するプロセッサ
間の競合がない場合は、このシステムは従来のストアイ
ン・キャッシュと同様に機能する。ラインがキャッシュ
に常駐し、さらにキャッシュ制御・ディレクトリ22ま
たは24で有効とマークされたときはキャッシュ・アレ
イ18または20からダブルワードが取り出され、さら
にラインが有効であり各ローカル・プロセッサ2または
4の排他的制御下にあるとしてマークされたときはDW
エントリが格納される。
【0033】従来技術に含まれてない付加的なステップ
が行われる。すなわち、キャッシュ中のラインが変更さ
れると、そのアドレスは変更ライン・スタック(ML
S)34または36に入力され、さらに変更されたDW
S はMLS34または36で変更されたと識別される。
リモート・プロセッサがXIを介してローカル・キャッ
シュのラインをアクセスしようとするときは、変更ライ
ン・スタック34または36の対応するエントリがチェ
ックされる。このアクセスの試みが最近変更されてない
(クローズ・ライト共有)セクタのDWに対するもので
あるときは、ラインはセクタ化されたとマークされる。
このラインは各々のプロセッサのセクタ化されたライン
・ディレクトリに入力され、各々のプロセッサに対する
読出し・書込みおよび読出し専用アクセスに対して上記
セクタの識別が可能になされる。
【0034】本発明は従来技術との比較により最良に理
解される。図2は多重プロセッサ構成における従来のス
トアイン・キャッシュを示すブロック図である。このシ
ステムのプロセッサ2および4の各々は、それぞれのキ
ャッシュ制御・ディレクトリ(CCD)74および80
と共にそれぞれ私用キャッシュ・メモリ18および20
を有する。このシステムは単一システム制御要素(SC
E)90および共有主メモリ96を有する。
【0035】キャッシュ18の各々のバス18aはキャ
ッシュ制御・ディレクトリ74に関連するエントリを有
する。CCDエントリはバス74aのアドレス(A)お
よびキャッシュ常駐ラインの状態を示す3つのフラグ・
ビット74b〜dを含んでいる。これらのフラグ・ビッ
トは“有効”(V)ビット74b、“変更”ビット
(C)74c、および“排他的”ビット(E)74dで
ある。Vビット74bが1にセットされると、ラインが
使用可能になる。Vビット74bが0のときは、ライン
はフェッチまたは格納に対してアクセスされない。シス
テムの初期化に際しては全てのVビットは0にリセット
される。キャッシュのラインが格納動作により変更され
るとCビット74dがセットされる。
【0036】システム制御要素90は私用キャッシュ制
御・ディレクトリの全てのコピーを有している。例え
ば、90Aおよび90Bとマークされた項目は、それぞ
れのCCD74および80のコピーである。
【0037】図5および図6は、図2に示した従来のキ
ャッシュ・システムにおいてフェッチ,格納,CER
O,およびXI動作が通常行われるプロセスを示す図で
ある。ステップ200において、プロセッサ2はバス7
0を介してデータのためのリクエストをキャッシュ制御
・ディレクトリ74に送出する。このリクエストは要求
されたデータのアドレス74およびリクエストの種類
(フェッチまたは格納)の両者を含んでいる。ステップ
202において、このリクエストが格納リクエストでな
いときは、それはフェッチ・リクエストでなければなら
ない。
【0038】ステップ204においてCCD74は要求
されたデータを含むラインがキャッシュ18に常駐する
か否かを決定する。要求されたラインに対するVビット
74cがセットされたときは、ラインはキャッシュ18
中に常駐し、使用可能になる。これはフェッチ・ビット
である。この場合、バス18aはステップ206でバス
6を通してキャッシュ18からプロセッサ2に転送され
る。
【0039】ステップ204でラインが非常駐のとき
は、キャッシュ制御・ディレクトリはキャッシュ18中
のラインを選択してステップ240で要求されたライン
と置き換えられる。この置き換えられたラインがステッ
プ242で変化されたとマークされると(変更ビット7
4dにより示される)、キャッシュ制御・ディレクトリ
74はアドレスおよびバス56を通じシステム制御要素
90に対してキャストアウトが必要とされる旨の情報を
送出し、続いてステップ244でバス42を通してデー
タを転送する。SCEは主メモリ96に(バス58を介
して)アドレスを、さらに(バス56を介して)データ
を送出する。主メモリに対してキャストアウト・ライン
がコピーされると、キャストアウト・ラインはステップ
246で無効にされる(Vビット74bが0にリセット
される。)。
【0040】置き換えられるラインがステップ242
(Cビット74dは0に等しい。)で変更されないとき
は、Vビット74bは直ちに0にリセットされ、さらに
廃棄されたラインを主メモリ96に書き戻す必要はなく
なる。
【0041】キャッシュ18でスペースが得られるよう
になされると、ステップ248でCCD74は要求され
たデータを含むラインに対するリクエストをバス82を
通してSCE90に送出する。ステップ208におい
て、SCE90はその他のキャッシュ・メモリ(例えば
90b)に対するそのディレクトリを調べ、ラインが他
のキャッシュ76で排他的に保持されたか否かを知るこ
とになる。もしそうなら、SCE90はリモート・キャ
ッシュ制御・ディレクトリに80に要求してステップ2
10でラインに対して読出専用に排他的な変更を行う
(a change−exclusive−to−re
ad−only(CERO))。
【0042】ステップ212でラインが変更されると、
変更されたデータはバス44を介してリモート・キャッ
シュ・アレイ20からSCE90に送出され、さらにス
テップ214で、SCEはバス58を通してアドレス
を、さらにバス56を通してデータを主メモリ96に送
出する。ラインがキャストアウトされた後、リモート・
キャッシュ制御・ディレクトリ80はキャストアウト・
ラインに対するCCDエントリでV,EおよびCビット
を0にリセットする。次に、ステップ216で、SEC
90は、いかなるキャッシュもラインを排他的に保持し
ないときは、そのまま進み、ラインに対するバス58を
通して主メモリ96にリクエストを送出する。
【0043】フェッチ・リクエストに応じて、データは
バス56を通してSCEに、次にバス42を通してキャ
ッシュ・アレイ18に転送され、さらにSCEはその内
部テーブル90a〜bを更新する。次に、CCDはライ
ンに対する対応するCCDエントリにおいてVビットを
1にセットし、EおよびCビットを0にセットする。次
に、要求されたデータはバス6を通してプロセッサ2に
送出される。
【0044】ステップ202において、リクエストが格
納のときは、要求された位置のアドレスおよびリクエス
トの種類がフェッチ・リクエストに関してCCD7に送
出される。格納のためバス18aにアクセスするために
は、Vビットはステップ220で1でなければならず、
またEビットもステップ222で1でなければならな
い。
【0045】ステップ222においてVビットは1にセ
ットされるが、Eビットは0にセットされたときは、他
のキャッシュはラインの読出し専用コピーを有してもよ
い。この場合には、フェッチ・ノー・データ(FND)
コマンドがステップ224で送出され、キャッシュ18
がラインを通して排他的制御を得ることを許容する。こ
のコマンドに応じて、CCD74はリモート・キャッシ
ュ20中のラインに対するXIをバス82を通してSC
E90に送出する。SCE90は他のディレクトリ80
のその内部コピーから、ラインが他のキャッシュ2で読
出し専用に保持されたか否かを決定する。この場合、リ
モート・キャッシュ20中のそのラインを無効にするこ
とが必要になる。CCD80のラインに対するVビット
が1のときは、ラインはプロセッサ4により読出し専用
に保持され、またSCE90はステップ224において
バス44を通してリモートCCD80にリクエストを送
出する。CCD74におけるラインに対するVビットは
1にセットされているので、リモート・プロセッサはこ
のラインの排他的制御を持つことはできず、またプロセ
ッサ4はこのラインを変更することもできない。
【0046】リモートCCD80が要求されたラインに
対してEビットをリセットすると、SCE90はそのデ
ィレクトリの内部コピーを更新し、バス82を通してC
CD74に通知する。ステップ236でCCD74のラ
インに対するEビットが1にセットされ、さらにプロセ
ッサ2はラインを通して排他的制御を有するようにな
る。ここでプロセッサ2はステップ238においてバス
6を通してキャッシュ18にデータを転送することがで
きる。
【0047】ステップ220において要求されたライン
がローカル・キャッシュ18中にないときは、キャッシ
ュ制御・ディレクトリはステップ250でキャッシュ1
8中のラインを選択して要求されたラインと置き換える
ように作用する。置き換えられるラインがステップ25
2で変更されると(ラインに対するCビットにより示さ
れるように)、キャッシュ制御・ディレクトリはアドレ
スおよびキャストアウトが必要とされる旨の情報をバス
56を通してシステム制御要素90に送出し、ステップ
254でバス42を通してデータを引き続き転送する。
さらに、SCEはアドレス(バス58を介して)および
データ(バス56を介して)主メモリ96に送出する。
キャストアウト・ラインが主メモリにコピーされると、
このキャストアウト・ラインはステップ256で無効に
される(すなわち、そのVビットが0にリセットされ
る。)。
【0048】ステップ252で置き換えられるべきライ
ンが変更されたとしてマークされたことが見出されない
ときは(すなわち、そのCビットが0に等しいとき
は)、廃棄されたラインを主メモリ96に書き込む必要
はないので、ラインに対するVビットは直ちに0にリセ
ットされる。
【0049】キャッシュ18でスペースが得られるよう
になされると、ステップ258でキャッシュ制御・ディ
レクトリ74は、バス82を通して、要求されたデータ
を含むラインに対するリクエストを送出する。SCE
は、ステップ225でそのディレクトリ90bを調べ
て、他のキャッシュ76にラインが常駐するか否かを検
討する。もしそうなら、ステップ22bではリモート・
キャッシュ80に対して相互無効(XI)動作が行わ
れ、リモート・キャッシュ80がラインを、このライン
が排他的に保持されると共にそのVビットをリセットす
るように変更されたとき、キャストアウトすることをも
たらす。
【0050】次に、SCE90は、いかなるキャッシュ
もラインを保持しないといはそのまま進み、ステップ2
34でラインに対してバス58を通して主メモリ96に
リクエストを発する。このデータはバス56を通してS
CEに、次にバス42を通してキャッシュ・アレイ18
に転送される。ステップ234で、SCEはまた内部テ
ーブル90a〜bを更新する。さらに、ステップ236
で、キャッシュ制御・ディレクトリ80はV,Eおよび
Cビットを1にセットする。次に、格納されるべきデー
タ値がバス6を通してプロセッサ2からキャッシュ18
に送出される。
【0051】図1は、本発明の実施例を含む改良された
多重プロセッサ・システムを示すブロック線図である。
このシステムのプロセッサ2および4の各々は、それぞ
れの私用キャッシュ・メモリ18および20を有する。
キャッシュ・メモリ18および20の各々は、それぞれ
のキャッシュ制御・ディレクトリ(CCD)22,2
4、変更ライン・スタック(MLS)34,36、およ
びセクタ化ライン・ディレクトリ(SLD)30,32
に結合される。さらに、このシステムは単一システムの
制御要素(SCE)54および共有主メモリ60を有す
る。
【0052】CCD22,24は、これらがそれぞれの
キャッシュ・アレイ18,20中の各ラインに対して付
加的なフィールドSを有するという点でCCD74,8
0とは異なるものである。このフィールドS(22e)
はラインが“共有排他的(shared exclus
ive)”であることを示している。CCD22,2
4、SCE54、および主メモリもそれぞれのCCD7
4,80、SCE90、およびメモリ96とは、これら
の装置の各々に部分的なキャストアウトおよびセクタの
無効果を与える付加的論理が設けられた点で異なってい
る。さらに、SCE90の内部キャッシュ・ディレクト
リ・テーブルは、多重キャッシュが同じラインの一部の
排他的使用を持つ可能性を与えるように拡張される。
【0053】図3は変更ライン・スタック(MLS)3
4の構成要素をさらに詳細に示した図である。このML
Sは入力アドレス・格納論理回路98、アクセス論理1
10、MLS制御・ディレクトリ(MSLDC)10
6、および変更ダブルワード・アレイ(CDWA)10
8を備えている。MLSDC106装置CDWA108
は、それぞれ、キャッシュ制御・ディレクトリおよびキ
ャッシュ・アレイと同様に動作する。MLSDCに格納
され、エントリにアクセスするために用いられるアドレ
スはCCD22に格納されたアドレスと同じである。C
DWA108(MLS34内の)内の各々のエントリに
対して維持された対応する“データ”は、MLS34内
の要素のエントリの後キャッシュ・アドレス18内の対
応するライン内のどのDWが変更されたかを識別する変
更ビット・ベクトル(CDW)108a〜nである。C
DWA108は単に、共有排他的に保持されない(すな
わち、CCE22のライン・エントリのビットSが0で
ある。)ラインに対するエントリを有する。DDWA1
08における変更ダブルワード・ビット・ベクトルCD
W108a〜nは、キャッシュ制御・ディレクトリ22
の格納動作に応じて変形され、SCE54からのXIリ
クエストの処理中に取り出される。
【0054】入力アドレス・格納論理回路98は次の2
つの機能を行う。1)共有排他的に保持されないライン
に対してCCD22により格納が与えられないとき論理
回路98はアクセス論理回路110に格納アドレスを与
え、さらに2)この入力アドレス格納論理回路98は、
変更ダブルワード・アレイ108に変更されているDW
のライン内に記憶場所を与える。この記憶場所は、変更
ワード・ビット・ベクトルCDW108a〜nの更新の
ために用いられる。
【0055】ローカル・プロセッサ2により行われる格
納動作に対して、アクセス論理回路110は、入力アド
レス格納論理回路98から変更されているラインのアド
レスを受けると共にMLSDC106にアドレスを与え
る。リモート・プロセッサ4からのXIに対して、無効
にされているラインのアドレスがSCE54からアクセ
ス論理回路110に与えられ、さらにこのアクセス論理
110はこのアドレスをMLSDC106に与える。
【0056】図4はセクタ化ライン・ディレクトリ30
をさらに詳細に示した図である。このSLD30は、入
力アドレス・リクエスト論理回路114、データ入力・
セレクト論理回路116・セクタ化ライン・ディレクト
リ・制御(SLDC)論理回路124、および有効排他
的変更ビット・アレイ(VECBA)126を備えるも
のである。SLDC124およびVECBA126は、
それぞれ、キャッシュ制御・ディレクトリおよびキャッ
シュ・アレイと同様に動作する。SLDC124に格納
され、エントリにアクセスするために使用されるアドレ
スはCCD22に格納されたものと同じアドレスであ
る。VECBA126(SLD30内の)中の各々のエ
ントリに対して維持された対応する「データ」は、ライ
ン内の各々のセクタに対する有効ビット(VDW)12
6a、排他的ビット(EXDW)126b、および変更
ビット(CHDW)126cを識別するベクトル126
a〜cである。VECBA126は単に共有排他的に保
持されるラインに対するエントリを有する(すなわち、
CCD22内のライン・エントリのビットSは1にセッ
トされる。)。VECBA126内のVDW,EXD
W,およびCHDWデータは、プロセッサ2からのキャ
ッシュ・リクエストおよびキャッシュ制御・ディレクト
リ22からのキャッシュ・リクエストに応じて取り出さ
れ、変更される。
【0057】入力アドレス・リクエスト論理回路114
は次の2つの機能を果たす。すなわち、1)共有排他的
に保持されるラインに対してCCD22により格納が与
えられたとき、ラインのアドレスは入力アドレス・リク
エスト論理回路に与えられ、この論理回路は当該アドレ
スをデータ入力・セレクト論理回路116およびSLD
C124に与え、さらに、2)リモート・プロセッサ4
からのXIに対して、CCD22はラインのアドレスを
入力アドレス・リクエスト論理回路116に与え、この
論理回路は上記アドレスをVECBA126に与えて影
響を受けたラインの状態を更新する。
【0058】ローカル・プロセッサ2により要求された
格納動作に対して、入力アドレス・リクエスト論理回路
114は変更されているラインのアドレスをデータ入力
・セレクト論理回路116に与え、この論理は上記アド
レスをVECBA126に与える。リモート・プロセッ
サ4からのXIに対して、無効にされているラインのア
ドレスがキャッシュ制御・ディレクトリ22からデータ
入力・セレクト論理回路116に与えられ、さらにデー
タ入力・セレクト論理回路はXIコマンドによりもたら
されるVECBA126に対してVDW,EXDW,お
よびCHDWテーブルの変化を制御する。
【0059】変更ライン・スタック34およびセクタ化
ライン・ディレクトリ30のエントリ数は性能要件およ
び可能な技術により決定される。両者の数はキャッシュ
18中のライン数よりはるかに小さくなることが意図さ
れる。例えば、512ラインを有するキャッシュは変更
ライン・スタック内およびセクタ化ライン・ディレクト
リ内に4および8の間のエントリを有してもよい。ML
S34およびSLD30により多くのエントリを付加す
ることによりシステムの性能が改良されるときは、参照
の空間的局所性の仮定は無視され、さらにより小さなサ
イズのキャッシュがより適切に用いられることになる。
【0060】図7は、本発明の実施例を含む装置により
実施されたときの格納動作(図5のステップ238)の
変更方法を示す図である。図1に示したように、任意の
ラインが先ずキャッシュ18にもたらされると、そのC
ビットおよびSビットは0になる。このラインはMLS
34またはSLD39に入力されることはない。ライン
に対する格納動作がステップ260において0でSビッ
トのラインに対して与えられると、格納動作のアドレス
はバス38′を通して(図3に示されるように)入力ア
ドレスおよび格納論理回路98に与えられる。ステップ
262において、入力アドレス・格納動作はラインのア
ドレスをバス104を介してアクセス論理回路110に
与える。次に、アクセス論理回路110は、SCE54
により要求されるアドレスが何ら進行していないとき
は、バス112を通して変更ライン・スタック・ディレ
クトリ・制御回路106に供給する。ステップ266に
おいて、変更されているライン内のターゲットDWがバ
ス102を介して入力アドレス・格納論理98によりC
DWA108に供給される。
【0061】このようにしてMLS34は、MLSにお
いて対応するリセットを有するキャッシュ・アレイ18
の各々のラインでダブルワードが最近変更されているM
LS34のレコードを保持する。
【0062】図8および図9は、変更ラインがセクタ化
ライン・ディレクトリ30でセクタ化され識別されるプ
ロセスを示す図である。ラインがMLS34に入力され
ると、エントリはローカル・プロセッサ2によるライン
への各々の格納動作により更新される。これらは、ライ
ン中のDWが変更されているトラックを更新する。ステ
ップ300において、リモート・プロセッサ4から相互
無効(XI)が受信されると、SCE50はバス50を
介して相互無効化ラインのアドレスをアクセス論理回路
110に与える。アクセス論理回路110はこのアドレ
スをMLSDC106に与える。要求されたラインに対
してMLS34に有効エントリが存在するときは、この
有効エントリは最近変更されたものである。ラインが最
近変更されているときは、アドレス・変更ビット・ベク
トル(CDW)108a〜nはCDWA108によりC
CD22に与えられる。ステップ300の最終サブステ
ップとして、ラインは主メモリにキャストアウトされ
る。
【0063】この時点で、MLSエントリが最早必要と
されなくなったときMLSのエントリは無効とマークさ
れ、さらにCDW108a〜nは0にリセットされる。
このようにして、MLS34は、MLSの内容がこれら
を他の構成要素にコピーすることなしに廃棄されるスト
アスルー・キャッシュとして処理される。
【0064】MLS34においてエントリを有するライ
ンは、リモート・プロセッサ4により関連するラインが
アクセスされる前にキャストアウトされなければならな
い。このキャストアウトにより、リモート・プロセッサ
はライン中のデータの最新のコピーを有することが保証
される。ステップ304において、MLS34により予
め与えられるCDW値108a〜nにより示されるよう
に、CCD22は、要求されたDWが最近変更されてい
るかを知るためにXI要求アクセスをチェックする。要
求されたDWが最近変更されているときは、ステップ3
04において、MLSエントリからの情報は単に廃棄さ
れる。これは、次のアクセスが生じたとき全体のライン
を通してリモート・プロセッサ41に排他的制御を与え
る。この機構は、ラインのセクタ化が不要になることか
ら従来技術とほぼ同じであるが、これはクローズ・ライ
ト共有の場合とは異なるものである。同一のDWアクセ
スが異なるプロセッサにより格納動作に使用されるごと
に、コヒーレンシィを保持するキャストアウトが必要と
されることから、このラインをセクタ化するいかなる理
由も存在しない。
【0065】しかしながら、ラインが最近変更されてい
るが、XIコマンドにより示される要求されたDWが変
更されていないときは、CCD22は、XIコマンドが
発行されたラインのアドレスおよびダブルワードが最近
変更されている情報をバス26を介してSLD30に与
える。このアドレスはさらに、ステップ306におい
て、バス46を介してSCE50に与えられる。このX
I動作は“MLSIにおいてヒット”を有するといわれ
る。これはクローズ・ライト共有の場合である。
【0066】MLS内でXIがヒットすると、セクタ化
されているラインのアドレスは、図4に示したようにス
テップ306においてCCD22によりバス26′を介
して入力アドレス・リクエスト論理回路114に与えら
れる。ステップ308において、ラインがセクタ化ライ
ン・ディレクトリ30から置き換えられるときは、ステ
ップ310において、変更DWのアドレスおよびベクト
ルがバス26′′′および26′′′′を介してCCD
22に送出される。ステップ312においてSLD30
において置き換えられているライン中のDWのいずれか
が変更されていると、ステップ314でCCD22は主
メモリ60に変更されたDWを書き込む部分キャストア
ウトを行い、さらにCCD22においてラインに対する
Vビットを0にリセットする。SLD30の情報はキャ
ッシュ・アレイ18に格納された“データ”ではない
が、SLDはストアイン・キャッシュのように動作す
る。SLDからエントリを削除する前に、ライン内の全
ての変更DWをキャストアウトしてコヒーレンシィを保
証することが必要である。
【0067】ステップ316において、SLD30内に
スペースが得られ、新しいエントリを格納する。新たに
セクタ化されたラインのDWが最近変更されているとい
う情報およびXI動作により要求されたダブルワードの
アドレスがCCD22によりバス26″を介してデータ
入力・セレクト論理回路116に与えられる。データ入
力・セレクト論理回路116はライン122を介してV
ECBA126にVDW,EXDW,およびCDW情報
を与え、さらに入力アドレス・リクエスト論理回路11
4はライン120を介して共有インディレクトリ・制御
(SLDC)回路124にアドレスおよび格納リクエス
トを与える。
【0068】上記のように、MLS34およびSLD3
0は、これらがデータに対抗するものとしてポインタお
よび制御情報を含むが、キャッシュ・メモリと同様に動
作する。MSL34またはSLD30のいずれかが一杯
であり、エントリが付加される予定のときは、最低使用
頻度(LRU)アルゴリズムが用いられ、置き換えるべ
きエントリを選択する。このようなLRU方式は従来技
術で示したものである。
【0069】本発明の好適な実施例において、ミスおよ
びキャストアウトの発生数は、セクタEXDWビット
を、これが格納動作に必要なときにのみ1にセットする
ことにより最小になされる。このようにして、ステップ
318でラインがセクタ化される前にローカル・キャッ
シュによりDWが最近変更されたときは、ステップ32
2でこのDWに対するEXDWビットがローカルVEC
BA126において12にセットされ、さらにVDWビ
ットがリモートVECBAで0にセットされる。
【0070】ラインがセクタ化されようとし、またステ
ップ318でこのラインがセクタ化される前にこのライ
ンのDWがローカル・キャッシュにより最近変更されて
いない場合は、ステップ320でそのDWに対するEX
DWビットがローカルVECBA126で0にリセット
され、またVDWビットがリモートVECBAで1にセ
ットされる。
【0071】ステップ324でリモート・プロセッサ4
により発生されたXI動作がDWに対して格納アクセス
を要求するときは、ステップ328で、そのDWに対す
るEXDWビットがリモート・プロセッサ4に対するV
ECBAで1にセットされ、さらにVDWビットが0に
リセットされてローカルVECBA126のDWを無効
にする。ステップ324において、DWを取り出すため
にXIが開始されていることが決定されたときは、ステ
ップ362でそのDWに対するEXDWビットがリモー
ト・プロセッサ4に対するVECBAで0にセットさ
れ、さらにVDWビットがローカルVECBA126の
DWに対して1にセットされたままになる。ステップ3
26または328のいずれかのステップの後、CCD2
2内のSビット22eが1にセットされて、このライン
がここで共有排他的に保持されたことを示す。
【0072】当業者には明らかなように、この規則の組
は単にセクタ化キャッシュにおけるコヒーレンシィを実
施するキャッシュ管理アルゴリズムを単に例示したに過
ぎないものである。このキャッシュ管理アルゴリズムの
他の変形アルゴリズムを用いてもよいことは勿論であ
る。例えば、よりアグレッシブにセクタに対する排他的
ステータスを得ることによりセクタ化FNDをもたらす
セクタ化XIの頻度を減らすことも可能である。セクタ
化XIを発行するプロセッサは、上記のように、データ
が同時に与えられるセクタに対して単に排他的制御を与
える代わりに、リモート・プロセッサにより排他的に保
持されない全てのセクタにわたって排他的制御が許容さ
れる。
【0073】図10および図11は、フェッチ,格納,
およびXI動作に対して共有排他的ラインがアクセスさ
れる方法を示す図である。ステップ350ではプロセッ
サ2によりフェッチ・リクエストがバス14を介してC
CD22およびSLD30の両者に与えられる。SLD
30は、CCD22を調整して要求されたDWに対して
VDW126aとEXDW126bにビットを検討する
ことによりリクエストに応答する。VDWビットがステ
ップ354で1にセットされると、それはヒットであり
(VDWが1に等しいときは、V22bも1でなければ
ならない。)、またCCD22はステップ356でライ
ン6を介してデータをプロセッサ2に送出するようにキ
ャッシュ・アレイ18に指示する。
【0074】ただし、Vビット22bは1であるが、S
ビット22eが1に等しくかつビットVDWが0のとき
は、DWは他のプロセッサ4により排他的に保持され、
アクセスは許容されない。これは、プロセッサ2および
プロセッサ4が共に同一ワードをアクセスし、これらの
プロセッサの一方がデータを変更している場合に生じ
る。この場合は、コヒーレンシィを維持するためキャス
トアウトが要求される。
【0075】キャストアウト動作の第1ステップにおい
て、ラインのアドレスおよび変更ダブルワード・ビット
がステップ358でSLD30によりCCD22に与え
られる。次に、CCD22はバス46および42を介し
てアドレスおよび変更DW情報をそれぞれSCE54に
与える。SCE54はキャストアウトされるべきDWの
アドレスをバス58を介して主メモリ60に与え、バス
56を介して変更DWを与える。ステップ360で、ラ
インはSLDで無効にされ(すなわち、ラインに対応す
るVDWビットがリセットされる。)、これによりCC
D22はビットVおよびSを0にリセットする。
【0076】ステップ362において、CCD22はプ
ロセッサ2により要求されたデータを含むラインに対す
るミスを報告する。これによりSCE54はXIコマン
ドを他の全てのプロセッサ4に送出する。これらのコマ
ンドにより、ラインを必然的にセクタ化されて保持する
プロセッサは、プロセッサ2がデータを再び取り出す前
に変更DWを主メモリ60に書き込む。ステップ364
において、主メモリ60によりデータがSCE54に与
えられ、このSE54はこのデータをキャッシュ・アレ
イ18に与え、キャッシュ・アレイ18は次にこのデー
タをプロセッサ2に与える。
【0077】ステップ352における動作が格納動作の
とき、VDWビット126aおよびEXDWビット12
6bが共に1の値を有さない場合は、プロセッサ2はデ
ータに対するアクセスを否定される。VDWおよびEX
DWが共に1にセットされたときは、それはヒットであ
り、データはステップ388でプロセッサ2によりキャ
ッシュに与えられる。
【0078】ステップ378でVDWは1であるがEX
DWは0のときは、ステップ380でフェッチ・ノー・
データ・リクエストが開始される。このリクエストによ
り、セクタ化XIコマンドがCCD22によりバス46
を通してSCE54に送出される。他のいかなるキャッ
シュ20もステップ382でセクタ化されたラインを保
持しないときは、ステップ384でCCD22に対して
排他的制御が直ちに与えられる。しかし、その他のキャ
ッシュ20のいずれかがセクタ化されたアクセスを保持
するときは、ステップ386でSCE54は、バス48
を介してセクタ化ラインを保持する全てのリモート・キ
ャッシュ制御・ディレクトリ74にセクタ無効化リクエ
ストを送出する。次に、リモートCCD24はリモート
SLD32に無効化リクエストを送出し、これはリモー
トVECBAにおいて適当なVDWビット0をセットす
る。XIコマンドが送出された後、CCD22はSLD
30においてDWを排他的とマークし、格納動作は進行
する。
【0079】ステップ352における動作が格納動作で
あり、さらに要求されたDWがSLD32で無効とマー
クされたときは、DWは他のプロセスにより排他的に保
持され、ラインはもはやSLDに残留することはない。
ステップ390において、ライン中の変更DWの全てが
キャストアウトされ、XIが他の全てのプロセッサに送
出される。これらの動作は、ステップ358,360,
362,および364でリモート・プロセッサにより排
他的に保持されたワードに対するフェッチに対して取ら
れたものに類似している。XIコマンドが送出された
後、SCEはライン中のデータに対するフェッチ・リク
エストを送出する。このデータはキャッシュ18に格納
され、ラインに対するVおよびEビットはCCD22に
ヒットされ、さらにプロセッサ2はアドレス指定された
DWにデータを格納することが許容される。
【0080】ステップ352において、ラインがセクタ
化され、要求された動作がリモート・プロセッサからの
XIコマンドであるときは、ステップ366でCCD2
2はバス26′を介して要求されたラインのアドレスを
SLD入力アドレス・リクエスト論理回路114に与え
る。このCCD22はさらに、ステップ366で、リク
エストがXIであることも表示する。XIが送出された
DWのアドレスはバス26″を介してSLD入力・セレ
クト論理回路116に送出される。次に、ライン中のD
Wに対するCHDWビット126cがバス26′′′を
介してCCD22に送出される。ステップ368で、C
CD22が、リクエストは変更されているDWに対して
であると判定したときは、CCD22はラインに対する
無効リクエストをSLD30に送出し、部分キャストア
ウトを行う(すなわち、変更DWをメモリ60に書き込
む。)。さらに、CCD22は、ステップ370でCC
D22中のラインに対するVビットを0にリセットす
る。要求されたラインはここではリモート・プロセッサ
4の排他的制御下に置かれ、主メモリ60から取り出さ
れる。
【0081】要求されたDWがステップ368で変更さ
れいないときは、ラインに対するVDWビットはステッ
プ374で0にリセットされる。ラインが有効であるこ
とを示すVビット、およびラインが共有排他的に保持さ
れたことを示すSビットはCCD22によりセットされ
る。これらのステップが行われると、要求されたDWは
リモート・プロセッサ4を要求する排他的制御の下で配
置される。
【0082】本発明はWTWAXを用いたストアスルー
・キャッシュ管理システムに対する第2実施例に容易に
拡張可能である。図1は、CCD22,SLD30,M
LS34,SCE54,および主メモリ60内のハード
ウェア論理は異なるが、なお本実施例を正確に示すもの
である。WTWAXシステムにおいては、フルライン
(セクタ化されない)およびセクタ(変更され、セクタ
化されたラインから)の両者が、格納動作が指令された
時点で主メモリ60に格納されることを除いて、殆ど同
等である。これは、単にXIおよびCEROにのみ応じ
てデータがメモリ60に格納される上記実施例と対照を
なすものである。このWTWAXシステムにはキャスト
アウトは何ら存在しない。XIまたはCEROは、ライ
ンまたはセクタの排他的状態に対して変化をもたらす
が、何らかのデータを主メモリに書き込ませるものでは
ない。
【0083】本発明の第2実施例は第1実施例と殆ど同
様に動作する。第1実施例の場合と同様に、MLS34
内のラインを書き込むためにリモート・プロセッサがX
Iコマンドを発行するとき、ローカル・プロセッサが要
求されたDWまたはライン中の他のDWを変更している
か否かを(また再び変更しようとする)判定するチェッ
クがなされる。同じDWがローカル・プロセッサ2によ
り変更されているときは、ラインはローカル・キャッシ
ュ18で無効にされ、これはセクタ化されない。ローカ
ル・プロセッサ2が同じDWを変更していないときは、
ラインはSLDD30に付加され、MLS34から廃棄
される。本発明のWTWAX実施例に対するXIコマン
ドとストアイン・キャッシュ実施例との主要は差異は、
前者の場合は、無効にされたラインが主メモリに書き戻
されるのを待つ間の遅延が存在しないことにある。
【0084】ストアイン・キャッシュの代わりにWTW
AXキャッシュを用いる利点および欠点は、従来のキャ
ッシュに関するダイナミックにセクタ化されたキャッシ
ュに対するものと同じである。このストアイン・キャッ
シュはXIの間に遅延されるが、変更DWは主メモリに
対してキャストアウトされる。ストアスルー・キャッシ
ュは遅延をそれ程発生しないが、このストアスルー・キ
ャッシュは、各々の格納動作が主メモリ60に対する書
込みをもたらすことから、付加的トラヒックを受容する
ためにキャッシュと主メモリ60の間ではるかに大きな
帯域幅を必要とする。
【0085】発明の背景および図2に関連して説明した
従来のシステムにおいては、プロセッサが同じラインを
交互にアクセスするときは、異なるプロセッサがライン
をアクセスするごとにキャストアウトおよびフェッチ動
作が発生する。このアクセス特権の“ピン・ポン動作”
は性能を低下させるが、それはコヒーレンシィを維持す
る働きをする。本発明の第3実施例は、プロセッサが同
じDWまたは異なるDWを維持するかに拘らず、コヒー
レンシィを維持し、“ピン・ポン動作”を排除する機構
を与えるものである。
【0086】米国特許第4,445,174号明細書に
は、多重プロセッサの間で共有される付加的なキャッシ
ュ・メモリを用いた機構が示されている。各々のプロセ
ッサは私用ストアイン・バッファ・キャッシュを有し、
他のプロセッサと共通キャッシュおよび主メモリを共有
している。2つのプロセッサにより共有され変更される
ラインは共通の共有キャッシュに格納され、各々のプロ
セッサはフェッチおよび格納動作の両者に対して直接に
共有キャッシュ内の任意のラインにアクセスできる。こ
の特許の方法は、両プロセッサが同じDWをアクセスし
ているときはダイナミックにセクタ化された私用キャッ
シュより良好な性能を与え、さらにダイナミックにセク
タ化されたキャッシュは異なるDWがアクセスされたと
きより良好な性能を与える。
【0087】図12は、共有キャッシュの環境における
本発明の特徴を実施する本発明の第3実施例を示す図で
ある。この実施例においては、図1に示した回路に対し
て共有キャッシュ制御・ディレクトリ(SCCD)13
2および共有キャッシュ・アレイ(SCA)130が付
加してある。さらに、私用CCD138,140,SC
E134,および主メモリ136は、これらが共有キャ
ッシュ130とデータを交換することを許容する付加的
論理回路を有する。
【0088】SCA130は、これがデータを格納し、
状態情報は格納しないという点で、従来のキャッシュ・
メモリと同様に動作する。本発明のこの実施例で使用す
るSCA130は単に4から8ラインに供するスペース
を有しているだけであり、したがって私用キャッシュ・
メモリ18,20よりはるかに小さい。ストアイン・キ
ャッシュであるキャッシュ・アレイ18とは異なりSC
A30はストアスルー・キャッシュである。このSCA
130の目的は、多重プロセッサが、ピン・ポン作用な
しに、またラインを各々のアクセスとキャストアウトす
る必要性なしに、同じDWにアクセスすることを許容す
ることにある。この目的に対して、ストアスルー方式は
より効率的である。排他的管理は望まれず、したがって
各々のプロセッサはSCAデータに容易にアクセスする
ことができる。各々のプロセッサSCA130に直接ア
クセスするので、同一のデータ・ラインの多重読出し専
用コピーの必要性がなくなり、全てのプロセッサによる
SCAのコヒーレント・ビュー(coherent v
iew)を維持するタスクが簡単になる。SCA130
とキャッシュ・アレイ18とのその他の差異は、SCA
130の同一ラインをアクセスする同時リクエストが生
じたとき、プロセッサ2または4またはSCE134の
いずれが優先度を受けるかを判定するCPU優先度論理
回路網138にある。
【0089】先ず、ラインがプロセッサ2により参照さ
れると、それは私用キャッシュ18に配置される。ロー
カル私用キャッシュ18に対する格納およびそれからの
取り出しは本発明の第1実施例の場合と同様に処理され
る。キャッシュ18中のラインが変更されると、MLS
34にエントリが生成され、変更されている特定のDW
を識別する。
【0090】MLS34でラインに対するエントリが生
成されると、これはローカル・プロセッサ2により各々
の格納内容と共に更新され、どのDWが変更されている
かを追跡する。リモート・プロセッサ4から相互無効
(XI)信号が受信されると、SCE50はMLS34
に無効化ラインのアドレスを提供する。ラインが最近変
更されていると、第1実施例の場合と同様に、アドレス
および変更ビット・ベクトル(CDW)108a〜nが
MLSによりCCD22に与えられる。
【0091】この時点で、MLSのエントリは、それが
最早必要とされなくなると(CCD22はCDW情報を
有し、必要に応じてそれをSLDまたはSCCDに与え
ることができる。)、無効とマークされ、CDW18a
〜nは0にリセットされる。
【0092】CCD22は、MLS34によりすでに与
えられたCDW値108a〜nにより示されるように、
要求されたDWが最近変更されているか否かを知る。要
求されたDWが最近変更されてないときは、ラインは本
発明の第1実施例の場合と同様にアクセス化される。
【0093】しかし、要求されたDWが最近変更されて
いるとき、CCD22はSCE54に対してXIが送出
されたラインのアドレスを通過させる。次に、SCE5
4はデータのラインの転送を共有キャッシュ制御・ディ
レクトリ(SCCD)132にまた共有キャッシュ・ア
レイ(SCA)130に向けて指示する。
【0094】ラインがSCA139およびSCCD13
2から置き換えられる予定のときは、LRU方式が用い
られてどのラインをSCAから削除するべきかを判定す
る。有効ビットはSCCD132で選択されたラインに
対して0にリセットされる。次に、新しいラインを格納
するスペースがSCA130で得られる。このアドレス
はSCCD132に入力され、またデータのラインはS
CA130に入力される。次に、このラインはCCD2
2で無効にされている。SCA130に格納されたライ
ンは、私用キャッシュ18または20のいずれにおいて
も保持されない。
【0095】ローカル・プロセッサ2が、ラインから取
り出し、あるいはラインに格納することを望むときは、
それは、第1実施例の場合と同様に、CCD22からそ
のラインを要求する。この第3実施例における殆どの動
作は、第1実施例の場合と同様に進行する。ラインが私
用キャッシュ18に格納されたときは、格納およびフェ
ッチ動作は同様に処理される。ラインがセクタ化される
と、これらの動作も第1実施例の場合と同様に処理され
る。しかしながら、私用キャッシュ18にキャッシュミ
スがある場合は、動作が格納であってもフェッチであっ
ても、この第3実施例は第1実施例で与えられたもの以
上の追加的な能力を与える。
【0096】XIリクエストがリモート・プロセッサに
送出される前にミスが検出されたときは、ローカル・プ
ロセッサ2はSCCD132に直接質問することができ
る。要求されたアドレスがSCCD132に常駐し有効
であるときは、要求されたデータ・ラインはプロセッサ
2に与えられ、フェッチおよび格納動作に供される。ラ
インは任意のプロセッサによる格納動作に対して得られ
るので、また格納動作を要求するプロセッサは、XIコ
マンドを他の私用キャッシュに送出する前にSCCD1
32に質問するので、共有キャッシュによるXIコマン
ドの処理はなされない。
【0097】本発明の第1実施例においては、ラインが
セクタ化されたときは、ライン内の各々のDWは単に1
つのプロセッサにより変更されてもよく、または共有排
他的に保持されてもよい。ラインDW中の所定のDWが
ローカル・プロセッサにより変更されており、また第2
プロセッサがそのDWに対して排他的制御を得ようとす
るときは、全ラインはSLD30でキャストアウトされ
無効にされる。共有キャッシュが使用可能なときは、セ
クタ化ラインは、ラインが共有キャッシュ18から共有
キャッシュに移動された場合と同様にSCA130に転
送される。
【0098】ラインがSCA130に入力されると、こ
のラインは、それが最も少なく最近参照された共有ライ
ンとして置き換えられるまでそこに格納されている。私
用キャッシュ18,20から共有キャッシュへのライン
の転送は一方向転送である。この制限はキャッシュ1
8,20中のセクタ化および非セクタ化ラインの両者に
適用される。
【0099】性能の増大は、ディスジョイントな組のD
Wへの多重プロセッサの記憶装置に対するセクタ化され
た私用キャッシュ・ラインの使用および同一のDWへの
多重プロセッサの記憶装置に対する共有キャッシュ・ラ
インの使用により実現される。この性能の増大はいずれ
かの構成要素システムのみでは実現されない。
【0100】当業者には明らかなように、以上に示した
実施例について多くの変形例が可能である。例えば、プ
ロセッサの個数を変えてもよく、変更ライン・スタック
のサイズ、セクタ化ライン・ディレクトリ・サイズ、共
有キャッシュ・アレイ・サイズ、キャッシュ置き換えア
ルゴリズム、さらにキャッシュ管理アルゴリズムを変え
てもよい。このような変形例のいずれも当業者には容易
に理解されるものであろう。
【0101】
【発明の効果】複数のプロセッサによって、同一ライン
の異なるワードに対して同時に格納および取り出し動作
を行うことが可能になる。
【図面の簡単な説明】
【図1】変更ライン・スタックおよびセクタ化ライン・
ディレクトリを有してダイナミック・キャッシュ・セク
タ化を許容するストアイン・キャッシュ・システムのブ
ロック図である。
【図2】従来のストアイン・キャッシュ・システムの概
略機能図である。
【図3】図1に示した変更ライン・スタックのブロック
図である。
【図4】図1に示したセクタ化ライン・ディレクトリの
ブロック図である。
【図5】図2に示したキャッシュ・システムにおいてフ
ェッチ,格納,CERO,およびXI動作が通常実施さ
れるプロセスを示すフロー図である。
【図6】図2に示したキャッシュ・システムにおいてフ
ェッチ,格納,CERO,およびXI動作が通常実施さ
れるプロセスを示すフロー図である。
【図7】図1に示したキャッシュ・システムにおけるラ
インをキャッシュに付加する動作の変更方法を示すフロ
ー図である。
【図8】キャッシュ・ラインをセクタ化して図1に示し
たキャッシュ・システムにおける共有排他制御を許容す
る方法を示すフロー図である。
【図9】キャッシュ・ラインをセクタ化して図1に示し
たキャッシュ・システムにおける共有排他制御を許容す
る方法を示すフロー図である。
【図10】図1に示したキャッシュ・システムにおける
セクタ化ラインに対してフェッチ,格納,および相互無
効化動作を行う方法を示す流れ図である。
【図11】図1に示したキャッシュ・システムにおける
セクタ化ラインに対してフェッチ,格納,および相互無
効化動作を行う方法を示す流れ図である。
【図12】私用キャッシュおよび共有キャッシュを共に
含む本発明の他の実施例のブロック図である。
【符号の説明】
2,4 ローカル・プロセッサ 18,20 私用キャッシュ・メモリ 22,24,74,80 キャッシュ制御・ディレクト
リ(CCD) 30,32 セクタ化ライン・ディレクトリ(SLD) 34,36 変更ライン・スタック(MLS) 18a,42,44,56,58,82 バス 90 システム制御要素(SCE) 96 共有主メモリ 98 入力アドレス・格納論理回路 106 MLS制御・ディレクトリ 108 変更ダブルワード・アレイ(CDWA) 110 アクセス論理回路 114 入力アドレス・リクエスト論理回路 124 セクタ化ラインディレクトリ・制御(SLD
C)論理回路 126 有効排他的変更ビット・アレイ(VECBA) 130 共有キャッシュ・アレイ(SCA) 132 共有キャッシュ制御・ディレクトリ(SCC
D)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョシュア・ウィルソン・ナイト アメリカ合衆国 ニューヨーク州 モヒガ ン レイク サガモア アベニュー 3490 (72)発明者 ケビン・パトリック・マコウリフィー アメリカ合衆国 ニューヨーク州 ピーク スキル ローム コート 7 (72)発明者 ジェイムス・ハーバート・ポメレーヌ アメリカ合衆国 ニューヨーク州 チャッ パカ ノース ベッドフォード ロード 403 (72)発明者 ルドルフ・ネイザン・リヒトシャーフェン アメリカ合衆国 ニューヨーク州 スカー スデール インズ ロード 24 (72)発明者 フランク・ジョン・スパラシオ アメリカ合衆国 フロリダ州 サラソタ トレイ パインズ ウェイ 3726 (56)参考文献 特開 平2−240764(JP,A) 特開 昭57−167189(JP,A) 特開 平2−247751(JP,A) 特開 平2−186456(JP,A) 特開 昭63−259748(JP,A) 特開 昭63−254543(JP,A)

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 共有主メモリと、各々がそれぞれのキャ
    ッシュ・メモリに結合された少なくても2つのプロセッ
    サと、キャッシュ・メモリを共有主メモリに結合するシ
    ステム制御装置とを備えるコンピュータ・システムにお
    けるキャッシュ・メモリ中のデータへのアクセスを管理
    する装置であって、 前記キャッシュ・メモリの1つにおいて、データ・ライ
    ンが少なくても2つのプロセッサに参照されていること
    を識別し、該識別されたデータ・ライン中の各データ・
    ワードが多くても1つのプロセッサにより参照されてい
    ることを識別する手段と、 識別されたライン中のデータ・ワードをアクセスしたプ
    ロセッサに同時に書き込みアクセスを与え、各プロセッ
    サが前記識別されたラインの各コピー中の各異なったワ
    ードに書き込み、前記識別されたラインの各コピーは各
    キャッシュ・メモリ中に常駐している手段と、 2つ以上のプロセッサが前記ライン中の任意の1つのワ
    ードへの同時書き込みアクセスを得ることを阻止する手
    段とを備えることを特徴とするデータ・アクセス管理装
    置。
  2. 【請求項2】 共有主メモリと、システム制御要素と、
    各々がメモリ・ワードを保持するそれぞれのキャッシュ
    ・メモリを有する少なくても2つのプロセッサとを備え
    るコンピュータ・システムにおけキャッシュ・メモリ中
    のワードへのアクセスを管理する装置であって、 1つのキャッシュ・メモリ中のデータ・ラインが少なく
    ても2つのプロセッサに参照されていることを識別し、
    該識別されたデータ・ライン中の各データ・ワードが多
    くても1つのプロセッサにより参照されていることを識
    別する手段と、 プロセッサの私用キャッシュ・メモリ中の前記識別され
    たラインのコピー中における、プロセッサにより変更さ
    れた前記識別された任意のワードに対する排他的制御を
    各プロセッサに与え、少なくても2つの各プロセッサに
    前記識別されたライン中の各々異なるワードに対して排
    他的制御を与える手段と、 各私用キャッシュ中の、キャッシュが私用ではないプロ
    セッサにより変更されたワードを無効にする手段と任意
    のキャッシュ・メモリに常駐してから、どのプロセッサ
    にも変更されていないワードに対して、全てのプロセッ
    サに読出し専用アクセスを与える手段とを備えることを
    特徴とするデータ・アクセス管理装置。
  3. 【請求項3】 複数のプロセッサと、共有主メモリと、
    システム制御要素とを備え、各プロセッサが各キャッシ
    ュ・メモリを有し、各キャッシュ・メモリがメモリ・ワ
    ードのラインを保持するコンピュータ・システムのメモ
    リ・ワードへのアクセスを管理する装置であって、 各プロセッサに結合され、プロセッサにより変更された
    キャッシュ・メモリ中のデータ・ラインを識別する第1
    識別手段と、 各プロセッサに結合され、前記複数のプロセッサの第1
    のプロセッサに変更された第1ワードと前記複数のプロ
    セッサの第2のプロセッサに変更された第2ワードとを
    含む各キャッシュ中の各データ・ラインを識別する第2
    識別手段と、 前記システム制御要素に結合され、前記複数のプロセッ
    サの1つからの1つの前記キャッシュ・メモリのライン
    中のワードへのアクセスを得るリクエストに応じて、別
    のコンピュータの1つがアクセスを与えられて変更した
    ワードが前記ラインに含まれているかどうかを前記第1
    識別手段で決定する第1制御手段と、 第1制御手段の決定に応じて、第1識別手段から第2識
    別手段にラインを移動し、2つのプロセッサの1つがラ
    イン中の任意のワードに対して書込みアクセスを有する
    とき、2つのプロセッサがそのワードに対して同時のア
    クセスを得ることを阻止する第2制御手段で、2つのプ
    ロセッサに同時書込みアクセスを与え、それぞれのプロ
    セッサがそれぞれ異なるキャッシュ・メモリに常駐する
    ラインのそれぞれのコピー中のそれぞれ別のワードにア
    クセスする手段を含む第2制御手段とを備えることを特
    徴とするデータ・アクセス管理装置。
  4. 【請求項4】 前記第1識別手段は、前記キャッシュ・
    メモリの1つに常駐した後に変更されたメモリ・ワード
    を識別する変更ワード識別手段をさらに備え、 前記第
    2識別手段は、ライン中の個々のワードが、排他的制御
    下にあるか、読出し専用制御下にあるか、または前記複
    数のプロセッサの任意の1つのアクセスに対して有効で
    ないかを識別するセクタ化ライン・ディレクトリ手段を
    さらに備え、 前記第2制御手段は、前記セクタ化ライン・ディレクト
    リ手段中に、ラインが第1のプロセッサに変更された第
    1のワードと、前記第1、第2のプロセッサの各キャッ
    シュ・メモリ中に常駐した後、少なくても1つの他のプ
    ロセッサから参照された第2のワードとを識別するセク
    タ化手段を備えることを特徴とする請求項3記載のデー
    タ・アクセス管理装置。
  5. 【請求項5】 前記第2制御手段は、 前記セクタ化ライン・ディレクトリ手段が、他のどのプ
    ロセッサもワードに対して排他的制御を有していないこ
    とを示しているとき、1つのプロセッサに関連するキャ
    ッシュ・メモリ中に常駐する任意のライン中のワードの
    排他的制御を前記複数のプロセッサの1つに与える共有
    排他的制御手段と、 プロセッサが排他的制御を有している別のワードに対し
    て、プロセッサに関連するキャッシュ・メモリ中のその
    別のワードに格納するアクセスをプロセッサに与える手
    段と他のプロセッサが排他的制御を有していないワード
    に対して、関連するキャッシュ・メモリからワードを取
    り出すアクセスを1つのプロセッサに与える手段と、 他のプロセッサと関連するキャッシュ・メモリ中のワー
    ドを1つのプロセッサが無効化する手段とをさらに備え
    ることを特徴とする請求項4記載のデータ・アクセス装
    置。
  6. 【請求項6】 前記第2制御手段は、 同時にラインが他のプロセッサのキャッシュ・メモリに
    常駐していており、他のプロセッサが選択されたワード
    に排他的制御を有していないとき、前記複数のプロセッ
    サの1つに、そのプロセッサのキャッシュ・メモリに常
    駐しているライン中の選択したワードに対して排他的制
    御を与える共有排他的制御手段と、 ラインが他のプロセッサのキャッシュ・メモリに常駐し
    ている間に、1つのプロセッサが排他的制御を有してい
    るワードに対してデータを格納するアクセスをそのプロ
    セッサに与える手段と、 ラインが他のプロセッサのキャッシュ・メモリに常駐し
    ている間に、どの他のプロセッサも排他的制御を有して
    いないワードを取り出すアクセスを1つのプロセッサに
    与える手段と、 ワードが含まれるライン全体を無効化することなしで、
    他のプロセッサのキャッシュ・メモリ中のワードを1つ
    のプロセッサが無効化する手段とをさらに備えることを
    特徴とする請求項3記載のデータ・アクセス装置。
  7. 【請求項7】 複数のプロセッサと、共有主メモリと、
    システム制御要素とを備え、各プロセッサが各キャッシ
    ュ・メモリを有し、各キャッシュ・メモリがメモリ・ワ
    ードのラインを保持するコンピュータ・システムのメモ
    リ・ワードへのアクセスを管理する装置であって、 ワードを含むラインが前記キャッシュ・メモリの1つに
    常駐した後に変更されたデータ・ワードを識別する変更
    ライン識別手段と、 第1ワードが1つのプロセッサにより変更されており、
    第2ワードが少なくてもキャッシュに常駐した後に他の
    プロセッサにより参照されているラインをマークするセ
    クタ化手段と、 前記セクタ化手段に応じて、セクタ化手段がマークした
    ライン中の個々のワードが排他的制御下にあるのか、所
    定のプロセッサの読出し専用制御下にあるのか、または
    無効であるのかを識別するセクタ化ライン・ディレクト
    リ手段と、 ワードが各プロセッサの排他的制御下にあるときのみ、
    その所定のプロセッサが情報をマークされたライン内の
    ワード中に格納することを許容し、マークされたライン
    が排他的又は読出し専用制御の下にあるとマークされて
    いるとき、そのライン中のワードからのみ情報を取り出
    すことを許容する共有排他的制御手段で、各コピーがそ
    れぞれ別のキャッシュ・メモリに常駐し、同時にマーク
    したラインのそれぞれのコピーに異なるデータ・ワード
    を書込むアクセスを各プロセッサに与える手段を含む共
    有排他的制御手段とを備えることを特徴とするデータ・
    アクセス管理装置。
  8. 【請求項8】 前記変更ワード識別手段は、ワードが格
    納動作で参照されたとき、ワードの各キャッシュ・アド
    レスを格納するメモリ要素を備えることを特徴とする請
    求項7記載のデータ・アクセス管理装置。
  9. 【請求項9】 前記セクタ化ライン・ディレクトリ手段
    は、データが格納されるメモリ・エレメント手段を備
    え、ライン中の各ワードが読取りアクセスに対して有効
    か、各ワードが書込みアクセスに対して排他的制御下に
    保持されているか、各ワードがキャッシュ中に常駐して
    いる間に変更されたかを識別することを特徴とする請求
    項7記載のデータ・アクセス管理装置。
  10. 【請求項10】 複数のプロセッサと、共有主メモリ
    と、システム制御要素と、共有キャッシュ・メモリとを
    備え、各プロセッサが各私用キャッシュ・メモリを有
    し、各キャッシュ・メモリがメモリ・ワードのラインを
    保持するコンピュータ・システムのメモリ・ワードへの
    アクセスを管理する装置であって、 私用キャッシュ・メモリ中のデータ・ラインが、少なく
    ても1つの私用キャッシュ・メモリに常駐している間に
    少なくても2つのプロセッサに参照され、前記ライン中
    の各データ・ワードが多くても1つのプロセッサから参
    照されたことを識別する識別手段と、 前記識別手段に応答し、識別したライン中のデータ・ワ
    ードにアクセスしたプロセッサに同時書込みアクセスを
    与え、各プロセッサは、そのプロセッサのそれぞれの私
    用キャッシュ・メモリ中の識別されたラインのそれぞれ
    のコピーにおけるそれぞれ異なったワードにアクセスす
    るようにする制御手段と、 少なくても1つの私用キャッシュ・メモリに常駐してい
    る間に、前記ライン中の少なくても1つのデータ・ワー
    ドが少なくても2つのプロセッサから参照されるよう
    に、少なくても2つのプロセッサに参照されると、私用
    キャッシュ・メモリ中の共有データ・ラインとしてマー
    クする別の識別手段と、 前記別の識別手段に応じて、前記別の識別手段により共
    有とマークされた前記ラインを共有キャッシュ・メモリ
    に格納し、私用キャッシュ・メモリ中の共有とマークさ
    れた前記データ・ラインの全てのコピーを無効化する別
    の制御手段とを備えることを特徴とするデータ・アクセ
    ス管理装置。
  11. 【請求項11】 共有主メモリと、システム制御要素と
    少なくても2つのプロセッサを備え、各プロセッサが各
    私用キャッシュ・メモリを有するコンピュータ・システ
    ムのキャッシュ・メモリ中のデータへのアクセスを管理
    する方法であって、 キャッシュ・メモリのデータ・ラインが、前記データ・
    ライン中の各データ・ワードが多くても1つのプロセッ
    サにより参照されるように、少なくても2つのプロセッ
    サに参照されることを識別するステップと、 識別されたライン中のデータ・ワードをアクセスしたプ
    ロセッサに、識別されたライン中の各異なったワードを
    書き込むため、同時書き込みアクセスを与え、各プロセ
    ッサはそのプロセッサのそれぞれの私用キャッシュ・メ
    モリ中の識別されたラインの各コピーにアクセスするス
    テップと、 2つ以上のプロセッサが前記ライン中の任意の1つのワ
    ードへの同時書き込みアクセスを得ることを阻止するス
    テップとを含むことを特徴とするデータ・アクセス管理
    方法。
  12. 【請求項12】 共有主メモリと、システム制御要素と
    少なくても2つのプロセッサを備え、各プロセッサがメ
    モリ・ワードのラインを保持する各私用キャッシュ・メ
    モリを有するコンピュータ・システムのキャッシュ・メ
    モリ中のワードへのアクセスを管理する方法であって、 1つのキャッシュ・メモリ中のデータ・ラインが、前記
    ライン中の各データ・ワードが多くても1つのプロセッ
    サにより参照されるように、少なくても2つのプロセッ
    サに参照されることを識別するステップと、 2つのプロセッサに参照された前記ライン中の、そのプ
    ロセッサにより変更された任意のワードに対する排他的
    制御を各プロセッサに同時に与え、各プロセッサはそれ
    ぞれの私用キャッシュ・メモリ中のラインのそれぞれの
    コピー中のそれぞれ異なったワードにアクセスするステ
    ップと、 各私用キャッシュ中の他のプロセッサにより変更された
    それらのワードを無効にするステップと、 任意のキャッシュ・メモリに常駐してから、どのプロセ
    ッサにも変更されていないそれらのワードに対して、全
    てのプロセッサに読出し専用アクセスを与えるステップ
    を含むことを特徴とするデータ・アクセス管理方法。
  13. 【請求項13】 共有主メモリと、システム制御要素と
    少なくても2つのプロセッサを備え、各プロセッサがメ
    モリ・ワードのラインを保持する各私用キャッシュ・メ
    モリを有するコンピュータ・システムのキャッシュ・メ
    モリ中のデータへのアクセスを管理する方法であって、 ワードを含むラインが前記キャッシュ・メモリの1つに
    常駐した後に変更されたデータ・ワードを識別するステ
    ップと、 キャッシュに常駐後にプロセッサの1つに変更され少な
    くても他の1つのプロセッサに参照されたセクタ化され
    た各ラインで、前記ライン中の1つのワードも2つ以上
    のプロセッサからアクセスされていないことを識別する
    ステップと、 前記セクタ化されたライン中の個々のワードの制御状態
    を識別し、各ワードは、前記プロセッサの1つの排他的
    制御下にあるのか、前記プロセッサの1つの読出し専用
    制御下にあるのか、または無効であるのかを識別するス
    テップと、 各プロセッサが、ワードがプロセッサの排他的制御下に
    あると識別されたときのみ情報を前記セクタ化されたラ
    イン内のワード中に格納し、プロセッサの排他的又は読
    出し専用制御の下にあると識別されたセクタ化されたラ
    イン中のワードからのみ情報を取り出すことを可能とす
    るステップと、 少なくても2つのプロセッサそれぞれが、それぞれの異
    なるワードに対してセクタ化されたラインのそれぞれの
    コピー中に同時に格納することを可能にし、それぞれの
    セクタ化されたラインのコピーは、前記2つのプロセッ
    サのそれぞれのキャッシュ・メモリ中に常駐しているス
    テップとを含むことを特徴とするデータ・アクセス管理
    方法。
  14. 【請求項14】 共有主メモリと、システム制御要素と
    少なくても2つのプロセッサを備え、各プロセッサがメ
    モリ・ワードのラインを保持する各私用キャッシュ・メ
    モリを有するコンピュータ・システムのキャッシュ・メ
    モリ中のメモリ・ワードへのアクセスを管理する方法で
    あって、 a)各プロセッサのキャッシュ・メモリ中に常駐された
    後変更されたラインのアドレスを記録し、 b)前記記録されたアドレスのライン内の変更された各
    データ・ワードの位置を記録し、 c)キャッシュに常駐された後、プロセッサの1つに変
    更され少なくても1つの他のプロセッサにより参照さ
    れ、前記ライン中のいかなるワードも2以上のプロセッ
    サにプロセッサに参照されていないセクタ化されたライ
    ンとして識別する状態フラグを設定し、制御要素が状態
    フラグの設定を行い、 d)セクタ化されたと識別された各ライン内の個々のワ
    ードに対するアクセス制限を記録し、そのアクセス制限
    は、各ワードが前記プロセッサ1つの排他的制御下にあ
    るか、前記プロセッサの1つの読出し専用制御下にある
    のか、または無効であるのかを識別し、 e)ワードが格納動作を行っている各プロセッサの排他
    的制御下にあることをアクセス制限が示している場合の
    み、各プロセッサが前記セクタ化されたライン内のワー
    ド中に格納することを可能にし、ワードが取り出し動作
    を行っている各プロセッサの排他的又は読み出し専用制
    御下にあることをアクセス制限が示している場合のみ、
    各プロセッサが前記セクタ化されたライン内のワードか
    ら取り出すことを可能にし、 f)前記プロセッサの1つが、他のプロセッサのキャッ
    シュ・メモリ中に保持されているセクタ化された前記ラ
    インの1つの中のワードの排他的制御を、前記他のプロ
    セッサのキャッシュ・メモリ中のライン全体を無効にす
    ることなく、受けることを可能にし、前記他のプロセッ
    サは同時に前記1つのセクタ化されたライン中の別のワ
    ードに対する排他的制御を維持し、別のワードは前記ワ
    ードとは異なっており、 g)1つのプロセッサによる排他的制御のリクエストに
    応じて、他のプロセッサのキャッシュ・メモリ中のワー
    ドを、制御要素を用いて無効化するステップを含むこと
    を特徴とするデータ・アクセス管理方法。
  15. 【請求項15】前記ステップ(d)は、 1つのプロセッサのキャッシュ・メモリ中に常駐してい
    る間に、その1つのプロセッサにより修正された各ワー
    ドに対して排他的制御をその1つのプロセッサが有して
    いることを識別するために排他的フラグを設定し、 1つのプロセッサのキャッシュ・メモリ中に常駐してい
    る間に他のプロセッサにより修正されていない各ワード
    の有効なコピーをそのプロセッサが有していることを識
    別するために有効フラグを設定するステップを含むこと
    を特徴とする請求項14記載のデータ・アクセス管理方
    法。
  16. 【請求項16】変更されたライン及びセクタ化されたラ
    インのアドレスは、置換すべきアドレスの選択をLUR
    アルゴリズム(最長時間未使用アルゴリズム)を用い
    て、より最近変更されたライン及びセクタ化されたライ
    ンのアドレスと置換されることを特徴とする請求項14
    記載のデータ・アクセス管理方法。
  17. 【請求項17】共有主メモリと、システム制御要素と、
    共有キャッシュ・メモリと、複数ののプロセッサを備
    え、各プロセッサがメモリ・ワードのラインを保持する
    各私用キャッシュ・メモリを有するコンピュータ・シス
    テムのキャッシュ・メモリ中のデータへのアクセスを管
    理する方法であって、 私用キャッシュ・メモリ中のデータ・ラインが、前記識
    別されたライン中の各データ・ワードは複数のプロセッ
    サの1つのみから参照されるように、少なくても1つの
    私用キャッシュ・メモリに常駐している間に少なくても
    複数のプロセッサ2つから参照されたことを識別するス
    テップと、 2つのプロセッサに対して、2つのプロセッサから参照
    された前記データ・ラインの1つの各コピーへの同時ア
    クセスを与え、各コピーは前記プロセッサのそれぞれの
    私用キャッシュ・メモリ中に格納されており、前記1デ
    ータ・ライン中の各データ・ワードは、1つのプロセッ
    サからのみ参照されるステップと、 私用キャッシュ・メモリに常駐している間に複数のプロ
    セッサの2つから、その2つのプロセッサにより前記各
    データ・ライン中の少なくても1つのデータ・ワードを
    参照するように、参照されたデータラインがキャッシュ
    中の共有データ・ラインとしてマークされるステップ
    と、 前記共有とマークされたデータ・ラインを共有キャッシ
    ュ・メモリに格納するステップと、 私用キャッシュ・メモリ中の共有とマークされた前記デ
    ータ・ラインの全てのコピーを無効化するステップとを
    有することを特徴とするデータ・アクセス管理方法。
JP3268665A 1990-10-31 1991-09-20 データ・アクセス管理装置および方法 Expired - Fee Related JPH0762836B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/606,242 US5291442A (en) 1990-10-31 1990-10-31 Method and apparatus for dynamic cache line sectoring in multiprocessor systems
US606242 1996-02-23

Publications (2)

Publication Number Publication Date
JPH04260146A JPH04260146A (ja) 1992-09-16
JPH0762836B2 true JPH0762836B2 (ja) 1995-07-05

Family

ID=24427164

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3268665A Expired - Fee Related JPH0762836B2 (ja) 1990-10-31 1991-09-20 データ・アクセス管理装置および方法

Country Status (2)

Country Link
US (1) US5291442A (ja)
JP (1) JPH0762836B2 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5506980A (en) * 1991-10-22 1996-04-09 Hitachi, Ltd. Method and apparatus for parallel processing of a large data array utilizing a shared auxiliary memory
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US5509122A (en) * 1992-02-20 1996-04-16 International Business Machines Corporation Configurable, recoverable parallel bus
US5699540A (en) * 1992-11-16 1997-12-16 Intel Corporation Pseudo-concurrent access to a cached shared resource
JP2963298B2 (ja) * 1993-03-26 1999-10-18 富士通株式会社 二重化共有メモリにおける排他制御命令のリカバリ方法および計算機システム
US5406504A (en) * 1993-06-30 1995-04-11 Digital Equipment Multiprocessor cache examiner and coherency checker
FR2707774B1 (fr) * 1993-07-15 1995-08-18 Bull Sa Procédé de gestion cohérente des échanges entre des niveaux d'une hiérarchie de mémoires à au moins trois niveaux.
FR2707778B1 (fr) * 1993-07-15 1995-08-18 Bull Sa NÓoeud de processeurs.
FR2707777B1 (fr) * 1993-07-15 1995-08-18 Bull Sa Ensemble informatique à mémoire partagée.
FR2707776B1 (fr) 1993-07-15 1995-08-18 Bull Sa Procédé de gestion de mémoires d'un système informatique, système informatique mémoire et support d'enregistrement mettant en Óoeuvre le procédé.
DE4423559A1 (de) * 1993-11-09 1995-05-11 Hewlett Packard Co Datenverbindungsverfahren und Vorrichtung für Multiprozessor-Computersysteme mit gemeinsamem Speicher
US5577224A (en) * 1994-12-13 1996-11-19 Microsoft Corporation Method and system for caching data
US5897654A (en) * 1995-02-10 1999-04-27 International Business Machines Corporation Method and system for efficiently fetching from cache during a cache fill operation
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
KR0154756B1 (ko) * 1995-07-12 1998-12-01 김광호 반도체 메모리 장치의데이타 입출력 제어회로
US5809272A (en) * 1995-11-29 1998-09-15 Exponential Technology Inc. Early instruction-length pre-decode of variable-length instructions in a superscalar processor
US6745292B1 (en) 1995-12-08 2004-06-01 Ncr Corporation Apparatus and method for selectively allocating cache lines in a partitioned cache shared by multiprocessors
US6091725A (en) 1995-12-29 2000-07-18 Cisco Systems, Inc. Method for traffic management, traffic prioritization, access control, and packet forwarding in a datagram computer network
US6308148B1 (en) 1996-05-28 2001-10-23 Cisco Technology, Inc. Network flow data export
US6243667B1 (en) 1996-05-28 2001-06-05 Cisco Systems, Inc. Network flow switching and flow data export
US5842040A (en) * 1996-06-18 1998-11-24 Storage Technology Corporation Policy caching method and apparatus for use in a communication device based on contents of one data unit in a subset of related data units
US6009481A (en) * 1996-09-30 1999-12-28 Emc Corporation Mass storage system using internal system-level mirroring
US5809536A (en) * 1996-12-09 1998-09-15 Intel Corporation, Inc. Method for reducing the number of coherency cycles within a directory-based cache coherency memory system uitilizing a memory state cache
US5895486A (en) * 1996-12-20 1999-04-20 International Business Machines Corporation Method and system for selectively invalidating cache lines during multiple word store operations for memory coherence
US6128706A (en) * 1998-02-03 2000-10-03 Institute For The Development Of Emerging Architectures, L.L.C. Apparatus and method for a load bias--load with intent to semaphore
JP2000200840A (ja) * 1999-01-06 2000-07-18 Mitsubishi Electric Corp 半導体装置およびその製造方法
JP2001166993A (ja) * 1999-12-13 2001-06-22 Hitachi Ltd 記憶制御装置およびキャッシュメモリの制御方法
US7577794B2 (en) * 2004-10-08 2009-08-18 International Business Machines Corporation Low latency coherency protocol for a multi-chip multiprocessor system
US7305524B2 (en) * 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
US8332592B2 (en) * 2004-10-08 2012-12-11 International Business Machines Corporation Graphics processor with snoop filter
JP5587539B2 (ja) * 2004-11-24 2014-09-10 コーニンクレッカ フィリップス エヌ ヴェ ローカルメモリデータのコヒーレントなキャッシュ処理
EP1988465B1 (en) 2006-02-24 2011-11-23 Fujitsu Limited Processor, and cache control method
WO2008155844A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 情報処理装置およびキャッシュ制御方法
US7526610B1 (en) * 2008-03-20 2009-04-28 International Business Machines Corporation Sectored cache memory
US9594648B2 (en) * 2008-12-30 2017-03-14 Intel Corporation Controlling non-redundant execution in a redundant multithreading (RMT) processor
US9081688B2 (en) * 2008-12-30 2015-07-14 Intel Corporation Obtaining data for redundant multithreading (RMT) execution
US9477600B2 (en) 2011-08-08 2016-10-25 Arm Limited Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode
US10769068B2 (en) * 2017-11-10 2020-09-08 International Business Machines Corporation Concurrent modification of shared cache line by multiple processors

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4371929A (en) * 1980-05-05 1983-02-01 Ibm Corporation Multiprocessor system with high density memory set architecture including partitionable cache store interface to shared disk drive memory
US4445174A (en) * 1981-03-31 1984-04-24 International Business Machines Corporation Multiprocessing system including a shared cache
JPS58102381A (ja) * 1981-12-15 1983-06-17 Nec Corp バツフアメモリ
US4484267A (en) * 1981-12-30 1984-11-20 International Business Machines Corporation Cache sharing control in a multiprocessor
US4575792A (en) * 1982-03-31 1986-03-11 Honeywell Information Systems Inc. Shared interface apparatus for testing the memory sections of a cache unit
US4493026A (en) * 1982-05-26 1985-01-08 International Business Machines Corporation Set associative sector cache
US4503497A (en) * 1982-05-27 1985-03-05 International Business Machines Corporation System for independent cache-to-cache transfer
US4633387A (en) * 1983-02-25 1986-12-30 International Business Machines Corporation Load balancing in a multiunit system
US4527238A (en) * 1983-02-28 1985-07-02 Honeywell Information Systems Inc. Cache with independent addressable data and directory arrays
US4586133A (en) * 1983-04-05 1986-04-29 Burroughs Corporation Multilevel controller for a cache memory interface in a multiprocessing system
US4622631B1 (en) * 1983-12-30 1996-04-09 Recognition Int Inc Data processing system having a data coherence solution
JPS6381688A (ja) * 1986-09-26 1988-04-12 Hitachi Ltd 半導体記憶装置
US4931999A (en) * 1987-07-27 1990-06-05 Mitsubishi Denki Kabushiki Kaisha Access circuit for a semiconductor memory
US5007022A (en) * 1987-12-21 1991-04-09 Texas Instruments Incorporated Two-port two-transistor DRAM
US5016168A (en) * 1988-12-23 1991-05-14 International Business Machines Corporation Method for storing into non-exclusive cache lines in multiprocessor systems
US5130922A (en) * 1989-05-17 1992-07-14 International Business Machines Corporation Multiprocessor cache memory system using temporary access states and method for operating such a memory

Also Published As

Publication number Publication date
US5291442A (en) 1994-03-01
JPH04260146A (ja) 1992-09-16

Similar Documents

Publication Publication Date Title
JPH0762836B2 (ja) データ・アクセス管理装置および方法
US5802582A (en) Explicit coherence using split-phase controls
JP4065586B2 (ja) リンクリスト形成方法
US6725341B1 (en) Cache line pre-load and pre-own based on cache coherence speculation
US4445174A (en) Multiprocessing system including a shared cache
US10025713B2 (en) System and method for removing data from processor caches in a distributed multi-processor computer system
EP1399823B1 (en) Using an l2 directory to facilitate speculative loads in a multiprocessor system
US6438660B1 (en) Method and apparatus for collapsing writebacks to a memory for resource efficiency
US6718839B2 (en) Method and apparatus for facilitating speculative loads in a multiprocessor system
KR102888552B1 (ko) 기록 연산의 처리 장치 및 방법
JPH0555899B2 (ja)
JPH02141845A (ja) マルチプロセッサシステムにおいて中央処理ユニットにより主メモリからデータブロックを読み取る方法
US20020078304A1 (en) System and method for allocating a directory entry for use in multiprocessor-node data processing systems
JPWO2010100679A1 (ja) コンピュータシステム、制御方法、記録媒体及び制御プログラム
JP4162493B2 (ja) 下位レベルのキャッシュを含むアクセスを促進するためのリバースディレクトリ
JP2788836B2 (ja) ディジタルコンピュータシステム
US7047364B2 (en) Cache memory management
US6256710B1 (en) Cache management during cache inhibited transactions for increasing cache efficiency
JPH1091524A (ja) キャッシュ・コヒーレンシを維持するための方法及び装置
JP4742432B2 (ja) メモリシステム
US6934810B1 (en) Delayed leaky write system and method for a cache memory
JPH04191946A (ja) スヌープキャッシュメモリ制御方式
JPH0387948A (ja) マルチプロセッサシステム
US7383390B1 (en) Resource-limited directories with fine-grained eviction
US20260086950A1 (en) Systems and methods for region-based probe filter shootdown

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees