JP2011039798A - 多重化コンピュータシステム、コンピュータおよびコンピュータ間処理同期化方法 - Google Patents

多重化コンピュータシステム、コンピュータおよびコンピュータ間処理同期化方法 Download PDF

Info

Publication number
JP2011039798A
JP2011039798A JP2009186949A JP2009186949A JP2011039798A JP 2011039798 A JP2011039798 A JP 2011039798A JP 2009186949 A JP2009186949 A JP 2009186949A JP 2009186949 A JP2009186949 A JP 2009186949A JP 2011039798 A JP2011039798 A JP 2011039798A
Authority
JP
Japan
Prior art keywords
task
processing
task group
completion
completed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009186949A
Other languages
English (en)
Inventor
Katsufumi Watabiki
克文 綿引
Yuki Takahashi
祐樹 高橋
Keiji Kuwabara
啓二 桑原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2009186949A priority Critical patent/JP2011039798A/ja
Publication of JP2011039798A publication Critical patent/JP2011039798A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】コンピュータの処理負荷を大きく増大させることなく、各コンピュータ間の処理の同期化を行う。
【解決手段】CPU部11に含まれる複数のタスク112を、関連性のある処理ごとにタスクGr111として、あらかじめ、グループ分けした情報を、タスクGr処理状況テーブル122に記憶しておき、そのタスクGr111に含まれるすべてのタスク112の処理が完了したときに、タスクGr処理完了通知データ124を、他のコンピュータ10に送信するとともに、他のコンピュータ10からタスクGr処理完了通知データ124を受信する。そして、自らが生成したタスクGr処理完了通知データ124と他のコンピュータ10から送信されたタスクGr処理完了通知データ124とを照合し、それらのタスクGr処理完了通知データ124がすべて一致したときに、次のタスクGr111の処理を起動する。
【選択図】図2

Description

