(57)【要約】【課題】メモリ診断を確実に実施するためには、メモリ診断処理と他プロセスとメモリアクセスの排他制御し、一時的に他のプロセスのメモリアクセスを止める必要があるが、他プロセスを一時的とは言え止めると制御装置本来の処理に遅延が発生するため、他プロセスの動きに影響を与えないメモリ診断方式を検討する必要がある。【解決手段】ＥＣＣ機能付きメモリにおいて、ＥＣＣ機能の誤り訂正能力の範囲で故意にビットを変化させる、例えば、１ビットの誤りが訂正可能なＥＣＣ１０３の場合、データ１０１の１ビット１０２を反転させて、反転した後、当該データ１０１を読み出して、ＥＣＣ１０３で訂正が実施されたことを確認してビット固定故障が発生していないことを検出し、逆にＥＣＣ１０３による訂正が実施されなかった場合、ビット１０２が反転できなかったこと、つまり、ビット１０２の固定故障が発生していることを検出する。【選択図】図１
2011232910.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を行うプロセッサと、メモリと、メモリの誤りの訂正・検知を行うＥＣＣ機能とを備えた制御装置において、
前記プロセッサが、前記ＥＣＣ機能が付与した誤り訂正用データを変更することなく、前記ＥＣＣ機能の誤り訂正能力の範囲内で、前記メモリのデータのビットを反転し、前記ＥＣＣ機能により正しく前記データが訂正されるかどうかを判定することで、前記メモリの異常の有無を判定する手段を備えていることを特徴とするメモリ診断方式。
【請求項２】
請求項１に記載のメモリ診断方式において、前記メモリの異常の有無を判定する手段は前記ＥＣＣ機能により正しく前記データが訂正された場合に、異常無しと判定することを特徴とするメモリ診断方式。
【請求項３】
請求項１に記載のメモリ診断方式において、前記メモリの異常の有無を判定する手段は前記ＥＣＣ機能による訂正処理が実行されず、ビット誤りを検知しなかった場合に、異常有りと判定することを特徴とするメモリ診断方式。
【請求項４】
請求項１に記載のメモリ診断方式において、前記メモリの異常の有無を判定する手段はメモリ診断実施前のデータを保持しておき、前記ＥＣＣ機能による訂正処理が実行された後、訂正結果と保持しておいた前記データとが一致しない場合に、異常有りと判定することを特徴とするメモリ診断方式。
【請求項５】
請求項１に記載のメモリ診断方式において、前記ＥＣＣ機能による訂正処理において、ＥＣＣ機能による訂正が実施されず、ビット誤りを検知した場合に、メモリ診断のために反転したビットを元に戻し、ＥＣＣ機能による訂正を試み、訂正が実施された場合は、再びビットを反転してメモリ診断を実施し、訂正が実施できなかった場合は、異常と判定することを特徴とするメモリ診断方式。
【請求項６】
請求項１ないし請求項５のいずれかの請求項に記載のメモリ診断方式において、メモリ診断用の専用プロセッサを用いてメモリ診断処理を実施することを特徴とするメモリ診断方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＥＣＣ（Error Check and Correct）機能付きメモリを有する制御装置に係わり、特にメモリ異常が発生した際に、異常を検知することができる制御装置に関するものである。
【背景技術】
【０００２】
制御装置に搭載されるメモリについては、ビット化け、ビット固定故障等の異常が発生し得る。そうしたメモリ異常が発生した場合、制御を誤る可能性がある。
【０００３】
一般にビット化けに対してはＥＣＣを付けることで対策されている。ＥＣＣの実装方法には様々な形態があるが、１ビット誤りは正しく訂正し、２ビット誤りは訂正できないが検知することはできるといった機能を持つのが一般的である。
【０００４】
一方、ビット固定故障については、固定故障しているビットの値が変化しないと検知できないため、故障が長期に渡り検知できず、故障が潜在化し、複数のビットが固定故障を起こすという可能性を否定できない。その場合、ＥＣＣのみでは十分な対策とは言えない。そこで、メモリ診断のために、実際にメモリにデータを書き込んで、データを変化させ、正しく書き込めたか診断するという処理を行い、メモリのビット固定故障検知を行うという対策が取られている。
【０００５】
その際、一時的にメモリ診断用のデータがメモリに書き込まれるため、他プロセスからのメモリアクセスがあり、診断用に書き込んだデータを読んでしまうと、誤制御となる可能性がある。そのため、メモリ診断と、他プロセスのメモリアクセスは排他制御する必要がある。そこで、例えば、他プロセスのメモリアクセス周期を監視し、その周期の隙間にメモリ診断を実施する等の方法がとられている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−４８２２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のように、メモリ診断を実施するためには、メモリ診断処理と他プロセスとの排他制御が必要である。そのため、他プロセスのメモリアクセスを監視し、アクセスがない領域に対して診断を実施する、あるいは、タイミング制御を行うという方式がとられている。
【０００８】
しかし、これらの方式では、他プロセスのアクセスの頻度が高い領域に対してメモリ診断を実施できない可能性がある。したがって、確実にメモリ診断を全メモリ領域に実施するためには一時的に他のプロセスのメモリアクセスを止める必要がある。
【０００９】
しかし、他プロセスには当該制御装置の本来の処理であるメインプロセスが含まれているため、そのプロセスを一時的とは言え止めると、制御装置本来の処理に遅延が発生する可能性がある。
【００１０】
そのため、他プロセスの動きに影響を与えないメモリ診断方式を検討する必要がある。
【課題を解決するための手段】
【００１１】
本発明は、ＥＣＣ機能付きメモリにおいて、ＥＣＣ機能が付与した誤り訂正用データを変更せずに、ＥＣＣ機能の誤り訂正能力の範囲で故意にビットを変化させることで問題の解決を図る。
【００１２】
具体的には、例えば、１ビットの誤りが訂正可能なＥＣＣ機能の場合、ＥＣＣ機能が付与した誤り訂正用データはそのままで、メモリ上のデータの１ビットを反転させる。反転した後、当該データを読み出すと、１ビット誤り状態となっているため、ＥＣＣ機能でデータが訂正され、元のビット反転する前のデータに訂正されて読み出される。このとき、ＥＣＣ機能で訂正が実施されたことを確認することで、ビットが正しく反転した、つまり、ビット固定故障が発生していないことがわかる。逆にＥＣＣによる訂正が実施されなかった場合、ビットが反転できなかった、つまりビットの固定故障が発生していることがわかる。
【００１３】
また、他プロセスがメモリ診断処理中に当該データを読み出した場合にも上記の通り、ＥＣＣ機能により訂正されて、他プロセスは正しいデータを読み出すため、他プロセスは正常に動作する。
【００１４】
このようなメモリ診断方式を用いることにより、他プロセスのメモリアクセスに影響を与えることなくメモリ診断を行うことが可能となる。
【発明の効果】
【００１５】
本発明によれば、他プロセスの動作に影響を与えずに、メモリ診断を行うことが可能となる。
【図面の簡単な説明】
【００１６】
【図１】図１は本発明の実施例１のメモリ診断処理の概要を示す概念図である。
【図２】図２は本発明の実施例１のメモリ診断方式の構成を示す構成図である。
【図３】図３は本発明の実施例１におけるメモリ診断処理のフロー図である。
【図４】図４は本発明の実施例２のメモリ診断方式の構成を示す構成図である。
【発明を実施するための形態】
【００１７】
本発明は、ＥＣＣ機能付きのメモリに対して、特別な装置等追加することなく、他プロセスの動作の影響を受けずにメモリ診断を行うという目的を、単純なシステム構成で実現した。以下、本発明の実施の形態について、図面に基づいて説明する。
【実施例１】
【００１８】
図１に本発明の実施例１におけるメモリ診断方式の概念を示す。データ１０１に対してＥＣＣ１０３が付与されている構成である。具体的な前記データ１０１の長さ、および前記ＥＣＣ１０３の内容は前記ＥＣＣ１０３にビット誤り訂正能力と複数ビット誤りの検知能力さえあればよく、その具体的内容については本発明の対象外と考える。
【００１９】
本実施例では、１ビット誤りが訂正でき、２ｂｉｔ誤りを検知できるＥＣＣを用いた構成例とする。
【００２０】
データ１０１に対してＥＣＣ１０３が付与されている構成において、検査ビット１０２の固定故障の有無の診断の動作概要を図１に示す。図１の（ａ）がメモリに固定故障がない場合の動作の概要、図１の（ｂ）がメモリに固定故障がある場合の動作の概要である。
【００２１】
図１の（ａ）において、前記検査ビット１０２を反転する。このとき、ＥＣＣ機能が付与した誤り訂正用データは変更しない。検査ビットは固定故障していないので、正しく反転される。つまり前記データ１０１としては１ビット誤りの状態となる。
【００２２】
ビットを反転した後、当該前記データ１０１をリードする。すると、１ビット誤りであるため、ＥＣＣ機能により訂正が実施され、ビット反転する前の正しいデータが読み出させる。このとき、ＥＣＣ機能で訂正が実施されたことを検知して、ビットが正しく反転された、つまり、前記検査ビット１０２は固定故障していないことがわかる。
【００２３】
図１の（ｂ）においては、図１の（ａ）の場合と同様に、前記検査ビット１０２を反転しようとしたとき、前記検査ビット１０２が固定故障しているため、ビットを反転することができない。
【００２４】
その結果、前記データ１０１に変化はなく、ビット誤りもない状態であるため、当該前記データ１０１をリードしたときＥＣＣ機能による訂正が実施されないデータがリードされる。リード時にＥＣＣによる訂正が実施されなかったことを検知して、前記検査ビット１０２が反転できなかった、つまり、前記検査ビット１０２が固定故障していることが検知できる。
【００２５】
上記メモリ診断処理中に他プロセスがメモリリードした場合の影響についてであるが、前記検査ビット１０２が反転し、１ビット誤りとなっている場合に他プロセスがメモリリードしても、上記の通り、ＥＣＣ機能によりビット訂正がなされるため、メモリリードした他プロセスは正しいデータをリードし、正しく制御を行うことができる。
【００２６】
上記メモリ診断処理中に上記検査ビット１０２以外の１ビットに一時的なビット化けが発生した場合、メモリリード時に２ビット誤りとなり、ＥＣＣは２ビット誤りを検知し、正しく訂正を実施できない。
【００２７】
そのような場合、メモリ診断処理は上記検査ビット１０２を反転して元に戻し、再度メモリリードを実施し、ＥＣＣ機能によりビット訂正を実施し、一時的なビット化けを解消した後に、再度メモリ診断処理を実施することで、一時的なビット化けの影響を受けずにメモリ診断を実施することができる。
【００２８】
また、上記メモリ診断処理中に上記検査ビット１０２以外の複数のビットに一時的なビット化けが発生した場合、ＥＣＣ機能が誤訂正を行う可能性がある。そのような場合については、メモリ診断処理に入る前に当該データ１０１を予め読み出して記憶しておき、メモリ診断処理時にリードしたデータと比較することで、ＥＣＣの誤訂正を検知することが可能である。
【００２９】
具体的には、予め記憶しておいたデータと、メモリ診断処理時にリードしたデータを比較し、不一致であれば、ＥＣＣ機能が誤訂正を実施したと判断することができ、複数ビットの誤りを検知することができる。
【００３０】
ハードウェア構成についてであるが、図２に示すように、ＥＣＣ機能２０２付きメモリ２０１とメモリ診断処理を行うことができるハードウェア（ＣＰＵ２０３，診断プログラム２０５を格納したＨＤＤ２０４等の記憶装置）さえあれば、本発明は実現できる。メモリ診断処理を行うプロセッサと、制御装置本来の機能である制御処理を行うプロセッサは同一であっても、異なるプロセッサであっても、上記メモリ診断処理は実施することができる。
【００３１】
本実施例のメモリ診断処理の流れを図３に示す。図３のステップＳ３０１〜ステップＳ３１４にてメモリ診断処理を実施する。
【００３２】
ステップＳ３０１において、メモリ診断の対象となる全領域のデータについて以下のステップＳ３０２〜ステップＳ３１４の処理を順に診断対象データを更新しながら実施する。
【００３３】
ステップＳ３０２において、メモリ診断の対象となったデータのビット数分、ステップＳ３０３〜ステップＳ３１４の処理を実施する。後述するステップＳ３１３で次の検査ビットを変更する場合を除き、検査ビットは順に変更して、全ビットが検査対象になるように更新する。
【００３４】
ステップＳ３０３において、メモリ診断の対象となったデータを読み出して、その値を保持しておく。ステップＳ３０４へ進む。
ステップＳ３０４において、検査対象となっている当該検査ビットを反転する。
【００３５】
次に、ステップＳ３０５へ進む。ステップＳ３０５において、検査対象となっている当該データを読み出す。
次に、ステップＳ３０６へ進む。ステップＳ３０６において、前記ステップＳ３０５の読み出し時にＥＣＣ機能による訂正が実施されたか確認する。実施された場合はステップＳ３０７へ進む。実施されなかった場合はステップＳ３１０へ進む。
【００３６】
ステップＳ３０７において、前記ステップＳ３０６でＥＣＣ機能による訂正が確認された場合、前記ステップＳ３０４で反転した１ビットを正しく訂正したか、他のビット化けと重なり誤訂正をしたかのどちらかである。
【００３７】
そこで、前記ステップＳ３０３で保持したデータと、前記ステップＳ３０５で読み出したデータを比較する。一致した場合は正しく訂正したと判断できるのでステップＳ３０８へ進む。不一致の場合は複数ビット化けと判断しステップＳ３０９へ進む。
【００３８】
ステップＳ３０８において、意図した通り、前記ステップＳ３０４で反転したビットが正しく反転され、それを訂正したと判断できるので当該検査ビットは固定故障をしていない正常ビットであると判定し、当該検査ビットへの診断処理を終える。ステップＳ３０２により次の検査ビットの処理が実施される。
【００３９】
ステップＳ３０９において、当該検査ビット以外の複数のビットでビット化けが発生していると判断される。この場合は当該データ領域に異常があると判定する。異常検知後の処理については、制御装置によって定めるべきであり、本発明の対象外と考える。
【００４０】
ステップＳ３１０において、前記ステップＳ３０６にてＥＣＣ機能による訂正が確認できなかった場合、前記ステップＳ３０４において当該検査ビットの反転に失敗し、データに変化がなく、ＥＣＣ機能は何の処理もしなかったか、他のビット化けにより、誤りは検知したが、訂正不可となったかのどちらかである。誤りを検知した場合はステップＳ３１１へ進む。誤りを検知せず、ＥＣＣ機能は何もしなかった場合はステップＳ３１４へ進む。
【００４１】
ステップＳ３１１において、当該検査ビット以外のビット化けを正しく訂正できれば、処理を継続することができる。そのため、当該検査ビットを反転し、元の状態に戻して、ステップＳ３１２へ進む。
【００４２】
ステップＳ３１２において、当該データを読み出し、ＥＣＣ機能による訂正を実施する。ステップＳ３１３へ進む。このとき、再び、誤りを検知したが訂正できなかった場合は、当該データ領域に異常があると判定する。異常検知後の処理については、制御装置によって定めるべきであり、本発明の対象外と考える。
【００４３】
ステップＳ３１３において、前記ステップＳ３１２で訂正した後のデータに対して、再び当該検査ビットの診断を実施するように次の検査ビットを再び当該ビットに設定して、ステップＳ３０２に戻る。
【００４４】
ステップＳ３１４において、ＥＣＣ機能が何も検知しなかったということは、前記ステップＳ３０４による当該検査ビットの反転ができなかった、つまり当該検査ビットが固定故障していると判定する。故障検知後の処理については、制御装置によって定めるべきであり、本発明の対象外と考える。
【００４５】
上記のようにメモリ診断処理を実装することより、他プロセスのメモリアクセスの影響を受けずにメモリ診断を実施することが可能となる。
【実施例２】
【００４６】
本発明のメモリ診断方式を用いれば、他プロセスのメモリアクセスの状況によらずメモリ診断処理を実施できるため、メモリ診断処理プロセスと、他のプロセスは非同期で動作させることができ、メモリ診断処理を異なるプロセッサで実施することが可能である。したがって、メモリ診断専用のプロセッサを用意してもよい。
【００４７】
図４に専用プロセッサ４０５を用いたメモリ診断方式４０４の本発明の実施例２を示す。図４において、専用プロセッサ４０５の動作は、図３に示すメモリ診断処理の流れと同様である。
【００４８】
専用プロセッサ４０５は、ステップ（１）において、メモリ診断の対象となる全領域のデータ範囲を設定し、ステップ（２）において、メモリ診断の対象となったデータのビット数分のデータを読み出し保持し、ステップ（３）において、検査対象となっている当該検査ビットのうち、１ビットを反転したデータをＥＣＣ機能が付与した誤り訂正用データを変更することなくメモリ４０１に書き込む。
【００４９】
ステップ（４）において１ビットを反転したデータをメモリ４０１からリードすると、ＥＣＣ機能４０２が動作してＥＣＣ機能による訂正が実施されると、訂正割込信号を発生し、専用プロセッサ４０５は、ステップ（５）で、訂正割込信号を検出して、ＥＣＣ機能４０２による訂正が実施されたことを確認する。
【００５０】
この場合、ＥＣＣ機能４０２による訂正が実施されたメモリ４０１の当該データを読み出して、訂正前に読み出した保持したデータと比較して一致すれば、メモリは正常であると判断される。
【００５１】
次に、ＥＣＣ機能４０２による訂正が実施されずに、ビット誤りが検出された場合には、ＥＣＣ機能４０２は誤り検知の割込信号を発生するので、専用プロセッサ４０５は、ステップ（６）で、この誤り検知の割込信号を検出して、ＥＣＣ機能４０２が訂正を実施せず、ビット誤りが発生したことを確認する。
【００５２】
この場合には、メモリ診断のために反転したビットを元に戻し、ＥＣＣ機能による訂正を試み、訂正が実施された場合は、再びビットを反転してメモリ診断を実施し、訂正が実施できなかった場合は、異常と判定する。
【００５３】
上記のようにメモリ診断処理を実装することより、他プロセスのメモリアクセスの影響を受けずにメモリ診断を実施することが可能となる。
【符号の説明】
【００５４】
１０１  データ
１０２  検査ビット
１０３  ＥＣＣ
２００  メモリ診断方式
２０１  メモリ
２０２  ＥＣＣ機能
２０３  ＣＰＵ
２０４  ＨＤＤ
２０５  診断プログラム
４００  メモリ診断方式
４０１  メモリ
４０２  ＥＣＣ機能
４０３  ＣＰＵ
４０４  ＨＤＤ
４０５  専用プロセッサ
【図１】
2011232910.tif 000003
【図２】
2011232910.tif 000004
【図３】
2011232910.tif 000005
【図４】
2011232910.tif 000006