(57)【要約】  通信ネットワーク（５３）によって相互接続された複数のコンピュータ（Ｍ１、Ｍ２、．．．．Ｍｎ）上でアプリケーションプログラムが同時に実行され、且つ各コンピュータのローカルメモリは後で適切な時に更新することによってほぼ同じには維持されないマルチコンピュータ環境が開示される。例えば、更新の目的のために資産、オブジェクト、又は構造（すなわちメモリロケーション）へのアクセスを可能にするアドレステーブルメカニズムが提供される。全コンピュータが同じメモリを有するわけではないので、全コンピュータを更新する必要はなく、通信ネットワーク（５３）上のトラフィックの量が低減される。【選択図】図３
2009512081.tif 000002
【特許請求の範囲】
【請求項１】
単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、且つ前記コンピュータのうちの第１の複数のコンピュータがあるメモリロケーションを参照することができ、且つ前記コンピュータのうちの第２の異なる複数のコンピュータが他のメモリロケーションを参照することができるマルチコンピュータ環境において、前記メモリロケーションのいずれか１つのコンテンツが新しいコンテンツに書き込まれ又は書き換えられ、或いはマニピュレートされた後に毎回、そのコンピュータにおけるいずれかの対応するメモリロケーションは、後で適切な時に前記通信ネットワークを介して更新又はマニピュレートされ、
（ｉ）どのメモリロケーションがどのコンピュータ上に存在するかに関するレコードを維持する段階と、
（ｉｉ）前記維持されたレコードにおいて最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートする段階と、
を含み、
これによって前記通信ネットワークを通る更新又はマニピュレート命令の量を低減する改良方法。
【請求項２】
（ｉｉｉ）前記各メモリロケーションに対応するコンピュータのリスティングとして前記レコードを維持する段階を含む、
ことを特徴とする請求項１に記載の改良方法。
【請求項３】
（ｉｖ）前記各コンピュータに存在するメモリロケーションのリスティングとして前記レコードを維持する段階を含む、
ことを特徴とする請求項１に記載の改良方法。
【請求項４】
（ｖ）全コンピュータ及び全メモリロケーションの集計として前記レコードを維持する段階を含む、
ことを特徴とする請求項１に記載の改良方法。
【請求項５】
前記幾つかのメモリロケーション及び前記他のメモリロケーションが、共通メモリロケーションを含む、
ことを特徴とする請求項１から４のいずれか１項に記載の改良方法。
【請求項６】
前記第１の複数のコンピュータ及び前記第２の複数のコンピュータが、共通のコンピュータを含む、
ことを特徴とする請求項１から５のいずれか１項に記載の改良方法。
【請求項７】
独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータを備えたコンピュータシステムであって、
単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、前記複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、前記コンピュータのうちの第１の複数のコンピュータがあるメモリロケーションを参照可能であり、且つ前記コンピュータのうちの第２の異なる複数のコンピュータが他のメモリロケーションを参照可能であり、
前記システムが更に、
前記各メモリロケーションのコンテンツが、新しいコンテンツに書き込まれ又書き換えられ、或いはマニピュレートされた後に毎回、前記通信ネットワークを介して前記各メモリロケーションを後で適切な時に更新するよう前記各コンピュータに関連した更新手段を備えており、前記更新手段が、どのメモリロケーションがどのコンピュータ上に存在するかに関するレコード手段を含み、前記更新手段が、前記レコード手段において最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートし、これによって前記通信ネットワークを通る更新又はマニピュレート命令の量を低減する、
ことを特徴とするコンピュータシステム。
【請求項８】
前記レコード手段が、前記各メモリロケーションに対応するコンピュータのリスティングである、
ことを特徴とする請求項７に記載のシステム。
【請求項９】
前記レコード手段が、前記各コンピュータに存在するメモリロケーションのリスティングである、
ことを特徴とする請求項７に記載のコンピュータシステム。
【請求項１０】
前記レコード手段が、全コンピュータ及び全メモリロケーションの集計である、
ことを特徴とする請求項７に記載のコンピュータシステム。
【請求項１１】
前記幾つかのメモリロケーション及び前記他のメモリロケーションが、共通メモリロケーションを含む、
ことを特徴とする請求項７〜１０のいずれか１項に記載のコンピュータシステム。
【請求項１２】
前記第１の複数のコンピュータ及び前記第２の複数のコンピュータが、共通コンピュータを含む、
ことを特徴とする請求項７〜１１のいずれか１項に記載のコンピュータシステム。
【請求項１３】
通信ネットワークを介して相互接続され、請求項１〜６のいずれか１項に記載の方法を確実に実行するよう動作可能な複数のコンピュータ。
【請求項１４】
記憶媒体内に記憶され、請求項１〜６のいずれか１項に記載の方法を複数のコンピュータが実行できるよう動作可能なプログラム命令のセットを含む、
コンピュータプログラム製品。
【請求項１５】
請求項１〜６のいずれか１項に記載の方法を実行するため、或いは請求項７〜１３のいずれか１項に記載のコンピュータシステムを形成するために、少なくとも１つの他のコンピュータと協働するように適合された単一のコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ処理に関し、詳細には、通信ネットワークを介して相互接続された複数のコンピュータの同時オペレーションに関する。
【背景技術】
【０００２】
本出願人名でＷＯ２００５／１０３９２６（米国特許出願第１１／１１１，９４６号及び公開番号２００５−０２６２３１３が対応）において公開された国際特許出願番号ＰＣＴ／ＡＵ２００５／０００５８０（代理人整理番号５０２７Ｆ−ＷＯ）では、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、複数のコンピュータの対応する異なるコンピュータ上でほぼ同時にどのように動作することができるかを開示している。この同時オペレーションは、本出願の優先日現在で商用的に使用されていない。「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｍｅｔｈｏｄ  ｏｆ  Ｏｐｅｒａｔｉｏｎ  ｆｏｒ  Ｍｕｌｔｉ−Ｃｏｍｐｕｔｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｃｏ−ｏｒｄｉｎａｔｅｄ  Ｍｅｍｏｒｙ  ａｎｄ  Ａｓｓｅｔ  Ｈａｎｄｌｉｎｇ（マルチ−コンピュータ分散処理及び調整されたメモリ及び資産処理のためのオペレーションのコンピュータアーキテクチャ方法）」という名称の米国特許出願第１１／２５９８８５号が対応する国際特許出願番号ＰＣＴ／ＡＵ２００５／００１６４１（代理人整理番号５０２７Ｆ−Ｄ１−ＷＯ）及び本出願の優先日では公開されていない本出願人名でのＰＣＴ／ＡＵ２００６／０００５３２（代理人整理番号５０２７Ｆ−Ｄ２−ＷＯ）でも更に詳細に開示されている。上記の先願の各々の明細書の内容は、全ての目的において相互参照により本明細書に組み込まれる。
【０００３】
簡潔に述べると、上述の特許明細書では、単一のコンピュータ上でのみ動作するように記述された少なくとも１つのアプリケーションプログラムが、独立したローカルメモリを各々が備えた幾つかのコンピュータ上で同時に動作できることが開示されている。このプログラムのオペレーションに必要なメモリロケーションは、各コンピュータの独立したローカルメモリに複製される。アプリケーションプログラムがいずれかの複製されたメモリロケーションに新しいデータを書き込む度に、当該新しいデータが送信され、各コンピュータの各対応するメモリロケーションに記憶される。従って、伝送遅延の可能性は別として、各コンピュータは、そのコンテンツが互いのコンピュータのローカルメモリと実質的に同じであり、且つこれを維持するよう更新されるローカルメモリを有する。全てのアプリケーションプログラムは、一般に、新しいデータが書き込まれるよりも遙かに頻繁にデータを読み取るので、上述の構成により、コンピュータ処理速度における相当な利点を達成することが可能になる。詳細には、こうした方策によって、商品通信ネットワークによって相互接続された２つ又はそれ以上の汎用コンピュータが、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラム下で同時に実行し動作することが可能になる。
【０００４】
多くの場合、上述の構成は満足に機能する。これは、更新遅延が存在する可能性があるとプログラマーが認識し、プログラムのフローを調整してこれを解決することができる場合に特に当てはまる。しかしながら、最新のコンテンツではなく古いコンテンツ又は値を用いることで問題が発生し得る場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
いずれかの変更がいずれかのメモリロケーションに行なわれたときに各ローカルメモリを更新する必要性によって、複数のコンピュータを相互接続する通信ネットワークに大きなオーバヘッド負担が生じる。本発明の目的は、上述のオーバヘッドを低減することである。
【課題を解決するための手段】
【０００６】
本発明の第１の態様によれば、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、且つコンピュータのうちの第１の複数のコンピュータがあるメモリロケーションを参照することができ、且つコンピュータのうちの第２の異なる複数のコンピュータが他のメモリロケーションを参照することができるマルチコンピュータ環境において、メモリロケーションのいずれか１つのコンテンツが新しいコンテンツに書き込まれ又は書き換えられ、或いはマニピュレートされた後で毎回、コンピュータにおけるいずれの対応するメモリロケーションが、後で適切な時に通信ネットワークを介して更新又はマニピュレートされ、（ｉ）どのメモリロケーションがどのコンピュータ上に存在するかに関するレコードを維持する段階と、（ｉｉ）維持されたレコードにおいて最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートする段階と、を含み、これによって通信ネットワークを通る更新又はマニピュレート命令の量を低減する改良方法が開示される。
【０００７】
本発明の第２の態様によれば、記憶媒体内に記憶され、上記に定義された方法を複数のコンピュータが実行できるよう動作可能なプログラム命令のセットを含むコンピュータプログラム製品が開示される。
【０００８】
本発明の第３の態様によれば、通信ネットワークを介して相互接続され、上述された方法を確実に実行するよう動作可能な複数のコンピュータが開示される。
【０００９】
本発明の第４の態様によれば、独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータを備えたコンピュータシステムが開示され、該コンピュータシステムにおいては、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、コンピュータのうちの第１の複数のコンピュータがあるメモリロケーションを参照可能であり、且つコンピュータのうちの第２の異なる複数のコンピュータが他のメモリロケーションを参照可能であり、本システムは、各メモリロケーションのコンテンツに新しいコンテンツを書き込まれ又は書き換えられ、或いはマニピュレートされた後に毎回、通信ネットワークを介して各メモリロケーションを後で適切な時に更新するよう各コンピュータに関連した更新手段を備えており、該更新手段は、どのメモリロケーションがどのコンピュータ上に存在するかに関するレコード手段を含み、該更新手段が、レコード手段において最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートし、これによって通信ネットワークを通る更新又はマニピュレート命令の量を低減する。
【００１０】
本発明の第５の態様によれば、上記の方法を実行するため、或いは上記のコンピュータシステムを形成するために、少なくとも１つの他のコンピュータと協働するように適合された単一のコンピュータが開示される。
【発明を実施するための最良の形態】
【００１１】
ＪＡＶＡ（登録商標）言語に関連して実施形態を説明するが、本発明はこの言語に限定されず、特に、ＭＩＣＲＯＳＯＦＴ．ＮＥＴプラットフォーム及びアーキテクチャ（Ｖｉｓｕａｌ  Ｂａｓｉｃ、ＶｉｓｕａｌＣ、ＶｉｓｕａｌＣ＋＋、及びＶｉｓｕａｌＣ＃）、ＦＯＲＴＲＡＮ、Ｃ、Ｃ＋＋、ＣＯＢＯＬ、ＢＡＳＩＣ及び同様のものを含む他の言語（手続き、宣言、及びオブジェクト指向言語を含む）と共に使用できることは当業者には明らかであろう。
【００１２】
図１Ａに示すような仮想マシーンを作成することによってアプリケーションの特定の言語を利用する単一のコンピュータ又はマシーン（種々の製造業者のいずれかによって作製され、種々の異なる言語のいずれかで動作するオペレーティングシステム（又は等価な制御ソフトウェア又は他のメカニズム）を有する）を提供することは、従来技術で知られている。
【００１３】
図１Ａのコード及びデータ並びに仮想マシーン設定又は構成は、ＪＡＶＡ（登録商標）言語で記述され且つＪＡＶＡ（登録商標）仮想マシーン６１内で実行されるアプリケーションコード５０の形態を取る。従って、アプリケーションの目的とする言語がＪＡＶＡ（登録商標）言語である場合、マシーン製造業者及びコンピュータ又はマシーンの内部の詳細に関わらず、ＪＡＶＡ（登録商標）コードを操作できるＪＡＶＡ（登録商標）仮想マシーンが使用される。更なる詳細については、引用により本明細書に組み込まれる、米国のＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ  Ｉｎｃ．のＴ．Ｌｉｎｄｈｏｌｍ及びＦ．Ｙｅｌｌｉｎによる「Ｔｈｅ  ＪＡＶＡ（登録商標）  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」  ２ｎｄ  Ｅｄｉｔｉｏｎ（ＪＡＶＡ（登録商標）仮想マシーン仕様）  第２版を参照されたい。
【００１４】
図１Ａのこの従来技術の構成は、図１Ｂに見られるように、便宜上「分散型ランタイム」又は「分散型ランタイムシステム」ＤＲＴ７１と呼ばれる付加的な機能を提供することによって、本発明の実施形態に従って修正される。
【００１５】
図１Ｂ及び１Ｃでは、アプリケーションコード５０は、矢印７５又は７５Ａ又は７５Ｂで示されるロード処理を介して分散型ランタイムシステム７１と協働してＪａｖａ（登録商標）仮想マシーンＭ１、Ｍ２、．．．Ｍｎにロードされる。本明細書で使用される用語「分散型ランタイム」及び「分散型ランタイムシステム」は、本質的には同義語であり、限定ではなく例証として、特定のプラットフォーム上で実行される特定の言語で記述されたソフトウェアをサポートするライブラリコード及びプロセスを含むことは一般に理解される。更に、分散型ランタイムシステムはまた、特定の分散型コンピュータ環境内で実行される特定の言語で記述されたソフトウェアをサポートするライブラリコード及びプロセスを含むことができる。ランタイムシステム（分散型ランタイムシステムであっても、又はそうでなくても）は、通常、システム呼出し、プログラム起動及び終了、及びメモリ管理などのプログラムとオペレーティングシステムとの間のインターフェースの詳細を処理する。バックグラウンドの目的で、従来の分散型コンピュータ環境（ＤＣＥ）（本発明の好ましい実施形態で使用される本発明の分散型ランタイム又は分散型ランタイムシステム７１の機能を提供しないもの）は、Ｏｐｅｎ  Ｓｏｆｔｗａｒｅ  Ｆｏｕｎｄａｔｉｏｎから利用可能である。この分散型コンピュータ環境（ＤＣＥ）は、マシーン上で実行されるソフトウェアに対するコンピュータ間通信の形式を実行するが、多くの制限の中でも、所要の修正又は通信オペレーションを実施することができない。その機能及びオペレーションの中で、好ましいＤＲＴ７１は、複数のマシーンＭ１、Ｍ２、．．．Ｍｎ間の特定の通信を調整する。更に、好ましい分散型ランタイム７１は、図１Ｃの各ＪＡＶＡ（登録商標）仮想マシーン７２又はマシーンＪＶＭ＃１、ＪＶＭ＃２、．．．ＪＶＭ＃ｎ上でＪＡＶＡ（登録商標）アプリケーション５０の矢印７５Ａ又は７５Ｂで示されるロード処理中にオペレーションに入る。読者が特定の実施例の利益を得ることができるように、ＪＡＶＡ（登録商標）言語及びＪＡＶＡ（登録商標）仮想マシーンに対して多くの実施例及び説明が提供されるが、本発明は、ＪＡＶＡ（登録商標）言語又はＪＡＶＡ（登録商標）仮想マシーンのいずれか、或いは他の何らかの言語、仮想マシーン、マシーン又はオペレーティング環境に限定されないことは、本明細書に提示される説明に照らせば理解されるであろう。
【００１６】
図１Ｃは、図１Ｂに各々が示されるＪＡＶＡ（登録商標）仮想マシーンの構成を修正された形式で示している。この場合も同じアプリケーションコード５０が各マシーンＭ１、Ｍ２．．．Ｍｎにロードされることは明らかであろう。しかしながら、矢印８３で示されている各マシーンＭ１、Ｍ２、．．．Ｍｎ間の通信は、マシーンハードウェアを介して物理的にルート指定されるが、各マシーン内の個々のＤＲＴ７１／１．．．７１／ｎによって制御されるのが有利である。従って、実際にはこれは、これら自体又は互いに直接通信するマシーンＭ１、Ｍ２．．．Ｍｎではなく、ネットワーク又は他の通信リンク５３を介して互いに通信するＤＲＴ７１／１，．．．７１／ｎとして概念化することができる。マシーンＭ１、Ｍ２．．．Ｍｎ又はＤＲＴ７１／１，７１／２．．．７１／ｎ間のこの直接通信、或いはこのような通信の組合せのいずれかが企図され含まれる。好ましいＤＲＴ７１は、トランスポート、プロトコル、及びリンクが独立した通信を提供する。
【００１７】
１つの共通アプリケーションプログラム又はアプリケーションコード５０及びその実行可能バージョン（場合によっては修正のある）は、複数のコンピュータ又はマシーンＭ１、Ｍ２．．．Ｍｎ全体で同時に又は並行して実行している。アプリケーションプログラム５０は、単一のマシーン又はコンピュータ上で実行するように（或いは、単一のコンピュータオペレーションをエミュレートする上述の特許出願のマルチコンピュータシステム上で動作するように）記述されている。本質的には、修正された構造は、個々のマシーンの各々上で同一のメモリ構造及びコンテンツを複製するものである。
【００１８】
用語「共通アプリケーションプログラム」は、単一のマシーン上で動作するよう記述され、複数のコンピュータ又はマシーンＭ１、Ｍ２．．．Ｍｎの各々全体又は一部で、或いは任意選択的に複数のコンピュータ又はマシーンＭ１、Ｍ２．．．Ｍｎのあるサブセットの各々でロード及び／又は実行されるアプリケーションプログラム又はアプリケーションプログラムコードを意味すると理解すべきである。言い換えると、アプリケーションコード５０において表された共通アプリケーションプログラムが存在する。これは、各々が個々に修正されてアプリケーションプログラム又はプログラムコードの修正されたコピー又はバージョンを生成する、単一のコピー又は複数の同一コピーのいずれかである。次いで、各コピー又はインスタンスは、対応するマシーン上で実行する準備がなされている。これらが修正された後の時点では、これらは、同様のオペレーションを実施し、互いに一貫性があり且つ整合性があるように動作する点で共通である。任意選択的に、本発明の実施形態を実施する複数のコンピュータ、マシーン、情報アプライアンス、又は同様のものは、本発明の実施形態を実施していない他のコンピュータ、マシーン、情報アプライアンス、又は同様のものと接続或いは結合することができることは理解されるであろう。
【００１９】
同じアプリケーションプログラム５０（例えば、並列マージソート、又は計算流体力学アプリケーション、又はデータマイニングアプリケーション）は、各マシーン上で実行されるが、当該アプリケーションプログラムの実行可能コードは、必要に応じて各マシーン上で修正され、各マシーン上の各実行インスタンス（コピー又は複製）が、他のマシーン上のそれぞれのインスタンス（又はコピー又は複製）のオペレーションと当該特定のマシーン上のローカルオペレーションを調整し、これらが、一貫性があり且つ整合性のある調整された様態で共に機能し、アプリケーションの１つのグローバルインスタンス（すなわち、「メタ−アプリケーション」）であるように見せる。
【００２０】
同じ又は実質的に同じアプリケーションコードのコピー又は複製は各々、相互運用し且つ接続されたマシーン又はコンピュータの対応するコンピュータにロードされる。各マシーン又はコンピュータの特徴は異なる可能性があるので、アプリケーションコード５０は、ロード前、又はロードプロセス中に修正し、或いは、幾つかの欠点はあるが、ロードプロセス後に修正し、各マシーン上でのアプリケーションコードのカスタマイズしたもの又は修正物を提供することができる。種々のマシーン上のプログラム又はアプリケーションコード間の何らかの相違点は、本明細書で説明される相互運用性、一貫性、及び整合性に対する他の要件が維持可能な限り許容することができる。以下で明らかになるように、マシーンＭ１、Ｍ２．．．Ｍｎの各々、及びすなわち、マシーンＭ１、Ｍ２．．．Ｍｎの全てが、同じ又は実質的に同じアプリケーションコード５０を有し、通常は、マシーン固有とすることができる修正を伴う。
【００２１】
各マシーンＭ１、Ｍ２．．．Ｍｎ上でのアプリケーションコード５０（又はその関連部分）のロード前、又はロード中、又は実行の前のあらゆる時点で、各アプリケーションコード５０は、同じ規則（又は僅かな最適化変更が各モディファイア５１／１、５１／２．．．５１／ｎ内で許容されているので実質的に同じ規則）に従って対応するモディファイア５１によって修正される。
【００２２】
マシーンＭ１、Ｍ２．．．Ｍｎの各々は、同じ（又は実質的に同じ又は類似の）モディファイア５１（幾つかの実施形態では、分散型ランタイム又はＤＲＴ７１として実装され、他の実施形態では、アプリケーションコード及びデータ５０への添付物として実装され、更に、ＪＡＶＡ（登録商標）仮想マシーン自体内に実装することができる）で動作する。従って、マシーンＭ１、Ｍ２．．．Ｍｎの全ては、必要とされる各修正に対して同じ（又は実質的に同じ又は類似の）モディファイア５１を有する。例えば、メモリ管理及び複製のため、初期化のため、ファイナライズのため、及び／又は同期化のために、別の修正が必要になる可能性がある（但し、全ての実施形態において、これらの修正タイプの全てが必要とされるわけではない）。
【００２３】
モディファイア５１及び分散型ランタイム７１の別の実施が存在する。例えば、図１Ｃの破線によって示されるように、モディファイア５１は、分散型ランタイム７１のコンポーネントとして、又はこの内部に実装することができ、従ってＤＲＴ７１は、モディファイア５１の機能及びオペレーションを実施することができる。或いは、モディファイア５１の機能及びオペレーションは、コード及びデータ５０内、又はＪＡＶＡ（登録商標）仮想マシーン自体内など、ＤＲＴ７１を実装するのに使用される構造、ソフトウェア、ファームウェア、又は他の手段の外部で実施することができる。１つの実施形態では、モディファイア５１及びＤＲＴ７１の両方が、ＤＲＴ及びモディファイアの機能を提供する単一のコンピュータプログラムコードに実装され又は記述される。この場合、モディファイア機能及び構造は、実際にはＤＲＴに含まれる。どのように実装されるかに関係なく、モディファイア機能及び構造は、アプリケーションコードプログラムの実行可能なコードを修正する役割を担い、分散型ランタイム機能及び構造は、コンピュータ又はマシーン間の通信を実施する役割を担う。１つの実施形態における通信機能は、各マシーン上のＤＲＴのコンピュータプログラムコード内の中間プロトコルレイヤを介して実施される。ＤＲＴは、例えば、ＪＡＶＡ（登録商標）言語で通信スタックを実施することができ、送信制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）を使用して、マシーン間の通信又は通話を提供することができる。これらの機能又はオペレーションは、多様な方法で実施することができ、本明細書に提供される説明の観点から、これらの機能又はオペレーションが構造及び／又は手順要素間、或いはコンピュータプログラムコード又はデータ構造間に厳密にどのように実施又は分割されるかについては、本発明には重要ではなく、不可欠なものでもない点は理解されるであろう。
【００２４】
しかしながら、図１に示された構成では、複数の個々のコンピュータ又はマシーンＭ１、Ｍ２．．．Ｍｎが提供され、その各々は、通信ネットワーク５３又は他の通信リンクを介して相互接続される。各個々のコンピュータ又はマシーンは、対応するモディファイア５１を備える。各個々のコンピュータはまた、通信ネットワークに接続する通信ポートを備えている。通信ネットワーク５３又は経路は、いずれかの電子信号方式、データ、又はデジタル通信ネットワーク又は経路とすることができ、インターネットを介したネットワーク接続、或いはＥＴＨＥＲＮＥＴ（登録商標）又はＩＮＦＩＮＩＢＡＮＤ及びこれらの拡張及び改良を含む何らかの共通ネットワーク構成といった、低速で、従って低コストの通信経路であるのが好ましい。好ましくは、コンピュータは、通信ネットワーク５３に接続する１つ又はそれ以上の公知の通信ポート（ＣＩＳＣＯ  Ｐｏｗｅｒ  Ｃｏｎｎｅｃｔ  ５２２４  Ｓｗｉｔｃｈなど）を備えている。
【００２５】
上述の構成の結果として、マシーンＭ１、Ｍ２、．．．、Ｍｎの各々が、例えば、１０ＭＢの内部又はローカルメモリ容量を有する場合、全体としてアプリケーションコード５０に利用可能な総メモリは、予想されるようにマシーンの数（ｎ）×１０ＭＢではない。これは、ｎ個のマシーン全ての内部メモリ容量の加法的な組合せでもない。そうではなく、１０ＭＢか、又は１０ＭＢよりも大きいがｎ×１０ＭＢよりも小さいある数である。マシーンの内部メモリ容量が異なる場合、これは許容可能であり、ひいては１つのマシーンの内部メモリが、マシーンの少なくとも１つの他のマシーンの内部メモリ容量よりも小さい場合には、マシーンのいずれかの最も小さなメモリのサイズは、このようなメモリ（又はその一部）が「共通」メモリ（すなわち、マシーンＭ１．．．Ｍｎの各々の類似の等価メモリ）として扱われるとき、又は共通アプリケーションコードを実行するのに使用されるときに、マシーンの最大メモリ容量として用いることができる。
【００２６】
しかしながら、各マシーンの内部メモリが処理される方式は、当初は性能に関する潜在的な制約となる可能性があるが、これがどのような改良されたオペレーション及び性能をもたらすかについては以下で明らかになるであろう。当然、各マシーンＭ１、Ｍ２．．．Ｍｎは、プライベート（すなわち、「非共通の」）内部メモリ容量を有する。マシーンＭ１、Ｍ２、．．．、Ｍｎのプライベート内部メモリ容量は通常はほぼ等しいが、必須ではない。例えば、マルチコンピュータシステムが、異なるエンティティによって所有又は操作される既存のコンピュータ、マシーン、又は情報アプライアンスを使用して実施又は編成されている場合、内部メモリ容量は全く異なる場合がある。他方、新しいマルチコンピュータシステムが実装されている場合、各マシーン又はコンピュータは、同一の内部メモリ容量を有するように選択されるのが好ましいが、これは必須ではない。
【００２７】
各マシーンの独立したローカルメモリは、そのマシーン上で実行されるアプリケーションプログラムの当該部分に割り当てられたマシーンの総メモリの当該部分だけを表わしている点は理解されるべきである。従って、他のメモリは、アプリケーションプログラム５０に関係のないマシーンのオペレーティングシステム及び他のコンピューテーションタスクが占有することになる。
【００２８】
プロトタイプマルチコンピュータシステムの非商用オペレーションは、システム内のあらゆるマシーン又はコンピュータが、あらゆる可能なメモリロケーション（例えば、そのローカル複製を有する）を利用しないか、或いはこれを参照する必要がないことを示す。結果として、各マシーンのローカルメモリが当該マシーンのオペレーションに十分である限り、何らかの他のマシーンに同一の各マシーンのローカルメモリがなくともマルチコンピュータシステムを動作させることが可能となる。すなわち、特定のマシーンが、幾つかの特定のメモリロケーション（例えばそのローカル複製を有する）を参照する必要がない場合、その特定のメモリロケーションが当該特定のマシーンにおいて複製されないことは問題ではない。
【００２９】
また、各マシーンにおいて及び接続され又は結合された複数のマシーン、コンピュータ、又は情報アプライアンスＭ１、Ｍ２、．．．、Ｍｎのコンステレーション又はネットワーク全体にわたって、所望の性能レベルを達成するように各マシーンの内部メモリ量を選択することが有利とすることができる。記載されたこれらの内部及び共通メモリを考慮すると、マシーン間に共通とすることができるメモリ量に制限がないことは、本明細書に示される説明に照らせば明らかであろう。
【００３０】
幾つかの実施形態では、複数の個々のコンピュータ又はマシーンの一部又は全ては、単一のハウジング又はシャーシ（Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｃｏｍｐany、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ、ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎなどによって製造された、いわゆる「ブレードサーバー」など）、或いは、インテル、ＡＭＤ、又はその他によって製造され、もしくは単一のプリント基板又は単一のチップ又はチップセット内に実装されたマルチプロセッサ（例えば、対称マルチプロセッサ又はＳＭＰ）又はマルチコアプロセッサ（例えば、デュアルコアプロセッサ及びチップマルチスレッディングプロセッサ）内に包含することができる。同様に、マルチコア、マルチＣＰＵ、又は他の処理論理回路を有するコンピュータ又はマシーンも含まれる。
【００３１】
非ＪＡＶＡ（登録商標）言語又はアプリケーションコード環境で実施されるときには、一般化されたプラットフォーム、及び／又は仮想マシーン及び／又はマシーン及び／又はランタイムシステムは、当該プラットフォーム及び／又は仮想マシーン及び／又はマシーン及び／又はランタイムシステム環境の言語（例えば、限定ではないが、ソース−コード言語、中間−コード言語、オブジェクト−コード言語、マシーン−コード言語、及びいずれかの他のコード言語のいずれか１つ又はそれ以上を含む場合がある）でアプリケーションコード５０を動作させ、マシーン又はプロセッサ製造業者及びマシーンの内部詳細に関係なく、プラットフォーム、及び／又は仮想マシーン及び／又はマシーン及び／又はランタイムシステム及び／又は言語アーキテクチャを利用することができる。プラットフォーム及び／又はランタイムシステムが、仮想マシーン及び非仮想マシーンソフトウェア及び／又はファームウェアアーキテクチャ、並びにハードウェア及び直接ハードウェアコード化アプリケーション及び実装を含むことができる点は理解されるであろう。
【００３２】
仮想マシーン又は抽象マシーン環境のより一般的なセットにおいて、並びに現在及び将来のコンピュータ及び／又はコンピュータマシーン及び／又は情報アプライアンス又は処理システムにおいて、クラス及び／又はオブジェクトのいずれかを利用しない、或いは利用を必要としない場合があるが、本発明の構造、方法、及びコンピュータプログラム及びコンピュータプログラム製品は依然として適用可能である。クラス及び／又はオブジェクトのいずれかを利用しないコンピュータ及び／又はコンピュータマシーンの実施例は、例えば、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ及びその他によって製造された×８６コンピュータアーキテクチャ、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ及びその他によって製造されたＳＰＡＲＣコンピュータアーキテクチャ、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ及びその他によって製造されたＰｏｗｅｒ  ＰＣコンピュータアーキテクチャ、及びＡｐｐｌｅ  Ｃｏｍｐｕｔｅｒ，  Ｉｎｃ及びその他によって製作されたパーソナルコンピュータ製品を含む。
【００３３】
クラス又はオブジェクトの概念を利用せずに実装されたコンピュータ、コンピュータマシーン、情報アプライアンス、及び仮想マシーン又は仮想コンピュータ環境のこれらのタイプでは、例えば、手続き型言語又は他の言語についての基本データタイプ（整数データタイプ、浮動小数点データタイプ、長データタイプ、ダブルデータタイプ、ストリングデータタイプ、文字データタイプ、及びブールデータタイプなど）、構造化データタイプ（アレイ及びレコードなど）、派生タイプ、又は他のコードもしくはデータ構造を含み、関数、ポインタ、コンポーネント、モジュール、構造、リファレンス、及びユニオンなどの環境を含むように一般化することができる。必要なときに組み合わせて適用されるこれらの構造及び手続きは、コンピュータ又はコンピュータ環境のメモリロケーション、アドレス範囲、オブジェクト、クラス、資産、資源、又はいずれかの他の手続き又は構造的態様が、必要な場合には、複数の個々のマシーンＭ１、Ｍ２．．．Ｍｎにわたって調整され整合性があり且つ一貫性のあるようにして作成、維持、動作、及び非動作もしくは削除が行われるコンピュータ環境を維持する。
【００３４】
アプリケーションコード５０のこの分析又は精査は、アプリケーションプログラムコード５０のロードの前、又はアプリケーションプログラムコード５０ロード処理中、又はアプリケーションプログラムコード５０ロード処理の後（或いはこれらのある組合せ）でも行なうことができる。これは、アプリケーションコードが、付加的な命令を備え、及び／又は他の場合には、意味保護プログラムマニピュレーションによって修正され、及び／又は任意選択的に入力コード言語から異なるコード言語に翻訳（例えばソース−コード言語又は中間−コード言語からオブジェクト−コード言語又はマシーン−コード言語）することができる点で、インストゥルメンテーション、プログラム変換、翻訳、又はコンパイル手続きに形容することができる。この文脈では、用語「「コンパイル」は、通常又は従来的に、コード又は言語における変更、例えばソースコードからオブジェクトコード又は１つの言語から別の言語への変更を包含することは理解される。しかしながら、本発明では、用語「コンパイル」（及びその文法上等価な語句）はこれに限定されず、同じコード又は言語内の修正をも含む又は包含することができる。例えば、コンパイル及びその等価な語句は、通常のコンパイル（例えば、限定ではなく例証として、ソース−コードからオブジェクトコードになど）と、ソース−コードからソース−コードへのコンパイル、並びにオブジェクト−コードからオブジェクトコードへのコンパイル、及びいずれかの変更された組合せを包含することは理解される。「疑似オブジェクト−コード」の形式のいわゆる「中間−コード言語」も含まれる。
【００３５】
限定ではなく例証として、１つの実施形態では、アプリケーションコード５０の分析又は精査は、オペレーティングシステムがハードディスクもしくは他の記憶デバイス、媒体、又はソースからアプリケーションコード５０を読み取り、これをメモリにコピーしてアプリケーションプログラムコードの実行を始める準備をすることなどによって、アプリケーションプログラムコードのロード中に行なわれる。別の実施形態では、ＪＡＶＡ（登録商標）仮想マシーンにおいて、分析又は精査は、ｊａｖａ（登録商標）．ｌａｎｇ．ＣｌａｓｓＬｏａｄｅｒ．ｌｏａｄＣｌａｓｓ  ｍｅｔｈｏｄ（例えば「ｊａｖａ（登録商標）．ｌａｎｇ．ＣｌａｓｓＬｏａｄｅｒ．ｌｏａｄＣｌａｓｓ（）」）のクラスロード処理中に行なうことができる。
【００３６】
代替的に、又はこれに加えて、アプリケーションコード５０（又はアプリケーションコードの一部）の分析又は精査は、オペレーションシステムがアプリケーションコードをメモリにロードした後など、アプリケーションプログラムコードロード処理後でも、或いは、例えば、ＪＡＶＡ（登録商標）仮想マシーンがアプリケーションコードを「ｊａｖａ（登録商標）．ｌａｎｇ．ＣｌａｓｓＬｏａｄｅｒ．ｌｏａｄＣｌａｓｓ（）」方法及び任意選択的に開始された実行を介して仮想マシーンにロードした後など、任意選択的にアプリケーションプログラムコードの関連した対応部分の実行が起動された後でも行うことができる。
【００３７】
コンピュータ技術分野の当業者であれば、限定ではないが、インストゥルメンテーション、プログラム変換、翻訳、又はコンパイル手段及び／又は方法を含む、コンピュータコードの修正に使用できる種々の実施可能な技術を認識しているであろう。
【００３８】
１つのこのような技術は、アプリケーションコードの言語の先の変更又は結果として生じる変更を伴うことなくアプリケーションコードへの修正を行なうものである。別のこのような技術は、オリジナルコード（例えば、ＪＡＶＡ（登録商標）言語ソース−コード）をＪＡＶＡ（登録商標）バイトコードなどの中間表現（又は中間−コード言語、又は疑似コード）に変換するものである。この変換が行なわれると、バイトコードに対し修正が行なわれ、その結果、変換を逆にすることができる。これは、改良されたＪＡＶＡ（登録商標）コードの所望の結果をもたらす。
【００３９】
別の実施可能な技術は、アプリケーションプログラムをソース−コードから直接、或いは前述の中間言語を介して又は何らかの他の中間手段を介してマシーンコードに変換するものである。次に、マシーンコードは、ロード及び実行前に修正される。更に別のこのような技術は、オリジナルコードを修正した後マシーンコードに変換される中間表現に変換するものである。
【００４０】
本発明は、全てのこのような修正ルート、及びこのようなルートの２つ、３つ、又はそれ以上の組合せをも包含する。
【００４１】
ＤＲＴ７１又は他のコード修正手段は、個々のマシーンＭ１、Ｍ２．．．Ｍｎの各々に対してメモリ構造及びコンテンツを作成又は複製する役割を担い、これにより複数のマシーンの相互運用が可能になる。幾つかの実施形態では、この複製されたメモリ構造が同一となる。他の実施形態では、このメモリ構造は、同一である部分と、同一でない他の部分とを有することになる。更に他の実施形態では、メモリ構造は、Ｂｉｇ  Ｅｎｄｉａｎ又はＬｉｔｔｌｅ  Ｅｎｄｉａｎフォーマット又は規定など、フォーマット又は記憶規定のみが異なる。
【００４２】
必要なときには組み合わせて適用されるこれらの構造及び手続きは、コンピュータ又はコンピュータ環境のメモリロケーション、アドレス範囲、オブジェクト、クラス、資産、資源、又はいずれかの他の手続き又は構造的態様が、必要な場合には、複数の個々のマシーンＭ１、Ｍ２．．．Ｍｎにわたって調整され整合性があり且つ一貫性のあるようにして作成、維持、動作、及び非動作又は削除が行われるコンピュータ環境を維持する。
【００４３】
従って、用語「１つ」、「単一の」、及び「共通」のアプリケーションコード又はプログラムとは、全てのマシーンＭ１、Ｍ２．．．Ｍｎが異なる（及び関係のない）プログラムではなく同じプログラム又はコードを動作又は実行しており、言い換えると、同じ又は実質的に同じアプリケーションコードのコピー又は複製が、相互運用し且つ接続されたマシーン又はコンピュータの各々にロードされる状況を含む。
【００４４】
分散型ソフトウェアを利用する従来の構成では、１つのマシーンのソフトウェアから別のマシーンに物理的に位置付けられたメモリへのメモリアクセスは通常、マシーンを相互接続しているネットワークを介して行なわれる。従って、各マシーンのローカルメモリは、いずれかの他のマシーンによってアクセスでき、従って、独立しているとはいえない。しかしながら、別のコンピュータ上に物理的に位置付けられたメモリへの読み取り及び／又は書き込みメモリアクセスは、コンピュータを相互接続している遅いネットワークの使用を必要とするので、これらの構成では、このようなメモリアクセスは、メモリ読み取り／書き込み処理オペレーションおいて、潜在的にはマシーンの中央処理ユニットの１０6−１０7サイクルのオーダー（最新のプロセッサ速度とした場合）のかなりの遅延を生じる可能性がある。最終的に、この遅延は、例えば通信ネットワークの速度、帯域幅、及び／又は待ち時間などの多数の要素に依存する。これは、主に、従来技術による構成における複数の相互接続されたマシーンの性能の低下の原因となる。
【００４５】
しかしながら、本構成では、全メモリロケーション（又はその一部のサブセット）の現在値が、メモリ読み取りの要求を生じる処理を実行するマシーン上に記憶されるので、メモリロケーション又はデータの全ての読み取りはローカルで満たされる。
【００４６】
同様に、全メモリロケーション（又はその一部のサブセット）の現在値が、メモリ書き込みの要求を生じる処理を実行するマシーン上に記憶されるので、メモリロケーション又はデータの全ての書き込みはローカルで満たされる。
【００４７】
このようなローカルメモリ読み取り及び書き込み処理オペレーションは通常、中央処理ユニットの１０2−１０3サイクル内で満たされる。従って、実際には、包含及び／又は書き込みのメモリアクセスの待機が遙かに少ない。また、各マシーンのローカルメモリは、いずれかの他のマシーンがアクセスすることができず、従って、独立しているといえる。
【００４８】
本発明は、トランスポート、ネットワーク、及び通信経路が独立しており、マシーン又はＤＲＴ間の通信がどのように行われるかには依存しない。１つの実施形態では、マシーン又はＤＲＴ間の電子メール（Ｅメール）交換でも通信には十分とすることができる。
【００４９】
上記に関連して、図１のアプリケーションプログラム５０がほぼ同時に実行されている、２より大きいか又は等しい整数であるマシーンＭ１、Ｍ２、．．．Ｍｎの数「ｎ」が存在することが図２から分かるであろう。これらのマシーンには、階層順序で数１、２、３．．．などが割り当てられる。この順序は通常、マシーン２及び３が階層的に隣接し、マシーン「ｎ」及び１も同様であるようにループ又は閉鎖されている。ロックサーバーとして動作するように、種々のハウスキーピング機能を実行できるように提供される別のマシーンＸが存在することが好ましい。詳細には、別のマシーンＸは、低価値のマシーンであり、プロセッサ速度などの所望の属性を有することができる他のマシーンよりも遙かに安価にすることができる。更に、マシーンＸが故障した場合の冗長性を提供するために、付加的な低価値マシーン（Ｘ＋１）が利用可能であるのが好ましい。２つのこのようなサーバーマシーンＸ及びＸ＋１が提供された場合、これらは、簡単にするために、クラスタ構成でデュアルマシーンとして動作するのが好ましい。マシーンＸ及びＸ＋１は、必要に応じて、本発明に従うマルチコンピュータシステムとして動作することができる。しかしながら、これは、一般に望ましくない複雑さをもたらすことになる。マシーンＸが提供されない場合、ハウスキーピング機能などのマシーンＸの機能は、他のマシーンの１つ、又は幾つか、或いは全てによって提供される。
【００５０】
ここで図３を参照すると、マルチコンピュータシステムを形成する４つのマシーンＭ１〜Ｍ４のメモリロケーションの概略マップが示されている。この特定の実施例では、マシーンＭ１がメモリロケーションＡ、Ｂ、及びＣを有し、マシーンＭ２が同じメモリロケーションと、付加的なメモリロケーションＤとを有する。しかしながら、マシーンＭ３は、メモリロケーションＣ及びＥのみを有し、マシーンＭ４はメモリロケーションＢ及びＤを有する。従って、メモリロケーションＢを更新しなければならない場合には、マシーンＭ１、Ｍ２、及びＭ４にのみ通知する必要があり、マシーンＭ３には通知する必要はない。よって、この状況ではマシーンＭ３と通信する必要はないので、通信ネットワーク３上のトラフィックを低減することができる。
【００５１】
図４、５、及び６は、通信オーバヘッドにおけるこの低減を達成可能にするのに十分なデータの集計又は記憶の３つの異なる方法を示す。
【００５２】
図４では、各オブジェクト又はメモリロケーションに対し、オブジェクト又はロケーションのローカルコピーを有するマシーンのリストが維持され、従って、オブジェクト又はロケーションのコンテンツは、変更されることになる場合には伝える必要があり、或いは、例えばファイナライズ又は同期化などによる何らかの方法でマニピュレートする必要がある。
【００５３】
図５では逆に、各マシーンに対し、マシーン内に存在するオブジェクト又はメモリロケーションのリストが維持される。従って、特定のマシーンが、例えば特定のメモリロケーションに対し修正を加える場合には、サーバーマシーンＸは、マシーンのリストをチェックし、各マシーンが修正されたメモリロケーション（修正されたメモリロケーションのローカルコピーなど）を参照するかどうか、よって更新が必要であるかどうかを調べるようにすることができる。
【００５４】
図６では、どの通信が必要とされるかをサーバーマシーンＸが判断できるようにする、更に別の集計表形式が提供されている。すなわち、この表は、一方の側にオブジェクトと他方の側にマシーンをリストし、且つ各実施可能なコンピュータにおける可能なオブジェクトに対応する各セルにおいて関連する「はい」又は「いいえ」を提供するアレイ形式をとる。
【００５５】
上記の概念が把握されると、上記で本明細書に組み込まれた特許明細書において詳細に説明されている構成が、簡単明瞭な方式で修正されて、マルチコンピュータシステムのマシーンＭ１、Ｍ２、その他の各々が、対応するメモリロケーションを有するマシーンの当該サブセットに特定のメモリロケーションを更新するメッセージを送ることを保証する。これを行なう１つの方法は、更新メッセージがブロードキャストされるか又は更新メッセージが送信されるアドレスを構築するプロセスにおいて、図４〜６のいずれかの表を調べることである。
【００５６】
上記では、本発明の幾つかの実施形態のみを説明しており、本発明の範囲から逸脱することなく修正を行い得る点は当業者には明らかである。例えば、ＪＡＶＡ（登録商標）への言及は、ＪＡＶＡ（登録商標）言語とＪＡＶＡ（登録商標）プラットフォーム及びアーキテクチャの両方を含む。
【００５７】
修正の全ての説明される事例では、ロード前、又はロード中、或いはロード後で未修正のアプリケーションコードの実行が開始される前に、アプリケーションコード５０が修正される場合、改良されたアプリケーションコードは、修正が行なわれるのに続いて未修正のアプリケーションコードの代わりにロードされて、未修正のアプリケーションコードの代わりに実行されることを理解されたい。
【００５８】
代替として、修正が、ロード後及び未修正のアプリケーションコードの実行の開始後に行なわれる事例では、未修正のアプリケーションコードは、修正が実施されるのに対応して修正アプリケーションコードと全体的に置き換えることができ、或いは、実行中の未修正のアプリケーションコードに増分的に修正が行なわれるときに部分的に又は増分的に置き換えることができる点を理解されたい。このような修正ルートのどれが使用されるかに関係なく、引き続き行なわれる修正が、未修正のアプリケーションコードの代わりに実行される。
【００５９】
複数のマシーンＭ１、Ｍ２．．．Ｍｎの各マシーン上で類似の等価のローカルオブジェクト（又はクラス、又は資産又は資源又は同様のもの）全てに対して「メタ−名前」又は「メタ−アイデンティティ」の形式であるグローバル識別子を使用することが有利である。例えば、複数の類似の等価オブジェクトの各マシーン上で各類似の等価ローカルオブジェクトの各固有のローカル名又はアイデンティティを追跡するのではなく、各マシーンがグローバル名称を特定のローカル名又はオブジェクトに関係付けるという条件の下（例えば、「グローバル名称７７８７」はマシーンＭ１上のオブジェクト「ローカルオブジェクト４５６」に対応し、「グローバル名称７７８７」はマシーンＭ２上のオブジェクト「ローカルオブジェクト８８５」に対応し、「グローバル名称７７８７」はマシーンＭ３上のオブジェクト「ローカルオブジェクト１１１」に対応する、など）で、各マシーン上の複数の類似の等価オブジェクトに対応するグローバル名称（例えば、「グローバル名称７７８７」）を定義又は使用することができる。
【００６０】
全オブジェクト（例えばメモリロケーション又はフィールド）の全ての又は一部のサブセットのリストを最初に記録又は作成するときに各ＤＲＴ７１によって作成されるテーブル又はリスト或いは他のデータ構造において、各マシーンＭ１、Ｍ２．．．Ｍｎ上のこうした各記録されたオブジェクトに対しマシーンＭ１、Ｍ２．．．Ｍｎの各々上で共通する又は類似した名前又はアイデンティティが存在することは、本明細書に提供される詳細な説明の観点から当業者には明らかであろう。しかしながら、個々のマシーンにおいては、各マシーンが、その固有の内部プロセスに従って異なるメモリロケーションにメモリ値又はコンテンツを記憶することができ、一般的には記憶することになるので、所与の名前又はアイデンティティに対応するローカルオブジェクトは、時間と共に変わることになり、又は変わる可能性がある。従って、ＤＲＴの各々におけるテーブル、又はリスト、或いは他のデータ構造は、一般に、単一のメモリ名又はアイデンティティに対応する異なるローカルメモリロケーションを有することになるが、各グローバル「メモリ名」又はアイデンティティは、異なるローカルメモリロケーション内に記憶された同じ「メモリ値又はコンテンツ」を有することになる。よって、各グローバル名称については、コンピュータの各々において１つのファミリーメンバーでの対応する独立ローカルメモリロケーションのファミリーが存在することになる。ローカルメモリ名は異なる場合もあるが、資産、オブジェクト、ロケーション、その他は、本質的には同じコンテンツ又は値を有する。よって、ファミリーは整合性がある。
【００６１】
本明細書で使用される用語「テーブル」又は「集計」は、データを順番に記憶及び読み取ることのできるあらゆるフォーマットのリスト又は編成されたデータ構造を含むことが意図される。
【００６２】
ロード中のアプリケーションプログラムコード５０の上述の修正は、多くの方法で又は多様な手段で達成できることは、本明細書に提供される説明の観点から当業者には明らかであろう。これらの方法又は手段は、限定でないが、少なくとも以下の５つの方法、及びこれらの５つの方法の変形又は組合せを含む。
（ｉ）ロード時の再コンパイル
（ｉｉ）プリコンパイルによるロード前の処理
（ｉｉｉ）ロード前のコンパイル
（ｉｖ）「ジャスト−イン−タイム（ＪＩＴ）」コンパイル
（ｖ）ロード後の再コンパイル（但し、又は例えば、分散環境での関連した又は対応するアプリケーションコードの実行前）。
【００６３】
従来、用語「コンパイル」とは、例えばソースからオブジェクトコード又は１つの言語から別の言語へのコード又は言語の変換を意味する。明確には、本明細書における用語「コンパイル」（及びその文法的に等価のもの）の使用はこれに限定されず、同じコード又は言語内での修正を含む又は包含することができる。
【００６４】
コンピュータ及び／又はプログラミング技術分野における当業者であれば、付加的なコード又は命令が既存のコード又は命令に挿入されてこれを修正する場合、既存のコード又は命令セットは、オフセット、分岐、属性、マークアップ、及び同様のものが正しく処理され又は応じられるように更なる修正（例えば、シーケンシャル命令の再ナンバリングによってなど）を必要とする可能性があることを認識するであろう。
【００６５】
同様に、ＪＡＶＡ（登録商標）言語では、メモリロケーションは、例えばフィールドタイプ及びアレイタイプの両方を含む。上記の説明は、フィールドを扱っており、アレイタイプに必要な変更は、本質的には同じ必要な変更を加えている。また本発明は、Ｍｉｃｒｏｓｏｆｔ．ＮＥＴプラットフォーム及びアーキテクチャ（ＶｉｓｕａｌＢａｓｉｃ、Ｖｉｓｕａｌ  Ｃ／Ｃ＋＋、及びＣ＃）、ＦＯＲＴＲＡＮ、Ｃ／Ｃ＋＋、ＣＯＢＯＬ、ＢＡＳＩＣなどを含むＪＡＶＡ（登録商標）に類似したプログラミング言語（手続き型、宣言、及びオブジェクト指向言語を含む）に対し等しく適用可能である。
【００６６】
本明細書で使用される用語オブジェクト及びクラスとは、ＪＡＶＡ（登録商標）環境から派生したものであり、ダイナミックリンクライブラリ（ＤＬＬ）、又はオブジェクトコードパッケージ、或いは機能ユニット又はメモリロケーションなどの異なる環境から派生した類似語を包含するものとする。
【００６７】
例えば、限定ではないが、ロック手段、分散型ランタイム手段、モディファイア又は修正手段、及び同様のものを含む本発明の実施形態に関する種々の手段が説明される。本発明の少なくとも１つの実施形態では、これらの種々の手段のいずれか１つ又は各々は、コンピュータプログラムコード命令文又は命令（場合によっては、複数のコンピュータプログラムコード命令文又は命令によるものを含む）によって実施することができ、コンピュータ論理回路、プロセッサ、ＡＳＩＣ、論理又は電子回路ハードウェア、マイクロプロセッサ、マイクロコントローラ、又は他の論理内で実行し、このような論理又は回路のオペレーションを修正して、記載されたオペレーション又は機能を達成する。別の実施形態では、これらの種々の手段のいずれか１つ又は各々は、ファームウェアにおいて実施することができ、他の実施形態では、これらをハードウェアにおいて実施することができる。更に、本発明の少なくとも１つの実施形態では、これらの種々の手段のいずれか１つ又は各々は、コンピュータプログラムソフトウェア、ファームウェア、及び／又はハードウェアの組合せによって実施することができる。
【００６８】
上述の方法、手順、及び／又はルーチンのいずれか及び各々は、有利には、何らかの有形媒体上に記憶されるか、或いは電子、信号、又はデジタル形式で存在するコンピュータプログラム及び／又はコンピュータプログラム製品として実施することができる。このようなコンピュータプログラム又はコンピュータプログラム製品は、別個の、及び／又は、コンピュータ、コンピュータマシーン、又は情報アプライアンスのプロセッサ又はマイクロプロセッサなどにおいて、論理を処理する際に実行するためのモジュール、プログラム、又はサブルーチンとして、或いはいずれかの他の方法で編成された命令を含み；コンピュータプログラム又はコンピュータプログラム製品は、コンピュータが実行するオペレーション、或いはコンピュータプログラム又はコンピュータプログラム製品が存在又は実行されているコンピュータに結合され、接続され、或いは他の方法で信号通信中のコンピュータ上のコンピュータのオペレーションを修正する。このようなコンピュータプログラム又はコンピュータプログラム製品は、コンピュータ、コンピュータマシーン、及び／又は情報アプライアンスのオペレーション及びアーキテクチャの構造を修正し、コンピュータの技術上のオペレーションを変更し、本明細書で説明される技術的な効果を実現する。
【００６９】
従って、本発明は、記憶媒体に記憶されるか又はいずれかの形式で電子的に存在するプログラム命令のセットを備え、本明細書に記載され請求項のいずれかに含む方法、手順、ルーチン、又は同様のもののいずれかを複数のコンピュータが実施できるよう動作可能なコンピュータプログラム製品を含むことができる。
【００７０】
更に、本発明は、（限定ではないが）通信ネットワーク又は他の通信リンク又は経路を介して相互接続された、複数のコンピュータ、又は複数のコンピュータと対話するように適合された単一のコンピュータを含み、各々は、コンピュータの対応する異なるコンピュータの単一のコンピュータ上でのみ動作するよう記述されたアプリケーションコードの同じ部分又は異なる部分をほぼ同時に又は並行して実行するよう動作可能である。コンピュータは、コンピュータプログラム製品がロードされたとき、或いは後続の命令時に本明細書に説明され又は請求項のいずれかに記載された方法、手順、又はルーチンのいずれかを実行するようプログラムされている。同様に、本発明はまた、同じ又はほぼ類似したコンピュータと協働してマルチコンピュータシステムを形成するよう配列された単一のコンピュータをその範囲に含む。
【００７１】
本明細書で使用される用語「備える」（及びその文法的変形形態）は、「有する」又は「含む」といった包括的な意味で使用され、「だけからなる」という排他的意味では使用されない。
【００７２】
要約すると、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、且つコンピュータのうちの第１の複数のコンピュータがあるメモリロケーションを参照することができ、且つコンピュータのうちの第２の異なる複数のコンピュータが他のメモリロケーションを参照することができるマルチコンピュータ環境において、メモリロケーションのいずれか１つのコンテンツが新しいコンテンツを書き込こまれ又は書き換えられ、或いはマニピュレートされた後に毎回、そのコンピュータにおけるいずれかの対応するメモリロケーションが後で適切な時に通信ネットワークを介して更新又はマニピュレートされ、
（ｉ）どのメモリロケーションがどのコンピュータ上に存在するかに関するレコードを維持する段階と、
（ｉｉ）維持されたレコードにおいて最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートする段階と、
を含み、
これによって通信ネットワークを通る更新又はマニピュレート命令の量を低減する改良方法が開示される。
好ましくは、本方法は、
（ｉｉｉ）各メモリロケーションに対応するコンピュータのリスティングとしてレコードを維持する段階を含む。
或いは、本方法は、
（ｉｖ）各コンピューに存在するメモリロケーションのリスティングとしてレコードを維持する段階を含む。
或いは、本方法は、
（ｖ）全コンピュータ及び全メモリロケーションの集計としてレコードを維持する段階を含む。
【００７３】
好ましくは、幾つかのメモリロケーション及び他のメモリロケーションが、共通メモリロケーションを含む。
【００７４】
好ましくは、コンピュータの第１の複数のコンピュータ及びコンピュータの第２の複数のコンピュータは、共通コンピュータを含む。
【００７５】
更に、独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータを備え、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、コンピュータのうちの第１の複数のコンピュータがあるメモリロケーションを参照可能であり、且つコンピュータのうちの第２の異なる複数のコンピュータが他のメモリロケーションを参照可能であるコンピュータシステムが開示され、本システムは、各メモリロケーションのコンテンツが、新しいコンテンツを書き込まれ又は書き換えられ、或いはマニピュレートされた後に毎回、通信ネッワークを介して各メモリロケーションを後で適切な時に更新するよう各コンピュータに関連した更新手段を更に備えており、該更新手段は、どのメモリロケーションがどのコンピュータ上に存在するかに関するレコード手段を含み、該更新手段は、レコード手段において最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートし、これによって通信ネットワークを通る更新又はマニピュレート命令の量を低減する。
【００７６】
好ましくは、レコード手段は、各メモリロケーションに対応するコンピュータのリスティングである。
【００７７】
或いは、レコード手段は、各コンピュータに存在するメモリロケーションのリスティングである。
【００７８】
或いは、レコード手段は、全コンピュータ及び全メモリロケーションの集計である。
【００７９】
好ましくは、幾つかのメモリロケーション及び他のメモリロケーションは、共通メモリロケーションを含む。
【００８０】
好ましくは、第１の複数のコンピュータ及び第２の複数のコンピュータは、共通コンピュータを含むのが好ましい。
【００８１】
また、通信ネットワークを介して相互接続され、上述された方法を確実に実行できるよう動作可能な複数のコンピュータが開示される。
【００８２】
更に、記憶媒体内に記憶され、上述された方法を複数のコンピュータが実行できるよう動作可能なプログラム命令のセットを含むコンピュータプログラム製品が開示される。
【００８３】
更に、上述された方法を実行するため、或いは上述されたコンピュータシステムを形成するために、少なくとも１つの他のコンピュータと協働するように適合された単一のコンピュータが開示される。
【図面の簡単な説明】
【００８４】
【図１Ａ】ＪＡＶＡ（登録商標）コードを動作し、これによって単一のＪＡＶＡ（登録商標）仮想マシーンを構成するよう配置された従来技術のコンピュータの概略図である。
【図１Ｂ】図１Ａに類似したコードの初期ロードを示す図である。
【図１Ｃ】各々がマルチコンピュータシステムを形成するためのＪＡＶＡ（登録商標）仮想マシーンである複数のコンピュータの相互接続を示す図である。
【図２】少なくとも１つの付加的なサーバーマシーンＸがサーバーとして接続された「ｎ」個のアプリケーション実行コンピュータの概略図である。
【図３】４つのコンピュータのメモリロケーションの概略マップである。
【図４】どのメモリロケーションがどのコンピュータ上に存在するかに関するリスティングの形式を示す図である。
【図５】どのメモリロケーションがどのコンピュータ上に存在するかに関するリスティングの形式を示す図である。
【図６】どのメモリロケーションがどのコンピュータ上に存在するかに関する集計表の形式を示す図である。
【符号の説明】
【００８５】
Ａ  Ｂ  Ｃ  Ｄ  Ｅ  オブジェクト
Ｍ１  Ｍ２  Ｍ３  Ｍ４  マシーン
【図１Ａ】
2009512081.tif 000003
【図１Ｂ】
2009512081.tif 000004
【図１Ｃ】
2009512081.tif 000005
【図２】
2009512081.tif 000006
【図３】
2009512081.tif 000007
【図４】
2009512081.tif 000008
【図５】
2009512081.tif 000009
【図６】
2009512081.tif 000010
【国際調査報告】
2009512081.tif 000011
2009512081.tif 000012