(57)【特許請求の範囲】
【請求項１】
書き換え可能な不揮発性メモリのメモリ制御回路であって、
データの書き込み毎に前記不揮発性メモリのデータ書き込み状態を管理情報として記憶する第１の管理テーブルと、
所定単位のデータの書き込みが終了する毎に前記第１の管理テーブルの管理情報をコピーする第２の管理テーブルと、
前記第１の管理テーブルの管理情報に基づき前記不揮発性メモリへブロック単位で新たなデータを書き込む書き込み部と、
前記書き込みを行ったブロックの再書き込みを禁止するよう前記第１の管理テーブルの管理情報を更新する管理テーブル更新部と、
前記データの書き込みが正常に実行されたか否かを判定する判定部と、
前記判定部によって前記データの書き込みが正常に実行されなかったと判断されたブロックに対し、当該ブロックのアドレスを保持するエラーアドレス保持部と、
所定単位の書き込み完了後、前記エラーアドレス保持部に保持されたアドレスのデータを順次読み出し、誤りの検出及び訂正を行う誤り訂正部と、
前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを有効とした場合には、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして正常終了し、前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを無効とした場合には、前記第２の管理テーブルの管理情報を第１の管理テーブルにコピーして異常終了する終了制御部と、を具備することを特徴とするメモリ制御回路。
【請求項２】
前記終了制御部は、
ｍビット以上の誤りが検出された場合は、前記書き込み部に対して前記誤り訂正部によって誤り訂正されたデータを、前記不揮発性メモリの異なるブロックへの書き込みリトライするよう指示すると共に、前記管理テーブル更新部に対して第１の管理テーブルの管理情報を更新するよう指示して書き込みを有効とすることを特徴とする請求項１記載のメモリ制御回路。
【請求項３】
前記終了制御部は、
ｎビット（ｎ≧ｍ）以上の誤りがあったブロックを不良ブロックとするよう前記管理テーブル更新部に対して指示することを特徴とする請求項２記載のメモリ制御回路。
【請求項４】
前記終了制御部は、
前記エラーアドレス保持部に保持されたアドレスのデータうち、少なくともひとつ訂正能力を超えるエラーがあると判断された場合に異常終了することを特徴とする請求項１記載のメモリ制御回路。
【請求項５】
前記終了制御部は、
第２の管理テーブルの管理情報を第１の管理テーブルにコピーした後、訂正能力を超える誤りがあったブロックを不良ブロックとするよう前記管理テーブル更新部に対して指示し、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして異常終了することを特徴とする請求項４記載のメモリ制御回路。
【請求項６】
書き換え可能な不揮発性メモリと、
データの書き込み毎に前記不揮発性メモリのデータ書き込み状態を管理情報として記憶する第１の管理テーブルと、
所定単位のデータの書き込みが終了する毎に前記第１の管理テーブルの管理情報をコピーする第２の管理テーブルと、
前記第１の管理テーブルの管理情報に基づき前記不揮発性メモリへブロック単位で新たなデータを書き込む書き込み部と、
前記書き込みを行ったブロックの再書き込みを禁止するよう前記第１の管理テーブルの管理情報を更新する管理テーブル更新部と、
前記データの書き込みが正常に実行されたか否かを判定する判定部と、
前記判定部によって前記データの書き込みが正常に実行されなかったと判断されたブロックに対し、当該ブロックのアドレスを保持するエラーアドレス保持部と、
所定単位の書き込み完了後、前記エラーアドレス保持部に保持されたアドレスのデータを順次読み出し、誤りの検出及び訂正を行う誤り訂正部と、
前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを有効とした場合には、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして正常終了し、前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを無効とした場合には、前記第２の管理テーブルの管理情報を第１の管理テーブルにコピーして異常終了する終了制御部と、を具備することを特徴とする不揮発性記憶装置。
【請求項７】
前記終了制御部は、
ｍビット以上の誤りが検出された場合は、前記書き込み部に対して前記誤り訂正部によって誤り訂正されたデータを、前記不揮発性メモリの異なるブロックへの書き込みリトライするよう指示すると共に、前記管理テーブル更新部に対して第１の管理テーブルの管理情報を更新するよう指示して書き込みを有効とすることを特徴とする請求項６記載の不揮発性記憶装置。
【請求項８】
前記終了制御部は、
ｎビット（ｎ≧ｍ）以上の誤りがあったブロックを不良ブロックとするよう前記管理テーブル更新部に対して指示することを特徴とする請求項７記載の不揮発性記憶装置。
【請求項９】
前記終了制御部は、
前記エラーアドレス保持部に保持されたアドレスのデータうち、少なくともひとつ訂正能力を超えるエラーがあると判断された場合に異常終了することを特徴とする請求項６記載の不揮発性記憶装置。
【請求項１０】
前記終了制御部は、
第２の管理テーブルの管理情報を第１の管理テーブルにコピーした後、訂正能力を超える誤りがあったブロックを不良ブロックとするよう前記管理テーブル更新部に対して指示し、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして異常終了することを特徴とする請求項９記載の不揮発性記憶装置。
【請求項１１】
書き換え可能な不揮発性メモリのメモリ制御方法であって、
データの書き込み毎に前記不揮発性メモリのデータ書き込み状態を管理情報として第１の管理テーブルに記憶し、
所定単位のデータの書き込みが終了する毎に前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーし、
前記第１の管理テーブルの管理情報に基づき前記不揮発性メモリへブロック単位で新たなデータを書き込み、
前記書き込みを行ったブロックの再書き込みを禁止するよう前記第１の管理テーブルの管理情報を更新し、
前記データの書き込みが正常に実行されたか否かを判定部により判定し、
前記判定部によって前記データの書き込みが正常に実行されなかったと判断されたブロックに対し、当該ブロックのアドレスをエラーアドレス保持部に保持し、
所定単位の書き込み完了後、前記エラーアドレス保持部に保持されたアドレスのデータを順次読み出し、誤り訂正部により誤りの検出及び訂正を行い、
前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを有効とした場合には、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして正常終了し、前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを無効とした場合には、前記第２の管理テーブルの管理情報を第１の管理テーブルにコピーして異常終了することを特徴とするメモリ制御方法。
【請求項１２】
ｍビット以上の誤りが検出された場合は、前記誤り訂正部によって誤り訂正されたデータを、前記不揮発性メモリの異なるブロックへの書き込みをリトライするよう指示すると共に、第１の管理テーブルの管理情報を更新するよう指示して書き込みを有効とすることを特徴とする請求項１１記載のメモリ制御方法。
【請求項１３】
ｎビット（ｎ≧ｍ）以上の誤りがあったブロックを不良ブロックとするよう前記第１の管理テーブルの管理情報を更新することを特徴とする請求項１２記載のメモリ制御方法。
【請求項１４】
前記エラーアドレス保持部に保持されたアドレスのデータうち、少なくともひとつ訂正能力を超えるエラーがあると判断された場合に異常終了することを特徴とする請求項１１記載のメモリ制御方法。
【請求項１５】
第２の管理テーブルの管理情報を第１の管理テーブルにコピーした後、訂正能力を超える誤りがあったブロックを不良ブロックとするよう前記第１の管理テーブルの管理情報を更新し、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして異常終了することを特徴とする請求項１４記載のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、書き換え可能な不揮発性メモリへのデータ書き込み時のエラー処理に特徴を有するメモリ制御回路、不揮発性記憶装置及びメモリ制御方法に関するものである。
【背景技術】
【０００２】  近年、デジタル情報を保存する記憶装置として、書き換え可能な不揮発性メモリを搭載したメモリカードや機器が広まってきている。特にメモリカードは、小型かつ耐震性に優れるため、今後益々、携帯機器で多用されることが期待されている。【０００３】  書き換え可能な不揮発性メモリの代表的なものにフラッシュメモリがある。一般に、データの書き込みはページ単位で行われ、データの消去はイレーズブロック単位で行われる。イレーズブロックは通常、複数ページで構成される。以下の説明ではページもイレーズブロックもブロックと呼ぶものとする。フラッシュメモリはブロック単位でその使用、未使用が管理されており、例えば、未使用のブロックに対しては管理データとして“１”が書き込まれ、データの書き込みを行った場合に、管理データを“１”から“０”に書き換える。【０００４】  また、一般的に、フラッシュメモリは、正常に書き込まれない場合が希に存在する。このため、フラッシュメモリには、正常書き込みであったか、または異常書き込みであったかを示すステータスを読み出す機能が備わっている。そしてデータの書き込み後、このステータスを読み出すことによって、書き込みが正常に行なわれたか否かを判別することが必要である。書き込みエラーが発生した場合は、そのブロックが再び書き込みブロックとして選択されないようにするために、対応するブロックの管理データは“１”から“０”に書き換えられる。【０００５】  以上のようなフラッシュメモリの書き込みエラーに関する技術として、特許文献１に記載されたものが知られている。
【特許文献１】特開２００２−１０８７２０号公報（段落０００３〜０００４）
【発明の開示】
【発明が解決しようとする課題】
【０００６】  従来のフラッシュメモリは、書き込みエラーとなったメモリセルに、再び書き込み対象に選ばれることのないように、管理テーブル上でそのブロックを不良ブロックとする処理をしていた。しかし、近年、例え書き込みが正常に行われなかった場合であっても、メモリセルの再利用が可能なフラッシュメモリが登場しつつある。このようなフラッシュメモリでは、書き込みエラーとなったメモリセルを従来通り全て不良ブロックとすると、不良ブロックが大量に生成されてしまう可能性がある。【０００７】  本発明は上記の課題を解決するためになされたもので、メモリカードにおける不良ブロックの生成を低減できる、メモリ制御回路、不揮発性記憶装置及びメモリ制御方法を実現することを目的とする。
【課題を解決するための手段】
【０００８】  この課題を解決するために、本発明のメモリ制御回路は、書き換え可能な不揮発性メモリのメモリ制御回路であって、データの書き込み毎に前記不揮発性メモリのデータ書き込み状態を管理情報として記憶する第１の管理テーブルと、所定単位のデータの書き込みが終了する毎に前記第１の管理テーブルの管理情報をコピーする第２の管理テーブルと、前記第１の管理テーブルの管理情報に基づき前記不揮発性メモリへブロック単位で新たなデータを書き込む書き込み部と、前記書き込みを行ったブロックの再書き込みを禁止するよう前記第１の管理テーブルの管理情報を更新する管理テーブル更新部と、前記データの書き込みが正常に実行されたか否かを判定する判定部と、前記判定部によって前記データの書き込みが正常に実行されなかったと判断されたブロックに対し、当該ブロックのアドレスを保持するエラーアドレス保持部と、所定単位の書き込み完了後、前記エラーアドレス保持部に保持されたアドレスのデータを順次読み出し、誤りの検出及び訂正を行う誤り訂正部と、前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを有効とした場合には、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして正常終了し、前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを無効とした場合には、前記第２の管理テーブルの管理情報を第１の管理テーブルにコピーして異常終了する終了制御部と、を具備することを特徴とするものである。【０００９】  ここで前記終了制御部は、ｍビット以上の誤りが検出された場合は、前記書き込み部に対して前記誤り訂正部によって誤り訂正されたデータを、前記不揮発性メモリの異なるブロックへの書き込みリトライするよう指示すると共に、前記管理テーブル更新部に対して第１の管理テーブルの管理情報を更新するよう指示してもよい。【００１０】  ここで前記終了制御部は、ｎビット（ｎ≧ｍ）以上の誤りがあったブロックを不良ブロックとするよう前記管理テーブル更新部に対して指示した後、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして正常終了してもよい。【００１１】  ここで前記終了制御部は、前記エラーアドレス保持部に保持されたアドレスのデータうち、少なくともひとつ訂正能力を超えるエラーがあると判断された場合に異常終了してもよい。【００１２】  ここで前記終了制御部は、第２の管理テーブルの管理情報を第１の管理テーブルにコピーした後、訂正能力を超える誤りがあったブロックを不良ブロックとするよう前記管理テーブル更新部に対して指示し、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして異常終了してもよい。【００１３】  この課題を解決するために、本発明の不揮発性記憶装置は、書き換え可能な不揮発性メモリと、データの書き込み毎に前記不揮発性メモリのデータ書き込み状態を管理情報として記憶する第１の管理テーブルと、所定単位のデータの書き込みが終了する毎に前記第１の管理テーブルの管理情報をコピーする第２の管理テーブルと、前記第１の管理テーブルの管理情報に基づき前記不揮発性メモリへブロック単位で新たなデータを書き込む書き込み部と、前記書き込みを行ったブロックの再書き込みを禁止するよう前記第１の管理テーブルの管理情報を更新する管理テーブル更新部と、前記データの書き込みが正常に実行されたか否かを判定する判定部と、前記判定部によって前記データの書き込みが正常に実行されなかったと判断されたブロックに対し、当該ブロックのアドレスを保持するエラーアドレス保持部と、所定単位の書き込み完了後、前記エラーアドレス保持部に保持されたアドレスのデータを順次読み出し、誤りの検出及び訂正を行う誤り訂正部と、前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを有効とした場合には、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして正常終了し、前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを無効とした場合には、前記第２の管理テーブルの管理情報を第１の管理テーブルにコピーして異常終了する終了制御部と、を具備することを特徴とする。【００１４】  又本発明のメモリ制御方法は、書き換え可能な不揮発性メモリのメモリ制御方法であって、データの書き込み毎に前記不揮発性メモリのデータ書き込み状態を管理情報として第１の管理テーブルに記憶し、所定単位のデータの書き込みが終了する毎に前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーし、前記第１の管理テーブルの管理情報に基づき前記不揮発性メモリへブロック単位で新たなデータを書き込み、前記書き込みを行ったブロックの再書き込みを禁止するよう前記第１の管理テーブルの管理情報を更新し、前記データの書き込みが正常に実行されたか否かを判定部により判定し、前記判定部によって前記データの書き込みが正常に実行されなかったと判断されたブロックに対し、当該ブロックのアドレスをエラーアドレス保持部に保持し、所定単位の書き込み完了後、前記エラーアドレス保持部に保持されたアドレスのデータを順次読み出し、誤り訂正部により誤りの検出及び訂正を行い、前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを有効とした場合には、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして正常終了し、前記エラーアドレス保持部に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを無効とした場合には、前記第２の管理テーブルの管理情報を第１の管理テーブルにコピーして異常終了することを特徴とするものである。【００１５】  ここでｍビット以上の誤りが検出された場合は、前記誤り訂正部によって誤り訂正されたデータを、前記不揮発性メモリの異なるブロックへの書き込みをリトライするよう指示すると共に、第１の管理テーブルの管理情報を更新するよう指示してもよい。【００１６】  ここでｎビット（ｎ≧ｍ）以上の誤りがあったブロックを不良ブロックとするよう前記第１の管理テーブルの管理情報を更新した後、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして正常終了してもよい。【００１７】  ここで前記エラーアドレス保持部に保持されたアドレスのデータうち、少なくともひとつ訂正能力を超えるエラーがあると判断された場合に異���終了してもよい。【００１８】  ここで第２の管理テーブルの管理情報を第１の管理テーブルにコピーした後、訂正能力を超える誤りがあったブロックを不良ブロックとするよう前記第１の管理テーブルの管理情報を更新し、前記第１の管理テーブルの管理情報を第２の管理テーブルにコピーして異常終了してもよい。
【発明の効果】
【００１９】  以上のように本発明は、書き込みエラーが発生しやすい不揮発性メモリであっても、書き込みデータの再読み出しを行い、所定の誤り以上の場合に限り、不良ブロック処理を行うため、不良ブロックの増大を防止することができる。また、データに誤りがあっても誤り訂正が可能なデータは、別のブロックに書き込みリトライをすることによって、ホストからの書き込み指示に対してエラー終了する頻度を下げることを可能にする。以上のような方法により、書き込みエラーの頻度が高い不揮発性メモリを用いても、不揮発性記憶装置の機能は達成され、不揮発性記憶装置の低コスト化が図れる。
【図面の簡単な説明】
【００２０】
【図１】図１は本発明の実施の形態によるメモリ制御回路を含むメモリカードの構成図である。
【図２】図２は本実施の形態のメモリ制御回路における第１の管理テーブル及び第２の管理テーブルの構成と、これらのデーブルに記載される管理データの一例を示す説明図である。
【図３】図３は本実施の形態のメモリ制御回路における書き込み処理の動作（その１）を示すフローチャートである。
【図４】図４は本実施の形態のメモリ制御回路における書き込み処理の動作（その２）を示すフローチャートである。
【符号の説明】
【００２１】  １  メモリカード
２  ホストインタフェース
３  コントローラ
３ａ  書き込み部
３ｂ  判定部
３ｃ  管理テーブル更新部
３ｄ  誤り訂正部
３ｅ  終了制御部
４  ＲＡＭ
５  インストラクションＲＯＭ
６  バッファメモリ
７  フラッシュメモリ
４１  ワークＲＡＭ
４２  第１の管理テーブル
４３  第２の管理テーブル
４４  エラーアドレスレジスタ
【発明を実施するための最良の形態】
【００２２】  以下、本発明の実施の形態における不揮発性記憶装置であるメモリカード及びそのメモリ制御回路について、図面を参照して説明する。図１は、本発明の実施の形態によるメモリ制御回路を含むメモリカード１の構成を示すブロック図である。図１において、メモリカード１は、例えばディジタル・スチル・カメラ（ＤＳＣ）、パーソナルコンピュータ（ＰＣ）等の電子機器（図示せず）に装着して使用されるものである。メモリカード１は大別してホストインタフェース２と、コントローラ３と、ＲＡＭ４と、インストラクションＲＯＭ５と、バッファメモリ６と、書き換え可能な不揮発性メモリとして例えばフラッシュメモリ７から構成される。ここでコントローラ３、ＲＡＭ４、インストラクションＲＯＭ５、バッファメモリ６を含む部分をメモリ制御回路と呼ぶ。【００２３】  ホストインタフェース２は、メモリカード１が装着される電子機器本体（以下、ホストという）とのインタフェースを行うものであり、フラッシュメモリ７に対して読み書きするデータや、各種制御のためのコマンドやクロックを送受信する。コントローラ３は、メモリカード１全体を制御するものであり、マイクロプロセッサ（ＭＰＵ）により構成される。コントローラ３は後述する各種のプログラム実行部とを有している。コントローラ３は、インストラクションＲＯＭ５に格納されている制御プログラムに従って、ＲＡＭ４、フラッシュメモリ７、バッファメモリ６の制御を行う。プログラム実行部として書き込み部３ａ、判定部３ｂ、管理テーブル更新部３ｃ、誤り訂正部３ｄ、終了制御部３ｅがある。【００２４】  インストラクションＲＯＭ５は、読み出し専用の不揮発性メモリであり、前記のプログラム実行部の機能を達成するための制御プログラムを格納している。ＲＡＭ４は、揮発性メモリで構成され、コントローラ３の作業用領域であるワークＲＡＭ４１と、第１のブロック管理テーブル４２と、第２のブロック管理テーブル４３と、エラーアドレスレジスタ４４と呼ばれる記憶領域から構成されている。【００２５】  第１のブロック管理テーブル４２及び第２の管理テーブル４３は、フラッシュメモリ７の使用状態を管理情報として保持する管理テーブルである。管理テーブルの管理情報の一例を図２に示す。管理テーブルにおける管理情報は論理ブロックのアドレス（物理アドレス）とこれに対応する論理ブロックのアドレス（論理アドレス）、及び各ブロックアドレスの使用の有無などを記録するものである。管理情報のデータ領域は両テーブルとも同一形式であるが、その更新タイミングが異なる。第１の管理テーブル４２の管理情報はブロックのデータの書き込み毎に更新されるのに対し、第２の管理テーブルの管理情報は所定の書き込み単位、例えばホストからのデータ転送単位で更新される。具体的にはホストからまとまったデータの転送が完了すると、第１の管理テーブル４２の管理情報は第２の管理テーブル４３にコピーされる。この意味で第１の管理テーブル４２は現在のデータ記録状態を示すのに対し、第２の管理テーブル４３は前の状態におけるデータ記録状態を示している。【００２６】  一般にフラッシュメモリ７の物理上のブロック（物理ブロック）への読み書きは、ホストか��与えられる論理上のブロック（論理ブロック）のアドレスを指定して行われる。第１の管理テーブル４２の１つの役割は、この論理ブロックの論理アドレスを物理ブロックの物理アドレスに変換することである。図２では、ブロックアドレスである物理アドレスと論理アドレスとの対応関係、その物理アドレス（アドレスで指定されるブロック）の使用の有無を示している。【００２７】  例えば図２に示す例では、物理ブロックの使用の有無、及び各物理ブロックに割り当てられた論理アドレスの番号が書かれている。使用の有無を示す欄で“０”が記載されている場合、すなわち使用済みであるにもかかわらず、論理アドレスが書かれていない場合がある。図２の例では、物理アドレス「６」が上記の状態に該当し、その物理ブロックは不良ブロックであることを示している。この場合、このブロックは書き込みアドレスとして選択されることはない。バッファメモリ６は、ホストから転送されてきたデータを一時的に保持するメモリである。また、フラッシュメモリ７は、ホストから転送されたデータを書き込む不揮発性のメモリである。【００２８】  以上のように構成されたメモリカード１のデータ書き込み処理について、図３、図４に示すフローチャートを参照して説明する。図３、図４に示されるフローチャートは図１のコントローラ３により実行される。まず図３に示すステップＳ１として、コントローラ３は、ホストインタフェース２を介して、ホストからの書き込みコマンドを受けると、ホストから送られてくるデータをバッファメモリ６に一時的に保持し、ブロック単位でフラッシュメモリ７へデータの転送を行う。【００２９】  次に、ステップＳ２として、コントローラ３は第１の管理テーブル４２に書き込まれているブロック管理データを参照し、書き込み可能な物理アドレス、すなわち使用の有無を示す管理データが“１”の未使用の物理アドレスをサーチ、即ち書き込みアドレスの計算する。次に、ステップＳ３として、ステップＳ２でサーチされた物理アドレスにデータの書き込みを行う。このステップＳ３は第１の管理テーブル４２の管理情報に基づき不揮発性メモリであるフラッシュメモリ７へブロック単位で新たなデータを書き込む書き込み部３ａの機能を達成している。【００３０】  次に、ステップＳ４として、フラッシュメモリ７に対してステータス・リードコマンドを発行し、フラッシュメモリ７からの応答からデータ書き込みの処理ステータスが正常に行われたか否かを判別する。このステップＳ４は、データの書き込みが正常に実行されたか否かを判定する判定部３ｂの機能を達成している。ステップＳ４において、データ書き込みが正常に行われたと判断された場合には、ステップＳ５に進み、第１の管理テーブル４２上の対応する管理データを“１”から“０”に書き換え、論理アドレスである論理ブロック番号を書き込む。【００３１】  一方、ステップＳ４において、データ書き込みが正常に行われなかったと判断された場合には、ステップＳ６に進む。ステップＳ６では、エラーが生じたアドレスをエラーアドレスレジスタ４４に保持した後、ステップＳ５に進んで第１の管理テーブル４２上の対応する管理データを“１”から“０”に書き換えると共に、エラーが生���た論理アドレスである論理ブロック番号を書き込む。ステップＳ５で第１の管理テーブル４２の更新が完了すれば、ステップＳ７に進む。ステップＳ７として、この書き込みがホストからの最後の書き込みでなければ、ステップＳ１に戻り、ステップＳ１からステップＳ７までの処理を繰り返す。【００３２】  ステップＳ７において書き込みがホストからの最後の書き込みであれば、図４のステップＳ８に進み、エラーアドレスレジスタ４４にエラーアドレスがあるか否かを確認する。ここでエラーアドレスが保持されていなければ、ステップＳ９に進み、第１の管理テーブル４２の管理情報を第２の管理テーブル４３にコピーして、書き込みを正常終了する（ステップＳ１０）。【００３３】  一方、図４のステップＳ８において、エラーアドレスが保持されている場合には、ステップＳ１１に移り、エラーアドレスのデータの読み出しを行う。次のステップＳ１２では、誤り訂正部３ｄは、誤り訂正が可能なエラーか否かの判定を行う。訂正が可能であれば、次のステップＳ１３に移り、誤りの数が例えば１ビット以内か否かを判断し、１ビット以内であれば、そのまま放置する。一方、ステップＳ１３において、１ビットを超えるエラーである場合には、ステップＳ１４に進み、読み出しデータの誤り訂正を行う。【００３４】  次に、ステップＳ１５として、コントローラ３は第１の管理テーブル４２に書き込まれているブロック毎の管理データを参照し、書き込み可能な物理アドレスをサーチ、即ち書き込みアドレスを計算する。次のステップＳ１６では、ステップＳ１５でサーチされた物理アドレスにデータの書き込みを行う。次に、ステップＳ１７として、第１の管理テーブル４２上の対応管理データを“１”から“０”に書き換えると共に、論理アドレスである論理ブロック番号を書き込む。また、誤りがあったアドレスに対応する第１の管理テーブル４２上の管理データを“１”から“０”に書き換え、不良ブロック化を行う。こうして第１の管理テーブル４２の内容を更新する。【００３５】  ステップＳ１７の処理が終了した場合、ステップＳ１３でデータ誤りが１ビット以内と判定された場合、ステップＳ１２で誤り訂正が不可能と判断された場合は、ステップＳ１８に進む。ステップＳ１８として、エラーアドレスレジスタ４４内で他にもエラーアドレスが残っていればステップＳ１１に戻るが、全てのエラーアドレスの処理が完了すれば、ステップＳ１９に進む。【００３６】  ステップＳ１９において、訂正不可能なアドレスが存在するか否かを調べ、存在しなければステップＳ９に進む。訂正不可能なアドレスが存在する場合はステップＳ２０に移る。ステップＳ９では、第１の管理テーブル４２の管理情報を第２の管理テーブル４３にコピーする。こうして、書き込みを正常終了する（ステップＳ１０）。【００３７】  一方、図４のステップＳ１９において、読み出されたデータの誤り訂正が不可能であれば、一連の書き込みを全て無効にするべく、ステップＳ２０に移り、第２の管理テーブル４３の管理情報を第１の管理テーブル４２にコピーする。これで第１の管理テーブル４２が１つ前の状態に戻されたことになる。次のステップＳ２１に移ると、訂正不可能なアドレスに対応する第１の���理テーブル４２上の管理データを“１”から“０”に書き換え、不良ブロック化を行う。次に、ステップＳ２２として、ステップＳ２１で更新された第１の管理テーブル４２の管理情報を第２の管理テーブル４３にコピーする。こうして書き込みを異常終了する（ステップＳ２３）。【００３８】  以上の処理において、ステップＳ５、ステップＳ１７、ステップＳ２１は、書き込みを行ったブロックの再書き込みを禁止するよう第１の管理テーブル４２の管理情報を更新する管理テーブル更新部３ｃの機能を達成している。またステップＳ１１、ステップＳ１２、ステップＳ１３、ステップＳ１４は、所定単位の書き込み完了後、エラーアドレスレジスタ４４に保持されたアドレスのデータを順次読み出し、誤りの検出及び訂正を行う誤り訂正部３ｄの機能を達成している。更にステップＳ９、ステップＳ１０、ステップＳ１９、ステップＳ２０、ステップＳ２１、ステップＳ２２、ステップＳ２３は、エラーアドレスレジスタ４４に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを有効とした場合には、第１の管理テーブル４２の管理情報を第２の管理テーブル４３にコピーして正常終了し、エラーアドレスレジスタ４４に保持されたアドレスのデータの誤り状況によって所定単位の書き込みを無効とした場合には、第２の管理テーブル４３の管理情報を第１の管理テーブル４２にコピーして異常終了する終了制御部３ｅの機能を達成している。【００３９】  以上のように本実施の形態によれば、ステップＳ１２で訂正不能なアドレス、及びステップＳ１３で書き込みリトライと判断したアドレスのみに対して不良ブロック処理を行うので、不良ブロックの増大を防止することができる。【００４０】  なお、上記実施の形態では、誤りが２ビット以上の場合は、書き込みリトライを行い、かつ、不良ブロック化した。即ち、ｍ＝２、ｎ＝２としたが、ｎ≧ｍであれば良く、例えばｍ＝１、ｎ＝２であっても、ｍ＝２、ｎ＝３であっても良い。【００４１】  なお、上記の実施の形態では、説明を簡単にするために、最初に検出された訂正不能なアドレスのみを不良ブロック化して異常終了したが、エラーアドレスに保持された全てのアドレスのデータを読み出し、訂正不能な全てのアドレスを不良ブロック化しても良い。【００４２】  なお、上記の説明では、不揮発性メモリを搭載したメモリカードに実施した場合について述べた。しかしその他、例えば電子機器が内蔵する不揮発性メモリに対しても同様に実施可能であり、本発明はメモリカードに限るものではない。また、ＲＡＭ４は揮発性メモリで構成されるとしたが、不揮発性メモリであってもよく、揮発性メモリと不揮発性メモリの組み合わせであってもよい。
【産業上の利用可能性】
【００４３】  本発明のメモリ制御回路及びメモリ制御方法は、コントローラと不揮発性メモリとを搭載した不揮発性記憶装置に好適に利用できる。また不揮発性メモリを内蔵した種々の電子機器にも利用できる。
【図１】
0004722839.tif 000002
【図２】
0004722839.tif 000003
【図３】
0004722839.tif 000004
【図４】
0004722839.tif 000005