本発明は、多重化コンピュータシステム、ならびに、その多重化コンピュータシステムで用いられるコンピュータおよびコンピュータ間処理同期化方法に関する。
コンピュータシステムの信頼性(耐故障性)を向上させるために、しばしば、複数のコンピュータを用いた多重化コンピュータシステムが構成される。そして、その多重化コンピュータシステムを構成する複数のコンピュータに全く同じ処理を同時に実行させ、その処理結果を、例えば、コンピュータの命令実行サイクルごとに比較照合することによって、故障や誤動作したコンピュータを検知することが行われている。
しかしながら、その多重化コンピュータシステムにおいては、各コンピュータの動作を命令実行レベルで同期化するために、例えば、各コンピュータに互いに同期した動作クロックを供給するとともに、各コンピュータの内部バスから得られるデータを直接比較照合することなどが必要となる。従って、そのような多重化コンピュータシステムは、汎用のコンピュータ(パソコンなど)を、単に、ネットワークなどを介して接続するだけでは構成することができず、たとえば、同期化した動作クロックを複数のコンピュータに供給する回路や各コンピュータの内部バスから得られるデータを比較照合する回路など、特別のハードウエアが必要となる。そのため、その製造コストは、高価にならざるを得ない。
この問題の解決を図るために、例えば、特許文献1には、互いにネットワークで接続されたコンピュータにより多重コンピュータシステムを構成する例が開示されている。その多重コンピュータシステムでは、その多重コンピュータシステムを構成するN台(Nは、3以上の整数)のコンピュータのうち、N−1台のコンピュータに互いに同じ処理を実行させ、他の1台のコンピュータには、前記N−1台のコンピュータの処理結果を比較照合させる。すなわち、前記N−1台のコンピュータのコンピュータは、そのコンピュータから外部へのデータ出力命令を実行したときには、その出力データを、直接システムの外部へ出力するのではなく、前記他の1台のコンピュータへ送信する。そして、前記他の1台のコンピュータは、前記N−1台のコンピュータから送信される出力データを比較照合して、すべて一致した出力データ、または、多数決により多数と判定された出力データを、システムの外部へ出力する。
このような多重コンピュータシステムは、汎用のコンピュータ(パソコンなど)をネットワークなどで接続することによって構成することが可能となり、また、同期化や照合のための特別のハードウエアは必要でなくなるが、出力データを比較照合して出力するためのコンピュータが別に必要となる。従って、特許文献1に記載された多重コンピュータシステムでは、十分な製造コストの低減を図ることができない。
そこで、本発明の出願人は、互いにネットワークを介して接続された複数のコンピュータで構成され、それぞれのコンピュータがタスクを完了するたびに、その処理結果を他のコンピュータに送信し合って、それぞれのコンピュータが自身の処理結果と他のコンピュータの処理結果とを照合するとともに、処理の同期化を行うようにした多重化コンピュータシステムについての発明を行い、すでに出願している(特許文献2参照)。その発明によれば、処理の同期化や比較照合のための特別なハードウエアも不要となり、また、比較照合のための余分のコンピュータも不要となる。
特開平8−314744号公報 特願2008−60016号公報
特許文献2に記載の発明では、多重コンピュータシステムを構成する各コンピュータが自身および他のコンピュータの処理結果についての比較照合処理を行い、また、その比較照合処理によって、各コンピュータ間での処理の同期化を図っている。しかしながら、その比較照合および同期化の処理は、各コンピュータにおけるアプリケーションタスクが終了するたびに行われているので、各コンピュータにとっては、その処理負荷が増大する結果となっている。
そこで、本発明の目的は、特別なハードウエアを必要とせず、しかも、各コンピュータの処理負荷の増大を抑制することが可能な、互いに処理の同期化を行う複数のコンピュータからなる多重化コンピュータシステム、ならびに、その多重化コンピュータシステムで用いられるコンピュータおよびコンピュータ間処理同期化方法を提供することにある。
本発明は、複数タスクをそれぞれ独立に実行する複数のコンピュータ有してなる多重化コンピュータシステムであって、前記コンピュータのそれぞれは、前記複数のタスクをあらかじめグループ分けしたタスクグループごとに、そのタスクグループに属する各タスクの処理状況情報と、そのタスクグループに属するすべてのタスクの処理完了後に起動される次処理タスクグループの識別情報と、を含んでなるタスクグループ処理状況情報を記憶するタスクグループ処理状況情報記憶部を備えて構成される。
そして、前記コンピュータのそれぞれは、前記タスクの処理が完了するたびに、前記タスクグループ処理状況情報記憶部に記憶されたタスクグループ処理状況情報における前記完了したタスクに対する処理状況情報に、タスクが完了したことを示すタスク完了データを設定し、前記完了したタスクが属するタスクグループに属するすべてのタスクの処理状況情報としてタスク完了データが設定されていた場合には、前記タスクグループに属するすべてのタスクの処理が完了したことを示すタスクグループ完了データを含んでなるタスクグループ処理完了通知情報を生成し、その生成したタスクグループ処理完了通知情報を前記多重コンピュータシステムに含まれる他のコンピュータに送信する。
さらに、前記コンピュータのそれぞれは、前記多重コンピュータシステムに含まれる他のコンピュータから同様にして送信されるタスクグループ処理完了通知情報を受信し、前記生成したタスクグループ処理完了通知情報と、前記多重コンピュータシステムに含まれる他のすべてのコンピュータから送信されたタスクグループ処理完了通知情報と、を比較し、そのすべてのタスクグループ処理完了通知情報が同じであったとき、前記タスクグループ処理状況情報の次処理タスクグループの識別情報よって指定されるタスクグループに含まれるタスクを起動する。
本発明の多重化コンピュータシステムによれば、その多重化コンピュータシステムに含まれるコンピュータのそれぞれは、タスクグループの処理が完了するたびに、その完了を通知するタスクグループ処理完了通知情報を送受信し合って、それぞれのコンピュータにおいて、自身が送信したタスクグループ処理完了通知情報と他のコンピュータから送信されたタスクグループ処理完了通知情報とがすべて同じになったときに、次に実行することがあらかじめ定められたタスクグループに含まれるタスクが起動される。
従って、本発明の多重化コンピュータシステムでは、処理が早く進行したコンピュータは、処理が遅く進行したコンピュータからのタスクグループ処理完了通知情報を受信してから、次のタスクグループの処理が実行されるので、各コンピュータ間での処理の同期化が実現される。また、この処理の同期化は、タスクの処理が完了するたびではなく、複数のタスクから構成されたタスクグループの処理が完了したときに行われるので、それぞれのコンピュータの処理負荷は、小さくて済む。
本発明によれば、互いに処理の同期化を行う複数のコンピュータからなる多重化コンピュータシステムにおいて、特別なハードウエアを必要とせずに、各コンピュータの処理負荷の増大を抑制することが可能になる。
本発明の実施形態に係る多重化コンピュータシステムが適用されたプラント監視・制御システムの構成の例を示した図。 本発明の実施形態に係る多重化コンピュータシステムで用いられるコンピュータの内部構成の例を示した図。 本発明の実施形態に係るコンピュータの記憶部に記憶され、その同期化照合処理で用いられる情報の構成の例を示した図。 本発明の実施形態に係るコンピュータにおけるタスク完了処理部の処理フローの例を示した図。 本発明の実施形態に係るコンピュータにおけるタスクGr完了処理部の処理フローの例を示した図。 本発明の実施形態に係るコンピュータにおけるタスク完了処理およびタスクGr完了処理が実行される様子を、タイムチャートを用いて例示した図。 本発明の実施形態に係る多重化コンピュータシステムにおける複数のコンピュータ間で処理の同期化が行われる様子を、タイムチャートを用いて例示した図。
以下、本発明の実施形態について、図面を参照して詳細に説明する。
図1は、本発明の実施形態に係る多重化コンピュータシステムが適用されたプラント監視・制御システムの構成の例を示した図である。
図1に示すように、本発明の実施形態に係る多重化コンピュータシステム1は、複数のコンピュータ10がコンピュータ間通信ネットワーク16を介して互いに接続されて構成される。図1では、多重化コンピュータシステム1は、3台のコンピュータ10によって構成されているが、コンピュータの台数は、3台に限定されるものではない。多重化により何らかの高信頼性の特質を得るためには、コンピュータ10の台数は、2台以上であればよい。
コンピュータ間通信ネットワーク16は、多重化コンピュータシステム1に含まれる各コンピュータ10間でデータ送受信を行うための専用の通信ネットワークである。従って、その通信路の全長は短くて済む(例えば、10数cm〜数m)ので、通信速度を高速化することができる。また、その通信路は、イーサネット(登録商標)のような一般的なシリアルの通信路で構成してもよいが、並列バスの通信路で構成してもよい。なお、図1では、コンピュータ間通信ネットワーク16は、多重化されていないが、高信頼化のために多重化されていてもよい。
多重化コンピュータシステム1を構成する各コンピュータ10は、また、その外部の通信ネットワークである入出力装置間通信ネットワーク2に接続されている。そして、その入出力装置間通信ネットワーク2には、例えば、プラントの各所に設けられた各種センサ3、各種制御装置のアクチュエータ4、監視センタ内に設けられた表示装置5、制御卓6などが接続されている。なお、図1では、センサ3およびアクチュエータ4は、それぞれ複数個(m個およびn個)設けられるとしているが、それぞれ1個であってもよい。あるいは、多重化コンピュータシステム1の適用対象が単純な監視システムである場合には、アクチュエータ4は含まなくてもよい(n=0でもよい)。
このような入出力装置間通信ネットワーク2の通信路の全長は、一般に、長くなることが多い。従って、その通信路は、イーサネットのようなシリアルな通信路、ZigBee(登録商標)のような無線の通信路、あるいは、それらを組み合わせた通信路によって構成される。なお、図1では、入出力装置間通信ネットワーク2は、多重化されていないが、高信頼化のために多重化されていてもよい。
さらに、図1に示すように、多重化コンピュータシステム1を構成する各コンピュータ10は、CPU(Central Processing Unit)部11、記憶部12、コンピュータ間通信IF(Interface)部13、入出力装置間通信IF部14などが、内部バス15によって相互に接続されて構成される。
ここで、CPU部11は、マイクロプロセッサなどの集積回路装置によって構成され、記憶部12は、RAM(Random Access Memory)、フラッシュメモリなどの集積回路装置や、ハードディスク装置などによって構成される。また、コンピュータ間通信IF部13は、CPU部11をコンピュータ間通信ネットワーク16に接続するためのインタフェース回路などによって構成され、入出力装置間通信IF部14は、CPU部11を入出力装置間通信ネットワーク2に接続するためのインタフェース回路などによって構成される。
図2は、本発明の実施形態に係る多重化コンピュータシステム1で用いられるコンピュータ10の内部構成の例を示した図である。ここで、その内部構成とは、図1で示したコンピュータ10の内部構成のうち、CPU部11および記憶部12の内部構成を詳細に示したものである。また、その内部構成は、ハードウエアの構成ではなく、ソフトウエアの構成として示されている。すなわち、CPU部11の内部構成は、プログラムの構成として示され、記憶部12の内部構成は、記憶部12に記憶されるテーブルの一覧(ただし、本実施形態に関連するもの)として示されている。
図2によれば、CPU部11は、OS(Operating System)113と、アプリケーションプログラムとしての多数のタスク112と、を含んで構成されている。これは、CPU部11が、OS113のプログラムによって指定される機能、および、各タスク112のプログラムによって指定される機能を実現することを表している。ちなみに、OS113およびタスク112のプログラム自体は、記憶部12に格納されているが、CPU部11の演算処理部(図示せず)は、記憶部12からそのプログラムを読み出して、そのプログラムで指定された演算処理を実行することによって、そのプログラムによって指定された機能を実現する。
本実施形態に係るコンピュータ10のCPU部11におけるプログラム構成の特徴は、アプリケーションプログラムとしてのタスク112を、あらかじめ、その処理の関連性に基づいて、タスクGr111にグループ分けしておくことにある。図2は、タスク112がu個のタスクGr111にグループ分けされていることが示されている。さらに、#1のタスクGr111がp個のタスク112を含み、#2のタスクGr111がq個のタスク112を含み、・・・・、#uのタスクGr111がs個のタスク112を含むこと、が示されている。
例えば、次のようなタスク112は、互いに処理の関連性があるので、例えば、#1のタスクGr111にグループ化することができる。
(1)所定の時間ごとに、#1のセンサ3を介してボイラに供給する燃料ガスの流量を取得する#11のタスク112、
(2)同様に、所定の時間ごとに、#2のセンサ3を介してボイラ容器内の蒸気の温度を取得する#12のタスク112、
(3)前記取得した燃料ガスの流量および蒸気の温度の所定期間の履歴データをグラフにして表示装置5へ表示する#13のタスク112、
(4)前記取得した蒸気の温度が所定の温度以上になった場合には、燃料ガスの供給バルブを調節する#1のアクチュエータ4に対し、流量を絞る指示を出力する#14のタスク112、
このようなタスク112のグループ分けは、システム設計者やタスクプログラムの設計者がそのタスクプログラムを設計したときに行うことができ、そのグループ分けの情報は、例えば、タスクプログラムをコンピュータ10にローディングするときに記憶部12に格納されるようにしておけばよい。本実施形態では、タスク112のグループ分けの情報は、そのローディングに際して、記憶部12のタスク管理テーブル121に記憶される。なお、タスク管理テーブル121の詳細については、別途、後記する(図3参照)。
また、図2において、OS113は、例えば、リアルタイムOSであり、一般的には、タスク実行制御部114、入出力データ送受信制御部119など、タスク112の実行を制御したり、入出力装置(センサ3やアクチュエータ4など)に対するデータの入出力を制御したりするプログラムを含んで構成される。
本実施形態の場合、コンピュータ10は、同じ多重化コンピュータシステム1に含まれる他のコンピュータ10との間でタスク処理の同期化および処理結果の照合処理(以下、これらの処理を併せて同期化照合処理という)を行う。また、本実施形態では、そのコンピュータ10の同期化照合処理を各タスク112の処理が完了するたびに行うのではなく、タスクGr111に含まれる複数のタスク112の処理がすべて完了したときに行うようにすることを特徴としている。
そこで、コンピュータ10のOS113は、その同期化照合処理をサポートするために、タスク完了処理部115、タスクGr完了処理部116、照合処理部117、通知データ送受信制御部118などの処理ブロックを備える。すなわち、本実施形態では、同期化照合処理は、コンピュータ10の演算処理部がOS113の処理に含まれるタスク完了処理部115以下の処理ブロックを実行するによって実現される。以下、同期化照合処理を実現するこれらの処理ブロックの機能について説明する。
タスク完了処理部115は、各タスク112の処理が完了したとき、そのタスク112が完了したことを示す情報をタスクGr処理状況テーブル122(後記にて説明する図3を参照)に格納するとともに、そのタスクGr処理状況テーブル122を参照して、前記の完了したタスク112が属するタスクGr111に含まれる他のタスク112の処理がすべて完了しているか否かを判定する。そして、その判定により、同じタスクGr111に含まれるすべてのタスク112の処理が完了していた場合には、タスク完了処理部115は、タスクGr完了処理部116を起動する。
タスクGr完了処理部116は、所定のタスクGr処理完了通知データ124(後記にて説明する図3を参照)を生成し、通知データ送受信制御部118を介して、その生成したタスクGr処理完了通知データ124を他のコンピュータ10へ送信することによって、自コンピュータ10において、当該タスクGr111の処理が完了したことを他のコンピュータ10に通知する。さらに、タスクGr完了処理部116は、前記生成したタスクGr処理完了通知データ124を同期化照合データテーブル123(後記にて説明する図3を参照)の自コンピュータ10の領域に格納する。
通知データ送受信制御部118は、他のコンピュータ10から送信されるタスクGr処理完了通知データ124を受信して、その受信したタスクGr処理完了通知データ124を、同期化照合データテーブル123の、そのタスクGr処理完了通知データ124を送信したコンピュータ10に割当てられた領域に格納する。
タスクGr完了処理部116は、同期化照合データテーブル123に、自コンピュータ10のタスクGr処理完了通知データ124および他のコンピュータ10から送信されたタスクGr処理完了通知データ124がすべて格納されたことを確認した場合には、照合処理部117により、同期化照合データテーブル123に格納された各コンピュータ10のタスクGr処理完了通知データ124を比較照合する。そして、その比較照合の結果、同期化照合データテーブル123に格納された各コンピュータ10のタスクGr処理完了通知データ124がすべて一致した場合には、当該タスクGr111の次に実行することがあらかじめ定められた他のタスクGr111に含まれるタスク112を起動する。
以上、コンピュータ10では、タスクGr完了処理部116および照合処理部117の処理により、タスクGr111の処理が完了するたびに、同期化照合処理が実行される。従って、多重化コンピュータシステム1に属する各コンピュータ10では、タスクGr111の処理が完了するたびに、処理の同期化が行われることになる。
図3は、本発明の実施形態に係るコンピュータ10の記憶部12に記憶され、その同期化照合処理で用いられる情報の構成の例を示した図である。
図3(a)に示すように、タスク管理テーブル121のレコードは、各タスク112に対応して生成され、「タスクID」、「タスクGrID」および「次実行タスクのタスクID」の各フィールドを含んで構成される。
ここで、「タスクID」は、タスク112の識別情報、「タスクGrID」は、「タスクID」によって指定されるタスク112が属するタスクGr111の識別情報、「次実行タスクのタスクID」は、同じく「タスクID」によって指定されるタスク112の実行完了時に、次に実行するタスク112の識別情報である。
なお、CPU部11は、いずれのタスクGr111にも属しないタスク112を含んでいても構わない。その場合には、そのタスク112に対するタスク管理テーブル121のレコードはなくてもよい。また、タスク管理テーブル121のレコードで、「次実行タスクのタスクID」のフィールドは、空欄であっても、あるいは、複数のタスクIDを含んでいても構わない。
次に、図3(b)に示すように、タスクGr処理状況テーブル122のレコードは、各タスクGr111に対応して生成され、「タスクGrID」、「タスクID」、「タスク完了コード」および「次実行タスクGrのタスクGrID」の各フィールドを含んで構成される。
ここで、「タスクGrID」は、タスクGr111の識別情報、「タスクID」は、その「タスクGrID」によって指定されるタスクGr111に属するタスク112の識別情報、「タスク完了コード」は、前記「タスクID」によって指定されるタスク112の実行が完了したときに得られるデータ、「タスクGr完了コード」は、前記「タスクGrID」によって指定されるタスクGr111に属するすべてのタスク112の実行が完了したとき(すなわち、「タスクGrID」によって指定されるタスクGr111の実行が完了したとき)に得られるデータ、「次実行タスクGrのタスクGrID」は、「タスクGrID」によって指定されるタスクGr111の実行が完了したとき、次に実行するタスクGr111の識別情報である。
このうち、「タスクID」および「タスク完了コード」は、互いに対を形成するフィールドであり、その対の数は、「タスクGrID」によって指定されるタスクGr111に属するタスク112の数に等しい。そして、「タスク完了コード」は、「完了ビット」および「完了データ」によって構成される。ここで、「完了ビット」は、当該「タスク完了コード」の対のタスク112が完了したか否かを示す“1”または“0”の1ビットのデータ、「完了データ」は、同タスク112が完了したときの処理結果のデータである。なお、その処理結果のデータは、タスク112の実行により得られる生データであってもよく、また、その生データのチェックサム、ハッシュコード、CRC(Cyclic Redundancy Code)などであってもよい。
同様に、「タスクGr完了コード」は、「完了ビット」および「完了データ」によって構成される。「完了ビット」は、当該タスクGr111に含まれるタスク112がすべて完了したか否かを示す“1”または“0”の1ビットのデータ、「完了データ」は、同タスクGrに属するすべてのタスク112が完了したときの処理結果のデータである。なお、その処理結果のデータは、当該タスクGr111に含まれる各タスク112の「完了データ」を連結したデータについてのチェックサム、ハッシュコード、CRCなどであってもよい。
次に、図3(c)に示すように、タスクGr処理完了通知データ124は、「コンピュータID」、「タスクGrID」および「タスクGr完了コード」の各フィールドを含んで構成される。
ここで、「コンピュータID」は、自コンピュータ10を識別する識別情報、「タスクGrID」および「タスクGr完了コード」は、前記タスクGr処理状況テーブル122から「タスクGrID」および「タスクGr完了コード」を抽出したものである。
次に、図3(d)に示すように、同期化照合データテーブル123は、自コンピュータ10のタスクGr処理完了通知データ124、および、当該多重化コンピュータシステム1に含まれる他のすべてのコンピュータ10から送信されたタスクGr処理完了通知データ124によって構成される。この同期化照合データテーブル123は、後記するように、タスクGr完了処理部116の処理で生成されるとともに、照合処理部117の処理で用いられる。
図4は、本発明の実施形態に係るコンピュータ10におけるタスク完了処理部115の処理フローの例を示した図である。この処理は、タスク実行制御部114がタスク112の処理の完了を検知するたびに起動され、実行される。
タスク完了処理部115は、タスク実行制御部114からタスク112の処理完了の通知を受けると、まず、タスク実行制御部114から、処理完了タスクのタスクIDを取得する(ステップS11)。次に、タスク完了処理部115は、タスク管理テーブル121を参照して、前記取得したタスクIDで指定されるタスク112(すなわち、処理完了タスク)が属するタスクGr111のタスクGrIDを取得する(ステップS12)。
次に、タスク完了処理部115は、前記取得したタスクGrIDによって指定されるタスクGr111のタスクGr処理状況テーブル122における前記の処理完了タスクに対応するタスク完了コードに処理完了を示すデータを設定する(ステップS13)。すなわち、このステップでは、処理が完了したタスク112に対応するタスク完了コードの完了ビットに“1”がセットされ、そのタスク112の処理結果としての完了データが設定される。
次に、タスク完了処理部115は、当該タスクGr111のタスクGr処理状況テーブル122を参照して、当該タスクGr111に属するすべてのタスク112の処理が完了したか否かを判定する(ステップS14)。そして、当該タスクGr111に属するすべてのタスク112の処理が完了していた場合には(ステップS14でYes)、タスク完了処理部115は、タスクGr完了処理部116を起動して(ステップS15)、自らの処理を終了する。
一方、タスク完了処理部115は、ステップS14で、当該タスクGr111に属するすべてのタスク112の処理が完了していなかった場合には(ステップS14でNo)、さらに、タスク管理テーブル121を参照して、当該処理完了タスク112に次実行タスクが設定されているか否かを判定する(ステップS16)。そして、その判定の結果、次実行タスクが設定されていた場合には(ステップS16でYes)、タスク完了処理部115は、その設定されている次実行タスクを起動して(ステップS17)、自らの処理を終了する。一方、次実行タスクが設定されていなかった場合には(ステップS16でNo)、そのまま、自らの処理を終了する。
図5は、本発明の実施形態に係るコンピュータ10におけるタスクGr完了処理部116の処理フローの例を示した図である。この処理は、タスク完了処理部115によって起動される。
タスクGr完了処理部116は、タスク完了処理部115からタスクGrIDを取得し(ステップS20)、その取得したタスクGrIDで指定されるタスクGrのタスクGr処理状況テーブル122におけるタスクGr完了コードにタスクGrの処理完了を示すデータを設定する(ステップS21)。すなわち、このステップでは、タスクGr処理状況テーブル122のタスクGr完了コードの完了ビットに“1”がセットされる。
次に、タスクGr完了処理部116は、タスクGr処理状況テーブル122に基づき、タスクGr処理完了通知データ124を生成し、その生成したタスクGr処理完了通知データ124を、多重化コンピュータシステム1の他のコンピュータ10へ送信するとともに(ステップS22)、同期化照合データテーブル123の自コンピュータ10のレコード領域に格納する(ステップS23)。
なお、このとき相前後して、他のコンピュータ10から、同様にして生成されたタスクGr処理完了通知データ124が送信される。そのタスクGr処理完了通知データ124は、通知データ送受信制御部118によって受信され、受信されたタスクGr処理完了通知データ124は、それぞれ、同期化照合データテーブル123のそれぞれのコンピュータ10に対応するレコード領域に格納される。
そこで、タスクGr完了処理部116は、同期化照合データテーブル123を参照して(ステップS24)、他のすべてのコンピュータからタスクGr処理完了通知データ124を受信したか否かを判定する(ステップS25)。その判定の結果、他のすべてのコンピュータ10からタスクGr処理完了通知データ124を受信していない場合には(ステップS25でNo)、同期化照合データテーブル123を参照するステップS24へ戻る。また、他のすべてのコンピュータからタスクGr処理完了通知データ124を受信して場合には(ステップS25でYes)、タスクGr完了処理部116は、照合処理を実行する(ステップS26)。
ここで、照合処理は、照合処理部117によって実行され、同期化照合データテーブル123におけるすべてのコンピュータ10のタスクGrIDおよびタスクGr完了コードが一致しているか否かを照合する。そして、その照合の結果、すべてのコンピュータ10のタスクGrIDおよびタスクGr完了コードが一致していた場合には(ステップS27でYes)、タスクGr完了処理部116は、タスクGr処理状況テーブル122の次実行タスクGrのタスクGrIDで指定されるタスクGr111に含まれるタスク112を起動し(ステップS28)、自身の処理を終了する。
なお、ステップS28において、タスクGr完了処理部116は、次実行タスクGrのタスクGrIDで指定されるタスクGr処理状況テーブル122のレコードを参照して、その中に含まれるタスクIDで指定されるタスク112のうち、最も優先度の高いタスク112を起動する。ここで、タスク112の優先度は、例えば、タスクGr処理状況テーブル122のレコードにおいて、先に現れるタスクIDで指定されるタスク112ほど高い、と定めておくとよい。あるいは、タスクGr処理状況テーブル122に、各タスクIDごとに、そのタスク112に対応する優先度のフィールドを設けておいてもよい。
一方、照合の結果、すべてのコンピュータ10のタスクGrIDおよびタスクGr完了コードが一致していなかった場合には(ステップS27でNo)、いずれかのコンピュータ10が故障または誤動作していることになるので、照合不一致時の処理を起動し(ステップS29)、自身の処理を終了する。
本明細書では、照合不一致時の処理の詳細についての詳細な説明を省略するが、多重化コンピュータシステム1が、例えば、3台以上のコンピュータ10によって構成されている場合には、多数決により故障または誤動作しているコンピュータ10を判定することができる。そこで、そのような場合には、照合不一致時の処理は、故障または誤動作していると判定したコンピュータ10を多重化コンピュータシステム1から切り離すなどの処理を実行する。こうした照合不一致時の処理によって、多重化コンピュータシステム1は、1台のコンピュータ10の故障または誤動作をマスクすることができ、システムとしての信頼性を向上させることができる。
図6は、本発明の実施形態に係るコンピュータ10におけるタスク完了処理およびタスクGr完了処理が実行される様子を、タイムチャートを用いて例示した図である。
図6(a)において、タスクGr処理の「TG#1」および「TG#2」は、それぞれ、タスクGrIDがTG#1およびTG#2のタスクG11が処理されている時間範囲を示している。また、図6(b)において、タスク処理の「T#11」、「T#12」、「T#13」および「T#21」は、それぞれ、タスクIDがT#11、T#12、T#13およびT#21のタスクが実行されている時間範囲を示している。
また、図6(c)タスク完了処理のタイムチャートからは、各タスク処理の実行が完了するたびに、タスク完了処理が実行されていることが分かる。そして、そのタスク完了処理の実行により、タスクGr処理状況テーブル122における各タスクIDに対応するタスク完了コードの完了ビット(図6(f)、(g)、(h)では、T#11完了ビット、T#12完了ビットおよびT#13完了ビットと略称)が“1”にセットされる。なお、これらの完了ビットは、コンピュータ10の初期化時に“0”にクリアされているものとする。
また、図6(d)タスクGr完了処理のタイムチャートからは、タスクGrIDがTG#1のタスクGr111に含まれるタスク112のうち、最後のT#13のタスク112の実行が完了したとき、タスクGr完了処理が実行される。なお、T#13のタスク112がTG#1のタスクGr111の最後のタスク112であることは、各タスク112に対応する完了ビット(図6(f)T#11完了ビット、(g)T#12完了ビットおよび(h)T#13完了ビット)がすべて“1”にセットか否かを判定することによって検知することができる。
続いて、図6(d)タスクGr完了処理では、タスクGr処理状況テーブル122におけるタスクGr完了コードの完了ビット(図6(i)TG#1完了ビット)が“1”にセットされ、さらに、その処理の中で、(e)照合処理が実行され、同期化照合データテーブル123が参照される。そして、その(e)照合処理における照合が成功すると(すなわち、同期化照合データテーブル123における各コンピュータ10についてのタスクGrIDとタスクGr完了コードがすべて同じであった場合)、各タスク112に対応するタスク完了コードの完了ビット(図6(f)T#11完了ビット、(g)T#12完了ビットおよび(h)T#13完了ビット)は、すべてクリアされ、さらに、タスクGr完了コードの完了ビット(図6(i)TG#1完了ビット)もクリアされる。
その後、タスクGrIDがTG#1のタスクGr111についての(c)タスクGr完了処理が完了すると、図6(a)、(b)に示すように、次のタスクGr処理として、タスクGrIDがTG#2のタスクGr111に含まれる、タスクIDがT#21のタスク112の実行が開始される。
図7は、本発明の実施形態に係る多重化コンピュータシステム1における複数のコンピュータ10間で処理の同期化が行われる様子を、タイムチャートを用いて例示した図である。
同じタスク112の処理を実行しても、複数のコンピュータ10間では、そのタスク112の処理完了に多少の時間のずれを生じるのが一般的である。従って、複数のコンピュータ10間では、適宜、処理の同期化を行う必要がある。本実施形態では、その処理の同期化は、複数のタスク112によって構成されたタスクGr111が完了したときに行われるので、同期化が、例えば、タスク112の完了時に行われる場合に比べ、その時間のずれは、大きくなる場合が多い。
図7に示すように、例えば、#1のコンピュータ10において(a)タスクGr完了処理が開始されると、タスクGr処理完了通知データ124が生成され(図5、ステップS22参照:図7では、通知データ生成と記載)、その生成されたタスクGr処理完了通知データ124は、他のコンピュータに送信される(図7(b)通知データ送受信処理)とともに、自コンピュータ10に対応する同期化照合データテーブル123に格納される。このとき、同期化照合データテーブル123においては、自コンピュータ10に対応するタスクGr完了コードの完了ビット(図7では、(c)C#1完了ビットと記載)には、“1”がセットされる。
その後、遅れて、#2のコンピュータ10および#3のコンピュータ10においても、タスクGr完了処理(図7(f)、(h))が実行されると、タスクGr処理完了通知データ124が生成される。その生成されたタスクGr処理完了通知データ124は、#1のコンピュータ10へ送信される(図7(g)、(i)通知データ送受信処理)。
#1のコンピュータ10は、#2のコンピュータ10および#3のコンピュータ10からそれぞれ送信されるタスクGr処理完了通知データ124を受信すると(図7(b)通知データ送受信処理)、その受信したタスクGr処理完了通知データ124を、各コンピュータ10に対応する同期化照合データテーブル123のレコード領域に格納する。このとき、同期化照合データテーブル123においては、#2のコンピュータ10および#3のコンピュータ10に対応するタスクGr完了コードの完了ビット(図7では、(d)C#2完了ビットおよび(e)C#3完了ビットと記載)には、“1”がセットされる。
#1のコンピュータ10における照合処理は、同期化照合データテーブル123における各コンピュータ10に対応するタスクGr完了コードの完了ビットがすべて“1”にセットされたときに実行される(図5のステップS25でYes)。そして、その照合処理で同期化照合データテーブル123の各コンピュータ10に対応するタスクGrIDおよびタスクGr完了コードがすべて一致した場合には(図7では、照合一致と記載、図5のステップS27でYes)、タスクGr処理状況テーブル122によって指定されたタスクGr111に含まれるタスク112(図7では、次タスクと記載)を起動する(図5のステップS28)。
また、#2のコンピュータ10および#3のコンピュータ10においても、同様にして照合処理が実行され、照合一致の場合には、同様に指定されたタスクGr111に含まれる次タスク112が起動される。このとき、照合処理が開始される条件は、同期化照合データテーブル123における同期化照合データテーブル123の各コンピュータ10に対応するタスクGr完了コードの完了ビットがすべて“1”になったときであるので、各コンピュータ10では、最も遅くタスクGr完了コードの完了ビットが“1”になったコンピュータ10の処理に合わせて、ほぼ同時に次タスク112が起動されることになる。
本実施形態では、以上のようにして、複数のコンピュータ10間で処理の同期化が行われ、処理結果の照合(同期化照合処理)が行われる。その同期化照合処理は、タスク112が完了するたびではではなく、複数のタスク112から構成されたタスクGr111の処理が完了するたびに行われるので、タスク112が完了するたびに同期照合処理を行う場合に比べ、コンピュータ10の処理負荷を軽減することができる。
1 多重化コンピュータシステム
2 入出力装置間通信ネットワーク
3 センサ
4 アクチュエータ
5 表示装置
6 制御卓
10 自コンピュータ
10 コンピュータ
11 CPU部
12 記憶部
13 コンピュータ間通信IF部
14 入出力装置間通信IF部
15 内部バス
16 コンピュータ間通信ネットワーク
111 タスクGr
112 タスク
113 OS
114 タスク実行制御部
115 タスク完了処理部
116 タスクGr完了処理部
117 照合処理部
118 通知データ送受信制御部
119 入出力データ送受信制御部
121 タスク管理テーブル
122 タスクGr処理状況テーブル
123 同期化照合データテーブル
124 タスクGr処理完了通知データ

Claims (6)

  1. 複数タスクをそれぞれ独立に実行する複数のコンピュータを有してなる多重化コンピュータシステムであって、
    前記コンピュータのそれぞれは、
    前記複数のタスクをあらかじめグループ分けしたタスクグループごとに、そのタスクグループに属する各タスクの処理状況情報と、そのタスクグループに属するすべてのタスクの処理完了後に起動される次処理タスクグループの識別情報と、を含んでなるタスクグループ処理状況情報を記憶するタスクグループ処理状況情報記憶部を備え、
    前記タスクの処理が完了するたびに、前記タスクグループ処理状況情報記憶部に記憶されたタスクグループ処理状況情報における前記完了したタスクに対する処理状況情報に、タスクが完了したことを示すタスク完了データを設定し、
    前記完了したタスクが属するタスクグループに属するすべてのタスクの処理状況情報としてタスク完了データが設定されていた場合には、
    前記タスクグループに属するすべてのタスクの処理が完了したことを示すタスクグループ完了データを含んでなるタスクグループ処理完了通知情報を生成し、その生成したタスクグループ処理完了通知情報を前記多重コンピュータシステムに含まれる他のコンピュータに送信し、
    前記多重コンピュータシステムに含まれる他のコンピュータから同様にして送信されるタスクグループ処理完了通知情報を受信し、
    前記生成したタスクグループ処理完了通知情報と、前記多重コンピュータシステムに含まれる他のすべてのコンピュータから送信されたタスクグループ処理完了通知情報と、を比較し、そのすべてのタスクグループ処理完了通知情報が同じであったとき、前記タスクグループ処理状況情報の次処理タスクグループの識別情報よって指定されるタスクグループに含まれるタスクを起動すること
    を特徴とする多重化コンピュータシステム。
  2. 前記タスクグループ処理完了通知情報は、
    前記タスクグループ完了データに併せて、前記タスクグループに属するすべてのタスクの処理が完了したときに得られる処理結果のデータを含むこと
    を特徴とする請求項1に記載の多重化コンピュータシステム。
  3. 複数タスクをそれぞれ独立に実行する複数のコンピュータを有してなる多重化コンピュータシステムにおけるコンピュータであって、
    前記複数のタスクをあらかじめグループ分けしたタスクグループごとに、そのタスクグループに属する各タスクの処理状況情報と、そのタスクグループに属するすべてのタスクの処理完了後に起動される次処理タスクグループの識別情報と、を含んでなるタスクグループ処理状況情報を記憶するタスクグループ処理状況情報記憶部を備え、
    前記タスクの処理が完了するたびに、前記タスクグループ処理状況情報記憶部に記憶されたタスクグループ処理状況情報における前記完了したタスクに対する処理状況情報に、タスクが完了したことを示すタスク完了データを設定し、
    前記完了したタスクが属するタスクグループに属するすべてのタスクの処理状況情報としてタスク完了データが設定されていた場合には、
    前記タスクグループに属するすべてのタスクの処理が完了したことを示すタスクグループ完了データを含んでなるタスクグループ処理完了通知情報を生成し、その生成したタスクグループ処理完了通知情報を前記多重コンピュータシステムに含まれる他のコンピュータに送信し、
    前記多重コンピュータシステムに含まれる他のコンピュータから同様にして送信されるタスクグループ処理完了通知情報を受信し、
    前記生成したタスクグループ処理完了通知情報と、前記多重コンピュータシステムに含まれる他のすべてのコンピュータから送信されたタスクグループ処理完了通知情報と、を比較し、そのすべてのタスクグループ処理完了通知情報が同じであったとき、前記タスクグループ処理状況情報の次処理タスクグループの識別情報よって指定されるタスクグループに含まれるタスクを起動すること
    を特徴とするコンピュータ。
  4. 前記タスクグループ処理完了通知情報は、
    前記タスクグループ完了データに併せて、前記タスクグループに属するすべてのタスクの処理が完了したときに得られる処理結果のデータを含むこと
    を特徴とする請求項3に記載のコンピュータ。
  5. 複数タスクをそれぞれ独立に実行する複数のコンピュータを有してなる多重化コンピュータシステムにおけるコンピュータ間処理同期化方法であって、
    前記コンピュータのそれぞれは、
    前記複数のタスクをあらかじめグループ分けしたタスクグループごとに、そのタスクグループに属する各タスクの処理状況情報と、そのタスクグループに属するすべてのタスクの処理完了後に起動される次処理タスクグループの識別情報と、を含んでなるタスクグループ処理状況情報を記憶するタスクグループ処理状況情報記憶部を備え、
    前記タスクの処理が完了するたびに、前記タスクグループ処理状況情報記憶部に記憶されたタスクグループ処理状況情報における前記完了したタスクに対する処理状況情報に、タスクが完了したことを示すタスク完了データを設定し、
    前記完了したタスクが属するタスクグループに属するすべてのタスクの処理状況情報としてタスク完了データが設定されていた場合には、
    前記タスクグループに属するすべてのタスクの処理が完了したことを示すタスクグループ完了データを含んでなるタスクグループ処理完了通知情報を生成し、その生成したタスクグループ処理完了通知情報を前記多重コンピュータシステムに含まれる他のコンピュータに送信し、
    前記多重コンピュータシステムに含まれる他のコンピュータから同様にして送信されるタスクグループ処理完了通知情報を受信し、
    前記生成したタスクグループ処理完了通知情報と、前記多重コンピュータシステムに含まれる他のすべてのコンピュータから送信されたタスクグループ処理完了通知情報と、を比較し、そのすべてのタスクグループ処理完了通知情報が同じであったとき、前記タスクグループ処理状況情報の次処理タスクグループの識別情報よって指定されるタスクグループに含まれるタスクを起動すること
    を特徴とするコンピュータ間処理同期化方法。
  6. 前記タスクグループ処理完了通知情報は、
    前記タスクグループ完了データに併せて、前記タスクグループに属するすべてのタスクの処理が完了したときに得られる処理結果のデータを含むこと
    を特徴とする請求項5に記載のコンピュータ間処理同期化方法。
JP2009186949A 2009-08-12 2009-08-12 多重化コンピュータシステム、コンピュータおよびコンピュータ間処理同期化方法 Pending JP2011039798A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009186949A JP2011039798A (ja) 2009-08-12 2009-08-12 多重化コンピュータシステム、コンピュータおよびコンピュータ間処理同期化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009186949A JP2011039798A (ja) 2009-08-12 2009-08-12 多重化コンピュータシステム、コンピュータおよびコンピュータ間処理同期化方法

Publications (1)

Publication Number Publication Date
JP2011039798A true JP2011039798A (ja) 2011-02-24

Family

ID=43767502

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009186949A Pending JP2011039798A (ja) 2009-08-12 2009-08-12 多重化コンピュータシステム、コンピュータおよびコンピュータ間処理同期化方法

Country Status (1)

Country Link
JP (1) JP2011039798A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103180832A (zh) * 2011-03-23 2013-06-26 株式会社日立制作所 计算机系统、数据处理方法、以及数据处理程序

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103180832A (zh) * 2011-03-23 2013-06-26 株式会社日立制作所 计算机系统、数据处理方法、以及数据处理程序
CN103180832B (zh) * 2011-03-23 2016-01-13 株式会社日立制作所 计算机系统和数据处理方法

Similar Documents

Publication Publication Date Title
US11580075B2 (en) Systems and methods of providing immutable records
US20070214355A1 (en) Leaderless Byzantine consensus
RU2577465C2 (ru) Система, способ и устройство для коррекции ошибки в мультипроцессорных системах
US9477559B2 (en) Control device, control method and recording medium storing program thereof
JP2011123545A (ja) 比較冗長型情報処理装置
AU2015288023B2 (en) System, method, and apparatus for generating vital messages on an on-board system of a vehicle
JP5436721B2 (ja) 冗長化装置
CN108737153B (zh) 区块链灾备系统、方法、服务器和计算机可读存储介质
TW201443674A (zh) 對遠端分散式資料庫伺服器之選擇性資料同步及傳送
EP2787401B1 (en) Method and apparatus for controlling a physical unit in an automation system
JP6083480B1 (ja) 監視装置、フォールトトレラントシステムおよび方法
JP6934346B2 (ja) コンピュータ化されたシステムおよび冗長システム
US8429251B2 (en) Method for the consistent provision of configuration data in an industrial automation system comprising a plurality of networked control units, and industrial automation system
JP2011039798A (ja) 多重化コンピュータシステム、コンピュータおよびコンピュータ間処理同期化方法
JP2011123756A (ja) 安全制御装置、及びその安全制御プログラム
US8799707B2 (en) Redundant system
JP5061674B2 (ja) フォールトトレラントコンピュータシステム及びデータ送信制御方法
JP4232589B2 (ja) 二重化コントローラ、その等値化モード決定方法
US11177828B2 (en) Data collection apparatus, method, and program
JP4281602B2 (ja) 2重化コントローラシステム、そのコントローラ、プログラム
KR102104967B1 (ko) 이중화 보드에서 마스터/슬레이브 설정방법 및 그 보드
JP2010047102A (ja) 多重系電子連動装置
Gamer et al. Increasing Efficiency of M-out-of-N Redundancy
RU2768202C2 (ru) Системы и способы для обеспечения неизменяемых записей
JP4640359B2 (ja) フォールトトレラントコンピュータ、フォールトトレラントコンピュータにおける同期制御方法