(57)【要約】【課題】コンピュータの処理負荷を大きく増大させることなく、各コンピュータ間の処理の同期化を行う。【解決手段】ＣＰＵ部１１に含まれる複数のタスク１１２を、関連性のある処理ごとにタスクＧｒ１１１として、あらかじめ、グループ分けした情報を、タスクＧｒ処理状況テーブル１２２に記憶しておき、そのタスクＧｒ１１１に含まれるすべてのタスク１１２の処理が完了したときに、タスクＧｒ処理完了通知データ１２４を、他のコンピュータ１０に送信するとともに、他のコンピュータ１０からタスクＧｒ処理完了通知データ１２４を受信する。そして、自らが生成したタスクＧｒ処理完了通知データ１２４と他のコンピュータ１０から送信されたタスクＧｒ処理完了通知データ１２４とを照合し、それらのタスクＧｒ処理完了通知データ１２４がすべて一致したときに、次のタスクＧｒ１１１の処理を起動する。【選択図】図２
2011039798.tif 000002
【特許請求の範囲】
【請求項１】
複数タスクをそれぞれ独立に実行する複数のコンピュータを有してなる多重化コンピュータシステムであって、
前記コンピュータのそれぞれは、
前記複数のタスクをあらかじめグループ分けしたタスクグループごとに、そのタスクグループに属する各タスクの処理状況情報と、そのタスクグループに属するすべてのタスクの処理完了後に起動される次処理タスクグループの識別情報と、を含んでなるタスクグループ処理状況情報を記憶するタスクグループ処理状況情報記憶部を備え、
前記タスクの処理が完了するたびに、前記タスクグループ処理状況情報記憶部に記憶されたタスクグループ処理状況情報における前記完了したタスクに対する処理状況情報に、タスクが完了したことを示すタスク完了データを設定し、
前記完了したタスクが属するタスクグループに属するすべてのタスクの処理状況情報としてタスク完了データが設定されていた場合には、
前記タスクグループに属するすべてのタスクの処理が完了したことを示すタスクグループ完了データを含んでなるタスクグループ処理完了通知情報を生成し、その生成したタスクグループ処理完了通知情報を前記多重コンピュータシステムに含まれる他のコンピュータに送信し、
前記多重コンピュータシステムに含まれる他のコンピュータから同様にして送信されるタスクグループ処理完了通知情報を受信し、
前記生成したタスクグループ処理完了通知情報と、前記多重コンピュータシステムに含まれる他のすべてのコンピュータから送信されたタスクグループ処理完了通知情報と、を比較し、そのすべてのタスクグループ処理完了通知情報が同じであったとき、前記タスクグループ処理状況情報の次処理タスクグループの識別情報よって指定されるタスクグループに含まれるタスクを起動すること
を特徴とする多重化コンピュータシステム。
【請求項２】
前記タスクグループ処理完了通知情報は、
前記タスクグループ完了データに併せて、前記タスクグループに属するすべてのタスクの処理が完了したときに得られる処理結果のデータを含むこと
を特徴とする請求項１に記載の多重化コンピュータシステム。
【請求項３】
複数タスクをそれぞれ独立に実行する複数のコンピュータを有してなる多重化コンピュータシステムにおけるコンピュータであって、
前記複数のタスクをあらかじめグループ分けしたタスクグループごとに、そのタスクグループに属する各タスクの処理状況情報と、そのタスクグループに属するすべてのタスクの処理完了後に起動される次処理タスクグループの識別情報と、を含んでなるタスクグループ処理状況情報を記憶するタスクグループ処理状況情報記憶部を備え、
前記タスクの処理が完了するたびに、前記タスクグループ処理状況情報記憶部に記憶されたタスクグループ処理状況情報における前記完了したタスクに対する処理状況情報に、タスクが完了したことを示すタスク完了データを設定し、
前記完了したタスクが属するタスクグループに属するすべてのタスクの処理状況情報としてタスク完了データが設定されていた場合には、
前記タスクグループに属するすべてのタスクの処理が完了したことを示すタスクグループ完了データを含んでなるタスクグループ処理完了通知情報を生成し、その生成したタスクグループ処理完了通知情報を前記多重コンピュータシステムに含まれる他のコンピュータに送信し、
前記多重コンピュータシステムに含まれる他のコンピュータから同様にして送信されるタスクグループ処理完了通知情報を受信し、
前記生成したタスクグループ処理完了通知情報と、前記多重コンピュータシステムに含まれる他のすべてのコンピュータから送信されたタスクグループ処理完了通知情報と、を比較し、そのすべてのタスクグループ処理完了通知情報が同じであったとき、前記タスクグループ処理状況情報の次処理タスクグループの識別情報よって指定されるタスクグループに含まれるタスクを起動すること
を特徴とするコンピュータ。
【請求項４】
前記タスクグループ処理完了通知情報は、
前記タスクグループ完了データに併せて、前記タスクグループに属するすべてのタスクの処理が完了したときに得られる処理結果のデータを含むこと
を特徴とする請求項３に記載のコンピュータ。
【請求項５】
複数タスクをそれぞれ独立に実行する複数のコンピュータを有してなる多重化コンピュータシステムにおけるコンピュータ間処理同期化方法であって、
前記コンピュータのそれぞれは、
前記複数のタスクをあらかじめグループ分けしたタスクグループごとに、そのタスクグループに属する各タスクの処理状況情報と、そのタスクグループに属するすべてのタスクの処理完了後に起動される次処理タスクグループの識別情報と、を含んでなるタスクグループ処理状況情報を記憶するタスクグループ処理状況情報記憶部を備え、
前記タスクの処理が完了するたびに、前記タスクグループ処理状況情報記憶部に記憶されたタスクグループ処理状況情報における前記完了したタスクに対する処理状況情報に、タスクが完了したことを示すタスク完了データを設定し、
前記完了したタスクが属するタスクグループに属するすべてのタスクの処理状況情報としてタスク完了データが設定されていた場合には、
前記タスクグループに属するすべてのタスクの処理が完了したことを示すタスクグループ完了データを含んでなるタスクグループ処理完了通知情報を生成し、その生成したタスクグループ処理完了通知情報を前記多重コンピュータシステムに含まれる他のコンピュータに送信し、
前記多重コンピュータシステムに含まれる他のコンピュータから同様にして送信されるタスクグループ処理完了通知情報を受信し、
前記生成したタスクグループ処理完了通知情報と、前記多重コンピュータシステムに含まれる他のすべてのコンピュータから送信されたタスクグループ処理完了通知情報と、を比較し、そのすべてのタスクグループ処理完了通知情報が同じであったとき、前記タスクグループ処理状況情報の次処理タスクグループの識別情報よって指定されるタスクグループに含まれるタスクを起動すること
を特徴とするコンピュータ間処理同期化方法。
【請求項６】
前記タスクグループ処理完了通知情報は、
前記タスクグループ完了データに併せて、前記タスクグループに属するすべてのタスクの処理が完了したときに得られる処理結果のデータを含むこと
を特徴とする請求項５に記載のコンピュータ間処理同期化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多重化コンピュータシステム、ならびに、その多重化コンピュータシステムで用いられるコンピュータおよびコンピュータ間処理同期化方法に関する。
【背景技術】
【０００２】
コンピュータシステムの信頼性（耐故障性）を向上させるために、しばしば、複数のコンピュータを用いた多重化コンピュータシステムが構成される。そして、その多重化コンピュータシステムを構成する複数のコンピュータに全く同じ処理を同時に実行させ、その処理結果を、例えば、コンピュータの命令実行サイクルごとに比較照合することによって、故障や誤動作したコンピュータを検知することが行われている。
【０００３】
しかしながら、その多重化コンピュータシステムにおいては、各コンピュータの動作を命令実行レベルで同期化するために、例えば、各コンピュータに互いに同期した動作クロックを供給するとともに、各コンピュータの内部バスから得られるデータを直接比較照合することなどが必要となる。従って、そのような多重化コンピュータシステムは、汎用のコンピュータ（パソコンなど）を、単に、ネットワークなどを介して接続するだけでは構成することができず、たとえば、同期化した動作クロックを複数のコンピュータに供給する回路や各コンピュータの内部バスから得られるデータを比較照合する回路など、特別のハードウエアが必要となる。そのため、その製造コストは、高価にならざるを得ない。
【０００４】
この問題の解決を図るために、例えば、特許文献１には、互いにネットワークで接続されたコンピュータにより多重コンピュータシステムを構成する例が開示されている。その多重コンピュータシステムでは、その多重コンピュータシステムを構成するＮ台（Ｎは、３以上の整数）のコンピュータのうち、Ｎ−１台のコンピュータに互いに同じ処理を実行させ、他の１台のコンピュータには、前記Ｎ−１台のコンピュータの処理結果を比較照合させる。すなわち、前記Ｎ−１台のコンピュータのコンピュータは、そのコンピュータから外部へのデータ出力命令を実行したときには、その出力データを、直接システムの外部へ出力するのではなく、前記他の１台のコンピュータへ送信する。そして、前記他の１台のコンピュータは、前記Ｎ−１台のコンピュータから送信される出力データを比較照合して、すべて一致した出力データ、または、多数決により多数と判定された出力データを、システムの外部へ出力する。
【０００５】
このような多重コンピュータシステムは、汎用のコンピュータ（パソコンなど）をネットワークなどで接続することによって構成することが可能となり、また、同期化や照合のための特別のハードウエアは必要でなくなるが、出力データを比較照合して出力するためのコンピュータが別に必要となる。従って、特許文献１に記載された多重コンピュータシステムでは、十分な製造コストの低減を図ることができない。
【０００６】
そこで、本発明の出願人は、互いにネットワークを介して接続された複数のコンピュータで構成され、それぞれのコンピュータがタスクを完了するたびに、その処理結果を他のコンピュータに送信し合って、それぞれのコンピュータが自身の処理結果と他のコンピュータの処理結果とを照合するとともに、処理の同期化を行うようにした多重化コンピュータシステムについての発明を行い、すでに出願している（特許文献２参照）。その発明によれば、処理の同期化や比較照合のための特別なハードウエアも不要となり、また、比較照合のための余分のコンピュータも不要となる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平８−３１４７４４号公報
【特許文献２】特願２００８−６００１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献２に記載の発明では、多重コンピュータシステムを構成する各コンピュータが自身および他のコンピュータの処理結果についての比較照合処理を行い、また、その比較照合処理によって、各コンピュータ間での処理の同期化を図っている。しかしながら、その比較照合および同期化の処理は、各コンピュータにおけるアプリケーションタスクが終了するたびに行われているので、各コンピュータにとっては、その処理負荷が増大する結果となっている。
【０００９】
そこで、本発明の目的は、特別なハードウエアを必要とせず、しかも、各コンピュータの処理負荷の増大を抑制することが可能な、互いに処理の同期化を行う複数のコンピュータからなる多重化コンピュータシステム、ならびに、その多重化コンピュータシステムで用いられるコンピュータおよびコンピュータ間処理同期化方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、複数タスクをそれぞれ独立に実行する複数のコンピュータ有してなる多重化コンピュータシステムであって、前記コンピュータのそれぞれは、前記複数のタスクをあらかじめグループ分けしたタスクグループごとに、そのタスクグループに属する各タスクの処理状況情報と、そのタスクグループに属するすべてのタスクの処理完了後に起動される次処理タスクグループの識別情報と、を含んでなるタスクグループ処理状況情報を記憶するタスクグループ処理状況情報記憶部を備えて構成される。
【００１１】
そして、前記コンピュータのそれぞれは、前記タスクの処理が完了するたびに、前記タスクグループ処理状況情報記憶部に記憶されたタスクグループ処理状況情報における前記完了したタスクに対する処理状況情報に、タスクが完了したことを示すタスク完了データを設定し、前記完了したタスクが属するタスクグループに属するすべてのタスクの処理状況情報としてタスク完了データが設定されていた場合には、前記タスクグループに属するすべてのタスクの処理が完了したことを示すタスクグループ完了データを含んでなるタスクグループ処理完了通知情報を生成し、その生成したタスクグループ処理完了通知情報を前記多重コンピュータシステムに含まれる他のコンピュータに送信する。
【００１２】
さらに、前記コンピュータのそれぞれは、前記多重コンピュータシステムに含まれる他のコンピュータから同様にして送信されるタスクグループ処理完了通知情報を受信し、前記生成したタスクグループ処理完了通知情報と、前記多重コンピュータシステムに含まれる他のすべてのコンピュータから送信されたタスクグループ処理完了通知情報と、を比較し、そのすべてのタスクグループ処理完了通知情報が同じであったとき、前記タスクグループ処理状況情報の次処理タスクグループの識別情報よって指定されるタスクグループに含まれるタスクを起動する。
【００１３】
本発明の多重化コンピュータシステムによれば、その多重化コンピュータシステムに含まれるコンピュータのそれぞれは、タスクグループの処理が完了するたびに、その完了を通知するタスクグループ処理完了通知情報を送受信し合って、それぞれのコンピュータにおいて、自身が送信したタスクグループ処理完了通知情報と他のコンピュータから送信されたタスクグループ処理完了通知情報とがすべて同じになったときに、次に実行することがあらかじめ定められたタスクグループに含まれるタスクが起動される。
【００１４】
従って、本発明の多重化コンピュータシステムでは、処理が早く進行したコンピュータは、処理が遅く進行したコンピュータからのタスクグループ処理完了通知情報を受信してから、次のタスクグループの処理が実行されるので、各コンピュータ間での処理の同期化が実現される。また、この処理の同期化は、タスクの処理が完了するたびではなく、複数のタスクから構成されたタスクグループの処理が完了したときに行われるので、それぞれのコンピュータの処理負荷は、小さくて済む。
【発明の効果】
【００１５】
本発明によれば、互いに処理の同期化を行う複数のコンピュータからなる多重化コンピュータシステムにおいて、特別なハードウエアを必要とせずに、各コンピュータの処理負荷の増大を抑制することが可能になる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係る多重化コンピュータシステムが適用されたプラント監視・制御システムの構成の例を示した図。
【図２】本発明の実施形態に係る多重化コンピュータシステムで用いられるコンピュータの内部構成の例を示した図。
【図３】本発明の実施形態に係るコンピュータの記憶部に記憶され、その同期化照合処理で用いられる情報の構成の例を示した図。
【図４】本発明の実施形態に係るコンピュータにおけるタスク完了処理部の処理フローの例を示した図。
【図５】本発明の実施形態に係るコンピュータにおけるタスクＧｒ完了処理部の処理フローの例を示した図。
【図６】本発明の実施形態に係るコンピュータにおけるタスク完了処理およびタスクＧｒ完了処理が実行される様子を、タイムチャートを用いて例示した図。
【図７】本発明の実施形態に係る多重化コンピュータシステムにおける複数のコンピュータ間で処理の同期化が行われる様子を、タイムチャートを用いて例示した図。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態について、図面を参照して詳細に説明する。
【００１８】
図１は、本発明の実施形態に係る多重化コンピュータシステムが適用されたプラント監視・制御システムの構成の例を示した図である。
【００１９】
図１に示すように、本発明の実施形態に係る多重化コンピュータシステム１は、複数のコンピュータ１０がコンピュータ間通信ネットワーク１６を介して互いに接続されて構成される。図１では、多重化コンピュータシステム１は、３台のコンピュータ１０によって構成されているが、コンピュータの台数は、３台に限定されるものではない。多重化により何らかの高信頼性の特質を得るためには、コンピュータ１０の台数は、２台以上であればよい。
【００２０】
コンピュータ間通信ネットワーク１６は、多重化コンピュータシステム１に含まれる各コンピュータ１０間でデータ送受信を行うための専用の通信ネットワークである。従って、その通信路の全長は短くて済む（例えば、１０数ｃｍ〜数ｍ）ので、通信速度を高速化することができる。また、その通信路は、イーサネット（登録商標）のような一般的なシリアルの通信路で構成してもよいが、並列バスの通信路で構成してもよい。なお、図１では、コンピュータ間通信ネットワーク１６は、多重化されていないが、高信頼化のために多重化されていてもよい。
【００２１】
多重化コンピュータシステム１を構成する各コンピュータ１０は、また、その外部の通信ネットワークである入出力装置間通信ネットワーク２に接続されている。そして、その入出力装置間通信ネットワーク２には、例えば、プラントの各所に設けられた各種センサ３、各種制御装置のアクチュエータ４、監視センタ内に設けられた表示装置５、制御卓６などが接続されている。なお、図１では、センサ３およびアクチュエータ４は、それぞれ複数個（ｍ個およびｎ個）設けられるとしているが、それぞれ１個であってもよい。あるいは、多重化コンピュータシステム１の適用対象が単純な監視システムである場合には、アクチュエータ４は含まなくてもよい（ｎ＝０でもよい）。
【００２２】
このような入出力装置間通信ネットワーク２の通信路の全長は、一般に、長くなることが多い。従って、その通信路は、イーサネットのようなシリアルな通信路、ＺｉｇＢｅｅ（登録商標）のような無線の通信路、あるいは、それらを組み合わせた通信路によって構成される。なお、図１では、入出力装置間通信ネットワーク２は、多重化されていないが、高信頼化のために多重化されていてもよい。
【００２３】
さらに、図１に示すように、多重化コンピュータシステム１を構成する各コンピュータ１０は、ＣＰＵ（Central Processing Unit）部１１、記憶部１２、コンピュータ間通信ＩＦ（Interface）部１３、入出力装置間通信ＩＦ部１４などが、内部バス１５によって相互に接続されて構成される。
【００２４】
ここで、ＣＰＵ部１１は、マイクロプロセッサなどの集積回路装置によって構成され、記憶部１２は、ＲＡＭ（Random Access Memory）、フラッシュメモリなどの集積回路装置や、ハードディスク装置などによって構成される。また、コンピュータ間通信ＩＦ部１３は、ＣＰＵ部１１をコンピュータ間通信ネットワーク１６に接続するためのインタフェース回路などによって構成され、入出力装置間通信ＩＦ部１４は、ＣＰＵ部１１を入出力装置間通信ネットワーク２に接続するためのインタフェース回路などによって構成される。
【００２５】
図２は、本発明の実施形態に係る多重化コンピュータシステム１で用いられるコンピュータ１０の内部構成の例を示した図である。ここで、その内部構成とは、図１で示したコンピュータ１０の内部構成のうち、ＣＰＵ部１１および記憶部１２の内部構成を詳細に示したものである。また、その内部構成は、ハードウエアの構成ではなく、ソフトウエアの構成として示されている。すなわち、ＣＰＵ部１１の内部構成は、プログラムの構成として示され、記憶部１２の内部構成は、記憶部１２に記憶されるテーブルの一覧（ただし、本実施形態に関連するもの）として示されている。
【００２６】
図２によれば、ＣＰＵ部１１は、ＯＳ（Operating System）１１３と、アプリケーションプログラムとしての多数のタスク１１２と、を含んで構成されている。これは、ＣＰＵ部１１が、ＯＳ１１３のプログラムによって指定される機能、および、各タスク１１２のプログラムによって指定される機能を実現することを表している。ちなみに、ＯＳ１１３およびタスク１１２のプログラム自体は、記憶部１２に格納されているが、ＣＰＵ部１１の演算処理部（図示せず）は、記憶部１２からそのプログラムを読み出して、そのプログラムで指定された演算処理を実行することによって、そのプログラムによって指定された機能を実現する。
【００２７】
本実施形態に係るコンピュータ１０のＣＰＵ部１１におけるプログラム構成の特徴は、アプリケーションプログラムとしてのタスク１１２を、あらかじめ、その処理の関連性に基づいて、タスクＧｒ１１１にグループ分けしておくことにある。図２は、タスク１１２がｕ個のタスクＧｒ１１１にグループ分けされていることが示されている。さらに、＃１のタスクＧｒ１１１がｐ個のタスク１１２を含み、＃２のタスクＧｒ１１１がｑ個のタスク１１２を含み、・・・・、＃ｕのタスクＧｒ１１１がｓ個のタスク１１２を含むこと、が示されている。
【００２８】
例えば、次のようなタスク１１２は、互いに処理の関連性があるので、例えば、＃１のタスクＧｒ１１１にグループ化することができる。
（１）所定の時間ごとに、＃１のセンサ３を介してボイラに供給する燃料ガスの流量を取得する＃１１のタスク１１２、
（２）同様に、所定の時間ごとに、＃２のセンサ３を介してボイラ容器内の蒸気の温度を取得する＃１２のタスク１１２、
（３）前記取得した燃料ガスの流量および蒸気の温度の所定期間の履歴データをグラフにして表示装置５へ表示する＃１３のタスク１１２、
（４）前記取得した蒸気の温度が所定の温度以上になった場合には、燃料ガスの供給バルブを調節する＃１のアクチュエータ４に対し、流量を絞る指示を出力する＃１４のタスク１１２、
【００２９】
このようなタスク１１２のグループ分けは、システム設計者やタスクプログラムの設計者がそのタスクプログラムを設計したときに行うことができ、そのグループ分けの情報は、例えば、タスクプログラムをコンピュータ１０にローディングするときに記憶部１２に格納されるようにしておけばよい。本実施形態では、タスク１１２のグループ分けの情報は、そのローディングに際して、記憶部１２のタスク管理テーブル１２１に記憶される。なお、タスク管理テーブル１２１の詳細については、別途、後記する（図３参照）。
【００３０】
また、図２において、ＯＳ１１３は、例えば、リアルタイムＯＳであり、一般的には、タスク実行制御部１１４、入出力データ送受信制御部１１９など、タスク１１２の実行を制御したり、入出力装置（センサ３やアクチュエータ４など）に対するデータの入出力を制御したりするプログラムを含んで構成される。
【００３１】
本実施形態の場合、コンピュータ１０は、同じ多重化コンピュータシステム１に含まれる他のコンピュータ１０との間でタスク処理の同期化および処理結果の照合処理（以下、これらの処理を併せて同期化照合処理という）を行う。また、本実施形態では、そのコンピュータ１０の同期化照合処理を各タスク１１２の処理が完了するたびに行うのではなく、タスクＧｒ１１１に含まれる複数のタスク１１２の処理がすべて完了したときに行うようにすることを特徴としている。
【００３２】
そこで、コンピュータ１０のＯＳ１１３は、その同期化照合処理をサポートするために、タスク完了処理部１１５、タスクＧｒ完了処理部１１６、照合処理部１１７、通知データ送受信制御部１１８などの処理ブロックを備える。すなわち、本実施形態では、同期化照合処理は、コンピュータ１０の演算処理部がＯＳ１１３の処理に含まれるタスク完了処理部１１５以下の処理ブロックを実行するによって実現される。以下、同期化照合処理を実現するこれらの処理ブロックの機能について説明する。
【００３３】
タスク完了処理部１１５は、各タスク１１２の処理が完了したとき、そのタスク１１２が完了したことを示す情報をタスクＧｒ処理状況テーブル１２２（後記にて説明する図３を参照）に格納するとともに、そのタスクＧｒ処理状況テーブル１２２を参照して、前記の完了したタスク１１２が属するタスクＧｒ１１１に含まれる他のタスク１１２の処理がすべて完了しているか否かを判定する。そして、その判定により、同じタスクＧｒ１１１に含まれるすべてのタスク１１２の処理が完了していた場合には、タスク完了処理部１１５は、タスクＧｒ完了処理部１１６を起動する。
【００３４】
タスクＧｒ完了処理部１１６は、所定のタスクＧｒ処理完了通知データ１２４（後記にて説明する図３を参照）を生成し、通知データ送受信制御部１１８を介して、その生成したタスクＧｒ処理完了通知データ１２４を他のコンピュータ１０へ送信することによって、自コンピュータ１０において、当該タスクＧｒ１１１の処理が完了したことを他のコンピュータ１０に通知する。さらに、タスクＧｒ完了処理部１１６は、前記生成したタスクＧｒ処理完了通知データ１２４を同期化照合データテーブル１２３（後記にて説明する図３を参照）の自コンピュータ１０の領域に格納する。
【００３５】
通知データ送受信制御部１１８は、他のコンピュータ１０から送信されるタスクＧｒ処理完了通知データ１２４を受信して、その受信したタスクＧｒ処理完了通知データ１２４を、同期化照合データテーブル１２３の、そのタスクＧｒ処理完了通知データ１２４を送信したコンピュータ１０に割当てられた領域に格納する。
【００３６】
タスクＧｒ完了処理部１１６は、同期化照合データテーブル１２３に、自コンピュータ１０のタスクＧｒ処理完了通知データ１２４および他のコンピュータ１０から送信されたタスクＧｒ処理完了通知データ１２４がすべて格納されたことを確認した場合には、照合処理部１１７により、同期化照合データテーブル１２３に格納された各コンピュータ１０のタスクＧｒ処理完了通知データ１２４を比較照合する。そして、その比較照合の結果、同期化照合データテーブル１２３に格納された各コンピュータ１０のタスクＧｒ処理完了通知データ１２４がすべて一致した場合には、当該タスクＧｒ１１１の次に実行することがあらかじめ定められた他のタスクＧｒ１１１に含まれるタスク１１２を起動する。
【００３７】
以上、コンピュータ１０では、タスクＧｒ完了処理部１１６および照合処理部１１７の処理により、タスクＧｒ１１１の処理が完了するたびに、同期化照合処理が実行される。従って、多重化コンピュータシステム１に属する各コンピュータ１０では、タスクＧｒ１１１の処理が完了するたびに、処理の同期化が行われることになる。
【００３８】
図３は、本発明の実施形態に係るコンピュータ１０の記憶部１２に記憶され、その同期化照合処理で用いられる情報の構成の例を示した図である。
【００３９】
図３（ａ）に示すように、タスク管理テーブル１２１のレコードは、各タスク１１２に対応して生成され、「タスクＩＤ」、「タスクＧｒＩＤ」および「次実行タスクのタスクＩＤ」の各フィールドを含んで構成される。
【００４０】
ここで、「タスクＩＤ」は、タスク１１２の識別情報、「タスクＧｒＩＤ」は、「タスクＩＤ」によって指定されるタスク１１２が属するタスクＧｒ１１１の識別情報、「次実行タスクのタスクＩＤ」は、同じく「タスクＩＤ」によって指定されるタスク１１２の実行完了時に、次に実行するタスク１１２の識別情報である。
【００４１】
なお、ＣＰＵ部１１は、いずれのタスクＧｒ１１１にも属しないタスク１１２を含んでいても構わない。その場合には、そのタスク１１２に対するタスク管理テーブル１２１のレコードはなくてもよい。また、タスク管理テーブル１２１のレコードで、「次実行タスクのタスクＩＤ」のフィールドは、空欄であっても、あるいは、複数のタスクＩＤを含んでいても構わない。
【００４２】
次に、図３（ｂ）に示すように、タスクＧｒ処理状況テーブル１２２のレコードは、各タスクＧｒ１１１に対応して生成され、「タスクＧｒＩＤ」、「タスクＩＤ」、「タスク完了コード」および「次実行タスクＧｒのタスクＧｒＩＤ」の各フィールドを含んで構成される。
【００４３】
ここで、「タスクＧｒＩＤ」は、タスクＧｒ１１１の識別情報、「タスクＩＤ」は、その「タスクＧｒＩＤ」によって指定されるタスクＧｒ１１１に属するタスク１１２の識別情報、「タスク完了コード」は、前記「タスクＩＤ」によって指定されるタスク１１２の実行が完了したときに得られるデータ、「タスクＧｒ完了コード」は、前記「タスクＧｒＩＤ」によって指定されるタスクＧｒ１１１に属するすべてのタスク１１２の実行が完了したとき（すなわち、「タスクＧｒＩＤ」によって指定されるタスクＧｒ１１１の実行が完了したとき）に得られるデータ、「次実行タスクＧｒのタスクＧｒＩＤ」は、「タスクＧｒＩＤ」によって指定されるタスクＧｒ１１１の実行が完了したとき、次に実行するタスクＧｒ１１１の識別情報である。
【００４４】
このうち、「タスクＩＤ」および「タスク完了コード」は、互いに対を形成するフィールドであり、その対の数は、「タスクＧｒＩＤ」によって指定されるタスクＧｒ１１１に属するタスク１１２の数に等しい。そして、「タスク完了コード」は、「完了ビット」および「完了データ」によって構成される。ここで、「完了ビット」は、当該「タスク完了コード」の対のタスク１１２が完了したか否かを示す“１”または“０”の１ビットのデータ、「完了データ」は、同タスク１１２が完了したときの処理結果のデータである。なお、その処理結果のデータは、タスク１１２の実行により得られる生データであってもよく、また、その生データのチェックサム、ハッシュコード、ＣＲＣ（Cyclic Redundancy Code）などであってもよい。
【００４５】
同様に、「タスクＧｒ完了コード」は、「完了ビット」および「完了データ」によって構成される。「完了ビット」は、当該タスクＧｒ１１１に含まれるタスク１１２がすべて完了したか否かを示す“１”または“０”の１ビットのデータ、「完了データ」は、同タスクＧｒに属するすべてのタスク１１２が完了したときの処理結果のデータである。なお、その処理結果のデータは、当該タスクＧｒ１１１に含まれる各タスク１１２の「完了データ」を連結したデータについてのチェックサム、ハッシュコード、ＣＲＣなどであってもよい。
【００４６】
次に、図３（ｃ）に示すように、タスクＧｒ処理完了通知データ１２４は、「コンピュータＩＤ」、「タスクＧｒＩＤ」および「タスクＧｒ完了コード」の各フィールドを含んで構成される。
【００４７】
ここで、「コンピュータＩＤ」は、自コンピュータ１０を識別する識別情報、「タスクＧｒＩＤ」および「タスクＧｒ完了コード」は、前記タスクＧｒ処理状況テーブル１２２から「タスクＧｒＩＤ」および「タスクＧｒ完了コード」を抽出したものである。
【００４８】
次に、図３（ｄ）に示すように、同期化照合データテーブル１２３は、自コンピュータ１０のタスクＧｒ処理完了通知データ１２４、および、当該多重化コンピュータシステム１に含まれる他のすべてのコンピュータ１０から送信されたタスクＧｒ処理完了通知データ１２４によって構成される。この同期化照合データテーブル１２３は、後記するように、タスクＧｒ完了処理部１１６の処理で生成されるとともに、照合処理部１１７の処理で用いられる。
【００４９】
図４は、本発明の実施形態に係るコンピュータ１０におけるタスク完了処理部１１５の処理フローの例を示した図である。この処理は、タスク実行制御部１１４がタスク１１２の処理の完了を検知するたびに起動され、実行される。
【００５０】
タスク完了処理部１１５は、タスク実行制御部１１４からタスク１１２の処理完了の通知を受けると、まず、タスク実行制御部１１４から、処理完了タスクのタスクＩＤを取得する（ステップＳ１１）。次に、タスク完了処理部１１５は、タスク管理テーブル１２１を参照して、前記取得したタスクＩＤで指定されるタスク１１２（すなわち、処理完了タスク）が属するタスクＧｒ１１１のタスクＧｒＩＤを取得する（ステップＳ１２）。
【００５１】
次に、タスク完了処理部１１５は、前記取得したタスクＧｒＩＤによって指定されるタスクＧｒ１１１のタスクＧｒ処理状況テーブル１２２における前記の処理完了タスクに対応するタスク完了コードに処理完了を示すデータを設定する（ステップＳ１３）。すなわち、このステップでは、処理が完了したタスク１１２に対応するタスク完了コードの完了ビットに“１”がセットされ、そのタスク１１２の処理結果としての完了データが設定される。
【００５２】
次に、タスク完了処理部１１５は、当該タスクＧｒ１１１のタスクＧｒ処理状況テーブル１２２を参照して、当該タスクＧｒ１１１に属するすべてのタスク１１２の処理が完了したか否かを判定する（ステップＳ１４）。そして、当該タスクＧｒ１１１に属するすべてのタスク１１２の処理が完了していた場合には（ステップＳ１４でＹｅｓ）、タスク完了処理部１１５は、タスクＧｒ完了処理部１１６を起動して（ステップＳ１５）、自らの処理を終了する。
【００５３】
一方、タスク完了処理部１１５は、ステップＳ１４で、当該タスクＧｒ１１１に属するすべてのタスク１１２の処理が完了していなかった場合には（ステップＳ１４でＮｏ）、さらに、タスク管理テーブル１２１を参照して、当該処理完了タスク１１２に次実行タスクが設定されているか否かを判定する（ステップＳ１６）。そして、その判定の結果、次実行タスクが設定されていた場合には（ステップＳ１６でＹｅｓ）、タスク完了処理部１１５は、その設定されている次実行タスクを起動して（ステップＳ１７）、自らの処理を終了する。一方、次実行タスクが設定されていなかった場合には（ステップＳ１６でＮｏ）、そのまま、自らの処理を終了する。
【００５４】
図５は、本発明の実施形態に係るコンピュータ１０におけるタスクＧｒ完了処理部１１６の処理フローの例を示した図である。この処理は、タスク完了処理部１１５によって起動される。
【００５５】
タスクＧｒ完了処理部１１６は、タスク完了処理部１１５からタスクＧｒＩＤを取得し（ステップＳ２０）、その取得したタスクＧｒＩＤで指定されるタスクＧｒのタスクＧｒ処理状況テーブル１２２におけるタスクＧｒ完了コードにタスクＧｒの処理完了を示すデータを設定する（ステップＳ２１）。すなわち、このステップでは、タスクＧｒ処理状況テーブル１２２のタスクＧｒ完了コードの完了ビットに“１”がセットされる。
【００５６】
次に、タスクＧｒ完了処理部１１６は、タスクＧｒ処理状況テーブル１２２に基づき、タスクＧｒ処理完了通知データ１２４を生成し、その生成したタスクＧｒ処理完了通知データ１２４を、多重化コンピュータシステム１の他のコンピュータ１０へ送信するとともに（ステップＳ２２）、同期化照合データテーブル１２３の自コンピュータ１０のレコード領域に格納する（ステップＳ２３）。
【００５７】
なお、このとき相前後して、他のコンピュータ１０から、同様にして生成されたタスクＧｒ処理完了通知データ１２４が送信される。そのタスクＧｒ処理完了通知データ１２４は、通知データ送受信制御部１１８によって受信され、受信されたタスクＧｒ処理完了通知データ１２４は、それぞれ、同期化照合データテーブル１２３のそれぞれのコンピュータ１０に対応するレコード領域に格納される。
【００５８】
そこで、タスクＧｒ完了処理部１１６は、同期化照合データテーブル１２３を参照して（ステップＳ２４）、他のすべてのコンピュータからタスクＧｒ処理完了通知データ１２４を受信したか否かを判定する（ステップＳ２５）。その判定の結果、他のすべてのコンピュータ１０からタスクＧｒ処理完了通知データ１２４を受信していない場合には（ステップＳ２５でＮｏ）、同期化照合データテーブル１２３を参照するステップＳ２４へ戻る。また、他のすべてのコンピュータからタスクＧｒ処理完了通知データ１２４を受信して場合には（ステップＳ２５でＹｅｓ）、タスクＧｒ完了処理部１１６は、照合処理を実行する（ステップＳ２６）。
【００５９】
ここで、照合処理は、照合処理部１１７によって実行され、同期化照合データテーブル１２３におけるすべてのコンピュータ１０のタスクＧｒＩＤおよびタスクＧｒ完了コードが一致しているか否かを照合する。そして、その照合の結果、すべてのコンピュータ１０のタスクＧｒＩＤおよびタスクＧｒ完了コードが一致していた場合には（ステップＳ２７でＹｅｓ）、タスクＧｒ完了処理部１１６は、タスクＧｒ処理状況テーブル１２２の次実行タスクＧｒのタスクＧｒＩＤで指定されるタスクＧｒ１１１に含まれるタスク１１２を起動し（ステップＳ２８）、自身の処理を終了する。
【００６０】
なお、ステップＳ２８において、タスクＧｒ完了処理部１１６は、次実行タスクＧｒのタスクＧｒＩＤで指定されるタスクＧｒ処理状況テーブル１２２のレコードを参照して、その中に含まれるタスクＩＤで指定されるタスク１１２のうち、最も優先度の高いタスク１１２を起動する。ここで、タスク１１２の優先度は、例えば、タスクＧｒ処理状況テーブル１２２のレコードにおいて、先に現れるタスクＩＤで指定されるタスク１１２ほど高い、と定めておくとよい。あるいは、タスクＧｒ処理状況テーブル１２２に、各タスクＩＤごとに、そのタスク１１２に対応する優先度のフィールドを設けておいてもよい。
【００６１】
一方、照合の結果、すべてのコンピュータ１０のタスクＧｒＩＤおよびタスクＧｒ完了コードが一致していなかった場合には（ステップＳ２７でＮｏ）、いずれかのコンピュータ１０が故障または誤動作していることになるので、照合不一致時の処理を起動し（ステップＳ２９）、自身の処理を終了する。
【００６２】
本明細書では、照合不一致時の処理の詳細についての詳細な説明を省略するが、多重化コンピュータシステム１が、例えば、３台以上のコンピュータ１０によって構成されている場合には、多数決により故障または誤動作しているコンピュータ１０を判定することができる。そこで、そのような場合には、照合不一致時の処理は、故障または誤動作していると判定したコンピュータ１０を多重化コンピュータシステム１から切り離すなどの処理を実行する。こうした照合不一致時の処理によって、多重化コンピュータシステム１は、１台のコンピュータ１０の故障または誤動作をマスクすることができ、システムとしての信頼性を向上させることができる。
【００６３】
図６は、本発明の実施形態に係るコンピュータ１０におけるタスク完了処理およびタスクＧｒ完了処理が実行される様子を、タイムチャートを用いて例示した図である。
【００６４】
図６（ａ）において、タスクＧｒ処理の「ＴＧ＃１」および「ＴＧ＃２」は、それぞれ、タスクＧｒＩＤがＴＧ＃１およびＴＧ＃２のタスクＧ１１が処理されている時間範囲を示している。また、図６（ｂ）において、タスク処理の「Ｔ＃１１」、「Ｔ＃１２」、「Ｔ＃１３」および「Ｔ＃２１」は、それぞれ、タスクＩＤがＴ＃１１、Ｔ＃１２、Ｔ＃１３およびＴ＃２１のタスクが実行されている時間範囲を示している。
【００６５】
また、図６（ｃ）タスク完了処理のタイムチャートからは、各タスク処理の実行が完了するたびに、タスク完了処理が実行されていることが分かる。そして、そのタスク完了処理の実行により、タスクＧｒ処理状況テーブル１２２における各タスクＩＤに対応するタスク完了コードの完了ビット（図６（ｆ）、（ｇ）、（ｈ）では、Ｔ＃１１完了ビット、Ｔ＃１２完了ビットおよびＴ＃１３完了ビットと略称）が“１”にセットされる。なお、これらの完了ビットは、コンピュータ１０の初期化時に“０”にクリアされているものとする。
【００６６】
また、図６（ｄ）タスクＧｒ完了処理のタイムチャートからは、タスクＧｒＩＤがＴＧ＃１のタスクＧｒ１１１に含まれるタスク１１２のうち、最後のＴ＃１３のタスク１１２の実行が完了したとき、タスクＧｒ完了処理が実行される。なお、Ｔ＃１３のタスク１１２がＴＧ＃１のタスクＧｒ１１１の最後のタスク１１２であることは、各タスク１１２に対応する完了ビット（図６（ｆ）Ｔ＃１１完了ビット、（ｇ）Ｔ＃１２完了ビットおよび（ｈ）Ｔ＃１３完了ビット）がすべて“１”にセットか否かを判定することによって検知することができる。
【００６７】
続いて、図６（ｄ）タスクＧｒ完了処理では、タスクＧｒ処理状況テーブル１２２におけるタスクＧｒ完了コードの完了ビット（図６（ｉ）ＴＧ＃１完了ビット）が“１”にセットされ、さらに、その処理の中で、（ｅ）照合処理が実行され、同期化照合データテーブル１２３が参照される。そして、その（ｅ）照合処理における照合が成功すると（すなわち、同期化照合データテーブル１２３における各コンピュータ１０についてのタスクＧｒＩＤとタスクＧｒ完了コードがすべて同じであった場合）、各タスク１１２に対応するタスク完了コードの完了ビット（図６（ｆ）Ｔ＃１１完了ビット、（ｇ）Ｔ＃１２完了ビットおよび（ｈ）Ｔ＃１３完了ビット）は、すべてクリアされ、さらに、タスクＧｒ完了コードの完了ビット（図６（ｉ）ＴＧ＃１完了ビット）もクリアされる。
【００６８】
その後、タスクＧｒＩＤがＴＧ＃１のタスクＧｒ１１１についての（ｃ）タスクＧｒ完了処理が完了すると、図６（ａ）、（ｂ）に示すように、次のタスクＧｒ処理として、タスクＧｒＩＤがＴＧ＃２のタスクＧｒ１１１に含まれる、タスクＩＤがＴ＃２１のタスク１１２の実行が開始される。
【００６９】
図７は、本発明の実施形態に係る多重化コンピュータシステム１における複数のコンピュータ１０間で処理の同期化が行われる様子を、タイムチャートを用いて例示した図である。
【００７０】
同じタスク１１２の処理を実行しても、複数のコンピュータ１０間では、そのタスク１１２の処理完了に多少の時間のずれを生じるのが一般的である。従って、複数のコンピュータ１０間では、適宜、処理の同期化を行う必要がある。本実施形態では、その処理の同期化は、複数のタスク１１２によって構成されたタスクＧｒ１１１が完了したときに行われるので、同期化が、例えば、タスク１１２の完了時に行われる場合に比べ、その時間のずれは、大きくなる場合が多い。
【００７１】
図７に示すように、例えば、＃１のコンピュータ１０において（ａ）タスクＧｒ完了処理が開始されると、タスクＧｒ処理完了通知データ１２４が生成され（図５、ステップＳ２２参照：図７では、通知データ生成と記載）、その生成されたタスクＧｒ処理完了通知データ１２４は、他のコンピュータに送信される（図７（ｂ）通知データ送受信処理）とともに、自コンピュータ１０に対応する同期化照合データテーブル１２３に格納される。このとき、同期化照合データテーブル１２３においては、自コンピュータ１０に対応するタスクＧｒ完了コードの完了ビット（図７では、（ｃ）Ｃ＃１完了ビットと記載）には、“１”がセットされる。
【００７２】
その後、遅れて、＃２のコンピュータ１０および＃３のコンピュータ１０においても、タスクＧｒ完了処理（図７（ｆ）、（ｈ））が実行されると、タスクＧｒ処理完了通知データ１２４が生成される。その生成されたタスクＧｒ処理完了通知データ１２４は、＃１のコンピュータ１０へ送信される（図７（ｇ）、（ｉ）通知データ送受信処理）。
【００７３】
＃１のコンピュータ１０は、＃２のコンピュータ１０および＃３のコンピュータ１０からそれぞれ送信されるタスクＧｒ処理完了通知データ１２４を受信すると（図７（ｂ）通知データ送受信処理）、その受信したタスクＧｒ処理完了通知データ１２４を、各コンピュータ１０に対応する同期化照合データテーブル１２３のレコード領域に格納する。このとき、同期化照合データテーブル１２３においては、＃２のコンピュータ１０および＃３のコンピュータ１０に対応するタスクＧｒ完了コードの完了ビット（図７では、（ｄ）Ｃ＃２完了ビットおよび（ｅ）Ｃ＃３完了ビットと記載）には、“１”がセットされる。
【００７４】
＃１のコンピュータ１０における照合処理は、同期化照合データテーブル１２３における各コンピュータ１０に対応するタスクＧｒ完了コードの完了ビットがすべて“１”にセットされたときに実行される（図５のステップＳ２５でＹｅｓ）。そして、その照合処理で同期化照合データテーブル１２３の各コンピュータ１０に対応するタスクＧｒＩＤおよびタスクＧｒ完了コードがすべて一致した場合には（図７では、照合一致と記載、図５のステップＳ２７でＹｅｓ）、タスクＧｒ処理状況テーブル１２２によって指定されたタスクＧｒ１１１に含まれるタスク１１２（図７では、次タスクと記載）を起動する（図５のステップＳ２８）。
【００７５】
また、＃２のコンピュータ１０および＃３のコンピュータ１０においても、同様にして照合処理が実行され、照合一致の場合には、同様に指定されたタスクＧｒ１１１に含まれる次タスク１１２が起動される。このとき、照合処理が開始される条件は、同期化照合データテーブル１２３における同期化照合データテーブル１２３の各コンピュータ１０に対応するタスクＧｒ完了コードの完了ビットがすべて“１”になったときであるので、各コンピュータ１０では、最も遅くタスクＧｒ完了コードの完了ビットが“１”になったコンピュータ１０の処理に合わせて、ほぼ同時に次タスク１１２が起動されることになる。
【００７６】
本実施形態では、以上のようにして、複数のコンピュータ１０間で処理の同期化が行われ、処理結果の照合（同期化照合処理）が行われる。その同期化照合処理は、タスク１１２が完了するたびではではなく、複数のタスク１１２から構成されたタスクＧｒ１１１の処理が完了するたびに行われるので、タスク１１２が完了するたびに同期照合処理を行う場合に比べ、コンピュータ１０の処理負荷を軽減することができる。
【符号の説明】
【００７７】
１      多重化コンピュータシステム
２      入出力装置間通信ネットワーク
３      センサ
４      アクチュエータ
５      表示装置
６      制御卓
１０    自コンピュータ
１０    コンピュータ
１１    ＣＰＵ部
１２    記憶部
１３    コンピュータ間通信ＩＦ部
１４    入出力装置間通信ＩＦ部
１５    内部バス
１６    コンピュータ間通信ネットワーク
１１１  タスクＧｒ
１１２  タスク
１１３  ＯＳ
１１４  タスク実行制御部
１１５  タスク完了処理部
１１６  タスクＧｒ完了処理部
１１７  照合処理部
１１８  通知データ送受信制御部
１１９  入出力データ送受信制御部
１２１  タスク管理テーブル
１２２  タスクＧｒ処理状況テーブル
１２３  同期化照合データテーブル
１２４  タスクＧｒ処理完了通知データ
【図１】
2011039798.tif 000003
【図２】
2011039798.tif 000004
【図３】
2011039798.tif 000005
【図４】
2011039798.tif 000006
【図５】
2011039798.tif 000007
【図６】
2011039798.tif 000008
【図７】
2011039798.tif 000009