(57)【要約】【課題】不揮発性メモリ素子の動作の異常を確実に検出できないという課題を解決する。【解決手段】不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第１の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第２の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する。【選択図】図１
2019164864.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第１の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第２の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する異常判定部を備える異常検出器。
【請求項２】
ストアする前の前記データが、前記揮発性記憶部の全領域のデータである請求項１に記載の異常検出器。
【請求項３】
ストアする前の前記データが、前記揮発性記憶部の使用領域のデータである請求項１又は請求項２に記載の異常検出器。
【請求項４】
前記異常検出器への電源供給が切断された状態で前記第１の誤り検出符号を保持可能な誤り検出符号保持部をさらに備える請求項１から請求項３のいずれか一項に記載の異常検出器。
【請求項５】
前記誤り検出符号保持部は、バックアップ電源として機能するバッテリを備える請求項４に記載の異常検出器。
【請求項６】
前記第１の誤り検出符号を前記異常検出器が備えるＣＰＵの汎用レジスタに保存する請求項１から請求項３のいずれか一項に記載の異常検出器。
【請求項７】
前記不揮発性メモリ素子の電源供給を制御する電源制御器をさらに備える請求項１から請求項６のいずれか一項に記載の異常検出器。
【請求項８】
請求項１から請求項７のいずれか一項に記載の異常検出器と、
前記不揮発性メモリ素子と、
を備える不揮発性メモリ装置。
【請求項９】
不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第１の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第２の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する異常検出方法。
【請求項１０】
異常検出器のコンピュータを、
不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第１の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第２の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する判定手段、
として機能させる異常検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常検出器、不揮発性メモリ装置、異常検出方法、及び異常検出プログラムに関する。
【背景技術】
【０００２】
揮発性記憶部（ＳＲＡＭ等）及び不揮発性記憶部（ＥＥＰＲＯＭ等）を備える不揮発性メモリ素子（ＮＶＲＡＭ等）は、揮発性記憶部による高速処理性能と電源ＯＦＦ時の不揮発性記憶部によるデータ保持性能とを兼ね備えている。不揮発性メモリ素子は、通常時（電源ＯＮ時）は、揮発性記憶部を利用することで高速処理性能を実現している。また、不揮発性メモリ素子は、電源ＯＦＦの際に揮発性記憶部から不揮発性記憶部にデータをストアし、電源ＯＮの際にストアしたデータを不揮発性記憶部から揮発性記憶部にリコールするように動作することで電源ＯＦＦ時のデータ保持性能を実現している。
【０００３】
この不揮発性メモリ素子の動作の異常を検出する関連技術として、例えば、特許文献１が知られている。特許文献１には、不揮発性メモリ素子に接続されたコンデンサの電位の高低に基づいて不揮発性メモリ素子の動作の異常を検出する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−４３１４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記関連技術では、次のような課題が存在する。
すなわち、上記関連技術では、不揮発性メモリ素子の動作の異常を直接的に検出せずに、不揮発性メモリ素子に接続されたコンデンサを介して異常を検出している。この為、上記関連技術では、例えば、不揮発性メモリ素子の動作の異常がコンデンサの状態に反映されない場合には、不揮発性メモリ素子の動作の異常を検出できない。即ち、上記関連技術では、不揮発性メモリ素子の動作の異常を確実に検出できないという課題が存在する。
【０００６】
本発明の目的は、上述した課題を鑑み、不揮発性メモリ素子の動作の異常を確実に検出できないという課題を解決する異常検出器、不揮発性メモリ装置、異常検出方法、及び異常検出プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の第１の構成は、異常検出器に係り、不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第１の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第２の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する異常判定部を備えることを特徴としている。
【０００８】
本発明の第２の構成は、異常検出方法に係り、不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第１の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第２の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定することを特徴としている。
【０００９】
本発明の第３の構成は、異常検出プログラムに係り、異常検出器のコンピュータを、不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第１の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第２の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する判定手段、として機能させることを特徴としている。
【発明の効果】
【００１０】
本発明によれば、上述した課題を鑑み、不揮発性メモリ素子の動作の異常を確実に検出することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態に係る異常検出器を備える不揮発性メモリ装置の構成を示す構成図である。
【図２】第１の実施形態に係る異常検出器の処理フローを示す図である。
【図３】第１の実施形態の第２の変形実施例に係る異常検出器を備える不揮発性メモリ装置の構成を示す構成図である。
【図４】第１の実施形態の第３の変形実施例に係る異常検出器を備える不揮発性メモリ装置の構成を示す構成図である。
【図５】第２の実施形態に係る異常検出器を備える不揮発性メモリ装置の構成を示す構成図である。
【図６】第２の実施形態に係る異常検出器の処理フローを示す図である。
【図７】一実施形態による判定装置の最小構成を示す図である。
【発明を実施するための形態】
【００１２】
＜第１の実施形態＞
以下、第１の実施形態に係る不揮発性メモリ装置１及び異常検出器１０について、図１及び２を参照しながら説明する。
図１は、第１の実施形態に係る異常検出器１０を備える不揮発性メモリ装置１の構成を示す構成図である。図１に示すように、不揮発性メモリ装置１は、異常検出器１０及び不揮発性メモリ素子２０を備えている。不揮発性メモリ装置１は、外部からの要求に応じて外部からのデータを不揮発性メモリ素子２０に保存したり、不揮発性メモリ素子２０のデータを外部に返したりする。
【００１３】
不揮発性メモリ素子２０は、揮発性記憶部２１、不揮発性記憶部２２、コントローラ２３を備える。これにより、後述するように、不揮発性メモリ素子２０は、揮発性記憶部２１による高速処理性能と不揮発性記憶部２２による電源ＯＦＦ時のデータ保持性能とを兼ね備えている。第１の実施形態では、不揮発性メモリ素子２０がＮＶＲＡＭ（Non-Volatile Random Access Memory）である場合について説明するが、不揮発性メモリ素子２０は、ＮＶＲＡＭ以外であってもよい。
【００１４】
揮発性記憶部２１は、電源ＯＦＦ時にデータが保持されない揮発性の記憶部であり、データの保存等の高速処理が可能である。揮発性記憶部２１は、例えば、ＳＲＡＭ（Static Random Access Memory）であってよい。不揮発性記憶部２２は、電源ＯＦＦ時にもデータが保持可能な不揮発性の記憶部である。不揮発性記憶部２２は、例えば、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）であってよい。
【００１５】
コントローラ２３は、不揮発性メモリ素子２０への電力の供給が切断される電源ＯＦＦの際に揮発性記憶部２１から不揮発性記憶部２２にデータをストアする。また、コントローラ２３は、不揮発性メモリ素子２０への電力の供給が開始される電源ＯＮの際にストアした後のデータを不揮発性記憶部２２から揮発性記憶部２１にリコールする。これにより、不揮発性メモリ素子２０は、電源ＯＮ時には高速処理が可能な揮発性記憶部２１を用いてデータの保存等の処理を行うことができる。また、電源ＯＦＦ時には不揮発性記憶部２２を用いてデータを保持することができる。即ち、不揮発性メモリ素子２０は、揮発性記憶部２１による高速処理性能と不揮発性記憶部２２による電源ＯＦＦ時のデータ保持性能とを兼ね備える。
【００１６】
異常検出器１０は、ＣＰＵ（Central Processing Unit）１１、及びメインメモリ３０を備えている。
ＣＰＵ１１は、異常検出器１０の動作全体を司るプロセッサ（演算装置）である。ＣＰＵ１１は、不揮発性メモリ素子２０に保存されたプログラムやデータをメインメモリ３０に読み出し、処理を実行することで、後述する各機能を実現する。
【００１７】
メインメモリ３０は、ＣＰＵ１１のワークエリア等として用いられる揮発性のメモリである。メインメモリ３０としては、例えば、ＲＡＭ（Random Access Memory）が用いられる。第１の実施形態では、図１に示すように、ＣＰＵ１１、メインメモリ３０、及び不揮発性メモリ素子２０が同じバスに接続されている場合について説明するが、ＣＰＵ１１、メインメモリ３０、及び不揮発性メモリ素子２０は、必ずしも同じバスに接続されてなくてもよい。例えば、ＣＰＵ１１及びメインメモリ３０が第１のバスに接続され、ＣＰＵ１１及び不揮発性メモリ素子２０が第１のバスとは異なる第２のバスに接続されていてもよい。
【００１８】
第１の実施形態では、ＣＰＵ１１の処理に必要なプログラム及びデータが不揮発性メモリ素子２０に保存されている場合について説明するが、これらのプログラム及びデータは、不揮発性メモリ素子２０以外から取得されてもよい。例えば、異常検出器１０は、ＣＰＵ１１の処理に必要なプログラムやデータを保存する記録媒体を備えていてよい。この場合には、ＣＰＵ１１は、記録媒体に保存されたプログラム及びデータをメインメモリ３０に読み出し、処理を実行する。記録媒体としては、例えば、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、又はＦｌａｓｈＲＯＭが用いられる。
【００１９】
また、例えば、異常検出器１０は、ＣＰＵ１１の処理に必要なアプリケーションプログラム、及び各種データを外部装置から取得する為のインタフェースを備えていてよい。この場合には、ＣＰＵ１１は、インタフェースを介して外部装置と通信し、プログラム及びデータを取得してメインメモリ３０に格納する。
【００２０】
次に、第１の実施形態に係るＣＰＵ１１の各種機能について説明する。
ストア／リコール処理部１１０は、不揮発性メモリ素子２０を電源ＯＦＦにするタイミングで揮発性記憶部２１から不揮発性記憶部２２にデータをストアするように不揮発性メモリ素子２０のコントローラ２３に指示を出す。不揮発性メモリ素子２０を電源ＯＦＦにするタイミングは、例えば、不揮発性メモリ装置１の電源を切断する前のタイミング等であってよい。
【００２１】
また、ストア／リコール処理部１１０は、不揮発性メモリ素子２０を電源ＯＮにするタイミングで不揮発性記憶部２２から揮発性記憶部２１にデータをリコールするように不揮発性メモリ素子２０のコントローラ２３に指示を出す。不揮発性メモリ素子２０を電源ＯＮにするタイミングは、例えば、不揮発性メモリ装置１の電源を入れた後のタイミング等であってよい。
【００２２】
誤り検出符号処理部１２０は、不揮発性メモリ素子２０の動作が異常であるか否かを判定する為の判断情報として用いる誤り検出符号を算出する。第１の実施形態では、誤り検出符号処理部１２０は、揮発性記憶部２１の全領域のデータについての誤り検出符号を算出する。また、第１の実施形態では、誤り検出符号処理部１２０は、誤り検出符号としてチェックサム値を算出する。具体的には、誤り検出符号処理部１２０は、処理対象のデータを１ｂｙｔｅ単位で区切り、複数の１ｂｙｔｅデータを生成し、生成した１ｂｙｔｅデータ群の総和の下位１ｂｙｔｅをチェックサム値として算出する。なお、誤り検出符号処理部１２０は、その他のアルゴリズムを用いてチェックサム値を算出してよい。また、誤り検出符号処理部１２０は、例えば、パリティ値、ＣＲＣ値（巡回冗長符号）等のチェックサム値以外の誤り検出符号を算出してよい。
【００２３】
誤り検出符号処理部１２０は、不揮発性メモリ素子２０の揮発性記憶部２１から不揮発性記憶部２２にストアする前のデータについて算出した第１の誤り検出符号をメインメモリ３０に保存する。また、誤り検出符号処理部１２０は、不揮発性メモリ素子２０の不揮発性記憶部２２から揮発性記憶部２１にリコールした後のデータについて算出した第２の誤り検出符号を後述する異常判定部１３０に入力する。
【００２４】
異常判定部１３０は、図２を用いて後述するように、誤り検出符号処理部１２０が算出した誤り検出符号に基づいて、不揮発性メモリ素子２０の動作が異常であるか否かを判定する。具体的には、異常判定部１３０は、不揮発性メモリ素子２０のストア及びリコールの少なくとも一方の動作が異常であるか判定する。
【００２５】
（異常検出器の処理フロー）
図２は、第１の実施形態に係る異常検出器１０の処理フローを示す図である。
以下、図２を参照しながら、異常検出器１０の処理の流れを詳細に説明する。
【００２６】
図２に示す処理フローは、不揮発性メモリ素子２０のストア又はリコールの処理が必要なタイミングで開始される。不揮発性メモリ素子２０のストアの処理が必要なタイミングは、例えば、不揮発性メモリ装置１の電源を切断するタイミング、又は不揮発性メモリ素子２０の揮発性記憶部２１のデータが更新されたタイミング等であってよい。また、不揮発性メモリ素子２０のリコールの処理が必要なタイミングは、例えば、不揮発性メモリ装置１の電源を供給するタイミング、又は不揮発性メモリ素子２０の揮発性記憶部２１のデータが更新されたタイミング等であってよい。
【００２７】
図２に示すように、ストア／リコール処理部１１０は、不揮発性メモリ素子２０のストアの処理が必要であるか否かを判定する（ステップＳ１０１）。不揮発性メモリ素子２０のストアの処理が必要である場合（ステップＳ１０１のＹＥＳ）には、ストア／リコール処理部１１０は、誤り検出符号処理部１２０に第１の誤り検出符号を算出するように指示を出す。一方、不揮発性メモリ素子２０のストアの処理が必要でない場合（ステップＳ１０１のＮＯ）には、図２に示すステップＳ１０２〜Ｓ１０４はスキップされ、処理がステップＳ１０５に進む。
【００２８】
ストア／リコール処理部１１０の指示を受けると、誤り検出符号処理部１２０は、不揮発性メモリ素子２０の揮発性記憶部２１から不揮発性記憶部２２にストアする前のデータについて第１の誤り検出符号を算出する（ステップＳ１０２）。次に、誤り検出符号処理部１２０は、算出した第１の誤り検出符号をメインメモリ３０に保存する（ステップＳ１０３）。誤り検出符号処理部１２０は、第１の誤り検出符号の保存が完了した旨をストア／リコール処理部１１０に通知する。
【００２９】
誤り検出符号処理部１２０から通知を受けると、ストア／リコール処理部１１０が不揮発性メモリ素子２０に指示を出し、不揮発性メモリ素子２０のデータをストアする（ステップＳ１０４）。具体的には、ストア／リコール処理部１１０は、不揮発性メモリ素子２０のコントローラ２３にデータをストアするように指示を出す。これにより、不揮発性メモリ素子２０のコントローラ２３が揮発性記憶部２１から不揮発性記憶部２２にデータをストアする処理を行う。
【００３０】
次に、図２に示すように、ストア／リコール処理部１１０は、不揮発性メモリ素子２０のリコールの処理が必要であるか否かを判定する（ステップＳ１０５）。不揮発性メモリ素子２０のリコールの処理が必要である場合（ステップＳ１０５のＹＥＳ）には、ストア／リコール処理部１１０が不揮発性メモリ素子２０に指示を出し、不揮発性メモリ素子２０のデータをリコールする（ステップＳ１０７）。具体的には、ストア／リコール処理部１１０は、不揮発性メモリ素子２０のコントローラ２３にデータをリコールするように指示を出す。これにより、不揮発性メモリ素子２０のコントローラ２３が不揮発性記憶部２２から揮発性記憶部２１にデータをリコールする処理を行う。
【００３１】
一方、不揮発性メモリ素子２０のリコールの処理が必要でない場合（ステップＳ１０５のＮＯ）には、図２に示すステップＳ１０７〜Ｓ１１１はスキップされ、処理がステップＳ１０６に進む。この場合、ストア／リコール処理部１１０は、不揮発性メモリ素子２０のリコールの処理が必要でない旨を異常判定部１３０に通知する。この通知に基づき、異常判定部１３０は、不揮発性メモリ素子２０の動作が正常であると判定し（Ｓ１０６）、処理フローが終了する。
【００３２】
不揮発性メモリ素子２０のリコールの処理（ステップＳ１０７）が完了した後、不揮発性メモリ素子２０のコントローラ２３がストア／リコール処理部１１０にリコールの処理の完了を通知する。これにより、ストア／リコール処理部１１０は、誤り検出符号処理部１２０に第２の誤り検出符号を算出するように指示を出す。ストア／リコール処理部１１０の指示を受けると、誤り検出符号処理部１２０は、不揮発性メモリ素子２０の不揮発性記憶部２２から揮発性記憶部２１にリコールした後のデータについて第２の誤り検出符号を算出する（ステップＳ１０８）。なお、ステップＳ１０８で第２の誤り検出符号を算出するデータの範囲は、ステップＳ１０２で第１の誤り検出符号を算出したデータの範囲と同一にする。
【００３３】
次に、誤り検出符号処理部１２０は、ステップＳ１０３の処理でメインメモリ３０に保存した第１の誤り検出符号を読み出す（ステップＳ１０９）。誤り検出符号処理部１２０は、第１の誤り検出符号及び第２の誤り検出符号を異常判定部１３０に入力する。
【００３４】
異常判定部１３０は、不揮発性メモリ素子２０の揮発性記憶部２１から不揮発性記憶部２２にストアする前のデータの第１の誤り検出符号と、ストアした後のデータを不揮発性記憶部２２から揮発性記憶部２１にリコールした後のデータの第２の誤り検出符号とが不一致である否かを判定する（ステップＳ１１０）。第１の誤り検出符号と第２の誤り検出符号とが不一致である場合（ステップＳ１１０のＹＥＳ）、ストアする前のデータとリコールした後のデータとが同一でないと考えられるので、異常判定部１３０は、不揮発性メモリ素子２０の動作が異常であると判定する（ステップＳ１１１）。一方、第１の誤り検出符号と第２の誤り検出符号とが不一致でない場合（ステップＳ１１０のＮＯ）、ストアする前のデータとリコールした後のデータとが同一であると考えられるので、異常判定部１３０は、不揮発性メモリ素子２０の動作が正常であると判定する（ステップＳ１０６）。以上により、図２に示す処理フローが終了する。
【００３５】
（作用、効果）
以上のとおり、第１の実施形態に係る異常検出器１０は、不揮発性メモリ素子２０の揮発性記憶部２１から不揮発性記憶部２２にストアする前のデータの第１の誤り検出符号と、ストアした後のデータを不揮発性記憶部２２から揮発性記憶部２１にリコールした後のデータの第２の誤り検出符号とが不一致である場合に、不揮発性メモリ素子２０の動作が異常であると判定する異常判定部１３０を備える。
【００３６】
以上のような構成によれば、異常判定部１３０が、誤り検出符号を利用し、不揮発性メモリ素子２０の揮発性記憶部２１から不揮発性記憶部２２にストアする前のデータと、ストアした後のデータを不揮発性記憶部２２から揮発性記憶部２１にリコールした後のデータとが同一であるか否かを、直接的に判定しているので、不揮発性メモリ素子２０の動作の異常を確実に検出することができる。
これにより、例えば、コンデンサ等を介して間接的に不揮発性メモリ素子２０の動作の異常を検出している場合において、不揮発性メモリ素子２０の動作の異常がコンデンサに反映されず、不揮発性メモリ素子２０の動作の異常を検出できないという検出漏れを回避できる。
【００３７】
また、上述した第１の実施形態に係る異常検出器１０において、誤り検出符号を算出する対象となるストアする前のデータが、揮発性記憶部２１の全領域のデータである。
以上のような構成によれば、不揮発性メモリ素子２０の揮発性記憶部２１の全領域のデータについて誤り検出符号を利用し、不揮発性メモリ素子２０の動作の異常を検出するので、揮発性記憶部２１の使用してない領域に発生した異常を確実に検出できる。
【００３８】
＜第１の実施形態の変形実施例＞
以上、第１の実施形態に係る異常検出器１０について詳細に説明したが、異常検出器１０の具体的な態様は、上述のものに限定されることはなく、要旨を逸脱しない範囲内において種々の設計変更等を加えることは可能である。
（第１の実施形態の第１の変形実施例）
例えば、第１の実施形態に係る異常検出器１０において、第１の誤り検出符号を算出する対象となるストアする前のデータが、揮発性記憶部２１の全領域のデータであるとして説明したが、第１の誤り検出符号を算出する対象となるストアする前のデータが、揮発性記憶部２１の使用領域のデータであってよい。
【００３９】
このようにすることで、揮発性記憶部２１の不使用領域を除いた使用領域のデータだけを第１の誤り検出符号を算出する対象にすることで異常検出器１０の処理負荷を低減し、不揮発性メモリ素子２０の動作の異常を効率的に検出できる。
【００４０】
さらに、例えば、揮発性記憶部２１の複数の特定範囲のデータ毎に第１の誤り検出符号を各々算出し、算出された複数の第１の誤り検出符号をメインメモリ３０に保存するようにしてもよい。この複数の特定範囲は、例えば、揮発性記憶部２１をセクタサイズ毎に範囲を区切る等して規定されてよい。
【００４１】
このようにすることで、不揮発性メモリ素子２０の動作の異常を検出できるだけでなく、揮発性記憶部２１のデータのいずれの個所に不整合が発生したかという詳細な情報を取得できる。これにより、不揮発性メモリ素子２０の動作の異常の原因を効果的に調査することができる。さらに、揮発性記憶部２１の複数の特定範囲のデータ毎に算出された複数の第１の誤り検出符号のうち、揮発性記憶部２１の使用領域のデータについての第１の誤り検出符号だけをメインメモリ３０に保存するようにしてもよい。これにより、異常検出器１０の処理負荷を低減し、不揮発性メモリ素子２０の動作の異常を効率的に検出できる。
【００４２】
（第１の実施形態の第２の変形実施例）
次に、第１の実施形態の第２の変形実施例に係る異常検出器１０について、図３を参照しながら説明する。
【００４３】
図３は、第１の実施形態の第２の変形実施例に係る異常検出器１０の構成を示す図である。
図３に示すように、第１の実施形態の第２の変形実施例に係る異常検出器１０は、第１の実施形態の構成要素からメインメモリ３０を除いた構成になっている。また、図３に示すように、第１の実施形態の第２の変形実施例に係る異常検出器１０は、第１の実施形態の構成要素に加え、異常検出器１０への電源供給が切断された状態で第１の誤り検出符号を保持可能な誤り検出符号保持部６０をさらに備える。従って、第１の実施形態の第２の変形実施例に係る異常検出器１０が備える誤り検出符号保持部６０以外の各構成要素は、特に言及する場合を除き、第１の実施形態に係る異常検出器１０の各構成要素と同様に構成され、機能する。
【００４４】
誤り検出符号保持部６０は、第１の誤り検出符号を保存する記憶装置としてのＳＲＡＭ（Static Random Access Memory）６１と、ＳＲＡＭ６１に接続されているバッテリ６２とを備える。第１の実施形態の第２の変形実施例では、第１の実施形態に係るメインメモリ３０の機能をＳＲＡＭ６１が備えている。これにより、第１の実施形態に係るメインメモリ３０の動作は、ＳＲＡＭ６１が行う。例えば、第１の実施形態の第２の変形実施例では、図２に示す処理フローのステップＳ１０３において、メインメモリ３０ではなく、ＳＲＡＭ６１に第１の誤り検出符号を保存する。また、図２に示す処理フローのステップＳ１０９において、メインメモリ３０ではなく、ＳＲＡＭ６１から第１の誤り検出符号を読み出す。ＳＲＡＭ６１に接続されているバッテリ６２は、バックアップ電源として機能する。バッテリ６２は、異常検出器１０への電源供給が切断された状態でＳＲＡＭ６１に電源を供給することができる。これにより、例えば、不揮発性メモリ装置１への電源供給が障害等により意図せずに切断され、異常検出器１０への電源供給が切断された状態でも誤り検出符号保持部６０は、ＳＲＡＭ６１に保存された第１の誤り検出符号を保持可能である。
【００４５】
以上のとおり、第１の実施形態の第２の変形実施例に係る異常検出器１０は、異常検出器１０への電源供給が切断された状態で第１の誤り検出符号を保持可能な誤り検出符号保持部６０をさらに備える。
【００４６】
以上のような構成によれば、例えば、不揮発性メモリ装置１への電源供給が障害等により意図せずに切断され、異常検出器１０への電源供給が切断された状態が発生しても、誤り検出符号保持部６０が第１の誤り検出符号を保持し、第１の誤り検出符号の消失を防止できる。これにより、異常検出器１０の異常判定部１３０は、異常検出器１０への電源供給が切断された状態が発生しても、異常検出器１０への電源供給が再開された後に、誤り検出符号保持部６０が保持した第１の誤り検出符号を用いて不揮発性メモリ素子２０の動作の異常を確実に検出することができる。
なお、第１の実施形態の第２の変形実施例に係る誤り検出符号保持部６０を構成するＳＲＡＭ６１は、第１の誤り検出符号だけを保存可能な最小容量であってよい。また、誤り検出符号保持部６０が備える記憶装置は、ＳＲＡＭ６１以外であってよい。さらに、誤り検出符号保持部６０が備える記憶装置を別個に設けず、第１の実施形態に係るメインメモリ３０を用いてもよい。
【００４７】
さらに、第１の実施形態の第２の変形実施例に係る異常検出器１０において、誤り検出符号保持部６０は、バックアップ電源として機能するバッテリ６２を備える。
以上のような構成によれば、バッテリ６２を用いることでバックアップ電源を小型化することができるので、誤り検出符号保持部６０を異常検出器１０に容易に実装することができる。さらに、誤り検出符号保持部６０を備える異常検出器１０を小型化することができる。従って、異常検出器１０を備える不揮発性メモリ装置１の小型化及び単純化も可能になる。
【００４８】
（第１の実施形態の第３の変形実施例）
次に、第１の実施形態の第３の変形実施例に係る異常検出器１０について、図４を参照しながら説明する。
【００４９】
図４は、第１の実施形態の第３の変形実施例に係る異常検出器１０の構成を示す図である。
図４に示すように、第１の実施形態の第３の変形実施例に係る異常検出器１０は、第１の実施形態の構成要素からメインメモリ３０を除いた構成になっている。従って、第１の実施形態の第３の変形実施例に係る異常検出器１０の各構成要素は、特に言及する場合を除き、第１の実施形態に係る異常検出器１０の各構成要素と同様に構成され、機能する。
【００５０】
第１の実施形態の第３の変形実施例では、第１の実施形態に係るメインメモリ３０の機能をＣＰＵ１１が備えている。これにより、第１の実施形態に係るメインメモリ３０の動作は、ＣＰＵ１１が行う。
【００５１】
第１の実施形態の第３の変形実施例に係る異常検出器１０は、第１の誤り検出符号をＣＰＵ１１の汎用レジスタＲに保存するように構成されている。具体的には、図２に示す処理フローのステップＳ１０３において、メインメモリ３０ではなく、汎用レジスタＲに第１の誤り検出符号を保存する。また、図２に示す処理フローのステップＳ１０９において、メインメモリ３０ではなく、汎用レジスタＲから第１の誤り検出符号を読み出す。
【００５２】
以上のとおり、第１の実施形態の第３の変形実施例に係る異常検出器１０は、第１の誤り検出符号を異常検出器１０が備えるＣＰＵ１１の汎用レジスタＲに保存する。
【００５３】
以上のような構成によれば、異常検出器１０にメインメモリ３０を設けずに済むので、異常検出器１０を小型化することができる。また、異常検出器１０の構成を単純化することができる。従って、異常検出器１０を備える不揮発性メモリ装置１の小型化及び単純化も可能になる。
【００５４】
＜第２の実施形態＞
次に、第２の実施形態に係る不揮発性メモリ装置１及び異常検出器１０について、図５及び６を参照しながら説明する。
【００５５】
（異常検出器の構成）
図５は、第２の実施形態に係る異常検出器１０を備える不揮発性メモリ装置１の構成を示す図である。
図５に示すように、第２の実施形態に係る異常検出器１０は、第１の実施形態の構成要素に加え、不揮発性メモリ素子２０に接続された電源制御器７０をさらに備えている。従って、第２の実施形態に係る異常検出器１０が備える電源制御器７０以外の各構成要素は、特に言及する場合を除き、第１の実施形態に係る異常検出器１０の各構成要素と同様に構成され、機能する。
【００５６】
電源制御器７０は、不揮発性メモリ素子２０の電源供給を制御する。電源制御器７０は、例えば、不揮発性メモリ素子２０の電源供給端子に接続されている電源制御スイッチであってよい。電源制御器７０は、ストア／リコール処理部１１０からの指示に従い、不揮発性メモリ素子２０への電源供給を停止し、不揮発性メモリ素子２０を電源ＯＦＦにすることができる。また、電源制御器７０は、ストア／リコール処理部１１０からの指示に従い、不揮発性メモリ素子２０への電源供給を開始し、不揮発性メモリ素子２０を電源ＯＮにすることができる。
【００５７】
（異常検出器の処理フロー）
図６は、第２の実施形態に係る異常検出器１０の処理フローを示す図である。
以下、図６を参照しながら、第２の実施形態に係る異常検出器１０の処理を説明する。
【００５８】
図６に示す処理フローは、図２に示す第１の実施形態に係る処理フローとは、ステップＳ１０１がステップ２０１に変更され、ステップＳ１０４、Ｓ１０５、及びＳ１０７がステップＳ２０２〜２０３に変更されている点だけで相違する。なお、これらの相違するステップ以外は、図２に示す第１の実施形態に係る処理フローと同様である為、説明を省略する。
【００５９】
図６に示すように、処理フローが開始されると、ストア／リコール処理部１１０は、不揮発性メモリ素子２０のストアの処理又はリコールの処理が必要であるか否かを判定する（ステップＳ２０１）。不揮発性メモリ素子２０のストアの処理又はリコールの処理の少なくともいずれかが必要である場合（ステップＳ２０１のＹＥＳ）には、ストア／リコール処理部１１０は、誤り検出符号処理部１２０に第１の誤り検出符号を算出するように指示を出し、処理はステップＳ１０２に進む。
【００６０】
一方、不揮発性メモリ素子２０のストアの処理及びリコールの処理の両方が必要でない場合（ステップＳ２０１のＮＯ）には、図６に示すステップＳ１０２〜Ｓ１０３、Ｓ２０２〜Ｓ２０３、及びＳ１０８〜Ｓ１１１はスキップされ、処理がステップＳ１０６に進む。この場合、ストア／リコール処理部１１０は、不揮発性メモリ素子２０のストア及びリコールの処理がいずれも必要でない旨を異常判定部１３０に通知する。この通知に基づき、異常判定部１３０は、不揮発性メモリ素子２０の動作が正常であると判定し（Ｓ１０６）、処理フローが終了する。
【００６１】
誤り検出符号処理部１２０が、不揮発性メモリ素子２０の揮発性記憶部２１から不揮発性記憶部２２にストアする前のデータについて第１の誤り検出符号を算出し（ステップＳ１０２）、算出した第１の誤り検出符号をメインメモリ３０に保存する（ステップＳ１０３）。次に、誤り検出符号処理部１２０は、第１の誤り検出符号の保存が完了した旨をストア／リコール処理部１１０に通知し、処理がステップＳ２０２に進む。
【００６２】
誤り検出符号処理部１２０から通知を受けると、ストア／リコール処理部１１０は、不揮発性メモリ素子２０への電源供給を停止する（ステップＳ２０２）。具体的には、ストア／リコール処理部１１０は、不揮発性メモリ素子２０への電源供給を停止するように電源制御器７０に指示を出す。これにより、電源制御器７０が不揮発性メモリ素子２０への電源供給を停止する。不揮発性メモリ素子２０のコントローラ２３は、電源供給の停止をトリガにして揮発性記憶部２１から不揮発性記憶部２２にデータをストアする処理（オートストアの処理）を行う。
【００６３】
次に、ストア／リコール処理部１１０は、不揮発性メモリ素子２０への電源供給を開始する（ステップＳ２０３）。具体的には、ストア／リコール処理部１１０は、不揮発性メモリ素子２０への電源供給を開始するように電源制御器７０に指示を出す。これにより、電源制御器７０が不揮発性メモリ素子２０への電源供給を開始する。不揮発性メモリ素子２０のコントローラ２３は、電源供給の供給をトリガにして不揮発性記憶部２２から揮発性記憶部２１にデータをリコールする処理（オートリコールの処理）を行う。
【００６４】
なお、ストア／リコール処理部１１０は、上述したストアの処理（オートストアの処理）の完了後に不揮発性メモリ素子２０への電源供給を開始するように電源制御器７０に指示を出す。換言すると、不揮発性メモリ素子２０への電源供給の停止から開始までの時間が、上述したストアの処理（オートストアの処理）に必要な時間以上になるように設定されている。
【００６５】
次に、ストア／リコール処理部１１０は、誤り検出符号処理部１２０に第２の誤り検出符号を算出するように指示を出す。ストア／リコール処理部１１０の指示を受けると、誤り検出符号処理部１２０は、不揮発性メモリ素子２０の不揮発性記憶部２２から揮発性記憶部２１にリコールした後のデータについて第２の誤り検出符号を算出する（ステップＳ１０８）。
【００６６】
なお、ストア／リコール処理部１１０は、上述したリコールの処理（オートリコールの処理）の完了後に誤り検出符号処理部１２０に第２の誤り検出符号を算出するように指示を出す。換言すると、不揮発性メモリ素子２０への電源供給の開始から第２の誤り検出符号の算出処理を開始するまでの時間は、上述したリコールの処理（オートリコールの処理）に必要な時間以上に設定されている。
【００６７】
ステップＳ１０９以降の処理は、図２に示す処理フローと同様に行われる。最終的に異常判定部１３０が、不揮発性メモリ素子２０の動作が正常であると判定する（ステップＳ１０６）か、不揮発性メモリ素子２０の動作が異常であると判定し（ステップＳ１１１）、図６に示す処理フローが終了する。
【００６８】
（作用、効果）
以上のとおり、第２の実施形態に係る異常検出器１０は、不揮発性メモリ素子２０の電源供給を制御する電源制御器７０をさらに備える。
【００６９】
以上のような構成によれば、異常検出器１０は、不揮発性メモリ素子２０のオートストア及びオートリコールの機能を利用し、不揮発性メモリ素子２０の電源供給の制御を介して非常に容易に不揮発性メモリ素子２０のストアの処理及びリコールの処理を行うことができる。これにより、異常検出器１０のストア／リコール処理部１１０から不揮発性メモリ素子２０のコントローラ２３に直接的に指示を出す処理を省略できるので、ＣＰＵが行う処理を簡略化することができる。さらに、不揮発性メモリ装置１への実装が容易化される。
【００７０】
図７は異常検出器１０の最小構成を示す図である。
異常検出器１０は少なくとも上述の異常判定部１３０を備えればよい。
【００７１】
上述の異常検出器１０は内部に、コンピュータシステムを有していてよい。そして、上述した各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されていて、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われてよい。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【００７２】
上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００７３】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００７４】
（付記１）不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第１の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第２の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する異常判定部を備える異常検出器。
【００７５】
（付記２）ストアする前の前記データが、前記揮発性記憶部の全領域のデータである付記１に記載の異常検出器。
【００７６】
（付記３）ストアする前の前記データが、前記揮発性記憶部の使用領域のデータである付記１又は付記２に記載の異常検出器。
【００７７】
（付記４）ストアする前の前記データの複数の特定範囲のデータ毎に前記第１の誤り検出符号を各々算出する付記１から付記３のいずれか一項に記載の異常検出器。
【００７８】
（付記５）前記異常検出器への電源供給が切断された状態で前記第１の誤り検出符号を保持可能な誤り検出符号保持部をさらに備える付記１から付記４のいずれか一項に記載の異常検出器。
【００７９】
（付記６）前記誤り検出符号保持部は、バックアップ電源として機能するバッテリを備える付記５に記載の異常検出器。
【００８０】
（付記７）前記第１の誤り検出符号を前記異常検出器が備えるＣＰＵの汎用レジスタに保存する付記１から付記４のいずれか一項に記載の異常検出器。
【００８１】
（付記８）前記不揮発性メモリ素子の電源供給を制御する電源制御器をさらに備える付記１から付記７のいずれか一項に記載の異常検出器。
【００８２】
（付記９）付記１から付記８のいずれか一項に記載の異常検出器と、
前記不揮発性メモリ素子と、
を備える不揮発性メモリ装置。
【００８３】
（付記１０）不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第１の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第２の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する異常検出方法。
【００８４】
（付記１１）異常検出器のコンピュータを、
不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第１の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第２の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する判定手段、
として機能させる異常検出プログラム。
【符号の説明】
【００８５】
１  不揮発性メモリ装置
１０  異常検出器
１１  ＣＰＵ（プロセッサ）
２０  不揮発性メモリ素子
２１  揮発性記憶部
２２  不揮発性記憶部
２３  コントローラ
３０  メインメモリ
６０  誤り検出符号保持部
６１  ＳＲＡＭ
６２  バッテリ
７０  電源制御器
１１０  ストア／リコール処理部
１２０  誤り検出符号処理部
１３０  異常判定部
Ｒ  汎用レジスタ
【図１】
2019164864.tif 000003
【図２】
2019164864.tif 000004
【図３】
2019164864.tif 000005
【図４】
2019164864.tif 000006
【図５】
2019164864.tif 000007
【図６】
2019164864.tif 000008
【図７】
2019164864.tif 000009