JP3797649B2 - 不揮発性半導体記憶装置 - Google Patents

不揮発性半導体記憶装置 Download PDF

Info

Publication number
JP3797649B2
JP3797649B2 JP25497399A JP25497399A JP3797649B2 JP 3797649 B2 JP3797649 B2 JP 3797649B2 JP 25497399 A JP25497399 A JP 25497399A JP 25497399 A JP25497399 A JP 25497399A JP 3797649 B2 JP3797649 B2 JP 3797649B2
Authority
JP
Japan
Prior art keywords
block
data
sector
erase
file system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP25497399A
Other languages
English (en)
Other versions
JP2001051889A (ja
Inventor
宣昭 戸森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP25497399A priority Critical patent/JP3797649B2/ja
Priority to US09/568,529 priority patent/US6513095B1/en
Publication of JP2001051889A publication Critical patent/JP2001051889A/ja
Application granted granted Critical
Publication of JP3797649B2 publication Critical patent/JP3797649B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、フラッシュメモリ等の不揮発性半導体記憶装置を用いたファイルシステムに関するものである。
【0002】
【従来の技術】
最近、データを電気的に書き込み及び消去することが可能な不揮発性半導体記憶装置(例えばフラッシュメモリ)を、データを磁気的に書き込み及び消去することが可能なハードディスクドライブの代替として用いるための技術が注目されている。
【0003】
フラッシュメモリは、ハードディスクドライブと比較して、データの読み出し速度が約1万倍程度かつデータの書き込み速度が約1千倍程度速く、また小型軽量化を図り易く耐衝撃性に優れ、可搬性が高い等の特長を備え、更に低容量のデータを高速に格納しかつ読み出すという用途には好適である。
【0004】
しかしながら、フラッシュメモリにおいては、既にデータが書き込まれている記憶領域に新しくデータを書き込むには、書き込まれているデータを一旦消去するという動作が必要となる。しかも、データを消去する単位が数キロバイトと大きく、数十ミリ秒から数秒と比較的長いデータ消去時間が必要であり、データの書き込み及び消去の保証回数が有限であるという欠点がある。
【0005】
このため、フラッシュメモリをハードディスクドライブの代替として用いる場合は、上記欠点を踏まえ、データの取り扱い単位をハードディスクドライブ並みの数百バイト程度に小さくし、なるべくデータ消去を行なわず、効率良くデータを管理するための仕組み、つまりフラッシュメモリに対応したファイルシステムを提供する必要がある。この様なファイルシステムは、例えば特開平6−95955号公報に開示されている。
【0006】
また、米国特許5,544,119号には、電力供給遮断後の電力復旧時の処理方法が示され、米国特許5,544,356号には、ファイルシステムの再構築方法が示されている。
【0007】
【発明が解決しようとする課題】
しかしながら、上記公報に記載の技術においては、電源として電池等を用いた電力供給が不安定な環境下で、フラッシュメモリや各種の制御を行うファイルシステムが使用される状況を想定しておらず、フラッシュメモリあるいはファイルシステムの動作中に、電池の消耗等により電力供給が一瞬でも遮断されたとき、つまり意図しない電力供給の遮断が発生したときには、フラッシュメモリに格納されているデータを正常に読み出せなくなるという可能性があった。
【0008】
具体的には、第1に、データが格納された記憶領域(以下セクタと呼称する)の現在の状態をセクタ状態情報によって表しているが、このセクタ状態情報が「未使用」、「使用中」、「無効」という3種類の状態のいずれかを表しているに過ぎないため、セクタのデータを更新するに際し、電力供給の遮断が発生すると、データが正常に更新されなくても、セクタ状態情報に基いてデータを正常とみなしてしまうことがあった。このセクタのデータの更新処理を図10のフローチャートに従って次に述べる。
【0009】
図10のフローチャートによれば、まず更新される既存のデータを格納している1つのセクタのセクタ状態情報を「使用中」から「無効」へ変更し(ステップ101)、次にもう1つのセクタのセクタ状態情報を「未使用」から「使用中」へ変更し(ステップ102)、この後にセクタ状態情報が「使用中」となったセクタに対して更新データを書き込む(ステップ103)。ステップ101〜103を書き込むデータがなくなるまで繰り返す。
【0010】
ここで、ステップ102の直後あるいはステップ103の実行中において、電力供給の遮断が発生し、フラッシュメモリに対するデータの書き込みが中断すると、更新データのセクタへの書き込みが正常に終了していないにもかかわらず、このセクタのセクタ状態情報が「使用中」となる。このため、電力供給が回復したときに、ファイルシステムは、このセクタに格納されているデータを有効であると誤認してしまう。
【0011】
第2に、1つのブロック内の全てのデータを消去して、ファイルシステムを再構築するに際し、電源の遮断が発生すると、2つのブロックにおいて同じデータを格納した状態、あるいは1つのブロック内の全てのデータを完全に消去していない状態が発生することがあった。このファイルシステムの再構築の処理を図11のフローチャートに従って次に述べる。
【0012】
まず、アプリケーションもしくはオペレーティングシステム6においてフラッシュメモリ部5からのデータの読み出し要求が発生した場合、この読み出し要求と共に論理セクタ番号がアプリケーションもしくはオペレーティングシステム6からファイルシステム制御部2に与えられる。ファイルシステム制御部2は、ファイルシステムメモリ部3内のセクタ情報表11をアクセスして、与えられた論理セクタ番号を検索し、この論理セクタ番号に対応するセクタ状態が「データ有効」となっていることを確認し、この論理セクタ番号に対応する物理セクタ番号を取得し、この物理セクタ番号をフラッシュメモリ制御部4に与える(ステップ121)。フラッシュメモリ制御部4は、この物理セクタ番号に基いてフラッシュメモリ部5をアクセスし、この物理セクタ番号に該当する物理的な格納場所のセクタに対して読み出しを行い、読み出したデータをファイルシステム制御部2に与える(ステップ122)。読み出すべき残りのデータがある場合は、ステップ121へ戻り(ステップ123,Yes)、読み出すべき残りのデータがない場合は、終了となる(ステップ123,No)。
【0013】
ここで、ステップ113の実行前あるいはステップ113の実行中において、電力供給の遮断が発生すると、電力供給が回復したときに、2つのブロックにおいて同じデータを格納した状態、あるいは1つのブロック内の全てのデータを完全に消去できていない状態が発生し、新たな予備ブロックを確保できない。
【0014】
そこで、本発明は、上記従来の問題に鑑みなされたものであり、電力供給の遮断が発生しても、フラッシュメモリに格納されているデータを正常に読み出すことが可能な不揮発性半導体記憶装置を用いたファイルシステムを提供することを目的とする。
【0015】
【課題を解決するための手段】
上記課題を解決するために、本発明のファイルシステムは、複数のセクタをそれぞれ含む複数の消去ブロックを有する不揮発性半導体記憶装置を用いたファイルシステムにおいて、該各消去ブロック毎に、消去ブロックについての複数の状態情報のいずれかを格納すると共に、該各セクタ毎に、セクタについての複数の状態情報のいずれかを格納する記憶手段と、該不揮発性半導体記憶装置のアクセス時に、該記憶手段内の該各消去ブロックの状態情報及び該各セクタの状態情報に基いて、該不揮発性半導体記憶装置に既に格納されているデータを保証する保証手段とを具備する。
【0016】
本発明によれば、ブロックについての複数の状態情報及びセクタについての複数の状態情報を記憶手段に格納している。このため、ファイルシステムが稼働中において、意図しない電力供給の遮断が生じても、電力供給が回復したときには、起動時の初期化処理に際し、ブロックについての複数の状態情報及びセクタについての複数の状態情報に基いて、ブロック及びセクタの状態を正確に把握してきめ細かにフラッシュメモリを管理することができ、フラッシュメモリに格納されている既存のデータを破壊することなく、また既存のデータに矛盾を生じさせることなく、電力供給の遮断直前に実行中であった前段階ヘファイルシステムを自動的に回復させることが可能となる。
【0017】
一実施形態では、前記記憶手段は、データの更新に制約の無いRAM上に設けられ、前記保証手段は、前記不揮発性半導体記憶装置へのアクセス時に、該RAM上の前記各消去ブロックの状態情報及び前記各セクタの状態情報を参照する。
【0018】
この様にRAMを利用すると、データの更新に制約がなくなり処理速度が早くなる。
【0019】
一実施形態では、前記消去ブロックについての複数の状態情報として、「未使用」、「データ有」、「ブロックフル」、「データ転送中」、「元ブロック消去中」という少なくとも5つの状態を設定しており、前記保証手段は、再構築用に予め確保されている予備ブロックの状態情報を「未使用」から「データ転送中」へ更新する手段と、データ転送元の消去ブロック内のデータを該予備ブロックへ転送して記憶させる手段と、該データの転送並びに記憶の完了後、該予備ブロックのブロック状態情報を「データ転送中」から「元ブロック消去中」へ更新し、該データ転送元の消去ブロックのデータを消去し、このデータ転送元の消去ブロックを新たな予備ブロックとして確保し、この新たな予備ブロックの状態情報を「データ有」あるいは「ブロックフル」から「未使用」へ更新する手段と、データ転送先の該予備ブロックの状態情報を「元ブロック消去中」から「データ有」へ更新する手段とを含む。
【0020】
この様に消去ブロックの状態情報として「未使用」、「データ有」、「ブロックフル」、「データ転送中」、「元ブロック消去中」という5つの状態を利用した場合、ブロックの状態を正確に把握してきめ細かにフラッシュメモリを管理することができ、フラッシュメモリに格納されている既存のデータを破壊することなく、また既存のデータに矛盾を生じさせることなく、電力供給の遮断直前に実行中であった前段階ヘファイルシステムを自動的に回復させることが可能となる。
【0021】
一実施形態では、再構築用に予め確保されている予備ブロックは、1個の不揮発性半導体記憶装置に含まれるブロックサイズが異なる各消去ブロック毎に、少なくとも1個以上有する。
【0022】
この場合、均等ブロックあるいはブートブロック構成のフラッシュメモリのうちからシステムの目的に合わせた、あるいはより安価なフラッシュメモリを採用することが可能となる利点がある。
【0023】
一実施形態では、再構築用に予め確保されている予備ブロックは、複数個の不揮発性半導体記憶装置に含まれるブロックサイズが異なる各消去ブロック毎に、少なくとも1個以上有する。
【0024】
この場合、ファイルシステムが必要とする予備ブロックの数を少なくできる利点がある。このため、ファイルシステムが安価に構成できる利点もある。
【0025】
一実施形態では、再構築用に予め確保されている予備ブロックは、消去ブロックのサイズ以上のサイズを有する。
【0026】
この場合は、ブートブロック(例えば8Kバイトのサイズ)用の予備ブロックとして、8Kバイトより大きいサイズのブロック(例えば64Kバイトのサイズ)を予備ブロックに割り当て、予備ブロックのサイズを一定にできるため、管理が簡単になる。
【0027】
本発明のファイルシステムは、複数のセクタを有する不揮発性半導体記憶装置を用いたファイルシステムにおいて、該各セクタ毎に、セクタについての複数の状態情報のいずれかを格納する記憶手段と、該不揮発性半導体記憶装置のアクセス時に、該記憶手段内の該各セクタの状態情報に基いて、該不揮発性半導体記憶装置に既に格納されているデータを保証する保証手段とを具備し、前記セクタについての複数の状態情報として、「未使用」、「データ書き込み中」、「データ書き込み完了」、「データ有効」、「データ無効」という少なくとも5つの状態を設定しており、前記保証手段は、データが書き込まれるセクタの状態情報を「未使用」から「データ書き込み中」へ更新する手段と、該セクタへのデータの書き込みが完了した後、該セクタの状態情報を「データ書き込み中」から「データ書き込み完了」へ更新する手段と、該セクタにデータを新規に書き込んだ場合は、該セクタの状態情報を「データ書き込み完了」から「データ有効」へ更新し、該セクタに既存のデータの更新データを書き込んだ場合は、該既存のデータが書き込まれている他のセクタの状態情報を「データ有効」から「データ無効」に更新後、該更新データが書き込まれている該セクタの状態情報を「データ書き込み完了」から「データ有効」へ更新する。
【0028】
本発明によれば、セクタについての5つの状態情報を記憶手段に格納している。このため、ファイルシステムが稼働中において、意図しない電力供給の遮断が生じても、電力供給が回復したときには、起動時の初期化処理に際し、セクタについての複数の状態情報に基いて、セクタの状態を正確に把握してきめ細かにフラッシュメモリを管理することができ、フラッシュメモリに格納されている既存のデータを破壊することなく、また既存のデータに矛盾を生じさせることなく、電力供給の遮断直前に実行中であった前段階ヘファイルシステムを自動的に回復させることが可能となる。
【0029】
他の実施形態では、前記消去ブロックについての複数の状態情報として、「未使用」、「データ有」、「データ転送中」、「元ブロック消去中」、「元ブロックフォーマット中」という少なくとも5つの状態を設定しても良い。
【0030】
この場合、再構築用に予め確保されている予備消去ブロックの状態情報を「未使用」から「データ転送中」へ更新する手段と、データ転送元の消去ブロック内のデータを該予備消去ブロックヘ転送して記憶させる手段と、該データの転送並びに記憶の完了後、該予備消去ブロックのブロック状態情報を「データ転送中」から「元ブロック消去中」へ更新し、該データ転送元の消去ブロックのデータを消去し、このデータ転送元の消去ブロックを新たな予備消去ブロックとして確保し、この新たな予備消去ブロックの状態情報を「データ有」から「未使用」へ更新する手段と、データ転送先の該予備消去ブロックの状態情報を「元ブロック消去中」から「元ブロックフォーマット中」へ更新し、データ転送元の新たな予備消去ブロックヘ新たな予備消去ブロックの消去可能回数などを書き込む(フォーマットする)手段と、フォーマット完了後、データ転送先の該予備消去ブロックの状態情報を「元ブロックフォーマット中」から「データ有」へ更新する手段とを含む構成が考えられる。
【0031】
この様に、消去ブロックの状態情報として「未使用」、「データ有」、「データ転送中」、「元ブロック消去中」、「元ブロックフォーマット中」という5つの状態を利用した場合、消去ブロックの状態を正確に把握してきめ細かにフラッシュメモリを管理することができ、フラッシュメモリに格納されている既存のデータを破壊することなく、また既存のデータに矛盾を生じさせることなく、電力供給の遮断直前に実行中であった前段階ヘファイルシステムを自動的に回復させることが可能となる。また、消去ブロックの状態情報として「ブロックフル」という状態を設定しない方法は、消去ブロックが不均等なサイズのセクタに分割されて使用される場合に特に有効である。なぜならば、不均等なサイズのデータを同一の消去ブロック内の連続したセクタに書き込む場合において、次に書き込むべきデータのサイズが不明である場合に、消去ブロックの状態情報が「ブロックフル」となるかどうかの判断が難しいためである。
【0032】
電力供給が回復した時のファイルソステムの初期化において、前記消去ブロックの状態情報として「元ブロック消去中」の消去ブロックが存在するか検索し、該消去ブロックが存在する場合は、該消去ブロックの論理ブロック番号と同一の論理ブロック番号を有し、消去ブロックの状態情報が「データ有」あるいは「ブロックフル」である消去ブロックを、前記記憶手段内の各消去ブロックの状態情報から取得する手段と、取得した消去ブロックのデータを消去し、消去完了後、この消去ブロックの状態情報を「データ有」あるいは「ブロックフル」から「未使用」へ更新する手段と、消去ブロックの状態情報が「元ブロック消去中」の消去ブロックの状態情報を「元ブロック消去中」から「データ有」へ更新する手段とを含んでもよい。
【0033】
前記消去ブロックについての複数の状態情報として、「未使用」、「データ有」、「データ転送中」、「元ブロック消去中」、「元ブロックフォーマット中」という少なくとも5つの状態を設定しており、前記保証手段は、ファイルシステムの再構築用に予め確保されている予備消去ブロックの状態情報を「未使用」から「データ転送中」へ更新する手段と、データ転送元の消去ブロック内のデータを該予備消去ブロックヘ転送して記憶させる手段と、該データの転送並びに記憶の完了後、該予備消去ブロックの状態情報を「データ転送中」から「元ブロック消去中」へ更新し、データ転送元の消去ブロックのデータを消去し、消去完了後、このデータ転送元の消去ブロックを新たな予備消去ブロックとして確保し、この新たな予備消去ブロックの状態情報を「データ有」から「未使用」へ更新する手段と、データ転送先の該予備消去ブロックの状態情報を「元ブロック消去中」から「元ブロックフォーマット中」へ更新し、データ転送元の新たな予備消去ブロックをフォーマットする手段と、フォーマット完了後、データ転送先の該予備消去ブロックの状態情報を「元ブロックフォーマット中」から「データ有」へ更新する手段とを含んでもよい。
【0034】
前記消去ブロックは、ブロック消去可能回数を各消去ブロック内に記憶しており、前記フォーマット時において、新たな予備消去ブロックに該予備消去ブロックの消去可能回数から1減じた回数を該予備消去ブロック内に記憶する手段と、ファイルシステムの再構築時には、該予備消去ブロックを除いた全ての消去ブロックの中で、ブロック消去回数が最大の消去ブロックをデータ転送元として選択する手段とを含んでもよい。
【0035】
前記ブロック消去可能回数が0以下の値になった時点で、該消去ブロックの使用を禁止してもよい。
【0036】
前記消去ブロックは、ブロック消去可能回数を各消去ブロック内に記憶しており、前記フォーマット時において、新たな予備消去ブロックに該予備消去ブロックの消去回数に1増加した回数を該予備消去ブロック内に記憶する手段と、ファイルシステムの再構築時には、該予備消去ブロックを除いた全ての消去ブロックの中で、ブロック消去回数が最大の消去ブロックをデータ転送元として選択する手段とを含んでもよい。
【0037】
前記ブロック消去可能回数が消去可能回数の仕様値(最大値)以上の値になった時点で、該消去ブロックの使用を禁止してもよい。
【0038】
ファイルシステムの再構築用に予め確保されている予備消去ブロックは、1個の不揮発性半導体記憶装置に含まれるブロックサイズが異なる各消去ブロック毎に、少なくとも1個以上有してもよい。
【0039】
ファイルシステムの再構築用に予め確保されている予備消去ブロックは、複数個の不揮発性半導体記憶装置に含まれるブロックサイズが異なる各消去ブロック毎に、少なくとも1個以上有してもよい。
【0040】
ファイルシステムの再構築用に予め確保されている予備消去ブロックは、消去ブロックサイズ以上のサイズを有してもよい。
【0041】
複数のセクタを有する不揮発性半導体記憶装置を用いたファイルシステムにおいて、該各セクタ毎に、セクタについての複数の状態情報のいずれかを格納する記憶手段と、該不揮発性半導体記憶装置へのアクセス時に、該記憶手段内の該各セクタの状態情報に基いて、該不揮発性半導体記憶装置に既に格納されているデータを保証する保証手段とを具備し、前記セクタについての複数の状態情報として、「未使用」、「データ書き込み中」、「データ書き込み完了」、「データ有効」、「データ無効」という少なくとも5つの状態を設定しており、前記保証手段は、データが書き込まれるセクタの状態情報を「未使用」から「データ書き込み中」へ更新する手段と、該セクタヘのデータの書き込みが完了した後、該セクタの状態情報を「データ書き込み中」から「データ書き込み完了」へ更新する手段と、該セクタにデータを新規に書き込んだ場合は、該セクタの状態情報を「データ書き込み完了」から「データ有効」へ更新し、該セクタに既存のデータの更新データを書き込んだ場合は、該既存のデータが書き込まれている他のセクタの状態情報を「データ有効」から「データ無効」に更新後、該更新データが書き込まれている該セクタの状態情報を「データ書き込み完了」から「データ有効」へ更新する手段とを含んでもよい。
【0042】
電力供給が回復した時のファイルシステムの初期化において、前記消去ブロックの状態情報として「元ブロック消去中」の消去ブロックが存在するか検索し、該消去ブロックが存在する場合は、該消去ブロックヘのデータ転送元ブロックを、前記記憶手段内の各消去ブロックの状態情報から取得する手段と、取得したデータ転送元ブロックのデータを消去し、消去完了後、この消去ブロックの状態情報を「データ有」から「未使用」へ更新する手段と、消去ブロックの状態情報が「元ブロック消去中」の消去ブロックの状態情報を「元ブロック消去中」から「元ブロックフォーマット中」へ更新し、データを消去した消去ブロックをフォーマットして新たな予備消去ブロックとして確保する手段と、フォーマット完了後、消去ブロックの状態情報が「元ブロックフォーマット中」の消去ブロックの状態情報を「元ブロックフォーマット中」から「データ有」へ更新する手段とを含んでもよい。
【0043】
電力供給が回復した時のファイルシステムの初期化において、前記消去ブロックの状態情報として「元ブロックフォーマット中」の消去ブロックが存在するか検索し、該消去ブロックが存在する場合は、該消去ブロックヘのデータ転送元ブロックを、前記記憶手段内の各消去ブロックの状態情報から取得する手段と、取得したデータ転送元ブロックをフォーマットして新たな予備消去ブロックとして確保する手段と、フォーマット完了後、消去ブロックの状態情報が「元ブロックフォーマット中」の消去ブロックの状態情報を「元ブロックフォーマット中」から「データ有」へ更新する手段とを含んでもよい。
【0044】
【発明の実施の形態】
以下、本発明の実施形態を添付図面を参照して説明する。
【0045】
図1は、本発明のファイルシステムの一実施形態を示している。図1において、1はファイルシステム、2はファイルシステム1の処理を制御するファイルシステム制御部、3はファイルシステム1が制御情報を格納するために使用するファイルシステムメモリ部、4はフラッシュメモリ部5へのデータ処理を制御するフラッシュメモリ制御部、5はフラッシュメモリ部、6はファイルシステム1へデータの処理を依頼するアプリケーションもしくはオペレーティングシステムである。
【0046】
図2は、図1におけるフラッシュメモリ部5に格納されているデータの構成図である。フラッシュメモリ部5の各消去ブロック51は、データの取扱い単位である複数の物理セクタ52に分割されて配置されており、各消去ブロック51内で一意の物理セクタ番号を有する。各消去ブロック51のサイズが64Kバイトで、各物理セクタ52のサイズが512バイトであるとした場合、各消去ブロック51には128個の物理セクタ52が存在することになる。
【0047】
ここで、フラッシュメモリ部5内の複数の消去ブロック51のうちの任意の1個の消去ブロック51をファイルシステム1の再構築用に用いられるデータ未書き込みの予備消去ブロックとして、また各消去ブロック51の先頭のセクタ52をそれぞれの消去ブロックの制御情報を絡納するブロックコントロールセクタ52aとして、予め確保しておく。
【0048】
消去ブロック51において、ブロックコントロールセクタ52aには、先頭から該消去ブロック51の状態情報としての2バイト、セクタ#1の物理セクタ52の状態情報としての2バイト、セクタ#2〜#127の各物理セクタ52の状態情報としてのそれぞれの2バイトが順次配列され、よって2バイト×128個=256バイトの情報を有している。
【0049】
消去ブロック51の状態情報は、ファイルシステム制御部2が割り当てを行う0〜255の論理ブロック番号、及び5種類のブロック状態のいずれかを表すデータからなる。5種類のブロック状態とは、(1)「未使用」を表す11111111b(bは2進数を表わす。以下同様)、(2)「データ転送中」を表す11111110b、(3)「元ブロック消去中」を表す11111100b、(4)「データ有」を表す11111000b、(5)「ブロックフル」を表す11110000bである。
【0050】
消去ブロック51の各セクタ52の状態情報は、消去ブロック51の状態情報と同様に、ファイルシステム制御部2が割り当てを行う0〜4095のシステム内で一意の論理セクタ番号、及び5種類のセクタ状態のいずれかを表すデータからなる。5種類のセクタ状態とは、(I)「未使用」を表す1111b、(II)「データ書き込み中」を表す1110b、(III)「データ書き込み完了」を表す1100b、(IV)「データ有効」を表す1000b、(V)「データ無効」を表す0000bである。
【0051】
図3は、図1におけるファイルシステムメモリ部3に格納されている各消去ブロック51に関するデータの構成図(以下、ブロック情報表10と呼称)である。
【0052】
図3において、物理ブロック番号、論理ブロック番号、及びブロック状態を1つの情報単位としており、例えば物理ブロック番号=0、論理ブロック番号=0、ブロック状態=データ有となっている消去ブロック51、物理ブロック番号=1、論理ブロック番号=1、ブロック状態=ブロックフルとなっている消去ブロック51等が存在することを示している。
【0053】
図4は、図1におけるファイルシステムメモリ部3に格納されている各セクタ52に関するデータの構成図(以下、セクタ情報表11と呼称)である。
【0054】
図4において、物理ブロック番号、物理セクタ番号、論理セクタ番号、及びセクタ状態を1つの情報単位としており、例えば物理ブロック番号=0、物理セクタ番号=0、論理セクタ番号=100、セクタ状態=データ有効となっているセクタ52、物理ブロック番号=0、物理セクタ番号=1、論理セクタ番号=10、セクタ状態=データ無効となっているセクタ52等が存在することを示している。
【0055】
図5は、図1におけるファイルシステムメモリ部3に格納されている各消去ブロック51毎に、各セクタ52の数をそれぞれのセクタ状態に応じて整理したデータの構成図(以下、セクタ情報表12と呼称)である。
【0056】
図5において、物理ブロック番号、未使用セクタ数、データ有効セクタ数、及びデータ無効セクタ数を1つの情報単位としており、例えば物理ブロック番号=0、未使用セクタ数=100、データ有効セクタ数=20、データ無効セクタ数=7となっている消去ブロック51、物理ブロック番号=1、未使用セクタ数=0、データ有効セクタ数=50、データ無効セクタ数=77となっている消去ブロック51等が存在することを示している。
【0057】
図3のブロック情報表10、図4のセクタ情報表11、及び図5のセクタ情報表12は、ファイルシステム1が起動する段階において、フラッシュメモリ部5から各消去ブロック51のブロックコントロールセクタ52aを読み出すことによってそれぞれ作成される。
【0058】
ブロック情報表10、セクタ情報表11、及びセクタ情報表12を作成しない場合においても、これらの表の情報が各消去ブロック51のブロックコントロールセクタ52aに格納されているため、ファイルシステム1を使用することは可能である。しかしながら、ファイルシステムメモリ部3の動作速度がフラッシュメモリ部5よりも高速なため、ファイルシステムメモリ部3にブロック情報表10、セクタ情報表11、及びセクタ情報表12を作成して置いておく方が、フラッシュメモリ部5の内部状態やデータの格納場所を高速に把握することができる。また、フラッシュメモリ部5とのデータのやり取りが減るので、ファイルシステムメモリ部3を利用した方が、ファイルシステム1の動作速度を高速にする上で非常に有効である。
【0059】
図6は、本実施形態におけるフラッシュメモリ部5に格納されたデータの読み出し処理に関するフローチャートである。
【0060】
まず、アプリケーションもしくはオペレーティングシステム6においてフラッシュメモリ部5からのデータの読み出し要求が発生した場合、この読み出し要求と共に論理セクタ番号がアプリケーションもしくはオペレーティングシステム6からファイルシステム制御部2に与えられる。ファイルシステム制御部2は、ファイルシステムメモリ部3内のセクタ情報表11をアクセスして、与えられた論理セクタ番号を検索し、この論理セクタ番号に対応するセクタ状態が「データ有効」となっていることを確認し、この論理セクタ番号に対応する物理セクタ番号を取得し、この物理セクタ番号をフラッシュメモリ制御部4に与える(ステップ121)。フラッシュメモリ制御部4は、この物理セクタ番号に基いてフラッシュメモリ部5をアクセスし、この物理セクタ番号に該当する物理的な格納場所のセクタに対して読み出しを行い、読み出したデータをファイルシステム制御部2に与える(ステップ122)。読み出すべき残りのデータがある場合は、ステップ121へ戻り(ステップ123,Yes)、読み出すべき残りのデータがある場合は、終了となる(ステップ123,No)。
【0061】
図7A〜図7Cは、本実施形態におけるフラッシュメモリ部5へのデータの書き込み処理に関するフローチャートである。
【0062】
まず、アプリケーションもしくはオペレーティングシステム6においてフラッシュメモリ部5へのデータの書き込み要求が発生した場合、この書き込み要求と共に論理セクタ番号及び書き込むデータがアプリケーションもしくはオペレーティングシステム6からファイルシステム制御部2に与えられる。ファイルシステム制御部2は、ファイルシステムメモリ部2内のセクタ情報表12をアクセスして、未使用セクタ数が最も多い物理ブロック番号(書き込み可能な消去ブロック51を示す)を取得し(ステップ131)、取得できたかどうかの確認を行い(ステップ132)、この物理ブロック番号が取得出来なかった場合は(ステップ132,No)、書き込み可能な消去ブロック51を確保するために後述するファイルシステム1の再構築を行う(ステップ133)。
【0063】
また、未使用セクタ数が最も多い物理ブロック番号を取得できれば(ステップ132,Yes)、ファイルシステム制御部2は、セクタ情報表11をアクセスして、ステップ131又は133において取得した物理ブロック番号に対応する各物理セクタ番号のうちからセクタ状態が「未使用」となっている物理セクタ番号を取得し、更にセクタ情報表12をアクセスして、該物理ブロック番号に対応する未使用セクタ数を−1とし、データ有効セクタ数を+1とする(ステップ134)。
【0064】
この後、ファイルシステム制御部2は、ブロック情報表10をアクセスして、ステップ131又は133において取得した物理ブロック番号に対応するブロック状態が「未使用」であるかの確認を行い(ステップ135)、ブロック状態が「未使用」であれば(ステップ135,Yes)、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、該物理ブロック番号に対応する消去ブロック51のブロックコントロールセクタ52aの論理ブロック番号を該物理ブロック番号に更新し、ブロックコントロールセクタ52aのブロック状態を「未使用」から「データ有」へ更新する。同様に、ブロック情報表10をアクセスし、ステップ131又は133において取得した物理ブロック番号に対応する論理ブロック番号を該物理ブロック番号に更新し、ブロック状態を「未使用」から「データ有」へ更新し(ステップ136)、ステップ137に移る。ブロック状態が「未使用」でなければ(ステップ135,No)、ステップ136をジャンプしてステップ137に移る。
【0065】
次に、ファイルシステム制御部2は、セクタ情報表12をアクセスし、ステップ131又は133において取得した物理ブロック番号に対応する未使用セクタ数が0かの確認を行い(ステップ137)、未使用セクタ数が0であれば(ステップ137,Yes)、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、該物理ブロック番号に対応する消去ブロック51のブロックコントロールセクタ52aのブロック状態を「データ有」から「ブロックフル」へ更新する。同様に、ブロック情報表10をアクセスし、ステップ131又は133において取得した物理ブロック番号に対応するブロック状態も「データ有」から「ブロックフル」へ更新する(ステップ138)。
【0066】
次に、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、ステップ131又は133において取得した物理ブロック番号並びにステップ134において取得した物理セクタ番号に対応する消去ブロック51のブロックコントロールセクタ52aの論理セクタ番号にファイルシステム制御部2に与えられた論理セクタ番号を書き込み、このセクタ52のセクタ状態を「未使用」から「データ書き込み中」へ更新する。同様に、セクタ情報表11をアクセスし、ステップ131又は133において取得した物理ブロック番号並びにステップ134において取得した物理セクタ番号に対応する論理セクタ番号をファイルシステム制御部2に与えられた論理セクタ番号に更新し、セクタ状態を「未使用」から「データ書き込み中」へ更新する(ステップ139)。
【0067】
この後、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、ステップ131又は133において取得した物理ブロック番号並びにステップ134において取得し物理セクタ番号に対応するセクタ52に、ファイルシステム制御部2に与えられたデータを書き込む(ステップ140)。
【0068】
ファイルシステム制御部2は、フラッシュメモリ部5内のセクタ52への書き込み終了後、ステップ131又は133において取得した物理ブロック番号並びにステップ134において取得した物理セクタ番号に対応する消去ブロック51のブロックコントロールセクタ52aのセクタ状態を「データ書き込み中」から「データ書き込み完了」へ更新する。同様に、セクタ情報表11をアクセスし、ステップ131又は133において取得した物理ブロック番号並びにステップ134において取得した物理セクタ番号に対応するセクタ状態を「データ書き込み中」から「データ書き込み完了」へ更新する(ステップ141)。
【0069】
そして、ファイルシステム制御部2は、フラッシュメモリ部5内のセクタ52に書き込んだデータが既にフラッシュメモリ部5に書き込まれていたデータの更新データであるかの確認を行う(ステップ142)。ここで、既存データの更新であれば(ステップ142,Yes)、ファイルシステム制御部2は、セクタ情報表11をアクセスして、ステップ140において書き込みを実行したセクタ52の論理セクタ番号と同じ論理セクタ番号を有しかつステップ140において書き込みを実行したセクタ52の物理セクタ番号とは異なる他のセクタ52の物理セクタ番号及び物理ブロック番号、つまり既存のデータが格納されたセクタ52の物理セクタ番号及び物理ブロック番号を取得する(ステップ143)。そして、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、これらの物理ブロック番号並びに物理セクタ番号に対応する消去ブロック51のブロックコントロールセクタ52aのセクタ状態を「データ有効」から「データ無効」へ更新する。同様に、セクタ情報表11をアクセスし、これらの物理ブロック番号並びに物理セクタ番号に対応するセクタ状態を「データ有効」から「データ無効」へ更新する。更に、セクタ情報表12をアクセスし、この物理ブロック番号に対応するデータ有効セクタ数を−1とし、データ無効セクタ数を+1する(ステップ144)。
【0070】
この後、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、ステップ131又は133において取得した物理ブロック番号並びにステップ134において取得した物理セクタ番号に対応する消去ブロック51のブロックコントロールセクタ52aのセクタ状態を「データ書き込み完了」から「データ有効」へ更新する。同様に、セクタ情報表11をアクセスし、これらの物理ブロック番号並びに物理セクタ番号に対応するセクタ状態も「データ書き込み完了」から「データ有効」へ更新する(ステップ145)。
【0071】
引き続いて、ファイルシステム制御部2は、書き込みデータがまだ残っているかの確認を行い(ステップ146)、書き込みデータがまだ残っている場合は(ステップ146,Yes)、ステップ131へ戻り、書き込みデータがなくなれば(ステップ146,No)、終了する。
【0072】
図8A〜図8Bは、本実施形態におけるファイルシステム1の再構築処理に関するフローチャートである。
【0073】
まず、図7A〜図7Cのフローチャートで説明した様に書き込み可能な消去ブロック51が取得出来なかった場合は(ステップ132,No)、書き込み可能な消去ブロック51を確保するためにファイルシステムの再構築を行う(ステップ133)。このステップ133の処理が図8のフローチャートに示す処理に該当する。
【0074】
図8A〜図8Bにおいて、ファイルシステム制御部2は、セクタ情報表12をアクセスし、データ無効セクタ数が最も多い物理ブロック番号を取得し、更にブロック情報表10をアクセスし、取得した物理ブロック番号に対応する論理ブロック番号を取得する(ステップ151)。そして、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、ファイルシステムの再構築処理用に予め未使用状態で確保しておいた予備消去ブロック51のブロックコントロールセクタ52aの論理ブロック番号をステップ151において取得した論理ブロック番号へ更新し、このブロックコントロールセクタ52aのブロック状態を「未使用」から「データ転送中」へ更新する。同様に、ブロック情報表10をアクセスし、予備消去ブロック51の論理ブロック番号をステップ151において取得した論理ブロック番号へ更新し、ブロック状態を「未使用」から「データ転送中」へ更新する(ステップ152)。
【0075】
次に、ファイルシステム制御部2は、データをステップ151において取得した物理ブロック番号の消去ブロック51から予備消去ブロック51ヘ効率良くコピーするにために、セクタ情報表11をアクセスし、ステップ151において取得した物理ブロック番号に対応する各物理セクタ番号のうちからセクタ状態が「データ有効」である物理セクタ番号を検索して取得する(ステップ153)。セクタ状態が「データ有効」のセクタ52があれば(ステップ154,Yes)、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、ステップ151において取得した物理ブロック番号並びにステップ153において取得した物理セクタ番号に対応する消去ブロック51のブロックコントロールセクタ52aのセクタ状態「データ有効」を予備消去ブロック51の同じ物理セクタ番号に対応するブロックコントロールセクタ52aのセクタ状態にコピーする。同様に、ファイルシステム制御部2は、セクタ情報表11をアクセスし、ステップ151において取得した物理ブロック番号並びにステップ153において取得した物理セクタ番号のセクタ状態「データ有効」を予備消去ブロック51の同じ物理セクタ番号のセクタ状態にコピーする。同時に、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、ステップ151において取得した物理ブロック番号並びにステップ153において取得した物理セクタ番号に対応する消去ブロック51のセクタ52から予備消去ブロック51の同じ物理セクタ番号のセクタ52へとデータをコピーする(ステップ155)。
【0076】
ファイルシステム制御部2は、ステップ151において取得した物理ブロック番号の消去ブロック51に未処理のセクタ52があるかの確認を行う(ステップ156)。未処理のセクタ52がある場合は、ステップ153へ戻る。未処理のセクタ52がない場合は、データのコピーが完了したため、ファイルシステム制御部2は、セクタ情報表12をアクセスし、ステップ151において取得した物理ブロック番号に対応するデータ有効セクタ数を予備消去ブロック51のデータ有効セクタ数へコピーし、またデータ無効セクタ数を0とし、データ有効セクタ数とデータ無効セクタ数と未使用セクタ数の和が総セクタ数(127)となる様に、未使用セクタ数を計算して設定する(ステップ157)。
【0077】
次に、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、予備消去ブロック51のブロックコントロールセクタ52aのブロック状態を「データ転送中」から「元ブロック消去中」へ更新し(ステップ158)、ステップ151において取得した物理ブロック番号の消去ブロック51のデータを消去し(ステップ159)、予備消去ブロック51のブロックコントロールセクタ52aのブロック状態を「元ブロック消去中」から「データ有」へ更新する。同様に、ファイルシステム制御部2は、ブロック情報表10をアクセスし、予備消去ブロック51のブロック状態を「データ転送中」から「元ブロック消去中」へ更新し(ステップ158)、ステップ159を経た後に予備消去ブロック51のブロック状態を「元ブロック消去中」から「データ有」へ更新する。これによって、ステップ151において取得した物理ブロック番号のブロック、つまりデータを消去したブロックが新しい予備消去ブロック51として確保される(ステップ160)。
【0078】
ここで、ステップ159においてデータを消去した消去ブロック51のブロックコントロールセクタ52aのブロック状態は、データ消去により自動的に「データ有」あるいは「ブロックフル」から「未使用」となる。また、ブロック情報表10、セクタ情報表11及びセクタ情報表12では、ステップ159においてデータを消去した消去ブロック51が予備消去ブロックとなり、フラッシュメモリ部5へのデータの書き込みにおいて予備消去ブロックが参照されることはないため、この予備消去ブロックの物理ブロック番号に対応する項目の更新は不要である。
【0079】
なお、本実施例においては、ファイルシステム1の再構築の処理は、消去ブロック1つを消去する場合を示したが、ステップ151からの一連の処理を複数回実行することも可能である。
【0080】
図9A〜図9Dは、本実施形態におけるファイルシステム1の初期化に関するフローチャートである。この初期化は、ファイルシステム1の立ち上げ時、つまり電力供給が一旦遮断された後の電力供給再開時に一度実行され、フラッシュメモリ部5内のデータの読み出しを保証するものである。
【0081】
まず、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、各消去ブロック51のブロックコントロールセクタ52aのブロック状態を読み出し、この読み出したブロック情報に基いて、ブロック情報表10のブロック情報を更新し(ステップ171)、残りの消去ブロック51が存在するかの確認を行い(ステップ172)、残りの消去ブロック51が無くなるまで、ステップ171の処理を繰り返す。
【0082】
次に、ファイルシステム制御部2は、ステップ171において更新したブロック情報表10をアクセスし、ブロック状態「データ転送中」が存在するかの確認を行い(ステップ173)、ブロック状態「データ転送中」が存在する場合は、このブロック状態の物理ブロック番号を取得し、この物理ブロック番号に対応するブロック状態を「データ転送中」から「未使用」へ更新する(ステップ174)。同時に、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、この物理ブロック番号のブロックのデータを消去する。
【0083】
ここで、図8A〜図8Bのステップ151〜157の途中で電力供給が遮断され、予備消去ブロック51へのデータ転送が中断した場合は、この予備消去ブロック51のブロック状態が「データ転送中」として保持される。この後に電力供給が再開されたときには、ステップ173、174の処理において、データ転送が中断したブロック状態「データ転送中」の予備消去ブロック51のデータが消去され、この予備消去ブロック51のブロック状態が「未使用」となる。これによって不完全なデータが予備消去ブロック51から読み出されることが防止される。
【0084】
次に、ファイルシステム制御部2は、ステップ171において更新したブロック情報表10をアクセスし、ブロック状態が「元ブロック消去中」であるブロックが存在するかの確認を行い(ステップ175)、ブロック状態が「元ブロック消去中」であるブロックが存在する場合は、このブロックの論理ブロック番号と同じ論理ブロック番号であってかつブロック状態が「データ有」である物理ブロック番号を取得する。そして、ファイルシステム制御部2は、ブロック情報表10をアクセスし、この物理ブロック番号に対応するブロック状態を「未使用」へ更新する。同時に、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、この物理ブロック番号のブロックのデータを消去する。
【0085】
また、ファイルシステム制御部2は、ステップ175において取得したブロック状態が「元ブロック消去中」である物理ブロック番号の消去ブロック51のブロックコントロールセクタ52aのブロック状態情報を「元ブロック消去中」から「データ有」へ更新し、ブロック情報表10における同じ物理ブロック番号に対応するブロック状態を「データ有」へ更新する(ステップ176)。
【0086】
この後、ファイルシステム制御部2は、消去ブロック51のブロックコントロールセクタ52aのセクタ状態を読み出し、このセクタ情報に基いてファイルシステムメモリ部3内のセクタ情報表11を更新し(ステップ177)、残りのセクタ情報が存在するかの確認を行い(ステップ178)、残りのセクタ情報が存在する場合は、ステップ177へ戻り、残りのセクタ52がなくなるまで繰り返し、同様に残りの消去ブロック51が存在する場合は、ステップ177へ戻り、残りの消去ブロック51がなくなるまで繰り返す。
【0087】
ここで、図8A〜図8Bのステップ158〜160の途中で電力供給が遮断された場合は、この予備消去ブロック51のブロック状態が「元ブロック消去中」として保持されており、この予備消去ブロック51へのデータ転送が終了している。この後に電力供給が再開されると、ステップ175〜178の処理において、予備消去ブロック51のデータを保持し、データ転送元の消去ブロック51のデータを消去している。これによってデータ転送元の消去ブロック51から不完全なデータが読み出されることが防止される。
【0088】
次に、ファイルシステム制御部2は、ステップ177において更新したセクタ情報表11をアクセスし、セクタ状態が「データ書き込み中」であるセクタ52が存在するかの確認を行い(ステップ179)、セクタ状態が「データ書き込み中」であるセクタ52が存在する場合は、ステップ179において取得したセクタ状態「データ書き込み中」に対応する物理ブロック番号及び物理セクタ番号を取得する。そして、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、これらの物理ブロック番号及び物理セクタ番号に対応する消去ブロック51のブロックコントロールセクタ52aのセクタ状態を「データ書き込み中」から「データ無効」へ更新する。同様に、ファイルシステム制御部2は、セクタ情報表11をアクセスし、これらの物理ブロック番号及び物理セクタ番号に対応するセクタ状態を「データ書き込み中」から「データ無効」へ更新する(ステップ180)。
【0089】
次に、ファイルシステム制御部2は、セクタ情報表11をアクセスし、セクタ状態が「データ書き込み完了」であるセクタ52が存在するかの確認を行い(ステップ181)、セクタ状態が「データ書き込み完了」であるセクタ52が存在する場合は、このセクタ52の論理セクタ番号と同じ論理セクタ番号を有しかつセクタ状態が「データ有効」のセクタ52が存在するかの確認を行い(ステップ182)、このセクタ52が存在する場合は、このセクタ52の物理ブロック番号及び物理セクタ番号を取得する。そして、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、これらの物理ブロック番号及び物理セクタ番号に対応する消去ブロック51のブロックコントロールセクタ52aのセクタ状態を「データ有効」から「データ無効」へ更新する。同様に、ファイルシステム制御部2は、セクタ情報表11をアクセスし、これらの物理ブロック番号及び物理セクタ番号に対応するセクタ状態を「データ有効」から「データ無効」へ更新する(ステップ183)。
【0090】
次に、ファイルシステム制御部2は、セクタ情報表11をアクセスし、ステップ181において取得したセクタ状態が「データ書き込み完了」であるセクタ52の物理ブロック番号及び物理セクタ番号を取得する。そして、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、これらの物理ブロック及び物理セクタ番号に対応する消去ブロック51のブロックコントロールセクタ52aセクタ状態を「データ書き込み完了」から「データ有効」へ更新する。同様に、ファイルシステム制御部2は、セクタ情報表11をアクセスし、これらの物理ブロック番号及び物理セクタ番号に対応するセクタ状態を「データ書き込み完了」から「データ有効」へ更新する(ステップ184)。
【0091】
ここで、図7A〜図7cのステップ139〜141の途中で電力供給が遮断され、データの書き込みが中断した場合は、セクタ状態が「データ書き込み中」として保持され、またデータの書き込みが完了した場合は、セクタ状態が「データ書き込み完了」として保持される。この後に電力供給が再開されると、ステップ179〜184の処理において、データの書き込みが中断したセクタ状態「データ書き込み中」のセクタ52のデータが消去され、このセクタ52のセクタ状態が「データ無効」となる。これによってデータの書き込みが中断したセクタ52から不完全なデータが読み出されることが防止される。また、セクタ状態「データ書き込み完了」のセクタ52のデータが保持され、このセクタ状態が「データ有効」に更新されるので、このセクタ52からデータを正しく読み出すことができる。
【0092】
次に、ファイルシステム制御部2は、セクタ情報表11をアクセスし、物理ブロック番号毎に、同一物理ブロック番号に対応するセクタ状態「未使用」の数、セクタ状態「データ有効」の数、セクタ状態「データ無効」の数をそれぞれ計数し、これらの計数値に基いてファイルシステムメモリ部3内のセクタ情報表12の物理ブロック番号、未使用セクタ数、データ有効セクタ数及びデータ無効セクタ数を更新し(ステップ185)、残りの物理ブロック番号が存在するかの確認を行い(ステップ186)、残りの物理ブロック番号が存在する場合は、ステップ185へ戻り、残りの物理ブロック番号がなくなるま繰り返す。
【0093】
この後、ファイルシステム制御部2は、ステップ171、ステップ174、ステップ175において更新されたブロック情報表10に基いて、ブロック状態が「未使用」である物理ブロック番号に対応する1つの消去ブロック51を予備消去ブロック51として確保する(ステップ187)。
【0094】
この様に本実施形態においては、データの書き込みやファイルシステムの再構築に際し、各消去ブロック51や各セクタ52の状態情報をきめ細かく書き換えているため、電力供給が不用意に遮断されも、この後に電力供給が再開されたときには、各消去ブロック51や各セクタ52の状態情報に基いて、消去ブロック51やセクタ52の不確定なデータを消去して、正しいデータのみを保存することができる。
【0095】
上記実施形態においては、現在のブロック状態として、(1)「未使用」を表す11111111b(bは2進数を表わす。以下同様)、(2)「データ転送中」を表す11111110b、(3)「元ブロック消去中」を表す11111100b、(4)「データ有」を表す11111000b、(5)「ブロックフル」を表す11110000bという5種類のブロック状態を例示したが、1と0の組み合わせを複雑にしたり、ビット数を増やしても良く、これによって各状態の違いをより確実に判定することが可能になる。
【0096】
また、よりきめ細かくブロック状態を管理するため、ブロックの状態数を6つ以上に設定しても良く、これによってよりきめ細かく状態を管理することが可能になる。
【0097】
また、上記実施形態においては、現在のセクタ状態として、(I)「未使用」を表す1111b、(II)「データ書き込み中」を表す1110b、(III)「データ書き込み完了」を表す1100b、(IV)「データ有効」を表す1000b、(V)「データ無効」を表す0000bという5種類のセクタ状態を例示したが、1と0の組み合わせを複雑にしたり、ビット数を増やしても良く、これによって各状態の違いをより確実に判定することが可能になる。
【0098】
また、よりきめ細かくセクタ状態を管理するため、セクタ52の状態数を6つ以上に設定しても良く、これによってよりきめ細かく状態を管理することが可能になる。
【0099】
上記実施形態においては、均等ブロックサイズであるフラッシュメモリを前提として説明したが、ブートブロック構成のフラッシュメモリにおいても、ブートブロック(例えば8Kバイトのサイズ)用の任意の1個の消去ブロック(8Kバイト)と、それ以外のブロック(例えば64Kバイトのサイズ)用の任意の1個の消去ブロック(64Kバイト)をファイルシステム1の再構築用の予備ブロックとして、予め確保しても良く、これによって均等ブロックあるいはブートブロック構成のフラッシュメモリのうちからシステムの目的に合うフラッシュメモリあるいはより安価なフラッシュメモリを採用することが可能となる。また、ブートブロック(例えば8Kバイト)用の予備ブロックとして、8Kバイトより大きいサイズのブロック(例えば64Kバイト)を予備ブロックに割り当てることも可能であり、この場合は、予備ブロックのサイズを一定にできるため、管理が簡単になる。
【0100】
本実施形態のファイルシステム1が複数個のフラッシュメモリを備える場合は、1個のフラッシュメモリ毎に任意の1個の消去ブロックをファイルシステムの再構築用の予備ブロックとして予め確保しておくのではなく、複数個のフラッシュメモリに対し1個の予備ブロックを確保したり、複数個のフラッシュメモリに含まれるブロックサイズが異なる各消去ブロック毎に、少なくとも1個の予備ブロックを確保しても良く、この場合は、確保する予備ブロックの数を少なくすることができる。
【0101】
図9Bに示すステップ176においては、ファイルシステム制御部2は、ステップ175において取得したブロック状態「元ブロック消去中」の消去ブロック51の論理ブロック番号と同じ論理ブロック番号であって、且つブロック状態が「データ有」である物理ブロック番号を取得する。そして、ファイルシステム制御部2は、ブロック情報表10をアクセスし、この物理ブロック番号に対応するブロック状態を「未使用」へ更新する。同時に、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、この物理ブロック番号の消去ブロック51のデータを消去する。また、ファイルシステム制御部2は、ステップ175において取得したブロック状態「元ブロック消去中」の物理ブロック番号の消去ブロック51のブロックコントロールセクク52aのブロック状態を「元ブロック消去中」から「データ有」へ更新し、ブロック情報表10における同じ物理ブロック番号に対応するブロック状態を「データ有」へ更新する。
【0102】
ここで、消去ブロック51についての複数の状態惰報としては、『未使用」、「データ有」、「ブロックフル」、「データ転送中」、「元ブロック消去中」の5つに加え、「元ブロック消去完了」を設定した場合の例として以下のような処理の流れにすることが可能である。
【0103】
図13は、図9A〜図9Dのファイルシステム1の初期化に関するフローチャートの内、本実施形態におけるステップ174からステップ177の間に相当する部分を抜き出したフローチャートを示す図である。
【0104】
まず、ファイルシステム制御部2は、ステップ171において更新したブロック情報表10をアクセスし、ブロック状態「元ブロック消去完了」が存在するかを確認し(ステップ191)、ブロック状態「元ブロック消去完了」が存在する場合は、処理はステツプ192およびステップ193をスキップしてステップ194ヘジャンプする。
【0105】
次に、ファイルシステム制御部2は、ステップ171において更新したブロック情報表10をアクセスし、ブロック状態「元ブロック消去中」が存在するかを確認し(ステップ192)、ブロック状態「元ブロック消去中」が存在する場合は、この消去ブロック51の論理ブロック番号と同じ論理ブロック番号であって、且つブロック状態が「データ有」である物理ブロック番号を取得し、ファイルシステム制御部2は、フラッシュメモリ制御部4を通じてフラッシュメモリ部5をアクセスし、この物理ブロック番号の消去ブロック51のデータを消去する。
【0106】
この後、ファイルシステム制御部2は、ステツプ192において取得したブロック状態が「元ブロック消去中」である物理ブロック番号の消去ブロック51のブロックコントロールセクタ52aのブロック状態を「元ブロック消去中」から「元ブロック消去完了」へ更新する。
【0107】
また、ファイルシステム制御部2は、ブロック情報表10をアクセスし、データ消去をした消去ブロック51の物理ブロック番号に対応するブロック状態を「未使用」へと更新する(ステップ193)。
【0108】
次に、ブロック状態「元ブロック消去完了」へ更新した物理ブロック番号の消去ブロック51のブロックコントロールセクタ52aのブロック状態を「元ブロック消去完了」から「データ有」へ更新し、ブロック情報表10におけるこの物理ブロック番号に対応するブロック状態を「元ブロック消去中」から「データ有」へ更新する(ステップ194)。
【0109】
この様に、ブロック状態「元ブロック消去完了」を追加することにより、比較的処理時間の長いブロック消去処理をスキップすることが可能、すなわち、電力供給の遮断直前のブロック状態が「元ブロック消去中」から「元ブロック消去完了」へ更新された直後であった場合は、電力供給が回復した時の初期化処理時間を短縮することが可能である。
【0110】
他の実施形態では、図12に示すように、消去ブロック51についての複数の状態情報として、「未使用」、「データ有」、「データ転送中」、「元ブロック消去中」、「元ブロックフォーマット中」の5つを設定しても良い。
【0111】
この場合、再構築用に予め確保されている予備消去ブロック51の状態情報を「未使用」から「データ転送中」へ更新する手段と、データ転送元の消去ブロック51内のデータを該予備消去ブロック51へ転送して記憶させる手段と、該データの転送並びに記憶の完了後、該予備消去ブロック51のブロック状態情報を「データ転送中」から「元ブロック消去中」へ更新し、該データ転送元の消去ブロック51のデータを消去し、このデータ転送元の消去ブロック51を新たな予備消去ブロック51として確保し、この新たな予備消去ブロック51の状態情報を「データ有」から「未使用」へ更新する手段と、データ転送先の該予備消去ブロック51の状態情報を「元ブロック消去中」から「元ブロックフォーマット中」へ更新し、データ転送元の新たな予備消去ブロック51へ新たな予備消去ブロック51の消去可能回数などを書き込む(フォーマットする)手段と、フォーマット完了後、データ転送先の該予備消去ブロック51の状態情報を「元ブロックフォーマット中」から「データ有」へ更新する手段とを合む構成が考えられる。
【0112】
この様に、消去ブロック51の状態情報として「未使用」、「データ有」、「データ転送中」、「元ブロック消去中」、「元ブロックフォーマット中」という5つの状態を利用した場合、消去ブロックの状態を正確に把握してきめ細かにフラッシュメモリを管理することができ、フラッシュメモリに格納されている既存のデータを破壊することなく、また既存のデータに矛盾を生じさせることなく、電力供給の遮断直前に実行中であった前段階ヘファイルシステムを自動的に回復させることが可能となる。
【0113】
他の実施形態における電力回復時のファイルシステム1の初期化においてブロック状態「元ブロック消去中」の消去ブロック51が検出された場合は、データ転送元の消去ブロック51のデータを消去する。または、更に既存データの正確性を期すために、該初期化において「元ブロック消去中」だけでなく「元ブロックフォーマット中」の消去ブロック51が検出された場合もデータ転送元の消去ブロック51のデータを消去する方法が考えられる。
【0114】
また、消去ブロック51の状態情報として「ブロックフル」という状態を設定する前記実施形態と異なり、ブロック状態「ブロックフル」を設定しない方法は、消去ブロックが不均等なサイズのセクタに分割されて使用される場合に特に有効である。なぜならば、不均等なサイズのデータを同一の消去ブロック内の連続したセクタに書き込む場合において、次に書き込むべきデータのサイズが不明である場合に、消去ブロックの状態情報が「ブロックフル」となるかどうかの判断が難しいためである。
【0115】
また、各消去ブロック51のブロック消去回数を平均化するために、各消去ブロック51内に該消去ブロックの消去可能回数を記憶する方法がある。
【0116】
図8Aおよび図8Bに示す他の実施形態としては、ファイルシステム1の再構築時において、ファイルシステム制御部2は、データの転送元となる消去ブロックとして予備消去ブロック51を除いた各消去ブロック51の消去可能回数を比較し、該回数の最大値と最小値の差が一定値を越えた場合には、該回数が最大の消去ブロック51を選択し、差が一定値を越えていない場合は、消去ブロック51内のセクタ情報表12をアクセスし、データ無効セクタ数が最大の消去ブロック51を選択する。
【0117】
この場合、各消去ブロック51の消去可能回数のバラツキを一定の回数内に抑え、フラッシュメモリとしての書き替え回数を増やすことが可能になる。
【0118】
また、消去ブロック51の消去可能回数は、0から1つずつ増加させ、消去可能回数の仕様値の最大値までインクリメントする方法(この場合は消去可能回数でなく消去回数を表す)と、これとは逆に消去可能回数の仕様値の最大値から1つずつ減少させ、0までデクリメントする方法が考えられるが、後者の方法においては、消去可能回数が0になった時点で該消去ブロック51の寿命が来たと判定できるため、消去可能回数の判定アルゴリズムを簡単にできる。
【0119】
他の実施形態における消去ブロック51のフォーマット手段では、フォーマットした日時を記憶することも可能であり、この場合、一定時間経過後に消去ブロック51内のデータのリフレッシュ動作を行うことが可能になる。
【0120】
【発明の効果】
本発明のファイルシステムは、複数のセクタをそれぞれ含む複数の消去ブロックを有する不揮発性半導体記憶装置を用いたファイルシステムにおいて、該各消去ブロック毎に、消去ブロックについての複数の状態情報のいずれかを格納すると共に、該各セクタ毎に、セクタについての複数の状態情報のいずれかを格納する記憶手段と、該不揮発性半導体記憶装置のアクセス時に、該記憶手段内の該各消去ブロックの状態情報及び該各セクタの状態情報に基いて、該不揮発性半導体記憶装置に既に格納されているデータを保証する保証手段とを具備する。
【0121】
本発明によれば、ブロックについての複数の状態情報及びセクタについての複数の状態情報を記憶手段に格納している。このため、ファイルシステムが稼働中において、意図しない電力供給の遮断が生じても、電力供給が回復したときには、起動時の初期化処理に際し、ブロックについての複数の状態情報及びセクタについての複数の状態情報に基いて、ブロック及びセクタの状態を正確に把握してきめ細かにフラッシュメモリを管理することができ、フラッシュメモリに格納されている既存のデータを破壊することなく、また既存のデータに矛盾を生じさせることなく、電力供給の遮断直前に実行中であった前段階ヘファイルシステムを自動的に回復させることが可能となる。
【0122】
一実施形態では、前記記憶手段は、データの更新に制約の無いRAM上に設けられ、前記保証手段は、前記不揮発性半導体記憶装置へのアクセス時に、該RAM上の前記各消去ブロックの状態情報及び前記各セクタの状態情報を参照する。
【0123】
この様にRAMを利用すると、データの更新に制約がなくなり処理速度が早くなる。
【0124】
一実施形態では、前記消去ブロックについての複数の状態情報として、「未使用」、「データ有」、「ブロックフル」、「データ転送中」、「元ブロック消去中」という少なくとも5つの状態を設定しており、前記保証手段は、再構築用に予め確保されている予備ブロックの状態情報を「未使用」から「データ転送中」へ更新する手段と、データ転送元の消去ブロック内のデータを該予備ブロックへ転送して記憶させる手段と、該データの転送並びに記憶の完了後、該予備ブロックのブロック状態情報を「データ転送中」から「元ブロック消去中」へ更新し、該データ転送元の消去ブロックのデータを消去し、このデータ転送元の消去ブロックを新たな予備ブロックとして確保し、この新たな予備ブロックの状態情報を「データ有」あるいは「ブロックフル」から「未使用」へ更新する手段と、データ転送先の該予備ブロックの状態情報を「元ブロック消去中」から「データ有」へ更新する手段とを含む。
【0125】
この様に消去ブロックの状態情報として「未使用」、「データ有」、「ブロックフル」、「データ転送中」、「元ブロック消去中」という5つの状態を利用した場合、ブロックの状態を正確に把握してきめ細かにフラッシュメモリを管理することができ、フラッシュメモリに格納されている既存のデータを破壊することなく、また既存のデータに矛盾を生じさせることなく、電力供給の遮断直前に実行中であった前段階ヘファイルシステムを自動的に回復させることが可能となる。
【0126】
一実施形態では、再構築用に予め確保されている予備ブロックは、1個の不揮発性半導体記憶装置に含まれるブロックサイズが異なる各消去ブロック毎に、少なくとも1個以上有する。
【0127】
この場合、均等ブロックあるいはブートブロック構成のフラッシュメモリのうちからシステムの目的に合わせた、あるいはより安価なフラッシュメモリを採用することが可能となる利点がある。
【0128】
一実施形態では、再構築用に予め確保されている予備ブロックは、複数個の不揮発性半導体記憶装置に含まれるブロックサイズが異なる各消去ブロック毎に、少なくとも1個以上有する。
【0129】
この場合、ファイルシステムが必要とする予備ブロックの数を少なくできる利点がある。このため、ファイルシステムが安価に構成できる利点もある。
【0130】
一実施形態では、再構築用に予め確保されている予備ブロックは、消去ブロックのサイズ以上のサイズを有する。
【0131】
この場合は、ブートブロック(例えば8Kバイトのサイズ)用の予備ブロックとして、8Kバイトより大きいサイズのブロック(例えば64Kバイトのサイズ)を予備ブロックに割り当て、予備ブロックのサイズを一定にできるため、管理が簡単になる。
【0132】
本発明のファイルシステムは、複数のセクタを有する不揮発性半導体記憶装置を用いたファイルシステムにおいて、該各セクタ毎に、セクタについての複数の状態情報のいずれかを格納する記憶手段と、該不揮発性半導体記憶装置のアクセス時に、該記憶手段内の該各セクタの状態情報に基いて、該不揮発性半導体記憶装置に既に格納されているデータを保証する保証手段とを具備し、前記セクタについての複数の状態情報として、「未使用」、「データ書き込み中」、「データ書き込み完了」、「データ有効」、「データ無効」という少なくとも5つの状態を設定しており、前記保証手段は、データが書き込まれるセクタの状態情報を「未使用」から「データ書き込み中」へ更新する手段と、該セクタへのデータの書き込みが完了した後、該セクタの状態情報を「データ書き込み中」から「データ書き込み完了」へ更新する手段と、該セクタにデータを新規に書き込んだ場合は、該セクタの状態情報を「データ書き込み完了」から「データ有効」へ更新し、該セクタに既存のデータの更新データを書き込んだ場合は、該既存のデータが書き込まれている他のセクタの状態情報を「データ有効」から「データ無効」に更新後、該更新データが書き込まれている該セクタの状態情報を「データ書き込み完了」から「データ有効」へ更新する。
【0133】
本発明によれば、セクタについての5つの状態情報を記憶手段に格納している。このため、ファイルシステムが稼働中において、意図しない電力供給の遮断が生じても、電力供給が回復したときには、起動時の初期化処理に際し、セクタについての複数の状態情報に基いて、セクタの状態を正確に把握してきめ細かにフラッシュメモリを管理することができ、フラッシュメモリに格納されている既存のデータを破壊することなく、また既存のデータに矛盾を生じさせることなく、電力供給の遮断直前に実行中であった前段階ヘファイルシステムを自動的に回復させることが可能となる。
【0134】
一実施形態では、前記消去ブロックについての複数の状態情報として、「未使用」、「データ有」、「ブロックフル」、「データ転送中」、「元ブロック消去中」、「元ブロック消去完了」という少なくとも6つの状態を設定しており、前記保証手段は、再構築用に予め確保されている予備消去ブロックの状態情報を「未使用」から「データ転送中」へ更新する手段と、データ転送元の消去ブロック内のデータを該予備消去ブロックヘ転送して記憶させる手段と、該データの転送並びに記憶の完了後、該予備消去ブロックのブロック状態情報を「データ転送中」から「元ブロック消去中」へ更新し、該データ転送元の消去ブロックのデータを消去し、該予備消去ブロックのブロック状態情報を「元ブロック消去中」から「元ブロック消去完了」へ更新する手段と、データ転送元の消去ブロックを新たな予備消去ブロックとして確保し、この新たな予備消去ブロックの状態情報を「データ有」あるいは「ブロックフル」から「未使用」へと更新する手段と、データ転送先の該予備消去ブロックの状態情報を「元ブロック消去完了」から「データ有」へ変更する手段とを含む。
【0135】
この様に、消去ブロックの状態情報として「未使用」、「データ有」、「ブロックフル」、「データ転送中」、「元ブロック消去中」、「元ブロック消去完了」という6つの状態を利用した場合、前記5つの状態を利用した場合よりも更に消去ブロックの状態を正確に把握してきめ細かにフラッシュメモリを管理することができ、フラッシュメモリに格納されている既存のデータを破壊することなく、また、既存のデータに矛盾を生じさせることなく、電力供給の遮断直前に実行中であった前段階ヘファイルシステムを自動的に回復させることが可能となる。
【0136】
一実施形態では、前記消去ブロックについての複数の状態情報として、「未使用」、「データ有」、「データ転送中」、「元ブロック消去中」、「元ブロックフォーマット中」という少なくとも5つの状態を設定しており、前記保証手段は、再構築に予め確保されている予備消去ブロックの状態情報を「未使用」から「データ転送中」へ更新する手段と、データ転送元の消去ブロック内のデータを該予備消去ブロックへ転送して記憶させる手段と、該データの転送並びに記憶の完了後、該予備消去ブロックのブロック状態情報を「データ転送中」から「元ブロック消去中」へ更新し、該データ転送元の消去ブロックのデータを消去し、このデータ転送元の消去ブロックを新たな予備消去ブロックとして確保し、この新たな予備消去ブロックの状態情報を「データ有」から「未使用」へ更新する手段と、データ転送先の該予備消去ブロックの状態情報を「元ブロック消去中」から「元ブロックフォーマット中」へ更新し、データ転送元の新たな予備消去ブロックへ新たな予備消去ブロックの消去可能回数などを書き込む(フォーマットする)手段と、フォーマット完了後、データ転送先の該予備消去法ブロックの状態情報を「元ブロックフォーマット中」から「データ有」へ更新する手段とを含む。
【0137】
この様に、消去ブロックの状態情報として「未使用」、「データ有」、「データ転送中」、「元ブロック消去中」、「元ブロックフォーマット中」という5つの状態を利用した場合、消去ブロックの状態を正確に把握してきめ細かにフラッシュメモリを管理することができ、フラッシュメモリに格納されている既存のデータを破壊することなく、また既存のデータに矛盾を生じさせることなく、電力供給の遮断直前に実行中であった前段階ヘファイルシステムを自動的に回復させることが可能となる。
【0138】
この場合、消去ブロックの状態情報として「ブロックフル」という状態を設定する前記実施形態と異なり、ブロック状態「ブロックフル」を設定しない方法は、消去ブロックが不均等なサイズのセクタに分割されて使用される場合に特に有効である。なぜならば、不均等なサイズのデータを同一の消去ブロック内の連続したセクタに書き込む場合において、次に書き込むべきデータのサイズが不明である場合に、消去ブロックの状態情報が「ブロックフル」となるかどうかの判断が難しいためである。
【0139】
一実施形態では、各消去ブロックのブロック消去回数を平均化するために、各消去ブロック内に該消去ブロックの消去可能回数を記憶する。この消去可能回数をファイルシステムの再構築時において利用することにより、各消去ブロックの消去可能回数のバラツキを一定の回数内に抑え、フラッシュメモリとしての総書き替え回数を向上させることが可能になる。
【0140】
また、消去ブロックの消去可能回数は、0から1つずつ増加させ、消去可能回数の仕様値の最大値までインクリメントする方法(この場合は消去可能回数でなく消去回数を表す)と、これとは逆に消去可能回数の仕様値の最大値から1つずつ減少させ、0までデクリメントする方法が考えられるが、後者の方法においては、消去可能回数が0になった時点で該消去ブロックの寿命が来たと判定できるため、消去可能回数の判定アルゴリズムを簡単にできる。
【0141】
一実施形態における消去ブロックのフォーマット手段では、フォーマットした日時を記憶することも可能であり、この場合、一定時間経過後に消去ブロック内のデータのリフレッシュ動作を行うことが可能になる。
【図面の簡単な説明】
【図1】本発明のファイルシステムの一実施形態を示すブロック図である。
【図2】図1のファイルシステムのフラッシュメモリ部に格納されているデータの構成図である。
【図3】図1のファイルシステムにおけるファイルシステムメモリ部に格納されている各消去ブロックに関するデータの構成図である。
【図4】図1のファイルシステムにおけるファイルシステムメモリ部に格納されている各セクタに関するデータの構成図である。
【図5】図1のファイルシステムにおけるファイルシステムメモリ部に格納されている各消去ブロック毎に、各セクタの数をそれぞれのセクタ状態に応じて整理したデータの構成図である。
【図6】図1のファイルシステムにおけるデータの読み出し処理に関するフローチャートである。
【図7A】図1のファイルシステムにおけるデータを書き込む処理に関するフローチャートである。
【図7B】図1のファイルシステムにおけるデータを書き込む処理に関する図7Aに続くフローチャートである。
【図7C】図1のファイルシステムにおけるデータを書き込む処理に関する図7Bに続くフローチャートである。
【図8A】図1のファイルシステムの再構築処理に関するフローチャートである。
【図8B】図1のファイルシステムの再構築処理に関する図8Aに続くフローチャートである。
【図9A】図1のファイルシステムの初期化に関するフローチャートである。
【図9B】図1のファイルシステムの初期化に関する図9Aに続くフローチャートである。
【図9C】図1のファイルシステムの初期化に関する図9Bに続くフローチャートである。
【図9D】図1のファイルシステムの初期化に関する図9Cに続くフローチャートである。
【図10】従来の技術におけるフラッシュメモリに格納されたデータの更新処理に関するフローチャートである。
【図11】従来の技術におけるファイルシステムの再構築処理に関するフローチャートである。
【図12】図1のファイルシステムにおけるフラッシュメモリ部に格納されているデータの構成図の内、ブロック状態情報のブロック状態を表す他の実施形態を示す図である。
【図13】図1のファイルシステムの初期化に関する図9A〜図9Dの内、状態情報として「元ブロック消去完了」を設定した第1の実施形態に関わる部分のフローチャートを示す図である。
【符号の説明】
1 ファイルシステム
2 ファイルシステム制御部
3 ファイルシステムメモリ部
4 フラッシュメモリ制御部
5 フラッシュメモリ部
6 アプリケーション、OS(オペレーティングシステム)
51 消去ブロック、予備消去ブロック
52 セクタ
52a ブロックコントロールセクタ

Claims (15)

  1. 複数のセクタをそれぞれ有する複数の消去ブロックが設けられており、該消去ブロックの少なくとも1つが再構築用の予備消去ブロックとして予め確保された不揮発性半導体記憶部と、
    前記各消去ブロックのそれぞれの状態を前記各消去ブロック毎にブロック状態情報として設定するとともに、前記各セクタ毎のそれぞれの状態を前記各セクタ毎にセクタ状態情報として設定するファイルシステム制御部と、
    前記ファイルシステム制御部にて設定される前記ブロック状態情報および前記セクタ状態情報を、前記各消去ブロック毎および前記各セクタ毎にそれぞれ格納するファイルシステム記憶手段と、
    前記ファイルシステム記憶手段に格納された前記ブロック状態情報および前記セクタ状態情報を参照して前記各セクタに対するデータの処理を制御するデータ処理制御部と、を備え、
    前記データ処理制御部は、前記不揮発性半導体記憶部への書き込み要求時に書き込み可能な前記消去ブロックを確保できない場合に、前記予備消去ブロックに他の消去ブロックのデータを転送することによって、そのデータ転送元の消去ブロックを新たな予備消去ブロックとするとともに、該新たな予備消去ブロックとする場合において、電源が遮断された後の電源回復時に、前記ファイルシステム記憶手段に記憶された前記ブロック状態情報に基づいて前記データ転送が完了したかを判断して、該データ転送が完了していない場合に、前記予備消去ブロックのデータを消去してデータ転送を再開することを特徴とする不揮発性半導体記憶装置。
  2. 前記データ処理制御部は、前記セクタに情報をデータを書き込む場合に、電源が遮断された後の電源回復時に、前記ファイルシステム記憶手段に記憶された前記セクタ状態情報に基づいて前記データの書き込みが完了したかを判断して、該データの書き込みが完了していない場合に、該データが書き込まれるセクタのデータを消去する請求項1に記載の不揮発性半導体記憶装置。
  3. 前記ファイルシステム記憶手段は、前記不揮発性半導体記憶部における各消去ブロックのデータ処理に制約の無いRAM上に設けられている、請求項1に記載の不揮発性半導体記憶装置
  4. 前記ファイルシステム制御部は、前記ブロック状態情報として、データが格納されていないことを示す「未使用」と、データが格納されていることを示す「データ有」と、データ転送元からデータの転送中であることを示す「データ転送中」と、データ転送後にデータ転送元の消去ブロックのデータの消去中であることを示す「元ブロック消去中」とが設定可能になっている請求項1に記載の不揮発性半導体記憶装置
  5. 前記データ処理制御部は、前記電源回復時に、前記ブロック状態情報が「データ転送中」の消去ブロックが存在する場合に、対応する消去ブロックのデータを消去した後にデータ転送を再開して、データ転送元の消去ブロックのデータを消去する構成であり、前記ファイルシステム制御部は、前記データ転送が完了すると前記ブロック状態情報を「元ブロック消去中」に設定し、該データ消去が完了すると前記ブロック状態情報を「データ有」に設定するとともに、転送元ブロックの消去ブロックの前記ブロック状態情報を「未使用」に設定する、請求項4に記載の不揮発性半導体記憶装置。
  6. 前記不揮発性半導体記憶部が複数設けられており、複数の不揮発性半導体記憶部に対して1個の予備消去ブロックが設けられている、請求項1に記載の不揮発性半導体記憶装置
  7. 前記消去ブロックは、ブロックサイズが異なる複数種類設けられており、前記予備消去ブロックは、前記各種類毎に少なくとも1個以上設けられている、請求項1に記載の不揮発性半導体記憶装置
  8. 前記予備消去ブロックは、前記消去ブロックのサイズ以上のサイズを有する請求項6または7に記載の不揮発性半導体記憶装置。
  9. 前記ファイルシステム制御部は、前記ブロック状態情報として、未使 用セクタ数が0の状態である「ブロックフル」も設定可能である、請求項4に記載の不揮発性半導体記憶装置。
  10. 前記ファイルシステム制御部は、前記ブロック状態情報として、データ転送元の消去ブロックのデータ消去が完了したことを示す「元ブロック消去完了」も設定可能になっている、請求項5に記載の不揮発性半導体記憶装置。
  11. 前記データ処理制御部は、前記新たな予備消去ブロックとする際に、前記ブロック状態情報として「元ブロック消去完了」の消去ブロックが存在すると、対応する転送元ブロックのブロック状態情報を「未使用」に設定する、請求項10に記載の不揮発性半導体記憶装置。
  12. 前記ファイルシステム制御部は、前記ブロック状態情報として、前記データ転送元の消去ブロックの消去可能回数を書き込み中であることを示す「元ブロックフォーマット中」も設定可能である、請求項5に記載の不揮発性半導体記憶装置。
  13. 前記ファイルシステム制御部は、前記データ消去が完了すると、前記ブロック状態情報を「データ有」にする前に「元ブロックフォーマット中」とし、前記データ処理制御部は、前記データ消去が完了すると、前記データ転送元の消去ブロックに、消去可能回数を書き込む、請求項12に記載の不揮発性半導体記憶装置。
  14. 前記データ処理制御部は、前記消去回数が最大の消去ブロックをデータ転送元として選択する、請求項13に記載の不揮発性半導体記憶装置。
  15. 前記データ処理制御部は、前記消去ブロックに書き込まれた消去可能回数が0以下の値になった時点で、該消去ブロックの使用を禁止する請求項14に記載の不揮発性半導体記憶装置。
JP25497399A 1999-05-31 1999-09-08 不揮発性半導体記憶装置 Expired - Fee Related JP3797649B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP25497399A JP3797649B2 (ja) 1999-05-31 1999-09-08 不揮発性半導体記憶装置
US09/568,529 US6513095B1 (en) 1999-05-31 2000-05-09 File system with assured integrity incorporating semiconductor memory device

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP15309099 1999-05-31
JP11-153090 1999-05-31
JP25497399A JP3797649B2 (ja) 1999-05-31 1999-09-08 不揮発性半導体記憶装置

Publications (2)

Publication Number Publication Date
JP2001051889A JP2001051889A (ja) 2001-02-23
JP3797649B2 true JP3797649B2 (ja) 2006-07-19

Family

ID=26481813

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25497399A Expired - Fee Related JP3797649B2 (ja) 1999-05-31 1999-09-08 不揮発性半導体記憶装置

Country Status (2)

Country Link
US (1) US6513095B1 (ja)
JP (1) JP3797649B2 (ja)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122195A (en) * 1997-03-31 2000-09-19 Lexar Media, Inc. Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US6731536B1 (en) * 2001-03-05 2004-05-04 Advanced Micro Devices, Inc. Password and dynamic protection of flash memory data
JP4654531B2 (ja) * 2001-04-20 2011-03-23 パナソニック電工株式会社 ブロック消去型記憶媒体の管理装置
JP2003058417A (ja) * 2001-08-21 2003-02-28 Matsushita Electric Ind Co Ltd 記憶装置
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
JP3967121B2 (ja) 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
JP2003196142A (ja) * 2001-12-25 2003-07-11 Sony Corp ライトワンス型メモリ装置及びファイル管理方法
JP4323745B2 (ja) 2002-01-15 2009-09-02 三洋電機株式会社 記憶装置
JP3971941B2 (ja) 2002-03-05 2007-09-05 三洋電機株式会社 データ記憶装置
DE10227255B4 (de) * 2002-06-19 2008-06-26 Hyperstone Gmbh Verfahren zur Wiederherstellung von Verwaltungsdatensätzen eines blockweise löschbaren Speichers
JP4387087B2 (ja) 2002-07-25 2009-12-16 三洋電機株式会社 データ記憶装置
JP4175991B2 (ja) * 2003-10-15 2008-11-05 株式会社東芝 不揮発性半導体記憶装置
KR100704618B1 (ko) * 2004-01-19 2007-04-10 삼성전자주식회사 플래시 메모리의 데이터 복구 장치 및 방법
US20050204115A1 (en) * 2004-01-30 2005-09-15 Kiminori Matsuno Semiconductor memory device, memory controller and data recording method
JP3892851B2 (ja) * 2004-02-04 2007-03-14 株式会社東芝 メモリカード及び半導体装置
JP3942612B2 (ja) * 2004-09-10 2007-07-11 東京エレクトロンデバイス株式会社 記憶装置、メモリ管理方法及びプログラム
JP2006146460A (ja) * 2004-11-18 2006-06-08 Sony Corp 通信システム、記憶装置、並びに制御装置
US7246209B2 (en) * 2004-11-30 2007-07-17 Kabushiki Kaisha Toshiba System for secure erasing of files
JP4691355B2 (ja) * 2004-12-28 2011-06-01 日本電産サンキョー株式会社 不揮発性メモリ
US7743277B2 (en) * 2005-02-14 2010-06-22 Stec, Inc. System and method for detecting and reducing data corruption in a storage device
KR100756135B1 (ko) 2005-03-10 2007-09-05 엘지전자 주식회사 메모리 데이터베이스를 이용한 플래시 파일 시스템 처리 방법
JP4325579B2 (ja) * 2005-03-29 2009-09-02 ヤマハ株式会社 コンテンツデータ再生装置およびコンテンツデータ再生プログラム
US7512864B2 (en) * 2005-09-30 2009-03-31 Josef Zeevi System and method of accessing non-volatile computer memory
US7747812B2 (en) * 2005-12-22 2010-06-29 Pitney Bowes Inc. Method for manipulating state machine storage in a small memory space
KR100755702B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
US8327192B2 (en) * 2006-02-06 2012-12-04 Intel Corporation Method for memory integrity
JP4866107B2 (ja) * 2006-03-08 2012-02-01 パナソニック株式会社 不揮発性記憶装置及びその書き込み判定方法
US7694091B2 (en) * 2006-10-23 2010-04-06 Hewlett-Packard Development Company, L.P. Non-volatile storage for backing up volatile storage
US7791952B2 (en) 2007-01-30 2010-09-07 Micron Technology, Inc. Memory device architectures and operation
US7882301B2 (en) * 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
US7991942B2 (en) * 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US8041883B2 (en) 2007-05-09 2011-10-18 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
JP4888333B2 (ja) * 2007-10-24 2012-02-29 沖電気工業株式会社 フラッシュディスク装置
KR101437397B1 (ko) * 2007-10-31 2014-09-05 삼성전자주식회사 비휘발성 메모리 장치의 데이터 관리 방법 및 맵핑 테이블업데이트 방법
US8977819B2 (en) * 2010-09-21 2015-03-10 Texas Instruments Incorporated Prefetch stream filter with FIFO allocation and stream direction prediction
US9268646B1 (en) 2010-12-21 2016-02-23 Western Digital Technologies, Inc. System and method for optimized management of operation data in a solid-state memory
JP5614337B2 (ja) 2011-03-08 2014-10-29 富士通セミコンダクター株式会社 メモリの制御方法、メモリの制御回路、記憶装置、及び電子機器
US9361044B2 (en) 2011-03-28 2016-06-07 Western Digital Technologies, Inc. Power-safe data management system
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
KR102050729B1 (ko) 2013-02-12 2019-12-02 삼성전자 주식회사 메모리 시스템
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
FR3051575A1 (fr) * 2016-05-20 2017-11-24 Proton World Int Nv Gestion de l'effacement dans une memoire flash
FR3051574A1 (fr) * 2016-05-20 2017-11-24 Proton World Int Nv Gestion du stockage dans une memoire flash
FR3055992A1 (fr) 2016-09-09 2018-03-16 Proton World International N.V. Gestion d'index dans une memoire flash
CN107247674B (zh) 2017-06-16 2020-07-31 深圳市万普拉斯科技有限公司 内存块类型处理方法、装置、电子设备及可读存储介质
FR3072476A1 (fr) 2017-10-13 2019-04-19 Proton World International N.V. Unite logique de memoire pour memoire flash
JP2020067753A (ja) * 2018-10-23 2020-04-30 キオクシア株式会社 メモリシステム及びその制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251324B (en) 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US5369616A (en) 1992-10-30 1994-11-29 Intel Corporation Method for assuring that an erase process for a memory array has been properly completed
US6170066B1 (en) * 1995-09-29 2001-01-02 Intel Corporation Power-off recovery management for sector based flash media managers

Also Published As

Publication number Publication date
US6513095B1 (en) 2003-01-28
JP2001051889A (ja) 2001-02-23

Similar Documents

Publication Publication Date Title
JP3797649B2 (ja) 不揮発性半導体記憶装置
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US5860124A (en) Method for performing a continuous over-write of a file in nonvolatile memory
KR100644602B1 (ko) 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US6038636A (en) Method and apparatus for reclaiming and defragmenting a flash memory device
JP4132086B2 (ja) フラッシュメモリ内のブロックにおける移動セクタ
JP4588431B2 (ja) 頻繁にアクセスされたセクタの動作による不揮発性メモリに対するより速い書込み動作
JP4399029B2 (ja) 半導体不揮発性大容量記憶メモリ内の自動摩耗レベリングによるシステム・データ制御の方法およびアーキテクチャ
JP3712231B2 (ja) 改善されたフラッシュファイルシステム
JP4268396B2 (ja) 1回プログラム可能な不揮発性メモリデバイスのファイル管理
KR20020009564A (ko) 메모리 시스템
JP2009199625A (ja) メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2000250820A (ja) 不揮発性メモリへのデータ保存方法
JP2008033788A (ja) 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法
KR100932801B1 (ko) 메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체
JPH11282765A (ja) フラッシュメモリを使用した外部記憶装置
JP4419415B2 (ja) 記録方式
JP2011227802A (ja) データ記録装置
JP3818130B2 (ja) データ管理方法及び装置及びデータ管理プログラム及びデータ管理プログラムを格納した記憶媒体
EP0745939A2 (en) Re-entrant garbage collection process for a flash memory resident file system
JPH06332795A (ja) 電気的消去可能な不揮発性メモリの制御方法及びシステム
JPH1031611A (ja) 不揮発性メモリ記憶媒体用ファイルシステム
JP2006338731A (ja) データ書き込み方法
JP4178822B2 (ja) 記録方式
JP2000330850A (ja) フラッシュメモリ制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060327

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060417

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060417

R150 Certificate of patent or registration of utility model

Ref document number: 3797649

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090428

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100428

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100428

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110428

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120428

Year of fee payment: 6

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120428

Year of fee payment: 6

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120428

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130428

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130428

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140428

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees