【文献】
勝原 二郎 他,「プラント制御用基幹データウェイシステム」,三菱電機技報,第65巻,第7号,三菱電機エンジニアリング株式会社,1991年7月25日,47頁〜52頁
(58)【調査した分野】(Int.Cl.,DB名)
第1の演算部と、前記第1の演算部に接続された第1のバスブリッジと、前記第1のバスブリッジ又は第1の演算部に接続された、共有データを含むデータを保持する第1の記憶部と、前記第1のバスブリッジに接続された第1の通信制御部を含む第1の計算機と、
第2の演算部と、前記第2の演算部に接続された第2のバスブリッジと、前記第2のバスブリッジ又は第2の演算部に接続された、共有データを含むデータを保持する第2の記憶部と、前記第2のバスブリッジに接続された第2の通信制御部を含む第2の計算機と、を備え、
前記第1の計算機は、前記共有データを変更するための変更データ、送信した計算機を指定する送信計算機識別情報及び送信権を持つ計算機を指定する送信権識別情報を含むデータ変更用データパケットと、前記送信計算機識別情報及び前記送信権識別情報は含むが前記変更データは含まない送信権変更用データパケットとがある第1の変更データパケットを、前記第1の通信制御部を経由して受信し、
前記送信権識別情報によって前記送信権を持つことが指定されていない場合、前記変更データにより前記第1の記憶部に記憶された共有メモリを書き換えるとともに、前記送信権識別情報を変更することなく前記第1の変更データパケットを前記第2の計算機へ送信し、
前記送信権識別情報によって前記送信権を持つことが指定されている場合、送信すべき第2の変更データパケットを、前記第1の通信制御部を経由して前記第2の計算機へ送信し、
前記送信権識別情報によって前記送信権を持つことが指定されかつ前記第2の変更データパケットの送信が終わった場合、前記識別情報により前記第2の計算機を指定し前記送信権変更用データパケットである第3の変更データパケットを前記第2の計算機へ送信する
ことを特徴とする計算機システム。
【背景技術】
【0002】
複数の計算機からなる計算機システムにおいて、複数の計算機が、個々に保有する共有メモリ間でデータ通信を行うことによって、データを共有することがある。このような共有メモリ制御方式では、ある計算機が保有する共有メモリのデータに変化があったとき、変化したデータを他の計算機の共有メモリに反映させるために、計算機間でデータ通信を行う。データ通信を用いて共有メモリの制御を実現する方式として、専用の共有メモリコントローラを使用する方式がある。
【0003】
図4は、複数の計算機を備え、計算機間でデータを共有する計算機システムの構成例を示すブロック図である。本計算機システムは、専用のハードウェアである共有メモリコントローラを備え、計算機毎に独立した共有メモリ間でデータ通信を行うことによってデータを共有する。本計算機システムは、数ミリ秒周期でリアルタイムに作動することができる。複数の計算機を備え、リアルタイム動作する計算機システムにとって、共有メモリ間のデータ通信による共有メモリ制御方式は、計算機間の複雑なデータ通信を単純化できるため、優れた方式である。
【0004】
図4の計算機システム300は、4台の計算機と、それぞれの計算機に専用の共有メモリコントローラ及び独立した共有メモリを備える。
図4を参照して、計算機システム300におけるメモリの共有方式の概要について説明する。
【0005】
計算機システム300は、計算機310、320、330、340を備える。計算機310、320、330、340の識別情報であるID(Identification Data)は、それぞれ、”1”、”2”、”3”、”4”である。
【0006】
計算機310は、CPU311、バスブリッジ312、メモリ313、共有メモリコントローラ314、共有メモリ315を含む。計算機320は、CPU321、バスブリッジ322、メモリ323、共有メモリコントローラ324、共有メモリ325を含む。計算機330は、CPU331、バスブリッジ332、メモリ333、共有メモリコントローラ334、共有メモリ335を含む。計算機340は、CPU341、バスブリッジ342、メモリ343、共有メモリコントローラ344、共有メモリ345を含む。以上のように、計算機310、320、330、340は、それぞれ独立した共有メモリ315、325、335、345を含む。
【0007】
次に、計算機310のCPU311で実行されているアプリケーションプログラムが、共有メモリ315のデータを変更する場合を例として、計算機システム300のメモリの共有方式の動作を説明する。
【0008】
初めに、CPU311は、バスブリッジ312を介して、共有メモリコントローラ314へ、共有メモリ315、325、335、345のデータを変更すべきアドレスである変更アドレスと、変更後のデータである変更データを転送する。共有メモリコントローラ314は、共有メモリ315の変更アドレスと変更データを含むパケットを、計算機320の共有メモリコントローラ324に転送するとともに、共有メモリ315の変更アドレスのデータを変更データに変更する。
【0009】
共有メモリコントローラ314から送信されたパケットは、共有メモリコントローラ324によって受信される。共有メモリコントローラ324は、変更アドレスと変更データを含むパケットを計算機330の共有メモリコントローラ334に転送するとともに、共有メモリ325の変更アドレスのデータを変更データに変更する。
【0010】
共有メモリコントローラ324から送信されたパケットは、共有メモリコントローラ334によって受信される。共有メモリコントローラ334は、変更アドレスと変更データを含むパケットを計算機340の共有メモリコントローラ344に転送するとともに、共有メモリ335の変更アドレスのデータを変更データに変更する。
【0011】
共有メモリコントローラ334から送信されたパケットは、共有メモリコントローラ344によって受信される。共有メモリコントローラ344は、変更アドレスと変更データのパケットを計算機310の共有メモリコントローラ314に転送するとともに、共有メモリ345の変更アドレスのデータを変更データに変更する。
【0012】
共有メモリコントローラ344から送信されたパケットは、共有メモリコントローラ314によって受信される。共有メモリコントローラ314は、受信したパケット、すなわち自身が送信したパケットを破棄する。
【0013】
以上のような動作によって、計算機システム300では、計算機310、320、330、340間でデータを共有する。
【0014】
共有メモリ間でデータ通信を行うことによって、複数の装置がデータを共有する技術は、例えば、特許文献1、2にも記載されている。
【発明を実施するための形態】
【0022】
初めに、本発明の基本的原理について説明する。
【0023】
本発明の計算機システムは、複数の計算機間のデータ通信において、各計算機が保有する共有メモリに変化があったとき、確実かつ速やかに、変化したデータを各計算機の共有メモリに反映させる。この制御により、計算機間のデータ通信の信頼性及び秘匿性が確保される。
【0024】
具体的には、次のように動作する。まず、予め複数の計算機間で、パケットを送受信する計算機の順番を決めておく。順番を規定するための計算機の特定は、各計算機に割り当てられたID等を用いる。
【0025】
変更要求元の、ある計算機が、他の計算機と共有する共有メモリのデータを変更するときは、変更する共有メモリのアドレスと、変更後のデータを包含するパケットを、次の順番の計算機に送信する。パケットを受信した計算機は、次の順番の計算機にパケットを送信するとともに、受信したパケットの内容に基づき、共有メモリ中の、指定されたアドレスのデータを変更する。
【0026】
パケットを受信した計算機は、次の順番の送信先の計算機が、変更要求元の計算機である場合は、そのパケットを破棄し、変更要求元の計算機には送信しない。
【0027】
複数の計算機で構成される計算機システムにおいて、共有メモリのデータを変更する場合は、計算機間の同期をとる必要がある。ある瞬間において、共有メモリの変更内容を包含するパケットを受け取っており、共有メモリが書き換えられた計算機と、まだパケットを受信しておらず、共有メモリが書き換えられていない計算機が存在する可能性がある。
【0028】
そこで、本発明においては、送信権を有する単一の計算機のIDをパケットに包含させ、共有メモリを書き換える権利を計算機単位で受け渡す。このように、送信権の受け渡しを行うことにより、共有メモリを使用する複数の計算機間の同期をとるとともに、複数の計算機が共有メモリの同じアドレスのデータを同時に書き換えることを防止する。
【0029】
計算機間の通信には通信ハブを使用してもよい。その際に、Ethernet(登録商標)ハブやUSBハブといった通信ハブが故障した場合は、通信経路を自動的に切り換えてもよい。正常動作している通信経路を用いることにより、通信線の断線や通信ハブの故障が発生しても共有メモリによるデータ通信を継続させることができるので、信頼性が実現される。
【0030】
あるいは、計算機間の通信に通信ハブを使用せず、計算機間の通信線を多重化してもよい。通信線の二重化により、通信線の断線や通信コントローラの故障が発生しても、共有メモリによるデータ通信を継続させることができるので、信頼性が実現される。
【0031】
また、通信を用いた共有メモリの制御方式では、もともとメモリの一部のみがパケットで送信される。そのため、パケットを傍受しても通信内容の判別が困難である。さらに、パケットに暗号化コードを追加し、ベースアドレスとデータを送信する場合にデータが並ぶ順番をランダムに変更してもよい。このような暗号化により、通信データの秘匿性を一層高めることができる。
(第1の実施形態)
図面を参照し、本発明の第1の実施形態の、共有メモリを備える計算機システムの概要について説明する。
(第1の実施形態の構成)
図1は、本発明の第1の実施形態の計算機システムの構成を示すブロック図である。本実施形態の計算機システムは、4台の計算機を備える場合の例である。
【0032】
本実施形態の計算機システム100は、4台の計算機110、120、130、140、及び第1の通信ハブ151、第2の通信ハブ152を備える。計算機110、120、130、140のそれぞれのIDは、”1”、”2”、”3”、”4”である。
【0033】
計算機110は、CPU111、バスブリッジ112、メモリ113、通信コントローラ114を含む。計算機120は、CPU121、バスブリッジ122、メモリ123、通信コントローラ124を含む。計算機130は、CPU131、バスブリッジ132、メモリ133、通信コントローラ134を含む。計算機140は、CPU141、バスブリッジ142、メモリ143、通信コントローラ144を含む。
【0034】
メモリ113、123、133、143は、計算機110、120、130、140間で共有される共有メモリを含む。すなわち、メモリ113、123、133、143は、共有メモリによって共有される共有データを含むデータを保持する。
【0035】
通信コントローラ114、124、134、144としては、Ethernet通信コントローラやUSB通信コントローラなどが使用される。
【0036】
第1の通信ハブ151、第2の通信ハブ152は、通信コントローラ114、124、134、144の相互のデータ通信を二重化する。第1の通信ハブ151、第2の通信ハブ152としては、Ethernet通信スイッチングハブやUSBハブなどが使用される。
【0037】
図2は、計算機110、120、130、140間で送受信されるパケットを構成する、各種のデータを示す。本パケットは、共有メモリ中の変更対象のデータが変更された後に保持される新しいデータ、すなわち「変更データ」を含む。以降、本パケットを「変更データパケット」という。
【0038】
送信データサイズ11は、変更データパケットのデータ長を示す。
【0039】
パケットヘッダ12は、変更データパケットの固有ヘッダを示す。
【0040】
送信計算機ID13は、変更データパケットを送信した計算機のIDを示す。従って、送信計算機ID13は、計算機110、120、130、140が受信した変更データパケットを他の計算機に転送するときに、転送を行う計算機のIDに書き換えられる。
【0041】
送信権フラグ14は、変更データパケットを送信する権利を有する計算機のIDを示す。
【0042】
暗号化コード15は、その時点のデータが変更データに変更されるメモリ113、123、133、143のベースアドレス、及び変更データの送信順序をランダムに入れ替えるときの送信順序を指定するための暗号化コードを示す。例えば、暗号化コード15が32bitの場合には、変更データの送信順序を規定する相対アドレスの組合せが、2の32乗(4,294,967,296)通り指定可能である。なお、暗号化コード15と、変更データの送信順序を規定する相対アドレスの組合せとの対応は、所定の暗号表(図示なし)として、計算機110、120、130、140の各々が保持する。
【0043】
ベースアドレス16は、変更のデータが上書きされるメモリ113、123、133、143のベースアドレスを示す。
【0044】
変更データサイズ17は、変更データのサイズを示す。
【0045】
変更データ18は、上記の変更データ、すなわち共有メモリにおいて変更対象とするデータの変更後のデータを示す。
【0046】
チェックサム19は、パケットに含まれるデータの誤りを検出するためのチェックサムを示す。
(第1の実施形態の動作)
次に、計算機システム100において、通信ハブを使用して共有メモリを制御する場合の動作について、
図1を使用して説明する。
【0047】
以下に、IDが”1”の計算機110のCPU111で実行されているアプリケーションプログラムが、メモリ113上に確保している共有データを変更する場合を例として説明する。
【0048】
CPU111は、
図2の送信権フラグ14で指定されたIDが”1”である場合に、変更データパケットを、IDが”2” の計算機120の通信コントローラ124あてに送信する。その際、変更データパケットは、バスブリッジ112、及び通信コントローラ114を経由して送信される。その直後に、CPU111は、変更データパケットに含まれる変更データ18の内容を、メモリ113上に確保されている共有メモリに保存する。
【0049】
CPU111は、送信権フラグ14で指定されたIDが”1”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ14によりIDを”2”に指定した変更データパケットを送信する。すなわち、変更データパケットを送信する権利が、計算機110から計算機120へ移転される。
【0050】
CPU111は、送信権フラグ14で指定されたIDが”1”でない場合は、変更データパケットを、送信権フラグ14を変更することなく、計算機IDが”2”の計算機120の通信コントローラ124あてに送信する。その際、変更データパケットは、バスブリッジ112、及び通信コントローラ114を経由して送信される。その直後に、CPU111は、変更データパケットに含まれる変更データ18の内容を、メモリ113上に確保されている共有メモリに保存する。
【0051】
通信コントローラ114から送信された変更データパケットは、通常は、二重化された通信ハブの一方である第1の通信ハブ151を経由して、通信コントローラ124に受信される。そして、変更データパケットは、バスブリッジ122を介して、CPU121に受信される。
【0052】
CPU121は、送信権フラグ14で指定されたIDが”2”でない場合は、変更データパケットを、送信権フラグ14を変更することなく、計算機IDが”3”の計算機130の通信コントローラ134あてに送信する。その際、変更データパケットは、バスブリッジ122、及び通信コントローラ124を経由して送信される。その直後に、CPU121は、変更データパケットに含まれる変更データ18の内容を、メモリ123上に確保されている共有メモリに保存する。
【0053】
CPU121は、送信権フラグ14で指定されたIDが”2”である場合は、送信するべき変更データパケットを、計算機IDが”3”の計算機130の通信コントローラ134あてに送信する。その際、変更データパケットは、バスブリッジ122、及び通信コントローラ124を経由して送信される。その直後に、CPU121は、変更データパケットに含まれる変更データ18の内容を、メモリ123上に確保されている共有メモリに保存する。
【0054】
CPU121は、送信権フラグ14で指定されたIDが”2”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ14によりIDを”3”に指定した変更データパケットを送信する。すなわち、変更データパケットを送信する権利が、計算機120から計算機130へ移転される。
【0055】
通信コントローラ124から送信された変更データパケットは、通常は、第1の通信ハブ151を経由して、通信コントローラ134に受信される。そして、変更データパケットは、バスブリッジ132を介して、CPU131に受信される。
【0056】
CPU131は、送信権フラグ14で指定されたIDが”3”でない場合は、変更データパケットを、送信権フラグ14を変更することなく、計算機IDが”4”計算機140の通信コントローラ144あてに送信する。その際、変更データパケットは、バスブリッジ132、及び通信コントローラ134を経由して送信される。その直後に、CPU131は、変更データパケットに含まれる変更データ18の内容を、メモリ133上に確保されている共有メモリに保存する。
【0057】
CPU131は、送信権フラグ14で指定されたIDが”3”である場合は、送信するべき変更データパケットを、計算機IDが”4”の計算機140の通信コントローラ144あてに送信する。その際、変更データパケットは、バスブリッジ132、及び通信コントローラ134を経由して送信される。その直後に、CPU131は、変更データパケットに含まれる変更データ18の内容を、メモリ133上に確保されている共有メモリに保存する。
【0058】
CPU131は、送信権フラグ14で指定されたIDが”3”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ14によりIDを”4”に指定した変更データパケットを送信する。すなわち、変更データパケットを送信する権利が、計算機130から計算機140へ移転される。
【0059】
通信コントローラ134から送信された変更データパケットは、通常は、第1の通信ハブ151を経由して、通信コントローラ144に受信される。そして、変更データパケットは、バスブリッジ142を介して、CPU141に受信される。
【0060】
CPU141は、送信権フラグ14で指定されたIDが”4”でない場合は、変更データパケットをどこへも送信しない。そして、CPU141は、変更データパケットに含まれる変更データ18の内容を、メモリ143上に確保されている共有メモリに保存する。
【0061】
CPU141は、送信権フラグ14で指定されたIDが”4”である場合は、送信するべき変更データパケットを、計算機IDが”1”の計算機110の通信コントローラ114あてに送信する。その際、変更データパケットは、バスブリッジ142、及び通信コントローラ144を経由して送信される。その直後に、CPU131は、変更データパケットに含まれる変更データ18の内容を、メモリ133上に確保されている共有メモリに保存する。
【0062】
CPU141は、送信権フラグ14で指定されたIDが”4”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ14によりIDを”1”に指定した変更データパケットを送信する。すなわち、変更データパケットを送信する権利が、計算機140から計算機110へ移転される。
【0063】
もし、第1の通信ハブ151を介した通信が失敗した場合、CPU111、121、131、141は、二重化された通信ハブの他方である第2の通信ハブ152に送信先を自動的に切り換えて、計算機110、120、130、140間の通信を続行する。
【0064】
共有メモリ間の通信を用いたデータ共有方式は、もともとメモリの一部をパケットで送信するので、それを傍受しても通信内容の判別が困難である。そこで、さらに、ベースアドレスとデータを送信する際に、
図2の変更データパケットに含まれる暗号化コード15を用いて、データが並ぶ順番をランダムに変更してもよい。この暗号化により、通信データ、すなわち変更データの秘匿性を高めることができる。
【0065】
例えば、暗号化コード15が32bitで、00 00 00 00(H)の場合、ベースアドレスとデータを送信する場合にデータが並ぶ順番は変更しない。
【0066】
例えば、暗号化コード15が32bitで、FF FF FF FF(H)の場合、ベースアドレスは予め決められた暗号表の値を加算した値とし、変更データは、予め決められた暗号表の暗号化コードの数値に対応付けて指定された順番する通りに並べ替えて送信される。
【0067】
なお、
図1の計算機システムにおいて、通信ハブを2台備えること、及び計算機110、120、130、140間の通信回線が二重化されていることは必須ではない。例えば、計算機110、120、130、140間の通信回線に十分な信頼性がある場合には、通信回線は二重化される必要はない。
【0068】
さらに、
図2の変更データパケットが備える各種データは、すべてが必須のものではない。
【0069】
送信データサイズ11は、例えば、変更データパケットのデータ長を固定することができる場合は、省略することができる。また、パケットヘッダ12も、例えば、パケットを受信した装置が、受信したパケットが変更データパケットであることを他の方法で識別できる場合は、省略することができる。
【0070】
さらに、暗号化コード15も、例えば、盗聴の可能性がない場合には省略することができる。
【0071】
また、ベースアドレス16も、例えば、変更するアドレス領域を固定することができる場合は、省略することができる。変更データサイズ17は、例えば、変更データのサイズを固定することができる場合は、省略することができる。チェックサム19も、例えば、通信中のエラーを無視できる場合には省略することができる。
【0072】
以上のように、何らかの条件を設定することによって、送信データサイズ11、パケットヘッダ12、暗号化コード15、ベースアドレス16、変更データサイズ17チェックサム19は省略することができる。
【0073】
以上説明したように、本実施形態の計算機システムは、以下のような効果を奏する。
【0074】
以上のように、本実施形態の計算機システムは、計算機を構成するCPU、メモリ、通信コントローラ(Ethernet通信コントローラやUSB通信コントローラなど)だけを使用し、ソフトウェアで複数の計算機のメモリ上に共有メモリを構築する。共有メモリのデータを書き換える場合は、変更するデータのアドレスとデータの内容をパケット化して、計算機間をリレーしながら共有メモリを書き換えていく。
【0075】
そのため、本実施形態の計算機システムは、専用ハードウェアは不要で、汎用計算機で作動するソフトウェアのみで機能を実現することができる。従って、設計変更に対する柔軟性の向上やコストダウンを実現することができる。
【0076】
また、本実施形態の計算機システムは、共有メモリを書き換える送信権のフラグを計算機間で受け渡す。従って、複数の計算機間で共有メモリの書き換えの同期をとるとともに、複数の計算機が同時に同じアドレスのデータを書き換えるのを防止することができる。
【0077】
本実施形態の計算機システムでは、複数の計算機のメモリ上に構築した共有メモリのデータを書き換えるために、計算機間のデータ通信を行う。計算機間の通信に用いる回線は二重化されてもよい。この場合、EthernetハブやUSBハブといった通信ハブが故障した場合には、通信経路を自動的に切り換える。従って、通信線の断線や通信ハブの故障といった障害に対して信頼性を向上することができる。
【0078】
また、本実施形態の計算機システムでは、メモリの一部のみをパケットを用いて送信する。そのため、パケット傍受しても通信内容を判別することは困難である。さらに、本実施形態の計算機システムでは、パケットに暗号化コードを追加することができる。この場合、ベースアドレスとデータを送信する場合にデータが並ぶ順番をランダムに変更することができる。従って、本実施形態の計算機システムは、通信データの秘匿性を高めることができる。
(第2の実施形態)
本発明の計算機システムは、通信ハブを用いずに実現することができる。第2の実施形態では、通信ハブを使用しない共有メモリ制御装置の例を示す。
(第2の実施形態の構成)
図3は、本発明の第1の実施形態の計算機システムの構成を示すブロック図である。本実施形態の計算機システム200は、4台の計算機110、120、130、140を備える。計算機110、120、130、140のそれぞれのIDは、”1”、”2”、”3”、”4”である。このように、本実施形態の計算機システム200は、第1の実施形態の計算機システム100から、第1の通信ハブ151、第2の通信ハブ152を除いたものである。計算機110、120、130、140の構成及びこれらの内部構成は、計算機システム100と同等なので、説明は省略する。
【0079】
ただし、通信コントローラ114、124、134、144は、計算機システム200では、計算機システム100とは異なり、通信ハブを介さず、直接、通信を行う。計算機110、120、130、140間で送受信されるパケットは、
図2の変更データパケットである。
(第2の実施形態の動作)
次に、計算機システム200において、通信ハブを使用せず共有メモリを制御する場合の動作について、
図3を使用して説明する。
【0080】
以下に、IDが”1”の計算機110のCPU111で実行されているアプリケーションプログラムが、メモリ113上に確保している共有データを変更する場合を例として説明する。
【0081】
CPU111は、
図2の送信権フラグ14で指定されたIDが”1”である場合に、変更データパケットを、IDが”2”の計算機120の通信コントローラ124あてに送信する。その際、変更データパケットは、バスブリッジ112、及び通信コントローラ114を経由して送信される。
【0082】
CPU111は、送信権フラグ14で指定されたIDが”1”でない場合は、計算機IDが”2”の計算機120の通信コントローラ124あてに送信する。その際、変更データパケットは、バスブリッジ112、及び通信コントローラ114を経由して送信される。その直後に、CPU111は、変更データパケットに含まれる変更データ18の内容を、メモリ113上に確保されている共有メモリに保存する。
【0083】
CPU111は、通信コントローラ124あての変更データパケットの送信に失敗した場合、IDが”3” の計算機130の通信コントローラ134あてに変更データパケットを送信する。CPU111は、通信コントローラ134あての変更データパケットの送信にも失敗した場合、IDが”4” の計算機140の通信コントローラ144あてに変更データパケットを送信する。
【0084】
CPU111は、送信権フラグ14で指定されたIDが”1”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ14のIDを送信可能な計算機のID(2、3、又は4)に指定した変更データパケットを送信する。
【0085】
通信コントローラ124、通信コントローラ134、又は通信コントローラ144への変更データパケットの送信の直後に、CPU111は、変更データパケットに含まれる変更データ18の内容を、メモリ113上に確保されている共有メモリに保存する。
【0086】
通信コントローラ114から送信された変更データパケットは、通常は、通信コントローラ124に受信される。そして、変更データパケットは、バスブリッジ122を介して、CPU121に受信される。
【0087】
CPU121は、送信権フラグ14で指定されたIDが”2”でない場合は、変更データパケットの送信計算機IDを確認する。そして、CPU121は、送信計算機IDが”1”、すなわち変更データパケットの送信元が通信コントローラ114の場合は、通信コントローラ124に対し、変更データパケットを、計算機IDが”3”の計算機130の通信コントローラ134あてに送信する。
【0088】
CPU121は、送信権フラグ14で指定されたIDが”2”である場合は、送信するべき変更データパケットを、計算機IDが”3”の計算機130の通信コントローラ134あてに送信する。その際、変更データパケットは、バスブリッジ122、及び通信コントローラ124を経由して送信される。その直後に、CPU121は、変更データパケットに含まれる変更データ18の内容を、メモリ123上に確保されている共有メモリに保存する。
【0089】
CPU121は、通信コントローラ134あての変更データパケットの送信に失敗した場合、通信コントローラ144あてに変更データパケットを送信する。
【0090】
CPU121は、通信コントローラ144あての変更データパケットの送信にも失敗した場合、通信コントローラ114あてに変更データパケットを送信する。
【0091】
通信コントローラ134、通信コントローラ144、又は通信コントローラ114への変更データパケットの送信の直後に、CPU121は、変更データパケットに含まれる変更データ18の内容を、メモリ123上に確保されている共有メモリに保存する。
【0092】
CPU121は、送信権フラグ14で指定されたIDが”2”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ14のIDを送信可能な計算機のID(3、4、又は1)に指定した変更データパケットを送信する。
【0093】
通信コントローラ124から送信された変更データパケットは、通常は、通信コントローラ134に受信される。そして、変更データパケットは、バスブリッジ132を介して、CPU131に受信される。
【0094】
CPU131は、送信権フラグ14で指定されたIDが”3”でない場合は、変更データパケットの送信計算機IDを確認する。そして、CPU131は、送信計算機IDが”1”、すなわち変更データパケットの送信元が通信コントローラ114の場合は、変更データパケットを、計算機IDが”4”の計算機140の通信コントローラ144あてに送信する。その際、変更データパケットは、バスブリッジ132、及び通信コントローラ134を経由して送信される。その直後に、CPU131は、変更データパケットに含まれる変更データ18の内容を、メモリ133上に確保されている共有メモリに保存する。
【0095】
CPU131は、送信権フラグ14で指定されたIDが”3”である場合は、送信するべき変更データパケットを、計算機IDが”4”の計算機140の通信コントローラ144あてに送信する。その際、変更データパケットは、バスブリッジ132、及び通信コントローラ134を経由して送信される。その直後に、CPU131は、変更データパケットに含まれる変更データ18の内容を、メモリ133上に確保されている共有メモリに保存する。
【0096】
CPU131は、通信コントローラ144あての変更データパケットの送信に失敗した場合、通信コントローラ114あてに変更データパケットを送信する。
【0097】
CPU131は、通信コントローラ114あての変更データパケットの送信にも失敗した場合、通信コントローラ124あてに変更データパケットを送信する。
【0098】
CPU131は、送信権フラグ14で指定されたIDが”3”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ14のIDを送信可能な計算機のID(4、1、又は2)に指定した変更データパケットを送信する。
【0099】
通信コントローラ134から送信された変更データパケットは、通常は、通信コントローラ144受信される。そして、変更データパケットは、CPU141に受信される。
【0100】
CPU141は、送信権フラグ14で指定されたIDが”4”でない場合は、変更データパケットの送信計算機IDを確認する。そして、CPU141は、送信計算機IDが”1”、すなわち変更デーパケットの送信元が通信コントローラ114の場合は、変更データパケットをどこへも送信しない。そして、CPU141は、変更データパケットに含まれる変更データ18の内容を、メモリ143上に確保されている共有メモリに保存する。
【0101】
CPU141は、送信権フラグ14で指定されたIDが”4”である場合は、送信するべき変更データパケットを、計算機IDが”1”の計算機110の通信コントローラ114あてに送信する。その際、変更データパケットは、バスブリッジ142、及び通信コントローラ144を経由して送信される。その直後に、CPU141は、変更データパケットに含まれる変更データ18の内容を、メモリ143上に確保されている共有メモリに保存する。
【0102】
CPU141は、通信コントローラ114あての変更データパケットの送信に失敗した場合、通信コントローラ124あてに変更データパケットを送信する。
【0103】
CPU141は、通信コントローラ124あての変更データパケットの送信にも失敗した場合、通信コントローラ134あてに変更データパケットを送信する。
【0104】
CPU141は、送信権フラグ14で指定されたIDが”4”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ14のIDを送信可能な計算機のID(1、2、又は3)に指定した変更データパケットを送信する。
【0105】
なお、
図3の計算機システムにおいても、計算機110、120、130、140間の通信回線が二重化されていることは必須ではない。例えば、計算機110、120、130、140間の通信回線に十分な信頼性がある場合には、通信回線は二重化される必要はない。
【0106】
以上のように、第2の実施形態の計算機システムも、計算機間のデータ通信を用いて共有メモリを制御する。その際、専用ハードウェアは不要で、汎用計算機で作動するソフトウェアのみで機能を実現することができる。従って、設計変更に対する柔軟性の向上やコストダウンを実現することができる。
【0107】
また、送信権のフラグの受け渡しも可能なので、共有メモリの書き換えの同期をとるとともに、複数の計算機が同時に同じアドレスのデータを書き換えるのを防止することができる。
【0108】
さらに、必要に応じて、通信経路の二重化や暗号化にも対応することもできるので、信頼性や秘匿性を向上することができる。