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