JPH08502612A - データ処理システムおよびオペレーティング・システム - Google Patents

データ処理システムおよびオペレーティング・システム

Info

Publication number
JPH08502612A
JPH08502612A JP6510792A JP51079294A JPH08502612A JP H08502612 A JPH08502612 A JP H08502612A JP 6510792 A JP6510792 A JP 6510792A JP 51079294 A JP51079294 A JP 51079294A JP H08502612 A JPH08502612 A JP H08502612A
Authority
JP
Japan
Prior art keywords
node
data processing
processing system
processor
code
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
JP6510792A
Other languages
English (en)
Other versions
JP3722156B2 (ja
Inventor
ヒンスレイ,クリストファー,アンドリュウ
Original Assignee
タオ システムズ リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by タオ システムズ リミテッド filed Critical タオ システムズ リミテッド
Publication of JPH08502612A publication Critical patent/JPH08502612A/ja
Application granted granted Critical
Publication of JP3722156B2 publication Critical patent/JP3722156B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 データ処理システムは複数の個別的コード・セグメントを用いており、これらセグメントは固有で自律的なツールを形成し、これらツールはプロセスをロードする時または実行する時にのみバインドされて完全な実行可能プロセスになる。これにより、プロセス・コードを短くすることができ、必要とするツールを必要時にだけローカル・メモリに入れたり、出したりすることができる。システムはプロセッサ・ノードが相互連結されたアレイ(配列)にすることができ、プロセスをノード間で自動的にかつユーザから透過の形で並列様式でアロケートするので、利用可能な処理能力が最も効率よく利用されることを保証する。ツールは、いろいろなハードウェア・アーキテチャ間の移植を可能にするバーチャル・コードでストアされる。

Description

【発明の詳細な説明】 データ処理システムおよび オペレーティング・システム 本発明はデータ処理システムに関し、さらには、データ処理システムを動作さ せるためのオペレーティング・システムに関する。特に、本発明はコンピュータ のオペレーティング・システムに関する。 コンピュータまたはコンピュータ・システムが機能するためには、1つまたは 2つ以上のプロセッサ、入出力手段、メモリおよび各種周辺デバイスなどのハー ドウェア、およびハードウェアをなんらかの方法で実行させるオペレーティング ・プログラムと、オペレーション(操作、演算など)を実行するようにオペレー ティング・プログラムに指示する上位レベルのプログラムとの両形体になったソ フトウェアを備えている必要がある。多くのオペレーティング・システムが設計 されているが、これらは利用可能な種々のプロセッサから可能な限り最良のパフ ォーマンスを引き出すことを試みている。これらのオペレーティング・システム の多くは、1つの特定のプロセッサに対して特有なものとなっている。さらに、 これらは、1つまたはわずかの処理言語しかサポートしていない。 本発明は、改良したコンピュータおよびコンピュー タ・オペレーティング・システムを実現することを目的としている。 本発明によれば、ネットワーク内にノードとして相互結合された複数のデータ ・プロセッサを備えたデータ処理システム(data processing system)が提供さ れ、そのネットワークはプロセスを次のように実行するように構成されている。 すなわち、第1ノードは、あるプロセスを実行する命令を受け取ると、その時点 でそのプロセスを実行するのに最も適しているのは、そのノード自身であるか、 隣接ノードであるかを判断し、その判断に基づいてそのプロセスをそのノード自 身のプロセッサに実行させるか、特定の隣接プロセッサに実行させるかを選択す るようになっている。 一実施例では、第1ノードは、プロセスの実行に必要な処理スペース(空間) を知らせるメッセージを各隣接ノードに送ることができる。また、第1ノードは 、そこに十分なスペースが残っているかどうかを自身でも判断し、各隣接ノード は第1ノードに対する応答として、スペースが使用可能であるかどうかを示す情 報を返すように構成されており、第1ノードはその応答を自身の判断と比較し、 最もスペースが残っているノードへプロセスを引き渡すか、自身でプロセスを実 行するようになっている。 別の実施例では、より高い「パワー・レーティング」(power rating)をもつ ノードが選択されるように なっている。ここで、パワー・レーティングとは、ノードの1秒あたりの実効オ ペレーション数をそのノードで実行されるプロセス数で除し、そのノードで利用 可能なオフチップ通信速度の関数倍したレーティングのことである。他の方法や 方式を用いて、この判断を行うことも可能である。 本発明の第2の形態によれば、1つまたは2つ以上のデータプロセッサと、複 数のコード・セグメント(code segments)と、選択された複数のコード・セグ メントを結び付け(bind)て、1つまたは2つ以上のプロセッサに実行させる実 行可能タスク(executable task)にする手段とを備えたデータ処理システムが 提供される。このデータ処理システムでは、個々のコード・セグメントは、タス クのロード時または実行時にだけ結び付けられて、完全な実行可能タスクになる ようになっている。 以下、添付図面を参照して本発明の種々実施例について説明するが、これらは 単なる例にすぎない。添付図面において、 第1図は、コンピュータ・システムのプログラム編成を示す系統図である。 第2図は、第1図の編成の階層構造を示す図である。 第3図は、コンピュータ・システムのセットアップ時の、いくつかの関連マイ クロプロセッサ相互間の関 係を示す図である。 第4図は、処理の後続ステージにおける、第3図と同じ関係を示す図である。 第5図は、プロセス・アロケーション(割振り)のためのフローチャートを示 す系統図である。 以下では、複数のプロセッサをもつコンピューティング・ネットワーク(comp uting network)について説明するが、これらのプロセッサは、例えば、同一ウ ェファまたはチップ上といったように、同一近隣エリアに配置しておくことも、 あるいは導線による配線(hard wiring)、光ファイバ、長距離通信回線、ある いは他の手段によってリンク(相互連結)されたネットワーク内に分散配置して おくことも可能である。ここで説明しているシステムは十分に柔軟性があるので 、これらの構成や他の構成のいずれでも構わない。システムはプロセッサが1つ だけの場合もある。1つまたは複数のプロセッサは、オペレーティング・システ ムの制御の下でオペレーション(操作や演算)、プログラムおよびプロセスを実 行するように構成されている。このオペレーティング・システムによれば、バー チャル(仮想)プロセッサ(virtual processor)として知られ、定義済み独自 の言語をもっている想像上のプロセッサ用に書かれたプログラムを作ることが可 能である。このバーチャル・プロセッサによれば、バーチャル・プロセッサ用に 書かれたプログラム・ コードはロード時にだけ各プロセッサの固有のコード(native code)に翻訳(t ranslate)されるので、どのタイプのターゲット・プロセッサ(target process or)を使用することも、いろいろなタイプのプロセッサを組み合わせて使用する ことも可能である。従って、実行可能ファイルは、修正または再コンパイルしな くても、サポートされるどのプロセッサへも転送することができる。本発明のシ ステムに適したプロセッサの代表例としては、Inmos T800 Transputer、Motorro la680X0、Intel 80386/80486、TM534C40 AchimedesARMおよびSUN SPARCがある。 他のプロセッサも本発明のシステムに適していることはもちろんである。このオ ペレーティング・システムは、2つ以上のオペレーションを同時に実行できるよ うな並列処理(parallel processing)向きに改造されている。これは、どの時 点でも1つのオペレーションだけが実行されるようにデータとオペレーションを パイプライン化する必要があった従来のコンピューティング・システムとは対照 的である。マルチタスキング(multi-tasking)機能とマルチユーザ(multi-use r)機能も含まれている。 システムはデータ流れ駆動型(data flow-driven)であるので、基本的には複 数のコード・セグメントまたはツールを含んでいるが、これらはロード時にだけ 完全な実行可能なタスクにバインド(結合)される。 従って、これらのツールの各々は非常に短くすることができ、ツール自体は、そ の簡単でほとんどありふれたものにできる。比較のために述べておくが、従来の コンピューティングでは、ライブラリや関数などのルーチンがバインドされるの は、リンキング(linking)として知られている、プロセス内のコンパイル・ス テージの直後においてであることに注目されたい。その結果得られるファイルは 、多量で巨大で扱いずらい、完全な自己完結(self-contained)型の実行可能イ メージであり、ロード時の修正がほとんど不要になっている。このファイルはプ ロセッサ間で移植不能(not portable)であり、メモリ容量の小さいシステムの ような、コンポーネントに変更されたときその変更コンポーネントに適応させる ことが容易でない。さらに、そのコンポーネント・パーツを他のタスク用に再使 用することが不可能であり、事実、変更がまったく不可能になっている。本発明 で使用される小さなコンポーネントは、最後の瞬間にだけ寄せ集められてオペレ ーションが作られるので(ジャスト・インタイム・プロセス(just in time pro cess))、完全に移植可能であることはもちろんであり、プロセスが異なるジョ ブを実行している場合であっても、2つまたはそれ以上のプロセッサ間で同時に 共有することも可能である。ツールには、特定のアプリケーション用に設計され たものと、特定のアプリケーションを意識しない で設計されたものとがある。遅延バインディング・プロセス(late binding pro cess)によると、プログラム・コンポーネントを実行時にバインド(結び付け) することも可能である。従って、(公称的に)容量の大きい大型アプリケーショ ンは、事実上、メモリ容量の小さいシステムで実行できるので、アプリケーショ ンは、任意の1時点で必要になる特定のコード・セグメント(1つまたは複数) だけをメモリで利用できるように選択することができる。なお、これについては 後述する。 システム内のデータは、メッセージの形でコード・コンポーネント間で受け渡 しされる。メッセージを送受信できるコード・コンポーネントはプロセス(proc ess)と呼ばれ、ツールの集合と、これらのツールのバインディング・ロジック (binding logic)および処理されるデータとから構成されている。本システム は第1図に概略図で示されているが、同図には、プログラム・コードの中央カー ネル(central kernel)が示されている。カーネルは1つの「ブロック」であり 、ネットワーク内のすべてのプロセッサによって使用される基本的オペレーティ ング・システムである。カーネルは8〜16キロバイトになっているのが代表的で ある。カーネルの外側には、概略図で示すように、複数のツール・オブジェクト (tool object)2があり、これはプロセスを構成する集合になっている。プ ログラム・コードの第3レベルはツール3で示されている。代表的なプロセスは 図に矢印で示されている。このように、P1と名づけたプロセスは、カーネル・コ ード1と2つのツール・オブジェクトM1,M2から構成されている。これらのツー ル・オブジェクトの各々は、長さが数百バイトにすぎないが、ツール3の1つま たは2つ以上を利用することができる。この例では、ツール・オブジェクトM1は ツールT1,T2およびT3を利用し、ツール・オブジェクトM2はT3(再利用),T4,T5 およびT6を利用している。従って、図に示すように、相対的に複雑なプロセスま たはプログラムが、相対的に小さい、複数のセグメントを使用することによって 実行することができ、これらのセグメントは、その必要とする時にだけ寄せ集め られる。各プロセスを別々のプロセッサ上に置いておくと、2つ以上のプロセス を同時に実行することが可能である。プロセスの実際の配置は以下でその概要を 説明している自動的方法(automatic method)によって行われるが、この方法は ユーザからも、実際にシステム全体からも透過(transparent)になっている。 従って、最適な負荷バランス化(load balancing)と通信効率が保証される。そ の結果として、通信し合う多数のプロセスを、自動的に並列に実行させることが できる。 システムの3つの基本的なコンポーネント・オブジェクトが第2図に示されて いる。これらは、デー タ・オブジェクト、ツール・オブジェクト(ツール)およびプロセス・オブジェ クトからなっている。プロセス・オブジェクト(process object)は、種々のツ ール・オブジェクトを呼び出し(call)するハーネス(harness−引き具)の働 きをする。プロセスは、基本的には、アクティビティ(activity)のロジック・ フロー(論理の流れ)を指示して、ツール・オブジェクトがデータに対して実行 するように指示するものである。従って、プロセス・オブジェクトは、第2図に 示す階層構造の最上位に置かれている。ツール・オブジェクト(tool object) は従来の関数呼び出し(functional call)またはサブルーチンに対応するもの である。これは参照(reference)によってのみ使用できるので、プロセス・オ ブジェクトなどの、他のなんらかによってアクティベート(activate−起動、実 行開始、活性化)させる必要がある。これは、C言語の関数がコードのメイン・ ボディ(main body)から呼び出されるのと似ているが、主な違いは、本発明の システムでは、各コード・セグメント、つまり、ツールが完全に独立しているこ とである。最後に、データ・オブジェクト(data object)はデータ・ファイル に対応するものである。データ・ファイルにはそのファイルに関する情報と、フ ァイルの処理方法に関する情報を入れておくことができる。この情報には例えば 、データ構造を操作するときに使用されるツールを指し 示す情報と、そのファイルに関係するローカル(局所)データを含めることが可 能である。プロセスは、ASCIIデータ・ストリームのような、公開的に(public )定義された入出力をもつことができる。従って、プロセスは、その作成者だけ でなく、第三者のプロセスによっても使用することができる。公開的になってい ないプロセスは、私的(private)の入出力構造をもつことになるので、入出力 インタフェースの細部が公開的に利用可能にされない限り、特定のプログラムの 作成者だけが自由に使用できるにすぎない。1つまたは2つ以上のプロセスを結 合して、完成された作業ジョブ(complete job of work)であるアプリケーショ ンを作ることができる。なお、アプリケーションは2つまたはそれ以上のプロセ ッサ上で実行させることが可能であることを注意されたい。 上述したように、アプリケーションは多重タスキング処理および/または並列 処理が可能である。プロセスは他のプロセスや、子プロセス(child process) をアクティベートすることができ、アクティベートされるこれらプロセス自体も 子(孫)プロセス(grandchild process)をアクティベートすることができる。 以下、同様である。これらのプロセスは利用可能なプロセッサ・ネットワーク全 体にわたって動的に分散化されるが、アプリケーションまたはプログラマには実 際の分散化は知らされない。プロセス間の通信 は、親子階層(parent-child hierarchy)に基づいて行われる。「マスタ」とな るノードまたはプロセッサはそれ自体では存在しないので、かなり多くのプロセ ッサからなる、任意のトポロジ構造(topology)の使用が可能である。第5図は 、ネットワーク内の種々のプロセッサ間にプロセスを分散するときの、1つの可 能なアルゴリズムを示している。 親プロセス(parent process)が子プロセスと共同で処理することを望んでい るとき、メッセージがまず最初に第1プロセッサ、特に、そのプロセッサ上のカ ーネル・プロセスに渡される。このプロセスは、プロセッサとの間で受け渡しさ れるメッセージを処理し、プロセス・コントロール(process control)/メッ セージ・スイッチャ(message switcher)の働きをする。"A"と名づけた、第1 プロセッサのカーネルは、次に、そのプロセッサの「パワー・レーティング」( power rating)を計算する。パワー・レーティングとは、基本的には、その特定 プロセスを実行するためのそのプロセッサ内のメモリ容量またはスペース量のバ ロメータである。パワー・レーティングは、1秒当りのプロセッサの実効オペレ ーション数をそのプロセッサ上で実行されるプロセス数で除し、そのプロセッサ で利用できるオフチップ通信速度の関数倍したそのプロセッサのレーティング( 定格)と定義することができる。パワー・レーティングは他の方法で求めること も可能である。例えば、特定のプロセスを実行するためのメッセージは、そのプ ロセスで必要とするバイト数が付随している。従って、パワー・レーティングに は、そのバイト数がそのプロセッサのローカル・メモリに残っているかどうかの 判断を含めることが可能である。このメモリは、トランスピュータ(transputer )のようなプロセッサでは、オンチップ・メモリ(on-chip memory)になってい るが、オフチップ(off-chip)である場合もある。次に、ローカル・カーネルは 、各自のパワー・レーティングを計算するように、ネットワーク内のすべての隣 接プロセッサのカーネルに指示する(ここで、隣接とは、トポロジ的には隣り合 っているが、物理的には、各プロセッサが遠く離れた位置にある場合もあること を意味することを覚えていてほしい)。次に、隣接プロセッサの各々は、それぞ れのパワー・レーティングを示すメッセージを親プロセッサAに送り返す。次に 、Aのメール・ガーディアン(mail guardian-メール管理プログラム)はパワー ・レーティングをすべて比較し、A自身のパワー・レーティングがその隣接プロ セッサのそれより大または等しいかを判断する。もし、そうであれば、Aのメー ル・ガーディアンは自身がプロセスを引き受けることを決定する。これは、子プ ロセスをインストール(導入)するように自身の動的バインダ(dynamic binder −動的結合プログラム)とトランスレータ(翻訳プロ グラム)(以下参照)に指示することによって行われ、命令側プロセッサにメッ セージを送って、受信側プロセッサ上の固有のメールボックス・アドレス(uniq ue mail box address)を知らせる。プロセッサAのパワー・レーティングがそ の隣接プロセッサのそれより大でも、等しくもなければ、最大のパワー・レーテ ィングをもつプロセッサが選択されて、そのプロセスを引き受けることになる。 全てのパワー・レーティングが等しければ、プロセッサAがそのプロセスを引き 受けることになる。別の方法として、隣接プロセッサを任意に選択することも可 能である。そのプロセスが別のプロセッサにアロケート(割振り)されていれば 、プロセッサAは、"take X Bytes,processname,parent mail box no."(Xバ イトが必要、プロセス名、親メールボックス番号)を伝えるメッセージをそのプ ロセッサへ送付する。 あるプロセッサが子プロセスを引き受けていることが分かったときには、その 動的プロセス・アロケーション(process allocation dynamics)を中止して、 そのプロセスを実行させることが可能である。しかし、同じアロケーション・シ ーケンスを新しいプロセッサから繰り返すのが、もっと一般的である。つまり、 第5図に示すフローチャートでは、新たに選択されたプロセッサ、つまり、プロ セッサBがプロセッサAとなり、サイクルは、パワー・レーティングの計算 を隣接プロセッサに要求するステップから再び開始される。従って、現在のアク ティビティが最小であり、従って、プロセスを自動的に実行するための容量が最 大であるローカル・プロセッサを見つける探索が、起点となるマスタ親(origin ating master parent)であるセンタ・ポイントからあふれ出ていく(flood out )傾向がある。これにより、プロセッサのネットワーク間の負荷バランス化と密 結合(tightly bound)プロセス間のローカル通信が十分に保証されることにな る。さらに、上記から理解されるように、マスタ・ノードが必要でないので、ど のネットワークにおいても、どのプロセッサでも、任意の時点で実行されるプロ セスは1つだけであるのが通常であり、タイプが同一であれば、どの隣接プロセ ッサでも同じである。別の方法として、かなりの実施例において、ユーザは、そ れを望むならば、どのプロセッサにまたはどのタイプのプロセッサにプロセスを 実行させるかを選択することができる。例えば、ネットワークに2タイプのプロ セッサがある場合に、例えば、メモリ容量によっては、これらのタイプの一方が 他方よりも特定のプロセスを実行するのに適している場合がある。この場合、ユ ーザは、このプロセスを特定タイプのプロセッサに実行させることを指定するこ とができる。また、プロセスは、従ってプログラマは、そのプロセスがネットワ ーク内のどこに置かれているかを正確に知っている必要 がないということも理解されよう。メッセージはデータまたはコードいずれか一 方をプロセッサ間で伝達できるので、メッセージを実行可能コードの形体にする ことができる。 別の実施例として、プロセッサは、その「パワー・レーティング」に関する情 報をプロセッサ相互間で継続的に受け渡すことができるようしてもよい。これは 、通常の通信過程では、受け渡しされるメッセージに入れて組込み情報(embedd ed information)として受け渡すことができるが、メッセージがプロセッサ間で 受け渡しされないような期間には、一定のパワー・レーティング情報の交換だけ 行うので、未使用の通信時間を効率よく使用することができる。この場合、各プ ロセッサは、例えば、ルックアップ・テーブル(look-up table)をもつことが できる。このテーブルは、そのプロセッサのすぐ隣のプロセッサのステータス( 状況)と自身の当面のステータス(immediate status)を示している。パワー・ レーティング情報は、例えば、プロセッサ間で受け渡しされる通常の各メッセー ジの最後または先頭の1バイトまたは数バイトの形で受け渡すことができる。こ の実施例では、プロセスを実行する要求を受け取ったとき、プロセッサは、その プロセスを自身で引き受けるかどうか、あるいはそれを隣接プロセッサへ渡すか どうかを即時に判断できるので、それがどのプロセッサであるかを知る ことになる。要求を隣接プロセッサへ渡すと判断したときは、その要求が送り出 され、受信側プロセッサは、そのプロセスを自身で実行するのに最も適している と判断する時点まで、判断プロセスを再び開始する。 プロセスが取り得るステート(状態)には次の5つの区分がある。すなわち、 1.処理活動中(actively processing) 2.入力待ち(waiting for input) 3.取り消し(withdrawing) 4.非アクティブ状態(inactive) 5.休眠状態(asleep) ステート1と2は解説の必要がないので説明を省略する。ステート3は、プロ セスが取り消しコマンドを受け取ると発生する。このステートにあるときは、プ ロセスは、非アクティブ状態(非活動状態)になるために必要なアクティビティ を実行する。そのようなアクティビティとしては、例えば、緊急メールの処理、 もしいれば、その子プロセッサすべてへの取り消しメッセージの送付、一般的に は、非アクティブ状態になるために都合のよいステートの準備などがある。その プロセスがアプリケーションの最上位レベルを構成していれば、その正確な現ス テートをメッセージとしてディクス・ファイルにセーブしておくのが普通である 。ステート4は、プロセスが事実上終了しているこ とを示している。従来のシステムでは、これは、メモリ内にプロセスが存在しな くなり、そのメモリ・スペースが次の使用に備えてクリアされることを意味して いる。しかるに、本発明によるシステムでは、プロセスは非アクティブ状態とマ ークされるが、そのメモリ・スペースが実際に必要でないか、あるいはその必要 がなくなるときまで、プロセスは除去されない。従って、同じローカル・プロセ ッサの別のプロセスはステート4にある非アクティブ・プロセスを参照すれば、 そのプロセスは即時にステート2に移ることができる。ステート5は、例えば、 プロセスがディスクまたは他の記憶媒体上のような永久記憶(permanent store )に入っているときのプロセスの状態である。プロセスがステート4の非アクテ ィブ状態にあり、そのメモリ空間が別のプロセス用に必要であるときは、そのプ ロセスはステート4からステート5へ移る。つまり、プロセスはディスク上にス トアされ、ローカル・プロセッサのメモリから除去される。ステート5にあるプ ロセスが特定のローカル・プロセッサで必要になったときには、そのプロセスは 永久記憶からロードされる。この場合、プロセッサはメールを利用することがで きる。このメールは3つのソースからのものが使用できる。すなわち、ディスク 上のプロセスのステートから、あるいはプロセス自身のヘッダ、つまり、プロセ スの一部を構成する情報から、あるいはプ ロセスを最初の場所にロードさせる親プロセスからのメールである。この結果、 プロセスはステート4からステート2へ移って、それからステート1へ移ること ができる。 「ディスク」という用語が上で用いられているが、これは、物理的記憶媒体上 に格納されたデータ・オブジェクト(データ対象物)「ファイル」の集まりを収 容しているデバイスのことである。 上述したように、すべてのプロセスには、メールボック機能(mailbox facili ties)が自動的に与えられるので、プロセスはメールを読み取って、メール・ア ドレスが分かっている他のプロセスへメールを送付することができる。このプロ セスとしては、例えば、子プロセス、プロセスの親、例えば、ディスク・ドライ ブやディスプレイのような、名前付き資源(named resource)、記憶アドレス全 体が分かっている非アクティブ状態のプロセス、メールボックス・アドレスが分 かっている他のプロセスがある。アクティブ・プロセスがメールを非アクティブ ・プロセスへ送付した場合に、そのメールで非アクティブ・プロセスを子プロセ スとして実行させることができるが、目的プロセス(target process)が目覚め るまでそのメールをストアしておくこともできる。 アクティブ状態の2つのプロセス間で受け渡しされるメッセージは、次のよう な構造にすることが可能で ある。 ビット数 説明 32 メッセージ長(バイト数) 32 メッセージ・タイプ・マスクーメッ セージのタイプ。例:コード、デバッ グ情報、エラー・データ 32 メッセージ・データ・オフセット− メッセージの先頭を指しているので、 実際にDTM (下記参照)を固定長にし ないことが許される 32 次デスティネーション・ポインタ (NDP)一応答が送られるべき宛先のア ドレスを示している。 64 発信側メールボックス(Originator Mailbox) 64 デスティネーション・ターゲット・ メールボックス(Destination Target Mailbox - DTM)−プロセスIDのリスト 64 2番目のDTM ‥ (2番目以降のDTM) ‥ ‥ (xxx) メッセージ・データ メッセージ長は、メッセージ全体の長さのバイト数である。 次デスティネーション・ポインタが指しているデスティネーション・ターゲッ ト・メールボックスが"0"であれば、応答の必要がないか、あるいは応答が予期 されない。メッセージのデスティネーション・メールボックスの配列(array) が前方(onward)にあっても、そのことは、特定のメッセージが転送されること を意味しない。有効なDTMが配列にあるときは、メッセージに対する応答がその プロセスへ転送されることを意味する。メッセージが応答を必要としない単純な ケースでは、DTM配列には、3つの値が入れられる。それは送信側プロセス・メ ールボックス、ターゲット・プロセス・メールボックス、0である。メッセージ をターゲットID 0へ送信しようとする場合は、そのメッセージはシステム・メー ル・マネージャ(systemmail manager)へ発送される。メッセージが送信側に対 する応答を必要とする場合は、そのメッセージが有するDTM配列は4つの値から なっている。それは送信側メールボックス、デスティネーション・メールボック ス、送信側メールボックス、0である。 データ・ストリームを処理するプロセスのパイプラインは、(処理パイプの数 )+送信側メールボックスとパイプ内のプロセスの1つである最終的デスティネ ーション(宛先)とを含む2エレメント、をもつDTM配列を受信する。 「フォーク」パイプ方式('Forked' pipe scheme)が 可能であるが、この方式によると、一方のプロセスがアクティブ状態でフォーク (fork)を作成し、他方のプロセスがアクティブ状態でそのフォークとあとで結 合できることが必要である。単純なリニア・パイプ(linear pipe)はUNIXフィ ルタ(これは同業者にとって公知である)と同じようなやり方で働くが、並列に 実行可能で、ネットワーク内に持続しておくことができる、再使用可能なツール ・オブジェクトだけを必要としている。 フォークおよび結合メッセージング(forked andjointed messaging)は、単 純な入出力フィルタ・ツールと共にシェル(shell)を使用してプログラミング を行うと、自動的に処理される。 デスティネーション・プロセスのメモリ空間に置かれるとメッセージ構造体は 、さらにメッセージ長の前に付けたされた2つの追加エレメントを有する。 ビット数 説明 32 順方向リンク・ポインタ 32 逆方向リンク・ポインタ 32 メッセージ長(バイト数) 32 メッセージ・タイプ・マスク 以下前記と同じ 順方向リンクと逆方向リンクは、プロセスの着信メールボックス(incoming m ailbox)に対してリンクされたメッセージ・リストを構成する他のメッセージが あれば、それらを指している。 メールはプロセッサによって次の2ステージで読み取られる。つまり、メッセ ージ用に動的に割り振られたバッファ内から、メッセージのサイズが最初に読み 取られ、次にメッセージの残り部分が読み取られる。このメカニズムによると、 障害のあるノードや何らかの理由で、メッセージを受信できないカーネルを迂回 してメッセージを宛先を変えて転送することができる。 メッセージは、メール・グループ・ディストリビュータ(mail group distrib utor)によって、2つ以上のデスティネーションへ分配することが可能である。 あるプロセスがあるプロセス・グループに属していることを知っていれば、その プロセスは、そのグループの一員であることを宣言するメール・グループ・ディ ストリビュータへメッセージを送ることができる。別の方法として、プロセスは 、そのメンバ・プロセスすべてを定義しているメール・グループ・ディストリビ ュータへメッセージを送ることも可能である。通知を受けたとき、メール・グル ープ・ディストリビュータは、そのグループのために使用されるメールボックス IDのすべてのメンバ・プロセスに知らせる。グループのすべてのメンバに分配さ れるメールはグループ・メールボックスへ送られ、コピーが送信元を除くすべて のメンバへ送られる。1つのプロセスは 2つ以上のメール・グループに属することができるので、サブグループ(sub-gr oup)化が可能である。私用メッセージ(private message)は、他のすべてのプ ロセスに知られることなく、グループ内のプロセス間で送信することも可能であ る。 次のようなタイプのツールが使用可能である。すなわち、オペレーティング・ システムのコア(core−中心)を形成するパーマネント・ツール(permanenttoo ls −常駐ツール)である。このツールはブートアップ・シーケンス(boot-up s equence)によってアクティベートされ、そのあとで非アクティベート(disable )することはできない。すべてのプロセッサには、利用可能な各パーマネント・ ツールのコピーが常に用意されている。 セミパーマネント・ツール(semi-permanent tools)は、すべてのプロセッサ のためにブート・プロセスによってアクティベートされる。ユーザは、どのセミ パーマネント・ツールをアクティベートできるかを選択することができる。いっ たんアクティベートされたツールは非アクティベートすることができない。 ライブラリ・ツールは、必要時に、名前付きのツール・ライブラリ(named li brary of tools)から使用される。いったんアクティベートされると、これらの ツールは、メモリの制約上、ツールを非アクティベートする必要が起こるまで、 ツールを参照するアプリ ケーションが実行されているプロセッサのメモリにキャッシュ(貯蔵)されたま まになっている。 アプリケーション・ツール(application tools)はバーチャル・ツール(vir tual tool)と非バーチャル・ツール(non-virtual tool)の2種類がある。バ ーチャル・ツールは、アプリケーションが実行されているときアクティブである 必要はないが、プロセスがそのツールを参照しようとすると、必要に応じてアク ティベートされる。実行中でないときは、バーチャル・ツールは、メモリ・スペ ースが別の状態で必要になる場合を除き、キャッシュされたままになっている。 従って、利用可能なメモリに収まらないような、大きなアプリケーションのツー ルを自動的に「オーバレイ」(overlay)することが利用可能となっている。非 バーチャル・ツールは、アプリケーションと一緒にロードされ、その実行前にア クティブな箇所(activeplace)に置かれている。従って、これらのツールは常 に利用可能であり、実行時にはメモリ内にある。 ネットワーク内の各プロセッサまたはプロセッサ・グループは、動的バインダ ・トランスレータ(dynamic binder and translator -"DBAT")と呼ばれるパー マネント・ツールを含んでいる。DBATはプロセッサのネーティブ・コード(特有 なコード)で書かれているので、サポートされるプロセッサが異なるごとに、DB ATの固有のバージョンが必要である。DBATは バーチャル処理コードをプロセッサの特定コードのネーティブ・コードに変換す る機能を備えている。各DBATは、ツール・リストを使用する。このリストはパー マネントおよび外部ツール・リスト(permanentand external tool list - PETL )であり、すべてのパーマネント・ツールとセミパーマネント・ツールに関する 情報と(このリストはどのノードの場合も同じである)、ノードによって現在参 照されているか、あるいは以前参照されたが、まだアクティブであるか、あるい は非アクティブであるが、まだ使用可能であるライブラリのような、すべての外 部ツールとに関する情報を個々のノード別に収めている。メッセージを実行する コマンドを受信すると、オブジェクトはプロセスのローカル・メモリ・エリアに 読み込まれる。この場合も、プロセッサという用語は、2つ以上のプロセッサが ネットワーク内で1つのDBATと結合されていることを意味する。オブジェクトに よりパスが作られる。そのパスで、DBATはツールをPETLに追加する。 外部ツールのPETLへの追加は、次のように行われる。そのツールがすでにPETL の中にあれば、これは使用可能として受け付けられる。しかし、そのツールがPE TLの中になければ、これは読み込まれ、使用可能ツール・リストの中にリンク( 連係)される。この新たに挿入された、このツールが他のツール参照を含んでい れば、DBATはその参照を同じように繰り返し処理 する。DBATはすべての外部ツールが使用可能になるまで続ける。 DBATは、プロセスと新たにインストール(組込み)されたツールのVPコードを 「翻訳(translate)」してターゲット・プロセッサへ渡すが、その際に、コー ド内のツールを指しているポインタ情報の挿入と訂正を行う。未解決なバーチャ ル・ツール参照はTRAPに変換され、ツールの完全パス名(full pathname)を指 しているパラメータと一緒にDBAT内部のバーチャル・ツール・ハンドラ(virtua l tool handler)に渡される。完了すると、DBATは制御をプロセスに引き渡す。 各外部ツールが着信プロセス(incoming process)によって参照されると、そ の使用状況フラグ(usageflag)がインクリメント(増分)されるので、ツール は、そのツールを現在使用しているプロセスの数を表す値をもつことになる。各 プロセスが非アクティベートされると、使用状況フラグはデクリメント(減分) される。プロセスがツールを使用していないときは、そのツールは使用状況値が ゼロになるので、PETLから除去することで非アクティベート化して、そのメモリ を解放することができる。これが行われるのは、メモリ・空間・ギャベージコレ クション(memory spacegarbage collection)が行われるときだけであるので、 システムはツールをキャッシュ(貯蔵)することができる。セミパーマネント・ ツールとパーマネン ト・ツールは、初期使用状況値を"1"にしてブートアップ時にDBATによってイン ストールされるので、これらのツールが非アクティベートされることはないと保 証される。バーチャル・ツールは実行中にプロセスからコール(呼出)される。 バーチャル・ツールは、ツールのパスと名前を指すポインタと、ツールの通常パ ラメータとを使用して参照される。 DBAT内のバーチャル・ツール・ハンドラ(操作子)はPETLをチェックすること により、ツールがすでに使用可能であるかどうかを確かめる。そうであれば、ツ ールは通常の外部ツールの場合と同じように使用される。使用可能なツールが存 在しなければ、DBATはツールをアクティベートしてから(このプロセスは、プロ セス・スタートアップ時にアクティベートされた外部ツールについての場合と同 じである)、ツール参照を引き渡す。これは、ギャベージコレクションでも、着 信ツールに見合う十分なメモリが見つからなかったとき、メモリ制約が原因で障 害を発生する場合を除き、完全に透過(transparent)になっている。このメモ リを保証するのにバーチャル・メモリ(仮想メモリ)手法を用いることができる 。 第3図と第4図は、オペレーション状態にあるシステムを示す系統図である。 3つのプロセッサ(またはプロセッサ・アレイ)4は、概略図で示すように、中 央の「バーチャル」プロセッサVPと「リンク」されている。これらの図では、各 プロセッサは、オンチップまたはオフチップので総メモリをもっているものと想 定している。ブートアップ時に、各プロセッサは、他のすべてのパーマネント・ ツール(P1 ... Pn)とセミパーネント・ツール(SP1 ... SPm)をDBATに取り入 れる。この状態を示したのが第3図である。すべてのプロセッサには同一グルー プのパーマネント・ツールとセミパーネント・ツールが含まれている。 第4図はその後の状態を示している。あるプロセッサは、ライブラリ・ツール L1,L2,L3およびL4を使用するプロセスを実行するように指示されている。従っ て、プロセッサはこれらライブラリ・ツールを読み込んでいる。他方、このプロ セッサは特定のプロセスを実行する必要に応じて、種々のバーチャルツールまた は他のツールを読み込むことも可能である。別のプロセッサはツールL5,L6,L7 およびL8を読み込んでいる。この最後のプロセッサは現在どのプロセスも実行し ていない。2つまたはそれ以上のプロセッサは、ライブラリのコピーをローカル ・メモリに読み込んでおけば、同じライブラリ機能を使用できることはもちろん である。プロセスが終了したとき、ライブラリ・ツー ルは、再び必要になるまで、あるいはギャベージコレクションが行われるまで、 それぞれのローカル・メモリにキャッシュされたままになっている。上述したよ うに、いくつかのプロセッサを任意のプロセッサ・ネットワーク上で同時に稼働 できることは勿論である。 DBATは、VPコードをネーティブ・プロセッサ・コードへ変換することを扱うほ かに、いくつかの実施例では、ネーティブ・プロセッサ・コーディングを認める ことも可能である。ネーティブ・コーディングを使用すると、コードの移植性が 妨げられるが、ハードウェア固有のツール(一般的には、ドライバ)のストラテ ジ(strategy−戦略)として受け入れることが可能になる。 プロセスまたはツールはVPコードでも、ネーティブ・コードでもコーディング できるので、混合したソース・オブジェクト(mixed source objects)を一緒に 使用することができることを注意してほしい。しかし、VPコードとネーティブ・ コードは、1つのオブジェクト内にミックスできないのが普通である。DBATをベ ースとするユーティリティではVPコードを入力として受け付け、あとで実行でき るようにするためネーティブ・コードを出力する。この結果、時間重視(time c ritical)のアプリケーションはVP「ソース」で完全に移植可能になるが、ター ゲット・システムに 合わせて全体を「コンパイル」される。 アプリケーションの拘束を受けないコピーを防ぐようにするために、アプリケ ーションは、ネーティブ・コード・オブジェクト能力をそのまま使用できるよう にし、オリジナルVPコーディングをハウスに残しておけば、特定のプロセッサを ベースとしたいろいろなプロダクトを作ることができる。しかし、この特徴を使 用すると、ミックスされたプロセッサ・タイプを備えた並列システム上でアプリ ケーションを実行させることができなくなる。 外部参照ツールが使用可能に用意されていないと、DBATのアクションの下でエ ラーが表示されるので、欠落ツール(missing tool)の詳細を知ることができる 。そのとき、ユーザは、その欠落ツールを別のツールで一時的に置き換えるか、 あるいは他のものに永続的に代えるかどうかを決めることができる。ツール紛失 は、アクセス経路(route)または通路(pass)が脱落しているか、壊れている ことから起こるが、例えば、フロッピ・ディスクなどの交換可能媒体(removabl emedium)が目下アクセス不能である場合にも起こる。オブジェクトはネットワ ークから出し入れすることができるが、これを行うと、アプリケーション全体、 その従属プロセス(dependent process)のすべて、などが除去されてしまうこ とがよくある。 上述したように、バーチャル・プロセッサは、移植 可能な「実行可能」コードを構築するために使用される想像上のプロセッサであ る。上述したように、VPと互換性のある(VP compatible)アセンブラおよびコ ンパイラの出力は、DBATを使用してバインド(結び付け)を極端に遅らせて行う 方式(extremely latebinding system)を採用しているので、リンキング(連係 処理)を行う必要がない。 VPコード中の「実行可能」コードはDBATによって処理されて、ロード時にその ホスト・ターゲート・プロセッサへ渡されてから、制御がコードに渡される。VP は16×32ビット・レジスタ・セットを備え、32ビット・リニア・アドレス空間( linear address space)が想定されているが、16には限定されない。レジスタR0 からR15までは完全に汎用レジスタ(generalpurpose)である。IP、セグメント ・ポインタ、フラグなどのレジスタは想定レジスタ(assumed register)である 。つまり、これらレジスタは、必要時にターゲット・プロセッサによってインプ リメント(履行)される。VPコードはオペレーティングの原理に関係なく、最新 のターゲット・プロセッサへの「変換」が非常に単純化して設計されている。32 ビット・プロセッサ以外の、他のワード・サイズのプロセッサの扱いも簡単にな っている。VPレジスタ・セットの使用は最終のターゲット実行可能コードでは除 かれない。レジスタ・セットはターゲット・レジスタ・セットといっ しょにメモリにインプリメントされることがしばしば行われ(ゴースト・レジス タ(ghost register)と呼ばれる)、ターゲット・レジスタ・セットはVPオペレ ーション・セットをメモリ・レジスタ上にインプリメントする必要が行ったとき 使用される。このようにVPコーディングをネーティブ・プロセッサによって疑似 翻訳させると、ある種のプロセッサでは若干速度が低下するという欠点があるが 、全体的には得られる利点は非常に多い。キャッシュ・メモリ(cached memory )または高速メモリを備えたプロセッサ(トランスピュータなど)は、特に、ネ ーティブ・レジスタ・セットがトランスピュータ内にあるときに非常に小さい場 合には、パフォーマンス(処理能力、性能)が向上することを実際に示すことが できる。この方式を用いると、外出タスク(outgoing task)のレジスタ・セッ トの位置をセーブするメモリ書込みと着信タスクのレジスタ位置をリストア(復 元)するメモリ読取りとを除き、ネーティブ・プロセッサのステート(状態)を 無視できるので、タスク切替え時間(task switching time)が非常に高速化さ れる。トランスピュータ・アーキテクチャによれば、このことさえも不要になる 。いくつかの実施例では、VPコーディングをネーティブ・コーディングに変換し ない、DBATの単純化されたバージョン(説明)を有することができる。これらは 、ターゲット・プロセッサのマクロ・ア センブラ(macro assembler)によってターゲット実行可能コードにコンパイル されているVPマクロを使用する。しかし、ツール、オブジェクトなどへの参照と いった、ある種の構成体(constructs)は、DBATによる処理と修正(fixup)の ために残されている。工業規格のターゲット・マクロ・アセンブラはこの変換を 行うのに十分に適している。 ターゲット・プロセッサ上で最終的に実行されるコードの効率は、それぞれVP コンパイラとDBATによって行われる、コンパイルとアセンブリの2ステージに左 右される。コンパイラがVP出力を最も効率的な形体に縮減する能力は邪魔されな いが、明らかに、ピープホール最適化(peephole optimisation)はほとんど、 あるいはまったく行うことができない。DBATは、ある種のVPコード・シーケンス によって起こることがある、冗長的なネーティブ・レジスタ/ゴースト・レジス タの移動を取り除くことにより、主として生成される最終的コードについてピー プホール最適化を行う。 トランスピュータでは、VPゴースト・レジスタを使用すると、従来のレジスタ を使用した場合と同等の、あるいは向上したパフォーマンスが得られる。ゴース ト・レジスタは、トランスピュータでは、オンチップRAMに実装され、実行され るすべてのプロセスのための「データ・キャッシュ」を効率よく生成する。プロ セスは、Inmos T800トランスピュータでは、最高48個までがオンチップ・メモリ ・ゴースト・レジスタを使用することができる。48個を越えるプロセスには、オ フチップ・メモリにスペースが必要である。 上述してきたシステムには、ウィンドウ、マウスなどを使用してオペレーショ ンを行うためのグラフィカル・ユーザ・インタフェースを含めることが可能であ る。ウィンドウはディスプレイ手段に対して表示されてマウスやキーボード、そ の他の入力手段を使用して移動させて操作を加えることも、その内容に操作を加 えることも可能である。
【手続補正書】特許法第184条の7第1項 【提出日】1994年1月11日 【補正内容】 請求の範囲 18.各ノードは固有のアドレスをもっていることを特徴とする請求の範囲第17項 に記載のデータ処理システム。 19.前記第1ノードとすべての隣接ノードから返された使用可能スペースがいず れも同じ量であるときは、1つのノードが任意に選択され、そのあと、アロケー ション・プロセスがこの選択されたノードから繰り返されて、プロセスをもっと 適切なノードへ引き渡すようにしたことを特徴とする請求の範囲第10項ないし第 18項のいずれかに記載のデータ処理システム。 20.隣接ノード間で受け渡しされるメッセージは、ノードが判断を行えるように 適合された情報を含んでいることを特徴とする請求の範囲第10項ないし第19項の いずれかに記載のデータ処理システム。 21.2つの隣接ノード間でメッセージが受け渡しされない各期間の少なくとも一 部の間に、判断を行えるようにする情報の交換が行われることを特徴とする請求 の範囲第20項に記載のデータ処理システム。 22.各ノードは、各隣接ノードからの情報で、ノード が判断を行えるようにする情報をストアする手段を備えていることを特徴とする 請求の範囲第10項ないし第21項のいずれかに記載のデータ処理システム。 23.前記ストアする手段はルックアップ・テーブルであることを特徴とする請求 の範囲第22項に記載のデータ処理システム。 24.ネットワーク内にノードとして相互連結された複数のデータ・プロセッサを 備えており、該ネットワークは、第1ノードがプロセスを実行する命令を受け取 ると、その第1ノード自身または隣接ノードのいずれが、その時点で、そのプロ セスを実行するのに最も適しているかを判断し、該判断に基づいてその第1ノー ド自身のプロセッサまたは特定の隣接プロセッサのいずれかにそのプロセッサを 実行させるべきかを選択するというようにプロセスを実行するように構成されて おり、システムは複数のコード・セグメントと、選択した複数のコード・セグメ ントをバインドしてデータ・プロセッサの1つまたは2つ以上によって実行させ る実行可能タスクにするための手段とを備えていて、個々のコード・セグメント は、タスクのロード時または実行時にのみバインドされて完全な実行可能タスク にされることを特徴とするデータ処理システム。 25.前記コード・セグメントは、システムに共通のバーチャル処理コードでシス テム内を転送され、該バーチャル・コードをローカル・プロセッサに理解できる コードに変換する手段が各ノードに含まれていることを特徴とする請求の範囲第 24項に記載のデータ処理システム。 26.前記プロセッサまたは各前記プロセッサはプロセス・コントロール手段を含 み、該プロセス・コントロール手段は、実行コマンド・メッセージを受け取る手 段と、必要なメッセージをローカル・メモリに読み込む手段と、メッセージの通 るパスを作って、そのパス内でそのメッセージの実行可能タスクのために必要な コード・セグメントのリストが作られる手段と、メッセージの通るパスを作って 、そのパス内でコード・セグメントが翻訳される手段と、タスクを実行する処理 手段とを備えており、該プロセス・コントロール手段はバーチャル・コードを受 け取り、それをローカル・プロセッサに理解できるコードに翻訳することを特徴 とする請求の範囲第25項に記載のデータ処理システム。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AT,AU,BB,BG,BR,BY, CA,CH,CZ,DE,DK,ES,FI,GB,H U,JP,KP,KR,KZ,LK,LU,MG,MN ,MW,NL,NO,NZ,PL,PT,RO,RU, SD,SE,SK,UA,US,VN

Claims (1)

  1. 【特許請求の範囲】 1.1つまたは2つ以上のデータ・プロセッサと、複数のコード・セグメントと 、選択した複数のコード・セグメントをバインドして1つまたは2つ以上のプロ セッサに実行させる実行可能タスクにするための手段とを備えていて、個々の前 記コード・セグメントは、タスクのロード時または実行時にのみ完全な実行可能 タスクにバインドされることを特徴とするデータ処理システム。 2.ネットワーク内にノードとして相互連結された複数のデータ・プロセッサを 含むことを特徴とする請求の範囲第1項に記載のデータ処理システム。 3.前記コード・セグメントはプロセスのロジック・フローを指示し、他のセグ メントをコールするのに適しているプロセス・オブジェクトのカーネルと、プロ セス・オブジェクトからコールされるのに適し、選択されたデータに作用を及ぼ すためにファンクション・コールまたはサブルーチンの形態になったツール・オ ブジェクトのグループとから選択されることを特徴とする請求の範囲第1項また は第2項に記載のデータ処理システム。 4.2つまたはそれ以上のプロセッサを含み、任意のコード・セグメントが2つ またはそれ以上のプロセッサのローカル・メモリに読み込まれて、該プロセッサ によってほぼ同時に使用できるように並列処理を行うのに適していて、2つまた はそれ以上の実行可能プロセスを並列に実行可能であることを特徴とする請求の 範囲第1項ないし第3項のいずれかに記載のデータ処理システム。 5.前記プロセッサまたは各前記プロセッサはプロセス・コントロール手段を含 み、該プロセス・コントロール手段は、実行コマンド・メッセージを受け取る手 段と、必要なメッセージをローカル・メモリに読み込む手段と、メッセージの通 るパスを作って、そのパス内でそのメッセージの実行可能タスクのために必要な コード・セグメントのリストが作られる手段と、メッセージの通るパスを作って 、そのパス内でコード・セグメントが翻訳される手段と、タスクを実行する処理 手段とを備えていることを特徴とする請求の範囲第1項ないし第4項のいずれか に記載のデータ処理システム。 6.前記プロセスコントロール手段は、システムに共通するバーチャル処理コー ド内のコード・セグメントを受け取って、そのコードをローカル・プロセッサに 理解できるコードに翻訳するように構成されていることを特徴とする請求の範囲 第5項に記載のデータ処理システム。 7.各コード・セグメントがプロセスによって参照または非アクティベートされ ると、そのコード・セグメントを現在使用しているプロセスの数を求めるために 、使用状況フラグがそれぞれインクリメントまたはデクリメントされることを特 徴とする請求の範囲第1項ないし第6項のいずれかに記載のデータ処理システム 。 8.前記使用状況フラグがゼロの使用状況を示しているときは、そのセグメント は非アクティブとみなされ、ローカル・メモリから除去できることを特徴とする 請求の範囲第7項に記載のデータ処理システム。 9.前記セグメントの少なくとも1つは、前記使用状況フラグがゼロの使用状況 を示すことを不可能にする手段を備えていることを特徴とする請求の範囲第8項 に記載のデータ処理システム。 10.ネットワーク内にノードとして相互連結された複数のデータ・プロセッサを 備えており、第1ノードがプロセスを実行する命令を受け取ると、該第1ノード はそのノード自身または隣接ノードのいずれが、その時点で、そのプロセスを実 行するのに最も適しているかを判断し、該判断に基づいてそのプロセッサを実行 させるそのノード自身のプロセッサまたは特定の隣接プロセッサを選択するとい うやり方でプロセスを実行するように前記ネットワークが構成されていることを 特徴とするデータ処理システム。 11.前記第1ノードは、プロセスの実行に必要な処理スペースを示すメッセージ を各隣接ノードへ送信し、また、前記第1ノードは自身に十分なスペースが残っ ているかどうかを自身で判断し、各隣接ノードは第1ノードに対する応答として 、スペースが使用可能であるかどうかを示す情報を返送するように構成されてお り、前記第1ノードはその応答と自身の前記判断とを比較して、最大のスペース が使用可能になっているノードへプロセスを引き渡すか、自身でそのプロセスを 引き受けることを特徴とする請求の範囲第10項に記載のデータ処理システム。 12.使用可能なスペースはノードで現在実行中のプロセス数から決めることを特 徴とする請求の範囲第1項に記載のデータ処理システム。 13.より高い「パワー・レーティング」(パワー・ レーティングとは、ノードの1秒当りの実効オペレーション数をノードで実行の プロセス数で除し、ノードに利用できるオフチップ通信速度の関数倍したレーテ ィングである)をもつノードが選択されることを特徴とする請求の範囲第10項に 記載のデータ処理システム。 14.前記ネットワークは、さらに、プロセスを受け取るノードからプロセス・ア ロケーションを少なくとも一回繰り返し、従って、そのノードがプロセスにおけ る第1ノードとなるように構成されていることを特徴とする請求の範囲第10項な いし第13項のいずれかに記載のデータ処理システム。 15.前記ノードを形成するデータ・プロセッサはいろいろなタイプのものである ことを特徴とする請求の範囲第10項ないし第14項のいずれかに記載のデータ処理 システム。 16.前記データ・プロセッサの少なくとも1つはトランスピュータであることを 特徴とする請求の範囲第10項ないし第15項のいずれかに記載のデータ処理システ ム。 17.プロセスを後続のノードヘ引き渡すために、前記 第1ノードは、必要なバイト数、プロセスの名前、およびプロセスが現在ストア されているアドレスを示すデータを、受取り側ノードに通知することを特徴とす る請求の範囲第10項ないし第16項のいずれかに記載のデータ処理システム。 18.各ノードは固有のアドレスをもっていることを特徴とする請求の範囲第17項 に記載のデータ処理システム。 19.前記第1ノードとすべての隣接ノードから返された使用可能スペースがいず れも同じ量であるときは、1つのノードが任意に選択され、そのあと、アロケー ション・プロセスがこの選択されたノードから繰り返されて、プロセスをもっと 適切なノードへ引き渡すようにしたことを特徴とする請求の範囲第10項ないし第 18項のいずれかに記載のデータ処理システム。 20.隣接ノード間で受け渡しされるメッセージは、ノードが判断を行えるように 適合された情報を含んでいることを特徴とする請求の範囲第10項ないし第19項の いずれかに記載のデータ処理システム。 21.2つの隣接ノード問でメッセージが受け渡しされない各期間の少なくとも一 部の間に、判断を行えるよ うにする情報の交換が行われることを特徴とする請求の範囲第20項に記載のデー タ処理システム。 22.各ノードは、各隣接ノードからの情報で、ノードが判断を行えるようにする 情報をストアする手段を備えていることを特徴とする請求の範囲第10項ないし第 21項のいずれかに記載のデータ処理システム。 23.前記ストアする手段はルックアップ・テーブルであることを特徴とする請求 の範囲第22項に記載のデータ処理システム。
JP51079294A 1992-10-30 1993-07-01 データ処理システム Expired - Fee Related JP3722156B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9222799.0 1992-10-30
GB9222799A GB2272085A (en) 1992-10-30 1992-10-30 Data processing system and operating system.
PCT/GB1993/001382 WO1994010628A1 (en) 1992-10-30 1993-07-01 Data processing system and operating system

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP9947899A Division JPH11316692A (ja) 1999-04-06 1999-04-06 データ処理システム
JP2005219615A Division JP2006031721A (ja) 1992-10-30 2005-07-28 データ処理システム

Publications (2)

Publication Number Publication Date
JPH08502612A true JPH08502612A (ja) 1996-03-19
JP3722156B2 JP3722156B2 (ja) 2005-11-30

Family

ID=10724294

Family Applications (2)

Application Number Title Priority Date Filing Date
JP51079294A Expired - Fee Related JP3722156B2 (ja) 1992-10-30 1993-07-01 データ処理システム
JP2005219615A Pending JP2006031721A (ja) 1992-10-30 2005-07-28 データ処理システム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2005219615A Pending JP2006031721A (ja) 1992-10-30 2005-07-28 データ処理システム

Country Status (11)

Country Link
US (1) US5930511A (ja)
EP (3) EP0756232B1 (ja)
JP (2) JP3722156B2 (ja)
KR (3) KR100384086B1 (ja)
AU (3) AU679686B2 (ja)
CA (2) CA2358010C (ja)
DE (3) DE69327739T2 (ja)
GB (4) GB2272085A (ja)
HK (3) HK1005476A1 (ja)
SG (3) SG34219A1 (ja)
WO (1) WO1994010628A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10283211A (ja) * 1997-03-28 1998-10-23 Internatl Business Mach Corp <Ibm> マルチシステム環境のプロセッサ・リソース管理方法
WO2007074797A1 (ja) * 2005-12-28 2007-07-05 International Business Machines Corporation クライアント・サーバ・システムにおける負荷分散

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732141B2 (en) 1996-11-29 2004-05-04 Frampton Erroll Ellis Commercial distributed processing by personal computers over the internet
US6725250B1 (en) 1996-11-29 2004-04-20 Ellis, Iii Frampton E. Global network computers
US7035906B1 (en) 1996-11-29 2006-04-25 Ellis Iii Frampton E Global network computers
US20050180095A1 (en) * 1996-11-29 2005-08-18 Ellis Frampton E. Global network computers
US7634529B2 (en) * 1996-11-29 2009-12-15 Ellis Iii Frampton E Personal and server computers having microchips with multiple processing units and internal firewalls
US7506020B2 (en) 1996-11-29 2009-03-17 Frampton E Ellis Global network computers
US7805756B2 (en) 1996-11-29 2010-09-28 Frampton E Ellis Microchips with inner firewalls, faraday cages, and/or photovoltaic cells
US7024449B1 (en) * 1996-11-29 2006-04-04 Ellis Iii Frampton E Global network computers
US8312529B2 (en) 1996-11-29 2012-11-13 Ellis Frampton E Global network computers
US8225003B2 (en) 1996-11-29 2012-07-17 Ellis Iii Frampton E Computers and microchips with a portion protected by an internal hardware firewall
US7926097B2 (en) 1996-11-29 2011-04-12 Ellis Iii Frampton E Computer or microchip protected from the internet by internal hardware
US6167428A (en) * 1996-11-29 2000-12-26 Ellis; Frampton E. Personal computer microprocessor firewalls for internet distributed processing
US6934945B1 (en) 1997-03-14 2005-08-23 Cardsoft, Inc. Method and apparatus for controlling communications
US6134216A (en) * 1997-10-29 2000-10-17 Lucent Technologies Inc. Integrated overload control for overload control for distributed real time systems
AU1728900A (en) * 1998-11-18 2000-06-05 Johns Hopkins University, The Enhanced virtual executor
US6728961B1 (en) * 1999-03-31 2004-04-27 International Business Machines Corporation Method and system for dynamically load balancing a process over a plurality of peer machines
US7043725B1 (en) * 1999-07-09 2006-05-09 Hewlett-Packard Development Company, L.P. Two tier arrangement for threads support in a virtual machine
GB9920676D0 (en) * 1999-09-01 1999-11-03 Tao Group Ltd Translating and executing object-oriented computer programs
US6532538B1 (en) 2000-02-17 2003-03-11 International Business Machines Corporation Method and system for supporting multiple operating systems on the same disk running on different computers at the same time
GB0011974D0 (en) * 2000-05-19 2000-07-05 Smith Neale B rocessor with load balancing
WO2002025438A1 (en) * 2000-09-22 2002-03-28 Patchlink.Com Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US20040003266A1 (en) * 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
JP4123712B2 (ja) * 2000-11-27 2008-07-23 株式会社日立製作所 通信処理方法ならびに通信処理プログラムが記録される記録媒体
US7398216B2 (en) * 2000-12-12 2008-07-08 Lockheed Martin Corporation Network dynamic service availability
US6922832B2 (en) * 2000-12-12 2005-07-26 Lockheed Martin Corporation Execution of dynamic services in a flexible architecture for e-commerce
JP2005031771A (ja) * 2003-07-08 2005-02-03 Hitachi Ltd ジョブスケジューリング管理方法及びシステム並びにプログラム
US7032053B2 (en) * 2003-08-14 2006-04-18 International Business Machines Corporation System and method for loading, executing, and adapting a portable running operation system from a removable module to multiple computer systems
US20060095898A1 (en) * 2004-10-28 2006-05-04 International Business Machines Corporation Method for integrating multiple object files from heterogeneous architectures into a set of files
US7554909B2 (en) * 2005-03-21 2009-06-30 Intel Corporation Dynamic service management for multicore processors
CN101198930B (zh) * 2005-04-13 2011-07-27 艾利森电话股份有限公司 用于支持计算机***中的数据值一致性的***和方法
JP4781089B2 (ja) * 2005-11-15 2011-09-28 株式会社ソニー・コンピュータエンタテインメント タスク割り当て方法およびタスク割り当て装置
US8125796B2 (en) 2007-11-21 2012-02-28 Frampton E. Ellis Devices with faraday cages and internal flexibility sipes
US8184335B2 (en) * 2008-03-25 2012-05-22 Xerox Corporation Method for ad-hoc parallel processing in a distributed environment
US8224955B2 (en) * 2009-05-07 2012-07-17 International Business Machines Corporation Ensuring affinity at all affinity domains by folding at each affinity level possible for a partition spanning multiple nodes
US8924975B2 (en) * 2009-07-23 2014-12-30 Empire Technology Development Llc Core selection for applications running on multiprocessor systems based on core and application characteristics
US8819686B2 (en) * 2009-07-23 2014-08-26 Empire Technology Development Llc Scheduling threads on different processor cores based on memory temperature
US8429735B2 (en) 2010-01-26 2013-04-23 Frampton E. Ellis Method of using one or more secure private networks to actively configure the hardware of a computer or microchip
US9268611B2 (en) 2010-09-25 2016-02-23 Intel Corporation Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
EP2662771A4 (en) * 2011-01-07 2014-05-21 Fujitsu Ltd PLANNING PROCESS AND MULTI-CORE PROCESSOR SYSTEM
WO2015030717A1 (en) * 2013-08-27 2015-03-05 Empire Technology Development Llc Consolidating operations associated with a plurality of host devices
US10901415B1 (en) 2015-05-26 2021-01-26 Waymo Llc Non-passenger requests for autonomous vehicles
US9368026B1 (en) * 2015-05-26 2016-06-14 Google Inc. Fallback requests for autonomous vehicles
US10454872B2 (en) * 2015-06-22 2019-10-22 Microsoft Technology Licensing, Llc Group email management
US10332320B2 (en) * 2017-04-17 2019-06-25 Intel Corporation Autonomous vehicle advanced sensing and response
EP3462313A1 (de) * 2017-09-27 2019-04-03 Siemens Aktiengesellschaft Verfahren und verteiltes datenbanksystem zum rechnergestützten ausführen eines programmcodes
US10725834B2 (en) 2017-11-30 2020-07-28 International Business Machines Corporation Job scheduling based on node and application characteristics

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2016283A (en) * 1982-10-15 1984-04-19 General Electric Company, Plc, The Plural data processing units
JPH0778785B2 (ja) * 1986-03-29 1995-08-23 株式会社東芝 プロセッサ選択方法
JPH01263734A (ja) * 1988-04-08 1989-10-20 Internatl Business Mach Corp <Ibm> マルチ・タスク環境における動的リンク識別子供給方法
DE4007998A1 (de) * 1989-03-13 1990-09-20 Hitachi Ltd Prozess-planungsverfahren und mehrfach-rechner
CA2025131A1 (en) * 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
GB2242293A (en) * 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
US5276881A (en) * 1990-06-25 1994-01-04 Hewlett-Packard Company ANDF producer using the HPcode-Plus compiler intermediate language
JP3203701B2 (ja) * 1990-11-01 2001-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション コードセグメントのリンク方法とそのシステム及びコードセグメントのダイナミックリンク方法
US5297285A (en) * 1991-07-23 1994-03-22 Telefonaktiebolaget L M Ericsson System for dynamically linking modular portions of computer software
US5649204A (en) * 1991-08-22 1997-07-15 Rec Software, Inc. Method and apparatus for consolidating software module linkage information used for starting a multi-module program
US5301326A (en) * 1991-09-24 1994-04-05 Microsoft Corporation Method and system for controlling the execution of an application program
IL99923A0 (en) * 1991-10-31 1992-08-18 Ibm Israel Method of operating a computer in a network
US5359721A (en) * 1991-12-18 1994-10-25 Sun Microsystems, Inc. Non-supervisor mode cross address space dynamic linking
AU3650693A (en) * 1992-03-09 1993-10-05 Ian Chester Distributed processing system

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10283211A (ja) * 1997-03-28 1998-10-23 Internatl Business Mach Corp <Ibm> マルチシステム環境のプロセッサ・リソース管理方法
WO2007074797A1 (ja) * 2005-12-28 2007-07-05 International Business Machines Corporation クライアント・サーバ・システムにおける負荷分散
CN101346696A (zh) * 2005-12-28 2009-01-14 国际商业机器公司 客户机服务器***中的负荷分散
US8924467B2 (en) 2005-12-28 2014-12-30 International Business Machines Corporation Load distribution in client server system
US9712640B2 (en) 2005-12-28 2017-07-18 International Business Machines Corporation Load distribution in client server system

Also Published As

Publication number Publication date
CA2146672C (en) 2002-02-05
SG34219A1 (en) 1996-12-06
JP2006031721A (ja) 2006-02-02
CA2146672A1 (en) 1994-05-11
EP0756233A1 (en) 1997-01-29
JP3722156B2 (ja) 2005-11-30
DE69322887T2 (de) 1999-05-27
DE69322887D1 (de) 1999-02-11
DE69309704D1 (de) 1997-05-15
KR100384086B1 (ko) 2003-05-16
SG52857A1 (en) 1998-09-28
KR950704737A (ko) 1995-11-20
EP0667011B1 (en) 1997-04-09
AU676815B2 (en) 1997-03-20
SG42445A1 (en) 1997-08-15
GB2272085A (en) 1994-05-04
HK1005474A1 (en) 1999-01-08
AU6203696A (en) 1996-10-10
DE69327739D1 (de) 2000-03-02
GB2293674B (en) 1996-08-14
US5930511A (en) 1999-07-27
AU679686B2 (en) 1997-07-10
AU4508093A (en) 1994-05-24
HK1005475A1 (en) 1999-01-08
EP0667011A1 (en) 1995-08-16
GB2286269B (en) 1996-06-12
WO1994010628A1 (en) 1994-05-11
GB2293675A (en) 1996-04-03
HK1005476A1 (en) 1999-01-08
GB9523109D0 (en) 1996-01-10
EP0756232A1 (en) 1997-01-29
AU6203796A (en) 1996-10-10
GB9222799D0 (en) 1992-12-09
DE69309704T2 (de) 1997-10-30
EP0756233B1 (en) 1998-12-30
KR100384085B1 (ko) 2003-05-16
EP0756232B1 (en) 2000-01-26
DE69327739T2 (de) 2000-09-28
GB2293675B (en) 1996-08-14
GB2293674A (en) 1996-04-03
GB2286269A (en) 1995-08-09
CA2358010A1 (en) 1994-05-11
GB9506109D0 (en) 1995-05-31
GB9523209D0 (en) 1996-01-17
AU676816B2 (en) 1997-03-20
CA2358010C (en) 2002-04-30
KR100419108B1 (ko) 2004-05-20

Similar Documents

Publication Publication Date Title
JPH08502612A (ja) データ処理システムおよびオペレーティング・システム
US6078945A (en) Operating system for use with computer networks incorporating two or more data processors linked together for parallel processing and incorporating improved dynamic load-sharing techniques
US6948172B1 (en) Preemptive multi-tasking with cooperative groups of tasks
US8813093B2 (en) Integration of disparate applications on a network
CA2820081A1 (en) Distributed computing architecture
JP5030647B2 (ja) 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
CN115242563B (zh) 一种网络通信方法、计算设备及可读存储介质
US9361266B2 (en) System and method for distributed computing
Ma et al. Delta execution: A preemptive Java thread migration mechanism
Sato et al. EM-C: Programming with explicit parallelism and locality for EM-4 multiprocessor
JP3241214B2 (ja) 分散処理装置及びプロセス実行方法
JPH11316692A (ja) データ処理システム
US6772292B2 (en) Two area stack
Keller et al. Overview of Rediflow II development
WO2023081634A1 (en) Method of creating self-assembling, transient analytic and learning agents in a message-driven architecture
Lal Bare-Metal Systems
JPH09245003A (ja) 並列分散処理システムおよびその方法
JPH09160762A (ja) プログラム変換方式
JPS60191347A (ja) メモリ管理方式
Kim et al. Reducing overheads of local communications in fine-grain parallel computation
Patrick et al. OCCAM-and C-based multiprocessor environments for UNIX clusters
Dermoudy A novel approach to parenting in functional program evaluation

Legal Events

Date Code Title Description
A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050906

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees