JPH07306837A - 分散処理のための装置、方法、及びプログラム製品 - Google Patents

分散処理のための装置、方法、及びプログラム製品

Info

Publication number
JPH07306837A
JPH07306837A JP4074453A JP7445392A JPH07306837A JP H07306837 A JPH07306837 A JP H07306837A JP 4074453 A JP4074453 A JP 4074453A JP 7445392 A JP7445392 A JP 7445392A JP H07306837 A JPH07306837 A JP H07306837A
Authority
JP
Japan
Prior art keywords
procedure
callable
procedures
call
partition
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.)
Pending
Application number
JP4074453A
Other languages
English (en)
Inventor
Jacob Amit Neta
ネタ・ヤコブ・アミット
Michael Mahlberg Johan
ヨハン・ミカエル・マルベルグ
Shani Uri
ウリ・シャニ
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 JPH07306837A publication Critical patent/JPH07306837A/ja
Pending 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/547Remote procedure calls [RPC]; Web services
    • 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

Abstract

(57)【要約】 【目的】 本発明の目的は、多重プロセッサ・コンピュ
ータ・システム上でプログラムを実行するための改善さ
れた方法及び装置を提供することにある。 【構成】 分散処理環境において、各局所プロセッサ
は、適用業務プログラムの個々のバージョンのプログラ
ム・スタックを維持し、プログラムがプロセッサ境界を
横切って入れ子式及び再帰式呼出しを行うことができ
る。これにより、単一スレッド単一プロセッサ用に書か
れたコードを、分散システム上で走行させることが支援
される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データ処理ソフトウエ
アの応用例に関する。より具体的には、単一スレッド・
コンピュータ・プログラムを複数のプロセッサ上で効率
的に実行することに関する。
【0002】
【従来の技術】現代のコンピュータ・システムは、通
常、単一の中央演算処理装置(CPU)と、システム・
メモリ、通信バス、入出力制御装置、記憶装置など、そ
の他の支援ハードウェアを含む。CPUは、システムの
中心部である。CPUは、コンピュータ・プログラムを
構成する命令を実行し、他のシステム構成要素の動作を
指令する。
【0003】コンピュータ開発の初期には、CPUはシ
ステムの最も費用のかかる部分であった。その結果、シ
ステムは、CPUの周囲に、その使用を最適化するよう
に構築されてきた。様々なタスクを同時に実行する多数
のユーザにサービスできる多重タスク処理システムは、
こうした開発の結果であった。多重タスク処理は、複数
のユーザ及びタスクがCPUを共用することを可能にす
る。このシステムは、様々なタスクを同時に実行する多
数のユーザにサービスできるとはいえ、CPUでは、ど
の瞬間でも一時にはただ1つのタスクしか走行できな
い。ある特定のタスクがCPUを必要とし、CPUが使
用中の場合には、タスクは待機しなければならない。し
たがって、多重タスク処理は、CPU利用率の向上を可
能とする一方で、CPUが全般的なシステム性能に対す
るボトルネックになり易いことをも意味する。
【0004】集積回路の出現により、プロセッサの費用
がその他のシステム構成要素に比べて低下してきてい
る。その結果、複数のプロセッサを備えるコンピュータ
・システムが設計されている。たとえば、多年にわたっ
て、ある下位レベルの周辺機能を、ディスク駆動制御プ
ロセッサ、ワークステーション制御プロセッサなどの従
属プロセッサで実行するのが標準であった。このような
周辺プロセッサの相対的費用が低下してくるのに応じ
て、システム設計者はそれらの使用の範囲を拡大し、C
PUにかかる作業負荷を減少させてきた。
【0005】近年、このように安価なプロセッサが入手
できるようになったため、従来は単一のCPUによって
実行されていた機能を複数のプロセッサで実行する、並
列分散処理システムが開発された。このような多重プロ
セッサ・システムの各プロセッサは、それぞれ別々のア
ドレス空間をもち、自分の記憶装置、自分の内部データ
・バスと入出力装置をもつこともある。プロセッサは、
共用バス及び共用メモリを通じて結合され、あるいは、
より緩くネットワークまたは他の入出力制御装置を介し
て結合される。
【0006】このような多重プロセッサ・システムの特
殊な一例が、数値計算中心のコプロセッサを汎用主プロ
セッサと共に用いるものである。数値計算中心のコプロ
セッサのアーキテクチャは、大量の計算(通常、浮動小
数点計算)を必要とする適用業務を実行するように最適
化され、主プロセッサはデータ移動、比較、入出力など
の典型的な命令が混合されたものを扱うように最適化さ
れている。
【0007】このような多重プロセッサ・システムにお
ける問題の1つは、コンピュータ・システム上で実行さ
れるように設計されている大部分のプログラムが、本来
は単一スレッドであることにある。本明細書では、「単
一スレッド」とは、いかなる瞬間においても単一の命令
シーケンスが実行される、単一の制御流れをプログラム
が含むことを意味する。このようなシーケンスは、ルー
プとなることも、コード内の別の点に飛ぶこともある
が、常に、一本の経路を辿る。このような単一スレッド
・プログラムは、道が分岐点で分かれるように、プログ
ラムの流れが分かれ、同時に両方の経路に従って進行す
る、多重スレッドの制御とは区別しなければならない。
単一スレッド・プログラムは、多重プロセッサ上での実
行にはあまり適合しない。
【0008】異なる種類のプロセッサを含む多重プロセ
ッサ・システム上で単一スレッド・プログラムを実行し
ようとする場合、プログラムの各部分を実行のため異な
るプロセッサに割り振らなければならない。1つの方法
は、異なる制御流れを支援し、複数プロセッサの最適化
が可能となるように、単一スレッド・コードを書き直す
ことである。ある種の計算機言語はこのような多重処理
を支援する。ただし、既存のコンピュータ・プログラム
のうちこうした言語で書かれているものはほんの少しの
一部分にすぎない。たとえば、SIMULA言語は、同
時に複数のスレッドのプログラム実行が可能な、コルー
チンの使用を支援する。ただし、この解決法は必ずしも
いつも可能ではなく、可能な場合でも、既存のコードを
書き直すことは非常に高くつく。
【0009】プログラムの各部分を複数プロセッサに割
り振るもう1つの方法は、分散処理システムで通常使用
されている、クライエント・サーバ・モデルである。各
プログラム部分は、あるプロセッサ(クライエント)上
で実行される。クライエント・プロセッサと異なる能力
をもつ別のプロセッサ(サーバ)のサービスを必要とす
る場合、クライエント自身に代わって、サーバがある作
業をするように要求を出す。サーバは、作業を終える
と、必要ならその仕事の結果と共に、クライエントに制
御を戻す。クライエント・サーバ・モデルは、異なるプ
ロセッサが協力してプログラムを実行することを可能に
するが、協力の程度は限られている。クライエントは、
実行を開始する前に、通常はどんな情報が必要となるか
分かる前に、必要となる可能性のあるすべての情報をサ
ーバに提供しなければならない。既存のクライエント・
サーバ・モデルは、本質的に、一方向的である。すなわ
ち、サーバはクライエントにコールバックを出す能力を
欠いている。
【0010】コードを大幅に変更することなく、プログ
ラムの異なる部分を多重プロセッサ・システム中の異な
るプロセッサに割り振ることが望ましい。特に、汎用主
プロセッサと数値計算中心のコプロセッサを有するシス
テムの場合、数値計算中心のプロシージャをコプロセッ
サで、その他のプロシージャを主プロセッサで実行する
ことが望ましい。残念ながら、従来技術の機構は、シス
テムがプロシージャを最適に割り振る能力を制限してい
る。
【0011】
【発明が解決しようとする課題】本発明の目的は、多重
プロセッサ・コンピュータ・システム上でプログラムを
実行するための改善された方法及び装置を提供すること
にある。
【0012】本発明の他の目的は、プログラムの各部分
を多重プロセッサ・コンピュータ・システムの異なるプ
ロセッサに割り振るための改善された方法及び装置を提
供することにある。
【0013】本発明の他の目的は、プログラムの各部分
を多重プロセッサ・コンピュータ・システムの異なるプ
ロセッサに割り振る際の柔軟性を増大させることにあ
る。
【0014】本発明の他の目的は、多重プロセッサ・コ
ンピュータ・システム上で走行する諸プロセスの効率を
向上させることにある。
【0015】本発明の他の目的は、単一スレッド・プロ
グラムが多重プロセッサ・コンピュータ・システム上で
効率的に走行できるようにするのに必要な、このプログ
ラムの変更量を削減することにある。
【0016】本発明の他の目的は、多重プロセッサ・コ
ンピュータ・システム上でプログラムを実行する費用を
削減することにある。
【0017】本発明の他の目的は、汎用主プロセッサと
数値計算中心のコプロセッサとを含むコンピュータ・シ
ステム上でプログラムを実行するための改善された方法
及び装置を提供することにある。
【0018】
【課題を解決するための手段】各モジュールが1つまた
は複数の呼出可能プロシージャを含む、複数のプログラ
ム・モジュールを含むコンピュータ・プログラムを、多
重プロセッサ・システム上で実行する。各プログラム・
モジュールはシステム内のプロセッサの1つで実行され
るが、どのプロセッサも複数のモジュールを実行するこ
とができる。各プロセッサの局所アドレス可能メモリ
は、プログラム・スタックと、そのプロセッサで実行さ
れる各モジュールの目的コードと、エージェント・オブ
ジェクトと、他のプロセッサとの通信を扱うためのリン
ケージ情報を含むデータ構造とを格納している。さら
に、局所メモリは、局所メモリ中のプロシージャの1つ
により呼び出すことのできる、異なるプロセッサで実行
可能な各プロシージャ用のCスタブ・モジュール、及び
別のプロセッサ上で実行中のプロシージャにより呼び出
すことのできる、局所メモリ中の各プロシージャ用のS
スタブ・モジュールを格納している。プロセッサの局所
メモリ中にあるプログラム・モジュール、スタブ、スタ
ック、エージェントの1組を、区画と呼ぶ。
【0019】プロセッサAで実行されるプロシージャP
1は、プロセッサBで実行されるプロシージャP2を呼
び出そうとするとき、プロセッサAの局所アドレス可能
メモリ中にある、P2に対応するCスタブに、局所呼出
しを出す。次いで、P2のCスタブは、プロセッサA中
のエージェント・プロセスを呼び込み、それがプロセッ
サB中の対応するエージェント・プロセスと通信する。
プロセッサB中のエージェント・プロセスは、プロシー
ジャP2に対応するプロセッサB中のSスタブに、プロ
シージャP2への局所呼出しを出させる。プロシージャ
からの戻りは、同じ径路を逆に辿る。各プロセッサは、
プログラム・スタックの自分のバージョンを独立に維持
し、スタック・エントリが局所実行可能プロシージャ、
局所スタブまたは局所エージェントを参照する。各局所
呼出しまたは戻りごとに、そのプロセッサ用のプログラ
ム・スタックが適切に更新される。この機構を「分散ス
タック」と呼ぶ。
【0020】各プロセッサは、局所プロシージャ、スタ
ブ、エージェントを参照する自分のスタックを独立に維
持しているので、遠隔プロシージャ呼出しは、典型的な
従来技術のクライエント・サーバ・モデル(一方向性)
の場合のように、プロセスの過去の呼出履歴によって制
約されない。プロセッサA中のプロシージャP1が、プ
ロセッサB中のプロシージャP2を呼び出すことがで
き、プロセッサB中のプロシージャP2がプロセッサA
中の別のプロシージャP3を呼び出すことができる。あ
るいはまた、プロシージャP2が再帰的に、プロセッサ
A中のプロシージャP1を呼び出すこともできる。
【0021】本発明によれば、単一プロセッサでの実行
用に書かれた通常の単一スレッド・プログラムを、ソー
ス・コードに修正をほとんどまたは少しも加えずに、多
重プロセッサ・システム上で動作するように変換するこ
とができる。各プログラム・モジュールに関して、シス
テム中のどのプロセッサがそのモジュールを実行すべき
かを決定する。この決定は、他のモジュールに関して行
われる決定から独立している。必要に応じて、自動的に
スタブが生成される。すべてのプロシージャ呼出しは呼
出しプロシージャに対して局所的であるように見え、し
たがって実際に局所的である呼出しを遠隔プロシージャ
呼出しから区別するのに、ソースの修正は不必要であ
る。ローダ・プロセスは、必要に応じて自動的に遠隔プ
ロセッサ上の区画を起動し、異なるプロセッサ間の通信
を確立するのに必要なリンケージ情報を戻す。
【0022】好ましい実施例では、多重プロセッサ・シ
ステムは、IBM:RISC System/6000
システム・プロセッサに結合されたIBM Appli
cation System/400システム・プロセ
ッサから構成される。後者のプロセッサは汎用商業トラ
ンザクション処理用に設計され、前者のプロセッサは科
学技術適用業務用に設計された縮小命令セット(RIS
C)プロセッサである。RISCプロセッサは、数値計
算中心の演算、特にかなりの浮動小数点演算を含むプロ
シージャ用のアクセラレータとして働く。この実施例で
は、汎用商業トランザクションを支援するプロシージャ
は汎用プロセッサで実行され、数値計算中心の演算を含
むプロシージャはRISCプロセッサで実行される。
【0023】
【実施例】本発明の好ましい実施例による多重プロセッ
サ・システムの主要なハードウェア構成要素の図を、図
1に示す。多重プロセッサ・システム100は、専用数
値計算アクセラレータ・システム121に結合された汎
用商業トランザクション・システム101を含んでい
る。汎用システム101は、従来の複合命令セット(C
ISC)CPU102によって駆動される。CPU10
2は、メモリ・バス104を介して、局所メモリ103
及びプロセッサ・インターフェース装置105と通信す
る。プロセッサ・インターフェース装置105は、メモ
リ・バス104とシステム・バス106の間の通信を扱
う。システム・バス/入出力チャネル・アダプタ107
がシステム・バス106に接続されている。追加のバス
・インターフェース装置108、109をシステム・バ
ス106に接続して、入出力装置(図示せず)が入出力
バス110、111を介してシステム・バス106と通
信できるようにすることができる。数値計算アクセラレ
ータ・システム121は、科学技術適用業務など大量の
数値計算を要する適用業務用に設計されている、縮小命
令セット(RISC)CPU122によって駆動され
る。RISC CPU122は、メモリ・バス124を
介して局所メモリ123と通信する。CPU122はま
た、システム・バス125に接続され、システム・バス
125がバス・インターフェース126を介して入出力
チャネル・アダプタ127と通信できるようにする。入
出力チャネル128は、入出力チャネル・アダプタ12
7とシステム・バス/入出力チャネル・アダプタ107
の間、したがって汎用システム101と数値計算アクセ
ラレータ・システム121の間に接続を確立する。入出
力チャネル128はまた、入出力装置、アダプタ12
9、130を介して、複数の入出力装置(図示せず)を
システム121に接続することが可能である。図では、
2本の入出力バス110、111及び2個のバス・イン
ターフェース装置108、109がシステム101に接
続され、2個の入出力装置アダプタ129、130がシ
ステム121に接続されているが、システムに接続され
るこのような装置の実数は変わってもよいことを理解さ
れたい。
【0024】局所メモリ103はCPU102のアドレ
ス空間にあり、局所メモリ123はCPU122のアド
レス空間にある。これらの局所メモリは単一ユニットと
して示してあるが、実際には各プロセッサの局所メモリ
は、小型で比較的高速のキャッシュ・メモリや、やや低
速だがより大型の主記憶装置などの記憶装置の階層であ
ってもよいことを理解されたい。また、各システムは、
通常、磁気ディスク駆動機構など、1個または複数の局
所大容量記憶装置を含み、必要に応じて、データをこの
ような大容量記憶装置から局所メモリにロードする機構
を有することを理解されたい。このようなメモリ装置の
使用は、当技術分野では周知である。本発明では、局所
メモリは、概念的に当該プロセッサのアドレス空間にお
ける1ユニットと見なすことができる。
【0025】好ましい実施例では、システム101がI
BM Application System/400
システム、システム121がIBM RISC Sys
tem/6000システム、入出力チャネル128がI
BM Micro−channelバスである。システ
ム121は、主として従属システムとして、主システム
であるシステム101の性能を改善する働きをする。こ
の好ましい実施例では、システム101とシステム12
1は物理的には同じユニットに収容され、共通の電源か
ら電力を受け取る。両システムを一緒に収容すると、デ
ータをシステム相互間で高速で転送することが可能とな
る。ただし、本発明は他の構成の他のコンピュータ・シ
ステムでも実施でき、必ずしも両システムを同じ物理ユ
ニットに一緒に収容する必要はないことを理解された
い。
【0026】従来の単一スレッド・コンピュータ・プロ
グラムは、入れ子式または再帰式に互いに呼び出し合う
ことのできる複数のプロシージャを含んでいる。図2
は、従来の単一プロセッサ・コンピュータ・アーキテク
チャにおける、このようなプログラムに対する一連の入
れ子式プロシージャ呼出しを示す。図2の例では、プロ
シージャA201が、プロシージャBに呼出し211を
出して、制御をプロシージャB202に移転する。次い
で、プロシージャB202は、(プロシージャAに戻る
前に)プロシージャB202に呼出し212を出して、
制御をプロシージャCに移転する。プロシージャC20
3は、(プロシージャBに戻る前に)プロシージャD2
04に呼出し213を出す。プロシージャD204は、
実行を済ませると、プロシージャC203に制御214
を戻す。その後、プロシージャC203は、実行を済ま
せると、プロシージャB202に制御216を戻し、プ
ロシージャB202は、実行を済ませると、プロシージ
ャA201に制御216を戻す。このような従来のシス
テムでは、あるプロシージャが前に呼び出されたプロシ
ージャを呼び出すことが可能であり、これを再帰と呼
ぶ。たとえば、プロシージャCは、プロシージャDでな
く、プロシージャBを呼び出すこともできたし、自身を
呼び出すことさえできた。従来の単一プロセッサ・アー
キテクチャでは、スタックと呼ばれるデータ構造が、あ
るプロシージャが自分を呼び出したプロシージャに戻る
とき、プログラムの実行を適切な場所から再開するのに
必要な状態情報を維持している。スタックは、次に実行
される命令、局所変数の状態などあるプロシージャ用の
状態情報を含む、1つまたは複数のプロシージャ活動化
ブロックを含んでいる。あるプロシージャが呼び出され
ると、新しい活動化ブロックがスタックに追加され、呼
び出されたプロシージャの状態情報がセーブされる。プ
ロシージャが戻るとき、活動化ブロックから状態情報が
読み取られ、スタックの一番上の活動化ブロックが除去
される。
【0027】本発明によれば、プログラムを構成するプ
ロシージャが、各プロシージャごとに1区画ずつ、複数
の区画の間に割り振られる。プログラムの外部プロシー
ジャが実行する(すなわち、プログラムが実行を開始す
る)区画は主区画と呼ばれ、その他の全区画は副区画と
呼ばれる。図3は、その中に2つの区画が存在する、図
2のプログラムがコンピュータ・システム100上でど
のように実行されるかを概念的に示す。この例では、区
画I301が主区画、区画II302が副区画である。
プロシージャA303及びプロシージャC305が区画
Iに割り振られ、プロシージャB304及びプロシージ
ャD306が区画IIに割り振られている。プロシージ
ャAがプロシージャBに呼出し311を出すと、その呼
出しは区画境界を横切り、したがって「遠隔プロシージ
ャ呼出し」と言われる。次いで、プロシージャBが遠隔
プロシージャ呼出し312をプロシージャCに出し、プ
ロシージャCが遠隔プロシージャ呼出し313をプロシ
ージャDに出す。プロシージャDは、実行を終了する
と、プロシージャCに制御を戻し(314)、プロシー
ジャCは、プロシージャBに制御を戻し(315)、プ
ロシージャBはプロシージャAに制御を戻す(31
6)。単一プロセッサ・システムの場合と全く同様に、
区画境界を横切って再帰的にプロシージャを呼び出すこ
とが可能である。たとえば、プロシージャCがプロシー
ジャDでなく、プロシージャBを呼び出すこともでき
る。
【0028】プロシージャは、様々な性能またはその他
の考慮にしたがって区画に割り振られる。図3の例で
は、プロシージャB及びDは、複雑な計算を実行できる
プロセッサの能力を利用するため、RISCプロセッサ
を含む区画に割り振られる数値計算中心のプロシージャ
であるとする。プロシージャA及びCは、汎用CISC
プロセッサ上でより効率的に実行される、本質的な入出
力またはその他の一般命令が混合されたプロシージャで
あるとする。ただし、プロシージャを割り振る際に、そ
の他の考慮も可能である。たとえば、別の実施例では、
分散処理システムが、それぞれ異なるデータベースを自
分の局所記憶装置に有する、複数の同様なプロセッサを
含むものとすることができる。この場合、プロシージャ
を、それがアクセスするデータベースに応じて、プロセ
ッサに割り振ることができる。
【0029】遠隔プロシージャ呼出しを出すプロシージ
ャは、クライエントの役割を演じる。呼び出されるプロ
シージャは、サーバの役割を演じる。1つのプロシージ
ャが、ある呼出しに関してはクライエントの役割を演
じ、別の呼出しに関してはサーバの役割を演じることが
できる。図3の例では、プロシージャAは、自身が遠隔
プロシージャ呼出し311を出すとき、クライエントで
あり、プロシージャBはその呼出しに関してサーバであ
る。しかし、プロシージャBは、自分が遠隔プロシージ
ャ呼出し312を出すときは、クライエントであり、プ
ロシージャCがサーバである。
【0030】図4は、区画の異なる構成単位を示し、好
ましい実施例ではそれらが遠隔プロシージャ呼出し中に
どのように相互作用するかを示す。各区画は、1つまた
は複数のプロシージャ・コード・ブロック402、41
2、1つまたは複数のCスタブ(クライエント・スタ
ブ)403、413、1つまたは複数のSスタブ(サー
バ・スタブ)404、414及びエージェント405、
415を含む。プロシージャ・コード・ブロック40
2、412は、プロシージャを走行させるための機械実
行可能命令を含んでいる。各プロシージャ・コード・ブ
ロックは別々にコンパイルされたモジュールでもよく、
あるいは複数のブロックが区画内の単一モジュールにコ
ンパイルされてもよい。コンパイルされたモジュール
は、ただ1つのプロシージャをもっていようと、複数の
プロシージャをもっていようと、常に1つの区画に含ま
れる。
【0031】図4で、区画401中のプロシージャX4
02が区画411中のプロシージャY412に呼出しを
出す場合、区画401中のプロシージャYのCスタブ4
03がその呼出しを受け取る。Cスタブ403は、その
局所エージェント405を呼び出し、遠隔サーバを呼び
込むよう要求する。エージェント405は、区画境界を
横切ってエージェント415に呼出しを出す。次いで、
エージェント415はプロシージャYのSスタブ414
を呼び出し、次にSスタブ414が、(プロシージャY
から見て)別の局所プロシージャから来ると思われる局
所呼出しをプロシージャYに出す。プロシージャYは、
Cスタブ413、エージェント415、エージェント4
05、Sスタブ404を介して、プロシージャXを呼び
出すことができる。
【0032】スタブは、遠隔プロシージャ呼出しが、呼
出し元プロシージャにとって局所的であると見えるよう
にする。したがって、呼び出されるプロシージャが同じ
区画にあるか否かを、呼出し元プロシージャが知ってい
る必要はない。呼出し元プロシージャは、どうであろう
と、単に通常の局所プロシージャ呼出しを出す。Cスタ
ブは、異なる区画中のサーバ・プロシージャに代わっ
て、Cスタブと同じ区画中のクライエント・プロシージ
ャから局所プロシージャ呼出しを受け取る。Sスタブ
は、異なる区画中のクライエント・プロシージャに代わ
って、Sスタブと同じ区画中のサーバ・プロシージャに
局所プロシージャ呼出しを出す。サーバとして働く各プ
ロシージャごとに、そのサーバの区画に別々のSスタブ
があり、他の各区画には別々のCスタブがある。スタブ
は、サーバの役割を演じるプロシージャにのみ必要であ
る。
【0033】各区画は、他の区画との接続を扱う、1つ
のエージェントを有する。より正確には、エージェント
は、区画境界を横切るプログラムの転送に責任を持つ。
異なる区画のエージェントは、通信媒体、好ましい実施
例では入出力チャネル128を介してシステム101と
システム121の間を走る経路を介して、互いに通信し
合う。所与の区画中の同じエージェントが、出力遠隔プ
ロシージャ呼出しと入力遠隔プロシージャ呼出しの両方
を扱う。したがって、エージェントとは、制御の単一ス
レッドがこれを通って局所区画を離れそしてそこに戻
る、接合部である。各エージェントは、入力遠隔呼出し
に応答してどのサーバを局所的に指名できるか、及び他
の区画中のサーバへの出力遠隔呼出しをどのように経路
指定するのかに関する情報を有する。
【0034】各区画は、区画中のプロシージャとスタブ
とエージェント用の活動化ブロックを含む、別々の局所
スタックを含んでいる。区画内の個々の局所スタック
は、全体として、プログラム流れを維持するのに必要な
すべてのプログラム状態情報を含んでいる。この構造を
「分散スタック」と名付ける。
【0035】図5は、図3に示した遠隔プロシージャ呼
出しの履歴を示す分散スタックの例を示す。この例で
は、分散スタック500は、それぞれ図3の区画I30
1及び区画II302に含まれる2つの局所スタック5
01、531から構成される。区画Iは主区画なので、
スタック501の一番下にある第1エントリはプロシー
ジャA用の活動化ブロックである。プロシージャAが実
行中で、呼出しを出す前は、これが、スタック501上
で唯一の活動化ブロックである。スタック531は、あ
とで検討するように、区画IIがまだ開始されていない
かどうかに応じて、区画II中のエージェントII用の
活動化ブロック532を含むことも含まないこともあ
る。プロシージャAが遠隔プロシージャ呼出し311を
プロシージャBに出すときは、実際には、区画I中のプ
ロシージャB用のCスタブに局所呼出し511を出し
て、Cスタブ活動化ブロック503をスタック501に
置かせる。次いで、プロシージャBのCスタブが、区画
Iのエージェント(エージェントI)を呼び出して(5
12)、エージェントIの活動化記録504をスタック
501上に置かせる。次いで、エージェントIがエージ
ェントIIと通信する(513)。区画IIがまだ起動
されていない場合は、あとで述べるように、区画IIを
起動するために、ロード/スタート・ユーティリティが
呼び込まれる。ロード/スタート・ユーティリティは、
スタック531を初期設定し、エージェントII用の活
動化ブロック532をスタックの一番下に置く。次い
で、エージェントIIがプロシージャBのSスタブを呼
び出して(541)、Sスタブ活動化ブロック533を
スタック531上に置かせる。次いで、プロシージャB
のSスタブがプロシージャBを呼び出して(542)、
プロシージャBの活動化ブロック534をスタック53
1上に置かせる。したがって、単一の概念的遠隔呼出し
として図3に示されている遠隔プロシージャ呼出し31
1は、実際には、一連の局所呼出し511、512、5
41、542ならびにエージェント相互間の遠隔呼出し
513を含んでいる。プロシージャBが実行中で、別の
プロシージャを呼び出す前には、スタック501はプロ
シージャA用の活動化ブロックA502、プロシージャ
BのCスタブ503、エージェントI504を含み、ス
タック531はエージェントII用の活動化ブロック5
32、プロシージャBのSスタブ533、プロシージャ
B534を含む。
【0036】分散スタック500は、図3に示した残り
の遠隔プロシージャ呼出しに関しても同様に成長する。
プロシージャBは、遠隔プロシージャ呼出し312をプ
ロシージャCに出すために、区画II中のプロシージャ
CのCスタブを呼び出して(543)、活動化ブロック
535をスタック531に加え、プロシージャCのCス
タブがエージェントIIを呼び出して(544)、活動
化ブロック536をスタック531に加え、エージェン
トIIがエージェントIと通信し(545)、エージェ
ントIが区画I中のプロシージャCのSスタブを呼び出
して(514)、活動化ブロック505をスタック50
1に加え、プロシージャCのSスタブがプロシージャC
を呼び出して(515)、活動化ブロック506をスタ
ック501に加える。プロシージャCは、遠隔プロシー
ジャ呼出し313をプロシージャDに出すと、区画I中
のプロシージャDのCスタブを呼び出して(516)、
活動化ブロック507をスタック501に加え、プロシ
ージャDのCスタブがエージェントIを呼び出して(5
17)、活動化ブロック508をスタック501に加え
る。エージェントIがエージェントIIを呼び出し(5
18)、エージェントIIが区画II中のプロシージャ
DのSスタブを呼び出して(546)、活動化ブロック
537をスタック531に加え、プロシージャDのSス
タブがプロシージャDを呼び出して(547)、活動化
ブロック538をスタック531に加える。プロシージ
ャDが実行中のとき、分散スタック500は図5に示し
たすべての活動化ブロックを含んでいる。
【0037】プロシージャからの戻りは、同じ順序を逆
に辿る。プロシージャDは、実行を終了すると、プロシ
ージャDのSスタブに戻り(548)、プロシージャD
の活動化ブロック538をスタック531から除去する
ことにより、プロシージャCに戻る(図3には単一戻り
314として示されている)。プロシージャDのSスタ
ブがエージェントIIに戻り(549)、活動化ブロッ
ク537がスタック531から除去される。エージェン
トIIがエージェントIと通信する(550)。エージ
ェントIがプロシージャDのCスタブに戻り(51
9)、活動化ブロック508がスタック501から除去
される。プロシージャDのCスタブがプロシージャCに
戻り(520)、ブロック507をスタック501から
除去する。制御が再び境界を横切るとき、エージェント
IIが入口点として再び必要となるので、区画境界を横
切って戻るとき、エージェントIIはスタックから除去
されないことに留意されたい。プロシージャCは、プロ
シージャCのSスタブ521、エージェントI522、
エージェントII523、プロシージャCのCスタブ5
51、プロシージャB552に次々に戻ることにより、
プロシージャBに戻り、その間に活動化ブロック50
6、505、536、535がそれぞれ対応するスタッ
クから除去される。プロシージャBは、プロシージャB
のSスタブ553、エージェントII554、エージェ
ントI555、プロシージャBのCスタブ524、プロ
シージャA525に次々に戻ることにより、プロシージ
ャAに戻り、その間に活動化ブロック534、533、
504、503がそれぞれ対応するスタックから除去さ
れる。
【0038】各エージェントは、内部エージェント状況
スタックを維持している。エージェント状況スタックの
構造は図6に示す。エージェント状況スタック601
は、エージェント状況を記録し、呼出しまたは戻りの結
果として制御がエージェントに渡されたとき、エージェ
ントが実行を正しい場所から再開できるようにする。ス
タック601は、1つまたは複数のエージェント状況レ
コード602を含み、各レコードは状態フィールド61
1、フラグ・フィールド612、モジュール識別子61
3、プロシージャ識別子614、及び区画識別子615
を含む。状態フィールド611は、AGT−IN−SE
RVICE、AGT−CALL、AGT−RETURN
等、エージェントの現状態を含む。フラグ・フィールド
612は、様々な実行時条件を知らせるビット・ベクト
ルである。モジュール識別フィールド613、プロシー
ジャ識別フィールド614、区画識別フィールド615
は、呼出しが遠隔プロシージャに代わる局所的なもので
あれ局所プロシージャに代わる遠隔的なものであれ、そ
れぞれ、エージェントによって呼び出されているモジュ
ール、プロシージャ、プロシージャ区画の識別番号を含
む。遠隔サーバを(局所クライエントに代わって)呼び
出すと、現状況がスタック601上に押し込まれ、エー
ジェントの新しい状態を反映するように更新される。遠
隔呼出しが戻されると、古い状況がスタックの一番上か
ら復元(ポップオフ)される。遠隔要求を(局所サーバ
に代わって)受け取ると、局所サービスが呼び込まれる
前にスタック601上に現状況が押し込まれ、サービス
が完了した後にそれがスタックの一番上から復元(ポッ
プオフ)される。
【0039】図7は、区画間メッセージのフォーマット
を示す。動詞フィールド701は、メッセージによって
要求される動作を含み、AGT−CALL、AGT−R
EPLY、AGT−RETURN、AGT−ERRO
R、AGT−DEBUG、またはAGT−TERMIN
ATEのいずれかである。これらのうち始めの3つは、
後で説明する。その他は自明であって、本発明にとって
重大でない。フラグ・フィールド702はエージェント
状況レコードのフラグ・フィールド612と同じ情報を
含む。目標モジュール識別フィールド703及び目標プ
ロシージャ識別フィールド704は、それぞれメッセー
ジ転送先のモジュール及びプロシージャを含む。転送元
区画識別子705は、送出側区画の識別子を含む。配列
済みパラメータ・フィールド706は、渡されたパラメ
ータの符号化を含む。
【0040】好ましい実施例では、パラメータの符号化
は、原始単純データ要素が識別されるまで、階層データ
構造の再帰的下降走査(recursive descent traversa
l)法を使用し、次いでこの要素が機械独立なフォーマ
ットで他のプロセッサに渡される。この操作を、パラメ
ータ配列(マーシャリング)と呼ぶ。パラメータ復号で
は逆の操作が行われ、階層データ構造が、その機械独立
フォーマットから回復された原始データ要素から構築さ
れる。この操作を、パラメータ配列解除(アンマーシャ
リング)と呼ぶ。パラメータ配列/配列解除の技法は当
技術分野で知られており、詳細は本明細書では繰り返さ
ない。当技術分野で知られている様々な他のどんなパラ
メータ符号化/復号方式も使用できる。
【0041】次に、遠隔呼出しプロシージャの諸段階
を、詳細に説明する。図8は、単一の遠隔プロシージャ
呼出し及び戻りの諸段階中の、クライエント、スタブ、
エージェント、サーバ間での制御の移転を概念的レベル
で示したものである。図9は、単一の遠隔プロシージャ
呼出し及び戻りの一環として、クライエント及びサーバ
のスタブによって実行される諸段階の流れ図である。図
10ないし15は、エージェントによって実行される諸
段階の流れ図である。
【0042】遠隔プロシージャ呼出しを開始する直前に
は、プログラムの状態は次のようである。遠隔プロシー
ジャ呼出しを出そうとしている区画は、呼出しを出すク
ライエント・プロシージャ内で実行中である。他のすべ
ての区画は、遠隔区画から通知される事象(event)を
待つそのそれぞれのエージェント内で実行中であり、A
GT−WAIT状態にある。この状態は、図8で801
に示されている。エージェントは、遠隔呼出しに応答す
るために、AGT−GET−REPLYまたはAGT−
ACCEPT−RETURN状態にあることもある。た
だし、以下の説明では、AGT−WAIT状態はこれら
3つの状態のすべてを表すものとする。
【0043】クライエント・プロシージャは、遠隔サー
バを呼び込む準備ができたとき、そのサーバの局所クラ
イエント・スタブに局所プロシージャ呼出しを出す(8
02)。この呼出しは、クライエント・プロシージャに
とって、他の局所プロシージャ呼出しと全く同じであ
る。この呼出しが、Cスタブの走行を開始し(90
1)、次にCスタブはAGT−CALL事象を用いて局
所エージェントに呼出しを出して(803、902)、
遠隔サーバを呼び込むよう要求する。クライエント・エ
ージェントは、遠隔接続を確立し、AGT−WAIT状
態で待期しているサーバ・エージェントにAGT−CA
LLメッセージを渡す(804)。
【0044】図10は、AGT−CALL事象を受け取
ったときクライエント・エージェントが取る行動を示
す。クライエント・エージェントは、まず、状況(現在
の状態でAGT−CALLを受け取ることが合法的かど
うか)を検証する(1001)。状況が合法的な場合、
現エージェント状況がエージェント状況スタック601
上にセーブされる(1002)。エージェントは、次い
で、動詞AGT−CALL、目標モジュール識別子、目
標プロシージャ識別子、転送元局所区画識別子を用い
て、メッセージを作成し(1003)、新しいエージェ
ント状況を設定し(1004)、メッセージを目標区画
に送り出す(1005)。サーバ・エージェントがその
メッセージを受け取ると、クライエント・エージェント
は制御をCスタブに戻す。
【0045】図11は、AGT−CALLメッセージを
クライエント・エージェントから受け取ったときサーバ
が取る行動を示す。サーバ・エージェントは、最初、A
GT−WAIT状態にある間に、何らかのメッセージが
到達する前に、その状態をAGT−NULL−CODE
コードに設定する(1011)。次いで、エージェント
はメッセージをそのバッファで受け取って(101
2)、動詞を調べる。動詞がAGT−CALL1013
でなく、AGT−TERMINATE1014でもない
場合は、エラーが通知される。動詞がAGT−TERM
INATEの場合には、エージェント・プロセスはその
区画を終了させる。動詞がAGT−CALLの場合に
は、受信エージェントはその現状況をエージェント状況
スタック上に押し込み(1015)、新しい状況フラグ
をメッセージ・ヘッダから設定し(1016)、その状
態をAGT−IN−SERVICEに設定し(101
7)、局所サーバ・スタブを呼び出すことにより(10
18)サービスをディスパッチし(805)、Sスタブ
を起動させる(911)。後でサーバが完了して戻ると
き、エージェント状況スタックから状況が復元される
(1019)。
【0046】クライエント区画のCスタブに制御が戻
り、サーバ区画でSスタブが初期設定されると、Cスタ
ブが入力パラメータをSスタブに送り(903、80
6)、Sスタブがそれを受け取る(912、807)。
すべての入力パラメータが送られた後、CスタブはAG
T−GET−REPLY事象を用いてクライエント・エ
ージェントを呼び出し(904、808)、遠隔サービ
スが戻るのを待つように合図する。次いで、クライエン
ト・エージェントはAGT−WAIT状態に入る(80
9)。この状態でクライエント・エージェントは2つの
事象AGT−REPLYまたはAGT−CALLのどち
らかをある遠隔エージェントから受け取ることができ
る。サーバ・プロシージャが終了した後、現在進行中の
遠隔プロシージャのサーバ・エージェントからAGT−
REPLY事象が到着する。AGT−CALL事象は
(もしあれば)、元の遠隔プロシージャ呼出し内で入れ
子となっている、ある局所サービス用の新しい遠隔プロ
シージャ呼出しの一部として到着する。このような呼出
しは、他のどのエージェントから到着する可能性もあ
る。
【0047】Sスタブは、すべての入力パラメータを受
け取った後、局所呼出しをサーバ・プロシージャに出し
(810、913)、局所呼出しと同様にそれにパラメ
ータを渡す。次いで、サーバ・プロシージャが実行す
る。サーバ・プロシージャは、上記のプロシージャを用
いて入れ子式呼出しを別の局所または遠隔プロシージャ
に出すことができるが、この例では、単一の呼出し及び
戻りのみについて述べる。サーバ・プロシージャが終了
すると、Sスタブに戻る(811)。
【0048】SスタブがAGT−REPLY事象を用い
てサーバ・エージェントを呼び込み(812、91
4)、サービスが完了したことをクライエントに警告す
るよう合図する。図12は、AGT−REPLY事象を
出すときにサーバ・エージェントが取る、図8で813
に示した行動を示す。サーバ・エージェントは、まず、
状況(現在の状態でAGT−REPLYを出すことが合
法的なのかどうか)を検証する(1021)。状況が合
法的な場合には、エージェントは動詞AGT−REPL
Yと、現エージェント状況からの目標モジュール識別
子、目標プロシージャ識別子、転送元区画識別子を用い
て、メッセージを作成する(1022)。次いで、サー
バ・エージェントは、メッセージをクライエント区画に
送り(1023)、その状況をAGT−IN−SERV
ICEに設定する(1024)。メッセージを受け取る
と、サーバ・エージェントはSスタブに戻る。
【0049】図13は、AGT−REPLYメッセージ
をサーバ・エージェントから受け取ったときクライエン
ト・エージェントが取る、図8で814に示した行動を
示す。クライエント・エージェントは、サーバの呼込み
を終了すると、その出力データをフラッシュし(103
1)、待機状態に入り、前記のように、別の区画からの
メッセージを待つ。メッセージが到着すると、それをエ
ージェントのバッファに入れ(1032)、動詞を調べ
る。動詞がAGT−REPLYの場合(1033)、状
況を検証する(1034)。AGT−REPLYメッセ
ージが現状況で合法的な場合、エージェントは局所Cス
タブに戻る(1035、904)。動詞がAGT−CA
LLの場合(1036)、入れ子式遠隔プロシージャ呼
出しが指示される。エージェントは現状況をエージェン
ト状況スタック上に押し込み、メッセージ・ヘッダ・デ
ータから状況フィールドをリセットし、その状態をAG
T−IN−SERVICEに設定し、適当なSスタブを
呼び込むことにより、サービスをディスパッチする(1
037)。局所サービスは、完了すると、エージェント
状況スタックからその前状況を復元し(1038)、再
び待期状態に入る。
【0050】制御が、クライエント・エージェントから
局所Cスタブに戻り、サーバ・エージェントからSスタ
ブに戻ると、Sスタブは出力パラメータをCスタブに送
り(815、915)、Cスタブがそれらを受け取る
(816、905)。すべての出力パラメータを受け取
った後、CスタブはAGT−ACCEPT−RETUR
N事象を用いてクライエント・エージェントを呼び出し
(817、906)、遠隔プロシージャ呼出しのサーバ
・エージェントからの戻りを期待するよう合図する。ほ
ぼ同時に、SスタブがAGT−RETURN事象を用い
て制御をサーバ・エージェントに戻し(818、91
6)、遠隔プロシージャ呼出しをクライエント・エージ
ェントに戻すよう合図する。次いで、Sスタブはその役
割を終了する。
【0051】図14は、AGT−RETURN事象を出
すときにサーバ・エージェントが取る、Sスタブからの
戻りを合図する行動を示す。サーバ・エージェントが状
況を検証する(1041)。AGT−RETURNで与
えられる現状況を出すことが合法的な場合、サーバ・エ
ージェントは、動詞AGT−RETURNをその現状況
からの転送元モジュール識別子、プロシージャ識別子、
区画識別子と共にメッセージ・ヘッダに入れて、クライ
エント・エージェントへのメッセージを作成する(10
42)。次いで、エージェントはそのメッセージをクラ
イエント・エージェントに送る(819、1043)。
メッセージを送ると、サーバ・エージェントはその出力
バッファをフラッシュし(1044)、制御をSスタブ
に戻す。Sスタブもその実行を終了し、事象AGT−W
AIT、AGT−GET−REPLYまたはAGT−A
CCEPT−RETURNのいずれかを実行しながら、
AGT−WAIT状態のエージェントであるそのディス
パッチャに制御を戻す。この時点で、エージェントは別
の呼出しを待っている。
【0052】図15は、AGT−RETURNメッセー
ジを受け取ったときクライエント・エージェントが取
る、図8で820に示した行動を示す。クライエント・
エージェントは、Cスタブから、遠隔プロシージャ呼出
しの戻りを期待するよう合図する呼出しを受け取った
後、待期状態にある。メッセージを受け取ると、それを
バッファに読み込んで動詞を調べる(1051)。動詞
がAGT−RETURNの場合、エージェントは状況を
検証する(1052)。メッセージを受け取ることが合
法的な場合、エージェントはその状況をエージェント状
況スタックから復元し(1053)、Cスタブに戻る。
1054に示すように、AGT−RETURNを待つ間
に、別の(入れ子式)AGT−CALLメッセージを受
け取る可能性もある。この場合、エージェントは現状況
をエージェント状況スタック上に押し込み、メッセージ
・ヘッダ・データから状況フィールドをリセットし、そ
の状態をAGT−IN−SERVICEに設定し、適当
なSスタブを呼び込むことによりサービスをディスパッ
チする(1055)。局所サービスが完了すると、その
前状況をエージェント状況スタックから復元し(105
6)、再び待期状態に入る。局所Cスタブはエージェン
トからの戻りを受け取ると、パラメータをクライエント
・プロシージャに戻す(局所戻り)(821)。
【0053】図16に示すように、各区画は遠隔呼出し
を実行するための情報を経路指定する、いくつかのテー
ブルを維持している。これらのテーブルとしては、モジ
ュール−区画間マッピング・テーブル1101、モジュ
ール・ディスパッチ・テーブル1111、プロシージャ
・ディスパッチ・テーブル1121が含まれる。区画
は、0ないしnの番号が付けられている。つまり、合計
n+1個の区画が存在する。主区画は番号0が付けられ
ている。モジュールは0ないしmの番号が付けられてい
る。つまり、合計m+1のモジュールが存在する。モジ
ュール−区画間マッピング・テーブル1101は、モジ
ュール数に等しい数のエントリを含み、各エントリはそ
のエントリをインデックスするモジュールを含む区画の
識別子を含んでいる。テーブル1101は、各区画ごと
に複製され、エージェントが遠隔プロシージャ呼出しを
正しい区画に経路指定できるようになっている。モジュ
ール・ディスパッチ・テーブル1111は、モジュール
数に等しい数のエントリを含み、各エントリは特殊モジ
ュール・スタブの局所アドレスを含んでいる。すべての
モジュールが1つの区画に含まれているわけではないの
で、モジュール・ディスパッチ・テーブルは、局所区画
に含まれていないモジュール用のエラー処理プロシージ
ャの局所アドレスを含んでいる。各区画はそれぞれモジ
ュール・ディスパッチ・テーブル1111を有するが、
そのエントリは各区画ごとに異なる。各モジュール・ス
タブはプロシージャ・ディスパッチ・テーブル1121
を含んでいる。プロシージャ・ディスパッチ・テーブル
は、モジュール中のサーバ・プロシージャ数に等しい数
のエントリを含み、各エントリはプロシージャSスタブ
の局所アドレスを含んでいる。エージェントは、遠隔区
画からサービス用呼出しを受け取ると、テーブル111
1からモジュール・スタブ・アドレスを得、次いでモジ
ュール・スタブを呼び込み、モジュール・スタブはテー
ブル1121からSスタブ・アドレスを得、それからS
スタブを呼び込む。
【0054】本発明によれば、プログラムの異なる部分
が、異なるプロセッサの局所記憶装置に含まれる。プロ
グラムが(その主区画で)実行を開始するとき、必要に
応じて副区画のプログラム・モジュールがロードされる
よう保証するための何らかの機構が存在しなければなら
ない。好ましい実施例では、別々のローダ/スタータ・
プロセスがこのタスクを実行する。
【0055】図17は、ローダ/スタータ機構を示して
いる。ローダ1205、スタータ1206、1207、
主区画1203、副区画1208、1209は、それぞ
れマスタ・ポートを有し、実行を開始するとき、そのマ
スタ・ポートが割り振られる。マスタ・ポートは、区画
間接続を下位レベルで確立するのに必要である。各スタ
ータ1206、1207は、オペレーティング・システ
ム・プロセスであって、各プロセッサごとに1つのスタ
ータがある。そのマスタ・ポート名はローダには分かっ
ている。スタータ1206、1207は、ローダ120
5からのコマンドに応じて、それぞれ区画1208、1
209を起動する。ローダ1205は、主区画と同じ局
所アドレス空間に含まれていてもよく、異なるプロセッ
サのアドレス空間にあってもよい。親プロセス1202
は、(主区画1203中の)プログラムを呼び込むと
き、ローダをも同時に呼び込む。親プロセスは、ローダ
のマスタ・ポート番号(図17の「M2011」)を環
境1204を介して主区画に渡す。「環境」とは、環境
変数、外部ファイルその他の手段など、ポート番号を渡
すのに用いることのできる様々な機構のいずれかを意味
する。ローダ1205は各スタータを呼び出し、それに
ローダのマスタ・ポート名を渡す。次いで、スタータは
当該の各副区画を起動する。区画を起動するには、副区
画用のプログラム・スタックを作成し、エージェント・
プロセス用の活動化ブロックをスタックの一番下に置く
必要がある。副区画のエージェント・プロセスは、AG
T−WAIT状態で起動される。主区画及び副区画は、
あらかじめ供給されたローダ・マスタ・ポート名を使っ
てローダとの接続を確立し、当該区画のマスタ・ポート
名をローダに送る。次いで、ローダはポート名を他のす
べての区画に分配する。
【0056】好ましい実施例では、主区画を起動すると
き、プログラム中のすべての区画がロードされ、リンク
されるが、代替実施例では、遠隔プロシージャ呼出しが
アンロードされた区画に含まれるプロシージャを呼び込
むまで、ローディングを遅らせることが可能である(要
求ローディング)。この代替実施例では、各区画があら
かじめロードされた区画のマスタ・ポートを含むベクト
ルを維持する。遠隔プロシージャ呼出しを行おうとする
とき、まずクライエント区画がベクトルを調べて、目標
区画がロード済みであることを検証する。目標区画がロ
ードされていない場合は、呼出し区画内のロード機能か
らのコマンドに応じて、目標プロセッサのスタータが目
標区画を起動する。一時に1区画しか起動されないが、
それ以外の点では要求ローディングは、全区画の事前ロ
ーディングに対して好ましい実施例の場合と同じように
機能する。
【0057】好ましい実施例では、別々にコンパイルさ
れた各コード・モジュールを、性能その他の考慮に基づ
いてプロセッサに割り振る。ソース・コードの修正を避
けるため、割振りはプロシージャ・レベルでなくモジュ
ール・レベルで行う。モジュールを個々のプロシージャ
・レベルで割り振ることが望まれる場合、(大部分のコ
ンピュータ言語では)各プロシージャを別々にコンパイ
ルすることが可能である。代替実施例では、コンパイラ
指示をソース・コードに含めることができ、そうすれば
別々の区画で使用するため、1区画内の異なるプロシー
ジャを別々のモジュールにコンパイルできるようにな
る。
【0058】好ましい実施例では、本発明は、アクセラ
レータが主として従属システムとして機能する、汎用コ
ンピュータ・システムに接続された数値計算中心のアク
セラレータを容易にするために使用される。しかし、シ
ステム構成及び使用法には多くの代替実施例が可能であ
る。たとえば、すべてのプロセッサが同じで、それぞれ
が異なる局所データベースにアクセスできるようにする
こともできる。通信リンクは好ましい実施例で用いられ
るよりも遠くまたは近くに置くことができる。たとえ
ば、異なるプロセッサを様々なローカル・エリア・ネッ
トワーク技術のどれでリンクすることもできる。
【図面の簡単な説明】
【図1】本発明の好ましい実施例による、単一スレッド
・プログラムを実行するための多重プロセッサ・システ
ムの主なハードウェア構成要素を示す図である。
【図2】従来のプログラムが一連の入れ子式プロシージ
ャ呼出しを単一プロセッサ・コンピュータ・アーキテク
チャでどう実行するかを示す図である。
【図3】図2の従来のプログラムが、好ましい実施例に
よる多重プロセッサ・システムでどう実行されるかを示
す図である。
【図4】好ましい実施例による、遠隔プロシージャ呼出
しに関与する区画内の様々なユニットを示す図である。
【図5】好ましい実施例による、分散スタックを示す図
である。
【図6】好ましい実施例による、エージェント状況スタ
ックの構造を示す図である。
【図7】好ましい実施例による、エージェント相互間の
メッセージの構造を示す図である。
【図8】単一の遠隔プロシージャ呼出し及び戻りの諸段
階中の制御の移転を示す図である。
【図9】好ましい実施例による、単一の遠隔プロシージ
ャ呼出し及び戻りの一環としてCスタブ及びSスタブに
よって実行される諸段階の流れ図である。
【図10】好ましい実施例による、エージェントによっ
て実行されるAGENT−CALLに関係する諸段階の
流れ図である。
【図11】好ましい実施例による、エージェントによっ
て実行されるAGENT−WAITに関係する諸段階の
流れ図である。
【図13】好ましい実施例による、エージェントによっ
て実行されるAGENT−REPLYに関係する諸段階
の流れ図である。
【図14】好ましい実施例による、エージェントによっ
て実行されるAGENT−RETURNに関係する諸段
階の流れ図である。
【図15】好ましい実施例による、エージェントによっ
て実行されるAGENT−ACCEPT−RETURN
に関係する諸段階の流れ図である。
【図16】好ましい実施例による、遠隔プロシージャ呼
出し用の経路指定情報を維持するテーブルの構造を示す
図である。
【図17】好ましい実施例による、ローダ/スタータ機
構を示す図である。
【符号の説明】
100 多重プロセッサ・システム 101 汎用商業トランザクション・システム 102 複合命令セット(CISC)中央演算処理装置 103 メモリ 105 プロセッサ・インターフェース機構 108 バス・インターフェース 109 バス・インターフェース 121 数値計算アクセラレータ・システム 122 縮小命令セット(RISC)中央演算処理装置 123 メモリ 128 システム・バス/入出力チャネル・アダプタ 129 入出力装置アダプタ 130 入出力装置アダプタ
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成7年1月13日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図1】
【図2】
【図3】
【図7】
【図4】
【図5】
【図6】
【図8】
【図9】
【図10】
【図13】
【図11】
【図12】
【図14】
【図15】
【図16】 ─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成7年4月21日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】図面の簡単な説明
【補正方法】変更
【補正内容】
【図面の簡単な説明】
【図1】本発明の好ましい実施例による、単一スレッド
・プログラムを実行するための多重プロセッサ・システ
ムの主なハードウェア構成要素を示す図である。
【図2】従来のプログラムが一連の入れ子式プロシージ
ャ呼出しを単一プロセッサ・コンピュータ・アーキテク
チャでどう実行するかを示す図である。
【図3】図2の従来のプログラムが、好ましい実施例に
よる多重プロセッサ・システムでどう実行されるかを示
す図である。
【図4】好ましい実施例による、遠隔プロシージャ呼出
しに関与する区画内の様々なユニットを示す図である。
【図5】好ましい実施例による、分散スタックを示す図
である。
【図6】好ましい実施例による、エージェント状況スタ
ックの構造を示す図である。
【図7】好ましい実施例による、エージェント相互間の
メッセージの構造を示す図である。
【図8】単一の遠隔プロシージャ呼出し及び戻りの諸段
階中の制御の移転を示す図である。
【図9】好ましい実施例による、単一の遠隔プロシージ
ャ呼出し及び戻りの一環としてCスタブ及びSスタブに
よって実行される諸段階の流れ図である。
【図10】好ましい実施例による、エージェントによっ
て実行されるAGENT−CALLに関係する諸段階の
流れ図である。
【図11】好ましい実施例による、エージェントによっ
て実行されるAGENT−WAITに関係する諸段階の
流れ図である。
【図12】好ましい実施例による、エージェントによっ
て実行されるAGENT−REPLYに関係する諸段階
の流れ図である。
【図13】好ましい実施例による、エージェントによっ
て実行されるAGENT−REPLYに関係する諸段階
の流れ図である。
【図14】好ましい実施例による、エージェントによっ
て実行されるAGENT−RETURNに関係する諸段
階の流れ図である。
【図15】好ましい実施例による、遠隔プロシージャ呼
出し用の経路指定情報を維持するテーブルの構造を示す
図である。
【図16】好ましい実施例による、ローダ/スタータ機
構を示す図である。
【符号の説明】 100 多重プロセッサ・システム 101 汎用商業トランザクション・システム 102 複合命令セット(CISC)中央演算処理装置 103 メモリ 105 プロセッサ・インターフェース機構 108 バス・インターフェース 109 バス・インターフェース 121 数値計算アクセラレータ・システム 122 縮小命令セット(RISC)中央演算処理装置 123 メモリ 128 システム・バス/入出力チャネル・アダプタ 129 入出力装置アダプタ 130 入出力装置アダプタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ヨハン・ミカエル・マルベルグ イスラエル34754、ハイファ、ヴィトキ ン・ストリート 31番地 (72)発明者 ウリ・シャニ イスラエル17940、アディ、アディ 71番 地

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】複数の呼出可能プロシージャを有するプロ
    グラムを実行するための分散処理装置であって、 第1局所メモリに結合され、該第1局所メモリに含まれ
    るプロシージャを実行する第1プロセッサと、 第2局所メモリに結合され、該第2局所メモリに含まれ
    るプロシージャを実行する第2プロセッサと、 上記第1プロセッサと第2プロセッサの間でデータを通
    信する手段と、 上記第1局所メモリに含まれる上記プログラムの第1呼
    出可能プロシージャが、上記第2局所メモリに含まれる
    上記プログラムの第2呼出可能プロシージャを呼び出す
    ための手段と、 上記第2呼出可能プロシージャが、上記第1呼出可能プ
    ロシージャに代わって実行する一方で、上記第1局所メ
    モリに含まれる呼出可能プロシージャを呼び出すための
    手段とを含む、分散処理装置。
  2. 【請求項2】上記第2呼出可能プロシージャが上記第1
    局所メモリに含まれる呼出可能プロシージャを呼び出す
    ための上記手段が、上記第2呼出可能プロシージャが上
    記第1呼出可能プロシージャを再帰的に呼び出すための
    手段を含むことを特徴とする、請求項1の分散処理装
    置。
  3. 【請求項3】上記第1局所メモリに含まれ、それぞれが
    上記第1局所メモリに含まれるプロシージャのインスタ
    ンスの状態情報を含む1つまたは複数の活動化ブロック
    を含む、第1プログラム・スタックと、 上記第2局所メモリに含まれ、それぞれが上記第2局所
    メモリに含まれるプロシージャのインスタンスの状態情
    報を含む1つまたは複数の活動化ブロックを含む、第2
    プログラム・スタックとを含む、請求項1の分散処理装
    置。
  4. 【請求項4】上記第1プロセッサ中で上記プログラムの
    実行を開始するために、上記プログラムの外部プロシー
    ジャを呼び出す手段と、 上記第1呼出可能プロシージャが上記第2呼出可能プロ
    シージャを呼び出すための上記手段が、自動的にイネー
    ブルされるように、上記第1プロシージャと上記第2プ
    ロシージャの間に自動的にリンクを確立する手段と、 上記第2呼出可能プロシージャが上記第1呼出可能プロ
    シージャに代わって実行中に上記第1局所メモリに含ま
    れる呼出可能プロシージャを呼び出すための上記手段
    が、自動的にイネーブルされるように、上記第2プロシ
    ージャと上記第1局所メモリに含まれる呼出可能プロシ
    ージャの間に自動的にリンクを確立する手段とを含む、
    請求項1の分散処理装置。
  5. 【請求項5】上記第1局所メモリに含まれ、上記第2呼
    出可能プロシージャを表す、第1のCスタブ・モジュー
    ルと、 上記第2局所メモリに含まれ、上記第1呼出可能プロシ
    ージャを表す、第1のSスタブ・モジュールと、 上記第2局所メモリに含まれ、上記第1呼出可能プロシ
    ージャに代わって実行する一方で、上記第2呼出可能プ
    ロシージャが呼び出し得る、上記第1局所メモリに含ま
    れる上記のプロシージャを表す、第2のCスタブ・モジ
    ュールと、 上記第1局所メモリに含まれ、上記第2呼出可能プロシ
    ージャを表す第2のSスタブ・モジュールと、 上記第1呼出可能プロシージャが、第1局所呼出しを上
    記第1のCスタブ・モジュールに出すための手段と、 上記第1局所呼出しに応答して、上記第1のCスタブ・
    モジュールが、上記第1局所呼出しに含まれるデータを
    上記第1のSスタブ・モジュールに通信するための手段
    と、 上記第1のCスタブ・モジュールが上記第1局所呼出し
    に含まれるデータを上記第1のSスタブ・モジュールに
    通信するための上記手段に応答して、上記第1のSスタ
    ブ・モジュールが、上記第1呼出可能プロシージャに代
    わって第2局所呼出しを上記第2呼出可能プロシージャ
    に出すための手段と、 上記第2呼出可能プロシージャが、上記第1呼出可能プ
    ロシージャに代わって実行する一方で、第3局所呼出し
    を上記第2のCスタブ・モジュールに出すための手段
    と、 上記第3内部呼出しに応答して、上記第2のCスタブ・
    モジュールが、上記第3局所呼出しに含まれるデータを
    上記第2のSスタブ・モジュールに通信するための手段
    と、 上記第2のCスタブ・モジュールが上記第3内部呼出し
    に含まれるデータを上記第2のSスタブ・モジュールに
    通信するための上記手段に応答して、上記第2のSスタ
    ブ・モジュールが、上記第1呼出可能プロシージャに代
    わって実行する一方で、上記第2呼出可能プロシージャ
    が呼び出し得る上記第1局所メモリに含まれる上記プロ
    シージャに、上記第2呼出可能プロシージャに代わって
    出される第4局所呼出しを出すための手段とを含む、請
    求項1の分散処理装置。
  6. 【請求項6】コンピュータ・プログラムを多重プロセッ
    サ・システム上で実行する方法であって、 上記プログラムに含まれる第1組の呼出可能プロシージ
    ャを第1プロセッサに割り振る段階と、 上記プログラムに含まれる第2組の呼出可能プロシージ
    ャを第2プロセッサに割り振る段階と、 上記第1プロセッサで、上記第1組の呼出可能プロシー
    ジャに含まれる第1の呼出可能プロシージャを実行する
    段階と、 上記第1呼出可能プロシージャを上記第1プロセッサで
    実行する上記段階を実行する一方で、上記第2組の呼出
    可能プロシージャに含まれる呼出可能プロシージャを、
    上記第1呼出可能プロシージャから呼び出す段階と、 上記第1呼出可能プロシージャに代わって、第2の呼出
    可能プロシージャを、上記第2プロセッサで実行する段
    階と、 上記第2呼出可能プロシージャを上記第2プロセッサで
    実行する上記段階を実行する一方で、上記第1組の呼出
    可能プロシージャに含まれる呼出可能プロシージャを、
    上記第2呼出可能プロシージャから呼び出す段階とを含
    む方法。
  7. 【請求項7】複数の呼出可能プロシージャを有する単一
    スレッド・コンピュータ・プログラムを実行する方法で
    あって、 上記プログラム中の上記複数の呼出可能プロシージャの
    それぞれを、複数組の呼出可能プロシージャのうちの1
    組に割り振る段階と、 上記複数組の呼出可能プロシージャのうちの第1組の呼
    出可能プロシージャを多重プロセッサ・コンピュータ・
    システムの第1プロセッサの第1局所メモリに記憶する
    段階と、 上記複数組の呼出可能プロシージャのうちの第2組の呼
    出可能プロシージャを多重プロセッサ・コンピュータ・
    システムの第2プロセッサの第2局所メモリに記憶する
    段階と、 上記プログラムを多重プロセッサ・システム上で実行す
    る段階とを含み、 上記実行段階が、 a)上記第1組中の少なくとも1つのプロシージャが上
    記第2組中のあるプロシージャを呼び出すように、上記
    第1組の呼出可能プロシージャに含まれる呼出可能プロ
    シージャを上記第1プロセッサ上で実行する段階と、 b)上記第2組中の少なくとも1つのプロシージャが上
    記第1組中のあるプロシージャを呼び出すように、上記
    第2組の呼出可能プロシージャに含まれる呼出可能プロ
    シージャを上記第2プロセッサ上で実行する段階とを含
    む、 方法。
  8. 【請求項8】複数の呼出可能プロシージャを有し、最初
    に単一処理システムで実行されるように書かれた単一ス
    レッド・コンピュータ・プログラムを、多重プロセッサ
    ・システムで実行するように適合させる方法であって、 第1組の呼出可能プロシージャを含む、上記コンピュー
    タ・プログラムの第1区画を作成する段階と、 第2組の呼出可能プロシージャを含む、上記コンピュー
    タ・プログラムの第2区画を作成する段階とを含み、 上記第1組と第2組が共通の要素を含まず、 上記第1組の呼出可能プロシージャ中のある呼出可能プ
    ロシージャが、上記第2組の呼出可能プロシージャ中の
    ある呼出可能プロシージャへの呼出しを含み、 上記第2組の呼出可能プロシージャ中のある呼出可能プ
    ロシージャが、上記第1組の呼出可能プロシージャ中の
    ある呼出可能プロシージャへの呼出しを含み、 さらに、上記第1組中のプロシージャから上記第2組中
    のプロシージャへの局所呼出しを受け取る手段を、上記
    第1区画に入れる段階と、 上記第1組中のプロシージャに代わって、上記第2組中
    のプロシージャに局所呼出しを出す手段を、上記第2区
    画に入れる段階と、 上記第2組中のプロシージャから上記第2組中のプロシ
    ージャへの局所呼出しを受け取る手段を、上記第2区画
    に入れる段階と、 上記第2組中のプロシージャに代わって、上記第1組中
    のプロシージャに局所呼出しを出す手段を上記第1区画
    に入れる段階とを含む方法。
  9. 【請求項9】多重プロセッサ・コンピュータ・システム
    上で実行するためのプログラム製品あって、 単一スレッド・モードで実行するためのコンピュータ・
    プログラムと、 複数の呼出可能プロシージャを含む、上記多重プロセッ
    サ・システムの第1プロセッサで実行するための、上記
    コンピュータ・プログラムの第1区画と、 複数の呼出可能プロシージャを含む、上記多重プロセッ
    サ・システムの第2プロセッサで実行するための、上記
    コンピュータ・プログラムの第2区画と、 上記第1区画に含まれ、上記第2区画中の呼出可能プロ
    シージャに呼出しを出す手段を有する、第1呼出可能プ
    ロシージャと、 上記第2区画に含まれ、上記第1呼出可能プロシージャ
    に代わって実行する一方で、上記第1区画に含まれる呼
    出可能プロシージャに呼出しを出す手段を有する、第2
    呼出可能プロシージャとを含むプログラム製品。
JP4074453A 1991-04-16 1992-03-30 分散処理のための装置、方法、及びプログラム製品 Pending JPH07306837A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IL97894 1991-04-17
IL97894A IL97894A0 (en) 1991-04-17 1991-04-17 Multi-processor computer system

Publications (1)

Publication Number Publication Date
JPH07306837A true JPH07306837A (ja) 1995-11-21

Family

ID=11062277

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4074453A Pending JPH07306837A (ja) 1991-04-16 1992-03-30 分散処理のための装置、方法、及びプログラム製品

Country Status (8)

Country Link
EP (1) EP0509946A3 (ja)
JP (1) JPH07306837A (ja)
KR (1) KR950014163B1 (ja)
CN (1) CN1042979C (ja)
BR (1) BR9201274A (ja)
IL (1) IL97894A0 (ja)
TW (1) TW253041B (ja)
UY (1) UY23398A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2102883A1 (en) * 1993-02-26 1994-08-27 James W. Arendt System and method for lazy loading of shared libraries
US6470398B1 (en) * 1996-08-21 2002-10-22 Compaq Computer Corporation Method and apparatus for supporting a select () system call and interprocess communication in a fault-tolerant, scalable distributed computer environment
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US10631246B2 (en) * 2011-02-14 2020-04-21 Microsoft Technology Licensing, Llc Task switching on mobile devices

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61283955A (ja) * 1985-06-11 1986-12-13 Nec Corp 密結合型マルチ・プロセツサ・システムのタスク制御方式

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3548384A (en) * 1967-10-02 1970-12-15 Burroughs Corp Procedure entry for a data processor employing a stack
JP2518293B2 (ja) * 1987-07-24 1996-07-24 日本電気株式会社 デ−タフロ−プロセツサ
US4949255A (en) * 1988-09-07 1990-08-14 International Business Machines Corp. Message interface and method for recursive calling between interpretive and compiled computer processes
CA2061117C (en) * 1991-12-02 1998-09-29 Neta J. Amit Apparatus and method for distributed program stack
JPH1029938A (ja) * 1996-07-17 1998-02-03 Maruha Corp 虚血性眼疾患の予防および/または治療剤

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61283955A (ja) * 1985-06-11 1986-12-13 Nec Corp 密結合型マルチ・プロセツサ・システムのタスク制御方式

