JP3206914B2 - 多重プロセッサ・システム - Google Patents
多重プロセッサ・システムInfo
- Publication number
- JP3206914B2 JP3206914B2 JP27204390A JP27204390A JP3206914B2 JP 3206914 B2 JP3206914 B2 JP 3206914B2 JP 27204390 A JP27204390 A JP 27204390A JP 27204390 A JP27204390 A JP 27204390A JP 3206914 B2 JP3206914 B2 JP 3206914B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- processor
- processors
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000004891 communication Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 17
- 238000000034 method Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 19
- 239000000872 buffer Substances 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000011094 buffer selection Methods 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000012536 storage buffer Substances 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 2
- YREOLPGEVLLKMB-UHFFFAOYSA-N 3-methylpyridin-1-ium-2-amine bromide hydrate Chemical compound O.[Br-].Cc1ccc[nH+]c1N YREOLPGEVLLKMB-UHFFFAOYSA-N 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/521—Atomic
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の詳細な説明】 (産業上の利用分野) 本発明は、全体として、複数のタスクの同時実行を容
易にする、多重プロセッサ・システムに係る。更に詳し
くいえば、本発明は、共用データに対する多数の主記憶
装置アクセスを実行する重要な命令の各々が、必要とさ
れている主記憶装置アクセスを、予め定義されている命
令クラスに関して不可分に実行しているように見えるこ
とを許す装置に係る。
易にする、多重プロセッサ・システムに係る。更に詳し
くいえば、本発明は、共用データに対する多数の主記憶
装置アクセスを実行する重要な命令の各々が、必要とさ
れている主記憶装置アクセスを、予め定義されている命
令クラスに関して不可分に実行しているように見えるこ
とを許す装置に係る。
(従来の技術) 任意の時刻に単一のタスクのみを実行する単一のプロ
セッサだけを含むユニプロセッサ・システムでは、その
資源の制御に幾つかの問題を生ずる。それらの資源のタ
イプには、主記憶装置と、通信チャネルと、I/O装置等
が含まれるが、他のタイプの資源も存在する。そのよう
なシステムでは、実行中のタスクだけがシステムの任意
の資源をアクセスできる。従って、各タスクがその活動
を完了するまで、各タスクは、必要とされている任意の
資源と、CPU自体とに対するその制御を維持する。
セッサだけを含むユニプロセッサ・システムでは、その
資源の制御に幾つかの問題を生ずる。それらの資源のタ
イプには、主記憶装置と、通信チャネルと、I/O装置等
が含まれるが、他のタイプの資源も存在する。そのよう
なシステムでは、実行中のタスクだけがシステムの任意
の資源をアクセスできる。従って、各タスクがその活動
を完了するまで、各タスクは、必要とされている任意の
資源と、CPU自体とに対するその制御を維持する。
実際に、ユニプロセッサ・システム内の各命令は、
「不可分」であるよう設計される。ここに、不可分命令
というのは、1つの最小作業単位(アトミシティ)であ
るように見えるものとして定義される。ユニプロセッサ
・システムでは、2つの異なるタスク命令ストリームか
らの2つの命令が、(インタリーブされたフェッチ又は
記憶を伴って)同時に実行されるように見えることはで
きない。その理由は、タスク切換えが、命令の境界(又
は非常に長い命令の場合にはその命令内の中間のチェッ
クポイント)で行われるように制約されているからであ
る。
「不可分」であるよう設計される。ここに、不可分命令
というのは、1つの最小作業単位(アトミシティ)であ
るように見えるものとして定義される。ユニプロセッサ
・システムでは、2つの異なるタスク命令ストリームか
らの2つの命令が、(インタリーブされたフェッチ又は
記憶を伴って)同時に実行されるように見えることはで
きない。その理由は、タスク切換えが、命令の境界(又
は非常に長い命令の場合にはその命令内の中間のチェッ
クポイント)で行われるように制約されているからであ
る。
これとは対照的に、多重タスク/多重プロセッサ・シ
ステムでは、システム資源に対するプロセッサのアクセ
スを制御することが重要である。その理由は、それらの
システムは、資源を共用する多数のタスクの同時的な実
行、又はインタリーブされた実行を許容するからであ
る。そのようなアクセスを制御するために、種々の先行
技術、例えばタスク待ち行列、ロッキング・スキーム等
が開発されている。
ステムでは、システム資源に対するプロセッサのアクセ
スを制御することが重要である。その理由は、それらの
システムは、資源を共用する多数のタスクの同時的な実
行、又はインタリーブされた実行を許容するからであ
る。そのようなアクセスを制御するために、種々の先行
技術、例えばタスク待ち行列、ロッキング・スキーム等
が開発されている。
IBMシステム/370のような、共用データに対する多重
タスク/多重プロセッサ動作を提供する従来の計算機シ
ステムでは、共用データに対して主記憶装置の多重アク
セスを不可分に行うための重要な命令が定義されてい
る。そのようなシステムでは、所与のCPU上で実行中の
重要な命令が、当該所与のCPUによる(主記憶装置内の
或る場所を対象とする)最初のアクセスと最後のアクセ
スの間に他の任意のCPUがこれと同じ場所をアクセスす
ることを禁止して、それらのアクセスの全てを実行する
ように見える。
タスク/多重プロセッサ動作を提供する従来の計算機シ
ステムでは、共用データに対して主記憶装置の多重アク
セスを不可分に行うための重要な命令が定義されてい
る。そのようなシステムでは、所与のCPU上で実行中の
重要な命令が、当該所与のCPUによる(主記憶装置内の
或る場所を対象とする)最初のアクセスと最後のアクセ
スの間に他の任意のCPUがこれと同じ場所をアクセスす
ることを禁止して、それらのアクセスの全てを実行する
ように見える。
IBMシステム/370では、「ラスト・アンド・セット(T
EST AND SET)」、「コンペア・アンド・スワップ(COM
PARE AND SWAP)」のような命令が定義されている。こ
れらの命令は、主記憶装置アクセスの初めから終わりま
で分割できない態様で(すなわち、不可分的に)、多数
の主記憶装置アクセスを行う。
EST AND SET)」、「コンペア・アンド・スワップ(COM
PARE AND SWAP)」のような命令が定義されている。こ
れらの命令は、主記憶装置アクセスの初めから終わりま
で分割できない態様で(すなわち、不可分的に)、多数
の主記憶装置アクセスを行う。
「テスト・アンド・セット」命令を用いると、1つの
動作中に、主記憶装置から或るワードをフェッチし、そ
の特定のビットをテストした後、修正されたワードを主
記憶装置へ戻すことができ、その期間中には、他のプロ
セッサの他の全てのタスクが主記憶装置内のその特定の
ワードをアクセスすることを禁止できる。このフェッチ
及び修正ワードの戻し(記憶)は、1つの不可分単位又
は不可分参照を形成する。不可分参照は、一旦始まる
と、多重プロセッサ・システム内の他のどのCPUによっ
ても割込み又はインタリーブすることはできない。
動作中に、主記憶装置から或るワードをフェッチし、そ
の特定のビットをテストした後、修正されたワードを主
記憶装置へ戻すことができ、その期間中には、他のプロ
セッサの他の全てのタスクが主記憶装置内のその特定の
ワードをアクセスすることを禁止できる。このフェッチ
及び修正ワードの戻し(記憶)は、1つの不可分単位又
は不可分参照を形成する。不可分参照は、一旦始まる
と、多重プロセッサ・システム内の他のどのCPUによっ
ても割込み又はインタリーブすることはできない。
「コンペア・アンド・スワップ」命令に関しては、
(比較のための)或るオペランドのフェッチと、(交換
のための)このオペランドの元の場所への記憶とは、他
のCPUから観察すると、ブロック同時インタロック化更
新参照であるように見える。すなわち、他のどのCPU
も、最初のCPUの(比較のための)フェッチと(交換の
ための)記憶の間で、主記憶装置を対象とする如何なる
フェッチ又は記憶をも行うようには見えない。従って、
主記憶装置を対象とする「コンペア・アンド・スワッ
プ」命令の動作は、他のCPUから観察すると、不可分で
あるように見える。
(比較のための)或るオペランドのフェッチと、(交換
のための)このオペランドの元の場所への記憶とは、他
のCPUから観察すると、ブロック同時インタロック化更
新参照であるように見える。すなわち、他のどのCPU
も、最初のCPUの(比較のための)フェッチと(交換の
ための)記憶の間で、主記憶装置を対象とする如何なる
フェッチ又は記憶をも行うようには見えない。従って、
主記憶装置を対象とする「コンペア・アンド・スワッ
プ」命令の動作は、他のCPUから観察すると、不可分で
あるように見える。
明らかに、IBMシステム/370のような多重プロセッサ
環境では、テスト又は比較のためのフェッチと、セット
又は交換のための記憶とは、最初のCPUのフェッチと記
憶の間にロックされた(主記憶装置内の)場所を対象と
する他の任意のCPUによるデータのフェッチ又は記憶な
しに行われなければならない。この命令は、システム内
の任意のプロセッサ上で実行できる他の全ての命令に関
して、不可分に実行されねばならない。
環境では、テスト又は比較のためのフェッチと、セット
又は交換のための記憶とは、最初のCPUのフェッチと記
憶の間にロックされた(主記憶装置内の)場所を対象と
する他の任意のCPUによるデータのフェッチ又は記憶な
しに行われなければならない。この命令は、システム内
の任意のプロセッサ上で実行できる他の全ての命令に関
して、不可分に実行されねばならない。
周知のように、ハードウェアを用いて主記憶装置内の
所与の場所をロックすることにより、その所与の場所に
記憶されているオペランドに対して必要とされている保
護を提供することができる。すなわち、この場所に対す
る他の任意のCPUのアクセスを簡単に遅らせることがで
き、又はこの場所に対するインタロックされたそのアク
セスを遅らせることができる。IBMシステム/370が典型
的である従来の計算機では、不可分命令の処理をサポー
トするために、オペランドの場所を基礎とするハードウ
ェア・ロッキング技術が用いられている。
所与の場所をロックすることにより、その所与の場所に
記憶されているオペランドに対して必要とされている保
護を提供することができる。すなわち、この場所に対す
る他の任意のCPUのアクセスを簡単に遅らせることがで
き、又はこの場所に対するインタロックされたそのアク
セスを遅らせることができる。IBMシステム/370が典型
的である従来の計算機では、不可分命令の処理をサポー
トするために、オペランドの場所を基礎とするハードウ
ェア・ロッキング技術が用いられている。
前述した「テスト・アンド・セット」命令と「コンペ
ア・アンド・スワップ」命令のような不可分命令それ自
体は、ソフトウェア・ロックをテストし且つそのロック
が既にセットされていなければそのロックをセットする
能力を有する、ソフトウェアを提供するためにしばしば
用いられる。このソフトウェア能力は、ソフトウェア・
ロックを利用できなければ機能しない、或る機能の完全
性を保証する手段である。アクセスを行う1つ以上の汎
用命令(例えば、ロード命令)を完了した後で、ソフト
ウェアは、ソフトウェア・ロックを解除するために別の
命令を使用せねばならない。
ア・アンド・スワップ」命令のような不可分命令それ自
体は、ソフトウェア・ロックをテストし且つそのロック
が既にセットされていなければそのロックをセットする
能力を有する、ソフトウェアを提供するためにしばしば
用いられる。このソフトウェア能力は、ソフトウェア・
ロックを利用できなければ機能しない、或る機能の完全
性を保証する手段である。アクセスを行う1つ以上の汎
用命令(例えば、ロード命令)を完了した後で、ソフト
ウェアは、ソフトウェア・ロックを解除するために別の
命令を使用せねばならない。
それらのソフトウェア・ロックの使用には、ロック・
アドレスの計算を必要とする。このアドレスの計算に関
連するシステム・オーバヘッドが大きくなることがあ
り、特に、例えばロック・ビットを保持している場所に
対する比較を含んでいる緊密なループが実行されるとき
がそうである。この例では、所与の場所についての頻繁
で且つ反復的なアドレス計算がしばしば必要とされ、そ
れによりプロセッサの性能を低下させる。
アドレスの計算を必要とする。このアドレスの計算に関
連するシステム・オーバヘッドが大きくなることがあ
り、特に、例えばロック・ビットを保持している場所に
対する比較を含んでいる緊密なループが実行されるとき
がそうである。この例では、所与の場所についての頻繁
で且つ反復的なアドレス計算がしばしば必要とされ、そ
れによりプロセッサの性能を低下させる。
従って、データ構造(単一の場所、リンクされたリス
ト等)の完全性を維持するためにソフトウェア・ロック
を使用する必要性を最小限にすることにより、ソフトウ
ェア・ロックを利用する時に必要とされるアドレス計算
を最小限にすることが望ましい。
ト等)の完全性を維持するためにソフトウェア・ロック
を使用する必要性を最小限にすることにより、ソフトウ
ェア・ロックを利用する時に必要とされるアドレス計算
を最小限にすることが望ましい。
多重プロセッサ/多重タスク環境において共用される
データ構造の完全性を維持するための別の技術は、共用
メモリの区画化と、所与の不可分命令が持続する間にCP
Uにより必要とされる区画をロックすることを基礎にし
た、アドレス・ロッキング機構である。そのような技術
では、プロセッサの性能低下は、主記憶装置内の区画の
数の逆関数であり、またCPU相互間で供給される(区画
を識別する)信号の数の関数である。その機構は、区画
の数が増大するにつれて扱いにくくなるが、おそらく全
ての命令を不可分に見えるようにできる。更に、各区画
に対するロック・ビットとアドレス計算の検査、ロック
のセット及び解除が必要とされる。従って、IBMシステ
ム/370について先に述べたロッキング技術と比較する
と、メモリ区画技術の利用によっては、(アドレス計算
についての)大幅な改良は実現されない。
データ構造の完全性を維持するための別の技術は、共用
メモリの区画化と、所与の不可分命令が持続する間にCP
Uにより必要とされる区画をロックすることを基礎にし
た、アドレス・ロッキング機構である。そのような技術
では、プロセッサの性能低下は、主記憶装置内の区画の
数の逆関数であり、またCPU相互間で供給される(区画
を識別する)信号の数の関数である。その機構は、区画
の数が増大するにつれて扱いにくくなるが、おそらく全
ての命令を不可分に見えるようにできる。更に、各区画
に対するロック・ビットとアドレス計算の検査、ロック
のセット及び解除が必要とされる。従って、IBMシステ
ム/370について先に述べたロッキング技術と比較する
と、メモリ区画技術の利用によっては、(アドレス計算
についての)大幅な改良は実現されない。
アドレス計算に関連する従来技術に固有の別の問題
は、ユニプロセッサ上で実行するように設計されたプロ
グラムを、多重プロセッサ/多重タスク環境内で実行す
るように移行する際に生ずる、ソフトウェアに及ぼす影
響である。先に指摘したように、共用データの場所(一
般には、共用データ構造)に対するアクセスの制御は、
ユニプロセッサ環境から多重プロセッサ環境に移行する
際に重要である。従って、共用データ構造の完全性を保
証するために、オペランドの場所を基礎とするハードウ
ェア・ロックと、前述したソフトウェア・ロック以外の
手段を利用する計算機システムを設けることにより、そ
のような移行の結果としてのソフトウェアに対する影響
を最小限にすることも望ましい。
は、ユニプロセッサ上で実行するように設計されたプロ
グラムを、多重プロセッサ/多重タスク環境内で実行す
るように移行する際に生ずる、ソフトウェアに及ぼす影
響である。先に指摘したように、共用データの場所(一
般には、共用データ構造)に対するアクセスの制御は、
ユニプロセッサ環境から多重プロセッサ環境に移行する
際に重要である。従って、共用データ構造の完全性を保
証するために、オペランドの場所を基礎とするハードウ
ェア・ロックと、前述したソフトウェア・ロック以外の
手段を利用する計算機システムを設けることにより、そ
のような移行の結果としてのソフトウェアに対する影響
を最小限にすることも望ましい。
従来の計算機システムには、その性能を向上させるた
めに、密結合マイクロプロセッサ構成を採用するものも
ある。このような計算機システムは、多数の同一構造の
プロセッサを共用メモリ・インタフェースへ結合すると
ともに、多数のタスクを単一のシステム内で同時に実行
することを許容する。そのような計算機システムが非常
に有利となるのは、共用データの完全性を保証するため
に、オペランドの場所を基礎とするハードウェア・ロッ
ク及びソフトウェア・ロック以外の手段が利用できるよ
うな場合である。
めに、密結合マイクロプロセッサ構成を採用するものも
ある。このような計算機システムは、多数の同一構造の
プロセッサを共用メモリ・インタフェースへ結合すると
ともに、多数のタスクを単一のシステム内で同時に実行
することを許容する。そのような計算機システムが非常
に有利となるのは、共用データの完全性を保証するため
に、オペランドの場所を基礎とするハードウェア・ロッ
ク及びソフトウェア・ロック以外の手段が利用できるよ
うな場合である。
実際に、或る重要な命令が影響を及ぼすデータ構造又
はオブジェクト・クラスを基礎にして、当該重要な命令
が(予め定義された)複数の命令クラスに分割されるよ
うな計算機システムを利用できるようにするのが望まし
い。そうすると、(1)所与のクラス内の命令が実行さ
れている場合に、そのクラス内の命令だけをロック・ア
ウトすればよく、(2)予め定義されているクラス内の
いずれかの命令が所与のプロセッサにより実行中である
と識別されると、そのクラス内の命令をロック・アウト
するためのアドレス計算は必要とされないからである。
命令クラス内の残りのメンバをロック・アウトするため
には、ハードウェアを使用できる。
はオブジェクト・クラスを基礎にして、当該重要な命令
が(予め定義された)複数の命令クラスに分割されるよ
うな計算機システムを利用できるようにするのが望まし
い。そうすると、(1)所与のクラス内の命令が実行さ
れている場合に、そのクラス内の命令だけをロック・ア
ウトすればよく、(2)予め定義されているクラス内の
いずれかの命令が所与のプロセッサにより実行中である
と識別されると、そのクラス内の命令をロック・アウト
するためのアドレス計算は必要とされないからである。
命令クラス内の残りのメンバをロック・アウトするため
には、ハードウェアを使用できる。
実際に、各クラス内の命令は、1組の「相対的」不可
分命令を構成する。すなわち、IBMシステム/370のよう
に、他のプロセッサ上で実行中の全ての命令に関して不
可分である幾つかの不可分命令を提供するのではなく
て、(所与のクラスからの)所与の相対的不可分命令が
実行されている間に、この相対的不可分命令により用い
られる主記憶装置の内容が、同じクラスからの相対的不
可分命令を実行している他のプロセッサにより変更され
ないことを保証するように、複数組の相対的不可分命令
を定義することができる。
分命令を構成する。すなわち、IBMシステム/370のよう
に、他のプロセッサ上で実行中の全ての命令に関して不
可分である幾つかの不可分命令を提供するのではなく
て、(所与のクラスからの)所与の相対的不可分命令が
実行されている間に、この相対的不可分命令により用い
られる主記憶装置の内容が、同じクラスからの相対的不
可分命令を実行している他のプロセッサにより変更され
ないことを保証するように、複数組の相対的不可分命令
を定義することができる。
実行中の1つの相対的不可分命令と同じクラス内に含
まれない1つ以上の命令は、他のプロセッサ上で同時に
動作することを許される。定義により、すなわち、同じ
クラス内に含まれないことにより、それらの命令は、実
行中の相対的不可分命令により利用されているデータ構
造に影響を及ぼすことができない。
まれない1つ以上の命令は、他のプロセッサ上で同時に
動作することを許される。定義により、すなわち、同じ
クラス内に含まれないことにより、それらの命令は、実
行中の相対的不可分命令により利用されているデータ構
造に影響を及ぼすことができない。
その結果、所望の多重プロセッサ・システム内のプロ
セッサの性能を、従来のシステムより向上させることが
できる。所与の相対的不可分命令が実行されている時に
は、この命令が影響を及ぼす特定のデータ構造を保護す
る必要があるだけである。実行中の相対的不可分命令と
同じクラス内の命令を実行していないプロセッサは、そ
の処理を自由に続けることができる。
セッサの性能を、従来のシステムより向上させることが
できる。所与の相対的不可分命令が実行されている時に
は、この命令が影響を及ぼす特定のデータ構造を保護す
る必要があるだけである。実行中の相対的不可分命令と
同じクラス内の命令を実行していないプロセッサは、そ
の処理を自由に続けることができる。
更に、前述の相対的不可分命令の処理をサポートする
計算機システムは、ユニプロセッサ環境から多重プロセ
ッサ環境へのソフトウェアの移行をサポートし、ソフト
ウェア・ロックの必要性を最小限にする。その理由は、
共用データの完全性が、相対的不可分命令の影響を受け
るデータ構造のタイプ(これはユニプロセッサ環境と多
重プロセッサ環境の間では不変である)を基礎にし、先
に述べたように、所与のクラスのメンバとしての或る命
令を識別することが、ハードウェア・ロッキング技術に
より他のメンバを「ロック・アウトする」ために必要な
ことの全てであるからである。その結果、従来必要とさ
れていたソフトウェア・ロックが排除される。
計算機システムは、ユニプロセッサ環境から多重プロセ
ッサ環境へのソフトウェアの移行をサポートし、ソフト
ウェア・ロックの必要性を最小限にする。その理由は、
共用データの完全性が、相対的不可分命令の影響を受け
るデータ構造のタイプ(これはユニプロセッサ環境と多
重プロセッサ環境の間では不変である)を基礎にし、先
に述べたように、所与のクラスのメンバとしての或る命
令を識別することが、ハードウェア・ロッキング技術に
より他のメンバを「ロック・アウトする」ために必要な
ことの全てであるからである。その結果、従来必要とさ
れていたソフトウェア・ロックが排除される。
(発明が解決しようとする課題) 従って、本発明の目的は、予め定義された複数クラス
の命令を相対的に不可分な態様で処理する装置を包含す
る、多重プロセッサ・システムを提供することである。
そのようなシステムでは、所与のクラス内のメンバであ
る各命令は、同じクラス内のメンバである他の命令に関
してのみ、不可分に実行されるように制約される。
の命令を相対的に不可分な態様で処理する装置を包含す
る、多重プロセッサ・システムを提供することである。
そのようなシステムでは、所与のクラス内のメンバであ
る各命令は、同じクラス内のメンバである他の命令に関
してのみ、不可分に実行されるように制約される。
本発明の別の目的は、共用主記憶装置に対する多重ア
クセスを行う命令が、それらの命令により影響を受ける
データ構造を基礎にして、不可分に実行される命令の外
観を与えるような多重プロセッサ・システムを提供する
ことである。
クセスを行う命令が、それらの命令により影響を受ける
データ構造を基礎にして、不可分に実行される命令の外
観を与えるような多重プロセッサ・システムを提供する
ことである。
本発明の別の目的は、共用データの完全性を保護する
ためのソフトウェア・ロックの代替手段を提供すること
により、多重タスク/多重プロセッサ・システム内の性
能低下を最小限にすることである。
ためのソフトウェア・ロックの代替手段を提供すること
により、多重タスク/多重プロセッサ・システム内の性
能低下を最小限にすることである。
本発明の別の目的は、ソフトウェア・ロックとは独立
であるデータ構造ロッキング機構を提供することによ
り、ユニプロセッサ環境から多重プロセッサ環境へ移行
する際に典型的に経験される、共用データ・オブジェク
トを取り扱うソフトウェアに対する悪影響を最小にする
ことである。
であるデータ構造ロッキング機構を提供することによ
り、ユニプロセッサ環境から多重プロセッサ環境へ移行
する際に典型的に経験される、共用データ・オブジェク
トを取り扱うソフトウェアに対する悪影響を最小にする
ことである。
本発明の更に別の目的は、好適な実施例では、ハード
ウェア及び水平マイクロコードを用いて、ロック機構を
相対的不可分命令自体に組み込むことにより、相対的不
可分命令の処理をサポートする多重プロセッサ・システ
ムを提供することである。
ウェア及び水平マイクロコードを用いて、ロック機構を
相対的不可分命令自体に組み込むことにより、相対的不
可分命令の処理をサポートする多重プロセッサ・システ
ムを提供することである。
[課題を解決するための手段] 本発明に従って提供される多重プロセッサ・システム
は、(a)複数の共用データ構造を保持する共用主記憶
装置と、(b)この共用主記憶装置へ結合される複数の
プロセッサとを備え、各プロセッサは別の命令ストリー
ムを全ての他のプロセッサと並列に実行し、各プロセッ
サは複数の命令クラスに分割される命令セットをそれぞ
れ有し、各命令クラスはそのクラスに対応する1つの特
定の共用データ構造に応じた異なるロックをそれぞれ有
するように定義され、各命令クラスはそのクラスに対応
する特定の共用データ構造を処理対象として相対的に不
可分に実行される複数の命令から構成されており、
(c)いずれか1つの命令クラスに含まれる所与の命令
がいずれか1つのプロセッサにおいてその命令ストリー
ムから現に実行されているときに、その所与の命令が属
する命令クラスの指示を全ての他のプロセッサに通知す
るためのプロセッサ間通信手段と、(d)各プロセッサ
に関連してそれぞれ設けられ、関連するプロセッサの命
令ストリームから実行されようとしている他の命令の命
令クラスの指示を更に供給するための手段と、(e)各
プロセッサに関連してそれぞれ設けられ、所与の命令及
び他の命令がいずれも同一の命令クラスに属する場合に
は、所与の命令が他の命令による当該命令クラスに対応
する特定の共用データ構造の使用をロックするように、
指示の両方に応答して他の全てのプロセッサにおける他
の命令のオペレーションを選択的に遅らせるための手段
と、を備える。
は、(a)複数の共用データ構造を保持する共用主記憶
装置と、(b)この共用主記憶装置へ結合される複数の
プロセッサとを備え、各プロセッサは別の命令ストリー
ムを全ての他のプロセッサと並列に実行し、各プロセッ
サは複数の命令クラスに分割される命令セットをそれぞ
れ有し、各命令クラスはそのクラスに対応する1つの特
定の共用データ構造に応じた異なるロックをそれぞれ有
するように定義され、各命令クラスはそのクラスに対応
する特定の共用データ構造を処理対象として相対的に不
可分に実行される複数の命令から構成されており、
(c)いずれか1つの命令クラスに含まれる所与の命令
がいずれか1つのプロセッサにおいてその命令ストリー
ムから現に実行されているときに、その所与の命令が属
する命令クラスの指示を全ての他のプロセッサに通知す
るためのプロセッサ間通信手段と、(d)各プロセッサ
に関連してそれぞれ設けられ、関連するプロセッサの命
令ストリームから実行されようとしている他の命令の命
令クラスの指示を更に供給するための手段と、(e)各
プロセッサに関連してそれぞれ設けられ、所与の命令及
び他の命令がいずれも同一の命令クラスに属する場合に
は、所与の命令が他の命令による当該命令クラスに対応
する特定の共用データ構造の使用をロックするように、
指示の両方に応答して他の全てのプロセッサにおける他
の命令のオペレーションを選択的に遅らせるための手段
と、を備える。
本発明は、複数の相対的不可分命令を含む命令セット
を有する多重プロセッサ・システムを特徴とする。相対
的不可分命令というのは、それらの命令の複数の命令ク
ラスへの分割で定義される。すなわち、各クラス内のそ
れらの命令は、複数のプロセッサによって共用されてい
るデータ処理資源(例えば、密結合多重プロセッサ・シ
ステムの場合は主記憶装置の内容)を有するような多重
プロセッサ・システム内の他の全てのプロセッサ上で実
行中の同じクラス内の命令に対してのみ不可分である。
別言すれば、実行中の相対的不可分命令と同じクラス内
に含まれない命令は、他のプロセッサ上で同時に動作す
ることを許される。
を有する多重プロセッサ・システムを特徴とする。相対
的不可分命令というのは、それらの命令の複数の命令ク
ラスへの分割で定義される。すなわち、各クラス内のそ
れらの命令は、複数のプロセッサによって共用されてい
るデータ処理資源(例えば、密結合多重プロセッサ・シ
ステムの場合は主記憶装置の内容)を有するような多重
プロセッサ・システム内の他の全てのプロセッサ上で実
行中の同じクラス内の命令に対してのみ不可分である。
別言すれば、実行中の相対的不可分命令と同じクラス内
に含まれない命令は、他のプロセッサ上で同時に動作す
ることを許される。
本発明の好適な実施例に従って、相対的不可分命令
は、それが影響を及ぼすデータ構造によって定義され
る。すなわち、本発明によりサポートされる相対的不可
分命令の各々は、実行中に、その命令により必要とされ
る主記憶装置の内容が、同じクラスからの相対的不可分
命令を実行中の他のプロセッサによって変更されないこ
とを保証される。
は、それが影響を及ぼすデータ構造によって定義され
る。すなわち、本発明によりサポートされる相対的不可
分命令の各々は、実行中に、その命令により必要とされ
る主記憶装置の内容が、同じクラスからの相対的不可分
命令を実行中の他のプロセッサによって変更されないこ
とを保証される。
好適な実施例に従って、本発明の別の特徴は、相対的
不可分命令の各々に対するロック機構をもたらすため
に、ハードウェアと水平マイクロコードを利用すること
である。本発明の代替実施例は、ロッキング機構をもた
らすために、相対的不可分命令のオペレーション・コー
ドを復号する手段を特徴とする。
不可分命令の各々に対するロック機構をもたらすため
に、ハードウェアと水平マイクロコードを利用すること
である。本発明の代替実施例は、ロッキング機構をもた
らすために、相対的不可分命令のオペレーション・コー
ドを復号する手段を特徴とする。
[実施例] 第1図は、多重プロセッサ・システム内の異なる2つ
のプロセッサ上で実行中の2つの命令ストリームを示
す。プロセッサ0と1は、主記憶装置を共用する。説明
の便宜上、プロセッサ0により処理されているものとし
て示されている左側ストリーム内の命令n+4は、プロ
セッサ1により処理されている右側ストリーム内の命令
m+4が影響を及ぼすのと同じデータ構造に影響を及ぼ
すように定義される。
のプロセッサ上で実行中の2つの命令ストリームを示
す。プロセッサ0と1は、主記憶装置を共用する。説明
の便宜上、プロセッサ0により処理されているものとし
て示されている左側ストリーム内の命令n+4は、プロ
セッサ1により処理されている右側ストリーム内の命令
m+4が影響を及ぼすのと同じデータ構造に影響を及ぼ
すように定義される。
本発明に従って、命令n+4とm+4は、相対的不可
分命令の複数のクラスのうち1つのクラスに属するよう
に割り当てられる。
分命令の複数のクラスのうち1つのクラスに属するよう
に割り当てられる。
本発明の原理に従って、互いに異なるプロセッサ上で
実行中であり且つ互いに異なるクラスに属する相対的不
可分命令については、これらの命令を同時に実行できる
が、同じクラスからの2つの命令を同時に実行すること
を試みる場合には、これらの命令のうち一方の命令の実
行が「遅れる(ホールドオフ)」結果となる。
実行中であり且つ互いに異なるクラスに属する相対的不
可分命令については、これらの命令を同時に実行できる
が、同じクラスからの2つの命令を同時に実行すること
を試みる場合には、これらの命令のうち一方の命令の実
行が「遅れる(ホールドオフ)」結果となる。
説明の便宜上、第1図は、命令n+2が相対的不可分
命令のクラス1に属し、命令m+2がクラス3に属し、
命令n+4とm+4がクラス5に属することを示してい
る。図示されている命令の残りは、分類されていない
(すなわち、これらの非相対的不可分命令は、相対的不
可分命令のどのクラスにも属していない)。
命令のクラス1に属し、命令m+2がクラス3に属し、
命令n+4とm+4がクラス5に属することを示してい
る。図示されている命令の残りは、分類されていない
(すなわち、これらの非相対的不可分命令は、相対的不
可分命令のどのクラスにも属していない)。
プロセッサ0と1は、命令nとmを同時に実行するよ
うに示されている。(クラス3内の)命令m+2は、
(クラス1内の)命令n+2がプロセッサ0上で実行さ
れるのと同時に、プロセッサ1上で実行されるように示
されている。
うに示されている。(クラス3内の)命令m+2は、
(クラス1内の)命令n+2がプロセッサ0上で実行さ
れるのと同時に、プロセッサ1上で実行されるように示
されている。
命令m+2とn+2は、相対的不可分命令の異なるク
ラスに属するから、定義により、それらの命令は同じデ
ータ構造に影響を及ぼさない。従って、本発明の教示に
従って、それらの命令は同時に処理されることを許され
る。
ラスに属するから、定義により、それらの命令は同じデ
ータ構造に影響を及ぼさない。従って、本発明の教示に
従って、それらの命令は同時に処理されることを許され
る。
更に、本発明の教示に従って、命令m+3のような相
対的不可分命令として分類されていない非相対的不可分
命令を、相対的不可分命令と同時に実行できる。これ
は、命令n+4(プロセッサ0上で実行中の相対的不可
分命令)と命令m+3(プロセッサ1上で実行中の非相
対的不可分命令)のオーバラップにより示されている。
また、複数の非相対的不可分命令が、互いに並列に実行
されるように示されている。例えば、命令n+6がプロ
セッサ0上で、命令m+5がプロセッサ1上で同時に実
行されるように示されている。
対的不可分命令として分類されていない非相対的不可分
命令を、相対的不可分命令と同時に実行できる。これ
は、命令n+4(プロセッサ0上で実行中の相対的不可
分命令)と命令m+3(プロセッサ1上で実行中の非相
対的不可分命令)のオーバラップにより示されている。
また、複数の非相対的不可分命令が、互いに並列に実行
されるように示されている。例えば、命令n+6がプロ
セッサ0上で、命令m+5がプロセッサ1上で同時に実
行されるように示されている。
最後に、命令n+4の実行中にプロセッサ1が命令m
+4を実行することを試みる場合、その結果として、本
発明に従って、命令n+4が完了するまで命令m+4が
「遅れる」ことが示されている。
+4を実行することを試みる場合、その結果として、本
発明に従って、命令n+4が完了するまで命令m+4が
「遅れる」ことが示されている。
原則として、第1図は、本発明の原理を具体化するシ
ステム内のプロセッサの所望の動作を示す。ここで、各
「クラス」は、特定のデータ構造又はオブジェクト・ク
ラスに影響を及ぼす予め定義された命令の組である。
ステム内のプロセッサの所望の動作を示す。ここで、各
「クラス」は、特定のデータ構造又はオブジェクト・ク
ラスに影響を及ぼす予め定義された命令の組である。
第2A図と第2B図には、第1図に示されているプロセッ
サの動作をサポートする、すなわち、ここで定義した相
対的不可分命令をサポートするのに適当な、密結合多重
プロセッサ・システムが示されている。これらのプロセ
ッサは、主記憶装置を共用するものとして示されてい
る。IBMシステム/370のような計算機システムは、図示
の計算機システムの典型的なものである。
サの動作をサポートする、すなわち、ここで定義した相
対的不可分命令をサポートするのに適当な、密結合多重
プロセッサ・システムが示されている。これらのプロセ
ッサは、主記憶装置を共用するものとして示されてい
る。IBMシステム/370のような計算機システムは、図示
の計算機システムの典型的なものである。
第2A図は、n個のプロセッサ201、202、…、nを有す
る多重プロセッサ・システムの例を示す。それらのプロ
セッサは、主記憶装置バス(MSバス)250を介して共用
主記憶装置203へ結合される。第2B図には、第2A図に示
されている複数のプロセッサのうち2つのプロセッサの
詳細が示されている。特に、第2B図は、MSバス250を介
して主記憶装置203へ結合されているプロセッサ201と20
2を示す。
る多重プロセッサ・システムの例を示す。それらのプロ
セッサは、主記憶装置バス(MSバス)250を介して共用
主記憶装置203へ結合される。第2B図には、第2A図に示
されている複数のプロセッサのうち2つのプロセッサの
詳細が示されている。特に、第2B図は、MSバス250を介
して主記憶装置203へ結合されているプロセッサ201と20
2を示す。
第2B図に示されているプロセッサ201と202は、周知の
キャッシュ・メモリ210と211、並びに関連するキャッシ
ュ・ディレクトリ215と216を含む。第2B図には、プロセ
ッサ・ユニット(PU)220と230と、記憶装置制御(SC
U)240、241と、多重プロセッサ・ディレクトリ(MP D
IR)242と243も示されている。多重プロセッサ・ディレ
クトリ242と243は、多重プロセッサ・システム内でキャ
ッシュの一貫性を保証するために典型的に用いられる。
また、SCU240、241は、記憶装置バッファ(ST BUF)23
5と236を含んでいるように示されている。
キャッシュ・メモリ210と211、並びに関連するキャッシ
ュ・ディレクトリ215と216を含む。第2B図には、プロセ
ッサ・ユニット(PU)220と230と、記憶装置制御(SC
U)240、241と、多重プロセッサ・ディレクトリ(MP D
IR)242と243も示されている。多重プロセッサ・ディレ
クトリ242と243は、多重プロセッサ・システム内でキャ
ッシュの一貫性を保証するために典型的に用いられる。
また、SCU240、241は、記憶装置バッファ(ST BUF)23
5と236を含んでいるように示されている。
第2A図と第2B図に示されている多重プロセッサ・シス
テムは、プロセッサ間通信リンク280〜282を含む。プロ
セッサ201、202等は、種々の理由で相互に通信する。例
えば、キャッシュの一貫性の維持、バス・スヌーピング
の実行等のために、プロセッサ間通信を使用できる。プ
ロセッサ間通信は、本発明自体は構成しない、種々の周
知の方式で行うことができる。例えば、米国特許第4718
002号、第4663709号及び第4412286号には、或る種のプ
ロセッサ間通信を採用する計算機システムが記述されて
いる。
テムは、プロセッサ間通信リンク280〜282を含む。プロ
セッサ201、202等は、種々の理由で相互に通信する。例
えば、キャッシュの一貫性の維持、バス・スヌーピング
の実行等のために、プロセッサ間通信を使用できる。プ
ロセッサ間通信は、本発明自体は構成しない、種々の周
知の方式で行うことができる。例えば、米国特許第4718
002号、第4663709号及び第4412286号には、或る種のプ
ロセッサ間通信を採用する計算機システムが記述されて
いる。
新規なことは、ロックのセット/検査/リセット/仲
裁のために、第2A図と第2B図に示されているようなシス
テム内のプロセッサ間通信を利用することである。但
し、ここで定義するように、ロックは、相対的不可分命
令の処理をサポートするように設計されているものとす
る。
裁のために、第2A図と第2B図に示されているようなシス
テム内のプロセッサ間通信を利用することである。但
し、ここで定義するように、ロックは、相対的不可分命
令の処理をサポートするように設計されているものとす
る。
第3図は、第2A図と第2B図に示されているのに類似す
るシステムで、相対的不可分命令の処理をサポートする
ための好適な機構を示す。後述するように、第2A図と第
2B図に示すプロセッサ間通信リンク280〜282は、プロセ
ッサの間で前記ロック情報(及び他の情報)を伝えるた
めのものである。
るシステムで、相対的不可分命令の処理をサポートする
ための好適な機構を示す。後述するように、第2A図と第
2B図に示すプロセッサ間通信リンク280〜282は、プロセ
ッサの間で前記ロック情報(及び他の情報)を伝えるた
めのものである。
本発明をサポートするハードウェア構造の詳細を説明
する前に、オブジェクト・クラスの例と、各クラス内に
含ませることができる命令の例とについて説明する。相
対的不可分命令の組を設計する時に、システムの性能を
向上させるための基準についても説明する。
する前に、オブジェクト・クラスの例と、各クラス内に
含ませることができる命令の例とについて説明する。相
対的不可分命令の組を設計する時に、システムの性能を
向上させるための基準についても説明する。
定義された相対的不可分命令のクラスの数は、プロセ
ッサ設計の変数である。従って、システムの性能をでき
る限り向上させるため、すなわち、同時に実行すること
を試みている同じクラスからの相対的不可分命令に起因
する性能低下を防止するために、各クラスの大きさを小
さくでき、定義されたクラスの数を増加できる、等であ
る。相対的不可分命令の多数のクラスを定義することに
より、所与のクラスからの2つ以上のオペレーション・
コードを同時に実行するための試みが行われる可能性が
低くされる。従って、相対的不可分命令の多数のクラス
を定義することは、ロックの競合、プロセッサの遅れ等
を減少させる傾向があり、それによりシステムの性能を
向上させる。
ッサ設計の変数である。従って、システムの性能をでき
る限り向上させるため、すなわち、同時に実行すること
を試みている同じクラスからの相対的不可分命令に起因
する性能低下を防止するために、各クラスの大きさを小
さくでき、定義されたクラスの数を増加できる、等であ
る。相対的不可分命令の多数のクラスを定義することに
より、所与のクラスからの2つ以上のオペレーション・
コードを同時に実行するための試みが行われる可能性が
低くされる。従って、相対的不可分命令の多数のクラス
を定義することは、ロックの競合、プロセッサの遅れ等
を減少させる傾向があり、それによりシステムの性能を
向上させる。
本発明の教示に従って、オブジェクト・クラスは、複
数のクラス・メンバが影響を及ぼす、共通のデータ構造
に関して定義される。例えば、「コンペア・アンド・ス
ワップ」クラスは、前述の(共用主記憶装置内の単一の
場所に影響を及ぼす)IBMシステム/370型「コンペア・
アンド・スワップ」命令に対して定義することができ
る。半ワード形式の「コンペア・アンド・スワップ」命
令のような類似の命令を、このクラスに含ませることが
できる。
数のクラス・メンバが影響を及ぼす、共通のデータ構造
に関して定義される。例えば、「コンペア・アンド・ス
ワップ」クラスは、前述の(共用主記憶装置内の単一の
場所に影響を及ぼす)IBMシステム/370型「コンペア・
アンド・スワップ」命令に対して定義することができ
る。半ワード形式の「コンペア・アンド・スワップ」命
令のような類似の命令を、このクラスに含ませることが
できる。
相対的不可分命令を定義するための基礎とすることが
できる別のタイプのデータ構造は、I/O命令待ち行列で
ある。そのような待ち行列へのエントリは、例えば記憶
媒体の間で(メモリからディスクへ、等)データを移動
させるために、プロセッサにより行われる。これらのエ
ントリは、I/Oチャネルによって実行される。他の共用
データ構造におけるように、待ち行列エントリへの重ね
書きは避けるべきであり、そうすると、このデータ構造
を基礎とする相対的不可分命令の定義が所望の保護を提
供することができる。
できる別のタイプのデータ構造は、I/O命令待ち行列で
ある。そのような待ち行列へのエントリは、例えば記憶
媒体の間で(メモリからディスクへ、等)データを移動
させるために、プロセッサにより行われる。これらのエ
ントリは、I/Oチャネルによって実行される。他の共用
データ構造におけるように、待ち行列エントリへの重ね
書きは避けるべきであり、そうすると、このデータ構造
を基礎とする相対的不可分命令の定義が所望の保護を提
供することができる。
このようなI/Oメッセージ待ち行列を基礎とするクラ
スに属する相対的不可分命令の例は、周知のI/O(入力
/出力)タイプの命令及びIOW(入力/出力及び待ち)
タイプの命令を含むことがある。
スに属する相対的不可分命令の例は、周知のI/O(入力
/出力)タイプの命令及びIOW(入力/出力及び待ち)
タイプの命令を含むことがある。
相対的不可分命令を定義するための基礎とすることが
できるデータ構造の更に別の例は、送信/受信待ち行列
である。この構造は、(I/O待ち行列に類似する)メッ
セージ・リスト、リンクされたリスト、又は他のタイプ
の待ち行列とすることができる。或る待ち行列にメッセ
ージを追加し、又はその待ち行列からメッセージを削除
する複雑な命令は、例えば、送信/受信待ち行列データ
構造を基礎とする、相対的不可分命令のクラスに自然に
適合する。
できるデータ構造の更に別の例は、送信/受信待ち行列
である。この構造は、(I/O待ち行列に類似する)メッ
セージ・リスト、リンクされたリスト、又は他のタイプ
の待ち行列とすることができる。或る待ち行列にメッセ
ージを追加し、又はその待ち行列からメッセージを削除
する複雑な命令は、例えば、送信/受信待ち行列データ
構造を基礎とする、相対的不可分命令のクラスに自然に
適合する。
タスク・ディスクパッチ待ち行列、レコード・クレー
ム、カウンタ構造、種々のディレクトリ等に影響を及ぼ
す命令に対して、更に別のクラスを定義することができ
る。
ム、カウンタ構造、種々のディレクトリ等に影響を及ぼ
す命令に対して、更に別のクラスを定義することができ
る。
第3図を再び参照するに、この図面に示されている構
成要素を機能的にグループ化して、第2B図のブロック図
にマップできることに注目すべきである。特に、制御記
憶装置301と、制御記憶装置オペレーション・レジスタ
(CSOR)302と、プロセッサユニット・チップ(PUチッ
プ)303と、ロック仲裁ハードウェア304とを、第2B図に
示されているプロセッサ・ユニット(PU)220として機
能的にグループ化することができる。同様に、CSOR302
と、MSバス仲裁論理305と、実アドレス/コマンド(RA/
CMD)待ち行列306と、記憶装置データ・バッファ307
と、キャッシュ制御308とを、第2B図に示されているSCU
ブロック240として機能的にグループ化することができ
る。RA/CMD待ち行列306と、記憶装置データ・バッファ3
07とを、第2B図に示されているST BUFブロック235とし
て機能的にグループ化することができる。第3図に示さ
れている残りの構成要素は、第2B図に示されているそれ
の対応する要素(キャッシュ・メモリ240、キャッシュ
・ディレクトリ215及びMP DIR242)に直接マップす
る。
成要素を機能的にグループ化して、第2B図のブロック図
にマップできることに注目すべきである。特に、制御記
憶装置301と、制御記憶装置オペレーション・レジスタ
(CSOR)302と、プロセッサユニット・チップ(PUチッ
プ)303と、ロック仲裁ハードウェア304とを、第2B図に
示されているプロセッサ・ユニット(PU)220として機
能的にグループ化することができる。同様に、CSOR302
と、MSバス仲裁論理305と、実アドレス/コマンド(RA/
CMD)待ち行列306と、記憶装置データ・バッファ307
と、キャッシュ制御308とを、第2B図に示されているSCU
ブロック240として機能的にグループ化することができ
る。RA/CMD待ち行列306と、記憶装置データ・バッファ3
07とを、第2B図に示されているST BUFブロック235とし
て機能的にグループ化することができる。第3図に示さ
れている残りの構成要素は、第2B図に示されているそれ
の対応する要素(キャッシュ・メモリ240、キャッシュ
・ディレクトリ215及びMP DIR242)に直接マップす
る。
このマッピングは、第3図に示されているハードウェ
アが従来のシステム(例えばIBMシステム/370)の機能
を実行できることを示している。また、従来技術から離
れて、第3図に示されているハードウェア要素は、相対
的不可分命令の定義と処理をサポートするように設計で
きる。
アが従来のシステム(例えばIBMシステム/370)の機能
を実行できることを示している。また、従来技術から離
れて、第3図に示されているハードウェア要素は、相対
的不可分命令の定義と処理をサポートするように設計で
きる。
第3図に示されている各ブロックの詳しい機能的な説
明と、相対的不可分命令の定義と処理をサポートするた
めに、それらのブロックがどのように協働するかについ
ては、すぐ後で説明する。仮定することの全ては、或る
命令を所与のプロセッサ(例えば、第2B図のプロセッサ
201)で実行する必要があること、及びこの命令がPUチ
ップ303により主記憶装置又はキャッシュ・メモリから
フェッチされることである。最初のフェッチ時には、フ
ェッチされた命令が相対的不可分命令であるか否かは知
られていない。
明と、相対的不可分命令の定義と処理をサポートするた
めに、それらのブロックがどのように協働するかについ
ては、すぐ後で説明する。仮定することの全ては、或る
命令を所与のプロセッサ(例えば、第2B図のプロセッサ
201)で実行する必要があること、及びこの命令がPUチ
ップ303により主記憶装置又はキャッシュ・メモリから
フェッチされることである。最初のフェッチ時には、フ
ェッチされた命令が相対的不可分命令であるか否かは知
られていない。
典型的には、このフェッチされた命令は、PUチップ30
3に関連する命令レジスタ(第3図には図示されていな
い)に記憶される。次に、PUチップ303は、制御記憶装
置301をアクセスして、所与の命令を実行するために必
要な一連の制御ワード(マイクロコード・ワード)内の
最初の制御ワードを獲得する。
3に関連する命令レジスタ(第3図には図示されていな
い)に記憶される。次に、PUチップ303は、制御記憶装
置301をアクセスして、所与の命令を実行するために必
要な一連の制御ワード(マイクロコード・ワード)内の
最初の制御ワードを獲得する。
本発明の実施例に従って、このフェッチされた命令が
相対的不可分命令であるか否かを決定できるのは、この
時点においてである。もし、相対的不可分命令がフェッ
チされたならば、一連の制御ワード内の1つの制御ワー
ド(好ましくは、最初の制御ワード)が或るロックをセ
ットしようと試みる。
相対的不可分命令であるか否かを決定できるのは、この
時点においてである。もし、相対的不可分命令がフェッ
チされたならば、一連の制御ワード内の1つの制御ワー
ド(好ましくは、最初の制御ワード)が或るロックをセ
ットしようと試みる。
本発明の好適な実施例は、或るロックコード・フィー
ルドを、所与の命令に対する一連の制御ワードの各々と
関連付けるために、既知の制御記憶装置機構を拡張する
ことを必要とする。このロックコード・フィールドをマ
イクロコードにより使用して、ロック番号を指定し、且
つこの試みが所与のロックを獲得するためか、解除する
ためであるかを指定することができる。
ルドを、所与の命令に対する一連の制御ワードの各々と
関連付けるために、既知の制御記憶装置機構を拡張する
ことを必要とする。このロックコード・フィールドをマ
イクロコードにより使用して、ロック番号を指定し、且
つこの試みが所与のロックを獲得するためか、解除する
ためであるかを指定することができる。
この好適な実施例では、所与の制御ワードに関連する
ロックコード・ワードがCSOR302へ送られている間に、
その制御ワードを処理するためにPUチップ303へ送るこ
とができる。これが第3図に示されている。一連の制御
ワードが、リンク350を介してPUチップ303へ供給される
のに対し、所与の制御ワードに関連するロックコード・
フィールドは、リンク351を介してCSOR302へ供給され
る。従って、或るロックをセットし、又は解除しようと
するどのような試みも、CSOR302に記憶される。CSOR302
自体は、レジスタ又はラッチを用いて実現できる。
ロックコード・ワードがCSOR302へ送られている間に、
その制御ワードを処理するためにPUチップ303へ送るこ
とができる。これが第3図に示されている。一連の制御
ワードが、リンク350を介してPUチップ303へ供給される
のに対し、所与の制御ワードに関連するロックコード・
フィールドは、リンク351を介してCSOR302へ供給され
る。従って、或るロックをセットし、又は解除しようと
するどのような試みも、CSOR302に記憶される。CSOR302
自体は、レジスタ又はラッチを用いて実現できる。
ロック仲裁ハードウェア304は、(1)保持されてい
るロックを記録又は追跡し、(2)他のプロセッサが獲
得しようと試みているロックを認識する。本発明の好適
な実施例に従って、ロック仲裁ハードウェア304は、保
持されているロックを追跡するために内部メモリを用い
る。他のプロセッサにより供給される(ロックをセット
又は解除しようというそれらのプロセッサの試みについ
ての)データが、プロセッサ間通信リンク355を介して
供給される。第3図には、他の1つのプロセッサからの
データ・パケット(以下「MPFIELD B」と呼ぶ)が、
プロセッサ間通信リンク355を介して図示のプロセッサ
へ入力されることが示されている。第3図には示されて
いないが、本発明の実施例において意図されているもの
は、多重プロセッサ・システム内の各プロセッサごと
に、別々のハードウェア・リンクを介して別々の「MPFI
ELD」を用いることである。代替的に、多重化バス技術
を用いることができる。
るロックを記録又は追跡し、(2)他のプロセッサが獲
得しようと試みているロックを認識する。本発明の好適
な実施例に従って、ロック仲裁ハードウェア304は、保
持されているロックを追跡するために内部メモリを用い
る。他のプロセッサにより供給される(ロックをセット
又は解除しようというそれらのプロセッサの試みについ
ての)データが、プロセッサ間通信リンク355を介して
供給される。第3図には、他の1つのプロセッサからの
データ・パケット(以下「MPFIELD B」と呼ぶ)が、
プロセッサ間通信リンク355を介して図示のプロセッサ
へ入力されることが示されている。第3図には示されて
いないが、本発明の実施例において意図されているもの
は、多重プロセッサ・システム内の各プロセッサごと
に、別々のハードウェア・リンクを介して別々の「MPFI
ELD」を用いることである。代替的に、多重化バス技術
を用いることができる。
所与のプロセッサへの「MPFIELD B」入力は、外部
ロック情報ばかりでなく、MSバス仲裁情報も伝えるよう
に設計される。これは第3図に示されている。すなわ
ち、プロセッサ間通信リンク355上の「MPFIELD B」入
力は、(入力ロック情報のための)ロック仲裁ハードウ
ェア304と、(MSバス仲裁情報のための)MSバス仲裁論
理305との間に分割されている。
ロック情報ばかりでなく、MSバス仲裁情報も伝えるよう
に設計される。これは第3図に示されている。すなわ
ち、プロセッサ間通信リンク355上の「MPFIELD B」入
力は、(入力ロック情報のための)ロック仲裁ハードウ
ェア304と、(MSバス仲裁情報のための)MSバス仲裁論
理305との間に分割されている。
ロック仲裁ハードウェア304が、(CSOR302にラッチさ
れている制御記憶装置301からの適切なロック・コード
情報を介して)図示されているプロセッサの側における
ロックを獲得しようとする試みを検出すると、そのロッ
ク仲裁ハードウェア304は、プロセッサ間通信リンク366
を介して、その試みを他のプロセッサへ同報通信する。
第3図は、このプロセッサ間通信リンク366を介して同
報通信されている「MPFIELD A」データ・パケットを
示す。図示されているプロセッサによる「MPFIELD
A」情報は、リンク381とバッファ選択リンク340を介し
てロック仲裁ハードウェア304が利用できるMSバス仲裁
情報を含んでおり、システム内の他の全てのプロセッサ
に対しては、前述の「MPFIELD B」情報になる。
れている制御記憶装置301からの適切なロック・コード
情報を介して)図示されているプロセッサの側における
ロックを獲得しようとする試みを検出すると、そのロッ
ク仲裁ハードウェア304は、プロセッサ間通信リンク366
を介して、その試みを他のプロセッサへ同報通信する。
第3図は、このプロセッサ間通信リンク366を介して同
報通信されている「MPFIELD A」データ・パケットを
示す。図示されているプロセッサによる「MPFIELD
A」情報は、リンク381とバッファ選択リンク340を介し
てロック仲裁ハードウェア304が利用できるMSバス仲裁
情報を含んでおり、システム内の他の全てのプロセッサ
に対しては、前述の「MPFIELD B」情報になる。
もし、先行サイクル中に、問題のロックを獲得しよう
と意図した他のプロセッサが存在しないと認識されるな
らば、ロック仲裁ハードウェア304は、(現サイクル中
に解決すべき衝突がないと仮定して)このロックを獲得
する。この場合には、PUチップ303は、リンク350を介し
て順次に供給される一連の制御ワードの実行を続ける
(すなわち、フェッチされた相対的不可分命令を実行す
る)。
と意図した他のプロセッサが存在しないと認識されるな
らば、ロック仲裁ハードウェア304は、(現サイクル中
に解決すべき衝突がないと仮定して)このロックを獲得
する。この場合には、PUチップ303は、リンク350を介し
て順次に供給される一連の制御ワードの実行を続ける
(すなわち、フェッチされた相対的不可分命令を実行す
る)。
もし、先行サイクル中に、別のプロセッサがこのロッ
クを要求してこれを獲得したならば、ロック仲裁ハード
ウェア304の内部メモリが、(図示されているプロセッ
サへプロセッサ間通信リンク355を介して前に供給され
た情報に基づき)この事実を反映する。この場合には、
PUチップ303は、保持モードに置かれる。すなわち、PU
チップ303は、制御記憶装置301からの他のどの制御ワー
ドの実行も阻止される。第3図にリンク370として示さ
れている遅れリンク上の信号を介して、「遅れ」をもた
らすことができる。
クを要求してこれを獲得したならば、ロック仲裁ハード
ウェア304の内部メモリが、(図示されているプロセッ
サへプロセッサ間通信リンク355を介して前に供給され
た情報に基づき)この事実を反映する。この場合には、
PUチップ303は、保持モードに置かれる。すなわち、PU
チップ303は、制御記憶装置301からの他のどの制御ワー
ドの実行も阻止される。第3図にリンク370として示さ
れている遅れリンク上の信号を介して、「遅れ」をもた
らすことができる。
最後に、同じサイクル中に、図示されているプロセッ
サと別のプロセッサがロックを獲得することを試みたな
らば、ロック仲裁ハードウェア304は、この潜在的な衝
突を解決する必要がある。そのような解決に当たって
は、(複数のプロセッサに固定された優先順位を割り当
てるもの、それぞれの優先順位を回転させるもの、等
の)多数の技術のうちの任意の1つを使用できる。も
し、図示されているプロセッサがロック獲得のためのビ
ッドに敗れたならば、ロック仲裁ハードウェア304は、
どのプロセッサがロックを実際に獲得するかを指示する
ように更新される。この場合には、別のプロセッサが先
行サイクル中にロックを獲得した時と同じ態様で、遅れ
信号が遅れリンク370上でアサートされる。
サと別のプロセッサがロックを獲得することを試みたな
らば、ロック仲裁ハードウェア304は、この潜在的な衝
突を解決する必要がある。そのような解決に当たって
は、(複数のプロセッサに固定された優先順位を割り当
てるもの、それぞれの優先順位を回転させるもの、等
の)多数の技術のうちの任意の1つを使用できる。も
し、図示されているプロセッサがロック獲得のためのビ
ッドに敗れたならば、ロック仲裁ハードウェア304は、
どのプロセッサがロックを実際に獲得するかを指示する
ように更新される。この場合には、別のプロセッサが先
行サイクル中にロックを獲得した時と同じ態様で、遅れ
信号が遅れリンク370上でアサートされる。
もし、図示されているプロセッサがこのビッドに勝っ
てロックを獲得したならば、遅れはアサートされず、恰
もロック獲得のための他のビッドが存在しなかったかの
ように、PUチップ303は、一連の制御ワードの実行を続
ける。
てロックを獲得したならば、遅れはアサートされず、恰
もロック獲得のための他のビッドが存在しなかったかの
ように、PUチップ303は、一連の制御ワードの実行を続
ける。
本発明の好適な実施例に従って、図示されているプロ
セッサは、ロックが獲得されたか否かを指示する「MPFI
ELD A」情報を、プロセッサ間通信リンク366を介し
て、各サイクルごとに同報通信する。この方法は、本発
明の範囲又は要旨を逸脱することなしに変えることがで
きる。
セッサは、ロックが獲得されたか否かを指示する「MPFI
ELD A」情報を、プロセッサ間通信リンク366を介し
て、各サイクルごとに同報通信する。この方法は、本発
明の範囲又は要旨を逸脱することなしに変えることがで
きる。
ロックを解除するために本発明の好適な実施例におい
て用いられる機構を理解するためには、共用資源に対す
るフェッチと記憶が、(第2A図と第2B図に示されている
ものに類似する)多重プロセッサ・システム内でどのよ
うにして取り扱われるのかを理解することが重要であ
る。当分野では、フェッチと記憶を取り扱うための多く
の可能な技術が公知であるが、その一例を次に説明す
る。
て用いられる機構を理解するためには、共用資源に対す
るフェッチと記憶が、(第2A図と第2B図に示されている
ものに類似する)多重プロセッサ・システム内でどのよ
うにして取り扱われるのかを理解することが重要であ
る。当分野では、フェッチと記憶を取り扱うための多く
の可能な技術が公知であるが、その一例を次に説明す
る。
第3図を再び参照するに、バッファ選択リンク340
は、PUチップ303により実行中の所与の制御ワードがフ
ェッチ又は記憶のいずれを取り扱うものであるかを、実
アドレス/コマンド待ち行列306と記憶装置データ・バ
ッファ307へ通知するために使用できる。換言すると、
フェッチ命令信号又は記憶命令信号のタイプの指示が、
第2B図に示す記憶装置バッファ235(第3図の実アドレ
ス/コマンド待ち行列306と、記憶装置データ・バッフ
ァ307に対応)へ供給される。後述するように、或るロ
ックをいつ解除するかを決定するためには、記憶命令信
号の数を追跡しておくことが重要である。
は、PUチップ303により実行中の所与の制御ワードがフ
ェッチ又は記憶のいずれを取り扱うものであるかを、実
アドレス/コマンド待ち行列306と記憶装置データ・バ
ッファ307へ通知するために使用できる。換言すると、
フェッチ命令信号又は記憶命令信号のタイプの指示が、
第2B図に示す記憶装置バッファ235(第3図の実アドレ
ス/コマンド待ち行列306と、記憶装置データ・バッフ
ァ307に対応)へ供給される。後述するように、或るロ
ックをいつ解除するかを決定するためには、記憶命令信
号の数を追跡しておくことが重要である。
フェッチについては、(1)バッファ選択リンク340
上にフェッチ命令信号を供給するPUチップ303により、
(2)フェッチの実アドレスをRAバス397を介して供給
するPUチップ303により、及び(3)キャッシュ・ヒッ
トの場合に、フェッチされたデータをPUチップ303へ送
るキャッシュ・バス398により、これを取り扱うことが
できる。キャッシュ・ミスの場合には、フェッチされた
データは、MSバスとキャッシュ・バス398を介してPUチ
ップ303へ戻される(なお、MSバスとキャッシュ・バス3
98の間の経路は、第3図に示されていない)。キャッシ
ュ制御308を用いて、キャッシュ・ヒットが生じたか否
かを判定できる。
上にフェッチ命令信号を供給するPUチップ303により、
(2)フェッチの実アドレスをRAバス397を介して供給
するPUチップ303により、及び(3)キャッシュ・ヒッ
トの場合に、フェッチされたデータをPUチップ303へ送
るキャッシュ・バス398により、これを取り扱うことが
できる。キャッシュ・ミスの場合には、フェッチされた
データは、MSバスとキャッシュ・バス398を介してPUチ
ップ303へ戻される(なお、MSバスとキャッシュ・バス3
98の間の経路は、第3図に示されていない)。キャッシ
ュ制御308を用いて、キャッシュ・ヒットが生じたか否
かを判定できる。
記憶については、(1)RAバス397上に実アドレスを
供給して、当該記憶が目標とする主記憶装置アドレスを
指示するPUチップ303により、(2)キャッシュ・バス3
98上に供給されるデータにより、(3)バッファ選択リ
ンク340により記憶命令信号を発生した時に、これを取
り扱うことができる。
供給して、当該記憶が目標とする主記憶装置アドレスを
指示するPUチップ303により、(2)キャッシュ・バス3
98上に供給されるデータにより、(3)バッファ選択リ
ンク340により記憶命令信号を発生した時に、これを取
り扱うことができる。
性能上の理由から、PUチップ303が、制御ワードの実
行を続けるためにMSバスを利用できるようになるのを待
つ必要がないように、第2B図の記憶装置バッファ235を
実現することは周知である。
行を続けるためにMSバスを利用できるようになるのを待
つ必要がないように、第2B図の記憶装置バッファ235を
実現することは周知である。
以上では、多重プロセッサ・システム内で用いられる
典型的なフェッチ及び記憶機構を概説したので、以下で
は、(或る相対的不可分命令の処理を容易にするように
最初にセットされた)或るロックを解除する前に必要と
される諸ステップを説明する。
典型的なフェッチ及び記憶機構を概説したので、以下で
は、(或る相対的不可分命令の処理を容易にするように
最初にセットされた)或るロックを解除する前に必要と
される諸ステップを説明する。
ロック仲裁ハードウェア304が、(CSOR302にラッチさ
れている制御記憶装置301からの適切なロック・コード
情報を介して)図示されているプロセッサによるロック
を解除するための試みを検出すると、本発明の好適な実
施例に従って次の活動を行わねばならない。
れている制御記憶装置301からの適切なロック・コード
情報を介して)図示されているプロセッサによるロック
を解除するための試みを検出すると、本発明の好適な実
施例に従って次の活動を行わねばならない。
第3図に示されているプロセッサは、主記憶装置資源
を他のプロセッサと共用するから、(所与の相対的不可
分命令の実行を完了するためには)すでに保持されてい
るロックの傘の下で、図示されているプロセッサにより
開始された全ての記憶を保護することが望ましい。すな
わち、本発明の好適な実施例に従った、ロック仲裁ハー
ドウェア304は、プロセッサ201により開始された以前の
全ての記憶がMSバス250を進む機械を持つまで、ロック
を解除すべきでない。
を他のプロセッサと共用するから、(所与の相対的不可
分命令の実行を完了するためには)すでに保持されてい
るロックの傘の下で、図示されているプロセッサにより
開始された全ての記憶を保護することが望ましい。すな
わち、本発明の好適な実施例に従った、ロック仲裁ハー
ドウェア304は、プロセッサ201により開始された以前の
全ての記憶がMSバス250を進む機械を持つまで、ロック
を解除すべきでない。
また、他のプロセッサには、それのキャッシュ制御を
介してMSバス250上の記憶を検出するために十分な時間
を与えねばならず、そして、他の任意のプロセッサの内
部キャッシュにキャッシュ・ヒットが生じたとすると、
それの関連するキャッシュ・ディレクトリを各キャッシ
ュ制御が無効にするための十分な時間を与えねばならな
い。それぞれのキャッシュ制御は、例えばバス・スヌー
ピングによって、MSバス250上の記憶を検出できる。
介してMSバス250上の記憶を検出するために十分な時間
を与えねばならず、そして、他の任意のプロセッサの内
部キャッシュにキャッシュ・ヒットが生じたとすると、
それの関連するキャッシュ・ディレクトリを各キャッシ
ュ制御が無効にするための十分な時間を与えねばならな
い。それぞれのキャッシュ制御は、例えばバス・スヌー
ピングによって、MSバス250上の記憶を検出できる。
各キャッシュ制御は、先ず、第3図に示されている多
重プロセッサ(MP)ディレクトリ242のようなMPディレ
クトリ内の主記憶場所を調べることにより、当該キャッ
シュ制御に関連するキャッシュ内に或る主記憶場所の内
容がコピーされているか否かを判定できる。もし、その
場所の内容が関連するキャッシュ内にあれば、当該キャ
ッシュ制御は、(第3図のリンク395を介して行われ
る)サイクル・スチールにより、適切なバス(例えば、
RAバス397)を所有して、関連するキャッシュ・ディレ
クトリ215及びMPディレクトリ242内の有効ビットを無効
に変えることができる。
重プロセッサ(MP)ディレクトリ242のようなMPディレ
クトリ内の主記憶場所を調べることにより、当該キャッ
シュ制御に関連するキャッシュ内に或る主記憶場所の内
容がコピーされているか否かを判定できる。もし、その
場所の内容が関連するキャッシュ内にあれば、当該キャ
ッシュ制御は、(第3図のリンク395を介して行われ
る)サイクル・スチールにより、適切なバス(例えば、
RAバス397)を所有して、関連するキャッシュ・ディレ
クトリ215及びMPディレクトリ242内の有効ビットを無効
に変えることができる。
一旦全ての記憶がMSバス上に置かれ、(必要に応じ
て)キャッシュ更新を行うのに十分な時間が経過する
と、ロックを解除できる。
て)キャッシュ更新を行うのに十分な時間が経過する
と、ロックを解除できる。
従って、ロックを解除するための試みがロック仲裁ハ
ードウェア304により検出されるとしても、ロック仲裁
ハードウェア304は、(1)PUチップ234により開始され
た記憶のうち、記憶装置バッファ235内に置かれたがMS
バス上に進まなかった任意の記憶があるか否か、(2)
ロックを解除するための試みが検出されるサイクル中
に、RAバス397と、キャッシュ・バス398と、バッファ選
択リンク340上で或る記憶が処理中であるか否か、及び
(3)記憶装置バッファ235(第3図の実アドレス/コ
マンド待ち行列306と記憶装置データ・バッファ307に対
応)内の最後の記憶がMSバス上に出た時点を、判定せね
ばならない。
ードウェア304により検出されるとしても、ロック仲裁
ハードウェア304は、(1)PUチップ234により開始され
た記憶のうち、記憶装置バッファ235内に置かれたがMS
バス上に進まなかった任意の記憶があるか否か、(2)
ロックを解除するための試みが検出されるサイクル中
に、RAバス397と、キャッシュ・バス398と、バッファ選
択リンク340上で或る記憶が処理中であるか否か、及び
(3)記憶装置バッファ235(第3図の実アドレス/コ
マンド待ち行列306と記憶装置データ・バッファ307に対
応)内の最後の記憶がMSバス上に出た時点を、判定せね
ばならない。
第1の目的は、記憶装置バッファ235内に置かれた記
憶命令信号の数を追跡するロック仲裁ハードウェア304
によって達成できる。第2の目的は、前述の記憶命令信
号について、第3図のバッファ選択リンク340をモニタ
することによって達成できる。第3の目的は、MSバス仲
裁論理305からロック仲裁ハードウェア304への入力を介
して達成できる。
憶命令信号の数を追跡するロック仲裁ハードウェア304
によって達成できる。第2の目的は、前述の記憶命令信
号について、第3図のバッファ選択リンク340をモニタ
することによって達成できる。第3の目的は、MSバス仲
裁論理305からロック仲裁ハードウェア304への入力を介
して達成できる。
最後に、最後の記憶がMSバス上に出されたものと判定
された後で、ロック仲裁ハードウェア304は、ロック解
除情報を「MPFIELD A」データ・パケットの一部とし
てプロセッサ間通信リンク366上に置くことができる。
された後で、ロック仲裁ハードウェア304は、ロック解
除情報を「MPFIELD A」データ・パケットの一部とし
てプロセッサ間通信リンク366上に置くことができる。
もし、1つ以上の他のプロセッサが実際に前述の「遅
れ」状態にあるならば、この解除プロセスが完了するの
は、システム内の他のロック仲裁ハードウェアがそれぞ
れの内部メモリを更新し(そのロックを実効的に解除す
る)、当該解除されたロックの所有を仲裁する後であ
る。
れ」状態にあるならば、この解除プロセスが完了するの
は、システム内の他のロック仲裁ハードウェアがそれぞ
れの内部メモリを更新し(そのロックを実効的に解除す
る)、当該解除されたロックの所有を仲裁する後であ
る。
以上のように、第3図を参照して説明した本発明の好
適な実施例では、図示されている装置の組み合わせが、
相対的不可分命令の定義と処理をサポートするように機
能する。プロセッサ間通信は、個別的な結線方式で行わ
れる。
適な実施例では、図示されている装置の組み合わせが、
相対的不可分命令の定義と処理をサポートするように機
能する。プロセッサ間通信は、個別的な結線方式で行わ
れる。
第4図に示すシステムは、第3図に示す(プロセッサ
間通信のために個別的な結線方式を用いる)システムと
基本的に同じである。但し、本発明を実施するために、
拡張された制御記憶装置、CSOR及びマイクロコードを用
いる代わりに、ハードウェア復号機構を用いる点が異な
っている。
間通信のために個別的な結線方式を用いる)システムと
基本的に同じである。但し、本発明を実施するために、
拡張された制御記憶装置、CSOR及びマイクロコードを用
いる代わりに、ハードウェア復号機構を用いる点が異な
っている。
この代替実施例は、(非相対的不可分命令から区別す
るために)相対的不可分命令を或るやり方で符号化する
こと、及び命令を復号する時に、ロック・コード情報
(ロック番号、ロック獲得の試み、ロック解除の試み、
等)をロック仲裁ハードウェア304へ供給することを必
要とする。第4図には、それらの機能を行うための命令
復号器401が示されている。この命令復号器401は、標準
的な復号論理、ルックアップ・テーブル等を用いて実現
することができる。
るために)相対的不可分命令を或るやり方で符号化する
こと、及び命令を復号する時に、ロック・コード情報
(ロック番号、ロック獲得の試み、ロック解除の試み、
等)をロック仲裁ハードウェア304へ供給することを必
要とする。第4図には、それらの機能を行うための命令
復号器401が示されている。この命令復号器401は、標準
的な復号論理、ルックアップ・テーブル等を用いて実現
することができる。
第5図は、第3図を参照して先に説明したように、本
発明の教示に従ってロックのセット及び解除を行う時の
所望の動作の流れを要約して示す。
発明の教示に従ってロックのセット及び解除を行う時の
所望の動作の流れを要約して示す。
特に、第5図は、第1図に示されている2つの相対的
不可分命令n+4とm+4を示す。それらの命令は、同
じクラスに含まれるものと定義され、命令n+4がそれ
のロックを解除するまでは命令m+4は遅らせられるこ
とを想起すべきである。
不可分命令n+4とm+4を示す。それらの命令は、同
じクラスに含まれるものと定義され、命令n+4がそれ
のロックを解除するまでは命令m+4は遅らせられるこ
とを想起すべきである。
説明の便宜上、両方の命令は、主記憶装置内の指定さ
れた場所Aの値を増分するものと仮定する。第5図の行
(a)は、命令n+4が命令n+3の後に引き続いて実
行されていることを示す。第5図の行(b)は、主記憶
装置内の指定された場所Aの値を相対的に不可分な態様
で所望通りに増分するために使用できる、制御ワードCW
1〜CW5を示す。
れた場所Aの値を増分するものと仮定する。第5図の行
(a)は、命令n+4が命令n+3の後に引き続いて実
行されていることを示す。第5図の行(b)は、主記憶
装置内の指定された場所Aの値を相対的に不可分な態様
で所望通りに増分するために使用できる、制御ワードCW
1〜CW5を示す。
行(b)は、第3図のCSOR302との関連において見る
ことができる。第1のサイクルでは、制御ワードCW1
は、(このクラスの命令に任意に関連付けられる)ロッ
ク5をセットすべきことを指定する。次のサイクルで
は、制御ワードCW2は、(任意のプロセッサ・レジスタS
Aに対し)フェッチを行うべきことを指定する。制御ワ
ードCW3は、プロセッサ・レジスタSA内の値をPUチップ3
03(第3図)により増分すべきことを指定し、制御ワー
ドCW4は、このプロセッサ・レジスタSA内の増分された
値を記憶すべきことを指定し、制御ワードCW5は、ロッ
ク(ロック5)を解除すべきことを指定する。
ことができる。第1のサイクルでは、制御ワードCW1
は、(このクラスの命令に任意に関連付けられる)ロッ
ク5をセットすべきことを指定する。次のサイクルで
は、制御ワードCW2は、(任意のプロセッサ・レジスタS
Aに対し)フェッチを行うべきことを指定する。制御ワ
ードCW3は、プロセッサ・レジスタSA内の値をPUチップ3
03(第3図)により増分すべきことを指定し、制御ワー
ドCW4は、このプロセッサ・レジスタSA内の増分された
値を記憶すべきことを指定し、制御ワードCW5は、ロッ
ク(ロック5)を解除すべきことを指定する。
行(c)は、制御ワードCW1〜CW5の各々に応答してプ
ロセッサ0により出力された「MPFIELD A」データ・
パケットを示す。或る制御ワードがCSOR302によりラッ
チされる時点(行(b))と「MPFIELD A」出力の時
点との間に、1サイクルの遅れが示される。行(d)に
示されている期間中、ロック5は、プロセッサ0により
保持されていることに注目されたい。
ロセッサ0により出力された「MPFIELD A」データ・
パケットを示す。或る制御ワードがCSOR302によりラッ
チされる時点(行(b))と「MPFIELD A」出力の時
点との間に、1サイクルの遅れが示される。行(d)に
示されている期間中、ロック5は、プロセッサ0により
保持されていることに注目されたい。
行(e)と(f)は、指定された場所Aからの実際の
フェッチが生じ得る期間(Aの内容がキャッシュ・メモ
リ240内にあるか否かに応じて1サイクル又はそれ以上
のサイクル)と、増分された値がAへ記憶される期間
(記憶をMSバス上に置く必要があるから2サイクル以
上)とをそれぞれ示す。行(e)では、Aの内容がキャ
ッシュ・メモリ240からフェッチされたと仮定してい
る。
フェッチが生じ得る期間(Aの内容がキャッシュ・メモ
リ240内にあるか否かに応じて1サイクル又はそれ以上
のサイクル)と、増分された値がAへ記憶される期間
(記憶をMSバス上に置く必要があるから2サイクル以
上)とをそれぞれ示す。行(e)では、Aの内容がキャ
ッシュ・メモリ240からフェッチされたと仮定してい
る。
行(g)は、このフェッチのためにプロセッサ・レジ
スタSAを利用できない期間を示す。
スタSAを利用できない期間を示す。
行(h)は、プロセッサ1により実行される命令シー
ケンスの一部である、命令m+3、等を示す。
ケンスの一部である、命令m+3、等を示す。
行(i)は、プロセッサ1内のCSORが、命令m+4の
制御ワードCW1〜CW5をラッチする期間を示す。制御ワー
ドCW2によるフェッチが、行(f)における記憶が完了
してから少なくとも1サイクルを経過するまで、遅らさ
れることに注目すべきである。こうすると、前述のキャ
ッシュの一貫性を維持するための時間を与えることがで
きる。
制御ワードCW1〜CW5をラッチする期間を示す。制御ワー
ドCW2によるフェッチが、行(f)における記憶が完了
してから少なくとも1サイクルを経過するまで、遅らさ
れることに注目すべきである。こうすると、前述のキャ
ッシュの一貫性を維持するための時間を与えることがで
きる。
また、行(i)に示されている制御ワードCW3により
指令される増分は、行(m)に示すように、指定された
場所A内の(命令n+4により増分された)適切な値を
主記憶装置からフェッチできるようになるまで、行うこ
とはできない。これは、第5図に示されているものより
も長い期間を要することがある。この点に関連して、第
5図では、MSバス上のフェッチAが、キャッシュ・バス
上のフェッチAに続くサイクルで生ずることが示されて
いる。
指令される増分は、行(m)に示すように、指定された
場所A内の(命令n+4により増分された)適切な値を
主記憶装置からフェッチできるようになるまで、行うこ
とはできない。これは、第5図に示されているものより
も長い期間を要することがある。この点に関連して、第
5図では、MSバス上のフェッチAが、キャッシュ・バス
上のフェッチAに続くサイクルで生ずることが示されて
いる。
行(k)と(l)は、プロセッサ1内で実行される前
記キャッシュ一貫性プロトコルと、試みられたキャッシ
ュからのフェッチ(行(l))の結果として生ずるキャ
ッシュ・ミス(データは行(j)でパージされた)に後
続する、主記憶装置からの以後のフェッチ(行(m))
とを表す。
記キャッシュ一貫性プロトコルと、試みられたキャッシ
ュからのフェッチ(行(l))の結果として生ずるキャ
ッシュ・ミス(データは行(j)でパージされた)に後
続する、主記憶装置からの以後のフェッチ(行(m))
とを表す。
一旦、指定された場所A内の適切な値が主記憶装置か
らフェッチされると、行(i)に示されている制御ワー
ドCW4は、Aを記憶する(行(i)と(m)を参照)。
そうすると、命令n+4の解除と同じ態様で、行(i)
に示されているCW5による解除を実行できる。
らフェッチされると、行(i)に示されている制御ワー
ドCW4は、Aを記憶する(行(i)と(m)を参照)。
そうすると、命令n+4の解除と同じ態様で、行(i)
に示されているCW5による解除を実行できる。
行(j)は、或る時間にわたるプロセッサ0への「MP
FIELD B」入力(すなわち、プロセッサ1からの出
力)を示す。それらの信号は、ロック5をセットし、
(命令m+4に対する)フェッチを実行し、最終的にロ
ック5を解除するためのプロセッサ1による試みを示
す。行(n)は、プロセッサ1のための遅れ期間を示
す。この期間は、ロック5が命令n+4によりセットさ
れた時から開始し、命令n+4によってロック5が解除
されるまで継続するから、この期間中に、キャッシュの
一貫性を維持するための処理を行うことができる。
FIELD B」入力(すなわち、プロセッサ1からの出
力)を示す。それらの信号は、ロック5をセットし、
(命令m+4に対する)フェッチを実行し、最終的にロ
ック5を解除するためのプロセッサ1による試みを示
す。行(n)は、プロセッサ1のための遅れ期間を示
す。この期間は、ロック5が命令n+4によりセットさ
れた時から開始し、命令n+4によってロック5が解除
されるまで継続するから、この期間中に、キャッシュの
一貫性を維持するための処理を行うことができる。
以上、本発明の前記諸目的を実現するための装置を説
明した。新規な装置についての以上の説明は、例示と説
明の目的だけのために行ったものである。ここで開示し
た態様で本発明を全て示したり、その態様に発明を限定
することを意図するものではない。前記教示に従って多
くの変更及び類型が可能であることが明らかである。
明した。新規な装置についての以上の説明は、例示と説
明の目的だけのために行ったものである。ここで開示し
た態様で本発明を全て示したり、その態様に発明を限定
することを意図するものではない。前記教示に従って多
くの変更及び類型が可能であることが明らかである。
例えば、命令の1つのクラスは、システム内の他の任
意のプロセッサにおける任意の命令に対して不可分に実
行するという制約がないように設計できる。オペランド
のタイプ又は場所と、命令のタイプ、操作対象である資
源等を基礎にして、クラスを定義することができる。ど
の命令クラスをロックせねばならないかを指定するため
にメッセージを送ることができ、それらのメッセージ
は、前述の個別的な結線方式を用いる代わりに、(主記
憶装置バスに類似する)既存のバスを用いて送ることが
できる。
意のプロセッサにおける任意の命令に対して不可分に実
行するという制約がないように設計できる。オペランド
のタイプ又は場所と、命令のタイプ、操作対象である資
源等を基礎にして、クラスを定義することができる。ど
の命令クラスをロックせねばならないかを指定するため
にメッセージを送ることができ、それらのメッセージ
は、前述の個別的な結線方式を用いる代わりに、(主記
憶装置バスに類似する)既存のバスを用いて送ることが
できる。
ここで述べた実施例は、本発明の原理と、それの実際
的な応用を最も良く説明することにより、当業者が本発
明を種々の実施例において、意図する特定の用途に合わ
せて種々変更して、最適に利用するために示したもので
ある。
的な応用を最も良く説明することにより、当業者が本発
明を種々の実施例において、意図する特定の用途に合わ
せて種々変更して、最適に利用するために示したもので
ある。
第1図は、本発明の原理に従った相対的不可分命令の実
行をサポートする、多重プロセッサ環境内で処理中の2
つの命令ストリームを示す図である。 第2A図と第2B図は、相対的不可分命令の実行をサポート
するために適当な密結合多重プロセッサ・システムを示
すブロック図であり、第2B図は第2A図に示されている2
つのプロセッサの詳細図である。 第3図は、第2B図に示されているプロセッサの1つの詳
細を示し、特に本発明の好適な実施例を実現するために
有用な1組のハードウェア及び制御経路を示す図であ
る。 第4図は、本発明の実施例を実現するために適当な、第
2B図に示されているハードウェア及び制御経路の代替実
施例を示す図である。 第5図は、本発明の実施例を実現するために、第1のプ
ロセッサと第2のプロセッサの間で必要とされる時間的
な協働関係の例を示すタイミング図である。 201〜n……プロセッサ、 203……主記憶装置、 210、211……キャッシュ・メモリ、 215、216……キャッシュ・ディレクトリ、 22、23……プロセッサ・ユニット(PU)、 235、286……記憶装置バッファ(ST BUF)、 240、241……記憶装置制御(SCU)、 242、243……多重プロセッサ・ディレクトリ(MP DI
R)、 25……主記憶装置バス(MSバス)、 280、281、282……プロセッサ間通信リンク、 301……制御記憶装置、 302……制御記憶装置オペレーション・レジスタ(CSO
R)、 303……プロセッサユニット(PU)チップ、 304……ロック仲裁ハードウェア、 305……主記憶装置バス仲裁論理(MSバス仲裁)、 307……記憶装置データ・バッファ、 308……キャッシュ制御。
行をサポートする、多重プロセッサ環境内で処理中の2
つの命令ストリームを示す図である。 第2A図と第2B図は、相対的不可分命令の実行をサポート
するために適当な密結合多重プロセッサ・システムを示
すブロック図であり、第2B図は第2A図に示されている2
つのプロセッサの詳細図である。 第3図は、第2B図に示されているプロセッサの1つの詳
細を示し、特に本発明の好適な実施例を実現するために
有用な1組のハードウェア及び制御経路を示す図であ
る。 第4図は、本発明の実施例を実現するために適当な、第
2B図に示されているハードウェア及び制御経路の代替実
施例を示す図である。 第5図は、本発明の実施例を実現するために、第1のプ
ロセッサと第2のプロセッサの間で必要とされる時間的
な協働関係の例を示すタイミング図である。 201〜n……プロセッサ、 203……主記憶装置、 210、211……キャッシュ・メモリ、 215、216……キャッシュ・ディレクトリ、 22、23……プロセッサ・ユニット(PU)、 235、286……記憶装置バッファ(ST BUF)、 240、241……記憶装置制御(SCU)、 242、243……多重プロセッサ・ディレクトリ(MP DI
R)、 25……主記憶装置バス(MSバス)、 280、281、282……プロセッサ間通信リンク、 301……制御記憶装置、 302……制御記憶装置オペレーション・レジスタ(CSO
R)、 303……プロセッサユニット(PU)チップ、 304……ロック仲裁ハードウェア、 305……主記憶装置バス仲裁論理(MSバス仲裁)、 307……記憶装置データ・バッファ、 308……キャッシュ制御。
フロントページの続き (72)発明者 アンドルー、ヘンリー、ウォットレング アメリカ合衆国ミネソタ州、ロチェスタ ー、マナービュー、ドライブ、エヌ、ダ ブリュ、4224 (56)参考文献 特開 昭59−180767(JP,A) 特開 昭59−200366(JP,A) 特開 昭63−298652(JP,A)
Claims (4)
- 【請求項1】多重プロセッサ・システムであって、 (a)複数の共用データ構造を保持する共用主記憶装置
と、 (b)前記共用主記憶装置へ結合される複数のプロセッ
サとを備え、 前記各プロセッサは別の命令ストリームを全ての他のプ
ロセッサと並列に実行し、前記各プロセッサは複数の命
令クラスに分割される命令セットをそれぞれ有し、前記
各命令クラスはそのクラスに対応する1つの特定の前記
共用データ構造に応じた異なるロックをそれぞれ有する
ように定義され、前記各命令クラスはそのクラスに対応
する前記特定の共用データ構造を処理対象として相対的
に不可分に実行される複数の命令から構成されており、 (c)いずれか1つの前記命令クラスに含まれる所与の
命令がいずれか1つの前記プロセッサにおいてその命令
ストリームから現に実行されているときに、その所与の
命令が属する命令クラスの指示を全ての他のプロセッサ
に通知するためのプロセッサ間通信手段と、 (d)前記各プロセッサに関連してそれぞれ設けられ、
関連するプロセッサの命令ストリームから実行されよう
としている他の命令の命令クラスの指示を更に供給する
ための手段と、 (e)前記各プロセッサに関連してそれぞれ設けられ、
前記所与の命令及び前記他の命令がいずれも同一の命令
クラスに属する場合には、前記所与の命令が前記他の命
令による当該命令クラスに対応する特定の前記共用デー
タ構造の使用をロックするように、前記指示の両方に応
答して他の全てのプロセッサにおける前記他の命令のオ
ペレーションを選択的に遅らせるための手段と、 を備える前記多重プロセッサ・システム。 - 【請求項2】少なくとも1つの前記プロセッサにおける
命令セットが、他の命令に対して不可分に実行される命
令のためのロック・コード情報を含む制御記憶装置にマ
イクロコード化される、請求項1記載の多重プロセッサ
・システム。 - 【請求項3】他の命令に対して不可分に実行される命令
を復号する時にロック・コード情報を供給するように、
少なくとも1つの前記プロセッサにおける命令セットが
当該プロセッサに組み込まれている、請求項1記載の多
重プロセッサ・システム。 - 【請求項4】前記プロセッサ間通信手段は、前記複数の
プロセッサの間で前記ロック・コード情報を伝えるため
の専用の結線式プロセッサ間通信手段から成る、請求項
2又は3記載の多重プロセッサ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US43404889A | 1989-11-09 | 1989-11-09 | |
US434048 | 1989-11-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH03210657A JPH03210657A (ja) | 1991-09-13 |
JP3206914B2 true JP3206914B2 (ja) | 2001-09-10 |
Family
ID=23722609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27204390A Expired - Fee Related JP3206914B2 (ja) | 1989-11-09 | 1990-10-09 | 多重プロセッサ・システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US5333297A (ja) |
EP (1) | EP0432075B1 (ja) |
JP (1) | JP3206914B2 (ja) |
DE (1) | DE69029995T2 (ja) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6336180B1 (en) | 1997-04-30 | 2002-01-01 | Canon Kabushiki Kaisha | Method, apparatus and system for managing virtual memory with virtual-physical mapping |
US5761413A (en) * | 1987-12-22 | 1998-06-02 | Sun Microsystems, Inc. | Fault containment system for multiprocessor with shared memory |
CA2078310A1 (en) * | 1991-09-20 | 1993-03-21 | Mark A. Kaufman | Digital processor with distributed memory system |
CA2078312A1 (en) | 1991-09-20 | 1993-03-21 | Mark A. Kaufman | Digital data processor with improved paging |
JP2729343B2 (ja) * | 1992-08-28 | 1998-03-18 | 三菱電機株式会社 | 複数個の処理装置を有する情報処理システムおよびこの情報処理システムにおいて用いられる制御装置ならびに処理装置 |
JPH06110846A (ja) * | 1992-09-25 | 1994-04-22 | Fujitsu Ltd | 排他制御方式 |
JP2814880B2 (ja) * | 1993-06-04 | 1998-10-27 | 日本電気株式会社 | 異なる命令特性を持つ複数のcpuによって構成される計算機システムの制御装置 |
FR2706651B1 (fr) * | 1993-06-17 | 1995-08-18 | Alsthom Cge Alcatel | Procédé de gestion des accès concurrents à une mémoire par plusieurs utilisateurs. |
US5572704A (en) * | 1993-12-15 | 1996-11-05 | Silicon Graphics, Inc. | System and method for controlling split-level caches in a multi-processor system including data loss and deadlock prevention schemes |
US5548728A (en) * | 1994-11-04 | 1996-08-20 | Canon Information Systems, Inc. | System for reducing bus contention using counter of outstanding acknowledgement in sending processor and issuing of acknowledgement signal by receiving processor to indicate available space in shared memory |
AUPO648397A0 (en) | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Improvements in multiprocessor architecture operation |
US6311258B1 (en) | 1997-04-03 | 2001-10-30 | Canon Kabushiki Kaisha | Data buffer apparatus and method for storing graphical data using data encoders and decoders |
US6707463B1 (en) | 1997-04-30 | 2004-03-16 | Canon Kabushiki Kaisha | Data normalization technique |
US6289138B1 (en) | 1997-04-30 | 2001-09-11 | Canon Kabushiki Kaisha | General image processor |
US6259456B1 (en) | 1997-04-30 | 2001-07-10 | Canon Kabushiki Kaisha | Data normalization techniques |
AUPO647997A0 (en) * | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Memory controller architecture |
US6272257B1 (en) | 1997-04-30 | 2001-08-07 | Canon Kabushiki Kaisha | Decoder of variable length codes |
US5893157A (en) * | 1997-05-28 | 1999-04-06 | International Business Machines Corporation | Blocking symbol control in a computer system to serialize accessing a data resource by simultaneous processor requests |
US5895492A (en) * | 1997-05-28 | 1999-04-20 | International Business Machines Corporation | Processor associated blocking symbol controls for serializing the accessing of data resources in a computer system |
US5895494A (en) * | 1997-09-05 | 1999-04-20 | International Business Machines Corporation | Method of executing perform locked operation instructions for supporting recovery of data consistency if lost due to processor failure, and a method of recovering the data consistency after processor failure |
US6009261A (en) * | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6631463B1 (en) * | 1999-11-08 | 2003-10-07 | International Business Machines Corporation | Method and apparatus for patching problematic instructions in a microprocessor using software interrupts |
US6473821B1 (en) * | 1999-12-21 | 2002-10-29 | Visteon Global Technologies, Inc. | Multiple processor interface, synchronization, and arbitration scheme using time multiplexed shared memory for real time systems |
US6912640B2 (en) * | 2003-03-14 | 2005-06-28 | Sun Microsystems, Inc. | Method to partition large code across multiple e-caches |
TW200708963A (en) * | 2005-08-26 | 2007-03-01 | Ind Tech Res Inst | Method and apparatus for synchronization in a multi-processor system |
GB0524348D0 (en) * | 2005-11-30 | 2006-01-04 | Ibm | Method and system for concurrent processing of list items |
JP2010140290A (ja) * | 2008-12-12 | 2010-06-24 | Panasonic Corp | マルチプロセッサシステム及びその排他制御の調停方法 |
US9160607B1 (en) * | 2012-11-09 | 2015-10-13 | Cray Inc. | Method and apparatus for deadlock avoidance |
US9251022B2 (en) * | 2013-03-01 | 2016-02-02 | International Business Machines Corporation | System level architecture verification for transaction execution in a multi-processing environment |
US9218272B2 (en) | 2013-03-01 | 2015-12-22 | International Business Machines Corporation | System level architecture verification of a transactional execution |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3614745A (en) * | 1969-09-15 | 1971-10-19 | Ibm | Apparatus and method in a multiple operand stream computing system for identifying the specification of multitasks situations and controlling the execution thereof |
US4073005A (en) * | 1974-01-21 | 1978-02-07 | Control Data Corporation | Multi-processor computer system |
US4199811A (en) * | 1977-09-02 | 1980-04-22 | Sperry Corporation | Microprogrammable computer utilizing concurrently operating processors |
US4257095A (en) * | 1978-06-30 | 1981-03-17 | Intel Corporation | System bus arbitration, circuitry and methodology |
US4412286A (en) * | 1980-09-25 | 1983-10-25 | Dowd Brendan O | Tightly coupled multiple instruction multiple data computer system |
US4439830A (en) * | 1981-11-09 | 1984-03-27 | Control Data Corporation | Computer system key and lock protection mechanism |
JPS58140862A (ja) * | 1982-02-16 | 1983-08-20 | Toshiba Corp | 相互排他方式 |
US4514803A (en) * | 1982-04-26 | 1985-04-30 | International Business Machines Corporation | Methods for partitioning mainframe instruction sets to implement microprocessor based emulation thereof |
US4574350A (en) * | 1982-05-19 | 1986-03-04 | At&T Bell Laboratories | Shared resource locking apparatus |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
US4891749A (en) * | 1983-03-28 | 1990-01-02 | International Business Machines Corporation | Multiprocessor storage serialization apparatus |
US4758950A (en) * | 1983-04-18 | 1988-07-19 | Motorola, Inc. | Method and apparatus for selectively delaying an interrupt of a coprocessor |
US4604694A (en) * | 1983-12-14 | 1986-08-05 | International Business Machines Corporation | Shared and exclusive access control |
CA1239227A (en) * | 1984-10-17 | 1988-07-12 | Randy D. Pfeifer | Method of and arrangement for ordering of multiprocessor operations in a multiprocessor system |
US4766566A (en) * | 1986-08-18 | 1988-08-23 | International Business Machines Corp. | Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing |
IN170672B (ja) * | 1987-07-01 | 1992-05-02 | Digital Equipment Corp | |
US4943912A (en) * | 1987-10-13 | 1990-07-24 | Hitachi, Ltd. | Parallel processor system having control processor and array control apparatus for selectively activating different processors |
US5175829A (en) * | 1988-10-25 | 1992-12-29 | Hewlett-Packard Company | Method and apparatus for bus lock during atomic computer operations |
-
1990
- 1990-10-09 DE DE69029995T patent/DE69029995T2/de not_active Expired - Fee Related
- 1990-10-09 EP EP90480161A patent/EP0432075B1/en not_active Expired - Lifetime
- 1990-10-09 JP JP27204390A patent/JP3206914B2/ja not_active Expired - Fee Related
-
1993
- 1993-01-19 US US08/005,928 patent/US5333297A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0432075B1 (en) | 1997-02-26 |
US5333297A (en) | 1994-07-26 |
DE69029995D1 (de) | 1997-04-03 |
JPH03210657A (ja) | 1991-09-13 |
EP0432075A3 (en) | 1992-06-03 |
EP0432075A2 (en) | 1991-06-12 |
DE69029995T2 (de) | 1997-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3206914B2 (ja) | 多重プロセッサ・システム | |
US6141734A (en) | Method and apparatus for optimizing the performance of LDxL and STxC interlock instructions in the context of a write invalidate protocol | |
JP3139392B2 (ja) | 並列処理システム | |
US6029212A (en) | Method of handling arbitrary size message queues in which a message is written into an aligned block of external registers within a plurality of external registers | |
US7082601B2 (en) | Multi-thread execution method and parallel processor system | |
US5347648A (en) | Ensuring write ordering under writeback cache error conditions | |
US6728959B1 (en) | Method and apparatus for strong affinity multiprocessor scheduling | |
US5408629A (en) | Apparatus and method for controlling exclusive access to portions of addressable memory in a multiprocessor system | |
EP0747816B1 (en) | Method and system for high performance multithread operation in a data processing system | |
US5404482A (en) | Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills | |
EP0514024B1 (en) | Method and apparatus for an improved memory architecture | |
US6625698B2 (en) | Method and apparatus for controlling memory storage locks based on cache line ownership | |
US20020078307A1 (en) | Memory-to-memory copy and compare/exchange instructions to support non-blocking synchronization schemes | |
US20140025922A1 (en) | Providing multiple quiesce state machines in a computing environment | |
JP2002182976A (ja) | マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化 | |
JPH02166539A (ja) | フェッチ方法 | |
US5696939A (en) | Apparatus and method using a semaphore buffer for semaphore instructions | |
JPH03196249A (ja) | 多重プロセッサシステム | |
JP2825906B2 (ja) | 計算機システム | |
US7080213B2 (en) | System and method for reducing shared memory write overhead in multiprocessor systems | |
US6112282A (en) | Apparatus for atomic locking-accessing-unlocking of a shared resource | |
US5761724A (en) | Write-invalidate cache system for a split transaction bus based shared memory multiprocessor | |
JPH0567976B2 (ja) | ||
EP0404560B1 (en) | multiprocessor system and method | |
JPH11167557A (ja) | 共有メモリアクセス順序保証方法及びマルチプロセッサシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |