(57)【要約】【課題】本発明では、照合型フェールセーフ演算装置において、CPUのスループットを低下させることなく、高速、安価なフェールセーフ演算装置を提供することを目的とする。【解決手段】上記課題の解決のため、本発明は、演算処理を行うCPUを複数備え、前記複数のCPUの演算結果を照合することによって前記CPUの故障を検知するフェールセーフ演算装置において、前記複数のCPUの間で演算結果を交換するデータ交換部と、前記データ交換部により得られた他CPUの演算結果と自CPUの演算結果を照合し、前記データ照合部による照合によりデータの不一致を検出した場合にリセット要求信号を出力するデータ照合部と、を備えたことを特徴とする。【選択図】  図１
2017111523.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を行うCPUを複数備え、前記複数のCPUの演算結果を照合することによって前記CPUの故障を検知するフェールセーフ演算装置において、
前記複数のCPUの間で演算結果を交換するデータ交換部と、
前記データ交換部により得られた他CPUの演算結果と自CPUの演算結果を照合し、前記データ照合部による照合によりデータの不一致を検出した場合にリセット要求信号を出力するデータ照合部と、
を備えたことを特徴とするフェールセーフ演算装置 。
【請求項２】
請求項１記載のフェールセーフ演算装置において、
前記リセット要求信号に基づいて前記CPUにリセットをかけるリセット生成部を備えたことを特徴とするフェールセーフ演算装置。 
【請求項３】
請求項２記載のフェールセーフ演算装置において、
前記複数のCPUは、定期的にリセット要求信号を出力するリセットテスト部を備え、
前記リセット生成部は、前記データ交換部またはリセットテスト部からリセット要求信号が出力された場合に、前記リセット要求信号に基づいて前記CPUにリセットをかけることを特徴とするフェールセーフ演算装置。 
【請求項４】
請求項１乃至請求項３のいずれか１項に記載のフェールセーフ演算装置において、
前記データ照合部は、所定の規定時間内に前記データ交換部を介して他CPUの演算結果が得られない場合、または、前記データ交換部を介して得られた他CPUの演算結果と自CPUの演算結果が照合不一致となった場合に、リセット要求信号を出力することを特徴とするフェールセーフ演算装置。 
【請求項５】
請求項２記載のフェールセーフ演算装置において、
前記リセット生成部の出力するリセット信号の回数をカウントする記録部を備え、
前記複数のCPUは、前記記録部に記録されたリセット回数に基づいて、自CPUの動作を停止させるか否かを判断するブートチェック部を備えたことを特徴とするフェールセーフ演算装置。 
【請求項６】
請求項１乃至請求項５のいずれか１項に記載のフェールセーフ演算装置において、
前記複数のCPUは演算結果を要約してデータ量を圧縮するハッシュ計算部を備え、
前記データ交換部は、前記複数のCPUのハッシュ計算部の出力を交換し、
前記データ照合部は、自CPUのハッシュ計算部の出力と前記データ交換部を介して得られた他CPUのハッシュ計算部の出力を照合することを特徴とするフェールセーフ演算装置。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、CPUを用いたフェールセーフ演算装置に関する。
【背景技術】
【０００２】
従来のCPUを用いたフェールセーフ演算装置は、CPUの演算結果をなんらかの手段でチェックすることによって故障を検出し、その際に危険側の動作を行わないように装置を構成する方法が主流となっている。また、故障の検出方法としては、故障検出回路を内蔵した自己診断型のCPUを用いる方式、または、CPUを多重化し、各CPUの動作を比較して比較結果が不一致となった場合に故障を検出する方式のいずれかが使用されている。本発明は、このうち後者の照合型のフェールセーフ演算装置に関する。
【０００３】
また、照合型のフェールセーフ演算装置は、特許文献１に記載されるような、複数のCPUを同期させて動作させ、バス上に現れるデータ全てを比較器にて照合する方式（以下、バス照合方式と呼ぶ）と、複数のCPUが外部に対して出力する演算結果を比較器にて照合する方式（以下、出力照合方式と呼ぶ）の大きく２つの方式に分類される。いずれの方式においても、照合不一致を検出した場合に、比較器によって演算結果の外部出力を停止させる方式である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−８６９３９
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年、制御システムの大規模化、制御内容の多様化によりフェールセーフ演算装置に対する高性能化（高速化）の要求が強い。これら要求に対し、上記照合型のフェールセーフ演算装置は、バス照合方式においては、バスのアクセスサイクルで照合を行うため、高速なCPUを導入する場合にスループットの低下を招く課題がある。また、出力照合方式においては、比較器を高速に動作させるために微細な半導体プロセスを用いることが必要となり、結果、コスト高を招く課題がある。
【０００６】
そこで本発明では、上記の照合型フェールセーフ演算装置において、CPUのスループットを低下させることなく、高速、安価なフェールセーフ演算装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題の解決のため、本発明は、演算処理を行うCPUを複数備え、前記複数のCPUの演算結果を照合することによって前記CPUの故障を検知するフェールセーフ演算装置において、前記複数のCPUの間で演算結果を交換するデータ交換部と、前記データ交換部により得られた他CPUの演算結果と自CPUの演算結果を照合し、前記データ照合部による照合によりデータの不一致を検出した場合にリセット要求信号を出力するデータ照合部と、を備えたことを特徴とする。
【発明の効果】
【０００８】
本発明のフェールセーフ演算装置においては、CPU外部に比較器を設けずに、複数のCPU間にてデータ照合を行うことで故障を検出でき、また、故障検出時に演算結果の外部出力を停止できる。そのため、比較器起因の速度制約がなく高速で動作可能であり、かつ高い安全性を維持したフェールセーフ演算装置を実現できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第一実施例の構成図
【図２】本発明の第一実施例における、データ照合処理フロー
【図３】本発明の第一実施例における、起動時処理フロー
【図４】本発明の第一実施例における、記録部の構成図
【図５】本発明の第二実施例の構成図
【図６】本発明の第三実施例の構成図
【発明を実施するための形態】
【００１０】
以下、図面を用いて本発明の具体的な実施形態を説明する。
本実施形態においては、CPU外部に比較器を設けずに、複数のCPU間にてデータ交換を行い、CPUのソフトウェアにてデータ照合を行い、照合不一致により故障を検出する。ここで、このような構成においては、従来技術と異なり比較器を使用しないため、演算結果の外部出力を停止する手段が新たに必要となる。そこで、本実施形態では、CPUにて照合不一致を検出した際にCPU自身にリセットをかけることで演算結果の外部出力を停止させる。またこの場合、リセットにより演算結果の外部出力を停止させるため、リセット動作が安全性の要となる。そのため、リセット動作を監視する手段を設けたうえ、CPUが自ら定期的にリセットをかけることで、リセット動作の健全性確認を行うことが望ましい。
【実施例１】
【００１１】
まず、図１を用いて本実施形態におけるフェールセーフ演算装置の構成を説明する。図１に示したフェールセーフ演算装置は二重系の構成であり、主系(A系)のCPU-A1と従系(B系)のCPU-B（2）から構成される。
【００１２】
さらに、CPU-A（1）内部においては、演算処理を行うデータ演算部-A（12）、データ演算部-A（12）の演算結果（外部出力予定のデータ）のデータ圧縮を行うハッシュ計算部-A（16）、リセット信号を生成するリセット生成部-A（3）、CPU-B（2）内のハッシュ計算部-B（17）の演算結果を格納するデータ交換部-A（8）（CPU-A1内部のメモリ）、ハッシュ計算部-A（16）の演算結果とデータ交換部-A（8）に格納されたハッシュ計算部-B（17）の演算結果を照合するデータ照合部-A（10）、リセット生成部-A（3）に対しリセット動作の健全性確認のためのリセット要求を発行するリセットテスト部-A（18）、CPU-A（1）起動時にリセット信号の識別を行うブートチェック部-A（14）を備える。
【００１３】
同様に、CPU-B（2）内部においても、演算処理を行うデータ演算部-B（13）、データ演算部-B（13）の演算結果（CPU-A（1）の外部出力予定のデータに対応するもの）のデータ圧縮を行うハッシュ計算部-B（17）、リセット信号を生成するリセット生成部-B（4）、CPU-A（1）内のハッシュ計算部-A（16）の演算結果を格納するデータ交換部-B（9）（CPU-B2内部のメモリ）、ハッシュ計算部-B（17）の演算結果とデータ交換部-B（9）に格納されたハッシュ計算部-A（16）の演算結果を照合するデータ照合部-B（11）、リセット生成部-B（4）に対しリセット動作の健全性確認のためのリセット要求を発行するリセットテスト部-B(19)、CPU-B（2）起動時にリセット信号の識別を行うブートチェック部-B（15）を備える。
【００１４】
また、CPU-A（1）、CPU-B（2）外部においては、リセット生成部-A（3）からリセット信号Aが出力されたことを記録する記録部-A（5）と、リセット生成部-B（4）からリセット信号Bが出力されたことを記録する記録部-B(6)と、リセット生成部-A(3)またはリセット生成部-B(4)からリセット信号が出力された場合にCPU-A(1)とCPU-B(2)の双方にリセット信号を出力するリセット制御部(7)を備える。
【００１５】
次に、本発明に基づくフェールセーフ演算装置の動作を説明する。本発明に基づくフェールセーフ演算装置の動作は、故障による誤演算を検出するためのデータ照合部-A(10)及びデータ照合部-B(11)のデータ照合処理と、データ照合にて不一致検出した際のリセット系回路（リセット生成部-A(3)、リセット生成部-B(4)、リセット制御部(7)）の動作、および、CPU-A（1）、CPU-B（2）の起動時処理を特徴とする。以下、各動作について説明を行う。
【００１６】
まず、データ照合部-A（10）、データ照合部-B(11)のデータ照合処理について、図２を用いて説明する。データ演算部-A(12)、データ演算部-B(13)が規定の演算処理を終了すると、他系のデータ交換部（CPU-A(1)ならばデータ交換部-B(9)、CPU-B(2)ならばデータ交換部-A(8)）に、外部出力予定のデータをハッシュ計算部（CPU-A(1)ならばハッシュ計算部-A(16)、CPU-B(2)ならばハッシュ計算部-B(17)）によってデータ圧縮した演算結果を格納する（ステップS21）。その後、データ照合部は他系のデータ交換部にデータ格納を行った後からの時間をカウント開始し（ステップS22）、規定時間Tc[s]内に自系のデータ交換部に他系の演算結果が格納されたか否かををチェックし（ステップS23）、規定時間内に格納されていれば、自系のデータ交換部に格納された他系の演算結果と自系の演算結果とを照合する（ステップS24、S25）。
【００１７】
なお、規定時間Tc[s]は、演算処理の監視を目的に設けたもので、故障発生からシステムが動作停止しなければならない時間Tstop[s]よりも短い時間に設定する。このとき、規定時間Tc[s]内に自系データ交換部に他系の演算結果が格納され、かつ、照合結果が一致であれば正常とし、それ以外を異常とする。
【００１８】
ここで、外部出力予定のデータが大きい、あるいはCPUの演算能力に比べて外部バスが低速な場合、ハッシュ計算部（ハッシュ計算部-A（16）、ハッシュ計算部-B（17））は、例えばCRCコードのようなデータに要約することで交換するデータ量を低減し、必要な規定時間Tc[s]以内にデータ照合を行うことができる。また、外部出力予定のデータが小さい場合、あるいは外部バスが十分に高速な場合は、ハッシュ計算部は入力データをそのまま出力しても良い。
【００１９】
上述のデータ照合処理において、データ照合部-A（10）が異常を検出した場合、データ照合部は自系のリセット生成部（CPU-A（1）ならばリセット生成部-A（3）、CPU-B（2）ならばリセット生成部-B（4））に対しリセット要求を発行し（ステップS26）、動作停止する（ステップS27）。
【００２０】
次に、リセット系回路動作について説明する。リセット生成部-A（3）は、データ照合部-A（10）からリセット要求が発行されると、記録部-A（5）及びリセット制御部（7）に対しリセット信号を出力する。同様に、データ照合部-B（11）が異常を検出した場合、リセット生成部-B（4）は、データ照合部-B（11）からリセット要求が発行されると、記録部-B（6）及びリセット制御部（7）に対しリセット信号を出力する。
【００２１】
そして、リセット制御部（7）は、リセット生成部-A（3）またはリセット生成部-B（4）からリセット信号が入力されると、CPU-A（1）、CPU-B（2）の双方に対しリセット信号を出力し、CPU-A（1）、CPU-B（2）の双方にリセットをかける。
【００２２】
図４は記録部（記録部-A（5）、記録部-B（6））の実施形態の一例を示す。図４に示した記録部はフリップフロップを用いた3ビットカウンタの構成をとり、リセット生成部-A(3)、リセット生成部-B（4）から入力されたリセットパルス数をカウント（図４では、Lowパルスを0〜7までカウント）することでリセット信号が出力されたことの確認を行う。なお、カウント値は電源投入時に電源有効となった後にクリアされ、記録部-A（5）、記録部-B（6）に記録される値は電源投入後からのリセットパルスのカウント値を示すものとする。
【００２３】
異常検出によってCPU-A（1）、CPU-B（2）にリセットがかかると、ブートチェック部-A（14）、ブートチェック部-B（15）は、再起動後、記録部-A（5）、記録部-B（6）に記録されたリセット信号のカウント値を読み取り、後述する起動時処理によって異常検出によるリセットか否かを判断し、異常検出によるリセットの場合は、再起動後に動作停止する。
【００２４】
以上のように、本発明に基づくフェールセーフ演算装置は、リセットによってCPU-A（1）、CPU-B（2）を動作停止させ演算結果の外部出力を停止するため、リセット系回路（リセット生成部-A（3）、リセット生成部-B（4）、リセット制御部（7））の動作が安全性の要となる。具体的には、万一、CPU-A（1）またはCPU-B（2）にて異常検出したときに、リセット系回路動作が故障している場合があると、CPU-A（1）またはCPU-B（2）が動作停止できなくなる可能性がある。したがって、リセット系回路の動作については定期的に健全性確認を行うことが望ましい。
【００２５】
ここで、本発明のリセット系回路については、入力指令に基づきリセット信号を生成する回路であり、CPU内部の演算回路と比較すれば遥かに少ない部品点数で実現でき、リセット系回路が故障する確率は、CPUが故障する確率よりも極めて低いものと考えられる。そのため、リセット系回路の健全性確認については、CPU-A（1）、CPU-B（2）がデータ照合を行う間隔よりも十分長い間隔、たとえば電源投入タイミングで行えば良い。
【００２６】
そのため、リセット系回路動作の健全性確認については、CPU-A（1）、CPU-B（2）のリセットテスト部-A（18）、リセットテスト部-B（19）が、電源投入後のパワーオンリセット時に、リセット生成部-A（3）、リセット生成部-B（4）に対しテスト用のリセット要求を発行し、自らリセットをかけることでリセット系回路動作の健全性確認を行う。また、再起動後に、記録部-A（5）、記録部-B（6）に記録されたリセット信号のカウント値を読み取り、カウント値に基づきテスト用のリセットがかかったか否かを判断する。
【００２７】
このとき、記録部-A（5）、記録部-B（6）に記録されたリセット信号のカウント値は、電源が有効であることを示す信号（PABL信号）の立ち上がりをトリガとしてゼロクリアされているものとする。したがって、CPU-A（1）、CPU-B（2）のパワーオンリセット後においては、記録部-A（5）、記録部-B（6）のカウント値は0を示し、CPU-A（1）、CPU-B（2）からリセットをかけた後は1を示す。
【００２８】
そこで、ブートチェック部-A（14）、ブートチェック部-B（15）は、それぞれ図３に示すフローに従い、起動時処理を行うものとする。まず、起動時、自系の記録部（CPU-A（1）ならば記録部-A（5）、CPU-B（2）ならば記録部-B（6））に記録されたカウント値を読み取る（ステップS32）。このとき、読み取るタイミングは、リセット生成部-A（3）、リセット生成部-B（4）にリセット要求が入力され、記録部-A（5）および記録部-B（6）にカウント値が記録された後とする。そのため、リセット生成部-A（3）、リセット生成部-B（4）にリセット要求が入力されてから記録部-A（5）、記録部-B（6）にカウント値が記録されるまでの回路上の時定数遅れ時間をTd[s]とすると、ブートチェック部-A（14）、ブートチェック部-B（15）は、起動後、Td[s]以上のウェイト時間を設けたうえで（ステップS31）、カウント値を読み取ることとする。
【００２９】
このとき、自系の記録部のカウント値が0であるか否かをチェックし（ステップS33）、0であれば、リセット系回路動作の健全性確認のため、リセットテスト部（CPU-A（1）ならばリセットテスト部-A（18）、CPU-B（2）ならばリセットテスト部-B（19））から自系のリセット生成部（CPU-A（1）ならばリセット生成部-A（3）、CPU-B（2）ならばリセット生成部-B（4））に対し、リセット要求を発行して（ステップS34）、動作を停止する（ステップS35）。また、カウント値が0ではない場合、異常検出によるリセットかリセット系回路動作の健全性確認のためのリセットかを識別する。
【００３０】
ここで、突発的なノイズ等によって、パワーオンリセット後に誤ってリセットがかかることに対処するため、カウント値が3以上となった場合を異常検出によるリセットとして判断する。また、カウント値が1または2の場合は、健全性確認のためのリセットとして判断する。
【００３１】
そのため、カウント値が0ではない場合、カウント値が3以上であるかチェックする（ステップS36）。その結果、カウント値が3未満であれば、正常動作とみなし通常動作へ移行する。また、カウント値が3以上であれば、異常検出によるリセットとみなし動作停止する（ステップS37）。
【実施例２】
【００３２】
本実施例では、図５を用いて本発明に基づくフェールセーフ演算装置の第二の実施形態を示す。実施例1では、データ交換部（データ交換部-A（8）、データ交換部-B（9））をCPU-A1、CPU-B2内部にそれぞれ配置しているが、本実施形態では図５のデータ交換部（20）に示すように、CPU-A（20）、CPU-B（21）外部に共通メモリを一つ配置した構成としても良い。また、実施例1では、リセット生成部（リセット生成部-A（3）、リセット生成部-B（4））もCPU-A1、CPU-B2内部にそれぞれ配置しているが、図５のに示すように、CPU-A（20）、CPU-B（21）の外部にリセット生成部（24）を一つ配置し、データ照合部-A（27）またはデータ照合部-B（28）から要求に基づきリセット信号を生成し、図１のリセット制御部（7）を省略した構成としても良い。同様に、記録部（実施例１における記録部-A（5）、記録部-B（6））についても、図５に示すように、CPU-A（20）、CPU-B（21）の外部に記録部（23）を一つ配置し、リセット生成部（24）から出力されるリセット信号を記録する構成としても良い。以上のように、図５に示した構成とすることで、図１に示す実施例１の構成と比較して装置数を減少させることができ、フェールセーフ演算装置の小型化が可能となる。
なお、本実施例において、言及しない構成は実施例１と同様の動作及び機能を有するものとする。
【実施例３】
【００３３】
本実施例では、図６を用いて本発明に基づくフェールセーフ演算装置の第三の実施形態を示す。本実施例では、CPU内部構成を図１に示す構成と同じままとして、データ交換部間の通信を三重系以上のＣＰＵ間で行う構成として、三重系以上の構成に拡張可能な実施例である。図６はフェールセーフ演算装置を三重系にしたときの実施形態である。図６では、データ照合部、データ交換部、データ演算部、ハッシュ計算部のみを図示しているが、各ＣＰＵは、図１と同様のリセット生成部、リセットテスト部、ブートチェック部を有するものとする。このとき、データ照合については、データ交換部-A（38）にデータ演算部-C(43)の演算結果を格納し、CPU-A(35)のデータ照合部-A(44)にてデータ演算部-A(41)の演算結果とデータ演算部-C(43)の演算結果を照合する。また、データ交換部-B(39)にデータ演算部-A(41)の演算結果を格納し、CPU-B(36)のデータ照合部-B(45)にてデータ演算部-B(42)の演算結果とデータ演算部-A(41)の演算結果を照合する。同様に、データ交換部-C(40)にデータ演算部-B(42)の演算結果を格納し、CPU-C(37)のデータ照合部-C(46)にてデータ演算部-C(43)の演算結果とデータ演算部-B(42)の演算結果を照合する。
各ＣＰＵのいずれのデータ照合部にて照合不一致を検出した場合には、実施例１と同様に、図示しないリセット制御部へリセット信号を送信し、各ＣＰＵにリセットを掛ける。
本実施形態により、本発明を三重系以上の多重系ＣＰＵへ適用することが可能となる。
【符号の説明】
【００３４】
１，２，２０，２１，３５，３６，３７：  ＣＰＵ
３，４，２４：  リセット生成部
５，６，２３：  記録部
７：  リセット制御部
８，９，２２，３８，３９，４０：  データ交換部
１０，１１，２７，２８，４４，４５，４６：  データ照合部
１２，１３，２５，２６，４１，４２，４３：  データ演算部
１４，１５，２９，３０：  ブートチェック部
１６，１７，３１，３２，４７，４８，４９：  ハッシュ計算部
１８，１９，３３，３４：  リセットテスト部
【図１】
2017111523.tif 000003
【図２】
2017111523.tif 000004
【図３】
2017111523.tif 000005
【図４】
2017111523.tif 000006
【図５】
2017111523.tif 000007
【図６】
2017111523.tif 000008