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