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

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

Info

Publication number
JPH04260146A
JPH04260146A JP3268665A JP26866591A JPH04260146A JP H04260146 A JPH04260146 A JP H04260146A JP 3268665 A JP3268665 A JP 3268665A JP 26866591 A JP26866591 A JP 26866591A JP H04260146 A JPH04260146 A JP H04260146A
Authority
JP
Japan
Prior art keywords
line
processor
word
processors
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.)
Granted
Application number
JP3268665A
Other languages
English (en)
Other versions
JPH0762836B2 (ja
Inventor
Philip G Emma
フィリップ・ジョージ・エマ
Joshua W Knight
ジョシュア・ウィルソン・ナイト
Kevin P Mcauliffe
ケビン・パトリック・マコウリフィー
James H Pomerene
ジェイムス・ハーバート・ポメレーヌ
Rudolph N Rechtschaffen
ルドルフ・ネイザン・リヒトシャーフェン
Frank J Sparacio
フランク・ジョン・スパラシオ
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)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

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 
 read  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  (WT
WAX),Write−Through,  排他的管
理のないWrite  Allocate  (WTW
A),Write−Through,  排他的管理の
ないNo  Write  Allocate  (W
TNWA)。
【0019】WTWAXキャッシュはストアイン・キャ
ッシュと同様に動作するが、格納動作が、これらが発行
された時点で主メモリを通して格納し、したがっていか
なるキャストアウトも存在しないという点で異なってい
る。各々の格納動作は個別事象として主メモリに発され
るので、所定ラインには1度に1つのプロセッサのみを
格納することができる。各プロセッサのキャッシュ・メ
モリからの全てのメモリ動作はシステム制御要素(SC
E)を通してチャネル化される。このSCEは、所与の
プロセッサからの格納動作命令が出される順に常にそれ
らの格納動作を受けるものである。この順序を留保する
特定の作用は何もなされない。
【0020】WTWAキャッシュはWTWAXキャッシ
ュと同様に動作するが、排他的管理が存在しない点で異
なっている。このように排他的管理がないとキャッシュ
間のコヒーレンシィを保証するために、プロセッサは一
層厳しい規則に従わなければならない。例えば、プロセ
ッサによるSCEに対する格納リクエストにしたがって
、SCEはラインが他のキャッシュに常駐するか否かを
決定しなければならない。もしそうなら、SCEは他の
キャッシュに指令を出してそれらのラインのコピーを無
効にし、主メモリに新しいデータを格納する前に上記コ
ピーが無効にされた旨の肯定応答を待たなければならな
い。この時SCEは開始プロセッサに、格納動作が生じ
た旨を通知しなければならない。
【0021】WTNWAキャッシュはWTWAキャッシ
ュに類似しているが、ラインが記憶装置上に割り付けら
れないという点でさらに簡単化される。すなわち、非常
駐ラインに対する記憶装置はミスを発生しない(これは
、変化がストアスルーされる前にラインが主メモリから
検索されることをもたらす)。
【0022】上記のキャッシュ管理ストラテジィの全て
において、ラインを格納する作用は、コヒーレンシィを
維持するために、そのラインのコピーをリモート・キャ
ッシュにおいて無効にする。リモート・プロセッサが、
ローカル・プロセッサと同じラインに格納することを逐
次試みるときは、ミスが発生し、またローカル・プロセ
ッサのキャッシュ・メモリにおけるラインの現在のコピ
ーは無効にされる。これは、2つ以上のプロセッサが同
じライン内を異なるワードで動作しているときは(以後
クローズ書込みシェアリング(close  writ
e  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】従来技術に含まれてない付加的なステップ
が行われる。すなわち、キャッシュ中のラインが変更さ
れると、そのアドレスは変更ライン・スタック(MLS
)34または36に入力され、さらに変更されたDWS
 は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に示した従来のキ
ャッシュ・システムにおいてフェッチ,格納,CERO
,およびXI動作が通常行われるプロセスを示す図であ
る。ステップ200において、プロセッサ2はバス70
を介してデータのためのリクエストをキャッシュ制御・
ディレクトリ74に送出する。このリクエストは要求さ
れたデータのアドレス74およびリクエストの種類(フ
ェッチまたは格納)の両者を含んでいる。ステップ20
2において、このリクエストが格納リクエストでないと
きは、それはフェッチ・リクエストでなければならない
【0038】ステップ204においてCCD74は要求
されたデータを含むラインがキャッシュ18に常駐する
か否かを決定する。要求されたラインに対するVビット
74cがセットされたときは、ラインはキャッシュ18
中に常駐し、使用可能になる。これはフェッチ・ビット
である。この場合、バス18aはステップ206でバス
6を通してキャッシュ18からプロセッサ2に転送され
る。
【0039】ステップ204でラインが非常駐のときは
、キャッシュ制御・ディレクトリはキャッシュ18中の
ラインを選択してステップ240で要求されたラインと
置き換えられる。この置き換えられたラインがステップ
242で変化されたとマークされると(変更ビット74
dにより示される)、キャッシュ制御・ディレクトリ7
4はアドレスおよびバス56を通じシステム制御要素9
0に対してキャストアウトが必要とされる旨の情報を送
出し、続いてステップ244でバス42を通してデータ
を転送する。SCEは主メモリ96に(バス58を介し
て)アドレスを、さらに(バス56を介して)データを
送出する。主メモリに対してキャストアウト・ラインが
コピーされると、キャストアウト・ラインはステップ2
46で無効にされる(Vビット74bが0にリセットさ
れる。)。
【0040】置き換えられるラインがステップ242(
Cビット74dは0に等しい。)で変更されないときは
、Vビット74bは直ちに0にリセットされ、さらに廃
棄されたラインを主メモリ96に書き戻す必要はなくな
る。
【0041】キャッシュ18でスペースが得られるよう
になされると、ステップ248でCCD74は要求され
たデータを含むラインに対するリクエストをバス82を
通してSCE90に送出する。ステップ208において
、SCE90はその他のキャッシュ・メモリ(例えば9
0b)に対するそのディレクトリを調べ、ラインが他の
キャッシュ76で排他的に保持されたか否かを知ること
になる。もしそうなら、SCE90はリモート・キャッ
シュ制御・ディレクトリに80に要求してステップ21
0でラインに対して読出専用に排他的な変更を行う(a
  change−exclusive−to−rea
d−only(CERO))。
【0042】ステップ212でラインが変更されると、
変更されたデータはバス44を介してリモート・キャッ
シュ・アレイ20からSCE90に送出され、さらにス
テップ214で、SCEはバス58を通してアドレスを
、さらにバス56を通してデータを主メモリ96に送出
する。ラインがキャストアウトされた後、リモート・キ
ャッシュ制御・ディレクトリ80はキャストアウト・ラ
インに対するCCDエントリでV,EおよびCビットを
0にリセットする。次に、ステップ216で、SEC9
0は、いかなるキャッシュもラインを排他的に保持しな
いときは、そのまま進み、ラインに対するバス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,24
、変更ライン・スタック(MLS)34,36、および
セクタ化ライン・ディレクトリ(SLD)30,32に
結合される。さらに、このシステムは単一システムの制
御要素(SCE)54および共有主メモリ60を有する
【0052】CCD22,24は、これらがそれぞれの
キャッシュ・アレイ18,20中の各ラインに対して付
加的なフィールドSを有するという点でCCD74,8
0とは異なるものである。このフィールドS(22e)
はラインが“共有排他的(shared  exclu
sive)”であることを示している。CCD22,2
4、SCE54、および主メモリもそれぞれのCCD7
4,80、SCE90、およびメモリ96とは、これら
の装置の各々に部分的なキャストアウトおよびセクタの
無効果を与える付加的論理が設けられた点で異なってい
る。さらに、SCE90の内部キャッシュ・ディレクト
リ・テーブルは、多重キャッシュが同じラインの一部の
排他的使用を持つ可能性を与えるように拡張される。
【0053】図3は変更ライン・スタック(MLS)3
4の構成要素をさらに詳細に示した図である。このML
Sは入力アドレス・格納論理回路98、アクセス論理1
10、MLS制御・ディレクトリ(MSLDC)106
、および変更ダブルワード・アレイ(CDWA)108
を備えている。MLSDC106装置CDWA108は
、それぞれ、キャッシュ制御・ディレクトリおよびキャ
ッシュ・アレイと同様に動作する。MLSDCに格納さ
れ、エントリにアクセスするために用いられるアドレス
はCCD22に格納されたアドレスと同じである。CD
WA108(MLS34内の)内の各々のエントリに対
して維持された対応する“データ”は、MLS34内の
要素のエントリの後キャッシュ・アドレス18内の対応
するライン内のどのDWが変更されたかを識別する変更
ビット・ベクトル(CDW)108a〜nである。CD
WA108は単に、共有排他的に保持されない(すなわ
ち、CCE22のライン・エントリのビットSが0であ
る。)ラインに対するエントリを有する。DDWA10
8における変更ダブルワード・ビット・ベクトルCDW
108a〜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)126
a、排他的ビット(EXDW)126b、および変更ビ
ット(CHDW)126cを識別するベクトル126a
〜cである。VECBA126は単に共有排他的に保持
されるラインに対するエントリを有する(すなわち、C
CD22内のライン・エントリのビットSは1にセット
される。)。VECBA126内のVDW,EXDW,
およびCHDWデータは、プロセッサ2からのキャッシ
ュ・リクエストおよびキャッシュ制御・ディレクトリ2
2からのキャッシュ・リクエストに応じて取り出され、
変更される。
【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によりCD
WA108に供給される。
【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に与えられる。このXI
動作は“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にセットするこ
とにより最小になされる。このようにして、ステップ3
18でラインがセクタ化される前にローカル・キャッシ
ュによりDWが最近変更されたときは、ステップ322
でこのDWに対するEXDWビットがローカルVECB
A126において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のD
Wに対して1にセットされたままになる。ステップ32
6または328のいずれかのステップの後、CCD22
内の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はアドレス指定されたD
Wにデータを格納することが許容される。
【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  
view)を維持するタスクが簡単になる。SCA13
0とキャッシュ・アレイ18とのその他の差異は、SC
A130の同一ラインをアクセスする同時リクエストが
生じたとき、プロセッサ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がM
LSにより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から共有キャッシュへのライン
の転送は一方向転送である。この制限はキャッシュ18
,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,7
4,80  キャッシュ制御・ディレクトリ(CCD) 30,32  セクタ化ライン・ディレクトリ(SLD
)34,36  変更ライン・スタック(MLS)18
a,42,44,56,58,82  バス90  シ
ステム制御要素(SCE) 96  共有主メモリ 98  入力アドレス・格納論理回路 106  MLS制御・ディレクトリ 108  変更ダブルワード・アレイ(CDWA)11
0  アクセス論理回路 114  入力アドレス・リクエスト論理回路124 
 セクタ化ラインディレクトリ・制御(SLDC)論理
