(57)【要約】【課題】出力部の自己診断の時間を短縮するとともに、ＣＰＵのリソースの故障を検出可能とする。【解決手段】第１アルゴリズムによる所定の処理を、第１リソースを用いて実行し、処理結果を第１バッファに格納するステップと、第２アルゴリズムによる所定の処理を、第２リソースを用いて実行し、処理結果を第２バッファに格納するステップと、第１バッファに格納されている処理結果と第２バッファに格納されている処理結果とを比較し、両者が一致している場合には、いずれかのバッファに格納されている処理結果を外部に出力し、両者が不一致の場合には、異常検出エラーを出力するステップと、処理結果が外部に出力された場合に、外部に出力された処理結果と、いずれかのバッファに格納されている処理結果とを比較し、両者が不一致の場合には異常検出エラーを出力するステップとを有するＣＰＵ故障検出方法。【選択図】図１
2011141756.tif 000002
【特許請求の範囲】
【請求項１】
複数のリソースを備え、読み込んだソフトウェアを実行するソフトウェア実行部と、前記ソフトウェア実行部の処理結果を選択的に格納する第１バッファおよび第２バッファと、出力制御部とを備えたＣＰＵにおけるＣＰＵ故障検出方法であって、
前記ソフトウェア実行部が、第１のアルゴリズムによる所定の処理を、前記リソースのうちの第１のリソースを用いて実行し、その処理結果を前記第１バッファに格納するステップと、
前記ソフトウェア実行部が、第２のアルゴリズムによる前記所定の処理を、前記リソースのうちの第２のリソースを用いて実行し、その処理結果を前記第２バッファに格納するステップと、
前記出力制御部が、前記第１バッファに格納されている処理結果と前記第２バッファに格納されている処理結果とを比較し、両者が一致している場合には、いずれかのバッファに格納されている処理結果を外部に出力し、両者が不一致の場合には、異常検出エラーを出力するステップと、
前記処理結果が外部に出力された場合に、前記出力制御部が、外部に出力された処理結果と、いずれかのバッファに格納されている処理結果とを比較し、両者が不一致の場合には異常検出エラーを出力するステップとを有することを特徴とするＣＰＵ故障検出方法。
【請求項２】
複数のリソースを備え、読み込んだソフトウェアを実行するソフトウェア実行部と、
前記ソフトウェア実行部の処理結果を選択的に格納する第１バッファおよび第２バッファと、
前記第１バッファに格納されている処理結果と前記第２バッファに格納されている処理結果とを比較し、両者が一致している場合には、いずれかのバッファに格納されている処理結果を外部に出力し、両者が不一致の場合には、異常検出エラーを出力し、さらに、前記処理結果が外部に出力された場合に、外部に出力された処理結果と、いずれかのバッファに格納されている処理結果とを比較し、両者が不一致の場合には異常検出エラーを出力する出力制御部と、
前記ソフトウェア実行部に、第１のアルゴリズムによる所定の処理を、前記リソースのうちの第１のリソースを用いて実行させ、その処理結果を前記第１バッファに格納させる第１のソフトウェアと、前記ソフトウェア実行部に、第２のアルゴリズムによる前記所定の処理を、前記リソースのうちの第２のリソースを用いて実行させ、その処理結果を前記第２バッファに格納させる第２のソフトウェアとを格納したメモリと、を備えたことを特徴とするＣＰＵ故障検出装置。
【請求項３】
前記複数のリソースには、複数本のレジスタが含まれることを特徴とする請求項２に記載のＣＰＵ故障検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ故障検出技術に関し、特に、ＣＰＵ自体を２重化することなくＣＰＵの故障検出を行なうＣＰＵ故障検出方法およびＣＰＵ故障検出装置に関する。
【背景技術】
【０００２】
ディジタル機器の誤出力防止方法に関して、特許文献１には、ソフトウェアと出力部の２重化を図ることが記載されている。
【０００３】
図３は、特許文献１に記載された発明を概念的に説明するためのブロック図である。特許文献１によれば、本図に示すように、ＣＰＵ１に２つのプログラム（ソフトウェア）Ｐ１、Ｐ２を持たせるとともに、ディジタル出力部（ＤＯ）２Ａ、２Ｂを２重化している。ここで、ソフトウェアＰ１、Ｐ２としてはアルゴリズムをまったく同じものにしてもよいが、互いに異なるアルゴリズムのものでもよい。また、ソフトウェアＰ１、Ｐ２の実行タイミングとしては、サージノイズが乗る場合等を考慮して互いに時間をずらして実行するようにする。
【０００４】
図４は、特許文献１に記載された実施例を示すフローチャートである。これは、２系列のソフトウェア処理を示しており、同時並列処理の形式で図示しているが時分割的に処理するものであり、ここでは例えば左側の処理から開始するものとする。
【０００５】
すなわち、制御データ１１を受信し、これを受信データ変換テーブル１２Ａにより所定のアルゴリズムに適合する形式に変換したのちソフトウェア処理１を実行し、出力データ１３を得る。１４では出力データのチェックを実行し、ＯＫ（良好）のときだけＤＯ−１へ出力し（ＣＨＴ：チェックアンドトランスファー）、リレー１５Ａを駆動してその接点１５１を動作させる。ここまでの処理が終了した後、右側の処理を上記と同様に実行してＯＫならばＤＯ−２へ出力し、リレー１５Ｂを駆動してその接点１５２を動作させる。
【０００６】
ただし、ソフトウェア処理１とソフトウェア処理２とはそのアルゴリズムは互いに異なるものとし、したがってデータを変換するために用いるテーブルも違うものを用いることとする（１２Ａ，１２Ｂ）。
【０００７】
そして、両データが揃った時点で両者の論理積がとられ、両者とも一致したときデータは正しいものとして利用装置側へ与えられる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平５−２７９９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１に記載された技術は、ソフトウェアによるＲＡＳ（Reliability Availability Serviceability）機能を持たせた上で、ソフトウェア処理とその出力処理とを２重化するようにしている。これにより、ＣＰＵすべてを２重化するのに比べ、ハードウェアコストを削減するとともに、実装面積を小さくしている。
【００１０】
しかしながら、２重化したソフトウェアのそれぞれで出力部の自己診断も実行するため、自己診断時間が長いという問題がある。また、２重化したソフトウェアのアルゴリズムを変えたとしても、ソフトウェア実行のために使用するＣＰＵ内のレジスタ等のリソースの故障が検出できないという問題がある。
【００１１】
そこで、本発明は、ＣＰＵ自体を２重化することなくＣＰＵの故障検出を行なう手法において、出力部の自己診断の時間を短縮するとともに、ＣＰＵのリソースの故障を検出可能とすることを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、本発明のＣＰＵ故障検出方法は、複数のリソースを備え、読み込んだソフトウェアを実行するソフトウェア実行部と、前記ソフトウェア実行部の処理結果を選択的に格納する第１バッファおよび第２バッファと、出力制御部とを備えたＣＰＵにおけるＣＰＵ故障検出方法であって、前記ソフトウェア実行部が、第１のアルゴリズムによる所定の処理を、前記リソースのうちの第１のリソースを用いて実行し、その処理結果を前記第１バッファに格納するステップと、前記ソフトウェア実行部が、第２のアルゴリズムによる前記所定の処理を、前記リソースのうちの第２のリソースを用いて実行し、その処理結果を前記第２バッファに格納するステップと、前記出力制御部が、前記第１バッファに格納されている処理結果と前記第２バッファに格納されている処理結果とを比較し、両者が一致している場合には、いずれかのバッファに格納されている処理結果を外部に出力し、両者が不一致の場合には、異常検出エラーを出力するステップと、前記処理結果が外部に出力された場合に、前記出力制御部が、外部に出力された処理結果と、いずれかのバッファに格納されている処理結果とを比較し、両者が不一致の場合には異常検出エラーを出力するステップとを有する。
【００１３】
本発明では、同じ処理を異なるアルゴリズムと異なるリソースを用いて行ない、両者の処理結果を比較するようにしているため、ＣＰＵ内の故障検出能力を向上させることができる。また、実際に出力された処理結果と、バッファに格納している処理結果とを比較するようにしているため、出力部の診断を行なうための出力部の２重化が不要となり、自己診断が１回で済むことになる。これにより、出力部の自己診断の時間を短縮することができる。
【００１４】
上記課題を解決するため、本発明のＣＰＵ故障検出装置は、複数のリソースを備え、読み込んだソフトウェアを実行するソフトウェア実行部と、前記ソフトウェア実行部の処理結果を選択的に格納する第１バッファおよび第２バッファと、前記第１バッファに格納されている処理結果と前記第２バッファに格納されている処理結果とを比較し、両者が一致している場合には、いずれかのバッファに格納されている処理結果を外部に出力し、両者が不一致の場合には、異常検出エラーを出力し、さらに、前記処理結果が外部に出力された場合に、外部に出力された処理結果と、いずれかのバッファに格納されている処理結果とを比較し、両者が不一致の場合には異常検出エラーを出力する出力制御部と、前記ソフトウェア実行部に、第１のアルゴリズムによる所定の処理を、前記リソースのうちの第１のリソースを用いて実行させ、その処理結果を前記第１バッファに格納させる第１のソフトウェアと、前記ソフトウェア実行部に、第２のアルゴリズムによる前記所定の処理を、前記リソースのうちの第２のリソースを用いて実行させ、その処理結果を前記第２バッファに格納させる第２のソフトウェアとを格納したメモリと、を備える。
【００１５】
ここで、複数のリソースは、例えば、複数本のレジスタを含むことができる。
【発明の効果】
【００１６】
本発明によれば、ＣＰＵ自体を２重化することなくＣＰＵの故障検出を行なう手法において、出力部の自己診断の時間が短縮されるとともに、ＣＰＵのリソースの故障が検出可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態の構成を示すブロック図である。
【図２】本発明の実施形態の処理手順を示すフローチャートである。
【図３】特許文献１に記載された発明を概念的に説明するためのブロック図である。
【図４】特許文献１に記載された実施例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
本発明の実施の形態について図面を参照して説明する。図１は、本発明の実施形態の構成を示すブロック図である。
【００１９】
本図に示すように、ＣＰＵ１００は、ソフトウェア実行部１１０、バッファＡ１２０Ａ、バッファＢ１２０Ｂ、出力制御部１３０を備えおり、メモリ２００に格納されたソフトウェアＡ２１０ＡとソフトウェアＢ２１０Ｂとを実行し、処理結果を出力する構成となっている。
【００２０】
なお、ＣＰＵ１００は、従来と同様のＲＡＳ機能を備えているものとする。また、ＣＰＵ１００と、ソフトウェアＡ２１０ＡとソフトウェアＢ２１０Ｂとが格納されたメモリ２００とでＣＰＵ故障検出装置として機能することができる。
【００２１】
ソフトウェア実行部１１０は、実行形式に変換されたソフトウェアＡ２１０ＡおよびソフトウェアＢ２１０Ｂを読み込んで、それぞれのソフトウェアにしたがった実行処理を行なう。ソフトウェア実行部１１０は、ソフトウェアの実行処理を行なうために複数本のレジスタ等のリソース群１１２を有している。
【００２２】
ソフトウェアの実行処理の際に、どのレジスタを用いるか、使用するメモリアドレス範囲をどのように割り当てるかは、ソフトウェア実行部１１０で実行するソフトウェアの記述に委ねられる。ソフトウェア実行に利用されるメモリは、ＣＰＵ１００の外部に存在する場合と、ソフトウェア実行部１１０のリソースの１つとしてＣＰＵ１００に内蔵される場合とがある。
【００２３】
ソフトウェア実行部１１０の出力結果は、第１バッファとして機能するバッファＡ１２０Ａ、第２バッファとして機能するバッファＢ１２０Ｂに選択的に一時的に格納される。バッファＡ１２０Ａ、バッファＢ１２０Ｂのいずれのバッファに格納されるかは、ソフトウェア実行部１１０で実行するソフトウェアの記述に委ねられる。
【００２４】
出力制御部１３０は、ソフトウェア実行部１１０の処理結果を外部に出力する。この際に、バッファＡ１２０Ａに格納された処理結果と、バッファＢ１２０Ｂに格納された処理結果とが一致しない場合には、外部への出力を行なわず、異常検出エラーを出力する。また、実際に出力された処理結果と、バッファＡ１２０Ａに格納された処理結果とが一致しない場合には、異常検出エラーを出力する。
【００２５】
これらの処理を行なうため、出力制御部１３０は、バッファ比較部１３１、出力部１３２、出力モニタ部１３３、出力比較部１３４、異常通知部１３５を備えている。
【００２６】
バッファ比較部１３１は、バッファＡ１２０ＡとバッファＢ１２０Ｂに格納されている処理結果とを比較し、両者が一致しているかどうかを判断する。両者が一致していると判断した場合には、出力部１３２に通知し、両者が一致していないと判断した場合には、異常通知部１３５に通知する。
【００２７】
出力部１３２は、バッファ比較部１３１がバッファＡ１２０ＡとバッファＢ１２０Ｂに格納されている処理結果が一致していると判断した場合に、バッファＡ１２０Ａに格納されている出力結果を外部に出力する。
【００２８】
出力モニタ部１３３は、出力部１３２から実際に出力された処理結果を取得する。
【００２９】
出力比較部１３４は、出力モニタ部１３３が取得した実際に出力された処理結果と、バッファＡ１２０Ａに格納されている処理結果とを比較し、両者が一致しているかどうかを判断する。両者が一致していないと判断した場合には、異常通知部１３５に通知する。
【００３０】
異常通知部１３５は、バッファ比較部１３１が、バッファＡ１２０ＡとバッファＢ１２０Ｂに格納されている処理結果が一致していないと判断した場合、あるいは、出力比較部１３４が、実際に出力された処理結果と、バッファＡ１２０Ａに格納されている処理結果とが一致していないと判断した場合に、異常検出エラーを出力する。
【００３１】
なお、以上の構成においてバッファＡ１２０ＡとバッファＢ１２０Ｂの役割を逆にしてもよい。
【００３２】
ソフトウェアＡ２１０Ａと、ソフトウェアＢ２１０Ｂとは、同じ処理を行なうために開発されたソフトウェアであり、ソフトウェア実行部１１０が解釈可能な書式で作成されている。ソフトウェアＡ２１０Ａと、ソフトウェアＢ２１０Ｂとは、テキスト形式であっても、実行形式であってもよい。テキスト形式の場合には、ソフトウェア実行部１１０に読み込まれる際に実行形式に変換される。
【００３３】
ソフトウェアＡ２１０ＡとソフトウェアＢ２１０Ｂとは同じ処理を行なうが、ソフトウェアＡ２１０Ａは、アルゴリズムＡにより処理を行ない、ソフトウェアＢ２１０Ｂは、アルゴリズムＡと異なるアルゴリズムＢにより処理を行なうように作成されている。
【００３４】
ここで、ソフトウェアＡ２１０Ａは、第１のソフトウェアとして機能し、アルゴリズムＡは、第１のアルゴリズムとして機能する。また、ソフトウェアＢ２１０Ｂは、第２のソフトウェアとして機能し、アルゴリズムＢは、第２のアルゴリズムとして機能する。
【００３５】
また、ソフトウェアＡ２１０ＡとソフトウェアＢ２１０Ｂとは、異なるリソースを用いて処理を行なうように作成されている。すなわち、ソフトウェアＡ２１０ＡとソフトウェアＢ２１０Ｂとで、使用するレジスタの割り当てを異ならせている。
【００３６】
ここで、ソフトウェアＡ２１０Ａが用いるリソースは第１のリソースとして機能し、ソフトウェアＢ２１０Ｂが用いるリソースは第２のリソースとして機能する。
【００３７】
次に、本実施形態の処理手順について図２のフローチャートを参照して説明する。処理を開始すると、先ず、ＣＰＵ１００のソフトウェア実行部１１０が、ソフトウェアＡ２１０Ａを実行する（Ｓ１０１）。すなわち、アルゴリズムＡによる処理を、リソースＡを用いて行なう。
【００３８】
そして、ソフトウェアＡ２１０Ａによる処理結果をバッファＡ１２０Ａに格納する（Ｓ１０２）。
【００３９】
次いで、ＣＰＵ１００のソフトウェア実行部１１０は、ソフトウェアＢ２１０Ｂを実行する（Ｓ１０３）。すなわち、アルゴリズムＢによる処理を、リソースＢを用いて行なう。
【００４０】
そして、ソフトウェアＢ２１０Ｂによる処理結果をバッファＢ１２０Ｂに格納する（Ｓ１０４）。
【００４１】
ソフトウェアＡ２１０Ａ、ソフトウェアＢ２１０Ｂによる処理が終了すると、バッファ比較部１３１が、バッファＡ１２０ＡとバッファＢ１２０Ｂに格納されている処理結果とを比較し、両者が一致しているかどうかを判断する（Ｓ１０５）。
【００４２】
その結果、両者が不一致の場合には（Ｓ１０５：Ｎｏ）、ＣＰＵ１００内のレジスタ等のリソースが故障していると考えられるため、異常通知部１３５が、異常検出エラーを出力し、処理を終了する（Ｓ１０９）。この場合、処理結果は外部に出力されない。
【００４３】
このように、本実施形態では、同じ処理を異なるアルゴリズムと異なるリソースを用いて行ない、両者の処理結果を比較するようにしているため、ＣＰＵ１００内の故障検出能力を向上させることができる。
【００４４】
一方、両者が一致している場合には（Ｓ１０５：Ｙｅｓ）、出力部１３２が、バッファＡ１２０Ａに格納されている処理結果を外部に出力する（Ｓ１０６）。もちろん、バッファＢ１２０Ｂに格納されている処理結果を出力してもよい。
【００４５】
そして、出力モニタ部１３３が、出力部１３２から実際に出力された処理結果を取得する（Ｓ１０７）。次いで、出力比較部１３４が、実際に出力された処理結果とバッファＡ１２０Ａに格納された処理結果とを比較し、両者が一致しているかどうかを判断する（Ｓ１０８）。もちろん、バッファＢ１２０Ｂに格納されている処理結果と比較してもよい。
【００４６】
その結果、両者が不一致の場合には（Ｓ１０８：Ｎｏ）、ＣＰＵ１００内の出力部１３２が故障していると考えられるため、異常通知部１３５が、異常検出エラーを出力し、処理を終了する（Ｓ１０９）。
【００４７】
このように、本実施形態では、実際に出力された処理結果と、バッファに格納している処理結果とを比較するようにしているため、出力部の診断を行なうための出力部の２重化が不要となり、自己診断が１回で済むことになる。これにより、出力部の自己診断の時間を短縮することができる。
【００４８】
一方、両者が一致している場合には（Ｓ１０８：Ｙｅｓ）、ＣＰＵ１００に異常が検出されなかったものとして、正常終了する。
【００４９】
以上説明したように、本実施形態によれば、ＣＰＵ自体を２重化することなくＣＰＵの故障検出を行なう手法において、出力部の自己診断の時間を短縮するとともに、レジスタ等のＣＰＵのリソースの故障を検出可能とすることができる。
【００５０】
なお、ＣＰＵがリソースとしてレジスタに加えメモリを内蔵する場合には、ソフトウェアＡ２１０ＡとソフトウェアＢ２１０Ｂとで異なるメモリアドレス範囲を使用するようにすることで、内蔵メモリの故障を検出することができるようになる。その他のリソースを有している場合も同様に故障を検出することができるようになる。
【符号の説明】
【００５１】
１１０…ソフトウェア実行部、１１２…リソース群、１２０Ａ…バッファＡ、１２０Ｂ…バッファＢ、１３０…出力制御部、１３１…バッファ比較部、１３２…出力部、１３３…出力モニタ部、１３４…出力比較部、１３５…異常通知部、２００…メモリ、２１０Ａ…ソフトウェアＡ、２１０Ｂ…ソフトウェアＢ
【図１】
2011141756.tif 000003
【図２】
2011141756.tif 000004
【図３】
2011141756.tif 000005
【図４】
2011141756.tif 000006