(58)【調査した分野】(Int.Cl.,DB名)
不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第1の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第2の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する異常判定部と、
前記不揮発性メモリ素子を電源OFFにするタイミングで前記揮発性記憶部から前記不揮発性記憶部にストアする前の前記データをストアするように前記不揮発性メモリ素子のコントローラに指示を出し、前記不揮発性メモリ素子を電源ONにするタイミングで前記不揮発性記憶部から前記揮発性記憶部にストアした後の前記データをリコールするように前記コントローラに指示を出すストア/リコール処理部と、
CPUの汎用レジスタと、
を備え、
前記第1の誤り検出符号を前記汎用レジスタに保存する異常検出器。
前記異常検出器への電源供給が切断された状態で前記第1の誤り検出符号を保持可能な誤り検出符号保持部をさらに備える請求項1から請求項3のいずれか一項に記載の異常検出器。
前記ストア/リコール処理部からの指示に従い、前記不揮発性メモリ素子の電源供給を停止し、前記不揮発性メモリ素子を電源OFFにし、前記ストア/リコール処理部からの指示に従い、前記不揮発性メモリ素子の電源供給を開始し、前記不揮発性メモリ素子を電源ONにする電源制御器をさらに備える請求項1から請求項5のいずれか一項に記載の異常検出器。
【発明を実施するための形態】
【0012】
<第1の実施形態>
以下、第1の実施形態に係る不揮発性メモリ装置1及び異常検出器10について、
図1及び2を参照しながら説明する。
図1は、第1の実施形態に係る異常検出器10を備える不揮発性メモリ装置1の構成を示す構成図である。
図1に示すように、不揮発性メモリ装置1は、異常検出器10及び不揮発性メモリ素子20を備えている。不揮発性メモリ装置1は、外部からの要求に応じて外部からのデータを不揮発性メモリ素子20に保存したり、不揮発性メモリ素子20のデータを外部に返したりする。
【0013】
不揮発性メモリ素子20は、揮発性記憶部21、不揮発性記憶部22、コントローラ23を備える。これにより、後述するように、不揮発性メモリ素子20は、揮発性記憶部21による高速処理性能と不揮発性記憶部22による電源OFF時のデータ保持性能とを兼ね備えている。第1の実施形態では、不揮発性メモリ素子20がNVRAM(Non-Volatile Random Access Memory)である場合について説明するが、不揮発性メモリ素子20は、NVRAM以外であってもよい。
【0014】
揮発性記憶部21は、電源OFF時にデータが保持されない揮発性の記憶部であり、データの保存等の高速処理が可能である。揮発性記憶部21は、例えば、SRAM(Static Random Access Memory)であってよい。不揮発性記憶部22は、電源OFF時にもデータが保持可能な不揮発性の記憶部である。不揮発性記憶部22は、例えば、EEPROM(Electrically Erasable Programmable Read-Only Memory)であってよい。
【0015】
コントローラ23は、不揮発性メモリ素子20への電力の供給が切断される電源OFFの際に揮発性記憶部21から不揮発性記憶部22にデータをストアする。また、コントローラ23は、不揮発性メモリ素子20への電力の供給が開始される電源ONの際にストアした後のデータを不揮発性記憶部22から揮発性記憶部21にリコールする。これにより、不揮発性メモリ素子20は、電源ON時には高速処理が可能な揮発性記憶部21を用いてデータの保存等の処理を行うことができる。また、電源OFF時には不揮発性記憶部22を用いてデータを保持することができる。即ち、不揮発性メモリ素子20は、揮発性記憶部21による高速処理性能と不揮発性記憶部22による電源OFF時のデータ保持性能とを兼ね備える。
【0016】
異常検出器10は、CPU(Central Processing Unit)11、及びメインメモリ30を備えている。
CPU11は、異常検出器10の動作全体を司るプロセッサ(演算装置)である。CPU11は、不揮発性メモリ素子20に保存されたプログラムやデータをメインメモリ30に読み出し、処理を実行することで、後述する各機能を実現する。
【0017】
メインメモリ30は、CPU11のワークエリア等として用いられる揮発性のメモリである。メインメモリ30としては、例えば、RAM(Random Access Memory)が用いられる。第1の実施形態では、
図1に示すように、CPU11、メインメモリ30、及び不揮発性メモリ素子20が同じバスに接続されている場合について説明するが、CPU11、メインメモリ30、及び不揮発性メモリ素子20は、必ずしも同じバスに接続されてなくてもよい。例えば、CPU11及びメインメモリ30が第1のバスに接続され、CPU11及び不揮発性メモリ素子20が第1のバスとは異なる第2のバスに接続されていてもよい。
【0018】
第1の実施形態では、CPU11の処理に必要なプログラム及びデータが不揮発性メモリ素子20に保存されている場合について説明するが、これらのプログラム及びデータは、不揮発性メモリ素子20以外から取得されてもよい。例えば、異常検出器10は、CPU11の処理に必要なプログラムやデータを保存する記録媒体を備えていてよい。この場合には、CPU11は、記録媒体に保存されたプログラム及びデータをメインメモリ30に読み出し、処理を実行する。記録媒体としては、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、又はFlashROMが用いられる。
【0019】
また、例えば、異常検出器10は、CPU11の処理に必要なアプリケーションプログラム、及び各種データを外部装置から取得する為のインタフェースを備えていてよい。この場合には、CPU11は、インタフェースを介して外部装置と通信し、プログラム及びデータを取得してメインメモリ30に格納する。
【0020】
次に、第1の実施形態に係るCPU11の各種機能について説明する。
ストア/リコール処理部110は、不揮発性メモリ素子20を電源OFFにするタイミングで揮発性記憶部21から不揮発性記憶部22にデータをストアするように不揮発性メモリ素子20のコントローラ23に指示を出す。不揮発性メモリ素子20を電源OFFにするタイミングは、例えば、不揮発性メモリ装置1の電源を切断する前のタイミング等であってよい。
【0021】
また、ストア/リコール処理部110は、不揮発性メモリ素子20を電源ONにするタイミングで不揮発性記憶部22から揮発性記憶部21にデータをリコールするように不揮発性メモリ素子20のコントローラ23に指示を出す。不揮発性メモリ素子20を電源ONにするタイミングは、例えば、不揮発性メモリ装置1の電源を入れた後のタイミング等であってよい。
【0022】
誤り検出符号処理部120は、不揮発性メモリ素子20の動作が異常であるか否かを判定する為の判断情報として用いる誤り検出符号を算出する。第1の実施形態では、誤り検出符号処理部120は、揮発性記憶部21の全領域のデータについての誤り検出符号を算出する。また、第1の実施形態では、誤り検出符号処理部120は、誤り検出符号としてチェックサム値を算出する。具体的には、誤り検出符号処理部120は、処理対象のデータを1byte単位で区切り、複数の1byteデータを生成し、生成した1byteデータ群の総和の下位1byteをチェックサム値として算出する。なお、誤り検出符号処理部120は、その他のアルゴリズムを用いてチェックサム値を算出してよい。また、誤り検出符号処理部120は、例えば、パリティ値、CRC値(巡回冗長符号)等のチェックサム値以外の誤り検出符号を算出してよい。
【0023】
誤り検出符号処理部120は、不揮発性メモリ素子20の揮発性記憶部21から不揮発性記憶部22にストアする前のデータについて算出した第1の誤り検出符号をメインメモリ30に保存する。また、誤り検出符号処理部120は、不揮発性メモリ素子20の不揮発性記憶部22から揮発性記憶部21にリコールした後のデータについて算出した第2の誤り検出符号を後述する異常判定部130に入力する。
【0024】
異常判定部130は、
図2を用いて後述するように、誤り検出符号処理部120が算出した誤り検出符号に基づいて、不揮発性メモリ素子20の動作が異常であるか否かを判定する。具体的には、異常判定部130は、不揮発性メモリ素子20のストア及びリコールの少なくとも一方の動作が異常であるか判定する。
【0025】
(異常検出器の処理フロー)
図2は、第1の実施形態に係る異常検出器10の処理フローを示す図である。
以下、
図2を参照しながら、異常検出器10の処理の流れを詳細に説明する。
【0026】
図2に示す処理フローは、不揮発性メモリ素子20のストア又はリコールの処理が必要なタイミングで開始される。不揮発性メモリ素子20のストアの処理が必要なタイミングは、例えば、不揮発性メモリ装置1の電源を切断するタイミング、又は不揮発性メモリ素子20の揮発性記憶部21のデータが更新されたタイミング等であってよい。また、不揮発性メモリ素子20のリコールの処理が必要なタイミングは、例えば、不揮発性メモリ装置1の電源を供給するタイミング、又は不揮発性メモリ素子20の揮発性記憶部21のデータが更新されたタイミング等であってよい。
【0027】
図2に示すように、ストア/リコール処理部110は、不揮発性メモリ素子20のストアの処理が必要であるか否かを判定する(ステップS101)。不揮発性メモリ素子20のストアの処理が必要である場合(ステップS101のYES)には、ストア/リコール処理部110は、誤り検出符号処理部120に第1の誤り検出符号を算出するように指示を出す。一方、不揮発性メモリ素子20のストアの処理が必要でない場合(ステップS101のNO)には、
図2に示すステップS102〜S104はスキップされ、処理がステップS105に進む。
【0028】
ストア/リコール処理部110の指示を受けると、誤り検出符号処理部120は、不揮発性メモリ素子20の揮発性記憶部21から不揮発性記憶部22にストアする前のデータについて第1の誤り検出符号を算出する(ステップS102)。次に、誤り検出符号処理部120は、算出した第1の誤り検出符号をメインメモリ30に保存する(ステップS103)。誤り検出符号処理部120は、第1の誤り検出符号の保存が完了した旨をストア/リコール処理部110に通知する。
【0029】
誤り検出符号処理部120から通知を受けると、ストア/リコール処理部110が不揮発性メモリ素子20に指示を出し、不揮発性メモリ素子20のデータをストアする(ステップS104)。具体的には、ストア/リコール処理部110は、不揮発性メモリ素子20のコントローラ23にデータをストアするように指示を出す。これにより、不揮発性メモリ素子20のコントローラ23が揮発性記憶部21から不揮発性記憶部22にデータをストアする処理を行う。
【0030】
次に、
図2に示すように、ストア/リコール処理部110は、不揮発性メモリ素子20のリコールの処理が必要であるか否かを判定する(ステップS105)。不揮発性メモリ素子20のリコールの処理が必要である場合(ステップS105のYES)には、ストア/リコール処理部110が不揮発性メモリ素子20に指示を出し、不揮発性メモリ素子20のデータをリコールする(ステップS107)。具体的には、ストア/リコール処理部110は、不揮発性メモリ素子20のコントローラ23にデータをリコールするように指示を出す。これにより、不揮発性メモリ素子20のコントローラ23が不揮発性記憶部22から揮発性記憶部21にデータをリコールする処理を行う。
【0031】
一方、不揮発性メモリ素子20のリコールの処理が必要でない場合(ステップS105のNO)には、
図2に示すステップS107〜S111はスキップされ、処理がステップS106に進む。この場合、ストア/リコール処理部110は、不揮発性メモリ素子20のリコールの処理が必要でない旨を異常判定部130に通知する。この通知に基づき、異常判定部130は、不揮発性メモリ素子20の動作が正常であると判定し(S106)、処理フローが終了する。
【0032】
不揮発性メモリ素子20のリコールの処理(ステップS107)が完了した後、不揮発性メモリ素子20のコントローラ23がストア/リコール処理部110にリコールの処理の完了を通知する。これにより、ストア/リコール処理部110は、誤り検出符号処理部120に第2の誤り検出符号を算出するように指示を出す。ストア/リコール処理部110の指示を受けると、誤り検出符号処理部120は、不揮発性メモリ素子20の不揮発性記憶部22から揮発性記憶部21にリコールした後のデータについて第2の誤り検出符号を算出する(ステップS108)。なお、ステップS108で第2の誤り検出符号を算出するデータの範囲は、ステップS102で第1の誤り検出符号を算出したデータの範囲と同一にする。
【0033】
次に、誤り検出符号処理部120は、ステップS103の処理でメインメモリ30に保存した第1の誤り検出符号を読み出す(ステップS109)。誤り検出符号処理部120は、第1の誤り検出符号及び第2の誤り検出符号を異常判定部130に入力する。
【0034】
異常判定部130は、不揮発性メモリ素子20の揮発性記憶部21から不揮発性記憶部22にストアする前のデータの第1の誤り検出符号と、ストアした後のデータを不揮発性記憶部22から揮発性記憶部21にリコールした後のデータの第2の誤り検出符号とが不一致である否かを判定する(ステップS110)。第1の誤り検出符号と第2の誤り検出符号とが不一致である場合(ステップS110のYES)、ストアする前のデータとリコールした後のデータとが同一でないと考えられるので、異常判定部130は、不揮発性メモリ素子20の動作が異常であると判定する(ステップS111)。一方、第1の誤り検出符号と第2の誤り検出符号とが不一致でない場合(ステップS110のNO)、ストアする前のデータとリコールした後のデータとが同一であると考えられるので、異常判定部130は、不揮発性メモリ素子20の動作が正常であると判定する(ステップS106)。以上により、
図2に示す処理フローが終了する。
【0035】
(作用、効果)
以上のとおり、第1の実施形態に係る異常検出器10は、不揮発性メモリ素子20の揮発性記憶部21から不揮発性記憶部22にストアする前のデータの第1の誤り検出符号と、ストアした後のデータを不揮発性記憶部22から揮発性記憶部21にリコールした後のデータの第2の誤り検出符号とが不一致である場合に、不揮発性メモリ素子20の動作が異常であると判定する異常判定部130を備える。
【0036】
以上のような構成によれば、異常判定部130が、誤り検出符号を利用し、不揮発性メモリ素子20の揮発性記憶部21から不揮発性記憶部22にストアする前のデータと、ストアした後のデータを不揮発性記憶部22から揮発性記憶部21にリコールした後のデータとが同一であるか否かを、直接的に判定しているので、不揮発性メモリ素子20の動作の異常を確実に検出することができる。
これにより、例えば、コンデンサ等を介して間接的に不揮発性メモリ素子20の動作の異常を検出している場合において、不揮発性メモリ素子20の動作の異常がコンデンサに反映されず、不揮発性メモリ素子20の動作の異常を検出できないという検出漏れを回避できる。
【0037】
また、上述した第1の実施形態に係る異常検出器10において、誤り検出符号を算出する対象となるストアする前のデータが、揮発性記憶部21の全領域のデータである。
以上のような構成によれば、不揮発性メモリ素子20の揮発性記憶部21の全領域のデータについて誤り検出符号を利用し、不揮発性メモリ素子20の動作の異常を検出するので、揮発性記憶部21の使用してない領域に発生した異常を確実に検出できる。
【0038】
<第1の実施形態の変形実施例>
以上、第1の実施形態に係る異常検出器10について詳細に説明したが、異常検出器10の具体的な態様は、上述のものに限定されることはなく、要旨を逸脱しない範囲内において種々の設計変更等を加えることは可能である。
(第1の実施形態の第1の変形実施例)
例えば、第1の実施形態に係る異常検出器10において、第1の誤り検出符号を算出する対象となるストアする前のデータが、揮発性記憶部21の全領域のデータであるとして説明したが、第1の誤り検出符号を算出する対象となるストアする前のデータが、揮発性記憶部21の使用領域のデータであってよい。
【0039】
このようにすることで、揮発性記憶部21の不使用領域を除いた使用領域のデータだけを第1の誤り検出符号を算出する対象にすることで異常検出器10の処理負荷を低減し、不揮発性メモリ素子20の動作の異常を効率的に検出できる。
【0040】
さらに、例えば、揮発性記憶部21の複数の特定範囲のデータ毎に第1の誤り検出符号を各々算出し、算出された複数の第1の誤り検出符号をメインメモリ30に保存するようにしてもよい。この複数の特定範囲は、例えば、揮発性記憶部21をセクタサイズ毎に範囲を区切る等して規定されてよい。
【0041】
このようにすることで、不揮発性メモリ素子20の動作の異常を検出できるだけでなく、揮発性記憶部21のデータのいずれの個所に不整合が発生したかという詳細な情報を取得できる。これにより、不揮発性メモリ素子20の動作の異常の原因を効果的に調査することができる。さらに、揮発性記憶部21の複数の特定範囲のデータ毎に算出された複数の第1の誤り検出符号のうち、揮発性記憶部21の使用領域のデータについての第1の誤り検出符号だけをメインメモリ30に保存するようにしてもよい。これにより、異常検出器10の処理負荷を低減し、不揮発性メモリ素子20の動作の異常を効率的に検出できる。
【0042】
(第1の実施形態の第2の変形実施例)
次に、第1の実施形態の第2の変形実施例に係る異常検出器10について、
図3を参照しながら説明する。
【0043】
図3は、第1の実施形態の第2の変形実施例に係る異常検出器10の構成を示す図である。
図3に示すように、第1の実施形態の第2の変形実施例に係る異常検出器10は、第1の実施形態の構成要素からメインメモリ30を除いた構成になっている。また、
図3に示すように、第1の実施形態の第2の変形実施例に係る異常検出器10は、第1の実施形態の構成要素に加え、異常検出器10への電源供給が切断された状態で第1の誤り検出符号を保持可能な誤り検出符号保持部60をさらに備える。従って、第1の実施形態の第2の変形実施例に係る異常検出器10が備える誤り検出符号保持部60以外の各構成要素は、特に言及する場合を除き、第1の実施形態に係る異常検出器10の各構成要素と同様に構成され、機能する。
【0044】
誤り検出符号保持部60は、第1の誤り検出符号を保存する記憶装置としてのSRAM(Static Random Access Memory)61と、SRAM61に接続されているバッテリ62とを備える。第1の実施形態の第2の変形実施例では、第1の実施形態に係るメインメモリ30の機能をSRAM61が備えている。これにより、第1の実施形態に係るメインメモリ30の動作は、SRAM61が行う。例えば、第1の実施形態の第2の変形実施例では、
図2に示す処理フローのステップS103において、メインメモリ30ではなく、SRAM61に第1の誤り検出符号を保存する。また、
図2に示す処理フローのステップS109において、メインメモリ30ではなく、SRAM61から第1の誤り検出符号を読み出す。SRAM61に接続されているバッテリ62は、バックアップ電源として機能する。バッテリ62は、異常検出器10への電源供給が切断された状態でSRAM61に電源を供給することができる。これにより、例えば、不揮発性メモリ装置1への電源供給が障害等により意図せずに切断され、異常検出器10への電源供給が切断された状態でも誤り検出符号保持部60は、SRAM61に保存された第1の誤り検出符号を保持可能である。
【0045】
以上のとおり、第1の実施形態の第2の変形実施例に係る異常検出器10は、異常検出器10への電源供給が切断された状態で第1の誤り検出符号を保持可能な誤り検出符号保持部60をさらに備える。
【0046】
以上のような構成によれば、例えば、不揮発性メモリ装置1への電源供給が障害等により意図せずに切断され、異常検出器10への電源供給が切断された状態が発生しても、誤り検出符号保持部60が第1の誤り検出符号を保持し、第1の誤り検出符号の消失を防止できる。これにより、異常検出器10の異常判定部130は、異常検出器10への電源供給が切断された状態が発生しても、異常検出器10への電源供給が再開された後に、誤り検出符号保持部60が保持した第1の誤り検出符号を用いて不揮発性メモリ素子20の動作の異常を確実に検出することができる。
なお、第1の実施形態の第2の変形実施例に係る誤り検出符号保持部60を構成するSRAM61は、第1の誤り検出符号だけを保存可能な最小容量であってよい。また、誤り検出符号保持部60が備える記憶装置は、SRAM61以外であってよい。さらに、誤り検出符号保持部60が備える記憶装置を別個に設けず、第1の実施形態に係るメインメモリ30を用いてもよい。
【0047】
さらに、第1の実施形態の第2の変形実施例に係る異常検出器10において、誤り検出符号保持部60は、バックアップ電源として機能するバッテリ62を備える。
以上のような構成によれば、バッテリ62を用いることでバックアップ電源を小型化することができるので、誤り検出符号保持部60を異常検出器10に容易に実装することができる。さらに、誤り検出符号保持部60を備える異常検出器10を小型化することができる。従って、異常検出器10を備える不揮発性メモリ装置1の小型化及び単純化も可能になる。
【0048】
(第1の実施形態の第3の変形実施例)
次に、第1の実施形態の第3の変形実施例に係る異常検出器10について、
図4を参照しながら説明する。
【0049】
図4は、第1の実施形態の第3の変形実施例に係る異常検出器10の構成を示す図である。
図4に示すように、第1の実施形態の第3の変形実施例に係る異常検出器10は、第1の実施形態の構成要素からメインメモリ30を除いた構成になっている。従って、第1の実施形態の第3の変形実施例に係る異常検出器10の各構成要素は、特に言及する場合を除き、第1の実施形態に係る異常検出器10の各構成要素と同様に構成され、機能する。
【0050】
第1の実施形態の第3の変形実施例では、第1の実施形態に係るメインメモリ30の機能をCPU11が備えている。これにより、第1の実施形態に係るメインメモリ30の動作は、CPU11が行う。
【0051】
第1の実施形態の第3の変形実施例に係る異常検出器10は、第1の誤り検出符号をCPU11の汎用レジスタRに保存するように構成されている。具体的には、
図2に示す処理フローのステップS103において、メインメモリ30ではなく、汎用レジスタRに第1の誤り検出符号を保存する。また、
図2に示す処理フローのステップS109において、メインメモリ30ではなく、汎用レジスタRから第1の誤り検出符号を読み出す。
【0052】
以上のとおり、第1の実施形態の第3の変形実施例に係る異常検出器10は、第1の誤り検出符号を異常検出器10が備えるCPU11の汎用レジスタRに保存する。
【0053】
以上のような構成によれば、異常検出器10にメインメモリ30を設けずに済むので、異常検出器10を小型化することができる。また、異常検出器10の構成を単純化することができる。従って、異常検出器10を備える不揮発性メモリ装置1の小型化及び単純化も可能になる。
【0054】
<第2の実施形態>
次に、第2の実施形態に係る不揮発性メモリ装置1及び異常検出器10について、
図5及び6を参照しながら説明する。
【0055】
(異常検出器の構成)
図5は、第2の実施形態に係る異常検出器10を備える不揮発性メモリ装置1の構成を示す図である。
図5に示すように、第2の実施形態に係る異常検出器10は、第1の実施形態の構成要素に加え、不揮発性メモリ素子20に接続された電源制御器70をさらに備えている。従って、第2の実施形態に係る異常検出器10が備える電源制御器70以外の各構成要素は、特に言及する場合を除き、第1の実施形態に係る異常検出器10の各構成要素と同様に構成され、機能する。
【0056】
電源制御器70は、不揮発性メモリ素子20の電源供給を制御する。電源制御器70は、例えば、不揮発性メモリ素子20の電源供給端子に接続されている電源制御スイッチであってよい。電源制御器70は、ストア/リコール処理部110からの指示に従い、不揮発性メモリ素子20への電源供給を停止し、不揮発性メモリ素子20を電源OFFにすることができる。また、電源制御器70は、ストア/リコール処理部110からの指示に従い、不揮発性メモリ素子20への電源供給を開始し、不揮発性メモリ素子20を電源ONにすることができる。
【0057】
(異常検出器の処理フロー)
図6は、第2の実施形態に係る異常検出器10の処理フローを示す図である。
以下、
図6を参照しながら、第2の実施形態に係る異常検出器10の処理を説明する。
【0058】
図6に示す処理フローは、
図2に示す第1の実施形態に係る処理フローとは、ステップS101がステップ201に変更され、ステップS104、S105、及びS107がステップS202〜203に変更されている点だけで相違する。なお、これらの相違するステップ以外は、
図2に示す第1の実施形態に係る処理フローと同様である為、説明を省略する。
【0059】
図6に示すように、処理フローが開始されると、ストア/リコール処理部110は、不揮発性メモリ素子20のストアの処理又はリコールの処理が必要であるか否かを判定する(ステップS201)。不揮発性メモリ素子20のストアの処理又はリコールの処理の少なくともいずれかが必要である場合(ステップS201のYES)には、ストア/リコール処理部110は、誤り検出符号処理部120に第1の誤り検出符号を算出するように指示を出し、処理はステップS102に進む。
【0060】
一方、不揮発性メモリ素子20のストアの処理及びリコールの処理の両方が必要でない場合(ステップS201のNO)には、
図6に示すステップS102〜S103、S202〜S203、及びS108〜S111はスキップされ、処理がステップS106に進む。この場合、ストア/リコール処理部110は、不揮発性メモリ素子20のストア及びリコールの処理がいずれも必要でない旨を異常判定部130に通知する。この通知に基づき、異常判定部130は、不揮発性メモリ素子20の動作が正常であると判定し(S106)、処理フローが終了する。
【0061】
誤り検出符号処理部120が、不揮発性メモリ素子20の揮発性記憶部21から不揮発性記憶部22にストアする前のデータについて第1の誤り検出符号を算出し(ステップS102)、算出した第1の誤り検出符号をメインメモリ30に保存する(ステップS103)。次に、誤り検出符号処理部120は、第1の誤り検出符号の保存が完了した旨をストア/リコール処理部110に通知し、処理がステップS202に進む。
【0062】
誤り検出符号処理部120から通知を受けると、ストア/リコール処理部110は、不揮発性メモリ素子20への電源供給を停止する(ステップS202)。具体的には、ストア/リコール処理部110は、不揮発性メモリ素子20への電源供給を停止するように電源制御器70に指示を出す。これにより、電源制御器70が不揮発性メモリ素子20への電源供給を停止する。不揮発性メモリ素子20のコントローラ23は、電源供給の停止をトリガにして揮発性記憶部21から不揮発性記憶部22にデータをストアする処理(オートストアの処理)を行う。
【0063】
次に、ストア/リコール処理部110は、不揮発性メモリ素子20への電源供給を開始する(ステップS203)。具体的には、ストア/リコール処理部110は、不揮発性メモリ素子20への電源供給を開始するように電源制御器70に指示を出す。これにより、電源制御器70が不揮発性メモリ素子20への電源供給を開始する。不揮発性メモリ素子20のコントローラ23は、電源供給の供給をトリガにして不揮発性記憶部22から揮発性記憶部21にデータをリコールする処理(オートリコールの処理)を行う。
【0064】
なお、ストア/リコール処理部110は、上述したストアの処理(オートストアの処理)の完了後に不揮発性メモリ素子20への電源供給を開始するように電源制御器70に指示を出す。換言すると、不揮発性メモリ素子20への電源供給の停止から開始までの時間が、上述したストアの処理(オートストアの処理)に必要な時間以上になるように設定されている。
【0065】
次に、ストア/リコール処理部110は、誤り検出符号処理部120に第2の誤り検出符号を算出するように指示を出す。ストア/リコール処理部110の指示を受けると、誤り検出符号処理部120は、不揮発性メモリ素子20の不揮発性記憶部22から揮発性記憶部21にリコールした後のデータについて第2の誤り検出符号を算出する(ステップS108)。
【0066】
なお、ストア/リコール処理部110は、上述したリコールの処理(オートリコールの処理)の完了後に誤り検出符号処理部120に第2の誤り検出符号を算出するように指示を出す。換言すると、不揮発性メモリ素子20への電源供給の開始から第2の誤り検出符号の算出処理を開始するまでの時間は、上述したリコールの処理(オートリコールの処理)に必要な時間以上に設定されている。
【0067】
ステップS109以降の処理は、
図2に示す処理フローと同様に行われる。最終的に異常判定部130が、不揮発性メモリ素子20の動作が正常であると判定する(ステップS106)か、不揮発性メモリ素子20の動作が異常であると判定し(ステップS111)、
図6に示す処理フローが終了する。
【0068】
(作用、効果)
以上のとおり、第2の実施形態に係る異常検出器10は、不揮発性メモリ素子20の電源供給を制御する電源制御器70をさらに備える。
【0069】
以上のような構成によれば、異常検出器10は、不揮発性メモリ素子20のオートストア及びオートリコールの機能を利用し、不揮発性メモリ素子20の電源供給の制御を介して非常に容易に不揮発性メモリ素子20のストアの処理及びリコールの処理を行うことができる。これにより、異常検出器10のストア/リコール処理部110から不揮発性メモリ素子20のコントローラ23に直接的に指示を出す処理を省略できるので、CPUが行う処理を簡略化することができる。さらに、不揮発性メモリ装置1への実装が容易化される。
【0070】
図7は異常検出器10の最小構成を示す図である。
異常検出器10は少なくとも上述の異常判定部130を備えればよい。
【0071】
上述の異常検出器10は内部に、コンピュータシステムを有していてよい。そして、上述した各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されていて、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われてよい。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【0072】
上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0073】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0074】
(付記1)不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第1の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第2の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する異常判定部を備える異常検出器。
【0075】
(付記2)ストアする前の前記データが、前記揮発性記憶部の全領域のデータである付記1に記載の異常検出器。
【0076】
(付記3)ストアする前の前記データが、前記揮発性記憶部の使用領域のデータである付記1又は付記2に記載の異常検出器。
【0077】
(付記4)ストアする前の前記データの複数の特定範囲のデータ毎に前記第1の誤り検出符号を各々算出する付記1から付記3のいずれか一項に記載の異常検出器。
【0078】
(付記5)前記異常検出器への電源供給が切断された状態で前記第1の誤り検出符号を保持可能な誤り検出符号保持部をさらに備える付記1から付記4のいずれか一項に記載の異常検出器。
【0079】
(付記6)前記誤り検出符号保持部は、バックアップ電源として機能するバッテリを備える付記5に記載の異常検出器。
【0080】
(付記7)前記第1の誤り検出符号を前記異常検出器が備えるCPUの汎用レジスタに保存する付記1から付記4のいずれか一項に記載の異常検出器。
【0081】
(付記8)前記不揮発性メモリ素子の電源供給を制御する電源制御器をさらに備える付記1から付記7のいずれか一項に記載の異常検出器。
【0082】
(付記9)付記1から付記8のいずれか一項に記載の異常検出器と、
前記不揮発性メモリ素子と、
を備える不揮発性メモリ装置。
【0083】
(付記10)不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第1の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第2の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する異常検出方法。
【0084】
(付記11)異常検出器のコンピュータを、
不揮発性メモリ素子の揮発性記憶部から不揮発性記憶部にストアする前のデータの第1の誤り検出符号と、ストアした後の前記データを前記不揮発性記憶部から前記揮発性記憶部にリコールした後のデータの第2の誤り検出符号とが不一致である場合に、前記不揮発性メモリ素子の動作が異常であると判定する判定手段、
として機能させる異常検出プログラム。