(57)【特許請求の範囲】
【請求項１】
複数個の消去ブロックによって構成されブロック単位でデータを消去可能とする不揮発性半導体記憶装置に対して、該消去ブロックが論理的により小さな記憶領域単位に分割され、該消去ブロックおよび記憶領域単位の状態情報を用いてファイルが管理され、かつ該消去ブロックに含まれる無効な該記憶領域単位を開放するブロックの再構築動作を行うファイルシステムにおいて、
該消去ブロック毎にブロックを再構築した日付を所定の記憶領域に格納する再構築日付記憶手段と、該再構築日付記憶手段にて記憶した日付から一定の期間が経過したブロックを優先的に再構築処理する再構築制御手段とを有したファイルシステム。
【請求項２】
前記再構築制御手段は、前記日付を基に各ブロック毎に直近に行ったブロックの再構築時からの経過時間を計算する再構築経過時間計算手段と、その計算結果を高速にアクセス可能な記憶領域に表形式で格納する第１計算結果格納手段と、該経過時間の計算結果を基に、一定の期間が経過したブロックを、優先的に再構築する第１再構築処理手段とを有する請求項１記載のファイルシステム。
【請求項３】
前記再構築制御手段は、前記ブロックの消去回数を計数する消去回数計数手段と、その計算結果を高速にアクセス可能な記憶領域に表形式で格納する第２計算結果格納手段と、該第２計算結果格納手段にて記憶する消去回数が多いほど、前記日付を基に予め定められる一定の短い周期でかつ優先的に再構築する第２再構築処理手段とを有する請求項１記載のファイルシステム。
【請求項４】
前記再構築制御手段は、前記ブロックの消去回数を計数する消去回数計数手段と、前記日付を基に各ブロック毎に直近に行ったブロックの再構築時からの経過時間を計算する再構築経過時間計算手段と、その消去回数および経過時間を、高速にアクセス可能な記憶領域に表形式で格納する第３計算結果格納手段と、該消去回数および経過時間からパラメータを算出するパラメータ計算手段と、該パラメータ計算手段で計算した計算結果を、高速にアクセス可能な記憶領域に表形式で格納するパラメータ格納手段と、該パラメータに基づいて、一定の期間が経過したブロックを優先的に再構築する第３再構築処理手段とを有する請求項１記載のファイルシステム。
【請求項５】
前記再構築制御手段は、電源投入時、システムリセットからの復帰時、再構築動作を一定期間行わなかった場合の少なくとも何れかのときに、再構築動作を優先的に行う請求項１〜４の何れかに記載のファイルシステム。
【請求項６】
メモリセルの特性が劣化したことを検出するメモリセル特性劣化検出手段を有し、該メモリセル特性劣化検出手段がメモリセル特性の劣化を検出した場合に、その劣化が検出されたメモリセルを含む記憶領域単位および消去ブロックに対して再構築動作を優先的に行う請求項１〜５の何れかに記載のファイルシステム。
【請求項７】
前記消去回数と再構築年月から求めた計算結果として１０の乗数で表し、その計算式に該乗数を用いる請求項３または４記載のファイルシステム。
【請求項８】
前記再構築日付記憶手段は、実際に存在する記憶領域単位番号を超える番号の状態情報記録領域に再構築日付を記憶させる請求項１〜７の何れかに記載のファイルシステム。
【請求項９】
前記再構築制御手段は、実際に存在する記憶領域単位番号を超える番号の状態情報記録領域に、前記再構築時からの経過時間、消去回数および、これらから得たパラメータの少なくとも何れかを記憶させるようにする請求項１〜８の何れかに記載のファイルシステム。
【請求項１０】
実際に存在する記憶領域単位番号を超える番号の状態情報記録領域に使用不可な物理ブロック番号を記憶する請求項１〜９の何れかに記載のファイルシステム。
【請求項１１】
使用不可な物理ブロック番号を高速にアクセス可能な記憶領域に記憶する請求項１〜１０の何れかに記載のファイルシステム。
【請求項１２】
前記不揮発性半導体記憶装置のメモリセルに多値を記憶させる請求項１に記載のファイルシステム。
【請求項１３】
複数個の消去ブロックによって構成されブロック単位でデータを消去可能とする不揮発性半導体記憶装置に対して、該消去ブロックが論理的により小さく分割された記憶領域単位および該消去ブロックの状態情報を用いてファイルを管理するファイルシステムの制御方法において、
該消去ブロックに含まれる無効な該記憶領域単位を開放するブロックの再構築処理は、該消去ブロック毎にブロックを再構築した日付を所定の記憶領域に記憶しておき、該日付から一定の期間が経過したブロックを優先的に処理するファイルシステムの制御方法。
【請求項１４】
各ブロック毎に直近に行ったブロックの再構築時からの経過時間を計算した計算結果を、高速にアクセス可能な記憶領域に表形式で格納しておき、該経過時間の計算結果に基づいて、一定の期間が経過したブロックを、優先的に再構築の対象ブロックとする請求項１３に記載のファイルシステムの制御方法。
【請求項１５】
前記消去回数が多いブロックほど、前記日付を基に予め定められる一定の短い周期でかつ優先的に再構築の対象ブロックとする請求項１３に記載のファイルシステムの制御方法。
【請求項１６】
ブロックの消去回数と、前記日付を基に各ブロック毎に直近に行ったブロックの再構築時からの経過時間とから算出した計算結果を、高速にアクセス可能な記憶領域に表形式で格納し、該計算結果を基に、一定の期間が経過したブロックを優先的に再構築の対象ブロックとする請求項１３に記載のファイルシステムの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリを含む不揮発性メモリなどの不揮発性半導体記憶装置および、これらを用いたメモリカードなどのデータ再構築方法および、データのリフレッシュ管理方法を採用したファイルシステムおよびその制御方法に関する。
【０００２】
【従来の技術】
従来、フラッシュメモリは、チップ一括または、任意の領域のメモリセル（セクタまたはブロックと呼ばれる）を一括して電気的に消去する機能を持つ不揮発性半導体記憶装置である。このフラッシュメモリのメモリセルとしては、例えば、ＮＯＲ型やＮＡＮＤ型と呼ばれるものがある。何れのメモリセルも図１７に示すメモリセル構成がデータ記憶の基本構造である。
【０００３】
図１７において、メモリセル１００は、浮遊ゲート型電界効果トランジスタ構造を有しており、１素子で１ビット（１セル）を構成することができる。そのために高集積化に優れている。このメモリセル１００ヘのデータの書き込みは、制御ゲート電極Ｇに約１２Ｖ、ドレイン電極Ｄに約７Ｖ、ソース電極Ｓに０Ｖを印加して、ドレイン接合部近傍で発生させたホットエレクトロンを浮遊ゲート電極ＦＧに注入することにより行う。この書き込みによって、メモリセル１００の制御ゲート電極Ｇから見た閾値電圧Ｖｔｈは高くなる（データ「０」）。
【０００４】
また、この浮遊ゲート型電界効果トランジスタ構造を有したメモリセル１００は、１素子で多値（メモリセルの閾値電圧Ｖｔｈを数百ｍＶ間隔で２のｎ乗の状態を作る）を構成すると更に高集積化に優れる。
【０００５】
このメモリセル１００ヘのデータの書き込みは、ソース電極Ｓを０Ｖにし、制御ゲート電極Ｇに約１２Ｖ、ドレイン電極Ｄに約７Ｖの数マイクロ秒のパルスを印加し、ドレイン接合部近傍で発生させたホットエレクトロンを浮遊ゲート電極ＦＧに注入することにより行う。この書き込みによってメモリセル１００の制御ゲート電極Ｇから見た閾値電圧Ｖｔｈは高くなる。メモリセル１００の閾値電圧Ｖｔｈの制御は、制御ゲート電極Ｇの電圧を変化、ドレイン電極Ｄの電圧変化、または、パルス幅を変化させて行う。
【０００６】
一方、消去は制御ゲート電極Ｇを接地し、ソース電極Ｓに正の高電圧（約１２Ｖ）を印加することにより、浮遊ゲート電極ＦＧとソース電極Ｓの間に高電界を発生させ、薄いゲート酸化膜を通したトンネル現象を利用して浮遊ゲート電極ＦＧに蓄積された電子をソース電極Ｓに引き抜くことによって行う。この消去は、通常、ブロック単位（例えば１６Ｋバイトや６４Ｋバイト単位）に行われる。この消去によって制御ゲート電極Ｇから見た閾値電圧Ｖｔｈは低くなる（デーダ「１」）。このとき、メモリセル１００が選択トランジスタを持たないため、閾値電圧Ｖｔｈが負になること（過剰消去）は致命的な不良となる（データ読み出し時に、正しいデータが読み出せない不良）。
【０００７】
また、データ読み出しは、ソース電極Ｓに０Ｖ、ドレイン電極Ｄに約１Ｖ程度の低電圧を印加し、制御ゲート電極Ｇには約５Ｖ程度の電圧を印加し、このときに流れるチャンネル電流の大小が情報の「１」と「０」とに対応することを利用して行う。ドレイン電極Ｄへの電圧を低電圧にするのは、寄生的な弱い書き込み動作（ソフトライト）を防止するためである。
【０００８】
また、多値記憶のデータ読み出しは、ソース電極Ｓに０Ｖ、ドレイン電極Ｄに約ｌＶ程度の低電圧を印加し、制御ゲート電極Ｇに印加する電圧を変化し、このときにチャンネル電流が流れる時の制御ゲート電極Ｇの電圧を利用して行う。なお、このメモリセル１００では、データ書き込みをドレイン電極Ｄ側、消去をソース電極Ｓ側で行うので、接合プロファイルはそれぞれの動作に適するように個別に最適化するのが望ましい。即ち、ソース電極Ｓ、ドレイン電極Ｄは非対称構造になっており、ドレイン接合部では書き込み効率を高めるために電界集中型プロファイルを用い、ソース接合部では高電圧が印加可能な電界緩和型プロファイルを採用している。
【０００９】
消去時にソース電極Ｓに高電圧を印加する方法は、ソース接合部の耐圧を高めなければならないので、ソース電極Ｓ側を微細化しにくいこと、およびソース電極Ｓ近傍でホットホールが発生し、その一部がトンネル絶縁膜中にトラップされ、セルの信頼性が低下するなどの問題がある。
【００１０】
そこで、他の消去の例（負ゲート消去）としては、制御ゲート電極Ｇに負電圧（約−１０Ｖ）、ソース電極Ｓに電源電圧（約５Ｖ）を印加し、トンネル電流によって消去する。
【００１１】
この消去方法の利点の一つは、消去時にソース電極Ｓに印加される電圧が低いので、ソース電極Ｓ側の接合耐圧が低くてもよいので、セルのゲート長を短縮することが可能なことである。また、負ゲート消去法を用いると、消去ブロックサイズを小さくし易いという利点（セクタ消去と呼ばれる）もある。
【００１２】
また、ソース電極Ｓに高電界を加えた消去方法では、この高電界に起因する寄生的な電流であるバンド間トンネル電流が流れ、その電流値はチップ全体で数ｍＡにもなるので、電流供給能力が限られる昇圧回路の使用が困難になる。したがって、従来は、消去用の高電圧Ｖｐｐをチップ外部から供給していた。負ゲート消去方法では、ソース電極Ｓに電源電圧Ｖｃｃ（５Ｖまたは３Ｖ）を供給することが可能になるので、単一電源化が比較的容易に可能になるという利点がある。
【００１３】
データ書き込みに、ホットエレクトロンを用いる方法では、書き込み時に１セル当たり約１ｍＡの電流が流れるので、従来のＥＥＰＲＯＭと同様にＦＮトンネル電流を用い、データ書き込み時に１セル当たりに流れる電流を少なくするフラッシュメモリもある。
【００１４】
半導体プロセスの微細化や電池駆動の携帯型機器の普及と共に動作電源の低電圧化が要望されている。そのため、５Ｖ単一動作ではなく、３Ｖ単一動作品や、２．７Ｖ単一動作品の要求／開発が活発である。
【００１５】
３Ｖ電源（Ｖｃｃ）や２．７Ｖ電源でデータを読み出す場合、現状のフラッシュＥＥＰＲＯＭでは、制御ゲート線（ワード線）に電源電位（Ｖｃｃ＝３Ｖ）、または高速化／動作マージン拡大のため内部昇圧した約５Ｖを印加している。
【００１６】
このような不揮発性半導体記憶装置では、短時間での書き込みと読み出しが可能なＲＡＭ（ランダム・アクセス・メモリ）に比べて、多くの動作状態（書き込み、ブロック消去、全チップ一括消去、状態レジスタの読み出しなど）を持つ。多数の動作状態を外部制御信号（／ＣＥ，／ＷＥ，／ＣＥなど）の組み合わせに対応させると、従来のＥＰＲＯＭ，ＥＥＰＲＯＭにある制御信号では足らなくなるので、新しい制御信号を追加する必要が生じる。その結果、使い勝手が悪くなるので、制御信号線を増加することなく、コマンド方式をとる方法が考案されて世の中の主流になっている。この不揮発性半導体記憶装置では、ユーザが入力したコマンドは、ＣＳＭ（コマンド・ステート・マシン）と呼ばれるコマンドを認識する回路に入り、ＷＳＭ（ライト・ステート・マシン）がコマンドに対応した動作（消去／書き込みなど）を実行する。
【００１７】
この種の不揮発性半導体記憶装置は、チップ内の消去ブロックの大きさを不均等または均等に分割したものがある。
【００１８】
書き込み／消去方法共に、ＦＮトンネル電流で行うものや、メモリセルを直列に８個または１６個接続したＮＡＮＤ型と呼ばれるメモリセル方式もある。ＶＡＮＤ型は、ＮＯＲ型に比べて読み出しスピードが遅いが、メモリセルサイズを小さくできるという利点がある。
【００１９】
上述したように、通常は、図１８に示すように、１個のメモリセルに２値（１ビット）を記憶する。１個のメモリセルに４値（２ビット）や８値（３ビット）更には、さらには１６値（４ビット）などの多値を記録する試みもある。
【００２０】
１個のメモリセルに例えば２値（１ビット）を記憶する場合には、データ「１」をメモリセルの閾値電圧Ｖｔｈ＝２．５Ｖとし、データ「０」をメモリセルの閾値電圧Ｖｔｈ＝６．５ｖと定めると、データ間の閾値電圧Ｖｔｈの差は約４Ｖである。しかし、１個のメモリセルに例えば４値（２ビット）を記憶する場合には、この４Ｖの間にさらに、２値を記憶させる必要がある。
【００２１】
即ち、データ「１１」をメモリセルの閾値電圧Ｖｔｈ＝２Ｖとし、データ「１０」をメモリセルの閾値電圧Ｖｔｈ＝３．５Ｖとし、データ「０１」をメモリセルの閾値電圧Ｖｔｈ＝５ｖとし、データ「００」をメモリセルの閾値電圧Ｖｔｈ＝６．５ｖと定めると、データ間の閾値電圧Ｖｔｈの差は約１．５Ｖに小さくなる。
【００２２】
このように、１個のメモリセルにより多くの値を記憶する程、１個のメモリセル内の、ある記憶状態と他の記憶状態との電位差が小さくなる（データの読み誤りが発生しやすい）欠点があるが、安価に大容量のメモリが作製できるという利点もある。
【００２３】
このようなフラッシュメモリの不揮発性という特性を利用して、ハードディスクに代表される磁気ディスクのようなデータ記憶（ファイルシステム）用途に用いることが提案されている。即ち、データの取り扱い単位をハードディスクのように数１００バイト程度と小さくし、効率良くデータを管理するものである。しかし、フラッシュメモリでファイルシステムを構築すると、以下のような課題（１）〜（３）がある。
【００２４】
（１）まず、この種の不揮発性半導体記憶装置では、データ読み出し速度が約１００ナノ秒（ｎＳｅｃ）と速いのに比べて、データの書き込み動作は約２０マイクロ秒（μＳｅｃ）、消去動作は数百ミリ秒（ｍＳｅｃ）と更に遅い。
【００２５】
（２）次に、フラッシュメモリはデータの書き換えがブロック単位であり、１バイト単位でデータを書き換えられない。
【００２６】
（３）さらに、データ保持期間は、約１０年以上可能であるが、ブロックの消去回数が増加する程、酸化膜の劣化がすすみ、リーク電流が増加するので、データ保持期間は短縮する傾向にある。そのため、消去回数の制限は、各ブロック当たり約１０万回であり、或る１つのブロックに集中して書き換えが起こり、一個のブロックの消去回数が１０万回を越えるとフラッシュメモリチップ全体の信頼性が大幅に劣化する。
【００２７】
フラッシュメモリをデータ記憶（ファイル記憶）に用いるには、上記課題（１）〜（３）に対し次の様に対策している。まず、データの消去状態または有効状態を示す状態ビットをデータに付加する。即ち、実際には、消去動作は行わず、状態ビットヘの書き込みのみで、データの状態が変化したことを示す。このように、データの消去は状態ビットの書き込みで代用されるので、見かけ上データの消去が１０００倍以上高速化され、また、実際の消去動作を頻繁に行わなくて済む。
【００２８】
しかし、ブロック中に、実際には消去されておらず、状態ビットのみ消去状態のデータ、即ち、無効データが増加すると新たにデータを書き込むための空き領域がなくなる。データを書き込むための領域が無くなれば、有効なデータを予め消去済みの予備ブロックにコピーする。このコピーが終わると、ブロック中に消去状態のデータが多かったコピー元のブロックを消去して、新たに予備ブロックとする。この動作を再構築（リクレイム）と呼んでいる。
【００２９】
この再構築動作を模式的に示すと図１９（１）〜図１９（３）のようになる。即ち、消去ブロック１と消去ブロック２があり、消去ブロック１がデータ記憶用ブロックでブロック２が予備ブロックを示している。予備ブロックは予め消去済み（全ビットの値が「１」）であるとする。各消去ブロックは５つのデータの取り扱い単位（以下セクタと称する）があり、セクタ毎にその状態を示す状態ビットを持つ。この説明を簡略化するため、ここでは、状態ビットは１ビットであり、その値が「１」でセクタのデータが有効、「０」でセクタのデータが無効とする。図１９（１）で消去ブロック１は全てのセクタＡ〜Ｅにデータが書き込まれており、そのうち、セクタＢとセクタＤは状態ビットが「０」であり無効データである。このブロックにはこれ以上データを書き込めるセクタがないため、再構築動作が行われる。再構築は図１９（２）のように、ブロック１のセクタのうち、状態ビットが「１」で、データが有効なセクタの内容が予備ブロック（ブロック２）にコピーされる。予備ブロックでコピーされなかったセクタは消去状態になっており、このセクタにはデータを書き込むことが可能となる。このように、有効なデータを予備ブロックにコピーすると、元のデータ記憶ブロック（ブロック１）を消去し、これを新たな予備ブロックとする（図１９（３））。
【００３０】
実開平６−４８０５１号公報「ＩＣカード」には、１チップ単位でのみ消去可能なメモリ、複数チップからなる半導体メモリと、バイト単位で消去可能な半導体メモリを用い、１チップ単位でのみ消去可能なメモリに書き込まれているファイルに関する情報がバイト単位で消去可能な半導体メモリに書き込まれたＩＣカードの一例が示されている。
【００３１】
特開平６−２２３５９１号公報「フラッシュＥＥＰＲＯＭのアレイのクリーン・アップ方法」では、従来の再構築動作の対象となるブロックは、消去回数の平均化のため、他の消去ブロックに比べて書き換え回数が少ないブロックが選ばれるかまたは、データを書き込み易くするために、消去状態（無効）のデータが多い消去ブロックが選ばれるものである。
【００３２】
【発明が解決しようとする課題】
しかし、上記従来の構成では、ビット単価を下げるために、近年、１個のメモリセルに複数のビット（２ビット、３ビットおよび４ビット）を記憶するようになってきている。これを多値化と呼ぶが、この多値化の場合、１個のメモリセルに多くのビットを記憶する程、データ間の閾値電圧Ｖｔｈの電位差を小さくしなければならないので、その分、保持データが劣化しやすくなり、例えば１０年間のデータ保持ができず、データ保持への信頼性および製品歩留まりの点で問題がある。
【００３３】
本発明は、上記従来の問題を解決するもので、データの劣化が進んでいると判断されるブロックを再構築動作の対象ブロックとしてリフレッシュすることにより、多値化してもその保持データの劣化を防止できて、データ保持への信頼性と製品歩留まりの向上を図ることができるファイルシステムおよびその制御方法を提供することを目的とする。
【００３４】
【課題を解決するための手段】
本発明のファイルシステムは、複数個の消去ブロックによって構成されブロック単位でデータを消去可能とする不揮発性半導体記憶装置に対して、消去ブロックが論理的により小さな記憶領域単位に分割され、消去ブロックおよび記憶領域単位の状態情報を用いてファイルが管理され、かつ消去ブロックに含まれる無効な記憶領域単位を開放するブロックの再構築動作を行うファイルシステムにおいて、消去ブロック毎にブロックを再構築した日付を所定の記憶領域に格納する再構築日付記憶手段と、再構築日付記憶手段にて記憶した日付から一定の期間が経過したブロックを優先的に再構築処理する再構築制御手段とを有したものであり、そのことにより上記目的が達成される。また、本発明のファイルシステムの制御方法は、複数個の消去ブロックによって構成されブロック単位でデータを消去可能とする不揮発性半導体記憶装置に対して、該消去ブロックが論理的により小さく分割された記憶領域単位および消去ブロックの状態情報を用いてファイルを管理するファイルシステムの制御方法において、消去ブロックに含まれる無効な記憶領域単位を開放するブロックの再構築処理は、消去ブロック毎にブロックを再構築した日付を所定の記憶領域に記憶しておき、その日付から一定の期間が経過したブロックを優先的に処理するものであり、そのことにより上記目的が達成される。
【００３５】
また、好ましくは、本発明のファイルシステムにおける再構築制御手段は、日付を基に各ブロック毎に直近に行ったブロックの再構築時からの経過時間を計算する再構築経過時間計算手段と、その計算結果を高速にアクセス可能な記憶領域に表形式で格納する第１計算結果格納手段と、経過時間の計算結果を基に、一定の期間が経過したブロックを、優先的に再構築する第１再構築処理手段とを有する。また、好ましくは、本発明のファイルシステムの制御方法において、各ブロック毎に直近に行ったブロックの再構築時からの経過時間を計算した計算結果を、高速にアクセス可能な記憶領域に表形式で格納しておき、その経過時間の計算結果に基づいて、一定の期間が経過したブロックを、優先的に再構築の対象ブロックとする。
【００３６】
さらに、好ましくは、本発明のファイルシステムにおける再構築制御手段は、ブロックの消去回数を計数する消去回数計数手段と、その計算結果を高速にアクセス可能な記憶領域に表形式で格納する第２計算結果格納手段と、第２計算結果格納手段にて記憶する消去回数が多いほど、日付を基に予め定められる一定の短い周期でかつ優先的に再構築する第２再構築処理手段とを有する。また、好ましくは、本発明のファイルシステムの制御方法において、消去回数が多いブロックほど、日付を基に予め定められる一定の短い周期でかつ優先的に再構築の対象ブロックとする。
【００３７】
さらに、好ましくは、本発明のファイルシステムにおける再構築制御手段は、ブロックの消去回数を計数する消去回数計数手段と、日付を基に各ブロック毎に直近に行ったブロックの再構築時からの経過時間を計算する再構築経過時間計算手段と、その消去回数および経過時間を、高速にアクセス可能な記憶領域に表形式で格納する第３計算結果格納手段と、消去回数および経過時間からパラメータを算出するパラメータ計算手段と、パラメータ計算手段で計算した計算結果を、高速にアクセス可能な記憶領域に表形式で格納するパラメータ格納手段と、このパラメータに基づいて、一定の期間が経過したブロックを優先的に再構築する第３再構築処理手段とを有する。また、好ましくは、本発明のファイルシステムの制御方法において、ブロックの消去回数と、日付を基に各ブロック毎に直近に行ったブロックの再構築時らの経過時間とから算出した計算結果を、高速にアクセス可能な記憶領域に表形式で格納し、計算結果を基に、一定の期間が経過したブロックを優先的に再構築の対象ブロックとする。
【００３８】
さらに、好ましくは、本発明のファイルシステムにおける再構築制御手段は、電源投入時、システムリセットからの復帰時、再構築動作を一定期間行わなかった場合の少なくとも何れかのときに、再構築動作を優先的に行う。
【００３９】
さらに、好ましくは、本発明のファイルシステムにおける再構築制御手段は、メモリセルの特性が劣化したことを検出するメモリセル特性劣化検出手段を有し、該メモリセル特性劣化検出手段がメモリセル特性の劣化を検出した場合に、その劣化が検出されたメモリセルを含む記憶領域単位および消去ブロックに対して再構築動作を優先的に行う。
【００４０】
さらに、好ましくは、消去回数と再構築年月から求めた計算結果として１０の乗数で表し、その計算式に乗数を用いる。また、好ましくは、前記不揮発性半導体記憶装置のメモリセルに多値を記憶させる。
【００４１】
さらに、好ましくは、本発明のファイルシステムにおける再構築日付記憶手段は、実際に存在する記憶領域単位番号を超える番号の状態情報記録領域に再構築日付を記憶させる。
【００４２】
さらに、好ましくは、本発明のファイルシステムにおける再構築制御手段は、実際に存在する記憶領域単位番号を超える番号の状態情報記録領域に、再構築時からの経過時間、消去回数および、これらから得たパラメータの少なくとも何れかを記憶させる。
【００４３】
さらに、好ましくは、本発明のファイルシステムにおいて、実際に存在する記憶領域単位番号を超える番号の状態情報記録領域に使用不可な物理ブロック番号を記憶する。
【００４４】
さらに、好ましくは、本発明のファイルシステムにおいて、使用不可な物理ブロック番号を高速にアクセス可能な記憶領域に記憶する。
【００４５】
上記構成により、以下、その作用を説明する。再構築の対象となるブロックとして、データ劣化、即ち、前述のように、メモリセルの酸化膜が劣化し、保持しているデータの信頼性が低下した状態が起きたブロックも考慮に入れる。具体的には、他の消去ブロックに比べて、消去状態（無効）のデータが多いブロックが選ばれるだけではなく、データ劣化が進んでいる（または、データ劣化が進んでいる可能性がある）ブロックも再構築の対象ブロックとする。より具体的には、ブロック構築時の日付（年月）をブロックの一部に書き込む。一般的に、書換え回数が多いほど、酸化膜トラップの発生や酸化膜の劣化がすすみ、一定時間が経てば再構築動作の対象とする。または、ブロック消去回数とブロック構築時の日付（年月）をブロックの一部に書き込む。一般的に、書き換え回数が多いほど、酸化膜トラップの発生や酸化膜の劣化がすすみ、リーク電流が増加するので、データの劣化が進みやすいから、書き換え回数が多いブロックほど、より短時間のうちに（優先的に）再構築動作の対象とする。即ち、書き換え回数が多いためデータの劣化が進んでいると考えられるブロック内の有効データをこれより書き換え回数の少ない予備ブロック側へ移す。
【００４６】
また、リフレッシュ機能（またはリフレッシュコマンド）を持つ不揮発性記憶装置の場合には、リフレッシュ要否判定実行の結果、メモリセルの閾値電圧Ｖｔｈが規定値よりも大きく変化していて、メモリセルのリフレッシュが必要と判断された場合には、そのブロックを優先的に再構築動作の対象とする。リフレッシュ機能の一例としては、特開平７−３７３９７号公報があり、ここで言うリフレッシュ機能とは、メモリセルに保持されているデータが「０」か「１」かを判別する基準となるリファレンス電圧を変化させることにより読み出しマージンをチェックし、マージンの少ないメモリセルは劣化が進んでいると判断し、余剰な書き込み動作を行い閾値電圧Ｖｔｈを回復することを示している。
【００４７】
この再構築動作の対象となるブロックは、他の消去ブロックに比べて書き換え回数が少ないブロックが選ばれるか、または、消去状態（無効）のデータが多いブロックが選ばれる。ビット単価を下げるために、近年では１個のメモリセルに複数のビット（２ビット、３ビットや４ビット）を記憶する多値化が行われ、この多値化の場合には、１個のメモリセルに多くのビットを記憶する程、データ間の電位差が小さくなるので、データ保持時間が劣化し（１０年間保持できない）、信頼性と歩留まりの問題が発生するが、データ劣化が起きたブロックや、書き換えた日付（年月）が古いブロック（データ劣化が懸念されるブロック）を再構築動作の対象とするので、特に、微細化プロセスで製造された不揮発性半導体記憶装置や、１個のメモリセルに複数のビット（２ビット、３ビットや４ビット）を記憶する多値化セルのデータ保持特性の劣化（１０年間保持できない）が解消され、信頼性と歩留まりの問題が解消する。
【００４８】
具体的には、各消去ブロック毎にブロックを再構築した日付（年月）を格納する領域を有し、一定の期間が経過したブロックを、再構築の対象とするので、データ保持特性の劣化（１０年間保持できない）が解消され、歩留まりの問題も解消される。
【００４９】
また、各消去ブロック毎に、ブロックを再構築した日付を格納する領域を有し、各ブロック毎の経過時間の計算結果をＲＡＭのような高速メモリ上にテーブルとして格納し、一定の期間が経過したブロックを、再構築の対象とするので、データ保持特性の劣化（１０年間保持できない）が解消され、歩留まりの問題が解消すると共に高速な検索が可能となる。
【００５０】
さらに、各消去ブロック毎に、ブロック消去回数とブロックを再構築した年月を格納する領域を有し、ブロック消去回数が多いほど一定の短い周期で再構築の対象とするので、データ保持特性の劣化（１０年間保持できない）が解消され、歩留まりの問題が解消する。
【００５１】
さらに、各消去ブロック毎に、ブロック消去回数とブロックを再構築した年月を格納する領域を有し、ブロック消去回数と各ブロック毎の経過時間から算出した計算結果をＲＡＭのような高速メモリ上にテーブルとして格納し、一定の期間が経過したブロックを、再構築の対象とするので、データ保持特性の劣化（１０年間保持できない）が解消され、歩留まりの問題が解消する。
【００５２】
さらに、電源投入時、システムリセットから復帰時、さらには、再構築動作を一定期間行わなかった場合などに、優先的に再構築動作の実行を開始することにより、データ保持特性の劣化（１０年幣持できない）が解消され、歩留まりの問題も解消する。
【００５３】
さらに、データ書き換え回数と再構築日付から求めた計算結果（経過時間と消去回数の各条件に応じて量が変化するパラメータ）を記憶するので、ＲＡＭの記憶容量を少なくできる。
【００５４】
さらに、実際に存在するセクタ番号を超える番号のセクタ状態情報記録領域を使うので、記憶領域を無駄にせず有効に利用できる。
【００５５】
さらに、使用不可な物理ブロック番号を記憶するので（データ書き換えできない）不良ブロックを含むフラッシュメモリが使用可能となり、製品歩留まりが上がり、安価になる。また、使用不可な物理ブロック番号をＲＡＭ上に記憶するので、高速な検索が可能となる。
【００５６】
【発明の実施の形態】
以下、本発明のファイルシステムの実施形態１，２について図面を参照しながら説明する。
（実施形態１）
図１は、本発明の実施形態１におけるファイルシステムのシステム構成を示すブロック図である。
【００５７】
図１において、フラッシュ・メモリ・ファイル・システム１（以下ファイルシステム１という）は、ファイルシステム制御部２と、ファイルシステムメモリ部３と、フラッシュメモリ制御部４と、データ格納用のフラッシュメモリ部５とを有しており、消去ブロックおよび記憶領域単位（セクタ）の状態情報を用いてファイルが管理され、かつ消去ブロックに含まれる無効なセクタを開放するブロックの再構築動作を行うものである。
【００５８】
ファイルシステム制御部２は、アプリケーション（またはオペレーティングシステムＯＳ）６から依頼され、ファイルシステム１が行う再構築処理を含む各種データ処理を制御するものである。ファイルシステム制御部２は、本発明の特徴部分として、図２に示すように、消去ブロック毎にブロックを再構築した日付を、所定の記憶領域を持つファイルシステムメモリ部３に格納する再構築日付記憶手段２１と、再構築日付記憶手段２１にて記憶した日付から一定の期間が経過したブロックを優先的に再構築処理する再構築制御手段２２を有している。なお、再構築日付はファイルシステムメモリ部３に格納された後に、フラッシュメモリ制御部４を介してフラッシュメモリ部５の所定の領域（ブロックコントロールセクタのセクタ♯１２８）にも格納される。
【００５９】
この再構築制御手段２２は、日付を基に各ブロック毎に直近に行ったブロックの再構築からの経過時間を計算する再構築経過時間計算手段２２１と、その計算結果を高速にアクセス可能な記憶領域に表形式で格納する第１計算結果格納手段２２２と、経過時間の計算結果を基に、一定の期間が経過したブロックを、優先的に再構築する第１再構築処理手段２２３とを有するものである。
【００６０】
ファイルシステムメモリ部３は、高速にアクセス可能な記憶領域を持ち、ファイルシステム１がその記憶領域に、後述する状態情報（図４〜図６）などの制御情報を格納するために使用するものである。この制御情報としては、上記状態情報の他に、テーブル形式で例えば消去回数および再構築日付、この日付からの経過時間、パラメータ計算結果などを記憶している。
【００６１】
フラッシュメモリ制御部４は、ファイルシステム制御部２によって指示されて、フラッシュメモリ部５ヘの通常のデータ読出し、データ書込みおよびデータ消去、さらには、再構築処理によるデータ読出し、データ書込みおよびデータ消去などの各種データ処理を制御するものである。
【００６２】
フラッシュメモリ部５はデータを記憶するものであり、複数個の消去ブロックによって構成されブロック単位でデータを消去可能とする不揮発性半導体記憶装置であり、ここでは、消去ブロックが論理的により小さなデータ記憶領域単位であるセクタに分割されている。以下、図３を用いて詳細に説明する。
【００６３】
図３は、図１のフラッシュメモリ部５に格納されているデータ構成図である。図３に示すように、フラッシュメモリの各消去ブロックは、データの取り扱い単位であるセクタに分割されて配置されており、各消去ブロックのサイズが６４キロバイトで、各セクタのサイズが５１２バイトであるとした場合、各消去ブロックには１２８個のセクタ（図３ではブロックコントロールセクタとセクタ＃１〜セクタ＃１２７のデータ領域）が存在することになる。
【００６４】
ここで、フラッシュメモリの複数個ある消去ブロックのうち、任意の１個の消去ブロックを、ファイルシステム１の再構築用の予備ブロック（データが消去されフォーマットされたブロック）とする。
【００６５】
複数個ある消去ブロックはアドレスの小さい方から大きい方に向かって、０、１、２、．．．と物理ブロック番号が割り当てられる。また、上記セクタ＃１からセクタ＃１２７として付された番号を物理セクタ番号と称する。物理ブロック番号と物理セクタ番号はハードウェアで一意的に定められ、原則として、固定した値を持つものとする。なお、論理ブロック番号と論理セクタ番号はファイルシステムの効率的な管理上設けられた番号であり、その値は変化し得る。
【００６６】
消去ブロックのセクタのうち、先頭部分に存在するセクタ１個を、該当ブロックの制御情報を格納するセクタ（以下、ブロックコントロールセクタと呼ぶ）として、予め確保する。
【００６７】
このブロックコントロールセクタは、先頭から、該当消去ブロック自身の状態情報２バイト、該当消去ブロック内のセクタ＃１の状態情報２バイト、以下、セクタ＃１２７の状態情報２バイトが配置され、２バイト×１２８個＝２５６バイトの情報を有している。残りの２５６バイト部（図２のセクタ＃１２８以降の状態情報）には、再構築年月（日付）などが記憶される。
【００６８】
該当消去ブロック自体の状態情報は、ファイルステム制御部２が割り当てを行う０〜２５５の論理ブロック番号、および現在のブロック状態として、（１）１１１１１１１１ｂ：未使用、（２）１１１１１１１０ｂ：データ転送中、（３）１１１１１１００ｂ：元ブロック消去中、（４）１１１１１０００ｂ：データ有り、（５）１１１１００００ｂ：ブロックフルの５つの状態を有する。
【００６９】
該当消去ブロック内のセクタの状態情報は、上記該当消去ブロック自身の状態情報と同様に、ファイルシステム制御部２が割り当てを行う０〜４０９５の論理セクタ番号、および現在のセクタ状態として、（Ｉ）１１１１ｂ：未使用、（ＩＩ）１１１０ｂ：データ書き込み中、（ＩＩＩ）１１００ｂ：データ書き込み完了、（ＩＶ）１０００ｂ：データ有効、（Ｖ）００００ｂ：データ無効、の５つの状態を有する。
【００７０】
前述したように、図３のセクタ＃１２７状態情報を越える部分（セクタ＃１２８）には、該当ブロックの直近の再構築年月日時（または年月）を記憶する。例えば、再構築年月日時を記憶するには、例えば「１９９９１１１２２０」で１９９９年１１月１２日２０時を表す構成とする。再構築年月を記憶するには、例えば「１９９９１１」で１９９９年１１月を表す構成とする。または、２０００年以降は、例えば「０００１１」で２０００年１１月を表し、例えば「００１１２」で２００１年１２月を表すものとする。更に簡略化めために、２０００年以降は、例えば「００１１」で２０００年１１月を表し、例えば「０１１２」で２００１年１２月を表すようにしてもよい。
【００７１】
図４は、図１のファイルシステムメモリ部３（ＲＡＭ）に格納されている各消去ブロックに関するデータ構成図（以下、ブロック情報表と呼ぶ）である。図４では、物理ブロック番号、論理ブロック番号、およびブロック状態を１つの単位としたブロック情報を有しており、具体的には、「物理ブロック番号＝０、論理ブロック番号＝０、ブロック状態＝データ有り」である消去ブロック、また、「物理ブロック番号＝１、論理ブロック番号＝１、ブロック状態＝データフル（ブロックフル）」である消去ブロックなどが存在することを示している。
【００７２】
図５は、図１のファイルシステムメモリ部３（ＲＡＭ）に格納されている各セクタに関するデータ構成図（以下、セクタ情報表１と呼ぶ）である。図５では、物理ブロック番号、物理セクタ番号、論理セクタ番号および、セクタ状態を１つの単位とした情報を有しており、具体的には、「物理ブロック番号＝０、物理セクタ番号＝０、論理セクタ番号＝１００、セクタ状態＝データ有効」である物理セクタ、また、「物理ブロック番号＝０、物理セクタ番号＝１、物理セクタ＝１０、セクタ状態＝データ無効」である物理セクタなどが存在することを示している。
【００７３】
図６は、図１のファイルシステムメモリ部３（ＲＡＭ）に格納されている各消去ブロック毎の各セクタ状態数に関するデータ構成図（以下、セクタ情報表２と呼ぶ）である。図６では、物理ブロック番号、未使用セクタ数、データ有効セクタ数、データ無効セクタ数および、再構築年月を１つの単位とした情報を有しており、具体的には、「物理ブロック番号＝０、未使用セクタ数＝１００、データ有効セクタ数＝２０、データ無効セクタ数＝７、再構築年月０００１０（２０００年１０月）」である消去ブロック、また、「物理ブロック番号＝１、未使用セクタ数＝０、データ有効セクタ数＝５０、データ無効セクタ数＝７７、再構築年月００１１２（２００１年１２月）」である消去ブロックなどが存在することを示している。
【００７４】
以上の図４のブロック情報表、図５のセクタ情報表１および図６のセクタ情報表２は、ファイルシステム１が起動する段階において、フラッシュメモリ部５から、上記ブロックコントロールセクタと、図３のセクタ＃１２８以降の状態情報を読み出すことによってそれぞれ、ファイルシステムメモリ部３（ＲＡＭ）に作成される。ブロック情報表、セクタ情報表１およびセクタ情報表２をＲＡＭ部に作成しない場合においても、ファイルシステム１を使用することは可能であるが、データをやりとりする速度が、フラッシュメモリ部５とのデータのやり取りよりも高速であるという利点がある。
【００７５】
上記構成により、以下、その動作を説明する。
【００７６】
図７は、図１のファイルシステムメモリ部５に格納された制御データの読出し処理に関するフローチャート図である。
【００７７】
図７に示すように、フラッシュメモリ部５に格納されたデータ読出し要求が発生した場合、このデータ読出し要求は、図１のアプリケーション（またはオペレーティングシステムＯＳ）６からファイルシステム制御部２に対して、読出しすべき論理セクタ番号が与えられ、ファイルシステム制御部２は、ファイルシステムメモリ部３（ＲＡＭ）に記憶されたセクタ情報表１から、読み出すべきデータが格納されたセクタの、セクタ状態が「データ有効」である論理セクタ番号を検索し、該当セクタのフラッシュメモリ部５における物理的な格納場所（物理セクタ番号）を取得する（ステップＳ１２１）。フラッシュメモリ制御部４は、取得した物理的な格納場所のセクタ読出しを行う（ステップＳ１２２）。さらに、ファイルシステム制御部２は、読み出すべきデータがまだあるかどうかを判断し（ステップＳ１２３）、読み出すべきデータがまだある場合にはステップＳ１２１に戻り、読み出すべきデータがない場合には処理を終了する。
【００７８】
次に、フラッシュメモリ部５へのデータ書込み要求が発生した場合には、このデータ書込み要求は、図１のアプリケーション（またはオペレーティングシステムＯＳ）６からファイルシステム制御部２に対して、書き込むデータが与えられ、ファイルシステム制御部２は、ファルシステムメモリ部３（ＲＡＭ）に記憶された、セクタ情報表２から、未使用セクタ数が最も多い物理ブロック番号を取得し、その物理ブロック番号を取得できたかどうかの確認を行う。書き込み可能なブロックが取得できなかった場合には、書き込み領域を確保するためにファイルシステム１の再構築処理を行う。
【００７９】
このように、フラッシュメモリ部５へのデータの書き込み要求が発生したが、データの書き込みが可能なセクタが取得できなくなった場合、即ち、無効セクタが多く未使用セクタがなくなった場合には、アプリケーション６（オペレーティングシステムＯＳ）からファイルシステム１の再構築の要求が発生し、ファイルシステム制御部２で再構築動作の制御が行われる。以下、この再構築動作の制御について説明する。
【００８０】
図８および図９は、図１のファイルシステム１の再構築処理に関するフローチャート図、図１０および図１１は図８および図９の再構築処理中におけるデータの変化（操作）を示すデータ構成図である。なお、前述した図４〜図６に示したようなブロックおよびセクタに関する状態情報を有するテーブルや図３に示したデータ構成に類似した状態情報を用いてファイルシステム１を構築する方法が、特願平１１−２５４９７３号に示されている。ここでは、その代表的な図１２（本発明の図３に相当）、図１３（本発明の図６に相当）を参考例として示している。本発明においては、図１２と比較すれば判るが、図３に示すように「セクタ＃１２８以降の状態情報」が追加され、また、図１３と比較すれば判るが、図６に示すように「再構築年月」が追加されている。ここでは、この追加した点（本発明の特徴部分）を中心に説明し、前述したブロック状態情報やセクタ状態情報のアプリケーション６（またはオペレーティングシステムＯＳ）からの利用方法等の詳細は特願平１１−２５４９７３号に準ずるものとして、ここではその詳細な説明を省略する。
【００８１】
図１０では、再構築の対象となるブロックをブロック＃０、予備ブロックをブロック＃ｎとしている。まず、セクタ情報表２から再構築年月が一定期間経過している物理ブロック番号、次にブロック情報表からこの物理ブロック番号に対応する論理ブロック番号を取得する（ステップ１５１；Ａ１，Ａ２）。ただし、一定期間経過したものがない場合には、データ無効セクタ数が最も多い物理ブロック番号、および論理ブロック番号を取得するものとする。以下これらのブロック番号を再構築対象物理ブロック番号および再構築対象論理ブロック番号と呼ぶ。
【００８２】
次に、予備ブロック、即ち、ファイルシステム１の再構築用に予め未使用状態（消去状態）で確保しておいたブロックの論理ブロック番号を再構築対象論理ブロック番号に更新する（Ａ３）と共に、ブロック状態を「未使用」から「データ転送中」へ更新する（Ａ４）。なお、予備ブロックはその論理ブロック番号が後述するように「１１１１１１１１ｂ」であることからブロック情報表を検索することにより特定できる。同様に、ブロック情報表においても予備ブロックの論理ブロック番号を再構築対象論理ブロック番号に更新し（Ａ５）、ブロック状態を「未使用」から「データ転送中」に更新する（Ａ６）。
【００８３】
さらに、再構築対象物理ブロック番号を持つブロックに含まれる有効セクタのデータを予備ブロックヘコピーする。ここでは、コピー動作を効率よく行うために、セクタ情報表１から再構築対象物理ブロック番号を持つセクタのうち、セクタ情報が「データ有効」であるものを検索し、その物理セクタ番号を取得する（ステップ１５３、Ａ７）。
【００８４】
セクタ状態が「データ有効」である場合は、再構築対象物理ブロック番号を持つブロックに格納されているＡ７で取得した物理セクタ番号を持つブロックコントロールセクタ内のセクタ状態情報とデータ領域内のデータを、各々予備ブロックの同じ物理セクタを持つセクタ情報とデータ領域にコピーする（Ａ８，Ａ９）。
【００８５】
さらに、セクタ状態情報表１の更新を行う。即ち、セクタ情報表１から再構築対象物理ブロック番号を持つＡ７で取得した物理セクタ番号に対応する論理セクタ番号およびセクタ状態（「データ有効」）を各々予備ブロックの物理ブロック番号を持つＡ７で取得したものと同じ物理セクタ番号に対応する論理セクタ番号およびセクタ状態ヘコピーする（Ａ１０，Ａ１１）。
【００８６】
以上でセクタ状態が「データ有効」である１つのセクタのデータおよびそのセクタに付随する情報が再構築対象ブロックから予備ブロックヘコピーされる。再構築対象ブロックに含まれるセクタ状態が「データ有効」である全てのセクタをコピーするために、セクタ状態情報表１から再構築対象物理ブロック番号のブロックに、まだ残りのセクタがあるかどうかの確認を行い（ステップ１５６）、残りのセクタがある場合には、ステップ１５３へ戻り、残りのセクタがなくなるまで上記の処理を実行する。
【００８７】
次に、セクタ情報表２の更新、再構築対象ブロックの消去およびそれに伴う状態情報の更新を行う。即ち、セクタ情報表２の再構築対象物理ブロックのデータ有効セクタ数を予備ブロックのデータ有効セクタ数にコピーし（Ａ１２）、また，再構築年月にこの再構築動作を行った年月を記入する（ステップ１５７、Ａ１３）。
【００８８】
未使用セクタ数はブロックに含まれるセクタの総数からデータ有効セクタ数を減算した値を記入する（Ａ１４）。
【００８９】
データ無効セクタ数は再構築直後は「０」である。次に、再構築対象ブロックの消去に控え、予備ブロックに格納されるブロックコントロールセクタ内のブロック状態情報中のブロック状態を「データ転送中」から「元ブロック消去中」へ更新し（Ａ１５）、対応するブロック情報表のブロック状態も同様に「データ転送中」から「元ブロック消去中」へ更新する（ステップ１５８、Ａ１６）。
【００９０】
また、予備ブロックに格納されるセクタ＃１２８以降の状態情報にもＡ１３と同様に再構築年月を記入しておく（Ａ１７）。
【００９１】
ここで、実際に再構築対象ブロックの消去動作を行う（ステップ１５９）。消去動作が完了すると、予備ブロックに格納されるブロックコントロールセクタ内のブロック状態情報中のブロック状態を「元ブロック消去中」から「データ有り」へ更新し（Ａ１８）、ブロック情報表の予備ブロックのブロック状態も同様に「元ブロック消去中」から「データ有り」へ更新する（ステップ１６０、Ａ１９）。
【００９２】
消去動作によって、ブロック内の全てのデータは「１」となるので、あるブロックに格納されるブロック状態情報内の論理ブロック番号が「１１１１１１１１ｂ」のブロックを予備ブロックであると定義することにより、消去動作により、再構築対象ブロックは自動的に予備ブロックとなり、またブロックコントロールセクタ内のブロック情報も自動的に「未使用；１１１１１１１１ｂ」になる。
【００９３】
また、ブロック情報表（図４）、セクタ情報表１（図５）、およびセクタ情報表２（図６）のステップ１５９で消去したブロック番号の各項目は、そのブロックが自動的に予備ブロックとなり、フラッシュメモリ部５へのデータの書き込みや読み出しにおいて参照されることがないため、更新は不要である。以上で再構築動作が終了する。
【００９４】
なお、本実施形態１においては、ファイルシステム１の再構築の処理は、消去ブロック１つを消去する場合を示したが、この一連の再構築処理を複数回実行することも可能である。
【００９５】
また、ファイルシステム１が、複数個のフラッシュメモリにより構成される場合においては、１個のフラッシュメモリ毎に任意の１個の消去ブロックをファイルシステム１の再構築用の予備ブロックとして、予め確保しておくのではなく、複数個のフラッシュメモリに対して、１個の予備ブロックを確保する構成にしてもよい。この場合には、確保する予備ブロックの数を少なくできるという利点がある。
（実施形態２）
上記実施形態１では、図３のセクタ＃１２８状態情報以降に、該当ブロックの直近の再構築日付（例えば年月）を記憶し、それを用いて再構築処理を行う場合を示したが、本実施形態２は、図３のセクタ＃１２８状態情報以降に、該当ブロックの直近の再構築日付（例えば年月）の他に、該当ブロックの消去回数をも記憶し、それらを用いて再構築処理を行う場合である。
【００９６】
図１４は、本発明の実施形態２におけるファイルシステムのファイルシステム制御部の機能構成を示すブロック図である。図１４において、ファイルシステム制御部２Ａは、再構築日付記憶手段２１Ａと、再構築制御手段２２Ａとを有している。再構築制御手段２２Ａは、ブロックの消去回数を計数する消去回数計数手段２２１Ａと、各ブロック毎に直近に行ったブロックの再構築日付からの経過時間を計算する再構築経過時間計算手段２２２Ａと、その消去回数および経過時間を、高速にアクセス可能な記憶領域を持つファイルシステムメモリ部３に表形式で格納する第３計算結果格納手段２２３Ａと、消去回数および経過時間から所定のパラメータ（経過時間と消去回数の各条件に応じて変化する量）を算出するパラメータ計算手段２２４Ａと、このパラメータ計算手段２２４Ａで計算した計算結果を、高速にアクセス可能な記憶領域を持つファイルシステムメモリ部３に表形式で格納するパラメータ格納手段２２５Ａと、このパラメータに基づいて再構築処理を行う第３再構築処理手段２２６Ａとを有するものである。
【００９７】
図１５は、図１４のファイルシステムメモリ部３に格納されている、各消去ブロック毎の各セクタ状態に関するデータの構成図（上記セクタ情報表２の他の例）である。図１５において、物理ブロック番号、未使用セクタ数、データ有効セクタ数、およびデータ無効セクタ数、再構築日時、消去回数を１つの単位としたテーブル情報を有している。図１５では、上記実施形態１で示した図６と同様に、例えば物理ブロック番号＝０、未使用セクタ数目１００、データ有効セクタ数＝２０、データ無効セクタ数＝７、である消去ブロックを示し、また、例えば物理ブロック番号＝１、未使用セクタ数＝０、データ有効セクタ数＝５０、データ無効セクタ数＝７７を示している。さらに、図１５では、図６の再構築年月の他に、記憶領域が増加するが、消去回数をも記憶している。この消去回数は１００００で一万回を表している。
【００９８】
消去回数（または書き換え回数）と再構築年月から求めた計算結果（経過時間と消去回数の各条件に応じて量が変化するパラメータ）を記憶する方が記憶容量を小さくできることに着目し、現在の年月が２００１年１０月であり、該当ブロックの再構築日が１９９９年１２月で、消去回数が２１０２回であれば、年だけを考慮して、
２００１年〜１９９９年＝２年
消去回数は１０の乗数で表し、２１０２＝約２×１０の３乗を計算結果としてＲＡＭ（ファイルシステムメモリ部３）上に、２年と３乗と約２を下記のようにパラメータとして「０２３２」と記憶する。これによって、年と回数を３桁で表すことが可能になる。
【００９９】
再構築処理をするかどうかの判定方法としては、直近の再構築処理時から１年以内であれば、消去回数が  ７００００回以上、即ち、００４７以上を再構築の対象とし、直近の再構築処理時から１年であれば、消去回数が５００００回以上、即ち、「０１４５」以上を再構築の対象とし、直近の再構築処理時から２年であれば、消去回数が２００００回以上、即ち、「０２４２」以上を再構築の対象とし、直近の再構築処理時から３年であれば、消去回数が７０００回以上、即ち、「０３３７」以上を再構築の対象とし、直近の再構築処理時から４年であれば、消去回数が５０００回以上、即ち、「０４３５」以上を再構築の対象とし、直近の再構築処理時から５年であれば、消去回数が２０００回以上、即ち、「０５３２」以上を再構築の対象とし、直近の再構築処理時から６年であれば、消去回数が７００回以上、即ち、「０６２７」以上を再構築の対象とし、直近の再構築処理時から７年であれば、消去回数が５００回以上、即ち、「０７２５」以上を再構築の対象とし、直近の再構築処理時から８年であれば、消去回数が２００回以上、即ち、「０８２２」以上を再構築の対象とし、直近の再構築処理時から９年であれば、消去回数が７０回以上、即ち、「０９１７」以上を再構築の対象とし、直近の再構築処理時から１０年以上であれば、消去回数が５０回以上、即ち、１０１５以上を再構築の対象とする。
【０１００】
フラッシュメモリ部５へのデータの書き込み要求が発生したが、データの書き込みが可能なセクタが取得できなくなった場合には、ファイルシステム１の再構築の要求が発生し、図８において、図１５のセクタ情報表２から、まず、消去回数と、経過時間との計算結果が、データ保証に必要な上記一定値（パラメータ）を超えた物理ブロック番号、および論理ブロック番号を取得する（ステップ１５１）。また、一定期間経過したものがない場合には、データ無効セクタ数が最も多い物理ブロック番号、および論理ブロック番号を取得する（ステップ１５１）。
【０１０１】
従来は、再構築動作の対象となるブロックは、他の消去ブロックに比べて書き換え回数が少ないブロックが選ばれるか、または、消去状態（無効）のデータが多いブロックが選ばれる。ビット単価を下げるために、近年では、１個のメモリセルに複数のビット（２ビット、３ビットや４ビット）を記憶するようになってきた（多値化と呼ぶ）。しかし、多値化の場合には、１個のメモリセルに多くのビットを記憶する程、データ間の閾値電圧Ｖｔｈの電位差が小さくなるので、保持データが劣化し、データ保持時間として１０年間の保持もできない。これによって、データ保持の信頼性と製品歩留まりの問題が発生する。これに対して、上記実施形態１，２に代表される本発明によれば、データ劣化を起きたブロックや、書き換えた日付（年月）が古いブロック（データ劣化が懸念されるブロック）を再構築動作の対象とするので、特に、微細化プロセスで製造された不揮発性半導体記憶装置や、１個のメモリセルに複数のビット（２ビット、３ビットや４ビット）を記憶する多値化したセルのデータ保持特性の劣化（１０年間保持できない）を解消でき、データ保持の信頼性と製品歩留まりの上記問題を解消することができる。
【０１０２】
以上のように、更にその効果を説明すると、上記実施形態１の再構築動作として、
（ａ）前回再構築動作が行われてから、別途定める一定時間を経過していた場合、データの劣化が発生しているから、データのリフレッシュを行うために、再構築を行う。これによって、多値化してもその保持データの劣化を防止できて、データ保持への信頼性と歩留まり向上を図ることができる。
【０１０３】
さらに、よりきめ細かな対応としては、本実施形態２の再構築動作として、
（ｂ）書き換え回数が多いほど、データ保持特性が劣化するから、書き換え回数が多いほど、前回再構築動作が行われてから、別途定めるより短い時間を経過した場合に、データのリフレッシュを行うために、再構築を行う。具体例としては、書き換え回数と経過時間との計算結果が一定値を越えた場合に、再構築を行うようにする。これによって、多値化してもその保持データの劣化を防止できて、データ保持への信頼性と歩留まり向上を図ることができる。
【０１０４】
なお、上記実施形態１として、図３のセクタ＃１２８状態情報以降に、該当ブロックの直近の再構築年月を記憶させ、上記実施形態２として、図３のセクタ＃１２８状態情報以降に、該当ブロックの直近の再構築年月の他に、該当ブロックの消去回数を記憶させたが、これに限らず、実施形態３として、図３のセクタ＃１２８状態情報以降に、該当ブロックの消去回数だけを記憶させ、それを用いて再構築処理を行っても、多値化してもその保持データの劣化防止ができて、データ保持への信頼性と歩留まり向上を図ることができる本発明の効果を奏する。この場合に、再構築制御手段は、ブロックの消去回数を計数する消去回数計数手段と、その計算結果を高速にアクセス可能な記憶領域に表形式で格納する第２計算結果格納手段と、この第２計算結果格納手段にて記憶する消去回数が多いほど、日付を基に予め定められる一定の短い周期でかつ優先的に再構築する第２再構築処理手段とを有するように構成すればよい。
【０１０５】
また、上記実施形態１，２以外の例としては、リフレッシュコマンドを持つフラッシュメモリの場合には、メモリセルが劣化し、メモリセルの閾値電圧Ｖｔｈを回復するために、リフレッシュ必要と判断されたブロックには、次回の再構築動作の対象とするために、上述の図１５のセクタ情報表２の書き換え回数（消去回数）と経過時間との計算結果（パラメータ計算結果）を記録する場所に、上記一定値以上の値（例えば９９９９）を記録し、次回の再構築時に優先的に再構築の対象となるようにすることもできる。
【０１０６】
さらに、上記実施形態１，２以外の例としては、書き換えできない不良ブロックや、消去回数（または書き換え回数）が規定値（例えば、デバイス仕様書が保証する書き換え回数）を超えたブロックは、図１６のように、ブロック状態を使用禁止（データ記録に使わないブロック）とする。そして、図３のセクタ＃１２８以降の状態情報の領域に使用禁止ブロック番号を記録する。
【０１０７】
さらに、他の例として、本発明の不揮発性半導体記憶装置に電源の投入を検出する電源電圧検出回路を設け、電源投入の検出時に前述した再構築動作を起動するようにしても良い。また、更に他の例として、システムリセットからの復帰時にも前述した再構築動作を起動するようにしてもよい。
【０１０８】
【発明の効果】
以上のように、本発明によれば、各消去ブロック毎にブロックを再構築した日付（年月）を格納する領域を有し、直近の再構築日付から一定の期間が経過したブロックを、再構築の対象とするため、データ保持特性の劣化（１０年間保持できない）を解消することができ、製品歩留まりの問題を解消することができる。
【０１０９】
また、各消去ブロック毎にブロックを再構築した日付（年月）を格納する領域を有し、各ブロック毎の直近の再構築日付からの経過時間の計算結果を、高速にアクセス可能な記憶領域上に表形式（テーブル）として格納し、直近の再構築日付から一定の期間が経過したブロックを、再構築の対象とするため、高速な検索ができてデータ保持特性の劣化（１０年間保持できない）を解消でき、製品歩留まりの問題を解消することができる。
【０１１０】
さらに、各消去ブロック毎に、ブロック消去回数とブロックを再構築した日付（年月）を格納する領域を有し、ブロック消去回数が多いほど一定の短い周期で再構築の対象とするため、データ保持特性の劣化（１０年間保持できない）を解消でき、データ保持の信頼性と製品歩留まりの問題を解消することができる。
【０１１１】
さらに、各消去ブロック毎にブロック消去回数とブロックを再構築した日付（年月）とを格納する領域を有し、ブロック消去回数と各ブロック毎の経過時間とから算出した計算結果を、高速にアクセス可能な記憶領域上に表形式（テーブル）として格納し、直近の再構築日付から一定期間が経過したブロックを、再構築の対象とするため、データ保持特性の劣化（１０年間保持できない）を解消でき、データ保持の信頼性と製品歩留まりの問題を解消することができる。この場合、高速にアクセス可能な記憶領域上のデータを削減可能であるという利点がある。
【０１１２】
さらに、電源投入時、システムリセットから復帰時、さらには再構築動作を一定期間行わなかった場合に、優先的に再構築動作の実行を開始すれば、データ保持特性の劣化（１０年間保持できない）を解消でき、データ保持の信頼性と製品歩留まりの問題を解消することができる。
【０１１３】
さらに、メモリセルが劣化しその劣化した特性を回復する動作、即ちリフレッシュ動作を要する場合にも再構築動作を行うことにより、データ保持特性の劣化（１０年間保持できない）を解消でき、製品歩留まりの問題を解消することができる。
【０１１４】
さらに、書換え回数（消去回数）と再構築日付から求めた計算結果を記憶するため、記憶容量を削減することができる。
【０１１５】
さらに、実際に存在するセクタ番号を超える番号のセクタ状態情報記録領域を書換え回数（消去回数）や再構築日付の記録用に使うため、記憶領域を有効に利用できる。
【０１１６】
さらに、使用不可な物理ブロック番号を記憶するため、書き換えできない不良ブロックを含むフラッシュメモリが使用可能となり、製品歩留まりが上がり、安価になる。
【０１１７】
さらに、使用不可な物理ブロック番号を、高速にアクセス可能な記憶領域上に記憶するため、高速な検索をすることができる。
【図面の簡単な説明】
【図１】本発明の実施形態１におけるファイルシステムのシステム構成を示すブロック図である。
【図２】図１のファイルシステム制御部の機能構成を示すブロック図である。
【図３】図１のフラッシュメモリ部に格納されているデータ構成図である。
【図４】図１のファイルシステムメモリ部に格納されているブロック情報表に関するデータ構成図である。
【図５】図１のファイルシステムメモリ部に格納されているセクタ情報表１に関するデータ構成図である。
【図６】図１のファイルシステムメモリ部に格納されているセクタ情報表２に関するデータ構成図である。
【図７】図１のファイルシステムメモリ部に格納された制御データの読出し処理に関するフローチャート図である。
【図８】図１のファイルシステムの再構築処理（その１）に関するフローチャート図である。
【図９】図１のファイルシステムの再構築処理（その２）に関するフローチャート図である。
【図１０】図８および図９の再構築処理中におけるデータの変化（その１）を示すデータ構成図である。
【図１１】図８および図９の再構築処理中におけるデータの変化（その２）を示すデータ構成図である。
【図１２】従来のフラッシュメモリ部に格納されているデータ構成図である。
【図１３】図１２のファイルシステムメモリ部に格納されているセクタ情報表２に関するデータ構成図である。
【図１４】本発明の実施形態２におけるファイルシステムのファイルシステム制御部の機能構成を示すブロック図である。
【図１５】図１のファイルシステムメモリ部に格納されている、各消去ブロック毎の各セクタ状態に関するデータ構成図である。
【図１６】本発明のファイルシステムメモリ部に格納されているブロック情報表に関するデータ構成図である。
【図１７】浮遊ゲート型電界効果トランジスタ構造を有したメモリセルの構成図である。
【図１８】１個のメモリセルに２値（１ビット）を記憶する場合の閾値電圧分布を示す図である。
【図１９】（１）〜（３）は従来の再構築動作を順次模式的に示すと図である。
【符号の説明】
１    ファイルシステム
２，２Ａ    ファイルシステム制御部
２１，２１Ａ    再構築日付記憶手段
２２，２２Ａ    再構築制御手段
２２１，２２２Ａ    再構築経過時間計算手段
２２２    第１計算結果格納手段
２２３    第１再構築処理手段
２２１Ａ    消去回数計数手段
２２３Ａ    第３計算結果格納手段
２２４Ａ    パラメータ計算手段
２２５Ａ    パラメータ格納手段
２２６Ａ    第３再構築処理手段
３    ファイルシステムメモリ部
４    フラッシュメモリ制御部
５    フラッシュメモリ部
６    アプリケーション（またはオペレーティングシステムＯＳ）
【図１】
0003812933.tif 000002
【図２】
0003812933.tif 000003
【図３】
0003812933.tif 000004
【図４】
0003812933.tif 000005
【図５】
0003812933.tif 000006
【図６】
0003812933.tif 000007
【図７】
0003812933.tif 000008
【図８】
0003812933.tif 000009
【図９】
0003812933.tif 000010
【図１０】
0003812933.tif 000011
【図１１】
0003812933.tif 000012
【図１２】
0003812933.tif 000013
【図１３】
0003812933.tif 000014
【図１４】
0003812933.tif 000015
【図１５】
0003812933.tif 000016
【図１６】
0003812933.tif 000017
【図１７】
0003812933.tif 000018
【図１８】
0003812933.tif 000019
【図１９】
0003812933.tif 000020