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
Application number
JP27204390A
Other languages
English (en)
Other versions
JPH03210657A (ja
Inventor
チャールズ、アーサー、ラメアー
アンドルー、ヘンリー、ウォットレング
Original Assignee
インターナショナル、ビジネス、マシーンズ、コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インターナショナル、ビジネス、マシーンズ、コーポレーション filed Critical インターナショナル、ビジネス、マシーンズ、コーポレーション
Publication of JPH03210657A publication Critical patent/JPH03210657A/ja
Application granted granted Critical
Publication of JP3206914B2 publication Critical patent/JP3206914B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/521Atomic

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は、全体として、複数のタスクの同時実行を容
易にする、多重プロセッサ・システムに係る。更に詳し
くいえば、本発明は、共用データに対する多数の主記憶
装置アクセスを実行する重要な命令の各々が、必要とさ
れている主記憶装置アクセスを、予め定義されている命
令クラスに関して不可分に実行しているように見えるこ
とを許す装置に係る。
(従来の技術) 任意の時刻に単一のタスクのみを実行する単一のプロ
セッサだけを含むユニプロセッサ・システムでは、その
資源の制御に幾つかの問題を生ずる。それらの資源のタ
イプには、主記憶装置と、通信チャネルと、I/O装置等
が含まれるが、他のタイプの資源も存在する。そのよう
なシステムでは、実行中のタスクだけがシステムの任意
の資源をアクセスできる。従って、各タスクがその活動
を完了するまで、各タスクは、必要とされている任意の
資源と、CPU自体とに対するその制御を維持する。
実際に、ユニプロセッサ・システム内の各命令は、
「不可分」であるよう設計される。ここに、不可分命令
というのは、1つの最小作業単位(アトミシティ)であ
るように見えるものとして定義される。ユニプロセッサ
・システムでは、2つの異なるタスク命令ストリームか
らの2つの命令が、(インタリーブされたフェッチ又は
記憶を伴って)同時に実行されるように見えることはで
きない。その理由は、タスク切換えが、命令の境界(又
は非常に長い命令の場合にはその命令内の中間のチェッ
クポイント)で行われるように制約されているからであ
る。
これとは対照的に、多重タスク/多重プロセッサ・シ
ステムでは、システム資源に対するプロセッサのアクセ
スを制御することが重要である。その理由は、それらの
システムは、資源を共用する多数のタスクの同時的な実
行、又はインタリーブされた実行を許容するからであ
る。そのようなアクセスを制御するために、種々の先行
技術、例えばタスク待ち行列、ロッキング・スキーム等
が開発されている。
IBMシステム/370のような、共用データに対する多重
タスク/多重プロセッサ動作を提供する従来の計算機シ
ステムでは、共用データに対して主記憶装置の多重アク
セスを不可分に行うための重要な命令が定義されてい
る。そのようなシステムでは、所与のCPU上で実行中の
重要な命令が、当該所与のCPUによる(主記憶装置内の
或る場所を対象とする)最初のアクセスと最後のアクセ
スの間に他の任意のCPUがこれと同じ場所をアクセスす
ることを禁止して、それらのアクセスの全てを実行する
ように見える。
IBMシステム/370では、「ラスト・アンド・セット(T
EST AND SET)」、「コンペア・アンド・スワップ(COM
PARE AND SWAP)」のような命令が定義されている。こ
れらの命令は、主記憶装置アクセスの初めから終わりま
で分割できない態様で(すなわち、不可分的に)、多数
の主記憶装置アクセスを行う。
「テスト・アンド・セット」命令を用いると、1つの
動作中に、主記憶装置から或るワードをフェッチし、そ
の特定のビットをテストした後、修正されたワードを主
記憶装置へ戻すことができ、その期間中には、他のプロ
セッサの他の全てのタスクが主記憶装置内のその特定の
ワードをアクセスすることを禁止できる。このフェッチ
及び修正ワードの戻し(記憶)は、1つの不可分単位又
は不可分参照を形成する。不可分参照は、一旦始まる
と、多重プロセッサ・システム内の他のどのCPUによっ
ても割込み又はインタリーブすることはできない。
「コンペア・アンド・スワップ」命令に関しては、
(比較のための)或るオペランドのフェッチと、(交換
のための)このオペランドの元の場所への記憶とは、他
のCPUから観察すると、ブロック同時インタロック化更
新参照であるように見える。すなわち、他のどのCPU
も、最初のCPUの(比較のための)フェッチと(交換の
ための)記憶の間で、主記憶装置を対象とする如何なる
フェッチ又は記憶をも行うようには見えない。従って、
主記憶装置を対象とする「コンペア・アンド・スワッ
プ」命令の動作は、他のCPUから観察すると、不可分で
あるように見える。
明らかに、IBMシステム/370のような多重プロセッサ
環境では、テスト又は比較のためのフェッチと、セット
又は交換のための記憶とは、最初のCPUのフェッチと記
憶の間にロックされた(主記憶装置内の)場所を対象と
する他の任意のCPUによるデータのフェッチ又は記憶な
しに行われなければならない。この命令は、システム内
の任意のプロセッサ上で実行できる他の全ての命令に関
して、不可分に実行されねばならない。
周知のように、ハードウェアを用いて主記憶装置内の
所与の場所をロックすることにより、その所与の場所に
記憶されているオペランドに対して必要とされている保
護を提供することができる。すなわち、この場所に対す
る他の任意のCPUのアクセスを簡単に遅らせることがで
き、又はこの場所に対するインタロックされたそのアク
セスを遅らせることができる。IBMシステム/370が典型
的である従来の計算機では、不可分命令の処理をサポー
トするために、オペランドの場所を基礎とするハードウ
ェア・ロッキング技術が用いられている。
前述した「テスト・アンド・セット」命令と「コンペ
ア・アンド・スワップ」命令のような不可分命令それ自
体は、ソフトウェア・ロックをテストし且つそのロック
が既にセットされていなければそのロックをセットする
能力を有する、ソフトウェアを提供するためにしばしば
用いられる。このソフトウェア能力は、ソフトウェア・
ロックを利用できなければ機能しない、或る機能の完全
性を保証する手段である。アクセスを行う1つ以上の汎
用命令(例えば、ロード命令)を完了した後で、ソフト
ウェアは、ソフトウェア・ロックを解除するために別の
命令を使用せねばならない。
それらのソフトウェア・ロックの使用には、ロック・
アドレスの計算を必要とする。このアドレスの計算に関
連するシステム・オーバヘッドが大きくなることがあ
り、特に、例えばロック・ビットを保持している場所に
対する比較を含んでいる緊密なループが実行されるとき
がそうである。この例では、所与の場所についての頻繁
で且つ反復的なアドレス計算がしばしば必要とされ、そ
れによりプロセッサの性能を低下させる。
従って、データ構造(単一の場所、リンクされたリス
ト等)の完全性を維持するためにソフトウェア・ロック
を使用する必要性を最小限にすることにより、ソフトウ
ェア・ロックを利用する時に必要とされるアドレス計算
を最小限にすることが望ましい。
多重プロセッサ/多重タスク環境において共用される
データ構造の完全性を維持するための別の技術は、共用
メモリの区画化と、所与の不可分命令が持続する間にCP
Uにより必要とされる区画をロックすることを基礎にし
た、アドレス・ロッキング機構である。そのような技術
では、プロセッサの性能低下は、主記憶装置内の区画の
数の逆関数であり、またCPU相互間で供給される(区画
を識別する)信号の数の関数である。その機構は、区画
の数が増大するにつれて扱いにくくなるが、おそらく全
ての命令を不可分に見えるようにできる。更に、各区画
に対するロック・ビットとアドレス計算の検査、ロック
のセット及び解除が必要とされる。従って、IBMシステ
ム/370について先に述べたロッキング技術と比較する
と、メモリ区画技術の利用によっては、(アドレス計算
についての)大幅な改良は実現されない。
アドレス計算に関連する従来技術に固有の別の問題
は、ユニプロセッサ上で実行するように設計されたプロ
グラムを、多重プロセッサ/多重タスク環境内で実行す
るように移行する際に生ずる、ソフトウェアに及ぼす影
響である。先に指摘したように、共用データの場所(一
般には、共用データ構造)に対するアクセスの制御は、
ユニプロセッサ環境から多重プロセッサ環境に移行する
際に重要である。従って、共用データ構造の完全性を保
証するために、オペランドの場所を基礎とするハードウ
ェア・ロックと、前述したソフトウェア・ロック以外の
手段を利用する計算機システムを設けることにより、そ
のような移行の結果としてのソフトウェアに対する影響
を最小限にすることも望ましい。
従来の計算機システムには、その性能を向上させるた
めに、密結合マイクロプロセッサ構成を採用するものも
ある。このような計算機システムは、多数の同一構造の
プロセッサを共用メモリ・インタフェースへ結合すると
ともに、多数のタスクを単一のシステム内で同時に実行
することを許容する。そのような計算機システムが非常
に有利となるのは、共用データの完全性を保証するため
に、オペランドの場所を基礎とするハードウェア・ロッ
ク及びソフトウェア・ロック以外の手段が利用できるよ
うな場合である。
実際に、或る重要な命令が影響を及ぼすデータ構造又
はオブジェクト・クラスを基礎にして、当該重要な命令
が(予め定義された)複数の命令クラスに分割されるよ
うな計算機システムを利用できるようにするのが望まし
い。そうすると、(1)所与のクラス内の命令が実行さ
れている場合に、そのクラス内の命令だけをロック・ア
ウトすればよく、(2)予め定義されているクラス内の
いずれかの命令が所与のプロセッサにより実行中である
と識別されると、そのクラス内の命令をロック・アウト
するためのアドレス計算は必要とされないからである。
命令クラス内の残りのメンバをロック・アウトするため
には、ハードウェアを使用できる。
実際に、各クラス内の命令は、1組の「相対的」不可
分命令を構成する。すなわち、IBMシステム/370のよう
に、他のプロセッサ上で実行中の全ての命令に関して不
可分である幾つかの不可分命令を提供するのではなく
て、(所与のクラスからの)所与の相対的不可分命令が
実行されている間に、この相対的不可分命令により用い
られる主記憶装置の内容が、同じクラスからの相対的不
可分命令を実行している他のプロセッサにより変更され
ないことを保証するように、複数組の相対的不可分命令
を定義することができる。
実行中の1つの相対的不可分命令と同じクラス内に含
まれない1つ以上の命令は、他のプロセッサ上で同時に
動作することを許される。定義により、すなわち、同じ
クラス内に含まれないことにより、それらの命令は、実
行中の相対的不可分命令により利用されているデータ構
造に影響を及ぼすことができない。
その結果、所望の多重プロセッサ・システム内のプロ
セッサの性能を、従来のシステムより向上させることが
できる。所与の相対的不可分命令が実行されている時に
は、この命令が影響を及ぼす特定のデータ構造を保護す
る必要があるだけである。実行中の相対的不可分命令と
同じクラス内の命令を実行していないプロセッサは、そ
の処理を自由に続けることができる。
更に、前述の相対的不可分命令の処理をサポートする
計算機システムは、ユニプロセッサ環境から多重プロセ
ッサ環境へのソフトウェアの移行をサポートし、ソフト
ウェア・ロックの必要性を最小限にする。その理由は、
共用データの完全性が、相対的不可分命令の影響を受け
るデータ構造のタイプ(これはユニプロセッサ環境と多
重プロセッサ環境の間では不変である)を基礎にし、先
に述べたように、所与のクラスのメンバとしての或る命
令を識別することが、ハードウェア・ロッキング技術に
より他のメンバを「ロック・アウトする」ために必要な
ことの全てであるからである。その結果、従来必要とさ
れていたソフトウェア・ロックが排除される。
(発明が解決しようとする課題) 従って、本発明の目的は、予め定義された複数クラス
の命令を相対的に不可分な態様で処理する装置を包含す
る、多重プロセッサ・システムを提供することである。
そのようなシステムでは、所与のクラス内のメンバであ
る各命令は、同じクラス内のメンバである他の命令に関
してのみ、不可分に実行されるように制約される。
本発明の別の目的は、共用主記憶装置に対する多重ア
クセスを行う命令が、それらの命令により影響を受ける
データ構造を基礎にして、不可分に実行される命令の外
観を与えるような多重プロセッサ・システムを提供する
ことである。
本発明の別の目的は、共用データの完全性を保護する
ためのソフトウェア・ロックの代替手段を提供すること
により、多重タスク/多重プロセッサ・システム内の性
能低下を最小限にすることである。
本発明の別の目的は、ソフトウェア・ロックとは独立
であるデータ構造ロッキング機構を提供することによ
り、ユニプロセッサ環境から多重プロセッサ環境へ移行
する際に典型的に経験される、共用データ・オブジェク
トを取り扱うソフトウェアに対する悪影響を最小にする
ことである。
本発明の更に別の目的は、好適な実施例では、ハード
ウェア及び水平マイクロコードを用いて、ロック機構を
相対的不可分命令自体に組み込むことにより、相対的不
可分命令の処理をサポートする多重プロセッサ・システ
ムを提供することである。
[課題を解決するための手段] 本発明に従って提供される多重プロセッサ・システム
は、(a)複数の共用データ構造を保持する共用主記憶
装置と、(b)この共用主記憶装置へ結合される複数の
プロセッサとを備え、各プロセッサは別の命令ストリー
ムを全ての他のプロセッサと並列に実行し、各プロセッ
サは複数の命令クラスに分割される命令セットをそれぞ
れ有し、各命令クラスはそのクラスに対応する1つの特
定の共用データ構造に応じた異なるロックをそれぞれ有
するように定義され、各命令クラスはそのクラスに対応
する特定の共用データ構造を処理対象として相対的に不
可分に実行される複数の命令から構成されており、
(c)いずれか1つの命令クラスに含まれる所与の命令
がいずれか1つのプロセッサにおいてその命令ストリー
ムから現に実行されているときに、その所与の命令が属
する命令クラスの指示を全ての他のプロセッサに通知す
るためのプロセッサ間通信手段と、(d)各プロセッサ
に関連してそれぞれ設けられ、関連するプロセッサの命
令ストリームから実行されようとしている他の命令の命
令クラスの指示を更に供給するための手段と、(e)各
プロセッサに関連してそれぞれ設けられ、所与の命令及
び他の命令がいずれも同一の命令クラスに属する場合に
は、所与の命令が他の命令による当該命令クラスに対応
する特定の共用データ構造の使用をロックするように、
指示の両方に応答して他の全てのプロセッサにおける他
の命令のオペレーションを選択的に遅らせるための手段
と、を備える。
本発明は、複数の相対的不可分命令を含む命令セット
を有する多重プロセッサ・システムを特徴とする。相対
的不可分命令というのは、それらの命令の複数の命令ク
ラスへの分割で定義される。すなわち、各クラス内のそ
れらの命令は、複数のプロセッサによって共用されてい
るデータ処理資源(例えば、密結合多重プロセッサ・シ
ステムの場合は主記憶装置の内容)を有するような多重
プロセッサ・システム内の他の全てのプロセッサ上で実
行中の同じクラス内の命令に対してのみ不可分である。
別言すれば、実行中の相対的不可分命令と同じクラス内
に含まれない命令は、他のプロセッサ上で同時に動作す
ることを許される。
本発明の好適な実施例に従って、相対的不可分命令
は、それが影響を及ぼすデータ構造によって定義され
る。すなわち、本発明によりサポートされる相対的不可
分命令の各々は、実行中に、その命令により必要とされ
る主記憶装置の内容が、同じクラスからの相対的不可分
命令を実行中の他のプロセッサによって変更されないこ
とを保証される。
好適な実施例に従って、本発明の別の特徴は、相対的
不可分命令の各々に対するロック機構をもたらすため
に、ハードウェアと水平マイクロコードを利用すること
である。本発明の代替実施例は、ロッキング機構をもた
らすために、相対的不可分命令のオペレーション・コー
ドを復号する手段を特徴とする。
[実施例] 第1図は、多重プロセッサ・システム内の異なる2つ
のプロセッサ上で実行中の2つの命令ストリームを示
す。プロセッサ0と1は、主記憶装置を共用する。説明
の便宜上、プロセッサ0により処理されているものとし
て示されている左側ストリーム内の命令n+4は、プロ
セッサ1により処理されている右側ストリーム内の命令
m+4が影響を及ぼすのと同じデータ構造に影響を及ぼ
すように定義される。
本発明に従って、命令n+4とm+4は、相対的不可
分命令の複数のクラスのうち1つのクラスに属するよう
に割り当てられる。
本発明の原理に従って、互いに異なるプロセッサ上で
実行中であり且つ互いに異なるクラスに属する相対的不
可分命令については、これらの命令を同時に実行できる
が、同じクラスからの2つの命令を同時に実行すること
を試みる場合には、これらの命令のうち一方の命令の実
行が「遅れる(ホールドオフ)」結果となる。
説明の便宜上、第1図は、命令n+2が相対的不可分
命令のクラス1に属し、命令m+2がクラス3に属し、
命令n+4とm+4がクラス5に属することを示してい
る。図示されている命令の残りは、分類されていない
(すなわち、これらの非相対的不可分命令は、相対的不
可分命令のどのクラスにも属していない)。
プロセッサ0と1は、命令nとmを同時に実行するよ
うに示されている。(クラス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の実行中にプロセッサ1が命令m
+4を実行することを試みる場合、その結果として、本
発明に従って、命令n+4が完了するまで命令m+4が
「遅れる」ことが示されている。
原則として、第1図は、本発明の原理を具体化するシ
ステム内のプロセッサの所望の動作を示す。ここで、各
「クラス」は、特定のデータ構造又はオブジェクト・ク
ラスに影響を及ぼす予め定義された命令の組である。
第2A図と第2B図には、第1図に示されているプロセッ
サの動作をサポートする、すなわち、ここで定義した相
対的不可分命令をサポートするのに適当な、密結合多重
プロセッサ・システムが示されている。これらのプロセ
ッサは、主記憶装置を共用するものとして示されてい
る。IBMシステム/370のような計算機システムは、図示
の計算機システムの典型的なものである。
第2A図は、n個のプロセッサ201、202、…、nを有す
る多重プロセッサ・システムの例を示す。それらのプロ
セッサは、主記憶装置バス(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を含んでいるように示されている。
第2A図と第2B図に示されている多重プロセッサ・シス
テムは、プロセッサ間通信リンク280〜282を含む。プロ
セッサ201、202等は、種々の理由で相互に通信する。例
えば、キャッシュの一貫性の維持、バス・スヌーピング
の実行等のために、プロセッサ間通信を使用できる。プ
ロセッサ間通信は、本発明自体は構成しない、種々の周
知の方式で行うことができる。例えば、米国特許第4718
002号、第4663709号及び第4412286号には、或る種のプ
ロセッサ間通信を採用する計算機システムが記述されて
いる。
新規なことは、ロックのセット/検査/リセット/仲
裁のために、第2A図と第2B図に示されているようなシス
テム内のプロセッサ間通信を利用することである。但
し、ここで定義するように、ロックは、相対的不可分命
令の処理をサポートするように設計されているものとす
る。
第3図は、第2A図と第2B図に示されているのに類似す
るシステムで、相対的不可分命令の処理をサポートする
ための好適な機構を示す。後述するように、第2A図と第
2B図に示すプロセッサ間通信リンク280〜282は、プロセ
ッサの間で前記ロック情報(及び他の情報)を伝えるた
めのものである。
本発明をサポートするハードウェア構造の詳細を説明
する前に、オブジェクト・クラスの例と、各クラス内に
含ませることができる命令の例とについて説明する。相
対的不可分命令の組を設計する時に、システムの性能を
向上させるための基準についても説明する。
定義された相対的不可分命令のクラスの数は、プロセ
ッサ設計の変数である。従って、システムの性能をでき
る限り向上させるため、すなわち、同時に実行すること
を試みている同じクラスからの相対的不可分命令に起因
する性能低下を防止するために、各クラスの大きさを小
さくでき、定義されたクラスの数を増加できる、等であ
る。相対的不可分命令の多数のクラスを定義することに
より、所与のクラスからの2つ以上のオペレーション・
コードを同時に実行するための試みが行われる可能性が
低くされる。従って、相対的不可分命令の多数のクラス
を定義することは、ロックの競合、プロセッサの遅れ等
を減少させる傾向があり、それによりシステムの性能を
向上させる。
本発明の教示に従って、オブジェクト・クラスは、複
数のクラス・メンバが影響を及ぼす、共通のデータ構造
に関して定義される。例えば、「コンペア・アンド・ス
ワップ」クラスは、前述の(共用主記憶装置内の単一の
場所に影響を及ぼす)IBMシステム/370型「コンペア・
アンド・スワップ」命令に対して定義することができ
る。半ワード形式の「コンペア・アンド・スワップ」命
令のような類似の命令を、このクラスに含ませることが
できる。
相対的不可分命令を定義するための基礎とすることが
できる別のタイプのデータ構造は、I/O命令待ち行列で
ある。そのような待ち行列へのエントリは、例えば記憶
媒体の間で(メモリからディスクへ、等)データを移動
させるために、プロセッサにより行われる。これらのエ
ントリは、I/Oチャネルによって実行される。他の共用
データ構造におけるように、待ち行列エントリへの重ね
書きは避けるべきであり、そうすると、このデータ構造
を基礎とする相対的不可分命令の定義が所望の保護を提
供することができる。
このようなI/Oメッセージ待ち行列を基礎とするクラ
スに属する相対的不可分命令の例は、周知のI/O(入力
/出力)タイプの命令及びIOW(入力/出力及び待ち)
タイプの命令を含むことがある。
相対的不可分命令を定義するための基礎とすることが
できるデータ構造の更に別の例は、送信/受信待ち行列
である。この構造は、(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)に直接マップす
る。
このマッピングは、第3図に示されているハードウェ
アが従来のシステム(例えばIBMシステム/370)の機能
を実行できることを示している。また、従来技術から離
れて、第3図に示されているハードウェア要素は、相対
的不可分命令の定義と処理をサポートするように設計で
きる。
第3図に示されている各ブロックの詳しい機能的な説
明と、相対的不可分命令の定義と処理をサポートするた
めに、それらのブロックがどのように協働するかについ
ては、すぐ後で説明する。仮定することの全ては、或る
命令を所与のプロセッサ(例えば、第2B図のプロセッサ
201)で実行する必要があること、及びこの命令がPUチ
ップ303により主記憶装置又はキャッシュ・メモリから
フェッチされることである。最初のフェッチ時には、フ
ェッチされた命令が相対的不可分命令であるか否かは知
られていない。
典型的には、このフェッチされた命令は、PUチップ30
3に関連する命令レジスタ(第3図には図示されていな
い)に記憶される。次に、PUチップ303は、制御記憶装
置301をアクセスして、所与の命令を実行するために必
要な一連の制御ワード(マイクロコード・ワード)内の
最初の制御ワードを獲得する。
本発明の実施例に従って、このフェッチされた命令が
相対的不可分命令であるか否かを決定できるのは、この
時点においてである。もし、相対的不可分命令がフェッ
チされたならば、一連の制御ワード内の1つの制御ワー
ド(好ましくは、最初の制御ワード)が或るロックをセ
ットしようと試みる。
本発明の好適な実施例は、或るロックコード・フィー
ルドを、所与の命令に対する一連の制御ワードの各々と
関連付けるために、既知の制御記憶装置機構を拡張する
ことを必要とする。このロックコード・フィールドをマ
イクロコードにより使用して、ロック番号を指定し、且
つこの試みが所与のロックを獲得するためか、解除する
ためであるかを指定することができる。
この好適な実施例では、所与の制御ワードに関連する
ロックコード・ワードがCSOR302へ送られている間に、
その制御ワードを処理するためにPUチップ303へ送るこ
とができる。これが第3図に示されている。一連の制御
ワードが、リンク350を介してPUチップ303へ供給される
のに対し、所与の制御ワードに関連するロックコード・
フィールドは、リンク351を介してCSOR302へ供給され
る。従って、或るロックをセットし、又は解除しようと
するどのような試みも、CSOR302に記憶される。CSOR302
自体は、レジスタ又はラッチを用いて実現できる。
ロック仲裁ハードウェア304は、(1)保持されてい
るロックを記録又は追跡し、(2)他のプロセッサが獲
得しようと試みているロックを認識する。本発明の好適
な実施例に従って、ロック仲裁ハードウェア304は、保
持されているロックを追跡するために内部メモリを用い
る。他のプロセッサにより供給される(ロックをセット
又は解除しようというそれらのプロセッサの試みについ
ての)データが、プロセッサ間通信リンク355を介して
供給される。第3図には、他の1つのプロセッサからの
データ・パケット(以下「MPFIELD B」と呼ぶ)が、
プロセッサ間通信リンク355を介して図示のプロセッサ
へ入力されることが示されている。第3図には示されて
いないが、本発明の実施例において意図されているもの
は、多重プロセッサ・システム内の各プロセッサごと
に、別々のハードウェア・リンクを介して別々の「MPFI
ELD」を用いることである。代替的に、多重化バス技術
を用いることができる。
所与のプロセッサへの「MPFIELD B」入力は、外部
ロック情報ばかりでなく、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」情報になる。
もし、先行サイクル中に、問題のロックを獲得しよう
と意図した他のプロセッサが存在しないと認識されるな
らば、ロック仲裁ハードウェア304は、(現サイクル中
に解決すべき衝突がないと仮定して)このロックを獲得
する。この場合には、PUチップ303は、リンク350を介し
て順次に供給される一連の制御ワードの実行を続ける
(すなわち、フェッチされた相対的不可分命令を実行す
る)。
もし、先行サイクル中に、別のプロセッサがこのロッ
クを要求してこれを獲得したならば、ロック仲裁ハード
ウェア304の内部メモリが、(図示されているプロセッ
サへプロセッサ間通信リンク355を介して前に供給され
た情報に基づき)この事実を反映する。この場合には、
PUチップ303は、保持モードに置かれる。すなわち、PU
チップ303は、制御記憶装置301からの他のどの制御ワー
ドの実行も阻止される。第3図にリンク370として示さ
れている遅れリンク上の信号を介して、「遅れ」をもた
らすことができる。
最後に、同じサイクル中に、図示されているプロセッ
サと別のプロセッサがロックを獲得することを試みたな
らば、ロック仲裁ハードウェア304は、この潜在的な衝
突を解決する必要がある。そのような解決に当たって
は、(複数のプロセッサに固定された優先順位を割り当
てるもの、それぞれの優先順位を回転させるもの、等
の)多数の技術のうちの任意の1つを使用できる。も
し、図示されているプロセッサがロック獲得のためのビ
ッドに敗れたならば、ロック仲裁ハードウェア304は、
どのプロセッサがロックを実際に獲得するかを指示する
ように更新される。この場合には、別のプロセッサが先
行サイクル中にロックを獲得した時と同じ態様で、遅れ
信号が遅れリンク370上でアサートされる。
もし、図示されているプロセッサがこのビッドに勝っ
てロックを獲得したならば、遅れはアサートされず、恰
もロック獲得のための他のビッドが存在しなかったかの
ように、PUチップ303は、一連の制御ワードの実行を続
ける。
本発明の好適な実施例に従って、図示されているプロ
セッサは、ロックが獲得されたか否かを指示する「MPFI
ELD A」情報を、プロセッサ間通信リンク366を介し
て、各サイクルごとに同報通信する。この方法は、本発
明の範囲又は要旨を逸脱することなしに変えることがで
きる。
ロックを解除するために本発明の好適な実施例におい
て用いられる機構を理解するためには、共用資源に対す
るフェッチと記憶が、(第2A図と第2B図に示されている
ものに類似する)多重プロセッサ・システム内でどのよ
うにして取り扱われるのかを理解することが重要であ
る。当分野では、フェッチと記憶を取り扱うための多く
の可能な技術が公知であるが、その一例を次に説明す
る。
第3図を再び参照するに、バッファ選択リンク340
は、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を用いて、キャッシュ・ヒットが生じたか否
かを判定できる。
記憶については、(1)RAバス397上に実アドレスを
供給して、当該記憶が目標とする主記憶装置アドレスを
指示するPUチップ303により、(2)キャッシュ・バス3
98上に供給されるデータにより、(3)バッファ選択リ
ンク340により記憶命令信号を発生した時に、これを取
り扱うことができる。
性能上の理由から、PUチップ303が、制御ワードの実
行を続けるためにMSバスを利用できるようになるのを待
つ必要がないように、第2B図の記憶装置バッファ235を
実現することは周知である。
以上では、多重プロセッサ・システム内で用いられる
典型的なフェッチ及び記憶機構を概説したので、以下で
は、(或る相対的不可分命令の処理を容易にするように
最初にセットされた)或るロックを解除する前に必要と
される諸ステップを説明する。
ロック仲裁ハードウェア304が、(CSOR302にラッチさ
れている制御記憶装置301からの適切なロック・コード
情報を介して)図示されているプロセッサによるロック
を解除するための試みを検出すると、本発明の好適な実
施例に従って次の活動を行わねばならない。
第3図に示されているプロセッサは、主記憶装置資源
を他のプロセッサと共用するから、(所与の相対的不可
分命令の実行を完了するためには)すでに保持されてい
るロックの傘の下で、図示されているプロセッサにより
開始された全ての記憶を保護することが望ましい。すな
わち、本発明の好適な実施例に従った、ロック仲裁ハー
ドウェア304は、プロセッサ201により開始された以前の
全ての記憶がMSバス250を進む機械を持つまで、ロック
を解除すべきでない。
また、他のプロセッサには、それのキャッシュ制御を
介してMSバス250上の記憶を検出するために十分な時間
を与えねばならず、そして、他の任意のプロセッサの内
部キャッシュにキャッシュ・ヒットが生じたとすると、
それの関連するキャッシュ・ディレクトリを各キャッシ
ュ制御が無効にするための十分な時間を与えねばならな
い。それぞれのキャッシュ制御は、例えばバス・スヌー
ピングによって、MSバス250上の記憶を検出できる。
各キャッシュ制御は、先ず、第3図に示されている多
重プロセッサ(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バス上に出た時点を、判定せね
ばならない。
第1の目的は、記憶装置バッファ235内に置かれた記
憶命令信号の数を追跡するロック仲裁ハードウェア304
によって達成できる。第2の目的は、前述の記憶命令信
号について、第3図のバッファ選択リンク340をモニタ
することによって達成できる。第3の目的は、MSバス仲
裁論理305からロック仲裁ハードウェア304への入力を介
して達成できる。
最後に、最後の記憶がMSバス上に出されたものと判定
された後で、ロック仲裁ハードウェア304は、ロック解
除情報を「MPFIELD A」データ・パケットの一部とし
てプロセッサ間通信リンク366上に置くことができる。
もし、1つ以上の他のプロセッサが実際に前述の「遅
れ」状態にあるならば、この解除プロセスが完了するの
は、システム内の他のロック仲裁ハードウェアがそれぞ
れの内部メモリを更新し(そのロックを実効的に解除す
る)、当該解除されたロックの所有を仲裁する後であ
る。
以上のように、第3図を参照して説明した本発明の好
適な実施例では、図示されている装置の組み合わせが、
相対的不可分命令の定義と処理をサポートするように機
能する。プロセッサ間通信は、個別的な結線方式で行わ
れる。
第4図に示すシステムは、第3図に示す(プロセッサ
間通信のために個別的な結線方式を用いる)システムと
基本的に同じである。但し、本発明を実施するために、
拡張された制御記憶装置、CSOR及びマイクロコードを用
いる代わりに、ハードウェア復号機構を用いる点が異な
っている。
この代替実施例は、(非相対的不可分命令から区別す
るために)相対的不可分命令を或るやり方で符号化する
こと、及び命令を復号する時に、ロック・コード情報
(ロック番号、ロック獲得の試み、ロック解除の試み、
等)をロック仲裁ハードウェア304へ供給することを必
要とする。第4図には、それらの機能を行うための命令
復号器401が示されている。この命令復号器401は、標準
的な復号論理、ルックアップ・テーブル等を用いて実現
することができる。
第5図は、第3図を参照して先に説明したように、本
発明の教示に従ってロックのセット及び解除を行う時の
所望の動作の流れを要約して示す。
特に、第5図は、第1図に示されている2つの相対的
不可分命令n+4とm+4を示す。それらの命令は、同
じクラスに含まれるものと定義され、命令n+4がそれ
のロックを解除するまでは命令m+4は遅らせられるこ
とを想起すべきである。
説明の便宜上、両方の命令は、主記憶装置内の指定さ
れた場所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)を解除すべきことを指定する。
行(c)は、制御ワードCW1〜CW5の各々に応答してプ
ロセッサ0により出力された「MPFIELD A」データ・
パケットを示す。或る制御ワードがCSOR302によりラッ
チされる時点(行(b))と「MPFIELD A」出力の時
点との間に、1サイクルの遅れが示される。行(d)に
示されている期間中、ロック5は、プロセッサ0により
保持されていることに注目されたい。
行(e)と(f)は、指定された場所Aからの実際の
フェッチが生じ得る期間(Aの内容がキャッシュ・メモ
リ240内にあるか否かに応じて1サイクル又はそれ以上
のサイクル)と、増分された値がAへ記憶される期間
(記憶をMSバス上に置く必要があるから2サイクル以
上)とをそれぞれ示す。行(e)では、Aの内容がキャ
ッシュ・メモリ240からフェッチされたと仮定してい
る。
行(g)は、このフェッチのためにプロセッサ・レジ
スタSAを利用できない期間を示す。
行(h)は、プロセッサ1により実行される命令シー
ケンスの一部である、命令m+3、等を示す。
行(i)は、プロセッサ1内のCSORが、命令m+4の
制御ワードCW1〜CW5をラッチする期間を示す。制御ワー
ドCW2によるフェッチが、行(f)における記憶が完了
してから少なくとも1サイクルを経過するまで、遅らさ
れることに注目すべきである。こうすると、前述のキャ
ッシュの一貫性を維持するための時間を与えることがで
きる。
また、行(i)に示されている制御ワードCW3により
指令される増分は、行(m)に示すように、指定された
場所A内の(命令n+4により増分された)適切な値を
主記憶装置からフェッチできるようになるまで、行うこ
とはできない。これは、第5図に示されているものより
も長い期間を要することがある。この点に関連して、第
5図では、MSバス上のフェッチAが、キャッシュ・バス
上のフェッチAに続くサイクルで生ずることが示されて
いる。
行(k)と(l)は、プロセッサ1内で実行される前
記キャッシュ一貫性プロトコルと、試みられたキャッシ
ュからのフェッチ(行(l))の結果として生ずるキャ
ッシュ・ミス(データは行(j)でパージされた)に後
続する、主記憶装置からの以後のフェッチ(行(m))
とを表す。
一旦、指定された場所A内の適切な値が主記憶装置か
らフェッチされると、行(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が解除
されるまで継続するから、この期間中に、キャッシュの
一貫性を維持するための処理を行うことができる。
以上、本発明の前記諸目的を実現するための装置を説
明した。新規な装置についての以上の説明は、例示と説
明の目的だけのために行ったものである。ここで開示し
た態様で本発明を全て示したり、その態様に発明を限定
することを意図するものではない。前記教示に従って多
くの変更及び類型が可能であることが明らかである。
例えば、命令の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……キャッシュ制御。
フロントページの続き (72)発明者 アンドルー、ヘンリー、ウォットレング アメリカ合衆国ミネソタ州、ロチェスタ ー、マナービュー、ドライブ、エヌ、ダ ブリュ、4224 (56)参考文献 特開 昭59−180767(JP,A) 特開 昭59−200366(JP,A) 特開 昭63−298652(JP,A)

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】多重プロセッサ・システムであって、 (a)複数の共用データ構造を保持する共用主記憶装置
    と、 (b)前記共用主記憶装置へ結合される複数のプロセッ
    サとを備え、 前記各プロセッサは別の命令ストリームを全ての他のプ
    ロセッサと並列に実行し、前記各プロセッサは複数の命
    令クラスに分割される命令セットをそれぞれ有し、前記
    各命令クラスはそのクラスに対応する1つの特定の前記
    共用データ構造に応じた異なるロックをそれぞれ有する
    ように定義され、前記各命令クラスはそのクラスに対応
    する前記特定の共用データ構造を処理対象として相対的
    に不可分に実行される複数の命令から構成されており、 (c)いずれか1つの前記命令クラスに含まれる所与の
    命令がいずれか1つの前記プロセッサにおいてその命令
    ストリームから現に実行されているときに、その所与の
    命令が属する命令クラスの指示を全ての他のプロセッサ
    に通知するためのプロセッサ間通信手段と、 (d)前記各プロセッサに関連してそれぞれ設けられ、
    関連するプロセッサの命令ストリームから実行されよう
    としている他の命令の命令クラスの指示を更に供給する
    ための手段と、 (e)前記各プロセッサに関連してそれぞれ設けられ、
    前記所与の命令及び前記他の命令がいずれも同一の命令
    クラスに属する場合には、前記所与の命令が前記他の命
    令による当該命令クラスに対応する特定の前記共用デー
    タ構造の使用をロックするように、前記指示の両方に応
    答して他の全てのプロセッサにおける前記他の命令のオ
    ペレーションを選択的に遅らせるための手段と、 を備える前記多重プロセッサ・システム。
  2. 【請求項2】少なくとも1つの前記プロセッサにおける
    命令セットが、他の命令に対して不可分に実行される命
    令のためのロック・コード情報を含む制御記憶装置にマ
    イクロコード化される、請求項1記載の多重プロセッサ
    ・システム。
  3. 【請求項3】他の命令に対して不可分に実行される命令
    を復号する時にロック・コード情報を供給するように、
    少なくとも1つの前記プロセッサにおける命令セットが
    当該プロセッサに組み込まれている、請求項1記載の多
    重プロセッサ・システム。
  4. 【請求項4】前記プロセッサ間通信手段は、前記複数の
    プロセッサの間で前記ロック・コード情報を伝えるため
    の専用の結線式プロセッサ間通信手段から成る、請求項
    2又は3記載の多重プロセッサ・システム。
JP27204390A 1989-11-09 1990-10-09 多重プロセッサ・システム Expired - Fee Related JP3206914B2 (ja)

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)

* Cited by examiner, † Cited by third party
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
US6246396B1 (en) 1997-04-30 2001-06-12 Canon Kabushiki Kaisha Cached color conversion method and apparatus
US6061749A (en) * 1997-04-30 2000-05-09 Canon Kabushiki Kaisha Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword
AUPO647997A0 (en) * 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Memory controller architecture
US6414687B1 (en) 1997-04-30 2002-07-02 Canon Kabushiki Kaisha Register setting-micro programming system
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
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
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
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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
US5333297A (en) 1994-07-26
EP0432075A2 (en) 1991-06-12
EP0432075B1 (en) 1997-02-26
JPH03210657A (ja) 1991-09-13
EP0432075A3 (en) 1992-06-03
DE69029995T2 (de) 1997-08-21
DE69029995D1 (de) 1997-04-03

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
US6665783B2 (en) Memory-to-memory copy and compare/exchange instructions to support non-blocking synchronization schemes
US5408629A (en) Apparatus and method for controlling exclusive access to portions of addressable memory in a multiprocessor system
EP0514024B1 (en) Method and apparatus for an improved memory architecture
US9372805B2 (en) Operating on translation look-aside buffers in a multiprocessor environment
US5442755A (en) Multi-processor system with lock address register in each processor for storing lock address sent to bus by another processor
JP2002182976A (ja) マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化
JPH02166539A (ja) フェッチ方法
US5696939A (en) Apparatus and method using a semaphore buffer for semaphore instructions
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)
US20080134187A1 (en) Hardware scheduled smp architectures
JPH11167557A (ja) 共有メモリアクセス順序保証方法及びマルチプロセッサシステム
JP2002202960A (ja) データ処理方法および装置
US5900018A (en) Processor-implemented method of controlling data access to shared resource via exclusive access control write-cache
WO1999032976A1 (en) Risc processor with concurrent snooping and instruction execution
JPH0769825B2 (ja) 並列処理装置

Legal Events

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