(57)【特許請求の範囲】
【請求項１】
データを一括して消去可能な単位である所定サイズのブロック（４Ｂ）を複数有し、更新された複数種類のデータが、前記種類を示すＩＤと共に空き領域に書き込まれて記憶される不揮発性メモリ（４）を内蔵するマイクロコンピュータ（１）であって、
電源電圧が、前記不揮発性メモリへの書込みが不能となるレベルに低下したことを検出すると、低電圧検出信号を出力する低電圧検出回路（８）と、
前記低電圧検出信号により書込み中フラグがセットされる、不揮発性の書込み中フラグメモリ（９Ｗ）と、
この書込み中フラグメモリに対する前記書込み中フラグのセットの可否を制御する制御ロジック（１０Ｗ）と、
前記不揮発性メモリの各ブロックに対応して設けられ、現在データの書込みが行われているブロックを示すため、所定値が書き込まれるステータス領域と、
書込み対象とするブロックに書込みを行う際に、前記制御ロジックにより前記フラグをセット可能な状態としてから、前記ブロックにＩＤ及びデータの書込みを行い、その後、前記制御ロジックにより前記フラグをセット不能な状態とする書込み処理手段（２）と、
リセットが解除されると、前記書込み中フラグメモリを読み出し、書込み中フラグがセットされていると、最後に書込みが行われていたＩＤ及びデータを無効化し、その後に前記書込み中フラグメモリを消去する書込みチェック手段（２）とを備えることを特徴とするマイクロコンピュータ。
【請求項２】
前記書込み中フラグメモリと、前記制御ロジックとを、前記不揮発性メモリの内部に配置したことを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記書込み中フラグメモリ及び前記制御ロジックにアクセスするためのアドレスを、前記不揮発性メモリに割り当てられるアドレスの先頭部分に設定したことを特徴とする請求項２記載のマイクロコンピュータ。
【請求項４】
前記書込み中フラグメモリと、前記制御ロジックとを、前記不揮発性メモリが備える各ブロックに対応して設けたことを特徴とする請求項１から３の何れか一項に記載のマイクロコンピュータ。
【請求項５】
各ブロックに対応する書込み中フラグメモリ及び前記制御ロジックにアクセスするためのアドレスを、それぞれ各ブロックに割り当てられるアドレスの先頭部分に設定したことを特徴とする請求項１又は２を引用する請求項４記載のマイクロコンピュータ。
【請求項６】
前記低電圧検出信号により消去中フラグがセットされる、不揮発性の消去中フラグメモリ（９Ｅ）と、
この消去中フラグメモリに対する前記消去中フラグのセットの可否を制御する制御ロジック（１０Ｅ）と、
消去対象とするブロックを消去する際に、前記制御ロジックにより前記フラグをセット可能な状態としてから、前記ブロックを消去し、その後、前記制御ロジックにより前記フラグをセット不能な状態とする消去処理手段（２）と、
リセットが解除されると、前記消去中フラグメモリを読み出し、消去中フラグがセットされていると、最後に書込みが行われていたブロックの次に書込み対象となる予定であったブロックを消去して、その後に前記消去中フラグメモリを消去する消去チェック手段（２）とを備えることを特徴とする請求項１から５の何れか一項に記載のマイクロコンピュータ。
【請求項７】
前記消去中フラグメモリと、当該フラグメモリに対応する制御ロジックとを、前記不揮発性メモリの内部に配置したことを特徴とする請求項６記載のマイクロコンピュータ。
【請求項８】
前記消去中フラグメモリ及び前記制御ロジックにアクセスするためのアドレスを、前記不揮発性メモリに割り当てられるアドレスの先頭部分に設定したことを特徴とする請求項７記載のマイクロコンピュータ。
【請求項９】
前記消去中フラグメモリと、当該フラグメモリに対応する制御ロジックとを、前記不揮発性メモリが備える各ブロックに対応して設けたことを特徴とする請求項６又は７記載のマイクロコンピュータ。
【請求項１０】
各ブロックに対応する消去中フラグメモリ及び前記制御ロジックにアクセスするためのアドレスを、それぞれ各ブロックに割り当てられるアドレスの先頭部分に設定したことを特徴とする請求項９記載のマイクロコンピュータ。
【請求項１１】
最初に、前記消去チェック手段により消去チェックを行い、続いて、前記書込みチェック手段により書込みチェックを行うことを特徴とする請求項６から１０の何れか一項に記載のマイクロコンピュータ。
【請求項１２】
データを一括して消去可能な単位である所定サイズのブロックを複数有し、更新された複数種類のデータが、前記種類を示すＩＤと共に空き領域に書き込まれて記憶される不揮発性メモリのブロック管理方法であって、
前記不揮発性メモリの各ブロックに対応して設けられているステータス領域に、現在データの書込みが行われているブロックを示すために所定値を書込み、
書込み対象とするブロックに書込みを行う際に、不揮発性の書込み中フラグメモリに、電源電圧が、前記不揮発性メモリへの書込みが不能となるレベルに低下したことを検出した際に出力される低電圧検出信号による書込み中フラグのセットを可能な状態としてから、前記ブロックにＩＤ及びデータの書込みを行い、その後、前記フラグをセット不能な状態にして、
リセットが解除されると、前記書込み中フラグメモリを読み出し、書込み中フラグがセットされていると、最後に書込みが行われていたＩＤ及びデータを無効化し、その後に前記書込み中フラグメモリを消去することを特徴とする不揮発性メモリのブロック管理方法。
【請求項１３】
前記書込み中フラグメモリを、前記不揮発性メモリが備える各ブロックに対応して設けておき、
リセットが解除されると、各ブロックに対応する書込み中フラグメモリをそれぞれ読み出して、書込み中フラグがセットされているか否かを判断することを特徴とする請求項１２記載の不揮発性メモリのブロック管理方法。
【請求項１４】
消去対象とするブロックを消去する際に、不揮発性の消去中フラグメモリに、前記低電圧検出信号による消去中フラグのセットを可能な状態としてから前記ブロックを消去し、その後、前記フラグをセット不能な状態にして、
リセットが解除されると、前記消去中フラグメモリを読み出し、消去中フラグがセットされていると、最後に書込みが行われていたブロックの次に書込み対象となる予定であったブロックを消去して、その後に前記消去中フラグメモリを消去することを特徴とする請求項１２又は１３記載の不揮発性メモリのブロック管理方法。
【請求項１５】
前記消去中フラグメモリを、前記不揮発性メモリが備える各ブロックに対応して設けておき、
リセットが解除されると、各ブロックに対応する消去中フラグメモリをそれぞれ読み出して、消去中フラグがセットされているか否かを判断することを特徴とする請求項１４記載の不揮発性メモリのブロック管理方法。
【請求項１６】
最初に、消去中フラグがセットされているか否かを判断し、
続いて、書込み中フラグがセットされているか否かを判断することを特徴とする請求項１４又は１５記載の不揮発性メモリのブロック管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを一括して消去可能な単位である所定サイズのブロックを複数有してなる不揮発性メモリを内蔵するマイクロコンピュータ，及び前記不揮発性メモリのブロック管理方法に関する。
【背景技術】
【０００２】
近年、不揮発性半導体メモリの一種であるフラッシュメモリを内蔵したマイクロコンピュータが使用されており、このフラッシュメモリは、例えば、マイクロコンピュータのＣＰＵ（Central Processing Unit）が使用するユーザプログラムを格納する用途や、種々のデータを書き込んで格納しておく用途に用いられる。ここで、フラッシュメモリは、１ワード毎の書込みが可能であるが、消去は複数ワードからなるブロックを単位として一括で消去することが必要となる。
【０００３】
ブロック消去回数が増えるとフラッシュメモリの寿命を縮めることになるため、フラッシュメモリに記憶されているデータが更新される場合に、極力消去を行わないようにする
技術が提案されている。例えば、特許文献１には、データをＩＤ単位で管理し、更新されたデータのみを追記することで消去回数を低減する技術が開示されている。
【０００４】
ここで、フラッシュメモリへのデータの書込み中に、例えば電源の瞬断等によるリセットが発生すると、書込みデータが不正な値となったり、リテンションが長く維持できなくなるといった問題が発生する。例えば大容量のコンデンサを配置することで、瞬断が発生しても書込み可能な電圧を維持する対策も考えられる。しかし、製品のコスト及びサイズの増大というデメリットがあり、実際には採用しがたい。
【０００５】
一部のフラッシュメモリには、ブランクチェック機能やベリファイ機能を備えているものがあり、それらの機能を利用すれば上記問題に対処できるが、当該機能を備えていないフラッシュメモリには別の対策が必要となる。例えば、図１１に示すように、各データの書込みの開始を行う前に所定値を書き込むチェック領域と、ＩＤ及びデータを書き込んだ後に所定値を書き込むチェック領域とを設ける。そして、これらのチェック領域にそれぞれ所定値が書き込まれているか否かを確認することで、書込みが適正に行われているかを判定することが考えられる。
【０００６】
また、特許文献２には、フラッシュメモリへのプログラムの書込み中に電源の瞬断が発生すると、ＥＥＰＲＯＭなどの補助メモリに、フラグや書込み中断した位置，プログラムの種類などを記憶し、電源復旧後に再起動すると、上記ＥＥＰＲＯＭの情報を読み出して中断した位置から書込みを再開する技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−１６４４９３号公報
【特許文献２】特開２０１０−９１６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、図１１に示す方式では、１つのＩＤ及びデータ（データレコード）について２つのチェック領域が必要となり、それらにより記憶領域が侵食されるため、フラッシュメモリの使用効率が低下する。また、特許文献２の技術では、書込み対象がプログラムであるため、それに対応した多くの情報をＥＥＰＲＯＭに記憶させる必要がある。書込み対象が複数種類のデータである場合には直ちに適用できず、必要かつ効率的な情報を記憶させることができない。
【０００９】
本発明は上記事情に鑑みてなされたものであり、その目的は、不揮発性メモリに複数のデータを更新しつつ記憶させる際に、書込みが失敗したデータを効率的に管理できるマイクロコンピュータ，及び不揮発性メモリのブロック管理方法を提供する。
【課題を解決するための手段】
【００１０】
請求項１記載のマイクロコンピュータによれば、低電圧検出回路は、電源電圧が不揮発性メモリへの書込みが不能となるレベルに低下したことを検出すると、低電圧検出信号を出力する。また、低電圧検出信号により書込み中フラグがセットされる、不揮発性の書込み中フラグメモリを備える。このフラッシュメモリは、１ビットの記憶素子であれば良い。
【００１１】
そして、書込み処理手段は、書込み対象ブロックに書込みを行う際に、制御ロジックにより前記フラグをセット可能な状態としてから、当該ブロックにＩＤ及びデータの書込みを行う。その後、制御ロジックにより前記フラグをセット不能な状態とする。また、書込みチェック手段は、リセットが解除されると、書込み中フラグメモリを読み出し、書込み中フラグがセットされていると、最後に書込みが行われていたＩＤ及びデータを無効化し、その後に書込み中フラグメモリを消去する（フラグのリセット）。
【００１２】
このように構成すれば、あるブロックに書込みを行っている途中に電源電圧が低下すると書込み中フラグがセットされる。そして、書込みチェック手段は、リセットが解除された際に、書込み中フラグのセットの有無によりチェックを行うことができ、前記フラグがセットされていれば、最後に書込みが行われていたＩＤ及びデータを無効化する。
【００１３】
ここで、「最後に書込みが行われていたＩＤ及びデータ」の特定は、ブロックの有効性を示すステータス領域を参照することで、最後に書込みが行われていたブロックが特定できる。そして、書込みがアドレスの昇順で行われるとすれば、当該ブロックの最大アドレスから降順で、消去状態のデータ値と異なる値のデータが記憶されているレコードをサーチすれば良い。したがって、１ビットの記憶素子である書込み中フラグメモリを用意すれば、書込みチェックを行うことができるので、不揮発性メモリの記憶領域を効率的に使用できる。
【００１４】
請求項４記載のマイクロコンピュータによれば、書込み中フラグメモリと、制御ロジックとを、不揮発性メモリが備える各ブロックに対応して設ける。すなわち、書込み中フラグメモリが、不揮発性メモリに対して１つだけ用意されている場合でも、請求項１について述べたようにステータス領域を参照すれば、最後に書込みが行われていたデータレコードを特定できる。しかしながら、前記ステータス領域への書込み，消去自体が、電源電圧の低下により失敗している可能性も否定できない。したがって、書込み中フラグメモリと制御ロジックとを各ブロックに対応して設ければ、書込みチェックをより確実に行うことができる。
【００１５】
請求項６記載のマイクロコンピュータによれば、低電圧検出信号により消去中フラグがセットされる、不揮発性の消去中フラグメモリを設ける。消去処理手段は、ブロックを消去する際に、制御ロジックにより前記フラグをセット可能な状態としてから前記ブロックを消去し、その後、制御ロジックによりフラグをセット不能な状態とする。そして、消去チェック手段は、リセットが解除されると、消去中フラグメモリを読み出し、消去中フラグがセットされていると、最後に書込みが行われていたブロックの次に書込み対象となる予定であったブロックを消去して、その後に消去中フラグメモリを消去する。
【００１６】
このように構成すれば、あるブロックを消去している途中に電源電圧が低下すると消去中フラグがセットされるので、消去チェック手段は、リセットが解除された際に、消去中フラグのセットの有無によりチェックを行うことができる。そして、消去されるブロックは、最後に書込みが行われていたブロックの次に書込み対象となるものであるから、ステータス領域を参照すればそのブロックを特定でき、消去が不完全だったブロックを完全に消去できる。
【００１７】
請求項１１記載のマイクロコンピュータによれば、最初に、消去チェック手段により消去チェックを行い、続いて、書込みチェック手段により書込みチェックを行う。このように構成すれば、先に消去チェックを行うことで、電源電圧の低下により消去が失敗したブロックを、有効なブロックと誤判定する可能性を極力低下させる。その後、有効と判断したブロックに対して、最後に書込みが行われていたデータレコードを検索することで、全てのブロックを検索することなく効率的に処理することが可能である。
【図面の簡単な説明】
【００１８】
【図１】第１実施形態であり、リセット解除後にＣＰＵが実行する処理を示すフローチャート
【図２】フラッシュメモリのブロックへの書込み処理を示すフローチャート
【図３】フラッシュメモリのブロックの消去処理を示すフローチャート
【図４】マイクロコンピュータの構成を示す機能ブロック図
【図５】フラッシュメモリ内における各ブロック及びフラグメモリを示す図
【図６】各フラグメモリに対応した制御ロジックの構成を示す図
【図７】フラッシュメモリ内における先頭ブロックのアドレスマップの一例を示す図
【図８】ブロック管理の一例を示す図
【図９】各データレコードについて有効／無効を判定するための領域を付与した場合で、（ａ）は第１実施形態、（ｂ）は従来技術の例を示す図
【図１０】第２実施形態を示す図１相当図
【図１１】従来技術を説明する図
【発明を実施するための形態】
【００１９】
（第１実施形態）
以下、第１実施形態について図１から図９を参照して説明する。図４に示すように、マイクロコンピュータ１は、ＣＰＵ２（書込み処理手段，書込みチェック手段，消去処理手段，消去チェック手段），プログラム記憶用のフラッシュメモリ（FLASH）３，データ記憶用のフラッシュメモリ４（不揮発性半導体メモリ），ＲＡＭ（Random Access Memory）５，周辺回路６，フラッシュ用電源７，低電圧検出回路８を備えている。ＣＰＵ２は、フラッシュメモリ３からプログラムデータを読み出して実行することで、フラッシュメモリ４のデータ書込み及び書き換え（更新）、ブロックの消去及び書込み対象ブロックの切替えなどを制御するメモリコントローラの機能を有している。
【００２０】
ＲＡＭ５はＣＰＵ２のメインメモリであり、データの書込みや書き換えなどの際に、データやＣＰＵ２の演算結果などを一時的に保持する作業領域として用いられる。フラッシュメモリ４は、内部に記憶部として、複数のブロックに分けられているメモリセルを有している。そして、データの種類を示すＩＤとデータとをワンセットのレコードとして書き込む。
【００２１】
フラッシュ用電源７は、外部より供給される電源を変圧・安定化させてフラッシュメモリ３，４に供給する。低電圧検出回路８は、フラッシュ用電源電圧が低下して、書込みが可能なレベル（例えば１４Ｖ）を下回ると、低電圧検出信号をフラッシュメモリ４に出力する。その判定閾値は、例えば１０Ｖに設定される。フラッシュメモリ４には、フラグメモリ９（Ｗ，Ｅ）及び制御ロジック１０（Ｗ，Ｅ）を内蔵されている。低電圧検出信号は、制御ロジック１０を介してフラグメモリ９に書込み（フラグのセット）を行うために使用される。
【００２２】
図５に示すように、フラッシュメモリ４は、複数のブロック４Ｂ（１），４Ｂ（２），…を備えている。１ブロックの容量は、例えば２ｋバイト程度である。そして、各ブロック４Ｂごとに、それぞれ１ビットの書込み中フラグメモリ９Ｗ，消去中メモリフラグ９Ｅが配置されている。これらのフラグメモリ９は、フラッシュメモリ４と同様に不揮発性のメモリである。ただし、フラグメモリ９の書込み可能電圧は、フラッシュメモリ４の通常のメモリセルの書込み可能電圧よりも低く設定されており、例えば８Ｖ程度となっている。
【００２３】
書込み中フラグメモリ９Ｗ，消去中メモリフラグ９Ｅに対するデータの書込み（フラグのセット）は、図６に示すように、制御ロジック１０（Ｗ，Ｅ）を介して行われる。制御ロジック１０は、ＡＮＤゲート１０ａと、レジスタ１０ｂとで構成されている。ＡＮＤゲート１０ａの一方の入力端子には、低電圧検出信号が与えられており、他方の入力端子には、レジスタ１０ｂの出力端子が接続されている。
【００２４】
レジスタ１０Ｗｂ，レジスタ１０Ｅｂには、それぞれフラッシュメモリ４内に設定されている所定領域に対してデータ「１，０」の書込みが行われると、そのデータ値が保持される。すなわち、レジスタ１０Ｗｂ，レジスタ１０Ｅｂに「１」が保持されている間に（書込み，消去開始）ハイレベルの低電圧検出信号が出力されると、書込み中フラグメモリ９Ｗ，消去中メモリフラグ９Ｅにそれぞれフラグがセットされる。一方、レジスタ１０Ｗｂ，１０Ｅｂに「０」が保持されている間は、フラグメモリ９Ｗ，９Ｅにフラグはセットされない。
【００２５】
制御ロジック１０（Ｗ，Ｅ）のレジスタ１０ｂに書込みを行うためのアドレス，及びフラグメモリ９（Ｗ，Ｅ）のフラグをリセットするためのアドレスは、各ブロック４Ｂの先頭に配置されている。例えば、図７に示すように、１つのデータレコードが１６バイトであれば、０ｘ００００〜０ｘ００１Ｆまで（先頭部分）を前記アドレス領域とする。但し、実際に使用するのは、それらのうち先頭の３バイトだけであり、例えば０ｘ００００が書込み中フラグメモリ９Ｗに、次の０ｘ０００１が消去中フラグメモリ９Ｅに割り当てられている。
【００２６】
例えばアドレス０ｘ００００（第１バイト）の各ビットには、以下のような機能が割り当てられている。
ビット０：書込み中フラグメモリ９Ｗのフラグの読み出し／リセット
１：レジスタ１０ｂにデータ「１／０」書込み
そして、ビット２〜７は不使用である。また、アドレス０ｘ０００１（第２バイト）のビット０，１には、消去中フラグメモリ９Ｅに対応して上記と同じ機能が割り当てられている。
【００２７】
また、アドレス０ｘ０００２（第３バイト）はステータス領域として使用される。このステータス領域は、本実施形態のように、更新されたデータを各ブロックに順次追記する使用形態において一般的に使用されるもので、現在データの書込みが行われているブロック４Ｂ（有効ブロック）を判別するため、消去された後の新たなブロック４Ｂに最初に書込みを行う際に、所定値（例えば、「５５」，「ＡＡ」等）が書き込まれる。そして、上述のように各ブロック４Ｂの容量が２ｋバイトであれば、次のブロックの先頭アドレスは０ｘ０４００，その次のブロックの先頭アドレスは０ｘ０８００となる。
【００２８】
次に、本実施形態の作用について図１から図３，図７〜図９を参照して説明する。図２に示すように、ＣＰＵ２がフラッシュメモリ４の書込み対象のブロック４Ｂにデータレコードを書き込む場合は、レジスタ１０Ｗｂに「１」を書き込んでセットし（Ｓ１）、書込み対象アドレスにＩＤ及びデータをそれぞれ書き込む（Ｓ２，Ｓ３）。それから、レジスタ１０Ｗｂに「０」を書き込んでクリアする（Ｓ４）。図２に示す処理が、書込み処理手段に対応する。
【００２９】
また、図３に示すように、ＣＰＵ２がフラッシュメモリ４の消去対象のブロック４Ｂを消去する場合は、レジスタ１０Ｅｂに「１」を書き込んでセットしてから（Ｓ１１）消去する（Ｓ１２）。次に、レジスタ１０Ｅｂに「０」を書き込んでクリアする（Ｓ１３）。したがって、ステップＳ２及びＳ３，又はステップＳ１２の実行中に、例えば電源の瞬断等によりフラッシュ電源７の電圧が低下して電圧低下検出信号が出力されると、フラグメモリ９Ｗ，９Ｅにそれぞれ書込み中フラグ，消去中フラグがセットされる。図３に示す処理が、消去処理手段に対応する。
【００３０】
図１に示すように、電源が復帰してリセットが解除されると、ＣＰＵ２は、各ブロックの消去中フラグメモリ９Ｅを読み出す（Ｓ２１）。消去中フラグメモリ９Ｅに消去中フラグがセットされていなければ（書込み無し，Ｓ２２：ＮＯ）ステップＳ２５に移行して有効ブロック判定を行う（後述）。一方、消去中フラグがセットされていれば（Ｓ２２：ＹＥＳ）そのブロック４Ｂを消去し（Ｓ２３）、消去中フラグメモリ９Ｅをリセット（消去）する（Ｓ２４）。尚、ステップＳ２１〜Ｓ２４が消去チェック手段に対応する。
【００３１】
続くステップＳ２５における有効ブロック判定は、上述したステータス領域をチェックして、「書込み有効」なブロック４Ｂについて以降のステップＳ２６の処理を行う。図８に一例を示すと、ＩＤ０〜ＩＤ３の４種類のデータがあり、それらが更新されると書込み中のブロック４Ｂの空き領域に書き込んで行く。例えばブロック４Ｂ（１）に空き領域がなくなると、次にブロック４Ｂ（２）を消去してから書込みを行うが（この時、ブロック４Ｂ（２）のステータス領域に所定値が書き込まれる）、ブロック４Ｂ（１）で最後に書込みが行われたのはＩＤ１のデータである。
【００３２】
そこで、他のＩＤ０，２，３のデータについては、それより過去に書き込まれているデータを拾い、次にブロック４Ｂ（２）の先頭領域に転送する。ブロック４Ｂ（２）の空き領域がなくなった時点で最後に書込みが行われたのはＩＤ３のデータである。したがって、次にブロック４Ｂ（３）を消去してから書込みを行う際には、ＩＤ０〜ＩＤ３の最新のデータをブロック４Ｂ（２）の先頭領域に転送する。図８のようにブロック数が「３」であれば、ブロック４Ｂ（３）の空き領域がなくなると、次はブロック４Ｂ（１）を消去して書込みを行う。
【００３３】
再び図１を参照する。ステップＳ２６において、ＣＰＵ２は、有効なブロック４Ｂの書込み中フラグメモリ９Ｗを読み出して、フラグがセットされているか否かを判断する（Ｓ２７）。フラグがセットされていなければ（ＮＯ）ステップＳ３０に移行し、書込み・消去処理の要求待ちを行う。一方、ステップＳ２７においてフラグがセットされていれば（ＹＥＳ）、そのブロック４Ｂ内で最後に書込みが行われたデータレコードをサーチする。
【００３４】
一般に、データの書込みはアドレスの昇順で行われるので、当該ブロック４Ｂの最大アドレスから降順で、消去状態のデータ値（ａｌｌ「Ｆ」）と異なる値のデータ値となっているレコードをサーチして最終データレコードを特定する。この最終データレコードの書込み中に電源電圧の低下が発生して書込みが不完全になったと推定されるので、このデータレコードを無効化する（Ｓ２８）。それから、書込み中フラグメモリ９Ｗをリセット（消去）して（Ｓ２９）、ステップＳ３０に移行する。尚、ステップＳ２５〜Ｓ２９が書込みチェック手段に対応する。
【００３５】
尚、各データレコードについて、データの有効／無効を判別するには、例えば図９（ａ）に示すように、各データレコードに無効化フラグ領域（Invalid）を設ける。そして、ステップＳ２８では、対応するデータレコードの無効化フラグ領域に、例えばデータ値「０」を書き込むようにする。その分だけデータ等の記憶領域は浸食されるが、これは図９（ｂ）に示す従来技術の場合も同様である。
【００３６】
以上のように本実施形態によれば、マイクロコンピュータ１において、低電圧検出回路８は、フラッシュ電源７の電圧がフラッシュメモリ４への書込みが不能となるレベルに低下したことを検出すると、低電圧検出信号を出力する。また、低電圧検出信号により書込み中フラグがセットされる不揮発性の書込み中フラグメモリ９Ｗを備える。そして、ＣＰＵ２は、書込み対象となるブロック４Ｂに書込みを行う際に、制御ロジック１０Ｗにより前記フラグをセット可能な状態としてから、当該ブロック４ＢにＩＤ及びデータの書込みを行う。
【００３７】
その後、制御ロジック１０Ｗにより前記フラグをセット不能な状態とする。また、ＣＰＵ２は、リセットが解除されると、書込み中フラグメモリ９Ｗを読み出し、当該フラグがセットされていると、最後に書込みが行われていたＩＤ及びデータを無効化し、その後に前記フラグメモリ１０Ｗを消去する。
【００３８】
そして、ブロック４Ｂの消去についても同様に不揮発性の消去中フラグメモリ９Ｅを備え、ＣＰＵ２は、ブロック４Ｂを消去する際に、制御ロジック１０Ｅにより消去中フラグをセット可能な状態としてから消去を行い、その後、制御ロジック１０Ｅにより消去中フラグをセット不能な状態とする。そして、リセットが解除されると、消去中フラグメモリ９Ｅを読み出し、消去中フラグがセットされていると、最後に書込みが行われていたブロックの次に書込み対象となる予定であったブロックを消去して、その後に消去中フラグメモリ９Ｅを消去する。
【００３９】
したがって、各ブロック４Ｂについてそれぞれ１ビットの記憶素子であるフラグメモリ１０Ｗ，１０Ｅを用意すれば、書込みチェック及び消去チェックを行うことができるので、フラッシュメモリ４の記憶領域を効率的に使用できる。また、フラグメモリ９及び制御ロジック１０を、フラッシュメモリ４が備える各ブロック４Ｂに対応して設けたので、ＣＰＵ２によるステータス領域への書込み，消去自体が電源電圧の低下により失敗している場合でも、書込みチェック及び消去チェックをより確実に行うことができる。
【００４０】
そして、フラグメモリ９と制御ロジック１０とを、フラッシュメモリ４の内部に配置したので、不揮発性のフラグメモリ９をフラッシュメモリ４と同じプロセスで、１つのデバイスとして一括で製造できる。また、フラグメモリ９及び制御ロジック１０へのアクセスアドレスが、フラッシュメモリ４と同じ領域のアドレスとなるので、それらに対するアクセスや制御が容易となる。
【００４１】
更に、フラグメモリ９及び制御ロジック１０にアクセスするためのアドレスを、フラッシュメモリ４に割り当てられるアドレスの先頭部分に設定したので、これらにアクセスする際には、ブロック４Ｂ数に応じたＭＳＢ側のビットを指定するだけで簡単にアクセスできる。加えて、ＣＰＵ２は、最初に消去チェックを行い、続いて書込みチェックを行うようにした。これにより、電源電圧が低下したことで消去が失敗したブロックを４Ｂを、有効なブロック４Ｂと誤判定する可能性を極力低下させる。そして、その後に有効と判断したブロック４Ｂに対して、最後に書込みが行われていたデータレコードを検索することで、全てのブロック４Ｂを検索することなく効率的に処理することができる。
【００４２】
（第２実施形態）
以下、第２実施形態について図１０を参照して説明する。尚、第１実施形態と同一部分には同一符号を付して説明を省略し、以下異なる部分について説明する。第１実施形態では、各ブロック４Ｂに対応してフラグメモリ９（Ｗ，Ｅ）及び制御ロジック１０（Ｗ，Ｅ）を個別に設けたが、第２実施形態では、フラッシュメモリ４に対してフラグメモリ９（Ｗ，Ｅ）及び制御ロジック１０（Ｗ，Ｅ）を１組だけ設ける。したがって、フラッシュ電源７の電圧低下が発生することで、複数のうち何れか１つのブロック４Ｂに書込み不良や消去不良が生じたとしても、共通のフラグメモリ９にフラグがセットされる。
【００４３】
この場合、図１０に示すように、ＣＰＵ２は、ステップＳ２２で「ＹＥＳ」と判断すると、各ブロック４Ｂのステータス領域をチェックして、リセット解除前に書込み有効であったブロック４Ｂを特定する（Ｓ３１）。最後に消去が行われていたブロック４Ｂは、リセット解除前の有効ブロック４Ｂの次に書込み対象となるブロック４Ｂであるから、消去を失敗したブロック４Ｂが特定できる。そして、続くステップＳ２３’では、ステップＳ３１で特定したブロック４Ｂを消去する。
【００４４】
一方、書込みチェックについては、第１実施形態と全く同様である。すなわち、ステップＳ２５で有効ブロック４Ｂを特定し、書込み中フラグがセットされていれば、書込みが失敗したのは特定された有効ブロック４Ｂである。したがって、前記ブロック４Ｂ内の最終データでコードを無効化する（Ｓ２８）。
【００４５】
ここで、第１，第２実施形態の相違について説明する。第２実施形態は、フラッシュメモリ４に対してフラグメモリ９（Ｗ，Ｅ）及び制御ロジック１０（Ｗ，Ｅ）を１組だけ設けるので、必要なハードウェアのサイズが小さくなるというメリットがある。そして、消去或いは書込みを失敗したブロック４Ｂの特定も、ステータス領域を利用することで第１実施形態とほぼ同様に行える。
【００４６】
しかしながら、ＣＰＵ２が上記ステータス領域に書込みを行っている途中でフラッシュ電源７の電圧低下が発生し、書込みが失敗している可能性は否定できない。したがって、第１実施形態のように、各ブロック４Ｂに対応してフラグメモリ９（Ｗ，Ｅ）及び制御ロジック１０（Ｗ，Ｅ）を設ければ、ステータス領域に依存せずとも、消去或いは書込みを失敗したブロック４Ｂを確実に特定できる。
【００４７】
すなわち、第１実施形態の書込みチェックにおいて、ステップＳ２５でステータス領域を参照して有効ブロック４Ｂを特定している。しかし、必ずしもステータス領域を参照する必要はなく、最初から各ブロック４Ｂのフラグメモリ９Ｗだけを参照しても、書込みを失敗したブロック４Ｂの特定は可能である。
【００４８】
本発明は上記した、又は図面に記載した実施形態にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
ブロック４Ｂの容量は、２ｋバイトに限らない。
フラグメモリ９や制御ロジック１０にアクセスするためのアドレスは、必ずしもブロック４Ｂのアドレスの先頭部分に配置する必要はない。
フラグメモリ９及び制御ロジック１０を、フラッシュメモリ４と独立したデバイスとして、フラッシュメモリ４の外部に配置しても良い。
【００４９】
消去中フラグメモリ９Ｅ，制御ロジック１０Ｅを設けて行う消去処理及び消去チェック処理については、必要に応じて行えば良い。
書込み可能な電圧や低電圧検出のための閾値電圧等は、個別の設計に応じて適宜変更すれば良い。
フラッシュメモリに限ることなく、書き換え可能な不揮発性メモリであれば適用が可能である。
【符号の説明】
【００５０】
図面中、１はマイクロコンピュータ、２はＣＰＵ（書込み処理手段，書込みチェック手段，消去処理手段，消去チェック手段）、４はフラッシュメモリ（不揮発性メモリ）、４Ｂはブロック、７はフラッシュ用電源、８は低電圧検出回路、９Ｗは書込み中フラグメモリ、１０Ｗは制御ロジックを示す。
【図１】
0006040895.tif 000002
【図２】
0006040895.tif 000003
【図３】
0006040895.tif 000004
【図４】
0006040895.tif 000005
【図５】
0006040895.tif 000006
【図６】
0006040895.tif 000007
【図７】
0006040895.tif 000008
【図８】
0006040895.tif 000009
【図９】
0006040895.tif 000010
【図１０】
0006040895.tif 000011
【図１１】
0006040895.tif 000012