Also Published As

Publication number Publication date
KR950014163B1 (ko) 1995-11-22
CN1042979C (zh) 1999-04-14
TW253041B (ja) 1995-08-01
EP0509946A2 (en) 1992-10-21
UY23398A1 (es) 1992-04-21
KR920020337A (ko) 1992-11-21
BR9201274A (pt) 1992-12-01
CN1065942A (zh) 1992-11-04
EP0509946A3 (en) 1994-11-30
IL97894A0 (en) 1992-06-21

Similar Documents

Publication Publication Date Title
US5659701A (en) Apparatus and method for distributed program stack
CN100570565C (zh) 在管理程序中提供基于策略的操作系统服务的方法和系统
US7539989B2 (en) Facilitating intra-node data transfer in collective communications
JP3771957B2 (ja) プロセッサ・アーキテクチャにおける分散制御のための装置および方法
US8972699B2 (en) Multicore interface with dynamic task management capability and task loading and offloading method thereof
JP5366552B2 (ja) 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム
JP2677744B2 (ja) 分散メモリ式デジタル計算システム
JP2644780B2 (ja) 処理依頼機能を持つ並列計算機
US10620988B2 (en) Distributed computing architecture
US20080250414A1 (en) Dynamically Partitioning Processing Across A Plurality of Heterogeneous Processors
JP2002505462A (ja) ネットワーク上における動的分散型計算のための方法及び装置
AU603876B2 (en) Multiple i/o bus virtual broadcast of programmed i/o instructions
JPH1078873A (ja) エミュレーション・システムで非同期信号を処理する方法
EP0614139A2 (en) External procedure call for distributed processing environment
US20080134187A1 (en) Hardware scheduled smp architectures
Karamcheti et al. Runtime mechanisms for efficient dynamic multithreading
JPH07306837A (ja) 分散処理のための装置、方法、及びプログラム製品
JP3639366B2 (ja) アドレス空間共有システム
US6865579B1 (en) Simplified thread control block design
EP1131703A1 (en) Concurrent processing for event-based systems
JPS62180455A (ja) 多重処理装置
JP2795312B2 (ja) プロセス間通信スケジューリング方式
van Dijk The design of the EMPS multiprocessor executive for distributed computing
JPS62221041A (ja) 仮想計算機システムにおけるデイスパツチ制御装置
MURAKAMI et al. Load distribution system of PIE64