回路 126  有効排他的変更ビット・アレイ(VECBA
)130  共有キャッシュ・アレイ(SCA)132
  共有キャッシュ制御・ディレクトリ(SCCD)

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】共有主メモリと、各々がそれぞれのキャッ
    シュ・メモリに結合された少なくとも2つのプロセッサ
    と、キャッシュ・メモリを共有主メモリに結合するシス
    テム制御回路とを備えるコンピュータ・システムにおけ
    るキャッシュ・メモリ中のデータへのアクセスを管理す
    る装置であって、前記キャッシュメモリの1つにおいて
    、プロセッサの少なくとも2つにより参照されているデ
    ータ・ラインを、このデータ・ラインの各々のデータ・
    ワードがプロセッサの多くとも1つにより参照されるよ
    うに識別する手段と、識別されたラインにおけるデータ
    ・ワードをアクセスしているプロセッサに書込みアクセ
    スを与える手段と、1つ以上のプロセッサが前記ライン
    の1ワードに対して同時的な書込みアクセスを得ること
    を防止する手段とを備えたデータ・アクセス管理装置。
  2. 【請求項2】共有主メモリと、システム制御要素と、各
    々がメモリ・ワードのラインを保持するそれぞれの専用
    キャッシュ・メモリを有する少なくとも2つのプロセッ
    サとを備えるコンピュータ・システムにおけるキャッシ
    ュ・メモリ中のワードへのアクセスを管理する装置は、
    プロセッサの2つにより参照されているキャッシュ・メ
    モリの1つのラインを、このラインの各々のワードがプ
    ロセッサの多くとも1つにより参照されるように識別す
    る手段と、前記2つのプロセッサにより参照された前記
    ライン内の各々のプロセッサにより変更されているワー
    ドに対する各々のプロセッサへの排他的制御を与える手
    段と、他のプロセッサにより変更されている各々の私用
    キャッシュ・メモリ中のワードを無効にする手段と、前
    記キャッシュ・メモリのいずれかに常駐された後、任意
    のプロセッサにより変更されてないワードに対して全て
    のプロセッサに読出し専用アクセスを与える手段とを備
    えるワード・アクセス管理装置。
  3. 【請求項3】複数のプロセッサと、共有主メモリと、シ
    ステム制御要素とを備え、各々のプロセッサがそれぞれ
    のキャッシュ・メモリを有し、各々のキャッシュ・メモ
    リがメモリ・ワードのラインを保持するコンピュータ・
    システムにおけるメモリ・ワードへのアクセスを管理す
    る装置であって、各々のプロセッサに結合され、プロセ
    ッサにより変更されているキャッシュ・メモリ中のデー
    タ・ラインを識別する第1識別手段と、各々のプロセッ
    サに結合され、前記プロセッサのうちの第1のプロセッ
    サにより変更されている第1ワードと前記プロセッサの
    うちの第2のプロセッサによりアクセスされている第2
    ワードとを格納する各々のキャッシュ・メモリ中の各々
    のデータ・ラインを識別する第2識別手段と、前記シス
    テム制御要素に結合され、前記プロセッサの1つからの
    リクエストに応じて前記キャッシュ・メモリの1つのラ
    イン中のワードに対するアクセスを得て、前記第1識別
    手段から、前記プロセッサのうちの他のプロセッサがア
    クセス中のワードを前記ラインが格納できるか否かを決
    定し、前記プロセッサのうちの1つによるアクセスは前
    記ワードを変更する第1制御手段と、この第1制御手段
    による決定に応答して、第1識別手段から第2識別手段
    にラインを転送し、2つのプロセッサの一方がワードに
    対する書込みアクセスを持つとき2つのプロセッサがラ
    イン中の1ワードに対する同時アクセスを得ないように
    する第2制御手段とを備えるメモリ・ワード・アクセス
    装置。
  4. 【請求項4】前記第1識別手段は、前記キャッシュ・メ
    モリの1つに常駐された後、変更されたメモリ・ワード
    を識別する変更ワード識別手段をさらに備え、前記第2
    識別手段は、排他制御の下にあるか、または読出し専用
    制御の下にあるか、または前記複数のプロセッサの1つ
    によるアクセスに対して有効でないかのいずれかである
    ライン内の個別ワードを識別するセクタ化ライン・ディ
    レクトリ手段をさらに備え、前記第2制御手段は、前記
    第1プロセッサにより変更されている第1ワードと、前
    記第1プロセッサおよび第2プロセッサのそれぞれのキ
    ャッシュ・メモリに常駐された後、第2プロセッサによ
    り参照されている第2ワードとを含むラインを前記セク
    タ化ライン・ディレクトリ手段で識別するセクタ化手段
    を備える請求項3記載のメモリ・ワード・アクセス装置
  5. 【請求項5】前記第2制御手段は、前記セクタ化ライン
    ・ディレクトリ手段が前記複数のプロセッサのうちの1
    つを除く他のいかなるプロセッサもワードに対する排他
    的制御を有さないことを示すとき、前記複数のプロセッ
    サのうちの1つに係るキャッシュ・メモリに常駐するラ
    イン内のワードの排他的制御を前記1つのプロセッサに
    与える共有排他的制御手段と、前記1つのプロセッサが
    排他的制御を有するワードを前記1つのプロセッサに係
    るキャッシュ・メモリに格納するアクセスを与える手段
    と、前記いかなる他のプロセッサも排他的制御を有さな
    いワードを前記1つのプロセッサに係るキャッシュ・メ
    モリから取り出すアクセスを与える手段と、他のプロセ
    ッサに係るキャッシュ・メモリ内のワードを無効にする
    前記1つのプロセッサのための手段とをさらに備える請
    求項4記載のメモリ・ワード・アクセス装置。
  6. 【請求項6】前記第2制御手段は、複数のプロセッサの
    うちの1つのプロセッサのキャッシュ・メモリに常駐す
    るラインで、他のいかなるプロセッサも選択されたワー
    ドに対する排他的制御を有さないとき、他のプロセッサ
    のキャッシュ・メモリに常駐する前記ライン内の前記選
    択されたワードに対する排他的制御を前記1つのプロセ
    ッサに与える共有排他的制御手段と、前記ラインが他の
    プロセッサのキャッシュ・メモリに常駐したままのとき
    、前記1つのプロセッサに対するアクセスを与えてこの
    プロセッサが排他的制御を有するワードにデータを格納
    する手段と、前記1つのプロセッサに対するアクセスを
    与えて、前記ラインが他のプロセッサのキャッシュ・メ
    モリに常駐したままのとき、いかなる他のプロセッサも
    排他的制御を持たないワードを取り出す手段と、他のプ
    ロセッサのキャッシュ・メモリのワードが含まれる全体
    のラインを無効にすることなしに前記ワードを無効にす
    る前記1つのプロセッサのための手段とをさらに備える
    請求項3記載のメモリ・ワード・アクセス装置。
  7. 【請求項7】複数のプロセッサと、共有主メモリと、シ
    ステム制御要素とを備え、各々のプロセッサがメモリ・
    ワードのラインを保持するキャッシュ・メモリを有する
    システムにおけるキャッシュ・メモリ中のデータへのア
    クセスを管理する装置であって、データ・ワードを含む
    ラインが前記キャッシュ・メモリの1つに常駐された後
    、変更されているデータ・ワードとを識別する変更ライ
    ン識別手段と、第1ワードが1つのプロセッサにより変
    更されており、また第2ワードがキャッシュに常駐され
    た後、少なくとも1つの他のプロセッサにより参照され
    ているラインをマークするセクタ化手段と、このセクタ
    化手段に応答して、このセクタ化手段により排他的制御
    下にあるとして、特定プロセッサの読出し専用制御下に
    あるまたは無効であるとしてマークされたライン内の個
    別ワードを識別するセクタ化ライン・ディレクトリ手段
    と、マークされたライン内のワードが前記プロセッサの
    排他的制御下にあるときにのみ前記ワードに各々のプロ
    セッサが情報を格納することを許容し、さらに排他的制
    御または読出し専用制御の下にあるとしてマークされた
    前記ライン内のワードからのみ各々のプロセッサが情報
    を取り出すことを許容する共有排他的制御手段とを備え
    たデータ・アクセス管理装置。
  8. 【請求項8】前記変更ワード識別手段は、ワードが格納
    動作のために参照されたとき、これらのワードのそれぞ
    れのキャッシュ・アドレスが格納されるメモリ要素を備
    える請求項7記載のデータ・アクセス管理装置。
  9. 【請求項9】前記セクタ化ライン・ディレクトリ手段は
    、データを格納するメモリ要素を備え、ライン内のそれ
    ぞれのワードが読出しアクセスに対して有効か否か、そ
    れぞれのワードが書込みアクセスのために排他的制御の
    下で保持されるか否か、さらにそれぞれのワードがキャ
    ッシュに常駐しているとき変更されたか否かを識別する
    請求項7記載のデータ・アクセス管理装置。
  10. 【請求項10】複数のプロセッサと、共有主メモリと、
    システム制御要素と、共有キャッシュ・メモリとを備え
    、各々のプロセッサがメモリ・ワードのラインを保持す
    るそれぞれの私用キャッシュ・メモリを有するシステム
    におけるキャッシュ・メモリ中のデータへのアクセスを
    管理する装置であって、私用キャッシュ・メモリ中のデ
    ータ・ラインに対して、このデータ・ライン中の各々の
    データ・ワードがプロセッサの多くとも1つにより参照
    されるように、少なくとも1つの私用キャッシュ・メモ
    リ内に常駐しているときプロセッサの少なくとも2つに
    より参照される前記データ・ラインを識別する識別手段
    と、この識別手段に応答して識別されたライン内のデー
    タ・ワードをアクセスしているプロセッサに対するアク
    セスを与える制御手段と、私用キャッシュ・メモリ中の
    データ・ラインに対して、このデータ・ライン内の少な
    くとも1つのデータ・ワードがプロセッサの少なくとも
    2つにより参照されるように、私用キャッシュ・メモリ
    内に常駐しているときプロセッサの少なくとも2つによ
    り参照される前記データ・ラインを共有されたとしてマ
    ークする他の識別手段と、この他の識別手段に応答して
    、この他の識別手段により共有されたとしてマークされ
    た前記データ・ラインを共有キャッシュ・メモリに格納
    し、私用キャッシュ・メモリに共有されたとしてマーク
    された前記データ・ラインの全てのコピーを無効にする
    他の制御手段とを備えるデータ・アクセス管理装置。
  11. 【請求項11】共有主メモリと、システム制御要素と、
    各々がそれぞれの私用キャッシュ・メモリを有する少な
    くとも2つのプロセッサとを備えるコンピュータ・シス
    テムにおけるキャッシュ・メモリ中のデータへのアクセ
    スを管理する方法であって、キャッシュ・メモリ中のデ
    ータ・ラインに対して、このデータ・ライン中の各々の
    データ・ワードがプロセッサの多くとも1つにより参照
    されるようにプロセッサの少なくとも2つにより参照さ
    れる前記データ・ラインを識別するステップと、識別さ
    れたライン中のデータ・ワードをアクセスしているプロ
    セッサに対して書込みアクセスを与えるステップと、1
    つ以上のプロセッサが前記データ・ライン中の1ワード
    に対する同時的書込みアクセスを得ないようにするステ
    ップとを含むデータ・アクセス管理方法。
  12. 【請求項12】共有主メモリと、システム制御要素と、
    各々がメモリ・ワードのラインを保持するそれぞれの専
    用キャッシュ・メモリを有する少なくとも2つのプロセ
    ッサとを備えるコンピュータ・システムにおけるキャッ
    シュ・メモリ中のワードへのアクセスを管理する方法で
    あって、プロセッサの2つにより参照されているキャッ
    シュ・メモリの1つのラインを、このラインの各々のワ
    ードがプロセッサの多くとも1つにより参照されるよう
    に識別するステップと、前記2つのプロセッサにより参
    照された前記ライン内の各々のプロセッサにより変更さ
    れているワードに対する各々のプロセッサへの排他的制
    御を与えるステップと、他のプロセッサにより変更され
    ている各々の私用キャッシュ・メモリ中のワードを無効
    にするステップと、前記キャッシュ・メモリのいずれか
    に格納された後、プロセッサにより変更されていないワ
    ードに対して全てのプロセッサに読出し専用アクセスを
    与えるステップとを含むデータ・アクセス管理方法。
  13. 【請求項13】共有主メモリと、システム制御要素と、
    各々がメモリ・ワードのラインを保持する私用キャッシ
    ュ・メモリを有する少なくとも2つのプロセッサとを備
    えるコンピュータ・システムにおけるキャッシュ・メモ
    リ中のデータへのアクセスを管理する方法であって、デ
    ータ・ワードを収容するラインが前記キャッシュメモリ
    に常駐された後、変更された前記データ・ワードを識別
    するステップと、プロセッサの1つにより変更され、キ
    ャッシュに配置されてから少なくとも1つの他のプロセ
    ッサにより参照されている各々のラインであって、この
    ラインに対してその中のいかなる信号ワードもプロセッ
    サの1つ以上により参照されていない各々のラインをセ
    クタ化されたものとして識別するステップと、各々が前
    記プロセッサの1つの排他的制御下にあり、また前記プ
    ロセッサの1つの読出し専用制御下にあるかまたは無効
    である前記セクタ化ライン内の個別ワードの制御状態を
    識別するステップと、前記セクタ化ライン内のワードが
    プロセッサの排他的制御下にあるとして識別されたとき
    にのみ各々のプロセッサが前記ワードに格納することを
    可能にし、さらにプロセッサの排他的または読出し専用
    制御下にあるとして識別される前記セクタ化ライン内の
    ワードのみから、各々のプロセッサが取り出すことを可
    能にするステップとを含むデータ・アクセス管理方法。
  14. 【請求項14】共有主メモリと、システム制御要素と、
    各々がメモリ・ワードのラインを保持する私用キャッシ
    ュ・メモリを有する少なくとも2つのプロセッサとを備
    えるコンピュータ・システムにおけるキャッシュ・メモ
    リ中のメモリ・ワードへのアクセスを管理する方法であ
    って、(a)各々のプロセッサのキャッシュ・メモリに
    常駐された後、変更されたラインのアドレスを記録する
    ステップと、(b)前記記録されたライン内で変更され
    ている各々のデータ・ワードの位置を記録するステップ
    と、(c)システム制御要素により状態フラグを設定し
    て、キャッシュに配置された後1つのプロセッサにより
    変更され少なくとも1つの他のプロセッサにより参照さ
    れているラインであって、これに対してその中のいかな
    る単一ワードも1つ以上のプロセッサにより参照されて
    いない前記ラインをセクタ化されたとして識別するステ
    ップと、(d)セクタ化されたとして識別されている各
    々のライン内の個別ワードに対して、各々のワードが前
    記プロセッサの1つの排他的制御下にあり、前記プロセ
    ッサの1つの読出し専用制御下にあるか無効であること
    を示すアクセス制限を記録するステップと、(e)前記
    セクタ化ライン内のロードが各々のプロセッサの排他的
    制御下にあることをアクセス制限が示したときにのみ各
    々のプロセッサがワードに格納することを可能にし、前
    記ワードが各々のプロセッサの排他的または読出し専用
    制御の下にあることをアクセス制限が示したときにのみ
    各々のプロセッサが前記セクタ化ライン内のワードから
    取り出すことを可能にするステップと、(f)前記プロ
    セッサの1つが他のプロセッサのキャッシュ・メモリ中
    の全体のラインを無効にすることなしに前記他のプロセ
    ッサのキャッシュ・メモリに保持されるワードの排他的
    制御を要求することを可能にするステップと、(g)シ
    ステム制御要素を用いて、1つのプロセッサによる排他
    的制御に対するリクエストに応じて他のプロセッサのキ
    ャッシュ・メモリ中のワードを無効にするステップとを
    含むデータ・アクセス管理方法。
  15. 【請求項15】前記ステップ(d)は、前記1つのプロ
    セッサのキャッシュ・メモリに常駐された後このプロセ
    ッサにより変更されている各々のワードに対する排他的
    制御をこのプロセッサが有することを示す排他的フラグ
    を設定するステップと、前記1つのプロセッサのキャッ
    シュ・メモリに格納されて他のプロセッサにより変更さ
    れていない各ワードの有効コピーを前記プロセッサが有
    することを示す有効フラグを設定するステップとを含む
    請求項13記載のデータ・アクセス管理方法。
  16. 【請求項16】変更されたラインおよびセクタ化された
    ラインのアドレスを、置き換えられるべきアドレスを選
    択する最低使用頻度アルゴリズムを用いて、より最近変
    更されたラインおよびセクタ化されたラインのアドレス
    と置き換える請求項14記載のデータ・アクセス管理方
    法。
  17. 【請求項17】共有主メモリと、共有キャッシュ・メモ
    リと、システム制御要素と、各々がメモリ・ワードのラ
    インを保持する私用キャッシュ・メモリを有する複数の
    プロセッサとを含むコンピュータ・システムにおけるキ
    ャッシュ・メモリ中のワードへのアクセスを管理する方
    法であって、私用キャッシュ・メモリ中のデータ・ライ
    ンが、少なくとも1つの専用キャッシュ・メモリに常駐
    しているとき複数のプロセッサの2つにより私用キャッ
    シュ・メモリ中のどのデータ・ラインが参照されている
    かを識別するステップであって、前記参照が前記識別さ
    れたデータ・ライン中の各々のデータ・ワードが複数の
    プロセッサの1つだけにより参照されるようになされる
    ステップと、2つのプロセッサに対して、これらの2つ
    のプロセッサにより参照される前記データ・ラインの1
    つのアクセスを与えるステップであって、前記データ・
    ライン中の各々のデータ・ワードが唯一のプロセッサに
    より参照されているステップと、私用キャッシュ・メモ
    リに常駐しているとき複数のプロセッサの2つにより、
    前記データ・ラインの各々の少なくとも1つのデータ・
    ワードが2つのプロセッサにより参照されているように
    、参照されているキャッシュ・メモリ内のデータ・ライ
    ンを共有されたとしてマークするステップと、前記共有
    されたとしてマークされたデータ・ラインを共有キャッ
    シュ・メモリに格納するステップと、前記私用キャッシ
    ュ・メモリの共有されたとしてマークされた前記データ
    ・ラインの全てのコピーを無効にするステップとを含む
    ワード・アクセス管理方法。
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 true JPH04260146A (ja) 1992-09-16
JPH0762836B2 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4423559A1 (de) * 1993-11-09 1995-05-11 Hewlett Packard Co Datenverbindungsverfahren und Vorrichtung für Multiprozessor-Computersysteme mit gemeinsamem Speicher
WO2007105256A1 (ja) * 2006-02-24 2007-09-20 Fujitsu Limited マルチプロセッサシステム、プロセッサ、およびキャッシュ制御方法
WO2008155844A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 情報処理装置およびキャッシュ制御方法
JP2021502629A (ja) * 2017-11-10 2021-01-28 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 複数のプロセッサによる共有キャッシュ・ラインの同時変更

