JP2009512030A - Duplicate object graph - Google Patents
Duplicate object graph Download PDFInfo
- Publication number
- JP2009512030A JP2009512030A JP2008534815A JP2008534815A JP2009512030A JP 2009512030 A JP2009512030 A JP 2009512030A JP 2008534815 A JP2008534815 A JP 2008534815A JP 2008534815 A JP2008534815 A JP 2008534815A JP 2009512030 A JP2009512030 A JP 2009512030A
- Authority
- JP
- Japan
- Prior art keywords
- computer
- machine
- computers
- machines
- local
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 133
- 238000000034 method Methods 0.000 claims description 77
- 238000004891 communication Methods 0.000 claims description 46
- 238000012545 processing Methods 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 20
- 238000012986 modification Methods 0.000 description 34
- 230000004048 modification Effects 0.000 description 34
- 238000011980 disaster recovery test Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 22
- 230000006870 function Effects 0.000 description 15
- 239000003607 modifier Substances 0.000 description 14
- 230000008859 change Effects 0.000 description 13
- 230000008901 benefit Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003362 replicative effect Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
少なくとも1つのアプリケーションプログラム(50)が、各々がローカルメモリを有する複数のコンピュータM1、M2....Mn上で同時に実行されるマルチコンピュータ環境において幾つかのメモリロケーションだけの更新が開示される。各ローカルメモリにおいて、各々がプリミティブフィールド(11)を含むオブジェクトA及びBが開示される。しかしながら、アプリケーションプログラム(50)の同時オペレーションは、他の全マシーンに後で複製しなくてはならない1つのマシーンにおける「非プリミティブ」リファレンスフィールド(10)を生じることができる。しかしながら、リファレンスフィールド(10)は、1つのマシーンのローカルメモリ内の別のオブジェクト(H)を参照し、よって、対応するオブジェクト(T、K)を互いのマシーンのローカルメモリ内に作成して、対応する非プリミティブフィールド(10)によって参照しなくてはならない。
【選択図】図6At least one application program (50) includes a plurality of computers M1, M2,. . . . An update of only a few memory locations in a multi-computer environment running concurrently on Mn is disclosed. In each local memory, objects A and B each containing a primitive field (11) are disclosed. However, simultaneous operation of the application program (50) can result in a “non-primitive” reference field (10) on one machine that must be later replicated to all other machines. However, the reference field (10) refers to another object (H) in the local memory of one machine, thus creating a corresponding object (T, K) in the local memory of each machine, Must be referenced by the corresponding non-primitive field (10).
[Selection] Figure 6
Description
本発明は、コンピュータ処理に関し、詳細には、通信ネットワークを介して相互接続された複数のコンピュータの同時オペレーションに関する。 The present invention relates to computer processing, and in particular, to the simultaneous operation of multiple computers interconnected via a communication network.
本出願人名で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)でも更に詳細に開示されている。上記の先願の各々の明細書の内容は、全ての目的において相互参照により本明細書に組み込まれる。 In the international patent application number PCT / AU2005 / 000580 (Attorney Docket No. 5027F-WO) published in WO 2005/103926 (corresponding to US patent application No. 11 / 111,946 and publication number 2005-0262313) in the name of the present applicant Discloses how different portions of an application program that are described to run only on a single computer can run on corresponding different computers of the plurality of computers at substantially the same time. This simultaneous operation is not commercially used as of the priority date of this application. "Computer Architecture Method of Operation for Multi-Computer Distributed Processing and Co-Organized Memory and Asset Handling" Patent Methodology for the United States: "Computer-Architecture Method for Memory and Asset Processing" PCT / AU2006 / 000532 in the international patent application number PCT / AU2005 / 001641 (Attorney Docket No. 5027F-D1-WO) to which 11/259985 corresponds and in the name of the applicant not published on the priority date of this application (Attorney Docket No. 5027F-D2-WO) is also disclosed in more detail. The contents of each specification of the above prior applications are incorporated herein by cross-reference for all purposes.
簡潔に述べると、上述の特許明細書では、単一のコンピュータ上でのみ動作するように記述された少なくとも1つのアプリケーションプログラムが、独立したローカルメモリを各々が備えた幾つかのコンピュータ上で同時に動作できることが開示されている。このプログラムのオペレーションに必要なメモリロケーションは、各コンピュータの独立したローカルメモリに複製される。アプリケーションプログラムがいずれかの複製されたメモリロケーションに新しいデータを書き込む度に、当該新しいデータが送信され、各コンピュータの各対応するメモリロケーションに記憶される。従って、伝送遅延の可能性は別として、各コンピュータは、そのコンテンツが互いのコンピュータのローカルメモリと実質的に同じであり、且つこれを維持するよう更新されるローカルメモリを有する。全てのアプリケーションプログラムは、一般に、新しいデータが書き込まれるよりも遙かに頻繁にデータを読み取るので、上述の構成により、コンピュータ処理速度における相当な利点を達成することが可能になる。詳細には、こうした方策によって、商品通信ネットワークによって相互接続された2つ又はそれ以上の汎用コンピュータが、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラム下で同時に実行し動作することが可能になる。 Briefly stated, in the above-mentioned patent specification, at least one application program written to run only on a single computer runs simultaneously on several computers, each with independent local memory. It is disclosed that it can be done. The memory location required for the operation of this program is replicated to an independent local memory on each computer. Each time an application program writes new data to any replicated memory location, the new data is transmitted and stored in each corresponding memory location on each computer. Thus, apart from the possibility of transmission delay, each computer has a local memory whose contents are updated to be substantially the same as and maintain each other's computer's local memory. Since all application programs generally read data much more frequently than new data is written, the above arrangement allows a significant advantage in computer processing speed to be achieved. In particular, these measures allow two or more general purpose computers interconnected by a commodity communication network to run and operate simultaneously under an application program written to run only on a single computer. Is possible.
JAVA(登録商標)及びMICROSOFT.NETを含むよりハイレベルの言語は、2つのタイプのメモリロケーション又はフィールドを有する。これらの第1のタイプは、いわゆる「プリミティブ」フィールドであり、数字又は文字などの英数字データを包含する。このコンテンツは、単に別のプリミティブフィールドにコピーすることによって容易に複写される。フィールドの第2タイプは、一般にリファレンスフィールドと呼ばれる「非プリミティブ」フィールドであり、本質的に別のメモリロケーション又は別のオブジェクトへの「ポインタ」を包含する。プログラミング言語は、1つ又はそれ以上のポインタを使用して、コンピュータのオペレーションを参照アドレスにリダイレクトする。ポインタが模倣的にコピーされた場合、該ポインタは、他のマシーンにおける同一のメモリロケーションを指すことになるが、これらのロケーションは、同じメモリコンテンツを有する場合もあり、或いは有さない場合もある。 JAVA (registered trademark) and MICROSOFT. Higher level languages including NET have two types of memory locations or fields. These first types are so-called “primitive” fields and contain alphanumeric data such as numbers or letters. This content is easily duplicated by simply copying it to another primitive field. The second type of field is a “non-primitive” field, commonly referred to as a reference field, which essentially contains a “pointer” to another memory location or another object. Programming languages use one or more pointers to redirect computer operation to a reference address. If the pointer is copied in a mimicry, it will point to the same memory location on other machines, but these locations may or may not have the same memory content. .
本発明の根源は、マルチコンピュータシステムにおける非プリミティブフィールドの複製を容易にし、これによって実質的に同一のメモリ構造及びコンテンツの所望の目標に可能な限り近づけることを可能にする要求である。 The root of the present invention is a requirement that facilitates the duplication of non-primitive fields in a multi-computer system, thereby making it as close as possible to the desired goal of substantially the same memory structure and content.
本発明の第1の態様によれば、少なくとも1つのアプリケーションプログラムの異なる部分が、通信ネットワークを介して相互接続された複数のコンピュータの異なるコンピュータ上で同時に実行されるマルチコンピュータ環境において、複写されたオブジェクトの非プリミティブフィールドを複製する方法が開示され、該方法は、
(i)コンコーダンステーブルを作成し、複数のコンピュータのいずれか1つにおいて存在する各オブジェクトについて、コンコーダンステーブルへのエントリをオブジェクトに対する各リファレンスに対応させる段階と、
(ii)コンコーダンステーブルにおける各エントリが、1つのマシーンのオブジェクトによって参照されるローカルメモリオブジェクトへのローカルポインタを包含しており、各コンピュータにおいてコンコーダンステーブルを複製するか、或いは、サーバーコンピュータ内に存在する全マシーンに対する単一のコンコーダンステーブルの対応する部分に各コンピュータがアクセスできるようにする段階と、
(iii)対応する非プリミティブフィールド及びローカルオブジェクトを他の各マシーンに指定させ、対応するローカルメモリオブジェクトの対応するローカルポインタを1つ又は複数のテーブルに入力する段階とを含む。
According to a first aspect of the present invention, different portions of at least one application program are copied in a multi-computer environment that is executed simultaneously on different computers of a plurality of computers interconnected via a communication network. A method for replicating a non-primitive field of an object is disclosed, the method comprising:
(I) creating a concordance table and, for each object present in any one of the plurality of computers, correlating an entry in the concordance table with each reference to the object;
(Ii) Each entry in the concordance table contains a local pointer to a local memory object referenced by an object on one machine and either replicates the concordance table on each computer or exists in the server computer Allowing each computer to access the corresponding part of a single concordance table for all machines;
(Iii) causing each other machine to specify a corresponding non-primitive field and a local object, and entering a corresponding local pointer of the corresponding local memory object into one or more tables.
本発明の第2の態様によれば、少なくとも1つのアプリケーションプログラムの異なる部分が、通信ネットワークを介して相互接続された複数のコンピュータの異なるコンピュータ上で同時に実行されるマルチコンピュータシステムが開示され、該コンピュータのいずれか1つにおいて作成された各非プリミティブフィールドについて、全コンピュータによってアクセス可能か或いは各コンピュータに複製されたコンコーダンステーブルへの対応するエントリが存在し、テーブルエントリは、1つのコンピュータの非プリミティブフィールドによって参照されたローカルメモリオブジェクトへのローカルポインタを包含し、コンピュータは互いに、対応する非プリミティブフィールド及びローカルオブジェクトを指定し、対応するローカルメモリオブジェクトの対応するローカルポインタは、1つ又は複数のコンコーダンステーブルに入力される。 According to a second aspect of the present invention, there is disclosed a multi-computer system in which different parts of at least one application program are executed simultaneously on different computers of a plurality of computers interconnected via a communication network, For each non-primitive field created on any one of the computers, there is a corresponding entry in the concordance table that is accessible by all computers or replicated to each computer, and the table entry is a non-primitive of one computer Contains a local pointer to the local memory object referenced by the field, and the computer specifies each other a corresponding non-primitive field and a local object, and a corresponding local memory Corresponding local pointer Li object is input to one or more of concordance tables.
本発明の第3の態様によれば、通信ネットワークを介して相互接続され、上記の方法を確実に実行するよう動作可能な複数のコンピュータが開示される。 According to a third aspect of the present invention, there are disclosed a plurality of computers interconnected via a communication network and operable to reliably perform the above method.
本発明の第4の態様によれば、記憶媒体内に記憶され、上記の方法を複数のコンピュータが実行できるよう動作可能なプログラム命令のセットを含むコンピュータプログラム製品が開示される。 According to a fourth aspect of the invention, there is disclosed a computer program product comprising a set of program instructions stored in a storage medium and operable to allow a plurality of computers to perform the above method.
本発明の第5の態様によれば、上記の方法を実行するか、或いは上記のコンピュータシステムを形成するために、少なくとも1つの他のコンピュータと協働するように適合された単一のコンピュータが開示される。 According to a fifth aspect of the invention, there is provided a single computer adapted to cooperate with at least one other computer to perform the above method or form the above computer system. Disclosed.
JAVA(登録商標)言語に関連して実施形態を説明するが、本発明はこの言語に限定されず、特に、MICROSOFT.NETプラットフォーム及びアーキテクチャ(Visual Basic、VisualC、VisualC++、及びVisualC#)、FORTRAN、C、C++、COBOL、BASIC及び同様のものを含む他の言語(手続き、宣言、及びオブジェクト指向言語を含む)と共に使用できることは当業者には明らかであろう。 Although embodiments will be described in relation to the JAVA® language, the present invention is not limited to this language, and in particular, MICROSOFT. Can be used with other languages (including procedural, declarative, and object-oriented languages), including NET platforms and architectures (Visual Basic, VisualC, VisualC ++, and VisualC #), FORTRAN, C, C ++, COBOL, BASIC, and the like Will be apparent to those skilled in the art.
図1Aに示すような仮想マシーンを作成することによってアプリケーションの特定の言語を利用する単一のコンピュータ又はマシーン(種々の製造業者のいずれかによって作製され、種々の異なる言語のいずれかで動作するオペレーティングシステム(又は等価な制御ソフトウェア又は他のメカニズム)を有する)を提供することは、従来技術で知られている。 A single computer or machine that utilizes a particular language of an application by creating a virtual machine as shown in FIG. 1A (an operating system created by any of a variety of manufacturers and operating in any of a variety of different languages Providing a system (or equivalent control software or other mechanism) is known in the prior art.
図1Aのコード及びデータ並びに仮想マシーン設定又は構成は、JAVA(登録商標)言語で記述され且つJAVA(登録商標)仮想マシーン61内で実行されるアプリケーションコード50の形態を取る。従って、アプリケーションの目的とする言語がJAVA(登録商標)言語である場合、マシーン製造業者及びコンピュータ又はマシーンの内部の詳細に関わらず、JAVA(登録商標)コードを操作できるJAVA(登録商標)仮想マシーンが使用される。更なる詳細については、引用により本明細書に組み込まれる、米国のSun Microsystems Inc.のT.Lindholm及びF.Yellinによる「The JAVA(登録商標) Virtual Machine Specification」 2nd Edition(JAVA(登録商標)仮想マシーン仕様) 第2版を参照されたい。
The code and data and virtual machine settings or configuration of FIG. 1A take the form of
図1Aのこの従来技術の構成は、図1Bに見られるように、便宜上「分散型ランタイム」又は「分散型ランタイムシステム」DRT71と呼ばれる付加的な機能を提供することによって、本発明の実施形態に従って修正される。
This prior art configuration of FIG. 1A is in accordance with an embodiment of the present invention by providing an additional function referred to as a “distributed runtime” or “distributed runtime system”
図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(登録商標)仮想マシーンのいずれか、或いは他の何らかの言語、仮想マシーン、マシーン又はオペレーティング環境に限定されないことは、本明細書に提示される説明に照らせば理解されるであろう。
In FIGS. 1B and 1C, the
図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は、トランスポート、プロトコル、及びリンクが独立した通信を提供する。
FIG. 1C shows the configuration of the JAVA® virtual machine, each shown in FIG. 1B, in a modified form. Also in this case, the
1つの共通アプリケーションプログラム又はアプリケーションコード50及びその実行可能バージョン(場合によっては修正のある)は、複数のコンピュータ又はマシーンM1、M2...Mn全体で同時に又は並行して実行している。アプリケーションプログラム50は、単一のマシーン又はコンピュータ上で実行するように(或いは、単一のコンピュータオペレーションをエミュレートする上述の特許出願のマルチコンピュータシステム上で動作するように)記述されている。本質的には、修正された構造は、個々のマシーンの各々上で同一のメモリ構造及びコンテンツを複製するものである。
One common application program or
用語「共通アプリケーションプログラム」は、単一のマシーン上で動作するよう記述され、複数のコンピュータ又はマシーンM1、M2...Mnの各々全体又は一部で、或いは任意選択的に複数のコンピュータ又はマシーンM1、M2...Mnのあるサブセットの各々でロード及び/又は実行されるアプリケーションプログラム又はアプリケーションプログラムコードを意味すると理解すべきである。言い換えると、アプリケーションコード50において表された共通アプリケーションプログラムが存在する。これは、各々が個々に修正されてアプリケーションプログラム又はプログラムコードの修正されたコピー又はバージョンを生成する、単一のコピー又は複数の同一コピーのいずれかである。次いで、各コピー又はインスタンスは、対応するマシーン上で実行する準備がなされている。これらが修正された後の時点では、これらは、同様のオペレーションを実施し、互いに一貫性があり且つ整合性があるように動作する点で共通である。任意選択的に、本発明の実施形態を実施する複数のコンピュータ、マシーン、情報アプライアンス、又は同様のものは、本発明の実施形態を実施していない他のコンピュータ、マシーン、情報アプライアンス、又は同様のものと接続或いは結合することができることは理解されるであろう。
The term “common application program” is written to run on a single machine and includes a plurality of computers or machines M1, M2,. . . Mn in whole or in part, or optionally a plurality of computers or machines M1, M2. . . It should be understood to mean an application program or application program code that is loaded and / or executed on each subset of Mn. In other words, there is a common application program represented in the
同じアプリケーションプログラム50(例えば、並列マージソート、又は計算流体力学アプリケーション、又はデータマイニングアプリケーション)は、各マシーン上で実行されるが、当該アプリケーションプログラムの実行可能コードは、必要に応じて各マシーン上で修正され、各マシーン上の各実行インスタンス(コピー又は複製)が、他のマシーン上のそれぞれのインスタンス(又はコピー又は複製)のオペレーションと当該特定のマシーン上のローカルオペレーションを調整し、これらが、一貫性があり且つ整合性のある調整された様態で共に機能し、アプリケーションの1つのグローバルインスタンス(すなわち、「メタ−アプリケーション」)であるように見せる。 The same application program 50 (eg, a parallel merge sort, or computational fluid dynamics application, or data mining application) is run on each machine, but the executable code for that application program is run on each machine as needed. Modified, each execution instance (copy or duplicate) on each machine coordinates the operation of the respective instance (or copy or duplicate) on the other machine with the local operation on that particular machine, which is consistent It works together in a coordinated manner that is consistent and consistent, and appears to be one global instance of an application (ie, a “meta-application”).
同じ又は実質的に同じアプリケーションコードのコピー又は複製は各々、相互運用し且つ接続されたマシーン又はコンピュータの対応するコンピュータにロードされる。各マシーン又はコンピュータの特徴は異なる可能性があるので、アプリケーションコード50は、ロード前、又はロードプロセス中に修正し、或いは、幾つかの欠点はあるが、ロードプロセス後に修正し、各マシーン上でのアプリケーションコードのカスタマイズしたもの又は修正物を提供することができる。種々のマシーン上のプログラム又はアプリケーションコード間の何らかの相違点は、本明細書で説明される相互運用性、一貫性、及び整合性に対する他の要件が維持可能な限り許容することができる。以下で明らかになるように、マシーンM1、M2...Mnの各々、及びすなわち、マシーンM1、M2...Mnの全てが、同じ又は実質的に同じアプリケーションコード50を有し、通常は、マシーン固有とすることができる修正を伴う。
Each copy or duplicate of the same or substantially the same application code is loaded into a corresponding computer of the interoperating and connected machine or computer. Because the characteristics of each machine or computer can be different, the
各マシーンM1、M2...Mn上でのアプリケーションコード50(又はその関連部分)のロード前、又はロード中、又は実行の前のあらゆる時点で、各アプリケーションコード50は、同じ規則(又は僅かな最適化変更が各モディファイア51/1、51/2...51/n内で許容されているので実質的に同じ規則)に従って対応するモディファイア51によって修正される。
Each machine M1, M2. . . At any point before or during loading of application code 50 (or related parts) on Mn, or before execution, each
マシーンM1、M2...Mnの各々は、同じ(又は実質的に同じ又は類似の)モディファイア51(幾つかの実施形態では、分散型ランタイム又はDRT71として実装され、他の実施形態では、アプリケーションコード及びデータ50への添付物として実装され、更に、JAVA(登録商標)仮想マシーン自体内に実装することができる)で動作する。従って、マシーンM1、M2...Mnの全ては、必要とされる各修正に対して同じ(又は実質的に同じ又は類似の)モディファイア51を有する。例えば、メモリ管理及び複製のため、初期化のため、ファイナライズのため、及び/又は同期化のために、別の修正が必要になる可能性がある(但し、全ての実施形態において、これらの修正タイプの全てが必要とされるわけではない)。
Machine M1, M2. . . Each Mn is implemented as the same (or substantially the same or similar) modifier 51 (in some embodiments, as a distributed runtime or
モディファイア51及び分散型ランタイム71の別の実施が存在する。例えば、図1Cの破線によって示されるように、モディファイア51は、分散型ランタイム71のコンポーネントとして、又はこの内部に実装することができ、従ってDRT71は、モディファイア51の機能及びオペレーションを実施することができる。或いは、モディファイア51の機能及びオペレーションは、コード及びデータ50内、又はJAVA(登録商標)仮想マシーン自体内など、DRT71を実装するのに使用される構造、ソフトウェア、ファームウェア、又は他の手段の外部で実施することができる。1つの実施形態では、モディファイア51及びDRT71の両方が、DRT及びモディファイアの機能を提供する単一のコンピュータプログラムコードに実装され又は記述される。この場合、モディファイア機能及び構造は、実際にはDRTに含まれる。どのように実装されるかに関係なく、モディファイア機能及び構造は、アプリケーションコードプログラムの実行可能なコードを修正する役割を担い、分散型ランタイム機能及び構造は、コンピュータ又はマシーン間の通信を実施する役割を担う。1つの実施形態における通信機能は、各マシーン上のDRTのコンピュータプログラムコード内の中間プロトコルレイヤを介して実施される。DRTは、例えば、JAVA(登録商標)言語で通信スタックを実施することができ、送信制御プロトコル/インターネットプロトコル(TCP/IP)を使用して、マシーン間の通信又は通話を提供することができる。これらの機能又はオペレーションは、多様な方法で実施することができ、本明細書に提供される説明の観点から、これらの機能又はオペレーションが構造及び/又は手順要素間、或いはコンピュータプログラムコード又はデータ構造間に厳密にどのように実施又は分割されるかについては、本発明には重要ではなく、不可欠なものでもない点は理解されるであろう。
There are other implementations of
しかしながら、図1に示された構成では、複数の個々のコンピュータ又はマシーンM1、M2...Mnが提供され、その各々は、通信ネットワーク53又は他の通信リンクを介して相互接続される。各個々のコンピュータ又はマシーンは、対応するモディファイア51を備える。各個々のコンピュータはまた、通信ネットワークに接続する通信ポートを備えている。通信ネットワーク53又は経路は、いずれかの電子信号方式、データ、又はデジタル通信ネットワーク又は経路とすることができ、インターネットを介したネットワーク接続、或いはETHERNET(登録商標)又はINFINIBAND及びこれらの拡張及び改良を含む何らかの共通ネットワーク構成といった、低速で、従って低コストの通信経路であるのが好ましい。好ましくは、コンピュータは、通信ネットワーク53に接続する1つ又はそれ以上の公知の通信ポート(CISCO Power Connect 5224 Switchなど)を備えている。
However, in the configuration shown in FIG. 1, a plurality of individual computers or machines M1, M2,. . . Mn is provided, each of which is interconnected via
上述の構成の結果として、マシーンM1、M2、...、Mnの各々が、例えば、10MBの内部又はローカルメモリ容量を有する場合、全体としてアプリケーションコード50に利用可能な総メモリは、予想されるようにマシーンの数(n)×10MBではない。これは、n個のマシーン全ての内部メモリ容量の加法的な組合せでもない。そうではなく、10MBか、又は10MBよりも大きいがn×10MBよりも小さいある数である。マシーンの内部メモリ容量が異なる場合、これは許容可能であり、ひいては1つのマシーンの内部メモリが、マシーンの少なくとも1つの他のマシーンの内部メモリ容量よりも小さい場合には、マシーンのいずれかの最も小さなメモリのサイズは、このようなメモリ(又はその一部)が「共通」メモリ(すなわち、マシーンM1...Mnの各々の類似の等価メモリ)として扱われるとき、又は共通アプリケーションコードを実行するのに使用されるときに、マシーンの最大メモリ容量として用いることができる。
As a result of the above configuration, the machines M1, M2,. . . , Mn each has, for example, 10 MB of internal or local memory capacity, the total memory available to the
しかしながら、各マシーンの内部メモリが処理される方式は、当初は性能に関する潜在的な制約となる可能性があるが、これがどのような改良されたオペレーション及び性能をもたらすかについては以下で明らかになるであろう。当然、各マシーンM1、M2...Mnは、プライベート(すなわち、「非共通の」)内部メモリ容量を有する。マシーンM1、M2、...、Mnのプライベート内部メモリ容量は通常はほぼ等しいが、必須ではない。例えば、マルチコンピュータシステムが、異なるエンティティによって所有又は操作される既存のコンピュータ、マシーン、又は情報アプライアンスを使用して実施又は編成されている場合、内部メモリ容量は全く異なる場合がある。他方、新しいマルチコンピュータシステムが実装されている場合、各マシーン又はコンピュータは、同一の内部メモリ容量を有するように選択されるのが好ましいが、これは必須ではない。 However, the way in which each machine's internal memory is processed may initially be a potential performance constraint, but it will become clear below what improved operation and performance this will bring. Will. Of course, each machine M1, M2. . . Mn has a private (ie, “non-common”) internal memory capacity. Machines M1, M2,. . . , Mn's private internal memory capacity is usually approximately equal, but not required. For example, if a multi-computer system is implemented or organized using existing computers, machines, or information appliances owned or operated by different entities, the internal memory capacity may be quite different. On the other hand, if a new multi-computer system is implemented, each machine or computer is preferably selected to have the same internal memory capacity, but this is not required.
各マシーンの独立したローカルメモリは、そのマシーン上で実行されるアプリケーションプログラムの当該部分に割り当てられたマシーンの総メモリの当該部分だけを表わしている点は理解されるべきである。従って、他のメモリは、アプリケーションプログラム50に関係のないマシーンのオペレーティングシステム及び他のコンピューテーションタスクが占有することになる。
It should be understood that each machine's independent local memory represents only that portion of the machine's total memory allocated to that portion of the application program running on that machine. Thus, other memory is occupied by the machine's operating system and other computing tasks unrelated to the
プロトタイプマルチコンピュータシステムの非商用オペレーションは、システム内のあらゆるマシーン又はコンピュータが、あらゆる可能なメモリロケーション(例えば、そのローカル複製を有する)を利用しないか、或いはこれを参照する必要がないことを示す。結果として、各マシーンのローカルメモリが当該マシーンのオペレーションに十分である限り、何らかの他のマシーンに同一の各マシーンのローカルメモリがなくともマルチコンピュータシステムを動作させることが可能となる。すなわち、特定のマシーンが、幾つかの特定のメモリロケーション(例えばそのローカル複製を有する)を参照する必要がない場合、その特定のメモリロケーションが当該特定のマシーンにおいて複製されないことは問題ではない。 Non-commercial operation of a prototype multi-computer system indicates that every machine or computer in the system does not use or need to reference every possible memory location (eg, having its local replica). As a result, as long as the local memory of each machine is sufficient for the operation of the machine, the multicomputer system can be operated without any other machine having the same local memory of each machine. That is, if a particular machine does not need to reference some particular memory location (eg, having its local replica), it does not matter that that particular memory location is not replicated on that particular machine.
また、各マシーンにおいて及び接続され又は結合された複数のマシーン、コンピュータ、又は情報アプライアンスM1、M2、...、Mnのコンステレーション又はネットワーク全体にわたって、所望の性能レベルを達成するように各マシーンの内部メモリ量を選択することが有利とすることができる。記載されたこれらの内部及び共通メモリを考慮すると、マシーン間に共通とすることができるメモリ量に制限がないことは、本明細書に示される説明に照らせば明らかであろう。 Also, a plurality of machines, computers or information appliances M1, M2,. . . , It may be advantageous to select the amount of internal memory for each machine to achieve the desired level of performance across the Mn constellation or network. In view of these described internal and common memories, it will be apparent in light of the description provided herein that there is no limit to the amount of memory that can be common between machines.
幾つかの実施形態では、複数の個々のコンピュータ又はマシーンの一部又は全ては、単一のハウジング又はシャーシ(Hewlett−Packard Development Company、Intel Corporation、IBM Corporationなどによって製造された、いわゆる「ブレードサーバー」など)、或いは、インテル、AMD、又はその他によって製造され、もしくは単一のプリント基板又は単一のチップ又はチップセット内に実装されたマルチプロセッサ(例えば、対称マルチプロセッサ又はSMP)又はマルチコアプロセッサ(例えば、デュアルコアプロセッサ及びチップマルチスレッディングプロセッサ)内に包含することができる。同様に、マルチコア、マルチCPU、又は他の処理論理回路を有するコンピュータ又はマシーンも含まれる。 In some embodiments, some or all of a plurality of individual computers or machines may be a single housing or chassis (a so-called “blade server” manufactured by Hewlett-Packard Development Company, Intel Corporation, IBM Corporation, etc.). Or a multiprocessor (eg, symmetric multiprocessor or SMP) or multicore processor (eg, symmetric multiprocessor or SMP) manufactured by Intel, AMD, or others, or implemented in a single printed circuit board or a single chip or chipset , Dual core processor and chip multithreading processor). Similarly, a computer or machine having a multi-core, multi-CPU, or other processing logic is included.
非JAVA(登録商標)言語又はアプリケーションコード環境で実施されるときには、一般化されたプラットフォーム、及び/又は仮想マシーン及び/又はマシーン及び/又はランタイムシステムは、当該プラットフォーム及び/又は仮想マシーン及び/又はマシーン及び/又はランタイムシステム環境の言語(例えば、限定ではないが、ソース−コード言語、中間−コード言語、オブジェクト−コード言語、マシーン−コード言語、及びいずれかの他のコード言語のいずれか1つ又はそれ以上を含む場合がある)でアプリケーションコード50を動作させ、マシーン又はプロセッサ製造業者及びマシーンの内部詳細に関係なく、プラットフォーム、及び/又は仮想マシーン及び/又はマシーン及び/又はランタイムシステム及び/又は言語アーキテクチャを利用することができる。プラットフォーム及び/又はランタイムシステムが、仮想マシーン及び非仮想マシーンソフトウェア及び/又はファームウェアアーキテクチャ、並びにハードウェア及び直接ハードウェアコード化アプリケーション及び実装を含むことができる点は理解されるであろう。
When implemented in a non-Java® language or application code environment, a generalized platform and / or virtual machine and / or machine and / or runtime system may be the platform and / or virtual machine and / or machine. And / or the language of the runtime system environment (e.g., without limitation, any one of the source-code language, intermediate-code language, object-code language, machine-code language, and any other code language or The
仮想マシーン又は抽象マシーン環境のより一般的なセットにおいて、並びに現在及び将来のコンピュータ及び/又はコンピュータマシーン及び/又は情報アプライアンス又は処理システムにおいて、クラス及び/又はオブジェクトのいずれかを利用しない、或いは利用を必要としない場合があるが、本発明の構造、方法、及びコンピュータプログラム及びコンピュータプログラム製品は依然として適用可能である。クラス及び/又はオブジェクトのいずれかを利用しないコンピュータ及び/又はコンピュータマシーンの実施例は、例えば、Intel Corporation及びその他によって製造された×86コンピュータアーキテクチャ、Sun Microsystems,Inc及びその他によって製造されたSPARCコンピュータアーキテクチャ、International Business Machines Corporation及びその他によって製造されたPower PCコンピュータアーキテクチャ、及びApple Computer, Inc及びその他によって製作されたパーソナルコンピュータ製品を含む。 Do not use or use any of the classes and / or objects in a more general set of virtual or abstract machine environments and in current and future computers and / or computer machines and / or information appliances or processing systems Although not required, the structure, method, and computer program and computer program product of the present invention are still applicable. Examples of computers and / or computer machines that do not utilize either classes and / or objects include, for example, x86 computer architecture manufactured by Intel Corporation and others, SPARC computer architecture manufactured by Sun Microsystems, Inc and others. And Power PC computer architecture manufactured by International Business Machines Corporation and others, and personal computer products manufactured by Apple Computer, Inc and others.
クラス又はオブジェクトの概念を利用せずに実装されたコンピュータ、コンピュータマシーン、情報アプライアンス、及び仮想マシーン又は仮想コンピュータ環境のこれらのタイプでは、例えば、手続き型言語又は他の言語についての基本データタイプ(整数データタイプ、浮動小数点データタイプ、長データタイプ、ダブルデータタイプ、ストリングデータタイプ、文字データタイプ、及びブールデータタイプなど)、構造化データタイプ(アレイ及びレコードなど)、派生タイプ、又は他のコードもしくはデータ構造を含み、関数、ポインタ、コンポーネント、モジュール、構造、リファレンス、及びユニオンなどの環境を含むように一般化することができる。必要なときに組み合わせて適用されるこれらの構造及び手続きは、コンピュータ又はコンピュータ環境のメモリロケーション、アドレス範囲、オブジェクト、クラス、資産、資源、又はいずれかの他の手続き又は構造的態様が、必要な場合には、複数の個々のマシーンM1、M2...Mnにわたって調整され整合性があり且つ一貫性のあるようにして作成、維持、動作、及び非動作もしくは削除が行われるコンピュータ環境を維持する。 In these types of computers, computer machines, information appliances, and virtual machines or virtual computer environments implemented without using the concept of classes or objects, for example, a basic data type (integer for procedural languages or other languages) Data types, floating point data types, long data types, double data types, string data types, character data types, and Boolean data types), structured data types (such as arrays and records), derived types, or other codes or Contains data structures and can be generalized to include environments such as functions, pointers, components, modules, structures, references, and unions. These structures and procedures applied in combination when needed may require a memory location, address range, object, class, asset, resource, or any other procedure or structural aspect of the computer or computing environment. In some cases, a plurality of individual machines M1, M2. . . Maintain a computing environment that is coordinated across Mn, created, maintained, operated, and deactivated or deleted in a consistent and consistent manner.
アプリケーションコード50のこの分析又は精査は、アプリケーションプログラムコード50のロードの前、又はアプリケーションプログラムコード50ロード処理中、又はアプリケーションプログラムコード50ロード処理の後(或いはこれらのある組合せ)でも行なうことができる。これは、アプリケーションコードが、付加的な命令を備え、及び/又は他の場合には、意味保護プログラムマニピュレーションによって修正され、及び/又は任意選択的に入力コード言語から異なるコード言語に翻訳(例えばソース−コード言語又は中間−コード言語からオブジェクト−コード言語又はマシーン−コード言語)することができる点で、インストゥルメンテーション、プログラム変換、翻訳、又はコンパイル手続きに形容することができる。この文脈では、用語「「コンパイル」は、通常又は従来的に、コード又は言語における変更、例えばソースコードからオブジェクトコード又は1つの言語から別の言語への変更を包含することは理解される。しかしながら、本発明では、用語「コンパイル」(及びその文法上等価な語句)はこれに限定されず、同じコード又は言語内の修正をも含む又は包含することができる。例えば、コンパイル及びその等価な語句は、通常のコンパイル(例えば、限定ではなく例証として、ソース−コードからオブジェクトコードになど)と、ソース−コードからソース−コードへのコンパイル、並びにオブジェクト−コードからオブジェクトコードへのコンパイル、及びいずれかの変更された組合せを包含することは理解される。「疑似オブジェクト−コード」の形式のいわゆる「中間−コード言語」も含まれる。
This analysis or scrutiny of the
限定ではなく例証として、1つの実施形態では、アプリケーションコード50の分析又は精査は、オペレーティングシステムがハードディスクもしくは他の記憶デバイス、媒体、又はソースからアプリケーションコード50を読み取り、これをメモリにコピーしてアプリケーションプログラムコードの実行を始める準備をすることなどによって、アプリケーションプログラムコードのロード中に行なわれる。別の実施形態では、JAVA(登録商標)仮想マシーンにおいて、分析又は精査は、java(登録商標).lang.ClassLoader.loadClass method(例えば「java(登録商標).lang.ClassLoader.loadClass()」)のクラスロード処理中に行なうことができる。
By way of example and not limitation, in one embodiment, the analysis or review of
代替的に、又はこれに加えて、アプリケーションコード50(又はアプリケーションコードの一部)の分析又は精査は、オペレーションシステムがアプリケーションコードをメモリにロードした後など、アプリケーションプログラムコードロード処理後でも、或いは、例えば、JAVA(登録商標)仮想マシーンがアプリケーションコードを「java(登録商標).lang.ClassLoader.loadClass()」方法及び任意選択的に開始された実行を介して仮想マシーンにロードした後など、任意選択的にアプリケーションプログラムコードの関連した対応部分の実行が起動された後でも行うことができる。 Alternatively or in addition, analysis or review of application code 50 (or a portion of application code) may be performed after application program code loading processing, such as after the operating system has loaded application code into memory, or For example, after the JAVA® virtual machine has loaded the application code into the virtual machine via the “java®.lang.ClassLoader.loadClass ()” method and optionally initiated execution Alternatively, it can be performed even after execution of the corresponding part of the application program code is activated.
コンピュータ技術分野の当業者であれば、限定ではないが、インストゥルメンテーション、プログラム変換、翻訳、又はコンパイル手段及び/又は方法を含む、コンピュータコードの修正に使用できる種々の実施可能な技術を認識しているであろう。 Those skilled in the computer arts will recognize various possible techniques that can be used to modify computer code, including but not limited to instrumentation, program conversion, translation, or compilation means and / or methods. Will be.
1つのこのような技術は、アプリケーションコードの言語の先の変更又は結果として生じる変更を伴うことなくアプリケーションコードへの修正を行なうものである。別のこのような技術は、オリジナルコード(例えば、JAVA(登録商標)言語ソース−コード)をJAVA(登録商標)バイトコードなどの中間表現(又は中間−コード言語、又は疑似コード)に変換するものである。この変換が行なわれると、バイトコードに対し修正が行なわれ、その結果、変換を逆にすることができる。これは、改良されたJAVA(登録商標)コードの所望の結果をもたらす。 One such technique is to make modifications to the application code without any previous or resulting change in the language of the application code. Another such technique is to convert original code (eg, JAVA language source-code) into an intermediate representation (or intermediate-code language, or pseudocode) such as JAVA® bytecode. It is. When this conversion is performed, the bytecode is modified so that the conversion can be reversed. This yields the desired result of the improved JAVA code.
別の実施可能な技術は、アプリケーションプログラムをソース−コードから直接、或いは前述の中間言語を介して又は何らかの他の中間手段を介してマシーンコードに変換するものである。次に、マシーンコードは、ロード及び実行前に修正される。更に別のこのような技術は、オリジナルコードを修正した後マシーンコードに変換される中間表現に変換するものである。 Another possible technique is to convert the application program into machine code either directly from source-code or via the aforementioned intermediate language or via some other intermediate means. The machine code is then modified before loading and execution. Yet another such technique is to modify the original code into an intermediate representation that is then converted to machine code.
本発明は、全てのこのような修正ルート、及びこのようなルートの2つ、3つ、又はそれ以上の組合せをも包含する。 The present invention also encompasses all such modified routes and combinations of two, three or more such routes.
DRT71又は他のコード修正手段は、個々のマシーンM1、M2...Mnの各々に対してメモリ構造及びコンテンツを作成又は複製する役割を担い、これにより複数のマシーンの相互運用が可能になる。幾つかの実施形態では、この複製されたメモリ構造が同一となる。他の実施形態では、このメモリ構造は、同一である部分と、同一でない他の部分とを有することになる。更に他の実施形態では、メモリ構造は、Big Endian又はLittle Endianフォーマット又は規定など、フォーマット又は記憶規定のみが異なる。
The
必要なときには組み合わせて適用されるこれらの構造及び手続きは、コンピュータ又はコンピュータ環境のメモリロケーション、アドレス範囲、オブジェクト、クラス、資産、資源、又はいずれかの他の手続き又は構造的態様が、必要な場合には、複数の個々のマシーンM1、M2...Mnにわたって調整され整合性があり且つ一貫性のあるようにして作成、維持、動作、及び非動作又は削除が行われるコンピュータ環境を維持する。 These structures and procedures that are applied in combination when needed are memory locations, address ranges, objects, classes, assets, resources, or any other procedure or structural aspect of a computer or computing environment Includes a plurality of individual machines M1, M2. . . Maintain a computing environment that is coordinated across Mn, created, maintained, operated, and deactivated or deleted in a consistent and consistent manner.
従って、用語「1つ」、「単一の」、及び「共通」のアプリケーションコード又はプログラムとは、全てのマシーンM1、M2...Mnが異なる(及び関係のない)プログラムではなく同じプログラム又はコードを動作又は実行しており、言い換えると、同じ又は実質的に同じアプリケーションコードのコピー又は複製が、相互運用し且つ接続されたマシーン又はコンピュータの各々にロードされる状況を含む。 Thus, the terms “one”, “single”, and “common” application code or program refer to all machines M1, M2,. . . Running or executing the same program or code rather than different (and unrelated) programs of Mn, in other words, copies or copies of the same or substantially the same application code are interoperable and connected machines or Includes the situation loaded on each of the computers.
分散型ソフトウェアを利用する従来の構成では、1つのマシーンのソフトウェアから別のマシーンに物理的に位置付けられたメモリへのメモリアクセスは通常、マシーンを相互接続しているネットワークを介して行なわれる。従って、各マシーンのローカルメモリは、いずれかの他のマシーンによってアクセスでき、従って、独立しているとはいえない。しかしながら、別のコンピュータ上に物理的に位置付けられたメモリへの読み取り及び/又は書き込みメモリアクセスは、コンピュータを相互接続している遅いネットワークの使用を必要とするので、これらの構成では、このようなメモリアクセスは、メモリ読み取り/書き込み処理オペレーションおいて、潜在的にはマシーンの中央処理ユニットの106−107サイクルのオーダー(最新のプロセッサ速度とした場合)のかなりの遅延を生じる可能性がある。最終的に、この遅延は、例えば通信ネットワークの速度、帯域幅、及び/又は待ち時間などの多数の要素に依存する。これは、主に、従来技術による構成における複数の相互接続されたマシーンの性能の低下の原因となる。 In conventional configurations utilizing distributed software, memory access from one machine's software to memory physically located on another machine is typically performed via a network interconnecting the machines. Thus, the local memory of each machine can be accessed by any other machine and is therefore not independent. However, read and / or write memory access to memory physically located on another computer requires the use of a slow network interconnecting the computers, so in these configurations such an Memory access can cause significant delays in memory read / write processing operations, potentially on the order of 10 6 -10 7 cycles of the machine's central processing unit (assuming the latest processor speed). . Ultimately, this delay depends on a number of factors, such as the speed, bandwidth, and / or latency of the communication network. This is mainly responsible for the performance degradation of multiple interconnected machines in prior art configurations.
しかしながら、本構成では、全メモリロケーション(又はその一部のサブセット)の現在値が、メモリ読み取りの要求を生じる処理を実行するマシーン上に記憶されるので、メモリロケーション又はデータの全ての読み取りはローカルで満たされる。 However, in this configuration, the current value of all memory locations (or a subset thereof) is stored on the machine executing the process that causes the memory read request, so that all reads of memory locations or data are local. Filled with.
同様に、全メモリロケーション(又はその一部のサブセット)の現在値が、メモリ書き込みの要求を生じる処理を実行するマシーン上に記憶されるので、メモリロケーション又はデータの全ての書き込みはローカルで満たされる。 Similarly, since the current values of all memory locations (or a subset thereof) are stored on the machine that performs the process that produces the memory write request, all writes of the memory location or data are satisfied locally. .
このようなローカルメモリ読み取り及び書き込み処理オペレーションは通常、中央処理ユニットの102−103サイクル内で満たされる。従って、実際には、包含及び/又は書き込みのメモリアクセスの待機が遙かに少ない。また、各マシーンのローカルメモリは、いずれかの他のマシーンがアクセスすることができず、従って、独立しているといえる。 Such local memory read and write processing operations are typically satisfied within 10 2 -10 3 cycles of the central processing unit. Thus, in practice, there is much less waiting for memory access for inclusion and / or writing. Also, the local memory of each machine cannot be accessed by any other machine and is therefore independent.
本発明は、トランスポート、ネットワーク、及び通信経路が独立しており、マシーン又はDRT間の通信がどのように行われるかには依存しない。1つの実施形態では、マシーン又はDRT間の電子メール(Eメール)交換でも通信には十分とすることができる。 The present invention is independent of transport, network, and communication paths and does not depend on how communication between machines or DRTs is performed. In one embodiment, an electronic mail (Email) exchange between machines or DRTs may be sufficient for communication.
上記に関連して、図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つ、又は幾つか、或いは全てによって提供される。
In connection with the above, the machine program M1, M2,..., Which is an integer greater than or equal to 2, the
ここで図3を参照すると、本図は、コンピュータシステムを構成する複数のマシーンのいずれか3つのマシーン、Mn−1、Mn、及びMn+1に対するメモリマップを示している。本明細書に組み込まれた上記の特許明細書に記載される初期化プロセスは、アプリケーションプログラムのオペレーションの開始前に行なわれ、従って、マシーンの各々のメモリコンテンツは、本質的に同一である。図示の特定の実施例では、各マシーンは、2つのオブジェクトA及びBを有し、各オブジェクトは、英数字データを記憶できる2つのプリミティブフィールド11を有する。与えられた特定の実施例では、オブジェクトAの2つのフィールドは、数字7及び9を包含し、オブジェクトBの2つのフィールドは、数字3及び5を包含する。
Referring now to FIG. 3, this figure shows a memory map for any three machines, Mn−1, Mn, and Mn + 1, of the plurality of machines that make up the computer system. The initialization process described in the above patent specification incorporated herein takes place prior to the start of operation of the application program, and therefore the memory content of each of the machines is essentially the same. In the particular embodiment shown, each machine has two objects A and B, and each object has two
上述のように初期化された後、個々のコンピュータの各々は、アプリケーションプログラム5の異なる部分を実行する。各マシーンが、プリミティブフィールド及び非プリミティブフィールドの両方において記憶されることになる改訂データだけを生成することが予想される。このようなフィールドが、英数字データのみを包含するプリミティブフィールドである場合、これらのフィールドは容易にコピーされ、これによって他のマシーンの各々上に複製することができる。しかしながら、図4に示されるように、すなわちマシーンMnは、プリミティブフィールド11とは異なるので二重の境界線で示されるリファレンスフィールド10を有する状況が生じる可能性がある。
After being initialized as described above, each individual computer executes a different part of the
マシーンMnのオブジェクトAの内部には、フィールド10、11、及び12があり、該フィールドは、マシーンMn−1のオブジェクトA内の対応するフィールド30、31、及び32と、マシーンMn+1のオブジェクトA内の対応するフィールド20、21、及び22とを有する。
Inside the object A of the machine Mn, there are
この特定の実施例において、新しいリファレンスフィールド10は、これ自体が2つのプリミティブフィールド11を含む付加的なオブジェクトHへのリファレンスを包含する。図4において、リファレンスフィールド10内には、参照されるオブジェクトの名前Hと、リファレンスフィールド10のコンテンツがプログラムをリダイレクトして、オブジェクトAからオブジェクトHに移動させるようにすることを示す矢印とが共に示されている。従って、コンピュータシステムが実質的に整合性のあるメモリを維持できるように、マシーンMnで生じたメモリ変更を他のマシーン全てに複製する方法に関して問題が生じる。
In this particular embodiment, the
図4に示されるように、マシーンMn−1に関連して、オブジェクトA内にリファレンスフィールド30を有することができるが、マシーンMnのリファレンスフィールド10が参照するオブジェクトHはマシーンMn−1内に存在しないので、これでは不十分である。或いは、マシーンMn+1について示されるように、オブジェクトA内のリファレンスフィールド20を有し、且つマシーン内に新しいオブジェクトを作成することもできるが、マシーン編成は一般に異なり、従って、マシーンMn+1内に作成された新しいオブジェクトのポインタ(又はアドレス)は、マシーンMn内に作成されたオブジェクトHのポインタ(又はアドレス)と同じではない。
As shown in FIG. 4, in relation to the machine Mn-1, the object A can have a
所望の最終結果が図5に示されている。ここで、リファレンスフィールド10及び付加的なオブジェクトHを有していたマシーンMnは以前と同じである。しかしながら、マシーンMn+1については、オブジェクトAはリファレンスフィールド20を備えており、該フィールドのコンテンツは、マシーンMn+1のローカルメモリ内に作成され、且つマシーンNのオブジェクトHに対応する新しいオブジェクトTを参照する。同様に、マシーンMn−1は、オブジェクトAに対し、フィールド10に対応するリファレンスフィールド30を有し、該フィールドのコンテンツは、マシーンMn−1のローカルメモリ内に作成され、且つマシーンMnのオブジェクトHに対応する新しいオブジェクトKを参照する。
The desired end result is shown in FIG. Here, the machine Mn having the
図5に示された所望の結果は、図6に示されるようなコンコーダンステーブルを使用して作成される。このようなコンコーダンステーブルは、サーバーマシーンX内に記憶されるのが好ましく好都合であり、従って、他のマシーン全てがアクセス可能である。図6のコンコーダンステーブルにおいて、参照されたオブジェクトH(この実施例の目的において、好都合には、人間の頭に関するアプリケーションプログラム50の態様に関係付けられると仮定することができ、グローバル名称C(好都合には、ラテン語で頭を意味するcraniumを表わす)を割り当てられる)の作成によって、Hのローカルポインタ(又はアドレス)は一般にグローバル名称Cとは異なることは理解される。
The desired result shown in FIG. 5 is created using a concordance table as shown in FIG. Such a concordance table is preferably stored in the server machine X and is therefore accessible to all other machines. In the concordance table of FIG. 6, it can be assumed that the referenced object H (for the purposes of this example, conveniently relates to the aspect of the
マルチコンピュータシステムにおける他のマシーンの各々について、新しいオブジェクトに対するローカルポインタ(又はアドレス)を作成する必要があり、グローバル名称Cに対応する図6のコンコーダンステーブルに次に入力される。マシーンMn−1について、新しいオブジェクトのローカルアドレスは、K(ドイツ語で頭を意味するKopfを表わす)と呼ばれるのが好都合であり、マシーンMn+1については、ローカルアドレスは、T(フランス語で頭を意味するteteを表わす)であるのが好都合である。 For each of the other machines in the multicomputer system, a local pointer (or address) for the new object needs to be created and then entered into the concordance table of FIG. For machine Mn-1, the local address of the new object is conveniently called K (for Kopf, which means head in German), and for machine Mn + 1, the local address is T (for French, meaning head). It is convenient to represent tete).
オブジェクトH、T、及びKは、図6のコンコーダンステーブルを介して全てリンクされるので、オブジェクトHにおける個々のプリミティブフィールドのコンテンツは、オブジェクトK及びTそれぞれにおける対応するプリミティブフィールドにわたり容易にコピーすることができる。 Since objects H, T, and K are all linked through the concordance table of FIG. 6, the contents of the individual primitive fields in object H should be easily copied across the corresponding primitive fields in objects K and T, respectively. Can do.
ここで図7を参照すると、わずかに異なって存在しているのが示されている。ここでマシーンMnによって行なわれるアプリケーションプログラム50の処理は、既存のオブジェクトHを参照する新しいリファレンスフィールド46をオブジェクトB内に生成する。従って、マシーンMn−1及びMn+1内に包含される対応するオブジェクトBにおいてリファレンスフィールド46のローカルコピーを作成することが必要である。
Referring now to FIG. 7, it is shown that they exist slightly differently. Here, the processing of the
最終結果は図8に示される通りであり、ここでは、新しいリファレンスフィールド56及び66がマシーンMn−1及びMn+1内にそれぞれ作成されている。更に、これらの新しいリファレンスフィールドの各々のコンテンツは、マシーンMnのオブジェクトHにそれぞれ対応するオブジェクトK及びTへのリファレンスである。この作成は、図6のコンコーダンステーブルを調べることによって可能であり、これによって例えば、マシーンMn+1は、マシーンMnのオブジェクトHに対応するそのローカルメモリにおけるオブジェクトがオブジェクトTであることを認識するようになる。 The final result is as shown in FIG. 8, where new reference fields 56 and 66 are created in machines Mn-1 and Mn + 1, respectively. In addition, the content of each of these new reference fields is a reference to objects K and T, respectively corresponding to object H of machine Mn. This creation is possible by examining the concordance table of FIG. 6 so that, for example, machine Mn + 1 recognizes that the object in its local memory corresponding to object H of machine Mn is object T. .
次に図9を参照すると、初期ロード処理中に、各JAVA(登録商標)仮想マシーン72を作成するためにロードされるプログラム50が修正される。この修正は、図9のステップ90で始まり、ロードされているアプリケーション50において全メモリロケーション(JAVA(登録商標)ではフィールドと呼ばれるが、他の言語でも等価の用語が使用される)を検出する初期実体ステップ91を包含する。このようなメモリロケーションは、ステップ92及び93で次の処理のために識別する必要がある。ロード処理中のDRT71は、メモリロケーション全てのリストを作成し、すなわち識別され、JAVA(登録商標)フィールドは、オブジェクト及びクラス毎にリストされる。揮発性フィールド及び同期フィールドの両方がリストされる。
Referring now to FIG. 9, during the initial loading process, the
修正手順の次の段階(図9のステップ92で示される)は、あらゆる処理アクティビティを位置付けるために実行可能アプリケーションコードをサーチすることであり、該処理アクティビティは、ステップ91で生成されたリストに対応するフィールド値をマニピュレート又は変更し、従って、対応するメモリロケーションの値が変更されるようにフィールドに書き込む。フィールド値を変更するこのようなオペレーション(通常は、JAVA(登録商標)言語におけるプットスタティック(putstatic)又はプットフィールド(putfield))が検出されると、ステップ93で「更新伝播ルーチン」がプログラムのこの場所に挿入され、フィールドのコンテンツが変更されたことを他の全てのマシーンに確実に通知されるようにする。その後、ロード処理は、本明細書に組み込まれた上述の明細書に記載され且つ図9のステップ94で示されるように、通常の方法で続行される。
The next stage of the modification procedure (indicated by
ロード中の初期修正の他の形式を図10に示す。ここで、開始ステップ90及びリスティングステップ91並びにサーチングステップ92は図9と同じである。しかしながら、処理スレッドが更新を実行する「更新伝播ルーチン」をステップ93として挿入するのではなく、「警報ルーチン」がステップ103に挿入される。「警報ルーチン」は、処理に使用されずDRTに割り当てられる1つ又は複数のスレッドに対し必要な伝播を実行するよう指示する。このステップ103は、図9のステップ93よりも迅速な代替手段であり、より低いオーバヘッドをもたらす。
Another form of initial correction during loading is shown in FIG. Here, the
図9又は10で説明されるようなロード処理中のこの初期修正が行われると、図11及び12に示されるマルチスレッド処理オペレーションのいずれか1つが行なわれる。図11の実施形態で分かるように、スレッド111/1...111/4からなるマシーンM1上のマルチスレッド処理110が行われ、第2スレッド111/2の処理(この実施例での)では、そのスレッド111/2がステップ113でフィールド値の変更を認識することになる。この段階では、そのスレッド111/2の通常処理はステップ114で停止し、同じスレッド111/2は、ステップ113で行われた変更されたフィールド及び変更されたコンテンツのアイデンティティをネットワーク53を介して他の全マシーンM2...Mnに通知する。この通信手順の最後においてステップ115で、スレッド111/2は、フィールドコンテンツの変更がある次のインスタンスまで処理を再開する。
When this initial modification during the loading process as described in FIG. 9 or 10 is performed, one of the multithread processing operations shown in FIGS. 11 and 12 is performed. As can be seen in the embodiment of FIG. 11, threads 111/1. . . A
図12に示された他の構成では、ステップ113で、マシーンM1上のスレッド111/2がフィールド値の変更を認識すると、該スレッド111/2は、DRT処理120に割り当てられた別のスレッド121/1が、ステップ113で検出された変更フィールド及び変更コンテンツのアイデンティティをステップ128に従ってネットワーク53を介して他の全マシーンM2...Mnに伝播するようにDRT処理120(ステップ125及び矢印127によって示されるように)に指示する。これは、迅速に実行できるオペレーションであり、すなわち、初期スレッド111/2の処理は、スレッド111/2がステップ115で処理を再開する前にステップ125に示されるように瞬間的に中断されるだけである。次いで、変更(矢印127によって示されるような)を通知された他のスレッド121/1は、ステップ128に示されるように、その変更をネットワーク53を介して他のマシーンM2...Mnの各々に伝送する。
In the other configuration shown in FIG. 12, when the thread 111/2 on the machine M1 recognizes the change of the field value in
図12のこの第2の構成は、種々のスレッド111/1...111/3及び121/1(これらは一般に均等な要求の影響を受けない)の処理能力をうまく利用し、増大する「n」のサイズと共に良好な拡張をもたらす(nは2以上の整数であって、ネットワーク53に接続されアプリケーションプログラム50を同時に実行するマシーンの総数を表す)。どの構成が使用されるかに関わらず、ステップ113で検出された変更フィールド及びアイデンティティ及び値は、ネットワーク上の他のマシーンM2...Mn全てに伝播される。
This second configuration of FIG. 12 includes various threads 111/1. . . Take advantage of the processing power of 111/3 and 121/1 (which are generally not affected by equal demands) and provide good expansion with increasing size of “n” (where n is an integer greater than or equal to 2) The total number of machines connected to the
これは図13に示されており、DRT71/1及び図12のスレッド121/1(図13のステップ128によって表わされる)は、ネットワーク53を介してマシーンM1での処理による図12のステップ113で生成されリストされたメモリロケーションのアイデンティティ及び変更コンテンツを他のマシーンM2...Mnの各々に送信する。
This is illustrated in FIG. 13 where
他のマシーンM2...Mnの各々は、ネットワーク53からアイデンティティとコンテンツペアを受け取り、新しいコンテンツをローカルの対応するメモリロケーションに書き込むことによって、マシーンMnに対する図13のステップ135、136、及び137によって示される動作を実行する。
Other machines M2. . . Each Mn receives the identity and content pair from the
図6のコンコーダンステーブルは、サーバーマシーンX内にだけ位置付けできるとは限らないことは、コンピュータ技術分野における当業者には明らかであろう。代わりに、テーブルのローカルコピーは、個々のマシーンMn−1、Mn、Mn+1、その他の各々において維持することができる。加えて、これらの状況下では、各マシーンがその固有のテーブルを調べることによっていずれかの他のマシーンによって参照されるオブジェクトに対応するローカルメモリ内のオブジェクトを決定できるので、グローバル名称を存在させる必要はない。例えば、マシーンMnが、オブジェクトT上に包含されたプリミティブフィールド11のコンテンツを更新するようマシーンMn+1からメッセージを受け取った場合、マシーンMnは、図6のコンコーダンステーブルを調べ、そのオブジェクトHがマシーンMn+1のオブジェクトTに対応しており、従ってこれが更新すべきオブジェクトであることを判断する。すなわち、図6のコンコーダンステーブルは、「GLOBAL」と題された左側の列を含む必要はない。この理由から、図6に示されたテーブルは、サーバーマシーンXが存在しない場合は必要ではないことを示すため、破線によって分離された左側部分を有する。
It will be apparent to those skilled in the computer art that the concordance table of FIG. 6 may not be located only within the server machine X. Instead, a local copy of the table can be maintained on each of the individual machines Mn-1, Mn, Mn + 1, etc. In addition, under these circumstances, a global name must exist because each machine can determine the object in local memory that corresponds to the object referenced by any other machine by examining its own table. There is no. For example, if machine Mn receives a message from machine Mn + 1 to update the contents of
上記では、本発明の幾つかの実施形態のみを説明しており、本発明の範囲から逸脱することなく修正を行い得る点は、コンピュータ技術分野における当業者には明らかである。 The foregoing describes only some embodiments of the present invention and it will be apparent to those skilled in the computer art that modifications may be made without departing from the scope of the present invention.
例えば、上述された構成では、アプリケーションプログラムの一部分(1/n番目)を各々がシェアする「n」個のコンピュータが想定される。このような状況下では、全ての「n」個のコンピュータは同じローカルメモリ構造を有する。しかしながら、コンピュータのサブセットのみが同じローカルメモリ構造を有するようなシステムを動作させることができる。このケースでは、サブセットのメンバの最大数は、上記の説明における「n」と見なされることになる。 For example, in the configuration described above, “n” computers that each share a part (1 / nth) of the application program are assumed. Under such circumstances, all “n” computers have the same local memory structure. However, a system can be operated in which only a subset of computers have the same local memory structure. In this case, the maximum number of members in the subset will be considered “n” in the above description.
また、メモリロケーションが、データとコードの一部分の両方を含むことができることは理解されるはずである。従って、新しい値又はメモリロケーションに行なわれた変更は、新しい数値データ及びコードの新しい又は改訂された部分の両方を含むことができる。同様に、JAVA(登録商標)への言及は、JAVA(登録商標)言語とJAVA(登録商標)プラットフォーム及びアーキテクチャの両方を含む。 It should also be understood that a memory location can include both data and a portion of code. Thus, changes made to new values or memory locations can include both new numerical data and new or revised portions of code. Similarly, references to JAVA include both the JAVA language and the JAVA platform and architecture.
修正の全ての説明される事例では、ロード前、又はロード中、或いはロード後で未修正のアプリケーションコードの実行が開始される前に、アプリケーションコード50が修正される場合、改良されたアプリケーションコードは、修正が行なわれるのに続いて未修正のアプリケーションコードの代わりにロードされて、未修正のアプリケーションコードの代わりに実行されることを理解されたい。
In all described cases of modification, if the
代替として、修正が、ロード後及び未修正のアプリケーションコードの実行の開始後に行なわれる事例では、未修正のアプリケーションコードは、修正が実施されるのに対応して修正アプリケーションコードと全体的に置き換えることができ、或いは、実行中の未修正のアプリケーションコードに増分的に修正が行なわれるときに部分的に又は増分的に置き換えることができる点を理解されたい。このような修正ルートのどれが使用されるかに関係なく、引き続き行なわれる修正が、未修正のアプリケーションコードの代わりに実行される。 Alternatively, in cases where the modification is done after loading and after execution of the unmodified application code begins, the unmodified application code is totally replaced with the modified application code as the modification is performed. It should be understood that it can be replaced or partially or incrementally replaced when incremental modifications are made to the unmodified application code being executed. Regardless of which such modification route is used, subsequent modifications are performed instead of unmodified application code.
複数のマシーンM1、M2...Mnの各マシーン上で類似の等価のローカルオブジェクト(又はクラス、又は資産又は資源又は同様のもの)全てに対して「メタ−名前」又は「メタ−アイデンティティ」の形式であるグローバル識別子を使用することが有利である。例えば、複数の類似の等価オブジェクトの各マシーン上で各類似の等価ローカルオブジェクトの各固有のローカル名又はアイデンティティを追跡するのではなく、各マシーンがグローバル名称を特定のローカル名又はオブジェクトに関係付けるという条件の下(例えば、「グローバル名称7787」はマシーンM1上のオブジェクト「ローカルオブジェクト456」に対応し、「グローバル名称7787」はマシーンM2上のオブジェクト「ローカルオブジェクト885」に対応し、「グローバル名称7787」はマシーンM3上のオブジェクト「ローカルオブジェクト111」に対応する、など)で、各マシーン上の複数の類似の等価オブジェクトに対応するグローバル名称(例えば、「グローバル名称7787」)を定義又は使用することができる。 A plurality of machines M1, M2. . . Use global identifiers in the form of “meta-name” or “meta-identity” for all similar equivalent local objects (or classes, or assets or resources or the like) on each machine of Mn Is advantageous. For example, instead of tracking each unique local name or identity of each similar equivalent local object on each machine of multiple similar equivalent objects, each machine associates a global name with a particular local name or object. Under the conditions (for example, “global name 7787” corresponds to the object “local object 456” on the machine M1, “global name 7787” corresponds to the object “local object 885” on the machine M2, and “global name 7787” ”Corresponds to the object“ local object 111 ”on the machine M3, etc.) and defines or uses a global name (eg“ global name 7787 ”) corresponding to a plurality of similar equivalent objects on each machine. Can.
全オブジェクト(例えばメモリロケーション又はフィールド)の全ての又は一部のサブセットのリストを最初に記録又は作成するときに各DRT71によって作成されるテーブル又はリスト或いは他のデータ構造において、各マシーンM1、M2...Mn上のこうした各記録されたオブジェクトに対しマシーンM1、M2...Mnの各々上で共通する又は類似した名前又はアイデンティティが存在することは、本明細書に提供される詳細な説明の観点から当業者には明らかであろう。しかしながら、個々のマシーンにおいては、各マシーンが、その固有の内部プロセスに従って異なるメモリロケーションにメモリ値又はコンテンツを記憶することができ、一般的には記憶することになるので、所与の名前又はアイデンティティに対応するローカルオブジェクトは、時間と共に変わることになり、又は変わる可能性がある。従って、DRTの各々におけるテーブル、又はリスト、或いは他のデータ構造は、一般に、単一のメモリ名又はアイデンティティに対応する異なるローカルメモリロケーションを有することになるが、各グローバル「メモリ名」又はアイデンティティは、異なるローカルメモリロケーション内に記憶された同じ「メモリ値又はコンテンツ」を有することになる。よって、各グローバル名称については、コンピュータの各々において1つのファミリーメンバーでの対応する独立ローカルメモリロケーションのファミリーが存在することになる。ローカルメモリ名は異なる場合もあるが、資産、オブジェクト、ロケーション、その他は、本質的には同じコンテンツ又は値を有する。よって、ファミリーは整合性がある。
In the table or list or other data structure created by each
本明細書で使用される用語「テーブル」又は「タビュレーション」は、データを順番に記憶及び読み取ることのできるあらゆるフォーマットのリスト又は編成されたデータ構造を含むことが意図される。 The term “table” or “tabulation” as used herein is intended to include a list or organized data structure in any format that can store and read data in sequence.
ロード中のアプリケーションプログラムコード50の上述の修正は、多くの方法で又は多様な手段で達成できることは、本明細書に提供される説明の観点から当業者には明らかであろう。これらの方法又は手段は、限定でないが、少なくとも以下の5つの方法、及びこれらの5つの方法の変形又は組合せを含む。
(i)ロード時の再コンパイル
(ii)プリコンパイルによるロード前の処理
(iii)ロード前のコンパイル
(iv)「ジャスト−イン−タイム(JIT)」コンパイル
(v)ロード後の再コンパイル(但し、又は例えば、分散環境での関連した又は対応するアプリケーションコードの実行前)。
It will be apparent to those skilled in the art in view of the description provided herein that the above modifications of the
(I) Recompilation at load (ii) Pre-load processing by pre-compilation (iii) Compile before load (iv) “Just-in-time (JIT)” compilation (v) Recompilation after load (however, Or, for example, prior to execution of relevant or corresponding application code in a distributed environment).
従来、用語「コンパイル」とは、例えばソースからオブジェクトコード又は1つの言語から別の言語へのコード又は言語の変換を意味する。明確には、本明細書における用語「コンパイル」(及びその文法的に等価のもの)の使用はこれに限定されず、同じコード又は言語内での修正を含む又は包含することができる。 Conventionally, the term “compile” means, for example, the conversion of code or language from source to object code or from one language to another. Specifically, the use of the term “compile” (and its grammatical equivalents) herein is not so limited and can include or encompass modifications within the same code or language.
複数のマシーンM1、M2..Mn間でオペレーションを調整するようメモリマニピュレーションオペレーションを修正する基本的な概念が与えられると、この調整された整合性のある一貫したメモリ状態及びマニピュレーションオペレーション概念、方法、及び手順を実行又は実施することができる幾つかの異なる方法又は実施形態が存在する。 A plurality of machines M1, M2. . Perform or implement this coordinated consistent memory state and manipulation operation concepts, methods, and procedures given the basic concept of modifying memory manipulation operations to coordinate operations between Mn There are several different methods or embodiments that can be used.
第1の実施形態では、特定のマシーン、例えばマシーンM2が、メモリマニピュレーションオペレーションを含む資産(クラス又はオブジェクトなど)をロードし、これを修正し、次いで、他のマシーンM1、M3...Mnの各々に(連続して又は同時に、或いはいずれかの他の順序、ルーチン、又は手順に従って)新しい修正されたメモリマニピュレーションオペレーションを含む修正オブジェクト(又はクラス又は他の資産或いは資源)をロードする。アプリケーションコード内の1つだけのオブジェクトに対応する1つ又は複数のメモリマニピュレーションオペレーションが存在することができ、或いはアプリケーションコード内に複数のオブジェクトに対応する複数のメモリマニピュレーションオペレーションが存在することができる点に留意されたい。1つの実施形態では、ロードされたメモリマニピュレーションオペレーションは実行可能中間コードである点に留意されたい。 In the first embodiment, a particular machine, eg, machine M2, loads and modifies an asset (such as a class or object) that includes a memory manipulation operation, and then other machines M1, M3. . . Load a modified object (or class or other asset or resource) containing a new modified memory manipulation operation into each Mn (sequentially or simultaneously, or according to any other order, routine, or procedure). There can be one or more memory manipulation operations corresponding to only one object in the application code, or there can be multiple memory manipulation operations corresponding to multiple objects in the application code. Please note that. Note that in one embodiment, the loaded memory manipulation operation is executable intermediate code.
「マスター/スレーブ」と呼ぶことができるこの構成では、スレーブ(又は二次)マシーンM1、M3...Mnの各々が、修正されたオブジェクト(又はクラス)をロードし、マシーンM2などのマスター(又は一次)マシーン、或いはマシーンXとしての他の何らかのマシーンによって、コンピュータ通信ネットワーク或いは他の通信リンク又は経路を通じて送られた新しく修正されたメモリマニピュレーションオペレーションを含む。この「マスター/スレーブ」又は「一次/二次」構成の僅かな変形形態では、コンピュータ通信ネットワークが、共有ファイルシステムなどの共有記憶デバイス、或いは共有データベースなどの共有文書/ファイルレポジトリにより置き換えることができる。 In this configuration, which can be referred to as “master / slave”, slave (or secondary) machines M1, M3. . . Each of Mn loads a modified object (or class), through a computer communication network or other communication link or path by a master (or primary) machine, such as machine M2, or some other machine as machine X Contains newly modified memory manipulation operations sent. In a slight variation of this “master / slave” or “primary / secondary” configuration, the computer communication network can be replaced by a shared storage device such as a shared file system or a shared document / file repository such as a shared database. .
各マシーン又はコンピュータ上で実行される修正は必要ではなく、多くの場合同じ又は同一ではないことは、本明細書に示される詳細な説明の観点から明らかであろう。必要とされることは、複数のマシーンの各々が他のマシーンに対して一貫性があり且つ整合性があるように動作する類似の完全な方法修正されることである。更に、例えば特定のハードウェア、アーキテクチャ、オペレーティングシステム、アプリケーションプログラムコード、又は同様のもの、或いは異なる要素に応じて変わる可能性のある修正を実施する多様な方法が存在することは理解されるであろう。オペレーティングシステム内部で、いずれかのオペレーティングシステム外部で、或いは該オペレーティングシステムの恩恵なしで、仮想マシーンの内側で、EPROM内で、ソフトウェア内で、ハードウェア内で、ファームウェア内で、或いはこれらのいずれかの組合せで実装できることは理解されるであろう。 It will be apparent from the detailed description presented herein that the modifications performed on each machine or computer are not necessary and often not the same or identical. What is needed is a similar complete method modification in which each of the machines operates to be consistent and consistent with the other machines. Further, it will be appreciated that there are a variety of ways to implement modifications that may vary depending on, for example, specific hardware, architecture, operating system, application program code, or the like, or different elements. Let ’s go. Inside the operating system, outside any operating system, or without the benefit of the operating system, inside the virtual machine, in EPROM, in software, in hardware, in firmware, or any of these It will be understood that a combination of these can be implemented.
また更なる実施形態では、各マシーンM1、M2...Mnは、1つ又はそれ以上のメモリマニピュレーションオペレーションを含む未修正の資産(クラス又はオブジェクトなど)を受け取るが、オペレーションを修正し、次いで現在修正されたオペレーションからなる資産(クラス又はオブジェクトなど)をロードする。マスター又は一次マシーンなどの1つのマシーンは、各マシーンに送られるメモリマニピュレーションオペレーションに対して異なる修正をカスタマイズし又は実行することができ、この実施形態では、各マシーンによって行なわれる修正が僅かに異なるように容易にできるようにする。これによって、その特定のマシーンアーキテクチャ、ハードウェアプロセッサ、メモリ、構成、オペレーティングシステム、又は他の要素に基づいて拡張、カスタマイズ、及び/又は最適化を行うことができるが、それでも、他のマシーン及び他の類似の修正全てに対して依然として類似しており、整合性があり、且つ一貫性があるようにすることができる。 In still further embodiments, each machine M1, M2,. . . Mn receives an unmodified asset (such as a class or object) that contains one or more memory manipulation operations, but modifies the operation and then loads an asset (such as a class or object) that consists of the currently modified operation To do. One machine, such as a master or primary machine, can customize or perform different modifications to the memory manipulation operations sent to each machine, and in this embodiment, the modifications made by each machine are slightly different. To make it easy to do. This allows for expansion, customization, and / or optimization based on that particular machine architecture, hardware processor, memory, configuration, operating system, or other elements, but still other machines and others Can still be similar, consistent and consistent for all similar modifications.
説明される事例又は実施形態の全てにおいて、マシーンM1、M2...Mn及び任意選択的にマシーンXを含むマシーンへの資産コード(クラスコード又はオブジェクトコードなど)の提供又は伝達は、マシーン間直接通信を提供する(例えば、M2が直接、M1、M3、M4などの各々に提供する)ことによって、或いはカスケード又はシーケンシャル通信を提供又は使用(例えば、M2がM1に提供し、次にM1がM3に提供し、次にM3がM4に提供する、以下同様にして)することによって、或いは直接及びカスケード及び/又はシーケンシャルの組合せによってなど、あらゆる組合せ又は順列で異なるマシーン間で分岐、分散、又は伝達することができる。 In all of the described cases or embodiments, the machines M1, M2. . . Providing or communicating asset codes (such as class codes or object codes) to machines including Mn and optionally machine X provides direct communication between machines (eg, M2 directly, M1, M3, M4, etc. Or provide or use cascade or sequential communication (eg, M2 provides to M1, then M1 provides to M3, then M3 provides to M4, and so on) Can be branched, distributed, or communicated between different machines in any combination or permutation, such as by direct or cascade and / or sequential combinations.
上述の構成は、修正が、この「マスター/スレーブ」又は「一次/二次」構成のこの変形形態における複数のコンピュータの1つによってのみ実行されることになるクリーンアップルーチン、ファイナライズ、又は同様のものに関する場合においては変える必要があり、マシーンM2は、マシーンM2上の未修正の形式のクリーンアップルーチンを含む資産(クラス又はオブジェクトなど)をロードし、次いで、(例えば、M2又は各ローカルマシーンが)資産(クラス又はオブジェクトなど)からマシーン上に全体的に又は部分的に存在していた未修正のクリーンアップルーチンを削除し、コンピュータ通信ネットワークを利用して、他のマシーン上の現在修正され又は削除されたクリーンアップルーチンを有する資産に対する修正されたコードをロードする。従って、この事例では、修正は、資産クリーンアップルーチンの変換、装備、翻訳、又はコンパイルではないが、1つを除いた全マシーン上のクリーンアップルーチンの削除である。1つの実施形態では、ファイナライズ又はクリーンアップルーチンの実際のコード−ブロックは、1つを除いた全てのマシーンで削除され、他の全マシーンはファイナライズルーチンを削除しているので、従って、この最後に残ったマシーンが、ファイナライズルーチンを実行できる唯一のマシーンである。この手法の1つの利点は、1つのマシーンだけがルーチンを有するので、同じファイナライズルーチンを実行する複数のマシーン間の競合が生じないことである。 The above-described configuration is a clean-up routine, finalization, or the like where the modification will be performed only by one of the computers in this "master / slave" or "primary / secondary" configuration variant In the case of things need to change, machine M2 loads an asset (such as a class or object) that contains an unmodified form of cleanup routine on machine M2, and then (for example, M2 or each local machine ) Remove any unmodified cleanup routines that existed in whole or in part on the machine (such as classes or objects) and make use of the computer communication network to modify the current machine on other machines or Modified for assets with deleted cleanup routines To load the over de. Thus, in this case, the modification is not the conversion, equipment, translation, or compilation of the asset cleanup routine, but the deletion of the cleanup routine on all machines except one. In one embodiment, the actual code-block of the finalizing or cleanup routine is deleted on all but one machine, and all other machines are deleting the finalizing routine, so at this end The remaining machine is the only machine that can execute the finalize routine. One advantage of this approach is that since only one machine has a routine, there is no contention between multiple machines executing the same finalization routine.
全体におけるクリーンアップルーチンの削除プロセスは、未修正の資産を受け取ったときに、「マスター」マシーン(例えばマシーンM2、又はマシーンXなどの他の何らかのマシーンなど)によって、或いは他の各マシーンM1、M3...Mnによって実行することができる。この「マスター/スレーブ」又は「一次/二次」構成の別の変形形態は、マシーンM1、M2...Mn及び任意選択的にサーバーマシーンX間の資産、クラス、又はオブジェクトに対するコードを交換する手段として、共有ファイルシステムなどの共有記憶デバイス、或いは共有データベースなどの共有文書/ファイルレポジトリを使用することである。 The overall clean-up routine deletion process can be performed by a “master” machine (eg, machine M2, or some other machine such as machine X) when an unmodified asset is received, or each other machine M1, M3. . . . Can be performed with Mn. Another variation of this “master / slave” or “primary / secondary” configuration is the machine M1, M2. . . Use a shared storage device such as a shared file system or a shared document / file repository such as a shared database as a means of exchanging code for assets, classes or objects between Mn and optionally server machine X. .
更なる構成では、特定のマシーン、例えばマシーンX1が、ファイナライズ又はクリーンアップルーチンを含む未修正の資産(クラス又はオブジェクトなど)をロードし、他の全マシーンM2、M3...Mnが修正を実施して、資産(クラス又はオブジェクトなど)のクリーンアップルーチンを削除し、修正バージョンをロードする。 In a further configuration, a particular machine, eg, machine X1, loads an unmodified asset (such as a class or object) that includes a finalize or cleanup routine, and all other machines M2, M3. . . Mn performs the modification, removes the asset (such as class or object) cleanup routine, and loads the modified version.
更に別の構成では、マシーンM1、M2...Mnが、追加のサーバーマシーンXに一部又は全てのロード要求を送信することができ、該サーバーマシーンが、上述の方法のいずれかを介してアプリケーションプログラムコード50(資産、及び/又はクラス、及び/又はオブジェクトを含む又はこれらからなる)に対する、ファイナライズ又はクリーンアップルーチンを含む修正を行ない、修正されたファイナライズ又はクリーンアップルーチンを含む修正アプリケーションプログラムコードをマシーンM1からMnの各々に戻し、次いで、これらのマシーンが、修正ルーチンを含む修正されたアプリケーションプログラムコードをローカルにロードする。この構成では、マシーンM1からMnが、全てのロード要求をマシーンXに転送し、マシーンXが、修正されたファイナライズ又はクリーンアップルーチンを含む修正されたアプリケーションプログラムコードを各マシーンに戻す。マシーンXによって行なわれる修正は、説明された修正のいずれも含むことができる。この構成は、当然、マシーンの一部にだけ適用することができ、マシーンの他のものに対しては、本明細書に説明される他の構成が適用される。 In yet another configuration, the machines M1, M2. . . Mn can send some or all load requests to the additional server machine X, which uses the application program code 50 (assets and / or classes, and (Including / consisting of objects), including finalization or cleanup routines, and returning modified application program code including modified finalization or cleanup routines to each of the machines M1 to Mn, then Machine locally loads the modified application program code including the modification routine. In this configuration, machines M1 through Mn forward all load requests to machine X, which returns the modified application program code, including modified finalization or cleanup routines, to each machine. The modifications performed by machine X can include any of the modifications described. Of course, this configuration can only be applied to a portion of the machine, and other configurations described herein apply to the rest of the machine.
コンピュータ及び/又はプログラミング技術分野における当業者であれば、付加的なコード又は命令が既存のコード又は命令に挿入されてこれを修正する場合、既存のコード又は命令セットは、オフセット、分岐、属性、マークアップ、及び同様のものが正しく処理され又は応じられるように更なる修正(例えば、シーケンシャル命令の再ナンバリングによってなど)を必要とする可能性があることを認識するであろう。 Those of ordinary skill in the computer and / or programming arts will recognize that if additional code or instructions are inserted into and modify existing code or instructions, the existing code or instruction set will be offset, branch, attribute, It will be appreciated that markups, and the like, may require further modifications (eg, by renumbering sequential instructions, etc.) so that they can be processed or responded correctly.
同様に、JAVA(登録商標)言語では、メモリロケーションは、例えばフィールドタイプ及びアレイタイプの両方を含む。上記の説明は、フィールドを扱っており、アレイタイプに必要な変更は、本質的には同じ必要な変更を加えている。また本発明は、Microsoft.NETプラットフォーム及びアーキテクチャ(VisualBasic、Visual C/C++、及びC#)、FORTRAN、C/C++、COBOL、BASICなどを含むJAVA(登録商標)に類似したプログラミング言語(手続き型、宣言、及びオブジェクト指向言語を含む)に対し等しく適用可能である。 Similarly, in the JAVA language, memory locations include both field types and array types, for example. The above description deals with fields, and the required changes to the array type are essentially the same required changes. The present invention also relates to Microsoft. Programming languages (procedural, declaration, and object-oriented languages similar to JAVA) including NET platform and architecture (VisualBasic, Visual C / C ++, and C #), FORTRAN, C / C ++, COBOL, BASIC, etc. Is equally applicable.
本明細書で使用される用語オブジェクト及びクラスとは、JAVA(登録商標)環境から派生したものであり、ダイナミックリンクライブラリ(DLL)、又はオブジェクトコードパッケージ、或いは機能ユニット又はメモリロケーションなどの異なる環境から派生した類似語を包含するものとする。 The terms object and class used herein are derived from the JAVA environment and are from different environments such as a dynamic link library (DLL), or an object code package, or a functional unit or memory location. Includes derived similar terms.
例えば、限定ではないが、ロック手段、分散型ランタイム手段、モディファイア又は修正手段、及び同様のものを含む本発明の実施形態に関する種々の手段が説明される。本発明の少なくとも1つの実施形態では、これらの種々の手段のいずれか1つ又は各々は、コンピュータプログラムコード命令文又は命令(場合によっては、複数のコンピュータプログラムコード命令文又は命令によるものを含む)によって実施することができ、コンピュータ論理回路、プロセッサ、ASIC、論理又は電子回路ハードウェア、マイクロプロセッサ、マイクロコントローラ、又は他の論理内で実行し、このような論理又は回路のオペレーションを修正して、記載されたオペレーション又は機能を達成する。別の実施形態では、これらの種々の手段のいずれか1つ又は各々は、ファームウェアにおいて実施することができ、他の実施形態では、これらをハードウェアにおいて実施することができる。更に、本発明の少なくとも1つの実施形態では、これらの種々の手段のいずれか1つ又は各々は、コンピュータプログラムソフトウェア、ファームウェア、及び/又はハードウェアの組合せによって実施することができる。 Various means relating to embodiments of the present invention are described including, but not limited to, locking means, distributed runtime means, modifiers or modification means, and the like. In at least one embodiment of the present invention, any one or each of these various means is a computer program code statement or instruction (possibly including a plurality of computer program code statements or instructions). Executing in computer logic, processor, ASIC, logic or electronic circuit hardware, microprocessor, microcontroller, or other logic, and modifying the operation of such logic or circuit, Achieve the operations or functions described. In another embodiment, any one or each of these various means can be implemented in firmware, and in other embodiments they can be implemented in hardware. Furthermore, in at least one embodiment of the present invention, any one or each of these various means may be implemented by a combination of computer program software, firmware, and / or hardware.
上述の方法、手順、及び/又はルーチンのいずれか及び各々は、有利には、何らかの有形媒体上に記憶されるか、或いは電子、信号、又はデジタル形式で存在するコンピュータプログラム及び/又はコンピュータプログラム製品として実施することができる。このようなコンピュータプログラム又はコンピュータプログラム製品は、別個の、及び/又は、コンピュータ、コンピュータマシーン、又は情報アプライアンスのプロセッサ又はマイクロプロセッサなどにおいて、論理を処理する際に実行するためのモジュール、プログラム、又はサブルーチンとして、或いはいずれかの他の方法で編成された命令を含み;コンピュータプログラム又はコンピュータプログラム製品は、コンピュータが実行するオペレーション、或いはコンピュータプログラム又はコンピュータプログラム製品が存在又は実行されているコンピュータに結合され、接続され、或いは他の方法で信号通信中のコンピュータ上のコンピュータのオペレーションを修正する。このようなコンピュータプログラム又はコンピュータプログラム製品は、コンピュータ、コンピュータマシーン、及び/又は情報アプライアンスのオペレーション及びアーキテクチャの構造を修正し、コンピュータの技術上のオペレーションを変更し、本明細書で説明される技術的な効果を実現する。 Any and each of the methods, procedures, and / or routines described above are advantageously stored on some tangible medium, or exist in electronic, signal, or digital form. Can be implemented as Such a computer program or computer program product may be a separate, and / or module, program, or subroutine for execution in processing logic in a computer, computer machine, processor or microprocessor of an information appliance, etc. Including instructions organized as or in any other manner; the computer program or computer program product is coupled to the operations performed by the computer, or the computer on which the computer program or computer program product resides or is running, Modify the operation of the computer on the computer that is connected or otherwise in signal communication. Such a computer program or computer program product modifies the operational and architectural structure of a computer, computer machine, and / or information appliance, changes the technical operation of the computer, and provides the technical capabilities described herein. To achieve a positive effect.
従って、本発明は、記憶媒体に記憶されるか又はいずれかの形式で電子的に存在するプログラム命令のセットを備え、本明細書に記載され請求項のいずれかに含む方法、手順、ルーチン、又は同様のもののいずれかを複数のコンピュータが実施できるよう動作可能なコンピュータプログラム製品を含むことができる。 Accordingly, the present invention comprises a method, procedure, routine, comprising a set of program instructions stored in a storage medium or electronically present in any form and included in any of the claims herein. Or a computer program product operable to allow multiple computers to implement any of the same.
更に、本発明は、(限定ではないが)通信ネットワーク又は他の通信リンク又は経路を介して相互接続された、複数のコンピュータ、又は複数のコンピュータと対話するように適合された単一のコンピュータを含み、各々は、コンピュータの対応する異なるコンピュータの単一のコンピュータ上でのみ動作するよう記述されたアプリケーションコードの同じ部分又は異なる部分をほぼ同時に又は並行して実行するよう動作可能である。コンピュータは、コンピュータプログラム製品がロードされたとき、或いは後続の命令時に本明細書に説明され又は請求項のいずれかに記載された方法、手順、又はルーチンのいずれかを実行するようプログラムされている。同様に、本発明はまた、同じ又はほぼ類似したコンピュータと協働してマルチコンピュータシステムを形成するよう配列された単一のコンピュータをその範囲に含む。 Furthermore, the present invention provides a single computer adapted to interact with multiple computers or with multiple computers interconnected via (but not limited to) a communication network or other communication link or path. Each of which is operable to execute the same or different portions of application code written to run only on a single computer of a corresponding different computer of the computer at substantially the same time or concurrently. The computer is programmed to perform any of the methods, procedures, or routines described herein or as claimed in any of the claims when a computer program product is loaded or upon subsequent instructions. . Similarly, the present invention also includes within its scope a single computer arranged to cooperate with the same or substantially similar computers to form a multi-computer system.
要約すると、少なくとも1つのアプリケーションプログラムの異なる部分が、通信ネットワークを介して相互接続された複数のコンピュータの異なるコンピュータ上で同時に実行されるマルチコンピュータ環境において、複写されたオブジェクトの非プリミティブフィールドを複製する方法が開示され、本方法は、
(i)コンコーダンステーブルを作成し、複数のコンピュータのいずれか1つにおいて存在する各オブジェクトについて、コンコーダンステーブルへのエントリをオブジェクトに対する各リファレンスに対応させる段階と、
(ii)コンコーダンステーブルにおける各エントリが、1つのマシーンのオブジェクトによって参照されるローカルメモリオブジェクトへのローカルポインタを包含しており、各コンピュータにおいてコンコーダンステーブルを複製するか、或いはサーバーコンピュータ内に存在する全マシーンに対する単一コンコーダンステーブルの対応する部分に各コンピュータがアクセスできるようにする段階と、
(iii)対応する非プリミティブフィール及びローカルオブジェクトを他の各マシーンに指定させ、対応するローカルメモリオブジェクトの対応するローカルポインタを1つ又は複数のテーブルに入力する段階とを含む。
好ましくは、
(iv)対応する非プリミティブフィールド又は対応するオブジェクトの全ローカルポインタに対応するテーブルにグローバル名称を利用する段階を更に含む。
好ましくは、
(v)アプリケーションプログラム部分のうちの1つについての処理が、マシーンの1つにおける第2の又はその次の参照非プリミティブフィールドの作成を要求する場合、対応する第2の又はその次の参照非プリミティブフィールドをマシーンのうちの他のマシーンの各々において作成する段階を更に含む。
好ましくは、
(vi)各コンピュータ内のマルチスレッドの1つを利用してアプリケーションプログラムの異なる部分を実行する更なる段階と、
(vii)第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドが、コンピュータのうちの他のコンピュータの各々に対し、対応する第2の又はその次の参照非プリミティブフィールドを作成するよう指示する段階と、
を更に含む。
好ましくは、
(viii)各コンピュータ内のマルチスレッドの1つを利用してアプリケーションプログラムの異なる部分を実行する段階と、
(ix)第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドとは異なるスレッドが、コンピュータのうちの他のコンピュータの各々に対し、対応する第2の又はその次の参照非プリミティブフィールドを作成するよう指示する段階と、
を更に含む。
In summary, a non-primitive field of a replicated object is replicated in a multi-computer environment where different portions of at least one application program are executed simultaneously on different computers of a plurality of computers interconnected via a communication network. A method is disclosed, the method comprising:
(I) creating a concordance table and for each object present in any one of the plurality of computers, an entry in the concordance table corresponds to each reference to the object;
(Ii) Each entry in the concordance table contains a local pointer to a local memory object referenced by an object on one machine and duplicates the concordance table on each computer or all existing in the server computer. Allowing each computer to access the corresponding part of a single concordance table for the machine;
(Iii) causing each other machine to designate a corresponding non-primitive field and a local object, and entering a corresponding local pointer of the corresponding local memory object into one or more tables.
Preferably,
(Iv) further comprising using the global name in a table corresponding to the corresponding non-primitive field or all local pointers of the corresponding object;
Preferably,
(V) if processing for one of the application program parts requires creation of a second or next reference non-primitive field in one of the machines, the corresponding second or next reference non-primitive The method further includes creating a primitive field on each of the other machines of the machine.
Preferably,
(Vi) a further step of executing different portions of the application program utilizing one of the multithreads in each computer;
(Vii) A thread requesting creation of a second or next reference non-primitive field creates a corresponding second or next reference non-primitive field for each of the other computers of the computer. Instructing
Is further included.
Preferably,
(Viii) executing different portions of the application program using one of the multithreads in each computer;
(Ix) a thread that is different from the thread requesting creation of the second or next reference non-primitive field for each other computer of the computer corresponding to the second or next reference non-primitive Instructing them to create a field,
Is further included.
更に、少なくとも1つのアプリケーションプログラムの異なる部分が、通信ネットワークを介して相互接続された複数のコンピュータの異なるコンピュータ上で同時に実行されるマルチコンピュータシステムが開示され、コンピュータのいずれか1つにおいて作成された各非プリミティブフィールドについて、全コンピュータによってアクセス可能か或いは各コンピュータにおいて複製されたコンコーダンステーブルへの対応するエントリが存在し、テーブルエントリは、1つのコンピュータの非プリミティブフィールドによって参照されたローカルメモリオブジェクトへのローカルポインタを包含し、コンピュータは互いに、対応する非プリミティブフィール及びローカルオブジェクトを指定し、対応するローカルメモリオブジェクトの対応するローカルポインタは、1つ又は複数のコンコーダンステーブルに入力される。 Further disclosed is a multi-computer system in which different portions of at least one application program are simultaneously executed on different computers of a plurality of computers interconnected via a communication network, and created on any one of the computers For each non-primitive field, there is a corresponding entry in the concordance table that is accessible by all computers or replicated at each computer, and the table entry is to the local memory object referenced by the non-primitive field of one computer. Including local pointers, the computer specifies each other a corresponding non-primitive field and a local object, and a corresponding pair of local memory objects. Local pointer is input to one or more of concordance tables.
好ましくは、1つ又は複数のテーブルが、対応する非プリミティブフィールド又は対応するオブジェクトの全ローカルポインタに対応するグローバル名称を利用する。 Preferably, one or more tables utilize a global name corresponding to a corresponding non-primitive field or all local pointers of a corresponding object.
好ましくは、コンピュータの1つにおける各第2の又はその次の参照非プリミティブフィールドに対して、対応する第2の又はその次の参照非プリミティブフィールドが、コンピュータの他のコンピュータの各々に作成される。 Preferably, for each second or subsequent reference non-primitive field in one of the computers, a corresponding second or subsequent reference non-primitive field is created in each of the other computers of the computer. .
好ましくは、各コンピュータにおいてマルチスレッド処理を利用して、アプリケーションプログラムの異なる部分を実行し、第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドが、コンピュータの他のコンピュータの各々に対し、第2の又はその次の参照非プリミティブフィールドを作成するよう指示する。 Preferably, each computer utilizes multi-thread processing to execute different parts of the application program, and a thread requesting the creation of a second or subsequent reference non-primitive field is sent to each of the other computers of the computer. Instructs the second or next reference non-primitive field to be created.
代替的に、各コンピュータにおいてマルチスレッド処理を用いて、アプリケーションプログラムの異なる部分を実行し、第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドとは異なるスレッドが、コンピュータの他のコンピュータの各々に対し、第2の又はその次の参照非プリミティブフィールドを作成するよう指示する。 Alternatively, each computer uses multi-thread processing to execute a different part of the application program, and a thread different from the thread requesting the creation of the second or subsequent reference non-primitive field is Instruct each of the computers to create a second or subsequent reference non-primitive field.
通信ネットワークを介して相互接続され、上記の方法のいずれかを確実に実行するよう動作可能な複数のコンピュータが提供される。 A plurality of computers are provided that are interconnected via a communication network and operable to reliably perform any of the methods described above.
記憶媒体内に記憶され、上記の方法のいずれかを複数のコンピュータに実行させるよう動作可能なプログラム命令のセットを含むコンピュータプログラム製品が更に提供される。 There is further provided a computer program product comprising a set of program instructions stored in a storage medium and operable to cause a plurality of computers to perform any of the methods described above.
上記の方法のいずれかを実行するか、或いは上述されたコンピュータシステムを形成するために、少なくとも1つの他のコンピュータと協働するように適合された単一のコンピュータが開示される。 A single computer is disclosed that is adapted to cooperate with at least one other computer to perform any of the methods described above or to form a computer system as described above.
本明細書で使用される用語「備える」(及びその文法的変形形態)は、「有する」又は「含む」といった包括的な意味で使用され、「だけからなる」という排他的意味では使用されない。 As used herein, the term “comprising” (and grammatical variations thereof) is used in a comprehensive sense such as “having” or “including” and not in an exclusive sense of “consisting solely of”.
Claims (13)
(i)コンコーダンステーブルを作成し、前記複数のコンピュータのいずれか1つにおいて存在する各オブジェクトについて、前記コンコーダンステーブルへのエントリを前記オブジェクトに対する各リファレンスに対応させる段階と、
(ii)前記コンコーダンステーブルにおける前記各エントリが、前記1つのマシーンのオブジェクトによって参照されるローカルメモリオブジェクトへのローカルポインタを包含しており、各コンピュータにおいて前記コンコーダンステーブルを複製するか、或いは、サーバーコンピュータ内に存在する全マシーンに対する単一のコンコーダンステーブルの対応する部分に各コンピュータがアクセスできるようにする段階と、
(iii)対応する非プリミティブフィールド及びローカルオブジェクトを前記他の各マシーンに指定させ、前記対応するローカルメモリオブジェクトの対応するローカルポインタを前記1つ又は複数のテーブルに入力する段階と、
を含む方法。 A method for duplicating a non-primitive field of a duplicated object in a multi-computer environment where different parts of at least one application program are executed simultaneously on different computers of a plurality of computers interconnected via a communication network. And
(I) creating a concordance table and for each object present in any one of the plurality of computers, an entry in the concordance table corresponds to each reference to the object;
(Ii) Each entry in the concordance table contains a local pointer to a local memory object referenced by the object of the one machine, and each computer replicates the concordance table or server computer Allowing each computer to access corresponding parts of a single concordance table for all machines present in the machine;
(Iii) causing each other machine to specify a corresponding non-primitive field and a local object, and inputting a corresponding local pointer of the corresponding local memory object to the one or more tables;
Including methods.
請求項1に記載の方法。 (Iv) further comprising using a global name in the table corresponding to the corresponding non-primitive field or all local pointers of the corresponding object;
The method of claim 1.
請求項1又は2に記載の方法。 (V) if processing for one of the application program parts requires the creation of a second or next reference non-primitive field in one of the machines, the corresponding second or next Further comprising creating a reference non-primitive field on each of the other machines of the machine;
The method according to claim 1 or 2.
(vii)前記第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドが、前記コンピュータのうちの他のコンピュータの各々に対し、前記対応する第2の又はその次の参照非プリミティブフィールドを作成するように指示する段階と、
を含む、
ことを特徴とする請求項3に記載の方法。 (Vi) executing the different portions of the application program using one of the multi-threads in each computer;
(Vii) a thread requesting creation of the second or next reference non-primitive field to each of the other computers of the computer for the corresponding second or next reference non-primitive field; Instructing them to create
including,
The method according to claim 3.
(ix)前記第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドとは異なるスレッドが、前記コンピュータのうちの他のコンピュータの各々に対し、前記対応する第2の又はその次の参照非プリミティブフィールドを作成するよう指示する段階と、
を更に含む、
ことを特徴とする請求項3に記載の方法。 (Viii) executing the different portions of the application program utilizing one of the multi-threads in each computer;
(Ix) a thread different from the thread requesting the creation of the second or next reference non-primitive field is sent to each of the other computers of the computer for the corresponding second or next Instructing to create a reference non-primitive field;
Further including
The method according to claim 3.
前記コンピュータのいずれか1つにおいて作成された各非プリミティブフィールドについて、前記全コンピュータによってアクセス可能か又は前記各コンピュータにおいて複製されたコンコーダンステーブルへの対応するエントリが存在し、
前記テーブルエントリは、前記1つのコンピュータの非プリミティブフィールドによって参照されたローカルメモリオブジェクトへのローカルポインタを包含し、
前記コンピュータは互いに、対応する非プリミティブフィールド及びローカルオブジェクトを指定し、前記対応するローカルメモリオブジェクトの対応するローカルポインタは、前記1つ又は複数のコンコーダンステーブルに入力される、
ことを特徴とするマルチコンピュータシステム。 A multi-computer system in which different parts of at least one application program are executed simultaneously on different computers of a plurality of computers interconnected via a communication network,
For each non-primitive field created on any one of the computers, there is a corresponding entry in the concordance table that is accessible by all computers or replicated on each computer;
The table entry contains a local pointer to a local memory object referenced by a non-primitive field of the one computer;
The computer specifies a corresponding non-primitive field and a local object to each other, and a corresponding local pointer of the corresponding local memory object is input to the one or more concordance tables;
A multi-computer system characterized by that.
ことを特徴とする請求項6に記載のシステム。 The one or more tables utilize corresponding global names corresponding to all non-primitive fields or all local pointers of corresponding objects;
The system according to claim 6.
ことを特徴とする請求項6又は7に記載のシステム。 For each second or next reference non-primitive field in one of the computers, a corresponding second or next reference non-primitive field is created in each of the other computers of the computer.
The system according to claim 6 or 7, characterized by the above.
ことを特徴とする請求項8に記載のシステム。 A thread that executes different parts of the application program using multi-thread processing in each computer and requests creation of the second or next reference non-primitive field is sent to each of the other computers of the computer. Directing the second or next reference non-primitive field to be created,
The system according to claim 8.
ことを特徴とする請求項8に記載のシステム。 A thread different from the thread that executes the different parts of the application program using multi-thread processing in each computer and requests the creation of the second or next reference non-primitive field is another computer of the computer Instructing each to create the second or next reference non-primitive field;
The system according to claim 8.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2005905580A AU2005905580A0 (en) | 2005-10-10 | Replication of Object Graphs | |
PCT/AU2006/001450 WO2007041765A1 (en) | 2005-10-10 | 2006-10-05 | Replication of object graphs |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009512030A true JP2009512030A (en) | 2009-03-19 |
Family
ID=37942203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008534815A Pending JP2009512030A (en) | 2005-10-10 | 2006-10-05 | Duplicate object graph |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1934776A4 (en) |
JP (1) | JP2009512030A (en) |
CN (1) | CN101283342B (en) |
WO (1) | WO2007041765A1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8859794B2 (en) | 2005-04-26 | 2014-10-14 | Battelle Memorial Institute | Use of fatty acids as feed material in polyol process |
US10394531B2 (en) * | 2017-04-29 | 2019-08-27 | Cisco Technology, Inc. | Hyper dynamic Java management extension |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0863382A (en) * | 1994-08-19 | 1996-03-08 | Fujitsu Ltd | Method and device for confirming data compatibility in distributed system |
US5799306A (en) * | 1996-06-21 | 1998-08-25 | Oracle Corporation | Method and apparatus for facilitating data replication using object groups |
JPH11272534A (en) * | 1998-01-20 | 1999-10-08 | Fujitsu Ltd | Document distribution processing method, server management method for the same and recording medium for server program |
JP2001188763A (en) * | 1999-12-28 | 2001-07-10 | Toshiba Corp | Distributed object system |
WO2003083614A2 (en) * | 2002-03-25 | 2003-10-09 | Eternal Systems, Inc. | Transparent consistent active replication of multithreaded application programs |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4497149T1 (en) * | 1993-09-24 | 1996-10-17 | Oracle Corp | Method and device for replicating data |
US5787442A (en) * | 1996-07-11 | 1998-07-28 | Microsoft Corporation | Creating interobject reference links in the directory service of a store and forward replication computer network |
US5829001A (en) * | 1997-01-21 | 1998-10-27 | Netiq Corporation | Database updates over a network |
SE521456C2 (en) * | 1998-12-15 | 2003-11-04 | Ericsson Telefon Ab L M | Method and apparatus of a distributed system |
WO2005103928A1 (en) * | 2004-04-22 | 2005-11-03 | Waratek Pty Limited | Multiple computer architecture with replicated memory fields |
-
2006
- 2006-10-05 EP EP06790320A patent/EP1934776A4/en not_active Withdrawn
- 2006-10-05 WO PCT/AU2006/001450 patent/WO2007041765A1/en active Application Filing
- 2006-10-05 JP JP2008534815A patent/JP2009512030A/en active Pending
- 2006-10-05 CN CN2006800374427A patent/CN101283342B/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0863382A (en) * | 1994-08-19 | 1996-03-08 | Fujitsu Ltd | Method and device for confirming data compatibility in distributed system |
US5799306A (en) * | 1996-06-21 | 1998-08-25 | Oracle Corporation | Method and apparatus for facilitating data replication using object groups |
JPH11272534A (en) * | 1998-01-20 | 1999-10-08 | Fujitsu Ltd | Document distribution processing method, server management method for the same and recording medium for server program |
JP2001188763A (en) * | 1999-12-28 | 2001-07-10 | Toshiba Corp | Distributed object system |
WO2003083614A2 (en) * | 2002-03-25 | 2003-10-09 | Eternal Systems, Inc. | Transparent consistent active replication of multithreaded application programs |
Also Published As
Publication number | Publication date |
---|---|
CN101283342B (en) | 2010-09-08 |
CN101283342A (en) | 2008-10-08 |
WO2007041765A1 (en) | 2007-04-19 |
EP1934776A4 (en) | 2009-05-06 |
EP1934776A1 (en) | 2008-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7761670B2 (en) | Modified machine architecture with advanced synchronization | |
US20070100828A1 (en) | Modified machine architecture with machine redundancy | |
US7996627B2 (en) | Replication of object graphs | |
US7739349B2 (en) | Synchronization with partial memory replication | |
US7581069B2 (en) | Multiple computer system with enhanced memory clean up | |
US20080134189A1 (en) | Job scheduling amongst multiple computers | |
US8122198B2 (en) | Modified machine architecture with partial memory updating | |
US20080133859A1 (en) | Advanced synchronization and contention resolution | |
JP2009512030A (en) | Duplicate object graph | |
US7958322B2 (en) | Multiple machine architecture with overhead reduction | |
JP2009512028A (en) | Improved machine architecture with partial memory update | |
JP2009512029A (en) | Multi-computer system with extended memory cleanup | |
AU2006303865B2 (en) | Multiple machine architecture with overhead reduction | |
AU2006301909B2 (en) | Modified machine architecture with partial memory updating | |
JP2009512081A (en) | Multi-machine architecture with reduced overhead | |
AU2006301911B2 (en) | Failure resistant multiple computer system and method | |
AU2006301910B2 (en) | Multiple computer system with enhanced memory clean up | |
AU2006301912A1 (en) | Replication of object graphs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090925 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111027 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111114 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120423 |