(57)【特許請求の範囲】
【請求項１】
メモリバンクであって、
少なくとも2つのサブブロックを含む第1メモリブロックと、
少なくとも2つのサブブロックを含む第2メモリブロックと
を含み、前記第2メモリブロックの空きサブブロックが修正後データを含むことを目的としてプログラムされるように構成されているメモリバンクを備え、
前記第1メモリブロックのサブブロックは、
修正後データの未修正バージョンを含み、
前記修正後データが前記第2メモリブロックの前記空きサブブロックにプログラムされた後に消去される
ように構成され、
前記第2メモリブロックの前記空きサブブロックは、前記第1メモリブロックの前記サブブロックに対する前記第2メモリブロックの前記空きサブブロックのランキングに少なくとも基づいて選択される、フラッシュメモリ装置。
【請求項２】
メモリブロックのサブブロック内のデータを修正するときの磨耗レベリング制御のための方法であって、
新しいメモリブロックの空きサブブロックに対して修正後データをプログラムする段階であって、前記新しいメモリブロックの前記空きサブブロックは、前記メモリブロックの前記サブブロックに対する前記新しいメモリブロックの前記空きサブブロックのランキングに少なくとも基づいて選択される、段階と、
前記メモリブロックの前記サブブロックを消去する段階と
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ装置に関するものであり、特に、フラッシュメモリ向け部分ブロック消去アーキテクチャに関するものである。
【背景技術】
【０００２】
フラッシュメモリは、例えばデジタルカメラやポータブルデジタル音楽プレーヤなどのコンシューマエレクトロニクス用の大容量記憶装置としての広範な用途で一般的に使用されるタイプの不揮発性メモリである。現在入手可能なフラッシュメモリチップの密度は、最大32Gビット(4GB)とすることができ、1つのフラッシュチップのサイズが小さいので、人気のあるUSBフラッシュドライブでの使用に適している。
【０００３】
図1は、従来技術の典型的なフラッシュメモリの全体的なブロック図である。フラッシュメモリ10は、フラッシュ回路の様々な機能を制御する、制御回路12などの論理回路と、アドレス情報、データ情報、およびコマンドデータ情報を格納するレジスタと、必要とされるプログラム電圧および消去電圧を生成する高電圧回路と、メモリアレイ18にアクセスする行アドレスデコーダ14や行アドレスデコーダバッファ16などのコアメモリ回路とを含む。制御回路12は、読取り機能、プログラム機能、消去機能などの内部フラッシュ動作を実行するコマンドデコーダおよび論理回路を含む。図示されるフラッシュメモリ10の回路ブロックの機能は、当技術分野で周知である。図1に示されるフラッシュメモリ10は、多数の可能な構成のうちの1つの可能なフラッシュメモリ構成を表すことを当業者は理解する。
【０００４】
図1のフラッシュメモリ10のメモリセルアレイ18は、特定のフラッシュデバイスについて選択された設計パラメータである、任意の数のバンクからなる。図2は、図1のメモリセルアレイ18の1つのバンク20の編成を示す略図である。バンク20は、ブロック(Block[0]からBlock[k])として編成され、各ブロックは、ページ(WL0からWLi)からなる。kとiはどちらも、ゼロでない整数値である。各ページは、共通ワード線に結合されたメモリセルの行に対応する。ブロックのメモリセルの詳細な説明が次に行われる。
【０００５】
各ブロックは、直列結合で配置され、互いに電気的に結合されたフラッシュメモリセル22を有するNANDメモリセルストリングからなる。したがって、ワード線WL0からWLiは、メモリセルストリング内の各フラッシュメモリセルのゲートに結合される。信号SSL(ストリング選択線)に結合されたストリング選択デバイス24が、ビット線26にメモリセルストリングを選択的に接続し、信号GSL(グランド選択線)に結合されたグランド選択デバイス28が、VSSなどのソース線にメモリセルストリングを選択的に接続する。ストリング選択デバイス24およびグランド選択デバイス28は、nチャネルトランジスタである。
【０００６】
ビット線26(BL0からBLj、ただしjはゼロでない整数値)は、バンク20のすべてのブロックに対して共通であり、各ビット線26は、ブロック[0]から[k]のそれぞれの中の1つのNANDメモリセルストリングに結合される。各ワード線(WL0からWLi)、SSL信号、およびGSL信号は、ブロック内の各NANDメモリセルストリング内の対応する同一のトランジスタデバイスに結合される。当業者には知られているように、1つのワード線に沿ったフラッシュメモリセル内に格納されたデータがデータのページと呼ばれる。
【０００７】
バンク20の外側で、フラッシュメモリセルの1ページ内にプログラムすべき書込みデータの1ページを格納するデータレジスタ30が、各ビット線に結合される。データレジスタ30はまた、フラッシュメモリセルの1ページから読み取られたデータを検知する検知回路をも含む。プログラミング動作中に、データレジスタは、プログラム検証動作を実行して、選択されたワード線に結合されたフラッシュメモリセル内にデータが適切にプログラミングされたことを保証する。高密度を達成するために、各フラッシュメモリセルは、少なくとも2ビットのデータを格納し、一般にはマルチビットセル(MBC)と呼ばれる。
【０００８】
MBCフラッシュメモリに伴う問題は、そのメモリセルの、プログラム外乱に対する感度であることを当業者は理解する。プログラム外乱は、隣接するワード線と浮遊ゲートとの間の容量結合の結果として生じ、隣接するワード線と浮遊ゲートは、各製造技術世代に伴って互いに対してより近接して形成される。したがって、プログラミング中にあるセルに対して印加される高電圧が、隣接するセルのプログラムしきい電圧を、異なる論理状態を表すプログラムしきい電圧にシフトする可能性があり、あるセルのプログラム状態が、現在プログラムされている隣接すラッシュメモリ内のプログラム外乱を最小限に抑えるために、ブロック内のプログラミングは、WL0に対応するページで開始し、WLiまで順次進むことになる。あるいは、プログラミングは、WLiで開始し、WL0まで下に順次進むこともできる。NAND MBCフラッシュメモリセルをプログラミングするこうしたスキームは、当業界で周知である。ブロックがデータで完全にプログラムされると、次のファイルまたはデータの組のプログラミングが、次のブロックのWL0で開始する。デバイス内では、ブロックは通常、順次プログラムされる。
【０００９】
フラッシュメモリ装置は、もはやデータを確実に格納するのに使用することができなくなるまでの消去-プログラムサイクルの数が限られていることが知られている。より具体的には、フラッシュメモリセルは、累積的なプログラム動作および消去動作によるフラッシュメモリセルの漸進的劣化であるプログラム/消去サイクル磨耗の対象となる。メモリブロックは、データでプログラムされる前に常にまず消去され、したがってサイクルをプログラムサイクルと消去サイクルの両方と呼ぶことができることを当業者は理解する。現在周知のすべてのフラッシュメモが消去され、修正後のページおよび未修正のページで再プログラムされることを意味する。そのような累積的なプログラム動作および消去動作の効果は、最適なパラメータを超える、メモリセルのプログラム特性および消去特性の変質である。メモリセルが劣化したとき、メモリセルを所望のしきい電圧にプログラムまたは消去するのに、より高いプログラム電圧および消去電圧が必要となる。最終的に、メモリセルは、プログラムしきい電圧として表されるデータを適切に保持することに失敗する。例えば、MBCフラッシュメモリに関する典型的な消去-プログラムサイクルは、約10,000サイクルである。
【００１０】
現在、入手可能なほとんどのフラッシュメモリは、そのチップサイズに比べて記憶密度が高いために、MBCタイプのものである。MBCタイプはほとんどの消費者応用例に適しているが、10,000サイクルのプログラム-消去限界は、データのプログラミングおよび消去が頻繁な他の応用例にとって十分ではないことがある。したがって、MBCフラッシュメモリがその10,000サイクルの寿命に達したとき、MBCフラッシュメモリはもはや使用不能であり、廃棄しなければならない。この問題は、より頻繁なプログラム-消去サイクルがあるHDD応用例などの商用応用例にとって、より重大である。HDD応用例は、ほとんどの消費者応用例よりも高いデータ保全性を必要とするので、MBCフラッシュメモリの比較的短い10,000サイクルという寿命のために、MBCフラッシュメモリは使用に適さない。
【００１１】
この問題は、フラッシュメモリ装置のブロックサイズが引き続き増加すると共に、格納されるデータファイルサイズが比較的静的なままであることによって悪化する。例えば、今日の高密度フラッシュデバイスに関するブロックサイズは256KBの範囲であるが、将来の高密度フラッシュデバイスは、512KBに近いブロックサイズを有することになる。ブロック内に格納されるデータファイルが小さい場合、データファイルが修正されるとき、ブロックがサイズを有するのと比べて、より多くのメモリセルが不必要に消去/プログラムサイクルの対象となることになる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】米国特許出願第11/565,170号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１３】
したがって、寿命が延長されるように動作可能なフラッシュメモリ装置を提供することが望ましい。
【課題を解決するための手段】
【００１４】
本実施形態の一態様は、従来のフラッシュメモリシステムの少なくとも1つの欠点を回避または軽減することである。
【００１５】
第1の態様では、メモリアレイおよび行回路を有するフラッシュメモリ装置が提供される。メモリアレイは、列として配置されたNANDフラッシュメモリセルストリングの少なくとも1つのブロックを有し、その少なくとも1つのブロックは、選択的に消去可能である、事前設定された数のフラッシュメモリセルを有する。事前設定された数のフラッシュメモリセルを消去するために基板に消去電圧までバイアスがかけられると、行回路は、事前設定された数のフラッシュメモリセルに対応する第1ワード線を第1電圧まで駆動する。第2ワード線に結合されたフフラッシュメモリセルは、マルチビットセル(MBC)でよく、フラッシュメモリセルの1つの順次セットに対応することができ、またはフラッシュメモリセルの2つの順次セットに対応することができ、この場合、フラッシュメモリの2つの順次セットは、互いに隣接しない。本態様の別の実施形態では、少なくとも1つのブロックのNANDフラッシュメモリセルストリングが、共通ソース線に結合され、フラッシュメモリ装置は、消去検証動作中に共通ソース線の電圧を第3電圧と第4電圧の間に設定するソース線電圧制御回路をさらに含む。第4電圧は第3電圧未満であり、共通ソース線の電圧は、第1ワード線の数が増加するにつれて下降する。
【００１６】
第2の態様では、メモリブロックのサブブロックを消去する方法であって、メモリブロックが、第1ワード線、最終ワード線、ならびに第1ワード線と最終ワード線との間の中間ワード線に結合されたNANDメモリセルストリングを有する方法が提供される。この方法は、第1アドレスを有する第1入力アドレスコマンドを発行すること、第2アドレスを有する第2入力アドレスコマンドを発行すること、部分消去コマンドを発行すること、および第1アドレスおよび第2アドレスに対応するワード線によってバインドされるワード線の組を有するサブブロックを消去することを含む。
【００１７】
本態様の一実施形態によれば、第1アドレスはヌルアドレスを含み、サブブロックは、第2アドレスに対応する1つのワード線および第1ワード線によってバインドされるワード線の組を含む。本態様の別の実施形態では、第2アドレスはヌルアドレスを含み、サブブロックは、第1アドレスに対応する1つのワード線および最終ワード線によってバインドされるワード線の組を含む。さらに別の実施形態では、この方法は、消去されたサブブロックを消去検証することをさらに含む。消去検証することは、ビット線を事前充電すること、ワード線の組にバイアスをかけること、非選択ワード線にバイアスをかけること、および検知することを含む。事前充電するステップは、NANDメモリセルストリングに結合されたビット線を事前充電電圧レベルまで事前充電することを含む。ワード線の組に結合された消去済みメモリセルをオンにするために、ワード線の組に第1電圧までバイアスがかけられる。非選択ワード線に結合されたメモリセルをオンにするために、非選択ワード線に第2電圧までバイアスがかけられる。検知することは、事前充電電圧レベルの変化を検知することを含む。
【００１８】
さらに別の実施形態では、第1電圧は負電圧であり、第2電圧は、読取り動作中に使用される読取り電圧である。あるいは、第1電圧は0Vでもよく、第2電圧は、読取り動作中に使用される読取り電圧である。別の実施形態では、NANDメモリセルストリングに結合された共通ソース線に可変ソースバイアス電圧までバイアスがかけられ、可変ソースバイアス電圧は、ワード線の組の数が減少するにつれて0Vから最大電圧まで上昇する。
【００１９】
第3の態様では、メモリブロックのサブブロック内のデータを修正するときの磨耗レベリング制御のための方法が提供される。この方法は、新しいメモリブロックの空きサブブロックに対して修正後データをプログラムすること、およびメモリブロックのサブブロックを消去することを含む。一実施形態では、この方法は、利用可能な最低ランキングのサブブロックに対して新しいデータをプログラムすることをさらに含み、各メモリブロックは、少なくとも2つのサブブロックを含み、利用可能な最低ランキングのサブブロックは、順次プログラミングスキームでプログラムすべき第1ワード線に最も近接するワード線の組を含む。別の実施形態では、この方法は、アドレスマッピングテーブルを更新し、修正後データの論理アドレスを新しいメモリブロックの空きサブブロックに対応する物理アドレスにマッピングすることを含む。さらに別の実施形態では、空きサブブロックは、利用可能な最低ランキングのサブブロックであり、またはサブブロックに等しいランキングを有する。空きサブブロックのランキングがサブブロックに等しいとき、新しいメモリブロックは空であり、または空きサブブロックよりも低いランキングを有する別のサブブロック内に格納された他のデータを含む。あるいは、空きサブブロックは、サブブロックよりも高いランキングを有する。さらに別の実施形態では、この方法は、サブブロックとメモリブロックの他の1つのサブブロックのプログラム/消去サイクル間の差が所定の値に達したとき、サブブロック内のデータを、他の1つのサブブロック内の他のデータとスワップすることを含む。
【００２０】
特定の実施形態についての以下の説明を添付の図と共に検討することにより、本願発明の実施形態の他の態様および特徴が当業者には明らかとなる。
【００２１】
これから、添付の図を参照しながら、単なる例示として実施形態を説明する。
【図面の簡単な説明】
【００２２】
【図１】従来技術の典型的なフラッシュメモリのブロック図である。
【図２】メモリアレイの物理的構成を示す図である。
【図３】フラッシュメモリ装置の部分消去済み物理メモリブロックの概念図である。
【図４】フラッシュメモリアレイの物理メモリブロックの回路詳細を示す回路図である。
【図５】消去検証動作中の、ソース線電圧と、選択されたワード線の数との間の関係を示すグラフである。
【図６】部分ブロック消去および消去検証のための方法のフローチャートである。
【図７ａ】選択的に消去可能なサブブロックの例を示すNANDメモリセルストリングの回路図である。
【図７ｂ】選択的に消去可能なサブブロックの例を示すNANDメモリセルストリングの回路図である。
【図７ｃ】選択的に消去可能なサブブロックの例を示すNANDメモリセルストリングの回路図である。
【図８】メモリブロックのサブブロックを消去するためのコマンドプロトコルを示すフローチャートである。
【図９】図8に示されるコマンドプロトコルを使用して、上位サブブロック、下位サブブロック、またはサブブロックスライスを消去する方法のフローチャートである。
【図１０ａ】相異なる論理サブブロック構成を有するメモリブロックの略図である。
【図１０ｂ】相異なる論理サブブロック構成を有するメモリブロックの略図である。
【図１１】磨耗レベリングアルゴリズムのフローチャートである。
【図１２】図11に示される磨耗レベリングアルゴリズムのサブブロックアロケータサブルーチンである。
【図１３ａ】別のサブブロックに対するデータ再プログラミングの図である。
【図１３ｂ】別のサブブロックに対するデータ再プログラミングの図である。
【図１３ｃ】別のサブブロックに対するデータ再プログラミングの図である。
【図１３ｄ】別のサブブロックに対するデータ再プログラミングの図である。
【図１４】メモリブロックのサブブロック間のプログラム/消去サイクル不均衡を制御する方法のフローチャートである。
【図１５】図14の方法を使用するデータスワッピングの前および後のメモリブロックの図である。
【発明を実施するための形態】
【００２３】
一般に、この実施形態は、フラッシュメモリデバイスの寿命を向上させる方法およびシステムを提供する。フラッシュメモリ装置の各物理メモリブロックは、少なくとも2つの論理サブブロックに分割可能であり、その少なくとも2つの論理サブブロックのそれぞれは消去可能である。したがって、論理ブロックのデータのみが消去および再プログラムされ、他の論理ブロック内の未修正データは、不要なプログラム/消去サイクルを回避する。消去すべき論理サブブロックは、サイズおよびブロック内の位置の点で動的に構成可能である。メモリアレイの物理サブブロックおよび論理サブブロック全体にわたってデータを配布するのに磨耗レベリングアルゴリズムが使用され、物理ブロックの寿命が最大にされる。
【００２４】
図3は、本実施形態による、フラッシュメモリ装置の物理メモリブロック(Block[0]からBlock[k])の概念図である。各物理ブロックは、選択的に消去される論理サブブロックを有することができ、消去されているサブブロックは、任意の数のページからなることができる。図3では、データを格納するメモリブロックの部分が、網掛けで示されており、メモリブロックの消去済みサブブロックは、網掛けを有さない。選択的に消去されているサブブロックのサイズを、物理ブロックの任意の比率となるように事前設定することができ、または実行、各ページがWL0からWLiの方向に順次プログラムされると仮定する。ただし、WLiは、プログラムすべき最後のワード線である。
【００２５】
データがWL0からWLiまで順次プログラムされるこの例では、下位サブブロックと上位サブブロックがある。下位サブブロックは、ワード線の下位の順次セットを含み、上位サブブロックは、ワード線の上位の順次セットを含む。プログラム外乱を最小限に抑えるために、任意のメモリブロックの上位サブブロックが消去および再プログラムされ、下位サブブロックのデータが保持される。このスキームは、以前に消去された物理ブロックが一定のページまで順次プログラムされ、残りのページが消去された状態のままにされる状況に似ている。したがって、消去済み上位サブブロックまでデータが後で順次プログラムされるときに、プログラム外乱が最小限に抑えられる。下位サブブロックを消去することができると共に、データが隣接する上位サブブロック内に保持されるが、隣接する上位サブブロックが消去されるまで、下位サブブロックに対してデータを再プログラムすべきではない。
【００２６】
物理ブロックを部分的に消去するための一般的概念が導入されたので、それ以上の詳細な実施形態が、図4を参照しながら説明される。図4は、フラッシュメモリアレイ、ワード線ドライバブロック102、およびソース線電圧制御回路104の物理ブロック100を示す回路図である。ワード線ドライバブロック102およびソース線電圧制御回路104は通常、物理ブロック100に対してローカルなものである。物理ブロック100は、列として配置されたNANDフラッシュメモリセルストリングを有し、各ストリングは、ビット線BL0からBLj、共通り動作中、および消去動作中に異なる電圧レベルに設定される。ソース線電圧制御回路104は、実行中の前述の動作のうちの1つに応じて、CSLの電圧レベルを設定する任を担う。
【００２７】
以下は、物理ブロック100の消去可能サブブロックの論理構成を示すための例示的シナリオである。物理ブロック100のすべてのページ(WL0からWLn)が、WL0からWLnの方向にデータでプログラムされており、WL27からWLnに結合されたメモリセル内に格納されたデータを修正すべきであると仮定する。したがって、ワード線WL27からWLnに結合されたメモリセル内に格納されたデータのみを消去するように、ビット線、ワード線WL27からWLn、およびソース線CSLにバイアスがかけられる。次いで、修正後データが、同じワたがって、上位サブブロック106のサイズは、消去されるデータに依存するので、上位サブブロック106は、サイズの点で動的に構成可能である。あるいは、サブブロック106およびサブブロック108のサイズを固定することもできる。
【００２８】
サブブロックが消去された後に、データを必ずしも再プログラムしなければならないわけではないので、現在説明している実施形態は、サブブロックの消去および再プログラムに限定されない。このことは、サブブロックがある動作で消去されると、消去されたサブブロックの下の任意の数の順次ページを後の動作で消去することができ、それによって、消去されるサブブロックのサイズが拡張されることを意味する。
【００２９】
前述のように、物理ブロックの特定のページが、ビット線、選択されたワード線および非選択ワード線、ならびにソース線にバイアスをかけることによって消去される。表1および2は、選択された物理ブロック内のページのサブブロックを消去するのに有効な例示的バイアス条件と、非選択物理ブロック内の消去を抑制するのに有効なバイアス条件とを与えるものである。
【００３０】
【表１】
0005633890.tif 000002
【００３１】
表1の例では、非選択ワード線に正電圧のバイアスがかけられ、対応する非選択ページ(複数可)が消去されることが防止される。この電圧はVersと呼ばれる。選択されたワード線に別の電圧、例えば0Vのバイアスがかけられ、選択されたページ(複数化)が消去される。Versなどの正電圧までバイアスがかけられたメモリセルの基板では、0Vまでバイアスがかけられたメモリセルと基板との間に電界が形成され、この電界は、メモリセルを消去するのに有効である。Versまでバイアスがかけられたメモリセルと基板との間の電場は、メモリセルを消去するのには不十分であり、したがって消去が抑制され、メモリセル内に格納されたデータが保持される。
【００３２】
非選択ブロック内のメモリセルの消去を防止するために、非選択ブロック内のすべてのワード線が、消去動作中に浮遊するままにされる。非選択ブロック内の浮遊するワード線は、ほぼ消去電圧Versまで昇圧され、セルアレイの基板にVersまでバイアスがかけられたときに、Versが基板に印加されたときの基板とワード線との間の容量結合により、Versの約90%となることができる。浮遊ワード線上の実際の昇圧電圧レベルは、基板とワード線との間の結合率によって決定されることに留意されたい。非選択ブロック内のワード線上の昇圧電圧は、基板とワード線との間の電界を低減し、それによってメモリセルの消去が抑制される。フラッシュメモリ内のワード線昇圧のより詳しい詳細が、本願と同じ所有者の2006年11月30日出願の米国特許出願第11/565,170号に記載されている。
【００３３】
【表２】
0005633890.tif 000003
【００３４】
表2の例では、バイアス条件は、選択されたブロックの非選択ワード線がほぼ消去電圧Versまで昇圧されることを除いて、表1に示されるものと同一である。一実施形態では、この昇圧電圧はVersの約90%であり、これは、ビット線およびソース線を通じてメモリセルを事前充電し、基板がVersまで上昇するときに基板に対する容量結合を通じてワード線を昇圧することによって達成される。この場合も、消去を抑制するためのワード線昇圧の詳細が、米国特許出願第11/565,170号に詳細に記載されている。表1および2に示される、例示されるバイアス条件は例に過ぎないが、特定の値が製造工程、使用される材料、メモリセルの特定の設計に依存することを当業者は理解することができる。
【００３５】
物理ブロックのサブブロックが消去されると、データが再プログラムされる前に実行すべき任意選択の手続きは、消去検証動作である。消去検証動作は、消去されるセルが、しきい電圧に適切なしきい電圧マージンを有することを保証する。例えば、消去しきい電圧は、ある負電圧値となる。従来のブロック消去アーキテクチャでは、消去検証が、ブロックのすべてのワード線に0Vまでバイアスをかけ、NANDメモリセルストリングを通る電流を検知することによって実行される。0Vよりも高い消去しきい電圧を有する少なくとも1つのメモリセルを有するどんなメモリセルもオンされず、対応するビット線中の電流の欠如が検知される。この従来のスキームは、メモリセルの一部が多数の可能なしきい電圧のうちの1つに対応するデータを依然として保持するときには可能ではない。
【００３６】
一実施形態によれば、部分消去済みブロックのための消去検証動作が、消去されるメモリセルに結合された選択されるワード線に、消去しきい電圧よりも高い電圧までバイアスをかけ、残りのすべての非選択ワード線に、読取り動作のために使用される電圧までバイアスをかけることによって実行される。この電圧はVreadと呼ばれ、例えば4〜5Vの間で変化することができる。表3は、部分消去済みブロックに対する消去検証動作を実施するための例示的バイアス条件を示す。
【００３７】
【表３】
0005633890.tif 000004
【００３８】
一実施形態によれば、ソース線(Vcs)の電圧は、負のしきい値消去電圧が0Vから十分に離間することを保証するために、検証中のワード線の数に対して調節可能である。例えば、負のしきい値消去電圧が少なくとも-0.5Vであるべきであり、消去の結果、しきい値-0.2Vとなる場合、-0.2Vのしきい値を検出するために、ワード線に-0.5Vまでバイアスをかけるべきである。しかし、負の電圧はあるデバイスでは使用に適さないことがあるので、ソース線Vcsが正電圧レベルまで上げられ、選択されたワード線に0Vまでバイアスがかけられる。Vcsに正のバイアスをかけることにより、選択されたワード線は実質的に負となる。当業者はこの効果を理解するはずである。
【００３９】
図5は、ソース線電圧と、検証中の消去されたサブブロックに対応する、選択されたワード線の数との間の関係を示す。x軸は、検証すべきワード線の合計数であり、y軸は、共通ソース線の電圧(Vcs)である。斜め曲線120は、Vcsの電圧レベルと、選択されたワード線の数との間の理想的な関係を表す。Vcs電圧は、検証すべき、選択されたワード線の数が増加するにつれて低下することが明らかである。ただ1つのワード線を検証すべき場合、Vcsを例えば0.4Vなどの第1電圧に設定することができる。他方の極限では、すべてのワード線を検証すべき場合、Vcsを、第2のより低い電圧0Vに設定することができる。したがって、ここで示される実施形態でのVcsの範囲は、0Vから0.4Vの間で変化することができる。各NANDメモリセルストリング内により多くのワード線を有する代替実施形態では、0.4Vよりも高い電圧を使用することができる。
【００４０】
斜め曲線120は理想的であるが、少なくともいくつかの実施例でそれを実施するのに必要な細かい制御は、非現実的である。しかし、当業者は理解するであろうが、選択されたワード線のグルーピングに対する階段形電圧をソース線電圧制御回路104で現実的に実施することができる。階段形曲線122は、可能であるステップサイズおよびワード線グルーピングの一例を示す。第1電圧、第2電圧、ワード線グルーピングのサイズ、およびグルーピング間の電圧ステップサイズの選択は、フラッシュメモリ装置の設計パラメータに基づくことになる。
【００４１】
次に、図6を参照しながら、部分ブロック消去および消去検証方法実施形態が説明される。各部分ブロック消去動作について、図6の方法を実行することができる。この方法は、ステップ200で、ERS_LOOPと呼ばれる消去ループカウンタ変数を1または任意の所望の開始値に等しく設定することによって開始する。ステップ202で、NANDメモリセルストリング内の少なくとも1つのメモリセルを消去するために、部分ブロック消去動作が実行される。このステップは、部分消去命令を受け取ること、消去すべきメモリセル(複数可)に対応するアド(複数可)、ビット線、および他の関連する信号に、選択されたワード線に結合されたメモリセルを消去するのに十分なレベルまでバイアスをかけることを含む。先に示された表1および2は、使用することのできる例示的バイアス値を列挙する。
【００４２】
次に、物理ブロックのサブブロックが部分的に消去された後に、ステップ204で消去検証シーケンスが開始する。このステップは、選択されたワード線の数に基づいて適切なVcsレベルを設定すること、および選択されたワード線に結合されたメモリセルの消去された状態を検知するために、選択されたワード線および非選択ワード線に適切な電圧でバイアスをかけることを含む。先に示された表3は、使用することのできる例示的バイアス値を列挙する。ビット線が事前充電され、ビット線の検知が開始される。ステップ206で、検知が完了し、結果は、部およびGSLにVreadまでバイアスをかけることにより、選択されたワード線に結合されたすべてのメモリセルが0V未満のしきい電圧を有する場合、高電圧レベルまで事前充電された対応するビット線が、Vcsまで放電することになり、それによってテストに合格する。しかし、選択されたワード線に結合された少なくとも1つのメモリセルが0Vよりも高いしきい値を有する場合、ビット線はVcsまで放電されず、それによってテストに不合格となる。当業者には周知であるが、どちらのケースも、ビット線センス増幅器回路によって検出することができる。
【００４３】
テストに不合格であった場合、方法はステップ208に進み、カウンタ変数ERS_LOOPが最大値Maxと比較され、現ループカウンタがMax未満である場合、ステップ210でERS_LOOPが増分される。ステップ210より、方法はステップ202に戻り、選択されたサブブロックの部分消去が反復される。2つの条件の一方が満たされるまで、部分消去ステップおよび検証ステップ202、204、206、208、および210が続行される。カウンタ変数ERS_LOOPが最大値Maxに達した場合、第1条件が生じ、その場合、方法はステップ212に進み、ステータスレジスタが更新され、消去不合格ステータスが反映される。あるいは、サブブロックに対応するすべてのページが、別の用途から設計される。次いで、方法はステップ214で終了する。テストに合格した場合、第2条件が生じ、その場合、方法はステップ206からステップ216に進み、ステータスレジスタが更新され、消去合格ステータスが反映される。次いで、このサブブロックは、新しいデータでプログラムされる準備ができる。
【００４４】
まとめると、図3から6に示される実施形態を参照しながら、部分消去の概念が全般的に説明された。メモリブロックを部分に消去することにより、フラッシュメモリ装置は、メモリブロック内にサブブロックと呼ばれるより小さなサブディビジョンを作成することができる。メモリブロック全体を消去する必要なしに、サブブロックを占有するデータを修正することができ、それによってプログラム/消去サイクルが温存され、メモリブロックの寿命が向上する。以下の説明は、どのように特定のサブブロックが消去すべきであるかと選択されるかを論じる。
【００４５】
メモリブロックの何らかのサブブロックを消去すべきであるとき、フラッシュメモリ装置は、メモリブロック内のそのサブブロックの位置についての情報を必要とし、その結果、フラッシュメモリ装置は、バイアス電圧の印加のためにどの行(ワード線)を選択して、それに結合されたメモリセルの消去を実施するかを認識することになる。図7aから7cは、メモリブロック内の消去可能サブブロックの可能な3つのサイズ/位置を示す。
【００４６】
図7aは、WL0からWL31まで順次プログラムされるNANDメモリセルストリングの回路図である。この実施形態では、フラッシュメモリ装置が必要とするのは、開始アドレスとしての1つのワード線アドレスだけである。開始アドレスが受信されると、フラッシュメモリ装置の論理回路が、サブブロックサイズを開始アドレスから最後のワード線、この例ではWL31までとなるように自動的に設定する。図7aを参照しながら例示するために、WL27に対応する開始アドレスが部分消去動作に関して受信された場合、フラッシュメモリ装置の論理回路は定される。サブブロック300に関するワード線の組が決定されると、選択されるワード線および非選択ワード線にバイアスをかけることにより、部分消去手続きおよび消去検証手続きを実行することができる。サブブロック300は上位サブブロックであり、上位サブブロックは、順次プログラムすべき最終ワード線を含むワード線の任意のグルーピングである。
【００４７】
図7bは、図7aのNANDメモリセルストリングの回路図である。図7aの実施形態と同様に、部分消去動作のために必要なのは1つの開始行アドレスだけである。この実施形態では、フラッシュメモリ装置の論理回路は、サブブロックサイズを、開始アドレスから下に第1ワード線WL0までであると自動的に設定することができる。図7bを参照しながら例示するために、WL26に対応する開始アドレスが部分消去動作に関して受信された場合、フラッシュメモリ装置の論理回路は、サブブロック302がW26で開始し、WL0で終了することを決定する。提供される開始アドレスの如何に関わらず、終了アドレスはWL0となるように事前設定される。サブブロック302は下位サブブロックであり、下位サブブロックは、順次プログラムすべき第1ワード線を含むワード線の任意のグルーピングである。
【００４８】
図7aと7bの実施形態のどちらも、1つのメモリブロックを下位サブブロックと上位サブブロックに細分する。しかし、1つのサブブロックが消去され、データで部分的に再プログラムされるだけである場合、依然として消去された状態のページがあることになる。さらに、元のサブブロックの消去は、消去されたページにさらなる消去動作を施すことになり、これは望ましくない。したがって、図7cの実施形態に示されるように、サブブロックスライスを選択することができる。
【００４９】
図7cは、図7aのNANDメモリセルストリングの回路図である。このとき、開始アドレスおよび終了アドレスは、メモリブロック内のサブブロック位置およびサイズを定義する。この実施形態では、フラッシュメモリ装置の論理回路は、サブブロックサイズを、開始アドレスから終了アドレスとなるように自動的に設定する。図7cを参照しながら例示するために、WL2に対応する開始アドレスおよびWL28に対応する終了アドレスが部分消去動作に関して受信された場合、フラッシュメモリ装置の論理回路は、サブブロックスライス304がWL2で開始し、WL28で終了することを決定する。サブブロックスライスは、NANDメモリセルストリングの他のワード線間に配置されたワード線の任意のグルーピングである。プログラム外乱を最小限に抑えるために、WL0およびWL1に対応するページ内に格納されたデータがある場合であっても、WL29からWL31に対応するページが消去されることを条件として、サブブロックスライス304を反復的に消去し、プログラムすることができる。
【００５０】
図7a〜7cに示されるように、上位サブブロックまたは下位サブブロックを消去するのに少なくとも1つのアドレスが使用され、サブブロックスライスを消去するのに2つのアドレスが使用される。一実施形態によれば、フラッシュメモリコントローラがフラッシュメモリ装置とインターフェースし、上位サブブロック、下位サブブロック、またはサブブロックスライスの消去を開始することを可能にするように、コマンドプロトコルが提供される。フラッシュメモリ装置(複数可)とコンピュータなどのホストシステムとの間のインターフェースとして働く単一のフラッシュメモリコントローラによって、1つまたは複数のフラッシュメモリ装置を制御できることを当業者は理解する。
【００５１】
図8は、メモリブロックのサブブロックを消去するコマンドプロトコル実施形態を示すフローチャートである。図1の制御回路12で実装することのできるフラッシュメモリ制御論理が、このコマンドプロトコルに応答するように構成されると仮定する。メモリブロックに対して部分消去動作を実行するために、フラッシュメモリコントローラはまず、ステップ400で、第1アドレスを含むアドレス入力コマンドを発行する。それに続いてステップ402で、フラッシュメモリコントローラは、第2アドレスを含む別のアドレス入力コマンドを発行する。後でよりよい。部分消去コマンドがステップ404で発行され、以前に受信された第1および第2アドレスに応じて、上位サブブロック、下位サブブロック、またはサブブロックスライスが、ステップ406で消去される。ステップ406で消去することは、ワード線、ビット線、およびソース線に、その適切な電圧レベルまでバイアスをかけることを含む。
【００５２】
このコマンドプロトコル例では、3つのアドレスの組合せが可能にされる。第1のケースでは、第1アドレスが有効であり、第2アドレスがヌルであるとき、制御論理は、第1アドレスに対応するワード線(NANDメモリセルチェーンの第1ワード線と最終ワード線の間の中間ワード線と呼ばれる)から、NANDメモリセルストリングの最終ワード線、この例ではWL31までによってバインドされ、それらを含む上位サブブロックを選択する。第2のケースでは、第1アドレスがヌルであり、第2アドレスが有効であるとき、制御論理は、第2アドレスに対応では、第1および第2アドレスが有効であるとき、制御論理は、第1および第2アドレスに対応するワード線によってバインドされ、それらを含むサブブロックスライスを選択する。当業者は、上記で列挙された3つの状況が、可能な1つのプロトコル構成を表すことを理解する。一代替構成では、第1のケースの結果、下位サブブロックが選択され、第2のケースの結果、上位サブブロックが選択される。さらに別の代替実施形態では、第1および第2入力アドレスコマンドのいずれかが発行される前に、部分消去コマンドを発行することができる。
【００５３】
図9は、図8に示されるコマンドプロトコルを使用して、上位サブブロック、下位サブブロック、またはサブブロックスライスを消去する特定の方法実施形態のフローチャートである。より具体的には、上位サブブロック、下位サブブロック、およびサブブロックスライスのうちの1つが、第1入力アドレスコマンドおよび第2入力アドレスコマンドと共に受信された第1または第2有効アドレスの存在または欠如に基づいて消去される。以下の説明のために、フラッシュコントローラが、フラッシュメモリ装置のメモリブロックのサブブロックを消去する部分消去コマンドを発行するように構成され、フラッシュメモリ装置が、部分消去動作および消去検証動作のためにワード線、ビット線、および他の信号にバイアスをかける制御論理を含むと仮定する。
【００５４】
図9の方法は、図8のコマンドプロトコルによる、アドレス入力コマンドおよび消去コマンドに応答する、フラッシュメモリ装置制御論理の論理演算を示す。図9の方法はステップ500で開始し、第1アドレス入力コマンドが受信される。このアドレス入力コマンドは、メモリブロックのNANDメモリセルストリングのワード線に対応する第1有効アドレス、またはヌルアドレスを含む。第1のケースでは、第1アドレスは有効であり、方法はステップ502に進み、第2アドレス入力コマンドが第2アドレスと共に受信される。第2アドレスは、NANDメモロックが消去され、検証される。ステップ504は、ワード線と、ビット線と、上位サブブロックを消去し、上位サブブロックを消去検証する他の関連信号の適切なバイアシングを含む。
【００５５】
ステップ500に戻ると、第1アドレスが有効アドレスではなく、ヌルアドレスである場合、ステップ502と同一であるステップ508に進む。第2アドレスもヌルアドレスである場合、部分消去方法は終了し、ステップ500に戻る。一方、第2アドレスが有効アドレスである場合、ケース2が生じる。部分消去コマンドがステップ510で受信されると、ステップ512で、下位サブブロックが消去され、検証される。ステップ512は、ワード線と、ビット線と、下位サブブロックを消去し、下位サブブロックを消去検証する他の関連信号の適切なバイアシスが消去され、検証される。ステップ516は、ワード線と、ビット線と、サブブロックスライスを消去し、サブブロックスライスを消去検証する他の関連信号の適切なバイアシングを含む。
【００５６】
コマンドプロトコルは、ケース1では第2有効アドレスを必要とせず、またはケース2では第1有効アドレスを必要としないが、ケース1およびケース2について、それぞれ有効な第2アドレスおよび第1アドレスを受諾するようにコマンドプロトコルを構成することができる。例えば、上位サブブロックを消去するために、第1アドレスは中間ワード線に対応し、第2有効アドレスは例えば最終ワード線WL31に対応する。同様に、下位サブブロックを消去するために、第1アドレスは、第1ワード線WL0に対応し、第2有効アドレスは中間ワード線に対応する。
【００５７】
したがって、図8および9に示されるコマンドプロトコルおよび方法を使用することにより、メモリアレイの他のサブブロック(複数可)のプログラム消去サイクル寿命に影響を及ぼすことなく、メモリブロックの任意のサブブロックを反復的に消去し、データで再プログラムすることができる。任意のサブブロックを消去するように構成された、1つまたは複数のフラッシュメモリ装置を有する任意のフラッシュメモリ装置またはフラッシュメモリシステムを制御して、メモリブロックの寿命を最大にする磨耗レベリングアルゴリズムを実行することができ、それによってフラッシュメモリ装置の寿命が最大となる。磨耗レベリングアルゴリズムなしに動作するフラッシュメモリ装置は、第1メモリブロックから最終メモリブロックまでデータを順次プログラムし、各メモリブロックを、次のメモリブロックをプログラムする前に満たす。システムが第1メモリブロックで継続的にデータをプログラムおよび消去し、他のメモリブロックを未使用のままにする場合、不均一な磨耗が生じることになる。
【００５８】
磨耗レベリングは、フラッシュメモリ装置のすべてのメモリを均一に使用することを保証するスキームである。より具体的には、磨耗レベリングは、すべてのメモリブロックがほぼ同数のプログラムサイクルまたは消去サイクルを受けることを保証する。データがもはや確実に格納されなくなるまで、有限の回数だけフラッシュメモリセルをプログラム/消去できることを当業者は理解する。フラッシュコントローラは、メモリブロックの各メモリブロックまたはページが受けるプログラム/消去サイクルの合計数を追跡する。サイクル数は、メモリアレイの各ペー。次いで、それに応じてマッピングが調節される。
【００５９】
現在周知の磨耗レベリング技法は、異なるメモリブロックにわたってデータをプログラムするのに論理-物理マッピング技法を使用する。例えば、プログラムすべき大きいデータファイルが、第1ブロックに対してプログラムされた第1部分を有することができ、第2ブロックに対してプログラムされた第2部分を有することができ、以下同様である。別の例では、合計で1つのメモリブロックのサイズ未満である複数のデータファイルを、それぞれ異なるメモリブロックに対してプログラムすることができる。したがって、大きいデータファイルの特定の部分、または特定の小さいデータファイルを修正すべきである場合、それを格納する、対応するメモリブロックのみが、プログラム/消去サイクルの対象となる。これらのすべてのスキームに伴う問題は、メモリブロック内に存在する小さいデータファイルまたはデータファイルの一部を修正することがメモリブロック全体の消去を必要とすることである。したがって、メモリブロック内に格納された他のデータも消去され、修正後データが再プログラムされるときに不必要に再プログラムされることになる。これが、メモリブロックの寿命の低下に寄与する主な要因である。
【００６０】
前述の例示的実施形態では、消去すべきサブブロックは、消去または修正すべきメモリブロック内のデータによって決定される任意のサイズであった。サブブロックのデータを修正することは、サブブロックを消去し、修正後データでサブブロックを再プログラムすることによって行うことができる。しかし、このことは、サブブロックに過度に多くのプログラム/消去サイクルを施す可能性があり、それによって、未使用のサブブロックに比べて、あまりにも早くサブブロックの寿命が低下する。したがって、別の実施形態によれば、消去可能サブブロックを活用して不要なプログラム/消去サイクルを最小限に抑える磨耗レベリングアルゴリズムが提供される。
【００６１】
この磨耗レベリングアルゴリズムは、フラッシュメモリ装置のメモリブロックを論理的に所定のサブブロックに分割する。図10aは、メモリブロック600が2つの等しいサイズのサブブロックであるサブブロック0およびサブブロック1に分割される例を示す。サブブロック0はページ0から15からなり、サブブロック1はページ16から31からなる。メモリブロックがページ0からページ31まで順次プログラムされ、各ページが特定のワード線に対応すると仮定する。図10bは、メモリブロック602が4つの等しいサイズのサブブロックであるサブを有することができる。論理サブブロックが決定されると、磨耗レベリングアルゴリズムに従ってデータをプログラムすることができる。
【００６２】
先に議論したように、プログラムすべきサブブロックの上のページ内にデータがないことを条件として、WL0からWL31まで(あるいはWL31からWL0まで)のデータで順次プログラムされたNANDメモリセルストリングは、受けるプログラム外乱が最小限のものとなる。この例では、サブブロックの上のページは、より大きい数を有するワード線に対応する。したがって、図10aの例では、サブブロック0が下位サブブロックと呼ばれ、サブブロック1が上位サブブロックと呼ばれる。この実施形態の磨耗レベリングアルゴリズムでは、上位サブブロフラッシュメモリコントローラは、アドレスマッピングテーブルを参照することにより、上位サブブロック内のデータがあることを認識し、アドレスマッピングテーブルは、下位サブブロックの各ページのスペアフィールドからロードされた1つまたは複数の有効性ビットを含むことができる。有効性ビットの特定の論理状態は、下位サブブロックをプログラムすることができるか否かをフラッシュメモリコントローラに示す。あるいは、上位サブブロックに対応するスペアフィールドの有効性ビットは、データが下位サブブロックまでプログラムされないことを示す。図10bの例では、1対の隣接するサブブロックのうちの、より大きい数字を有するサブブロックが上位サブブロックであり、より小さい数を有する他方のサブブロックが下位サブブロックである。図10bに示されるような、3つ以上のサブブロックを有するように構成されたメモリブロックでは、サブブロック0は最低ランキングのサブブロックであり、サブブロック3が最高ランキングのサブブロックであり、より高いランキングを有する何らかのサブブロック内の格納されたデータがある場合、データはサブブロックまでプログラムされない。
【００６３】
図11に示されるこの実施形態の磨耗レベリングアルゴリズムは、フラッシュメモリ装置に対して新しいデータをプログラムするデータプログラミングサブルーチンと、フラッシュメモリ装置に対して修正後データを再プログラムするデータ修正サブルーチンとを含む。どちらのサブルーチンも、フラッシュメモリ装置のサブブロックが均一に使用されることを保証する。磨耗レベリングアルゴリズムが、所定のサイズのサブブロックを消去するように構成されたフラッシュメモリ装置用のフラッシュメモリコントローラによって実行され、ステップ700で、ホスステップ702で、フラッシュメモリコントローラは、コマンドが新しいデータをプログラムすべきか、それとも現在プログラムされているデータを修正すべきかを判定する。コマンドが新しいデータをプログラムすべきである場合、方法はステップ704に進み、利用可能な最低ランキングのサブブロックに対してデータがプログラムされる。例えば、フラッシュメモリ装置が、図10aに示されるように2つのサブブロック(サブブロック0およびサブブロック1)にそれぞれ論理的に分割される4つの空きメモリブロックからなる場合、あらゆるメモリブロックのサブブロック0に対してデータが次々にプログラムされる。最終的に、すべてのサブブロック0がデータを格納し、プログラムすべき次のデータが、最初に利用可能なサブブロック1に対してプログラムされる。
【００６４】
利用可能な最低のサブブロックに対して新しいデータを最初にプログラムすることにより、すべてのメモリブロックが使用される。しかし、ステップ704を代替データプログラミングスキームで置き換えることができる。この代替スキームでは、新しいデータをプログラムすることは、プログラムすべきデータの高優先順位レベルまたは低優先順位レベルに基づく。ホストシステムは、適切なファイル拡張子を有する音楽ファイルおよび実行可能アプリケーションは高優先順位であり、頻繁に修正されるテキスト文書などのデータファイルは低優先順位であると判定する。データを高優先順位または低優先順位としての指定は、ホストシステムによって任意に設定することができる。
【００６５】
代替データプログラミング実施形態では、ステップ704が、データの優先順位レベルに関する判定ステップで置き換えられる。データが高優先順位と指定される場合、高優先順位データファイルは経時的に修正される可能性が低いので、メモリブロックの利用可能な最低ランキングのサブブロックに対してデータがプログラムされる。利用可能な最低ランキングの下位サブブロックが、データを格納するには小さ過ぎる場合、高優先順位データを分割し、異なるメモリブロックの2つ以上の利用可能な最低ランキングのサブブロックにわたって分散させることができる。あるいは、同一のメモリブロック内の、任意の数の隣接する利用可能な最低ランキングのサブブロックに対してデータをプログラムすることもできる。データが低優先順位と指定される場合、低優先順位データファイルは経時的に修正される可能性が高いので、メモリブロックの利用可能な最高ランキングのサブブロックに対してデータがプログラムされる。サブブロックが小さ過ぎる場合、高優先順位データについて先に説明したのと同様にデータを分散させることができる。
【００６６】
ステップ702に戻ると、コマンドが以前にプログラムされたデータを修正するためのものである場合、方法はステップ710に進む。以前にプログラムされたデータがメモリブロックのサブブロック内に存在するので、サブブロックを消去し、修正後データで再プログラムすることができる。サブブロックが他のデータファイルを含んでいた場合、他のデータファイルが同時に再プログラムされる。しかし、再プログラム前に実行しなければならないサブブロック消去動作は、フラッシュメモリ装置の性能を低下させ、サブブロックにプログラム/消去サイクルをって管理される元のアドレスマッピングテーブルが調節され、元のメモリブロックのサブブロック内に格納されたデータが今や新しいメモリブロックのサブブロック内に物理的に配置されていることが示される。後にシステムが遊休状態であるとき、ステップ714で、データが元々格納されていたサブブロックが消去され、この消去されるサブブロックが、消去され、データを格納するのに利用可能であるとマークされる。消去するステップは、図9で先に説明した方法に追従することができる。サブブロックを後で消去することにより、プログラミング性能が最大となる。
【００６７】
ステップ710で修正後データを再プログラムすることはさらに、フリーサブブロックアロケータサブルーチンによって管理される。このサブルーチンは、フラッシュメモリ装置の他のメモリブロックのステータスに基づいて、データを再プログラムするのに最も適切なサブブロックを識別する。サブブロックアロケータサブルーチン実施形態は、合致する物理サブブロックにデータを最初に再プログラムする優先順位(すなわち同じサブブロックランキング)で、別のメモリブロック内のサブブロックに対してサブブロックのデータを再プログラムする。合致する順位データの配布を可能な限り多く維持することである。図12のフローチャートと、図13aから13dの元のメモリブロックおよび新しいメモリブロックの図とを参照しながら、サブブロックアロケータサブルーチン方法が説明される。
【００６８】
図12の方法は、ステップ800でデータを修正するコマンドが受信されるときに開始する。コマンドは、修正すべきデータが現在存在している元のメモリブロックのサブブロックのアドレス位置に関する情報を含む。ステップ802で、他のメモリブロックが所定の順序付けスキームに従って論理的にソートされ、評価するメモリブロックのシーケンスが求められる。例えば、最も単純なスキームは、メモリブロックの割り当てられた物理/論理位置に基づいて順序を設定することである。第2のスキームは、メモリブロックの占有率に基づいて、例えば完全に空することができ、メモリブロックのアドレスマッピングテーブルは、空であるサブブロックと、各ページまたはメモリブロックのプログラム/消去サイクルの数とを示す。データがプログラムされ、メモリブロックから消去されるときに、この論理ソートを動的に維持することができる。
【００６９】
次いで、メモリブロックの論理的にソートされたリスト中の最初の新しいメモリブロックを評価し、それに対してデータを再プログラムすべきかどうかを判定する。ステップ804で、その新しいメモリブロックが、利用可能な合致する物理サブブロック、すなわち消去されるのと同じランキングのサブブロックを有するかどうかをチェックする。それが新しいメモリブロック内に存在する場合、システムは、ステップ806で、元のデータを現在格納しているサブブロックよりも高いランキングの何らかのサブブロックがあるかどうかをチェックする。プログラムックが空ではない場合、1つまたは複数のより低いランキングのサブブロックに対してプログラムされたデータがあり、ステップ812で、新しいメモリブロックの合致するサブブロックに対してデータが再プログラムされる。
【００７０】
例えば、図13aは、サブブロック0から3を有するように構成された元のメモリブロック900と、やはりサブブロック0から3を有するように構成された、評価すべき新しいメモリブロック902とを示す。網掛けのあるページは、データの存在を示し、網掛けのないページは空であり、以前に消去されたものである。サブブロック1のデータを修正すべきであると仮定すると、合致するサブブロック1がメモリブロック902内で見つかり、メモリブロック902は、下位ランキングのサブブロック0内にプログラムされたデータを含む。メモリブロック902内にはプログラムされたデータを有する上位ランキングのサブブロックがないので、メモリブロック902のサブブロック1に対してデータがプログラムされる。
【００７１】
ステップ810に戻ると、新しいメモリブロックが空である場合、ステップ814で、メモリブロックの第1サブブロック(サブブロック0)に対してデータが再プログラムされる。図13bは、サブブロック0から3を有するように構成された元のメモリブロック900と、やはりサブブロック0から3を有するように構成された、評価すべき新しいメモリブロック904とを示す。この例では、メモリブロック904は空であり、空のメモリブロック904のサブブロック0に対してデータがプログラムされる。
【００７２】
代替実施形態では、ステップ810を省略することができ、新しいメモリブロックが空である場合、合致するサブブロックに対してデータがプログラムされる。別の代替実施形態によれば、新しいメモリブロックのすべての下位ランキングのサブブロックにデータが入れられることを保証する別のステップを含むことにより、メモリブロックの使用量が最大となる。
【００７３】
先に説明したステップ806、808、810、812、および814は、新しいメモリブロック内に合致するサブブロックがある場合に実行される方法ステップである。ステップ804、806、および808の反復によって判定されるように、すべての利用可能なメモリブロックが、データでプログラムされた上位ランキングのサブブロックを有する状況が生じることがある。そのようなケースでは、利用可能な合致するサブブロックをメモリブロックが有さないものとして処理する。ステップ804に戻ると、合致する物理サブブロックがない場合、修正すべきデータを現在格納しているサブブロックよりも上位ランキングのサブブロックに対してデータを再プログラムするステップ816に進む。最初に利用可能な上位ランキングのサブブロックに対して、または利用可能な最低ランキングのサブブロックに対してデータをプログラムすることができる。図13cおよび13dは、上位ランキングのサブブロックに対してデータが再プログラムされるケースを示す。
【００７４】
図13cは、サブブロック0から3を有するように共に構成された、元のメモリブロック900および新しいメモリブロック906を示す。この例では、メモリブロック906のサブブロック1が、現在データを格納しており、したがってメモリブロック900のサブブロック1のデータが、空きメモリブロック904のサブブロック0に対してプログラムされる。図13dは、サブブロック0から3を有するように共に構成された、同じメモリブロック900および新しいメモリブロック908を示す。この例では、メモリブロック908のサブブロック1が空きであるが、上位ランキングのサブブロック2が、他のデータを格納する。したがって、メモリブロック908内の次に最も高い利用可能なサブブロックであるサブブロック3に対してデータが再プログラムされる。
【００７５】
フラッシュメモリ装置の寿命の間に、フラッシュメモリコントローラは、新しいデータがプログラムされ、古いデータが修正されるときに生じる、各サブブロックによって蓄積されたプログラム/消去サイクルの数を監視する。メモリブロック内のあるサブブロックは、メモリブロック内の他のサブブロックよりも多いプログラム/消去サイクル数を有することがある。これにより、メモリブロックのサブブロック間でプログラム/消去サイクルの不均衡が生じる。別の実施形態によれば、所定の条件が満たされるとき、メモリブロックのサブブロック内のデータをスワップし、または別のメモリブロックに移動することができる。そのような一基準は、例えばサブブロック間のプログラム/消去サイクルの所定の差でよい。
【００７６】
図14は、メモリブロックのサブブロック間のプログラム/消去サイクル不均衡を制御する全般的方法のフローチャートである。フラッシュメモリ装置の起動時、またはフラッシュメモリ装置が起動中の任意の時間にこの方法を開始することができ、この方法は、フラッシュメモリコントローラによって実行される。ステップ1000で、メモリブロック内のあらゆる対のサブブロックについて、プログラム/消去サイクル数が走査される。各サブブロックの1つまたは複数のページが、サブブロックが施されるプログラム/消去サイクル数に対応するカウンタをスログラム/消去サイクルカウントのチェックが行われる。プログラム/消去サイクルカウントが、最大の許容値に達した場合、ステップ1004で、サブブロックに格納されたデータが、利用可能なサブブロックにコピーされ、ステップ1006で、元のサブブロックが回収され、または別の用途から設計される。コピーするステップ1004は、図11および12に略述される方法に追従することができる。
【００７７】
そうでない場合、プロセスはステップ1008に進み、最高のプログラム/消去カウントを有するサブブロックと、最低のプログラム/消去カウントを有するサブブロックとの差がΔCycleとなるように計算される。ΔCycleが「Set_diff」と呼ばれる設定限界未満である場合、ステップ1002にループバックし、次のメモリブロックが評価される。一方、ΔCycleが少なくとも「Set_diff」である場合、方法はステップ1010に進み、2つのサブブロック内のデータが、互いにスワップされる。「Set_diff」の値は、製造業者のフラッシュ管理ポリシーに従って、フラッシュメモリシステムの製造業者、またはフラッシュメモリコントローラによって設定される。ステップ1010のサブブロックスワッピングは、まずメモリブロックのすべてのサブブロック内に格納されたデータを、利用可能な物理ブロックまたは他の利用可能なサブブロックにコピーすることによって実行される。元のメモリブロックが消去され、メモリブロックのサブブロックに対してデータが再プログラムされ、それによって2つのサブブロックのデータがスワップされる。データのための一時ストレージとして働く他のメモリブロック、または利用可能なサブブロックを、先に教示したように全メモリブロック消去または部分消去によって任意の時間に消去することができる。次いで、アドレスマッピングテーブルが更新され、スワップされたデータの物理位置の変化が反映される。
【００７８】
図15aは、サブブロック0から3を有するように構成された元のメモリブロック1100を示し、サブブロック0がデータDATA Aを格納し、サブブロック1がDATA Bを格納し、サブブロック2がDATA Cを格納し、サブブロック3がDATA Dを格納する。サブブロック0および3がΔCycle>「Set_diff」を有すると判定された場合、データがスワップされる。図15bは、データスワッピング後に得られるメモリブロック1100内のデータマッピングを示す。この場合、サブブロック0がDATA Dを格納し、サブブロック3がDATA Aを格納する。
【００７９】
すべてのメモリブロックのデータがスワップされると、通常のプログラミング動作を進めることができる。例えば、フラッシュメモリ装置に対して新しいデータをプログラムすることができ、既存のデータを修正することができる。
【００８０】
前述の実施形態は、ワード線、ビット線、および他の関連信号にバイアスをかけることにより、サブブロックと呼ばれるメモリブロックの部分の選択的消去を可能にする。したがって、データが修正されるサブブロックのみがプログラム/消去サイクルの対象となるので、メモリブロックの寿命を延長することができる。サブブロックは任意のサイズでよく、または特定のサイズとなるように事前設定することができる。フラッシュメモリコントローラがフラッシュメモリ装置とインターフェースし、任意のサイズまたは事前設定されたサイズのサブブロックの消去を開始することが可能となるように、コマンドプロトコルが提供される。次いで、このコマンドプロトコルを使用して、フラッシュメモリ装置に対して新しいデータをプログラミングするとき、またはフラッシュメモリ装置内に格納された既存のデータを修正するときに磨耗レベリングアルゴリズムを実行することができる。メモリブロックの寿命を延長するために、こうしたすべての態様をそれら自体で、または組み合わせて使用することができる。
【００８１】
2つまたは4つのサブブロックをその中に有するメモリブロックを参照しながら、前述の実施形態が説明された。しかし、実施形態は、任意の数のサブブロックに論理的に分割可能なメモリブロックに適用可能である。
【００８２】
上記の説明では、説明の都合上、実施形態の完全な理解を与えるために、多数の詳細が説明された。しかし、こうした特定の詳細が実施形態を実施するために必要ではないことは当業者には明らかである。他の例では、実施形態の態様を不明瞭にしないために、周知の電気的構造および回路がブロック図形式で示される。例えば、本明細書に記載の実施形態がソフトウェアルーチンで実現されるか、ハードウェア回路で実現されるか、ファームウェアで実現されるか、またはそれらの組合せとして実現されるかに関して、特定の詳細は提供されない。
【００８３】
上述の実施形態は単なる例であるものとする。本明細書に添付される特許請求の範囲によって専ら定義される範囲から逸脱することなく、特定の実施形態に対して変更、修正、および変形を当業者は実施することができる。
【符号の説明】
【００８４】
100  物理ブロック
102  ワード線ドライバブロック
104  ソース線電圧制御回路
106  上位サブブロック
108  下位サブブロック
300  サブブロック
302  サブブロック
304  サブブロックスライス
600  メモリブロック
602  メモリブロック
900  メモリブロック
902  メモリブロック
904  メモリブロック
906  メモリブロック
1100  メモリブロック
【図１】
0005633890.tif 000005
【図２】
0005633890.tif 000006
【図３】
0005633890.tif 000007
【図４】
0005633890.tif 000008
【図５】
0005633890.tif 000009
【図６】
0005633890.tif 000010
【図７ａ】
0005633890.tif 000011
【図７ｂ】
0005633890.tif 000012
【図７ｃ】
0005633890.tif 000013
【図８】
0005633890.tif 000014
【図９】
0005633890.tif 000015
【図１０ａ】
0005633890.tif 000016
【図１０ｂ】
0005633890.tif 000017
【図１１】
0005633890.tif 000018
【図１２】
0005633890.tif 000019
【図１３ａ】
0005633890.tif 000020
【図１３ｂ】
0005633890.tif 000021
【図１３ｃ】
0005633890.tif 000022
【図１３ｄ】
0005633890.tif 000023
【図１４】
0005633890.tif 000024
【図１５】
0005633890.tif 000025