Families Citing this family (34)

* 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é.
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 コーニンクレッカ フィリップス エヌ ヴェ ローカルメモリデータのコヒーレントなキャッシュ処理
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

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

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4423559A1 (de) * 1993-11-09 1995-05-11 Hewlett Packard Co Datenverbindungsverfahren und Vorrichtung für Multiprozessor-Computersysteme mit gemeinsamem Speicher
WO2007105256A1 (ja) * 2006-02-24 2007-09-20 Fujitsu Limited マルチプロセッサシステム、プロセッサ、およびキャッシュ制御方法
US7945754B2 (en) 2006-02-24 2011-05-17 Fujitsu Limited Multiprocessor system, processor, and cache control method
WO2008155844A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 情報処理装置およびキャッシュ制御方法
JPWO2008155844A1 (ja) * 2007-06-20 2010-08-26 富士通株式会社 情報処理装置およびキャッシュ制御方法
JP4613247B2 (ja) * 2007-06-20 2011-01-12 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
US8370585B2 (en) 2007-06-20 2013-02-05 Fujitsu Limited Data processing system and cache control method
JP2021502629A (ja) * 2017-11-10 2021-01-28 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 複数のプロセッサによる共有キャッシュ・ラインの同時変更

Also Published As

Publication number Publication date
US5291442A (en) 1994-03-01
JPH0762836B2 (ja) 1995-07-05

