(57)【要約】【課題】一つ以上のフラッシュメモリ・セルからデータを読み取るための、そして読み取りエラーから復旧するための、方法、デバイスおよびコンピュータで読み込み可能なコードを開示する。【解決手段】エラー検出訂正モジュールによるエラー訂正が失敗した場合、例えばエラー訂正が成功するまで、少なくとも一度、一つ以上の修正基準電圧を用いて、フラッシュメモリ・セルの再読み出しを行う。いくつかの実施例においては、エラー訂正が成功した後、当座の間フラッシュメモリ・セルにデータ（例えば、読み出したデータの信頼可能な値）を再書き込みすることなく、以降の読み出しリクエストを処理する。エラーを訂正した読み取りに関する基準電圧をメモリに記憶して、以降の読み出しリクエストに応答するときに読み出してもよい。いくつかの実施例においては、修正基準電圧は、予め定めた基準電圧である。代替的に、または追加的に、これらの修正基準電圧は、必要に応じ、例えばランダムに算出した値を用いて、あるいはエラー検出訂正モジュールが提供する情報に応じて決定してもよい。【選択図】図２
2009515281.tif 000002
【特許請求の範囲】
【請求項１】
複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステムにおいて、
ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み取ること、
ｂ）エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みること、
ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールが前記エラーの訂正を成功させるまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットの再読み出しを行うこと、そして
ｄ）メモリ・セルに前記データ・ビットを当座の間再書き込みすることなく、前記データ・ビットに対するステップ（ａ）、（ｂ）および（ｃ）を繰り返すことからなる、データを読み取る方法。
【請求項２】
前記繰り返し前の最初の前記読み取りが、最初の読み出しリクエストに応答したものであり、そして前記繰り返しに関わる以降の読み取りが、以降の読み出しリクエストに応答したものである、請求項１の方法。
【請求項３】
複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステムにおいて、
ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み取ること、
ｂ）エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みること、
ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールが前記エラーの訂正を成功させるまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットの再読み出しを行うこと、
ｄ）前記訂正の後に、モジュールが前記エラーの訂正に成功したときの少なくとも一つの読み出し基準電圧を記憶すること、
ｅ）前記記憶の後に、前記記憶した少なくとも一つの読み出し基準電圧を読み出すこと、そして
ｇ）前記読み出しの後、前記読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み取ることからなる、データを読み取る方法。
【請求項４】
少なくとも一つの前記読み出した基準電圧が、揮発性メモリ内に記憶される、請求項３の方法。
【請求項５】
少なくとも一つの前記読み出した基準電圧が、不揮発性メモリ内に記憶される、請求項３の方法。
【請求項６】
少なくとも一つの前記読み出した基準電圧が、一つ以上のフラッシュメモリ・セル内に記憶される、請求項３の方法。
【請求項７】
前記読み取ったデータ・ビットが、フラッシュコントローラを用いて読み取られ、そして少なくとも一つの前記読み出した基準電圧が、前記フラッシュコントローラ内に記憶される、請求項３の方法。
【請求項８】
前記記憶の前の最初の前記読み取りが、最初の読み出しリクエストに応答したものであり、そして前記読み出した少なくとも一つの読み出し基準電圧を用いる以降の読み取りが、以降の読み出しリクエストに応答したものである、請求項３の方法。
【請求項９】
複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステムにおいて、
ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み取ること、
ｂ）エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みること、
ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した前記読み取り以降、少なくとも一つの新しい読み出し基準電圧を導き出すこと、そして
ｄ）前記導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットを読み出すことからなる、データを読み取る方法。
【請求項１０】
前記導き出した少なくとも一つの新しい電圧が、少なくとも部分的にエラー検出訂正モジュールが提供する情報に応じて決定される、請求項９の方法。
【請求項１１】
前記導き出した少なくとも一つの新しい電圧が、少なくとも部分的にランダムに決定される、請求項９の方法。
【請求項１２】
複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステムにおいて、
ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み取ること、
ｂ）エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正すること、そして
ｃ）前記訂正の後、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットを読み出すことからなる、データを読み取る方法。
【請求項１３】
前記訂正の後、かつ前記少なくとも一つの修正基準電圧を用いた前記読み出しの前に、複数のメモリ・セルが書き込まれることがない、請求項１２の方法。
【請求項１４】
少なくとも一つの前記修正基準電圧は、少なくとも部分的にエラー検出訂正モジュールが提供する情報に応じて導き出される、請求項１２の方法。
【請求項１５】
前記訂正の前の最初の前記読み取りが、最初の読み出しリクエストに応答したものであり、そして前記訂正の後の前記以降の読み取りが、以降の読み出しリクエストに応答したものである、請求項１２の方法。
【請求項１６】
データ記憶のためのフラッシュメモリ・デバイスであって、
ａ）データ・ビットを記憶するための複数のフラッシュメモリ・セル、
ｂ）前記データ・ビットにおけるエラーを検出して訂正するためのエラー検出訂正モジュール、そして
ｃ）前記メモリ・セルから前記データ・ビットを読み取るためのコントローラからなり、
ｉ）前記コントローラが、前記複数のフラッシュメモリ・セルからデータ・ビットを読み取ることによって、最初の読み出しリクエストに応答するよう作動可能であり、そして前記エラー検出訂正モジュールが前記データ・ビットの訂正に失敗した場合、前記モジュールが前記エラーの訂正に成功するまで、少なくとも一つの修正基準電圧を用いて、データ・ビットの再読み出しを行うよう作動可能であり、また
ii）前記コントローラが、さらに、当座の間前記データ・ビットをメモリ・セルに再書き込みすることなく、以降の読み出しリクエストに対して前記応答を繰り返すよう作動可能である、フラッシュメモリ・デバイス。
【請求項１７】
データ記憶のためのフラッシュメモリ・デバイスであって、
ａ）データ・ビットを記憶するための複数のフラッシュメモリ・セル、
ｂ）前記データ・ビットにおけるエラーを検出して訂正するためのエラー検出訂正モジュール、そして
ｃ）前記フラッシュメモリ・セルから前記データ・ビットを読み取るためのコントローラからなり、前記コントローラが、
ｉ）複数のフラッシュメモリ・セルからデータ・ビットを読み取ること、
ii）前記エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みること、
iii）エラー検出訂正モジュールによるエラー訂正が失敗した場合、前記モジュールが前記エラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、前記複数のフラッシュメモリ・セルからデータ・ビットの再読み出しを行うこと、そして
iv）前記訂正の後に、モジュールが前記エラーの訂正に成功したときの少なくとも一つの読み出し基準電圧を記憶することによって、最初の読み出しリクエストに応答するよう作動可能であり、また、前記記憶の後、前記コントローラが、さらに、
ｉ）前記記憶した少なくとも一つの読み出し基準電圧を読み出すこと、そして
ii）前記読み出しの後、前記読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み取ることによって、以降の読み出しリクエストに応答するよう作動可能である、フラッシュメモリ・デバイス。
【請求項１８】
前記コントローラが、揮発性メモリに、少なくとも一つの前記読み出し基準電圧を記憶するよう作動可能である、請求項１７のデバイス。
【請求項１９】
前記コントローラが、不揮発性メモリに、少なくとも一つの前記読み出し基準電圧を記憶するよう作動可能である、請求項１７のデバイス。
【請求項２０】
前記コントローラが、一つ以上の前記フラッシュメモリ・セルに、少なくとも一つの前記読み出し基準電圧を記憶するよう作動可能である、請求項１７のデバイス。
【請求項２１】
前記コントローラが、前記コントローラ内に、少なくとも一つの前記読み出し基準電圧を記憶するよう作動可能である、請求項１７のデバイス。
【請求項２２】
データ記憶のためのフラッシュメモリ・デバイスであって、
ａ）データ・ビットを記憶するための複数のフラッシュメモリ・セル、
ｂ）前記データ・ビットにおけるエラーを検出するためのエラー検出訂正モジュール、そして
ｃ）前記フラッシュメモリ・セルから前記データ・ビットを読み取るためのコントローラからなり、前記コントローラが、
ｉ）前記データ・ビットを複数のフラッシュメモリ・セルから読み取ること、
ii）エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みること、
iii）エラー検出訂正モジュールによるエラー訂正が失敗した前記読み取り以降、少なくとも一つの新しい読み出し基準電圧を導き出すこと、そして
iv）前記導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットを読み出すことによって、読み出しリクエストに応答するよう作動可能である、フラッシュメモリ・デバイス。
【請求項２３】
前記コントローラが、少なくとも部分的にエラー検出訂正モジュールが提供する情報に応じて前記少なくとも一つの新しい電圧を導き出すよう作動可能である、請求項２２のデバイス。
【請求項２４】
前記コントローラが、少なくとも部分的にランダムに前記少なくとも一つの新しい電圧を導き出すよう作動可能である、請求項２２のデバイス。
【請求項２５】
データ記憶のためのフラッシュメモリ・デバイスであって、
ａ）データ・ビットを記憶するための複数のフラッシュメモリ・セル、
ｂ）前記データ・ビットにおけるエラーを検出するためのエラー検出訂正モジュール、そして
ｃ）前記フラッシュメモリ・セルから前記データ・ビットを読み取るためのコントローラからなり、前記コントローラが、
ｉ）複数のフラッシュメモリ・セルからデータ・ビットを読み取ること、そして
ii）前記エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正することによって、最初の読み出しリクエストに応答するよう作動可能であり、また、前記コントローラが、
iii）少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出すことによって、以降の読み出しリクエストに応答するよう作動可能である、フラッシュメモリ・デバイス。
【請求項２６】
前記コントローラが、前記訂正の後、かつ前記少なくとも一つの修正基準電圧を用いる前記読み取りの前に、前記複数のメモリ・セルに書き込むことなく、前記最初の、そして前記以降の読み出しリクエストに応答するよう作動可能である、請求項２５のデバイス。
【請求項２７】
前記コントローラが、少なくとも部分的に前記エラー検出訂正モジュールが提供する情報に応じて、少なくとも一つの前記修正基準電圧を導き出すよう作動可能である、請求項２５のデバイス。
【請求項２８】
コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、前記コンピュータで読み込み可能なコードが前記コンピュータで読み取り可能な記憶メディア内に具現化されており、前記コンピュータで読み込み可能なコードが、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための命令からなり、前記命令が、
ａ）前記複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、
ｂ）前記エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みる命令、
ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールが前記エラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットの再読み出しを行う命令、そして
ｄ）当座の間前記データ・ビットをメモリ・セルに書き込み再書き込みせずに、ステップ（ａ）、（ｂ）および（ｃ）を繰り返す命令からなる、コンピュータで読み取り可能な記憶メディア。
【請求項２９】
コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、前記コンピュータで読み込み可能なコードが前記コンピュータで読み取り可能な記憶メディア内に具現化されており、前記コンピュータで読み込み可能なコードが、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための命令からなり、前記命令が、
ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、
ｂ）エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みる命令、
ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールが前記エラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットの再読み出しを行う命令、
ｄ）前記訂正の後、モジュールが前記エラーの訂正に成功したときの少なくとも一つの読み出し基準電圧を記憶する命令、
ｅ）前記記憶の後、前記記憶した少なくとも一つの読み出し基準電圧を読み出す命令、そして
ｇ）前記読み出しの後、前記読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令からなる、コンピュータで読み取り可能な記憶メディア。
【請求項３０】
コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、前記コンピュータで読み込み可能なコードが前記コンピュータで読み取り可能な記憶メディア内に具現化されており、前記コンピュータで読み込み可能なコードが、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための命令からなり、前記命令が、
ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、
ｂ）エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みる命令、
ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した前記読み取り以降、少なくとも一つの新しい読み出し基準電圧を導き出す命令、そして
ｄ）前記導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットを読み出す命令からなる、コンピュータで読み取り可能な記憶メディア。
【請求項３１】
コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、前記コンピュータで読み込み可能なコードが前記コンピュータで読み取り可能な記憶メディア内に具現化されており、前記コンピュータで読み込み可能なコードが、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための命令からなり、前記命令が、
ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、
ｂ）エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正する命令、そして
ｃ）前記訂正の後、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットを読み出す命令からなる、コンピュータで読み取り可能な記憶メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、読み取りエラーが発生する可能性のある、システムにおけるフラッシュメモリからのデータ読み取りに関する。
【背景技術】
【０００２】
（シングル・ビットおよびマルチビット・フラッシュメモリ・セル）
フラッシュメモリ・デバイスは、長年知られている。典型的に、フラッシュメモリ・デバイス内の各メモリ・セルは、一ビットの情報を記憶する。フラッシュメモリ・セル内にビットを記憶する従来の方法は、メモリ・セルの二つの状態をサポートすることである。一つの状態が論理「０」を表し、そしてもう一つの状態が論理「１」を表す。
【０００３】
フラッシュメモリ・セル内に、セルのチャンネル上（セルのトランジスタのソースおよびドレイン・エレメントを接続する領域）に位置するフローティングゲートを持ち、そしてフローティングゲート内に蓄えられる充電量に対して二つの有効な状態を持つことによって、二つの状態を実現している。典型的に、一つの状態は、フローティングゲート内にゼロ電荷を持つ、消去後のセルの最初の記録のない状態である（一般に、状態「１」を表すと定義する）。そして、もう一つの状態は、フローティングゲート内にいくらかの量の陰電荷を持つ（一般に、状態「０」を表すと定義する）。ゲート内に陰電荷を持つことは、セルのトランジスタのスレショルド電圧（すなわち、トランジスタが導電するようトランジスタの制御ゲートに印加しなければならない電圧）を高める。さて、セルのスレショルド電圧をチェックすることによって、記憶ビットを読み込むことが可能である。スレショルド電圧が高い状態であれば、ビット値は「０」であり、スレショルド電圧が低い状態であれば、ビット値は「１」である。実際にセルのスレショルド電圧を正確に読み取る必要はなく、現在セルが二つの状態のいずれにあるのかを正しく識別することだけがすべてである。その目的で、二つの状態の中央に位置する基準電圧値に対して比較することによって、この基準値よりも、セルのスレショルド電圧が高いのか低いのかを判定すれば十分である。
【０００４】
図１Ａは、これがどのように行われるのかを視覚的に示す。図１Ａは、特に、セルの大きな個体群におけるスレショルド電圧の分布を示す。フラッシュデバイスのセルは、（例えば、不純物濃度の違いや、けい素構造内の欠陥が原因で）特性および作用が必ずしも同一ではなく、同じプログラミング・オペレーションをすべてのセルに適用しても、セルのすべてが必ずしも同じスレショルド電圧を持つようになるものではない。（なお、歴史的な理由で、フラッシュメモリにデータを書き込むことを、フラッシュメモリを「プログラムする」と、一般的に言う。）そうではなく、スレショルド電圧は、図１Ａに示すような状態で分布する。「１」の値を記憶したセルは、典型的に、負のスレショルド電圧を持つため、大部分のセルは、図１Ａの左側のピークが示す値に近いスレショルド電圧を持ち、少数のセルが、これよりも低いまたは高いスレショルド電圧を持つ。同様に、「０」の値を記憶したセルは、典型的に、正のスレショルド電圧を持つため、大部分のセルは、図１Ａの右側のピークが示す値に近いスレショルド電圧を持ち、少数のセルが、これよりも低いまたは高いスレショルド電圧を持つ。
【０００５】
近年、従来から「マルチ・レベル・セル」または略してＭＬＣと呼ぶ技術を利用した、新しい種類のフラッシュデバイスが市場に出ている。（先のタイプのフラッシュ・セルも複数のレベル、すなわち上述のように二つのレベルを持つので、この用語はまぎらわしい。したがって、フラッシュ・セルの二つの種類を、本文では「シングルビット・セル」（ＳＢＣ）および「マルチビット・セル」（ＭＢＣ）と呼ぶ。）ＭＢＣフラッシュがもたらした改善は、各セルに２ビットを記憶することである。（原則として、ＭＢＣは、１セルにつき２ビットを超える記憶をおこなうことをも含むが、そのようなセルは、現時点では、まだ市場に存在しない。本文では、説明を簡単にするために、２ビットのケースに的を絞る。しかし、本発明が、セルにつき複数のビットをサポートするフラッシュメモリ・デバイスに等しく適用できることは理解すべきである。）単一のセルが２ビットの情報を記憶するためには、セルは、４つの異なる状態の一つになることが可能でなければならない。セルの「状態」が、そのスレショルド電圧で表されるため、ＭＢＣセルは、そのスレショルド電圧に対して、４つの異なる有効な範囲をサポートすべきであることは明白である。図１Ｂは、典型的なＭＢＣセルのスレショルド電圧分布を示す。予期するように、図１Ｂは、各々が一つの状態に対応する四つのピークを持つ。ＳＢＣのケースに関しては、各状態が実際には一範囲であり、単一数ではない。セルの内容を読み込む場合、保証すべきことは、セルのスレショルド電圧が位置する範囲を正しく識別することがすべてである。ＭＢＣフラッシュデバイスの、従来の技術による例として、ハラリ氏の米国特許第５，４３４，８２５号を参照する。これは、すべての目的において参照によって本文に完全に記載したものとする。
【０００６】
４つの状態によって一つのＭＢＣセル内に２ビットをコード化する場合、両ビットが「１」の値を持つケースを表す、図１Ｂの左端の状態（典型的に、負のスレショルド電圧を持つ）を設けるのが一般的である。（以下の考察では、次の表記を用いる。セルの２ビットを「下位ビット」と「上位ビット」と呼び、それらビットの明示値は、下位ビット値を右側にして、［「上位ビット」「下位ビット」］の形式で書く。であるから、下位ビットが「０」で上位ビットが「１」であるケースは、「１０」と記述する。理解すべきは、この用語および表記の選択が任意であり、他の名称およびコード化が可能であることである）。この表記を用いると、左端の状態は、「１１」のケースを表す。他の３状態は、典型的に、左から右へ順に「１０」、「００」、「０１」と割り当てる。上述のそのようなコード化を用いるＭＢＣのＮＡＮＤフラッシュデバイスの実施例が、チェン氏の米国特許第６，５２２，５８０号に開示されている。なお、この特許は、すべての目的において参照によって本文に完全に記述したように含むものとする。チェン氏の特許を表す、特に  図８を参照する。しかしながら、状態のこの割当てに関しては何の制限もなく、他の序列化を用いてもよいことは留意すべきである。ＭＢＣセルの内容を読む場合、セルのスレショルド電圧が位置する範囲を正しく識別しなければならない。このケースのみ、これは、一つの基準電圧への比較によって必ずしも達成できるものではなく、複数回の比較が必要となる可能性がある。例えば、図１Ｂに図解したケースでは、下位ビットを読む一つの方法は、セルのスレショルド電圧を、まず、参照比較電圧Ｖ1に比較し、それから、その比較結果に応じて、セルのスレショルド電圧を、ゼロ参照比較電圧または参照比較電圧Ｖ2のいずれかに比較することである。下位ビットを読むもう一つの方法は、無条件で、セルのスレショルド電圧を、０基準電圧とＶ2との両方に比較することである。いずれにせよ、二つの比較が必要である。
【０００７】
ＭＢＣデバイスは、一つが１ビットでなく２ビットを記憶する同じサイズのセルを用いて、コストに関する大きな利点を提供する。しかし、ＭＢＣフラッシュを用いることには、いくつかの欠点がある。ＭＢＣメモリの平均読み込み書き込み時間は、ＳＢＣメモリのものよりも長く、性能は低くなる。また、ＭＢＣの信頼性は、ＳＢＣよりも低い。このことは、ＭＢＣにおけるスレショルド電圧範囲間の差違が、ＳＢＣにおけるものよりも非常に小さいことから、容易に理解できる。したがって、ＳＢＣでは二つの状態間に大きなギャップがあるために気づかれなかった、スレショルド電圧の障害（例えば、スレショルド電圧ドリフトを起こす蓄積電荷の漏れ、隣接セル上のオペレーションからの干渉など）は、ＭＢＣセルでは、一つの状態からもう一つの状態への移行を引き起こし、エラー・ビットを生じる。その結果、データ保持時間あるいは多数回の書き込み消去サイクルへのデバイスの耐久度に関するＭＢＣセルの品質規格は低い。したがって、アプリケーションの要件に応じて、ＭＢＣセルとＳＢＣセルとの両方を用いることに利点があるのかも知れない。
【０００８】
上記の説明はフローティングゲート・フラッシュメモリ・セルを扱ったが、他のタイプのフラッシュメモリ技術もある。例えば、ＮＲＯＭフラッシュメモリ技術では、導電性フローティングゲートは全くないが、電荷を捉える絶縁層がある。フローティングゲート技術に関連させて説明するが、本発明は、すべてのフラッシュメモリ・タイプに等しく適用できる。
【０００９】
（フラッシュ・セルからデータを読み取る際のエラー訂正）
上記に説明したように、スレショルド電圧がそれらの初期値から離れてドリフトした場合、フラッシュ・セル、特にＭＢＣフラッシュ・セルは、誤って読み取られることがある。もしスレショルド電圧ドリフト量が十分に大きい場合、読み取り処理は、セルの二つの状態間の境界線として用いる読み取り基準電圧の誤った側に、セルを見いだすことになる。フラッシュメモリから読み取ったデータ内のエラーを訂正するために、エラー訂正コード（ＥＣＣ）を利用するのが一般的であるが、訂正能力は、典型的に、読み取られるデータのページ内の、ある一定のエラー回数に制限されているため、結局、累積エラー回数は、ＥＣＣメカニズムの訂正能力を超過することがある。
【００１０】
オークレール氏らの米国特許第５，６５７，３３２号、表題「ＥＥＰＲＯＭデバイス内のソフトエラー処理」（本文においては「オークレール」と呼ぶ）は、スレショルド電圧ドリフチングが引き起こすフラッシュ・メモリ・エラーのこの問題を扱う。この特許は、すべての目的に対して参照によって、本文に完全に記述したものと見なす。オークレールは、このエラー問題に二つの解決策を提案する。最初のものは、セルが境界線を横切る寸前になったことを検出し、それらの内容をメモリへ再び書き込んで「修正する」ことによって、エラーの発生を排除しようとする。これは、スレショルド電圧を正しい初期値へ「リセットする」ことである。オークレールの第二の解決は、ドリフチング・エラーの存在を既定の事実と認め、エラー発生後のメモリ・システムの堅牢性を改善するように試みる。この第二の解決策については、オークレールのコラム１３内の１４から２７行に考察がある。
【００１１】
フラッシュメモリからデータを読み取るオークレールの方法は、最初に、読み取り基準電圧（またはＭＢＣフラッシュメモリの場合には複数の読み取り基準電圧）のデフォルト値を用いて正規の読み取りを試みる。この最初の読み取りの試みにおいて多くのエラーが発生し、ＥＣＣメカニズムがそれらを修正できないと仮定して、オークレールは、２ステージ・リカバリ・プランを活用する。
Ａ．読み取り基準電圧を、それらのデフォルト値から、もう一セットの所定値へ変え、新しいセットの所定基準値を用いて読み取りを試みる。典型的に新しい値は、デフォルト値よりもいくぶん低い。セルのスレショルド電圧が、時間とともにより低い値へドリフトする（つまり、図１Ａおよび１Ｂの左側へ移行する）と予想することは、フローティングゲートから電荷がリークした結果としてドリフチングが起こるのだから、合理的である。したがって、左側へ比較の「境界」を移行することは、ドリフト後の状態を相互に切り離す良い機会である。訂正基準値で読み取ってもエラーが発生する場合は、それらをＥＣＣメカニズムで処理できる。もし、それでもなお多くの訂正すべきエラーがあるなら、プロセスを繰り返す。すなわち、もう一セットの所定読み取り基準値を選択し、もう一回の読み取りおよび訂正を行う。多分、この反復プロセスはデータをうまく訂正できるので、エラーがないと仮定できる。一旦ここまで到達すれば、第二ステージへ移行する。
Ｂ．第一ステージから得たデータをセルへ書き戻すことによって、デフォルト読み取り基準値を用いて次に読み取るときに、現在の読み取りの場合ほど多くのエラーが発生しないようにする。
【００１２】
図２は、オークレールに開示の従来の技術による、コントローラおよびフラッシュメモリ（すなわち、フラッシュメモリ・セルを含む）を備えるフラッシュ・デバイスによる読み出しリクエストの処理を説明するフロー・チャートである。読み出しリクエストを受信した１１０後、フラッシュ・コントローラは、デフォルト基準電圧を用いて、フラッシュメモリ２１２からデータビットを読み取る１１２Ａ。ＥＣＣを用いて、読み取ったデータ・ビットの訂正を試みる１１４。エラー訂正が成功した１１６ならば、デバイスは、読み取り後訂正したデータを送信によって（例えば、データをホスト・デバイスに送信することによって）、読み出しリクエストに応答してもよい１１８。読み出しリクエストに応答した１１８後、デバイスは、次の読み出しリクエストを処理することが可能である。
【００１３】
もしエラー訂正が成功しなかった１１６場合、デバイスは、少なくとも一つの所定修正基準電圧を含む１１９一セットの基準電圧を用いて、フラッシュメモリからデータ・ビットを再び読み出す１１２Ｂ。一つ以上の「新しい」所定基準電圧での（すなわち、少なくとも所定修正基準電圧を用いる１１９）データ・ビットの再読み出し１１２Ｂの後、もう一回のエラー訂正を試みる１１４。もう一回のエラー訂正が失敗した１１６場合には、ＥＣＣがデータ・ビットのエラー訂正に成功する１１６まで、異なる予め修正した基準電圧を用いて１１９データ・ビットを再び読み出す１１２Ｂこのプロセスを繰り返す。
【００１４】
その時点で、メモリ・セルを「若返らせ」て、その後にセルを（「適当な」デフォルト基準電圧で）読み取るときのエラー訂正における失敗の可能性を減らす。この処理は、エラー訂正が成功した後に正当なデータが利用可能であるという事実を利用して行われるもので、メモリ・セルへの再書き込みを行ってもよい１２４。したがって、オークレールの教示によれば、データの再書き込み後、デフォルト読み取り基準値を用いて次にデータを読み取る１１２Ａとき（すなわち、もう一回の読み出しリクエスト１１０の後）、フラッシュメモリ・セルは、より少ないエラーの（すなわち、基準電圧「ドリフト」が訂正された）データを提供する可能性が大きく、ＥＣＣで訂正可能な読み取りデータを提供すると仮定している。
【００１５】
注目すべきは、オークレールの前記リカバリ方法には、大きな欠点があることである。リカバリ・プロセスが活用されるたびに、データは再書き込みされる。フラッシュメモリにおいては、書き込みオペレーションは、読み取りオペレーションよりも非常に遅い。例えば、ＳＢＣのＮＡＮＤ型フラッシュメモリにおいては、１ページのデータを読み取るのには、およそ１５マイクロ秒が必要であるが、１ページのデータを書き込むのに、およそ２００マイクロ秒が必要である。ＭＢＣのＮＡＮＤ型フラッシュメモリにおける状況は、さらに悪く、１ページの読み取りには３０マイクロ秒が必要であるが、１ページを書き込むのには、８００マイクロ秒が必要である。この事実は、１ページのデータを回復するためにオークレールの方法を活用することは、非常に遅いオペレーションであることを意味する。典型的に、読み出しリクエストを開始して、データを待ち受けるソフトウェア・アプリケーションは、何十マイクロ秒以内にデータを利用できると予想するのだが、予想に反して、１桁長く待たなければならないことになる。リアルタイム・ソフトウェア・アプリケーションには、これは受け入れがたいものである。ソフトウェア・アプリケーションが、データを、リカバリ・プロセスの完了を待つことなく、それが利用可能になったらすぐに受信できるよう、オークレールの書き込みステージを後の時間へ遅らせたとしても、余分な書き込みオペレーションに起因する、記憶システムのスループットにおける性能低下は免れない。
【００１６】
したがって、エラーの存在するフラッシュメモリからデータを再生する、しかも比較的短時間でその再生を達成する方法が必要である。
【発明の開示】
【発明が解決しようとする課題】
【００１７】
前述の問題、そして他の問題のいくつか、あるいはすべては、本発明のいくつかの局面によって満たすことができる。
【００１８】
さて、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための方法を初めて開示する。本開示の方法は、（ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み出すステップ、（ｂ）エラー検出訂正モジュールを用いて、読み出したデータ・ビットのエラーを訂正しようと試みるステップ、（ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールがエラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットの再読み出しを行うステップ、そしてｄ）当座の間（すなわち、少なくとも修正基準電圧によるステップ（ｃ）のエラー訂正が成功した後、かつステップ（ａ）の読み出しの前に）データ・ビットをメモリ・セルに再書き込みすることなく、データ・ビットに対してステップ（ａ）、（ｂ）および（ｃ）を繰り返すステップからなる。
【００１９】
いくつかの実施例によれば、繰り返し前の最初の読み取りは、最初の読み出しリクエストに応答したものであり、そして繰り返しに関わる以降の読み取りは、以降の読み出しリクエストに応答したものである。
【００２０】
さて、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための方法を初めて開示する。本開示の方法は、（ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み出すステップ、（ｂ）エラー検出訂正モジュールを用いて、読み出したデータ・ビットのエラーを訂正しようと試みるステップ、（ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールがエラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットの再読み出しを行うステップ、（ｄ）訂正の後、モジュールがエラーの訂正に成功した少なくとも一つの読み出し基準電圧を記憶するステップ、（ｅ）記憶の後、記憶した少なくとも一つの読み出し基準電圧を読み出すステップ、そしてｇ）読み出し後、読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み取るステップからなる。
【００２１】
少なくとも一つの読み出し基準電圧は、揮発性および／または不揮発性メモリの組み合わせ内に記憶してもよい。
【００２２】
いくつかの実施例によれば、少なくとも一つの読み出し基準電圧は、一つ以上のフラッシュメモリ・セルに記憶する。
【００２３】
いくつかの実施例によれば、読み出すべきデータ・ビットは、フラッシュコントローラを用いて読み出し、そして少なくとも一つの読み出し基準電圧は、フラッシュコントローラ内に（すなわち、フラッシュコントローラの揮発性および／または不揮発性メモリの組み合わせ内に）記憶する。
【００２４】
いくつかの実施例によれば、記憶前の最初の読み取りは、最初の読み出しリクエストに応答したものであり、読み出した少なくとも一つの読み出し基準電圧を用いた以降の読み取りは、以降の読み出しリクエストに応答したものである。
【００２５】
さて、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための方法を初めて開示する。本開示の方法は、（ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み出すステップ、ｂ）エラー検出訂正モジュールを用いて、読み出したデータ・ビットのエラーを訂正しようと試みるステップ、ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した読み出しの後、少なくとも一つの新しい読み出し基準電圧を導き出すステップ、そしてｄ）導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出すステップからなる。
【００２６】
いくつかの実施例によれば、導き出した少なくとも一つの新しい電圧は、エラー検出訂正モジュールが提供する情報に少なくとも部分的に応じて決定する。
【００２７】
いくつかの実施例によれば、導き出した少なくとも一つの新しい電圧は、少なくとも部分的にランダムに決定される。
【００２８】
さて、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための方法を初めて開示する。本開示の方法は、（ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み出すステップ、ｂ）エラー検出訂正モジュールを用いて、読み出したデータ・ビットのエラーを訂正するステップ、そしてｃ）訂正の後、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出すステップからなる。
【００２９】
いくつかの実施例によれば、少なくとも一つの修正基準電圧を用いた以降のデータ・ビットの読み出しは、当座の間（すなわち、ステップ（ａ）でデータ・ビットを読み出した後、かつ少なくとも一つの修正基準電圧による再読み出しの前に）たとえエラー訂正検出および訂正モジュールによるエラー訂正の失敗が全くなくとも実行される。
【００３０】
いくつかの実施例によれば、複数のメモリ・セルは、訂正後に、また、少なくとも一つの修正基準電圧を用いる読み出し前に、書き込まれない。
【００３１】
いくつかの実施例によれば、少なくとも一つの修正基準電圧は、少なくとも部分的にエラー検出訂正モジュールが提供する情報（例えば、エラー数を示す情報）に応じて導き出す。
【００３２】
いくつかの実施例によれば、訂正前の最初の読み取りは、最初の読み出しリクエストに応答したものであり、訂正後以降の読み取りは、以降の読み出しリクエストに応答したものである。
【００３３】
さて、次のものからなる、データ記憶のためのフラッシュメモリ・デバイスを初めて開示する。ａ）データ・ビットを記憶するための複数のフラッシュメモリ・セル、ｂ）データ・ビットにおけるエラーを検出して訂正するためのエラー検出訂正モジュール、そしてｃ）メモリ・セルからデータ・ビットを読み出すためのコントローラ。（ｉ）コントローラは、複数のフラッシュメモリ・セルからデータ・ビットを読み出すことによって、最初の読み出しリクエストに応答するよう作動可能であり、エラー検出訂正モジュールがデータ・ビットの訂正に失敗した場合、モジュールがエラーの訂正に成功するまで、少なくとも一つの修正基準電圧を用いて、データ・ビットの再読み出しを行うよう作動可能である。そしてii）コントローラは、さらに、当座の間（すなわち、最初の読み出しリクエストに対するデータ・ビットの再読み出しに関わるエラー訂正の成功の後、かつ第一の以降の読み出しリクエストに関わるデータ・ビットの第一の読み出し前に）メモリ・セルにデータ・ビットを再書き込みすることなく、以降の読み出しリクエストに対する応答を繰り返すよう作動可能である。
【００３４】
さて、次のものからなる、データ記憶のためのフラッシュメモリ・デバイスを初めて開示する。ａ）データ・ビットを記憶するための複数のフラッシュメモリ・セル、ｂ）データ・ビットにおけるエラーを検出して訂正するためのエラー検出訂正モジュール、そしてｃ）メモリ・セルからデータ・ビットを読み出すためのコントローラ。（Ｉ）コントローラは、ｉ）複数のフラッシュメモリ・セルからデータ・ビットを読み出すこと、ii）エラー検出訂正モジュールを用いて、読み出したデータ・ビットのエラーを訂正しようと試みること、iii）エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールがエラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットの再読み出しを行うこと、そしてiv）訂正の後、モジュールがエラーの訂正に成功した少なくとも一つの読み出し基準電圧を（例えば、コントローラの補助メモリ内に、あるいは他のメモリ内に）記憶することによって、最初の読み出しリクエストに応答するよう作動可能である。そして記憶の後、（II）コントローラは、さらに、ｉ）記憶した少なくとも一つの読み出し基準電圧を読み出すこと、そしてii）読み出し後、読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み取ることによって、以降の読み出しリクエストに応答するよう作動可能である。
【００３５】
いくつかの実施例によれば、コントローラは、揮発性メモリに、少なくとも一つの読み出し基準電圧を記憶するよう作動可能である。
【００３６】
いくつかの実施例によれば、コントローラは、不揮発性メモリに、少なくとも一つの読み出し基準電圧を記憶するよう作動可能である。
【００３７】
いくつかの実施例によれば、コントローラは、一つ以上のフラッシュメモリ・セルに、少なくとも一つの読み出し基準電圧を記憶するよう作動可能である。
【００３８】
いくつかの実施例によれば、コントローラは、コントローラ（例えば、フラッシュコントローラの揮発性および／または不揮発性メモリ）に、少なくとも一つの読み出し基準電圧を記憶するよう作動可能である。
【００３９】
さて、次のものからなる、データ記憶のためのフラッシュメモリ・デバイスを初めて開示する。ａ）データ・ビットを記憶するための複数のフラッシュメモリ・セル、ｂ）データ・ビットにおけるエラーを検出するためのエラー検出訂正モジュール、そしてｃ）フラッシュメモリ・セルからデータ・ビットを読み出すためのコントローラ。コントローラは、（ｉ）複数のフラッシュメモリ・セルからデータ・ビットを読み出すこと、（ii）エラー検出訂正モジュールを用いて、読み出したデータ・ビットのエラーを訂正しようと試みること、（iii）エラー検出訂正モジュールによるエラー訂正が失敗した読み出しの後、少なくとも一つの新しい読み出し基準電圧を導き出すこと、そして（iv）導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出すことによって、読み出しリクエストに応答するよう作動可能である。
【００４０】
いくつかの実施例によれば、コントローラは、エラー検出訂正モジュールが提供する情報に少なくとも部分的に応じて、少なくとも一つの新しい電圧を導き出すよう作動可能である。
【００４１】
いくつかの実施例によれば、コントローラは、少なくとも部分的にランダムに、少なくとも一つの新しい電圧を導き出すよう作動可能である。  さて、次のものからなる、データ記憶のためのフラッシュメモリ・デバイスを初めて開示する。ａ）データ・ビットを記憶するための複数のフラッシュメモリ・セル、ｂ）データ・ビットにおけるエラーを検出するためのエラー検出訂正モジュール、そしてｃ）フラッシュメモリ・セルからデータ・ビットを読み出すためのコントローラ。（Ｉ）コントローラは、ｉ）複数のフラッシュメモリ・セルからデータ・ビットを読み出すこと、そしてii）前記エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正することによって、最初の読み出しリクエストに応答するよう作動可能である。
【００４２】
また、（II）コントローラは、さらに、）少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出すことによって、以降の読み出しリクエストに応答するよう作動可能である。
【００４３】
いくつかの実施例によれば、コントローラは、訂正後、かつ少なくとも一つの修正基準電圧を用いる読み出しの前に複数のメモリ・セルに書き込みを行うことなく、最初の、そして以降の読み出しリクエストに応答するよう作動可能である。
【００４４】
いくつかの実施例によれば、コントローラは、エラー検出訂正モジュールが提供する情報に少なくとも部分的に応じて、少なくとも一つの修正基準電圧を導き出すよう作動可能である。
【００４５】
コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディア。コンピュータで読み込み可能なコードは、コンピュータで読み取り可能な記憶メディア内に具現化され、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み出すための命令からなる。命令は、ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、ｂ）エラー検出訂正モジュールを用いて、読み取ったデータ・ビットのエラーを訂正しようと試みる命令、ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールがエラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットの再読み出しを行う命令、そしてｄ）当座の間（すなわち、少なくとも修正基準電圧によるステップ（ｃ）のエラー訂正が成功した後、かつステップ（ａ）の読み出しの前に）データ・ビットをメモリ・セルに書き込み、再書き込みせずに、ステップ（ａ）、（ｂ）および（ｃ）を繰り返す命令からなる。
【００４６】
さて、コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディアを初めて開示する。コンピュータで読み込み可能なコードは、コンピュータで読み取り可能な記憶メディア内に具現化され、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み出すための命令からなる。命令は、ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、ｂ）エラー検出訂正モジュールを用いて、読み取ったデータ・ビットのエラーを訂正しようと試みる命令、ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールがエラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットの再読み出しを行う命令、ｄ）訂正の後、モジュールがエラーの訂正に成功した少なくとも一つの読み出し基準電圧を記憶する命令、ｅ）記憶の後、記憶した少なくとも一つの読み出し基準電圧を読み出す命令、そしてｇ）読み出し後、読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出す命令からなる。
【００４７】
さて、コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディアを初めて開示する。コンピュータで読み込み可能なコードは、コンピュータで読み取り可能な記憶メディア内に具現化され、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み出すための命令からなる。命令は、ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、ｂ）エラー検出訂正モジュールを用いて、読み取ったデータ・ビットのエラーを訂正しようと試みる命令、ｃ）エラー検出訂正モジュールによるエラー訂正が失敗した読み出しの後、少なくとも一つの新しい読み出し基準電圧を導き出す命令、そしてｄ）導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出す命令からなる。
【００４８】
コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディア。コンピュータで読み込み可能なコードは、コンピュータで読み取り可能な記憶メディア内に具現化され、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み出すための命令からなる。命令は、ａ）複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、ｂ）エラー検出訂正モジュールを用いて、読み取ったデータ・ビットのエラーを訂正する命令、そしてｃ）訂正の後、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出す命令からなる。
【発明を実施するための最良の形態】
【００４９】
これらの実施例および他の実施例を、以下で詳細に説明する。
【００５０】
詳細な説明
さて、本発明を、特定の実施例に関して説明する。本発明が開示の実施例に限定されないことは理解すべきである。また、添付の請求項の特定な発明を実施するのに、ここに開示する、フラッシュメモリのエラーから復旧するための方法、デバイスおよびコンピュータで読み取り可能なコードのすべての特徴が必要であるというわけではないことも理解すべきである。本発明を完全に可能なものにするために、種々の素子およびデバイスの特徴を説明する。また、プロセスまたは方法を説明する本開示を通して、方法のステップは、ステップが、他のステップが最初に実行されることに依存していることが文脈から明白である場合を除き、どの順序で実行しても、または同時に実行してもよい、ということも理解すべきである。
【００５１】
（図３のフラッシュメモリ・デバイス）
図３は、本発明の模範的な実施例によるフラッシュメモリ・デバイス５０を表すブロック図である。フラッシュメモリ・デバイス５０は、複数のフラッシュメモリ・セルおよびフラッシュ・コントローラ１０を有するフラッシュメモリ３０を含む。フラッシュ・コントローラ１０は、フラッシュメモリ・セル３０からデータを読み取るように作用し、また、オプションとして、フラッシュメモリ・セル３０内へデータを書き込むように作用する。フラッシュ・デバイス５０は、また、（図３に示すように）フラッシュ・コントローラ１０の一部として、または別個のものとしてエラー検出訂正回路２０を含む。フラッシュ・コントローラ１０は、フラッシュ・デバイス５０の外部から、例えば、ホスト・デバイス（図示せず）から受信した命令に従って、フラッシュメモリ３０にアクセスしてもよい。
【００５２】
（図４の説明）
図４は、本発明の実施例としてのフラッシュ・デバイス５０による、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。読み出しリクエストを受信した１１０後、フラッシュ・コントローラ１０は、一セットの基準電圧を用いて、フラッシュメモリ３０からデータ・ビットを読み取る１１２Ｃ（例えば、デフォルトの基準電圧あるいは他のセットの基準電圧。このため、各メモリ・セルは、それぞれの基準電圧を用いて読み取る）。ＥＣＣを用いて、読み取ったデータ・ビットの訂正を試みる１１４。エラー訂正が成功した場合１１６、コントローラ１０は、訂正されたデータを送信することによって、読み出しリクエストへ（例えば、ホスト・デバイスに）応答してもよい１１８。読み出しリクエストに応答した１１８後、デバイス５０は、次の読み出しリクエストを処理することができる。
【００５３】
もしエラー訂正が成功しなかった場合１１６、コントローラ１０は、少なくとも一つの修正基準電圧を用いて１２０、フラッシュメモリからデータ・ビットを再び読み出してもよい１１２Ｂ（すなわち、少なくとも一つのこの電圧が、先の読み出しに用いたもの１１２Ｃと異なる）。再読み取り１１２Ｂの後、もう一度、追加のエラー訂正を試みる１１４。もしこのエラー訂正が成功しなかった場合１１６、コントローラ１０は、少なくとも一つの修正基準電圧を用いて、さらにもう一回、メモリ・セル３０からデータ・ビットを読み取ってもよい１１２Ｂ（すなわち、少なくとも一つのこの電圧が、先の読み出し１１２Ｂで用いたものと異なる）。修正電圧による再読み取り１１２Ｂおよびエラー訂正の試み１１４を、エラー訂正が成功する１１６まで繰り返す。
【００５４】
この時点で、読み出しリクエストへの応答１１８を送信してもよい。そしてコントローラは、次の読み出しリクエストに応答する１１０ためにスタンバイする。注目すべきことは、図４で説明した実施例によれば、エラー訂正が成功した後、データがフラッシュメモリ・セル内へ再び書き込まれることがないことである。
【００５５】
注目すべきは、図４では、エラー訂正プロセスは、修正基準電圧を用いて１２０少なくとも一回、フラッシュメモリ・セルを再び読み出す１１２Ｂことを含むことである。図４への必要条件ではないが、いくつかの実施例では、修正基準電圧の順番を予め決定しておいてもよく、繰り返す度に、所定基準電圧の異なるセットを用いてもよい。択一的に、例えば、フラッシュ・コントローラ１０のマイクロプロセッサを用いて、一つ以上の修正基準電圧を計算してもよい。
【００５６】
（図４に関する考察）
データを再書き込みしないので、以降の読み出しリクエストを処理するときに、最初の読み出しリクエストの処理で遭遇したと同じデータエラーが、もう一度、発生する傾向にある（すなわち、メモリ・セルを、再書き込みデータで若返らせて、デフォルト電圧を用いたエラー訂正の失敗率を減少させなかったためである）。したがって、デバイスは、次の読み出しリクエストを処理する際に、もう一度、エラー訂正プロシージャ（例えば、図４で説明したプロシージャ）を利用する必要がある。
【００５７】
さて、本発明者は、多くの状況下で、フラッシュメモリ内へデータを再書き込みする（図２の１２４を参照）という時間のかかるステップを排除した（すなわち、より速い復旧プロシージャを発動する）スピードの利得が、複数回の読み出しの繰り返しに関する効率の損失、そして、読み出しエラーからのより頻繁な復旧の必要性を上回る可能性があることを、初めて開示する。したがって、本発明者は、図４のプロシージャが、平均で、図２のものよりも速い、多くの状況が存在することを開示する。
【００５８】
（図５の説明）
図５は、本発明の実施例としてのフラッシュ・デバイス５０による、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。読み出しリクエストを受信した１１０後、フラッシュ・コントローラ１０は、一セットの基準電圧を用いて、フラッシュメモリ３０からデータ・ビットを読み取る１１２Ｃ（例えば、デフォルト基準電圧あるいは他の基準電圧セット。したがって、各メモリ・セルは、それぞれの基準電圧を用いて読み取る）。ＥＣＣを用いて、読み取ったデータ・ビットの訂正を試みる１１４。エラー訂正が成功した場合１１６、コントローラ１０は、訂正されたデータを送信することによって、読み出しリクエストへ（例えば、ホスト・デバイスへ）応答してもよい１１８。読み出しリクエストに応答した１１８後、デバイス５０は、次の読み出しリクエストを処理するよう作動可能である。
【００５９】
もしエラー訂正が成功しなかった場合１１６、コントローラ１０は、少なくとも一つの修正基準電圧１２０を用いて、フラッシュメモリからデータ・ビットを再び読み出してもよい１１２Ｂ（すなわち、少なくとも一つのこの電圧は、先の読み出しの際に用いたもの１１２Ｃと異なる）。再読み取り１１２Ｂの後、追加のエラー訂正をもう一度試みる１１４。もしこのエラー訂正が成功しなかった場合１１６、コントローラ１０は、少なくとも一つの修正基準電圧を用いて、さらにもう一度、メモリ・セル３０からデータ・ビットを読み取ってもよい１１２Ｂ（すなわち、少なくとも一つのこの電圧は、先の読み出しの際に用いたもの１１２Ｂと異なる）。修正電圧による再読み取り１１２Ｂ、そしてエラー訂正の試み１１４を、エラー訂正が成功する１１６まで繰り返す。
【００６０】
この時点で、読み出しリクエストへの応答を送信してもよい１１８。
【００６１】
図５に表す実施例によれば、エラー訂正が成功した１１６後、（すなわち、復旧が成功した後）、これ以降の使用のために、一つ以上の「成功した」基準電圧１３０をメモリ内に記憶してもよい。
【００６２】
以降の読み出しリクエストを受信したら１１０、これらの記憶基準電圧の（すなわち、先の読み出しリクエストの処理で復旧が成功した後に記憶した１３０）一つ以上を読み出し１３２、以降の読み出しリクエストを処理するためにフラッシュメモリを読み取る１１２Ｄに用いてもよい。
【００６３】
図５に明示していないし、また、図５の制限でもないが、いくつかの実施例では、図４の場合のように、フラッシュ・セルから読み出した実際のデータを、フラッシュ・セル内へ再書き込みする必要がないことは評価できる。
【００６４】
（図５の考察）
制限ではなく、図５は、図４の説明で上記に開示したことへの「改善」とみなしてよい。上記  図４の説明において、注目したことは、フラッシュメモリ・セルへデータを再書き込みしないので、（すなわち、時間のかかるフラッシュ書き込みオペレーションを避けるため）、以降の読み出しリクエストを処理するときに同じエラーに遭遇することになる（すなわち、再書き込みデータでメモリ・セルを若返らせて、デフォルト電圧を用いるエラー訂正の失敗の可能性を減少させることをしなかった）。
【００６５】
図５のプロシージャは、エラー訂正後以降の読み出しリクエストに応答する際に必要となる読み取りの繰り返し数を減少させるのに有用である。より詳しくは、多くの状況において、記憶成功基準電圧（すなわち、直前の読み出しリクエストからのもの）が、以降の読み出しリクエストに適当な基準電圧の良好な第一近似値を提供する。したがって、エラー訂正後これらの基準電圧を記憶し、そして後にこれらの電圧を読み出すことによって、スピードに関してさらにもう一つの改善が達成できる。
【００６６】
例えば、（単一の読み出し基準値を持つ）ＳＢＣフラッシュにおいて、特定なフラッシュ・セルに対する読み出し基準を、繰り返しの度に２５ミリボルト修正する（すなわち、ステップ１２０）と仮定する。もし実際に起こったセルのスレショルド電圧のドリフトが１００ミリボルトであるなら、データを読み取ろうとする最初の試み（すなわち、ステップ１１２Ｃ）は、５回の読み取り繰り返し後に成功することになる（デフォルト読み出し基準値が、許容安全域なしに、分布の端に非常に近いと単純に仮定している。この仮定は、通常、フラッシュメモリ・デバイスに該当しない）。読み出し成功後、１００ミリボルトの値を、後の使用のために記憶する。
【００６７】
以降、読み出しリクエストの受信後、そのデータを再び読み出す１１２Ｄとき、１００ミリボルトの記憶値を取り出して使用する。一つの実施例（すなわち、図５に例示したようなもの）によれば、デフォルトの読み出しをスキップして、デフォルト値から１００ミリボルト離れた基準から、読み出しを始めてもよい。択一的に、以降の読み出しリクエストを受信したら、デフォルト基準電圧を用いて最初の読み出しを試み、そしてデータを訂正できない場合にのみ、１００ミリボルト・シフトさせた値で読み出しを試みてもよい。このように、５回の繰り返しではなく、１、２回の読み出し繰り返しのみのオーバーヘッドで済む。
【００６８】
注目すべきことは、フラッシュメモリの種々のページに対する（すなわち、かなりの量の読み出しに対する）成功基準値を、揮発性メモリ、不揮発性メモリあるいはそれらの組み合わせ内に記憶してもよい１３０。例えば、成功基準値を、フラッシュ・コントローラ内のＲＡＭ内のテーブルに、あるいはフラッシュ・デバイス内に記憶してもよい１３０。ＲＡＭ内への記憶は速いので効率的であるため、プロセスの速度を上げるという目的にかなっている。欠点は、一旦電源を切ってしまうと、記憶基準値が失われるということである。しかし、記憶値がメモリ・システム・オペレーションに必須なものでないため、これは許容できることである。もし、かなりの量のデータに関する記憶基準値が失われてしまったなら、そのかなりの量のデータに対する次の読み出しの際は、まず最初に、（例えば、図４に記載したような）低速で完全な反復プロセスを用いてもよい。しかし、データはなお、正しく読み出すことができる。
【００６９】
（図６の説明および考察）
図４では、基準電圧の修正１２０のやり方に制限がないことに注目した。  図６においては、少なくとも一つの電圧を導き出す１４０、あるいは、特定な方法で（例えば、フラッシュ・コントローラ１０のマイクロプロセッサを用いて）計算することを開示する。このセクションでは、一つ以上の基準電圧を導き出す、あるいは計算する１４０、二つの模範的なプロシージャを説明する。第一のプロシージャは、ＥＣＣモジュールが提供する情報によって、基準電圧を計算する１４０ことに関する。そして、第二のプロシージャは、ランダムに選択した電圧を用いて、基準電圧を導き出す１４０ことに関する。  図５あるい  は図６に明示していないが、注意すべきことは、典型的に、データ回復後、フラッシュメモリ・セルへデータを再び書き込むことをしないことである。
【００７０】
（基準電圧を導き出す１４０ための第一のプロシージャ）
いくつかの実施例（そして図６に例示するような例）においては、データ訂正に失敗したとき、ＥＣＣモジュールが提供する情報を有利に用いることができる。例えば、いくつかのＥＣＣ方法は、訂正できないデータに関するエラーの重大度の指標を提供するように構成できる。この文脈におけるエラーの重大度は、典型的に、そのデータ内のエラー数を意味する。したがって、ＥＣＣモジュールには、正確なエラーは分からなくとも（しかも、それらの正確な数さえ分からなくとも）、エラー回数が大きいのか、あるいは小さいのかを示す情報は存在する。そのような情報を提供可能なＥＣＣモジュールを利用する場合、読み取り繰り返し数を減少させるように用いることができる。多数のエラーはスレショルド電圧の大規模なドリフトと相関があり、少数のエラーは小規模のドリフトと相関している、と予想することは合理的である。
【００７１】
その最も単純な形態において、ＥＣＣモジュールが、バイナリの「大きな、あるいは小さなエラー回数」の標識のみを提供する場合、この実施例は、以下のとおりに作用する。第一のデフォルト値ベースの読み出しが失敗したとき、ＥＣＣモジュールに、エラーの重大度を尋ねる。それから、この重大度に基づいて決定した基準値を用いて、次の読み出しを試みる。多くのエラーがあるなら、基準値を大規模にシフトしてもよいし、エラーが少ないなら、小さなシフトでよい。このようにすれば、次の読み出しの試みが成功する可能性が高く、読み出しオペレーション毎の平均読み取り繰り返し数が減少する。
【００７２】
注目すべきことは、（例えば、ＥＣＣモジュールが提供する情報から）繰り返しの各々に用いる基準電圧を導き出すことによって、基準電圧を予め定めないエラー訂正スキームを提供できることである。したがって、基準電圧の順序は、データの異なるページに対して異なってもよく、また、同じページに対する２回の読み出しオペレーションでさえ異なってもよい。
【００７３】
基準電圧の予測が失敗した場合には、図４あるいは  図５で説明したスキーム、または他のスキームへ戻すことが常に可能であることは明らかである。
【００７４】
（基準電圧を導き出す１４０ための第二のプロシージャ）
エラー訂正中、所定値を用いるよりむしろ、少なくとも一つの基準電圧をランダムに導き出す１４０ことが望ましい多くのケースがある。例えば、もしＢＣＨあるいはハミング符号などの、多くの単純なＥＣＣスキームでそうであるように、ＥＣＣモジュールがエラーの重大度に関する情報を提供できない場合、データ・ビットから導き出した情報に応じて、読み出し基準電圧を選択することも可能である。したがって、値をランダムに用いることが望ましいこともある。異なるページ間で潜在するドリフト量の変化が大きい場合は、ランダム・セレクションが所定の選択よりも有利であるかもしれない。ランダム・セレクションを用いることによって、読み出しオペレーション毎の読み取り繰り返し数を平均化できるため、システム内に設置した特定のフラッシュ・デバイスに依存することの少ない、より安定な性能を提供できるかもしれない。
【００７５】
（図７の説明および考察）
修正電圧（すなわち、所定修正電圧、あるいは「新しく」計算した電圧）を用いて、データ・セルを再び読み出すエラー訂正プロシージャを説明する。
【００７６】
しかし、注目すべきは、本発明はまた、最初のデータ読み出しが成功した場合に対しても、フラッシュメモリ・セルからデータを読み出すためのプロシージャを提供することである。
【００７７】
さて、図７を参照する。最初の読み出しリクエストを受信した１１０Ａ後、所定セットの基準電圧（例えば、デフォルト基準電圧）を用いて、フラッシュ・データ・セルを読み取る１１２Ｃことに注意すべきである。読み取ったデータが、ＥＣＣを用いてうまく訂正された１５０ら、第一の読み出しリクエストへ応答してもよい１１８。
【００７８】
第一のリクエスト１１０Ａに応答してデータがうまく読み取られて訂正された（すなわち、エラー訂正ルーチンの必要がなかった）にもかかわらず、第二の読み出しリクエスト１１０Ｂに応答して、基準電圧を修正する。
【００７９】
典型的に、基準電圧は、第一の読み出しリクエストで読み取ったデータを訂正した後、ＥＣＣが提供する情報に応じて修正する。しかし、これは限定ではない。特に、注目すべきは、ほとんどのＥＣＣスキームは、データ訂正が成功した場合、訂正エラー数に関する情報を提供することが可能であることである。したがって、「エラー訂正成功」の場合は、訂正が失敗の場合ほどに重大度はあまり高くないが、それでも訂正エラーに関する重大度の指標が利用できる。この指標に基づいて、重大度が、読み出し基準電圧の調整を正当化するのに十分に高いかどうかを判定してもよい。その調整が、同じデータの次の読み出しリクエストに対する出発点となる。調整値から始めれば、次の読み出しの際に、読み取りの繰り返しを一回以上少なくできる。  図５で説明した実施例のように、揮発性（例えばＲＡＭ）や不揮発性メモリ（例えばフラッシュメモリ）の組み合わせにおいて、種々のデータ・ページに用いる基準電圧を、後の使用のために記憶してもよい。
【００８０】
したがって、データ・ビットの最初の読み出し１１２Ｃ後に、エラー検出訂正モジュールよるエラー訂正の失敗がなかったとしても、修正基準電圧を用いる読み出し１１２Ｂを実行してもよいことに注意すべきである。
【００８１】
（模範的な実施例の全般的な考察）
上記のように、本発明の実施例は、フラッシュメモリ・デバイスからデータを読み取るための方法に関する。いくつかの実施例は、本文で説明した方法によって、フラッシュメモリ・セルのアレイから読み出すように作動可能なフラッシュメモリ・コントローラを提供する。いくつかの本発明の実施例は、フラッシュメモリ・セルのアレイを、ここに開示の方法でアレイから読み出すフラッシュメモリ・コントローラと組み合わせるフラッシュメモリ・デバイスを提供する。
【００８２】
理解すべきことは、本発明は、ＳＢＣおよびＭＢＣフラッシュメモリに等しく適用できることである。ＳＢＣセルでは、単一の読み出し基準電圧のみであるが、ＭＢＣセルにおいては、複数の読み出し基準電圧がある。ここに開示する、フラッシュメモリ・セルを読むためのプロシージャは、両ケースに採用できる。ＭＢＣケースでは、基準のシフトを、各基準電圧に平行に、あるいは別個に、すべての基準へ適用してもよい。
【００８３】
（エラー訂正失敗の考察）
いくつかの実施例では、デバイスがＥＣＣ失敗を示す（例えば、所定のサイズのデータ量毎の所定エラー数よりもエラーが多い）場合、「ＥＣＣ失敗」イベントが発生する。しかし、これは本発明の限界ではない。例えば、ＥＣＣモジュールがエラー訂正成功を示す場合でも、実は、読み出したかなりの量のデータにおけるエラーの数および／あるいはタイプに関する代替の所定「エラー訂正失敗」基準によれば、「エラー訂正失敗」イベントが発生していることが分かることがある。
【００８４】
したがって、本発明の実施例（そして特に  図３から図６で説明した実施例）は、フラッシュメモリ・コントローラ１０が、ＥＣＣモジュールの判定基準とは異なる、「エラー訂正失敗イベント」を定義するための所定判定基準を用いるケースに関する。
【００８５】
一例によれば、ＥＣＣモジュールがその最大エラー訂正能力近くで作動している場合は、ＥＣＣモジュールに依存することは望ましくない。例えば、ＥＣＣモジュールが、フラッシュメモリから読み出したデータ塊における四つのエラーまで訂正できると仮定する。この例によれば、三つ以下のエラーの訂正に関しては非常に信頼できるが、四つのエラーの訂正に関しては、信頼できないと仮定してもよい（すなわち、これは、エラー訂正失敗イベントに対する「所定判定基準」の例であり、データ塊毎のエラー数が所定値を上回っている）。これは、四つのエラーがあるときには、真のデータは、ＥＣＣモジュールが返すものではなく、それとは異なる何かである可能性がゼロではないためである。したがって、ＥＣＣが実際に訂正を提案できるという事実にもかかわらず、四つのエラーがあるケースを訂正失敗とみなして、より信頼できる読み出しを得るために、本発明のいくつかの（例えば、図４から図６に開示の）実施例が提供するエラー訂正技術を適用することを選択してもよい。したがって、模範的なケースは、本文で説明したいずれの実施例にも該当する。また、用語「エラーを訂正できない」は、「エラーを訂正できない、または訂正が、他の所定エラー基準によれば信頼できないと考えられる」ことを含む、と理解すべきである。
【００８６】
本出願の説明文および請求項における動詞「なる」、「含む」および「持つ」、そして、それらの同根語の各々は、動詞の目的語あるいは複数の目的語が、必ずしも、動詞の主語あるいは複数の主語の、リストされた部材、コンポーネント、素子または部品のすべてを含むというわけではないことを示すために用いている。
【００８７】
本文におけるすべての引用文献は、参照によって、それらの全体が含まれる。参考文献からの引用は、その参照が従来の技術であると認めることを意味しない。
【００８８】
不定冠詞「ａ」および「ａｎ」は、または、その冠詞の文法的対象の一つ以上（すなわち、少なくとも一つ）に言及するために、本文で用いている。例証として、「素子」は、一つの素子あるいは複数の素子を意味する。
【００８９】
用語「含む」は、表現「含むが、これに限定されるものではない」を意味するために本文で用いており、その表現と置き換えて用いることができる。
【００９０】
用語「または」は、用語「および／または」を意味するために本文で用いており、前後関係がそれを指示しないことが明らかでない限り、その用語と置き換えて用いることができる。
【００９１】
用語「例えば」は、表現「例えば、しかしそれに限定しない」を意味するために本文で用いており、その表現と置き換えて用いることができる。
【００９２】
実施例の詳細な説明を用いて、本発明を説明したが、それらは、例として提供したもので、発明の範囲を限定することを意図していない。説明した複数の実施例は、異なる特徴からなるが、それらのすべてが、本発明のすべての実施例に必要というわけではない。本発明のいくつかの実施例は、いくつかの特徴のみを利用する、または特徴の組み合わせを利用するものである。同業者は、説明した本発明の種々の実施例、そして説明した実施例で注目した特徴の異なる組み合わせからなる本発明の実施例を思いつくであろう。
【図面の簡単な説明】
【００９３】
【図１Ａ】大規模な個体数のメモリ・セル（従来の技術）のスレショルド電圧の分布を表すグラフである。
【図１Ｂ】大規模な個体数のメモリ・セル（従来の技術）のスレショルド電圧の分布を表すグラフである。
【図２】従来の技術としてのエラー回復スキーマを説明するフロー・チャートである。
【図３】本発明の典型的な実施例による、フラッシュメモリ・デバイスのブロック図である。
【図４】本発明の実施例としてのフラッシュ・デバイスによる、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。
【図５】本発明の実施例としてのフラッシュ・デバイスによる、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。
【図６】本発明の実施例としてのフラッシュ・デバイスによる、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。
【図７】本発明の実施例としてのフラッシュ・デバイスによる、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。
【図１Ａ】
2009515281.tif 000003
【図１Ｂ】
2009515281.tif 000004
【図２】
2009515281.tif 000005
【図３】
2009515281.tif 000006
【図４】
2009515281.tif 000007
【図５】
2009515281.tif 000008
【図６】
2009515281.tif 000009
【図７】
2009515281.tif 000010