(57)【要約】  ｎ個のコンピュータ（Ｍ１、Ｍ２・・・Ｍｎ）の各々が、単一のコンピュータ上でのみ実行されるように記述された単一のアプリケーション・プログラムの異なる部分を実行する。全てのコンピュータをアドレス指定されたメモリ位置になされたあらゆる変更に更新することによって、各コンピュータのローカル・メモリがほぼ同じに保持される。全てのコンピュータを相互接続する通信ネットワークの伝送遅延及び待ち時間のために、同じメモリ位置が、２つ又はそれ以上のマシンによりほぼ同時に更新されたとき、競合が生じ得る。競合の検出及び解決が開示される。各メモリ位置が更新された累積数を示すカウント値（９９）が使用される。現在格納されるカウント値と入ってくる更新カウント値が同じである場合、競合が示される。エコーを抑制する方法及びエコーを除去する方法が開示される。特に、同じメモリ位置（Ｄ）への連続的な一連の伝送の場合、カウント値を２だけインクリメントすることが開示される。【選択図】図３３
2010506273.tif 000002
【特許請求の範囲】
【請求項１】
メモリ更新メッセージが送られる通信リンクにより相互接続される少なくとも２つの物理的位置の各々における少なくとも１つのメモリ位置のコンテンツを更新する方法であって前記方法は、
（ｖｉ）前記物理的位置を更新し、更新メッセージを検証することを可能にする検証データを各メモリ更新メッセージと関連付ける、
ステップを含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ処理に関し、特定的には、アドレス・メモリに関連するコンピュータ処理活動における競合の検出に関するが、こうした活動に制限されるものではない。本発明は、通信ネットワークを介して相互接続され、好ましくは複製共有メモリ構成で動作する複数のコンピュータを同時に動作することに対して特定の用途を見出すが、これに制限されるものではない。
【背景技術】
【０００２】
本出願人の名で特許文献１（米国特許出願第１１／１１１，９４６号及び公開番号第２００５−０２６２３１３号が対応する）において公開された国際特許出願番号第ＰＣＴ／ＡＵ２００５／０００５８０号（代理人整理番号：５０２７Ｆ−ＷＯ）は、単一のコンピュータ上でのみ実行されるように記述されたアプリケーション・プログラムの異なる部分が、複数のコンピュータの対応する異なるコンピュータ上でほぼ同時にどのように動作することができるかを開示している。この同時動作は、本出願の優先日現在で商業的に用いられていない。どちらも本出願人名での、本出願の優先日においては公開されていない国際特許出願番号第ＰＣＴ／ＡＵ２００５／００１６４１（特許文献２）（代理人整理番号：５０２７Ｆ−Ｄ１−ＷＯ）及びＰＣＴ／ＡＵ２００６／０００５３２号（特許文献３）（代理人整理番号：５０２７Ｆ−Ｄ２−ＷＯ）でも更に詳細に開示されている。上記の先願の各々の明細書の内容は、全ての目的のために相互参照により本明細書に組み込まれる。
【０００３】
簡潔に述べると、上述の特許明細書は、単一のコンピュータ上でのみ動作されるように記述された少なくとも１つのアプリケーション・プログラムが、各々が独立したローカル・メモリを備えた多数のコンピュータ上で同時に動作できることを開示している。このプログラムの動作に必要とされるメモリ位置は、各コンピュータの独立したローカル・メモリに複製される。アプリケーション・プログラムがいずれかの複製されたメモリ位置に新しいデータを書き込む度に、その新しいデータが伝送され、各コンピュータの対応するメモリ位置の各々に格納される。従って、伝送遅延の可能性は別として、各コンピュータは、そのコンテンツが互いのコンピュータのローカル・メモリと実質的に同じであり、かつ、これを維持するように更新されるローカル・メモリを有する。全てのアプリケーション・プログラムは、一般に、新しいデータが書き込まれるよりもはるかに頻繁にデータを読み取るので、上述の構成により、コンピュータ処理速度における相当な利点を達成することが可能になる。特に、こうした方策により、商品通信ネットワークによって相互接続された２つ又はそれ以上の汎用コンピュータが、単一のコンピュータ上でのみ実行されるように記述されたアプリケーション・プログラム下で同時に実行し動作することが可能になる。
【０００４】
多くの場合、上述の構成は満足に機能する。これは、更新遅延が存在する可能性があるとプログラマーが認識し、プログラムのフローを調整してこれを解決できる場合に特に当てはまる。しかしながら、対応するメモリ位置が異なるソースから同時に又はほぼ同時に更新される場合、いずれかのメモリ位置にいずれかの変更がなされたときに、各ローカル・メモリを更新する必要性が、競合をもたらすことがある。このことが、競合状態又は類似した異常状態を確立することがある。こうした状態は、他のコンピュータ処理、情報処理、電子機器、及び電気工学の状態においても生じ得る。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第ＷＯ２００５／１０３，９２６号
【特許文献２】国際公開第ＷＯ２００６／１１０，９３７号
【特許文献３】国際公開第ＷＯ２００６／１１０，９５７号
【特許文献４】国際公開第ＷＯ２００７／０４１，７６２号
【非特許文献】
【０００６】
【非特許文献１】Ｔ．Ｌｉｎｄｈｏｌｍ及びＦ．Ｙｅｌｌｉｎ著、「Ｔｈｅ  ＪＡＶＡ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」第２版、米国Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ  Ｉｎｃ．社
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の起源は、上述の問題を少なくとも部分的に克服したいという要求である。
【課題を解決するための手段】
【０００８】
本発明の第１の態様によると、メモリ更新メッセージが送られる通信リンクにより相互接続される少なくとも２つの物理的位置の各々において、少なくとも１つのメモリ位置のコンテンツを更新する方法が開示され、この方法は、
（ｉ）物理的位置を更新し、更新メッセージを検証することを可能にする検証データを各メモリ更新メッセージと関連付ける、
ステップを含む。
【０００９】
本発明の更に別の態様によると、メモリ更新メッセージが送られる通信リンクにより相互接続される少なくとも２つの物理的位置の各々において、少なくとも１つのメモリ位置のコンテンツを更新するためのシステムが開示され、各メモリ更新メッセージは、これと関連した検証データを有し、この検証データは、物理的位置を更新し、更新メッセージを検証することを可能にする。
【００１０】
本発明の更に別の態様によると、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システム、及び、特定の位置識別子を有し、少なくとも２つのコンピュータ上に複製されたメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新における競合を検出する方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントとを利用し、
（ｉｉ）複製されたメモリ位置の各々について、前に送受信した更新の更新カウントを格納し、
（ｉｉｉ）更新される複製されたメモリ位置と関連した常駐更新カウントを現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）比較された更新カウントが同じである場合、競合状態を示す、
ステップを含む。
【００１１】
本発明の更に別の態様によると、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システム、及び、特定の位置識別子を有し、少なくとも２つのマシン上に複製され、マシンがそのレプリカ値を変更するときにほぼ同じままであるように更新される少なくとも１つのメモリ位置；その各々がメモリ位置を更新することができ、その各々が、更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントとを利用する、複数のソース；各メモリ位置と関連付けられ、前に受信した更新の更新カウントを格納する格納手段；前に格納された更新カウントを現在受信した更新信号又はパケットと比較するための比較手段；及び比較手段と接続され、比較された更新カウントが同じである場合に競合状態を示すように動作可能な競合表示手段を含む、レプリカ・メモリ更新における競合を検出するためのシステムが開示される。
【００１２】
本発明の更に別の態様によると、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々が各ローカル・メモリに複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システム、及び、特定の位置識別子を有し、少なくとも２つのコンピュータ上に複製されたメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントとを利用し、
（ｉｉ）複製されたメモリ位置の各々について、前に送受信した更新の更新カウントを格納し、
（ｉｉｉ）更新される複製されたメモリ位置と関連した現在の常駐更新カウントを現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）現在受信した更新カウントが現在の常駐更新カウントより大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、或いは、
（ｖ）現在受信した更新カウントが現在の常駐更新カウントより小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、或いは、
（ｖｉ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、競合状態を示す、
ステップを含む。
【００１３】
本発明の更に別の態様によると、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々が各ローカル・メモリに複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システム、及び、特定の位置識別子を有し、少なくとも２つのマシン上に複製され、マシンがそのレプリカ値を変更するときにほぼ同じままであるように更新される少なくとも１つのメモリ位置；その各々がメモリ位置を更新することができ、その各々が、更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントとを利用する、複数のソース；各メモリ位置と関連付けられ、前に受信した更新の更新カウントを格納する格納手段；現在受信した更新カウント値を現在の常駐更新カウント値と比較し、現在受信した更新カウントが現在の常駐更新カウントを上回る場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、或いは、現在受信した更新カウントが現在の常駐更新カウントより小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きしない、比較手段；及び比較手段に接続され、比較された更新カウントが同じである場合、競合状態を示すように動作可能である、競合表示手段を含む、レプリカ・メモリ更新のためのシステムが開示される。カウント比較手段は比較器であることが好ましい。
【００１４】
本発明の更に別の態様によると、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される、少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システムにおいて、少なくとも１つの他のコンピュータと協働して用いるための単一のコンピュータ、及び、特定の位置識別子を有し、少なくとも２つのコンピュータ上に複製されたメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントとを利用し、
（ｉｉ）複製されたメモリ位置の各々について、前に送受信した更新の更新カウントを格納し、
（ｉｉｉ）更新される複製されたメモリ位置と関連した現在の常駐更新カウントを現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）現在受信した更新カウントが現在の常駐更新カウントより大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、或いは、
（ｖ）現在受信した更新カウントが現在の常駐更新カウントより小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、或いは、
（ｖｉ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、競合状態を示す、
ステップを含む。
【００１５】
本発明の更に別の態様によると、単一のコンピュータ及びコンピュータ・プログラム製品が全て開示される。
【００１６】
本発明の更に別の態様によると、特定の位置識別子を有するメモリ位置を、複数のソースからほぼ同時に更新することができる、アドレス指定されたメモリ更新における競合を解決する方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む、更新ソースの常駐更新カウントとを利用し、
（ｉｉ）受信するメモリ位置の各々について、前に受信した更新の更新カウントを格納し、
（ｉｉｉ）受信メモリ位置に現在常駐する更新カウントをいずれかの現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）現在受信した更新カウントが現在の常駐更新カウントより大きい場合、入ってくる信号又はパケットを実行せず、或いは、
（ｖ）現在受信した更新カウントが現在の常駐更新カウントより小さい場合、入ってくる信号又はパケットを実行し、或いは、
（ｖｉ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、競合の解決を開始する、
ステップを含む。
【００１７】
本発明の更に別の態様によると、アドレス指定されたメモリ更新における競合を検出するためのシステムが開示され、このシステムは、特定の位置識別子を有する少なくとも１つのメモリ位置；その各々がメモリ位置を更新することができ、かつ、更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む、更新ソースの常駐更新カウントとを利用する、複数のソース；メモリ位置の各々と関連付けられ、前に受信した更新の更新カウントを格納する格納手段；前に格納された更新カウントをいずれかの現在受信した更新信号又はパケットの更新カウントと比較するための比較手段；比較手段と接続され、比較される更新カウントが同じである場合に競合状態を示し、現在受信した更新カウントが現在の常駐更新カウントより大きいことを比較が示す場合、現在受信した更新信号又はパケットに影響を与えず、或いは、現在受信した更新カウントが現在の常駐更新カウントより小さいことを比較が示す場合、現在受信した更新信号又はパケットに影響を与えるように動作可能な競合表示手段；及び競合表示手段と接続され、競合解決手順を開始する、競合解決手段を含む。
【００１８】
本発明の更に別の態様によると、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システムのための、かつ、特定の位置識別子を有するメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新における競合を解決する方法が開示され、この方法は、
（ｉ）更新される複製されたメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、複製されたメモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、複製されたメモリ位置と関連した更新ソースの常駐更新カウントと、更新ソースへの又は更新ソースの固有値を含む、複製されたメモリ位置と関連した更新ソースの常駐解決値とを利用し、
（ｉｉ）受信メモリ位置の各々について、前に受信した更新の更新カウント及び解決値を格納し、
（ｉｉｉ）受信メモリ位置に現在常駐する更新カウントをいずれかの現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）更新される複製されたメモリ位置と関連した現在受信した更新カウントが現在の常駐更新カウントと等しい場合、入ってくる信号又はパケットを実行せず、或いは、
（ｖ）現在受信した更新カウントが現在の常駐更新カウントより小さい場合、入ってくる信号又はパケットを実行し、或いは、
（ｖｉ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、更新される複製されたメモリ位置と関連した現在の常駐解決値を現在受信した更新信号又はパケットの更新解決値と比較し、
（ｖｉｉ）現在受信した解決値が現在の常駐解決値より大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐解決値を現在受信した解決値に上書きし、或いは、
（ｖｉｉｉ）現在受信した解決値が現在の常駐解決値より小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐解決値を現在受信した解決値に上書きしない、
ステップを含む。
【００１９】
本発明の更に別の態様によると、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々が各ローカル・メモリに複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システムのための、レプリカ・メモリ更新における競合を解決するためのシステムが開示され、このシステムは、特定の位置識別子を有する少なくとも１つのメモリ位置；その各々がメモリ位置を更新することができ、かつ、更新される複製されたメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、複製されたメモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、複製されたメモリ位置と関連した更新ソースの常駐更新カウントと、更新ソースへの又は更新ソースの固有値を含む、複製されたメモリ位置と関連した更新ソースの解決値とを利用する、複数のソース；複製されたメモリ位置の各々と関連付けられ、前に受信した更新の更新カウント及び解決値を格納する格納手段；更新される複製されたメモリ位置と関連した前に格納された更新カウントを現在受信した更新信号又はパケットの更新カウントと比較するための比較手段；比較手段と接続され、比較された更新カウントが同じである場合に競合状態を示すように動作可能な競合表示手段；競合表示手段と接続され、更新される複製されたメモリ位置と関連した現在の常駐解決値を現在受信した更新信号又はパケットの更新解決値と比較し、現在受信した解決値が現在の常駐解決値より大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、現在の常駐解決値を現在受信した解決値に上書きし、或いは、現在受信した解決値が現在の常駐解決値より小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、現在の常駐解決値を現在受信した解決値に上書きしない、競合解決手順を開始する競合解決手段を含む。
【００２０】
本発明の更に別の態様によると、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々が各ローカル・メモリに複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システム、及び、特定の位置識別子を有し、少なくとも２つのコンピュータ上に複製されたメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新における競合を解決する方法が解決され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントと、更新ソースへの又は更新ソースの固有値を含む、更新ソースの解決値とを利用し、
（ｉｉ）複製されたメモリ位置の各々について、前に送受信した更新の更新カウント及び解決値を格納し、
（ｉｉｉ）更新される複製されたメモリ位置と関連した現在の常駐更新カウントを現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、更新される複製されたメモリ位置と関連した現在の常駐解決値を現在受信した更新信号又はパケットの更新解決値と比較し、
（ｖ）現在受信した解決値が現在の常駐解決値より大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、現在の常駐解決値を現在受信した解決値に上書きし、或いは、
（ｖｉ）現在受信した解決値が現在の常駐解決値より小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、現在の常駐解決値を現在受信した解決値に上書きしない、
ステップを含む。
【００２１】
本発明の更に別の態様によると、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々が各ローカル・メモリに複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システム、及び、レプリカ・メモリ更新における競合を解決するためのシステムが開示され、このシステムは、特定の位置識別子を有し、少なくとも２つのマシン上に複製され、マシンがそのレプリカ値を変更するときにほぼ類似したままであるように更新される少なくとも１つのメモリ位置；その各々がメモリ位置を更新することができ、かつ、更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントと、更新ソースへの又は更新ソースの固有値を含む、更新ソースの解決値とを利用する、複数のソース；複製されたメモリ位置の各々と関連付けられ、前に送受信した更新の更新カウント及び解決値を格納する格納手段；更新される複製されたメモリ位置と関連した現在受信した更新カウント値を現在の常駐更新カウント値と比較し、比較された更新カウントが同じである場合、更新される複製されたメモリ位置と関連した現在の常駐解決値を現在受信した更新信号又はパケットの更新解決値と比較し、現在受信した解決値が現在の常駐解決値より大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、現在の常駐解決値を現在受信した解決値に上書きし、或いは、現在受信した解決値が現在の常駐解決値より小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、現在の常駐解決値を現在受信した解決値に上書きしない、比較手段を含む。
【００２２】
本発明の更に別の態様によると、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々が各ローカル・メモリに複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システムにおいて少なくとも１つの他のコンピュータと協働して用いるための単一のコンピュータ、及び、特定の位置識別子を有し、少なくとも２つのコンピュータ上に複製されたメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新における競合を解決する方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントと、更新ソースへの又は更新ソースの固有値を含む、更新ソースの解決値とを利用し、
（ｉｉ）複製されたメモリ位置の各々について、前に送受信した更新の更新カウント及び解決値を格納し、
（ｉｉｉ）更新される複製されたメモリ位置と関連した現在の常駐更新カウントを現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、更新される複製されたメモリ位置と関連した現在の常駐解決値を現在受信した更新信号又はパケットの更新解決値と比較し、
（ｖ）現在受信した解決値が現在の常駐解決値より大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、現在の常駐解決値を現在受信した解決値に上書きし、或いは、
（ｖｉ）現在受信した解決値が現在の常駐解決値より小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、現在の常駐解決値を現在受信した解決値に上書きしない、
ステップを含む。
【００２３】
本発明の更に別の態様によると、各々が特定の位置識別子を有し、複数のソースからほぼ同時に更新することができるアドレス指定されたメモリ位置を各々が有する複数のコンピュータを相互接続する通信ネットワーク上でメモリ更新信号又はパケットをブロードキャストする方法が開示され、この方法は、
（ｉ）更新される各メモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、各メモリ位置が更新されるコンテンツと、各々が、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む、更新ソースの少なくとも１つの常駐更新カウントとを利用し、
（ｉｉ）アプリケーション実行コンピュータの各々によるブロードキャストされた更新信号又はパケットの受信に続いて、対応する更新されたコンテンツ及び更新カウントの両方を、特定のメモリ位置の各々における各コンピュータのローカル・メモリに格納する、
ステップを含む。
【００２４】
本発明の更に別の態様によると、複数のコンピュータを相互接続する通信ネットワーク上でアドレス指定されたメモリ更新信号又はパケットをブロードキャストするためのシステムが開示され、このシステムは、各コンピュータ内に特定の位置識別子を有する少なくとも１つのメモリ位置；その各々がメモリ位置を更新することができ、かつ、更新される各メモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、各メモリ位置が更新されるコンテンツと、各々が、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む、更新ソースの少なくとも１つの常駐更新カウントとを利用する、複数のソース；及びメモリ位置の各々と関連付けられ、前に受信した更新の更新カウントを格納する格納手段を含む。
【００２５】
本発明の更に別の態様によると、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのアドレス指定されたメモリ位置を備えた独立したローカル・メモリを有し、各々が特定の位置識別子を有し、複数のソースからほぼ同時に更新することができる少なくとも１つのアドレス指定されたメモリ位置を備えた独立したローカル・メモリを有する、複数のコンピュータを相互接続する通信ネットワーク上で、メモリ更新信号又はパケットをブロードキャストする方法が開示され、この方法は、
（ｉ）更新される各メモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、各メモリ位置が更新されるコンテンツと、各々が現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの少なくとも１つの更新カウントと、各々が更新ソースの固有値を含む、更新ソースの少なくとも１つの解決値とを利用する、
ステップを含む。
【００２６】
本発明の更に別の態様によると、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々が少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、複数のコンピュータを相互接続する通信ネットワーク上でアドレス指定されたメモリ更新信号又はパケットをブロードキャストするためのシステムが開示され、このシステムは、各コンピュータ内に特定の位置識別子を有するローカル・メモリの各々に複製される少なくとも１つの複製されたメモリ位置；及びその各々が複製されたメモリ位置を更新することができ、各々が、更新される複製されたメモリ位置の各々の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、複製されたメモリ位置の各々が更新されるコンテンツと、各々が現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの少なくとも１つの更新カウントと、各々が更新ソースの固有値を含む、更新ソースの少なくとも１つの解決値とを利用する、複数のソースを含む。
【００２７】
本発明の更に別の態様によると、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、その各々が特定の識別子を有し、複数のソースからほぼ同時に更新することができる、各ローカル・メモリに複製される少なくとも１つのアドレス指定されたメモリ位置を備えた独立したローカル・メモリを有する、複数のコンピュータを相互接続する通信ネットワーク上で、アドレス指定されたメモリ更新信号又はパケットをブロードキャストする方法が開示され、この方法は、
（ｉ）更新される少なくとも２つの複製されたメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、複製されたメモリ位置の各々が更新されるコンテンツと、現在の更新を含めて全ての複製されたメモリ位置が更新された一連の機会を示す最大の数を含む、全ての複製されたメモリ位置についての更新ソースの１つの更新カウントと、更新ソースの固有値を含む、更新ソースの少なくとも１つの解決値とを利用する、
ステップを含む。
【００２８】
本発明の更に別の態様によると、特定のアドレス又は識別子を有するメモリ位置を、複数のソースからほぼ同時に更新することができる、アドレス指定されたメモリ更新における競合の検出及び／又は解決のためのシステムにおけるデータ統合方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定のアドレスを含む更新信号／パケット用フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めてメモリ位置が更新された機会の累積数を示す更新カウントとを利用し、
（ｉｉ）メモリ位置の各々について、前に受信した更新の更新カウントを格納し、
（ｉｉｉ）所定の条件が生じた時々に、格納された更新カウントを統合する、
ステップを含む。
【００２９】
本発明の更に別の態様によると、各々が特定のアドレス又は識別子を有するメモリ位置を、複数のソースからほぼ同時に更新することができる、アドレス指定されたメモリにおける競合の検出及び／又は解決を可能にするデータ統合のためのシステムが開示され、このシステムは、更新される各メモリ位置の特定のアドレスと、各アドレスについて、いずれかの受信した更新コンテンツにより上書きされるコンテンツと、いずれかの現在の更新を含めて各メモリ位置が更新された機会の累積数を示す更新カウントとを含むデータ格納部、及び、データ格納部に接続され、所定の条件が生じた時々に格納された更新カウントを統合する統合手段を含む。
【００３０】
特定のアドレス又は識別子を有する複製されたアプリケーション・メモリ位置／コンテンツを、複数のソースからほぼ同時に更新することができ、各々のコンピュータが独立したローカル・メモリを含み、各々が単一のコンピュータ上でのみ動作するように記述されたアプリケーション・プログラムの部分を実行する、アドレス指定されたメモリ更新における競合の検出及び／又は解決のための、マルチ・コンピュータ・システムにおけるデータ統合方法も開示され、この方法は、
（ｉ）更新される複製されたアプリケーション・メモリ位置／コンテンツの特定のアドレスを含む更新信号／パケット用フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めてメモリ位置が更新された機会の累積数を示す更新カウント（「カウント値」）とを利用し、
（ｉｉ）メモリ位置の各々について、前に受信した更新の更新カウントを格納し、
（ｉｉｉ）所定の条件が生じた時々に、格納された更新カウントを統合又は削除する、
ステップを含む。
【００３１】
本発明の更に別の態様によると、各々のコンピュータが独立したローカル・メモリを含み、各々が単一のコンピュータ上でのみ動作するように記述された同じアプリケーション・プログラムの部分を実行する、マルチ・コンピュータ・システム、及び、各々が特定のアドレス又は識別子を有する複製されたアプリケーション・メモリ位置／コンテンツを、複数のソースからほぼ同時に更新することができる、アドレス指定されたメモリにおける競合の検出及び／又は解決を可能にするデータ統合のためのシステムが開示され、このシステムは、更新される複製されたアプリケーション・メモリ位置／コンテンツの各々の特定のアドレスと、各アドレスについて、いずれかの受信した更新コンテンツにより上書きされるコンテンツと、いずれかの現在の更新を含めて各メモリ位置が更新された機会の累積数を示す更新カウント（「カウント値」）とを含むデータ格納部、及び、データ格納部に接続され、所定の条件が生じた時々に、格納された更新カウントを統合する統合又は削除手段を含む。
【００３２】
本発明の更に別の態様によると、一連の更新メッセージにおける更新メッセージの位置を示すためにカウント値を用いる、データ更新システムの正しい動作を確実にする方法が開示され、この方法は、
（ｉ）更新メッセージのフローを停止し、
（ｉｉ）停止中にカウント値をリセットする、
ステップを含む。
【００３３】
本発明の更に別の態様によると、少なくとも２つの物理的位置の各々における少なくとも１つのメモリ位置が、メモリ更新メッセージが送られる通信リンクによって接続される、マルチ・メモリ・システムも開示され、そこでは、送られた一連のメッセージにおけるその位置を示すために、カウント値が送られたメッセージの各々と関連付けられ、メッセージの送信が一時的に停止され、カウント値をリセットする。
【００３４】
本発明の更に別の態様によると、各々のコンピュータが独立したローカル・メモリを含み、各々が単一のコンピュータ上でのみ、かつ、少なくとも、独立したメモリの各々に複製され、ほぼ同じままであるように更新されるアプリケーション・プログラム・メモリ位置／コンテンツ上で動作するように記述されたアプリケーション・プログラムを動作させるマルチ・コンピュータ・システムにおいて、更新カウント値を格納する有限カウンタの正しい動作を確実にする方法が開示され、この方法は、
（ｉ）更新カウント値が閾値に達したとき、各コンピュータの更新カウント値をリセット又は再初期化する、
ステップを含む。
【００３５】
本発明の更に別の態様によると、各々のコンピュータが独立したローカル・メモリを含み、各々が単一のコンピュータ上でのみ、かつ、少なくとも、独立したメモリの各々に複製され、ほぼ同じままであるように更新されるアプリケーション・プログラム・メモリ位置／コンテンツ上で動作するように記述されたアプリケーション・プログラムを動作するマルチ・コンピュータ・システムにおいて、更新カウント値を格納する有限カウンタの正しい動作を確実にする方法が開示され、この方法は、
（ｉ）関連した更新カウント値が閾値に達したとき、又は、所定の時間が経過したとき、複製されたメモリ位置／コンテンツのレプリカ更新伝送を停止し、
（ｉｉ）コンピュータの各々において、更新カウント値をリセット又は再初期化し、
（ｉｉｉ）前に停止されたレプリカ更新伝送を再開する、
ステップを含む。
【００３６】
本発明の更に別の態様によると、少なくとも１つのメモリ位置が、異なるメモリ・ストアに複製され、かつ、各々が位置のアドレスと、位置についての新しいコンテンツと、一連の更新メッセージを示すように所定の数によりインクリメントされる、一連の更新メッセージにおける位置を示す更新カウントとを含む更新メッセージを伝送する多数のソースからほぼ同時に更新することができる、メモリ・システムにおけるメモリ更新エコーを克服する方法が開示され、この方法は、
（ｉ）特定のメモリ位置に関してどのソースが最後に伝送されたかを判断し、
（ｉｉ）同じメモリ位置に関して同じソースが連続的に伝送される場合、第２の伝送についての更新カウントを所定の数より多くインクリメントする、
ステップを含む。
【００３７】
本発明の更に別の態様によると、メモリ更新エコーの除去を用いる複製型メモリ・システムが開示され、このシステムは、異なるメモリ・ストアに複製され、かつ、各々が位置のアドレスと、位置についての新しいコンテンツと、一連の更新メッセージを示すように所定の数だけインクリメントされる、一連の更新メッセージにおける更新メッセージの位置を示す更新カウントとを含む更新メッセージを伝送する多数のソースからほぼ同時に更新することができる、少なくとも１つのメモリ位置を含み、このシステムは、どのソースが最後に伝送されたかを判断し、同じメモリ位置に関して同じソースが連続的に伝送される場合、第２の伝送についての更新カウントを所定の数より多くインクリメントする。
【００３８】
本発明の更に別の態様によると、各々のコンピュータが、独立したローカル・メモリを含み、かつ、単一のコンピュータ上で動作するように記述されたアプリケーション・プログラムの部分を動作し、メモリ・システムにおけるメモリ更新エコーを克服する方法を使用する、少なくとも１つのアプリケーション・メモリ位置が、独立したローカル・メモリの各々に複製され、ほぼ同じままであるように更新され、各々のソースが、複製されたアプリケーション・メモリ位置／コンテンツのアドレス又はアイデンティティと、複製されたアプリケーション・メモリ位置についての関連した新しいコンテンツと、一連の更新メッセージを示すように所定の数だけインクリメントされる、一連の更新メッセージにおける更新メッセージの位置を示す更新カウントとを含む更新メッセージを伝送する、マルチ・コンピュータ・システムが開示され、この方法は、
（ｉ）特定のメモリ位置に関してどのソースが最後に伝送されたかを判断し、
（ｉｉ）同じメモリ位置に関して同じソースが連続的に伝送される場合、第２の伝送についての更新カウントを所定の数より多くインクリメントする、
ステップを含む。
【００３９】
本発明の更に別の態様によると、メモリ更新エコーの除去を用いる複製型メモリ・システムが開示され、このシステムは、異なる独立したメモリ・ストアに複製され、かつ、各々が、複製されたアプリケーション・メモリ位置／コンテンツのアドレス又はアイデンティティと、複製されたアプリケーション・メモリ位置についての関連した新しいコンテンツと、一連の更新メッセージを示すように所定の数だけ増加される、一連の更新メッセージにおける更新メッセージの位置を示す更新カウントとを含む更新メッセージを伝送する、多数のソースからほぼ同時に更新することができる、少なくとも１つのアプリケーション・メモリ位置／コンテンツを含み、このシステムは、どのソースが最後に伝送されたかを判断し、同じメモリ位置に関して同じソースが連続的に伝送される場合、第２の伝送についての更新カウントを所定の数より多くインクリメントする。
【００４０】
本発明の更に別の態様によると、少なくとも１つのアプリケーション・メモリ位置が、独立したローカル・メモリの各々に複製され、ほぼ同じままであるように更新され、各々のソースが、複製されたアプリケーション・メモリ位置／コンテンツのアドレス又はアイデンティティと、複製されたアプリケーション・メモリ位置についての関連した新しいコンテンツと、一連の更新メッセージを示すように所定の数だけインクリメントされる、一連の更新メッセージにおける更新メッセージの位置を示す更新カウントとを含む更新メッセージを伝送する、各々のコンピュータが独立したローカル・メモリを含み、かつ、単一のコンピュータ上で動作するように記述されたアプリケーション・プログラムの部分を動作し、メモリ・システムにおけるメモリ更新エコーを克服する方法を使用する、マルチ・コンピュータ・システムが開示され、この方法は、
（ｉ）受信マシンにおいて、同じ複製されたアプリケーション・メモリ位置／コンテンツについてのレプリカ・メモリ更新伝送の受信時に、警告又は計画されたが、まだ伝送されていない、いずれかのレプリカ・メモリ更新をディスエーブルにする、
ステップを含む。
【００４１】
本発明の更に別の態様によると、メモリ更新エコー除去を用いる複製型メモリ・システムが開示され、このシステムは、異なる独立したメモリ・ストアに複製され、かつ、各々が、複製されたアプリケーション・メモリ位置／コンテンツのアドレス又はアイデンティティと、複製されたアプリケーション・メモリ位置についての関連した新しいコンテンツと、連続した更新メッセージを示すように所定の数だけ増加される、一連の更新メッセージにおける更新メッセージの位置を示す更新カウントとを含む更新メッセージを伝送する多数のソースからほぼ同時に更新することができる、少なくとも１つのアプリケーション・メモリ位置／コンテンツを含み、このシステムは、受信マシンによるレプリカ・メモリ更新伝送の受信時に、受信マシンにおいて、同じ複製されたアプリケーション・メモリ位置／コンテンツについての警告又は計画されたがまだ伝送されていない、いずれかのレプリカ・メモリ更新が存在するかどうかを判断し、存在する場合には、受信マシンの警告又は計画されたレプリカ・メモリ更新をディスエーブルにする又はキャンセルする。
【００４２】
ここで、本発明の好ましい実施形態を図面を参照して説明する。
【図面の簡単な説明】
【００４３】
【図１Ａ】ＪＡＶＡ（登録商標）コードを動作し、これにより単一のＪＡＶＡ（登録商標）仮想マシンを構成するように配置された従来技術のコンピュータの概略図である。
【図１Ｂ】図１Ａに類似した、コードの初期ロードを示す図である。
【図１Ｃ】各々がマルチ・コンピュータ・システムを形成するためのＪＡＶＡ（登録商標）仮想マシンである多数のコンピュータの相互接続を示す。
【図２】少なくとも１つの付加的なサーバ・マシンＸがサーバとして接続された「ｎ」個のアプリケーション実行コンピュータの概略図である。
【図３】メモリ位置を更新する適正な過程におけるステップを示す。
【図４】メモリ位置を更新する適正な過程におけるステップを示す。
【図５】メモリ位置を更新する適正な過程におけるステップを示す。
【図６】競合が起こり得る段階を示す。
【図７】競合が起こり得る段階を示す。
【図８】競合を検出することができる実施の段階を示す。
【図９】競合を検出することができる実施の段階を示す。
【図１０】競合を検出することができる実施の段階を示す。
【図１１】競合を検出することができる実施の段階を示す。
【図１２】競合を検出することができる実施の段階を示す。
【図１３】レプリカ更新伝送の種々の時間グラフを示す。
【図１４】レプリカ更新伝送の種々の時間グラフを示す。
【図１５】レプリカ更新伝送の種々の時間グラフを示す。
【図１６】レプリカ更新伝送の種々の時間グラフを示す。
【図１７】レプリカ更新伝送の種々の時間グラフを示す。
【図１８】レプリカ更新伝送の種々の時間グラフを示す。
【図１９】「カウント値」を格納する好ましい構成を示す。
【図２０】複製共有メモリ式マルチ・コンピュータ・システムの２つの構成を示す。
【図２１】複製共有メモリ式マルチ・コンピュータ・システムの２つの構成を示す。
【図２２】複製共有メモリ式マルチ・コンピュータ・システムの２つの構成を示す。
【図２３】複製されたメモリ・インスタンスの代替的な構成を示す。
【図２４】第１のデータ・フォーマットを示す。
【図２５】通信ネットワークの帯域要件を低減させる第２の実施形態のデータ・フォーマットを示す。
【図２６】通信ネットワークの帯域要件をさらに低減させる第３の実施形態のデータ・フォーマットを示す。
【図２７】図２６のデータ・フォーマットを用いる実施形態の段階を示す。
【図２８】図２６のデータ・フォーマットを用いる実施形態の段階を示す。
【図２９】図２６のデータ・フォーマットを用いる実施形態の段階を示す。
【図３０】通信ネットワークの帯域要件が低減された第４の実施形態のデータ・フォーマットを示す。
【図３１−３６】本発明の実施例における作動を説明する図である。
【発明を実施するための形態】
【００４４】
ＪＡＶＡ（登録商標）言語に関連して実施形態を説明するが、本発明は、この言語に限定されず、特に、ＭＩＣＲＯＳＯＦＴ．ＮＥＴプラットフォーム及びアーキテクチャ（Ｖｉｓｕａｌ  Ｂａｓｉｃ、ＶｉｓｕａｌＣ、ＶｉｓｕａｌＣ＋＋、及びＶｉｓｕａｌＣ＃）、ＦＯＲＴＲＡＮ、Ｃ、Ｃ＋＋、ＣＯＢＯＬ、ＢＡＳＩＣ等を含む他の言語（手続き型言語、宣言型言語、及びオブジェクト指向言語を含む）と共に使用できることは当業者には明らかであろう。
【００４５】
図１Ａに示されるような仮想マシンを作成することによって、アプリケーションの特定の言語を利用する単一のコンピュータ又はマシン（種々の製造業者のいずれか１つによって生成され、種々の異なる言語のいずれか１つで動作するオペレーティング・システムを有する）を提供することは、従来技術では周知である。
【００４６】
図１Ａのコード及びデータ、並びに仮想マシンの設定又は構成は、ＪＡＶＡ（登録商標）言語で記述され、かつ、ＪＡＶＡ（登録商標）仮想マシン６１内で実行されるアプリケーション・コード５０の形態を取る。従って、アプリケーションの目的とする言語がＪＡＶＡ（登録商標）言語である場合、マシン製造業者及びコンピュータ又はマシンの内部詳細に関わらず、ＪＡＶＡ（登録商標）のコードを操作することができるＪＡＶＡ（登録商標）仮想マシンが用いられる。
【００４７】
更なる詳細については、引用により本明細書に組み込まれる、非特許文献１を参照されたい。
【００４８】
図１Ａのこの従来技術の構成は、図１Ｂに見られるように、便宜上「分散型ランタイム」又は「分散型ランタイム・システム」ＤＲＴ７１と呼ばれる付加的な機能を与えることによって、本出願人により修正される。
【００４９】
図１Ｂ及び１Ｃにおいては、アプリケーション・コード５０が、矢印７５又は７５Ａ又は７５Ｂで示されるロード手順を介して分散型ランタイム・システム７１と協働してＪａｖａ（登録商標）仮想マシンＭ１、Ｍ２、．．．Ｍｎにロードされる。本明細書で用いられる「分散型ランタイム」及び「分散型ランタイム・システム」という用語は、本質的には同義語であり、限定ではなく例証として、特定のプラットフォーム上で実行される特定の言語で記述されたソフトウェアをサポートするライブラリ・コード及びプロセスを含むように、一般に理解される。さらに、分散型ランタイム・システムはまた、特定の分散型コンピュータ環境内で実行される特定の言語で記述されたソフトウェアをサポートするライブラリ・コード及びプロセスを含むこともできる。
【００５０】
ランタイム・システムは、一般に、システム呼出し、プログラム起動及び終了、並びにメモリ管理のようなプログラムとオペレーティング・システムの間のインターフェースの詳細を取り扱う。バックグラウンドのために、従来の分散型コンピュータ環境（ＤＣＥ）（本発明の好ましい実施形態に用いられる本発明の分散型ランタイム又は分散型ランタイム・システム７１の機能を提供しない）は、Ｏｐｅｎ  Ｓｏｆｔｗａｒｅ  Ｆｏｕｎｄａｔｉｏｎから入手可能である。この分散型コンピュータ環境（ＤＣＥ）は、マシン上で実行されるソフトウェアに対するコンピュータ間通信の形式を実行するが、多くの制限の中でも、所望の修正又は通信操作を実施することができない。その機能及び動作の中でも、好ましいＤＲＴ７１は、複数のマシンＭ１、Ｍ２、．．．Ｍｎ間の特定の通信を調整する。さらに、好ましい分散型ランタイム７１は、図１Ｃの各々のＪＡＶＡ（登録商標）仮想マシン７２又はマシンＪＶＭ＃１、ＪＶＭ＃２、．．．ＪＶＭ＃ｎ上でのＪＡＶＡ（登録商標）アプリケーション５０の矢印７５Ａ又は７５Ｂで示されるロード手順中に作動し始める。読者が特定の例の利益を獲得できるように、ＪＡＶＡ（登録商標）言語及びＪＡＶＡ（登録商標）仮想マシンに対して多くの例及び説明が与えられるが、ＪＡＶＡ（登録商標）言語又はＪＡＶＡ（登録商標）仮想マシン、或いはいずれかの他の言語、仮想マシン、マシン又は動作環境に限定されないことは、本明細書に提供される説明に鑑みて理解されるであろう。
【００５１】
図１Ｃは、各々が図１Ｂに示されるＪＡＶＡ（登録商標）仮想マシンの構成を修正された形形態で示している。この場合も同じアプリケーション・コード５０が各マシンＭ１、Ｍ２．．．Ｍｎにロードされることは明らかであろう。しかしながら、矢印８３で示される各マシンＭ１、Ｍ２、．．．Ｍｎ間の通信は、マシン・ハードウェアを介して物理的に経路指定されるが、各マシン内の個々のＤＲＴ７１／１．．．７１／ｎによって有利に制御される。従って、実際には、このことは、これら自体又は互いに直接通信するマシンＭ１、Ｍ２．．．Ｍｎではなく、ネットワーク又は他の通信リンク５３を介して互いに通信するＤＲＴ７１／１、．．．７１／ｎとして概念化することができる。マシンＭ１、Ｍ２．．．Ｍｎ又はＤＲＴ７１／１、７１／２．．．７１／ｎ間のこの直接通信、或いはこのような通信の組み合わせのいずれかが考えられ、含まれる。好ましいＤＲＴ７１は、トランスポート、プロトコル、及びリンクが独立した通信を提供する。
【００５２】
１つの共通アプリケーション・プログラム又はアプリケーション・コード５０及びその実行可能バージョン（場合によっては修正のある）は、複数のコンピュータ又はマシンＭ１、Ｍ２．．．Ｍｎにわたって同時に又は並行して実行されている。アプリケーション・プログラム５０は、単一のマシン又はコンピュータ上でのみ動作することを意図して記述されている。本質的には、修正された構造は、個々のマシンの各々で同一のメモリ構造及びコンテンツを複製するものである。
【００５３】
共通アプリケーション・プログラムという用語は、単一のマシン上で動作するように記述され、複数のコンピュータ又はマシンＭ１、Ｍ２．．．Ｍｎの各々の全体又は一部で、或いは随意的に、複数のコンピュータ又はマシンＭ１、Ｍ２．．．Ｍｎの一部のサブセットの各々で、ロードされ及び／又は実行されるアプリケーション・プログラム又はアプリケーション・プログラム・コードを意味すると理解すべきである。言い換えると、アプリケーション・コード５０で表された共通アプリケーション・プログラムが存在する。これは、各々が個々に修正されてアプリケーション・プログラム又はプログラム・コードの修正されたコピー又はバージョンを生成する、単一のコピー又は複数の同一コピーのいずれかである。次いで、各々のコピー又はインスタンスは、対応するマシン上で実行する準備がなされる。これらが修正された後の時点において、これらは、同様の動作を実行し、互いに一貫性があり、かつ、整合性があるように動作するという意味では共通である。随意的に、上述の構成を実装する複数のコンピュータ、マシン、情報アプライアンス等を上述の構成を実装していない他のコンピュータ、マシン、情報アプライアンス等と接続或いは結合できることが理解されるであろう。
【００５４】
同じアプリケーション・プログラム５０（例えば、並列マージ・ソート、又は計算流体力学アプリケーション、或いはデータ・マイニング・アプリケーション）は、各マシン上で実行されるが、そのアプリケーション・プログラムの実行可能コードは、必要に応じて各マシン上で修正され、各マシン上の各実行インスタンス（コピー又はレプリカ）が、他のマシン上のそれぞれのインスタンス（或いはコピー又はレプリカ）の動作とその特定のマシン上のローカル・オペレーションを調整し、これらが、一貫性があり、かつ、整合性があるように調整された方法で共に機能し、アプリケーションの１つのグローバル・インスタンス（すなわち、「メタ・アプリケーション」）であるような外観を与える。
【００５５】
同じ又は実質的に同じアプリケーション・コードのコピー又はレプリカは各々、相互運用され、接続されたマシン又はコンピュータの対応するものにロードされる。各マシン又はコンピュータの特徴は異なり得るので、ロード前に、又はロード・プロセス中に、或いは、幾つかの欠点はあるがロード・プロセス後に、アプリケーション・コード５０を修正し、各マシン上でのコードをカスタマイズ化する又は修正することができる。プログラム間の何らかの相違点は、本明細書で説明される相互運用性、一貫性、及び整合性に対する他の要件を維持できる限り許容することができる。以下で明らかになるように、マシンＭ１、Ｍ２．．．Ｍｎの各々、及び、よって、マシンＭ１、Ｍ２．．．Ｍｎの全てが、同じ又は実質的に同じアプリケーション・コード５０を有し、通常は、マシン特有とすることができる修正を伴う。
【００５６】
各マシンＭ１、Ｍ２．．．Ｍｎ上でアプリケーション・コード５０（又はその関連した部分）のロード前、又はロード中、或いはその実行前のいずれかの時点で、各アプリケーション・コード５０は、同じ規則（又は各々の変更子（ｍｏｄｉｆｉｅｒ）５１／１、５１／２．．．５１／ｎ内で僅かな最適化変更が許容されているので実質的に同じ規則）に従って対応する変更子５１によって修正される。
【００５７】
マシンＭ１、Ｍ２．．．Ｍｎの各々は、同じ（又は実質的に同じ或いは類似した）変更子５１（幾つかの実施形態においては、分散型ランタイムすなわちＤＲＴ７１として実装され、他の実施形態においては、コード及びデータ５０への添付物として実装され、さらに、ＪＡＶＡ（登録商標）仮想マシン自体内に実装することもできる）により動作する。従って、マシンＭ１、Ｍ２．．．Ｍｎの全ては、必要とされる修正の各々に対して同じ（又は実質的に同じ或いは類似した）変更子５１を有する。例えば、メモリ管理及び複製のため、初期化のため、ファイナライズのため、及び／又は同期化のために、異なる修正を必要とすることがある（しかしながら、全ての実施形態において、これらの修正タイプの全てを必要とするわけではない）。
【００５８】
変更子５１及び分散型ランタイム７１の代替的な実装が存在する。例えば、図１Ｃの破線で示されるように、変更子５１は、分散型ランタイム７１のコンポーネントとして、又はこの内部に実装することができ、従って、ＤＲＴ７１は、変更子５１の機能及び動作を実施することができる。代替的に、変更子５１の機能及び動作は、コード及びデータ５０内、又はＪＡＶＡ（登録商標）仮想マシン自体内など、ＤＲＴ７１を実装するのに用いられる構造、ソフトウェア、ファームウェア、又は他の手段の外部で実施することができる。一実施形態においては、変更子５１及びＤＲＴ７１の両方が、ＤＲＴ及び変更子の機能を提供する単一のコンピュータ・プログラム・コードで実装され又は記述される。この場合、変更子の機能及び構造は、実際には、ＤＲＴ内に包含される。どのように実装されるかに関係なく、変更子の機能及び構造は、アプリケーション・コード・プログラムの実行可能コードを修正する役割を担い、分散型ランタイムの機能及び構造は、コンピュータ又はマシン間の通信を実施する役割を担う。一実施形態における通信機能は、各マシン上のＤＲＴのコンピュータ・プログラム・コード内の中間プロトコル層を介して実施される。ＤＲＴは、例えば、ＪＡＶＡ（登録商標）言語で通信スタックを実施することができ、Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（ＴＣＰ／ＩＰ）を用いて、マシン間の通信又は通話を提供することができる。これらの機能又は動作が、構造及び／又は手順要素間、或いはコンピュータ・プログラム・コード又はデータ構造間で厳密にどのように実施され又は分割されるかは、重要ではない。
【００５９】
しかしながら、図１Ｃに示される構成においては、複数の個々のコンピュータ又はマシンＭ１、Ｍ２．．．Ｍｎが提供され、その各々は、通信ネットワーク５３又は他の通信リンクを介して相互接続される。それぞれのコンピュータ又はマシンには、対応する変更子５１が与えられる。それぞれのコンピュータには、通信ネットワークに接続する通信ポートも与えられる。通信ネットワーク５３又は経路は、いずれかの電子信号方式、データ、又はデジタル通信ネットワーク若しくは経路とすることができ、インターネットによるネットワーク接続、或いはＥＴＨＥＲＮＥＴ（登録商標）又はＩＮＦＩＮＩＢＡＮＤ（商標）及びこれらの拡張及び改良のような、本出願の日付において周知の又は利用可能な通信ポートを含む、いずれかの共通ネットワーク構成といった、低速で、よって、低コストの通信経路であることが好ましい。コンピュータには、通信ネットワーク５３と接続される周知の通信ポート（ＣＩＳＣＯ  Ｐｏｗｅｒ  Ｃｏｎｎｅｃｔ  ５２２４  Ｓｗｉｔｃｈのような）が設けられることが好ましい。
【００６０】
上述の構成の結果として、マシンＭ１、Ｍ２、．．．、Ｍｎの各々が、例えば、１０ＭＢの内部又はローカル・メモリ容量を有する場合、全体としてアプリケーション・コード５０が利用可能な総メモリは、予想されるようにマシンの数（ｎ）×１０ＭＢではない。これは、ｎ個のマシン全ての内部メモリ容量の加法的組み合わせでもない。代わりに、１０ＭＢ、又は１０ＭＢよりも大きいが、ｎ×１０ＭＢよりも小さい何らかの数である。マシンの内部メモリ容量が異なり、このことが許容可能である状況において、１つのマシンの内部メモリが、マシンの少なくとも１つの他のものの内部メモリ容量より小さい場合には、このようなメモリ（又はその一部）が「共通」メモリ（すなわち、マシンＭ１．．．Ｍｎの各々の類似した等価メモリ）として扱われるとき、さもなければ共通アプリケーション・コードを実行するために用いられるとき、マシンのいずれかの最小のメモリ・サイズを、マシンの最大メモリ容量として用いることができる。
【００６１】
しかしながら、各マシンの内部メモリを処理する方法は、最初は、性能に関する潜在的な制約に見えることがあるが、これが改善された動作及び性能をどのようにもたらすかについては、以下で明らかになるであろう。当然、各マシンＭ１、Ｍ２．．．Ｍｎは、プライベートな（すなわち、「共通ではない」）内部メモリ容量を有する。マシンＭ１、Ｍ２、．．．、Ｍｎのプライベートな内部メモリ容量は、通常はほぼ等しいが、必須というわけではない。
【００６２】
プロトタイプのマルチ・コンピュータ・システムの非商業的動作は、システム内のあらゆるマシン又はコンピュータが、あらゆる可能なメモリ位置（例えば、そのローカル・レプリカを有する）を利用するわけではない、或いはそれを参照する必要がないことを示す。結果として、各マシンのローカル・メモリがそのマシンの動作に十分である限り、各マシンのローカル・メモリがあらゆる他のマシンと同一でなくとも、マルチ・コンピュータ・システムを動作させることが可能である。すなわち、特定のマシンが、幾つかの特定のメモリ位置（例えば、そのローカル・レプリカを有する）を参照する必要がない場合、それらの特定のメモリ位置が、その特定のマシンにおいて複製されないことは問題でない。
【００６３】
また、各マシンにおいて、及び、接続された又は結合された複数のマシン、コンピュータ、又は情報アプライアンスＭ１、Ｍ２、．．．、Ｍｎのコンステレーション又はネットワークにわたって、所望の性能レベルを達成するように、各マシンの内部メモリ量を選択することも有利であり得る。記載されたこれらの内部及び共通メモリを考慮すると、マシン間に共通とすることができるメモリの量に制限がないことは、本明細書に与えられる説明に照らせば明らかであろう。
【００６４】
幾つかの実施形態においては、複数の個々のコンピュータ又はマシンの一部又は全ては、単一のハウジング又はシャーシ（Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｃｏｍｐａｎｙ、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ、ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎなどによって製造された、いわゆる「ブレード・サーバ」のような）、或いは、Ｉｎｔｅｌ、ＡＭＤなどによって製造され、或いは単一のプリント基板上又は単一のチップ若しくはチップセット内にも実装された、マルチコア又はデュアルコア・プロセッサ若しくはマシン内に包含され得る。
【００６５】
非ＪＡＶＡ（登録商標）言語又はアプリケーション・コード環境で実施されるとき、一般化されたプラットフォーム、及び／又は仮想マシン、及び／又はマシン、及び／又はランタイム・システムは、そのプラットフォーム、及び／又は仮想マシン、及び／又はマシン、及び／又はランタイム・システム環境の言語（例えば、これらに限られるものではないが、ソース−コード言語、中間−コード言語、オブジェクト−コード言語、マシン−コード言語、及びいずれかの他のコード言語のいずれか１つ又はそれ以上を含む場合がある）でアプリケーション・コード５０を動作させ、かつ、マシン製造業者及びマシンの内部詳細に関係なく、プラットフォーム、及び／又は仮想マシン、及び／又はマシン、及び／又はランタイム・システム、及び／又は言語アーキテクチャを利用することができる。プラットフォーム及び／又はランタイム・システムは、仮想マシン及び非仮想マシン・ソフトウェア、及び／又はファームウェア・アーキテクチャ、並びにハードウェア及び直接ハードウェア・コード化アプリケーション及び実装を含み得ることも理解されるであろう。
【００６６】
仮想マシン又は抽象マシン環境のより一般的なセットにおいて、並びに現在及び将来のコンピュータ及び／又はコンピュータ・マシン及び／又は情報アプライアンス又は処理システムにおいて、クラス及び／又はオブジェクトのいずれかを利用しない、或いは利用を必要としない場合があるが、この構造、方法、並びにコンピュータ・プログラム及びコンピュータ・プログラム製品は、依然として適用可能である。クラス及び／又はオブジェクトのいずれかを利用しないコンピュータ及び／又はコンピュータ・マシンの例は、例えば、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎなどによって製造された×８６コンピュータ・アーキテクチャ、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃなどによって製造されたＳＰＡＲＣコンピュータ・アーキテクチャ、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎなどによって製造されたＰｏｗｅｒ  ＰＣコンピュータ・アーキテクチャ、及びＡｐｐｌｅ  Ｃｏｍｐｕｔｅｒ，Ｉｎｃなどによって作製されたパーソナル・コンピュータ製品を含む。
【００６７】
クラス又はオブジェクトの概念を利用せずに実装された、これらのタイプのコンピュータ、コンピュータ・マシン、情報アプライアンス、及び仮想マシン又は仮想コンピュータ環境は、例えば、手続き型言語又は他の言語についての、基本データ型（整数データ型、浮動小数点データ型、長データ型、ダブルデータ型、文字列データ型、文字データ型、及びブールデータ型など）、構造化データ型（アレイ及び記録など）、派生型、又は他のコード若しくはデータ構造を含み、関数、ポインタ、コンポーネント、モジュール、構造、参照、及び和集合などの環境を含むように一般化することができる。必要な場合に組み合わせて適用されるこれらの構造及び手続きは、コンピュータ又はコンピュータ環境のメモリ位置、アドレス範囲、オブジェクト、クラス、資産、リソース、又はいずれかの他の手続き的又は構造的態様が、状況によって、複数の個々のマシンＭ１、Ｍ２．．．Ｍｎにわたって調整され、整合性があり、かつ、一貫性があるように作成され、維持され、動作され、動作が停止され、又は削除されるコンピュータ環境を維持する。
【００６８】
アプリケーション・コード５０のこの分析又は精査は、アプリケーション・プログラム・コード５０をロードする前に、又はアプリケーション・プログラム・コード５０のロード手続き中に、又はアプリケーション・プログラム・コード５０のロード手続き後でさえも行なうことができる。これは、アプリケーション・コードが、付加的な命令を備え、及び／又は他の場合には意味保護プログラム操作によって修正され、及び／又は随意的に入力コード言語から異なるコード言語に（例えばソース−コード言語又は中間−コード言語からオブジェクト−コード言語又はマシンコード言語にといったように）翻訳することができるという点で、いわば、インストルメンテーション、プログラム変換、翻訳、又はコンパイル手続きのようなものである。この点において、「コンパイル（ｃｏｍｐｉｌａｔｉｏｎ）」という用語は、通常又は従来より、コード又は言語における変更、例えばソース・コードからオブジェクト・コードへの、又は１つの言語から別の言語への変更を含むることが理解される。しかしながら、本例においては、「コンパイル」という用語（及びその文法的に等価な語）は、そのように限定されるものではなく、同じコード又は言語内の修正をも含む又は包含することができる。例えば、コンパイル及びその等価な語は、通常のコンパイル（例えば、限定ではなく例証として、ソース−コードからオブジェクト・コードへのなど）と、ソース−コードからソース−コードへのコンパイル、並びにオブジェクト−コードからオブジェクト・コードへのコンパイル、及びいずれかの変更された組み合わせを包含することが理解される。「疑似オブジェクト−コード」の形態のいわゆる「中間−コード言語」も含まれる。
【００６９】
限定ではなく例証として、１つの構成においては、アプリケーション・コード５０の分析又は精査は、オペレーティング・システムにより、ハードディスク若しくは他の格納装置、又はソースからアプリケーション・コード５０を読み取り、これをメモリにコピーし、アプリケーション・プログラム・コードの実行を始める準備をすることなどによって、アプリケーション・プログラム・コードのロード中に行なわれる。別の実施形態においては、ＪＡＶＡ（登録商標）仮想マシンにおいて、分析又は精査は、ｊａｖａ．ｌａｎｇ．ＣｌａｓｓＬｏａｄｅｒ．ｌｏａｄＣｌａｓｓ  ｍｅｔｈｏｄ（例えば、「ｊａｖａ．ｌａｎｇ．ＣｌａｓｓＬｏａｄｅｒ．ｌｏａｄＣｌａｓｓ（）」）のクラスロード手続き中に行なうことができる。
【００７０】
代替的に、アプリケーション・コード５０の分析又は精査は、オペレーティング・システムがアプリケーション・コードをメモリにロードした後など、アプリケーション・プログラム・コードのロード手続き後でも、或いは随意的に、例えば、ＪＡＶＡ（登録商標）仮想マシンが、「ｊａｖａ．ｌａｎｇ．ＣｌａｓｓＬｏａｄｅｒ．ｌｏａｄＣｌａｓｓ（）」方法及び随意的に開始される実行を介して、アプリケーション・コードを仮想マシンにロードした後など、アプリケーション・プログラム・コードの関連した対応部分の実行が開始された後でも行うことができる。
【００７１】
コンピュータ処理技術分野の当業者であれば、これらに限られるものではないが、インストルメンテーション、プログラム変換、翻訳、又はコンパイル手段を含む、コンピュータ・コードの修正に用いることができる種々の可能な技術を認識しているであろう。
【００７２】
１つのこのような技術は、アプリケーション・コードの言語の先の変更又は結果として起きる変更を伴うことなく、アプリケーション・コードへの修正を行なうものである。別のこのような技術は、オリジナル・コード（例えば、ＪＡＶＡ（登録商標）言語ソース−コード）をＪＡＶＡ（登録商標）バイト・コードのような中間表現（又は中間−コード言語、又は疑似コード）に変換するものである。この変換が行なわれると、バイト・コードに対して修正が行なわれ、その結果、変換を逆にすることができる。これは、所望の結果の修正されたＪＡＶＡ（登録商標）コードをもたらす。
【００７３】
更に別の可能な技術は、ソース−コードから直接、又は前述の中間言語を介して、或いは何らかの他の中間手段を介して、アプリケーション・プログラムをマシン・コードに変換するものである。次に、ロードされ、実行される前に、マシン・コードが修正される。更に別のこのような技術は、オリジナル・コードを中間表現に変換し、この中間表現が修正され、後にマシン・コードに変換されるものである。全てのこのような修正ルート、及びこのようなルートの２つ、３つ、又はそれ以上の組み合わせも考えられる。
【００７４】
ＤＲＴ７１又は他のコード修正手段は、個々のマシンＭ１、Ｍ２．．．Ｍｎの各々においえメモリ構造及びコンテンツを作成する又は複製する役割を担い、これにより複数のマシンを相互運用することが可能になる。幾つかの構成においては、この複製されたメモリ構造が同一となる。他の実施形態においては、このメモリ構造は、同一である部分と、同一ではない他の部分とを有する。更に他の構成においては、メモリ構造は、Ｂｉｇ  Ｅｎｄｉａｎ又はＬｉｔｔｌｅ  Ｅｎｄｉａｎフォーマット又は規則のようなフォーマット又は記憶規則のみが異なる。
【００７５】
必要な場合に組み合わせて適用されるこれらの構造及び手続きは、コンピュータ又はコンピュータ環境のメモリ位置、アドレス範囲、オブジェクト、クラス、資産、リソース、又はいずれかの他の手続き的又は構造的態様が、状況によって、複数の個々のマシンＭ１、Ｍ２．．．Ｍｎにわたって調整され、整合性があり、かつ、一貫性があるように作成され、維持され、動作され、動作が停止され、又は削除されるコンピュータ環境を維持する。
【００７６】
従って、「１つ」、「単一の」、及び「共通の」アプリケーション・コード又はプログラムという用語は、全てのマシンＭ１、Ｍ２．．．Ｍｎが、異なる（及び関係のない）プログラムではなく同じプログラム又はコードを動作又は実行している、言い換えると、同じ又は実質的に同じアプリケーション・コードのコピー又はレプリカが、相互運用し、かつ、接続されたマシン又はコンピュータの各々にロードされる状況を含む。
【００７７】
分散型ソフトウェアを用いる従来の構成においては、１つのマシンのソフトウェアから別のマシン上に物理的に位置するメモリへのメモリ・アクセスは、マシンを相互接続するネットワークを介して行なわれる。しかしながら、別のコンピュータ上に物理的に位置するメモリへの読み取り及び／又は書き込みメモリ・アクセスは、コンピュータを相互接続する遅いネットワークの使用を必要とするため、これらの構成においては、このようなメモリ・アクセスは、メモリ読み取り／書き込み処理操作において、潜在的にはマシンの中央処理ユニットの１０6−１０7サイクルのオーダーのかなりの遅延をもたらすことがある。最終的に、この遅延は、例えば通信ネットワークの速度、帯域幅、及び／又は待ち時間のような多数の要因に依存する。このことは、主に、従来技術の構成における多数の相互接続されたマシンの性能の低下の原因となる。
【００７８】
しかしながら、本構成においては、全てのメモリ位置（又はその一部のサブセット）の現在値が、メモリを読み取る要求を生成する処理を実行するマシン上に格納されるので、メモリ位置又はデータの全ての読み取りは、局所的に満たされる。
【００７９】
同様に、全てのメモリ位置（又はその一部のサブセット）の現在値が、メモリを書き込む要求を生成する処理を実行するマシン上に格納されるので、メモリ位置又はデータの全ての書き込みは、局所的に満たされる。
【００８０】
このようなローカル・メモリの読み取り及び書き込み処理操作は、一般に、中央処理ユニットの１０2−１０3サイクル内で満たされる。従って、実際には、包含する及び／又は書き込むメモリ・アクセスの待機は著しく少ない。
【００８１】
本構成は、トランスポート、ネットワーク、及び通信経路が独立しており、マシン又はＤＲＴ間の通信がどのように行なわれるかには依存しない。マシン又はＤＲＴ間の電子メール（Ｅメール）交換も通信には十分であり得る。
【００８２】
プロトタイプのマルチ・コンピュータ・システムの非商業的動作は、システム内のあらゆるマシン又はコンピュータが、あらゆる可能なメモリ位置（例えば、そのローカル・レプリカを有する）を利用するわけではない、或いはそれを参照する必要がないことを示す。結果として、各マシンのローカル・メモリがそのマシンの動作に十分である限り、各マシンのローカル・メモリがあらゆる他のマシンと同一でなくとも、マルチ・コンピュータ・システムを動作させることが可能である。すなわち、特定のマシンが、幾つかの特定のメモリ位置（例えば、そのローカル・レプリカを有する）を参照する必要がない場合、それらの特定のメモリ位置が、その特定のマシンにおいて複製されないことは問題でない。
【００８３】
上記に関連して、図１のアプリケーション・プログラム５０がほぼ同時に実行されている、多数のマシンＭ１、Ｍ２、．．．Ｍｎ（ｎは、２以上の整数である）が存在し、好ましくは、ロック・サーバとして働くような、種々のハウスキーピング機能の実行を可能にするために提供される更に別のマシンＸが存在することが、図２から分かるであろう。詳細には、更に別のマシンＸは、安価のマシンであり、プロセッサ速度などの所望の属性を有することができる他のマシンよりもずっと安価にすることができる。さらに、マシンＸが故障した場合の冗長性を提供するために、付加的な安価のマシン（Ｘ＋１）が利用可能であることが好ましい。２つのこのようなサーバ・マシンＸ及びＸ＋１が設けられる場合、これらは、簡単にするために、クラスタ構成でデュアル・マシンとして動作されることが好ましい。マシンＸ及びＸ＋１は、必要に応じて、上述の構成に従ったマルチ・コンピュータ・システムとして動作することができる。しかしながら、これにより、一般に、望ましくない複雑さがもたらされる。マシンＸが設けられない場合、ハウスキーピング機能のようなマシンＸの機能は、他のマシンの１つ、又は幾つか、或いは全てによって提供される。
【００８４】
図２０は、複製共有メモリ・システムの概略図である。図２０においては、マシンＭ１、Ｍ２、．．．Ｍｎである合計「ｎ」個のマシン（ｎは、１より大きい整数である）のうちの、３つのマシンが示されている。さらに、３つのマシンと、同様に設けることができ、破線で示される好ましい（しかしながら、随意的な）サーバ・マシンＸとを相互接続する通信ネットワーク５３が示される。個々のマシンの各々においては、メモリＮ８１０２及びＣＰＵ  Ｎ８１０３が存在する。各メモリＮ８１０２においては、３つのメモリ位置、すなわちメモリ位置Ａ、メモリ位置Ｂ、及びメモリ位置Ｃが存在する。これらの３つのメモリ位置の各々は、各マシンのメモリＮ８１０２に複製される。
【００８５】
この複製共有メモリ・システムの構成により、単一のマシンのために記述され、単一のマシン上で実行されることが意図された単一のアプリケーション・プログラムを、各々がそのマシン上で実行されているアプリケーション・プログラムの対応する部分だけによってアクセス可能であり、かつ、ネットワーク５３を介して相互接続された独立したローカル・メモリを備えた複数のマシン上でほぼ同時に実行することが可能になる。本出願人名での、「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｍｅｔｈｏｄ  ｏｆ  Ｏｐｅｒａｔｉｏｎ  ｆｏｒ  Ｍｕｌｔｉ−Ｃｏｍｐｕｔｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｃｏ−ｏｒｄｉｎａｔｅｄ  Ｍｅｍｏｒｙ  ａｎｄ  Ａｓｓｅｔ  Ｈａｎｄｌｉｎｇ」という名称の米国特許出願第１１／２５９８８５号が対応する国際特許出願番号第ＰＣＴ／ＡＵ２００５／００１６４１（特許文献２）（代理人整理番号：５０２７Ｆ−Ｄ１−ＷＯ）、及び、第ＰＣＴ／ＡＵ２００６／０００５３２号（特許文献３）（代理人整理番号：５０２７Ｆ−Ｄ２−ＷＯ）においては、マシンＭ１によって複製されたメモリ位置Ａへの書き込みなど、複製されたメモリ位置になされた修正又は操作を検出し、これに対応して、マシンＭ１が書き込んだこの変更された値を、各々がメモリ位置Ａのローカル・レプリカを有する他のマシンＭ２・・・Ｍｎに伝播する技術が開示される。この結果は、複製されたメモリ位置への書き込みを行なう、実行されているアプリケーションの実行可能オブジェクト・コードにおける書き込み命令を検出し、そのような検出された書き込み操作に対応する時点で、アプリケーション・プログラムの実行可能オブジェクト・コードを修正する好ましい実施形態によって達成されるので、新しい命令が、記録、マーク、タグに付加的に挿入され、或いは、何らかのこうした他の記録手段によって、書き込まれたメモリ位置の値が変更したことが示される。
【００８６】
代替的な構成が図２１に示され、部分的な又はハイブリッドの複製共有メモリ（ＲＳＭ）と名付けられる。ここではメモリ位置Ａは、コンピュータ又はマシンＭ１及びＭ２上に複製され、メモリ位置ＢはマシンＭ１及びＭｎ上に複製され、メモリ位置ＣはＭ１、Ｍ２及びＭｎ上に複製される。しかしながら、メモリ位置Ｄ及びＥは、マシンＭ１上にのみ存在し、メモリ位置Ｆ及びＧはマシンＭ２上にのみ存在し、メモリ位置Ｙ及びＺはマシンＭｎ上にのみ存在する。こうした構成は、特許文献４において公開された（及び、米国特許出願第１１／５８３，９５８号、代理人整理番号：５０２７Ｉ−ＵＳが対応する）国際特許出願第ＰＣＴ／ＡＵ２００６／００１４４７号に開示されている。こうした部分的又はハイブリッドＲＳＭシステムにおいては、いずれかの他のコンピュータ上に複製されていないメモリ位置に対して１つのコンピュータによりなされた変更は、全く更新する必要はない。さらに、マルチ・コンピュータ・システムの幾つかのコンピュータ上にのみ複製されたメモリ位置に対するいずれか１つのコンピュータによりなされた変更は、それらの幾つかのコンピュータにのみ（全ての他のコンピュータにではなく）伝播又は更新する必要がある。
【００８７】
従って、ＲＳＭ及び部分的ＲＳＭの両方において、後の段階で、背景スレッド・タスク又はプロセスが変更された値を他のマシンに伝播し、他のマシンは、同様にメモリ位置に書き込まれたものを複製することができるので、更新及び伝播の遅延を前提として、レプリカが存在する全てのマシン上のメモリ位置に書き込まれたもののメモリ・コンテンツは、ほぼ同一である。上述の従来技術において、種々の他の代替的な実施形態も開示される。上記の従来技術の方法は、複製されたメモリ位置への書き込みがあまり行なわれないアプリケーション・プログラムには適しているが、従来技術の方法は、複製されたメモリ位置への書き込みを頻繁に行なうアプリケーション・プログラムに固有の効率の悪さを招きやすい。
【００８８】
本発明の全ての説明される実施形態及び構成は、部分的に複製されようとされまいと、複製共有メモリ・システムに等しく適用可能である。具体的には、複製共有メモリ構成で動作している全マシンの一部のサブセット上に、幾つかの複数のメモリ位置が複製される部分的に複製される共有メモリ構成は、それ自体が、本発明の目的のための複製共有メモリ構成を構成することができる。
【００８９】
図３においては、数「ｎ」のアプリケーション実行コンピュータ又はマシンＭ１、Ｍ２、．．．Ｍｎが提供され、所望であれば、サーバ・マシンＸを提供することもできる。サーバ・マシンは必須ではないので、図３では想像線で示されている。全てのマシンＭ１−Ｍｎ及びＸ（存在する場合）は、何らかの方法で、好ましくは商品通信ネットワーク５３を介して相互接続される。アプリケーション実行マシンの各々においては、この説明のために、数が２つに制限され、それぞれ＃１５及び＃１６のアドレス／識別子を有する、複製されたメモリ位置が存在する。各々の複製されたメモリ位置は、コンテンツ又は値を有し、このコンテンツ又は値は、場合によってはコードを含むが、同じくこの説明のために単に数値をもつ数を構成すると見なされる。レプリカ・メモリ位置／アドレス＃１５のコンテンツは値（数）１０７であり、レプリカ・メモリ位置／アドレス＃１６のコンテンツは値（数）１９２である。ｎ個のアプリケーション実行マシンの各々は２つの複製されたメモリ位置を有し、各マシン内の各々のレプリカ・メモリ位置は、ほぼ同じコンテンツ又は数を有する。
【００９０】
ここで図４を参照すると、マシンの１つの特定の複製されたメモリ位置のコンテンツにおける変更が生じたときに起こる状況が説明される。この説明のために、アプリケーション・プログラム５０の部分を実行中のマシンＭ１は、メモリ書き込みを行ない、その結果、マシンＭ１のレプリカ・メモリ位置／アドレス＃１５のコンテンツが、値（数）１０７から値（数）２１１に変更された。次いで、この変更は、複製されたメモリ位置の更新についての上述の明細書及び／又は説明などに従って、ネットワーク５３を介して、他のマシンＭ２、Ｍ３・・・Ｍｎの全てに通知（更新）される。これは、変更されたコンテンツを有する修正されたレプリカ・メモリ位置のアイデンティティ又はアドレス、及び、新しい変更されたコンテンツを、マシンＭ１から対応するレプリカ・メモリ位置が常駐する全ての他のマシン送ることにより、図４に概略的に示される。
【００９１】
図５においては、図４のマシンＭ１からのメッセージ６１が、ネットワーク５３を通過し、他のマシンＭ２、Ｍ３・・・Ｍｎの各々により受信され、それらの他のマシンは、メッセージ６１の受信時に、上書き手段又は構成を用いて、変更されたコンテンツ２１１を、アドレス＃１５に対応するローカル・レプリカ・メモリ位置に格納する。これに関連して、マシンＭ１−Ｍｎの各々の実際のアドレスは、他のマシンの各々とは異なっていてもよく、レプリカ・メモリ位置の各々は、実質的に類似したグローバル識別子又はグローバル・アドレスを有する。好ましくは、ローカル・メモリ・アドレス及びグローバル・メモリ識別子／アドレスは、マシンＭ１−Ｍｎの各々によって維持されるテーブル又はサーバ・マシンＸに記録されるか又は表にされる。図５において、更新は成功裏に行なわれ、全てのマシンＭ２、Ｍ３・・・Ｍｎは、マシンＭ１による（及びマシンＭ１内に）もたらされた変更を考慮するように一貫性があるように更新された。
【００９２】
ここで図１３を参照すると、図４−図５の例が、まとめて時図表で示される。ここで、マシンＭ１は、時間単位１において、アドレス＃１５の更新される値「２１１」を有するレプリカ・メモリ更新Ｎ１０１（図４及び図５のレプリカ更新６１に対応する）を、対応するレプリカ・メモリ位置が常駐するマシンＭ２、Ｍ３・・・Ｍｎに伝送する。しかしながら、図１３に示されるように、伝送Ｎ１０１は、直ぐには（つまり、同じ伝送の時間単位１には）受信マシンＭ２−Ｍｎに到着しない。代わりに、受信マシンの各々は、マシンＭ２−Ｍｎの各々について示される矢印により、時間単位５にレプリカ更新伝送Ｎ１０１を受信するように示される。
【００９３】
このように、図１３は、マルチ・コンピュータ・システムの多数のコンピュータを相互接続し、それらの間でレプリカ・メモリ更新を伝送するために用いられる通信ネットワークの待ち時間及び遅延に起因する、一般に、レプリカ・メモリ更新の送受信間にもたらされる時間遅延を示す。この遅延時間Ｎ１１０は、マシンＭ１によるレプリカ更新伝送Ｎ１０１の送信と、マシンＭ２−Ｍｎによる同じレプリカ更新伝送Ｎ１０１の受信との間の「伝送待ち時間／遅延」を表す。
【００９４】
時間単位１での伝送Ｎ１０１に続いて、時間単位５において、受信マシンＭ２、Ｍ３・・・Ｍｎの各々が、伝送Ｎ１０１を独立して受信し、それらのローカルの対応する、アドレス＃１５のレプリカ・メモリ位置を、伝送Ｎ１０１の受信した更新レプリカ値「２１１」に更新する。
【００９５】
従って、一度に単一のマシンのみが、他のマシンのレプリカ・メモリ・アドレス／位置を変更された値又はコンテンツに更新する環境においては、全てのマシンＭ１、Ｍ２、Ｍ３・・・Ｍｎ上の複製されたメモリ位置の値の間に衝突（ｃｏｎｆｌｉｃｔ）又は非一貫性も生じない。
【００９６】
例えば、図１４を考える。図１４は図１３から続いており、時間単位７において、伝送Ｎ１０１の受信後、マシンＭ３は、アドレス＃１５の更新された値「９９９」を有するレプリカ・メモリ更新Ｎ１０２をマシンＭ１、Ｍ２、Ｍ４・・・Ｍｎに伝送する。全てのマシンＭ２−Ｍｎは、伝送Ｎ１０２の前に伝送Ｎ１０１を受信しているように示されるので、伝送Ｎ１０１と伝送Ｎ１０２との間に非一貫性又は衝突が生じる可能性はない。従って、一度に単一のマシンのみが複製されたメモリ位置を更新する場合には、複製されたメモリ位置の一貫性があり、かつ、整合性がある更新が保持される。
【００９７】
しかしながら、２つのマシン、例えばＭ１及びＭ３によって、単一のレプリカ・メモリ位置／アドレス、例えばアドレス＃１５のコンテンツを同時に又はほぼ同時に修正する（書き込む）ことが可能である。ここで用いられる「ほぼ同時に（ｓｕｂｓｔａｎｔｉａｌｌｙ  ｓｉｍｕｌｔａｎｅｏｕｓｌｙ）」という用語は、同時に又は並行して起こるイベント、或いは、ほぼ同時の又はほぼ並行したイベントを指すように用いられている。以下に述べられる例においては、マシンＭ１により書き込まれたレプリカ・メモリ位置／アドレス＃１５の新しいコンテンツは値／数４０４であり、マシンＭ３のレプリカ・メモリ位置／アドレス＃１５の新しいコンテンツは値／数９２である。アプリケーション・プログラム５０の異なる部分を実行した結果として、同じレプリカ・メモリ位置／アドレス＃１５を修正する２つのマシンＭ１及びＭ３が、ネットワーク５３を介して、それぞれ更新通知８１及び８２を全ての他のマシンにほぼ同時に／並行して送信する。これらの更新通知は、図６に示される方法で全ての他のマシンの対応するレプリカ・メモリ位置を更新するように意図されている。
【００９８】
図７において、レプリカ・メモリ位置／アドレス＃１５におけるそのコンテンツを値／数４０４に変更した（書き込んだ）ばかりのマシンＭ１は、今、マシンＭ３から更新メッセージ８２を受信し、よって、図５のレプリカ更新方法に従って、レプリカ・メモリ位置／アドレス＃１５の値／コンテンツを値／数９２となるように更新する。同様に、レプリカ・メモリ位置／アドレス＃１５におけるそのコンテンツを値／数９２に更新した（書き込んだ）ばかりのマシンＭ３は、次に、マシンＭ１から更新メッセージ８１を受信し、よって、レプリカ・メモリ位置／アドレス＃１５の値／コンテンツを値／数４０４となるように更新する。
【００９９】
しかしながら、他のマシンＭ２、Ｍ４、Ｍ５・・・Ｍｎの各々は、メッセージ８１及び８２の両方を受信する（ネットワーク５３の速度及び待ち時間によって、順序に及び潜在的に異なる順序で）。従って、メッセージ８１を後に受信した又はメッセージ８２を後に受信したかによって、これらのマシンのレプリカ・メモリ位置／アドレス＃１５に現われる値／コンテンツは、値／数４０４又は９２のいずれかになる。
【０１００】
明らかに、図７に関連して上述した環境の結果として、複数のマシンＭ１−Ｍｎの対応するレプリカ・メモリ位置／アドレスについてのメモリ値／コンテンツは、もはや一貫したものではない。マシンＭ１及びＭ３は、互いのマシンの変更の更新通知を互いに受信することに起因して交換した値を有することになり、残りのマシンは各々、２つのメッセージ発信マシン（この例では、Ｍ１及びＭ３）の値のどちらか一方又は他方を別個に有することになる。その結果、更新メッセージが同時に又はほぼ同時に出された環境において、マシンＭ１、Ｍ２・・・Ｍｎの全てにおける複製されたメモリ位置が、一貫性があり、かつ、整合性がある方法で更新され、結果として、全てのマシンが同じ複製されたメモリ位置について一貫したコンテンツ又は値を有することを保証することはできない。従って、複数のマシンの一貫性があるように更新された複製されたメモリ位置の望ましい行動、及び、複数のマシンの一貫性がある複製されたメモリ位置の望ましい状態は、達成されない、及び／又は達成されることが保証されない。
【０１０１】
こうした競合／非一貫性は、ネットワーク伝送の待ち時間／遅延、及び／又は順序付けによって生じたタイミングの差のために生じることが明らかであろう。図１５は、ネットワーク伝送のこうした待ち時間／遅延が、どのように図６−図７の「競合／非一貫性」の場合を引き起こし得るかを示す。
【０１０２】
従って、図１５においては、図６−図７の例が、時図表でまとめて示される。ここで、マシンＭ１は、アドレス＃１５の更新値「４０４」を有するレプリカ・メモリ更新Ｎ３０１（図６及び図７のレプリカ更新８１に対応する）を対応するレプリカ・メモリ位置が常駐するマシンＭ２、Ｍ３・・・Ｍｎに伝送する。同様に、ほぼ同時に／並行して、マシンＭ３も、同じアドレス＃１５の更新値「９２」を有するレプリカ・メモリ更新Ｎ３０２（図６及び図７のレプリカ更新８２に対応する）を対応するレプリカ・メモリ位置が常駐するマシンＭ１、Ｍ２、Ｍ４・・・Ｍｎに伝送する。
【０１０３】
しかしながら、図１５に示されるように、伝送Ｎ３０１及びＮ３０２は、直ぐには（つまり、同じ伝送の時間単位１には）受信マシンに到着しない。代わりに、受信マシンの各々は、マシンＭ１−Ｍｎの各々について示される矢印により、時間単位５においてレプリカ更新伝送Ｎ３０１及びＮ３０２を受信するように示される。
【０１０４】
多数のコンピュータを相互接続するネットワーク５３を介するネットワーク通信の待ち時間及び遅延のために、図６−図７の複数のレプリカ更新伝送間のこうした競合／衝突の問題が生じる。具体的には、レプリカ更新伝送の送受信間に待ち時間／遅延（例えば、図１５のＮ３１０）がある場合、第１のマシンは、第２の（又は第３以降の）マシン（例えば、第３のマシン）が同じ特定の複製されたメモリ位置についてのレプリカ更新伝送を既に送信したがまた受信していないのか、或いは同じ特定の複製されたメモリ位置についてのレプリカ更新伝送（例えば、時間単位１における伝送Ｎ３０２のような）を現在伝送しているのか、或いは同じ特定の複製されたメモリ位置についてのレプリカ更新伝送（例えば、時間単位２−４に伝送されたような）を、第１のマシンの伝送を受信する前に伝送するのかを、伝送時（例えば、時間単位１）に第１のマシンが知ることはできないので、こうした遅延は、特定の複製されたメモリ位置についてのレプリカ更新伝送を試みている第１の伝送マシン（例えば、マシンＭ１）の「ブラインド・スポット」を表す。こうした「ブラインド・スポット」（又は「競合ウィンドウ」）が、図１５の影付き領域Ｎ３０１として示される。
【０１０５】
従って、このような「ブラインド・スポット」（又は「競合ウィンドウ」）の間に伝送された同じ複製されたメモリ位置についての２つ又はそれ以上のレプリカ更新伝送は、互いに「衝突する」リスクがあり又はあることになり、よって、検出されない場合には、複数のマシンのこうした複製されたメモリ位置の一貫性のない更新がもたらされる可能性がある。
【０１０６】
従って、図１５は、各々の送信マシンが、別のマシンも同じ複製されたメモリ位置についてのレプリカ・メモリ更新を伝送していることを伝送の前に知ることができない、各々が、ほぼ同時に、同じ複製されたメモリ位置（アドレス＃１５）についてのレプリカ・メモリ更新を伝送している、図６−図７の２つのマシンＭ１及びＭ３の場合を示している。
【０１０７】
マルチ・コンピュータ・システムの多数のコンピュータを相互接続し、それらの間でレプリカ・メモリ更新を伝送するために用いられる通信ネットワークの待ち時間及び遅延に起因する、各マシンのレプリカ・メモリ更新の送受信間の結果として生じる時間遅延Ｎ３１０が、しばらく後（例えば、「ブラインド・スポット」Ｎ３１０の終わりを示す時間単位５のような、こうした他の潜在的な伝送の受信時）まで他のマシンによる潜在的な伝送を知ることができない「ブラインド・スポット」（又は「競合ウィンドウ」）を表す。この遅延期間Ｎ３１０は、マシンＭ１及びＭ３によるレプリカ更新伝送Ｎ３０１及びＮ３０２の送信と、受信マシンによる各レプリカ更新伝送の受信との間の「伝送待ち時間／遅延」を表す。
【０１０８】
従って、図６−図７の一貫性がないレプリカ更新のリスクを克服するために、例えば、互いのマシンの各々の伝送を受信する前に（他のマシンの１つ又はそれ以上の全ての伝送を受信する前に）それぞれ送信された同じ複製されたメモリ位置についての２つ又はそれ以上のレプリカ更新伝送（２つ又はそれ以上のマシンにより送信された）を検出する、図１５の「ブラインド・スポット」（又は「競合ウィンドウ」）Ｎ３１０の間など、ほぼ同時に／並列して伝送される（された）同じ複製されたメモリ位置／アドレス＃１５についての多数の伝送を検出する方法を考える必要がある。
【０１０９】
こうした競合／非一貫性の問題の大部分の解決法は、関係する全てのマシン／コンピュータ（エンティティ）に共通するタイム・スタンプ又は同期クロック信号（又は他の同期手段）に依存するものである。しかしながら、本発明の好ましい実施形態が生じるマルチ・コンピュータ環境においては、全てのコンピュータに共通する同期信号はない（各々のコンピュータは独立しているため）。同様に、各コンピュータは、それぞれの内部時間管理機構又はクロックを有するが、これらは同期されない（及び同期できる場合でも、各クロックはわずかに異なる率又は速度で実行されており、複数のマシン間に望ましくないクロック・スキュー及び／又はクロック・ドリフトをもたらす可能性があるので、確実に同期されたままではいない）。従って、時間、又は複数のマシン間に試みられる同期に基づいた解決法は、複雑であり、及び／又は非効率的であり、及び／又は成功する可能性が低く、又は望ましくない／満足できないオーバーヘッドをもたらす／もたらし得る。
【０１１０】
上述した望ましくない行動を克服するための手段又は方法を考える際に、付加的な通信オーバーヘッド（更新が衝突する可能性を検出し、又はこうした衝突する更新が最初の段階で生じるのを回避するための、付加的な伝送のような）に関して、或いは、送信マシン及び／又は受信マシンによる付加的な処理又は遅延処理（１つ又はそれ以上の受信した伝送の受信マシンによる付加的な処理又は遅延処理、或いは１つ又はそれ以上の送信予定の伝送の送信マシンによる付加的な処理又は遅延処理のような）に関して、こうした解決法が、マルチ・コンピュータ・システムの動作に著しいオーバーヘッドを課さないことが望ましい。
【０１１１】
例えば、受信マシンは、任意の順序で（こうした伝送／パケットが送信された順序とは異なる順序を含む）、及び異なる受信マシンにおける同じ複数の伝送について潜在的に異なる順序で、パケット／伝送を受信し、実行するように許容されることが望ましい。特定の順序／固定した順序で受信した伝送を処理する／実行する要件は、例えば、先に送信したが後に受信した（又はまだ受信していない）伝送を受信、処理／実行するまで、後に送信したが先に受信した伝送の遅延処理／実行のような、受信した伝送の処理において付加的な望ましくないオーバーヘッド及び遅延を課すため、このことは望ましい。
【０１１２】
具体的には、上述の問題に対処する従来技術の方法の一例は、こうした受信したレプリカ更新伝送の実行を遅らせるために、各受信マシンに、受信したレプリカ更新伝送を一時的バッファ・メモリに格納させることである。具体的には、こうした受信した更新伝送は、ある期間（例えば、１秒）こうした一時的バッファ・メモリに格納され、そこで、受信マシンは、１つ又はそれ以上の衝突する可能性があるレプリカ更新伝送の受信を待つ。こうした期間内にこうした衝突するレプリカ更新伝送を受信しなかった場合、一時的バッファ・メモリに格納された受信した伝送の実行を進めることができる（こうした実施が、受信マシンのレプリカ・メモリ位置の更新をもたらす場合）。代替的に、１つ又はそれ以上の衝突するレプリカ更新伝送を受信した場合、衝突するレプリカ更新伝送を受信したことを信号で伝える。しかしながら、こうした従来技術の方法により付加的な遅延（すなわち、受信した伝送を一時的バッファ・メモリに格納し、ある期間それらを処理／実行しない）が生じるので、こうした従来技術の方法は望ましいものではない。
【０１１３】
本発明の第１の実施形態によると、この問題は、複製されたメモリ位置の各々（又は代替的に、複製されたメモリ位置の関連した組の２つ又はそれ以上の複製されたメモリ位置）と関連した「カウント値」（すなわち、論理的順序付け値（ｌｏｇｉｃａｌ  ｓｅｑｕｅｎｃｉｎｇ  ｖａｌｕｅ））及び「解決値（ｒｅｓｏｌｕｔｉｏｎ  ｖａｌｕｅ）」（すなわち、ノード毎の値）を導入することにより対処される（しゃれを言うつもりではなく）。複製されたメモリ位置／アドレス＃１５及び＃１６の各々に「カウント値」及び「解決値」が与えられる、修正された位置が、図８に概略的に示される。図８に示される特定の例において、複製されたメモリ位置／アドレス＃１５のコンテンツは１０７であり、「カウント値」は７であり、「解決値」は「２」であり、一方、複製されたメモリ位置／アドレス＃１６のコンテンツは１９２であり、「カウント値」は８４であり、「解決値」は「５」である。
【０１１４】
図９において、マシンＭ１の動作により、アドレス＃１５のコンテンツが１０７から２１１に変更される。こうした書き込み操作に続いて、メッセージ７３Ａの伝送時などに（又はメッセージ７３Ａの伝送のしばらく前に）、アドレス＃１５と関連した「カウント値」が７から８にインクリメントされ、「解決値」は「１」の値（マシンＭ１のアイデンティティに対応する）に上書きされる。この「カウント値」のインクリメントは、メッセージ７３Ａの伝送時に、メッセージ７３Ａが、マシンＭ１に知られているアドレス＃１５の一連の更新メッセージにおける次の論理的更新メッセージであることを示し、「解決値」を「１」に設定することは、メッセージ７３ＡがマシンＭ１によって送信されたことを示す。次に、マシンＭ１は、ネットワーク５３を介して、メッセージ７３を、マシンＭ２、Ｍ３・・・Ｍｎを実行している全ての他のアプリケーションに送り、それらのマシンに、対応するレプリカ・メモリ位置／アドレス＃１５についてのコンテンツを更新するように命令する。
【０１１５】
より具体的には、図８−図１２の「解決値」は、更新レプリカ値を伝送したマシンの数値（整数）の識別子である。従って、例えば図９の状況では、レプリカ更新伝送７３Ａの「解決値」は、マシンＭ１の数値の識別子である「１」の値である。しかしながら、いずれかの他の構成の数値又はコンテンツ値を「解決値」として用いることができる。具体的には、レプリカ・メモリ更新のために送信マシンが使用する解決値が送信マシンに固有のものであり、いずれの他のマシンの他のレプリカ・メモリ更新伝送も同じ「解決値」を用いることができない限り、如何なる構成の数値（又は他のコンテンツ値）を「解決値」として用いることもできる。
【０１１６】
さらに、単一の送信マシンと関連したレプリカ・メモリ更新の全てが同じ「解決値」を保持すること、或いは、単一の「解決値」のみが送信マシンと関連付けられることは、本発明の要件ではない。代わりに、このように用いられる「解決値」が送信マシンに固有のものであり、いずれの他のマシンの他のレプリカ・メモリ更新伝送も同じ「解決値」を用いることができない限り、如何なる数の個々の「解決値」も送信マシンとして使用し、レプリカ・メモリ更新伝送と関連付けることもできる。
【０１１７】
このことは、メッセージ７３Ａが他のマシンＭ２、Ｍ３・・・Ｍｎの全てにより受信され、これらの受信マシンの全てについてのアドレス＃１５が新しいコンテンツ２１１、新しい「カウント値」８、及び新しい「１」の「解決値」に更新される、図１０に正確に示されている。このように、図１０は、全ての他のマシンＭ２・・・Ｍｎによるメッセージ７３Ａの受信と、本発明の方法に従ったこうした受信メッセージ７３Ａの「実行（ａｃｔｉｏｎｉｎｇ）」が、マシンＭ２・・・Ｍｎのレプリカ・メモリ位置についての更新された「８」の「カウント値」及び更新された「１」の「解決値」をもたらすことを示す。コンテンツの変更が生じたことを示すために、レプリカ・メモリ位置／アドレス＃１５の各々についての「カウント値」及び「解決値」がどれだけ正確に変更され又は上書きされたかが、ここで説明されるであろう。
【０１１８】
具体的には、複製されたメモリ位置の識別子と、識別された複製されたメモリ位置の関連した更新値と、関連した競合値（つまり、「カウント値」又は「論理的順序付け値」）と、関連した「解決値」を含むメッセージ７３Ａを受信すると、こうした関連した競合値及び「解決値」を用いて、２つ又はそれ以上のマシンにより送られた同じ複製されたメモリ位置についての２つ又はそれ以上の更新メッセージ間に生じ得る、潜在的な更新の衝突又は非一貫性の検出及び解決を助けることができる。
【０１１９】
本発明の方法に従った「カウント値」及び「解決値」の使用により、同じ複製されたメモリ位置についての、２つ又はそれ以上のマシンによって送られた衝突する又は一貫性のない更新の状況を、複数のマシンの各受信マシンによって別個に検出し、解決することが可能になる。具体的には、同様に別のマシンが同じ複製されたメモリ位置を更新しようとしていることを、各々の送信マシンがその伝送の前に知ることなく、「カウント値」及び「解決値」を複製されたメモリ位置と関連付けることにより、２つ又はそれ以上のマシンによって、同じ複製されたメモリ位置に関連する２つ又はそれ以上の更新伝送がいつ伝送されたかを検出すること、及び、２つ又はそれ以上の複製されるメモリ更新伝送のどれを優先するか（つなり、２つ又はそれ以上のレプリカ更新伝送のどれが、影響を受ける複製されたメモリ位置の最終的な更新値になるか）を解決することが可能になる。言い換えれば、「カウント値」及び「解決値」と複製されたメモリ位置を関連付けることにより、１つ又はそれ以上の他のマシンの一部又は全てによって送られた他の更新伝送の１つ又はそれ以上を知ることなく、同じ複製されたメモリ位置に関する２つ又はそれ以上のマシンの２つ又はそれ以上の更新がいつ伝送されたかを検出すること、及び、どの１つ又は２つ又はそれ以上のレプリカ・メモリ更新伝送が優先するかを解決することが可能になる。
【０１２０】
伝送とレプリカ更新伝送の受信との間に待ち時間／遅延がある場合、ネットワーク５３を介するネットワーク通信の待ち時間及び遅延のためにこうした問題が生じ、その結果、特定の複製されたメモリ位置に対してレプリカ更新伝送を試みている第１のマシンが、第２の（又は第３以降の）マシンもほぼ同時に同じ特定の複製されたメモリ位置に対してレプリカ更新伝送を試みているかどうかを伝送時に知ることができないという点で、こうした遅延を送信マシンの「ブラインド・スポット」として説明することができる。こうした「ブラインド・スポット」（又は、潜在的な「競合ウィンドウ」）が、図１３−図１８に示される。
【０１２１】
従って、こうした「カウント値」が送信マシンによる複製されたメモリ位置のおよその周知の更新カウントを示し、かつ、こうした「解決値」が送信マシンと関連した固有の値である場合、複製されたメモリ位置と関連した「カウント値」及び「解決値」を用いることにより、各々がほぼ同時に／並行して伝送される、２つ又はそれ以上のマシンによって送られた同じ複製されたメモリ位置についての２つ又はそれ以上の更新伝送の発生を検出し、解決することができ、よって、こうした複数の伝送から生じ得る潜在的な非一貫性及び／又は衝突を回避し、全てのマシンにより、一貫性がある方法で、複製されたメモリ位置を更新することができる。
【０１２２】
この結果を達成するために、レプリカ・メモリ更新（こうした「カウント値」及び「解決値」を含む）を伝送する際に「カウント値」及び「解決値」をどれだけ正確に用ることができるかを、ここに説明する。最初に、第１のマシン（マシンＭ１のような）のアプリケーション・プログラムの動作中に、書き込まれる又は修正されるといった、複製されたメモリ位置（メモリ位置「Ａ」など）が更新された後、こうした書き込まれた複製されたメモリ位置の更新値は、複数の１つ又はそれ以上の他のマシンの他の対応するレプリカ・メモリ位置に更新するよう伝えられるか又はキューに入れられるので、こうした対応する複製されたメモリ位置は、更新及び伝送遅延に従って、ほぼ同じままである。
【０１２３】
こうした複製されたメモリ位置「Ａ」が書き込まれた後しばらくして、好ましくは対応するレプリカ更新伝送が行なわれる前に、書き込まれた複製されたメモリ位置と関連したローカル／常駐の「カウント値」及び「解決値」（つまり、複製されたメモリ位置「Ａ」と関連したマシンＭ１における「カウント値」及び「解決値」のローカル・コピー）が更新される。具体的には、ローカル／常駐「カウント値」のこうした更新は、インクリメントされたローカル／常駐「カウント値」を含み、その結果、インクリメントされた値が格納され、前のローカル／常駐「カウント値」を上書きする（つまり、ローカル／常駐「カウント値」がインクリメントされ、インクリメントされた「カウント値」に上書きされる）。ローカル／常駐「カウント値」のこうした更新は、マシンＭ１とのみ関連した固有の値（例えば、マシンＭ１の固有の整数／数値アイデンティティ、又はマシンＭ１とのみ関連し、他のマシンとは関連していない何らかの他の固有値）に上書きされるローカル／常駐「カウント値」を含むことが好ましい。
【０１２４】
「カウント値」及び「解決値」とほぼ同時に又はその後になって、ネットワーク５３に対応するように更新伝送が準備される。こうした更新伝送は、４つの「コンテンツ」又は「ペイロード」又は「値」、すなわち書き込まれた複製されたメモリ位置（例えば、複製されたメモリ位置「Ａ」）を識別する、第１のコンテンツ／ペイロード／値と、書き込まれた複製されたメモリ位置の更新された（変更された）値を含む第２のコンテンツ／ペイロード／値（つまり、書き込まれた複製されたメモリ位置の現在値）と、書き込まれた複製されたメモリ位置と関連した更新された（例えば、インクリメントされた）「カウント値」を含む第３のコンテンツ／ペイロード／値と、書き込まれた複製されたメモリ位置と関連した更新された「解決値」を含む最後の第４のコンテンツ／ペイロード／値とを含むことが好ましい。
【０１２５】
単一のレプリカ更新伝送は、単一のメッセージ、パケット、セル、フレーム、又は伝送内に、４つの「コンテンツ」又は「ペイロード」又は「値」の全てを含むが、これは必須ではなく、代わりに、４つの「コンテンツ」／「ペイロード」／「値」の各々を、異なる伝送で各々の「コンテンツ」／「ペイロード」／「値」をといったような、２つ、３つ、又はそれ以上の異なるメッセージ、パケット、セル、フレーム、又は伝送で伝送することができる。代替的に、２つの「コンテンツ」／「ペイロード」／「値」を単一の第１の伝送で伝送し、第３及び第４の残りの「コンテンツ」／「ペイロード」／「値」を第２の伝送で伝送することができる。さらに代替的に、４つの「コンテンツ」／「ペイロード」／「値」の他の組み合わせ又は代替的な多数の伝送、及び／又は対になる／結合する構成も、コンピュータ処理の技術分野における当業者には周知であり、本発明の範囲内に含まれる。
【０１２６】
重要なことに、特定の複製されたメモリ位置の「カウント値」及び「解決値」は、特定の複製されたメモリ位置がローカル・マシンのアプリケーション・プログラムによって書き込まれるたびごとではなく、こうした複製されたメモリ位置のレプリカ更新伝送につき一度だけ更新される。言い換えると、「カウント値」及び「解決値」は、関連した複製されたメモリ位置に対する、ローカル・マシンのアプリケーション・プログラムによる書き込み操作のたびではなく、レプリカ更新伝送のたびに更新されるだけである。従って、「カウント値」及び「解決値」は、レプリカ更新伝送の前にローカル・マシンのアプリケーション・プログラムにより複製されたメモリ位置に何回書き込まれたかに関係なく、レプリカ更新伝送につき一度だけ更新される。例えば、ローカル・マシンのアプリケーション・プログラムによって複数のメモリ位置に５回書き込まれた（例えば、同じ複製されたメモリ位置に書き込むループを５回実行するアプリケーション・プログラムによって）が、最後に書き込まれた値の単一のレプリカ更新伝送だけが伝送された（すなわち、第５番目の値及び最後の書き込み操作）場合、書き込まれた複製されたメモリ位置と関連した「カウント値」及び「解決値」は、単一のレプリカ更新伝送に対応して１回更新される。
【０１２７】
ここで、「カウント値」及び「解決値」を含むレプリカ更新伝送を受信する際に、「カウント値」及び「解決値」がどれだけ正確に利用されるかを説明する。関連した「カウント値」及び「解決値」を含むレプリカ更新伝送を受信する際の以下のステップは、対応するレプリカ・メモリ位置が常駐する複製型メモリ構成の複数のマシンの受信マシンの各々において行なわれることになる。重要なことに、以下のステップは、各マシンによって独立して、かつ、自律的に動作可能である（すなわち、各々の受信マシンにより独立して、かつ、自律的に動作することが好ましい）ので、衝突する可能性のある伝送を検出し、こうした多数の衝突する伝送を単一の優先する伝送（及び、従って、単一の優先するレプリカ更新値）へと解決するために、２つ又はそれ以上のマシン間の再伝送も、衝突要求も、又はいずれの他の「解決」又は「訂正」又は「検出」伝送も必要としない、或いは行なわれない。従って、このことは、各々の受信マシンが、「カウント値」及び「解決値」を含むレプリカ・メモリ更新の受信及び実行、並びに、「衝突する」／「競合する」伝送の検出及び解決に関して、互いのマシンから独立して、かつ、自律的に動作することができるので特に有利である。
【０１２８】
最初に、更新される複製されたメモリ位置のアイデンティティと、他のマシンの対応するレプリカ・メモリ位置を更新するために用いられる変更値と、最終的に関連した「カウント値」及び「解決値」とを含むレプリカ更新伝送が、マシン（例えば、マシンＭ２）によって受信される。ローカルの対応するレプリカ・メモリ位置を受信した変更値に更新する前に、レプリカ・メモリ位置の一貫性があり「衝突しない」更新を保証し、「衝突する」／「競合する」可能性がある更新を検出し、解決するために、以下のステップが行なわれる。
【０１２９】
最初に、受信した関連した「カウント値」を、受信したレプリカ更新伝送が関係するレプリカ・メモリ位置に対応するローカル／常駐「カウント値」と比較する。受信した更新伝送の受信した「カウント値」がローカル／常住「カウント値」より大きい場合には、受信したレプリカ更新伝送の変更値が、ローカルの対応するレプリカ・メモリ位置のローカル／常駐値よりも「新しい」値（つまり、より最近の値）であると考えられる。従って、ローカルの対応するレプリカ・メモリ位置を受信した変更値に更新することが望ましい。このように、ローカルの対応するレプリカ・メモリ位置を受信した値に更新する（上書きする）とき、関連したローカル「カウント値」も、受信した「カウント値」に更新（上書き）され、関連したローカル「解決値」も、受信した「解決値」に更新（上書き）される。このような第１のケースは、レプリカ・メモリ更新伝送について最も一般的な場合であり、「衝突しない」／「競合しない」（又は、今のところ「競合しない」／「矛盾しない」）レプリカ更新伝送を表す。
【０１３０】
他方、受信した更新伝送の受信した「カウント値」がローカル／常駐「カウント値」より小さい場合もは、受信したレプリカ更新伝送の変更値が、ローカルの対応するレプリカ・メモリ位置のローカル／常駐値よりも「古い」値であると考えられる。従って、ローカルの対応するレプリカ・メモリ位置を受信した変更値に更新することは望ましくなく、その結果、受信した変更値を無視する又は廃棄することができる。
【０１３１】
しかしながら、第３の状況も可能である。すなわち、受信した伝送の受信した「カウント値」がローカル／常駐「カウント値」と等しい（これと同じ）場合である。このようなケースが生じたとき、受信したレプリカ更新伝送の受信した変更値は、ローカルの対応するレプリカ・メモリ位置のローカル／常駐値よりも「新しく」もなく、又は「古く」もないことを保証することができる。従って、こうした状況が生じたとき（すなわち、受信したレプリカ更新伝送の「カウント値」が、ローカルの対応するレプリカ・メモリ位置のローカル／常駐値と同じである）、受信したレプリカ更新伝送は、ローカルの対応するレプリカ・メモリ位置と「衝突した状態」（すなわち、「競合する」状態）にあると考えられる。
【０１３２】
受信したレプリカ・メモリ更新とローカルの対応するレプリカ・メモリ位置との間のこのような「衝突する」可能性がある状況は、一般に、２つ又はそれ以上のマシンが、ほぼ同時に（すなわち、ほぼ同時に／並行して）同じ複製されたメモリ位置についてのレプリカ・メモリ更新を伝送したときに生じる。こうした２つ又はそれ以上の伝送は、それらが互いに衝突するため、「競合状態」にあると言われ、「競合状態」（すなわち、衝突状態）にあることが検出されない場合、影響を受ける複製されたメモリ位置（すなわち、競合する／衝突する更新伝送が関連する複製されたメモリ位置）の多数の対応するレプリカ・メモリ位置は、一貫性があり、かつ、整合性がある方法で複数のマシンによって更新されないリスクがある。複数のマシンのレプリカ・メモリ位置の一貫性のない更新をもたらす、同じ複製されたメモリ位置の２つ又はそれ以上のマシンによるほぼ同時の／並行した更新のこうした例が、図６−図７及び図１５に示される。
【０１３３】
例えば、ほぼ同時に／並行して生じ（伝送され）（すなわち、各々の送信マシンが、それぞれの伝送を送る前に他の送信マシンの伝送を受信しなかった場合、２つのマシンによって伝送され）、かつ、各々が同じ関連した「カウント値」を有した状態で伝送された、同じ複製されたメモリ位置についての２つのレプリカ更新が伝送されたとき、上述の方法を用いることにより、いずれの他のマシンとも独立して（つまり、それらの助けなしで）、かつ、受信マシン又は送信マシンのいずれかによる如何なる付加的な伝送も必要とすることなく、各々の受信マシンが、こうした「衝突する」伝送を独立して検出することが可能である。さらに、各々の受信マシンは、それらが受信マシンに到達する順序に関係なく（及び、潜在的に異なる受信マシンについて異なる順序で）、こうした「衝突する」伝送を検出することができる。
【０１３４】
さらに、上述の方法はまた、送信マシンの各々による衝突する伝送の検出も容易にする。つまり、複数の衝突する送信マシンの各々について、こうした送信マシンのそれぞれは、こうした更新の各々の受信時に、受信マシン又は送信マシンのいずれかによるいずれかの付加的な伝送を必要とすることなく、互いの送信マシンの衝突するレプリカ・メモリ更新を同様に独立して検出することができる。
【０１３５】
従って、各々の複製されたメモリ位置（及びレプリカ・メモリ更新伝送）と関連した「カウント値」を用いて、受信したレプリカ更新伝送が、ローカル／常駐レプリカ値と「衝突状態にある」ときを検出することができる。受信したレプリカ更新伝送の「カウント値」がローカルの対応するレプリカ・メモリ位置のローカル／常駐「カウント値」と同じであるこうした状況において、受信した伝送に付随する「解決値」を用いて、検出された「衝突」を解決し、受信した「衝突する」レプリカ更新伝送を廃棄するか、又は代替的にローカルの対応するレプリカ・メモリ位置を更新するかを決定することができる。「解決値」を用いて、受信したレプリカ更新伝送とローカルの対応するレプリカ値との間の検出された「衝突」を解決する方法が、ここに説明される。
【０１３６】
各々のレプリカ更新伝送に付随する「解決値」を用いて、受信したレプリカ・メモリ更新伝送と対応するレプリカ・メモリ位置のローカル／常駐値との間の検出された衝突を解決することができる（例えば、対応するレプリカ・メモリ位置のローカル／常駐「カウント値」と等しい受信したレプリカ・メモリ更新伝送の「カウント値」によって検出することができる等）。受信したレプリカ・メモリ更新伝送についてのこうした「競合する」／「衝突する」状況が検出されたとき、受信したレプリカ・メモリ更新伝送の付随する「解決値」及び対応するローカル／常駐「解決値」を調べ、比較し、２つのレプリカ値（すなわち、ローカル／常駐レプリカ値又は受信した更新レプリカ値）のどちらが「優先するか」を判断することができる。従って、各々の複製されたメモリ位置及び各々のレプリカ更新伝送に付随する「解決値」の目的は、こうしたレプリカ値のどちらが優先するか、よって、受信した衝突するレプリカ更新伝送がローカル・メモリに更新されるかどうかを判断するための手段を提供することである。
【０１３７】
具体的には、「解決値」及び付随する比較規則を用いて、２つの「解決値」を比較し、２つの値の１つを「優先する」値として一貫性があるように選択することができる。こうした規則に従って、受信した衝突するレプリカ更新伝送の「解決値」が優先する値（ローカル／常駐の対応する「解決値」と比べて）であると判断された場合には、受信マシンは、ローカルの対応するレプリカ・メモリ位置を「優先する」伝送の受信したレプリカ更新値に更新する（対応するローカル／常駐「カウント値」及び「解決値」を受信した「カウント値」及び「解決値」に上書きすることを含む）ように進むことができる。代替的に、受信した衝突するレプリカ更新伝送のこうした「解決値」が優先する値でない（つまり、ローカル／常駐「解決値」が優先する値である）と判断された場合には、受信マシンは、ローカルの対応するレプリカ・メモリ位置を衝突する伝送の受信したレプリカ更新値に更新せず、こうした衝突する伝送を廃棄することができる。
【０１３８】
例えば、図８−図１２のケースにおいて、解決規則は、２つの「解決値」のうちの大きい方を「優先する」値として選択するという簡単なものであり得る。代替的に、用いられる異なる解決規則は、２つの「解決値」のうちの小さい方を優先する値として選択するというものであり得る。最終的に、選択された「解決値」が各々の送信マシンに固有のものであり（つまり、２つのマシンの２つの伝送は、同じ「解決値」を有することができない）、かつ、２つの特定の「解決値」をそれぞれ比較したとき、選択された解決規則が同じ優先する「解決値」を一貫性があるように選択する限り、「解決値」として用いられるように選択された特定の値、及び、「優先する」値を決定するように選択された特定の解決規則は、本発明にとっては重要ではない。
【０１３９】
「衝突する」レプリカ更新伝送を受信するとき、上述の方法による組み合わされた「カウント値」及び「解決値」は、マシンにより受信した「衝突する」レプリカ更新伝送の検出を容易／可能にし、複数の受信マシンにより影響を受ける複製されたメモリ位置の一貫性がある更新を容易／可能にする。重要なことに、上述の方法に従って動作されたときの「カウント値」及び「解決値」は、「衝突する」レプリカ更新伝送を受信する順序に関係なく、かつ、いずれの２つ又はそれ以上の受信マシン及び／又は送信マシン間のさらなる通信又は対話なしで、複数の受信マシンによる複製されたメモリ位置の一貫性がある更新を容易にし、影響を受けるレプリカ・メモリ位置の一貫性がある更新を保証する。要するに、「カウント値」及び「解決値」を含むレプリカ更新伝送の動作についての上述の方法は、影響を受ける（すなわち、衝突する）伝送の送信マシンの１つ、幾つか、又は全てによる再伝送を必要とすることなく、競合する／衝突するレプリカ更新伝送を検出し、解決することが可能な望ましい目的を達成する。
【０１４０】
従って、上述の方法は、他のマシンによる衝突する可能性がある伝送を検出し、解決するために、伝送中、考慮事項又は許可又は特別の取り扱い又は他の特別なステップ（複製されたメモリ位置に対する専用の独占的な更新許可を得るといった）を必要としない方法で、レプリカ・メモリ更新を伝送するシステムが開示される。言い換えれば、複製されたメモリ位置を伴う関連した「カウント値」及び「解決値」の上述した使用により、「内蔵式」レプリカ・メモリ更新を全ての受信マシンに伝送することが可能になり、ここで、こうした「内蔵式」レプリカ・メモリ更新の値／情報は、全ての必要な情報を有しており、伝送時に送信マシンに知られていない（同じ複製されたメモリ位置についての）起こり得る衝突する伝送の検出及び解決を容易にする。重要なことに、こうした「内蔵式」レプリカ・メモリ更新（「カウント値」及び「カウント値」を含む）は、同じ複製されたメモリ位置についての他のマシンの衝突する更新の検出及び解決を容易にする全ての必要な情報を含むので、１つ又はそれ以上の他のマシンによる衝突する可能性がある伝送にかまわずに、送信マシンによって「カウント値」及び「解決値」を含むこうした「内蔵式」レプリカ・メモリ更新を伝送することができる。
【０１４１】
結果として、上述した方法の使用は、互いのマシンと関係なく各受信マシンにおける衝突する可能性がある伝送を検出し、複数のマシンによる単一の共通の優先するレプリカ更新伝送及び関連した更新レプリカ値へと解決することができるので、各送信マシンは、独立して、自由に、かつ、いずれの「伝送の権限付与」、伝送の許可（独占的伝送許可のような）、独占的な更新又は書き込み許可等を必要とすることなく、動作することができ、代わりに、各送信マシン（及び同時に伝送する可能性があるマシンの各々）は、他のマシンの衝突する可能性がある伝送にかわまずに、いつでもどのようにも欲するようにレプリカ・メモリ更新を伝送することができる。
【０１４２】
従って、レプリカ更新伝送（「カウント値」及び「解決値」を含む）のための上述した方法は、単一の伝送が、１つ又はそれ以上のマシンの１つ又はそれ以上の他の伝送と最終的に「衝突conflict」又は競合しようとしまいと、第１の送信マシンによる単一のレプリカ・メモリ更新伝送（単一のメッセージ、セル、フレーム、パケット、又は他の伝送単位のような）の伝送を可能にする。その結果、上述のような「カウント値」及び「解決値」を用いて、こうしたレプリカ・メモリ更新が１つ又はそれ以上の他のマシンの１つ又はそれ以上の他の伝送と衝突又は競合するかどうかに関係なく、送信マシンは、いつでも、及び、いずれの複製されたメモリ位置に対しても、単一の又は複数のレプリカ・メモリ更新を、いずれの１つ又はそれ以上の他のマシンに伝送できることが、読者は理解するであろう。
【０１４３】
さらに、レプリカ更新伝送（「カウント値」及び「解決値」を含む）のための上述した方法は、再伝送、伝送の試行、伝送の失速等が２つ又はそれ以上の更新伝送の競合／衝突の状況からもたらされない、付加的な所望のオペレーティング構成を達成することが、読者は理解するであろう。
【０１４４】
さらにまた、レプリカ更新伝送のための上述した方法は、更なる所望のオペレーティング構成／結果を達成し、２つ又はそれ以上の衝突するレプリカ更新伝送（複製されたメモリ位置「Ａ」についてのマシンＭ１の第１のレプリカ更新伝送、及び、同じ複製されたメモリ位置「Ａ」についてのマシンＭ２の衝突する第２のレプリカ更新伝送のような）が生じたとき、中断せずに妨げられない方法で、具体的には、こうした「衝突する」伝送が失速し、中断し、又は遅延した後に、更なる／後のレプリカ・メモリ更新伝送（複製されたメモリ位置「Ａ」の更なる／後の更新伝送を含む）を生じさせることなく、同じ複製されたメモリ位置「Ａ」又はいずれかの他の複製されたメモリ位置のいずれか又は両方についてのマシンＭ１及びＭ２による更に別の進行中のレプリカ更新伝送を継続することが可能である。
【０１４５】
さらにまた、レプリカ更新伝送のための上述した方法は、更なる所望のオペレーティング構成／結果を達成し、２つ又はそれ以上の衝突するレプリカ更新伝送（複製されたメモリ位置「Ａ」についてのマシンＭ１の第１のレプリカ更新伝送、及び、同じ複製されたメモリ位置「Ａ」についてのマシンＭ２の衝突する第２のレプリカ更新伝送のような）が生じたとき、こうした他の伝送が複製されたメモリ位置「Ａ」に適用／関連してもしなくても、いずれかの他のマシン（例えば、マシンＭ３・・・Ｍｎ）のレプリカ・メモリ更新伝送に影響を与えない。従って、他のマシン（例えば、マシンＭ３・・・Ｍｎ）の伝送も、マシンＭ３・・・Ｍｎの他の伝送が複製されたメモリ位置「Ａ」に関連／適用されるときでさえ、２つ又はそれ以上の衝突する伝送（マシンＭ１及びＭ２のような）の存在下で中断されず、妨げられず、自由な方法で（例えば、ほぼ同時に）進行し、行なうことが可能である。
【０１４６】
このように、衝突する又は競合する可能性があるレプリカ更新伝送を検出する上述した方法は、種々の問題に対処する。
【０１４７】
要するに、送信マシン及び受信マシンを含み、衝突する更新を検出し、解決するための上述した「カウント値」及び「解決値」を用いる、マルチ・コンピュータ・システムの動作が、ここで説明される。
【０１４８】
ここで図１６を参照すると、図９−図１０の例が、時図表でまとめて示される。ここで、マシンＭ１は、時間単位１において、アドレス＃１５の更新値「２１１」、「８」の競合値（「カウント値」）及び「１」の「解決値」を有するレプリカ・メモリ更新Ｎ４０１Ａ（図９及び図１０のレプリカ更新７３Ａに対応する）を、対応するレプリカ・メモリ位置が常駐するマシンＭ２、Ｍ３・・・Ｍｎに伝送する。
【０１４９】
マシンＭ１による伝送Ｎ４０１に対応して、上述の規則に従って、更新された複製されたメモリ位置／アドレス＃１５のマシンＭ１の「カウント値」が１だけインクリメントされて「８」になり（すなわち、「７」のローカル／常駐「カウント値」がインクリメントされて新しい「８」の「カウント値」になり）、「解決値」が更新されて「１」になる（つまり、前のローカル／常駐「解決値」が「１」の新しい値に上書きされる）。次に、マシンＭ１の書き込まれた複製されたメモリ位置（つまり、複製されたメモリ位置／アドレス＃１５）の更新値「２１１」と、更新値が対応する複製されたメモリ位置（つまり、複製されたメモリ位置／アドレス＃１５）のアイデンティティと、更新レプリカ値が対応する複製されたメモリ位置の関連したインクリメントされた「カウント値」（つまり、「８」の新しい常駐「カウント値」）と、更新レプリカ値が対応する複製されたメモリ位置の関連した更新された「解決値」（つまり、「１」の新しい常駐「解決値」）との形を取る、レプリカ・メモリ更新Ｎ４０１Ａが、マシンＭ２−Ｍｎに伝送される。
【０１５０】
重要なことに、選択される数値／整数値が送信マシンに固有の値であり、いずれかの他のマシンによって送られる他のレプリカ更新伝送が同一の「解決値」を有することができない限り、「解決値」についての更新される数値／整数値の特定の選択は、本発明には重要でなない。図８−図１２の例において、更新された「解決値」の各々につい選択された数値は、送信マシンの整数／数値の識別子である（例えば、マシンＭ１によって伝送されたレプリカ更新７３Ａに対応する「１」の数値）。従って、複製されたメモリ位置／アドレス＃１６についてマシンＭ５によって送信されるレプリカ更新伝送の場合、こうしたレプリカ更新伝送についての関連した「解決値」は、こうしたレプリカ更新伝送の送信マシンのようなマシンＭ５の数値のアイデンティティに対応する「５」の値となる。各々の「解決値」が各送信マシンに固有のものであり、２つのマシンからの２つのレプリカ更新伝送が同じ「解決値」を含むことができない限り、レプリカ更新伝送及び複製されたメモリ位置の「解決値」として用いるために、いずれの他の値の構成を用いてもよい。
【０１５１】
しかしながら、図１６に示されるように、伝送Ｎ４０１Ａは、受信マシンＭ２−Ｍｎに直ぐには（つまり、伝送と同じ時間単位１には）到着しない。代わりに、受信マシンの各々は、マシンＭ２−Ｍｎの各々について示される矢印により、時間単位５にレプリカ更新伝送Ｎ４０１Ａを受信するように示される。従って、図１６は、マルチ・コンピュータ・システムの多数のコンピュータを相互接続し、それらの間でレプリカ・メモリ更新を伝送するために用いられる通信ネットワークの待ち時間及び遅延に起因する、一般に、レプリカ・メモリ更新の送受信間にもたらされる時間遅延Ｎ４０１Ａを示す。この遅延時間Ｎ４０１Ａは、マシンＭ１による送信又はレプリカ更新伝送Ｎ４０１Ａと、マシンＭ２−Ｍｎによる同じレプリカ更新伝送Ｎ４０１Ａとの間の「伝送待ち時間／遅延」を表す。
【０１５２】
マシンＭ１による伝送Ｎ４０１Ａに続いて、受信マシンＭ２−Ｍｎの各々は、伝送Ｎ４０１Ａを別個に受信し、上述の規則に従って受信した伝送を別個に「実行する」ように進行する。具体的には、伝送Ｎ４０１Ａの受信した「カウント値」を各受信マシンの対応するレプリカ・メモリ位置の常駐（ローカル）「カウント値」（全てのマシンについて「７」であると示される）と比較することによって、伝送Ｎ４０１Ａの受信した「カウント値」（つまり、カウント値「８」）が、各マシンの対応するレプリカ・メモリ位置の常駐「カウント値」（つまり、常駐カウント値「７」）より大きいと判断することができる。
【０１５３】
その結果、伝送Ｎ４０１Ａの受信した更新値が、マシンＭ２−Ｍｎの常駐値より新しいという判断がなされ、よって、受信マシンＭ２−Ｍｎは、それらのローカルの対応するレプリカ・メモリ位置を受信した更新レプリカ値に更新することが許可される。それに応じて、各々の受信マシンＭ２−Ｍｎは、ローカルの対応するレプリカ・メモリの常駐（ローカル）「カウント値」を、伝送Ｎ４０１Ａの受信した「カウント値」と置き換え（つまり、「７」の常駐「カウント値」を受信した「８」の「カウント値」に上書きし）、同じくローカルの対応するレプリカ・メモリ位置の常駐（ローカル）「解決値」を伝送Ｎ４０１Ａの受信した「解決値」と置き換え（つまり、「２」の常駐「解決値」を受信した「１」の「解決値」に上書きし）、ローカルの対応するレプリカ・メモリ位置を受信した更新レプリカ・メモリ位置値に更新する（つまり、前の値「１０７」を受信した値「２１１」に上書きする）。
【０１５４】
従って、述べたような「カウント値」の使用により、受信マシンＭ２−Ｍｎにおいて、マシンＭ１の伝送されたレプリカ更新Ｎ４０１Ａが各受信マシンのローカル常駐値より新しいという判断をなすことが可能になる。従って、マシンＭ２−Ｍｎは、一貫性があり、かつ、整合性がある方法で、伝送Ｎ４０１Ａの更新レプリカ値に成功裏に更新することが可能であり、よって、複製されたメモリ位置の一貫性があり、かつ、整合性がある更新が達成される。
【０１５５】
例えば、図１７を考える。図１７は、図１６から続いており、ここで、時間単位７において、伝送Ｎ４０１Ａの受信に続いて、マシンＭ３が、アドレス＃１５の更新された値「９９９」、更新された「９」の「カウント値」、及び「３」の「解決値」を有するレプリカ・メモリ更新Ｎ４０２ＡをマシンＭ１、Ｍ２、Ｍ４・・・Ｍｎに伝送する。具体的には、マシンＭ１、Ｍ２、Ｍ４・・・ＭｎへのマシンＭ３による付加的な伝送Ｎ４０２Ａは、伝送Ｎ４０１Ａによって更新された同じ複製されたメモリ位置（つまり、複製されたメモリ位置／アドレス＃１５）についてのマシンＭ３の動作によって生成された更新レプリカ値の伝送である。
【０１５６】
マシンＭ３による伝送Ｎ４０２Ａに対応して、上述の規則に従って、更新された複製されたメモリ位置／アドレス＃１５のマシンＭ３の「カウント値」が１だけインクリメントされて「９」になり（つまり、「８」の常駐「カウント値」がインクリメントされて新しい「９」の「カウント値」になり）、「解決値」が値「３」（マシンＭ３の数値アイデンティティに対応する）に更新される。次に、マシン３の書き込まれた複製されたメモリ位置（つまり、複製されたメモリ位置／アドレス＃１５）の更新された値「９９９」と、更新された値が対応する複製されたメモリ位置（すなわち、複製されたメモリ位置／アドレス＃１５）のアイデンティティと、更新される値が対応する複製されたメモリ位置の関連したインクリメントされた「カウント値」（つまり、新しい「９」の常駐「カウント値」）と、関連した「３」の「解決値」（マシンＭ３に対応する固有の数値アイデンティティのような）とを含む、レプリカ・メモリ更新Ｎ４０２Ａが、マシンＭ１、Ｍ２、Ｍ４・・・Ｍｎに伝送される。
【０１５７】
次に、時間単位１１において、マシンＭ１、Ｍ２、Ｍ４・・・Ｍｎが伝送Ｎ４０２Ａを受信し、マシンＭ２−Ｍｎによる受信した伝送Ｎ４０１Ａの実行と類似した方法で、上述した規則に従って受信した伝送を別個に「実行する」ように進行することが示される。具体的には、伝送Ｎ４０２Ａの受信した「カウント値」を各受信マシンの対応するレプリカ・メモリ位置の常駐（ローカル）「カウント値」（全てのマシンについて「８」となるように示される）と比較することによって、伝送Ｎ４０２Ａの受信した「カウント値」（つまり、カウント値「９」）が、各マシンの対応するレプリカ・メモリ位置の常駐「カウント値」（つまり、常駐カウント値「８」）より大きいと判断することができる。
【０１５８】
その結果、伝送Ｎ４０２Ａの受信した更新値は、マシンＭ１、Ｍ２、Ｍ４−Ｍｎの常駐値より新しい値であるとの判断がなされ、よって、マシンＭ１、Ｍ２、Ｍ４−Ｍｎは、それらのローカルの対応するレプリカ・メモリ位置を受信した更新値に更新することが許容される。従って、次いで、各受信マシンＭ１、Ｍ２、Ｍ４−Ｍｎは、ローカルの対応するレプリカ・メモリ位置の常駐（ローカル）「カウント値」を伝送Ｎ４０２Ａの受信した「カウント値」と置き換え（つまり、「８」の常駐「カウント値」を受信した「９」の「カウント値」に上書きし）、ローカルの対応するレプリカ・メモリ位置の常駐（ローカル）「解決値」を伝送Ｎ４０２Ａの受信した「解決値」と置き換え（つまり、「１」の「解決値」を「３」の「解決値」に上書きし）、ローカルの対応するレプリカ・メモリ位置を受信した更新レプリカ・メモリ位置値に更新する（つまり、前の値「２１１」を受信した値「９９９」に上書きする）。
【０１５９】
従って、上述のような「カウント値」の使用により、受信マシンＭ１、Ｍ２、Ｍ４・・・Ｍｎにおいて、マシンＭ３の伝送されたレプリカ更新Ｎ４０２Ａが各受信マシンのローカル常駐値より新しいという判断をなすことが可能になる。従って、マシンＭ１、Ｍ２、Ｍ４・・・Ｍｎは、一貫性があり、かつ、整合性がある方法で伝送Ｎ４０２Ａの更新レプリカ値に成功裏に更新することが可能であり、複製されたメモリ位置の整合性がある更新が達成される。
【０１６０】
重要なことに、各レプリカ・メモリ位置（又はレプリカ・メモリ位置の組）について関連した「カウント値」を用いることにより達成されるのは、こうした「カウント値」を用いて、レプリカ更新が、受信マシン上に既に常駐するレプリカ・メモリ位置より新しいか又は古いかを（或るいは、より新しくも又は古くもないこと）知らせることができることである。図１６及び図１７に見られるように、マシンＭ１の第１の伝送Ｎ４０１Ａは、「８」のカウント値を有し、これは次にマシンＭ２−Ｍｎに受信される。マシンＭ３による伝送Ｎ４０１Ａの受信後しばらくして（例えば、時間単位７）、マシンＭ３は、伝送Ｎ４０１Ａの同じ複製されたメモリ位置（つまり、複製されたメモリ位置／アドレス＃１５）についての新しい値のレプリカ更新を伝送し、従って、マシンＭ３は、こうした伝送Ｎ４０２Ａが伝送Ｎ４０１Ａ（「８」の「カウント値」を有していた）より「新しい」ことを示す新しい「９」の「カウント値」を、こうした伝送Ｎ４０２Ａと関連付ける。
【０１６１】
その結果、上述の方法を用いることによって、例えば、マシン（マシンＭ２のような）によって受信される伝送Ｎ４０１の場合、同じマシン（例えば、マシンＭ２）による伝送Ｎ４０２Ａの受信後、「後に」受信した伝送Ｎ４０１Ａにより、マシンＭ２のレプリカ・メモリ位置値（前に受信した伝送Ｎ４０２Ａの値が格納されているた）が、伝送Ｎ４０１Ａの「より古い」（又は「より早い」）値に上書きされないことを保証することが可能である。これは、「カウント値」の上述した動作に従うと、伝送Ｎ４０２Ａの受信後の複製されたメモリ位置／アドレス＃１５についてのマシンＭ２の常駐「カウント値」が上書きされて「９」になったためである。従って、伝送Ｎ４０２Ａの受信及び実行後に「８」の「カウント値」を有する伝送Ｎ４０１Ａを受信したとき、上述した「カウント値」の規則により、伝送Ｎ４０１Ａの「カウント値」は伝送Ｎ４０２Ａの前の受信及び実行から結果として得られる「９」の常駐「カウント値」より小さいので、上述の「カウント値」規則に従うと、こうした受信した伝送Ｎ４０１Ａは、マシンＭ２のローカル・レプリカ・メモリ位置＃１５を、伝送Ｎ４０１Ａの受信した更新値に更新させない。従って、一貫性があり、かつ、整合性があるレプリカ更新が達成される。
【０１６２】
図１１は、２つ（又はそれ以上の）マシンＭ１及びＭ３が同時に又はほぼ同時に同じ複製されたメモリ位置／アドレスを更新する、図６に関連して上述された環境において起こることを示す。図１０におけるように、アプリケーション・プログラムの部分を実行しているマシンＭ１により、複製されたメモリ位置／アドレス＃１５のコンテンツが、新しいコンテンツ「２１１」を有するように書き込まれる。その結果、複製されたメモリ位置／アドレス＃１５と関連した「カウント値」は、「７」から「８」にインクリメントされ、「解決値」は新しい「１」の値（マシンＭ１の数値アイデンティティに対応する）に上書きされ、複製されたメモリ位置／アドレス＃１５の更新値（つまり、「２１１」）と、書き込まれた複製されたメモリ位置のアイデンティティ（つまり、アドレス＃１５）と、関連したインクリメントされた「カウント値」（つまり、「８」）と、関連した更新「解決値」（つまり、「１」）とを含むメッセージ７３Ａは、ネットワーク５３を介して、全ての他のマシンＭ２、Ｍ３、・・・Ｍｎに送られる。ほぼ同時に、アプリケーション・プログラムのその部分を実行しているマシンＭ３は、新しいコンテンツ「９２」を同じ複製されたメモリ位置／アドレス＃１５に書き込み、その結果、その「カウント値」を「７」から「８」に同様にインクリメントし、その「解決値」を新しい「３」の値（マシンＭ３の数値アイデンティティに対応する）に上書きし、これらの詳細（つまり、書き込まれる複製されたメモリ位置のアイデンティティ、書き込まれる複製されたメモリ位置の更新値、関連したインクリメントされた「カウント値」、及び関連した更新「解決値」）を含むメッセージ７４Ａを全ての他のマシンＭ１、Ｍ２、Ｍ４、Ｍ５、・・・Ｍｎに送る。これは、図１１に示される状況である。
【０１６３】
図１１に示される状況の結果が、図１２に示される。図７におけるように、いずれかの／いずれのメッセージも開始しなかったマシンＭ２、Ｍ４、Ｍ５・・・Ｍｎは、メッセージ７３Ａ又は７４Ａ（いずれの順序でも）の最初のものを受信し、上述の方法に従ってこうした最初に受信した伝送を「実行する」ように進行する。具体的には、メッセージ７３Ａが最初に受信されるか又はメッセージ７４Ａが最初に受信されるかに関わらず、最初に受信したメッセージが、受信マシンの各々について、「７」の常駐「カウント値」より大きい「８」の「カウント値」を有する（つまり、最初に受信した伝送の値が、ローカルの対応するレプリカ・メモリ位置の現在の値より新しいと考えられる）ので、こうした最初に受信したメッセージにより、ローカルの対応するレプリカ・メモリ位置の更新が引き起こされる。従って、最初に受信したメッセージ／伝送の実行において、常駐「カウント値」は、「７」から「８」に上書きされ、常駐「解決値」は、最初に受信した伝送の受信した更新「解決値」に上書きされ、ローカルの対応するレプリカ・メモリ位置は、最初に受信した伝送の受信した更新値に更新される／置き換えられる（例えば、上書きされる）。従って、最初に受信した伝送の実行に続いて、メッセージ７３Ａ又は７４Ａのどちらを最初に受信したかによって複製されたメモリ位置／アドレス＃１５に対応するローカル・メモリに格納された（又は上書きされた）コンテンツは、２１１又は９２になり、関連したローカル／常駐「カウント値」は「８」になり、メッセージ７３Ａ又は７４Ａのどちらを最初に受信したかによって関連したローカル／常駐「解決値」は「１」又は「３」になる。
【０１６４】
しかしながら、受信マシンＭ２、Ｍ４、Ｍ５・・・Ｍｎの各々が、２つの伝送／メッセージ７３Ａ及び７４Ａの第２のものを受信し、上述の方法に従ってこうした２番目に受信した伝送の「実行」を進めるとき、２番目に受信した伝送の「カウント値」と対応するローカル／常駐「カウント値」との間に、「衝突」／「競合」の状況が検出されることになる。具体的には、２番目に受信したメッセージ／伝送を実行する際、常駐「カウント値」（「８」の値を有する）と２番目に受信した伝送の「カウント値」（同じく「８」の値を有する）の比較は、２番目に受信した伝送が常駐「カウント値」と「衝突する」／「競合する」という判断をもたらす。従って、２番目に受信した伝送／メッセージの受信及び実行時に、受信マシンＭ２、Ｍ４、Ｍ５・・・Ｍｎの各々は、最初に受信した伝送の実行から得られた更新された常駐「カウント値」と、２番目に受信した伝送の「カウント値」との間の「衝突」を検出することによって（両方の値は同一である）、最初に受信した伝送と２番目に受信した伝送との間の「衝突」の状況を検出し、知らせることができる。
【０１６５】
従って、メッセージ７３Ａ及び７４Ａの最初のものを受信し、よって、更新された「８」の「カウント値」（こうした最初に受信したメッセージの実行の結果得られた）を有するマシンＭ２、Ｍ４、Ｍ５、・・・Ｍｎは、これらがメッセージ７３Ａ及び７４Ａの第２のものを受信したとき、２番目に受信したメッセージの「カウント値」と同じである常駐「カウント値」を有することが理解されるであろう。従って、これらのマシンは、競合を検出し、知らせることができる。
【０１６６】
しかしながら、各々がそれぞれメッセージ７３Ａ及び７４Ａを伝送する、マシンＭ１及びＭ３については、単一のメッセージだけが受信される（つまり、２つの伝送されたメッセージ７３Ａ及び７４Ａの他方のもの）。具体的には、上述の方法によると、マシンＭ１及びＭ３によってそれぞれメッセージ７３Ａ及び７４Ａを伝送したとき、各々の送信マシンは、複製されたメモリ位置／アドレス＃１５についてのローカル／常駐「カウント値」をインクリメントし（例えば、「７」の値から「８」の値に）、インクリメントされたカウント値を格納し、前の常駐「カウント値」を上書き／置き換えし、メッセージ７３Ａ及び７４Ａ内の（さもなければ、それらの一部の、又はそれらと関連した）インクリメントされた「カウント値」も伝送する。マシンＭ１及びＭ２によるそれぞれメッセージ７３Ａ及び７４Ａの伝送時に、各送信マシン（つまり、マシンＭ１及びＭ３）は、それぞれレプリカ・メモリ更新メッセージ７３Ａ及び７４Ａの伝送に対応する複製されたメモリ位置／アドレス＃１５についての「８」のローカル／常駐「カウント値」を有することになる。
【０１６７】
従って、（例えば、比較器によって）常駐「カウント値」をメッセージ７４Ａの受信した「カウント値」と比較することによって、マシンＭ１は、入ってくるメッセージ７４Ａが複製されたメモリ位置／アドレス＃１５と関連した常駐「カウント値」（同じく「８」の「カウント値」である）の既存の状態と同一である「カウント値」（つまり、「８」の「カウント値」）を含む状況を検出するので、「衝突」／「競合」状況が生じたことを検出し、知らせることができる。
【０１６８】
同様に、メッセージ７３Ａの受信時にマシンＭ３はまた、対応する常駐「カウント値」と同じ「カウント値」を有する入ってくるメッセージも受信する。従って、マシンＭ３は、入ってくるメッセージ７３Ａが複製されたメモリ位置／アドレス＃１５と関連した常駐「カウント値」（同じく「８」の「カウント値」である）の既存の状態と同一である「カウント値」（つまり、「８」の「カウント値」）を含む状況を検出するので、「衝突」／「競合」状況が生じたことを検出し、知らせることができる。
【０１６９】
従って、それぞれメッセージ７３Ａ及び７４Ａを伝送し、よって、インクリメントされた「８」の「カウント値」を有する２つの送信マシンＭ１及びＭ３は、それぞれメッセージ７３Ａ及び７４Ａを受信するとき、受信したメッセージの「カウント値」と同じである常駐「カウント値」を有することになる。従って、これらのマシンもまた、競合を検出し、知らせることができる。
【０１７０】
受信マシンによるこうした競合状態の検出に対応して、受信したレプリカ・メモリ更新伝送が、ローカル／常駐レプリカ値（及び関連したローカル／常駐「カウント値」）と「競合する」（又は「衝突する」）場合、受信した衝突するレプリカ更新伝送の関連した「解決値」とローカル・レプリカ・メモリ位置のローカル／常駐「解決値」を一緒に用いて、受信したレプリカ更新伝送とローカル常駐値との間の衝突を解決することができる。具体的には、単一の「優先する」解決値、よって、優先するレプリカ更新値（つまり、優先する「解決値」の関連した／対応するレプリカ更新値）を選択するために、特定の解決規則に従って、２つの「解決値」（つまり、常駐／ローカル「解決値」と受信した衝突する伝送の「解決値」）を比較することにより、こうした競合状態を解決することができる。
【０１７１】
例えば、図８−図１２において、使用される解決規則は、２つの比較される「解決値」のうちのより大きいものを選択するという簡単なものである。レプリカ・メモリ更新伝送の「解決値」が送信マシンの数値のアイデンティティに対応する、図８−図１２の状況において、上述の簡単な解決規則は、数値が最大のアイデンティティのマシンによって送られたレプリカ更新伝送が優先するというものである。しかしながら、代替的な実施形態においては、いずれかの他の規則又は方法を用いて、２つの比較された「解決値」（つまり、受信した衝突するレプリカ更新伝送の「解決値」と対応するローカル／常駐「解決値」）から、「優先する」解決値を選択することもできる。従って、２つの「解決値」を比較したとき、同じ優先する値を一貫性があるように選択する、ここに記載されるものとは異なるいずれの解決規則又は方法をも代替的に使用し、利用してもよい。
【０１７２】
ここで図１２を参照すると、受信マシンＭ２、Ｍ４、Ｍ５・・・Ｍｎの各々が２つの伝送７３Ａ及び７４Ａの第２のものを受信し、上述した方法に従ってこうした２番目に受信した伝送を「実行する」ように進めるとき、最初に受信した伝送の更新された「カウント値」と２番目に受信した伝送の「カウント値」との間に「衝突」状態が検出されることになるが、関連した「解決値」及び上述した簡単な解決規則を用いることによって、一貫性がある方法で複製されたメモリ位置の更新を達成することができる。具体的には、２番目に受信したレプリカ更新伝送と常駐／ローカル・レプリカ値（関連した「カウント値」を用いて検出されるような）との間に「競合」の状況を検出すると、上述の簡単な解決規則（又は、いずれかの他の代替的に用いられる解決規則）に従って、関連した「解決値」（つまり、受信した衝突するレプリカ更新伝送の「解決値」とローカル／常駐「解決値」）を比較し、単一の優先するレプリカ更新値（つまり、ローカル／常駐レプリカ更新値、又は受信した衝突するレプリカ更新伝送の受信したレプリカ更新値のいずれか）を選択することができる。
【０１７３】
例えば、マシンＭ２が、２番目に受信したレプリカ更新伝送のようなレプリカ更新伝送７４Ａ（よって、最初に受信したレプリカ更新伝送のようなレプリカ更新伝送７３Ａ）を受信し、常駐レプリカ値（つまり、最初に受信した伝送７３Ａによる常駐レプリカ値の更新）と「競合する」／「衝突する」ものとして、２番目に受信した伝送７４Ａを検出した場合、上述の簡単な規則に従って、ローカル／常駐「解決値」と受信した「解決値」を比較することによって、「３」の解決値を含む受信したレプリカ更新伝送７４Ａが、前の伝送７３Ａからの「１」の常駐／ローカル解決値より優先する（解決値「３」は、解決値「１」より大きいので）という判断がなされる。その結果、マシンＭ２のローカルの対応するレプリカ・メモリ位置は、レプリカ更新伝送７４Ａから受信した新しいレプリカ更新値「９２」に更新され、対応するローカル／常駐「解決値」は受信した「３」の値と置き換えられる。
【０１７４】
代替的に、マシンＭ２（又は、マシンＭ４・・・Ｍｎのいずれか他のもの）が、２番目に受信したレプリカ更新伝送のようなレプリカ更新伝送７３Ａ（よって、最初に受信したレプリカ更新伝送のようなレプリカ更新伝送７４Ａ）を受信し、常駐レプリカ値（つまり、最初に受信伝送７４Ａによって更新された常駐レプリカ値）と「競合する」／「衝突する」ものとして、２番目に受信した伝送７３Ａを検出した場合、上述の簡単な規則に従って、ローカル／常駐「解決値」と受信した「解決値」を比較することによって、「１」の解決値を含む受信したレプリカ更新伝送７３Ａが、前の伝送７４Ａからの「３」の常駐／ローカル解決値には優先しない（解決値「１」は、解決値「３」より小さいので）という判断がなされる。その結果、マシンＭ２のローカルの対応するレプリカ・メモリ位置は、レプリカ更新伝送７３Ａから受信した２番目に受信したレプリカ更新値「２１１」には更新されず、対応するローカル／常駐「解決値」は「１」の受信した「解決値」とは置き換えられない。
【０１７５】
従って、マシンＭ２、Ｍ４・・・Ｍｎによる衝突するレプリカ更新伝送７３Ａ及び７４Ａの受信順序に関係なく、関連した「解決値」及び対応する解決規則の使用により、複製されたメモリ位置の一貫性がある更新を達成することが可能になるので、伝送７３Ａ及び７４Ａの両方を受信したとき、受信マシンＭ２、Ｍ４・・・Ｍｎの各々の対応するレプリカ・メモリ位置は、最終的に、ほぼ同じままであるように更新される。
【０１７６】
同様に、上述の方法及び受信マシンＭ２、Ｍ４・・・Ｍｎの各々についての「解決値」を比較する規則はまた、送信マシンＭ１及びＭ３の各々にも適用される。具体的には、送信マシンＭ１及びＭ３の各々が、それぞれ他のマシンの伝送７４Ａ及び７３Ａを受信し、上述の方法に従ってこうした受信した伝送を「実行する」ように進めるとき、常駐／ローカル「カウント値」と他の送信マシンの受信した伝送の「カウント値」との間に「衝突」の状況が検出されるが、関連した「解決値」及び上述した簡単な解決規則を用いることによって、複製されたメモリ位置の更新を一貫した方法で達成することができる。具体的には、受信したレプリカ更新伝送と常駐／ローカル・レプリカ値の間の「競合」の状況を検出したとき（関連した「カウント値」を用いることによって検出されるような）、上述した簡単な解決規則（又は、いずれかの他の代替的に用いられる解決規則）に従って、関連した「解決値」（つまり、受信した衝突するレプリカ更新伝送の「解決値」及びローカル／常駐「解決値」）を比較して、単一の優先するレプリカ更新値（つまり、ローカル／常駐レプリカ更新値、又は受信した衝突するレプリカ更新伝送の受信したレプリカ更新値）を選択することができる。
【０１７７】
例えば、マシンＭ１がマシンＭ３のレプリカ更新伝送７４Ａを受信し、こうした受信した伝送７４Ａを、常駐レプリカ値（つまり、レプリカ更新伝送７３ＡのマシンＭ１の伝送によって更新された常駐レプリカ値）と「競合する」／「衝突する」ものとして検出したとき、上述した簡単な規則に従って、ローカル／常駐「解決値」と受信した「解決値」を比較することによって、「３」の解決値を含む受信したレプリカ更新伝送７４Ａが、「１」の常駐／ローカル解決値より優先するという判断がなされる（解決値「３」が解決値「１」より大きいため）。その結果、マシンＭ１のローカルの対応するレプリカ・メモリ位置は、レプリカ更新伝送７４Ａから受信した新しいレプリカ更新値「９２」に更新され、対応するローカル／常駐「解決値」は、受信した「３」の値と置き換えられる。
【０１７８】
代替的に、マシンＭ３がマシンＭ１のレプリカ更新伝送７３Ａを受信し、こうした受信した伝送７３Ａを、常駐レプリカ値（つまり、レプリカ更新伝送７４ＡのマシンＭ３の伝送によって更新された常駐レプリカ値）と「競合する」／「衝突する」ものとして検出したとき、上述の簡単な規則に従って、ローカル／常駐「解決値」と受信した「解決値」を比較することによって、「１」の解決値を含む受信したレプリカ更新伝送７３Ａが、「３」の常駐／ローカル「解決値」には優先しないという判断がなされる（解決値「１」は、解決値「３」より小さいため）。その結果、マシンＭ３のローカルの対応するレプリカ・メモリ位置は、レプリカ更新伝送７３Ａから受信した、受信したレプリカ更新値「２１１」に更新されず、対応するローカル／常駐「解決値」は、受信した「１」の「解決値」と置き換えられない。
【０１７９】
従って、関連した「解決値」及び対応する解決規則を使用することにより、送信マシンＭ１及びＭ３の各々について、複製されたメモリ位置の一貫性がある更新を達成することが可能になるので、送信マシンＭ１及びＭ３の各々の対応するレプリカ・メモリ位置は、最終的に、それぞれ伝送７３Ａ及び７４Ａの両方を受信したとき、ほぼ同じままであるように更新される。
【０１８０】
従って全体的に、受信マシン及び送信マシンの両方について上述したような関連した「解決値」並びに対応する解決規則を使用することにより、複製されたメモリ位置の一貫性がある更新を達成することが可能になる。
【０１８１】
従って図１８を参照すると、図１１−図１２の例が、時図表でまとめて示される。ここで、マシンＭ１は、アドレス＃１５の更新値「２１１」と、「８」の競合値（「カウント値」）と、「１」の「解決値」とを有するレプリカ・メモリ更新Ｎ６０１Ａ（図１１及び図１２のレプリカ更新７３Ａに対応する）を、対応するレプリカ・メモリ位置が常駐するマシンＭ２、Ｍ３・・・Ｍｎに伝送する。また、ほぼ同時に／並行して、マシンＭ３もまた、同じアドレス＃１５の更新値「９２」と、「８」の競合値（「カウント値」）と、「３」の「解決値」とを有するレプリカ・メモリ更新Ｎ６０２Ａ（図１１及び図１２のレプリカ更新７４Ａに対応する）を、対応するレプリカ・メモリ位置が常駐するマシンＭ１、Ｍ２、Ｍ４・・・Ｍｎに伝送する。
【０１８２】
同様に、図１８に示されるように、伝送Ｎ６０１Ａ及びＮ６０２Ａは、直ぐには（つまり、伝送と同じ時間単位１には）受信マシンに到着しない。代わりに、受信マシンの各々は、マシンＭ１−Ｍｎの各々について示される矢印により、時間単位５にレプリカ更新伝送Ｎ６０１Ａ及びＮ６０２Ａを受信するように示される。
【０１８３】
しかしながら、図６及び図７の場合とは違って、各受信マシンの常駐「カウント値」及び「解決値」と併せて伝送Ｎ６０１Ａ及びＮ６０２Ａについての関連した「カウント値」及び「解決値」を使用することにより、２つの衝突する／競合するレプリカ更新伝送Ｎ６０１Ａ及びＮ６０２Ａを検出し、解決することが可能になる。具体的には、マシンＭ２、Ｍ４・・・Ｍｎによりレプリカ更新伝送Ｎ６０１Ａ又はＮ６０２Ａのどちらが受信されるかに関係なく、各マシンは、独立して、最初に受信した伝送との２つの受信した伝送の衝突／競合の第２のものを検出し、ローカルの対応するレプリカ・メモリ値を、２つの衝突する伝送の同じ優先するもの（つまり、マシンＭ３のレプリカ更新伝送７４Ａ）の、共通の一貫性がある更新レプリカ・メモリ値へと解決することができる。
【０１８４】
さらに、送信マシンＭ１及びＭ３の各々は、独立して、受信マシンのローカル値との他のマシンの衝突／競合の受信した伝送を検出し、ローカルの対応するレプリカメモリ値を、２つの衝突する伝送の同じ優先するもの（つまり、マシンＭ３の優先するレプリカ更新伝送７４Ａ）の共通し、一貫性がある更新レプリカ・メモリ値へと解決することができる。
【０１８５】
従って、「カウント値」及び「解決値」を複製されたメモリ位置と関連付けるために本発明の上述した方法を用い、こうした「カウント値」及び「解決値」の動作及び比較についてここに述べられる規則を用いることによって、複数のマシンのレプリカ・メモリ位置の一貫性がある更新を達成することができ、衝突する／競合するレプリカ更新伝送の検出及び解決を達成することもできる。
【０１８６】
複製されたメモリ位置と共に／関連して「カウント値」及び「解決値」を設けることにより、同じ複製されたメモリ位置についての複数のレプリカ更新伝送間の競合を検出し、解決することができ、複製されたメモリ位置の一貫性がある更新が達成／保証される手段がもたらされることが、上記の例から分かるであろう。
【０１８７】
従って、「カウント値」を設け、簡単な規則、すなわち、複製されたメモリ位置の更新コンテンツを伴う入ってくるメッセージは、常駐「カウント値」が受信した「カウント値」より小さい場合に有効であるが、常駐「カウント値」が受信した「カウント値」より大きい場合に有効ではないという規則を設けることにより、複製されたメモリ位置の一貫性がある更新を達成することが可能になる。
【０１８８】
さらに、「カウント値」及び「解決値」を設けること、並びに、更なる簡単な規則、すなわち、常駐「カウント値」及び受信した「カウント値」が等しく、常駐「解決値」と比較された受信した「解決値」が、選択された／作動された解決値に従って「優先する値」であると判断される場合（例えば、アイデンティティの数値が大きいマシンにより送られたレプリカ更新伝送は、アイデンティティの数値が小さいマシンにより送られたレプリカ更新伝送に対して優先し、これにより、ローカルの対応するレプリカ・メモリ位置が更新される）、複製されたメモリ位置の更新コンテンツを伴う入ってくるメッセージは有効である（つまり、ローカルの対応するレプリカ・メモリ位置を更新することになる）という規則を設けることにより、複製されたメモリ位置の一貫性がある更新を達成することが可能になる（「衝突する」又は「競合する」レプリカ更新伝送の存在下でも）。逆に言えば、常駐の「カウント値」及び受信した「カウント値」が等しいが、常駐「解決値」と比較された「解決値」が、選択される／作動される解決規則に従って、「優先する値」であると判断されない場合（例えば、アイデンティティの数値が小さいマシンによって送られるレプリカ更新伝送は、アイデンティティの数値が大きいマシンによって送られたレプリカ更新伝送には優先せず、これにより、ローカルの対応するレプリカ・メモリ位置は更新されない）、複製されたメモリ位置の更新コンテンツを伴う入ってくるメッセージは無効である。
【０１８９】
従って、図１１−図１２及び図１８に示されるように、ローカル／常駐の対応する「カウント値」と同じ「カウント値」を有するレプリカ更新メッセージ／伝送を受信したとき、「解決値」を用いて、受信した「衝突する」レプリカ更新伝送は、「優先する」かどうか（つまり、ローカルの対応するレプリカ・メモリ位置を受信したレプリカ更新値に更新させるかどうか）を判断することができる。このような受信した衝突するレプリカ更新伝送が優先するという判断がなされた場合、受信した衝突するレプリカ更新伝送と関連した更新レプリカ値、カウント値、及び解決値は、受信マシンの対応するローカル／常駐のレプリカ値、カウント値、及び解決値に置き換え／上書きされることになる。代替的に、こうした受信した衝突するレプリカ更新伝送は「優先しない」という判断がなされた場合、ローカルの／対応するレプリカ値、カウント値、及び解決値は、受信したレプリカ更新値、カウント値、及び解決値に更新されず、代わりに、受信したレプリカ・メモリ更新伝送は、廃棄され又は無視され、さもなければローカル・メモリに更新されない。要するに、本発明の方法を用いて、図７に示される一貫性がないレプリカ更新の状況が回避され、レプリカ・メモリ位置の一貫性がある更新が達成される。
【０１９０】
さらに、レプリカ・メモリ位置に対応する「カウント値」及び「解決値」を格納する、更に別の好ましい改善された構成が提供される。具体的には、「カウント値」及び「解決値」は、アプリケーション・プログラム・コードによるなど、アプリケーション・プログラムによりアクセスできないように格納されることが好ましい。図１９は、更に別の好ましい格納構成を説明する。
【０１９１】
図１９は、図２に示される複数のマシンの単一のマシンＭ１を示す。説明を簡単にするために、他のマシン（Ｍ２−Ｍｎ）はこの図から省かれているが、図１９の好ましい格納構成の表示は、こうした複数のマシンの全て（図２のマシンＭ２−Ｍｎのような）、及び、いずれの他の複製型、分散型、又はマルチ・コンピュータ・システム構成にも適用可能である。
【０１９２】
具体的には、点線の四角として示された非アプリケーション・メモリ領域Ｎ７０１Ａが示されるマシンＭ１のメモリが、図１９に示される。こうしたメモリは、メモリ位置Ａ、Ｂ及びＣとは対照的に、マシンＭ１上で実行されているアプリケーション・プログラムにアクセス可能でないことが好ましく、この図面では、点線の輪郭は、このメモリを示し、かつ、これをアクセス可能なメモリ位置Ａ、Ｂ及びＣから区別するために用いられる。
【０１９３】
図１９に示される好ましい構成において、「カウント値」及び「解決値」は、アプリケーション・プログラム及びアプリケーション・プログラム・コードにアクセスできないように、こうした非アプリケーション・メモリ領域に格納される。
【０１９４】
仮想メモリ、ページ、及びメモリ管理ユニット（ＭＭＵ）を用いて、特定の命令又はコード（例えば、アプリケーション・プログラム・コードのような）にアクセスできないメモリ空間又は領域、或いはアドレス範囲を作成するといった、非アプリケーション・アクセス可能メモリ領域についての種々のメモリ構成及び方法は、従来技術において周知である。名前空間、ソフトウェア、又はアプリケーション・ドメイン、仮想マシン、及び分離された／独立したメモリ・ヒープなどを用いる他の構成も、従来技術において周知であり、全てのこうしたメモリ区分化、分離、及び／又はメモリ・アクセス制御方法及び構成が、本発明の範囲内に含まれる。
【０１９５】
こうした構成は好ましいものであり、非アプリケーション・メモリ領域Ｎ７０１に格納された「カウント値」及び「解決値」は、許可されていない方法、意図されていない方法、予想されない方法、又はサポートされていない方法で、アプリケーション・プログラム又はアプリケーション・プログラム・コードにより、改ざんし、編集し、操作し、修正し、破壊し、消去し、又は他の方法で妨げることができない。
【０１９６】
単一の非アプリケーション・メモリ領域だけが図１９に示されるが、１つより多い非アプリケーション・メモリ領域を用いることができ、いずれのこうしたマルチ領域構成も、本発明の範囲内に含まれると考えられる。
【０１９７】
本発明の少なくとも１つの実施形態においては、単一のマシンの１つの、幾つかの、又は全ての「カウント値」及び「解決値」は、内部メモリ、メインメモリ、システム・メモリ、実メモリ、仮想メモリ、揮発性メモリ、キャッシュ・メモリ、或いは単一のマシンの中央処理ユニットに／により直接アクセスできる（又はアクセス可能な）、こうした単一のマシンのいずれかの他の一次格納部又は他のメモリ／格納部に格納することができる。
【０１９８】
代替的に、本発明の少なくとも１つの更に別の実施形態においては、単一のマシンの１つの、幾つかの、又は全ての「カウント値」及び「解決値」は、内部メモリ、フラッシュ・メモリ、不揮発性メモリ、或いは単一のマシンの中央処理ユニットに／より直接アクセスできる（又はアクセス可能な）、こうした単一のマシンのいずれかの他の二次格納部又は他のメモリ／格納部（例えば、磁気又は光ディスク・ドライブ、テープ・ドライブ、フラッシュ・ドライブ等）に格納することができる。
【０１９９】
さらに代替的に、本発明の少なくとも１つの更に別の実施形態においては、単一のマシンの全ての「カウント値」及び「解決値」の或る第１のサブセットは、内部メモリ、メインメモリ、システム・メモリ、実メモリ、仮想メモリ、揮発性メモリ、キャッシュ・メモリ、或いは単一のマシンの中央処理ユニットに／により直接アクセスできる（又はアクセス可能な）、こうした単一のマシンのいずれかの他の一次格納部又は他のメモリ／格納部に格納することができ、単一のマシンの全ての「カウント値」及び「解決値」の別の第２のサブセットは、内部メモリ、フラッシュ・メモリ、不揮発性メモリ、或いは単一のマシンの中央処理ユニットに／より直接アクセスできる（又はアクセス可能な）、こうした単一のマシンのいずれかの他の二次格納部又は他のメモリ／格納部（例えば、磁気又は光ディスク・ドライブ、テープ・ドライブ、フラッシュ・ドライブ等）に格納することができる。さらに代替的に、本発明の少なくとも１つの更に別の実施形態においては、そのような第１のサブセット及び第２のサブセットの「カウント値」及び「解決値」は、第１のサブセットと第２のサブセットとの間で／の中で移動することができ（例えば、これらとの間で）、これにより、そのような内部メモリ（例えば、一次格納部）とそのような外部メモリ（例えば、二次格納部）との間で／の中で（例えば、これらとの間で）移動することもできる。
【０２００】
重要なことに、複製されたメモリ位置の更新値と関連した「カウント値」及び「解決値」を含むレプリカ更新メッセージを実行する上述の方法は、同じ複製されたメモリ位置についての２つ又はそれ以上の衝突するレプリカ更新メッセージの発生を検出すること、又は検出する能力を可能にする。さらに、各々の受信した伝送の実行を達成するために、各受信マシンによる受信したレプリカ更新メッセージのこうした「実行」は、互いのマシンとは関係なく（及び潜在的に、異なるマシンにおいて異なる時間及び／又は異なる順序で）、かつ、付加的な通信、確認、肯定応答、或いはこうしたマシンの又はマシン間の他の通信なしで行なわれ得る。
【０２０１】
複数のマシンの複数の対応するレプリカ・メモリ位置（こうしたマシンの各自の対応する各々のレプリカ・メモリ位置の１つ）の場合、単一の「カウント値」及び「解決値」だけが存在し、例えば、レプリカ・メモリ位置ＡについてのマシンＭ１の固有の「カウント値」及び／又は「解決値」、及び、レプリカ・メモリ位置ＡについてのマシンＭ２の第２の異なる「カウント値」及び／又は「解決値」といった、多数の「マシンごとの」カウント値又は解決値は存在しない。その結果、各マシンは、単一のレプリカ・メモリ位置について多数の「カウント値」及び／又は「解決値」を格納する必要はなく（例えば、マシンＭ１は、レプリカ・メモリ位置ＡについてマシンＭ１の「カウント値」及び／又は「解決値」と、レプリカ・メモリ位置ＡについてのマシンＭ２の「カウント値」及び／又は「解決値」のローカル・コピーと、レプリカ・メモリ位置ＡについてのマシンＭ３の「カウント値」及び／又は「解決値」のローカル・コピーとを格納するといった）、各々のレプリカ更新伝送により、単一のレプリカ・メモリ位置についての１つより多い「カウント値」及び／又は「解決値」を伝送する必要もない。その結果、複数のものを含むマシンの数が増加するとき、維持する必要がある単一の複製されたメモリ位置の複数の「カウント値」及び／又は「解決値」は対応して増加されない。具体的には、全てのマシンの全ての対応するレプリカ・メモリ位置に対して、１つの「カウント値」及び「解決値」だけが維持され、対応するレプリカ・メモリ位置が常駐する各マシンに対して、１つの「カウント値」及び／又は「解決値」は維持されない。従って、複数のマシンの数が増加しても、レプリカ・メモリ位置について、マシンごとの「カウント値」及び／又は「解決値」は増加されない。
【０２０２】
本発明により、「カウント値」と「解決値」と複製されたメモリ位置との間の代替的な関連及び対応が予想される。具体的には、単一の「カウント値」及び単一の「解決値」と、単一の複製されたメモリ位置の各々との上述の「１対１」の関連に加えて、単一の「カウント値」及び／又は単一の「解決値」を２つ又はそれ以上の複製されたメモリ位置と関連付けることができる代替的な構成も予想される。例えば、代替的な実施形態において、単一の「カウント値」及び／又は「解決値」は、アレイ・データ構造、又はオブジェクト、又はクラス、又は「構造体（ｓｔｒｕｃｔ）」、又は仮想メモリ・ページ、又は２つ又はそれ以上の関連した及び／又は関連付けられた複製されたメモリ位置を含む他の構造化データ型を含む複数の複製されたメモリ位置のような、関連した組の複製されたメモリ位置について、本発明の方法に従って格納及び／又は伝送できることが予想される。
【０２０３】
好ましくは、「カウント値」及び「解決値」は、非複製されたメモリ位置又は非レプリカ・メモリ位置（つまり、２つ又はそれ以上のマシン上に複製されず、ほぼ同じままであるように更新される）について、格納及び／又は動作されない。従って、「カウント値」及び／又は「解決値」は、こうした非複製されたメモリ位置及び／又は非レプリカ・メモリ位置について格納されないことが好ましい。
【０２０４】
同様に、特定の複製されたメモリ位置（又は複製されたメモリ位置の組）に対応する「カウント値」及び「解決値」は、こうした特定の複製されたメモリ位置が複製されるマシン（つまり、対応するローカル・レプリカ・メモリ位置が常駐するマシン）上にのみ格納及び／又は動作されることが好ましい。
【０２０５】
好ましくは、幾つかの数のマシン（例えば、マシンＭ１−Ｍ３など）上に複製される複製されたメモリ位置が、更に別のマシン（例えば、マシンＭ４など）上に付加的に複製されるとき、こうした付加的に複製されたメモリ位置に対応する更に別のマシン（例えば、マシンＭ４）上に、ローカル／常駐「カウント値」及び「解決値」が生成され、付加的に複製されたメモリ位置が既に複製された他のマシン（例えば、マシンＭ１−Ｍ３であるが、更に別のマシンの初期化されたレプリカ・メモリ値から供給された同じマシンであることが好ましい）の「カウント値」及び「解決値」の少なくとも１つのほぼ類似した値で初期化される。こうした更に別のマシン（例えば、マシンＭ４）上に「カウント値」及び「解決値」を生成し、初期化するこうしたプロセスにより、いずれかの他のマシン（例えば、マシンＭ１−Ｍ３）の「カウント値」及び「解決値」がインクリメントし、更新し、又は変更しないことが好ましい。その後、上述の方法及び構成に従って、対応するレプリカ・メモリ位置が常駐する全てのマシン（例えば、マシンＭ１−Ｍ４）（複製されたメモリ位置が付加的に複製された更に別のマシンを含む）により、レプリカ更新伝送を送受信することができる。
【０２０６】
第１のマシン（例えば、マシンＭ１のような）の非複製メモリ位置が１つ又はそれ以上の更に別のマシン（例えば、Ｍ２−Ｍ４）上に複製されたとき、こうした第１のマシン（例えば、マシンＭ１）及びこうした更に別のマシン（例えば、マシンＭ２−Ｍ４）の両方の上の複製されたメモリ位置に対応するローカル／常駐「カウント値」及び「解決値」が生成され、実質的に類似した同じ初期値で初期化されることが好ましい。好ましくは、こうした初期値はゼロ（「０」であることが好ましいが、このような代替的な初期値が、全てのマシン（例えば、マシンＭ１−Ｍ４）の全ての対応する常駐「カウント値」及び／又は「解決値」にわたって実質的に類似している限り、いずれの他の代替的な初期値を用いてもよい。同様に、こうした第１のマシン（例えば、マシンＭ１）及びこうした更に別のマシン（例えば、マシンＭ２−Ｍ４）において「カウント値」及び／又は「解決値」を生成し、初期化するこうしたプロセスにより、最初の「カウント値」及び／又は「解決値」がインクリメントされ、更新され、又は変更されないことが好ましい。その後、上述の方法及び構成に従って、対応するレプリカ・メモリ位置が常駐する全てのマシン（例えば、マシンＭ１−Ｍ４）（第１のマシン及び更に別のマシンを含む）により、レプリカ更新伝送を送受信することができる。
【０２０７】
従って要するに、上述の方法を用いて、マシンＭ１−Ｍ４の各々は、多数の衝突する／競合するレプリカ更新伝送の存在下で、一貫性があり、かつ、整合性がある方法で、それらの対応するレプリカ・メモリ位置を更新することができる。具体的には、図１２の環境において、入ってくるメッセージ７３Ａのカウント値が、アドレス＃１５における既存のカウント値と比較され、これと同じであることが見出されるので、マシンＭ３は、メッセージ７３Ａを受信すると、最初に競合を検出する。こうした競合の検出に続いて、マシンＭ３は、常駐「解決値」と受信した「解決値」を比較して優先する値を判断し、１は３より小さいので、マシンＭ３はマシンＭ１から入ってくるメッセージを拒否し、よって、値９２を保持する。反対に、受信したメッセージのカウント８は、既存のメモリのカウント８と等しいので、マシンＭ１は、メッセージ７４Ａを受信すると、最初に競合を検出する。しかしながら、マシンＭ１は、マシンＭ３（「３」の解決値を有する）から送られる当該メッセージ７３Ａを認識しており、数３が、数１より大きいので、そのメッセージを受け入れ、既存のコンテンツ２１１を入ってくるコンテンツ９２に上書きする。
【０２０８】
同様に、残りのマシンＭ２、Ｍ４、Ｍ５・・・Ｍｎの各々は、いずれかの順序でメッセージ７３Ａ及びメッセージ７４Ａの両方を受信する。そのカウント８が、マシンＭ２、Ｍ４、Ｍ５・・・Ｍｎの各々の既存のカウント値と比較され、これより大きいことが見出されるので、受信される第１のメッセージは受け入れられる。このように、受信される第１のメッセージが受け入れられる。しかしながら、受信される第２のメッセージは、マシンＭ１、Ｍ２等に、ｎで終わる階層的順序で数１、２等が割り当てられる以下の方法で解決できる競合状態の検出をトリガする。入ってくるメッセージが、前のメッセージを送ったマシンの数より階層的順序が大きい数を有するマシンからのものである場合、より大きい数を有するマシンからのメッセージが受け入れられる。別の言い方をすれば、２番目に（又は、後に）受信したメッセージが前のメッセージを送ったものより小さい数を有するマシンからのものである場合、２番目に（又は、後に）受信したメッセージが拒否される。このようにして、競合状態が検出されるだけでなく、解決され、マシンＭ３の実行がマシンＭ１の実行より優先し、よって、アドレス＃１５において、コンテンツ９２が全てのマシンに記録される。
【０２０９】
明らかに、より大きい数のマシンを優先するのを可能にする決定は、完全に恣意的なものであり、所望であれば、より小さい数が付されたマシンを優先することもできる。
【０２１０】
代替的な構成においては、マシンの階層の数に依存する代わりに、各マシンに、局所的に生成されたランダム数すなわち擬似乱数（所望であれば、その時々に変えることができる）を与えることができる。従って、異なるマシンは、より大きいランダム数を優先するか、又はより小さいランダム数を優先するかに関係なく、その時々に優先することになる。
【０２１１】
ここで図２４−図３０を参照すると、これらの図は、「カウント値」及び「解決値」を有するレプリカ・メモリ更新を伝送するのに用いられる種々の有利なメッセージ・フォーマットを示す。具体的には、示される４つの代替的なレプリカ・メモリ更新メッセージ・フォーマット構成を、レプリカ・メモリ更新パケット、メッセージ、フレーム、セル、又はいずれかの他のレプリカ更新伝送のデータ／パケット・フォーマットとして用いることができる。４つのレプリカ・メモリ更新メッセージ・フォーマットの各々は、１つ又はそれ以上の更新レプリカ・メモリ値を有するレプリカ更新伝送において「カウント値」及び「解決値」の異なるフォーマット構成を示す。
【０２１２】
図２４は、「ｎ」個の更新レプリカ・メモリ値を含む第１のレプリカ・メモリ更新メッセージ１３０１を示す。具体的には、レプリカ更新メッセージ１３０１は、「ヘッダ」部分１３０２と「ペイロード」部分１３０３に分けられる。好ましくは、こうしたペイロード部分１３０３内には、示されるレプリカ・メモリ更新値Ｖ１、Ｖ２・・・Ｖｎがある。レプリカ・メモリ位置識別子「Ｉ」、カウント値「Ｃ」、及び解決値「Ｒ」が、各レプリカ・メモリ更新値と関連付けられる。図２４に示される好ましいメッセージ・フォーマット構成においては、示されるレプリカ・メモリ更新値Ｖ１、Ｖ２・・・Ｖｎの各々は、それぞれグループ１３１０／１（Ｉ１、Ｖ１、Ｃ１及びＲ１を含む）、１３１０／２（Ｉ２、Ｖ２、Ｃ２及びＲ２を含む）・・・１３１０／ｎ（Ｉｎ、Ｖｎ、Ｃｎ及びＲｎを含む）内に関連したレプリカ・メモリ位置識別子「Ｉ」、カウント値「Ｃ」、及び解決値「Ｒ」と共に格納されるように示される。
【０２１３】
図２５を参照すると、より効率的なレプリカ・メモリ更新メッセージ・フォーマットが示される。より効率的なレプリカ・メモリ更新メッセージ１４０１は、「ｎ」個の更新レプリカ・メモリ値を有する。図２４のレプリカ更新メッセージと同様に、レプリカ更新メッセージ１４０１は、「ヘッダ」部分１４０２と「ペイロード」部分１４０３に分けられる。しかしながら、図２４とは違って、単一の解決値「Ｒ」だけが、レプリカ更新メッセージ１４０１に格納され、そこで、単一の解決値「Ｒ」は、全ての（又は、２つ又はそれ以上の）レプリカ・メモリ値Ｖ１、Ｖ２・・・Ｖｎと関連付けられ、よって、それらによって使用されるように理解される。具体的には、図２５のレプリカ更新メッセージ・フォーマットにおいて、単一の解決値「Ｒ」は、全てのレプリカ・メモリ更新値と関連付けられるように理解され、従って、こうした理解に従って、受信マシンによってレプリカ・メモリ更新メッセージ１４０１をデコードする際、図２４に示されるように、あたかも解決値「Ｒ」がレプリカ・メモリ更新値の各々について一度格納されたかのように、単一の格納される解決値「Ｒ」が用いられる／調べられる（例えば、単一の格納される解決値「Ｒ」が、解決値Ｒ１、Ｒ２・・・Ｒｎの代わりに、図２４の場合のように固有のレプリカ・メモリ更新値の各々について一度格納される）。
【０２１４】
レプリカ更新メッセージ・フォーマット１４０１が表す、図２４のレプリカ・メモリ更新メッセージ・フォーマット１３０１に優る改善点は、単一のレプリカ更新メッセージに関して、多数回ではなく（解決値Ｒ１、Ｒ２・・・Ｒｎに関する図２４の場合のように）、レプリカ更新について一度のみ解決値「Ｒ」が伝送され、これにより、レプリカ・メモリ更新メッセージのサイズが低減されることである。このサイズの低減は、全てのこうした格納されたレプリカ・メモリ更新値間で単一の解決値「Ｒ」を共有することによって、より多くのレプリカ・メモリ更新値を単一のレプリカ・メモリ更新メッセージに格納することを可能にし、或いは代替的に、同じ数のレプリカ・メモリ更新値をより小さいサイズのレプリカ更新メッセージ・フォーマットで伝送することを可能にする。従って、単一の伝送（或いは、単一のパケット、セル、フレーム、メッセージ、又はストリーム）の多数のレプリカ・メモリ更新値について単一の解決値を伝送することは、より効率的な伝送構成を表し、これにより、複数のマシンを相互接続するネットワーク５３に必要とされる伝送能力が少なくなる。
【０２１５】
次に、図２６において、更に別の代替的なメッセージ・フォーマットが示される。具体的には、図２６は、単一のカウント値「Ｃ」のみが、単一のレプリカ・メモリ更新メッセージ／伝送の多数のレプリカ・メモリ更新値に対して伝送される、更に別の改善されたメッセージ・フォーマット構成を示す。これは、単一の解決値「Ｒ」が、全ての（又は、２つ又はそれ以上の）レプリカ・メモリ更新値に対して伝送され、こうした値の各々と関連付けられる、図２５の代替的な構成と類似している。図２６の場合には、単一のカウント値「Ｃ」も同様に、全ての（又は、２つ又はそれ以上の）レプリカ・メモリ更新値について一度格納され、こうした値の各々と関連付けられる、
【０２１６】
特に、図２５のレプリカ・メモリ更新メッセージ１４０１及び図２４のレプリカ・メモリ更新メッセージ１３０１の場合と同様に、レプリカ・メモリ更新メッセージ１５０１は、「ヘッダ」部分１５０２と「ペイロード」部分１５０３に分けられる。しかしながら、レプリカ・メモリ更新メッセージ１４０１及び１３０１とは違って、単一のカウント値「Ｃ」だけが、全てのレプリカ値Ｖ１、Ｖ２・・・Ｖｎに対して格納される。単一のカウント値「Ｃ」を格納する際、こうした単一のカウント値「Ｃ」が関連つけられる全てのレプリカ・メモリ更新値について、こうした単一のカウント値「Ｃ」が、カウント値規則（つまり、レプリカ・メモリ更新の伝送時にレプリカ・メモリ位置と関連したカウント値をインクリメントする上述の規則）と一貫性があることが必要である。具体的には、２つ又はそれ以上のレプリカ・メモリ更新値に対して単一のカウント値「Ｃ」が格納されたとき、こうした単一の格納されたカウント値「Ｃ」は、こうした単一のカウント値「Ｃ」が、レプリカ・メモリ更新メッセージ１５０１において関連付けられる全てのレプリカ・メモリ更新値Ｖ１・・・Ｖｎのうちの最も大きい常駐／ローカル・カウント値の値をインクリメントする必要がある。さらに、レプリカ・メモリ更新伝送時にカウント値を更新するための上記の規則の僅かな修正において、単一の「カウント値」を含むレプリカ・メモリ更新を伝送するとき、レプリカ・メモリ更新メッセージ１５０１における伝送される単一のカウント値「Ｃ」は、格納され、更新されるレプリカ・メモリ位置の各々の常駐／ローカル・カウント値を上書きする。
【０２１７】
例えば、図２７−図２９を考える。マシンＭ１、Ｍ２・・・Ｍｎ上に複製される３つの複製されたメモリ位置Ａ、Ｂ及びＣの場合が示される。次に図２８において、マシンＭ１が複製されたメモリ位置Ａ及びＣの値を修正し、マシンＭ２・・・Ｍｎの他の対応するレプリカ・メモリ位置Ａ及びＣの更新を続けて行なう状況が示される。
【０２１８】
図２６の単一のレプリカ・メモリ更新メッセージ・フォーマットを用いて、マシンＭ１は、示されるようなネットワーク５３を介するレプリカ・メモリ更新メッセージ１６０１Ｂの伝送を続けて行なう。同様に、ヘッダ・フィールド１６０２Ｂ及びペイロード・フィールド１６０３Ｂが示されるレプリカ・メモリ更新メッセージ１６０１Ｂを含む値も示される。具体的には、「１」の値を有する単一の解決値Ｒ、「２１」の値を有する単一のカウント値Ｃ、「Ａ」の値を有する第１の識別されるレプリカ・メモリ位置Ｉ１（つまり、複製されたメモリ位置Ａのアイデンティティ）、及び複製されたメモリ位置Ａの更新値Ｖ１（値「２１１」である）が示され、続いて「Ｃ」の値を有する第２の識別されるレプリカ・メモリ位置Ｉ２（つまり、複製されたメモリ位置Ｃのアイデンティティ）、及び複製されたメモリ位置Ｃの更新値Ｖ２（値「１００」である）が示される。このように、レプリカ・メモリ更新メッセージ１６０１Ｂは、図２６のレプリカ・メモリ更新メッセージ・フォーマット１５０１の適用例を示す。
【０２１９】
しかしながら、マシンＭ１の複製されたメモリ位置Ａ及びＣの更新カウント値及び解決値に特に関心が向けられる。具体的には、マシンＭ１の２つの更新された複製されたメモリ位置Ａ及びＣの更新カウント値及び解決値が同一である（つまり、カウント値及び解決値の各々が同一である）ことが観察されるであろう。ここで、その理由が説明されるであろう。
【０２２０】
図２７を参照すると、複製されたメモリ位置Ａのカウント値が、「７」であると示され、複製されたメモリ位置Ｃのカウント値が「２０」であると示される。同様に、図２７では、複製されたメモリ位置Ａの解決値が、「２」であると示され、複製されたメモリ位置Ｃの解決値が、「１」であると示される。従って、図２７は、それぞれ複製されたメモリ位置Ａ及びＣの更新レプリカ値２１１及び１００が適用される前の、マシンＭ１の複製されたメモリ位置Ａ−Ｃの状態を示す。
【０２２１】
図２８に示されるようなレプリカ・メモリ位置Ａ及びＣの値（つまり、複製されたメモリ位置Ａの更新値「２１１」及び複製されたメモリ位置Ｃの更新値「１００」）の修正をもたらすマシンＭ１の動作に続いて、マシンＭ１は、図２６のレプリカ・メモリ更新メッセージ・フォーマット１５０１に従ってＡ及びＣの更新レプリカ・メモリ値を含ませるように、レプリカ・メモリ更新メッセージ１６０１Ｂを準備する。図２８のメッセージ１６０１Ｂ内には、「Ａ」の値を有する第１の識別されたレプリカ・メモリ位置Ｉ１（複製されたメモリ位置「Ａ」を特定する）、及び関連した更新値Ｖ１（複製されたメモリ位置Ａの更新値「２１１」である）が示される。単一の解決値Ｒ（「１」の値を有する）及び単一のカウント値Ｃ（「２１」の値を有する）も示される。具体的には、ここで、こうした単一の解決値Ｒ及び単一のカウント値Ｃを計算／生成する方法が説明されるであろう。
【０２２２】
この例において、メッセージ１６０１Ｂにおいて「１」の値で示される単一の解決値Ｒは、レプリカ・メモリ更新メッセージ１６０１Ｂの送信マシン（マシンＭ１である）の数値のアイデンティティである。従って、解決値の上述の例によると、メッセージ１６０１Ｂについての解決値として用いられるマシンＭ１の数値アイデンティティは、解決値Ｒとして格納される／伝送される。図２９に示されるように、この単一の解決値Ｒは、レプリカ・メモリ更新値（例えば、Ｖ１及びＶ２）の各々の実行において、メッセージ１６０１Ｂの受信時に受信マシンによって用いられる。
【０２２３】
図２８にも示されるように、メッセージ１６０１Ｂの単一の解決値Ｒについて計算／生成される解決値「１」に対応して、単一の解決値Ｒとして用いられるこうした解決値「１」も格納され、メッセージ１６０１Ｂによって更新される複製されたメモリ位置（つまち、複製されたメモリ位置Ａ及びＣ）の常駐解決値を上書きする。従って、図２８に示されるように、メッセージ１６０１Ｂについての生成された単一の解決値Ｒに従って、こうした単一の解決値（つまり、「１」の値）が格納され、複製されたメモリ位置Ａ及びＣの常駐／ローカルの解決値を置き換え、それらは上書きされ、それぞれ「１」及び「１」になる。
【０２２４】
次に、メッセージ１６０１Ｂにより更新されるレプリカ・メモリ位置（つまり、複製されたメモリ位置Ａ及びＣ）の常駐／ローカル・カウント値の組から、単一のカウント値Ｃが計算／生成される。具体的には次いで、上記の説明に従って、メッセージ１６０１Ｂにより更新される複製されたメモリ位置（つまり、複製されたメモリ位置Ａ及びＣ）の最も大きい常駐「カウント値」が、メッセージ１６０１Ｂの更新される予定の複製されたメモリ位置の各々の常駐カウント値を調べることによって決定しようとされ、メッセージ１６０１Ｂのインクリメントされた単一のカウント値として用いられる最大値を決定する。図２７を参照すると、こうした調査は、複製されたメモリ位置「Ｃ」の常駐カウント値「２０」が、メッセージ１６０１Ｂの一部として更新される複製されたメモリ位置（つまり、「７」の常駐カウント値を有する複製されたメモリ位置Ａ及び「２０」の常駐カウント値を有する複製されたメモリ位置Ｃ）のいずれかの他の常駐カウント値よりも大きいと判断する。従って、複製されたメモリ位置Ｃの常駐カウント値（つまり、値「２０」）が、単一のカウント値Ｃとしてインクリメントされ、次に使用されるカウント値として選択され、こうした値「２０」は、インクリメントされて、メッセージ１６０１Ｂの単一のカウント値Ｃの値「２１」になる。
【０２２５】
メッセージ１６０１Ｂに用いられる単一のカウント値Ｃが決定／計算されると、次に、こうした単一のカウント値Ｃが格納され、メッセージ１６０１Ｂにより格納される複製されたメモリ位置（つまり、複製されたメモリ位置Ａ及びＢ）の各々の常駐ローカル・カウント値を置き換える／上書きする。これは、複製されたメモリ位置Ａの常駐カウント値がメッセージ１６０１Ｂの単一のカウント値Ｃの値「２１」と置き換えられ、複製されたメモリ位置Ｃの常駐カウント値もまたメッセージ１６０１Ｂの単一のカウント値Ｃの値「２１」と置き換えられる、図２８にも示される。
【０２２６】
ここで図２９を参照すると、レプリカ・メモリ更新メッセージ１６０１Ｂを受信し、実行するマシンＭ２・・・Ｍｎの結果が示される。特に、マシンＭ２・・・Ｍｎのレプリカ・メモリ位置Ａは、「２１１」の更新されたコンテンツと、同じく「２１」の更新されたカウント値と、「１」の更新された解決値とを有することが観察されるであろう。同様に、マシンＭ２・・・Ｍｎの複製されたメモリ位置Ｃは、「１００」の値を有するように更新され、それぞれ「２１」及び「１」である、レプリカ・メモリ位置Ａのような同一の更新されたカウント値及び解決値も有する。具体的には、レプリカ・メモリ更新メッセージ１６０１Ｂの受信時に図２９に何が起こるかをここで説明する。
【０２２７】
受信マシン（マシンＭ２のような）がレプリカ・メモリ更新メッセージ１６０１Ｂを受信すると、こうした受信マシンは、こうした受信したメッセージ１６０１Ｂの実行を続けて行なう。こうした受信したメッセージ１６０１Ｂの実行において、受信マシンは、単一のカウント値Ｃを、メッセージ１６０１Ｂにより更新される複製されたメモリ位置（つまり、レプリカ・メモリ位置Ａ及びＣ）の各々と関連した常駐カウント値と比較を続けて行なう。従って、受信マシンは、カウント値を比較するための上述の規則に従って、最初に、メッセージ１６０１Ｂの単一のカウント値Ｃをレプリカ・メモリ位置Ａと関連した常駐カウント値と比較する。上述のカウント値比較規則によると、メッセージ１６０１Ｂの単一のカウント値Ｃが、レプリカ・メモリ位置Ａと関連した常駐カウント値より大きい場合、受信マシンのレプリカ・メモリ位置Ａは、メッセージ１６０１Ｂの更新レプリカ値Ｖ１に更新され（上書きされ）、受信マシンの関連した常駐カウント値及び解決値もまた、それぞれ単一のカウント値Ｃ（つまり、値「２１」）及び単一の解決値Ｒ（つまり、値「１」に更新される（上書きされる）。
【０２２８】
代替的に、メッセージ１６０１Ｂの単一のカウント値Ｃがレプリカ・メモリ位置Ａと関連した常駐カウント値より小さい場合、受信マシンのレプリカ・メモリ位置Ａは、メッセージ１６０１Ｂの更新レプリカ値Ｖ１に更新されず（上書きされず）、関連した常駐カウント値及び解決値にも更新されない（上書きされない）。
【０２２９】
最終的に、メッセージ１６０１Ｂの単一のカウント値Ｃ（つまり、値「２１」）の比較が、受信マシンのレプリカ・メモリ位置Ａと関連した常駐カウント値と同じである（例えば、等しい）第３の状況も可能である。このような状況が起こったとき、競合状態が検出され、知らされ、メッセージ１６０１Ｂの単一の解決値Ｒ（つまり、値「１」）が、受信マシンのレプリカ・メモリ位置Ａと関連した常駐解決値と比較される。解決規則に従って、比較された２つの解決値のどちらが優先するかの判断がなされる。メッセージ１６０１Ｂの単一の解決値Ｒが、レプリカ・メモリ位置Ａと関連した常駐解決値に優先すると判断された場合、受信マシンは、レプリカ・メモリ位置Ａをメッセージ１６０１Ｂの更新レプリカ値Ｖ１に更新し（上書きし）、同じく関連した常駐解決値及び随意的な関連したカウント値をそれぞれ単一の解決値及び単一のカウント値に更新（上書き）し続ける。代替的に、レプリカ・メモリ位置Ａと関連した常駐解決値がメッセージ１６０１Ｂの単一の解決値Ｒに優先すると判断された場合、受信マシンは、レプリカ・メモリ位置Ａをメッセージ１６０１Ｂの更新レプリカ値Ｖ１に更新せず（上書きせず）、関連した常駐解決値及び／又はカウント値も更新しない。
【０２３０】
レプリカ・メモリ位置Ａについて述べられたような（つまり、レプリカ更新メッセージ１６０１ＢのアイデンティティＩ１及び関連した値Ｖ１に関連するような）レプリカ更新メッセージ１６０１Ｂを実行するこうしたプロセスは、メッセージ１６０１Ｂにより更新されるように識別される、識別されたレプリカ・メモリ位置（つまり、複製されたメモリ位置Ｃ）の各々について、同じように反復され、準用される。従って、各受信マシン（つまり、マシンＭ２・・・Ｍｎ）のレプリカ・メモリ位置Ｃが新しい値「１００」、新しい解決値「１」、並びにメッセージ１６０１Ｂの単一の解決値Ｒ及び単一のカウント値Ｃに対応する（そして、レプリカ・メモリ位置Ａに一般的な）カウント値「２１」に更新されたことが、図２９において観察されるであろう。図２６のメッセージ・フォーマット１５０１を参照すると、単一の解決値及び／又は単一のカウント値を含むレプリカ更新メッセージを受信し、実行する上述のステップは、別個の識別されたレプリカ・メモリ位置の各々及び関連した値（例えば、Ｉ１及びＶ１、Ｉ２及びＶ２、・・・、Ｉｎ及びＶｎなど）について繰り返される。
【０２３１】
図３０は、レプリカ更新メッセージ１６０１Ｄに単一の解決値Ｒ及び単一のカウント値Ｃを格納する代替的な構成を示す。具体的には、レプリカ更新メッセージ１６０１Ｄは、ヘッダ・フィールド１６０２Ｄ（図２６の場合のようなペイロード・フィールド１６０３Ｄの代わりに）の一部として格納された単一の解決値Ｒ及び単一のカウント値Ｃを示す。更に別の代替的な構成においては、単一のカウント値Ｃ又は単一の解決値Ｒのいずれか一方をヘッダ・フィールド１６０２Ｄに格納し、２つの値の他方を「ペイロード」フィールド１６０３Ｄに格納することもできる。コンピュータ及び／又は電気工学技術分野における当業者には、単一の解決値Ｒ及び単一のカウント値Ｃの他の格納及び伝送構成が明らかであり、それらは本発明の範囲内に含まれる。
【０２３２】
図２４の代替的な実施形態においては、マシンＭ１、Ｍ２・・・Ｍｎの各々が個々のメッセージを全ての他のマシンに送るのではなく、個々のマシンは、単一のメッセージだけをサーバ・マシンＸに送り、サーバ・マシンＸが、ブロードキャスト・メッセージ（図２４に概略的に示されるメッセージ１３０１のような）を準備する。この例において、「ｎ」個の複製されたメモリ位置／アドレスは、各々が個々のコンテンツ／値Ｖ１、Ｖ２・・・Ｖｎと、値が関連する複製されたメモリ位置の対応するアイデンティティ（つまり、それぞれアイデンティティＩ１、Ｉ２・・・Ｉｎ）とを有するメッセージ１３０１によって同時に更新される。従って、ブロードキャスト又はグループ・メッセージ１３０１は、「ｎ」個のカウント値、この例ではＣ１、Ｃ２・・・Ｃｎ（それぞれ値Ｖ１、Ｖ２・・・Ｖｎに対応する）を有し、同じく「ｎ」個の解決値（同じく、それぞれ値Ｖ１、Ｖ２・・・Ｖｎに対応する）も有し、グループ・メッセージは、サーバ・マシンＸによって全てのアプリケーション実行マシンＭ１、Ｍ２・・・Ｍｎにブロードキャストされる。
【０２３３】
重要なことに、図２６及び図３０の全ての構成において、グループ・メッセージ１５０１の単一のカウント値は、識別された複製されたメモリ位置の各々について格納された、対応する常駐／ローカル・カウント値に対応する識別子（つまり、それぞれ識別子Ｉ１、Ｉ２・・・Ｉｎ）と比較され、カウント値を比較し、競合を検出し解決する上述の規則が適用される。具体的には、カウント値の比較、並びに、競合の検出及び解決のための規則は、実質的に、図２４の構成のもの（各々のレプリカ・メモリ更新が、固有のカウント値及び固有の「解決値」と関連付けられる）と同じ準用であるが、図２６に概略的に示されるようなレプリカ・メモリ更新値の各々と関連付けられると理解されるブロードキャスト・メッセージ１３０１の単一のカウント値及び単一の解決値に基づいている。
【０２３４】
図２６及び図３０の更に別の実施形態においては、個々のマシンは、単一のメッセージのみをサーバ・マシンＸに送り、サーバ・マシンＸは次に、ブロードキャスト・メッセージ（図２６に概略的に示されるメッセージ１５０１及び図３０に概略的に示されるメッセージ１６０１Ｄのような）を準備する。この例において、「ｎ」個のアドレスは、各々がそれらの個々のコンテンツ／値を有するメッセージ１５０１／１６０１Ｄによって同時に更新される。従って、ブロードキャスト又はグループ・メッセージ１５０１／１６０１Ｄは、単一のカウント値「Ｃ」及び単一の解決値「Ｒ」を有し、グループ・メッセージは、サーバ・マシンＸによって全てのアプリケーション実行マシンＭ１、Ｍ２・・・Ｍｎにブロードキャストされる。グループ・メッセージ１５０１／１６０１Ｄの単一のカウント値は、複製されたメモリ位置の各々について格納された対応する常駐カウント値と比較され、カウント値を比較し、競合を検出し、解決するための上述規則が適用される。競合の検出及び解決のための規則は、図２６に概略的に示されるようなレプリカ・メモリ更新値Ｖ１、Ｖ２・・・Ｖｎの各々と関連付けられるように理解されるブロードキャスト・メッセージ１５０１／１６０１Ｄの単一のカウント値Ｃ及び単一の解決値Ｒに基づいている。
【０２３５】
重要なことに、図２６及び図３０の全ての構成において、グループ・メッセージ１５０１／１６０１Ｄの単一のカウント値は、識別された複製されたメモリ位置の各々について格納された、対応する常駐／ローカル・カウント値に対応する識別子（つまり、それぞれ識別子Ｉ１、Ｉ２・・・Ｉｎ）と比較され、カウント値を比較し、競合を検出し解決する上述の規則が適用される。具体的には、カウント値の比較、並びに、競合の検出及び解決のための規則は、実質的に、図２４の構成のもの（各々のレプリカ・メモリ更新が、固有のカウント値及び固有の「解決値」と関連付けられる）と同じ準用であるが、メッセージ１５０１／１６０１Ｄのレプリカ・メモリ更新値の各々と関連付けられると理解されるブロードキャスト・メッセージ１５０１／１６０１Ｄの単一のカウント値及び単一の解決値に基づいている。
【０２３６】
図２６及び図３０に示されるように、インクリメントされ、格納され、伝送されるようにブロードキャストされた単一のカウント値になるカウント値「Ｃ」は、メッセージ１５０１／１６０１Ｄにより更新される「ｎ」個の複製されたメモリ位置／アドレスについて存在する、最も大きい常駐／ローカル・カウント値として選択されることが好ましい。最も大きいカウント値は、それが関連付けられる「ｎ」個の複製されたメモリ位置の全てについての上述した比較規則に従って動作し、付加的に、より小さいカウント値と比べて競合に遭遇する可能性が低いという利点を有する。
【０２３７】
図２６及び図３０に（及び付加的に図２４及び図２５の代替的な構成に）示されるようなグループ・メッセージ１５０１／１６０１Ｄを提供するために更新メッセージをまとめることにより、ネットワーク５３上で送られるメッセージの数及びデータの総量の両方が実質的に低減され、よって、ネットワーク５３上の負荷が軽減されることは明らかであろう。
【０２３８】
最終的に、レプリカ・メモリ更新メッセージの代替的な構成において、単一のレプリカ・メモリ更新伝送において単一のカウント値及び／又は単一の解決値を伝送することができ、こうした単一の伝送は、潜在的に、複数のパケット、セル、フレーム、又はメッセージを含む。従って、このような代替的な実施形態においては、単一のレプリカ・メモリ更新伝送が単一の伝送されたカウント値及び／又は解決値を含む場合、こうした単一のレプリカ・メモリ更新伝送を有する多数のメッセージの単一のレプリカ・メモリ更新メッセージのみが、単一のカウント値及び／又は解決値を含むことが好ましい。
【０２３９】
複製されたアプリケーション・メモリ位置／コンテンツの各々と関連した、例えば単一の組み合わされた３２ビット値などの「カウント値」及び／又は「解決値」を格納することは、かなりのメモリ空間／容量を占め、そのことは、複製されたアプリケーション・メモリ位置／コンテンツ自体が占める空間／容量に接近する可能性があるので、上述の構成は、各マシンに必要とされるメモリの量を実質的に増大させることも明らかであろう。従って、複製されたアプリケーション・メモリ位置／コンテンツと関連した、格納された「カウント値」及び／又は「解決値」は、複製共有メモリ構成として一緒に動作している多数のコンピュータの各々の潜在的なかなりのローカル・メモリ・オーバーヘッドを表す。これは決して理想的とは言えなく、よって、複製されたアプリケーション・メモリ位置／コンテンツと関連したローカル／常駐「カウント値」及び／又は「解決値」が占めるローカル・メモリ容量を低減させることにより、このローカル・メモリ・オーバーヘッドを低減させる方法を考えることが望ましい。
【０２４０】
第１の実施形態によると、このような格納された「カウント値」及び／又は「解決値」が表すメモリ・オーバーヘッドを減らすことができる方法で、各マシンのローカル・メモリ内の複製されたアプリケーション・メモリ位置／コンテンツと関連した「カウント値」及び／又は「解決値」を削除する方法が開示される。ここで開示される方法は、複製共有メモリ構成として動作しているマルチ・コンピュータ・システムによるアプリケーション・プログラムの処理中、多くの場合、複製されたアプリケーション・メモリ位置／コンテンツのメモリ書き込みより、複製されたアプリケーション・メモリ位置／コンテンツのメモリ読み込みの方が多く、よって、複製されたアプリケーション・メモリ位置／コンテンツへの書き込みは、複製されたアプリケーション・メモリ位置／コンテンツの読み込みと比べると、多くの場合、相対的に滅多に行なわれないという事実を利用するものである。具体的には、複製共有メモリ構成として動作しているプロトタイプのマルチ・コンピュータ・システムの非商業的な動作は、多くのアプリケーション・プログラムについて、アプリケーション・プログラムによる１つ又はそれ以上の複製されたアプリケーション・メモリ位置／コンテンツの初期化の際、書き込み活動のバーストが生じることが多く、その後、アプリケーション・プログラムの残りの動作により、同じ複製されたアプリケーション・メモリ位置／コンテンツへの書き込み活動が全く行なわれないことが明らかになっている。１つのこうした例は（唯一の例ではないが）、初期化後に一定のままである（つまり、初期化後に書き込まれない又は修正されない）複製されるアプリケーション・メモリ・コンテンツ／値のアプリケーション・プログラムによる初期化である。
【０２４１】
好ましい実施形態によると、複製されたアプリケーション・メモリ位置／コンテンツと関連し、複製共有メモリ構成として動作しているマルチ・コンピュータ・システムのメンバー・マシンのローカル・メモリに格納された「カウント値」及び／又は「解決値」は、関連した複製されたアプリケーション・メモリ位置／コンテンツについて、レプリカ・メモリ更新伝送が送受信されなかった経過時間の後に削除される。
【０２４２】
例えば、１つのこうした構成において、選択される経過時間は、１時間とすることができ、特定の複製されたアプリケーション・メモリ位置／コンテンツについてレプリカ・メモリ更新伝送が送受信されなかった１時間が経過した後、ローカル・マシンのローカル・メモリに格納されている関連した「カウント値」及び／又は「解決値」を削除し、再利用し、ガーベッジコレクションし、或いは他の方法で、関連した「カウント値」及び／又は「解決値」が示すローカル・メモリを「空けて」、他のデータ・コンテンツを格納できるようにすることができる。
【０２４３】
明らかに、上述の方法を行なう前に、潜在的に可変の又は変化する最小時間を含む、任意の最小経過時間で動作するように、上記の構成を作製することもできる。一例においては、選択される最小経過時間は、１時間とすることができる。代替的な例においては、別の選択される最小経過時間は、１秒とすることができる。
【０２４４】
さらに、最小経過時間に達するとすぐに上記の方法を行なことは、本発明の要件ではない。代わりに、選択された最小時間（潜在的に可変の又は変化する最小時間を含む）が経過した後、制限又は制約なく、その後のいずれの時点にも上記の方法を行なうことができる。例えば、最小経過時間が過ぎた後、もたらされた上記方法の結果（つまり、関連した「カウント値」及び／又は「解決値」の削除）は、何秒か後に、何分か後に、又は何時間か後にさえも行なうことができる。
【０２４５】
さらに、最小の経過時間が過ぎた後、ローカル・マシンのローカルＣＰＵ又は類似した処理論理がビジーでなく（又は実質的にビジーでなく）なる時間まで、上記の方法及び実施形態がもたらす結果を遅らせる又は延期することができ、よって、関連した「カウント値」及び／又は「解決値」の削除（又は同様のもの）は、アプリケーション・プログラム又は全体としてのコンピュータの性能に影響を与えることなく、ハウスキーピング機能として行なわれる。
【０２４６】
付加的に又は代替的に、最小の経過時間が過ぎた後、アプリケーション・プログラム又はコンポーネントについての利用可能な／予備の／「空いた」メモリが小さい場合、上記の方法及び実施形態がもたらす結果（つまり、関連した「カウント値」及び／又は「解決値」の削除）を実行することができ、よって、メモリを連結し、減少させて、ローカル・メモリ容量に対する他の正当な必要性又は要求を満たすことが望ましい。
【０２４７】
「カウント値」及び／又は「解決値」を削除するのではなく、代わりにそれらのサイズを低減させて単一のビットにする（或いは、低減させる前に、ビットのフォーマット又は構成を小さくする）ことも可能である。
【０２４８】
幾つかのアプリケーション・プログラミング言語においては、プログラマーにより。初期化後に変更しないことが意図されるアプリケーション・メモリ・コンテンツ／値が、「最終」又はその種の他のものとしてマーク付けされ、初期化後にこうした値が変更されないことをコンピュータ・システムに知らせることが可能である。特定のアプリケーション・メモリ位置／コンテンツに関するこうした「最終」又は他の同様のマーカー又は識別子を用いるアプリケーション・プログラムについては、カウント値を削除する上述の方法を有利に用いて、こうした「最終」又は同様のマーク付けされたアプリケーション・メモリ位置／値と関連した「カウント値」及び／又は「解決値」が表すローカル・メモリ・オーバーヘッドを低減させることができる。
【０２４９】
付加的に、こうした「最終」又は同様のマーカー又は識別子が与えられていない又はサポートされていないアプリケーション・プログラミング言語については、上述の方法は、プログラマーが、アプリケーション・メモリ位置／コンテンツの「最終」又はその種の他のものとマーク付けすることに依存していないので、複製共有メモリ構成として動作しているマルチ・コンピュータについてのローカル・メモリ・オーバヘッドが低減する有利な結果を達成する。
【０２５０】
しかしながら、複製共有メモリ構成として動作しているプロトタイプのマルチ・コンピュータ・システムの非商業的な動作は、プログラミング言語が、アプリケーション・メモリ位置／コンテンツについての「最終」マーカー等の使用をサポートする場合でも、プログラマー（及び、従って、彼らが書くアプリケーション・プログラム）が、利用可能な「最終」マーカー等を使用しないことが非常に多いことも明らかにした。代わりに、プログラマーがこうした「最終」マーカー又はその種の他のものを潜在的に利用できる場合でさえ、彼らは、こうした「最終」マーカー又はその種の他のものをあまり利用しないことが多い（意図的に又は意図せずに）。従って、上記の方法によって生じた有利な利点を達成するために、「最終」マーカー又はその種の他のもの使用を必要としないことは、上述の方法及び実施形態の更なる利点である。従って、アプリケーション・プログラマーが「最終」マーカー又はその種の他のものの使用を（意図的に又は意図せずに）省いたアプリケーション・プログラムにおいて、本発明の方法を有利に適用することができ、これにより、こうした複製されたアプリケーション・メモリ位置／コンテンツについて関連した「カウント値」及び／又は「解決値」が表すローカル・メモリ・オーバーヘッドが低減される。
【０２５１】
ここで、「カウント値」を格納し、更新する特定の例を説明する。具体的には、上述した「カウント値」を有利に用いて、複製共有メモリ構成の複数のマシンにわたる複製されたアプリケーション・メモリ位置の一貫性がある更新を保証することができる。
【０２５２】
しかしながら、複製されたアプリケーション・メモリ位置／コンテンツの各々と関連した、例えば３２ビット値の「カウント値」の格納は、かなりのメモリ空間／容量を占め、そのことは、複製されたアプリケーション・メモリ位置／コンテンツ自体が占める空間／容量に接近する可能性があるので、こうした「カウント値」は、各マシン上に必要とされるメモリの量を実質的に増大させ得る。従って、複製されたアプリケーション・メモリ位置／コンテンツと関連したこのように格納された「カウント値」は、複製共有メモリ構成として一緒に動作している多数のコンピュータの各々の潜在的なかなりのローカル・メモリ・オーバーヘッドを表す。これは決して理想的とは言えなく、よって、小さい値（つまり、あまりローカル・メモリ容量を占めない小さい値）を選択して「カウント値」として使用し、格納されるカウント値が表すローカル・メモリ・オーバーヘッドを減らすことが望ましい。
【０２５３】
例えば、「カウント値」が３２ビットの整数値である場合、複製されたアプリケーション・メモリ位置の各々について、関連した３２ビットの「カウント値」がある。これは、非常に多量のローカル・メモリ・オーバーヘッドとなり得る。他方、「カウント値」が、３２ビット値の代わりに１６ビット、又はさらに８ビット値である場合、こうした「カウント値」が表すローカル・メモリ・オーバーヘッドは、それぞれ２分の１又は４分の１に有効に低減される。従って、低減したサイズ／容量の「カウント値」を利用することが望ましい。
【０２５４】
しかしながら、「カウント値」の値のサイズが減少するにつれて（例えば、３２ビットから８ビットに）、減少した「カウント値」の最大値の限度に達する前に行なうことができる上述したインクリメント操作（つまり、レプリカ・メモリ更新伝送時にローカル・常駐「カウント値」に対して行なわれる上述したインクリメント操作）の最大数も減少する。値のサイズが非常に大きいとき（例えば、３２ビット、又はさらに６４ビット）、こうした非常に大きい値サイズによってサポートされる最大のインクリメント値に達することなく、何百万、何十億、又はさらに多くの上述したインクリメント操作を行なうことができる。他方、例えば８ビットの値サイズのような小さい値サイズが用いられたとき、上述したインクリメント操作の最大数は、ほんの２５６の控えめな値まで、よって、上述のような最大で２５５の控えめなインクリメント操作まで、劇的に低減される。このように、８ビットの「カウント値」は、ローカル・メモリ・オーバーヘッドを低減させるものとして魅力的であるが（例えば、３２ビットの値と比較して）、こうした８ビットの「カウント値」において行なわれる最大のインクリメントが２５５の最大サポート数を超えない場合に限ってうまくいくにすぎない。
【０２５５】
格納された「カウント値」に対して８ビットの符号なしバイト値が用いられ、「カウント値」の算術オーバーフロー（ａｒｉｔｈｍｅｔｉｃ  ｏｖｅｒｆｌｏｗ）が発生しないことを保証するための戦略が用いられない場合、２５６番目のインクリメント操作が行なわれる望ましくない状況が生じることになる。最初に、初めの２５５回のインクリメント操作については、全てが正しく動作し、格納される「カウント値」の値は、上記の説明に従って増加する（例えば、１に続いて２、３、４、・・・２５３、２５４、２５５と）。その結果、インクリメントされた「カウント値」は、予定どおり、上述したように有効に動作し、複製されたアプリケーション・メモリ位置の一貫性がある更新が保証される。
【０２５６】
しかしながら、「カウント値」が２５５のときに２５６番目のインクリメント操作が行なわれると、こうした２５６番目のインクリメント操作の結果として生成され、新しいローカル／常駐「カウント値」として格納される２５６のインクリメントされた値の代わりに、「０」の「カウント値」が結果としてもたらされる。これは、コンピュータ処理の技術分野において「算術オーバーフロー」と呼ばれ、計算（例えば、インクリメント操作）が、所定のレジスタ又はデータ型又はメモリ記憶位置が格納又は表示できる大きさより大きい結果を生成するときに生じる。さらに、２５７番目のインクリメントが生じたとき、結果として得られる値は「１」となり、再度２５５の値に達するまで、その他もろもろ枚挙にいとまがなく、その時点で、次のインクリメント操作が算術オーバーフロー状態をもう一度引き起こし、プロセスは継続する。
【０２５７】
「カウント値」（８ビット「カウント値」のような）の算術オーバーフローの結果として、２５６番目のインクリメント操作と関連したレプリカ・メモリ更新伝送が、「０」の関連したオーバーフローした「カウント値」と共に送信された場合、こうしたレプリカ・メモリ更新伝送の「カウント値」が、例えば「２５５」（つまり、算術オーバーフローの前の最後のインクリメント値）である、受信マシンの対応するローカル／常駐「カウント値」より小さいので、こうしたレプリカ更新伝送（及び、「カウント値」１、２、３・・・２５４を有する後のレプリカ更新伝送）は、受信マシンにより、「陳腐化した」値又は「古い」値と考えられる。従って、算術オーバーフロー前のより大きい値を有するローカル／常駐「カウント値」と比較されたとき、「オーバーフローしたカウント値」を有する後に送られるレプリカ・メモリ更新伝送の全てが、受信マシンにより廃棄／拒否されるので、このことは、複数のマシン上のレプリカ・メモリ更新イベントを有効に「停止する」結果をもたらす。その結果は混沌又は少なくとも不確実性であり、種々のコンピュータのレプリカ・アプリケーションのメモリ位置／コンテンツは、もはや更新されず、及び／又は、もはや互いに一貫していない。明らかに、これは非常に望ましくない。
【０２５８】
上述した望ましくない結果を克服するための第１の実施形態において、各マシンにより、その時々に１つ又はそれ以上の（各々の又は全ての）「カウント値」のチェックが行われる。調べられる「カウント値」が何らかの閾値（例えば、２５５の最大値に近い２５０のような数、又は代替的に「カウント値」の算術オーバーフローが発生すてすぐに又は発生する前といった）に達したとき、こうした「カウント値」に対応する複製されたアプリケーション・メモリ位置／コンテンツの全てのレプリカ・メモリ更新伝送が一時的に停止される。算術オーバーフローの前に伝送の一時的停止が開始した時（又は、算術オーバーフローが発生してすぐに）、全てのメモリ位置は整合性がとれたものになり（すなわち、同じ値を有するようになり）、算術オーバーフローのために、レプリカ・アプリケーション・メモリ位置／コンテンツの潜在的に一貫性のない更新は、まだ行なわれていない。影響を受ける複製されたアプリケーション・メモリ位置／コンテンツについてのレプリカ・メモリ更新伝送の停止中、その（又はそれらの）影響を受ける複製されたアプリケーション・メモリ位置／コンテンツについての各マシンの対応する「カウント値」の各々は、ゼロ（又は、１、２、又は３等のような何らかの他の大きさが小さい数）にリセット又は再初期化される。このリセット又は再初期化が達成されると、伝送の停止が中止され、影響を受ける複製されたアプリケーション・メモリ位置／コンテンツについてのレプリカ・メモリ更新伝送が再開される。このイベント・サイクルは、「カウント値」が所定の閾値（例えば、上述の例では２５０といった）に達するたびに繰り返される。
【０２５９】
第２の実施形態においては、１つ又はそれ以上のレプリカ・アプリケーション・メモリ位置／コンテンツについてのレプリカ・メモリ更新伝送の一時的停止が、規則的に、又は半規則的に、或いは、例えば毎秒又は６０秒毎といった所定の時間間隔で行なわれる。同じくレプリカ・メモリ更新伝送の各停止中、全ての関連した「カウント値」がゼロにリセット又は再初期化される。
【０２６０】
第３の実施形態においては、２つの上述した実施形態を組み合わせることができ、ここでは、１つ又はそれ以上の複製されたアプリケーション・メモリ位置／コンテンツについてのレプリカ・メモリ更新伝送の一時的停止は、規則的に、又は半規則的に、或いは所定の時間間隔で行なわれるが、「カウント値」が、次の規則的な、又は半規則的は、或いは所定の停止が行なわれる前に何らかの閾値に達した場合、こうした「カウント値」に対応する複製されたアプリケーション・メモリ位置／コンテンツの全てのレプリカ・メモリ更新伝送がゼロにリセット又は再初期化される。
【０２６１】
ここで図３１−図３６を参照すると、メモリ更新における「エコー」のものである、マルチ・コンピュータ・システムに関連する更に別の問題が説明される。
【０２６２】
図３１に示されるように、マルチ・コンピュータ・システムの２つのマシンＭｎ及びＭｎ＋１は、最初に、その各々が７の値を有する（が、コード又は命令のような何らかの他のコンテンツと等しいものであり得る）同一の複製されたアプリケーション・メモリ位置／コンテンツ「ｘ」及び関連した２のローカル・カウント値を有する。図３１は、図の上部から下部に向かって延長する時間を示す。マシンＭｎによって行なわれる処理中の或る時点で、複製されたアプリケーション・メモリ位置／コンテンツ「ｘ」についての新しい／変更された値／コンテンツが生成され、新しい／変更された値は９９である。他のマシン（すなわち、マシンＭｎ＋１）への新しい／変更された値９９の伝播において、２つの異なる時間が示されている。最初の時間Ｔａは、マシンＭｎ上で実行されているアプリケーション・プログラムの部分が複製されたアプリケーション・メモリ位置「ｘ」に書き込みを行ない、その結果、マシンＭｎの複製されたアプリケーション・メモリ位置「ｘ」の値が変更されたことが、マシンＭｎのＤＲＴに警告される時間である。第２の時間Ｔｐは、マシンによって実際の伝播が開始され、この例では３である新しいカウント値が生成される時間である。つまり、第２の時間Ｔｐは、マシンＭｎが、複製されたアプリケーション・メモリ位置「ｘ」のアイデンティティ及び更新された値（つまり、「９９」）、及び「３」の関連した「カウント値」を含む（及び、好ましくは、図３１には示されないが、付加的にレプリカ・アプリケーション・メモリ位置「ｘ」の関連した「解決値」を含む）レプリカ・メモリ更新伝送２１０１を伝送する時間である。２つの時間ＴｐとＴａの間の遅延は、例えば、ナノ秒のように小さなものであってもよく、又は秒のように大きいものであってもよい。この遅延は、関連した時間におけるマシンＭｎの計算負荷に大きく依存する。
【０２６３】
メモリ位置「ｘ」のコンテンツを更新するためのレプリカ・メモリ更新伝送２１０１が、ネットワーク５３によってマシンＭｎからマシンＭｎ＋１に送られ、時間Ｔｐ＋ｄにマシンＭｎに到着し、ここで、「ｄ」は、行なわれる伝送２１０１の伝播についての、ネットワークに固有の遅延／待ち時間である。時間Ｔｐ＋ｄにおいてマシンＭｎ＋１により伝送２１０１を受信すると、ローカル・レプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」のローカル・コンテンツが、マシンＭｎ＋１において、マシンＭｎと同じ、すなわち９９の値／コンテンツ及び３の「カウント値」である、伝送２１０１の受信した値に変更される。
【０２６４】
その後しばらくして、マシンＭｎ＋１上で動作している同じアプリケーション・プログラムの実行部分が更なる処理を行ない、その結果、１０８２である新しい値がメモリ位置「Ｘ」に書き込まれる。時間Ｔａにおいて、マシンＭｎ＋１上で実行されているアプリケーション・プログラムの部分が複製されたアプリケーション・メモリ位置「ｘ」に書き込まれ、その結果、マシンＭｎ＋１の複製されたアプリケーション・メモリ位置「ｘ」の値が変更したことが、マシンＭｎ＋１のＤＲＴに警告される。結果として、そのしばらく後のＴｐにおいて、レプリカ・アプリケーション・メモリ位置「ｘ」の新しい／変更した値が、「４」のインクリメントされた関連した「カウント値」と共に伝送２１０２として伝播される。続いて、伝送２１０２は、マシンＭｎに到着し、そこで、レプリカ・アプリケーション・メモリ位置「ｘ」の前の値（つまり、９９）が、「４」の「カウント値」と共に伝送２１０２の受信した新しい値（つまり、値１０８２）に上書きされる。
【０２６５】
換言すれば、図３１に示される環境において、警告の生成と伝播の開始との間の固有の遅延は、多数のマシンの意図された正しい機能に悪影響を与えていない。
【０２６６】
しかしながら、いつもそうとは限らず、図３２において、代替的な状況が示される。図３２において、最初に、両方のマシンが、レプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」についての同じ値／コンテンツ７及び同じ関連した２のカウント値を有する。既に述べたように、時間Ｔａにおいて、マシンＭｎ上で実行されているアプリケーション・プログラムの部分が複製されたアプリケーション・メモリ位置「ｘ」に書き込まれ、その結果、マシンＭｎの複製されたアプリケーション・メモリ位置「ｘ」の値が変更したことが、マシンＭｎのＤＲＴに警告される。続いて、時間Ｔｐにおいて、マシンＭｎが、レプリカ・メモリ更新伝送２２０１として、インクリメントされた３の「カウント値」と共に、レプリカ・アプリケーション・メモリ位置「ｘ」の新しい／変更された値を伝播する。しかしながら、レプリカ・メモリ更新伝送２２０１がマシンＭｎ＋１に到着する時間Ｔｐ＋ｄの前に、マシンＭｎ＋１は、マシンＭｎ＋１上で実行されているアプリケーション・プログラムの部分のそれぞれの処理を行なうことにより、複製されたアプリケーション・メモリ位置「ｘ」に書き込みを行ない、その結果、レプリカ・アプリケーション・メモリ位置「ｘ」の値を１０８２に変更した。従って、マシンＭｎ＋１上で実行されているアプリケーション・プログラムの部分が複製されたアプリケーション・メモリ位置「ｘ」に書き込まれ、その結果、マシンＭｎ＋１上の複製型アプリケーション・メモリ位置「ｘ」の値が変更されたことが、ほぼＴａと類似した時間において、マシンＭｎ＋１のＤＲＴに警告される。続いて、マシンＭｎ＋１のＤＲＴは、インクリメントされた３の「カウント値」と共にマシンＭｎ＋１のレプリカ・アプリケーション・メモリ位置「ｘ」の新しい／変更された値を含むレプリカ・メモリ更新伝送２２０２を伝送する。図３２に示されるように、マシンＭｎ＋１のこうした伝送２２０２は、時間Ｔｐ＋ｄ（マシンＭｎ＋１による伝送２２０１の受信に対応する）の前に伝送される。
【０２６７】
どちらも他方の伝送を受信する前に送られた、マシンＭｎによる伝送２２０１及びマシンＭｎ＋１による伝送２２０２の結果として、レプリカ・アプリケーション・メモリ位置「ｘ」と関連したローカル／常駐「カウント値」が、他方のマシンの受信したレプリカ更新伝送の関連した「カウント値」と競合する／衝突する（例えば、これに等しい）とき、マシンＭｎ及びマシンＭｎ＋１は、他方のマシンの伝送の受信時に競合／衝突状況を検出する。
【０２６８】
競合の検出及び解決に関する上述の規則に従って、上述の図３２の場合について競合を検出し、解決することができるので、上述のような関連した「解決値」の用いることにより、メモリ位置Ｄのコンテンツが、両方のマシンについて同じになる。従って、上述した「解決値」の簡単な実施形態（つまり、マシンの数値の／階層的な番号付与）を用いるとき、より大きい番号が付与されたマシンＭｎ＋１により生成された（伝送された）更新値が、より小さい番号が付与されたマシンＭｎに優先するように、競合／衝突状況が解決される。
【０２６９】
わずかに異なる問題が、図３３に示される。既に述べたように、両方のマシンは、「７」である複製されたアプリケーション・メモリ位置「ｘ」の値及び２である関連した「カウント値」で始まる。随意的に、同じく図３３には示されないが、レプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」と関連したローカル／常駐「解決値」を格納することができる。同じく時間Ｔａにおいて、マシンＭｎのアプリケーション・プログラムの部分の実行がレプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」に書き込まれ、それ結果、レプリカ・アプリケーション・メモリ位置「ｘ」のコンテンツ／値が変更されたことが、マシンＭｎのＤＲＴに警告される。結果として、レプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」についての新しい／変更された値９９が、時間Ｔｐにおいて伝送２３０１により伝播され、時間Ｔｐ＋ｄにおいてマシンＭｎ＋１に到着する。
【０２７０】
しかしながら、レプリカ・メモリ更新伝送２３０１が到着する少し前に、マシンＭｎ＋１の同じアプリケーション・プログラムの実行部分がレプリカ・アプリケーション・メモリ位置「ｘ」に書き込まれ、その結果、レプリカ・アプリケーション・メモリ位置「ｘ」の値／コンテンツが変更されたことが、同じアプリケーション・プログラムの部分のそれぞれの処理によってマシンＭｎ＋１のＤＲＴに警告され、ＤＲＴは、レプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」の現在の／変更されたコンテンツ／値をマシンＭｎに伝播する。しかしながら、マシンＭｎ＋１の時間Ｔａの後、時間Ｔｐ＋ｄにおいて伝播を行なう前に、マシンＭｎのレプリカ・メモリ更新伝送２３０１を受信し、実行し、レプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」の値／コンテンツを、伝送２３０１の受信した更新値（つまり、受信した更新値「９９」）に上書きさせる。その結果、時間Ｔｐ＋ｄにおいて、時間Ｔａの警告に対応するレプリカ・メモリ更新伝送２３０２の伝播が行なわれるとき、この上書きされた値９９が、マシンＭｎ＋１のオリジナルの書き込み値「１０８２」ではなく、Ｍｎを含む全ての他のマシンに増加された４の「カウント値」と共に伝播される。その結果、図３３に示されるように、マシンＭｎ＋１によって送られたレプリカ・メモリ更新伝送２３０２は、「１０８２」ではなく「更新された」９９の値（もともと伝送２３０１においてマシンＭｎから受信した）と、関連したインクリメントされた４の「カウント値」とを含む。
【０２７１】
図３３に示される状況の結果、マシンＭｎ＋１は、マシンＭｎ＋１のオリジナルの書き込まれた値（つまり、値１０８２）ではなく、マシンＭｎの伝送２３０１の受信した更新値の「エコー」を伝送する。その結果、マシンＭｎは、さらに、受信した増加した「カウント値」４を有する伝送２３０１において、マシンＭｎが前に送った更新レプリカ値（すなわち「９９」）のエコーを受信する。この入ってくるメッセージ／伝送２３０２は、マシンＭｎによって正しく処理され、実行され、よって、レプリカ・アプリケーション・メモリ位置「ｘ」の既存の値を、受信した「９９」の値（伝送２３０２の受信前のレプリカ・アプリケーション・メモリ位置「ｘ」とたまたま同じである）に上書きし、関連した常駐「カウント値」を伝送２３０２の受信した４の「カウント値」に上書きする。
【０２７２】
マシンＭｎによる伝送２３０２の受信に続いて、両方のマシンは、レプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」についての同じ値／コンテンツ９９と、カウント値４とを有する。従って、ある面では、レプリカ・メモリ位置の一貫性がある更新が達成された。しかしながら、マシンＭｎ及びＭｎ＋１の対応するレプリカ・アプリケーション・メモリ位置／コンテンツは整合性がある（つまり、値／コンテンツが実質的に類似している）ものの、両方のマシンの最終的な値／コンテンツは、インクリメントされたカウント値「４」を伴う「９９」の「エコー」／「陳腐化した」値である。以下に述べられるように、これは、少なくとも２つの理由から望ましくない。
【０２７３】
第１に、こうした伝送２３０２は、更新された値を含まず、代わりに「既に存在する」値を含むので、伝送２３０１からの「９９」の「エコー」値を含む第２の伝送２３０２は、不必要な伝送を表す。伝送２３０２が新しい／変更した値ではなく、「既に存在する」値を伝送し、よって、伝送２３０２は、ネットワーク５３の帯域及び容量の非効率的な使用であるので、これは望ましくない。
【０２７４】
第２に、インクリメントされた４の「カウント値」を伴う「９９」の「エコー」値を含む第２の伝送２３０２は、複製されたアプリケーション・メモリ位置の一貫性のない更新をもたらす可能性があり、こうした潜在的な状況が図３５に示される。従って、こうした不必要な／「エコー」レプリカ・メモリ更新伝送がディスエーブルにされるか、又は他の方法で行なわれない構成を考えることが望ましい。
【０２７５】
図３４を参照すると、図３３に記載されるエコー問題に対する第１の解決法が開示される。図３３におけるものと同じタイミング状況が、図３４に存在しており、レプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」が新しい値（つまり、新しい／変更された値１０８２）を有するように書き込まれたことがマシンＭｎ＋１のＤＲＴに警告されたマシンＭｎ＋１の時間Ｔａの後、時間Ｔｐ＋ｄにおいて、マシンＭｎからのレプリカ・メモリ更新伝送２３０１がマシンＭｎ＋１に達する。この解決法の場合、全てのマシンの動作が変更され、伝播されたレプリカ・メモリ更新伝送／メッセージを受信した後、各々の受信マシンは、ＤＲＴに「警告された」かどうか（例えば、ＤＲＴが警告された状態にあるかどうか）をチェックし、受信したレプリカ・メモリ更新伝送に対応するローカル／常駐レプリカ・アプリケーション・メモリ位置／コンテンツについてのレプリカ・メモリ更新伝送／伝播を行なう。
【０２７６】
このチェックへの答えがイエスである場合、受信マシンのＤＲＴの「警告が解除され」（すなわち、前の「警告」がキャンセルされ、取り消され、又は無効にされ）、これにより、ローカル／常駐のレプリカ・アプリケーション・メモリ位置／コンテンツについての意図されたレプリカ・メモリ更新伝送／伝播を行なうことが回避される。その結果、受信マシンのＤＲＴの前の「警告」をキャンセルし、取り消し、無効にし、又は「警告を解除する」ことによって、潜在的な「エコー」伝送２３０２が回避されるので、図３３の状況が回避される。他方、答えがノーである場合（つまり、ローカル／常駐の対応するレプリカ・アプリケーション・メモリ位置／コンテンツの前の「警告」がない場合）、通常の動作が再開される（つまり、既にそうされていなければ、受信したレプリカ・メモリ更新伝送が実行される）。
【０２７７】
これは、マシンＭｎ＋１の「警告された」レプリカ・アプリケーション・メモリ位置「ｘ」に対応する伝送２３０１の受信時に、マシンＭｎ＋１のレプリカ・アプリケーション・メモリ位置「ｘ」の新しい値１０８２を伝播するための警告がキャンセルされ（又は取り消され、無効にされ、又は警告が解除される）、図３４に示される状況である。さらに、受信した９９の値が、マシンＭｎ＋１についてのローカルの／対応するレプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」に書き込まれ、さらに、レプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」と関連した常駐「カウント値」が、受信した３のカウント値に上書きされる。その結果、図３４に示されるように、マシンＭｎ＋１のレプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」の新しい／変更した値を伝播するための前の「警告」がキャンセルされ、無効にされ、取り消され、さもなければ「警告が解除される」ので、図３３の第２の「エコー」伝送２３０２は行なわれない。
【０２７８】
この修正の結果として、図３３のエコー状況は防止され、全てのマシンが、一貫性があり、かつ、整合性がある方法で、レプリカ・メモリ更新伝送により更新される。さらに、第２の不必要なレプリカ・メモリ更新伝送２３０２をキャンセルすることにより、ネットワーク５３の貴重な帯域及び容量が保護され、これにより、全体として複製共有メモリ構成として動作しているマルチ・コンピュータ・システムの性能及び効率が増大される。
【０２７９】
図３３に示されるものより僅かに複雑な問題が、図３５に示される。特に、図３５は、図３３の拡張した事例を示し、これにより、図３３に示される問題のある状況が拡張され、上記の第１の解決法において述べられたように、第２の伝送２３０２がキャンセルされ、取り消され、さもなければ「警告が解除された」とき、レプリカ・アプリケーション・メモリ位置／コンテンツの一貫性のない更新がどのような結果をもたらし得るかを示す。具体的には、伝送２３０１のしばらく後、伝送２３０２を受信する前に行なわれる付加的なレプリカ・メモリ更新伝送２５０１が、図３５に示される。
【０２８０】
図３５においては、図３３におけるように、マシンＭｎ＋１のＤＲＴが新しい書き込み値「１０８２」を伝播するように警告された後であるが、その伝播が行なわれ得る前に（レプリカ・メモリ更新伝送２３０２の形で）、マシンＭｎ＋１において、レプリカ・メモリ更新伝送２３０１が受信される。その結果、図３３に示されるように、マシンＭｎ＋１からの時間Ｔｐにおける後のレプリカ・メモリ更新伝送／伝播２３０２は、マシンＭｎ＋１によるレプリカ・メモリ更新伝送２３０１に先立つ受信及び実行の結果として、インクリメントされた４の「カウント値」４を伴う「エコー値」９９を含む。
【０２８１】
一方では、マシンＭｎによって行なわれる処理により、新しい値３３が、マシンＭｎのレプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」に書き込まれた。インクリメントされた４の関連したカウント値４を伴うこの新しく書き込まれた値３３は、マシンＭｎによって、レプリカ・メモリ更新伝送２５０１として伝播される。
【０２８２】
しかしながら、図３５において観察されるように、どちらも同じレプリカ・アプリケーション・メモリ位置「ｘ」に対応する両方のレプリカ・メモリ更新伝送２５０１及び２３０２は、同一のインクリメントされた４の「カウント値」を有した状態で伝送される。従って、上記の説明によると、マシンＭｎ＋１により伝送２５０１を受信し、マシンＭｎにより伝送２３０２を受信したとき、これらの２つのレプリカ・メモリ更新伝送は、競合状態にあると言われ、受信した伝送と対応する常駐「カウント値」（どちらも、同じ４の値を有する）の間に「競合」／「衝突」が検出される。
【０２８３】
具体的には、それぞれ値「３３」及び「９９」を含む伝送２５０１と伝送２３０２の間の競合状態は、同じマシンＭｎによって生成された２つの値「９９」と「３３」の間の競合状態を実際に表すので（各々が異なるマシンによって生成される２つの異なる値とは対照的に）、このような環境は、非常に望ましくない。値「９９」は、明らかにアプリケーション・プログラム及びアプリケーション・プログラマーが予想するように「より古く」かつ「一貫性のない」値であるので、レプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」についてのアプリケーション・プログラム及びアプリケーション・プログラマーの正しい意図される値は、「９９」ではなく「３３」であるべきである。
【０２８４】
しかしながら、競合の検出及び解決についての上記の説明によると、レプリカ・アプリケーション・メモリ位置「ｘ」と関連した常駐する伝送された「解決値」を用いて、こうした検出された競合／衝突状況を単一の優先する伝送（及び、よって、こうした優先する伝送の単一の優先する値）へと解決することができる。図３５の状況において、上述のような送信マシンの数値／階層的識別子を用いる「解決値」の簡単な実施形態を用いる場合、マシンＭｎ＋１の伝送２３０２が優先する。このことは、ボックス２３１０及び２３１１により図３５に示さ、ここでは、時間系列の終わりに、マシンＭｎ及びマシンＭｎ＋１の各々は、複製されたアプリケーション・メモリ位置／コンテンツ「ｘ」についての一貫した値「９９」へと解決する（マシンＭｎ＋１の数値／階層値は、マシンＭｎの数値／階層値より大きいので）。明らかに、マシンＭｎの後に書き込まれた値「３３」は、同じマシンの先に書き込まれた値「９９」に上書きされるので、これは、依然としての望ましくない結果である。明らかに、アプリケーション・プログラムの意図せず、一貫性のないアプリケーションの動作及び行動が、図３５に示される環境及び動作から生じ得る。
【０２８５】
ここで、上述した状況に対する代替的な解決法が、図３６に関連して説明される。
【０２８６】
図３６は、第２の代替的な実施形態による、マシンＭｎによるレプリカ・メモリ更新伝送２５０１が新しい伝送２６０１と置き換えられた修正を有する、図３５の類似した構成を示す。具体的には、図３６に見られるように、最初のアクション及び環境は、伝送２３０１及び２３０２に関する図３５におけるものと同じであり、そこで、マシンＭｎ＋１は、受信した伝送２３０１の値の「エコー」を、第２の伝送２３０２として再びマシンＭｎを含む他の全てのマシンに伝送し、この「エコー」伝送は、レプリカ・アプリケーション・メモリ位置／コンテンツ「ｘ」についての「９９」の「エコー値」と、関連したインクリメントされた４の「カウント値」とを含む。
【０２８７】
しかしながら、図３６の構成において、簡単な規則、すなわち、マシンがレプリカ・アプリケーション・メモリ位置／コンテンツについての新しい／変更された値を含む新しいレプリカ・メモリ更新伝送を伝送／伝播しようとしており、かつ、同じマシンが、同じレプリカ・アプリケーション・メモリ位置／コンテンツについての前のレプリカ更新伝送を生成した前のマシンであった場合、新しく生成したレプリカ・メモリ更新伝送についてのカウント値が１だけインクリメントされるのはなく、代わりに２（又は少なくとも２）だけインクリメントされるという規則を導入することによって、全てのマシンの動作が修正された。
【０２８８】
例えば、こうした有利な規則は、複製されたアプリケーション・メモリ位置／コンテンツに対応する（送られた又は受信された）最後のレプリカ・メモリ更新伝送がローカル・マシンによって送られたのかどうかの表示を各マシン上に格納又は記録することによって達成することができる。このような格納された記録又は表示が、特定のレプリカ・アプリケーション・メモリ位置／コンテンツについてローカル・マシンによって送受信された最後のレプリカ・メモリ更新伝送が、このマシンによって伝送された（送られた）ことを示す場合には、関連したローカル／常駐「カウント値」は（及び伝送された「カウント値」も）、１だけインクリメントされるのではなく（「１」が「通常の」インクリメント単位である場合）、代わりに２だけインクリメントされる（或いは代替的に、「通常の」インクリメントより少なくとも１インクリメント単位だけ大きく（又は、少なくとも１デクリメント単位だけ小さく）なるように、任意の適切な値だけインクリメントされる）。代替的に、このような格納された記録又は表示が、特定のレプリカ・アプリケーション・メモリ位置／コンテンツについてローカル・マシンによって送受信された最後のレプリカ・メモリ更新伝送が、このマシンにより伝送されなかった（送られなかった）ことを示す場合には、関連したローカル／常駐「カウント値」は（及び伝送された「カウント値」も）、１だけインクリメントされる（「１」が「通常の」インクリメント単位である場合）。
【０２８９】
こうした規則を図３５の環境に適用した結果が、図３６に示される。この新しい規則の結果として、マシンＭｎによって伝播されたレプリカ・メモリ更新伝送２６０１は、前のとおり「３３」の更新／変更された値を含むが、今は４の代わりに５のカウント値を含む（この値５は、３のローカル／常駐「カウント値」を２だけインクリメントすることによって生成される）。これが伝送２３０２より大きい「カウント値」を有するので、このことにより、レプリカ・メモリ更新伝送２６０１と２３０１との間に結果として生じる競合／衝突状態の代わりに、レプリカ・アプリケーション・メモリ位置／コンテンツについての「正しい」更新／変更された値３３を含むレプリカ・メモリ更新伝送２６０１が優先することになる。その結果、２つの伝送２３０２と２６０１との間に競合／衝突状況は生じず、複製されたアプリケーション・メモリ位置／コンテンツ「ｘ」の一貫性がある更新が達成される。
【０２９０】
明らかに、更新カウントへの通常のインクリメントが例えば２であり、更新カウントへのエコー抑制インクリメントが３（又は４、或いは４より大きい）であるように動作するように、上記の構成を作製することもできる。
【０２９１】
上記は、本発明の幾つかの実施形態のみを説明するが、本発明の範囲から逸脱することなく、これに修正を行ない得ることは、コンピュータ処理分野の当業者には明らかである。例えば、ＪＡＶＡ（登録商標）は、ＪＡＶＡ（登録商標）言語及びＪＡＶＡ（登録商標）プラットフォーム及びアーキテクチャの両方も含む。
【０２９２】
同様に、上述した「カウント値」及び「解決値」は整数であるが、そうである必要はない。分数の「カウント値」及び／又は「解決値」（すなわち、浮動小数点算術又は小数を用いる）も可能であるが、それらは複雑であり望ましくはない。
【０２９３】
一連のメッセージについての「カウント値」をインクリメントするのではなく、代わりに「カウント値」をデクリメントできることも、当業者には理解されるであろう。このことにより、後のメッセージが、上述のような大きい「カウント値」ではなく小さい「カウント値」によって識別される。
【０２９４】
本発明により、伝送された「解決値」の代替的な構成も提供される。具体的には、レプリカ・メモリ更新伝送の伝送された「解決値」は、パケット又はメッセージのアドレス又はアイデンティティ、或いはソース・マシンのような、パケット又はメッセージのヘッダ値の形を取ることができる。従って、「解決値」を用いて衝突するレプリカ更新伝送を解決する上述の方法に従って、このような伝送された値を用いることができる限り、「解決値」は、如何なる伝送された形態を取ることもできる。
【０２９５】
本発明の代替的な実施形態においては、レプリカ・メモリ更新伝送において伝送された「カウント値」及び／又は「解決値」は、ヘッダ又は他のパケット・フィールドを含む如何なる形態を取ることもできる。
【０２９６】
上述した種々の実施形態において、書き込まれるレプリカ・メモリ位置のローカル／常駐「カウント値」は、送信マシンによってレプリカ更新伝送が伝送される前に又は伝送されたときに「１」の値だけインクリメントされると説明される。こうしたインクリメントされた「カウント値」はまた、送信マシンの前のローカル／常駐「カウント値」（つまり、例えば、インクリメントされた「カウント値」が計算されたローカル／常駐「カウント値」）を上書きする／置き換えるように説明される。しかしながら、このようなインクリメントされた「カウント値」を「１」の値だけインクリメントさせなければならないことは、本発明の要件ではない。代わりに、こうしたインクリメントされた「カウント値」を、「１」より大きい値（例えば、「２」、又は「１０」、或いは「１００」）だけインクリメントすることができる（インクリメントされた）代替的な構成が提供される。具体的には、結果として得られる「インクリメントされたカウント値」が前のローカル／常駐「カウント値」より大きい限り、「カウント値」をインクリメントするのに正確にどのインクリメント値が選択されるかは、本発明には重要ではない。
【０２９７】
さらに、常駐「カウント値」をインクリメントする代替的な構成も提供される。具体的には、レプリカ更新伝送のこのような更新されたカウント値をインクリメントさせなければならないことは、本発明の要件ではなく、代わりに、いずれかの他の方法又は手段、或いは構成を代用して、前のローカル／常駐「カウント値」より大きい更新されたカウント値の結果を達成することもできる。従って、重要なのは、伝送されるレプリカ更新伝送に対応して、こうしたレプリカ更新伝送が、伝送マシンの前に知られている（例えば、伝送時に知られている、或いは代替的に、伝送のためにレプリカ更新伝送の準備がなされるとき又は準備が始まるときに知られている）「ローカル／常駐カウント値」より大きい「更新されたカウント値」を含むこと、及び、送信マシンのこうした前の知られている「ローカル／常駐カウント値」が伝送された「更新されたカウント値」に上書きされることである。
【０２９８】
また、本発明の代替的な構成は、例えば、単一の３２ビット値の下部２４ビットとして格納された「カウント値」及び単一の３２ビット値の上部８ビットとして格納された「解決値」といった組み合わされた値として、「カウント値」及び「解決値」を格納及び／又は動作することができる。代替的に又は付加的に、「カウント値」及び「解決値」を含むレプリカ更新伝送が単一の組み合わされた値（上述されたような）として伝送されるように、「カウント値」及び「解決値」の伝送中にこうした組み合わされた格納スキームを用いることもできる。最終的に、こうした値の両方が上述した方法と両立性のある形態で伝送及び／又は格納される限り、複製されたメモリ位置及びレプリカ・メモリ更新の伝送についての「解決値」及び「カウント値」の特定の格納構成は、本発明にとって重要ではない。
【０２９９】
「分散型ランタイム・システム」、「分散型ランタイム」、又は「ＤＲＴ」という用語及びここで用いられるこうした類似の用語は、単一のマシンのために記述された（例えば、単一の論理共有メモリ・マシンのために記述された）アプリケーション・プログラムの動作を容易にし、可能にし、及び／又は他の方法でサポートし、代わりに、独立したローカル・メモリを備え、複製共有メモリ構成で動作するマルチ・コンピュータ・システム上で動作するための、任意のアプリケーション・サポート・システム（潜在的には、ハードウェア、又ファームウェア、又はソフトウェア、或いは組み合わせの、及び潜在的にはコード、又はデータ、又オペレーション、或いは組み合わせを含む）をそれらの範囲内に獲得する又は含ませるように意図される。こうしたＤＲＴ又は他の「アプリケーション・サポート・ソフトウェア」は、ハードウェア、ファームウェア、又はそれらの種々の組み合わせで部分的に又は完全に実施されるなどの多くの形を取ることができる。
【０３００】
ここに述べられる方法は、特許文献１（及び米国特許出願第１１／１１１，９４６号、代理人コード：５０２７Ｆ−ＵＳが対応する）の下で発行された国際特許出願第ＰＣＴ／ＡＵ２００５／０００５８０号に記載されるＤＲＴのような、アプリケーション・サポート・システムにおいて実施されることが好ましいが、これは要件ではない。代替的に、上述の方法の実施は、単独で、或いは他のソフトウェア、ハードウェア、ファームウェア、又は上記に組み入れられた明細書のいずれかの他の方法、又はそれらの組み合わせと組み合わせて、機能的又は有効なアプリケーション・サポート・システムを利用することができる。
【０３０１】
読者は、一般に分散型ランタイム・システム、具体的には、複製共有メモリ構成として機能する独立したローカル・メモリを有するマルチ・コンピュータ・システムにおける動作、及び、複製共有メモリ構成として動作する独立したローカル・メモリを有するこうしたマルチ・コンピュータ・システム上のこうした修正されたアプリケーション・プログラム・コードの後の動作に適したアプリケーション・プログラム・コードの修正のための分散型ランタイム・システムの完全な記述、説明及び例についての上述のＰＣＴ明細書に導かれる。
【０３０２】
また、読者は、ロード中又他の時にアプリケーション・プログラムを修正するのに用い得る種々の予想される方法及び手段の更なる説明、例、及び記述についての上述のＰＣＴ明細書に導かれる。
【０３０３】
また、読者は、独立したローカル・メモリを備え、複製共有メモリ構成として動作するマルチ・コンピュータ・システム上の動作に適したアプリケーション・プログラム・コードを修正するのに用い得る種々の予想される方法及び手段の更なる説明、例、及び記述についての上述のＰＣＴ明細書に導かれる。
【０３０４】
最終的に、読者は、こうした複製型メモリの１つに書き込まれた又は修正されたときに複製型メモリを更新するといった、複製共有メモリ構成の複製型メモリを動作するために用い得る種々の予想される方法及び手段の更なる説明、例、及び記述についての上述のＰＣＴ明細書に導かれる。
【０３０５】
分散型共有メモリ構成及びより一般的な分散型コンピュータ構成のような代替的なマルチ・コンピュータ構成において、上述した方法は、依然として適用可能であり、有利であり、使用可能である。具体的には、メモリ位置（単数又は複数）、オブジェクト、クラス、ライブラリ、パッケージ等が複数の結合されたマシン上に常駐し、好ましくは一貫性があるままであるように更新される任意のマルチ・コンピュータ構成のような、レプリカ、「レプリカ状」、二重、ミラー、キャッシュの又コピーされたメモリ位置が存在する任意のマルチ・コンピュータ構成にも、上記の方法を適用することができる。例えば、２つ又はそれ以上のマシン上に常駐するキャッシュされたメモリ位置を有し、随意的に一貫性があるままであるように更新される、複数のマシンの分散型コンピュータ構成（分散型共有メモリ構成のような）は、こうしたキャッシュされたメモリ位置に関して機能的な「複製型メモリ・システム」を含み、本発明の範囲内に含まれる。従って、上述した方法をこうした代替的なマルチ・コンピュータ構成に適用できることを理解すべきである。上記に開示された方法は、こうした「機能的複製型メモリ・システム」（キャッシュを有する分散型共有メモリ・システムのような）において準用することができる。
【０３０６】
随意的なサーバ・マシンＸ（又は多数の随意的なサーバ・マシン）によって実行されるものとして説明される、説明された機能又は動作のいずれも、複数の他の関係するマシン（図１のマシンＭ１、Ｍ２、Ｍ３・・・Ｍｎのような）の１つ又は１つより多くによって代わりに実行できることも規定され、考えられる。
【０３０７】
代替的に又は組み合わせて、随意的なサーバ・マシンＸ（又は多数の随意的なサーバ・マシン）によって実行されるものとして説明される記載された機能又は動作のいずれも、代わりに複数の他の関係するマシンのいずれか１つ又はそれ以上によって部分的に実行する（例えば、それらの間で分散する）ことができ、その結果、まとめられた複数のマシンは、随意的なマシンＸによって実行されるものとして説明され記載された機能又は動作を達成することもさらに規定され、考えられる。例えば、随意的なサーバ・マシンＸによって実行されるものとして説明された記載された機能又は動作は、複数の関係するマシンの１つ又はそれ以上の間で分散させることができる。
【０３０８】
代替的に又は組み合わせて、随意的なサーバ・マシンＸ（又は多数の随意的なサーバ・マシン）によって実行されるものとしても説明される、説明された機能又は動作のいずれも、代わりに、随意的なサーバ・マシンＸ（又は多数の随意的なサーバ・マシン）及び複数の他の関係するマシン（マシンＭ１、Ｍ２、Ｍ３・・・Ｍｎのような）のいずれか１つ又はそれ以上の組み合わせによって実行又は達成することができ、その結果、まとめられた複数のマシン及び随意的なサーバ・マシンは、随意的なマシンＸによって実行されるものとして説明され記載された機能又は動作を達成することも、さらに予測され、考えられる。例えば、随意的なサーバ・マシンＸによって実行されるものとして説明され記載された機能又は動作は、随意的なサーバ・マシンＸの１つ又はそれ以上、及び、複数の関係するマシンの１つ又はそれ以上の間で分散することができる。
【０３０９】
本発明を実施するとき、種々の記録の格納及び伝送構成を用いることができる。１つのこうした記録又はデータ格納及び伝送構成は、「リスト」又は「テーブル」、或いは他の類似したデータ格納構造を用いることである。用いられる特定の記録又はデータ格納及び伝送構成に関係なく、重要なことは、複製された書き込まれるメモリ位置が識別されること、及び、それらの更新された値（及びアイデンティティ）が他のマシン（好ましくは書き込まれるメモリ位置のローカル・リプリカが常駐するマシン）に伝送することが可能であり、受信マシンが、受信した更新メモリ値を対応するローカル・レプリカ・メモリ位置に格納することを可能にすることである。
【０３１０】
従って、本発明の方法は、特定の説明される記録又はデータ格納又は伝送構成のいずれにも制限されるものでなく、本発明の方法を達成できる任意の記録又はデータ格納又は伝送構成を使用することができる。
【０３１１】
具体的には、「テーブル」又は「リスト」の説明された例に関連して、「テーブル」の格納又は伝送構成の使用（及び一般的に「テーブル」又は「リスト」という用語の使用）は、一例にすぎず、その範囲内に、本発明の方法を実施するのに用い得る任意の匹敵する又は機能的に同等の記録又はデータ格納又は伝送方法、或いは手段を含むように理解される。
【０３１２】
ここに用いられる「オブジェクト」及び「クラス」という用語は、ＪＡＶＡ（登録商標）環境から得られたものであり、モジュール、コンポーネント、パッケージ、構造体、ライブラリ等のような異なる環境から得られた類似した用語を包含するように意図される。
【０３１３】
ここに用いられる「オブジェクト」及び「クラス」という用語は、１つ又はそれ以上のメモリ位置のいずれの関連も包含するように意図される。具体的には、例えば、「オブジェクト」及び「クラス」という用語は、関連した組のメモリ位置（アレイ・データ構造を含む１つ又はそれ以上のメモリ位置、構造体を含む１つ又はそれ以上のメモリ位置、関連した組の変数を含む１つ又はそれ以上のメモリ位置等といった）のような複数のメモリ位置のいずれの関連も、その範囲内に含むように意図される。
【０３１４】
上記の説明及び図面におけるＪＡＶＡ（登録商標）への参照には、共に又は単独で、ＪＡＶＡ（登録商標）言語、ＪＡＶＡ（登録商標）プラットフォーム、ＪＡＶＡ（登録商標）アーキテクチャ、及びＪＡＶＡ（登録商標）マシンが含まれる。さらに、本発明は、他の非ＪＡＶＡ（登録商標）コンピュータ言語（例えば、これらに限られるものではないが、プログラミング言語、ソース・コード言語、中間コード言語、オブジェクト・コード言語、マシン・コード言語、アセンブリ・コード言語、又は他のコード言語のいずれか１つ又はそれ以上を含む）、マシン（例えば、これらに限られるものではないが、仮想マシン、抽象マシン、リアル・マシン等を含む）、コンピュータ・アーキテクチャ（例えば、これらに限られるものではないが、リアル・コンピュータ／マシン・アーキテクチャ、又は仮想コンピュータ／マシン・アーキテクチャ、又は抽象コンピュータ／マシン・アーキテクチャ、或いはマイクロアーキテクチャ、或いは命令セット・アーキテクチャ等）、或いはプラットフォーム（例えば、これらに限られるものではないが、コンピュータ／コンピュータ・プラットフォーム、又はオペレーティング・システム、又はプログラミング言語、或いはランタイム・ライブラリ等を含むにも等しく準用することができる。
【０３１５】
こうしたプログラミング言語の例は、手続き型プログラミング言語、又は宣言型プログラミング言語、或いはオブジェクト指向プログラミング言語を含む。こうしたプログラミング言語の更に別の例は、Ｍｉｃｒｏｓｏｆｔ．ＮＥＴ言語（ＶｉｓｕａｌＢＡＳＩＣ、ＶｉｓｕａｌＢＡＳＩＣ．ＮＥＴ、ＶｉｓｕａｌＣ／Ｃ＋＋、ＶｉｓｕａｌＣ／Ｃ＋＋．ＮＥＴ、Ｃ＃、Ｃ＃．ＮＥＴ等）、ＦＯＲＴＲＵＮ、Ｃ／Ｃ＋＋．ＯｂｊｅｃｔｉｖｅＣ、ＣＯＢＯＬ、ＢＡＳＩＣ、Ｒｕｂｙ、Ｐｙｔｈｏｎ等を含む。
【０３１６】
こうしたマシンの例には、ＪＡＶＡ（登録商標）仮想マシン、Ｍｉｃｒｏｓｏｆｔ．ＮＥＴ  ＣＬＲ、仮想マシン・モニタ、ハイパーバイザー、ＶＭＷａｒｅ、Ｘｅｎ等が挙げられる。
【０３１７】
こうしたコンピュータ・アーキテクチャの例には、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎのｘ８６コンピュータ・アーキテクチャ及び命令セット・アーキテクチャ、Ｉｎｔｅｌ  ＣｏｒｐｏｒａｔｉｏｎのＮｅｔＢｕｒｓｔマイクロアーキテクチャ、Ｉｎｔｅｌ  ＣｏｒｐｏｒａｔｉｏｎのＣｏｒｅマイクロアーキテクチャ、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍｓのＳＰＡＲＣコンピュータ・アーキテクチャ及び命令セット・アーキテクチャ、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍｓのＵｌｔｒａＳＰＡＲＣ  ＩＩＩマイクロアーキテクチャ、ＩＢＭ  ＣｏｒｐｏｒａｔｉｏｎのＰＯＷＥＲコンピュータ・アーキテクチャ及び命令セット・アーキテクチャ、ＩＢＭ  ＣｏｒｐｏｒａｔｉｏｎのＰＯＷＥＲ４／ＰＯＷＥＲ５／ＰＯＷＥＲ６マイクロアーキテクチャ等が挙げられる。
【０３１８】
こうしたプラットフォームの例には、ＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓ（登録商標）ＸＰオペレーティング・システム及びソフトウェア・プラットフォーム、ＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓ（登録商標）  Ｖｉｓｔａオペレーティング・システム及びソフトウェア・プラットフォーム、Ｌｉｎｕｘオペレーティング・システム及びソフトウェア・プラットフォーム、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍのＳｏｌａｒｉｓオペレーティング・システム及びソフトウェア・プラットフォーム、ＩＢＭ  ＣｏｒｐｏｒａｔｉｏｎのＡＩＸオペレーティング・システム及びソフトウェア・プラットフォーム、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍｓのＪＡＶＡプラットフォーム、Ｍｉｃｒｏｓｏｆｔの．ＮＥＴプラットフォーム等が挙げられる。
【０３１９】
非ＪＡＶＡ言語又はアプリケーション・コード環境において実施されたとき、マシン製造者及びマシンの内部詳細に関係なく、汎用プラットフォーム、及び／又は仮想マシン、及び／又はマシン、及び／又はランタイム・システムは、そのプラットフォーム、及び／又は仮想マシン、及び／又はマシン、及び／又はランタイム・システム、及び／又は言語アーキテクチャの言語（例えば、これらに限られるものではないが、ソース・コード言語、中間コード言語、オブジェクト・コード言語、マシン・コード言語及びいずれかの他のコード言語を含む）でアプリケーション・コードを動作することができる。プラットフォーム及び／又はランタイム・システムは、仮想マシン及び非仮想マシン・ソフトウェア及び／又はファームウェア・アーキテクチャ、並びにハードウェア及び直接ハードウェア・コード化アプリケーション及び実施を含むことができることを、ここに与えられる説明に照らして理解されるであろう。
【０３２０】
より一般的な組の仮想マシン又は抽象マシン環境、並びに、クラス及び／又はオブジェクトのいずれも利用できない又はその利用を必要としない現在及び将来のコンピュータ及び／又はコンピュータ・マシン及び／又は情報アプライアンス又は処理システムについては、構造、方法、及びコンピュータ・プログラム、並びにコンピュータ・プログラム製品は、依然として適用可能である。クラス及び／又はオブジェクトのいずれも利用しないコンピュータ及び／又はコンピュータ・マシンの例には、例えば、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ他により製造されたｘ８６コンピュータ・アーキテクチャ、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ他により製造されたＳＰＡＲＣコンピュータ・アーキテクチャ、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ他によって製造されたＰｏｗｅｒＰＣコンピュータ・アーキテクチャ、及びＡｐｐｌｅ  Ｃｏｍｐｕｔｅｒ，Ｉｎｃ他によって作製されたパーソナル・コンピュータ製品が挙げられる。これらのタイプのコンピュータの場合、クラス又はオブジェクトの概念を利用しない、コンピュータ・マシン、情報アプライアンス、及び仮想マシン又はそこに実装される仮想コンピュータ環境は、例えば、基本データ型（整数データ型、浮動小数点データ型、ｌｏｎｇデータ型、ダブル・データ型、文字列データ型、文字データ型、及びブール（Ｂｏｏｌｅａｎ）データ型のような）、構造化データ型（アレイ及び記録のような）、派生型、又は機能、ポインタ、コンポーネント、モジュール、構造、参照、及び和集合のような、手続き型言語又は他の言語及び環境の他のコード又はデータを含ませるように一般化することができる。
【０３２１】
ＪＡＶＡ（登録商標）言語において、メモリ位置は、例えば、フィール及びアレイ・データ構造の要素の両方を含む。上記の説明はフィールドを取り扱い、アレイ・データ構造に必要とされる変更は、本質的に同じく準用する。
【０３２２】
本発明のいずれの及び全ての実施形態も、種々の形態、及び、ソフトウェア実装、ハードウェア実装、シリコン実装、ファームウェア実装、又はソフトウェア／ハードウェア／シリコン／ファームウェアの組み合わせの実装を含む実装を取ることができる。
【０３２３】
本発明の実施形態に関する種々の方法及び／又は手段が説明される。本発明の少なくとも１つの実施形態において、これらの種々の手段のいずれか１つ又は各々は、コンピュータ論理回路、プロセッサ、ＡＳＩＣ、マイクロプロセッサ、マイクロコントローラ、或いは、こうした論理又は回路のオペレーションを変更して、列挙された動作又は機能を達成する他の論理内で実行する（複数のコンピュータ・プログラム・コード文又は命令を含む）コンピュータ・プログラム・コード文又は命令によって実装することができる。別の実施形態においては、これらの種々の手段のいずれか１つ又は各々は、ファームウェアで実装することができ、他の実施形態においては、これらは、ハードウェアで実装することができる。さらに、本発明の少なくとも１つの実施形態において、これらの種々の手段のいずれか１つ又は各々は、コンピュータ・プログラム・ソフトウェア、ファームウェア、及び／又はハードウェアの組み合わせによって実装することができる。
【０３２４】
上記の方法、手順、及び／又はルーチンのいずれか及び各々は、有形の媒体上に格納された、或いは、電子、信号、又はデジタル形態で存在するコンピュータ・プログラム及び／又はコンピュータ・プログラム製品として有利に実装することができる。こうしたコンピュータ・プログラム又はコンピュータ・プログラム製品は、別個に命令を含み、及び／又は、モジュール、プログラム、サブルーチンとして、或いはコンピュータ、コンピュータ・マシン、又は情報アプライアンスのプロセッサ又はマイクロプロセッサにおけるような処理論理において実行するためのいずれか他の方法で組織され、コンピュータ・プログラム又はコンピュータ・プログラム製品は、それが実行するコンピュータの動作、或いは、コンピュータ・プログラム又はコンピュータ・プログラム製品が存在する又は実行されているコンピュータと連結された、これに接続された、又は他の方法で信号通信状態にあるコンピュータ上の動作を修正する。こうしたコンピュータ・プログラム又はコンピュータ・プログラム製品は、コンピュータ、コンピュータ・マシン及び／又は情報アプライアンスの動作及びアーキテクチャ上の構想を変更し、コンピュータの技術的業務を変更し、かつ、ここに説明される技術的効果を認識する。
【０３２５】
説明を簡単にするために、ここに示されるメモリ位置の一部又は全ては、各マシン上に複製されるように示し又は記載することができ、よって、１つのマシンによる複製されたメモリ位置のいずれかへのレプリカ・メモリ更新は、全ての他のマシンに伝送される／送られる。重要なことに、本発明の方法及び実施形態は、完全に複製されるメモリ構成に制限されるものではなく、部分的に複製される共有メモリ構成にも適用可能であり、動作可能である（例えば、１つ又はそれ以上の複製されたメモリ位置が、複数のマシンのサブセット上に複製される場合のみ）。
【０３２６】
本発明の全ての記載された実施形態及び構成は、部分的に複製されようと又はされまいと、複製共有メモリ・システムに等しく適用可能である。具体的には、幾つかの複数のメモリ位置が、複製共有メモリ構成において動作しているマシン全体の一部のサブセット上に複製される部分的な複製共有メモリ構成自体が、本発明の目的のための複製共有メモリ構成を構成することができる。
【０３２７】
メモリ位置「Ａ」、「Ｂ」及び「Ｃ」が５つのマシンの複製共有メモリ構成（付加的なマシンＭ４及びＭ５を有する）のうちの３つのマシンＭ１、Ｍ２及びＭ３上に複製される図２２を参照すると、本発明の目的のために、複製共有メモリ構成という用語は、５つのマシンＭ１−Ｍ５の全てに制限されず、例えば、Ｍ１−Ｍ３といった、オペレーティング構成における、より少ない複数のマシン（マシンの総数より少ない）も含むことができる。従って、複製されたメモリ位置「Ａ」、「Ｂ」、及び「Ｃ」を有するマシンＭ１、Ｍ２及びＭ３は、それ自体で（マシンＭ４又はＭ５なしで）複製共有メモリ構成を構成する。
【０３２８】
典型的には、本発明内に説明され、示される複製共有メモリ構成は、一般に、図２及び図２２に示されるもののような、独立したローカル・メモリを有する複数の独立したマシンを含むように説明される。しかしながら、複製共有メモリ・システムを含む種々の代替的なマシン構成が、本発明によって提供され、かつ、本発明の範囲内に含まれる。
【０３２９】
具体的には、複製共有メモリ構成として動作する複数のこうしたエンティティの単数形のコンピュータ・エンティティを呼ぶように個々で用いられる「マシン」という用語は、単一の物理的マシン又は他の単一のコンピュータ・システムのみを意味するように制限又は限定されるものではない。代わりに、ここでの用語「マシン」の使用は、複製共有メモリ構成のいずれかの「複製されたメモリ・インスタンス」（又は「複製されるメモリ・イメージ」、又は「複製されるメモリ・ユニット」）についてより広い使用をその範囲内に包含し、含むように理解される。
【０３３０】
具体的には、ここに述べられるような複製共有メモリ構成は、各々が独立したローカル・メモリを有した状態で動作する複数のマシンを含む。複製共有メモリ構成内の関係するマシンのこうした独立したローカル・メモリの各々は、「独立した複製されたメモリ・インスタンス」（部分的に複製されようと又は完全に複製されようと）を表す。つまり、複製共有メモリ構成として動作している複数のこうしたマシンにおける各マシンのローカル・メモリは、「独立した複製されたメモリ・インスタンス」を表し、それとして動作する。こうした「複製されたメモリ・インスタンス」の最も一般的な実施形態は、その単一の物理的マシンのローカル・メモリの一部のサブセット又はその全体を含む単一の物理的マシンの単一のこうしたインスタンスであるが、「複製されたメモリ・インスタンス」は、こうした物理的マシン構成だけに限定されるものではない。
【０３３１】
例えば、「マシン」という用語の使用では、本発明により、種々の「仮想マシン」又は類似した構成のいずれかがその範囲内に含まれる。図２３において、「仮想マシン」構成の１つの一般的な例が示される。こうした仮想マシン構成は、ハイパーバイザーの形態を取ることができ、或いは、ＶＭＷのようなマシン・モニタ援用構成は、仮想マシン・インスタンス又はＸｅｎ準仮想化インスタンスである。代替的な実質的に同等の仮想マシン構成は、Ｓｏｌａｒｉｓ  Ｃｏｎｔａｉｎｅｒｓ、Ｉｓｏｌａｔｅｄ  Ｓｏｆｔｗａｒｅ  Ｄｏｍａｉｎｓ、Ｐａｒａｌｌｅｌ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍインスタンス、独立した及び／又は隔離した及び／又は保護されたメモリを有する実質的に独立したアプリケーション・プロセス又はタスク、或いは独立した又は分離した又は保護されたメモリを有するいずれかの他のこうした独立した仮想マシン・インスタンス又はこうした類似したマルチプログラム構成も含む。コンピュータ処理分野の当業者であれば、種々の代替的な「仮想マシン」構成に精通しているであろう。
【０３３２】
種々の「仮想マシン」構成のいずれかを用いるとき、多数の「仮想マシン」が、単一の物理的マシン上に常駐し、又はそれを占め、さらに、全体として本発明の方法及び複製共有メモリ構成に対して実質的に独立した方法で動作することが可能である。次に、本質的に、こうした「仮想マシン」は、独立した物理的マシンのように現れ、機能し、及び／又は動作するが、実際には、単一の共通の物理的マシンを共有し、又はその上に常駐する。こうした「ｎ」個の「仮想マシン」Ｎ１４１０の構成が、図２３に示される。
【０３３３】
図２３において、単一の物理的マシンＮ１１４０１が、ハードウェアＮ１１４０２及びハイパーバイザー及び／又はオペレーティング・システムＮ１１４０３を含むように示される。各々が、実質的に独立した、隔離した、及び／又は保護されたローカル・メモリ（典型的には、マシンＮ１１４０１のメモリ全体の一部のサブセットを含む）を有するｎ個の「仮想マシン」Ｎ１１４１０が、マシンＮ１１４０１及び上記のハイパーバイザー／オペレーティング・システム層内で動作するように示される。
【０３３４】
本発明の目的のためのこうした「仮想マシン」Ｎ１１４１０の各々は、複製共有メモリ構成の「単一のマシン」として振る舞い、動作することができる単一の「複製されたメモリ・インスタンス」の形態を取ることができる。
【０３３５】
２つ又はそれ以上のこうした「仮想マシン」が単一の物理的マシン上に常駐する又はその中で動作するとき、こうした単一の「仮想マシン」の各々は、一般に、複製共有メモリ構成の目的のための単一の「複製されたメモリ・インスタンス」を表す。言い換えれば、いずれかの他の「仮想マシン」の実質的に独立したメモリを有する「仮想マシン」の各々が、複製共有メモリ構成内の複数の「複製されたメモリ・インスタンス」のメンバーとして動作しているとき、一般に、単一の「複製されたメモリ・インスタンス」を表し、それとして動作し、これは、本発明の目的のために、ここに含まれる説明された実施形態、図面、構成、説明及び方法内に単一の「マシン」を含む。
【０３３６】
従って、複製共有メモリ構成及びこうした構成内で適用され、動作する本発明の方法は、各々が単一の独立した物理的マシンに対応することも又はしないこともある複数の「複製されたメモリ・インスタンス」を含み得ることが、本発明により提供される。例えば、こうした構成が、独立した「複製されたメモリ・インスタンス」として動作する複数の（例えば１０のような）仮想マシン・インスタンスを含み、各々の仮想マシン・インスタンスが１つの一般的な共通の物理的マシン内で動作する、複製共有メモリ構成が提供される。
【０３３７】
代替的に、例えば、こうした構成が、こうした構成の独立した「複製されたメモリ・インスタンス」として動作する単一の物理的マシンのどれか１つ又はそれ以上の仮想マシン・インスタンス、並びに、２つ又はそれ以上の「複製されたメモリ・インスタンス」を有した状態で動作していないどれか１つ又はそれ以上の単一の物理的マシンを含む、複製共有メモリ構成が提供される。
【０３３８】
多数の物理的マシン上に常駐し又はその上で動作し、複製される共有メモリ構成のための単一の「複製されたメモリ・インスタンス」をさらに表す構成を含む、「仮想マシン」のさらに代替的な構成も提供され、本発明の範囲内に含まれる。
【０３３９】
上述した方法又は構成のいずれの如何なる組み合わせも、提供され、考えられ、本発明の範囲内に含まれる。
【０３４０】
修正の全ての説明された例において、ロード前又はロード中、さらにロード後、修正されていないアプリケーション・コードの実行前にアプリケーション・コード５０が開始されたとき、修正されたアプリケーション・コードは、修正が実行された後、修正されていないアプリケーション・コードの代わりにロードされるか又は実行される。
【０３４１】
代替的に、ロード後及び修正されたアプリケーション・コードの実行後に修正が行なわれた場合、修正されていないアプリケーション・コードは、全体的に、実行される修正に対応する修正されたアプリケーション・コードと置き換えられるか、或いは代替的に、修正されていないアプリケーション・コードの実行時に増加的に修正が行なわれるとき、修正されていないアプリケーション・コードを部分的に又は増加的に置き換えることができることが理解される。こうした修正ルートの使用に関係なく、修正されていないアプリケーション・コードの代わりに、後に行なわれる修正が実行される。
【０３４２】
複数のマシンＭ１、Ｍ２・・・Ｍｎのそれぞれの上にある全ての類似した同等のローカル・オブジェクト（又はクラス、又はアセット、或いはリソース等）についての「メタ・ネーム」又は「メタ・アイデンティティ」の形態として、グローバル識別子を用いることは有利である。例えば、複数の類似した同等のオブジェクトの各マシン上の各類似した同等のローカル・オブジェクトの固有のローカル名又はアイデンティティの各々を常時監視し続けなければならないのではなく、代わりに、各マシン上の複数の類似した同等のオブジェクトに対応するグローバル名（例えば、「グローバル７７８７」）を定める又は使用することができ、各マシンが、グローバル名を特定のローカル名又はオブジェクトに関連付けることを理解する（例えば、「グローバル名７７８７」はマシンＭ１上のオブジェクト「ローカルオブジェクト４５６」に対応し、「グローバル名７７８７」はマシンＭ２上のオブジェクト「ローカルオブジェクト８８５」に対応し、「グローバル名７７８７」はマシンＭ３上のオブジェクト「ローカルオブジェクト１１１」に対応する等）。
【０３４３】
各ＤＲＴ７１によって生成されるテーブル又はリスト又は他のデータ構造において、全てのオブジェクト（例えば、メモリ位置又はフィールド）の全て又は一部のサブセットのリストを最初に記録又は生成するとき、各マシンＭ１、Ｍ２・・・Ｍｎ上のこうした記録されたオブジェクトの各々について、マシンＭ１、Ｍ２・・・Ｍｎの各々の上に共通の又は類似した名前又はアイデンティティが存在することも、ここに与えられる詳細な説明に照らして当業者には明らかであろう。しかしながら、各マシンは、それぞれの内部プロセスに従ってメモリ値又はコンテンツを異なるメモリ位置に格納することができ、かつ、それらを一般的に格納することになるので、個々のマシンにおいて、所定の名前又はアイデンティティに対応するローカル・オブジェクトは、時間の経過と共に変わる又は変わり得る。従って、ＤＲＴの各々におけるテーブル、又はリスト、又は他のデータ構造は、一般に、単一のメモリ名又はアイデンティティに対応する異なるローカル・メモリ位置を有するが、各々のグローバル「メモリ名」又はアイデンティティは、異なるローカル・メモリ位置に格納された同じ「メモリ名又はコンテンツ」を有することになる。従って、各々のグローバル名について、コンピュータの各々における１つのファミリー・メンバーを有する対応する独立したローカル・メモリ位置のファミリーが存在する。ローカル・メモリ名は変わり得るが、資産、オブジェクト、ロケーション等は、本質的に同じコンテンツ又は値を有する。従って、ファミリーは固有のものである。
【０３４４】
ロードする際のアプリケーション・プログラム・コード５０の上述の修正は、多くの方法で又は種々の手段によって達成できることも、ここに与えられる説明に照らして当業者には明らかであろう。これらの方法又は手段は、これらに限られるものではないが、少なくとも次の、すなわち、
（ｉ）ロード時の再コンパイル
（ｉｉ）ロード前の事前コンパイル手順
（ｉｉｉ）ロード前のコンパイル
（ｉｖ）「ジャスト・イン・タイム」コンパイル、或いは、
（ｖ）ロード後の（しかしながら、例えば、分散型環境において関連する又は対応するアプリケーション・コードの実行前の）再コンパイル、
を含む５つの方法及びこれらの５つの変形又は組み合わせを含む。
【０３４５】
従来より、「コンパイル（ｃｏｍｐｉｌａｔｉｏｎ）」という用語は、例えば、ソースからオブジェクト・コードへ、又は１つの言語から別のものへといった、コード又は言語における変化を意味する。明らかに、本明細書における「コンパイル」という用語（及びその文法上の同等物）は、そのように制限されるものではなく、同じコード又は言語内の修正を含む又は包含することもできる。
【０３４６】
プログラミングの技術分野における当業者であれば、付加的なコード又は命令が既存のコード又は命令セットに挿入されてこれを修正するとき、オフセット、分岐、属性、マークアップ等を満足させるように、既存のコード又は命令セットが、かなりの更なる修正を必要とすることがある（例えば、一連の命令の再番号付けによってなど）ことを認識するであろう。
【０３４７】
同様に、ＪＡＶＡ（登録商標）言語において、メモリ位置は、例えば、フィールド及びアレイ型の両方を含む。上記の説明はフィールドを取り扱い、アレイ型に必要とされる変更は、本質的に同じく準用する。同様に、本発明は、ＭＩＣＲＯＳＯＦＴ．ＮＥＴプラットフォーム及びアーキテクチャ（Ｖｉｓｕａｌ  Ｂａｓｉｃ、ＶｉｓｕａｌＣ／Ｃ＋＋、及びＶｉｓｕａｌＣ＃）、ＦＯＲＴＲＡＮ、Ｃ／Ｃ＋＋、ＣＯＢＯＬ、ＢＡＳＩＣ等を含むＪＡＶＡ（登録商標）に類似した他のプログラミング言語にも等しく適用可能である。
【０３４８】
ここに用いられるオブジェクト及びクラスという用語は、ＪＡＶＡ（登録商標）環境から得られ、動的リンク・ライブラリ（ＤＬＬ）、又はオブジェクト・コード・パッケージ、又は機能ユニット、或いはメモリ位置のような異なる環境から得られる類似した用語を含有するように意図される。
【０３４９】
例えば、これらに限られるものではないが、メモリ更新手段及び／又はメモリ複製手段、分散型ランタイム手段、変更子又は変更手段等を含む、種々の手段が、本発明の実施形態に関して説明される。これらの種々の手段のいずれか１つ又は各々は、コンピュータ論理回路、プロセッサ、ＡＳＩＣ、マイクロプロセッサ、マイクロコントローラ、或いは、こうした論理又は回路の動作を修正して、列挙された動作又は機能を達成する他の論理内で実行する（潜在的に、複数のコンピュータ・プログラム・コード文又は命令を含む）コンピュータ・プログラム・コード文又は命令によって実装することができる。別の構成においては、これらの種々の手段のいずれか１つ又は各々は、ファームウェア及び／又はハードウェアで実装することができる。さらに、これらの種々の手段のいずれか１つ又は各々は、コンピュータ・プログラム・ソフトウェア、ファームウェア、及び／又はハードウェアの組み合わせによって実装することができる。
【０３５０】
上述した方法、手順、及び／又はルーチンのいずれか及び各々は、いずれかの有形媒体上に格納された、或いは、電子、信号、又はデジタルの形態で存在するコンピュータ・プログラム及び／又はコンピュータ・プログラム製品として有利に実装することができる。こうしたコンピュータ・プログラム又はコンピュータ・プログラム製品は、別個に命令を含み、及び／又は、モジュール、プログラム、サブルーチンとして、或いはコンピュータ、コンピュータ・マシン、又は情報アプライアンスのプロセッサ又はマイクロプロセッサにおけるような処理論理において実行するためのいずれか他の方法で組織され、コンピュータ・プログラム又はコンピュータ・プログラム製品は、それが実行するコンピュータのオペレーション、或いは、コンピュータ・プログラム又はコンピュータ・プログラム製品が存在する又は実行されているコンピュータと連結された、これに接続された、又は他の方法で信号通信状態にあるコンピュータ上の動作を修正する。こうしたコンピュータ・プログラム又はコンピュータ・プログラム製品は、コンピュータ、コンピュータ・マシン及び／又は情報アプライアンスの動作及びアーキテクチャ上の構造を修正し、コンピュータの技術的業務を変更し、かつ、ここに説明される技術的効果を認識する。
【０３５１】
従って、本発明は、記録媒体に格納され、又は、いずれかの形態で電子的に存在する１組のプログラム命令を含むコンピュータ・プログラム製品によって構成することができ、複数のコンピュータが、特許請求の範囲のいずれかにおけるものなど、ここに述べられるような方法、手順、ルーチン等のいずれかを実行するのを可能にするように動作可能である。
【０３５２】
さらに、本発明は、通信ネットワーク又は他の通信リンク又は経路を介して相互接続され、かつ、各々がコンピュータの対応する異なるものの単一のコンピュータ上でのみ動作するように書き込まれたアプリケーション・コードの同じ部分又は異なる部分をほぼ同時に又は並行して実行するように動作可能な、複数のコンピュータを含む。コンピュータ・プログラム製品をロードするとき又は後の命令時に、コンピュータは、本明細書に述べられる、又は、特許請求の範囲のいずれかに述べられる方法、手順、又はルーチンのいずれも実行するようにプログラムされる。同様に、本発明はまた、その範囲内に、同様の、又は実質的に類似したコンピュータと協働してマルチ・コンピュータ・システムを形成するように配置された単一のコンピュータも含む。
【０３５３】
要約すると、メモリ更新メッセージが送られる通信リンクによって相互接続される少なくとも２つの物理的位置の各々において、少なくとも１つのメモリ位置のコンテンツを更新する方法が開示され、この方法は、
（ｉ）物理的位置を更新し、更新メッセージを検証することを可能にする検証データを各メモリ更新メッセージと関連付ける、
ステップを含む。
【０３５４】
検証データは、一連の更新メッセージにおける対応するメッセージの位置を示すカウント値を含むことが好ましい。
【０３５５】
検証データは、更新メッセージのソースを示す解決カウントをさらに含むことが好ましい。
【０３５６】
この方法は、
（ｉｉ）その時々にカウント値をリセットする、
更なるステップを含むことが好ましい。
【０３５７】
この方法は、
（ｉｉｉ）同じソースからの一連のメッセージについてのカウント値をインクリメントする又はデクリメントする、
更なるステップを含むことが好ましい。
【０３５８】
この方法は、
（ｉｖ）カウント値を１だけ、それぞれインクリメントする又はデクリメントする、
更なるステップを含むことが好ましい。
【０３５９】
この方法は、
（ｖ）エコー更新メッセージを生成させる可能性が高い環境において、カウント値を１より多く、それぞれインクリメントする又はデクリメントする、
更なるステップを含むことが好ましい。
【０３６０】
上記の方法を実行するように適合されたマルチ・コンピュータ・システムも開示され、各々のコンピュータ・システムは、物理的位置の１つを含む。
【０３６１】
さらに、上記のマルチ・コンピュータ・システムを形成するように、他のコンピュータと通信するように適合された単一のコンピュータが開示される。
【０３６２】
コンピュータにロードされたとき、コンピュータが上記の方法を実行するのを可能にするコンピュータ・プログラム製品も開示される。
【０３６３】
さらに、メモリ更新メッセージが送られる通信リンクによって相互接続される少なくとも２つの物理的位置の各々において、少なくとも１つのメモリ位置のコンテンツを更新するためのシステムが開示され、メモリ更新メッセージの各々は、これと関連した検証データを有し、この検証データは、物理的位置を更新し、更新メッセージを検証することを可能にする。
【０３６４】
検証データは、一連の更新メッセージにおける対応するメッセージの位置を示すカウント値を含むことが好ましい。
【０３６５】
検証データは、更新メッセージのソースを示す解決カウントをさらに含むことが好ましい。
【０３６６】
この方法は、その時々にカウント値をリセットするためのリセット手段を含むことが好ましい。
【０３６７】
この方法は、同じソースからの一連のメッセージについてのカウント値をインクリメントする又はデクリメントするためのカウント手段を含むことが好ましい。
【０３６８】
カウント手段は、カウント値を１だけ、それぞれインクリメントする又はデクリメントすることが好ましい。
【０３６９】
エコー更新メッセージを生成させる可能性が高い環境において、カウント手段は、カウント値を１より多く、それぞれインクリメントする又はデクリメントすることが好ましい。
【０３７０】
要約すると、複数のソースから、特定の位置識別子を有するメモリ位置をほぼ同時に更新することができる、アドレス指定されたメモリ更新における競合を検出する方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットについての更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む常駐更新カウントとを利用し、
（ｉｉ）各々の受信メモリ位置について、前に受信した更新の更新カウントを格納し、
（ｉｉｉ）受信メモリ位置に現在常駐する更新カウントをいずれかの現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）比較された更新カウントが同じである場合、競合状態を示す、
ステップを含む。
【０３７１】
この方法は、
（ｖ）更新ソースが局所的に更新されるたびに、更新ソースの常駐更新カウントをインクリメントする、
更なるステップを含むことが好ましい。
【０３７２】
この方法は、
（ｖｉ）更新ソースの常駐更新カウントを１だけインクリメントする、
更なるステップを含むことが好ましい。
【０３７３】
メモリ位置は、複数のコンピュータの１つに常駐する複数のメモリ位置の１つであり、複数のコンピュータの各々は、実質的に同じメモリ位置構造を有することが好ましい。
【０３７４】
コンピュータの１つにおける更新可能なメモリ位置の各々は、コンピュータの他の各々における対応するメモリ位置を有することが好ましい。
【０３７５】
更新可能なメモリ位置の各々は、位置識別子とは異なるローカル・メモリ・アドレスを有することが好ましい。
【０３７６】
アドレス指定されたメモリ更新における競合を検出するためのシステムも開示され、このシステムは、特定の位置識別子を有する少なくとも１つのメモリ位置；各々がメモリ位置を更新することができ、かつ、更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む、更新ソースの常駐更新カウントとを利用する複数のソース；メモリ位置の各々と関連し、前に受信した更新の更新カウントを格納する格納手段；前に格納された更新カウントをいずれかの現在受信した更新信号又はパケットと比較するための比較手段；及び比較手段と接続され、比較された更新カウントが同じ場合に競合状態を示すように動作可能な競合表示手段を含む。
【０３７７】
この方法は、更新ソースが局所的に更新されるたびに更新ソースの常駐更新カウントをインクリメントするためのインクリメント手段を含むことが好ましい。
【０３７８】
インクリメント手段は、常駐更新カウントを１だけインクリメントすることが好ましい。
【０３７９】
メモリ位置は、複数のコンピュータの１つに常駐する複数のメモリ位置の１つであり、複数のコンピュータの各々は、実質的に同じメモリ位置構造を有することが好ましい。
【０３８０】
コンピュータの１つにおける更新可能なメモリ位置の各々は、コンピュータの他の各々における対応するメモリ位置を有することが好ましい。
【０３８１】
更新可能なメモリ位置の各々は、位置識別子とは異なるローカル・メモリ・アドレスを有することが好ましい。
【０３８２】
さらに、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システム、及び、特定の位置識別子を有し、コンピュータの少なくとも２つ上に複製されたメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新における競合を検出する方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントとを利用し、
（ｉｉ）複製されたメモリ位置の各々について、前に送受信した更新の更新カウントを格納し、
（ｉｉｉ）更新される複製されたメモリ位置と関連した常駐更新カウントを現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）比較される更新カウントが同じである場合に競合状態を示す、
ステップを含む。
【０３８３】
さらに、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータ；特定の位置識別子を有し、なくとも２つのマシン上に複製され、マシンがそのレプリカ値を修正するときにほぼ同じままであるように更新された少なくとも１つのメモリ位置を含む、レプリカ・メモリ更新における競合を検出するための検出手段；各々がメモリ位置を更新することができ、かつ、各々が、更新されるメモリ位置の特定の識別子を含み、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントとを利用する複数のソース；メモリ位置の各々と関連し、前に受信した更新の更新カウントを格納する格納手段；前に格納された更新カウントを現在受信した更新信号又はパケットの更新カウントと比較するための比較手段；及び比較手段と接続され、比較された更新カウントが同じ場合に競合状態を示すように動作可能な競合表示手段を含む、マルチ・コンピュータ・システムも開示される。
【０３８４】
さらに、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システム、及び、特定の位置識別子を有し、少なくとも２つのコンピュータ上に複製されたメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントとを利用し、
（ｉｉ）複製されたメモリ位置の各々について、前に送受信した更新の更新カウントを格納し、
（ｉｉｉ）更新される複製されたメモリ位置と関連した現在の常駐更新カウントを現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）現在受信した更新カウントが現在の常駐更新カウントより大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、或いは、
（ｖ）現在受信した更新カウントが現在の常駐更新カウントより小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、或いは、
（ｖｉ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、競合状態を示す、
ステップを含む。
【０３８５】
さらに、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々の中に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータ；特定の位置識別子を有し、少なくとも２つのマシン上に複製され、そのレプリカ値をマシンが修正するときにほぼ同じままであるように更新された少なくとも１つのメモリ位置を含む、レプリカ・メモリ更新のための更新手段；各々がメモリ位置を更新することができ、かつ、各々が、更新されるメモリ位置の特定の識別子と、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントとを利用する複数のソース；各メモリ位置と関連付けられ、前に受信した更新の更新カウントを格納する格納手段；現在受信した更新カウント値を現在の常駐更新カウント値と比較し、現在受信した更新カウントが現在の常駐更新カウントを上回る場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、或いは、現在受信した更新カウントが現在の常駐更新カウントより小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きしない、比較手段；比較手段に接続され、比較された更新カウントが同じである場合、競合状態を示すように動作可能である、競合表示手段を含む、マルチ・コンピュータ・システムも開示される。カウント比較手段は、比較器であることが好ましい。
【０３８６】
付加的に、マルチ・コンピュータ・システムは、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される、少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する多数のコンピュータを含むマルチ・コンピュータ・システムにおいて、少なくとも１つの他のコンピュータと協働して用いるための単一のコンピュータ、及び、特定の位置識別子を有し、少なくとも２つのコンピュータ上に複製されたメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントとを利用し、
（ｉｉ）複製されたメモリ位置の各々について、前に送受信した更新の更新カウントを格納し、
（ｉｉｉ）更新される複製されたメモリ位置と関連した現在の常駐更新カウントを現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）現在受信した更新カウントが現在の常駐更新カウントより大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、或いは、
（ｖ）現在受信した更新カウントが現在の常駐更新カウントより小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、或いは、
（ｖｉ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、競合状態を示す、
ステップを含む。
【０３８７】
さらに、上記に定められたような方法によって更新される格納されたデータも開示される。
【０３８８】
マルチ・コンピュータ・システムを形成するように少なくとも１つの他のコンピュータと通信するように適合され、上記の方法を実行するように配置された単一のコンピュータも開示される。
【０３８９】
同様に、コンピュータにロードされたとき、コンピュータが上記の方法を実行することを可能にするコンピュータ・プログラム製品が開示される。
【０３９０】
要約すると、特定の位置識別子を有するメモリ位置を、複数のソースからほぼ同時に更新することができる、アドレス指定されたメモリ更新における競合を解決する方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む、更新ソースの常駐更新カウントとを利用し、
（ｉｉ）受信メモリ位置の各々について、前に受信した更新の更新カウントを格納し、
（ｉｉｉ）受信側メモリ位置に現在常駐する更新カウントを現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）現在受信した更新カウントが現在の常駐更新カウントより大きい場合、入ってくる信号又はパケットを実行せず、或いは、
（ｖ）現在受信した更新カウントが現在の常駐更新カウントより小さい場合、入ってくる信号又はパケットを実行し、或いは、
（ｖｉ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、競合の解決を開始する、
ステップを含む。
【０３９１】
入ってくる信号又はパケットを実行するステップは、特定のメモリ位置のコンテンツを入ってくる信号又はパケットと置き換え、現在の常駐更新カウントを入ってくる信号又はパケットの更新カウントと置き換えるステップを含むことが好ましい。
【０３９２】
開始される競合解決手順は、実質的に時間と無関係であることが好ましい。
【０３９３】
競合解決手順は、
（ｖｉｉ）階層的順序が割り当てられる、各々の更新ソースのアイデンティティを判断し、
（ｖｉｉｉ）階層的順序のランクがより高いソースからの更新信号又はパケットを受け入れる、
ステップを含むことが好ましい。
【０３９４】
競合解決手順は、
（ｉｘ）階層的順序が割り当てられる、各々の更新ソースのアイデンティティを判断し、
（ｘ）階層的順序のランクがより低いソースからの更新信号又はパケットを受け入れる、
ステップを含むことが好ましい。
【０３９５】
競合解決手順は、
（ｘｉ）実質的にランダムな数を各更新ソースに割り当て、
（ｘｉｉ）より大きいランダム数を有するソースからの更新信号又はパケットを受け入れる、
ステップを含むことが好ましい。
【０３９６】
競合解決手順は、
（ｘｉｉｉ）実質的にランダムな数を各更新ソースに割り当て、
（ｘｉｉ）より小さいランダム数を有するソースからの更新信号又はパケットを受け入れる、
ステップを含むことが好ましい。
【０３９７】
アドレス指定されたメモリ更新における競合を検出するためのシステムも開示され、このシステムは、特定の位置識別子を有する少なくとも１つのメモリ位置；その各々がメモリ位置を更新することができでき、かつ、更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む、更新ソースの常駐更新カウントとを利用する複数のソース；メモリ位置の各々と関連付けられ、前に受信した更新の更新カウントを格納する格納手段；前に格納された更新カウントをいずれかの現在受信した更新信号又はパケットと比較するための比較手段；比較手段と接続され、比較される更新カウントが同じである場合に競合状態を示し、現在受信した更新カウントが現在の常駐更新カウントより大きいことを比較が示す場合に現在受信した更新信号又はパケットに影響を与えず、或いは、現在受信した更新カウントが現在の常駐更新カウントより小さいことを比較が示す場合に現在受信した更新信号又はパケットに影響を与えるように動作可能な競合表示手段；及び競合表示手段と接続され、競合解決手順を開始する、競合解決手段を含む。
【０３９８】
競合表示手段は、現在受信した更新信号又はパケットに影響を与え、特定のメモリ位置のコンテンツを入ってくる信号又はパケットの更新カウントと置き換える上書き手段を含むことが好ましい。
【０３９９】
競合解決手段の動作は、実質的に時間と無関係であることが好ましい。
【０４００】
競合解決手段は比較器手段を含み、各々の更新ソースには表示数が割り当てられ、最後の更新ソースの指示数と現在の更新（競合が示された）ソースが、比較器手段によって比較され、比較が肯定である場合にのみ、現在受信した更新信号又はパケットに影響が与えられることが好ましい。
【０４０１】
好ましくは、競合解決手段は比較器手段を含み、各々の更新ソースには表示数が割り当てられ、最後の更新ソースの指示数と現在の更新（競合が示された）ソースが、比較器手段によって比較され、比較が否定である場合にのみ、現在受信した更新信号又はパケットに影響を与えることが好ましい。
【０４０２】
表示数は、コンピュータの階層におけるコンピュータの数を表すことが好ましい。
【０４０３】
表示数は、実質的に乱数であることが好ましい。
【０４０４】
メモリ位置は、複数のコンピュータの１つに常駐する複数のメモリ位置の１つであり、複数のコンピュータの各々は、実質的に同じメモリ位置構造を有することが好ましい。
【０４０５】
コンピュータの１つにおける更新可能なメモリ位置の各々は、コンピュータの他の各々における対応するメモリ位置を有することが好ましい。
【０４０６】
更新可能なメモリ位置の各々は、位置識別子とは異なるローカル・メモリ・アドレスを有することが好ましい。
【０４０７】
さらに、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリ位置の各々に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システムのための、かつ、特定の位置識別子を有するメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新における競合を検出する方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、複製されたメモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、複製されたメモリ位置と関連した更新ソースの常駐更新カウントと、更新ソースへの又は更新ソースの固有値を含む、複製されたメモリ位置と関連した更新ソースの常駐の解決値とを利用し、
（ｉｉ）受信メモリ位置の各々について、前に受信した更新の更新カウント及び解決値を格納し、
（ｉｉｉ）受信メモリ位置に現在常駐する更新カウントをいずれかの現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）更新される複製されたメモリ位置と関連した現在受信した更新カウントが現在の常駐更新カウントと等しい場合、入ってくる信号又はパケットを実行せず、或いは、
（ｖ）現在受信した更新カウントが現在の常駐更新カウントより小さい場合、入ってくる信号又はパケットを実行し、或いは、
（ｖｉ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、更新される複製されたメモリ位置と関連した現在の常駐解決値を現在受信した更新信号又はパケットの更新解決値と比較し、
（ｖｉｉ）現在受信した解決値が現在の常駐解決値より大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐解決値を現在受信した解決値に上書きし、或いは、
（ｖｉｉｉ）現在受信した解決値が現在の常駐解決値より小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐解決値を現在受信した解決値に上書きしない、
ステップを含む。
【０４０８】
さらに、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システムのための、レプリカ・メモリ更新における競合を解決するためのシステムが開示され、このシステムは、特定の位置識別子を有する少なくとも１つのメモリ位置；その各々が複製されたメモリ位置を更新でき、かつ、更新される複製されたメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、複製されたメモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、複製されたメモリ位置と関連した更新ソースの常駐更新カウントと、更新ソースへの又は更新ソースの固有値を含む、複製されたメモリ位置と関連した更新ソースの解決値とを利用する、複数のソース；複製されたメモリ位置の各々と関連付けられ、前に受信した更新の更新カウント及び解決値を格納する格納手段；更新される複製されたメモリ位置と関連した前に格納した更新カウントを現在受信した更新信号又はパケットの更新カウントと比較するための比較手段；比較手段と接続され、比較される更新カウントが同じである場合に競合状態を示すように動作可能な競合表示手段；競合表示手段と接続され、更新される複製されたメモリ位置と関連した現在の常駐解決値を現在受信した更新信号又はパケットの更新解決値と比較し、現在受信した解決値が現在の常駐解決値より大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、現在の常駐解決値を現在受信した解決値に上書きし、或いは、現在受信した解決値が現在の常駐解決値より小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、現在の常駐解決値を現在受信した解決値に上書きしない、競合解決手順を開始する競合解決手段を含む。
【０４０９】
さらに、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システム、及び、特定の位置識別子を有し、少なくとも２つのコンピュータ上に複製されたメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新における競合を解決する方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントと、更新ソースへの又は更新ソースの固有値を含む、更新ソースの解決値とを利用し、
（ｉｉ）複製されたメモリ位置の各々について、前に送受信した更新の更新カウント及び解決値を格納し、
（ｉｉｉ）更新される複製されたメモリ位置と関連した現在の常駐更新カウントを現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、更新される複製されたメモリ位置と関連した現在の常駐解決値を現在受信した更新信号又はパケットの更新解決値と比較し、
（ｖ）現在受信した解決値が現在の常駐解決値より大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、現在の常駐解決値を現在受信した解決値に上書きし、或いは、
（ｖｉ）現在受信した解決値が現在の常駐解決値より小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、現在の常駐解決値を現在受信した解決値に上書きしない、
ステップを含む。
【０４１０】
さらに、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システム、及び、レプリカ・メモリ更新における競合を解決するためのシステムが開示され、このシステムは、特定の位置識別子を有し、少なくとも２つのマシン上に複製され、マシンがそのレプリカ値を修正するときにほぼ類似したままであるように更新される少なくとも１つのメモリ位置；その各々がメモリ位置を更新することができ、かつ、更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントと、更新ソースへの又は更新ソースの固有値を含む、更新ソースの解決値とを利用する、複数のソース；複製されたメモリ位置の各々と関連付けられ、前に送受信した更新の更新カウント及び解決値を格納する格納手段；更新される複製されたメモリ位置と関連した現在受信した更新カウント値を現在の常駐更新カウント値と比較し、比較された更新カウントが同じである場合、更新される複製されたメモリ位置と関連した現在の常駐解決値を現在受信した更新信号又はパケットの更新解決値と比較し、現在受信した解決値が現在の常駐解決値より大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、現在の常駐解決値を現在受信した解決値に上書きし、或いは、現在受信した解決値が現在の常駐解決値より小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、現在の常駐解決値を現在受信した解決値に上書きしない、比較手段を含む。
【０４１１】
カウント比較及び解決比較手段は比較器であることが好ましい。
【０４１２】
最終的には、各々が少なくとも１つの通信ネットワークを介して相互接続され、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、多数のコンピュータを含むマルチ・コンピュータ・システムにおいて少なくとも１つの他のコンピュータと協働して使用するための単一のコンピュータ、及び、特定の位置識別子を有し、少なくとも２つのコンピュータ上に複製されたメモリ位置を、複数のソースからほぼ同時に更新することができる、レプリカ・メモリ更新における検出を解決する方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの常駐更新カウントと、更新ソースへの又は更新ソースの固有値を含む、更新ソースの解決値とを利用し、
（ｉｉ）複製されたメモリ位置の各々について、前に送受信した更新の更新カウント及び解決値を格納し、
（ｉｉｉ）更新される複製されたメモリ位置と関連した現在の常駐更新カウントを現在受信した更新信号又はパケットの更新カウントと比較し、
（ｉｖ）現在受信した更新カウントが現在の常駐更新カウントと等しい場合、更新される複製されたメモリ位置と関連した現在の常駐解決値を現在受信した更新信号又はパケットの更新解決値と比較し、
（ｖ）現在受信した解決値が現在の常駐解決値より大きい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きし、現在の常駐更新カウントを現在受信した更新カウントに上書きし、現在の常駐解決値を現在受信した解決値に上書きし、或いは、
（ｖｉ）現在受信した解決値が現在の常駐解決値より小さい場合、関連した複製されたメモリ位置を現在受信したデータ・コンテンツに上書きせず、現在の常駐更新カウントを現在受信した更新カウントに上書きせず、現在の常駐解決値を現在受信した解決値に上書きしない、
ステップを含む。
【０４１３】
さらに、上述したコンピュータ・システムのいずれか１つを形成するように他のコンピュータと通信するように適合された単一のコンピュータが開示される。
【０４１４】
付加的に、マルチ・コンピュータ・システムを形成し、かつ、上述した競合解決の方法のいずれか１つを実行するように、他のコンピュータと通信するように適合された単一のコンピュータが開示される。
【０４１５】
さらにまた、上記の方法のいずれか１つを実行し、又は、上記のマルチ・コンピュータ・システムのいずれか１つを形成するための、コンピュータ・プログラム製品が開示される。
【０４１６】
さらに、上記の方法に従って格納される格納データも開示される。
【０４１７】
要約すると、各々が特定の位置識別子を有し、複数のソースからほぼ同時に更新することができるアドレス指定されたメモリ位置を各々が有する複数のコンピュータを相互接続する通信ネットワーク上でメモリ更新信号又はパケットをブロードキャストする方法が開示され、この方法は、
（ｉ）更新される各メモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置の各々が更新されるコンテンツと、各々が、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む、更新ソースの少なくとも１つの常駐更新カウントとを利用し、
（ｉｉ）アプリケーション実行コンピュータの各々によるブロードキャストされた更新信号又はパケットの受信に続いて、対応する更新されたコンテンツ及び更新カウントの両方を、特定のメモリ位置の各々における各コンピュータのローカル・メモリに格納する、
ステップを含む。
【０４１８】
更新カウントの数は、更新されるメモリ位置の数と等しいことが好ましい。
【０４１９】
更新カウントの数は、１に等しいことが好ましい。
【０４２０】
単一の更新カウントは、ブロードキャストされた信号又はパケット内に含まれる更新されたメモリ位置の各々の更新カウントからなるグループから選択されることが好ましい。
【０４２１】
単一の更新カウントは、グループ内で最も大きいカウントであることが好ましい。
【０４２２】
メモリ位置の各々は、複数のコンピュータの１つに常駐する複数のメモリ位置の１つであり、複数のコンピュータの各々は、実質的に同じメモリ位置構造を有することが好ましい。
【０４２３】
コンピュータの１つの中の更新可能なメモリ位置の各々は、コンピュータの他の各々の中に対応するメモリ位置を有することが好ましい。
【０４２４】
更新可能なメモリ位置の各々は、位置識別子とは異なるローカル・メモリ・アドレスを有することが好ましい。
【０４２５】
複数のコンピュータの各々が、単一のコンピュータ上で実行されるように記述された単一のアプリケーション・プログラムの異なる部分を実行することが好ましい。
【０４２６】
複数のコンピュータを相互接続する通信ネットワーク上でアドレス指定されたメモリ更新信号又はパケットをブロードキャストするためのシステムも開示され、このシステムは、各コンピュータ内に特定の位置識別子を有する少なくとも１つのメモリ位置；その各々がメモリ位置を更新でき、かつ、更新されるメモリ位置の各々の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、メモリ位置の各々が更新されるコンテンツと、各々が、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む、更新ソースの少なくとも１つの常駐更新カウントとを利用する、複数のソース；及びメモリ位置と関連付けられ、前に受信した更新の更新カウントを格納する格納手段を含む。
【０４２７】
システムは、更新ソースが局所的に更新されるたびに更新ソースの常駐更新カウントをインクリメントするためのインクリメント手段を含むことが好ましい。
【０４２８】
インクリメント手段は、常駐更新カウントを１だけインクリメントすることが好ましい。
【０４２９】
メモリ位置は、複数のコンピュータの１つに常駐する複数のメモリ位置の１つであり、複数のコンピュータの各々は、実質的に同じメモリ位置構造を有することが好ましい。
【０４３０】
コンピュータの１つの中の更新可能なメモリ位置の各々は、コンピュータの他の各々の中に対応するメモリ位置を有することが好ましい。
【０４３１】
更新可能なメモリ位置の各々は、位置識別子とは異なるローカル・メモリ・アドレスを有することが好ましい。
【０４３２】
付加的に、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々がローカル・メモリの各々に複製される少なくとも１つのアドレス指定されたメモリ位置を備えた独立したローカル・メモリを有し、各々が特定の位置識別子を有し、複数のソースからほぼ同時に更新することができる少なくとも１つのアドレス指定されたメモリ位置を備えた独立したローカル・メモリを有する、複数のコンピュータを相互接続する通信ネットワーク上で、メモリ更新信号又はパケットをブロードキャストする方法が開示され、この方法は、
（ｉ）更新される各メモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、各メモリ位置が更新されるコンテンツと、各々が現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの少なくとも１つの更新カウントと、各々が更新ソースの固有値を含む、更新ソースの少なくとも１つの解決値とを利用する、
ステップを含む。
【０４３３】
さらに、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、各々が少なくとも１つのメモリ位置を備えた独立したローカル・メモリを有する、複数のコンピュータを相互接続する通信ネットワーク上で、アドレス指定されたメモリ更新信号又はパケットをブロードキャストするためのシステムが開示され、このシステムは、各コンピュータ内に特定の位置識別子を有するローカル・メモリの各々に複製される少なくとも１つの複製されたメモリ位置；及びその各々が複製されたメモリ位置を更新することができ、各々が、更新されるメモリ位置の各々の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、複製されたメモリ位置の各々が更新されるコンテンツと、各々が現在の更新を含めて更新ソースが更新された一連の機会を示す数を含む、更新ソースの少なくとも１つの更新カウントと、各々が更新ソースの固有値を含む、更新ソースの少なくとも１つの解決値とを利用する、複数のソース；を含む。
【０４３４】
同様に、各々が単一のコンピュータ上で実行されるように記述されたアプリケーション・プログラムの異なる部分を実行し、その各々が特定の識別子を有し、複数のソースからほぼ同時に更新することができる、各ローカル・メモリに複製される少なくとも１つのアドレス指定されたメモリ一を備えた独立したローカル・メモリを有する、複数のコンピュータを相互接続する通信ネットワーク上で、アドレス指定されたメモリ更新信号又はパケットをブロードキャストする方法が開示され、この方法は、
（ｉ）更新される少なくとも２つの複製されたメモリ位置の特定の識別子を含む、更新を実行する信号又はパケットのための更新フォーマットと、複製されたメモリ位置の各々が更新されるコンテンツと、現在の更新を含めて全ての複製されたメモリ位置が更新される一連の機会を示す最大の数を含む、複製されたメモリ位置の全てについての更新ソースの１つの更新カウントと、更新ソースの固有値を含む、更新ソースの少なくとも１つの解決値とを利用する、
ステップを含む。
【０４３５】
上記の方法によって更新される格納データも開示される。
【０４３６】
上記のマルチ・コンピュータ・システムを形成するように、他のコンピュータと通信するように適合された単一のコンピュータが開示される。
【０４３７】
さらにまた、上記の方法を実行し、又は、上記のマルチ・コンピュータ・システムを形成するように適合されたコンピュータ・プログラム製品が開示される。
【０４３８】
要約すると、特定のアドレス又は識別子を有するメモリ位置を、複数のソースからほぼ同時に更新することができる、アドレス指定されたメモリ更新における競合の検出及び／又は解決のためのシステムにおけるデータ統合方法が開示され、この方法は、
（ｉ）更新されるメモリ位置の特定のアドレスを含む更新信号／パケット用フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めてメモリ位置が更新された機会の累積数を示す更新カウントとを利用し、
（ｉｉ）メモリ位置の各々について、前に受信した更新の更新カウントを格納し、
（ｉｉｉ）所定の条件が生じた時々に、格納された更新カウントを統合する、
ステップを含む。
【０４３９】
この方法は、
（ｉｖ）全ての更新カウントを所定のカウント値にリセットすることによって、システムを再初期化する、
更なるステップを含むことが好ましい。
【０４４０】
この方法は、
（ｖ）所定の数をゼロとして設定する、
更なるステップを含むことが好ましい。
【０４４１】
所定の条件は、所定の期間、いずれかの更新信号／パケットがないことを含むことが好ましい。
【０４４２】
所定の条件は、所定の閾値を下回る利用可能な予備のメモリ空間を含むことが好ましい。
【０４４３】
所定の条件は、所定の閾値を下回るメモリ位置と関連した中央処理ユニットの活動を含むことが好ましい。
【０４４４】
この方法は、
（ｖｉ）そのビット数を減らすことによって、格納された更新カウントを統合する、
更なるステップを含むことが好ましい。
【０４４５】
この方法は、
（ｖｉｉ）格納された更新カウントのビット数を１ビットに減らす、
更なるステップを含むことが好ましい。
【０４４６】
この方法は、
（ｖｉｉｉ）次の更新信号／パケットの受信時に減少した格納された更新カウントを拡大する、
更なるステップを含むことが好ましい。
【０４４７】
この方法は、
（ｉｘ）同じものを削除することによって、格納された更新カウントを統合する、
更なるステップを含むことが好ましい。
【０４４８】
この方法は、
（ｘ）メモリに次に書き込む時に更新カウントを再作成し、新しいメモリ値を他のマシンに伝送し、
（ｘｉ）次の更新信号／パケットの受信時に格納された更新カウントを再作成し、再作成されたカウントを受信したメッセージのカウントと等しくなるように設定する、
更なるステップを含むことが好ましい。
【０４４９】
この方法は、
（ｘｉｉ）再作成されたカウントを１に設定する、
更なるステップを含むことが好ましい。
【０４５０】
この方法は、
（ｘｉｉｉ）更新信号／パケット用フォーマットの各々について、更新されるメモリ位置の各々に対して更新カウントを提供する、
ステップを含むことが好ましい。
【０４５１】
この方法は、
（ｘｉｖ）更新される全てのメモリ位置、更新される各メモリ位置のコンテンツ又は値、及び更新される全てのメモリ位置についての単一の更新カウントを含むグループの更新信号を形成する、
ステップを含むことが好ましい。
【０４５２】
さらに、各々が特定のアドレス又は識別子を有するメモリ位置を、複数のソースからほぼ同時に更新することができる、アドレス指定されたメモリにおける競合の検出及び／又は解決を可能にするデータ統合のためのシステムが開示され、このシステムは、更新される各メモリ位置の特定のアドレスと、各アドレスについて、いずれかの受信した更新コンテンツにより上書きされるコンテンツと、いずれかの現在の更新を含めて各メモリ位置が更新された機会の累積数を示す更新カウントとを含むデータ格納部、及び、データ格納部に接続され、所定の条件が生じた時々に格納された更新カウントを統合する統合手段を含む。
【０４５３】
統合手段は、全ての更新カウントを所定の数にリセットするための再初期化手段を含むことが好ましい。
【０４５４】
所定の数はゼロであることが好ましい。
【０４５５】
統合手段の所定の条件は、所定の期間、いずれの更新信号／パケットもないことを含むことが好ましい。
【０４５６】
統合手段の所定の条件は、所定の閾値を下回るデータ格納部内の利用可能な予備のメモリ空間を含むことが好ましい。
【０４５７】
統合手段の所定の条件は、所定の閾値を下回るメモリ位置と関連した中央処理ユニットの活動を含むことが好ましい。
【０４５８】
統合手段は、そのビット数を減らすことによって、格納された更新カウントの各々を統合することが好ましい。
【０４５９】
減少したビット数は、１ビットを含むことが好ましい。
【０４６０】
統合手段は、更新信号／パケットの受信時に、減少した格納された更新カウントを拡大することが好ましい。
【０４６１】
統合手段は、その削除により格納された更新カウントの各々を統合することが好ましい。
【０４６２】
統合手段は、入ってくる更新カウントを含む更新信号／パケットの受信時に、格納された更新カウントを再作成し、これを入ってくる更新カウントと同じになるように設定することが好ましい。
【０４６３】
統合手段は、更新信号／パケットの受信時に、格納された更新カウントを再作成し、これを１に設定することが好ましい。
【０４６４】
いずれかの更新信号／パケットのフォーマットは、更新される各メモリ位置に対して更新カウントを提供することが好ましい。
【０４６５】
いずれかの更新信号／パケットのフォーマットは、メモリ位置のグループを同時に更新するデータを含み、更新信号／パケットは、更新される全てのメモリ位置についての単一の更新カウントを含むことが好ましい。
【０４６６】
特定のアドレス又は識別子を有する複製されたアプリケーション・メモリ位置／コンテンツを、複数のソースからほぼ同時に更新することができ、各々のコンピュータが独立したローカル・メモリを含み、各々が単一のコンピュータ上でのみ動作するように記述されたアプリケーション・プログラムの部分を実行する、アドレス指定されたメモリ更新における競合の検出及び／又は解決のための、マルチ・コンピュータ・システムにおけるデータ統合方法も開示され、この方法は、
（ｉ）更新される複製されたアプリケーション・メモリ位置／コンテンツの特定のアドレスを含む更新信号／パケット用フォーマットと、メモリ位置が更新されるコンテンツと、現在の更新を含めてメモリ位置が更新された機会の累積数を示す更新カウント（「カウント値」）とを利用し、
（ｉｉ）メモリ位置の各々について、前に受信した更新の更新カウントを格納し、
（ｉｉｉ）所定の条件が生じた時々に、格納された更新カウントを統合又は削除する、
ステップを含む。
【０４６７】
さらに、各々のコンピュータが独立したローカル・メモリを含み、各々が単一のコンピュータ上でのみ動作するように記述された同じアプリケーション・プログラムの部分を実行する、マルチ・コンピュータ・システム、及び、各々が特定のアドレス又は識別子を有する複製されたアプリケーション・メモリ位置／コンテンツを、複数のソースからほぼ同時に更新することができる、アドレス指定されたメモリにおける競合の検出及び／又は解決を可能にするデータ統合のためのシステムが開示され、このシステムは、更新される複製されたアプリケーション・メモリ位置／コンテンツの各々の特定のアドレスと、各アドレスについて、いずれかの受信した更新コンテンツにより上書きされるコンテンツと、いずれかの現在の更新を含めて各メモリ位置が更新された機会の累積数を示す更新カウント（「カウント値」）とを含むデータ格納部、及び、データ格納部に接続され、所定の条件が生じた時々に、格納された更新カウントを統合する統合又は削除手段を含む。
【０４６８】
格納されたデータが、上記の方法によって更新される。
【０４６９】
単一のコンピュータが、上記のマルチ・コンピュータ・システムを形成するように、他のコンピュータと通信するように適合される。
【０４７０】
コンピュータ・プログラム製品が、上記の方法を実行し、又は、上記のマルチ・コンピュータ・システムを形成するように適合される。
【０４７１】
要約すると、一連の更新メッセージにおける更新メッセージの位置を示すためにカウント値を用いる、データ更新システムの正しい動作を確実にする方法が開示され、この方法は、
（ｉ）更新メッセージのフローを停止し、
（ｉｉ）停止中にカウント値をリセットする、
ステップを含む。
【０４７２】
停止は、所定の大きさに接近するカウント値によって開始されることが好ましい。
【０４７３】
所定の大きさは、起こり得る算術オーバーフローによって決定されることが好ましい。
【０４７４】
所定の時間後に停止が開始されることが好ましい。
【０４７５】
所定のメッセージ活動がない場合に停止が開始されることが好ましい。
【０４７６】
カウント値がゼロにリセットされることが好ましい。
【０４７７】
同様に、少なくとも２つの物理的位置の各々における少なくとも１つのメモリ位置が、メモリ更新メッセージが送られる通信リンクによって接続される、マルチ・メモリ・システムも開示され、そこでは、送られた一連のメッセージにおけるその位置を示すために、カウント値が送られたメッセージの各々と関連付けられ、メッセージの送信が一時的に停止され、カウント値をリセットする。
【０４７８】
停止は、所定の大きさに接近するカウント値によって開始されることが好ましい。
【０４７９】
所定の大きさは、起こり得る算術オーバーフローによって決定されることが好ましい。
【０４８０】
所定の時間後に停止が開始されることが好ましい。
【０４８１】
所定のメッセージ活動がない場合に停止が開始されることが好ましい。
【０４８２】
カウント値がゼロにリセットされることが好ましい。
【０４８３】
システムは、マルチ・コンピュータ・システムを含むことが好ましい。
【０４８４】
さらに、上記のマルチ・コンピュータ・システムのコンピュータの１つを形成するように適合された単一のコンピュータが開示される。
【０４８５】
さらに、各々のコンピュータが独立したローカル・メモリを含み、各々が単一のコンピュータ上でのみ、かつ、少なくとも、独立したメモリの各々に複製され、ほぼ同じままであるように更新されるアプリケーション・プログラム・メモリ位置／コンテンツ上で動作するように記述されたアプリケーション・プログラムを動作させるマルチ・コンピュータ・システムにおいて、更新カウント値を格納する有限カウンタの正しい動作を確実にする方法が開示され、この方法は、
（ｉ）更新カウント値が閾値に達したとき、各コンピュータの更新カウント値をリセット又は再初期化する、
ステップを含む。
【０４８６】
さらに、各々のコンピュータが独立したローカル・メモリを含み、各々が単一のコンピュータ上でのみ、かつ、少なくとも、独立したメモリの各々に複製され、ほぼ同じままであるように更新されるアプリケーション・プログラム・メモリ位置／コンテンツ上で動作するように記述されたアプリケーション・プログラムを動作するマルチ・コンピュータ・システムにおいて、更新カウント値を格納する有限カウンタの正しい動作を確実にする方法が開示され、この方法は、
（ｉ）関連した更新カウント値が閾値に達したとき、又は、所定の時間が経過したとき、複製されたメモリ位置／コンテンツのレプリカ更新伝送を停止し、
（ｉｉ）コンピュータの各々において、更新カウント値をリセット又は再初期化し、
（ｉｉｉ）前に停止されたレプリカ更新伝送を再開する、
ステップを含む。
【０４８７】
さらに、マルチ・コンピュータ・システムを形成するように他のコンピュータと通信するように適合された単一のコンピュータが開示され、上記の方法を実行するように構成される。
【０４８８】
コンピュータにロードされたとき、コンピュータが上記の方法を実行するのを可能にするコンピュータ・プログラム製品も開示される。
【０４８９】
さらに、上記の方法によって更新される格納されたデータが開示される。
【０４９０】
要約すると、少なくとも１つのメモリ位置が、異なるメモリ・ストアに複製され、各々が位置のアドレスと、位置についての新しいコンテンツと、一連の更新メッセージを示すように所定の数によりインクリメントされる、一連の更新メッセージにおける位置を示す更新カウントとを含む更新メッセージを伝送する多数のソースからほぼ同時に更新することができる、メモリ・システムにおけるメモリ更新エコーを克服する方法が開示され、この方法は、
（ｉ）特定のメモリ位置に関してどのソースが最後に伝送されたかを判断し、
（ｉｉ）同じメモリ位置に関して同じソースが連続的に伝送される場合、第２の伝送についての更新カウントを所定の数より多くインクリメントする、
ステップを含む。
【０４９１】
所定の数は１であることが好ましい。
【０４９２】
ステップ（ｉｉ）において、更新カウントは、２だけインクリメントされることが好ましい。
【０４９３】
メモリ・システムは、単一のコンピュータ上で動作されるように記述された単一のアプリケーション・プログラムを実行しているが、各々が多数のコンピュータの異なるものの上で動作されている単一のアプリケーション・プログラムの異なる部分を実行している、マルチ・コンピュータ・システム内の複製されたメモリ位置を含むことが好ましい。
【０４９４】
さらに、メモリ更新エコーの除去を用いる複製型メモリ・システムが開示され、このシステムは、異なるメモリ・ストアに複製され、かつ、各々が、ロケーションのアドレス、ロケーションについての新しいコンテンツ、及び一連の更新メッセージにおける更新メッセージの位置を示す更新カウントを含む、更新メッセージを伝送する多数のソースからほぼ同時に更新することができる、少なくとも１つのメモリ位置を含み、このシステムは、どのソースを最後に伝送したかを判断し、同じメモリ位置に関して同じソースを連続的に伝送する場合、第２の伝送についての更新カウントを所定の数より多くインクリメントする。
【０４９５】
所定の数は１であることが好ましい。
【０４９６】
同じソースの同じメモリの連続的伝送についての更新カウント・インクリメントは、２であることが好ましい。
【０４９７】
メモリ・システムは、単一のコンピュータ上で動作されるように記述された単一のアプリケーション・プログラムを実行しているが、各々が多数のコンピュータの異なるものの上で動作されている単一のアプリケーション・プログラムの異なる部分を実行している、マルチ・コンピュータ・システム内の複製されたメモリ位置を含むことが好ましい。
【０４９８】
さらに、少なくとも１つのアプリケーション・メモリ位置が、独立したローカル・メモリの各々に複製され、ほぼ同じままであるように更新され、各々のソースが、複製されたアプリケーション・メモリ位置／コンテンツのアドレス又はアイデンティティと、複製されたアプリケーション・メモリ位置についての関連した新しいコンテンツと、一連の更新メッセージを示すように所定の数だけインクリメントされる、一連の更新メッセージにおける更新メッセージの位置を示す更新カウントとを含む更新メッセージを伝送する、各々のコンピュータが独立したローカル・メモリを含み、かつ、単一のコンピュータ上で動作するように記述されたアプリケーション・プログラムの部分を動作し、メモリ・システムにおけるメモリ更新エコーを克服する方法を使用する、マルチ・コンピュータ・システムが開示され、この方法は、
（ｉ）特定のメモリ位置に関してどのソースが最後に伝送されたかを判断し、
（ｉｉ）同じメモリ位置に関して同じソースが連続的に伝送される場合、第２の伝送についての更新カウントを所定の数より多くインクリメントする、
ステップを含む。
【０４９９】
さらに、メモリ更新エコーの除去を用いる複製型メモリ・システムが開示され、このシステムは、異なる独立したメモリ・ストアに複製され、かつ、各々が、複製されたアプリケーション・メモリ位置／コンテンツのアドレス又はアイデンティティと、複製されたアプリケーション・メモリ位置についての関連した新しいコンテンツと、一連の更新メッセージを示すように所定の数だけ増加される、一連の更新メッセージにおける更新メッセージの位置を示す更新カウントとを含む更新メッセージを伝送する多数のソースからほぼ同時に更新することができる、少なくとも１つのアプリケーション・メモリ位置／コンテンツを含み、このシステムは、どのソースが最後に伝送されたかを判断し、同じメモリ位置に関して同じソースが連続的に伝送される場合、第２の伝送についての更新カウントを所定の数より多くインクリメントする。
【０５００】
さらに、少なくとも１つのアプリケーション・メモリ位置が、独立したローカル・メモリの各々に複製され、ほぼ同じままであるように更新され、各々のソースが、複製されたアプリケーション・メモリ位置／コンテンツのアドレス又はアイデンティティと、複製されたアプリケーション・メモリ位置についての関連した新しいコンテンツと、一連の更新メッセージを示すように所定の数だけインクリメントされる、一連の更新メッセージにおける更新メッセージの位置を示す更新カウントとを含む更新メッセージを伝送する、各々のコンピュータが独立したローカル・メモリを含み、かつ、単一のコンピュータ上で動作するように記述されたアプリケーション・プログラムの部分を動作し、メモリ・システムにおけるメモリ更新エコーを克服する方法を使用する、マルチ・コンピュータ・システムが開示され、この方法は、
（ｉ）受信マシンにおいて、同じ複製されたアプリケーション・メモリ位置／コンテンツについてのレプリカ・メモリ更新伝送の受信時に、警告又は計画されたが、まだ伝送されていない、いずれかのレプリカ・メモリ更新をディスエーブルにする、
ステップを含む。
【０５０１】
さらに、メモリ更新エコー除去を用いる複製型メモリ・システムが開示され、このシステムは、異なる独立したメモリ・ストアに複製され、かつ、各々が、複製されたアプリケーション・メモリ位置／コンテンツのアドレス又はアイデンティティと、複製されたアプリケーション・メモリ位置についての関連した新しいコンテンツと、一連の更新メッセージを示すように所定の数だけ増加される、一連の更新メッセージにおける更新メッセージの位置を示す更新カウントとを含む更新メッセージを伝送する多数のソースからほぼ同時に更新することができる、少なくとも１つのアプリケーション・メモリ位置／コンテンツを含み、このシステムは、受信マシンによるレプリカ・メモリ更新伝送の受信時に、受信マシンにおいて、同じ複製されたアプリケーション・メモリ位置／コンテンツについての警告又は計画されたがまだ伝送されていない、いずれかのレプリカ・メモリ更新が存在するかどうかを判断し、存在する場合には、受信マシンの警告又は計画されたレプリカ・メモリ更新をディスエーブルにする又はキャンセルする。
【０５０２】
さらに、マルチ・コンピュータ・システムを形成するように他のコンピュータと通信するように適合された単一のコンピュータが開示され、上記の方法を実行するように構成される。
【０５０３】
さらに、コンピュータにロードされた時に、コンピュータが上記の方法を実行するのを可能にするコンピュータ・プログラム製品が開示される。
【０５０４】
上記の方法によって更新される格納されたデータも開示される。
【０５０５】
ここで用いられる「含む（ｃｏｍｐｒｉｓｉｎｇ）」（及びその文法的変形）は、「含む（ｉｎｃｌｕｄｉｎｇ）」又は「有する（ｈａｖｉｎｇ）」の意味を含むものであるが、「だけからなる（ｃｏｎｓｉｓｔｉｎｇ  ｏｎｌｙ  ｏｆ）」の意味を含むものではない。
【図１Ａ】
2010506273.tif 000003
【図１Ｂ】
2010506273.tif 000004
【図１Ｃ】
2010506273.tif 000005
【図２】
2010506273.tif 000006
【図３】
2010506273.tif 000007
【図４】
2010506273.tif 000008
【図５】
2010506273.tif 000009
【図６】
2010506273.tif 000010
【図７】
2010506273.tif 000011
【図８】
2010506273.tif 000012
【図９】
2010506273.tif 000013
【図１０】
2010506273.tif 000014
【図１１】
2010506273.tif 000015
【図１２】
2010506273.tif 000016
【図１３】
2010506273.tif 000017
【図１４】
2010506273.tif 000018
【図１５】
2010506273.tif 000019
【図１６】
2010506273.tif 000020
【図１７】
2010506273.tif 000021
【図１８】
2010506273.tif 000022
【図１９】
2010506273.tif 000023
【図２０】
2010506273.tif 000024
【図２１】
2010506273.tif 000025
【図２２】
2010506273.tif 000026
【図２３】
2010506273.tif 000027
【図２４】
2010506273.tif 000028
【図２５】
2010506273.tif 000029
【図２６】
2010506273.tif 000030
【図２７】
2010506273.tif 000031
【図２８】
2010506273.tif 000032
【図２９】
2010506273.tif 000033
【図３０】
2010506273.tif 000034
【図３１】
2010506273.tif 000035
【図３２】
2010506273.tif 000036
【図３３】
2010506273.tif 000037
【図３４】
2010506273.tif 000038
【図３５】
2010506273.tif 000039
【図３６】
2010506273.tif 000040
【手続補正書】
【提出日】平成21年6月9日(2009.6.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
特定の位置識別子（＃１５）を有するメモリ位置を、複数のソース（Ｍ１、Ｍ３）からほぼ同時に更新することができる、アドレス指定されたメモリ更新における競合を検出する方法であって、前記方法は、
（ｉ）更新される前記メモリ位置の前記特定の識別子（＃１５）を含む、前記更新を実行する信号又はパケットのための更新フォーマットと、該メモリ位置が更新されるコンテンツ（２１１）と、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む、前記更新ソースの常駐更新カウント（８）とを利用し、
（ｉｉ）受信メモリ位置の各々について、前に受信した更新の更新カウント（７）を格納し、
（ｉｉｉ）前記受信メモリ位置に現在常駐する前記更新カウント（８）をいずれかの現在受信した更新信号又はパケットの前記更新カウント（７）と比較し、
（ｉｖ）前記比較された更新カウントが同じである場合に競合状態を示す、
ステップによって特徴付けられることを特徴とする方法。
【請求項２】
特定の位置識別子（＃１５）を有するメモリ位置を、複数のソース（Ｍ１、Ｍ３）からほぼ同時に更新することができる、アドレス指定されたメモリ更新における競合を解決する方法であって、前記方法は、
（ｉ）更新される前記メモリ位置の前記特定の識別子（＃１５）を含む、前記更新を実行する信号又はパケットのための更新フォーマットと、該メモリ位置が更新されるコンテンツ（２１１）と、現在の更新を含めて更新ソースが更新された一連の機会における更新メッセージの位置を示す数を含む、前記更新ソースの常駐更新カウント（８）とを利用し、
（ｉｉ）受信メモリ位置の各々について、前に受信した更新の更新カウント（７）を格納し、
（ｉｉｉ）前記受信メモリ位置に現在常駐する前記更新カウントをいずれかの現在受信した更新信号又はパケットの前記更新カウントと比較し、
（ｉｖ）前記現在受信した更新カウントが前記現在の常駐更新カウントより大きい場合、前記入ってくる信号又はパケットを実行せず、或いは、
（ｖ）前記現在受信した更新カウントが前記現在の常駐更新カウントより小さい場合、前記入ってくる信号又はパケットを実行し、或いは、
（ｖｉ）前記現在受信した更新カウントが前記現在の常駐更新カウントと等しい場合、競合の解決を開始する、
ステップによって特徴付けられることを特徴とする方法。
【請求項３】
前記入ってくる信号又はパケットを実行するステップは、前記特定のメモリ位置の前記コンテンツ（２１１）を前記入ってくる信号又はパケットのコンテンツ（９２）と置き換え、前記現在の常駐更新カウント（７）を該入ってくる信号又はパケットの前記カウント（８）と置き換えるステップを含むことを特徴とする、請求項２に記載の方法。
【請求項４】
前記開始される競合解決手順は、実質的に時間と無関係であることを特徴とする、請求項１又は請求項３のいずれか１項に記載の方法。
【請求項５】
前記競合解決手順は、
（ｖｉｉ）階層的順序（Ｍ１、Ｍ２、Ｍ３・・・Ｍｎ）が割り当てられる更新ソースの各々のアイデンティティを判断し、
（ｖｉｉｉ）前記階層的順序の一定方向のランクがより大きい又はより小さい前記ソースからの前記信号又はパケットを受け入れる、
ステップを含むことを特徴とする、請求項４に記載の方法。
【請求項６】
前記競合解決手順は、
（ｉｘ）実質的にランダムな数を各更新ソースに割り当て、
（ｘ）前記ランダム数の一定方向のランクがより大きい又はより小さい前記ソースからの前記更新信号又はパケットを受け入れる、
ステップを含むことを特徴とする、請求項４に記載の方法。
【請求項７】
（ｘｉ）その時々に前記カウント値をリセットする、
更なるステップにより特徴付けられる、請求項１乃至請求項６のいずれか１項に記載の方法。
【請求項８】
（ｘｉｉ）同じソースからの一連のメッセージについて、前記カウント値をインクリメントする又はデクリメントする、更なるステップにより特徴付けられる、請求項７に記載の方法。
【請求項９】
（ｘｉｉｉ）前記カウント値を１だけインクリメントする又はデクリメントする、
更なるステップにより特徴付けられる、請求項８に記載の方法。
【請求項１０】
（ｘｉｖ）エコー更新メッセージを生成させる可能性が高い環境において、前記カウント値を１より多くインクリメントする又はデクリメントする、
更なるステップにより特徴付けられる、請求項９に記載の方法。
【請求項１１】
（ｘｖ）所定の条件が生じる時々に、前記格納された更新カウントを統合する、
ステップにより特徴付けられる、請求項１乃至請求項１０のいずれか１項に記載の方法。
【請求項１２】
請求項１乃至請求項１１のいずれか１項に記載されるような前記方法を実行するように適合されたマルチ・コンピュータ・システムであって、前記システムの各コンピュータ（Ｍ１、Ｍ２、Ｍ３・・・Ｍｎ）は、前記複数のソースの１つを含むことを特徴とするマルチ・コンピュータ・システム。
【請求項１３】
請求項１２に記載されるような前記マルチ・コンピュータ・システムを形成するように他の同様のコンピュータと通信するように適合された単一のコンピュータ。
【請求項１４】
コンピュータにロードされたとき、前記コンピュータが請求項１乃至請求項１１のいずれか１項の方法を実行することを可能にするコンピュータ・プログラム製品。
【請求項１５】
請求項１乃至請求項１１のいずれか１項に記載されるような前記方法を用いる、アドレス指定されたメモリに格納された格納データ。
【国際調査報告】
2010506273.tif 000041
2010506273.tif 000042
2010506273.tif 000043
2010506273.tif 000044
2010506273.tif 000045