Similar Documents

Publication Publication Date Title
JPH04260146A (ja) データ・アクセス管理装置および方法
US7698508B2 (en) System and method for reducing unnecessary cache operations
JP4316016B2 (ja) 複数のシステムバスを有するコンピュータシステムにおいてメモリコヒーレンスを維持するためのシステムおよび方法
US6647466B2 (en) Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
US4445174A (en) Multiprocessing system including a shared cache
US7765381B2 (en) Multi-node system in which home memory subsystem stores global to local address translation information for replicating nodes
JP5445581B2 (ja) コンピュータシステム、制御方法、記録媒体及び制御プログラム
JP2000250812A (ja) メモリ・キャッシュ・システムおよびその管理方法
US20020078304A1 (en) System and method for allocating a directory entry for use in multiprocessor-node data processing systems
JPH02141845A (ja) マルチプロセッサシステムにおいて中央処理ユニットにより主メモリからデータブロックを読み取る方法
US5909697A (en) Reducing cache misses by snarfing writebacks in non-inclusive memory systems
JP4162493B2 (ja) 下位レベルのキャッシュを含むアクセスを促進するためのリバースディレクトリ
US9442856B2 (en) Data processing apparatus and method for handling performance of a cache maintenance operation
US7047364B2 (en) Cache memory management
US7472225B2 (en) Caching data
JP3626609B2 (ja) マルチプロセッサシステム
JP4742432B2 (ja) メモリシステム
US6934810B1 (en) Delayed leaky write system and method for a cache memory
US6349369B1 (en) Protocol for transferring modified-unsolicited state during data intervention
JPH04191946A (ja) スヌープキャッシュメモリ制御方式
JPH0387948A (ja) マルチプロセッサシステム
US20260086950A1 (en) Systems and methods for region-based probe filter shootdown
JP3507314B2 (ja) メモリコントローラおよびコンピュータシステム
JP3213758B2 (ja) 記憶一致制御方法およびそれを用いたマルチプロセッサシステム
JPH06250926A (ja) 複数階層のキャッシュメモリを備えたデータ処理システム

Legal Events

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