JPH02228760A - 複数プロセツサ間で通信するためのシステム - Google Patents

複数プロセツサ間で通信するためのシステム

Info

Publication number
JPH02228760A
JPH02228760A JP2007273A JP727390A JPH02228760A JP H02228760 A JPH02228760 A JP H02228760A JP 2007273 A JP2007273 A JP 2007273A JP 727390 A JP727390 A JP 727390A JP H02228760 A JPH02228760 A JP H02228760A
Authority
JP
Japan
Prior art keywords
processor
message
receiving
component
buffer space
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
JP2007273A
Other languages
English (en)
Other versions
JP2505050B2 (ja
Inventor
Marion L Blount
マリオン・リイ・ブラント
Stephen P Morgan
ステフアン・ポール・モーガン
Katalin A V Rader
カタリン・アナ・ベロニカ・ラダー
Robert K Rader
ロバート・ケント・ラダー
Amal A Shaheen-Gouda
アモール・アーメツド・シヤーン‐ゴーダ
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 JPH02228760A publication Critical patent/JPH02228760A/ja
Application granted granted Critical
Publication of JP2505050B2 publication Critical patent/JP2505050B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

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

Description

【発明の詳細な説明】 A、産業上の利用分野 本発明は、一般に複数のプロセッサを含むデータ処理シ
ステムの通信プロトコルに関し、具体的には、クラスタ
形式の多重プロセッサ・データ処理システムにおける複
数のプロセッサのカーネル間での直接の通信を可能にす
る、新しい軽量な通信プロトコルに関する。
B、従来の技術 多重プロセッサ・データ処理システム中のプロセッサが
情報を共有するための通信プロトコルは、従来技術で多
数開示されている。どの通信プロトコルを使用するかは
、多重プロセッサ・システムの特定の設計及び動作上の
制約条件によって決まる。
多重プロセッサ・システム構成は、論理通信チャネルを
共有する複数の処理ユニットと考えることができる。論
理通信チャネルは、ある処理ユニットから別の処理ユニ
ットへのメツセージが記憶できる、処理ユニット間で共
有されるメモリの形を取ることができる。また、論理通
信チャネルは、処理ユニット間を移動するメツセージが
通過する通信ネットワークの形を取ることもできる。
通信に関して、こうした従来技術の多重プロセッサ・コ
ンピュータ・システムは、全般的に密結合(tight
ly−coupled) システム、近接結合(clo
sely−coupled)システム、及び疎結合(1
oosely−coupled)または分散多重プロセ
ッサ・システムに分類できる。
密結合システムとは、物理的に互いに極めて密接し、同
じメモリにアクセスでき、同じオペレーティング・シス
テムを走らせることができる同一の処理ユニットを複数
個有するものである。処理ユニット間の通信媒体はきわ
めて高速である。処理ユニットは、共有メモリから構成
されることもあり、専用バスを介する信°号伝達や当該
のコンピュータ・システムに特有な他の方法を含むこと
もある。使用される通信プロトコルも非常に特殊な専用
プロトコルであり、そのプロトコルは、完全にハードウ
ェアで実施できることもあるが、いかなる場合でも、通
信には極めて僅かのオーバーヘッドしか加わらない。こ
うしたシステムの利点は、複数のプロセッサを一緒に使
用してシステム作業負荷を処理することができる点であ
る。
分散システムは、物理的にほんの数フィートしか離れて
いないものもあり、数百マイルも離れているものもある
。通信媒体は通常、電話線、人工衛星、イーサネット(
Ethernet Nゼロックス(Xerox)社の商
標)やトークン・リング(TokenRingll B
M社の商標)のようなローカル・エリア・ネットワーク
など当業界で標準の媒体である。
分散システム中のプロセッサはすべて互いに異なってい
てもよい。こうしたシステムは、まったく異ナルオペレ
ーティング・システムを走らせ、互いにまった(独立し
ていることもしばしばであるが、データが共有できるよ
うに協働する。そうしたシステムを用いると、データの
増加量に応じてより多くのシステム上にデータが分散で
き、可用性を高めるため複数のシステムでデータが複製
できる。
こうした分散システムで使用される通信プロトコルは、
システム・ネットワーク・アーキテクチャ(”SNA”
  IBM社の商標)や伝送制御プロトコル/Inte
rnet プロトコル(TCP/IP″)など当業界の
標準プロトコルになっているものが多い。
近接結合または「クラスタ化」システムは、他の2つの
構成の利点を組み合わせようとしたものである。こうし
たシステムは、同じ部屋でなくても、通常少なくとも同
じビル内にあり、イーサネットなどの標準通信媒体や、
ディジタル・エクイップメント(Digital Eq
uipment Corporation)  社のク
ラスタ相互接続バスなどの専用の媒体を使用することが
できる。これらのプロセッサは通常互いに類似しており
互換性がある。それらのプロセッサは、各マシンで同じ
オペレーティングφシステムを走らせ、分散システムよ
りもはるかに緊密に協働して、データ共有以外の機能を
可能にする。
その目標は、一般にユーザに単一のシステムと思わせる
ことである。
最近、複数の仮想メモリ・データ処理ユニットをクラス
タ式構成で相互接続する提案が、カイリ(Kai Li
)及びパウル・フダク(Paul Hudak)の論文
「共有仮想記憶システムにおけるメモリ整合(Memo
ry Coherence in 5haredVir
tual Storage Systems) J 、
分散計算の原理に基づく計算機シンポジウム第5回年余
(theFifth Annual As5ociat
ion for ComputingMachiner
y Symposium on Pr1nciples
 ofDistributed Computing)
 (1986年)に提出された。提案されたマシン・ク
ラスタでは、すべてのユニットが、同じ形式のオペレー
ティング・システムをもち、同じ仮想メモリ空間にアド
レスすることができる。
したがって、クラスタ化構成の各ユニットは、その仮想
メモリ・システム内の1組のアドレスをその構成の他の
ユニットと共有し、ページ不在処理機構が、他のユニッ
ト並びにそのプロセッサの2次記憶装置からページを取
り出すように拡張される。こうしたクラスタ式システム
のユニットがページ不在に出会うと、2次記憶装置から
ではなく他の装置からページのコピーを要求することに
より、ページ不在を処理することができる。これは、他
のユニットがそのメモリにそのページを含み、2次記憶
装置よりもはるかに迅速に応答できるという利点がある
。こうしたクラスタの複数のユニットに所与のページの
コピーがあるので、べ一ジ不在に出会ったユニットは、
ページのコピーをどこに要求するべきか知らないことが
ある。さらに、特殊な措置を講じない限り、2つのユー
ットがあるページを同時に変更するなどの異常が発生す
ることがある。また、あるページを読み取るとき、読取
り側と書込み側が物理的に別々のプロセッサにいる場合
でも、最近の書込み動作の結果が見られるように保証す
ることが重要である。この皿の共存を適切に働かせるた
め、ページ変更の許可を与える、ページの所有者を見つ
ける、ページをいつ所存者に戻すかを決定するなどのこ
とを行なう、システム・プロトコルを確立することがで
きる。この種のシステム・プロトコルは、システム間の
様々なユニット中で大量の通信を必要とする。
これまでに、IBM社が開発したSNAを含めて、遠隔
プロセッサ間で情報を伝送するための多数の標準通信プ
ロトコル、ならびに米国特許箱4648081号及び第
4532588号に記載された「ドキュメント交換プロ
トコル」など、SNAと共に使用される多数の専用プロ
トコルが開発されている。
通信プロトコルが対処しなければならない通信システム
の基本的問題は、受信側プロセッサのメモリにメツセー
ジを受信するのに十分なバッファ空間があるかどうかで
ある。従来分散システムで通常使用されていたプロトコ
ルでは、十分なバッファ空間がない場合でさえ、メツセ
ージが首尾よく受信されたことを送信側プロセッサに通
知する通信リンク・レベルでの肯定応答(ACK)が、
受信側プロセッサから送信側プロセッサに送られてきた
。通信リンク・レベルの肯定応答″ACK”は、通常通
信リンク・アダプタなどのハードウェアまたは比較的低
位のソフトウェアによって送られる。受信側プロセッサ
が首尾よくメツ゛セージを受信したことを送信側プロセ
ッサに通知するリンク・レベル″ACK″が送られた場
合でさえ、受は取ったメツセージを記憶する十分なバッ
ファ空間が受信側プロセッサにない場合は、受信側プロ
セッサはそのメツセージを捨てなければならない。
すなわち、より高位のソフトウェア・レベルで、メツセ
ージを捨てなければならない。あるいは受信したメツセ
ージを記憶するバッファがないという他のメツセージを
、受信側プロセッサが送信側プロセッサに送らなければ
ならない。この基本的問題から、特に分散データ処理シ
ステムにおいて、SNAなどのハードウェア/ソフトウ
ェア複合アーキテクチャを利用する必要が生じた。
メツセージ・バス・モデルを利用する、従来技術で開示
された疎結合多重プロセッサ構成では、別々の処理ユニ
ット上で走行する個々のカーネルが、構成全体で共有さ
れる資源を管理するサービス要求を含むメツセージを、
構成内の他の処理ユニットに送信する。メツセージ・バ
スは当然のことながら処理ユニット間の基本通信接続に
対応しているので、「メツセージ・バス」モデルへの依
存は確かにあったが、それは、疎結合構成の主要な性能
上のボトルネックとなると一般に考えられる。しかし、
システム結合のモデルとしてのメツセージ・バスはいく
つかの欠点をもつ。
メツセージ・バス・システムにおいてプロセッサ間で複
雑なデータ構造(たとえば、ポインタを含む制御ブロッ
ク)を直接共有するのが困難なことはよく知られており
、M、ヘルリヒ(llerlihy)及びB、リスコツ
(Liskov)の論文[抽象データ・タイプの値伝送
方法(ΔValue TransmissionMet
hod For Abstract Data Typ
es) J z プログラミング言語及びシステムに関
するACM紀要(the ACM Transacti
ons on ProgrammingLanguag
es  and  Systems)  %  Vo 
 1  、  4%  N  o。
4、(1982年10月)に記載されている。この論文
を引用により本明細書に合体する。この主題は、B、ネ
ルソン(Nelson)の博士論文「遠隔手順呼出しく
Remote Procedure Ca1l) J 
sカーネギ−・メロン大学、1881年5月刊でも考察
されている。この論文を引用により本明細書に合体する
多重プロセッサ構成内の別々の処理ユニットで実行され
るオペレーティング・システムの2つの構成要素間で要
素のリストを共有することは、それ自体比較的−膜内な
要件であるが、そのためには、それらの要素を送信側構
成要素で送信に適した書式にバックして、送信側構成要
素から受信側構成要素に送り、受信側構成要素でバック
を解除しなければならない。この動作シーケンスはプロ
セッサの利用度の点で不十分である。
より重要なことであるが、この動作シーケンスは複雑で
扱いにくい。メツセージ自パスの主な欠点は、送信側及
び受信側構成要素が、使いにくく複雑なアーキテクチャ
になり、コストが高くつき、実施、デバッグ、機能強化
及び保守が難しくなり勝ちなことである。代表的な汎用
オペレーティング・システムのカーネルは多くの相互作
用する構成要素から構成されることが多いので、メツセ
ージ・バス・モデルの周囲の多重プロセッサjR成(1
)オペレーティング−システムが複雑になる傾向にある
複数のユニットが密結合ユニットと同様の仮想メモリを
共有するクラスタ型構成では、通信プロトコルは、様々
なユニットにおけるオペレーティング・システムのカー
ネル間での迅速な転送を実行する必要がある。選択され
たプロトコルは、ページ不在の場合に共有仮想メモリか
らページを得ること、あるユニットがあるページから読
み取ろうとするとき、別のユニットがそのページに書き
込もうとする場合に同じページに対する同時要求を管理
する方法、及び記憶データを共有する機能に共通なその
他の様々な状況などのような問題に付随する高レベルの
通信トラフィックに対処しなければならない。前述のよ
うに、疎結合分散コンピュータ・システム用に過去に開
発された標準通信プロトコルは、ユニット間でデータを
伝送するのに必要な命令の数の点で通信に大きなオーバ
ーヘッドを課し、したがってデータ・プロセッサの共有
仮想メモリ・クラスタのもつ潜在的な利点を打ち消すこ
とがあり得る。
C1発明が解決しようとする課題 したがって、本発明は、クラスタ型多重プロセッサ・シ
ステムにおけるプロセッサのオペレーティグ・システム
のトラステッド・カーネルが、高速通信リンクを介して
制御情報及びデータを通信することができるように設計
された、新しい、軽量な通信プロトコルを対象とする。
01課題を解決するための手段 本発明は、複数の個別プロセッサ間で通信するための新
しい改良された通信システムを開示する。
このプロトコルは、送信側プロセッサの構成要素から受
信側プロセッサの構成要素にメツセージを送るための送
信側プロセッサ内の機構、そのメツセージの受信時に、
受信側プロセッサ内の宛先構成要素でバッファ空間が利
用可能かどうかを動的に決定するための受信側プロセッ
サ内の手段、及びそのメツセージが受信側プロセッサに
よって受信され、宛先構成要素でメツセージを記憶する
のに十分なバッファ空間が利用可能であるという肯定応
答または十分なバッファ空間がないという否定応答を送
信側プロセッサに送るための受信側プロセッサの機構を
含む。このプロトコルはまた、受信側プロセッサでメツ
セージを受信するのに十分なバッファ空間が利用可能で
あるとの受信側プロセッサによる決定を、送信側構成要
素に通知するための送信側プロセッサ内のソフトウェア
を含んでいる。
送信側プロセッサによって送られるメツセージは、制御
セグメントとユーザからのデータ・セグメントとを含む
。メツセージが書式化された後、送信側プロセッサは、
送信側プロセッサから受信側プロセッサに連続してメツ
セージを送ることが好ましい。送信側プロセッサ内のプ
ロトコル機構は、肯定応答が受信側プロセッサから受信
されない場合、送信側構成要素への通知なしに、送信側
プロセッサでメツセージを待ち行列に入れるルーチンを
含む。受信側プロセッサも、バッファ空間が利用可能に
なったとき、受信側構成要素が待ち行列メツセージを受
は取るのに利用できるバッファ空間をもつことを、送信
側プロセッサに通知するための機構を含む。
受信側プロセッサ側のシステムは、受信側プロセッサに
到着するメツセージを記憶するバッファ・プールを含み
、バッファ・プールの一部が受信側プロセッサ内の複数
の構成要素のそれぞれに割り当てられる。このシステム
はまた、各構成要素に割り当てられたバッファ空間の、
到着メツセージ用に利用可能な部分の記録を保持する。
通信システムが、受信側プロセッサ内の構成要素を、第
1クラスと第2クラスに分け、第1クラスの各構成要素
には第2クラスとは別のバッフT・プールを割り当てる
ことが好ましい。「自由」クラスの特定の構成要素に割
り当てられた「自由」バッファ・プール内のバッファは
、宛先構成要素に割り当てられた自由バッファ・プール
の部分にメツセージ用の十分な空間がないという決定に
応えて、自由クラス内の別の構成要素に割り当てられた
バッファ空間に転送することができる。「厳格」クラス
の特定の構成要素に割り当てられた「厳格」バッファ・
プール内のバッファは、別の構成要素に割り当てられた
バッファ空間に転送できない。
受信側プロセッサでは、宛先構成要素向けの関連メツセ
ージが受信側プロセッサに到着し、その宛先構成要素に
利用可能な十分な空間があるとき、複数のサービスにア
クセスするための手段をもつ割込みハンドラが、宛先構
成要素に関連する割込みハンドラ拡張部分を呼び出す。
代替実施例では、通信プロトコルが、ネットワーク内の
中間プロセッサを介して送信側プロセッサと受信側プロ
セッサの間で通信し、送信側プロセッサ内のプロトコル
機構が第1通信リンクを介してメツセージを中間プロセ
ッサに送る。中間プロセッサはそのメツセージを受信し
、第2通信リンクを介してそのメツセージを受信側プロ
セッサに再送信する。次に受信側プロセッサは、受信側
プロセッサの宛先構成要素でメツセージ用にバッファ空
間が利用可能かどうかを決定する。十分なバッファ空間
が利用可能な場合、受信側プロセッサに十分なバッファ
空間があるという肯定応答が、受信側プロセッサから中
間プロセッサに送られる。中間プロセッサは、肯定応答
を受は取ると、受信側プロセッサで十分なバッファ空間
が利用可能であるという肯定応答を送信側プロセッサに
送る。
受信側プロセッサで十分な記憶空間が利用可能でないと
いう否定応答を、受信側プロセッサが中間プロセッサに
送る場合、中間プロセッサは、受信側プロセッサに十分
なバッファ空間がないという否定応答を送信側プロセッ
サに送る。
E、実施例 第1図は、本発明の通信システムが有利に使用できる、
多重プロセッサ・クラスタ構成データ処理システムの構
成図である。第1図では、多重プロセッサ・クラスタは
、複数のプロセッサ・ユニット10、スイッチ11、及
びそれぞれプロセッサ・ユニット10をスイッチ11に
接続する複数の通信リンク12を含んでいる。スイッチ
11の機能は、任意のプロセッサ・ユニット10が他の
プロセッサ・ユニット10と通信できるようにすること
である。プロセッサl0A1108110C110Dだ
けが図示しであるが、ネットワーク内のプロセッサの実
際の数はもっと多い。
本明細書で開示する通信システム及び多重プロセッサ・
クラスタと共に使用するのに適した高速スイッチの特定
の詳細は、本発明を理解するのに重要であるとは考えら
れない。使用できる適切なスイッチ装置の例は、米国特
許第4635250号及び第4605928号に出てい
る。
第2図は、通信プロトコルが使用できるクラスタ構成の
多重プロセッサ中データ処理システムの代替構成を示す
。第2図では、複数のプロセッサ・ユニット10が通信
リンク14によって互いに接続されている。
第3図は、ユニット10が本発明の通信システムを利用
して他の非隣接ユニツ)10と有利に通信できる、たと
えば、後で詳しく説明するように、ユニッ)10Aがユ
ニット10Bを介し、ユニット10AからIOBへの通
信りンク16とIOBからIODへの別の通信リンク1
6を介して非隣接ユニット10Dと通信するという、多
重プロセッサ・クラスタ別の構成を示す。
第4図は、第1図、第2図、第3図に示すプロセッサ・
ユニット10をより詳細に示している。
プロセッサ・ユニット10は、高機能パーソナル・コン
ピュータまたはエンジニアリング・ワークステーション
でよく、IBM  AIX(IBM社の商標)オペレー
ティング・システムを走行させ、801アーキテクチヤ
をもつ。しかし、本発明を実施する際、他のアーキテク
チャとオペレーティング・システムも利用できることに
留意されたい。
プロセッサ・ユニット10は、プロセッサ17、主メモ
リ18、プロセッサ17とメモリ18の間でのデータの
転送を制御する記憶制御ユニット19、及び複数の入出
カポ−)2OA−20Eを含む。ボー)2OAと20B
は、表示型端末21と22をプロセッサ・ユニット1o
に接続する働きをする。ポート20Cはプリンタ23を
プロセッサ10に接続し、ボート20Dはディスク・ド
ライブ24をプロセッサに接続する。
通信入出力アダプタ15、好ましくは直列リンク・アダ
プタ(SLA)は、プロセッサが他のプロセッサに直接
(第2図)、またはスイッチを介して他のプロセッサに
(第1図)、または中間プロセッサを介して非隣接プロ
セッサ(第3図)に迅速にデータを転送できるように、
プロセッサ・ユニット10のポート20Eを、第1図の
通信リンク12、または第2図の通信リンク14、また
は第3図の通信リンク16に接続する。以後、通信リン
クと言うとき、便宜上、通信リンク12を指すものとす
る。
好ましい通信リンク12は、関連特許出願に記載されて
いる直列リンクである。直列リンク12は、プロセッサ
10の各ボート20Eと相互接続するための、光ファイ
バ・ケーブル13(第5図)とその両端部にある5LA
15を含む。光ファイバ・ケーブルまたはリンク13は
、最高64にバイト長のメツセージを、200Mビット
/秒以上の速度で転送する。リンク13は、あるプロセ
ッサのメモリからデータを取り出して、それを他のプロ
セッサのメモリに置く。メモリ・アクセスを制御するタ
グ・ワードが、64バイトの境界上で分散/収集機能を
実行する。直列リンク・アダプタ16は、データ転送が
正確に行なわれるようにするためのリンク・レベル装置
プロトコルを実施したものである。リンク13と共に使
用できるプロトコルは2つあり、中間送信要求(RTS
I)及び送信要求/受信要求(RTS/RTR)と呼ば
れる。
RTSIは、受信アダプタが前もってセットアツプされ
る場合、ソフトウェアの介入なしにデータがメモリに配
送されるという点でより効率的である。RTS/RTR
を用いると、データが適切なメモリ位置に配送できるが
、余分な割込み、及び受信アダプタのソフトウェア・セ
ットアツプが必要である。RTSIは、効率がより重要
な、短いが頻度の高いメツセージに適している。RTS
/RTRは、余分のオーバーヘッドが、比較的長いデー
タ転送の間に解消できる、比較的長いメツセージに適し
ている。
プロセッサ・ユニット10は、米国特許出願第06/8
19458号に詳細に記載されている、仮想メモリ・デ
ータ処理システムに全般的に対応している。上記出願に
記載されているように、プロセッサは、32ビツトの実
効アドレスをもつ。
この実効アドレスは、4つの高位ビット31−28を利
用して16個のセグメント・レジスタのうちの1つを選
択することにより、40ビツト仮想アドレスに変換され
る。各セグメント・レジスタは、4096個の固有セグ
メントのうちの1つを定義する、12ビツトのセグメン
ト・アドレスを記憶する。各セグメントは、258メガ
バイトの記憶域を含む。1ページが2にバイトのデータ
を含む場合、セグメントは128にページを含む。
一方、1ページが4にバイトのデータを含む場合、セグ
メントは、64にページ、より正確には64にの仮想ア
ドレスをもつ。これらの仮想アドレスを使って、現在そ
のセグメントに割り当てられているデータのページを識
別することができる。ただし、本発明の通信プロトコル
は、他のタイプのプロセッサと共に動作するように適合
させることもできることに留意されたい。
第5図で、各プロセッサ10に関連するソフトウェア資
源は、オペレーティング・システム29中の複数のオペ
レーティング・システム・サービス28の頂部に構築さ
れた複数のアプリケーション・ソフトウェア26を含む
ことができる。これらのシステム・サービス28くは、
ユニット10のハードウェア資源を割り当てる様々な資
源マネージャ30、ファイル・アクセスなどのサービス
に対するアプリケージ1ン・ソフトウェア26の要求に
サービスするシステム・コール32、及び入出力事象の
完了など非同期事象に反応する割込みハンドラ34が含
まれる。資源マネージャ30には、ロック・マネージャ
または仮想メモリ・マネージャ31が含まれる。
こうした基本的システム・サービス28は、オペレーテ
ィング・システム28のカーネルの一部として一般に記
載されている。カーネルは、通常、それなしではオペレ
ーティング・システムが利用できない、またはすべての
ユーザまたはシステム状態に影響を及ぼし、したがって
特権を与えられている、オペレーティング・システム2
9の基本機能だけを含む。したがって、カーネルは信頼
できるものでなければならず、カーネルへのアクセスは
制御されなければならない。コンパイラやユーティリテ
ィなど他のオペレーティング・システムは、そのサービ
スを実行するのに特権が必要でない。したがって、それ
らはカーネルの一部ではない。
第5図により詳しく示した共有仮想記憶多重プロセッサ
・システムでは、ユニットIOAと10Bの様々な構成
要素は、ユニットIOAのVMM31Aなど、各ユニッ
トの名称に関連する文字を使って区別しである。
ユニットIOA上のアプリケ−シロン・プログラム28
Aなどのクライエント・プログラムは、メモリからデー
タを要求することができる。要求されたデータがユニッ
トIOAの主メモリ18Aにはないと5CU19Aが決
定した場合、ページ不在が発生し、5CU19Aは、仮
想メモリ・マネージャ31A内のページ不在処理機構に
、ユニット10Aに関連するディスク・ドライブ24、
またはその主メモリ18、またはそのユニット10に関
連するディスク24に記憶されたデータをもつ他のユニ
ット10からデータを見つけさせ検索させる。仮想メモ
リ・マネージャ31Aは、米国特許出願第07/127
000号に記載されている方式でこのメモリを見つける
ユニットIOAの仮想メモリ・マネージャ31Aは、他
のユニット10の仮想メモリ・マネージャ31との通信
を確立して、SNAやローカル・エリア・ネットワーク
・プロトコルなど高レベル通信プロトコルを使用して要
求されたデータを獲得することができるが、共有仮想記
憶装置を利用する多重プロセッサ・クラスタ型データ処
理システムを支援するのに大量のカーネル対カーネル・
トラフィックが必要だとすると、こうした高レベル通信
プロトコルの使用は複雑で遅すぎる。
本発明のシステム(第5図)では、各ユニット10のオ
ペレーティング・システム29は、新規なマシ:/ 間
通信ソフトウェア・システム(lMC8”)36を含む
。lMC836は、仮想メモリ・マネージャ31などプ
ロセッサ・ユニット10中のオペレーティング・システ
ム29のカーネル構成要素がそれを使用して、通信ドラ
イバ38と5LA15を介し直列リンク13を介してV
MM31Bなど他のプロセッサ・ユニットIOBの受信
側構成要素により迅速にデータを送信しまたはそこから
検索することができる。lMC836の主な用途は、ク
ラスタ型データ処理システムの1つのユニット10のオ
ペレーティング・システム29のカーネル構成要素が、
そのクラスタ内の他のユニット10のオペレーティング
・システム29のカーネル構成要素との間でメツセージ
を送受することであるが、クラスタ内の他のシステム構
成要素は、lMC8のサービスへのトラステッド・イン
ターフェースをもつ場合、lMC8を使用してメツセー
ジを送受できることに留意されたい。
代表的なタイプのクラスタ開通信用のlMC8の実施に
必要なステップを、第8A図、第8B図、第8C図に示
し、lMC3と他のプロセッサ構成要素の関係を第7A
図と第7B図に示す。ステップ50(第8図)で、ユニ
ット10A内のアプリケーシヨン26Aがメモリからの
データとページ不在を要求し、または他のサービスを要
求する。
ステップ52で、VMM31Aのページ不在ハンドラは
、データがそのプロセッサ10Aに利用できず他のプロ
セッサIOBによって制御されると決定する。ステップ
54で、ページ不在ノ1ンドラは、lMC8のクライエ
ント39になり、lMC838Aが送信するメツセージ
を作成する。このlMC5メツセージは、クライエント
39、すなわちページ不在ハンドラからユニット10B
またはサーバ42の仮想メモリ・マネージ+31Bへの
メツセージと、ユニット10A内のクライエント39が
要求したサービスを実行するためにプロセッサ10B内
のサーバ42が必要とする、メツセージ及び関連子るデ
ータの転送を実行するためにlMC538Aが必要とす
る情報とを含む、標準形式で作成しなければならない。
このメツセージの書式を、第8A図に示し、後で詳しく
説明する。
メツセージがクライエントによって作成されると、ステ
ップ56で、クライエント39はlMC538Aを呼び
出す。ステップ58で、lMC838Aはメツセージの
伝送経路を選択し、選択された通信チャネルに対するプ
ログラム命令を準備する。ステップ60で、lMC83
6Aは、後で詳しく説明するように、同じサーバ42向
けの前のメツセージの状況に応じて、メツセージを選択
された直列通信リンクの通信チャネル・ドライバ38向
けの待ち行列に入れるか、それともメツセージを後の送
信のための待ち行列に入れるかを決定する。メツセージ
がドライバ38向けの待ち行列に入れられた場合、ステ
ップ64で、ドライバ38は、「直接要求送信(RTS
I)J直列リンク・レベル・プロトコルを用いて、通信
ポート20E1直列りンク・アダプタ(SLA)15B
を介し直列リンク13を介して受信側プロセッサ・ユニ
ット10Bにメツセージを出力する。
RTSIリンク・レベルのプロトコルには、正確なデー
タ転送が起こったとき、5LA15が自動的に生成でき
るACKが含まれる。lMC836Bは5LA15Bに
、ACKを自動的に生成しないように指令する。その代
わりに、ユニット10B内のlMC836Bは、サーバ
42で受信側プロセッサIOB内のバッファ空間が利用
可能かどうかの決定に基づいて、ACKまたはNAKを
生成し、それが5LAI5Bによってリンク12を介し
て伝送される。
lMC5は、単一メツセージで制御情報と関連データの
両方を転送させることができる。これは、「帯域内」信
号伝達技術であり、受信側プロセッサIOBは制御情報
とデータを区別する必要がある。こうした制御情報には
、たとえば実行すべき動作を記述し、読み取るべきまた
は書き込むべきデータを指すポインタを含む、ディスク
読取り要求、ディスク書込み要求または他の「要求」が
含まれる。
ステップ68で、送信されたメツセージを受信側5LA
I5Bが受は取る。5LA15Bは、メツセージをバッ
ファ40Bに配送する。バッファ40Bは、受信側ユニ
ットの様々なカーネル構成要素によって以前に受信側ユ
ニツ) 10 HのlMC836Bに割り当てられた、
共通バッファ空間のプールを含んでいる。
メツセージが到着すると、ヘッダはバッファ40Bのカ
ーネル・データ・セグメント41Bの256バイトの区
域を占め、データは、5LA15Bに属するメモリのフ
レーム43Bを占める。5LA15の分散/収集機能を
使って、受信側プロセッサ10内でヘッダとデータが物
理的に分割される。すなわち、おそらくはページを構成
するデータが、ページ位置合せされる。
ステップ70で、5LA15Bはプロセッサ10Bへの
割込みを生成する。この割込みは通常通りプロセッサI
OBによって処理される。ステップ72で、5LA15
B用の第2レベル割込みハンドラ(SLIH)が、lM
C838Bを呼び出す。
VMM31Bなどのサーバ42が、lMC836Bにそ
の存在を知らせてからでないとメツセージは配送できな
い。各プロセッサ・ユニット10内のlMC836は、
サーバ表を維持する。サーバ表は、各サーバごとに、そ
のヘッダ及びデータ・バラフシ・アカウント、メツセー
ジが到着するときに呼び出されるルーチンのアドレス、
及びメツセージを取り出すクライエントの範喘について
の情報を含んでいる。各ユニット内のlMC8はクラス
タ・メンバのリストも維持する。
ステップ74で、lMC836Bは、以前にバッファ4
0Bに記憶されたメツセージのヘッダを読み取って、受
信側プロセッサ10B内のサーバ42の識別を決定し、
そのサーバ表項目及びクラスタ・メンバ・リストを検査
して、送信側プロセッサIOAが受信側プロセッサIO
B内のサーバにメツセージを送信することを許されてい
るかどうかを決定する。送信側プロセッサIOAが許可
を持っていない場合、ステップ76で、lMC836B
は、送信側プロセッサIOAにNAKを送るよう5LA
15Bに指示する。許可がある場合、ステップ78で、
lMC838Bは、サーバ42がそのメツセージを受は
入れるのに十分な/(ソファ記憶域をもつかどうか決定
する。十分な記憶域がない場合、ステップ76で、lM
C83E!Bは、否定応答″NAK″を送るよう5LA
15Bに指示する。サーバ42がlMC8に割り当てら
れた十分なバッファ空間をもつ場合、ステップ82で、
lMC838B、は指定されたサーバのバッファ「アカ
ウント」を減分する。ステップ84で、lMC838B
は、送信側プロセッサ・ユニット10AにACKを送る
よう5LA15Bに指示する。
バッファ空間がないため、または許可がないために、受
信側プロセッサ内のlMC838が、NAKを送るよう
5LA15に指示する場合、受信側プロセッサ内のバッ
ファ空間40Bに記憶されたメツセージは捨てられる。
ステップ86で、lMC836Bは、サーバ表で指定さ
れた5LIH拡張部分44と呼ばれる、特定のサーバ4
2のためのルーチンを呼び出す。
要約すると、5LIH拡張部分44は、lMC838B
のために予約されたバッファ空間40B中で受信したメ
ツセージの予備処理を実行する、サーバ42によって提
供される特殊ルーチンである。
この予備処理は、後で詳しく説明するように、メツセー
ジの存在及び位置をサーバ42に知らせるためのもので
ある。
ステップ88で、プロセッサIOBから送信されたAC
Kが、プロセッサ10Aの5LA15Aで受信される。
ステップ90で、5LA15Aはプロセッサ・ユニット
IOAに割り込む。
ステップ92で、5LA15A用の割込みハンドラがl
MC838Aを呼び出す。ステップ94で、lMC83
8Aが送信されたメツセージ中で指定された通知ルーチ
ン46を呼び出す。通知ルーチン46は、lMC8を使
ってメツセージを送る各クライエントから提供され、そ
のアドレスが各メツセージ中で指定される。各通知ルー
チンは、必要なクライエント特有の処理、たとえば、ヘ
ッダが占める空間の戻しや、以前に送信されたデータ・
ページのピン解除を実行する。
ステップ74(第7B図も参照)に戻ると、受信側プロ
セッサ内のlMC33E3Bが、送信側プロセッサIO
Aはメツセージを受信側プロセッサ10B内のサーバ4
2に送ることを許されていないと決定した場合、ステッ
プ76で、lMC536Bは、送信側プロセッサIOA
にNAKを送るように5LA15Bに指示する。同様に
、ステップ78で、lMC83E3Bが、サーバ42は
メツセージを受は入れるのに十分なバッファをもたない
と決定した場合、lMC83BBは、やはりNAKを送
るよう5LA15Bに指示する。
ステップ96で、第7B図に示すように、5LA15A
はNAKを受信し、プロセッサ・ユニット10Aに割り
込む。ステップ98で、5LAISA用の割込みハンド
ラがlMC838Aを呼び出す。ステップ100で、l
MC838Aは、メツセージのヘッダにNAKが受信さ
れたという指示を書き込み、後の送信のためにメツセー
ジをセーブする。
ステップ80に戻ッテ、lMC838Aが、同じサーバ
向けのメツセージに対して以前にNAKを受信したとい
う指示がメツセージ・ヘッダに含まれていると決定した
場合、ステップ62で、1MC53E3Aはそのメツセ
ージを待ち行列に入れる。待機メツセージの向かうべき
サーバ42でバッファが利用可能になった結果、受信側
プロセッサ10A内のlMC838Bから非ブロツク化
メツセージを受信するまで、待機メツセージは待ち行列
中にある。こうしたバッファがどのようにして利用可能
になるかについては、「バッファ・アカウント」の項で
説明する。
本発明では、より高いレベルのソフトウェア、すなわち
lMC8が、バッファが利用可能かどうかを検査する機
会をもつまで、5LA1Hによるリンク・レベルACK
の送信を延期する。通信リンク12は、この検査中、使
用中に保持される。
ハードウェア・リンク−レベルACKの場合にはそうで
はない。しかし、「最後のメツセージを捨てなければな
りませんでした」または「最後のメツセージ用のバッフ
ァがありました」というメツセージを送るためにより高
いレベルを必要としないので、通信システム全体はより
効率的で簡単である。
E−1:メツセージ書式 送信側プロセッサ内のメツセージの書式を、第6A図に
示し、リンク12を介して送信中のメツセージの書式を
第6B図に示す。クライエント「要求」の書式は実行さ
れる動作に特有である。
具体的には、「要求」に含まれるデータ・ポインタの位
置と意味はクライエントとサーバしか知らない。本発明
のこの方法では、この問題は、各単一メツセージの最初
の256バイトまたはヘッダが制御情報を含むという書
式規約を採用することにより、部分的に解決される。「
ヘッダ」は通常、メツセージの最初の128バイトにク
ライエント「要求ブロック」域を含む。この要求の内容
は、クライエントとサーバに対してのみ意味をもち、し
たがって、lMC8にとっては意味がない。ヘッダの次
の128バイトは、lMC8と直列リンク・アダプタ用
の制御情報を含む。ヘッダの「クライエント要求」ブロ
ックが128バイトより大きい場合には、クライエント
及びサーバは、メツセージのデータ部分にオーバフロー
を入れるための規約を確立しなければならない。
この解決方法の残りの部分は、クライエントがヘッドの
I M CS部分とSLA部分を作成する必要があるこ
とである。ヘッダの後に、所与の送信中に4にバイトの
データ・ページが1ページ以上続くことがある。許容最
大データ・ページ数は15ページであるが、システムの
特定の構成または用途に応じて、異なる最大ページ数が
適切なこともある。
メツセージ全体が1回の送信で送信されるので、データ
用のタグ・ワードを含めて、メツセージのすべての要素
を記述するタグ・ワードを作成し、ヘッダのSLA部分
に入れなければならない。ヘッダの諸要素は、タグ・ワ
ードが要素を記述すべく正確に作成されている限り、仮
想メモリまたはリアル・メモリ中で連続している必要は
ない。
前に説明した、メツセージの作成に関する第8図のステ
ップ54で、「クライエント」は、「クライエント要求
」部分が以前に作成されていない場合、それを作成し、
ヘッダのlMC8部分は、クライエント供給のrIMc
s作成」ルーチンを使って作成される。rIMcs作成
」ルーチンは、「要求」ブロックのデータ構造、特にデ
ータ・ポインタの所在を理解し、ヘッダ及び出力データ
用のタグ・ワード・イメージ域に記入する。クライエン
トはまた、宛先、たとえば指定された受信側プロセッサ
IOB内の特定のサーバ、送信されるデータ・ページ(
どのページを固定しなければならないか)のリスト、及
び転送完了した時に呼び出される送信側プロセッサIO
A内の通知ルーチン46などの情報を指定する、工MC
8制御域も記入する。このデータ構造は、(下記のよう
な)rCJ言語または他の適切な言語で書くことができ
る。
「要求」ブロックのデータ構造は、以下の通りである。
■1988 IBM Corporationstru
ct tag ( unsigned pageno:  21;unsi
gned offset:  5;unsigned 
   :  1; unsigned count :  5;); 5truct imcs header  (/:::
ネ:キ:*ネ:*ネキ寧ネ*ネ*ネ*寧ネ*ネキネキネ
*ネ**ネネ*キネネ***キ//*ユーザ区域は2つ
の通信当事者が利用する一:、//*プロトコルを含む
。lMC8はこの区域をネ//*見ず変更もしない。R
TSIプロトコルで*//*は、ユーザ域は必須であり
、最初のタグ・ *//*ワードがそれを指さなければ
ならない。他*//*のプロトコルでは、それは任意選
択である。ネ//ネキネ**ネ*キ***キ中*ネキ*
*キネ**ネ中キネネネ*中キネ*キ*中ネネ中キ*ネ
/char user request block[
128];/ネ*ネ*ネ::::*本*キ*ネキネ*ネ
*ネキ**キ***ネネネ*ネキネネ*ネ*キキ*//
*この区域はimcs要求特性である。この区ネ//ネ
域は、実行すべき入出力動作:動作完了時://:に講
じるべき措置を記述する。RTSIブネ//ネロトコル
では、要求ブロックの前半が発送://:され、第2の
タグ・ワードはそれを1旨さな://:ければならない
。RTSIの受信側で、キ//ネヘッダをuser r
equest ブロック及びimcs://*要求ブロ
ックの前半で重ね書きする。他の://*プロトコルで
は、それは発送されない。  ://::零ネ:中ネ:
中中**:*キネキ零ネ中中*中中中中キキ*零キ中中
キ*ネ中キキ中キネ/char user messa
ge area[20];/:ネ*ネ*ネ***ネ**
*:ネ*宰ネ**ネ零寧宰:::::ネ中ネネ**ネ*
キ中*ネネ//ネこの区域は、応答の関連づけを可能に
する*//中データを含む。フィールドは提案であり、
*//*規定ではない。             *
//中::::ネネネネネ中ネ零ネネ零ネ**ネ中ネ*
ネネネネ中ネネネネネネ*ネ*ネ中零零*//キ帽I*
帽モ帽■:彊Iキ帽モ*ネ、::6:*ネ*:**キ*
キ::*ネ)モ*//* imcs区域は12バイト 
        ネ//:ネ::::中ネ**ネ*ネキ
キ*::キネキキ**キネ*ネキキネネネネ*ネネキキ
ネヰキ/5hort  dest  proc  to
ken;5hort  dest  fmcs  qt
oken;5hort  5end  5tatus:
/: lMC5が結果をレポートする中/5hort 
5end msg len;/ネバイト単位で*/ (キnotify address) 0;/:@送信
終了時に呼び出される零/ /:* ::掌中*:ネ:*:中中中キ***キネ**
*キ*ネ中*中*ネ*ネ*ネ**ネ**キ//*この区
域はlMC8とチャネル装置ドライ*//*バが通信す
るためのデータを含む。    ネ//:*/ # char imcs add area [32]
         *//:ネ: * ::::キ*:
::ネ**ネ**ネ****ネ中*中**ネ*ネネ*ネ
ネ*ネネネネ/5truct  imcs  head
er  m1xes  chain  word;/:
キューのため*/ 5truct imcs header :cdd c
hain words/*キューのためネ/ 5truct imcs headerキnext q
ueue chaini/*キューのため:/ 5hrot  imcs−dest proc;/*実
際のプロセッサ中/ 5hrot tmcs dest qtoken;/*
実際のQID */ 5hort imcs 5end proci/*送信
プロセッサネ/: 5hort  imcs  5end  5ubch;
/ネ送信すブチャネル:/ 5hort imcs ray 5ubch;/中5u
bch to 5end toネ/5hort  im
cs−ray  m5g1en;/*受信したメツセー
ジ長ネ/ 5hort imcs op; /*送信または受信キ/ #define/lMC55END  C0DE   
    IIdefine/lMC5RCV  C0D
E       3unsigned 5hort  
imcs  go:ndefine/lMC5IMME
DIATEX8000 1ong  reserved sldefine/HUM TCWS        
  16union  tags     ( long  tagwords[NUM  TCVSI
;5truct tag tag  [NUM TCV
SI。
]tags; ); 5truct  imcs  header  *im
cs  header:ヘッダは(2つの非連続128
バイト・チャンクから構成でき)、カーネル・データ用
に割り当てられた仮想記憶セグメント41から割り振ら
れる。801アドレツシング・アーキテクチャを使用し
て、短い(32ビツト)アドレスがポインタに使用でき
るようにするとき、ヘッダはすべて同じセグメントにな
ければならない。ヘッダ(及びデータ・ページ)は、l
MC8が呼び出される前に固定しなければならない。ヘ
ッダ中に以下のフィールドを設けなければならない。
imcs dest proc  メツセージが送られ
る先のプロセッサ。lMC8はこの妥当性検査を行ない
、経路を選択する。プロセッサが存在するが利用できな
い場合、lMC8はメツセージを待ち行列に入れる。
imcs dest qtoken  メツセージが送
られる先の受信側プロセッサにあるサーバを表す待ち行
列識別。lMC8はこの妥当性検査を行なわない。
notify adoress  送信動作の完了時に
割込みハンドラからlMC8によって呼び出されるルー
チンのアドレス。このルーチンはカーネル・テキスト・
セグメント内にあり固定されている。
tags  これらはヘッダ及び関連するデータ・ペー
ジを表すように記入しなければならない。システム・サ
ービスは仮想アドレスと長さを取り、タグ・ワードを戻
す。
メツセージがクライエントによって作成されると、クラ
イエントはlMC8を呼び出す。メツセージが送信され
る先のプロセッサが、lMC8が通信する相手のプロセ
ッサ・グループ中にない場合以外は、lMC8はメツセ
ージを送信する。グループ中にない場合は、lMC3は
「エラー」戻りコードを生成する。
メツセージを後の送信のために待ち行列に入れるべき場
合、lMC8はハッシェ方式を利用して、送信が実際行
なわれるときに、待機メツセージが正しい順序で受信側
プロセッサ内の正しい待ち行列に送られるようにする。
この方式が必要なのは、送信側プロセッサと受信側プロ
セッサの間で2つの物理通信リンクが利用できる場合、
または受信側プロセッサが同じ待ち行列向けの前のメツ
セージを否定応答した場合に起こる、メツセージが順序
外れで到着するのを防ぐためである。
E−2バッフドアカウントの処理 名プロセッサ内のlMC838は、特定の受信側構成要
素がプロセッサ内のフレームを余りに多く使用しないよ
うにする、アカウント処理機構48を含む。機構48は
、ヘッダとデータ・ページに対して別々にアカウント処
理を行なう。
受信側プロセッサ10内のサーバは、バッファをデータ
・バッファ・プール43に寄付し、バッフドアカウント
は、各サーバごとにアカウント処理機構48によって維
持される。特定のサーバ向けのメツセージが到着すると
、そのアカウントが適宜減分される。そのアカウントは
より多くのバッファを寄付することによって補充される
そのアカウントがメツセージを受は入れるのに十分でな
いサーバ向けのメツセージが到着すると、問題が発生す
るが、すべてのサーバによって与えられる空きバッファ
の総数は大きい。サーバの不足は一時的なので、そのサ
ーバ向けのメツセージを拒否するよりも、そのサーバに
大域ブールからの空きバッファを「貸す」方がよい。
潜在的な各受信側サーバは、クラスタ内の他のフロセッ
サ10からの到来メツセージ用に固定ページの「アカウ
ント」をもつ。各クラスごとにバッファ方針が異なる、
「サービス・クラス」という概念がある。あるユニット
内の各サーバは1つのクラスに属する。「厳格jクラス
では、サーバはそれらのアカウントを超過引出しできな
い。自由クラスでは、サーバは超過引出しができる(す
なわち、互いのバッファを使用できる)。自由クラスは
、すべての参加サーバの最高のニーズに必要なほど多く
ないバッファ空間を維持しながら、変動を可能にする、
ある種の大域バッファ・プールを提供する。しかし、厳
格クラスからのバッファを自由クラスが「借りる」こと
は決してできない。
アカウントに寄付するため、サーバは、特定のサーバ待
ち行列に対するバッファ・アカウントにメモリのフレー
ムを与える、lMC8中のルニヂンを呼び出す。このル
ーチンは、VMMの優先順位レベルで走行するVMM呼
出しである。VMM31によって資源制御が行なわれる
場合、VMMは、要求されたフレーム数に対する権限を
サーバが与えられるようにする。システムがフレーム外
れの場合、vMMはエラー戻りコードを与える。
非エラーの場合、VMMは空きフレームを見つけて、そ
れを再利用不能にし、lMC8のためにそのフレームを
予約する。次いでVMMは、SLAの優先順位レベルで
走行するlMC5ルーチンを呼び出し、SLAバッファ
・プールにそのフレームを追加し、サーバ待ち行列のア
カウントを増分する。
受信側プロセッサ10内のlMC838は所定の待ち行
列向けにNAKを送るとき、サーバ表にそうしたという
指示を保持する。その待ち行列のサーバはある時点でバ
ッファ・アカウントを補充し、それが行なわれたとき、
lMC838は、NA Kを送った先のプロセッサに、
送信を再開するようにとのメツセージを送信する。送信
側プロセッサ10にあるlMC83E3は、このメツセ
ージを受信すると、その待ち行列向けの最初のメツセー
ジを通信装置ドライバ38への待ち行列に入れ、したが
ってその待ち行列は有効に非ブロック化される。この非
ブロツク化メツセージは、lMC3間メツセージである
ことに留意されたい。これは到着するとすぐにlMC3
によって処理されるので、バッファ・アカウントを必要
としない。
このバッファ・アカウント処理方式の理由の1つは、資
源の涸渇を防ぐことである。それは、タライエンドが妥
当な時間で処理できないメッセージでサーバのプロセッ
サをあふれさせるのを防止するための機構である。
もう一つの理由は、デッドロックの回避に役立つことで
ある。たとえば、プロセッサ10が自由ページ・フレー
ムも自由ヘッダももたず、したがってメツセージを受信
できないことがある。次の到来メツセージによって、プ
ロセッサ10はページ・フレームを解放することができ
るが、新しいへ・ラダを割り振ることはできないので、
このメツセージを受信できない。このバッファ・アカウ
ント処理方式を用いると、特定のサーバがメツセージを
受信するのを妨げずに、仮想メモリ・マネージャ31が
、lMC8用に出力されたページ・フレームの数を制限
することができる。サーバ待ち行列の数は基本的に制限
されていないので、何らかの形でその到来メツセージを
分離するため、サーバは実際には複数の待ち行列を有す
る。たとえば、仮想メモリ・マネージャ31は、クライ
エントからページ・イン要求を受信するための1つの待
ち行列と、それ自体のページ・アウト要求に対する応答
を受信するための他の待ち行列を有することができる。
こうしないと、ページ・アウト応答が、ブロック化され
た待ち行列中でいくつかのページ・イン要求の後に入っ
て、前記の種類のデッドロックを引き起こす可能性があ
る。
E−3ヘッダ管理 受信側プロセッサ内のサーバがlMC836にその存在
を知らせると、サーバはその待ち行列のに使用できるヘ
ッダの数を指定する。その数はサーバがサービスする同
時要求の数の上限を表す。長いサービス待ち行列を構成
する必要はなく、それらの要求を(すでに実メモリ資源
を使用している)送信側プロセッサ中で待機させる方が
よい。
ヘッダはlMC8によって管理される。初期設定の時に
、lMC8は、カーネル・データ空間からのページを割
り振り、それを概念上16個の256バイト・ヘッダに
分解し、ヘッダを固定する。
5LA15が受信動作で使用するための1組のタグ・ワ
ードが作成される度に、こうしたヘッダの1つがそれに
与えられる。メツセージが到来すると、メツセージがア
ドレスされる先のサーバにそのヘッダが与えられ、サー
バのヘッダ・アカウントが減分される。最終的に、サー
バは要求を完了し、あるいは要求にサービスする前に、
ヘッダからその私用のデータ域に関連情報をコピーする
ことができる。どちらの場合も、サーバはヘッダをlM
C8に戻す。この時、サーバの待ち行列のヘッダ・アカ
ウントが増分され、ヘッダはlMC8のヘッダ・プール
に戻って、別の到来メツセージ中で再使用される。
lMC8のヘッダがなくなることがある。自由ヘッダの
数が、しきい値、たとえば4より少なくなると、lMC
8は他のページを割り振り、こうして得られたヘッダを
そのヘッダ・プールに追加する。ヘッダ・ページの割振
りは1回の処理で行なわれなければならない。というの
はページを固定するとページ不在が起こる可能性がある
からである。
ヘッダ・アカウントがゼロである待ち行列向けのメツセ
ージが到着すると、lMC8は「データ・バッファなし
J NAKとは区別されるNAKを送る。「ヘッダなし
J NAKの場合は、待ち行列を非ブロック化するのに
lMC5メツセージを待つ代わりに、送信側lMC8は
しばらくしてから再送信できる。これは、ヘッダの不在
が一過性の現象であるかもしれないからである。ヘッダ
及びバッファには異なる方式も使用できるが、必ずしも
そうする必要はない。
E−4待ち行列トークン管理 上述のように、クライエントによってそのサービスが要
求されているサーバ42は、メツセージ・ヘッダ中で待
ち行列トークンによって識別される。
こうしたトークンを指定する方法には様々なものがある
。たとえば、VMMなどのシステム・サービスは、すべ
てのプロセッサで同じ「周知の」トークン値をもつ。他
の値はlMC8によって指定されて、サーバとクライエ
ントの間でそれ自体の機構によって通信される。ただし
、それらの機構は本発明の一部ではない。
E−55LIH拡張部分 lMC8はメツセージ・ヘッダのdestqtoken
フィールドからサーバを識別し、割込みハンドラ環境で
サーバの5LIH拡張部分44を呼び出す。メツセージ
の存在と位置をそのサーバに通信することが、5LIH
拡張部分44の役割である。5LIH拡張部分44は、
サーバの内部状態とそのデータ構造にアクセスすること
ができ、到来メツセージをどこかで待ち行列に入れるか
どうか、処理を通知する必要があるかどうかなどを知る
たとえば、要求がページ・イン要求である場合、すなわ
ち、サーバからクライエントにページを送る要求である
場合、5LIH拡張部分44は、要求されたページがメ
モリ内にあるかどうかを調べる。メモリ中にある場合、
その送出応答メツセージ用に到来メツセージの物理空間
を使って、ただちに要求にサービスすることができる。
そのページがメモリにない場合、そのページを他のシス
テムまたはディスクから取り出さなければならないが、
どちらの動作も遅い。したがって、5LIH拡張部分は
後の処理のためにサービスのスケジューリングを行なう
ことになる。
E−6中間ノード経路設定 スイッチ11を備えたクラスタ構成では、スイッチ11
に接続された任意の2つのプロセッサ10、たとえばI
OAと10Dが、互いに直接接続できる。スイッチ11
がない場合、またはプロセッサ10がスイッチ11に接
続されていない場合は、第3図に示すように、2つのプ
ロセッサIOAと10Dが、1つまたは複数の中間プロ
セッサ10Bを・介して互いに通信することが必要にな
ることがある。これは、中間ノード経路設定(INR)
と呼ばれる。
通信の基本的な問題は、受信側プロセッサ10Dが到来
メツセージを収容するのに十分なバッファ空間をもつか
どうかである。中間ノード経路設定の場合、中間プロセ
ッサ10Bはバッファ空間をもつが、宛先プロセッサ1
0Dはもたないことがあり、その逆の場合もある。
プロセッサIOAとIODが直接接続されている場合、
ACKとNAKを使って、バッファが利用可能かどうか
通知する。これは、JNRの場合には不可能である。と
いうのは、ACKとNAKは中間プロセッサ内のバッフ
ァが利用可能かどうかを通知することになるからである
中間プロセッサ1゛OBは、それがバッファ空間をもつ
と送信側プロセッサIOAに伝える場合、宛先プロセッ
サIODが空間を持たないことが°ゎかると、メツセー
ジをそれ自体のバッファに保持せざるを得なくなり、バ
ッファ空間及び管理の点でかなりの負担が生じる。
この問題を解決するために2つの代替解決方法が開発さ
れた。どちらの解決方法も、通常の場合(非INR)が
INHの場合の解決方法によって損なわれるべきでない
ことを認識したものである。
1つの代替解決法では、直列リンク12を利用して、中
間プロセッサIOBを介して接続を行なう。具体的には
、メツセージが、他のプロセッサ10Dに向かう中間プ
ロセッサ10Bに到達すると、到来直列リンク12は、
そのメツセージが別の直列リンク12を介してプロセッ
サIODに配送されるまで、接続されたままに保持され
る。次に、プロセッサ10Dは、適宜ACKまたはNA
Kをりンク12を介してプロセッサIOBに送り、プロ
セッサIOBはこのNAKまたはACKをリンク12を
介してプロセッサIOAに転送する。
さらに具体的には、中間プロセッサIOBが、(それ自
体のバッファ中でのメツセージを受信したことを意味す
る)ソフトウェアACKを送る前に、プロセッサIOB
はそのメツセージを宛先プロセッサIODに転送しよう
とする。宛先プロセッサIODは、バッファ空間を持た
ない場合、NAKをプロセッサIOBに送る。したがっ
て、中間プロセッサIOBはそのメツセージを捨て、N
AKを発信元プロセッサIOAに送る。
宛先プロセッサIODがACKを送る場合、中間プロセ
ッサ10Bはそのメツセージを捨て、ACKを発信元プ
ロセッサIOAに送る。どちらの場合も、中間プロセッ
サIOBのバッファは解放されて、他のメツセージを受
は入れることができるようになる。
この設計では、宛先プロセッサ100が応答するまで、
通信プロセッサ10AとIOBの間の通信媒体が使用中
に保たれる。しかし、これは、代わりにより複雑なソフ
トウェアを使用するが、それとも中間プロセッサ内によ
り多くのバッファ空間を設けるかを考えると、妥当なト
レードオフである。この設計を拡張して複数の中間プロ
セッサを設けることができることに留意されたい。
別法として、lMC8間接続サービスを通常のlMC8
の上端に構築することもできる。そうすると、ACKと
NAKが、クライエントとサーバとの間の実メツセージ
であるがのように、この接続を介してメツセージとして
送られる。この実施例は、前の実施例より開発コストが
高い。
直接接続した場合、工Mcsが呼び出されて、メツセー
ジを受信側プロセッサのサービス待チ行列(宛先サービ
ス待ち行列)に送る。INHの場合は、lMC8が呼び
出され、メツセージをローカルlMC8接続サービスの
待ち行列に入れる。
この接続は、宛先プロセッサ上の相手方の接続と(中間
プロセッサを介して)セッシジンを行なう。
メツセージは、中間プロセッサを介して宛先プロセッサ
のlMC8接続サービスに渡される。1MC8接続サー
ビスは、それを宛先サービス待ち行列に渡す。これは、
バッファの欠如によりうまくいかないことがある。宛先
プロセッサのlMC8接続サービスは、発信元プロセッ
サのlMC3接続サービスに成否を示すメツセージを送
る。
発信元プロセッサのlMC8接続サービスは、宛先lM
C8接続サービスからACKを受信するまで、後続のメ
ツセージを宛先プロセッサ中の同じ待ち行列(「宛先待
ち行列」)には送らない。
そのlMC8接続サービスがNAKを受信した場合、後
続の非ブロツク化メツセージを待ってからその宛先待ち
行列に送信する。
メツセージは接続サービス間を通過しなければならない
ので、プロセッサはそれらのメツセージ用の空間を予約
しなければならないが、こうしたメツセージは一時に1
つだけ流れる。さらに、受信側lMC8接続サービスに
、到来メツセージを宛先待ち行列に渡す前に保持するた
めの一時的バッファが必要である。しかし、中間プロセ
ッサでバッファ空間が必要なのは、ある直列リンクから
メツセージを受信してからそれを別のリンクに送出する
までの間だけである。
この機構は、所与の宛先待ち行列向けのメツセージが一
時に1つだけ飛行できるようにすることに留意されたい
。lMC8接続サービスが、順序番号、待ち行列ごとに
別々の順序を与える場合には、この機構が改良できる。
この場合、NAKは、受信時に特定のメツセージを指定
する。送信側プロセッサのlMC8接続サービスは、飛
行中の複数の未処理メツセージをもっことがある。すな
わち、そのlMC8接続サービスは、待ち行列が非ブロ
ック化されるときどこから再開すべきかを知っている。
受信側プロセッサの接続サービスは、それが否定応答し
たメツセージより順序番号が大きなメツセージを捨てる
。その後、その待ち行列が非ブロック化されるとき、そ
れらのメツセージが送信側プロセッサから再送信される
【図面の簡単な説明】
第1図は、本発明の通信プロトコルが有利に利用される
、高速スイッチを介してクラスタ構成で相互接続された
複数のプロセッサ・ユニットノ機能構成図である。 第2図は、1つのプロセッサがクラスタ構成中の他のど
のプロセッサともに直接通信するという、通信リンクに
よって互いに接続された複数のプロセッサ・ユニットの
代替構成の機能構成図である。 第3図は、あるプロセッサが中間プロセッサを介して非
隣接プロセッサに通信するという、クラスタ構成で相互
接続された複数のプロセッサ・ユニットの代替構成の機
能構成図である。 第4図は、ユニットの1つに統合された様々なハードウ
ェア機能を示す、第1図、第2図、及び第3図に示した
プロセッサ・ユニットの構成図である。 第5図は、各ユニットに組み込まれた様々なソフトウェ
ア機能とそれらの間でメツセージを送信するための通信
リンクを示す、第1図に示したプロセッサ・ユニットの
うちの2つの構成図である。 第8A図は、本発明の通信プロトコルに従って送信側プ
ロセッサに記憶されるメツセージのヘッダ及び別になっ
たデータ部分のデータ構造を示す図である。 第6B図は、通信リンクを介して送信されるメツセージ
のデータ構造を示す図である。 第7A図と第7B図は、遠隔ユニットの構成要素間でメ
ツセージを送信する際の通信プロトコルの諸ステップを
示す図である。 第8A図、第8B図及び第8C図は、本発明の通信プロ
トコルを使用する際にプロセッサによって実行される諸
ステップを記述する流れ図である。 FIG、 2 FIG、 1 1へヅタ゛」 ともバイト FIG、 6A 日G、 6B L、−一一一一一+++++++−−ニー++   1
プロセッサ10A プロセ・/け+013 フ゛ロセゾサ 10A プロセッサ10B

Claims (3)

    【特許請求の範囲】
  1. (1)受信側プロセッサの受信側構成要素宛てのメッセ
    ージを、送信側プロセッサの構成要素から受信側プロセ
    ッサに送信する手段、 前記メッセージが受信側プロセッサで受信されたとき、
    前記の宛先受信側構成要素が前記メッセージ用に利用可
    能なバッファ空間をもつかどうかを動的に決定する手段
    、 前記メッセージが受信側プロセッサで受信されたことを
    、前記送信側プロセッサに肯定応答する手段、及び メッセージを受信するのに十分なバッファ空間が受信側
    構成要素で利用可能であるという前記受信側プロセッサ
    による決定を、前記肯定応答手段を介して送信側プロセ
    ッサに通知する手段 を含む、ネットワークに接続された複数のプロセッサ間
    で通信するためのシステム。
  2. (2)ネットワークに接続された複数の処理システム内
    の複数の構成要素間で通信するためのシステムであって
    、 前記構成要素のそれぞれにバッファ空間を割り振る手段
    、 構成要素の組をクラス・タイプ別に分類する手段、 前記クラス・タイプごとに前記の割り振られたバッファ
    空間をプールする手段、 受信側プロセッサの受信側構成要素宛てのメッセージを
    、送信側プロセッサの構成要素から受信側プロセッサに
    送信する手段、 前記メッセージが受信側プロセッサで受信されたとき、
    前記宛先の受信側構成要素が前記メッセージ用に利用で
    きるバッファ空間をもつかどうかを動的に決定する手段
    、及び バッファ空間が前記宛先の受信側構成要素用に利用でき
    ない場合、前記宛先の受信側構成要素の前記クラス・タ
    イプに関する、前記バッファのプールからバッファを前
    記送信されたメッセージに割り振る手段 を含む前記システム。
  3. (3)ネットワークに接続された複数のプロセッサ間で
    通信するための方法であって、 受信側プロセッサの複数の構成要素の1つ宛ての所期の
    メッセージを、送信側プロセッサの構成要素から受信側
    プロセッサに送信するステップ、受信側構成要素が利用
    可能なことを動的に指定し、送信されたメッセージが前
    記所期の利用可能な構成要素に到着したとき、前記利用
    可能な構成要素によって直ちに処理するため、関連する
    処理動作を並行して識別するステップ、 前記受信側プロセッサ内の割込みハンドラにより、前記
    送信メッセージの到着時に前記関連処理動作を呼び出す
    ことにより、前記所期の受信側構成要素にアクセスする
    ステップ、及び、 前記識別された処理動作を直ちに実行すると同時に、前
    記所期の受信側構成要素によって決定される他の処理動
    作を延期するステップ、 を含む前記方法。
JP2007273A 1989-01-18 1990-01-18 複数プロセツサ間で通信するためのシステム Expired - Lifetime JP2505050B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US29839889A 1989-01-18 1989-01-18
US298398 1994-08-30

Publications (2)

Publication Number Publication Date
JPH02228760A true JPH02228760A (ja) 1990-09-11
JP2505050B2 JP2505050B2 (ja) 1996-06-05

Family

ID=23150333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007273A Expired - Lifetime JP2505050B2 (ja) 1989-01-18 1990-01-18 複数プロセツサ間で通信するためのシステム

Country Status (2)

Country Link
EP (1) EP0381645A3 (ja)
JP (1) JP2505050B2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5402361A (en) * 1991-04-18 1995-03-28 X-Rite, Incorporated Apparatus for method for logging, storing, and redirection of process related non-densitometric data generated by color processing equipment for use by an off site host computer
US5440687A (en) * 1993-01-29 1995-08-08 International Business Machines Corporation Communication protocol for handling arbitrarily varying data strides in a distributed processing environment
US6684259B1 (en) 1995-10-11 2004-01-27 Citrix Systems, Inc. Method for providing user global object name space in a multi-user operating system
US6437803B1 (en) 1998-05-29 2002-08-20 Citrix Systems, Inc. System and method for combining local and remote windows into a single desktop environment
US6088515A (en) 1995-11-13 2000-07-11 Citrix Systems Inc Method and apparatus for making a hypermedium interactive
US5748892A (en) * 1996-03-25 1998-05-05 Citrix Systems, Inc. Method and apparatus for client managed flow control on a limited memory computer system
US5860072A (en) * 1996-07-11 1999-01-12 Tandem Computers Incorporated Method and apparatus for transporting interface definition language-defined data structures between heterogeneous systems
US6173327B1 (en) 1996-07-11 2001-01-09 Jeroen De Borst Object-oriented method and apparatus for information delivery
US6263485B1 (en) 1996-07-11 2001-07-17 Andrew Schofield Method and apparatus for describing an interface definition language-defined interface, operation, and data type
US6023721A (en) * 1997-05-14 2000-02-08 Citrix Systems, Inc. Method and system for allowing a single-user application executing in a multi-user environment to create objects having both user-global and system global visibility
US5961586A (en) * 1997-05-14 1999-10-05 Citrix Systems, Inc. System and method for remotely executing an interpretive language application
US5941949A (en) 1997-05-14 1999-08-24 Citrix Systems, Inc. System and method for transmitting data from a server application to more than one client node
US6157944A (en) * 1997-05-14 2000-12-05 Citrix Systems, Inc. System and method for replicating a client/server data exchange to additional client notes connecting to the server
US6038604A (en) * 1997-08-26 2000-03-14 International Business Machines Corporation Method and apparatus for efficient communications using active messages
GB9725367D0 (en) * 1997-11-28 1998-01-28 3Com Ireland Dynamic memory allocation
US6928469B1 (en) 1998-12-29 2005-08-09 Citrix Systems, Inc. Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques
US6785726B1 (en) 2000-05-08 2004-08-31 Citrix Systems, Inc. Method and apparatus for delivering local and remote server events in a similar fashion
US6785713B1 (en) 2000-05-08 2004-08-31 Citrix Systems, Inc. Method and apparatus for communicating among a network of servers utilizing a transport mechanism
US6789112B1 (en) 2000-05-08 2004-09-07 Citrix Systems, Inc. Method and apparatus for administering a server having a subsystem in communication with an event channel
US8135843B2 (en) 2002-03-22 2012-03-13 Citrix Systems, Inc. Methods and systems for providing access to an application
US7136952B2 (en) * 2004-04-28 2006-11-14 International Business Machines Corporation Method for programming firmware hubs using service processors
US7698552B2 (en) 2004-06-03 2010-04-13 Intel Corporation Launching a secure kernel in a multiprocessor system
EP2160074B1 (en) 2005-11-25 2012-02-08 Panasonic Corporation Power control device for high-frequency dielectric heating and its control method
US8738703B2 (en) 2006-10-17 2014-05-27 Citrix Systems, Inc. Systems and methods for providing online collaborative support

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59176952A (ja) * 1983-03-26 1984-10-06 Ricoh Co Ltd 通信制御方式

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5833972B2 (ja) 1979-11-12 1983-07-23 富士通株式会社 計算機システム間通信方式
US4648061A (en) 1982-11-09 1987-03-03 Machines Corporation, A Corporation Of New York Electronic document distribution network with dynamic document interchange protocol generation
US4532588A (en) 1982-11-09 1985-07-30 International Business Machines Corporation Electronic document distribution network with uniform data stream
US4605928A (en) 1983-10-24 1986-08-12 International Business Machines Corporation Fault-tolerant array of cross-point switching matrices
US4635250A (en) 1984-04-13 1987-01-06 International Business Machines Corporation Full-duplex one-sided cross-point switch

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59176952A (ja) * 1983-03-26 1984-10-06 Ricoh Co Ltd 通信制御方式

Also Published As

Publication number Publication date
JP2505050B2 (ja) 1996-06-05
EP0381645A2 (en) 1990-08-08
EP0381645A3 (en) 1992-08-05

Similar Documents

Publication Publication Date Title
US5253342A (en) Intermachine communication services
JPH02228760A (ja) 複数プロセツサ間で通信するためのシステム
US5220674A (en) Local area print server for requesting and storing required resource data and forwarding printer status message to selected destination
US7953085B2 (en) Third party, broadcast, multicast and conditional RDMA operations
US4930069A (en) Mechanism and method for transferring data between bus units having varying master and slave DMA capabilities
US7013465B1 (en) System, device and method for interprocessor communication in a computer system
EP0543512B1 (en) Multiprocessor system
US5920703A (en) Systems and methods for managing the processing of relatively large data objects in a communications stack
US6549934B1 (en) Method and system for remote access to computer devices via client managed server buffers exclusively allocated to the client
US6697878B1 (en) Computer having a remote procedure call mechanism or an object request broker mechanism, and data transfer method for the same
JP3606541B2 (ja) 複数ノードの非同期データ通信システム内で早期到達メッセージを処理する方法
US7519650B2 (en) Split socket send queue apparatus and method with efficient queue flow control, retransmission and sack support mechanisms
JP3640187B2 (ja) マルチプロセッサシステムの障害処理方法、マルチプロセッサシステム及びノード
EP0444376A1 (en) Mechanism for passing messages between several processors coupled through a shared intelligent memory
US20060225080A1 (en) Methods and apparatus for managing a buffer of events in the background
JPS61289456A (ja) 分散処理システムの作業要求通信方法
Wilkes Hamlyn—an interface for sender-based communications
CZ20032079A3 (cs) Způsob a zařízení pro přenos přerušení z periferního zařízení na hostitelský počítačový systém
EP0317481B1 (en) Remote storage management mechanism and method
US8566833B1 (en) Combined network and application processing in a multiprocessing environment
US5204954A (en) Remote storage management mechanism and method
JPH0786867B2 (ja) 作業フロー制御方法、作業要求フロー制御方法及び装置、並びに通信管理装置
US6757803B1 (en) Distributed buffer recovery
US7840643B2 (en) System and method for movement of non-aligned data in network buffer model
Schröder-Preikschat Peace—A distributed operating system for high-performance multicomputer systems