(57)【要約】【課題】専用ハードウェアを用いずにメモリを共有することが可能で、経済性が高い計算機システムを提供する。【解決手段】第１の演算部と、第１の演算部に接続された第１のバスブリッジと、第１のバスブリッジ又は第1の演算部に接続された、共有データを含むデータを保持する第１の記憶部と、第１のバスブリッジに接続された第１の通信制御部を含む第１の計算機と、第２の演算部と、第２の演算部に接続された第２のバスブリッジと、第２のバスブリッジ又は第２の演算部に接続された、共有データを含むデータを保持する第２の記憶部と、第２のバスブリッジ及び第１の通信制御部に接続された第２の通信制御部を含む第２の計算機を備え、第１の計算機は、共有データを変更するための変更データ、及び送信権を持つ計算機を指定する識別情報を含む変更データパケットを、識別情報によって送信権を持つことが指定されているときに、第２の計算機へ送信する。【選択図】      図１
2014052786.tif 000002
【特許請求の範囲】
【請求項１】
第１の演算部と、前記第１の演算部に接続された第１のバスブリッジと、前記第１のバスブリッジ又は第１の演算部に接続された、共有データを含むデータを保持する第１の記憶部と、前記第１のバスブリッジに接続された第１の通信制御部を含む第１の計算機と、
第２の演算部と、前記第２の演算部に接続された第２のバスブリッジと、前記第２のバスブリッジ又は第２の演算部に接続された、前記共有データを含むデータを保持する第２の記憶部と、前記第２のバスブリッジ及び前記第１の通信制御部に接続された第２の通信制御部を含む第２の計算機を備え、
前記第１の計算機は、前記共有データを変更するための変更データ、及び送信権を持つ計算機を指定する識別情報を含む変更データパケットを、前記識別情報によって前記送信権を持つことが指定されているときに、前記第２の計算機へ送信する
ことを特徴とする計算機システム。
【請求項２】
前記変更データパケットは、前記変更データを暗号化するための暗号化情報を含む
ことを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記第１の通信制御部と前記第２の通信制御部との間が複数の通信回線によって接続されている
ことを特徴とする請求項１又は２に記載の計算機システム。
【請求項４】
前記複数の通信回線の各々は、ハブを介して、前記第１の通信制御部と前記第２の通信制御部を接続している
ことを特徴とする請求項３に記載の計算機システム。
【請求項５】
第１の演算部と、
前記第１の演算部に接続された第１のバスブリッジと、
前記第１のバスブリッジ又は第１の演算部に接続された、共有データを含むデータを保持する第１の記憶部と、
前記第１のバスブリッジに接続された第１の通信制御部を含む第１の計算機を備え、
前記共有データを変更するための変更データ、及び送信権を持つ計算機を指定する識別情報を含む変更データパケットを、前記識別情報によって前記送信権を持つことが指定されているときに、第２の演算部と、前記第２の演算部に接続された第２のバスブリッジと、前記第２のバスブリッジ又は第２の演算部に接続された、前記共有データを含むデータを保持する第２の記憶部と、前記第２のバスブリッジ及び前記第１の通信制御部に接続された第２の通信制御部を含む第２の計算機に送信する
ことを特徴とする計算機。
【請求項６】
共有データを含むデータを保持する第１の記憶部を含む第１の計算機から、前記共有データを含むデータを保持する第２の記憶部を含む第２の計算機へ、前記共有データを変更するための変更データ、及び送信権を持つ計算機を指定する識別情報を含む変更データパケットを、前記第１の計算機が前記送信権を持つときに送信する
ことを特徴とする共有メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機、計算機システム及び共有メモリ制御方法に関し、特に、データ通信を用いてメモリを共有する計算機、計算機システム及び共有メモリ制御方法に関する。
【背景技術】
【０００２】
複数の計算機からなる計算機システムにおいて、複数の計算機が、個々に保有する共有メモリ間でデータ通信を行うことによって、データを共有することがある。このような共有メモリ制御方式では、ある計算機が保有する共有メモリのデータに変化があったとき、変化したデータを他の計算機の共有メモリに反映させるために、計算機間でデータ通信を行う。データ通信を用いて共有メモリの制御を実現する方式として、専用の共有メモリコントローラを使用する方式がある。
【０００３】
図４は、複数の計算機を備え、計算機間でデータを共有する計算機システムの構成例を示すブロック図である。本計算機システムは、専用のハードウェアである共有メモリコントローラを備え、計算機毎に独立した共有メモリ間でデータ通信を行うことによってデータを共有する。本計算機システムは、数ミリ秒周期でリアルタイムに作動することができる。複数の計算機を備え、リアルタイム動作する計算機システムにとって、共有メモリ間のデータ通信による共有メモリ制御方式は、計算機間の複雑なデータ通信を単純化できるため、優れた方式である。
【０００４】
図４の計算機システム３００は、４台の計算機と、それぞれの計算機に専用の共有メモリコントローラ及び独立した共有メモリを備える。図４を参照して、計算機システム３００におけるメモリの共有方式の概要について説明する。
【０００５】
計算機システム３００は、計算機３１０、３２０、３３０、３４０を備える。計算機３１０、３２０、３３０、３４０の識別情報であるＩＤ（Identification Data）は、それぞれ、”１”、”２”、”３”、”４”である。
【０００６】
計算機３１０は、ＣＰＵ３１１、バスブリッジ３１２、メモリ３１３、共有メモリコントローラ３１４、共有メモリ３１５を含む。計算機３２０は、ＣＰＵ３２１、バスブリッジ３２２、メモリ３２３、共有メモリコントローラ３２４、共有メモリ３２５を含む。計算機３３０は、ＣＰＵ３３１、バスブリッジ３３２、メモリ３３３、共有メモリコントローラ３３４、共有メモリ３３５を含む。計算機３４０は、ＣＰＵ３４１、バスブリッジ３４２、メモリ３４３、共有メモリコントローラ３４４、共有メモリ３４５を含む。以上のように、計算機３１０、３２０、３３０、３４０は、それぞれ独立した共有メモリ３１５、３２５、３３５、３４５を含む。
【０００７】
次に、計算機３１０のＣＰＵ３１１で実行されているアプリケーションプログラムが、共有メモリ３１５のデータを変更する場合を例として、計算機システム３００のメモリの共有方式の動作を説明する。
【０００８】
初めに、ＣＰＵ３１１は、バスブリッジ３１２を介して、共有メモリコントローラ３１４へ、共有メモリ３１５、３２５、３３５、３４５のデータを変更すべきアドレスである変更アドレスと、変更後のデータである変更データを転送する。共有メモリコントローラ３１４は、共有メモリ３１５の変更アドレスと変更データを含むパケットを、計算機３２０の共有メモリコントローラ３２４に転送するとともに、共有メモリ３１５の変更アドレスのデータを変更データに変更する。
【０００９】
共有メモリコントローラ３１４から送信されたパケットは、共有メモリコントローラ３２４によって受信される。共有メモリコントローラ３２４は、変更アドレスと変更データを含むパケットを計算機３３０の共有メモリコントローラ３３４に転送するとともに、共有メモリ３２５の変更アドレスのデータを変更データに変更する。
【００１０】
共有メモリコントローラ３２４から送信されたパケットは、共有メモリコントローラ３３４によって受信される。共有メモリコントローラ３３４は、変更アドレスと変更データを含むパケットを計算機３４０の共有メモリコントローラ３４４に転送するとともに、共有メモリ３３５の変更アドレスのデータを変更データに変更する。
【００１１】
共有メモリコントローラ３３４から送信されたパケットは、共有メモリコントローラ３４４によって受信される。共有メモリコントローラ３４４は、変更アドレスと変更データのパケットを計算機３１０の共有メモリコントローラ３１４に転送するとともに、共有メモリ３４５の変更アドレスのデータを変更データに変更する。
【００１２】
共有メモリコントローラ３４４から送信されたパケットは、共有メモリコントローラ３１４によって受信される。共有メモリコントローラ３１４は、受信したパケット、すなわち自身が送信したパケットを破棄する。
【００１３】
以上のような動作によって、計算機システム３００では、計算機３１０、３２０、３３０、３４０間でデータを共有する。
【００１４】
共有メモリ間でデータ通信を行うことによって、複数の装置がデータを共有する技術は、例えば、特許文献１、２にも記載されている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平０９−２７０７９８号公報  （第８頁、図１）
【特許文献２】特開平０７−１５２６４０号公報  （第５−６頁、図３）
【発明の概要】
【発明が解決しようとする課題】
【００１６】
計算機システム３００のデータ共有方式は、専用の共有メモリコントローラと、独立した共有メモリを必要とする。そのため、計算機の台数が多くなるほど、データを共有するためのデータ通信に必要なハードウェアのコストが高くなるという課題がある。
（発明の目的）
本発明は上記のような技術的課題に鑑みて行われたもので、専用ハードウェアを用いずにメモリを共有することが可能で、経済性が高い計算機、計算機システム及び共有メモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明の計算機システムは、第１の演算部と、第１の演算部に接続された第１のバスブリッジと、第１のバスブリッジ又は第1の演算部に接続された、共有データを含むデータを保持する第１の記憶部と、第１のバスブリッジに接続された第１の通信制御部を含む第１の計算機と、第２の演算部と、第２の演算部に接続された第２のバスブリッジと、第２のバスブリッジ又は第２の演算部に接続された、共有データを含むデータを保持する第２の記憶部と、第２のバスブリッジ及び第１の通信制御部に接続された第２の通信制御部を含む第２の計算機を備え、第１の計算機は、共有データを変更するための変更データ、及び送信権を持つ計算機を指定する識別情報を含む変更データパケットを、識別情報によって送信権を持つことが指定されているときに、第２の計算機へ送信することを特徴とする。
【００１８】
本発明の計算機は、第１の演算部と、第１の演算部に接続された第１のバスブリッジと、第１のバスブリッジ又は第１の演算部に接続された、共有データを含むデータを保持する第１の記憶部と、第１のバスブリッジに接続された第１の通信制御部を含む第１の計算機を備え、共有データを変更するための変更データ、及び送信権を持つ計算機を指定する識別情報を含む変更データパケットを、識別情報によって送信権を持つことが指定されているときに、第２の演算部と、第２の演算部に接続された第２のバスブリッジと、第２のバスブリッジ又は第２の演算部に接続された、共有データを含むデータを保持する第２の記憶部と、第２のバスブリッジ及び第１の通信制御部に接続された第２の通信制御部を含む第２の計算機に送信することを特徴とする。
【００１９】
本発明の共有メモリ制御方法は、共有データを含むデータを保持する第１の記憶部を含む第１の計算機から、共有データを含むデータを保持する第２の記憶部を含む第２の計算機へ、共有データを変更するための変更データ、及び送信権を持つ計算機を指定する識別情報を含む変更データパケットを、第１の計算機が送信権を持つときに送信することを特徴とする。
【発明の効果】
【００２０】
本発明の計算機、計算機システム及び共有メモリ制御方法は、専用ハードウェアが不要で、汎用計算機で作動するソフトウェアのみでメモリの共有機能を実現することができる。従って、経済性が高いという効果がある。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施形態の計算機システムの構成を示すブロック図である。
【図２】本発明の第１の実施形態の計算機システムにおいて送受信されるパケットのデータの構成を示す図である。
【図３】本発明の第２の実施形態の計算機システムの構成を示すブロック図である。
【図４】本発明の背景技術の計算機システムの構成を示すブロック図である。
【発明を実施するための形態】
【００２２】
初めに、本発明の基本的原理について説明する。
【００２３】
本発明の計算機システムは、複数の計算機間のデータ通信において、各計算機が保有する共有メモリに変化があったとき、確実かつ速やかに、変化したデータを各計算機の共有メモリに反映させる。この制御により、計算機間のデータ通信の信頼性及び秘匿性が確保される。
【００２４】
具体的には、次のように動作する。まず、予め複数の計算機間で、パケットを送受信する計算機の順番を決めておく。順番を規定するための計算機の特定は、各計算機に割り当てられたＩＤ等を用いる。
【００２５】
変更要求元の、ある計算機が、他の計算機と共有する共有メモリのデータを変更するときは、変更する共有メモリのアドレスと、変更後のデータを包含するパケットを、次の順番の計算機に送信する。パケットを受信した計算機は、次の順番の計算機にパケットを送信するとともに、受信したパケットの内容に基づき、共有メモリ中の、指定されたアドレスのデータを変更する。
【００２６】
パケットを受信した計算機は、次の順番の送信先の計算機が、変更要求元の計算機である場合は、そのパケットを破棄し、変更要求元の計算機には送信しない。
【００２７】
複数の計算機で構成される計算機システムにおいて、共有メモリのデータを変更する場合は、計算機間の同期をとる必要がある。ある瞬間において、共有メモリの変更内容を包含するパケットを受け取っており、共有メモリが書き換えられた計算機と、まだパケットを受信しておらず、共有メモリが書き換えられていない計算機が存在する可能性がある。
【００２８】
そこで、本発明においては、送信権を有する単一の計算機のＩＤをパケットに包含させ、共有メモリを書き換える権利を計算機単位で受け渡す。このように、送信権の受け渡しを行うことにより、共有メモリを使用する複数の計算機間の同期をとるとともに、複数の計算機が共有メモリの同じアドレスのデータを同時に書き換えることを防止する。
【００２９】
計算機間の通信には通信ハブを使用してもよい。その際に、Ethernet（登録商標）ハブやＵＳＢハブといった通信ハブが故障した場合は、通信経路を自動的に切り換えてもよい。正常動作している通信経路を用いることにより、通信線の断線や通信ハブの故障が発生しても共有メモリによるデータ通信を継続させることができるので、信頼性が実現される。
【００３０】
あるいは、計算機間の通信に通信ハブを使用せず、計算機間の通信線を多重化してもよい。通信線の二重化により、通信線の断線や通信コントローラの故障が発生しても、共有メモリによるデータ通信を継続させることができるので、信頼性が実現される。
【００３１】
また、通信を用いた共有メモリの制御方式では、もともとメモリの一部のみがパケットで送信される。そのため、パケットを傍受しても通信内容の判別が困難である。さらに、パケットに暗号化コードを追加し、ベースアドレスとデータを送信する場合にデータが並ぶ順番をランダムに変更してもよい。このような暗号化により、通信データの秘匿性を一層高めることができる。
（第１の実施形態）
図面を参照し、本発明の第１の実施形態の、共有メモリを備える計算機システムの概要について説明する。
（第１の実施形態の構成）
図１は、本発明の第１の実施形態の計算機システムの構成を示すブロック図である。本実施形態の計算機システムは、４台の計算機を備える場合の例である。
【００３２】
本実施形態の計算機システム１００は、４台の計算機１１０、１２０、１３０、１４０、及び第１の通信ハブ１５１、第２の通信ハブ１５２を備える。計算機１１０、１２０、１３０、１４０のそれぞれのＩＤは、”１”、”２”、”３”、”４”である。
【００３３】
計算機１１０は、ＣＰＵ１１１、バスブリッジ１１２、メモリ１１３、通信コントローラ１１４を含む。計算機１２０は、ＣＰＵ１２１、バスブリッジ１２２、メモリ１２３、通信コントローラ１２４を含む。計算機１３０は、ＣＰＵ１３１、バスブリッジ１３２、メモリ１３３、通信コントローラ１３４を含む。計算機１４０は、ＣＰＵ１４１、バスブリッジ１４２、メモリ１４３、通信コントローラ１４４を含む。
【００３４】
メモリ１１３、１２３、１３３、１４３は、計算機１１０、１２０、１３０、１４０間で共有される共有メモリを含む。すなわち、メモリ１１３、１２３、１３３、１４３は、共有メモリによって共有される共有データを含むデータを保持する。
【００３５】
通信コントローラ１１４、１２４、１３４、１４４としては、Ethernet通信コントローラやＵＳＢ通信コントローラなどが使用される。
【００３６】
第１の通信ハブ１５１、第２の通信ハブ１５２は、通信コントローラ１１４、１２４、１３４、１４４の相互のデータ通信を二重化する。第１の通信ハブ１５１、第２の通信ハブ１５２としては、Ethernet通信スイッチングハブやＵＳＢハブなどが使用される。
【００３７】
図２は、計算機１１０、１２０、１３０、１４０間で送受信されるパケットを構成する、各種のデータを示す。本パケットは、共有メモリ中の変更対象のデータが変更された後に保持される新しいデータ、すなわち「変更データ」を含む。以降、本パケットを「変更データパケット」という。
【００３８】
送信データサイズ１１は、変更データパケットのデータ長を示す。
【００３９】
パケットヘッダ１２は、変更データパケットの固有ヘッダを示す。
【００４０】
送信計算機ＩＤ１３は、変更データパケットを送信した計算機のＩＤを示す。従って、送信計算機ＩＤ１３は、計算機１１０、１２０、１３０、１４０が受信した変更データパケットを他の計算機に転送するときに、転送を行う計算機のＩＤに書き換えられる。
【００４１】
送信権フラグ１４は、変更データパケットを送信する権利を有する計算機のＩＤを示す。
【００４２】
暗号化コード１５は、その時点のデータが変更データに変更されるメモリ１１３、１２３、１３３、１４３のベースアドレス、及び変更データの送信順序をランダムに入れ替えるときの送信順序を指定するための暗号化コードを示す。例えば、暗号化コード１５が３２ｂｉｔの場合には、変更データの送信順序を規定する相対アドレスの組合せが、２の３２乗（4,294,967,296）通り指定可能である。なお、暗号化コード１５と、変更データの送信順序を規定する相対アドレスの組合せとの対応は、所定の暗号表（図示なし）として、計算機１１０、１２０、１３０、１４０の各々が保持する。
【００４３】
ベースアドレス１６は、変更のデータが上書きされるメモリ１１３、１２３、１３３、１４３のベースアドレスを示す。
【００４４】
変更データサイズ１７は、変更データのサイズを示す。
【００４５】
変更データ１８は、上記の変更データ、すなわち共有メモリにおいて変更対象とするデータの変更後のデータを示す。
【００４６】
チェックサム１９は、パケットに含まれるデータの誤りを検出するためのチェックサムを示す。
（第１の実施形態の動作）
次に、計算機システム１００において、通信ハブを使用して共有メモリを制御する場合の動作について、図１を使用して説明する。
【００４７】
以下に、ＩＤが”１”の計算機１１０のＣＰＵ１１１で実行されているアプリケーションプログラムが、メモリ１１３上に確保している共有データを変更する場合を例として説明する。
【００４８】
ＣＰＵ１１１は、図２の送信権フラグ１４で指定されたＩＤが”１”である場合に、変更データパケットを、ＩＤが”２” の計算機１２０の通信コントローラ１２４あてに送信する。その際、変更データパケットは、バスブリッジ１１２、及び通信コントローラ１１４を経由して送信される。その直後に、ＣＰＵ１１１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１１３上に確保されている共有メモリに保存する。
【００４９】
ＣＰＵ１１１は、送信権フラグ１４で指定されたＩＤが”１”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ１４によりＩＤを”２”に指定した変更データパケットを送信する。すなわち、変更データパケットを送信する権利が、計算機１１０から計算機１２０へ移転される。
【００５０】
ＣＰＵ１１１は、送信権フラグ１４で指定されたＩＤが”１”でない場合は、変更データパケットを、送信権フラグ１４を変更することなく、計算機ＩＤが”２”の計算機１２０の通信コントローラ１２４あてに送信する。その際、変更データパケットは、バスブリッジ１１２、及び通信コントローラ１１４を経由して送信される。その直後に、ＣＰＵ１１１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１１３上に確保されている共有メモリに保存する。
【００５１】
通信コントローラ１１４から送信された変更データパケットは、通常は、二重化された通信ハブの一方である第１の通信ハブ１５１を経由して、通信コントローラ１２４に受信される。そして、変更データパケットは、バスブリッジ１２２を介して、ＣＰＵ１２１に受信される。
【００５２】
ＣＰＵ１２１は、送信権フラグ１４で指定されたＩＤが”２”でない場合は、変更データパケットを、送信権フラグ１４を変更することなく、計算機ＩＤが”３”の計算機１３０の通信コントローラ１３４あてに送信する。その際、変更データパケットは、バスブリッジ１２２、及び通信コントローラ１２４を経由して送信される。その直後に、ＣＰＵ１２１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１２３上に確保されている共有メモリに保存する。
【００５３】
ＣＰＵ１２１は、送信権フラグ１４で指定されたＩＤが”２”である場合は、送信するべき変更データパケットを、計算機ＩＤが”３”の計算機１３０の通信コントローラ１３４あてに送信する。その際、変更データパケットは、バスブリッジ１２２、及び通信コントローラ１２４を経由して送信される。その直後に、ＣＰＵ１２１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１２３上に確保されている共有メモリに保存する。
【００５４】
ＣＰＵ１２１は、送信権フラグ１４で指定されたＩＤが”２”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ１４によりＩＤを”３”に指定した変更データパケットを送信する。すなわち、変更データパケットを送信する権利が、計算機１２０から計算機１３０へ移転される。
【００５５】
通信コントローラ１２４から送信された変更データパケットは、通常は、第１の通信ハブ１５１を経由して、通信コントローラ１３４に受信される。そして、変更データパケットは、バスブリッジ１３２を介して、ＣＰＵ１３１に受信される。
【００５６】
ＣＰＵ１３１は、送信権フラグ１４で指定されたＩＤが”３”でない場合は、変更データパケットを、送信権フラグ１４を変更することなく、計算機ＩＤが”４”計算機１４０の通信コントローラ１４４あてに送信する。その際、変更データパケットは、バスブリッジ１３２、及び通信コントローラ１３４を経由して送信される。その直後に、ＣＰＵ１３１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１３３上に確保されている共有メモリに保存する。
【００５７】
ＣＰＵ１３１は、送信権フラグ１４で指定されたＩＤが”３”である場合は、送信するべき変更データパケットを、計算機ＩＤが”４”の計算機１４０の通信コントローラ１４４あてに送信する。その際、変更データパケットは、バスブリッジ１３２、及び通信コントローラ１３４を経由して送信される。その直後に、ＣＰＵ１３１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１３３上に確保されている共有メモリに保存する。
【００５８】
ＣＰＵ１３１は、送信権フラグ１４で指定されたＩＤが”３”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ１４によりＩＤを”４”に指定した変更データパケットを送信する。すなわち、変更データパケットを送信する権利が、計算機１３０から計算機１４０へ移転される。
【００５９】
通信コントローラ１３４から送信された変更データパケットは、通常は、第１の通信ハブ１５１を経由して、通信コントローラ１４４に受信される。そして、変更データパケットは、バスブリッジ１４２を介して、ＣＰＵ１４１に受信される。
【００６０】
ＣＰＵ１４１は、送信権フラグ１４で指定されたＩＤが”４”でない場合は、変更データパケットをどこへも送信しない。そして、ＣＰＵ１４１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１４３上に確保されている共有メモリに保存する。
【００６１】
ＣＰＵ１４１は、送信権フラグ１４で指定されたＩＤが”４”である場合は、送信するべき変更データパケットを、計算機ＩＤが”１”の計算機１１０の通信コントローラ１１４あてに送信する。その際、変更データパケットは、バスブリッジ１４２、及び通信コントローラ１４４を経由して送信される。その直後に、ＣＰＵ１３１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１３３上に確保されている共有メモリに保存する。
【００６２】
ＣＰＵ１４１は、送信権フラグ１４で指定されたＩＤが”４”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ１４によりＩＤを”１”に指定した変更データパケットを送信する。すなわち、変更データパケットを送信する権利が、計算機１４０から計算機１１０へ移転される。
【００６３】
もし、第１の通信ハブ１５１を介した通信が失敗した場合、ＣＰＵ１１１、１２１、１３１、１４１は、二重化された通信ハブの他方である第２の通信ハブ１５２に送信先を自動的に切り換えて、計算機１１０、１２０、１３０、１４０間の通信を続行する。
【００６４】
共有メモリ間の通信を用いたデータ共有方式は、もともとメモリの一部をパケットで送信するので、それを傍受しても通信内容の判別が困難である。そこで、さらに、ベースアドレスとデータを送信する際に、図２の変更データパケットに含まれる暗号化コード１５を用いて、データが並ぶ順番をランダムに変更してもよい。この暗号化により、通信データ、すなわち変更データの秘匿性を高めることができる。
【００６５】
例えば、暗号化コード１５が３２ｂｉｔで、００  ００  ００  ００（Ｈ）の場合、ベースアドレスとデータを送信する場合にデータが並ぶ順番は変更しない。
【００６６】
例えば、暗号化コード１５が３２ｂｉｔで、ＦＦ  ＦＦ  ＦＦ  ＦＦ（Ｈ）の場合、ベースアドレスは予め決められた暗号表の値を加算した値とし、変更データは、予め決められた暗号表の暗号化コードの数値に対応付けて指定された順番する通りに並べ替えて送信される。
【００６７】
なお、図１の計算機システムにおいて、通信ハブを２台備えること、及び計算機１１０、１２０、１３０、１４０間の通信回線が二重化されていることは必須ではない。例えば、計算機１１０、１２０、１３０、１４０間の通信回線に十分な信頼性がある場合には、通信回線は二重化される必要はない。
【００６８】
さらに、図２の変更データパケットが備える各種データは、すべてが必須のものではない。
【００６９】
送信データサイズ１１は、例えば、変更データパケットのデータ長を固定することができる場合は、省略することができる。また、パケットヘッダ１２も、例えば、パケットを受信した装置が、受信したパケットが変更データパケットであることを他の方法で識別できる場合は、省略することができる。
【００７０】
さらに、暗号化コード１５も、例えば、盗聴の可能性がない場合には省略することができる。
【００７１】
また、ベースアドレス１６も、例えば、変更するアドレス領域を固定することができる場合は、省略することができる。変更データサイズ１７は、例えば、変更データのサイズを固定することができる場合は、省略することができる。チェックサム１９も、例えば、通信中のエラーを無視できる場合には省略することができる。
【００７２】
以上のように、何らかの条件を設定することによって、送信データサイズ１１、パケットヘッダ１２、暗号化コード１５、ベースアドレス１６、変更データサイズ１７チェックサム１９は省略することができる。
【００７３】
以上説明したように、本実施形態の計算機システムは、以下のような効果を奏する。
【００７４】
以上のように、本実施形態の計算機システムは、計算機を構成するＣＰＵ、メモリ、通信コントローラ（Ethernet通信コントローラやＵＳＢ通信コントローラなど）だけを使用し、ソフトウェアで複数の計算機のメモリ上に共有メモリを構築する。共有メモリのデータを書き換える場合は、変更するデータのアドレスとデータの内容をパケット化して、計算機間をリレーしながら共有メモリを書き換えていく。
【００７５】
そのため、本実施形態の計算機システムは、専用ハードウェアは不要で、汎用計算機で作動するソフトウェアのみで機能を実現することができる。従って、設計変更に対する柔軟性の向上やコストダウンを実現することができる。
【００７６】
また、本実施形態の計算機システムは、共有メモリを書き換える送信権のフラグを計算機間で受け渡す。従って、複数の計算機間で共有メモリの書き換えの同期をとるとともに、複数の計算機が同時に同じアドレスのデータを書き換えるのを防止することができる。
【００７７】
本実施形態の計算機システムでは、複数の計算機のメモリ上に構築した共有メモリのデータを書き換えるために、計算機間のデータ通信を行う。計算機間の通信に用いる回線は二重化されてもよい。この場合、EthernetハブやＵＳＢハブといった通信ハブが故障した場合には、通信経路を自動的に切り換える。従って、通信線の断線や通信ハブの故障といった障害に対して信頼性を向上することができる。
【００７８】
また、本実施形態の計算機システムでは、メモリの一部のみをパケットを用いて送信する。そのため、パケット傍受しても通信内容を判別することは困難である。さらに、本実施形態の計算機システムでは、パケットに暗号化コードを追加することができる。この場合、ベースアドレスとデータを送信する場合にデータが並ぶ順番をランダムに変更することができる。従って、本実施形態の計算機システムは、通信データの秘匿性を高めることができる。
（第２の実施形態）
本発明の計算機システムは、通信ハブを用いずに実現することができる。第２の実施形態では、通信ハブを使用しない共有メモリ制御装置の例を示す。
（第２の実施形態の構成）
図３は、本発明の第１の実施形態の計算機システムの構成を示すブロック図である。本実施形態の計算機システム２００は、４台の計算機１１０、１２０、１３０、１４０を備える。計算機１１０、１２０、１３０、１４０のそれぞれのＩＤは、”１”、”２”、”３”、”４”である。このように、本実施形態の計算機システム２００は、第１の実施形態の計算機システム１００から、第１の通信ハブ１５１、第２の通信ハブ１５２を除いたものである。計算機１１０、１２０、１３０、１４０の構成及びこれらの内部構成は、計算機システム１００と同等なので、説明は省略する。
【００７９】
ただし、通信コントローラ１１４、１２４、１３４、１４４は、計算機システム２００では、計算機システム１００とは異なり、通信ハブを介さず、直接、通信を行う。計算機１１０、１２０、１３０、１４０間で送受信されるパケットは、図２の変更データパケットである。
（第２の実施形態の動作）
次に、計算機システム２００において、通信ハブを使用せず共有メモリを制御する場合の動作について、図３を使用して説明する。
【００８０】
以下に、ＩＤが”１”の計算機１１０のＣＰＵ１１１で実行されているアプリケーションプログラムが、メモリ１１３上に確保している共有データを変更する場合を例として説明する。
【００８１】
ＣＰＵ１１１は、図２の送信権フラグ１４で指定されたＩＤが”１”である場合に、変更データパケットを、ＩＤが”２”の計算機１２０の通信コントローラ１２４あてに送信する。その際、変更データパケットは、バスブリッジ１１２、及び通信コントローラ１１４を経由して送信される。
【００８２】
ＣＰＵ１１１は、送信権フラグ１４で指定されたＩＤが”１”でない場合は、計算機ＩＤが”２”の計算機１２０の通信コントローラ１２４あてに送信する。その際、変更データパケットは、バスブリッジ１１２、及び通信コントローラ１１４を経由して送信される。その直後に、ＣＰＵ１１１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１１３上に確保されている共有メモリに保存する。
【００８３】
ＣＰＵ１１１は、通信コントローラ１２４あての変更データパケットの送信に失敗した場合、ＩＤが”３” の計算機１３０の通信コントローラ１３４あてに変更データパケットを送信する。ＣＰＵ１１１は、通信コントローラ１３４あての変更データパケットの送信にも失敗した場合、ＩＤが”４” の計算機１４０の通信コントローラ１４４あてに変更データパケットを送信する。
【００８４】
ＣＰＵ１１１は、送信権フラグ１４で指定されたＩＤが”１”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ１４のＩＤを送信可能な計算機のＩＤ（２、３、又は４）に指定した変更データパケットを送信する。
【００８５】
通信コントローラ１２４、通信コントローラ１３４、又は通信コントローラ１４４への変更データパケットの送信の直後に、ＣＰＵ１１１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１１３上に確保されている共有メモリに保存する。
【００８６】
通信コントローラ１１４から送信された変更データパケットは、通常は、通信コントローラ１２４に受信される。そして、変更データパケットは、バスブリッジ１２２を介して、ＣＰＵ１２１に受信される。
【００８７】
ＣＰＵ１２１は、送信権フラグ１４で指定されたＩＤが”２”でない場合は、変更データパケットの送信計算機ＩＤを確認する。そして、ＣＰＵ１２１は、送信計算機ＩＤが”１”、すなわち変更データパケットの送信元が通信コントローラ１１４の場合は、通信コントローラ１２４に対し、変更データパケットを、計算機ＩＤが”３”の計算機１３０の通信コントローラ１３４あてに送信する。
【００８８】
ＣＰＵ１２１は、送信権フラグ１４で指定されたＩＤが”２”である場合は、送信するべき変更データパケットを、計算機ＩＤが”３”の計算機１３０の通信コントローラ１３４あてに送信する。その際、変更データパケットは、バスブリッジ１２２、及び通信コントローラ１２４を経由して送信される。その直後に、ＣＰＵ１２１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１２３上に確保されている共有メモリに保存する。
【００８９】
ＣＰＵ１２１は、通信コントローラ１３４あての変更データパケットの送信に失敗した場合、通信コントローラ１４４あてに変更データパケットを送信する。
【００９０】
ＣＰＵ１２１は、通信コントローラ１４４あての変更データパケットの送信にも失敗した場合、通信コントローラ１１４あてに変更データパケットを送信する。
【００９１】
通信コントローラ１３４、通信コントローラ１４４、又は通信コントローラ１１４への変更データパケットの送信の直後に、ＣＰＵ１２１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１２３上に確保されている共有メモリに保存する。
【００９２】
ＣＰＵ１２１は、送信権フラグ１４で指定されたＩＤが”２”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ１４のＩＤを送信可能な計算機のＩＤ（３、４、又は１）に指定した変更データパケットを送信する。
【００９３】
通信コントローラ１２４から送信された変更データパケットは、通常は、通信コントローラ１３４に受信される。そして、変更データパケットは、バスブリッジ１３２を介して、ＣＰＵ１３１に受信される。
【００９４】
ＣＰＵ１３１は、送信権フラグ１４で指定されたＩＤが”３”でない場合は、変更データパケットの送信計算機ＩＤを確認する。そして、ＣＰＵ１３１は、送信計算機ＩＤが”１”、すなわち変更データパケットの送信元が通信コントローラ１１４の場合は、変更データパケットを、計算機ＩＤが”４”の計算機１４０の通信コントローラ１４４あてに送信する。その際、変更データパケットは、バスブリッジ１３２、及び通信コントローラ１３４を経由して送信される。その直後に、ＣＰＵ１３１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１３３上に確保されている共有メモリに保存する。
【００９５】
ＣＰＵ１３１は、送信権フラグ１４で指定されたＩＤが”３”である場合は、送信するべき変更データパケットを、計算機ＩＤが”４”の計算機１４０の通信コントローラ１４４あてに送信する。その際、変更データパケットは、バスブリッジ１３２、及び通信コントローラ１３４を経由して送信される。その直後に、ＣＰＵ１３１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１３３上に確保されている共有メモリに保存する。
【００９６】
ＣＰＵ１３１は、通信コントローラ１４４あての変更データパケットの送信に失敗した場合、通信コントローラ１１４あてに変更データパケットを送信する。
【００９７】
ＣＰＵ１３１は、通信コントローラ１１４あての変更データパケットの送信にも失敗した場合、通信コントローラ１２４あてに変更データパケットを送信する。
【００９８】
ＣＰＵ１３１は、送信権フラグ１４で指定されたＩＤが”３”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ１４のＩＤを送信可能な計算機のＩＤ（４、１、又は２）に指定した変更データパケットを送信する。
【００９９】
通信コントローラ１３４から送信された変更データパケットは、通常は、通信コントローラ１４４受信される。そして、変更データパケットは、ＣＰＵ１４１に受信される。
【０１００】
ＣＰＵ１４１は、送信権フラグ１４で指定されたＩＤが”４”でない場合は、変更データパケットの送信計算機ＩＤを確認する。そして、ＣＰＵ１４１は、送信計算機ＩＤが”１”、すなわち変更デーパケットの送信元が通信コントローラ１１４の場合は、変更データパケットをどこへも送信しない。そして、ＣＰＵ１４１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１４３上に確保されている共有メモリに保存する。
【０１０１】
ＣＰＵ１４１は、送信権フラグ１４で指定されたＩＤが”４”である場合は、送信するべき変更データパケットを、計算機ＩＤが”１”の計算機１１０の通信コントローラ１１４あてに送信する。その際、変更データパケットは、バスブリッジ１４２、及び通信コントローラ１４４を経由して送信される。その直後に、ＣＰＵ１４１は、変更データパケットに含まれる変更データ１８の内容を、メモリ１４３上に確保されている共有メモリに保存する。
【０１０２】
ＣＰＵ１４１は、通信コントローラ１１４あての変更データパケットの送信に失敗した場合、通信コントローラ１２４あてに変更データパケットを送信する。
【０１０３】
ＣＰＵ１４１は、通信コントローラ１２４あての変更データパケットの送信にも失敗した場合、通信コントローラ１３４あてに変更データパケットを送信する。
【０１０４】
ＣＰＵ１４１は、送信権フラグ１４で指定されたＩＤが”４”である場合かつ変更データパケットの送信が終わった場合に、送信権フラグ１４のＩＤを送信可能な計算機のＩＤ（１、２、又は３）に指定した変更データパケットを送信する。
【０１０５】
なお、図３の計算機システムにおいても、計算機１１０、１２０、１３０、１４０間の通信回線が二重化されていることは必須ではない。例えば、計算機１１０、１２０、１３０、１４０間の通信回線に十分な信頼性がある場合には、通信回線は二重化される必要はない。
【０１０６】
以上のように、第２の実施形態の計算機システムも、計算機間のデータ通信を用いて共有メモリを制御する。その際、専用ハードウェアは不要で、汎用計算機で作動するソフトウェアのみで機能を実現することができる。従って、設計変更に対する柔軟性の向上やコストダウンを実現することができる。
【０１０７】
また、送信権のフラグの受け渡しも可能なので、共有メモリの書き換えの同期をとるとともに、複数の計算機が同時に同じアドレスのデータを書き換えるのを防止することができる。
【０１０８】
さらに、必要に応じて、通信経路の二重化や暗号化にも対応することもできるので、信頼性や秘匿性を向上することができる。
【符号の説明】
【０１０９】
１００、２００、３００    計算機システム
【図１】
2014052786.tif 000003
【図２】
2014052786.tif 000004
【図３】
2014052786.tif 000005
【図４】
2014052786.tif 000006