JP4950886B2 - 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法 - Google Patents

不揮発性記憶装置、メモリコントローラ及び不良領域検出方法 Download PDF

Info

Publication number
JP4950886B2
JP4950886B2 JP2007525978A JP2007525978A JP4950886B2 JP 4950886 B2 JP4950886 B2 JP 4950886B2 JP 2007525978 A JP2007525978 A JP 2007525978A JP 2007525978 A JP2007525978 A JP 2007525978A JP 4950886 B2 JP4950886 B2 JP 4950886B2
Authority
JP
Japan
Prior art keywords
error
information
block
physical
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007525978A
Other languages
English (en)
Other versions
JPWO2007010829A1 (ja
Inventor
利行 本多
晋弘 真木
重一 小来田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2007525978A priority Critical patent/JP4950886B2/ja
Publication of JPWO2007010829A1 publication Critical patent/JPWO2007010829A1/ja
Application granted granted Critical
Publication of JP4950886B2 publication Critical patent/JP4950886B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk

Description

本発明は、不揮発性メモリに記録したデータの信頼性を向上させるための誤り訂正機能を用いた不揮発性記憶装置において、不揮発性メモリの不良により発生する偶発的ではない読出しエラーを低減するための不揮発性記憶装置、メモリメモリコントローラ及び不良領域検出方法に関する。
近年、不揮発性メモリを搭載したメモリカードは、デジタルカメラや携帯電話のメモリカードとして市場を拡大している。しかし、不揮発性メモリは、データを書きかえる度にメモリセルが徐々に劣化し、最終的には書込みや読出しのエラーが起こる。もちろん十分に信頼性が高く、書換えによるメモリセルの劣化をほぼ無視できるのであれば、たとえ10年間の使用においてもなんら問題はない。しかし、実際にはそうではないこともあり、不揮発性メモリを制御するシステムにECC(Error Check and Correct)回路などの誤り訂正回路を搭載することで、実質的に信頼性の高いメモリカードが実現されている。
しかし、プロセスの微細化によってメモリセルのサイズを小さくすることや、大容量化のための多値化によりメモリセル単体の信頼性を保つことが困難となっている。また、大容量化が進むとともにメモリのパターンが増加し、製品検査の時間も増えるので、デバイスを十分に精度高く検査することは困難になっている。
フラッシュメモリの書込みや読出しのエラーを管理する方法として、特許文献1には読出し、書込みにおけるエラー発生情報をカウントして、劣化した領域は使用しないようにする方法が提案されている。また特許文献2には、読出しエラーが連続する領域について代替処理を行う方法が提案されている。
特開平11−53266号公報 WO01/022232
フラッシュメモリを含む大部分の不揮発性メモリは、メモリセルにバイアス等のエネルギーを印加することなくデータを保持し続けるという性能を有している。これは、データを保持している状態が安定であるということを示している。揮発性のメモリであるSRAMがエネルギーの印加によってデータを保持していることとは全く異なっている。従って不揮発性メモリのデータを書換えるには安定状態にあるメモリセルにエネルギーを印加する必要があるので、この際にわずかではあるがメモリセルの劣化が起こる。
フラッシュメモリなどの不揮発性メモリで発生する、メモリセルの劣化を原因とするエラーは、データの書換えに大きく起因しており、データの読出しによる影響は小さい。このことを考慮することでエラー発生時の処理を適切に行うことができるが、特許文献1や特許文献2に記載の不揮発性記憶装置では、書換えと読出しによる不揮発性メモリの劣化が十分には考慮されていない。またデータの読出しによるエラー発生への影響は書換えに比べると極めて小さいが、同じデータに対する読出しを数多く繰り返す場合には、メモリセルの劣化ではなく、徐々に進行するデータ自身の劣化が見られるので、データ読出しの影響も無視できない。しかし、特許文献1や特許文献2に記載の不揮発性記憶装置は、このような進行性のデータの劣化を十分に考慮したものではない。
例えば、一般的な不揮発性メモリの代表であるNAND型フラッシュメモリは、ECC回路による誤り訂正を前提として製品化されている。それは偶発的なビットエラーが、不揮発性メモリにおいて回避できないからである。そのために、NAND型フラッシュメモリを使用しているメモリカードのメモリコントローラは、その内部にECC符号を生成する機能や誤りを検出して訂正する機能を持っている。メモリコントローラは、ECC回路を用いて偶発的なビットエラーを訂正して、エラーが発生した物理ブロックを再利用する。これによりメモリカードの実質的な信頼性が向上する。
しかしながら、偶発的なビットエラーに比べると頻度は低いものの、メモリセルの劣化等の原因で物理ブロックに固定的に存在する不良により、読出し時にビットエラーが発生することがある。信頼性が十分高く、ビットエラーの発生頻度が低いNAND型フラッシュメモリを使用している場合には、従来のメモリコントローラのように、発生したビットエラーを偶発的なものか固定不良によるものかを判断することなく、物理ブロックの使用を制限しても、フラッシュメモリの使用において問題は起こらない。しかし、フラッシュメモリのプロセスの微細化や多値化により、ビットエラーの発生頻度は従来より高くなっている。このことから、誤り訂正を行うことを前提として、ビットエラーの存在を許容する必要があり、ビットエラーが発生しても誤りを訂正してフラッシュメモリを使用し続ける必要がある。ところが、ビットエラーの要因がメモリセルの固定不良に起因する場合には、固定不良が存在する物理ブロックはメモリカードの読み出しエラーを頻発させる。
例えば、メモリカードの物理ブロックに存在する固定不良によりデータエラーが発生して、デジタルカメラで撮影した静止画を見ることができない場合がある。この場合に静止画のデータをデジタルカメラのシステム上で削除すると、以降撮影する静止画に対して同一のブロックが再利用されて、データエラーが再度発生してしまう。このようにして静止画を見られないケースが頻発する。
また、固定不良ではなくても、同じデータに対して非常に多くの回数の読み出しを繰り返すと、徐々にではあるがビットエラーが増加し、データが劣化していく場合がある。この場合でも、信頼性が十分高く、ビットエラーの発生頻度が低いNAND型フラッシュメモリを使用している場合には、従来のメモリコントローラのようにビットエラーの発生によって物理ブロックの使用を制限してもよい。しかし、誤り訂正を行うことが前提となっている場合、即ちビットエラーの存在を許容する必要がある場合には、ビットエラーが発生しても誤りを訂正してフラッシュメモリを使用し続ける必要がある。そのためにデータの劣化によるビットエラーのビット数が誤り訂正能力を超えてしまい、訂正不可能な読出しエラーが発生する結果を招く。これらのことを受けて、読出しエラーを低減させるメモリカードの開発が課題となっている。
本発明は、フラッシュメモリ内で固定不良が存在していると推測される、又は読出しによるビット不良が累積して誤り訂正能力を超えると推測される物理ブロックを適確に検出する。さらに、その物理ブロックに対する書込みまたは読出しを制限又は回避することにより信頼性の高い不揮発性記憶装置を提供することを目的とする。
この課題を解決するために、本発明の不揮発性記憶装置は、不揮発性メモリとメモリコントローラを具備する不揮発性記憶装置であって、前記不揮発性メモリは、消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなるものであり、前記メモリコントローラは、前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、前記不揮発性メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正をする機能とを備える誤り訂正回路と、前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、前記メモリコントローラのアドレステーブルは、前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新し、前記読出しエラーを検出した物理ブロックを使用するかどうかを決めるものである。
ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるようにしてもよい。
ここで前記演算処理ユニットは、前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新するようにしてもよい。
ここで前記演算処理ユニットは、前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新するようにしてもよい。
ここで前記メモリコントローラのアドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備え、前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、読出しエラーが発生した回数を示す情報であるエラーカウンタ情報と、前記読出しエラーの発生した物理ブロックを物理消去した回数を示すエラーブロック消去カウンタ情報とを備え、前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報が記録された前記エラーレコードが存在したときは、前記エラーカウンタ情報と前記エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を示しかつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値であるときに、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録するようにしてもよい。
ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるようにしてもよい。
ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新するようにしてもよい。
ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新するようにしてもよい。
この課題を解決するために、本発明のメモリコントローラは、消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなる不揮発性メモリに対して、データの読出し及び書込みを制御するメモリコントローラであって、前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、前記不揮発性メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正をする機能とを備える誤り訂正回路と、前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、前記アドレステーブルは、前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新し、前記読出しエラーを検出した物理ブロックを使用するかどうかを決めるものである。
ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるようにしてもよい。
ここで前記演算処理ユニットは、前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新するようにしてもよい。
ここで前記演算処理ユニットは、前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新するようにしてもよい。
ここで前記アドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備え、前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、読出しエラーが発生した回数を示す情報であるエラーカウンタ情報と、前記読出しエラーの発生した物理ブロックを物理消去した回数を示すエラーブロック消去カウンタ情報とを備え、前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報が記録された前記エラーレコードが存在したときは、前記エラーカウンタ情報と前記エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を示しかつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値であるときに、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録するようにしてもよい。
ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるようにしてもよい。
ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新するようにしてもよい。
ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新するようにしてもよい。
この課題を解決するために、本発明の不良領域検出方法は、消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなる不揮発性メモリと、前記不揮発性メモリからの読出しデータに対してエラーを検出する機能及びエラーの訂正が可能である場合には訂正をする機能を備える誤り訂正回路と、読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを複数保持するエラーテーブルを備えるメモリコントローラと、を具備する不揮発性記憶装置の不良領域検出方法において、データを読み出すときに外部から指定された論理アドレスから物理アドレスを決定し、前記物理アドレスに対応する物理ブロックからデータを読出し、当該読出したデータに訂正可能なエラーがある場合は、前記エラーを訂正して外部に出力し、前記物理アドレスを前記エラーテーブルに登録するものである。
ここで前記エラーテーブルに物理アドレスが登録された物理ブロックのデータが書換えられたときに、前記データが書換えられた回数を示すエラーブロック消去カウンタを前記エラーテーブルに登録し、前記データが書き換えられた物理ブロックから読出したデータに訂正可能なエラーがある場合は、当該エラーを訂正して外部に出力すると共に、前記データが書き換えられた後にエラーが発生した回数を示すエラーカウンタを前記エラーテーブルに登録し、前記エラーカウンタが所定の値以上を示したときに、前記エラーカウンタが登録された物理ブロックへのデータの書込み及び読出しを禁止するようにしてもよい。
本発明によれば、エラーの発生する確率が高いと想定される物理ブロックを適切に推定することで、当該物理ブロックのデータの書込みまたは読出しを制限又は回避することができ、信頼性の高い不揮発性記憶装置を提供することができる。
図1は第1の実施例の不揮発性記憶装置の構成を示したブロック図。 図2はフラッシュメモリの内部の構成を示したブロック図。 図3は物理ブロック201の内部の構成を示したブロック図。 図4はBBテーブル112の構成を示した図。 図5はECCエラーテーブル111の構成を示した図。 図6は第1の実施例のECCエラーレコードとECCエラーレコードに格納する情報の変化について示した図。 図7は第1の実施例の読出しのフローチャート。 図8は第1の実施例のECCエラーテーブル登録のフローチャート。 図9は第1の実施例の物理消去時のECCエラーテーブル更新のフローチャート。 図10は第2の実施例のECCエラーレコードを示した図。 図11は第2の実施例のECCエラーテーブル登録のフローチャート。 図12は第3の実施例のECCエラーレコードとECCエラーレコードに格納する情報の変化について示した図。 図13は第3の実施例のECCエラーテーブル登録のフローチャート。 図14は第3の実施例の物理消去時のECCエラーテーブル更新のフローチャート。 図15は第4の実施例の読出しのフローチャート。 図16は進行性エラーの発生状況を表す図。 図17は第5の実施例の不揮発性記憶装置の構成を示したブロック図。 図18はフラッシュメモリの内部の構成を示したブロック図。 図19は物理ブロック201の内部の構成を示したブロック図。 図20はECCエラーテーブル111の構成を示した図。 図21は第5の実施例のECCエラーレコードを示した図。 図22は第5の実施例の読出しのフローチャート。 図23は第5の実施例のECCエラーテーブル登録のフローチャート。 図24は第5の実施例のデータ訂正複写処理のフローチャート。 図25は第6の実施例の読出しのフローチャート。 図26は第6の実施例のデータ訂正複写処理のフローチャート。
符号の説明
101 メモリカード
102 メモリコントローラ
103 フラッシュメモリ
104 ホストインターフェース
105 MPU
106 アドレステーブル
107 フラッシュインターフェース
108 バッファメモリ
109 ECC回路
110 論物変換テーブル
111 ECCエラーテーブル
112 BBテーブル
113 エントリテーブル
501 ECCエラーレコード
601 エラーブロック
602 エラー発生情報
603 エラーブロック消去情報
604 エラー再発生情報
701 メモリカード
702 メモリコントローラ
703 フラッシュメモリ
704 ホストインターフェース
705 MPU
706 アドレステーブル
707 フラッシュインターフェース
708 バッファメモリ
709 ECC回路
710 論物変換テーブル
711 ECCエラーテーブル
712 エントリテーブル
801 ECCエラーレコード
1001 エラーページ
1201 エラーブロック
1202 エラーカウンタ
1203 エラーブロック消去カウンタ
1601 エラービットカウンタ
(実施例1)
図1は、第1の実施例の不揮発性記憶装置の構成を示すブロック図である。メモリカード101は、メモリコントローラ102と不揮発性メモリであるフラッシュメモリ103とを備えている。
図2は、フラッシュメモリ103の内部の構成を示すブロック図である。ここでは、1Gビットの容量を持つフラッシュメモリについて説明する。フラッシュメモリ103の内部は、PB0〜PB1023の1024個の物理ブロックからなる。物理ブロックは、フラッシュメモリ103においてデータ消去の最小単位である。ひとつの物理ブロック容量は128kB+4kBであり、2の累乗の値ではなく2の累乗よりも少し大きい容量を持つ。ここで132kBと表現せずに128kB+4kBと表現しているのは、ひとつの物理ブロックに書込みできるデータの容量は128kBであり、これに加えてさらに4kBの領域にECC符号や当該物理ブロックの論理アドレス値等の管理データを書込むことを示すためである。
図3は、物理ブロックの内部の構成を示すブロック図である。フラッシュメモリ103内の各物理ブロックは64個の物理ページPP0〜PP63を備える。物理ページは、フラッシュメモリ103においてデータ書込みの最小単位である。ひとつの物理ページの容量は2kB+64Bである。この表現は、前述した物理ブロックの場合と同様に、ひとつの物理ページに書込みできるデータの容量は2kBであり、残りの64BにはECCを含む管理データを書込むことを示している。
メモリコントローラ102は、ホストインターフェース104と、アドレステーブル106と、フラッシュインターフェース107と、バッファメモリ108と、ECC回路109と、MPU(小型演算ユニット)105とを有している。ホストインターフェース104は、メモリカード101の外部に接続されるホスト機器とのインターフェースを制御する。
アドレステーブル106は、フラッシュメモリ103に格納されているデータの管理情報を持つテーブルであり、論物変換テーブル110と、ECCエラーテーブル111と、エントリテーブル113と、BB(不良ブロック)テーブル112とを有している。これらのテーブルは揮発性メモリに保持される。
論物変換テーブル110は、メモリカード101の外部から指定する論理アドレスである論理ブロックのアドレスと、フラッシュメモリ103の内部の物理アドレスである物理ブロックのアドレスとの対応関係を示すテーブルである。論物変換テーブル110は論理アドレスから当該論理ブロックに対応する物理アドレスを得るためのものである。
ECCエラーテーブル111は、読出しエラーが発生した物理ブロックの物理アドレスや、データの物理消去の履歴や、物理消去後の読出しエラーの発生履歴などの情報を持ち、固定不良の物理ブロックの検出に用いられる。
エントリテーブル113は、フラッシュメモリ103の各々の物理ブロックに対してデータが書込み済みであるか、消去済みであるかについて、それぞれ1ビットで示す情報を持つテーブルである。例えばデータ書込み済みの物理ブロックはビット“0”で、消去済みの物理ブロックはビット“1”で表す。
BBテーブル112の構成を図4に示す。BBテーブル112は、フラッシュメモリ103の物理ブロックと同数のBBレコードi(i=0〜1023)を備えている。BBレコードiは、それぞれ物理ブロックと1対1に対応しており、対応する物理ブロックのアドレスを有している。さらに、対応する物理ブロックが不良ブロックであるか否かについて、1ビットで示す情報を有している。不良ブロックの物理ブロックはビット“0”、不良でない物理ブロックはビット“1”として、BBレコードiに表示する。ここでBBテーブル112は、全ての物理ブロックに対してBBレコードiを持たなくてもよい。不良ブロックだけについてBBレコードiを持っていてもよい。
フラッシュインターフェース107は、後述するMPU105の制御によりフラッシュメモリ103にバッファメモリ108のデータを書込んだり、フラッシュメモリ103のデータをバッファメモリ108に書込んだり、フラッシュメモリ103のデータを消去したりする。バッファメモリ108は、外部のホスト機器とフラッシュメモリ103との間でのデータの書込み、読出しの際にデータを一時保持するための揮発性メモリである。
ECC回路109は、バッファメモリ108からフラッシュメモリ103へ転送される書込みデータに付加するECCの符号を生成する。またECC回路109は、フラッシュメモリ103からバッファメモリ108に読み出されたデータについて、ECC演算を行い誤りを検出し、その誤りが訂正可能な誤りであった場合には、バッファメモリ108のデータを訂正する誤り訂正回路である。
MPU105は、メモリコントローラ102全体の制御を行うマイクロコンピュータである。ホスト機器との間でデータの書込み、読出しを行う際には、ホストインターフェース104と、ECC回路109と、フラッシュインターフェース107と、アドレステーブル106とを直接に制御する。特に読出しデータにエラーがあった場合、MPU105は、アドレステーブル106内のECCエラーテーブル111の情報を参照し、必要に応じてECCエラーテーブル111の更新を行う。その結果、使用を禁止すべき物理ブロックがあれば、MPU105は、BBテーブル112のBBレコードiに当該物理ブロックの情報を記録し、BBテーブル112を更新する。さらにMPU105は、更新後のBBテーブルの内容に従ってエントリテーブルの更新も行う。
図5は、ECCエラーテーブル111の構成を示す図である。ECCエラーテーブル111は、16進数で表される#0〜#Fの16個のECCエラーレコード♯iで構成されている。図6は、ECCエラーレコード♯iのフィールドとECCエラーレコード♯iに格納する情報の変化を示した図である。各ECCエラーレコード♯iは、エラーブロック601と、エラー発生情報602と、エラーブロック消去情報603と、エラー再発生情報604とを備えている。エラーブロック601は、読出しエラーの発生した物理ブロック201の物理アドレスを格納する。エラー発生情報602は、最初の読出しエラーが発生したことを示す情報である。エラーブロック消去情報603は、最初の読出しエラーが発生した後に当該物理ブロック201に対して物理消去が行われたことを示す情報である。エラー再発生情報604は、最初の読出しエラーが発生した後に物理消去を行ってもなお、同じ物理ブロックで読出しエラーが再発したことを示す情報である。
図7は、本実施例の不揮発性記憶装置におけるデータ読出しのフローチャートである。外部ホスト機器がメモリカード101からデータを読み出す時には、外部ホスト機器が読出しコマンドと開始アドレスをメモリカード101に送る。このコマンドと開始アドレスを受信し、ホストインターフェース104はMPU105に対してその受信を通知する。図7のフローチャートは、この通知を受けてから後の処理を示している。
MPU105は、開始アドレスを用いて、128kB単位に対応する上位のアドレス部分を論理ブロックアドレスとして、論物変換テーブル110から物理ブロックアドレスを得る。128kB以下に対応する下位のアドレス部分は論理ページアドレスとして論理ページとそのまま同じものとする。次にMPU105は、読出しを行う物理ブロックのアドレスと物理ページのアドレスをフラッシュメモリインターフェース107に指示して、フラッシュメモリ103からデータを読出す(S701)。
続いてECC回路109は、S701で読出したデータに対して読出しエラーが発生しているかどうかを判定する(S702)。読出しエラーが検出されなかった場合、MPU105はホストインターフェース104に対して外部ホスト機器へのデータの出力を指示する(S705)。その後読出しが継続する限り(S706)、読出しの単位でアドレスを増加させながらS701へとループしてデータの読み出し処理は継続する。
S702で読出しエラーが検出された場合、ECC回路109は、その読出しエラーが訂正可能であるかどうかを判断する(S703)。訂正可能である場合には読出しエラーを訂正する(S704)。読出しエラーの訂正後、S705へと遷移して読出しデータを出力する。読出しエラーの訂正が不可能である場合、ECCエラーテーブルの登録を行い(S707)、登録後に読出し処理を終了する。
ここで、ECCエラーテーブルの登録処理(S707)を図8のフローチャートを用いて説明する。読出しエラーの訂正が不可能であれば、MPU105がECCエラーテーブル111の登録状態を検索する(S801)。具体的には、読出しエラーを発生した物理ブロックの物理アドレスが、ECCエラーレコード♯iのいずれかのエラーブロック601の値と一致するかを調べる。
次に、S801の検索で一致するECCエラーレコード♯iがないときは、登録なしと判断される(S802)。続いてMPU105は、エラーブロック601とエラー発生情報602とを新規登録する(S803)。図6(b)は新規登録後の状態を示している。エラーブロック601には読出しエラーの発生した物理ブロックのアドレスが有効値として書込まれている。エラー発生情報602には読出しエラーが発生したことを示す情報”1”が、エラーブロック消去情報603とエラー再発生情報604には”0”が書込まれている。
S802において登録があった場合は、物理消去後に発生した読出しエラーかどうかを、MPU105が判断する(S804)。エラーブロック601に登録のあったECCエラーレコード♯iのエラーブロック消去情報603が”0”であれば、物理消去後に発生した読出しエラーではないので、ECCエラーレコード♯iの更新とECCエラーテーブル111の登録を行わずに登録処理を終了する。読出しエラーが発生してエラー発生情報602に”1”を登録した後に読出しエラーの発生回数をカウントしても、同じブロックの同じデータを読み出す限りは、発生したエラーが偶発的なものか、固定不良によるものかを判断することはできない。よってECCエラーレコード♯iの更新を行わずに登録処理を終了する。
S804において、エラーレコード#iが、図6(c)に示す状態であれば、エラーブロック消去情報603が”1”であり、物理消去後に発生した読出しエラーであることがわかる。このときは、図6(d)に示すように、エラー再発生情報604を”1”に書き換えてから登録処理を終了する(S805)。つまり、ECCエラーレコード♯iの内容を更新すべき読出しエラーとは、一旦読み出しエラーが発生した物理ブロックに対して物理消去を行った後に新たに書込んだデータでもなお発生する読出しエラーのことである。
図9は、データの書込みに先立って行なわれる物理消去の際の、ECCエラーテーブル更新と不良ブロック登録のフローチャートである。外部ホスト機器がメモリカード101にデータを書込むときは、外部ホスト機器が書込みコマンドと書込み開始アドレスをメモリカード101に対して送る。このコマンドと開始アドレスを受けると、MPU105はECCエラーテーブル111の登録状態を検索する(S901)。具体的には、書込み対象の物理ブロックのアドレスが、ECCエラーレコードのエラーブロック601の値と一致するかどうかを調べる。
S901の検索で、書込み対象の物理ブロックに一致するECCエラーレコード♯iがない場合には登録なしと判断して(S902)、ECCエラーテーブル111の登録を行わずに登録処理を終了する。反対に、一致するECCエラーレコード♯iがある場合には登録ありと判定する(S902)。そして、エラー発生情報602だけが”1”でエラーブロック消去情報603とエラー再発生情報604が”0”のときは、エラー発生情報602にのみ記録があることになる。読出しエラーが発生した後の最初の物理消去であると判断する(S903)。その場合は、エラーブロック消去情報603に”1”を登録してECCエラーテーブル111の更新を終了する(S907)。
次に、エラー発生情報602とエラーブロック消去情報603とが”1”で、エラー再発生情報604が”0”のときは、エラーブロック消去情報603まで記録があることになる(S904)。このことから以前エラーが発生したものの物理消去を行った後の書込みではエラーが発生していないことがわかる。即ち最初に発生したエラーは偶発的なエラーであったと判断する。その場合、当該ECCエラーレコード♯iの登録を抹消してECCエラーテーブル111の更新は終了する(S906)。登録の抹消は、図6(a)のECCエラーレコード♯iのエラーブロック601の値を無効値とすることにより行なう。
また図6(d)のように、エラー発生情報602とエラーブロック消去情報603だけでなくエラー再発生情報604までが全て”1”のときは、以前読出しエラーが発生しており、当該物理ブロックに対して物理消去を行った後に書込んだデータでもなお読出しエラーが発生していたことがわかる。この場合は、固定不良に起因するエラーであると判断し、エラーが発生した物理ブロックを不良ブロックとして登録する(S905)。続いて、当該物理ブロックのECCエラーレコード♯iの登録を抹消してECCエラーテーブル111の更新を終了する(S906)。
先に説明したとおりS905の不良ブロック登録とは、BBテーブル112において、当該物理ブロックのアドレスに対応したBBレコードiにビット“0”を登録することである。BBレコードiの登録で不良ブロックの登録が完了するが、これだけでは不良ブロックの使用を制限することはできない。そこで、BBレコードiにビット0として登録した物理ブロックについて、エントリテーブル113上でビット“0”を登録する。エントリテーブル113にビット“0”を登録すると、不良ブロックは書込み済みブロックとして扱われるので、不良ブロックの使用を制限できる。いずれにしても、不良ブロックとしてBBレコードiに登録した物理ブロックについてエントリテーブルにビット“0”を登録することで、不良ブロックの使用を防ぐことができる。
本実施例は、発生した読出しエラーが訂正不可能なときにだけECCエラーテーブルの登録、更新を行い、ECCエラーテーブル内のECCエラーレコードを物理ブロックアドレス単位で仕訳をし、同一の物理ブロックで、物理消去を挟んで2回のエラーが連続して発生したときに不良ブロック登録をすることを特徴としている。本実施例では、ECCエラーテーブルは、発生したエラーが偶発的なものか、固定不良によるものかを判断するための情報を持つ。つまり、最初の読出しエラー発生後当該物理ブロックのデータを物理消去して新たに書込んだデータで読出しエラーが発生しないのであれば、最初のエラーは偶発的なものであると判断できる。最初の読出しエラー発生後、当該物理ブロックのデータを物理消去して新たに書込んだデータでもなお、読み出しエラーが発生するのであれば、固定不良によるエラーであると判断できる。このように本実施例は偶発的なエラーか、固定不良によるエラーかを適確に判断できるものである。また、その判断にもとづき固定不良の物理ブロックを使わないことで、読出しエラーを低減させるという効果を生む。
(実施例2)
本実施例における不揮発性メモリ装置の構成は図1に示される。メモリカード101は、メモリコントローラ102と不揮発性メモリであるフラッシュメモリ103とを備えている。メモリコントローラ102に含まれる各構成要素は、第1の実施例で説明したものと同様である。
図2は、フラッシュメモリ103の内部の構成を示すブロック図であり、フラッシュメモリ103の内部は、PB0〜PB1023の1024個の物理ブロックからなる。図3は、物理ブロックの内部の構成を示すブロック図であり、各物理ブロックは64個の物理ページPP0〜PP63を備える。これらは、第1の実施例で説明したものと同様である。
図5に示すECCエラーテーブル111は複数のECCエラーレコード♯iを備えており、第1の実施例で説明したものと同様である。
本実施例のECCエラーレコード♯iの構成を、図10に示す。図10では、第1の実施例の図6で示したエラーブロック601、エラー発生情報602、エラーブロック消去情報603、エラー再発生情報604に加えて、エラーページ1001が備わる。このエラーページ1001は、読出しエラーが検出された物理ページのアドレスを情報として持っているので、ECCエラーレコード♯iは物理ページを単位として構成することができる。
本実施例の不揮発性記憶装置におけるデータの読出しは、図7に示すフローチャートに準じて行なわれ、S707を除く各ステップでの処理は、第1の実施例と同様である。ここでは図11を用いて、S703でエラー訂正が不可能なときに行うS707のECCエラーテーブル登録について説明する。まずMPU105は、ECCエラーテーブル111の登録状態を検索し、読出しエラーを発生した物理ブロックのアドレスをエラーブロック601に持ち、かつ当該エラーを発生した物理ページのアドレスをエラーページ1001にもつECCエラーレコード♯iを探す(S1101)。
S1101の検索で該当するECCエラーレコード♯iがない場合、MPU105は、ECCエラーレコード#iの登録がないと判断し(S1102)、エラー発生の情報をECCエラーレコード♯iに新規に登録する(S1103)。この登録は、エラーを発生したページが存在する物理ブロックのアドレスをエラーブロック601に、読出しエラーの発生を示す”1”をエラー発生情報602に、エラーを発生したページの物理ページアドレスをエラーページ1001に書込むことで完了する。今回の登録では必要がないエラーブロック消去情報603、エラー再発生情報604には初期値を示す”0”を登録する。
S1102で登録があると判断した場合、MPU105が物理消去後の読出しエラーかどうかを判断する(S1104)。つまりMPU105は、登録のあったECCエラーレコード♯iのエラーブロック消去情報603が”0”であれば、まだ物理消去を行っておらず、物理消去後の読出しエラーではないと判断して、ECCエラーレコード♯iの更新を行わずに終了する。この判断は、同じ物理ページの同じデータを読み出す限りは、何度読み出しエラーが発生しても、偶発的なエラーか、固定不良によるエラーかを判断することはできないことを根拠にしている。
図9は、物理消去時のECCエラーテーブル更新と不良ブロック登録を示すフローチャートであるが、第1の実施例とはS901の処理が異なるので説明する。S901の検索を、物理消去の単位である、物理ブロックアドレスをもとに行うと、物理ブロックアドレスが同じで、物理ページアドレスが違うECCエラーレコード♯iがいくつか検出されることがある。つまり、エラーブロック601の値が同じで、エラーページ1001の値が異なるECCエラーレコード♯iが複数検出される(S901)。検出された複数のECCエラーレコード♯iはS901で検出された順に次のステップでの処理対象となるので、S902以降の処理は第1の実施例と同じである。
また不良ブロック登録の方法と、エントリテーブルへの登録によって不良ブロックの使用を防ぐ方法とは、第1の実施例と同じである。
本実施例は、ECCエラーレコード♯iの構成にエラーページ1001を備え、物理ページのアドレスごとにECCエラーレコード♯iを新規登録することが特徴となっている。このことで、同一物理ブロック内で連続してエラーが発生した場合でも、異なる物理ページで発生したものであるか、同一の物理ページで発生したものかを区別することができ、偶発的なエラーか固定不良によるエラーかを精度高く判断できる。
なお本実施例では、読出しを行うページの単位を、書込みの最小単位である物理ページとしたが、構成するシステムの読出しの単位もしくはECC符号を付加する単位を用いても、物理ブロック単位でのエラー管理よりも精度の高いエラー管理ができる。ECCエラーテーブルの登録、更新は読出しエラーの訂正の可否にかかわらず行ってもよい。
(実施例3)
本実施例における不揮発性メモリ装置の構成は図1に示される。メモリカード101は、メモリコントローラ102と不揮発性メモリであるフラッシュメモリ103とを備えている。メモリコントローラ102に含まれる各構成要素は、第1の実施例で説明したものと同様である。
図2は、フラッシュメモリ103の内部の構成を示すブロック図であり、フラッシュメモリ103の内部は、PB0〜PB1023の1024個の物理ブロックからなる。図3は、物理ブロックの内部の構成を示すブロック図であり、各物理ブロックは64個の物理ページPP0〜PP63を備える。これらは、第1の実施例で説明したものと同様である。
図5に示すECCエラーテーブル111は、複数のECCエラーレコード♯iを備えており、第1の実施例で説明したものと同様である。
本実施例のECCエラーレコード♯iの構成を、図12に示す。図12は、ECCエラーレコード♯iのフィールドとECCエラーレコード♯iに格納する情報の変化を示している。エラーブロック1201は、エラーが発生した物理ブロックの物理アドレスを格納する。エラーカウンタ1202は、読出しエラーが発生した回数を格納する。当該物理ブロックの物理消去を経て新しく書込まれたデータでさらに読出しエラーが発生すれば、エラーカウンタ1202のエラーの回数を1回分増やす。エラーブロック消去カウンタ1203は読出しエラーの発生した物理ブロックを物理消去した回数を示す。
本実施例の不揮発性記憶装置におけるデータの読出しは、図7に示すフローチャートに準じて行なわれ、S707を除く各ステップでの処理は第1の実施例と同様である。ここではS703でエラー訂正が不可能なときに行うS707のECCエラーテーブル登録について説明する。
ECCエラーテーブルの登録処理を図13に示す。まずMPU105がECCエラーテーブル111の登録状態を検索する(S1301)。具体的には、読出しエラーを発生した物理ブロックのアドレスをエラーブロック601にもつECCエラーレコード♯iを探すための検索である。
S1301の検索で、物理アドレスの一致するECCエラーレコード♯iがない場合、MPU105は、登録なしと判断し(S1302)、ECCエラーレコード♯iを新規に登録する(S1303)。新規登録後の状態を図12(b)に示す。エラーブロック1201には、読出しエラーの発生した物理ブロックのアドレスが有効値として書込まれる。エラーカウンタ1202には、読出しエラーが1回発生したことを示す”1”が書込まれる。エラーブロック消去カウンタ1203には、エラー発生後の物理消去回数が0回であることを示す”0”が書込まれる。
S1302で登録ありと判断したときは、MPU105は、登録されているECCエラーレコード♯iを参照して、物理消去後に発生した最初のエラーかどうかを判断する(S1304)。具体的には、S1301で検出したECCエラーレコード♯iのエラーカウンタ1202とエラーブロック消去カウンタ1203とを比較する。エラーカウンタ1202が、エラーブロック消去カウンタ1203よりも大きい値であれば、ECCエラーレコード♯iの直前の更新が読み出しエラー発生によるエラーカウンタ1202の増加であると判断する。読み出しエラーが発生した後に物理消去が行われていないことになるので、ECCエラーレコード♯iの更新をせずにECCエラーテーブル111の登録を終了する。一旦エラーカウンタ1202を登録もしくは更新した後は、当該物理ブロック201の物理消去が行われない限り、何度読出しのエラーが発生しても偶発的なエラーか、固定不良によるエラーかを判断することはできない。よって、エラーカウンタ1202がエラーブロック消去カウンタ1203よりも大きい値であれば、さらにエラーカウンタ1202を増加させることはない。
次に、エラーカウンタ1202とエラーブロック消去カウンタ1203の値が同じであれば、ECCエラーレコード♯iの直前の更新が物理消去によるエラーブロック消去カウンタ1203の増加であると判断する。エラーが発生した後に物理消去をおこなったことになるので、MPU105は、物理消去後に読み出しエラーが発生したと判断してS1305へ遷移する。そして図12において、(c)から(d)、(e)から(f)への変化のように、エラーカウンタ1202の情報を1増加して書き換えてからテーブルの更新を終了する。ECCエラーレコード♯iの内容を更新すべき読出しエラーとは、一旦読み出しエラーが発生した物理ブロックに対して物理消去を行った後に、新たに書込んだデータでもなお発生する読み出しエラーである。
図14は、データ書込みに先立つ物理消去時のECCエラーテーブル更新のフローチャートである。まずMPU105が、ECCエラーテーブル111の登録状態を検索する(S1401)。具体的には、物理消去の対象であるフラッシュメモリ103の物理ブロックのアドレスをエラーブロック1201に持つECCエラーレコードを探すための検索である。
S1401の検索で物理アドレスの一致するECCエラーレコード♯iがない場合、MPU105は、登録なしと判定して(S1402)、ECCエラーテーブル111を更新せずに終了する。S1401の検索で該当するECCエラーレコード♯iがある場合には登録ありと判定する(S1402)。
続いてMPU105は、ECCエラーレコード♯iを参照して、物理消去後のエラーが発生しているかどうかを判定する(S1403)。具体的には、エラーカウンタ1202とエラーブロック消去カウンタ1203とを比較して両者が同じ値であれば、ECCエラーレコード♯iの直前の更新が、物理消去によるエラーブロック消去カウンタ1203の増加であり、消去後にエラーが発生していないと判断する。このことから、物理消去前に発生した読み出しエラーは偶発的なエラーであったと判断する。この判断の後、MPU105は、ECCエラーレコード♯iの登録を抹消して(S1404)ECCエラーテーブル111の更新を終了する。図12(a)のようにエラーブロック1201の値を無効値とすることで登録を抹消できる。
また、ECCエラーレコード♯iのエラーカウンタ1202とエラーブロック消去カウンタ1203とを比較して、エラーカウンタ1202がエラーブロック消去カウンタ1203よりも大きい値であれば、ECCエラーレコード♯iの直前の更新がエラー発生によるエラーカウンタ1202の増加であり、S1403で消去後のエラーが発生していると判断できる。MPU105は、エラーカウンタ1202を参照し(S1405)、予め定めた規定回数以内であるかどうかを判断する。規定回数以内であれば不良ブロック登録を行う必要は無いので、ECCエラーテーブル111のエラーブロック消去カウンタ1203の値を1だけ増やして(S1406)、ECCエラーテーブル111の更新を終了する。S1405でエラーが規定回数を超えている場合には、固定不良を有する物理ブロックであるとみなして、不良ブロック登録を行う。不良ブロック登録とは、当該物理ブロックのアドレスに対応するBBレコードiに登録する(S1407)。不良ブロックの登録後、当該物理ブロックのECCエラーレコード♯iの登録を抹消する(S1404)。
不良ブロック登録の方法と、エントリテーブルへの登録によって不良ブロックの使用を防ぐ方法は、第1の実施例と同様である。
多値のフラッシュメモリのように偶発的なビットエラーの発生頻度が高いフラッシュメモリを用いた記憶装置の場合、同一の物理ブロックまたはページで、物理消去を挟んで、偶発的なビットエラーが連続して発生することもある。この場合、固定不良を有していないこの物理ブロックを不良ブロックとして登録してしまい、当該物理ブロックの使用を制限するのは適当ではない。そこで本実施例は、不良ブロック登録をするまでのエラーの発生回数を、3回以上の回数で任意に設定できるようにしている。不良ブロック登録をするまでのエラー発生回数の規定値を大きくとることで、適確に固定不良を検出することができる。
尚、本実施例のECCエラーレコード♯iに物理ブロックページを記録するエラーページ情報を付加して、エラーテーブルを物理ページ単位で登録してもよい。また、ECCエラーテーブルの登録、更新は読出しエラーの訂正の可否にかかわらず行ってもよい。
(実施例4)
本実施例における不揮発性メモリ装置の構成は図1に示される。メモリカード101は、メモリコントローラ102と不揮発性メモリであるフラッシュメモリ103とを備えている。メモリコントローラ102に含まれる各構成要素は、第1の実施例で説明したものと同様である。
図2は、フラッシュメモリ103の内部の構成を示すブロック図であり、フラッシュメモリ103の内部は、PB0〜PB1023の1024個の物理ブロックからなる。図3は、物理ブロックの内部の構成を示すブロック図であり、各物理ブロックは64個の物理ページPP0〜PP63を備える。これらは、第1の実施例で説明したものと同様である。
図5に示すECCエラーテーブル111は、複数のECCエラーレコード♯iを備えており、第1の実施例で説明したものと同様である。
図15は、本実施例の不揮発性記憶装置における、データ読出しのフローチャートである。S1501での処理は、第1の実施例でのS701と同じ処理である。
S1501に続いて、ECC回路109は、読出したデータに対して読出しエラーが発生しているかどうかを判定する(S1502)。読出しエラーが発生していない場合、MPU105は、ホストインターフェース104に対して外部ホスト機器へのデータの出力を指示する(S1506)。その後読出しが継続する限り(S1507)、読出しの単位でアドレスを増加させながらS1501へとループしてデータの読み出し処理は継続する。
読み出しエラーが発生しているかどうかを判定し(S1502)、読出しエラーが発生していた場合には、ECCエラーテーブル111に対してECCエラーレコード#iの登録を行う(S1503)。ECCエラーテーブル111への登録が終わると、ECC回路109が、その読出しエラーについて訂正可能であるかどうかを判断し(S1504)、訂正可能である場合には読出しエラーを訂正する(S1505)。読出しエラー訂正後、読出しデータを出力し、データの読み出しが継続するかどうかを判定する(S1507)。尚、読出しエラーの訂正が不可能である場合には(S1504)、直ちに読出しを終了する。
本実施例では、読出しエラーを検出すればエラー訂正の可、不可にかかわらず、ECCエラーテーブル111の登録を行う。ECCエラーテーブル111の登録方法は、第1の実施例と同じであり、図8に示すとおりである。
データの書込みに先立って行なわれる物理消去時のECCエラーテーブル更新と不良ブロック登録は、第1の実施例と同じであり、図9に示すとおりである。
不良ブロック登録の方法と、エントリテーブルへの登録によって不良ブロックの使用を防ぐ方法は、第1の実施例と同じである。
二値のフラッシュメモリのように偶発的なビットエラーの発生頻度が低いフラッシュメモリ103でメモリカードを構成した場合、訂正不可能なエラーが、物理消去を挟んで2回続いて発生する頻度は非常に低く、ほとんどのエラーは訂正可能なものである。固定不良に起因するエラーであっても訂正可能であることが多いので、エラー訂正が不可能な場合にのみECCエラーテーブルの登録をしていたのでは、固定不良の存在する物理ブロックを適確に検出することができない。これに対して本実施例は、ビットエラーを検出すると、エラー訂正の可、不可にかかわらずECCエラーテーブルにECCエラーレコード#iを登録するので、偶発的なビットエラーの発生頻度が低いフラッシュメモリでも適切に固定不良の存在する物理ブロックの使用を制限できる。
尚、本実施例のECCエラーレコード♯iに物理ブロックページを記録するエラーページ情報を付加して、エラーテーブルを物理ページ単位で登録してもよい。また、ECCエラーテーブルの登録、更新は読出しエラーの訂正の可否にかかわらず行ってもよい。
(実施例5)
図16は、ある一つの物理ブロックに書込まれているデータを繰り返し読み出すと、読出しの回数に応じてビットエラーが増加していく様子を表している。図中、網目模様は発生したエラーのビット数を表しており、読み出し回数が増えるにつれて、ECC回路の訂正能力を表すECC訂正可能ビット数の破線に向かって増加している。データ読出しのためにメモリセルに印加される電圧などが原因でメモリセルに書込まれたビットが変化してしまい、このようなエラーが発生する。本実施例では、このようなエラーを進行性エラーと呼ぶ。
図16のE/Wで表される箇所は、データの消去と書込みを表しており、物理ブロックのデータを消去してから、その同じ物理ブロックに新たなデータを書込んだことを示している。E/Wの直後は進行性エラーが一旦無くなるが、データの読出し回数が増えると、漸次進行性エラーのビット数が増加するため、ECC回路の訂正能力に余力がなくなる。このままの状態でデータの読み出しを繰り返して、ECC回路の訂正能力を超えるビット数のエラーが発生するのは好ましくない。そこで、ECC回路の訂正可能ビット数以下に訂正閾値を設け、ある物理ブロックから読み出したデータに訂正閾値以上のビット数のエラーが検出されると、検出されたエラーを訂正して、訂正された当該データを別の物理ブロックに書込む。こうすることで進行性エラーが一旦無くなり、データの安全性が確保されるとともに、ECC回路の訂正能力に余力が取り戻される。尚、本実施例では、ECC回路の訂正可能ビット数、訂正閾値ともに4ビットとする。本実施例では、上記の事情に対応するための方法を以下に説明する。
以下に、本実施例について説明する。図17は、本実施例の不揮発性記憶装置の構成を示すブロック図である。メモリカード701は、メモリコントローラ702と不揮発性メモリであるフラッシュメモリ703とを備えている。
図18は、フラッシュメモリ703の内部の構成を示すブロック図である。ここでは、1Gビットの容量を持つフラッシュメモリについて説明する。フラッシュメモリ703の内部は、PB0〜PB1023の1024個の物理ブロックからなる。物理ブロックは、フラッシュメモリ703においてデータ消去の最小単位である。ひとつの物理ブロック容量は128kB+4kBで表される。これは、ひとつの物理ブロックのデータ容量は128kBであり、さらに4kBの領域にECC符号や当該物理ブロックの論理アドレス値等の管理データが書込まれることを示す。
図19は、物理ブロックの内部の構成を示すブロック図である。フラッシュメモリ703内の各物理ブロックは64個の物理ページPP0〜PP63を備える。物理ページは、フラッシュメモリ703においてデータ書込みの最小単位である。ひとつの物理ページの容量は2kB+64Bである。これは、ひとつの物理ページに書込みできるデータの容量は2kBであり、残りの64BにはECCを含む管理データが書込まれることを示す。
メモリコントローラ702は、ホストインターフェース704と、アドレステーブル706と、フラッシュインターフェース707と、バッファメモリ708と、ECC回路709と、MPU(小型演算ユニット)705とを有している。ホストインターフェース704は、メモリカード701の外部に接続されるホスト機器とのインターフェースを制御する。
アドレステーブル706は、フラッシュメモリ703に格納されているデータの管理情報を持つテーブルであり、論物変換テーブル710と、ECCエラーテーブル711と、エントリテーブル712とを有している。これらのテーブルは揮発性メモリに保持される。
論物変換テーブル710は、メモリカード701の外部から指定する論理アドレスである論理ブロックのアドレスと、フラッシュメモリ703の内部の物理アドレスである物理ブロックのアドレスとの対応関係を示すテーブルである。論物変換テーブル710は論理アドレスから当該論理ブロックに対応する物理アドレスを得るためのものである。
ECCエラーテーブル711は、読出しエラーが発生した物理ブロックの物理アドレスや、データの物理消去の履歴や、物理消去後の読出しエラーの発生履歴などの情報を持ち、固定不良の物理ブロックの検出に用いられる。
エントリテーブル712は、フラッシュメモリ703の各々の物理ブロックに対してデータが書込み済みであるか、消去済みであるかについて、それぞれ1ビットで示す情報を持つテーブルである。例えばデータ書込み済みの物理ブロックはビット“0”で、消去済みの物理ブロックはビット“1”で表す。
フラッシュインターフェース707は、後述するMPU705の制御によりフラッシュメモリ703にバッファメモリ708のデータを書込んだり、フラッシュメモリ703のデータをバッファメモリ708に書込んだり、フラッシュメモリ703のデータを消去したりする。バッファメモリ708は、外部のホスト機器とフラッシュメモリ703との間でのデータの書込み、読出しの際にデータを一時保持するための揮発性メモリである。
ECC回路709は、バッファメモリ708からフラッシュメモリ703へ転送される書込みデータに付加するECCの符号を生成する。またECC回路709は、フラッシュメモリ703からバッファメモリ708に読み出されたデータについて、ECC演算を行い誤りを検出し、その誤りが訂正可能な誤りであった場合には、バッファメモリ708のデータを訂正する誤り訂正回路である。
MPU705は、メモリコントローラ702全体の制御を行うマイクロコンピュータである。ホスト機器との間でデータの書込み、読出しを行う際には、ホストインターフェース704と、ECC回路709と、フラッシュインターフェース707と、アドレステーブル706とを直接に制御する。特に読出しデータにエラーがあった場合、MPU705は、アドレステーブル706内のECCエラーテーブル711の情報を参照し、必要に応じてECCエラーテーブル711の更新を行う。さらにMPU705は、更新後のBBテーブルの内容に従ってエントリテーブルの更新も行う。
図20は、ECCエラーテーブル711の構成を示す図である。ECCエラーテーブル711は、16進数で表される#0〜#Fの16個のECCエラーレコード♯iで構成されている。
図21は、本実施例のECCエラーレコード♯iの構成を示している。本実施例のECCエラーレコード#iは、エラーが発生した物理ブロックのアドレスを格納するエラーブロック601と、エラーが発生した物理ページのアドレスを格納するエラーページ1001とに加えて、発生したエラーのビット数を格納するエラービットカウント1601を備える。このエラービットカウント1601は、発生した読出しエラーのビット数を情報として持っており、ECCエラーレコード♯iで発生したビットエラーの程度を表すことになる。
図22は、本実施例の不揮発性記憶装置におけるデータ読出しのフローチャートである。MPU705は、読出しを行う物理ブロックのアドレスと物理ページのアドレスをフラッシュメモリインターフェース707に指示して、フラッシュメモリ703からデータを読出す(S1701)。S1701に続いて、ECC回路709は読出したデータに対して読出しエラーが発生しているかどうかを判定する(S1702)。読出しエラーが発生していない場合、MPU705は、ホストインターフェース704に対して外部ホスト機器へのデータの出力を指示する(S1707)。その後読出しが継続する限り(S1708)、読出しの単位でアドレスを増加させながらS1701へとループしてデータ読み出しの処理は継続する。
S1702での判定で読出しエラーが発生していた場合には、ECCエラーテーブル711への登録を行う(S1703)。ECCエラーテーブル711への登録が終わると、ECC回路709が、その読出しエラーについて訂正可能な4ビット以下であるかどうかを判断する(S1704)。読出しエラーの訂正が不可能な場合は(S1704)、直ちにデータの読出しを終了する。
訂正可能である場合は、読出しエラーを訂正する(S1705)。読出しエラー訂正後、データ訂正複写処理を行ない(S1706)、読出しデータを出力する(S1707)。その後、読み出しが継続するかどうかを判定する(S1708)
本実施例では、読出しエラーを検出すれば訂正の可、不可にかかわらず、ECCエラーテーブルの登録を行う。ここで、ECCエラーテーブルの登録(S1703)の処理を、図23のフローチャートを用いて説明する。
読出しエラーを検出した場合、MPU705が、ECCエラーテーブル711の登録状態を検索する(S1801)。具体的には、読出しエラーを発生した物理ブロックおよび物理ページの物理アドレスが、ECCエラーテーブル711のいずれかのECCエラーレコード#iのエラーブロック601およびエラーページ1001の値と一致するかどうかを調べる。
次にS1801の検索で該当するECCエラーレコード♯iがないときは、登録なしと判断する(S1802)。続いて、エラーブロック601とエラーページ1002とエラービットカウント1603のそれぞれの値を空きのECCエラーレコード♯iに新規登録する(S1803)。この時にECC回路709の訂正能力を超える5ビット以上のエラーが発生していれば、ECCエラーレコード♯iに登録するエラービットカウントを決めることができないので、この場合には、訂正不可能であるということが分かる値を登録する。例えばECC回路709の最大訂正能力が4ビットであれば、それを超える値である5を登録すればよい。
S1802においてECCエラーレコード#iの登録が検出された場合、MPU705は、ECCエラーレコード#iのエラービットカウントよりも、今回発生したエラーのビットカウントが多いかどうかを判断する(S1804)。登録のあったECCエラーレコード♯iのエラービットカウント1601と今回の読出しでのエラービットカウントを比較してビットカウントが増加していなければ、ECCエラーレコードの更新を行わずに終了する。増加している場合は、エラービットカウント1601を増加後の値に書き換えて、ECCエラーテーブルの登録を終了する(S1805)。
次に、図24のフローチャートを用いて、データ訂正複写処理(S1706)を説明する。訂正可能なエラーの訂正(S1705)後、MPU705は、今回読み出した物理ページのデータを今後も継続して読み出してよいかどうかの判定を行う。つまり、今後も継続してデータの読出しを行った場合に、訂正不可能なビットエラーが発生する可能性が高いかどうかを判定し、適切な処理を行うためである。
まずECCエラーレコード♯iからエラービットカウント1601の値を取得する(S1901)。次に取得したエラービットカウントが訂正閾値の4ビット以上かどうかを判定する(S1902)。エラービットカウントが訂正閾値の4ビット未満であれば、今後エラービットが増加しても、直ちに訂正不可能な読出しエラーに至る事はないと判断しデータ訂正複写処理を終了する。
エラービットカウントが4ビットの時には訂正閾値と等しい値であるので訂正後データの書込み(S1903)を行う。具体的には、MPU705が、例えばバッファメモリ708にある訂正後のデータをフラッシュメモリ703の任意の物理ブロックに書込む。このときにデータを書込む物理ブロックは、該データを読み出した物理ブロック以外の物理ブロックである。最後に、エラーを発生した物理ブロックについてのECCエラーレコード♯iの登録を抹消する(S1904)。
以上のようにして、訂正閾値以上のエラービットカウントが発生した物理ページのデータは、今後訂正不可能な読出しエラーに発展する可能性があると判断し、訂正可能なうちに訂正をし、訂正済みのデータを別の物理ブロックの物理ページに書込む。
本実施例は、発生したビットエラーの数が5ビットや6ビットなどで、ECC回路の訂正能力を超えており、エラーの訂正が不可能なときにはデータ訂正複写処理(S1706)を行わない。エラーの訂正が可能なときには、そのエラーのビット数が、ECC回路709で訂正可能な範囲で、かつ訂正閾値以上の4ビットであるときに、誤り訂正後のデータをフラッシュメモリ103の別の物理ブロックに書込む。
なお、ここでは、ECCエラーテーブル711のECCエラーレコード#iにエラービットカウント1601を設けているが、これに限らず、エラーの程度を示すものであればよい。例えば具体的なビット数でなくても、訂正閾値以上かどうかを表すエラー発生情報としてのフラグを用いて本発明の効果を実現できることは容易に想到できる。さらに、ECCエラーテーブルの登録は訂正閾値以上かつ誤り訂正可能なエラーの発生時にのみ行なうようにしても構わない。
また本実施例では、ビット訂正の可能なECC回路を前提としているので、エラービットカウント1601を用いた。しかし、ビット訂正ではなくリードソロモン符号等のシンボル訂正可能な誤り訂正回路を前提とした場合には、エラービットカウントの変わりにエラーの発生したシンボル数の情報をエラーシンボルカウントとして適用する必要がある。
(実施例6)
本実施例における不揮発性メモリ装置の構成は、図17に示される。メモリカード701はメモリコントローラ702と不揮発性メモリであるフラッシュメモリ703とを備えている。メモリコントローラ702に含まれる各構成要素は、第5の実施例で説明したものと同様である。
図18は、フラッシュメモリ103の内部の構成を示すブロック図であり、フラッシュメモリ703の内部は、PB0〜PB1023の1024個の物理ブロックからなる。図19は、物理ブロックの内部の構成を示すブロック図であり、フラッシュメモリ703内の各物理ブロックは64個の物理ページPP0〜PP63を備える。これらは、第5の実施例で説明したものと同様である。図20に示すように、ECCエラーテーブル711は複数のECCエラーレコード♯iを備えている。また、本実施例のECCエラーレコード♯iの構成は図21に示すとおりである。ECCエラーレコード♯iは、エラーが発生した物理ブロックのアドレスを格納するエラーブロック601と、エラーが発生した物理ページのアドレスを格納するエラーページ1001とに加えて、発生したエラーのビット数を格納するエラービットカウント1601を備える。これらは、第5の実施例と同様である。
図25は、本実施例の不揮発性記憶装置におけるデータ読出しのフローチャートである。まず、読出しを行う物理ブロックのアドレスと物理ページのアドレスをフラッシュメモリインターフェース707に指示して、フラッシュメモリ703からデータを読出す(S2001)。S2001に続いて、ECC回路709は読出したデータに対して読出しエラーが発生しているかどうかを判定する(S2002)。読出しエラーが発生していない場合、MPU705は、ホストインターフェース704に対して外部ホスト機器へのデータの出力を指示する(S2006)。その後読出しが継続する限り(S2007)、読出しの単位でアドレスを増加させながらS2001へとループしてデータ読み出しの処理は継続する。
読出しエラーがあると判定(S2002)した場合、そのエラーが訂正可能かどうかを判定する(S2003)。訂正不可能と判定した場合には、直ちに読出し処理を終了する。
訂正可能と判断した場合には、ECCエラーテーブルの登録を行う(S2004)。ここでのECCエラーテーブルは第5の実施例の図23で説明した処理と同様に登録される。ECCエラーテーブルの登録後エラーをバッファメモリ708内で訂正し(S2005)、MPU705は、ホストインターフェース704に対して外部ホスト機器へのデータの出力を指示する(S2006)。その後読出しが継続する限り(S2007)、読出しの単位でアドレスを増加させながらS2001へとループして読み出し処理を行う。
本実施例では、第5の実施例で行っていたデータ訂正複写処理を、データ読出しのフローチャートには含まない。それは、本実施例ではデータの読出し処理中にフラッシュメモリ703へのデータの書込みを行わないようにするためである。一般的にフラッシュメモリの書込み時間は読み出し時間に比べて長くかかるので、そのような時間のかかる書込み処理をデータの読出し中に行うと処理性能の低下を招いてしまう。よって、データの読み出し中にフラッシュメモリ703への書込みは行わない。
従って、本実施例では、他の処理が行なわれていない、空いている時間にデータ訂正複写処理を行う。空いている時間とはメモリカード701外部からのデータの書込み・読み出しの処理が行われていない期間、またはメモリカード701に電源が投入されて後、メモリカード701外部からのデータの書込み・読み出しの処理が行われるまでの期間である。
空き時間に行うデータ訂正複写処理を図26のフローチャートを用いて説明する。MPU705は、空き時間にECCエラーテーブル711のエラーレコードを検索し、エラービットカウント1601が訂正閾値以上の4ビットとなっているECCエラーレコード♯iを選択する(S2101)。このとき該当するエラーレコードがなければ(S2102)、データ訂正複写処理を終了する。
該当するエラーレコード♯iがある場合にはエラーレコード#iのエラーブロック601とエラーページ1001から物理ブロックと物理ページのアドレスを取得する(S2103)。そして取得したアドレスに属するデータをバッファメモリ708に読み出す(S2104)。続いてECC回路109によりエラーを訂正し(S2105)、訂正後のデータをフラッシュメモリ703の任意の物理ブロックに書込む(S2106)。このときにデータを書込む物理ブロックは、該エラーレコード#iに登録された物理ブロック以外物理ブロックである。最後に該当するエラーレコード♯iの登録を抹消して処理を終了する(S2107)。
以上のようにして、訂正閾値以上のエラービットカウントが発生した物理ページのデータは、今後訂正不可能な読出しエラーに発展する可能性があると判断されるので、上述のように空き時間を利用して、エラーの訂正をし、訂正済みのデータを別の物理ブロックの物理ページに書込む。このように、一度書込まれたデータに対して読出しを繰り返すと、不良ビットは増加していくが、当該データを訂正して、別の物理ブロックに書きかえる事で、訂正不可能な読出しエラーを回避することが可能になる。
本実施例においても、発生したビットエラーが訂正不可能なときには、ECCエラーテーブルの登録を行なわないのでデータ訂正複写処理を行わない。ある物理ページのデータを読み出した際にエラーが発生し、そのエラーのエラービット数が、ECC回路709で誤り訂正可能な範囲で、かつ訂正閾値を超えたときにのみ、今後当該物理ページからのデータの読出しを行わなくてもよいように、誤り訂正後のデータをフラッシュメモリ703の別の物理ブロックに書込み、読み出しに用いる。
なお、ここでは、ECCエラーテーブル711のECCエラーレコード#iにエラービットカウント1601を設けているが、これに限らず、エラーの程度を示すものであればよい。例えば具体的なビット数でなくても、訂正閾値を越えたかどうかを表すエラー発生情報としてのフラグを用いて本発明の効果を実現できることは容易に想到できる。さらに、ECCエラーテーブルの登録は訂正閾値以上かつ誤り訂正可能なエラーの発生時にのみ行なうようにしても構わない。
また本実施例では、ビット訂正の可能なECC回路を前提としているので、エラービットカウント1601を用いた。しかし、ビット訂正ではなくリードソロモン符号等のシンボル訂正可能な誤り訂正回路を前提とした場合には、エラービットカウントの変わりにエラーの発生したシンボル数の情報をエラーシンボルカウントとして適用する必要がある。
本発明に係わる不揮発性記憶装置は、不揮発性メモリの固定不良を検出して、以降そのブロックの使用を制限することで読出しエラーの低減を図ることができるので、ECCによる誤り訂正が必要な不揮発性メモリを使用したメモリカードシステム、例えばデジタルカメラの静止画保存用のストレージメモリ等に使用することができる。

Claims (18)

  1. 不揮発性メモリとメモリコントローラを具備する不揮発性記憶装置であって、
    前記不揮発性メモリは、消去単位である物理ブロックを複数備え、前記物理ブロックは書き込み単位である物理ページを複数有してなるものであり、
    前記メモリコントローラは、
    前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、
    前記不揮発メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正する機能とを備える誤り訂正回路と、
    前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、
    前記メモリコントローラのアドレステーブルは、前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前期読み出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、
    データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルと、
    前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、
    ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、
    前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出した時に、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、
    前記エラーが発生したことを示す情報を記録するエラー情報と、
    前記エラーが発生した後に、前記物理ブロックを消去したことを示す情報を記録するエラーブロック消去情報と、
    前記エラーブロック消去情報に情報が記録された後、同一の物理ブロックで再度読出しエラーを検出したことを示すエラー再発生情報とを備え、
    前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新するとともに、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在したときは、前記データを書き込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録し、前記読出しエラーを検出した物理ブロックを使用するかどうかを決める不揮発性記憶装置。
  2. 前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項1に記載の不揮発性記憶装置。
  3. 前記演算処理ユニットは、
    前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項1に記載の不揮発性記憶装置。
  4. 前記演算処理ユニットは、
    前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項に記載の不揮発性記憶装置。
  5. 前記エラー情報に記録される、エラーが発生したことを示す情報が、エラーが発生した回数であり、
    前記エラーブロック消去情報に記録される、前記物理ブロックを消去したことを示す情報が、前記物理ブロックを物理消去した回数であり、
    前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在し、かつ前記エラーカウンタ情報と前記エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を示し、かつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値であるときに、前記データを書き込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録する請求項1に記載の不揮発性記憶装置。
  6. 前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項に記載の不揮発性記憶装置。
  7. 前記演算処理ユニットは、
    前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項に記載の不揮発性記憶装置。
  8. 前記演算処理ユニットは、
    前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項に記載の不揮発性記憶装置。
  9. 消去単位である物理ブロックを複数備え、前記物理ブロックは書き込み単位である物理ページを複数有してなる不揮発性メモリに対して、データの読出し及び書き込みを制御するメモリコントローラであって、
    前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、
    前記不揮発メモリから読出したデータに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正する機能とを備える誤り訂正回路と、
    前記不揮発性メモリに格納されているデータを管理するために必要なテーブルを保持しているアドレステーブルと、を備え、
    前記アドレステーブルは、前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前期読み出しエラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、
    データの書込み及び読出しを禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルと、
    前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、
    ホスト機器が外部から指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロックアドレスの変換情報を示す論物変換テーブルとを有し、
    前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出した時に、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、
    前記エラーが発生したことを示す情報を記録するエラー情報と、
    前記エラーが発生した後に、前記物理ブロックを消去したことを示す情報を記録するエラーブロック消去情報と、
    前記エラーブロック消去情報に情報が記録された後、同一の物理ブロックで再度読出しエラーを検出したことを示すエラー再発生情報とを備え、
    前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登録、更新するとともに、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在したときは、前記データを書き込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録し、前記読出しエラーを検出した物理ブロックを使用するかどうかを決めるメモリコントローラ。
  10. 前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項に記載のメモリコントローラ。
  11. 前記演算処理ユニットは、
    前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項に記載のメモリコントローラ。
  12. 前記演算処理ユニットは、
    前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請求項10に記載のメモリコントローラ。
  13. 前記エラー情報に記録される、エラーが発生したことを示す情報が、エラーが発生した回数であり、
    前記エラーブロック消去情報に記録される、前記物理ブロックを消去したことを示す情報が、前記物理ブロックを物理消去した回数であり、
    前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを書込む物理ブロックについて前記エラーブロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在し、かつ前記エラーカウンタ情報と前記エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を示し、かつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値であるときに、前記データを書き込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録する請求項に記載のメモリコントローラ。
  14. 前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項13に記載のメモリコントローラ。
  15. 前記演算処理ユニットは、
    前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項13に記載のメモリコントローラ。
  16. 前記演算処理ユニットは、
    前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項14に記載のメモリコントローラ。
  17. 消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してなる不揮発性メモリと、前記不揮発性メモリからの読み出しデータに対してエラーを検出する機能及びエラーの訂正が可能である場合には訂正をする機能を備える誤り訂正回路と、読出しエラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを複数保持するエラーテーブルを備えるメモリコントローラと、を具備する不揮発性記憶装置において、
    データを読み出すときには、物理ブロックからデータを読み出し、
    当該読み出したデータに訂正可能なエラーがある場合には、前記エラーを訂正して外部に出力し、
    前記物理アドレスを前記エラーテーブルに登録すると共に、
    前記エラーテーブルに物理アドレスが登録された物理ブロックのデータが書換えられたときには、前記データが書き換えられたことを示す情報を前記エラーテーブルに登録し、
    前記データが書き換えられた物理ブロックから読み出したデータに訂正可能なエラーがある場合は、当該エラーを訂正して外部に出力すると共に、前記データが書き換えられた後にエラーが発生したことを示すエラー再発生情報を前記エラーテーブルに登録し、
    前記エラー再発生情報が前記エラーテーブルに登録されている物理ブロックに対し、データの書込み及び読出しを禁止する不良領域検出方法。
  18. 前記エラーテーブルに登録される書き換えられたことを示す情報が、書き換えられた回数であり、
    前記エラーテーブルに登録されるエラー再発生情報が、データが書き換えられた後にエラーが発生した回数であり、
    前記エラー再発生情報の値が所定の値以上を示した時に、前記エラーテーブルが登録された物理ブロックへのデータの書込み及び読出しを禁止する請求項17に記載の不良領域検出方法。
JP2007525978A 2005-07-15 2006-07-13 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法 Expired - Fee Related JP4950886B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007525978A JP4950886B2 (ja) 2005-07-15 2006-07-13 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005207198 2005-07-15
JP2005207198 2005-07-15
PCT/JP2006/313978 WO2007010829A1 (ja) 2005-07-15 2006-07-13 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法
JP2007525978A JP4950886B2 (ja) 2005-07-15 2006-07-13 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法

Publications (2)

Publication Number Publication Date
JPWO2007010829A1 JPWO2007010829A1 (ja) 2009-01-29
JP4950886B2 true JP4950886B2 (ja) 2012-06-13

Family

ID=37668709

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007525978A Expired - Fee Related JP4950886B2 (ja) 2005-07-15 2006-07-13 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法

Country Status (4)

Country Link
US (1) US9092361B2 (ja)
JP (1) JP4950886B2 (ja)
CN (1) CN101243417B (ja)
WO (1) WO2007010829A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101467309B1 (ko) * 2013-03-11 2014-12-02 전자부품연구원 에러 검출 테이블 생성에 의한 스토리지 관리 방법 및 이를 적용한 시스템
US10452474B2 (en) 2017-03-21 2019-10-22 Toshiba Memory Corporation NAND flash memory device

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020072B2 (en) * 2006-10-25 2011-09-13 International Business Machines Corporation Method and apparatus for correcting data errors
US8745315B2 (en) * 2006-11-06 2014-06-03 Rambus Inc. Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory
JP5057796B2 (ja) * 2007-02-14 2012-10-24 株式会社東芝 半導体メモリ情報蓄積装置とその不良部位対処方法
JP5087970B2 (ja) * 2007-03-30 2012-12-05 横河電機株式会社 情報処理装置および情報処理方法
JP5105351B2 (ja) * 2007-04-10 2012-12-26 株式会社メガチップス 不揮発性半導体記憶装置
JP2008287404A (ja) * 2007-05-16 2008-11-27 Hitachi Ltd 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法
JP5265883B2 (ja) * 2007-05-24 2013-08-14 株式会社メガチップス メモリアクセスシステム
US7765426B2 (en) * 2007-06-07 2010-07-27 Micron Technology, Inc. Emerging bad block detection
US7770079B2 (en) * 2007-08-22 2010-08-03 Micron Technology Inc. Error scanning in flash memory
US8473923B2 (en) 2007-09-12 2013-06-25 Sandisk Technologies Inc. Pointers for write abort handling
JP2009087509A (ja) 2007-10-03 2009-04-23 Toshiba Corp 半導体記憶装置
JP2009129070A (ja) 2007-11-21 2009-06-11 Hitachi Ltd フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム
WO2009078145A1 (ja) * 2007-12-14 2009-06-25 Kabushiki Kaisha Toshiba 制御装置
US7941692B2 (en) * 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
JP4617405B2 (ja) * 2008-02-05 2011-01-26 富士通株式会社 不良メモリを検出する電子機器、不良メモリ検出方法およびそのためのプログラム
TWI381390B (zh) * 2008-04-10 2013-01-01 Phison Electronics Corp 快閃記憶體的損壞區塊辨識方法、儲存系統及其控制器
US8122308B2 (en) * 2008-06-25 2012-02-21 Intel Corporation Securely clearing an error indicator
TWI381391B (zh) * 2008-08-05 2013-01-01 Transcend Information Inc 可自我檢測使用狀態的儲存裝置及其檢測方法
CN101859604B (zh) * 2009-04-10 2012-10-24 国民技术股份有限公司 闪存坏块的利用方法
CN102460383A (zh) * 2009-06-30 2012-05-16 松下电器产业株式会社 数据处理方法、半导体集成电路
US8140763B2 (en) * 2009-07-16 2012-03-20 International Business Machines Corporation Techniques for managing data in a write cache of a storage controller
CN101615145B (zh) * 2009-07-24 2011-12-07 中兴通讯股份有限公司 一种提高存储器数据缓存可靠性的方法和装置
US8453021B2 (en) 2009-07-29 2013-05-28 Stec, Inc. Wear leveling in solid-state device
US8266481B2 (en) * 2009-07-29 2012-09-11 Stec, Inc. System and method of wear-leveling in flash storage
CN102004701B (zh) * 2009-08-28 2013-01-09 炬才微电子(深圳)有限公司 一种次级内存的分配方法和装置
US8312349B2 (en) 2009-10-27 2012-11-13 Micron Technology, Inc. Error detection/correction based memory management
JP2011107851A (ja) * 2009-11-13 2011-06-02 Toshiba Corp メモリシステム
KR101648531B1 (ko) * 2010-02-12 2016-08-17 삼성전자주식회사 불휘발성 메모리 시스템과 이의 동작 방법
CN102208212B (zh) * 2010-03-30 2014-10-22 群联电子股份有限公司 错误校正方法、存储器控制器与存储器储存系统
WO2012039983A1 (en) 2010-09-24 2012-03-29 Rambus Inc. Memory device with ecc history table
TWI447731B (zh) * 2010-12-01 2014-08-01 Phison Electronics Corp 資料讀取方法、記憶體儲存裝置及其控制器
JP5451682B2 (ja) 2011-05-20 2014-03-26 株式会社東海理化電機製作所 フラッシュメモリ装置
TWI479495B (zh) * 2011-06-02 2015-04-01 Phison Electronics Corp 資料讀取方法、記憶體控制器及記憶體儲存裝置
JP5602312B2 (ja) * 2011-08-24 2014-10-08 三菱電機株式会社 誤り訂正復号装置
JP2013054409A (ja) * 2011-08-31 2013-03-21 Toshiba Corp 情報記憶装置および情報記憶方法
KR20130049332A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US8996936B2 (en) * 2011-12-08 2015-03-31 Sandisk Technologies Inc. Enhanced error correction in memory devices
EP2608211A1 (en) * 2011-12-22 2013-06-26 Fluiditech IP Limited Method of testing a flash memory
JP2013171343A (ja) 2012-02-17 2013-09-02 Toshiba Corp ストレージデバイス
US9418700B2 (en) 2012-06-29 2016-08-16 Intel Corporation Bad block management mechanism
JP5835160B2 (ja) * 2012-08-29 2015-12-24 株式会社デンソー 電子制御装置
EP3333853A1 (en) * 2013-03-07 2018-06-13 Charles I. Peddle High speed flash controllers
US9244852B2 (en) * 2013-05-06 2016-01-26 Globalfoundries Inc. Recovering from uncorrected memory errors
US9299457B2 (en) 2014-02-23 2016-03-29 Qualcomm Incorporated Kernel masking of DRAM defects
TWI527037B (zh) * 2014-04-10 2016-03-21 群聯電子股份有限公司 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置
CN105022695A (zh) * 2014-04-21 2015-11-04 群联电子股份有限公司 数据存储方法、存储器控制电路单元与存储器存储装置
US9478315B2 (en) * 2014-06-03 2016-10-25 Sandisk Technologies Llc Bit error rate mapping in a memory system
US9477548B2 (en) * 2014-08-01 2016-10-25 Freescale Semiconductor, Inc. Error repair location cache
JP6332134B2 (ja) * 2014-09-16 2018-05-30 株式会社デンソー メモリ診断回路
TWI537966B (zh) * 2014-10-03 2016-06-11 群聯電子股份有限公司 錯誤處理方法、記憶體儲存裝置及記憶體控制電路單元
CN105575440B (zh) * 2014-10-15 2018-11-23 群联电子股份有限公司 错误处理方法、存储器储存装置及存储器控制电路单元
US9703629B2 (en) * 2014-10-29 2017-07-11 Sandisk Technologies Llc Approach to correct ECC errors using duplicate copies of data
US9934872B2 (en) * 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US9043638B1 (en) * 2014-11-14 2015-05-26 Quanta Computer Inc. Method for enhancing memory fault tolerance
KR20160146332A (ko) * 2015-06-12 2016-12-21 에스케이하이닉스 주식회사 복수의 저장 영역들을 포함하는 메모리 시스템 및 그것의 동작 방법
US10665305B2 (en) * 2015-09-09 2020-05-26 Toshiba Memory Corporation Host device connectable to memory device performing patrol read and memory device performing patrol read
US10353669B2 (en) 2016-09-02 2019-07-16 International Business Machines Corporation Managing entries in a mark table of computer memory errors
US10297335B2 (en) 2016-09-02 2019-05-21 International Business Machines Corporation Tracking address ranges for computer memory errors
US10338999B2 (en) * 2016-09-02 2019-07-02 International Business Machines Corporation Confirming memory marks indicating an error in computer memory
US10304560B2 (en) 2016-09-02 2019-05-28 International Business Machines Corporation Performing error correction in computer memory
CN106445716A (zh) * 2016-09-19 2017-02-22 北京新能源汽车股份有限公司 一种故障功能测试方法及装置
KR20180090422A (ko) * 2017-02-02 2018-08-13 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN107402725B (zh) * 2017-03-20 2020-08-25 威盛电子股份有限公司 非易失性存储装置及其数据去重复方法
CN108958961B (zh) * 2017-05-22 2021-11-30 上海宝存信息科技有限公司 数据储存装置以及数据错误管理方法
US10402272B2 (en) 2017-05-25 2019-09-03 Micron Technology, Inc. Memory device with dynamic programming calibration
US10452480B2 (en) 2017-05-25 2019-10-22 Micron Technology, Inc. Memory device with dynamic processing level calibration
US10140040B1 (en) 2017-05-25 2018-11-27 Micron Technology, Inc. Memory device with dynamic program-verify voltage calibration
CN110265083B (zh) * 2018-03-12 2021-07-27 旺宏电子股份有限公司 存储器装置的数据探测方法
TWI650763B (zh) * 2018-05-14 2019-02-11 慧榮科技股份有限公司 用來進行記憶裝置的頁可用性管理之方法、記憶裝置及電子裝置以及頁可用性管理系統
US10664194B2 (en) 2018-05-16 2020-05-26 Micron Technology, Inc. Memory system with dynamic calibration using a variable adjustment mechanism
US10566063B2 (en) 2018-05-16 2020-02-18 Micron Technology, Inc. Memory system with dynamic calibration using a trim management mechanism
US10990466B2 (en) 2018-06-20 2021-04-27 Micron Technology, Inc. Memory sub-system with dynamic calibration using component-based function(s)
US11188416B2 (en) 2018-07-12 2021-11-30 Micron Technology, Inc. Enhanced block management for a memory sub-system
US11113129B2 (en) 2018-07-13 2021-09-07 Micron Technology, Inc. Real time block failure analysis for a memory sub-system
KR102554418B1 (ko) * 2018-10-01 2023-07-11 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 스토리지 장치
US10936246B2 (en) 2018-10-10 2021-03-02 Micron Technology, Inc. Dynamic background scan optimization in a memory sub-system
CN111324283B (zh) * 2018-12-14 2024-02-20 兆易创新科技集团股份有限公司 一种存储器
US11507443B2 (en) * 2020-04-10 2022-11-22 Micron Technology, Inc. Memory fault map for an accelerated neural network

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153266A (ja) * 1997-08-06 1999-02-26 Oki Electric Ind Co Ltd 半導体記憶装置およびその制御方法
JP2001319493A (ja) * 2000-05-02 2001-11-16 Advantest Corp メモリ試験方法・メモリ試験装置
JP2003015929A (ja) * 2001-06-28 2003-01-17 Matsushita Electric Ind Co Ltd 不揮発性メモリの制御方法
JP2003058432A (ja) * 2001-08-09 2003-02-28 Hitachi Ltd メモリカード及びメモリコントローラ
JP2003233992A (ja) * 2002-02-06 2003-08-22 Toshiba Corp 不揮発性半導体記憶装置
JP2005010897A (ja) * 2003-06-17 2005-01-13 Nec Corp 計算機システム、計算機システム起動方法およびプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3937214B2 (ja) 1999-09-17 2007-06-27 株式会社ルネサステクノロジ エラー訂正回数を記録する記憶装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153266A (ja) * 1997-08-06 1999-02-26 Oki Electric Ind Co Ltd 半導体記憶装置およびその制御方法
JP2001319493A (ja) * 2000-05-02 2001-11-16 Advantest Corp メモリ試験方法・メモリ試験装置
JP2003015929A (ja) * 2001-06-28 2003-01-17 Matsushita Electric Ind Co Ltd 不揮発性メモリの制御方法
JP2003058432A (ja) * 2001-08-09 2003-02-28 Hitachi Ltd メモリカード及びメモリコントローラ
JP2003233992A (ja) * 2002-02-06 2003-08-22 Toshiba Corp 不揮発性半導体記憶装置
JP2005010897A (ja) * 2003-06-17 2005-01-13 Nec Corp 計算機システム、計算機システム起動方法およびプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101467309B1 (ko) * 2013-03-11 2014-12-02 전자부품연구원 에러 검출 테이블 생성에 의한 스토리지 관리 방법 및 이를 적용한 시스템
US10452474B2 (en) 2017-03-21 2019-10-22 Toshiba Memory Corporation NAND flash memory device

Also Published As

Publication number Publication date
US20090055680A1 (en) 2009-02-26
WO2007010829A1 (ja) 2007-01-25
US9092361B2 (en) 2015-07-28
JPWO2007010829A1 (ja) 2009-01-29
CN101243417A (zh) 2008-08-13
CN101243417B (zh) 2011-05-04

Similar Documents

Publication Publication Date Title
JP4950886B2 (ja) 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法
US10061512B2 (en) Data storage device and data writing method thereof
JP4722839B2 (ja) メモリ制御回路、不揮発性記憶装置及びメモリ制御方法
JP4073799B2 (ja) メモリシステム
US8271515B2 (en) System and method for providing copyback data integrity in a non-volatile memory system
JP4323707B2 (ja) フラッシュメモリの欠陥管理方法
JP5138319B2 (ja) メモリーシステム及び該動作方法。
US7613982B2 (en) Data processing apparatus and method for flash memory
CN105788648B (zh) 基于异构混合内存的nvm坏块识别处理及纠错方法和系统
JP5142685B2 (ja) メモリシステム
US10613943B2 (en) Method and system for improving open block data reliability
KR100837274B1 (ko) 오토 멀티-페이지 카피백 기능을 갖는 플래시 메모리 장치및 그것의 블록 대체 방법
TWI436369B (zh) 記憶裝置之使用壽命量測方法及系統內編程碼置換方法、及其資料儲存系統
MX2012010944A (es) Detección de distribución de paridad no regulada vía etiqueta de metadatos.
TWI633428B (zh) 資料儲存裝置與記憶體裝置之資料處理方法
JP4866107B2 (ja) 不揮発性記憶装置及びその書き込み判定方法
JP2016118815A (ja) 不揮発性メモリ装置
JP2010079486A (ja) 半導体記録装置
CN107992268B (zh) 一种坏块标记的方法及相关装置
JP4158526B2 (ja) メモリカード及びメモリへのデータ書き込み方法
CN113434086B (zh) 数据存储方法、装置、非易失性存储器件和存储器
US20100042900A1 (en) Write Failure Handling of MLC NAND
JP4866114B2 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法
JP2010256944A (ja) Nand型フラッシュメモリ保守装置及びnand型フラッシュメモリ保守プログラム及びnand型フラッシュメモリ保守方法
JP2008158908A (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111129

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20120120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120127

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120201

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120221

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120309

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150316

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4950886

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees