(57)【要約】【課題】  フラッシュメモリのデータ書き換えに要する時間を短縮すると共に、フラッシュメモリの書き換えエリア、すなわち電気的消去処理を行うエリアを制御し、フラッシュメモリの劣化を最低限のエリアとすることにより、フラッシュメモリの寿命を延ばすことができるフラッシュメモリ制御方法及び制御装置を提供する。【解決手段】  フラッシュメモリのメモリブロックをフラッシュメモリ分割設定手段により複数のデータブロックに分割し、分割されたデータブロック単位でデータの読み出し、書き込みを制御する。【選択図】                    図１
2006313411.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリのメモリブロックをフラッシュメモリ分割設定手段により複数のデータブロックに分割し、分割されたデータブロック単位でデータの読み出し、書き込みを制御することを特徴とするフラッシュメモリ制御方法。
【請求項２】
前記データブロックは、書き込み回数領域とデータ領域を備え、データ領域に対するデータ書き込み時に、書き込み回数領域の数値をカウントアップすることを特徴とする請求項１記載のフラッシュメモリ制御方法。
【請求項３】
前記データブロックはそれぞれ個別のインデックス値が付与され、インデックス値順にデータブロックにデータを書き込み、すべてのデータブロックにデータが書き込まれた場合、メモリブロックのデータを消去し、最初のインデックス値を持つデータブロックから順次データを書き込むことを特徴とする請求項１又は２記載のフラッシュメモリ制御方法。
【請求項４】
データを読み出す場合、複数のデータブロックについてインデックス値とそれぞれの書き込み回数を検出し、インデックス値が最大かつ書き込み回数が最小のデータブロックのデータを読み出すことを特徴とする請求項１又は２記載のフラッシュメモリ制御方法。
【請求項５】
制御されるデータブロックは、前記メモリブロックの先頭アドレスからデータブロックサイズ×インデックス値倍の位置からさらに書き込み回数領域のサイズを加算したアドレスを読み込み開始アドレスとして特定することを特徴とする請求項１乃至４記載のフラッシュメモリ制御方法。
【請求項６】
フラッシュメモリに対するデータの読み出し及び書き込みを制御するフラッシュメモリ制御装置において、
フラッシュメモリのメモリブロックを複数のデータブロックに分割するフラッシュメモリ分割設定手段と、
前記フラッシュメモリ分割設定手段により分割され、生成されたデータブロック数を書き込み可能回数として記憶する書き込み可能回数記憶部と、
前記書き込み可能回数記憶部およびフラッシュメモリ分割設定手段の制御を行う制御手段及び管理を行う管理手段を備えるＣＰＵを備え、
データの読み出し及び書き込みをデータブロック単位に制御することを特徴とするフラッシュメモリ制御装置。
【請求項７】
前記書き込み可能回数記憶部は、設定された前記メモリブロックのサイズと前記データブロックのサイズから、メモリブロックサイズ／データブロックサイズの演算を行うことにより、前記メモリブロックに対する書き込み可能回数を算出し格納することを特徴とする請求項５記載のフラッシュメモリ制御装置。
【請求項８】
前記制御手段は、前記メモリブロックの先頭アドレスからデータブロックサイズ×インデックス値倍の位置からさらに書き込み回数領域のサイズを加算したアドレスを読み込み開始アドレスとして特定して、制御されるデータブロックを特定することを特徴とする請求項６または７記載のフラッシュメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの書き換えを行うフラッシュメモリの制御方法及び制御装置に関するものである。
【背景技術】
【０００２】
図６は、従来技術によるフラッシュメモリに対するデータ変更及び保存の動作を示す機能ブロック図である。図６で、フラッシュメモリ１０に保存されているデータから必要なデータがＲＡＭ２０にロードされる。ＣＰＵ３０はＲＡＭ２０により起動されて、ＲＡＭ２０にロードされたアプリケーションプログラムを実行する。
【０００３】
フラッシュメモリ１０は組み込まれた装置４０の動作に必要なプログラムやデータベース及び管理データ等（以下、データという）が保存され、必要に応じて格納されているデータが書き換えられる。図６では、入力装置５０の入力手段５０Ａにより入力されたデータを、通信部５０Ｂを介して装置４０に転送し、フラッシュメモリ１０の書き換えを行う構成例を示している。
【０００４】
図７はフラッシュメモリ１０の概略構成図であり、メモリブロック１００が複数構成されている状態を示す。フラッシュメモリ１０がデータを書き換える際には、メモリブロック単位で電気的消去を行い、その上で、データを書き込む。具体的には、フラッシュメモリ１０は、メモリブロック１００内のビットを「１」から「０」に書き換えることにより、データを保存する。したがって、メモリブロック１００に記憶されているデータを書き換える場合、メモリブロック１００内のすべてのビットを一旦「１」に書き換えることにより、データを消去した上で、新たにデータを保存する。
【０００５】
メモリブロック１００内にあるビットの電気的消去を繰り返すことにより、半導体特性の劣化が起こり、最終的には使用できなくなるので、一般に、フラッシュメモリ１０に対する書き込み回数を監視し、一定回数に達したときに交換することにより、装置の信頼性を確保している。
【０００６】
特許文献１には、フラッシュメモリの書き込み回数を制御する装置が記載されている。
【０００７】
【特許文献１】特開平７−１５３２８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
フラッシュメモリ１０のデータの書き換え処理として、メモリブロック単位での電気的消去の処理は、メモリブロック１００内の全ビットを「１」に書き換える必要があることから、比較的長い処理時間が必要となる。
【０００９】
また、フラッシュメモリ１０にデータを書き込む時の書き込み単位は、メモリブロック１００のサイズより小さいが、書き換え時にはメモリブロック単位での消去処理がなされるため、データが書き込まれていないエリアも電気的消去の処理の対象となってしまう。
【００１０】
すなわち、本来、電気的消去の処理を行わなくてもよいエリアに対しこの処理を行うことは、処理時間の増大を招くと共に、フラッシュメモリ１０が書き込みにより劣化するエリアが無駄に広くなっていることになり、結果として、フラッシュメモリの寿命を短くすることになる。
【００１１】
この発明は、フラッシュメモリのデータ書き換えに要する時間を短縮すると共に、フラッシュメモリの書き換えエリア、すなわち電気的消去処理を行うエリアを制御し、フラッシュメモリの劣化を最低限のエリアとすることにより、フラッシュメモリの寿命を延ばすことができるフラッシュメモリ制御方法及び制御装置の提供を目的とする。
【課題を解決するための手段】
【００１２】
この目的を達成するために、請求項１に記載の発明は、フラッシュメモリのメモリブロックをフラッシュメモリ分割設定手段により複数のデータブロックに分割し、分割されたデータブロック単位でデータの読み出し、書き込みを制御する。
【００１３】
請求項２に記載の発明は、請求項１記載の発明において、前記データブロックは、書き込み回数領域とデータ領域を備え、データ領域に対するデータ書き込み時に、書き込み回数領域の数値をカウントアップする。
【００１４】
請求項３に記載の発明は、請求項１または２記載の発明において、前記データブロックはそれぞれ個別のインデックス値が付与され、インデックス値順にデータブロックにデータを書き込み、すべてのデータブロックにデータが書き込まれた場合、メモリブロックのデータを消去し、最初のインデックス値を持つデータブロックから順次データを書き込む。
【００１５】
請求項４に記載の発明は、請求項１または２記載の発明において、データを読み出す場合、複数のデータブロックについてインデックス値とそれぞれの書き込み回数を検出し、インデックス値が最大かつ書き込み回数が最小のデータブロックのデータを読み出す。
【００１６】
請求項５に記載の発明は、請求項１乃至４記載の発明において、制御されるデータブロックは、前記メモリブロックの先頭アドレスからデータブロックサイズ×インデックス値倍の位置からさらに書き込み回数領域のサイズを加算したアドレスを読み込み開始アドレスとして特定する。
【００１７】
請求項６に記載の発明は、フラッシュメモリに対するデータの読み出し及び書き込みを制御するフラッシュメモリ制御装置において、フラッシュメモリのメモリブロックを複数のデータブロックに分割するフラッシュメモリ分割設定手段と、前記フラッシュメモリ分割設定手段により分割され、生成されたデータブロック数を書き込み可能回数として記憶する書き込み可能回数記憶部と、前記書き込み可能回数記憶部およびフラッシュメモリ分割設定手段の制御を行う制御手段及び管理を行う管理手段を備えるＣＰＵを備え、データの読み出し及び書き込みをデータブロック単位に制御することを特徴とする。
【００１８】
請求項７に記載の発明は、請求項６記載の発明において、前記書き込み可能回数記憶部は、設定された前記メモリブロックのサイズと前記データブロックのサイズから、メモリブロックサイズ／データブロックサイズの演算を行うことにより、前記メモリブロックに対する書き込み可能回数を算出し格納する。
【００１９】
請求項８に記載の発明は、請求項６または７記載の発明において、前記制御手段は、前記メモリブロックの先頭アドレスからデータブロックサイズ×インデックス値倍の位置からさらに書き込み回数領域のサイズを加算したアドレスを読み込み開始アドレスとして特定して、制御されるデータブロックを特定する。
【発明の効果】
【００２０】
本発明によれば、複数のメモリブロックを備えるメモリにおいて、サイズＭのメモリブロックを複数のサイズＤのデータブロックの集合とし、データの読み出し及び書き込みをデータブロックごとに行う構成としたので、書き込み可能範囲をＭ／Ｄ倍とする事ができ、メモリの寿命を延ばすことができる。
【００２１】
また、電気的消去を行う回数がＤ／Ｍ倍になるので、結果として、電気的消去にかかる時間を短縮することができる。
【発明を実施するための最良の形態】
【００２２】
図１はフラッシュメモリのメモリブロックをデータブロックの集合とした概念図である。図１（ア）で、データブロック１は書き込み回数領域１Ａとデータ領域１Ｂを備える。例えば、データブロック１を１００バイトとした場合、書き込み部１Ａを１０バイト、データ部を９０バイトとする。
【００２３】
データブロック１は、図１（イ）に示すようにメモリブロック１００の一部であり、データブロック１の集合により、メモリブロック１００が構成される。ここで、配置されたデータブロックにはそれぞれ固有のインデックスとして「０」〜「Ｎ−１」を付与する。
書き込み回数領域は、データが何も書き込まれていない状態ではデフォルト値として「−１」を書き込んでおき、データ領域にデータが書き込まれたとき、書き込み回数を１から更新する。
【００２４】
次に、図１に示す構成とするフラッシュメモリ制御の処理概念図を図２に示す。図２は基本的に図６と同様の構成であるが、フラッシュメモリ１０の内部を図１の構成とする処理を行うための機能が追加された装置９０を備えている。具体的には、フラッシュメモリ１０のメモリブロック１００をさらに細分化し、データブロック１の集合とする設定を行うフラッシュメモリ分割設定手段８０が追加されている。
【００２５】
また、ＲＡＭ６０は演算により得られた結果を書き込み可能回数として記憶する書き込み可能回数記憶部６０Ａを備えている。すなわち、メモリブロック１００のサイズは既知であり、データブロック１のサイズを設定し、制御手段７０Ｂを含むＣＰＵ７０あるいはフラッシュメモリ分割設定手段８０によりメモリブロックサイズ／データブロックサイズの演算を行うことにより、メモリブロック１００に対する書き込み可能回数が求められ、これをＲＡＭ６０の書き込み可能回数記憶部６０Ａに格納する。データブロック１のサイズは、あらかじめ書き込まれるデータの大きさに応じて決定され、入力装置５０の入力手段５０ＡやＣＰＵ７０の制御手段７０Ｂからフラッシュメモリ分割設定手段８０に与えられる。
【００２６】
ＣＰＵ７０の管理手段７０Ａは、入力装置５０、フラッシュメモリ分割設定手段８０、制御手段７０Ｂ、フラッシュメモリ１０およびＲＡＭ６０の間のデータ等の入出力等の動作を管理する。
【００２７】
次に、図２の動作を図３、図４、図５のフローチャートを参照して説明する。図３は装置９０起動時の動作フローチャートである。図３で、装置が起動されると、ステップ３Ａでメモリブロック１００のサイズとデータブロック１のサイズを認識し、メモリブロックサイズ／データブロックサイズの演算を行い、書き込み可能回数を求める。ステップ３Ｂで、この書き込み可能回数をＲＡＭ６０の書き込み可能回数記憶部６０Ａに格納する。
【００２８】
次に、フラッシュメモリ１０のデータを読み込む動作を図４のフローチャートを参照して説明する。図４で、読み込み動作を開始すると、ステップ４Ａでデータブロックに付与されているインデックスを「０」に設定する。ステップ４Ｂで、インデックスが最終でないかどうか判断する。例えば、図１に示すメモリブロック１００の場合、読み込まれているデータブロックに付与されているインデックスが「Ｎ−１」に達しているかどうかを判定する。
【００２９】
読み込まれているデータブロックに付与されているインデックスが「Ｎ−１」に達している場合、読み込みを行うメモリブロックに設定されているすべてのデータブロックについて読み込みを完了していることになるので、ステップ４Ｋで、書き込み済み回数を「０」とし、設定データとしてデフォルト値を格納して読み込みを終了する。
【００３０】
読み込まれているデータブロックに付与されているインデックスが「Ｎ−１」に達していない場合、ステップ４Ｃで、メモリブロック１００のどのアドレスから読み込みを開始するか設定する。すなわち、読み込みを開始するアドレスは、メモリブロック１００の先頭アドレスから、データブロックサイズ×インデックス値だけ進んだところであり、演算により特定する。
【００３１】
次に、ステップ４Ｄで、特定されたデータブロックの書き込み回数領域を読み込み、書き込み済み回数とする。ステップ４Ｅで、この書き込み済み回数が「−１」かどうかを判定する。前述のとおり、書き込み回数領域１Ａは、データが何も書き込まれていない状態では例えばデフォルト値として「−１」が書き込まれているので、これを判定することにより、すでにデータが書き込まれているかどうかが判断される。
【００３２】
書き込み済み回数が「−１」の場合、まだデータは書き込まれていないと判断され、さらにステップ４Ｉで、読み込み処理を行っている対象データブロックのインデックスが「０」であれば、ステップ４Ｋにて前述と同様に書き込み済み回数を「０」とし、設定データとしてデフォルト値を格納して読み込みを終了する。ステップ４Ｉで、読み込み処理を行っている対象データブロックのインデックス値が「０」でなければ、ステップ４Ｊで読み込みを開始するアドレスを特定してデータを読み込むとともに、書き込み済み回数をインデックス値にし、処理を終了する。
【００３３】
書き込み済み回数が「−１」ではない場合、データは書き込まれていると判断され、ステップ４Ｆで、読み込み処理を行っている対象データブロックのインデックス値が「書き込み可能回数−１」でなければ、ステップ４Ｈで、インデックス値に「１」を加算して、次のインデックス値のデータブロックに対して読み込み動作可能かどうかを判定する。
【００３４】
ステップ４Ｆで、読み込み処理を行っている対象データブロックのインデックス値が「書き込み可能回数−１」の場合、ステップ４Ｇで読み込みを開始するアドレスを特定してデータを読み込むとともに、書き込み済み回数をインデックス値にし、処理を終了する。
【００３５】
次に、フラッシュメモリに対するデータ保存動作を図５を参照して説明する。設定データの変更が行われると、図５のステップ５Ａで、まず、データブロック１の書き込み回数領域１Ａに書き込み済み回数をセットし、セットされた回数が書き込み可能回数に達しているかどうかを判定する。
【００３６】
ステップ５Ｂで、データブロックの書き込み回数領域に書き込み済み回数をセットし、変更された設定データをデータブロックのデータ領域にセットし、フラッシュＲＯＭの保存先メモリブロックからデータブロックサイズ×書き込み済み回数だけシフトしたアドレスに書き込む（ステップ５Ｃ）。以下、設定データが変更されるたびに、ステップ５Ｄでデータブロックの書き込み回数値を「１」加算し、データブロックのデータ部分に変更された設定データをセットして、データブロックサイズ分進んだアドレスに書き込む動作を繰り返す。
【００３７】
以上により、Ｎ回まで消去動作をすることなく、設定データを保存することができる。Ｎ＋１回目の書き込みは、一旦メモリブロックを消去してから、メモリブロックの先頭アドレスに行う（ステップ５Ｅ）。
【００３８】
なお、本発明の説明では、フラッシュメモリ分割設定手段８０を装置９０内に組み込んだ場合について説明したが、装置９０とは別に設けても良い。この場合、フラッシュメモリ分割設定手段８０からのデータは、ネットワークやケーブル等の伝送手段によりＣＰＵ７０あるいは入力装置５０に伝送される構成とする。
【図面の簡単な説明】
【００３９】
【図１】フラッシュメモリのメモリブロックをデータブロックの集合とした概念図である。
【図２】図１に示す構成とするフラッシュメモリ制御の処理概念図である。
【図３】装置９０起動時の動作フローチャートである。
【図４】フラッシュメモリ１０のデータを読み込む動作を説明するフローチャートである。
【図５】フラッシュメモリに対するデータ保存動作を説明するフローチャートである。
【図６】従来技術によるフラッシュメモリに対するデータ変更及び保存の動作を示す機能ブロック図である。
【図７】フラッシュメモリ１０の概略構成図である。
【符号の説明】
【００４０】
１            データブロック
１Ａ          書き込み回数領域
１Ｂ          データ領域
１０          フラッシュメモリ
２０、６０    ＲＡＭ
３０、７０    ＣＰＵ
４０、９０    装置
５０          入力装置
８０          フラッシュメモリ分割設定手段
【図１】
2006313411.tif 000003
【図２】
2006313411.tif 000004
【図３】
2006313411.tif 000005
【図４】
2006313411.tif 000006
【図５】
2006313411.tif 000007
【図６】
2006313411.tif 000008
【図７】
2006313411.tif 000009