(57)【要約】【課題】ＣＰＵの処理負担を軽減し、メモリの故障検出に要するＣＰＵ処理時間を短縮するとともに、メモリのカップリング故障検出が効率よく行えるようにした制御装置、及びそのメモリ故障検出方法、その自己診断方法を提供することを目的とする。【解決手段】ＣＰＵ２０と、データを記憶するメモリ４０と、データ領域の故障を診断するメモリ故障検出部３０と、を備え、ＣＰＵは、メモリ故障検出部に対して、故障検出用アドレス、データ領域、データ書き換え領域を指定する「メモリ故障検出」命令を送信し、メモリ故障検出部は、データ領域のアドレスに対して、書き込み時の第1の符号化データと、メモリのから読み出して符号化した第２の符号化データと、を比較し、メモリの故障を検出し、また、データ書き換え領域を変えて、全データ領域のメモリ故障を検出するようにしたことを特徴とする制御装置のメモリ故障検出方法。【選択図】  図１
2013175118.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムを備え、自身の外部バスと接続される入出力部を介してプラントを制御するＣＰＵと、
当該制御プログラム、及び前記制御プログラムで使用するデータを記憶するメモリと、
一方を前記ＣＰＵの外部バスと、他方を前記メモリとを接続して、前記ＣＰＵが前記制御プログラム起動時、または、前記制御プログラム実行中のアイドルタイムにおいて、予め設定される前記メモリの診断対象となるデータ領域を指定する「メモリ故障検出」命令に基づいて、当該データ領域の故障を診断するメモリ故障検出部と、
を備え、
前記メモリ故障検出部は、アドレス変換部と、符号化計算部と、命令受付部と、検出用データ書き換え部と、を備え、
前記命令受付部は、前記ＣＰＵからの「メモリ故障検出」命令を受信して、前記符号化計算部、前記アドレス変換部、及び前記検出用データ書き換え部に送り、
前記アドレス変換部は、前記ＣＰＵからの「メモリ故障検出」命令で前記メモリにデータを転送する場合には、前記制御プログラムの論理アドレスを前記メモリの物理アドレスに、また、前記メモリから前記ＣＰＵにデータを転送する場合には前記メモリの物理アドレスを前記論理アドレスに変換し、
前記符号化計算部は、前記「メモリ故障検出」命令に基づいて、前記データ領域にデータを書き込む場合、予め書き込まれる当該データ領域のデータに対して、予め設定される符号化ルールに基づく符号化演算を行い第1の符号化データを作成して、前記データ領域と対応付けられた符号領域に書き込み、前記ＣＰＵからの前記「メモリ故障検出」命令で前記メモリの故障診断を行う場合、当該データ領域から読み出したデータに対して前記符号化演算を行い第２の符号化データとし、前記第１の符号化データと前記第２の符号化データとを比較して、故障の有無を検出し、
前記検出用データ書き換え部は、前記ＣＰＵからの「メモリ故障検出」命令を、前記命令受付部を介して通知され、当該「メモリ故障検出」命令で予め設定される前記データ領域内のデータ書き換え領域のデータを予め設定される特定の変化ルールで変換処理した参照データに書き換え、更に、当該書き換え後の書き換えた筈のデータ書き換え領域のデータを読み出し、当該参照データと読み出し時のデータを比較して故障を検出し、
前記命令受付部は、前記ＣＰＵからの「メモリ故障検出」命令を受信して、前記符号化計算部、前記アドレス変換部、及び前記検出用データ書き換え部に送り、
前記ＣＰＵは、前記メモリ故障検出部に対して、前記故障検出用アドレス、前記データ領域、前記データ書き換え領域を指定する前記「メモリ故障検出」命令を送信し、
前記メモリ故障検出部は、前記「メモリ故障検出」命令に基づく前記データ領域のアドレスに対して、書き込み時の第1の符号化データと、前記メモリのから読み出して符号化した第２の符号化データとを比較し、その相違の有無から前記データ書き換え領域のメモリの故障を判定し、
前記メモリのデータ書き換え領域を設定し、当該データ書き換え領域の書き込みデータと読み出しデータの符号化演算結果とを比較して、前記データ領域のメモリ故障を検出するようにしたことを特徴とする制御装置。
【請求項２】
前記符号化計算部は、前記命令受付部からの指令で、前記検出用データ書き換え部が前記命令受付部からの指令で故障検出処理した前記データ書き換え領域以外のデータ領域のデータを読み出し、符号化演算処理を実行して求めた符号化データと、自身に保存する対応する符号化データとを比較照合して、故障検出するようにした請求項１に記載の制御装置。
【請求項３】
前記検出用データ書き換え部は、前記特定の変化スールを複数備え、全ての前記データ領域の故障検出が完了すると、予め設定される当該特定の変化スールに基づいて、前記書き換え領域のデータを書き換えるようにしたことを特徴とする請求項１に記載の制御装置。
【請求項４】
前記ＣＰＵは、前記「メモリ故障検出」命令において、前記故障検出用アドレスの先頭アドレスのみを送信し、
前記命令受付部は、前記データ書き換え領域を指定するアドレスを自動的に更新するようにした請求項１に記載の制御装置。
【請求項５】
前記検出用データ書き換え部は、前記「メモリ故障検出」命令に基づく処理が終了し、前記制御プログラムの処理に移行後も、書き換えた前記データ書き換え領域のデータを逆変換処理して再書き込みする書き戻しをせず、
前記アドレス変換部は、当該書き換えた前記故障検出用アドレスを記憶し、
前記ＣＰＵから当該故障検出用アドレスに書き込み命令があるまでは、前記故障検出用アドレスから読み出したデータに対して、前記検出用データ書き換え部による前記逆変換処理を行って前記ＣＰＵに送信するようにした請求項１に記載の制御装置。
【請求項６】
前記符号化計算部の符号化ルールは、ビットエラー検出とビットエラー訂正が可能な符号を用いて、単一ビットエラーの場合には前記制御プログラムの継続処理を可能とした請求項１に記載の制御装置。
【請求項７】
前記検出用データ書き換え部は、前記故障検出用アドレスが指定するデータ領域に対して、その一部領域を前記データ書き換え領域とするようにした請求項１に記載の制御装置。
【請求項８】
前記メモリの前記データ領域、前記データ書き換え領域は、複数種類を時分割で更新することにより、前記データ領域及び前記データ書き換え領域に基づく領域分割による境界に跨るメモリ故障を検出するようにした請求項１に記載の制御装置。
【請求項９】
前記制御装置の自己診断機能であって、前記ＣＰＵは、前記メモリ故障検出部が実行する符号化計算機能を備え、
予め設定される「自己診断」命令を前記メモリ故障検出部に送信し、
前記「自己診断」命令に基づく診断用データを前記命令受付部に送信し
前記メモリ故障検出部では、前記診断用データに対して、予め設定される符号化演算を前記符号化計算部で実行して、その符号化データを前記ＣＰＵに返信し、
前記ＣＰＵでは、返信された符号化データと自身で演算した符号化データとを照合して、前記メモリ故障検出部または前記ＣＰＵの故障を自己診断するようにした請求項１に記載の制御装置。
【請求項１０】
制御プログラムを備え、自身の外部バスと接続される入出力部を介してプラントを制御するＣＰＵと、
当該制御プログラム、及び前記制御プログラムで使用するデータを記憶するメモリと、
一方を前記ＣＰＵの外部バスと、他方を前記メモリとを接続して、前記ＣＰＵが前記制御プログラム起動時、または前期制御プログラム実行中のアイドルタイムにおいて、予め設定される前記メモリの診断対象となるデータ領域を指定する「メモリ故障検出」命令に基づいて、当該データ領域の故障を診断するメモリ故障検出部と、
を備える制御装置のメモリの故障検出方法であって、
前記ＣＰＵは、前記メモリ故障検出部に対して、前記故障検出用アドレス、前記データ領域、前記データ書き換え領域を指定する前記「メモリ故障検出」命令を送信し、
前記メモリ故障検出部は、前記「メモリ故障検出」命令に基づく前記データ領域のアドレスに対して、書き込み時の第1の符号化データと、前記メモリのから読み出して符号化した第２の符号化データとを比較し、その相違の有無から前記データ書き換え領域のメモリの故障を判定し、
前記メモリのデータ書き換え領域を設定し、この領域の書き込みデータと読み出しデータの符号化演算結果を比較して、前記データ領域のメモリ故障を検出するようにしたことを特徴とする制御装置のメモリ故障検出方法。
【請求項１１】
更に、前記「メモリ故障検出」で処理した前記データ書き換え領域以外のデータ領域のデータを読み出して求めた符号化データと、自身に保存する対応する前記「メモリ故障検出」処理前の符号化データとを比較照合して、故障検出するようにしたことを特徴とする請求項１０に記載の制御装置のメモリ故障検出方法。
【請求項１２】
制御プログラムを備え、自身の外部バスと接続される入出力部を介してプラントを制御するＣＰＵと、
当該制御プログラム、及び前記制御プログラムで使用するデータを記憶するメモリと、
一方を前記ＣＰＵの外部バスと、他方を前記メモリとを接続して、前記ＣＰＵが前記制御プログラムの起動時、または、前期制御プログラム実行中のアイドルタイムにおいて、予め設定される前記メモリの診断対象となるデータ領域を指定する「メモリ故障検出」命令に基づいて、当該データ領域の故障を診断するメモリ故障検出部と、
を備える制御装置の制御装置の自己診断方法であって、
前記ＣＰＵは、前記メモリ故障検出部が実行する符号化計算機能を備え、
予め設定される「自己診断」命令とその診断用データを前記メモリ故障検出部に送信し、
前記メモリ故障検出部では、前記診断用データに対して、予め設定される符号化演算を実行して、その符号化データを前記ＣＰＵに返信し、
前記ＣＰＵでは、返信された符号化データと自身で演算した符号化データとを照合して、
前記メモリ故障検出部または前記ＣＰＵの故障を自己診断するようにしたことを特徴とする制御装置の自己診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、制御装置、及びそのメモリ故障検出方法、その自己診断方法に関する。
【背景技術】
【０００２】
近年国際標準として、装置の製造者・供給者に対して、機能安全規格が国際電気標準化会議の規格IEC61508「電気・電子・プログラマブル電子安全関連系の機能安全」が、更に、特定の産業用機能安全システムにおいては、特定の用途に合わせた規格が定められている。
【０００３】
例えば、安全計装システムについては、システムの設計者・インテグレータ・ユーザに対してプロセス用アプリケーション規格IEC61511が定められている。
【０００４】
これらの規格では、システムの設計、保守、廃棄に至るライフサイクルにおける安全を評価し、リスク軽減の要求レベルである安全度水準（SIL; Safety Integrity Level）を定量的な評価尺度として定めている。
【０００５】
特に、高い安全度水準を求められる安全計装システムにおいては、記憶装置に対する故障の検出機能が必要となる。
【０００６】
安全計装システムの場合、長時間連続稼働に対応するため、システムのメモリ障害や、放射線粒子によるメモリのソフトエラーに対応するため、システム起動時だけでなくシステム稼働中においても記憶装置に対する診断が要求され、故障を検出した際には、システムの出力を安全状態に遷移させる必要がある。
【０００７】
メモリ故障検出の方法としては、一般的には診断対象のメモリに対してテストデータパターンを書き込み、同一アドレスからデータを読み出し、書き込みと読み出しのデータパターンの一致を確認する方法がある。
【０００８】
この際、メモリに格納されている値の書き換えを伴うため、ＣＰＵからアクセス中のメモリ領域に対しては故障検出を行う事が出来ない。このような場合には、メモリの退避領域を用いてシステム稼働中でもメモリ故障検出を行える手法がある（例えば特許文献１）。
【０００９】
また、高い安全性を証明するためには、メモリアドレス線の障害によるカップリング故障などに対応した故障検出率の高い検出手法を用いる必要があるが、検出率の高い手法は複雑なメモリアクセスを必要とするため、システム制御処理を担当するＣＰＵがメモリ故障検出を行うとＣＰＵ負荷が高くなり、システム制御処理をするための処理時間に制約を与える恐れがある。
【００１０】
そのため、メモリ故障検出に要する処理時間を短縮しシステム制御処理の合間に実行可能とする手法として、メモリ故障検出を階層的に行い、メモリアクセス回数を減らす手法がある（例えば特許文献２）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第３５７０３８８号公報
【特許文献２】特許第４３１２８１８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上述した特許文献１においては、システム稼働中でもメモリ故障検出を行えるようにするため、ＣＰＵの外部に退避用メモリと故障検出専用のプロセッサを必要とする。
【００１３】
この手法では故障検出専用のハードウエアを必要とするため、その分ハードウエアコストの増大に繋がることに加え、追加ハードウエア自体の故障による信頼性の低下が起こる。
【００１４】
上述した特許文献２においては、故障検出処理にシステム制御処理用のＣＰＵを用いているため、診断速度が向上したとしても、メモリ容量の増加とともに診断時間が長くなるという問題がある。
【００１５】
本発明は上述した問題点を解決するためになされたものであり、ＣＰＵとそのメモリを備える制御装置のメモリ故障検出において、ＣＰＵの処理負担を軽減し、メモリの故障検出に要するＣＰＵ処理時間を短縮するとともに、メモリのカップリング故障検出が効率よく行えるようにした制御装置、及びそのメモリ故障検出方法、その自己診断方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するために、本実施形態の制御装置は、制御プログラムを備え、自身の外部バスと接続される入出力部を介してプラントを制御するＣＰＵと、当該制御プログラム、及び前記制御プログラムの実行中に使用するデータを記憶するメモリと、一方を前記ＣＰＵの外部バスと、他方を前記メモリとを接続して、前記ＣＰＵが前記制御プログラムの実行中のアイドルタイムにおいて、予め設定される前記メモリの診断対象となるデータ領域を指定する「メモリ故障検出」命令に基づいて、当該データ領域の故障を診断するメモリ故障検出部と、を備え、前記メモリ故障検出部は、アドレス変換部と、符号化計算部と、命令受付部と、検出用データ書き換え部と、を備え、前記アドレス変換部は、前記ＣＰＵから前記メモリにデータを転送する場合には、前記制御プログラムの論理アドレスを前記メモリの物理アドレスに、また、前記メモリから前記ＣＰＵにデータを転送する場合には前記メモリの物理アドレスを前記論理アドレスに変換し、前記符号化計算部は、前記「メモリ故障検出」命令に基づいて、前記データ領域にデータを書き込む場合、予め書き込まれる当該データ領域のデータに対して、予め設定される符号化ルールに基づく符号化演算を行い第１の符号化データを作成して、前記データ領域と対応付けられた符号領域に書き込み、前記ＣＰＵからの前記「メモリ故障検出」命令で前記メモリの故障診断を行う場合、当該データ領域から読み出したデータに対して前記符号化演算を行い第２の符号化データとし、前記第１の符号化データと前記第２の符号化データとを比較して、故障の有無を検出し、前記検出用データ書き換え部は、前記ＣＰＵからの「メモリ故障検出」命令を、前記命令受付部を介して通知され、当該「メモリ故障検出」命令で予め設定される前記データ領域内のデータ書き換え領域のデータを予め設定される書き換え変換パターンで書き換え、前記命令受付部は、前記ＣＰＵからの「メモリ故障検出」命令を受信して、前記符号化計算部、前記アドレス変換部、及び前記検出用データ書き換え部に送り、前記ＣＰＵは、前記メモリ故障検出部に対して、前記故障検出用アドレス、前記データ領域、前記データ書き換え領域を指定する前記「メモリ故障検出」命令を送信し、前記メモリ故障検出部は、前記「メモリ故障検出」命令に基づく前記データ領域のアドレスに対して、書き込み時の第1の符号化データと、前記メモリのから読み出して符号化した第２の符号化データとを比較し、その相違の有無から前記データ書き換え領域のメモリの故障を判定し、前記メモリのデータ書き換え領域を設定し、当該データ書き換え領域の書き込みデータと読み出しデータの符号化演算結果とを比較して、前記データ領域のメモリ故障を検出するようにしたことを特徴とする。
【００１７】
上記目的を達成するために、本実施形態の制御装置のメモリ故障検出方法は、制御プログラムを備え、自身の外部バスと接続される入出力部を介してプラントを制御するＣＰＵと、当該制御プログラム、及び前記制御プログラムの実行中に使用するデータを記憶するメモリと、一方を前記ＣＰＵの外部バスと、他方を前記メモリとを接続して、前記ＣＰＵが前記制御プログラムの実行中のアイドルタイムにおいて、予め設定される前記メモリの診断対象となるデータ領域を指定する「メモリ故障検出」命令に基づいて、当該データ領域の故障を診断するメモリ故障検出部と、を備える制御装置のメモリの故障検出方法であって、前記ＣＰＵは、前記メモリ故障検出部に対して、前記故障検出用アドレス、前記データ領域、前記データ書き換え領域を指定する前記「メモリ故障検出」命令を送信し、前記メモリ故障検出部は、前記「メモリ故障検出」命令に基づく前記データ領域のアドレスに対して、書き込み時の第1の符号化データと、前記メモリのから読み出して符号化した第２の符号化データとを比較し、その相違の有無から前記データ書き換え領域のメモリの故障を判定し、前記メモリのデータ書き換え領域を設定し、この領域の書き込みデータと読み出しデータの符号化演算結果を比較して、前記データ領域のメモリ故障を検出するようにしたことを特徴とする。
【００１８】
上記目的を達成するために、本実施形態の制御装置の自己診断方法は、制御プログラムを備え、自身の外部バスと接続される入出力部を介してプラントを制御するＣＰＵと、当該制御プログラム、及び前記制御プログラムの実行中に使用するデータを記憶するメモリと、一方を前記ＣＰＵの外部バスと、他方を前記メモリとを接続して、前記ＣＰＵが前記制御プログラムの実行中のアイドルタイムにおいて、予め設定される前記メモリの診断対象となるデータ領域を指定する「メモリ故障検出」命令に基づいて、当該データ領域の故障を診断するメモリ故障検出部と、を備える制御装置の制御装置の自己診断方法であって、前記ＣＰＵは、前記メモリ故障検出部が実行する符号化計算機能を備え、予め設定される「自己診断」命令とその診断用データを前記メモリ故障検出部に送信し、前記メモリ故障検出部では、前記診断用データに対して、予め設定される符号化演算を実行して、その符号化データを前記ＣＰＵに返信し、前記ＣＰＵでは、返信された符号化データと自身で演算した符号化データとを照合して、前記メモリ故障検出部または前記ＣＰＵの故障を自己診断するようにしたことを特徴とする。
【図面の簡単な説明】
【００１９】
【図１】第１の実施形態の制御装置の構成図。
【図２】第１の実施形態のメモリの故障検出用アドレス、データ領域、データ書き換え領域、及び符号領域の設定例を説明する図。
【図３】第１の実施形態の他の符号領域の設定例を説明する図。
【図４】第２の実施形態の他のデータ書き換え領域の設定例を説明する図。
【図５】第２の実施形態のデータ領域の走査方法の説明図。
【図６】第３の実施形態のデータ領域の更新動作を説明する図。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態について図面を参照して説明する。
【００２１】
（第１の実施形態）
図１乃至図３を参照して説明する。第１の実施形態の制御装置の構成を図１に示す。図１において、制御装置１０は、制御プログラムを備え、自身の外部バス５０と接続される入出力部を介してプラントを制御するＣＰＵ２０と、制御プログラム、及び制御プログラムの実行中に使用するデータを記憶するメモリ４０と、一方をＣＰＵの外部バス５０と、他方をメモリ４０とを接続して、ＣＰＵ２０が制御プログラムの最初の起動時、または制御プログラム実行中のアイドルタイムにおいて、予め設定されるメモリ４０の故障検出対象となる詳細を後述するメモリ４０のデータ領域を指定する「メモリ故障検出」命令に基づいて、データ領域の故障を診断するメモリ故障検出部３０と、を備える。
【００２２】
即ち、ＣＰＵ２０は、メモリ故障検出部３０を介して、メモリ４０に間接的にアクセスする構成としている。
【００２３】
次に、各部の詳細構成を説明する前に、先ず、メモリ４０のデータ領域と、これを指定する「メモリ故障検出」命令について、説明する。
【００２４】
制御プログラムが実行される場合のデータが記憶されているメモリ４０の検査対象領域は、「メモリ故障検出」命令で定義される。メモリ４０の全検査対象領域は、実行中データ領域、及び検査対象データ領域の少なくとも２つ以上の領域に、予めＣＰＵ４０で識別されているものとする。例えば、図１に示すようにこの全検査対象領域は、Ａ〜Ｅの５分割され、その内の何れかが検査対象データ領域として指定され、その他は実行中データ領域とされる。
【００２５】
夫々の記憶エリアの検査は、「メモリ故障検出」命令に付随した故障検出用アドレスで一意に指定される。図２は、メモリ４０の検査対象データ領域Ｄが「メモリ故障検出」命令が実行された場合の記憶状態を示す。
【００２６】
この場合、「メモリ故障検出」命令は、特定のデータ領域のアドレスを指定する故障検出用アドレスｊｈ、その故障検出用アドレスｊｈに対応する複数のデータ領域４１、夫々のデータ領域に対して故障を検出するためのデータ書き換え領域ｎｈ４３が指定される。
【００２７】
また、夫々のデータ領域４１に対して生成される詳細を後述する符号化データを記憶する符号領域４２が、メモリデータアクセス幅の末尾に備えられる。または、図３に示すように、夫々のデータ領域４１の故障検出用アドレスに対して固定のオフセット値Ｋを加算した符号用アドレスＫ+・・・ｈを専用に設けても良い。
【００２８】
この場合、符号領域４２は、符号用アドレスによって一意に識別される。故障検出用アドレスと符号用アドレスは、アドレスオフセットＫを除く同一のアドレス値がそれぞれ対応する領域を示す。例えば、故障検出用アドレス０１ｈのデータ領域と符号用アドレスＫ＋０１ｈの符号領域はそれぞれ対応する。
【００２９】
また、符号用アドレスＫ+・・・ｈは、メモリアドレスの自然数Ｌ分の１の値とする。この場合、連続したメモリアドレスを占める複数の記憶単位毎、単一の故障検出用アドレスｊｈが割り付けられる。
【００３０】
例えば、図３で符号領域の横幅が、ＣＰＵ２０のメモリデータアクセス幅＝32ビット、Lビット＝４ビットの場合、符号用アドレスの実アドレス値は、アクセス幅のバイト数（32ビット→4バイト）×4ビットごとの飛び飛びの値となる。
【００３１】
この場合、例えば、符号用アドレスの先頭が0000ｈの場合、次の行のアドレスは0010h、その次の行は0020hとなる（16ビット単位で実アドレスが進む）。このアドレス0000〜000Fhまで（＝連続したメモリアドレスを占める記憶単位）をアドレスjh、0010〜001Fhまでをj+1h、0020〜002Fhをj+2hと言った風に、故障検出用アドレスを割り振る。
【００３２】
また、故障検出用アドレスｊｈに対応するデータ領域４１のメモリデータアクセス幅のビット数Ｍと、符号領域４２のメモリデータアクセス幅Ｌは異なっても良い。
【００３３】
次に、このような「メモリ故障検出」命令を受けて、メモリ４０の故障を検出するメモリ故障検出部３０の詳細構成について説明する。アドレス変換部３１と、符号化計算部３２と、命令受付部３３と、検出用データ書き換え部３４と、を備える。
【００３４】
先ず、命令受付部３３は、ＣＰＵ２０からの命令を受付け、アドレス変換部３１、符号化計算部３２、及び検出用データ書き換え部３４に送る。この命令受付部３３は図示しない入力回路と命令レジスタから構成される。命令受付部３３は命令レジスタを用いずに入力回路から直接、アドレス変換部３１と符号化計算部３２に命令を伝達する構成でも構わない。
【００３５】
アドレス変換部３１は、ＣＰＵ２０からメモリ４０にデータを転送する場合には、制御プログラムのソフトウェアが認識する論理アドレスをメモリ４０の物理アドレスに、また、メモリ４０からＣＰＵ２０にデータを転送する場合には、メモリ４０の物理アドレスを論理アドレスに変換するアドレス変換機能を備える。
【００３６】
符号化計算部３２は、「メモリ故障検出」命令に基づいて、データ領域４１にデータを書き込む場合、予め書き込まれる当該データ領域４１のデータに対して、予め設定される符号化ルールに基づく符号化演算を行い（第１の）符号化データを作成して、データ領域４１と対応付けられた符号領域４３に書き込み、ＣＰＵ４０からの「メモリ故障検出」命令でメモリの故障診断を行う場合、当該データ領域４１から読み出したデータに対して符号化演算を行い（第２の）符号化データとし、第１の符号化データと第２の符号化データとを比較して、故障の有無を検出する。
【００３７】
符号化ルールは、例えば。ＣＲＣ（Ｃｙｃｌｉｃ Ｒｅｄｕｎｄａｎｃｙ Ｃｈｅｃｋ）コードの様に、高い故障検出能力を持つ符号を用いる。また、符号化計算部３２の符号化ルールには、ＥＣＣ（Ｅｒｒｏｒ Ｃｈｅｃｋ ａｎｄ Ｃｏｒｒｅｃｔ）のようなビットエラー検出とビットエラー訂正能力を兼ね備えた符号を用いても良い。
【００３８】
検出用データ書き換え部３４は、ＣＰＵ４０からの「メモリ故障検出」命令を、命令受付部３３を介して通知され、当該「メモリ故障検出」命令で予め設定される前記データ領域内のデータ書き換え領域ｎｈのデータを予め設定される詳細を後述する特定の変化ルールに基づいて変換処理して、データを上書きし、または、メモリ４０から読み出して逆変換しＣＰＵ４０に送る場合がある。
【００３９】
次に、このように構成された、第１の実施形態による制御装置１０のメモリ４０のメモリ故障検出動作について説明する。
【００４０】
（ステップ１）
メモリ４０のデータ領域４１には制御演算に用いられる対象データが、符号領域４２には、データ領域４１の対象データに対応した符号化データが、制御装置１０の起動時、または、「メモリ故障検出」命令の前に、予め、記憶される。
【００４１】
(ステップ２)
次に、ＣＰＵ２０からの「メモリ故障検出」命令が命令受付部３３に伝達され、メモリ４０内に複数存在する、実行中データ領域以外の検査対象データ領域であるデータ領域４１の内、ＣＰＵ２０からの指定による対象となるデータ書き換え領域４３に記憶されている検査対象データが検出用データ書き換え部３４に読み出される。
【００４２】
(ステップ３)
引き続き、命令受付部３３からの伝達により、検出用データ書き換え部３４は、読み出したデータ書き換え領域４３のデータを、予め定める、特定の変化ルールに基づく変換処理をして書き換える。（以後、ここでは読み出したデータを変換処理して上書きすることを「書き換える」と言う。）。
【００４３】
ここで言う特定の変化ルールに基づく変換処理とは、例えば、データ書き換え領域４３のデータをビット反転させた値に書き換えるというものである。
【００４４】
また、特定の変化ルールに基づく変換処理は、読み出したデータと検出用データ書き換え部３４に予め記憶しておく変換データ(例えば、0101010101010101=5555h)との排他的論理和（ＸＯＲ）などの積和演算であっても構わない。この際、符号化計算部３２により、対応する符号領域４２の値の書き換えも行う。
【００４５】
(ステップ４)
書き換え後のデータ書き換え領域４３のデータを、検出用データ書き換え部３４の図示しないメモリに読み出し、ステップ３で書き換えた（データ書き換え領域４３に一時記憶した参照）のデータと、書き換え後のデータ書き換え領域４３からの読み出したデータとが一致する事を検出用データ書き換え部３４で確認する。
【００４６】
ここでもし、書き換えた参照データと、書き換え後の読み出しデータとが一致しない場合は、メモリ４０のデータ書き換え領域４３に故障がある事を意味するので、データ書き換え領域４３に関してメモリ故障を検出する。
【００４７】
即ち、これまでのステップでは、データ書き換え領域４３、及び対応する符号領域４２の異常が検出される。
【００４８】
(ステップ５)
次に、メモリ４０の、データ書き換え領域４３とは異なる全ての故障検出用アドレスｊｈ（図２の故障検出用アドレス００ｈ〜ｊｈ、アドレスｎｈを除く）について、命令受付部３３からの伝達により、符号化計算部３２がデータ領域４１からの読み出しデータから符号化データを計算し、対応する符号領域４２に保存済みの符号化データと、計算した符号化データで比較照合検査を行う。
【００４９】
ここで、このステップ５で検査対象となる故障検出用アドレス（図２の故障検出用アドレス００ｈ〜ｊｈ）は、メモリ４０の検査可能な状態の検査対象データ領域に渡っていても構わない。
【００５０】
また故障検出用アドレス（図２の故障検出用アドレス００ｈ〜ｊｈ）は、図１のメモリ４０のうち領域Ａ〜Ｅのいずれかの範囲中に限定されていても構わない。
【００５１】
また、ここで、もしデータ書き換え領域４３のアドレス線と他のアドレス線の間でカップリング故障モードが存在する場合には、データ書き換え領域４３の書き換え時に、データ書き換え検出用アドレスｎｈ以外のアドレスにもデータ変化が生じる。
【００５２】
ステップ５のデータ書き換え領域４３とは異なる全ての故障検出用アドレスの符号化計算による比較照合検査により、このカップリング故障を検出することが可能である。
【００５３】
また、ここで、符号化計算部３２の符号化ルールにＥＣＣのようなビットエラー検出とビットエラー訂正能力を兼ね備えた符号を用いる構成では、単一ビット故障についてはビット故障の訂正が可能である。
【００５４】
この場合、アベイラビリティを向上させるために、単一ビット故障を検出した際にはビットエラーを訂正し、システム制御を継続することも可能である。この場合、複数ビットの故障時において単一ビット故障を誤検出する恐れがあるが、その際でも該当メモリアドレスがデータ書き換え領域４３の対象となった際にステップ４の処理により故障検出が行われる。
【００５５】
(ステップ６)
ステップ２〜ステップ５のメモリ故障検出処理の後、データ書き換え領域４３のデータは、ステップ２で読み出しておいた元のデータに検出用データ書き換え部３４が書き戻す。（即ち、データ書き換え領域４３の特定の変化ルールで変換処理されたデータを逆変換して上書きすることを以後「書き戻す」と言う。）。
【００５６】
また、データ書き換え領域４３のデータは、書き戻さずに、ステップ３によって書き換えた値のままであっても構わない。書き戻さない場合、アドレス変換部３１は、書き換え処理を行ったデータ書き換え領域４３の故障検出用アドレスｎｈを記憶しておき、新たに、同一アドレスに書き込みがあるまで、同アドレスからの読み出しデータにステップ３と同一の特定の変化ルールでの変換処理を行う。
【００５７】
即ち、ステップ３がビット反転ならば再ビット反転、ステップ３が特定データパターンとのＸＯＲ演算ならば特定データパターンとの再ＸＯＲ演算を行い、書き戻しのための処理時間を短縮する。
【００５８】
(ステップ７)
ＣＰＵ２０、または、命令受付部３３からのデータ書き換え領域４３のアドレス変更指令により、データ書き換え領域４３の故障検出用アドレスを図２の故障検出用アドレス００ｈ〜ｊｈ全範囲にわたって変化させ、ステップ２〜ステップ６を繰り返す。これによりメモリ４０の全領域または図１のメモリ４０のうち領域Ａ〜Ｅのいずれかの領域の全範囲について、メモリ故障検出が完了する。
【００５９】
ここでアドレス変更指令を命令受付部３３から行う場合、データ書き換え領域４３のアドレスは、最初にＣＰＵ２０から与えられたアドレスを元に。予め設定されるアドレス更新ルール（例えば１ずつインクリメント）により自動的に変化させることにより行う。
【００６０】
(ステップ８)
ステップ１〜ステップ７が完了する都度、検出用データ書き換え部３４による特定の変化ルールに基づく変換処理を、ビット演算から排他的論理和へ、排他的論理和からビット演算へ、また排他的論理和についても別々のデータパターンに基づくものへ、変更してステップ１〜ステップ７を繰り返しても良い。
【００６１】
ステップ８の例では、例えば、同一アドレスのデータ領域４１内部の近傍ビット間のカップリング故障など、単一の変化ルールに基づく変換処理で検出出来ない故障についても、変化ルールを変更する事により検出できる可能性がある。
【００６２】
上記ステップ１〜ステップ６の処理のうち、ＣＰＵ２０が関与するのはステップ１の処理のみで、他のステップ２〜６の処理は、メモリ故障検出部３０とメモリ４０とにより自動的に実行される。
【００６３】
また、ステップ７のアドレス変更指令を命令受付部３３から行う場合は、ステップ７もＣＰＵ２０が関与せず実行することが出来る。
【００６４】
このように本第1の実施形態によれば、カップリング故障モードに対応したメモリ故障検出の大部分の処理を、ＣＰＵ２０を介さずにメモリ故障検出部３０による、例えば、ＦＰＧＡ（Field-Programmable Gate Array）のようなハードウェア処理により実施でき、メモリ故障検出の制御用のＣＰＵ２０のプロセッサ処理時間を低減することができる。
【００６５】
これによりＣＰＵ２０はステップ１で命令受付部３３に命令を与えた後は、メモリ故障検出以外の制御処理に専念することが出来、制御装置１０のメモリ４０のメモリ容量が増加しても、ＣＰＵ２０に負荷をかけずにメモリの故障検出を実行することができる。
【００６６】
即ち、ＣＰＵ４０は、メモリ故障検出部３０に対して、故障検出用アドレスｊｈ、データ領域４１、データ書き換え領域４３を指定する「メモリ故障検出」命令を送信し、メモリ故障検出部３０は、「メモリ故障検出」命令に基づくデータ領域４１のアドレスに対して、書き込み時の符号化データと、メモリ４０のから読み出して符号化した符号化データと、を比較し、その相違の有無から全検査対象データ領域のメモリの故障を検出する。
【００６７】
したがって、第1の実施形態に拠れば、ＣＰＵとそのメモリを備える制御装置のメモリ故障検出において、ＣＰＵの処理負担を軽減し、メモリの故障検出に要するＣＰＵ処理時間を短縮するとともに、メモリのカップリング故障検出が効率よく行えるようにした制御装置、及びそのメモリ故障検出方法、その自己診断方法を提供することができる。
【００６８】
（第２の実施形態） 
次に、本発明に係るメモリ故障検出装置の第２の実施形態について図４、５を参照して説明する。第２の実施形態の各部について第１の実施形態と同一の部分は同じ符号を付し、その説明を省略する。
【００６９】
第２の実施形態が第１の実施形態と異なる点は、図４に示すように、データ書き換え領域４３は、データ領域４１のデメモリデータアクセス幅全体ではなく、データアクセス幅方向の一部のデータ書き換え領域４３ａを対象とするようにしたことにある。
【００７０】
第１の実施形態の処理ステップ７においては、本実施形態２では、データ書き換え領域４３ａのアドレスは、図４の故障検出用アドレス００ｈ〜ｊｈ全範囲を網羅するように、図５の矢印線で示すように走査する。
【００７１】
この走査では、故障検出用アドレスだけでなく、メモリデータアクセス幅の位置も変える。
【００７２】
本第２の実施形態の構成により、以下の効果が得られる。例えば、第１の実施形態における同一の故障検出用アドレスのデータ領域４１内部の近傍ビット間のカップリング故障が起きていて、且つ、メモリ故障検出の処理動作に入る前からデータ領域４１に備えられたデータが0000hなど、データ領域４１の全体について同一の値であった場合には、第１の実施形態の仕組みでは、同一データをビット反転してもXOR演算しても書き換え後のデータ領域４１の値が全ビット同じ値になるのは自明であり、近傍ビット間のカップリング故障が起きていた場合は、これを検出することが出来ない。
【００７３】
一方、本第２の実施形態による故障検出では、カップリング故障が起きているビット間が図４のデータ書き換え領域４３の境界を跨っている場合、カップリング故障が検出可能である。
【００７４】
これにより、第２の実施形態によれば、近傍ビット間のカップリング故障などの第１の実施形態では検出不可能な故障に関しても、メモリ故障の検出が可能である。
【００７５】
（第３の実施形態）
次に、本発明の第３の実施形態について図６を参照して説明する。第３の実施形態の各部について、第１実施形態と同一部分は同一の符号を付し、その説明を省略する。
【００７６】
本発明の第３の実施形態が第１の実施形態と異なる点は、第１の実施形態においては、メモリ４０の全記憶エリアは、実行中データ領域、及び検査対象データ領域の２つ以上の領域に予めＣＰＵ４０で識別されていたが、第３の実施形態では、メモリ４０の検査対象データ領域の分割位置が、図６に示すように複数の分割位置を変えて設定するようにしたことにある。
【００７７】
本第３の実施形態においては、第１の実施形態の処理ステップ１〜ステップ７が完了し、メモリ４０の全検査対象データ領域Ａ〜Ｅについてのメモリ故障検出処理が終了すると、次の「メモリ故障検出」命令からは、メモリ４０の領域分割を図６における検査対象データ領域Ａ‘〜Ｆ’のように、検査対象データ領域域Ａ〜Ｅとは異なる故障検出用アドレス位置で分割し、処理ステップ１ないしステップ７を検査対象データ領域Ａ’〜Ｆ’について実施する。
【００７８】
以上の処理によって、下記の効果が得られる。メモリ４０内のカップリング故障が、図６における検査対象データ領域Ａ’〜Ｆ’の領域間を跨るような、例えば、領域Ｂと領域Ｃを跨るカップリング故障４４に対しても、メモリ４０の領域分割を変更した後は、カップリング故障が同一の領域Ｃ‘内に収まる様になり、第３の実施形態で示した処理ステップ１〜ステップ７の手順で故障検出が可能となる。
【００７９】
以上、本第３の実施形態によれば、メモリ４０の検査対象データ領域Ａ’〜Ｆ’について、複数種の分割位置を設定可能とすることで、分割の境界を跨るカップリング故障の検出が可能となる。
【００８０】
（第４の実施形態）
本発明の第４の実施形態について、再び、図１を参照して説明する。第４の実施形態の各部について、第１の実施形態と同一部分は同じ符号を付し、その説明を省略する。
【００８１】
第４の実施形態が第１の実施形態と異なる点は、ＣＰＵ２０が実行するプログラム構成として、更に、符号化計算部３２と同一の符号化計算が可能な符号化プログラムを備え、ＣＰＵ４０は「自己診断」命令を命令受付部３３に送るようにしたことにある。
【００８２】
この構成においては、ＣＰＵ４０は、符号化計算部３２と同じ符号化ルールで、一定のメモリデータアクセス幅のデータに対し、符号化計算が可能な構成、または、この演算にための構成を備えず、符号化プログラムによって求めた、データと符号化データとを対応付けして記憶する構成としても良い。
【００８３】
本第４の実施形態においては、符号化プログラムを備えるＣＰＵ４０と、「自己診断」命令を受けた命令受付部３３とは、符号化計算部３２の正常動作を相互に検算する事が可能である。
【００８４】
この符号化計算の冗長化処理は、先ず、「自己診断」命令によって、命令受付部３３に検算用の対象データが与えられる。
【００８５】
そして、符号化計算部３２は検算用の対象データを元に、検算用の符号化データを算出する。
【００８６】
検算用の符号化データはメモリ故障検出部３０からＣＰＵ２０に返送され、符号化プログラムが有する符号化データと、ＣＰＵ２０メモリ故障検出部３０から返送された、符号化計算部３２による検算用の符号化データの一致確認を行う。
【００８７】
したがって、第４の実施形態によれば、ＣＰＵ２０は、命令受付部３３による符号化データの検算機能を有する事により、符号化データと符号化計算部３２の計算結果が一致しない場合は、ＣＰＵ２０かメモリ故障検出部３０の何れかが故障していることを検出できる。
【００８８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８９】
１０  メモリ故障検出装置
２０  ＣＰＵ
３０  メモリ故障検出部
３１  アドレス変換部
３２  符号化計算部
３３  命令受付部
３４  検出用データ書き換え部
４０  メモリ
５０  外部バス
【図１】
2013175118.tif 000003
【図２】
2013175118.tif 000004
【図３】
2013175118.tif 000005
【図４】
2013175118.tif 000006
【図５】
2013175118.tif 000007
【図６】
2013175118.tif 000008