JP2009512028A - Improved machine architecture with partial memory update - Google Patents

Improved machine architecture with partial memory update Download PDF

Info

Publication number
JP2009512028A
JP2009512028A JP2008534813A JP2008534813A JP2009512028A JP 2009512028 A JP2009512028 A JP 2009512028A JP 2008534813 A JP2008534813 A JP 2008534813A JP 2008534813 A JP2008534813 A JP 2008534813A JP 2009512028 A JP2009512028 A JP 2009512028A
Authority
JP
Japan
Prior art keywords
computer
group
memory
machine
computers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008534813A
Other languages
Japanese (ja)
Other versions
JP2009512028A5 (en
Inventor
ジョン マシュー ホルト
Original Assignee
ワラテック プロプライエタリー リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AU2005905582A external-priority patent/AU2005905582A0/en
Application filed by ワラテック プロプライエタリー リミテッド filed Critical ワラテック プロプライエタリー リミテッド
Publication of JP2009512028A publication Critical patent/JP2009512028A/en
Publication of JP2009512028A5 publication Critical patent/JP2009512028A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

各々がローカルメモリを有する複数のコンピュータM1、M2....Mn上で少なくとも1つのアプリケーションプログラム(50)が同時に実行されるマルチコンピュータ環境において、幾つかのメモリロケーションだけの更新が開示される。ローカルメモリ内のメモリロケーション(A、B、D、E、X)は、2つのグループにカテゴリー化される。メモリロケーションの第1グループ(X1、X2、...Xn、A1、A2、...An)は各々、他のコンピュータによってアクセス可能である。メモリロケーションの第2グループ(B、E)は各々、メモリロケーションを含むローカルメモリを有するコンピュータによってのみアクセス可能である。第1グループにおけるメモリロケーションの値への変更のみが、他の全てのコンピュータに送信される。第2グループにおけるメモリロケーションが第1グループのメモリロケーションによって参照される(すなわち、第1グループロケーションが第2グループロケーションを指す)ことをアプリケーションプログラム実行が意味する場合に、第2グループにおけるメモリロケーションを第1グループに昇格するための昇格メカニズムが開示される。
【選択図】図24
A plurality of computers M1, M2,. . . . In a multi-computer environment where at least one application program (50) is simultaneously executed on Mn, only updates of several memory locations are disclosed. Memory locations (A, B, D, E, X) in local memory are categorized into two groups. Each first group of memory locations (X1, X2,... Xn, A1, A2,... An) is accessible by other computers. Each second group of memory locations (B, E) is only accessible by a computer having a local memory containing the memory location. Only changes to the value of the memory location in the first group are sent to all other computers. If the application program execution means that the memory location in the second group is referenced by the memory location in the first group (ie, the first group location refers to the second group location), the memory location in the second group A promotion mechanism for promotion to the first group is disclosed.
[Selection] Figure 24

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.

多くの場合、上述の構成は満足に機能する。これは、更新遅延が存在する可能性があるとプログラマーが認識し、プログラムのフローを調整してこれを解決することができる場合に特に当てはまる。しかしながら、最新のコンテンツではなく古いコンテンツ又は値を用いることで問題が発生し得る場合がある。   In many cases, the above arrangement works satisfactorily. This is especially true when the programmer recognizes that there may be an update delay and can adjust the program flow to resolve it. However, there may be a problem with using old content or values instead of the latest content.

本発明の根源は、更新する必要のあるデータのボリュームを低減することによって、マルチコンピュータシステムのオペレーション速度を向上させたいという要求である。   The basis of the present invention is the desire to increase the operating speed of multicomputer systems by reducing the volume of data that needs to be updated.

本発明の第1の態様によれば、単一のコンピュータ上でのみ実行されるよう記述された少なくとも1つのアプリケーションプログラムの異なる部分が、複数のコンピュータの対応する異なるコンピュータで各々ほぼ同時に実行されるマルチコンピュータ環境においてほぼ同時に更新される独立したメモリロケーションを選択する方法が開示され、本方法は、
(i)各々が各コンピュータに複製されるメモリロケーションの第1グループを選択する段階と、
(ii)各メモリロケーションが物理的に位置付けられるコンピュータの特定のコンピュータにおいてのみ各々が存在するメモリロケーションの第2グループを無視する段階と、
(iii)第1グループ内のメモリロケーションが参照を開始するいずれかのメモリロケーションを第2グループから昇格する段階と、
(iv)第2グループ内にあるときに物理的に位置付けられたコンピュータ以外のコンピュータの他の全てのコンピュータに昇格された第2グループロケーションを複製する段階と、
(v)複製され昇格された第2グループロケーションを第1グループに割り当てる段階と、
(vi)コンピュータのいずれか1つの第1グループロケーションに行なわれたあらゆる変更によってコンピュータの他のコンピュータの第1グループロケーションをほぼ同時に更新する段階と、
を含む。
According to a first aspect of the present invention, different portions of at least one application program described to be executed only on a single computer are each executed substantially simultaneously on corresponding different computers of the plurality of computers. A method is disclosed for selecting independent memory locations that are updated at approximately the same time in a multi-computer environment, the method comprising:
(I) selecting a first group of memory locations that are each replicated to each computer;
(Ii) ignoring the second group of memory locations, each existing only in a particular computer of the computers where each memory location is physically located;
(Iii) promoting any memory location from which the memory location in the first group starts to reference from the second group;
(Iv) replicating the promoted second group location to all other computers other than computers physically located when in the second group;
(V) assigning a duplicated and promoted second group location to the first group;
(Vi) updating the first group locations of other computers of the computer substantially simultaneously with any changes made to the first group location of any one of the computers;
including.

本発明の第2の態様によれば、単一のコンピュータ上でのみ実行されるよう記述された少なくとも1つのアプリケーションプログラムの異なる部分が、複数のコンピュータの対応するコンピュータ上で各々ほぼ同時に実行されるマルチコンピュータシステムが開示され、複数のコンピュータの各々は独立したローカルメモリを有し、複数のコンピュータの全ては、通信ネットワークによって相互接続されており、ローカルメモリ内に存在するメモリロケーションは、2つのグループ、すなわち各々が各コンピュータ上で複製されるメモリロケーションの第1グループと、各第2グループメモリロケーションが物理的に存在するコンピュータの特定のコンピュータ内にのみ各々が存在するメモリロケーションの第2グループとにカテゴリー化され、該システムは、通信ネットワークを介して、1つのコンピュータ内の第1グループのメモリロケーションに行なわれたあらゆる変更を他のコンピュータの全ての他の対応するメモリロケーションに対して更新するメモリ更新手段と、アプリケーションプログラムの実行の結果として、第1グループのメモリロケーションによってトップで現在参照される第2グループのいずれかのメモリロケーションを第2グループから第1グループに昇格する昇格手段と、を含む。   According to a second aspect of the present invention, different portions of at least one application program described to be executed only on a single computer are each executed substantially simultaneously on corresponding computers of the plurality of computers. A multi-computer system is disclosed wherein each of a plurality of computers has an independent local memory, all of the plurality of computers are interconnected by a communication network, and the memory locations present in the local memory are in two groups A first group of memory locations that are each replicated on each computer, and a second group of memory locations that each exists only within a particular computer of the computers in which each second group memory location is physically present Categorized in The system comprises: a memory updating means for updating any changes made to a first group of memory locations in one computer over all other corresponding memory locations in another computer via a communication network; And elevating means for promoting any memory location of the second group currently referenced at the top by the first group of memory locations from the second group to the first group as a result of execution of the application program.

本発明の第3の態様によれば、上記の方法を実行するため、或いは上記のコンピュータシステムを形成するために少なくとも1つの他のコンピュータと協働するように適合された単一のコンピュータが開示される。   According to a third aspect of the invention, there is disclosed a single computer adapted to cooperate with at least one other computer to perform the above method or to form the above computer system. Is done.

本発明の第4の態様によれば、記憶媒体内に記憶され、複数のコンピュータが上記に定義された方法を実行することが可能となるよう動作可能なプログラム命令のセットを含むコンピュータプログラム製品が開示される。   According to a fourth aspect of the invention, there is provided 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 method defined above. Disclosed.

本発明の第5の態様によれば、通信ネットワークを介して相互接続され、上述された方法を確実に実行するよう動作可能な複数のコンピュータが開示される。   According to a fifth aspect of the present invention, a plurality of computers are disclosed that are interconnected via a communication network and operable to reliably perform the method described above.

次に、本発明の好ましい実施形態を図面を参照しながら説明する。   Next, preferred embodiments of the present invention will be described with reference to the drawings.

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 application code 50 written in the JAVA® language and executed within the JAVA® virtual machine 61. Therefore, if the target language of the application is JAVA® language, a JAVA® virtual machine that can operate JAVA® code regardless of the machine manufacturer and the details inside the computer or machine. Is used. For further details, see US Sun Microsystems Inc., which is incorporated herein by reference. T. Lindholm and F.M. See “The JAVA® Virtual Machine Specification” 2nd Edition (JAVA® virtual machine specification) 2nd edition by Yellin.

図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” DRT 71 for convenience, as seen in FIG. 1B. Will be corrected.

図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 application code 50 cooperates with the distributed runtime system 71 via a load process indicated by arrows 75 or 75A or 75B, and Java virtual machines M1, M2,. . . Loaded into Mn. As used herein, the terms “distributed runtime” and “distributed runtime system” are synonymous in nature and are described by way of illustration and not limitation in a particular language running on a particular platform. It is generally understood to include library code and processes that support the configured software. In addition, the distributed runtime system can also include library code and processes that support software written in a particular language running within a particular distributed computing environment. A runtime system (whether or not a distributed runtime system) typically handles the details of the interface between the program and the operating system, such as system calls, program startup and termination, and memory management. . For background purposes, a conventional distributed computing environment (DCE) (which does not provide the functionality of the distributed runtime or distributed runtime system 71 of the present invention used in the preferred embodiment of the present invention) is Open Software Foundation. Is available from Although this distributed computing environment (DCE) implements a form of computer-to-computer communication for software running on a machine, it cannot perform the necessary modifications or communication operations, among many limitations. Among its functions and operations, the preferred DRT 71 includes a plurality of machines M1, M2,. . . Coordinate specific communication between Mn. In addition, the preferred distributed runtime 71 includes each JAVA virtual machine 72 or machine JVM # 1, JVM # 2,. . . Operation is entered during the load process indicated by arrow 75A or 75B of JAVA application 50 on JVM # n. Although many embodiments and descriptions are provided for the JAVA® language and JAVA® virtual machine so that the reader can benefit from the specific embodiments, the present invention provides a Java It is understood in light of the description presented herein that it is not limited to either a registered language or JAVA virtual machine, or any other language, virtual machine, machine or operating environment. Will.

図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 same application code 50 is assigned to each machine M1, M2,. . . It will be apparent that Mn is loaded. However, each machine M1, M2,. . . Communication between Mn is physically routed through the machine hardware, but the individual DRTs 71/1. . . It is advantageously controlled by 71 / n. Therefore, in practice this means that the machines M1, M2. . . DRTs 71/1,... That communicate with each other via a network or other communication link 53 instead of Mn. . . It can be conceptualized as 71 / n. Machine M1, M2. . . Mn or DRT 71/1, 71/2. . . Either this direct communication between 71 / n or a combination of such communications is contemplated and included. The preferred DRT 71 provides transport, protocol, and link independent communication.

1つの共通アプリケーションプログラム又はアプリケーションコード50及びその実行可能バージョン(場合によっては修正のある)は、複数のコンピュータ又はマシーンM1、M2...Mn全体で同時に又は並行して実行している。アプリケーションプログラム50は、単一のマシーン又はコンピュータ上で実行するように(或いは、単一のコンピュータオペレーションをエミュレートする上述の特許出願のマルチコンピュータシステム上で動作するように)記述されている。本質的には、修正された構造は、個々のマシーンの各々上で同一のメモリ構造及びコンテンツを複製するものである。   One common application program or application code 50 and its executable version (possibly modified) may be stored in a plurality of computers or machines M1, M2,. . . The entire Mn is executed simultaneously or in parallel. Application program 50 is described to run on a single machine or computer (or to run on the multi-computer system of the above-mentioned patent application that emulates a single computer operation). In essence, the modified structure duplicates the same memory structure and content on each individual machine.

用語「共通アプリケーションプログラム」は、単一のマシーン上で動作するよう記述され、複数のコンピュータ又はマシーン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 application code 50. This is either a single copy or multiple identical copies, each individually modified to produce a modified copy or version of the application program or program code. Each copy or instance is then ready to run on the corresponding machine. At a point after they have been modified, they are common in that they perform similar operations and operate to be consistent and consistent with each other. Optionally, a plurality of computers, machines, information appliances, or the like that implement embodiments of the present invention, other computers, machines, information appliances, or the like that do not implement embodiments of the present invention It will be understood that it can be connected or coupled to things.

同じアプリケーションプログラム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 application code 50 can be modified before loading or during the loading process, or modified after the loading process, with some drawbacks, on each machine. A customized or modified version of the application code can be provided. Any differences between the programs or application code on the various machines can be tolerated as long as other requirements for interoperability, consistency, and consistency described herein can be maintained. As will become apparent below, the machines M1, M2. . . Mn, and in other words, the machines M1, M2. . . All of the Mn have the same or substantially the same application code 50, usually with modifications that can be machine specific.

各マシーン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 application code 50 has the same rules (or slight optimization changes for each modifier 51). / 1, 51/2... 51 / n so that it is modified by the corresponding modifier 51 according to substantially the same rule).

