(57)【要約】【課題】  フラッシュメモリが備えた消去状態チェック機能を利用することにより、書込みに伴う処理時間が長くなるのを抑えつつ、信頼性の高いデータ書込みを行なうことができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法を提供する。【解決手段】  フラッシュメモリにデータの書込みを行なうときに、データの書込み先となるブロックに対して消去処理を行ない、前記消去処理の終了後にフラッシュメモリが生成する消去ステータスを取得し、取得した前記消去ステータスが、正常な消去状態を示す情報であったときに、前記消去処理が行なわれたブロックに対してデータの書込み処理を行なう。【選択図】図８
2005141418.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリにデータを書込む書込み手段と、
フラッシュメモリからデータを読出す読出し手段と、
フラッシュメモリに書込まれているデータを消去する消去手段と、
フラッシュメモリに書込まれているデータを消去したときにフラッシュメモリが生成する消去ステータスを取得するステータス取得手段と、を備え、
取得した前記消去ステータスが正常な消去状態に該当するときだけ、該消去ステータスに係る消去済ブロックに対するデータの書込みが開始されるように構成されていることを特徴とするメモリコントローラ。
【請求項２】
データの書込み先となるブロックの候補を設定する候補ブロック設定手段を備えることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
ブロックのユーザ領域に書込まれているデータが無効であることを示す無効フラグを、冗長領域に設定する無効フラグ設定手段を備え、前記候補ブロック設定手段が、冗長領域に前記無効フラグが設定されているブロックを、データの書込み先の候補に設定することを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
消去済ブロックに対する読出し処理に基づき、消去状態を診断する診断手段を備え、該診断手段と前記ステータス取得手段のいずれか一方の手段によって、正常な消去状態であると判断された消去済ブロックに対して、データの書込みが開始されるように構成されていることを特徴とする請求項１乃至３のいずれか１項に記載のメモリコントローラ。
【請求項５】
請求項１乃至４記載のいずれか１項記載のメモリコントローラと、前記消去ステータスを生成するステータス生成手段を有するフラッシュメモリと、を備えることを特徴とするフラッシュメモリシステム。
【請求項６】
フラッシュメモリにデータの書込みを行なうときに、データの書込み先となるブロックに対して消去処理を行ない、
前記消去処理の終了後にフラッシュメモリが生成する消去ステータスを取得し、
取得した前記消去ステータスが、正常な消去状態を示す情報であったときに、
前記消去処理が行なわれたブロックに対して、データの書込み処理を行なうことを特徴とするフラッシュメモリの制御方法。
【請求項７】
消去済ブロック、又はブロックのユーザ領域に書込まれているデータが無効であることを示す無効フラグが冗長領域に設定されているブロックを、データの書込み先とすることを特徴とする請求項６に記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
近年、メモリカードやシリコンディスクなどのメモリシステムに用いられる半導体メモリとして、フラッシュメモリが用いられることが多い。このフラッシュメモリは不揮発性メモリの一種であり、電源が投入されているか否かに関わらず、データが保持されていることが要求される。
【０００３】
ところで、上記のような装置に特に用いられることが多いＮＡＮＤ型フラッシュメモリは、メモリセルを消去状態（論理値の「１」）から書込状態（論理値の「０」）に変化させる場合には、メモリセル単位で行うことができるが、メモリセルを書込状態（論理値の「０」）から消去状態（論理値の「１」）に変化させる場合には、メモリセル単位で行うことができず、複数のメモリセルからなる所定の消去単位（ブロック）でしかこれを行うことができない。かかる一括消去動作は、一般的にブロック消去と呼ばれている。
【０００４】
上記のような特性により、ＮＡＮＤ型フラッシュメモリを用いたメモリシステムでは、ブロック消去されているブロックにデータを書込んでいるが、偶発的なエラー又は不良ブロック化により、ブロック消去したブロックが正常な消去状態にならない場合がある。このような問題の対策として、特許文献１（特開２００１−２４３１２２）では、実際にデータを書き込む前に消去済みブロックの状態を診断している。
【特許文献１】特開２００１−２４３１２２
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、特許文献１（特開２００１−２４３１２２）に示されている対策では書込みデータの信頼性は向上するが、書込み前に消去済みブロックのメモリセルに書き込まれているデータを読み出す等の処理を行うため、書込みに伴う処理時間が長くなってしまうという問題があった。
【０００６】
又、近年提供されているフラッシュメモリの中には、ブロック消去の際に消去したブロックの消去状態をチェックし、全てのビットが消去状態になっているか否かを示すステータス情報を生成する機能を備えたものがある。従って、このような消去状態チェック機能を備えたフラッシュメモリを使用すれば、より簡単に消去状態をチェックすることができる。
【０００７】
そこで、本発明はフラッシュメモリが備えた消去状態チェック機能を利用することにより、書込みに伴う処理時間が長くなるのを抑えつつ、信頼性の高いデータ書込みを行なうことができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る目的は、フラッシュメモリにデータを書込む書込み手段と、
フラッシュメモリからデータを読出す読出し手段と、
フラッシュメモリに書込まれているデータを消去する消去手段と、
フラッシュメモリに書込まれているデータを消去したときにフラッシュメモリが生成する消去ステータスを取得するステータス取得手段と、を備え、
取得した前記消去ステータスが正常な消去状態に該当するときだけ、該消去ステータスに係る消去済ブロックに対するデータの書込みが開始されるように構成されていることを特徴とするメモリコントローラによって達成される。
【０００９】
又、本発明に係る目的は、前記メモリコントローラと、前記ステータス生成手段を有するフラッシュメモリを備えることを特徴とするフラッシュメモリシステムによっても達成される。
【００１０】
ここで、フラッシュメモリが生成する消去ステータスは、消去状態が正常であるか否かを示す情報であり、全てのビットが消去状態になっていれば正常を、１ビットでも消去状態になっていないビットが存在すれば異常を示す。
【００１１】
又、本発明によれば、データの書込み先となるブロックの候補を設定する候補ブロック設定手段を備えることが好ましい。
【００１２】
又、本発明によれば、ブロックのユーザ領域に書込まれているデータが無効であることを示す無効フラグを、冗長領域に設定する無効フラグ設定手段を備え、前記候補ブロック設定手段が、冗長領域に前記無効フラグが設定されているブロックを、データの書込み先の候補に設定することが好ましい。
【００１３】
又、本発明によれば、消去済ブロックに対する読出し処理に基づき、消去状態を診断する診断手段を備え、該診断手段と前記ステータス取得手段のいずれか一方の手段によって、正常な消去状態であると判断された消去済ブロックに対して、データの書込みが開始されるように構成されていてもよい。
【００１４】
つまり、消去済ブロックに対する読出し処理に基づいて正常な消去状態であるか否かを判断する処理と、フラッシュメモリが生成する消去ステータスに基づいて正常な消去状態であるか否かを判断する処理を、選択的に使用することができ、その判断に基づいてデータの書込みが開始される。
【００１５】
又、本発明に係る目的は、フラッシュメモリにデータの書込みを行なうときに、データの書込み先となるブロックに対して消去処理を行ない、
前記消去処理の終了後にフラッシュメモリが生成する消去ステータスを取得し、
取得した前記消去ステータスが、正常な消去状態を示す情報であったときに、
前記消去処理が行なわれたブロックに対して、データの書込み処理を行なうことを特徴とするフラッシュメモリの制御方法によって達成される。
【００１６】
ここで、フラッシュメモリが生成する消去ステータスは、消去状態が正常であるか否かを示す情報であり、全てのビットが消去状態になっていれば正常を、１ビットでも消去状態になっていないビットが存在すれば異常を示す。
【００１７】
又、本発明によれば、消去済ブロック、又はブロックのユーザ領域に書込まれているデータが無効であることを示す無効フラグが冗長領域に設定されているブロックを、データの書込み先とすることが好ましい。
【発明の効果】
【００１８】
本発明によれば、フラッシュメモリが生成するステータス情報（消去状態が正常であるか否かを示す情報であり、全てのビットが消去状態になっていれば正常を、１ビットでも
消去状態になっていないビットが存在すれば異常を示す。）を取得し、このステータス情報に基づいて正常な消去状態であると判断されたブロックに対して、データの書込みを行なっている。又、この消去状態の判断とデータの書込みは、一連の処理として行なわれる。このような処理を行なうことにより、書込みに伴う処理時間が長くなるのを抑えつつ、信頼性の高いデータ書込みを行なうことができる。
【００１９】
又、ブロックのユーザ領域に書込まれているデータが無効又は不要となったときに、そのブロックの冗長領域に無効フラグを設定するようにすれば、データを書込む直前に消去処理を行うだけでよいので、データ書替の際の処理効率が更に向上する。
【発明を実施するための最良の形態】
【００２０】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
【００２１】
[フラッシュメモリシステム１の説明]
図１は、本発明に係るフラッシュメモリシステム１を概略的に示すブロック図である。図１に示したようにフラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するコントローラ３で構成されている。又、フラッシュメモリシステム１は、通常ホストシステム４に着脱可能に装着されて使用され、ホストシステム４に対して一種の外部記憶装置として用いられる。
【００２２】
尚、ホストシステム４としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【００２３】
フラッシュメモリ２は、ページ単位で読出し又は書込みを、ブロック単位で消去を実行するデバイスであり、例えば、１ブロックは３２ページで構成され、１ページは５１２バイトのユーザ領域と１６バイトの冗長領域で構成されている。又、１ブロックが６４ページで構成され、１ページが２ｋバイトのユーザ領域と６４バイトの冗長領域で構成されているものもあり、今後もブロック又はページの記憶容量は増加する傾向にある。
【００２４】
コントローラ３は、ホストインターフェース制御ブロック５と、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、フラッシュメモリシーケンサブロック１２とから構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積されている。以下に各ブロックの機能を説明する。
【００２５】
マイクロプロセッサ６は、コントローラ３を構成する各機能ブロック全体の動作を制御する機能ブロックである。
【００２６】
ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を制御する機能ブロックである。ここで、ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を設定する動作設定レジスタ（図示せず）を備えており、この動作設定レジスタに基づきホストインターフェースブロック７は動作する。
【００２７】
ホストインターフェースブロック７は、ホストシステム４とデータ、アドレス情報、ステータス情報及び外部コマンド情報の授受を行なう機能ブロックである。すなわち、フラッシュメモリシステム１がホストシステム４に装着されると、フラッシュメモリシステム１とホストシステム４は、外部バス１３を介して相互に接続され、かかる状態において、ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインタ―フェースブロック７を入口としてコントローラ３の内部に取り込まれ、フラッシュメ
モリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００２８】
さらに、ホストインターフェースブロック７は、ホストシステム４より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ（図示せず）及びエラーが発生した場合にセットされるエラーレジスタ（図示せず）等を有している。
【００２９】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）セルによって構成される機能ブロックである。
【００３０】
バッファ９は、フラッシュメモリ２から読出したデータ及びフラッシュメモリ２に書込むデータを一時的に保持する機能ブロックである。すなわち、フラッシュメモリ２から読出したデータは、ホストシステム４が受け取り可能な状態になるまでバッファ９に保持され、フラッシュメモリ２に書込むデータは、フラッシュメモリ２が書込み可能な状態となるまでバッファ９に保持される。
【００３１】
フラッシュメモリシーケンサブロック１２は、内部コマンドに基づきフラッシュメモリ２の動作を制御する機能ブロックである。フラッシュメモリシーケンサブロック１２は、複数のレジスタ（図示せず）を備え、この複数のレジスタに内部コマンドを実行する際に必要な情報が設定される。この複数のレジスタに内部コマンドを実行する際に必要な情報が設定されると、フラッシュメモリシーケンサブロック１２は、その情報に基づいて処理を実行する。ここで、「内部コマンド」とは、コントローラ３からフラッシュメモリ２に与えられるコマンドであり、ホストシステム４からフラッシュメモリシステム１に与えられるコマンドである「外部コマンド」と区別される。
【００３２】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報及び内部コマンド情報の授受を行う機能ブロックである。
【００３３】
ＥＣＣブロック１１は、フラッシュメモリ２に書込むデ―タに付加されるエラーコレクションコードを生成するとともに、読出しデータに付加されたエラーコレクションコードに基づいて、読出したデータに含まれる誤りを検出・訂正する機能ブロックである。
【００３４】
[メモリセルの説明]
次に、図２及び３参照して図１に示したフラッシュメモリ２を構成するメモリセル１６の具体的な構造について説明する。
【００３５】
図２は、フラッシュメモリを構成するメモリセル１６の構造を概略的に示す断面図である。同図に示したように、メモリセル１６は、Ｐ型半導体基板１７に形成されたＮ型のソース拡散領域１８及びドレイン拡散領域１９と、ソース拡散領域１８とドレイン拡散領域１９との間のＰ型半導体基板１７を覆って形成されたトンネル酸化膜２０と、トンネル酸化膜２０上に形成されたフローティングゲ―ト電極２１と、フローティングゲート電極２１上に形成された絶縁膜２２と、絶縁膜２２上に形成されたコントロールゲ―ト電極２３とから構成される。このような構成を有するメモリセル１６が、フラッシュメモリ内で複数個直列に接続されている。
【００３６】
メモリセル１６は、フローティングゲート電極２１に電子が注入されているか否かによって、「消去状態（電子が蓄積されていない状態）」と「書込状態（電子が蓄積されている状態）」のいずれかの状態が示される。ここで、１つのメモリセル１６は１ビットのデータに対応し、メモリセル１６の「消去状態」が論理値の「１」のデータに対応し、メモ
リセル１６の「書込状態」が論理値の「０」のデータに対応する。
【００３７】
「消去状態」においては、フローティングゲート電極２１に電子が蓄積されていないため、コントロールゲート電極２３に読出し電圧（高レベル電圧）が印加されていないときには、ソース拡散領域１８とドレイン拡散領域１９との間の、Ｐ型半導体基板１７の表面にチャネルが形成されず、ソース拡散領域１８とドレイン拡散領域１９は電気的に絶縁される。一方、コントロールゲート電極２３に読出し電圧（高レベル電圧）が印加されると、ソース拡散領域１８とドレイン拡散領域１９との間の、Ｐ型半導体基板１７の表面にチャネル（図示せず）が形成され、ソース拡散領域１８とドレイン拡散領域１９は、このチャネルによって電気的に接続される。
【００３８】
すなわち、「消去状態」においてはコントロールゲート電極２３に読出し電圧（高レベル電圧）が印加されていない状態では、ソース拡散領域１８とドレイン拡散領域１９とは電気的に絶縁され、コントロールゲート電極２３に読出し電圧（高レベル電圧）が印加された状態では、ソース拡散領域１８とドレイン拡散領域１９とは電気的に接続される。
【００３９】
図３は、「書込状態」であるメモリセル１６を概略的に示す断面図である。同図に示したように、「書込状態」とは、フローティングゲート電極２１に電子が蓄積されている状態を指す。フローティングゲート電極２１はトンネル酸化膜２０及び絶縁膜２２に挟まれているため、一旦、フローティングゲート電極２１に注入された電子は、きわめて長時間フローティングゲート電極２１内にとどまる。この「書込状態」においては、フローティングゲート電極２１に電子が蓄積されているので、コントロールゲート電極２３に読出し電圧（高レベル電圧）が印加されているか否かに関わらず、ソース拡散領域１８とドレイン拡散領域１９との間の、Ｐ型半導体基板１７の表面にはチャネル２４が形成される。したがって、「書込状態」においてはソース拡散領域１８とドレイン拡散領域１９とは、コントロールゲート電極２３に読出し電圧（高レベル電圧）が印加されているか否かに関わらず、チャネル２４によって常に電気的に接続状態となる。
【００４０】
又、上記メモリセル１６が消去状態であるか書込状態であるかは、次のようにして読み出すことができる。メモリセル１６はフラッシュメモリ内で複数個直列に接続されている。この直列体の中で選択するメモリセル１６に低レベル電圧を印加し、それ以外のメモリセル１６のコントロールゲート電極２３に高レベル電圧を印加する。この状態でメモリセル１６の直列体が導通状態であるか否かの検出が行われる。その結果、この直列体が導通状態であれば、選択されたメモリセル１６は書込状態であると判断され、絶縁状態であれば、選択されたフラッシュメモリセル１６は消去状態であると判断される。このようにして、直列体に含まれる任意のメモリセル１６に保持されたデータが「０」であるのか「１」であるのかを読み出すことができる。
【００４１】
又、消去状態であるメモリセル１６を書込状態に変化させる場合は、コントロールゲート電極２３が高電位側となる高電圧を印加し、トンネル酸化膜２０を介してフローティングゲート電極２１へ電子を注入する。この際、ＦＮ（ファウラ―ノルトハイム）トンネル電流が流れフローティングゲート電極２１に電子が注入される。一方、書込状態であるフラッシュメモリセル１６を消去状態に変化させる場合は、コントロールゲート電極２３が低電位側となる高電圧を印加し、トンネル酸化膜２０を介してフローティングゲート電極２１に蓄積された電子を排出する。
【００４２】
[フラッシュメモリのメモリ構造の説明]
次に、フラッシュメモリのメモリ構造を説明する。図４は、フラッシュメモリのメモリ構造を概略的に示す図である。図４に示したように、フラッシュメモリはデータの読出し及び書込みにおける処理単位であるページと、データの消去単位であるブロックで構成されている。
【００４３】
上記ページは、例えば５１２バイトのユーザ領域２５と、１６バイトの冗長領域２６によって構成される。ユーザ領域２５は、主に、ホストシステム４から供給されるデ―タが格納される領域であり、冗長領域２６は、エラーコレクションコード、対応論理ブロックアドレス及びブロックステータス等の付加情報が格納される領域である。
【００４４】
エラーコレクションコードは、ユーザ領域２５に格納されたデータに含まれる誤りを訂正するための付加情報であり、ＥＣＣブロックによって生成される。このエラーコレクションコードに基づき、ユーザ領域２５に格納されたデータに含まれる誤りが所定数以下であれば、その誤りが訂正される。
【００４５】
対応論理ブロックアドレスは、そのブロックにデータが格納されている場合に、そのブロックがどの論理ブロックアドレスに対応するかを示している。尚、そのブロックにデータが格納されていない場合は、対応論理ブロックアドレスも格納されていないので、対応論理ブロックアドレスが格納されているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが格納されていない場合は消去済ブロックであると判断する。
【００４６】
ブロックステータスは、そのブロックが不良ブロック（正常にデータの書込み等を行なうことができないブロック）であるか否かを示すフラグであり、そのブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
【００４７】
[論理ブロックアドレスと物理ブロックアドレスの説明]
フラッシュメモリはデータの上書きができないため、データの書替えを行なう場合には、ブロック消去されている消去済ブロックに新データ（書替後のデータ）を書込み、旧データ（書替前のデータ）が書込まれていたブロックを消去するという処理を行なわなければならない。この際、消去はブロック単位で処理されるため、旧データ（書替前のデータ）が書込まれていたページが含まれるブロックの、全ページのデータが消去されてしまう。従って、データの書替えを行なう場合、書替えるページが含まれるブロックの、他のページのデータについても、消去済ブロックに移動させる処理が必要となる。
【００４８】
上記のようにデータを書替える場合、書替後のデータは書替前と異なるブロックに書込まれるため、ホストシステム側から与えられる論理ブロックアドレスと、フラッシュメモリ内でのブロックアドレスである物理ブロックアドレスとの対応関係は、データを書替える毎に動的に変化する。このため、論理ブロックアドレスと物理ブロックアドレスの対応関係を示したアドレス変換テーブルが必要となる。尚、このアドレス変換テーブルは、フラッシュメモリの冗長領域に書込まれている対応論理ブロックアドレスに基づいて作成され、データが書替えられる毎に、その書替えに関わった部分の対応関係が更新される。
【００４９】
［ゾーンの構成の説明］
上述のようにフラッシュメモリシステムでは、論理ブロックアドレスと物理ブロックアドレスの対応関係を示したアドレス変換テーブルを用いて、データの書込み処理や読出し処理を行なっている。又、このアドレス変換テーブルの作成時間を短縮するために、フラッシュメモリ内の複数のブロックで構成したゾーン毎にアドレス変換テーブルを作成しているフラッシュメモリシステムも多い。尚、ゾーンを構成するブロックの数は、特に限定されずフラッシュメモリシステムの用途やフラッシュメモリの仕様に応じて適宜設定することができる。
【００５０】
次に、上記ゾーンについて図面を参照して説明する。図５は、１０２４のブロックでゾーンを構成した例を示している。この例では、ゾーンは、１０２４のブロックＢ００００〜Ｂ１０２３で構成され、各ブロックは、読出し及び書込み処理の単位である３２のページＰ００〜Ｐ３１で構成されている。そして、このゾーンが１０００ブロック分の論理ブ
ロックアドレスの空間に割当てられている。ここで、ブロックは消去処理の単位であり、ページは読出し及び書込み処理の単位である。又、ゾーンを構成するブロックが、２４ブロック分余計に割当てられているのは、不良ブロックの発生を考慮したためである。但し、データ書替の際に一旦別のブロックに新データを書込み、その後、旧データが書込まれていたブロックをブロック消去する場合には、新データを書込むための予備ブロックが必要なので、実質的には２３ブロック分が余計に割当てられていることになる。
【００５１】
［アドレス変換テーブルの説明］
次に、図５に示したゾーンに対するアドレス変換テーブルの例を、図面を参照して説明する。図６は、図５に示したようにブロックＢ００００〜Ｂ１０２３（物理ブロックアドレスの００００〜１０２３）でゾーンを構成し、このゾーンを１０００ブロック分の論理ブロックアドレスの空間に割当てた場合のアドレス変換テーブルを示している。このアドレス変換テーブルには、各論理ブロックアドレスに対応するデータが格納されているブロックの物理ブロックアドレスが、論理ブロックアドレス順に記述されている。ここで、対応するデータが格納されていない論理ブロックアドレスについては、アドレス変換テーブルのその論理ブロックアドレスに対応した部分に、物理ブロックアドレスではなく、対応するデータが格納されていないことを示すフラグ（以下、対応するデータが格納されていないことを示すフラグを未格納フラグと言う。）が設定される。
【００５２】
次に、このアドレス変換テーブルを作成する方法について説明する。図６に示したアドレス変換テーブルを作成する場合、例えば、１０００ブロック分の物理ブロックアドレスを記述できる領域をＳＲＡＭ上に確保し、物理ブロックアドレスを記述する領域に初期設定として未格納フラグを設定する。その後、アドレス変換テーブルを作成するゾーンに割当てられているブロック（冗長領域）を順次読出していき、冗長領域に論理ブロックアドレス（対応論理ブロックアドレスとして記述されている論理ブロックアドレス）が記述されていた場合には、アドレス変換テーブルのその論理ブロックアドレスに対応した部分に、その論理ブロックアドレスが記述されていたブロックの物理ブロックアドレスを記述する。この処理を、ゾーンを構成する１０２４ブロックについて順次行ない、この処理が完了するとアドレス変換テーブルが完成する。尚、このアドレス変換テーブルの作成処理で、物理ブロックアドレスが記述されなかった部分については、初期設定で記述された未格納フラグがそのまま残る。
【００５３】
［消去済ブロック検索用テーブルと候補テーブルの説明］
次に、消去済ブロック検索用テーブルと候補テーブルについて説明する。候補テーブルは、データの書込み先として準備しておく消去済ブロック（以下、データの書込み先として準備しておく消去済ブロックを書込み候補ブロックと言う。）を設定しておくテーブルであり、各ゾーン毎に作成される。又、消去済ブロック検索用テーブルは、候補テーブルに書込み候補ブロックとして設定される消去済ブロックを検索するためのテーブルである。この消去済ブロック検索用テーブルの例としては、ゾーンを構成する各ブロックを、ＳＲＡＭ上の各ビットに対応させ、各ビットの値（「０」又は「１」）により、データが書込まれている状態、又はデータが書込まれていない状態を示したものが挙げられる。
【００５４】
図７（ａ）は、図５に示したゾーンの消去済ブロック検索用テーブルを概念的に示した概念図である。ここで、消去済ブロック検索用テーブル上のビットは、ゾーンを構成するブロックＢ００００〜Ｂ１０２３（物理ブロックアドレスの００００〜１０２３）に対応している。この対応関係については、消去済ブロック検索用テーブル上のビットを、上の行から下の行へ、各行を左から右へ物理ブロックアドレス順に対応させている。従って、消去済ブロック検索用テーブルの左上のビットが、Ｂ００００（物理ブロックアドレスの００００）のブロックに対応し、右下のビットが、Ｂ１０２３（物理ブロックアドレスの１０２３）のブロックに対応する。
【００５５】
又、消去済ブロック検索用テーブル上のビットは、「０」と「１」で消去済ブロックで
あるか否かを示しており、例えば、データが書込まれている場合（又は不良ブロックであることを示すブロックステータスが記述されている場合）は、そのビットに「０」を、データが書込まれていない場合（消去済ブロックの場合）は、そのビットに「１」を設定する。尚、この消去済ブロック検索用テーブルは、アドレス変換テーブルを作成する際に一緒に作成することができる。例えば、消去済ブロック検索用テーブルを作成するＳＲＡＭ上の領域に「０」を設定しておき、各ブロックの冗長領域に対応論理ブロックアドレスも不良ブロックであることを示すブロックステータスも記述されていないときに、そのブロックに対応するビットに「１」を設定するようにすれば、アドレス変換テーブルを作成する際に一緒に作成することができる。つまり、ゾーンを構成するブロックの冗長領域に記述されているデータを読出したときにこの処理を行なえば、消去済ブロックに対応するビットだけに「１」が設定され、消去済ブロックでないブロックに対応するビットは予め設定した「０」のままになる。
【００５６】
又、この消去済ブロック検索用テーブルの更新については、消去済ブロックにデータを書込んだときに、そのブロックに対応するビットを「１」から「０」に変更し、データが書込まれているブロックをブロック消去したときに、そのブロックに対応するビットを「０」から「１」に変更する。
【００５７】
又、本発明に係るフラッシュメモリシステムにおける処理では、フラッシュメモリにデータを書込む際に、書込み先のブロックをブロック消去し、その後、書込み処理を行なっている。従って、データの書替等により、以前に書込まれていたデータが無効になったブロックについては、無効になったときにブロック消去を行なわずに、そのデータが無効になったことを示すフラグ（以下、ユーザ領域に書込まれているデータが無効になったことを示すフラグを無効フラグという。）を、そのブロックの冗長領域に設定してもよい。尚、冗長領域に無効フラグが設定されているブロックは、上述のアドレス変換テーブルや消去済ブロック検索用テーブルを作成、更新する際に、データが書込まれていないブロックと同等に、つまり消去済ブロックと同等に扱う。
【００５８】
上記無効フラグを設定する方法としては、例えば、冗長領域の特定のビットを、ユーザ領域に書込まれているデータの有効、無効を示すビットとし、ユーザ領域に書込まれているデータが無効になったときに、そのビットを「１（消去状態）」から「０（書込状態）」に上書き処理する方法が挙げられる。
【００５９】
次に、この消去済ブロック検索用テーブルを用いて消去済ブロック（又は冗長領域に無効フラグが設定されているブロック）を検索する場合について図７（ｂ）を参照して説明する。この消去済ブロック（又は冗長領域に無効フラグが設定されているブロック）の検索では、ブロックＢ００００（物理ブロックアドレスの００００）に対応するビット（一番上の行の、一番左のビット）から、ブロックＢ１０２３（物理ブロックアドレスの１０２３）に対応するビット（一番下の行の、一番右のビット）までを走査していき、消去済ブロック（又は冗長領域に無効フラグが設定されているブロック）に対応する「１」のビットを検索する。尚、前記走査は、上の行から下の行へ、各行を左から右へ向かって行なわれる。
【００６０】
図７（ｂ）に示した消去済ブロック検索用テーブルで、一番上の行の、一番左のビットから走査を開始した場合、上から２番目の行の、左から３番目のビットが「１」なので、ここで検索を終了し、このビットに対応するブロックＢ００１０（物理ブロックアドレスの００１０）を、書込み候補ブロックとして候補テーブルに設定する。又、次回の検索は、上から２番目の行の、左から４番目のビットから走査を開始し、上から４番目の行の、左から５番目のビットが「１」なので、ここで検索を終了し、このビットに対応するブロックＢ００２８（物理ブロックアドレスの００２８）を、書込み候補ブロックとして候補テーブルに設定する。その後も、このような検索を続けていき、一番下の行の、一番右のビットまで走査が進んだときは、一番上の行の、一番左のビットに戻る。
【００６１】
［本発明に係る処理の説明］
本発明に係る処理を図８に示したフローチャートを参照して説明する。本発明に係るフラッシュメモリシステムでは、ブロック消去の際に消去したブロックの消去状態をチェックし、全てのビットが消去状態になっているか否かを示すステータス情報（以下、ブロック消去されブロックの全てのビットが、消去状態になっているか否かを示すステータス情報を消去ステータスという。）を生成する機能を備えたフラッシュメモリを用いて、フラッシュメモリシステムを構成している。
ステップ１：
候補テーブルに設定されているブロックに対して、消去処理を行なう。候補テーブルには、消去済ブロック又は冗長領域に無効フラグが設定されているブロックが設定されている。尚、消去済ブロックに対して消去処理を行なうのは、消去ステータスにより、そのブロックの全てのビットが、消去状態になっているかを確認するためである。又、候補テーブルに設定されているブロックに対して、消去処理を行なう場合、フラッシュメモリシーケンサブロックが有するレジスタに、以下のような消去処理の設定がなされる。
１）内部コマンドとして内部消去コマンドが、フラッシュメモリシーケンサブロック内の所定のレジスタに設定される。
２）候補テーブルに設定されているブロックの物理ブロックアドレスが、フラッシュメモリシ―ケンサブロック内の所定のレジスタに設定される。
【００６２】
その後、上記消去処理の設定に基づいて、フラッシュメモリシーケンサブロックが処理を実行する。この処理が実行されると、フラッシュメモリインターフェースブロックから、内部バスを介してフラッシュメモリに内部消去コマンドを実行するためのコマンド情報やアドレス情報等が供給され、消去処理が完了するまでフラッシュメモリはビジー状態（処理を受付けない状態）になる。
ステップ２：
ブロック消去の完了後に、フラッシュメモリ内のレジスタに消去ステータスがセットされる。この消去ステータスを読出し、消去処理が行なわれたブロックの全てのビットが消去状態になっているか否かを判定する。この判定で正常な消去状態になっている（全てのビットが消去状態になっている）と判断された場合はステップ３に、正常な消去状態になっていないと判断された場合はステップ４に進む。
ステップ３：
ステップ１で消去処理が行なわれたブロックに対して書込み処理が行なわれる。この書込み処理では、フラッシュメモリシーケンサブロックが有するレジスタに、以下のような書込み処理の設定がなされる。
１）内部コマンドとして内部書込みコマンドが、フラッシュメモリシーケンサブロック内の所定のレジスタに設定される。
２）ステップ１で消去処理が行なわれたブロック内のページのアドレスが、フラッシュメモリシ―ケンサブロック内の所定のレジスタに設定される。ここで、上記ページのアドレスは、物理ブロックアドレスにページ番号に相当する５ビット（３２のページを識別するためのビット）を付加することによって与えられる。
その後、上記書込み処理の設定に基づいて、フラッシュメモリシーケンサブロックが処理を実行する。この処理が実行されると、フラッシュメモリインターフェースブロックから、内部バスを介してフラッシュメモリに内部書込みコマンドを実行するためのコマンド情報やアドレス情報等が供給される。又、バッファに保持されている書込みデータも、内部バスを介してフラッシュメモリに供給され、ステップ１で消去処理が行なわれたブロック内のページに書込まれる。又、書込み処理の終了後に、データを書込んだブロックに対応する消去済ブロック検索用テーブル上のビットを「１」から「０」に変更する。
【００６３】
又、上記書込み処理で、ホストシステム側から供給された論理ブロックアドレスに対応する旧データが存在する場合は、上記新データの書込み処理の後に旧データが書込まれているブロック対して消去処理、又はそのブロックの冗長領域に無効フラグを設定する処理を行ない、続いて消去処理又は無効フラグを設定する処理を行なったブロックに対応する消去済ブロック検索用テーブル上のビットを「０」から「１」に変更する。
ステップ４：
消去済ブロック検索用テーブルを用いて、消去済ブロック又は冗長領域に無効フラグが設定されているブロックを検索し、候補テーブルに消去済ブロック又は冗長領域に無効フラグが設定されているブロックの物理ブロックアドレスを設定する。
【００６４】
又、ステップ２で正常な消去状態になっていないと判断されたブロックについては、消去、書込み等を正常に行なうことができるかを診断し、その結果、不良ブロックであると判断された場合は、そのブロックの冗長領域に不良ブロックであることを示すフラグ（ブロックステータス）を設定し、更に、そのブロックに対応する消去済ブロック検索用テーブル上のビットを「１」から「０」に変更する。
【００６５】
以上に述べたように、本発明では、消去済ブロックに対する読出し処理を行なわずに、ブロック消去の完了後に、フラッシュメモリ内のレジスタにセットされる消去ステータスに基づいて、全てのビットが消去状態になっているか否かを判定している。従って、消去済ブロックに対する読出し処理に基づいて、全てのビットが消去状態になっているか否かを判定する場合よりも、短い処理時間で信頼性の高いデータ書込みを行なうことができる。
【００６６】
尚、今後、ブロックの記憶容量が増加した場合には、上記消去ステータスに基づいて判定を行なう処理は、より有効になる。但し、処理時間が問題にならない場合もあるので、ユーザーの要求（設定）により、上記消去ステータスに基づく判定と、上記消去済ブロックに対する読出し処理に基づく判定を選択できるようにしてもよい。
【図面の簡単な説明】
【００６７】
【図１】図１は、本発明に係るフラッシュメモリシステムを概略的に示すブロック図である。
【図２】図２は、フラッシュメモリを構成するメモリセルの構造を概略的に示す断面図である。
【図３】図３は、書込状態であるメモリセルを概略的に示す断面図である。
【図４】図４は、フラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図５】図５は、１０２４のブロックでゾーンを構成した例を示す図である。
【図６】図６は、アドレス変換テーブルの例を示した図である。
【図７】図７は、消去済ブロック検索用テーブルの例を示す概念図である。
【図８】図８は、本発明に係る処理を説明するためのフローチャートである。
【符号の説明】
【００６８】
１  フラッシュメモリシステム
２、３５、３６  フラッシュメモリ
３  コントローラ
４  ホストコンピュータ
５  ホストインターフェース制御ブロック
６  マイクロプロセッサ
７  ホストインターフェースブロック
８  ワークエリア
９  バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  フラッシュメモリシーケンサブロック
１３  外部バス
１４  内部バス
１６  メモリセル
１７  Ｐ型半導体基板
１８  ソース拡散領域
１９  ドレイン拡散領域
２０  トンネル酸化膜
２１  フローティングゲート電極
２２  絶縁膜
２３  コントロールゲート電極
２４  チャネル
２５  ユーザ領域
２６  冗長領域
【図１】
2005141418.tif 000003
【図２】
2005141418.tif 000004
【図３】
2005141418.tif 000005
【図４】
2005141418.tif 000006
【図５】
2005141418.tif 000007
【図６】
2005141418.tif 000008
【図７】
2005141418.tif 000009
【図８】
2005141418.tif 000010