JP2541771B2 - 原子的メモリ参照方法及びシステム - Google Patents
原子的メモリ参照方法及びシステムInfo
- Publication number
- JP2541771B2 JP2541771B2 JP5319572A JP31957293A JP2541771B2 JP 2541771 B2 JP2541771 B2 JP 2541771B2 JP 5319572 A JP5319572 A JP 5319572A JP 31957293 A JP31957293 A JP 31957293A JP 2541771 B2 JP2541771 B2 JP 2541771B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- level
- level cache
- block
- data entry
- 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
Links
- 238000007430 reference method Methods 0.000 title 1
- 238000012545 processing Methods 0.000 claims description 91
- 238000000034 method Methods 0.000 claims description 62
- 238000013479 data entry Methods 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 28
- 238000012986 modification Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 26
- 238000012546 transfer Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 10
- 238000013519 translation Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 8
- 230000000977 initiatory effect Effects 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000001914 filtration Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 230000001427 coherent effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000004513 sizing Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
Description
【0001】
【産業上の利用分野】本発明は一般に改良されたデータ
処理システムに関し、特に多重レベル・キャッシュ・デ
ータ処理システムにおける原子的メモリ参照を達成する
方法及びシステムに関する。更に詳細には本発明は、キ
ャッシュ・システム全体に渡り、予約アドレスの分配を
要求することなく、多重レベル・キャッシュ・マルチプ
ロセッサ・データ処理システムにおいて原子的メモリ参
照を達成する方法及びシステムに関する。
処理システムに関し、特に多重レベル・キャッシュ・デ
ータ処理システムにおける原子的メモリ参照を達成する
方法及びシステムに関する。更に詳細には本発明は、キ
ャッシュ・システム全体に渡り、予約アドレスの分配を
要求することなく、多重レベル・キャッシュ・マルチプ
ロセッサ・データ処理システムにおいて原子的メモリ参
照を達成する方法及びシステムに関する。
【0002】
【従来の技術】最新のデータ処理システムの設計者は、
こうしたシステムの性能を向上させるように常に努力を
重ねている。データ処理システムの効率を向上させる1
つの技術に、短サイクル時間及び低サイクル毎命令(C
PI:Cycles Per Instruction)比率の達成がある。改
良されたデータ処理システムにおけるこれらの技術の優
れた応用例に、IBMのRISC System/6000(RS/6000)
コンピュータがある。RS/6000 システムはマルチユー
ザ、汎用環境と同様に数値処理において集中的なエンジ
ニアリング・アプリケーション及び科学技術アプリケー
ションにおいて好都合に実行されるように設計されてい
る。RS/6000 プロセッサはマルチスケーラを使用し、こ
れは複数の命令が同時に発行されて実行されることを意
味する。
こうしたシステムの性能を向上させるように常に努力を
重ねている。データ処理システムの効率を向上させる1
つの技術に、短サイクル時間及び低サイクル毎命令(C
PI:Cycles Per Instruction)比率の達成がある。改
良されたデータ処理システムにおけるこれらの技術の優
れた応用例に、IBMのRISC System/6000(RS/6000)
コンピュータがある。RS/6000 システムはマルチユー
ザ、汎用環境と同様に数値処理において集中的なエンジ
ニアリング・アプリケーション及び科学技術アプリケー
ションにおいて好都合に実行されるように設計されてい
る。RS/6000 プロセッサはマルチスケーラを使用し、こ
れは複数の命令が同時に発行されて実行されることを意
味する。
【0003】複数の命令の同時発行及び実行は、高い命
令帯域幅により並列に実行可能な独立の機能ユニットを
必要とする。RS/6000 システムはパイプライン式の別々
の分岐ユニット、固定小数点処理ユニット及び浮動小数
点処理ユニットを使用することにより、これを達成す
る。こうしたシステムにおいて、条件分岐命令の実行に
より、考慮すべきパイプライン遅延のペナルティが発生
する。条件分岐命令は、1個または複数の他の命令の処
理の選択結果に応答して、アプリケーション内で特定の
条件分岐の発生を指令する命令である。従ってランタイ
ム遅延を回避するためには、条件分岐命令がパイプライ
ン・キューを通じてキュー内の実行位置に伝播する時間
内において、条件分岐を解析する以前に条件分岐命令よ
り後の命令をキューにロードすることが必要となる。
令帯域幅により並列に実行可能な独立の機能ユニットを
必要とする。RS/6000 システムはパイプライン式の別々
の分岐ユニット、固定小数点処理ユニット及び浮動小数
点処理ユニットを使用することにより、これを達成す
る。こうしたシステムにおいて、条件分岐命令の実行に
より、考慮すべきパイプライン遅延のペナルティが発生
する。条件分岐命令は、1個または複数の他の命令の処
理の選択結果に応答して、アプリケーション内で特定の
条件分岐の発生を指令する命令である。従ってランタイ
ム遅延を回避するためには、条件分岐命令がパイプライ
ン・キューを通じてキュー内の実行位置に伝播する時間
内において、条件分岐を解析する以前に条件分岐命令よ
り後の命令をキューにロードすることが必要となる。
【0004】マルチスケーラ・プロセッサ・システムに
おける別の遅延要因は、こうしたシステムが典型的に複
数のタスクを同時に実行する事実に起因する。各これら
の複数のタスクは、典型的にはタスクの実行に使用され
る有効アドレス空間または仮想アドレス空間を有する。
こうした有効または仮想アドレス空間内のロケーション
は、システム・メモリ内の実アドレスに"マップ"される
アドレスを含む。実メモリ内の単一の空間を、マルチス
ケーラ・プロセッサ・システム内の複数の有効または仮
想メモリ・アドレスにマップすることは一般的である。
各複数タスクによる有効または仮想アドレスの使用は、
マルチスケーラ・プロセッサ・システムにおける追加遅
延を生成する。これはこれらのアドレスをシステム・メ
モリ内の実アドレスに変換する必要性による。それによ
り適切な命令またはデータがメモリから検索され、マル
チスケーラ・プロセッサ・システムを構成する複数の独
立な機能ユニットの1つにディスパッチするために、命
令キュー内に配置される。
おける別の遅延要因は、こうしたシステムが典型的に複
数のタスクを同時に実行する事実に起因する。各これら
の複数のタスクは、典型的にはタスクの実行に使用され
る有効アドレス空間または仮想アドレス空間を有する。
こうした有効または仮想アドレス空間内のロケーション
は、システム・メモリ内の実アドレスに"マップ"される
アドレスを含む。実メモリ内の単一の空間を、マルチス
ケーラ・プロセッサ・システム内の複数の有効または仮
想メモリ・アドレスにマップすることは一般的である。
各複数タスクによる有効または仮想アドレスの使用は、
マルチスケーラ・プロセッサ・システムにおける追加遅
延を生成する。これはこれらのアドレスをシステム・メ
モリ内の実アドレスに変換する必要性による。それによ
り適切な命令またはデータがメモリから検索され、マル
チスケーラ・プロセッサ・システムを構成する複数の独
立な機能ユニットの1つにディスパッチするために、命
令キュー内に配置される。
【0005】マルチスケーラ・プロセッサ・システム内
の有効または仮想メモリ・アドレスをシステム・メモリ
内の実メモリ・アドレスに迅速に変換する1つの技術
に、いわゆる"変換ルックアサイド・バッファ"(TL
B)の使用がある。変換ルックアサイド・バッファ(T
LB)は、有効または仮想メモリ・アドレスと実メモリ
・アドレスとの間の変換関係を含むバッファであり、こ
れはある変換アルゴリズムを使用して生成される。変換
ルックアサイド・バッファ(TLB)を使用する装置
は、アドレス変換のための合理的で効率的な方法を提供
するが、密結合対象的マルチプロセッサ・システムにお
けるこうしたバッファの使用は、コヒーレンシの問題を
生じる。複数のプロセッサが共通のシステム実メモリか
ら読出し及びそれに書込むデータ処理システムでは、メ
モリ・システムがコヒーレントに動作することを保証し
なければならない。すなわち、メモリ・システムが複数
プロセッサのオペレーションの結果、非コヒーレントに
なることが許可されない。こうしたマルチプロセッサ・
データ処理システム内の各プロセッサは、典型的には、
アドレス変換用の変換ルックアサイド・バッファ(TL
B)を含み、こうしたシステム内のメモリの共用は、マ
ルチプロセッサ・システム内のあるプロセッサ内の単一
の変換ルックアサイド・バッファ(TLB)に対する変
更が、マルチプロセッサ・コンピュータ・システム内の
各プロセッサ内の各変換ルックアサイド・バッファ(T
LB)に慎重に且つ矛盾無くマップされて、コヒーレン
シを維持することを要求する。
の有効または仮想メモリ・アドレスをシステム・メモリ
内の実メモリ・アドレスに迅速に変換する1つの技術
に、いわゆる"変換ルックアサイド・バッファ"(TL
B)の使用がある。変換ルックアサイド・バッファ(T
LB)は、有効または仮想メモリ・アドレスと実メモリ
・アドレスとの間の変換関係を含むバッファであり、こ
れはある変換アルゴリズムを使用して生成される。変換
ルックアサイド・バッファ(TLB)を使用する装置
は、アドレス変換のための合理的で効率的な方法を提供
するが、密結合対象的マルチプロセッサ・システムにお
けるこうしたバッファの使用は、コヒーレンシの問題を
生じる。複数のプロセッサが共通のシステム実メモリか
ら読出し及びそれに書込むデータ処理システムでは、メ
モリ・システムがコヒーレントに動作することを保証し
なければならない。すなわち、メモリ・システムが複数
プロセッサのオペレーションの結果、非コヒーレントに
なることが許可されない。こうしたマルチプロセッサ・
データ処理システム内の各プロセッサは、典型的には、
アドレス変換用の変換ルックアサイド・バッファ(TL
B)を含み、こうしたシステム内のメモリの共用は、マ
ルチプロセッサ・システム内のあるプロセッサ内の単一
の変換ルックアサイド・バッファ(TLB)に対する変
更が、マルチプロセッサ・コンピュータ・システム内の
各プロセッサ内の各変換ルックアサイド・バッファ(T
LB)に慎重に且つ矛盾無くマップされて、コヒーレン
シを維持することを要求する。
【0006】従来のマルチプロセッサ・システムにおけ
る変換ルックアサイド・バッファ(TLB)の保守は、
典型的にはプロセッサ間割込み、及び全ての変換ルック
アサイド・バッファ(TLB)の変更に対するソフトウ
ェア同期を使用して達成される。これらのアプローチは
マルチプロセッサ・システム全体に渡りコヒーレンシを
保証するために使用されるが、割込み及びソフトウェア
同期の使用の必要性は、マルチプロセッサ・コンピュー
タ・システムにおける実質的な性能劣化を生じる。
る変換ルックアサイド・バッファ(TLB)の保守は、
典型的にはプロセッサ間割込み、及び全ての変換ルック
アサイド・バッファ(TLB)の変更に対するソフトウ
ェア同期を使用して達成される。これらのアプローチは
マルチプロセッサ・システム全体に渡りコヒーレンシを
保証するために使用されるが、割込み及びソフトウェア
同期の使用の必要性は、マルチプロセッサ・コンピュー
タ・システムにおける実質的な性能劣化を生じる。
【0007】更にマルチプロセッサ・データ処理システ
ム内の各プロセッサは、典型的には小容量の特殊なメモ
リまたは"キャッシュ"を含み、これは当業者には既知の
ように、システム・メモリ内のデータまたは命令をアク
セスするために使用される。キャッシュ・メモリ・シス
テムのサイジング及び使用は、データ処理分野では既知
の技術であり本願では説明を省略する。しかしながら、
当業者においては、最近の連想キャッシュ技術の使用に
より、キャッシュまたはメモリ・インタフェース内に一
時的に記憶されるデータを使用することにより、システ
ムにおけるメモリ・アクセス効率が大幅に向上されるこ
とが理解されよう。
ム内の各プロセッサは、典型的には小容量の特殊なメモ
リまたは"キャッシュ"を含み、これは当業者には既知の
ように、システム・メモリ内のデータまたは命令をアク
セスするために使用される。キャッシュ・メモリ・シス
テムのサイジング及び使用は、データ処理分野では既知
の技術であり本願では説明を省略する。しかしながら、
当業者においては、最近の連想キャッシュ技術の使用に
より、キャッシュまたはメモリ・インタフェース内に一
時的に記憶されるデータを使用することにより、システ
ムにおけるメモリ・アクセス効率が大幅に向上されるこ
とが理解されよう。
【0008】メモリが小容量キャッシュに分配されるマ
ルチプロセッサ・システムにおいて発生する1つの問題
に、特定のキャッシュのオペレーションにより、あるプ
ロセッサがその関連するキャッシュ内のデータ・ブロッ
クをフラッシュ(flush )または無効にしたりする。単
一のプロセッサ環境では、データ・ブロックは2つの場
所、すなわちキャッシュまたは主メモリのいずれか一方
にだけ存在する可能性があるので、これは比較的直接的
なオペレーションである。しかしながら、マルチプロセ
ッサ環境では、これらの機能は他のプロセッサが関連す
るキャッシュ内に同一のデータ・ブロックを有する可能
性、及びそのデータ・ブロックが変更されたり変更され
なかったりする事実により複雑となる。従って、データ
の保全性及びコヒーレンシが維持されて、マルチプロセ
ッサ環境におけるキャッシュ・オペレーションが実行さ
れることを保証するために、マルチプロセッサ・システ
ムは、こうしたシステム内の全てのプロセッサ・キャッ
シュ及び主メモリに渡って、同期を達成する技術を提供
しなければならない。
ルチプロセッサ・システムにおいて発生する1つの問題
に、特定のキャッシュのオペレーションにより、あるプ
ロセッサがその関連するキャッシュ内のデータ・ブロッ
クをフラッシュ(flush )または無効にしたりする。単
一のプロセッサ環境では、データ・ブロックは2つの場
所、すなわちキャッシュまたは主メモリのいずれか一方
にだけ存在する可能性があるので、これは比較的直接的
なオペレーションである。しかしながら、マルチプロセ
ッサ環境では、これらの機能は他のプロセッサが関連す
るキャッシュ内に同一のデータ・ブロックを有する可能
性、及びそのデータ・ブロックが変更されたり変更され
なかったりする事実により複雑となる。従って、データ
の保全性及びコヒーレンシが維持されて、マルチプロセ
ッサ環境におけるキャッシュ・オペレーションが実行さ
れることを保証するために、マルチプロセッサ・システ
ムは、こうしたシステム内の全てのプロセッサ・キャッ
シュ及び主メモリに渡って、同期を達成する技術を提供
しなければならない。
【0009】原子的メモリ参照を実行しなければならな
い時に、多重レベル・キャッシュを含むマルチプロセッ
サ・システムにおいて、更に別の問題が存在する。 "原
子的(atomic)" メモリ参照はデータがメモリからロー
ドされ、そのデータ・アドレスに対する予約が確立され
る参照をさす。データは操作されるか更新された後、予
約されたアドレスに記憶される。これは一般に、データ
をロードしそのアドレスの予約を設定する"ロード・ア
ンド・リザーブ(Load and Reserve)"(LARX)命
令などの特定のコマンドを使用して達成される。"条件
付き記憶(StoreConditional)"(STCX)命令が次
に使用され、予約が設定されている場合には更新データ
を予約アドレスに記憶し、その状態の下で記憶を実行す
る。予約アドレスへ試行される書込みに対する介入は予
約をリセットするので、そのアドレスに影響を及ぼす他
のプロセッサのオペレーションが監視されなければなら
ない。これは一般に多重レベル・キャッシュ・システム
においては、関連するキャッシュ・メモリ間で"包含(i
nclusion)" を実施し、その後、予約アドレスへの書込
み活動をプロセッサに伝達するために、バス・トラフィ
ックをフィルタすることにより達成される。
い時に、多重レベル・キャッシュを含むマルチプロセッ
サ・システムにおいて、更に別の問題が存在する。 "原
子的(atomic)" メモリ参照はデータがメモリからロー
ドされ、そのデータ・アドレスに対する予約が確立され
る参照をさす。データは操作されるか更新された後、予
約されたアドレスに記憶される。これは一般に、データ
をロードしそのアドレスの予約を設定する"ロード・ア
ンド・リザーブ(Load and Reserve)"(LARX)命
令などの特定のコマンドを使用して達成される。"条件
付き記憶(StoreConditional)"(STCX)命令が次
に使用され、予約が設定されている場合には更新データ
を予約アドレスに記憶し、その状態の下で記憶を実行す
る。予約アドレスへ試行される書込みに対する介入は予
約をリセットするので、そのアドレスに影響を及ぼす他
のプロセッサのオペレーションが監視されなければなら
ない。これは一般に多重レベル・キャッシュ・システム
においては、関連するキャッシュ・メモリ間で"包含(i
nclusion)" を実施し、その後、予約アドレスへの書込
み活動をプロセッサに伝達するために、バス・トラフィ
ックをフィルタすることにより達成される。
【0010】従って多重レベル・キャッシュ・システム
において、予約の保留の間におけるキャッシュ・システ
ムからの関連データ・ブロックの廃棄にも関わらず、予
約状態を維持可能な原子的メモリ参照を達成する方法及
びシステムが求められることが理解されよう。
において、予約の保留の間におけるキャッシュ・システ
ムからの関連データ・ブロックの廃棄にも関わらず、予
約状態を維持可能な原子的メモリ参照を達成する方法及
びシステムが求められることが理解されよう。
【0011】
【発明が解決しようとする課題】本発明の目的は、改良
されたデータ処理システムを提供することである。
されたデータ処理システムを提供することである。
【0012】本発明の別の目的は、多重レベル・キャッ
シュ・データ処理システムにおいて、原子的メモリ参照
を達成する改良された方法及びシステムを提供すること
である。
シュ・データ処理システムにおいて、原子的メモリ参照
を達成する改良された方法及びシステムを提供すること
である。
【0013】更に本発明の別の目的は、多重レベル・キ
ャッシュ・マルチプロセッサ・データ処理システムにお
いて、キャッシュ・システム全体に渡り予約アドレスの
分配を要求することなく、原子的メモリ参照を達成する
方法及びシステムを提供することである。
ャッシュ・マルチプロセッサ・データ処理システムにお
いて、キャッシュ・システム全体に渡り予約アドレスの
分配を要求することなく、原子的メモリ参照を達成する
方法及びシステムを提供することである。
【0014】
【課題を解決するための手段】上述の目的が次のように
して達成される。本発明の方法及びシステムは、多重レ
ベル・キャッシュ・データ処理システムにおいて、原子
的メモリ参照を達成するために使用される。原子的メモ
リ参照は、システムがコヒーレントなメモリ・システム
を提供することを要求する。これは大部分のマルチプロ
セッサ・システムにおいて、通常のメモリ・コヒーレン
シ・システムにより達成される。予約状態に対するヒッ
トを正確に解析するために、メモリへの書込みまたは書
込み試行がプロセッサにより監視されなければならな
い。多重レベル・キャッシュ・システムはコヒーレンシ
の特殊な問題を提供し、これは予約機構の不適なオペレ
ーションを生じる。例えば2レベル・キャッシュ・シス
テムにおいて、第2レベル・キャッシュがバス・オペレ
ーションをフィルタし、第1レベル・キャッシュ内の記
憶データを含むバス・トラフィックをプロセッサに転送
する。これは"包含"特性を実施することにより達成さ
れ、この場合、第1レベル・キャッシュ内の全てのデー
タ・エントリが、高レベル・キャッシュ内に保持される
ことが要求される。予約が保留である第1レベル・キャ
ッシュ内のブロックが廃棄され、予約の保留にも関わら
ず、第2レベル・キャッシュが関連するプロセッサへバ
ス・トラフィックをもはや転送しない場合に問題が生じ
る。本発明で開示される方法によれば、有効な予約が保
留の度に予約フラグがセットされる。その後、高レベル
・キャッシュにおけるデータ・エントリの置換により、
包含レベル・キャッシュにおける対応するデータ・エン
トリが消去される。次に予約アドレスに作用するバス・
オペレーションまたは予約アドレスに対応するキャッシ
ュ・データ・エントリの消去のいずれかの発生に応答し
て、予約フラグがリセットされ、予約アドレスを分配す
る必要なく、原子的メモリ参照が達成される。
して達成される。本発明の方法及びシステムは、多重レ
ベル・キャッシュ・データ処理システムにおいて、原子
的メモリ参照を達成するために使用される。原子的メモ
リ参照は、システムがコヒーレントなメモリ・システム
を提供することを要求する。これは大部分のマルチプロ
セッサ・システムにおいて、通常のメモリ・コヒーレン
シ・システムにより達成される。予約状態に対するヒッ
トを正確に解析するために、メモリへの書込みまたは書
込み試行がプロセッサにより監視されなければならな
い。多重レベル・キャッシュ・システムはコヒーレンシ
の特殊な問題を提供し、これは予約機構の不適なオペレ
ーションを生じる。例えば2レベル・キャッシュ・シス
テムにおいて、第2レベル・キャッシュがバス・オペレ
ーションをフィルタし、第1レベル・キャッシュ内の記
憶データを含むバス・トラフィックをプロセッサに転送
する。これは"包含"特性を実施することにより達成さ
れ、この場合、第1レベル・キャッシュ内の全てのデー
タ・エントリが、高レベル・キャッシュ内に保持される
ことが要求される。予約が保留である第1レベル・キャ
ッシュ内のブロックが廃棄され、予約の保留にも関わら
ず、第2レベル・キャッシュが関連するプロセッサへバ
ス・トラフィックをもはや転送しない場合に問題が生じ
る。本発明で開示される方法によれば、有効な予約が保
留の度に予約フラグがセットされる。その後、高レベル
・キャッシュにおけるデータ・エントリの置換により、
包含レベル・キャッシュにおける対応するデータ・エン
トリが消去される。次に予約アドレスに作用するバス・
オペレーションまたは予約アドレスに対応するキャッシ
ュ・データ・エントリの消去のいずれかの発生に応答し
て、予約フラグがリセットされ、予約アドレスを分配す
る必要なく、原子的メモリ参照が達成される。
【0015】
【実施例】図1を参照すると、本発明の方法及びシステ
ムを実施するために使用されるマルチプロセッサ・デー
タ処理システム6のハイレベル・ブロック図が示され
る。図示のように、マルチプロセッサ・データ処理シス
テム6は、各々がバス8によりシステム・メモリ18に
結合されるマルチスケーラ・プロセッサ10により構成
される。マルチプロセッサ・データ処理システム6など
の密結合対象的マルチプロセッサ・システムでは、マル
チプロセッサ・データ処理システム6内の各プロセッサ
10はメモリ18からデータを読出し、またそこにデー
タを書込むために使用される。従ってメモリ18内のデ
ータ及び命令がコヒーレントであることを保証するため
に、システム及びインターロックが使用されなければな
らない。
ムを実施するために使用されるマルチプロセッサ・デー
タ処理システム6のハイレベル・ブロック図が示され
る。図示のように、マルチプロセッサ・データ処理シス
テム6は、各々がバス8によりシステム・メモリ18に
結合されるマルチスケーラ・プロセッサ10により構成
される。マルチプロセッサ・データ処理システム6など
の密結合対象的マルチプロセッサ・システムでは、マル
チプロセッサ・データ処理システム6内の各プロセッサ
10はメモリ18からデータを読出し、またそこにデー
タを書込むために使用される。従ってメモリ18内のデ
ータ及び命令がコヒーレントであることを保証するため
に、システム及びインターロックが使用されなければな
らない。
【0016】図1を参照すると、マルチプロセッサ・デ
ータ処理システム6内の各プロセッサ10は、第1レベ
ル・キャッシュすなわちレベル1(L1)キャッシュ・
メモリ40を含み、これはシステム・メモリ18から第
2レベル・キャッシュすなわちレベル2(L2)キャッ
シュ・メモリ20を介して、選択された命令またはデー
タを効率的且つ一時的にアクセス及び記憶するために使
用される。各キャッシュ・メモリがメモリ空間を構成す
る事実により、マルチプロセッサ・データ処理システム
6内の各L1キャッシュ・メモリ40及びL2キャッシ
ュ・メモリ20間のコヒーレンシを維持し、こうしたシ
ステムの正確なオペレーションを保証することが重要で
ある。
ータ処理システム6内の各プロセッサ10は、第1レベ
ル・キャッシュすなわちレベル1(L1)キャッシュ・
メモリ40を含み、これはシステム・メモリ18から第
2レベル・キャッシュすなわちレベル2(L2)キャッ
シュ・メモリ20を介して、選択された命令またはデー
タを効率的且つ一時的にアクセス及び記憶するために使
用される。各キャッシュ・メモリがメモリ空間を構成す
る事実により、マルチプロセッサ・データ処理システム
6内の各L1キャッシュ・メモリ40及びL2キャッシ
ュ・メモリ20間のコヒーレンシを維持し、こうしたシ
ステムの正確なオペレーションを保証することが重要で
ある。
【0017】図2を参照すると、本発明の方法及びシス
テムを実施するために使用される、図1のマルチプロセ
ッサ・データ処理システム6内の多重レベル・キャッシ
ュ・システムのハイレベル・ブロック図が示される。図
示のように、プロセッサ10はレベル2(L2)キャッ
シュ20を介してバス8に結合される。プロセッサ10
内のレベル1(L1)キャッシュ40は、プロセッサ1
0により最も頻繁に使用される少数の命令またはデータ
を一時的に記憶するために使用される。キャッシュ・メ
モリのサイジング及びオペレーションは、データ処理技
術においては既知であり、ここでは説明を省略する。
テムを実施するために使用される、図1のマルチプロセ
ッサ・データ処理システム6内の多重レベル・キャッシ
ュ・システムのハイレベル・ブロック図が示される。図
示のように、プロセッサ10はレベル2(L2)キャッ
シュ20を介してバス8に結合される。プロセッサ10
内のレベル1(L1)キャッシュ40は、プロセッサ1
0により最も頻繁に使用される少数の命令またはデータ
を一時的に記憶するために使用される。キャッシュ・メ
モリのサイジング及びオペレーションは、データ処理技
術においては既知であり、ここでは説明を省略する。
【0018】本発明の重要な特徴によれば、原子的メモ
リ参照がプロセッサ10内で試行される度に、予約フラ
グ42がプロセッサ10内でセットされる。当業者には
理解されるように、これは0または1にセットされる1
桁の2進数を構成する。この予約信号はレベル2(L
2)キャッシュ20に伝達され、L2予約フラグ46内
に記憶される。レベル2(L2)キャッシュにおけるこ
の予約フラグのセットは、有効な予約がプロセッサ10
内で保留であることを示す。原子的メモリ参照を達成す
るために、プロセッサ10に対し予約アドレスにおいて
発生するデータ書込みの試行を通知することが必要であ
る。
リ参照がプロセッサ10内で試行される度に、予約フラ
グ42がプロセッサ10内でセットされる。当業者には
理解されるように、これは0または1にセットされる1
桁の2進数を構成する。この予約信号はレベル2(L
2)キャッシュ20に伝達され、L2予約フラグ46内
に記憶される。レベル2(L2)キャッシュにおけるこ
の予約フラグのセットは、有効な予約がプロセッサ10
内で保留であることを示す。原子的メモリ参照を達成す
るために、プロセッサ10に対し予約アドレスにおいて
発生するデータ書込みの試行を通知することが必要であ
る。
【0019】このフィルタリングを実施する直接的な技
術は、プロセッサ10からレベル2(L2)キャッシュ
20へ予約アドレスを送信することである。しかしなが
ら、当業者には理解されるように、これはプロセッサ性
能を非常に低下させる。従って、キャッシュ可能データ
に対して予約が保留であるアドレスは、プロセッサ10
内の予約アドレス44においてのみ維持される。後に詳
述されるように、レベル2(L2)キャッシュ20は、
参照番号60で示されるいわゆる "スヌープ(snoop)"
プロトコルにより、マルチプロセッサ・データ処理シス
テム6内の他のプロセッサの活動を監視するために使用
される。バス8を"スヌープ"することにより、レベル2
(L2)キャッシュ20は、予約アドレスのデータを変
更するために試行されるバス活動をプロセッサ10に送
信する。
術は、プロセッサ10からレベル2(L2)キャッシュ
20へ予約アドレスを送信することである。しかしなが
ら、当業者には理解されるように、これはプロセッサ性
能を非常に低下させる。従って、キャッシュ可能データ
に対して予約が保留であるアドレスは、プロセッサ10
内の予約アドレス44においてのみ維持される。後に詳
述されるように、レベル2(L2)キャッシュ20は、
参照番号60で示されるいわゆる "スヌープ(snoop)"
プロトコルにより、マルチプロセッサ・データ処理シス
テム6内の他のプロセッサの活動を監視するために使用
される。バス8を"スヌープ"することにより、レベル2
(L2)キャッシュ20は、予約アドレスのデータを変
更するために試行されるバス活動をプロセッサ10に送
信する。
【0020】もちろん、マルチプロセッサ・データ処理
システム6内の特定のデータがキャッシュ禁止、すなわ
ちキャッシュ・メモリ内に記憶されない場合もある。こ
うした状況ではそのデータに対する予約フラグのセット
は、必然的にレベル1(L1)キャッシュ40内におけ
る"ミス(miss)"となり、レベル2(L2)キャッシュ
20からそのデータの読出しを試行する。データがキャ
ッシュ禁止の事実を鑑み、そのアドレスが読出しオペレ
ーションのためにレベル2(L2)キャッシュ20に受
渡され、これによりキャッシュ禁止のデータの場合にお
ける、予約アドレスに対するデータ変更活動の監視が容
易となる。こうした状況では、予約アドレスはプロセッ
サ10から、レベル2(L2)キャッシュ20内の予約
アドレス48に転送される。その後、予約アドレスのデ
ータを変更しようとする、マルチプロセッサ・データ処
理システム6内の他のプロセッサの活動を監視するため
に、スヌープ・プロトコル60が使用される。
システム6内の特定のデータがキャッシュ禁止、すなわ
ちキャッシュ・メモリ内に記憶されない場合もある。こ
うした状況ではそのデータに対する予約フラグのセット
は、必然的にレベル1(L1)キャッシュ40内におけ
る"ミス(miss)"となり、レベル2(L2)キャッシュ
20からそのデータの読出しを試行する。データがキャ
ッシュ禁止の事実を鑑み、そのアドレスが読出しオペレ
ーションのためにレベル2(L2)キャッシュ20に受
渡され、これによりキャッシュ禁止のデータの場合にお
ける、予約アドレスに対するデータ変更活動の監視が容
易となる。こうした状況では、予約アドレスはプロセッ
サ10から、レベル2(L2)キャッシュ20内の予約
アドレス48に転送される。その後、予約アドレスのデ
ータを変更しようとする、マルチプロセッサ・データ処
理システム6内の他のプロセッサの活動を監視するため
に、スヌープ・プロトコル60が使用される。
【0021】図2に示されるように、レベル2(L2)
キャッシュ20は好適には読出しオペレーション・キュ
ー50を含み、これはレベル1(L1)キャッシュ40
からレベル2(L2)キャッシュ20に受渡される読出
しオペレーションを一時的に記憶するために使用され
る。更にレベル1(L1)キャッシュ40とレベル2
(L2)キャッシュ20間、及びレベル2(L2)キャ
ッシュ20とバス8間のデータ通信を制御するために、
レベル1(L1)バス制御52及びレベル2(L2)バ
ス制御54がそれぞれに対応して使用される。
キャッシュ20は好適には読出しオペレーション・キュ
ー50を含み、これはレベル1(L1)キャッシュ40
からレベル2(L2)キャッシュ20に受渡される読出
しオペレーションを一時的に記憶するために使用され
る。更にレベル1(L1)キャッシュ40とレベル2
(L2)キャッシュ20間、及びレベル2(L2)キャ
ッシュ20とバス8間のデータ通信を制御するために、
レベル1(L1)バス制御52及びレベル2(L2)バ
ス制御54がそれぞれに対応して使用される。
【0022】図3を参照すると、本発明の方法及びシス
テムによる "ロード・アンド・リザーブ" (LARX)
命令の処理を表すハイレベル論理流れ図が示される。上
述のように、"ロード・アンド・リザーブ"(LARX)
命令は、特定のロケーションからデータをロードする一
方、変更または更新に続いてそのデータを記憶するため
にそのアドレスを予約する。図示のように、処理はブロ
ック80で開始され、その後、ブロック82に移行す
る。ブロック82はロード・アンド・リザーブ(LAR
X)命令の受信を示す。次に処理はブロック84に移行
し、予約(RSRV)フラグをセットする。上述のよう
に、このフラグはシステムにおける有効な保留予約の存
在を示すために使用される。L2予約フラグについても
レベル2(L2)キャッシュ内でセットされる。
テムによる "ロード・アンド・リザーブ" (LARX)
命令の処理を表すハイレベル論理流れ図が示される。上
述のように、"ロード・アンド・リザーブ"(LARX)
命令は、特定のロケーションからデータをロードする一
方、変更または更新に続いてそのデータを記憶するため
にそのアドレスを予約する。図示のように、処理はブロ
ック80で開始され、その後、ブロック82に移行す
る。ブロック82はロード・アンド・リザーブ(LAR
X)命令の受信を示す。次に処理はブロック84に移行
し、予約(RSRV)フラグをセットする。上述のよう
に、このフラグはシステムにおける有効な保留予約の存
在を示すために使用される。L2予約フラグについても
レベル2(L2)キャッシュ内でセットされる。
【0023】次に処理はブロック86に移行する。ブロ
ック86は受信されたロード・アンド・リザーブ(LA
RX)命令に対するデータ・エントリがキャッシュ禁止
か否かを判断する。肯定の場合、処理はブロック88に
移行し、原子的バス・オペレーションにより、そのデー
タを読出す。すなわち、データが介入周期の間に別のプ
ロセッサにより変更されない場合、そのデータを読出し
変更する一方で、続く条件付き記憶オペレーションに対
応してアドレスを予約する。その後、処理はブロック9
0に移行し、バス・オペレーションを完了する。
ック86は受信されたロード・アンド・リザーブ(LA
RX)命令に対するデータ・エントリがキャッシュ禁止
か否かを判断する。肯定の場合、処理はブロック88に
移行し、原子的バス・オペレーションにより、そのデー
タを読出す。すなわち、データが介入周期の間に別のプ
ロセッサにより変更されない場合、そのデータを読出し
変更する一方で、続く条件付き記憶オペレーションに対
応してアドレスを予約する。その後、処理はブロック9
0に移行し、バス・オペレーションを完了する。
【0024】ブロック86を参照し、ロード・アンド・
リザーブ(LARX)命令の対象となるデータ・エント
リがキャッシュ禁止でない場合、処理はブロック92に
移行する。ブロック92はレベル1(L1)キャッシュ
内にそのエントリが見い出されたか否かを判断する。肯
定の場合、処理はブロック94に移行し、そのデータを
汎用レジスタ(GPR)に読出し、次に処理はブロック
96に示されるように、次の命令に移行する。
リザーブ(LARX)命令の対象となるデータ・エント
リがキャッシュ禁止でない場合、処理はブロック92に
移行する。ブロック92はレベル1(L1)キャッシュ
内にそのエントリが見い出されたか否かを判断する。肯
定の場合、処理はブロック94に移行し、そのデータを
汎用レジスタ(GPR)に読出し、次に処理はブロック
96に示されるように、次の命令に移行する。
【0025】再度ブロック92を参照し、データ・エン
トリがレベル1(L1)キャッシュ内に存在しない場
合、処理はブロック98に移行する。ブロック98はバ
ス読出しオペレーションを表し、レベル1(L1)キャ
ッシュ内のラインを解放する。当業者には理解されるよ
うに、新たなデータのロード要求において、キャッシュ
から消去するデータを決定するための数多くのプロトコ
ルが存在する。典型的には、データ・ラインが最小使用
頻度(LRU)プロトコルにもとづき解放される。次に
処理はブロック100に移行する。ブロック100はバ
ス読出しオペレーションが完了したか否かを判断し、否
定の場合、処理はブロック98に戻り、読出しオペレー
ションの処理を継続する。再度ブロック100を参照
し、バス読出しオペレーションが完了すると、処理はブ
ロック102に移行する。ブロック102はそのデータ
をレベル1(L1)キャッシュに記憶し、そのデータに
対応するキャッシュ・ステータスをセットする。処理は
次に繰返しブロック92に戻り、要求データ・エントリ
がレベル1(L1)キャッシュ内に存在するか否かを判
断する。
トリがレベル1(L1)キャッシュ内に存在しない場
合、処理はブロック98に移行する。ブロック98はバ
ス読出しオペレーションを表し、レベル1(L1)キャ
ッシュ内のラインを解放する。当業者には理解されるよ
うに、新たなデータのロード要求において、キャッシュ
から消去するデータを決定するための数多くのプロトコ
ルが存在する。典型的には、データ・ラインが最小使用
頻度(LRU)プロトコルにもとづき解放される。次に
処理はブロック100に移行する。ブロック100はバ
ス読出しオペレーションが完了したか否かを判断し、否
定の場合、処理はブロック98に戻り、読出しオペレー
ションの処理を継続する。再度ブロック100を参照
し、バス読出しオペレーションが完了すると、処理はブ
ロック102に移行する。ブロック102はそのデータ
をレベル1(L1)キャッシュに記憶し、そのデータに
対応するキャッシュ・ステータスをセットする。処理は
次に繰返しブロック92に戻り、要求データ・エントリ
がレベル1(L1)キャッシュ内に存在するか否かを判
断する。
【0026】図4を参照すると、本発明の方法及びシス
テムによる予約フラグをリセットするための、マルチプ
ロセッサ・データ処理システム6内のレベル2(L2)
キャッシュにおけるフィルタ処理を表すハイレベル論理
流れ図が示される。図示のように、処理はブロック11
0で開始され、その後、ブロック112に移行する。ブ
ロック112はレベル1(L1)キャッシュ内に有効な
保留予約が存在することを示す予約フラグがセットされ
ているか否か、また予約アドレスへの記憶オペレーショ
ンがバス8上において検出されたか否かを判断する。多
重レベル・キャッシュにおいていわゆる"包含"機能を実
施することにより、レベル2(L2)キャッシュ内に存
在するエントリへの記憶オペレーションが、レベル2
(L2)キャッシュに関連するレベル1(L1)キャッ
シュ内のエントリへ指向される。このようにして、レベ
ル2(L2)キャッシュ内のアドレスへの記憶オペレー
ションの検出により、処理はブロック118に移行し、
ブロック118はその記憶オペレーションが予約アドレ
スに対して実施されるか否かを判断するために、そのオ
ペレーションをレベル1(L1)キャッシュへ送信す
る。
テムによる予約フラグをリセットするための、マルチプ
ロセッサ・データ処理システム6内のレベル2(L2)
キャッシュにおけるフィルタ処理を表すハイレベル論理
流れ図が示される。図示のように、処理はブロック11
0で開始され、その後、ブロック112に移行する。ブ
ロック112はレベル1(L1)キャッシュ内に有効な
保留予約が存在することを示す予約フラグがセットされ
ているか否か、また予約アドレスへの記憶オペレーショ
ンがバス8上において検出されたか否かを判断する。多
重レベル・キャッシュにおいていわゆる"包含"機能を実
施することにより、レベル2(L2)キャッシュ内に存
在するエントリへの記憶オペレーションが、レベル2
(L2)キャッシュに関連するレベル1(L1)キャッ
シュ内のエントリへ指向される。このようにして、レベ
ル2(L2)キャッシュ内のアドレスへの記憶オペレー
ションの検出により、処理はブロック118に移行し、
ブロック118はその記憶オペレーションが予約アドレ
スに対して実施されるか否かを判断するために、そのオ
ペレーションをレベル1(L1)キャッシュへ送信す
る。
【0027】同様にして、記憶オペレーションが検出さ
れない場合は、処理はブロック114に移行する。ブロ
ック114は再度、有効な保留予約の存在を示す予約フ
ラグがセットされているか否か、及び予約アドレスに対
する変更目的読出し(RWITM:Read With Intent T
o Modify)オペレーションが発生しているか否かを判断
する。同様にブロック116は予約フラグがセットされ
ているか否か、及び予約アドレスに対するキル(Kill)
オペレーションが検出されているか否かを判断する。予
約フラグがセットされており、変更目的読出し(RWI
TM)オペレーションまたはキル・オペレーションのい
ずれかが検出されると、処理は再度ブロック118に移
行し、レベル1(L1)キャッシュにそのオペレーショ
ンを送信する。ブロック116に続き、処理は単にブロ
ック112に戻り、予約アドレスを変更するこれらのオ
ペレーションに対応するバス8上のバス・オペレーショ
ンを監視する。
れない場合は、処理はブロック114に移行する。ブロ
ック114は再度、有効な保留予約の存在を示す予約フ
ラグがセットされているか否か、及び予約アドレスに対
する変更目的読出し(RWITM:Read With Intent T
o Modify)オペレーションが発生しているか否かを判断
する。同様にブロック116は予約フラグがセットされ
ているか否か、及び予約アドレスに対するキル(Kill)
オペレーションが検出されているか否かを判断する。予
約フラグがセットされており、変更目的読出し(RWI
TM)オペレーションまたはキル・オペレーションのい
ずれかが検出されると、処理は再度ブロック118に移
行し、レベル1(L1)キャッシュにそのオペレーショ
ンを送信する。ブロック116に続き、処理は単にブロ
ック112に戻り、予約アドレスを変更するこれらのオ
ペレーションに対応するバス8上のバス・オペレーショ
ンを監視する。
【0028】図5を参照すると、本発明の方法及びシス
テムによる、予約フラグをリセットするための、レベル
1(L1)キャッシュにおけるフィルタ処理を表すハイ
レベル論理流れ図が示される。図4と同様に処理はブロ
ック130で開始され、その後、ブロック132に移行
する。ブロック132、134及び136は、それぞれ
記憶、変更目的読出し(RWITM)またはキル・オペ
レーションが予約アドレスに関して発生したか否かを判
断する。予約アドレス内のデータの変更を示すこれらの
オペレーションのいずれかが発生した場合、処理はブロ
ック138に移行する。ブロック138は予約フラグを
リセットする。当業者には理解されるように予約フラグ
がリセットされると、原子的メモリ参照を実行する続く
条件付き記憶(STCX)命令が発生しない。こうした
状況においては、以降で詳細に述べられるように、原子
的メモリ参照を実行しようとして、ロード・アンド・リ
ザーブ(LARX)命令が再実行される。再び図5を参
照して、処理はレベル2(L2)キャッシュからレベル
1(L1)キャッシュに転送されるこれらの活動を継続
して監視し、これらのバス・オペレーションが予約フラ
グのリセットを必要とするか否かを判断する。
テムによる、予約フラグをリセットするための、レベル
1(L1)キャッシュにおけるフィルタ処理を表すハイ
レベル論理流れ図が示される。図4と同様に処理はブロ
ック130で開始され、その後、ブロック132に移行
する。ブロック132、134及び136は、それぞれ
記憶、変更目的読出し(RWITM)またはキル・オペ
レーションが予約アドレスに関して発生したか否かを判
断する。予約アドレス内のデータの変更を示すこれらの
オペレーションのいずれかが発生した場合、処理はブロ
ック138に移行する。ブロック138は予約フラグを
リセットする。当業者には理解されるように予約フラグ
がリセットされると、原子的メモリ参照を実行する続く
条件付き記憶(STCX)命令が発生しない。こうした
状況においては、以降で詳細に述べられるように、原子
的メモリ参照を実行しようとして、ロード・アンド・リ
ザーブ(LARX)命令が再実行される。再び図5を参
照して、処理はレベル2(L2)キャッシュからレベル
1(L1)キャッシュに転送されるこれらの活動を継続
して監視し、これらのバス・オペレーションが予約フラ
グのリセットを必要とするか否かを判断する。
【0029】図6を参照すると、本発明の方法及びシス
テムによる、"条件付き記憶"(STCX)命令の処理を
表すハイレベル論理流れ図が示される。上述のように、
条件付き記憶(STCX)命令は予約フラグがまだセッ
トされているか否かを判断するために使用され、肯定の
場合、予約アドレスへの記憶の実行を許可する。予約フ
ラグがセットされていない場合、すなわち、これは予約
アドレスに対する書込みオペレーションのヒットを含む
バス・トラフィックのスヌープの結果、予約フラグがリ
セットされたことを示し、この場合には記憶の実行が許
可されず、条件レジスタ内にビットがセットされる。典
型的には、分岐命令がLARX/STCX対の後に続
き、記憶が成功したか否かを確認するために、条件レジ
スタ・ビットをチェックする。否定の場合、分岐は再試
行のためにロード・アンド・リザーブ(LARX)命令
に戻り、コード内のループを生成する。
テムによる、"条件付き記憶"(STCX)命令の処理を
表すハイレベル論理流れ図が示される。上述のように、
条件付き記憶(STCX)命令は予約フラグがまだセッ
トされているか否かを判断するために使用され、肯定の
場合、予約アドレスへの記憶の実行を許可する。予約フ
ラグがセットされていない場合、すなわち、これは予約
アドレスに対する書込みオペレーションのヒットを含む
バス・トラフィックのスヌープの結果、予約フラグがリ
セットされたことを示し、この場合には記憶の実行が許
可されず、条件レジスタ内にビットがセットされる。典
型的には、分岐命令がLARX/STCX対の後に続
き、記憶が成功したか否かを確認するために、条件レジ
スタ・ビットをチェックする。否定の場合、分岐は再試
行のためにロード・アンド・リザーブ(LARX)命令
に戻り、コード内のループを生成する。
【0030】図6に示されるように、処理はブロック1
50で開始され、その後、ブロック152に移行する。
ブロック152は、条件付き記憶(STCX)命令が受
信されたか否かを判断する。肯定の場合、処理はブロッ
ク154に移行する。ブロック154は予約フラグがセ
ットされているか否かを判断する。否定の場合、これは
予約アドレスに対し、ある書込みオペレーションが介入
したことを示し、処理はブロック156に移行する。ブ
ロック156は条件付き記憶(STCX)命令失敗フラ
グをセットし、次に処理はブロック158に移行する。
ブロック158は次の命令の発生を示し、典型的には試
行される原子的メモリ参照の状態を調査する分岐が発生
する。
50で開始され、その後、ブロック152に移行する。
ブロック152は、条件付き記憶(STCX)命令が受
信されたか否かを判断する。肯定の場合、処理はブロッ
ク154に移行する。ブロック154は予約フラグがセ
ットされているか否かを判断する。否定の場合、これは
予約アドレスに対し、ある書込みオペレーションが介入
したことを示し、処理はブロック156に移行する。ブ
ロック156は条件付き記憶(STCX)命令失敗フラ
グをセットし、次に処理はブロック158に移行する。
ブロック158は次の命令の発生を示し、典型的には試
行される原子的メモリ参照の状態を調査する分岐が発生
する。
【0031】再度ブロック154を参照すると、予約フ
ラグがセットされていると処理はブロック160に移行
する。ブロック160は予約アドレスにおけるデータが
キャッシュ禁止か否かを判断する。禁止の場合、ブロッ
ク162で示されるように、原子的バス・オペレーショ
ンによる記憶が発生する。次に、処理はブロック164
に移行する。ブロック164は予約フラグがまだセット
されているか否かを判断する。セットされていない場
合、処理はブロック156に移行して上述の処理を実行
する。それとは別に、予約フラグがまだセットされてい
る場合、処理はブロック166に移行する。ブロック1
66はバス・オペレーションが完了したか否かを判断
し、完了していない場合、処理はブロック164に戻
り、再度予約フラグがセットされたままの状態であるか
を判断する。このように原子的バス・オペレーションに
よる予約アドレスへのキャッシュ禁止データの記憶は、
バス・オペレーションが完了するまで、予約フラグがセ
ットされたままの状態であるかを判断し続ける。
ラグがセットされていると処理はブロック160に移行
する。ブロック160は予約アドレスにおけるデータが
キャッシュ禁止か否かを判断する。禁止の場合、ブロッ
ク162で示されるように、原子的バス・オペレーショ
ンによる記憶が発生する。次に、処理はブロック164
に移行する。ブロック164は予約フラグがまだセット
されているか否かを判断する。セットされていない場
合、処理はブロック156に移行して上述の処理を実行
する。それとは別に、予約フラグがまだセットされてい
る場合、処理はブロック166に移行する。ブロック1
66はバス・オペレーションが完了したか否かを判断
し、完了していない場合、処理はブロック164に戻
り、再度予約フラグがセットされたままの状態であるか
を判断する。このように原子的バス・オペレーションに
よる予約アドレスへのキャッシュ禁止データの記憶は、
バス・オペレーションが完了するまで、予約フラグがセ
ットされたままの状態であるかを判断し続ける。
【0032】再度ブロック166を参照すると、バス・
オペレーションが完了すると、処理はブロック168に
移行する。ブロック168は予約フラグ、及び条件付き
記憶(STCX)命令失敗フラグをリセットする。次に
処理はブロック158で示されるように、次の命令に移
行する。
オペレーションが完了すると、処理はブロック168に
移行する。ブロック168は予約フラグ、及び条件付き
記憶(STCX)命令失敗フラグをリセットする。次に
処理はブロック158で示されるように、次の命令に移
行する。
【0033】ブロック160を再度参照すると、条件付
き記憶(STCX)命令に関連する予約アドレスがキャ
ッシュ禁止でない場合、処理はブロック170に移行す
る。ブロック170は、予約アドレスに対応するデータ
・エントリがレベル1(L1)キャッシュ内において"
ヒット"し、開始プロセッサにより排他的に所有される
か否かを判断する。肯定の場合、処理はブロック172
に移行する。ブロック172は汎用レジスタ(GRP)
からキャッシュにデータを書込み、そのデータに対応す
るキャッシュ状態を"変更"にセットする。その後、処理
はブロック168に移行し、予約フラグ及び条件付き記
憶(STCX)命令失敗フラグをリセットする。
き記憶(STCX)命令に関連する予約アドレスがキャ
ッシュ禁止でない場合、処理はブロック170に移行す
る。ブロック170は、予約アドレスに対応するデータ
・エントリがレベル1(L1)キャッシュ内において"
ヒット"し、開始プロセッサにより排他的に所有される
か否かを判断する。肯定の場合、処理はブロック172
に移行する。ブロック172は汎用レジスタ(GRP)
からキャッシュにデータを書込み、そのデータに対応す
るキャッシュ状態を"変更"にセットする。その後、処理
はブロック168に移行し、予約フラグ及び条件付き記
憶(STCX)命令失敗フラグをリセットする。
【0034】再度ブロック170を参照し、予約アドレ
スに対応するデータがレベル1(L1)キャッシュ内に
存在せず、開始プロセッサにより排他的に所有されない
場合、処理はブロック174に移行する。ブロック17
4はデータに対応するキャッシュ状態が"共用"であるか
否か、またはデータがレベル1(L1)キャッシュ内に
不在か否かを判断する。データがレベル1(L1)キャ
ッシュ内に存在しない場合、処理はブロック176に移
行する。
スに対応するデータがレベル1(L1)キャッシュ内に
存在せず、開始プロセッサにより排他的に所有されない
場合、処理はブロック174に移行する。ブロック17
4はデータに対応するキャッシュ状態が"共用"であるか
否か、またはデータがレベル1(L1)キャッシュ内に
不在か否かを判断する。データがレベル1(L1)キャ
ッシュ内に存在しない場合、処理はブロック176に移
行する。
【0035】ブロック176は、バス上に変更目的読出
し(RWITM)オペレーション要求を発行する。マル
チプロセッサ・データ処理システムに関わる当業者には
理解されるように、データ・コヒーレンシは、あるプロ
セッサによるデータ変更の試行に際し、そのプロセッサ
がそのデータの変更の意志を示すバス・オペレーション
要求を発行し、意図される変更がデータ・コヒーレンシ
を侵害する場合に、システム内の他のプロセッサが選択
信号を生成することを要求する。典型的には、データ・
コヒーレンシ問題が存在することを示すアドレス再試行
(ARETRY)信号が、システム内の他のプロセッサ
により使用される。ブロック178は変更目的読出し
(RWITM)要求のARETRY信号が発生している
か否かを判断する。肯定の場合、処理はブロック154
に戻り、再度、予約フラグがセットされた状態であるか
否かを判断する。
し(RWITM)オペレーション要求を発行する。マル
チプロセッサ・データ処理システムに関わる当業者には
理解されるように、データ・コヒーレンシは、あるプロ
セッサによるデータ変更の試行に際し、そのプロセッサ
がそのデータの変更の意志を示すバス・オペレーション
要求を発行し、意図される変更がデータ・コヒーレンシ
を侵害する場合に、システム内の他のプロセッサが選択
信号を生成することを要求する。典型的には、データ・
コヒーレンシ問題が存在することを示すアドレス再試行
(ARETRY)信号が、システム内の他のプロセッサ
により使用される。ブロック178は変更目的読出し
(RWITM)要求のARETRY信号が発生している
か否かを判断する。肯定の場合、処理はブロック154
に戻り、再度、予約フラグがセットされた状態であるか
否かを判断する。
【0036】再度ブロック178を参照し、システム内
の他のプロセッサが変更目的読出し(RWITM)要求
に対するARETRYを発行しない場合、処理はブロッ
ク180に移行する。ブロック180はレベル1(L
1)キャッシュに所望のデータを再ロードし、次に処理
はブロック182に移行する。ブロック182はそのデ
ータに対応するキャッシュ状態を"排他"にセットし、処
理は次にブロック170に再度戻る。キャッシュ・メモ
リ管理に関わる当業者には理解されるように、キャッシ
ュ内のデータ状態を定義するための数多くのプロトコル
が存在する。典型的には、"MESI"と呼ばれる4つの
状態プロトコルが使用され、"変更"、 "排他"、"共用"
または"無効"のいずれかのデータ状態を示す。
の他のプロセッサが変更目的読出し(RWITM)要求
に対するARETRYを発行しない場合、処理はブロッ
ク180に移行する。ブロック180はレベル1(L
1)キャッシュに所望のデータを再ロードし、次に処理
はブロック182に移行する。ブロック182はそのデ
ータに対応するキャッシュ状態を"排他"にセットし、処
理は次にブロック170に再度戻る。キャッシュ・メモ
リ管理に関わる当業者には理解されるように、キャッシ
ュ内のデータ状態を定義するための数多くのプロトコル
が存在する。典型的には、"MESI"と呼ばれる4つの
状態プロトコルが使用され、"変更"、 "排他"、"共用"
または"無効"のいずれかのデータ状態を示す。
【0037】ブロック170に戻り、処理は再び所望の
データがレベル1(L1)キャッシュ内に存在し、開始
プロセッサに対し"排他"であるか否かを判断する。レベ
ル1(L1)キャッシュの再ロードに続いて、そのデー
タの状態を"排他"にセットし、処理は次に上述されたブ
ロック172以降の経路を実行する。
データがレベル1(L1)キャッシュ内に存在し、開始
プロセッサに対し"排他"であるか否かを判断する。レベ
ル1(L1)キャッシュの再ロードに続いて、そのデー
タの状態を"排他"にセットし、処理は次に上述されたブ
ロック172以降の経路を実行する。
【0038】ブロック174を再度参照すると、レベル
1(L1)キャッシュ内にデータが存在し共用される場
合、処理はブロック184に移行する。ブロック184
はキル・バス・オペレーション要求を発行する。キル・
バス・オペレーション要求は、データの全ての代替コピ
ーを無効化し、それにより開始プロセッサによるそのデ
ータの排他的所有権を保証するための開始プロセッサに
よる要求である。上述のように、多重処理データ処理シ
ステム6は、キル・バス・オペレーションがデータ・コ
ヒーレンシに違反する場合、このオペレーションに応答
してシステム内の他のプロセッサがアドレス再試行(A
RETRY)をアサートすることを要求する。ARET
RYがアサートされると、処理はブロック154に戻
り、予約フラグがまだセットされているか否かを判断
し、上述の処理を繰返す。それとは別に、システム内の
他のプロセッサがキル・オペレーション要求に応答して
ARETRYをアサートしない場合、処理はブロック1
82に移行する。ブロック182は開始プロセッサ内に
おいてそのデータのキャッシュ状態を"排他"にセット
し、処理はブロック170に戻る。
1(L1)キャッシュ内にデータが存在し共用される場
合、処理はブロック184に移行する。ブロック184
はキル・バス・オペレーション要求を発行する。キル・
バス・オペレーション要求は、データの全ての代替コピ
ーを無効化し、それにより開始プロセッサによるそのデ
ータの排他的所有権を保証するための開始プロセッサに
よる要求である。上述のように、多重処理データ処理シ
ステム6は、キル・バス・オペレーションがデータ・コ
ヒーレンシに違反する場合、このオペレーションに応答
してシステム内の他のプロセッサがアドレス再試行(A
RETRY)をアサートすることを要求する。ARET
RYがアサートされると、処理はブロック154に戻
り、予約フラグがまだセットされているか否かを判断
し、上述の処理を繰返す。それとは別に、システム内の
他のプロセッサがキル・オペレーション要求に応答して
ARETRYをアサートしない場合、処理はブロック1
82に移行する。ブロック182は開始プロセッサ内に
おいてそのデータのキャッシュ状態を"排他"にセット
し、処理はブロック170に戻る。
【0039】最後に図7を参照すると、本発明の方法及
びシステムによる多重レベル・キャッシュ・システムの
バス・トラフィックのフィルタ制御処理を表すハイレベ
ル論理流れ図が示される。図示のように、処理はブロッ
ク190で開始され、その後、ブロック192に移行す
る。ブロック192はレベル2(L2)キャッシュ・ミ
スを発生し、読出しまたは変更目的読出し(RWIT
M)をレベル1(L1)キャッシュ・バス上に発行す
る。当業者には理解されるように、これはレベル1(L
1)キャッシュにおける"ミス"の結果発生する。所望の
データがレベル2(L2)キャッシュ内に存在する状況
では、多重レベル・キャッシュ・フィルタリングに関す
る問題は生じない。なぜなら、レベル2(L2)キャッ
シュが、レベル2(L2)キャッシュ内のデータ・エン
トリに対応するアドレスに作用するバス・オペレーショ
ンを連続的にフィルタするからである。しかしながら、
レベル2(L2)キャッシュ内に所望のデータが存在し
ない場合、原子的メモリ参照が適切に発生しない。次に
処理はブロック194に移行する。ブロック194は、
レベル1(L1)バスが使用可能か否か、及びレベル2
(L2)キャッシュに関連する読出しキューについても
使用可能か否かを判断する。否定の場合、処理はブロッ
ク196に移行し、レベル2(L2)キャッシュはアド
レス再試行(ARETRY)を発行し、処理は再びブロ
ック192に戻る。
びシステムによる多重レベル・キャッシュ・システムの
バス・トラフィックのフィルタ制御処理を表すハイレベ
ル論理流れ図が示される。図示のように、処理はブロッ
ク190で開始され、その後、ブロック192に移行す
る。ブロック192はレベル2(L2)キャッシュ・ミ
スを発生し、読出しまたは変更目的読出し(RWIT
M)をレベル1(L1)キャッシュ・バス上に発行す
る。当業者には理解されるように、これはレベル1(L
1)キャッシュにおける"ミス"の結果発生する。所望の
データがレベル2(L2)キャッシュ内に存在する状況
では、多重レベル・キャッシュ・フィルタリングに関す
る問題は生じない。なぜなら、レベル2(L2)キャッ
シュが、レベル2(L2)キャッシュ内のデータ・エン
トリに対応するアドレスに作用するバス・オペレーショ
ンを連続的にフィルタするからである。しかしながら、
レベル2(L2)キャッシュ内に所望のデータが存在し
ない場合、原子的メモリ参照が適切に発生しない。次に
処理はブロック194に移行する。ブロック194は、
レベル1(L1)バスが使用可能か否か、及びレベル2
(L2)キャッシュに関連する読出しキューについても
使用可能か否かを判断する。否定の場合、処理はブロッ
ク196に移行し、レベル2(L2)キャッシュはアド
レス再試行(ARETRY)を発行し、処理は再びブロ
ック192に戻る。
【0040】ブロック194を参照すると、レベル1
(L1)バス及び読出しキューが使用可能な場合、処理
はブロック198に移行する。ブロック198はレベル
2(L2)キャッシュ内における読出しオペレーション
のキューイングを示す。次に処理はブロック200に移
行する。ブロック200は最低使用頻度(LRU)オペ
レーションなどの適切なプロトコルにより、レベル2
(L2)キャッシュ内に使用可能なラインを生成する。
その後、処理はブロック202に移行する。ブロック2
02は廃棄されるレベル2(L2)キャッシュ内のライ
ンが、"共用"または"無効"であるかを判断する。もちろ
ん、レベル2(L2)キャッシュ内のデータのライン
が"共用"または"無効"の場合、開始プロセッサはそのラ
インの排他的所有権を維持せず、そのラインのデータの
廃棄は原子的メモリ参照におけるコヒーレンシ問題を発
生する。なぜなら、そのラインの排他的所有権が所望の
メモリ参照を実行するために必要であるからである。レ
ベル2(L2)キャッシュから廃棄されるラインが"共
用"または"無効"の場合、処理はブロック204に移行
する。
(L1)バス及び読出しキューが使用可能な場合、処理
はブロック198に移行する。ブロック198はレベル
2(L2)キャッシュ内における読出しオペレーション
のキューイングを示す。次に処理はブロック200に移
行する。ブロック200は最低使用頻度(LRU)オペ
レーションなどの適切なプロトコルにより、レベル2
(L2)キャッシュ内に使用可能なラインを生成する。
その後、処理はブロック202に移行する。ブロック2
02は廃棄されるレベル2(L2)キャッシュ内のライ
ンが、"共用"または"無効"であるかを判断する。もちろ
ん、レベル2(L2)キャッシュ内のデータのライン
が"共用"または"無効"の場合、開始プロセッサはそのラ
インの排他的所有権を維持せず、そのラインのデータの
廃棄は原子的メモリ参照におけるコヒーレンシ問題を発
生する。なぜなら、そのラインの排他的所有権が所望の
メモリ参照を実行するために必要であるからである。レ
ベル2(L2)キャッシュから廃棄されるラインが"共
用"または"無効"の場合、処理はブロック204に移行
する。
【0041】ブロック204はレベル1(L1)バスの
要求を表す。次に処理はブロック206に移行する。ブ
ロック206はレベル1(L1)バスが許可されたか否
かを判断し、否定の場合、処理はブロック208に移行
する。ブロック208は記憶オペレーション以外の全て
のオペレーションに対応して、アドレス再試行(ARE
TRY)を生成する。処理は次にブロック210に移行
し、キューに待機される読出しオペレーションに先立
ち、順序外記憶オペレーションを実行する。処理は次に
ブロック204に移行し、再度レベル1(L1)バスを
要求する。
要求を表す。次に処理はブロック206に移行する。ブ
ロック206はレベル1(L1)バスが許可されたか否
かを判断し、否定の場合、処理はブロック208に移行
する。ブロック208は記憶オペレーション以外の全て
のオペレーションに対応して、アドレス再試行(ARE
TRY)を生成する。処理は次にブロック210に移行
し、キューに待機される読出しオペレーションに先立
ち、順序外記憶オペレーションを実行する。処理は次に
ブロック204に移行し、再度レベル1(L1)バスを
要求する。
【0042】再度ブロック206を参照すると、レベル
1(L1)バスが許可されると、処理はブロック212
に移行する。ブロック212で開始プロセッサは、レベ
ル1(L1)バスに廃棄アドレスに対応する変更目的読
出し(RWITM)要求を生成することにより、レベル
2(L2)バスから廃棄されるラインの排他的所有権を
獲得しようと試みる。その後、処理はブロック214に
移行する。ブロック214は、アドレス再試行(ARE
TRY)が変更目的読出し(RWITM)の要求に関連
して発行されたか否かを判断し、肯定の場合、処理はブ
ロック204に移行し、廃棄アドレスの排他的所有権が
獲得されるまで、こうした処理が繰返される。
1(L1)バスが許可されると、処理はブロック212
に移行する。ブロック212で開始プロセッサは、レベ
ル1(L1)バスに廃棄アドレスに対応する変更目的読
出し(RWITM)要求を生成することにより、レベル
2(L2)バスから廃棄されるラインの排他的所有権を
獲得しようと試みる。その後、処理はブロック214に
移行する。ブロック214は、アドレス再試行(ARE
TRY)が変更目的読出し(RWITM)の要求に関連
して発行されたか否かを判断し、肯定の場合、処理はブ
ロック204に移行し、廃棄アドレスの排他的所有権が
獲得されるまで、こうした処理が繰返される。
【0043】ブロック214を再度参照すると、変更目
的読出し(RWITM)に関するアドレス再試行(AR
ETRY)が発行されない場合、処理はブロック216
に移行する。ブロック216は廃棄ラインが"変更"され
たか否かを判断する。肯定の場合、処理はブロック21
8に移行する。ブロック218は廃棄ライン・データを
レベル2(L2)バスに書込む。廃棄ラインが"変更"さ
れていない場合、もしくは廃棄ライン・データをレベル
2(L2)バスに書込んだ後、またはブロック202で
廃棄ラインが"共用"または"無効"と判断された時、処理
はブロック220に移行する。ブロック220はレベル
2(L2)バスを介して新たなライン・データを読出
し、その後、処理はブロック222に移行する。ブロッ
ク222は新たなライン・データをレベル1(L1)キ
ャッシュにロードし、処理は次にブロック224に移行
して復帰する。
的読出し(RWITM)に関するアドレス再試行(AR
ETRY)が発行されない場合、処理はブロック216
に移行する。ブロック216は廃棄ラインが"変更"され
たか否かを判断する。肯定の場合、処理はブロック21
8に移行する。ブロック218は廃棄ライン・データを
レベル2(L2)バスに書込む。廃棄ラインが"変更"さ
れていない場合、もしくは廃棄ライン・データをレベル
2(L2)バスに書込んだ後、またはブロック202で
廃棄ラインが"共用"または"無効"と判断された時、処理
はブロック220に移行する。ブロック220はレベル
2(L2)バスを介して新たなライン・データを読出
し、その後、処理はブロック222に移行する。ブロッ
ク222は新たなライン・データをレベル1(L1)キ
ャッシュにロードし、処理は次にブロック224に移行
して復帰する。
【0044】上述の説明から、当業者には本出願人が、
多重レベル・キャッシュ・データ処理システムにおい
て、システム全体に渡る予約アドレスの分布を要求しな
い原子的メモリ参照を達成する新たな方法及びシステム
を提案したことが理解されよう。単一ビットの予約フラ
グをセットし、予約アドレスへの書込みを実施する活動
に対応するバス・トラフィックを監視し、更に多重レベ
ル・システム内の各レベル・キャッシュ間の特殊な関係
を実施する技術により、本発明の方法及びシステムは、
予約状態が維持されることを可能とする。
多重レベル・キャッシュ・データ処理システムにおい
て、システム全体に渡る予約アドレスの分布を要求しな
い原子的メモリ参照を達成する新たな方法及びシステム
を提案したことが理解されよう。単一ビットの予約フラ
グをセットし、予約アドレスへの書込みを実施する活動
に対応するバス・トラフィックを監視し、更に多重レベ
ル・システム内の各レベル・キャッシュ間の特殊な関係
を実施する技術により、本発明の方法及びシステムは、
予約状態が維持されることを可能とする。
【0045】本願発明に関して、以下の事項を開示す
る。 (1)各々が多重包含レベル・キャッシュを含み、共通
バスを介して互いにリンクされる複数プロセッサを含む
マルチプロセッサ・データ処理システムにおける原子的
メモリ参照を実行する方法であって、選択プロセッサに
よる選択アドレスへの保留の原子的メモリ参照に応答し
て、上記選択プロセッサに関連する各レベル・キャッシ
ュ内に予約フラグをセットするステップと、高レベル・
キャッシュにおけるキャッシュ・データ・エントリの置
換に応答して、包含レベル・キャッシュの対応するキャ
ッシュ・データ・エントリを消去するステップと、第1
レベル・キャッシュにおいて、上記第1レベル・キャッ
シュのキャッシュ・データ・エントリに作用する上記共
通バス上の各バス・オペレーションを検出するステップ
と、上記第1レベル・キャッシュより上位の全ての包含
レベル・キャッシュに、上記検出されたバス・オペレー
ションを通知するステップと、上記選択アドレスに作用
するバス・オペレーションまたは上記選択アドレスに対
応するキャッシュ・データ・エントリの消去の発生に応
答して、上記予約フラグをリセットするステップとを含
み、上記多重包含レベル・キャッシュ全体に渡って上記
選択アドレスの分布を要求することなく、原子的メモリ
参照を実行する方法。 (2)選択プロセッサによる選択アドレスへの保留の原
子的メモリ参照に応答して、上記選択プロセッサに関連
する各レベル・キャッシュ内に予約フラグをセットする
上記ステップが、選択プロセッサによる選択アドレスへ
の保留の原子的メモリ参照に応答して、上記選択プロセ
ッサに関連する各レベル・キャッシュ内に予約ビットを
セットするステップを含む、(1)記載の方法。 (3)高レベル・キャッシュにおけるキャッシュ・デー
タ・エントリの置換に応答して、包含レベル・キャッシ
ュの対応するキャッシュ・データ・エントリを消去する
上記ステップが、高レベル・キャッシュにおけるキャッ
シュ・データ・エントリの置換に応答して、包含レベル
・キャッシュ内のキャッシュ・データ・エントリに対す
る変更目的読出し(RWITM)命令を発行するステッ
プを含む、(1)記載の方法。 (4)各々が多重包含レベル・キャッシュを含み、共通
バスを介して互いにリンクされる複数プロセッサを含む
マルチプロセッサ・データ処理システムにおける原子的
メモリ参照を実行するシステムであって、選択プロセッ
サによる選択アドレスへの保留の原子的メモリ参照に応
答して、上記選択プロセッサに関連する各レベル・キャ
ッシュ内に予約フラグをセットする手段と、高レベル・
キャッシュにおけるキャッシュ・データ・エントリの置
換に応答して、包含レベル・キャッシュの対応するキャ
ッシュ・データ・エントリを消去する手段と、第1レベ
ル・キャッシュにおいて、上記第1レベル・キャッシュ
のキャッシュ・データ・エントリに作用する上記共通バ
ス上の各バス・オペレーションを検出する手段と、上記
第1レベル・キャッシュより上位の全ての包含レベル・
キャッシュに、上記検出されたバス・オペレーションを
通知する手段と、上記選択アドレスに作用するバス・オ
ペレーションまたは上記選択アドレスに対応するキャッ
シュ・データ・エントリの消去の発生に応答して、上記
予約フラグをリセットする手段とを含み、上記多重包含
レベル・キャッシュ全体に渡って上記選択アドレスの分
布を要求することなく、原子的メモリ参照を実行するシ
ステム。 (5)選択プロセッサによる選択アドレスへの保留の原
子的メモリ参照に応答して、上記選択プロセッサに関連
する各レベル・キャッシュ内に予約フラグをセットする
上記手段が、選択プロセッサによる選択アドレスへの保
留の原子的メモリ参照に応答して、上記選択プロセッサ
に関連する各レベル・キャッシュ内に予約ビットをセッ
トする手段を含む、(4)記載のシステム。 (6)高レベル・キャッシュにおけるキャッシュ・デー
タ・エントリの置換に応答して、包含レベル・キャッシ
ュの対応するキャッシュ・データ・エントリを消去する
上記手段が、高レベル・キャッシュにおけるキャッシュ
・データ・エントリの置換に応答して、包含レベル・キ
ャッシュ内のキャッシュ・データ・エントリに対する変
更目的読出し(RWITM)命令を発行する手段を含
む、(4)記載のシステム。
る。 (1)各々が多重包含レベル・キャッシュを含み、共通
バスを介して互いにリンクされる複数プロセッサを含む
マルチプロセッサ・データ処理システムにおける原子的
メモリ参照を実行する方法であって、選択プロセッサに
よる選択アドレスへの保留の原子的メモリ参照に応答し
て、上記選択プロセッサに関連する各レベル・キャッシ
ュ内に予約フラグをセットするステップと、高レベル・
キャッシュにおけるキャッシュ・データ・エントリの置
換に応答して、包含レベル・キャッシュの対応するキャ
ッシュ・データ・エントリを消去するステップと、第1
レベル・キャッシュにおいて、上記第1レベル・キャッ
シュのキャッシュ・データ・エントリに作用する上記共
通バス上の各バス・オペレーションを検出するステップ
と、上記第1レベル・キャッシュより上位の全ての包含
レベル・キャッシュに、上記検出されたバス・オペレー
ションを通知するステップと、上記選択アドレスに作用
するバス・オペレーションまたは上記選択アドレスに対
応するキャッシュ・データ・エントリの消去の発生に応
答して、上記予約フラグをリセットするステップとを含
み、上記多重包含レベル・キャッシュ全体に渡って上記
選択アドレスの分布を要求することなく、原子的メモリ
参照を実行する方法。 (2)選択プロセッサによる選択アドレスへの保留の原
子的メモリ参照に応答して、上記選択プロセッサに関連
する各レベル・キャッシュ内に予約フラグをセットする
上記ステップが、選択プロセッサによる選択アドレスへ
の保留の原子的メモリ参照に応答して、上記選択プロセ
ッサに関連する各レベル・キャッシュ内に予約ビットを
セットするステップを含む、(1)記載の方法。 (3)高レベル・キャッシュにおけるキャッシュ・デー
タ・エントリの置換に応答して、包含レベル・キャッシ
ュの対応するキャッシュ・データ・エントリを消去する
上記ステップが、高レベル・キャッシュにおけるキャッ
シュ・データ・エントリの置換に応答して、包含レベル
・キャッシュ内のキャッシュ・データ・エントリに対す
る変更目的読出し(RWITM)命令を発行するステッ
プを含む、(1)記載の方法。 (4)各々が多重包含レベル・キャッシュを含み、共通
バスを介して互いにリンクされる複数プロセッサを含む
マルチプロセッサ・データ処理システムにおける原子的
メモリ参照を実行するシステムであって、選択プロセッ
サによる選択アドレスへの保留の原子的メモリ参照に応
答して、上記選択プロセッサに関連する各レベル・キャ
ッシュ内に予約フラグをセットする手段と、高レベル・
キャッシュにおけるキャッシュ・データ・エントリの置
換に応答して、包含レベル・キャッシュの対応するキャ
ッシュ・データ・エントリを消去する手段と、第1レベ
ル・キャッシュにおいて、上記第1レベル・キャッシュ
のキャッシュ・データ・エントリに作用する上記共通バ
ス上の各バス・オペレーションを検出する手段と、上記
第1レベル・キャッシュより上位の全ての包含レベル・
キャッシュに、上記検出されたバス・オペレーションを
通知する手段と、上記選択アドレスに作用するバス・オ
ペレーションまたは上記選択アドレスに対応するキャッ
シュ・データ・エントリの消去の発生に応答して、上記
予約フラグをリセットする手段とを含み、上記多重包含
レベル・キャッシュ全体に渡って上記選択アドレスの分
布を要求することなく、原子的メモリ参照を実行するシ
ステム。 (5)選択プロセッサによる選択アドレスへの保留の原
子的メモリ参照に応答して、上記選択プロセッサに関連
する各レベル・キャッシュ内に予約フラグをセットする
上記手段が、選択プロセッサによる選択アドレスへの保
留の原子的メモリ参照に応答して、上記選択プロセッサ
に関連する各レベル・キャッシュ内に予約ビットをセッ
トする手段を含む、(4)記載のシステム。 (6)高レベル・キャッシュにおけるキャッシュ・デー
タ・エントリの置換に応答して、包含レベル・キャッシ
ュの対応するキャッシュ・データ・エントリを消去する
上記手段が、高レベル・キャッシュにおけるキャッシュ
・データ・エントリの置換に応答して、包含レベル・キ
ャッシュ内のキャッシュ・データ・エントリに対する変
更目的読出し(RWITM)命令を発行する手段を含
む、(4)記載のシステム。
【0046】
【発明の効果】以上説明したように、本発明によれば、
多重レベル・キャッシュ・システムにおいて、予約の保
留の間におけるキャッシュ・システムからの関連データ
・ブロックの廃棄にも関わらず、予約状態を維持可能な
原子的メモリ参照を達成する方法及びシステムが提供さ
れる。
多重レベル・キャッシュ・システムにおいて、予約の保
留の間におけるキャッシュ・システムからの関連データ
・ブロックの廃棄にも関わらず、予約状態を維持可能な
原子的メモリ参照を達成する方法及びシステムが提供さ
れる。
【図1】本発明の方法及びシステムを実施するために使
用されるマルチプロセッサ・データ処理システムを示す
ハイレベル・ブロック図である。
用されるマルチプロセッサ・データ処理システムを示す
ハイレベル・ブロック図である。
【図2】本発明の方法及びシステムを実施するために使
用される図1のマルチプロセッサ・データ処理システム
内の多重レベル・キャッシュ・システムのハイレベル・
ブロック図である。
用される図1のマルチプロセッサ・データ処理システム
内の多重レベル・キャッシュ・システムのハイレベル・
ブロック図である。
【図3】本発明の方法及びシステムによる、"ロード・
アンド・リザーブ"(LARX)命令の処理を表すハイ
レベル論理流れ図である。
アンド・リザーブ"(LARX)命令の処理を表すハイ
レベル論理流れ図である。
【図4】本発明の方法及びシステムによる、予約フラグ
をリセットするために使用される、レベル2(L2)キ
ャッシュにおけるフィルタ処理を表すハイレベル論理流
れ図である。
をリセットするために使用される、レベル2(L2)キ
ャッシュにおけるフィルタ処理を表すハイレベル論理流
れ図である。
【図5】本発明の方法及びシステムによる、予約フラグ
をリセットするために使用される、レベル1(L1)キ
ャッシュにおけるフィルタ処理を表すハイレベル論理流
れ図である。
をリセットするために使用される、レベル1(L1)キ
ャッシュにおけるフィルタ処理を表すハイレベル論理流
れ図である。
【図6】本発明の方法及びシステムによる、"条件付き
記憶"(STCX)命令の処理を表すハイレベル論理流
れ図である。
記憶"(STCX)命令の処理を表すハイレベル論理流
れ図である。
【図7】本発明の方法及びシステムによる、多重レベル
・キャッシュ・システムのバス・トラフィックのフィル
タ制御処理を表すハイレベル論理流れ図である。
・キャッシュ・システムのバス・トラフィックのフィル
タ制御処理を表すハイレベル論理流れ図である。
6 マルチプロセッサ・データ処理システム 8 バス 10 マルチスケーラ・プロセッサ 18 システム・メモリ 20 レベル2(L2)キャッシュ・メモリ 40 レベル1(L1)キャッシュ・メモリ 42 予約フラグ 44 予約アドレス 50 読出しオペレーション・キュー 52 レベル1(L1)バス制御 54 レベル2(L2)バス制御 60 スヌープ・プロトコル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョン・ステファン・マヒッチ アメリカ合衆国78759、テキサス州オー スティン、アルバーストーン・ウェイ 8606 (72)発明者 ロバート・ジェームズ・リース アメリカ合衆国78717、テキサス州オー スティン、エフライム・ロード 8100
Claims (6)
- 【請求項1】第1レベル・キャッシュが最低位であり、
各レベル・キャッシュが自身より低位のレベル・キャッ
シュの全てのデータ・エントリを含む、多重包含レベル
・キャッシュを含み、共通バスを介して互いにリンクさ
れる複数プロセッサを含むマルチプロセッサ・データ処
理システムにおける原子的メモリ参照を実行する方法で
あって、 選択プロセッサによる選択アドレスへの保留中の原子的
メモリ参照に応答して、上記選択プロセッサに関連する
各レベル・キャッシュ内に予約フラグをセットするステ
ップと、 高位のレベル・キャッシュにおけるキャッシュ・データ
・エントリの置換に応答して、包含レベル・キャッシュ
の対応するキャッシュ・データ・エントリを消去するス
テップと、 第1レベル・キャッシュにおいて、上記第1レベル・キ
ャッシュのキャッシュ・データ・エントリに作用する上
記共通バス上の各バス・オペレーションを検出するステ
ップと、 上記第1レベル・キャッシュより高位の全ての包含レベ
ル・キャッシュに、上記検出されたバス・オペレーショ
ンを通知するステップと、 上記選択アドレスに作用するバス・オペレーションまた
は上記選択アドレスに対応するキャッシュ・データ・エ
ントリの消去の発生に応答して、上記予約フラグをリセ
ットするステップとを含み、 上記多重包含レベル・キャッシュ全体に渡って上記選択
アドレスの分布を要求することなく、原子的メモリ参照
を実行する方法。 - 【請求項2】選択プロセッサによる選択アドレスへの保
留中の原子的メモリ参照に応答して、上記選択プロセッ
サに関連する各レベル・キャッシュ内に予約フラグをセ
ットする上記ステップが、選択プロセッサによる選択ア
ドレスへの保留中の原子的メモリ参照に応答して、上記
選択プロセッサに関連する各レベル・キャッシュ内に予
約ビットをセットするステップを含む、請求項1記載の
方法。 - 【請求項3】高位のレベル・キャッシュにおけるキャッ
シュ・データ・エントリの置換に応答して、包含レベル
・キャッシュの対応するキャッシュ・データ・エントリ
を消去する上記ステップが、高位のレベル・キャッシュ
におけるキャッシュ・データ・エントリの置換に応答し
て、包含レベル・キャッシュ内のキャッシュ・データ・
エントリに対する変更目的読出し(RWITM)命令を
発行するステップを含む、請求項1記載の方法。 - 【請求項4】各々が多重包含レベル・キャッシュを含
み、共通バスを介して互いにリンクされる複数プロセッ
サを含むマルチプロセッサ・データ処理システムにおけ
る原子的メモリ参照を実行するシステムであって、 選択プロセッサによる選択アドレスへの保留中の原子的
メモリ参照に応答して、上記選択プロセッサに関連する
各レベル・キャッシュ内に予約フラグをセットする手段
と、 高位のレベル・キャッシュにおけるキャッシュ・データ
・エントリの置換に応答して、包含レベル・キャッシュ
の対応するキャッシュ・データ・エントリを消去する手
段と、 第1レベル・キャッシュにおいて、上記第1レベル・キ
ャッシュのキャッシュ・データ・エントリに作用する上
記共通バス上の各バス・オペレーションを検出する手段
と、 上記第1レベル・キャッシュより高位の全ての包含レベ
ル・キャッシュに、上記検出されたバス・オペレーショ
ンを通知する手段と、 上記選択アドレスに作用するバス・オペレーションまた
は上記選択アドレスに対応するキャッシュ・データ・エ
ントリの消去の発生に応答して、上記予約フラグをリセ
ットする手段とを含み、 上記多重包含レベル・キャッシュ全体に渡って上記選択
アドレスの分布を要求することなく、原子的メモリ参照
を実行するシステム。 - 【請求項5】選択プロセッサによる選択アドレスへの保
留中の原子的メモリ参照に応答して、上記選択プロセッ
サに関連する各レベル・キャッシュ内に予約フラグをセ
ットする上記手段が、選択プロセッサによる選択アドレ
スへの保留中の原子的メモリ参照に応答して、上記選択
プロセッサに関連する各レベル・キャッシュ内に予約ビ
ットをセットする手段を含む、請求項4記載のシステ
ム。 - 【請求項6】高位のレベル・キャッシュにおけるキャッ
シュ・データ・エントリの置換に応答して、包含レベル
・キャッシュの対応するキャッシュ・データ・エントリ
を消去する上記手段が、高位のレベル・キャッシュにお
けるキャッシュ・データ・エントリの置換に応答して、
包含レベル・キャッシュ内のキャッシュ・データ・エン
トリに対する変更目的読出し(RWITM)命令を発行
する手段を含む、請求項4記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US1096893A | 1993-01-29 | 1993-01-29 | |
US010968 | 1993-01-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06243107A JPH06243107A (ja) | 1994-09-02 |
JP2541771B2 true JP2541771B2 (ja) | 1996-10-09 |
Family
ID=21748279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5319572A Expired - Lifetime JP2541771B2 (ja) | 1993-01-29 | 1993-12-20 | 原子的メモリ参照方法及びシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US5706464A (ja) |
EP (1) | EP0608622A1 (ja) |
JP (1) | JP2541771B2 (ja) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6073211A (en) * | 1994-12-13 | 2000-06-06 | International Business Machines Corporation | Method and system for memory updates within a multiprocessor data processing system |
US6223260B1 (en) * | 1996-01-25 | 2001-04-24 | Unisys Corporation | Multi-bus data processing system in which all data words in high level cache memories have any one of four states and all data words in low level cache memories have any one of three states |
JPH1091588A (ja) * | 1996-09-13 | 1998-04-10 | Nec Ic Microcomput Syst Ltd | データ転送装置 |
US5895495A (en) * | 1997-03-13 | 1999-04-20 | International Business Machines Corporation | Demand-based larx-reserve protocol for SMP system buses |
US6115794A (en) * | 1997-04-14 | 2000-09-05 | International Business Machines Corporation | Method and system of providing a pseudo-precise inclusivity scheme in a sectored cache memory for maintaining cache coherency within a data-processing system |
US5900017A (en) * | 1997-05-14 | 1999-05-04 | International Business Machines Corporation | Snooping a variable number of cache addresses in a multiple processor system by a single snoop request |
US6175899B1 (en) * | 1997-05-19 | 2001-01-16 | International Business Machines Corporation | Method for providing virtual atomicity in multi processor environment having access to multilevel caches |
US6098156A (en) * | 1997-07-22 | 2000-08-01 | International Business Machines Corporation | Method and system for rapid line ownership transfer for multiprocessor updates |
US6347363B1 (en) * | 1998-02-17 | 2002-02-12 | International Business Machines Corporation | Merged vertical cache controller mechanism with combined cache controller and snoop queries for in-line caches |
US6378048B1 (en) * | 1998-11-12 | 2002-04-23 | Intel Corporation | “SLIME” cache coherency system for agents with multi-layer caches |
US6389527B1 (en) * | 1999-02-08 | 2002-05-14 | Kabushiki Kaisha Toshiba | Microprocessor allowing simultaneous instruction execution and DMA transfer |
US6314491B1 (en) | 1999-03-01 | 2001-11-06 | International Business Machines Corporation | Peer-to-peer cache moves in a multiprocessor data processing system |
US6549989B1 (en) * | 1999-11-09 | 2003-04-15 | International Business Machines Corporation | Extended cache coherency protocol with a “lock released” state |
US6629212B1 (en) * | 1999-11-09 | 2003-09-30 | International Business Machines Corporation | High speed lock acquisition mechanism with time parameterized cache coherency states |
US6629209B1 (en) * | 1999-11-09 | 2003-09-30 | International Business Machines Corporation | Cache coherency protocol permitting sharing of a locked data granule |
US6625701B1 (en) | 1999-11-09 | 2003-09-23 | International Business Machines Corporation | Extended cache coherency protocol with a modified store instruction lock release indicator |
US6629214B1 (en) | 1999-11-09 | 2003-09-30 | International Business Machines Corporation | Extended cache coherency protocol with a persistent “lock acquired” state |
US6681320B1 (en) | 1999-12-29 | 2004-01-20 | Intel Corporation | Causality-based memory ordering in a multiprocessing environment |
US6389517B1 (en) * | 2000-02-25 | 2002-05-14 | Sun Microsystems, Inc. | Maintaining snoop traffic throughput in presence of an atomic operation a first port for a first queue tracks cache requests and a second port for a second queue snoops that have yet to be filtered |
US6347360B1 (en) * | 2000-02-25 | 2002-02-12 | Sun Microsystems, Inc. | Apparatus and method for preventing cache data eviction during an atomic operation |
US6725358B1 (en) * | 2000-06-22 | 2004-04-20 | International Business Machines Corporation | Processor and method having a load reorder queue that supports reservations |
US6868491B1 (en) | 2000-06-22 | 2005-03-15 | International Business Machines Corporation | Processor and method of executing load instructions out-of-order having reduced hazard penalty |
US6584546B2 (en) | 2001-01-16 | 2003-06-24 | Gautam Nag Kavipurapu | Highly efficient design of storage array for use in first and second cache spaces and memory subsystems |
US7089373B2 (en) * | 2003-06-12 | 2006-08-08 | International Business Machines Corporation | Shadow register to enhance lock acquisition |
US7426625B2 (en) * | 2004-03-31 | 2008-09-16 | International Business Machines Corporation | Data processing system and computer program product for support of system memory addresses with holes |
US7197604B2 (en) * | 2004-10-14 | 2007-03-27 | International Business Machines Corporation | Processor, data processing system and method for synchronzing access to data in shared memory |
US7254678B2 (en) * | 2005-03-17 | 2007-08-07 | International Business Machines Corporation | Enhanced STCX design to improve subsequent load efficiency |
US7421529B2 (en) * | 2005-10-20 | 2008-09-02 | Qualcomm Incorporated | Method and apparatus to clear semaphore reservation for exclusive access to shared memory |
US8959292B1 (en) * | 2005-12-22 | 2015-02-17 | The Board Of Trustees Of The Leland Stanford Junior University | Atomic memory access hardware implementations |
WO2009122694A1 (ja) * | 2008-03-31 | 2009-10-08 | パナソニック株式会社 | キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム |
US8108610B1 (en) * | 2008-10-21 | 2012-01-31 | Nvidia Corporation | Cache-based control of atomic operations in conjunction with an external ALU block |
US8616007B2 (en) * | 2009-01-22 | 2013-12-31 | Siemens Energy, Inc. | Structural attachment system for transition duct outlet |
US8904118B2 (en) | 2011-01-07 | 2014-12-02 | International Business Machines Corporation | Mechanisms for efficient intra-die/intra-chip collective messaging |
US20120179896A1 (en) | 2011-01-10 | 2012-07-12 | International Business Machines Corporation | Method and apparatus for a hierarchical synchronization barrier in a multi-node system |
US9195550B2 (en) | 2011-02-03 | 2015-11-24 | International Business Machines Corporation | Method for guaranteeing program correctness using fine-grained hardware speculative execution |
CN103984647B (zh) * | 2013-02-08 | 2017-07-21 | 上海芯豪微电子有限公司 | 存储表替换方法 |
US11068407B2 (en) | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
US10884740B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
US11119781B2 (en) | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
US11106608B1 (en) | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5136700A (en) * | 1989-12-22 | 1992-08-04 | Digital Equipment Corporation | Apparatus and method for reducing interference in two-level cache memories |
ATE170642T1 (de) * | 1990-06-15 | 1998-09-15 | Compaq Computer Corp | Mehrstufeneinschluss in mehrstufigen cache- speicherhierarchien |
US5404482A (en) * | 1990-06-29 | 1995-04-04 | Digital Equipment Corporation | Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills |
JPH04230549A (ja) * | 1990-10-12 | 1992-08-19 | Internatl Business Mach Corp <Ibm> | 多重レベル・キャッシュ |
US5237694A (en) * | 1991-05-30 | 1993-08-17 | Advanced Micro Devices, Inc. | Processing system and method including lock buffer for controlling exclusive critical problem accesses by each processor |
GB2256512B (en) * | 1991-06-04 | 1995-03-15 | Intel Corp | Second level cache controller unit and system |
US5574922A (en) * | 1994-06-17 | 1996-11-12 | Apple Computer, Inc. | Processor with sequences of processor instructions for locked memory updates |
-
1993
- 1993-12-20 EP EP93310327A patent/EP0608622A1/en not_active Withdrawn
- 1993-12-20 JP JP5319572A patent/JP2541771B2/ja not_active Expired - Lifetime
-
1996
- 1996-02-29 US US08/608,978 patent/US5706464A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0608622A1 (en) | 1994-08-03 |
US5706464A (en) | 1998-01-06 |
JPH06243107A (ja) | 1994-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2541771B2 (ja) | 原子的メモリ参照方法及びシステム | |
US7539823B2 (en) | Multiprocessing apparatus having reduced cache miss occurrences | |
JP3431824B2 (ja) | アクセス方法及び処理装置 | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
US5715428A (en) | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system | |
US5829038A (en) | Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure | |
US6839816B2 (en) | Shared cache line update mechanism | |
US7237068B2 (en) | Computer system employing bundled prefetching and null-data packet transmission | |
US5671391A (en) | Coherent copyback protocol for multi-level cache memory systems | |
US8924653B2 (en) | Transactional cache memory system | |
US6546462B1 (en) | CLFLUSH micro-architectural implementation method and system | |
US5043886A (en) | Load/store with write-intent for write-back caches | |
JP2010507160A (ja) | データ処理装置の共有メモリへの書込みアクセス要求の処理 | |
US6629212B1 (en) | High speed lock acquisition mechanism with time parameterized cache coherency states | |
US5835950A (en) | Self-invalidation method for reducing coherence overheads in a bus-based shared-memory multiprocessor apparatus | |
US6629209B1 (en) | Cache coherency protocol permitting sharing of a locked data granule | |
JP3193684B2 (ja) | キャッシュ・コヒーレンシを保証する方法及び装置 | |
JP2004326758A (ja) | 局所的なキャッシュ・ブロック・フラッシュ命令 | |
CN113853590A (zh) | 伪随机路选择 | |
WO1996039665A1 (en) | Method and apparatus for reducing cache snooping overhead in a multilevel cache system | |
JP2547949B2 (ja) | データ・コヒーレンシを維持する方法及びシステム | |
JP3245125B2 (ja) | 垂直キャッシュのための擬似精細i−キャッシュ包含性 | |
JP4577729B2 (ja) | ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法 | |
US8332592B2 (en) | Graphics processor with snoop filter | |
KR20070040340A (ko) | 소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템 |