(57)【要約】ＮＡＮＤフラッシュメモリなどの不揮発性集積回路メモリデバイス（１０６）からデータを読み出すような、装置ならびに方法。例えば、開示された技術は、オペレーティングシステム（１０４）のデバイスドライバ（１１０）に具体化され得る。エラーは、読み出し操作中、追跡記録される。読み出し操作中に十分なエラーが生じた場合（２０４）には、ブロックが消去されることを要求される時、もしくはブロックのページが書き込まれる時、そのブロックは排除される（２１０）、（２１２）、（２１４）、（３１０）。ある実施形態は、訂正不可能なエラーからデータを回復するための技術である。例えば、読み出しモードは、データの回復を図るためのより信頼性の高い読み出しモードに変更され得る（４１０）。ある実施形態は、誤り訂正符号データの復号によりデータが訂正可能であったか否か（４３０）に関わらず、メモリデバイス（１０６） からのデータを再び返す。
2010529557.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性集積回路メモリデバイスのブロックを監視する方法であって、
前記メモリデバイスの前記ブロックのデータページが少なくとも１つのエラーを伴って読み出されたか否かを判定するために誤り訂正符号を復号するステップと、
少なくとも、前記ページが少なくとも１つのエラーを伴って読み出された時に、読み出された前記ページに対応する前記メモリデバイスの前記ブロックに対するエラーの履歴を保存するステップとを含み、前記ブロックを早期に排除すべきか否かを表示するために前記エラーの履歴が使用される、方法。
【請求項２】
前記履歴を保存するステップは、
前記少なくとも１つのエラーが１つのエラーに対応することを判定するステップに少なくとも一部は応じてインクリメントされるカウントを保存するステップをさらに含み、 
前記ブロックに対する早期の排除は、前記カウントが閾値に達することに応じて表示される、
請求項１の方法。
【請求項３】
前記メモリデバイスを使用するデバイスの起動と同時に 前記カウントをリセットするステップをさらに含む、請求項２の方法。
【請求項４】
前記履歴を保存するステップは、
前記ブロックの前記ページを読み出す時に複数のエラーに直面する場合に、前記ブロックに対する早期の排除を表示するために前記履歴を更新するステップをさらに含み、
訂正されていないデータと訂正されたデータを比較することにより、エラー数のカウントが判定される、請求項１の方法。
【請求項５】
前記履歴を保存するステップは、
前記履歴のためのカウントを少なくとも閾値にセットするステップを含み、
前記カウントが少なくとも前記閾値に達する場合、早期排除の対象として前記ブロックが表示される、請求項１の方法。
【請求項６】
前記少なくとも１つのエラーは、訂正不可能である複数のエラーを含み、
前記データの回復を図るデータ回復プロセスを起動するステップをさらに含む、請求項１の方法。
【請求項７】
前記少なくとも１つのエラーは、誤り訂正符号（ＥＣＣ）の復号によっては訂正不可能である複数のエラーを含み、
前記ページは、第１の読み出しモードを使用して読み出され、
さらに、異なる読み出しモードに変更するステップと、前記ページを再読み出しするステップとを含む、請求項１の方法。
【請求項８】
前記少なくとも１つのエラーは訂正不可能なエラーを含み、１つの訂正不可能なエラーが読み出される場合であっても、成功している読み出し操作のステータスをオペレーティングシステムに返すステップをさらに含む、請求項１の方法。
【請求項９】
前記メモリデバイスの前記ブロックに対する前記エラーの履歴を、前記メモリデバイス自身とは異なるデバイス上に保存するステップをさらに含む、請求項１の方法。
【請求項１０】
前記メモリデバイスは、ＮＡＮＤフラッシュメモリデバイスを含む、請求項１の方法。
【請求項１１】
前記方法は、オペレーティングシステムにより実施される、請求項１の方法。
【請求項１２】
不揮発性集積回路メモリデバイスのためのブロックを管理する方法であって、
メモリのブロックを消去するコマンド、もしくは前記メモリのブロックのページに書き込むコマンドを受信するステップと、
前記ブロックの１つ以上のページに対する読み出し操作に関連するエラーの履歴に少なくとも一部は基づいて、消去もしくは書き込みを停止するステップとを含む、方法。
【請求項１３】
前記ブロックの以前に書き込まれたページを再要求するステップと、
そのステップの後に、前記ブロックの使用を停止するステップとをさらに含む、請求項１２の方法。
【請求項１４】
前記停止するステップは、前記ブロックを不良としてマーキングするために、前記メモリデバイス中の不良ブロックテーブルに前記ブロックを追加するステップを含む、請求項１２の方法。
【請求項１５】
前記ブロックの１つ以上のページに対する読み出し操作中に直面したエラーのカウントを調べるステップをさらに含む、請求項１２の方法。
【請求項１６】
不揮発性集積回路メモリデバイスからデータページにアクセスする方法であって、
前記メモリデバイスから前記データページの読み出しを要求するステップと、
前記ページに関連する誤り訂正符号（ＥＣＣ）を調べるステップと、
前記データページが何らかの訂正不可能なエラーを含んだか否かに関わらず、前記データページが正確に読み出されたことを表示するステータスをオペレーティングシステムに供給するステップとを含む、方法。
【請求項１７】
少なくとも、第１の読み出しのオペレーションモード、および前記第１の読み出しのオペレーションモードよりも低速の第２の読み出しのオペレーションモードが、前記デバイスからデータを読み出すために選択可能であり、
前記ページの前記読み出しを要求するステップは、
前記第１の読み出しのオペレーションモードを使用して実施された最初の読み出しの復号が、訂正不可能なエラーであったことを判定するステップと、 
前記第１の読み出しのオペレーションモードから、前記第２の読み出しのオペレーションモードに変更するステップと、
前記ページの再読み出しを要求するステップとをさらに含む、請求項１６の方法。
【請求項１８】
前記第１の読み出しのオペレーションモードは、ダイレクトメモリアクセス（ＤＭＡ）を含み、
前記第２の読み出しのオペレーションモードは、アクセスを制御するためのマイクロプロセッサの使用を含む、請求項１７の方法。
【請求項１９】
ループカウンタに少なくとも一部は基づいて、前記ページの再読み出しを要求するか否かを判定するステップをさらに含む、請求項１７の方法。
【請求項２０】
タイマーに少なくとも一部は基づいて、前記ページの再読み出しを要求するか否かを判定するステップをさらに含む、請求項１７の方法。
【請求項２１】
オペレーティングシステムのドライバにより前記方法を実施するステップをさらに含む、請求項１６の方法。
【請求項２２】
不揮発性集積回路メモリデバイスのブロックを表示するための１つ以上の表示を保存する方法であって、
前記メモリのブロックの少なくとも１つのページに関して実施された、少なくとも１つの読み出し操作の一環として検出されたエラーが、誤り訂正符号の復号を通じて、訂正可能ではないことを判定するステップ、または、
前記ブロックに対する以前の読み出し操作中に少なくとも１つのエラーが生じたことを、前記メモリデバイスの前記ブロックに対して収集されたエラーの履歴が表示することを判定するステップ、
のうちの少なくとも１つに少なくとも一部は応じて、前記ブロックの再消去もしくは再プログラミングを阻止するステップを含む、方法。
【請求項２３】
不揮発性集積回路メモリデバイスのブロックを監視するための装置であって、
前記メモリデバイスの前記ブロックのデータページが少なくとも１つのエラーを伴って読み出されたか否かを判定するために誤り訂正符号を復号するように構成されたモジュールと、
少なくとも、前記ページが少なくとも１つのエラーを伴って読み出された時に、読み出された前記ページに対応する前記メモリデバイスの前記ブロックに対するエラーの履歴を保存するよう構成されたモジュールとを含み、前記ブロックを早期に排除すべきか否かを表示するために前記エラーの履歴が使用される、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、広くは集積回路に関する。特に、実施形態は、メモリ回路のためのソフトウェアあるいはハードウェアに関する。
【背景技術】
【０００２】
フラッシュメモリは、消去可能で、かつプログラム可能な不揮発性の集積回路メモリの一形態である。フラッシュメモリにおいて、メモリセルは、消去対象である「ブロック」に配置される。ブロックが消去された後、そのブロックは、必要に応じてプログラミングできる状態になっている。ＮＯＲフラッシュメモリは、データの検索に際して個々のバイトへのアクセスを実現するタイプのフラッシュメモリであるが、比較的低密度である。
【０００３】
ＮＡＮＤフラッシュメモリは、比較的高密度を実現する タイプのフラッシュメモリである。高密度性は、一つには、直列につながれたセルの列を形成することにより得られる。また、ＮＡＮＤフラッシュメモリを用いると、データは、データページなど、比較的大きなバイトのグループでプログラムされ、かつアクセスされる。例えば、１ページは、アレイ中の１行もしくは１行の一部に対応し得る。
【０００４】
データは通常、一度に１データ「ページ」 がＮＡＮＤフラッシュメモリアレイに書き込まれ、かつ、そこから読み出される。例えば、１ページは、２，１１２バイトを有し得、このうち、２，０４８バイトがデータバイトであり、６４バイトがスペアバイトである。スペアバイトは、誤り 訂正符号（ＥＣＣ）、ウェアレベリング情報、もしくはその他のオーバヘッドデータのために一般的には使用される。誤り訂正符号は、格納されたデータのロバスト性を向上させる。一般的には、ブロック符号の一形式が誤り訂正符号を生成するために使用され、巡回冗長検査（ＣＲＣ）チェックサム、ハミング符号、リードソロモン誤り訂正、またはその他の同種のものなどが使用される。これらの誤り訂正符号は、データバイトの読み出しにエラーがあるか否かを検出し、かつ、誤り訂正符号の能力をそのエラーが上回らないという条件で、通常、データバイト中のエラーを訂正し得る。
【０００５】
フラッシュメモリは、多くの用途を有する。例えば、フラッシュメモリ・ハードドライブ（ハードドライブの代替品）、ＵＳＢフラッシュドライブもしくはサムドライブ、携帯電話、デジタルカメラ、デジタルメディアプレイヤー、ゲーム、メモリカード、ナビゲーション装置、携帯情報端末、コンピュータ、またはその他の同種のものが挙げられる。誤り訂正符号は、データバイト中のデータの多くのエラーをその限界内で訂正し得る。しかしながら、その限界を超えると、エラーを伴うデータは、通常訂正され得ない。従来技術の短所の１つは、エラーが訂正不可能になるまでに手遅れになることが多いことである。
【０００６】
データの格納にフラッシュメモリを使用するデバイスの多くは、オペレーティングシステムをも使用する。オペレーティングシステムは、ハードウェアとその他のソフトウェアとの間の抽象化レイヤとしての機能を果たす。例えば、オペレーティングシステムのファイルシステムおよびデバイスドライバは、一般的に、メモリデバイスに格納されたデータへのアクセスを与える 。オペレーティングシステム内には追加のレイヤがあり得る。
【０００７】
図１は、ＣＰＵ１０２、オペレーティングシステム１０４、およびメモリデバイス１０６の形式のマイクロプロセッサを含む処理環境の一部を例示する。メモリデバイス１０６は、ＮＡＮＤフラッシュメモリデバイスであってよい。オペレーティングシステム１０４は、ファイルシステム１０８およびデバイスドライバ１１０をさらに含む。オペレーティングシステム１０４が、１つより多くのファイルシステム、１つより多くのデバイスドライバ、ならびに本議論に関連しないその他の構成要素に対するサポートを有し得ることは当然である。ＤＲＡＭなどの揮発性メモリデバイス１１４、およびダイレクトメモリアクセス（ＤＭＡ）コントローラ１１６も同様に図示されている。
【０００８】
ＣＰＵ１０２は、命令を実行するが、その命令は、オペレーティングシステム１０４のコード を含む。ファイルシステム１０８のコードは、メモリデバイス１０６に対する論理アドレスなどの低水準の情報と、ファイル名およびディレクトリなどの高水準の情報との間の抽象化をもたらす。デバイスドライバ１１０に対するコードは、一般的にはメモリデバイス１０６との間のデータ転送のための低水準の情報を処理する。デバイスドライバ１１０は、（Processor  Input/Outputとして周知の）メモリデバイス１０６に直接アクセスするためのコードをＣＰＵ１０２に提供し得、あるいは、メモリデバイス１０６との間でデータが転送されるようにＤＭＡコントローラ１１６を起動してバスの制御を処理するコードを提供し得る。ＤＭＡコントローラ１１６の使用は、その他のタスクを処理すべく、ＣＰＵ１０２を解放する。
【０００９】
Processor Input/Output（ＰＩＯ）およびＤＭＡ Input/Outputの両者を用いて、デバイスドライバ１１０は、書き込み操作および読み出し操作に関連するＥＣＣ情報を処理し得る。多くのオペレーティングシステムでは、様々な異なるタイプのメモリデバイスへの読み出しおよび書き込みをサポートするために、多数のデバイスドライバが存在する。ファイルシステム１０８によるマッピングに加えて、注目すべきは、多くのＮＡＮＤフラッシュメモリデバイスが、不良ブロック管理およびウェアアウト管理のために、論理アドレスと物理アドレス間で、フラッシュ変換レイヤと称される仮想マッピングを利用することである。
【図面の簡単な説明】
【００１０】
本願の図面および関連する記述は、発明の具体的な実施形態を説明するために提供され、限定することを目的としていない。
【００１１】
【図１】ＣＰＵ、オペレーティングシステム、およびメモリデバイスを含む処理環境を図示する。
【図２】メモリデバイスからデータページを読み出すためのプロセスの実施形態を概略的に説明するフローチャートである。
【図３】劣化したブロックの事前排除 （retirement）のためのプロセスの実施形態を概略的に説明するフローチャートである。
【図４】訂正不可能なエラーを有すると判定されたデータを回復するためのプロセスの実施形態を概略的に説明するフローチャートである。
【発明を実施するための形態】
【００１２】
装置ならびに方法は、ＮＡＮＤフラッシュなどの不揮発性集積回路のメモリデバイスからデータを読み出す。例えば、これらの技術は、オペレーティングシステムのデバイスドライバに具体化され得る。エラーの履歴の少なくとも一部は、読み出し操作中、保存（例えば、追跡記録）される。ページに対する読み出し操作は、通常、そのページに対応するブロックに対する消去操作もしくはそのページのプログラミングと比較して、はるかに高頻度に生じる。これらの読み出し操作中に直面し、かつ追跡記録されたエラーは、読み出されているページおよびブロックの信頼性を判定する指標となり得る。
【００１３】
読み出し操作中に十分なエラーが生じた場合、ブロックは、その結果、排除（retirement）の対象として表示（例えば、指定）される。例えば、消去もしくは書き込み（プログラム）を要求される時に不良ブロックテーブルにそのブロックを追加することにより、ブロックは排除され得る。
【００１４】
ある実施形態は、訂正不可能なエラーからデータを回復するための技術を含む。例えば、読み出しモードは、データの回復を図るためのより信頼性の高い読み出しモードに変更され得る。この読み出しモードは、頻度の低い（less aggressive）タイミングをとり得る 。ある実施形態は、誤り訂正符号データの復号によりデータが訂正されたか否かに関わらず、メモリデバイスからのデータを再び返す。一般的に破滅的に機能しなくなるハードディスクデバイスとは対照的に、集積回路のメモリデバイスは、ビット不良（bit failure）が一般的には少なく、誤り訂正が機能しない場合でも大部分のデータを使用可能なままにする。
【００１５】
開示した技術を具体化するオペレーティングシステムのためのデバイスドライバは、ソフトウェアで（コードで）、ハードウェアで（モジュールで）、またはソフトウェアとハードウェアの組み合わせで具体化され得る。また、ＮＡＮＤフラッシュメモリとの関連で記述されているが、本明細書に記述される原理および長所は、不揮発性集積回路の他の形態にも同様に適用可能であろう。本明細書に記述される利点および特徴の全てを備えるわけではない実施形態を含む、その他の発明の実施形態は、当業者に明らかであろう。
【００１６】
図２は、メモリデバイス１０６（図１）からデータページを読み出し、かつ、エラーの履歴を保存するためのプロセスを概略的に説明するフローチャートである。ある実施形態では、そのプロセスは、オペレーティングシステムのデバイスドライバ１１０（図１）により実施され、かつ、メモリデバイス１０６は、ＮＡＮＤフラッシュメモリデバイスである。図示されたプロセスが様々な方法で変更され得ることは、当業者にとって当然である。例えば、別の実施形態では、図示されたプロセスの各種部分を組み合わせてもよく、別の順序に並べ直してもよく、除外するなどしてもよい。プロセスの開始に当たり、対応する誤り訂正符号データと共に、メモリデバイスにはデータが既に格納されているものとする。
【００１７】
図示したプロセスの実施形態は、メモリデバイス１０６（図１）のブロックの１ページの読み出しに関して概略的に記述される。カウンタは、ブロックに対するエラーの履歴を保存するために使用される。メモリデバイス１０６は、多数のブロックを有し、かつ、エラーの追跡記録のために、ブロックごとに１つのカウンタを有し得る。ある実施形態では、（複数の）カウンタを格納するためにカウンタアレイが使用される。ブロックに対するカウンタが（値10などの設定された値であり得る）特定の閾値レベル、ＭＡＸに達すると、プロセスは、そのブロックを早期に排除すべきであると判定する。例えば、図３に関連してより詳細に後述するように、ブロックが消去される予定の時、もしくはブロックのページが書き込まれる予定の時に、そのブロックは排除され得る。カウンタを格納するために、揮発性あるいは不揮発性のメモリが使用され得る。しかしながら、ロバスト性に関しては、メモリデバイス１０６それ自身とは異なるデバイスにこの種の情報を格納させることが一般的には好ましい。ある実施形態では、履歴が起動と同時にリセットされるように、カウンタが起動と同時にゼロにリセットされる。このリセットは、ブロックの突然の劣化に対して比較的速い応答をもたらす。
【００１８】
プロセスは、メモリデバイス１０６（図１）の特定のページの読み出しに対する要求を受信することにより開始する。その要求は、ファイルシステム１０８（図１）からなど、デバイスドライバ１１０（図１）よりもオペレーティングシステム１０４（図１）の上層からのサブルーティンコールを介してもよい。プロセスは、低水準の命令を使用して特定のページを要求し（２０２）、この低水準の命令は、例えば、メモリデバイス１０６と通信することをＣＰＵ１０２に許可するためのマシンコード、または、メモリデバイス１０６と通信するようＤＭＡコントローラ１１６に命令するためのＣＰＵ１０２に対する命令などである。メモリデバイス１０６は、（複数の） メモリアレイに内部アクセスし、かつ、ページのデータを提供する。エラーが存在し、かつ訂正可能である場合、何らかのエラーがあったかどうかを検出するため、またエラーを訂正するために、ＥＣＣデータが復号される。ＥＣＣの復号は、ソフトウェアの機能 あるいはハードウェアの機能であってよい。ある実施形態では、ＥＣＣの符号化および復号は、デバイスドライバ１１０により実施される機能である。別の実施形態では、ＥＣＣの符号化および復号は、ＤＭＡコントローラ１１６の機能である。
【００１９】
ページが読み出された場合、プロセスは、１つ以上のエラーが検出されたか否かを判定する（２０４）。エラーは、訂正可能であるか、訂正不可能であるかもしれない。エラー検出のプロセス中に、エラーに全く直面しなかった場合、プロセスは、（そのページに対応するブロックに対するカウンタを更新せずに）終了へと進み、かつ、ファイルシステム１０８（図１）などのデバイスドライバ１１０（図１）の呼び出しているルーティンに「ＯＫ」のステータスを返す。要求されたデータはメモリデバイス１０６（図１）の出力バッファで得られ、データバスに対する論理アドレスにおいて、例えば別のバッファなどの別の位置に転送され得る。
【００２０】
（複数の）エラーが発生しているとプロセスが判定する場合（２０４）、プロセスは、誤り訂正符号（ＥＣＣ）データの復号を通じて、その（複数の）エラーが訂正可能か否かの判定へと進む（２０６）。（複数の）エラーがＥＣＣの限界内で訂正可能である場合、プロセスは、（複数の）エラーがどの程度訂正されているかの判定へと進む（２０８）。例えば、ある実施形態では、（複数の）エラー数のカウントを得るために、プロセスは、訂正されていないデータを訂正されたデータと比較する。一方、誤り訂正符号による訂正に対してエラー が非常に多い場合には、プロセスは、早期排除の対象としてブロックを表示する（２１０）。ある実施形態では、早期排除の指標となるよう、カウンタは閾値、ＭＡＸにセットされる（２１０）。ブロックが早期に排除されるべきであると表示することは、そのブロックを実際に排除することと同じではない。
【００２１】
不良ブロックテーブルにブロックを追加するなど、そのブロックを不良としてマーキングすることにより、ブロックは排除され得る。不良ブロックテーブルは、典型的にはメモリデバイス１０６（図１）自身に格納される。しかしながら、そのブロックからデータがもはや要求されなくなるまで、そのブロックはまだ不良とマーキングされるべきではない。ブロックを不良とマーキングすることで、そのブロックへの読み出しアクセスが阻止される。従って、ある実施形態では、図３に関連してより詳細に後述するように、消去操作が要求されるか、もしくは書き込み操作が要求されるまで、プロセスはブロックを不良とマーキングするのを待機する。ある実施形態では、プロセスは、ファイルシステム１０８（図１）などの呼び出しているルーティンにエラーを返し、その後ブロックを排除するためのプロシージャを開始する。
【００２２】
ある実施形態では、データの回復を図るために、早期排除を表示する状態２１０から、データ回復プロセスへとプロセスは進む 。そのようなデータ回復プロセスの一実施形態が、図４に関連してより詳細に後述される。別の実施形態では、プロセスは、早期排除を表示する状態２１０から進んで、ファイルシステム１０８（図１）などのデバイスドライバの呼び出しているルーティンに「読み出しエラー」のステータスを返して終了する。
【００２３】
ここで、（複数の）エラーが訂正され得るか否かの判定２０６に戻ると、（複数の）エラーが訂正され得る場合には、プロセスは、ＥＣＣがその（複数の）エラーをどの程度訂正したかを判定する（２０８）。エラーの数が比較的少数とみなされるか、あるいは比較的多数とみなされるかは、特定のメモリデバイス１０６（図１）のページサイズおよび特性に従い得る。 当業者によって、適切な閾値が容易に決定され得る。さらに、図示された判定２０８は、２項、すなわち２つの判定が考えられるが、１つ以上の中間レベルも同様に使用され得ることは当然である。
【００２４】
ある実施形態では、２，０４８バイトのページ（ＥＣＣを含まず）では、「少数」とはページ上に１つの訂正可能なエラーがあることとみなされ、かつ、「多数」とは２つ以上の訂正可能なエラーがあることとみなされる。 この実施例では、ページ上に１つの訂正可能なエラーがある場合には、プロセスは、判定２０８からカウンタをインクリメントする状態２１２へと進み、また、１つを超える訂正可能なエラーがある場合には、プロセスは、判定２０８から早期排除を表示する状態２１４へと進む。
【００２５】
カウンタをインクリメントする状態２１２では、プロセスは、読み出されているページの特定のブロックに対して１カウントずつ、カウンタをインクリメントする。カウンタアレイは、メモリデバイス１０６（図１）の複数のブロックに対する個々のカウントを格納し得、例えば、メモリデバイス１０６のブロックごとに１つのカウンタを格納し得る。１つのブロックは多数のページを含むので、複数のページに由来するエラーは、特定のブロックに対するカウントの一因となり得る。プロセスは次に、例えばファイルシステム１０８（図１）といった、デバイスドライバ１１０（図１）の呼び出しているルーティンに「ＯＫ」のステータスを返して、終了する。お気づきのように、そのブロックの同じページあるいはその他のページが（複数の）エラーを伴って繰り返し読み出される場合、ブロックに対するカウンタに格納されるカウントは増加する。カウントは、ブロックの（複数の）ページの読み出し中に直面したエラーの履歴を格納する。
【００２６】
例えば２つ以上といった、比較的多数のエラーに直面した場合に使用される判定２０８の経路にここで戻ると、早期排除を表示する状態２１４では、早期排除の対象としてブロックを指定するために、プロセスはカウンタを更新する。例えば、状態２１０に関連して記述したように、カウンタは、閾値レベル、ＭＡＸにセットしてよい。図示した実施形態では、早期排除の対象としてブロックを指定するために、状態２１０および状態２１４は、カウンタを閾値レベル、ＭＡＸに各々セットする。別の実施形態では、状態２１２のインクリメントと比較して同じかもしくは大きいが、状態２１０からのカウンタ値の増加 と比較して潜在的に小さいインクリメントで、状態２１４はカウンタを変更する。プロセスは次に、例えばファイルシステム１０８（図１）といった、デバイスドライバ１１０（図１）の呼び出しているルーティンに「ＯＫ」のステータスを返して、終了する。図２に示したプロセスは、劣化していて排除されるべきブロックを特定する。新しいデータがブロックに書き込まれている時などの比較的遅い時期よりも、データがブロックから読み出されている時などの比較的早い時期に、劣化しているブロックを認識することは、信頼性にとって有益であり得る。 
【００２７】
図３は、劣化したブロックの事前排除のためのプロセスを概略的に説明するフローチャートである。ある実施形態では、オペレーティングシステムのデバイスドライバによりプロセスは実施され、かつ、メモリデバイスは、ＮＡＮＤフラッシュメモリデバイスである。図示されたプロセスが様々な方法で変更され得ることは、当業者にとって当然である。例えば、別の実施形態では、図示されたプロセスの各種部分を組み合わせてもよく、別の順序に並べ直してもよく、除外するなどしてもよい。ＮＡＮＤフラッシュメモリでは、読み出しもしくは書き込みはページ単位で実施されるが、消去はブロック単位で実施される。
【００２８】
プロセスは、メモリデバイスからのブロックの消去要求により、もしくはブロックのページへの書き込み要求により、開始される。例えば、その要求は、オペレーティングシステム１０４（図１）のファイルシステム１０８（図１）によってもたらされ得る。要求は、データ更新に関連するものであり得、データ消去に対するものであり得、初期化に対するものであり得、またはその種の他のものであり得る。
【００２９】
プロセスは、消去される予定のブロック、もしくは書き込まれる予定のページの対応するブロックに関連するエラーの履歴を検索する（３１０）。例えば、エラーの履歴は、図２に関連して前述したカウントであってよい。
【００３０】
プロセスは、ブロックが信頼性を有するか否かの判定へと進む（３２０）。信頼性を有するとブロックが判断される場合には、プロセスは続いて、メモリデバイス１０６（図１）にブロックを消去するよう命令する（３３０）。プロセスは、メモリデバイス１０６内の消去プロセスもしくは書き込みプロセス中にエラーが生じたか否かを判定する（３５０）。ブロックの消去もしくはページへの書き込みをメモリデバイス１０６がエラーを伴わないで行う場合には、プロセスはその後、ファイルシステム１０８（図１）などの呼び出しているルーティンに対する「ＯＫ」のステータスを伴って、終了する。スタックビットなど、消去プロセスもしくは書き込みプロセスにエラーがある場合には、プロセスは、エラーのステータスを伴って終了し得る。
【００３１】
ブロックが信頼性を有しないと判断される場合、プロセスは、要求された消去操作もしくは書き込み操作の拒絶へと進み（３６０）、Ｉ／Ｏエラーなどのエラーのステータスを伴って終了する。例えば、信頼性を有しない可能性があるブロックを特定するための閾値とカウンタが同じかそれを超える場合には、そのブロックは信頼性を有しないと判断され得る。ブロックを不良としてマーキングすることをデバイスドライバ１１０（図１）に要求する前に、ファイルシステム１０８（図１）などの上層の呼び出しているルーティンは、エラーのステータスに対応して、ブロックの以前に書き込まれたページを、もしあるならば、その後再要求し得る 。以前に書き込まれたページは、書き込まれる予定の現在のページと同様に、異なるブロックに書き込まれ得る。ブロックが不良としてマーキングされた後は、そのブロックは使用できない 。メモリデバイスによっては、ブロックを不良とマーキングすることは、メモリデバイス１０６（図１）中の不良ブロックテーブルにブロックを追加することによって遂行される。ある実施形態では、不良ブロックテーブルへのブロックの追加は、ファイルシステム１０８の要求に応じてデバイスドライバ１１０（図１）によっても処理される。ブロックの早期排除は、ブロックが不良になる前にブロックの排除を効果的になし得る。これは、データの将来の喪失を回避し得る。 
【００３２】
図４は、訂正不可能なエラーを有すると判定されたデータを回復するためのプロセスを概略的に説明するフローチャートである。ある実施形態では、プロセスは、オペレーティングシステム１０４（図１）のデバイスドライバ１１０（図１）により実施され、かつ、メモリデバイス１０６（図１）は、ＮＡＮＤフラッシュメモリデバイスである。図示されたプロセスが様々な方法で変更され得ることは、当業者にとって当然である。例えば、別の実施形態では、図示されたプロセスの各種の部分を組み合わせてもよく、別の順序に並べ直してもよく、除外するなどしてもよい。
【００３３】
ある実施形態では、メモリデバイスから読み出されたデータが訂正不可能なエラーであった場合に、プロセスは開始する。誤り訂正符号（ＥＣＣ）に対して訂正すべきエラーが多すぎる場合に、訂正不可能なエラーが生じ得る。例えば、図２の早期排除を表示する状態２１０の後に、プロセスは開始し得る。
【００３４】
状態４１０では、訂正可能な方法でデータの読み出しを図るために、プロセスは、読み出しのオペレーションモードを変更する。多くのコンピュータシステムは、標準のオペレーション（高速の読み出しモード）の間、最も適合性の高いスピードでメモリデバイス１０６（図１）などのメモリデバイスにアクセスするように設定されている。ある実施形態では、読み出しのオペレーションモードは、信頼性の高い読み出しモードに変更される。これは、例えば、より低速のバススピード、より長い待ち時間などを含み得る。別の実施例では、ダイレクトメモリアクセス（ＤＭＡ）モードから、アクセスを制御するためにマイクロプロセッサを使用するモードに、読み出しモードは変更され得、このモードは、Processor Input/OutputあるいはＰＩＯとしても周知である。他のタスクを実施するようマイクロプロセッサを解放する効用があることから、一般的には、ＤＭＡモードが望ましい。しかしながら、ＰＩＯを用いると、ＤＭＡを用いるのと比較して、より制御を働かせてマイクロプロセッサが読み出し操作を実施し得る。例えば、プロセスは、携帯電話のスピーカーなどのノイズを生成する装置の一時停止を要求し得る。別の実施例では、プロセスは、メモリデバイス１０６に対するタイミングを意図的に低速にし得る。当業者により、その他の手法は容易に見つけ出されるであろう。これらの手法の各種の特徴は、組み合わせることも可能である。
【００３５】
プロセスは、メモリデバイスから以前に読み出したページの読み出し要求へと進む（４２０）。この読み出しは、再読み出しに該当する。誤り訂正符号データも検索され、データが今度は訂正可能か否かを判定（４３０）するために再度利用される。多くの場合、より信頼性の高いモードを使用して読み出すと、データは訂正可能であり得る。データが訂正可能である場合、訂正されたデータの供給へとプロセスは進み（４４０）、「ＯＫ」のステータスを伴って、プロセスは終了する。
【００３６】
データが訂正不可能な場合、プロセスは、再試行すべきか、もしくはエラーを伴うデータを供給（４６０）すべきかを判定する（４５０）。再試行すべきかデータを供給すべきかの判定４５０は、例えば、ループカウンタ、タイマーなどに基づき得る。データを再読み出しするために、プロセスは、状態４１０もしくは読み出し状態４２０に戻り得る。プロセスが状態４１０に戻る場合、異なる（例えば、第３、第４などの）読み出しモードが同様に試行されてもよい。例えば、信頼性の高い読み出しモードが１つより多く存在する場合には、様々な読み出しモードの機能が別々におよび／または組み合わせて試行されてよい。
【００３７】
データが依然として訂正可能ではない場合、ある実施形態は、エラーを伴うデータをそれでもなお供給する（４６０）。破滅的に機能しなくなりやすいハードディスクデバイスとは異なり、ＮＡＮＤフラッシュなどのソリッドステートのデバイス中のエラーは、シングルビットの不能をしばしば特徴とする。ページが訂正不可能な場合には、１ビットを上回るエラー数が通常存在するが、エラーのあるデータを返す方が、データを何も返さないよりは良い可能性がある。例えば、多くの場合においては、エラーを伴うデータの部分は注目に値しないであろう。例えば、プログラムコードがページに格納される場合、エラーを伴う部分は、必ずしも実行されるとは限らないコードの一部に該当し得る。これとは対照的に、データが何も供給されない場合には、ページ全体のデータが得られなくなり、この場合には、プログラムは、ほぼ常に、クラッシュする。
【００３８】
ある実施形態は、不揮発性集積回路メモリデバイスのブロックを監視する方法であり、その方法は、メモリデバイスのブロックのデータページが少なくとも１つのエラーを伴って読み出されたか否かを判定するために誤り訂正符号を復号するステップと；少なくとも、ページが少なくとも１つのエラーを伴って読み出された時に、読み出されたページに対応するメモリデバイスのブロックに対するエラーの履歴を保存するステップとを含み、ブロックを早期に排除すべきか否かを表示するためにエラーの履歴が使用される。
【００３９】
ある実施形態は、不揮発性集積回路メモリデバイスのためのブロックを管理する方法であり、その方法は、メモリのブロックを消去するコマンドもしくはメモリのブロックのページに書き込むコマンドを受信するステップと；ブロックの１つ以上のページに対する読み出し操作に関連するエラーの履歴に少なくとも一部は基づいて、消去もしくは書き込みを停止するステップとを含む。
【００４０】
ある実施形態は、不揮発性集積回路メモリデバイスからデータページにアクセスする方法であり、その方法は、メモリデバイスからデータページの読み出しを要求するステップと；そのページに関連する誤り訂正符号（ＥＣＣ）を調べるステップと；そのデータページが何らかの訂正不可能なエラーを含んだか否かに関わらず、データページが正確に読み出されたことを表示するステータスをオペレーティングシステムに供給するステップとを含む。
【００４１】
ある実施形態は、不揮発性集積回路メモリデバイスのブロックを表示するための１つ以上の表示を保存する方法であり、その方法は、次のステップの少なくとも１つに少なくとも一部は応じて、ブロックの再消去もしくは再プログラミングを阻止するステップを含む。すなわち、メモリのブロックの少なくとも１つのページに関して実施された、少なくとも１つの読み出し操作の一環として検出されたエラーが、誤り訂正符号の復号を通じて、訂正可能ではないことを判定するステップ；または、ブロックに対する以前の読み出し操作中に少なくとも１つのエラーが生じたことを、メモリデバイスのブロックに対して収集されたエラーの履歴が表示することを判定するステップ。
【００４２】
ある実施形態は、不揮発性集積回路メモリデバイスのブロックを監視するための装置であり、その装置は、メモリデバイスのブロックのデータページが少なくとも１つのエラーを伴って読み出されたか否かを判定するために誤り訂正符号を復号するように構成されたモジュールと；少なくとも、ページが少なくとも１つのエラーを伴って読み出された時に、読み出されたページに対応するメモリデバイスのブロックに対するエラーの履歴を保存するよう構成されたモジュールとを含み、ブロックを早期に排除すべきか否かを表示するためにエラーの履歴が使用される。
【００４３】
様々な実施形態が上述されている。これらの具体的な実施形態に準拠して記述したが、その記述は、例証を目的とし、限定することを目的としていない。添付の請求項に記載の本発明の精神と範囲から逸脱することなく、様々な変更および利用が当業者によりもたらされ得る。
【図１】
2010529557.tif 000003
【図２】
2010529557.tif 000004
【図３】
2010529557.tif 000005
【図４】
2010529557.tif 000006
【手続補正書】
【提出日】平成22年4月13日(2010.4.13)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2010529557.tif 000007
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2010529557.tif 000008
【国際調査報告】
2010529557.tif 000009
2010529557.tif 000010
2010529557.tif 000011
2010529557.tif 000012