JPH03210657A - 多重プロセッサ・システム - Google Patents

多重プロセッサ・システム

Info

Publication number
JPH03210657A
JPH03210657A JP2272043A JP27204390A JPH03210657A JP H03210657 A JPH03210657 A JP H03210657A JP 2272043 A JP2272043 A JP 2272043A JP 27204390 A JP27204390 A JP 27204390A JP H03210657 A JPH03210657 A JP H03210657A
Authority
JP
Japan
Prior art keywords
instruction
instructions
lock
class
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2272043A
Other languages
English (en)
Other versions
JP3206914B2 (ja
Inventor
Charles A Lemaire
チャールズ、アーサー、ラメアー
Andrew H Wottreng
アンドルー、ヘンリー、ウォットレング
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of 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 or 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 or 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

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)

Abstract

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

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は全体として、1台の装置における複数のタスク
の同時実行を容易にする多重プロセッサ計算機システム
に関するものである。更に詳しくいえば、本発明は、共
用されるデータに対する多数の主記憶装置プロセスを全
てが実行するある重要な命令のおのおのが、要求されて
いる主記憶装置アクセスを、予め定められている命令セ
ットすなわち命令クラスに関して原子的に実行している
状況を持つことを許す方法および装置に関するものであ
る。
(従来の技術) 与えられた任意の時刻にただ1つのタスクを実行する1
つのプロセッサだけを含むユニプロセッサ装置において
は、コンピュータ資源の制御にいくつかの問題を生ずる
それらの資源の種類にはメモリと、通信チャネルと、I
10装置等が含まれるが、他の種類の装置も存在するこ
とが理解される。そのような装置においては、実行され
ているタスクだけが装置の任意の資源をアクセスできる
。したがって、タスクがそれの活動を終るまで、各タス
クは求められている任意の資源と、中央処理装置自体と
に対するそれの制御を維持する。
実際に、ユニプロセッサ装置における各命令は[原子的
(atoslc)Jであるよう設計される。ここに、原
子的命令というのは不可分である、すなわち、1つの作
業単位であるように見える、ものとして定義される。ユ
ニプロセッサ装置においては、2種類のタスク命令流か
らの2つの命令を同時に(フェッチまたは記憶装置がイ
ンターリーブされて)実行するようにみることはできな
い。その理由は、タスクの切換え(1つのタスクが実行
から外された後で別のタスクが実行される)が命令の境
界(または非常に長い命令の場合には命令中の中間検査
点)で行われるようにされるからである。
これとは対照的に、多重タスク処理または多重プロセッ
サコンピュータ装置においては、装置資源に対するプロ
セッサアクセスの制御が重要である。その理由は、それ
らの装置は資源を共用する多数のタスクの実行を同時に
、またはインターリーブして実行できるようにするから
である。そのようなアクセスを制御するために各種の先
行技術、たとえばタスク待ち行列、ロッキングスキーム
等が開発されている。
アイビーエム(IBM)システム/370のような、多
重タスク/多重プロセッサの共用されるデータに対する
動作を行う従来のコンピュータ装置においては、共用さ
れるデータに対して主記憶装置の多重アクセスを原子的
におのおの行う、ある重要な命令が定められる。そのよ
うな装置においては、与えられたCPUで実行する重要
な命令が、与えられたCPUによる最初のアクセスと最
後のアクセスの間に同じ記憶場所をアクセスできる他の
任意のCPUなしに、それのアクセス(主記憶装置場所
に対して)の全てを実行するように見える。
18Mシステム/370においては、「試験およびセッ
ト」、「比較および変換」のような命令が定められる。
谷命令は、初めから終りまで分割できないやり方で(す
なわち、原子的)、多数の主記憶装置アクセスを行う。
「試験およびセット」命令を用いて、他のプロセッサの
他の全てのタスクが特別のメモリ内の語をアクセスする
ことを禁じられるような1つの動作中に、メモリからそ
の特定の語をフェッチすること、特定のビットを試験す
ること、および修正された語をメモリへ戻すことができ
る。フェッチおよび戻し記憶装置は原子ユニットまたは
原子基準を形成する。原子基準は、ひとたび始まると、
多重プロセッサ装置内の他のどのcPUによっても割込
みすなわちインターリーブですることはできない。
「比較および交換」命令に関しては、オペランドのフェ
ッチ(比較目的で)と、このオペランドの場所への記憶
(交換目的で)とは、他のCPUにより観察されるよう
に、ブロック同時インターロックされた更新基準である
ように見える。すなわち、他のどのCPUも、最初のC
PUのフェッチ(比較のため)と記憶(交換のため)の
間で、どの主記憶装置フェッチまたは記憶を行うように
は見えない。したがって、比較および交換の主記憶装置
の動作は、他のCPUにより観察されるように、原子的
であるようにも見える。
明らかに、18Mシステム/370のような多重プロセ
ッサ環境においては、比較試験のためのフェッチと、セ
ットまたは交換のための記憶とを、最初のCPUの7エ
ツチと記憶の間のロックされた場所へデータをフェッチ
または記憶する他のどのようなCPUもなしに行われな
ければならない。命令は、装置内の任意のプロセッサで
動作できる他の全ての命令に関して原子的に実行せねば
ならない。
与えられた主記憶装置場所をロックして、その与えられ
た場所に記憶されているオペランドに対して求められて
いる保護を行うためにハードウェアを使用できることは
周知である。この場所に対する他の任意のCPUのアク
セスを簡単に遅らせることができ、またはこの場所に対
するインターロックされたそのアクセスを遅らせること
ができる。
!開システム/370が典型的なものである従来のコン
ピュータにおいて原子的命令の処理をサポートするため
に、オペランドの場所をベースとするハードウェアロッ
キング技術が用いられる。
前述した「試験およびセット」命令と「比較および交換
」命令のような原子的命令自体は、ソフトウェアロック
をテストし、それからそのロックが既にセットされてい
なければそのロックをセットする能力を有するソウトウ
エアを得るためにしばしば用いられる。このソフトウェ
ア性能はソフトウェアロックを利用できなければ機能し
ないことがあるある機能の完全性を保障する手段である
アクセスを行う1つまたは複数の汎用命令(たとえばロ
ード命令)を終った後で、ソフトウェアロックを解除す
るためにソフトウェアは別の命令を使用せねばならない
それらのソフトウェアロックの使用にはロックアドレス
の計算を必要とする。アドレスの計算に関連するシステ
ムオーバーヘッドは重要なことがあり、特に、例えばロ
ックピットを含んでいる場所に対する比較を含んでいる
緊密なループが実行されるときがそうである。この例に
おいては、与えられた場所についての頻繁で繰返される
アドレス計算がしばしば求められ、それによりプロセッ
サの性能を低下させる。
したがって、データ構造(単一場所、結合されたリスト
等)の完全性を保存するためにソフトウェアロックを使
用する必要を最小限にすることにより、ソフトウェアロ
ックを利用する時に求められるアドレス計算を行う必要
を最小限にすることができることが望ましい。
多重プロセッサ/多重タスク環境において共用されるデ
ータ構造の完全性を保存するための別の技術は、共用メ
モリの区画化と、CPUにより求められて、与えられた
原子的構造が持続する間の区画のロッキングとを基にし
たアドレスロッキング機構である。そのような技術では
、プロセッサの性能低下は主記憶装置の区画の数の逆関
数であり、その数はCPUの間で供給される信号(区画
を識別する)の数の関数である。その機構は、区画の数
が増大するにつれて扱いにくくなるが、おそらく全ての
命令を原子的に見えるようにできる。更に、各区画に対
するロックビットと、ロックの検査、セットおよび解放
のためのアドレス計算とが求められる。したがって、メ
モリ区画技術の利用によっては、18Mシステム/37
0について先に述べたロッキング技術よりも大幅な改良
(アドレス計算についての)は実現されない。
アドレス計算に関連する従来技術に固有の別の問題は、
ユニプロセッサで実行するように構成されたプログラム
をとり、多重プロセッサ/多重タスク環境においてその
プログラムを実行する時に生ずる、ソフトウェアに及ぼ
す衝撃である。先に指摘したように、共用されるデータ
場所、更に一般的には共用されるデータ構造、に対する
アクセスの制御は、ユニプロセッサから多重プロセッサ
への環境への移動において重要である。したがって、オ
ペランドの場所をベースとするハードウェアロックと、
共用されるデータ構造のデータの完全性を確保するため
に前述したソフトウェアロック以外の手段を利用するコ
ンピュータ装置を設けることにより、そのような移動の
結果としてのソフトウェアに対する衝撃を最小にするこ
とも望ましい。
装置の性能を向上させるために緊密に結合されたマイク
ロプロセッサ構成を採用する従来のコンピュータ装置も
知られている。緊密に結合されたマイクロプロセッサ構
成を有するコンピュータ装置は、多数の同一プロセッサ
を共用メモリインターフェイスへ結合することを許し、
かつ多数のタスクを1つの装置で同時に実行することを
許す。
オペランド場所をベースとするハードウェアロックとソ
フトウェアロック以外の手段の手段を、共用されるデー
タの完全性を確実にするために利用できるならば、その
装置は非常に有利である。
実際に、データ構造、または命令が作用を及ぼすオブジ
ェクトクラスを基にして、ある重要な命令が命令セット
に分割される(すなわち、予め定められた)場合にコン
ピュータ装置を利用できるものとすると、それは望まし
いことである。それから(1)与えられたクラス内の命
令が実行されている場合に、そのクラス内の命令だけを
ロックアウトする必要があり、(2)予め定められてい
るクラス内のいずれかの命令が与えられたプロセッサに
より実行されるものと識別されると、そのクラス内の命
令をロックアウトするためにアドレス計算は必要とされ
ない。命令クラスの残りのメンバーをロックアウトする
ためにハードウェアを使用できる。
実際に、各クラス内の命令は1組の「比較的」原子的な
命令を構成する。すなわち、他のプロセッサで実行して
いる全ての命令に関して原子的であるいくつかの原子的
な命令を供給する( 18Mシステム/370における
ように)のではなくて、与えられた比較的に原子的な命
令(与えられたクラスからの)が実行されている間に、
比較的に原子的な命令により用いられる主記憶装置設備
が、同じクラスからの比較的に原子的な命令を実行して
いる他のプロセッサにより変更させられないことを保障
するために、比較的に原子的な命令のセットを定めるこ
とができる。
実行している比較的に原子的な命令の同じクラスにない
命令は、他のプロセッサで同時に動作することを許され
る。定義により、すなわち、同じクラスにないことによ
り、それらの命令は、比較的に原子的な命令を実行する
ことにより利用されているデータ構造に影響を及ぼすこ
とができない。
その結果、希望の多重プロセッサ装置におけるプロセッ
サの性能を従来の装置により向上できる。
与えられた比較的に原子的な命令が実行されている時に
、影響を受ける特定のデータ構造を保護する必要がある
だけである。比較的原子的な命令と同じクラスの命令を
実行しないプロセッサが処理を続けることは自由である
更に、前述にクラスの比較的原子的な命令の処理をサポ
ートする計算機装置は、ユニプロセッサ装置から多重プ
ロセッサ装置へのソフトウェアの移動をサポートし、ソ
フトウェアクロックの必要性を一般に最小にする。その
理由は、共用されるデータの完全性が影響を受けるデー
タ構造の形式(これはユニプロセッサ環境と多重プロセ
ッサ環境の間では不変である)を基にし、先に述べたよ
うに、与えられたクラスのメンバーとしての命令の識別
は、ハードウェアロッキング技術により他のクラスメン
バーを「ロックアウトする」ために必要なことの全てで
あるからである。その結果、従来求められているソフト
ウェアロックがなくされる。
(発明が解決しようとする課題) したがって、本発明の目的は、命令の予め定められてい
るクラス(またはセット)を比較的に原子的なやり方で
処理する方法および装置を含むコンピュータ装置を得る
ことである。そのような装置においては、命令の与えら
れたあらかじめ定められたクラスの各メンバーが、同じ
クラ7“のメンバーである他の命令に関して、原子的に
だけ実行するようにさせられる。
本発明の別の目的は、共用される主記憶装置に対する多
重アクセスを行う命令が、それらの命令により作用を受
けるデータ構造を基にして、原子的に実行される命令の
外観を与えるようなコンビュータ装置を得ることである
本発明の別の目的は、共用されるデータの完全性を保護
するために、ソフトウェアロックの代りを供給すること
により、多重タスク/多重プロセッサ計算機装置におけ
る性能低下を最小限にすることである。
本発明の別の目的は、ユニプロセッサ環境から多重プロ
セッサ環境へ移動する時に典型的に経験される、共用さ
れているデータオブジェクトを取扱うソフトウェアに対
する負の衝撃を、ソフトウェアロックとは独立であるデ
ータ構造ロッキング機構を設けることにより、最小にす
ることである。
本発明の更に別の目的は、好適な実施例においては、ハ
ードウェアと、ロック機構を比較的原子的な命令自体に
組込む水平マイクロコードとを用いることにより、比較
的原子的な命令の処理をサポートするコンピュータ装置
を得ることである。
[課題を解決するための手段] 本発明に従って、(a)共用されるメモリ手段と、(b
)この共用されるメモリ手段へ結合され、複数の命令ク
ラスへ分けられる命令セットをおのおの有する複数のプ
ロセッサと、(c)それら複数のプロセッサの1つで進
行している前記クラスの1つにおける命令を、コンピュ
ータ装置内の前記複数のプロセッサのうちの他の任意の
プロセッサで、前記クラス中の任意の命令に対して原子
的に実行させる手段と、(d)前記クラス1つにおける
命令を実行している時を指示するために前記プロセッサ
の間で合図し、その命令が特定のどのクラスのメンバー
であるかの指示を行う手段と、(e)前記装置内の1つ
おきのプロセッサにおける、前記特定のクラス中の他の
全ての命令の操作を遅らせる手段と、を備えるコンピュ
ータ装置が得られる。
本発明は、比較的原子的な命令を含む命令セットを有す
るコンピュータ装置を特徴とするものである。比較的原
子的な命令というのは、それらの命令の命令クラスへの
分割で定義される。各クラス中のそれらの命令は、デー
タ処理資源、たとえば「緊密に結合された多重プロセッ
サ装置」におけるメモリ、をプロセッサが共用するよう
な多重プロセッサ装置における他の全てのプロセッサで
実行する同じクラス内の命令だけに対する原子である。
比較的原子的な命令を実行するのと同じクラスに含まれ
ない命令は他のプロセッサで同時に操作することを許さ
れる。
本発明の好適な実施例に従って、比較的原子的な命令は
それが影響を及ぼすデータ構造で定義される。本発明に
よりサポートされる比較的原子的な命令は、実行中に、
その命令により求められる主記憶装置設備は、同じクラ
スからの比較的に原子的な命令を実行する他のプロセッ
サによって変更されないことが保障される。
本発明の別の特徴は、好適な実施例に従って、比較的原
子的な各命令に対してロック機構を行うために、ハード
ウェアと水平マイクロコードを利用することである。本
発明の別の実施例は、ロッキング機構を行うために比較
的原子的な命令オペレーションコードを復号する手段を
特徴とするものである。
[実施例] 第1図は多重プロセッサ装置における異なる2つのプロ
セッサで実行している2つの命令の流れを示す。プロセ
ッサ0と1はメモリ資源を共用し、開発のために、プロ
セッサ0により処理されているものとして示されている
流れ内の命令n+4は、プロセッサ1により処理される
流れ内の命令m+4により行われるデータ構造と同じデ
ータ構造に作用を及ぼすために定義される。
本発明に従って、命令n+4とm+4は、比較的原子的
な命令の複数のクラス(またはセット)のうちの1つに
属するために割当てられる。
第1図は、本発明の原理に従って、種々のプロセッサで
進行し、比較的原子的な命令の種々のクラスに属する命
令を同時に実行でき、同じクラスからの2つの命令を同
時に実行する試みは、1つの命令の実行が「遅れる」結
果となる。
説明のために、第1図は命令n+2が比較的に原子的な
命令の第1のクラスに属するものとして示し、命令m+
2は比較的原子的な命令の別のりラスに属することが示
され、命令n+4とm+4は比較的原子的な命令の更に
別のクラス「クラス5」と任意に名づけた同じクラス)
に属していることが示され、示されている命令の残りは
分類されていない(すなわち、比較的原子的な命令のど
のセットにも属していない)。
プロセッサ0と1は命令nとmを同時に実行することが
示されている。命令m+2(比較的原子的な命令クラス
で「クラス3」と任意に名づける)がプロセッサ1で実
行され、それと同時に命令n+2(「クラス1」の比較
的原子的な命令と任意に名づける)がプロセッサ0で実
行されている様子が示されている。
定義により、命令m+2とロー4−2は比較的原子的な
命令の異なるクラスに含まれるから、それらの命令は同
じデータ構造に影響を及ぼさない。
したがって、本発明の教示に従って、それらの命令は同
時に処理されることを許される。
更に、本発明の教示に従って、命令m+3のような、全
く分類されていない命令(を比較的原子的な命令と同時
に実行できる。これは命令n+4(プロセッサ9で実行
する比較的原子的な命令)と命令m+3(プロセッサ1
で実行する)の重なり合いにより示されている。分類さ
れていない命令を互いに並列に実行しているのが示され
ている。
たとえば、命令n+6がプロセッサ0で、命令m+5が
プロセッサ1で同時に実行されるものとして示されてい
る。
最後に、命令n+4の進行中にプロセッサ1により命令
m+4を実行する試みの結果として、本発明に従って、
命令n+4が終了させられるまで命令m+4が「遅れる
」ことになるのが示されている。
原則として、第1図は本発明の原理を具体化する装置内
のプロセッサの希望の動作を示す。各「クラス」は特定
のデータ構造またはオブジェクトクラスに影響を及ぼす
予め定められた命令のセットである。
第1図に示されているプロセッサの動作をサポートする
、すなわち、ここで定義した比較的原子的な命令をサポ
ートするために適当な装置が第2図に示されている。
第2A図と第2B図は緊密に結合されている多重プロセ
ッサコンピュータ装置のブロック図を示す。プロセッサ
は第2A図と第2B図に主記憶装置設備を共用するもの
として示されている。18Mシステム/370のような
市販されているコンピュータ装置は図示のコンピュータ
装置を典型的に示すものである。
第2A図はn個のプロセッサ201 、202 、・・
・nを有する多重プロセッサ装置の例を示す。それらの
プロセッサは主記憶装置203を共用し、主記憶装置バ
ス(rMsバスJ ) 250を介してそれへ結合され
る。第2A図に示されている複数のプロセッサのうちの
2個のプロセッサの詳細が第2B図に示されている。特
に、第2B図は、主記憶装置バフ、 (rMsバスJ 
) 250を介して主記憶装置203へ結合されている
プロセッサ201と202を示す。
第2B図に示されているプロセッサは周知のキャッシュ
データメモリ(ユニット210と211 )および関連
するキャッシュディレクトリ(ユニット215と216
)を含む。第2B図には処理装置(pu)自体(ユニッ
ト220と230)と、記憶装置制御器(SCU) 2
40.241と、多重プロセッサディレクトリ(MP 
DIR)242.243  (多重プロセッサ装置にお
いてキャッシュの相関性を確実にするために典型的に用
いられる)も示されている。各SCUは記憶装置バッフ
ァ(ST BuF)235と236を含んでいることも
示されている。
第2A図と第2B図に示されている装置はプロセッサの
間合図リンク20g 、281.282を含む。
多重プロセッサ装置においては、プロセッサ20112
02等は各種の理由で相互に通信する。たとえば、キャ
ッシュの相関性の維持、パススヌービングの実行等のた
めにプロセッサ間の合図を使用できる。
プロセッサ間通信は、本発明自体は構成しない種々の周
知のやり方で行うことができる。例えば、米国特許第4
.718,002号、第4.683,709号および第
4.412.288号には、ある種のプロセッサ間通信
を採用するコンピュータ装置が記述されている。
新規なことは、ロックのセット、ロックの検査およびロ
ックのリセット、ロックの仲裁のために、第2A図と第
2B図に示されているような装置にプロセッサ間通信を
利用することである。ロックは、ここで定義するように
、比較的原子的な命令の処理をサポートするために構成
される。
第3図は第2A図と第2B図に示されているのに類似す
る装置で、比較的に原子的な命令の処理をサポートする
ための好適な装置を示す。後で行う説明においては、第
2A図と第2B図に示すプロセッサ間リンクは、プロセ
ッサの間で前記ロック情報(および他の情報)を伝える
ためのものである。
本発明をサポートするハードウェア構造の詳細を説明す
る前に、オブジェクトクラスの例と、各クラスに含ませ
ることができる命令の例とについて説明する。比較的原
子的な命令セットを設計する時に、装置の性能を向上さ
せる基準についても説明する。
定義された比較的原子的な命令クラスの数は、プロセッ
サ設計の変数である。したがって、装置の性能をできる
かぎり向上させるため、すなわち、同時に実行すること
を試みている同じクラスからの命令による性能低下を防
止するために、各クラスの大きさを小さ(でき、定めら
れたクラスの数を増加できる、等である。比較的原子的
な命令の多数のクラスを定めることにより、与えられた
クラスからの2つ以上のオペレーションコードを同時に
実行するための試みが低下させられる可能性が低くされ
る。したがって、比較的原子的な命令の多数のクラスを
定めることはロックの競合、プロセッサの遅れ等を減少
させる傾向があり、それにより装置の性能を向上させる
本発明の教示にしたがって、オブジェクトクラスは、ク
ラスのメンバーにより作用させられる共通のデータ構造
に関して定められる。たとえば、「比較および交換」ク
ラスはなじみの18Mシステム/370型「比較および
交換」命令(共用されるメモリ内の1つの場所に作用を
及ぼす)に対して定めることができる。「比較および交
換」半語のような類似の命令をこのクラスに含ませるこ
とができる。
比較的原子的な命令を定めるための基準とすることがで
きる別の種類のデータ構造はI10命令待ち行列である
。そのような待ち行列へのエントリはプロセッサにより
行われて、例えば記憶媒体の間でデータを動かす(メモ
リからディスクへ、等)。エントリはI10チャネルに
よって行われる。
他の共用されるデータ構造におけるように、待ち行列エ
ントリの重ね書きは避けるべきであり、このデータ構造
を基にして、比較的原子的な命令の定義が希望の保護を
行うことができる。
I10メツセージ待ち行列クラス内の例は、よく知られ
たIlo  (出力/人力)型命令およびl0W(入力
/出力および待ち)型命令を含むことがある。
比較的原子的な命令を定めるための基準にすることがで
きるデータ構造の更に別の例は送信/受信待ち行列であ
る。この構造はメツセージリスト(11O待ち行列に類
似)、結合されたリスト、または他のある種類の待ち行
列とすることができる。
待ち行列からのメツセージを付加し、またはそれらのメ
ツセージを削除する複雑な命令は、例えば、送信/受信
待ち行列データ構造を基にして、比較的原子的な命令ク
ラスに自然に適合する。
タスクディスクパッチ待ち行列、レコードクレーム、カ
ウンタ構造、各種のディレクトリ等に作用を及ぼす命令
に対して別のクラスを定めることができる。
第3図を再び参照して、示されている部品を機能的にま
とめて、第2B図のブロック図にマツプできることに注
目すべきである。特に、制御記憶装置301と、制御記
憶装置オペレーションレジスタ(c8OR)302と、
プロセッサユニットチップ(Pυチップ)303と、ロ
ック仲裁ハードウェア304とを第2B図に示されてい
るPU(ブロック220)に機能的にまとめることがで
きる。C3OR302と、ロック仲裁論理305と、実
アドレス/指令(RA/CHD)待ち行列306と、記
憶装置データバッファ307と、キャッシュ制御器30
8とをまとめて、第2B図に示されているSCUブロッ
ク(ブロック240)として機能的に実行できる。RA
/CMD待ち行列306と記憶装置データバッファ30
7とは組合わされて、第2B図に示されているST B
UPブロック(ブロック235)として機能する。第3
図に示されている残りの部品は第2B図に示されている
それの片割れ(キャッシュ240、キャッシュディレク
トリ215およびMP DIR242)に直接マツプす
る。
マツピングは第3図に示されているハードウェアが従来
の装置、例えば18Mシステム/370 、の機能を実
行できることを示している。また、従来技術から離れて
、第3図に示されているハードウェア要素は、比較的原
子的な命令の形成と処理をサポートするために構成でき
る。
第3図に示されている各ブロックの詳しい機能的な説明
と、比較的原子的な命令の形成と処理をサポートするた
めに、それらのブロックがどのように協働するかについ
てはすぐ後で説明する。仮定することの全ては、ある命
令を与えられたプロセッサ(例えばm2B図のプロセッ
サ201 ’)で実行する必要があること、および命令
がPUチップ303により主記憶装置またはキャッシュ
メモリからフェッチされていることである。最初のフェ
ッチ時には、命令が比較的原子的であるか否かは知られ
ていない。
典型的には、フェッチされた命令は、PUチップ303
に組み合わされている命令レジスタ(第3図には示され
ていない)に記憶される。次に、PUチップ303は制
御記憶装置301をアクセスして、与えられた命令を実
行するために必要な一連の制御語中の最初の制御語を得
る。
本発明の一実施例に従って、フェッチされた命令が比較
的原子的か否かを決定できるのはこの点においてである
。比較的原子的な命令がフェッチされたとすると、一連
の制御語中の1つの制御語(最初の制御語が好ましい)
がロックをセットしようと試みる。
本発明の好適な実施例は、ロックコードフィールドを、
与えられた命令に対する各制御語に組合わせるために、
既知の制御記憶装置機構を拡張することを求める。ロッ
ク番号を指定し、かつ試みが与えられたロックを得るた
めか、解放するためであるかを指定するために、ロック
コードフィールドをマイクロコードにより使用できる。
この好適な実施例においては、与えられた制御語に関連
するロックコード語がC3OR302へ送られている間
に、その制御語を処理するためにPUチップ303へ送
ることができる。これが第3図に示されている。一連の
制御語がリンク350を介してPUチップ303へ供給
されることが示され、与えられた制御語に関連するロッ
クコードフィールドがリンク351を介してC3OR3
02へ供給される。したがって、ロックをセットし、ま
たは解放しようとするどのような試みもC3OR302
に記憶される。C3OR302自体はレジスタまたはラ
ッチを用いて実現できる。
ロック仲裁ハードウェア304は、(1)保持されてい
るロックを追跡し、(2)ほかのプロセッサが得ようと
試みているロックを認鷹する。本発明の好適な実施例に
従って、ロック仲裁ハードウェア304は、保持されて
いるロックを追跡するために内部メモリを用いる。他の
プロセッサにより供給される(ロックをセットまたは解
放しようというそれらのプロセッサの試みについての)
データがプロセッサ間リンク355を介して供給される
他の1つのプロセッサからのデータパケット、以後rM
PPIELD B Jと呼ぶ、が、リンク355を介し
て図示のプロセッサへ入力される様子が第3図には示さ
れている。第3図には示されていないが、本発明の一実
施例において意図されているものは、多重プロセッサ装
置における各プロセッサに、別々のハードウェアリンク
を介して別々のMPP I ELDBを用いることであ
る。あるいは、多重化したバス利用技術を用いることが
できる。
与えられたプロセッサへのMPFIELD B入力は外
部ロックプロセッサ情報ばかりでなく、主記憶装置仲裁
情報も伝えるように構成される。これは第3図に示され
ており、リンク355上のMPPIELD B入力はロ
ック仲裁ハードウェア304(入力ロック情報のため)
と仲裁論理305(主記憶装置バス仲裁情報のため)の
間に分割される。
(制8記憶装置301からの適切なロックコード情報に
ラッチされているC3OR302を介して)ロック仲裁
ハードウェア304が、示されているプロセッサの部分
におけるロックを得ようとする試みを検出すると、その
ロック仲裁ハードウェア304はプロセッサ間リンク3
66を介してその試みを装置の他のプロセッサへ同報通
信する。第3図はリンク36Bを介して同報通信されて
いるrMPPIELD A Jデータパケットを示す。
示されているプロセッサによるMPFIELD A情報
(リンク381とバッファ選択340を介してロック仲
裁ハードウェア304が利用できるMSバス仲裁情報を
含む)は、装置内の他の全てのプロセッサに対してはM
PPIEI、D B情報(後で説明する)になる。
問題のロックを得ようと意図したプロセッサがないと認
められたとすると(前のサイクルにおいて)、ロック仲
裁ハードウェア304はロックを得る(現在のサイクル
中に解決すべき衝突がないと仮定して)。この場合には
、PUチップ303は、リンク350を介して順次供給
される制御語の実行を続ける(すなわち、フェッチされ
た比較的原子的な命令を実行する)。
前のサイクルで要求された別のプロセッサがロックを得
たとすると、ロック仲裁ハードウェアのメモリがこの事
実(示されているプロセッサへリンク355を介して前
に供給された情報)を反映する。この場合には、PUチ
ップ303は保持モードに置かれる。すなわち、制御記
憶装置からの他のどの制御語の実行も阻止される。第3
図にリンク370として示されている遅れリンク上の信
号を介して「遅れ」を行うことができる。
最後に、同じサイクル中に、示されているプロセッサと
別のプロセッサがロックを得ることを試みたとすると、
ロック仲裁ハードウェア304は潜在的な衝突を解決す
る必要がある。プロセッサに固定された優先順位、順ぐ
りの優先順位を割当てる、等のようないくつかのやり方
のうちの任意の1つを使用できる。示されているプロセ
ッサがロックのための試みを失ったとすると、ロック仲
裁論理304は更新されて、どのプロセッサがロックを
実際に得るかを指示する。この場合には、別のプロセッ
サが前のサイクルでロックを得た時と同じやり方で、遅
れ信号がリンク370でアサートされる。
示されているプロセッサがロックを得たとすると遅れは
アサートされず、ロックのために他の試みがないとした
場合とまったく同様に、PUチップ303は指令語の実
行を続ける。
本発明の好適な実施例に従って、示されているプロセッ
サは、ロックが得られたか否かを各サイクルごとに(リ
ンク355で) MPFIELD Aを放送する。この
、やり方は本発明の範囲または要旨を逸脱することなし
に変えることができる。
ロックを解放するために本発明の好適な実施例において
用いられるメカニズムを理解するために、共用されてい
る資源のフェッチと記憶をどのようにして行うかの理解
を多重プロセッサ装置(第2A図と第2B図に示されて
いるものに類似する)において取扱うことができること
は重要である。
フェッチと記憶を取扱うための多くの可能な技術が当業
者に知られているが、その−例を次に説明する。
第3図を再び参照して、PUチップ303により実行さ
れている与えられた制御語がフェッチであるか、記憶で
あるかについて、実アドレス/指令待ち行列30Bと記
憶データバッファ307(他のユニットのうちで)へ知
らせるために、バッファ選択リンク340を使用できる
。いいかえると、信号の種類の指示が第2B図に示すよ
うに記憶バッファ235へ供給される(第3図のユニッ
ト306と307)。記憶の数をおぼえておくことは、
ロックをいつ解放するかを決定するために重要であるこ
とが後でわかるであろう。
(1)バッファ選択リンク340上のフェッチ命令信号
を取り出すPUチップにより、(2)フェッチの実アド
レスをピ^バス397を介して供給するPUチップによ
り、および(3)フェッチされたデータをキャツシュヒ
ツトの場合にPUチップへ送るキャッシュデータバス3
98により、フェッチを実行できる。キャッシュミスの
場合には、フェッチされたデータは主記憶装置バスとキ
ャッシュバスを介してPUチップへ戻される(主記憶装
置バスとキャッシュバスの間の経路は第3図に示されて
いない)。キャッシュ制御器308を用いて、キャツシ
ュヒツトが起きたか否かを判定できる。
(1)RAババス97上の信号をとり出して、記憶を目
標とされる主記憶装置アドレスを指示するPUチップ3
03により、(2)データバス398からとり出される
データにより、(3)バッファ選択340により記憶命
令信号を発生した時に、記憶を取扱うことができる。
性能上の理由から、PUチップ303が、制御語の実行
を続けるために主記憶装置バスを利用できるようになる
ことを待つ必要がないように、第2B図のユニット23
5を実現することがよく知られている。
多重プロセッサ装置において用いられる典型的なフェッ
チおよび記憶機構のこの機構が与えられると、ロックを
話す前に求められる過稈(比較的原子的な命令の処理を
容易にするために元来セットされた)を次に説明でき、
理解できる。
(制御記憶装置301からの適切なロックコード情報に
ラッチングするC3OR302を介して)ロックを解除
するために、示されているプロセッサによる試みをロッ
ク仲裁ハードウェア304が検出すると、本発明の好適
な実施例に従って下記の活動を行わねばならない。
第3図に示されているプロセッサは主記憶装置資源を装
置の他のプロセッサと共用するから、すてに保持されて
いるロックの傘の下で、示されているプロセッサにより
開始された全ての記憶を保護することが望ましい(与え
られた比較的原子的な命令の実行を完了するために)。
すなわち、本発明の好適な実施例に従って、ロック仲裁
ハードウェア304は、プロセッサ201により開始さ
れた以前の全ての記憶が主記憶装置バスを進む機会を持
つまで、ロックを解放すべきでない。
装置の他のプロセッサには、それのキャッシュ制御器を
介して主バス上の記憶を検出するために十分な時間を与
えねばならず、かつ、他の任意のプロセッサの内部キャ
ッシュにキャツシュヒツトが起きたとすると、それの関
連するキャッシュディレクトリを各キャッシュ制御器が
無効にするための十分な時間を与えねばならない。それ
ぞれのキャッシュ制御器は、たとえばパススヌーピング
によって主バス上の記憶を検出できる。
キャッシュ制御器が制御するキャッシュ内に主記憶場所
がコピーされたかどうかを、(1)第3図に示されてい
る多重プロセッサ(MP)デイレクト1J242のよう
なMPディレクトリ内の主記憶場所をまず調べることに
より、キャッシュ制御器は判定できる。その場所にある
とすると、キャッシュ制御器は適切なバス(たとえばR
Aババス97を所有できて、キャッシュディレクトリ内
の有効なビットを、サイクルを盗むことにより(第3図
にリンク395を介して行われることが示されている)
、無効に変えることができる。
ひとたび全ての記憶が主記憶バスに置かれ、キャッシュ
更新(必要があれば)を行うために十分な時間が経過す
ると、ロックを解除できる。
したがって、解除するための試みがロック仲裁ハードウ
ェア304により検出されるとしても、(1)主記憶バ
スへ進まなかった、記憶バッファ235に置かれたPυ
チップ234により開始された記憶があるか、(2)解
除が検出されるサイクル中にRAババス97と、キャッ
シュバス398と、バッファ選択340とにおいて記憶
が進行中であるかを、(3)バッファ235(第3図の
ユニット30Bト307)内の最後の記憶が主記憶バス
へ出た時に、判定せねばならない。
第1に列挙される目的は、記憶バッファ235に置かれ
た記憶の数を記憶するロック仲裁ハードウェア304に
よって達成できる。第2の目的は、前記記憶指示信号に
対して第3図のバッファ選択リンク340をモニタする
ことによって達成できる。
第3の目的は、主記憶バス仲裁論理305からのロック
仲裁ハードウェア304への入力を介して達成できる。
最後に、最後の記憶がMSバスに出されたものと判定さ
れた後で、仲裁ハードウェア304はロック解放情報を
MPPIELD Aの一部としてリンク366に置くこ
とができる。
この解放過程は、装置内の他のロック仲裁ユニットがそ
れの内部メモリを更新しくロックを実効的に解hkする
)、装置の1つまたは複数の他のプロセッサが実際に上
記「遅れ」状態にあるならば、解放されたロックの所有
を仲裁する。
第3図を参照して説明したのは本発明の好適な実施例で
あって、装置の示されている組合わせが、比較的原子的
な命令の形成と処理をサポートするために機能する。プ
ロセッサ間の合図は個別に結線されるやり方で行われる
第4図に示す装置は、本発明を実施するために拡張され
た制御記憶と、C8ORおよびマイクロコードを用いる
代りに、ハードウェア復号機構を用いることを除き、第
3図に示すものと同じである(すなわち、プロセッサ間
合図に個別結線されるやり方を用いる)ことを意味する
別のやり方は、(比較的原子的な命令を比較的でなく原
子的な命令から区別するために)比較的原子的な命令を
あるやり方で符号化すること、および命令を復号する時
に、ロックコード情報(ロック番号、ロックの試みを得
る、ロックの試みを解除する、等)をロック仲裁ハード
ウェア304へ供給することを要求する。それらの機能
を行うための命令復号器401が第4図に示されている
。この命令復号器は、標準的な復号論理、ルックアップ
テーブル等を用いて実現することが当業者の能力範囲内
に十分大る。
最後に、第5図は、第3図を参照して先に説明したよう
に、本発明の教示に従ってロックのセットおよび解放を
行う時の動作の希望の流れを要約して示すものである。
とくに、第5図は第1図に示されている比較的原子的な
2つの命令n+4とm+4を示す。それらの命令は同じ
クラスに含まれるものと定められ、命令n+4がそれの
ロックを解除するまでは命令m + 4は遅らせられる
ことを思い出すべきである。
説明のために、両方の命令は記憶装置内の指定された場
所(rAJ )を増大させることを意味するものと仮定
する。第5図の線(a)は命令n+3に従って順次実行
されている命令n+4を示す。
第5図の線(b)は、記憶を比較的に原子的なやり方で
希望通りに増大させるために使用できるマイクロコード
語CWI−Cν5を示す。
第5図の線(b)は第3図のC3OR302の透視から
見ることができる。第1のサイクルにおいては、マイク
ロコード語Cνlはロック5(この命令の「クラス」に
任意に組合わされる)をセットすることを指定する。次
のサイクルにおいては、マイクロコード語CW2はフェ
ッチを行う(任意のプロセッサレジスタrsAJへこと
を指定する。マイクロコード語CV31;tsAをPI
チップ303(第3図の)により増加すべきことを指定
し、マイクロコード語CW4はS^(今は増加させられ
た値を有する)を記憶させることを指定し、マイクロコ
ード語CW5はロック(ロック5)を解放することを指
定する。
第5図の線(c)は、各制御語CWI−CW5に応答し
てプロセッサ0により出力されたMPPIELD Aデ
ータパケットを示す。ある制御語がC3OR302(線
b)によりラッチされた時と、MPPIELD A出力
の時との間で1サイクルの遅れが示される。第5図の1
(d)に示されている時間の間口ツク5はプロセッサO
により保持されていることに注目すべきである。
第5図の線(e)と(f)は、Aからの実際のフェッチ
を行わせる時間(Aがキャッシュメモリにあるか否かに
応じて1サイクル、またはもっと多いサイクル)と増加
された値がAへ記憶される時間(記憶はMSハス上に置
く必要があるから2サイクル以上)とをそれぞれ示す。
線(e)においてはAはキャッシュからフェッチされた
と仮定している。
第5図の線(g)は、フェッチのためにレジスタSAを
利用できない時間を示す。
線(h)はプロセッサ1により実行される命令列m+3
、を示す。
線(i)は、プロセッサ1内のC3ORが、並べられた
命令m+4の制御語すなわちマイクロコード語Cw1〜
CW5にラッチされる時間を示す。マイクロコード語C
M2のフェッチが、線(r)における記憶を少なくとも
1サイクルを超えるまで遅らされて、前記したようにキ
ャッシュの相関性を維持するための時間を与えることに
注目すべきである。
また、第5図の線(+)においてマイクロコード語CW
3により指令された増大は、第5図の線(−)に示すよ
うに^の適切な値(命令n+4により増大させられた)
を主記憶装置からフェッチできる後まで、行うことはで
きない。これは、MSバスにおけるフェッチAがキャッ
シュバス上のフェッチAに続くサイクルにおいて起るこ
とが示されている、第5図のものよりも長い時間を要す
る。
第5図の線(k)と(1)は、プロセッサ1内で実行さ
れる前記キャッシュ相関性プロトコルと、試みられた線
(1)で起るキャッシュからのフェッチであるキャッシ
ュミス(データは線(j)でパージされた)に続く主記
憶装置からの以後のフェッチ(線−における)とを表す
^の適切な値が主記憶装置からひとたびフェッチされる
と、CN3 、線(1)に示されている、Aを記憶する
(第5図の線(1)と(−)に示されている)。そうす
ると、命令n+4の解放と同じやり方で解放(線(1)
に示されているCN5)をいま実行できる。
第5図の線(j)はある時間にわたるプロセッサへのM
PPICLD B入カプロセッサ1からの(出力)を示
す。それらの信号は、ロック5をセットし、フェッチを
実行しく命令m+4に対して)、最終的にロック5を解
放するためのプロセッサ1による試みを示す。最後に、
線(n)はプロセッサ1による遅れ期間を示す(この期
間はロック5が命令n+4によりセットされた時から、
命令n+4によってそれが解除されるまでの期間であっ
て、キャッシュの相関性を維持するための時間を与える
)。
以上、本発明の前記諸口的を実現するための方法と装置
を説明した。新規な方法と装置についての以上の説明は
例示と説明の目的だけのために行ったものであることを
当業者はわかるであろう。
ここで開示した態様で本発明を全て示したり、その態様
に発明を限定することを意図するものではない。上記教
示に従って多くの変更および類型が可能であることが明
らかである。
たとえば、命令の1つのクラスは、装置内の他の任意の
プロセッサにおける任意の命令に対して原子的に実行を
強いられることがないように設計すべきである。オペラ
ンドの形式または場所と、命令の形式、操作させられる
資源等を基にしてクラスを定めることができる。どの命
令クラスをロックせねばならないかを指定するためにメ
ツセージを送ることができ、それらのメツセージは、前
記中をつけられた個別に結線された信号のやり方を用い
る代りに、既存のバス(主記憶装置バスに類似の)を用
いて送ることができる。
ここで述べた実施例は本発明の原理と、それの実際的な
応用を最も良く説明することにより、当業者が本発明を
種々の実施例において、意図する特定の用途に合わせて
種々変更して、最適に利用するために示したものである
【図面の簡単な説明】
第1図は本発明の原理に従って比較的原子的な命令の実
行をサポートする多重プロセッサ環境において処理され
る命令の2つの流れを示すフローチャート、第2A図と
第2B図は、比較的原子的な命令の実行をサポートする
ために適当な緊密に結合された多重プロセッサコンピュ
ータ装置を示すブロック図であって特に第2B図は第2
A図に示されている2つのプロセッサの詳細図、第3図
は第2B図に示されている処理装置の1つの詳細を示す
ものであって、本発明の好適な実施例を実現するために
有用な1組のハードウェアおよび制御路を特に示す図、
第4図は本発明の実施例を実現するために適当な、第2
B図に示されている/X−ドウエアおよび制御路の別の
例を示す図、第5図は本発明の実施例を実現するために
第1のプロセッサと第2のプロセッサの間に求められる
時間的な協働関係の例を示すタイミングチャートである
。 201−wn・・・プロセッサ、203・・・主記憶装
置、210.21!・・・キャッシュデータメモリ、2
15.216・・・キャッシュディレクトリ、220.
230・・・処理装置(pu)、235.23B・・・
記憶装置バッファ、240.241・・・記憶装置制御
器、242.243・・・多重プロセッサディレクトリ
、250・・・主記憶装置バス、280.281.2g
2・・・プロセッサ間合図リンク、301・・制御記憶
装置、302・・・制御記憶装置動作レジスタ、303
・・・プロセッサユニットチップ、304・・・ロック
仲裁ハードウェア、305・・・主記憶装置バス仲裁論
理、307・・・記憶データバッファ、308・・・キ
ャッシュ制御器。

Claims (1)

  1. 【特許請求の範囲】 1、(a)少なくとも1つの共用されるデ ータ処理資源と、 (b)特定の共用されるデータ処理資源へ結合され、複
    数の命令クラスに分割される命令セットをおのおの有す
    る複数のプロセッサと、 (c)それら複数のプロセッサの1つについて実行して
    いる前記クラスの1つに含まれる命令を、コンピュータ
    装置内の前記複数のプロセッサの他の任意のものについ
    て進行している前記クラス内の任意の命令に対して原子
    的に実行させる手段と、 (d)前記クラスの1つにおける命令を実行している時
    を指示するために前記プロセッサの間で合図し、その命
    令が特定のクラスのどれの構成メンバーであるかの指示
    を行う手段と、 (e)原子的に実行している命令が、遅らされている命
    令を除き、与えられた共用される資源を使用できるよう
    に、前記装置内の1つおきのプロセッサに対して、前記
    特定のクラス内の他の全ての命令のオペレーションを選
    択的に遅らせる手段と、 を備えるコンピュータ装置。 2、請求項1記載の装置において、前記複数のプロセッ
    サの少なくとも1つにおける命令セットが、他の命令に
    関して原子的に実行するようにさせられた命令に対する
    ロックコード情報を含む記憶装置にマイクロコード化さ
    れる装置。 3、請求項2記載の装置において、前記ロックコード情
    報はロック番号と、このロック番号により指定されたロ
    ックを得るため、または放すための試みが行われている
    かどうかの指示とを含む装置。 4、請求項1記載の装置において、他の命令に関して原
    子的に実行することを強いられた命令を復号する時にロ
    ックコード情報を供給するように、前記複数のプロセッ
    サの少なくとも1つにおける命令セットがプロセッサへ
    ハードワイヤされる装置。 5、請求項4記載の装置において、前記ロックコード情
    報はロック番号と、ロック番号により指定されたロック
    を得るため、または解放するための試みが行われている
    かどうかの指示とを含む装置。 6、請求項1記載の装置において、合図をする前記手段
    は、プロセッサの間でロックコード情報を伝えるために
    専用される結線されたプロセッサ間合図手段を備える装
    置。 7、請求項1記載の装置において、合図をする前記手段
    は共用される前記バスを備える装置。 8、請求項1記載の装置において、少なくとも1つの前
    記共用されるデータ処理資源は共用されるメモリである
    装置。 9、請求項1記載の装置において、1つのプロセッサに
    おける前記クラスの1つにおける命令は、他のどのプロ
    セッサにもおけるどの命令に対しても原子的に実行する
    ことを強制されない装置。 10、請求項1記載の装置において、前記命令クラスは
    命令の種類で定められる装置。 11、請求項1記載の装置において、前記命令クラスは
    オペランドの種類で定められる装置。 12、請求項1記載の装置において、前記命令クラスは
    オペランドの場所で定められる装置。 13、請求項1記載の装置において、前記命令クラスは
    操作すべきデータ処理資源で定められる装置。 14、請求項1記載の装置において、前記命令クラスは
    作用を受けるデータ構造で定められる装置。 15、請求項1記載の装置において、コンピュータ装置
    はゆるく結合された多重処理装置である装置。 16、予め定められている各命令を予め定められている
    命令クラスに関して実行する間に、少なくとも1つの予
    め定められている命令が与えられた共用されているデー
    タ処理資源に対する多重アクセスを行えるようにする手
    段を備える、複数のプロセッサと、それらのプロセッサ
    により共用される少なくとも1つのデータ処理資源とを
    含むコンピュータ装置。 17、請求項16記載の装置において、少なくとも1つ
    の前記共用されるデータ処理資源は共用されるメモリで
    ある装置。 18、請求項16記載の装置において、前記予め定めら
    れている命令セットにはロックコード情報が組合わされ
    、このロックコード情報はロック番号と、このロック番
    号により指定されたロックを得るため、または解放する
    ための試みが行われているかどうかの指示とを含む装置
    。 19、請求項18記載の装置において、個々の各プロセ
    ッサに組合わされ、各前記複数のプロセッサにより保持
    されているロックを追従するため、および前記プロセッ
    サのいずれかが得ること、または解放することを試みる
    というロックを認識するための手段を更に備える装置。 20、請求項19記載の装置において、与えられたプロ
    セッサのその部分においてロックを得るというどのよう
    な試みも示す信号を同報通信する手段を更に備える装置
    。 21、請求項20記載の装置において、ロックのために
    プロセッサの間に仲裁する手段を更に備える装置。 22、請求項21記載の装置において、与えられた命令
    を実行しているプロセッサがその与えられた命令に関連
    するロックを得なければ、前記予め定められた命令クラ
    ス内の与えられた命令の処理を禁止する手段を更に備え
    る装置。 23、請求項22記載の装置において、与えられた予め
    定められた所定の命令クラス内の命令を禁止する前記手
    段は、前記与えられた予め定められたクラスの外部のど
    の命令にも作用を及ぼさない装置。 24、(a)少なくともいくつかの命令を 何種類かの命令クラスに分類する手段と、 (b)前記プロセッサの1つで実行している第1の命令
    のクラスを決定する手段と、 (c)前記第1の命令のクラスと同じクラス中の命令の
    他の任意のプロセッサによる実行を、前記第1の命令の
    実行を確実にするために十分な時間だけ禁止する手段と
    、 を備える、複数のプロセッサと、それらのプロセッサに
    より共用される少なくとも1つのデータ処理資源とを含
    むコンピュータ装置。 25、請求項24記載の装置において、前記第1の命令
    の実行の結果の全ての記憶を、その命令を実行している
    プロセッサから出力することを許し、かつ前記装置内の
    全てのプロセッサが、プロセッサがキャッシュメモリを
    利用している場合に、キャッシュの相関性を維持するこ
    とを許すために前記時間は十分であるコンピュータ装置
    。 26、請求項25記載の装置において、前記複数のプロ
    セッサにより保持されているロックを追従し、プロセッ
    サが得ること、または解放することを試みていることを
    ロックを認識するロック仲裁手段を更に備えるコンピュ
    ータ装置。 27、複数のプロセッサと少なくとも1つの共用される
    データ処理資源を含むコンピュータ装置において、予め
    選択されている命令の予め定められているクラスを、与
    えられたクラス内の命令に関して原子的なやり方で実行
    するために、用いる方法において、 (a)与えられたクラス内の全ての命令に対して同じで
    あり、各命令クラスに対しては異なるロック番号を指示
    し、与えられたロックを得るため、または放すための試
    みが行われているかどうかを指示するロック機構を前記
    予め選択された各命令に組込む過程と、 (b)第1のクラスからの前記予め定められた命令のう
    ちの最初の命令を実行する前に、前記最初の命令により
    指示されたロックが、前記最初の命令を実行するプロセ
    ッサ以外のプロセッサにより保持されるかどうかを判定
    する過程と、を備える、所定クラスの予め選択された命
    令を与えられたクラス内の命令に関して原子的なやり方
    で実行するためにコンピュータ装置において使用する方
    法。 28、請求項27記載の方法において、 (a)前記最初の命令を実行する前に、前記最初の命令
    を実行するプロセッサ以外の任意のプロセッサが任意の
    番号の前記最初のクラス命令を実行しようとしているか
    どうかを判定する過程と、(b)たかだか1つのプロセ
    ッサが指定されたロックを得るように、予め定められて
    いる優先スキームにしたがって、ロックを仲裁する過程
    と、を更に備える方法。 29、請求項28記載の方法において、 (a)ロックが別のプロセッサにより既に保持されてい
    ないとすると、前記最初の命令を実行する過程と、 (b)ロックの仲裁が実行されたならば、前記仲裁過程
    により、指定されたロックを得る命令を実行する過程と
    、 (c)(1)別のプロセッサにより保持されているロッ
    クを得ようと試みている任意の命令と、 (2)ロックを仲裁する過程を実行した後で識別された
    ロックを得ない任意の命令と、の処理を、前記最初の命
    令の実行を確実に行うために十分な時間だけ遅らせる過
    程と、 を更に備える方法。 30、請求項29記載の方法において、前記最初の命令
    クラスからの命令を保持または実行しない前記複数のプ
    ロセッサを少なくとも1つのプロセッサで、前記最初の
    命令クラスにない命令を、前記時間中に、実行する過程
    を更に備える方法。 31、請求項30記載の方法において、命令の実行から
    の結果である全ての蓄積が、与えられた命令を実行して
    いるプロセッサから確実に出力されるのに十分な時間の
    後でのみ、与えられた命令により保持されているロック
    が解放され、前記装置内の全てのプロセッサは、プロセ
    ッサがキャッシュメモリを利用する場合に、キャッシュ
    の相関性を維持する機会を有する方法。
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 2003-05-08

Publications (2)

Publication Number Publication Date
JPH03210657A true JPH03210657A (ja) 1991-09-13
JP3206914B2 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
CA2078312A1 (en) * 1991-09-20 1993-03-21 Mark A. Kaufman Digital data processor with improved paging
CA2078310A1 (en) * 1991-09-20 1993-03-21 Mark A. Kaufman Digital processor with distributed memory system
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
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
US6246396B1 (en) 1997-04-30 2001-06-12 Canon Kabushiki Kaisha Cached color conversion method and apparatus
US6414687B1 (en) 1997-04-30 2002-07-02 Canon Kabushiki Kaisha Register setting-micro programming system
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
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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59180767A (ja) * 1983-03-28 1984-10-13 インタ−ナシヨナル ビジネス マシ−ンズ コ−ポレ−シヨン 直列化装置

Family Cites Families (17)

* 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
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59180767A (ja) * 1983-03-28 1984-10-13 インタ−ナシヨナル ビジネス マシ−ンズ コ−ポレ−シヨン 直列化装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JPH03210657A (ja) 多重プロセッサ・システム
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
US6141734A (en) Method and apparatus for optimizing the performance of LDxL and STxC interlock instructions in the context of a write invalidate protocol
US4914570A (en) Process distribution and sharing system for multiple processor computer system
Thistle et al. A processor architecture for Horizon
US5706490A (en) Method of processing conditional branch instructions in scalar/vector processor
JP3604091B2 (ja) マルチタスキングデータ処理システム
US5872987A (en) Massively parallel computer including auxiliary vector processor
US5293500A (en) Parallel processing method and apparatus
US5463741A (en) Duplicated logic and interconnection system for arbitration among multiple information processors
US9201689B2 (en) Software emulation of massive hardware threading for tolerating remote memory references
US6785887B2 (en) Technique for using shared resources on a multi-threaded processor
JPH08278886A (ja) データ処理システムでの拡張システム管理操作のための方法およびシステム
JPH0239254A (ja) データ処理システム及びそのキヤツシユ記憶システム
KR20000076584A (ko) 컴퓨터 프로세싱 시스템에서의 로드 연산을 재순서화하기위한 방법 및 장치
US5544337A (en) Vector processor having registers for control by vector resisters
EP0431326A2 (en) Inter-processor interrupts in an n-element multi-processor
US5696939A (en) Apparatus and method using a semaphore buffer for semaphore instructions
US5623650A (en) Method of processing a sequence of conditional vector IF statements
US7216252B1 (en) Method and apparatus for machine check abort handling in a multiprocessing system
US20080134187A1 (en) Hardware scheduled smp architectures
US5897654A (en) Method and system for efficiently fetching from cache during a cache fill operation
US20050283783A1 (en) Method for optimizing pipeline use in a multiprocessing system
CA2350466A1 (en) Improved result handling in a multiprocessing system

Legal Events

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