システムの考えは、数十年間で広まった。例えば、Ackoffsの1971年の論文「Towards a System of Systems Concepts」(Management Science、17(July) 661−671)には、いくつかのキーシステム概念の定義が規定されている。システムは、「・・・相互関係エレメントの集合」として定義され、システム状態は、「・・・システムがある[瞬間]に持つ関連した特性の集合」として定義される。そして、システム環境は、「・・・エレメントおよびそれらの関連した特性の集合、そのエレメントはシステムの部分ではなく、システム状態の変化を生成できるいずれかにおける変化」として定義される。また、イベントは、「・・・システム状態(または環境)における・・・変化」として定義され、論文は、「反応」、「応答」および「自主的な作用」を通じて、システムにおけるイベント上のシステム変化の依存性またはその環境を記述する。
現代のシステムを説明することができる1つの方法が、図1に与えられている。汎用コンピュータシステムまたは組み込みコンピュータシステムのような製品1−2が、そのコアである。図1のより広いシステム内のシステムでもある製品1−2は、企業1−1(それはまたシステムの一種として見られてもよい)におけるアクタとして、オンライン技術サポートのようなサービス1−3の提供で採用されていてもよい。サービス1−3は、もう1つのシステムを構成する。製品1−2および/またはサービス1−3は、他の企業(図示せず)によって、または例えば、個人1−5、グループ1−6または世帯1−7等の消費者1−4によって、消費されることができる。消費者1−4は、またシステムとしてモデル化されてもよい。企業1−1および消費者1−4は、社会技術システムであり、サービス1−3は、通常、技術および人的資源の組み合わせによって実現される。これは、現代の複雑な適応システムを分析、設計、構築、試験、実施および運営するにおいて、コンピュータおよび他の機械類の単なる技術的要件以上のものを対象にするのが望ましいことを意味する。最大効果のために、産業および他のプロセスがアプリケーションとどのように相互作用するか、およびこれらのアプリケーションのプロセスを実行するために人々がどのように組織化されるかを理解することが重要である。
この50年ほどにわたって開発されたツールは、上記のシステムのような現代システムの難問に取り組むためには、不適当に多くの方法を備えている。本発明者は、これは、以下のためであると考える:大部分の実在のシステムが高度に並列または並行であるのに反して、それらの基礎となるアーキテクチャは、実際は基本的に逐次または直列である;
それらは、典型的に、実在のシステムが時間とともに変化することに、それらが適応するのを難しくする静的定義を持つ;それらは、アーキテクチャの異なるレイヤと開発の異なるステージとの間の意味上のギャップを強化する;そして、異なる規律が非常に類似する現象のために異なる言語およびツールを使用するので、特に複雑な社会技術システムにおいてソリューションを共用することを妨げている。特に、この最後の点の帰結として、図1に示されるタイプの現代の複雑な適応技術および社会技術システムの分析、設計、構築、試験、実装および運営に関する先行技術が多くの既存の分野からもたらされる。これらの分野は、以下を含む:同期および非同期シーケンス回路を含む逐次および並列コンピュータハードウェア;イベント駆動型ソフトウェアを含むコンピュータソフトウェア;データ(「トリガ」を含む)およびメタデータ;コンピュータ・オペレーティング・システム;エキスパートシステムを含む人工知能エージェント;システム開発方法論、ツールおよび技術;分析シミュレータおよびデジタル仮想環境;ならびにビジネスプロセス・リエンジニアリングおよび組織設計。
図2は、従来のフォン・ノイマン・コンピュータを表す。それは、制御ユニット2−4および演算&論理ユニット(ALU)2−5を含む中央演算処理装置(CPU)2−3を含む。また、コンピュータは、メモリ2−6および入力/出力(I/O)コントローラ2−2を含む。CPU2−3、メモリ2−6およびI/Oコントローラ2−2は、内部バス2−1を経由して通信する。そのようなコンピュータのフェッチ、デコード、実行サイクルは、CPU2−4に含まれるプログラムカウンタ2−7の制御の下で行われる。
デフォルト設定によって、プログラムカウンタ2−7は、各命令の後に増加し、それゆえ、得られた次のアクションはシーケンスにおける次の命令である。シーケンスのフロー中の例外(またはジャンプ)は、プログラムカウンタ2−7を、実行すべき次の命令のアドレスで上書きする命令によって生じさせることができる。(この制御フロー機構は、1936年にAlan Turingによって提案されたチューリングマシンと同様な、いくつかの特徴を持つように見える。John Von NeumannはTuringのアイデアに気づいていたようだが、彼がそれらを、彼がA.P.BurksおよびH.H.Goldstineと共に1946年に提出した「Preliminary Discussion of the Logical Design of an Electronic Computing Instrument」と題された米国陸軍兵站部への報告に適用したかどうかははっきりしない。)
結果としてもたらされた「フロー&ジャンプ」機構は、フォン・ノイマン型コンピュータに、計算アルゴリズムの広い範囲をサポートすることを可能にする。しかしながら、今日や明日のコンピュータによってサポートされた大部分のアプリケーションは、数十年前に暗号解読やミサイル弾道予測に要求された計算とは大いに異なる。代わりに、それらは、我々の周りの世界のシステムを反映する必要があり、我々が経験する複雑さを我々が管理するのを助けるか、または我々の製品やサービスの精巧さの増大のためにその複雑さを使用するかのいずれかの必要がある。これらの実在のシステムにおいて、多くの同時またはほぼ同時のイベントが認識され、記憶され、そして潜在的に作用される必要があるのかもしれない。これらのシステムの我々のモデルもまた、システムの私達の理解が進むにつれて、連続的に変化する。
同様に、現在のコンピューティング・デバイスの激増は、フォン・ノイマンの時代には予言されていなかった。その時代には、そのようなデバイスの可能性は、科学的および軍事的アプリケーションに限定され、かつ、存在するのは、おそらく数百台に過ぎないコンピュータであるだろうことが予期されていた。しかし、現在では、汎用(例えば、デスクトップコンピュータ)および組み込み(例えば、自動車制御システム)の両方で、数億台のフォン・ノイマン型コンピュータがある。また、これらのデバイスの多くは、通常、いくらか厳密に定義されるコンピュータ・ネットワークを通じてお互いに通信をする。近い将来において、刻々と自身で動的に構成および再構成するネットワークを通じて互いに協働する何十億台もの「コンピュータ」があるだろうことが想像される。本発明者は、そのような大規模な動的コンピュータ・ネットワークの開発のために、フォン・ノイマン・アーキテクチャが大きな抑制要因になるものと考える。
現代のコンピュータの大多数の基礎であるフォン・ノイマン・アーキテクチャは、根本的に逐次的である。「通信逐次プロセス」(CSP)、「データフロー」および「アクタ」モデルは、並行処理を提供する試みとして提案された。しかし、これらのアプローチは、粒度の粗い並列処理をただサポートするために、または比較的特別な計算アプリケーションに限られるために、意味上のギャップを強化する傾向がある。
通信逐次プロセスは、C.A.R.Hoare教授によって考案され(「Communicating Sequential Processes」、ACM通信、21巻、666−677頁、1978年)、Dijkstraの仕事の上に築かれた(DlJKSTRA,E.W.(1975)、「Guarded Commands, Nondeterminacy and Formal Derivation of Programs」、ACM通信、18巻、453−457頁)。通信逐次プロセスは、同期入力および出力コマンドを介して通信できる並列逐次プロセスに導入された。この分野での初期の仕事は、新しいプログラミング言語を目標としていたが、以来、例えばInmos社のトランスピュータ等のハードウェア設計が始められた。
フォン・ノイマン・アーキテクチャのもう1つの代替は、フォン・ノイマン「制御フロー」アプローチと対比させることができる、「データフロー」マシンである。データフローマシンにおいて、プログラムカウンタは除かれ、実行はオペランドの可用性によって単独でなされる。これは、フォン・ノイマンまたは通信逐次プロセスモデルのいずれかよりも、もっと粒度の細かい並列処理を可能にする。
図3は、1975年にMITでDennisおよびMisunasによって設計された初期のデータフロープロセスを示す。このMITデータフローマシンは、通信ネットワーク3−2を介して内部接続された処理エレメント3−1の集合を含む。処理エレメント3−1内で、アクティビティ記憶部3−5は、アクティビティ・テンプレートを保持する。命令待ち行列3−4は、発せられた命令(すなわち、全ての入力が利用できるためのアクティビティ・テンプレート)のアドレスを保持する。命令待ち行列3−4の第1のエントリは、対応するオペコード、データ、およびアクティビティ記憶部3−5で保持されたアクティビティ・テンプレートを構成するあて先リストを取り出すためにこのエントリを使用するフェッチユニット3−9によって削除される。それから、これは、フェッチユニット3−9によって利用可能なオペレーションユニット3−3に転送されるオペレーショントークンに詰められる。テンプレートにおけるオペランド・スロットは、それからクリアされる。オペレーションユニット3−3は、対応オペランドを使用するオペコードによって特定されるオペレーションを実行し、各あて先のための結果トークンを生成し、そしてトークンのあて先がローカルの処理エレメント3−1にあるか、またはリモートにあるかを決定する送信ユニット3−8にそれらを提供する。あて先がローカルであると決定されると、トークンはローカルの受信ユニット3−7に送信され、更新ユニット3−6に順に渡す。そうでなければ、トークンは、通信ネットワーク3−2を介してあて先である処理エレメント3−1に送られる。命令は、全てのユニットが同時に動作したときからパイプライン方式で処理される。
データフローアプローチは、データフローモデルが認識する唯一のイベントである関数が前もって待ち行列に収容され、予め決定されたトークン照合ルールに基づいて開始されるので、静的相互接続トポロジを持つように記述されている(AGHA,GULによる「Actors: A Model of Concurrent Computation in Distributed Systems」、MIT Press、1986)。トークン照合は、データフローマシンに関連する開発努力の多くを消費するアプローチの複雑さを相当に増す。これは、その拡張または再構成できるモデルの動的実行をサポートする能力を制限するのと同様に、ソリューションのデータフローモデルの範囲をそれらが関与する計算に制限する。
データフローアプローチと制御フローアプローチとは、両アプローチの弱点に対処する試みにおいて結合される(例えば、Intel Pentium(登録商標) Proの設計(COLWELL,R.P.、STECK,R.L.「A 0.6μm BiCMOS Processor with Dynamic Execution」、Proceedings of the International Solid State Circuits Conference、1995年2月))。しかしながら、これは、いずれかのアプローチにおいて根本的に固有の制限に取り組まれることはなかった。
今なお、フォン・ノイマン・アーキテクチャのもう1つの代替は、1970年代の後半にC.E.Hewitt他によって独自に考案され、Gul Aghaによって[「Actors: A Model of Concurrent Computation in Distributed Systems」、MIT Press、1986]に記述された並行計算の「アクタ」モデルである。このモデルにおいて、アクタは、アクタが関連付けられる予め定義された「動作」を行うための「タスク」内に含まれる「通信」の受信によって活性化される。動作は、場合により条件付きで「コマンド」のコレクションとして定義され、アクタが受信するかもしれない次の通信に応答して自身の動作を潜在的に修正するのと同様に、他のアクタを生成、および/またはさらなる通信を送信させる。アクタシステムが認識する唯一のイベントのタイプは、新しい「タスク」(すなわち、「通信」)の生成である。このゆえに、アクタシステム内の全てのアクティビティは、アクタ間の通信の伝播によって駆動される。これは、アクタシステムの長所および短所の両方である。これらの比較的単純な機構は、並行計算の広い範囲に具体化するために使用できる。アクタモデルが、通信逐次プロセスまたは上記されたデータフローモデル内で定義されることができるどのシステムを実施するのにも十分に強力であることが言える。しかし、それは、並行処理の粒度の程度を個々の動作に制限し、それぞれは複数の条件付きコマンドを含んでいてもよい。また、アクタモデルは、非通信関連イベントを処理するために要求される複雑な機構のように、現代の体系的アプリケーションと基礎となる計算環境との間の意味上のギャップを広くし、それによってその実在のアプリケーションを制限していると言うことができる。
基礎となるほとんどのフォン・ノイマンおよび他の現存するコンピュータ・アーキテクチャは、「同期シーケンス」電子回路である。そのような回路において、状態間の遷移がクロックからのパルスによって開始される。例えば、上記されたフェッチ−実行サイクルの各ステップは、単一のクロックパルスがトリガとなる。このアプローチは、サイクル時間削減の抑制、不必要な電力消費および不適当なノイズならびに電磁波副作用を含むある程度の欠点を持つことが認識されている。これらの欠点の結果として、ここ数年、そのような回路のより複雑な設計および試験要件にもかかわらず、非同期シーケンス回路の開発にかなりの関心が払われてきた。しかし、全コンピュータ・アーキテクチャのレベルの下で実施されたこの研究は、フォン・ノイマン・アーキテクチャの基礎となる順次性に取り組まなかった。
ほとんどのソフトウェアが記述される従来の高級言語は、フォン・ノイマン型コンピュータをよりアクセス可能に制御するマシン語を作る必要から開発された。このようにして、これらの言語は、逐次マシンの制限を具体化する。これは、Silc他によって「・・・フォン・ノイマン設計の構造上の特徴は、今日使用され、フォン・ノイマン・アーキテクチャ・パラダイムに由来する逐次的な高級プログラミング言語によって今なお有効である」と記述されている(SlLC,JURIJ;ROBIC,BORUT;UNGERER,THEO「Processor Architecture: From Dataflow to Superscalar and Beyond」、Springer、1999)。
図4に図示されているように、従来のソフトウェアは、あるプログラミング言語(例えば、C、Java(登録商標)等)のプログラムとして書かれている。それから、各プログラムのどの命令も、プログラムが実行されるべきコンピュータのマシン語、または仮想マシン(VM)上で実行されるべきある中間形式(例えば、「バイトコード」)のいずれかに変換される必要がある。この後者の場合は、個々のオペレーションは、それから次の下のレベルでマイクロ・プログラム(これもまた直列である)になる。
ここで、非常に最新のソフトウェアが「オブジェクト指向型」(OO)アプローチを使用して設計され、開発されていることに注意すべきである。上記されたヒューイット・アクタアプローチから開発されているOOソフトウェアは、プログラム実行を駆動するために、「オブジェクト」間でのメッセージ送信を利用する。これは、「イベント駆動型」としてしばしば記述されるグラフィカル・ユーザ・インターフェース(GUI)ソフトウェアの開発において特に明白である。そのような「粒度の粗い」イベントは、ソフトウェアの小さなセグメントの実行を開始し、通常、OOの先行技術で「メソッド」と呼ばれている。しかし、そのようなソフトウェア・セグメントは、フォン・ノイマン・パラダイムに確固として根付いたまま残る。すなわち、それらは基本的に逐次的である。(そのようなコンポーネントがソフトウェア内でアクションを生じさせるので、Hewitt他によって採用されている名称「アクタ」が、「オブジェクト」よりずっと適切である。しかし、混乱させるかもしれないが、用語「オブジェクト」が先行技術において広く使われている。)同様に、「トリガ」は、データベース管理システム(DBMS)分野に最近導入された。そこでは、ソフトウェアの小片は、データベース内の特定のフィールドに関連されていて、その関連フィールドが更新されるときはいつも実行される。また、これは粒度の粗いイベント駆動型処理のいくつかのエレメントを持つが、ソフトウェアの各小片は、それ自体確固としてフォン・ノイマン・パラダイムに根付いている。
いくつかのイベント駆動型オブジェクト指向型アプローチは、IBM Technical Disclosure Bulletin NN9511431「Event Data Management in an Object Oriented System」と同様に、Pavilion(国際公開第2001/77872号明細書)、Cook他(米国特許第6178432号明細書)およびMukherjee他(米国特許第6195685号明細書)を含む先行技術において記述される。これらのそれぞれは、上記された粒度の粗いイベント駆動型アプローチの変種であり、このように、実装のための逐次ソフトウェア(通常、OO「メソッド」)に依存している。
コンピュータのハードウェアとソフトウェアとがどのように相互作用するかを考慮して、図5は、[TANENBAUM,ANDREW S.「Modern Operating Systems」Prentice Hall,2001]に記述されているのと同様に、現代の階層化コンピュータ・オペレーティング・システムがどのように設計されるのかを示す。コンピュータ・オペレーティング・システムは、基礎となるコンピュータハードウェア資源(例えば、メモリ、ディスク、プリンタ等)を管理し、関係するコンピュータシステムのユーザおよびプログラマのニーズにより適した「仮想マシン」を提供する。それは、CPU5−20上で実行する7つの仮想レイヤ5−11から5−17を備える。第1のレイヤ5−11は、基礎となるハードウェアを隠し、その上で通常のオペレーティング・システムがいくつかの異なるハードウェア構成をサポートするために設計されることができる低レベル仮想マシンを提供する。第2のレイヤ5−12は、割り込み処理、コンテキスト・スイッチングおよびメモリ管理を含むオペレーティング・システムの基礎構築ブロックを提供する。第3のレイヤ5−13は、本質的に単一の逐次CPU上の多重処理環境を提供することを必須とするオペレーティング・システム内に、管理プロセス、更に特にスレッドを必須とするコンポーネントを含む。第4のレイヤ5−14は、CPUに接続された、または接続することができる特定の周辺装置やリソースのそれぞれの使用によって生じる全てのアクティビティを処理するドライバを提供する。この上は、仮想メモリ管理レイヤ5−15であり、コンピュータに、利用可能な物理メモリを明らかに著しく超過しているそのユーザにメモリ空間を提供することを可能にする。第6のレイヤ5−16は、ディスクおよび他の長期記憶媒体に保持されたファイルの管理をサポートするために必要な特徴を提供する。第7の、すなわち最上レイヤ5−17は、システムコールを処理し、それにより、システムリソース上でユーザプログラム5−18がそれを介してコールすることができるインタフェースを提供する。
ソフトウェアコンポーネントの全てのこれらのレイヤは、コンピュータのCPU5−20より上のレイヤに存在し、コンピュータが実行する全てのオペレーションに含まれるようにCPU5−20に要求する。いくつかのアプローチは、多重プロセッサ(密結合)、多重コンピュータおよび分散コンピュータ(疎結合)構成を通じて、多重CPU間でこの仕事量を分配するように考案された。しかし、基礎となるハードウェアモデルのモノリシックで逐次的な性質に起因して、これらの構成は、結合の疎密に比例して、特にプロセス・スケジューリングおよび同期の領域で重大な複雑さを、サポートするオペレーティング・システムに加える。
近年、「データについてのデータ」として考えられるメタデータを理解することの重要性の認識が大いに高まってきた。この高まった認識は、2つの主要な源から来るように見える。すなわち、データウェアハウスおよびビジネス知的ソリューションの価値を実現する必要、および開発、整備およびウェブサイト間の情報交換に関連する努力を減らす必要である。結果的に、XMLおよびメタ・オブジェクト・フレームワーク(MOF)のような技術におけるソフトウェア・コミュニティについての興味が増大している。データ交換の分野におけるメタデータの価値は、よく理解されている。しかし、たいていの場合、メタデータは、ユーザまたはそれらのアプリケーションに利用することができず、アプリケーションに内在するか、または最終のアプリケーションに翻訳されていない分析および設計フェーズのモデルにおいて保持される。これは、それらが使用されているコンテキストが変化するように適応させるほとんどのそのようなアプリケーションの柔軟性を妨げる。
同様に、メタレベル・プログラミングの分野において、特にCommon LISPオブジェクトシステム(CLOS)ならびに他のプログラミング言語およびシステムによって採用されているメタ・オブジェクト・プロトコル(MOPs)の使用について、また発展があった。これらのMOPsは、プログラミング言語またはシステムそれ自体におけるオブジェクトを記述するメタレベル・プログラムのコンテキストにおけるベースレベル・アプリケーション・プログラミングを必要とする。しかし、そのようなMOPsは、開発中に専門プログラマだけが利用でき、ランタイム、すなわち、コンパイルまたはインタープリート後に、修正のために利用できない。それらは、また、実行の複雑さを相当に加えるように見え、特に並行実行をサポートすることを、それらにとって難しくする。
他のメタデータ関連の先行技術に、Nye(米国特許出願公開第2003−0195867号明細書)がある。Nyeは、「イベントモデルを用いて柔軟に状態遷移を処理する方法」を提供することを請求する。それは、イベントを「条件次第で選択的であり、おそらく空のアクションの集合」として定義し、「内部クロックの各時刻の間、全ての計算可能なイベントはランダム順で処理される」と述べた。このように、それは、従来の粒度の粗いイベント駆動型システムのオペレーションをガイドするメタデータを使用する。
Stafford Beerは、彼の本「Diagnosing the System for Organizations」(Chichester:John Wiley & Sons、1985)において、「発展可能システム」の概念を導入した。それを、彼は、「・・・特殊な環境[内で]分離した存在を維持できる」システムとして定義した。この本において、Beerは、それらがなお発展し続けるならば、より適応するためにシステムに必要なものを特定したが、適応させる詳細な機構は記述しなかった。そして、そのような発展可能システムをどのように可能にするのかについては特別な注意を払わなかった。
人工知能エージェントの概念は、コンピューティングの誕生以前から存在していた。1960年代から1970年代の間に、コンピュータの「知能」を作ることにかなりの注意が払われた。特に、エキスパートシステムは、例えばコンピュータハードウェアの構成におけるDigital Equipment社の「R1」システムのように、認識可能な技術的効果を有する適所を見出した。しかし、そのようなエージェントは、それらの複雑さおよびそれらの構築の費用のために、持続的な商業的価値が限定された。また、それらは、典型的に、実行時間性能に乏しい。それらを発展可能にするであろう機構(Beerによって論じられた意味において)は、記述されなかった。
図6は、[RUSSELL,STUARTおよびNORVIG,PETER「Artificial Intelligence: A Modern Approach」、Prentice−Hall、1995]によって定義されたような学習エージェントの一般モデルを示す。エージェント6−0は、パフォーマンス基準および環境からの入力を取り入れ、環境に作用する。エージェント6−0において、パフォーマンス・エレメント6−1は、センサ6−2からの入力として知覚を取り入れ、アクションを決定し、それからそれはイフェクタ6−3に出力する。学習エレメント6−4は、エージェントがどのように振る舞うかに関する批評部6−5からの入力と共に、パフォーマンス・エレメント6−1についてのある知識を取り入れ、将来のためにパフォーマンスを改善するという視点でパフォーマンス・エレメント6−1にどのような変化を送るかを決定する。問題発生機6−6は、学習エレメント6−4から供給される学習目標に基づく新しく有益な経験に導くだろうアクションをパフォーマンス・エレメント6−1に提案する。
エキスパートシステムおよび他の知識ベースシステムにおいて、パフォーマンス・エレメント6−1は、「プロダクションルール」として知られている「IF<条件>THEN<推論>」ルールの形式の知識をしばしば含む。そのようなシステムは、これらのルールとともに「前方連鎖」検索アルゴリズムを用いて、アクションを開始させることができ、しばしば新しい「知識」を生成することができる推論を見出す。エキスパートシステムは、上記されたR1システムがしたように、いくらかの重要な技術的効果および商業的成功を得たが、プロダクションルールは、前方連鎖検索アルゴリズムによって消費されるリソース、および限られたアプリケーションによって乏しいパフォーマンスを持つように見られる。結果的に、設計者は、しばしば、知識を得るために、フレームシステムやニューラルネットワークのような他の方法に頼らなければならない。結果として、統合するのが困難ないくつかの異なる知識表現機構は、今日の知識ベースシステムにおいて表すことができる。
Koninklijke KPN(国際公開第2002/054296号明細書および欧州特許第1253533号明細書)およびRoss(米国特許第6598033号明細書)を含むいくつかの先行技術は、問題領域の知識−電気通信サービス規定およびアラーム相関性をそれぞれ解決する知識ベースアプローチを採用することを請求する。しかし、これらは、先に記述されたように、知識ベースシステムよりも、従来のオブジェクト指向型アプローチにより多くを負っている。いくつかのモデリング技術は、異なるタイプのルールシステムを記述するために使用されている。
コンピュータソフトウェアは、図7に示されるような従来のフローチャートから、統一モデリング言語(UML)、そしてオブジェクト制約言語(OCL)のような関連言語で記述されるようなオブジェクト指向型技術まで、いくつかのグラフィック技術を使用して、記述および/または設計されている。UMLは、図8Aおよび8BのUMLクラス図およびUMLアクティビティ図によってそれぞれ図示されている。また、数学の集合論は、「Z」のように言語を通じて採用されている。
コンピュータハードウェアは、伝統的に、ブロック図または電子回路図を用いてグラフィカルにモデル化されている。近年、Very High Definition Language(VHDL)は、モデルに採用され、その後、ハードウェアコンポーネントおよびシステムの構造および動作をソフトウェアのようなルールを使用してシミュレートする。
産業および他のプロセスは、ソフトウェア設計者によって使用される従来のフローチャートを用いて通常は記述および/または設計された。これらのフローチャートは、しばしば今日のワークフロー・ソリューションの基礎となる。また、プロセスは、図8Cおよび8Dにそれぞれ示されるIDEF0およびIDEF3のそれらのように、専用プロセスモデリング技術によって記述および/または設計される。
プロセス、ソフトウェアおよびハードウェアの設計に採用されている技術が異なるという事実は、それらの異なる分野にわたるシステムを記述および/または設計することは困難であるので、重大な問題である。一方、これらは、共通して多くの特徴を持つ。また、これらは、システムの動作に関係する全てのルールをとらえることはできないので、不完全である。例えば、ビジネスシステムを適切に記述するために必要である制約の多くを得るために、OCLがUMLへのアドオンとして要求されることに注意してもよい。また、これらの技術は、基本的にフロー型または逐次的である。IDEF0およびUMLは、システムのフロー型の記述を要求しないが、動作の完全記述を得るために、フロー型または逐次コンポーネントが要求される。特に、これらのコンポーネントは、IDEF0のためのIDEF3プロセスフローおよびUMLのためのメソッドである。Zモデルはフロー型ではないため、それらはイベント駆動型システムを記述するための機構を持たない。それらはソリューション・システムに組み込まれないので、これらの技術は、概して最終システムから断ち切られる。最後に、これらの技術は、適応した動作をサポートするそれらの能力を制限するオブジェクトに沿ってメタ・オブジェクトが簡単にモデル化されるのを許さない。
いくつかのプロセステンプレート(または「方法論」)は、図1に示される技術的および/または社会技術システムを開発するために提案されている。それらは、典型的には、図9Aに示される情報エンジニアリング方法論のように、「ウォーターフォール」スタイル、または図9Bに示されるようにオブジェクト指向型方法論において採用されていたかもしれない「反復」スタイルである。いずれの場合においても、これらの方法論は、そのようなシステムが正しく定義されるならば、開発プロセスが実行されるべき、しばしば繰り返されるが常にシーケンシャルな順序を定義する。どちらのアプローチも、いくつかのアクティビティは、そのような開発を正常に完了するために、並列に続行できるか、あるいはしなければならない実在の状況を認識もしないし、適切に反映しもしない。
「The Fifth Discipline: The Art & Practice of The Learning Organization」(1990年、ロンドン、Century Business)において、Peter Sengeは、システムに関連する複雑さの2つのタイプ、すなわち「詳細な複雑さ」と「動的な複雑さ」とを区別する。詳細な複雑さは、「多くの変数」の複雑さであり、それらのモデル内の正確なルールを得ようとする、ソフトウェア開発者およびビジネスプロセス・モデラーに良く知られている。一方、動的な複雑さは、システムのエレメント間の予測しない相互作用が意外な効果、特にオーバータイムを持つ、「非自明な結果」の複雑さである。詳細な複雑さのテストは、特別なプログラムまたはシステムが特定のテスト条件の下で期待通りの動きをするかを確認するための繰り返しテストケースが生成される、従来のソフトウェアテスト環境の分野である。シミュレーションの役割は、動的な複雑さを探索することである。
シミュレータは、2つのクラスの1つから考えることができる。これらは以下の通りである:通常それが設計され、組み立てられ、あるいは修正される間、全システムの動力学を理解するために用いられる分析シミュレータ;そして、ゲームまたはトレーニング状況において典型的な複雑な仮想システムで人間と相互作用することが可能であるように使用されるデジタル仮想環境。
分析シミュレータに焦点を合わせると、Zeigler他(ZlEGLER,BERNARD P.;PRAEHOFER,HERBERT;KlM,TAN GON「Theory of Modelling and Simulation: Integrating Discrete Event and Continuous Complex Dynamic Systems」、Academic Press、1999年)は、基本的にシステムをモデル化できる以下の3つの方法があることを示した。微分方程式によって記述される連続的システムとして(微分方程式システム仕様−DESS);各離散的期間後のシステム状態を示す方程式のコレクションとして(離散的時間システム仕様−DTSS);またはシステム状態が1つの離散的イベントからもう1つの離散的イベントまでどのように変化するのかを記述する方程式のコレクションとして(離散的イベントシステム・シミュレーション−DEVS)。DEVSシミュレータは、量子化DESSモデルおよびDTSSのために記述されることができる(Zeigler他、1999年、参照)ので、DEVSは、3つのシステムモデル化メソッドのキーとして考えられる。
DEVSは、システム力学を、以下に示す方程式の集合を通じてモデル化する。それぞれが外部イベントに関連する入力値の集合;状態の集合;出力値の集合;内部状態遷移関数;外部状態遷移関数;出力関数;および休止時間関数。そのようなシミュレーションによって認識された唯一のイベントは、内部イベントを構成する予め決定された期間(すなわち、休止時間)の経過、または外部イベントを構成する入力の到着である。これらの内部および外部イベントは、そのようなシミュレーション内でアクティビティを起こすが、これは、通常オブジェクト指向型プログラミング言語内の逐次プログラムまたはメソッドとして実装される状態遷移関数への粒度の粗いトリガとなる。そのようなシミュレーションモデル内に、時間の経過以外の状態の内部変化がトリガとなるアクティビティを持つのは容易ではない。
並列および分散システムシミュレーション(PDES−FUJIMOTO,RICHARD M.「Parallel & Distributed Simulation System」、John Wiley & Sons、2000)において、並列および分散シミュレーションモデルは、DEVSシミュレータのコレクションとして記述されることができる。PDESは、典型的に粒度の粗い並列処理(並行処理は別々の逐次論理プロセスを異なるプロセッサに割り当てることを通じて達成される)を提供する。並列および分散シミュレーション間の根本的な相違は、シミュレーションにおける「論理プロセス」間の通信待ち時間である。シミュレーションには、異なる種類の時間が含まれることに注意しなければならない。すなわち、物理時間、シミュレーション時間および壁時計時間であり、これらはPDESのために特に重要である。物理時間は、シミュレートされた物理システムにおける時間である。シミュレーション時間は、シミュレーションによって採用されている物理時間の抽出である。これは、通常、シミュレーションのニーズに合わせるために、物理時間をスピードアップしている(だが、それをスピードダウンしてもよい)。壁時計時間は、シミュレーションの実行の間の現実の時間であり、特に分散シミュレーションにとって重要である。
分析シミュレータのいくつかのクラスおよびデジタル仮想環境が、シングルプロセッサおよびマルチプロセッサ(すなわち、並列および分散)アーキテクチャの双方のために定義されているが、そのようなシミュレーションは、逐次状態遷移関数として定義される。これは、新しいシステムまたは変化するシステムの詳細なルールから別々に定義されなければならない。それによって、どのシミュレーションも主な設計の流れから分離され、せいぜい粒度の粗い並列処理に抑制される。これは、シミュレーション・プロジェクトにしばしば大きな見返りが要求されるにもかかわらず、シミュレーションが比較的まれにしか使用されないという1つの理由であるかもしれない。
先行技術は、Borschev他(「Distributed Simulation of Hybrid Systems with AnyLogic and HLA」、XP00434823PD)のように、そのようなシミュレータのアプリケーションを含む。それは、その他に記述された並列または分散シミュレーションのいくつかの課題に対する潜在的なソリューションと同様に、粒度の粗いイベント駆動型オブジェクト指向アプローチを採用する(例えば、Steinman−米国特許第6324495号明細書)。
上記先行技術のいくつかの重要な制約の特徴は、以下のようである。
フォン・ノイマン・アーキテクチャは、ほとんど全ての現在コンピューティング・ソリューションに「フロー&ジャンプ」機構を組み込んだ。これは、世界の逐次的/直列的な見方を強化する助けとなる。並行計算モデル(例えば、CSP)を定義する際のいくつかのより一般的な試みでさえ、この視点によって抑制され、達成できる並列処理の粒度が限定される。
ハードウェアおよびソフトウェア設計者が、コンピュータをより便利にするように働くにつれて、2つの重要な意味上のギャップが導かれた。第1は、ハードウェア設計者が、パイプラインのような技術を備えるフォン・ノイマン・アーキテクチャの制限を乗り越えようと試みるにつれて、高級言語と基礎となるコンピュータハードウェアとの間で展開されたギャップである。第2は、計算の1つからシステム表現の1つにまで適応されている問題の本質としてより深刻になっている問題分野とソフトウェアとの間のギャップである。
先行技術に記述されるいくつかの方式は、粒度の粗いイベント駆動型および通常のオブジェクト指向型アプローチに採用されている。しかし、それらは、「イベント」、「状態」、「アクション」および「オブジェクト」の定義の多様性、そして実装のためのフォン・ノイマン型逐次ソフトウェア・セグメント(通常、OO「メソッド」)への依存性の両方によって制約を受けている。
今日使用されているツールの大部分は、それらがサブジェクトシステムの変化の理解として適応する能力のデザイン・インを可能にしないので、システムの理解および設計が不満足なものとなる傾向がある。結果的に、変化は抵抗され、それが最終的に避けられなくなったときに、それは外傷となりうる。例えば、毎年、多額のお金が失敗するITプロジェクトに消費される。
システムの異なるコンポーネント間の相互作用は、その状況のそれらのコンポーネントを見るために異なるツール(異なるモデル化技術のように)を持つ人々によって異なる規律から対処されるので、しばしば見落とされる。多くのITプロジェクトの失敗は、特別な技術的ソリューションの「人員変更管理」の意味を認識できないことによって引き起こされる。なぜならば、主として、アプリケーション開発者および変更管理の専門家は、他の視点の理解を助けるツールおよび言語を欠いている。
本発明は、いくつかの関連概念を提供する。その多くは、個別に、および組み合わせで、潜在的に適応ルール集合の並列実行を可能とし、問題分野とソフトウェアおよびハードウェア・ソリューションの間の意味上のギャップを除去する統一的な全体論的なフレームワークを生成する。総合すれば、これらの概念は、一般の複雑な技術的および社会技術的システム、そして適応可能な大規模なマイクロ並列コンピューティング・システム、自己適応発展可能知能エージェントおよび特に発展可能な事業の分析、設計、構築、試験、実装およびオペレーションに、新しいアプローチを提案する。
本発明の第1の態様によれば、サブジェクトシステムにアクションを生成するためのアクタを提供する。アクタは、前記サブジェクトシステムの内部オブジェクトを表し、所定の時間に2つ以上の状態のいずれであるかを定義するデータに関連するオブジェクトと、前記オブジェクトの状態の変化であるイベントに応じて開始されるべきアクションを定義するルールと、を含む前記サブジェクトシステムのモデルと、前記モデルの前記ルールによって定義されるように、前記イベントに依存する前記サブジェクトシステムで、1つ以上のアクションを開始することによって、前記サブジェクトシステムにおいてイベントに応答するプロセッサと、を備える。
また、2つ以上の状態のうち1つを持つことができるオブジェクトである限り、唯一の状態を持つことができるモデルにおけるオブジェクトであってもよい。
オブジェクトの状態の全ての変化は、イベントとして考えられてもよい。しかし、重要であるイベントに関連するルールだけ、開始されるべき1つ以上のアクションを必要とする限りにおいて、モデルに含まれることが要求される。
本発明に従って構成されたアクタのプロセッサは、フォン・ノイマン・プログラムカウンタによって生成されたように、恣意的な逐次パラダイムに抑制しなくてもよい。それゆえ、その不利益点を避けるように構成されることができる。
そのように構成されたアクタのプロセッサは、粒度の細かい並列オペレーションをサポートすることができる。
プロセッサがモデルを直接的に実行するので、モデルとプロセッサとの間に意味上のギャップはない。更に、プロセッサによって理解されたフォーマットへのモデルの変形によって引き起こされる開発ステージに意味上のギャップはない。
それを表現するサブジェクトシステムとしてモデルを表現することは、そこにおいて、サブジェクトシステムとモデルとの間の意味上のギャップがないという結果をもたらすことができる。
本発明に従うアクタは、OO「メソッド」のような詳細なアクションを記述するためのプログラム・コンポーネントに依存しないモデルを使用することを可能にする。
モデルは、粒度の細かい並列アクタ(例えば、コンピュータ、産業機械)を直接的に駆動することができる。モデルは、通常は付加的な言語(例えば、UMLのためのOCL)を要求するであろう制約を表現できるように作られることができる。
適切なアクタの構築により、計算だけではなく、広い範囲のサブジェクトシステムをサポートできる。これは、データフローまたはアクタパラダイムに似ておらず、勝っている。
全てのイベントおよびアクションは、オブジェクトとして構成されてもよい。
これは、使いやすいより単純なモデルに寄与する。
プロセッサは、単一のステップで直接的に単一のイベントに応じて開始されたアクションを実行するように調整されてもよい。そのようなアクションは、「基本アクション」として言及されることができる。モデルにおいて、イベントに応じて開始される合成アクションは、合成アクションの実行から直接的または間接的に生じるイベントに応じて開始されるサブ・アクションとして定義されてもよい。各サブ・アクションは、基本アクションであっても、他の合成アクションであってもよい。これは、実在のあるイベントのより正確な表現を可能にし、粒度の細かい並列実行を可能にすると同様に、単純なモデル化を可能にする。1つのレベルで単一のステップで直接的にプロセッサによって実行されることができる基本アクションは、高いレベルのプロセッサが精緻化された基礎となるプロセッサためのより低いレベルの複数のアクションへの精緻化を要求してもよいということに注意すべきである。しかし、この場合、これらのより低いレベルのアクションのそれぞれは、同様に同じ意味でイベント駆動型であろう。
前記モデルは、2つ以上のサブ・モデルを含むようにしてもよく、前記サブ・モデルのそれぞれは、前記サブジェクトシステムのサブ・システムのモデルである。この特徴を使用して、1つのプロセッサは、複数のモデルを操作することができる。
好ましくは、前記アクタは、メタ・モデルおよびメタ・プロセッサを備えるメタ・アクタを含み、前記メタ・モデルは、前記モデル内のオブジェクトを表し、所定の時間に2つ以上の状態のいずれであるかを定義するデータに関連するオブジェクトと、前記モデルにおけるオブジェクトの状態の変化であるイベントに応じてアクションが開始されることを定義するルールと、を含み、前記メタ・プロセッサは、前記メタ・モデルによって定義されるように、前記イベントに依存する前記モデルで、1つ以上のアクションを開始することによって、前記モデルにおいてイベントに応答するように調整される。
ここで、メタ・モデルは明示的であるので、モデルは、実行中に修正されることができ、アクタは、オペレーション中に、例えばコンパイラまたはツールセットの供給者によって前もって修正されたメタ・モデルの要件を潜在的に回避しながら、その動作を適応させることができる。
前記メタ・モデルは前記モデルの部分を形成してもよく、かつ/または前記メタ・プロセッサは前記プロセッサの部分を形成してもよい。これらの特徴により、アクタは、オペレーション中にモデルの新しいタイプを引き受けることができる。
前記メタ・モデルは、2つ以上のサブ・メタ・モデルを含んでいてもよく、前記サブ・メタ・モデルのそれぞれは、前記モデルのサブ・システムのモデルである。このように、1つのメタ・プロセッサは、複数のメタ・モデルを操作することができる。
好ましくは、前記プロセッサのアクションは、ルート・メタ・モデルおよびルート・メタ・プロセッサを備えるルート・メタ・アクタによって生じ、前記ルート・メタ・モデルは、前記モデルと同じタイプのモデルを処理するための一般モデルであって、一般モデル実行システム内のオブジェクトを表し、所定の時間に2つ以上の状態のいずれであるかを定義するデータに関連するオブジェクトと、オブジェクトの状態の変化であるイベントに応じて開始されるべきアクションを定義するルールと、を含み、前記ルート・メタ・プロセッサは、イベントがトリガされたときに、もしあるならば、どのアクションが開始されるべきかを決定し、当該アクションを開始するために、前記モデルにおける前記イベントの定義を検査する際と、アクションが開始されたときに、もしあるならば、どのオブジェクトがそれらの状態を変化されるべきかを決定し、それに応じて当該オブジェクトの状態を変えるために、前記モデルにおける前記アクションの定義を検査する際と、オブジェクトの状態が変化させられたときに、もしあるならば、どのイベントがトリガされるべきかを決定し、当該イベントをトリガするために、前記モデルにおける前記オブジェクトの定義を検査する際と、に前記ルート・メタ・モデルをガイドするように調整される。
これは、上記された第1のアクタの汎用実現を提供するということができる。
好ましくは、アクタは、メタ・アクタおよびルート・メタ・アクタを含む。
この場合、メタ・モデルが明示的であるので、モデルは、実行中に修正されることができ、アクタは、オペレーション中にその動作を適応させることができる。
前記メタ・モデルは、前記モデルの部分を形成してもよい。これは、また、オペレーション中に、アクタに新しいタイプのモデルを引き受けることを可能にする。代わりに、または加えて、前記ルート・メタ・モデルは、前記メタ・モデルの部分を形成してもよい。これは、ある環境下で実行中に、ルート・メタ・モデルを修正することを可能にする。また、これは、例えばコンパイラまたはツールセットの供給者によって前もって修正されたメタ・モデルの要件を潜在的に回避する。
上記アクタのいずれかにおいて、前記プロセッサ、または1つ以上の多重プロセッサは、前記モデルにおける前記イベントの定義を検査し、もしあるならば、開始すべきアクションがいずれであるかを決定し、その後当該アクションを開始するイベントのトリガに応じて動作可能な1つ以上のアクティベータと、前記アクションを生じるように調整され、かつ、前記モデルのアクションの定義を検査し、もしあるならば、前記サブジェクトシステムにおいて状態を変化するオブジェクトがいずれであるかを決定し、その後それに応じて当該オブジェクトの状態を変化するアクションの開始に応じて動作可能な1つ以上のエグゼキュータと、アクションの出力結果を記録するように調整され、かつ、前記モデルにおける前記オブジェクトの定義を検査し、もしあるならば、前記サブジェクトシステムにおけるいずれのイベントが前記オブジェクトの状態の変化からの結果であるかを決定し、当該イベントをトリガするオブジェクトの状態の変化を認識することに応じて動作可能な1つ以上のレコーダと、前記アクタが他のアクタまたは外部世界に接続される外部チャネルへの1つ以上のインタフェースと、前記アクティベータ、前記エグゼキュータ、前記レコーダおよび前記インタフェースに接続される1つ以上の内部チャネルと、を備える。
メタ・アクタを含む上記アクタにおいて、前記メタ・プロセッサ、または1つ以上の多重メタ・プロセッサは、前記メタ・モデルにおける前記イベントの定義を検査し、開始するモデルのアクションがいずれであるかを決定し、その後当該アクションを開始するイベントのトリガに応じて動作可能な1つ以上のアクティベータと、前記アクションを生じさせるように調整され、かつ、前記メタ・モデルにおけるアクションの定義を検査し、もしあるならば、前記モデルにおいて状態を変化するオブジェクトがいずれであるかを決定し、その後それによって当該オブジェクトを変化させるアクションの開始に応じて動作可能な1つ以上のエグゼキュータと、前記メタ・モデル内のオブジェクトの生成、修正または削除を含み、アクションの出力結果を記録するように調整されており、かつ、前記メタ・モデルにおける前記オブジェクトの定義を検査し、もしあるならば、前記モデルにおけるいずれのイベントが前記オブジェクトの状態の変化からの結果であるかを決定し、当該イベントをトリガするオブジェクトの状態の変化に応じて動作可能な1つ以上のレコーダと、前記アクタが他のアクタまたは外部世界に接続される外部チャネルへの1つ以上のインタフェースと、前記アクティベータ、前記エグゼキュータ、前記レコーダおよび前記インタフェースに接続される1つ以上の内部チャネルと、を備える請求項6から請求項9のいずれかに記載のアクタ。
ルート・メタ・アクタを含む上記アクタにおいて、前記ルート・メタ・プロセッサ、または1つ以上の数の多重ルート・メタ・プロセッサは、前記ルート・メタ・モデルにおける前記イベントの定義を検査し、いずれのアクションを開始するかを決定するイベントのトリガに応じて動作可能な1つ以上のアクティベータと、前記アクションを生じるように調整されており、かつ、前記ルート・メタ・モデルにおける前記アクションの定義を検査し、もしあるならば、前記プロセッサにおいて状態を変化するオブジェクトがいずれであるかを決定し、その後それによって当該オブジェクトを変化させるアクションの開始に応じて動作可能な1つ以上のエグゼキュータと、前記ルート・メタ・モデル内のオブジェクトの生成、修正または削除を含み、アクションの出力結果を記録するように調整されており、かつ、前記ルート・メタ・モデルにおいて前記オブジェクトの定義を検査し、もしあるならば、前記プロセッサにおけるいずれのイベントがオブジェクトの状態の変化からの結果であるかを決定し、当該イベントをトリガするオブジェクトの状態の変化に応じて実施可能な1つ以上のレコーダと、前記アクタが他のアクタまたは外部世界に接続される外部チャネルへの1つ以上のインタフェースと、前記アクティベータ、前記エグゼキュータ、前記レコーダおよび前記インタフェースに接続される1つ以上の内部チャネルと、を備える。
これらの特徴は、上記アクタによって基本的なイベント駆動型実行サイクルを反映することを可能にするコンポーネントへのプロセッサの分解を可能にする。イベント駆動型実行サイクルの実装は、このように粒度の細かい並列処理を可能にする。接続は、バス、リングのようなチャネルシステム、またはその他のチャネル・トポロジによって達成されることができる。
アクティベータ、エグゼキュータ、レコーダ、インタフェースまたはチャネルの1つ以上が、上に列挙されたように、アクタであってよい。これは、同じモデルに従って、プロセッサ・コンポーネントの分解を可能にする。
上記アクタのいずれかにおいて、前記モデルは、仮想アクタのa)プロセッサ、b)メタ・プロセッサまたはc)ルート・メタ・プロセッサの1つで構成されるプロセッサ・エンティティを精緻化し、その結果、前記プロセッサ・エンティティは、第1のアクタのプロセッサ、メタ・プロセッサまたはルート・メタ・プロセッサのいずれかによって直接的に実行され得る請求項1から請求項17のいずれかに記載のアクタ。これは、物理プロセッサ上の仮想プロセッサの階層化を提供する。
このようなアクタは、シミュレータであってよく、その場合、前記アクタは、代理サブジェクトシステムにおいてアクションを開始し、シミュレーション、物理および壁時計時間の関係を処理し、第1のアクタの詳細なモデルで定義される内部および外部イベントの配分を処理し、シミュレートされたアクタの生成および削除、ならびにシミュレートされたモデル内における役割の割り当ておよび再割り当てを処理し、シミュレートされたアクタから物理アクタへの割り当ておよび精緻化を処理するルールを更に含むモデルを含む。
これは、動的分析、あるいはゲームまたはトレーニングのいずれかのために、類似するアーキテクチャ内で、アクタのシミュレーションを可能にできる。
いずれのケースにおいても、前記仮想アクタは、更なる仮想アクタのプロセッサ・エンティティを精緻化するために調整されてよい。これは、例えば、オペレーティング・システムにおける使用のために、仮想プロセッサの多重レイヤを提供する。
精緻化モデルを含むこれらのアクタのいずれにおいても、前記モデルは、2つ以上のサブ・モデルを含み、前記サブ・モデルのそれぞれは、1つ以上の他の仮想アクタのプロセッサ・エンティティの動作を精緻化する請求項18から請求項20のいずれかに記載のアクタ。これは、単一の物理プロセッサによって、多重仮想プロセッサをサポートすることを可能にする。
本発明は、また、上記されたアクタを2つ以上備え、各アクタが、それぞれ少なくとも1つの他のアクタに各自のチャネルを経由して接続された、共通サブジェクトシステムにおいてアクションを生じさせるために調整されるシステムを提供する。チャネルは、アクタを互いに通信させることが可能である。
前記各アクタは、前記アクタの部分を形成する第1のインタフェース、および前記チャネルの部分を形成する第2のインタフェースによって、各自の前記チャネルに接続されてもよい。従って、チャネルは、アクタにインタフェースを提供する。
いずれかまたは全てのチャネルまたはインタフェースは、上記のようなアクタであってもよい。このように、いくつかまたは全てのチャネルおよび/またはインタフェースを提供することは、本発明のアクタと関連して、上に概説した利点をもたらすことができる。
上に概説したアクタは、上に概説したようなシステムを備えてもよい。これは、アクタに、アクタのシステムを備えることを可能にする。
本発明の第2の態様によれば、サブジェクトシステムにおいてアクションを生じさせるためのアクタを含む論理型コンピューティング・デバイスであって、前記サブジェクトシステムの内部オブジェクトを表し、所定の時間に2つ以上の状態のいずれであるかを定義するデータに関連するオブジェクトと、前記オブジェクトの状態の変化であるイベントに応じて開始されるべきアクションを定義するルールと、を含む前記サブジェクトシステムのモデルを実装する手段と、前記モデルの前記ルールによって定義されるように、前記イベントに依存する前記サブジェクトシステムで、1つ以上のアクションを開始することによって、前記サブジェクトシステムにおいてイベントに応答するプロセッサを実装する手段と、を備えるデバイスが提供される。
これは、本発明のアクタから導き出されるような、上に挙げられた全ての利益をコンピューティング分野に供給できる論理型コンピューティング・デバイスを提供する。
この論理型コンピューティング・デバイスのプロセッサは、1つ以上のアクティベータ、1つ以上のエグゼキュータ、1つ以上のレコーダ、1つ以上の内部チャネルおよび1つ以上のインタフェースを備えてもよい。これは、粒度の細かい並列オペレーションが可能であるデバイスを提供する。これは、逐次的であることが必須であるフォン・ノイマン・パラダイムとは似ていない。これは、また、粒度の粗い並列処理だけをサポートするCSPパラダイムとも似ていない。これは、また、データフローまたはアクタパラダイムのいずれかよりも一般的な状況に適用可能である。
好ましくは、少なくとも1つのアクティベータは、イベント待ち行列におけるアイテムへの参照を含むように動作可能なイベント待ち行列レジスタと、現在のイベントへの参照を含むように動作可能なイベントレジスタと、現在のイベントのタイプを含むように動作可能なイベントタイプレジスタと、を含む。これらの特徴は、従来のフォン・ノイマン・コンピュータのプログラムカウンタを置き換えると考えることができる。
有利なことに、少なくとも1つのエグゼキュータは、アクション待ち行列におけるアイテムへの参照を含むように動作可能なアクション待ち行列レジスタと、現在のアクションへの参照を含むように動作可能なアクションレジスタと、現在のアクションのタイプを含むように動作可能なアクションタイプレジスタと、を含む。これらの特徴は、命令レジスタと、更に命令デコーダと共に従来のフォン・ノイマン・コンピュータの制御ユニットを置き換えると考えることができる。
このようなデバイスは、単一の処理ユニットまたは集積回路に共に設けられている、単一のアクティベータ、単一のエグゼキュータ、単一のレコーダ、1つ以上の内部チャネルおよび1つ以上のインタフェースを備えてもよい。これは、単一のCPUを有する従来のコンピュータと同等に、デバイスが単一のプロセッサを使用して実装されることを可能にする。しかし、それは、アクタのモデルを処理する能力があり、ここでは直接的には並列モデルである。
代わりに、デバイスは、単一のアクティベータ、単一のエグゼキュータ、単一のレコーダおよび1つ以上のインタフェースを備えてもよい。これらのコンポーネントのそれぞれは、各自の処理ユニットまたは集積回路に設けられ、コンポーネントは1つ以上のチャネルを経由して互いに接続されている。これは、修正なしに、しかしより大きなスループットで同等の並列モデルを直接的に処理する能力がある多重プロセッサの実装を提供する。これは、並列に実行させることを可能にするプログラムに実体化されたシステムの逐次的な記述を変換するために、かなりの複雑さを加えがちな従来の多重CPUアーキテクチャに、現実的な等価物を持たない。
ここで、複数のアクティベータは、1つ以上のチャネルを経由して接続されることができ、少なくとも2つのアクティベータは、共通イベント待ち行列を共有してもよい。これは、粒度の細かい並列起動の準備に関係する。
また、複数のエグゼキュータは、1つ以上のチャネルを経由して接続されることができ、少なくとも2つのエグゼキュータは、共通アクション待ち行列を共有することができる。これは、粒度の細かい並列実行の準備に関係する。
更に、複数のレコーダは、1つ以上のチャネルを経由して接続されることができ、少なくとも2つのレコーダは、共通オブジェクト待ち行列を共有することができる。これは、粒度の細かい並列記録の準備に関係する。
アクティベータまたは1つ以上のアクティベータは、それぞれ、上記論理型デバイスのいずれかを備えてよい。エグゼキュータまたは1つ以上のエグゼキュータは、それぞれ、上記論理型デバイスのいずれかを備えてよい。レコーダまたは1つ以上のレコーダは、それぞれは、上記論理型デバイスのいずれかを備えてよい。これらの特徴は、スループットを増加させるのと共に、大規模並列プロセッサの実装を可能にする。
2つ以上のコンポーネントは、異なる配置に分散してもよい。本発明はコンピューティング・デバイスを、それらを同じ物理配置にする必要性なしに多重接続コンポーネントで形成することが可能であるので、これは可能である。
1つの精緻化モデルを含む上記アクタのいずれにおいても、アクタのモデルは、フォン・ノイマン型アーキテクチャを備えるコンピュータまたはコンピュータシステム上、もしくは、フォン・ノイマン型アーキテクチャを備えるコンピュータまたはコンピュータシステムのリソースを管理あるいは単純インタフェースを提供するオペレーティング・システム上で、プロセッサ、メタ・プロセッサまたはルート・メタ・プロセッサの精緻化を可能にするルールを含むようにしてもよい。これは、従来のフォン・ノイマン・ハードウェアに、疑似ルート・メタ・アクタ型コンピューティング・システムまたはデバイスのように動作することを可能にする。
本発明のもう1つの態様は、複数のリソースを持つコンピュータシステムを提供する。各リソースは上記のようなアクタまたはコンピューティング・デバイスによって管理され、上記のようなアクタまたはコンピューティング・デバイスのサブジェクトシステムを構成する。これは、パーソナル・コンピューティング・システムのように、密結合または疎結合の統合コンピューティング・システムを提供する構成を可能にする。インタフェース・アクティビティを専用インタフェースプロセッサに分配することは、そのようなアクティビティに含まれていることから基本プロセッサを自由にでき(従来のフォン・ノイマン・プロセッサとは似ていない)、基本プロセッサのスループットを潜在的に著しく増加する。
本発明のもう1つの態様は、上記アクタのうちのある1つ、および、アクタのモデルを、フォン・ノイマン・コンピュータ、またはコンピュータシステム、またはフォン・ノイマン・コンピュータもしくはコンピュータシステムのリソースを管理する、あるいはそれらにより単純なインタフェースを供給するオペレーティング・システムの、オブジェクトまたはコードに静的に変換する、フォン・ノイマン・コンピュータまたは階層化オペレーティング・システムのモデルを使用するように調整されたコンパイラを提供する。有利に、コンパイラは、アクタのモデルを静的に変換するように調整されたメタ・トランスレータおよびハードウェア・メタ・モデルを含む。これらの特徴は、アクタ型モデル、メタ・モデルまたはルート・メタ・モデルに、従来のフォン・ノイマン・ハードウェア上で静的に変換される、もしくは動作されること、または従来の、例えば階層化された、オペレーティング・システムを使用することを可能にする。
上記のような、精緻化モデルと共に複数のアクタを備えるシステムは、コンピュータシステムのリソースを管理すると共に、コンピュータシステム上で1つ以上のモデル、メタ・モデルまたはルート・メタ・モデルの同時実行を可能とするように調整されてもよい。このシステムは、本明細書に記述される有利な原則に従って動作するオペレーティング・システムを構成することができる。コンピュータシステムは、フォン・ノイマン型コンピュータまたはコンピュータシステムであってもよく、また、それは、ルート・メタ・アクタ論理型コンピューティング・デバイスまたはそのようなデバイスのシステムであってもよい。
代理サブジェクトシステムにおいてアクションを開始し、精緻化モデルを含むアクタを用いて、プロセッサは、上に定義されるような論理型コンピューティング・デバイスを構成してもよい。これは、大規模並列シミュレーションを可能にする。大規模並列シミュレーションを管理する複雑さは、たとえ並列であっても、従来のフォン・ノイマン・ハードウェア上で実行される状況と比べると、相当に減らすことができる。
本発明の第3の態様によれば、フォン・ノイマン型コンピュータのモデル、または、フォン・ノイマン型コンピュータの資源を管理もしくはフォン・ノイマン型コンピュータにより単純なインタフェースを提供するオペレーティング・システムのモデルを使用し、アプリケーションモデルにおけるオブジェクトを表し、所定の時間に2つの以上の状態のいずれであるかを定義するデータに関連するオブジェクトと、前記オブジェクトの状態の変化であるイベントに応じて開始されるアクションを定義するルールと、を備えるアプリケーションモデルを、フォン・ノイマン型コンピュータもしくはコンピュータシステム、または、フォン・ノイマン型コンピュータもしくはコンピュータシステムの資源を管理する、あるいは当該フォン・ノイマン型コンピュータもしくはコンピュータシステムにより単純なインタフェースを提供するオペレーティング・システム、のオブジェクトまたは機械またはアセンブラ・コードに静的に変換するコンパイラを提供する。
このことは、上述したアクタと同様に、イベント型並列アクションを実装するために、従来のコンピュータまたはオペレーティング・システムの使用を可能にするコンパイラを提供する。アプリケーションモデルは、請求項のアクタのモデルの他の特徴のいずれかを付加的に含んでいてもよい。
本発明は、また、上記のアクタのうち第1から第5のアクタで構成され、当該第1から第5のアクタは、それぞれ、オペレーションまたは変形プロセスを実行するように動作可能であるオペレーティングアクタ、システムの目的およびパフォーマンス目標を決定し、かつ当該目的およびパフォーマンス目標を他のアクタに提供するように動作可能であるディレクティングアクタ、前記ディレクティングアクタによって提供された目的およびパフォーマンス目標を達成するために、前記システム内の他のアクタの全てを制御するために動作可能であるマネージングアクタ、他のアクタそれぞれの部分を形成する少なくとも1つのモデルを開発および保守するために動作可能である学習アクタ、第1〜第5のアクタの責務を達成するために動作可能であるサブ・アクタを提供するために動作可能である実現アクタ、であるシステムを提供する。これは、これを用いて発展可能システム(すなわち、人工知能エージェントまたはビジネス企業のように、分離された存在を維持できるシステム)が形成されることができるコンポーネントを提供する。
1つ以上の前記第1から第5のアクタは、それぞれ直上のパラグラフに記述されるようなシステムを備えていてもよい。これは、再帰的に定義される発展可能システムを提案する。これは、特に、発展可能な知能エージェントまたは発展可能なビジネス企業のような、複雑な発展可能システムの設計時に有用である。
上記のような第1〜第5のアクタを備えるシステムにおいて、前記オペレーティングアクタは、オブジェクト、アクション、およびイベントについてのルールをモデル化し、目標システム、問題システム、および機会システムの1つ以上におけるアクタの役割の割り当ておよび精緻化をし、詳細なルールを試験して結果システムの動きを分析するために結果モデルをシミュレートすることによって、何を変化させる必要があるかを決定する前記目標システムにおける問題または機会を調査する調査サブ・システムと、前記調査サブ・システムが、調査システムでモデル化された目標システムおよび他のシステムにおけるオブジェクト、ルール、およびアクタのモデル化によって、ならびに、詳細なルールを試験して結果システムの動きを分析するために結果モデルをシミュレートすることによって、目標システムに対する変化をモデル化およびシミュレートするのを完了したことに応答する開発サブ・システムと、前記調査サブ・システムが、調査システムでモデル化された目標システムおよび他のシステムにおけるオブジェクト、ルール、およびアクタのモデル化によって、ならびに、詳細なルールを試験して結果システムの動きを分析するために結果モデルをシミュレートすることによって、変化を展開できる一時システムをモデル化およびシミュレートするのを完了したことに応答する準備サブ・システムと、前記開発サブ・システムおよび前記準備サブ・システムが、前記準備サブ・システムにおいてモデル化およびシミュレートされたシステムを実行し、ならびに前記開発サブ・システムにおいてモデル化およびシミュレートされた変化を配置するのを完了したことに応答する配置サブ・システムと、を備える変化システムを操作可能なように有利に調整される。
これは、システム開発のためのルート・メタ・アクタ型アプローチに適用され、発展可能学習システムとしてシステムプロジェクトを確立することを可能にする。発展可能学習システムは、他の発展可能学習システムと同じ機構を使用して目標システムを生成または変更するために、指示され、操作され、管理され、可能にされ、適応される。
本発明の第4の態様によれば、サブジェクトシステムにアクションを生成する方法であって、前記サブジェクトシステムの内部オブジェクトを表し、所定の時間に2つ以上の状態のいずれであるかを定義するデータに関連するオブジェクトと、前記オブジェクトの状態の変化であるイベントに応じて開始されるべきアクションを定義するルールと、を含む前記サブジェクトシステムのモデルを維持し、前記モデルの前記ルールによって定義されるように、前記イベントに依存する前記サブジェクトシステムで、1つ以上のアクションを開始することによって、前記サブジェクトシステムにおいてイベントに応答するプロセッサを制御する方法を提供する。
アクタ発明について上に概説された全ての利益と同様に、この方法は、コンピュータ、機械類、人間および組織を含むアクタの多くのクラスに付加的に適用可能であり、それゆえ複雑な社会技術システムの設計および開発をサポートすることができる。
本発明の第5の態様によれば、サブジェクトシステムにおいてアクションを生じさせる方法であって、前記サブジェクトシステムの内部オブジェクトを表し、所定の時間に2つ以上の状態のいずれであるかを定義するデータに関連するオブジェクトと、前記オブジェクトの状態の変化であるイベントに応じて開始されるべきアクションを定義するルールと、を含む前記サブジェクトシステムのモデルを実装する手段を、論理型コンピューティング・デバイスにおいて維持し、前記モデルの前記ルールによって定義されるように、前記イベントに依存する前記サブジェクトシステムで、1つ以上のアクションを開始することによって、前記サブジェクトシステムにおいてイベントに応答するプロセッサを実装する手段を、前記論理型コンピューティング・デバイスにおいて維持する方法を提供する。
本発明の第6の態様によれば、フォン・ノイマン型コンピュータのモデル、または、フォン・ノイマン型コンピュータの資源を管理もしくはフォン・ノイマン型コンピュータにより単純なインタフェースを提供するオペレーティング・システムのモデルを使用し、アプリケーションモデルにおけるオブジェクトを表し、所定の時間に2つの以上の状態のいずれであるかを定義するデータに関連するオブジェクトと、前記オブジェクトの状態の変化であるイベントに応じて開始されるアクションを定義するルールと、を備えるアプリケーションモデルを、サブジェクトシステムにおいて動作するように、フォン・ノイマン型コンピュータもしくはコンピュータシステム、または、フォン・ノイマン型コンピュータもしくはコンピュータシステムの資源を管理する、あるいは当該フォン・ノイマン型コンピュータもしくはコンピュータシステムにより単純なインタフェースを提供するオペレーティング・システム、のオブジェクトまたは機械またはアセンブラ・コードに静的に変換するコンパイラを制御する方法を提供する。
本発明の第7の態様によれば、サブジェクトシステムをモデル化する方法であって、前記サブジェクトシステムの内部オブジェクトを表し、所定の時間に2つ以上の状態のいずれであるかを定義するデータに関連するオブジェクトと、前記オブジェクトの状態の変化であるイベントに応じて開始されるべきアクションを定義するルールと、実行により直接的または間接的に生じるイベントに応じてそれぞれが開始されるサブ・アクションとして、イベントに応じて開始された合成アクションを定義するルールと、を含む前記サブジェクトシステムのモデルを維持する方法を提供する。
本発明の第8の態様によれば、システムを操作する方法であって、イベントがトリガされたときに、もしあるならば、どのアクションが開始されるべきかを決定し、当該アクションを開始するために、前記イベントの定義を検査し、アクションが開始されたときに、もしあるならば、どのオブジェクトが状態に関して変化されるべきかを決定し、それに応じて当該オブジェクトを変えるために、前記アクションの定義を検査し、オブジェクトの状態が変化させられたときに、変化した状態がいずれかのイベントをトリガすべきか否かを決定し、当該イベントをトリガするために、前記オブジェクトの状態変化の定義を検査する方法を提供する。
本発明の第9の態様によれば、システムを操作する装置であって、前記イベントの定義を検査し、開始すべきアクションがいずれであるかを決定し、決定した当該アクションを開始するイベントのトリガに反応する1つ以上のアクティベータと、前記アクションの定義を検査し、状態にかんして変化されるべきオブジェクトがいずれであるかを決定し、当該決定に応じたオブジェクトの状態を変化させるアクションの開始に反応する1つ以上のエグゼキュータと、前記オブジェクトの状態変化の定義を検査し、いずれのイベントがトリガされるべきであるかを決定し、決定した当該イベントをトリガするオブジェクトの状態の変化に反応する1つ以上のレコーダと、を備える装置を提供する。
第8および第9の態様は、本当のイベント型システムオペレーションを可能にすることができ、ある実装においてはフロー・ジャンプ・コンピューティングの回避を完全に可能にすることができる。
本明細書において、いくらかの用語に、以下のような意味を与える。
プロセッサ:モデルによってガイドされるサブジェクトシステムにおいて、アクションを生成するもの。
サブジェクトシステム:状態を持ち、実体的または概念的に相互作用するオブジェクトのコレクション。コレクションは、オブザーバまたはモデラによって定義されるように環境内に分離した存在を持つ。そして、それは、1つ以上のアクタによって生じるアクションのサブジェクトである。
サブジェクトシステムにおけるオブジェクト:実体的または概念的なもの。サブジェクトシステムにおけるいくつかのオブジェクトは、2つの以上の状態を持つことができる。サブジェクトシステムにおけるオブジェクトは、物理的な3次元項目であってもよい。いくつかの実施形態において、サブジェクトシステムにおけるオブジェクトは、人的、技術的、金融的または他のリソースのような発展可能なビジネスシステムのコンポーネントであってもよい。
モデルにおけるオブジェクト:サブジェクトシステムにおけるオブジェクトを表し、2つの以上の異なる状態を持ってもよいもの。
イベント:オブジェクトの離散的状態における瞬間的な変化。
アクティベータ:イベントに応答して、1つ以上のモデルからいずれのアクションを開始するかを決定する物理または仮想アクタあるいはデバイス。
エグゼキュータ:1つ以上のモデルに従って、1つ以上のオブジェクトを変化させるためのアクションを生成する物理または仮想アクタあるいはデバイス。
レコーダ:1つ以上のモデルの部分を形成するオブジェクトを管理し、そのようなオブジェクトの離散状態の変化がそれらと同じモデルに従うイベントをトリガする時を認識する物理または仮想アクタあるいはデバイス。
エラボレータ:典型的により低いレベルの別のプロセッサ上での直接実行を可能にするプロセッサの動作を明確に解釈する物理または仮想アクタあるいはデバイス。
本発明の実施形態の例を、添付図面を参照して説明する。
図10を参照すると、本発明が実施されるアクティブシステムが図示されている。このシステムにおいて、アクタ10−1は、サブジェクトシステム10−2にアクションを生成(10−4)することができる。アクタ10−1およびサブジェクトシステム10−2は、サブジェクトシステム10−2に影響を与えることができる環境10−3に存在する。アクタ10−1もサブジェクトシステム10−2も、環境10−3を制御しない。
アクタ10−1は、図11Aにて詳しく説明される。ここで、アクタ10−1は、モデル11−1およびプロセッサ11−2を含むことが分かる。プロセッサ11−2は、モデル11−1によってガイド(11−5)される。プロセッサ11−2は、サブジェクトシステム10−2においてアクションを生成(11−4)するように調整されている。プロセッサ11−2はアクタ10−1の部分を形成するので、サブジェクトシステム10−2におけるアクションの生成(11−4)は、図10におけるアクションの生成(10−4)と同じものである。サブジェクトシステム10−2は、アクタ10−1の部分を形成するモデル11−1によって理解(11−3)されている。これは、モデル11−1、プロセッサ11−2、およびサブジェクトシステム10−2を含むループを完成する。これにより、アクタ10−1は、サブジェクトシステム10−2のモデル11−1によって、サブジェクトシステム10−2上でのアクション11−4をガイドされることができる。したがって、アクタ10−1は、「モデル型アクタ」といえる。
イベントは、モデル11−1によってガイドされるアクタ10−1のアクションを通じてか、あるいはサブジェクトシステム10−2に作用する他のアクタ(図示せず)のアクションを通じてか、あるいはサブジェクトシステムそれ自体の状態における変化(例えば、化学反応の進行)またはその環境10−3の状態における変化(例えば、時間の経過)を通じてかのいずれかで、サブジェクトシステム10−2に起こり得る。アクタ10−1は、それ自身のアクションによってモデル11−1を最新に保つ。プロセッサ11−2は、モデル11−1に従って処理するときに、モデル11−1を、中間アクションおよびサブジェクトシステム10−2において生成するアクションにより更新する。アクタ10−1は、イベント、すなわち、他のアクタのアクションによって、あるいはサブジェクトシステムそれ自体またはその環境10−3の状態の変化によって引き起こされた、サブジェクトシステム10−2におけるオブジェクトの状態の変化を検知することができる。
図11Bに示されるように、サブジェクトシステム10−2は、3つの異なるルートを経由する3つの方法でモデル11−1「に理解される」。第1のルート11−6は、サブジェクトシステム10−2を識別し、オブジェクト、イベント、アクション等、重要と考えるものに関して、そのモデル11−1を構築するモデラ11−7を経由する。これは、プロセッサ11−2のアクションをガイドするルールがモデル11−1において確立される機構である。モデラ11−7は、システムの環境10−3にあり、アクタ10−1から分離されるように、図11Bに示される。しかしながら、本発明のある態様においては、モデラ11−7は、アクタ10−1の部分である。例えば、メタ・プロセッサがプロセッサまたはルート・メタ・プロセッサと分離されていようが、その部分であろうが、それを含むアクタ10−1において、モデラ11−7の役割は、メタ・プロセッサをガイドするメタ・モデル内に含まれるルールに従ってメタ・プロセッサによって引き受けられる。これは、例えば、図15のアクタに関連する以下の記述を追うことによって理解されるだろう。第2のルート11−8は、サブジェクトシステム10−2においてイベントまたはオブジェクトの状態の変化を検出するために、センサ11−9を使用するプロセッサを経由している。プロセッサ11−2は、ルート11−10を経由して、サブジェクトシステム10−2の現在の状態、およびサブジェクトシステムにおいて認識されるイベントでモデルを更新する。第3のルート11−12は、特に、プロセッサ11−2がイフェクタ11−11を経由してサブジェクトシステム10−2に生成する、中間アクションを含むアクションの出力結果でモデル11−1を更新するための、プロセッサ11−2による直接的なモデル11−1の更新である。ルート11−8、11−10、および11−12はいずれも、図11Aのルート11−3と等価である。
モデル11−1は、図12に詳細に示されている。モデル11−1は、サブジェクトシステム10−2を、それがサブジェクトシステム10−2内の重要なオブジェクトを表すオブジェクト12−3を含み、各オブジェクト12−3の状態12−1のいずれの変化が、プロセッサ11−2によって開始されるアクション12−4を順に引き起こすイベント12−2をトリガすべきかを定義するルールを持つという意味で「理解」する。図12において、オブジェクト12−3の状態12−1の変化、またはオブジェクト12−3の生成もしくは削除を反映するイベント12−2は、アクション12−4を開始する。各アクション12−4は、1つ以上のオブジェクト12−3において変化を生じさせることができる。イベント12−2なしに開始されるアクション12−4はない。モデル11−1は、それゆえ、イベント駆動型モデルとして記述されることができる。この図において、矢印は、各オブジェクト(状態、イベント、またはアクション)から他のオブジェクト(状態、イベント、またはアクション)への参照を表す。したがって、例えば、アクション12−4とイベント12−2との間の矢印12−5は、アクション12−4が唯一のイベント12−2によって開始されることを示す。一方、1つのイベント12−2は、1つ以上のアクション12−4を開始することができる。アクション12−4とオブジェクト12−3との間の両矢印12−8は、各アクション12−4が1つ以上のオブジェクト12−3における変化を生じさせることができ、かつ各オブジェクト12−3は1つ以上のアクション12−4によって変化され得ることを示す。矢印12−9は、状態12−1が1つのオブジェクト12−3のみに関連することを示す。イベント12−2は、矢印12−6によって示される1つの状態から、矢印12−7によって示される他の状態までの、オブジェクト12−3の状態12−1における瞬間的な変化である。オブジェクト12−3の生成または削除は、存在と非存在との間の状態における変化として考えられる。
アクションの出力結果は、モデル内におけるオブジェクトの生成、修正、または削除を含んでいてもよい。それら出力結果はそれぞれ、オブジェクトの状態における変化であると考えられる。オブジェクトは、生成または破棄される代わりに、それぞれアクティブまたは非アクティブにされてもよく、これは結果として、オブジェクト処理をより容易にすることができる。
プロセッサ11−2は、図13において詳細に示されている。ここで、イベント12−2は、それに依存する1つ以上のアクション12−4を開始することによって応答される。イベント12−2に依存するアクション12−4は、モデル11−1によって定義される。各アクション12−4は、1つ以上のオブジェクト12−3を変化させることができる。オブジェクト12−3の変化は、1つ以上の更なるイベント12−2をトリガすることができる。これは、イベント実行サイクルと呼ぶことができる。イベント実行サイクルは、アクション12−4によって、またはオブジェクト12−3の変化(例えば、環境10−3のイベントから)によって、新しいイベント12−2が生成されなくなり、全てのイベント12−2が処理されて完了するまで続く。
図11〜13のシステムのアプリケーションを図示する、例えば、エンジン動力計の自動化制御において使用されるようなイベント駆動型制御モデルは、図14に示される。図22Aは、図14へのキーである。図14のモデルにおいて、実行は、図の左手側に示される6つのオブジェクトの生成によって開始する。以下では、「アクセル」は、「アクセラレーション」の短縮形式として使用される。アクセル率14−1、アクセル期間14−21、エンジン速度14−3、および最終アクセル時刻14−4をラベル付けられるオブジェクトのそれぞれの生成は、順にアクションを開始するイベントをトリガーする。この場合には、これらのオブジェクトのそれぞれの初期値をセットする。モデルの開始イベント14−5が、ある他の残りのアクティビティを開始するまでは、これ以上のことは何も起こらない。第1のアクション14−6は、アクセル乗算器14−2の値を計算する。アクション14−6の完了は、現在時刻オブジェクト14−8に01:00の時刻を割り当てるための更なるアクション14−7を開始する。現在時刻オブジェクト14−8への値の割り当ては、下記のように、変化イベント14−20をトリガする。この時刻割り当てアクション14−7の完了は、また、現在時刻オブジェクト14−8によって与えられた値を、この例では、アクション14−9の入力として与えられた72:00(すなわち、72時間)がセットされたモデルの最終時刻と比較するアクション14−9を、その後開始するできる2つの可能なイベントのうちの一方である。アクション14−9が「真」の状態で完了した場合、モデルは、アクション14−10で1時間ずつ現在時刻14−8をインクリメントすることによって、継続する。インクリメントするアクション14−10の完了は、アクション14−9による現在時刻オブジェクト14−8の値の最終時刻の値との比較を開始する第2のイベントである。
図14のモデルを詳細に観察すると、基本処理サイクルが従来の「フロー」の制御によっては進行しないが、代わりに、オブジェクトの状態の変化を認識するイベント、または1つ以上のさらなるアクションのイニシエータとしてのアクションを通じて進行することが明らかである。アクションおよびイベントは、特化されたタイプのオブジェクトである。例えば、現在時刻オブジェクト14−8の値がアクション14−7またはアクション14−10によって変化させられたときはいつも、イベント14−20は、順にアクション14−12での現在時刻オブジェクト14−8の値と最終アクセル時刻オブジェクト14−4の値との差を求め、結果値をアクション14−13でのアクセル期間オブジェクト14−21の値と比較する合成アクション14−11を開始する。ここで、アクセル期間オブジェクト14−21の値は、アクション14−14によって、最初は06:00(すなわち、6時間)にセットされる。アクション14−13の結果がアクセル期間オブジェクト14−21の値より大きい場合、2つの並列アクション14−15、14−16が開始される。これらのアクションのうち第1の並列アクション14−15は、最終アクセル時刻オブジェクト14−4の値を現在時刻オブジェクト14−8の値にセットし、第2の並列アクション14−16は、モデルの始めで計算されたアクセル乗算器オブジェクト14−2の値を使用して新しいエンジン速度を計算する。同様に、エンジン速度14−3の値が変化させられるときはいつも、イベント14−17がトリガされ、このモデルが接続され得る自動化制御システムで利用できるであろう、現在時刻およびエンジン速度オブジェクト14−8、14−3の値を印刷するアクション14−18を順に開始する。この他のアクションも図14に示されているが、その目的および効果は、当業者にとって自明であるだろう。この例において、イベントは、しばしばアクションの完了によって引き起こされるが、またオブジェクトの変化によって引き起こされてもよい。
図15は、環境10−3内のサブジェクトシステム10−2に作用するルート・メタ・アクタ15−0を示す。ルート・メタ・アクタ15−0は、図11〜13に示されたアクタ10−1の拡張である。図11〜13に示されるシステムと同様に、モデル11−1は、プロセッサ11−2をガイド(11−5)する。モデル11−1それ自体は、メタ・モデル(MM)15−1によって理解される。メタ・モデル15−1は、モデル11−1に含まれ、かつモデル11−1の部分を形成してもよい。よって、モデル11−1は、自らのモデル(メタ・モデル15−1)を含むと考えることができる。メタ・モデル15−1は、モデル(モデル11−1)のモデルである。すなわち、それは、そのサブジェクトシステムが別のモデル(モデル11−1)であるモデルである。メタ・モデル15−1は、メタ・プロセッサ(MP)15−2をガイドする。メタ・プロセッサ15−2は、プロセッサ11−2に含まれ、かつプロセッサ11−2の部分を形成してもよい。メタ・プロセッサ15−2は、モデル11−1にアクションを生成する。あるいは、メタ・プロセッサ15−2は、プロセッサ11−2の外部にあってもよい。
メタ・モデル15−1は、含まれるオブジェクトのタイプと、これらオブジェクトのタイプを関連付ける方法と、を定義することによって、モデル11−1の構造を形づくる。メタ・モデル15−1は、また、モデル11−1におけるアクションの生成に採用されるイベントおよびアクションの有効な組み合わせを定義することによって、モデル11−1内の動作を形づくる。メタ・モデル15−1によるモデル11−1の制御は、モデル11−1における全てのアクションが生成するメタ・プロセッサ15−2を経由して行われる。したがって、メタ・プロセッサ15−2は、また「モデルアダプタ」と呼ばれてもよい。
メタ・モデル15−1およびメタ・プロセッサ15−2がモデル11−1およびプロセッサ11−2の外側にそれぞれ位置する場合、メタ・モデル15−1それ自体内にアクションまたは変化が生成されることはない。しかし、メタ・モデル15−1がモデル11−1の部分で、メタ・プロセッサ15−2がプロセッサ11−2の1つのコンポーネントまたは関数である場合、示されているように、メタ・モデル15−1は、プロセッサ11−2によって適応されることができる。換言すれば、モデル11−1は、それ自体のモデル(モデル15−1)を反射的に含み、したがって、モデル11−1の構造およびプロセッサ11−2の動作(モデル11−1によってガイドされる)が、ルート・メタ・アクタ15−0の動作中に変化させられることができる。これは、上記先行技術に記述されたメタ・オブジェクト・フレームワークおよびメタ・オブジェクト・プロトコル・アプローチとは著しく対照的である。
メタ・モデル15−1およびメタ・プロセッサ15−2の組み合わせの概念は、図11〜13に示されるアクタのモデル11−1およびプロセッサ11−2の組み合わせと類似するパターンを追うことで知ることができる。
メタ・アクタ15−2、15−1のサブジェクトシステムは、1つ以上のモデル11−1のシステムである。メタ・プロセッサ15−2は、また、基本サブジェクトシステム10−2のモデル化においてアクタ11−1、11−2のためのモデラとして作用する。メタ・アクタ15−2、15−1のためのメタ・モデラは、メタ・モデル15−1がモデル11−1の部分でなければ、メタ・アクタ15−2、15−1(およびアクタ11−1、11−2)の外部にある。しかし、メタ・モデル15−1がモデル11−1の部分であれば、メタ・プロセッサ15−2は、モデラと同様に、メタ・モデラの役割を引き受ける。
プロセッサー11−2は、ルート・メタ・モデル15−3が同じクラスのプロセッサ11−2によって共有されるモデル実行のための汎化モデルであるという意味で、メタ・モデル15−1の部分を形成するルート・メタ・モデル(RM)15−3によって理解されている。ルート・メタ・モデル15−3は、また、メタ・モデル15−1の汎化モデルとして、それゆえに、また、モデル11−1の汎化モデルとして認識されることができる。メタ・モデル15−1およびモデル11−1における全てのオブジェクトは、ルート・メタ・モデル15−3におけるオブジェクトのインスタンスまたは特化である。ルート・メタ・プロセッサ15−4は、ルート・メタ・モデル15−3に従って、かつガイドの下で、プロセッサ11−2と、メタ・プロセッサ11−2に含まれるならばプロセッサ15−2と、にアクションを生成する。
プロセッサ11−2は、サブジェクトシステム10−2において、モデル11−1によって与えられたアクションを開始するためにイベントに応答する。同様に、メタ・プロセッサ15−2は、モデル11−1において、メタ・モデル15−1によって与えられたアクションを開始するためにイベントに応答する。ルート・メタ・プロセッサ15−4は、プロセッサ11−2において、ルート・メタ・モデル15−3によって与えられたアクションを開始するためにイベントに応答する。それゆえ、ルート・メタ・プロセッサ15−4は、汎化ルート・メタ・モデル15−3が表すクラスからいずれかのモデル(またはメタ・モデル)によって順にガイドされることができるいずれのプロセッサ(またはメタ・プロセッサ)の関数も引き受けることができる。したがって、プロセッサ11−2もメタ・プロセッサ15−2も、それらの関数がルート・メタ・プロセッサ15−4によって実行されると考えることができるので、独立のプロセッサとして物理的に存在する必要はない。プロセッサ11−2およびプロセッサ15−2は、それゆえに、仮想的である。
ルート・メタ・モデル15−3は、特定のクラスの全てのメタ・モデル15−1の汎化版である。例えば、それは、図16を参照して下に記述されたイベント駆動型モデルの汎化版であることができる。このように、ルート・メタ・モデル15−3は、いずれのメタ・モデル15−1、それゆえ、いずれのモデル11−1においても具体化されることができる有効な構造および動作を定義する。プロセッサ11−2に代わってルート・メタ・プロセッサ15−4においてアクションを開始するイベントは、サブジェクトシステム10−2または環境10−3に生成される。メタ・プロセッサ15−2に代わってルート・メタ・プロセッサ15−4においてアクションを開始するイベントは、モデル11−1(それはメタ・モデル15−1のサブジェクトシステムである)、または環境10−3に生成される。
イベントは、いずれのアクションも生じさせなくてもよく、また、1つまたは2つ以上のアクションを生じさせてもよい。また、開始されたアクションのそれぞれは、概して1つ以上のオブジェクトの状態変化を生じさせるが、1つ以上のさらなるイベントを次々に生じさせてもよい。これらのイベントのそれぞれは、それから、プロセッサ11−2、メタ・プロセッサ15−2、およびルート・メタ・プロセッサ15−4の適切な1つによって処理され、処理は更なるイベントが生成されなくなるまで継続する。
ルート・メタ・モデル15−3がメタ・モデル15−1およびモデル11−1の外側に位置する場合、ルート・メタ・モデルそれ自体は、ルート・メタ・プロセッサ15−4の実際の「配線」構造および動作に適応させることができない。しかし、ルート・メタ・モデル15−3が、示されるように、モデル11−1内のメタ・モデル15−1の部分として定義される場合、ルート・メタ・プロセッサ15−4は、メタ・プロセッサ15−2(その関数は、メタ・プロセッサ15−2が引き受ける)を通じてルート・メタ・モデル15−3を適応させることができ、それによってその構造および動作は自由に適応できる。
ルート・メタ・アクタを形成するためのルート・メタ・モデル15−3およびルート・メタ・プロセッサ15−4の組み合わせの概念は、図11〜13に示されるアクタのモデル11−1およびプロセッサ11−2の組み合わせに類似するパターンを追うことで知ることができる。
ルート・メタ・アクタ15−3、15−4のサブジェクトシステムは、一般モデル実行システムである。
ここで、ルート・メタ実行サイクルを示す図16を参照する。1つのレベル上で、サイクルは、イベント12−2によって駆動(16−1)されるアクション12−4を含む。アクション12−4は、オブジェクト12−3における変化をもたらす(16−2)ことができ、続いてイベント12−2をもたらす(16−3)ことができる。サイクルのこのレベルは、上述したように、図13に示されている。
図16のルート・メタ実行サイクルは、以下の通りである。イベント12−2がトリガされたときに、ルート・メタ・プロセッサ15−4は、どのアクション定義16−7がイベント12−2に関連し、それゆえ、どのアクションがイベント12−2によって開始される(16−1)べきかを、決定する(16−6)ために、そのイベントの定義16−5を検査する(16−4)。これらのアクション12−4は、それから開始される(16−8)。アクション12−4が開始されるときに、ルート・メタ・プロセッサ15−4は、どのオブジェクト定義16−10が影響を受けるかを決定する(16−15)ために、アクションの定義16−7を使用し(16−9)、それから、所定の関連オブジェクト12−3における変化(16−2)を開始する(16−11)。オブジェクト12−3が変化させられたときに、ルート・メタ・プロセッサ15−4は、オブジェクト12−3における変化がいずれかのさらなるイベント定義16−5をトリガ(16−13)すべきかどうかを見出すために、オブジェクトの定義16−10を検査する(16−12)。肯定の決定がなされた(16−14)場合、さらなるイベント12−2がトリガされ(16−3)、それにより、新しくトリガされたイベントのための更なるルート・メタ実行サイクルを開始する。前述において、オブジェクト12−3の変化は、オブジェクト12−3の状態における変化によって構成され、どのイベントがオブジェクトの状態の変化によってトリガされるべきかの決定は、オブジェクトの状態の変化の定義16−10を検査することを含む。アクションは、更に、または代わりに、状態における変化の特化タイプであるオブジェクト12−3の生成または削除をもたらしてもよい。オブジェクト12−3が生成または削除されるべきか否かは、アクション定義16−7によって決定される。
図16は、「粒度の細かい」イベント駆動型実行サイクルを、上記先行技術に開示されたOO GUIおよびDBMSトリガの「粒度の粗い」イベント駆動型処理と対比して表す。従来のソフトウェアにおける命令と等価である基本アクション(以下に図17を参照して記述する)まで下がれば、全ての単一のアクションは、他のアクションを表すオブジェクトを含むオブジェクトの状態における変化として認識されたイベントに応じて開始される。これは、本発明のこの態様を、並列コンピューティング・アーキテクチャ、特に、図29および30を参照して以下に記述されるものに対して相当により受け入れやすくする。
この実行サイクルに基づくプロセッサまたはシステムを構築するときに、実際の実装における検討事項を取り扱う更なるルールが必要となるかもしれない。例えば、図14を再び参照すると、アクション14−9を開始するANYイベントのような、あるイベントは、それら自身が他のアクションの完了に、この場合はアクション14−7または14−10の完了に関連している。しかし、アクション14−7および14−10の両者は、現在時刻オブジェクト14−8を修正することによって14−20でのオブジェクト変化イベントをトリガする。それゆえ、システムは、イベント14−20によって開始された合成アクション14−11も完了するまでは、アクション14−7または14−10のいずれをも完了したとみなすことができない。これは、実行システムまたはプロセッサに、その結果の全ても完了であるときにだけ、アクションを完了とみなすというルールを含むことを必要とする。
図17Aおよび17Bは、ルート・メタ・モデル15−3の構造的コンポーネントを示す。これは、モデルまたはメタ・モデルを記述するために要求される主要なオブジェクトタイプと、それらの間の主要な関係の単純化モデル(すなわち、これは図18に示される、いくつかの動作の詳細を無視する)である。それは、2つの次元の重なりからなる4つの象限に分解することによって、もっとも容易に理解される。1つの次元において、オブジェクトタイプは、アーキタイプまたはインスタンスのタイプであり、第2の次元において、それはモデルの構造または動作のコンポーネントであることができる。これは、4つの象限、すなわち図17Aに示される構造的アーキタイプおよび動作的アーキタイプと、図17Bに示される構造的インスタンスおよび動作的インスタンスとを与える。図22Aおよび22Bは、図17Aおよび17Bへのキーを提供する。
はじめに、このモデル上の全てのボックスがオブジェクトタイプを表すことに注意すべきである。各オブジェクトタイプは、同じ特性または属性、および動作を備えるオブジェクトのグループを表す。このモデルにおける全てのオブジェクトタイプは、モデル内における「オブジェクト」のインスタンスでもある。すなわち、全てのオブジェクトタイプは、「オブジェクト」オブジェクトタイプのサブ・タイプである。それゆえ、オブジェクトタイプ「オブジェクト」は、4つの象限全てをカバーする。全てのオブジェクトは、少なくとも1つの有限コレクションのメンバである。
当然のことながら、特別な注意が必要な、このモデルのいくつかの態様がある。1つは、オブジェクト・コレクションのサブ・コレクションであるオブジェクトタイプ・コレクションであり、次に、オブジェクトタイプ・コレクションのインスタンスである。これは、ルート・メタ・モデル15−3を含むいずれのメタ・モデル15−1またはモデル11−1も、メタ・プロセッサ15−4の制御の下で、メタ・モデルまたはモデルの特定のオブジェクトタイプが付加される前に、ルート・メタ・モデルからコアオブジェクトタイプおよびオブジェクトがまず準備されなければならないということを意味する。
構造的インスタンスは、図17Bに示されている。全ての構造的インスタンスは、単純または複雑のいずれかである。そのようなモデルにおける単純オブジェクトは、唯一のエレメントを持ち、値オブジェクト17−1または参照オブジェクト17−2のいずれかである。値オブジェクト17−1は、整数または日付のようなオブジェクトであり、任意の時点において、その内容は、典型的には無限であるが、明確な集合の単純で単一の存在である。一方、参照オブジェクト17−2は、ある他のオブジェクトを指す。複雑なオブジェクトは、1つの以上のエレメント17−4を持ち、合成オブジェクト17−3またはコレクション17−6のいずれかである。合成オブジェクト17−3は、典型的には異なるタイプの、1つ以上の他のオブジェクトから構成される。合成オブジェクトは、従来の高級プログラミング言語と(おそらく可変の)レコード構造が類似すると考えることができる。システム17−5は、少なくとも2つの他のオブジェクトを含み、少なくともその1つは参照オブジェクト17−2であるかまたはそれを含む、特別な種類の合成オブジェクト17−3である。同様に、アクタは、本明細書に定義されるように、別のシステム、すなわちサブジェクトシステムにおいてアクションを生成することができるシステムの特化タイプである。コレクション17−6は、その名称が暗示するように、類似するタイプのオブジェクトのグループである。コレクションは、無限コレクション17−7、有限コレクション17−8または派生コレクション17−9であってもよい。派生コレクション17−9は、他のコレクションへの参照で定義される。無限コレクション17−7は、整数の集合ように、典型的に値の無限グループを表す。しかし、モデル内の大部分のコレクション17−6は、通常、有限コレクション17−8であり、それは、直接的に(すなわち、明示的に列挙された)、またはそのメンバを導き出せるある公式を通じてのいずれかにより、典型的にはモデル内の他のオブジェクトへの参照で定義される。有限コレクション17−8の全てのメンバ17−10は、有限コレクション(下記参照)に関連したオブジェクトタイプ17−14によって定義される構造および動作を持つ。サブ集合のような派生コレクション17−9は、基礎値集合として予め定義されなければならないものでもなく、完全に列挙されるものでもないが、後述する適用アクションタイプ17−24内に含まれる公式を通じて定義されるメンバシップを持つ。
構造的アーキタイプは、図17Aに示されている。それらは、各コレクションの全てのメンバに共通する構造(および、後述のように、動作的アークタイプに関連する動作)を定義する。このゆえに、値オブジェクトタイプ17−11は、このタイプの全ての値オブジェクト17−5の値が取らなければならないコレクション17−6(典型的には整数ような無限集合)を識別する。また、値オブジェクトタイプ17−11は、値オブジェクト17−1の特定の値がそれを通じて導き出されるアクションタイプ17−16への参照(後述する)を含んでもよい。また、参照オブジェクトタイプ17−12は、このタイプのコレクション17−6のどのメンバが参照を許可されるのかを示すコレクション17−6への参照を含む。合成オブジェクトタイプ17−13は、このタイプの合成オブジェクト17−3のコンポーネントを提供するオブジェクトタイプ17−14を識別する。コレクションのコレクションのアーキタイプメンバを定義するコレクションタイプ17−15は、このタイプのコレクションメンバ17−10を引き出さなければならないオブジェクトタイプ17−14を識別する。
動作的アーキタイプもまた、図17Aに示される。それらは、イベントタイプ17−32およびアクションタイプ17−16をオブジェクトに関連付けることによってアクションが生成される機構を導入する。オブジェクトタイプ17−14もまたオブジェクトであるので、そのような関連付けは、特定のオブジェクトと同様に、オブジェクトタイプ17−14についても可能であって、オブジェクトタイプ17−14がアーキタイプであるコレクション17−6全体に関連する動作を許可する。イベントタイプ17−32は、基本イベントタイプ17−17または合成イベントタイプ17−18のいずれかである。基本イベントタイプ17−17は、別の状態からの、またはオブジェクトの生成という、ある状態へのオブジェクトの状態の変化を定義する。各状態は、状態オブジェクト17−19への参照で定義される。状態オブジェクト17−19は、値オブジェクト17−20の特化形式である。合成イベントタイプ17−18は、新しいイベントタイプを定義するために、他のイベントタイプ17−32(基本または合成のいずれか)を結合する。これらのイベントタイプ17−32が結合される方法は、典型的には和(OR)または積(AND)アクションタイプであるアクションタイプ17−16を経由して定義される。アクションタイプ17−16は、同様に、基本または合成アクションタイプ17−21である。基本アクションタイプやアクションタイプの他の形式に適用する関係がないので、基本アクションタイプは、図に示されない。アクションタイプ17−16は、このアクションタイプのアクションの実行ために利用できなければならない決定要因17−22を持つ。アクションタイプ17−16は、また、このアクションタイプのアクションの出力結果を受け入れる結果17−23を持つ。アクションタイプ17−16の決定要因17−22および結果17−23は、オブジェクトまたはオブジェクトタイプ17−14のいずれかであってもよい。適用アクションタイプ17−24は、特定のイベントタイプ17−32に関連する、アクションタイプ17−16の特定のインスタンスである。アクションタイプ17−16および適用アクションタイプ17−24間の相違を図示するために、我々は、アクション「加算」(すなわち、2進加算である数学の演算子「+」)を考えることができる。アクションタイプ「加算」は、2つの決定要因および1つの結果を持ち、それらはそれぞれ数である。適用アクションタイプは、図14に見られる。ここで、全てのアクション14−9に従うと、適用アクションタイプ「加算」は、1を「現在時刻」(決定要因)に加え、結果を「現在時刻」(結果)に割り当てるアクション14−10で開始される。動作的インスタンスは、また、図17Bによって示されている。それらは、図16を参照して上述されたように、モデル11−1の実行を駆動するために、ルート・メタ・プロセッサ15−4によって直接的に採用されている。オブジェクトタイプ17−14の主要な動作的インスタンスは、基本イベント17−26または合成イベント17−27であってよいイベント17−25、および合成アクション17−29であってよいアクション17−28である。アクション17−28および合成アクション17−29は、決定要因17−30および結果17−31を持つ。イベント17−25は、イベントタイプ17−32のオカレンスである。アクション17−28は、適用アクションタイプ17−24のオカレンスである。
このルート・メタ・モデル15−3と、他のモデル化アプローチ、特にオブジェクト指向型モデリングに関連するメタ・モデルとの間の主な相違は、以下の通りである。ルート・メタ・モデル15−3において、メタ・オブジェクト(すなわち、オブジェクトタイプ17−14)は、モデルそれ自体のエレメントであり、それゆえ関連するメタ・プロセッサ15−2によって拡張または修正されやすい。また、ルート・メタ・モデル15−3において、動作を捉えるための機構は、究極的には逐次的なメソッドまたはオペレーションには含まれていないが、代わりにイベントタイプ17−32およびアクションタイプ17−16に含まれる。これは、モデルの動的な並列実行を直接的に可能にする。
図18は、ルート・メタ・モデル15−3のようなルート・メタ・モデルの動作的コンポーネントを示す。モデル(図18Aおよび18B)の左手側は、部分的ではあるが、図17に示される構造的モデルのより詳細なバージョンである。それは、先のモデルにおけるタイプとして表されるコレクション(図の破線の左側)を、各集合(図の破線の右側)のアーキタイプメンバと同様に、明示的に含む。それは、また、メンバシップ、サブ・コレクションおよび合成関係を示す特殊なタイプの参照矢印を含む。図22Aおよび22Bは、図18へのキーも提供する。モデルの主要な動作的エレメントは、オブジェクト18−1、イベント18−2およびアクション18−3のイベントにそれぞれ関連付けられた3つのグループで、モデル(図18Cおよび18D)の右手側に示される。
オブジェクト・イベントグループ18−1は、オブジェクトに関連するようにしてもよい3つの異なるイベントタイプを示す。それらは、オブジェクトがアクションによって始めて生成(すなわち、「存在しない」から「存在する」への状態の変化)されたときに起こるイベントのタイプである生成イベントタイプ18−4と、オブジェクトがアクションによって変更された(しかし、生成または削除されたのではない)ときに起こるイベントのタイプである修正イベントタイプ18−5と、アクションがオブジェクトを削除するときに起こるイベントのタイプである削除イベントタイプ18−6である。これらの変化がルート・メタ・プロセッサ15−4によって検出されたときに、このモデルは、変化したオブジェクトに関連する生成イベント18−7、修正イベント18−8または削除イベント18−9をそれぞれ生成することによって応答すべきことを示す。図16を参照して上述したように、これは、実行サイクルを開始するのに十分である。(これらの動作的エレメントは、オブジェクト・イベントグループ内で引き受けられなければならず、かつ先行技術で良くカバーされている、メモリまたはオブジェクト記憶に対するオブジェクトの単純ライトおよびリードに付加する。)
イベント・イベントグループ18−2は、イベントに関連する動作的ルールを示す。イベントの生成だけに、関心がある。イベントの生成は、2つの並列アクション18−9、18−10を開始する。第1は、このイベントに関連するイベントタイプがコンポーネントである合成イベントタイプのオカレンスそれぞれのための親イベントを生成する合成アクション18−9である。この親イベントは、合成イベントタイプに関連する合成アクションの「実行」が、他の必要なイベントの全てもまた起こる(すなわち、「真」状態で完了する)ことを示す場合に限り、生成される。第2のアクション18−10は、このイベントに関連するイベントタイプによって開始される各アクションタイプについてアクションのオカレンスを生成する。生成アクション合成アクション18−10の部分を形成する生成アクション18−11は、生成されたアクション・コンポーネント、すなわち、開始するイベントの参照、それがアプリケーションであるアクションタイプ、およびその決定要因および結果のコレクションにおけるオブジェクトの生成を処理する。アクション18−9、18−10の両者は、多重イベント17−25またはアクションをそれぞれ生成することができる。多重イベント17−25またはアクション17−28が生成されるか否かは、生成されたイベントタイプ17−32に関連する合成イベントタイプ17−18およびアクションタイプ17−16の数に依存する。
アクション・イベントグループ18−3は、アクション17−28に関連する動作のルールを示す。それは、一番関心のあるアクションの生成であり、アクションの生成は2つの並列アクティビティを開始することができる。アクションが開始されるときはいつでも起こる1つのアクティビティは、「開始された」イベント18−12を生成することである。このことにより、ルート・メタ・プロセッサ15−4は、アクションの実行を追跡することができ、更に重要なことには、合成アクションのコンポーネントであり、その開始に依存するアクションを開始することができる。実行アクション・アクティビティ18−13は、開始されたアクションが基本アクションであるときだけに開始される。基本アクションだけが、実際にオブジェクに変化を起こす。このアクション18−13は、プロセッサに、関連するアクションタイプによって参照されたアクションタイプ、決定要因および結果を使用して、生成された基本アクションを実行させる。上述のように、ルート・メタ・プロセッサ15−4が変化を検出し、修正イベントを生成するので、そのような基本アクションの出力結果を、結果に割り当てることによって生じるどのような変化も、別の実行サイクルを開始する。実行アクション18−13が完了した時点で、ルート・メタ・プロセッサ15−4は、アクション完了イベントを生成し、続いて他のアクションを開始してもよい完了イベント生成アクション18−14を開始する。これらの他のアクションは、典型的には、同じ合成アクションのコンポーネントである。
図19Aおよび19Bは、製品組み立てモデルに適用される、上述のオペレーションのシステムを示す。図22Aおよび22Bは、図19Aおよび19Bへのキーも提供する。モデルの実行の前に、顧客、製品仕様および部品仕様にそれぞれ関連して、「顧客」19−1、「製品仕様」19−2および「部品仕様」19−3とラベル付けされたオブジェクトが生成される。モデルの実行は、特定の顧客19−6のために特定の製品仕様19−5を注文する「注文」オブジェクト19−4の生成によって開始される。注文オブジェクト19−4の生成は、「製品製造」アクション19−7を開始するイベントである。実際には、顧客、製品仕様および部品仕様と呼ばれるオブジェクトは複数あるが、図にはこれらのそれぞれ1つだけが示されている。製品製造アクション19−7の開始は、「部品調達」アクション19−8を開始する。部品調達アクション19−8によって調達されるべき部品19−9は、製品仕様オブジェクト19−5に関連する部品仕様リストオブジェクト19−10において定義されるものである。部品調達アクション19−8それ自体の開始は、製品仕様オブジェクト19−5に関連する部品仕様リスト19−20の各部品のための部品調達アクションの1つのオカレンス19−11を開始する。各部品調達アクション19−11(そのうちの1つのみを示す)は、要求された部品が組立部品であるか否かのチェック(19−12)を開始することによって開始する。真の場合、ちょうど製品製造アクション19−7が完成製品のための部品調達アクション19−8を開始するように、要求された部品の組み立てのために更なる部品調達アクション19−13を開始することとなる真状態19−21でアクション19−12は完了する。全ての部品が利用できるようになった時点で、部品調達アクション19−13の完了により、部品組立アクション19−14に、オブジェクトの生成またはオブジェクトの状態の変化のいずれかを構成する部品それ自体を組み立てさせる(19−22)。もし、部品が組立部品でないと決定されると、アクション19−12は、偽状態19−23で完了し、それが製造部品であるか否かを決定するためにアクション19−15を開始する。真の場合、イベント19−24は、部品を製造する部品製造アクション19−16を開始する。偽の場合、部品を購入する部品購入アクション19−17は、イベント19−25によって開始される。
部品仕様リストオブジェクト19−20に関する全ての部品が調達された時点で、部品調達アクション19−11は完了する。最後の部品調達アクション19−18(すなわち、製品製造アクション内で開始されたアクション)が完了すると、製品(図示せず)の組み立てを開始するイベントが生じる。組み立てが完了した時点で、モデルの実行は完了する。
複雑なアクティビティシステムは、図20に示されている。ここで、サブジェクトシステム10−2は、図10に示されているのと同じように、環境10−3内に含まれる。この場合、アクタ10−1は、第1および第2のサブ・アクタ20−1、20−2を含む。サブ・アクタ20−1、20−2は相互接続され、それぞれはサブジェクトシステム10−2におけるアクションを生成(20−3、20−4)する。サブ・アクタ20−1、20−2は、サブジェクトシステム10−2においてアクションを生成(20−3、20−4)するために互いに協働すると考えることができる。
部分的に合成された図15に示されるルート・メタ・プロセッサ15−4は、図21に示されている。ここで、ルート・メタ・プロセッサ15−4は、協働するサブ・アクタ21−1、21−2、21−3のシステムを形成する。アクティベータ・アクタ21−1はイベントに関係し、エグゼキュータ・アクタ21−2はアクションに関係し、レコーダ・アクタ21−3はオブジェクトに関係している。アクタ21−1、21−2、21−3のそれぞれは、図16を参照して示され記述されたサイクルが実行されることを可能にするために、他のアクタのそれぞれに接続される。(完全に合成されたルート・メタ・プロセッサは、図23を参照して後述する更なるコンポーネントを必要とすることに注意されたい。それゆえ、完全に合成されたルート・メタ・プロセッサは、図24を参照して後述する。)
サブ・アクタ21−1、21−2、21−3間のタスクの割り当ては、次の通りである。アクティベータ21−1は、イベントに応答するように、そして、イベントやモデル11−1、15−1、15−3から、どのアクションを開始するかを決定するように調整される。エグゼキュータ・アクタ21−2は、開始されることを要求されたものとしてアクティベータ21−1によって決定されたアクションを生成するために調整される。エグゼキュータ21−2は、モデル11−1、15−1、15−3に従って、オブジェクトに、決定されたアクションを生成する。レコーダ21−3は、モデルの部分を形成するオブジェクトを管理し、レコーダ21−3によって管理されるオブジェクトの状態の変化あるいはオブジェクトの生成または削除によってトリガされたイベントを認識し、続いてアクティベータ21−1によって更なるアクティビティを開始する。
図18は、図18を参照して上述した動作ルールについて、図21に示すレコーダ21−3、アクティベータ21−1およびエグゼキュータ21−2アクタの主要な責務を示す。レコーダ21−3は、オブジェクト・イベントグループ18−1のための、すなわち、オブジェクト生成18−7、修正18−8および削除18−9イベントを検出および生成するための責務を持つ。アクティベータ21−1は、イベント・イベントグループ18−2のための、すなわち、イベント生成イベント18−7を検出し、関連する親(合成)イベントおよびアクション18−9、18−10を生成するための責務を持つ。エグゼキュータ21−2は、アクション・イベントグループ18−3のための、すなわち、アクション生成イベント18−10を検出し、関連するアクション開始およびアクション完了イベント18−12、18−14を生成するとともにそのようなアクションを実行するための責務を持つ。
図20においてアクタ10−1を形成するためにサブ・アクタ20−1、20−2が協働するように、2つのアクタが合成アクタを形成するために協働するときには、通信機構を提供することが必要である。サブ・アクタ20−1、20−2の性質に応じて、通信は、連続的または離散的形式をとることができる。第1および第2のサブ・アクタ20−1、20−2の接続は、図23に示されている。ここで、第1のサブ・アクタ20−1は、第2のサブ・アクタ20−2にも接続されたチャネル23−1への接続を含む。このように、サブ・アクタ20−1、20−2は、チャネル23−1によって互いに接続されている。第1のサブ・アクタ20−1のチャネル23−1への接続を可能にするために、第1のインタフェース・コンポーネント23−2は、第1のサブ・アクタ20−1に含まれ、第1のインタフェース・コンポーネント23−2は、チャネル23−2の部分を形成する第2のインタフェース・コンポーネント23−3に接続されている。同様に、チャネル23−1の部分を形成する第3のインタフェース・コンポーネント23−4は、第2のサブ・アクタ20−2の部分を形成する第4のインタフェース・コンポーネント23−5に接続される。インタフェース・コンポーネント23−2、23−3、23−4および23−5のそれぞれは、好ましくは図15のアクタ10−1として構成されるアクタを構成する。アクタ23−2、23−3、23−4および23−5のそれぞれは、そのサブジェクトシステム10−2として、コンポーネント間の通信を構成する項目を持つ。もし、通信が連続的であれば、通信項目は、例えばパイプを流れる流体または粉体等の物質流の形式を、あるいは例えば電磁波形または電子波形等の信号の形式をとることもできる。離散的通信項目は、例えば製造コンポーネントの発送等のパッケージを構成してもよいし、あるいは例えば注文のような情報パッケージ等のメッセージを構成してもよい。それゆえ、アクタのそれぞれは、通信に使用される項目のモデルを含み、この項目にアクションを生成する。
合成ルート・メタ・プロセッサのための完全な一般モデルは、図24に示されている。ここで、アクティベータ21−1、エグゼキュータ21−2およびレコーダ21−3は、チャネル23−1によって互いに接続されたように示されている。チャネル23−1は、また、例えばチャネル24−3によってルート・メタ・プロセッサ15−4を外部システムに接続できるようにするインタフェース24−2に接続されている。
チャネル23−1は、示されるように、アクティベータ21−1、エグゼキュータ21−2、レコーダ21−3、およびインタフェース24−2を互いに直接に接続してもよい。代わりに、レコーダ21−3がアクティベータ21−1に接続され、アクティベータ21−1がエグゼキュータ21−2に接続され、エグゼキュータ21−2がレコーダ21−3に接続されるリング状のチャネルシステムがあってもよい。チャネルシステムは、選択的に、これら両極端な2つのどちらの形式をとってもよい。
サブ・アクタ21−1、21−2、21−3、23−1または24−2のそれぞれは、それ自体、アクティベータ、エグゼキュータ、レコーダ、チャネルおよびインタフェースが協働するシステムによって構成されてもよい。これは、図25に示されている。この図を参照すると、アクティベータ21−1は、エグゼキュータ25−1、レコーダ25−2およびアクティベータ25−3を含み、全てがチャネル25−4によって互いに接続されるように示されている。アクティベータ・インターフェース25−5は、アクティベータ21−1をチャネル23−1に接続する。チャネル23−1それ自体は、レコーダ25−6、エグゼキュータ25−7、アクティベータ25−8およびチャネル25−9によって構成されるルート・メタ・プロセッサを備える。チャネル23−1の部分を形成するチャネル25−9は、図において単に「I」として示された、更なる個別のインタフェースによって、エグゼキュータ21−2、レコーダ21−3、アクティベータ21−1およびインタフェース24−2のそれぞれに接続されている。エグゼキュータ21−2、レコーダ21−3、インタフェース24−2および外部チャネル24−3もまた、関連したコンポーネントを含むルート・メタ・プロセッサによって構成されている。
リング状のチャネルシステム、またはハイブリッド・チャネルシステムは、図24を参照して上述したように使用されてもよい。
図25には、ルート・メタ・プロセッサ15−4のコンポーネントのそれぞれが、ルート・メタ・プロセッサとして示されているが、コンポーネントのそれぞれは、そのように構成される必要はない。いくつかの環境においては、ルート・メタ・プロセッサとして、1つのみ、2つまたは3つのコンポーネントを実装することが要求されるかもしれない。
アクティベータ21−1のサブジェクトシステムは、サブジェクトシステムにおいてアクションを開始するイベントのシステムである。エグゼキュータ21−2のサブジェクトシステムは、サブジェクトシステム内でオブジェクトを変化させるアクションのシステムである。レコーダ21−3のサブジェクトシステムは、オブジェクトと、それらに関連するデータおよび状態と、それらオブジェクトの状態が変化するときにトリガされるイベントのシステムである。チャネル23−1、24−3のサブジェクトシステムは、2つ以上のアクタ間の通信のシステムである。インタフェース24−2のサブジェクトシステムは、アクタと、チャネルまたは外部世界との間の通信のシステムである。
階層化ルート・メタ・アクタのモデルは、図26に示される。ここで、物理アクタ26−1は、ルート・メタ・プロセッサ15−4およびモデル11−1を備えるように示されている。モデル11−1は、メタ・モデル15−1およびルート・メタ・モデル15−3を含む。ルート・メタ・プロセッサ15−4は、図24のルート・メタ・プロセッサのように構成される。すなわち、アクティベータ21−1、エグゼキュータ21−2、レコーダ21−3、チャネル23−1およびインタフェース24−2を含む。
モデル11−1は、仮想ルート・メタ・プロセッサ26−3、26−4および26−5の仮想アクティベータ、エグゼキュータ、レコーダ、チャネルおよびインタフェース、特に、それらの仮想アクティベータ、エグゼキュータ、レコーダ、チャネルおよびインタフェースの動作を、物理ルート・メタ・プロセッサ15−4によって直接的に実行可能であるように、それぞれ精緻化するサブ・モデル26−20、26−21、26−22を含む。ルート・メタ・プロセッサ15−4およびそのコンポーネントの動作が関連するルート・メタ・モデル15−3によって定義されるので、これは、各モデルが効果的に、関連した仮想アクタのルート・メタ・モデルの基本オブジェクト、イベントおよびアクションを、基礎となる物理アクタのルート・メタ・モデルの基本オブジェク、イベントおよびアクションにすることを意味する。この精緻化がどのように成し遂げられるかは、図27Aおよび27Bを参照して後述する。
いずれのルート・メタ・アクタのモデルも、それゆえメタ・モデルおよびルート・メタ・モデルも、実際に、ルート・メタ・アクタのルート・メタ・プロセッサのレコーダ内に記憶されることに注意されたい。
この精緻化は、1つ以上の更なるレイヤに拡張されてもよい。例えば、図26において、第2の仮想アクタ26−7は、モデル26−10内に、第2の仮想アクタ26−7の仮想ルート・メタ・プロセッサ26−4によってそれを実行可能にするように、次に第4の仮想アクタ26−12のルート・メタ・モデルを精緻化するサブ・モデル26−23を含む。
物理アクタ26−1は、唯一のハードウェアエレメントである。他の全てのエレメントは仮想である。ルート・メタ・プロセッサ26−3、26−4および26−5は、仮想モデル実行エンジンとみなせる。
単一のアクタは、仮想アクタのそれぞれが個別の役割を持つ多重仮想アクタを、単一のアクタの精緻化モデルが仮想アクタの役割それぞれを認識するという条件の下で、サポートすることができる。アクタが多重の役割を持つときには、その精緻化モデルは、役割間の競合を処理するための付加ルールを必要とする。そのようなルールは、各役割の相対的優先権の定義であるかもしれない。
多重の役割を持つアクタを、生産制御コンピュータシステムが製造に使用される状況に適用すると、アクタは、生産をモニタリングする役割と、例えば予定からの遅れ等のどのような生産問題が起こったとしても生産管理のために警告を発する役割とを持つことができる。アクタは、また、既存のプロセスのパフォーマンスを提案されたプロセスのそれと比較することを可能にするために、生産プロセスに対する変更案のシミュレーションを実行する役割を持つことができる。明らかに、生産運転を持続することは、シミュレーションを素早く完了することよりも、重要かつ緊急である。
ここで、コンピュータシステム(図示せず)は、2つの割り当てられた役割、すなわち生産モニタおよびシミュレータを持つ単一の合成アクタである。コンピュータシステムのハードウェアには、両役割に気付くことが必要であり、役割間の潜在的な衝突を処理するためのルールを含む必要がある精緻化モデルが提供される。シミュレータおよび生産モニタの両方が同時に何かをしたい場合、アクタの生産モニタの役割は、より高い優先度を持ち、それゆえシミュレーションの役割に対して先行する。それゆえ、多重アクタ精緻化モデルは、各役割のためのものである2つの個別のモデルを、単一の共通モデル内に含む必要がある。単一のモデルは、また、内部役割の相互作用を処理するルールも持つ。
このコンピュータシステムの役割は、従来のコンピュータ・オペレーティング・システムによって果たされたそれと全く類似する。しかし、それぞれのモデルはイベント駆動型であり、それゆえに逐次よりはむしろ並列であるので、多重アクタで階層化された仮想メタ・アクタのこの要求への応答は改良される。これは、役割の並列実装を可能にする。結果として、多重アクタ精緻化モデルは、役割(それは従来のオペレーティング・システムにおけるプロセッサであることができる)間の切り替えに多くのオーバーヘッドを必要としない。なぜならば、基礎となる物理プロセッサは、いずれの役割からのイベントも、いつでもトリガされることができる単一のモデル(ルール集合)を持つからである。
このアプローチは、それが物理アクタ上に精緻化される仮想アクタのモデルではなく、代わりに仮想ルート・メタ・モデルである点において、類似する既存の階層化アプローチ(例えば、現代の階層化オペレーティング・システムの設計において)とは異なる。これは、精緻化モデルの再利用性を著しく増加させる物理アクタそれ自体の修正を必要とすることなしに、物理アクタ上の仮想ルート・メタ・プロセッサによって実行されることができる仮想アクタのいずれのモデルをも実行する能力を提供する。
エラボレータ11−1のサブジェクトシステムは、他のプロセッサ、メタ・プロセッサまたはルート・メタ・プロセッサ15−4によって直接実行が可能なアクタ26−6、26−7、26−8のプロセッサ、メタ・プロセッサまたはルート・メタ・プロセッサを備えるプロセッサデバイス26−3、26−4、26−5、26−13の動作の精緻化のシステムである。
精緻化モデル27−0を、図27Aおよび27Bを参照して、説明する。ここで、アプリケーションモデル27−1の部分は、2つの数mおよびnを乗算して出力数rを生成する乗算プロセスを開始するイベント27−2を含む。エラボレータ・マッピングテーブル27−11から、乗算プロセスが開始する前に、数mおよびnが8ビットアドレス2オブジェクト27−9および8ビットアドレス4オブジェクト27−8にそれぞれ置かれていることが分かる。この精緻化モデルは、イベントe27−2がアプリケーションモデル27−1において開始される時はいつでも開始されるイベントe’27−4を持つ。イベントe’27−4は、合成アクション27−3を開始する。これは、8ビット結果オブジェクトアドレス6(27−7)にゼロ値を割り当てるアクション27−5を続いて開始する。ADDアクション27−5の完了は、アクションの8つの並列シーケンスを開始し、1つのシーケンスはアドレス4オブジェクト27−8の各ビットのためのものである。27−10で示される並列シーケンスのそれぞれは、アドレス4オブジェクト27−8の対応ビットがセットされているか否かをテストする。そして、もし真であれば、RORアクション27−12を使用し、対応するRORローテート入力で特定されるビット数だけ、更なるアドレス2オブジェクト27−9の値(数m)をローテートし、結果をアドレス6オブジェクト27−7の値に加える。ADDアクション27−13は、先行するRORアクション27−12の完了によって単純に開始される。RORアクション27−12は、「真」状態で完了した関連するBITアクション27−10によって開始される。精緻化プロセスの結果は、アドレス6オブジェクト27−7に記憶された値であり、それは第3のアドレスオブジェクトの2進数に第2のアドレス4オブジェクト27−8の2進数を乗じたものに等しい。十分な並列プロセッサを用いると、このモデルは、従来のフォン・ノイマン型コンピュータを利用する同等の乗算アルゴリズムに比べてごくわずかの時間で実行可能である。図27のエラボレータは、単なる一例であり、エラボレータの正確な形式は、特に、それが実行に必要とする関数に依存する。
上述の合成ルート・メタ・アクタモデルは、単一のプロセッサ、多重プロセッサ、(潜在的に大規模な)マイクロ並列プロセッサおよび分散プロセッサのコンピュータ・アーキテクチャを生成するのに使用できる。このアプローチは、伝統的なフォン・ノイマン型コンピュータにおいて固有であるプログラムカウンタへの依存性を打破し、実装しようとするシステムの意味論を厳密に反映する粒度の細かい並列実装を可能にする。
単一のプロセッサを利用するルート・メタ・アクタ型コンピューティング・デバイスは、図28に示されている。ここで、コンピューティング・デバイスは、チャネル23−1によって互いに全てが接続されている、アクティベータ21−1、エグゼキュータ21−2、レコーダ21−3およびインタフェース24−2を備えている。従って、コンピューティング・デバイスは、図24のルート・メタ・プロセッサに使用される仕組みに従って構成されている。アクティベータ21−1は、イベント待ち行列の次のエントリの参照を含むイベント待ち行列レジスタ(EQR)28−1を含む。参照は、従来のコンピューティング・デバイスで使用されるようなアドレスに類似するものとして考えられてもよい。これにより、複数のイベントが同時に処理を待つことができる。アクティベータ21−1は、また、現在処理されているイベントである現在イベントの参照を含むイベントレジスタ(ER)28−2を含む。アクティベータ21−1は、また、現在のイベントタイプの物理参照を含むイベントタイプレジスタ(ETR)28−3を含む。
エグゼキュータ21−2は、同様に、アクション待ち行列レジスタ(AQR)28−4、アクションレジスタ(AR)28−5およびアクションタイプレジスタ(ATR)28−6を含む。アクション待ち行列レジスタ28−4は、アクション待ち行列の次のエントリのアドレスを含み、アクションレジスタ28−5は、処理されている現在のアクションのアドレスを含む。アクションタイプレジスタ28−6は、従来の命令レジスタと類似すると考えられる現在のアクションタイプのオペレーションコードを含む。エグゼキュータ21−2は、また、第1から第nの汎用レジスタ(GPR)28−7から28−8を含む。これらのレジスタ28−7、28−8は、処理で用いられるパラメータを含む。エグゼキュータ21−2は、選択的に更に、命令デコーダ(ID)28−9および演算・論理ユニット(ALU)28−10を含む。これらは、マイクロプロセッサ・アーキテクチャにおいて従来のものである。
レコーダ21−3は、オブジェクト待ち行列の次のエントリの参照を含むオブジェクト待ち行列レジスタ(OQR)21−11を含む。また、処理されている現在のオブジェクトの参照を含むオブジェクトレジスタ(OR)21−12、および現在のオブジェクトのタイプを含むオブジェクトタイプレジスタ(OTR)21−13が含まれている。オブジェクトのタイプは、主として、オブジェクト、アクションおよびイベントを区別するために使用される。レコーダ21−3は、また、メモリに記録され、メモリからフェッチされるデータの記憶に使用されるメモリデータレジスタ(MDR)21−14、および行われる記憶またはフェッチ命令が保持されるところの参照を含むメモリアクセスレジスタ(MAR)21−15を含む。オブジェクト記憶部またはメモリ(OS)21−16は、レコーダ21−3の部分を形成する。
ルート・メタ・アクタ型コンピューティング・デバイスにおいて、OS21−16における全てのオブジェクトへのアクセスは、レコーダ21−3によって管理される。オブジェクトへのアクセスが要求されたときはいつも、オブジェクトの参照は、オブジェクト待ち行列に配置される。レコーダのOQR21−11は、処理されるべきオブジェクト待ち行列の次のアイテムを指す。オブジェクト待ち行列が空でなく、かつレコーダ21−3が準備できているときには、それはオブジェクト待ち行列から参照を取得し、それをオブジェクトレジスタ(OR)21−12に配置する。それから、レコーダ21−3は、ORをMAR21−15に入れ、読み込みまたは書き込み命令をOS21−16に発行する。読み込みの場合は、レコーダ21−3は、MAR21−15で特定されたOSの場所からオブジェクトを取得し、それをMDR21−14に配置する。書き込みの場合は、レコーダ21−3は、MDR21−14のオブジェクトを、OS21−16内のMAR21−15によって特定された場所に配置する。オブジェクトがOS21−16から読み込まれると、オブジェクトとともに、OTR21−13に置かれたオブジェクトのタイプに関する情報が得られる。そして、オブジェクトのタイプは、レコーダ21−3またはアクティベータ21−1またはエグゼキュータ21−2によって要求されるように、さらなる処理のために利用できる。
単一プロセッサのルート・メタ・アクタ型コンピューティング・デバイスにおいて、アクティベータ21−1のイベント待ち行列は、レコーダ21−3内のOS21−16に保持される。イベントがトリガされたときには、それは、トリガするアクタ(例えば、レコーダ21−3またはインタフェース24−2)によって、アクティベータ21−1のイベント待ち行列に置かれる。イベントは、生成されるたびに、この待ち行列に加えられ続ける。EQR28−1は、処理されるべきイベント待ち行列における次のアイテムを指す。イベント待ち行列が空でなく、かつアクティベータ21−1が準備できているときはいつも、それは、イベント待ち行列における次のアイテムを取得するためにEQR28−1における参照を続ける。これは、ER28−2に置かれている、レコーダ21−3内に保持されたイベントオブジェクトへの参照を含む。ER28−2における参照は、それから、続いてレコーダにおけるイベントオブジェクトについて保持された情報からイベントのタイプを取得し、これをETR28−3に戻すために使用される。それから、イベントのタイプは、図18にて説明したように、関連するアクションタイプおよび親イベントタイプを取得するために使用される。
同様に、単一プロセッサのルート・メタ・アクタ型コンピューティング・デバイスのためのエグゼキュータのアクション待ち行列は、レコーダ21−3内のOS21−16に保持される。アクションが開始されると、それは、アクティベータ21−1によってエグゼキュータのアクション待ち行列に置かれる。アクションは、それらが特定されるたびに、この待ち行列に加えられ続ける。AQR28−4は、処理されるべきアクション待ち行列における次のアイテムを指す。アクション待ち行列が空でなく、かつエグゼキュータ21−2が準備できているときはいつも、それは、アクション待ち行列における次のアイテムを取得するために、AQR28−4における参照を続ける。これは、AR28−5に置かれた、レコーダ内に保持されたアクションオブジェクトへの参照を含むだろう。それから、AR28−5における参照は、続いてレコーダ21−3におけるアクションオブジェクトについて保持された情報からアクションのタイプを取得し、これをATR28−6に戻すために使用される。それから、AR28−5およびATR28−6の内容は、図18にて説明したように、アクションを実行するために使用される。より詳しくは、アクションが基本アクション(すなわち、更により詳細なアクションから構成されておらず、1つのステップでエグゼキュータ21−2によって直接的に実行されることができる)である場合、ATR28−6におけるアクションタイプは、そのアクションタイプを実装するために、ALU28−10内に特定の回路構成またはマイクロコーディングを持つ。このように、本発明におけるアクションタイプは、従来のコンピュータにおける命令と同等であり、ATR28−6は、同様に、命令レジスタと同等である。OS21−16における決定要因および結果の配置のように、アクションの実行のために必要な特定の情報は、図17および18に示されるように、AR28−5で参照されたアクションオブジェクトを経由して提供される。
当然のことながら、アクティベータ、エグゼキュータおよびレコーダ処理サイクルは、それ自身、図16に示されたルート・メタ実行サイクルのアプリケーションである。これらは、以下によって、プロセッサ構成内で実装されなければならない。それらは、起動、実行および記録サイクルによって使用されるイベント、アクションおよびオブジェクト自体が、実行されたモデルからの「ユーザ」イベント、アクションおよびオブジェクトに優先して処理されることを保証するための、イベント、アクションおよびオブジェクト待ち行列(多重待ち行列または待ち行列内の優先度を使用して)の更なる操作、起動、実行および記録サイクルを実行するために特に設計された付加的な論理回路の実装、または、具体的な機構は根本的に異なる(図29を参照した以下の記述を参照)が、従来のコンピュータ・アーキテクチャ内のマイクロコーディングの使用に実際に類似すると考えることができる、図26および27に示されるような、1つ以上のより低いレベルのマシン上へのアクティベータ21−1、エグゼキュータ21−2および/またはレコーダ21−3の精緻化による。いずれの場合においても、基礎となる論理回路は、アプローチが上に言及される非同期回路設計を採用して設計される。非同期回路設計アプローチを使用すると、同期逐次回路設計におけるクロックのゲート信号は、使用されるアプローチに依存して、付加論理回路、またはより低いレベルのアクティベータ、エグゼキュータおよびレコーダ装置におけるイベント信号によって置き換えられる。類似するイベント信号のアプリケーションは、非同期回路設計の分野において周知である。
当然のことながら、また、例えば、イベント、アクションおよびオブジェクト待ち行列エントリに、それらのタイプを含む、イベント、アクションおよびオブジェクトの詳細を含むような、これら起動、実行および記録サイクルの更なる最適化は有益である。
図28のコンピューティング・デバイスは、従来のフォン・ノイマン型コンピュータに何らかの形で類似すると見られるだろう。しかし、オペレーションは、フローおよびジャンプよりもむしろ、イベント駆動である。言い換えれば、図28のコンピューティング・デバイスは、イベント、アクションおよびオブジェクトの処理のためにプログラムカウンタを必要としない。また、アクティベータ21−1は、上述のように、どのアクションがいつ起こるかを決定し、動作的モデルによってガイドされる。
ルート・メタ・アクタ型コンピューティング・デバイスは、また、多重プロセッサを使用して構成されることができる。これは、図29に示される。ここでの構造は、図28のコンピューティング・デバイスのためのものと同じであるが、アクティベータ21−1、エグゼキュータ21−2およびレコーダ21−3のそれぞれは、図28に示されているコンピューティング・デバイスのもう1つのコピーによって置き換えられる(すなわち、構成される)。アクティベータ21−1、エグゼキュータ21−2およびレコーダ21−3のそれぞれは、それぞれのインタフェース29−1、29−2および29−3によってチャネル23−1に接続されている。この記述されたアーキテクチャは、いくつか修正することができる。すなわち、アクティベータ21−1内に含まれるレコーダ29−4はイベント待ち行列29−5に制限され、エグゼキュータ21−2内に含まれるレコーダ29−6はアクション待ち行列29−7に制限される。また、アクティベータ21−1内に含まれるエグゼキュータ29−8およびレコーダ21−3内のエグゼキュータ29−9は、それらのアクタによって必要とされる専門アクションに選択的に制限されてもよい。
図29に示される多重プロセッサのルート・メタ・アクタ型コンピューティング・デバイスのための起動、実行および記録サイクルは、上述した単一のプロセッサによる実装のためのものに類似する。しかし、この場合には、アクティベータ21−1、エグゼキュータ21−2およびレコーダ21−3のそれぞれは、それ独自のアクティベータ、エグゼキュータおよびレコーダを備えるとともに、多重プロセッサデバイスの全てのコンポーネントを接続するより高いレベルのチャネル23−1への内部チャネルおよびインタフェースを備える専用プロセッサを明示的に持つ。このことにより、起動、実行および記録サイクルの設計は特化され得る。例えば、アクティベータのレコーダ29−4内の記録サイクルは、イベント待ち行列におけるイベントの管理を取り扱うように特化できる。そして、アクティベータのエグゼキュータ29−8内の実行サイクルは、図18のモデルで説明したように、アクションを特定および開始し、親イベントをトリガするために要求されるそれらのアクションに特化することができる。
図30は、より洗練されたアクタを形成するために複数のエレメントがどのように協働することができるかを示す。ここで、マイクロ並列処理を使用するルート・メタ・アクタ型コンピューティング・デバイス30−0は、チャネル23−1に双方向で接続された複数のアクティベータ21−1、30−1および30−2を含む。各アクティベータ21−1、30−1および30−2は、レコーダ(アクティベータ21−1がレコーダ30−3と共に示される)を含む。レコーダ30−3は、イベント待ち行列30−15を含む。他のアクティベータ30−1および30−2は、同様に構成されている。図示しないが、各アクティベータ21−1、30−1および30−2は、複数のレコーダを含むことができる。複数のエグゼキュータ21−2、30−4および30−5は、チャネル23−1に双方向で接続されている。それぞれはレコーダ30−6を含み、各レコーダはアクション待ち行列30−7を含む。2つのレコーダ21−3、30−8は、チャネル23−1に双方向で接続されている。それぞれはレコーダ30−9を含み、各レコーダはオブジェクト待ち行列30−10を含む。各待ち行列30−3、30−7および30−10は、イベント、アクションおよびオブジェクトをそれぞれ、要求に応じて、先入れ先出し方式で提供する。チャネル23−1は、インタフェース24−2に双方向で接続されている。チャネル23−1への様々なコンポーネントの接続は、それらを同じ場所に配置する必要を無くすため、それらは、物理的に分散することができる。
アクティベータ21−1内に含まれるレコーダ30−3は、イベント待ち行列30−15を含む。他のアクティベータ30−1、30−2におけるレコーダ(図示せず)は、イベント待ち行列を含まない。同様に、エグゼキュータ21−2内に含まれるレコーダ30−6は、アクション待ち行列30−7を含む。他のエグゼキュータ30−4、30−5におけるレコーダ(図示せず)はいずれも、アクション待ち行列を含まない。アクティベータ21−1、30−1、30−2におけるレコーダは、オブジェクトまたはアクション待ち行列を含まない。エグゼキュータ21−2、30−4、30−5におけるレコーダは、オブジェクトまたはイベント待ち行列を含まない。また、アクティベータ21−1、30−1、30−2(各アクティベータに複数のエグゼキュータがある)内のエグゼキュータまたはエグゼキュータら30−11、30−12、30−13、およびレコーダ21−3、30−8内のエグゼキュータ30−14は、それらのアクタによって必要とされる専門アクションに限定されてもよい。したがって、並列処理は、多重アクティベータ、エグゼキュータおよびレコーダによって可能である。それぞれは、共通イベント、アクションおよびオブジェクト待ち行列をそれぞれ共有し、アクティビティの、多重プロセッサからの供給と多重プロセッサによる処理を同時に可能にする。
多重アクション待ち行列30−7、イベント待ち行列30−15、およびオブジェクト待ち行列30−10は、複数のエグゼキュータ21−2、アクティベータ21−1およびレコーダ21−3がそれぞれ協働しないところで必要とされる。選択的に、各エグゼキュータ、アクティベータおよびレコーダは、関連する待ち行列を持つことができ、協働するエグゼキュータ、アクティベータまたはレコーダの集合において唯一の待ち行列が所定の時刻に使用されるように要求されると待ち行列は無効にされる。
図30に示されたアーキテクチャに基づくデバイスは、それらのコンポーネントの全てを、単一の物理筐体に結合してもよい。代わりに、コンポーネントのコレクションは、分散コンピュータシステムにおけるように、互いに物理的に離れていてもよい。
図30を参照して記述されるルート・メタ・アクタ型アプローチにより、並列アーキテクチャは採用され、それらのために、オリジナル問題領域からシステムモデルを適応する必要なく、パフォーマンス改善のために利用されることができる。これは、従来のフォン・ノイマン型アーキテクチャのプログラムカウンタがもはや要求されないけれども達成され、したがって、ハードウェアは、先行技術のコンピュータ・アーキテクチャを決定付ける逐次的/直列的パラダイムから自由になる。このアプローチにおけるルート・メタ・アクタは、また、フォン・ノイマン・アプローチを使用しない他の先行技術のコンピュータ・アーキテクチャに対しても利点を持つ。特に、ルート・メタ・アクタ型モデルにおける並行処理は、根本的にそれを実装するシステムモデルのイベント駆動型性質に由来する。これは、依然として逐次パラダイムに基づく並行逐次プロセスモデルに対比される。すなわち、各プロセッサが、サポートできる並列処理の粒度を限定する基本的に逐次的なマシン上で動作する。また、ルート・メタ・アクタ型モデルにおけるアクション間の依存関係は、明示的に定義され、動的に生成されるイベントを経由する。これは、先行技術のデータフローモデルより、大きな柔軟性と幅広いアプリケーションを提供する。データフローモデルもまたプログラムカウンタを排除し、より粒度の細かい並列処理を可能にするけれども、アクションを駆動するイベントは、暗黙的でコンパイラによって予め決定され、その待ち行列は、照合トークンを受け付けることで開始されるように機能する。また、ルート・メタ・アクタ型モデルは、メッセージの受け付けに応じてのみアクションを開始するアクタモデルに対する改良も提供する。受け付けたメッセージがアクタモデルにおいてアクションを開始することができる唯一のイベントのタイプであるので、その実在のイベント駆動型システムへの適応性は限定される。
加えて、基本プロセスを駆動するイベント駆動型モデルに組み込まれたメタ・モデルおよびルート・メタ・モデルを持つルート・メタ・アクタは、いずれのモデルも意味上のギャップを越えて静的に変換されたオフラインの専門プログラミングにリソースなしに適応させることができるので、明確で適応性の高いシステムをサポートすることができる。これは、オブジェクト指向型アプローチとは対照的であり、例えば、よくても、メタ・モデルは不完全あり、専門開発者だけが利用でき、システムオペレーション中に適応はできない。図31Aは、図30に示される大規模並列アーキテクチャが、密結合または疎結合の統合パーソナル・コンピューティング・システム31−0を提供するために、どのように構成されるのかを示す。この構成において、1つ以上のアクティベータ31−1、31−2、31−3、エグゼキュータ31−4、31−5、31−6およびレコーダ31−7、31−8、31−9は、いくつかの並行で、おそらく大規模な並列で、イベント駆動型のモデルを同時にサポートすることができるシステムの基本処理能力を提供する。ここで、システムの主なインタフェース(すなわち、人間工学インタフェース31−10、長期記憶システム31−11、印刷システム31−12および通信システム)は、更なるルート・メタ・プロセッサ型マシンによって提供される。これらのルート・メタ・プロセッサ型マシンのそれぞれは、コアプロセッサの基本内部チャネルに接続するためと、人間工学インタフェース31−10のキーボードコントローラ31−14、または長期記憶システム31−11のディスクコントローラ31−15のような、専用周辺装置インタフェースに接続するための更なるインタフェースと共に、図示されるように、チャネルを経由して接続された、少なくとも1つのアクティベータ、エグゼキュータおよびレコーダを含む。このインタフェース・アクティビティを専用インタフェースプロセッサ31−14、31−15に分配することは、そのようなアクティビティに含まれることからコアプロセッサを自由にし(従来のフォン・ノイマン・プロセッサにおけるのとは異なって)、基本プロセッサのスループットを著しく増加させる。この場合、協働するアクティベータ31−1、31−2、31−3、エグゼキュータ31−4、31−5、31−6およびレコーダ31−7、31−8、31−9は、基本プロセッサを構成する。この構成31−0の処理能力は、例えば、スピーカーやマイクのような関連するデバイスを、独自のルート・メタ・プロセッサを備えるヘッドセット31−16に結合することにより、更に分散されることができる。このことにより、ヘッドセット31−16は、より広い人間工学インタフェース31−10を伴うこともなく、音声認識または音声合成のように、聴覚/経口インタフェースのある態様を請け負うことができる。適切に構成された、そのような統合パーソナル・コンピューティング・システム31−0は、今日の不完全な統合デバイスのコレクションを損なうデバイスおよびデータの冗長性なしに、従来のパーソナルコンピュータ(PC)、携帯電話、携帯情報端末(PDA)およびデジタル時計の特徴を提供することができるだろう。
図31Bは、そのようなルート・メタ・プロセッサ型統合パーソナル・コンピューティング・システム31−0のために、オペレーティング・システム31−20がどのように設計されるのであろうかを示す。ダイアグラムの最下層は、図31Aに示される、チャネルによって接続された統合パーソナル・コンピュータ・ハードウェア構成の選択エレメントを示す。それらの上は、全てのまたはそれぞれ別個のプロセッサタイプに共通するオペレーティング・システムのレイヤである。ユーザアプリケーション31−21、システムコールハンドラ31−22および低レベルハードウェア隠蔽31−23のレイヤは、全てのプロセッサタイプに類似または共通し、従来の階層化オペレーティング・システム(図5参照)における等価レイヤに類似する。従来の階層化オペレーティング・システムとの主要な相違は、中間レイヤにある。仮想起動、仮想実行および仮想オブジェクト管理レイヤ31−24、31−25、31−26はそれぞれ、図18に示された一般モデルに基づくアクティベータ31−1、エグゼキュータ31−4およびレコーダ31−7のそれぞれのための動作的モデルの実装を提供する。コアプロセッサにおいて、それらの上には、互いに逆の影響を与えることなしに、同時に処理中であるべき多重モデルを提供する仮想モデル実行管理レイヤ31−27がある。他の全てのプロセッサタイプは、また、それぞれがそのコアでルート・メタ・プロセッサ構成を持つので、仮想モデル実行管理のいくつかのエレメントと同様に、仮想起動、実行およびオブジェクト管理の共通基盤が必要である。31−28、31−29、31−30および31−31には、人間工学インタフェース31−10、長期記憶システム31−11、印刷システム31−12および通信システム31−13がそれぞれ示されている。しかし、これらの基盤レイヤ31−28、31−29、31−30、31−31の上に何が載るかは、プロセッサの性質に依存する。例えば、長期記憶システム31−11は、記憶されるオブジェクトの性質に依存しながら、ディスクドライバ31−32、オブジェクト記憶管理システム31−33および、おそらくドキュメント管理システムのレイヤを構築する。図26に示されるように、各レイヤ31−34、31−33、31−32は、それを精緻化するために、下のレイヤに依存する。このアプローチは、各プロセッサタイプから不必要なコンポーネントを取り除き、それらを適切に特化することを可能にする。それは、また、従来の階層化オペレーティング・システムにおけるユーザアプリケーション・レイヤにしばしば委託されているコンポーネントで、オペレーティング・システム31−20を豊かにすることを可能にする。例えば、ヘッドセット・オペレーティング・システム31−16を特化させると、個々人(ヘッドセット装着者)の音声に合わせられ、統合パーソナル・コンピューティング・システム31−0内の潜在的なマルチユーザ・アプリケーションに接続できる音声認識エレメント(図示せず)を組み込むことができる。
図31Bに示されるオペレーティング・システムは、図5に示すように、オペレーティング・システムの全レイヤが単一のプロセッサ(CPU)上で混ぜ合わされる従来の現代の階層化オペレーティング・システム設計と対比される。それは、また、周知の多重プロセッサ、多重コンピュータおよび分散コンピュータ構成のような、多重プロセッサための先の設計と対比される。特に、ルート・メタ・プロセッサのアーキテクチャによれば、アクティビティ・スケジューリング(従来からの「プロセス」または「スレッド」スケジューリング)およびアクティビティ同期は、従来の多重プロセッサ・オペレーティング・システムための2つの重要な挑戦であり、共に相当に単純化され、密結合から疎結合構成まで広い範囲の多重プロセッサを可能にする。これらは、従来のフォン・ノイマン型プロセッサの多重プロセッサを調整するための複雑さのかなりの増加を余儀なくされるだろう。アクティビティ・スケジューリングは、スケジューラが実行する新しいプロセスを選択するように、逐次プロセスコンテキストがCPUの内外を切り換えられる必要がないので、より単純である。アクティビティ同期は、クロックサイクルおよび自動的に増加するプログラムカウンタによって駆動される従来の逐次プロセスと比較して、イベント駆動型モデルの自然な状態は他のアクティビティからの入力のようなイベントがトリガされるまで待つことであるので、より単純である。
オペレーティング・システムのサブジェクトシステムは、コンピュータのリソースおよび/または仮想マシンのシステムである。
図32Aは、従来の(すなわち、フォン・ノイマン型)コンピュータハードウェア上で、コンパイルまたはインタープリートのような静的変換を採用する、仮想ルート・メタ・アクタを精緻化する1つのアプローチを示す。このアプローチにおいて、メタ・トランスレータ32−1(すなわち、コンパイラまたはインタープリタ)は、基礎となるハードウェアのためのメタ・モデル32−3とともにアプリケーション・メタ・モデル32−2を使用して生成される。メタ・トランスレータ32−1は、基礎となるハードウェアの逐次特性の観点から必要とされる付加ルールおよび制約と共に、仮想階層化メタ・アクタのエラボレータ・コンポーネントと同様のルールを含む。それから、1つ以上のアプリケーションモデル32−4は、他のコンパイルされたいずれのプログラムとも同様に、基礎となるコンピュータ32−6上で直接的に実行されることができるオブジェクトコード32−5に静的に変換されることができる。この図において、メタ・トランスレータ32−1からオブジェクトコード32−5への変換32−7は静的であり、そこから、ハードウェア32−6上への動的精緻化32−8がある。メタ・トランスレータ32−1への入力は、アプリケーションモデル32−4からのモデル入力である。
ここで、「従来のコンピュータ」という用語は、バスに結合されたプロセッサおよびメモリを持つコンピュータを含み、またスーパーコンピュータのように並列に接続されたプロセッサを持つコンピュータを含むように理解されるだろう。
図32Bは、仮想精緻化マシンを採用し、従来の(すなわち、フォン・ノイマン型)コンピュータハードウェア上で仮想ルート・メタ・アクタを精緻化する代替アプローチを示す。このアプローチにおいて、メタ・トランスレータ32−1が再び必要とされるが、この場合には、基礎となるコンピュータ32−6の上で作動する仮想マシン(VM)のためのオブジェクトコードを生成するために使用される。VMは、VM特有のアプリケーション・エラボレータ32−10を経由して、アプリケーションモデルが精緻化されることができる疑似ルート・メタ・アクタ・マシンを生成する。メタ・トランスレータ32−1からVMオブジェクトコード32−9への静的変換、および動的エラボレータ32−10からVMオブジェクトコードへと、そこから基礎となるコンピュータ32−6への動的精緻化がある。アプリケーション・エラボレータ32−10およびVM32−9は共に、動的な並列モデル、メタ・モデルおよびルート・メタ・モデルと、基礎となるマシン32−6の静的な逐次的特性との間の意味上のギャップを処理する。
図30を参照して記述される大規模マイクロ並列プロセッサは、従来のソフトウェアを採用することができるとしても、これは、このアーキテクチャの使用を通じて得られるであろう利益に制限を加えるであろう。従来のソフトウェアは、基本的に逐次的であり、問題分野およびコンピュータ分野にある意味上のギャップを強化する。また、それは、前もって、または実行時に変換を必要とする。これは、ソフトウェアの性能における柔軟性に限界を与える。
反対に、上述の階層化仮想アクタモデルを採用するソフトウェアは、特に図26に関して、根本的に粒度が細かく、かつ本質的に並列である。これは、意味上のギャップを除去し、部分変換のみを要求する(後述するように)。この部分的変換は、前もって行う必要はなく、実行時にのみ行えばよい。それゆえ、ルート・メタ・アクタ型ソフトウェアは、より柔軟であり、よりパフォーマンスの向上をサポートできる。
ルート・メタ・アクタ型ソフトウェアは、基本アクションのみが基礎となるマシン(エラボレータによって実行されるトランスレーション)上に変換される必要があるという点と、1つのレベルのモデル内での基本アクションが、より低いレベルで、プログラムではなく、マイクロイベント駆動型モデルとして、それぞれ変換されるという点で従来のソフトウェアとは異なる。このマイクロイベント駆動型モデルは、専有するルート・メタ・アクタ型ハードウェアが利用できるという条件の下で、他のモデルに対してそれ自体並列に実行されることができる。
ルート・メタ・アクタ型シミュレータは、意図されたサブジェクトシステムに強い影響を与えることなく、モデルの詳細および動きの両方を調査できるように、モデルが代理サブジェクトシステムに対して実行されることを可能にするエラボレータの特化タイプである。図26および27を参照して上述されたエラボレータの特徴に加えて、シミュレータは、以下を処理するためのルールを含む。それらは、シミュレーション、物理および壁時計時間の間の関係と、例えば顧客注文の頻度や、異なる製品仕様に期待する注文の割合といった、内部および外部イベントの配分と、シミュレートされたアクタの生成および削除、ならびにシミュレートされたモデル内でのそれらの役割の割り当ておよび再割り当てと、シミュレーションシステム内の実際の物理アクタに対するシミュレートされたアクタの割り当ておよび精緻化である。最後は、図30に示されるような分散マイクロ並列アーキテクチャ・ハードウェアの上で行われるシミュレーションにおいて特に重要である。分散システムは、例えば戦争ゲームのように、異なるユニットが異なる場所に配置される状況において使用されるとよい。ここで、マイクロ並列ハードウェアの多重集合があり得、各集合は異なる物理配置にある。1つ以上のシミュレートされたアクタは、物理シミュレーションシステムの各ノードによって処理される。そして、シミュレーション・マネージャは、シミュレートされたアクタが互いに通信するように、異なるノード間でメッセージの経路を制御するためのルールを持つだろう。
ルート・メタ・アクタ型シミュレータ・アプローチは、システムのモデルから直接的に、システム力学のシミュレーションを可能にする。これは、シミュレーションを、ビジネスおよび技術変化プログラムに、より利用しやすくする。これによって、実装された変化の品質およびパフォーマンスにおける結果としてあり得る改良を伴い、シミュレーションが使用される見込みが増加する。
分析シミュレータおよびデジタル仮想環境のいずれも、ルート・メタ・アクタ型基盤上でシミュレートされることができる。これは、ビジネス変化プロジェクトの間の特別な使用である。ここにおいて、モデル化された時点で、特別なプロセスがその見込みのあるパフォーマンスを分析するようにシミュレートされ、それから同じモデルを採用するデジタル仮想環境を通じてワーカーと通信することができる。
ルート・メタ・アクタ型シミュレータは、また、2つの方法により、先行技術よりも洗練されたシミュレーションの機会を提供する。第1に、シミュレーションの間のシミュレートされたアクタの生成および削除を可能にすることによって、複雑なシステムの動きを個々のアクタモデルの詳細から直接的に調査することができる。特に、これは、マーケティングおよび軍事アプリケーションで見出されるように、アクタグループ内に動きがあるシミュレーションに役立つ。例えば、市場シミュレーションにおいて、顧客の個々の行動は、情報を口コミで伝える方法を含めて、モデル化することができる。それから、シミュレーションは、良いニュースが伝わると、新しいアクタを生成することができ、反対に、悪いニュースが広まると、または競争相手が市場シェアを増加させると、アクタを削除することができる。第2に、メタ・モデルを含むモデルのシミュレーションは、シミュレーションが実行されている間に、システムルールの適応を容易に含むことができる。それは、特にあるゲーム、トレーニングまたは設計ワークショップのアプリケーションに役立つことができる。
ルート・メタ・アクタ型シミュレータとルート・メタ・アクタ型コンピューティング基盤との結合は、図30を参照して上述された大規模マイクロ並列アーキテクチャの粒度の細かい並列処理の開発によって、並列実装された論理プロセス間の同期に関連する複雑さを取り除く。また、分散システムは、例えば戦争ゲームのような、異なるユニットが異なる場所に配置されている状況に用いられるかもしれない。ここで、各セットが異なる物理配置にあるマイクロ並列ハードウェアの多重セットがあってよい。1つ以上のシミュレートされたアクタは、物理シミュレーションシステムの各ノードによって処理され、シミュレータは、シミュレートされたアクタが互いに通信するように、異なるノード間でメッセージの経路制御を管理しなければならない。物理的に、かつ一時的にリモートあるシミュレーションノード間での同期問題が残るが、ルート・メタ・アクタ型シミュレータの使用は、他の複雑さを取り除き、並列および分散シミュレーションの実装を単純にする。
シミュレータのサブジェクトシステムは、アクタの動的パフォーマンスについてのデータの収集および分析、またはデジタル仮想環境の少なくともコンポーネントの生成のいずれかの目的のための、意図されたあるいは実在のサブジェクトシステムの人工複製である。人工複製は、通常、意図されたあるいは実在のサブジェクトシステムにおける場合より、著しく速くまたは遅くすることができるシミュレーション時間の管理を必要とするだろう。
本発明の、自己適応システムへの応用について説明する。高レベルな自己適応システムは、図33に示されている。ここで、ディレクティングアクタ33−1、オペレーティングアクタ33−2、管理アクタ33−3、学習アクタ33−4および実現アクタ33−5は、通信チャネル33−6にそれぞれ接続されている。図示する5つのアクタはそれぞれ、上述のルート・メタ・アクタであることができる。オペレーティングアクタ33−2は、時に「変形プロセス」と呼ばれる中心的な動作を行う。ディレクティングアクタ33−1は、目的、パフォーマンス目標および制約に関して、全体的な命令を提供する。管理アクタ33−3は、ディレクティングアクタ33−1によって提供される命令に照らして、システムの動作を計画し、監視し、そして制御する。学習アクタ33−4は、システム全体のパフォーマンスを改善または最大化するために、自己適応システムが学習することを可能にする。実現アクタ33−5は、システムにその他のアクティビティの全てを生じさせることが可能なアクタを取得または生成する機能を持つ。この状況において、実現アクタ33−5によって取得または生成されるアクタは、人間、機械、ソフトウェア等であるだろう。
自己適応システムは、以下に詳述する「発展可能知能エージェント」であってよい。
自己適応アクタのサブジェクトシステムは、単純または合成アクタのためのサブジェクトシステムに類似する。
図34は、ディレクティングアクタ33−1、実現アクタ33−5、オペレーティングアクタ33−2、学習アクタ33−4および管理アクタ33−3のそれぞれが、それら自身の個別の自己適応システムを、どのように含むかを示す。これは、再帰的自己適応システムとして考えることができる。
オペレーティングアクタ33−2のサブジェクトシステムは、合成自己適応アクタと同じサブジェクトシステムである。すなわち、それは、自己適応アクタのサブジェクトシステム上で実際に動作する自己適応アクタのオペレーティングアクタ・コンポーネントである。ディレクティングアクタ33−1のサブジェクトシステムは、自己適応アクタのための目的およびパフォーマンス目標のシステムである。管理アクタ33−3のサブジェクトシステムは、ディレクティングアクタ33−1によって定義される目的およびパフォーマンス目標に基づく、自己適応アクタのための計画および監視指標のシステムである。学習アクタ33−4のサブジェクトシステムは、合成自己適応アクタ内の全てのアクタによって採用されているモデルおよびメタ・モデルの(メタ・)システムである。実現アクタ33−5のサブジェクトシステムは、合成自己適応アクタ内の全てのアクタの責務を実行することができるアクタのシステムである。
多数重なった再帰的自己適応システムは、図35に示されている。ここで、学習アクタ33−4は、それ自体が更なる自己適応システムを含む学習アクタ35−1を含む自己適応システムを含む。同様に、オペレーティングアクタ33−2は、自己適応システムを含む。そのオペレータ35−2は、更なる自己適応システムであるオペレーティングアクタ35−3を持つ更なる自己適応システムを含む。この概念が、実現アクタ33−5、ディレクティングアクタ33−1および管理アクタ33−3内の多重再帰にどのように適用されることができるかが分かる。図35の例において、最上位のアクタ内の再帰に依存するのは同じアクタであるが、これは必須ではない。実際に、最高レベルのアクタの1つを形成する自己適応システム内で、多重アクタの再帰があり得る。
ルート・メタ・アクタ型人工知能エージェントは、協働する仮想アクタの集合に具体化されることができる。それぞれのアクタは、図33に示されるアクタの1つを表す。この知能エージェントには、従来のエキスパートシステム推論エンジンに対する多くの重要な相違がある。特に、モデルコンポーネントは、従来のIF、THEN生成規則を使用するよりもむしろ、完全なイベント駆動型として考えられる。また、一般ルート・メタ・プロセッサは、先のサイクルで生成されたイベントに基づくモデルのルールの部分走査を請け負う。そしてこれは、従来のエキスパートシステム推論エンジンにおいて起こるような、サイクル毎にルールベースの全走査が実行されるスキームと比較して、改善された効率を提供する。更に、新しいルールの検索は、学習アクタ33−4によって実行される。そして、新しいルールの出力結果は、他のアクタ33−1、33−5、33−2、33−3のメタ・モデルにおける変化を通じて通信される。従来のエキスパートシステム推論エンジンとは対照的に、メタ・アクタ型知能エージェントは、新しい役割を果たすアクタを募集または生成できる実現アクタ33−5を含み、その役割は、学習アクタ33−4によって特定される。そして、適切な権限を与えられて、完全な人工知能エージェントを発展可能にすることができる。
ルート・メタ・アクタ型知能エージェントにセンサおよびアクチュエータを備えると(例えば、ロボット環境の中で)、そのエージェントは、現実世界をサブジェクトシステムとすることができる。
ルート・メタ・アクタ型アプローチをシステム開発に適用すると、発展可能学習システムとしてシステムプロジェクトを確立することができる。これは、他の発展可能学習システムと同じ機構を使用する目標システムを生成または変化させるように、指示され、作動され、管理され、有効にされ、そして適応される。(ここでは、「システム」という単語は、図1を参照して先に述べた全ての意味で使用されることに注意されたい。)4つの従属するアクティビティシステム、すなわち調査、開発、準備および配置システムとして、システム開発プロジェクト・オペレーションを始めることも可能である。調査システムは、システム開発プロジェクト全体の目標であるシステムが中断されることによってトリガされる。その目的は、ある問題または機会を理解し、それにどのように対処すべきかについてのモデルに到達することである。開発システムは、目標システムを調査システムから変化させるための定義された要件によってトリガされる。開発システムは、その変化を設計し、構築し、そしてシミュレートする。準備システムもまた、調査から定義された変化要件によってトリガされる。準備システムは、変化が展開されるであろう一時的なシステムを設計し、構築し、そしてシミュレートする。配置システムは、開発システムおよび準備システムの両者の完了によってトリガされる。配置システムは、開発システムにおいて定義される目標システムに対する変化を実装するための準備システムにおいて定義される一時的なシステムを実行する。
開発および準備システムは、調査システムに類似するパターンのアクティビティ、すなわちモデル化およびシミュレーションを用いて作動される。モデル化パターンは、サブジェクトシステムがこれを用いて作動するルールを定義し、アクタを役割に割り当て精緻化する。そして、各アクタは、それらの役割内の個別の責務を処理する。シミュレーションシステムは、ルールおよびモデル化された役割の詳細をテストし、結果として生じる相互作用の動きを分析する。
これは、図36に示されている。図36を参照すると、自己適応システムは、オペレーティングアクタ37−1が、調査システム37−2、開発システム37−3、準備システム37−4および配置システム37−5を含むように示される。調査システム内には、モデル化システム37−6およびシミュレーションシステム37−7が含まれる。モデル化システムにおいて、ルールは定義され、役割が割り当てられて精緻化される。シミュレーションシステム37−7において、詳細はテストされ、動作は分析される。開発および準備システム37−3、37−4は、また、モデル化およびシミュレーションシステム37−6、37−7を含む。しかしながら、これらは明瞭化のために、図から省かれている。開発および準備システム37−3、37−4は、調査システム37−2の出力に並列に接続されている。開発および準備システム37−3、37−4は、また、それらが互いに相互作用するように、互いに接続されている。これらのシステムのそれぞれは、配置システム37−5に接続された出力を持つ。
調査、開発および準備アクティビティシステムの間の重要な相違は、何がモデル化され、シミュレートされるかである。調査システムにとっては、目標システム内でどれがモデル化され、シミュレートされるかが問題または機会である。調査の目的は、開発および準備を開始するために、何が変化される必要があるのかの十分な理解を得ることである。開発システムにとって、目標システムの変化は、それ自体がモデル化およびシミュレートされる。準備システムにとって、モデル化およびシミュレートされるものは、それによって変化が展開されるシステムである。準備システムは、目標システムにおける現在の状態と未来の状態との間の遷移の期間だけ存在する一時的なシステムである。しかし、準備システムは、数ヶ月以上存在してもよい。ここでは、変化は、例えば、大企業に対する顕著な変化であり、トレーニングおよび新しい役割や責務、ハードウェアおよびソフトウェアの調達および設定等を含むかもしれない。
異なるシステムに生成したアクションであるけれども、開発および準備アクティビティシステムは、互いに相互作用する必要がある。準備システムは、何が配置されようとしているかを知る必要がある。そして、開発システムは、異なる設計オプションの配置関係を考える必要がある。そして、必要に応じて、配置努力またはリスクを最小化するようにそのアプローチを変化させる。
このシステム開発方法論は、先行技術のシステム開発方法論(図9Aおよび9B参照)において見出されたようなフロー駆動というよりは、イベント駆動である。これもまた、メタ・モデル型であり、再使用できるプロジェクトのクラスを定義するために使用できる。また、システム開発方法論は、学習システムであり、したがって、そのパフォーマンスを向上するための方法を学習することができる。また、この方法論は、階層化仮想アクタをハードウェア・アーキテクチャから高レベル設計に具体化する。
従来のアプローチと比較して、上述のシステム開発方法論は、統合モデルを具体化し、問題および実装分野間での意味上のギャップを含まず、1つのステージのモデルの、後のステージでのモデルへの変換を必要としない。代わりに、それは、アーキテクチャのより低いレイヤにおける1つ以上の仮想アクタのための、エラボレータを提供することだけが必要とされる。また、同じアクティビティおよび技術は、同じものを異なるステージで、かつ例えば、ソフトウェア、ハードウェアおよびプロセス分野等の異なる分野内で行う。これは、サイクルにおいて従来の方法論で見出されるよりも後で、異なるタイプのアクタ
(例えば、ソフトウェアやハードウェア)への役割の割り当てに関する決定をすることができ、より高い柔軟性をもたらす。また、それは、含まれる全てのシステムを駆動する階層化イベント駆動型メタ・モデルが、一般的な再利用可能なコンポーネントを生成するための基礎として、より適切であることができるので、実現されるべき再利用性の見込みおよびその得られる利益を提供する。
システム開発方法論のサブジェクトシステムは、複雑な技術的および社会技術的システム変化を含むシステム変化のシステムである。
以下は、上記実施形態の全てに適用され、いくつかの他の図へのキーの役割を果たす図22Aおよび22Bを参照する一般的なコメントである。
ルート・メタ・モデルにおいて、アクティビティシステムの全てのタイプは、サブジェクトシステムのオブジェクト、イベントおよびアクションに関してモデル化される。そして、アクティビティは、アクタの間で共有される。最大の利益を得るために、メタ・レベルでのモデル化は、各モデルの柔軟性および再利用性を最大化する。モデル化アクティビティシステムにおいて、オブジェクトが人物、場所(配置)、イベント、アクションまたは物(例えば、物理オブジェクト)を表現できることを認めるのは有益である。図22Aおよび22Bにおいて、O1からO10およびOAからOCでラベル付けられた直角コーナーを備える全てのボックスは、オブジェクトを表す。オブジェクトは、例えば、値O1(例えば、整数または文字)、または参照O2(例えば、あるものへのポインタ)のように基本であってもよい。オブジェクトは、例えば、合成オブジェクトO3や、集合O6またはO7のようなオブジェクトのコレクションのように合成されていてもよい。オブジェクトは、代わりに、順序あるいは配列等(図示せず)としてもよい。
イベントは、別のオブジェクトの状態の瞬間的な変化を反映するオブジェクトと考えられてもよい。図22Aおよび22Bにおいて、α、Δ、E1、T、F、ANYおよびΩでラベル付けられる全ての矢型ボックスは、イベントを表す。イベントは、基本であってよい。その場合においては、それはオブジェクトイベントまたはアクションイベントのいずれかかもしれない。オブジェクトイベントは、生成された(α)、削除された(図示せず)および変化または修正された(Δ)ものを含む。アクションイベントは、開始(明示的に示されない)、完了(Ω)、および完了時の状態(TおよびF)を含む。開始イベントは、アクションが実行を開始されるときに起こる。図22Bにおいて、A1の左上コーナーからA1.1の左上コーナーまでのリンクによって示されるように、イベントE1は、アクションA1を開始し、次にアクションA1.1を開始する。完了(Ω)イベントは、アクションの実行が終了したときに起こる。あるアクションにとって、重要なのはアクションの出力結果である。これは、特に、真Tまたは偽Fの出力結果となる2値テストに適用できるが、また、2つより多い出力結果の状態(図示せず)があるかもしれないn値テスト(例えば高級言語における「CASE」文)に適用してもよい。結果イベントは、「完了時状態」イベントと名付けることができる。合成イベントは、そのコンポーネントの1つが起こるときに起こるANYイベントであることができる。あるいは、合成イベントは、そのコンポーネントの全てが起こったときに起こるALLイベント(図示せず)であることができる。これらは、ORおよびANDイベントとして考えることができる。
アクションは、イベントに応答して開始され、他のオブジェクトの変化を引き起こすオブジェクトである。図22Bにおいて、A1およびA1.1からA1.4でラベル付けられた丸いコーナーの全てのボックスは、アクションを表す。アクションは、基本A1.1からA1.4、または合成A1であってよい。合成アクションA1は、サブ・アクションA1.1からA1.4で構成されている。それらはそれぞれ、合成アクションの開始によって直接的にまたは間接的にトリガされたイベントによって順に開始される。合成アクション内のイベントおよびサブ・アクションの構成次第で、それは、順序(アクションA1.2またはA1.3の完了によって開始されるアクションA1.4のように、次々と開始されるサブ・アクション)、同時並行(2つ以上のサブ・アクションが並列、図示せず)、再帰(ここで、サブ・アクションは合成アクションを直接的にまたは間接的に参照する、図示せず)、IF THEN(スキップ)アクションのような選択、またはIF THEN ELSE(2分岐)アクション(A1.1が真状態で終了すると開始されるA1.2、または偽状態においてA1.1が終了すると開始されるA1.3の二者択一のアクションが続くテストアクションA1.1として示される)、またはCASE(n分岐選択、図示せず)アクション、サブ・アクションを0回以上(WHILE、図示せず)または1回以上(REPEAT、図示せず)繰り返す繰り返しを形成することができる。このアプローチを使用して利用できる繰り返しアクションの特化タイプは、同じサブ・アクションがオブジェクト集合の各メンバのために開始され、サブ・アクションの各発生が他と並列に進行する複製(図示せず)である。
ルート・メタ・アクタ型モデルの利点は、それらがルート・メタ・一般実行モデルを採用すること、それらがイベント駆動型および並列(先行技術において見出されるようなフロー駆動および逐次に対照されるように)であることを含む。また、例外処理は、それらの処理が先行技術のモデル化に対してより複雑であるのにもかかわらず、単にイベントのもう1つの種類として処理される。それはまた、人間のための手続きが、機械のための手続きと同じ言語で書かれることを可能にする。更に、制約は、「アドオン」に頼ることなしに、基本モデル化言語内で処理されることができる。これは、例えば、制約がOCLによって処理されることで、UMLと対照的である。また、ルート・メタ・アクタ型モデルは、人間への通信において必要な視覚表現と共に、ハードウェアおよびソフトウェアのモデル化のために必要となる正確さを提供する。重大なことには、モデルを直接的に実装可能にすることで、別の言語またはパラダイムに変換する必要なしに、それらはテストされ、シミュレートされ、直接的に採用されることができる。
上記実施形態において、各モデルは、いずれの適切な形式をとってもよい。例えば、それは、サブジェクトシステムのグラフィカル表現、または代わりに、コンピュータ可読命令の集合であってもよい。後者の場合、少なくともいくつかの命令は、非逐次的で、例えば、集合理論または数学的表記法でなされる。
上述のコンピューティング・デバイスは、特に図28、29および30に関して、好ましくは電子コンピューティング・デバイスである。あるいは、それらは、生物機械、量子または他のどのようなタイプのコンピュータデバイスを代わりにしてもよい。コンピュータデバイスのそのような他の形式がどのようなもので、どのように構成されればよいかは、関連した技術における当業者によって、理解されるだろう。
上述のいずれのコンピューティング・デバイスも、例えば、汎用コンピュータ、製造またはプロセス制御デバイスシステム、ネットワークインフラ・デバイス、移動体コンピューティング・デバイス、移動体通信デバイス、家電製品、車両、コンピュータ周辺装置またはロボット等の部分として提供、または使用されるようにパッケージされてもよい。