JP2005228325A - 資源の有限なマイクロ・プロセッサのためのプロセス言語 - Google Patents

資源の有限なマイクロ・プロセッサのためのプロセス言語 Download PDF

Info

Publication number
JP2005228325A
JP2005228325A JP2005033507A JP2005033507A JP2005228325A JP 2005228325 A JP2005228325 A JP 2005228325A JP 2005033507 A JP2005033507 A JP 2005033507A JP 2005033507 A JP2005033507 A JP 2005033507A JP 2005228325 A JP2005228325 A JP 2005228325A
Authority
JP
Japan
Prior art keywords
computer
expression
name
service
executable method
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
JP2005033507A
Other languages
English (en)
Inventor
Jr Allen L Brown
エル.ブラウン ジュニア アレン
David Richter
リヒター デビッド
George Moor
ムーア ジョージ
L Gregory Meredith
メレディス エル.グレゴリー
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005228325A publication Critical patent/JP2005228325A/ja
Pending legal-status Critical Current

Links

Images

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
    • EFIXED CONSTRUCTIONS
    • E04BUILDING
    • E04HBUILDINGS OR LIKE STRUCTURES FOR PARTICULAR PURPOSES; SWIMMING OR SPLASH BATHS OR POOLS; MASTS; FENCING; TENTS OR CANOPIES, IN GENERAL
    • E04H15/00Tents or canopies, in general
    • E04H15/32Parts, components, construction details, accessories, interior equipment, specially adapted for tents, e.g. guy-line equipment, skirts, thresholds
    • E04H15/34Supporting means, e.g. frames
    • E04H15/44Supporting means, e.g. frames collapsible, e.g. breakdown type
    • E04H15/48Supporting means, e.g. frames collapsible, e.g. breakdown type foldable, i.e. having pivoted or hinged means
    • E04H15/52Supporting means, e.g. frames collapsible, e.g. breakdown type foldable, i.e. having pivoted or hinged means parallelogram type
    • EFIXED CONSTRUCTIONS
    • E04BUILDING
    • E04HBUILDINGS OR LIKE STRUCTURES FOR PARTICULAR PURPOSES; SWIMMING OR SPLASH BATHS OR POOLS; MASTS; FENCING; TENTS OR CANOPIES, IN GENERAL
    • E04H15/00Tents or canopies, in general
    • E04H15/28Umbrella type tents
    • EFIXED CONSTRUCTIONS
    • E04BUILDING
    • E04HBUILDINGS OR LIKE STRUCTURES FOR PARTICULAR PURPOSES; SWIMMING OR SPLASH BATHS OR POOLS; MASTS; FENCING; TENTS OR CANOPIES, IN GENERAL
    • E04H15/00Tents or canopies, in general
    • E04H15/32Parts, components, construction details, accessories, interior equipment, specially adapted for tents, e.g. guy-line equipment, skirts, thresholds
    • E04H15/60Poles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/314Parallel programming languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Architecture (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Structural Engineering (AREA)
  • Civil Engineering (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)
  • Image Generation (AREA)

Abstract

【課題】 非同期性、並行性、および並列性を容易にするよりよい集積回路およびプログラミング言語を提供すること。
【解決手段】 ρ計算法と呼ばれる反射的プロセス代数を使用して、この反射的プロセス代数のレベルでプロセスの直列化を容易にする。この反射的プロセス代数は、その反射的性質のため、資源の有限なコンピューティング・システム上で使用することができる。この反射的プロセス計算には、メモリや帯域などの資源に対して細心の注意を払いようにさせることができ、したがってマシン・レベルでのプログラミング言語として支障なく使用できるようになる。この反射的プロセス計算により、計算エンティティのもつ双対的性質があらわにされる。名前はプロセスになるように、プロセスは名前になるように強制することができる。
【選択図】 図7B

Description

本発明は、一般には、プログラミング言語に関し、より詳細には、資源の有限なマイクロ・プロセッサによって最終的に実行できるプロセスおよびその相互作用を表現するための人工言語に関する。
CISCベースのマイクロ・プロセッサ102などのマイクロ・プロセッサが、すべてのパーソナル・コンピュータの心臓部にある。図1を参照されたい。電源104およびメモリ106をCISCベースのマイクロ・プロセッサ102に加えると、1台のコンピュータを形成するのに必要な部品はすべて揃うことになる。CISCベースのマイクロ・プロセッサ102は、与えられる命令通りに動作することによってタスクを達成する。命令は、プログラミング言語などの人工言語で書かれた表現である。初期のマイクロ・プロセッサでは、単純な命令だけを使用していたが、これは、複雑な命令を実行することが可能なマイクロエレクトロニクスのハードウェアのコストが非常に高価であるためであった。こうしたコストが時とともに低下するにつれて、もっと複雑な命令が可能になった。複雑な命令(complex instructions、複数のマイクロ・プロセッサオペレションを指示する単一の命令)は、コンピュータが余分な命令を取り出す必要がなくなるために、時間を節約することができる。たとえば、7個のオペレーションを一緒にして1つの命令にした場合、命令をフェッチするステップのうち6つが省かれ、マイクロ・プロセッサがそれらのオペレーションを処理するのにより短い時間しかかからない。いくつかのオペレーションを一緒にして1つの命令にするマイクロ・プロセッサを、CISC(complex instruction set computers、複合命令セット・コンピュータ)と呼ぶ。
CISCベースのマイクロ・プロセッサ102では、複数のレジスタが、実行した命令の結果を格納するのに使用される。各レジスタは、データを特定の目的で保持するのに使用する、CISCベースのマイクロ・プロセッサ102内部の高速メモリで構成された複数ビットから成るセットである。各レジスタは、アセンブリ言語プログラムでは、AX(Intel 80X86プロセッサで算術オペレーションの結果が入るレジスタ)やSP(様々なCISCベースのマイクロ・プロセッサでスタックの先頭のメモリ・アドレスを入れるレジスタ)などの名前で、参照される。各レジスタは、本質的には、CISCベースのマイクロ・プロセッサ102に属する各構成要素間の共有メモリである。複数のレジスタを共有メモリとして使いながら、ある構成要素が特定のオペレーションを実行し、その特定のオペレーションの結果をあるレジスタに格納する。逐次的に、別の構成要素が次いで他のオペレーションを実行する際に同じレジスタにアクセスしてその結果を得ることができる。
オペレーションをそのように逐次実行することにより、CISCベースのマイクロ・プロセッサ102の構成要素は、通信において同期しているかのように見せることができるようになる。CISCベースのミドル・ウェア108内など、プログラム中のほぼすべての命令が、逐次的に実行されるように設計されている。CISCベースのマイクロ・プロセッサ102で利用可能なハードウェア割り込みは、非同期性を付け加え、それによりオペレーションの並行(concurrent)実行を付け加えるやり方として使用される場合がある。ハードウェア割り込みは、CISCベースのマイクロ・プロセッサ102にサービスを求める要求であり、その生成は、外部的にはディスク・ドライブや入出力ポートなどのハードウェア装置により、または内部的にはCISCベースのマイクロ・プロセッサ102自体によって行われる。外部ハードウェア割り込みは、ポートからある1キャラクタが受け取られて処理する必要がある場合、1ブロックのデータ転送に対するディスク書き込みレディの発生時、システム・タイマの1チックの発生時、などの場合に使用される。内部ハードウェア割り込みの発生は、利用可能でないアドレスへのアクセスやゼロ除算など、不可能なアクションをプログラムが試みたときに生じる。アーキテクチャの不一致(マイクロ・プロセッサの構成要素の同期的な性質とハードウェア割り込みの非同期的な性質)に起因して、割り込みハンドラの中のたった1つのプログラミング・エラーは、CISCベースのマイクロ・プロセッサ102をデッドロックさせ、またはデータを病的な、まれにしか復元できない状態に破壊してしまうこともある。
π計算法(π calculus)のプログラム110は、CISCベースのミドル・ウェア108およびCISCベースのマイクロ・プロセッサ102の同期的で逐次的な実行の設計に、所望の非同期性および並列性(parallelism)をもたせることが可能である。π計算法は、相互作用のある並行システムにおけるプロセスを記述するための数学的言語である。π計算法の中心部は、リンクを介して通信を行う独立した並列プロセスからなる1つのシステムで構成される。あるプロセスが他のプロセスと通信できるかどうかは、様々な異なるリンクについてのそれ自身の知識に依存している。特定のプロセスだけがリンク上で通信できるように、リンクを制限することも可能である。
π計算法は、コンピューティングに、非常に必要とされる非同期性および並列性をもたせることができるが、顕著な欠点がある。π計算法では、それぞれ単なるビットパターンとしてしか定義されて、構造化された情報ではない、純粋な名前(pure name)に非常に重点が置かれている。π計算法およびその変種は、名前付きリンク上で構造化されたデータの受け渡しを許容していない。名前Xなどの新しい名前を新規作成するには、π計算法ではνオペレータを使う。たとえば、数学的な項(νX)Pは、名前Xの新規作成を表し、そのスコープ(範囲)はプロセスPに制限される。プロセスPの各構成要素は、相互にXを使用して相互作用できるが、他のプロセスとの間ではそれができない。数学的な構造的合同規則(νX)(νX)P≡(νX)Pを考えよう。項(νX)は、malloc()などの関数を使ってメモリ割り当てを要求するオペレーションと定義される。コンピューティング・システムには項(νX)の1回の呼び出しに十分なメモリしか残っていないとしよう。その場合、構造的合同規則の右辺にある項(νX)は、障害を起こすことなく処理される。構造的合同規則の左辺にある項(νX)(νX)Pでは、そうはならず、これは(νX)の第2の呼び出しがメモリ・フォールトを引き起こすことになるためである。
π計算法の別の問題は、複製(replication)の数学的概念、すなわち!Pである。π計算法では、言語のプリミティブとして複製!Pが提供されている。項!Pは、互いに並列して動作するプロセスPの無限の組成(composition)を意味するものと解釈できる。!Pは、理論の上では超越的であってよいのに対して、実際の具体化の際には問題を引き起こす。マイクロ・プロセッサは、メモリや帯域などの有限資源を備えた創造物(creature)なのである。π計算法のプログラムは、所望の同期性を付け加えるが、こうしたπ計算法のプログラムの実行されるマイクロ・プロセッサが資源に束縛されていることを認識してはくれない。
要するに、CISCベースのマイクロ・プロセッサは、並行する並列の計算を要求する非同期システム、すなわち分散化された、インターネットなどの大規模コンピュータ・システム向けにはうまく働かない可能性がある。従来の(traditional)逐次実行アーキテクチャは、オペレーションの並行実行の必要とするものには適していない可能性がある。π計算法により、非同期性および並列性をもたせる点でいくつかの救済策が提供されるが、その数学的プリミティブの一部は資源の有限なコンピューティング装置と両立しない。上述の問題に対する解決策がなければ、やがてはユーザはもうコンピューティング・システムが所望のコンピューティング体験を提供してくれると思わなくなるかもしれず、市場でコンピュータ・システムに対する需要は時とともに縮小することになろう。したがって、既存のCISCベースのマイクロ・プロセッサおよびπ計算法に関連付けられた以上のおよび他の問題を回避または低減する一方、よりよい非同期性、並行性、および並列性を容易にするよりよい集積回路およびプログラミング言語が必要とされている。
この発明によれば、反射的プロセス代数(reflective process algebra)で書かれたサービスを処理するためのシステム、方法およびコンピュータ可読媒体が提供される。本発明のあるシステムの形式(form)は、情報を処理して所望の結果を出力するためのコンピュータを含む。前記コンピュータは、サービスを格納するためのコンピュータ可読媒体を備える。前記サービスはプロセスをリテラル化すること(literalizing processes)によって名前を、名前を非リテラル化すること(deliteralizing names)によってプロセスを表す式を含む。前記コンピュータは、さらに、複数のサービスを複数のプロセスとして実行するためのマイクロ・プロセッサを備える。前記プロセスは複数の名前を介して相互作用を行い、複数のアクションを実行することによって、または他のプロセスを進展させる(evolve)ことによって、進展する。
この発明のさらなる諸態様によれば、本発明の別のシステムの形式は、命令を実行するためのマイクロ・プロセッサを含む。前記マイクロ・プロセッサは、命令をメモリから取り出し、前記命令をデコードし、前記命令に関連するデータをフェッチし、結果を保存するためのタイミングおよび制御ユニットを備える。前記データは反射的プロセス代数におけるプロセスをリテラル化することによって得られる名前を含む。前記マイクロ・プロセッサは、さらに、前記命令の指定するオペレーションを実行するための算術論理演算ユニットを含む。前記命令は反射的プロセス代数で表現される。前記反射的プロセス代数は、プロセスのリテラル化として名前を、名前の非リテラル化(deliteralization)としてプロセスを表すことが可能である。
この発明のさらなる諸態様によれば、本発明のあるコンピュータ可読媒体の形式は、共有名を介して、プロセスが、進展しまたは他のプロセスを進展させるようにアクションすることまたは相互作用することを可能にするための方法を実行するコンピュータ実行可能命令の格納してあるコンピュータ可読媒体を含む。前記コンピュータ可読媒体は、反射的プロセス代数の形で表現されたコンピュータ実行可能命令を含む。前記反射的プロセス代数は、プロセスを表すプロセス構文要素を含む。前記プロセス構文要素は不活性プロセス(inactive process)0、出力プロセスX[Y]、入力プロセスX(Z).P、リフト・プロセスLIFT X.P、プロセスの組成P|P、および名前の非リテラル化>X<、からなる群から選択される。
この発明のさらなる諸態様によれば、本発明のある方法の形式は、サービスを処理するためのコンピュータ実行可能な方法を含む。前記コンピュータ実行可能な方法は、サービスを反射的プロセス代数におけるプロセスとして表す行為(act)を含む。前記反射的プロセス代数はプロセスを名前の非リテラル化として、名前をプロセスのリテラル化として表現することが可能である。前記コンピュータ実行可能な方法の他の行為は、プロセスの進展を支障なく行わせるために、名前がプロセス間で共有されるときにプロセスにそのアクションを実行させたり、または通信を行わせたりすることを含む。
この発明のさらなる諸態様によれば、本発明のさらに別のシステムの形式は、命令を実行するためのマイクロ・プロセッサのアレイを含む。マイクロ・プロセッサの前記アレイは、命令をメモリから取り出し、前記命令をデコードし、前記命令に関連するデータをフェッチし、結果を保存するためのタイミングおよび制御ユニットを含む、少なくとも1つのマイクロ・プロセッサを備える。前記データは反射的プロセス代数におけるプロセスをリテラル化することによって得られる名前を含む。前記マイクロ・プロセッサは、さらに、前記命令の指定するオペレーションを実行するための算術論理演算ユニットを含む。前記命令は反射的プロセス代数で表現される。前記反射的プロセス代数は、プロセスのリテラル化として名前を、名前の非リテラル化としてプロセスを表すことが可能である。
以上の諸態様およびこの発明の利点の多くは、同発明を、以下の詳細な説明への参照により、添付の図面と併せ解釈するとき、よりよく了解されてくるにしたがって、より容易に理解されてこよう。
本発明の様々な実施形態は、反射的プロセス代数のレベルでプロセスの直列化(serialization)を容易にするρ計算法と呼ばれる反射的プロセス代数を提供する。この反射的プロセス代数は、その反射的性質のため、資源が有限なコンピューティング・システム上で使用することができる。π計算法など従来のプロセス計算は、システム障害を引き起こす可能性のあるプロセスの際限のない組成および名前の新規作成を規定(govern)する表現力に欠けている。この反射的プロセス計算には、メモリおよび帯域などの、資源に対して細心の注意を払うようにさせることができ、これによりマシン・レベルでのプログラミング言語としてこれを使用することを容易にすることができる。反射的プロセス計算により、計算エンティティのもつ双対的性質があらわにされる。名前はプロセスになるように、プロセスは名前になるように強制することができる。このため、反射的プロセス計算により、計算エンティティの動的な性質と静的な性質の対応(correspondence)が表現される。計算エンティティが(たとえば直列化またはコンパイルを経て)静的であるときは、そのプログラムは、他のプログラムによる変更、または保管が可能となり、再び動的になったときに、他のプロセスとの相互作用への参加を、進展すること(evolving)によってまたは他のプロセスを進展させることによって行うことができる。
図2Aに、ρベースのマイクロ・プロセッサ200に基づくコンピューティング装置を示している。「マイクロ・プロセッサ」という用語は、中央処理装置、デジタル・シグナルプロセッサ、FPGA(field programmable gate array)、または算術、論理、および決定処理を実行するようにプログラムできる任意の集積回路を含めたものを意味する。ρベースのマイクロ・プロセッサ200は、コマンドを与えてデータ転送、算術、論理、および意思決定などの様々な関数を実行させることができる装置である。ρベースのマイクロ・プロセッサ200は、単一の集積回路上の中央処理装置(CPU、central processing unit)と考えることができる。ρベースのマイクロ・プロセッサ200は、数百万以上のトランジスタを搭載していることもあり、パーソナル・コンピュータなどの計算装置の心臓部にある。ρベースのマイクロ・プロセッサ200の電源が投入され、ρベースのマイクロ・プロセッサ200にメモリの要素204が加わると、入出力装置222を除き、1台のコンピュータに必須なすべての要素が揃うことになる。1つまたは複数のρベースのマイクロ・プロセッサ200は、複数のρベースのマイクロ・プロセッサ200から成るアレイを形成することができる。一実施形態では、複数のρベースのマイクロ・プロセッサ200から成るアレイは、単一の集積回路上に存在する。別の実施形態では、複数のρベースのマイクロ・プロセッサ200から成るアレイは複数の集積回路上に存在し、この複数の集積回路は単一のボード上に搭載される。さらに別の実施形態では、複数のρベースのマイクロ・プロセッサ200から成るアレイは複数の集積回路上にあって、この複数の集積回路は複数のボード上に搭載されて、この複数のボードは1台のコンピュータの単一のラック内に収容される。さらに別の実施形態では、複数のρベースのマイクロ・プロセッサ200のアレイは複数の集積回路上にあって、この複数の集積回路は複数のボード上に搭載されて、この複数のボードは複数台のコンピュータの複数のラック内に収容される。別の実施形態では、複数のρベースのマイクロ・プロセッサから成るアレイは、1つまたは複数のマイクロ・プロセッサを結合するためのネットワークを含む。このネットワークは、常時接続および一時接続の群から選択される。
入出力装置222は、ρベースのマイクロ・プロセッサ200にデータを提供するため、またはこれからデータを受け取るため、あるいはその両方に使用できるハードウェアの要素である。PDA(personal digital assistant)は、入出力装置の例である。キーボードやマウスなどの一部の装置は、入力のためだけに使用することができる。プリンタなどの他の一部の装置は、出力のためだけに使用することができる。ρベースのマイクロ・プロセッサ200から形成されるほとんどの装置は、必ずしもデバイス・ドライバと呼ばれるソフトウェア・ルーチンをインストールしなくてもデータの送信および受け取りを行うことができる。メモリの要素224は、情報を格納および取り出しを行える装置である。好ましくは、メモリの要素224は、コンピューティング装置のメイン・メモリ、すなわちρベースのマイクロ・プロセッサ200に直接結合される高速な半導体ストレージ(RAM)を指すものとする。
ρベースのミドル・ウェア226は、2つ以上のタイプのソフトウェアの間に位置し、その間で情報を翻訳するソフトウェアである。ρベースのミドル・ウェアは、多様な範囲のソフトウェアをカバーし、一般にサービス228と分散化されたオペレーティング・システムとの間に位置する。ρベースのミドル・ウェア226は、以下でさらに詳細に論じるように新しい名前を生成する名前サービスなどのサービスを含む。ρベースのミドル・ウェア226と考えることのできる別のソフトウェアの要素は、複製サービス(replication service)である。ρベースのミドル・ウェア226は、π計算法言語の変種を用いて表現されるサービス228が、ρベースのマイクロ・プロセッサ200上でよりよく実行できることを可能にする。
サービス228は、各サービスの定義するプロトコルに従ってメッセージを交換する自律的な計算エンティティである。サービスは、あるコンピューティング・システムにローカルとすることもできるが、リモートのコンピューティング・システムに置くこともできる。サービスは、単一の信頼ドメインによってアクセスできるが、それ自体のセキュリティポリシをもつ別の信頼ドメインによってもアクセスできる。サービス228は、ディレクトリ・サービスによって発見可能であるが、ディレクトリ・サービスでないサービスによっても発見可能である。サービス228は、サービスの一意の指定を構成する統一資源指示子(uniform resource indicators)によって識別可能なポートを有する。サービスのポートには、片務契約(unilateral contract)で指定される行動タイプ(behavioral type)が賦与される。サービス228の好ましい通信機構は、プログラム的に有線接続された(programmatically wired)ポートを通す機構である。有線接続されたポートは、(あるサービスの)一方のポートの行動タイプが(別のサービスの)もう1つのポートの行動タイプと互換性がある場合に使用可能となる。ポートがプログラム的に互いに有線接続されている場合、サービス228は互いにメッセージを送ることによって通信を行う。簡単に言えば、片務契約は、π計算法の変種などの言語で表現されており、サービス228に出入りするメッセージの順序を指定している。たとえば、ファイルはサービスでありうる。読み取り専用ファイルの片務契約は、次の行動式、すなわち、REC F(read.F+drop).0を含むことができるのに対し、読み取り書き込みファイルの片務契約は、次の行動式、すなわち、REC F(read.F+write.F+drop).0をもつことができる。これらの行動式を構文解析すると、項REC Fは行動フレーズに対する再帰を示し、行動フレーズFはカッコの対の内側の行動式を示し、動詞”read”は読み取り操作(read operation)を示す。ピリオド記号”.”は、ピリオド記号の前の行動フレーズが起き、その後、次いでピリオド記号の後の行動フレーズが起きるというシーケンスを表す。プラス符号の記号”+”1つまたは複数の行動フレーズのうちからの選択肢を示し、動詞”write”は書き込み操作(write operation)を示し、動詞”drop”は2つのサービスの間の通信の終了を示し、ゼロの記号(”0”)は、行動式の終了を示す。
図2Bには、ρベースのマイクロ・プロセッサ200の内部アーキテクチャを備える構成要素の一部をより詳細に示している。各コンポーネントは、好ましくはポートを通して通信するρプロセスとして表される(各ポートは視覚的に正方形で表してある)。ここにあるのはρベースのマイクロ・プロセッサ200の主な5つの構成要素である。すなわち、レジスタ・アレイ204、208、210、タイミングおよび制御ユニット214、算術論理演算ユニット206、命令レジスタおよびデコーダ212、および外界へのバス接続216、218である。ρベースのマイクロ・プロセッサ200は、ρ命令を実行するときに、5つの一般的なステップを経る。第1に、タイミングおよび制御ユニット214が、メモリからρ命令、たとえば、並列して動作する2つのプロセスを組成する命令、を取り出す。第2に、タイミングおよび制御ユニット214が、そのρ命令をデコードしてρベースのマイクロ・プロセッサ200を制御する電気信号にする。第3に、タイミングおよび制御ユニット214が、データ(2つのプロセスのリテラル化である2つの名前)をフェッチする。第4に、算術論理演算ユニット206が、特定のオペレーション(2つの名前の非リテラル化による2つのプロセスの組成)を実行する。第5に、タイミングおよび制御ユニット214が結果(組成をリテラル化することによる2つのプロセスの組成)をレジスタ・アレイ204、208、210のうちのあるレジスタに保存する。
ρベースのマイクロ・プロセッサ200は、一時的データ、メモリ・アドレス、命令、およびρベースのマイクロ・プロセッサ200のステータスに関する情報を保持するのに使用する様々な内部レジスタを含む。たとえば、命令レジスタ212は、ρベースのマイクロ・プロセッサ200が現在実行中の命令を保持するのに使用する。命令レジスタ212からのデコード済みの命令は、ρベースのマイクロ・プロセッサ200の残りの部分、メモリ、およびタイミングおよび制御ユニット214と外界への外部ピンによって入出力の制御を、行う。命令レジスタ212は、それ自体のポートをもつ別のプロセスであるタイミングおよび制御ユニット214と通信する1つまたは複数のポートをもつ1つのプロセスである。命令レジスタ212は、好ましくは内部データ・バス202によって通信する。この内部データ・バス202もそれ自体のポートをもつ1つのプロセスとして表すことができる。内部データ・バス202は、入出力においてメモリとの間で情報を運ぶのに使用する。好ましくは、内部データ・バス202のバス・ラインは、情報を双方向に伝送する能力のある双方向のラインである。ステータス・レジスタ208(これもポートを通して通信する)は、算術論理演算ユニット206(これもポートを通して通信する)用のメモリからの情報を保持するのに使用する一時レジスタを含む。算術論理演算ユニット206へのもう1つの入力は、累算器204からのものである(通信のためにはポートを用いる)。ステータス・レジスタ208は、算術論理演算ユニット206のオペレーションを指示するのに使用するフラグ・レジスタを含む。また、ステータス・レジスタ208は、情報を格納するための汎用レジスタも含む。累算器204は、算術論理演算ユニット206の実行するほとんどあらゆる算術演算(arithmetic operation)および論理演算(logic operation)の後で、オペレーション結果(answer)を累算するのに使用する。オペレーション結果は通常ここに置かれるので、累算器204はオペレーション結果レジスタと考えることができる。累算器204とステータス・レジスタ208はどちらも、情報の送信および受信のために、内部データ・バス202に結合されている。プログラム・カウンタ210(その通信はポートを通して行われる)も、内部データ・バス202に結合されている。プログラム・カウンタ210の目的は、ρベースのマイクロ・プロセッサ200が実行すべき次の命令を探すために使用することである。プログラム・カウンタ210により、ρベースのマイクロ・プロセッサ200は、メモリからの次の命令を実行することができるようになる。ρベースのマイクロ・プロセッサ200は、アドレス・バス(図示せず)およびデータ・バス(図示せず)との間の情報をバッファリングするためのアドレス・バッファ218およびデータ・バッファ216を含む。
本発明の様々な実施形態に従って使用する「プロセス」という用語は、アクションを実行することにより進展する能力を有する、または他のプロセスの進展を可能にする、1つまたは複数の計算エンティティの動的な表現である。言い換えれば、「プロセス」という用語は、計算エンティティの双対的性質のうちの1つを表している。計算エンティティが静的であるときには、プログラムを見ることなどによって、計算エンティティを検査することができる。計算エンティティが(プロセスとして)動いているときには、計算エンティティを見ることはできないが、その行動は、本発明の様々な実施形態によって形成したρ計算法の言語300によって、表現されることが可能であり、また検査されることが可能である。図3Aを参照されたい。ρ計算法の言語300は、文法、構造的合同に関する規則、および操作的意味論(operational semantics)に関する規則を含む。言語300の文法は、容認可能な(permissible)プログラミング文を形成するためにプロセスおよび名前の構文要素を統合するやり方を定義する規則の体系である。言い換えれば、言語300の文法で正しく表現できない場合には、特に、名前を得るためのプロセスのリテラル化などの概念の通信を行うことができない。式が正しく形成されると、意味論の規則がその式を意味と結びつける。プロセスは動的なものなので、言語300は、操作的意味論(operational semantics)を使用して意味をプロセスに結合する。言い換えれば、プロセスは、そのアクションを実行することによって、または他のプロセスと相互作用することによって、進展する。言語300の式の意味を理解することは、その操作(operation)を理解することに直接に関係する。構造的合同に関する規則は、言語300の操作的意味論を、ある式を別の式と同一視できるという点で、単純化することを可能にする。したがって、これらの規則はρ計算法の言語300の式の置換に適用できるので、操作的意味論のためのいくつかの規則は、その数を少なく抑えることができる。ρ計算法の言語300の表現の構文要素302〜314は、単独で使用することができ、または置換の形で組み合わせてプロセス間の計算のニュアンスを表現することができる。ρ計算法の言語300に関する構文規則は図3Aを参照して説明される。構造的合同規則は図8F〜8Hを参照して説明される。操作的意味論の規則は図8J〜8Rを参照して説明される。
プロセスおよび名前は、ρ計算法の言語300を使用して表現することができる(その後で、好ましくはρサービスに渡すことができる)。行302では、1つのプロセスに対するある定義”P::=0”を記述しており、ここで、記号Pはプロセスを表し、記号”::=”はその左辺の項の定義がこれから開始されようとしていることを表し、構文要素”0”は、そのプロセスが不活性である、または終了していることを表す。行304では、記号Pによって表されるプロセスに関する別の構文要素”X[X]”を定義しており、ここで、記号Xは、行314で記述され、ρ計算法の言語300における名前を表し、記号X[X]は、記号Xによって表される名前などの計算エンティティが記号Xによって表される名前を介して送ることができることを表す。行306では、プロセスPに関する別の定義を提供している。行306の構文要素は、入力アクション”X(X).P”を記述しており、ここで記号Xは行314で記述される名前を表し、記号”X(X)”は、Xによって表される名前を介して任意の名前を受け取り、受け取った名前をカッコで囲まれた名前Xに代入して、Pによって表される別のプロセスとして継続することのできるアクションを表す。行308では、Pによって表されるプロセスに関する別の構文要素を”LIFT X.P”として記述しており、ここで記号Xは行314に記述される名前を表し、記号Pは構文要素302〜312によって定義されるプロセスを表し、構文要素”LIFT X.P”は記号Pによって表されるプロセスのリテラル化が、記号Xによって表される名前で送られまたは利用可能になることを表す。LIFT演算子により、プロセスの動的な組成が、通信で使用するための名前としてそうしたプロセスを具象化(reify)する前に行えるようになる。行310では、記号Pによって表されるプロセスに関する別の構文要素”P|P”を提供しており、ここで、記号Pは構文要素302〜312の定義するプロセスを表し、縦棒”|”は、2つのプロセスの組成を、各プロセスが独立に進行し、共有名を介して相互作用するものとして表す(言い換えれば、2つのプロセスは互いに並列または並行して動作する)。行312に示す構文要素”>X<”は、記号Xによって表される名前の非リテラル化を表す。行312では、記号Pによって表されるプロセスのもついくつかの性質のうちの双対性という性質の一方の性質、すなわち記号Xによって表される名前の非リテラル化を示している。もう一方の性質は行314に記述してあり、そこでは、記号Xによって表される名前が記号Pによって表されるプロセスのリテラル化<P>であると定義されている。こうしたρ計算法の言語300におけるプロセスと名前との反射的性質は、プロセスでも名前でもありうるという点で、計算エンティティの双対性を明らかにする。
図3Bには、計算エンティティ316の双対的な性質を示している。計算エンティティ316は、プロセス316Aであり、これはρ計算法の言語300の構文要素302〜312を用いて表現される。本明細書でこれまでに論じたように、プロセス316Aは計算エンティティ316の動的な性質を表している。計算エンティティ316の静的な性質は、名前316Bであり、これはρ計算法の言語300の行314に示した構文要素を用いて表現することができる。プロセス316Aをリテラル化または変換して名前316Bにすると、そうした名前の送信を、2つのプロセス間の通信セッション中にポート322を介して行うことができる。行304で表現される構文要素X[X]を参照されたい。名前316B(通信後の名前316Bを区別するため、新しい符号318Aを使用する)をポート322のもう一方の端で受け取ると、名前318Aが、数学的に非リテラル化してプロセス318Bを得ることができ、これはプロセス316Aと等価となる。まとめて言えば、計算エンティティ318は名前318Aとプロセス318Bのどちらでもあることになる。
ρ計算法の言語の変種400は、ρ計算法の言語300に基づいており、型付きプロセスを用いる名前の作成(production)に対して制御を可能にする。図4Aを参照されたい。ρ計算法の言語の変種400は、ρ計算法の言語300に関して説明した構文要素と同様のいくつかの構文要素を含む。たとえば、記号Pによって表されるプロセスは、構文要素”0”によって表される不活性プロセスまたは終了プロセスを含む。行402を参照されたい。行404では、構文要素”X[Y]”によって表される出力プロセスを記述しており、ここで記号Xは行414で定義され、記号Yは行416で定義され、合わせて構文要素”X[Y]”は、記号Yによって表される名前が記号Xによって表される名前を介して送られることを表す。行406では、構文要素”X(Z).P”を記述しており、ここで記号Xは行414で定義される名前を表し、記号Zは行418で記述する別の名前を表し、記号Pは行402〜412でその定義が記述されるプロセスを表し、合わせて構文要素”X(Z).P”は、記号Xによって表される名前が他任意の名前を受け取ることができ、その後、受け取った名前を記号Zによって表される名前に置換して、記号Pによって表されるプロセスが実行されることを表す。行408で記述される構文要素”LIFT X.P”は、記号Pによって表されるプロセスの別の定義を提供している。本質的に、行408では、記号Pによって表されるプロセスが、記号Xによって表される名前で、リフトされること、または利用可能になることができることを記述している。プロセスの並行実行、または並列して動作する2つのプロセスの組成を、行410で”P|P”で記述しており、ここで縦棒”|”の両側の記号Pは並列して動作する2つのプロセスを表す。行412では、記号Pによって表されるプロセスを得るために記号Xによって表される名前を非リテラル化する構文要素>X<を記述している。構文要素”<P>”は、記号Pによって表されるプロセスのリテラル化を表しており、この後、記号Xによって表される名前が得られる。行414を参照されたい。行416にある構文要素<P>,P:Tは、記号Yによって表される名前の作成が行414のそれと同様であることを記述している。しかし、記号Yによって表される名前の作成は、記号Pによって表されるプロセスが記号Tによって表される特定の型の要素の生成でなければならない点で制約されている。1つの適切な型Tは、パターン認識器であるプロセスを選択する型を含むが、他の適切な型も使うことができる。記号コロン”:”は、記号Pによって表されるプロセスが、記号Pによって表されるプロセスのリテラル化<P>が可能ではないと言うことなく、記号Tによって表される特定の型に属することを表す。記号Zによって表される名前も同様に行418で構文要素<P>,P:Uで制約されている。記号Zによって表される名前は、記号Pによって表されるプロセスPをリテラル化することによって作り出されるが、そのようなプロセスPは記号Uによって表される型の要素でなければならない。1つの適切な型Uは、値を表すプロセスを選択する型を含むが、そのようなプロセスに限定されるものではなく、他の適切な型も使用することができる。記号T、Uによって表される型は、プロセスベースの環境で通信のプリミティブである、名前へと進展するプロセスに対する精密な(minute)制御を可能にする。
図4Bには、2つの計算エンティティ420、422が示されている。計算エンティティ422は、プロセス422Aを含むが、プロセス422Aがリテラル化に適した型のものである場合に、リテラル化して名前422Bに変換することができる。名前422Bはポート424を介して送ることができる。(議論を簡単にするために、名前422Bはポート424の終端で受け取られたときには新しい符号428Bで参照することとする。)名前428Bは、受け取られると、非リテラル化してプロセス428Aを得ることができるが、これは元来のプロセス422Aと等価である。計算エンティティ420は、プロセス420Aを含むが、プロセス420Aが名前に進展することができるプロセス型の要素ではないため、対応する名前を構築することはできない。したがって、プロセス420Aのリテラル化は、プロセス420Aの属する型がρ計算法の言語の変種400に従って名前を構築することが許されていないため、抑制される。
図5Aには、ρ計算法の言語300、400に基づく、別のρ計算法の言語の変種500の一部が示されている。ρ計算法の変種500の多くの構文要素はρ計算法の言語300、400と同様である。たとえば、行502では、行302、402で定義されるものと同様の、不活性または停止(stop)プロセスが定義される。行504では、行304、404で定義されるものと同様の、出力プロセスが定義される。行506では、行306,406で定義されるものと同様の、プロセスPが後続する入力プロセスが定義される。行508では、行308、408で定義されるもの同様のリフト・アクションが定義される。行510では、行310、410で定義されるものと同様の、互いに並列して動作するプロセスの組成が定義される。行512では、行312、412で定義されるものと同様の記号Pによって表されるプロセスを得るための名前の非リテラル化が定義される。行514では、Xによって表される名前が”<P>,#(P)≦K”で定義され、ここで記号Pは構文要素502〜512の定義するプロセスを表し、記号”<P>”は記号Pによって表されるプロセスのリテラル化を表し、記号”,”は記号Pによって表されるプロセスのリテラル化に対する制約がこれから開始されようとしていることを表し、記号”#”は、プロセスを引数として取ってプロセスの構文木の大きさを出力する(produce)関数を表し、ここで、記号”#(P)”は記号Pによって表されるプロセスに関して構文木の大きさを出力する関数が実行されることを表し、記号”≦”は記号Pによって表されるプロセスの構文木の大きさがある定数より小さいか等しいことを表し、記号Kはリテラル化することが許される定数で、記号Pによって表されるプロセスに関する構文木の最大の大きさである定数、を表す。行514により、ρ計算法の言語の変種500が、アクションの実行または他のプロセスとの相互作用に参加するためにリテラル化し名前を作成できるプロセスの大きさを制約し、封じ込め(confine)、または制限することができるようになる。
図5Bには、ρ計算法の言語の変種500が名前の作成を制限するのに使用できる制約を視覚的に示している。図5Bでは、2つの計算エンティティ520、522およびその対応する構文木520C、522Cを示している。計算エンティティ520はプロセス520Aをもつが、対応する名前520Bを構築することが禁止される。計算エンティティ522は、プロセス522Aを含むが、対応する名前522Bを構築する自由がある。構文木520C、522Cのそれぞれは、ノードはオペレーションを表し、そのノードの子はそのオペレーションの引数を表す階層構造である。たとえば、構文木520Cのノード520Eには、置換の記号”=”が格納されている。ノード520Eの子は、変数ACCELERATION520Dおよび除算の記号”/”520Hを含んでいる。除算の記号”/”520Hは、別のノード520Hを形成し、これには2つの子がある。MILES520Fはノード520Hの一方の子であり、もう一方の子はHOUR520Gである。HOUR520Gは、除算オペレーション”/”を格納する別のノード520Iと結合されている。ノード520Iには、別の子HOUR520Jがある。
構文木522Cに関しては、ノード522Eには置換の記号”=”が格納されている。ノード522Eの子は、変数VELOCITY522Dを含む。ノード522Hは、ノード522Eの子であり、除算オペレーション”/”を格納している。ノード522Hの子が2つあり、それは変数MILES522F、および変数HOUR522Gである。構文木522Cは、構文木520Cより大きさが小さい。行514で定義した制約に従って、計算エンティティ522は、構文木522Cが特定のしきい値を下回るため、プロセス522Aをリテラル化して名前522Bを構築することができる。計算エンティティ520は、そのプロセス520Aの大きさがこのしきい値を超える構文木をもっているので、そうすることはできない。
図6Aには、ρ計算法の言語の変種300〜500の1つを用いて形成される複製サービス600を示している。従来のπ計算法の数学(mathematics)では、記号”!P”は互いに並列して動作するプロセスの無限の組成を表す。そのような無限の計算エンティティは、資源の有限なマイクロ・プロセッサなどの集積回路上での実行では、理論的に両立しない。本発明の様々な実施形態により、そのようなプリミティブがρ計算法の言語300〜500から取り除かれる。それでも、無限の組成の概念をエミュレートすることは、サービスをρ計算法の言語300〜500で書くことによって可能である。複製サービス600が1つの例となる。行602では、無限の組成”!P”は、数学的に”LIFT X.(X(Y).(>Y<|X[Y])|P)|X(Z).(>Z<|X[Z])”であると定義されている。数学的な項LIFT X.(X(Y).(>Y<|X[Y])|P)は、数学的な項X(Z).(>Z<|X[Z])によって表される別のプロセスに対して並列に動作するプロセスである。
図6Bには、複製サービス600が実行中の状況を動的に示している。数学的な項(X(Y).(>Y<|X[Y])|P)はプロセスP1 606を表している。ここで、項X(Y)は、ある名前をチャネルX上で受け取ることができ、その後、そのような名前が名前Yに代入されることになることを表す。プロセス>Y<は、プロセスX(Y)がアクションを実行した後、プロセスX[Y]と並列して動作することになる。項>Y<は、プロセスX[Y]と並列して動作することになるプロセスを得るための名前Yの非リテラル化を表す。項X[Y]は、名前Yが名前Xによって表されるチャネルに沿って送ることができることを表す。プロセスの組成X(Y).(>Y<|X[Y])は、別のプロセスPと並列して動作する。
プロセス604、すなわちLIFT X.(X(Y).(>Y<|X[Y])|P)は、数学的にX[<P1>]に簡約可能(reducible)であり、ここで項P1はプロセスの組成(X(Y).(>Y<|X[Y])|P)である。数学的な項X[<P1>]は、プロセスP1がリテラル化されて、名前Xによって表されるポートで利用可能にされることを意味する。プロセスP1がリテラル化されて名前Xで利用可能になると、プロセスX(Z)は項<P1>を受け取り、これが名前Zに代入されることになる。プロセスX(Z)の分解(resolution)は、項<(X(Y).(>Y<|X[Y])|P)>を含む。プロセスX(Z)608がアクションを実行すると、プロセス>Z<610が活性化する。プロセス>Z<610は、名前Zが非リテラル化されて、数学的に(X(Y).(>Y<|X[Y])|P)と記述される、プロセスP1 606を再構成することを表す。このプロセス(X(Y).(>Y<|X[Y])|P)は、今度は別のプロセスX[Z]612と並列して動作する。プロセスX[Z]612は、名前Zが、プロセスP1 606のリテラル化への代用(substitution)であり、Xという名前のポートで送り出されるという点で、プロセスLIFT X.(X(Y).(>Y<|X[Y])|P)604を簡約したもの(reduction)と似ている。複製またはプロセスの無限の組成は、プロセス>Z<610の項X(Y)が、名前Xで出力されようとしている名前Zを受け取るときに実現される。プロセス(X(Y).(>Y<|X[Y])|P)の組成における一連のアクションおよび相互作用がもう一度起きて、これにより、π計算法の複製プリミティブがエミュレートされる。
図7Aに、名前サービス700を示す。名前サービス700は、ρ計算法の言語300〜500のうちの1つで書かれている。名前サービス700は、π計算法における新しい名前の実装についての問題点を回避または低減するために、新しい名前の新規作成を、言語のプリミティブとするのではなく、サービスに入れられることの容易さを例示している。項N(I,X,F,R)は、名前サービス700に対する署名702を表す。4つの名前、I,X,F,Rが、署名702に提供される。第1の名前はポートI上で送られ、残りの名前はポートX上で送られ、ポートFは、名前サービス700に提供されるすべての名前と異なる新しい名前を受け取るのに使用される。
行704は、加数(summand)I(Y).(LIFT R.(Y[<0>]|N(I,X,F,R))を定義し、これは名前サービス700の1つの機能を記述している。行704では、名前サービス700の初期化機能のためにアクションを実行し、および相互作用するプロセスが表現されている。行706は、別の加数X(Y).R(S).(LIFT R.(Y[<0>]|>S<)|N(I,X,F,R))であり、これは名前サービス700の主要な機能を表現している。行708では、また別の加数F(B).R(S).LIFT B.(<0>[<0>]|>S<)が定義されており、これは名前サービス700に提供される他の名前とは異なる名前の作成において仕上げのためにアクションを実行するおよび相互作用するプロセスを表現している。
図7Bには、名前サービス700の加数の構成要素のアクションの実行および相互作用を視覚的に示している。名前サービス700は、プロセスP1 710によってまとめて表してある。プロセスI(Y)712は、活性化して名前Iを介して任意の名前を受け取り、その後、受け取った名前を名前Yに代入する。次に、プロセスの組成(LIFT R.Y[<0>]|P1)714が活性化する。プロセスの組成714は、簡約されてプロセスの組成R[<Y[<0>]>]|P1になり、ここで、項<0>は不活性プロセス0のリテラル化を表し、項Y[<0>]は不活性プロセス0のリテラル化が名前Yで利用可能になることを表し、項R[<Y[<0>]>]はプロセスY[<0>]のリテラル化を表し、そのようなリテラル化が名前R(これは累算した情報を格納するためのレジスタ(register)を表す)で利用可能になることを表す。項|P1は、プロセスP1 710がプロセス項R[<Y[<0>]>]と並列して動作することを表す。プロセス712、714は、行704で記述されている加数での名前サービス700の機能を例示する。
プロセスX(Y)716は、行706で示す加数における第1のアクションを表現し、名前サービス700の別の機能を示している。項X(Y)は、ポートXを介して任意の名前を受け取ることができ、その後、そのような受け取った名前が名前Yに代入されることを表す。プロセスX(Y)716がアクションを実行した後、別のプロセスR(S)718が活性化される。項R(S)は、名前Rによって任意の名前を受け取ることができ、その後、そのような受け取った名前が別の名前Sに代入されることを表す。プロセスR(S)718がアクションを実行した後、別のプロセスの組成(LIFT R.(Y[<0>]|>S<)|N(I,X,F,R))720が活性化する。プロセスの組成720は、数学的に別のプロセスの組成、R[<(Y[<0>]|>S<)>]|P1に簡約することができ、ここで項<0>は不活性プロセス0のリテラル化を表し、項Y[<0>]は項<0>をポートYで送ることを表し、項|はプロセスY[<0>]が別のプロセスと並列して実行されることを表し、項>S<は名前Sが非リテラル化されていることを表し、項<(Y[<0>]|>S<)>は、プロセスの組成(Y[<0>]|>S<)のリテラル化を表し、項R[<(Y[<0>]|>S<)>]は、プロセスの組成(Y[<0>]|>S<)のリテラル化が名前Rで利用可能になることを表し、項|P1は、名前サービス700がプロセスP1と並列して動作していることを表す。プロセス716、718および720は行706にある加数の構成要素であり、この被加数は、名前サービス700の主要な機能を記述している。
プロセスF(B)722は、ポートFを介して任意の名前を受け取り、その後、この受け取った名前が名前Bに代入されることを可能にする。名前Bは、名前サービス700に提示される他の名前とは異なる名前が得られるコールバックポートを表す。プロセスF(B)722がアクションを実行した後、別のプロセスR(S)724が活性化する。プロセスR(S)724は、名前Rを介して任意の名前を受け取り、その後、受け取った名前は名前Sに代入される。プロセスR(S)724は、新しい名前についての累算済み情報に関するメモ(scratch)情報を格納するレジスタを指す。このプロセスの後、R(S)724がアクションを実行した後に、別のプロセスLIFT B.(<0>[<0>]|>S<)726が活性化する。プロセスLIFT B.(<0>[<0>]|>S<)726は、簡約してプロセスB[<(<0>[<0>]|>S<)>]にすることができ、ここで、項0は不活性プロセスまたはプロセスの終了を表し、項<0>は不活性プロセス0のリテラル化を表し、項<0>[<0>]は不活性プロセス0のリテラル化から得られる名前が不活性プロセス0のリテラル化を出力するポートとして使用されることを表す。項(<0>[<0>]|>S<)は、プロセス<0>[<0>]が別のプロセス>S<と並列して動作していることを表し、項>S<は、名前Sが非リテラル化されつつあることを表し、項B[<(<0>[<0>]|>S<)>]は、プロセスの組成(<0>[<0>]|>S<)のリテラル化がポートBで利用可能になることを表す。
図8A〜8Rには、複製サービス600や名前サービス700などのρ計算法のプログラムをコンパイルまたは実行するための方法800を示している。ρ計算法のプログラムを分析する際、方法800は、ρ式の構造およびコンテンツを規定する複数組の構文規則を実行する。ρ式の構造的合同を規定する複数組の等式規則(equational laws)も、方法800によって実行される。また、言語300〜500などのρ計算法の言語は、ρ計算法の言語300〜500の複数組の構文規則に従って正しく形成されたρ式の意味を規定する複数組の操作意味論の規則を含む。明瞭さのために、方法800の以下の説明では、図3A〜5Aに示すρ計算法の言語300〜500に関して例示した様々な要素への参照を行う。
本題からそれるが、方法800は、好ましくはρベースのマイクロ・プロセッサ200の構成要素またはρベースのマイクロ・プロセッサのアレイを同期させるために使用できるコンパイラの一部を形成する。この同期の制御は、マイクロ・プロセッサが提供する暗黙の制御に依存せずに、コンパイラによって明示的に制御される。最近のCISCベースのマイクロ・プロセッサでは、実行されそうな次の命令についての推測を提供する回路を利用して、プログラムの実行を高速化するようになっている。たとえば、一部のCISCベースのマイクロ・プロセッサでは、プログラム中で分岐が起きるか起こらないかを推測し、適当な場所から実行コードをフェッチするプリフェッチと呼ばれる命令を使用する技法が使用される。分岐命令が実行されると、この命令および次に実行される命令がバッファに格納される。この情報を使用して、次にこの命令が実行されるときはどちらに分岐するかを予測する。この予測が正しければ、これはうまく働く。この予測が正しくなければ、分岐の実行によってキャッシュヒットがはずれ、またはパイプラインブレイクが生じ、その結果システムは次の命令を取り出す必要によって劇的に遅くなる。この問題は、実行プログラムが逐次的でなく非同期であり、並列性が要求されるとき、複雑化される。
本発明の様々な実施形態のコンパイラは、CISCベースのマイクロ・プロセッサから予測の必要性を減少させる。本発明の様々な実施形態のコンパイラにより、単一の集積回路上または複数の集積回路上にある1つまたは複数のマイクロ・プロセッサ上での明示的な同期モデルを創出することが可能になる。本発明の様々な実施形態のコンパイラは、アセンブリ言語にまさるものとして区別可能な、ρ計算法の言語300〜500などの、数学的言語で書かれたプログラムのコンパイルを行う。アセンブリ言語では、それぞれの文が単一のマシン命令に対応する省略形またはニモニック・コードが使用される。ρ計算法の言語300〜500は、基礎にある機械語の上に、アセンブリ言語から発展したある抽象化のレベルを提供する。ρ計算法の言語300〜500の文は、コンピュータの言語の構造を定義する1組の構文的および意味論的な規則を定義する。プロセスと名前との協調およびプロセスの進展(evolution of processes)のもつ置換的ニュアンスが、ρ計算法の言語300〜500を用いて表現することが可能になる。こうした表現力のニュアンスは、ρ計算法の言語300〜500の数学(mathematics)によって適切に保存され、その結果プログラマの意図は、アセンブリ言語や機械語などの低水準言語へのコンパイルの過程で弱められることなく、最終的に実現される。従来のプログラミング言語では、プログラマの意図は、プログラムが高水準言語から低水準言語へとコンパイルされる際に融けるようにして失われてしまう。高水準言語は低水準言語よりも表現力が高く、これは高水準言語の含む情報がより多いためであるが、望ましくないことに、この情報がコンパイルまたはリンクの過程で取り除かれてしまっている。
図8Aに戻ると、開始ブロックから、方法800は、継続ターミナル(「ターミナルA」)と出口ターミナル(「ターミナルB」)の間で定義される1組の方法ステップ802へと進む。この1組の方法ステップ802は、ρ文(ρ statement)の構造およびコンテンツを規定する構文規則に照らしてρ計算法のプログラムを動作させる。ターミナルA(図8B)から、方法800は、ブロック808へと進み、ここでρ計算法のプログラムまたはサービスからρ式(Π)を抽出する。次に、判断ブロック810で、検査を行ってそのρ式が”0”という形をしているかどうかを決定する。判断ブロック810での検査の答えがYESである場合、方法800はブロック812に進み、ここでそのρ式は、不活性または停止アクションを表すρプロセスとなる。次いで、方法は別の継続ターミナル(「ターミナルA4」)へと続く。判断ブロック810での検査の答えがNOである場合、方法800は別の判断ブロック814に進み、ここで別の検査を行ってそのρ式がX[Y]の形をしているかどうかを決定する。判断ブロック814での検査の答えがYESである場合、そのρ式は、名前Yが名前Xで利用可能になる出力アクションを表すρプロセスとなる。次いで、方法800はターミナルA4へと進む。判断ブロック814での検査の答えがNOである場合、方法800は別の継続ターミナルへと続く(「ターミナルA1」)。
ターミナルA1(図8C)から、方法800は判断ブロック818へと進み、ここでそのρ式がX(Z).Pの形をしているかどうかを決定する。判断ブロック818での検査の答えがYESである場合、そのρ式は、入力アクションに続くプロセスPを表すρプロセスとなる。言い換えれば、名前Xによって任意の名前を受け取ることができ、その後、受け取った名前で名前Zが置き換えられ、そのプロセスはプロセスPを継続する。方法800はターミナルA4へと進む。判断ブロック818での検査の答えがNOである場合、方法800は判断ブロック822に入り、ここで別の検査を実行してそのρ式がLIFT X.Pの形をしているかどうかを決定する。判断ブロック822での検査の答えがYESである場合、そのρ式は、リフト・アクションを表すρプロセスとなる。ブロック824を参照されたい。次いで、方法800はターミナルA4へと続く。判断ブロック822での検査の答えがNOである場合、方法800は別の継続ターミナル(「ターミナルA2」)へと進む。
ターミナルA2(図8D)から、方法800は判断ブロック826へと進み、ここで検査を行ってそのρ式がP|Pの形をしているかどうかを決定する。判断ブロック826での検査の答えがYESである場合、そのρ式は、組成として別のプロセスと並列して動作するプロセスを表すρプロセスとなる。ブロック828を参照されたい。次いで、方法800はターミナルA4へと進む。判断ブロック826での検査の答えがNOである場合、方法800は別の判断ブロック830へと進み、ここで検査を行ってそのρ式が>X<の形をしているかどうかを決定する。判断ブロック830での検査の答えがYESである場合、そのρ式は、名前Xの非リテラル化を表すρプロセスである。次いで、方法800はターミナルA4へと進む。判断ブロック830での検査の答えがNOである場合、次いで方法800は別の継続ターミナル(「ターミナルA3」)へと進む。
ターミナルA3(図8E)から、方法800は判断ブロック834へと進み、ここで検査を行ってそのρ式が<P>,#(P)≦Kの形をしているかどうかを決定する。判断ブロック834での検査の答えがYESである場合、そのρ式は名前Xなどの名前を表現するρプロセスPのリテラル化となる。構文フレーズ”#(P)≦K”は、名前の作成においてρプロセスのリテラル化に制約が課されていることを表す。1つの適切な制約は、ρプロセスPの構文木の大きさを、それを超えるとプロセスPのリテラル化からは名前の作成ができないような特定のしきい値と比べて検査することを含む。他の制約も、ρプロセスを実行するマイクロ・プロセッサに結合された有限な資源の一部を少なくともその制約がモデル化している限りは可能である。次いで、方法800はターミナルA4へと続く。判断ブロック834での検査の答えがNOである場合、方法800は別の判断ブロック838へと続き、ここで検査を行ってそのρ式が<P>,P:Tの形をしているかどうかを決定する。判断ブロック838での検査の答えがYESである場合、そのρ式は、型Tの制約するρプロセスのリテラル化となる。ブロック840を参照されたい。ρプロセスが特定の型のメンバであることを強制することにより、リテラル化して名前を形成することのできるプロセスの型に対する管理が支障なく行われ、したがってプロセスの通信機能に対する管理が行われる。次いで、方法800はターミナルA4へと続く。判断ブロック838での検査の答えがNOである場合にも、方法800はターミナルA4へと続く。判断ブロック842では検査を行ってまだ評価すべきρ式があるかどうかを決定する。答えがNOである場合、方法800は出口ターミナルBへと続く。そうでない場合、判断ブロック842での検査の答えはYESとなり、方法800は別の継続ターミナル(「ターミナルA5」)へと進む。ターミナルA5(図8B)から、方法800はブロック808へとループを戻り、ここで上記の処理ステップが繰り返される。
出口ターミナルBから、方法800は、継続ターミナル(「ターミナルC」)および出口ターミナル(「ターミナルD」)の間で定義される、1組の方法ステップ804へと続く。この1組の方法ステップ804では、1組の等式規則を使用してρ式を構造的合同に関して検査する。ターミナルC(図8F)から、方法800はブロック844へと進み、ここで方法800は1個のρ式を抽出する。ブロック846で、検査を行ってそのρ式が<>X<>の形をしているかどうかを決定する。判断ブロック846での検査の答えがYESである場合、方法800は、そのρ式が名前Xと構造的に合同であると推論する。ブロック848を参照されたい。次いで、方法800は別の継続ターミナル(「ターミナルC3」)へと続く。そうでない場合、判断ブロック846での検査の答えはNOとなり、方法800は判断ブロック850へと進み、ここで別の検査を行ってそのρ式がP|0の形をしているかどうかを決定する。判断ブロック850での検査の答えがYESである場合、方法800は、そのρ式がプロセスPと構造的に合同であると推論する。次いで、方法800はターミナルC3へと入る。そうでない場合、判断ブロック850での検査の答えはNOとなり、方法は別の継続ターミナル(「ターミナルC1」)へと続く。
ターミナルC1(図8G)から、方法800は判断ブロック854へと進み、ここで検査を行ってそのρ式が0|Pの形をしているかどうかを決定する。判断ブロック854での検査の答えがYESである場合、方法800は、そのρ式がプロセスPと構造的に合同であると推論する。ブロック856を参照されたい。方法800はターミナルC3へと入る。判断ブロック854での検査の答えがNOである場合、方法800は引き続いて判断ブロック858で別の検査を実行して、そのρ式がP|Pの形をしているかどうかを決定する。判断ブロック858での検査の答えがYESである場合、方法800は、そのρ式がプロセスの組成P|Pと構造的に合同であると推論する。ブロック860を参照されたい。方法800はターミナルC3へと続く。判断ブロック858での検査の答えがNOである場合、方法800は別の継続ターミナル(「ターミナルC2」)へと続く。
ターミナルC2(「図8H」)から、方法800は判断ブロック862へと続き、ここで検査を行ってそのρ式が(P|P)|Pの形をしているかどうかを決定する。判断ブロック862での検査の答えがYESである場合、そのρ式はプロセスの組成P|(P|P)と構造的に合同となる。方法800はターミナルC3へと続く。判断ブロック862での検査の答えがNOである場合にも、方法800はターミナルC3へと続く。
ターミナルC3(図8I)からは、判断ブロック866で方法800は検査を行って評価すべきρ式がまだあるかどうかを決定する。答えがNOである場合、方法800は出口ターミナルDへと続く。そうでない場合、判断ブロック866での検査の答えはYESとなり、方法は別の継続ターミナル(「ターミナルC4」)へと続く。ターミナルC4(図8F)からは、方法800はブロック844へとループを戻り、ここで上述の処理ステップが繰り返される。
出口ターミナルD(図8A)から、方法800は、継続ターミナル(「ターミナルE」)と出口ターミナル(「ターミナルF」)の間で定義される1組の方法ステップ806へと進む。この1組の方法ステップ806は、ρ計算法のプログラムを1組の操作的意味論の規則に照らして動作させてρプロセスの表現の意味を検査する。ターミナルE(図8J)から、方法800はブロック868へと進み、ここで方法800は評価のため1個のρ式を抽出する。方法800は判断ブロック870へと進み、ここで検査を行ってそのρ式がLIFT X.Pの形をしているかどうかを決定する。判断ブロック870での検査の答えがYESである場合、そのρ式を簡約してX[<P>]にする。次いで方法は別の継続ターミナル(「ターミナルE11」)へと続く。判断ブロック870での検査の答えがNOである場合、方法800は、判断ブロック874で別の検査を実行し、ここでそのρ式がP|Pの形をしているかどうかを決定する。判断ブロック874での検査の答えがYESである場合、方法は別の継続ターミナル(「ターミナルE1」)へと続く。そうでない場合、判断ブロック874での検査の答えはNOとなり、方法800は別の継続ターミナル(「ターミナルE2」)へと入る。
ターミナルE1(図8K)から、方法800は判断ブロック876へと進み、ここで検査を行って項Pを項Pに簡約可能(reducible)とすることができるかどうかを決定する。判断ブロック876での検査の答えがYESである場合、そのρ式を簡約してP|Pにする。次いで、方法800はターミナルE11へと続く。そうでない場合、判断ブロック874での検査の答えはNOとなり、方法800はターミナルE2へと続く。ターミナルE2(図8K)からは、検査を行ってそのρ式がPの形をしているかどうかを決定する。判断ブロック880を参照されたい。判断ブロック880での検査の答えがYESである場合、別の検査を実行して項Pが項Pと構造的に合同であるであるかどうかを決定する。判断ブロック882を参照されたい。判断ブロック882での検査の答えがYESである場合、方法800は別の継続ターミナル(「ターミナルE3」)へと進む。判断ブロック880または判断ブロック882での検査の答えがNOである場合、方法800は別の継続ターミナルへと入る(「ターミナルE4」)。
ターミナルE3(図8L)から、方法800は結合ブロック884へと進み、ここで検査を行って、項Pを項Pに簡約可能かどうかを決定する。判断ブロック884での検査の答えがYESである場合、判断ブロック886で別の
検査を行って、項Pは構造的に項Pと合同かどうかを決定する。判断ブロック886での検査の答えがYESである場合、方法800は、項Pを簡約して項Pにする。判断ブロック888を参照されたい。方法800はターミナルE11へと進む。判断ブロック884または判断ブロック886での検査の答えがNOである場合、方法800はターミナルE4へと続く。
ターミナルE4(図8L)からは、方法800は検査を実行してそのρ式がX[X]|X(X).Pの形をしているかどうかを決定する。判断ブロック890を参照されたい。判断ブロック890での検査の答えがYESである場合、方法800は別の継続ターミナル(「ターミナルE5」)へと進む。そうでない場合、判断ブロック890での検査の答えはNOとなり、次いで方法は別の継続ターミナル(「ターミナルE9」)へと入る。
ターミナルE5(図8M)からは、そのρ式を簡約して第2のρ式(Π1)、すなわちP{X/X}にする。ブロック892を参照されたい。判断ブロック894で検査を実行して、第2のρ式が(0)>{<Q>/<P>}<の形をしているかどうかを決定する。判断ブロック894での検査の答えがYESである場合、この第2のρ式をプロセス0と等しいと置く(equate)ことができる。ブロック896を参照されたい。次いで、方法800はターミナルE11に進む。そうでない場合、判断ブロック894での検査の答えはNOとなり、方法800は別の判断ブロック898へと進んで、ここで別のテストを実行して第2のρ式が(R|S)>{<Q>/<P>}<の形をしているかどうかを決定する。判断ブロック898での検査の答えがYESである場合、第2のρ式を(R)>{<Q>/<P>}<|(S)>{<Q>/<P>}<と等しいと置くことができる。ブロック899を参照されたい。方法800はターミナルE11へと続く。判断ブロック898での検査の答えがNOである場合、方法800は別の継続ターミナル(「ターミナルE6」)へと続く。
ターミナルE6(図8N)からは、方法800は、判断ブロック897で検査を実行して第2のρ式が(X(Y).R)>{<Q>/<P>}<の形をしているかどうかを決定する。判断ブロック897での検査の答えがYESである場合、第2のρ式を(X){<Q>/<P>}(Y).((R)>{<Q>/<P>}<)と等しいと置くことができる。ブロック895を参照されたい。方法800はターミナルE11へと進む。判断ブロック897での検査の答えがNOである場合、方法800は判断ブロック893へと入り、ここで別の検査を行って第2のρ式が(X[Y])>{<Q>/<P>}<の形をしているかどうかを決定する。判断ブロック893での検査の答えがYESである場合、第2のρ式を(X){<Q>/<P>}[(Y){<Q>/<P>}]と等しいと置くことができる。ブロック891を参照されたい。方法800はターミナルE11へと進む。判断ブロック893での検査の答えがNOである場合、方法800は別の継続ターミナル(「ターミナルE7」)へと進む。
ターミナルE7(図8O)から、方法は判断ブロック889へと続き、ここで検査を実行して第2のρ式が(LIFT X.R)>{<Q>/<P>}<の形をしているかどうかを決定する。判断ブロック889での検査の答えがYESである場合、第2のρ式を(LIFT X){<Q>/<P>}.(R)>{<Q>/<P>}<と等しいと置くことができる。ブロック887を参照されたい。方法800はターミナルE11へと進む。判断ブロック889での検査の答えがNOである場合、方法800は、判断ブロック885で別の検査を行って第2のρ式が(>X<)>{<Q>/<P>}<の形をしているかどうかを決定する。判断ブロック885での検査の答えがYESである場合、方法800は別の継続ターミナル(「ターミナルE8」)へと入る。そうでない場合、判断ブロック885での検査の答えはNOとなり、方法800はターミナルE9へと進む。
ターミナルE8(図8P)から、方法800は判断ブロック883へと進み、ここで検査を行って、名前Xが、プロセスPのリテラル化を表す<P>と構造的に合同であるかどうかを決定する。この答えがYESである場合、第2のρ式はプロセスQと等しいと置くことができる。ブロック881を参照されたい。方法800ターミナルE11へと入る。判断ブロック883での検査の答えがNOである場合、方法800はブロック879へと進み、ここで第2のρ式は、名前Xの非リテラル化である>X<と等しいと置くことができる。プロセスはターミナルE11へと続く。
ターミナルE9(図8Q)から、方法800は判断ブロック877へと進み、ここで検査を実行して第2のρ式が(X){<Q>/<P>}の形をしているかどうかを決定する。この答えがYESである場合、方法800は別の継続ターミナル(「ターミナルE10」)へと進む。そうでない場合、判断ブロック877での検査の答えはNOとなり、方法はターミナルE11へと進む。
ターミナルE10(図8R)から、方法800は判断ブロック875へと進み、ここで検査を行って、名前Xが、プロセスPのリテラル化を表す<P>と構造的に合同であるかどうかを決定する。判断ブロック875での検査の答えがYESである場合、第2のρ式は、プロセスQのリテラル化を表す<Q>と等しいと置くことができる。ブロック873を参照されたい。方法800はターミナルE11へと続く。判断ブロック875での検査の答えがNOである場合、方法800は、第2のρ式を名前Xと等しいと置くことができる。ブロック871を参照されたい。ブロック871から、方法800はターミナルE11へと続き、判断ブロック869で検査を行って、評価すべきρ式がまだあるかどうかを決定する。その答えがNOである場合、方法800は出口ターミナルFへと続き、ここで方法800は終わり、実行を終了する。そうでない場合、判断ブロック869での検査の答えはYESとなり、方法800は別の継続ターミナル(「ターミナルE12」)に進む。ターミナルE12から、方法800はブロック868へとループを戻り、ここで上記の処理ステップが繰り返される。
本発明の好ましい一実施形態を例示し説明してきたが、本発明の趣旨および範囲から逸脱することなくこの実施形態において様々な変更を行えることが理解されよう。
排他的な特性(property)または特権(privilege)が請求される本発明の実施形態は、特許請求の範囲で定義される。
π計算法のプログラムがCISCベースのマイクロ・プロセッサ上での実行のためにCISCベースのミドル・ウェアとインターフェースを取るコンピューティング・システムを示す構成図である。 本発明の一実施形態による、ρベースのミドル・ウェアとインターフェースを取る、ρベースのマイクロ・プロセッサ上での実行のためのサービスを示す構成図である。 本発明の一実施形態による、ρベースのマイクロ・プロセッサの内部アーキテクチャを示す構成図である。 本発明の一実施形態に従って形成される、プロセスプログラミング言語であるρ計算法の一部を示すテキスト図である。 本発明の一実施形態による、ρ計算法の反射的性質を示す絵画図である。 本発明の一実施形態による、プロセスが型付けされるプロセスプログラミング言語であるρ計算法の一部を示すテキスト図である。 本発明の一実施形態による、型を用いたρ計算法の反射的性質に対する制約を示す絵画図である。 本発明の一実施形態による、ρ計算法に基づく機械計算の一部を示すテキスト図である。 本発明の一実施形態による、構文木を用いたρ計算法の反射的性質に対する制約を示す絵画図である。 本発明の一実施形態による、複製サービスを実装するρ計算法のプログラムを示すテキスト図である。 本発明の一実施形態による、図6Aで静的に示した複製サービスを動的に示す絵画図である。 本発明の一実施形態による、新しい名前の新規作成を実装するρ計算法のサービスを示すテキスト図である。 本発明の一実施形態による、図7Aで静的に示した名前サービスを動的に示す絵画図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。 ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
符号の説明
100 コンピューティング・システム
102 CISCベースのマイクロ・プロセッサ
104 電源
106 メモリ
108 CISCベースのミドル・ウェア
110 π計算法のプログラム
200 ρベースのマイクロ・プロセッサ
202 内部データ・バス
204 累算器
206 算術論理演算ユニット
208 ステータス・レジスタ
210 プログラム・カウンタ
212 命令レジスタ
214 タイミングおよび制御
216 データ・バッファ
218 アドレス・バッファ
222 入出力装置
224 メモリ
226 ρベースのミドル・ウェア
228 サービス
300 ρ計算
316A プロセス
316B 名前
318A 名前
318B プロセス
400 ρ計算における型付きプロセス
420、422、428 計算エンティティ
420A、422A、428A プロセス
420B、422B、428B 名前
424 ポート
500 機械計算
520,522 計算エンティティ
520A、522A プロセス
520B、522B 名前
520D 加速度
520F マイル
520G 時間
520J 時間
522D 速度
522F マイル
522G 時間
600 複製サービス
602,604,606,608,610、612 プロセス
700 名前サービス
702 署名
710〜726 プロセス

Claims (53)

  1. 情報を処理して所望の結果を出力するためのコンピュータであって、
    プロセスをリテラル化することによって名前を表し、名前を非リテラル化することによってプロセスを表す式を含むサービスを格納するコンピュータ可読媒体と、
    名前を介して相互作用を行い、アクションを実行することまたは他のプロセスを進展させることによって進展するプロセスとして、前記サービスを実行するマイクロ・プロセッサと
    を備えることを特徴とするコンピュータ。
  2. 前記サービスは、統一資源指示子(uniform resource indicators)によって識別可能なポートを含み、行動タイプを賦与されることを特徴とする請求項1に記載のコンピュータ。
  3. 前記サービスは、あるサービスのポートの行動タイプが別のサービスの別のポートの別の行動タイプと互換性がある場合に組成されることを特徴とする請求項2に記載のコンピュータ。
  4. 前記マイクロ・プロセッサ上での実行のために前記サービスを協調させるための分散化されたオペレーティング・システムをさらに備えることを特徴とする請求項3に記載のコンピュータ。
  5. プロセスをリテラル化することによって名前を表し、名前を非リテラル化することによってプロセスを表す式を含むミドル・ウェアをさらに備え、前記ミドル・ウェアは前記サービスと前記分散化されたオペレーティング・システムの間に置かれることを特徴とする請求項4に記載のコンピュータ。
  6. 命令を実行するためのマイクロ・プロセッサであって、
    命令をメモリから取り出し、前記命令をデコードし、前記命令に関連するデータであって反射的プロセス代数におけるプロセスをリテラル化することによって得られる名前を含むデータをフェッチし、結果を保存するためのタイミングおよび制御ユニットと、
    前記命令の指定するオペレーションを実行するための算術論理演算ユニットと
    を備え、
    前記命令は反射的プロセス代数で表現され、前記反射的プロセス代数は、プロセスのリテラル化として名前を表し、名前の非リテラル化としてプロセスを表すことが可能であることを特徴とするマイクロ・プロセッサ。
  7. 前記実行済み命令の結果を格納するためのレジスタ・アレイをさらに備えることを特徴とする請求項6に記載のマイクロ・プロセッサ。
  8. 前記マイクロ・プロセッサが実行中の前記命令を保持するための命令レジスタおよびデコーダをさらに備えることを特徴とする請求項7に記載のマイクロ・プロセッサ。
  9. 前記マイクロ・プロセッサが内部的にはメモリ内へのデータを受け取ること、および前記マイクロ・プロセッサが外部的には前記実行済み命令の結果の通信を行うことを可能にするバス接続をさらに備えることを特徴とする請求項8に記載のマイクロ・プロセッサ。
  10. 前記タイミングおよび制御ユニット、前記算術論理演算ユニット、および命令レジスタおよびデコーダは、ポートと関連付けられる片務契約を有するポートを介して通信することを特徴とする請求項9に記載のマイクロ・プロセッサ。
  11. プロセスが、進展できるように、または他のプロセスを進展させることができるように共有名を介してアクションを実行することまたは相互作用することを可能にするための方法を実行するコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
    プロセスを表すプロセス構文要素を含む反射的プロセス代数で表現されたコンピュータ実行可能命令を備え、
    前記プロセス構文要素は不活性プロセス0、出力プロセスX[Y]、入力プロセスX(Z).P、リフト・プロセスLIFT X.P、プロセスの組成P|P、および名前の非リテラル化>X<からなる群から選択されることを特徴とするコンピュータ可読媒体。
  12. 前記コンピュータ実行可能命令は、名前を表す構文要素を含み、名前を表す前記構文要素はプロセスのリテラル化<P>から形成されることを特徴とする請求項11に記載のコンピュータ可読媒体。
  13. 前記出力プロセスX[Y]における前記名前YはプロセスPのリテラル化から構築され、前記プロセスPの前記リテラル化は、前記プロセスPが所定の型Tのメンバでない場合に禁止されることを特徴とする請求項12に記載のコンピュータ可読媒体。
  14. 前記入力プロセスX(Z).Pにおける前記名前ZはプロセスPのリテラル化から構築され、前記プロセスPの前記リテラル化は、前記プロセスPが所定の型Uのメンバでない場合に禁止されることを特徴とする請求項12に記載のコンピュータ可読媒体。
  15. 名前XはプロセスPの前記リテラル化から構築され、前記プロセスPの前記リテラル化は、Pの大きさが所定のしきい値を超える場合に禁止されることを特徴とする請求項12に記載のコンピュータ可読媒体。
  16. サービスを処理するためのコンピュータ実行可能な方法であって、
    プロセスを名前の非リテラル化として表し、名前をプロセスのリテラル化として表すことが可能な反射的プロセス代数におけるプロセスとして、前記サービスを表すこと、および
    名前がプロセス間で共有されるときに、プロセスの進展を容易にするように、プロセスにアクションを実行させることまたは通信を行わせること
    を備えることを特徴とするコンピュータ実行可能な方法。
  17. 前記反射的プロセス代数で書かれた式をサービスから抽出すること、および前記式は前記反射的プロセス代数の前記構文規則に適合するかどうかを検査すること、をさらに備えることを特徴とする請求項16に記載のコンピュータ実行可能な方法。
  18. 前記式が停止プロセス0を表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項17に記載のコンピュータ実行可能な方法。
  19. 前記式が出力プロセスX[Y]を表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項17に記載のコンピュータ実行可能な方法。
  20. 前記式が入力プロセスX(Z).Pを表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項17に記載のコンピュータ実行可能な方法。
  21. 前記式がリフト・プロセスLIFT X.Pを表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項17に記載のコンピュータ実行可能な方法。
  22. 前記式がプロセスの組成P|Pを表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項17に記載のコンピュータ実行可能な方法。
  23. 前記式が名前の非リテラル化>X<を表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項17に記載のコンピュータ実行可能な方法。
  24. 前記式がプロセスのリテラル化<P>を表す場合に、前記式は名前であると決定することをさらに備えることを特徴とする請求項17に記載のコンピュータ実行可能な方法。
  25. 前記式がプロセスのリテラル化を表しかつ前記プロセスの大きさがしきい値を超えない、すなわち<P>,#(P)≦Kの場合に、前記式は名前であると決定することをさらに備えることを特徴とする請求項17に記載のコンピュータ実行可能な方法。
  26. 前記式がプロセスのリテラル化を表しかつ前記プロセスが型Tに属する、すなわち<P>,P:Tの場合に、前記式は名前であると決定することをさらに備えることを特徴とする請求項17に記載のコンピュータ実行可能な方法。
  27. 前記反射的プロセス代数で書かれた式をサービスから抽出すること、および前記式を構造的合同に関する前記反射的プロセス代数の1組の等式規則に照らして検査することをさらに備えることを特徴とする請求項16に記載のコンピュータ実行可能な方法。
  28. 前記式が<>X<>の形をしている場合に、前記式は名前Xと構造的に合同であると決定することをさらに備えることを特徴とする請求項27に記載のコンピュータ実行可能な方法。
  29. 前記式がプロセスの組成P|0である場合に、前記式はプロセスPと構造的に合同であると決定することをさらに備えることを特徴とする請求項27に記載のコンピュータ実行可能な方法。
  30. 前記式がプロセスの組成0|Pである場合に、前記式はプロセスPと構造的に合同であると決定することをさらに備えることを特徴とする請求項27に記載のコンピュータ実行可能な方法。
  31. 前記式がプロセスの組成P|Pである場合に、前記式はP|Pと構造的に合同であると決定することをさらに備えることを特徴とする請求項27に記載のコンピュータ実行可能な方法。
  32. 前記式がプロセスの組成(P|P)|Pである場合に、前記式はP|(P|P)と構造的に合同であると決定することをさらに備えることを特徴とする請求項27に記載のコンピュータ実行可能な方法。
  33. 前記反射的プロセス代数で書かれた式をサービスから抽出すること、および前記式の意味を前記反射的プロセス代数の1組の操作的意味論の規則に照らして検査すること、をさらに備えることを特徴とする請求項16に記載のコンピュータ実行可能な方法。
  34. 前記式がLIFT X.Pの形をしている場合に、前記式はX[<P>]に簡約可能であると決定すること、をさらに備えることを特徴とする請求項33に記載のコンピュータ実行可能な方法。
  35. 前記式がプロセスの組成P|PでありかつPはプロセスPに簡約可能である場合に、前記式はP|Pに簡約可能であると決定すること、をさらに備えることを特徴とする請求項33に記載のコンピュータ実行可能な方法。
  36. 前記式がプロセスPであり、PはPと構造的に合同であり、PはプロセスPに簡約可能であり、かつPはPと構造的に合同である場合に、前記式はPに簡約可能であると決定すること、をさらに備えることを特徴とする請求項33に記載のコンピュータ実行可能な方法。
  37. 前記式がプロセスの組成X[X]|X(X).Pである場合に、前記式は第2の式P{X/X}に簡約可能であると決定すること、をさらに備えることを特徴とする請求項33に記載のコンピュータ実行可能な方法。
  38. 前記第2の式が(0)>{<Q>/<P>}<の形をしている場合に、前記第2の式を不活性プロセス0と等しいと置くこと、をさらに備えることを特徴とする請求項37に記載のコンピュータ実行可能な方法。
  39. 前記第2の式が(R|S)>{<Q>/<P>}<の形をしている場合に、前記第2の式を(R)>{<Q>/<P>}<|(S)>{<Q>/<P>}<と等しいと置くこと、をさらに備えることを特徴とする請求項37に記載のコンピュータ実行可能な方法。
  40. 前記第2の式が(X(Y).R)>{<Q>/<P>}<の形をしている場合に、前記第2の式を(X){<Q>/<P>}(Y).((R)>{<Q>/<P>}<)と等しいと置くこと、をさらに備えることを特徴とする請求項37に記載のコンピュータ実行可能な方法。
  41. 前記第2の式が(X[Y])>{<Q>/<P>}<の形をしている場合に、前記第2の式を(X){<Q>/<P>}[(Y){<Q>/<P>}]と等しいと置くこと、をさらに備えることを特徴とする請求項37に記載のコンピュータ実行可能な方法。
  42. 前記第2の式が(LIFT X.R)>{<Q>/<P>}<の形をしている場合に、前記第2の式をLIFT(X){<Q>/<P>}.(R)>{<Q>/<P>}<と等しいと置くこと、をさらに備えることを特徴とする請求項37に記載のコンピュータ実行可能な方法。
  43. 前記第2の式が(>X<)>{<Q>/<P>}<の形のものでありかつXは<P>と構造的に合同である場合には、前記第2の式をプロセスQと等しいと置くこと、および、そうでない場合には、前記第2の式を>X<と等しいとおくこと、をさらに備えることを特徴とする請求項37に記載のコンピュータ実行可能な方法。
  44. 前記第2の式が(X){<Q>/<P>}の形のものでありかつXは<P>と構造的に合同である場合には、前記第2の式を名前<Q>と等しいと置くこと、および、そうでない場合には、前記第2の式をXと等しいとおくこと、をさらに備えることを特徴とする請求項37に記載のコンピュータ実行可能な方法。
  45. 命令を実行するためのマイクロ・プロセッサのアレイであって、
    命令をメモリから取り出し、前記命令をデコードし、前記命令に関連するデータで、反射的プロセス代数におけるプロセスをリテラル化することによって得られる名前を含むデータをフェッチし、結果を保存するタイミングおよび制御ユニット、
    プロセスのリテラル化として名前を、名前の非リテラル化としてプロセスを表すことが可能な反射的プロセス代数で表現された前記命令の指定するオペレーションを実行するための算術論理演算ユニット
    のうちの1つまたは複数の構成要素を含む少なくとも1つのマイクロ・プロセッサを備えることを特徴とするアレイ。
  46. マイクロ・プロセッサの前記アレイは単一の集積回路上にあることを特徴とする請求項45に記載のマイクロ・プロセッサのアレイ。
  47. マイクロ・プロセッサの前記アレイは複数の集積回路上にあり、前記複数の集積回路は単一のボード上に搭載されることを特徴とする請求項45に記載のマイクロ・プロセッサのアレイ。
  48. マイクロ・プロセッサの前記アレイは複数の集積回路上にあり、前記複数の集積回路は複数のボード上に搭載され、前記複数のボードは1台のコンピュータの単一のラック内に収容されることを特徴とする請求項45に記載のマイクロ・プロセッサのアレイ。
  49. マイクロ・プロセッサの前記アレイは複数の集積回路上にあり、前記複数の集積回路は複数のボード上に搭載され、前記複数のボードは複数のコンピュータの複数のラック内に収容されることを特徴とする請求項45に記載のマイクロ・プロセッサのアレイ。
  50. 1つまたは複数のマイクロ・プロセッサを結合するためのネットワークをさらに備え、前記ネットワークは常時接続および一時接続の群から選択されることを特徴とする請求項45に記載のマイクロ・プロセッサのアレイ。
  51. 前記少なくとも1つのマイクロ・プロセッサの前記構成要素は、前記反射的プロセス代数で書かれたプログラムをコンパイルするコンパイラの出力する命令によって同期が取られることを特徴とする請求項45に記載のマイクロ・プロセッサのアレイ。
  52. マイクロ・プロセッサの前記アレイは、前記反射的プロセス代数で書かれたプログラムをコンパイルするコンパイラの出力する命令によって同期が取られることを特徴とする請求項45に記載のマイクロ・プロセッサのアレイ。
  53. 前記少なくとも1つのマイクロ・プロセッサの前記構成要素は、実行すべき次の命令を予測するための回路を欠くことを特徴とする請求項45に記載のマイクロ・プロセッサのアレイ。
JP2005033507A 2004-02-12 2005-02-09 資源の有限なマイクロ・プロセッサのためのプロセス言語 Pending JP2005228325A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US54411404P 2004-02-12 2004-02-12
US10/816,558 US8156472B2 (en) 2004-02-12 2004-03-30 Process language for microprocessors with finite resources

Publications (1)

Publication Number Publication Date
JP2005228325A true JP2005228325A (ja) 2005-08-25

Family

ID=34753136

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005033507A Pending JP2005228325A (ja) 2004-02-12 2005-02-09 資源の有限なマイクロ・プロセッサのためのプロセス言語

Country Status (5)

Country Link
US (1) US8156472B2 (ja)
EP (1) EP1569099A3 (ja)
JP (1) JP2005228325A (ja)
KR (1) KR101183316B1 (ja)
CN (1) CN1661552B (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080271000A1 (en) * 2007-04-25 2008-10-30 Microsoft Corporation Predicting Conflicts in a Pervasive System
CN102566972B (zh) * 2010-12-24 2016-11-23 上海电机学院 一种图形化的Pi演算方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8814633D0 (en) * 1987-11-18 1988-07-27 Ibm Bus flow control mechanism
US5305446A (en) * 1990-09-28 1994-04-19 Texas Instruments Incorporated Processing devices with improved addressing capabilities, systems and methods
SE9404296D0 (sv) * 1994-12-09 1994-12-09 Ellemtel Utvecklings Ab Sätt och anordning vid telekommunikation
US5848241A (en) * 1996-01-11 1998-12-08 Openframe Corporation Ltd. Resource sharing facility functions as a controller for secondary storage device and is accessible to all computers via inter system links
US6993669B2 (en) * 2001-04-18 2006-01-31 Gallitzin Allegheny Llc Low power clocking systems and methods
US7139775B2 (en) * 2001-11-01 2006-11-21 Solid Information Technology Oy Method and arrangement for providing an audit of a replica database
US7055142B2 (en) * 2002-05-10 2006-05-30 Microsoft Corporation Permutation nuances of the integration of processes and queries as processes at queues
US7117487B2 (en) * 2002-05-10 2006-10-03 Microsoft Corporation Structural equivalence of expressions containing processes and queries
KR101187486B1 (ko) 2002-05-10 2012-11-15 마이크로소프트 코포레이션 병행 분산 자원 네트워크의 협동을 위한 컴퓨터 실행가능 방법, 및 컴퓨터 판독가능 저장 매체
US7216335B2 (en) * 2002-05-10 2007-05-08 Microsoft Corporation Operational semantics rules for governing evolution of processes and queries as processes
US7694276B2 (en) * 2003-02-28 2010-04-06 Microsoft Corporation Contracts and futures in an asynchronous programming language
US7685566B2 (en) * 2003-07-03 2010-03-23 Microsoft Corporation Structured message process calculus
US7376547B2 (en) * 2004-02-12 2008-05-20 Microsoft Corporation Systems and methods that facilitate quantum computer simulation

Also Published As

Publication number Publication date
US8156472B2 (en) 2012-04-10
KR20060041872A (ko) 2006-05-12
EP1569099A3 (en) 2011-08-24
US20050183099A1 (en) 2005-08-18
KR101183316B1 (ko) 2012-09-14
EP1569099A2 (en) 2005-08-31
CN1661552B (zh) 2011-02-23
CN1661552A (zh) 2005-08-31

Similar Documents

Publication Publication Date Title
US9547511B2 (en) Language-based model for asynchronous operations
US10970130B2 (en) Composable and cancelable dataflow continuation passing
US7747992B2 (en) Methods and apparatus for creating software basic block layouts
Daylight Dijkstra's rallying cry for generalization: The advent of the recursive procedure, late 1950s–early 1960s
US7251594B2 (en) Execution time modification of instruction emulation parameters
US20110173595A1 (en) Language-based model for asynchronous operations
JP2005228325A (ja) 資源の有限なマイクロ・プロセッサのためのプロセス言語
Pelc Programming Forth
US20220050669A1 (en) Representing asynchronous state machine in intermediate code
Schmaltz Towards the pervasive formal verification of multi-core operating systems and hypervisors implemented in C
McNamara Rust in Action
Berthold et al. Parallel coordination made explicit in a functional setting
JPH0823861B2 (ja) 分散処理方法
Saraswat Concurrent constraint-based memory machines: a framework for java memory models (summary)
Lee et al. Functional Programming
Gospodinov Concurrent Data Processing in Elixir: Fast, Resilient Applications with OTP, GenStage, Flow, and Broadway
Herda et al. Implementing the Common Lisp condition system
Royko The Dynamic Mapping Architecture
JP2004056595A (ja) 論理回路のインターフェース方法およびインターフェースを備えた装置
Jebali et al. Ensuring consistency between cycle-accurate and instruction set simulators
CN117075907A (zh) 应用程序编译方法、系统、编译器及存储介质
Conlan et al. High-Performance Computing
HARANDI FUNCTIONAL PROGRAMMING
Vacchi Programming Languages à la Carte
Bouabana-Tebibel et al. A value-oriented specification for weak sequencing validation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110204

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110502

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110701

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110722