説明

フラッシュメモリ内のエラーから復旧するための方法

【課題】一つ以上のフラッシュメモリ・セルからデータを読み取るための、そして読み取りエラーから復旧するための、方法、デバイスおよびコンピュータで読み込み可能なコードを提供する。
【解決手段】エラー検出訂正モジュールによるエラー訂正が失敗した場合、エラー訂正が成功するまで、少なくとも一度、一つ以上の修正基準電圧を用いて、フラッシュメモリ・セルの再読み出しを行う。エラー訂正が成功した後、当座の間フラッシュメモリ・セルにデータ(例えば、読み出したデータの信頼可能な値)を再書き込みすることなく、以降の読み出しリクエストを処理する。エラーを訂正した読み取りに関する基準電圧をメモリに記憶して、以降の読み出しリクエストに応答するときに読み出してもよい。修正基準電圧は、予め定めた基準電圧である。又は、必要に応じランダムに算出した値を用いて、あるいはエラー検出訂正モジュールが提供する情報に応じて決定してもよい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、読み取りエラーが発生する可能性のある、システムにおけるフラッシュメモリからのデータ読み取りに関する。
【背景技術】
【0002】
(シングル・ビットおよびマルチビット・フラッシュメモリ・セル)
フラッシュメモリ・デバイスは、長年知られている。典型的に、フラッシュメモリ・デバイス内の各メモリ・セルは、一ビットの情報を記憶する。フラッシュメモリ・セル内にビットを記憶する従来の方法は、メモリ・セルの二つの状態をサポートすることである。一つの状態が論理「0」を表し、そしてもう一つの状態が論理「1」を表す。
【0003】
フラッシュメモリ・セル内に、セルのチャンネル上(セルのトランジスタのソースおよびドレイン・エレメントを接続する領域)に位置するフローティングゲートを持ち、そしてフローティングゲート内に蓄えられる充電量に対して二つの有効な状態を持つことによって、二つの状態を実現している。典型的に、一つの状態は、フローティングゲート内にゼロ電荷を持つ、消去後のセルの最初の記録のない状態である(一般に、状態「1」を表すと定義する)。そして、もう一つの状態は、フローティングゲート内にいくらかの量の陰電荷を持つ(一般に、状態「0」を表すと定義する)。ゲート内に陰電荷を持つことは、セルのトランジスタのスレショルド電圧(すなわち、トランジスタが導電するようトランジスタの制御ゲートに印加しなければならない電圧)を高める。さて、セルのスレショルド電圧をチェックすることによって、記憶ビットを読み込むことが可能である。スレショルド電圧が高い状態であれば、ビット値は「0」であり、スレショルド電圧が低い状態であれば、ビット値は「1」である。実際にセルのスレショルド電圧を正確に読み取る必要はなく、現在セルが二つの状態のいずれにあるのかを正しく識別することだけがすべてである。その目的で、二つの状態の中央に位置する基準電圧値に対して比較することによって、この基準値よりも、セルのスレショルド電圧が高いのか低いのかを判定すれば十分である。
【0004】
図1Aは、これがどのように行われるのかを視覚的に示す。図1Aは、特に、セルの大きな個体群におけるスレショルド電圧の分布を示す。フラッシュデバイスのセルは、(例えば、不純物濃度の違いや、けい素構造内の欠陥が原因で)特性および作用が必ずしも同一ではなく、同じプログラミング・オペレーションをすべてのセルに適用しても、セルのすべてが必ずしも同じスレショルド電圧を持つようになるものではない。(なお、歴史的な理由で、フラッシュメモリにデータを書き込むことを、フラッシュメモリを「プログラムする」と、一般的に言う。)そうではなく、スレショルド電圧は、図1Aに示すような状態で分布する。「1」の値を記憶したセルは、典型的に、負のスレショルド電圧を持つため、大部分のセルは、図1Aの左側のピークが示す値に近いスレショルド電圧を持ち、少数のセルが、これよりも低いまたは高いスレショルド電圧を持つ。同様に、「0」の値を記憶したセルは、典型的に、正のスレショルド電圧を持つため、大部分のセルは、図1Aの右側のピークが示す値に近いスレショルド電圧を持ち、少数のセルが、これよりも低いまたは高いスレショルド電圧を持つ。
【0005】
近年、従来から「マルチ・レベル・セル」または略してMLCと呼ぶ技術を利用した、新しい種類のフラッシュデバイスが市場に出ている。(先のタイプのフラッシュ・セルも複数のレベル、すなわち上述のように二つのレベルを持つので、この用語はまぎらわしい。したがって、フラッシュ・セルの二つの種類を、本文では「シングルビット・セル」(SBC)および「マルチビット・セル」(MBC)と呼ぶ。)MBCフラッシュがもたらした改善は、各セルに2ビットを記憶することである。(原則として、MBCは、1セルにつき2ビットを超える記憶をおこなうことをも含むが、そのようなセルは、現時点では、まだ市場に存在しない。本文では、説明を簡単にするために、2ビットのケースに的を絞る。しかし、本発明が、セルにつき複数のビットをサポートするフラッシュメモリ・デバイスに等しく適用できることは理解すべきである。)単一のセルが2ビットの情報を記憶するためには、セルは、4つの異なる状態の一つになることが可能でなければならない。セルの「状態」が、そのスレショルド電圧で表されるため、MBCセルは、そのスレショルド電圧に対して、4つの異なる有効な範囲をサポートすべきであることは明白である。図1Bは、典型的なMBCセルのスレショルド電圧分布を示す。予期するように、図1Bは、各々が一つの状態に対応する四つのピークを持つ。SBCのケースに関しては、各状態が実際には一範囲であり、単一数ではない。セルの内容を読み込む場合、保証すべきことは、セルのスレショルド電圧が位置する範囲を正しく識別することがすべてである。MBCフラッシュデバイスの、従来の技術による例として、ハラリ氏の米国特許第5,434,825号を参照する。これは、すべての目的において参照によって本文に完全に記載したものとする。
【0006】
4つの状態によって一つのMBCセル内に2ビットをコード化する場合、両ビットが「1」の値を持つケースを表す、図1Bの左端の状態(典型的に、負のスレショルド電圧を持つ)を設けるのが一般的である。(以下の考察では、次の表記を用いる。セルの2ビットを「下位ビット」と「上位ビット」と呼び、それらビットの明示値は、下位ビット値を右側にして、[「上位ビット」「下位ビット」]の形式で書く。であるから、下位ビットが「0」で上位ビットが「1」であるケースは、「10」と記述する。理解すべきは、この用語および表記の選択が任意であり、他の名称およびコード化が可能であることである)。この表記を用いると、左端の状態は、「11」のケースを表す。他の3状態は、典型的に、左から右へ順に「10」、「00」、「01」と割り当てる。上述のそのようなコード化を用いるMBCのNANDフラッシュデバイスの実施例が、チェン氏の米国特許第6,522,580号に開示されている。なお、この特許は、すべての目的において参照によって本文に完全に記述したように含むものとする。チェン氏の特許を表す、特に 図8を参照する。しかしながら、状態のこの割当てに関しては何の制限もなく、他の序列化を用いてもよいことは留意すべきである。MBCセルの内容を読む場合、セルのスレショルド電圧が位置する範囲を正しく識別しなければならない。このケースのみ、これは、一つの基準電圧への比較によって必ずしも達成できるものではなく、複数回の比較が必要となる可能性がある。例えば、図1Bに図解したケースでは、下位ビットを読む一つの方法は、セルのスレショルド電圧を、まず、参照比較電圧V1に比較し、それから、その比較結果に応じて、セルのスレショルド電圧を、ゼロ参照比較電圧または参照比較電圧V2のいずれかに比較することである。下位ビットを読むもう一つの方法は、無条件で、セルのスレショルド電圧を、0基準電圧とV2との両方に比較することである。いずれにせよ、二つの比較が必要である。
【0007】
MBCデバイスは、一つが1ビットでなく2ビットを記憶する同じサイズのセルを用いて、コストに関する大きな利点を提供する。しかし、MBCフラッシュを用いることには、いくつかの欠点がある。MBCメモリの平均読み込み書き込み時間は、SBCメモリのものよりも長く、性能は低くなる。また、MBCの信頼性は、SBCよりも低い。このことは、MBCにおけるスレショルド電圧範囲間の差違が、SBCにおけるものよりも非常に小さいことから、容易に理解できる。したがって、SBCでは二つの状態間に大きなギャップがあるために気づかれなかった、スレショルド電圧の障害(例えば、スレショルド電圧ドリフトを起こす蓄積電荷の漏れ、隣接セル上のオペレーションからの干渉など)は、MBCセルでは、一つの状態からもう一つの状態への移行を引き起こし、エラー・ビットを生じる。その結果、データ保持時間あるいは多数回の書き込み消去サイクルへのデバイスの耐久度に関するMBCセルの品質規格は低い。したがって、アプリケーションの要件に応じて、MBCセルとSBCセルとの両方を用いることに利点があるのかも知れない。
【0008】
上記の説明はフローティングゲート・フラッシュメモリ・セルを扱ったが、他のタイプのフラッシュメモリ技術もある。例えば、NROMフラッシュメモリ技術では、導電性フローティングゲートは全くないが、電荷を捉える絶縁層がある。フローティングゲート技術に関連させて説明するが、本発明は、すべてのフラッシュメモリ・タイプに等しく適用できる。
【0009】
(フラッシュ・セルからデータを読み取る際のエラー訂正)
上記に説明したように、スレショルド電圧がそれらの初期値から離れてドリフトした場合、フラッシュ・セル、特にMBCフラッシュ・セルは、誤って読み取られることがある。もしスレショルド電圧ドリフト量が十分に大きい場合、読み取り処理は、セルの二つの状態間の境界線として用いる読み取り基準電圧の誤った側に、セルを見いだすことになる。フラッシュメモリから読み取ったデータ内のエラーを訂正するために、エラー訂正コード(ECC)を利用するのが一般的であるが、訂正能力は、典型的に、読み取られるデータのページ内の、ある一定のエラー回数に制限されているため、結局、累積エラー回数は、ECCメカニズムの訂正能力を超過することがある。
【0010】
オークレール氏らの米国特許第5,657,332号、表題「EEPROMデバイス内のソフトエラー処理」(本文においては「オークレール」と呼ぶ)は、スレショルド電圧ドリフチングが引き起こすフラッシュ・メモリ・エラーのこの問題を扱う。この特許は、すべての目的に対して参照によって、本文に完全に記述したものと見なす。オークレールは、このエラー問題に二つの解決策を提案する。最初のものは、セルが境界線を横切る寸前になったことを検出し、それらの内容をメモリへ再び書き込んで「修正する」ことによって、エラーの発生を排除しようとする。これは、スレショルド電圧を正しい初期値へ「リセットする」ことである。オークレールの第二の解決は、ドリフチング・エラーの存在を既定の事実と認め、エラー発生後のメモリ・システムの堅牢性を改善するように試みる。この第二の解決策については、オークレールのコラム13内の14から27行に考察がある。
【0011】
フラッシュメモリからデータを読み取るオークレールの方法は、最初に、読み取り基準電圧(またはMBCフラッシュメモリの場合には複数の読み取り基準電圧)のデフォルト値を用いて正規の読み取りを試みる。この最初の読み取りの試みにおいて多くのエラーが発生し、ECCメカニズムがそれらを修正できないと仮定して、オークレールは、2ステージ・リカバリ・プランを活用する。
A.読み取り基準電圧を、それらのデフォルト値から、もう一セットの所定値へ変え、新しいセットの所定基準値を用いて読み取りを試みる。典型的に新しい値は、デフォルト値よりもいくぶん低い。セルのスレショルド電圧が、時間とともにより低い値へドリフトする(つまり、図1Aおよび1Bの左側へ移行する)と予想することは、フローティングゲートから電荷がリークした結果としてドリフチングが起こるのだから、合理的である。したがって、左側へ比較の「境界」を移行することは、ドリフト後の状態を相互に切り離す良い機会である。訂正基準値で読み取ってもエラーが発生する場合は、それらをECCメカニズムで処理できる。もし、それでもなお多くの訂正すべきエラーがあるなら、プロセスを繰り返す。すなわち、もう一セットの所定読み取り基準値を選択し、もう一回の読み取りおよび訂正を行う。多分、この反復プロセスはデータをうまく訂正できるので、エラーがないと仮定できる。一旦ここまで到達すれば、第二ステージへ移行する。
B.第一ステージから得たデータをセルへ書き戻すことによって、デフォルト読み取り基準値を用いて次に読み取るときに、現在の読み取りの場合ほど多くのエラーが発生しないようにする。
【0012】
図2は、オークレールに開示の従来の技術による、コントローラおよびフラッシュメモリ(すなわち、フラッシュメモリ・セルを含む)を備えるフラッシュ・デバイスによる読み出しリクエストの処理を説明するフロー・チャートである。読み出しリクエストを受信した110後、フラッシュ・コントローラは、デフォルト基準電圧を用いて、フラッシュメモリ212からデータビットを読み取る112A。ECCを用いて、読み取ったデータ・ビットの訂正を試みる114。エラー訂正が成功した116ならば、デバイスは、読み取り後訂正したデータを送信によって(例えば、データをホスト・デバイスに送信することによって)、読み出しリクエストに応答してもよい118。読み出しリクエストに応答した118後、デバイスは、次の読み出しリクエストを処理することが可能である。
【0013】
もしエラー訂正が成功しなかった116場合、デバイスは、少なくとも一つの所定修正基準電圧を含む119一セットの基準電圧を用いて、フラッシュメモリからデータ・ビットを再び読み出す112B。一つ以上の「新しい」所定基準電圧での(すなわち、少なくとも所定修正基準電圧を用いる119)データ・ビットの再読み出し112Bの後、もう一回のエラー訂正を試みる114。もう一回のエラー訂正が失敗した116場合には、ECCがデータ・ビットのエラー訂正に成功する116まで、異なる予め修正した基準電圧を用いて119データ・ビットを再び読み出す112Bこのプロセスを繰り返す。
【0014】
その時点で、メモリ・セルを「若返らせ」て、その後にセルを(「適当な」デフォルト基準電圧で)読み取るときのエラー訂正における失敗の可能性を減らす。この処理は、エラー訂正が成功した後に正当なデータが利用可能であるという事実を利用して行われるもので、メモリ・セルへの再書き込みを行ってもよい124。したがって、オークレールの教示によれば、データの再書き込み後、デフォルト読み取り基準値を用いて次にデータを読み取る112Aとき(すなわち、もう一回の読み出しリクエスト110の後)、フラッシュメモリ・セルは、より少ないエラーの(すなわち、基準電圧「ドリフト」が訂正された)データを提供する可能性が大きく、ECCで訂正可能な読み取りデータを提供すると仮定している。
【0015】
注目すべきは、オークレールの前記リカバリ方法には、大きな欠点があることである。リカバリ・プロセスが活用されるたびに、データは再書き込みされる。フラッシュメモリにおいては、書き込みオペレーションは、読み取りオペレーションよりも非常に遅い。例えば、SBCのNAND型フラッシュメモリにおいては、1ページのデータを読み取るのには、およそ15マイクロ秒が必要であるが、1ページのデータを書き込むのに、およそ200マイクロ秒が必要である。MBCのNAND型フラッシュメモリにおける状況は、さらに悪く、1ページの読み取りには30マイクロ秒が必要であるが、1ページを書き込むのには、800マイクロ秒が必要である。この事実は、1ページのデータを回復するためにオークレールの方法を活用することは、非常に遅いオペレーションであることを意味する。典型的に、読み出しリクエストを開始して、データを待ち受けるソフトウェア・アプリケーションは、何十マイクロ秒以内にデータを利用できると予想するのだが、予想に反して、1桁長く待たなければならないことになる。リアルタイム・ソフトウェア・アプリケーションには、これは受け入れがたいものである。ソフトウェア・アプリケーションが、データを、リカバリ・プロセスの完了を待つことなく、それが利用可能になったらすぐに受信できるよう、オークレールの書き込みステージを後の時間へ遅らせたとしても、余分な書き込みオペレーションに起因する、記憶システムのスループットにおける性能低下は免れない。
【0016】
したがって、エラーの存在するフラッシュメモリからデータを再生する、しかも比較的短時間でその再生を達成する方法が必要である。
【発明の概要】
【発明が解決しようとする課題】
【0017】
前述の問題、そして他の問題のいくつか、あるいはすべては、本発明のいくつかの局面によって満たすことができる。
【課題を解決するための手段】
【0018】
さて、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための方法を初めて開示する。本開示の方法は、(a)複数のフラッシュメモリ・セルからデータ・ビットを読み出すステップ、(b)エラー検出訂正モジュールを用いて、読み出したデータ・ビットのエラーを訂正しようと試みるステップ、(c)エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールがエラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットの再読み出しを行うステップ、(d)訂正の後、モジュールがエラーの訂正に成功した少なくとも一つの読み出し基準電圧を記憶するステップ、(e)記憶の後、記憶した少なくとも一つの読み出し基準電圧を読み出すステップ、そしてg)読み出し後、読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み取るステップからなる。
【0019】
少なくとも一つの読み出し基準電圧は、揮発性および/または不揮発性メモリの組み合わせ内に記憶してもよい。
【0020】
いくつかの実施例によれば、少なくとも一つの読み出し基準電圧は、一つ以上のフラッシュメモリ・セルに記憶する。
【0021】
いくつかの実施例によれば、読み出すべきデータ・ビットは、フラッシュコントローラを用いて読み出し、そして少なくとも一つの読み出し基準電圧は、フラッシュコントローラ内に(すなわち、フラッシュコントローラの揮発性および/または不揮発性メモリの組み合わせ内に)記憶する。
【0022】
いくつかの実施例によれば、記憶前の最初の読み取りは、最初の読み出しリクエストに応答したものであり、読み出した少なくとも一つの読み出し基準電圧を用いた以降の読み取りは、以降の読み出しリクエストに応答したものである。
【0023】
さて、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための方法を初めて開示する。本開示の方法は、(a)複数のフラッシュメモリ・セルからデータ・ビットを読み出すステップ、b)エラー検出訂正モジュールを用いて、読み出したデータ・ビットのエラーを訂正しようと試みるステップ、c)エラー検出訂正モジュールによるエラー訂正が失敗した読み出しの後、少なくとも一つの新しい読み出し基準電圧を導き出すステップ、そしてd)導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出すステップからなる。
【0024】
いくつかの実施例によれば、導き出した少なくとも一つの新しい電圧は、エラー検出訂正モジュールが提供する情報に少なくとも部分的に応じて決定する。
【0025】
いくつかの実施例によれば、導き出した少なくとも一つの新しい電圧は、少なくとも部分的にランダムに決定される。
【0026】
さて、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための方法を初めて開示する。本開示の方法は、(a)複数のフラッシュメモリ・セルからデータ・ビットを読み出すステップ、b)エラー検出訂正モジュールを用いて、読み出したデータ・ビットのエラーを訂正するステップ、そしてc)訂正の後、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出すステップからなる。
【0027】
いくつかの実施例によれば、少なくとも一つの修正基準電圧を用いた以降のデータ・ビットの読み出しは、当座の間(すなわち、ステップ(a)でデータ・ビットを読み出した後、かつ少なくとも一つの修正基準電圧による再読み出しの前に)たとえエラー訂正検出および訂正モジュールによるエラー訂正の失敗が全くなくとも実行される。
【0028】
いくつかの実施例によれば、複数のメモリ・セルは、訂正後に、また、少なくとも一つの修正基準電圧を用いる読み出し前に、書き込まれない。
【0029】
いくつかの実施例によれば、少なくとも一つの修正基準電圧は、少なくとも部分的にエラー検出訂正モジュールが提供する情報(例えば、エラー数を示す情報)に応じて導き出す。
【0030】
いくつかの実施例によれば、訂正前の最初の読み取りは、最初の読み出しリクエストに応答したものであり、訂正後以降の読み取りは、以降の読み出しリクエストに応答したものである。
【0031】
さて、次のものからなる、データ記憶のためのフラッシュメモリ・デバイスを初めて開示する。a)データ・ビットを記憶するための複数のフラッシュメモリ・セル、b)データ・ビットにおけるエラーを検出して訂正するためのエラー検出訂正モジュール、そしてc)メモリ・セルからデータ・ビットを読み出すためのコントローラ。(I)コントローラは、i)複数のフラッシュメモリ・セルからデータ・ビットを読み出すこと、ii)エラー検出訂正モジュールを用いて、読み出したデータ・ビットのエラーを訂正しようと試みること、iii)エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールがエラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットの再読み出しを行うこと、そしてiv)訂正の後、モジュールがエラーの訂正に成功した少なくとも一つの読み出し基準電圧を(例えば、コントローラの補助メモリ内に、あるいは他のメモリ内に)記憶することによって、最初の読み出しリクエストに応答するよう作動可能である。そして記憶の後、(II)コントローラは、さらに、i)記憶した少なくとも一つの読み出し基準電圧を読み出すこと、そしてii)読み出し後、読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み取ることによって、以降の読み出しリクエストに応答するよう作動可能である。
【0032】
いくつかの実施例によれば、コントローラは、揮発性メモリに、少なくとも一つの読み出し基準電圧を記憶するよう作動可能である。
【0033】
いくつかの実施例によれば、コントローラは、不揮発性メモリに、少なくとも一つの読み出し基準電圧を記憶するよう作動可能である。
【0034】
いくつかの実施例によれば、コントローラは、一つ以上のフラッシュメモリ・セルに、少なくとも一つの読み出し基準電圧を記憶するよう作動可能である。
【0035】
いくつかの実施例によれば、コントローラは、コントローラ(例えば、フラッシュコントローラの揮発性および/または不揮発性メモリ)に、少なくとも一つの読み出し基準電圧を記憶するよう作動可能である。
【0036】
さて、次のものからなる、データ記憶のためのフラッシュメモリ・デバイスを初めて開示する。a)データ・ビットを記憶するための複数のフラッシュメモリ・セル、b)データ・ビットにおけるエラーを検出するためのエラー検出訂正モジュール、そしてc)フラッシュメモリ・セルからデータ・ビットを読み出すためのコントローラ。コントローラは、(i)複数のフラッシュメモリ・セルからデータ・ビットを読み出すこと、(ii)エラー検出訂正モジュールを用いて、読み出したデータ・ビットのエラーを訂正しようと試みること、(iii)エラー検出訂正モジュールによるエラー訂正が失敗した読み出しの後、少なくとも一つの新しい読み出し基準電圧を導き出すこと、そして(iv)導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出すことによって、読み出しリクエストに応答するよう作動可能である。
【0037】
いくつかの実施例によれば、コントローラは、エラー検出訂正モジュールが提供する情報に少なくとも部分的に応じて、少なくとも一つの新しい電圧を導き出すよう作動可能である。
【0038】
いくつかの実施例によれば、コントローラは、少なくとも部分的にランダムに、少なくとも一つの新しい電圧を導き出すよう作動可能である。 さて、次のものからなる、データ記憶のためのフラッシュメモリ・デバイスを初めて開示する。a)データ・ビットを記憶するための複数のフラッシュメモリ・セル、b)データ・ビットにおけるエラーを検出するためのエラー検出訂正モジュール、そしてc)フラッシュメモリ・セルからデータ・ビットを読み出すためのコントローラ。(I)コントローラは、i)複数のフラッシュメモリ・セルからデータ・ビットを読み出すこと、そしてii)前記エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正することによって、最初の読み出しリクエストに応答するよう作動可能である。
【0039】
また、(II)コントローラは、さらに、iii)少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出すことによって、以降の読み出しリクエストに応答するよう作動可能である。
【0040】
いくつかの実施例によれば、コントローラは、訂正後、かつ少なくとも一つの修正基準電圧を用いる読み出しの前に複数のメモリ・セルに書き込みを行うことなく、最初の、そして以降の読み出しリクエストに応答するよう作動可能である。
【0041】
いくつかの実施例によれば、コントローラは、エラー検出訂正モジュールが提供する情報に少なくとも部分的に応じて、少なくとも一つの修正基準電圧を導き出すよう作動可能である。
【0042】
さて、コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディアを初めて開示する。コンピュータで読み込み可能なコードは、コンピュータで読み取り可能な記憶メディア内に具現化され、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み出すための命令からなる。命令は、a)複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、b)エラー検出訂正モジュールを用いて、読み取ったデータ・ビットのエラーを訂正しようと試みる命令、c)エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールがエラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットの再読み出しを行う命令、d)訂正の後、モジュールがエラーの訂正に成功した少なくとも一つの読み出し基準電圧を記憶する命令、e)記憶の後、記憶した少なくとも一つの読み出し基準電圧を読み出す命令、そしてg)読み出し後、読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出す命令からなる。
【0043】
さて、コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディアを初めて開示する。コンピュータで読み込み可能なコードは、コンピュータで読み取り可能な記憶メディア内に具現化され、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み出すための命令からなる。命令は、a)複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、b)エラー検出訂正モジュールを用いて、読み取ったデータ・ビットのエラーを訂正しようと試みる命令、c)エラー検出訂正モジュールによるエラー訂正が失敗した読み出しの後、少なくとも一つの新しい読み出し基準電圧を導き出す命令、そしてd)導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出す命令からなる。
【0044】
コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディア。コンピュータで読み込み可能なコードは、コンピュータで読み取り可能な記憶メディア内に具現化され、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み出すための命令からなる。命令は、a)複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、b)エラー検出訂正モジュールを用いて、読み取ったデータ・ビットのエラーを訂正する命令、そしてc)訂正の後、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出す命令からなる。
【図面の簡単な説明】
【0045】
【図1A】大規模な個体数のメモリ・セル(従来の技術)のスレショルド電圧の分布を表すグラフである。
【図1B】大規模な個体数のメモリ・セル(従来の技術)のスレショルド電圧の分布を表すグラフである。
【図2】従来の技術としてのエラー回復スキーマを説明するフロー・チャートである。
【図3】本発明の典型的な実施例による、フラッシュメモリ・デバイスのブロック図である。
【図4】本発明の実施例としてのフラッシュ・デバイスによる、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。
【図5】本発明の実施例としてのフラッシュ・デバイスによる、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。
【図6】本発明の実施例としてのフラッシュ・デバイスによる、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。
【図7】本発明の実施例としてのフラッシュ・デバイスによる、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。
【発明を実施するための形態】
【0046】
これらの実施例および他の実施例を、以下で詳細に説明する。
【0047】
詳細な説明
さて、本発明を、特定の実施例に関して説明する。本発明が開示の実施例に限定されないことは理解すべきである。また、添付の請求項の特定な発明を実施するのに、ここに開示する、フラッシュメモリのエラーから復旧するための方法、デバイスおよびコンピュータで読み取り可能なコードのすべての特徴が必要であるというわけではないことも理解すべきである。本発明を完全に可能なものにするために、種々の素子およびデバイスの特徴を説明する。また、プロセスまたは方法を説明する本開示を通して、方法のステップは、ステップが、他のステップが最初に実行されることに依存していることが文脈から明白である場合を除き、どの順序で実行しても、または同時に実行してもよい、ということも理解すべきである。
【0048】
(図3のフラッシュメモリ・デバイス)
図3は、本発明の模範的な実施例によるフラッシュメモリ・デバイス50を表すブロック図である。フラッシュメモリ・デバイス50は、複数のフラッシュメモリ・セルおよびフラッシュ・コントローラ10を有するフラッシュメモリ30を含む。フラッシュ・コントローラ10は、フラッシュメモリ・セル30からデータを読み取るように作用し、また、オプションとして、フラッシュメモリ・セル30内へデータを書き込むように作用する。フラッシュ・デバイス50は、また、(図3に示すように)フラッシュ・コントローラ10の一部として、または別個のものとしてエラー検出訂正回路20を含む。フラッシュ・コントローラ10は、フラッシュ・デバイス50の外部から、例えば、ホスト・デバイス(図示せず)から受信した命令に従って、フラッシュメモリ30にアクセスしてもよい。
【0049】
(図4の説明)
図4は、本発明の実施例としてのフラッシュ・デバイス50による、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。読み出しリクエストを受信した110後、フラッシュ・コントローラ10は、一セットの基準電圧を用いて、フラッシュメモリ30からデータ・ビットを読み取る112C(例えば、デフォルトの基準電圧あるいは他のセットの基準電圧。このため、各メモリ・セルは、それぞれの基準電圧を用いて読み取る)。ECCを用いて、読み取ったデータ・ビットの訂正を試みる114。エラー訂正が成功した場合116、コントローラ10は、訂正されたデータを送信することによって、読み出しリクエストへ(例えば、ホスト・デバイスに)応答してもよい118。読み出しリクエストに応答した118後、デバイス50は、次の読み出しリクエストを処理することができる。
【0050】
もしエラー訂正が成功しなかった場合116、コントローラ10は、少なくとも一つの修正基準電圧を用いて120、フラッシュメモリからデータ・ビットを再び読み出してもよい112B(すなわち、少なくとも一つのこの電圧が、先の読み出しに用いたもの112Cと異なる)。再読み取り112Bの後、もう一度、追加のエラー訂正を試みる114。もしこのエラー訂正が成功しなかった場合116、コントローラ10は、少なくとも一つの修正基準電圧を用いて、さらにもう一回、メモリ・セル30からデータ・ビットを読み取ってもよい112B(すなわち、少なくとも一つのこの電圧が、先の読み出し112Bで用いたものと異なる)。修正電圧による再読み取り112Bおよびエラー訂正の試み114を、エラー訂正が成功する116まで繰り返す。
【0051】
この時点で、読み出しリクエストへの応答118を送信してもよい。そしてコントローラは、次の読み出しリクエストに応答する110ためにスタンバイする。注目すべきことは、図4で説明した実施例によれば、エラー訂正が成功した後、データがフラッシュメモリ・セル内へ再び書き込まれることがないことである。
【0052】
注目すべきは、図4では、エラー訂正プロセスは、修正基準電圧を用いて120少なくとも一回、フラッシュメモリ・セルを再び読み出す112Bことを含むことである。図4への必要条件ではないが、いくつかの実施例では、修正基準電圧の順番を予め決定しておいてもよく、繰り返す度に、所定基準電圧の異なるセットを用いてもよい。択一的に、例えば、フラッシュ・コントローラ10のマイクロプロセッサを用いて、一つ以上の修正基準電圧を計算してもよい。
【0053】
(図4に関する考察)
データを再書き込みしないので、以降の読み出しリクエストを処理するときに、最初の読み出しリクエストの処理で遭遇したと同じデータエラーが、もう一度、発生する傾向にある(すなわち、メモリ・セルを、再書き込みデータで若返らせて、デフォルト電圧を用いたエラー訂正の失敗率を減少させなかったためである)。したがって、デバイスは、次の読み出しリクエストを処理する際に、もう一度、エラー訂正プロシージャ(例えば、図4で説明したプロシージャ)を利用する必要がある。
【0054】
さて、本発明者は、多くの状況下で、フラッシュメモリ内へデータを再書き込みする(図2の124を参照)という時間のかかるステップを排除した(すなわち、より速い復旧プロシージャを発動する)スピードの利得が、複数回の読み出しの繰り返しに関する効率の損失、そして、読み出しエラーからのより頻繁な復旧の必要性を上回る可能性があることを、初めて開示する。したがって、本発明者は、図4のプロシージャが、平均で、図2のものよりも速い、多くの状況が存在することを開示する。
【0055】
(図5の説明)
図5は、本発明の実施例としてのフラッシュ・デバイス50による、一つ以上の読み出しリクエストの処理を説明するフロー・チャートである。読み出しリクエストを受信した110後、フラッシュ・コントローラ10は、一セットの基準電圧を用いて、フラッシュメモリ30からデータ・ビットを読み取る112C(例えば、デフォルト基準電圧あるいは他の基準電圧セット。したがって、各メモリ・セルは、それぞれの基準電圧を用いて読み取る)。ECCを用いて、読み取ったデータ・ビットの訂正を試みる114。エラー訂正が成功した場合116、コントローラ10は、訂正されたデータを送信することによって、読み出しリクエストへ(例えば、ホスト・デバイスへ)応答してもよい118。読み出しリクエストに応答した118後、デバイス50は、次の読み出しリクエストを処理するよう作動可能である。
【0056】
もしエラー訂正が成功しなかった場合116、コントローラ10は、少なくとも一つの修正基準電圧120を用いて、フラッシュメモリからデータ・ビットを再び読み出してもよい112B(すなわち、少なくとも一つのこの電圧は、先の読み出しの際に用いたもの112Cと異なる)。再読み取り112Bの後、追加のエラー訂正をもう一度試みる114。もしこのエラー訂正が成功しなかった場合116、コントローラ10は、少なくとも一つの修正基準電圧を用いて、さらにもう一度、メモリ・セル30からデータ・ビットを読み取ってもよい112B(すなわち、少なくとも一つのこの電圧は、先の読み出しの際に用いたもの112Bと異なる)。修正電圧による再読み取り112B、そしてエラー訂正の試み114を、エラー訂正が成功する116まで繰り返す。
【0057】
この時点で、読み出しリクエストへの応答を送信してもよい118。
【0058】
図5に表す実施例によれば、エラー訂正が成功した116後、(すなわち、復旧が成功した後)、これ以降の使用のために、一つ以上の「成功した」基準電圧130をメモリ内に記憶してもよい。
【0059】
以降の読み出しリクエストを受信したら110、これらの記憶基準電圧の(すなわち、先の読み出しリクエストの処理で復旧が成功した後に記憶した130)一つ以上を読み出し132、以降の読み出しリクエストを処理するためにフラッシュメモリを読み取る112Dに用いてもよい。
【0060】
図5に明示していないし、また、図5の制限でもないが、いくつかの実施例では、図4の場合のように、フラッシュ・セルから読み出した実際のデータを、フラッシュ・セル内へ再書き込みする必要がないことは評価できる。
【0061】
(図5の考察)
制限ではなく、図5は、図4の説明で上記に開示したことへの「改善」とみなしてよい。上記 図4の説明において、注目したことは、フラッシュメモリ・セルへデータを再書き込みしないので、(すなわち、時間のかかるフラッシュ書き込みオペレーションを避けるため)、以降の読み出しリクエストを処理するときに同じエラーに遭遇することになる(すなわち、再書き込みデータでメモリ・セルを若返らせて、デフォルト電圧を用いるエラー訂正の失敗の可能性を減少させることをしなかった)。
【0062】
図5のプロシージャは、エラー訂正後以降の読み出しリクエストに応答する際に必要となる読み取りの繰り返し数を減少させるのに有用である。より詳しくは、多くの状況において、記憶成功基準電圧(すなわち、直前の読み出しリクエストからのもの)が、以降の読み出しリクエストに適当な基準電圧の良好な第一近似値を提供する。したがって、エラー訂正後これらの基準電圧を記憶し、そして後にこれらの電圧を読み出すことによって、スピードに関してさらにもう一つの改善が達成できる。
【0063】
例えば、(単一の読み出し基準値を持つ)SBCフラッシュにおいて、特定なフラッシュ・セルに対する読み出し基準を、繰り返しの度に25ミリボルト修正する(すなわち、ステップ120)と仮定する。もし実際に起こったセルのスレショルド電圧のドリフトが100ミリボルトであるなら、データを読み取ろうとする最初の試み(すなわち、ステップ112C)は、5回の読み取り繰り返し後に成功することになる(デフォルト読み出し基準値が、許容安全域なしに、分布の端に非常に近いと単純に仮定している。この仮定は、通常、フラッシュメモリ・デバイスに該当しない)。読み出し成功後、100ミリボルトの値を、後の使用のために記憶する。
【0064】
以降、読み出しリクエストの受信後、そのデータを再び読み出す112Dとき、100ミリボルトの記憶値を取り出して使用する。一つの実施例(すなわち、図5に例示したようなもの)によれば、デフォルトの読み出しをスキップして、デフォルト値から100ミリボルト離れた基準から、読み出しを始めてもよい。択一的に、以降の読み出しリクエストを受信したら、デフォルト基準電圧を用いて最初の読み出しを試み、そしてデータを訂正できない場合にのみ、100ミリボルト・シフトさせた値で読み出しを試みてもよい。このように、5回の繰り返しではなく、1、2回の読み出し繰り返しのみのオーバーヘッドで済む。
【0065】
注目すべきことは、フラッシュメモリの種々のページに対する(すなわち、かなりの量の読み出しに対する)成功基準値を、揮発性メモリ、不揮発性メモリあるいはそれらの組み合わせ内に記憶してもよい130。例えば、成功基準値を、フラッシュ・コントローラ内のRAM内のテーブルに、あるいはフラッシュ・デバイス内に記憶してもよい130。RAM内への記憶は速いので効率的であるため、プロセスの速度を上げるという目的にかなっている。欠点は、一旦電源を切ってしまうと、記憶基準値が失われるということである。しかし、記憶値がメモリ・システム・オペレーションに必須なものでないため、これは許容できることである。もし、かなりの量のデータに関する記憶基準値が失われてしまったなら、そのかなりの量のデータに対する次の読み出しの際は、まず最初に、(例えば、図4に記載したような)低速で完全な反復プロセスを用いてもよい。しかし、データはなお、正しく読み出すことができる。
【0066】
(図6の説明および考察)
図4では、基準電圧の修正120のやり方に制限がないことに注目した。 図6においては、少なくとも一つの電圧を導き出す140、あるいは、特定な方法で(例えば、フラッシュ・コントローラ10のマイクロプロセッサを用いて)計算することを開示する。このセクションでは、一つ以上の基準電圧を導き出す、あるいは計算する140、二つの模範的なプロシージャを説明する。第一のプロシージャは、ECCモジュールが提供する情報によって、基準電圧を計算する140ことに関する。そして、第二のプロシージャは、ランダムに選択した電圧を用いて、基準電圧を導き出す140ことに関する。 図5あるい は図6に明示していないが、注意すべきことは、典型的に、データ回復後、フラッシュメモリ・セルへデータを再び書き込むことをしないことである。
【0067】
(基準電圧を導き出す140ための第一のプロシージャ)
いくつかの実施例(そして図6に例示するような例)においては、データ訂正に失敗したとき、ECCモジュールが提供する情報を有利に用いることができる。例えば、いくつかのECC方法は、訂正できないデータに関するエラーの重大度の指標を提供するように構成できる。この文脈におけるエラーの重大度は、典型的に、そのデータ内のエラー数を意味する。したがって、ECCモジュールには、正確なエラーは分からなくとも(しかも、それらの正確な数さえ分からなくとも)、エラー回数が大きいのか、あるいは小さいのかを示す情報は存在する。そのような情報を提供可能なECCモジュールを利用する場合、読み取り繰り返し数を減少させるように用いることができる。多数のエラーはスレショルド電圧の大規模なドリフトと相関があり、少数のエラーは小規模のドリフトと相関している、と予想することは合理的である。
【0068】
その最も単純な形態において、ECCモジュールが、バイナリの「大きな、あるいは小さなエラー回数」の標識のみを提供する場合、この実施例は、以下のとおりに作用する。第一のデフォルト値ベースの読み出しが失敗したとき、ECCモジュールに、エラーの重大度を尋ねる。それから、この重大度に基づいて決定した基準値を用いて、次の読み出しを試みる。多くのエラーがあるなら、基準値を大規模にシフトしてもよいし、エラーが少ないなら、小さなシフトでよい。このようにすれば、次の読み出しの試みが成功する可能性が高く、読み出しオペレーション毎の平均読み取り繰り返し数が減少する。
【0069】
注目すべきことは、(例えば、ECCモジュールが提供する情報から)繰り返しの各々に用いる基準電圧を導き出すことによって、基準電圧を予め定めないエラー訂正スキームを提供できることである。したがって、基準電圧の順序は、データの異なるページに対して異なってもよく、また、同じページに対する2回の読み出しオペレーションでさえ異なってもよい。
【0070】
基準電圧の予測が失敗した場合には、図4あるいは 図5で説明したスキーム、または他のスキームへ戻すことが常に可能であることは明らかである。
【0071】
(基準電圧を導き出す140ための第二のプロシージャ)
エラー訂正中、所定値を用いるよりむしろ、少なくとも一つの基準電圧をランダムに導き出す140ことが望ましい多くのケースがある。例えば、もしBCHあるいはハミング符号などの、多くの単純なECCスキームでそうであるように、ECCモジュールがエラーの重大度に関する情報を提供できない場合、データ・ビットから導き出した情報に応じて、読み出し基準電圧を選択することも可能である。したがって、値をランダムに用いることが望ましいこともある。異なるページ間で潜在するドリフト量の変化が大きい場合は、ランダム・セレクションが所定の選択よりも有利であるかもしれない。ランダム・セレクションを用いることによって、読み出しオペレーション毎の読み取り繰り返し数を平均化できるため、システム内に設置した特定のフラッシュ・デバイスに依存することの少ない、より安定な性能を提供できるかもしれない。
【0072】
(図7の説明および考察)
修正電圧(すなわち、所定修正電圧、あるいは「新しく」計算した電圧)を用いて、データ・セルを再び読み出すエラー訂正プロシージャを説明する。
【0073】
しかし、注目すべきは、本発明はまた、最初のデータ読み出しが成功した場合に対しても、フラッシュメモリ・セルからデータを読み出すためのプロシージャを提供することである。
【0074】
さて、図7を参照する。最初の読み出しリクエストを受信した110A後、所定セットの基準電圧(例えば、デフォルト基準電圧)を用いて、フラッシュ・データ・セルを読み取る112Cことに注意すべきである。読み取ったデータが、ECCを用いてうまく訂正された150ら、第一の読み出しリクエストへ応答してもよい118。
【0075】
第一のリクエスト110Aに応答してデータがうまく読み取られて訂正された(すなわち、エラー訂正ルーチンの必要がなかった)にもかかわらず、第二の読み出しリクエスト110Bに応答して、基準電圧を修正する。
【0076】
典型的に、基準電圧は、第一の読み出しリクエストで読み取ったデータを訂正した後、ECCが提供する情報に応じて修正する。しかし、これは限定ではない。特に、注目すべきは、ほとんどのECCスキームは、データ訂正が成功した場合、訂正エラー数に関する情報を提供することが可能であることである。したがって、「エラー訂正成功」の場合は、訂正が失敗の場合ほどに重大度はあまり高くないが、それでも訂正エラーに関する重大度の指標が利用できる。この指標に基づいて、重大度が、読み出し基準電圧の調整を正当化するのに十分に高いかどうかを判定してもよい。その調整が、同じデータの次の読み出しリクエストに対する出発点となる。調整値から始めれば、次の読み出しの際に、読み取りの繰り返しを一回以上少なくできる。 図5で説明した実施例のように、揮発性(例えばRAM)や不揮発性メモリ(例えばフラッシュメモリ)の組み合わせにおいて、種々のデータ・ページに用いる基準電圧を、後の使用のために記憶してもよい。
【0077】
したがって、データ・ビットの最初の読み出し112C後に、エラー検出訂正モジュールよるエラー訂正の失敗がなかったとしても、修正基準電圧を用いる読み出し112Bを実行してもよいことに注意すべきである。
【0078】
(模範的な実施例の全般的な考察)
上記のように、本発明の実施例は、フラッシュメモリ・デバイスからデータを読み取るための方法に関する。いくつかの実施例は、本文で説明した方法によって、フラッシュメモリ・セルのアレイから読み出すように作動可能なフラッシュメモリ・コントローラを提供する。いくつかの本発明の実施例は、フラッシュメモリ・セルのアレイを、ここに開示の方法でアレイから読み出すフラッシュメモリ・コントローラと組み合わせるフラッシュメモリ・デバイスを提供する。
【0079】
理解すべきことは、本発明は、SBCおよびMBCフラッシュメモリに等しく適用できることである。SBCセルでは、単一の読み出し基準電圧のみであるが、MBCセルにおいては、複数の読み出し基準電圧がある。ここに開示する、フラッシュメモリ・セルを読むためのプロシージャは、両ケースに採用できる。MBCケースでは、基準のシフトを、各基準電圧に平行に、あるいは別個に、すべての基準へ適用してもよい。
【0080】
(エラー訂正失敗の考察)
いくつかの実施例では、デバイスがECC失敗を示す(例えば、所定のサイズのデータ量毎の所定エラー数よりもエラーが多い)場合、「ECC失敗」イベントが発生する。しかし、これは本発明の限界ではない。例えば、ECCモジュールがエラー訂正成功を示す場合でも、実は、読み出したかなりの量のデータにおけるエラーの数および/あるいはタイプに関する代替の所定「エラー訂正失敗」基準によれば、「エラー訂正失敗」イベントが発生していることが分かることがある。
【0081】
したがって、本発明の実施例(そして特に 図3から図6で説明した実施例)は、フラッシュメモリ・コントローラ10が、ECCモジュールの判定基準とは異なる、「エラー訂正失敗イベント」を定義するための所定判定基準を用いるケースに関する。
【0082】
一例によれば、ECCモジュールがその最大エラー訂正能力近くで作動している場合は、ECCモジュールに依存することは望ましくない。例えば、ECCモジュールが、フラッシュメモリから読み出したデータ塊における四つのエラーまで訂正できると仮定する。この例によれば、三つ以下のエラーの訂正に関しては非常に信頼できるが、四つのエラーの訂正に関しては、信頼できないと仮定してもよい(すなわち、これは、エラー訂正失敗イベントに対する「所定判定基準」の例であり、データ塊毎のエラー数が所定値を上回っている)。これは、四つのエラーがあるときには、真のデータは、ECCモジュールが返すものではなく、それとは異なる何かである可能性がゼロではないためである。したがって、ECCが実際に訂正を提案できるという事実にもかかわらず、四つのエラーがあるケースを訂正失敗とみなして、より信頼できる読み出しを得るために、本発明のいくつかの(例えば、図4から図6に開示の)実施例が提供するエラー訂正技術を適用することを選択してもよい。したがって、模範的なケースは、本文で説明したいずれの実施例にも該当する。また、用語「エラーを訂正できない」は、「エラーを訂正できない、または訂正が、他の所定エラー基準によれば信頼できないと考えられる」ことを含む、と理解すべきである。
【0083】
本出願の説明文および請求項における動詞「なる」、「含む」および「持つ」、そして、それらの同根語の各々は、動詞の目的語あるいは複数の目的語が、必ずしも、動詞の主語あるいは複数の主語の、リストされた部材、コンポーネント、素子または部品のすべてを含むというわけではないことを示すために用いている。
【0084】
本文におけるすべての引用文献は、参照によって、それらの全体が含まれる。参考文献からの引用は、その参照が従来の技術であると認めることを意味しない。
【0085】
不定冠詞「a」および「an」は、または、その冠詞の文法的対象の一つ以上(すなわち、少なくとも一つ)に言及するために、本文で用いている。例証として、「素子」は、一つの素子あるいは複数の素子を意味する。
【0086】
用語「含む」は、表現「含むが、これに限定されるものではない」を意味するために本文で用いており、その表現と置き換えて用いることができる。
【0087】
用語「または」は、用語「および/または」を意味するために本文で用いており、前後関係がそれを指示しないことが明らかでない限り、その用語と置き換えて用いることができる。
【0088】
用語「例えば」は、表現「例えば、しかしそれに限定しない」を意味するために本文で用いており、その表現と置き換えて用いることができる。
【0089】
実施例の詳細な説明を用いて、本発明を説明したが、それらは、例として提供したもので、発明の範囲を限定することを意図していない。説明した複数の実施例は、異なる特徴からなるが、それらのすべてが、本発明のすべての実施例に必要というわけではない。本発明のいくつかの実施例は、いくつかの特徴のみを利用する、または特徴の組み合わせを利用するものである。同業者は、説明した本発明の種々の実施例、そして説明した実施例で注目した特徴の異なる組み合わせからなる本発明の実施例を思いつくであろう。

【特許請求の範囲】
【請求項1】
複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステムにおいて、
a)複数のフラッシュメモリ・セルからデータ・ビットを読み取ること、
b)エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みること、
c)エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールが前記エラーの訂正を成功させるまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットの再読み出しを行うこと、
d)前記訂正の後に、モジュールが前記エラーの訂正に成功したときの少なくとも一つの読み出し基準電圧を記憶すること、
e)前記記憶の後に、前記記憶した少なくとも一つの読み出し基準電圧を読み出すこと、そして
g)前記読み出しの後、前記読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み取ることからなる、データを読み取る方法。
【請求項2】
少なくとも一つの前記読み出した基準電圧が、揮発性メモリ内に記憶される、請求項1の方法。
【請求項3】
少なくとも一つの前記読み出した基準電圧が、不揮発性メモリ内に記憶される、請求項1の方法。
【請求項4】
少なくとも一つの前記読み出した基準電圧が、一つ以上のフラッシュメモリ・セル内に記憶される、請求項1の方法。
【請求項5】
前記読み取ったデータ・ビットが、フラッシュコントローラを用いて読み取られ、そして少なくとも一つの前記読み出した基準電圧が、前記フラッシュコントローラ内に記憶される、請求項1の方法。
【請求項6】
前記記憶の前の最初の前記読み取りが、最初の読み出しリクエストに応答したものであり、そして前記読み出した少なくとも一つの読み出し基準電圧を用いる以降の読み取りが、以降の読み出しリクエストに応答したものである、請求項1の方法。
【請求項7】
複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステムにおいて、
a)複数のフラッシュメモリ・セルからデータ・ビットを読み取ること、
b)エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みること、
c)エラー検出訂正モジュールによるエラー訂正が失敗した前記読み取り以降、少なくとも一つの新しい読み出し基準電圧を導き出すこと、そして
d)前記導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットを読み出すことからなる、データを読み取る方法。
【請求項8】
前記導き出した少なくとも一つの新しい電圧が、少なくとも部分的にエラー検出訂正モジュールが提供する情報に応じて決定される、請求項7の方法。
【請求項9】
前記導き出した少なくとも一つの新しい電圧が、少なくとも部分的にランダムに決定される、請求項7の方法。
【請求項10】
複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステムにおいて、
a)複数のフラッシュメモリ・セルからデータ・ビットを読み取ること、
b)エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正すること、そして
c)前記訂正の後、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットを読み出すことからなる、データを読み取る方法。
【請求項11】
前記訂正の後、かつ前記少なくとも一つの修正基準電圧を用いた前記読み出しの前に、複数のメモリ・セルが書き込まれることがない、請求項10の方法。
【請求項12】
少なくとも一つの前記修正基準電圧は、少なくとも部分的にエラー検出訂正モジュールが提供する情報に応じて導き出される、請求項10の方法。
【請求項13】
前記訂正の前の最初の前記読み取りが、最初の読み出しリクエストに応答したものであり、そして前記訂正の後の前記以降の読み取りが、以降の読み出しリクエストに応答したものである、請求項10の方法。
【請求項14】
データ記憶のためのフラッシュメモリ・デバイスであって、
a)データ・ビットを記憶するための複数のフラッシュメモリ・セル、
b)前記データ・ビットにおけるエラーを検出して訂正するためのエラー検出訂正モジュール、そして
c)前記フラッシュメモリ・セルから前記データ・ビットを読み取るためのコントローラからなり、前記コントローラが、
i)複数のフラッシュメモリ・セルからデータ・ビットを読み取ること、
ii)前記エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みること、
iii)エラー検出訂正モジュールによるエラー訂正が失敗した場合、前記モジュールが前記エラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、前記複数のフラッシュメモリ・セルからデータ・ビットの再読み出しを行うこと、そして
iv)前記訂正の後に、モジュールが前記エラーの訂正に成功したときの少なくとも一つの読み出し基準電圧を記憶することによって、最初の読み出しリクエストに応答するよう作動可能であり、また、前記記憶の後、前記コントローラが、さらに、
i)前記記憶した少なくとも一つの読み出し基準電圧を読み出すこと、そして
ii)前記読み出しの後、前記読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み取ることによって、以降の読み出しリクエストに応答するよう作動可能である、フラッシュメモリ・デバイス。
【請求項15】
前記コントローラが、揮発性メモリに、少なくとも一つの前記読み出し基準電圧を記憶するよう作動可能である、請求項14のデバイス。
【請求項16】
前記コントローラが、不揮発性メモリに、少なくとも一つの前記読み出し基準電圧を記憶するよう作動可能である、請求項14のデバイス。
【請求項17】
前記コントローラが、一つ以上の前記フラッシュメモリ・セルに、少なくとも一つの前記読み出し基準電圧を記憶するよう作動可能である、請求項14のデバイス。
【請求項18】
前記コントローラが、前記コントローラ内に、少なくとも一つの前記読み出し基準電圧を記憶するよう作動可能である、請求項14のデバイス。
【請求項19】
データ記憶のためのフラッシュメモリ・デバイスであって、
a)データ・ビットを記憶するための複数のフラッシュメモリ・セル、
b)前記データ・ビットにおけるエラーを検出するためのエラー検出訂正モジュール、そして
c)前記フラッシュメモリ・セルから前記データ・ビットを読み取るためのコントローラからなり、前記コントローラが、
i)前記データ・ビットを複数のフラッシュメモリ・セルから読み取ること、
ii)エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みること、
iii)エラー検出訂正モジュールによるエラー訂正が失敗した前記読み取り以降、少なくとも一つの新しい読み出し基準電圧を導き出すこと、そして
iv)前記導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットを読み出すことによって、読み出しリクエストに応答するよう作動可能である、フラッシュメモリ・デバイス。
【請求項20】
前記コントローラが、少なくとも部分的にエラー検出訂正モジュールが提供する情報に応じて前記少なくとも一つの新しい電圧を導き出すよう作動可能である、請求項19のデバイス。
【請求項21】
前記コントローラが、少なくとも部分的にランダムに前記少なくとも一つの新しい電圧を導き出すよう作動可能である、請求項19のデバイス。
【請求項22】
データ記憶のためのフラッシュメモリ・デバイスであって、
a)データ・ビットを記憶するための複数のフラッシュメモリ・セル、
b)前記データ・ビットにおけるエラーを検出するためのエラー検出訂正モジュール、そして
c)前記フラッシュメモリ・セルから前記データ・ビットを読み取るためのコントローラからなり、前記コントローラが、
i)複数のフラッシュメモリ・セルからデータ・ビットを読み取ること、そして
ii)前記エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正することによって、最初の読み出しリクエストに応答するよう作動可能であり、また、前記コントローラが、
iii)少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み出すことによって、以降の読み出しリクエストに応答するよう作動可能である、フラッシュメモリ・デバイス。
【請求項23】
前記コントローラが、前記訂正の後、かつ前記少なくとも一つの修正基準電圧を用いる前記読み取りの前に、前記複数のメモリ・セルに書き込むことなく、前記最初の、そして前記以降の読み出しリクエストに応答するよう作動可能である、請求項22のデバイス。
【請求項24】
前記コントローラが、少なくとも部分的に前記エラー検出訂正モジュールが提供する情報に応じて、少なくとも一つの前記修正基準電圧を導き出すよう作動可能である、請求項22のデバイス。
【請求項25】
コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、前記コンピュータで読み込み可能なコードが前記コンピュータで読み取り可能な記憶メディア内に具現化されており、前記コンピュータで読み込み可能なコードが、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための命令からなり、前記命令が、
a)複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、
b)エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みる命令、
c)エラー検出訂正モジュールによるエラー訂正が失敗した場合、モジュールが前記エラーの訂正に成功するまで、少なくとも一度、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットの再読み出しを行う命令、
d)前記訂正の後、モジュールが前記エラーの訂正に成功したときの少なくとも一つの読み出し基準電圧を記憶する命令、
e)前記記憶の後、前記記憶した少なくとも一つの読み出し基準電圧を読み出す命令、そして
g)前記読み出しの後、前記読み出した少なくとも一つの読み出し基準電圧を用いて、複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令からなる、コンピュータで読み取り可能な記憶メディア。
【請求項26】
コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、前記コンピュータで読み込み可能なコードが前記コンピュータで読み取り可能な記憶メディア内に具現化されており、前記コンピュータで読み込み可能なコードが、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための命令からなり、前記命令が、
a)複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、
b)エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正しようと試みる命令、
c)エラー検出訂正モジュールによるエラー訂正が失敗した前記読み取り以降、少なくとも一つの新しい読み出し基準電圧を導き出す命令、そして
d)前記導き出した少なくとも一つの新しい読み出し基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットを読み出す命令からなる、コンピュータで読み取り可能な記憶メディア。
【請求項27】
コンピュータで読み込み可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、前記コンピュータで読み込み可能なコードが前記コンピュータで読み取り可能な記憶メディア内に具現化されており、前記コンピュータで読み込み可能なコードが、複数のフラッシュメモリ・セルおよびエラー検出訂正モジュールからなるシステム内のデータを読み取るための命令からなり、前記命令が、
a)複数のフラッシュメモリ・セルからデータ・ビットを読み取る命令、
b)エラー検出訂正モジュールを用いて、前記読み取ったデータ・ビットのエラーを訂正する命令、そして
c)前記訂正の後、少なくとも一つの修正基準電圧を用いて、複数のフラッシュメモリ・セルから前記データ・ビットを読み出す命令からなる、コンピュータで読み取り可能な記憶メディア。

【図1A】
image rotate

【図1B】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2011−238346(P2011−238346A)
【公開日】平成23年11月24日(2011.11.24)
【国際特許分類】
【出願番号】特願2011−133901(P2011−133901)
【出願日】平成23年6月16日(2011.6.16)
【分割の表示】特願2008−537310(P2008−537310)の分割
【原出願日】平成18年10月24日(2006.10.24)
【出願人】(502111536)サンディスク アイエル リミテッド (64)
【住所又は居所原語表記】Central Park 2000,Atir Yeda Street 7,44425 Kfar Sabad,Israel
【Fターム(参考)】