(57)【要約】【課題】  ＣＰＵを多重化して同一の処理を行い、出力データを照合する従来の照合システムでは、照合するデータのサイズが大きいと、照合するデータの転送に時間がかかってしまい、システム全体の性能が低下したり、それに伴って信頼性が低下したりする問題があった。【解決手段】  照合するデータにチェックコードを付加し、チェックコードの照合を行うチェックコード照合器によって出力データを絞り込んだ後、出力データを照合することで照合するデータの転送量を少なくして照合に要する時間を短縮できる照合システムを実現する。【選択図】図１
2010009327.tif 000002
【特許請求の範囲】
【請求項１】
二つ以上の複数のＣＰＵと、
前記複数のＣＰＵを接続するネットワークと、
前記ネットワークに接続され前記複数のＣＰＵからの出力データを格納するメモリと、
前記メモリに格納された複数の出力データを照合するデータ照合器を有する照合システムにおいて、
前記出力データには誤りを検出するチェックコードを付加し、前記チェックコードを照合して一致したデータの選択結果を示すデータ選択信号を出力するチェックコード照合器と、
前記データ選択信号の値によって前記複数の出力データから絞り込んだデータのみを前記データ照合器に出力し、前記複数の出力データを照合する手段を備えることを特徴とする照合システム。
【請求項２】
請求項１の照合システムにおいて、
前記データ照合器から出力されるデータ照合判定信号の情報を格納する照合ステータスレジスタを備えることを特徴とする照合システム。
【請求項３】
請求項１または２の照合システムにおいて、
前記データ選択回路が出力する前記出力データの前記チェックコードと出力データを復号するチェックコードチェッカと、
前記チェックコードチェッカから出力され誤りが無い出力データを示す有効データ選択信号と、
前記データ照合器内に前記有効データ選択信号の値によって前記複数の出力データから誤りの無い出力データを選択して出力するセレクタを備えることを特徴とする照合システム。
【請求項４】
二つ以上の複数のＣＰＵと、
前記複数のＣＰＵを接続するネットワークと、
前記ネットワークに接続され前記複数のＣＰＵからの出力データを格納するメモリを有し、前記出力データにはデータの転送先情報や誤り訂正符号などが含まれるヘッダを付加し、前記複数のヘッダを入力して照合した結果、ヘッダ照合判定信号を出力することを特徴とする照合システム。
【請求項５】
二つ以上の複数のＣＰＵと、
前記複数のＣＰＵを接続するネットワークと、
前記ネットワークに接続され前記複数のＣＰＵからの出力データを格納するメモリと、
前記メモリに格納された複数の出力データを照合するデータ照合器を有する照合システムにおいて、
前記出力データには誤りを検出するチェックコードを付加し、前記チェックコードを照合して一致したデータの選択結果を示すデータ選択信号を出力するプログラムを格納するマイコンと、
前記データ選択信号の値によって前記複数の出力データから絞り込んだデータのみを前記データ照合器に出力し、前記データ照合器によって前記複数の出力データを照合し、不一致であれば不一致割り込み信号を前記マイコンに出力する手段を備えることを特徴とする照合システム。
【請求項６】
請求項１，２，４、または５に記載の照合システムにおいて、前記出力データの誤りを検出するチェックコードとしてパリティビット，ＥＣＣビット，ＣＲＣビットのいずれかを使用することを特徴とする照合システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置や半導体集積回路で用いられる照合システムに係り、特に複数の処理装置から出力されるデータを多数決選択することで高信頼性を確保する機構を搭載する制御装置等に適用するのに好適な照合システムに関する。
【背景技術】
【０００２】
鉄道やプラント，航空機など、人命や環境の安全確保のために非常に高い信頼性が求められるシステムでは、万が一、システム内で故障や異常が発生しても、システム全体としては危険状態に陥らずに、外部に対して悪影響を与えないようにするフェールセーフが求められる。このような高信頼システムを実現するために、例えば、ＣＰＵ（中央演算処理装置、Central Processing Unit）を多重化して各ＣＰＵで同一の処理を実行し、各ＣＰＵからの出力データを照合することでＣＰＵの故障を検出する、いわゆる冗長化システムが用いられる。
【０００３】
例えば〔特許文献１〕では、処理を行うモジュールを三重化し、バスに流れるデータを照合している。
【０００４】
また、データの伝送過程などにおける入出力データの正当性を保障するため、送信側で転送するデータに規定のチェックコードを付加し、受信側で伝送されたデータとそのチェックコードを規定の復号アルゴリズムによって照合することで、データ伝送において発生する伝送誤りを検出する方法が広く用いられている。このチェックコードとしては、パリティビット，ＥＣＣ（Error Correcting Code、誤り訂正符号），ＣＲＣ（Cyclic Redundancy Check，巡回冗長検査）などが一般に用いられる。
【０００５】
ところで、従来の高信頼システムについて、本発明者が検討した結果、以下のようなことが明らかとなった。
【０００６】
例えば、ＣＰＵを多重化して処理結果を照合する際に、照合するデータのサイズが大きいと、照合するデータの転送に時間がかかってしまい、システム全体の性能が低下したり、それに伴って信頼性が低下したりする恐れがある。
【０００７】
また、例えば〔特許文献２〕のように、照合するデータを圧縮してコード化し、圧縮したコードのみを照合することで照合処理の高速化を図っているものもある。しかし元のデータそのものを照合しているわけではないためどうしても誤り抜けの可能性が残ってしまい、鉄道やプラント，航空機など、誤った処理が一度も許されないような高信頼システムに対しては適用できない可能性がある。
【０００８】
【特許文献１】特開平４−２５７９３１号公報
【特許文献２】特開平５−３２４３９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
そこで本発明の目的は、ＣＰＵを多重化して同一の処理を行って照合する高信頼なシステムにおいて、高速な照合システムを実現することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は、本願の明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１２】
上記課題を達成するために、本発明は二つ以上の複数のＣＰＵと、前記複数のＣＰＵを接続するネットワークと、前記ネットワークに接続され前記複数のＣＰＵからの出力データを格納するメモリと、前記メモリに格納された複数の出力データを照合するデータ照合器を有する照合システムにおいて、前記出力データには誤りを検出するチェックコードを付加し、前記チェックコードを照合して一致したデータの選択結果を示すデータ選択信号を出力するチェックコード照合器と、前記データ選択信号の値によって前記複数の出力データから絞り込んだデータのみを前記データ照合器に出力し、前記データ照合器によって前記複数の出力データを照合する手段を備えるようにしたものである。
【００１３】
更に、本発明の照合システムは、前記データ照合器から出力されるデータ照合判定信号の情報を格納する照合ステータスレジスタを有することを特徴とするものである。
【００１４】
更に、本発明の照合システムは、前記データ選択回路が出力する前記出力データの前記チェックコードと出力データを復号するチェックコードチェッカと、前記チェックコードチェッカから出力され誤りが無い出力データを示す有効データ選択信号と、前記データ照合器内に前記有効データ選択信号の値によって前記複数の出力データから誤りの無い出力データを選択して出力するセレクタを有することを特徴とするものである。
【００１５】
また、上記課題を達成するために、本発明の照合システムは、二つ以上の複数のＣＰＵと、前記複数のＣＰＵを接続するネットワークと、前記ネットワークに接続され前記複数のＣＰＵからの出力データを格納するメモリを有し、前記出力データにはデータの転送先情報や誤り訂正符号などが含まれるヘッダを付加し、前記複数のヘッダを入力して照合した結果、ヘッダ照合判定信号を出力することを特徴とするものである。
【００１６】
また、上記課題を達成するために、二つ以上の複数のＣＰＵと、前記複数のＣＰＵを接続するネットワークと、前記ネットワークに接続され前記複数のＣＰＵからの出力データを格納するメモリと、前記メモリに格納された複数の出力データを照合するデータ照合器を有する照合システムにおいて、前記出力データには誤りを検出するチェックコードを付加し、前記チェックコードを照合して一致したデータの選択結果を示すデータ選択信号を出力するプログラムを格納するマイコンと、前記データ選択信号の値によって前記複数の出力データから絞り込んだデータのみを前記データ照合器に出力し、前記データ照合器によって前記複数の出力データを照合し、不一致であれば不一致割り込み信号を前記マイコンに出力する手段を備えることを特徴とするものである。
【００１７】
更に、本発明の照合システムは、前記出力データの誤りを検出するチェックコードとしてパリティビット，ＥＣＣビット，ＣＲＣビットのいずれかを使用することを特徴とするものである。
【発明の効果】
【００１８】
本願において開示される発明のうち、代表的なものによって得られる効果を説明すれば、以下のとおりである。
（１）複数のＣＰＵから出力された出力データのチェックコードを照合し、チェックコードの一致した出力データのみを絞り込んで照合することで、出力データが格納されているメモリからのデータ転送量を削減でき、高信頼性を保ったままで高速なデータ照合を実現できる。
（２）複数のＣＰＵから出力された出力データのヘッダのみを照合した結果を用いて出力データを選択することで、データ照合に要する時間を少なくすことができ、高速化を実現できる。
（３）複数のＣＰＵから出力された出力データのチェックコードの照合をマイコンのプログラムで行うことで、チェックコードに不一致が発生した時点で場合に応じて処理の内容を変えることができ、また、出力データの照合で不一致が発生した時点でも、不一致割り込み信号を受けたマイコンで適切な処理を行うことが可能な、柔軟な照合システムを実現できる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態を説明する。なお、実施の形態を説明するための全図において、同一部材，構成のものについては原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２０】
〔実施の形態１〕
図１は、本発明の実施の形態１における、照合システムの具体的な実装例を表したものである。
【００２１】
４台のＣＰＵ（１），ＣＰＵ（２），ＣＰＵ（３），ＣＰＵ（４）は、同一の処理を行い、ＣＰＵ（１）は処理の結果をＣＰＵ出力データ５１としてネットワーク５５に出力する。同様に、ＣＰＵ（２）はＣＰＵ出力データ５２を、ＣＰＵ（３）はＣＰＵ出力データ５３を、ＣＰＵ（４）はＣＰＵ出力データ５４をそれぞれネットワーク５５に出力する。
【００２２】
ここで、各ＣＰＵ出力データには、転送すべきデータのほかに、チェックコードを付加するものとする。図２に出力データフォーマットの一例を示す。図２では、３２Byte区切りで構成された複数のデータを一つのデータ部とし、データ部に対して４Byteのチェックコード（網掛け部分）を付加したデータフォーマットを表している。
【００２３】
データ部に付加するチェックコードの例を図３に示す。図３（ａ）は、チェックコードとしてパリティビットを用いるものであり、パリティビット（網掛け部分）はデータ部の各ビットの排他的論理和により、奇数パリティ、偶数パリティいずれかの値を１ビットで付加するものであり、１ビット誤りの検出ができる。
【００２４】
また図３（ｂ）はチェックコードとしてＥＣＣを用いるものであり、データ部からＥＣＣビット（網掛け部分）を生成して読み出し時に復号することで、１ビット誤りの訂正と２ビット誤りの検出ができる。
【００２５】
また図３（ｃ）はチェックコードとしてＣＲＣを用いるものであり、データ部からＣＲＣビット（網掛け部分）を生成して読み出し時に復号することで、２ビット以上のバースト誤りの検出ができる。
【００２６】
本発明では図３で例示したチェックコード、およびその他広く一般に使われているチェックコードのいずれも対応できるが、ここでは図３（ｃ）のＣＲＣをチェックコードとして使用する場合で説明する。
【００２７】
また今回は、複数のＣＰＵが存在するため、どのＣＰＵから出力されたデータかを判定するため、データフォーマットの先頭にＣＰＵ番号を付加するものとする。
【００２８】
図１のネットワーク５５に出力された各ＣＰＵ出力データは、ライトバス５６を介してメモリ５に格納するが、このときメモリ５には、各ＣＰＵからの出力データを別々の領域に格納する。すなわち、メモリ５には、ＣＰＵ出力データ５１をメモリアドレス４１に、ＣＰＵ出力データ５２をメモリアドレス４２に、ＣＰＵ出力データ５３をメモリアドレス４３に、ＣＰＵ出力データ５４をメモリアドレス４４に、それぞれ格納する。ここで、各メモリアドレスの網掛け部分にはチェックコードを格納し、網掛けしていない部分にはデータ部を格納することを表す。
【００２９】
メモリ５に格納した各ＣＰＵ出力データは、リードバス５７を介して読み出し、チェックコード照合器６とデータ選択回路７に渡り、チェックコード照合器６が出力したデータ選択信号５８によってデータ選択回路７がＣＰＵ出力データを選択し、データバス５９，６０を介してデータ照合器８に渡し、照合の結果、出力データ６１としてシステム外部に出力する。
【００３０】
この部分の動作の詳細を、図４を用いて説明する。図４は、図１に示した照合システムのチェックコード照合器６，データ選択回路７，データ照合器８とその周辺部の詳細の一例を表したものである。
【００３１】
リードバス５７を通ってきた各ＣＰＵ出力データは、まずチェックコード照合器６内のエンコーダ２５によって、どのＣＰＵから出力されたデータかを判定する。判定の結果、メモリアドレス４１に格納していたＣＰＵ（１）からのＣＰＵ出力データ５１のチェックコード、すなわちここではＣＲＣビットのみを、Ｃ（チェックコード）バッファ１（２１）に格納する。同様に、ＣＰＵ出力データ５２のＣＲＣビットをＣバッファ２（２２）に、ＣＰＵ出力データ５３のＣＲＣビットをＣバッファ３（２３）に、ＣＰＵ出力データ５４のＣＲＣビットをＣバッファ４（２４）に格納する。
【００３２】
ここで、リードバス５７は１組しか無いため、各ＣＰＵ出力データを同時にメモリ５から読み出すことはできない構成となっている。
【００３３】
四つのＣバッファに各ＣＲＣビットを格納したら、デコーダ２６により、各Ｃバッファ内のＣＲＣビット値を照合し、データ選択信号５８を出力する。
【００３４】
このデータ選択信号５８の値の決定方法として、図５に例を示す。図５では、各Ｃバッファに格納されたＣＲＣビットの値をＡ，Ｂ，Ｃ，Ｄの４種類で簡略化して表しており、各Ｃバッファが取り得る値によってデータ選択信号５８の値を変化させることを示している。
【００３５】
図５のＮo.１のケースでは、全てのＣＲＣビット値がＡで等しいため、データ選択信号５８には、四つのＣＲＣビットの代表という意味でＣバッファ１，Ｃバッファ２を出力する。
【００３６】
Ｎo.２のケースでは、Ｃバッファ４のみが異なるＢの値であるため、データ選択信号５８には、等しいＣＲＣビット値の代表でＣバッファ１，Ｃバッファ２を出力する。
【００３７】
Ｎo.３のケースでは、Ｃバッファ１とＣバッファ２がＡという値で等しく、またＣバッファ３とＣバッファ４が異なるＢという値で等しいが、この場合は代表してバッファ番号の若いＣバッファ１，Ｃバッファ２をデータ選択信号５８に出力し、更に異常であることを示す情報を付加しておく。
【００３８】
Ｎo.４のケースでは、等しい値を持つものがＣバッファ１とＣバッファ２しかないため、Ｃバッファ１，Ｃバッファ２をデータ選択信号５８に出力する。
【００３９】
Ｎo.５のケースでは、全てのＣバッファが異なる値を持っているため等しい組み合わせを抽出できないので、代表してバッファ番号の若いＣバッファ１，Ｃバッファ２をデータ選択信号５８に出力し、更に異常であることを示す情報を付加しておく。
【００４０】
これらのケースによりデータを選択するため、原理上、ＣＲＣビットが誤ったデータを選択するという事象は発生しない。Ｎo.３およびＮo.５のケースでは、そもそも正しい値を選択することが不可能である。
【００４１】
図５で示したような判定方法によって出力されたデータ選択信号５８は、図４のデータ選択回路７内のデータセレクタ２９に渡る。
【００４２】
データセレクタ２９は、リードバス５７を通ってきた各ＣＰＵ出力データからのデータ部を読み出し、データ選択信号５８によって選択された二つのＣＰＵ出力データのデータ部をそれぞれＤ（データ）バッファ１（２７），Ｄバッファ２（２８）に格納する。
【００４３】
二つのＤバッファに各データ部を格納したら、Ｄバッファ１（２７）からデータバス５９を介してデータ照合器８に出力し、Ｄバッファ２（２８）からデータバス６０を介してデータ照合器８に出力する。
【００４４】
データ照合器８内には排他的論理和（ＸＯＲ）ゲート８１があり、ＸＯＲゲート８１はデータ照合判定信号７６を出力する。データバス５９，６０を通るデータに不一致が無ければ、データ照合判定信号７６の値は“０”になっているものとする。
【００４５】
データバス５９，６０を通ってきたデータ値が一致しており、データ照合判定信号７６の値が“０”であるときは、出力データ６１にデータバス５９を通ってきたデータをそのまま出力する。
【００４６】
データバス５９，６０を通ってきたデータ値が誤りの影響で一致していない場合、データ照合判定信号７６の値が“１”となるので、このときは出力データ６１の値は正しくない可能性があると判断し、誤り判定による処理を行えば良い。
【００４７】
誤り判定の処理の例としては、Ｄバッファ１（２７），Ｄバッファ２（２８）に格納したＣＰＵ出力データとは別のＣＰＵ出力データを各Ｄバッファに格納して再度照合を行ってみたり、各ＣＰＵに再度処理を行わせてデータ転送からやり直したりするなどが挙げられる。
【００４８】
また、照合ステータスレジスタ１２は、データ照合判定信号７６の値をもとに、どのＣＰＵのデータに誤りが混入していたかなどの情報を格納するレジスタである。照合ステータスレジスタ１２を読み出すプログラムを使用すれば、照合システムで発生した誤りに関する情報を知ることができ、誤りに対応する適切な処理を行うことが可能となる。
【００４９】
なお、Ｄバッファ１（２７）とＤバッファ２（２８）が更新されるタイミングに時間差がある場合は一時的にデータ照合判定信号７６の値が１になってしまうため、両方のＤバッファが更新されたことを判断してデータ照合判定信号７６の値を調べるようにすれば良い。
【００５０】
図１から図５で示した照合システムによる、データ照合の高速化効果を図６，図７で示す。
【００５１】
図６は、本発明を用いていない従来のＣＰＵ四重化照合システムにおける出力データ照合のタイミングチャートを示したものである。
【００５２】
ここでは、１組のリードバスを用いて、１回のＣＰＵ処理で転送するデータ部を３２Byteずつのデータサイズに分割し、照合する例を示す。
【００５３】
時刻ｔ１において、ＣＰＵ（１）が出力したデータ１をリードバスを介して転送し、転送後にＤバッファ１に格納する。同様に、ＣＰＵ（２）がデータ２を、ＣＰＵ（３）がデータ３を、ＣＰＵ（４）がデータ４をそれぞれ出力して、Ｄバッファ２，Ｄバッファ３，Ｄバッファ４にそれぞれ格納する。
【００５４】
各データをＤバッファに格納したら、データ照合器によって四つのデータ部の照合を行い、一致していたデータから一つを選択して出力する。この時刻をｔ２とし、次の３２Byteのデータ転送に移り、これらの動作を１回のＣＰＵ処理で転送するデータの最後に至るまで繰り返す。
【００５５】
従来のＣＰＵ四重化照合システムでは、このように４台のＣＰＵから出力されるデータ部を全て照合する必要があり、多大な時間がかかっていた。
【００５６】
図７は、本発明を用いた照合システムにおける出力データ照合のタイミングチャートを示したものである。
【００５７】
時刻ｃ１において、ＣＰＵ（１）が出力したＣＰＵ出力データのＣＲＣビット１をリードバスを介して転送し、転送後にＣバッファ１に格納する。
【００５８】
同様に、ＣＰＵ（２）からＣＲＣビット２を、ＣＰＵ（３）からＣＲＣビット３を、ＣＰＵ（４）からＣＲＣビット４をそれぞれ出力し、Ｃバッファ２，Ｃバッファ３，Ｃバッファ４にそれぞれ格納する。
【００５９】
各ＣＲＣビットをＣバッファに格納したら、チェックコード照合器によってＣＲＣビットの照合を行う。このＣＲＣビットは４Byteを想定しており、一般にデータ部のサイズよりも小さいため、３２Byteのデータを照合するよりも照合時間が小さくなることを想定している。
【００６０】
ＣＲＣビットの照合によってデータ選択信号５８の値が決定した時刻をｔ１とし、選択された二つのデータ１，データ２のみをＤバッファ１，Ｄバッファ２にそれぞれ格納し、二つのＤバッファの値をデータ照合器で照合を行い、一致していた場合にデータを出力する。この時刻をｔ２とし、次の３２Byteのデータ転送に入り、二つのデータ部の照合処理を１回のＣＰＵ処理で転送するデータの最後に至るまで繰り返す。ｔ１の時点で二つのデータが選択済みであるため、データ部の照合の２回目以降ではＣＲＣビットは照合しなくて良い。
【００６１】
図６と図７の比較から分かるように、本発明の照合システムでは、４台のＣＰＵが出力したデータのうち二つしか照合しないで済むため、従来の照合システムよりも照合に要する時間を短くすることができる。
【００６２】
これらのことにより、複数のＣＰＵで同一の処理を行って照合する高信頼な照合システムにおいて、従来よりも高速に照合を行って正しいデータを出力することが可能になる。
【００６３】
更に、照合用のデータを格納するＤバッファをＣＰＵの台数分用意する必要が無くなるので、回路規模が小さくなって低コストに貢献するというメリットもある。
【００６４】
また、実施の形態１では４台のＣＰＵで同一の処理を実行する例を示したが、２台以上のＣＰＵ構成であれば、データを格納するメモリアドレス数とチェックコード照合器の照合構成をＣＰＵの数に合わせて変更して実装してもよい。
【００６５】
また、実施の形態１ではチェックコードとしてＣＲＣビットを用いる例を示したが、ＣＲＣビットの代わりにパリティビットやＥＣＣビットを用いて、Ｃバッファ，Ｄバッファおよび照合用の回路の構成を変更して実装してもよい。
【００６６】
〔実施の形態２〕
次に、本発明における照合システムにおいて、二つのデータが一致しなかった場合にチェックコードのチェックによって正しいデータを判定する照合システムの一例を説明する。
【００６７】
図８は、図１の照合システムに対し、チェックコードチェッカ９を追加し、データ照合器８に有効データ選択信号６２を追加した部分が異なっている。
【００６８】
図８の照合システムの動作は、４台のＣＰＵからのＣＰＵ出力データがデータバス５９，６０に転送されるまでの動作は図１の照合システムと同様である。
【００６９】
図８のチェックコードチェッカ９内には、ＣＲＣチェッカ３４，３５がある。ＣＲＣチェッカ３４は、データバス５９から一つ目のＣＰＵ出力データのデータ部を入力し、予め決まっているＣＲＣ復号アルゴリズムに基づいてデータ部のチェックを行い、ＣＲＣチェック結果７７を出力する。ここでは、ＣＲＣチェックの結果、データ部に誤りが無ければＣＲＣチェック結果７７の値は“０”を、誤りがあればＣＲＣチェック結果７７の値は“１”になるものとする。また、ＣＲＣチェッカ３５，データバス６０，ＣＲＣチェック結果７８についても同様である。
【００７０】
デコーダ３６は、ＣＲＣチェック結果７７，７８の値を元にしてデータを選択する。両方のＣＲＣチェック結果ともに誤りが無ければ一つ目のＣＰＵ出力データおよびデータバス５９を選択し、ＣＲＣチェック結果７７で誤りと判定すれば二つ目のＣＰＵ出力データおよびデータバス６０を選択する。
【００７１】
図８のデータ照合器８内にあるＸＯＲゲート８１の動作は、実施の形態１の図４と同様でデータ照合判定信号７６を出力するが、データ照合器８にはセレクタ３３を追加している。セレクタ３３は、データバス５９，６０から一方を選択して出力データ６１として出力する。例えば、データ照合判定信号７６の値が“０”でデータバス５９，６０を通ってきた両データが一致している場合は、データバス５９を通ってきたデータを出力データ６１として出力する。
【００７２】
しかし、出力データに不一致が発生してデータ照合判定信号７６の値が“１”になった場合は、有効データ選択信号６２の値に応じて出力データ６１を選択する。有効データ選択信号６２により、データバス５９を通ってきたデータのＣＲＣチェック結果が不正であれば、データバス６０を通ってきたデータを出力データ６１として出力する。
【００７３】
逆に、データバス６０を通ってきたデータのＣＲＣチェック結果が不正であれば、データバス５９を通ってきたデータを出力データ６１として出力する。
【００７４】
このようにして、二つのデータを照合して不一致が発生した場合においても、ＣＲＣチェック結果を利用してデータを選択することで、正しいデータを出力することが可能である。
【００７５】
また、実施の形態２ではチェックコードとしてＣＲＣビットを用いる例を示したが、ＣＲＣビットの代わりにパリティビットやＥＣＣビットを用いて、ＣＲＣチェッカをパリティチェッカやＥＣＣチェッカに変更して実装してもよい。
【００７６】
〔実施の形態３〕
次に、本発明における照合システムにおいて、データの一部のみを照合することで照合に要する時間を短縮する照合システムについて説明する。
【００７７】
図９は、データに含まれるヘッダ部分を照合する照合システムの一例を示しており、図１の照合システムに対し、メモリ５のリードバス５７にヘッダ照合器１０を接続した部分が異なっている。
【００７８】
図９の照合システムの動作は、４台のＣＰＵからのＣＰＵ出力データがライトバス５６に転送されるまでの動作は図１の照合システムと同様である。
【００７９】
図９のメモリ５は、メモリアドレス４５，４６に２台のＣＰＵからのＣＰＵ出力データをそれぞれ格納するものとする。
【００８０】
また、このときのＣＰＵ出力データフォーマットの例を図１０に示す。ＣＰＵ番号，データ部，チェックコードに加え、２８Byteのヘッダ部を付加している。図１０に示すヘッダ部は、データ部から生成したチェックサム，データの順番を表すシーケンス番号，データ転送の際に送り先を判定するＩＰ（Internet Protocoｌ）ヘッダから構成されるものとする。
【００８１】
図９のメモリアドレス４５，４６の網掛け部分には、このデータフォーマットの中のヘッダ部分を格納することを表している。
【００８２】
ヘッダ照合器１０は、リードバス５７を介してメモリアドレス４５，４６からＣＰＵ出力データを読み出す。
【００８３】
ヘッダ照合器１０内のヘッダセレクタ３０は、まずリードバス５７を通ってきた各ＣＰＵ出力データのＣＰＵ番号から、どのＣＰＵから出力されたデータかを判定する。判定の結果、メモリアドレス４５に格納していたＣＰＵからのデータのヘッダを、Ｈ（ヘッダ）バッファ１（３１）に格納する。同様に、メモリアドレス４６に格納していたＣＰＵからのデータのヘッダを、Ｈバッファ２（３２）に格納する。
【００８４】
ここで、リードバス５７は１組しか無いため、各ＣＰＵ出力データを同時にメモリ５から読み出すことはできない構成となっている。
【００８５】
二つのＨバッファに各ヘッダを格納したら、Ｈバッファ１（３１）からのヘッダ出力７４、およびＨバッファ２（３２）からのヘッダ出力７５をＸＯＲゲート８２に出力し、ヘッダ照合判定信号７９を出力する。
【００８６】
ヘッダ出力７５，７６を通るデータ値が一致していれば、ヘッダ照合判定信号７９の値は“０”になっているものとする。
【００８７】
ヘッダ出力７４，７５を通ってきたデータ値が誤りの影響で一致していない場合、ヘッダ照合判定信号７９の値が“１”となるので、このときはメモリアドレス４５，４６に格納されたＣＰＵ出力データの値は正しくない可能性があると判断し、誤り判定による処理を行えば良い。
【００８８】
図９，図１０で示した照合システムにおける、データ照合の高速化効果を図１１，図１２で示す。
【００８９】
図１１は、本発明を用いていない従来のＣＰＵ二重化照合システムにおける出力データ照合のタイミングチャートを示したものである。
【００９０】
ここでは、１組のリードバスを用いて、１回のＣＰＵ処理で転送するデータ部を３２Byteずつのデータサイズに分割し、照合する例を示す。
【００９１】
時刻ｔ１において、ＣＰＵ（１）が出力したデータ１をリードバスを介して転送し、転送後にＤバッファ１に格納する。同様に、ＣＰＵ（２）がデータ２をＤバッファ２に格納する。
【００９２】
各データをＤバッファに格納したら、データ照合器によって二つのデータ部の照合を行い、一致していた場合にデータを一つ選択して出力する。この時刻をｔ２とし、次の３２Byteのデータ転送に入り、これらの動作を１回のＣＰＵ処理で転送するデータの最後に至るまで繰り返す。
【００９３】
従来のＣＰＵ二重化照合システムでは、このように２台のＣＰＵから出力されるデータ部を全て照合する必要があり、多大な時間がかかっていた。
【００９４】
図１２は、本発明の実施の形態３に示した照合システムにおける出力データ照合のタイミングチャートを示したものである。
【００９５】
時刻ｈ１において、ＣＰＵ（１）が出力したＣＰＵ出力データのヘッダ１を、リードバスを介して転送し、転送後にＨバッファ１に格納する。同様に、ＣＰＵ（２）からヘッダ２をＨバッファ２に格納する。
【００９６】
各ヘッダをＨバッファに格納したら、ヘッダ照合器によってヘッダの照合を行う。このヘッダのサイズは２８Byteを想定しており、一般にデータ部のサイズよりも小さいため、３２Byteのデータを照合するよりも照合時間が小さくなることを想定している。
【００９７】
ヘッダの照合によってヘッダ照合判定信号７９の値が決定した時刻をｔ１とすると、本発明の照合システムでは、この時点でデータの照合が終了したとみなす。これは、データ部の照合で誤りが発生する場合においてはヘッダ部にも誤りが含まれる可能性が極めて高く、ヘッダ部の照合において誤りが発生していない場合は、データ部にも誤りが発生していないと見なしても差し支えないからである。
【００９８】
図１１と図１２の比較から分かるように、本発明の照合システムでは、２台のＣＰＵが出力したデータのうちヘッダしか照合しないで済むため、従来の照合システムよりも照合に要する時間を短くすることができる。
【００９９】
これらのことにより、複数のＣＰＵで同一の処理を行って照合する高信頼な照合システムにおいて、従来よりも高速に照合を行って正しいデータを出力することが可能になる。
【０１００】
なお、図１０に示したヘッダの内容は一例であり、パリティビットなどのチェックコードや、ＭＡＣ（Media Access Control）アドレスなどの転送情報などを含んでもよい。
〔実施の形態４〕
次に、本発明における照合システムにおいて、マイコン（マイクロコントローラ）を用いてデータの照合を行う照合システムについて説明する。
【０１０１】
図１３は、図１の照合システムに対し、チェックコード照合器６の代わりにマイコン１１を追加した部分が異なっている。
【０１０２】
図１３の照合システムの動作は、４台のＣＰＵからのＣＰＵ出力データがメモリ５に格納されるまでの動作は図１の照合システムと同様である。
【０１０３】
マイコン１１に実装したプログラムでの処理により、図１のチェックコード照合器６で行っていた動作をマイコン１１で実現し、データ選択指示７０をデータ選択回路７に出力する。すなわち、リードバス５７を介してメモリアドレス４１，４２，４３，４４に格納された各チェックコードをプログラムによって照合し、一致した中から二つのデータを選択してデータ選択指示７０を出力する。
【０１０４】
データ選択指示７０の値は、図１のデータ選択信号５８と同一で良い。
【０１０５】
また、データ照合器８に不一致割り込み信号８０を追加し、マイコン１１に出力している。
【０１０６】
図１４に、図１３に示した照合システムの動作の一例を、フローで示している。図１４のフローは、点線枠で囲んだ二つの領域は、それぞれマイコン上のプログラムで実装する処理と、データ選択回路およびデータ照合器で実装する処理が分かるように記載している。また図１４のフローは、図１３におけるリードバス５７以降について説明している。
【０１０７】
マイコン上のプログラムによって、ステップ２０１でチェックコード１をメモリ５から読み出す。同様に、ステップ２０２，ステップ２０３，ステップ２０４にて、残り三つのチェックコードを読み出す。
【０１０８】
ステップ２０５にて四つのチェックコードを照合し、ステップ２０６にて四つのチェックコードの中から照合で一致した二つを選択し、データ選択指示７０をデータ選択回路７に出力する。
【０１０９】
ステップ２１０にて選択された二つのデータのうちデータ１をＤバッファ１に格納し、ステップ２１１にてもう一つのデータ２をＤバッファ２に格納する。
【０１１０】
ステップ２１２にて二つのデータを照合し、一致していればステップ２１３にてデータ列全ての照合が終了したか判定する。終了していなければステップ２１０に戻って、データのバッファへの格納と照合処理を繰り返す。
【０１１１】
データ列全ての照合が終了したら、ステップ２１４にて出力データ６１の出力を行う。
【０１１２】
もし、ステップ２０５にて四つのチェックコードを照合した結果、不一致が発生した場合は、ステップ２０７の二つ以上一致している場合はステップ２０６に進むことができるが、ステップ２０８の二つずつ一致か全て一致しない場合は、判定不能としてステップ２０９のチェックコード異常処理をプログラムで実行する。
【０１１３】
チェックコード異常処理の例としては、各ＣＰＵに再度処理を行わせてデータ転送からやり直すことなどが挙げられる。
【０１１４】
また、ステップ２１２にて二つのデータを照合した結果、不一致が発生した場合は、ステップ２１５にてデータ照合器が不一致割り込み信号８０をマイコン１１に出力し、それを受けたマイコン１１はステップ２１６のデータ不一致異常処理をプログラムで実行する。
【０１１５】
データ不一致異常処理の例としては、Ｄバッファ１，Ｄバッファ２に格納したＣＰＵ出力データとは別のＣＰＵ出力データを各Ｄバッファに格納して再度照合を行ってみたり、各ＣＰＵに再度処理を行わせてデータ転送からやり直したりするなどが挙げられる。
【０１１６】
ステップ２０９のチェックコード異常処理やステップ２１６のデータ不一致異常処理によって、誤り抜けを防ぎながらシステム全体を安全に停止させるなどの処置を施すことができるため、システムの信頼性を保つことができる。
【０１１７】
このように、マイコンを用いた照合システムとすることで、プログラムを使った柔軟な照合システムを構築することが可能となる。
【０１１８】
〔実施の形態５〕
次に、本発明を用いたシステムの一例として、列車運行制御システムに適用する場合の例について説明する。
【０１１９】
図１５に示す照合モジュール１０１は、ＮＩＣ（Network Interface Card）１０４，メモリ５，ＬＡＮ（Local Area Network）ドライバ１０５および、本発明の照合システムにおけるチェックコード照合器６，データ選択回路７，データ照合器８をＬＳＩ（Large Scale ＩＣ）１０３として実装したものを含んだ構成となっている。
【０１２０】
ＮＩＣ（１０４）は、ネットワークからのライトバス５６を介して転送されるデータの転送情報を変換するモジュールであり、またＬＡＮドライバ１０５は、照合モジュール１０１の外部に接続される制御ＬＡＮへのＬＡＮ出力６３を生成するモジュールである。
【０１２１】
図１５の照合モジュール１０１を利用した、列車運行制御システムの全体図の一例を示したものが図１６である。
【０１２２】
図１６の司令室５１０は、制御端末１１１，１１２，１１３，１１４において、列車制御のための処理を同一に行う。
【０１２３】
ネットワーク５５は二重化されており、各制御端末からの制御出力を照合モジュール１０１，１０２に出力する。
【０１２４】
照合モジュール１０１，１０２によって照合された正しい制御出力を、二重化された制御ＬＡＮ６４を介して、列車を制御する駅Ａ（５０４），駅Ｂ（５０５），駅Ｃ（５０６）にそれぞれ転送する。
【０１２５】
駅Ａ（５０４）に設置した列車制御Ｉ／Ｏ装置５０１は、制御端末から転送されてきた制御出力の値を元に列車制御信号６５を生成し、列車５０７の運行を制御する。同様に、駅Ｂ（５０５）に設置した列車制御Ｉ／Ｏ装置５０２は列車５０８の運行を制御し、駅Ｃ（５０６）に設置した列車制御Ｉ／Ｏ装置５０３は列車５０９の運行を制御する。
【０１２６】
これらのことにより、本発明の照合システムを適用することで、正しい制御出力を高速に列車に伝達する列車運行制御システムを実現することが可能になる。
【０１２７】
〔実施の形態６〕
【０１２８】
次に、本発明を用いたシステムの一例として、プラント制御システムに適用する場合の例について説明する。
【０１２９】
図１７の制御端末１１１，１１２，１１３，１１４において、発電プラント１０９の制御のための同一の処理を行う。
【０１３０】
各制御端末は、制御出力を情報ＬＡＮ６８からライトバス５６を介して照合モジュール１０１に出力する。
【０１３１】
照合モジュール１０１は、転送されてきた制御出力を照合し、ＬＡＮ出力６３としてＩ／Ｏ装置１０８に転送する。
【０１３２】
Ｉ／Ｏ装置１０８は発電プラント１０９を制御するプラント制御信号７１を出力して発電動作を制御する。
【０１３３】
また、照合モジュール１０１から表示制御出力６９を表示板１０７に出力して、制御端末の動作状態を表示する。例えば制御端末１１３からの制御出力が他の制御端末からの制御出力の値と一致しない場合は、表示制御出力６９に制御端末１１３が異常であるという情報を転送し、表示板１０７に表示する。
【０１３４】
これらのことにより、本発明の照合システムを適用することで、正しい制御出力を高速に発電プラントに伝達するプラント制御システムを実現することが可能になる。
【０１３５】
〔実施の形態７〕
【０１３６】
次に、本発明を用いたシステムの一例として、制御装置をコントロールする制御システムに適用する場合の例について説明する。
【０１３７】
図１８の制御システムは、４台の制御端末と４台の照合モジュールによって構成されており、制御用データの出力のマスタとなるのが照合モジュール１２１である場合の例で示している。
【０１３８】
制御端末１１１，１１２，１１３，１１４において、制御装置を制御するための同一の処理を行い、制御用データをネットワーク５５に出力する。
【０１３９】
ネットワーク５５は二重化されており、４台の制御端末からの制御用データを、図１５で示した構成の各照合モジュール１２１，１２２，１２３，１２４に出力する。
【０１４０】
照合モジュール１２１は、照合したＬＡＮ出力６３をデータ照合セレクタ１７，１８に出力する。同様に、照合モジュール１２２は照合したＬＡＮ出力４７をデータ照合セレクタ１７，１８に出力する。
【０１４１】
データ照合セレクタ１７は、ＬＡＮ出力６３，４７が一致している場合に照合ＬＡＮ出力９１を、二重化された制御ＬＡＮ（６４）を介して、外部の制御装置へ出力して制御を行う。通常、制御装置へ出力するのはマスタである照合モジュール１２１を介した制御用データのみであり、照合モジュール１２２，１２３，１２４を介した制御用データは制御ＬＡＮ（６４）へ出力しない。
【０１４２】
また、データ照合セレクタ１７が出力するデータ照合信号８５は、ＬＡＮ出力６３，４７が一致しているときは“０”の値を、不一致であれば“１”の値となる信号であり、データ照合セレクタ１８およびデータ照合信号８６についても同様である。
【０１４３】
また、照合モジュール１２３，１２４および、データ照合セレクタ１９とデータ照合信号８７，データ照合セレクタ２０とデータ照合信号８８についても同様の構成である。
【０１４４】
ここで、ＬＡＮ出力６３，４７が一致しているときはＯＲゲート８３が出力する不一致通知信号８９の値は“０”であるが、ＬＡＮ出力６３，４７が不一致である場合は不一致通知信号８９の値が“１”となり、照合モジュール１２１もしくは１２２で誤りが発生したことを表す。この場合は、不一致通知信号８９を受けた照合モジュール１２３がマスタとなり、制御ＬＡＮ（６４）へ制御用データを出力する立場となる。
【０１４５】
また逆に、照合モジュール１２３もしくは１２４で誤りが発生して不一致通知信号９０の値が“１”となった場合は、不一致通知信号９０を受けた照合モジュール１２１はマスタのまま動作を続け、照合モジュール１２３，１２４が誤り発生により使用不可であるという情報を知る。
【０１４６】
これらのことにより、照合モジュールを多重化してお互いに生存監視をすることで、一部の照合モジュールが故障して誤ったデータを出力しても、他の照合モジュールが代替わりして正常な動作を続けることができ、高信頼な制御システムを実現することが可能になる。
【０１４７】
また、実施の形態７では４台の照合モジュールを使用する例を示したが、２台以上の照合モジュールを用いて構成して実装してもよい。
【０１４８】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【０１４９】
本発明の照合システムは、特に図１６に示されるような列車運行制御システム、図１７に示したようなプラント制御システム、及び図１８に示した制御システムに適用可能であり、その他産業システム，自動車に用いられる制御装置などに幅広く適用可能である。
【図面の簡単な説明】
【０１５０】
【図１】本発明の実施の形態１における、照合システムの一例を表すブロック図である。
【図２】図１の照合システムにて転送される出力データのデータフォーマットの一例を表す図である。
【図３】図２のデータフォーマットにおけるチェックコードの一例を表す図である。
【図４】図１に示した照合システムのチェックコード照合器，データ選択回路，データ照合器の詳細を表すブロック図である。
【図５】ＣＲＣビットの照合結果によってデータ選択信号の値を決定する手段の一例を表す表である。
【図６】本発明を用いていない従来のＣＰＵ四重化照合システムにおける出力データ照合のタイミングチャートを示したものである。
【図７】図１の照合システムにおける出力データ照合のタイミングチャートの一例を示したものである。
【図８】本発明の実施の形態２における、照合システムの一例を表すブロック図である。
【図９】本発明の実施の形態３における、照合システムの一例を表すブロック図である。
【図１０】図９の照合システムにて転送される出力データのデータフォーマットの一例を表す図である。
【図１１】本発明を用いていない従来のＣＰＵ二重化照合システムにおける出力データ照合のタイミングチャートの一例を示した図である。
【図１２】図９の照合システムにおける出力データ照合のタイミングチャートの一例を示した図である。
【図１３】本発明の実施の形態４における、照合システムの一例を表すブロック図である。
【図１４】図１３で示した照合システムにおける、データ照合のフローを示す図である。
【図１５】本発明の実施の形態５における、照合モジュールの構成の一例を示すブロック図である。
【図１６】図１５の照合モジュールを用いて列車の運行を管理する列車運行制御システムを構成した場合の一例を表す図である。
【図１７】本発明の実施の形態６における、図１５の照合モジュールを用いて発電プラントを制御するシステムを構成した場合の一例を表す図である。
【図１８】本発明の実施の形態７における、図１５の照合モジュールを用いて高信頼な制御システムを構成した場合の一例を表す図である。
【符号の説明】
【０１５１】
１，２，３，４  ＣＰＵ
５  メモリ
６  チェックコード照合器
７  データ選択回路
８  データ照合器
９  チェックコードチェッカ
１０  ヘッダ照合器
１１  マイコン
１７，１８，１９，２０  データ照合セレクタ
２１，２２，２３，２４  Ｃバッファ
２５  エンコーダ
２６  デコーダ
２７，２８  Ｄバッファ
２９  データセレクタ
３０  ヘッダセレクタ
３１，３２  ヘッダバッファ（Ｈバッファ）
３３  セレクタ
３４，３５  ＣＲＣチェッカ
３６  デコーダ
５５  ネットワーク
５６  ライトバス
５７  リードバス
６４  制御ＬＡＮ
６８  情報ＬＡＮ
１０１，１０２，１２１，１２２，１２３，１２４  照合モジュール
１０３  ＬＳＩ
１０４  ネットワークインタフェースカード（ＮＩＣ）
１０５  ＬＡＮドライバ
１０７  表示板
１０８  Ｉ／Ｏ装置
１０９  発電プラント
１１１，１１２，１１３，１１４  制御端末
５０１，５０２，５０３  列車制御Ｉ／Ｏ装置
５０４，５０５，５０６  駅
５０７，５０８，５０９  列車
５１０  司令室
【図１】
2010009327.tif 000003
【図２】
2010009327.tif 000004
【図３】
2010009327.tif 000005
【図４】
2010009327.tif 000006
【図５】
2010009327.tif 000007
【図６】
2010009327.tif 000008
【図７】
2010009327.tif 000009
【図８】
2010009327.tif 000010
【図９】
2010009327.tif 000011
【図１０】
2010009327.tif 000012
【図１１】
2010009327.tif 000013
【図１２】
2010009327.tif 000014
【図１３】
2010009327.tif 000015
【図１４】
2010009327.tif 000016
【図１５】
2010009327.tif 000017
【図１６】
2010009327.tif 000018
【図１７】
2010009327.tif 000019
【図１８】
2010009327.tif 000020