説明

オーバヘッドを低減したマルチマシーンアーキテクチャ

通信ネットワーク(53)によって相互接続された複数のコンピュータ(M1、M2、....Mn)上でアプリケーションプログラムが同時に実行され、且つ各コンピュータのローカルメモリは後で適切な時に更新することによってほぼ同じには維持されないマルチコンピュータ環境が開示される。例えば、更新の目的のために資産、オブジェクト、又は構造(すなわちメモリロケーション)へのアクセスを可能にするアドレステーブルメカニズムが提供される。全コンピュータが同じメモリを有するわけではないので、全コンピュータを更新する必要はなく、通信ネットワーク(53)上のトラフィックの量が低減される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ処理に関し、詳細には、通信ネットワークを介して相互接続された複数のコンピュータの同時オペレーションに関する。
【背景技術】
【0002】
本出願人名でWO2005/103926(米国特許出願第11/111,946号及び公開番号2005−0262313が対応)において公開された国際特許出願番号PCT/AU2005/000580(代理人整理番号5027F−WO)では、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、複数のコンピュータの対応する異なるコンピュータ上でほぼ同時にどのように動作することができるかを開示している。この同時オペレーションは、本出願の優先日現在で商用的に使用されていない。「Computer Architecture Method of Operation for Multi−Computer Distributed Processing and Co−ordinated Memory and Asset Handling(マルチ−コンピュータ分散処理及び調整されたメモリ及び資産処理のためのオペレーションのコンピュータアーキテクチャ方法)」という名称の米国特許出願第11/259885号が対応する国際特許出願番号PCT/AU2005/001641(代理人整理番号5027F−D1−WO)及び本出願の優先日では公開されていない本出願人名でのPCT/AU2006/000532(代理人整理番号5027F−D2−WO)でも更に詳細に開示されている。上記の先願の各々の明細書の内容は、全ての目的において相互参照により本明細書に組み込まれる。
【0003】
簡潔に述べると、上述の特許明細書では、単一のコンピュータ上でのみ動作するように記述された少なくとも1つのアプリケーションプログラムが、独立したローカルメモリを各々が備えた幾つかのコンピュータ上で同時に動作できることが開示されている。このプログラムのオペレーションに必要なメモリロケーションは、各コンピュータの独立したローカルメモリに複製される。アプリケーションプログラムがいずれかの複製されたメモリロケーションに新しいデータを書き込む度に、当該新しいデータが送信され、各コンピュータの各対応するメモリロケーションに記憶される。従って、伝送遅延の可能性は別として、各コンピュータは、そのコンテンツが互いのコンピュータのローカルメモリと実質的に同じであり、且つこれを維持するよう更新されるローカルメモリを有する。全てのアプリケーションプログラムは、一般に、新しいデータが書き込まれるよりも遙かに頻繁にデータを読み取るので、上述の構成により、コンピュータ処理速度における相当な利点を達成することが可能になる。詳細には、こうした方策によって、商品通信ネットワークによって相互接続された2つ又はそれ以上の汎用コンピュータが、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラム下で同時に実行し動作することが可能になる。
【0004】
多くの場合、上述の構成は満足に機能する。これは、更新遅延が存在する可能性があるとプログラマーが認識し、プログラムのフローを調整してこれを解決することができる場合に特に当てはまる。しかしながら、最新のコンテンツではなく古いコンテンツ又は値を用いることで問題が発生し得る場合がある。
【発明の開示】
【発明が解決しようとする課題】
【0005】
いずれかの変更がいずれかのメモリロケーションに行なわれたときに各ローカルメモリを更新する必要性によって、複数のコンピュータを相互接続する通信ネットワークに大きなオーバヘッド負担が生じる。本発明の目的は、上述のオーバヘッドを低減することである。
【課題を解決するための手段】
【0006】
本発明の第1の態様によれば、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、且つコンピュータのうちの第1の複数のコンピュータがあるメモリロケーションを参照することができ、且つコンピュータのうちの第2の異なる複数のコンピュータが他のメモリロケーションを参照することができるマルチコンピュータ環境において、メモリロケーションのいずれか1つのコンテンツが新しいコンテンツに書き込まれ又は書き換えられ、或いはマニピュレートされた後で毎回、コンピュータにおけるいずれの対応するメモリロケーションが、後で適切な時に通信ネットワークを介して更新又はマニピュレートされ、(i)どのメモリロケーションがどのコンピュータ上に存在するかに関するレコードを維持する段階と、(ii)維持されたレコードにおいて最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートする段階と、を含み、これによって通信ネットワークを通る更新又はマニピュレート命令の量を低減する改良方法が開示される。
【0007】
本発明の第2の態様によれば、記憶媒体内に記憶され、上記に定義された方法を複数のコンピュータが実行できるよう動作可能なプログラム命令のセットを含むコンピュータプログラム製品が開示される。
【0008】
本発明の第3の態様によれば、通信ネットワークを介して相互接続され、上述された方法を確実に実行するよう動作可能な複数のコンピュータが開示される。
【0009】
本発明の第4の態様によれば、独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータを備えたコンピュータシステムが開示され、該コンピュータシステムにおいては、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、コンピュータのうちの第1の複数のコンピュータがあるメモリロケーションを参照可能であり、且つコンピュータのうちの第2の異なる複数のコンピュータが他のメモリロケーションを参照可能であり、本システムは、各メモリロケーションのコンテンツに新しいコンテンツを書き込まれ又は書き換えられ、或いはマニピュレートされた後に毎回、通信ネットワークを介して各メモリロケーションを後で適切な時に更新するよう各コンピュータに関連した更新手段を備えており、該更新手段は、どのメモリロケーションがどのコンピュータ上に存在するかに関するレコード手段を含み、該更新手段が、レコード手段において最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートし、これによって通信ネットワークを通る更新又はマニピュレート命令の量を低減する。
【0010】
本発明の第5の態様によれば、上記の方法を実行するため、或いは上記のコンピュータシステムを形成するために、少なくとも1つの他のコンピュータと協働するように適合された単一のコンピュータが開示される。
【発明を実施するための最良の形態】
【0011】
JAVA(登録商標)言語に関連して実施形態を説明するが、本発明はこの言語に限定されず、特に、MICROSOFT.NETプラットフォーム及びアーキテクチャ(Visual Basic、VisualC、VisualC++、及びVisualC#)、FORTRAN、C、C++、COBOL、BASIC及び同様のものを含む他の言語(手続き、宣言、及びオブジェクト指向言語を含む)と共に使用できることは当業者には明らかであろう。
【0012】
図1Aに示すような仮想マシーンを作成することによってアプリケーションの特定の言語を利用する単一のコンピュータ又はマシーン(種々の製造業者のいずれかによって作製され、種々の異なる言語のいずれかで動作するオペレーティングシステム(又は等価な制御ソフトウェア又は他のメカニズム)を有する)を提供することは、従来技術で知られている。
【0013】
図1Aのコード及びデータ並びに仮想マシーン設定又は構成は、JAVA(登録商標)言語で記述され且つJAVA(登録商標)仮想マシーン61内で実行されるアプリケーションコード50の形態を取る。従って、アプリケーションの目的とする言語がJAVA(登録商標)言語である場合、マシーン製造業者及びコンピュータ又はマシーンの内部の詳細に関わらず、JAVA(登録商標)コードを操作できるJAVA(登録商標)仮想マシーンが使用される。更なる詳細については、引用により本明細書に組み込まれる、米国のSun Microsystems Inc.のT.Lindholm及びF.Yellinによる「The JAVA(登録商標) Virtual Machine Specification」 2nd Edition(JAVA(登録商標)仮想マシーン仕様) 第2版を参照されたい。
【0014】
図1Aのこの従来技術の構成は、図1Bに見られるように、便宜上「分散型ランタイム」又は「分散型ランタイムシステム」DRT71と呼ばれる付加的な機能を提供することによって、本発明の実施形態に従って修正される。
【0015】
図1B及び1Cでは、アプリケーションコード50は、矢印75又は75A又は75Bで示されるロード処理を介して分散型ランタイムシステム71と協働してJava(登録商標)仮想マシーンM1、M2、...Mnにロードされる。本明細書で使用される用語「分散型ランタイム」及び「分散型ランタイムシステム」は、本質的には同義語であり、限定ではなく例証として、特定のプラットフォーム上で実行される特定の言語で記述されたソフトウェアをサポートするライブラリコード及びプロセスを含むことは一般に理解される。更に、分散型ランタイムシステムはまた、特定の分散型コンピュータ環境内で実行される特定の言語で記述されたソフトウェアをサポートするライブラリコード及びプロセスを含むことができる。ランタイムシステム(分散型ランタイムシステムであっても、又はそうでなくても)は、通常、システム呼出し、プログラム起動及び終了、及びメモリ管理などのプログラムとオペレーティングシステムとの間のインターフェースの詳細を処理する。バックグラウンドの目的で、従来の分散型コンピュータ環境(DCE)(本発明の好ましい実施形態で使用される本発明の分散型ランタイム又は分散型ランタイムシステム71の機能を提供しないもの)は、Open Software Foundationから利用可能である。この分散型コンピュータ環境(DCE)は、マシーン上で実行されるソフトウェアに対するコンピュータ間通信の形式を実行するが、多くの制限の中でも、所要の修正又は通信オペレーションを実施することができない。その機能及びオペレーションの中で、好ましいDRT71は、複数のマシーンM1、M2、...Mn間の特定の通信を調整する。更に、好ましい分散型ランタイム71は、図1Cの各JAVA(登録商標)仮想マシーン72又はマシーンJVM#1、JVM#2、...JVM#n上でJAVA(登録商標)アプリケーション50の矢印75A又は75Bで示されるロード処理中にオペレーションに入る。読者が特定の実施例の利益を得ることができるように、JAVA(登録商標)言語及びJAVA(登録商標)仮想マシーンに対して多くの実施例及び説明が提供されるが、本発明は、JAVA(登録商標)言語又はJAVA(登録商標)仮想マシーンのいずれか、或いは他の何らかの言語、仮想マシーン、マシーン又はオペレーティング環境に限定されないことは、本明細書に提示される説明に照らせば理解されるであろう。
【0016】
図1Cは、図1Bに各々が示されるJAVA(登録商標)仮想マシーンの構成を修正された形式で示している。この場合も同じアプリケーションコード50が各マシーンM1、M2...Mnにロードされることは明らかであろう。しかしながら、矢印83で示されている各マシーンM1、M2、...Mn間の通信は、マシーンハードウェアを介して物理的にルート指定されるが、各マシーン内の個々のDRT71/1...71/nによって制御されるのが有利である。従って、実際にはこれは、これら自体又は互いに直接通信するマシーンM1、M2...Mnではなく、ネットワーク又は他の通信リンク53を介して互いに通信するDRT71/1,...71/nとして概念化することができる。マシーンM1、M2...Mn又はDRT71/1,71/2...71/n間のこの直接通信、或いはこのような通信の組合せのいずれかが企図され含まれる。好ましいDRT71は、トランスポート、プロトコル、及びリンクが独立した通信を提供する。
【0017】
1つの共通アプリケーションプログラム又はアプリケーションコード50及びその実行可能バージョン(場合によっては修正のある)は、複数のコンピュータ又はマシーンM1、M2...Mn全体で同時に又は並行して実行している。アプリケーションプログラム50は、単一のマシーン又はコンピュータ上で実行するように(或いは、単一のコンピュータオペレーションをエミュレートする上述の特許出願のマルチコンピュータシステム上で動作するように)記述されている。本質的には、修正された構造は、個々のマシーンの各々上で同一のメモリ構造及びコンテンツを複製するものである。
【0018】
用語「共通アプリケーションプログラム」は、単一のマシーン上で動作するよう記述され、複数のコンピュータ又はマシーンM1、M2...Mnの各々全体又は一部で、或いは任意選択的に複数のコンピュータ又はマシーンM1、M2...Mnのあるサブセットの各々でロード及び/又は実行されるアプリケーションプログラム又はアプリケーションプログラムコードを意味すると理解すべきである。言い換えると、アプリケーションコード50において表された共通アプリケーションプログラムが存在する。これは、各々が個々に修正されてアプリケーションプログラム又はプログラムコードの修正されたコピー又はバージョンを生成する、単一のコピー又は複数の同一コピーのいずれかである。次いで、各コピー又はインスタンスは、対応するマシーン上で実行する準備がなされている。これらが修正された後の時点では、これらは、同様のオペレーションを実施し、互いに一貫性があり且つ整合性があるように動作する点で共通である。任意選択的に、本発明の実施形態を実施する複数のコンピュータ、マシーン、情報アプライアンス、又は同様のものは、本発明の実施形態を実施していない他のコンピュータ、マシーン、情報アプライアンス、又は同様のものと接続或いは結合することができることは理解されるであろう。
【0019】
同じアプリケーションプログラム50(例えば、並列マージソート、又は計算流体力学アプリケーション、又はデータマイニングアプリケーション)は、各マシーン上で実行されるが、当該アプリケーションプログラムの実行可能コードは、必要に応じて各マシーン上で修正され、各マシーン上の各実行インスタンス(コピー又は複製)が、他のマシーン上のそれぞれのインスタンス(又はコピー又は複製)のオペレーションと当該特定のマシーン上のローカルオペレーションを調整し、これらが、一貫性があり且つ整合性のある調整された様態で共に機能し、アプリケーションの1つのグローバルインスタンス(すなわち、「メタ−アプリケーション」)であるように見せる。
【0020】
同じ又は実質的に同じアプリケーションコードのコピー又は複製は各々、相互運用し且つ接続されたマシーン又はコンピュータの対応するコンピュータにロードされる。各マシーン又はコンピュータの特徴は異なる可能性があるので、アプリケーションコード50は、ロード前、又はロードプロセス中に修正し、或いは、幾つかの欠点はあるが、ロードプロセス後に修正し、各マシーン上でのアプリケーションコードのカスタマイズしたもの又は修正物を提供することができる。種々のマシーン上のプログラム又はアプリケーションコード間の何らかの相違点は、本明細書で説明される相互運用性、一貫性、及び整合性に対する他の要件が維持可能な限り許容することができる。以下で明らかになるように、マシーンM1、M2...Mnの各々、及びすなわち、マシーンM1、M2...Mnの全てが、同じ又は実質的に同じアプリケーションコード50を有し、通常は、マシーン固有とすることができる修正を伴う。
【0021】
各マシーンM1、M2...Mn上でのアプリケーションコード50(又はその関連部分)のロード前、又はロード中、又は実行の前のあらゆる時点で、各アプリケーションコード50は、同じ規則(又は僅かな最適化変更が各モディファイア51/1、51/2...51/n内で許容されているので実質的に同じ規則)に従って対応するモディファイア51によって修正される。
【0022】
マシーンM1、M2...Mnの各々は、同じ(又は実質的に同じ又は類似の)モディファイア51(幾つかの実施形態では、分散型ランタイム又はDRT71として実装され、他の実施形態では、アプリケーションコード及びデータ50への添付物として実装され、更に、JAVA(登録商標)仮想マシーン自体内に実装することができる)で動作する。従って、マシーンM1、M2...Mnの全ては、必要とされる各修正に対して同じ(又は実質的に同じ又は類似の)モディファイア51を有する。例えば、メモリ管理及び複製のため、初期化のため、ファイナライズのため、及び/又は同期化のために、別の修正が必要になる可能性がある(但し、全ての実施形態において、これらの修正タイプの全てが必要とされるわけではない)。
【0023】
モディファイア51及び分散型ランタイム71の別の実施が存在する。例えば、図1Cの破線によって示されるように、モディファイア51は、分散型ランタイム71のコンポーネントとして、又はこの内部に実装することができ、従ってDRT71は、モディファイア51の機能及びオペレーションを実施することができる。或いは、モディファイア51の機能及びオペレーションは、コード及びデータ50内、又はJAVA(登録商標)仮想マシーン自体内など、DRT71を実装するのに使用される構造、ソフトウェア、ファームウェア、又は他の手段の外部で実施することができる。1つの実施形態では、モディファイア51及びDRT71の両方が、DRT及びモディファイアの機能を提供する単一のコンピュータプログラムコードに実装され又は記述される。この場合、モディファイア機能及び構造は、実際にはDRTに含まれる。どのように実装されるかに関係なく、モディファイア機能及び構造は、アプリケーションコードプログラムの実行可能なコードを修正する役割を担い、分散型ランタイム機能及び構造は、コンピュータ又はマシーン間の通信を実施する役割を担う。1つの実施形態における通信機能は、各マシーン上のDRTのコンピュータプログラムコード内の中間プロトコルレイヤを介して実施される。DRTは、例えば、JAVA(登録商標)言語で通信スタックを実施することができ、送信制御プロトコル/インターネットプロトコル(TCP/IP)を使用して、マシーン間の通信又は通話を提供することができる。これらの機能又はオペレーションは、多様な方法で実施することができ、本明細書に提供される説明の観点から、これらの機能又はオペレーションが構造及び/又は手順要素間、或いはコンピュータプログラムコード又はデータ構造間に厳密にどのように実施又は分割されるかについては、本発明には重要ではなく、不可欠なものでもない点は理解されるであろう。
【0024】
しかしながら、図1に示された構成では、複数の個々のコンピュータ又はマシーンM1、M2...Mnが提供され、その各々は、通信ネットワーク53又は他の通信リンクを介して相互接続される。各個々のコンピュータ又はマシーンは、対応するモディファイア51を備える。各個々のコンピュータはまた、通信ネットワークに接続する通信ポートを備えている。通信ネットワーク53又は経路は、いずれかの電子信号方式、データ、又はデジタル通信ネットワーク又は経路とすることができ、インターネットを介したネットワーク接続、或いはETHERNET(登録商標)又はINFINIBAND及びこれらの拡張及び改良を含む何らかの共通ネットワーク構成といった、低速で、従って低コストの通信経路であるのが好ましい。好ましくは、コンピュータは、通信ネットワーク53に接続する1つ又はそれ以上の公知の通信ポート(CISCO Power Connect 5224 Switchなど)を備えている。
【0025】
上述の構成の結果として、マシーンM1、M2、...、Mnの各々が、例えば、10MBの内部又はローカルメモリ容量を有する場合、全体としてアプリケーションコード50に利用可能な総メモリは、予想されるようにマシーンの数(n)×10MBではない。これは、n個のマシーン全ての内部メモリ容量の加法的な組合せでもない。そうではなく、10MBか、又は10MBよりも大きいがn×10MBよりも小さいある数である。マシーンの内部メモリ容量が異なる場合、これは許容可能であり、ひいては1つのマシーンの内部メモリが、マシーンの少なくとも1つの他のマシーンの内部メモリ容量よりも小さい場合には、マシーンのいずれかの最も小さなメモリのサイズは、このようなメモリ(又はその一部)が「共通」メモリ(すなわち、マシーンM1...Mnの各々の類似の等価メモリ)として扱われるとき、又は共通アプリケーションコードを実行するのに使用されるときに、マシーンの最大メモリ容量として用いることができる。
【0026】
しかしながら、各マシーンの内部メモリが処理される方式は、当初は性能に関する潜在的な制約となる可能性があるが、これがどのような改良されたオペレーション及び性能をもたらすかについては以下で明らかになるであろう。当然、各マシーンM1、M2...Mnは、プライベート(すなわち、「非共通の」)内部メモリ容量を有する。マシーンM1、M2、...、Mnのプライベート内部メモリ容量は通常はほぼ等しいが、必須ではない。例えば、マルチコンピュータシステムが、異なるエンティティによって所有又は操作される既存のコンピュータ、マシーン、又は情報アプライアンスを使用して実施又は編成されている場合、内部メモリ容量は全く異なる場合がある。他方、新しいマルチコンピュータシステムが実装されている場合、各マシーン又はコンピュータは、同一の内部メモリ容量を有するように選択されるのが好ましいが、これは必須ではない。
【0027】
各マシーンの独立したローカルメモリは、そのマシーン上で実行されるアプリケーションプログラムの当該部分に割り当てられたマシーンの総メモリの当該部分だけを表わしている点は理解されるべきである。従って、他のメモリは、アプリケーションプログラム50に関係のないマシーンのオペレーティングシステム及び他のコンピューテーションタスクが占有することになる。
【0028】
プロトタイプマルチコンピュータシステムの非商用オペレーションは、システム内のあらゆるマシーン又はコンピュータが、あらゆる可能なメモリロケーション(例えば、そのローカル複製を有する)を利用しないか、或いはこれを参照する必要がないことを示す。結果として、各マシーンのローカルメモリが当該マシーンのオペレーションに十分である限り、何らかの他のマシーンに同一の各マシーンのローカルメモリがなくともマルチコンピュータシステムを動作させることが可能となる。すなわち、特定のマシーンが、幾つかの特定のメモリロケーション(例えばそのローカル複製を有する)を参照する必要がない場合、その特定のメモリロケーションが当該特定のマシーンにおいて複製されないことは問題ではない。
【0029】
また、各マシーンにおいて及び接続され又は結合された複数のマシーン、コンピュータ、又は情報アプライアンスM1、M2、...、Mnのコンステレーション又はネットワーク全体にわたって、所望の性能レベルを達成するように各マシーンの内部メモリ量を選択することが有利とすることができる。記載されたこれらの内部及び共通メモリを考慮すると、マシーン間に共通とすることができるメモリ量に制限がないことは、本明細書に示される説明に照らせば明らかであろう。
【0030】
幾つかの実施形態では、複数の個々のコンピュータ又はマシーンの一部又は全ては、単一のハウジング又はシャーシ(Hewlett−Packard Development Company、Intel Corporation、IBM Corporationなどによって製造された、いわゆる「ブレードサーバー」など)、或いは、インテル、AMD、又はその他によって製造され、もしくは単一のプリント基板又は単一のチップ又はチップセット内に実装されたマルチプロセッサ(例えば、対称マルチプロセッサ又はSMP)又はマルチコアプロセッサ(例えば、デュアルコアプロセッサ及びチップマルチスレッディングプロセッサ)内に包含することができる。同様に、マルチコア、マルチCPU、又は他の処理論理回路を有するコンピュータ又はマシーンも含まれる。
【0031】
非JAVA(登録商標)言語又はアプリケーションコード環境で実施されるときには、一般化されたプラットフォーム、及び/又は仮想マシーン及び/又はマシーン及び/又はランタイムシステムは、当該プラットフォーム及び/又は仮想マシーン及び/又はマシーン及び/又はランタイムシステム環境の言語(例えば、限定ではないが、ソース−コード言語、中間−コード言語、オブジェクト−コード言語、マシーン−コード言語、及びいずれかの他のコード言語のいずれか1つ又はそれ以上を含む場合がある)でアプリケーションコード50を動作させ、マシーン又はプロセッサ製造業者及びマシーンの内部詳細に関係なく、プラットフォーム、及び/又は仮想マシーン及び/又はマシーン及び/又はランタイムシステム及び/又は言語アーキテクチャを利用することができる。プラットフォーム及び/又はランタイムシステムが、仮想マシーン及び非仮想マシーンソフトウェア及び/又はファームウェアアーキテクチャ、並びにハードウェア及び直接ハードウェアコード化アプリケーション及び実装を含むことができる点は理解されるであろう。
【0032】
仮想マシーン又は抽象マシーン環境のより一般的なセットにおいて、並びに現在及び将来のコンピュータ及び/又はコンピュータマシーン及び/又は情報アプライアンス又は処理システムにおいて、クラス及び/又はオブジェクトのいずれかを利用しない、或いは利用を必要としない場合があるが、本発明の構造、方法、及びコンピュータプログラム及びコンピュータプログラム製品は依然として適用可能である。クラス及び/又はオブジェクトのいずれかを利用しないコンピュータ及び/又はコンピュータマシーンの実施例は、例えば、Intel Corporation及びその他によって製造された×86コンピュータアーキテクチャ、Sun Microsystems,Inc及びその他によって製造されたSPARCコンピュータアーキテクチャ、International Business Machines Corporation及びその他によって製造されたPower PCコンピュータアーキテクチャ、及びApple Computer, Inc及びその他によって製作されたパーソナルコンピュータ製品を含む。
【0033】
クラス又はオブジェクトの概念を利用せずに実装されたコンピュータ、コンピュータマシーン、情報アプライアンス、及び仮想マシーン又は仮想コンピュータ環境のこれらのタイプでは、例えば、手続き型言語又は他の言語についての基本データタイプ(整数データタイプ、浮動小数点データタイプ、長データタイプ、ダブルデータタイプ、ストリングデータタイプ、文字データタイプ、及びブールデータタイプなど)、構造化データタイプ(アレイ及びレコードなど)、派生タイプ、又は他のコードもしくはデータ構造を含み、関数、ポインタ、コンポーネント、モジュール、構造、リファレンス、及びユニオンなどの環境を含むように一般化することができる。必要なときに組み合わせて適用されるこれらの構造及び手続きは、コンピュータ又はコンピュータ環境のメモリロケーション、アドレス範囲、オブジェクト、クラス、資産、資源、又はいずれかの他の手続き又は構造的態様が、必要な場合には、複数の個々のマシーンM1、M2...Mnにわたって調整され整合性があり且つ一貫性のあるようにして作成、維持、動作、及び非動作もしくは削除が行われるコンピュータ環境を維持する。
【0034】
アプリケーションコード50のこの分析又は精査は、アプリケーションプログラムコード50のロードの前、又はアプリケーションプログラムコード50ロード処理中、又はアプリケーションプログラムコード50ロード処理の後(或いはこれらのある組合せ)でも行なうことができる。これは、アプリケーションコードが、付加的な命令を備え、及び/又は他の場合には、意味保護プログラムマニピュレーションによって修正され、及び/又は任意選択的に入力コード言語から異なるコード言語に翻訳(例えばソース−コード言語又は中間−コード言語からオブジェクト−コード言語又はマシーン−コード言語)することができる点で、インストゥルメンテーション、プログラム変換、翻訳、又はコンパイル手続きに形容することができる。この文脈では、用語「「コンパイル」は、通常又は従来的に、コード又は言語における変更、例えばソースコードからオブジェクトコード又は1つの言語から別の言語への変更を包含することは理解される。しかしながら、本発明では、用語「コンパイル」(及びその文法上等価な語句)はこれに限定されず、同じコード又は言語内の修正をも含む又は包含することができる。例えば、コンパイル及びその等価な語句は、通常のコンパイル(例えば、限定ではなく例証として、ソース−コードからオブジェクトコードになど)と、ソース−コードからソース−コードへのコンパイル、並びにオブジェクト−コードからオブジェクトコードへのコンパイル、及びいずれかの変更された組合せを包含することは理解される。「疑似オブジェクト−コード」の形式のいわゆる「中間−コード言語」も含まれる。
【0035】
限定ではなく例証として、1つの実施形態では、アプリケーションコード50の分析又は精査は、オペレーティングシステムがハードディスクもしくは他の記憶デバイス、媒体、又はソースからアプリケーションコード50を読み取り、これをメモリにコピーしてアプリケーションプログラムコードの実行を始める準備をすることなどによって、アプリケーションプログラムコードのロード中に行なわれる。別の実施形態では、JAVA(登録商標)仮想マシーンにおいて、分析又は精査は、java(登録商標).lang.ClassLoader.loadClass method(例えば「java(登録商標).lang.ClassLoader.loadClass()」)のクラスロード処理中に行なうことができる。
【0036】
代替的に、又はこれに加えて、アプリケーションコード50(又はアプリケーションコードの一部)の分析又は精査は、オペレーションシステムがアプリケーションコードをメモリにロードした後など、アプリケーションプログラムコードロード処理後でも、或いは、例えば、JAVA(登録商標)仮想マシーンがアプリケーションコードを「java(登録商標).lang.ClassLoader.loadClass()」方法及び任意選択的に開始された実行を介して仮想マシーンにロードした後など、任意選択的にアプリケーションプログラムコードの関連した対応部分の実行が起動された後でも行うことができる。
【0037】
コンピュータ技術分野の当業者であれば、限定ではないが、インストゥルメンテーション、プログラム変換、翻訳、又はコンパイル手段及び/又は方法を含む、コンピュータコードの修正に使用できる種々の実施可能な技術を認識しているであろう。
【0038】
1つのこのような技術は、アプリケーションコードの言語の先の変更又は結果として生じる変更を伴うことなくアプリケーションコードへの修正を行なうものである。別のこのような技術は、オリジナルコード(例えば、JAVA(登録商標)言語ソース−コード)をJAVA(登録商標)バイトコードなどの中間表現(又は中間−コード言語、又は疑似コード)に変換するものである。この変換が行なわれると、バイトコードに対し修正が行なわれ、その結果、変換を逆にすることができる。これは、改良されたJAVA(登録商標)コードの所望の結果をもたらす。
【0039】
別の実施可能な技術は、アプリケーションプログラムをソース−コードから直接、或いは前述の中間言語を介して又は何らかの他の中間手段を介してマシーンコードに変換するものである。次に、マシーンコードは、ロード及び実行前に修正される。更に別のこのような技術は、オリジナルコードを修正した後マシーンコードに変換される中間表現に変換するものである。
【0040】
本発明は、全てのこのような修正ルート、及びこのようなルートの2つ、3つ、又はそれ以上の組合せをも包含する。
【0041】
DRT71又は他のコード修正手段は、個々のマシーンM1、M2...Mnの各々に対してメモリ構造及びコンテンツを作成又は複製する役割を担い、これにより複数のマシーンの相互運用が可能になる。幾つかの実施形態では、この複製されたメモリ構造が同一となる。他の実施形態では、このメモリ構造は、同一である部分と、同一でない他の部分とを有することになる。更に他の実施形態では、メモリ構造は、Big Endian又はLittle Endianフォーマット又は規定など、フォーマット又は記憶規定のみが異なる。
【0042】
必要なときには組み合わせて適用されるこれらの構造及び手続きは、コンピュータ又はコンピュータ環境のメモリロケーション、アドレス範囲、オブジェクト、クラス、資産、資源、又はいずれかの他の手続き又は構造的態様が、必要な場合には、複数の個々のマシーンM1、M2...Mnにわたって調整され整合性があり且つ一貫性のあるようにして作成、維持、動作、及び非動作又は削除が行われるコンピュータ環境を維持する。
【0043】
従って、用語「1つ」、「単一の」、及び「共通」のアプリケーションコード又はプログラムとは、全てのマシーンM1、M2...Mnが異なる(及び関係のない)プログラムではなく同じプログラム又はコードを動作又は実行しており、言い換えると、同じ又は実質的に同じアプリケーションコードのコピー又は複製が、相互運用し且つ接続されたマシーン又はコンピュータの各々にロードされる状況を含む。
【0044】
分散型ソフトウェアを利用する従来の構成では、1つのマシーンのソフトウェアから別のマシーンに物理的に位置付けられたメモリへのメモリアクセスは通常、マシーンを相互接続しているネットワークを介して行なわれる。従って、各マシーンのローカルメモリは、いずれかの他のマシーンによってアクセスでき、従って、独立しているとはいえない。しかしながら、別のコンピュータ上に物理的に位置付けられたメモリへの読み取り及び/又は書き込みメモリアクセスは、コンピュータを相互接続している遅いネットワークの使用を必要とするので、これらの構成では、このようなメモリアクセスは、メモリ読み取り/書き込み処理オペレーションおいて、潜在的にはマシーンの中央処理ユニットの106−107サイクルのオーダー(最新のプロセッサ速度とした場合)のかなりの遅延を生じる可能性がある。最終的に、この遅延は、例えば通信ネットワークの速度、帯域幅、及び/又は待ち時間などの多数の要素に依存する。これは、主に、従来技術による構成における複数の相互接続されたマシーンの性能の低下の原因となる。
【0045】
しかしながら、本構成では、全メモリロケーション(又はその一部のサブセット)の現在値が、メモリ読み取りの要求を生じる処理を実行するマシーン上に記憶されるので、メモリロケーション又はデータの全ての読み取りはローカルで満たされる。
【0046】
同様に、全メモリロケーション(又はその一部のサブセット)の現在値が、メモリ書き込みの要求を生じる処理を実行するマシーン上に記憶されるので、メモリロケーション又はデータの全ての書き込みはローカルで満たされる。
【0047】
このようなローカルメモリ読み取り及び書き込み処理オペレーションは通常、中央処理ユニットの102−103サイクル内で満たされる。従って、実際には、包含及び/又は書き込みのメモリアクセスの待機が遙かに少ない。また、各マシーンのローカルメモリは、いずれかの他のマシーンがアクセスすることができず、従って、独立しているといえる。
【0048】
本発明は、トランスポート、ネットワーク、及び通信経路が独立しており、マシーン又はDRT間の通信がどのように行われるかには依存しない。1つの実施形態では、マシーン又はDRT間の電子メール(Eメール)交換でも通信には十分とすることができる。
【0049】
上記に関連して、図1のアプリケーションプログラム50がほぼ同時に実行されている、2より大きいか又は等しい整数であるマシーンM1、M2、...Mnの数「n」が存在することが図2から分かるであろう。これらのマシーンには、階層順序で数1、2、3...などが割り当てられる。この順序は通常、マシーン2及び3が階層的に隣接し、マシーン「n」及び1も同様であるようにループ又は閉鎖されている。ロックサーバーとして動作するように、種々のハウスキーピング機能を実行できるように提供される別のマシーンXが存在することが好ましい。詳細には、別のマシーンXは、低価値のマシーンであり、プロセッサ速度などの所望の属性を有することができる他のマシーンよりも遙かに安価にすることができる。更に、マシーンXが故障した場合の冗長性を提供するために、付加的な低価値マシーン(X+1)が利用可能であるのが好ましい。2つのこのようなサーバーマシーンX及びX+1が提供された場合、これらは、簡単にするために、クラスタ構成でデュアルマシーンとして動作するのが好ましい。マシーンX及びX+1は、必要に応じて、本発明に従うマルチコンピュータシステムとして動作することができる。しかしながら、これは、一般に望ましくない複雑さをもたらすことになる。マシーンXが提供されない場合、ハウスキーピング機能などのマシーンXの機能は、他のマシーンの1つ、又は幾つか、或いは全てによって提供される。
【0050】
ここで図3を参照すると、マルチコンピュータシステムを形成する4つのマシーンM1〜M4のメモリロケーションの概略マップが示されている。この特定の実施例では、マシーンM1がメモリロケーションA、B、及びCを有し、マシーンM2が同じメモリロケーションと、付加的なメモリロケーションDとを有する。しかしながら、マシーンM3は、メモリロケーションC及びEのみを有し、マシーンM4はメモリロケーションB及びDを有する。従って、メモリロケーションBを更新しなければならない場合には、マシーンM1、M2、及びM4にのみ通知する必要があり、マシーンM3には通知する必要はない。よって、この状況ではマシーンM3と通信する必要はないので、通信ネットワーク3上のトラフィックを低減することができる。
【0051】
図4、5、及び6は、通信オーバヘッドにおけるこの低減を達成可能にするのに十分なデータの集計又は記憶の3つの異なる方法を示す。
【0052】
図4では、各オブジェクト又はメモリロケーションに対し、オブジェクト又はロケーションのローカルコピーを有するマシーンのリストが維持され、従って、オブジェクト又はロケーションのコンテンツは、変更されることになる場合には伝える必要があり、或いは、例えばファイナライズ又は同期化などによる何らかの方法でマニピュレートする必要がある。
【0053】
図5では逆に、各マシーンに対し、マシーン内に存在するオブジェクト又はメモリロケーションのリストが維持される。従って、特定のマシーンが、例えば特定のメモリロケーションに対し修正を加える場合には、サーバーマシーンXは、マシーンのリストをチェックし、各マシーンが修正されたメモリロケーション(修正されたメモリロケーションのローカルコピーなど)を参照するかどうか、よって更新が必要であるかどうかを調べるようにすることができる。
【0054】
図6では、どの通信が必要とされるかをサーバーマシーンXが判断できるようにする、更に別の集計表形式が提供されている。すなわち、この表は、一方の側にオブジェクトと他方の側にマシーンをリストし、且つ各実施可能なコンピュータにおける可能なオブジェクトに対応する各セルにおいて関連する「はい」又は「いいえ」を提供するアレイ形式をとる。
【0055】
上記の概念が把握されると、上記で本明細書に組み込まれた特許明細書において詳細に説明されている構成が、簡単明瞭な方式で修正されて、マルチコンピュータシステムのマシーンM1、M2、その他の各々が、対応するメモリロケーションを有するマシーンの当該サブセットに特定のメモリロケーションを更新するメッセージを送ることを保証する。これを行なう1つの方法は、更新メッセージがブロードキャストされるか又は更新メッセージが送信されるアドレスを構築するプロセスにおいて、図4〜6のいずれかの表を調べることである。
【0056】
上記では、本発明の幾つかの実施形態のみを説明しており、本発明の範囲から逸脱することなく修正を行い得る点は当業者には明らかである。例えば、JAVA(登録商標)への言及は、JAVA(登録商標)言語とJAVA(登録商標)プラットフォーム及びアーキテクチャの両方を含む。
【0057】
修正の全ての説明される事例では、ロード前、又はロード中、或いはロード後で未修正のアプリケーションコードの実行が開始される前に、アプリケーションコード50が修正される場合、改良されたアプリケーションコードは、修正が行なわれるのに続いて未修正のアプリケーションコードの代わりにロードされて、未修正のアプリケーションコードの代わりに実行されることを理解されたい。
【0058】
代替として、修正が、ロード後及び未修正のアプリケーションコードの実行の開始後に行なわれる事例では、未修正のアプリケーションコードは、修正が実施されるのに対応して修正アプリケーションコードと全体的に置き換えることができ、或いは、実行中の未修正のアプリケーションコードに増分的に修正が行なわれるときに部分的に又は増分的に置き換えることができる点を理解されたい。このような修正ルートのどれが使用されるかに関係なく、引き続き行なわれる修正が、未修正のアプリケーションコードの代わりに実行される。
【0059】
複数のマシーンM1、M2...Mnの各マシーン上で類似の等価のローカルオブジェクト(又はクラス、又は資産又は資源又は同様のもの)全てに対して「メタ−名前」又は「メタ−アイデンティティ」の形式であるグローバル識別子を使用することが有利である。例えば、複数の類似の等価オブジェクトの各マシーン上で各類似の等価ローカルオブジェクトの各固有のローカル名又はアイデンティティを追跡するのではなく、各マシーンがグローバル名称を特定のローカル名又はオブジェクトに関係付けるという条件の下(例えば、「グローバル名称7787」はマシーンM1上のオブジェクト「ローカルオブジェクト456」に対応し、「グローバル名称7787」はマシーンM2上のオブジェクト「ローカルオブジェクト885」に対応し、「グローバル名称7787」はマシーンM3上のオブジェクト「ローカルオブジェクト111」に対応する、など)で、各マシーン上の複数の類似の等価オブジェクトに対応するグローバル名称(例えば、「グローバル名称7787」)を定義又は使用することができる。
【0060】
全オブジェクト(例えばメモリロケーション又はフィールド)の全ての又は一部のサブセットのリストを最初に記録又は作成するときに各DRT71によって作成されるテーブル又はリスト或いは他のデータ構造において、各マシーンM1、M2...Mn上のこうした各記録されたオブジェクトに対しマシーンM1、M2...Mnの各々上で共通する又は類似した名前又はアイデンティティが存在することは、本明細書に提供される詳細な説明の観点から当業者には明らかであろう。しかしながら、個々のマシーンにおいては、各マシーンが、その固有の内部プロセスに従って異なるメモリロケーションにメモリ値又はコンテンツを記憶することができ、一般的には記憶することになるので、所与の名前又はアイデンティティに対応するローカルオブジェクトは、時間と共に変わることになり、又は変わる可能性がある。従って、DRTの各々におけるテーブル、又はリスト、或いは他のデータ構造は、一般に、単一のメモリ名又はアイデンティティに対応する異なるローカルメモリロケーションを有することになるが、各グローバル「メモリ名」又はアイデンティティは、異なるローカルメモリロケーション内に記憶された同じ「メモリ値又はコンテンツ」を有することになる。よって、各グローバル名称については、コンピュータの各々において1つのファミリーメンバーでの対応する独立ローカルメモリロケーションのファミリーが存在することになる。ローカルメモリ名は異なる場合もあるが、資産、オブジェクト、ロケーション、その他は、本質的には同じコンテンツ又は値を有する。よって、ファミリーは整合性がある。
【0061】
本明細書で使用される用語「テーブル」又は「集計」は、データを順番に記憶及び読み取ることのできるあらゆるフォーマットのリスト又は編成されたデータ構造を含むことが意図される。
【0062】
ロード中のアプリケーションプログラムコード50の上述の修正は、多くの方法で又は多様な手段で達成できることは、本明細書に提供される説明の観点から当業者には明らかであろう。これらの方法又は手段は、限定でないが、少なくとも以下の5つの方法、及びこれらの5つの方法の変形又は組合せを含む。
(i)ロード時の再コンパイル
(ii)プリコンパイルによるロード前の処理
(iii)ロード前のコンパイル
(iv)「ジャスト−イン−タイム(JIT)」コンパイル
(v)ロード後の再コンパイル(但し、又は例えば、分散環境での関連した又は対応するアプリケーションコードの実行前)。
【0063】
従来、用語「コンパイル」とは、例えばソースからオブジェクトコード又は1つの言語から別の言語へのコード又は言語の変換を意味する。明確には、本明細書における用語「コンパイル」(及びその文法的に等価のもの)の使用はこれに限定されず、同じコード又は言語内での修正を含む又は包含することができる。
【0064】
コンピュータ及び/又はプログラミング技術分野における当業者であれば、付加的なコード又は命令が既存のコード又は命令に挿入されてこれを修正する場合、既存のコード又は命令セットは、オフセット、分岐、属性、マークアップ、及び同様のものが正しく処理され又は応じられるように更なる修正(例えば、シーケンシャル命令の再ナンバリングによってなど)を必要とする可能性があることを認識するであろう。
【0065】
同様に、JAVA(登録商標)言語では、メモリロケーションは、例えばフィールドタイプ及びアレイタイプの両方を含む。上記の説明は、フィールドを扱っており、アレイタイプに必要な変更は、本質的には同じ必要な変更を加えている。また本発明は、Microsoft.NETプラットフォーム及びアーキテクチャ(VisualBasic、Visual C/C++、及びC#)、FORTRAN、C/C++、COBOL、BASICなどを含むJAVA(登録商標)に類似したプログラミング言語(手続き型、宣言、及びオブジェクト指向言語を含む)に対し等しく適用可能である。
【0066】
本明細書で使用される用語オブジェクト及びクラスとは、JAVA(登録商標)環境から派生したものであり、ダイナミックリンクライブラリ(DLL)、又はオブジェクトコードパッケージ、或いは機能ユニット又はメモリロケーションなどの異なる環境から派生した類似語を包含するものとする。
【0067】
例えば、限定ではないが、ロック手段、分散型ランタイム手段、モディファイア又は修正手段、及び同様のものを含む本発明の実施形態に関する種々の手段が説明される。本発明の少なくとも1つの実施形態では、これらの種々の手段のいずれか1つ又は各々は、コンピュータプログラムコード命令文又は命令(場合によっては、複数のコンピュータプログラムコード命令文又は命令によるものを含む)によって実施することができ、コンピュータ論理回路、プロセッサ、ASIC、論理又は電子回路ハードウェア、マイクロプロセッサ、マイクロコントローラ、又は他の論理内で実行し、このような論理又は回路のオペレーションを修正して、記載されたオペレーション又は機能を達成する。別の実施形態では、これらの種々の手段のいずれか1つ又は各々は、ファームウェアにおいて実施することができ、他の実施形態では、これらをハードウェアにおいて実施することができる。更に、本発明の少なくとも1つの実施形態では、これらの種々の手段のいずれか1つ又は各々は、コンピュータプログラムソフトウェア、ファームウェア、及び/又はハードウェアの組合せによって実施することができる。
【0068】
上述の方法、手順、及び/又はルーチンのいずれか及び各々は、有利には、何らかの有形媒体上に記憶されるか、或いは電子、信号、又はデジタル形式で存在するコンピュータプログラム及び/又はコンピュータプログラム製品として実施することができる。このようなコンピュータプログラム又はコンピュータプログラム製品は、別個の、及び/又は、コンピュータ、コンピュータマシーン、又は情報アプライアンスのプロセッサ又はマイクロプロセッサなどにおいて、論理を処理する際に実行するためのモジュール、プログラム、又はサブルーチンとして、或いはいずれかの他の方法で編成された命令を含み;コンピュータプログラム又はコンピュータプログラム製品は、コンピュータが実行するオペレーション、或いはコンピュータプログラム又はコンピュータプログラム製品が存在又は実行されているコンピュータに結合され、接続され、或いは他の方法で信号通信中のコンピュータ上のコンピュータのオペレーションを修正する。このようなコンピュータプログラム又はコンピュータプログラム製品は、コンピュータ、コンピュータマシーン、及び/又は情報アプライアンスのオペレーション及びアーキテクチャの構造を修正し、コンピュータの技術上のオペレーションを変更し、本明細書で説明される技術的な効果を実現する。
【0069】
従って、本発明は、記憶媒体に記憶されるか又はいずれかの形式で電子的に存在するプログラム命令のセットを備え、本明細書に記載され請求項のいずれかに含む方法、手順、ルーチン、又は同様のもののいずれかを複数のコンピュータが実施できるよう動作可能なコンピュータプログラム製品を含むことができる。
【0070】
更に、本発明は、(限定ではないが)通信ネットワーク又は他の通信リンク又は経路を介して相互接続された、複数のコンピュータ、又は複数のコンピュータと対話するように適合された単一のコンピュータを含み、各々は、コンピュータの対応する異なるコンピュータの単一のコンピュータ上でのみ動作するよう記述されたアプリケーションコードの同じ部分又は異なる部分をほぼ同時に又は並行して実行するよう動作可能である。コンピュータは、コンピュータプログラム製品がロードされたとき、或いは後続の命令時に本明細書に説明され又は請求項のいずれかに記載された方法、手順、又はルーチンのいずれかを実行するようプログラムされている。同様に、本発明はまた、同じ又はほぼ類似したコンピュータと協働してマルチコンピュータシステムを形成するよう配列された単一のコンピュータをその範囲に含む。
【0071】
本明細書で使用される用語「備える」(及びその文法的変形形態)は、「有する」又は「含む」といった包括的な意味で使用され、「だけからなる」という排他的意味では使用されない。
【0072】
要約すると、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、且つコンピュータのうちの第1の複数のコンピュータがあるメモリロケーションを参照することができ、且つコンピュータのうちの第2の異なる複数のコンピュータが他のメモリロケーションを参照することができるマルチコンピュータ環境において、メモリロケーションのいずれか1つのコンテンツが新しいコンテンツを書き込こまれ又は書き換えられ、或いはマニピュレートされた後に毎回、そのコンピュータにおけるいずれかの対応するメモリロケーションが後で適切な時に通信ネットワークを介して更新又はマニピュレートされ、
(i)どのメモリロケーションがどのコンピュータ上に存在するかに関するレコードを維持する段階と、
(ii)維持されたレコードにおいて最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートする段階と、
を含み、
これによって通信ネットワークを通る更新又はマニピュレート命令の量を低減する改良方法が開示される。
好ましくは、本方法は、
(iii)各メモリロケーションに対応するコンピュータのリスティングとしてレコードを維持する段階を含む。
或いは、本方法は、
(iv)各コンピューに存在するメモリロケーションのリスティングとしてレコードを維持する段階を含む。
或いは、本方法は、
(v)全コンピュータ及び全メモリロケーションの集計としてレコードを維持する段階を含む。
【0073】
好ましくは、幾つかのメモリロケーション及び他のメモリロケーションが、共通メモリロケーションを含む。
【0074】
好ましくは、コンピュータの第1の複数のコンピュータ及びコンピュータの第2の複数のコンピュータは、共通コンピュータを含む。
【0075】
更に、独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータを備え、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、コンピュータのうちの第1の複数のコンピュータがあるメモリロケーションを参照可能であり、且つコンピュータのうちの第2の異なる複数のコンピュータが他のメモリロケーションを参照可能であるコンピュータシステムが開示され、本システムは、各メモリロケーションのコンテンツが、新しいコンテンツを書き込まれ又は書き換えられ、或いはマニピュレートされた後に毎回、通信ネッワークを介して各メモリロケーションを後で適切な時に更新するよう各コンピュータに関連した更新手段を更に備えており、該更新手段は、どのメモリロケーションがどのコンピュータ上に存在するかに関するレコード手段を含み、該更新手段は、レコード手段において最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートし、これによって通信ネットワークを通る更新又はマニピュレート命令の量を低減する。
【0076】
好ましくは、レコード手段は、各メモリロケーションに対応するコンピュータのリスティングである。
【0077】
或いは、レコード手段は、各コンピュータに存在するメモリロケーションのリスティングである。
【0078】
或いは、レコード手段は、全コンピュータ及び全メモリロケーションの集計である。
【0079】
好ましくは、幾つかのメモリロケーション及び他のメモリロケーションは、共通メモリロケーションを含む。
【0080】
好ましくは、第1の複数のコンピュータ及び第2の複数のコンピュータは、共通コンピュータを含むのが好ましい。
【0081】
また、通信ネットワークを介して相互接続され、上述された方法を確実に実行できるよう動作可能な複数のコンピュータが開示される。
【0082】
更に、記憶媒体内に記憶され、上述された方法を複数のコンピュータが実行できるよう動作可能なプログラム命令のセットを含むコンピュータプログラム製品が開示される。
【0083】
更に、上述された方法を実行するため、或いは上述されたコンピュータシステムを形成するために、少なくとも1つの他のコンピュータと協働するように適合された単一のコンピュータが開示される。
【図面の簡単な説明】
【0084】
【図1A】JAVA(登録商標)コードを動作し、これによって単一のJAVA(登録商標)仮想マシーンを構成するよう配置された従来技術のコンピュータの概略図である。
【図1B】図1Aに類似したコードの初期ロードを示す図である。
【図1C】各々がマルチコンピュータシステムを形成するためのJAVA(登録商標)仮想マシーンである複数のコンピュータの相互接続を示す図である。
【図2】少なくとも1つの付加的なサーバーマシーンXがサーバーとして接続された「n」個のアプリケーション実行コンピュータの概略図である。
【図3】4つのコンピュータのメモリロケーションの概略マップである。
【図4】どのメモリロケーションがどのコンピュータ上に存在するかに関するリスティングの形式を示す図である。
【図5】どのメモリロケーションがどのコンピュータ上に存在するかに関するリスティングの形式を示す図である。
【図6】どのメモリロケーションがどのコンピュータ上に存在するかに関する集計表の形式を示す図である。
【符号の説明】
【0085】
A B C D E オブジェクト
M1 M2 M3 M4 マシーン

【特許請求の範囲】
【請求項1】
単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、且つ前記コンピュータのうちの第1の複数のコンピュータがあるメモリロケーションを参照することができ、且つ前記コンピュータのうちの第2の異なる複数のコンピュータが他のメモリロケーションを参照することができるマルチコンピュータ環境において、前記メモリロケーションのいずれか1つのコンテンツが新しいコンテンツに書き込まれ又は書き換えられ、或いはマニピュレートされた後に毎回、そのコンピュータにおけるいずれかの対応するメモリロケーションは、後で適切な時に前記通信ネットワークを介して更新又はマニピュレートされ、
(i)どのメモリロケーションがどのコンピュータ上に存在するかに関するレコードを維持する段階と、
(ii)前記維持されたレコードにおいて最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートする段階と、
を含み、
これによって前記通信ネットワークを通る更新又はマニピュレート命令の量を低減する改良方法。
【請求項2】
(iii)前記各メモリロケーションに対応するコンピュータのリスティングとして前記レコードを維持する段階を含む、
ことを特徴とする請求項1に記載の改良方法。
【請求項3】
(iv)前記各コンピュータに存在するメモリロケーションのリスティングとして前記レコードを維持する段階を含む、
ことを特徴とする請求項1に記載の改良方法。
【請求項4】
(v)全コンピュータ及び全メモリロケーションの集計として前記レコードを維持する段階を含む、
ことを特徴とする請求項1に記載の改良方法。
【請求項5】
前記幾つかのメモリロケーション及び前記他のメモリロケーションが、共通メモリロケーションを含む、
ことを特徴とする請求項1から4のいずれか1項に記載の改良方法。
【請求項6】
前記第1の複数のコンピュータ及び前記第2の複数のコンピュータが、共通のコンピュータを含む、
ことを特徴とする請求項1から5のいずれか1項に記載の改良方法。
【請求項7】
独立したローカルメモリを各々が有し且つ通信ネットワークを介して各々が相互接続されている複数のコンピュータを備えたコンピュータシステムであって、
単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、前記複数のコンピュータの対応するコンピュータ上でほぼ同時に実行され、前記コンピュータのうちの第1の複数のコンピュータがあるメモリロケーションを参照可能であり、且つ前記コンピュータのうちの第2の異なる複数のコンピュータが他のメモリロケーションを参照可能であり、
前記システムが更に、
前記各メモリロケーションのコンテンツが、新しいコンテンツに書き込まれ又書き換えられ、或いはマニピュレートされた後に毎回、前記通信ネットワークを介して前記各メモリロケーションを後で適切な時に更新するよう前記各コンピュータに関連した更新手段を備えており、前記更新手段が、どのメモリロケーションがどのコンピュータ上に存在するかに関するレコード手段を含み、前記更新手段が、前記レコード手段において最初に更新又はマニピュレートされたメモリロケーションに対応するメモリロケーションだけを後で適切な時に更新又はマニピュレートし、これによって前記通信ネットワークを通る更新又はマニピュレート命令の量を低減する、
ことを特徴とするコンピュータシステム。
【請求項8】
前記レコード手段が、前記各メモリロケーションに対応するコンピュータのリスティングである、
ことを特徴とする請求項7に記載のシステム。
【請求項9】
前記レコード手段が、前記各コンピュータに存在するメモリロケーションのリスティングである、
ことを特徴とする請求項7に記載のコンピュータシステム。
【請求項10】
前記レコード手段が、全コンピュータ及び全メモリロケーションの集計である、
ことを特徴とする請求項7に記載のコンピュータシステム。
【請求項11】
前記幾つかのメモリロケーション及び前記他のメモリロケーションが、共通メモリロケーションを含む、
ことを特徴とする請求項7〜10のいずれか1項に記載のコンピュータシステム。
【請求項12】
前記第1の複数のコンピュータ及び前記第2の複数のコンピュータが、共通コンピュータを含む、
ことを特徴とする請求項7〜11のいずれか1項に記載のコンピュータシステム。
【請求項13】
通信ネットワークを介して相互接続され、請求項1〜6のいずれか1項に記載の方法を確実に実行するよう動作可能な複数のコンピュータ。
【請求項14】
記憶媒体内に記憶され、請求項1〜6のいずれか1項に記載の方法を複数のコンピュータが実行できるよう動作可能なプログラム命令のセットを含む、
コンピュータプログラム製品。
【請求項15】
請求項1〜6のいずれか1項に記載の方法を実行するため、或いは請求項7〜13のいずれか1項に記載のコンピュータシステムを形成するために、少なくとも1つの他のコンピュータと協働するように適合された単一のコンピュータ。

【図1A】
image rotate

【図1B】
image rotate

【図1C】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2009−512081(P2009−512081A)
【公表日】平成21年3月19日(2009.3.19)
【国際特許分類】
【出願番号】特願2008−535839(P2008−535839)
【出願日】平成18年10月5日(2006.10.5)
【国際出願番号】PCT/AU2006/001451
【国際公開番号】WO2007/045014
【国際公開日】平成19年4月26日(2007.4.26)
【出願人】(506353437)ワラテック プロプライエタリー リミテッド (9)
【Fターム(参考)】