(57)【要約】本発明は、フラッシュメモリ内で固定不良を発生した物理ブロックの使用を制限するために、当該物理ブロックを適確に検出することを目的とする。  ＥＣＣエラーレコードに、物理ブロックのエラーの発生履歴や、物理消去の履歴を記録し、発生したエラーが偶発的なものか、固定不良によるものかを判断する。最初の読出しエラー発生後、物理消去して書換えたデータでエラーが再発しないのなら最初のエラーは偶発的であり、なおエラーが発生するのであれば、固定不良によるエラーであると判断する。このようなＥＣＣエラーレコードを用いることで、偶発的なエラーか、固定不良によるエラーかを適確に判断できる。その判断にもとづき固定不良の物理ブロックを使わないことで、読出しエラーを低減させるという効果を生む。【特許請求の範囲】
【請求項１】
不揮発性メモリとメモリコントローラを具備する不揮発性記憶装置であって、
前記不揮発性メモリは、消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなるものであり、
前記メモリコントローラは、
前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、
前記不揮発性メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正をする機能とを備える誤り訂正回路と、
前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、
前記メモリコントローラのアドレステーブルは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、
前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、
ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、
前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新し、前記読出しエラーを検出した物理ブロックを使用するかどうかを決める不揮発性記憶装置。
【請求項２】
前記メモリコントローラのアドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備え、
前記エラーテーブルのエラーレコードは、
前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、
前記エラーが発生したことを示す情報を記録するエラー情報と、
前記エラーが発生した後に、前記物理ブロックのデータを消去して新たなデータを書込んだことを示す情報を記録するエラーブロック消去情報と、
前記エラーブロック消去情報に情報が記録された後、同一の物理ブロックで再度読出しエラーを検出したことを示すエラー再発生情報とを備え、
前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて少なくとも前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在したときは、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録する請求項１に記載の不揮発性記憶装置。
【請求項３】
前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項２に記載の不揮発性記憶装置。
【請求項４】
前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項２に記載の不揮発性記憶装置。
【請求項５】
前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項３に記載の不揮発性記憶装置。
【請求項６】
前記メモリコントローラのアドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備え、
前記エラーテーブルのエラーレコードは、
前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、
読出しエラーが発生した回数を示す情報であるエラーカウンタ情報と、
前記読出しエラーの発生した物理ブロックを物理消去した回数を示すエラーブロック消去カウンタ情報とを備え、
前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報が記録された前記エラーレコードが存在したときは、前記エラーカウンタ情報と前記エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を示しかつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値であるときに、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録する請求項１に記載の不揮発性記憶装置。
【請求項７】
前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項６に記載の不揮発性記憶装置。
【請求項８】
前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項６に記載の不揮発性記憶装置。
【請求項９】
前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項７に記載の不揮発性記憶装置。
【請求項１０】
前記エラーテーブルのエラーレコードは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスが書かれたエラーブロック情報と、
前記誤り訂正回路が前記読出しエラーを検出した物理ページのアドレスが書かれたエラーページ情報と、
前記読出しエラーのビット数を示す情報を記録するエラービットカウンタとを備え、
前記演算処理ユニットは、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項１に記載の不揮発性記憶装置。
【請求項１１】
前記演算処理ユニットは、外部からの前記不揮発性メモリに対してデータ読出し処理が行われていないときに、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項１０に記載の不揮発性記憶装置。
【請求項１２】
前記エラーテーブルのエラーレコードは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、
前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスを示す情報を記録するエラーページ情報と、
前記誤り訂正回路によって訂正可能なエラービット数以下の値であって予め定められた訂正閾値以上の読出しエラーが発生したことを示す情報を記録するエラー発生情報とを備え、
前記演算処理ユニットは、前記エラー発生情報が記録された前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項１に記載の不揮発性記憶装置。
【請求項１３】
前記演算処理ユニットは、前記不揮発性メモリのデータを読出す処理が行われていないときに、前記エラー発生情報が記録された前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項１２に記載の不揮発性記憶装置。
【請求項１４】
消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなる不揮発性メモリに対して、データの読出し及び書込みを制御するメモリコントローラであって、
前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、
前記不揮発性メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正をする機能とを備える誤り訂正回路と、
前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、
前記アドレステーブルは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、
前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、
ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、
前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新し、前記読出しエラーを検出した物理ブロックを使用するかどうかを決めるメモリコントローラ。
【請求項１５】
前記アドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備え、
前記エラーテーブルのエラーレコードは、
前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、
前記エラーが発生したことを示す情報を記録するエラー情報と、
前記エラーが発生した後に、前記物理ブロックのデータを消去して新たなデータを書込んだことを示す情報を記録するエラーブロック消去情報と、
前記エラーブロック消去情報に情報が記録された後、同一の物理ブロックで再度読出しエラーを検出したことを示すエラー再発生情報とを備え、
前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて少なくとも前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在したときは、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録する請求項１４に記載のメモリコントローラ。
【請求項１６】
前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項１５に記載のメモリコントローラ。
【請求項１７】
前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項１５に記載のメモリコントローラ。
【請求項１８】
前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項１６に記載のメモリコントローラ。
【請求項１９】
前記アドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備え、
前記エラーテーブルのエラーレコードは、
前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、
読出しエラーが発生した回数を示す情報であるエラーカウンタ情報と、
前記読出しエラーの発生した物理ブロックを物理消去した回数を示すエラーブロック消去カウンタ情報とを備え、
前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報が記録された前記エラーレコードが存在したときは、前記エラーカウンタ情報と前記エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を示しかつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値であるときに、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録する請求項１４に記載のメモリコントローラ。
【請求項２０】
前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項１９に記載のメモリコントローラ。
【請求項２１】
前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項１９に記載のメモリコントローラ。
【請求項２２】
前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項２０に記載のメモリコントローラ。
【請求項２３】
前記エラーテーブルのエラーレコードは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスが書かれたエラーブロック情報と、
前記誤り訂正回路が前記読出しエラーを検出した物理ページのアドレスが書かれたエラーページ情報と、
前記読出しエラーのビット数を示す情報を記録するエラービットカウンタと、を備え、
前記演算処理ユニットは、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項１４に記載のメモリコントローラ。
【請求項２４】
前記演算処理ユニットは、外部からの前記不揮発性メモリに対してデータ読出し処理が行われていないときに、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項２３に記載のメモリコントローラ。
【請求項２５】
前記エラーテーブルのエラーレコードは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、
前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスを示す情報を記録するエラーページ情報と、
前記誤り訂正回路によって訂正可能なエラービット数以下の値であって予め定められた訂正閾値以上の読出しエラーが発生したことを示す情報を記録するエラー発生情報とを備え、
前記演算処理ユニットは、前記エラー発生情報が記録された前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項１４に記載のメモリコントローラ。
【請求項２６】
前記演算処理ユニットは、前記不揮発性メモリのデータを読出す処理が行われていないときに、前記エラー発生情報が記録された前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項２５に記載のメモリコントローラ。
【請求項２７】
消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなる不揮発性メモリと、前記不揮発性メモリからの読出しデータに対してエラーを検出する機能及びエラーの訂正が可能である場合には訂正をする機能を備える誤り訂正回路と、読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを複数保持するエラーテーブルを備えるメモリコントローラと、を具備する不揮発性記憶装置において、
データを読み出すときに外部から指定された論理アドレスから物理アドレスを決定し、
前記物理アドレスに対応する物理ブロックからデータを読出し、
当該読出したデータに訂正可能なエラーがある場合は、前記エラーを訂正して外部に出力し、
前記物理アドレスを前記エラーテーブルに登録する不良領域検出方法。
【請求項２８】
前記エラーテーブルに物理アドレスが登録された物理ブロックのデータが書換えられたときに、前記データが書換えられたこと示す情報を前記エラーテーブルに登録し、
前記データが書き換えられた物理ブロックから読出したデータに訂正可能なエラーがある場合は、当該エラーを訂正して外部に出力すると共に、前記データが書き換えられた後にエラーが発生したことを示すエラー再発生情報を前記エラーテーブルに登録し、
前記エラー再発生情報が前記エラーテーブルに登録されている物理ブロックに対し、データの書込み及び読出しを禁止する請求項２７に記載の不良領域検出方法。
【請求項２９】
前記エラーテーブルに物理アドレスが登録された物理ブロックのデータが書換えられたときに、前記データが書換えられた回数を示すエラーブロック消去カウンタを前記エラーテーブルに登録し、
前記データが書き換えられた物理ブロックから読出したデータに訂正可能なエラーがある場合は、当該エラーを訂正して外部に出力すると共に、前記データが書き換えられた後にエラーが発生した回数を示すエラーカウンタを前記エラーテーブルに登録し、
前記エラーカウンタが所定の値以上を示したときに、前記エラーカウンタが登録された物理ブロックへのデータの書込み及び読出しを禁止する請求項２７に記載の不良領域検出方法。
【請求項３０】
消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなる不揮発性メモリと、前記不揮発性メモリからの読出しデータに対してエラーを検出する機能及びエラーの訂正が可能である場合には訂正をする機能を備える誤り訂正回路と、読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを複数保持するエラーテーブルを備えるメモリコントローラと、を具備する不揮発性記憶装置において、
外部から指定された論理アドレスから物理アドレスを決定してデータを読出す物理ブロックを特定する特定ステップと、
前記物理ブロックからデータを読出すデータ読出しステップと、
当該読出したデータに訂正可能なエラーがある場合は、前記エラーを訂正して外部に出力するデータ出力ステップと、
前記訂正可能なエラーを発生した物理ブロックの物理アドレスとエラー数に関する情報とを前記エラーテーブルに登録するエラー数登録ステップと、を有する不良領域検出方法。
【請求項３１】
前記エラーテーブルに登録されたエラー数に関する情報が、所定の値以上を示したときに、前記物理ブロックに書込まれているデータを別の物理ブロックに複写する複写ステップを有する請求項３０記載の不良領域検出方法。
【請求項３２】
前記複写ステップを、前記データ読出しステップと前記データ出力ステップの間に行なう請求項３１に記載の不良領域検出方法。
【請求項３３】
前記複写ステップを、前記不揮発性記憶装置に対して、外部からのデータ書込み及び読出しを実行していないときに行なう請求項３１に記載の不良領域検出方法。
【請求項３４】
前記複写ステップを、前記不揮発性記憶装置に対して電源が投入した直後に行なう請求項３３に記載の不良領域検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、不揮発性メモリに記録したデータの信頼性を向上させるための誤り訂正機能を用いた不揮発性記憶装置において、不揮発性メモリの不良により発生する偶発的ではない読出しエラーを低減するための不揮発性記憶装置、メモリメモリコントローラ及び不良領域検出方法に関する。
【背景技術】
【０００２】  近年、不揮発性メモリを搭載したメモリカードは、デジタルカメラや携帯電話のメモリカードとして市場を拡大している。しかし、不揮発性メモリは、データを書きかえる度にメモリセルが徐々に劣化し、最終的には書込みや読出しのエラーが起こる。もちろん十分に信頼性が高く、書換えによるメモリセルの劣化をほぼ無視できるのであれば、たとえ１０年間の使用においてもなんら問題はない。しかし、実際にはそうではないこともあり、不揮発性メモリを制御するシステムにＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ）回路などの誤り訂正回路を搭載することで、実質的に信頼性の高いメモリカードが実現されている。【０００３】  しかし、プロセスの微細化によってメモリセルのサイズを小さくすることや、大容量化のための多値化によりメモリセル単体の信頼性を保つことが困難となっている。また、大容量化が進むとともにメモリのパターンが増加し、製品検査の時間も増えるので、デバイスを十分に精度高く検査することは困難になっている。【０００４】  フラッシュメモリの書込みや読出しのエラーを管理する方法として、特許文献１には読出し、書込みにおけるエラー発生情報をカウントして、劣化した領域は使用しないようにする方法が提案されている。また特許文献２には、読出しエラーが連続する領域について代替処理を行う方法が提案されている。
【特許文献１】特開平１１−５３２６６号公報
【特許文献２】ＷＯ０１／０２２２３２
【発明の開示】
【発明が解決しようとする課題】
【０００５】  フラッシュメモリを含む大部分の不揮発性メモリは、メモリセルにバイアス等のエネルギーを印加することなくデータを保持し続けるという性能を有している。これは、データを保持している状態が安定であるということを示している。揮発性のメモリであるＳＲＡＭがエネルギーの印加によってデータを保持していることとは全く異なっている。従って不揮発性メモリのデータを書換えるには安定状態にあるメモリセルにエネルギーを印加する必要があるので、この際にわずかではあるがメモリセルの劣化が起こる。【０００６】  フラッシュメモリなどの不揮発性メモリで発生する、メモリセルの劣化を原因とするエラーは、データの書換えに大きく起因しており、データの読出しによる影響は小さい。このことを考慮することでエラー発生時の処理を適切に行うことができるが、特許文献１や特許文献２に記載の不揮発性記憶装置では、書換えと読出しによる不揮発性メモリの劣化が十分には考慮されていない。またデータの読出しによるエラー発生への影響は書換えに比べると極めて小さいが、同じデータに対する読出しを数多く繰り返す場合には、メモリセルの劣化ではなく、徐々に進行するデータ自身の劣化が見られるので、データ読出しの影響も無視できない。しかし、特許文献１や特許文献２に記載の不揮発性記憶装置は、このような進行性のデータの劣化を十分に考慮したものではない。【０００７】  例えば、一般的な不揮発性メモリの代表であるＮＡＮＤ型フラッシュメモリは、ＥＣＣ回路による誤り訂正を前提として製品化されている。それは偶発的なビットエラーが、不揮発性メモリにおいて回避できないからである。そのために、ＮＡＮＤ型フラッシュメモリを使用しているメモリカードのメモリコントローラは、その内部にＥＣＣ符号を生成する機能や誤りを検出して訂正する機能を持っている。メモリコントローラは、ＥＣＣ回路を用いて偶発的なビットエラーを訂正して、エラーが発生した物理ブロックを再利用する。これによりメモリカードの実質的な信頼性が向上する。【０００８】  しかしながら、偶発的なビットエラーに比べると頻度は低いものの、メモリセルの劣化等の原因で物理ブロックに固定的に存在する不良により、読出し時にビットエラーが発生することがある。信頼性が十分高く、ビットエラーの発生頻度が低いＮＡＮＤ型フラッシュメモリを使用している場合には、従来のメモリコントローラのように、発生したビットエラーを偶発的なものか固定不良によるものかを判断することなく、物理ブロックの使用を制限しても、フラッシュメモリの使用において問題は起こらない。しかし、フラッシュメモリのプロセスの微細化や多値化により、ビットエラーの発生頻度は従来より高くなっている。このことから、誤り訂正を行うことを前提として、ビットエラーの存在を許容する必要があり、ビットエラーが発生しても誤りを訂正してフラッシュメモリを使用し続ける必要がある。ところが、ビットエラーの要因がメモリセルの固定不良に起因する場合には、固定不良が存在する物理ブロックはメモリカードの読み出しエラーを頻発させる。【０００９】  例えば、メモリカードの物理ブロックに存在する固定不良によりデータエラーが発生して、デジタルカメ��で撮影した静止画を見ることができない場合がある。この場合に静止画のデータをデジタルカメラのシステム上で削除すると、以降撮影する静止画に対して同一のブロックが再利用されて、データエラーが再度発生してしまう。このようにして静止画を見られないケースが頻発する。【００１０】  また、固定不良ではなくても、同じデータに対して非常に多くの回数の読み出しを繰り返すと、徐々にではあるがビットエラーが増加し、データが劣化していく場合がある。この場合でも、信頼性が十分高く、ビットエラーの発生頻度が低いＮＡＮＤ型フラッシュメモリを使用している場合には、従来のメモリコントローラのようにビットエラーの発生によって物理ブロックの使用を制限してもよい。しかし、誤り訂正を行うことが前提となっている場合、即ちビットエラーの存在を許容する必要がある場合には、ビットエラーが発生しても誤りを訂正してフラッシュメモリを使用し続ける必要がある。そのためにデータの劣化によるビットエラーのビット数が誤り訂正能力を超えてしまい、訂正不可能な読出しエラーが発生する結果を招く。これらのことを受けて、読出しエラーを低減させるメモリカードの開発が課題となっている。【００１１】  本発明は、フラッシュメモリ内で固定不良が存在していると推測される、又は読出しによるビット不良が累積して誤り訂正能力を超えると推測される物理ブロックを適確に検出する。さらに、その物理ブロックに対する書込みまたは読出しを制限又は回避することにより信頼性の高い不揮発性記憶装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】  この課題を解決するために、本発明の不揮発性記憶装置は、不揮発性メモリとメモリコントローラを具備する不揮発性記憶装置であって、前記不揮発性メモリは、消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなるものであり、前記メモリコントローラは、前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、前記不揮発性メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正をする機能とを備える誤り訂正回路と、前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、前記メモリコントローラのアドレステーブルは、前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新し、前記読出しエラーを検出した物理ブロックを使用するかどうかを決めるものである。【００１３】  ここで前記メモリコントローラのアドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備え、前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、前記エラーが発生したことを示す情報を記録するエラー情報と、前記エラーが発生した後に、前記物理ブロックのデータを消去して新たなデータを書込んだことを示す情報を記録するエラーブロック消去情報と、前記エラーブロック消去情報に情報が記録された後、同一の物理ブロックで再度読出しエラーを検出したことを示すエラー再発生情報とを備え、前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて少なくとも前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在したときは、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録するようにしてもよい。【００１４】  ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるようにしてもよい。【００１５】  ここで前記演算処理ユニットは、前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新するようにしてもよい。【００１６】  ここで前記演算処理ユニットは、前記誤り訂正回路が検出��た読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新するようにしてもよい。【００１７】  ここで前記メモリコントローラのアドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備え、前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、読出しエラーが発生した回数を示す情報であるエラーカウンタ情報と、前記読出しエラーの発生した物理ブロックを物理消去した回数を示すエラーブロック消去カウンタ情報とを備え、前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報が記録された前記エラーレコードが存在したときは、前記エラーカウンタ情報と前記エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を示しかつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値であるときに、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録するようにしてもよい。【００１８】  ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるようにしてもよい。【００１９】  ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新するようにしてもよい。【００２０】  ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新するようにしてもよい。【００２１】  ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスが書かれたエラーブロック情報と、前記誤り訂正回路が前記読出しエラーを検出した物理ページのアドレスが書かれたエラーページ情報と、前記読出しエラーのビット数を示す情報を記録するエラービットカウンタとを備え、前記演算処理ユニットは、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよい。【００２２】  ここで前記演算処理ユニットは、外部からの前記不揮発性メモリに対してデータ読出し処理が行われていないときに、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている��記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよい。【００２３】  ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスを示す情報を記録するエラーページ情報と、前記誤り訂正回路によって訂正可能なエラービット数以下の値であって予め定められた訂正閾値以上の読出しエラーが発生したことを示す情報を記録するエラー発生情報とを備え、前記演算処理ユニットは、前記エラー発生情報が記録された前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよい。【００２４】  ここで前記演算処理ユニットは、前記不揮発性メモリのデータを読出す処理が行われていないときに、前記エラー発生情報が記録された前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよい。【００２５】  この課題を解決するために、本発明のメモリコントローラは、消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなる不揮発性メモリに対して、データの読出し及び書込みを制御するメモリコントローラであって、前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、前記不揮発性メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正をする機能とを備える誤り訂正回路と、前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、前記アドレステーブルは、前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新し、前記読出しエラーを検出した物理ブロックを使用するかどうかを決めるものである。【００２６】  ここで前記アドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備え、前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、前記エラーが発生したことを示す情報を記録するエラー情報と、前記エラーが発生した後に、前記物理ブロックのデータを消去して新たなデータを書込んだことを示す情報を記録するエラーブロック消去情報と、前記エラーブロック消去情報に情報が記録された後、同一の物理ブロックで再度読出しエラーを検出したことを示すエラー再発生情報とを備え、前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて少なくとも前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在したときは、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録するようにしてもよい。【００２７】  ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるようにしてもよい。【００２８】  ここで前記演算処理ユニットは、前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新するようにしてもよい。【００２９】  ここで前記演算処理ユニットは、前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新するようにしてもよい。【００３０】  ここで前記アドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備え、前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、読出しエラーが発生した回数を示す情報であるエラーカウンタ情報と、前記読出しエラーの発生した物理ブロックを物理消去した回数を示すエラーブロック消去カウンタ情報とを備え、前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報が記録された前記エラーレコードが存在したときは、前記エラーカウンタ情報と前記エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を示しかつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値であるときに、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録するようにしてもよい。【００３１】  ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるようにしてもよい。【００３２】  ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新するようにしてもよい。【００３３】  ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、前���誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新するようにしてもよい。【００３４】  ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスが書かれたエラーブロック情報と、前記誤り訂正回路が前記読出しエラーを検出した物理ページのアドレスが書かれたエラーページ情報と、前記読出しエラーのビット数を示す情報を記録するエラービットカウンタと、を備え、前記演算処理ユニットは、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよい。【００３５】  ここで前記演算処理ユニットは、外部からの前記不揮発性メモリに対してデータ読出し処理が行われていないときに、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよい。【００３６】  ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスを示す情報を記録するエラーページ情報と、前記誤り訂正回路によって訂正可能なエラービット数以下の値であって予め定められた訂正閾値以上の読出しエラーが発生したことを示す情報を記録するエラー発生情報とを備え、前記演算処理ユニットは、前記エラー発生情報が記録された前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよい。【００３７】  ここで前記演算処理ユニットは、前記不揮発性メモリのデータを読出す処理が行われていないときに、前記エラー発生情報が記録された前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよい。【００３８】  この課題を解決するために、本発明の不良領域検出方法は、消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなる不揮発性メモリと、前記不揮発性メモリからの読出しデータに対してエラーを検出する機能及びエラーの訂正が可能である場合には訂正をする機能を備える誤り訂正回路と、読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを複数保持するエラーテーブルを備えるメモリコントローラと、を具備する不揮発性記憶装置の不良領域検出方法において、データを読み出すときに外部から指定された論理アドレスから物理アドレスを決定し、前記物理アドレスに対応する物理ブロックからデータを読出し、当該読出したデータに訂正可能なエラーがある場合は、前記エラーを訂正して外部に出力し、前記物理アドレスを前記エラーテーブルに登録するものである。【００３９】  ここで前記エラーテーブルに物理アドレスが登録された物理ブロックのデータが書換えられたときに、前記データが書換えられたこと示す情報を前記エラーテーブルに登録し、前記データが書き換えられた物理ブロックから読出したデータに訂正可能なエラーがある場合は、当該エラーを訂正して外部に出力すると共に、前記データが書き換えられた後にエラーが発生したことを示すエラー再発生情報を前記エラーテーブルに登録し、前記エラー再発生情報が前記エラーテーブルに登録されている物理ブロックに対し、データの書込み及び読出しを禁止するようにしてもよい。【００４０】  ここで前記エラーテーブルに物理アドレスが登録された物理ブロックのデータが書換えられたときに、前記データが書換えられた回数を示すエラーブロック消去カウンタを前記エラーテーブルに登録し、前記データが書き換えられた物理ブロックから読出したデータに訂正可能なエラーがある場合は、当該エラーを訂正して外部に出力すると共に、前記データが書き換えられた後にエラーが発生した回数を示すエラーカウンタを前記エラーテーブルに登録し、前記エラーカウンタが所定の値以上を示したときに、前記エラーカウンタが登録された物理ブロックへのデータの書込み及び読出しを禁止するようにしてもよい。【００４１】  この課題を解決するために、本発明の不良領域検出方法は、消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなる不揮発性メモリと、前記不揮発性メモリからの読出しデータに対してエラーを検出する機能及びエラーの訂正が可能である場合には訂正をする機能を備える誤り訂正回路と、読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを複数保持するエラーテーブルを備えるメモリコントローラと、を具備する不揮発性記憶装置の不良領域検出方法において、外部から指定された論理アドレスから物理アドレスを決定してデータを読出す物理ブロックを特定する特定ステップと、前記物理ブロックからデータを読出すデータ読出しステップと、当該読出したデータに訂正可能なエラーがある場合は、前記エラーを訂正して外部に出力するデータ出力ステップと、前記訂正可能なエラーを発生した物理ブロックの物理アドレスとエラー数に関する情報とを前記エラーテーブルに登録するエラー数登録ステップと、を有するものである。【００４２】  ここで前記エラーテーブルに登録されたエラー数に関する情報が、所定の値以上を示したときに、前記物理ブロックに書込まれているデータを別の物理ブロックに複写する複写ステップを有するものである。【００４３】  ここで前記複写ステップを、前記データ読出しステップと前記データ出力ステップの間に行なうようにしてもよい。【��０４４】  ここで前記複写ステップを、前記不揮発性記憶装置に対して、外部からのデータ書込み及び読出しを実行していないときに行なうようにしてもよい。【００４５】  ここで前記複写ステップを、前記不揮発性記憶装置に対して電源が投入した直後に行なうようにしてもよい。
【発明の効果】
【００４６】  本発明によれば、エラーの発生する確率が高いと想定される物理ブロックを適切に推定することで、当該物理ブロックのデータの書込みまたは読出しを制限又は回避することができ、信頼性の高い不揮発性記憶装置を提供することができる。
【図面の簡単な説明】
【００４７】
【図１】図１は第１の実施例の不揮発性記憶装置の構成を示したブロック図。
【図２】図２はフラッシュメモリの内部の構成を示したブロック図。
【図３】図３は物理ブロック２０１の内部の構成を示したブロック図。
【図４】図４はＢＢテーブル１１２の構成を示した図。
【図５】図５はＥＣＣエラーテーブル１１１の構成を示した図。
【図６】図６は第１の実施例のＥＣＣエラーレコードとＥＣＣエラーレコードに格納する情報の変化について示した図。
【図７】図７は第１の実施例の読出しのフローチャート。
【図８】図８は第１の実施例のＥＣＣエラーテーブル登録のフローチャート。
【図９】図９は第１の実施例の物理消去時のＥＣＣエラーテーブル更新のフローチャート。
【図１０】図１０は第２の実施例のＥＣＣエラーレコードを示した図。
【図１１】図１１は第２の実施例のＥＣＣエラーテーブル登録のフローチャート。
【図１２】図１２は第３の実施例のＥＣＣエラーレコードとＥＣＣエラーレコードに格納する情報の変化について示した図。
【図１３】図１３は第３の実施例のＥＣＣエラーテーブル登録のフローチャート。
【図１４】図１４は第３の実施例の物理消去時のＥＣＣエラーテーブル更新のフローチャート。
【図１５】図１５は第４の実施例の読出しのフローチャート。
【図１６】図１６は進行性エラーの発生状況を表す図。
【図１７】図１７は第５の実施例の不揮発性記憶装置の構成を示したブロック図。
【図１８】図１８はフラッシュメモリの内部の構成を示したブロック図。
【図１９】図１９は物理ブロック２０１の内部の構成を示したブロック図。
【図２０】図２０はＥＣＣエラーテーブル１１１の構成を示した図。
【図２１】図２１は第５の実施例のＥＣＣエラーレコードを示した図。
【図２２】図２２は第５の実施例の読出しのフローチャート。
【図２３】図２３は第５の実施例のＥＣＣエラーテーブル登録のフローチャート。
【図２４】図２４は第５の実施例のデータ訂正複写処理のフローチャート。
【図２５】図２５は第６の実施例の読出しのフローチャート。
【図２６】図２６は第６の実施例のデータ訂正複写処理のフローチャート。
【符号の説明】
【００４８】  １０１  メモリカード
１０２  メモリコントローラ
１０３  フラッシュメモリ
１０４  ホストインターフェース
１０５  ＭＰＵ
１０６  アドレステーブル
１０７  フラッシュインターフェース
１０８  バッファメモリ
１０９  ＥＣＣ回路
１１０  論物変換テーブル
１１１  ＥＣＣエラーテーブル
１１２  ＢＢテーブル
１１３  エントリテーブル
５０１  ＥＣＣエラーレコード
６０１  エラーブロック
６０２  エラー発生情報
６０３  エラーブロック消去情報
６０４  エラー再発生情報
７０１  メモリカード
７０２  メモリコントローラ
７０３  フラッシュメモリ
７０４  ホストインターフェース
７０５  ＭＰＵ
７０６  アドレステーブル
７０７  フラッシュインターフェース
７０８  バッファメモリ
７０９  ＥＣＣ回路
７１０  論物変換テーブル
７１１  ＥＣＣエラーテーブル
７１２  エントリテーブル
８０１  ＥＣＣエラーレコード
１００１  エラーページ
１２０１  エラーブロック
１２０２  エラーカウンタ
１２０３  エラーブロック消去カウンタ
１６０１  エラービットカウンタ
【発明を実施するための最良の形態】
【００４９】（実施例１）
図１は、第１の実施例の不揮発性記憶装置の構成を示すブロック図である。メモリカード１０１は、メモリコントローラ１０２と不揮発性メモリであるフラッシュメモリ１０３とを備えている。【００５０】  図２は、フラッシュメモリ１０３の内部の構成を示すブロック図である。ここでは、１Ｇビットの容量を持つフラッシュメモリについて説明する。フラッシュメモリ１０３の内部は、ＰＢ０〜ＰＢ１０２３の１０２４個の物理ブロックからなる。物理ブロックは、フラッシュメモリ１０３においてデータ消去の最小単位である。ひとつの物理ブロック容量は１２８ｋＢ＋４ｋＢであり、２の累乗の値ではなく２の累乗よりも少し大きい容量を持つ。ここで１３２ｋＢと表現せずに１２８ｋＢ＋４ｋＢと表現しているのは、ひとつの物理ブロックに書込みできるデータの容量は１２８ｋＢであり、これに加えてさらに４ｋＢの領域にＥＣＣ符号や当該物理ブロックの論理アドレス値等の管理データを書込むことを示すためである。【００５１】  図３は、物理ブロックの内部の構成を示すブロック図である。フラッシュメモリ１０３内の各物理ブロックは６４個の物理ページＰＰ０〜ＰＰ６３を備える。物理ページは、フラッシュメモリ１０３においてデータ書込みの最小単位である。ひとつの物理ページの容量は２ｋＢ＋６４Ｂである。この表現は、前述した物理ブロックの場合と同様に、ひとつの物理ページに書込みできるデータの容量は２ｋＢであり、残りの６４ＢにはＥＣＣを含む管理データを書込むことを示している。【００５２】  メモリコントローラ１０２は、ホストインターフェース１０４と、アドレステーブル１０６と、フラッシュインターフェース１０７と、バッファメモリ１０８と、ＥＣＣ回路１０９と、ＭＰＵ（小型演算ユニット）１０５とを有している。ホストインターフェース１０４は、メモリカード１０１の外部に接続されるホスト機器とのインターフェースを制御する。【００５３】  アドレステーブル１０６は、フラッシュメモリ１０３に格納されているデータの管理情報を持つテーブルであり、論物変換テーブル１１０と、ＥＣＣエラーテーブル１１１と、エントリテーブル１１３と、ＢＢ（不良ブロック）テーブル１１２とを有している。これらのテーブルは揮発性メモリに保持される。【００５４】  論物変換テーブル１１０は、メモリカード１０１の外部から指定する論理アドレスである論理ブロックのアドレスと、フラッシュメモリ１０３の内部の物理アドレスである物理ブロックのアドレスとの対応関係を示すテーブルである。論物変換テーブル１１０は論理アドレスから当該論理ブロックに対応する物理アドレスを得るためのものである。【００５５】  ＥＣＣエラーテーブル１１１は、読出しエラーが発生した物理ブロックの物理アドレスや、データの物理消去の履歴や、物理消去後の読出しエラーの発生履歴などの情報を持ち、固定不良の物理ブロックの検出に用いられる。【００５６】  エントリテーブル１１３は、フラッシュメモリ１０３の各々の物理ブロックに対してデータが書込み済みであるか、消去済みであるかについて、それぞれ１ビットで示す情報を持つテーブルである。例えばデータ書込み済みの物理ブロックはビット“０”で、消去済みの物理ブロックは���ット“１”で表す。【００５７】  ＢＢテーブル１１２の構成を図４に示す。ＢＢテーブル１１２は、フラッシュメモリ１０３の物理ブロックと同数のＢＢレコードｉ（ｉ＝０〜１０２３）を備えている。ＢＢレコードｉは、それぞれ物理ブロックと１対１に対応しており、対応する物理ブロックのアドレスを有している。さらに、対応する物理ブロックが不良ブロックであるか否かについて、１ビットで示す情報を有している。不良ブロックの物理ブロックはビット“０”、不良でない物理ブロックはビット“１”として、ＢＢレコードｉに表示する。ここでＢＢテーブル１１２は、全ての物理ブロックに対してＢＢレコードｉを持たなくてもよい。不良ブロックだけについてＢＢレコードｉを持っていてもよい。【００５８】  フラッシュインターフェース１０７は、後述するＭＰＵ１０５の制御によりフラッシュメモリ１０３にバッファメモリ１０８のデータを書込んだり、フラッシュメモリ１０３のデータをバッファメモリ１０８に書込んだり、フラッシュメモリ１０３のデータを消去したりする。バッファメモリ１０８は、外部のホスト機器とフラッシュメモリ１０３との間でのデータの書込み、読出しの際にデータを一時保持するための揮発性メモリである。【００５９】  ＥＣＣ回路１０９は、バッファメモリ１０８からフラッシュメモリ１０３へ転送される書込みデータに付加するＥＣＣの符号を生成する。またＥＣＣ回路１０９は、フラッシュメモリ１０３からバッファメモリ１０８に読み出されたデータについて、ＥＣＣ演算を行い誤りを検出し、その誤りが訂正可能な誤りであった場合には、バッファメモリ１０８のデータを訂正する誤り訂正回路である。【００６０】  ＭＰＵ１０５は、メモリコントローラ１０２全体の制御を行うマイクロコンピュータである。ホスト機器との間でデータの書込み、読出しを行う際には、ホストインターフェース１０４と、ＥＣＣ回路１０９と、フラッシュインターフェース１０７と、アドレステーブル１０６とを直接に制御する。特に読出しデータにエラーがあった場合、ＭＰＵ１０５は、アドレステーブル１０６内のＥＣＣエラーテーブル１１１の情報を参照し、必要に応じてＥＣＣエラーテーブル１１１の更新を行う。その結果、使用を禁止すべき物理ブロックがあれば、ＭＰＵ１０５は、ＢＢテーブル１１２のＢＢレコードｉに当該物理ブロックの情報を記録し、ＢＢテーブル１１２を更新する。さらにＭＰＵ１０５は、更新後のＢＢテーブルの内容に従ってエントリテーブルの更新も行う。【００６１】  図５は、ＥＣＣエラーテーブル１１１の構成を示す図である。ＥＣＣエラーテーブル１１１は、１６進数で表される＃０〜＃Ｆの１６個のＥＣＣエラーレコード♯ｉで構成されている。図６は、ＥＣＣエラーレコード♯ｉのフィールドとＥＣＣエラーレコード♯ｉに格納する情報の変化を示した図である。各ＥＣＣエラーレコード♯ｉは、エラーブロック６０１と、エラー発生情報６０２と、エラーブロック消去情報６０３と、エラー再発生情報６０４とを備えている。エラーブロック６０１は、読出しエラーの発生した物理ブロック２０１の物理アドレスを格納する。エラー発生情報６０２は、最初の読出しエラーが発生したことを示す情報である。エラーブロック消去情報６０３は、最初の読出しエラーが発生した後に当該物理ブロック２０１に対して物理消去が行われたことを示す情報である。エラー再発生情報６０４は、最初の読出しエラーが発生した後に物理消去を行ってもなお、同じ物理ブロックで読出しエラーが再発したことを示す情報である。【００６２】  図７は、本実施例の不揮発性記憶装置におけるデータ読出しのフローチャートである。外部ホスト機器がメモリカード１０１からデータを読み出す時には、外部ホスト機器が読出しコマンドと開始アドレスをメモリカード１０１に送る。このコマンドと開始アドレスを受信し、ホストインターフェース１０４はＭＰＵ１０５に対してその受信を通知する。図７のフローチャートは、この通知を受けてから後の処理を示している。【００６３】  ＭＰＵ１０５は、開始アドレスを用いて、１２８ｋＢ単位に対応する上位のアドレス部分を論理ブロックアドレスとして、論物変換テーブル１１０から物理ブロックアドレスを得る。１２８ｋＢ以下に対応する下位のアドレス部分は論理ページアドレスとして論理ページとそのまま同じものとする。次にＭＰＵ１０５は、読出しを行う物理ブロックのアドレスと物理ページのアドレスをフラッシュメモリインターフェース１０７に指示して、フラッシュメモリ１０３からデータを読出す（Ｓ７０１）。【００６４】  続いてＥＣＣ回路１０９は、Ｓ７０１で読出したデータに対して読出しエラーが発生しているかどうかを判定する（Ｓ７０２）。読出しエラーが検出されなかった場合、ＭＰＵ１０５はホストインターフェース１０４に対して外部ホスト機器へのデータの出力を指示する（Ｓ７０５）。その後読出しが継続する限り（Ｓ７０６）、読出しの単位でアドレスを増加させながらＳ７０１へとループしてデータの読み出し処理は継続する。【００６５】  Ｓ７０２で読出しエラーが検出された場合、ＥＣＣ回路１０９は、その読出しエラーが訂正可能であるかどうかを判断する（Ｓ７０３）。訂正可能である場合には読出しエラーを訂正する（Ｓ７０４）。読出しエラーの訂正後、Ｓ７０５へと遷移して読出しデータを出力する。読出しエラーの訂正が不可能である場合、ＥＣＣエラーテーブルの登録を行い（Ｓ７０７）、登録後に読出し処理を終了する。【００６６】  ここで、ＥＣＣエラーテーブルの登録処理（Ｓ７０７）を図８のフローチャートを用いて説明する。読出しエラーの訂正が不可能であれば、ＭＰＵ１０５がＥＣＣエラーテーブル１１１の登録状態を検索する（Ｓ８０１）。具体的には、読出しエラーを発生した物理ブロックの物理アドレスが、ＥＣＣエラーレコード♯ｉのいずれかのエラーブロック６０１の値と一致するかを調べる。【００６７】  次に、Ｓ８０１の検索で一致するＥＣＣエラーレコード♯ｉがないときは、登録なしと判断される（Ｓ８０２）。続いてＭＰＵ１０５は、エラーブロック６０１とエラー発生情報６０２とを新規登録する（Ｓ８０３）。図６（ｂ）は新規登録後の状態を示している。エラーブロック６０１には読出しエラーの発生した物理ブロックのアドレスが有効値として書込まれている。エラー発生情報６０２には読出しエラーが発生したことを示す情報”１”が、エラーブロック消去情報６０３とエラー再発生情報６０４には”０”が書込まれている。【００６８】  Ｓ８０２において登録があった場合は、物理消去後に発生した読出しエラーかどうかを、ＭＰＵ１０５が判断する（Ｓ８０４）。エラーブロック６０１に登録のあったＥＣＣエラーレコード♯ｉのエラーブロック消去情報６０３が”０”であれば、物理消去後に発生した読出しエラーではないので、ＥＣＣエラーレコード♯ｉの更新とＥＣＣエラーテーブル１１１の登録を行わずに登録処理を終了する。読出しエラーが発生してエラー発生情報６０２に”１”を登録した後に読出しエラーの発生回数をカウントしても、同じブロックの同じデータを読み出す限りは、発生したエラーが偶発的なものか、固定不良によるものかを判断することはできない。よってＥＣＣエラーレコード♯ｉの更新を行わずに登録処理を終了する。【００６９】  Ｓ８０４において、エラーレコード＃ｉが、図６（ｃ）に示す状態であれば、エラーブロック消去情報６０３が”１”であり、物理消去後に発生した読出しエラーであることがわかる。このときは、図６（ｄ）に示すように、エラー再発生情報６０４を”１”に書き換えてから登録処理を終了する（Ｓ８０５）。つまり、ＥＣＣエラーレコード♯ｉの内容を更新すべき読出しエラーとは、一旦読み出しエラーが発生した物理ブロックに対して物理消去を行った後に新たに書込んだデータでもなお発生する読出しエラーのことである。【００７０】  図９は、データの書込みに先立って行なわれる物理消去の際の、ＥＣＣエラーテーブル更新と不良ブロック登録のフローチャートである。外部ホスト機器がメモリカード１０１にデータを書込むときは、外部ホスト機器が書込みコマンドと書込み開始アドレスをメモリカード１０１に対して送る。このコマンドと開始アドレスを受けると、ＭＰＵ１０５はＥＣＣエラーテーブル１１１の登録状態を検索する（Ｓ９０１）。具体的には、書込み対象の物理ブロックのアドレスが、ＥＣＣエラーレコードのエラーブロック６０１の値と一致するかどうかを調べる。【００７１】  Ｓ９０１の検索で、書込み対象の物理ブロックに一致するＥＣＣエラーレコード♯ｉがない場合には登録なしと判断して（Ｓ９０２）、ＥＣＣエラーテーブル１１１の登録を行わずに登録処理を終了する。反対に、一致するＥＣＣエラーレコード♯ｉがある場合には登録ありと判定する（Ｓ９０２）。そして、エラー発生情報６０２だけが”１”でエラーブロック消去情報６０３とエラー再発生情報６０４が”０”のときは、エラー発生情報６０２にのみ記録があることになる。読出しエラーが発生した後の最初の物理消去であると判断する（Ｓ９０３）。その場合は、エラーブロック消去情報６０３に”１”を登録してＥＣＣエラーテーブル１１１の更新を終了する（Ｓ９０７）。【００７２】  次に、エラー発生情報６０２とエラーブロック消去情報６０３とが”１”で、エラー再発生情報６０４が”０”のときは、エラーブロック消去情報６０３まで記録があることになる（Ｓ９０４）。このことから以前エラーが発生したものの物理消去を行った後の書込みではエラーが発生していないことがわかる。即ち最初に発生したエラーは偶発的なエラーであったと判断する。その場合、当該ＥＣＣエラーレコード♯ｉ��登録を抹消してＥＣＣエラーテーブル１１１の更新は終了する（Ｓ９０６）。登録の抹消は、図６（ａ）のＥＣＣエラーレコード♯ｉのエラーブロック６０１の値を無効値とすることにより行なう。【００７３】  また図６（ｄ）のように、エラー発生情報６０２とエラーブロック消去情報６０３だけでなくエラー再発生情報６０４までが全て”１”のときは、以前読出しエラーが発生しており、当該物理ブロックに対して物理消去を行った後に書込んだデータでもなお読出しエラーが発生していたことがわかる。この場合は、固定不良に起因するエラーであると判断し、エラーが発生した物理ブロックを不良ブロックとして登録する（Ｓ９０５）。続いて、当該物理ブロックのＥＣＣエラーレコード♯ｉの登録を抹消してＥＣＣエラーテーブル１１１の更新を終了する（Ｓ９０６）。【００７４】  先に説明したとおりＳ９０５の不良ブロック登録とは、ＢＢテーブル１１２において、当該物理ブロックのアドレスに対応したＢＢレコードｉにビット“０”を登録することである。ＢＢレコードｉの登録で不良ブロックの登録が完了するが、これだけでは不良ブロックの使用を制限することはできない。そこで、ＢＢレコードｉにビット０として登録した物理ブロックについて、エントリテーブル１１３上でビット“０”を登録する。エントリテーブル１１３にビット“０”を登録すると、不良ブロックは書込み済みブロックとして扱われるので、不良ブロックの使用を制限できる。いずれにしても、不良ブロックとしてＢＢレコードｉに登録した物理ブロックについてエントリテーブルにビット“０”を登録することで、不良ブロックの使用を防ぐことができる。【００７５】  本実施例は、発生した読出しエラーが訂正不可能なときにだけＥＣＣエラーテーブルの登録、更新を行い、ＥＣＣエラーテーブル内のＥＣＣエラーレコードを物理ブロックアドレス単位で仕訳をし、同一の物理ブロックで、物理消去を挟んで２回のエラーが連続して発生したときに不良ブロック登録をすることを特徴としている。本実施例では、ＥＣＣエラーテーブルは、発生したエラーが偶発的なものか、固定不良によるものかを判断するための情報を持つ。つまり、最初の読出しエラー発生後当該物理ブロックのデータを物理消去して新たに書込んだデータで読出しエラーが発生しないのであれば、最初のエラーは偶発的なものであると判断できる。最初の読出しエラー発生後、当該物理ブロックのデータを物理消去して新たに書込んだデータでもなお、読み出しエラーが発生するのであれば、固定不良によるエラーであると判断できる。このように本実施例は偶発的なエラーか、固定不良によるエラーかを適確に判断できるものである。また、その判断にもとづき固定不良の物理ブロックを使わないことで、読出しエラーを低減させるという効果を生む。【００７６】（実施例２）
本実施例における不揮発性メモリ装置の構成は図１に示される。メモリカード１０１は、メモリコントローラ１０２と不揮発性メモリであるフラッシュメモリ１０３とを備えている。メモリコントローラ１０２に含まれる各構成要素は、第１の実施例で説明したものと同様である。【００７７】  図２は、フラッシュメモリ１０３の内部の構成を示すブロック図であり、フラッシュメモリ１０３の内部は、ＰＢ０〜ＰＢ１０２３の１０２４個の物理ブロックからなる。図３は、物理ブロックの内部の構成を示すブロック図であり、各物理ブロックは６４個の物理ページＰＰ０〜ＰＰ６３を備える。これらは、第１の実施例で説明したものと同様である。【００７８】  図５に示すＥＣＣエラーテーブル１１１は複数のＥＣＣエラーレコード♯ｉを備えており、第１の実施例で説明したものと同様である。【００７９】  本実施例のＥＣＣエラーレコード♯ｉの構成を、図１０に示す。図１０では、第１の実施例の図６で示したエラーブロック６０１、エラー発生情報６０２、エラーブロック消去情報６０３、エラー再発生情報６０４に加えて、エラーページ１００１が備わる。このエラーページ１００１は、読出しエラーが検出された物理ページのアドレスを情報として持っているので、ＥＣＣエラーレコード♯ｉは物理ページを単位として構成することができる。【００８０】  本実施例の不揮発性記憶装置におけるデータの読出しは、図７に示すフローチャートに準じて行なわれ、Ｓ７０７を除く各ステップでの処理は、第１の実施例と同様である。ここでは図１１を用いて、Ｓ７０３でエラー訂正が不可能なときに行うＳ７０７のＥＣＣエラーテーブル登録について説明する。まずＭＰＵ１０５は、ＥＣＣエラーテーブル１１１の登録状態を検索し、読出しエラーを発生した物理ブロックのアドレスをエラーブロック６０１に持ち、かつ当該エラーを発生した物理ページのアドレスをエラーページ１００１にもつＥＣＣエラーレコード♯ｉを探す（Ｓ１１０１）。【００８１】  Ｓ１１０１の検索で該当するＥＣＣエラーレコード♯ｉがない場合、ＭＰＵ１０５は、ＥＣＣエラーレコード＃ｉの登録がないと判断し（Ｓ１１０２）、エラー発生の情報をＥＣＣエラーレコード♯ｉに新規に登録する（Ｓ１１０３）。この登録は、エラーを発生したページが存在する物理ブロックのアドレスをエラーブロック６０１に、読出しエラーの発生を示す”１”をエラー発生情報６０２に、エラーを発生したページの物理ページアドレスをエラーページ１００１に書込むことで完了する。今回の登録では必要がないエラーブロック消去情報６０３、エラー再発生情報６０４には初期値を示す”０”を登録する。【００８２】  Ｓ１１０２で登録があると判断した場合、ＭＰＵ１０５が物理消去後の読出しエラーかどうかを判断する（Ｓ１１０４）。つまりＭＰＵ１０５は、登録のあったＥＣＣエラーレコード♯ｉのエラーブロック消去情報６０３が”０”であれば、まだ物理消去を行っておらず、物理消去後の読出しエラーではないと判断して、ＥＣＣエラーレコード♯ｉの更新を行わずに終了する。この判断は、同じ物理ページの同じデータを読み出す限りは、何度読み出しエラーが発生しても、偶発的なエラーか、固定不良によるエラーかを判断することはできないことを根拠にしている。【００８３】  図９は、物理消去時のＥＣＣエラーテーブル更新と不良ブロック登録を示すフローチャートであるが、第１の実施例とはＳ９０１の処理が異なるので説明する。Ｓ９０１の検索を、物理消去の単位である、物理ブロックアドレスをもとに行うと、物理ブロックアドレスが同じで、物理ページアドレスが違うＥＣＣエラーレコード♯ｉがいくつか検出されることがある。つまり、エラーブロック６０１の値が同じで、エラーページ１００１の値が異なるＥＣＣエラーレコード♯ｉが複数検出される（Ｓ９０１）。検出された複数のＥＣＣエラーレコード♯ｉはＳ９０１で検出された順に次のステップでの処理対象となるので、Ｓ９０２以降の処理は第１の実施例と同じである。【００８４】  また不良ブロック登録の方法と、エントリテーブルへの登録によって不良ブロックの使用を防ぐ方法とは、第１の実施例と同じである。【００８５】  本実施例は、ＥＣＣエラーレコード♯ｉの構成にエラーページ１００１を備え、物理ページのアドレスごとにＥＣＣエラーレコード♯ｉを新規登録することが特徴となっている。このことで、同一物理ブロック内で連続してエラーが発生した場合でも、異なる物理ページで発生したものであるか、同一の物理ページで発生したものかを区別することができ、偶発的なエラーか固定不良によるエラーかを精度高く判断できる。【００８６】  なお本実施例では、読出しを行うページの単位を、書込みの最小単位である物理ページとしたが、構成するシステムの読出しの単位もしくはＥＣＣ符号を付加する単位を用いても、物理ブロック単位でのエラー管理よりも精度の高いエラー管理ができる。ＥＣＣエラーテーブルの登録、更新は読出しエラーの訂正の可否にかかわらず行ってもよい。【００８７】（実施例３）
本実施例における不揮発性メモリ装置の構成は図１に示される。メモリカード１０１は、メモリコントローラ１０２と不揮発性メモリであるフラッシュメモリ１０３とを備えている。メモリコントローラ１０２に含まれる各構成要素は、第１の実施例で説明したものと同様である。【００８８】  図２は、フラッシュメモリ１０３の内部の構成を示すブロック図であり、フラッシュメモリ１０３の内部は、ＰＢ０〜ＰＢ１０２３の１０２４個の物理ブロックからなる。図３は、物理ブロックの内部の構成を示すブロック図であり、各物理ブロックは６４個の物理ページＰＰ０〜ＰＰ６３を備える。これらは、第１の実施例で説明したものと同様である。【００８９】  図５に示すＥＣＣエラーテーブル１１１は、複数のＥＣＣエラーレコード♯ｉを備えており、第１の実施例で説明したものと同様である。【００９０】  本実施例のＥＣＣエラーレコード♯ｉの構成を、図１２に示す。図１２は、ＥＣＣエラーレコード♯ｉのフィールドとＥＣＣエラーレコード♯ｉに格納する情報の変化を示している。エラーブロック１２０１は、エラーが発生した物理ブロックの物理アドレスを格納する。エラーカウンタ１２０２は、読出しエラーが発生した回数を格納する。当該物理ブロックの物理消去を経て新しく書込まれたデータでさらに読出しエラーが発生すれば、エラーカウンタ１２０２のエラーの回数を１回分増やす。エラーブロック消去カウンタ１２０３は読出しエラーの発生した物理ブロックを物理消去した回数を示す。【００９１】  本実施例の不揮発性記憶装置におけるデータの読出しは、図７に示すフローチャートに準じて行なわれ、Ｓ７０７を除く各ステップでの処理は第１の実施例と同様である。ここではＳ７０３でエラー訂正が不可能なときに行うＳ７０７のＥＣＣエラーテーブル登録について説明する。【００９２】  ＥＣＣエラーテーブルの登録処理を図１３に示す。まずＭＰＵ１０５がＥＣＣエラーテーブル１１１の登録状態を検索する（Ｓ１３０１）。具体的には、読出しエラーを発生した物理ブロックのアドレスをエラーブロック６０１にもつＥＣＣエラーレコード♯ｉを探すための検索である。【００９３】  Ｓ１３０１の検索で、物理アドレスの一致するＥＣＣエラーレコード♯ｉがない場合、ＭＰＵ１０５は、登録なしと判断し（Ｓ１３０２）、ＥＣＣエラーレコード♯ｉを新規に登録する（Ｓ１３０３）。新規登録後の状態を図１２（ｂ）に示す。エラーブロック１２０１には、読出しエラーの発生した物理ブロックのアドレスが有効値として書込まれる。エラーカウンタ１２０２には、読出しエラーが１回発生したことを示す”１”が書込まれる。エラーブロック消去カウンタ１２０３には、エラー発生後の物理消去回数が０回であることを示す”０”が書込まれる。【００９４】  Ｓ１３０２で登録ありと判断したときは、ＭＰＵ１０５は、登録されているＥＣＣエラーレコード♯ｉを参照して、物理消去後に発生した最初のエラーかどうかを判断する（Ｓ１３０４）。具体的には、Ｓ１３０１で検出したＥＣＣエラーレコード♯ｉのエラーカウンタ１２０２とエラーブロック消去カウンタ１２０３とを比較する。エラーカウンタ１２０２が、エラーブロック消去カウンタ１２０３よりも大きい値���あれば、ＥＣＣエラーレコード♯ｉの直前の更新が読み出しエラー発生によるエラーカウンタ１２０２の増加であると判断する。読み出しエラーが発生した後に物理消去が行われていないことになるので、ＥＣＣエラーレコード♯ｉの更新をせずにＥＣＣエラーテーブル１１１の登録を終了する。一旦エラーカウンタ１２０２を登録もしくは更新した後は、当該物理ブロック２０１の物理消去が行われない限り、何度読出しのエラーが発生しても偶発的なエラーか、固定不良によるエラーかを判断することはできない。よって、エラーカウンタ１２０２がエラーブロック消去カウンタ１２０３よりも大きい値であれば、さらにエラーカウンタ１２０２を増加させることはない。【００９５】  次に、エラーカウンタ１２０２とエラーブロック消去カウンタ１２０３の値が同じであれば、ＥＣＣエラーレコード♯ｉの直前の更新が物理消去によるエラーブロック消去カウンタ１２０３の増加であると判断する。エラーが発生した後に物理消去をおこなったことになるので、ＭＰＵ１０５は、物理消去後に読み出しエラーが発生したと判断してＳ１３０５へ遷移する。そして図１２において、（ｃ）から（ｄ）、（ｅ）から（ｆ）への変化のように、エラーカウンタ１２０２の情報を１増加して書き換えてからテーブルの更新を終了する。ＥＣＣエラーレコード♯ｉの内容を更新すべき読出しエラーとは、一旦読み出しエラーが発生した物理ブロックに対して物理消去を行った後に、新たに書込んだデータでもなお発生する読み出しエラーである。【００９６】  図１４は、データ書込みに先立つ物理消去時のＥＣＣエラーテーブル更新のフローチャートである。まずＭＰＵ１０５が、ＥＣＣエラーテーブル１１１の登録状態を検索する（Ｓ１４０１）。具体的には、物理消去の対象であるフラッシュメモリ１０３の物理ブロックのアドレスをエラーブロック１２０１に持つＥＣＣエラーレコードを探すための検索である。【００９７】  Ｓ１４０１の検索で物理アドレスの一致するＥＣＣエラーレコード♯ｉがない場合、ＭＰＵ１０５は、登録なしと判定して（Ｓ１４０２）、ＥＣＣエラーテーブル１１１を更新せずに終了する。Ｓ１４０１の検索で該当するＥＣＣエラーレコード♯ｉがある場合には登録ありと判定する（Ｓ１４０２）。【００９８】  続いてＭＰＵ１０５は、ＥＣＣエラーレコード♯ｉを参照して、物理消去後のエラーが発生しているかどうかを判定する（Ｓ１４０３）。具体的には、エラーカウンタ１２０２とエラーブロック消去カウンタ１２０３とを比較して両者が同じ値であれば、ＥＣＣエラーレコード♯ｉの直前の更新が、物理消去によるエラーブロック消去カウンタ１２０３の増加であり、消去後にエラーが発生していないと判断する。このことから、物理消去前に発生した読み出しエラーは偶発的なエラーであったと判断する。この判断の後、ＭＰＵ１０５は、ＥＣＣエラーレコード♯ｉの登録を抹消して（Ｓ１４０４）ＥＣＣエラーテーブル１１１の更新を終了する。図１２（ａ）のようにエラーブロック１２０１の値を無効値とすることで登録を抹消できる。【００９９】  また、ＥＣＣエラーレコード♯ｉのエラーカウンタ１２０２とエラーブロック消去カウンタ１２０３とを比較して、エラーカウンタ１２０２がエラーブロック消去カウンタ１２０３よりも大きい値であれば、ＥＣＣエラーレコード♯ｉの直前の更新がエラー発生によるエラーカウンタ１２０２の増加であり、Ｓ１４０３で消去後のエラーが発生していると判断できる。ＭＰＵ１０５は、エラーカウンタ１２０２を参照し（Ｓ１４０５）、予め定めた規定回数以内であるかどうかを判断する。規定回数以内であれば不良ブロック登録を行う必要は無いので、ＥＣＣエラーテーブル１１１のエラーブロック消去カウンタ１２０３の値を１だけ増やして（Ｓ１４０６）、ＥＣＣエラーテーブル１１１の更新を終了する。Ｓ１４０５でエラーが規定回数を超えている場合には、固定不良を有する物理ブロックであるとみなして、不良ブロック登録を行う。不良ブロック登録とは、当該物理ブロックのアドレスに対応するＢＢレコードｉに登録する（Ｓ１４０７）。不良ブロックの登録後、当該物理ブロックのＥＣＣエラーレコード♯ｉの登録を抹消する（Ｓ１４０４）。【０１００】  不良ブロック登録の方法と、エントリテーブルへの登録によって不良ブロックの使用を防ぐ方法は、第１の実施例と同様である。【０１０１】  多値のフラッシュメモリのように偶発的なビットエラーの発生頻度が高いフラッシュメモリを用いた記憶装置の場合、同一の物理ブロックまたはページで、物理消去を挟んで、偶発的なビットエラーが連続して発生することもある。この場合、固定不良を有していないこの物理ブロックを不良ブロックとして登録してしまい、当該物理ブロックの使用を制限するのは適当ではない。そこで本実施例は、不良ブロック登録をするまでのエラーの発生回数を、３回以上の回数で任意に設定できるようにしている。不良ブロック登録をするまでのエラー発生回数の規定値を大きくとることで、適確に固定不良を検出することができる。【０１０２】  尚、本実施例のＥＣＣエラーレコード♯ｉに物理ブロックページを記録するエラーページ情報を付加して、エラーテーブルを物理ページ単位で登録してもよい。また、ＥＣＣエラーテーブルの登録、更新は読出しエラーの訂正の可否にかかわらず行ってもよい。【０１０３】（実施例４）
本実施例における不揮発性メモリ装置の構成は図１に示される。メモリカード１０１は、メモリコントローラ１０２と不揮発性メモリであるフラッシュメモリ１０３とを備えている。メモリコントローラ１０２に含まれる各構成要素は、第１の実施例で説明したものと同様である。【０１０４】  図２は、フラッシュメモリ１０３の内部の構成を示すブロック図であり、フラッシュメモリ１０３の内部は、ＰＢ０〜ＰＢ１０２３の１０２４個の物理ブロックからなる。図３は、物理ブロックの内部の構成を示すブロック図であり、各物理ブロックは６４個の物理ページＰＰ０〜ＰＰ６３を備える。これらは、第１の実施例で説明したものと同様である。【０１０５】  図５に示すＥＣＣエラーテーブル１１１は、複数のＥＣＣエラーレコード♯ｉを備えており、第１の実施例で説明したものと同様である。【０１０６】  図１５は、本実施例の不揮発性記憶装置における、データ読出しのフローチャートである。Ｓ１５０１での処理は、第１の実施例でのＳ７０１と同じ処理である。【０１０７】  Ｓ１５０１に続いて、ＥＣＣ回路１０９は、読出したデータに対して読出しエラーが発生しているかどうかを判定する（Ｓ１５０２）。読出しエラーが発生していない場合、ＭＰＵ１０５は、ホストインターフェース１０４に対して外部ホスト機器へのデータの出力を指示する（Ｓ１５０６）。その後読出しが継続する限り（Ｓ１５０７）、読出しの単位でアドレスを増加させながらＳ１５０１へとループしてデータの読み出し処理は継続する。【０１０８】  読み出しエラーが発生しているかどうかを判定し（Ｓ１５０２）、読出しエラーが発生していた場合には、ＥＣＣエラーテーブル１１１に対してＥＣＣエラーレコード＃ｉの登録を行う（Ｓ１５０３）。ＥＣＣエラーテーブル１１１への登録が終わると、ＥＣＣ回路１０９が、その読出しエラーについて訂正可能であるかどうかを判断し（Ｓ１５０４）、訂正可能である場合には読出しエラーを訂正する（Ｓ１５０５）。読出しエラー訂正後、読出しデータを出力し、データの読み出しが継続するかどうかを判定する（Ｓ１５０７）。尚、読出しエラーの訂正が不可能である場合には（Ｓ１５０４）、直ちに読出しを終了する。【０１０９】  本実施例では、読出しエラーを検出すればエラー訂正の可、不可にかかわらず、ＥＣＣエラーテーブル１１１の登録を行う。ＥＣＣエラーテーブル１１１の登録方法は、第１の実施例と同じであり、図８に示すとおりである。【０１１０】  データの書込みに先立って行なわれる物理消去時のＥＣＣエラーテーブル更新と不良ブロック登録は、第１の実施例と同じであり、図９に示すとおりである。【０１１１】  不良ブロック登録の方法と、エントリテーブルへの登録によって不良ブロックの使用を防ぐ方法は、第１の実施例と同じである。【０１１２】  二値のフラッシュメモリのように偶発的なビットエラーの発生頻度が低いフラッシュメモリ１０３でメモリカードを構成した場合、訂正不可能なエラーが、物理消去を挟んで２回続いて発生する頻度は非常に低く、ほとんどのエラーは訂正可能なものである。固定不良に起因するエラーであっても訂正可能であることが多いので、エラー訂正が不可能な場合にのみＥＣＣエラーテーブルの登録をしていたのでは、固定不良の存在する物理ブロックを適確に検出することができない。これに対して本実施例は、ビットエラーを検出すると、エラー訂正の可、不可にかかわらずＥＣＣエラーテーブルにＥＣＣエラーレコード＃ｉを登録するので、偶発的なビットエラーの発生頻度が低いフラッシュメモリでも適切に固定不良の存在する物理ブロックの使用を制限できる。【０１１３】  尚、本実施例のＥＣＣエラーレコード♯ｉに物理ブロックページを記録するエラーページ情報を付加して、エラーテーブルを物理ページ単位で登録してもよい。また、ＥＣＣエラーテーブルの登録、更新は読出しエラーの訂正の可否にかかわらず行ってもよい。【０１１４】（実施例５）
図１６は、ある一つの物理ブロックに書込まれているデータを繰り返し読み出すと、読出しの回数に応じてビットエラーが増加していく様子を表している。図中、網目模様は発生したエラーのビット数を表しており、読み出し回数が増えるにつれて、ＥＣＣ回路の訂正能力を表すＥＣＣ訂正可能ビット数の破線に向かって増加している。データ読出しのためにメモリセルに印加される電圧などが原因でメモリセルに書込まれたビットが変化してしまい、このようなエラーが発生する。本実施例では、このようなエラーを進行性エラーと呼ぶ。【０１１５】  図１６のＥ／Ｗで表される箇所は、データの消去と書込みを表しており、物理ブロックのデータを消去してから、その同じ物理ブロックに新たなデータを書込んだことを示している。Ｅ／Ｗの直後は進行性エラーが一旦無くなるが、データの読出し回数が増えると、漸次進行性エラーのビット数が増加するため、ＥＣＣ回路の訂正能力に余力がなくなる。このままの状態でデータの読み出しを繰り返して、ＥＣＣ回路の訂正能力を超えるビット数のエラーが発生するのは好ましくない。そこで、ＥＣＣ回路の訂正可能ビット数以下に訂正閾値を設け、ある物理ブロックから読み出したデータに訂正閾値以上のビット数のエラーが検出されると、検出されたエラーを訂正して、訂正された当該データを別の物理ブロックに書込む。こうすることで進行性エラーが一旦無くなり、データの安全性が確保されるとともに、ＥＣＣ回路の訂正能力に余力が取り戻される。尚、本実施例では、ＥＣＣ回路の訂正可能ビット数、訂正閾値ともに４ビットとする。本実施例では、上記の事情に対応するための方法を以下に説明する。【０１１６】  以下に、本実施例について説明する。図１７は、本実施例の不揮発性記憶装置の構成を示すブロック図である。メモリカード７０１は、メモリコントローラ７０２と不揮発性メモリであるフラッシュメモリ７０３とを備えている。【０１１７】  図１８は、フラッシュメモリ７０３の内部の構成を示すブロック図である。ここでは、１Ｇビットの容量を持つフラッシュメモリについて説明する。フラッシュメモリ７０３の内部は、ＰＢ０〜ＰＢ１０２３の１０２４個の物理ブロックからなる。物理ブロックは、フラッシュメモリ７０３においてデータ消去の最小単位である。ひとつの物理ブロック容量は１２８ｋＢ＋４ｋＢで表される。これは、ひとつの物理ブロックのデータ容量は１２８ｋＢであり、さらに４ｋＢの領域にＥＣＣ符号や当該物理ブロックの論理アドレス値等の管理データが書込まれることを示す。【０１１８】  図１９は、物理ブロックの内部の構成を示すブロック図である。フラッシュメモリ７０３内の各物理ブロックは６４個の物理ページＰＰ０〜ＰＰ６３を備える。物理ページは、フラッシュメモリ７０３においてデータ書込みの最小単位である。ひとつの物理ページの容量は２ｋＢ＋６４Ｂである。これは、ひとつの物理ページに書込みできるデータの容量は２ｋＢであり、残りの６４ＢにはＥＣＣを含む管理データが書込まれることを示す。【０１１９】  メモリコントローラ７０２は、ホストインターフェース７０４と、アドレステーブル７０６と、フラッシュインターフェース７０７と、バッファメモリ７０８と、��ＣＣ回路７０９と、ＭＰＵ（小型演算ユニット）７０５とを有している。ホストインターフェース７０４は、メモリカード７０１の外部に接続されるホスト機器とのインターフェースを制御する。【０１２０】  アドレステーブル７０６は、フラッシュメモリ７０３に格納されているデータの管理情報を持つテーブルであり、論物変換テーブル７１０と、ＥＣＣエラーテーブル７１１と、エントリテーブル７１２とを有している。これらのテーブルは揮発性メモリに保持される。【０１２１】  論物変換テーブル７１０は、メモリカード７０１の外部から指定する論理アドレスである論理ブロックのアドレスと、フラッシュメモリ７０３の内部の物理アドレスである物理ブロックのアドレスとの対応関係を示すテーブルである。論物変換テーブル７１０は論理アドレスから当該論理ブロックに対応する物理アドレスを得るためのものである。【０１２２】  ＥＣＣエラーテーブル７１１は、読出しエラーが発生した物理ブロックの物理アドレスや、データの物理消去の履歴や、物理消去後の読出しエラーの発生履歴などの情報を持ち、固定不良の物理ブロックの検出に用いられる。【０１２３】  エントリテーブル７１２は、フラッシュメモリ７０３の各々の物理ブロックに対してデータが書込み済みであるか、消去済みであるかについて、それぞれ１ビットで示す情報を持つテーブルである。例えばデータ書込み済みの物理ブロックはビット“０”で、消去済みの物理ブロックはビット“１”で表す。【０１２４】  フラッシュインターフェース７０７は、後述するＭＰＵ７０５の制御によりフラッシュメモリ７０３にバッファメモリ７０８のデータを書込んだり、フラッシュメモリ７０３のデータをバッファメモリ７０８に書込んだり、フラッシュメモリ７０３のデータを消去したりする。バッファメモリ７０８は、外部のホスト機器とフラッシュメモリ７０３との間でのデータの書込み、読出しの際にデータを一時保持するための揮発性メモリである。【０１２５】  ＥＣＣ回路７０９は、バッファメモリ７０８からフラッシュメモリ７０３へ転送される書込みデータに付加するＥＣＣの符号を生成する。またＥＣＣ回路７０９は、フラッシュメモリ７０３からバッファメモリ７０８に読み出されたデータについて、ＥＣＣ演算を行い誤りを検出し、その誤りが訂正可能な誤りであった場合には、バッファメモリ７０８のデータを訂正する誤り訂正回路である。【０１２６】  ＭＰＵ７０５は、メモリコントローラ７０２全体の制御を行うマイクロコンピュータである。ホスト機器との間でデータの書込み、読出しを行う際には、ホストインターフェース７０４と、ＥＣＣ回路７０９と、フラッシュインターフェース７０７と、アドレステーブル７０６とを直接に制御する。特に読出しデータにエラーがあった場合、ＭＰＵ７０５は、アドレステーブル７０６内のＥＣＣエラーテーブル７１１の情報を参照し、必要に応じてＥＣＣエラーテーブル７１１の更新を行う。さらにＭＰＵ７０５は、更新後のＢＢテーブルの内容に従ってエントリテーブルの更新も行う。【０１２７】  図２０は、ＥＣＣエラーテーブル７１１の構成を示す図である。ＥＣＣエラーテーブル７１１は、１６進数で表される＃０〜＃Ｆの１６個のＥＣＣエラー���コード♯ｉで構成されている。【０１２８】  図２１は、本実施例のＥＣＣエラーレコード♯ｉの構成を示している。本実施例のＥＣＣエラーレコード＃ｉは、エラーが発生した物理ブロックのアドレスを格納するエラーブロック６０１と、エラーが発生した物理ページのアドレスを格納するエラーページ１００１とに加えて、発生したエラーのビット数を格納するエラービットカウント１６０１を備える。このエラービットカウント１６０１は、発生した読出しエラーのビット数を情報として持っており、ＥＣＣエラーレコード♯ｉで発生したビットエラーの程度を表すことになる。【０１２９】  図２２は、本実施例の不揮発性記憶装置におけるデータ読出しのフローチャートである。ＭＰＵ７０５は、読出しを行う物理ブロックのアドレスと物理ページのアドレスをフラッシュメモリインターフェース７０７に指示して、フラッシュメモリ７０３からデータを読出す（Ｓ１７０１）。Ｓ１７０１に続いて、ＥＣＣ回路７０９は読出したデータに対して読出しエラーが発生しているかどうかを判定する（Ｓ１７０２）。読出しエラーが発生していない場合、ＭＰＵ７０５は、ホストインターフェース７０４に対して外部ホスト機器へのデータの出力を指示する（Ｓ１７０７）。その後読出しが継続する限り（Ｓ１７０８）、読出しの単位でアドレスを増加させながらＳ１７０１へとループしてデータ読み出しの処理は継続する。【０１３０】  Ｓ１７０２での判定で読出しエラーが発生していた場合には、ＥＣＣエラーテーブル７１１への登録を行う（Ｓ１７０３）。ＥＣＣエラーテーブル７１１への登録が終わると、ＥＣＣ回路７０９が、その読出しエラーについて訂正可能な４ビット以下であるかどうかを判断する（Ｓ１７０４）。読出しエラーの訂正が不可能な場合は（Ｓ１７０４）、直ちにデータの読出しを終了する。【０１３１】  訂正可能である場合は、読出しエラーを訂正する（Ｓ１７０５）。読出しエラー訂正後、データ訂正複写処理を行ない（Ｓ１７０６）、読出しデータを出力する（Ｓ１７０７）。その後、読み出しが継続するかどうかを判定する（Ｓ１７０８）【０１３２】  本実施例では、読出しエラーを検出すれば訂正の可、不可にかかわらず、ＥＣＣエラーテーブルの登録を行う。ここで、ＥＣＣエラーテーブルの登録（Ｓ１７０３）の処理を、図２３のフローチャートを用いて説明する。【０１３３】  読出しエラーを検出した場合、ＭＰＵ７０５が、ＥＣＣエラーテーブル７１１の登録状態を検索する（Ｓ１８０１）。具体的には、読出しエラーを発生した物理ブロックおよび物理ページの物理アドレスが、ＥＣＣエラーテーブル７１１のいずれかのＥＣＣエラーレコード＃ｉのエラーブロック６０１およびエラーページ１００１の値と一致するかどうかを調べる。【０１３４】  次にＳ１８０１の検索で該当するＥＣＣエラーレコード♯ｉがないときは、登録なしと判断する（Ｓ１８０２）。続いて、エラーブロック６０１とエラーページ１００２とエラービットカウント１６０３のそれぞれの値を空きのＥＣＣエラーレコード♯ｉに新規登録する（Ｓ１８０３）。この時にＥＣＣ回路７０９の訂正能力を超える５ビット以上のエラーが発生していれば、ＥＣＣエラーレコード♯ｉに登録するエ��ービットカウントを決めることができないので、この場合には、訂正不可能であるということが分かる値を登録する。例えばＥＣＣ回路７０９の最大訂正能力が４ビットであれば、それを超える値である５を登録すればよい。【０１３５】  Ｓ１８０２においてＥＣＣエラーレコード＃ｉの登録が検出された場合、ＭＰＵ７０５は、ＥＣＣエラーレコード＃ｉのエラービットカウントよりも、今回発生したエラーのビットカウントが多いかどうかを判断する（Ｓ１８０４）。登録のあったＥＣＣエラーレコード♯ｉのエラービットカウント１６０１と今回の読出しでのエラービットカウントを比較してビットカウントが増加していなければ、ＥＣＣエラーレコードの更新を行わずに終了する。増加している場合は、エラービットカウント１６０１を増加後の値に書き換えて、ＥＣＣエラーテーブルの登録を終了する（Ｓ１８０５）。【０１３６】  次に、図２４のフローチャートを用いて、データ訂正複写処理（Ｓ１７０６）を説明する。訂正可能なエラーの訂正（Ｓ１７０５）後、ＭＰＵ７０５は、今回読み出した物理ページのデータを今後も継続して読み出してよいかどうかの判定を行う。つまり、今後も継続してデータの読出しを行った場合に、訂正不可能なビットエラーが発生する可能性が高いかどうかを判定し、適切な処理を行うためである。【０１３７】  まずＥＣＣエラーレコード♯ｉからエラービットカウント１６０１の値を取得する（Ｓ１９０１）。次に取得したエラービットカウントが訂正閾値の４ビット以上かどうかを判定する（Ｓ１９０２）。エラービットカウントが訂正閾値の４ビット未満であれば、今後エラービットが増加しても、直ちに訂正不可能な読出しエラーに至る事はないと判断しデータ訂正複写処理を終了する。【０１３８】  エラービットカウントが４ビットの時には訂正閾値と等しい値であるので訂正後データの書込み（Ｓ１９０３）を行う。具体的には、ＭＰＵ７０５が、例えばバッファメモリ７０８にある訂正後のデータをフラッシュメモリ７０３の任意の物理ブロックに書込む。このときにデータを書込む物理ブロックは、該データを読み出した物理ブロック以外の物理ブロックである。最後に、エラーを発生した物理ブロックについてのＥＣＣエラーレコード♯ｉの登録を抹消する（Ｓ１９０４）。【０１３９】  以上のようにして、訂正閾値以上のエラービットカウントが発生した物理ページのデータは、今後訂正不可能な読出しエラーに発展する可能性があると判断し、訂正可能なうちに訂正をし、訂正済みのデータを別の物理ブロックの物理ページに書込む。【０１４０】  本実施例は、発生したビットエラーの数が５ビットや６ビットなどで、ＥＣＣ回路の訂正能力を超えており、エラーの訂正が不可能なときにはデータ訂正複写処理（Ｓ１７０６）を行わない。エラーの訂正が可能なときには、そのエラーのビット数が、ＥＣＣ回路７０９で訂正可能な範囲で、かつ訂正閾値以上の４ビットであるときに、誤り訂正後のデータをフラッシュメモリ１０３の別の物理ブロックに書込む。【０１４１】  なお、ここでは、ＥＣＣエラーテーブル７１１のＥＣＣエラーレコード＃ｉにエラービットカウント１６０１を設けているが、これに限らず、エラーの程度を示すものであればよい。例えば具体的なビット数でなくても、訂正閾値以上かどうかを表すエラー発生情報としてのフラグを用いて本発明の効果を実現できることは容易に想到できる。さらに、ＥＣＣエラーテーブルの登録は訂正閾値以上かつ誤り訂正可能なエラーの発生時にのみ行なうようにしても構わない。【０１４２】  また本実施例では、ビット訂正の可能なＥＣＣ回路を前提としているので、エラービットカウント１６０１を用いた。しかし、ビット訂正ではなくリードソロモン符号等のシンボル訂正可能な誤り訂正回路を前提とした場合には、エラービットカウントの変わりにエラーの発生したシンボル数の情報をエラーシンボルカウントとして適用する必要がある。【０１４３】（実施例６）
本実施例における不揮発性メモリ装置の構成は、図１７に示される。メモリカード７０１はメモリコントローラ７０２と不揮発性メモリであるフラッシュメモリ７０３とを備えている。メモリコントローラ７０２に含まれる各構成要素は、第５の実施例で説明したものと同様である。【０１４４】  図１８は、フラッシュメモリ１０３の内部の構成を示すブロック図であり、フラッシュメモリ７０３の内部は、ＰＢ０〜ＰＢ１０２３の１０２４個の物理ブロックからなる。図１９は、物理ブロックの内部の構成を示すブロック図であり、フラッシュメモリ７０３内の各物理ブロックは６４個の物理ページＰＰ０〜ＰＰ６３を備える。これらは、第５の実施例で説明したものと同様である。図２０に示すように、ＥＣＣエラーテーブル７１１は複数のＥＣＣエラーレコード♯ｉを備えている。また、本実施例のＥＣＣエラーレコード♯ｉの構成は図２１に示すとおりである。ＥＣＣエラーレコード♯ｉは、エラーが発生した物理ブロックのアドレスを格納するエラーブロック６０１と、エラーが発生した物理ページのアドレスを格納するエラーページ１００１とに加えて、発生したエラーのビット数を格納するエラービットカウント１６０１を備える。これらは、第５の実施例と同様である。【０１４５】  図２５は、本実施例の不揮発性記憶装置におけるデータ読出しのフローチャートである。まず、読出しを行う物理ブロックのアドレスと物理ページのアドレスをフラッシュメモリインターフェース７０７に指示して、フラッシュメモリ７０３からデータを読出す（Ｓ２００１）。Ｓ２００１に続いて、ＥＣＣ回路７０９は読出したデータに対して読出しエラーが発生しているかどうかを判定する（Ｓ２００２）。読出しエラーが発生していない場合、ＭＰＵ７０５は、ホストインターフェース７０４に対して外部ホスト機器へのデータの出力を指示する（Ｓ２００６）。その後読出しが継続する限り（Ｓ２００７）、読出しの単位でアドレスを増加させながらＳ２００１へとループしてデータ読み出しの処理は継続する。【０１４６】  読出しエラーがあると判定（Ｓ２００２）した場合、そのエラーが訂正可能かどうかを判定する（Ｓ２００３）。訂正不可能と判定した場合には、直ちに読出し処理を終了する。【０１４７】  訂正可能と判断した場合には、ＥＣＣエラーテーブルの登録を行う（Ｓ２００４）。ここでのＥＣＣエラーテーブルは第５の実施例の図２３で説明した処理と同様に登録される。ＥＣＣエラーテーブルの登録後エラーをバッファメモリ７０８内で訂正し（Ｓ２００５）、ＭＰＵ７０５は、ホストインターフェース７０４に対して外部ホスト機器へのデータの出力を指示する（Ｓ２００６）。その後読出しが継続する限り（Ｓ２００７）、読出しの単位でアドレスを増加させながらＳ２００１へとループして読み出し処理を行う。【０１４８】  本実施例では、第５の実施例で行っていたデータ訂正複写処理を、データ読出しのフローチャートには含まない。それは、本実施例ではデータの読出し処理中にフラッシュメモリ７０３へのデータの書込みを行わないようにするためである。一般的にフラッシュメモリの書込み時間は読み出し時間に比べて長くかかるので、そのような時間のかかる書込み処理を��ータの読出し中に行うと処理性能の低下を招いてしまう。よって、データの読み出し中にフラッシュメモリ７０３への書込みは行わない。【０１４９】  従って、本実施例では、他の処理が行なわれていない、空いている時間にデータ訂正複写処理を行う。空いている時間とはメモリカード７０１外部からのデータの書込み・読み出しの処理が行われていない期間、またはメモリカード７０１に電源が投入されて後、メモリカード７０１外部からのデータの書込み・読み出しの処理が行われるまでの期間である。【０１５０】  空き時間に行うデータ訂正複写処理を図２６のフローチャートを用いて説明する。ＭＰＵ７０５は、空き時間にＥＣＣエラーテーブル７１１のエラーレコードを検索し、エラービットカウント１６０１が訂正閾値以上の４ビットとなっているＥＣＣエラーレコード♯ｉを選択する（Ｓ２１０１）。このとき該当するエラーレコードがなければ（Ｓ２１０２）、データ訂正複写処理を終了する。【０１５１】  該当するエラーレコード♯ｉがある場合にはエラーレコード＃ｉのエラーブロック６０１とエラーページ１００１から物理ブロックと物理ページのアドレスを取得する（Ｓ２１０３）。そして取得したアドレスに属するデータをバッファメモリ７０８に読み出す（Ｓ２１０４）。続いてＥＣＣ回路１０９によりエラーを訂正し（Ｓ２１０５）、訂正後のデータをフラッシュメモリ７０３の任意の物理ブロックに書込む（Ｓ２１０６）。このときにデータを書込む物理ブロックは、該エラーレコード＃ｉに登録された物理ブロック以外物理ブロックである。最後に該当するエラーレコード♯ｉの登録を抹消して処理を終了する（Ｓ２１０７）。【０１５２】  以上のようにして、訂正閾値以上のエラービットカウントが発生した物理ページのデータは、今後訂正不可能な読出しエラーに発展する可能性があると判断されるので、上述のように空き時間を利用して、エラーの訂正をし、訂正済みのデータを別の物理ブロックの物理ページに書込む。このように、一度書込まれたデータに対して読出しを繰り返すと、不良ビットは増加していくが、当該データを訂正して、別の物理ブロックに書きかえる事で、訂正不可能な読出しエラーを回避することが可能になる。【０１５３】  本実施例においても、発生したビットエラーが訂正不可能なときには、ＥＣＣエラーテーブルの登録を行なわないのでデータ訂正複写処理を行わない。ある物理ページのデータを読み出した際にエラーが発生し、そのエラーのエラービット数が、ＥＣＣ回路７０９で誤り訂正可能な範囲で、かつ訂正閾値を超えたときにのみ、今後当該物理ページからのデータの読出しを行わなくてもよいように、誤り訂正後のデータをフラッシュメモリ７０３の別の物理ブロックに書込み、読み出しに用いる。【０１５４】  なお、ここでは、ＥＣＣエラーテーブル７１１のＥＣＣエラーレコード＃ｉにエラービットカウント１６０１を設けているが、これに限らず、エラーの程度を示すものであればよい。例えば具体的なビット数でなくても、訂正閾値を越えたかどうかを表すエラー発生情報としてのフラグを用いて本発明の効果を実現できることは容易に想到できる。さらに、ＥＣＣエラーテーブルの登録は訂正閾値以上かつ誤り訂正可能��エラーの発生時にのみ行なうようにしても構わない。【０１５５】  また本実施例では、ビット訂正の可能なＥＣＣ回路を前提としているので、エラービットカウント１６０１を用いた。しかし、ビット訂正ではなくリードソロモン符号等のシンボル訂正可能な誤り訂正回路を前提とした場合には、エラービットカウントの変わりにエラーの発生したシンボル数の情報をエラーシンボルカウントとして適用する必要がある。
【産業上の利用可能性】
【０１５６】  本発明に係わる不揮発性記憶装置は、不揮発性メモリの固定不良を検出して、以降そのブロックの使用を制限することで読出しエラーの低減を図ることができるので、ＥＣＣによる誤り訂正が必要な不揮発性メモリを使用したメモリカードシステム、例えばデジタルカメラの静止画保存用のストレージメモリ等に使用することができる。
【図１】
2007010829.tif 000002
【図２】
2007010829.tif 000003
【図３】
2007010829.tif 000004
【図４】
2007010829.tif 000005
【図５】
2007010829.tif 000006
【図６】
2007010829.tif 000007
【図７】
2007010829.tif 000008
【図８】
2007010829.tif 000009
【図９】
2007010829.tif 000010
【図１０】
2007010829.tif 000011
【図１１】
2007010829.tif 000012
【図１２】
2007010829.tif 000013
【図１３】
2007010829.tif 000014
【図１４】
2007010829.tif 000015
【図１５】
2007010829.tif 000016
【図１６】
2007010829.tif 000017
【図１７】
2007010829.tif 000018
【図１８】
2007010829.tif 000019
【図１９】
2007010829.tif 000020
【図２０】
2007010829.tif 000021
【図２１】
2007010829.tif 000022
【図２２】
2007010829.tif 000023
【図２３】
2007010829.tif 000024
【図２４】
2007010829.tif 000025
【図２５】
2007010829.tif 000026
【図２６】
2007010829.tif 000027
【手続補正書】
【提出日】平成18年11月29日(2006.11.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求の範囲
【補正方法】変更
【補正の内容】
【書類名】請求の範囲
【請求項１】不揮発性メモリとメモリコントローラを具備する不揮発性記憶装置であって、
前記不揮発性メモリは、消去単位である物理ブロックを複数備え、前記物理ブロックは書き込み単位である物理ページを複数有してなるものであり、
前記メモリコントローラは、
前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、
前記不揮発メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正する機能とを備える誤り訂正回路と、
前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、
前記メモリコントローラのアドレステーブルは、前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前期読み出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、
データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルと、
前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、
ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、
前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出した時に、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、
前記エラーが発生したことを示す情報を記録するエラー情報と、
前記エラーが発生した後に、前記物理ブロックを消去したことを示す情報を記録するエラーブロック消去情報と、
前記エラーブロック消去情報に情報が記録された後、同一の物理ブロックで再度読出しエラーを検出したことを示すエラー再発生情報とを備え、
前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新するとともに、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在したときは、前記データを書き込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録し、前記読出しエラーを検出した物理ブロックを使用するかどうかを決める不揮発性記憶装置。
【請求項２】（削除）
【請求項３】前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項１に記載の不揮発性記憶装置。
【請求項４】前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項１に記載の不揮発性記憶装置。
【請求項５】  前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項３に記載の不揮発性記憶装置。
【請求項６】前記エラー情報に記録される、エラーが発生したことを示す情報が、エラーが発生した回数であり、
前記エラーブロック消去情報に記録される、前記物理ブロックを消去したことを示す情報が、前記物理ブロックを物理消去した回数であり、
前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在し、かつ前記エラーカウンタ情報と前記エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を示し、かつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値であるときに、前記データを書き込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録する請求項１に記載の不揮発性記憶装置。
【請求項７】  前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項６に記載の不揮発性記憶装置。
【請求項８】  前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項６に記載の不揮発性記憶装置。
【請求項９】  前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項７に記載の不揮発性記憶装置。
【請求項１０】不揮発性メモリとメモリコントローラを具備する不揮発性記憶装置であって、
前記不揮発性メモリは、消去単位である物理ブロックを複数備え、前記物理ブロックは書き込み単位である物理ページを複数有してなるものであり、
前記メモリコントローラは、
前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、
前記不揮発メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正する機能とを備える誤り訂正回路と、
前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、
前記メモリコントローラのアドレステーブルは、前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前期読み出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、
前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、
ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、
前記誤り訂正回路が読出しエラーを検出した物理ページのアドレスが書かれたエラーブロック情報と、
前記誤り訂正回路が前記読み出しエラーを検出した物理ページのアドレスが書かれたエラーページ情報と、
前記読出しエラーのビット数を示す情報を記録するエラービットカウンタとを備え、
前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新するとともに、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む不揮発性記憶装置。
【請求項１１】  前記演算処理ユニットは、外部からの前記不揮発性メモリに対してデータ読出し処理が行われていないときに、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項１０に記載の不揮発性記憶装置。
【請求項１２】（削除）
【請求項１３】（削除）
【請求項１４】消去単位である物理ブロックを複数備え、前記物理ブロックは書き込み単位である物理ページを複数有してなる不揮発性メモリに対して、データの読出し及び書き込みを制御するメモリコントローラであって、
前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、
前記不揮発メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正する機能とを備える誤り訂正回路と、
前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、
前記アドレステーブルは、前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前期読み出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、
データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルと、
前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、
ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、
前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出した時に、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、
前記エラーが発生したことを示す情報を記録するエラー情報と、
前記エラーが発生した後に、前記物理ブロックを消去したことを示す情報を記録するエラーブロック消去情報と、
前記エラーブロック消去情報に情報が記録された後、同一の物理ブロックで再度読出しエラーを検出したことを示すエラー再発生情報とを備え、
前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新するとともに、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在したときは、前記データを書き込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録し、前記読出しエラーを検出した物理ブロックを使用するかどうかを決めるメモリコントローラ。
【請求項１５】（削除）
【請求項１６】前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項１４に記載のメモリコントローラ。
【請求項１７】前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項１４に記載のメモリコントローラ。
【請求項１８】  前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項１６に記載のメモリコントローラ。
【請求項１９】前記エラー情報に記録される、エラーが発生したことを示す情報が、エラーが発生した回数であり、
前記エラーブロック消去情報に記録される、前記物理ブロックを消去したことを示す情報が、前記物理ブロックを物理消去した回数であり、
前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在し、かつ前記エラーカウンタ情報と前記エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を示し、かつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値であるときに、前記データを書き込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録する請求項１４に記載のメモリコントローラ。
【請求項２０】  前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項１９に記載のメモリコントローラ。
【請求項２１】  前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項１９に記載のメモリコントローラ。
【請求項２２】  前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項２０に記載のメモリコントローラ。
【請求項２３】消去単位である物理ブロックを複数備え、前記物理ブロックは書き込み単位である物理ページを複数有してなる不揮発性メモリに対して、データの読出し及び書き込みを制御するメモリコントローラであって、
前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、
前記不揮発メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正する機能とを備える誤り訂正回路と、
前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、
前記メモリコントローラのアドレステーブルは、前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前期読み出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、
前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、
ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、
前記誤り訂正回路が読出しエラーを検出した物理ページのアドレスが書かれたエラーブロック情報と、
前記誤り訂正回路が前記読み出しエラーを検出した物理ページのアドレスが書かれたエラーページ情報と、
前記読出しエラーのビット数を示す情報を記録するエラービットカウンタとを備え、
前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新するとともに、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むメモリコントローラ。
【請求項２４】  前記演算処理ユニットは、外部からの前記不揮発性メモリに対してデータ読出し処理が行われていないときに、前記誤り訂正回路によって訂正可能なエラービット数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項２３に記載のメモリコントローラ。
【請求項２５】（削除）
【請求項２６】（削除）
【請求項２７】消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなる不揮発性メモリと、前記不揮発性メモリからの読み出しデータに対してエラーを検出する機能及びエラーの訂正が可能である場合には訂正をする機能を備える誤り訂正回路と、読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを複数保持するエラーテーブルを備えるメモリコントローラと、を具備する不揮発性記憶装置において、
データを読み出すときには、物理ブロックからデータを読み出し、
当該読み出したデータに訂正可能なエラーがある場合には、前記エラーを訂正して外部に出力し、
前記物理アドレスを前記エラーテーブルに登録すると共に、
前記エラーテーブルに物理アドレスが登録された物理ブロックのデータが書換えられたときには、前記データが書き換えられたことを示す情報を前記エラーテーブルに登録し、
前記データが書き換えられた物理ブロックから読み出したデータに訂正可能なエラーがある場合は、当該エラーを訂正して外部に出力すると共に、前記データが書き換えられた後にエラーが発生したことを示すエラー再発生情報を前記エラーテーブルに登録し、
前記エラー再発生情報が前記エラーテーブルに登録されている物理ブロックに対し、データの書込み及び読出しを禁止する不良領域検出方法。
【請求項２８】（削除）
【請求項２９】前記エラーテーブルに登録される書き換えられたことを示す情報が、書き換えられた回数であり、
前記エラーテーブルに登録されるエラー再発生情報が、データが書き換えられた後にエラーが発生した回数であり、
前記エラー再発生情報の値が所定の値以上を示した時に、前記エラーテーブルが登録された物理ブロックへのデータの書込み及び読出しを禁止する請求項２７に記載の不良領域検出方法。
【請求項３０】消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなる不揮発性メモリと、前記不揮発性メモリからの読出しデータに対してエラーを検出する機能及びエラーの訂正が可能である場合には訂正をする機能を備える誤り訂正回路と、読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを複数保持するエラーテーブルを備えるメモリコントローラと、を具備する不揮発性記憶装置において、
外部から指定された論理アドレスから物理アドレスを決定してデータを読出す物理ブロックを特定する特定ステップと、
前記物理ブロックからデータを読出すデータ読出しステップと、
当該読出したデータに訂正可能なエラーがある場合は、前記エラーを訂正して外部に出力するデータ出力ステップと、
前記訂正可能なエラーを発生した物理ブロックの物理アドレスとエラー数に関する情報とを前記エラーテーブルに登録するエラービット数登録ステップと、
前記エラーテーブルに登録されたエラービット数に関する情報が、所定の値以上を示したときに、前記物理ブロックに書込まれているデータを別の物理ブロックに複写する複写ステップと、を有する不良領域検出方法。
【請求項３１】（削除）
【請求項３２】前記複写ステップを、前記データ読出しステップと前記データ出力ステップの間に行なう請求項３０に記載の不良領域検出方法。
【請求項３３】前記複写ステップを、前記不揮発性記憶装置に対して、外部からのデータ書込み及び読出しを実行していないときに行なう請求項３０に記載の不良領域検出方法。
【請求項３４】  前記複写ステップを、前記不揮発性記憶装置に対して電源が投入した直後に行なう請求項３３に記載の不良領域検出方法。
【国際調査報告】
2007010829.tif 000028
2007010829.tif 000029
2007010829.tif 000030
2007010829.tif 000031