JPH0775010B2 - 多重処理システムのコヒーレンス手段 - Google Patents

多重処理システムのコヒーレンス手段

Info

Publication number
JPH0775010B2
JPH0775010B2 JP4029537A JP2953792A JPH0775010B2 JP H0775010 B2 JPH0775010 B2 JP H0775010B2 JP 4029537 A JP4029537 A JP 4029537A JP 2953792 A JP2953792 A JP 2953792A JP H0775010 B2 JPH0775010 B2 JP H0775010B2
Authority
JP
Japan
Prior art keywords
cpu
data unit
ownership
cache
directory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP4029537A
Other languages
English (en)
Other versions
JPH0561770A (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 JPH0561770A publication Critical patent/JPH0561770A/ja
Publication of JPH0775010B2 publication Critical patent/JPH0775010B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • G06F12/082Associative directories
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies

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】
【産業上の利用分野】本発明は、多重処理システム内の
データのコヒーレンス(一貫性)を管理するように、プ
ロセッサ(CPU)専用のキャッシュに関連して用いら
れる新規なクロス無効化(XI)デイレクトリに係る。
なお、本明細書の記述を簡潔にするため、「XI」とい
う略語は「クロス無効化」を表わし、「EX」は「排他
的」(所有権)を表わし、「RO」は「読取専用」又は
「共有」(所有権)を表わすものとする。また、「L
1」、「L2」、「L3」という略語はシステム記憶階
層のそれぞれのレベルを表わし、数字が小さいほどCP
Uの側に接近して位置しているものとする。例えば、L
1メモリは、それぞれのCPU専用に設けられるキャッ
シュ・メモリに相当し、以下これを「L1キャッシュ」
と呼び、L1キャッシュに付随するデイレクトリを「L
1デイレクトリ」と呼ぶ。同様に、L2メモリは、複数
のCPUによって共有されるキャッシュ・メモリに相当
し、以下これを「L2キャッシュ」と呼び、L2キャッ
シュに付随するデイレクトリを「L2デイレクトリ」と
呼ぶ(但し、本発明の或る実施例では、XIデイレクト
リをL2デイレクトリとして用いることができる)。更
に、L3メモリは、複数のCPUによって共有されるメ
イン・メモリに相当し、以下これを「L3メイン・メモ
リ」と呼ぶことにする。
【0002】
【従来の技術】ストア・イン型のL1キャッシュを用い
た従来の多重処理システムは、全てのL1デイレクトリ
のコピーに相当する、1組のコピー・デイレクトリを用
いて、システム内のデータ・コヒーレンスを維持してい
る。即ち、一のCPUが取出し要求を発行する場合、こ
の取出し要求を他の全てのCPUのコピー・デイレクト
リ内でクロス照会して、要求されたデータ・ユニット
(データ・ライン)のコピーを他の任意のCPUが有す
るか否かを調べるのである。このプロセスは、一度に唯
1つのCPUだけが、システム内の一のデータ・ユニッ
トのEX所有権(書込権限)を有することを保証する。
換言すれば、一のデータ・ユニットのEX所有権を有す
る唯1つのCPUだけが、当該データ・ユニットへスト
アを行うことができるのである。一のデータ・ユニット
には、RO所有権(読取専用権限)を持たせることもで
きる。RO所有権は、全てのCPUがそのデータ・ユニ
ットを取出す(読取る)ことを可能にするが、全てのC
PUに対し、そのデータ・ユニットへストア(書込み又
は変更)を行うことを禁止する。
【0003】データ・コヒーレンスの問題は、ストア・
スルー型のL1キャッシュについては、比較的簡明であ
る。なぜなら、ストア・スルー型のL1キャッシュ内で
ストアを行う場合、複数のCPUによって共有された補
助メモリでもストアを同時に行う必要があるからであ
る。L1キャッシュをバックアップする補助メモリは、
L2キャッシュである場合もあり、L3メイン・メモリ
である場合もある。L2キャッシュは、ストア・イン型
又はストア・スルー型のどちらでもよいが、L3メイン
・メモリに至るストア・バスのトラフィックを減少させ
るためには、ストア・イン型であることが望ましい。
【0004】ストア・イン型のL1キャッシュを用いる
理由は、主として、補助メモリとL1キャッシュとの間
に設けられるメモリ・バスの帯域幅が、同じ周波数のC
PUアクセスについて、ストア・スルー型のL1キャッ
シュよりも小さい、という点にある。一のキャッシュ・
エントリを一のCPU要求に割当てると、この要求に応
じてL3メイン・メモリ又は他のキャッシュから取出さ
れたデータ・ユニットのコピーを受取ることができる。
ストア・イン型のL1キャッシュを用いる場合には、C
PUは、一のキャッシュ・エントリ内にある一のデータ
・ユニットにのみストアを行って、L3メイン・メモリ
内の対応するアドレスにあるデータ・ユニットへのスト
アを行わない。従って、当該キャッシュ・エントリは、
当該データ・ユニットの最新の変更バージョンを保持す
る処の、システム内の唯1つの記憶位置となる。CPU
は、その実行中プログラムが必要とするたびに、当該デ
ータ・ユニットへストアを行うことができる。システム
内のデータの完全性を維持するには、各データ・ユニッ
トの最新のバージョンを、その後続処理に用いることが
不可欠である。
【0005】ストア・スルー型のL1キャッシュは、取
出しアクセスについては単独で用いられるが、ストア・
アクセスについては、アクセスされたデータ・ユニット
の最新のバージョンを維持するように、このL1キャッ
シュ及び次の記憶階層レベルにあるメモリ(L2キャッ
シュ又はL3メイン・メモリ)内の同じデータ・ユニッ
トを、両者ともに変更することが必要である。しかし、
このようなキャッシュのストア・スルー特性は、システ
ム内のデータ・コヒーレンスの問題を解決しない。なぜ
なら、ストア・スルー型の他のL1キャッシュが、同じ
データ・ユニットの古いバージョンを保持することがあ
り得るからである。従って、多重処理システム内の複数
のL1キャッシュがストア・イン型又はストア・スルー
型のどちらであろうとも、新しく要求されたデータ・ユ
ニットを一のL1キャッシュに取出そうとするとき、こ
れらのL1キャッシュの内容についてクロス照会を行う
ことが必要となるのである。
【0006】任意のCPUが一のデータ・ユニットへ最
初のストアを行う場合は、これに先立ち、当該CPUに
対し、当該データ・ユニットのEX所有権が割当てられ
る。従来技術では、CPUに対し所有権を割当てるた
め、それぞれのデータ・ユニットに関連するL1デイレ
クトリ・エントリ内の、EX/ROビットをセットする
ようにしている。例えば、オン状態にあるEX/ROビ
ットは、そのL1デイレクトリ・エントリに関連するデ
ータ・ユニットのEX所有権が(当該L1デイレクトリ
を備えたCPUに対し)割当てられていることを表わ
し、オフ状態にあるEX/ROビットは、かかる関連す
るデータ・ユニットのRO所有権が(当該L1デイレク
トリを備えたCPUに対し)割当てられていることを表
わす。一のデータ・ユニットのEX所有権が一のCPU
に対し割当てられている場合には、当該CPUだけが、
当該データ・ユニットへストアを行うことができる。こ
れに対し、一のデータ・ユニットのRO所有権が割当て
られている場合は、どのCPUも、当該データ・ユニッ
トへストアを行うことができない。即ち、システム内の
全てのCPUは、当該データ・ユニットを読取ることが
できるに過ぎず、従って複数のL1キャッシュ内に、変
更不能なデータ・ユニットの多数のコピーが存在するこ
とがあり得るのである。
【0007】一般に、キャッシュは、要求に基づいて、
そのシステム記憶階層からデータ・ユニットを取出す。
キャッシュ・ミスが生ずる場合は、ミスしたデータ・ユ
ニットを取出すために、一の取出し要求を生成してこれ
を次の記憶階層レベルに送信する。
【0008】ストア・イン型のL1キャッシュは、その
置換制御部(LRU制御部)の制御下で、変更済みのデ
ータ・ユニットをL3メイン・メモリに送信する。一の
データ・ユニットの置換が行われるのは、当該データ・
ユニットがL1キャッシュ内で最も長い間使用されてお
らず、しかもこのL1キャッシュ内にある他のエントリ
のどれもが、新しく要求されたデータ・ユニットを書込
むために使用できないような場合である。最も長い間使
用されなかったキャッシュ・エントリ(LRUキャッシ
ュ・エントリ)を、新しく要求されたデータ・ユニット
との置換用に選択する場合、この置換プロセスを「エー
ジング・アウト」と呼ぶこともある。置換制御部は、こ
れが選択したLRUキャッシュ・エントリ内にあるデー
タ・ユニットを、その変更の有無に拘わらず、キャッシ
ュ・ミスの結果として取出された新しいデータ・ユニッ
トと置換させる。L1キャッシュ内にある置換すべきデ
ータ・ユニットが変更済みである場合は、L3メイン・
メモリから取出し中の新しく要求されたデータ・ユニッ
トを重ね書きする前に、かかる変更済みのデータ・ユニ
ットをL1キャッシュからキャスト・アウト(吐出し)
して、L3メイン・メモリのような他の記憶位置に書込
まねばならない。例えば、一のCPUが、そのL1キャ
ッシュ内に現に存在しないデータ・ユニットを要求する
場合は、要求されたアドレスを用いて、当該データ・ユ
ニットをL3メイン・メモリ(又は他のキャッシュ)か
ら取出すとともに、当該データ・ユニットを新しく割当
てたLRUキャッシュ・エントリに書込まねばならな
い。この新しいデータ・ユニットを受取るべきLRUキ
ャッシュ・エントリは、現に使用されていないキャッシ
ュ・エントリである。もし、使用可能な全てのキャッシ
ュ・エントリが変更済みのデータ・ユニットで以て現に
占有されていれば、そのうちの1つを新しいデータ・ユ
ニットを受取るべきものとして再割当てしなければなら
ない。しかし、再割当てしたキャッシュ・エントリに当
該新しいデータ・ユニットを書込む前に、このキャッシ
ュ・エントリ内にある変更済みのデータ・ユニットを、
L3メイン・メモリへキャスト・アウトすることが必要
となる。即ち、キャスト・アウト・プロセスは、当該新
しいデータ・ユニットをL1キャッシュに書込む前に、
行わなければならない。キャスト・アウトされたデータ
・ユニットの所有権は、CPUのEX所有権からL3メ
イン・メモリの所有権に変更される。
【0009】もし、L1キャッシュ内にある一のデータ
・ユニットが変更済みでなければ、当該データ・ユニッ
トとL3メイン・メモリ内にあるバックアップ・コピー
とは同じであるから、当該データ・ユニットを置換する
に当たっては、キャスト・アウトを行わないで、当該デ
ータ・ユニットに単に重ね書きすればよい。
【0010】日本国特許第1281033号は、多重処
理システム内のデータ・コヒーレンスを制御するため
に、ストア・イン型のL1キャッシュに付随するL1デ
イレクトリの各エントリ内で、EX/ROビットを使用
することを開示している。この開示内容を簡述すると、
各L1キャッシュ内に現に存在する全てのデータ・ユニ
ットの各CPUによる所有権を識別するために、各L1
デイレクトリごとに一のコピー・デイレクトリをそれぞ
れ設ける。そして、他のCPUがEX所有権とともに取
得することを要求している一のデータ・ユニットを、ど
のCPUが現に所有又は共通に使用しているかを識別す
るため、全てのコピー・デイレクトリを1組として使用
する。クロス照会とは、任意のデータ・ユニットのEX
所有権又はRO所有権を有する任意のCPUを識別する
ため、これらのコピー・デイレクトリ相互間で用いられ
るプロセスであり、具体的には、要求されたデータ・ユ
ニットのアドレスを、全てのコピー・デイレクトリ内に
あるアドレスと比較することによって行われる。もし、
要求されたデータ・ユニットのアドレスが一のコピー・
デイレクトリ内で検出されるならば、これは、当該アド
レスに対応するデータ・ユニットを保持する一のL1キ
ャッシュ、従ってそのCPUを識別することになる。か
くて、識別されたCPUのコピー・デイレクトリからそ
のL1キャッシュに無効化信号を送信して、当該データ
・ユニットを保持するキャッシュ・エントリを無効化し
た後に、当該データ・ユニットの所有権を他のCPUの
L1キャッシュに引渡す。
【0011】このクロス照会プロセスは、一度に唯1つ
のCPUだけが一のデータ・ユニットを排他的に所有す
る(そのEX所有権を有する)ことを保証するように、
他のL1キャッシュで検出された当該データ・ユニット
の全てのコピーを無効化することを特徴としている。
【0012】従って、いずれの時点においても、多重処
理システム内の複数のCPUのうち唯1つのCPUだけ
が、任意のデータ・ユニットのEX所有権を有すること
ができる。一のデータ・ユニットのEX所有権を他のC
PUが要求する場合、当該データ・ユニットのEX所有
権を、(現所有者である)一のCPUから当該他のCP
Uに変更することができる。CPUに対しEX所有権を
割当てるための従来の機構は、L1デイレクトリ・エン
トリの各々にEX/ROビットを設けて、このエントリ
に関連するデータ・ユニットが当該CPUによって「所
有」されていることを表わすように、このEX/ROビ
ットをオン状態にセットする、というものである。この
EX/ROビットがオフ状態にあると、これは関連する
データ・ユニットのRO所有権を表わし、この場合に
は、システム内の全てのCPUが関連するデータ・ユニ
ットを同時に使用することができる。かくて、任意のL
1キャッシュ内にある有効な各データ・ユニットは、E
X所有権又はRO所有権のどちらかを有する。
【0013】前掲の日本国特許第1281033号に係
るコピー・デイレクトリを用いたクロス照会機構は、L
3メイン・メモリからストア・イン型の一のL1キャッ
シュに取出されるデータ・ユニットについて、次の所有
権を自動的に割当てるようにしている。 1.EX所有権:全てのCPUのコピー・デイレクトリ
内で、当該データ・ユニットが検出されない場合。 2.EX所有権:他のCPUのコピー・デイレクトリ内
で、当該データ・ユニットが変更済みで且つEX所有権
を有するものして検出される場合。要求された当該デー
タ・ユニットは、要求元CPUのL1キャッシュに取出
される前に、前記他のCPUのL1キャッシュからキャ
スト・アウトされる。 3.RO所有権:他のCPUのコピー・デイレクトリ内
で、当該データ・ユニットが変更済みでなく且つEX所
有権を有するものとして検出され、また新しい要求が当
該データ・ユニットを変更しそうにない場合(新しい要
求が取出し要求に相当する場合)。このようにして検出
された当該データ・ユニットは、前記他のCPUのL1
キャッシュ内に残され、そのEX所有権がRO所有権に
変更される。 4.EX所有権:1以上の他のCPUのコピー・デイレ
クトリ内で、当該データ・ユニットがRO所有権を有す
るものとして検出され、そして新しい要求が当該データ
・ユニットを変更しそうな場合(新しい要求がストア要
求に相当する場合)。このようにして検出された当該デ
ータ・ユニットは、前記他のCPUのL1キャッシュ内
で無効化される。かかる無効化動作は、「EX所有権へ
のプロモート」と呼ばれる、時間のかかるプロセスを用
いる。 5.RO所有権:他のCPUのコピー・デイレクトリ内
で、当該データ・ユニットがRO所有権を有するものと
して検出される場合。このようにして検出された当該デ
ータ・ユニットは、そのRO所有権のまま、前記他のC
PUのL1キャッシュ内に残される。 6.RO所有権:CPU要求の型に関係なく、当該デー
タ・ユニットがページ・テーブル・エントリであり且つ
このエントリ内でRO所有権を有するようにセットされ
ていることが検出される場合。
【0014】特願平4−39482号(平成4年2月2
6日出願)は、L1キャッシュ内にあるデータ・ユニッ
トの所有権のインターロック制御を記述している。この
インターロック制御は、ストア・イン型の一のL1キャ
ッシュ内で排他的に所有されている一のデータ・ユニッ
トの所有権の変更を、そのCPUが発行する当該データ
・ユニットを対象とする全てのストアの完了とインター
ロックさせることを意図する。かかるインターロック
は、当該CPUが、当該データ・ユニットのEX所有権
又はRO所有権のどちらかを要求する他のCPUから一
のXI信号を受取り且つこれに応答するまで、継続して
行われる。
【0015】
【発明が解決しようとする課題】本発明の目的は、多重
処理システム内のデータ・コヒーレンスを制御するため
に、複数のCPUによって共有される、単一のXIデイ
レクトリを提供することにある。
【0016】
【課題を解決するための手段】各CPUは、補助メモリ
から取出されたデータ・ユニットのコピーを保持するた
めの、L1キャッシュをそれぞれ備えている。この補助
メモリは、システム記憶階層を構成するL3メイン・メ
モリである場合もあり、L2キャッシュである場合もあ
る。
【0017】XIデイレクトリは、この補助メモリ(L
2キャッシュ、又はL2キャッシュが設けられていない
場合はL3メイン・メモリ)に対する要求によりアクセ
スされる。L1キャッシュは、ストア・イン型又はスト
ア・スルー型のどちらでもよい。XIデイレクトリの設
置場所は、L1キャッシュの各々をL2キャッシュ及び
L3メイン・メモリにインタフェースする処の、システ
ム記憶制御装置(SCE)とすることができる。XIデ
イレクトリが、一のデータ・ユニットに対する一のCP
U要求によりアクセスされるのは、当該CPU要求がそ
のL1キャッシュ内でミスする場合(即ち、要求された
データ・ユニットがそのL1キャッシュ内に存在しない
場合)である。
【0018】かくて、L2キャッシュが設けられる場合
は、L1デイレクトリの各々に関連するコピー・デイレ
クトリを設けなくても、XIデイレクトリを、L2キャ
ッシュ用のL2デイレクトリとして用いることができ
る。この場合において、もしCPU要求がXIデイレク
トリでミスすれば、これはL2キャッシュ・ミスと同等
であり、従って要求元CPUが要求したデータ・ユニッ
トをL3メイン・メモリからアクセスして、当該データ
・ユニットをL2キャッシュ及び要求元CPUのL1キ
ャッシュに取出すことになる。
【0019】他方、L2キャッシュが設けられない場
合、XIデイレクトリの内容は、L3メイン・メモリ内
にある要求されたデータ・ユニットのアクセスを制御す
るとともに、L1キャッシュ相互間のデータ・コヒーレ
ンスを制御する。XIデイレクトリは、全てのL1キャ
ッシュ内にある各データ・ユニットごとに、有効な一の
エントリを有することが望ましい。
【0020】XIデイレクトリ・エントリの各々が有す
るCPU識別子(CPID)フィールドは、当該エント
リに関連するデータ・ユニットを、複数のCPUのうち
どのCPUが所有しており、そしてその所有権がEX所
有権又はRO所有権のどちらであるかを識別するための
ものである。EX所有権は、唯1つのCPUだけが、当
該データ・ユニットの所有者であることを意味する。R
O所有権は、全てのCPUが、当該データ・ユニットの
所有権を共有することを意味する。XIデイレクトリ・
エントリの各々に1以上のCPIDフィールドを設ける
ようにすると、複数のコピー・デイレクトリを設けるこ
とが不要になる(コピー・デイレクトリとは、各L1デ
イレクトリのコピーであって、従来技術では、システム
内の複数のCPUのどれかによって発行された、L3メ
イン・メモリ内にあるデータ・ユニットをそのEX所有
権とともに取得するための排他的取出し要求に応答し
て、CPU識別子を供給するために使用されたものであ
る)。コピー・デイレクトリ及びそれらのクロス照会を
除去すると、CPUの排他的取出し要求を処理する際の
クリティカルな処理経路における幾つかの動作を除去す
ることができ、ひいてはメモリ・データに対するCPU
の平均的なアクセス速度を向上させることができる。
【0021】本発明は、一の要求が一のデータ・ユニッ
トのEX所有権を変更することを必要とする場合におい
て、(この要求によりアクセスされたXIデイレクトリ
・エントリ内にある)CPIDフィールドにより識別さ
れた(当該データ・ユニットの1以上の)現所有者に対
する一のXI信号を生成する。このXI信号は、要求元
CPUを除く(1以上の)他のCPUにだけ送信され
る。このXI信号は、当該他のCPUのL1キャッシュ
に対し、当該データ・ユニットを無効化してそのEX所
有権を終了(又は当該データ・ユニットの所有権をRO
所有権に変更)することを要求する。かかる無効化又は
変更の処理は、要求元CPUが当該データ・ユニットを
使用することができる前に行わねばならない。
【0022】生成済みのXI信号は、その要求元CPU
を表わす一の識別子タグと、要求されているのがEX所
有権又はRO所有権のどちらであるかを表わす処の、一
のEX/RO標識とを含んでいる。このXI信号は、X
Iバス経路を介して、CPIDフィールドによって識別
されたCPUに送信される。このXIバス経路は、CP
Uごとに1つずつ設けられた複数のバスとすることがで
き、その場合には、XI信号生成手段からの特定のXI
信号は、XI動作のためにCPIDフィールドによって
選択された(1以上の)バスだけを介して送信されるこ
とになる。代替的に、このXIバス経路は、全てのCP
Uに対し直列に接続された単一のバスとすることもで
き、その場合には、各CPUは当該CPUの識別子タグ
を保持する一のXI信号を検出してこれを選択すること
ができる。XI信号を受信したCPUは、このXI信号
を、一のXIキュー(従来技術の「バッファ無効化アド
レス・スタック」に相当)にストアする。
【0023】一の要求について、XI信号がXIハード
ウェア(XIデイレクトリとともにSCE内に配置され
たXI回路)によって送信されると、SCE内のXI回
路は、他のXI信号を直ちに送信することができる。な
ぜなら、要求元CPUの識別子タグを含んでいるXI信
号が、その受信CPUに送信されるからである。この受
信CPUは受信済みのXI信号を処理した後、関連する
識別子タグを含んでいるXI応答信号を供給する。次
に、SCEは、受信済みのXI応答信号内にある識別子
タグを用いて、これらのXI応答信号を、送信済みのX
I信号と相関させる。SCEは、この相関結果を用い
て、要求された各データ・ユニットについて必要な所有
権の変更を完了する。XI信号及びXI応答信号内にあ
る識別子タグは、これらの信号をSCE内でパイプライ
ン式に生成及び送信したり、受信CPU内でパイプライ
ン式に処理することを可能にする。
【0024】特定のシステムでは、XIデイレクトリ・
エントリの各々で、唯1つの型のCPIDフィールドし
か用いることができないが、本発明はこれとは異なる複
数の型のCPIDフィールドを用いることも意図する。
例えば、或る型のCPIDフィールドを用いる場合は、
一のCPID値を表わすように、CPIDフィールドの
各々に複数ビットの一の組合せを与えるのである。この
CPIDフィールドの特定の値は、当該XIデイレクト
リ・エントリに関連するデータ・ユニットのEX所有権
を有する任意のCPUを識別する。他方、このCPID
フィールドの他の特定の値は、関連するデータ・ユニッ
トのRO所有権を、全てのCPUが有し得ることを表わ
す。このようにすると、XIデイレクトリ・エントリの
各々に、EX/ROビットを設けることは必要ない。な
ぜなら、互いに異なる複数のCPID値が、EX所有権
を有する各CPUをそれぞれ識別するのに対し、RO所
有権に相当する一のCPID値は、特定のCPUを識別
せずに、全てのCPUがRO所有権を有し得ることを表
わすからである。
【0025】異なる型のCPIDフィールドの他の例
は、このフィールド内に1組のビットを設け、オン状態
にある各ビットによって、それぞれのCPUを当該XI
デイレクトリ・エントリに関連するデータ・ユニットの
所有者として識別する、というものである。この型のC
PIDフィールドを、同じXIデイレクトリ・エントリ
内にあるEX/ROビットと組合わせて用いると、識別
された(1以上の)CPUが、当該XIデイレクトリ・
エントリに関連するデータ・ユニットのEX所有権又は
RO所有権のどちらを有するかを表わすことができる。
このEX/ROビットがEX所有権を表わすようにセッ
トされている場合、CPIDフィールドは、1組のCP
Uのうち唯1つのCPUだけを識別することができる。
他方、このEX/ROビットがRO所有権を表わすよう
にセットされている場合は、CPIDフィールドは、1
組のCPUのうち0ないし全てのCPUを識別すること
ができる。かくて、XIデイレクトリ・エントリの各々
にあるCPIDフィールドとEX/ROビットとを組合
せると、1組のCPUのうち特定の1つのCPUを、当
該XIデイレクトリ・エントリに関連するデータ・ユニ
ットのEX所有権を有するものとして識別することがで
きるばかりか、1組のCPUのうち0ないし全てのCP
Uを、当該XIデイレクトリ・エントリに関連するデー
タ・ユニットのRO所有権を有するものとして識別する
ことができるのである。
【0026】また、L1デイレクトリ・エントリの各々
は、L1キャッシュ内にある関連する各データ・ユニッ
トごとに、一のEX/ROビットを有するが、CPID
フィールドは有さない。このEX/ROビットは、対応
してアドレスされる一のXIデイレクトリ・エントリと
共同して動作する。後者のエントリは、RO所有権を有
するCPUを識別することが必要な場合は、(EX/R
Oビットなしの)CPIDフィールドだけを有し、これ
に加えてEX所有権を有するCPUを識別することも必
要な場合は、EX/ROビットとCPIDフィールドの
両方を有する。一のL1デイレクトリ・エントリ内にあ
るEX/ROビットがオン状態にセットされていると、
これは、そのL1キャッシュ内にある関連するデータ・
ユニットのEX所有権(書込権限)をそのCPUが有す
ることを表わす。従って、取出し又はストアを行うため
の有効なデータ・ユニットがL1キャッシュ内にあり、
このためL1ヒットが直ちに得られるときは、XIデイ
レクトリを用いてXI信号を通知することは不要とな
る。かかるL1ヒットについてXI信号の通知を除去す
ることは、L1キャッシュがストア・イン型又はストア
・スルー型のどちらであっても、CPU動作の効率を向
上させることにつながるのである。
【0027】XI信号は、その受信CPUに対し、その
L1デイレクトリ及びXIデイレクトリの両方に表わさ
れているEX所有権を終了することを常に要求する。X
I信号は、その受信CPUに対し、当該XI信号内のア
ドレスに対応するデータ・ユニットの全ての所有権を無
効化することを必ずしも要求しないが、RO所有権へ変
更することだけを要求することがある。受信CPUのL
1デイレクトリ内で、当該データ・ユニットを無効化す
ることは、CPUが全ての所有権を放棄する一の方法で
ある。
【0028】特定のXI信号は、アクセスされたXIデ
イレクトリ・エントリ内にあるCPIDフィールドによ
って識別されたCPUに対し、そのEX所有権を放棄す
ることを常に要求するが、所有権の終了を通知するとは
限らない。その代わり、特定のXI信号は、当該CPU
の所有権を降格(デモート)すべきことを意味する処
の、RO所有権への変更を通知することができる。従っ
て、「XI」という用語は「クロス無効化」を表わすの
であるが、XI信号は無効化以上のものを表わすために
用いられる。なぜなら、XI信号は、前記CPIDフィ
ールドによって識別されたCPUに対し、「RO所有権
へのデモート」信号で以てRO所有権への変更を要求す
ることにより、EX所有権からRO所有権への降格を通
知することがあるからである。これらの異なる機能を実
行するため、一のXI信号は、その受信CPUに対し、
このXI信号に応じて為すべきこと、即ち無効化又は
「RO所有権へのデモート」を通知する一の動作フィー
ルドを有する。
【0029】本発明は、(従来技術のコピー・デイレク
トリについては必要であった)クロス照会動作を物理的
には遂行しないが、アクセスされたXIデイレクトリ・
エントリの型に応じて、単にCPIDフィールドだけを
検出するか、又はCPIDフィールドとEX/ROビッ
トを一緒に検出することにより、クロス照会動作と同等
の結果を得るようにしている(このアクセスされたXI
デイレクトリ・エントリは、L1ミス要求のアドレスに
一致するアドレスを持つXIヒット・エントリである
か、又はXIデイレクトリの置換制御部により割当てら
れたXIミス・エントリのどちらかである)。かくて、
米国特許第4394791号又は第4675811号の
発明のように、無効化信号を任意のL1キャッシュに発
行する前に、複数のコピー・デイレクトリ相互間で行う
ことが必要であったクロス照会信号の通知は、本発明で
は必要ないのである。
【0030】また、本発明の他の幾つかの特徴は、シス
テム内で必要とする信号の通知を少なくさせているか
ら、これらの特徴もXI信号を処理する際のシステム効
率を向上させるのに役立っている。
【0031】本発明の第1の特徴は、一のデータ・ユニ
ットを排他的に要求している要求元(例えば、一のCP
U)からの一のXI信号を他のCPUが受取るとき、当
該他のCPUが待ち状態にあるか否かを検出することに
ある。(SCE内のXIデイレクトリに関連して配置さ
れた)1組の待ち状態ラッチは、システム内の全てのC
PUの待ち状態をそれぞれ表わす。一のCPUの待ち状
態ラッチがオン状態になっているとき、当該CPUは待
ち状態にあると表わされ、その待ち状態ラッチがオフ状
態になっているとき、当該CPUは待ち状態にはないと
表わされ、そして各CPUは、その待ち状態ラッチの状
態を制御する。もし、(待ち状態にはない)任意のCP
Uが一のデータ・ユニットを排他的に要求してXIヒッ
トを取得しており、しかもこのXIヒットに関連するX
Iデイレクトリ・エントリが(そのCPIDフィールド
によって識別された)他のCPUのEX所有権又はRO
所有権を表わしておれば、当該他のCPUの待ち状態ラ
ッチを検査して、これが待ち状態にあるか否かを決定す
る。もし、当該他のCPUが待ち状態にあることが判れ
ば、要求元CPUは、(通常必要となる)当該他のCP
Uから供給されるXI応答信号を待機せずに、(例え
ば、当該XIデイレクトリ・エントリ内にあるCPID
フィールドの値を、当該他のCPUのCPID値から要
求元CPUのCPID値へ変更して)、要求されたデー
タ・ユニットの所有権を直ちに取得することができる。
かかる待ち状態制御は、排他的要求に応じたXI応答信
号を受信するための遅延を除去し、かくて待ち状態にあ
るCPUが所有しているデータ・ユニットへのアクセス
速度を向上させることができるのである。
【0032】本発明の第2の特徴は、XIデイレクトリ
・エントリの各々に設けられたEXエージ・ビットにあ
る。このEXエージ・ビットは、XIデイレクトリ・エ
ントリの各々にある一のフラグ・ビットとして与えられ
る。XIデイレクトリ・エントリの各々にあるEXエー
ジ・ビットがオン状態にセットされるのは、当該エント
リに関連する排他的に所有されたデータ・ユニットが、
一のCPUのL1キャッシュからその置換制御部により
エージング・アウトされて(但し、XIデイレクトリか
らはエージング・アウトされない)、当該CPUがその
L1キャッシュ・エントリを異なるデータ・ユニットの
ために使用することができるようになる場合である。本
発明の第2の特徴に係る知見は、当該データ・ユニット
がXIデイレクトリで表わされている限り、(当該L1
キャッシュからエージング・アウトされた当該データ・
ユニットのEX所有権を取得するために行われた)XI
信号のオーバーヘッドを、任意のCPUによる当該デー
タ・ユニットの次のL1アクセスについては反復する必
要がない、という点にある。XIデイレクトリ・エント
リ内にあるEXエージ・ビットがオフ状態にセットされ
るのは、任意のCPUがそのL1キャッシュのために当
該データ・ユニットを次にアクセスするような場合であ
る。EXエージ・ビットがオン状態にある間、任意のC
PUは、XI信号のオーバーヘッドなしに、XIデイレ
クトリで表わされている当該データ・ユニットを取出す
(とともにそのEX所有権を取得する)ことができる。
もし、当該データ・ユニットに関連するEXエージ・ビ
ットがXIデイレクトリ内でオン状態にセットされてい
る間に、任意のCPUが当該データ・ユニットの条件付
き読取専用取出しを行えば、エージング・アウトしたC
PUだけが当該データ・ユニットをそのEX所有権とと
もに取得するのに対し、他の全てのCPUはそのL1キ
ャッシュ内で当該データ・ユニットをRO所有権ととも
に取得し、かくて当該データ・ユニットはXIデイレク
トリ内でRO所有権にデモートされることになる。
【0033】本発明の第3の特徴は、L1キャッシュ内
にある各データ・ユニットのサイズを、XIデイレクト
リ・エントリの各々が表わす(L3メイン・メモリ又は
L2キャッシュ内にある)各データ・ユニットのサイズ
の約数とすることができる、という点にある。XIデイ
レクトリで表わされるデータ・ユニットのサイズは、L
1キャッシュ内にあるデータ・ユニットのサイズの整数
倍(例えば、2倍)である。L1デイレクトリ内にある
データ・ユニットよりも大きなデータ・ユニットをXI
デイレクトリ内で表わすようにすると、XIデイレクト
リ・エントリの数が少なくなるから、XIデイレクトリ
のサイズを小さくすることができ、かくてXI信号の量
が減少してシステムの性能を向上させることができるの
である。
【0034】コヒーレンス制御は、かかるデータ・ユニ
ットのサイズの相違を反映する。かくて、XIデイレク
トリ・エントリの各々にあるCPIDフィールドが表わ
す大きなデータ・ユニットに対するCPUの所有権は、
L1キャッシュ内にある小さなデータ・ユニットの所有
権をも表わす。従って、もし一のCPUがそのL1キャ
ッシュ内にある小さなデータ・ユニットのEX所有権を
有するのであれば、この小さなデータ・ユニットに関連
する大きなデータ・ユニットを表わす処の、XIデイレ
クトリ・エントリ内にあるCPIDフィールドは、この
L1キャッシュ内にある小さなデータ・ユニット(当該
小さなデータ・ユニットは、XIコヒーレンス制御のた
めに、大きなデータ・ユニットの一の約数部分、例えば
1/2である)の所有権をも表わす。この大きなデータ
・ユニットの残りの約数部分については、他のL1キャ
ッシュ内のEX所有権を同時に表わすことはできない。
なぜなら、XIデイレクトリ・エントリの各々では、E
X所有権を有する唯1つのCPUを識別するためのCP
ID値しか表わせないからである。しかし、複数の小さ
なデータ・ユニットは、互いに異なる複数のL1キャッ
シュ内でRO所有権を有することもある。もし、一のデ
ータ・ユニットの異なる約数部分が複数のL1キャッシ
ュ内でRO所有権を有するものとして存在し、そして一
のCPUが任意の約数部分についてEX所有権を要求す
れば、当該データ・ユニットの全ての約数部分は他のL
1キャッシュ内で無効化され、当該データ・ユニットは
XIデイレクトリ・エントリ内で要求元CPUのCPI
D値で以て排他的とマークされ、そして要求された約数
部分だけが要求元CPUのL1キャッシュにEX所有権
を有するものとして取出される。
【0035】XIデイレクトリ・エントリの各々では、
異なる複数の約数部分(約数部分の各々はL1キャッシ
ュ内にあるデータ・ユニットのサイズに等しい)を排他
的に所有する処の、複数のCPUを多重的に表わすこと
ができる。しかし、これはかなりのオーバーヘッドを必
要とするにも拘わらず、これに見合ったシステム性能の
十分な向上を得られないことがある。もし、このような
多重的な表示が望まれるのであれば、各々がEX/RO
ビットを有する複数のCPIDフィールドを、XIデイ
レクトリ・エントリの各々に設け、CPIDフィールド
及びEX/ROビットの各対を、当該XIデイレクトリ
・エントリに関連するデータ・ユニットのそれぞれの約
数部分に関連づけることができる。
【0036】本発明の第4の特徴は、ストア・スルー型
の複数のL1キャッシュと一のXIデイレクトリを一の
L2キャッシュとともに用いる本発明の一のバージョン
について、「条件付き読取専用」取出し要求の積極的な
読取専用取出しを行うことにある。「条件付き」型の取
出し要求とは、ストアされ又は単に取出されることが予
めコミットされていない処の、データ・ユニットの全て
の取出し要求である。殆どの要求は、ストアよりも取出
しを行うためのものである。従来技術は、「条件付き排
他的」取出しを用いることにより、既存の条件に依存し
て、取出されたデータ・ユニットをそのEX所有権又は
RO所有権とともに戻すようにしているが、EX所有権
を与える方向にバイアスさせている。本発明は、従来技
術では条件付き排他的取出しとして処理されたものを、
積極的に読取専用取出しとして処理することに利点を見
出すものである。条件付き読取専用取出しとは、既存の
条件に依存して、取り出されたデータ・ユニットをその
RO所有権又はEX所有権とともに戻すが、RO所有権
を与える方向にバイアスさせるというものであり、具体
的には、かかる要求がXIデイレクトリでミスしない限
り、又はXIデイレクトリが要求元CPUによる当該デ
ータ・ユニットのEX所有権を表わさない限り、当該デ
ータ・ユニットをそのRO所有権とともに戻す(従来技
術のシステムが、「条件付き排他的」取出し要求に応じ
て一のデータ・ユニットをEX所有権とともに戻すの
は、XI信号に応じて当該データ・ユニットがEX所有
権又はRO所有権を有することが検出される場合であ
る)。この特徴は、ストア・スルー型のL1キャッシュ
を用いるシステムでは有利である。なぜなら、もしスト
ア・スルー型のL1キャッシュ内に置かれているEX所
有権を有する一のデータ・ユニットが、その後にRO所
有権に変更されるのであれば、如何なるキャスト・アウ
トも起こり得ないからである(これと対照的に、ストア
・イン型のL1キャッシュでは、従前のEX所有権が維
持されている間に当該データ・ユニットが一のストア動
作の結果として変更されている状況で、「RO所有権へ
のデモート」と呼ばれるXI動作がおこなわれる場合に
は、キャスト・アウトが生ずることになる)。
【0037】
【実施例】図1及び図8の多重処理システムでは、N台
のCPUの各々は、1つの専用キャッシュをそれぞれ備
えるように図示されているが、この専用キャッシュは1
つの命令キャッシュ及び1つのデータ・キャッシュから
成ることもある。データ・キャッシュだけがストア要求
を受取ることができる。命令キャッシュは読取専用であ
って、CPUがこれにストアすることはできない。
【0038】CPUはその命令を専用の命令キャッシュ
からアクセスし、そのオペランド・データを専用のデー
タ・キャッシュからアクセスする。データ・キャッシュ
及び命令キャッシュは、これらに関連するCPUが要求
したデータ・ユニットを取出すために用いられる。
【0039】図1のシステムの場合、L1データ・キャ
ッシュの各々はストア・スルー(ST)型キャッシュで
あり、図1のシステムについては、これをL1キャッシ
ュと呼ぶ。もし、一の命令にストアが行われるのであれ
ば、かかるストアはL2キャッシュ内にあるこの命令の
データ・ユニットにおいてだけ行われ、そして当該デー
タ・ユニットが読取専用のデータ・ユニットとして要求
元CPUの命令キャッシュに取出される。
【0040】命令キャッシュは、読取専用であるからス
トア要求を受取らないが、(データ・キャッシュと同様
に)XI信号についてはこれを受取る。一の命令キャッ
シュ内にある一のデータ・ユニットのEX所有権を、任
意のデータ・キャッシュが必要とする場合、当該命令キ
ャッシュに対するXI信号が、(データ・キャッシュと
同様に)当該命令キャッシュ内にある当該データ・ユニ
ットの無効化を制御する。また、任意のデータ・キャッ
シュが排他的に所有している一のデータ・ユニットを一
の命令キャッシュが取出そうとする場合には、当該デー
タ・キャッシュに対するXI信号が生ぜられて、当該デ
ータ・キャッシュ内でRO所有権への変更が行われるこ
とがある。
【0041】図1のシステムはL2キャッシュを備えて
いるが、図8のシステムはL2キャッシュを備えていな
い。従って、L1キャッシュの次の記憶階層レベルは、
図1のシステムではL2キャッシュであるが、図8のシ
ステムではL3メイン・メモリである。図1及び図8の
XIデイレクトリは、任意のL1キャッシュでミスする
取出し要求によってアクセスされる。
【0042】図1のXIデイレクトリは、L2デイレク
トリとしても機能し、そのため任意のL1キャッシュで
ミスする取出し要求を受取るとともに、各CPUからの
全てのストア要求を受取る。ストア・コマンドは、取出
し要求のようには所有権の変更を制御しない。なぜな
ら、任意のデータ・ユニットへストアを行うには、一の
取出し要求によって該当するキャッシュから当該データ
・ユニットを取得した後に、当該データ・ユニットを対
象とするストア・コマンドを発行しなければならないか
らである。
【0043】図1のシステムにおいて、もし一のCPU
要求がXIデイレクトリ内で検出されなければ、XIデ
イレクトリは「XIミス」を生成する。図1のシステム
の場合、この「XIミス」はL2ミスでもあるから、要
求されたアドレスがL3メイン・メモリに送信され、か
くて要求されたデータ・ユニットがL3メイン・メモリ
から取出されてメモリ・バスを介してL2キャッシュ
に、さらにはこの要求を発行した要求元CPUのL1キ
ャッシュに送信される。L1キャッシュ内にあるデータ
・ユニット(以下「L1データ・ユニット」という)
は、当該データ・ユニットを包含する処の、L2キャッ
シュ内にあるデータ・ユニット(以下「L2データ・ユ
ニット」という)と同じサイズでなくてもよい。かく
て、L1データ・ユニットの各々は、L2データ・ユニ
ットの約数か、又はL2データ・ユニットと同じサイズ
とすることができる。
【0044】一旦、かかるデータ・ユニットがL1キャ
ッシュ及びL2キャッシュに取出されると、マークされ
たデータ・バイトを当該データ・ユニットにストアする
ためのコマンドが発行され、このストア動作が完了され
る。このように、全てのストア・コマンドに先行する一
の取出し要求は、必要とするデータ・ユニットをL1キ
ャッシュ及びL2キャッシュの双方において取得するた
めのものである。
【0045】XIデイレクトリの構成要素である優先順
位回路は、L2キャッシュに対する全ての要求、即ち全
てのCPU及び全てのI/O装置からの取出し要求及び
ストア・コマンドを受取る。この優先順位回路は、XI
デイレクトリをアクセスするために、一度に1つの要求
又はコマンドを選択する。選択された要求又はコマンド
内の上位アドレス・フィールドは、XIデイレクトリ内
の一の列(コングルエンス・クラス)を選択し、そして
一のアドレス部分と一致すると、割当てられた任意のX
Iデイレクトリ・エントリ及び関連するL2キャッシュ
内のデータ・ユニットの位置が検出される。これらの事
項は、セット・アソシアティブ型のキャッシュにおいて
周知であるから、本明細書ではその詳細を省略する。本
明細書において、L1キャッシュ及びL2キャッシュの
各々は、4ウェイのセット・アソシアティブ型キャッシ
ュであると想定する。
【0046】図8のシステムでは、L1キャッシュから
の各要求はL3メイン・メモリの制御装置に送信され、
そこでL2キャッシュに要求が行われるのと同様に処理
される。L3メイン・メモリ内にある各データ・ユニッ
ト(以下「L3データ・ユニット」という)のサイズ
は、前述のL2データ・ユニットと同じサイズ、即ちL
1データ・ユニットのサイズの倍数とすることができ
る。
【0047】XIデイレクトリ・エントリの各々が図2
に示す複数のフィールドをそれぞれ保持するのに対し、
L1デイレクトリ・エントリの各々は図3に示す複数の
フィールドをそれぞれ保持する。XIデイレクトリ・エ
ントリの各々が保持するCPU識別子(CPID)フィ
ールドは、例えば3ビットを有する。これらのビットが
組合わせ的に表わす一の値(例えば、1ないし6のどれ
か)は、L2キャッシュ及びL3メイン・メモリ内にあ
る関連するデータ・ユニットの現在の排他的所有者であ
る処の、システム内の1つのCPUを識別することがで
きる。このCPIDフィールドが表わす値0は、L2キ
ャッシュ及びL3メイン・メモリ内にある関連するデー
タ・ユニットのRO所有権を表わす。
【0048】現要求が、それに該当するXIデイレクト
リ・エントリを検出しない場合は、XIミスが起きる。
この場合、XIデイレクトリの置換制御部は、この現要
求がアドレスしているセット・アソシアティブ列内の一
のエントリ(現在のLRUエントリ)を割当てる。ミス
した要求は、要求済みのデータ・ユニットを取出すため
に、L3メイン・メモリに送信される。
【0049】図1のシステムにおいて、もし要求された
アドレスがXIデイレクトリ内のアドレスされた列で検
出されなければ、通常の置換制御部が、各セット・アソ
シアティブ列(コングルエンス・クラス)ごとに一の置
換エントリを割振る。この場合において、各列内の4つ
のセット・アソシアティブ・エントリのうち最も長く使
用されなかったエントリ(LRUエントリ)が、L3メ
イン・メモリから取出されねばならない要求済みの一の
データ・ユニットに割振るために、この列において次に
割当て可能な候補エントリとなる。一般に、この候補エ
ントリは現に無効なエントリであるが、もし無効なエン
トリが存在しなければ、各列内の4つのエントリからL
RUエントリが選択される。
【0050】要求済みの一のデータ・ユニットをL3メ
イン・メモリから取得し且つこれをL2キャッシュ内の
新たに割振られた一のエントリに関連するキャッシュ・
スロット(一のキャッシュ・データ・アレイ内にある関
連するスロット)にストアする前に、(XIデイレクト
リ・エントリの現内容により表わされる)当該スロット
内に存在する全ての古いデータ・ユニットが変更済みで
あるか否かを決定するために、当該XIデイレクトリ・
エントリを検査しなければならない。こうするため、新
たに要求されたデータ・ユニットを表わすように当該X
Iデイレクトリ・エントリの内容を変更する前に、当該
XIデイレクトリ・エントリ内にある変更(CH)ビッ
トの状態を検査する。もし、この古いデータ・ユニット
が(その変更ビットによって示されるように)変更済み
であれば、これは古いデータ・ユニットの最新のバージ
ョンであるから、新たに要求されたデータ・ユニットを
L2キャッシュ内の関連する位置にストアする前に、L
3メイン・メモリ内の同じアドレスにキャスト・アウト
しなければならない。
【0051】図1のL2キャッシュは、図示のように4
つのITRLV(インターリーブ)セクションを用いて
内部的にインターリーブされている。これらのセクショ
ンの各々は、L3メイン・メモリへ至る別個のバスをそ
れぞれ有する。同様に、L3メイン・メモリも、L3記
憶制御装置に接続された4つのITRLV(インターリ
ーブ)セクションから成るように図示されている。しか
し、たとえL2データ・ユニットとL3データ・ユニッ
トが同じサイズであったとしても、L3メイン・メモリ
を構成するインターリーブ・セクションのサイズを、L
2キャッシュを構成するインターリーブ・セクションの
それと同じにする必要はない。例えば、L3データ・ユ
ニットの各々を、L3メイン・メモリを構成する4つの
インターリーブ・セクションのうち任意のセクションに
保持させることができる。他方、(L3データ・ユニッ
トと同じサイズを有する)L2データ・ユニットの各々
を、L2キャッシュを構成する4つのインターリーブ・
セクションに保持させることができるからである。但
し、この場合において、L2キャッシュを構成する各イ
ンターリーブ・セクションが、L2データ・ユニットの
四分の一ずつをそれぞれ保持するものとする。L2デー
タ・ユニットの各々を、L2キャッシュを構成する4つ
のインターリーブ・セクション内で順次にアクセスする
には、当該L2データ・ユニットのうち、アクセスされ
ているL2要求のバイト・アドレスに対応する約数部分
を有するインターリーブ・セクションでアクセスを開始
すればよい。しかし、L2キャッシュを構成するインタ
ーリーブ・セクションのサイズとして、L2データ・ユ
ニットのサイズの任意の約数を用いることができる。
【0052】図10のシステムも、図1のシステムと実
質的に同じように動作する。しかし、図10のシステム
が、複数のL2データ・ユニットをXIデイレクトリで
同時に処理可能であるのに対し、図1のシステムは、L
2データ・ユニットの各々がL2キャッシュ内で4ウェ
イにインターリーブされているとしても、一度に唯1つ
のL2データ・ユニットしか処理可能であるに過ぎな
い。図10のXIデイレクトリは、アドレスに応じて互
いに異なる複数のハードウェア・セクション(0ないし
R)に分割されていて、これらの異なるセクションを複
数の要求が並行してアクセスできるようになっている。
XIデイレクトリを構成するセクションの数は、2の倍
数であることが望ましい。各セクションが、それ自身の
アドレス・サブセット内にある一の要求をアクセスする
と同時に、他のセクションは、それぞれのアドレス・サ
ブセット内にある他の要求をアクセスすることができ
る。XIデイレクトリ・セクションの各々に関連して設
けられた優先順位回路セクション0ないしRは、全ての
CPU及びI/O装置によって供給されている全ての要
求アドレスに加えて、メモリ・システム内で内部的に供
給されている全ての要求アドレスを受取る。各優先順位
回路セクションは、受取ったこれらの要求アドレスをフ
ィルタして、一度に1つの要求アドレスをその関連する
XIデイレクトリ・セクションに引渡す。かかるフィル
タリングは、優先順位選択プロセスの間に、それぞれに
割当てられた要求アドレス・サブセットにおいて一のア
ドレスを選択し且つ引渡すことによって行われる。
【0053】図10に示すXIデイレクトリ・セクショ
ンの各々が、それぞれに関連するL2キャッシュ・セク
ションを有する場合、L2キャッシュ・セクションの各
々は、関連する優先順位回路セクションから出力された
アドレスによりアドレス可能なL2データ・ユニットを
保持するようになっている。もし、L2キャッシュがこ
のシステム内で使用されなければ、複数のセクションに
分割された図10のXIデイレクトリは、図10のシス
テムがその異なるセクションで複数のXI信号を並列に
処理し、従って幾つかのケースについてはシステム性能
をかなり改善することができる点を除くと、基本的には
図8のシステムのように動作する。
【0054】このように、図1及び図8には、本発明を
包含し得る多重処理システムが概略的に示されている。
各システムはN台のCPUを含み、各CPUはそれ専用
のストア・スルー型のL1キャッシュ及びこのL1キャ
ッシュに付随するL1デイレクトリを有する。各CPU
は、要求されたデータがそのL1キャッシュ内で使用可
能であることを表わすL1ヒットを得る限り、そのL1
キャッシュ内で取出し要求をアクセスする。前述のよう
に、図8のシステムは、L2キャッシュを有さない。
【0055】要求されたデータがそのL1キャッシュ内
で使用可能でなければ、L1ミスに応じて、次の記憶階
層レベルに取出し要求が与えられる。当該次の記憶階層
レベルは、図1のシステムではL2キャッシュであり、
図8のシステムではL3メイン・メモリである。この場
合、取出し要求は、要求レジスタ(REQ 1〜REQ
N)のうちミスした要求元CPUに関連する要求レジ
スタに入れられる。当該CPU要求は、要求されたデー
タ・ユニットのメイン・メモリ・アドレスと、当該デー
タ・ユニットについて要求されている所有権の型(EX
所有権か又はRO所有権のどちらか)とを含んでいる。
【0056】一のデータ・ユニットがL2キャッシュか
ら一のCPUのL1キャッシュに取出された後、当該C
PUは、当該データ・ユニットにデータをストアするた
めのストア・コマンドを作成することができる。通常の
場合、ストア・コマンドは、L1キャッシュ又はL2キ
ャッシュ内の当該データ・ユニットに全体として重ね書
きしないで、(例えば、多数のバイトを含むことがあ
る)当該データ・ユニットに対し、マークされた変更バ
イトだけを書込む。このような書込み方法、即ち所定の
ストア・コマンドが変更すべき一のデータ・ユニットの
部分を表わすために、このストア・コマンド内のマーカ
・ビットを用いるという書込み方法は、この技術分野で
は周知である。L2キャッシュへの書込みは、前述と同
じように行うか、又は当該データ・ユニットがL1キャ
ッシュに書込まれた直後に、当該データ・ユニットの全
体をL1キャッシュからL2キャッシュにコピーするこ
とによって行うことができる。
【0057】また、I/O要求レジスタ(REQ K)
は、メモリに対する全てのI/O要求を受取る。図1の
システムでは、かかるI/O要求はL2キャッシュをア
クセスするようになっている。なぜなら、データ・ユニ
ットの最新のバージョンがL2キャッシュに存在する場
合、これをI/O要求によって変更することができるか
らである。もし、I/O要求に該当するデータ・ユニッ
トがL2キャッシュ内になければ、当該データ・ユニッ
トをL2キャッシュ内でアクセスせずに、これをL3メ
イン・メモリ内でアクセスする。
【0058】要求レジスタ(REQ 1〜REQ K)
は、これらが保持する要求をXIデイレクトリの優先順
位回路にそれぞれ供給する。これらの要求は、当該優先
順位回路によって機械サイクル又はサブサイクル単位で
順序付けられ、一度に1つの要求がXIデイレクトリに
供給されて、これをアクセスするために用いられる。
【0059】図5には、XIデイレクトリ202に関連
する複数のハードウェア制御部が示されている。XIデ
イレクトリ202は、図1の実施例がXIデイレクトリ
・エントリの各々にEX/ROビットを必要としない点
を除けば、図1又は図8のXIデイレクトリと同様のも
のとすることができる。L1レジスタ201は、図1又
は図8の要求レジスタ(REQ 1〜REQ N)のど
れかに相当し、絶対アドレス・フィールドと、3ビット
のコマンド・フィールド(ビット0:2)と、CPID
フィールドとを有する。この絶対アドレス・フィールド
は、要求されたデータ・ユニットのメイン・メモリ・ア
ドレスを保持する。CPIDフィールドは、要求元CP
UのCPID(CPU識別子)を保持し、7台までのC
PUをサポートするように3ビット(0:2)の長さを
持っている。3ビットのコマンド・フィールドは、4種
類のコマンド、即ち読取専用要求、排他的要求、条件付
き読取専用(条件付き共有)要求及び「EX所有権への
プロモート」要求のどれかを与える。
【0060】ヒット/ミス・ロジック206は、現に要
求されているデータ・ユニットが、図1及び図8のXI
デイレクトリ内で表わされているか否かを指示する。X
Iヒットが生ずるのは、かかるデータ・ユニットが完全
に表わされていて、XIデイレクトリ又は関連するデー
タ・ストア内で所有権を変更する必要なしに、アクセス
を行うことができる場合である。他方、XIミスが生ず
るのは、かかるデータ・ユニットが表わされておらず、
そのため少なくともアクセスされたXIデイレクトリ・
エントリにおいて、所有権の表示を変更することが必要
となる場合である。
【0061】図1のシステムでは、ヒット/ミス・ロジ
ック206によって活動化される取出し制御部221
は、XIヒットに応じて、要求されたデータ・ユニット
をL2キャッシュ内でアクセスさせ、XIミスに応じ
て、要求をL3メイン・メモリに送って要求されたデー
タ・ユニットのアクセスを行わせる。他方、図8のシス
テムでは、ヒット/ミス・ロジック206によって活動
化される取出し制御部221は、XIヒット及びXIミ
スの両方について要求されたデータ・ユニットをL3メ
イン・メモリ内でアクセスさせる。
【0062】例えば、XIデイレクトリ202で表わさ
れたデータ・ユニットをキャスト・アウトし且つ他のデ
ータ・ユニットを取出す場合のように、アクセスされた
XIデイレクトリ・エントリ又はL2キャッシュ・エン
トリの内容を完全に変更することが必要であれば、次の
記憶階層レベルをアクセスしなければならない。
【0063】XI生成制御部211(図4に詳細に示
す)は、アクセスされたXIデイレクトリ・エントリ内
にあるCPIDフィールドからXI信号を生成するとと
もに、当該CPIDフィールドによって識別されたCP
UにXI信号を送信するためにそれぞれのCPUへ至る
XIバス212A〜212Nを選択する。図1及び図8
のシステムでは、(個別的な)特定のXI信号が、選択
されたXIバスを介して前記CPIDフィールドによっ
て識別されたCPUにだけ送信される。特定のXI信号
の各々は、一の要求元の識別子(IDタグ)及び一のX
Iアドレスを有する。後者のXIアドレスは、前記CP
IDフィールドによって識別されたCPUのL1キャッ
シュ内で無効化すべきデータ・ユニットのアドレスであ
るか、又はその所有権を変更すべきデータ・ユニットの
メイン・メモリ・アドレス(又は表示)である。図1の
実施例においてだけ、包括的なXI信号が、全てのXI
バスを介して全てのCPUに送信される。
【0064】XI応答制御部231(図4に詳細に示
す)は、特定のXI信号に応答する処の、前記CPID
フィールドによって識別されたCPUからのXI応答信
号を受取る。このXI応答信号は、先にXIデイレクト
リ内で所有権の衝突を検出させ且つこのXI信号を生ぜ
しめる基となった(他のCPU、I/O又はキャスト・
アウトからの)一のアクセス要求の処理を、XIデイレ
クトリの諸制御部が完了し得るタイミングを制御する。
この場合、SCEは、アクセスされたXIデイレクトリ
・エントリ内にある所有権の表示を変更することができ
る。これは、当該XIデイレクトリ・エントリ内にある
所有権の表示の変更だけを必要とするか、又はキャスト
・アウト要求の場合には、新たにアクセスされた一のデ
ータ・ユニットを表わすように、当該XIデイレクトリ
・エントリ内に完全に新しい内容を書込むことを必要と
することもある。
【0065】例外的な一のXI応答信号が表わし得る事
項には、一のXI信号を受信したCPUがその要求時に
一のデータ・ユニットの所有権を引渡すことができず、
そのためSCE内の諸制御部が当該XI信号の再送を必
要とするという事項、又は当該CPUが当該データ・ユ
ニットの所有権を引渡した時点で当該CPU内でマーク
されていた部分にストアを遂行するべく当該データ・ユ
ニットの所有権を取戻すことを必要とするという事項が
ある。
【0066】図5には、図8の実施例をサポートするよ
うにSCE内に設けられる待ち状態ベクトル(WSV)
制御部261が示されている。WSVは、システム内の
CPUにそれぞれ対応する8ビットから成る。対応する
CPUが待ち状態に入ると、当該CPUはそのWSVビ
ットをオン状態にセットし、当該CPUが待ち状態から
離れると、当該CPUはそのWSVビットをオフ状態に
リセットする。しかし、この待ち状態の表示がこれに対
応するCPUの真の状態を表わさないことがある短時間
のウィンドウを回避するために、WSV制御部261と
それぞれのCPUの間では、一の要求/応答プロトコル
が用いられる。
【0067】図4は、図1及び図8の各CPU及びSC
E内に設けられるハードウェア・パイプラインを示して
いる。図4のストア・パイプラインは、任意のCPUか
らのストア・コマンドを、L2キャッシュに接続するた
めのものである。図4で用いられている「CPx」とい
う表記は、SCEからのXI信号を現に受信しつつある
N台のCPUのうち任意のものを表わす。
【0068】各CPUからのストア・コマンドは、その
L1キャッシュ及びL2キャッシュの両方でストア動作
を行わせる。L1キャッシュ内のストア動作は、通常の
ものでよい。図4のストア・キュー26は、そのCPx
からストア・コマンドをFIFO順に受取り、これらの
ストア・コマンドを図4のストア・スタック27に送信
する。ストア・スタック27は、L2キャッシュ及びL
3メイン・メモリ用の制御装置であるSCE内に配置さ
れており、その内部にある最も古いストア・コマンドを
L2キャッシュの優先順位回路に出力して、XIデイレ
クトリ及びL2キャッシュ内のアクセスを行わしめる。
ストア・キュー26及びストア・スタック27内にある
ストア・コマンドの各々は、単一のストア動作用のアド
レス及びデータを保持している。
【0069】ストア・スタック27内にある複数のスト
ア・コマンドの処理順序を表わすFIFO順は、インポ
インタ(INPTR)レジスタ及びアウトポインタ(O
UTPTR)レジスタによって維持される。インポイン
タ・レジスタは、ストア・キュー26からの次のストア
・コマンドを受取るべきストア・スタック27内の現エ
ントリを指定する。アウトポインタ・レジスタは、L2
キャッシュに出力すべきストア・スタック27内の最も
古いストア・コマンドを指定する。インポインタ・レジ
スタは、ストア・スタック27内の現エントリに一のス
トア・コマンドが受取られるたびに増分され、アウトポ
インタ・レジスタは、ストア・スタック27から一のス
トア・コマンドが出力されるたびに増分される。インポ
インタ・レジスタとアウトポインタ・レジスタとは、ス
トア・スタック27が次のエントリのスペースを決して
切らさないように、どちらもストア・スタック27内で
循環する。この型のスタック・ポインタ制御は、通常の
ものである。
【0070】CPz、CORn及びIOy要求コマンド
・レジスタ1z、1n及び1yは、L1キャッシュに対
するCPU取出し要求、L2キャッシュに対するLRU
置換要求及びL2キャッシュに対するI/O要求をそれ
ぞれ受取る。各要求コマンド(即ち、要求元)は、要求
されたデータ・ユニットのメイン・メモリ・アドレス
(又はその表示)及び要求された所有権の型(EX所有
権又はRO所有権)を、要求レジスタに入れる。レジス
タ1z、1n及び1yは、異なる型の要求レジスタを表
わす。この実施例では、そのうちの1つのレジスタだけ
が、任意の時点でL2キャッシュへの要求を行ってい
る。これらのレジスタのうち1つのレジスタがL2キャ
ッシュの優先順位回路によって一の時点で選択され、こ
れにより現アクセス・サイクルの間に一のXIデイレク
トリ・エントリ及び関連するデータ・ユニットを保持す
る一のL2キャッシュ・スロットをアクセスするために
用いられる。
【0071】かくて、CPz要求レジスタ1zは、L2
キャッシュに対する任意のCPU要求を受取る処の、任
意のL2要求レジスタを表わす。添字「z」はそのCP
Uが要求元CPUであることを表わし、他の添字「x」
は一のXI信号を受信しつつある任意のCPUを表わす
のに用いる。
【0072】CORn(キャスト・アウト)レジスタ1
nは、L2キャッシュに対する現キャスト・アウト要求
を受取る複数のキャスト・アウト要求レジスタのうち1
つを表わす。添字「n」は、キャスト・アウト・アドレ
スを受取るようにL2キャッシュの置換制御部(図示せ
ず)によって割当てられた、複数のキャスト・アウト・
レジスタのうちの1つを表わす。一のCPU要求がXI
デイレクトリでヒットしない(即ちミスする)場合、一
のL2キャッシュ・エントリの内容を、通常の方法で置
換することができる。
【0073】IOyレジスタ1yは、複数レジスタのう
ちXIデイレクトリに対するその現I/O要求としてL
2キャッシュの優先順位回路によって選択される任意の
レジスタを表わす。L2キャッシュ内でヒットするI/
O要求だけが、本実施例によって用いられる。他方、ヒ
ットしない(即ち、XIデイレクトリ内でミスする)I
/O要求に該当するデータ・ユニットは、L2キャッシ
ュには取出されないが、次にL3メイン・メモリ内で通
常の方法でアクセスされる。
【0074】レジスタ1z、1n又は1yのうちのどれ
が現に選択されていようとも、そのアドレスは、比較回
路28に供給される。また、ストア・スタック27内に
ある全てのストア・コマンドのアドレスが比較回路28
に並列に供給されるから、比較回路28は、ストア・ス
タック27に保持されている全てのストア・コマンドの
アドレスと、L2キャッシュに供給されている処の、現
に選択された要求アドレス(CPz、CORn又はIO
y)とを同時に比較する。
【0075】SCE内のアクセス回路2は、現にアクセ
スされたXIデイレクトリ・エントリ内にあるCPID
フィールドの値を検査する。もし、このCPIDフィー
ルドの値が1〜6の範囲にあれば、これは、現に選択さ
れたXIデイレクトリ・エントリに関連するデータ・ユ
ニットについて、当該CPIDフィールドの値に対応す
るCPUがEX所有権を有することを表わす。他方、こ
のCPIDフィールドの値が0であれば、現に選択され
たXIデイレクトリ・エントリによって表わされたデー
タ・ユニットについて、RO所有権を検出したことにな
る。
【0076】もし、EX所有権がアクセス回路2によっ
て検出されれば、これに応じて特定のXI信号が生成さ
れて、前記CPIDフィールドの値に対応する1つのC
Pxにだけ送信される。この実施例では、1〜6の範囲
にある一のCPID値は、現に選択されたXIデイレク
トリ・エントリに関連するデータ・ユニットのEX所有
権を有する処の、システム内の1つのCPUを表わす。
他方、0に等しいCPID値は、当該データ・ユニット
がRO所有権を有し、従って読取専用であることを表わ
す。
【0077】アクセス回路2によって開始された特定の
XI信号は、前記アクセスされたXIデイレクトリ・エ
ントリ内にあるCPIDフィールドの値に対応するCP
Uにだけ送信される。この特定のXI信号は、その受信
CPUのL1キャッシュ内にある該当するデータ・ユニ
ットのメイン・メモリ・アドレス(又はその表示)と、
XI信号の型(特定又は包括的)を表わす標識と、この
L2要求コマンド(要求元)の識別子(IDタグ)とを
含んでいるから、SCEは、受信したXI応答信号につ
いてどの要求元が責任を負うかを決定することができ
る。また、XI信号の型を表わす標識は、アドレスされ
たデータ・ユニットを無効化すべきか、又はRO所有権
に変更すべきかを表わす。SCE内では、特定のXI信
号を送信すると、XI応答待ちモード・ラッチ8が「X
I待ちモード」にセットされる。特定のXI信号によっ
て生ぜられたこのXI待ち状態は、当該XI信号を送信
したXI要求元からのXI応答信号をSCEが受信する
ときに解消する。
【0078】包括的なXI信号は、要求元CPUを除く
全てのCPUによって検出され、それぞれのXIキュー
の全てに挿入される。包括的なXI信号が、要求元CP
Uを除く全てのCPUに送信される場合、これを受信す
るCPUは、アドレスされたデータ・ユニットがその内
部にあればこれを無効化するだけで、如何なるXI応答
信号をも供給しない。任意のCPxが一のXI信号を受
信する場合、CPxによる全てのストア・コマンドの生
成が終了され、そして全ての現命令の実行が抑止される
から、CPxによる当該XI信号の処理完了時に、この
現命令を再実行しなければならない。XIキュー21
が、XI信号内の無効化アドレスを比較回路22にゲー
トする場合、比較回路22は、このXI信号内の無効化
アドレスと、CPxのストア・キュー26に現に置かれ
ている全てのアドレスとを並列に比較して、一致信号
(H)又は不一致信号(G)を生成する。XI信号内の
無効化アドレスは、CPxのL1キャッシュ内にあるエ
ントリのうちこの無効化アドレスに等しいアドレスを有
するエントリを無効化するのに用いられる。
【0079】比較回路22からの一致信号(H)は、ス
トア送信回路23を活動化して、ストア・キュー26内
にある任意のストア・コマンドを無効化アドレスにマー
クする。次に、ストア送信回路23は、XI応答回路2
4を活動化して、一のXI応答信号をSCEに送信さ
せ、かくてSCE内のXI応答待ちモード・ラッチ8を
リセットしてXI待ちモードを終了させる。
【0080】他方、比較回路22からの不一致信号
(G)は、ストア・キュー26の内部に無効化アドレス
に関連するストア・コマンドが存在しないことを表わす
から、この不一致信号(G)は、XI応答回路24を活
動化して、そのXI応答信号をSCEに送信させ、かく
てSCE内のXI応答待ちモード・ラッチ8をリセット
してXI待ちモードを終了させる。
【0081】リセット状態にあるXI応答待ちモード・
ラッチ8は、待ちモード終了信号を出力し、これを比較
回路28に与えて、現在のL2要求アドレスを、CPx
のストア・スタック27内に現に置かれている全てのア
ドレスと、単一サイクルの並列比較動作の間に比較させ
る。比較回路28からANDゲート29へ与えられる一
致信号(C)は、インポインタ・レジスタの内容を、イ
ンポインタ捕捉レジスタ10に入力させる。このレジス
タ10は、現CPUストア・コマンドの入力に使用可能
な、ストア・スタック27内の現位置を捕捉する。この
ようにして捕捉されたインポインタ・レジスタの値は、
CPxからの最後のストア・コマンドを保持し得る処
の、CPxのストア・スタック27内にある最後の位置
を表わす。他方、アウトポインタ・レジスタの値は、C
Pzからの最も古いストア・コマンドを保持するストア
・スタック27内の位置を表わす。このアウトポインタ
・レジスタの値が増分されるのは、そのストア・コマン
ドを定常的に出力してL2キャッシュを更新するためで
ある。アウトポインタ・レジスタの値をこのように増分
すると、アウトポインタ・レジスタに保持されるポイン
タ・アドレスが循環されて、最後には前述のようにして
捕捉されたインポインタ・レジスタの値に等しくなる。
【0082】ポインタ比較回路15は、捕捉されたイン
ポインタ・レジスタの値と、L2キャッシュにストア・
コマンドを出力するためにアウトポインタ・レジスタが
増分されるときの値とを比較する。アウトポインタ・レ
ジスタの値がインポインタ・レジスタの値に一致しない
限り、ポインタ比較回路15は、不一致信号(D)を供
給してストア完了モード・ラッチ13をセットし、かく
てストア・スタック27の出力動作がまだ完了されてい
ないことを指示する。最終的にアウトポインタ・レジス
タの値とインポインタ・レジスタの値とが一致すると、
ポインタ比較回路15は、一致信号(E)を供給して、
ストア完了モード・ラッチ13をリセットし、かくて全
ての可能なストア・コマンドがストア・スタック27か
らL2キャッシュに出力されたことを指示する。
【0083】アクセス回路2が、現にアクセスされたL
2キャッシュ・エントリについてRO所有権が存在する
ことを検出したときに、CPzからの現CPU要求がE
X所有権を要求していることがあり得る。ボックス4
は、CPzの現要求を検出し、これがEX所有権又はR
O所有権のどちらを必要としているのかを決定する。も
し、CPzの要求がEX所有権を必要としているのであ
れば、特定のXI信号を通知した上で、CPzのL1デ
イレクトリのうち当該XI信号内のアドレスに関連する
有効なL1デイレクトリ・エントリ内のEX/ROビッ
トをオン(EX)状態にセットするとともに、他の全て
のCPUにあるL1デイレクトリのうち当該XI信号内
のアドレスに関連する有効な全てのL1デイレクトリ・
エントリを全般的に無効化することが必要となる。
【0084】全てのIOy要求を処理するに当たり、ア
クセス回路2は、包括的なXI信号を送信するだけで、
任意のCPUがL2キャッシュ内で任意のI/Oアクセ
スと干渉するのを阻止する。
【0085】かくて、アクセス回路2からの包括的なX
I信号が用いられるのは、複数のCPUのうち該当する
データ・ユニットを保持し得る任意のCPUからのXI
応答信号が、必要でないような場合である。なぜなら、
このような場合には、どのCPUもストア・コマンドを
実行しておらず、従って高々L1キャッシュの無効化だ
けが必要となるに過ぎないからである。
【0086】もし、比較回路28から(CPxからのス
トア・コマンドがストア・スタック27内に存在しない
ことを表わす)不一致信号が線12に供給されるか、又
はアクセス回路2から線6に与えられる(RO所有権を
表わす)RO表示が現にアクセスされたXIデイレクト
リ・エントリ内に存在すれば、ボックス7、16及び2
0のアクセス動作が用いられる。これらの全てのケース
では、現データ・ユニットのRO所有権はストアが行わ
れることを禁止するから、未処理のストア・コマンドは
存在しないことになる。
【0087】アクセスされたXIデイレクトリ・エント
リ内にある変更ビットは、キャスト・アウト制御の場合
に必要となるに過ぎず、従ってCORn要求についてだ
け検出される。CPz要求及びIOy要求については、
キャスト・アウトは行われないが、その代わり、アクセ
スされたXIデイレクトリ・エントリに関連するデータ
・ユニットは、当該エントリ内の変更ビットの状態と無
関係に(従って、これを検出せずに)、CPz要求及び
IOy要求の要求元に送信される。かくて、変更アクセ
ス回路7は、CORn要求についてのみ、現にアクセス
されたXIデイレクトリ・エントリ内にある変更ビット
を検出する。即ち、変更アクセス回路7は、CPz要求
又はIOy要求については用いられない。
【0088】しかし、CORn要求の場合であっても、
もし変更ビットがオフ状態にあることを変更アクセス回
路7が検出すれば、(当該データ・ユニットはL3メイ
ン・メモリ内にあるものと同じであるから)キャスト・
アウトは不要であり、かくてデイレクトリ・エントリ更
新手段20は、当該XIデイレクトリ・エントリの内容
に、それぞれのCORn要求を生ぜしめたCPz要求か
らの情報を重ね書きして、当該XIデイレクトリ・エン
トリを直ちに更新することができる。
【0089】かくて、CORn要求について、現在のX
Iデイレクトリ・エントリ内にある変更ビットがオン状
態にあることを変更アクセス回路7が検出すれば、キャ
ッシュ・データ・アクセス回路16が必要となり、キャ
ッシュ・データ・アレイからこの要求に関連する更新済
みのデータ・ユニットをアクセスした後に、(キャスト
・アウト用の)当該データ・ユニットをスイッチ17を
介して次の記憶階層レベルであるL3メイン・メモリに
送信する必要がある。CPz要求又はIOy要求につい
ては、キャッシュ・データ・アクセス回路16は、キャ
ッシュ・データ・アレイから、かかる要求に関連するデ
ータ・ユニットを直ちに取得し、CPz要求の場合は当
該データ・ユニットをスイッチ18を介してCPzに送
信するか、又はIOy要求の場合は当該データ・ユニッ
トをスイッチ19を介して要求元チャネルIOyに送信
することができる。
【0090】一のCORn要求に関連するデータ・ユニ
ットが変更済みでないことが検出される場合、デイレク
トリ・エントリ更新手段20が、当該CORn要求のた
めに直ちに用いられる。しかし、デイレクトリ・エント
リ更新手段20が一のCPz要求のために用いられてい
るのであれば、デイレクトリ・エントリ更新手段20に
よるXIデイレクトリ・エントリの内容の更新は、キャ
スト・アウトが完了するまで延期される(なぜなら、当
該キャスト・アウトが完了する前にシステム障害が生ず
る場合には、システム回復のために、当該XIデイレク
トリ・エントリの最初の内容が必要となることがあるか
らである)。
【0091】キャッシュ・データ・アクセス回路16の
タイミング遅延は、ストア完了モード・ラッチ13から
の出力Fによって制御される。この出力Fが得られるの
は、ストア完了モード・ラッチ13がポインタ比較回路
15からの一致信号(E)によってリセットされる場合
(即ち、インポインタ・レジスタの値とアウトポインタ
・レジスタの値が等しくなる場合)である。ポインタ比
較回路15がその一致信号(E)を出力する時点で、要
求済みのデータ・ユニットについてストア・スタック2
7内に置かれている全てのCPxストア・コマンドは、
L2キャッシュにフラッシュ・アウトされている筈であ
る。なぜなら、この時点で、アウトポインタ・レジスタ
の値は、ストア・スタック27の出力動作用に捕捉され
たインポインタ・レジスタの開始値に再循環していて、
次にキャッシュ・データ・アクセス回路16を開始させ
ることができるからである。
【0092】流れ図:図6A〜図6D、図7A〜図7E 要求元CPUは、その取出しコマンドの各々において、
その取出し要求が排他的取出し、読取専用取出し又は条
件付き読取専用取出しのどれであるかを示す。L1デイ
レクトリ及びXIデイレクトリは、要求元CPUがどの
型の取出しコマンドを供給しているかに依存する方法
で、各要求を処理する。排他的取出しとは、要求元CP
UのL1キャッシュ内に、要求されたデータ・ユニット
をそのEX所有権とともに取得するものである。読取専
用取出しとは、要求元CPUのL1キャッシュ内に、要
求されたデータ・ユニットをそのRO所有権とともに取
得するものである。条件付き読取専用取出しとは、要求
元CPUのL1キャッシュ内に、要求されたデータ・ユ
ニットを、その要求の時点で存在する条件に依存して、
EX所有権又はRO所有権とともに取得するものであ
る。
【0093】図6A〜図6D(以下「図6」と総称)の
実施例と図7A〜図7E(以下「図7」と総称)の実施
例との間には、幾つかの原理的な相違が存在する。その
1つは、CPIDフィールドの表示が異なることであ
る。図6の実施例では、CPIDフィールド内の複数ビ
ットは単一の値を表わす。この値は、関連するデータ・
ユニットを排他的に所有している特定のCPUを表わす
か、又は関連するデータ・ユニットの包括的なRO所有
権を表わすようになっている。他方、図7の実施例で
は、CPIDフィールド内の複数ビットの各々は、関連
するデータ・ユニットの特定のCPUによるEX所有権
及びRO所有権をそれぞれ個別に表わすようになってい
る。このような相違が存在するため、図7の実施例は、
包括的なXI信号を用いない。なぜなら、システム内の
各CPUが有する特定の所有権は、任意のデータ・ユニ
ットの全てのRO所有権並びにそのEX所有権について
知られているからである。図6の実施例は、そのCPI
Dフィールドが唯1つのCPUしか識別できないという
制約を課されているために、包括的なXI信号を用いる
必要がある。唯1つのCPUを識別することは、CPU
のEX所有権を識別するには十分であるが、2つ以上の
CPUが同時に所有可能な任意のデータ・ユニットのR
O所有権を識別するには不十分である。
【0094】「XI信号」の通知は、その受信CPUの
動作を中断させるが、XI信号内のアドレスに該当する
データ・ユニットのコピーを、それぞれのL1キャッシ
ュ内に有する各CPUにとって、「XI信号」の通知は
システム内のデータ・コヒーレンスを維持するために不
可欠である。図7の実施例では、「特定のXI信号」に
よって、最も効率的なXI信号の通知が行われる。他
方、図6の実施例で用いられる「包括的なXI信号」の
不利点は、XI信号内のアドレスに該当するデータ・ユ
ニットを持たず、従ってXI信号の通知によって影響さ
れるべきでないCPUの動作を中断させることである。
多くの場合、一のシステムでは、XI信号内のアドレス
に該当するデータ・ユニットを有するCPUよりも、か
かるデータ・ユニットを有さないCPUの方が多い。
【0095】図6及び図7のプロセスは、L1ミスを生
ずる異なる型のCPU取出し要求について、図1又は図
10のシステムに適用される。図7のプロセスは、類似
する型の取出し要求を処理するために図6のプロセスで
利用される特徴に加えて、追加の特徴を含んでいる。本
明細書で記述した技術的背景に徴して、これらのプロセ
スの内容は概して自明である。図6及び図7の各々は、
ステップ301又は401に入ることによって、その取
出し要求をそれぞれ開始させる。ステップ301又は4
01は、この現取出し要求が、当該要求のアドレスを用
いてアクセスされたXIデイレクトリ・エントリ(以下
「アクセスされたXIデイレクトリ・エントリ」と呼
ぶ)において、XIヒット又はXIミスのどちらを生じ
させたかを決定する処理ステップを表わす。XIヒット
が生ずるのは、要求元CPUが要求したアドレスと前記
アクセスされたXIデイレクトリ・エントリ内のアドレ
スとが一致し、しかも要求元CPUが要求した所有権と
前記アクセスされたXIデイレクトリ・エントリ内で表
わされている所有権とが一致する場合である。XIヒッ
トが生ずると、ステップ301又は401から左側の経
路が取られ、XIミスが生ずると、ステップ301又は
401から右側の経路が取られることになる。これらの
流れ図を比較すると、XIヒットの経路は互いに実質的
に異なるが、XIミスの経路は類似している。
【0096】図6のプロセスが利用するもう1つの原理
は、L1デイレクトリ内で有効な全てのデータ・ユニッ
トが、XIデイレクトリ(L2デイレクトリ)内でも有
効であることを必要としない、というものである。図7
のプロセスが利用する原理はこれとは異なっていて、L
1デイレクトリ内で有効な全てのデータ・ユニットが、
XIデイレクトリ(L2デイレクトリ)内でも有効であ
ることを必要とする。図6の実施例では、最も長い間使
用されなかった(LRU)L1データ・ユニットを、複
数のCPUが連続して取出す(しかしストアしない)こ
とができるという利点を有するが、当該データ・ユニッ
トに対する後続の排他的取出し要求が生ぜられる場合
は、当該データ・ユニットに任意のストアが行われる前
に、包括的なXI信号を全てのCPUに通知せねばなら
ないという不利点を有する。図7の実施例は、最も長い
間使用されなかった(LRU)L1データ・ユニット
を、複数のCPUが連続して取出すことができないとい
う不利点を有するが、当該データ・ユニットに対する後
続の排他的取出し要求が生ぜられる場合であっても、X
I信号の通知を全く必要としないという利点を有する。
なぜなら、XIデイレクトリ内で表わされていないデー
タ・ユニットは、どのL1キャッシュ内にも存在しない
からである。
【0097】排他的取出し 図6A及び図7Aの各々は、XIデイレクトリをL2デ
イレクトリとしても利用する図1又は図10のシステム
において、XIデイレクトリに対する排他的取出し要求
を実行する動作ステップをそれぞれ表わしている。排他
的取出しとは、要求元CPUに対し、一のデータ・ユニ
ットをそのEX所有権とともに与えるための取出し要求
である。この排他的取出しが行われるのは、例えばシン
ク・オペランド用の一のデータ・ユニットをアクセスす
る取出し要求のように、取出されたデータ・ユニットに
対しストアが行われることを、要求元CPUが知ってい
る場合である。
【0098】ステップ301がXIヒットを検出する
と、ステップ302で、ヒット経路に入る。他方、ステ
ップ301がXIミスを検出すれば、ステップ331及
び332で、ミス経路に入る。ステップ331は、この
XIミスに応じてXIデイレクトリの置換手段を活動化
して、現要求によってアドレスされているセット・アソ
シアティブ列内の現LRUエントリを割当てる。他方、
ステップ332は、L3メイン・メモリをアクセスし
て、要求されたデータ・ユニットを取出す。
【0099】図6Aのヒット経路において、ステップ3
02は、アクセスされたXIデイレクトリ・エントリ内
にあるCPIDフィールドを検査して、当該フィールド
の値がRO状態を表わしているか否かを決定する。例え
ば、このCPIDフィールドは3ビットを有していて、
8つの異なる値0〜7を表わすことができる。7台のC
PUから成るシステムを想定する場合、値0はRO所有
権を表わすのに用いることができ、値1〜7はCPU1
〜7によるEX所有権をそれぞれ表わすのに用いること
ができる。もし、検査されたCPIDフィールドの値が
0であれば、ステップ302の肯定出口が取られてステ
ップ311へ進む。ステップ311では、包括的なXI
信号をSCE内で生成し、これを図5に示すXIバス2
12の全てを介してシステム内の各CPUに設けられた
XIキューに送信して、このXI信号内のアドレスに対
応するデータ・ユニットが任意のL1キャッシュ内にあ
れば、当該データ・ユニットを無効化する。
【0100】ステップ312は、アクセスされたXIデ
イレクトリ・エントリ内にあるCPIDフィールドを、
要求元CPUのCPID値にセットして、要求元CPU
による関連するデータ・ユニットのEX所有権を表わ
す。
【0101】ステップ321は、XIデイレクトリ内の
アクセスされた列にある次の割当て可能なエントリを選
択するために、XIデイレクトリのLRUフィールドを
更新する。ステップ322は、L3メイン・メモリから
取出されたデータ・ユニットを、要求元CPUのL1キ
ャッシュ及びL2キャッシュに戻す。かくて、この排他
的取出し動作が完了する。
【0102】しかし、アクセスされたXIデイレクトリ
・エントリ内にあるCPIDフィールドの値が1〜7の
どれかであれば、要求されたデータ・ユニットのEX所
有権を、他のCPUが有することがある。この場合、ス
テップ302の否定出口が取られてステップ303に進
み、このCPIDフィールドの値が要求元CPUのCP
ID値であるか否かを検査する。この実施例では、L1
データ・ユニットのサイズは、L3又はL2データ・ユ
ニットのサイズの約数である。しかし、アクセスされた
XIデイレクトリ・エントリ内にあるCPIDフィール
ドは、当該エントリに関連するデータ・ユニットをその
L1キャッシュ内に保持するCPUが、当該データ・ユ
ニットの全ての約数部分の所有者であることを表わす。
かくて、ステップ303で、要求元CPUのCPID値
が前記アクセスされたXIデイレクトリ・エントリ内に
あることが検出される場合には、要求元CPUが当該デ
ータ・ユニットを既に排他的に所有していること、しか
し要求元CPUのL1キャッシュがL3又はL2データ
・ユニットの要求された約数部分を有していないことが
判る。従って、この場合には当該データ・ユニットの所
有権を変更することは必要ないから、ステップ321に
入り、そこでXIデイレクトリ内のアクセスされた列の
LRUフィールドを更新する。次のステップ322は、
当該データ・ユニットの所要の約数部分を、L2キャッ
シュから要求元CPUのL1キャッシュに戻す。
【0103】しかし、ステップ303で、前記アクセス
されたXIデイレクトリ・エントリが、要求元CPUの
CPID値と等しくない値1〜7を有することが判れ
ば、要求されたデータ・ユニットのEX所有権を、他の
CPUが有することになる。ここで、ステップ303
は、当該データ・ユニットを現に所有する他のCPUと
要求元CPUとの間にXI衝突があることを決定する。
この場合、ステップ303の否定出口が取られてステッ
プ304へ進む。ステップ304では、SCEは特定の
XI信号を発行し、これをXIバス212のうち唯1つ
のバスを介して、前記アクセスされたXIデイレクトリ
・エントリ内にあるCPIDフィールドの値によって識
別されたCPUに送信する。この特定のXI信号は、当
該識別されたCPUのL1キャッシュ内にあるデータ・
ユニットのうち前記XI信号内のアドレスに該当するデ
ータ・ユニットを無効化するために、当該識別されたC
PUのXIキューに挿入される。
【0104】この特定のXI信号を衝突CPU(前記C
PIDフィールドの値に対応するCPU)が処理してい
る間、ステップ309は、無効化が行われて前記衝突は
もはや存在しなくなったという前記衝突CPUからのX
I応答信号を、SCEが待機していることを表わしてい
る。
【0105】次のステップ312は、前記アクセスされ
たXIデイレクトリ・エントリを更新するため、このエ
ントリ内にあるCPIDフィールドを、要求元CPUの
CPID値にセットする。ステップ321は、当該XI
デイレクトリ・エントリに対する現アクセスを反映する
ように、XIデイレクトリのLRUフィールドを更新す
る。次いで、ステップ322は、L2キャッシュ内にあ
るL2データ・ユニットのうち要求された約数部分をア
クセスして、これを要求元CPUのL1キャッシュに送
信する。このようにして、排他的取出し動作が完了す
る。
【0106】図6Aのミス経路は、ステップ331及び
332を同時に実行することを必要とする。ステップ3
31で、現要求のためにXIデイレクトリのLRUエン
トリを選択した後、ステップ333に入る。ステップ3
33では、置換用に割当てられた当該LRUエントリ内
にある有効(V)ビットの状態を検査して、その更なる
検査が必要であるか否かを決定する。もし、この有効ビ
ットが無効状態にセットされていれば、ステップ333
の否定出口を介してステップ351へ進む。なぜなら、
この割当て済みのLRUエントリが無効であれば、XI
デイレクトリに対する現要求を表わすように、この内容
を直ちに置換することができるからである。
【0107】ステップ351に入るのは、このLRUエ
ントリの内容を置換することができるまで待機するため
であるが、当該LRUエントリの内容が無効であること
を表わすステップ333からステップ351に入る場合
は、当該LRUエントリの内容を直ちに置換することが
できる。
【0108】しかし、ステップ333が、このLRUエ
ントリの内容が有効であることを検出すれば、その内容
は、(当該LRUエントリ内にあるCPIDフィールド
の値によって表わされるように)他のCPUのL1キャ
ッシュ内にEX所有権又はRO所有権付きのコピーを有
し得る処の、当該LRUエントリに関連するデータ・ユ
ニット(以下「LRUデータ・ユニット」という)を表
わす。ここで留意すべきは、このLRUデータ・ユニッ
トは、要求されたデータ・ユニットとは異なるデータ・
ユニットであって、これらを混同してはならない、とい
うことである。
【0109】次に、ステップ333の肯定出口からステ
ップ340に進み、そこで前記LRUエントリ内にある
CPIDフィールドを検査して、適切なXI信号(特定
のXI信号又は包括的なXI信号)を送信する。特定の
XI信号は、当該LRUエントリ内にある非0値のCP
IDフィールドによって識別された、EX所有権を有す
るCPUに送信される。当該LRUエントリ内にあるC
PIDフィールドの値が0であることを検出すると、包
括的なXI信号が、全てのCPUに送信される(こうす
ることにより、このLRUデータ・ユニットのRO(共
有)コピーを、任意の数のCPUが有することができ
る)。このLRUデータ・ユニットをRO所有権へデモ
ートすると、当該LRUデータ・ユニットが、ステップ
352において、L2キャッシュ内で後に置換されると
しても、当該LRUデータ・ユニットをL1キャッシュ
内に留まらせることが可能となる。このような動作は、
L1デイレクトリ内で有効な全てのデータ・ユニット
が、XIデイレクトリ(L2デイレクトリ)内でも有効
であることを必要としない、という図6のプロセスが利
用する原理を反映したものである。他方、図7のプロセ
スが利用する原理は、L1デイレクトリ内で有効な全て
のデータ・ユニットが、XIデイレクトリ(L2デイレ
クトリ)内でも有効であることを必要とする。図6の実
施例は、最も長い間使用されなかった(LRU)L1デ
ータ・ユニットを、複数のCPUが連続して取出す(し
かしストアしない)ことができるという利点を有する
が、当該データ・ユニットに対する後続の排他的取出し
要求が生ぜられる場合には、当該データ・ユニットに任
意のストアが行われる前に、包括的なXI信号を全ての
CPUに通知せねばならないという不利点を有する。他
方、図7の実施例は、最も長い間使用されなかった(L
RU)L1データ・ユニットを、複数のCPUが連続し
て取出すことができないという不利点を有するが、当該
データ・ユニットに対する後続の排他的取出し要求が生
ぜられる場合であっても、XI信号の通知を全く必要と
しないという利点を有する。というのは、当該データ・
ユニットはL2キャッシュ内には存在せず、従ってどの
L1キャッシュ内にも存在しないからである。
【0110】次のステップ342は、XIデイレクトリ
のLRUエントリ内にある変更ビットの状態を検査し
て、当該エントリに関連するLRUデータ・ユニットが
変更されているか否かを決定する。もし、このLRUデ
ータ・ユニットが変更されていなければ、当該LRUデ
ータ・ユニットと全く同じコピーがL3メイン・メモリ
内に現に存在し、従ってそのキャスト・アウトは必要で
はないから、ステップ342の否定出口が取られてステ
ップ351に進む。ステップ351では、前記LRUエ
ントリを直ちに置換することができるから、これに続い
て、直ちにステップ352に入りこれを実行する。
【0111】しかし、ステップ342が、前記LRUエ
ントリ内にある変更ビットがオン状態にあることを検出
すると、その肯定出口が取られてステップ343に進
み、そこで当該LRUエントリに関連するLRUデータ
・ユニットをL2キャッシュからL3メイン・メモリへ
キャスト・アウトする。なぜなら、このLRUデータ・
ユニットは、唯一の更新済みバージョンであって、現に
要求されたデータ・ユニットの情報で重ね書きすること
によって当該LRUデータ・ユニットの内容が破棄され
る前に、これをL3メイン・メモリにキャスト・アウト
しなければならないからである。
【0112】次のステップ351は、キャスト・アウト
動作が失敗したときの潜在的な回復動作を可能にするL
RU情報が不要になるまで、XIデイレクトリのLRU
エントリ内に、新しい要求に関する情報を書込むことを
延期させる。最後に、ステップ352を実行して、取出
されたデータ・ユニットをL2キャッシュへストアし、
当該データ・ユニット用のXIデイレクトリ・エントリ
であるLRUエントリに新しい要求元CPUのCPID
値を(以前の内容に重ね書きして)書込むとともに、X
Iデイレクトリ及びL1デイレクトリにある新しい要求
のエントリを有効にするために有効ビットをオン状態に
セットする。
【0113】ステップ301が通知するXIミスは、要
求されたデータ・ユニットが前記アクセスされたXIデ
イレクトリ・エントリ内で表わされていないこと、従っ
て任意のCPUによる要求されたデータ・ユニットの所
有権が表わされていないこと(即ち、この実施例では、
要求されたデータ・ユニットがL2キャッシュ内に存在
しないこと)を指示する。ステップ332を始端とする
並列経路は、ステップ331を始端とする経路の実行と
並行して、要求されたデータ・ユニットをL3メイン・
メモリから取出すとともに、その他の動作を実行する。
即ち、ステップ332は、L3メイン・メモリに取出し
要求を送信するが、ステップ338は、他の全てのCP
Uに包括的なXI信号を送信して、それらのL1キャッ
シュ内にある(当該XI信号内のアドレスに対応する)
要求されたデータ・ユニットのコピーを無効化させる。
これに続き、ステップ351及び352が実行されて、
取出したデータ・ユニットをL2キャッシュの関連する
エントリに挿入させるとともに、XIデイレクトリ内に
ある当該要求のエントリを完成させる。
【0114】ステップ337は、要求されたデータを用
いて要求元CPUができるだけ早くその処理を開始する
ことができるように、L3メイン・メモリで取出しが行
われると直ちに動作して、要求されたデータ・ユニット
の約数部分を、L3メイン・メモリからバイパス経路を
介して要求元CPUのL1キャッシュに送信する。
【0115】図7Aに示されている実施例の排他的取出
しステップは、図6Aに示されている実施例のそれと似
ているが、同じではない。それらの基本的な相違は、L
1デイレクトリ内で有効な全てのデータ・ユニットがX
Iデイレクトリ(L2デイレクトリ)内でも有効である
という、図7のプロセスが利用する前述の原理に基づく
ものである。この原理を実現するには、L2キャッシュ
内にある一のデータ・ユニットを無効化する際に、当該
データ・ユニットを、全てのL1デイレクトリ内でも無
効化することが必要となる。図6Aで行われているよう
に、L1キャッシュ内にある一のデータ・ユニットをR
O所有権にデモート(変更)するとともに、L2キャッ
シュ内にある当該データ・ユニットを無効化すること
は、図7Aの原理に違反するのである。
【0116】図7Aで用いる参照番号が全て数字4で始
まるのに対し、図6Aで用いる参照番号は全て数字3で
始まる。図6Aと図7Aの双方に示されている参照番号
の右側の2つの数字が互いに同じであれば、そのステッ
プは、図6Aと図7Aで同じ動作をする。しかし、これ
らの図面に示されている参照番号の右側の2つの数字が
互いに同じであっても、それに続いて添字が付されてい
れば、異なる原理が適用される。
【0117】従って、図7Aのステップ440A及び図
6Aのステップ340の後には、無効化の結果としてL
2キャッシュからLRUデータ・ユニットがそれぞれ除
去されるとしても、図7Aのステップ440Aが、L1
デイレクトリ内にあるLRUデータ・ユニットの全ての
コピーを無効化するのに対し、図6Aのステップ340
は、当該データ・ユニットをRO所有権にデモートする
のである。
【0118】図7Aは、図6Aのミス経路にあるステッ
プ338と同等のステップを有さない。図7AのXIミ
スは、要求されたデータ・ユニットがL2キャッシュ内
で使用不能であることを保証し、そして図7Aのプロセ
スが利用する原理の下では、全てのL1キャッシュが当
該データ・ユニットの如何なる約数部分をも有さないこ
とを保証する。
【0119】図7Aのヒット経路は、図6には存在しな
い新しい特徴が設けられている点を除くと、図6Aのヒ
ット経路に似ている。かかる新しい特徴は、ヒットした
XIデイレクトリ・エントリ内にあるEXエージ・ビッ
トを使用したり(ステップ501)、要求元CPUの待
ち状態ビットを使用すること(ステップ502)を含ん
でいる。
【0120】図7Aのヒット経路はステップ402Aで
開始し、そこでアクセスされたXIデイレクトリ・エン
トリ内にあるEX/ROビットの状態を検査する。
【0121】ステップ402Aが、アクセスされたXI
デイレクトリ・エントリ内にあるEX/ROビットがオ
ン(EX)状態にあることを検出すれば、その肯定出口
が取られてステップ403Aへ進む。ステップ403A
は、アクセスされたXIデイレクトリ・エントリ内にあ
る、要求元CPUに割当てられたCPIDビットをアク
セスしこれを検査する。もし、この要求元CPUに対応
するCPIDビットがオフ状態にあれば、要求元CPU
のL1キャッシュは、要求されたデータ・ユニットのど
の約数部分も有していない。かくて、ステップ403A
の否定出口が取られてステップ501へ進み、アクセス
されたXIデイレクトリ・エントリ内にあるEXエージ
・ビットの状態を検査する。もし、このEXエージ・ビ
ットがオン状態にあれば、これは、どのCPUのL1キ
ャッシュにも、前記アクセスされたXIデイレクトリ・
エントリに関連するデータ・ユニットが現に存在しない
こと、そしてXI信号を通知するというオーバーヘッド
なしに、要求元CPUが当該データ・ユニットを取得し
得ることを表わす。次にステップ421Aに入り、前記
アクセスされたXIデイレクトリ・エントリ内にあるE
Xエージ・ビットをオフ状態にし、このアクセスを反映
するようにXIデイレクトリのLRUフィールドを更新
し、要求元CPUに対応するCPIDビットをオン状態
にし、他の各CPUに対応するCPIDビットをオフ状
態にするとともに、EX/ROビットをオン(EX)状
態にセットする。次いで、ステップ422は、当該デー
タ・ユニットの要求された約数部分を、要求元CPUの
L1キャッシュに送信する。
【0122】図7Eは、一のXIデイレクトリ・エント
リ内にあるEXエージ・ビットをセットするプロセスを
示す。最初のステップ460は、L1デイレクトリの置
換手段による信号通知動作を表わしており、XIデイレ
クトリに関連するEXエージング制御に対し、このL1
キャッシュからエージング・アウトされている(恐らく
は、このL1キャッシュ内で置き換えられる)一のデー
タ・ユニットのアドレスを通知する。次のステップ46
1は、アドレスされたデータ・ユニットについて存在す
るEX/ROビットの状態を、EXエージング制御が検
出することを表わす。もし、EXエージング制御が、ア
クセスされたXIデイレクトリ・エントリ内にあるEX
/ROビットがオフ(RO)状態にあることを検出すれ
ば、ステップ461の否定出口が取られてステップ46
3へ進む。ステップ463では、EXエージング制御
は、エージング・アウトを通知したCPUのCPIDビ
ットをオフ状態にするから、このCPIDビットは、当
該CPUのL1キャッシュがアドレスされたデータ・ユ
ニットをもはや有さないことを表わす。
【0123】もし、EXエージング制御が、アクセスさ
れたXIデイレクトリ・エントリ内にあるEX/ROビ
ットがオン(EX)状態にあることを検出すれば、ステ
ップ461の肯定出口が取られてステップ462へ進
む。ステップ462では、EXエージング制御は、当該
XIデイレクトリ・エントリ内にあるEXエージ・ビッ
トをオン状態にし、そのCPIDビットはオン状態のま
まに留まる。かくて、このEXエージ・ビットがオン状
態になる場合、前記エージング・アウトを行ったCPU
に対応するCPIDビットはオン状態のままに留まり、
他のCPUのL1キャッシュがL2データ・ユニット又
はその約数部分の1つを取出すまでオフ状態にならな
い。
【0124】ステップ460は、任意の約数部分がL1
キャッシュからエージング・アウトされた後は、そのデ
ータ・ユニットが排他的又は読取専用的に所有されてい
たかに拘わらず、全ての約数部分がこのL1キャッシュ
内でもはや使用できなくなる場合を表わす。もし、排他
的に所有された一のデータ・ユニットが任意のL1キャ
ッシュからエージング・アウトされ且つそのL2データ
・ユニットの一の約数部分がこのL1キャッシュに残さ
れているのであれば、このL1又はL2データ・ユニッ
トのどちらも、他の任意のCPUによるアクセスのため
に使用することができない。もし、エージング・アウト
された約数部分のデータ・ユニットが読取専用的に所有
され且つそれがL1キャッシュに残されたL2データ・
ユニットの一の約数部分を有するならば、ステップ46
3において、そのCPIDビットはオフ状態にされな
い。例えば、排他的な一の約数部分をエージング・アウ
トする際、同じL1キャッシュ内に他の任意の約数部分
が残っていれば、このL2データ・ユニット及びL1キ
ャッシュ内にある任意の約数部分を、RO所有権に変更
するか、又はそれらを無効化することができる。なぜな
ら、エージング・アウト・プロセスが、他の任意の約数
部分をアクセスする可能性は殆ど存在しないからであ
る。
【0125】前述のプロセスを制御する一の方法は、同
じL2データ・ユニットの他の任意の約数部分について
L1キャッシュを検査するため、このL2データ・ユニ
ットのアドレスを用いて他の任意の約数部分を探索する
ことである。更にもう1つの方法は、XIデイレクトリ
の制御部から1又は複数の無効化信号を送信させて、こ
のL1キャッシュ内に存在し得る全ての約数部分をアド
レスすることである。
【0126】ステップ402Aが、アクセスされたXI
デイレクトリ・エントリ内にあるEX/ROビットがオ
フ(RO)状態にあることを検出する場合、当該XIデ
イレクトリ・エントリに関連するデータ・ユニットの任
意の約数部分のコピーを、他のCPUが有することがあ
り得るので、ステップ402Aの否定出口が取られてス
テップ414Aへ進む。ステップ414Aは、(他のC
PUに対応する)CPIDビットを検査して、他のCP
Uのうち当該データ・ユニットのコピーを有するCPU
を決定するとともに、オン状態にあることを検出したC
PIDビットに対応するCPUにだけ、特定のXI信号
を送信する。次いで、ステップ421A及び422に入
り、そこで前述の動作を実行する。ステップ421A
は、前のステップ414Aで他のCPUに送信した特定
のXI信号から生ずるXI応答信号を待たずに、実行す
ることができる。
【0127】もし、ステップ403Aで、要求元CPU
のCPIDビットがオンであることを検出すれば、この
要求元CPUは要求されたデータ・ユニットの一の約数
部分を有するが、当該約数部分は、現に要求されている
約数部分ではない。というのは、もしこの要求された約
数部分が要求元CPUのL1キャッシュ内にあれば、X
Iデイレクトリに対し現要求がなされていなかったから
である。この場合、XI信号を通知することに係るオー
バーヘッドは必要ではなく、ステップ403Aの肯定出
口が取られてステップ421A及び422へ進み、そこ
で前述の動作が実行される。
【0128】しかし、ステップ501で、アクセスされ
たXIデイレクトリ・エントリ内にあるEXエージ・ビ
ットがオフ状態にあることを検出すれば、他のCPUの
L1キャッシュ内に要求されたデータ・ユニットが存在
し得るから、ステップ501の否定出口が取られてステ
ップ406Aへ進む。ステップ406Aは、ステップ4
14AのようにCPIDビットを検査する。しかし、前
のステップ402A及び403Aが、他のCPUがEX
所有権を有することを表わすから、他のCPUに対応す
る唯1つのCPIDビットだけがオン状態にあることを
検出する。ステップ406Aは、(オン状態にあるCP
IDビットに対応する)他のCPUに特定のXI信号を
送信して、要求されたデータ・ユニットのコピーを無効
化する。次いで、ステップ502に入る。
【0129】ステップ502は、要求元CPUに関連す
る「待ち状態ビット」の状態を検査する。CPUの各々
は、XIデイレクトリの諸制御部に関連する一の待ち状
態ビットを有し、これが待ち状態又は動作状態のどちら
にあるかを表わすために、それぞれの待ち状態ビットを
セット又はリセットする。待ち状態にある一のCPU
は、原則的に、EX所有権又はRO所有権とともにデー
タ・ユニットを有する必要がない。但し、当該CPUが
後に待ち状態から動作状態に移行するときの、データ・
ユニットの再取出しを省略するために、当該データ・ユ
ニットを有する場合を除く。多くの場合、CPUは待ち
状態で相当の時間を消費することが判っている。
【0130】本発明に関連して認識された知見は、待ち
状態にある他のCPUによって排他的に所有されている
一のデータ・ユニットを、要求元CPUが取得すること
ができ、しかもそうするに当たり、ステップ406Aの
間に他のCPUに送信された特定のXI信号から生ずる
XI応答信号を待機する必要がない、ということであ
る。このような動作を行うため、特定のXI信号を受信
したCPUの待ち状態ビットがオン状態にあるとき、ス
テップ502の肯定出口が取られてステップ421Aへ
進む。
【0131】もし、ステップ502が、特定のXI信号
を受信したCPUの待ち状態ビットがオフ状態にあるこ
とを検出すれば、要求元CPUはステップ409に入
り、そこでステップ406Aの間に他のCPUに送信さ
れた特定のXI信号から生ずるXI応答信号を待機しな
ければならない。
【0132】本発明は、前述の待ち状態動作にいくらか
似た動作を、異なるPR/SM(プロセッサ資源/シス
テム管理)区画へのCPUスイッチングに関しても提供
することができる。PR/SMは、システム/370系
のデータ処理システムで利用するためにIBM社により
提供されている市販のプログラムであり、米国特許第4
843541号明細書に記述されている。PR/SM
は、データ処理システムのメモリ、I/O及びCPU資
源を、複数の論理区画に分割して、各論理区画がそれ自
身のオペレーティング・システムをそれぞれ所有し、し
かも任意の論理区画内で実行中のオペレーティング・シ
ステムが他の論理区画内で実行中のオペレーティング・
システムに干渉しないようにすることができる。複数の
論理区画の間で、一のCPUを時分割式に共有すること
ができる。
【0133】本発明に関連して認識された他の知見は、
PR/SMにより異なる論理区画にスイッチされた他の
CPUがEX所有権を有している一のデータ・ユニット
を、要求元CPUが一層短い時間で取得することができ
る、ということである。このことは、待ち状態にある他
のCPUがEX所有権を有しているデータ・ユニット
を、一層短い時間で取得することに類似している。これ
らの両方のケースにおいて、要求元CPUは、一のデー
タ・ユニットのEX所有権を有している一のCPUへX
I信号を送信した後、当該CPUからのXI応答信号を
待機せずに、当該データ・ユニットを直ちに取得するこ
とができる。こうするためには、システム内の各CPU
ごとに1組のPR/SM区画標識ビット(図5参照)を
設けて、当該CPUが割当てられている現論理区画を指
示することが必要である。例えば、7つまでの論理区画
を有するシステムでは、各CPUごとに3ビットを割当
てるようにすれば、2進コード値1〜7により現論理区
画の番号として7つの中の1つを表わしたり、又は2進
コード値0により論理区画が現に割当てられていないこ
とを表わすことができる。
【0134】各CPUは、それぞれの待ち状態ビットの
セッティングを維持しなければならないのと全く同様
に、それぞれのPR/SM区画標識ビットのセッティン
グを維持して正しいコードを維持しなければならない。
【0135】従って、図7Aにおいて、PR/SMシス
テム内の一の要求元CPUがステップ502を実行し
て、XI信号を受信する(オン状態のCPIDビットに
対応する)他のCPUの待ち状態ビットがオンであるか
否かを検査する場合、要求元CPUは、当該他のCPU
が待ち状態にないことを条件として、更にステップ50
3を実行する。ステップ503は、当該他のCPUが、
要求元CPUと異なるPR/SM論理区画内にあるか否
かを検査する。もし、当該他のCPUが異なる論理区画
内にあれば、要求元CPUは、当該他のCPUがXI応
答信号を送信するのを待機しないで、要求されたデータ
を直ちに取得してこれを使用することができる。
【0136】読取専用取出し 図6B及び図7Bの各々は、XIデイレクトリをL2デ
イレクトリとしても用いる図1又は図10のシステムに
おいて、XIデイレクトリに対する読取専用取出し要求
を実行するための動作ステップをそれぞれ表わしてい
る。読取専用取出しは、要求されたデータ・ユニットの
コピーのRO所有権を、要求元CPUに与える取出し要
求である。読取専用取出しが要求されるのは、(例え
ば、ソース・オペランドをアクセスするか、又はアドレ
ス変換テーブル内のデータ・ユニットをアクセスする取
出し要求のように)要求されたデータ・ユニットにスト
アが行われないことを一のCPUが知っている場合であ
る。
【0137】読取専用取出しを示す図6Bのミス経路
は、排他的取出しを示す図6Aのミス経路と基本的に同
じであるが、前者では、ステップ352の代わりにステ
ップ352Aを用い、そしてステップ338を用いない
ことが異なる。ステップ352とステップ352Aとの
間の主な相違点は、ステップ352では、CPIDフィ
ールドを要求元CPUのCPID値にセットしてそのE
X所有権を表わすのに対し、ステップ352Aでは、C
PIDフィールドをRO所有権の値(0)にセットする
ことにある。図6Bでステップ338を使用しないの
は、要求されたデータ・ユニットが要求元CPUのL1
キャッシュ内で検出されなかったので、これをXI信号
により無効化する必要がないからである(注:もし、要
求されたデータ・ユニットのEX所有権を、要求元CP
Uが有していたならば、ヒット経路のステップ304A
で、要求元CPUのL1キャッシュ内にある当該データ
・ユニットのコピーがRO所有権にデモートされる)。
【0138】読取専用取出しを示す図6Bのヒット経路
は、排他的取出しを示す図6Aのヒット経路に似ている
が、前者では、ステップ304及び312に代えてステ
ップ304A及び312Aを用い、ステップ311を用
いないことが異なる。ステップ304と304Aとの間
の相違点は、ステップ304では、所有権を終了(即
ち、無効化)させているのに対し、ステップ304Aで
は、RO所有権へのデモートを実行することにある。そ
して、ステップ312とステップ312Aとの間の相違
点は、ステップ312では、CPIDフィールドを要求
元CPUのCPID値にセットするのに対し、ステップ
312Aでは、CPIDフィールドをRO所有権を表わ
す値0にセットすることにある。
【0139】図6Bでステップ311を用いないのは、
図6Bでは、要求されたデータ・ユニットの任意の読取
専用コピーが、読取専用取出しのために他の各CPUの
L1キャッシュ内に残されるのに対し、図6Aでは、排
他的取出しのために要求されたデータ・ユニットを無効
化することが必要となるからである。
【0140】読取専用取出しを示す図7Bのミス経路
は、排他的取出しを示す図7Aのミス経路と基本的に同
じであるが、前者では、ステップ452Aに代えてステ
ップ452Bを用いることが異なる。ステップ452A
と452Bとの間の主な相違点は、ステップ452Bで
は、EX/ROビットをリセットしてRO所有権を表わ
すのに対し、ステップ452Aでは、このEX/ROビ
ットをオン(EX)状態にセットすることにある。
【0141】読取専用取出しを示す図7Bのヒット経路
は、排他的取出しを示す図7Aのヒット経路に似ている
が、前者では、ステップ406Aに代えてステップ40
6Bを用い、ステップ414Aを用いないことが異な
る。ステップ406Aとステップ406Bとの間の相違
点は、ステップ406Bでは、EX所有権を有する他の
CPUのL1キャッシュ内で所有権を終了させる代わり
に、RO所有権へのデモート(即ち、無効化の代わり
に、RO所有権へのデモート)を実行することにある。
【0142】図7Bでステップ414Aを用いないの
は、図7Bでは、要求されたデータ・ユニットの任意の
読取専用コピーが、読取専用取出しのために他の各CP
UのL1キャッシュ内に残されるのに対し、図7Aで
は、排他的取出しのために要求されたデータ・ユニット
を無効化することが必要となるからである。
【0143】条件付き読取専用取出し 図6C及び図7Cの各々は、図1及び図10のシステム
において、XIデイレクトリに対する条件付き読取専用
取出し要求を実行するための動作ステップをそれぞれ表
わしている。条件付き読取専用取出しとは、図6C又は
図7Cのプロセスに示されている既存の条件に依存し
て、一のデータ・ユニットのRO所有権又はEX所有権
のどちらかを要求元CPUに与えるが、RO所有権を与
える方向にバイアスさせる、というものである。
【0144】条件付き読取専用取出しを示す図6Cのミ
ス経路は、排他的取出しを示す図6Aのミス経路と同じ
であり、この排他的取出しの場合は、要求されたデータ
・ユニットがEX所有権とともにL1キャッシュ内に与
えられる、条件付き読取専用取出しを示す図6Cのヒッ
ト経路は、読取専用取出しを示す図6Bのヒット経路と
似ているが、前者では、ステップ303からの肯定出口
が、要求元CPUの現存するEX所有権を変更しない
で、L2キャッシュ内にあるEX所有権を有するデータ
・ユニットの異なる約数部分を要求元CPUのL1キャ
ッシュに取出すことが異なる。
【0145】条件付き読取専用取出しを示す図7Cのミ
ス経路は、排他的取出しを示す図7Aのミス経路と同じ
である。
【0146】条件付き読取専用取出しを示す図7Cのヒ
ット経路は、ステップ403Bとステップ501からの
肯定出口とを除くと、読取専用取出しを示す図7Bのヒ
ット経路に似ている。図7Cのステップ403B又はス
テップ501のどちらも、要求元CPUの現存するEX
所有権を変更しないし、要求された約数部分を、関連す
るL2データ・ユニットについて示されたEX所有権と
ともに要求元CPUのL1キャッシュに取出さない。
【0147】EX所有権へのプロモート 任意のCPUがそのL1キャッシュ内にRO所有権付き
の一のデータ・ユニットを有する場合、当該CPUは、
その所有権をEX所有権に変更するコマンドを発行する
ことができる。本明細書では、このコマンドを、「EX
所有権へのプロモート」と呼ぶ。図6D及び図7Dの各
々は、図1又は図10のXIデイレクトリ内で、又は要
求元CPUのL1キャッシュ内で、一のデータ・ユニッ
トの所有権をRO所有権からEX所有権に変更するため
に、本明細書で記述する本発明の種々の実施例に関連し
て、「EX所有権へのプロモート」コマンドによって用
いられる動作ステップをそれぞれ表わしている。
【0148】図6の実施例が利用する原理に起因して、
要求されたデータ・ユニットの一部(約数部分)がL1
キャッシュ内に存在する場合であっても、当該データ・
ユニットが、L2キャッシュ内に存在しないことがあり
得る。従って、「EX所有権へのプロモート」コマンド
が、この実施例のXIデイレクトリ内でミスすること
も、ヒットすることもあり得るのである。しかし、図7
の実施例では、「EX所有権へのプロモート」コマンド
が、XIデイレクトリ内でミスすることはあり得ない。
なぜなら、図7の実施例が利用する原理は、有効な全て
のL1データ・ユニットが、L2キャッシュ内に存在す
ることを必要とするからである。
【0149】EX所有権へのプロモートを示す図6Dの
ミス経路は、如何なるデータ・ユニットもL1キャッシ
ュに送信されないことを除けば、排他的取出しを示す図
6Aのミス経路に似ている。その代わり、図6Dでは、
ステップ332からステップ321及び323に進む。
ステップ323は、XIデイレクトリの制御部から要求
元CPUへ確認信号を送信して、要求元CPUのL1デ
イレクトリ内にある所有権の表示をEX所有権に変更す
ることを表わす。かくて、要求元CPUは、今やそのデ
ータ・ユニットを排他的に使用することができ、ひいて
は当該データ・ユニットへのストアも行えることを知る
のである。
【0150】EX所有権へのプロモートを示す図6Dの
ヒット経路は、ステップ302を用いて、アクセスされ
たXIデイレクトリ・エントリ内にあるCPIDフィー
ルドの値を検査する。もし、このCPIDフィールドが
RO所有権を表わす値を有するならば、ステップ302
の肯定出口が取られてステップ311に進み、そこで包
括的なXI信号を全てのCPUに送信する。なぜなら、
任意又は全てのCPUが、そのL1キャッシュ内にRO
所有権付きのコピーを有することがあり得るからであ
る。この場合、XI応答信号は必要ない。次のステップ
312は、このXIデイレクトリ・エントリ内にあるC
PIDフィールドを、要求元CPUのCPID値にセッ
トする。ステップ312からステップ321に入り、次
のステップ323では、一の確認信号を要求元CPUに
送信して、そのL1デイレクトリ内にある所有権の表示
をEX所有権に変更させる。かくて、要求元CPUは、
今やそのL1キャッシュ内にある当該データ・ユニット
を排他的に使用することができることを知るのである。
【0151】図7Dに示されている「EX所有権へのプ
ロモート」コマンドの処理は、ずっと簡単である。なぜ
なら、図7の実施例が利用する原理は、XIデイレクト
リのミスを許さないからである。従って、図7Dには、
ヒット経路だけが示されているに過ぎない。このヒット
経路のステップ411Aは、それぞれのCPIDビット
がオン状態にセットされているCPUの各々にだけ、特
定のXI信号を送信する。なぜなら、システム内のこれ
らのCPUだけが、該当するデータ・ユニットのコピー
を有し得るからである。次のステップ412Aは、CP
IDフィールド内にある要求元CPUのCPIDビット
をオン状態にセットし、そしてアクセスされたXIデイ
レクトリ・エントリ内にあるEX/ROビットをオン
(EX)状態にセットする。最後のステップ423は、
要求元CPUに対し、そのキャッシュ・エントリをEX
状態にセットするように通知する。従って、要求元CP
Uは、当該データ・ユニットを排他的に使用することが
できるようになる。
【0152】図11A〜図11Eのプロセス このプロセスは、これがL2キャッシュを使用しない
(図8参照)ことを除けば、図6及び図7を参照して説
明したプロセスに似ている。XIデイレクトリ・エント
リの各々には、各CPUに対応するCPIDビット及び
EX/ROビットが設けられているので(図9参照)、
排他的要求及び読取専用要求の両方について特定のXI
信号を使用することができる。
【0153】排他的取出し、読取専用取出し、条件付き
読取専用取出し、及びEX所有権へのプロモート要求を
示す図11A〜図11Eのステップと図6及び図7のス
テップとは、それぞれの参照番号の右寄りの2つの数字
が等しければ、互いに類似している。
【図面の簡単な説明】
【図1】CPU専用のストア・スルー型L1キャッシ
ュ、L2キャッシュ及びこのL2キャッシュに関連する
XIデイレクトリを含む、多重処理システムの1つの形
式を示す図である。
【図2】図1のXIデイレクトリ内にある各エントリの
形式を示す図である。
【図3】図1の各L1キャッシュに付随して設けられた
L1デイレクトリ内にある各エントリの形式を示す図で
ある。
【図4】図1の各CPU並びにXIデイレクトリ及びL
2キャッシュを含むSCE(システム記憶制御装置)内
に設けられたXIハードウェアを示す図である。
【図5】図1のシステムのSCE内に設けられた種々の
ハードウェア制御部を示す図である。
【図6A】図1又は図10のシステム上で実行される、
本発明に従った排他的取出し要求を処理するプロセスの
流れ図である。
【図6B】図1又は図10のシステム上で実行される、
本発明に従った読取専用取り出し要求を処理するプロセ
スの流れ図である。
【図6C】図1又は図10のシステム上で実行される、
本発明に従った条件付き読取専用取り出し要求を処理す
るプロセスの流れ図である。
【図6D】図1又は図10のシステム上で実行される、
本発明に従った「EX所有権へのプロモート」要求を処
理するプロセスの流れ図である。
【図7A】図1又は図10のシステム上で実行される、
本発明に従った排他的取出し要求を処理する他のプロセ
スの流れ図である。
【図7B】図1又は図10のシステム上で実行される、
本発明に従った読取専用取り出し要求を処理する他のプ
ロセスの流れ図である。
【図7C】図1又は図10のシステム上で実行される、
本発明に従った条件付き読取専用取り出し要求を処理す
る他のプロセスの流れ図である。
【図7D】図1又は図10のシステム上で実行される、
本発明に従ったEX所有権へのプロモート要求を処理す
る他のプロセスの流れ図である。
【図7E】図1又は図10のシステム上で実行される、
本発明に従ったXIデイレクトリのエントリ内にEXエ
ージ・ビットをセットするプロセスの流れ図である。
【図8】CPU専用のストア・イン型L1キャッシュ及
びXIデイレクトリを含み、L2キャッシュを含まな
い、多重処理システムの他の形式を示す図である。
【図9】図8のXIデイレクトリ内にある各エントリの
形式を示す図である。
【図10】CPU専用のストア・スルー型L1キャッシ
ュ、複数のセクションから成るL2キャッシュ及びこの
L2キャッシュに関連するXIデイレクトリを含む、多
重処理システムの他の形式を示す図である。
【図11A】図8のシステム上で実行される、本発明に
従った排他的取出し要求を処理するプロセスの流れ図で
ある。
【図11B】図8のシステム上で実行される、本発明に
従った読取専用取り出し要求を処理するプロセスの流れ
図である。
【図11C】図8のシステム上で実行される、本発明に
従った条件付き読取専用取り出し要求を処理するプロセ
スの流れ図である。
【図11D】図8のシステム上で実行される、本発明に
従ったEX所有権へのプロモート要求を処理するプロセ
スの流れ図である。
【図11E】図8のシステム上で実行される、本発明に
従ったL1キャッシュからのキャスト・アウト又はデー
タ・ユニットのエージング・アウトを処理するプロセス
の流れ図である。
フロントページの続き (72)発明者 ミカエル・イグナトウスキー アメリカ合衆国12571、ニューヨーク州レ ッド・フック、オーリッチ・ロード、アー ルアール3 ボツクス 204 (72)発明者 マッシュー・アンソニー・クリゴウスキー アメリカ合衆国12533、ニューヨーク州ホ ープウェル・ジャンクション、タマラッ ク・ドライブ 11番地 (72)発明者 リシン・リウ アメリカ合衆国10570、ニューヨーク州プ レザントビル、ディアフィールド・レー ン・ノース、196番地 (72)発明者 ドナルド・ワルター・プライス アメリカ合衆国12449、レーク・カトリン、 ドリス・レーン 57番地 (72)発明者 ウィリアム・キング・ロディジャー アメリカ合衆国01776、マサチューセッツ 州サブバリー、モース・ロード 193番地 (72)発明者 グレゴリー・サリアー アメリカ合衆国12498、ニューヨーク州ウ ッドストック、サウッド・レーン 8番地 (72)発明者 イー−ミン・チン アメリカ合衆国12518、ニューヨーク州コ ーンウォール、ルート・ダブリュー 400 番地 (72)発明者 ミカエル・ポール・ウィット アメリカ合衆国12524、ニューヨーク州フ ィッシュキル、ロードン・ドライブ 11− 12番地

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 それぞれ専用のCPUキャッシュを有す
    る複数のCPUと、前記複数のCPUによって共有され
    且つ前記複数のCPUキャッシュにそれぞれ取出すこと
    ができる複数のデータ・ユニットを保持する補助メモリ
    とを含む多重処理処理システムにおいて、 複数のエントリを有し且つ前記複数のCPUキャッシュ
    に対する要求を受取るコヒーレンス・デイレクトリが設
    けられ、 前記コヒーレンス・デイレクトリの各エントリは、当該
    エントリに関連するデータ・ユニットの前記補助メモリ
    内のアドレス表示を保持するアドレス・フィールドと、
    前記複数のCPUのうち当該関連するデータ・ユニット
    の排他的所有権を有する1つのCPUを識別するための
    CPU識別子フィールドとを含み、 更に、一のデータ・ユニットの排他的所有権を変更する
    一の要求が前記コヒーレンス・デイレクトリで受取られ
    るとき、前記コヒーレンス・デイレクトリ内の複数のエ
    ントリのうち当該要求に応じてアクセスされる一のエン
    トリ内のCPU識別子フィールドによって識別される一
    のCPUに対しクロス無効化信号を供給して、当該CP
    Uが有している当該エントリに関連するデータ・ユニッ
    トの排他的所有権を終了させる手段が設けられて成る 多重処理処理システムのコヒーレンス手段。
  2. 【請求項2】 それぞれ専用のCPUキャッシュを有す
    る複数のCPUと、前記複数のCPUによって共有され
    且つ前記複数のCPUキャッシュに取出すことができる
    複数のデータ・ユニットを保持する補助メモリとを含む
    多重処理システムにおいて、 前記複数のCPUキャッシュに付随して複数のエントリ
    を有する複数のCPUデイレクトリがそれぞれ設けら
    れ、 前記各CPUデイレクトリ内の各エントリは、当該エン
    トリが当該CPUデイレクトリに対応するCPUキャッ
    シュ内のデータ・ユニットを表わすか否かに応じて有効
    状態又は無効状態にセットされる有効フィールドと、当
    該データ・ユニットの排他的所有権又は共有所有権のど
    ちらかを表わすようにセットされる排他的フィールドと
    を有し、 複数のエントリを有するコヒーレンス・デイレクトリが
    設けられ、 前記コヒーレンス・デイレクトリの各エントリは、当該
    エントリの有効状態又は無効状態を表わすようにセット
    される有効フィールドと、当該エントリに関連するデー
    タ・ユニットの前記補助メモリ内のアドレス表示を保持
    するアドレス・フィールドと、当該有効フィールドが有
    効状態にセットされているとき、当該関連するデータ・
    ユニットの所有権を有するCPUを識別するためのCP
    U識別子フィールドとを有しており、 更に、一のデータ・ユニットの所有権を変更する一の要
    求が生ぜられるとき、前記コヒーレンス・デイレクトリ
    内の複数のエントリのうち当該要求に応じてアクセスさ
    れる一のエントリ内のCPU識別子フィールドによって
    当該エントリに関連するデータ・ユニットの排他的所有
    権を有するものとして識別される一のCPUに対し、ク
    ロス無効化信号を供給する手段が設けられて成る 多重処理システムのコヒーレンス手段。
  3. 【請求項3】 前記CPU識別子フィールドが、 前記複数のCPUのうち前記関連するデータ・ユニット
    の排他的所有権を有する任意のCPUを個別的に識別す
    る特定の値を保持するか、又は前記関連するデータ・ユ
    ニットの共有所有権を全てのCPUが有し得ることを包
    括的に表わす他の値を保持するようにした 請求項1又は請求項2記載の多重処理システムのコヒー
    レンス手段。
  4. 【請求項4】 前記CPU識別子フィールドが、 前記複数のCPUにそれぞれ対応する複数のCPU識別
    子ビットを有し、当該CPU識別子ビットの各々は、対
    応するCPUが前記関連するデータ・ユニットの所有権
    を有するか否かを表わすようにオン状態又はオフ状態に
    それぞれセットされ、 更に、前記コヒーレンス・デイレクトリの各エントリ
    が、排他的フィールドを有し、当該排他的フィールド
    は、前記複数のCPU識別子ビットによって前記関連す
    るデータ・ユニットの所有権を有するものとして表わさ
    れたCPUのうち1つのCPUだけが排他的所有権を有
    し且つ任意の数のCPUが共有所有権を有するように、
    当該CPUの各々ごとに排他的所有権又は共有所有権の
    どちらかを表わすべくセットされるようにした 請求項1又は請求項2記載の多重処理システムのコヒー
    レンス手段。
  5. 【請求項5】 前記補助メモリが、 前記複数のCPUキャッシュに取出すことができる複数
    のデータ・ユニットを保持する共有キャッシュと、前記
    共有キャッシュに取出すことができる複数のデータ・ユ
    ニットを保持するメイン・メモリとから成り、 前記コヒーレンス・デイレクトリが、前記共有キャッシ
    ュ用のデイレクトリとして利用されるようにした 請求項1又は請求項2記載のコヒーレンス手段。
  6. 【請求項6】 それぞれ専用のCPUキャッシュを有す
    る複数のCPUと、前記複数のCPUによって共有され
    且つ前記複数のCPUキャッシュにそれぞれ取出すこと
    ができる複数のデータ・ユニットを保持する補助メモリ
    とを含む多重処理処理システムにおいて、 前記システム内のデータのコヒーレンスを制御するため
    に、前記複数のCPUキャッシュに接続された複数のエ
    ントリを有するコヒーレンス・デイレクトリ手段が設け
    られ、 前記コヒーレンス・デイレクトリの各エントリは、当該
    エントリの有効状態又は無効状態を表わすようにセット
    される有効フィールドと、当該エントリに関連するデー
    タ・ユニットの前記補助メモリ内のアドレス表示を保持
    するアドレス・フィールドと、当該有効フィールドが有
    効状態を表わすようにセットされているとき、当該関連
    するデータ・ユニットの所有権を有するCPUを識別す
    るためのCPU識別子フィールドと、当該CPU識別子
    フィールドによって識別された一のCPUが当該関連す
    るデータ・ユニットの書込権限を有する場合には、その
    排他的所有権状態を表わし、1つ以上のCPUが当該関
    連するデータ・ユニットの読取専用権限だけを有する場
    合には、その共有所有権状態を表わすようにセットされ
    る排他的フィールドとを有し、 更に、他のCPUが一のデータ・ユニットの排他的所有
    権を要求するとき、前記コヒーレンス・デイレクトリ内
    にある複数のエントリのうち当該要求に応じてアクセス
    される一のエントリ内にあるCPU識別子フィールドに
    よって識別される一のCPUに対しクロス無効化信号を
    供給して、当該CPUが有している当該エントリに関連
    するデータ・ユニットの所有権を終了させる手段が設け
    られて成る 多重処理システムのコヒーレンス手段。
  7. 【請求項7】 それぞれ専用のCPUキャッシュを有す
    る複数のCPUと、前記複数のCPUによって共有され
    且つ前記複数のCPUキャッシュにそれぞれ取出すこと
    ができる複数のデータ・ユニットを保持する補助メモリ
    とを含む多重処理処理システムにおいて、 前記複数のCPUキャッシュに付随して複数のエントリ
    を有する複数のCPUデイレクトリがそれぞれ設けら
    れ、 前記各CPUデイレクトリ内の各エントリは、当該エン
    トリが当該CPUデイレクトリに対応するCPUキャッ
    シュ内のデータ・ユニットを表わすとき、当該データ・
    ユニットの排他的所有権を表わすようにセットされる排
    他的フィールドを有し、 前記複数のCPUからの要求を受取るための複数のエン
    トリを有するコヒーレンス・デイレクトリが設けられ、 前記コヒーレンス・デイレクトリの各エントリは、当該
    エントリに関連するデータ・ユニットの前記補助メモリ
    内のアドレス表示を保持するアドレス・フィールドと、
    前記複数のCPUのうち当該関連するデータ・ユニット
    の排他的所有権を有する1つのCPUを識別するための
    CPU識別子フィールドとを有し、 一のデータ・ユニットの排他的所有権を変更する一の要
    求が前記コヒーレンス・デイレクトリで受取られると
    き、前記コヒーレンス・デイレクトリ内の複数のエント
    リのうち当該要求に応じてアクセスされる一のエントリ
    内にあるCPU識別子フィールドによって識別される一
    のCPUにだけ特定のクロス無効化信号を供給して、当
    該CPUが有している当該エントリに関連するデータ・
    ユニットの排他的所有権を終了させる手段が設けられ、 更に、前記特定のクロス無効化信号を受取るCPUが前
    記関連するデータ・ユニットの排他的所有権を放棄する
    ことを表わすクロス無効化応答信号を通知するための手
    段が、前記複数のCPUの各々に設けられて成る、 多重処理システムのコヒーレンス手段。
JP4029537A 1991-04-03 1992-02-17 多重処理システムのコヒーレンス手段 Expired - Lifetime JPH0775010B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/679,900 US5265232A (en) 1991-04-03 1991-04-03 Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data
US679900 1991-04-03

Publications (2)

Publication Number Publication Date
JPH0561770A JPH0561770A (ja) 1993-03-12
JPH0775010B2 true JPH0775010B2 (ja) 1995-08-09

Family

ID=24728850

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4029537A Expired - Lifetime JPH0775010B2 (ja) 1991-04-03 1992-02-17 多重処理システムのコヒーレンス手段

Country Status (3)

Country Link
US (1) US5265232A (ja)
EP (1) EP0507063A1 (ja)
JP (1) JPH0775010B2 (ja)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5553262B1 (en) * 1988-01-21 1999-07-06 Mitsubishi Electric Corp Memory apparatus and method capable of setting attribute of information to be cached
US5404483A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for delaying the processing of cache coherency transactions during outstanding cache fills
US5490261A (en) * 1991-04-03 1996-02-06 International Business Machines Corporation Interlock for controlling processor ownership of pipelined data for a store in cache
JPH0512117A (ja) * 1991-07-04 1993-01-22 Toshiba Corp キヤツシユ一致化方式
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US5584017A (en) * 1991-12-19 1996-12-10 Intel Corporation Cache control which inhibits snoop cycles if processor accessing memory is the only processor allowed to cache the memory location
US5813030A (en) * 1991-12-31 1998-09-22 Compaq Computer Corp. Cache memory system with simultaneous access of cache and main memories
US5408653A (en) * 1992-04-15 1995-04-18 International Business Machines Corporation Efficient data base access using a shared electronic store in a multi-system environment with shared disks
US5355471A (en) * 1992-08-14 1994-10-11 Pyramid Technology Corporation Multiprocessor cache coherency tester that exercises the coherency logic exhaustively and also detects errors in a processor using an automatic CPU sort
US5455942A (en) * 1992-10-01 1995-10-03 International Business Machines Corporation Partial page write detection for a shared cache using a bit pattern written at the beginning and end of each page
JP2500101B2 (ja) * 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
JP2746530B2 (ja) * 1993-01-30 1998-05-06 洲 植 全 共有メモリマルチプロセッサ
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é.
US5642486A (en) * 1993-07-15 1997-06-24 Unisys Corporation Invalidation queue with "bit-sliceability"
US5598551A (en) * 1993-07-16 1997-01-28 Unisys Corporation Cache invalidation sequence system utilizing odd and even invalidation queues with shorter invalidation cycles
US5636365A (en) * 1993-10-05 1997-06-03 Nec Corporation Hierarchical buffer memories for selectively controlling data coherence including coherence control request means
US5530832A (en) * 1993-10-14 1996-06-25 International Business Machines Corporation System and method for practicing essential inclusion in a multiprocessor and cache hierarchy
US5649102A (en) * 1993-11-26 1997-07-15 Hitachi, Ltd. Distributed shared data management system for controlling structured shared data and for serializing access to shared data
US5519846A (en) * 1993-12-23 1996-05-21 Unisys Corporation Multiprocessor system with scheme for managing allocation and reservation of cache segments in a cache system employing round-robin replacement and exclusive access
US5590309A (en) * 1994-04-01 1996-12-31 International Business Machines Corporation Storage protection cache and backing storage having system control element data cache pipeline and storage protection bits in a stack array with a stack directory for the stack array
JP3360933B2 (ja) * 1994-06-01 2003-01-07 富士通株式会社 情報処理システムにおける記憶制御方法および記憶制御装置
JP2634147B2 (ja) * 1994-09-16 1997-07-23 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータシステム、キャッシュヒットの判定方法
US5584013A (en) * 1994-12-09 1996-12-10 International Business Machines Corporation Hierarchical cache arrangement wherein the replacement of an LRU entry in a second level cache is prevented when the cache entry is the only inclusive entry in the first level cache
US5692153A (en) * 1995-03-16 1997-11-25 International Business Machines Corporation Method and system for verifying execution order within a multiprocessor data processing system
US5752264A (en) * 1995-03-31 1998-05-12 International Business Machines Corporation Computer architecture incorporating processor clusters and hierarchical cache memories
EP0735480B1 (en) * 1995-03-31 2003-06-04 Sun Microsystems, Inc. Cache coherent computer system that minimizes invalidation and copyback operations
JP2776759B2 (ja) * 1995-04-14 1998-07-16 甲府日本電気株式会社 ロックリクエスト制御装置
US5634110A (en) * 1995-05-05 1997-05-27 Silicon Graphics, Inc. Cache coherency using flexible directory bit vectors
US5740400A (en) * 1995-06-05 1998-04-14 Advanced Micro Devices Inc. Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field
US5758119A (en) * 1995-08-23 1998-05-26 International Business Machines Corp. System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache
US5740399A (en) * 1995-08-23 1998-04-14 International Business Machines Corporation Modified L1/L2 cache inclusion for aggressive prefetch
US5875462A (en) * 1995-12-28 1999-02-23 Unisys Corporation Multi-processor data processing system with multiple second level caches mapable to all of addressable memory
US5787477A (en) * 1996-06-18 1998-07-28 International Business Machines Corporation Multi-processor cache coherency protocol allowing asynchronous modification of cache data
US5752258A (en) * 1996-07-01 1998-05-12 Sun Microsystems, Inc. Encoding method for directory state in cache coherent distributed shared memory system
US5950226A (en) * 1996-07-01 1999-09-07 Sun Microsystems, Inc. Multiprocessing system employing a three-hop communication protocol
US5813029A (en) 1996-07-09 1998-09-22 Micron Electronics, Inc. Upgradeable cache circuit using high speed multiplexer
US5897656A (en) 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US5963978A (en) * 1996-10-07 1999-10-05 International Business Machines Corporation High level (L2) cache and method for efficiently updating directory entries utilizing an n-position priority queue and priority indicators
US5893161A (en) * 1996-11-12 1999-04-06 Hewlett-Packard Co. Method for allocating ownership of portions of memory in a coherent memory system
US5946710A (en) * 1996-11-14 1999-08-31 Unisys Corporation Selectable two-way, four-way double cache interleave scheme
US5848434A (en) * 1996-12-09 1998-12-08 Intel Corporation Method and apparatus for caching state information within a directory-based coherency memory system
US6078997A (en) * 1996-12-09 2000-06-20 Intel Corporation Directory-based coherency system for maintaining coherency in a dual-ported memory system
US5960455A (en) * 1996-12-30 1999-09-28 Unisys Corporation Scalable cross bar type storage controller
US5875201A (en) * 1996-12-30 1999-02-23 Unisys Corporation Second level cache having instruction cache parity error control
US6122711A (en) 1997-01-07 2000-09-19 Unisys Corporation Method of and apparatus for store-in second level cache flush
US5860093A (en) * 1997-01-21 1999-01-12 Unisys Corporation Reduced instruction processor/storage controller interface
US5900009A (en) * 1997-03-21 1999-05-04 Emc Corporation System and method for accessing records in a cache slot which are associated with a current owner storage element or at least one previous owner storage element
US6119197A (en) * 1997-10-31 2000-09-12 Micron Technology, Inc. Method for providing and operating upgradeable cache circuitry
US6052760A (en) * 1997-11-05 2000-04-18 Unisys Corporation Computer system including plural caches and utilizing access history or patterns to determine data ownership for efficient handling of software locks
US6633958B1 (en) * 1997-11-17 2003-10-14 Silicon Graphics, Inc. Multiprocessor computer system and method for maintaining cache coherence utilizing a multi-dimensional cache coherence directory structure
US6012127A (en) * 1997-12-12 2000-01-04 Intel Corporation Multiprocessor computing apparatus with optional coherency directory
US6334172B1 (en) * 1998-02-17 2001-12-25 International Business Machines Corporation Cache coherency protocol with tagged state for modified values
US6341336B1 (en) * 1998-02-17 2002-01-22 International Business Machines Corporation Cache coherency protocol having tagged state used with cross-bars
US6289419B1 (en) 1998-03-06 2001-09-11 Sharp Kabushiki Kaisha Consistency control device merging updated memory blocks
US6625694B2 (en) * 1998-05-08 2003-09-23 Fujitsu Ltd. System and method for allocating a directory entry for use in multiprocessor-node data processing systems
US6295598B1 (en) * 1998-06-30 2001-09-25 Src Computers, Inc. Split directory-based cache coherency technique for a multi-processor computer system
US6493798B2 (en) 1998-09-21 2002-12-10 Micron Technology, Inc. Upgradeable cache circuit using high speed multiplexer
US6378042B1 (en) * 1999-08-11 2002-04-23 Fast-Chip, Inc. Caching associative memory
US6457100B1 (en) 1999-09-15 2002-09-24 International Business Machines Corporation Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls
US6751698B1 (en) 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
JP2001265652A (ja) * 2000-03-17 2001-09-28 Hitachi Ltd キャッシュディレクトリ構成方法および情報処理装置
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6754859B2 (en) * 2001-01-03 2004-06-22 Bull Hn Information Systems Inc. Computer processor read/alter/rewrite optimization cache invalidate signals
US6647466B2 (en) * 2001-01-25 2003-11-11 Hewlett-Packard Development Company, L.P. Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
US6871268B2 (en) * 2002-03-07 2005-03-22 International Business Machines Corporation Methods and systems for distributed caching in presence of updates and in accordance with holding times
US8185602B2 (en) * 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7082500B2 (en) * 2003-02-18 2006-07-25 Cray, Inc. Optimized high bandwidth cache coherence mechanism
US20050108481A1 (en) * 2003-11-17 2005-05-19 Iyengar Arun K. System and method for achieving strong data consistency
US8332592B2 (en) * 2004-10-08 2012-12-11 International Business Machines Corporation Graphics processor with snoop filter
JP4882233B2 (ja) 2005-01-24 2012-02-22 富士通株式会社 メモリ制御装置及び制御方法
US8131936B2 (en) * 2005-02-11 2012-03-06 International Business Machines Corporation Method and apparatus for implementing a combined data/coherency cache
US7577795B2 (en) * 2006-01-25 2009-08-18 International Business Machines Corporation Disowning cache entries on aging out of the entry
US20080104333A1 (en) * 2006-10-31 2008-05-01 Veazey Judson E Tracking of higher-level cache contents in a lower-level cache
US8683139B2 (en) 2006-10-31 2014-03-25 Hewlett-Packard Development Company, L.P. Cache and method for cache bypass functionality
US7669011B2 (en) * 2006-12-21 2010-02-23 Advanced Micro Devices, Inc. Method and apparatus for detecting and tracking private pages in a shared memory multiprocessor
US7966453B2 (en) 2007-12-12 2011-06-21 International Business Machines Corporation Method and apparatus for active software disown of cache line's exlusive rights
JP2009151457A (ja) * 2007-12-19 2009-07-09 Nec Corp キャッシュメモリシステムおよびキャッシュメモリ制御方法
US8560776B2 (en) * 2008-01-29 2013-10-15 International Business Machines Corporation Method for expediting return of line exclusivity to a given processor in a symmetric multiprocessing data processing system
US8868847B2 (en) * 2009-03-11 2014-10-21 Apple Inc. Multi-core processor snoop filtering
US9075732B2 (en) 2010-06-15 2015-07-07 International Business Machines Corporation Data caching method
JP5687603B2 (ja) 2011-11-09 2015-03-18 株式会社東芝 プログラム変換装置、プログラム変換方法、および変換プログラム
CN103049392B (zh) * 2012-10-17 2016-04-06 华为技术有限公司 缓存目录的实现方法及装置
JP5936152B2 (ja) * 2014-05-17 2016-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation メモリアクセストレース方法
US10114752B2 (en) 2014-06-27 2018-10-30 International Business Machines Corporation Detecting cache conflicts by utilizing logical address comparisons in a transactional memory
US10754777B2 (en) * 2015-11-04 2020-08-25 Samsung Electronics Co., Ltd. Systems and methods for implementing coherent memory in a multiprocessor system
US10073783B2 (en) 2016-11-23 2018-09-11 Advanced Micro Devices, Inc. Dual mode local data store
US10482024B2 (en) * 2017-07-20 2019-11-19 Alibaba Group Holding Limited Private caching for thread local storage data access
US10909036B2 (en) * 2018-11-09 2021-02-02 International Business Machines Corporation Management of shared memory using asynchronous invalidation signals
KR102674538B1 (ko) * 2019-02-28 2024-06-13 엘지전자 주식회사 디지털 디바이스 및 그 제어 방법
CN112579480B (zh) * 2020-12-09 2022-12-09 海光信息技术股份有限公司 存储管理方法、存储管理装置以及计算机系统
US20240220418A1 (en) * 2022-12-30 2024-07-04 International Business Machines Corporation Selective distribution of translation entry invalidation requests in a multithreaded data processing system
CN120336213B (zh) * 2025-06-20 2025-10-28 山东云海国创云计算装备产业创新中心有限公司 多核处理器的请求处理方法、多核处理器、产品及服务器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02253356A (ja) * 1989-03-28 1990-10-12 Toshiba Corp 階層キャッシュメモリ装置とその制御方式

Also Published As

Publication number Publication date
EP0507063A1 (en) 1992-10-07
JPH0561770A (ja) 1993-03-12
US5265232A (en) 1993-11-23

Similar Documents

Publication Publication Date Title
JPH0775010B2 (ja) 多重処理システムのコヒーレンス手段
JP2566701B2 (ja) 共有キャッシュ内のデータ・ユニットに対する所有権の変更制御装置
US7366847B2 (en) Distributed cache coherence at scalable requestor filter pipes that accumulate invalidation acknowledgements from other requestor filter pipes using ordering messages from central snoop tag
US6038647A (en) Cache memory device and method for providing concurrent independent multiple accesses to different subsets within the device
US6625698B2 (en) Method and apparatus for controlling memory storage locks based on cache line ownership
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
EP0349122B1 (en) Method and apparatus for filtering invalidate requests
US4484267A (en) Cache sharing control in a multiprocessor
EP1399823B1 (en) Using an l2 directory to facilitate speculative loads in a multiprocessor system
US7409500B2 (en) Systems and methods for employing speculative fills
US20050154836A1 (en) Multi-processor system receiving input from a pre-fetch buffer
US20020199066A1 (en) Method and apparatus for facilitating speculative loads in a multiprocessor system
EP1402349A2 (en) Method and apparatus for facilitating speculative stores in a multiprocessor system
JPH0619786A (ja) キャッシュコヒーレンスを維持する方法及び装置
US6105108A (en) Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter
JP2618178B2 (ja) スカラ/ベクトル複合処理システム、スカラ/ベクトル複合処理システム用の相互問い合わせ装置及びデータ・コヒーレンスを維持するための方法
US6061765A (en) Independent victim data buffer and probe buffer release control utilzing control flag
US6973541B1 (en) System and method for initializing memory within a data processing system
US5675765A (en) Cache memory system with independently accessible subdivided cache tag arrays
JP2001222468A (ja) マイクロプロセッサのロード/ストア命令制御回路、およびロード/ストア命令制御方法
JPH0567976B2 (ja)
JPH10501914A (ja) 共用キャッシュ・メモリ装置
JP2007533014A (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
KR100380674B1 (ko) 멀티프로세서 시스템에서의 기록-통과 기억 동작동안 캐시코히어런스를 유지하는 방법 및 시스템
JPH0816474A (ja) マルチプロセッサシステム