(57)【特許請求の範囲】
【請求項１】
複数の書き換え単位からなるデータ格納領域と、
前記データ格納領域を構成する前記書き換え単位を複数に分割した読み書き単位毎の使用情報を格納する使用情報格納領域とを有し、
前記使用情報格納領域は前記データ格納領域とは別の書き換え単位からなり、
使用されているデータ格納領域の個々の読み書き単位の連鎖情報を書き込む連鎖情報書き込み部を前記データ格納領域の一部に設けたデータファイリングシステム。
【請求項２】
複数の書き換え単位からなるデータ格納領域と、
前記データ格納領域を構成する前記書き換え単位を複数に分割した読み書き単位毎の使用情報を格納する使用情報格納領域とを有し、
前記使用情報格納領域は前記データ格納領域とは別の書き換え単位からなり、
使用されているデータ格納領域の個々の読み書き単位の連鎖情報を書き込む連鎖情報書き込み部を前記データ格納領域の一部に設け、前記連鎖情報書き込み部が飽和状態となった場合は、前記データ格納領域の使用されている読み書き単位の次の読み書き単位を連鎖情報書き込み部として用いるデータファイリングシステム。
【請求項３】
使用情報格納領域には、データ格納領域の状態に応じて、使用中を示す信号である「１０」、使用済みを示す信号である「００」、または、未使用である信号である「１１」のいずれかが格納される請求項１または２のいずれかに記載のデータファイリングシステム。
【請求項４】
データ格納領域の未使用部分にデータを格納するステップと、使用されているデータ格納領域の書き換え単位を複数に分割した読み書き単位毎の連鎖情報を前記データ格納領域の一部に格納するステップとを有する第１ステップと、
データが格納された前記データ格納領域の読み書き単位の使用情報を前記データ格納領域とは別の書き換え単位からなる使用情報格納領域に格納する第２ステップとを有するデータファイリング方法。
【請求項５】
データ格納領域の未使用部分にデータを格納するステップと、使用されているデータ格納領域の書き換え単位を複数に分割した読み書き単位毎の連鎖情報を前記データ格納領域の一部に格納するステップとを有する第１ステップと、
データが格納された前記データ格納領域の読み書き単位の使用情報を前記データ格納領域とは別の書き換え単位からなる使用情報格納領域に格納する第２ステップと、
前記連鎖情報が格納されている領域のデータ量が飽和した後は、データ格納領域として用いられている領域の次の読み書き単位に連鎖情報を格納する第３ステップと、
前記使用情報格納領域のうち、前記飽和した連鎖情報格納領域を使用済み状態に書き換える第４ステップとを有するデータファイリング方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データファイリングシステムおよびデータファイリング方法に関するものである。
【０００２】
【従来の技術】
データファイリングシステムとしてはマイクロソフト社のＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）方式が一般に知られている。図９にＦＡＴ方式のデータファイリングシステムの構成図を示す。メモリ領域は、クラスタと呼ばれる読み書き単位から構成されており、全体はブートセクタ１２、ＦＡＴ領域１３、ＦＡＴ領域のコピー１４、データ領域１５に分割されている。１つのデータは、データ領域１５内の１つまたは複数のクラスタを使用して記録されている。ＦＡＴ領域１３には、データ領域１５内のクラスタの使用状況と、データがデータ領域１５内のどのクラスタを使用して記録されているかというクラスタの連鎖情報が記録される。すなわち、このＦＡＴ情報１３を参照することにより、データ領域１５内の１つのまたは複数のクラスタにわたって記録されているデータを読み出すことができる。ＦＡＴ領域のクラスタ連鎖情報は、３桁のクラスタ番号を記録するため少なくとも１２ビット以上のビットを用いて構成される。ＦＡＴのコピー領域１４はＦＡＴ領域１３が破壊した場合の予備領域であり、ＦＡＴ領域１３と同一の内容が記録され、ＦＡＴ領域１３が破壊した場合には、ＦＡＴ領域１３の代わりにＦＡＴ領域のコピー１４を用いる。
【０００３】
図１０に、ＦＡＴ方式のデータファイリングシステムの動作説明図を示す。本例はあるデータをＦＡＴ方式のデータファイリングシステムに記録したときのものである。ＦＡＴ１３領域には、データが複数のクラスタに渡って記録されている場合の次のクラスタ番号が記録されており、最後のクラスタはＦＦＦと記録される。この例の場合、クラスタ番号００１には００２と記録されており、これは次のデータが００２のクラスタに記録されていることを示している。クラスタ番号００２には００３と記録されており、次のデータは００３のクラスタに記録されていることを示している。同様に、クラスタ番号００３には００４と記録されており、クラスタ番号００４はＦＦＦと記録されている。すなわちこのデータはクラスタ００１、クラスタ００２、クラスタ００３、クラスタ００４の順に連続して記述されており、クラスタ００４で終了していることがわかる。
【０００４】
以上の内容から明らかなように、ＦＡＴ方式によるデータファイリングシステムでは、ＦＡＴ領域１１にはクラスタ使用状況と連鎖情報が記録されるため、ファイルを書き換える毎にＦＡＴ領域１３も書き換える必要がある。
【０００５】
また、特開平１１−２４９９６８号公報には、記録媒体内に複数のファイル割り当てテーブル領域を作成し、ファイル記録時には所定の規則に従って選択したファイル割り当てテーブルのいずれかにファイル関連情報を作成することにより寿命をのばす方法が記載されている。前記所定の規則とは、ローテーション、往復、乱数により複数のファイル割り当てテーブル領域の各々の領域の使用回数を平準化するように定められているものである。
【０００６】
【発明が解決しようとする課題】
ＦＡＴ方式による方法では、ＦＡＴ領域にはファイルのクラスタ状況が記録されるため、ファイルを書き換える毎にＦＡＴ領域も書き換える必要がある。媒体の書き換えは領域（通常はセクタ）単位で行われ、ＦＡＴが記録されている領域は固定のため、この領域の書き換え回数は、他の領域の書き換え回数に比べて著しく増大することになる。書き換え回数に制限のある記録媒体にこの方式を用いた場合、ＦＡＴ領域の書き換え回数の増大により、記録媒体自体の寿命が短くなるという問題点があった。
【０００７】
また、特開平１１−２４９９６８号公報による方法では、ＦＡＴ領域の書き換え回数を減らすためにはＦＡＴ領域の数を増やす必要がある。書き換え回数を飛躍的に向上させるためにはＦＡＴ領域を数多く用意する必要があり、その場合にはＦＡＴ領域を増やした分だけデータ領域が小さくなってしまうという問題点があった。
【０００８】
本発明は上記課題を解決するものであり、書き換え回数に制限のある記録媒体において、書き込み回数を減少させ、なおかつ書き込み対象となる領域を記録媒体全体に渡ってローテーションすることにより、データ領域を減少させることなく記録媒体の寿命を飛躍的に延ばすことができるデータファイリングシステムを提供するものである。
【０００９】
【課題を解決するための手段】
この目的を達成するために、本発明の第１のデータファイリングシステムは、複数の書き換え単位からなるデータ格納領域と、前記データ格納領域を構成する前記書き換え単位を複数に分割した読み書き単位毎の使用情報を格納する使用情報格納領域とを有し、前記使用情報格納領域は前記データ格納領域とは別の書き換え単位からなり、使用されているデータ格納領域の個々の読み書き単位の連鎖情報を書き込む連鎖情報書き込み部を前記データ格納領域の一部に設けるものである。
【００１０】
また、本発明の第２のデータファイリングシステムは、複数の書き換え単位からなるデータ格納領域と、前記データ格納領域を構成する前記書き換え単位を複数に分割した読み書き単位毎の使用情報を格納する使用情報格納領域とを有し、前記使用情報格納領域は前記データ格納領域とは別の書き換え単位からなり、使用されているデータ格納領域の個々の読み書き単位の連鎖情報を書き込む連鎖情報書き込み部を前記データ格納領域の一部に設け、前記連鎖情報書き込み部が飽和状態となった場合は、前記データ格納領域の使用されている読み書き単位の次の読み書き単位を連鎖情報書き込み部として用いるものである。
【００１２】
また、本発明の第３のデータファイリングシステムは、使用情報格納領域には、データ格納領域の状態に応じて、使用中を示す信号である「１０」、使用済みを示す信号である「００」、または、未使用である信号である「１１」が格納されるものである。
【００１３】
また、本発明の第４のデータファイリング方法は、データ格納領域の未使用部分にデータを格納するステップと、使用されているデータ格納領域の書き換え単位を複数に分割した読み書き単位毎の連鎖情報を前記データ格納領域の一部に格納するステップとを有する第１ステップと、データが格納された前記データ格納領域の読み書き単位の使用情報を前記データ格納領域とは別の書き換え単位からなる使用情報格納領域に格納する第２ステップとを有するものである。
【００１４】
また、本発明の第５のデータファイリング方法は、データ格納領域の未使用部分にデータを格納するステップと、使用されているデータ格納領域の書き換え単位を複数に分割した読み書き単位毎の連鎖情報を前記データ格納領域の一部に格納するステップとを有する第１ステップと、データが格納された前記データ格納領域の読み書き単位の使用情報を前記データ格納領域とは別の書き換え単位からなる使用情報格納領域に格納する第２ステップと、前記連鎖情報が格納されている領域のデータ量が飽和した後は、データ格納領域として用いられている領域の次の読み書き単位に連鎖情報を格納する第３ステップと、前記使用情報格納領域のうち、前記飽和した連鎖情報格納領域を使用済み状態に書き換える第４ステップとを有するものである。
【００１５】
【発明の実施の形態】
本発明の一実施の形態について、図１、図２、図３、図４、図５、図６、図７および図８を参照しながら説明する。
ここでは、記録媒体としてフラッシュメモリを用いた場合の例について説明する。
【００１６】
図１は本発明の一実施の形態のフラッシュメモリ上のデータファイリングシステムの構成図、図２は同構成の詳細説明図、図３は同動作説明図（ファイル新規作成時）、図４は同動作説明図（クラスタが飽和しないファイル追加書き込み時）、図５は同動作説明図（クラスタが飽和したファイル追加書き込み時）、図６は同動作説明図（ファイル更新時）、図７は同動作説明図（不要領域の１回目の削除時）、図８は同動作説明図（不要領域の２回目の削除時）である。
【００１７】
フラッシュメモリは電気的に読み出し、書き込みが可能なメモリであり、次のような特徴を持つ。（１）消去時は各ビットは１となる。（２）１→０の書き換え（上書き）は可能で書き込み回数にカウントされない。０→１に書き換えることは不可能でこのためには消去する必要があり、書き込み回数が１回使用される。（３）書き込み回数には制限（寿命）がある。（４）１つまたは複数のセクタと呼ばれる単位に分割されており、消去はセクタ単位で行われる。
【００１８】
図１に示すように、フラッシュメモリはその構成上、書き換え単位であるセクタ１に分かれており、各セクタを読み書き単位２（クラスタと呼ぶ）に分割する。また、全体をデータ領域３とクラスタ使用情報格納領域４に分ける。ここで、データ領域３内のセクタのうち、１つのセクタを予備セクタ５としておく。また、クラスタ使用情報格納領域の予備領域１６を設けておく。
【００１９】
図２に示すように、クラスタ使用情報格納領域４内にクラスタ使用情報６を設け、データ領域３内のクラスタ２毎にクラスタ使用情報格納領域４内のクラスタ使用情報６を割り当てる。クラスタ使用情報６は２ビットで構成し、未使用＝１１、使用中＝１０、使用済み＝００と定義する。このように定義することにより、未使用→使用中、使用中→使用済みへ変更する場合は、１→０の変化のため、上書きにより変更できる形式であり、書き込み回数を増やさずに変更できる。
【００２０】
データ領域３はファイルを格納するデータ領域８またはそのファイルを格納したデータ領域のクラスタの連鎖情報書き込み部７として使用する。連鎖情報書き込み部７は、連鎖情報書き込み部自体の連鎖情報９とクラスタ連鎖情報１０から構成される。連鎖情報書き込み部自体の連鎖情報９は、連鎖情報書き込み部が複数のクラスタに分かれる場合の次のクラスタ番号を格納し、最終のクラスタ番号にはＦＦＦＦを格納する。クラスタ連鎖情報１０は、ファイルを格納したデータ領域３のクラスタ番号を順に格納し、最終のクラスタ番号にはＦＦＦＦを格納する。
【００２１】
ファイルを新規に作成する場合の動作を図３を参照しながら説明する。
【００２２】
ファイルを新規に作成する場合には、まず、クラスタ使用情報格納領域４を参照し、未使用クラスタを検索し、見つかったクラスタ（本例ではクラスタ番号０００１）をファイルを格納するデータ領域のクラスタの連鎖情報書き込み部７として確保する。次にクラスタ使用情報格納領域４を参照し、ファイルを格納するのに必要な数の未使用クラスタを検索し、そのクラスタにファイルを格納する。本例ではクラスタ番号０００２、０００３となる。その後、先ほど確保したクラスタの連鎖情報書き込み部７のクラスタ連鎖情報１０に、ファイルを格納したクラスタのクラスタ番号を格納する。ファイルの終端のクラスタ連鎖情報１０には終了符号としてＦＦＦＦと格納する。本例では０００２、０００３、ＦＦＦＦと格納する。その後、クラスタの連鎖情報格納部７の連鎖情報格納部自体の連鎖情報９をセットする。本例では連鎖情報書き込み部７は１クラスタであるため、ＦＦＦＦを格納する。最後に、使用したクラスタに対応するクラスタ使用情報６を使用中に変更する。本例ではクラスタ番号０００１、０００２、０００３のクラスタ使用情報６が使用中となる。
【００２３】
ファイルを追加書き込みする場合の動作を図４、図５を参照しながら説明する。
【００２４】
ファイルの追加書き込みの場合は、図４に示すように、ファイルの元の部分は変更せず、その末尾に新しいデータを追加する。すなわち、元のデータのクラスタの末尾にデータを追加する。元のデータのクラスタが飽和した場合は、クラスタ使用情報格納領域４を参照し、追加分のデータを格納するのに必要な数の未使用クラスタを検索し、そのクラスタにデータを格納する。その後、元のデータの連鎖情報書き込み部７のクラスタ連鎖情報１０の末尾の終了符号ＦＦＦＦを追加したデータのクラスタ番号で上書きし、ファイルの終端に新たに終了符号ＦＦＦＦを格納する。最後に使用したクラスタに対応するクラスタ使用情報６を使用中に変更する。本例ではクラスタ番号０００４のクラスタ使用情報６が使用中となる。
【００２５】
クラスタ連鎖情報１０を格納するクラスタが飽和した場合には、図５に示すように、未使用クラスタを検索し、連鎖情報書き込み部として新たにクラスタを確保する。クラスタ確保後、元の連鎖情報書き込み部７の連鎖情報書き込み部自体の連鎖情報９（ＦＦＦＦとなっている）に新たに確保したクラスタ番号をセットする。その後、新たに確保した連鎖情報書き込み部のクラスタ連鎖情報に続きのファイルのクラスタ番号を書き込む。新たに確保した連鎖情報書き込み部自体の連鎖情報にはＦＦＦＦをセットする。
【００２６】
ファイルの内容を更新する場合の動作を図６を参照しながら説明する。
【００２７】
ファイルの内容を更新する場合は、ファイルの元の部分が変更となる。この場合には元のファイルを格納していたクラスタを使用済とし、新たにクラスタを確保するようにする。すなわち、元のファイルを格納していたクラスタのクラスタ使用情報６を使用済とする。元のファイルの連鎖情報書き込み部７のクラスタ使用情報６も使用済みとする。（元のファイルを格納していたクラスタの内容は残るが、そのクラスタの使用情報を使用済みとすることで、データを削除したのと同等となる。）その後、クラスタ使用情報格納領域４を参照し、未使用のクラスタを検索し、ファイルの新規作成時と同様にして、連鎖情報書き込み部７およびファイルを格納する。本例では、クラスタ番号０００４に連鎖情報書き込み部７を確保し、クラスタ番号０００５、０００６にファイルを格納することになる。連鎖情報書き込み部７のクラスタ連鎖情報１０の内容は新たにファイルを格納したクラスタ番号の内容になり、本例では０００５、０００６、ＦＦＦＦとなる。最後に使用したクラスタに対応するクラスタ使用情報６を使用中に変更する。本例ではクラスタ番号０００４、０００５、０００６のクラスタ使用情報６が使用中となる。
【００２８】
以上の方法で、データ書き込みを行っていくが、新たに未使用のクラスタを取得しようとしたときに予備セクタのクラスタしか残っていない場合の動作を図７を参照しながら説明する。
【００２９】
（ａ）に示すように未使用のクラスタが予備セクタ５にしか残っていない場合は、まず（ｂ）に示すように、一番古いセクタ１１の内容を予備セクタ５へコピーする。このときセクタ中のクラスタのうち、クラスタ使用情報６が使用中のクラスタのみコピーし、他のクラスタはコピーしない。即ち、予備セクタ５中の残りのクラスタは未使用のままとなる。本例ではセクタ１が一番古いセクタ１１である。
【００３０】
次に（ｃ）に示すように、一番古いセクタ１１を消去し、このセクタを変更後の予備セクタ５ａとする。また、クラスタ使用情報格納領域４をその予備領域１６へコピーする。このとき、一番古いセクタ１１のクラスタ使用情報はコピーせず、未使用のままとしておく。そしてクラスタ使用情報格納領域４を削除し、このセクタを新たにクラスタ使用情報格納領域の予備領域とする。このとき初めて書き込み回数が使用される。
【００３１】
最後に（ｄ）に示すように、コピーしたセクタ（元の予備セクタ５）の未使用クラスタから、取得したかったクラスタを取得する。このとき変更後の一番古いセクタ１１ａはセクタ２となっている。
【００３２】
さらに書き込みを続け、データ書き込みを行っていくが、新たに未使用クラスタを取得しようとしたときに予備セクタのクラスタしか残っていない場合が再発生する。この場合の処理を図８を参照しながら説明する。
【００３３】
（ａ）に示すように、未使用クラスタが変更後の予備セクタ５ａにしかない場合は、まず（ｂ）に示すように、変更後の一番古いセクタ１１ａの内容を変更後の予備セクタ５ａへコピーする。このときセクタ中のクラスタのうち、使用中のクラスタのみコピーし、他のクラスタはコピーしない。本例では変更後の一番古いセクタ１１ａはセクタ２である。
【００３４】
次に、変更後の一番古いセクタ１１ａを消去し、このセクタをさらなる変更後の予備セクタ５ｂとする。また、クラスタ使用情報格納領域４をその予備領域１６へコピーする。このとき、一番古いセクタ１１ａのクラスタ使用情報はコピーせず、未使用のままとしておく。そしてクラスタ使用情報格納領域４を削除し、このセクタを新たにクラスタ使用情報格納領域の予備領域とする。このとき書き込み回数が使用される。
【００３５】
最後に、コピーしたセクタ（元の予備セクタ５ａ）の未使用クラスタから、取得したかったクラスタを取得する。
【００３６】
以上より、消去される（すなわち書き込み回数が使用される）回数はファイル更新やファイル追加書き込みごとでなく、未使用クラスタが予備セクタしかなくなったときであり、書き込み回数の発生が少ない。なおかつ、消去されるセクタはローテーションされ、あるセクタに集中することがない。
【００３７】
すなわち、書き込み回数が減少し、なおかつ消去されるセクタが全セクタで平準化されることにより、データ領域を減らすことなく記録媒体の寿命を飛躍的にのばすことができる。
【００３８】
なお、クラスタ使用情報格納領域の予備領域１６を複数確保することによってさらに書き込み回数の集中が削減でき、さらに記録媒体の寿命を延ばすことができる。この場合でも、クラスタ使用情報は２ビットで構成されるため、クラスタ使用情報格納領域の予備領域を複数確保しても、データ領域の減少を最低限にすることができる。
【００３９】
【発明の効果】
書き換え回数に制限のある記録媒体において、書き込み回数を減少させ、なおかつ書き込み対象となる領域を記録媒体全体に渡ってローテーションすることにより、データ領域を減少させることなく記録媒体の寿命を飛躍的に延ばすことができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態のデータファイリングシステムの構成図
【図２】同構成の詳細説明図
【図３】  同動作説明図（ファイル新規作成時）
【図４】同動作説明図（クラスタが飽和しないファイル追加書き込み時）
【図５】同動作説明図（クラスタが飽和したファイル追加書き込み時）
【図６】同動作説明図（ファイル更新時）
【図７】同動作説明図（不要領域の１回目の削除時）
【図８】同動作説明図（不要領域の２回目の削除時）
【図９】従来のＦＡＴ方式のデータファイリングシステムの構成図
【図１０】従来のＦＡＴ方式のデータファイリングシステムの動作説明図
【符号の説明】
１      セクタ
２      読み書き単位（クラスタ）
３      データ領域
４      クラスタ使用情報格納領域
５      予備セクタ
５ａ    変更後の予備セクタ
５ｂ    さらなる変更後の予備セクタ
６      クラスタ使用情報
７      連鎖情報書き込み部
８      ファイルを格納するデータ領域
９      連鎖情報書き込み部自体の連鎖番号
１０    クラスタ連鎖情報
１１    一番古いセクタ
１１ａ  変更後の一番古いセクタ
１２    ブートセクタ
１３    ＦＡＴ領域
１４    ＦＡＴ領域のコピー
１５    データ領域
１６    クラスタ使用情報格納領域の予備領域
【図１】
0004443705.tif 000002
【図２】
0004443705.tif 000003
【図３】
0004443705.tif 000004
【図４】
0004443705.tif 000005
【図５】
0004443705.tif 000006
【図６】
0004443705.tif 000007
【図７】
0004443705.tif 000008
【図８】
0004443705.tif 000009
【図９】
0004443705.tif 000010
【図１０】
0004443705.tif 000011