(57)【特許請求の範囲】
【請求項１】
ソフトウェアからのデータ処理要求に応じてデータをファイルとして管理するためのデータ管理システムであって、
該データ処理要求に応じた処理を制御するデータ管理システム制御部と、
該データ管理システム制御部によって制御され、前記ファイルを構築するための制御情報を格納するデータ管理システムメモリ部と、
前記ファイルを構成するデータを格納する複数の消去ブロックから構成される不揮発性半導体記憶部と、
前記データ管理システム制御部からの制御に従って該不揮発性半導体記憶部へのデータ処理を制御する記憶制御部とを備え、
前記消去ブロックは、複数の論理的なデータ管理単位である論理セクタから構成され、
前記データ管理システムメモリ部は、同一アドレスに対して書き換え可能な揮発性または不揮発性のメモリ素子からなり、前記消去ブロックを構成する論理セクタの管理情報を格納する領域である制御情報テーブルと、格納されるデータを一意に識別する識別情報、該識別情報で識別されるデータの格納場所を示す前記不揮発性半導体記憶部の物理アドレス、および該物理アドレスに格納されたデータの状態情報を含む第１のデータタグの情報の配列と、格納されるデータを一意に識別する識別情報、該識別情報で識別されるデータの格納場所を示すブロック番号、および該ブロック上の論理セクタに格納されたデータの状態情報を含む第２のデータタグの情報の配列とからなるデータタグテーブルとを有することを特徴とするデータ管理システム。
【請求項２】
前記制御情報テーブルは、前記消去ブロックを構成する論理セクタの管理情報として、少なくとも、使用されていない論理セクタの数、格納されているデータが有効である論理セクタの数、および格納されているデータが無効である論理セクタの数の情報を含むブロック制御情報が、予め一意に割り振られるブロック番号の順に配列されてなる請求項１に記載のデータ管理システム。
【請求項３】
請求項２に記載のデータ管理システムを用いて、ソフトウェアからのデータ処理要求に応じてデータをファイルとして管理するデータ管理方法であって、
ソフトウェアから処理対象となるデータの識別情報と共にデータ読み出し処理要求が発生した場合に、前記データ管理システム制御部が、前記データ管理システムメモリ部に格納された前記データタグテーブルを参照して、与えられた識別情報と一致するデータタグ情報から前記不揮発性半導体記憶部の物理アドレスを求め、予め定められた境界値を基準として、求められた物理アドレスの値に従って前記第１のデータタグ情報の配列と前記第２のデータタグ情報の配列のいずれかを選択し、選択されたデータタグ情報の配列に基づいて前記不揮発性半導体記憶部からデータの読み出し処理を行うことを特徴とするデータ管理方法。
【請求項４】
データ管理システムの起動時に、前記データ管理システム制御部が、前記消去ブロックに含まれる各論理セクタの状態を格納する領域を順次読み出し、該論理セクタの状態情報から、使用されていない論理セクタ、格納されているデータが有効である論理セクタ、および格納されているデータが無効である論理セクタの各々を検出する毎にその数をカウントアップすることによって前記制御情報テーブルを生成する、請求項３に記載のデータ管理方法。
【請求項５】
データ管理システムの起動時に、前記データ管理システム制御部が、前記消去ブロックに含まれる各論理セクタの状態を格納する領域を順次読み出し、格納されているデータが有効である論理セクタのデータ識別情報として、ブロック番号と論理セクタ番号、およびデータの状態情報を抽出し、それらを配列することによって前記データタグテーブルの前記第２のデータタグの情報の配列を生成する、請求項３に記載のデータ管理方法。
【請求項６】
データ管理システムの起動時に、前記データ管理システム制御部が、前記消去ブロックに含まれる各論理セクタの状態を格納する領域を順次読み出し、格納されているデータが有効である論理セクタのブロック番号と論理セクタ番号、およびデータの状態情報を抽出して、該ブロック番号と該論理セクタ番号を基に前記不揮発性半導体記憶部の物理アドレスを演算し、該物理アドレスと、前記抽出された論理セクタ番号およびデータの状態情報とを配列することによって、前記データタグテーブルの前記第１のデータタグの情報の配列を生成する、請求項３に記載のデータ管理方法。
【請求項７】
前記データ管理システム制御部は、前記データ管理システムメモリ部に格納された前記制御情報テーブルを参照する際に、使用されていない論理セクタの数が最も多いブロックを検索して書き込み対象ブロックとして選択する処理と、与えられた識別情報での書き込み処理に対応する新たなデータタグ情報を生成して前記データタグテーブルに追加する処理と、書き込み処理に伴う有効および無効な論理セクタの数の増減に従って該制御情報テーブルを更新する処理とを少なくとも含み、
与えられた識別情報と同一の識別情報が該データタグテーブルに存在する場合には、さらに、既存の識別情報を有するデータタグ情報内のデータの状態情報を無効にする処理と、該データを無効にする処理に伴う有効および無効な論理セクタの数の増減に従って該制御情報テーブルを更新する処理とを含む、請求項３に記載のデータ管理方法。
【請求項８】
前記データ管理システム制御部は、前記データ管理システムメモリ部に格納された前記データタグテーブルを参照する際に、与えられた識別情報と一致するデータタグ情報内のデータの状態情報を無効にする処理と、該データを無効にする処理に伴う有効および無効な論理セクタの数の増減に従って前記制御情報テーブルを更新する処理とを少なくとも含む、請求項３に記載のデータ管理方法。
【請求項９】
前記ソフトウェアから要求されたデータ処理中に、前記消去ブロック内において格納されているデータが無効である論理セクタを解放する再構築処理が必要となった場合に、前記データ管理システム制御部が、前記データ管理システムメモリ部に格納された前記制御情報テーブルを参照して、格納されているデータが無効である論理セクタの数が最も多いブロックを検索して再構築対象ブロックとして選択する処理と、該データの状態情報が無効であるデータタグ情報を削除するために、前記データタグテーブルを再度生成する処理とを少なくとも含む、請求項３に記載のデータ管理方法。
【請求項１０】
前記データ管理システム制御部は、高速読み出しを必要とするデータと高速読み出しを必要としないデータを分類し、ある値を基準としてそのいずれに分類されるかを判別可能なように各々のデータに識別情報の値を予め割り振り、データ読み出し処理要求が発生すると、該識別情報の値から高速読み出しを必要とするデータと判別される場合には前記第１のデータタグ情報の配列を選択し、高速読み出しを必要としないデータと判別される場合には前記第２のデータタグ情報の配列を選択する、請求項３に記載のデータ管理方法。
【請求項１１】
前記データ管理システム制御部は、前記データ管理システムメモリ部に格納された前記データタグテーブルを参照する際に、直近に生成されたデータタグ情報から古い時点で生成されたデータタグ情報の方向へ検索し、与えられた識別情報と一致するデータタグ情報から前記不揮発性半導体記憶部の物理アドレスを求める処理と、読み出し処理毎に与えられたデータ識別情報に対応するデータタグ情報を生成し、前記データタグテーブルの配列に追加する処理とを含む、請求項３に記載のデータ管理方法。
【請求項１２】
前記データ読み出し処理要求が発生した場合に、ソフトウェアから処理対象となるデータの識別情報とともに、読み飛ばしオフセットと読み込みサイズが与えられると、前記データ管理システム制御部が、前記データ管理システムメモリ部に格納された前記データタグテーブルを参照して、与えられた識別情報と一致するデータタグ情報から前記不揮発性半導体記憶部の物理アドレスを求める処理と、該物理アドレスに該読み飛ばしオフセットを加算して新たな読み出し対象物理アドレスとする処理と、該新たな読み出し対象物理アドレスから該読み込みサイズ分だけデータを読み出す処理とを少なくとも含む、請求項３に記載のデータ管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、不揮発性半導体メモリを記憶媒体として使用する情報処理装置およびその拡張記憶装置、より具体的にはハンドヘルドコンピュータ、電子手帳や携帯電話、メモリーカードリーダー等に使用されるデータ管理システムおよびそれを用いたデータ管理方法に関する。
【０００２】
【従来の技術】
従来から、パーソナルコンピュータにおけるデータ記憶装置としては、ハード磁気ディスクドライブが多く用いられている。このハード磁気ディスクドライブの特徴および利点としては、データが不揮発性記憶されること、およびデータの読み出しと書き換えをセクタ単位（例えば５１２バイト単位）で行い、データの上書きが可能であることが挙げられる。一方、このハード磁気ディスクドライブの欠点としては、物理的なサイズが大きいこと、相対的に消費電力が大きいこと、および振動や衝撃に弱いことが挙げられる。
【０００３】
上記ハード磁気ディスクドライブに対して、フラッシュメモリからなる半導体メモリの利点としては、小型で振動や衝撃に強いこと、および相対的に消費電力が著しく小さいことが挙げられる。一方、フラッシュメモリからなる半導体メモリの欠点としては、データの読み出しと書き込みが１バイト単位（ワード）単位であること、データの書き換えには一旦データ消去動作（通常６４ｋバイトのブロック単位での消去）が必要で、データの上書きが不可能であること、およびブロック消去回数が有限（通常１０万回まで）が挙げられる。
【０００４】
フラッシュメモリは、電気的にデータの書き込みと消去が可能であり、書き込まれたデータは消去（通常６４ｋバイト単位）されるまでの間は不揮発性データとして保持される。この消去動作は、ブロック単位（通常６４ｋバイト単位）で行われ、上記ハード磁気ディスクドライブにおけるデータ書き換え単位（例えば５１２バイト）と比較した場合、フラッシュメモリでは著しく大きなデータ書き換え単位となっている。なお、フラッシュメモリの消去動作とは、ソース、ドレイン、コントロールゲートおよび電子の蓄積手段となるフローティングゲートからなるフラッシュメモリにおいて、通常、フローティングゲートから電子を引き抜き、その結果、メモリセルの閾値が低く（約３Ｖ以下）なることを言う。また、フラッシュメモリの書き込み動作とは、通常、フローティングゲートに電子を注入し、その結果、メモリセルの閾値が高く（約５．５Ｖ以上）なることを言う。
【０００５】
フラッシュメモリは、１バイト（ワード）の書き込み時間が約２０マイクロ秒であるのに対して、消去時間（通常６４ｋバイト単位の場合）が約１秒程度と著しく遅く、消去の保証回数が有限（通常１０万回まで）であるという欠点がある。このため、１セクタ（例えば５１２バイト）のデータ書き換え毎に消去動作（通常６４ｋバイト）が行われる場合、データ書き換え時間（消去時間と書き込み時間の和）として１秒以上が必要となり、ハード磁気ディスクドライブのディスク書き換え時間と比較して、著しく遅いものとなる。フラッシュメモリを上記ハード磁気ディスクドライブの代替として用いるためには、上記フラッシュメモリの欠点を踏まえ、かつ、データの取り扱い単位を上記ハード磁気ディスクドライブ程度（数百バイト）に小さくする必要がある。
【０００６】
そこで、動作時間の長いデータ消去をなるべく行わず、効率良くデータを管理するための仕組み、すなわち、フラッシュメモリに対応したファイルシステムに関する技術として、例えば特開平６−２０２８２１号や特開平９−９７１３９号に提案されているようなものがある。
【０００７】
特開平６−２０２８２１号では、複数のフラッシュメモリを用いて固体メモリディスクを実現するために、各フラッシュメモリの消去ブロックに、データが格納されているセクタを記憶するデータスペース、およびブロックセクタ変換テーブルを含む。このブロックセクタ変換テーブルは、ブロックのデータスペースに記憶されている各データのセクタをセクタ番号によって識別する方法を採っている。
【０００８】
特開平９−９７１３９号では、フラッシュメモリを用いてファイルシステムを実現するために、データ領域およびデータ領域に対応する管理領域で構成される複数の記憶ブロックをフラッシュメモリに形成している。また、各記憶ブロックにおいて、データ領域の記憶状態を示す状態情報を管理領域に格納し、その状態情報に基づいてデータ領域へのアクセスを管理する手段と、指定された記憶ブロックに対して、その管理領域に格納されている状態情報をデータ領域が無効である情報に更新することによりそのデータ領域を廃棄する手段とを備えている。
【０００９】
以下に、図２３〜図３５を用いて、データの登録および検索に関する従来のデータ管理方法について、詳細に説明する。ここでは、個々のデータはデータＩＤ番号によって一意に識別されるものとする。また、各データはセクタサイズを上限とする固定長とし、１セクタ内に収まるものとする。
【００１０】
図２３は本願出願人が以前に出願した特願平１１−２５４９７３号に開示されている、従来のフラッシュメモリを用いたファイルシステムの構成を示す図である。図２３において、１１はファイルシステム、１２はファイルシステム１１の処理を制御するファイルシステム制御部、３はフラッシュメモリ部４へのデータ処理を制御するフラッシュメモリ制御部、４はフラッシュメモリ部、５はフラッシュメモリ部４の内部に存在する消去ブロック、６はファイルシステム１１へデータの処理を依頼するアプリケーションプログラムまたはオペレーションシステム（ＯＳ）等のソフトウェアである。
【００１１】
図２４は、図２３のフラッシュメモリ部４に格納されているデータの構成を示す図である。データ管理システムとして確保された（Ｌ＋１）個の消去ブロック５に対して、ここでは便宜上、＃０〜＃Ｌのブロック番号を与える。そのうち、任意の１個の消去ブロックは、後述するファイルシステム１１の再構築用に用いられる予備消去ブロック５１として確保され、データ格納用の消去ブロックとは区別される。よって、実際にデータを格納できる消去ブロック数はＬ個となる。
【００１２】
フラッシュメモリ部４の各消去ブロック５は、ファイルシステム制御部１２上ではデータの取扱い単位である（Ｍ＋１）個の物理セクタ５ａに仮想的に分離される。ここでは便宜上、各々の物理セクタに対して、各消去ブロック５内で一意の物理セクタ番号＃０〜＃Ｍを与える。例えば、各消去ブロック５のサイズが６４ｋバイトで、各物理セクタ５ａのサイズが５１２バイトである場合、各消去ブロック５には１２８個の物理セクタ５ａ  ＃０〜＃１２７が存在することになる。
【００１３】
ここで、各消去ブロック５の物理セクタ５ａ  ＃０〜＃ｍは、各々の消去ブロック５の制御情報を格納するブロックコントロールエリア５ｂとして確保され、データ格納用の物理セクタとは区別される。このブロックコントロールエリア５ｂには、消去ブロック５の使用状況が格納される。また、データ格納用の物理セクタ５ａは論理セクタ５ｃと称し、新たに論理セクタ番号＃０〜＃Ｎを割り当てる。論理セクタの個数（ｍａｘ．Ｎ＋１）は、物理セクタ数からブロックコントロールエリアを差し引いた（Ｍ−ｍ）で示される。この論理セクタ番号は各消去ブロック内で一意であり、各々が対応する論理セクタ５ｃおよび後述するセクタ状態情報５ｅの位置を表す。
【００１４】
消去ブロックのブロック状態情報５ｄは、５種類のブロック状態のいずれかを表すデータからなる。５種類のブロック状態とは、
0003904182.tif 000002
である。この消去ブロック５のブロック状態情報５ｄは、ブロックコントロールエリア５ｂの先頭に配置される。通常、Ｌ個の消去ブロックには「データ有り」が、予備消去ブロック５１には「予備消去ブロック」が書き込まれている。
【００１５】
この消去ブロック５のブロック状態情報５ｄに続いて、ブロックコントロールエリア５ｂには、論理セクタ５ｃのセクタ状態情報５ｅが順次配列される。論理セクタ状態情報５ｅの位置は論理セクタ番号に対応している。すなわち、先頭からｎ番目のセクタ状態情報が表しているのは論理セクタ番号ｎ番のセクタ状態であり、物理セクタ番号（ｍ＋ｎ）番のセクタ状態である。
【００１６】
物理セクタ５ａに配置されたセクタ状態情報５ｅは、ファイルシステム制御部１２が割り当てを行うシステム内で一意のデータＩＤ番号５ｆ、および５種類のデータ状態５ｇのいずれかを表す値からなる。５種類のデータ状態とは、
（１）「セクタ未使用」を表す１１１１ｂ
（２）「データ書き込み中」を表す１１１０ｂ
（３）「データ書き込み完了」を表す１１００ｂ
（４）「データ有効」を表す１０００ｂ
（５）「データ無効」を表す００００ｂ
である。
【００１７】
消去ブロック５のブロック状態情報５ｄ、およびデータ状態５ｇを表すために上述したような値を割り当てる理由は、フラッシュメモリの書き換えが１→０のみの不可逆書き込みであることによる。消去動作を行うことなく複数の状態を表現するため、１ビットずつ書き換えていく手法を採っている。
【００１８】
ブロックコントロールエリア５ｂのサイズ、論理セクタ番号数および消去ブロック当たりの記憶容量は、フラッシュメモリ部４のバイトアクセスやワードアクセスのようなアクセスモード、データＩＤ番号の上限値、物理セクタ５ａのサイズ、および消去ブロック５のサイズによって変化する。これは、各情報量に応じたビット数が必要になることに加え、フラッシュメモリではビット毎にオーバーライトに対する注意が必要になるため、書き換えの単位がアクセスモードの整数倍である方がデータ更新に都合が良いことに起因する。なお、以下の例では、データの区切りを示すデータセパレートのスペースや無効なデータ領域に与えるダミーデータであるパディングは入らないものとする。
【００１９】
・例１：ワードモード、ＩＤ上限値６５５３５、セクタサイズ５１２バイト、消去ブロックサイズ６４ｋＢの場合
図２５に例を示す。消去ブロックサイズとセクタサイズより、物理セクタ数は６５５３６／５１２＝１２８個となる。各消去ブロック５のブロック状態情報５ｄは４ビットで表現可能であるが、書き換えの単位がワードサイズ（１６ビット）であるために２バイト必要となる。次に、セクタ状態情報５ｅはデータＩＤ番号５ｆとデータ状態５ｇの２項目からなるが、０〜６５５３５の番号を表すためには１６ビット必要であり、データＩＤ番号５ｆのみで２バイト必要である。さらに、データ状態５ｇは４ビットで表現可能であるが、書き換えの単位がワードサイズであるために２バイト必要となり、計４バイトが論理セクタ５ｃの１つにつき必要となる。よって、この場合には、ブロックコントロールエリア５ｂには１セクタ必要で２＋４×（１２８−１）＝５１０バイトの情報を有し、実際にデータを格納する物理セクタは＃１〜＃１２７、論理セクタ番号は＃０〜＃１２６が割り当てられ、消去ブロック当たりの記憶容量は５１２×１２７＝６４０２４バイトとなる。なお、この図２５および以下の図において、斜線部はその時点で使用されていない部分を示す。
【００２０】
・例２：バイトモード、ＩＤ上限値４０９５、セクタサイズ１２８バイト、消去ブロックサイズ６４ｋＢの場合
図２６に例を示す。消去ブロックサイズとセクタサイズより、物理セクタ数は６５５３６／１２８＝５１２個となる。各消去ブロック５のブロック状態情報５ｄは４ビットで表現可能であるが、書き換えの単位がバイトサイズであるために１バイト必要となる。次に、セクタ状態情報５ｅはデータＩＤ番号５ｆとデータ状態５ｇの２項目からなるが、０〜４０９５の番号を表すためには１２ビット必要であり、データ状態５ｇを表すための４ビットと合わせて、計２バイトが論理セクタ５ｃの１つにつき必要となる。よって、この場合には、ブロックコントロールエリア５ｂには８セクタ必要で１＋２×（５１２−８）＝１００９バイトの情報を有し、実際にデータを格納する物理セクタは＃８〜＃５１１、論理セクタ番号は＃０〜＃５０３が割り当てられ、消去ブロック当たりの記憶容量は１２８×５０４＝６４５１２バイトとなる。
【００２１】
フラッシュメモリ部４のアクセスモード、データＩＤ番号の上限値、物理セクタ５ａのサイズ、消去ブロック５のサイズおよび使用する消去ブロック５については、ファイルシステムの構築時にその物理アドレス範囲（先頭オフセットと最終オフセットまたはデータエリア全体のサイズ）を定義する。これによって、ブロックコントロールエリア５ｂ上でのセクタ状態情報５ｅの配置が一意に決まるので、その位置から容易に論理セクタ番号を取得することができる。この論理セクタ番号を元にして、ファイルシステム制御部１２は消去ブロック５の論理セクタ５ｃに対してアクセスすることができる。このように制御情報をフラッシュメモリ部４に格納することのメリットは、その不揮発性にある。これにより、電源断等によりシステムが停止しても、常に管理情報を保持することができ、容易にファイルシステムを再開することが可能である。
【００２２】
（データの読み出し処理）
図２７は、従来技術におけるフラッシュメモリ部４に格納されたデータの読み出し処理に関するフローチャートである。なお、以降のフローチャートにおいて、図２８のような記述はステップＡからステップＢ間のステップＣを、セクタ状態情報の値をパラメータとして、その値を＃０から＃Ｎにかけて１回の実行毎にインクリメントしながらループ実行処理を行うことを示すものとする。このことは、ループが入れ子になっている場合でも同様である。また、以降のフローチャートにおいて、同じ処理を行う部分については同じステップ番号を付けている。なお、フローチャートの空白部は、繰り返し処理の終端を示し、条件判定は前の段に記載されているので、ここには何も記載していない。
【００２３】
アプリケーションプログラムまたはオペレーティングシステム６において、フラッシュメモリ部４からのデータの読み出し要求が発生した場合、この読み出し要求と共にデータＩＤ番号がアプリケーションプログラムまたはオペレーティングシステム６からファイルシステム制御部１２に与えられる。
【００２４】
ファイルシステム制御部１２はフラッシュメモリ制御部３を介して各消去ブロック５のブロックコントロールエリア５ｂを検索し、データＩＤ番号５ｆの照会（ステップ１００）、およびデータ状態５ｇの照会（ステップ１０１）を行う。与えられたＩＤ番号と一致し、かつ、データ状態が「データ有効」であるようなセクタ状態情報５ｅを検出すると、そのセクタ状態情報５ｅが示す論理セクタ番号を取得する（ステップ１０２）。そして、ブロック番号と論理セクタ番号から、フラッシュメモリ部４の物理アドレスを演算により取得する（ステップ１０３）。この物理アドレスは、
「当該ブロックの先頭アドレス」＋（「ブロックコントロールエリアのサイズ」  ＋「論理セクタ番号」）×「セクタサイズ」  ・・・（式１）
但し、「ブロックの先頭アドレス」＝「システム構築時に定義したシステム管理エリアの先頭オフセット」
＋「ブロック番号」×「ブロックサイズ」
から求められる。
【００２５】
フラッシュメモリ制御部３は、この物理アドレスに基づいてフラッシュメモリ部４をアクセスし、該当する論理セクタ５ｃの読み出しを行い、読み出したデータをファイルシステム制御部１２に与える（ステップ１０４）。
【００２６】
これらの操作をブロックコントロールエリア５ｂ内の全てのセクタ状態情報５ｅ  ＃０〜＃Ｎについて、さらに全ての消去ブロック５  ＃０〜＃Ｌについて順次繰り返す。但し、ブロック状態情報５ｄが「予備消去ブロック」である予備消去ブロック５１については、検索の対象外とする（ステップ１０５、ステップ１０６）。
【００２７】
ファイルシステム１１に割り当てられた全ての消去ブロック５について検索が終了しても、与えられたＩＤ番号が検出できない場合には、該当データ無しと判断して処理を終了する。なお、各フローチャートにおいて、空白部分は繰り返し処理の終端を示しており、条件判定は前段に記述されている。
【００２８】
（データの書き込み処理）
図２９〜図３１は、従来技術におけるフラッシュメモリ部４へのデータの書き込み処理に関するフローチャートである。
【００２９】
第１に、書き込み先ブロックの選択を行う。アプリケーションプログラムまたはオペレーティングシステム６において、フラッシュメモリ部４へのデータの書き込み要求が発生した場合、この書き込み要求と共にデータＩＤ番号、および書き込まれるデータがアプリケーションプログラムまたはオペレーティングシステム６からファイルシステム制御部１２に与えられる。ファイルシステム制御部１２は、各消去ブロック５のブロックコントロールエリア５ｂを全て検索し、セクタ状態情報５ｅのデータ状態５ｇが「未使用」となっているものをカウントする（図２９のステップ２００）。この動作をブロック番号＃０〜＃Ｌで表される消去ブロック５について順次繰り返す。但し、ブロック状態情報５ｄが「予備消去ブロック」である予備消去ブロック５１については、処理を行わない（図２９のステップ１０５、ステップ１０６）。そして、未使用セクタのカウント数が最も多い消去ブロック５のブロック番号を検出し、これを書き込み先消去ブロックとする（図３０のステップ２０１）。この操作により、特定の消去ブロック５へ書き込みが偏ることを防ぎ、フラッシュメモリ部４の摩耗度を消去ブロック５間で均一化する効果が得られる。全ての消去ブロック５において未使用セクタを検出できなかった場合には、後述するファイルシステムの再構築を行う。
【００３０】
第２に、書き込み先セクタの選択を行う。上記書き込み先消去ブロックを取得後、ファイルシステム制御部１２は、その書き込み先消去ブロックの消去ブロックコントロールエリア５ｂにアクセスし、データ状態が「未使用」となっているセクタ状態情報５ｅを検出して、その論理セクタ番号を取得する（図３０のステップ２０２）。
【００３１】
第３に、データ実体の書き込みを行う。データの書き込み開始前に、ファイルシステム制御部１２は、データＩＤ番号、および「データ書き込み中」のデータ状態を、上記書き込み先セクタに対応するセクタ状態情報５ｅのデータＩＤ番号５ｆおよびデータ状態５ｇに書き込む（図３０のステップ２０３）。次に、上記論理セクタ番号で示される論理セクタ５ｃへデータの書き込みを実行する（図３０のステップ２０４）。データの書き込み終了後、「データ書き込み完了」のデータ状態を、上記書き込み先セクタに対応するセクタ状態情報５ｅのデータ状態５ｇに書き込む（図３０のステップ２０５）。このようにセクタ状態情報５ｅを操作の都度更新する理由は、突然のシステム中断に備えるためであり、これについては後述のデータ復元で説明する。
【００３２】
第４に、旧データの無効化を行う。ファイルシステム制御部１２は、消去ブロック５のブロックコントロールエリア５ｂから、セクタ状態情報５ｅのデータＩＤ番号５ｆを照会し（図３１のステップ２０６）、与えられたＩＤ番号と一致するものを探す。この操作をセクタ状態情報５ｅ  ＃０〜＃Ｎについて、さらに消去ブロック５  ＃０〜＃Ｌについて、検出できるまで順次繰り返す。検出すれば、そのデータ状態５ｇを「データ無効」に書き換える（図３１のステップ２０７）。但し、ブロック状態情報５ｄが「予備消去ブロック」である予備消去ブロック５１については、この処理を行わない（図３１のステップ１０５、ステップ１０６）。
【００３３】
ファイルシステム１１に割り当てられた全ての消去ブロック５について検索が終了しても、与えられたＩＤ番号が検出できない場合には、既存データ無しと判断して無効化処理を終了する。
【００３４】
最後に、上記書き込み先セクタに対応するセクタ状態情報５ｅのデータ状態５ｇを「データ書き込み完了」から「データ有効」に書き換え、書き込み処理を終了する（図３１のステップ２０８）。
【００３５】
（データの削除処理）
図３２は、従来技術におけるフラッシュメモリ部４からのデータの削除処理に関するフローチャートである。ここで、データの削除処理とは、そのデータの存在するセクタを表すセクタ状態情報５ｅに対して、そのデータ状態を「データ無効」に書き換える操作を指す。
【００３６】
アプリケーションプログラムまたはオペレーティングシステム６において、フラッシュメモリ部４からのデータの削除要求が発生した場合、この削除要求と共にデータＩＤ番号がアプリケーションプログラムまたはオペレーティングシステム６からファイルシステム制御部１２に与えられる。
【００３７】
書き込み時の旧データ無効化と同様に、ファイルシステム制御部１２は、消去ブロック５のブロックコントロールエリア５ｂから、セクタ状態情報５ｅのデータＩＤ番号５ｆを照会し（ステップ２０６）、与えられたＩＤ番号と一致するものを探す。この操作をセクタ状態情報５ｅ  ＃０〜＃Ｎについて、さらに消去ブロック５  ＃０〜＃Ｌについて、検出できるまで順次繰り返す。検出すれば、そのデータ状態５ｇを「データ無効」に書き換える（ステップ２０７）。但し、ブロック状態情報５ｄが「予備消去ブロック」である予備消去ブロック５１については、この処理を行わない（ステップ１０５、ステップ１０６）。
【００３８】
ファイルシステム１１に割り当てられた全ての消去ブロック５について検索が終了しても、与えられたＩＤ番号が検出できない場合には、既存データ無しと判断して無効化処理を終了する。
【００３９】
ここで注意しなければならないのは、データの削除を行ってもそのセクタが廃棄されるのみで、データを格納可能な記憶容量は回復されないことである。記憶容量の回復には、次のような再構築処理が必要となる。
【００４０】
（再構築処理）
図３３は、従来技術におけるファイルシステム１１の再構築処理に関するフローチャートである。ここで、再構築処理とは、消去ブロック５の論理セクタ５ｃが無効データに占有され、利用できるセクタが無いかまたは少ない場合に、有効データのみを予備消去ブロック５１に退避させ、その消去ブロックを消去することにより、有効セクタの再生を図るものである。
【００４１】
第１に、再構築対象ブロックの選択を行う。ファイルシステム制御部１２は、各消去ブロック５のブロックコントロールエリア５ｂを全て検索し、セクタ状態情報５ｅのデータ状態５ｇが「データ無効」となっているものをカウントし、カウント数が最も多い消去ブロック５のブロック番号を検出する（ステップ３００）。検出した消去ブロックをコピー元消去ブロックとし、ブロック状態情報５ｄを「コピー元ブロック」に書き換える（ステップ３０１）。
【００４２】
第２に、予備消去ブロック５１のブロック状態を更新する。ファイルシステム制御部１２は、フラッシュメモリ部４をアクセスし、ファイルシステム１１の再構築処理用に予め未使用状態で確保しておいた予備消去ブロック５１のブロックコントロールエリア５ｂにアクセスして、この予備消去ブロック５１のブロック状態情報５ｄを「未使用」から「データ転送中」に書き換える（ステップ３０２）。
【００４３】
第３に、有効データのコピーを行う。ファイルシステム制御部１２は、コピー元消去ブロックのブロックコントロールエリア５ｂにアクセスし、データ状態５ｇが「データ有効」となっているセクタ状態情報５ｅのみを取得し、コピー元消去ブロックのブロックコントロールエリア５ｂから予備消去ブロック５１のブロックコントロールエリア５ｂへ、論理セクタ番号が一致するようにコピーする（ステップ３０３）。同様に、「データ有効」で示される論理セクタ５ｃのデータのみを、コピー元消去ブロックの論理セクタ５ｃから、予備消去ブロック５１の論理セクタ番号が等しい論理セクタ５ｃへコピーする（ステップ３０４）。コピー元消去ブロックの「データ有効」である全ての論理セクタ５ｃが予備消去ブロック５１にコピーされるまで、処理を繰り返す。
【００４４】
第４に、ブロックの消去を行う。ファイルシステム制御部１２は、フラッシュメモリ制御部３を通じてフラッシュメモリ部４をアクセスし、予備消去ブロック５１のブロックコントロールエリア５ｂのブロック状態情報５ｄを「データ転送中」から「元ブロック消去中」に書き換え（ステップ３０５）、コピー元消去ブロックの消去を実行する（ステップ３０６）。
【００４５】
最後に、予備消去ブロックの変更を行う。コピー元消去ブロックの消去が完了すれば、予備消去ブロック５１のブロックコントロールセクタ５ｂのブロック状態５ｄを「元ブロック消去中」から「データ有り」に書き換える（ステップ３０７）。消去されたコピー元ブロックは、消去動作によりそのブロック状態情報５ｄが「予備消去ブロック」となり、次回再構築時の予備消去ブロック５１となる。
【００４６】
（データ復元）
図３４および図３５は、従来技術におけるファイルシステム１１のデータ復元処理に関するフローチャートである。ここで、データ復元処理とは、異常終了により中断した処理を継続する操作を指す。
【００４７】
ファイルシステム１１では、フラッシュメモリ部４の不揮発性を利用して、処理中にシステムが異常終了した場合でも、データを保護する機能を有する。ファイルシステム制御部１２は、システム起動時にフラッシュメモリ制御部３を介して消去ブロック５のブロックコントロールエリア５ｂを参照し、前回動作中に異常終了が無かったか否かの確認を行う。ブロック状態情報５ｄが「データ転送中」、「元ブロック消去中」または「コピー元ブロック」である場合、ブロック状態が異常であると定義する。または、セクタ状態情報５ｅが「データ書き込み中」または「データ書き込み完了」である場合、セクタ状態が異常であると定義する。ファイルシステム制御部１２は、これらの状態を検出すると、ファイルシステム１１の動作が何らかのアクシデントによって異常終了していると判断し、中断した正規の作業を継続する。
【００４８】
・ブロック状態が異常であった場合
ブロック状態に異常が検出されたとき（図３４のステップ４００）は、再構築処理の途中で動作が中断したと考えられる。
【００４９】
１．「データ転送中」が検出されたとき
ブロック状態情報が「データ転送中」である消去ブロックに対して消去動作を実行する（図３４のステップ４０１）。その後、図３３のステップ３０３から処理を再開する（図３４のステップ４０２）。
【００５０】
２．「元ブロック消去中」が検出されたとき
ブロック状態情報が「データ有り」以外の消去ブロックを検出し、その消去ブロックに対して消去動作を実行する（図３４のステップ４０３）。その後、図３３のステップ３０７から処理を再開する（図３４のステップ４０４）。
【００５１】
３．「コピー元ブロック」が検出されたとき
他に「データ転送中」または「元ブロック消去中」のブロック状態情報を有する消去ブロックが無いか検索する。検出された場合には上記１の処理または上記２の処理を行う。検出されなかった場合には、図３３のステップ３０２から処理を再開する（図３４のステップ４０５）。
【００５２】
・セクタ状態が異常であった場合
セクタ状態に異常が検出されたとき（図３５のステップ４０６）は、書き込み処理の途中で動作が中断したと考えられる。
【００５３】
１．「データ書き込み中」が検出されたとき
セクタ状態情報が「データ書き込み中」であったデータは完全にフラッシュメモリ部４に書かれていないと判断して、そのセクタのデータを無効にするため、セクタ状態情報５ｄのデータ状態を「データ無効」にする（図３５のステップ４０７）。この場合、書き込み中であったデータは破棄され、同じＩＤ番号で以前のデータが存在すれば、そのデータが有効になる。
【００５４】
２．「データ書き込み完了」が検出されたとき
セクタ状態情報が「データ書き込み完了」であったデータは完全にフラッシュメモリ部４に書かれていると判断して、図３０のステップ２０５から処理を再開する（図３５のステップ４０８）。
【００５５】
【発明が解決しようとする課題】
従来のデータ管理装置（データ管理システムと、アプリケーションプログラムやオペレーティングシステムを含む）に用いられるデータ管理システムにおいては、以下のような問題がある。
【００５６】
まず、フラッシュメモリのどこにデータが書き込まれているかによって、読み出し時間が大きく異なる点が挙げられる。ＩＤ番号とデータ格納位置には因果関係が無いため、該当するＩＤ番号が見つかるまで、全消去ブロックのブロックコントロールエリアを順に検索することになる。例えば、検索順序がアドレス下位からシリアルに行われる場合を考えると、対象となるデータの情報を納めたセクタ状態情報がブロックコントロールエリアのアドレス上位側に位置する場合、アドレス下位に位置する場合に比べて、読み出すまでの時間が長くなる。この傾向は、データ数の増加や更新頻度の増加に伴ってより顕著になり、システムのパフォーマンスを低下させる要因となり得る。よって、データの検索範囲を絞り込む工夫が必要である。
【００５７】
次に、制御情報がフラッシュメモリ上に構築されている点が挙げられる。これは、システム異常終了時からの復旧が容易であるという利点を有する反面、システムパラメータ保持の仕方に制限があり、システムに効率の悪い動作を強いている。例えば、書き込み先消去ブロックを選択する場合を考えると、この操作では各消去ブロックの有効セクタ数を求めるが、有効セクタの数および無効セクタ数の値をカウンタとして保持していれば、その値を参照するのみで良い。しかしながら、フラッシュメモリは同じ場所へのオーバーライト（上書き）ができず、また、書き込みや消去に多大な時間を費やすため、カウンタのような値をフラッシュメモリの領域に保持することは困難である。このため、その都度ブロックコントロールエリアの全てを検索するという非常に効率の悪い方法を採っている。同様に、フラッシュメモリでは、例えばセクタ状態情報を並べ替える等、システムの動作変更等に対して柔軟な対応を行うのが困難である。
【００５８】
本発明は、このような従来技術の課題を解決するためになされたものであり、データアクセスまでの時間短縮を図ることができるデータ管理システムおよびそれを用いたデータ管理方法を提供することを目的とする。
【００５９】
【課題を解決するための手段】
本発明のデータ管理システムは、ソフトウェアからのデータ処理要求に応じてデータをファイルとして管理するためのデータ管理システムであって、該データ処理要求に応じた処理を制御するデータ管理システム制御部と、該データ管理システム制御部から参照され、該ファイルを構築するための制御情報を格納するデータ管理システムメモリ部と、該ファイルを構成するデータを格納する複数の消去ブロックから構成される不揮発性半導体記憶部と、該データ管理システム制御部からの制御に従って該不揮発性半導体記憶部へのデータ処理を制御する記憶制御部とからなるデータ管理システムにおいて、前記消去ブロックは、複数の論理的なデータ管理単位である論理セクタから構成され、該データ管理システムメモリ部は、揮発性または不揮発性の同一アドレスに対して書き換え可能なメモリ素子からなり、該消去ブロックを構成する論理セクタの管理情報を格納する領域である制御情報テーブルと、該データ処理要求の対象となるデータを識別する識別情報、該データの格納場所情報および該格納場所に格納されたデータの状態情報を格納する領域であるデータタグテーブルとを有し、そのことにより上記目的が達成される。
【００６０】
前記制御情報テーブルは、前記消去ブロックを構成する論理セクタの管理情報として、少なくとも、使用されていない論理セクタの数、格納されているデータが有効である論理セクタの数、および格納されているデータが無効である論理セクタの数の情報を含むブロック制御情報が、予め一意に割り振られるブロック番号の順に配列されてなっていてもよい。
【００６１】
前記データタグテーブルは、少なくとも、格納されるデータを一意に識別する識別情報、該識別情報で識別されるデータの格納場所を示すブロック番号と論理セクタ番号、および該論理セクタに格納されたデータの状態情報を含むデータタグの情報の配列からなっていてもよい。
【００６２】
前記データタグテーブルは、格納されるデータを一意に識別する識別情報、該識別情報で識別されるデータの格納場所を示すブロック番号、および該ブロック上の論理セクタに格納されたデータの状態情報を含むデータタグの情報の配列からなっていてもよい。
【００６３】
前記データタグテーブルは、少なくとも、格納されるデータを一意に識別する識別情報、該識別情報で識別されるデータの格納場所を示す前記不揮発性半導体記憶部の物理アドレス、および該物理アドレスに格納されたデータの状態情報を含むデータタグの情報の配列からなっていてもよい。
【００６４】
前記データタグテーブルは、格納されるデータを一意に識別する識別情報、該識別情報で識別されるデータの格納場所を示す前記不揮発性半導体記憶部の物理アドレス、および該物理アドレスに格納されたデータの状態情報を含む第１のデータタグの情報の配列と、格納されるデータを一意に識別する識別情報、該識別情報で識別されるデータの格納場所を示すブロック番号、および該ブロック上の論理セクタに格納されたデータの状態情報を含む第２のデータタグの情報の配列とからなっていてもよい。
【００６５】
本発明のデータ管理方法は、本発明のデータ管理システムを用いて、ソフトウェアからのデータ処理要求に応じてデータをファイルとして管理するデータ管理方法であって、該データ管理システムの起動時に、前記データ管理システム制御部が、前記消去ブロックに含まれる各論理セクタの状態を格納する領域を順次読み出し、該論理セクタの状態情報から、使用されていない論理セクタ、格納されているデータが有効である論理セクタ、および格納されているデータが無効である論理セクタの各々を検出する毎にその数をカウントアップすることによって前記制御情報テーブルを生成しており、そのことにより上記目的が達成される。
【００６６】
本発明のデータ管理方法は、本発明のデータ管理システムを用いて、ソフトウェアからのデータ処理要求に応じてデータをファイルとして管理するデータ管理方法であって、該データ管理システムの起動時に、前記データ管理システム制御部が、前記消去ブロックに含まれる各論理セクタの状態を格納する領域を順次読み出し、格納されているデータが有効である論理セクタのデータ識別情報として、ブロック番号と論理セクタ番号、およびデータの状態情報を抽出し、それらを配列することによって前記データタグテーブルを生成しており、そのことにより上記目的が達成される。
【００６７】
本発明のデータ管理方法は、本発明のデータ管理システムを用いて、ソフトウェアからのデータ処理要求に応じてデータをファイルとして管理するデータ管理方法であって、該データ管理システムの起動時に、前記データ管理システム制御部が、前記消去ブロックに含まれる各論理セクタの状態を格納する領域を順次読み出し、格納されているデータが有効である論理セクタのブロック番号と論理セクタ番号を抽出して、該ブロック番号と該論理セクタ番号を基に前記不揮発性半導体記憶部の物理アドレスを演算し、該物理アドレスを配列に加えることによって前記データタグテーブルを生成しており、そのことにより上記目的が達成される。
【００６８】
本発明のデータ管理方法は、本発明のデータ管理システムを用いて、ソフトウェアからのデータ処理要求に応じてデータをファイルとして管理するデータ管理方法であって、ソフトウェアから処理対象となるデータの識別情報と共にデータ読み出し処理要求が発生した場合に、前記データ管理システム制御部が、前記データ管理システムメモリ部に格納された前記データタグテーブルを参照して、与えられた識別情報と一致するデータタグ情報から前記不揮発性半導体記憶部の物理アドレスを求める処理を少なくとも含んでおり、そのことにより上記目的が達成される。
【００６９】
本発明のデータ管理方法は、本発明のデータ管理システムを用いて、ソフトウェアからのデータ処理要求に応じてデータをファイルとして管理するデータ管理方法であって、ソフトウェアから処理対象となるデータの識別情報およびデータと共にデータ書き込み処理要求が発生した場合に、前記データ管理システム制御部が、前記データ管理システムメモリ部に格納された前記制御情報テーブルを参照して、使用されていない論理セクタの数が最も多いブロックを検索して書き込み対象ブロックとして選択する処理と、与えられた識別情報での書き込み処理に対応する新たなデータタグ情報を生成して前記データタグテーブルに追加する処理と、書き込み処理に伴う有効および無効な論理セクタの数の増減に従って該制御情報テーブルを更新する処理とを少なくとも含み、与えられた識別情報と同一の識別情報が該データタグテーブルに存在する場合には、さらに、既存の識別情報を有するデータタグ情報内のデータの状態情報を無効にする処理と、該データを無効にする処理に伴う有効および無効な論理セクタの数の増減に従って該制御情報テーブルを更新する処理とを含んでおり、そのことにより上記目的が達成される。
【００７０】
本発明のデータ管理方法は、本発明のデータ管理システムを用いて、ソフトウェアからのデータ処理要求に応じてデータをファイルとして管理するデータ管理方法であって、ソフトウェアから処理対象となるデータの識別情報と共にデータ削除処理要求が発生した場合に、前記データ管理システム制御部が、前記データ管理システムメモリ部に格納された前記データタグテーブルを参照して、与えられた識別情報と一致するデータタグ情報内のデータの状態情報を無効にする処理と、該データを無効にする処理に伴う有効および無効な論理セクタの数の増減に従って前記制御情報テーブルを更新する処理とを少なくとも含んでおり、そのことにより上記目的が達成される。
【００７１】
本発明のデータ管理方法は、本発明のデータ管理システムを用いて、ソフトウェアからのデータ処理要求に応じてデータをファイルとして管理するデータ管理方法であって、ソフトウェアから要求されたデータ処理中に、前記消去ブロック内において格納されているデータが無効である論理セクタを解放する再構築処理が必要となった場合に、前記データ管理システム制御部が、前記データ管理システムメモリ部に格納された前記制御情報テーブルを参照して、格納されているデータが無効である論理セクタの数が最も多いブロックを検索して再構築対象ブロックとして選択する処理と、該データの状態情報が無効であるデータタグ情報を削除するために、前記データタグテーブルを再度生成する処理とを少なくとも含んでおり、そのことにより上記目的が達成される。
【００７２】
本発明のデータ管理方法は、本発明のデータ管理システムを用いて、ソフトウェアからのデータ処理要求に応じてデータをファイルとして管理するデータ管理方法であって、ソフトウェアから処理対象となるデータの識別情報と共にデータ読み出し処理要求が発生した場合に、前記データ管理システム制御部が、予め定められた境界値を基準として、与えられた識別情報の値に従って前記第１のデータタグ情報の配列と前記第２のデータタグ情報の配列のいずれかを選択する処理を含んでおり、そのことにより上記目的が達成される。
【００７３】
高速読み出しを必要とするデータと高速読み出しを必要としないデータを分類し、ある値を基準としてそのいずれに分類されるかを判別可能なように各々のデータに識別情報の値を予め割り振り、前記データ管理システム制御部は、該識別情報の値から高速読み出しを必要とするデータと判別される場合には前記第１のデータタグ情報の配列を選択し、高速読み出しを必要としないデータと判別される場合には前記第２のデータタグ情報の配列を選択してもよい。
【００７４】
ソフトウェアから処理対象となるデータの識別情報と共にデータ読み出し処理要求が発生した場合に、前記データ管理システム制御部が、前記データ管理システムメモリ部に格納された前記データタグテーブルを参照する際に、直近に生成されたデータタグ情報から古い時点で生成されたデータタグ情報の方向へ検索し、与えられた識別情報と一致するデータタグ情報から前記不揮発性半導体記憶部の物理アドレスを求める処理と、読み出し処理毎に与えられたデータ識別情報に対応するデータタグ情報を生成し、前記データタグテーブルの配列に追加する処理とを含んでいてもよい。
【００７５】
ソフトウェアから処理対象となるデータの識別情報に加えて、読み飛ばしオフセットと読み込みサイズと共にデータ読み出し処理要求が発生した場合に、前記データ管理システム制御部が、前記データ管理システムメモリ部に格納された前記データタグテーブルを参照して、与えられた識別情報と一致するデータタグ情報から前記不揮発性半導体記憶部の物理アドレスを求める処理と、該物理アドレスに該読み飛ばしオフセットを加算して新たな読み出し対象物理アドレスとする処理と、該新たな読み出し対象物理アドレスから該読み込みサイズ分だけデータを読み出す処理とを少なくとも含んでいてもよい。
【００７６】
以下、本発明の作用について説明する。
【００７７】
本発明にあっては、ＲＡＭに代表される揮発性または不揮発性の同一アドレスに対して書き換え可能なメモリ素子を用いて、外部メモリ空間（データ管理システムメモリ部）にファイル管理の速度向上を目的とした情報テーブルを作成する。
【００７８】
アクセステーブルを作成して読み込み速度を改善しようとする技術は、特開平３−２２５４１２号等に見られる。この特開平３−２２５４１２号の技術は、複数の記憶装置で構成されるファイルシステムのファイル読み込み方式において、ファイル検索を装置毎の記憶ボリュームではなく、新たに作成したファイル管理のための情報テーブルを参照することにより、動作速度の遅い装置へのアクセス回数を減らし、速度改善を図るものである。
【００７９】
本発明における情報テーブルの作成は、フラッシュメモリの特性（上書きが許されない）上、フラッシュメモリ上の固定領域には配置するのが困難な、高頻度に更新されるデータを、上書き可能なメモリ素子上に実現することに意義がある。この情報テーブルは、フラッシュメモリに代表される不揮発性半導体記憶部のブロックコントロールエリアを補完するものであり、両者は平行して存在するため、不揮発性半導体記憶部の不揮発性によるシステム復旧のメリットは損なわれない。すなわち、消去ブロックを構成する論理セクタの管理情報はフラッシュメモリ上に格納されている、そのうち、データ有効セクタ数、データ無効セクタ数、未使用セクタ数のカウンタ等、フラッシュメモリ上に配置するのが困難な高頻度更新情報（制御情報テーブル）は同一アドレスに対して書き換え可能（高速アクセス可能）なメモリ素子上に、また、データタグテーブルも高速アクセス可能なメモリ素子上に配置する。
【００８０】
上記情報テーブルとしては、データの識別情報（データＩＤ番号）、データの格納場所情報やデータの状態情報等のデータタグ情報を格納したデータタグテーブルを作成する。また、各消去ブロック毎に使用可能なセクタ数をカウントして、制御情報テーブルを作成する。これらの情報テーブルにより、ブロックコントロールエリアの検索処理に割いていた時間を軽減し、より高速なデータアクセスを可能とする。
【００８１】
さらにデータアクセス速度を向上させるためには、データタグ情報の保持方法を工夫する。例えば、上書き可能なメモリ素子上にＩＤ番号と対応するデータの格納先の物理アドレスを格納しておく。各ＩＤ番号に対応したアドレスは、上記メモリ素子上のデータタグ情報を検索するだけで即座に判定することができるので、不揮発性半導体記憶部上のブロックコントロールエリア内を検索する時間が不要となり、さらなる高速データ読み出しが可能となる。但し、この場合にはタグサイズが大きくなるため、パフォーマンスとシステムリソースとのトレードオフとなる。
【００８２】
読み出し速度については、上書き可能なメモリ素子上に格納しているデータタグ情報を、読み出し頻度に応じて並べ替えることにより、さらに向上させることができる。例えば、読み出しを行ったデータＩＤ番号をアドレス下位側に配置することにより、メモリ素子上の最下位側からＩＤ番号を検索すれば、必要な読み出しデータが見つかるまでの時間を短縮して、読み出し速度のさらなる高速化を図ることが可能となる。
【００８３】
さらに、ＩＤ番号により一意に識別されるあるデータにおいて、その一部のみにアクセスしたい場合、不要な部分のデータを読み飛ばして、目的とするデータ位置へ直接アクセスを行うことにより、さらに高速なデータアクセスを行うことが可能である。
【００８４】
【発明の実施の形態】
以下に、本発明の実施の形態について、図面を参照しながら説明する。
【００８５】
（実施形態１）
本実施形態では、データアクセスの高速化を目的として、同一アドレスに対して書き換え可能なメモリとしてＲＡＭ（揮発性でも不揮発性でもよい）に情報テーブルを格納する。
【００８６】
図１は、本発明の一実施形態であるデータ管理システムの構成を示す図である。図１において、１はデータ管理システム、２はデータ管理システム１の処理を制御するデータ管理システム制御部、３はフラッシュメモリ部４へのデータ処理を制御するフラッシュメモリ制御部、４は複数の消去ブロックから構成されるフラッシュメモリ部、６はファイルシステム１へデータの処理を依頼するアプリケーションプログラムまたはオペレーションシステム（ＯＳ）等のソフトウェアであり、７はデータ管理システム１が制御情報を格納するために使用するデータ管理システムメモリ部である。なお、データ管理システム１は、ソフトウェア６からのデータ処理要求に応じてデータをファイルとして管理するファイルシステムであり、図２３に示した従来のファイルシステム１１に相当する。データ管理システムメモリ部７はＲＡＭからなるものとする。さらに、データ管理システム制御部２は図２３に示した従来のファイルシステム制御部１２に相当し、フラッシュメモリ制御部３、フラッシュメモリ部４、アプリケーションプログラムまたはオペレーティングシステム６は図２３に示した従来技術と同様である。
【００８７】
図２は、図１のデータ管理システムメモリ部７に格納されている、フラッシュメモリ部４内の各消去ブロックに関する制御情報テーブル３１の構成を示す図である。各ブロック番号に対応したエントリーは、未使用セクタ数３１ａ／データ有効セクタ数３１ｂ／データ無効セクタ数３１ｃを１つの情報単位としている。制御情報テーブルには、このエントリーがブロック番号の順序で格納される。この制御情報テーブルの各値は、後述する制御情報の初期化処理によって、データ管理システムの起動時に構築される。なお、これらの高頻度更新情報（制御情報テーブル）は、常に同じ場所に配置され、書き込み処理や削除処理、ブロックの再高秩処理の際に常に更新される。
【００８８】
図３は、図１におけるデータ管理システムメモリ部７に格納されている、各データＩＤ番号と対応する格納場所とその格納場所のデータの状態情報を保持したデータタグテーブル３２の構成を示す図である。ここでは便宜上、先頭から順にタグ＃０〜＃Ｐとする。データタグ３３は、データＩＤ番号３３ａ／ブロック番号３３ｂ／論理セクタ番号３３ｃ／データ状態３３ｄを１つの情報単位としている。すなわち、データタグ３３はデータＩＤ番号３３ａで識別されるデータが格納される場所（ブロック番号３３ｂおよび論理セクタ番号３３ｃ）と、そこに格納されているデータの状態（データ状態３３ｄ）の情報からなる。データタグ３３のデータ状態３３ｄは、図２４に示したセクタ状態情報５ｅのデータ状態５ｇと同等である。初期化処理直後のデータタグテーブル３２では、エントリー数＃Ｐはデータ管理システム１における有効な登録データを示す。
【００８９】
データタグテーブル３２には、データの書き込み処理によってデータの登録が行われる度にデータタグ３３  ＃Ｐ＋１が随時追加される。既に登録済みのデータＩＤ番号で新たにデータの書き込みがあった場合には、図２４に示したセクタ状態情報５ｅの場合と同様に、データ状態３３ｄを「データ無効」に設定することにより、そのデータタグ３３を検索対象から除外する。本実施形態では、データタグテーブル３２の最大値（ｍａｘＰ＋１）として、（データタグ３３のサイズ×全ての論理セクタ５ｃの数）をデータ管理システム１の構築時より確保する。データタグテーブル３２は、データ管理システム１の起動時、およびデータ管理システム１の最構築処理時に初期化される。
【００９０】
（データ管理システムメモリ部内の制御情報の初期化）
図４は、本実施形態における制御情報テーブル３１およびデータタグテーブル３２の初期化処理に関するフローチャートである。
【００９１】
データ管理システム１の起動時に、データ管理システムメモリ部７上に格納する制御情報を構築するために、データ管理システム制御部２は、まず、ブロック番号＃０で表される消去ブロック５のブロックコントロールエリア５ｂにアクセスする。セクタ状態情報５ｅ  ＃０〜＃Ｎを順次読み出し、データ状態５ｇが「データ有効」であるものを検出すると、そこから抽出したデータＩＤ番号、ブロック番号と論理セクタ番号、およびデータ状態から対応するデータタグ３３を作成し、データタグテーブル３２に並べていく（ステップ５００）。
【００９２】
また、このとき、検出したデータ状態５ｇに応じて、ブロック番号＃０を示す制御情報テーブル３１の未使用セクタ数３１ａ、データ有効セクタ数３１ｂおよびデータ無効セクタ数３１ｃを各々カウントアップしていく（ステップ５０１）。
【００９３】
この操作をブロック番号＃０〜＃Ｌで表される各消去ブロック５に対して順次繰り返す。但し、ブロック状態情報５ｄが「予備消去ブロック」である予備消去ブロック５１については、処理の対象外とする。また、ブロック状態情報５ｄが「データ転送中」または「元ブロック消去中」であるときや、データ状態５ｇが「データ書き込み中」または「データ書き込み完了」であるときには、システムが異常終了したと見なし、データの復元処理を行う。このデータ復元処理については、図３４および図３５に示した従来技術と同等であるので説明を省略する。データ管理システム１に割り当てられた全ての消去ブロック５に対して、この操作を繰り返す。
【００９４】
さらに、無効となったデータタグ３３が占める領域を解放するため、データタグテーブル３２についてはデータ管理システム１の最構築時にも初期化を行う。
【００９５】
（データの読み出し処理）
図５は、本実施形態におけるフラッシュメモリ部４に格納されたデータの読み出し処理に関するフローチャートである。
【００９６】
アプリケーションプログラムまたはオペレーティングシステム６において、フラッシュメモリ部４からのデータの読み出し要求が発生した場合、この読み出し要求と共にデータＩＤ番号がアプリケーションプログラムまたはオペレーティングシステム６からデータ管理システム制御部２に与えられる。
【００９７】
データ管理システム制御部２は、データ管理システムメモリ部７内のデータタグテーブル３２を検索して、データＩＤ番号３３ａの照会（ステップ６００）、およびデータ状態３３ｄの照会（ステップ６０１）を行い、データＩＤ番号３３ａが与えられたＩＤ番号と一致し、かつ、データ状態３３ｄが「データ有効」であるようなデータタグ３３を検出する。この操作をブロックコントロールエリア５ｂ内の全てのセクタ状態情報５ｅ  ＃０〜＃Ｐについて、該当するデータタグ３３が見つかるまで順次実行する。
【００９８】
検出されたデータタグ３３から取得したブロック番号３３ｂおよび論理セクタ番号３３ｃより、フラッシュメモリ部４の物理アドレスを上記（式１）のように演算して取得し（ステップ６０２）、フラッシュメモリ制御部３に与える。
【００９９】
フラッシュメモリ制御部３は、この物理アドレスに基づいてフラッシュメモリ部４をアクセスし、該当する論理セクタ５ｃからデータの読み出しを行い（ステップ６０３）、読み出したデータをデータ管理システム制御部２に与える。データタグテーブル３２を全て検索しても、与えられたＩＤ番号が検出できない場合には、該当データ無しと判断して処理を終了する。
【０１００】
（データの書き込み処理）
図６および図７は、本実施形態におけるフラッシュメモリ部４へのデータの書き込み処理に関するフローチャートである。
【０１０１】
第１に、書き込み先ブロックの選択を行う。アプリケーションプログラムまたはオペレーティングシステム６において、フラッシュメモリ部４へのデータの書き込み要求が発生した場合、この書き込み要求と共にデータＩＤ番号、および書き込まれるデータがアプリケーションプログラムまたはオペレーティングシステム６からデータ管理システム制御部２に与えられる。データ管理システム制御部２は、データ管理システムメモリ部７内の制御情報テーブル３１をアクセスして未使用セクタ数３１ａが最も多い消去ブロック５のブロック番号を取得し（図６のステップ７００）、これを書き込み先消去ブロックとする。書き込み先消去ブロックが取得できなかった場合には、後述するデータ管理システム１の再構築を行う。
【０１０２】
第２に、書き込み先セクタの選択を行う。上記書き込み先消去ブロックを取得後、データ管理システム制御部２は、その書き込み先消去ブロックの消去ブロックコントロールエリア５ｂにアクセスして、データ状態が「未使用」となっているセクタ状態情報５ｅを検索し、該当する論理セクタ５ｃの論理セクタ番号を取得する（図６のステップ７０１）。
【０１０３】
第３に、データ実体の書き込みを行う。データの書き込み開始前に、データ管理システム制御部２は、上記書き込み先セクタに対応するセクタ状態情報５ｅのデータ状態５ｇを、「未使用」から「データ書き込み中」に書き換える（図６のステップ７０２）。次に、取得した論理セクタ番号により、フラッシュメモリ制御部３を通じてフラッシュメモリ部４をアクセスし、その論理セクタ５ｃに対してデータの書き込みを実行する（図６のステップ７０３）。データの書き込み終了後、データ管理システム制御部２は、上記書き込み先セクタに対応するセクタ状態情報５ｅのデータ状態５ｇを、「データ書き込み中」から「データ書き込み完了」に書き換える（図６のステップ７０４）。
【０１０４】
第４に、旧データの無効化を行う。データ管理システム制御部２は、データ管理システムメモリ部７内のデータタグテーブル３２を検索して、データＩＤ番号３３ａとデータ状態３３ｄとを照会し、データＩＤ番号３３ａが与えられたデータＩＤ番号と一致し、かつ、データ状態３３ｄが「データ有効」であるようなデータタグ３３を検出する（図７のステップ７０５）。検出すれば、そのデータタグ３３のデータ状態３３ｄを「データ無効」に書き換える（図７のステップ７０６）。そして、検出したデータタグ３３のブロック番号３３ｂおよび論理セクタ番号３３ｃに基づいて、その消去ブロック５のブロックコントロールエリア５ｂにアクセスし、その論理セクタ番号に該当するセクタ状態情報５ｅを検出して、そのデータ状態５ｇを「データ有効」から「データ無効」に書き換える（図７のステップ７０７）。このように旧データの無効化を行った場合には、データの無効化を行ったブロック番号のエントリーに対応するデータ有効セクタ数３１ｂを−１、データ無効セクタ数３１ｃを＋１と更新する（図７のステップ７１１）。
【０１０５】
第５に、データ管理システム制御部２は、データ書き込みを行った論理セクタ５ｃを示すセクタ状態情報５ｅにアクセスし、データ状態５ｇを「データ書き込み完了」から「データ有効」に書き換える（図７のステップ７０８）。
【０１０６】
最後に、データ管理システムメモリ部７の更新を行う。データ管理システム制御部２は、データ書き込みを行った論理セクタに対応する新しいデータタグ３３を生成して、データタグテーブル３２に登録する（ステップ７０９）。次に、制御情報テーブル３１をアクセスして、データの書き込みを行ったブロック番号のエントリーに対応する未使用セクタ数３１ａを−１、データ有効セクタ数３１ｂを＋１と更新する（図７のステップ７１０）。
【０１０７】
（データの削除処理）
図８は、本実施形態におけるフラッシュメモリ部４からのデータの削除処理に関するフローチャートである。このデータ削除処理は、データ書き込み時における旧データの無効化処理に準じて行われる。
【０１０８】
アプリケーションプログラムまたはオペレーティングシステム６において、フラッシュメモリ部４からのデータの削除要求が発生した場合、この削除要求と共にデータＩＤ番号がアプリケーションプログラムまたはオペレーティングシステム６からデータ管理システム制御部２に与えられる。
【０１０９】
データ管理システム制御部２は、データ管理システムメモリ部７内のデータタグテーブル３２を検索して、データＩＤ番号３３ａとデータ状態３３ｄとを照会し、データＩＤ番号３３ａが与えられたＩＤ番号と一致し、かつ、データ状態３３ｄが「データ有効」であるようなデータタグ３３を検出する（ステップ７０５）。検出すれば、そのデータタグ３３のデータ状態３３ｄを「データ無効」に書き換える（ステップ７０６）。そして、検出したデータタグ３３のブロック番号３３ｂおよび論理セクタ番号３３ｃに基づいて、その消去ブロック５のブロックコントロールエリア５ｂにアクセスし、その論理セクタ番号に該当するセクタ状態情報５ｅを検出して、そのデータ状態５ｇを「データ有効」から「データ無効」に書き換える（ステップ７０７）。そして、データの無効化を行ったブロック番号のエントリーに対応するデータ有効セクタ数３１ｂを−１、データ無効セクタ数３１ｃを＋１と更新する（ステップ７１１）。
【０１１０】
（再構築処理）
図９および図１０は、本実施形態におけるデータ管理システム１の再構築処理に関するフローチャートである。この再構築処理は、基本的に図３３に示した従来技術と同等である。但し、再構築の対象となる消去ブロック５の選択には、制御情報テーブル３１の無効セクタ数を検索し、コピーの対象となる「データ有効」である論理セクタ５ｃの検索にはデータタグテーブル３２を参照する。また、既に無効となっているデータタグ３３が占めているデータタグテーブル３２の領域を解放するために、従来の再構築処理を実行した後、新たにデータタグテーブル３２の初期化を実行する必要がある。
【０１１１】
第１に、再構築対象ブロックの選択を行う。データ管理システム制御部２は、データ管理システムメモリ部７内の制御情報テーブル３１をアクセスしてデータ無効セクタ数３１ｃが最も多い消去ブロック５のブロック番号を取得する（図９のステップ８００）。これをコピー元消去ブロックとして、ブロック状態情報５ｄを「コピー元ブロック」に書き換える（図９のステップ８０１）。
【０１１２】
第２に、予備消去ブロック５１のブロック状態を更新する。データ管理システム制御部２は、フラッシュメモリ部４をアクセスし、データ管理システム１の再構築処理用に予め未使用状態で確保しておいた予備消去ブロック５１のブロックコントロールエリア５ｂにアクセスして、この予備消去ブロック５１のブロック状態情報５ｄを「未使用」から「データ転送中」に書き換える（図９のステップ８０２）。
【０１１３】
第３に、有効データのコピーを行う。データ管理システム制御部２は、データ管理システムメモリ部７内のデータタグテーブル３２をアクセスして、ブロック番号がコピー元消去ブロックのブロック番号であり、かつ、データ状態３３ｄが「データ有効」となっているデータタグ３３を取得し、そのデータタグのデータ状態３３ｄを「データ無効」とする（図９のステップ８０３）。そして、取得した論理セクタ番号３３ｃに該当するセクタ状態情報５ｅを、予備消去ブロック５１のブロックコントロールエリア５ｂへ、論理セクタ番号が一致するようにコピーする（図９のステップ８０４）。また、取得した論理セクタ番号３３ｃに該当するコピー元消去ブロックの論理セクタ５ｃから、予備消去ブロック５１の論理セクタ番号が等しい論理セクタ５ｃへコピーする（図９のステップ８０５）。そして、データ管理システムは、コピー後のデータに対応するデータタグを生成して、データタグテーブル３２に登録する（図９のステップ８０６）。
【０１１４】
第４に、ブロックの消去を行う。データ管理システム制御部２は、フラッシュメモリ制御部３を通じてフラッシュメモリ部４をアクセスし、予備消去ブロック５１のブロックコントロールエリア５ｂのブロック状態情報５ｄを「データ転送中」から「元ブロック消去中」に書き換え（図１０のステップ８０７）、コピー元消去ブロックの消去を実行する（図１０のステップ８０８）。
【０１１５】
第５に、予備消去ブロックの変更を行う。コピー元消去ブロックの消去が完了すれば、予備消去ブロック５１のブロックコントロールセクタ５ｂのブロック状態５ｄを「元ブロック消去中」から「データ有り」に書き換える（図１０のステップ８０９）。消去されたコピー元ブロックは、消去動作によりそのブロック状態情報５ｄが「予備消去ブロック」となり、次回再構築時の予備消去ブロック５１となる。
【０１１６】
最後に、図４と同様にして、新たにデータタグテーブル３２の初期化を行う。
【０１１７】
（実施形態２）
図１１は、本実施形態におけるデータ管理システムメモリ部７内のデータタグテーブル３２の構成を示す図である。実施形態１と異なるのは、ブロック番号３３ｂおよび論理セクタ番号３３ｃの代わりに、データが格納されるセクタの先頭物理アドレス３３ｅを用いる点である。データタグ３３は、データＩＤ番号３３ａ／データの格納アドレス（物理アドレス）３３ｅ／データ状態３３ｄからなる。
【０１１８】
（データ管理システムメモリ部内の制御情報の初期化）
本実施形態におけるデータ管理システムメモリ部７（制御情報テーブル３１およびデータタグテーブル３２）の初期化処理に関するフローチャートは、図４と同等である。
【０１１９】
本実施形態では、ステップ５００においてデータタグ３３を生成する際に、ブロック番号および論理セクタ番号から上記（式１）のように演算して物理アドレスを取得し、データタグに登録する処理が加わる。
【０１２０】
（データの読み出し処理）
図１２は、本実施形態におけるフラッシュメモリ部４に格納されたデータの読み出し処理に関するフローチャートである。
【０１２１】
本実施形態では、実施形態１（図５）に比べて、読み出し対象となる物理アドレスがデータタグテーブル３２の物理アドレス３３ｅから直接得られるので、フラッシュメモリ部４のアドレスを求める演算（ステップ６０２）が不要となり、読み出し処理の高速化を図ることができる。
【０１２２】
（データの書き込み処理）
図１３および図１４は、本実施形態におけるフラッシュメモリ部４へのデータの書き込み処理に関するフローチャートである。
【０１２３】
本実施形態では、実施形態１（図６、図７）に比べて、図１４のステップ７０９においてデータの書き込みに伴うデータタグを登録する際に、ブロック番号および論理セクタ番号から上記（式１）のように演算して物理アドレスを取得し、データタグに登録する処理が加わる。
【０１２４】
さらに、旧データを無効化する操作において、旧データのセクタ状態情報５ｅの位置を知るため、物理アドレスからブロック番号および論理セクタ番号を求める操作（図１４のステップ７１２）が必要となる。ブロック番号および論理番号は、物理アドレスから、
0003904182.tif 000003
で求められる。
【０１２５】
（データの削除処理）
図１５は、本実施形態におけるフラッシュメモリ部４からのデータの削除処理に関するフローチャートである。
【０１２６】
本実施形態では、実施形態１（図８）に比べて、旧データを無効化する操作において、旧データのセクタ状態情報５ｅの位置を知るため、物理アドレスからブロック番号および論理セクタ番号を求める操作（ステップ７１２）が必要となる。ブロック番号および論理番号は、上記（式２）および上記（式３）のようで求められる。
【０１２７】
（実施形態３）
図１６は、本実施形態におけるデータ管理システムメモリ部７内のデータタグテーブル３２の構成を示す図である。実施形態１と異なるのは、セクタの位置情報がブロック番号３３ｂのみからなる点である。データタグ３３は、データＩＤ番号３３ａ／ブロック番号３３ｂ／データ状態３３ｄからなる。本実施形態では、情報量の軽減により、データタグ３３およびデータタグテーブル３２の容量を削減することができる。
【０１２８】
（データの読み出し処理）
図１７は、本実施形態におけるフラッシュメモリ部４に格納されたデータの読み出し処理に関するフローチャートである。
【０１２９】
本実施形態でも、データの存在する消去ブロックの絞り込みおよび該当データの有無の判断をデータタグ３３を利用して行い、読み出し対象データの消去ブロックが決まると従来技術（図２７）と同様に論理セクタ状態情報５ｅのデータＩＤ番号５ｆから、与えられたデータＩＤ番号と一致するセクタを検索し、データの読み出しを行う。
【０１３０】
（実施形態４）
図１８は、本実施形態におけるデータ管理システムメモリ部７内のデータタグテーブルの構成を示す図である。本実施形態では、タイプの異なるデータタグの存在を両立させるために、データタグの種類毎にデータタグテーブルを作成する。
【０１３１】
読み出し時に高速応答が求められるデータに対応して、図１８（ａ）のような高速データタグテーブル３４を作成する。高速データタグテーブル３４に格納される高速データタグ３５  ＃０〜＃Ｐは、データＩＤ番号３５ａ／物理アドレス３５ｅ／データ状態３５ｄからなる。
【０１３２】
一方、読み出し時に高速応答が求められないデータに対応して、図１８（ｂ）のような低速データタグテーブル３６を作成する。低速データタグテーブル３６に格納される低速データタグ３７  ＃０〜＃Ｐは、データＩＤ番号３７ａ／ブロック番号３７ｂ／データ状態３７ｄからなる。
【０１３３】
（データの読み出し処理）
図１９および図２０は、本実施形態におけるフラッシュメモリ部４に格納されたデータの読み出し処理に関するフローチャートである。
【０１３４】
本実施形態では、データタグタイプを分けるためにデータＩＤ番号を利用する。高速読み出しを必要とするデータが１０００件存在する場合、０〜９９９で示されるデータＩＤ番号を有するデータについては、データタグ作成時、およびデータ読み出し時において自動的に高速データタグテーブル３４を選択するように定める。１０００以上のデータＩＤ番号を有するデータについては、データタグ作成時、およびデータ読み出し時において自動的に低速データタグテーブル３６を選択する（図１９のステップ６０４）。境界となるＩＤ番号については、データ管理システム１の構築時に予め決定しておく。それ以降は、各データタグテーブルに応じて、上記実施形態と同様にして読み出し処理を行うことができる。
【０１３５】
（実施形態５）
図２１は、本実施形態におけるフラッシュメモリ部４に格納されたデータの読み出し処理に関するフローチャートである。本実施形態では、実施形態１〜実施形態４において、セクタサイズで一まとめにされたデータから、一部のみを読み込みたいという要求がある場合について考える。この場合には、アプリケーションプログラムまたはオペレーティングシステム６からデータ管理システム１に与えられるパラメータに、「読み飛ばしオフセット」と「読み込みサイズ」を加える。読み飛ばしオフセットには、データ先頭から読み込みをスキップしたいサイズを、読み込みサイズには任意のデータ長を各々与える。但し、「セクタサイズ」＞「読み飛ばしオフセット」＋「読み込みサイズ」とする。
【０１３６】
各実施形態に沿ってデータ本体の格納位置アドレスを取得した後、データ本体の読み出しの際に、読み飛ばしオフセットで指示されたサイズ分、データの読み込み開始位置を後方へ変更する（ステップ６０７）。そして、フラッシュメモリ制御部３は、変更された読み込み開始位置から、読み込みサイズ分だけデータの読み込みを行う（ステップ６０８）。
【０１３７】
（実施形態６）
図２２は、本実施形態におけるフラッシュメモリ部４に格納されたデータの読み出し処理に関するフローチャートである。上記各実施形態と異なるのは、データタグの検索方向に関してのみである。
【０１３８】
本実施形態では、ステップ６００においてデータタグテーブルにアクセスする際に、新しいデータタグから古いデータタグに向かって（＃Ｐ→＃０）検索を行うようにする。さらに、データＩＤ番号に該当するデータタグが検出されたときに、そのデータＩＤ番号により新たにデータタグを作成し直し、以前のデータタグは無効とする（ステップ６０５）。
【０１３９】
これにより、アクセスがあったデータのデータタグは常に検索順序の早い方に配置されるため、読み出し頻度が高いデータほど、速くアクセスできることになる。但し、読み出し処理が行われる度にデータタグテーブルの領域を消費するため、データタグテーブルの初期化を頻繁に行わなければ、データタグテーブルのオーバーフローを招き易くなる。
【０１４０】
【発明の効果】
以上詳述したように、本発明によれば、データタグを参照するだけでデータの格納位置を知ることができ、検索対象をデータタグテーブルとすることにより検索回数を減らすことができる。よって、従来技術のように各消去ブロックのブロックコントロールエリアを順次アクセスする方式に比べて検索時のオーバーヘッドを軽減することができる。また、セクタ状態のカウンタ（制御情報テーブル）を有することにより、書き込み先消去ブロックを選択する際に、その都度、消去ブロックのブロックコントロールエリアを全て検索する必要がなくなる。また、以前のデータを検出する場合（同じＩＤ番号で既に書き込まれているデータが無いか否かを検出する場合）でも、データタグテーブルをアクセスするのみで検索することができるため、オーバーヘッドを軽減することができる。
【０１４１】
データタグにデータ格納場所の情報としてブロック番号と論理セクタ番号を保持した場合には、データタグ１つ当たりのサイズが増加する。これを防ぐため、データの存在するブロック番号のみとすれば、データタグの情報を減らすことができる。この場合にも、既存データを検索するときにはデータタグテーブルを検索するだけで良いため、従来技術のように各消去ブロックのブロックコントロールエリアを全て検索する必要がなくなる。また、読み出し速度についても、検索対象が１ブロックにまで絞り込まれるため、ある程度の速度向上を見込むことができる。
【０１４２】
データタグにデータ格納場所の情報として物理アドレスを保持した場合には、さらに速度向上を図ることができる。しかし、アドレス情報（物理アドレス）は、概して論理情報（ブロック番号や論理セクタ番号）を保持するよりも大きく（例えば３２ビットシステムであれば４バイト）、データタグ１つ当たりのサイズが増加する。データタグの保持データがブロック番号のみの場合には１バイトで済むことを考えると、物理アドレスの場合にはデータ管理システムメモリ部（ＲＡＭ）の使用量が４倍に増加し、データ数が非常に多くなってメモリ空間を圧迫してしまう。
【０１４３】
このため、高速読み出しが必要なデータに割り振られるデータＩＤ番号（ファイル名）と、読み出しが遅くても良いデータに割り振られるデータＩＤ番号を、例えばデータＩＤ番号の大きさで分けることができる。そして、高速読み出しを行うデータが格納されている論理セクタ番号だけをデータ管理システムメモリ部上に格納し、読み出し速度が速くなくても良いデータについてはブロック番号だけをデータ管理システムメモリ部上に格納する。これにより、読み出すデータに応じてデータタグの構成を併用して、高速読み出しを実現しながら、データ管理システムメモリのメモリ空間を効率的に使用することができ、パフォーマンスとメモリ資源とのバランスを取ることができる。
【０１４４】
本発明のデータ管理システムによれば、データＩＤ番号で識別されるデータの一群から任意のデータにいち早くアクセスすることが可能である。ここで、あるデータのうち、その任意の一部分のみに対してアクセスを行いたい場合に、データの先頭から全て読み込むことは無駄であり、読み込みバッファ領域への転送時間およびバッファ領域をロスすることになる。これを防ぐため、指定したデータ数だけスキップして読み出しを行うことにより、必要なデータをさらに高速に読み出すことができる。
【０１４５】
本発明のデータ管理システムでは、データ管理システムメモリ部（ＲＡＭ）上に格納されたデータタグを作成順にシリアルに配置してもよいが、高頻度に使用されるデータタグがテーブル後方に存在するときには、毎回不要な検索時間を重ねることになる。これを防ぐため、アクセスがあったデータのデータタグを常に検索順序の早い方に配置することにより、読み出し頻度が高いデータほど、速くアクセスすることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態であるデータ管理システムの構成を示す図である。
【図２】図１のデータ管理システムにおけるデータ管理システムメモリ部内の制御情報テーブルの構成例を示す図である。
【図３】実施形態１のデータ管理システムにおけるデータ管理システムメモリ部内のデータタグテーブルの構成例を示す図である。
【図４】実施形態１におけるデータ管理システムメモリ部の初期化処理の例を説明するためのフローチャートである。
【図５】実施形態１におけるデータ読み出し処理の例を説明するためのフローチャートである。
【図６】実施形態１におけるデータ書き込み処理の例を説明するためのフローチャートである。
【図７】実施形態１におけるデータ書き込み処理の例を説明するためのフローチャートである。
【図８】実施形態１におけるデータ削除処理の例を説明するためのフローチャートである。
【図９】実施形態１における再構築処理の例を説明するためのフローチャートである。
【図１０】実施形態１における再構築処理の例を説明するためのフローチャートである。
【図１１】実施形態２のデータ管理システムにおけるデータ管理システムメモリ部内のデータタグテーブルの構成例を示す図である。
【図１２】実施形態２におけるデータ読み出し処理の例を説明するためのフローチャートである。
【図１３】実施形態２におけるデータ書き込み処理の例を説明するためのフローチャートである。
【図１４】実施形態２におけるデータ書き込み処理の例を説明するためのフローチャートである。
【図１５】実施形態２におけるデータ削除処理の例を説明するためのフローチャートである。
【図１６】実施形態３のデータ管理システムにおけるデータ管理システムメモリ部内のデータタグテーブルの構成例を示す図である。
【図１７】実施形態３におけるデータ読み出し処理の例を説明するためのフローチャートである。
【図１８】（ａ）および（ｂ）は、実施形態４のデータ管理システムにおけるデータ管理システムメモリ部内のデータタグテーブルの構成例を示す図である。
【図１９】実施形態４におけるデータ読み出し処理の例を説明するためのフローチャートである。
【図２０】実施形態４におけるデータ読み出し処理の例を説明するためのフローチャートである。
【図２１】実施形態５におけるデータ読み出し処理の例を説明するためのフローチャートである。
【図２２】実施形態６におけるデータ読み出し処理の例を説明するためのフローチャートである。
【図２３】従来のファイルシステムの構成を示す図である。
【図２４】図２３のファイルシステムにおけるフラッシュメモリ部に格納されているデータの構成を示す図である。
【図２５】図２３のファイルシステムにおけるフラッシュメモリ部に格納されているデータの構成例１を示す図である。
【図２６】図２３のファイルシステムにおけるフラッシュメモリ部に格納されているデータの構成例２を示す図である。
【図２７】従来技術におけるデータ読み出し処理を説明するためのフローチャートである。
【図２８】各フローチャートのループ処理を説明するための図である。
【図２９】従来技術におけるデータ書き込み処理を説明するためのフローチャートである。
【図３０】従来技術におけるデータ書き込み処理を説明するためのフローチャートである。
【図３１】従来技術におけるデータ書き込み処理を説明するためのフローチャートである。
【図３２】従来技術におけるデータ削除処理を説明するためのフローチャートである。
【図３３】従来技術における再構築処理を説明するためのフローチャートである。
【図３４】従来技術におけるデータ復元処理を説明するためのフローチャートである。
【図３５】従来技術におけるデータ復元処理を説明するためのフローチャートである。
【符号の説明】
１  データ管理システム
２  データ管理システム制御部
３  フラッシュメモリ制御部
４  フラッシュメモリ部
５  消去ブロック
５ａ  物理セクタ
５ｂ  ブロックコントロールエリア
５ｃ  論理セクタ
５ｄ  ブロック状態情報
５ｅ  論理セクタ状態情報
５ｆ  データＩＤ番号
５ｇ  データ状態
６  アプリケーションプログラムまたはオペレーティングシステム等のソフトウェア
７  データ管理システムメモリ部
１１  ファイルシステム
１２  ファイルシステム制御部
３１  制御情報
３１ａ  未使用セクタ数
３１ｂ  データ有効セクタ数
３１ｃ  データ無効セクタ数
３２  データタグテーブル
３３  データタグ
３３ａ  データＩＤ番号
３３ｂ  ブロック番号
３３ｃ  論理セクタ番号
３３ｄ  データ状態
３３ｅ  物理アドレス
３４  高速データタグテーブル
３５  高速データタグ
３５ａ  データＩＤ番号
３５ｅ  物理アドレス
３５ｄ  データ状態
３６  低速データタグテーブル
３７  低速データタグ
３７ａ  データＩＤ番号
３７ｃ  ブロック番号
３７ｄ  データ状態
５１  予備消去ブロック
【図１】
0003904182.tif 000004
【図２】
0003904182.tif 000005
【図３】
0003904182.tif 000006
【図４】
0003904182.tif 000007
【図５】
0003904182.tif 000008
【図６】
0003904182.tif 000009
【図７】
0003904182.tif 000010
【図８】
0003904182.tif 000011
【図９】
0003904182.tif 000012
【図１０】
0003904182.tif 000013
【図１１】
0003904182.tif 000014
【図１２】
0003904182.tif 000015
【図１３】
0003904182.tif 000016
【図１４】
0003904182.tif 000017
【図１５】
0003904182.tif 000018
【図１６】
0003904182.tif 000019
【図１７】
0003904182.tif 000020
【図１８】
0003904182.tif 000021
【図１９】
0003904182.tif 000022
【図２０】
0003904182.tif 000023
【図２１】
0003904182.tif 000024
【図２２】
0003904182.tif 000025
【図２３】
0003904182.tif 000026
【図２４】
0003904182.tif 000027
【図２５】
0003904182.tif 000028
【図２６】
0003904182.tif 000029
【図２７】
0003904182.tif 000030
【図２８】
0003904182.tif 000031
【図２９】
0003904182.tif 000032
【図３０】
0003904182.tif 000033
【図３１】
0003904182.tif 000034
【図３２】
0003904182.tif 000035
【図３３】
0003904182.tif 000036
【図３４】
0003904182.tif 000037
【図３５】
0003904182.tif 000038