(57)【要約】【課題】  不揮発性半導体記憶装置の寿命に対するメモリの使用効率を向上させ、データの書き換え回数を向上させる不揮発性半導体記憶装置の制御方法および不揮発性半導体記憶装置を内蔵するマイクロコンピュータを提供する。【解決手段】  本発明の不揮発性半導体記憶装置の制御方法によれば、不揮発性半導体装置の記憶部は、可変データを格納する第１のブロックおよび第２のブロックと、固定データを格納する第３のブロックを備えている。前記第１のブロックおよび第２のブロックの消去回数が所定の回数に達した場合に、前記第３のブロックに格納された前記固定データを前記第１のブロックに移動させ、前記第２のブロックおよび前記第３のブロックをその後書き込まれる可変データの格納に使用することを特徴とする。【選択図】  図４
2014026511.tif 000002
【特許請求の範囲】
【請求項１】
データを一括して消去可能な単位である所定サイズのブロックを複数有してなる不揮発性記憶装置（１０２）に対して、更新されない固定データと、更新される可能性がある可変データとを記憶させ、前記可変データが更新されると、更新されたデータを空き領域に書き込む方法において、
前記不揮発性半導体装置は、少なくとも、前記可変データを格納する第１のブロックと、前記固定データを格納する第２のブロックとを備えており、
前記可変データが更新されて、前記第１のブロックの消去回数が所定回数に達すると、前記第２のブロックに格納されていた固定データを前記第１のブロックに書き込んで移動し、以後は前記第１のブロックを固定データ用ブロックとして使用し、
前記第２のブロックを可変データ用ブロックとして使用することを特徴とする不揮発性半導体記憶装置のデータ書き込み制御方法。
【請求項２】
データを一括して消去可能な単位である所定サイズのブロックを複数有してなる不揮発性記憶装置（１０２）に対して、更新されない固定データと、更新される可能性がある可変データとを記憶させ、前記可変データが更新されると、更新されたデータを空き領域に書き込む方法において、
前記不揮発性半導体装置は、少なくとも、前記可変データを格納する第１のブロックおよび第２のブロックと、前記固定データを格納する第３のブロックとを備えており、
前記第１および第２のブロックの消去回数が所定回数に達すると、前記第３のブロックに格納されていた固定データを前記第１のブロックに書き込んで移動し、以後は前記第１のブロックを固定データ用ブロックとして使用し、
前記第２のブロックおよび前記第３のブロックを可変データ用ブロックとして使用することを特徴とする不揮発性半導体記憶装置のデータ書き込み制御方法。
【請求項３】
データを一括して消去可能な単位である所定サイズのブロックを複数有してなる不揮発性記憶装置（１０２）に対して、更新されない固定データと、更新される可能性がある可変データとを記憶させ、前記可変データが更新されると、更新されたデータを空き領域に書き込む方法において、
前記複数のブロックの１つに前記固定データを記憶させて固定データ用ブロックとすると共に、その他の複数のブロックを可変データ用ブロックとして確保し、そのうちの１つに前記可変データを記憶させて可変データ用ブロックとして使用し、前記可変データが更新されると、前記可変データ用ブロックの空き領域に更新されたデータを書き込み、前記可変データ用ブロックに空き領域がなくなると、当該ブロック以外の可変データ用ブロックを可変データ用ブロックとして、更新された可変データを書き込んで使用し、
同様にして、前記可変データ用ブロックを順次全て使用すると、同様の手順を繰り返し、
前記全ての可変データ用ブロックの消去回数が所定回数に達すると、前記可変データ用ブロックの１つに前記固定データを書き込んで前記固定データを移動し、以後は当該ブロックを固定データ用ブロックとして使用し、且つそれまで使用していた固定データ用ブロックを、以後は可変データ用ブロックの一つとして使用するようにし、
以降は、上記と同様の手順で、可変データ用ブロックの１つと固定データ用ブロックとを順次入れ替えて使用することを特徴とする不揮発性記憶装置のデータ書き込み制御方法。
【請求項４】
前記固定データを前記第１のブロックに移動させる際に、前記固定データが格納されていたブロックにおいて前記固定データが格納されていた領域とは相対アドレスが異なる領域に、前記固定データを書き込むことを特徴とする請求項１又は２に記載の不揮発性半導体装置の制御方法。
【請求項５】
前記固定データを前記可変データ用ブロックの１つに移動させる際に、前記固定データが格納されていたブロックにおいて前記固定データが格納されていた領域とは相対アドレスが異なる領域に、前記固定データを書き込むことを特徴とする請求項３に記載の不揮発性半導体装置の制御方法。
【請求項６】
前記固定データを格納したブロックの空き領域について、データの書き込みが正常に行えるか否かを判定するテストを行うことを特徴とする請求項１乃至５に記載の不揮発性半導体記憶装置の制御方法。
【請求項７】
前記不揮発性半導体装置は、フラッシュメモリであることを特徴とする請求項1乃至６に記載の不揮発性半導体記憶装置の制御方法。
【請求項８】
データを一括して消去可能な単位である所定サイズのブロックを複数有し、更新されない固定データと、更新される可能性がある可変データとを記憶させてなる不揮発性記憶装置（１０２）を内蔵するマイクロコンピュータ（１００）であって、
前記不揮発性半導体記憶装置は、少なくとも、可変データを格納する第１のブロックと固定データを格納する第２のブロックとを備え、
前記第１のブロックの消去回数が所定回数に達すると、
前記第２のブロックに格納されていた固定データを前記第１のブロックに書き込んで移動し、以後は第１のブロックを固定データ用ブロックに切替える固定データ用ブロック切替え制御手段（Ｓ３２１，Ｓ３３１，Ｓ３４１）と、
前記第２のブロックを可変データの格納に使用する可変データ用ブロック切替え制御手段（Ｓ３２４，Ｓ３３４，Ｓ３４４）とを備えることを特徴とするマイクロコンピュータ。
【請求項９】
データを一括して消去可能な単位である所定サイズのブロックを複数有し、更新されない固定データと、更新される可能性がある可変データとを記憶させる不揮発性記憶装置（１０２）を内蔵するマイクロコンピュータ（１００）であって、
前記不揮発性半導体装置は、少なくとも、前記可変データを格納する第１のブロックおよび第２のブロックと、前記固定データを格納する第３のブロックとを備え、
前記第１および第２のブロックの消去回数が所定回数に達すると、
前記第３のブロックに格納されていた固定データを前記第１のブロックに書き込んで移動し、以後は第１のブロックを固定データ用ブロックに切替える固定データ用ブロック切替え制御手段（Ｓ３２１，Ｓ３３１，Ｓ３４１）と、
前記第２のブロックおよび前記第３のブロックを可変データの格納に使用する可変データ用ブロック切替え制御手段（Ｓ３２４，Ｓ３３４，Ｓ３４４）とを備えることを特徴とするマイクロコンピュータ。
【請求項１０】
データを一括して消去可能な単位である所定サイズのブロックを複数有し、更新されない固定データと、更新される可能性がある可変データとを記憶してなる不揮発性半導体記憶装置（１０２）を内蔵するマイクロコンピュータ（１００）であって、
前記マイクロコンピュータは、前記複数のブロックの１つに前記固定データを記憶させて固定データ用ブロックとすると共に、その他の複数のブロックを可変データ用ブロックとして確保し、そのうちの１つに前記可変データを記憶させて可変データ用ブロックとして使用し、前記可変データが更新されると、前記可変データ用ブロックの空き領域に更新されたデータを書き込み、前記可変データ用ブロックに空き領域がなくなると、当該ブロック以外の可変データ用ブロックを可変データ用ブロックとして、更新された可変データを書き込んで使用し、同様にして、前記可変データ用ブロックを順次全て使用すると、同様の手順を繰り返す、可変データ更新制御手段（Ｓ２０１〜Ｓ２０３，Ｓ３１１〜Ｓ３１４）と、
前記全ての可変データ用ブロックの消去回数が所定の回数に達すると、前記可変データ用ブロックの１つに前記固定データを書き込んで前記固定データを移動し、以後は当該ブロックを固定データ用ブロックとして使用する固定データ用ブロック切替え制御手段（Ｓ３２１，Ｓ３３１，Ｓ３４１）と、
それまで固定データ格納用として使用していた前記固定データ用ブロックを、以後は可変データ用ブロックの一つに切替える可変データ用ブロック切替え制御手段（Ｓ３２４，Ｓ３３４，Ｓ３４４）とを備えることを特徴とするマイクロコンピュータ。
【請求項１１】
前記固定データを前記第１のブロックに移動させる際に、前記固定データが格納されていたブロックにおいて前記固定データが格納されていた領域とは相対アドレスが異なる領域に、前記固定データを書き込む前記固定データ用ブロック切替え制御手段（Ｓ３２１，Ｓ３３１，Ｓ３４１）を備えることを特徴とする請求項８又は９に記載のマイクロコンピュータ。
【請求項１２】
前記固定データを、前記可変データを格納する複数のブロックのうちの一つに移動させる際に、前記固定データが格納されていたブロックにおいて前記固定データが格納されていた領域とは相対アドレスが異なる領域に、前記固定データを書き込む前記固定データ用ブロック切替え制御手段（Ｓ３２１，Ｓ３３１，Ｓ３４１）を備えることを特徴とする請求項１０に記載のマイクロコンピュータ。
【請求項１３】
前記固定データを格納したブロックの空き領域について、データの書き込みが正常に行えるか否かを判定するテストを行うメモリテスト制御手段（Ｓ６０１〜Ｓ６０７）を備えることを特徴とする請求項８乃至１２に記載のマイクロコンピュータ。
【請求項１４】
前記不揮発性半導体装置は、フラッシュメモリであることを特徴とする請求項８乃至１３に記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体記憶装置の書き込み制御方法およびマイクロコンピュータに関する。
【背景技術】
【０００２】
近年、不揮発性半導体記憶装置の一種であるフラッシュメモリを内蔵したマイクロコンピュータが使用されており、このフラッシュメモリは、例えば、マイクロコンピュータのＣＰＵ（Central Processing Unit）が使用するユーザプログラムを格納する用途や、種々のデータを書き込んで格納しておく用途に用いられる。
【０００３】
ここで、フラッシュメモリは、１ワード毎の書き込みが可能であるが、消去は複数ワードを一括で消去することが必要となる。この消去の単位をブロック（消去ブロック）と称する。
【０００４】
フラッシュメモリにデータを書き込む際には、更新されたデータを、既にデータを書き込んだ領域とは異なるアドレスの領域に次々に書き込んでいく。そして、使用中のブロックが一杯になると、別のブロックに切り替えて、更新されたデータを書き込んでいくのが一般的である。そして、使用済みのブロックは次回にデータを書き込むために一括消去される。その後、使用中のブロックが一杯になると、さらに別のブロックを使い、一杯になれば、またさらに別のブロックに切替えて、元のブロックを一括消去する、というプロセスを繰り返す。例えば、特許文献１には、上記のようなフラッシュメモリの書き換えに関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２６８８８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、車両制御用ＥＣＵ（Electronic Control Unit）に搭載されているフラッシュメモリには、仕向地の情報など、最終的に製品が適用される環境に合わせた情報が固定データ（固定情報）として書き込まれる。また、動作状態や学習値など、制御中に更新される情報が可変データ（可変情報）として書き込まれる。すなわち、格納されるデータには、固定データと可変データの２種類が存在する。
【０００７】
固定データはその後にデータの内容が書き換えられることはないが、可変データはデータが次々に更新されて書き換えられることを予定しているため、その書き換え回数は多くなる。この様に書き換え回数が異なるデータが、１つのフラッシュメモリに書き込まれていることになる。
【０００８】
しかしながら、この固定データと可変データとを区別することなく同様に扱うと、固定データと共に可変データを書き込んだブロックについては、固定データが占める領域分だけ可変データを書き込める領域が減ってしまう。このため、ブロックの移動の回数が、可変データだけを書き込んだブロックに比較して増えてしまい、その分ブロック消去の頻度が高くなり、フラッシュメモリの寿命を縮めることになる。
【０００９】
一方で、単純に固定データを書き込むブロックと可変データを書き込むブロックとを分けて扱うと、固定データの格納用に１つのブロックが占有されるため、可変データの書き込みに使用できるブロックが減ることになり、１ブロック毎のブロック切替え周期が早まり、同じくフラッシュメモリの寿命を縮めてしまう。
【００１０】
この状況を、図７に模式的に示しながら説明する。図７はフラッシュメモリ内の記憶部のブロックを示したものであり、ここでは、説明を簡単にするため、使用するブロックを３つ、固定データの大きさが２５６Ｂｙｔｅ（固定データ：ａ，ｂ，ｃ）、可変データの大きさが２５６Ｂｙｔｅ（可変データ：Ａ，Ｂ，Ｃ）、１ブロックの容量が２ＫＢｙｔｅである場合を想定する。
【００１１】
この場合、ブロック１において、固定データ（ａ，ｂ，ｃ）が２５６Ｂｙｔｅの容量を占有するため、残り１７９２Ｂｙｔｅの容量を可変データ（Ａ，Ｂ，Ｃ）を書き換えるために使用する。そうすると、可変データは、７回データを更新して書き換えるとブロックが一杯になり、次のブロック２に最新の可変データ（Ａ，Ｂ，Ｃ）を書き込んで、使用するブロックを切替えることになる。この際、ブロックを移動する度に、固定データ（ａ，ｂ，ｃ）も書き込む必要がある。次に、可変データの書き換えが進むと、同じように、ブロック３に固定データ（ａ，ｂ，ｃ）および最新の可変データ（Ａ，Ｂ，Ｃ）を書き込んでブロックを切替える。さらに可変データが更新されて書き換えが進むと、ブロック３からブロック１に切替える。以後、これを繰り返すことになる。従って、固定データがあることにより、１ブロック内での可変データの書き換え（更新）回数が１回分減るので、例えばブロック消去回数が１０００回に達する時点で、可変データの書き換え回数は１０００回減ってしまうことになる。ここでは、３つのブロックを使用しているので、合計３０００回書き換え回数が減ることになる。
【００１２】
次に、図８を用いて、固定データを書き込むブロックと可変データを書き込むブロックを分けた場合について説明する。ここでは、ブロック１，２を可変データ格納用ブロック、ブロック３を固定データ格納用ブロックとする。先ず、可変データを更新する際には、ブロック１の空き領域（書き込み可能領域）に順次書き込んでいき、ブロック１が一杯になると、次は最新の可変データ（Ａ，Ｂ，Ｃ）をブロック２の空き領域に順次書き込んでいく。さらに書き換えが進んでブロック２が一杯になると、次はブロック１を使用する。以後、これを繰り返すことになる。この場合、可変データの書き込みには１ブロック全ての領域を使用できる。従って、ブロック消去回数が１０００回に達する時点では、固定データを書き込むブロックと可変データを書き込むブロックとを分けない場合に比較して、１ブロック当たりの書き換え回数は１０００回増えることになる。２つのブロックを可変データ用に使用すれば、書き換え回数は合わせて２０００回増える。しかし、残る１ブロック（ブロック３）を固定データ用として占有するため、固定データ用のブロック分の書き換え回数として７０００回減ってしまう。結果として、３つのブロック全体では書き換え回数が５０００回減ることになる。
【００１３】
また、１ブロックの容量に対して、固定データの容量は少ない場合が通常であり、未使用の領域が大半を占めることになるため、無駄が多い。この例では、１７９２Ｂｙｔｅが未使用のままである。
【００１４】
本発明は、かかる実情に鑑み、固定データと可変データを記憶させる不揮発性半導体記憶装置の使用効率を向上させることができる不揮発性半導体記憶装置の制御方法およびマイクロコンピュータを提供しようとするものである。
【課題を解決するための手段】
【００１５】
請求項１に記載した不揮発性半導体記憶装置の制御方法によれば、更新される可能性がある可変データを格納するための第１のブロックと、更新されない固定データを格納するための第２のブロックを備える。そして、可変データが順次更新されることで、第１のブロックの消去回数が所定回数に達すると、第２のブロックに格納されていた固定データを、可変データを格納していた第１のブロックに書き込んでこれを移動させ、以後は第１のブロックを固定データ用ブロックとして使用する。また、固定データを格納していた第２のブロックを可変データ用ブロックとして使用する。
【００１６】
請求項２に記載した不揮発性半導体記憶装置の制御方法は、可変データを格納するための第１および第２のブロックと、固定データを格納するための第３のブロックを備える。そして、可変データが順次更新されることで、第１および第２のブロックの消去回数が所定回数に達すると、第３のブロックに格納された固定データを第１のブロックに書き込んで移動し、以後は第１のブロックを固定データ用ブロックとして使用する。また、第２のブロックおよび第３のブロックを可変データ用ブロックとして使用する。
【００１７】
請求項３に記載した不揮発性半導体記憶装置の制御方法は、複数のブロックの１つに固定データを記憶させて固定データ用ブロックとすると共に、その他の複数のブロックを可変データ用ブロックとして確保し、そのうちの１つに可変データを記憶させる。そして、可変データが更新されると、可変データ用ブロックの空き領域に更新されたデータを書き込み、可変データ用ブロックに空き領域がなくなると、当該ブロック以外の可変データ用ブロックに、更新された可変データを書き込む。続いて、可変データ用ブロックを順次全て使用すると、同様の手順を繰り返す。さらに、全ての可変データ用ブロックの消去回数が所定回数に達すると、可変データ用ブロックの１つに固定データを書き込んで、以後は当該ブロックを固定データ用ブロックとして使用する。それまで固定データ用ブロックとして使用していたブロックは、以後は可変データ用ブロックの一つとして使用する。以降は、上記と同様の手順で、可変データ用ブロックの１つと固定データ用ブロックとを順次入れ替えて使用する。
【００１８】
このような方法とすれば、固定データ用ブロックを順次他のブロックに切替えるので、全ブロックの消去回数が平準化される。従って、不揮発性半導体記憶装置の寿命に対するメモリの使用効率を向上させ、データの書き換え（更新）回数を向上させることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施例にかかるハードウェア構成図
【図２】メモリ制御方法の処理手順を示すフローチャート図
【図３】メモリ制御方法におけるブロックのデータ切替え制御を示すフローチャート図
【図４】メモリ制御方法におけるブロックのデータ切替えの段階的な状態を示す図
【図５】本発明の第２の実施例における固定データの書き込み制御方法を示す図
【図６】メモリテストの処理手順を示すフローチャート図
【図７】背景技術を示す図
【図８】背景技術を示す図
【発明を実施するための形態】
【００２０】
以下、本発明の実施態様を図を用いて説明する。
【実施例１】
【００２１】
図１に示すように、本発明にかかるマイクロコンピュータ１００は、ＣＰＵ１０１、データ用のフラッシュメモリ１０２、プログラム用のフラッシュメモリ１０３、ＲＡＭ（Random  Access  Memory）１０４、周辺回路１０５を備えている。ＣＰＵ１０１は、プログラム記憶用フラッシュメモリ１０３からデータ用のフラッシュメモリ１０２を制御するプログラムデータを呼び出し、これを用いてデータ記憶用フラッシュメモリ１０２のデータ書き込みおよび書き換え（更新）、ブロックの消去および切替え、メモリテストなどをコントロールするメモリコントローラの機能を有している。ＲＡＭ１０４はＣＰＵ１０１のメインメモリとして用いられ、データの書き込みや書き換えなどの際に、データやＣＰＵ１０１の演算結果などを一時的に保持する作業領域に用いられる。データ記憶用フラッシュメモリ１０２は、内部に記憶部としてメモリセルを有しており、メモリセルは複数のブロックに分けられている。
【００２２】
次に、図２に示すフローチャートを用いて説明する。可変データが更新されてその書き込み処理が開始されると、ＣＰＵ１０１は、データ用のフラッシュメモリ１０２のメモリ領域内の可変データの格納用として使用中のブロック（現在データが書き込まれているブロック）に空き領域があるかを判定する（Ｓ２０１）。使用中ブロックに、”空き領域がある（Ｙｅｓ）”と判定した場合は、使用中ブロックへ可変データを書き込み（Ｓ２０２）、処理は終了する。
【００２３】
使用中ブロックに、”空き領域がない（Ｎｏ）”と判定すると、以下に説明するように、使用ブロックの切替えを行う（Ｓ２０３）。
次に、図３および図４を用いて、図２における使用ブロックの切替え（Ｓ２０３）の内容についての詳細を説明する。ここでは、説明を簡単にするため、二つの可変データ用ブロックおよび一つの固定データ用ブロックの、合計３つのブロックを使用する場合を想定する。また、ブロックの規定消去回数（所定回数）を１００回とする。また、固定データの大きさが２５６Ｂｙｔｅ（固定データ：ａ，ｂ，ｃ）、可変データの大きさが２５６Ｂｙｔｅ（可変データ：Ａ，Ｂ，Ｃ）、１ブロックの容量が２ＫＢｙｔｅである場合を想定する。
【００２４】
まず、図４（ａ）乃至図４（ｃ）を示しながら、メモリ制御方法におけるブロックのデータ切替えの段階的な状態を説明する。初期状態として、図４（ａ）に示すように、固定データ用にブロック３を使用し、可変データ用にブロック１、２を使用する。先ず、ＣＰＵ１０１は、可変データが更新されるたびに、可変データ用ブロック１の空き領域に順次更新データを書き込み、可変データ用ブロック１が一杯になると、次の可変データ用ブロック２を使用して、同様に順次空き領域に更新データを書き込んでいく。さらにこの可変データ用ブロック２が一杯になると、可変データ用ブロック１を消去し、ここに最新データを移し、同様に順次更新データを可変データ用ブロック１に書き込んでいく。以後、これを交互に繰り返し、可変データ用ブロック１，２の消去回数が規定回数の１００回になるまで継続する（ケース（Ａ））。
【００２５】
次に、図４（ｂ）に示すように、固定データ用ブロックをブロック１に移動させて、可変データ用にブロック２、３を使用する。そして、同様に、可変データ用ブロック２，３の消去回数が規定回数の１００回になるまでブロック２，３を交互に使用する（ケース（Ｂ））。
【００２６】
次に、図４（ｃ）に示すように、固定データ用ブロックをブロック２に移動し、可変データ用にブロック１、３を使用する。その後、同じく、消去回数が規定回数の１００回になるまでブロック１，３を交互に使用する（ケース（Ｃ））。
【００２７】
その後は、図４（ａ）に戻り、ケース（Ａ）、ケース（Ｂ）、ケース（Ｃ）を繰り返すようにする。
次に、図３を参照しながら、本実施例の使用ブロック切替えフローについて説明する。まず、ＣＰＵ１０１は、ブロックの消去回数が規定回数以上であるかを判定する（Ｓ３０１）。ここで、”消去回数が規定回数より少ない（Ｎｏ）”と判定すると、可変データ用ブロック間でのブロック切替えを行う（Ｓ３１１）。固定データ用ブロックがブロック３の場合は、ブロック１−２間で（ケース（Ａ））、固定データ用ブロックがブロック１の場合は、ブロック２−３間で（ケース（Ｂ））、固定データ用ブロックがブロック２の場合は、ブロック１−３間でブロック切替えを行う（ケース（Ｃ））。この詳細な流れはステップＳ３１２およびＳ３１３に示される。
【００２８】
まず、切替え先ブロック（ブロックｙ）を消去して、データを書き込み可能な状態とし（Ｓ３１２）、可変データの書き込み先をブロックｘからブロックｙに切替える（Ｓ３１３）。例えば、ケース（Ａ）であれば（ｘ＝１、ｙ＝２）、ブロック２を消去し、可変データの書き込み先をブロック１からブロック２に切替える。その後、使用中ブロックをブロック２とする。そして、消去回数をインクリメントすると（Ｓ３１４）、処理を終了してメインルーチンにリターンする。
【００２９】
すなわち、ステップＳ２０１からＳ２０３、およびステップＳ３１１からＳ３１４が、更新データを可変データ用ブロックに書き込み、当該ブロックが一杯になると次の書き込み先ブロックを消去して、そのブロックに最新のデータを書き込み、その後、同様にこれを繰り返す、可変データ更新制御手段に相当する。
【００３０】
一方、ＣＰＵ１０１が、”消去回数が規定回数以上である”と判定した場合（Ｓ３０１：Ｙｅｓ）は、現在使用している可変データ用ブロックがどれかを判定する（Ｓ３０２）。ここで、ケース（Ａ）であれば固定データ用ブロックはブロック３であるから、固定データ用ブロックを、ブロック３からブロック１に切替える（Ｓ３２１）。この詳細を、ステップＳ３２２およびステップＳ３２３に示す。まず、固定データの移動先であるブロック１を消去し（Ｓ３２２）、続いて、固定データをブロック３からブロック１に移動する（Ｓ３２３）。
【００３１】
次に、可変データ用ブロックを、ここでは、ブロック２からブロック３に切替える（Ｓ３２４）。この詳細をステップＳ３２５およびステップＳ３２６に示す。まず、可変データ移動先のブロック３を消去し（Ｓ３２５）、続いて、最新の可変データをブロック３に書き込む（可変データ移動、Ｓ３２６）。そして、消去回数をクリアすると（Ｓ３０３）、終了となる。
【００３２】
以後、ＣＰＵ１０１は、ブロック２とブロック３の消去回数が規定回数である１００回に達するまで、可変データの書き込みおよびブロックの切替えを、ブロック２とブロック３について繰り返す（Ｓ２０１〜Ｓ２０３、およびＳ３１１〜Ｓ３１４）。
【００３３】
次に、ステップＳ３０２において、ケース（Ｂ）、すなわち固定データ用ブロックがブロック１である場合は、以降のステップＳ３３１〜Ｓ３３６で、対応するブロックについて同様の処理を行う。
【００３４】
また、ケース（Ｃ）、すなわち固定データ用ブロックがブロック２である場合は、ステップＳ３４１〜Ｓ３４６で、対応するブロックについて同様の処理を行う。
ここで、ステップＳ３２１、Ｓ３３１およびＳ３４１が、固定データ用ブロックを切替える固定データ用ブロック切替え制御手段に相当する。また、ステップＳ３２４，Ｓ３３４およびＳ３４４が、その後書き込まれる可変データ用ブロックの切替え方法を制御する可変データ用ブロック切替え制御手段に相当する。
【００３５】
このようにすれば、各ブロックの消去回数が１０００回に到達するまでを想定すると、５回の固定ブロックの切替え、消去が発生するため、可変データの更新用としては９９５回の消去回数分を使用することとなる。従って、可変データは７９６０回の書き込みが可能となり、本発明を適用しない場合が最高回数２１０００回であるのに対して、本発明の実施例では２３８８０回と上回ることとなる。
【００３６】
以上説明したように、本実施例によれば、ブロックを３つと想定した場合に、各ブロックの消去回数が２００回毎に、固定データ用ブロックの切替え、消去が発生することになり、固定データ用ブロックを順次他のブロックに切替えるので、全ブロックの消去回数が平準化される。従って、フラッシュメモリ１０２の寿命に対するメモリの使用効率を向上させ、データの書き換え（更新）回数を向上させることができる。
【００３７】
なお、本実施例では、可変データ用ブロックを２つとしたが、可変データ用ブロックの数は１つでも３つ以上でも良い。また、規定回数は１００回に限ることなく、個別の設計に応じて適宜変更すればよい。
【実施例２】
【００３８】
次に、本発明の第２の実施例について説明する。
図５は、本発明の第２の実施例における固定データの書き込み制御方法を示す図である。第１の実施例で説明したように、固定データ用のブロックがブロック１、ブロック２、ブロック３へ切り替えられていく際に、固定データ（ａ，ｂ，ｃ）が書き込まれるアドレスを、各ブロックで相対アドレスが異なるように書き込む領域を移動させる。図５のブロック１で冒頭の領域０（アドレスB1…00〜B1…FF）に書き込まれている固定データを、ブロック２に移動させる際には、ＣＰＵ１０１は、ブロック１での空き領域１のアドレスに相当するアドレスB2…100〜B2…1FFの領域に固定データを書き込む。次に、ブロック３にデータ移動する際には、ＣＰＵ１０１は、ブロック２での空き領域２のアドレスに相当するアドレスB3…200〜B3…2FFの領域に固定データを書き込む（固定データ用ブロック切替え制御手段）。このように、本実施例では、固定データを書き込むブロックを移動させる際に、元のブロックとは異なるアドレス領域に順次移動させて書き込むようにする。
【００３９】
また、第２の実施例では、固定データを書き込んだブロックの空き領域について、データの書き込みが正常に行えるか否かを判定するメモリテストを実施する。図６は、メモリテストの処理手順をフローチャートに示したものである。
【００４０】
まず、初めの空き領域（Ｎ＝０）を指定し（Ｓ６０１）、次に全領域に対してテストをしたかどうかを判定する（Ｓ６０２）。ＣＰＵ１０１が、”全領域のテストを終了した（Ｙｅｓ）”と判定すれば、処理は終了となる。”全領域のテストを終了していない（Ｎｏ）”と判定した場合は、領域Ｎに固定データを書き込み済みかどうかを判定し（Ｓ６０３）、”書き込み済み（Ｙｅｓ）”と判定すると、テスト対象領域を指定するポインタNをインクリメントしてから（Ｓ６０６）ステップＳ６０２に戻る。ステップＳ６０３において、”領域Ｎに書き込み済みでない（Ｎｏ）”と判定した場合は、領域Ｎについてメモリテストを行う（Ｓ６０４）。テスト終了後に、テストが成功したかどうかを判定し（Ｓ６０５）、”成功（Ｙｅｓ）”と判定した場合はステップＳ６０６に移行する。一方、”失敗（Ｎｏ）”と判定すると、当該ブロックに故障があることを記憶して（Ｓ６０７）処理を終了する。すなわち、ステップＳ６０１からＳ６０７がメモリテスト制御手段に相当する。
【００４１】
ステップＳ６０４で行うテストは、例えば、０x５５５５などのデータを書き込んだ後に同じアドレスを読み出して照合（ベリファイ）するなどのように、一般的な手法で行う。書き込む値は１ｂｉｔだけ“０”にするなど様々あるが、どのような値でも良い。
また、テストを実行するタイミングについては、固定データを書き込むのと同時に実行しても良いし、可変データを書き込んだ後や、固定データを移動させた直後など、メモリへの処理負荷が低い時、もしくは処理の空き時間に分割して実行しても良い。
【００４２】
テストの結果、異常が発見された場合（Ｓ６０７）、今後そのブロックは使用しない。もしくは、異常が検出された領域のみを書き込み対象から外して、書き込みに使用するなどの異常個所への処置を実施することで、メモリ異常による誤書き込みや誤動作を防止できる。そして、未使用のブロックがあれば、そのブロックを新たに加えて同様に書き込み処理を行う。
【００４３】
上述のように、第２の実施例では、固定データ用ブロックを他のブロックに移動させる際に、書き込む領域の相対アドレスを変化させるので、ブロック内の領域を均等に使用できる。そして、元のブロックで固定データが書き込まれていたためメモリテストができなかった領域を、次回のブロックの切替えの際にメモリテストすることが可能になり、何度も書き込み、消去を繰り返してブロックを切替えていくうちに、ブロックのすべての領域についてメモリテストを実施することができる。
さらに、メモリへの処理負荷が少ないタイミングを利用してメモリテストを行うため、メモリテスト用の記憶領域やメモリテストの時間を別途確保する必要がなく、無駄が少ないメモリ動作が可能となる。
【００４４】
（他の実施形態）
以上、本発明を適用したいくつかの実施例を、フラッシュメモリを内蔵するマイクロコンピュータおよびそこで実施されるフラッシュメモリの制御方法として説明したが、本発明では、１ブロックの容量は２ＫＢｙｔｅに限らない。
また、データサイズは２５６Ｂｙｔｅに限らず、さらに、固定データと可変データとのサイズが異なってもよい。あるいは、可変データＡ，Ｂ，Ｃのうち、更新されたものだけを新たに書き込んでもよいし、固定データ用のブロックを２つ以上としても良い。
また、ハードロジックで構成されるメモリコントローラを設け、処理の一部をマイクロコンピュータに実行させても良い。
【符号の説明】
【００４５】
図面中、１００はマイクロコンピュータ、１０１はＣＰＵ、１０２はデータ用のフラッシュメモリ、１０３はプログラム用のフラッシュメモリ、１０４はＲＡＭ、１０５は周辺回路を示す。
【図１】
2014026511.tif 000003
【図２】
2014026511.tif 000004
【図３】
2014026511.tif 000005
【図４】
2014026511.tif 000006
【図５】
2014026511.tif 000007
【図６】
2014026511.tif 000008
【図７】
2014026511.tif 000009
【図８】
2014026511.tif 000010