マシーン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 DRT 71, in other embodiments, attached to application code and data 50) And can be implemented in a JAVA virtual machine itself). Accordingly, the machines M1, M2. . . All of the Mn have the same (or substantially the same or similar) modifier 51 for each modification required. For example, other modifications may be required for memory management and replication, for initialization, for finalization, and / or for synchronization (although in all embodiments these modifications may be required) Not all types are required).

モディファイア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 modifier 51 and distributed runtime 71. For example, as indicated by the dashed line in FIG. 1C, the modifier 51 can be implemented as a component of or within the distributed runtime 71, so that the DRT 71 performs the functions and operations of the modifier 51. Can do. Alternatively, the functions and operations of the modifier 51 are external to the structure, software, firmware, or other means used to implement the DRT 71, such as in the code and data 50, or in the JAVA virtual machine itself. Can be implemented. In one embodiment, both modifier 51 and DRT 71 are implemented or described in a single computer program code that provides DRT and modifier functionality. In this case, the modifier function and structure are actually included in the DRT. Regardless of how it is implemented, modifier functions and structures are responsible for modifying the executable code of application code programs, and distributed runtime functions and structures perform communication between computers or machines. Take a role. The communication functions in one embodiment are implemented through an intermediate protocol layer in the DRT computer program code on each machine. The DRT can implement a communication stack, for example, in the JAVA language, and can provide communication or call between machines using Transmission Control Protocol / Internet Protocol (TCP / IP). These functions or operations may be implemented in a variety of ways, and in view of the description provided herein, these functions or operations may be between structures and / or procedural elements, or computer program code or data structures. It will be appreciated that the exact implementation or division in between is not critical to the invention and is not essential.

しかしながら、図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 communication network 53 or other communication link. Each individual computer or machine has a corresponding modifier 51. Each individual computer also includes a communication port that connects to a communication network. The communication network 53 or path can be any electronic signaling, data, or digital communication network or path, including network connection over the Internet, or ETHERNET® or INFINIBAND and extensions and improvements thereof. A low speed and thus low cost communication path is preferred, such as some common network configuration. Preferably, the computer has one or more known communication ports (such as CISCO Power Connect 5224 Switch) that connect to the communication network 53.

上述の構成の結果として、マシーン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 application code 50 as a whole is not the number of machines (n) × 10 MB as expected. This is not an additive combination of the internal memory capacity of all n machines. Rather, it is 10 MB, or some number that is larger than 10 MB but smaller than n × 10 MB. This is acceptable if the internal memory capacity of the machine is different, and thus if the internal memory capacity of one machine is smaller than the internal memory capacity of at least one other machine of the machine, A small memory size allows such memory (or a portion thereof) to be treated as “common” memory (ie, similar equivalent memory for each of the machines M1... Mn) or to execute common application code. Can be used as the maximum memory capacity of the machine.

しかしながら、各マシーンの内部メモリが処理される方式は、当初は性能に関する潜在的な制約となる可能性があるが、これがどのような改良されたオペレーション及び性能をもたらすかについては以下で明らかになるであろう。当然、各マシーン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 application program 50.

プロトタイプマルチコンピュータシステムの非商用オペレーションは、システム内のあらゆるマシーン又はコンピュータが、あらゆる可能なメモリロケーション(例えば、そのローカル複製を有する)を利用しないか、或いはこれを参照する必要がないことを示す。結果として、各マシーンのローカルメモリが当該マシーンのオペレーションに十分である限り、何らかの他のマシーンに同一の各マシーンのローカルメモリがなくともマルチコンピュータシステムを動作させることが可能となる。すなわち、特定のマシーンが、幾つかの特定のメモリロケーション(例えばそのローカル複製を有する)を参照する必要がない場合、その特定のメモリロケーションが当該特定のマシーンにおいて複製されないことは問題ではない。   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 application code 50 may run on the platform and / or virtual machine and / or machine and / or runtime system and / or language regardless of the machine or processor manufacturer and internal details of the machine It is possible to use the architecture. It will be appreciated that the platform and / or runtime system may include virtual and non-virtual machine software and / or firmware architecture, and hardware and direct hardware coding applications and implementations.

