(57)【要約】【課題】本発明では、特定のブロックを偏って使用することなく、また、データが連続して記録されたブロックをソフトウェアで管理する必要がないフラッシュメモリ及びそのデータ書き換え方法を提供する。【解決手段】フラッシュメモリのメモリ空間に設けられた各ブロックの末尾に、ブロックの情報を記録するブロック情報記録エリアを設ける。また、ブロック情報としてブロックの書き換え回数を示す回数情報、データが連続して記録された次のブロックがある場合は、次ブロックを示す位置情報等を記録する。そして、ブロック情報に基づいて、書き換え回数が最も少ないブロックにデータを記録する。【選択図】　図１
2004110932.tif 000002
【特許請求の範囲】
【請求項１】
メモリ領域が複数に分割されたブロックを有するフラッシュメモリにおいて、
前記ブロックごとに該ブロックの書き換え回数を示す回数情報を記録する
ことを特徴とするフラッシュメモリ。
【請求項２】
前記ブロックごとに、
データが記録されていることを示す利用情報と、
前記データが連続して記録された次のブロックの有無を示す連続情報と、
前記次のブロックを示す位置情報と
を記録することを特徴とする請求項１記載のフラッシュメモリ。
【請求項３】
データの記録に際して、前記書き換え回数が最も少ないブロックにデータが記録される
ことを特徴とする請求項１記載のフラッシュメモリ。
【請求項４】
データの記録に際して、ブロックナンバが昇順となるように前記データを複数のブロックに連続して記録する
ことを特徴とする請求項３記載のフラッシュメモリ。
【請求項５】
前記ブロックに記録されたデータの消去に際して、前記ブロックの書き換え回数が１増加した回数情報を新たに記録する
ことを特徴とする請求項１記載のフラッシュメモリ。
【請求項６】
メモリ領域が複数に分割されたブロックを有するフラッシュメモリのデータ書き換え方法において、
前記ブロックごとに、該ブロックの書き換え回数を示す回数情報を記録する
ことを特徴とするフラッシュメモリのデータ書き換え方法。
【請求項７】
データが記録されていることを示す利用情報と、該データが連続して記録された次のブロックの有無を示す連続情報と、該次のブロックを示す位置情報とをさらに記録する
ことを特徴とする請求項６記載のフラッシュメモリのデータ書き換え方法。
【請求項８】
データの記録に際して、書き換え回数が最も少ない前記ブロックにデータを記録する
ことを特徴とする請求項６または７記載のフラッシュメモリのデータ書き換え方法。
【請求項９】
データの記録に際して、ブロックナンバが昇順となるように前記データを複数のブロックに連続して記録する
ことを特徴とする請求項８記載のフラッシュメモリのデータ書き換え方法。
【請求項１０】
フラッシュメモリに記録されたデータを消去するデータ書き換え方法において、
ブロックに記録されている該ブロックの書き換え回数を示す回数情報を読み出し、
前記ブロックに記録されている前記データを消去し、
前記回数情報が示す前記ブロックの書き換え回数に１を増加した回数情報を該ブロックに記録する
ことを特徴とするフラッシュメモリのデータ書き換え方法。
【請求項１１】
前記データが連続して記録された次のブロックの有無を示す連続情報と、該次のブロックを示す位置情報とをさらに読み出し、
前記次のブロックに記録されたデータを消去する処理を行う
ことを特徴とする請求項１０記載のフラッシュメモリのデータ書き換え方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリ及びそのデータ書き換え方法に関し、特に、平均的に各ブロックを利用することが可能なフラッシュメモリ及びそのデータ書き換え方法に関する。
【０００２】
【従来の技術】
パーソナルコンピュータ（ＰＣ）やＦＡＸ、デジタルカメラなど、様々な電化製品にデータを記録する手段としてメモリが用いられており、例えば、ＰＣのＢＩＯＳを記録するメモリやデジタルカメラで撮影した画像を記録するメディアとして、フラッシュメモリが広く利用されている。
【０００３】
フラッシュメモリは、記憶したデータを電気的に消去することができる書き換え可能な読み出し専用メモリで、磁気ディスクなどを使用せず、半導体素子にデータを電子的に保存する。
【０００４】
このため、ハードディスクよりもデータの読み出しや記録がはるかに高速で、ブロック単位でデータを消去するため、データの一括消去やすばやい書き込みが可能であり、また、バックアップ電源が不要で、メモリ自体のサイズも小さくできる。
【０００５】
【発明が解決しようとする課題】
しかし、フラッシュメモリは、書き換え回数に制限があり、また、データの書き込みは任意行えるものの、データの消去はブロック単位であるため、同じブロックばかりを使用していると、あるブロックだけ書き換え回数的に寿命がきてしまい、使用できなくなってしまう場合がある。
【０００６】
このため、特定のブロックに書き込みが集中しないよう、ハードウェアまたはソフトウェアで対処する必要がある。
【０００７】
また、１ブロックの容量以上のデータを書き込む場合は、複数のブロックを利用してデータを記録するが、必ずしも連続するブロックに書き込まれるとは限らず、連続してデータを書き込んだブロックに関する情報をソフトウェア側で持っていなければならなかった。
【０００８】
そこで本発明では、特定のブロックを偏って使用することなく、また、データが連続して記録されたブロックをソフトウェアで管理する必要がないフラッシュメモリ及びそのデータ書き換え方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明におけるフラッシュメモリは、メモリ領域が複数に分割されたブロックを有するフラッシュメモリにおいて、ブロックごとに該ブロックの書き換え回数を示す回数情報を記録する。
【００１０】
また、ブロックごとに、データが記録されていることを示す利用情報と、データが連続して記録された次のブロックの有無を示す連続情報と、次のブロックを示す位置情報とを記録する。
【００１１】
そして、データの記録に際して、書き換え回数が最も少ないブロックにデータが記録される。
【００１２】
なお、データの記録に際して、ブロックナンバが昇順となるようにデータを複数のブロックに連続して記録する。
【００１３】
ここで、ブロックに記録されたデータの消去に際して、ブロックの書き換え回数が１増加した回数情報を新たに記録する。
【００１４】
次に、本発明におけるフラッシュメモリのデータ書き換え方法は、メモリ領域が複数に分割されたブロックを有するフラッシュメモリのデータ書き換え方法において、ブロックごとに、該ブロックの書き換え回数を示す回数情報を記録する。
【００１５】
また、データが記録されていることを示す利用情報と、該データが連続して記録された次のブロックの有無を示す連続情報と、該次のブロックを示す位置情報とをさらに記録する。
【００１６】
そして、データの記録に際して、書き換え回数が最も少ないブロックにデータを記録する。
【００１７】
なお、データの記録に際して、ブロックナンバが昇順となるようにデータを複数のブロックに連続して記録する。
【００１８】
ここで、フラッシュメモリに記録されたデータを消去するデータ書き換え方法において、ブロックに記録されている該ブロックの書き換え回数を示す回数情報を読み出し、ブロックに記録されているデータを消去し、回数情報が示すブロックの書き換え回数に１を増加した回数情報を該ブロックに記録する。
【００１９】
また、データが連続して記録された次のブロックの有無を示す連続情報と、該次のブロックを示す位置情報とをさらに読み出し、次のブロックに記録されたデータを消去する処理を行う。
【００２０】
【発明の実施の形態】
以下、本発明に係るフラッシュメモリ及びそのデータ書き換え方法の実施の形態を添付図面を参照して詳細に説明する。
【００２１】
図１は、本発明に係るフラッシュメモリのメモリ空間の一例を示す概念図であり、メモリ空間１がブロック１〜ブロック１０２４に分けられると共に、各ブロック２には、ブロック情報記録エリア３が設けられている。
【００２２】
そして、ブロック情報記録エリア３には、ブロック情報として、このブロックに記録されているデータの続きが記録されている他のブロックの有無を示す連続情報４、続きのデータが記録されている次のブロックのポインタを示す位置情報５、ブロックに記録されているブロック情報以外のデータ（以下、「データ」という）の有無を示す利用情報６、ブロックの使用回数（書き換え回数）を示す回数情報７が記録される。
【００２３】
次に、本実施の形態におけるデータの書き換え方法をフラッシュメモリの一例として容量が８Ｍバイトのフラッシュメモリを用いて説明する。
【００２４】
なお、フラッシュメモリの容量が８Ｍバイトであるとすると、各ブロックのメモリ空間は、８Ｋバイトであり、本実施の形態では、ブロック情報記録エリアとしてブロック末尾の８バイトを利用するため、１ブロックの記憶容量は、８Ｋバイトから８バイトを減じた値になるが、便宜上８Ｋバイトとして説明する。
【００２５】
また、フラッシュメモリをはじめて利用する際など、メモリを初期化した際に、図２に示すように、各ブロックのブロック情報記録エリアに該ブロックの利用回数を１（回）として回数情報を記録しておく。
【００２６】
なお、本実施の形態では、回数情報を３Ｂｙｔｅを用いて記録しているが、回数情報は、３Ｂｙｔｅに限られるものではなく、適宜変更することができる。
【００２７】
ここで、ブロック情報記録エリアに、連続情報、位置情報、利用情報は、記録されておらず、データが消去されていることを示す「ＦＦ」を用いて図面に示す。
【００２８】
まず、フラッシュメモリにデータの書き込みが行われると、ブロックナンバが最も小さいブロック１にデータを記録する。
【００２９】
そして、図３に示すように、ブロック情報記録エリアには、データがブロックに記録されていることを示す利用情報を記録する。
【００３０】
ここで、利用情報は、１Ｂｙｔｅで記録されることが好ましく、情報が記録されていることを「００」を用いて図面に示す。
【００３１】
続いて、フラッシュメモリに新たなデータの書き込みが行われると、ブロック１に続くブロックで有るブロック２にデータを記録する。
【００３２】
ここで、ブロック２に記録されるデータの容量が１ブロックの容量で有る８Ｋバイトを超える１５Ｋバイトであるとすると、利用情報が記録されておらずブロックナンバが次に小さいブロック３にデータが連続して記録する。
【００３３】
そして、図４に示すように、ブロック２のブロック情報記録エリアに、利用情報、及び連続してデータを記録した次のブロックがあることを示す連続情報を記録すると共に、データが記録された次ブロックを示すポインタを位置情報として記録する。
【００３４】
なお、連続情報は、１Ｂｙｔｅで記録されることが好ましく、情報が記録されていることを「００」として図面に示すと共に、ブロック２に続いてデータが記録されたブロック３のポインタを仮に「００４０００」として図面に示す。
【００３５】
なお、本実施の形態では、位置情報を３Ｂｙｔｅを用いて記録しているが、位置情報は、３Ｂｙｔｅに限られるものではなく、適宜変更することができる。
【００３６】
また、ブロック３のブロック情報記録エリアには、ブロック３に続いてデータを記録するブロックがないため、連続情報及び位置情報に記録する情報はなく、利用情報のみをブロック情報に加えて記録する。
【００３７】
次に、ブロックに記録されたデータの消去についてブロック１を用いて説明する。
【００３８】
まず、ブロック１のブロック情報記録エリアに記録されているブロック情報（末尾にある８バイトのデータ）から連続情報、位置情報、回数情報を読み出す。
【００３９】
そして、ブロック１に記録されているデータを消去する。
【００４０】
なお、本実施の形態では、メモリとしてフラッシュメモリを用いているため、ブロック情報記録エリアのデータを含めて１ブロックに記憶されているデータが消去される。
【００４１】
ここで、図５に示すように、先に読み取った回数情報に「１」をインクリメントした値を回数情報として、ブロック情報記録エリアに記録する。
【００４２】
上記の場合は、消去する前のブロック１の使用回数は、１で有るから、１に１をインクリメントした値で有る２（１＋１＝２）を回数情報として記録する。
【００４３】
そして、連続情報が記録されていない（データを連続して記憶したブロックがない）場合は、データの消去を終了する。
【００４４】
また、連続情報が記録されている（データを連続して記憶したブロックがある）場合は、位置情報からデータが連続して記憶されているブロックを判断し、該ブロックに同様の処理を施して、データの消去を行う。
【００４５】
次に、データの書き込みや消去が既に行われたフラッシュメモリに新たなデータを書き込む場合について説明する。
【００４６】
まず、利用情報が記録されておらず、回数情報が最も小さいブロックの中でブロックナンバが最も小さいブロックを選択する。
【００４７】
図６においては、ブロック１は、利用情報が記録されていないが、回数情報が「０００００２」であり、ブロック２及び３は、利用情報が記録されており、利用情報が記録されておらず、回数情報が「０００００１」であり、ブロックナンバが最も小さいブロック４を選択する。
【００４８】
このブロックの選択は、メモリの書き込みや読み出しといった動作が停止している際などに、予めブロック情報を調査して選択しておくことが望ましい。
【００４９】
そして、選択したブロックにデータを書き込んで記録すると共に、図７のブロック４で示すように、ブロック情報記録エリアに利用情報「００」を記録する。
【００５０】
ここで、ブロック４に書き込むデータの容量が１ブロックの記憶容量である８Ｋバイトを越える場合は、利用情報が記録されていないブロックの中で、先にデータを記録したブロック４の次にブロックナンバが小さいブロックにデータを書き込む。
【００５１】
なお、先にデータを記録したブロックナンバよりもナンバが大きいブロックにデータの書き込みが行えないときは、ブロック１に戻って、データの書き込みを行うことが可能なブロックを引き続き調査、選択する。
【００５２】
次にフローチャートを用いて、本実施の形態におけるデータ書き換えの流れについて説明する。
【００５３】
図８は、本発明に係るメモリからデータを読み出す際の流れの一例を示すフローチャートで有る。
【００５４】
まず、希望するデータが記録されているブロックからデータを読み出す（ステップ１０）。
【００５５】
そして、このブロックのブロック情報を読み出し（ステップ１１）、データが連続して記録されているブロックがあるか判断する（ステップ１２）。
【００５６】
ここで、データが連続して記録されている次ブロックが有ると判断する（ステップ１２でＹＥＳ）と、ブロック情報から次ブロックを認識し（ステップ１３）、データの読み出しを行う。
【００５７】
また、データが連続して記録されている次ブロックがないと判断する（ステップ１２でＮＯ）とデータの読み出しを終了する。
【００５８】
図９は、本発明に係るメモリからデータを消去する際の流れの一例を示すフローチャートで有る。
【００５９】
まず、データを消去するブロックからブロック情報を読み出す（ステップ２０）。
【００６０】
そして、このブロックに記録されているデータを消去する（ステップ２１）。なお、本実施の形態では、メモリとしてフラッシュメモリを用いているため、ブロック情報を含めて、ブロックに記録されているデータが消去される。
【００６１】
ここで、ブロック情報の回数情報に記録されているブロックの使用回数に、１をインクリメントし（ステップ２２）、新たな回数をブロック情報記録エリアに回数情報をして記録する（ステップ２３）。
【００６２】
また、連続情報からデータが連続して記録されているブロックがあるか判断する（ステップ２４）。
【００６３】
ここで、データが連続して記録されている次ブロックが有ると判断する（ステップ２４でＹＥＳ）と、ブロック情報から次ブロックを認識し（ステップ２５）、同様の工程を繰り返してデータの削除を行う。
【００６４】
また、データが連続して記録されている次ブロックがないと判断する（ステップ２４でＮＯ）とデータの削除を終了する。
【００６５】
図１０は、本発明に係るメモリにデータを記録する際の流れの一例を示すフローチャートで有る。
【００６６】
まず、各ブロックのブロック情報からデータが記録されておらず、使用回数が最も小さいブロックの中で、ブロックナンバが最も小さいブロックを選択する（ステップ３０）。
【００６７】
そして、このブロックに書き込みを行うデータを記録する（ステップ３１）。
ここで、ブロックに記録したデータの容量からデータを続いて記録するブロックが必要であるかを判断する（ステップ３２）。
【００６８】
ブロックが必要でないと判断する（ステップ３２でＮＯ）と、ブロック情報に、ブロックにデータを記録していることを示す利用情報を記録し（ステップ３３）、データの記録を終了する。
【００６９】
また、連続してデータを記録するブロックが必要であると判断する（ステップ３２でＹＥＳ）と、次にデータを記録するブロックを選択し（ステップ３４）、利用情報、連続情報、及び選択したブロックの位置情報をブロック情報として記録し（ステップ３５）、選択したブロックに連続するデータを記録する。
【００７０】
このように本発明では、ブロック情報として、ブロックの書き換えの回数を示す回数情報を記録し、また、ブロックに記録されたデータを消去する度に、書き換え回数が１増加した回数情報を記録するため、ブロックの書き換え回数を容易に知ることができる。
【００７１】
また、各ブロックが書き換え回数上限に達しているかを判断する事ができる。
【００７２】
そして、データの書き込みは、書き換え数の最も少ないブロック書き込みを開始し、複数のブロックにデータを書き込む際には、ブロックナンバが大きい方向に空きブロックを調査して書き込みを行うため、各ブロックへの書き込み回数を平均化することができる。
【００７３】
なお、空きブロックを調査する際に、ブロックナンバが最大のブロックを調査した後は、ブロックナンバが空きブロックを調査する。
【００７４】
好ましくは、書き込みの平均化をはかるために、メモリ内の各ブロックに記録されている回数情報を時間の空いている時にサーチし、空きブロックの中で一番使用回数が少ないブロックを探し出しておく。
【００７５】
さらに、複数のブロックにデータを記録する際には、データが続いて記録された次ブロックがあることを示す連続情報、及び次ブロックを示す位置情報をブロック情報として記録するため、連続するブロックにデータが記録されない場合であっても、次の情報が記録されている次ブロックを容易に認識することができる。
【００７６】
また、データの消去を行なう際にも、連続してデータが記憶されているブロックを容易に認識することができるため、複数のブロックに渡って記憶されたデータであっても、データの消去を容易に行うことができる。
【００７７】
加えて、各ブロックに記憶されているデータの配列をソフトウェアを用いて管理する必要がない。
【００７８】
また、ＮＯＲ型、ＮＡＮＤ型を問わず適応することが可能である。
【００７９】
【発明の効果】
このように本発明では、フラッシュメモリの各ブロックを効率良く利用することができる。
【図面の簡単な説明】
【図１】本発明に係るフラッシュメモリのメモリ空間の一例を示す概念図
【図２】本実施の形態におけるブロック情報の一例を示す概念図
【図３】本実施の形態におけるブロック情報の一例を示す概念図
【図４】本実施の形態におけるブロック情報の一例を示す概念図
【図５】本実施の形態におけるブロック情報の一例を示す概念図
【図６】本実施の形態におけるブロック情報の一例を示す概念図
【図７】本実施の形態におけるブロック情報の一例を示す概念図
【図８】データを読み出しの流れの一例を示すフローチャート
【図９】データを消去の流れの一例を示すフローチャート
【図１０】データを記録の流れの一例を示すフローチャート
【符号の説明】
１…メモリ空間
２…ブロック
３…ブロック情報記録エリア
４…連続情報
５…位置情報
６…利用情報
７…回数情報
【図１】
2004110932.tif 000003
【図２】
2004110932.tif 000004
【図３】
2004110932.tif 000005
【図４】
2004110932.tif 000006
【図５】
2004110932.tif 000007
【図６】
2004110932.tif 000008
【図７】
2004110932.tif 000009
【図８】
2004110932.tif 000010
【図９】
2004110932.tif 000011
【図１０】
2004110932.tif 000012