(57)【特許請求の範囲】
【請求項１】
方法であって、
メモリ装置のブロックに対応する誤り数がしきい値を満たすか否かを判断するとともに、前記ブロックの最後の消去からの読み出し回数と前記ブロックの書き込み／消去サイクル数との比較に基づいて、その誤り数が、主として加齢による誤りを示しているか、又は、主として読み出しディスターブによる誤りを示しているのか、を判断することと、
前記誤り数が主として加齢による誤りを示しているとする判断に応答して、前記ブロックに対するプログラミングステップサイズを第１の値から第２の値へ低減することと、
前記誤り数が、主として読み出しディスターブによる誤りを示しているとする判断に応答して、前記ブロックに対してリフレッシュ操作を遂行すること、を含む方法。
【請求項２】
請求項１記載の方法において、
前記プログラミングステップサイズを低減することにより、前記ブロックの蓄積素子に書き込まれるしきい値電圧の分布が引き締まり、前記ブロックにデータをプログラムする際に誤りを減らすことが可能となる方法。
【請求項３】
請求項１又は２記載の方法において、
前記ブロックが複数のワード線を有し、各ワード線が複数の蓄積素子を有し、
前記誤り数は、前記ブロックのワード線内の蓄積素子から読み出されるデータの合計誤り数を含む方法。
【請求項４】
請求項１〜３のいずれか一項記載の方法において、
第２の値を表から選択することをさらに含む方法。
【請求項５】
請求項４記載の方法において、
前記表は、前記メモリ装置のメモリ内にある方法。
【請求項６】
請求項４記載の方法において、
前記表は、前記メモリ装置のコントローラ内にある方法。
【請求項７】
請求項１〜３のいずれか一項記載の方法において、
第１の値に基づき第２の値を計算することをさらに含む方法。
【請求項８】
請求項１〜７のいずれか一項記載の方法において、
前記ブロックに対するリフレッシュ操作は、読み出し回数が書き込み／消去サイクル数よりも大きいことを示す比較結果に基づいて遂行される方法。
【請求項９】
請求項１〜８のいずれか一項記載の方法において、
読み出し回数が書き込み／消去サイクル数よりも小さいことを示す比較結果に少なくとも部分的に基づいて、前記プログラミングステップサイズが第１の値から第２の値へ低減される方法。
【請求項１０】
請求項１〜９のいずれか一項記載の方法において、
前記メモリ装置は、フラッシュメモリを含む方法。
【請求項１１】
データ蓄積装置であって、
メモリと、
コントローラと、を備え、
前記コントローラは、
前記メモリの或るブロックに対応する誤り数がしきい値を満たすか否かを判断するとともに、前記ブロックの最後の消去からの読み出し回数と前記ブロックの書き込み／消去サイクル数との比較に基づいて、その誤り数が、主として加齢による誤りを示しているか、又は、主として読み出しディスターブによる誤りを示しているのか、を判断し、
前記誤り数が主として加齢による誤りを示しているとする判断に応答して、前記ブロックに対するプログラミングステップサイズを第１の値から第２の値へ低減し、
前記誤り数が、主として読み出しディスターブによる誤りを示しているとする判断に応答して、前記ブロックに対してリフレッシュ操作を遂行する、ように構成されるデータ蓄積装置。
【請求項１２】
請求項１１記載のデータ蓄積装置において、
前記プログラミングステップサイズに従って前記ブロックにデータをプログラムするように構成された書き込み回路をさらに備えるデータ蓄積装置。
【請求項１３】
請求項１１又は１２記載のデータ蓄積装置において、
受信したしきい値データと受信した誤り数データに少なくとも部分的に基づいて、前記プログラミングステップサイズを調整するように構成されたブロック単位プログラミング調整エンジンをさらに備えるデータ蓄積装置。
【請求項１４】
請求項１３記載のデータ蓄積装置において、
前記ブロックから読み出されたデータに対して復号化操作を遂行し、かつ誤り数を前記ブロック単位プログラミング調整エンジンに提供するように構成された誤り訂正符号化エンジンをさらに備えるデータ蓄積装置。
【請求項１５】
請求項１３又は１４記載のデータ蓄積装置において、
誤り数は、前記ブロックの各ワード線のワード線誤り数の加算に基づく合計誤り数を含むデータ蓄積装置。
【請求項１６】
請求項１１〜１５のいずれか一項記載のデータ蓄積装置において、
前記コントローラは、第２の値を表から選択するようにさらに構成されるデータ蓄積装置。
【請求項１７】
請求項１６記載のデータ蓄積装置において、
前記表は、前記メモリ内にあるデータ蓄積装置。
【請求項１８】
請求項１６記載のデータ蓄積装置において、
前記表は、前記コントローラ内にあるデータ蓄積装置。
【請求項１９】
請求項１１〜１８のいずれか一項記載のデータ蓄積装置において、
前記コントローラは、読み出し回数が書き込み／消去サイクル数よりも小さいことを示す比較結果に少なくとも部分的に基づいて、前記プログラミングステップサイズを第１の値から第２の値へ低減するように構成されるデータ蓄積装置。
【請求項２０】
請求項１１〜１９のいずれか一項記載のデータ蓄積装置において、
前記コントローラは、読み出し回数が書き込み／消去サイクル数よりも大きいことを示す比較結果に基づいて、前記ブロックに対してリフレッシュ操作を遂行するように構成されるデータ蓄積装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、メモリのブロックに対してプログラミングステップサイズを調整することに関する。
【背景技術】
【０００２】
ユニバーサルシリアルバス（ＵＳＢ）フラッシュメモリ装置や取り外し可能なストレージカード等の不揮発性メモリ装置により、データやソフトウェアアプリケーションの可搬性は向上している。フラッシュメモリ装置は、個々のフラッシュメモリセルに複数のビットを蓄積することによってデータ蓄積密度と費用効率を向上させることができる。
【０００３】
単一のフラッシュメモリセルで複数の情報ビットを蓄積することは、ビット列をフラッシュメモリセル状態にマップすることを通常含む。特定のフラッシュメモリセルにビット列を蓄積することが決定した後、フラッシュメモリセルはビット列に相当する状態までプログラムされ得る。小さいプログラミングステップサイズでフラッシュメモリセルをプログラムすると、プログラミングの精度は向上し得るが、プログラミングステップ数が増加し得るため、プログラミングの待ち時間が長くなる。大きいプログラミングステップサイズでフラッシュメモリセルをプログラムすると、プログラミングステップ数が減少し得るため、プログラミングの待ち時間は短くなるが、プログラミングの精度は低下する。一度メモリ装置内のメモリセルがプログラムされると、メモリセルのプログラミング状態を検知することにより、メモリセルからデータが読み出され得る。
【発明の概要】
【０００４】
データ蓄積装置内のメモリの或るブロックに対するプログラミングステップのサイズは、そのブロックの誤り数がしきい値を満たすとする判断に少なくとも部分的に基づいて低減される。その結果、低減されたプログラミングステップサイズを用いてブロックの蓄積素子に書き込まれるしきい値電圧の分布を引き締めることができ、誤りを減らすとともにブロックにデータをプログラムすることが可能となる。「若い」メモリは通常、「老いた」メモリより誤りが少ない。このため、若いメモリのブロックは大きいプログラミングステップサイズでプログラムされ得る。
【０００５】
大きいプログラミングステップサイズでブロックをプログラムすると、プログラミングステップ数が少なくなり得るため、プログラミングの待ち時間は短くなる。メモリの加齢にともない、ブロック内の蓄積素子から読み出されるデータの誤り数は通常増える。メモリの加齢にともない、誤り数がしきい値に達することに応じて低減されたプログラミングステップサイズでブロックをプログラムすれば、精度を向上させ、誤りを減らし、メモリの寿命を延ばし得る。
【図面の簡単な説明】
【０００６】
【図１】メモリ装置の或るブロックに対して、そのブロックの誤り数に少なくとも部分的に基づいて、プログラミングステップサイズを第１の値から第２の値へ低減するシステムの第１の例証的な実施形態のブロック図である。
【図２】図１のメモリの或るブロックから読み出され得る１蓄積素子群の代表的な電圧特性を示し、かつプログラミングステップサイズの変更によるビット誤り訂正を示す概略図である。
【図３】メモリ装置の或るブロックに対して、そのブロックの誤り数に少なくとも部分的に基づいて、プログラミングステップサイズを第１の値から第２の値へ低減するシステムの第２の例証的な実施形態のブロック図である。
【図４】メモリ装置の或るブロックに対して、そのブロックの誤り数に少なくとも部分的に基づいて、プログラミングステップサイズを第１の値から第２の値へ低減する方法の一実施形態を示す流れ図である。
【発明を実施するための形態】
【０００７】
データ蓄積装置内のメモリの或るブロックに対して、プログラミングステップサイズを第１の値から第２の値へ低減するシステムおよび方法が開示される。プログラミングステップサイズは、少なくとも部分的に、ブロックの誤り数がしきい値に達したという判断に応じて、低減される。（例えば、メモリの加齢にともない）プログラミングステップサイズを低減することにより、ブロックの蓄積素子に書き込まれるしきい値電圧の分布を引き締めることで、誤りを減らすとともにブロックにデータをプログラムすることが可能となり得る。
【０００８】
図１を参照すると、メモリ装置の或るブロックに対して、そのブロックの誤り数に少なくとも部分的に基づいて、プログラミングステップサイズを第１の値から第２の値へ低減するように構成されたシステムの例証的な実施形態が示され、全体的に１００と呼称されている。プログラミングステップサイズはまた、ブロックで行われたメモリ読み出し回数、ブロックの書き込み／消去サイクル数、またはこれらの組み合わせに基づき得る。システム１００はホスト装置１３０へ結合されるデータ蓄積装置１０２を含む。データ蓄積装置１０２はバス１５０経由でコントローラ１０６へ結合されたメモリ１０４を含む。
【０００９】
ホスト装置１３０は、メモリ１０４に蓄積されるべきデータを提供するように構成されるか、あるいはメモリ１０４から読み出すべきデータを要求するように構成され得る。例えば、ホスト装置１３０は、携帯電話機、音楽または映像再生機、ゲーム機、電子書籍リーダ、個人用携帯情報端末（ＰＤＡ）、ラップトップコンピュータ、ノートブックコンピュータ、タブレット等のコンピュータ、他の何らかの電子装置、またはこれらの組み合わせを含み得る。
【００１０】
データ蓄積装置１０２は、メモリカードであってよく、例えばＳｅｃｕｒｅ  Ｄｉｇｉｔａｌ（登録商標）（ＳＤ）カード、ｍｉｃｒｏＳＤ（登録商標）カード、ｍｉｎｉＳＤ（登録商標）カード（デラウェア州ウィルミントンのＳＤ−３Ｃ  ＬＬＣの商標）、ＭｕｌｔｉＭｅｄｉａＣａｒｄ（登録商標）（ＭＭＣ）カード（バージニア州アーリントンのＪＥＤＥＣ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｓｓｏｃｉａｔｉｏｎの商標）、またはＣｏｍｐａｃｔＦｌａｓｈ（登録商標）（ＣＦ）カード（カリフォルニア州ミルピタスのサンディスク  コーポレイションの商標）であってよい。別の例として、データ蓄積装置１０２は、ホスト装置１３０に組み込まれたメモリであってよく、例えば説明的な例として、ｅＭＭＣ（登録商標）（バージニア州アーリントンのＪＥＤＥＣ
Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｓｓｏｃｉａｔｉｏｎの商標）、ならびにｅＳＤメモリであってよい。
【００１１】
メモリ１０４は、フラッシュ装置（例えば、ＮＡＮＤフラッシュ装置、ＮＯＲフラッシュ装置、またはその他の類のフラッシュ装置）の不揮発性メモリであってよい。メモリ１０４は、複数のブロック（例えば、第１の代表的なブロック１１０と第２の代表的なブロック１１２）を含む。メモリ１０４はまた、プログラミングステップサイズに従いブロック１１０、１１２のいずれか１つ以上にデータをプログラムするように構成された書き込み回路１１４を含む。例えば、書き込み回路１１４は、プログラミングステップサイズ（例えば、図２に関して詳述する第１のプログラミングステップサイズ１１６）を有する一連のプログラミングパルスにより、ブロック１１０、１１２のいずれか１つ以上にデータをプログラムし得る。書き込み回路１１４は、第１のプログラミングステップサイズ１１６をデフォルトのプログラミングステップサイズとして蓄積するように構成され得る。書き込み回路１１４は、別のプログラミングステップサイズ（例えば、第２のプログラミングステップサイズ１１８）をコントローラ１０６から受信し、デフォルトのプログラミングステップサイズの代わりに使用するように構成され得る。例えば、書き込み回路１１４は、第１のプログラミングステップサイズ１１６に従ってブロック１１０に第１のデータをプログラムするように構成され、かつ第２のプログラミングステップサイズ１１８に従ってブロック１１２に第２のデータをプログラムするように構成され得る（例えば、コントローラ１０６がブロック１１２にデータを書き込み、この書き込み操作を遂行するため、第２のプログラミングステップサイズ１１８を書き込み回路１１４へ送信する場合）。つまり、コントローラ１０６は、書き込み回路１１４を介してメモリへ書き込まれるデータについて、プログラミングステップサイズをブロック単位で選択し得る。
【００１２】
コントローラ１０６は、ホスト装置１３０からメモリアクセス要請を受信し、かつメモリ１０４からのデータ読み出しを処理するように構成され得る。コントローラ１０６は、しきい値１２２とブロック誤り数１２４を受信するように構成されたブロック単位プログラミング調整エンジン１２０を含む。ブロック単位プログラミング調整エンジン１２０は、受信したしきい値１２２と受信したブロック誤り数１２４に少なくとも部分的に基づいて、書き込み回路１１４で使用するプログラミングステップサイズを調整するように構成され得る。ブロック単位プログラミング調整エンジン１２０はしきい値１２２とブロック誤り数１２４を比較し、その結果に基づき第２のプログラミングステップサイズ１１８を選択し得る。例えば、ブロック誤り数１２４がしきい値１２２に満たなければ、第２のプログラミングステップサイズ１１８が選択されない場合がある。ブロック誤り数１２４がしきい値１２２を上回るなら、第２のプログラミングステップサイズ１１８が選択され、メモリ１０４へ提供される場合がある。第２のプログラミングステップサイズ１１８は、第１のプログラミングステップサイズ１１６に基づき計算されてもよいし、あるいは図３に関して説明するように表から選択されてもよい。
【００１３】
コントローラ１０６は、メモリの或るブロックに対して、そのブロックの誤り数がしきい値を満たすとする判断に基づいて、プログラミングステップサイズを第１の値から第２の値へ低減するように構成され得る。例えば、ブロック１１０の誤り数は、ブロック１１０のメモリ読み出し回数またはブロック１１０の書き込み／消去サイクル数のため、メモリ１０４の加齢にともない増加し得る。ブロック１１０の誤り数（例えば、ブロック誤り数１２４）がしきい値（例えば、しきい値１２２）を満たすと、ブロック１１０に対するプログラミングステップのサイズは、第１のプログラミングステップサイズ１１６から第２のプログラミングステップサイズ１１８へ低減され得る。具体的に説明すると、ブロック単位プログラミング調整エンジン１２０は、受信したしきい値１２２と受信したブロック誤り数１２４を比較した結果に基づき、第１のプログラミングステップサイズ１１６から第２のプログラミングステップサイズ１１８にプログラミングステップサイズを調整することを判断し得る。コントローラ１０６は、ブロック１１０のプログラミング（データ書き込み）に使用する第２のプログラミングステップサイズ１１８を書き込み回路１１４へ送信し得る。
【００１４】
作動中、ホスト装置１３０はブロック１１０のデータを読み出すことをコントローラ１０６に指図し得る。コントローラ１０６は読み出されたデータに基づきブロック誤り数１２４を判断し、ブロック誤り数１２４をしきい値１２２と比較し得る。ブロック誤り数１２４がしきい値１２２を満たす場合（例えば、ブロック誤り数１２４がしきい値１２２を超過する場合）、プログラミングステップサイズは、第１のプログラミングステップサイズ１１６から第２のプログラミングステップサイズ１１８へ低減され得る。
【００１５】
メモリ装置の或るブロックに対して、プログラミングステップサイズを第１の値（例えば、第１のプログラミングステップサイズ１１６）から第２の値（例えば、第２のプログラミングステップサイズ１１８）へ低減すると、プログラミングステップ数が増加し得るため、プログラミングの待ち時間は長くなり得る。ただし、図２に関して説明するように、低減されたプログラミングステップサイズを用いてブロックにブログラムされるデータで誤りは減るため、メモリ装置の寿命は延びる。通常、プログラミングステップサイズはメモリ装置の耐用寿命の終末に向けて低減されていき、メモリ装置の寿命の大半にわたり待ち時間は増加しない。
【００１６】
図２は、メモリの或るブロック（例えば、図１のブロック１１０）から読み出され得る１蓄積素子群の代表的な電圧特性２１０、２２０、および２３０を示し、かつプログラミングステップサイズを低減することによって電圧しきい値分布の重なりによるデータ破損を軽減する効果を示す。例えば、第１のセル電圧分布（ＣＶＤ）２１０には、２ビットセル等の１群のマルチレベルセルから読み出されるしきい値電圧特性が示されている。第１のＣＶＤ２１０は、第１のプログラミングステップサイズを用いて特定のしきい値電圧までプログラムされたセルの分布を示している。例えば、第１のグラフ表現２５０は、或るプログラミングステップサイズ（例えば、第１のプログラミングステップサイズ１１６）を有する一連のプログラミングパルスを示している。第１のプログラミングステップサイズ１１６は第１の電圧値を示している。一連のプログラミングパルスは、図１のメモリ１０４の１つ以上のブロック（例えば、ブロック１１０）をプログラムし得る。一例として、４つのプログラミングパルスが図に示されている。相継ぐ個々のプログラミングパルスの電圧値は、第１のプログラミングステップサイズ１１６の電圧値ずつ増加される。具体的に説明すると、第３のプログラミングパルスは、第２のプログラミングパルスの電圧値に加えた第１の電圧値に等しい電圧値を有し得る。図に示されているように、ブロック１１０のプログラミングは第１のプログラミング待ち時間、すなわち遅延ｔ１を含み得る。
【００１７】
図に示されているように、第１のＣＶＤ２１０は４つの代表的なしきい値電圧範囲を含み、これらのしきい値電圧範囲は３つの読み出し電圧Ｔ０  ２０２、Ｔ１  ２０４、およびＴ２  ２０６によって画定され、セル状態Ｅｒ、Ａ、Ｂ、およびＣにそれぞれ相当する。例えば、２ビット値「１１」は「Ｅｒ」状態に相当する第１のしきい値電圧範囲２３２内のしきい値電圧に相当し、２ビット値「１０」は「Ａ」状態に相当する第２のしきい値電圧範囲２３４内のしきい値電圧に相当し、２ビット値「００」は「Ｂ」状態に相当する第３のしきい値電圧範囲２３６内のしきい値電圧に相当し、２ビット値「０１」は「Ｃ」状態に相当する第４のしきい値電圧範囲２３８内のしきい値電圧に相当し得る。
【００１８】
データは、セルしきい値電圧を読み出し電圧Ｔ０  ２０２〜Ｔ２  ２０６のいずれか１つ以上と比較することによって蓄積素子から読み出され得る。第１のＣＶＤ２１０は誤りがない（全てのセルが当初プログラムされた状態に保たれている）ものとして図に示されている。各セルはそれぞれのしきい値電圧範囲の中心にしきい値電圧を有するように当初プログラムされ得るが、様々な要因（例えば、蓄積素子を含むブロックのメモリ読み出し回数や書き込み／消去サイクル数）により、実際のセルしきい値電圧は中心電圧から「ずれる」場合があり、結果的に第２のＣＶＤ２２０になる。
【００１９】
第２のＣＶＤ２２０は、（例えば、メモリが加齢し）第１のＣＶＤ２１０から時間が経過した後にマルチレベルセル群から読み出され得る別のしきい値電圧特性を表している。ＣＶＤ２２０は第１のプログラミングステップサイズ１１６を用いて特定のしきい値電圧までプログラムされたセルの分布を示している。誤り領域２２２は状態「Ｅｒ」および「Ａ」まで当初プログラムされたセルのブロックの蓄積素子で起こり得る誤りを含み、それらのしきい値電圧は読み出し電圧Ｔ０  ２０２をまたいで別の状態にずれ込んでいる。具体的に説明すると、誤りはメモリの加齢にともない起こり、蓄積素子を含むブロックのメモリ読み出し回数や書き込み／消去サイクル数に一致し得る。誤りは、図に示されているように、「Ｅｒ」状態まで当初プログラムされたセルのしきい値電圧が上がって、「Ｅｒ」状態と「Ａ」状態との間の読み出し電圧Ｔ０  ２０２を越えることによって起こり得る。読み出し電圧Ｔ０  ２０２を用いてこれらのセルを読み出すと、セルは「Ｅｒ」状態ではなく「Ａ」状態にあると誤認される。誤り領域２２２では「Ａ」状態まで当初プログラムされたセルを含み、これらセルのしきい値電圧が読み出し電圧Ｔ０  ２０２より下がっている。読み出し電圧Ｔ０  ２０２を用いてこれらのセルを読み出すと、セルは「Ａ」状態ではなく「Ｅｒ」状態にあると誤認される。
【００２０】
第３のＣＶＤ２３０には第２のＣＶＤ２２０の２ビットマルチレベルセル群から読み出された別の代表的なしきい値電圧特性が示され、ここで、セルを特定のしきい値電圧までプログラムするのに使われるプログラミングステップサイズが、例えば図１のブロック単位プログラミング調整エンジン１２０によって低減されることにより、第２のＣＶＤ２２０の誤りが回避されている。例えば、第２のグラフ表現２６０は第２の一連のプログラミングパルスを示し、これらのプログラミングパルスは、第１のプログラミングステップサイズ１１６から低減された第２のプログラミングステップサイズ（例えば、第２のプログラミングステップサイズ１１８）を有する。第２のプログラミングステップサイズ１１８は第１の電圧値に満たない第２の電圧値に相当する。メモリ１０４の加齢にともない、ブロック１１０は第２のプログラミングステップサイズ１１８に従ってプログラムされ得る。一例として、８つのプログラミングパルスが図に示されている。相継ぐ個々のプログラミングパルスの電圧値は、第２のプログラミングステップサイズ１１８の電圧値ずつ増加される。図に示されているように、ブロック１１０のプログラミングは第２のプログラミング待ち時間ｔ２を含み得る。プログラミングパルス数の増加のため、第２のプログラミング待ち時間ｔ２は第１のプログラミング待ち時間ｔ１より長い。
【００２１】
第２のＣＶＤ２２０において読み出し電圧Ｔ０  ２０２で読み出されたときに「Ａ」状態と誤認された「Ｅｒ」状態のセルは、プログラミングステップサイズの低減により、第３のＣＶＤ２３０では「Ｅｒ」状態として正しく識別されている。第２のＣＶＤ２２０において読み出し電圧Ｔ０  ２０２で読み出されたときに「Ｅｒ」状態と誤認された「Ａ」状態のセルは、プログラミングステップサイズの低減により、第３のＣＶＤ２３０では「Ａ」状態として正しく識別されている。
【００２２】
メモリの特定ブロック内の蓄積素子のプログラミングステップサイズを低減することにより、その特定のブロックの蓄積素子に書き込まれるしきい値電圧の分布を引き締めることができ、誤りを減らすとともにブロックにデータをプログラムすることおよびメモリの寿命を延ばすことが可能となる。
【００２３】
図３を参照すると、システム構成品のさらなる詳細を示す図１のシステムの一例証的な実施形態が示され、全体的に３００と呼称されている。システム３００は、ホスト装置１３０へ結合されるデータ蓄積装置１０２を含む。データ蓄積装置１０２は、バス１５０経由でコントローラ１０６へ結合されたメモリ１０４を含む。
【００２４】
メモリ１０４は、第１のブロック１１０とＮ番目のブロック１１２とを含む複数のブロックを含んでいる。第１のブロック１１０は、複数のワード線（例えば、代表的なワード線３１９）を含む。それぞれのワード線は１群の蓄積素子（例えば、１群の蓄積素子３１１）を含む。蓄積素子群３１１は複数のマルチレベルセル蓄積素子（例えば、フラッシュメモリ装置の代表的な蓄積素子３１３、３１５、および３１７）を含み得る。メモリ１０４は、書き込み回路１１４を含み、第１のプログラミングステップサイズ１１６の指示を蓄積する。例えば、書き込み回路１１４は、第１のプログラミングステップサイズ１１６に従ってブロック１１０に第１のデータをプログラムするように構成され、かつ第２のプログラミングステップサイズ１１８に従ってブロック１１２に第２のデータをプログラムするように構成され得る（例えば、コントローラ１０６がブロック１１２にデータを書き込み、この書き込み操作を遂行するため、第２のプログラミングステップサイズ１１８を書き込み回路１１４へ送信する場合）。つまり、コントローラ１０６は、書き込み回路１１４を介してメモリへ書き込まれるデータについて、プログラミングステップサイズをブロック単位で選択し得る。
【００２５】
コントローラ１０６は、ブロック単位プログラミング調整エンジン１２０を含む。コントローラ１０６は誤り訂正符号化（ＥＣＣ）エンジン３２０をさらに含み、ＥＣＣエンジン３２０は復号化操作を遂行し、かつ復号化操作で検出された誤り数に相当するデータを提供するように構成され、その提供されたデータは誤り数格納部３２２に蓄積される。例えば、ブロック１１０内の蓄積素子３１１から読み出されたデータはＥＣＣエンジン３２０によって受信され得る。ＥＣＣエンジン３２０は読み出されたデータに対して復号化操作を遂行し、復号化操作に基づいて誤り数をブロック単位プログラミング調整エンジン１２０に提供し得る。
【００２６】
ブロック単位プログラミング調整エンジン１２０へ提供される、メモリ１０４のブロックの誤り数は、ブロック１１０の各ワード線のワード線誤り数の加算に基づく、ブロック１１０から読み出されるデータで検出される合計誤り数を含み得る。ブロック１１０の誤り数は、ブロック１１０のワード線３１９の読み出し回数、ブロック１１０のワード線３１９の書き込み／消去サイクル数、１つ以上の要因、またはこれらの組み合わせのため、メモリ１０４の加齢にともない増加し得る。読み出し回数３２６は、ブロック１１０の最後の消去以降にブロック１１０で行われたメモリ読み出しの回数に一致し得る。書き込み／消去回数３２８はブロック１１０の書き込み／消去サイクル数に一致し得る。
【００２７】
ブロック１１０の誤り数がしきい値を満たすと、ブロック１１０にデータを書き込むときに使用されるプログラミングステップのサイズが第１のプログラミングステップサイズ１１６から第２のプログラミングステップサイズ１１８へ低減され得る。具体的に説明すると、ブロック単位プログラミング調整エンジン１２０は、受信したしきい値と受信したブロック誤り数に少なくとも部分的に基づいて、プログラミングステップサイズを第１の値（例えば、第１のプログラミングステップサイズ１１６）から第２の値（例えば、第２のプログラミングステップサイズ１１８）に調整し得る。
【００２８】
コントローラ１０６は、第１の値に基づいて第２の値を計算するように構成され得る。例えば、第２のプログラミングステップサイズ１１８は、第１のプログラミングステップサイズ１１６に倍率を乗じることによって計算され得る。具体的に説明すると、第２のプログラミングステップサイズ１１８は、第１のプログラミングステップサイズ１１６に係数１．２を乗じることによって計算され得る（例えば、第２の値は第１の値より２０％大きい）。別の実施例では、表、レジスタ、ラッチ等の格納域から第２のプログラミングステップサイズ１１８を引き出すためのインデックスとして第１のプログラミングステップサイズ１１６が使用され得る。
【００２９】
コントローラ１０６は、プログラミングステップサイズ表３２４から第２の値を選択するように構成され得る。例えば、プログラミングステップサイズ表３２４から第２の値を引き出すためのインデックスとして第１の値が使用され得る。別の実施例では、図１のブロック誤り数１２４の値に少なくとも部分的に基づいて、プログラミングステップサイズ表３２４から第２の値が選択され得る。具体的に説明すると、ブロック誤り数１２４の値がしきい値１２２を大差で超過する場合には、第１の値からの低減を、ブロック誤り数１２４の値がしきい値１２２を小差で超過した場合の低減より大きくする、第２の値が、プログラミングステップサイズ表３２４から選択され得る。プログラミングステップサイズ表３２４はコントローラ１０６内にあるものとして図に示されているが、別の実施例では、メモリ１０４内にプログラミングステップサイズ表３２４があってもよい。
【００３０】
コントローラ１０６は、コントローラ１０６におけるブロック１１０の読み出し回数とブロック１１０の書き込み／消去サイクル数との比較に基づき、ブロック１１０のプログラミングステップサイズを低減するように構成され得る。例えば、「より新しい」メモリでは、ブロック１１０の書き込み／消去サイクル数によって誤りが生じるのではなく、むしろ消去状態（図２の「Ｅｒ」状態）のセルがプログラム済み状態（図２の「Ａ」状態）として読み出される、高い電圧ストレスを受け、読み出されていないセルから得られる読み出しディスターブによって誤りが生じ得る。誤りの主な原因が装置の加齢か読み出しディスターブなのかを判断するため、コントローラ１０６は読み出し回数３２６と書き込み／消去回数３２８を比較し、読み出し回数３２６と書き込み／消去回数３２８との比較結果がしきい値を満たす場合には、プログラミングステップサイズを第１の値から第２の値へ低減し得る。コントローラ１０６はまた、読み出し回数３２６と書き込み／消去回数３２８との比較結果が読み出しディスターブしきい値を満たす場合に、プログラミングステップサイズを調整する代わりにブロック１１０でリフレッシュ操作３４０を遂行するように構成され得る。例えば、読み出し回数３２６が比較的高く、かつ書き込み／消去回数３２８が比較的低く、かつ誤り数がしきい値を満たすなら、誤りの主な原因は読み出しディスターブにあるので、コントローラ１０６はプログラミングステップサイズを低減するのではなく、リフレッシュ操作３４０を遂行し得る（例えば、読み出し後にデータが再度書き換えられる）。
【００３１】
作動中、ホスト装置１３０は、ブロック１１０のデータを読み出すことをコントローラ１０６に指図し得る。コントローラ１０６は、ワード線３１９から読み出された誤りを判断し、誤り数格納部３２２を更新し得る。例えば、コントローラは、ワード線３１９から読み出された以前の誤り数をワード線３１９から読み出された新しい誤り数に差し替え得る。
【００３２】
コントローラ１０６は、（例えば、図１のブロック誤り数１２４を判断するために）誤り数格納部３２２にあるブロック１１０のワード線誤りを合計し、ブロック誤り数１２４をしきい値１２２と比較し得る。この比較はバックグラウンドプロセスで遂行されるか、あるいはブロック１１０の書き込み要請を受けて遂行され得る。ブロック誤り数１２４がしきい値１２２を上回る場合は、誤りの原因が読み出しディスターブなのか否かを判断するため、読み出し回数３２６が書き込み／消去回数３２８と比較され得る。読み出し回数３２６と書き込み／消去回数３２８の比較が読み出し誤りの可能性を指摘するなら、コントローラはリフレッシュ操作３４０を遂行し得る。さもなくば、コントローラ１０６は、ブロック１１０に対する次の書き込み操作で使用する第２のプログラミングステップサイズ１１８をメモリ１０４へ送信し得る。
【００３３】
メモリの特定ブロック内にある蓄積素子のプログラミングステップサイズを低減することにより、誤りを減らすとともにブロックにデータをプログラムすることおよびメモリの寿命を延ばすことが可能となる。
【００３４】
メモリ装置の或るブロックに対してプログラミングステップサイズを第１の値から第２の値へ低減する方法４００の一実施形態を示す流れ図を図４に示す。方法４００は、図１および図３のデータ蓄積装置１０２によって遂行され得る。
【００３５】
４０２では、誤り数をしきい値と比較する。具体的に説明すると、コントローラ１０６は、第１のプログラミングステップサイズ１１６に従って予めプログラムされていたブロック１１０のデータを読み出し得る。図３のＥＣＣエンジン３２０は読み出されたデータに対して復号化操作を遂行し、ワード線３１９の誤り数を提供し得る。ブロック誤り数１２４を判断するため、ブロック１１０の全ワード線の誤り数が合計され得る。ブロック誤り数１２４は、ブロック単位プログラミング調整エンジン１２０へ送信され、しきい値１２２と比較され得る。
【００３６】
４０４では、誤り数がしきい値を満たすか否かが判断される。誤り数がしきい値を満たさない場合には、４０２へ戻る。誤り数がしきい値を満たす場合には、４０６で、メモリ装置の或るブロックに対して、そのブロックの誤り数がしきい値を満たすとする判断に少なくとも部分的に基づいて、プログラミングステップサイズを第１の値から第２の値へ低減し得る。具体的に説明すると、コントローラ１０６は、ブロック誤り数１２４をしきい値１２２と比較し、その比較結果に基づいてプログラミングステップサイズを低減し得る。コントローラ１０６はまた、読み出しディスターブしきい値を満たした比較結果を受けて、プログラミングステップサイズを調整する代わりにブロック１１０でリフレッシュ操作３４０を遂行し得る。例えば、ブロック誤り数１２４がしきい値１２２を上回る場合には、誤りの原因が読み出しディスターブなのか否かを判断するため、読み出し回数３２６を書き込み／消去回数３２８と比較し得る。読み出し回数３２６が書き込み／消去回数３２８を上回る場合には、コントローラは、プログラミングステップサイズを低減するのではなく、リフレッシュ操作３４０を遂行し得る。読み出し回数３２６が書き込み／消去回数３２８を下回る場合には、コントローラ１０６は、ブロック１１０に対する次の書き込み操作で使用する第２のプログラミングステップサイズ１１８をメモリ１０４へ送信し得る。
【００３７】
大きいプログラミングステップサイズでブロック１１０をプログラムすると、プログラミングステップ数が減少し得るため、プログラミングの待ち時間は短くなる。通常、誤りの数はメモリの加齢にともない増加する。メモリの加齢にともない低減されたプログラミングステップサイズでブロックをプログラムすれば、精度を向上させ、誤りを減らし、メモリの寿命を延ばし得る。
【００３８】
本願の図面に示された種々の構成品はブロック構成品として描かれ、一般的な用語で説明されているが、これらの構成品は、データ蓄積装置（例えば、図１および図３のデータ蓄積装置１０２）がこれらの構成品に起因する特定の機能を遂行することを可能にするように構成された１つ以上のマイクロプロセッサ、状態マシン、または他の回路、またはこれらのいかなる組み合わせを含んでもよい。例えば、図１および図３のコントローラ１０６は、プログラミングステップサイズを第１の値（例えば、第１のプログラミングステップサイズ１１６）から第２の値（例えば、第２のプログラミングステップサイズ１１８）へ低減することをブロック単位プログラミング調整エンジン１２０に指図する物理的構成品であってよく、例えばコントローラ、プロセッサ、状態マシン、論理回路、または他の構造であってよい。
【００３９】
コントローラ１０６は、制御情報を生成してブロック単位プログラミング調整エンジン１２０に指図するようにプログラムされたマイクロプロセッサまたはマイクロコントローラを用いて実装されてよい。一実施形態において、コントローラ１０６は、メモリ１０４に蓄積された命令を実行するプロセッサを含む。この代わりにまたはこれに加えて、プロセッサによって実行される実行可能命令が、不揮発性メモリ１０４とは別の独立したメモリ位置（例えば、読み出し専用メモリ（ＲＯＭ））に蓄積されてもよい。
【００４０】
一実施形態において、データ蓄積装置１０２は、１つ以上の外部装置に選択的に結合されるように構成された可搬型装置であってよい。例えば、データ蓄積装置１０２は、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブや取り外し可能なメモリカード等の取り外し可能な装置であってよい。ただし、別の実施形態において、データ蓄積装置１０２は、１つ以上のホスト装置（例えば、可搬型通信装置の筐体）の中に取り付けられてよく、あるいは組み込まれてもよい。例えば、データ蓄積装置１０２はパッケージされた機器（例えば、無線電話機、個人用携帯情報端末（ＰＤＡ）、ゲーム装置またはコンソール、可搬型ナビゲーション装置、コンピュータ、または内蔵型不揮発性メモリを使用する他の装置）の中にあってもよい。一実施形態において、データ蓄積装置１０２は、不揮発性メモリを含み、例えばフラッシュメモリ（例えば、ＮＡＮＤ、ＮＯＲ、マルチレベルセル（ＭＬＣ）、分割ビット線ＮＯＲ（ＤＩＮＯＲ）、ＡＮＤ、高容量結合比（ＨｉＣＲ）、非対称コンタクトレストランジスタ（ＡＣＴ）、または他のフラッシュメモリ）、消去可能でプログラム可能な読み出し専用メモリ（ＥＰＲＯＭ）、電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）、読み出し専用メモリ（ＲＯＭ）、ワンタイムプログラマブルメモリ（ＯＴＰ）、またはその他の類のメモリを含む。
【００４１】
ここに記載された実施形態の説明は、種々の実施形態を全般的に理解するためのものである。本願明細書の開示から別の実施形態を導き出し利用することもでき、本願明細書に開示された範囲から逸脱することなく、構造的および論理的な代替および変更を行うことができる。本願明細書の開示は、種々の実施形態のいかなるおよび全ての後続の適用または変形例を対象として含む。
【００４２】
ここに開示された題材は制限的ではなく説明的とみなすべきものであり、添付の特許請求の範囲は本願明細書の範囲内にあるこのような全ての修正、改良、および他の実施形態を含むことを意図する。法律で許される最大限の範囲において、本発明の範囲は添付の特許請求の範囲およびその同等物の最も広義な解釈によって決定され、前述した詳細な説明によって制限または限定されない。
【図１】
0006014748.tif 000002
【図２】
0006014748.tif 000003
【図３】
0006014748.tif 000004
【図４】
0006014748.tif 000005