(57)【特許請求の範囲】
【請求項１】
複数のコンピュータをネットワークで相互に接続した分散コンピュータシステムにおいてコンピュータノード間の同期化を行うに際し、
各ノードは、
同期処理を行う周期に相当する時間の同期タイマを開始し、
同期タイマの終了とともにネットワーク上に同期メッセージをブロードキャストして全ての他ノードに同期メッセージを送信する一方で、同期メッセージを送受信した際には、所定時間の認証用ウインドウを開始し、
認証用ウインドウ中に既定の複数の同期メッセージを送受信した場合に、これを同期条件成立と判定して、複数の同期メッセージの送受信タイミングに基づいて決定した開始時期で同期タイマを開始し、
前記同期条件成立と判定した際に自ノードの同期タイマが終了していない場合には、同期メッセージをネットワーク上にブロードキャストせずに同期タイマを再び開始する
ことを特徴とする分散コンピュータシステムの同期処理方法。
【請求項２】
既存の同期系に新たにノードを追加する場合、既存のノードがリセットや電源ＯＮにより起動された場合、及び動作中のノードに故障が発生し、修復が行われた後に復帰した場合等において、
これらのノードは、所定の初期化処理が終了した後に、所定時間の非同期タイマを開始し、
非同期タイマの終了とともにネットワーク上に同期メッセージをブロードキャストして全ての他ノードに同期メッセージを送信する一方で、同期メッセージを送受信した際には、所定時間の認証用ウインドウを開始し、
認証用ウインドウ中に既定の複数の同期メッセージを送受信した場合に、同期条件成立と判定して同期タイマを開始し、
同期メッセージを送受信したにもかかわらず認証用ウインドウ中に同期条件が成立しない場合には、非同期タイマを再び開始する
ことを特徴とする請求項１に記載の分散コンピュータシステムの同期処理方法。
【請求項３】
同期メッセージの内部にタイムスタンプを記載し、複数のノード間において、複数の同期メッセージの送受信により同期条件成立と判定した際に、互いの同期タイマの開始時期を一致させると同時に、互いのタイムスタンプを一致させることを特徴とする請求項１又は２に記載の分散コンピュータシステムの同期処理方法。
【請求項４】
アプリケーションの要求の動的変化や環境条件の変化に応じて、各ノードが自律的に同期タイマ、非同期タイマ及び認証用ウインドウの時間を変更することを特徴とする請求項１〜３のいずれかに記載の分散コンピュータシステムの同期処理方法。
【請求項５】
同期メッセージの内部に、同期メッセージを送信するノードの、ネットワーク上で重複の無いノード識別番号を記載し、同期メッセージを受信するノードが、認証用ウインドウ内にて既定時間内に同一ノードから複数受信した同期メッセージを、認証用ウインドウ内に受信した同期メッセージ数としてカウントしないことを特徴とする請求項１〜４のいずれかに記載の分散コンピュータシステムの同期処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコンピュータをネットワークで相互に接続した分散コンピュータシステムの同期処理方法に関し、とくに、リアルタイム性やフォールトトレラント性が要求される分散コンピュータシステムにおいてコンピュータノード間の同期化を行うのに用いる同期処理方法に関するものである。
【背景技術】
【０００２】
一般に、パーソナルコンピュータ、ワークステーション、組み込みコンピュータ、搭載コンピュータ及び制御用コンピュータなどのコンピュータシステムにおいては、単一のコンピュータを用いる代わりに、複数のコンピュータを何らかの情報伝達媒体から成るネットワークで相互に接続した分散コンピュータシステムを用いることがある。この分散コンピュータシステムは、単一のコンピュータでは演算能力が不足する場合、単一のコンピュータでは信頼性が不足する場合、コンピュータシステムで制御する対象が物理的に広範囲に存在する場合、コンピュータシステムに対する要求の変化が頻繁である場合などに用いるのに好適である。
【０００３】
ところで、分散コンピュータシステム上で動作するアプリケーションには、何らかの実時間制約を受けて動作するものがある。このようなアプリケーションは、リアルタイムアプリケーションと呼ばれており、例えば、入力対象であるセンサ等からデータを周期的に取得して必要な演算を行い、出力対象であるアクチュエータ等に対して周期的に結果の出力を行うものがある。そして、このようなリアルタイムアプリケーションを分散コンピュータシステム上で動作させる場合には、その分散コンピュータシステムを構成する各コンピュータノード（以下、「ノード」とする）を所定の時間範囲内で同期させることが必要になる。
【０００４】
より具体的に説明すると、図１は分散コンピュータシステムの一例を示す図であって、図示の分散コンピュータシステムは、個々のセンサＳａ，Ｓｂに接続した複数のセンサノードＮｓａ，Ｎｓｂと、複数の制御演算ノードＮｃ１，Ｎｃ２，Ｎｃ３と、多数決回路Ｖｏを介してアクチュエータＡに接続した複数の出力ノードＮａ１，Ｎａ２，Ｎａ３を備えると共に、ネットワークＮＷにより各ノードＮｓ，Ｎｃ，Ｎａを互いに接続している。
【０００５】
図示の分散コンピュータシステムにおいて、センサノードＮｓａ，Ｎｓｂがデータを得るためにセンサＳａ，Ｓｂに対してリクエスト信号を送るケースを考えると、各センサＳａ，Ｓｂから同時刻にセンシングされたデータを得る必要がある場合、各センサノードＮｓａ，Ｎｓｂは、所定の範囲内の時間差で夫々のセンサＳａ，Ｓｂにリクエスト信号を送らねばならないので、共通のタイミングを有する必要がある。また、アクチュエータＡに制御信号を送信するケースを考えると、図示の場合には、信頼性確保のために冗長系を成している出力ノードＮａ１，Ｎａ２，Ｎａ３の各出力信号を多数決回路Ｖｏにより一つの信号にする。この際、各出力ノードＮａ１，Ｎａ２，Ｎａ３は、多数決回路Ｖｏに対する夫々の出力信号が所定の時間範囲内に収まっていなければならないので、共通のタイミングを有する必要がある。
【０００６】
このように、リアルタイムアプリケーションでは、分散コンピュータシステムを構成するノードを所定の時間内に同期させることが要求されている。そして、一般的に各ノードは自らの発振器を備え、これらの発振器が時間経過とともにドリフトするため、ノード間において適切な周期でタイミング調整すなわち同期処理を行う必要がある。
【０００７】
ところで、ひと口にリアルタイムアプリケーションといっても、それが要求するリアルタイム性や信頼性は多様である。つまり、ノード間のタイミングのばらつきの許容度が大きいものもあれば小さいものもあるし、制御を行う周期や入力から出力までの応答時間についても、数ｍｓｅｃレベルから数秒レベルまで多岐にわたる。また、高信頼性を要するものとそうでないものもあり、さらには、別々のリアルタイム性要求や信頼性要求をもつ複数のアプリケーションがシステム中に同時に混在するケースもあれば、時間とともに要求レベルが変化するケースもある。
【０００８】
このため、アプリケーション毎の要求に応じて専用の同期処理方法を構築するのでは、非常にコストがかかるため、低コストでの同期化を実現するには、多様なアプリケーションに柔軟に対応できる汎用性が高い同期処理方法でなければならない。そのような同期処理方法は、信頼度要求レベルやリアルタイム要求レベルに依らずに、あらゆるケースに適用し得るものでなければならず、例えば下記の（Ａ）〜（Ｃ）の要求を満足させる必要がある。
【０００９】
（Ａ）分散コンピュータシステム内の一式以上のノードが故障によって一時的に同期から離脱した場合でも、残りのノードにおいては、既存の同期状態が無停止で成立し続けなければならない。また、一式以上のノードが故障から復帰する場合、一式以上のノードをシステムに追加する場合、あるいはシステムの一部のノードがテスト状態にある場合でも、残りのノードにおいては、既存の同期状態が無停止で成立し続けなければならない。さらに、アプリケーションの種類や使用する部品の故障率によって使用されるノード数は多様であり、且つそれらが時間とともに変化し得るため、同期系を構成するノード数が固定される方法であってはならない。
【００１０】
（Ｂ）同期している複数のノード間の同期精度に対する要求が動的に変化する場合、同期系に対する信頼性要求（誤同期確率要求）が動的に変化する場合、又は同期精度や信頼性要求のレベルが異なる複数のアプリケーションがシステム中に混在する場合でも、システムとしてアプリケーションの処理及び出力を停止せずに対応できなければならない。
【００１１】
（Ｃ）低コスト化を実現するため、既存の汎用的なハードウエアを用いて構築できなければならない。
【００１２】
ここで、コンピュータシステムにおいて、耐故障性（フォールトトレランス性）を実現する同期処理技術としては、例えば、複数のステーションのオペレーティングシステム時刻クロックを同期化するに際し、タイムキーパステーションからのクロックメッセージを受信した時の各ステーションのネットワークインターフェイスの自由走行カウンタのカウントをラッチし、タイムキーパステーションはそのオペレーティングシステム時刻クロック及び自由走行カウンタからそのクロックメッセージの受信時刻を計算し、このタイムキーパ受信時刻を他のステーションへブロードキャストし、その他のステーションはそのオペレーティングシステム時刻とその自由走行カウンタのカウントからそれ自身の受信時刻を計算し、その受信時刻とタイムキーパ受信時刻との差によりオペレーティングシステム時刻を補正するものがあった。
【００１３】
また、複数の冗長系からなるフォールトトレラントシステムにおいて、複数の冗長系毎に独立したクロック発振器及び全冗長系に共通したクロック発振器を備え、共通したクロック発振器からの共通クロックを全冗長系の同期に使用するようにしたものがあった。
【特許文献１】特開平６−５２０７６号公報
【特許文献２】特開平３−２６６０１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
上記したような従来の同期処理方法において、タイムキーパステーションがシステム全体に共通タイミングを供給する方法では、タイムキーパステーションが故障すると、次のタイムキーパが選出されるまでの間は同期処理が一時停止するため、停止が許容されないアプリケーションには用いることができないほか、故障したステーションが不正にタイムキーパになって、同期系を乱す恐れがあった。また、全冗長系に共通したクロック発振器を用いた方法では、一般の分散コンピュータシステムにおけるノード間の同期には用いることができなかった。
【課題を解決するための手段】
【００１５】
本発明の分散コンピュータシステムの同期処理方法は、請求項１として、複数のコンピュータをネットワークで相互に接続した分散コンピュータシステムにおいてコンピュータノード間の同期化を行うに際し、各ノードは、同期処理を行う周期に相当する時間の同期タイマを開始し、同期タイマの終了とともにネットワーク上に同期メッセージをブロードキャストして全ての他ノードに同期メッセージを送信する一方で、同期メッセージを送受信した際には、所定時間の認証用ウインドウを開始し、認証用ウインドウ中に既定の複数の同期メッセージを送受信した場合に、これを同期条件成立と判定して、複数の同期メッセージの送受信タイミングに基づいて決定した開始時期で同期タイマを開始し、前記同期条件成立と判定した際に自ノードの同期タイマが終了していない場合には、同期メッセージをネットワーク上にブロードキャストせずに同期タイマを再び開始する構成としており、上記構成をもって従来の課題を解決するための手段としている。
【００１６】
また、本発明の分散コンピュータシステムの同期処理方法は、請求項２として、既存の同期系に新たにノードを追加する場合、既存のノードがリセットや電源ＯＮにより起動された場合、及び動作中のノードに故障が発生し、修復が行われた後に復帰した場合等において、これらのノードは、所定の初期化処理が終了した後に、所定時間の非同期タイマを開始し、非同期タイマの終了とともにネットワーク上に同期メッセージをブロードキャストして全ての他ノードに同期メッセージを送信する一方で、同期メッセージを送受信した際には、所定時間の認証用ウインドウを開始し、認証用ウインドウ中に既定の複数の同期メッセージを送受信した場合に、同期条件成立と判定して同期タイマを開始し、同期メッセージを送受信したにもかかわらず認証用ウインドウ中に同期条件が成立しない場合には、非同期タイマを再び開始することを特徴とし、請求項３として、同期メッセージの内部にタイムスタンプを記載し、複数のノード間において、複数の同期メッセージの送受信により同期条件成立と判定した際に、互いの同期タイマの開始時期を一致させると同時に、互いのタイムスタンプを一致させることを特徴とし、請求項４として、アプリケーションの要求の動的変化や環境条件の変化に応じて、各ノードが自律的に同期タイマ、非同期タイマ及び認証用ウインドウの時間を変更することを特徴とし、請求項５として、同期メッセージの内部に、同期メッセージを送信するノードの、ネットワーク上で重複の無いノード識別番号を記載し、同期メッセージを受信するノードが、認証用ウインドウ内にて既定時間内に同一ノードから複数受信した同期メッセージを、認証用ウインドウ内に受信した同期メッセージ数としてカウントしないことを特徴としている。
【発明の効果】
【００１７】
本発明の請求項１に係る分散コンピュータシステムの同期処理方法によれば、単一故障点となりうるマスターノードを必要とせずに複数ノード間の同期化が可能であるため、耐故障性（フォールトトレランス性）が高いものとなり、また、自ノードの同期タイマが満期になる前に同期条件が成立した場合には、ネットワーク上への同期メッセージの送信を自律的に抑制するため、ネットワーク負荷の上昇を抑えて、同期に参加できるノード数の制限をなくすことができる。さらに、複数のノードに同時に故障が発生しても、成立している同期系に影響を与えることなく無停止で同期を継続させることが可能であり、さらには、標準的な構成のコンピュータノードとブロードキャストが可能なネットワークを用いる以外には特別なハードウエアを必要としないため、同期を必要とするあらゆるタイプのアプリケーションに適用可能であって、低コスト化も実現し得るものとなる。
【００１８】
本発明の請求項２に係る分散コンピュータシステムの同期処理方法によれば、請求項１と同様の効果を得ることができるうえに、複数のノードが既に成立している同期系へ参加したり復帰したりする際に、成立している同期系には影響を与えずに全体システムとして無停止で同期を継続させることが可能であり、また、システム全体の起動時においても、ノード単体の起動時や復帰時とを区別する特別なハードウエアの仕組みを必要とせず、標準的な構成のみで同期化が可能である。
【００１９】
本発明の請求項３に係る分散コンピュータシステムの同期処理方法によれば、請求項１及び２と同様の効果を得ることができるうえに、複数のノード間の同期化のみならず、タイムスタンプの一致化を行うため、同期処理を行う周期よりも長い処理周期を持つアプリケーションに対しても有効である。
【００２０】
本発明の請求項４に係る分散コンピュータシステムの同期処理方法によれば、請求項１〜３と同様の効果を得ることができるうえに、アプリケーションのリアルタイム性要求や信頼性要求が動的に変化する場合や、異なるレベルのリアルタイム要求や信頼性要求を有する複数のアプリケーションがシステム中に混在している場合であっても、同期化を実現することができる。
【００２１】
本発明の請求項５に係る分散コンピュータシステムの同期処理方法によれば、請求項１〜４と同様の効果を得ることができるうえに、故障したノードが複数の同期メッセージを送信してしまうことによる障害を排除することができる。
【実施例】
【００２２】
本発明の分散コンピュータシステムの同期処理方法に用いるハードウエアは、以下に示すノードとネットワークである。なお、ネットワークは、一般的に組織全体の状態を表わすものであるが、ここではノード間を接続する情報伝達媒体を示す。
【００２３】
図２に示すノード１は、プロセッサ２、メモリ３、クロック４、タイマ５、ネットワーク接続インターフェース６及びローカルＩ／Ｏインターフェース７を備えると共に、故障対策のためのハードウエアデバイスとして、必要に応じてウオッチドッグタイマ（ＷＤＴ）８、過電流検出／遮断回路９、及びメモリのビット反転を検出・修正するためのＥＤＡＣ回路１０を備えている。そして、分散コンピュータシステムは、複数のノード１をネットワークＮＷで相互に接続することにより構成してある。
【００２４】
ネットワーク接続インターフェース６は、ネットワークＮＷを介して複数のノード１同士を相互に接続するために用いるもので、必要に応じて二重系や三重系の冗長構成を採用することができる。ローカルＩ／Ｏインターフェース７の先に接続するハードウエアデバイスは、アプリケーションによって異なり、パーソナルコンピュータやワークステーション等のマン−マシンインターフェースを有するコンピュータである場合には、モニタ、キーボード及びマウスなどであり、組み込みコンピュータや搭載コンピュータである場合には、センサやアクチュエータなどである。
【００２５】
ここで、当該同期処理方法では、信頼度の高い特別なノードが無い場合でも同期処理を実現することから、分散コンピュータシステム中にタイムキーパノード等の特別なノード（マスタノード）が存在せず、いずれのノード１にも故障が起こり得ることを前提としている。また、当該同期処理方法では、高い無停止及び拡張性を実現することから、各ノードは、自律した存在であって、ネットワーク接続インターフェース６又はローカルＩ／Ｏインターフェース７からデータを受信した際には、その内容を吟味して自律的判断により適切な処理を起動し、自らのタイマ管理を行い、適切と判断したタイミングでネットワーク接続インターフェース６又はローカルＩ／Ｏインターフェース７からメッセージを送信するものとなっている。
【００２６】
さらに、ノード間の同期を行うために、各ノード１が相互に複数種の専用インターフェースを備えていると、ノード間の結合が密になって同期を行うノード数が固定される。したがって、分散コンピュータシステムが柔軟なノード数の構成を採用し得るようにするために、ノード間の接続はネットワークＮＷのみとしている。なお、ネットワークＮＷは、同期処理にのみ用いるもの又は同期処理とアプリケーションの処理を併用するもののいずれでもよい。また、ネットワークＮＷは、信頼性確保のために図１に示す如く冗長構成にしてもよい。さらに、ネットワークＮＷは、有線又は無線、あるいはその両方によって構成しても良い。
【００２７】
このように、本発明の分散コンピュータシステムの同期処理方法に用いるハードウエアは、標準的な構成のノード１と、ブロードキャストが可能なネットワークＮＷのみであって、それ以外に特別なハードウエアを必要としない。これにより、以下に述べる当該同期処理方法は、同期を必要とするあらゆるアプリケーションに適用可能となる。
【００２８】
図３はノード１の状態遷移図であり、図４は同期成立条件としてＮ＝２の場合におけるノード１の状態遷移図である。図３及び図４において、当該同期処理方法を実施する各ノード１は、同期状態（Ｓ）、同期遷移状態（Ｔ）、非同期状態（Ａ）及び初期状態（Ｉ）のいずれかの状態にある。
【００２９】
同期状態（Ｓ）は、自ノード１の同期タイマＳＴが動作し、少なくとも一式以上の他ノードと同期している状態である。同期遷移状態（Ｔ）は、自ノード１の同期タイマＳＴも非同期タイマＡＴも動作せず、同期状態から非同期状態へ移る中間の状態、又は非同期状態から同期状態に移る中間の状態である。非同期状態（Ａ）は、自ノード１がどの他ノードとも同期しておらず、同期するために非同期タイマＡＴを動作させている状態である。そして、初期状態（Ｔ）は、自ノード１が電源ＯＮ又はリセット後の初期化時や、故障発生直後などのようにまだ同期処理を開始していない状態である。
【００３０】
ここで、図３及び図４において、同期タイマＳＴは、０を初期値として時間の経過とともにカウント値が増すタイマであり、その最大カウント値に相当する時間は全ノードで共通の時間Ｔｓ（秒）に設定してあり、同期条件成立時に動作して次の同期処理を行うタイミングを各ノードが認識するために用いる。ただし、同期タイマＳＴの最大カウント値に相当する時間Ｔｓは要求に応じて可変である。また、非同期タイマＡＴは、０を初期値として時間の経過とともにカウント値が増すタイマであり、その最大カウント値に相当する時間は全ノードで共通の時間Ｔａ（秒）に設定してあり、非同期時に他ノードとの同期を行うために用いる。ただし、非同期タイマＡＴの最大カウント値に相当する時間Ｔａは要求に応じて可変である。
【００３１】
図３及び図４において、符号Ｗｑは認証用ウインドウであって、この認証用ウインドウＷｑは、０を初期値として時間の経過とともにカウント値が増すタイマであり、その最大カウント値に相当する時間は全ノードで共通の時間Ｔｗｑ（秒）に設定してあり、受信した同期メッセージＳＭの受信タイミングが認証用ウインドウＷｑ内又は外であるかによって当該同期メッセージＳＭの有効性を判断するために用いる。ただし、認証用ウインドウＷｑの最大カウント値に相当する時間Ｔｗｑは要求に応じて可変である。符号ＳＭは同期メッセージであって、この同期メッセージＳＭは、必要に応じてそのデータ部にタイムスタンプ（シーケンスナンバー）が記載され、また、必要に応じてそのデータ内部に、同期メッセージＳＭを送信するノードの、ネットワークＮＷ上で重複の無いノード識別番号が記載される。さらに、符号Ｎは、同期条件成立に必要な同期メッセージＳＭの数であり、符号ｎｒｔは、認証用ウインドウＷｑ中に送受信した同期メッセージＳＭの数である。この同期メッセージＳＭの数ｎｒｔは、同期条件成立時においてタイムスタンプの一致を含める場合には、認証用ウインドウＷｑ中に送受信した同期メッセージＳＭのうちタイムスタンプが一致した同期メッセージＳＭの数となる。なお、上記の同期メッセージ数ｎｒｔは、故障ノードが同期メッセージＳＭを複数誤送信する影響が憂慮される場合には、これを排除するため、認証用ウインドウＷｑ内の既定時間内に同一ノードから複数の同期メッセージＳＭを受信してもこれをカウントしない。
【００３２】
当該同期処理方法は、自律タイミング同期処理方法とも呼べるもので、その基本処理において、各ノードは、同期処理を行う周期に相当する時間Ｔｓの同期タイマＳＴを開始し、同期タイマＳＴの終了とともにネットワークＮＷ上に同期メッセージＳＭをブロードキャストして全ての他ノードに同期メッセージＳＭを送信する。その一方で、各ノードは、認証用ウインドウＷｑが既に開始されていない場合において、他ノードからの同期メッセージＳＭを受信した際に、又は自ら同期メッセージＳＭを送信した際に、所定時間Ｔｗｑの認証用ウインドウＷｑを開始し、認証用ウインドウＷｑ中に既定の複数（図４においてはＮ＝２）の同期メッセージＳＭを送受信した場合には、同期条件成立と判定して、同期メッセージＳＭの送受信タイミングから得られる共通のタイミングに一致するように自らの同期タイマＳＴの開始時期を自律的に調整して、その開始時期で同期タイマＳＴを開始する。複数の同期メッセージＳＭの送受信タイミングから同期タイマＳＴの開始時期を決定する方法については後述する。
【００３３】
これに対して、同期条件成立の際に自ノードの同期タイマＳＴが終了していない場合には、同期メッセージＳＭをネットワークＮＷ上にブロードキャストせず、同期タイマＳＴを再び開始する。このようにして、同期したい全てのノードが同様の処理を行うことにより同期が成立することとなる。アプリケーション処理を複数のノード間で同期させたい各ノードは、各々の同期タイマＳＴの値が予め定められた値になったときに当該処理を起動することにより、その処理が複数ノード間で同期して実施されることになる。
【００３４】
また、当該同期処理方法では、既存の同期系にノードを追加する場合、ノードがリセット後又は電源ＯＮ後である場合、及びノードに故障が発生した場合等において、そのノードが非同期状態になった際に、該当するノードは、所定時間Ｔａの非同期タイマＡＴを開始し、非同期タイマＡＴの終了とともにネットワークＮＷ上に同期メッセージＳＭをブロードキャストして全ての他ノードに同期メッセージＳＭを送信する。その一方で、各ノードは、認証用ウインドウＷｑが既に開始されていない場合において、他ノードからの同期メッセージＳＭを受信した際に、又は自ら同期メッセージＳＭを送信した際に、所定時間Ｔｗｑの認証用ウインドウＷｑを開始し、認証用ウインドウＷｑ中に既定の複数の同期メッセージＳＭを送受信した場合には、同期条件成立として同期タイマＳＴを開始する。その後の同期タイマＳＴの動作は先述の通りである。
【００３５】
これに対して、同期メッセージＳＭを送受信したにもかかわらず認証用ウインドウＷｑ中で同期条件が成立しない場合には、各ノードは、非同期タイマＡＴを再び開始し、上記の処理を繰り返し行う。このようにして、最終的には同期が成立することとなる。
【００３６】
さらに、当該同期処理方法では、必要に応じて同期メッセージＳＭの内部にタイムスタンプを記載し、複数のノード間において、同期タイマＳＴの開始時期の一致化と同時にタイムスタンプの一致化を行うことにより、同期処理を行う周期よりも長い処理周期を持つアプリケーションに対しても有効となる。
【００３７】
さらに、当該同期処理方法では、アプリケーションの要求の動的変化や環境条件の変化に応じて、各ノードが予め定めたロジックに従って自律的に同期タイマＳＴ、非同期タイマＡＴ及び認証用ウインドウＷｑの時間Ｔｓ，Ｔａ，Ｔｗｑを変更すれば、アプリケーションのリアルタイム性要求や信頼性要求が動的に変化する場合や、異なるレベルのリアルタイム要求や信頼性要求を有する複数のアプリケーションがシステム中に混在している場合でも、同期化を実現することができる。なお、異なる要求レベルをもつ複数のアプリケーションがシステム中に混在する場合には、各アプリケーション毎に個別の同期タイマＳＴ、非同期タイマＡＴ、認証用ウインドウＷｑを設定してもよい。
【００３８】
さらに、当該同期処理方法では、必要に応じて同期メッセージＳＭの内部に、同期メッセージＳＭを送信するノードの、ネットワークＮＷ上で重複の無いノード識別番号を記載し、同期メッセージＳＭを受信するノードが、認証用ウインドウＷｑ内にて既定時間内に同一ノードから複数受信した同期メッセージＳＭを、認証用ウインドウＷｑ内に受信した同期メッセージ数ｎｒｔとしてカウントしないことにより、故障したノードが複数の同期メッセージＳＭを送信してしまうことによる障害を排除することができる。
【００３９】
上記の同期タイマＳＴ、非同期タイマＡＴ及び認証用ウインドウＷｑの実装手段としては、ハードウエアによる方法及びソフトウエアによる方法のいずれを用いてもよい。各タイマＳＴ，ＡＴは、その動作を終了すると、割り込み機能等を用いて終了になったことをプロセッサに通知する。非同期タイマＡＴの時間Ｔａは、同期タイマＳＴの時間Ｔｓに比較して長くても、短くても、同じでもよい。
【００４０】
認証用ウインドウＷｑ中に送受信した複数の同期メッセージＳＭの送受信タイミングから同期タイマＳＴの開始時期を決定するにはいくつかの方法がある（図３及び図４における『ＳＴカウント値設定』の部分）。例えば、同期が成立する条件であるＮ個の同期メッセージＳＭの送受信に対して、ｍ（１≦ｍ≦Ｎ）番目の同期メッセージＳＭを送受信したタイミングを同期タイマＳＴの開始時期に設定することができる。また、同期処理の周期（Ｔｓ）の同期処理毎のばらつきを補正するため、各ノードがｍ番目の同期メッセージＳＭを送受信したタイミングから所定のオフセット時間ｋ（秒）を経過した後、同期タイマＳＴを開始するようにしてもよい。さらに、ノード間のばらつきを補正するために、上記のオフセット時間ｋ（秒）は、ノード毎に異なる値や、負の値としてもよい。別の同期タイマＳＴの開始時期を決定する方法の一例としては、認証用ウインドウＷｑ中に送受信した全ての又は一部の同期メッセージＳＭの送受信タイミングの平均により決定する方法がある。
【００４１】
認証用ウインドウＷｑの時間Ｔｗｑに対する条件としては、ノード間及び単一ノード内の内部処理時間のばらつきをσｔｓ、クロックドリフト時間のばらつきをσｃｄ、ネットワークアクセス時間のばらつきをσｂａとすると、これらのばらつきは当該分散コンピュータシステムを用いるうえで必然的に生じるものであるから、認証用ウインドウＷｑの時間Ｔｗｑは、これらのばらつきを許容する充分な長さになっている必要があり、少なくともσｔｓ＋σｃｄ＋σｂａ＜Ｔｗｑを満足するものとする。
【００４２】
同期メッセージＳＭの内部にタイムスタンプを記載し、複数のノード間において、同期化の際にタイムスタンプの一致化を行うことにより、同期処理周期（Ｔｓ）よりも長い周期で処理を行うアプリケーションにおいて、タイムスタンプを用いてノード間のアプリケーション処理の同期が可能となる。この際、タイムスタンプの設定方法の一例としては、ノードの起動時には０から開始し、同期処理毎に一定値を加算する方法がある。追加や故障からの復帰等のように既存の同期系に途中から組み込まれる場合は、既存の同期系で合意しているタイムスタンプを採用し、そこから加算すればよい。
【００４３】
また、ノードに用いるクロックのドリフトレートを最大ρ（秒／秒）とし、アプリケーションの要求するノード間の同期精度をΠ（秒）とし、同期処理直後のノード間の同期ばらつき最大値をΠｉ（秒）とするとき、同期処理周期（同期タイマＳＴの設定時間）Ｔｓ（秒）は、Ｔｓ＜（Π−Πｉ）／２ρを満足するものとする。本発明では、アプリケーションの要求する同期精度Πが時間とともに変化するとき、又は異なる同期精度要求の複数のアプリケーションがシステム中に混在するとき、これらに合わせて各ノードが予め定めたロジック（計算式）に従って同期処理周期Ｔｓを長くしたり短くしたりすることが可能である。
【００４４】
さらに、認証用ウインドウＷｑの時間Ｔｗｑ（秒）は、同期条件成立に必要な同期メッセージＳＭの数Ｎと関係がある。つまり、誤ったノード同士が同期し、他の正常なノードが誤ったタイミングで同期する誤同期の現象を回避するためには、同期メッセージＳＭの数Ｎを大きくすればよいが、この数Ｎを大きくするとそれに応じて認証用ウインドウＷｑの時間Ｔｗｑを長く設定する必要がある。
【００４５】
当該同期処理方法では、誤同期を回避する要求（同期信頼性要求）が時間とともに変化するとき、又は異なるレベルの同期信頼性要求をもつ複数のアプリケーションがシステム中に混在するときに、それに合わせて認証用ウインドウＷｑの時間Ｔｗｑを変化させることができる。一般に、同期タイマＳＴの時間Ｔｓを長く、又は認証用ウインドウＷｑの時間Ｔｗｑを短くすることにより、同期処理に費やす時間を相対的に短くし、アプリケーション処理に費やすことのできる時間を相対的に長くし得るという利点がある。同期精度要求や同期信頼性要求の時間変化の各ノードへの通知は、例えばネットワーク接続インターフェースやローカルＩ／Ｏインターフェースを通して行うことができる。
【００４６】
次に、図５〜図１０に基づいて、上記したアルゴリズムに従って各ノードが処理を行った場合の具体的な動作について説明する。各図は、ある一つのノードの処理過程を示すもので、左から右に向けて時間の経過を表わしている。また、以下の例では、同期成立の条件としてＮ＝２の場合を示し、さらに、認証用ウインドウＷｑ中に二番目の同期メッセージＳＭを受信した時点を次の同期タイマＳＴの開始時期としている。
【００４７】
図５は、同期状態の更新と非同期要素の排除を説明する図である。各ノードは、同期処理を行う周期に相当する時間Ｔｓの同期タイマＳＴを開始し、この同期タイマＳＴが終了すると、図５中（ａ）に示すように、ネットワークＮＷ上に同期メッセージＳＭをブロードキャストして全ての他ノードに同期メッセージＳＭを送信する。また、認証用ウインドウＷｑの非動作時に、ネットワークＮＷから他ノードの同期メッセージＳＭを受信すると、図５中（ｂ）に示すように、認証用ウインドウＷｑを開始する。そして、認証用ウインドウＷｑ中に二つ目の同期メッセージＳＭを送受信した際、図５中（ｃ）に示すように、同期条件成立として新たに同期タイマＳＴを開始する。
【００４８】
また、同期条件が成立している状態において、他ノードからの同期メッセージＳＭを受信し、これにより開始した認証用ウインドウＷｑ中に二つ目の同期メッセージＳＭを受信しない場合は、図５中（ｄ）に示すように、一つ目の同期メッセージＳＭが故障発生等による非同期ノードからのものであると判断してこれを無視し、同期タイマＳＴの開始を行わない。これにより、多くのケースにおいては、非同期の同期メッセージＳＭを各ノードにおいて排除する。偶然、不正なタイミングの同期メッセージＳＭに同期する充分な数の別の非同期なノードがあった場合には、この不正なタイミングで同期条件が成立することになる。ただし、この場合においても、全てのノードが今度はこれを正として追随するため、複数の異なる同期系が存在し続けることはなく、一つの同期系に収束する。また、以上の様な不正なタイミングでの同期の可能性を低くするためには、同期が成立する条件であるＮを大きくすればよい。
【００４９】
図６は、同期状態の更新を説明する図である。ここでは、他ノードの同期メッセージＳＭを受信する前に自ノードの同期タイマＳＴが終了し、図６中（ａ）に示すように、同期メッセージＳＭを送信すると共に、図６中（ｂ）に示すように、認証用ウインドウＷｑを開始して一度同期遷移状態に移った後、認証用ウインドウＷｑ中に他ノードの同期メッセージＳＭを少なくとも一つ受信することにより、図６（ｃ）に示すように、同期条件が成立した様子を示している。
【００５０】
図７は、同期メッセージＳＭの自律的送信の抑制を説明する図である。ここでは、各ノードは、自らの同期タイマＳＴが終了する前に、他ノードからの同期メッセージＳＭを受信して認証用ウインドウＷｑを開始し、この認証用ウインドウＷｑ中に同期条件が成立した場合（同期条件成立時に同期タイマＳＴが終了していない場合）において、同期メッセージＳＭをネットワークＮＷにブロードキャストしない様子を示している。各ノードがこのような動作を行うことで、同期を行うノード数が多くても同期メッセージＳＭの増加によってネットワークＮＷの負荷が増加することがなく、同期を成立させることができる。したがって、同期を行うノード数の制限をなくすことができる。
【００５１】
図８は、既存の同期系へのノードの追加／故障ノードの復帰時の動作を説明する図である。より具体的には、既存の同期系に新たに複数のノードを追加する場合、又はあるノードに故障が発生し、その修復のためにノードが一度同期系を離脱（オフライン）した後に復帰する場合の動作を示している。復帰の際に想定している故障の中には一過性の故障も含まれており、この場合はＥＤＡＣ回路によるメモリ内容の修正、ノードの電源ＯＦＦ／再電源ＯＮ（パワーサイクル）、及びプロセッサのリセット等によって修復が行われる。
【００５２】
ノードを既存の同期系に追加する場合、又は故障が発生したノードに対して上記の修復が成された後（パワーサイクル又はリセットの場合は初期化処理が終了した後）、ノードは非同期状態となって非同期タイマＡＴを開始する。このとき、追加／復帰ノード以外は同期状態にあり、同期系を構成しているので、非同期状態の経過時間が同期タイマＳＴの時間Ｔｓに達する前に、認証用ウインドウＷｑ中に他ノードの同期メッセージＳＭを二つ以上受信することとなる。すなわち、非同期タイマＡＴの開始から時間Ｔｓ以内に追加／復帰ノードが同期系に組み込まれる。
【００５３】
非同期タイマＡＴの時間Ｔａが同期タイマＳＴの時間Ｔｓよりも短い場合には、非同期タイマＡＴの時間Ｔａ以内に他ノードの同期メッセージＳＭを受信しないと、非同期タイマＡＴが終了する。このとき、このノードは、同期メッセージＳＭをネットワークＮＷにブロードキャストする。しかし、このタイミングで同期メッセージＳＭを送信するのは追加／復帰ノードのみなので、同時に追加／復帰するノード数が同期成立条件であるＮ式に満たない場合には、既に同期している他ノードからは無視され、既存の同期系が乱されることはない。
【００５４】
以上のように、追加／復帰ノードは、動作中の正常ノードの動作に何ら影響を与えないので、コンピュータシステムとしては無停止で追加／復帰ノードを既存の同期系に組み込むことが可能となる。これは当該同期処理方法の無停止性及び拡張性が高いことを意味する。なお、故障等により、同期しているノード数が同期成立の条件であるＮ式未満となった場合は、後述するシステム起動時の動作に相当する。
【００５５】
図９は、コンピュータシステム中にノードが一式である場合のシステム初期時の動作を説明する参考図である。ノードは、電源がＯＮされて初期化処理が終了した後、復帰時と同様に非同期状態となって非同期タイマＡＴを開始する。そして、非同期タイマＡＴが終了した際、先述のアルゴリズムに従って同期メッセージＳＭをネットワークＮＷにブロードキャストし、認証用ウインドウＷｑを開始して同期遷移状態となる。ところが、システム中に他のノードが存在しないので、認証用ウインドウＷｑ中に他ノードからの同期メッセージＳＭを受信することはなく、これにより同期条件が成立せず、再び非同期タイマＡＴを開始して非同期状態に戻る。このように、システム中にノードが一式しかない場合には、以上の動作が繰り返し行われる。
【００５６】
図１０は、システム起動時の動作を説明する図であって、一例として、一番目に電源がＯＮされたノード（上側）と、二番目に電源がＯＮされたノード（下側）の二つの動作を示している。
【００５７】
コンピュータシステム中に同期系を構成すべき複数のノードが存在するとき、全体システムの起動時には全てのノードの電源がほぼ同時にＯＮされ、およそ同時間に初期化を終了すると考えられる。各ノードは、初期化終了後、復帰時と同様に非同期タイマＡＴを開始し、最初に非同期タイマＡＴが終了した一番目のノードが、ネットワークＮＷに同期メッセージＳＭをブロードキャストする。このとき、二番目にＯＮされたノードは、非同期タイマＡＴが終了する前に、一番目にＯＮされたノードからの同期メッセージＳＭを受信している。
【００５８】
非同期状態において同期メッセージＳＭを受信した場合、認証用ウインドウＷｑを開始して同期遷移状態となるが、図１０中（ａ）に示すように、認証用ウインドウＷｑ中に送受信した同期メッセージＳＭの数がＮに満たないために同期条件が成立しない場合には、再び非同期タイマＡＴを開始して非同期状態に戻る。一番目にＯＮされたノードにおいても、やはり同期条件が成立しないので、再び非同期タイマＡＴを開始する。そして、一番目にＯＮされたノードの非同期タイマＡＴが次に終了する時期に二番目にＯＮされたノードの非同期タイマＡＴも終了するため、この時点でいずれのノードからも同期メッセージＳＭが送信され、図１０中（ｂ）に示すように同期条件が成立する。
【００５９】
同期条件成立までの時間は、最初のＮ式の非同期タイマＡＴの開始時間差で決まる。すなわち、最初のＮノードの初期化終了後の非同期タイマＡＴの開始時間差をＴｇ（秒）とすると、Ｎ式の同期条件成立までの時間Ｔｓｙｎ（秒）は、Ｔｇ＝０のときにＴｓｙｎ＝Ｔａ（非同期タイマ長）となり、０＜Ｔｇ＜ＴａのときにＴｓｙｎ＝２Ｔａとなり、Ｔａ＜Ｔｇ＜２ＴａのときにＴｓｙｎ＝３Ｔａ（以下同様）となる。
【００６０】
また、この同期条件成立までに非同期タイマＡＴを開始したノードは、全て上記時間で同様に同期する。さらに、ＯＮされるタイミングが遅く、同期条件成立以降に非同期タイマＡＴを開始したノードの同期条件成立時間Ｔｓｙｎは復帰と同じ扱いになり、非同期タイマＡＴの開始後、同期タイマＳＴの時間Ｔｓ以内に同期条件成立となる。
【００６１】
以上により、非同期タイマＡＴの時間Ｔａを同期タイマＳＴの時間Ｔｓよりも短くすることで、システム起動時の同期条件成立時間Ｔｓｙｎをノード追加／復帰時の同期組込み時間Ｔｒｓ（最大Ｔｓ）よりも短くすることができる。ただし、非同期タイマＡＴの時間Ｔａをあまり短くすると、追加／復帰時に再同期が成立するまでの間にブロードキャストされる同期メッセージＳＭが多くなる。このように、システム起動時においても、特別なハードウエアを使用することなく、追加／復帰時と同じロジックを用いて同期する必要のあるノード数にかかわりなく同期を成立させることできる。
【図面の簡単な説明】
【００６２】
【図１】分散コンピュータシステムの一例を説明する図である。
【図２】コンピュータノードの構成を説明する図である。
【図３】ノードの状態遷移図である。
【図４】同期成立条件としてＮ＝２の場合におけるノードの状態遷移図である。
【図５】同期状態の更新と非同期要素の排除を説明する図である。
【図６】同期状態の更新を説明する図である。
【図７】同期メッセージの自律的送信の抑制を説明する図である。
【図８】既存の同期系へのノードの追加／故障ノードの復帰時の動作を説明する図である。
【図９】コンピュータシステム中にノードが一式である場合のシステム初期時の動作を説明する参考図である。
【図１０】システム起動時の動作を説明する図である。
【符号の説明】
【００６３】
１      ノード
ＡＴ    非同期タイマ
ＮＷ    ネットワーク
ＳＭ    同期メッセージ
ＳＴ    同期タイマ
Ｗｑ    認証用ウインドウ
【図１】
0004753344.tif 000002
【図２】
0004753344.tif 000003
【図３】
0004753344.tif 000004
【図４】
0004753344.tif 000005
【図５】
0004753344.tif 000006
【図６】
0004753344.tif 000007
【図７】
0004753344.tif 000008
【図８】
0004753344.tif 000009
【図９】
0004753344.tif 000010
【図１０】
0004753344.tif 000011