仮想マシーン又は抽象マシーン環境のより一般的なセットにおいて、並びに現在及び将来のコンピュータ及び/又はコンピュータマシーン及び/又は情報アプライアンス又は処理システムにおいて、クラス及び/又はオブジェクトのいずれかを利用しない、或いは利用を必要としない場合があるが、本発明の構造、方法、及びコンピュータプログラム及びコンピュータプログラム製品は依然として適用可能である。クラス及び/又はオブジェクトのいずれかを利用しないコンピュータ及び/又はコンピュータマシーンの実施例は、例えば、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 application code 50 can also be performed before the application program code 50 is loaded, during the application program code 50 loading process, or after the application program code 50 loading process (or some combination thereof). This is because the application code comprises additional instructions and / or is otherwise modified by semantic protection program manipulation and / or optionally translated from the input code language to a different code language (eg source It can be described as instrumentation, program conversion, translation, or compilation procedures in that it can be converted from a code language or an intermediate-code language to an object-code language or machine-code language. In this context, it is understood that the term “compile” usually or conventionally encompasses changes in code or language, such as changes from source code to object code or from one language to another. However, in the present invention, the term “compile” (and its grammatically equivalent phrases) is not limited to this, and can include or include modifications within the same code or language. For example, compilation and its equivalent phrases include normal compilation (eg, by way of example and not limitation, source-code to object code, etc.), source-code to source-code compilation, and object-code to object. It is understood to encompass compilation into code and any modified combinations. Also included are so-called “intermediate-code languages” in the form of “pseudo-object-code”.

限定ではなく例証として、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 application code 50 is such that the operating system reads application code 50 from a hard disk or other storage device, media, or source and copies it to memory for application This is done during loading of the application program code, such as by preparing to start executing the program code. In another embodiment, in a JAVA® virtual machine, the analysis or scrutiny is Java®. lang. ClassLoader. It can be performed during the class loading process of the loadClass method (for example, “java (registered trademark). lang. ClassLoader.loadClass ()”).

代替的に、又はこれに加えて、アプリケーションコード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 DRT 71 or other code modifying means can be used for each machine M1, M2,. . . Responsible for creating or replicating the memory structure and content for each of Mn, thereby enabling interoperability of multiple machines. In some embodiments, this replicated memory structure is the same. In other embodiments, the memory structure will have portions that are identical and other portions that are not identical. In yet other embodiments, the memory structure differs only in format or storage convention, such as Big Endian or Little Endian format or convention.

必要なときには組み合わせて適用されるこれらの構造及び手続きは、コンピュータ又はコンピュータ環境のメモリロケーション、アドレス範囲、オブジェクト、クラス、資産、資源、又はいずれかの他の手続き又は構造的態様が、必要な場合には、複数の個々のマシーン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 application program 50 of FIG. . . It can be seen from FIG. 2 that there is a number “n” of Mn. These machines have the numbers 1, 2, 3. . . Etc. are assigned. This order is usually looped or closed so that machines 2 and 3 are hierarchically adjacent and machines “n” and 1 are similar. There is preferably another machine X that is provided to perform various housekeeping functions to operate as a lock server. In particular, another machine X is a low-value machine and can be much cheaper than other machines that can have desired attributes such as processor speed. In addition, an additional low value machine (X + 1) is preferably available to provide redundancy in case machine X fails. If two such server machines X and X + 1 are provided, they preferably operate as dual machines in a cluster configuration for simplicity. Machines X and X + 1 can operate as a multi-computer system according to the present invention, if desired. However, this generally results in undesirable complexity. If machine X is not provided, machine X functions such as housekeeping functions are provided by one, some, or all of the other machines.

引用により上記が組み込まれた本明細書では、各ローカルメモリのコンテンツが送信遅延は別として、実質的に同一であることを確保するように対応するメモリロケーションを更新することができるシステムを開示している。しかしながら、マシーンの数が増え且つアプリケーションプログラムの複雑さも増すにつれて、通信ネットワーク53を介して送信する必要のあるデータのボリュームも増える。   The present specification, which is incorporated by reference above, discloses a system that can update the corresponding memory location to ensure that the contents of each local memory, apart from the transmission delay, are substantially the same. ing. However, as the number of machines increases and the complexity of application programs increases, the volume of data that needs to be transmitted over the communication network 53 also increases.

この問題を克服するために、本発明の1つの実施形態によれば、潜在的に更新を必要とするメモリロケーションは、少なくとも2つのカテゴリーに分割される。第1カテゴリーは、複数のマシーンのいずれか2つ又はそれ以上によってアクセス可能なメモリロケーションからなり、従って、連続的に更新されるはずである。第2カテゴリーは、メモリロケーションが物理的に位置付けられるローカルマシーンによってのみアクセス可能なメモリロケーションからなる。これらのメモリロケーションにおいては、最初に、他のマシーン全てに対して当該メモリロケーションのコンテンツを複製し、次いで、オリジナルローカルメモリコンテンツが変更される度に、複製されたメモリロケーションのコンテンツを更新し続けることは望ましいことではない。2つのカテゴリーに分類されるメモリロケーションは、関係のあるメモリロケーションを指すポインタが存在するかどうかによって容易に区別することができる。幾つかのメカニズム又はモードが存在し、これによってこのカテゴリー化及びデータ転送を行なうことができる。   In order to overcome this problem, according to one embodiment of the present invention, memory locations that potentially require updating are divided into at least two categories. The first category consists of memory locations accessible by any two or more of the plurality of machines and therefore should be updated continuously. The second category consists of memory locations that are accessible only by the local machine where the memory location is physically located. At these memory locations, the content of that memory location is first replicated to all other machines, and then the content of the replicated memory location continues to be updated each time the original local memory content changes. That is not desirable. Memory locations that fall into two categories can be easily distinguished by the presence of pointers to the relevant memory locations. There are several mechanisms or modes that allow this categorization and data transfer.

ここで図3を参照すると、複数のマシーンM1、M2、.....Mn(存在する場合はいずれかのサーバーマシーンX以外)の各々は、概略的に示されたメモリロケーションを有する。マシーンM1では、クラスX1及びオブジェクトBが存在する。マシーンM2では、マシーンM1についてと同じクラスX2、及びオブジェクトDが存在する。マシーンMnでは、同じクラスXnと2つのオブジェクトA及びEが存在する。メモリロケーションXのコンテンツは、マシーンの各々について同じであり、各マシーンは、メモリロケーションXからの読み取りと、メモリロケーションXへの書き込みの両方を行なうことができる。この理由のために、メモリロケーションXの境界は、二重線で示されている。   Referring now to FIG. 3, a plurality of machines M1, M2,. . . . . Each of Mn (other than any server machine X, if present) has a memory location indicated schematically. In the machine M1, a class X1 and an object B exist. In the machine M2, the same class X2 and the object D as the machine M1 exist. In the machine Mn, the same class Xn and two objects A and E exist. The contents of memory location X are the same for each machine, and each machine can both read from and write to memory location X. For this reason, the boundary of the memory location X is indicated by a double line.

好ましくは、各メモリロケーションと、テーブル内の各メモリロケーションにアクセスできるマシーンとをリストするテーブルを維持することは、図2のサーバーマシーンXに好都合である。このようなテーブルは、到達可能性テーブルといわれ、図4に示される。図4のテーブルの第1行は、マシーンMnによってのみアクセスできるメモリロケーションAを扱う。図4のテーブルの第2行は、マシーンM1によってのみアクセスできるメモリロケーションBを扱う。同様に、オブジェクトDは、マシーンM2によってのみアクセスでき、オブジェクトEは、マシーンMnによってのみアクセスできる。しかしながら、クラスXは、マシーンM1、M2及びMnの全てによってアクセスすることができる。   Preferably, maintaining a table that lists each memory location and the machines that can access each memory location in the table is convenient for server machine X of FIG. Such a table is called a reachability table and is shown in FIG. The first row of the table of FIG. 4 deals with memory location A that can only be accessed by machine Mn. The second row of the table of FIG. 4 deals with memory location B that can only be accessed by machine M1. Similarly, object D can only be accessed by machine M2, and object E can only be accessed by machine Mn. However, class X can be accessed by all of the machines M1, M2 and Mn.

上述の複数マシーン環境では、クラスXのコンテンツがマシーンの1つによって書き込まれることによって変更された場合、そのコンテンツの変更をネットワーク53を介して他のマシーン全てに送信する必要がある。しかしながら、オブジェクトA、B、D及びEは各々、単一のマシーンによってのみアクセスでき、そのローカルマシーンだけがアクセスすることができるので、これらのメモリロケーションのコンテンツを作成又は更新することのいずれにおいてもあまり意味がない。   In the multi-machine environment described above, if a Class X content is changed by being written by one of the machines, the content change needs to be transmitted to all other machines via the network 53. However, since objects A, B, D, and E can each be accessed only by a single machine and only by its local machine, either in creating or updating the contents of these memory locations. It doesn't make much sense.

特定のマシーン、例えばマシーンMnによって処理が行なわれている間、クラスXnがオブジェクトAを参照する必要がある場合には、クラスXnは、オブジェクトAを指すといわれる。これは、クラスXnからオブジェクトAを指す矢印によって図5に示されている。オブジェクトAのステータスにおける変更は、他のマシーン全てによってアクセス又は参照できることを意味する。この理由のために、図5ではこれはオブジェクトAnと名付けられ、二重線で囲まれており、オブジェクトA1、A2、その他として他のマシーンの各々において再現される。更に、矢印は、各対応するクラスX1、X2、その他から対応する参照オブジェクトA1、A2、その他を示す。オブジェクトAのステータスのこの変更の結果として、図4の到達可能性テーブルの第1行は、図6に示されるように、オブジェクトAがマシーンM1、M2、及びMnによって到達できることを示すように修正される。図2のサーバーマシーンXは、図6の修正された到達可能性テーブルを使用し、オブジェクトAのコンテンツが、1つのマシーンによって修正される場合に他のマシーン全てにネットワーク3を介して確実に送信されるようにする。   Class Xn is said to refer to object A if class Xn needs to refer to object A while being processed by a particular machine, eg, machine Mn. This is illustrated in FIG. 5 by the arrow pointing from class Xn to object A. A change in the status of object A means that it can be accessed or referenced by all other machines. For this reason, it is named object An in FIG. 5 and is surrounded by a double line and is reproduced on each of the other machines as objects A1, A2, etc. Further, the arrows indicate the corresponding reference objects A1, A2, etc. from the corresponding classes X1, X2, etc. As a result of this change in the status of object A, the first row of the reachability table of FIG. 4 has been modified to indicate that object A can be reached by machines M1, M2, and Mn, as shown in FIG. Is done. The server machine X of FIG. 2 uses the modified reachability table of FIG. 6 to ensure that when the contents of object A are modified by one machine, all other machines are sent over the network 3. To be.

図7及び8は別の修正を示す。ここで、マシーンMnにおけるオブジェクトAは、マシーンMnによって実行される処理の結果として、新しいオブジェクトKを指している。結果として、図8に示されるように到達可能性テーブルに付加的な行を挿入することが必要になる。この新しい行は、オブジェクトKがマシーンMnによってのみアクセスできることを示す。   Figures 7 and 8 show another modification. Here, the object A in the machine Mn points to a new object K as a result of the process executed by the machine Mn. As a result, it becomes necessary to insert additional rows into the reachability table as shown in FIG. This new row indicates that object K can only be accessed by machine Mn.

このような場合において、図5に関して前述の修正が行なわれた場合、図9に示される状況が生じる。クラスXnはここでオブジェクトAnを指すので、前述と同様に、オブジェクトAは他のマシーンの各々に複製される。しかしながら、オブジェクトAn自体がオブジェクトKを指すので、オブジェクトKの各々は、他のマシーンの各々で複製される必要がある。これにより、オブジェクトK1、K2、.....Knが生じる。更に、これらのオブジェクトの各々は、全マシーンによってアクセス可能であり、その結果、これらのオブジェクトは図9の二重線で示される。到達可能性テーブルへの対応する変更は、図10に示され、ここではオブジェクトKが、全マシーンによってアクセス可能であるように示されている。   In such a case, the situation shown in FIG. 9 occurs when the correction described above with respect to FIG. 5 is made. Since class Xn here refers to object An, object A is replicated to each of the other machines as before. However, since the object An itself points to the object K, each of the objects K needs to be duplicated on each of the other machines. Thereby, the objects K1, K2,. . . . . Kn is generated. In addition, each of these objects is accessible by the entire machine, so that these objects are indicated by double lines in FIG. The corresponding change to the reachability table is shown in FIG. 10, where object K is shown to be accessible by all machines.

上述の詳細な説明は、メモリロケーションに言及しているが、構造、資産、又は資源(JAVA(登録商標)ではクラス又はオブジェクトと呼ばれる)に等しく適用可能である。これらは、全マシーンによってグローバルに使用できる(グローバルな)名前又はタグが既に割り当てられている(異なるマシーンのローカルメモリ構造は異なる場合があることは理解されるので)。従って、1つのマシーンにおける特定のメモリロケーションに割り当てられたローカル又は実際の名前は、別のマシーンにおける対応するメモリロケーションに割り当てられたローカル名とは完全に異なるものとすることができる。このグローバル名称割り当ては、クラス又はオブジェクトが最初に初期化されるロード時のコンパイルプロセス中に起こるのが好ましい。これは、サーバーマシーンXによって維持されたテーブルを介して最も好都合に行なわれる。このテーブルはまた、到達可能性データを含むことができる。   The detailed description above refers to memory locations, but is equally applicable to structures, assets, or resources (referred to as classes or objects in JAVA). These are already assigned names or tags that can be used globally by all machines (as it is understood that the local memory structures of different machines may be different). Thus, a local or actual name assigned to a particular memory location on one machine can be completely different from a local name assigned to a corresponding memory location on another machine. This global name assignment preferably occurs during the load-time compilation process when the class or object is first initialized. This is most conveniently done via a table maintained by server machine X. This table can also include reachability data.

到達可能性データによって、構造、資産、又は資源(すなわち、メモリロケーション)を2つのカテゴリー又はクラスに分割できるようになることは、コンピュータ技術分野における当業者には明らかであろう。第1カテゴリーは、全てのマシーンによってアクセスできるこれらのロケーションからなる。対応する全メモリロケーションが同じコンテンツ(更新データの送信による遅延を除く)を有するように、このようなメモリロケーションに関して実行される書き込み動作を全マシーンに分散させる必要がある。しかしながら、第2カテゴリーに関しては、これらのメモリロケーションがローカルマシーンによってのみアクセス可能であるので、これらのメモリロケーションへの書き込み動作は、他のマシーン全てに分散させる必要はなく、他のマシーン上の対応するメモリロケーションも必要ではない。このカテゴリー化の結果として、データのかなりの量を1つのマシーンから他のマシーンに送信する必要がなくなり、よって、ネットワーク53上のトラフィックの量がかなり低減される。   It will be apparent to those skilled in the computer arts that reachability data allows a structure, asset, or resource (ie, memory location) to be divided into two categories or classes. The first category consists of these locations that can be accessed by all machines. Write operations performed on such memory locations need to be distributed across all machines so that all corresponding memory locations have the same content (except for delays due to the transmission of update data). However, for the second category, since these memory locations are only accessible by the local machine, write operations to these memory locations do not need to be distributed to all other machines and are supported on other machines. There is also no need for a memory location. As a result of this categorization, it is not necessary to send a significant amount of data from one machine to another, thus significantly reducing the amount of traffic on network 53.

前述の説明では、サーバーマシーンX内に位置付けられ且つ該サーバーマシーンXによって維持される単一到達可能性テーブルが提供される。しかしながら、各マシーンがその固有の到達可能性テーブルを操作することが望ましい場合には、サーバーマシーンXなしでコンピュータシステムを動作させることもできる。図11−14は、図4、6、8、及び10それぞれに対応する条件下での個々のマシーンについての個々の到達可能性テーブルを示している。   In the foregoing description, a single reachability table is provided that is located in and maintained by server machine X. However, if it is desirable for each machine to manipulate its own reachability table, the computer system can be operated without the server machine X. FIGS. 11-14 show individual reachability tables for individual machines under conditions corresponding to FIGS. 4, 6, 8, and 10, respectively.

すなわち、図11では、マシーンM1に対するテーブルは、クラスXに対する行とオブジェクトBに対する行とを有する。同様に、マシーンM2に対するテーブルは、クラスXに対する行とオブジェクトDに対する行とを有する。しかしながら、マシーンMnに対するテーブルは、クラスXに対して1つと、オブジェクトA及びEの各々に対して1つの3つの行を有する。図3と5の比較によって示される変更が生じると、クラスXnはオブジェクトAnを参照しているので、従って、他のクラスX1、X2などの全ては、対応するオブジェクトA1、A2などを参照しなければならず、全マシーンは、オブジェクトAに対するマシーンの到達可能性テーブル内に1つの行を含まなくてはならない。これは、図12に示される状況である。他のマシーンは、オブジェクトAに対してテーブルエントリを継承しているといわれる。   That is, in FIG. 11, the table for machine M1 has a row for class X and a row for object B. Similarly, the table for machine M2 has a row for class X and a row for object D. However, the table for machine Mn has three rows, one for class X and one for each of objects A and E. When the changes shown by the comparison of FIGS. 3 and 5 occur, class Xn refers to object An, so all other classes X1, X2, etc. must refer to the corresponding objects A1, A2, etc. All machines must contain one row in the machine reachability table for object A. This is the situation shown in FIG. Other machines are said to inherit table entries for object A.

マシーンMnは、マシーンMn上のクラスXに対するテーブルエントリを調べることによってオブジェクトAが他のマシーン全体の複製を必要とすることを判断することができる。図示の状況では、マシーンMnは、オブジェクトAとクラスXに対するテーブルエントリを比較することによって、複製についての肯定的決定を行なう。オブジェクトAに対するテーブルエントリが、クラスXに対するテーブルエントリ内に全てのマシーンを含む場合には、マシーンMnは、オブジェクトAが他のいずれのマシーンに対して更に複製する必要がないことを正しく判断することができる。更に、テーブルエントリを他のマシーンに追加又は更新することも必要ではない。或いは、オブジェクトAのテーブルエントリが、クラスXのテーブルエントリ内にマシーンのフルセットを含まない場合には、マシーンMnは、オブジェクトAに対するテーブルエントリを更新して、クラスXに対するテーブルエントリ内にリストされたマシーンのセットを含めるようにし、更に、オブジェクトAに対する新しいテーブルエントリ内にリストされた全マシーンに対して、マシーンMn上のオブジェクトAに対する新しいテーブルエントリ内にリストされたマシーンのセットでオブジェクトAに対するそのローカルテーブルを更新するよう指示する。最後に、マシーンMn上のクラスXのマシーンのセットの継承の前にマシーンMn上のオブジェクトAに対するテーブルエントリ内には未だ存在しなかったマシーンのセットについては、マシーンMnは、これらのマシーン(すなわち、マシーンM1及びM2)に対して、オブジェクトAに対するローカルテーブルエントリを追加し、オブジェクトA及び関連するクラスXへのリファレンスに関してメモリ内にローカル複製を作成するよう指示する。   Machine Mn can determine that object A needs a duplicate of the entire other machine by examining the table entry for class X on machine Mn. In the situation shown, machine Mn makes an affirmative decision about replication by comparing table entries for object A and class X. If the table entry for object A contains all machines in the table entry for class X, then machine Mn correctly determines that object A does not need to be duplicated for any other machine. Can do. Furthermore, it is not necessary to add or update table entries to other machines. Alternatively, if the table entry for object A does not include the full set of machines in the table entry for class X, machine Mn updates the table entry for object A and is listed in the table entry for class X. A set of machines, and for all machines listed in the new table entry for object A, for the object A in the set of machines listed in the new table entry for object A on machine Mn. Instructs the local table to be updated. Finally, for a set of machines that did not already exist in the table entry for object A on machine Mn prior to the inheritance of the set of class X machines on machine Mn, machine Mn will be able to identify these machines (ie, , Instruct machines M1 and M2) to add a local table entry for object A and create a local replica in memory for a reference to object A and the associated class X.

同様に、図7に関して、付加的なオブジェクトKがマシーンMnによって作成されると、マシーンM1及びM2がオブジェクトKのローカル複製を持たず、図7に示されるように、これらはオブジェクトA及びKに対するテーブルエントリも持たないので、図13に示すように、マシーンMnに対する到達可能性テーブル内にオブジェクトKに対する付加的な行が作成される。図9に示すように、クラスXへのオブジェクトAのリファレンスの割り当ては、オブジェクトAがクラスXのテーブルエントリを継承することを必要とする。しかしながら、これに加えて、オブジェクトAがオブジェクトKを参照するときに、オブジェクトKはまた、オブジェクトAの新規に更新されたテーブルエントリ(クラスXに対するテーブルエントリの継承値を含む)を継承することによって、クラスXのテーブルエントリを間接的に継承しなくてはならない。マシーンMn上でのオブジェクトA及びKに対するテーブルエントリの更新に従って、マシーンMnは、オブジェクトA及びKに対するテーブルエントリ内にリストされた全マシーンに対し、そのローカルテーブルを更新するよう指示し、更に、オブジェクトA及びKそれぞれのテーブルエントリ内に本来は存在していない全マシーンに対し、オブジェクトA及びKのローカル複製を作成するよう指示する。個々のマシーンに対して結果として生じたテーブルが、図14に示されている。   Similarly, with respect to FIG. 7, when additional objects K are created by machine Mn, machines M1 and M2 do not have local replicas of object K, and these are for objects A and K, as shown in FIG. Since there is no table entry, an additional row for object K is created in the reachability table for machine Mn, as shown in FIG. As shown in FIG. 9, the assignment of the reference of the object A to the class X requires that the object A inherits the table entry of the class X. However, in addition to this, when object A references object K, object K also inherits the object A's newly updated table entry (including the inherited value of the table entry for class X). , Class X table entries must be inherited indirectly. In accordance with the update of the table entry for objects A and K on machine Mn, machine Mn instructs all machines listed in the table entries for objects A and K to update their local tables, and Instructs all machines not originally present in the A and K table entries to create local copies of objects A and K, respectively. The resulting table for an individual machine is shown in FIG.

更なる実施例を図15に示す。ここで、A1及びA2を示すオブジェクトは、マシーンM1及びM2上でシェアされるが、マシーンMn上には存在しない。これは、サーバーマシーンXによって利用される単一到達可能性テーブル又は個々のマシーンによって利用される複数到達可能性テーブルをそれぞれ示す図16及び17のオブジェクトAに対するテーブルエントリ内に示されている。図18に示されるように、アプリケーションプログラムの処理中のマシーンM2は、オブジェクトDのリファレンスをオブジェクトAに割り当てる。この結果、DRT71/2は、マシーンM2上のオブジェクトD及びAに対するテーブルエントリを調べる。テーブルのこのインテロゲーションは、オブジェクトDに対するテーブルエントリがオブジェクトAに対するテーブルエントリ内にリストされたマシーンのセット内に全マシーンを含まないと判断する。従って、マシーンM2上のオブジェクトDに対するテーブルエントリは、オブジェクトDに対するテーブルエントリ内に未だ存在しないオブジェクトAに対するテーブルエントリのマシーンを含むように更新され、この場合、これは付加的なマシーンM1である。このオペレーションによれば、マシーンM2は、マシーンM1に対し、マシーンM2上のオブジェクトDに対する現在更新されたテーブルエントリ内にリストされたマシーンからなるオブジェクトDに対するテーブルエントリを作成し、オブジェクトDのローカル複製を作成するよう指示する。単一到達可能性テーブル及び複数到達可能性テーブルに対して結果として生じた変更は、図19及び20それぞれに示されている。   A further embodiment is shown in FIG. Here, the objects indicating A1 and A2 are shared on the machines M1 and M2, but do not exist on the machine Mn. This is shown in the table entry for object A in FIGS. 16 and 17, which shows a single reachability table used by server machine X or multiple reachability tables used by individual machines, respectively. As shown in FIG. 18, the machine M2 that is processing the application program assigns the reference of the object D to the object A. As a result, DRT 71/2 examines table entries for objects D and A on machine M2. This interrogation of the table determines that the table entry for object D does not include all machines in the set of machines listed in the table entry for object A. Thus, the table entry for object D on machine M2 is updated to include the machine for the table entry for object A that does not already exist in the table entry for object D, which in this case is an additional machine M1. According to this operation, the machine M2 creates a table entry for the object D consisting of the machines listed in the currently updated table entry for the object D on the machine M2 for the machine M1, and makes a local copy of the object D. Instruct to create. The resulting changes to the single reachability table and the multiple reachability table are shown in FIGS. 19 and 20, respectively.

クラスXに割り当てられたオブジェクトAへのリファレンスの追加がマシーンM1によって実行される別の実施例が、図21に示されている。結果として、クラスX及びオブジェクトAに対するテーブルを調べ、オブジェクトAがその到達可能性状態を変更するかどうかを判断する。オブジェクトAに対するテーブルエントリが、クラスXに対するテーブルエントリ内に全マシーンを含む場合には、追加の動作は行なわれない。しかしながら、図21の場合と同様に、クラスXが、オブジェクトAに対するテーブルエントリに含まれないマシーンをそのテーブルエントリ内に含む場合には、到達可能性変更が行なわれる。この変更に従って、マシーンM1は、クラスXに対するエントリを更新する。更に、マシーンM1は、他の全マシーンに対し、マシーンM1上のオブジェクトAに対する現在更新されたテーブルエントリと同じになるようにオブジェクトAに対するテーブルエントリを追加及び/又は更新するよう指示する。このオペレーションによれば、オブジェクトAに対するテーブルエントリ内に未だ存在しないあらゆるマシーンは、オブジェクトAに対するそのテーブルエントリを追加し、オブジェクトAのローカルメモリ内に複製を作成するよう指示される(この場合には、マシーンMn上でのみ必要とされる)。しかしながら、マシーンM1はまた、オブジェクトAがオブジェクトDを参照しており、よって、オブジェクトDがオブジェクトAの到達可能性の変更を継承しなくてはならないことを認知している。この結果、オブジェクトDに対するテーブルエントリは、オブジェクトAの更新されたテーブルエントリ内にリストされた全マシーンを含むように更新される。   Another embodiment in which the addition of a reference to object A assigned to class X is performed by machine M1 is shown in FIG. As a result, the table for class X and object A is examined to determine whether object A changes its reachability state. If the table entry for object A includes all machines in the table entry for class X, no additional action is performed. However, similarly to the case of FIG. 21, when the class X includes a machine that is not included in the table entry for the object A in the table entry, the reachability change is performed. In accordance with this change, machine M1 updates the entry for class X. In addition, machine M1 instructs all other machines to add and / or update a table entry for object A to be the same as the currently updated table entry for object A on machine M1. According to this operation, any machine that does not yet exist in the table entry for object A is instructed to add that table entry for object A and create a duplicate in object A's local memory (in this case). Required only on machine Mn). However, machine M1 also recognizes that object A refers to object D, and therefore object D must inherit the reachability change of object A. As a result, the table entry for object D is updated to include all machines listed in the updated table entry for object A.

上記に加えて、マシーンM1はまた、オブジェクトDのテーブルエントリ内に以前に含まれていなかった全マシーン(この場合は、マシーンMnのみ)に対し、オブジェクトDに対するテーブルエントリにマシーンM1上の更新されたテーブルエントリ値に等しい値を追加し、オブジェクトDのローカルメモリ内に複製を作成するよう指示する。更に、マシーンM1は、他の全マシーン(この場合は、マシーンM2のみ)に対し、オブジェクトDに対するテーブルエントリをマシーンM1上で更新された新しいテーブルエントリ値で更新するよう指示する。これらの変更を反映する単一到達可能性テーブル及び複数到達可能性テーブルが図22及び23それぞれに示されている。   In addition to the above, machine M1 is also updated on machine M1 with a table entry for object D for all machines that were not previously included in the table entry for object D (in this case only machine Mn). A value equal to the table entry value is added to instruct to create a duplicate in the local memory of object D. Further, the machine M1 instructs all other machines (in this case, only the machine M2) to update the table entry for the object D with the new table entry value updated on the machine M1. A single reachability table and a multiple reachability table reflecting these changes are shown in FIGS. 22 and 23, respectively.

ここで図24を参照すると、図18に示された位置は、オブジェクトDへのリファレンスを割り当てられているマシーンM1のクラスXによって修正される。この事象に関連して、オブジェクトD及びクラスXの到達可能性テーブルは、到達可能性の変更が起きる可能性についてDRT71/1によって調べられる。この結果、オブジェクトD及びクラスXに対するテーブルエントリが比較され、オブジェクトDに対するテーブルエントリがクラスXのテーブルエントリ内にリストされた全マシーンを含む場合、付加的な動作を行なう必要はない。或いは、オブジェクトDに対するテーブルエントリがクラスXに対するテーブルエントリ内にリストされた全マシーンを含まない場合、到達可能性の変更が行なわれ、その結果として生じる動作が必要とされる。   Referring now to FIG. 24, the position shown in FIG. 18 is modified by the class X of the machine M1 that is assigned a reference to the object D. In connection with this event, the reachability table for object D and class X is examined by DRT 71/1 for the possibility of a change in reachability. As a result, table entries for object D and class X are compared, and if the table entry for object D includes all machines listed in the table entry for class X, no additional action is required. Alternatively, if the table entry for object D does not include all the machines listed in the table entry for class X, the reachability change is made and the resulting action is required.

図24に示されるように、マシーンM1は、オブジェクトDが到達可能性変更を受けたと判断する。この結果、マシーンM1は最初に、クラスXに対するテーブルエントリ内に全マシーンを含むようオブジェクトDに対するテーブルエントリを更新する。オブジェクトDに対するテーブルエントリのマシーンのセット内に以前はなかった各新しいマシーンについて、マシーンM1は、このような各マシーンに対し、マシーンM1上のオブジェクトDに対する現在更新されているマシーンエントリに等しいオブジェクトDに対するローカルテーブルエントリを追加し、オブジェクトDのローカルメモリ内に複製を作成するよう指示する。互いのマシーンについて、マシーンM1はまた、他のマシーンに対し、マシーンM1内のオブジェクトDに対するテーブルエントリに等しくなるようにオブジェクトDに対するそのテーブルエントリを更新するよう指示する。これらの変更を反映する単一到達可能性テーブル及び複数到達可能性テーブルを図25及び26にそれぞれ示す。   As shown in FIG. 24, the machine M1 determines that the object D has undergone reachability change. As a result, machine M1 first updates the table entry for object D to include all machines in the table entry for class X. For each new machine that was not previously in the set of table entries for object D, machine M1 will, for each such machine, object D equal to the currently updated machine entry for object D on machine M1. Add a local table entry for and instruct to create a replica in the local memory of object D. For each other machine, machine M1 also instructs the other machine to update its table entry for object D to be equal to the table entry for object D in machine M1. A single reachability table and a multiple reachability table reflecting these changes are shown in FIGS. 25 and 26, respectively.

上記では、本発明の幾つかの実施形態のみを説明しており、本発明の範囲から逸脱することなく修正を行い得る点は当業者には明らかである。例えば、図4、6、8、及び10のテーブルは全て、各メモリロケーションに対応する行を示している。実際には、そのローカルマシーンによってのみアクセス可能なD及びEなどのメモリロケーションについては、テーブル内に行を有する必要はない。代わりに、このような行は、メモリロケーションが1つ又はそれ以上の他のマシーンによってアクセス可能になった場合にのみ作成される。同様に、JAVA(登録商標)への言及は、JAVA(登録商標)言語とJAVA(登録商標)プラットフォーム及びアーキテクチャの両方を含む。   The foregoing describes only some embodiments of the present invention, and it will be apparent to those skilled in the art that modifications may be made without departing from the scope of the invention. For example, the tables of FIGS. 4, 6, 8, and 10 all show a row corresponding to each memory location. In practice, for memory locations such as D and E that are only accessible by the local machine, there is no need to have a row in the table. Instead, such a row is created only when the memory location becomes accessible by one or more other machines. Similarly, references to JAVA include both the JAVA language and the JAVA platform and architecture.

修正の全ての説明される事例では、ロード前、又はロード中、或いはロード後で未修正のアプリケーションコードの実行が開始される前に、アプリケーションコード50が修正される場合、改良されたアプリケーションコードは、修正が行なわれるのに続いて未修正のアプリケーションコードの代わりにロードされて、未修正のアプリケーションコードの代わりに実行されることを理解されたい。   In all described cases of modification, if the application code 50 is modified before loading, during loading, or after execution of unmodified application code begins after loading, the improved application code is It should be understood that subsequent to the modification being made, it is loaded in place of the unmodified application code and executed in place of the unmodified application code.

代替として、修正が、ロード後及び未修正のアプリケーションコードの実行の開始後に行なわれる事例では、未修正のアプリケーションコードは、修正が実施されるのに対応して修正アプリケーションコードと全体的に置き換えることができ、或いは、実行中の未修正のアプリケーションコードに増分的に修正が行なわれるときに部分的に又は増分的に置き換えることができる点を理解されたい。このような修正ルートのどれが使用されるかに関係なく、引き続き行なわれる修正が、未修正のアプリケーションコードの代わりに実行される。   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 DRT 71 when initially recording or creating a list of all or some subsets of all objects (eg memory locations or fields), each machine M1, M2,. . . For each such recorded object on Mn, the machines M1, M2. . . It will be apparent to those skilled in the art in view of the detailed description provided herein that there is a common or similar name or identity on each of Mn. However, in an individual machine, each machine can store and generally store memory values or content in different memory locations according to its own internal process, so a given name or identity The local object corresponding to will change or may change over time. Thus, a table, or list, or other data structure in each of the DRTs will generally have a different local memory location corresponding to a single memory name or identity, but each global “memory name” or identity is Will have the same “memory value or content” stored in different local memory locations. Thus, for each global name, there will be a family of corresponding independent local memory locations with one family member in each of the computers. Although local memory names may be different, assets, objects, locations, etc. have essentially the same content or values. Thus, the family is consistent.

本明細書で使用される用語「テーブル」又は「タビュレーション」は、データを順番に記憶及び読み取ることのできるあらゆるフォーマットのリスト又は編成されたデータ構造を含むことが意図される。   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 application program code 50 being loaded can be accomplished in many ways or by various means. These methods or means include, but are not limited to, at least the following five methods and variations or combinations of these five methods.
(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.

コンピュータ及び/又はプログラミング技術分野における当業者であれば、付加的なコード又は命令が既存のコード又は命令に挿入されてこれを修正する場合、既存のコード又は命令セットは、オフセット、分岐、属性、マークアップ、及び同様のものが正しく処理され又は応じられるように更なる修正(例えば、シーケンシャル命令の再ナンバリングによってなど)を必要とする可能性があることを認識するであろう。   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)各メモリロケーションが物理的に位置付けられるコンピュータの特定のコンピュータにおいてのみ各々が存在するメモリロケーションの第2グループを無視する段階と、
(iii)第1グループ内のメモリロケーションが参照を開始するいずれかのメモリロケーションを第2グループから昇格する段階と、
(iv)第2グループ内にあるとkに物理的に位置付けられたコンピュータ以外のコンピュータの他の全てのコンピュータに昇格された第2グループロケーションを複製する段階と、
(v)複製され昇格された第2グループロケーションを第1グループに割り当てる段階と、
(vi)コンピュータのいずれか1つの第1グループロケーションに行なわれたあらゆる変更によってコンピュータの他のコンピュータの第1グループロケーションをほぼ同時に更新する段階と、
を含む。
好ましくは、本方法は、
(vii)昇格された第2グループメモリロケーション自体が参照するいずれかの1つ又は複数のメモリロケーションをメモリロケーションの第2グループから昇格させ、これによって昇格されたメモリロケーションによって参照されるメモリロケーションは、その参照しているメモリロケーションの昇格を継承する追加の段階を含む。
好ましくは、本方法は、
(viii)メモリロケーションの第1グループをリストするテーブルを維持する追加の段階を含む。
好ましくは、本方法は、
(ix)別のサーバーコンピュータ上に全ての複数のコンピュータに対するテーブルを1つ維持する段階の更なるステップを含む。
或いは、この方法は、
(x)複数のコンピュータの各々に複数のテーブルの1つを維持する追加の段階を含む。
In summary, different portions of at least one application program written to run only on a single computer are updated almost simultaneously in a multi-computer environment where each of the plurality of computers is executed almost simultaneously on different corresponding computers. A method for selecting independent memory locations is provided, the method comprising:
(I) selecting a first group of memory locations that are each replicated to each computer;
(Ii) ignoring a second group of memory locations, each existing only in a particular computer of the computers where each memory location is physically located;
(Iii) promoting any memory location from which the memory location in the first group starts to reference from the second group;
(Iv) replicating the promoted second group location to all other computers other than the computer physically located at k as being in the second group;
(V) assigning a duplicated and promoted second group location to the first group;
(Vi) updating the first group location of another computer of the computer substantially simultaneously with any changes made to the first group location of any one of the computers;
including.
Preferably, the method comprises
(Vii) Promoting any one or more memory locations referenced by the promoted second group memory location itself from the second group of memory locations, whereby the memory location referenced by the promoted memory location is , Including the additional step of inheriting the promotion of the referenced memory location.
Preferably, the method comprises
(Viii) including an additional step of maintaining a table listing the first group of memory locations.
Preferably, the method comprises
(Ix) including the further step of maintaining one table for all the plurality of computers on another server computer.
Alternatively, this method
(X) including an additional step of maintaining one of the plurality of tables on each of the plurality of computers.

好ましくは、メモリロケーションは、資産、構造、又は資源を含む。単一のコンピュータ上でのみ実行されるよう記述された少なくとも1つのアプリケーションプログラムの異なる部分が、複数のコンピュータの対応する異なるコンピュータ上で各々ほぼ同時に実行されるマルチコンピュータシステムであって、複数のコンピュータの各々は、独立ローカルメモリを有し、複数のコンピュータの全ては、通信ネットワークによって相互接続されており、ローカルメモリ内に存在するメモリロケーションは、2つのグループ、すなわち各々が各コンピュータ上で複製されるメモリロケーションの第1グループと、各第2グループメモリロケーションが物理的に存在するコンピュータの特定のコンピュータ内にのみ各々が存在するメモリロケーションの第2グループとにカテゴリー化され、本システムは、1つのコンピュータ内の第1グループのメモリロケーションに行なわれたあらゆる変更を他のコンピュータの全ての他の対応するメモリロケーションに対して通信ネットワークを介して更新するメモリ更新手段と、アプリケーションプログラムの実行の結果として、第1グループのメモリロケーションによってトップで現在参照される第2グループのいずれかのメモリロケーションを第2グループから第1グループに昇格する昇格手段とを含む。   Preferably, the memory location includes an asset, structure, or resource. A multi-computer system in which different portions of at least one application program described to be executed only on a single computer are each executed substantially simultaneously on different corresponding computers of the plurality of computers, Each having an independent local memory, all of the plurality of computers are interconnected by a communication network, and the memory locations present in the local memory are duplicated on each computer in two groups: A first group of memory locations, and a second group of memory locations, each of which exists only within a particular computer of the computers in which each second group memory location is physically present, Two Memory update means for updating any changes made to the first group of memory locations in the computer over all other corresponding memory locations of other computers via the communication network; and as a result of execution of the application program And a means for promoting any of the memory locations of the second group currently referenced at the top by the memory locations of the first group from the second group to the first group.

好ましくは、昇格手段は、昇格された第2グループメモリロケーション自体が参照するいずれかの1つ又は複数のメモリロケーションをメモリロケーションの第2グループから昇格するよう動作可能な継承手段を含む。好ましくは、昇格手段は、メモリロケーションの第1グループをリストするテーブルを含む。   Preferably, the promotion means includes inheritance means operable to promote any one or more memory locations referenced by the promoted second group memory location itself from the second group of memory locations. Preferably, the promotion means includes a table that lists the first group of memory locations.

好ましくは、本システムは、別のサーバーコンピュータ内に存在する複数のアプリケーションプログラム実行コンピュータ全てに対して1つのテーブルを有する。
或いは、本システムは、複数のテーブルを複数のアプリケーションプログラム実行コンピュータの各々に1つ有する。
好ましくは、メモリロケーションは、資産、構造、又は資源を含む。
更に、記憶媒体内に記憶され、上記の方法のいずれかを複数のコンピュータが実行できるよう動作可能なプログラム命令のセットを含むコンピュータプログラム製品が提供される。
同様に、通信ネットワークを介して相互接続され、上記の方法のいずれかを確実に実行するよう動作可能な複数のコンピュータが提供される。
Preferably, the system has one table for all of the plurality of application program execution computers existing in another server computer.
Alternatively, this system has a plurality of tables in each of a plurality of application program execution computers.
Preferably, the memory location includes an asset, structure, or resource.
In addition, a computer program product is provided that includes a set of program instructions stored in a storage medium and operable to allow a plurality of computers to perform any of the methods described above.
Similarly, a plurality of computers are provided that are interconnected via a communication network and that are operable to reliably perform any of the methods described above.

更に、上記の方法のいずれかを実行するため、又は上記のコンピュータシステムを形成するために、少なくとも1つの他のコンピュータと協働するように適合された単一のコンピュータが提供される。   In addition, a single computer is provided that is adapted to cooperate with at least one other computer to perform any of the methods described above or to form the computer system 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”.

JAVA(登録商標)コードを動作し、これによって単一のJAVA(登録商標)仮想マシーンを構成するよう配置された従来技術のコンピュータの概略図である。1 is a schematic diagram of a prior art computer arranged to operate JAVA code and thereby constitute a single JAVA virtual machine. FIG. 図1Aに類似したコードの初期ロードを示す図である。FIG. 1B illustrates an initial load of code similar to FIG. 1A. 各々がマルチコンピュータシステムを形成するためのJAVA(登録商標)仮想マシーンである複数のコンピュータの相互接続を示す図である。FIG. 2 is a diagram showing interconnection of a plurality of computers, each of which is a JAVA (registered trademark) virtual machine for forming a multicomputer system. 少なくとも1つの付加的なサーバーマシーンXがサーバーとして接続された「n」個のアプリケーション実行コンピュータの概略図である。FIG. 2 is a schematic diagram of “n” application execution computers to which at least one additional server machine X is connected as a server. クラス及びオブジェクトを含むメモリロケーションを示す複数のマシーン全てにおけるメモリロケーションの概略マップである。FIG. 5 is a schematic map of memory locations in all of a plurality of machines showing memory locations including classes and objects. 図3の種々のメモリロケーション、及び到達される能力を示すテーブルである。4 is a table showing the various memory locations of FIG. 3 and the capabilities reached. 図3に類似し、メモリロケーションAを指すメモリロケーションXの結果を示すマップである。FIG. 4 is a map similar to FIG. 3 showing the result of memory location X pointing to memory location A. FIG. 図5に対応する到着可能性テーブルである。It is an arrival possibility table corresponding to FIG. 図3に類似し、新しいメモリロケーションKを指すメモリロケーションAを示すマップである。FIG. 4 is a map similar to FIG. 3 showing a memory location A pointing to a new memory location K. FIG. 図7に対応する到着可能性テーブルである。It is an arrival possibility table corresponding to FIG. 図7に類似し、メモリロケーションAを指すメモリロケーションXの結果を示すマップである。FIG. 8 is a map similar to FIG. 7 showing the result of memory location X pointing to memory location A. FIG. 図9に対応する到着可能性テーブルである。10 is an arrival possibility table corresponding to FIG. 9. 図4の到着可能性テーブルに対応する複数到着可能性テーブルを示す図である。It is a figure which shows the multiple arrival possibility table corresponding to the arrival possibility table of FIG. 図6の到着可能性テーブルに対応する複数到着可能性テーブルを示す図である。It is a figure which shows the multiple arrival possibility table corresponding to the arrival possibility table of FIG. 図8の到着可能性テーブルに対応する複数到着可能性テーブルを示す図である。It is a figure which shows the multiple arrival possibility table corresponding to the arrival possibility table of FIG. 図10の到着可能性テーブルに対応する複数到着可能性テーブルを示す図である。It is a figure which shows the multiple arrival possibility table corresponding to the arrival possibility table of FIG. 追加のメモリ変更を示す図である。FIG. 6 is a diagram illustrating additional memory changes. 図15のメモリ変更に対応する単一到着可能性テーブルを示す図である。It is a figure which shows the single arrival possibility table corresponding to the memory change of FIG. 図15のメモリ変更に対応する複数到着可能性テーブルを示す図である。It is a figure which shows the multiple arrival possibility table corresponding to the memory change of FIG. 別のメモリ変更を示す図である。It is a figure which shows another memory change. 図18のメモリ変更に対応する単一到着可能性テーブルを示す図である。It is a figure which shows the single arrival possibility table corresponding to the memory change of FIG. 図18のメモリ変更に対応する複数到着可能性テーブルを示す図である。It is a figure which shows the multiple arrival possibility table corresponding to the memory change of FIG. 更に別のメモリ変更を示す図である。It is a figure which shows another memory change. 図21のメモリ変更に対応する単一到着可能性テーブルを示す図である。It is a figure which shows the single arrival possibility table corresponding to the memory change of FIG. 図21のメモリ変更に対応する複数到着可能性テーブルを示す図である。It is a figure which shows the multiple arrival possibility table corresponding to the memory change of FIG. 更に別のメモリ変更を示す図である。It is a figure which shows another memory change. 図24のメモリ変更に対応する単一到着可能性テーブルを示す図である。It is a figure which shows the single arrival possibility table corresponding to the memory change of FIG. 図24のメモリ変更に対応する複数到着可能性テーブルを示す図である。It is a figure which shows the multiple arrival possibility table corresponding to the memory change of FIG.

符号の説明Explanation of symbols

53 ネットワーク
M1 M2 Mn マシーン
A1 A2 オブジェクト
B オブジェクト
D1 D2 Dn オブジェクト
E オブジェクト
X1 X2 Xn クラス
53 Network M1 M2 Mn Machine A1 A2 Object B Object D1 D2 Dn Object E Object X1 X2 Xn Class

Claims (15)

単一のコンピュータ上でのみ実行されるよう記述された少なくとも1つのアプリケーションプログラムの異なる部分が、複数のコンピュータの対応する異なるコンピュータ上で各々ほぼ同時に実行されるマルチコンピュータ環境においてほぼ同時に更新されるようにするために、独立したメモリロケーションを選択する方法であって、
(i)各々が前記各コンピュータ上に複製されるメモリロケーションの第1グループを選択する段階と、
(ii)各メモリロケーションが物理的に位置付けられる前記コンピュータの特定のコンピュータにおいてのみ各々が存在するメモリロケーションの第2グループを無視する段階と、
(iii)前記第1グループ内のメモリロケーションが参照を開始するいずれかのメモリロケーションを前記第2グループから昇格する段階と、
(iv)前記第2グループ内にあるときに物理的に位置付けられたコンピュータ以外の前記コンピュータの他の全てのコンピュータに前記昇格された第2グループロケーションを複製する段階と、
(v)前記複製され昇格された第2グループロケーションを前記第1グループに割り当てる段階と、
(vi)前記コンピュータのいずれか1つの第1グループロケーションに行なわれたあらゆる変更によって前記コンピュータの他のコンピュータの前記第1グループロケーションをほぼ同時に更新する段階と、
を含む方法。
Different portions of at least one application program that are described to run only on a single computer are updated substantially simultaneously in a multi-computer environment, each running almost simultaneously on a corresponding different computer of the plurality of computers. In order to select independent memory locations,
(I) selecting a first group of memory locations that are each replicated on each computer;
(Ii) ignoring a second group of memory locations, each existing only in a particular computer of the computer where each memory location is physically located;
(Iii) promoting any memory location from the second group that a memory location in the first group starts to reference;
(Iv) replicating the promoted second group location to all other computers of the computer other than those physically located when in the second group;
(V) assigning the duplicated and promoted second group location to the first group;
(Vi) updating the first group location of another computer of the computer substantially simultaneously with any changes made to the first group location of any one of the computers;
Including methods.
(vii)昇格された第2グループメモリロケーション自体が参照するいずれかの1つ又は複数のメモリロケーションを前記メモリロケーションの第2グループから昇格させ、これにより、昇格されたメモリロケーションによって参照されるメモリロケーションは、その参照しているメモリロケーションの昇格を継承する追加の段階を含む、
ことを特徴とする請求項1に記載の方法。
(Vii) Promoting any one or more memory locations referenced by the promoted second group memory location itself from the second group of memory locations, thereby causing the memory referenced by the promoted memory location A location includes an additional stage that inherits the promotion of its referenced memory location,
The method according to claim 1.
(viii)前記メモリロケーションの第1グループをリストするテーブルを維持する追加の段階を含む、
ことを特徴とする請求項1又は2に記載の方法。
(Viii) including the additional step of maintaining a table listing the first group of said memory locations;
The method according to claim 1 or 2, characterized in that
(ix)別のサーバーコンピュータ上に全ての前記複数のコンピュータに対する1つの前記テーブルを維持する追加の段階を含む、
ことを特徴とする請求項3に記載の方法。
(Ix) including the additional step of maintaining one said table for all said plurality of computers on another server computer;
The method according to claim 3.
(x)前記複数のコンピュータの各々内に前記複数の前記テーブルの1つを維持する追加の段階を含む、
ことを特徴とする請求項3に記載の方法。
(X) including the additional step of maintaining one of the plurality of the tables in each of the plurality of computers;
The method according to claim 3.
前記メモリロケーションが、資産、構造、又は資源を含む、
ことを特徴とする請求項1−5のいずれか1項に記載の方法。
The memory location includes an asset, structure, or resource;
6. A method according to any one of claims 1-5.
単一のコンピュータ上でのみ実行されるよう記述された少なくとも1つのアプリケーションプログラムの異なる部分が、複数のコンピュータの対応する異なるコンピュータ上で各々ほぼ同時に実行されるマルチコンピュータシステムであって、
前記複数のコンピュータの各々は独立したローカルメモリを有し、前記複数のコンピュータの全ては、通信ネットワークによって相互接続されており、前記ローカルメモリ内に存在するメモリロケーションは、2つのグループ、すなわち各々が前記各コンピュータ上で複製されるメモリロケーションの第1グループと、前記各第2グループメモリロケーションが物理的に存在する前記コンピュータの特定のコンピュータ内にのみ各々が存在するメモリロケーションの第2グループとにカテゴリー化され、前記システムが、
前記通信ネットワークを介して、1つのコンピュータ内の前記第1グループのメモリロケーションに行なわれたあらゆる変更を前記他のコンピュータの全ての他の対応するメモリロケーションに対して更新するメモリ更新手段と、
前記アプリケーションプログラムの実行の結果として、前記第1グループのメモリロケーションによってトップで現在参照される前記第2グループのいずれかのメモリロケーションを前記第2グループから前記第1グループに昇格する昇格手段と、
を含むことを特徴とするマルチコンピュータシステム。
A multi-computer system in which different portions of at least one application program described to run only on a single computer are each executed substantially simultaneously on different corresponding computers of the plurality of computers,
Each of the plurality of computers has an independent local memory, all of the plurality of computers are interconnected by a communication network, and the memory locations present in the local memory are in two groups, each of which is A first group of memory locations that are replicated on each computer and a second group of memory locations that each exist only within a particular computer of the computer where each second group memory location physically exists Categorized, the system is
Memory updating means for updating any changes made to the first group of memory locations in one computer via the communication network to all other corresponding memory locations in the other computer;
Promotion means for promoting any of the memory locations of the second group currently referenced at the top by the memory locations of the first group as a result of execution of the application program from the second group to the first group;
A multi-computer system comprising:
前記昇格手段は、昇格された第2グループメモリロケーション自体が参照するいずれかの1つ又は複数のメモリロケーションを前記メモリロケーションの第2グループから昇格するよう動作可能な継承手段を含む、
ことを特徴とする請求項7に記載のシステム。
The promotion means includes inheritance means operable to promote any one or more memory locations referenced by the promoted second group memory location itself from the second group of memory locations.
The system according to claim 7.
前記昇格手段が、前記メモリロケーションの第1グループをリストするテーブルを含む、
ことを特徴とする請求項7又は8に記載のシステム。
The promotion means includes a table listing a first group of the memory locations;
The system according to claim 7 or 8, characterized by the above.
別のサーバーコンピュータ内に存在する前記複数のアプリケーションプログラム実行コンピュータ全てに対して1つの前記テーブルを有する、
ことを特徴とする請求項9に記載のシステム。
Having one table for all of the plurality of application program execution computers existing in another server computer;
The system according to claim 9.
複数の前記テーブルを前記複数のアプリケーションプログラム実行コンピュータの各々内に1つ有する、
ことを特徴とする請求項9に記載のシステム。
A plurality of the tables are provided in each of the plurality of application program execution computers.
The system according to claim 9.
前記メモリロケーションが、資産、構造、又は資源を含む、
ことを特徴とする請求項7〜11のいずれか1項に記載のシステム。
The memory location includes an asset, structure, or resource;
The system according to any one of claims 7 to 11, characterized in that:
記憶媒体内に記憶され、請求項1〜6のいずれか1項に記載の方法を複数のコンピュータが実行できるように動作可能なプログラム命令のセットを含む、
ことを特徴とするコンピュータプログラム製品。
A set of program instructions stored in a storage medium and operable to allow a plurality of computers to perform the method of any one of claims 1-6.
A computer program product characterized by that.
通信ネットワークを介して相互接続され、請求項1〜6のいずれか1項に記載の方法を確実に実行するよう動作可能な複数のコンピュータ。   A plurality of computers interconnected via a communication network and operable to reliably perform the method of any one of claims 1-6. 請求項1〜6のいずれか1項に記載の方法を実行するため、或いは請求項7〜12及び14のいずれか1項に記載のコンピュータシステムを形成するために、少なくとも1つの他のコンピュータと協働するように適合された単一のコンピュータ。   At least one other computer to perform the method of any one of claims 1 to 6 or to form a computer system according to any one of claims 7 to 12 and 14. A single computer adapted to work together.
JP2008534813A 2005-10-10 2006-10-05 Improved machine architecture with partial memory update Pending JP2009512028A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AU2005905582A AU2005905582A0 (en) 2005-10-10 Modified Machine Architecture with Partial Memory Updating
PCT/AU2006/001447 WO2007041762A1 (en) 2005-10-10 2006-10-05 Modified machine architecture with partial memory updating

Publications (2)

Publication Number Publication Date
JP2009512028A true JP2009512028A (en) 2009-03-19
JP2009512028A5 JP2009512028A5 (en) 2009-11-12

Family

ID=37942200

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008534813A Pending JP2009512028A (en) 2005-10-10 2006-10-05 Improved machine architecture with partial memory update

Country Status (4)

Country Link
EP (1) EP1934774A4 (en)
JP (1) JP2009512028A (en)
CN (1) CN101283343B (en)
WO (1) WO2007041762A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9235485B2 (en) * 2013-07-22 2016-01-12 International Business Machines Corporation Moving objects in a primary computer based on memory errors in a secondary computer

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01297759A (en) * 1988-05-26 1989-11-30 Tokyo Electric Power Co Inc:The Decentralized computer system for broadcast memory system
JPH06332869A (en) * 1993-05-24 1994-12-02 Hitachi Ltd Shared data managing system
JPH07152640A (en) * 1993-11-26 1995-06-16 Hitachi Ltd Decentralized common memory system
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
US6324587B1 (en) * 1997-12-23 2001-11-27 Microsoft Corporation Method, computer program product, and data structure for publishing a data object over a store and forward transport
US20040073828A1 (en) * 2002-08-30 2004-04-15 Vladimir Bronstein Transparent variable state mirroring
JP2005267392A (en) * 2004-03-19 2005-09-29 Nec Corp Shared data processing circuit, information processor, information processing system, shared data processing method, and shared data processing program

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU7684094A (en) * 1993-09-24 1995-04-10 Oracle Corporation Method and apparatus for data replication
CN1232914C (en) * 2000-04-26 2005-12-21 计算机合作者思维公司 Method and apparatus for maintaining data integrity across distributed computer systems
JP2007534066A (en) * 2004-04-22 2007-11-22 ワラテック プロプライエタリー リミテッド Multicomputer architecture with replicated memory field

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01297759A (en) * 1988-05-26 1989-11-30 Tokyo Electric Power Co Inc:The Decentralized computer system for broadcast memory system
JPH06332869A (en) * 1993-05-24 1994-12-02 Hitachi Ltd Shared data managing system
JPH07152640A (en) * 1993-11-26 1995-06-16 Hitachi Ltd Decentralized common memory system
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
US6324587B1 (en) * 1997-12-23 2001-11-27 Microsoft Corporation Method, computer program product, and data structure for publishing a data object over a store and forward transport
US20040073828A1 (en) * 2002-08-30 2004-04-15 Vladimir Bronstein Transparent variable state mirroring
JP2005267392A (en) * 2004-03-19 2005-09-29 Nec Corp Shared data processing circuit, information processor, information processing system, shared data processing method, and shared data processing program

Also Published As

Publication number Publication date
EP1934774A1 (en) 2008-06-25
EP1934774A4 (en) 2009-04-15
CN101283343A (en) 2008-10-08
CN101283343B (en) 2010-05-19
WO2007041762A1 (en) 2007-04-19

Similar Documents

Publication Publication Date Title
US7761670B2 (en) Modified machine architecture with advanced synchronization
US20060265703A1 (en) Computer architecture and method of operation for multi-computer distributed processing with replicated memory
US20070100828A1 (en) Modified machine architecture with machine redundancy
US7996627B2 (en) Replication of object graphs
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
US7849369B2 (en) Failure resistant multiple computer system and method
US8209393B2 (en) Multiple machine architecture with overhead reduction
JP2009512028A (en) Improved machine architecture with partial memory update
JP2009512030A (en) Duplicate object graph
JP2009512029A (en) Multi-computer system with extended memory cleanup
AU2006301909B2 (en) Modified machine architecture with partial memory updating
JP2009512081A (en) Multi-machine architecture with reduced overhead
AU2006303865B2 (en) Multiple machine architecture with overhead reduction
AU2006301911B2 (en) Failure resistant multiple computer system and method
AU2006301910B2 (en) Multiple computer system with enhanced memory clean up
WO2007041764A1 (en) Failure resistant multiple computer system and method

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090925

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: 20111111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111121

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120507