(57)【要約】【課題】小規模データを頻繁に書き換える場合のフラッシュメモリを効率よく管理できる方法を提供する。【解決手段】データ記憶領域がセクタ単位に分割され、前記セクタ単位でデータ消去可能なフラッシュメモリの管理方法において、セクタが、セクタ管理領域と複数のページにより構成され、ページの管理領域１０４に当該ページの有効／無効フラグ情報１０５と当該ページのデータ記憶領域内のデータ記憶位置を示す使用／未使用マップ１０６とを含むように、１ページを構成した。【選択図】　　　図１
2004062554.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶領域がセクタ単位に分割され、前記セクタ単位でデータ消去可能なフラッシュメモリの管理方法であって、
前記セクタが、セクタ管理領域と複数のページにより構成され、
前記ページの管理領域に当該ページの有効／無効フラグ情報と当該ページのデータ記憶領域内のデータ記憶位置を示す使用／未使用マップとを含むことを特徴とするフラッシュメモリの管理方法。
【請求項２】
前記有効／無効フラグは１ビットにより構成され、前記使用／未使用マップはｍビットにより構成され、（ｍ＋１）ビットが８の整数倍となるように、前記ｍの値を選択し、前記データ領域は２ｍバイトにより構成され、更に、２ｍ＋（１＋ｍ）／８＝２ｎバイトとなるようなｍを選択することにより前記１ページを構成することを特徴とする請求項１記載のフラッシュメモリの管理方法。
【請求項３】
前記ページの管理領域に、更に、当該ページが前ページに従属するか否かを示すページ拡張フラグを追加したことを特徴とする請求項１記載のフラッシュメモリの管理方法。
【請求項４】
前記有効／無効フラグは１ビットにより構成され、前記使用／未使用マップはｍビットにより構成され、前記ページ拡張フラグは１ビットにより構成され、（ｍ＋２）ビットが８の整数倍となるように、前記ｍの値を選択し、前記データ領域は２ｍバイトにより構成され、更に、２ｍ＋（２＋ｍ）／８＝２ｎバイトとなるようなｍを選択することにより前記１ページを構成することを特徴とする請求項３記載のフラッシュメモリの管理方法。
【請求項５】
データ記憶領域がセクタ単位に分割され、前記セクタ単位でデータ消去可能なフラッシュメモリの管理方法であって、
前記セクタが、セクタ管理領域と複数のページにより構成され、
前記ページの管理領域に当該ページの有効／無効フラグ情報と、当該ページが前ページに従属するか否かを示すページ拡張フラグと、データ領域の記録サイズ情報とを含み、前記データ領域の記録サイズを可変長としたことを特徴とするフラッシュメモリの管理方法。
【請求項６】
前記有効／無効フラグは１ビットにより構成され、前記ページ拡張フラグは１ビットにより構成され、前記記録サイズ情報は最大ｍビットにより構成され、（ｍ＋２）ビットが８の整数倍となるように、前記ｍの値を選択し、前記データ領域は２ｍバイトにより構成され、更に、２ｍ＋（２＋ｍ）／８＝２ｎバイトとなるようなｍを選択することにより前記１ページを構成することを特徴とする請求項５記載のフラッシュメモリの管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、フラッシュメモリの管理方法、特に、携帯電話などで用いる小規模データの書き換えに有用なフラッシュメモリの管理方法に関する。
【０００２】
【従来の技術】
従来、フラッシュメモリでは、１回のフラッシュで消去する最小単位をセクタと称し、このセクタ単位で管理していた。しかしながら、取り扱うデータのサイズがＩＰアドレスやＭＡＣ（Ｍａｃｈｉｎｅ　Ａｄｄｒｅｓｓ　Ｃｏｄｅ）アドレスのように数バイト程度の小規模データである場合、このような小規模データで頻繁にアクセスするようなアプリケーションにおいては、メモリ管理効率の観点から１セクタのサイズが問題となっていた。
【０００３】
図７（ａ）は、従来のセクタを単位とするフラッシュメモリの構成例を示す図であり、ファイルをセクタ７０１に分割し、各セクタの先頭にセクタ管理領域７０２を設け、この管理領域にセクタの消去回数、セクタのリンク先情報を書き込む構成となっている。このような管理方法として、例えば、特開２００２−７２２１号広報には、セクタを更に細かなブロックに分割して各ブロックの先頭に当該ブロックが書き込み済みであるか否かを示す書き込み判別領域を設けることが記載されており、特開２００１−３１２８９１号広報には、メモリをブロックに分割して各メモリブロックに管理ステータス書き込みエリアを設けることが記載され、また、特開平０８−２７３３９０には、ブロックの先頭にブロック消去回数データ格納エリアを設けることが記載されている。
【０００４】
図７（ｂ）は、特開平２０００−７６１１７号広報に記載されているメモリの管理方法であり、各セクタを複数の小ブロック７０３で構成し、各小ブロックは２５６バイトで構成され、６バイトの管理領域７０４と２５０バイトのデータ記憶領域とから構成されている。この場合の管理領域７０４は、ファイル番号７０６、次の記憶部セクタ番号７０７、他の小ブロックへのリンクを示す小ブロックアドレス７０８、小ブロックのデータの有効／無効を示すデータ有効／無効コード７０９から構成されている。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述の従来の方法では、例えば、インターネットのＩＰアドレスのような小規模データ等を携帯電話内部のフラッシュメモリに格納するようなアプリケーションなどのように小規模データを頻繁に書き換える場合にメモリの使用効率が十分なものとはいえなかった。
【０００６】
この発明は、前記従来の方法の問題点を解決して、小規模データを頻繁に書き換える場合のフラッシュメモリを効率よく管理できる方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記課題を解決するために、請求項１記載のフラッシュメモリの管理方法においては、データ記憶領域をセクタ単位に分割し、セクタ単位でデータ消去可能なフラッシュメモリの管理方法において、セクタを、セクタ管理領域と複数のページにより構成し、ページの管理領域に当該ページの有効／無効フラグ情報と当該ページのデータ記憶領域内のデータ記憶位置を示す使用／未使用マップとを含むように構成している。このような構成としたことにより、参照するページの有効／無効が容易に判断でき、大量かつ小規模のページを頻繁に更新、追加する際に好適な構成となっている。
【０００８】
また、請求項３記載のフラッシュメモリの管理方法においては、請求項１記載のページの管理領域に、更に、当該ページが前ページに従属するか否かを示すページ拡張フラグを追加している。これにより、前ページと同一属性を有する小規模データの追加を容易に行うことが出来る。
【０００９】
更に、請求項５記載のフラッシュメモリの管理方法によれば、データ記憶領域をセクタ単位に分割し、セクタ単位でデータ消去可能なフラッシュメモリの管理方法において、セクタが、セクタ管理領域と複数のページにより構成され、ページの管理領域に当該ページの有効／無効フラグ情報と、当該ページが前ページに従属するか否かを示すページ拡張フラグと、データ領域の記録サイズ情報とを含み、前記データ領域の記録サイズを可変長とするようにしている。これにより、メモリ領域が少ない場合でもデータ領域を無駄なく使うことが出来る。
【００１０】
以下、本発明の実施の形態について図面を用いて説明する。尚、図中、各構成成分の大きさ、形状及び配置関係などは、本発明が理解できる程度に概略的に示してあるにすぎず、また、以下に説明する数値的条件は、単なる例示にすぎない。
【００１１】
［第１の実施の形態］
図１（ａ）は、本発明の第１の実施の形態におけるフラッシュメモリのセクタ構造を示しており、フラッシュメモリの消去単位である１セクタ１０１の内部は、セクタ管理領域１０２，と多数のページ１０３に分割された構造をしている。セクタ管理領域１０４には、セクタが使用済みであるか否かを示す有効／無効フラグの他、セクタの消去回数等の情報が含まれている。
【００１２】
１ページは、ページ管理領域１０４とデータ領域１０７とに分割され、ページ管理領域１０４は、更に、有効／無効フラグ１０５と使用／未使用マップ１０６により構成される。この実施の形態においては、１セクタ（３２Ｋｂｙｔｅ）を１０２４分割し、その一つの分割にセクタ管理領域を割り当て、残りの１０２３ページをデータ領域としている。また、各ページ１０３は、３２バイトで構成され、ページ管理領域１０４が２バイト構成で、その内、有効／無効フラグに１ビットを使用し、残りの１５ビットを使用／未使用マップに使用している。従って、各ページのデータ容量は３０バイトである。
【００１３】
有効／無効フラグ１０５の意味は次のとおりである。即ち、そのビット値が“１”であれば、初期化されたままの状態であることを示しており、“０”であれば、そのデータは無効であって廃棄したことを示している。
使用／未使用マップ１０６は、初期状態では全てのビットが“１”であり、各ビットは、そのビットが“１”であれば、データ領域の対応するワードが未使用であることを示し、“０”であれば、データ領域の対応数するワードが使用中であることをそれぞれ示している。従って、初期状態、即ち、当該セクタが消去された直後の状態では、セクタを構成する全てのページは有効かつ未使用である。
【００１４】
図１（Ｃ）は、ページデータの例を示しており、有効／無効フラグが“１”であることは、このページが有効であり、有効なデータを含むことを示す。後続の使用／未使用マップは、この図の例では、先頭の６ビットが“０”で後ろの９ビットが“１”であるので、データ領域の先頭の６ワード（１２バイト）が使用中であり、後ろの９ワード（１８バイト）は未使用領域であることを示している。未使用領域のデータは全てのビットが“１”である。
【００１５】
フラッシュメモリに書き込みを行う場合には、そのアドレスを指定することにより１バイトもしくは１ワード単位で書き込むことが出来る。この実施の形態に示したデータの構成例においては、管理データと本来のデータの双方にアクセスする時、１ワード毎にアクセスする方法が好適である。また、１ページが３２バイト（１６ワード）で構成されていることにより、セクタをページに分割する際に有利である。
【００１６】
新たなデータを追加する必要が生じた場合、この実施の形態においては、ページの使い方に二通りの方法が考えられる。第一は、通常の書き込みであり、有効、かつ、未使用のページを当該セクタの先頭から検索し、使用／未使用マップの未使用箇所にデータを書き込む方法である。すでにそのページがフルで、データの追加が出来ない場合は、新たなページの先頭からデータを書き込むことになるが、その際使用した領域について、使用／未使用マップの該当するビットを“１”にセットして使用中であることを記録しておく。第二は、同一情報に関するデータがすでに書き込んであり、そのデータを更新する必要が有る場合、当該ページのデータを別の場所に読み出しておき、有効／無効フラグを“０”とすることにより、このページを無効とし、別の場所に読み出しておいたデータで更新した後、未使用のページに書き込むことによりデータを更新する方法である。但し、更新はデータに対するもので、同一場所における重ね書きを行うものではない。
【００１７】
これらの動作の間、当該セクタは消去されていないので、データの更新を速やかに行うことができる。また、従来の小ブロックデータ構造と比較すると、データの廃棄（無効化）がページ単位で行われ、かつ、ページ内のデータがワード単位で管理されているので、メモリ領域を無駄なく使用することができる。
【００１８】
図２〜４は、第１の実施の形態におけるメモリ管理プログラムの動作フローを示したものであり、図２は、管理プログラムが、ファイルを構成しているセクタをどのように管理しているかを示すセクタ管理フローである。
【００１９】
変数Ｋ＝０からスタートし（Ｓ２０１）、そのファイルのＫ番目のセクタが有効／無効を前述のフラグにより判定する（Ｓ２０２）。このとき、そのセクタが有効で無ければ、ステップＳ２０８で変数Ｋを歩進させ、次のセクタを調べるためにステップＳ２０２に戻り、ステップＳ２０３で、そのセクタが有効であれば、このセクタの全てのページが無効であるか否かを判定する（Ｓ２０４）。全てのページが無効であれば、ステップＳ２０５で消去回数が限度内であるか否かを判定し、限度内であれば、再使用のために当該セクタを消去し、かつ、セクタ管理領域１０４内のセクタ消去回数に１を加算し（Ｓ２０６）、限度を超えていれば、当該セクタを無効化して（Ｓ２０７）、次のセクタを検索するためにステップＳ２０８に戻る。
【００２０】
ステップＳ２０４で、現在のセクタに有効なページが有れば、現在の処理内容が読み出しで有るか否かを調べ（Ｓ２０９）、読み出しであれば、読み出し処理を行い（Ｓ２１０）、そうでなければ、書き込み処理であるか否かを調べ（Ｓ２１１）、書き込みであれば、書き込み処理を行い（Ｓ２１２）、読み出しでも書き込みでもなければ、処理を終了する（Ｓ２１３）。
【００２１】
図３は、管理プログラムが有効なページにデータを書き込む際の書き込みフローである。変数Ｐ＝０としてスタートし（Ｓ２２１）、Ｐ番目のページの有効／無効フラグによる判定をおこなう（Ｓ２２２、Ｓ２２３）。そのページが無効であればステップＳ２２４でＰの値を歩進させて、次のページを調べるためにステップＳ２２２に戻り、そのページが有効であれば、現在の書き込み処理がデータの更新か否かを調べ（Ｓ２２５）、データの更新であれば、更新データの有無を調べ（Ｓ２２６）、そのページに更新すべきデータが存在すれば、更新データを一時記憶しておき、当該ページを無効化した後（Ｓ２２７）、データの書き込みを行う（Ｓ２２８）。ここで、更新とは、未使用のページに書き込むことによりデータを更新することであり、同一場所における重ね書きを行うものではない。
【００２２】
ステップＳ２２６で、そのページに更新すべき該当データが存在しなければ、次のページを検索するために、ステップＳ２２４に戻る。
【００２３】
ステップＳ２２５で、現在の書き込み処理がデータの更新処理でなければ、そのページがデータフルであるか否かを調べる（Ｓ２２９）。データフルでなければ書き込み処理を行い（Ｓ２２８）、データフルであれば、次のページを検索するためにステップＳ２２４に戻る。書き込み処理（Ｓ２２８）が終了すれば、処理を終了する（Ｓ２３０）。
【００２４】
図４は、管理プログラムが有効ななページからデータを読み込む際の読み込みフローである。
【００２５】
変数Ｐ＝０でスタートし（Ｓ２４１）、そのセクタのＰ番目のセクタの有効／無効フラグにより当該ページの有効／無効判定を行い（Ｓ２４２，Ｓ２４３）、無効と判定されると、次のページを検索するためにステップＳ２４４でＰの値を歩進させてステップＳ２４２に戻る。ステップＳ２４３で、ページが有効であると判定されると、該当するデータが有るか否かを調べ（Ｓ２４５）、有れば、読み込み処理を行い（Ｓ２４６）、処理を終了する（Ｓ２４７）。ステップＳ２４５で該当するデータが無ければステップＳ２４４に戻る。
【００２６】
図３，４のフローの中の、ステップＳ２２６，Ｓ２４５において、該当するデータの有無を検出しているが、この処理のためには予めデータと保存先のアドレスとを対応させておくことが必要になるが、この実施の形態においては、そのために使用／未使用マップ１０６を用いている。使用／未使用マップ１０６を用いない場合には、更新すべきデータか否かの判定を行う為に、別個にデータ管理領域を設けるか、データ自信が自己を特定する為の情報を有していなければならない。また、そのページが有効か無効かの判定はページの先頭の１ワードを読み取り、その１ワードの最上位ビットを調べることにより行うことができる。従って、無効ページを迅速に判断できる。また、有効なページに書き込み可能な領域が有るか否かの判断も、この先頭の１ワードを調べることにより判断できる。
【００２７】
［第２の実施の形態］
図５は、本発明の第２の実施の形態を示す図であり、第１の実施の形態におけるデータ構造を拡張する構造となっている。
【００２８】
図５（ａ）は、第２の実施の形態におけるフラッシュメモリのセクタ内に形成されたページの構造を示している。この場合、管理領域４０１に４バイト、データ領域４０２に６０バイトを割り当て、１ページ４００全体を６４バイトで構成している。
【００２９】
管理領域４０１は、有効／無効フラグ４０３、ページ拡張フラグ４０４及び使用／未使用マップ４０５から構成される。有効／無効フラグ４０３及び使用／未使用マップ４０５は、第１の実施の形態における有効／無効フラグ１０５及び使用／未使用マップ１０６にそれぞれ対応している。
【００３０】
ページ拡張フラグ４０４は、その値が“０”であるとき当該ページが１ページ前のページに従属することを意味し、その値が“１”の場合には、当該ページがどのページにも従属せず独立したページであることを意味している。有効／無効フラグ４０３は、ページ拡張フラグ４０４よりも優先する。ただし、ページが無効になっても、ページ拡張フラグは有効であるため、無効となったページに従属するページが存在する可能性はある。
【００３１】
この実施の形態における使用／未使用マップは３０ビットで構成しており、これはデータ領域４０２を３０ワードまで管理できることを意味している。
【００３２】
図５（ｂ）は、ページ拡張データ例を示したものであり、最初のページのページ拡張フラグが“１”であり、後続の２ページのページ拡張フラグが“０”であるため、後続の２ページは先頭の１ページに従属しており、合計３ページで一体のデータを形成していることを示している。最初の２ページは、使用／未使用マップの値が全て“０”であるので、データ領域の全てのワードを使用しているが、最後のページの使用／未使用マップは、先頭の３ビットのみが“０”であるので、データ領域の先頭の３ワード（６バイト）のみが使用されていることを示している。
【００３３】
尚、この実施の形態におけるデータ構造においては、現在のページが最後のページであるか否かを判定するために、次のページのページ拡張フラグを参照する必要がある。
【００３４】
［第３の実施の形態］
図６は、本発明の第３の実施の形態を示す図である。この実施の形態においては、第１、２の実施の形態と異なり、可変長データを扱える構造となっている。
【００３５】
図６（ａ）は、可変長ページの構造を示している。この実施の形態では、可変長ページ５００の管理領域５０１に１バイトを割り当て、データ領域５０２は可変長である。管理領域５０１は、有効／無効フラグ５０３、ページ拡張フラグ５０４，及びレコード長５０５とから構成される。このうち、有効／無効フラグ５０３とページ拡張フラグを５０４は、第２の実施の形態における有効／無効フラグ４０３とページ拡張フラグ４０４にそれぞれ対応する。新たにレコード長５０５を導入したので、第１及び第２の実施の形態における使用／未使用マップは必要としない。レコード長５０５は、６ビットで構成しているので、データ長は、最大６４ワードまで指定できるが、本実施の形態においては、バイト単位で細かく設定できるようにするため、また、ページ全体の長さを考えて最大６３バイトまでに設定している。これにより、１ページの最大長が６４バイトとなる。
【００３６】
データ長を可変長とすると、使用／未使用マップを利用しなくても使用領域が明らかであるのでメモリを無駄なく使用できるメリットがある。また、この構成によれば小規模データを頻繁に書き換える場合に便利な構成となっている。
【００３７】
図６（ｂ）は、第３の実施の形態における可変長ページデータの例である。管理領域１バイトの先頭ビットが“１”であることは、このページが有効であることを示し、ページ拡張フラグが“１”であることは、このページが独立ページであって拡張されたぺーじでは無いことを示している。レコード長は、“１０００００”であるので、３２バイトであることを示している。
【００３８】
次のページも先頭ビットが“１”であるので、このページが有効であることを示しているが、ページ拡張フラグが“０”であるので、このページが直前のページに従属する拡張ページであることを示している。また、ページのレコード長は“０１００００”であるので、１６バイトであることを示している。属性が同一である小規模データをこのような拡張ページにより次々に元のページに追加できるので、利便性がよい。
【００３９】
尚、本発明は、前述の実施の形態に限定されるものではなく、本発明の趣旨に基づいて種々変形させることが可能である。例えば、第１の実施の形態においては、ページ管理領域を、１ビットの有効／無効フラグと、１５ビットの使用／未使用マップと、３０バイトのデータ領域から構成し、１ページが３２バイトとなる構成としているが、これを一般化して、有効／無効フラグは１ビットにより構成し、使用／未使用マップはｍビットにより構成し、（ｍ＋１）ビットが８の整数倍となるように、ｍの値を選択し、データ領域は２ｍバイトにより構成し、更に、２ｍ＋（１＋ｍ）／８＝２ｎバイトとなるようなｍを選択することにより前記１ページを構成するようにしても良い。
【００４０】
また、第２の実施の形態においては、ページ管理領域を１ビットの有効／無効フラグと、１ビットのページ拡張フラグと、３０ビットの使用／未使用マップと、６０バイトのデータ領域から構成し、１ページが６４バイトとなる構成としているが、これを一般化して、有効／無効フラグ及びページ拡張フラグを１ビットにより構成し、使用／未使用マップはｍビットにより構成し、（ｍ＋２）ビットが８の整数倍となるように、ｍの値を選択し、データ領域は２ｍバイトにより構成し、更に、２ｍ＋（２＋ｍ）／８＝２ｎバイトとなるようなｍを選択することにより前記１ページを構成するようにしても良い。
【００４１】
更に、第３の実施の形態においては、ページ管理領域を１ビットの有効／無効フラグと、１ビットのページ拡張フラグと、６ビットのレコード長と、最大６３バイトのデータ領域から構成し、１ページが６４バイトとなる構成としているが、これを一般化して、有効／無効フラグ及びページ拡張フラグを１ビットにより構成し、レコード長をｍビットにより構成し、（ｍ＋２）ビットが８の整数倍となるように、ｍの値を選択し、データ領域は２ｍバイトにより構成し、更に、２ｍ＋（２＋ｍ）／８＝２ｎバイトとなるようなｍを選択することにより前記１ページを構成するようにしても良い。
【００４２】
【発明の効果】
以上詳細に説明したように、請求項１に係る発明によれば、フラッシュメモリの消去単位であるセクタをページに分割し、そのページの管理領域の先頭に有効／無効フラグを設けたことにより、ページの最初の１バイトもしくは１ワードを読み出すだけで、そのページの有効性を判断できる。従って、小規模かつ大量のページを頻繁に更新したり、追加するようなアプリケーションに適用する際に好都合な構成である。また、データ領域のどの部分が使用されているかを示す使用／未使用マップを導入したことにより、データ記憶領域を無駄なく使用することができる。
【００４３】
また、請求項３に係る発明によれば、そのページの管理領域に、有効／無効フラグに加えてページ拡張フラグを備えているので、元のページに格納されたデータと同一属性の小規模データの追加などに便利である。
【００４４】
更に、請求項５に係る発明によれば、そのページの管理領域に、有効／無効フラグに加えてレコード長を備えているので、データ長を可変長とすることができ、メモリ領域が少ない場合にもデータ記憶領域を無駄なく使用することが出来る。この場合も、小規模かつ大量のページを頻繁に更新したり、データを追加するのに好適な構成となっている。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態におけるデータ構成を示した図である。
【図２】第１の実施の形態における管理プログラムの動作フロー（セクタ管理フロー）図である。
【図３】第１の実施の形態における管理プログラムの動作フロー（データ書き込みフロー）図である。
【図４】第１の実施の形態における管理プログラムの動作フロー（データ読み込みフロー）図である。
【図５】本発明の第２の実施の形態におけるデータ構造を示した図である。
【図６】本発明の第３の実施の形態におけるデータ構造を示した図である。
【図７】従来技術の説明図である。
【符号の説明】
１０１　　　　　　　　　　　セクタ
１０２　　　　　　　　　　　セクタ管理領域
１０３、４００、５００　　　ページ
１０４、４０１、５０１　　　ページ管理領域
１０５、４０３、５０３　　　有効／無効フラグ
１０６、４０５　　　　　　　使用／未使用マップ
１０７、４０２、５０２　　　データ領域
４０４、５０４　　　　　　　ページ拡張フラグ
５０５　　　　　　　　　　　レコード長
【図１】
2004062554.tif 000003
【図２】
2004062554.tif 000004
【図３】
2004062554.tif 000005
【図４】
2004062554.tif 000006
【図５】
2004062554.tif 000007
【図６】
2004062554.tif 000008
【図７】
2004062554.tif 000009