(57)【要約】【課題】  そこで、本発明の目的は、フラッシュメモリ内のデータの消去回数を減少させる構成を有するファイルシステム及びデータ管理方法を提供することにある。【解決手段】  上記の課題を解決するため、入力データを反転して蓄積データとするデータ制御部と、蓄積データを格納する格納領域と、格納領域の使用状況が書き込まれるテーブル部分とからなる不揮発性記憶部と、テーブル部分に書き込んだ使用状況に応じて、蓄積データを格納領域に格納するように不揮発性記憶部を制御する制御部と、を有するファイルシステムを提供する。【選択図】    図１
2009271848.tif 000002
【特許請求の範囲】
【請求項１】
入力データの論理を反転して蓄積データとするデータ制御部と、
前記蓄積データを格納する格納領域と、前記格納領域の使用状況が書き込まれるテーブル部分とからなる不揮発性記憶部と、
前記テーブル部分に書き込まれた前記使用状況に応じて、前記蓄積データを前記格納領域に格納するように不揮発性記憶部を制御する制御部と
を有することを特徴とするファイルシステム。
【請求項２】
前記制御部は、
前記テーブル部分を初期状態にする手段と、
前記不揮発性記憶部の前記格納領域の使用状態に応じて前記テーブル部分に”０”の状態を書き込む手段と、
前記テーブル部分における”０”の状態に応じて、前記蓄積データを格納する前記格納領域を選択する選択手段と、
前記選択した格納領域に前記蓄積データを書き込む手段と、
すべての前記格納領域を使用したときに、前記格納領域内の蓄積データを消去するように制御する手段と
を有することを特徴とする請求項１記載のファイルシステム。
【請求項３】
前記テーブル部分は、前記格納領域の前記使用状態に応じて”０”の状態が書き込まれる使用状態表示領域を有し、
前記選択手段は、前記使用状態表示領域のビットに”０”が書き込まれているときは、前記”０”が書き込まれている使用状態表示領域に対応する前記格納領域をさけて、前記格納領域を選択することを特徴とする請求項２記載のファイルシステム。
【請求項４】
蓄積データを格納する格納領域と、前記格納領域の使用状況が書き込まれるテーブル部分とからなる不揮発性記憶部と、前記テーブル部分に書き込まれた前記使用状況に応じて、前記蓄積データを前記格納領域に格納するように制御する制御部と、を有するファイルシステムにおけるデータの管理方法であって、
前記格納領域及び前記テーブル部分に属するビットに”１”を書き込む初期化工程と、
前記蓄積データを前記格納領域から排出する際には、前記格納領域に対応する前記テーブル部分の使用状況表示領域のすべてのビットに”０”を書き込むデータ排出工程と、
”０”が書き込まれた前記テーブル部分の前記使用状況表示領域に対応する前記格納領域をさけて、前記蓄積データを格納する前記格納領域を選択し、前記蓄積データを前記選択した格納領域に格納する工程と、
前記テーブル部分に前記使用状況を書き込む書込み工程と、
を有することを特徴とするデータの管理方法。
【請求項５】
前記格納領域のすべての領域が、”０”が書き込まれた状態又は前記蓄積データを保持する状態となったときは、前記格納領域に属するビットに”１”を書き込む工程をさらに有することを特徴とする請求項４記載のデータの管理方法。
【請求項６】
蓄積データを格納する格納領域と、前記格納領域を含む消去領域と、前記消去領域の使用状況が書き込まれる消去管理テーブルとからなる不揮発性記憶部と、前記消去管理テーブルに書き込まれた使用状況に応じて、前記蓄積データを前記格納領域に格納するように制御する制御部と、を有するファイルシステムにおけるデータの管理方法であって、
前記蓄積データを格納する前記格納領域、及び、前記消去領域管理テーブルに属するビットにすべて”１”を書き込む工程と、
前記蓄積データを前記格納領域に書き込む工程と、
前記消去領域管理テーブルに、前記消去領域内の前記格納領域の前記使用状況に応じた、使用状況データを書き込む工程と、
前記使用状況データに応じて、前記蓄積データを格納する前記格納領域を選択し、前記選択した格納領域に前記蓄積データを書き込む、蓄積データの書き込み工程と、
前記蓄積データの書き込み工程後に、前記消去領域管理テーブルに前記使用状況データを書き込む工程と、を有することを特徴とするデータの管理方法。
【請求項７】
前記使用状況データに基づき、前記蓄積データを書き込めないと判断するときは、消去領域についてデータ消去動作を行う工程を、さらに有することを特徴とする請求項６記載のデータの管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
フラッシュメモリを用いたファイルシステム及びそのファイルシステムにおけるデータ管理方法に関する。
【背景技術】
【０００２】
フラッシュメモリ単体の記憶容量の増大に伴い、フラッシュメモリを主記憶に用いたファイルシステムを内蔵又は接続して使用する民生機器及び産業機器が増大している。そのようなファイルシステムの内、データをファイル単位で扱う機器（例えば、パーソナルコンピュータ）に使用するファイルシステムとしては、いわゆる、ＦＡＴ(File Allocation Table)を有する、ＦＡＴファイルシステムが多く利用されている。
【０００３】
ここで、ＦＡＴとは、データをファイルとして管理する際の管理効率の向上を図る目的で、フラッシュメモリからなるメモリ領域内に設けられた、ファイル管理テーブルのことである。また、ファイルが、データの固まり、すなわち、クラスタより構成されていると考えると、ＦＡＴとは、クラスタ管理テーブルであるともいえる。
【０００４】
また、ＦＡＴファイルシステムとは、メモリ領域内に、ファイルを蓄積する領域と、ファイル管理テーブルとを有し、クラスタの使用状態を管理するファイルシステムである。
【０００５】
そこで、ファイル管理テーブルの領域に”０”が書き込まれている場合には、それに対応するクラスタが非使用状態であることを示し、”０”以外が書き込まれている場合には、そのクラスタが使用状態であることを示す。そして、ＦＡＴファイルシステムは、そのクラスタの使用状況に応じて、ファイルを管理する。
【０００６】
そうすると、ファイル蓄積領域のクラスタを非使用状態から、使用状態とするときには、ファイル管理テーブル領域内のビットのいずれかを”１”とする必要がある。
【０００７】
一方、フラッシュメモリにおいては、”１”が書き込まれた状態は、消去状態を示し、データを書くことによって、”０”の状態にする。
【０００８】
そうすると、使用状態（テーブル領域のいずれかに”０”が書き込まれている状態）から、非使用状態（テーブル領域内の全ビットを”１”の状態）にするときには、フラッシュメモリにデータ消去動作を行わせる必要がある。
【０００９】
さらに、フラッシュメモリにおける消去単位は、一定のサイズ単位におこなわれるが、ファイル管理テーブル内おけるクラスタに対する使用状況表示領域は消去単位より小さい。従って、消去単位には複数の使用状況表示領域が含まれる。
【００１０】
従って、新たなクラスタの使用状態をファイル管理テーブル領域に書き込むには、ファイル管理テーブル領域内のデータを退避させた後、一旦すべてのビットを”１”にする消去を行ない、その後、退避したファイル管理領域のデータに新たなクラスタの使用状態を追記して書き戻す必要がある。
【００１１】
データの退避回数を減らすため、一つの消去単位に一つの使用状況表示領域をもたせたのでは、フラッシュメモリ内におけるファイル管理テーブルが占める領域が増大し、使用効率が低下してしまう。
【００１２】
しかし、一つの消去単位に複数の使用状況表示領域をもたせた場合、データの変更があるたびに、消去と書き込みを繰り返すことになり、消去動作及び書き込み動作が、その消去単位に集中してしまうことになる。そうすると、その消去単位は他の部分より早く劣化してしまう。
【００１３】
そこで、データを構成するビットの内、”０”の部分が多い場合には、フラッシュメモリに、データを構成するビットの論理を反転させてデータを書き込むことが提案されている。その結果、消去単位の劣化を遅らせることができる（例えば、特許文献１及び特許文献２を参照。）。
【特許文献１】特開２００５−１５７７８１号公報
【特許文献２】特開平１１−２５００２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
データを構成するビットの論理を反転させてフラッシュメモリにデータを書き込めば、書き込み回数は減少する。しかし、消去回数は減少しない。
【００１５】
そこで、本発明の目的は、フラッシュメモリ内のデータの消去回数を減少させる構成を有するファイルシステム及びデータ管理方法を提供することにある。
【課題を解決するための手段】
【００１６】
上記の課題を解決するため提供される、本発明の一側面は、
入力データの論理を反転して蓄積データとするデータ制御部と、
蓄積データを格納する格納領域と、格納領域の使用状況が書き込まれるテーブル部分とからなる不揮発性記憶部と、
テーブル部分に書き込んだ使用状況に応じて、蓄積データを格納領域に格納するように不揮発性記憶部を制御する制御部と、を有するファイルシステムである。
【発明の効果】
【００１７】
上記のファイルシステムにおいては、テーブル部分に書き込んだ使用状況をみて、過去において使用した又は現在使用されている格納領域を選択し、その格納領域に蓄積データが格納される。従って、格納領域又はテーブル部分の一部に消去動作が集中することがなく、すべての蓄積データ格納部分を使用した後、消去動作が行われることになる。そして、消去領域内の蓄積データの消去回数が減少し、その消去領域の劣化が遅くなる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施例１、実施例２、及び、実施例３について説明する。なお、本発明は、上記の実施例に限定されるものではない。
【実施例１】
【００１９】
実施例１は、ファイルシステム（組み込み機器）に関するものである。そして、上記のファイルシステム（組み込み機器）は、入力データの論理を反転して蓄積データとするデータ制御部と、蓄積データを格納する領域と蓄積データの格納領域の使用状況が書き込まれるテーブル部分とからなる不揮発性記憶部と、テーブル部分に書き込まれた使用状況に応じて、蓄積データを格納領域に格納するように不揮発性記憶部を制御する制御部と、を有することを特徴とする。
【００２０】
図1により、実施例1のファイルシステム１０（組み込み機器）及びファイルシステム１０（組み込み機器）とのデータ入出力を行うパーソナルコンピュータ５０が示されている。
【００２１】
ここで、図１には、フラッシュメモリ３０を含むファイルシステム１０が、アプリケーション制御部１５、ファイルシステム制御部１６、データ制御部１７を含むように図示されている。しかしながら、ＵＳＢ（Universal Serial Bus）経由でパーソナルコンピュータに接続されるＵＳＢメモリ等の外部記憶装置の場合は、これら制御部の構成要素は含まれなくてもよい。その場合、パーソナルコンピュータ５０はアプリケーション制御手段５１、ファイルシステム制御手段５２、及び、ＵＳＢホストドライバ５３を有し、アプリケーション制御部１５、ファイルシステム制御部１６、データ制御部１７と同様な制御を行う。すなわち、アプリケーション制御手段５１は、ファイルシステム１０を構成するアプリケーションを制御する手段である。ファイルシステム制御手段５２はＵＳＢ経由でファイルシステム１０のデータを読み出すことが可能な手段であり、ファイルシステム制御部１６と同様な制御する手段である。ＵＳＢホストドライバ５３はＵＳＢを経由して接続されているファイルシステム１０とパーソナルコンピュータ５０間のデータ入出力を制御する制御手段であり、データ制御部１７と同様な制御を行う手段である。
【００２２】
一方、ファイルシステム１０がそれのみでファイルシステムとして動作する場合は、ファイルシステム１０は、制御部１２、ＦＬＡＳＨメモリ３０、及び、ＲＡＭ（Random accuses memory）４０から構成される。この場合は、制御部１２に含まれる、アプリケーション制御部１５、ファイルシステム制御部１６、データ制御部１７が、ファイルシステム１０の動作を後に説明するように制御する。  ＦＬＡＳＨメモリ３０は、不揮発性メモリであり、ＦＡＴファイルシステム領域３２、消去領域管理テーブル３１、及び他の領域３３を含む。そして、ＦＡＴファイルシステム領域３２は蓄積データを格納する領域と、その格納領域の使用状況を示すテーブル部分とを有する。なお、使用状況とは、蓄積データを格納する領域（クラスタ）が初期状態であるか、過去に使用した状態か、または現在使用している状態であるかを示すものである。他の領域３３は、利用者による動作設定に関するデータを格納する領域である。消去領域管理テーブル３１は、蓄積データから構成されるデータファイルの状況を管理するテーブルである。なお、ＦＬＡＳＨメモリ３０においては、”１”(ビットオン)の状態は消去状態である。また、”０”(ビットオフ)の状態はプログラム状態である。また、ＦＬＡＳＨメモリ３０の回路は、ビットデータを消去する際には、予め定められた範囲の消去領域について一括して消去状態とするように設計されている。そして、消去状態直後の状態は初期状態に対応する。
【００２３】
制御部１２はアプリケーション制御部１５、ファイルシステム制御部１６、データ制御部１７、ＦＬＡＳＨドライバ１８、及び、ＵＳＢドライバ１９から構成されている。
【００２４】
アプリケーション制御部１５はファイルシステム１０を動作させるアプリケーションを制御し、必要があれば、他の領域３３に対するデータの読み書きを管理する制御部である。
【００２５】
ファイルシステム制御部１６はＦＡＴファイルシステム領域３２及び消去領域管理テーブル３１へのデータの読み書きを管理する制御部である。ファイルシステム制御部１６は、初期状態では、蓄積データを格納する部分及びテーブル部のすべてのビットを”１”(ビットオン)の状態とするように、データ制御部１７を制御する手段を有する。ファイルシステム制御部１６は、過去において使用された格納領域に対応するテーブル部分には、使用状況として、そのテーブル部分のすべてのビットを”０”(ビットオフ)の状態とし、現在使用している格納領域に対応するテーブル部分には、使用状況として、テーブル部分のいずれかのビットを”０”(ビットオフ)の状態とするようにデータ制御部１７を制御する手段を有する。ファイルシステム制御部１６は、ＦＡＴファイルシステム領域３２に蓄積データを格納する際に、テーブル部によって示されている使用状況が、使用した状態又は使用している状態である領域を避けて、格納領域を選択し、選択した格納領域に蓄積データを書き込むように制御する手段を有する。そして、ファイルシステム制御部１６は、すべてのテーブル部分及び蓄積データを格納する部分を使用状態とした後、蓄積データ格納部分及びテーブル部を消去するようにデータ制御部１７を制御する手段を有する。
【００２６】
データ制御部１７は、ファイルシステム制御部１６、及び、アプリケーション制御部１５からの指令によりデータの読み書きを制御する制御部である。また、データ制御部１７はＵＳＢドライバ１９からの入力データの論理を反転しＦＬＡＳＨメモリ３０へ出力する。逆に、データ制御部１７は、ＦＬＡＳＨメモリ３０からの出力データの論理を反転し、ＵＳＢドライバ１９へ出力データを出力する。さらに、データ制御部１７は、ＦＬＡＳＨメモリ３０からＲＡＭ４０へのデータ書き換え処理を制御する。
【００２７】
ＦＬＡＳＨドライバ１８は、データ制御部１７の制御を受けて、ＦＬＡＳＨメモリ３０のデータ入出に関する動作を制御するドライバである。また、ＦＬＡＳＨドライバ１８は、ＦＬＡＳＨメモリ３０のデータ書き換え処理を行うときに、ＲＡＭ４０のデータの入出力に関する動作を制御するメモリドライバも含む。なお、ＲＡＭ４０は、ＦＬＡＳＨメモリ３０のデータ書き換え処理を行う作業領域を有する。
【００２８】
ＦＬＡＳＨメモリ３０のデータ書き換え動作２８の際には、ＦＬＡＳＨメモリ３０とＲＡＭ４０間のデータがバス３４を通過する。パーソナルコンピュータ５０からＵＳＢ経由でデータ入出力動作２６を行う際には、ＵＳＢドライバ１９とデータ制御部１７間のデータがバス３４を通過する。データ読み書き動作２７の際には、データ制御部１７とＦＬＡＳＨメモリ３０間のデータがバス３４を通過する。
【００２９】
なお、ファイスシステム１０とパーソナルコンピュータ５０間のデータの読み書きはＵＳＢケーブル２１を介して行われる。
【００３０】
上記より、実施例１のファイルシステムは、入力データの論理を反転して蓄積データとするデータ制御部１７と、蓄積データを格納する領域と蓄積データの格納領域の使用状況が書き込まれたテーブル部分とからなる不揮発性記憶部（ＦＬＡＳＨメモリ３０）と、テーブル部分に書き込まれた使用状況に応じて、蓄積データを格納する領域を以下のように制御する制御部（ファイルシステム制御部１６）を有するファイルシステムである。そして、実施例１のファイルシステムの制御部（ファイルシステム制御部１６）は、初期状態では、テーブル部を”１”(ビットオン)の状態にする。実施例１のファイルシステムの制御部（ファイルシステム制御部１６）は、過去において使用された格納領域に対応するテーブル部分には、使用状況として、そのテーブル部分のすべてのビットを”０”(ビットオフ)の状態とし、現在使用している格納領域に対応するテーブル部分には、使用状況として、テーブル部分のいずれかのビットを”０”(ビットオフ)の状態とする。また、実施例１のファイルシステムの制御部（ファイルシステム制御部１６）は、使用された又は現在使用している状態である領域を避けて、蓄積データを書き込む。さらに、実施例１のファイルシステムの制御部（ファイルシステム制御部１６）は、すべてのテーブル部分及び蓄積データ格納領域が過去において使用された状態又は現在において使用状態とした後、蓄積データ格納領域内の蓄積データを消去するように制御するファイルシステムである。
【００３１】
ここで、不揮発性メモリにおいて、蓄積データを格納するためには、蓄積データ中の”０”(ビットオフ)の状態をプログラムしなければならない。そこで、蓄積データを書き換えるには、一旦、蓄積データをＲＡＭ４０内の書き換え処理用作業領域に退避させ、蓄積データを含む消去領域を消去した後、書き換え後の蓄積データに対応した”０”(ビットオフ)の状態をプログラムすることになる。そうすると、書き換え後の蓄積データを、蓄積データ格納部分内の同じ領域に格納したのでは、その領域に消去動作が集中してしまう。その結果、不揮発メモリの消去回数が多くなり、その消去領域のデータ蓄積能力が劣化する。
【００３２】
しかし、実施例１のファイルシステムにおいては、テーブル部に書き込まれている使用状況に応じて、蓄積データが書き換わる度に、蓄積データ格納領域が移動する。そうすると、蓄積データが格納されていた同一部分に対して、消去動作が行われることがなく、すべての蓄積データ格納部分を使用した後、消去動作が行われることになる。また、テーブル部においても、”０”(ビットオフ)の状態をプログラムする部分が一カ所に集中することがない。蓄積データを格納する部分が、順次、移動していくため、その領域に対応するテーブル部分も移動するからである。従って、テーブル部分においても、すべてのテーブル部分が使用された後に、テーブル部分の消去領域の消去動作が行われることになる。
【００３３】
その結果、格納領域又はテーブル部分の一部に消去動作が集中することがなく、すべての蓄積データ格納部分を使用した後、消去動作が行われることになる。消去領域の消去回数が減少し、その消去単位の劣化が遅くなる。
【００３４】
なお、第１の場合として、初期状態において、蓄積データ格納部及びテーブル部におけるビットを”０”(ビットオフ)の状態（プログラム状態）とした場合に、入力データを反転させずにファイスルシステムにデータを書き込む場合を考える。まず、消去領域にくらべて蓄積データを格納する領域は、一般的に小さい。そこで、隣接するデータを保持するため、隣接データをＲＡＭ４０の書き換え処理用領域に、退避させる必要がある。その後、消去を行い、入力データを隣接データとともに書き込む必要があり、データ入力の際に時間が余分にかかる上に、蓄積データ格納部及びテーブル部に負荷がかかる。
【００３５】
次いで、第２の場合として、蓄積データ格納部及びテーブル部におけるビットを”１”(ビットオン)の状態とした場合に、入力データを反転させずにファイルシステムにデータを書き込む場合を考える。そうすると、データを書き込んでいない状態は、”０”と認識すべきであるため、ファイルシステムからデータを読み出す際に、蓄積データを格納していない領域からデータを読み出すときに、データ書き込みがない領域を特定して、”０”を読み出すように操作が必要である。
【００３６】
次いで、第３の場合として、蓄積データ格納部及びテーブル部におけるビットを”１”(ビットオン)の状態とした場合に、入力データを反転してファイルシステムにデータを書き込む場合を考える。追加して蓄積データを書き込む場合に、”０”(ビットオフ)の状態（プログラム状態）を追加するだけでよく、第１の場合のように、消去に関する不都合がない。また、データを反転して読み出すため、データ書き込みがない領域を特定することなく、”０”を読み出すことができ、第２の場合のような不都合もない。
【００３７】
従って、実施例１のファイルシステムのように、使用状況が過去において使用された又は現在使用している状態である格納領域をさけて、蓄積データの書き換え及び新規蓄積データの格納をするときに、蓄積データを格納する領域を移動する場合には、入力データを反転して蓄積データとするのが望ましい。
【実施例２】
【００３８】
実施例２は、実施例１のファイルシステムにおけるデータの管理方法に関するものである。そして、その管理方法は、初期状態に、少なくとも、蓄積データ格納部６６、及び、テーブル部６４に属するビットにすべて”１”を書き込む工程と、”０”が書き込まれたテーブル部６４の使用状況表示領域に対応するクラスタ６０をさけて、蓄積データをクラスタ６０に格納する工程と、その後、テーブル部６４に使用状況データを書き込む工程と、蓄積データをクラスタ６０から排出する際には、テーブル部６４の使用状況表示領域にすべて”０”を書き込む工程と、を有することを特徴とするデータの管理方法である。
【００３９】
図２により、実施例1で示したＦＡＴファイルシステム領域３２内の記憶領域の単位領域、すなわち、クラスタ６０を、アドレス順に示す。
【００４０】
ＦＡＴファイルシステム領域３２は、ブートセクタ部６３、テーブル部６４、エントリ部６５、蓄積データ格納部６６を有する。
【００４１】
ブートセクタ部６３はＦＡＴファイルシステム領域３２全体の管理情報を含む領域である。テーブル部６４は図１に示したものと同一なものであり、ブートセクタ部６３に続く領域である。エントリ部６５は蓄積データからなるファイルの管理情報を含む領域であり、テーブル部６４に続く領域である。蓄積データ格納部６６は図１に示したものと同一なものであり、エントリ部６５に続く領域である。
【００４２】
ＦＡＴファイルシステム領域３２は複数の消去領域６１から構成されている。また、消去領域６１は複数のクラスタ６０から構成されている。クラスタ６０は複数のセクタ６２から構成されている。
【００４３】
図３により、実施例２の管理方法について説明する。図３によれば、実施例２の管理方法は、「初期状態に、蓄積データ格納部６６及びテーブル部６４に属するビットにすべて”１”を書き込む初期化工程７０」と、「蓄積データをクラスタ６０から排出する際には、そのクラスタ６０に対応するテーブル部６４の使用状況表示領域にすべて”０”を書き込むデータ排出工程７２」と、「”０”が書き込まれたテーブル部６４の使用状況表示領域に対応するクラスタ６０をさけて、蓄積データを格納するクラスタ６０を選択し、蓄積データをクラスタ６０に格納するとともに、テーブル部６４に使用状況データを書き込む書込み工程７１、７３」と、を有することを特徴とするデータの管理方法である。
【００４４】
また、上記の管理方法は、蓄積データ格納部６６及びテーブル部６４のすべての領域を、過去において使用した状態又は現在使用している状態としたときは、上記の領域を再利用する再利用工程７４を含む。
【００４５】
また、図３は、各工程における入力データの状態及びファイルシステム１０内のデータの状態を表している。ここで、「２、３、４、５」は、クラスタ６０のアドレスを示す。なお、図３には、クラスタ６０の数が４個であると仮定して、各工程の状況が図示されているが、後に図４から図７にその詳細を示す。また、図３では、各数字は、２進法により４ビットが表す数を表している、ただし、１０を超える数字を表すときには、順次、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆとあらわす。すなわち、４ビットすべてに”１”を書き込むことは”Ｆ”と表記される。
【００４６】
そこで、初期化工程７０では、アドレス「２、３、４、５」のクラスタ６０に、入力データ「ＦＦＦＦ  ＦＦＦＦ  ＦＦＦＦ  ＦＦＦＦ」が入力されるが、ファイルシステム１０には「００００  ００００  ００００  ００００」が入力される。
【００４７】
書き込み工程７１では、アドレス「２、３、４、５」のクラスタ６０に、入力データ「ＦＦＦＣ  ＦＦＦＢ  ０００７  ＦＦＦＦ」が入力されるが、ファイルシステム１０には「０００３  ０００４  ＦＦＦ８  ００００」が入力される。
【００４８】
データ排出工程７２では、アドレス「２、３、４、５」のクラスタ６０に、入力データ「００００  ００００  ００００  ＦＦＦＦ」が入力されるが、ファイルシステム１０にはアドレス５のクラスタ６０に「００００」が入力されるが、アドレス２から４のクラスタ６０には入力が行われない。
【００４９】
書き込み工程７３では、アドレス「２、３、４、５」のクラスタ６０に、入力データ「００００  ００００  ００００  ＦＦＦ９」が入力されるが、ファイルシステム１０にはアドレス５のクラスタ６０に「００００」が入力されるが、アドレス２から４のクラスタ６０には入力が行われない。
【００５０】
上記より、ファイルシステム１０に入力されるデータは、データ制御部１７によって、入力データに対して論理の反転が行われたデータであることがわかる。
【００５１】
図４により、初期状態における、アドレス順に並べられたクラスタ６０の内容を示す。そして、図４おいて、テーブル部６４、エントリ部６５、蓄積データ格納部６６が示されている。また、上記のテーブル部６４は、領域（０）から領域（８）を有する。そして、テーブル部６４の領域（２）から領域（８）までの領域には、ファイルシステム１０に入力されるデータとしてみると、論理”０”が書き込まれる。すなわち、ＦＬＡＳＨメモリ３０に入力されるデータとしてみると、論理”１”が書き込まれる。また、クラスタ６０（２）から６０（８）は、クラスタ６０の内、テーブル部６４の領域（２）から領域（８）までに対応したクラスタである。
【００５２】
そこで、図３及び図４を用いて、「初期状態に、蓄積データ格納部６６及びテーブル部６４に属するビットにすべて”１”を書き込む初期化工程７０」を説明する。
【００５３】
すなわち、図３に示す初期化工程７０とは、ファイルシステム１０の初期状態に、ＦＬＡＳＨメモリ３０に入力される入力データとしてみると、蓄積データ格納部６６及びテーブル部６４に属するビットにすべて”１”を書き込む工程である。
【００５４】
図５により、蓄積データの書き込み状態及び蓄積データの排出状態における、アドレス順に並べられたクラスタ６０の内容を示す。また、クラスタ６０（２）から６０（８）は、クラスタ６０の内、テーブル部６４の領域（２）から領域（８）までに対応したクラスタである。
【００５５】
図５Ａは、蓄積データ格納部６６において、２番目から７番目までのクラスタ６０に蓄積データが書き込まれていることを示す。また、エントリ部６５には、上記の蓄積データを構成している２個のファイルに関する情報が書き込まれている。その情報は、例えば、ファイル名、ファイル属性、ファイルサイズ、更新日時、先頭のクラスタ６０の番号を含む。テーブル部６４の領域（２）から領域（７）には、上記の番号のクラスタ６０の使用状況が表示されている。まず、領域（２）には”３”が記載されており、２番目のクラスタ６０からファイルが構成されており、続きデータは３番目のクラスタ６０に格納されていることがわかる。次いで、領域（３）には”４”が記載されており、続きデータは４番目のクラスタ６０に格納されていることがわかる。次いで、領域（４）には”７”が記載されており、続きデータは7番目のクラスタ６０に格納されていることがわかる。次いで、領域（７）には”E”が記載されており、7番目のクラスタ６０までのデータで、ファイルを構成するデータが終了することがわかる。すなわち、クラスタ６０（２）、（３）、（４）、（７）は格子縞で網かけされており、同一ファイルを構成するデータが格納されていることを示す。
【００５６】
さらに、領域（５）には”６”が記載されており、2個目のファイルの続きデータは６番目のクラスタ６０に格納されていることがわかる。次いで、領域（６）には、”Ｅ”が記載されており、６番目のクラスタ６０までのデータで、２個目のファイルが終了することがわかる。すなわち、クラスタ６０（５）、（６）は斜め縞で網かけされており、同一ファイルを構成するデータが格納されていることを示す。
【００５７】
図５Ｂは、蓄積データ格納部６６において、２個目のファイルが削除されたことを示す。また、エントリ部６５は、２個目のファイルに関する情報が削除されたことを示す。さらに、テーブル部６４の領域（５）、（６）には、”０”が書き込まれ、2個目のファイルに関する5番目のクラスタ６０と6番目のクラスタ６０の蓄積データが削除されたことを示している。すなわち、クラスタ６０（５）、（６）は網かけされておらず、データが格納されていないことを示す。
【００５８】
そこで、図３及び図５を用いて、「蓄積データをクラスタ６０から排出する際には、そのクラスタ６０に対応するテーブル部６４の使用状況表示領域にすべて”０”を書き込むデータ排出工程７２」を説明する。
【００５９】
すなわち、図３に示すデータ排出工程７２とは、蓄積データをクラスタ６０から排出する際に、ＦＬＡＳＨメモリ３０に入力されるデータとしてみると、蓄積データを排出するクラスタ６０及びそのクラスタ６０に対応するテーブル部６４の領域に属するビットに”０”を書き込む工程である。一方、ファイルシステム１０に入力されるデータとしてみると、上記のクラスタ６０及びテーブル部６４の領域には、”１”を書き込むことになる。
【００６０】
図６により、蓄積データの追加書き込み状態における、アドレス順に並べられたクラスタ６０の内容を示す。また、クラスタ６０（２）から６０（８）は、クラスタ６０の内、テーブル部６４の領域（２）から領域（８）までに対応したクラスタである。
【００６１】
図６Ａは、蓄積データ格納部６６において、２個目のファイルが削除されたことを示す。また、エントリ部６５は、２個目のファイルに関する情報が削除されたことを示す。さらに、テーブル部６４の領域（５）、（６）には、”０”が書き込まれ、2個目のファイルに関する5番目のクラスタ６０と6番目のクラスタ６０の蓄積データが削除されたことを示している。すなわち、クラスタ６０（２）、（３）、（４）、（７）は格子縞で網かけされており、同一ファイルを構成するデータが格納されていることを示す。また、クラスタ６０（５）、（６）は網かけされておらず、データが削除されていることを示す。
【００６２】
図６Ｂは、図６Ａで示したＦＡＴファイルシステム領域３２の状態において、追加ファイルを構成する蓄積データを、ＦＡＴファイルシステム領域３２に書き込んだ状態を示す。蓄積データ格納部６６において、２番目から４番目、７番目から９番目までのクラスタ６０に蓄積データが書き込まれていることを示す。また、エントリ部６５には、上記の蓄積データを構成している２個のファイルに関する情報が書き込まれている。その情報は、例えば、ファイル名、ファイル属性、ファイルサイズ、更新日時、先頭のクラスタ６０の番号を含む。テーブル部６４の領域（２）から領域（９）には、上記の番号のクラスタ６０の使用状況が表示されている。まず、領域（２）には”３”が記載されており、２番目のクラスタからファイルが構成されており、続きデータは３番目のクラスタに格納されていることがわかる。次いで、領域（３）には”４”が記載されており、続きデータは４番目のクラスタに格納されていることがわかる。次いで、領域（４）には”７”が記載されており、続きデータは7番目のクラスタに格納されていることがわかる。次いで、領域（７）には”E”が記載されており、7番目のクラスタまでのデータで、ファイルを構成するデータが終了することがわかる。さらに、領域（５）および領域（６）には、”０”が記載されており、５番目、６番目のクラスタの蓄積データは削除されていることがわかる。次いで、領域（８）には、”９”が記載されており、続きデータは９番目のクラスタに格納されていることがわかる。次いで、領域（９）には”E”が記載されており、９番目のクラスタまでのデータで、ファイルを構成するデータが終了することがわかる。すなわち、クラスタ６０（２）、（３）、（４）、（７）は格子縞で網かけされており、同一ファイルを構成するデータが格納されていることを示す。また、クラスタ６０（８）とその次のクラスタ６０は斜め縞で網かけされており、同一ファイルを構成するデータが格納されていることを示す。さらに、クラスタ６０（５）、（６）は斜め縞で網かけされておらず、データが削除されたことを示す。
【００６３】
そして、８番目から９番目までのクラスタ６０に格納された蓄積データにより、構成されるファイルは、５番目、６番目のクラスタ６０に格納されていた蓄積データが削除された後に追加された追加ファイルである。その追加ファイルのサイズは、削除された蓄積データから構成されていた削除ファイルのサイズと同じである。しかし、５番目、６番目のクラスタ６０に対応するテーブル部６４の領域（５）、（６）には”０”が書き込まれているため、５番目及び６番目のクラスタ６０をさけて、蓄積データを格納するクラスタ６０を選択し、追加ファイルに関する蓄積データは、８番目及び９番目のクラスタ６０に書き込まれている。
【００６４】
そこで、図３及び図６を用いて、「”０”が書き込まれたテーブル部６４の使用状況表示領域に対応するクラスタ６０をさけて、蓄積データを格納するクラスタ６０を選択し、蓄積データをクラスタ６０に格納するとともに、テーブル部６４に使用状況データを書き込む工程７１、７３」を説明する。
【００６５】
すなわち、図３に示すデータ排出工程７１、７３とは、蓄積データをクラスタ６０に書き込む際に、テーブル部６４において、”０”が書き込まれた使用状況表示領域に対応するクラスタ６０を避けて、蓄積データを格納するクラスタ６０を選択し、蓄積データ”を書き込む工程である。
【００６６】
図３及び図７を用いて、「蓄積データ格納部６６及びテーブル部６４のすべての領域を、過去において使用した状態又は現在使用している状態としたときは、上記の領域を再利用する再利用工程７４」を説明する。
【００６７】
図７は、テーブル部６４において、テーブル部６４を再利用するところを示す。テーブル部６４は、例えば、３区分の消去領域６１から構成されているところを示す。
【００６８】
図７Ａによれば、３区分の消去領域は、過去において使用した領域又は現在使用している領域であることがわかる。例えば、上段の消去領域６１において、”０”が書き込まれている領域は、対応するクラスタ６０から蓄積データを排出したことを示している。すなわち、”０”が書き込まれている領域は、過去において使用した領域である。それ以外の領域、例えば、ＦＦＦ８、ＦＦＦ７と表示されている領域は、その領域に対応するクラスタ６０の使用状況を表示しており、現在使用している領域である。
【００６９】
図７Ｂは、上段の消去領域６１について、過去において使用した領域の再利用を図る処理を行ったところを示す。
【００７０】
過去において使用した領域の再利用を図るには、以下のような処理を行う。まず、現在使用している領域に格納されている蓄積データを、ＲＡＭ４０の書き換え処理用作業領域に書き込む処理をする。次いで、消去動作を行うようにＦＬＡＳＨメモリ３０を制御し、上段の消去領域６１全体のデータを消去する処理をする。次いで、書き込み動作を行うようにＦＬＡＳＨメモリ３０を制御し、ＲＡＭ４０に退避させておいた蓄積データを、上段の消去領域６１に戻す処理をする。
【００７１】
その結果、上段の消去領域６１において、”０”が書き込まれていた領域は、ＦＦＦＦが書き込まれた領域となる。
【００７２】
図７Ｃは、中段の消去領域６１について、過去において使用した領域の再利用を図る処理を行ったところを示す。上段の消去領域６１に対して行ったと同様な処理を行うことにより、中段の消去領域６１において、”０”が書き込まれていた領域は、ＦＦＦＦが書き込まれた領域となる。
【００７３】
一方、ＦＡＴファイスシステム領域３２の蓄積データ格納領域６６においても、図７Ｂで説明した処理と同様の処理を行う。その結果、現在使用中のクラスタ６０の蓄積データはそのまま維持される。また、過去において使用されたクラスタ６０には、ＦＦＦＦが書き込まれる。
【００７４】
そこで、図３及び図７で示した、「蓄積データ格納部６６及びテーブル部６４のすべての領域が、過去において使用した状態又は現在使用している状態となったときは、上記の領域を再利用する再利用工程７４」を説明する。
【００７５】
すなわち、図３に示す再利用工程７４は、蓄積データ格納部６６及びテーブル部６４のすべての領域が、過去において使用した状態又は現在使用している状態となったときに、現在使用している領域の蓄積データは、そのまま維持し、一方、過去において使用した領域にはＦＦＦＦを書き込む工程である。
【００７６】
図８は、エントリ部６５のデータが、各工程においてどのように処理されるかについて示す図である。ここで、各工程とは、初期化工程７０、書き込み工程７１及び７３、データ排出工程７２、再利用工程７４をいう。
【００７７】
また、図８は、各工程における、ファイル名格納領域への入力データの状態及びファイルシステム１０内のデータの状態を表している。そして、図８を用いて、ファイル名格納領域は２個であると仮定して、エントリ部６５における、データの処理状況を説明する。
【００７８】
初期化工程７０は、初期状態に、エントリ部６５に属するビットにすべて”１”を書き込む工程である。すなわち、図８において示すように、初期化工程７０において、入力データ「ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ」と、「ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ」とが、２個のファイル名格納領域に書き込まれる。一方、ファイルシステム１０に対しては、上記の入力データの論理が反転したデータが入力される。
【００７９】
書き込み工程７１及び７３は、”０”が書き込まれた領域をさけて、エントリ部６５にファイル情報を書き込む工程である。すなわち、図８に示すように、書き込み工程７１及び７３において、入力データ「ＢＥＢＤＢＣＤＦＤＦＤＦＤＦＡＢＡ７ＡＢ」と、「ＢＢＢＡＢ９ＤＦＤＦＤＦＤＦＤＦＡＢＡ７ＡＢ」とが、エントリ部６５に書き込まれる。一方、ファイルシステム１０に対しては、上記の入力データの論理が反転したデータが入力される。
【００８０】
データ排出工程７２は、蓄積データをクラスタ６０から排出する際には、排出される蓄積データから構成されるファイルに対応するファイル情報を格納している領域にすべて”０”を書き込む工程である。すなわち、図８に示すように、データ排出工程７２において、入力データ「００００００００００００００００００００００」が２個目のファイル名格納領域に書き込まれる。一方、ファイルシステム１０に対しては、上記の入力データの論理が反転したデータが入力される。
【００８１】
また、再利用工程７４は、エントリ部６５のすべての領域を、過去において使用した状態又は現在使用している状態としたときは、上記の領域を再利用する工程である。再利用工程７４においては、エントリ部６５に対して、図７Ｂで説明したものと同様な処理を行う。すなわち、図８に示すように、再利用工程７４において、入力データ「ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ」が２個目のファイル名格納領域に書き込まれる。
【００８２】
一方、上記の説明で用いたデータの論理は、ＦＬＡＳＨメモリ３０に書き込む際のものである。従って、ファイルシステム１０に入力されるデータは、上記のデータと論理が反転しているデータである。
【００８３】
以上より、実施例２の管理方法は、「初期状態に、蓄積データ格納部６６及びテーブル部６４に属するビットにすべて”１”を書き込む初期化工程７０」と、「蓄積データをクラスタ６０から排出する際には、そのクラスタ６０に対応するテーブル部６４の使用状況表示領域にすべて”０”を書き込むデータ排出工程７２」と、「”０”が書き込まれたテーブル部６４の使用状況表示領域に対応するクラスタ６０をさけて、蓄積データをクラスタ６０に格納するとともに、テーブル部６４に使用状況データを書き込む書込み工程７１、７３」と、を有することを特徴とするデータの管理方法である。
【００８４】
上記のようなデータの管理方法をＦＬＡＳＨメモリ３０に対して適用すると、追加的に、ファイルを構成する蓄積データを書き込む場合に、ＦＬＡＳＨメモリ３０は、特定の領域に対して、消去動作を集中させることがない。
【００８５】
上記の管理方法は、「蓄積データをクラスタ６０から排出する際には、そのクラスタ６０に対応するテーブル部６４の使用状況表示領域にすべて”０”を書き込むデータ排出工程７２」と、「”０”が書き込まれたテーブル部６４の使用状況表示領域に対応するクラスタ６０をさけて、蓄積データをクラスタ６０に格納するとともに、テーブル部６４に使用状況データを書き込む書込み工程７１、７３」とを、備えるため、ＦＬＡＳＨメモリ３０において、現在使用している領域をさけるだけでなく、過去において使用した領域をもさけて、蓄積データの書き込みが行われる。従って、蓄積データの追加の度に消去動作を行うことがなく、すべての領域を使用した後に、消去動作が行われる。
【００８６】
そうすると、消去回数が減少し、特定領域への消去動作の集中がなくなるため、ＦＬＡＳＨメモリ３０の早期の劣化が防止され、本来の寿命を全うすることになる。
【実施例３】
【００８７】
実施例３は、実施例１のファイルシステムにおけるデータの管理方法に関するものである。そして、その管理方法は、「初期状態に、少なくとも、蓄積データ格納部６６、及び、消去領域管理テーブル３１に属するビットにすべて”１”を書き込む工程」と、「蓄積データをクラスタ６０に書き込む工程」と、「消去領域管理テーブル３１に、消去領域内のクラスタ６０の使用状況に応じた、クラスタ使用状況データを書き込む工程」と、「クラスタ使用状況に応じて、追加の蓄積データを格納するクラスタ６０を選択し、選択したクラスタ６０に蓄積データを追加書き込みする工程」と、「追加蓄積データ書き込み後に、消去領域管理テーブル３１にクラスタ使用状況データを書き込む工程」と、「クラスタ使用状況データに基づき、追加蓄積データを書き込めないと判断するときは、消去領域についてデータ消去動作を行う工程」と、を有することを特徴とするデータの管理方法である。
【００８８】
「初期状態に、少なくとも、蓄積データ格納部６６、及び、消去領域管理テーブル３１に属するビットにすべて”１”を書き込む工程」は、ＦＬＡＳＨメモリ３０の記憶素子のデータを消去する工程である。
【００８９】
図９により、「蓄積データ書き込み工程」及び「クラスタ使用状況データを書き込み工程」を説明する。なお、「蓄積データ書き込み工程」は「蓄積データをクラスタ６０に書き込む工程」であり、「クラスタ使用状況データを書き込み工程」は「消去領域管理テーブル３１に、消去領域内のクラスタ６０の使用状況に応じた、クラスタ使用状況データを書き込む工程」である。
【００９０】
図９は、消去領域６１、消去領域管理テーブル３１、及び、テーブル部６４に書き込まれたデータを示す。なお、図９では、複数ある消去領域６１の内、工程の説明に必要な消去領域６１−１、６１−２、６１−３、６１−４を抜き出して示している。また、消去領域６１−１、６１−２、６１−３、６１−４は、クラスタ番号２から３３で示されるクラスタ６０を含む。ＦＡＴファイルシステム領域３２に書き込まれたデータは、上記の消去領域６１−１、６１−２、６１−３、６１−４内に書き込まれているデータを示す。なお、消去領域６１−１、６１−２、６１−３、６１−４に書き込む蓄積データは、ファイルシステム１０に入力される、入力データの反転データであることはいうまでもない。
【００９１】
そこで、図９によれば、クラスタ番号２から５で示されるクラスタ６０、クラスタ番号１９から２２で示されるクラスタ６０、及び、クラスタ番号２３から２４で示されるクラスタ６０に、３つのファイルが、蓄積されているところを示す。また、消去領域管理テーブル３１に、消去領域６１−１に対し、「使用ファイル数：１」、クラスタ６０における蓄積データの蓄積状態を示す「空き有り」とのクラスタ使用状況データが書き込まれている。また、消去領域６１−２に対し、「使用ファイル数：０」、「空き有り」とのクラスタ使用状況データが書き込まれている。また、消去領域６１−３に対し、「使用ファイル数：２」、「空き有り」とのクラスタ使用状況データが書き込まれている。また、消去領域６１−４に対し、「使用ファイル数：０」、「空き有り」とのクラスタ使用状況データが書き込まれている。
【００９２】
テーブル部６４における、蓄積データが書き込まれているクラスタ６０に対応する領域に、ファイルに関する構成情報「０００３、０００４、０００５、ＦＦＦ８」、「００１４、００１５、００１６、ＦＦＦ８」「００１８、ＦＦＦ８」が書き込まれている。そして、情報「０００３、０００４、０００５、ＦＦＦ８」によれば、クラスタ番号２からクラスタ番号５で示すクラスタ６０に蓄積データが蓄積されていることがわかる。「０００３、０００４、０００５」によれば、クラスタ番号２で示すクラスタ６０に書き込まれた蓄積データの続きがクラスタ番号３、４、５で示すクラスタ６０に書き込まれていることがわかる。「ＦＦＦ８」によれば、クラスタ番号５で示すクラスタ６０に記載されている蓄積データが最後の蓄積データであることがわかる。「００１４、００１５、００１６、ＦＦＦ８」「００１８、ＦＦＦ８」によっても、同様なことがわかる。
【００９３】
以上より、「蓄積データをクラスタ６０に書き込む工程」は、データ制御部１７によって、ファイルシステム１０に対する入力データの論理を反転させ、入力データを蓄積データに変換した後、蓄積データをＦＡＴファイルシステム領域３２の消去領域６１に書き込む工程である。その際、一つのファイルを構成する蓄積データは、ひとかたまりのデータとして扱われる。
【００９４】
「消去領域管理テーブル３１に、消去領域内のクラスタ６０の使用状況に応じた、クラスタ使用状況データを書き込む工程」を以下に説明する。ここで、消去領域６１とは、ＦＬＡＳＨメモリ３０に対して消去動作をおこなったときに、一括してデータが消去される複数の記憶素子からなる消去単位に対応する、論理アドレスによって表されたデータ領域である。また、その消去領域６１は、複数のクラスタ６０から構成されている。そこで、使用状況とは、蓄積データから構成されるファイルが、消去領域６１に蓄積されているか否かを示すものである。そして、使用状況データは、消去領域６１毎に作成され、消去領域６１にファイルが蓄積されているか否かを示すデータと、蓄積されているファイル数を示すデータとを有する。従って、クラスタ使用状況データを書き込む工程は、消去領域管理テーブル３１に、消去領域６１にファイルが蓄積されているか否かを示すデータと、蓄積されているファイル数を示すデータを書き込む工程である。
【００９５】
図１０は、消去領域６１−１、消去領域６１−２、消去領域６１−３、消去領域６１−４、消去領域管理テーブル３１、及び、ＦＡＴファイルシステム領域３２内のテーブル部６４に書き込まれたデータを示す。それぞれは、図９に示したものと同様なものである。
【００９６】
そこで、図１０は、図９におけるファイル書き込み状態に加え、さらに、ファイルをＦＡＴファイルシステム領域３２に書き込んだところを示す。
【００９７】
図１０によれば、追加して書き込んだファイルは、クラスタ番号１０から１７に対応するクラスタ６０及びクラスタ番号２６からクラスタ番号３０に対応するクラスタ６０に書き込まれている。すなわち、消去領域６１−２と消去領域６１−４の一部に、上記のファイルが書き込まれている。そして、消去領域６１−２に対し、クラスタ使用状況データが、「使用ファイル数：１」、「空きなし」に変更される。また、消去領域６１−４に対し、クラスタ使用状況データが「使用ファイル数：１」、「空き有り」に変更される。
【００９８】
さらに、テーブル部６４には、「０００Ｂ、０００Ｃ、０００Ｄ、０００Ｅ、０００Ｆ、００１０、００１１。００１Ａ、００１Ｂ、００１Ｃ、００１Ｄ、００１Ｅ、ＦＦＦ８」とのファイル構成情報が追加される。
【００９９】
上記より、追加したファイルを構成する「蓄積データをクラスタ６０に書き込む工程」は、消去領域管理テーブル３１において、「使用ファイル数：０」、「空き有り」とのクラスタ使用状況データが書き込まれている、消去領域６１を検索し、その消去領域６１のクラスタ６０に蓄積データを書き込む工程である。
【０１００】
そして、その書き込みに対応して「消去領域管理テーブル３１に、消去領域内のクラスタ６０の使用状況に応じた、クラスタ使用状況データを書き込む工程」は、消去領域管理テーブル３１に、消去領域６１にファイルが蓄積されているか否かを示すデータと、蓄積されているファイル数を示すデータを追加して書き込む工程である。
【０１０１】
図１１は、図１０におけるファイル書き込み工程に加え、さらに、４番目のファイル内容の追加をＦＡＴファイルシステム領域３２に書き込んだ状態を示す。
【０１０２】
図１１は、消去領域６１−１、消去領域６１−２、消去領域６１−３、消去領域６１−４、消去領域管理テーブル３１、及び、ＦＡＴファイルシステム領域３２内のテーブル部６４に書き込まれたデータを示す。それぞれは、図９に示したものと同様なものである。
【０１０３】
図１１によれば、追加して書き込んだファイルの内容は、クラスタ番号３１から３３に対応するクラスタ６０及びクラスタ番号６からクラスタ番号８に対応するクラスタ６０に書き込まれている。すなわち、消去領域６１−１の一部と消去領域６１−４の一部に、上記のファイル内容に追加が書き込まれている。その経緯を詳細に説明すると、４番目のファイルのデータが蓄積されている最後のクラスタ番号３０が存在する消去領域６１−４の空き領域に追加を書き込む。すなわち、クラスタ番号３１から書き込む。そして、消去領域６１−４のすべての領域に書き込んだにもかかわらず、さらに書き込む必要があるため、消去領域管理テーブル３１を参照する。消去領域管理テーブル３１の情報の中で、「空き有り」、かつ「使用ファイル数」が最小の消去領域を探すと、消去領域６１−１であることがわかる。そして、消去領域６１−１に対しファイル内容の追加の書き込みを行い、クラスタ使用状況データが、「使用ファイル数：２」、「空き有り」に変更される。また、消去領域６１−４に対し、クラスタ使用状況データが「使用ファイル数：１」、「空きなし」に変更される。
【０１０４】
さらに、テーブル部６４には、「０００Ｂ、０００Ｃ、０００Ｄ、０００Ｅ、０００Ｆ、００１０、００１１。００１Ａ、００１Ｂ、００１Ｃ、００１Ｄ、００１Ｅ、００１Ｆ、００２０、００２１、０００６、０００７、０００８、ＦＦＦ８」とのファイル構成情報が追加される。
【０１０５】
図１２により、図１１に示す状態とするための、「ファイル内容を追加書き込みする工程」に対する処理を、フローチャートを用いて示す。また、ファイル内容の追加に伴う「追加蓄積データ書き込み後に、消去領域管理テーブル３１にクラスタ使用状況データを書き込む工程」と、を示す。
【０１０６】
図１２によれば、「ファイル内容を追加書き込みする工程」は、既存ファイルの追加書き込みか否かを判断するステップ８０と、既存ファイルの最後のデータがあるクラスタ６０をＦＡＴファイルシステム領域３２のテーブル部６４に記載された内容より特定するステップ８１と、既存ファイルの最後のデータがあるクラスタ６０が属する消去領域６１に空きがあるか否かを判断し、空きがあれば、その消去領域６１に追加蓄積データを書き込むステップ８２と、追加データが書き込めたか否かを判断するステップ８３と、書き込みを行った後、空きがあるか否かを判断するステップ８４と、追加データが書き込めなかったときに、消去領域管理テーブル３１を参照するステップ８７と、使用ファイル数が０か否かを判断するステップ８９と、消去領域６１に空きがあるか否かを判断するステップ９０と、使用ファイル数が最小な消去領域６１であるか否かを判断するステップ９１と、使用ファイル数が最小な消去領域６１を記憶するステップ９２と、消去管理テーブル３１を参照して、ステップ８７及び８９からステップ９２までのステップを行うステップ８８と、使用ファイル数が０である消去領域６１又は使用ファイル数が最小な消去領域６１を決定し、その消去領域６１に追加ファイルを書き込むステップ８５と、消去管理テーブル３１を更新するステップ８６と、を有する。
その結果、図１１に示すように、消去領域６１−１の一部と消去領域６１−４の一部に、上記のファイル内容に追加が書き込まれる。そして、消去領域６１−１に対し、クラスタ使用状況データが、「使用ファイル数：２」、「空き有り」に変更される。また、消去領域６１−４に対し、クラスタ使用状況データが「使用ファイル数：１」、「空きなし」に変更される。
【０１０７】
上記の「ファイル内容を追加書き込みする工程」によれば、ファイル内容を追加書き込みするときに、ファイルを構成する蓄積データを、もとのクラスタ６０に再書き込みをするのではなく、増加する蓄積データをそのファイルが属する消去領域６１の空き領域に書き込む。空き領域がない場合は、消去領域管理テーブル３１を参照して、他の消去領域６１の空き領域に増加する蓄積データを書き込む。
【０１０８】
従って、もとのクラスタ６０に再書き込みするために、そのクラスタ６０が属する消去領域６１の消去動作を繰り返す必要がない。
【０１０９】
ここで、消去管理テーブル３１を更新するステップ８６は、ファイル内容の追加に伴う「追加蓄積データ書き込み後に、消去領域管理テーブル３１にクラスタ使用状況データを書き込む工程」である。その結果、図１１に示すように、テーブル部６４には、「０００Ｂ、０００Ｃ、０００Ｄ、０００Ｅ、０００Ｆ、００１０、００１１。００１Ａ、００１Ｂ、００１Ｃ、００１Ｄ、００１Ｅ、００１Ｆ、００２０、００２１、０００６、０００７、０００８、ＦＦＦ８」とのファイル構成情報が追加される。
【０１１０】
図１３は、再利用前のＦＡＴファイルシステム領域３２と、再利用後のＦＡＴファイルシステム領域３２とを示す。また、ＦＡＴファイルシステム領域３２は、ブートセクタ６３、テーブル部６４、エントリ部６５、及び、蓄積データ格納部６６を有する点は同様である。
【０１１１】
図１３によれば、「クラスタ使用状況データに基づき、追加蓄積データを書き込めないと判断するときは、消去領域についてデータ消去動作を行う工程」は以下のように行われる。消去領域管理テーブル３１においては、消去領域管理テーブル３１の全領域を使用した後、次に使用する消去領域管理テーブル３１の領域が次の消去領域６１に変わる毎に、次の消去領域６１を消去して使用している。テーブル部６４においては、テーブル部６４の全領域を使用した後、次に使用するクラスタ６０に対応する領域が、次の消去領域６１に換わる毎に、次の消去領域６１を消去して使用している。蓄積データ格納部６６においては、各消去領域６１の全領域を使用した後、次にその消去領域６１を使用する順番となったときに、消去して使用する。
その管理方法は、「初期状態に、少なくとも、蓄積データ格納部６６、及び、消去領域管理テーブル３１に属するビットにすべて”１”を書き込む工程」と、「蓄積データをクラスタ６０に書き込む工程」と、「消去領域管理テーブル３１に、消去領域内のクラスタ６０の使用状況に応じた、クラスタ使用状況データを書き込む工程」と、「クラスタ使用状況に応じて、追加の蓄積データを格納するクラスタ６０を選択し、選択したクラスタ６０に蓄積データを追加書き込みする工程」と、「追加蓄積データ書き込み後に、消去領域管理テーブル３１にクラスタ使用状況データを書き込む工程」と、「クラスタ使用状況データに基づき、追加蓄積データを書き込めないと判断するときは、消去領域についてデータ消去動作を行う工程」と、を有することを特徴とするデータの管理方法である。
【０１１２】
上記の「ファイル内容を追加書き込みする工程」によれば、ファイル内容を追加書き込みするときに、ファイルを構成する蓄積データを、もとのクラスタ６０に再書き込みするのではなく、増加する蓄積データをそのファイルが属する消去領域６１の空き領域に書き込む。空き領域がない場合は、消去領域管理テーブル３１を参照して、他の消去領域６１の空き領域に増加する蓄積データを書き込む。ファイル内容の変更を行う場合は、空き領域に変更を書き込み、テーブル部６４を更新することで実現する。
【０１１３】
従って、もとのクラスタ６０に再書き込みするために、そのクラスタ６０が属する消去領域６１の消去動作を繰り返す必要がない。従って、消去動作が減少し、また、消去動作をその消去領域６１に対して集中させることがない。すなわち、消去領域の消去回数が減少し、その消去単位の劣化が遅くなる。その結果、ＦＬＡＳHメモリ３０の記憶領域の消去動作による劣化の程度を減少させることができる。
【産業上の利用可能性】
【０１１４】
上記のファイルシステムにおいては、フラッシュメモリ内の格納領域又はテーブル部分の一部に消去動作が集中することがなく、すべての蓄積データ格納部分を使用した後、消去動作が行われることになる。従って、本発明の一側面によれば、消去領域内の蓄積データの消去回数が減少し、寿命が長いファイルシステムを提供することができる。
【図面の簡単な説明】
【０１１５】
【図１】図１は、実施例１のファイルシステム１０及びファイルシステムとのデータ入出力を行うパーソナルコンピュータ５０を示す。
【図２】図２は、実施例1で示したＦＡＴファイルシステム領域３２内のクラスタ６０をアドレス順に示す。
【図３】図３は、実施例２の管理方法を示す。
【図４】図４は、初期状態における、アドレス順に並べられたクラスタ６０の内容を示す。
【図５】図５は、蓄積データの書き込み状態及び蓄積データの排出状態における、アドレス順に並べられたクラスタ６０の内容を示す。
【図６】図６は、蓄積データの追加書き込み状態における、アドレス順に並べられたクラスタ６０の内容を示す。
【図７】図７は、テーブル部６４において、テーブル部６４を再利用するところを示す。
【図８】図８は、エントリ部６５のデータが、各工程においてどのように処理されるかについて示す図である。
【図９】図９により、「蓄積データ書き込み工程」及び「クラスタ使用状況データを書き込み工程」を説明する。
【図１０】図１０は、図９におけるファイル書き込み状態に加え、さらに、ファイルをＦＡＴファイルシステム領域３２に書き込んだところを示す。
【図１１】図１１は、図１０におけるファイル書き込み工程に加え、さらに、４番目のファイル内容の追加をＦＡＴファイルシステム領域３２に書き込んだ状態を示す。
【図１２】図１２により、図１１に示す状態とするための、「ファイル内容を追加書き込みする工程」に対する処理を、フローチャートを用いて示す。
【図１３】図１３は、再利用前のＦＡＴファイルシステム領域３２及び消去領域管理テーブル３１と、再利用後のＦＡＴファイルシステム領域３２及び消去領域管理テーブル３１とを示す。
【符号の説明】
【０１１６】
１０  ファイルシステム
１２  制御部
１５  アプリケーション制御部
１６  ファイルシステム制御部
１７  データ制御部
１８  ＦＬＡＳＨドライバ
１９  ＵＳＢドライバ
２６  データ入出力動作
２７  データ読み書き動作
２８  データ書き換え動作
３０  ＦＬＡＳＨメモリ
３１  消去領域管理テーブル
３２  ＦＡＴファイルシステム領域
３３  他の領域
４０  ＲＡＭ
５０  パーソナルコンピュータ
５１  アプリケーション制御手段
５２  ファイルシステム制御手段
５３  ＵＳＢホストドライバ
６０  クラスタ
６１  消去領域
６１−１、６１−２、６１−３、６１−４  消去領域
６３  ブートセクタ
６４  テーブル部
６５  エントリ部
６６  蓄積データ格納部
７０  初期化工程
７１  書込み工程
７２  データ排出工程
７３  書込み工程
７４  再利用工程
８０、８１、８２、８３、８４、８５、８６、８７、８８、８９、９０、９１  ステップ
【図１】
2009271848.tif 000003
【図２】
2009271848.tif 000004
【図３】
2009271848.tif 000005
【図４】
2009271848.tif 000006
【図５】
2009271848.tif 000007
【図６】
2009271848.tif 000008
【図７】
2009271848.tif 000009
【図８】
2009271848.tif 000010
【図９】
2009271848.tif 000011
【図１０】
2009271848.tif 000012
【図１１】
2009271848.tif 000013
【図１２】
2009271848.tif 000014
【図１３】
2009271848.tif 000015