JP4977473B2 - データラン・プログラミング - Google Patents

データラン・プログラミング Download PDF

Info

Publication number
JP4977473B2
JP4977473B2 JP2006547364A JP2006547364A JP4977473B2 JP 4977473 B2 JP4977473 B2 JP 4977473B2 JP 2006547364 A JP2006547364 A JP 2006547364A JP 2006547364 A JP2006547364 A JP 2006547364A JP 4977473 B2 JP4977473 B2 JP 4977473B2
Authority
JP
Japan
Prior art keywords
data
adaptive
logical
metablock
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006547364A
Other languages
English (en)
Other versions
JP2007517325A (ja
Inventor
ダブリュー. シンクレア,アラン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/749,189 external-priority patent/US7433993B2/en
Priority claimed from US10/841,118 external-priority patent/US20050144363A1/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of JP2007517325A publication Critical patent/JP2007517325A/ja
Application granted granted Critical
Publication of JP4977473B2 publication Critical patent/JP4977473B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Description

本発明は、不揮発性メモリシステムの操作に関し、特にこのようなメモリシステム内でのデータの処理に関する。
今日、特に小型形状のファクタカードの形式である商業的に成功した不揮発性メモリ製品が多くあり、それらは1つ以上の集積回路チップ上に形成されたフラッシュEEPROM(フラッシュ形の電気的に消去可能でプログラム可能な読み出し専用メモリ)のアレイを使用する。メモリコントローラは、必ずしもそうとは限らないが普通は別の集積回路チップ上にあり、カードが取り外し可能に接続されているホストとインターフェイスし、そのカード内のメモリアレイの動作を制御する。このようなコントローラは、通常、マイクロプロセッサと、何らかの不揮発性読み出し専用メモリ(ROM)と、揮発性ランダムアクセスメモリ(RAM)と、データのプログラミングおよび読み出し中にデータからそれがコントローラを通るときに誤り訂正符号(ECC)を計算する回路などの1つ以上の特別の回路とを含む。市販されているカードのうちの幾つかは、コンパクトフラッシュ(登録商標)(CF)カード、マルチメディアカード(MMC)、セキュアデジタル(SD)カード、スマートメディアカード、個人タグ(P−Tag)およびメモリスティックカードである。ホストは、パーソナルコンピュータ、ノートブックコンピュータ、個人用携帯情報端末(PDA)、種々のデータ通信装置、デジタルカメラ、携帯電話、携帯用オーディオプレーヤ、自動車音響システム、および類似のタイプの装置を含む。メモリカードの実装例のほかに、このタイプのメモリは、いろいろなタイプのホストシステムに択一的に埋め込まれてもよい。
2つの一般的なメモリセルアレイの構成、NORおよびNANDが、商業的に応用されている。代表的なNORアレイでは、メモリセルは、列方向に延びる隣接するビットラインソースおよびドレイン拡散部の間に接続され、コントロールゲートがセルの行に沿って延びるワードラインに接続される。メモリセルは、ソースとドレインとの間のセルチャネル領域の少なくとも一部分の上に位置する少なくとも1つの記憶素子を含む。従って、記憶素子のプログラムされたレベルの電荷がセルの動作特性を制御し、アドレス指定されたメモリセルに適切な電圧を印加することにより読み出される。このようなセルの例、メモリシステムにおけるその使用方法およびそれらを製造する方法が、米国特許第5,070,032号(特許文献1)、第5,095,344号(特許文献2)、第5,313,421号(特許文献3)、第5,315,541号(特許文献4)、第5,343,063号(特許文献5)、第5,661,053号(特許文献6)および第6,222,762号(特許文献7)において見いだされ、これらの特許は、本願明細書において引用されている全ての特許および特許出願と共に、その全体が本願明細書において参照により援用されている。
NANDアレイは、個々のビットラインと基準電位との間に1つ以上の選択トランジスタと共に接続された3個以上の、例えば16または32個の、メモリセルの直列ストリングを利用してセルの列を形成する。ワードラインは、これらの多数の列の中でセルを横断して延びる。列の中の個々のセルは、プログラミング中、ストリングを通って流れる電流がアドレス指定されたセルに蓄積されている電荷のレベルに依存するようにストリング中の残りのセルをオンに激しく転換させることによって読み出され検証される。NAND構成のアレイの例と、メモリシステムの一部としてのその動作とが、米国特許第5,570,315号(特許文献8)、第5,774,397号(特許文献9)、第6,046,935号(特許文献10)および第6,522,580号(特許文献11)において見出される。
現在のフラッシュEEPROMアレイの電荷記憶素子は、前に参照により援用されている特許において論じられているように、大概、通常は導伝性のドープされたポリシリコン材料から形成される導電性フローティングゲートである。フラッシュEEPROMシステムで有益な1つの代わりのタイプのメモリセルは、電荷を不揮発性に蓄積するために導伝性フローティングゲートの代わりに非導電性誘電体材料を利用する。酸化シリコン、窒化シリコンおよび酸化シリコン(ONO)から形成される3層誘電体が導電性コントロールゲートと、メモリセルチャネルの上の半導体基板の表面との間に挟まれる。セルは、セルチャネルから窒化物に電子を注入することによってプログラムされ、電子はそこに捉えられて限られた領域に蓄積され、その窒化物にホットホールを注入することによって消去される。誘電体記憶素子を使用する幾つかの特定のセル構造およびアレイが、ハラリらの米国公開特許出願第2003/0109093号(特許文献12)に幾つか記載されている。
個々のフラッシュEEPROMセルは、或る量の電荷を、1ビット以上のデータを表す電荷記憶素子または電荷記憶単位に蓄積する。記憶素子の電荷レベルは、そのメモリセルのしきい値電圧(通例、VT として参照される)を制御し、それをセルの記憶状態を読み出す動作の基礎として使用する。しきい値電圧ウィンドウは、通例、メモリセルの2つ以上の記憶状態の各々について1つずつの、数個の範囲に分割される。これらの範囲は、個々のセルの記憶状態を判定することを可能にする名目上の感知レベルを含む保護帯域により分離される。これらの記憶レベルは、近隣のまたは他の関連するメモリセル、ページまたはブロックにおいて実行される電荷妨害をするプログラミング、読み出しまたは消去動作の結果としてシフトする。従って、通常、コントローラによって誤り訂正符号(ECC)が計算されて、プログラムされるホストデータと共に記憶され、読み出し動作時にデータを検証して必要ならば或るレベルのデータ訂正を実行するために使用される。また、シフトする電荷レベルは、妨害をする操作がそれらを完全にその画定された範囲の外へシフトさせ、従ってエラーのあるデータが読み出されるようになる前に、時折その状態範囲の中心に戻されて再蓄積される。データリフレッシュまたはスクラブと称されるこの処理は、米国特許第5,532,962号(特許文献13)および第5,909,449号(特許文献14)に記載されている。
殆ど全ての集積回路の用途の場合と同様に、何らかの集積回路機能を実現するために必要とされるシリコン基板面積を小さくする圧力は、フラッシュEEPROMメモリセルアレイに関しても存在する。所与のサイズのメモリカードおよび他のタイプのパッケージの記憶容量を増大させるためにシリコン基板の所与の面積に記憶可能なデジタルデータ量を増大させること、或いは容量を増大させかつサイズを減少させることが絶え間なく望まれている。データの記憶密度を増大させる1つの方法は、メモリセルあたりおよび/または記憶単位または記憶素子あたり1ビットより多いデータを記憶させることである。これは記憶素子の電荷レベルの電圧範囲のウィンドウを3つ以上の状態に分割することにより達成される。このような状態を4つ使えば各セルは2ビットのデータを記憶することができ、8つの状態では記憶素子あたり3ビットのデータを記憶することができるなどとなる。フローティングゲートを用いる多状態フラッシュEEPROM構造とその動作とが、米国特許第5,043,940号(特許文献15)および第5,172,338号(特許文献16)に記載され、誘電体フローティングゲートを用いる構造については、前述した米国公開特許出願第2003/0109093号(特許文献12)に記載されている。米国特許第5,930,167号(特許文献17)および第6,456,528号(特許文献18)に記載されているように、多状態メモリセルアレイの選択された部分を種々の理由から2状態(バイナリ)で動作させることもできる。
代表的なフラッシュEEPROMアレイのメモリセルは、一緒に消去されるセルの別々のブロックに分割される。すなわち、消去ブロックは消去単位、すなわち同時に消去可能な最小数のセルである。各消去ブロックは通常1ページ以上のデータを記憶し、ページはプログラミングおよび読み出しの最小単位であるが、別々のサブアレイまたはプレーンで2ページ以上が並行してプログラムされ或いは読み出されてもよい。各ページは通常1セクタ以上のデータを記憶し、セクタのサイズはホストシステムにより確定される。一例としてのセクタは、磁気ディスクドライブに関して確立されている標準規格に従う512バイトのユーザデータと、そのユーザデータおよび/またはそれらが記憶される消去ブロックに関する或る個数のバイトのオーバーヘッド情報とを含む。このようなメモリは、通常、各消去ブロックの中の16,32或いはそれより多数のページで構成され、各ページは1セクタ或いはほんの数個のホストセクタのデータを記憶する。
ユーザデータをメモリアレイにプログラムし、またメモリアレイからユーザデータを読み出す間の並列性の程度を高めるために、アレイは、通常、一般にプレーンと称される複数のサブアレイに分割され、それらは、データのセクタが数個または全てのプレーンの各々に同時にプログラムされ或いはプレーンの各々から同時に読み出されるように並列動作を可能にするそれ自身のデータレジスタおよび他の回路を含む。単一の集積回路上の1つのアレイは複数のプレーンに物理的に分割されてよく、或いは各プレーンが別々の1つ以上の集積回路チップから形成されてもよい。このようなメモリの実装例が、米国特許第5,798,968号(特許文献19)および第5,890,192号(特許文献20)に記載されている。
或るメモリシステムでは、物理的なメモリセルは2つ以上のゾーンにもグループ分けされる。ゾーンは、物理的メモリまたはメモリシステムの、特定の範囲の論理ブロックアドレスがその中にマッピングされる任意の分割された部分集合である。例えば、64メガバイトのデータを記憶可能なメモリシステムは、ゾーンあたり16メガバイトのデータを記憶する4つのゾーンに分割される。このとき論理ブロックアドレスの範囲も4つのグループに分割され、その4つのゾーンのうちの各ゾーンの消去ブロックに1つのグループが割り当てられる。代表的な実装例では、論理ブロックアドレスは、各々のデータが、その中に論理ブロックアドレスがマッピングされる単一の物理ゾーンの外側には決して書き込まれないように、制限される。それ自身のアドレス指定回路、プログラミング回路および読み出し回路を各々有する複数のプレーン(サブアレイ)に分割されているメモリセルアレイでは、各ゾーンは、好ましくは、通常は各プレーンからの同数の消去ブロックである、複数のプレーンからの消去ブロックを含む。ゾーンは、主として、論理から物理への変換のようなアドレス管理を簡単化するために使用され、変換テーブルが小形化し、それらのテーブルを保持するために必要なRAMメモリが少なくなり、メモリの現在のアクティブな領域をアドレス指定するアクセス時間が高速化するという結果をもたらすけれども、制限の多い性質ゆえに最適には及ばない損耗レベリングをもたらす可能性を有する。
さらに効率よくメモリを管理するために、消去ブロック同士を連結して仮想ブロック、すなわちメタブロックを形成してもよい。すなわち、各メタブロックは、各プレーンから1つずつの消去ブロックを規定する。メタブロックの使用は、米国特許第6,763,424号(特許文献21)に記載されている。メタブロックは、データをプログラムし、読み出すための宛先としてホスト論理ブロックアドレスによって特定される。同様に、メタブロックの全ての消去ブロックは一緒に消去される。このような大きなブロックおよび/またはメタブロックで動作するメモリシステムにおけるコントローラは、ホストから受け取られた論理ブロックアドレス(LBA)とメモリセルアレイ内の物理的ブロック番号(PBN)との間の変換を含む幾つかの機能を実行する。ブロック内の個々のページは、通常、ブロックアドレス内でのオフセットにより特定される。アドレス変換は、論理ブロック番号(LBN)と論理ページとの中間項の使用をしばしば必要とする。
メタブロックに記憶されたデータはしばしば更新され、メタブロックで発生する更新の尤度は、メタブロックのデータ容量が大きくなるにつれて大きくなる。1メタブロックの更新されたセクタは、通常、他のメタブロックに書き込まれる。変更されていないセクタも、普通、データを統合するために、同じプログラミング動作の一部として、元のメタブロックから新しいメタブロックにコピーされる。或いは、変更されていないデータは、後に更新されたデータと統合されて再び単一のメタブロックにされるまで、元のメタブロックに留まることができる。
変更されていないセクタをコピーする操作は、消去操作が実行されるまでは元のメタブロックを使用することができないので、コピーに要する時間を増やし、メモリアレイにおいてデータにより占められるスペースを増やすことになる。変更されていないセクタをコピーする操作は、ホストファイルの異なるメタブロックの中への論理的フラグメンテーションの結果である。1つのメタブロックが2つのホストファイルの複数の部分を含む場合、一方のファイルを更新することは、同じメタブロックに記憶されている他方のファイルの部分をコピーすることも含む。メタブロックが大きくなるにつれて、コピーされる部分も大きくなる。従って、メタブロックが大きくなるときに、論理的フラグメンテーションは大きな問題となる。
大きなブロックまたはメタブロックシステムを、消去済みブロックプールにおいて維持されている何らかの余分の消去ブロックと共に操作することは普通のことである。1つの消去ブロックの容量より少ない1ページ以上のデータが更新されるとき、更新されるページをプールからの消去ブロックに書き込み、その後に変更されないページのデータを元の消去ブロックから消去プールブロックへコピーすることは典型的なことである。この技術の変形例が、前に援用されている米国特許第6,763,424号(特許文献21)に記載されている。時間が経つと、ホストデータファイルが再書き込みされ更新される結果として、多数の消去ブロックの割合に少数のページが有効なデータを含み、残りのページが最早現行のものではないデータを含むようになる。アレイのデータ記憶容量を効率よく使用することができるように、有効なデータの論理的に関連し合っているデータページは、時々、多数の消去ブロックの中のフラグメントから集められて、より小数の消去ブロックに統合される。この処理は、一般に“ガーベッジコレクション”と称される。
米国特許第5,070,032号 米国特許第5,095,344号 米国特許第5,313,421号 米国特許第5,315,541号 米国特許第5,343,063号 米国特許第5,661,053号 米国特許第6,222,762号 米国特許第5,570,315号 米国特第5,774,397号許 米国特許第6,046,935号 米国特許第6,522,580号 米国公開特許出願第2003/0109093号 米国特許第5,532,962号 米国特許第5,909,449号 米国特許第5,043,940号 米国特許第5,172,338号 米国特許第5,930,167号 米国特許第6,456,528号 米国特許第5,798,968号 米国特許第5,890,192号 米国特許米国特許第6,763,424号 米国特許出願第10/749,831号 米国特許出願第10/750,155号 本願と同じ日に出願された“スクラッチパッドブロック”という米国特許出願
データは、メモリアレイにおいて適応メタブロックに記憶される。適応メタブロックのサイズは、記憶されるべきデータに合わせて調整される。適応メタブロックのサイズは、データの性質(制御データ、ホストからのデータ)に基づいて決定されてよく、或いはファイル間の境界のようなデータの中の境界に基づいて決定されてもよい。適応メタブロックをデータに応じて構成すると、論理的フラグメンテーションの効果が減少する。
メモリアレイの1つの消去ブロック内のデータに等しいデータを含む論理グループは、論理的に連続するセクタから形成される。適応論理ブロックは論理グループから形成される。適応論理ブロックは、いろいろな数の論理グループを含むことができる。個々の適応論理ブロックはメモリアレイにおいて個々の適応メタブロックに格納される。適応メタブロックの中の消去ブロックの数は、対応する適応論理ブロック内の論理グループの数に等しい。従って、適応メタブロックは、可変的な数の消去ブロックを有する。メタブロックの消去ブロックは、メモリアレイの全てのプレーンよりは少ないプレーンからの消去ブロックである。一度に2つ以上の適応メタブロックをプログラムすることができる。適応メタブロックは、記憶されるべきデータに応じて形成される。大きな適応メタブロックは、プログラミング中に高度の並列性を得るために使用されてもよい。格納されているデータの効率的な更新を可能にするために、より小さな適応メタブロックを使用することができる。
適応論理ブロックは、適応論理ブロック同士の間の境界が、例えばファイルまたはデータのストリームの間の境界などのデータ中の境界を反映するように、形成される。適応論理ブロックをこのように調整することによって、メモリアレイ内でのデータのコピー操作を減らすことができる。データが更新される場合、その更新されたデータを少量の古いデータと共に保持するように新しい適応論理ブロックを形成することができる。従って、同じデータが再び更新されるのであれば、コピーされる必要のある古いデータは少量だけである。
適応論理ブロックが部分的に満たされる場合、そのデータは、より小さな適応論理ブロックにコピーされる。これは、部分的に満たされた適応論理ブロックがプログラムされる前に行われてよく、或いは部分的に満たされた適応論理ブロックが適応メタブロックにプログラムされた後に行われてもよく、その場合には、部分的に満たされた適応論理ブロックを含む適応メタブロックは陳腐とマークされることになる。より小さな適応論理ブロックはメモリアレイにおいてより小さな適応メタブロックにプログラムされる。従って、メモリアレイにおいてスペースが節約されることになる。
更新データを保持するために非順次的に更新されるメタブロック(カオス的ブロック)を使用する構成では、代わりに適応メタブロックを使用することができる。適応メタブロックのサイズは、更新される論理アドレス範囲に応じて選択される。適応メタブロックが特定の論理アドレス範囲に合わせて調整されるならば、その範囲における更新は、データのコピーがより少ないので、より効率的に実行される。
適応メタブロックの形成と、記憶されたデータの位置の記録とは、メディアマネージャによって実行される。メディアマネージャは、利用可能な消去ブロックの記録を維持する。記憶されたデータの位置の記録もメディアマネージャによって維持される。記憶されているデータの位置の記録は、各論理グループについて1つのエントリを有するテーブル(またはリスト)において維持される。各論理グループについてのエントリは、その論理グループを含む適応メタブロック(および対応する適応論理ブロック)のサイズと、その適応論理ブロックの中での論理グループの位置と、メタブロックの消去ブロックのうちの1つの物理的位置とを示す。
データを適応メタブロックに格納するフラッシュメモリアレイと組み合わせて不揮発性ランダムアクセスメモリ(NVRAM)を使用することができる。NVRAMは、データがフラッシュメモリにプログラムされる前に、データを保持するデータバッファとして使用することができる。データがNVRAM内にある間に、それをどのように効率的にプログラムすることができるかを判定することができる。数個のデータストリームをNVRAMにおいて保持し、一緒に効率的な方法でプログラムすることができる。NVRAMは、フラッシュメモリアレイの一部分の代わりとして一定のデータのために代わりの記憶位置を提供することもできる。このアプリケーションでは、NVRAMは、フラッシュメモリと同様に使用されるように構成することができる。NVRAMは、フラッシュメモリの消去ブロックと同じサイズの複数の単位に分割することができる。NVRAMは1つの物理アドレス範囲を持つことができるので、NVRAMに記憶されている論理グループにNVRAM物理アドレス範囲内の物理アドレスが割り当てられる。論理グループは、頻繁に更新されるのであれば、NVRAMに割り当てることになる。従って、フラッシュメモリアレイにおけるコピーおよび消去を行うことなく更新を行うことが可能となる。NVRAMにおけるデータの更新はフラッシュメモリにおける更新より効率的であるが、電源が失われても揮発性メモリの場合のようにデータが失われることはない。
ファイル境界のようなデータ境界が、フラッシュメモリに格納されるべきデータの中に生じる。記憶されるべきデータが論理グループを単位としてアドレス指定される場合、論理グループ同士の間の境界はデータ境界と一致しないことがある。従って、論理グループと、論理グループから形成されるメタグループ(論理ブロック)とがデータ境界を含んでもよい。大きなメタグループおよびメタブロックがデータ境界を含む場合、ファイルの更新は大量のデータをコピーすることを必要とする。これは、システム資源を使用し、新しいデータをメモリアレイに書き込む速度を低下させる。
適応メタブロックは、データ境界を最小サイズの適応メタブロックに格納するように形成することができる。データ境界を最小サイズのメタブロックにプログラムすることによって、その後にファイル内のデータを更新する間にデータをコピーする操作を少なくすることができる。ファイルの更新が行われるとき、そのファイルを含む元のメタブロックは陳腐なデータを含む。幾つかの元のメタブロックは、更新されるファイルの一部ではないデータを含む。それらのデータは、陳腐ではないかも知れず、従って、元のメタブロックが消去されて再使用される前に新しい位置にコピーされる必要がある。このような元のメタブロックをより小さくすることによって、コピーされるデータの量を減らすことができる。1つの消去ブロックから成る適応メタブロックが使用される場合、1論理グループより少ないデータがコピーされる。複数のこのような適応メタブロックは並列にプログラムされるので、縮小された適応メタブロックサイズは、プログラミング中に使用される並列性を低下させるとは限らない。
例えば1つのファイルの末端に存するデータ境界が元のメタブロックの中にあり、そのデータ境界の後にデータがない場合など、或る元のメタブロックはデータで完全に埋められてはいないかもしれない。このような元のメタブロック内のデータは、最小限の空きスペースでデータを保持するサイズのメタブロックにコピーすることができる。これによって、メモリアレイ内のスペースを節約することが可能となる。小さな適応メタブロックは並列にプログラムすることができる。並列にプログラムされる複数の適応メタブロックは、再配置されたデータとホストデータとを含み得るので、再配置操作は、ホストデータがメモリアレイに書き込まれるのと同時に実行される。
或るメモリシステムでは、ホストは、論理境界(例えば、ファイル境界およびデータラン境界)の位置に関して、ホストからメモリシステムに送られるデータで情報をメモリコントローラに供給することができる。ホストにより提供された(或いは他の方法で得られた)論理境界位置に基づいて、データは、始めに中間フォーマットでメモリアレイまたはNVRAMに記憶されることなく、整列したフォーマットでメモリアレイに直接記憶するこができる。論理境界を含まないデータの部分は、メモリアレイの最大サイズのメタブロックに直接書き込まれてもよい。
論理境界を含むデータの部分は、結局、最小サイズのメタブロックに格納される。しかし、このようなメタブロックだけを書き込むのは低速であろうから、データのそのような部分は始めにバッファリングされる。後に整列した態様でメモリアレイに書き込まれるホストからのデータの部分を格納するようにシリアルフラッシュバッファが設けられる。シリアルフラッシュバッファは最大サイズのメタブロックから成るので、データは最大の並列性で書き込まれる。データがシリアルフラッシュバッファからコピーされるときには、一度に2つ以上の適応メタブロックを書き込むことによってデータは高度の並列性で書き込まれる。従って、最小サイズのメタブロックに割り当てられるデータは、始めにシリアルフラッシュバッファに最大の並列性で書き込まれ、後に複数の最小サイズのメタブロックに並列に書き込むことによって最小サイズのメタブロックに高度の並列性でコピーされる。このように、シリアルフラッシュバッファは、小さなメタブロックが使用される場合にも高度の並列性(従って、高度の性能)を保つのに役立つ。中間サイズのメタブロックについて、データはメモリアレイに直接書き込まれてもよく、或いは始めにメタブロックのサイズに応じてバッファリングされてもよい。
メモリに格納されているデータの部分は、部分の各末端に存する論理境界が最小サイズのメタブロックに格納されるときに、完全に整列した態様で格納されていると考えられる。データの部分は、一方の末端に存する論理境界が最小サイズのメタブロックに格納され、かつ他方の末端に存する論理境界が最小サイズのメタブロックに格納されていない場合に、部分的に整列した態様で格納されている。データの部分は、どの論理境界も最小サイズのメタブロックに格納されていなければ、整列していない態様で格納されている。データの部分が更新されるとき、それが更新するデータよりも高度の整列で格納される。
メモリ構成とその動作
始めに図1Aを参照すると、フラッシュメモリはメモリセルアレイおよびコントローラを含む。図に示されている例では、2つの集積回路装置(チップ)11および13が、メモリセルのアレイ15と種々の論理回路17とを含む。論理回路17は、データ、コマンドおよび状態回路を通して別のチップ上のコントローラ19とインターフェイスし、またアドレス指定、データ転送および感知、および他のサポートをアレイ13に提供する。メモリアレイチップの数は、提供される記憶容量に依存して、1から多数とすることができる。メモリセルアレイは、単一のチップ上に配置されてもよく、或いは複数のチップ上の複数のメモリセルから成ってもよい。コントローラと、アレイの一部または全体とを単一の集積回路チップに代わりに結合させることもできるが、現在では経済的な選択肢ではない。
代表的なコントローラ19は、マイクロプロセッサ21と、主としてファームウェアを記憶する読み出し専用メモリ(ROM)23と、主としてメモリチップ11および13に書き込まれ或いはこれらから読み出されるユーザデータの一時的記憶のためのバッファメモリ(RAM)25とを含む。バッファメモリ25は、揮発性または不揮発性のメモリであってよい。回路27はメモリアレイチップ(1つまたは複数)とインターフェイスし、回路29は結線31を通してホストとインターフェイスする。この例ではデータの完全性は、符号を計算するために専用される回路33でECCを計算することにより決定される。ユーザデータがホストからフラッシュメモリアレイに格納されるべく転送されているときに、回路はデータからECCを計算し、その符号はメモリに格納される。そのユーザデータが後にメモリから読み出されるとき、データは再び回路33を通され、同じアルゴリズムによってECCを計算して、符号を計算されてそのデータと共に格納された符号と比較する。それらが同様であれば、データの完全性が確認される。それらが異なっていれば、利用される特定のECCアルゴリズムに依存して、アルゴリズムによりサポートされる数まで、エラーのあるビットを特定して訂正することができる。
図1Aのメモリの結線31はホストシステムの結線31’と接合し、その例が図1Bに示されている。ホストと図1Aのメモリとの間でのデータ転送はインターフェイス回路35を通る。代表的なホストは、マイクロプロセッサ37と、ファームウェア符号を格納するためのROM39と、RAM41とをも含む。他の回路およびサブシステム43は、しばしば、その特定のホストシステムにより、大容量磁気データ記憶ディスクドライブと、キーボードのためのインターフェイス回路と、モニタなどとを含む。このようなホストの幾つかの例は、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、個人用携帯情報端末(PDA)、MP3およびその他のオーディオプレーヤ、デジタルカメラ、ビデオカメラ、電子ゲーム機械、無線および有線の電話装置、留守番電話、ボイスレコーダ、ネットワークルータおよびその他を含む。
図1Aのメモリは、図1Bのホストと取り外し可能に接続可能な形式でコントローラおよびその全てのメモリアレイ回路装置を含む小形の閉鎖形カードとして実現することができる。すなわち、接合結線31および31’は、カードを取り外して他のホストへ移すことを可能にし、或いは他のカードをホストに接続することによってカードを取り替えることを可能にする。或いは、メモリアレイ装置は、コントローラと結線31とを含むカードと電気的にかつ機械的に接続可能な別のカードに封入されてもよい。他の選択肢として、図1Aのメモリは図1Bのホストの中に埋め込まれてもよく、その場合結線31および31’は永久的に作られる。この場合、メモリは、普通は、他の構成要素と共にホストのエンクロージャーの中に含まれる。さらなる選択肢として、メモリチップ11のようなメモリチップは、間にメモリコントローラを持たずにホストシステムの結線31’に直接結合することができる。この場合、メモリコントローラの機能は、ホストシステムのマイクロプロセッサ37によって実行される。
図2は、メモリアレイの一部分を示し、ここでメモリセルは消去ブロックにグループ分けされ、各消去ブロック内のセルは単一の消去操作の一部分として、普通は同時に、一緒に消去可能である。消去ブロックは、消去の最小単位である。
図2の個々のメモリセル消去ブロックのサイズは変化してもよいが、1つの商業的に実施されている形は、個々の消去ブロック内に単一のセクタのデータを含む。このようなデータセクタの内容が図3に示されている。ユーザデータ51は通常512バイトである。ユーザデータ51の他にオーバーヘッドデータがあり、これは、ユーザデータから計算されたECC53と、セクタデータおよび/または中にそのセクタがプログラムされている消去ブロックに関連するパラメータ55と、パラメータ55およびその他の包含される任意のオーバーヘッドデータから計算されたECC57とを含む。或いは、単一のECCが、ユーザデータ51およびパラメータ55の両方から計算されてもよい。
パラメータ55は、消去ブロックが経験したプログラム/消去サイクルの数に関連する量を含むことができ、この量は各サイクル後に或いは一定の数のサイクルの後に更新される。この経験量が損耗レベリング・アルゴリズムで使用されるときには、全ての消去ブロックの使用(損耗)を均すために論理ブロックアドレスは定期的に異なる物理ブロックアドレスに再マッピングされる。経験量の他の使用法は、プログラミング、読み出しおよび/または消去の電圧およびその他のパラメータをいろいろな消去ブロックが経験したサイクルの数の関数として変更することである。
パラメータ55は、メモリセルの記憶状態の各々に割り当てられる、それらの“回転 (rotation) ”と称されるビット値の表示を含むこともできる。これも、損耗レベリングに関して有益な効果を有する。ステータスまたは状態を示す1つ以上のフラグもパラメータ55に含まれる。消去ブロックをプログラムしかつ/または消去するために使われる電圧レベルの表示もパラメータ55の中に格納されてよく、それらの電圧は、消去ブロックが経験したサイクルの数および他のファクタが変化するときに更新される。パラメータ55の他の例は、消去ブロック内の欠陥のあるセルの特定、この物理ブロック中にマッピングされたデータの論理アドレス、および主消去ブロックに欠陥がある場合における代用の消去ブロックのアドレスを含む。任意のメモリシステムに使われる複数のパラメータ55の具体的な組み合わせは、設計に従って変化する。また、オーバーヘッドデータの一部または全部は、ユーザデータを含むか或いはオーバーヘッドデータが関連する消去ブロックにではなく、その機能に専用される消去ブロックに格納される。
図4のマルチセクタ消去ブロックは図2の単一データセクタ消去ブロックとは異なる。依然として消去の最小単位である例としての消去ブロック59は、4つのページ0〜3を含み、その各々はプログラミングの最小単位である。1つ以上のホストセクタのデータが、普通は、少なくともセクタのデータから計算されたECCを含むオーバーヘッドデータと共に各ページに格納され、図3のデータセクタの形をとることができる。
1つの消去ブロック全体のデータを再書き込みするには、普通、消去ブロックプールの1つの使用可能な消去ブロックに新しいデータをプログラムすることが必要であり、その後に元の消去ブロックが消去されて消去プールに置かれる。1つの消去ブロックの全ページよりは少ないデータが更新されるときには、更新されるデータは、通常、消去済みブロックプールからの1つの消去ブロックの1つのページに格納され、残りの変更されないページ中のデータは元の消去ブロックから新しい消去ブロック中にコピーされる。その後に元の消去ブロックが消去される。この大ブロック管理手法の変形例は、元の消去ブロックからデータを移動させたり、それを消去したりせずに、更新されるデータを他の1つの消去ブロックの1つのページに書き込むことを含む。これは、同じ論理アドレスを有する複数のページをもたらす。データの最も新しいページは、セクタまたはページオーバーヘッドデータ内の1つのフィールドとして記録されるプログラミングの時間のような何らかの便利な手法により特定される。
別のマルチセクタ消去ブロック配置が図5に示されている。ここでは、メモリセルアレイ全体が2つ以上のプレーンに物理的に分割され、4つのプレーン0〜3が示されている。各プレーンは、他のプレーンから大幅に独立して動作するように、自身のデータレジスタ、センス増幅器、アドレス指定デコーダなどを有するメモリセルのサブアレイである。全てのプレーンが単一の集積回路装置上或いは複数の装置上に設けられてよく、一例は、各プレーンを1つ以上の別個の集積回路装置から形成することである。図5のシステム例における各消去ブロックは16個のページP0〜P15を含み、各ページは、1つ、2つまたはそれ以上のホストデータセクタと多少のオーバーヘッドデータとの容量を有する。
メタブロック
さらに他のメモリセル配置が図6に示されている。各プレーンが多数の消去ブロックを含んでいる。操作の並列性の程度を高めるために、別々のプレーン内の消去ブロックが論理的に連結されてメタブロックを形成する。このような1つのメタブロックが図6に示されている。各メタブロックは論理的にアドレス指定可能であり、メモリコントローラは、個々のメタブロックを形成する消去ブロックを割り当てて追跡する。ホストシステムは、データをセクタのストリームの形で供給する。このセクタのストリームは複数の論理ブロックに分割される。ここで、論理ブロックは、メモリアレイの1つのメタブロックに含まれるものと同数のデータセクタを含むデータの論理単位である。メモリコントローラは、各論理ブロックが格納されている記憶位置の記録を維持する。例えば、図6のこのような論理ブロック61は、コントローラによりメタブロックを構成するブロックの物理的ブロック番号(PBN)にマッピングされる論理ブロックアドレス(LBA)により特定される。メタブロックの全てのブロックは一緒に消去され、各ブロックからのページは一般に同時にプログラムされ、読み出される。
図7は、メモリアレイに格納されるデータを示す。データは、ホストにより、データのセクタのストリーム75の形で送られる。セクタは論理ブロック71,72に形成される。次に、論理ブロックはメタブロックにプログラムされる。例えば、論理ブロック72はメタブロック74にプログラムされる。図7は、4つのプレーンを有するメモリアレイ76を示す。メタブロック74は、プレーン0,1,2および3の各々からの1つの消去ブロックを有する。全てのプレーンが並列にプログラム可能なようにメタブロック74はアレイの全てのプレーンにわたって延びる。従って、メタブロックのサイズは、通常、アレイの中のプレーンの数によって決まる。また、対応する論理ブロックのサイズは、このサイズによって決まる。
図8は、データがメタブロックに格納されているメモリアレイにおいて更新されるデータを示す。更新されたデータセクタ81がメモリアレイに格納されるべくホストから受け取られる。更新されたデータセクタ81は、論理ブロック82,83内の元のデータセクタに対応する。論理ブロック82,83内の元のデータはメモリアレイ89内のメタブロック84,85に格納される。従って、メタブロック84内のセクタのうちの幾つかとメタブロック85内のセクタのうちの幾つかとは更新される必要がある一方、その他は更新不要である。更新は、更新されたデータセクタ81を、更新される必要のないメタブロック84,85内の元のセクタと結合することにより行われる。これらの組み合わされたデータは置換メタブロック86,87に書き込まれ、元のメタブロック84,85は陳腐とマークされる。陳腐なメタブロック84,85は、結局、消去されて、ガーベッジコレクションの間に再び使用可能にされる。更新されたデータセクタ81を元のセクタと結合させる操作は、データが受け取られるときに行うことができる。或いは、更新されたデータ81のセクタは他の記憶位置に書き込まれ、後にガーベッジコレクションの一部として元のデータと結合することができる。大きなメタブロックは、並列性が大きいので高速プログラミングを可能にするけれども、大きなメタブロックに格納されているデータを更新するためには、少量の新しいデータだけが受け取られる場合でも大量のデータをコピーすることを必要とする。メタブロックにおいて新しいデータと元のデータとを統合する操作は、ガーベッジコレクションの間に顕著なオーバーヘッドを課すことになる。
適応メタブロック
図9Aは、データをメモリアレイに格納するために使われる適応メタブロック98の例を示す。データは、データのセクタのストリーム99の形で受け取られる。セクタは、論理グループ91,92,93を含む論理グループに形成される。論理グループは、メモリアレイの1つの消去ブロックに格納されているデータの量に等しいデータの論理単位である。論理グループは、ホストから受け取られた論理的に連続する複数のセクタから形成される。各論理グループは、特定の論理アドレス範囲で形成される。このように、論理グループは、多数のセクタを含むことができるけれども一般的には適応メタブロックより小さいデータの中間論理単位である。
論理グループは適応論理ブロックに形成される。適応論理ブロック或いは論理ブロックは“メタグループ”と称されてもよい。“メタグループ”という用語は“適応論理ブロック”という用語と同等であると考えられる。“適応論理ブロック”という用語がこの出願では一般的に使用される。適応論理ブロックは、可変数の論理グループを含む。図9Aにおいて適応論理ブロック95は3つの論理グループ91,92,93を含む。適応論理ブロック96は2つの論理グループを含み、論理ブロック97は4つの論理グループを含む。適応論理ブロック95は適応メタブロック98にプログラムされる。適応論理ブロック95は3つの論理グループ91,92,93を含み、同様に、適応メタブロック98は3つの消去ブロック911,912,913を含む。従って、適応メタブロック98はアレイの各プレーンからの消去ブロックを持っているのではなくて、プレーン0,2および3からの消去ブロックのみを有する。適応メタブロック98はプレーン1からの消去ブロックを持っていない。図9Bは、セクタが論理グループ91,92,93にどのようにマッピングされるかをより詳しく示す。各論理グループ91,92,93は、データのn個のセクタを含む。図9Bも、適応論理ブロック95にマッピングされる論理グループ91,92,93を示す。適応論理ブロックは、メモリアレイ内の対応するサイズの適応メタブロックにプログラムされる。
メタブロック構成の幾つかの例では、メタブロックのサイズは固定される。アレイ内のプレーンの数は、メタブロックのサイズを決定することができる。これらの例では、論理ブロックのサイズも固定され、セクタは所定の仕方で論理ブロックにマッピングされる。従って、論理アドレス空間は、固定された論理アドレス範囲と固定された境界位置とを有する等しいサイズの論理ブロックに分割される。対照的に、適応メタブロックを使用する構成では、適応論理ブロックは固定されたサイズを持たず、適応論理ブロックは所定範囲の論理アドレス空間に限定されない。代わりに、適応論理ブロックのサイズは個々別々であってよく、適応論理ブロックはいろいろな範囲の論理アドレス空間にわたって広がるように形成することができる。論理グループの形成は、それからいろいろなサイズの適応論理ブロックを形成可能な中間データ単位を提供することによって適応メタブロック構成を容易にする。このように、適応メタブロックは固定されたサイズを持たないメタブロックの例であり、適応論理ブロックは固定されたサイズを持たない論理ブロックの例である。
適応メタブロックを形成するために使われるプレーンは、アレイの消去ブロックの効率的な使用を提供するアルゴリズムに従って選択される。プレーン内の使用可能な消去ブロックの数と、特定のプレーンが前の操作から依然として使用中であるか否かということとに基づいてプレーンにいろいろな優先順位を与えることができる。また、そのプレーン内でコピー操作を実行することができるように、更新されているマテリアルのために使用されているのと同じプレーンを新しいマテリアルのために使用することを考慮する。プレーン内でのこのようなデータのコピー(オンチップコピー)は、或る構成ではより効率的である。一般に、選択されたプレーンの中での特定の消去ブロックの選択は重要ではない。
いろいろなサイズの適応メタブロックがあるということの1つの結果は、幾つかの適応メタブロックがアレイの全てのプレーンから1つずつの消去ブロックを含まないことがあるということである。このような適応メタブロックが個別にプログラムされるならば、プログラミングは可能な最大の並列性を用いない。例えば、図9Aでは、プレーン1は、図に示されている操作の時にはプログラムされない。一般に、プログラミング速度を高めるために可能な最大の並列性でプログラムすることが望ましい。より少数のプレーンにプログラムすれば、効率が低下する結果となる。適応メタブロックが小さいが1つのアレイの中に多数のプレーンがあるときには、特にそうである。しかし、同時に2つ以上の適応メタブロックをプログラムすることによって、小さな適応メタブロックで高い並列性を維持することが可能である。
図10は、並列にプログラムされる2つの適応メタブロック1030,1040を示す。メタブロック1030,1040内のデータは、ホストにより供給される更新されたデータ或いはフラッシュメモリ内で再配置されるデータである。図10のメモリアレイ1005は6個のプレーンを有する。適応論理ブロック1001は3つの論理グループ1010〜1012を含む。従って、対応するメタブロック1040は、メモリアレイの3つのプレーンからの3つの消去ブロック1041,1042,1043を必要とする。適応論理ブロック1001が単独でプログラムされるならば、3つのプレーンだけが使用され、他の3つはアイドル状態である。しかし、適応論理ブロック1002が適応論理ブロック1001と並列にプログラムされるので、6個のプレーンのうちの5個が使用される。このように、アレイ内のプレーンの個数より遥かに少ない消去ブロックを含む適応メタブロックでも高度の並列性を達成することができる。
アルゴリズムが種々の基準に従ってプレーンを割り当てるので、適応論理ブロック1001はプレーン1,2および5の中の消去ブロックにプログラムされる一方、適応論理ブロック1002はプレーン0および4の中の消去ブロックにプログラムされる。プレーン3の中のどの消去ブロックも、この操作ではプログラムされない。最大の並列性が望ましいけれども、全てのプログラミング操作において6個のプレーンの全てが一緒にプログラムされるとは限らない。プレーンの中に使用可能な消去ブロックがなければ、そのプレーンはプログラムされない。そのプレーンの中の使用可能な消去ブロックが非常に少なければ、プログラミングのためにプレーンが選択されるときに、そのプレーンには低い優先順位が割り当てられる。ここでは、適応論理ブロック1001および1002を格納するために消去ブロックが5個だけ必要とされる。従って、5つのプレーンだけが選択され、プレーン3は選択されない。プレーン3は、この操作では最低の優先順位を有するプレーンである。しかし、次のプログラミング操作が行われるときに、優先順位は再評価されうる。プレーン0,1,2,4,5の各々において1つ以上の消去ブロックが使用されているので、次の操作については優先順位は変化している可能性がある。従って、プレーン3の中に使用可能な消去ブロックがあるならば、プレーン3は後のプログラミング操作において使用される可能性がある。このアルゴリズムは、特定のプレーンがより速やかに満杯になり、かつ使用不可能になることのないように、いろいろなプレーン内の使用される消去ブロックの数を平均化させる。
個々の適応メタブロックのために使用されるプレーン同士は物理的に隣接していなくてもよい。例えば、図10の適応メタブロック1030はプレーン0および4内に消去ブロック1044,1045を有する一方、適応メタブロック1040はプレーン1,2および5内に消去ブロック1041〜1043を有する。並列にプログラムされる複数の論理ブロックは、論理的に連続していなくてもよい。論理的に分離されている適応論理ブロック同士が並列にプログラムされる。例えば、適応論理ブロック1001および1002は論理的に連続していない。これらは適応論理ブロック1003により分離されている。
1つの適応メタブロック内の全てのデータが、データの更新されたバージョンまたは再配置されたバージョンにより取って代わられて陳腐になると、その適応メタブロックを形成する消去ブロックは消去される必要がある。しかし、その適応メタブロックはアレイの全てのプレーンからの消去ブロックを含んでいないかもしれず、このようなメタブロックが個々に消去されるときには、消去は最大の並列性を使用しない。従って、データのプログラミングは普通に使用されるフラッシュメモリチップにおける消去操作の間に実行されないので、データを消去するために最大速度は達成されず、従ってメモリシステムの実効プログラミング速度は可能な最大速度から減じられる。これは、適応メタブロックを形成する消去ブロックの消去を、各プレーンからの1つの消去ブロックが使用可能になるまで遅らせて最大の消去並列性を達成することによって、克服することができる。消去のために使用可能な消去ブロックはリストにおいて保持され、可能な最大の並列性を達成するためにブロックのセットが消去のために定期的にスケジュールされる。そのリストが幾つかのプレーンの中のブロックを含まないときには、ブロックのより小さなセットの消去が実行される。
図11は、適応メタブロックを使用する可能な幾つかのデータ記憶構成を示す。図11は、入ってくるセクタ内のデータの論理グループへのマッピングと、論理グループの適応論理ブロックへのマッピングとを示す。このマッピングは単に論理的なものであるが、適応論理ブロックがメモリアレイの適応メタブロックにプログラム可能であることを理解されたい。通常、データは始めに、最大の並列性を用いて格納されるセクタのストリームとして受け取られる。従って、最初の書き込みの間、メモリシステムは図7に記載されているシステムのように動作することができる。図11は、適応論理ブロック1101〜1103を示し、各適応論理ブロック1101〜1103は4つの論理グループを有する。従って、適応論理ブロック1101〜1103は、4つのプレーンを有するメモリアレイについての最大サイズの適応論理ブロックである。
後に、元の適応論理ブロックは、論理グループを再マッピングすることによって新しい適応論理ブロックに取って代わられる。例えば、図11の第1の更新では、適応論理ブロック1101は、2つの適応論理ブロック1110および1111に取って代わられる。従って、単一の適応論理ブロックが2つのより小さな適応論理ブロックに取って代わられて、前は境界がなかったところに論理ブロック同士の間の境界が形成される。第1の更新中に適応論理ブロック1113が作られる。適応論理ブロック1113は、前は適応論理ブロック1103の一部であった論理ブロック1122と、前は適応論理ブロック1102の一部であった論理グループ1120,1121とを含む。従って、適応論理ブロック1113は、前は適応論理ブロック1102および1103の間の境界を含んでいた論理アドレス範囲にわたって広がる。適応論理ブロック同士が結合されてより大きな適応論理ブロックを形成してもよい。図11の第2の更新では、論理グループ1111および1112が結合されて論理グループ1115を形成する。ここで、適応論理ブロック1115は、前は適応論理ブロック1111および1112により占められていた論理アドレス範囲にわたって広がっている。このように、適応論理ブロックは、適応論理グループのいろいろな組み合わせから形成することができる。適応論理ブロックのサイズは、1論理グループから最大数の論理グループまでの任意のサイズであってよい。論理グループの最大数は、アレイ内のプレーンの数である。適応論理ブロック構成の変化は、1つ以上の適応論理ブロック内のデータが更新されるときに生じ、或いは他の何らかの理由から生じる。例えば、適応論理ブロック構成は、ガーベッジコレクションの一部として或いはデータ記憶を最適化する予定ルーチン (a scheduled routine)として更新される。
アプリケーション
図12Aは、その後の更新がより効率的に実行されるように、プログラムされているデータを新しいデータで更新する操作を示す。しばしば、プログラムされている適応メタブロックより小さい新しいデータの一部が受け取られて、プログラムされているデータを更新するために使用される。図12Aは、2つの適応論理ブロック1220,1230の部分に対応する新しいデータ1210を示している。この新しいデータは、適応論理ブロック1220と適応論理ブロック1230との間の境界を覆って広がるアドレス範囲を有する。従って、適応論理ブロック1220および1230に対応する適応メタブロック1221,1231は更新を必要とする。
新しいデータ1210は、3つの連続する論理グループ1241,1242および1243のアドレス範囲の中にある1つの論理アドレス範囲にわたって広がる。論理グループ1241〜1243の各々は、更新されるべき少なくとも或る程度の部分を有する。図12Aは、置き換えられるべきデータと置き換えられるべきではないデータとの両方を有する論理グループ1241および1243を示している。論理グループ1242は、置き換えられるべきデータだけを有する。新しい論理グループ1211,1212および1213は、新しいデータ1210と、論理グループ1241および1243からの元のデータ1214および1215の部分とから形成される。新しい適応論理ブロック1250が論理グループ1211〜1213により形成される。適応論理ブロック1250に対応する適応メタブロック1251がメモリアレイにおいて3つの消去ブロック1252〜1254から形成される。適応論理ブロック1256および1257は、その中に新しいデータのない論理グループから形成される。例えば、適応論理ブロック1257は論理グループ1244〜1246から形成される。論理グループ1244〜1246は、メモリアレイ内の適応メタブロック1231からコピーされる。適応論理ブロック1257は適応メタブロック1259にプログラムされる。適応論理ブロック1256は適応メタブロック1258にプログラムされる。このように、3つの適応論理ブロック1250,1256および1257が、前は2つの適応論理ブロック1220,1230により占められていた論理アドレス範囲の中に形成される。3つの適応メタブロック1251,1258および1259が、このデータを記憶するメモリアレイ内に形成される。
図12Aは、第1の更新の後に行われる新しいデータの第2の更新を示す。新しいデータ1260は、新しいデータ1210の論理アドレス範囲と同じ論理アドレス範囲である論理アドレス範囲を有するセクタのストリームから成っている。この状況は、不揮発性メモリシステムでしばしば生じる。同じ範囲のデータが、記憶されるデータ(例えば、FATのようなテーブル、ディレクトリおよびサブディレクトリ、アプリケーションファイル内のインデックス)の性質ゆえに、繰り返して更新されることになる。第2の更新は、適応論理ブロック1250内のデータを取り替えるだけである。従って、第2の更新では適応論理ブロック1250と対応する適応メタブロック1251とだけが更新される。適応論理ブロック1250は、3つの論理グループ1211〜1213だけを含む。適応論理ブロック1256および1257は更新を必要としない。新しいデータ1260は適応論理ブロック1250の論理アドレス範囲の全体にわたって広がっているわけではないので、論理グループ1261および1263を満たすために元のデータの部分1214,1215がコピーされる。論理グループ1261,1262および1263は、新しいデータ1260と元のデータ1214,1215とから形成される。適応論理ブロック1270が論理グループ1261〜1263から形成される。適応論理ブロック1270は、メモリアレイ内の適応メタブロック1271にプログラムされる。元のデータをコピーする操作は、第1の更新の場合より遥かに少ない。元のデータ1214および1215だけがコピーされ、適応論理ブロック1256および1257内のデータは第2の更新ではコピーされない。従って、更新されるデータの論理境界とより密接に一致する境界を有する適応論理ブロックを作ることによって、後の更新をより効率的にすることができる。
図12Bは、再マッピングされる適応論理ブロックを示す。ここでは、データのストリームは2つのファイル1280および1282を含む。ファイル1280は境界1281によってファイル1282から分離されている。一般に、新しいデータがメモリシステムに書き込まれるときには、データのセクタのストリームとして受け取られる。このようなストリームの中にファイル境界がある。或る構成では、このような境界はデータが受け取られるときに識別され、それに応じて適応論理ブロックを構成することができる。他の構成では、ファイル境界の位置は、ホストにより更新される1つの範囲のデータによって表示することができる。図12Bは、論理グループ1286の論理アドレス範囲内に位置するファイル境界1281を示す。初期プログラミング動作の間に、データは適応論理ブロック1290〜1293に形成される。論理ブロック1290〜1293は、各々、8個の論理グループ、すなわち使用されるメモリアレイについての最大サイズ、を含む。ファイル境界1281は、適応論理ブロック1292の中に位置する。適応メタブロック1292に格納されているファイル1280の論理グループが2個未満であっても、ファイル1280を更新するためにはメタブロック1290,1291および1292を更新する必要がある。適応論理ブロック1292の論理グループは新しい適応論理ブロック1294および1295に再マッピングされる。論理ブロック1294は論理グループ1285および1286だけから成る。従って、ファイル1280の一部を含む論理グループは適応論理ブロック1294を形成する一方、ファイル1280の部分を含まない論理グループは適応論理ブロック1295を形成する。ファイル1280を更新するために適応論理ブロック1295を更新する必要はない。従って、ファイル境界が存在すると分かっているところでは、ファイル境界に適合するように調整された境界を有する適応論理ブロックを形成することができる。
図12Cは、データストリーム1280,1282からの代わりのデータの再マッピングを示す。ここでは、ファイル境界1281は論理グループ1286の中に存在する。論理グループ1286は、始めは論理ブロック1296に組み込まれる。ファイル1280を更新するためには、論理ブロック1296の半分より多くのデータがファイル1280からのデータではなくても、論理ブロック1296を更新する必要がある。更新中に、適応論理ブロックの第2のセットが形成される。適応論理ブロック1296は、新しい適応論理ブロック1297,1298,1299に取って代わられる。適応論理ブロック1298はちょうど1つの論理グループのデータを含む。境界1281が適応論理ブロック1298の中に存在するので、データストリーム1280或いはデータストリーム1282を更新するためには、適応論理ブロック1298を更新する必要がある。従って、ファイル1281が論理グループ同士の間の境界と整列していないので、旧データの或る程度のコピーが常に行われる。しかし、適応メタブロック1298は唯一の論理グループを含むので、メタブロック1296のようなより大きなメタブロックが使用される場合と比べて、コピーされるべきデータ量は少ない。このように、ファイル境界を含む適応論理ブロックのサイズを小さくすることによって、更新中のデータのコピー操作を減らすことができる。
図13は、より少量の空きスペースを有するより小さな適応メタブロック1340に再書き込まれる、部分的に満たされている適応メタブロック1321を示す。データのストリームを受け取って、最大の並列性を用いてプログラム可能である。例えば、4つのプレーンを有するアレイにおいて、4つの論理グループを含む適応論理ブロックが形成されて、データが4つの消去ブロックを有するメタブロックまたは適応メタブロックに格納される。しかし、このようなデータのストリームの末端では、1つの適応メタブロックが部分的にのみ満たされる。このような適応メタブロックは、メモリアレイの、格納されるデータのために必要な部分よりも多い量を占める。図13は、受け取られるデータのセクタのストリーム1305を示している。データは、論理グループ1310〜1315を含む論理グループにマッピングされる。論理グループ1310〜1317は、4つの論理グループを各々有する適応論理ブロック1320,1321に形成される。データのセクタのストリーム1305の末端は、論理グループ1315の論理アドレス範囲の中にある1つの論理アドレスに存在する。適応論理ブロック1321は、論理ブロック1314〜1317から形成される。論理グループ1314および1315は、データのセクタのストリーム1305からのデータを含む。論理グループ1316および1317はデータを含まない。このように、適応論理ブロック1321は、空の論理グループ1316および1317と、部分的に満たされた論理グループ1315とを含む。適応論理ブロック1321は適応メタブロック1331にプログラムされる。適応メタブロック1331は、メモリアレイの4つの消去ブロックを含む。空の論理グループ1316および1317と部分的に満たされた論理グループ1315とがあるので、適応メタブロック1331の幾つかの部分は使用されない。これは、メモリアレイ内のスペースを浪費する。図13は、論理グループ1314および1315から形成された適応論理ブロック1340を示している。適応論理ブロック1340は、メモリアレイ内の適応メタブロック1341にプログラムされる。従って、適応メタブロック1341は、1331と同じデータを含むが、メモリアレイにおいて僅か半分のスペースを占めるだけである(4つの消去ブロックでなく、2つの消去ブロック)。適応論理ブロック1340と適応メタブロック1341とは、メモリアレイ内の適応メタブロック1331からデータをコピーすることによって形成される。適応メタブロック1331内のデータが適応メタブロック1341にコピーされるとき、適応メタブロック1331は陳腐とマークされる。その後、適応メタブロック1331は消去されてもよい。
部分的に満たされているメタブロックからより小さなメタブロックへのデータのコピーは、データのセクタのストリーム1305の受け取りからの時間の経過によりトリガされる。コピーする操作は、ガーベッジコレクション・ルーチンの一部として行われてもよい。データのセクタのストリーム1305がバッファ内にある間にデータのセクタのストリーム1305の末端が検出されたならば、1340のようなより小さな適応メタブロックは、受け取られたデータから直接形成される。この場合、データは始めにより大きな適応メタブロックに書き込まれてから後により小さなメタブロックにコピーされるのではない。従って、消去すべき陳腐な適応メタブロックはない。或る構成では、ホストは、データのストリームの末端がどこにあるかを示す信号を送ることができる。そのとき、データのストリームからのセクタを含む論理グループだけを含む適応論理ブロックを形成することができる。
特定のメモリ構成では、更新されたデータを格納するために消去ブロックまたはメタブロックを割り当てることができる。このような消去ブロックおよびメタブロックの例が、2003年12月30日に出願されたコンリーらの“大きな消去ブロックを有する不揮発性メモリシステムの管理”という米国特許出願第10/749,831号(特許文献22)に記載され、その全体が本願明細書において参照により援用されている。メモリアレイのプレーンのための更新されたデータを格納するために、E1およびE2と称される特定のメタブロックが使用される。特定の消去ブロックまたはメタブロックのための更新されたデータを受け取るように、dE1と称される他の消去ブロックまたはメタブロックが割り当てられる。適応メタブロックは、E1,E2,或いはdE1と称されてよい。このような適応メタブロックは、頻繁に更新される論理アドレス範囲に合うように調整される。更新されたデータに適するように選択されたサイズを有する適応メタブロックを形成することによって、元のデータのコピー操作を減らすことができる。E1とdE1とは、更新データを受け取って、それらを非順次的な仕方で格納する。更新データを非順次的に記憶する更新ブロック(またはメタブロック、または適応メタブロック)は、カオス的ブロックと見なされる。
図14は、更新されたデータの論理アドレス範囲に適合させられているサイズを有するカオス的ブロックとしての適応メタブロックの使用を示す。データは、元の適応メタブロック1410を含む元の適応メタブロックに格納される。通常、このような元の適応メタブロックは最大サイズの適応メタブロックである。元の適応メタブロック1410の中のデータに対応する更新されたデータを受け取るように適応メタブロック1420が割り当てられる。適応論理ブロック1411および1421は、元の適応メタブロック1410および適応メタブロック1420に各々対応する。適応論理ブロック1421は、適応論理ブロック1411と同じ論理アドレス範囲を有する。第1の更新データ1415は、適応論理ブロック1411の論理アドレス範囲の中の論理アドレス範囲を有する。元の適応論理ブロック1411の論理アドレス範囲の一部だけが第1の更新で更新される。第1の更新データ1415は非順次的(カオス的)である。従って、適応メタブロック1420はカオス的ブロックとなる。更新データ1415は、図に示されている論理アドレス範囲内のセクタの数個のストリームを含むことができる。同じセクタが数回更新されてもよい。結局、メタブロック1420は満杯になり、統合されなければならない。
第1の統合の間、各セクタの最新のコピーだけが新しい適応メタブロック1422〜1424にコピーされる。更新されたデータに関しては、最新のコピーが適応メタブロック1420から生じ、更新されないデータに関しては最新のコピーが適応メタブロック1410から生じる。統合は、適応メタブロック1410および適応メタブロック1420からのデータを論理的順序で結合させる。適応メタブロック1423に割り当てられる論理アドレス範囲は、第1の更新データ1415の論理アドレス範囲を含む。適応メタブロック1422,1424は、更新されなかったデータだけを含む。
第1の統合の後に第2の更新データ1425が受け取られる。第2の更新データ1425は、第1の更新データ1415と同じ論理アドレス範囲の中にある。第2の更新データ1425は、適応メタブロック1430に格納される新しい適応論理ブロック1431に割り当てられる。適応論理ブロック1431は、適応メタブロック1423に格納されているデータと同じ論理アドレス範囲を有する。適応メタブロック1430は、カオス的に更新され、従ってカオス的ブロックとなることができる。適応メタブロック1430が満たされたとき、適応メタブロック1430および適応メタブロック1423の中のデータが適応メタブロック1440に統合される。そのとき、適応メタブロック1440は適応メタブロック1423に取って代わり、適応メタブロック1423は陳腐とマークされることになる。適応メタブロック1422および1424は変更されないままである。第2の統合では第1の統合の場合より小さい論理アドレス範囲が統合されるので、変更されないデータをコピーする操作は少ない。また、第1の統合後は、更新のために使用される適応メタブロックはより小さいので、メモリアレイにおいて必要とされるスペースはより少ない。さらなる更新が同じ論理アドレス範囲の中で行われ、第2の統合の場合のように統合されることになる。
メディア管理
図15Aは、適応論理ブロック1520の論理グループ1510,1511および1512が適応メタブロック1540の消去ブロック1531,1532および1533にどのようにマッピングされるかを示す。適応論理ブロック1520の中の論理グループの数は適応メタブロック1540内の消去ブロックの数に等しいけれども、この例では個々の論理ブロックは個々の消去ブロックに直接マッピングされない。代わりに、各論理グループ1510〜1512の一部分が適応メタブロック1540の各消去ブロック1531〜1533に格納されるようにデータが格納される。
図15Bは、適応論理ブロック1520のメモリアレイへのマッピングをより詳しく示す。図15Bは、論理グループ1510からのセクタがメモリアレイにおいてどのようにプログラムされるかを示している。論理グループ1510はn個のセクタのデータを含む。メモリアレイのプレーン0〜4は、各々4セクタの幅を有する。或るメモリ構成では、アレイの1つのプレーンにわたって広がる4つのセクタは、並列にプログラムされる。従って、4個のセクタが1つのページを形成し、これはアレイのプログラミングの最小単位である。セクタは通常順次到着し、アレイへの書き込み前にレジスタに格納することができる。適応メタブロックの全ての消去ブロックの中のセクタを並列にプログラムすることができる。例えば、セクタ0〜11は並列にプログラムされる。その後、セクタ12〜23を並列にプログラムすることができる。これは、論理グループ1510の中の全てのセクタがプログラムされるまで続行される。次に、論理グループ1511,1512が順番にプログラムされる。
図15Cは、1つのメモリアレイにおいて3つの消去ブロックにより形成される適応メタブロックを示す。メモリの中でのセクタの配置は図15Bに示されているものと同様であり、数nは32に等しい。しかし、32は3で平等に割り切れないので、1つの論理グループ内のセクタは消去ブロック1551〜1553に平等に分配されない。第1の論理グループはセクタ0〜31から成る。これらのセクタは、消去ブロック1551に12セクタ、消去ブロック1552に12セクタ、消去ブロック1553に8セクタ、分配される。第2の論理グループの第1のセクタ0’は消去ブロック1553にプログラムされる。このように、複数の論理グループは別様にプログラムされ、別々の消去ブロックから始まることができる。別々の論理グループからのセクタを並列にプログラムすることができる。例えば、第1の論理グループからのセクタ24〜31と第2の論理グループからのセクタ0’〜3’は並列にプログラムされる。
図15Dは、並列にプログラムされる2つのメタブロックを示す。消去ブロック1561および1562は適応メタブロック1565を形成し、消去ブロック1563および1564は適応メタブロック1566を形成する。適応メタブロック1565および1566は、各々2つの消去ブロックから成り、従って各適応メタブロック1565および1566はデータの2つの論理グループを含む。適応メタブロック1565は論理グループ1571および1572を含む。適応メタブロック1566は論理グループ1573および1574を含む。論理グループ1571および1573のセクタのプログラミングが示されている。論理グループ1571および1573は並列にプログラムされる。メモリアレイへの第1の書き込みの間に、論理グループ1571からのセクタ1〜8は論理グループ1573からのセクタ1’〜8’と同時にプログラムされる。その後、セクタ9〜16がセクタ9’〜16’と同時にプログラムされる。これは、論理グループ1571および1573内の全てのセクタがプログラムされるまで続く。その後、論理グループ1572および1574が同様にプログラムされる。
図15Eは、並列にプログラムされる3つの適応メタブロックを示す。メタブロック1590は4つの消去ブロックを含み、メタブロック1591は1つの消去ブロックを含み、メタブロック1592は3つの消去ブロックを含む。メタブロック1590〜1592は並列にプログラムされる。メタブロック1590〜1592は異なる数の消去ブロックを含むので、メタブロック1590〜1592の各々においてデータは別様に整列させられる。図15Eは、メタブロック1590〜1592の中でのページの整列を示す。1つのページは、単一のセクタ、4つのセクタ、またはプログラミングの単位としてプログラムされる他の何らかの数のセクタである。図15Eにおいて同じ水平レベルにある別々の消去ブロックに存するデータのページは並列にプログラムされる。例えば、メタブロック1590のページ12〜15と、メタブロック1591のページ3と、メタブロック1592のページ9〜11とは並列にプログラムされる。
図15Fは、データ更新の1つの例を示し、この場合、更新されたデータの第1のセクタは1つの論理グループ内の第1のセクタではない。更新されたデータ1582内の第1のセクタは論理アドレス13を有する。論理グループ1580は、論理アドレス1〜16を有するセクタから構成されている。更新されたデータ1582は、少なくとも2つの論理グループからのセクタを含み、2消去ブロックの適応メタブロックサイズは、更新されたデータ1582を含む始めの2つの論理グループを格納するように選択される。消去ブロック1585および1586は、更新されたデータ1582を含む始めの2つの論理グループを格納するように選択される。論理アドレス13を有する、更新されたデータ1582の第1のセクタは、消去ブロック1585内の第1の位置に書き込まれる。論理アドレス14を有するセクタは第2の位置に書き込まれ、以降、論理グループ内の最後のセクタ、すなわち論理アドレス16を有するセクタが書き込まれるまで、同様である。論理グループ1580からの更新されないデータはその後にメモリアレイにコピーされる。従って、論理グループの第1のセクタと、適応メタブロックに格納された第1のセクタとの間にはオフセットがある。次の論理グループの第1のセクタは通常の仕方で書き込まれるので、1つの適応メタブロックの中で別々の論理グループが別々のオフセットで書かれてもよい。論理アドレス1’を有するセクタは、論理グループ1581を更新するときに最初に書き込まれるセクタである。
図16は、論理グループに応じたメモリアレイ内のデータの位置を記録するために使われるテーブルを示し、ここで適応論理ブロック1610が適応メタブロック1620に格納される。列1は個々の論理グループの各々のアイデンティティを示す。これは論理グループを一意的に明示する論理アドレスである。論理グループは一般に順次に列挙される。列2は、論理グループが格納される適応メタブロックのサイズを示す。サイズは、単に、適応メタブロック内の消去ブロックの個数である。ここでは、メタブロックは3つの消去ブロックから成るので、サイズは全ての論理ブロックについて3である。列3は、適応論理ブロック内の論理グループのグループ番号Nを与える。論理グループは、論理アドレス範囲に従って順次に番号を付される。従って、論理グループL1はN=1を有し、L2はN=2を有し、L3はN=3を有する。列4は、N番目の消去ブロックの適応メタブロック内での位置を与える。これは、消去ブロックの物理的ブロック番号 (physical block number)(PBN)であってよい。適応論理ブロック内の論理グループの数は適応メタブロック内の消去ブロックの数に等しいので、1つの適応メタブロックの消去ブロックの位置の完全な記録は、各論理グループについて1つの消去ブロック位置を記録することによって形成される。
特定の論理グループの位置のテーブルは、メモリシステムのメディア管理の一部分として揮発性または不揮発性のメモリにおいて維持される。メディア管理システムは、使用可能な消去ブロックの位置と、データの論理から物理へのマッピングとを記録した種々のテーブルを持つことができる。メディアマネージャは、メディア管理システムのテーブルを管理する。通常、メディアマネージャは、コントローラ内のファームウェアとして実現される。
図17は、メディアマネージャの例を示す。図17に示されているものに類似したメディアマネージャの動作が、2003年12月30日に出願されたベネットらの“不揮発性メモリおよびブロック管理システムを伴う方法”という米国特許出願第10/750,155号(特許文献23)に記載され、この出願は、その全体が本願明細書において参照により援用されている。メディアマネージャは、適応メタブロックマネージャ、ブロック割り当てマネージャおよびアドレステーブルマネージャを含む。これら3つのマネージャと、これらに関連するテーブルとは、適応メタブロックの管理に特別に関連するものであるので、以下でさらに説明する。
適応メタブロックマネージャは、組み合わせて適応論理ブロックを形成させる論理グループの数、従って適応メタブロック内の消去ブロックの数を、決定する。データがホストから受け取られる場合、この決定は数個のファクタに基づくことができる。ホストからのコマンドシーケンスが評価され、現在のコマンドに基づいて或いはホストコマンドの過去の評価に基づいて適応メタブロックのサイズを決定することができる。評価可能な現在のコマンドの特性は、論理アドレス、コマンドセクタカウント、(DOSクラスタのような)ファイルシステムクラスタとの整列、前のコマンドとの論理的関係、およびファイルシステムセクタに関してのアドレスを含む。非順次タイプの更新ブロックにより管理される範囲のアドレスに関してのアドレスも考慮される。過去の操作の特性は、順次データのストリームについてのホストコマンドシーケンス、完全なファイルについてのホストコマンド構造、頻繁に更新された論理アドレス範囲の記録、および最近書き込まれた順次データの最終アドレスを含むことができる。適応メタブロックマネージャは、情報へのアクセスを得るために適切なホストインターフェイスプロトコルのもとでホストとの対話を確立することができ、それは適切なメタブロックサイズを決定することを可能にする。
データが再配置される場合、適応メタブロックのサイズは、再配置されるデータを含む論理グループの数に基づくことができる。制御データが適応メタブロックに格納される場合、適応メタブロックのサイズは、格納されるべきデータのタイプに応じて固定することができる。大きな適応メタブロックで得られる大きな並列性とより小さな適応メタブロックで得られる減少したガーベッジコレクションとを均衡させることに基づいて適応メタブロックのサイズを決定することができる。必要な消去ブロックの数が適応メタブロックマネージャにより判定されると、その数の消去ブロックを求めるリクエストがブロック割り当てマネージャに送られる。
ブロック割り当てマネージャは、メモリアレイの別々のプレーンから消去ブロックを選択する。プレーンは、プレーン内の使用可能な消去ブロックの数に基づいて選択することができる。種々のサイズの適応メタブロックが使用される場合、プレーンはいろいろなレベルまで満たされる。従って、或るプレーンは満杯になり得るが、その他のプレーンは依然として使用可能な消去ブロックを有する。これが生じたならば、アレイの1つのプレーンが使用不可能となり、それに応じて並列性が限定されることになる。これが生じるのを防止或いは延期するために、ブロック割り当てマネージャは、適応メタブロックを形成する消去ブロックを割り当てるとき、小数の使用可能な消去ブロックを含むプレーンに低い優先順位を与え、多数の使用可能な消去ブロックを含むプレーンに高い優先順位を与える。前の操作から依然としてビジーであるプレーンにも低い優先順位が与えられることになる。データを1プレーンから別のプレーンへ再配置するより効率良く1つのプレーン内で再配置可能な場合、再配置されるデータを有するプレーンに高い優先順位が与えられることになる。ブロック割り当てマネージャは、割り当てブロックリスト(ABL)から使用可能な消去ブロックを選択する。
図18Aは、適応メタブロックに使用される消去済みブロック管理階層を示す。特定のサイズのメタブロックを割り当てるべき旨の適応メタブロックマネージャからのリクエストを受け取ると、ブロック割り当てマネージャは、別々のプレーンから消去ブロックを選択し、ブロックを連結して1つのメタブロックにするように関連する制御構造を更新する。それからの消去済みブロックが使われるプレーンは、所定の基準に従うアルゴリズムにより選択される。より少ない消去済みブロックを含むプレーンに低い優先順位が与えられる。前の操作から依然としてビジーなプレーンは低い優先順位を与えられる。そのプレーンを選択すればデータを他のプレーンからコピーする代わりにそのプレーンの中でコピーすることができるようになるようなプレーンには高い優先順位を与えることができる。或る構成では、このようなプレーン内コピーはより効率的である。
消去済みブロックは、アレイの各プレーンについて別々に管理される。1つのプレーンが選択されたとき、適応メタブロックの部分を形成するためにそのプレーンから任意の消去ブロックが選択されてもよい。通常、消去ブロックはリストの頂上から選択される一方、新たに使用可能になった消去ブロックはリストの底部に加えられる。消去ブロックは、図18Aに示されているように複数のリストの階層により管理される。個々の消去ブロックは、一度に1つのリストにのみ現れる。不良なブロックはどのリストにも現れず、従ってデータ記憶のために使用されない。複数のリスト間で消去済みブロックアドレスを動かすことにより、書き込み/サイクルカウントをメモリアレイ全体に分布させることができる。これは、個々の消去ブロックのエラーの危険を減少させる損耗レベリングを提供する。
割り当てブロックリスト(ABL)1810は、消去済みブロックアドレスの短いリストであり、これからメタブロックを形成するべく消去済みブロックが選択される。従って、ABL1810はリストの階層の頂上にある。ABL1810内で、メモリアレイの各プレーンについて別々のフィールドが維持される。通常、ABL1810は、コントローラRAMのような不揮発性メモリにおいて維持される。しかし、コピーも不揮発性メモリにおいて維持される。
1つの適応メタブロックが形成されるごとにABL1810のコピーがログ1813に書き込まれ、それを形成するために使用された消去済みブロックはABL1810から除去される。このように、ログ1813に存するABL1810のコピーは定期的に更新される。消去操作を通して消去済みブロックが使用可能になると、それはABL1810内の、消去ブロックを含むプレーンに対応するフィールドに加えられる。ABL1810は、電源喪失後に、ログ1813からコピーすることによって、回復可能である。しかし、ログ1813への前のコピーの後に消去済みブロックがABL1810に加えられているために、ログのコピーは最新ではないかもしれない。このような消去済みブロックは、他のデータ構造から容易に特定される。特に、ログ1813は割り当て済みメタブロックの記録を含んでいる。割り当て済みメタブロックは、その中のデータがホストにより現在更新されているメタブロック或いは適応メタブロックである。従って、電源が始めに投入されたとき、元のメタブロックの消去ブロックが消去されているか否かを判定するために元のメタブロックの各消去ブロックの第1のセクタが走査されることになる。消去ブロックが消去されていれば、そのアドレスがABLに加えられる。アドレスデータは、メタブロックサイズ、グループ番号およびブロックアドレスについてのエントリを有する図16に示されているフォーマットで連結された始動論理グループアドレスとしてログ1813において維持される。従って、ABL1810の完全なコピーが電源喪失後に容易に再建可能である。ログは、消去のために使用可能な完全に陳腐なデータを有する消去ブロックのリストも含むことができる。
ABL1810は、所定数のブロックアドレスを消去済みブロックリスト(EBL)1811から移動させることによって初期化されることになる。ABLの各フィールドは、対応するEBLフィールドからアドレスを移動させることによって初期化されることになる。例えば、ABLフィールドは、その容量の半分まで満たされる。メタブロックへの割り当てのために1つのブロックが必要とされるときには、関連するABLフィールド内の第1のブロックが使用され、そのアドレスがABLから除去される。ガーベッジコレクションの間に1つのブロックが消去されるとき、それは関連するABLフィールドの末端に加えられる。
ABL1810は、EBL1811からの消去済みブロックアドレスで再充填されることになる。これは、ABL1810が空の場合に必要になる。消去済みブロックアドレスは、ABL1810の1つのフィールドが満杯または空であるときに、ABL1810とEBL1811との間で交換することができる。交換は、1フィールド(或いは、アレイのプレーン)のみについて或いは全てのフィールドについて行われる。交換は、ABL1810を上まで一杯に満たすことを含み、或いはABL1810内の全てのエントリの完全な交換を含むことができる。交換は、1つのフィールドが満杯または空になったことによりトリガされ、または他のイベントによりトリガされ、或いは定期的に行われる。
EBL1811は、一般に、不揮発性メモリにおいて保持されるセクタに維持される。アレイの各プレーンについて別々のフィールドを有する消去済みブロックのリストを含む。ABL1810と同じフォーマットであり、従ってEBL1811とABL1810との間でエントリを容易に交換することができる。EBL1811は、不揮発性メモリにおいて単一のセクタとして維持されるので、速やかにアクセスされ更新され、従ってEBL1811とABL1810との間での交換を容易にする。EBLとABLとの間でのアドレスの交換は、ABLが満杯或いは空であるときに行われる。或いは、メモリアレイ内の特定の位置を激しく使用することを避けるために交換をもっと頻繁に行ってもよい。EBL1811内のアドレスをABL1810と、プレーンブロックリストと交換することもできる。
EBLセクタだけを含むEBLブロックにおいてEBLセクタが維持される。図18Bは、複数のEBLセクタを有するEBLブロック1801を示す。EBLデータが変更されるとき、新しいEBLセクタが書き込まれ、旧EBLセクタは陳腐になる。従って、陳腐なセクタ1803は、もはや有効ではないEBLの前のコピーを含む。最後に書き込まれたEBLセクタ1802だけが有効である。1つのEBLセクタが各EBLフィールドに列挙されている消去ブロックのカウントを含むこともできる。これらのカウントは、適応メタブロックを形成するときのプレーンを選択する際に1つのファクタとして使用される。これらのカウントのコピーもログ1813において維持される。
PBL1812のような1つのプレーンブロックリスト(PBL)がアレイの各プレーンについての不揮発性メモリにおいて維持される。PBL1812は、メモリアレイの特定のプレーン内の消去ブロックのリストである。ABL1810またはEBL1811に列挙されている消去ブロックはPBL1812に列挙されない。PBL1812は1つのセクタを占めることができるが、セクタは満杯でなくてもよい。通常、PBLは1つまたは複数のPBLブロックにグループ分けされる。PBLブロックは、PBLセクタだけを含む専用ブロックである。1つのPBLセクタ内の情報が変更されるときには、更新されたバージョンがPBLブロック内の次の位置に書き込まれる。旧セクタは陳腐とマークされる。1つの特定のプレーンについて唯一の有効なPBLセクタが特定のPBLブロックの中に存在する。しかし、PBLセクタが別々のPBLブロック内にあるならば、1つの特定のプレーンについて2つ以上の有効なPBLセクタが存在することになる。PBLセクタは、2つのフィールド、消去ブロックの位置を定義するエントリのセットと、PBLブロック内の全ての有効なPBLセクタの位置を列挙するセクタインデックスとを有する。消去ブロックの位置を定義するエントリは、必ずしも特定の順序でなくてもよい。エントリの順序は、対応するEBLフィールドとの交換の結果である。最後に書き込まれたPBLセクタのインデックスだけが有効である。部分的に書き込まれたメモリには、多数の消去済みブロックと、従って多数のPBLブロックを必要とする多数のPBLセクタとがある。しかし、メモリが満たされてゆくとき、消去済みブロックの数は減少し、必要なPBLブロックの数も減少する。論理的に満杯のメモリシステムには、PBLブロックはないかもしれない。PBL1812とEBLとの間でのアドレスの交換は、EBLとABLとの間でのアドレスの交換と同様である。交換は、一方向性または双方向性である。複数のPBLブロックが使用される場合、1つのPBLブロックが交換のために使用されるアクティブなブロックである。アクティブなPBLブロックは定期的に変更される。EBL1811内のフィールドは、バックグラウンド操作として単一のPBLセクタから更新される。
図18Cは、適応メタブロックを使用するメモリシステムにおけるアドレス変換情報についてのアドレステーブル管理階層を示す。データセクタがデータ更新アルゴリズムに従ってメモリアレイに書き込まれるとき、アドレステーブルマネージャは、論理から物理へのマッピングの不揮発性記録を作り、かつメモリアレイ内の任意のセクタの高速変換を可能にするために、アドレステーブル管理階層における関連する制御データ構造を更新する。高速変換は、不揮発性メモリから単一のセクタを読み出すことによって任意のセクタの物理的位置を決定するようにすることによって達成される。不揮発性メモリにおいて物理的位置がまだ更新されていない場合、それを揮発性RAMから速やかに決定することができる。適応メタブロックのサイズおよび構成は可変であるので、メタブロック内のこのような消去可能なブロックの位置を回復することは、それらが不揮発性メモリに格納されていなければ、困難である。従って、メタブロックの消去ブロックの位置は、不揮発性メモリに格納される。
図18Cの階層の頂上には書き込みセクタリスト(WSL)1814がある。WSL1814は、一般に、コントローラRAMのような揮発性メモリにおいて維持される。WSL1814は、ホストにより順次書き込みストリームと関連付けられたか、または不揮発性メモリ内の他の位置から再配置されたセクタを特定する。各ホスト書き込みストリームについて別々のWSLが存在する。ホストからの新しい書き込みストリームのためにメタブロックが割り当てられるときに、1つのWSLが開かれる。WSLは、開始位置と書き込まれたセクタの数などの短縮された形を持つことになる。
ログ1813はWSL1814の下にある。ログ1813は、WSL1814に列挙されているセクタの格納のために割り当てられた適応メタブロックの累積リストを記憶する。ログ1813は、それが更新されるときの全てのWSLのコピーも含む。ログ1813は、メタブロックが割り当てられるごとに更新される。ログ1813は、ログブロックの中のログセクタに含まれる。ログ1813内の情報が変更されるとき、新しいログセクタがログブロック内の次の使用可能な位置に書き込まれる。前のログセクタは陳腐になり、最後に書き込まれたログセクタだけが有効である。ログ1813の下には一時的グループアドレステーブル(TGAT)1815とグループアドレステーブル(GAT)1816とがある。GAT1816は、論理グループアドレス順に順次に配置されている全ての論理グループについての物理アドレスを含む不揮発性メモリ内のセクタに格納されるアドレステーブルである。従って、GAT内のn番目のエントリは、論理グループアドレスnを有する論理グループに関連する。GAT1816に格納されているアドレスデータは、メタブロックサイズ、グループ番号およびブロックアドレスについてのエントリを有する図16に示されているフォーマットである。
GATセクタは、論理グループの1つの論理的に連続するセットについてのエントリを有する1つの専用GATブロックに格納される。GATブロックは2つの区画、すなわちGAT区画およびTGAT区画に分割される。GAT区画は、GATブロックの論理アドレス範囲内の各論理グループについての1つの元のエントリを含む。TGAT区画は、GATセクタと同じフォーマットを有するセクタを含む。TGATセクタは、GATを更新する前にアドレスデータを更新するために使用される。定期的に、1つのブロック内のGAT区画は、TGAT区画内のセクタに記録された更新を組み込むように書き換えられる。TGATセクタは、アドレス情報を更新するためにGAT内の対応するセクタに一時的に取って代わる。TGATセクタは、有効なTGATセクタのインデックスを含む。このインデックスは最後に書き込まれたTGATセクタ内でのみ有効である。このようなインデックスはGATのためには不要である。TGATセクタは、WSLと関連付けられたログからのアドレス情報でGATセクタを更新する。その後、WSLおよびログエントリは削除される。
特定の論理アドレスを有するデータのセクタの物理的セクタアドレスは、リスト1814〜1816から決定される。そのセクタが最近書き込まれたか否かを判定するために始めにWSLが読み出される。そうであるならば、物理的セクタアドレスはWSL内のセクタの位置に対応するメタブロックアドレスから見出される。セクタがWSL内に見出されなければ、セクタがTGATエントリを有するか否かを判定するためにTGATセクタ内のインデックスが読み出される。そうであるならば、物理的セクタアドレスは、適切なTGATセクタを読み出すことによって判定される。セクタがWSLにもTGATにも列挙されていなければ、その物理的位置を判定するために適切なGATセクタが読み出される。データが順次アドレス順に書き込まれ或いは読み出されるときに、アドレス変換時間を短縮するためにコントローラSRAM内のログ、TGATおよびGATエントリのルックアヘッド・キャッシングを実行することができる。
図18Dは、消去済みブロックおよびアドレス変換を管理するために使用されるデータ構造を示す。既に記載されたリストの他に、ブロックアドレス1821およびブートブロック1820が示されている。ブロックアドレス1821は、制御データ構造を記憶する全ての消去ブロックの物理アドレスの一覧表を形成する。専用ブロックアドレス(BA)ブロックを、ブロックアドレス1821を含むBAセクタを格納するために使用することができる。制御ブロックの位置が変更されるとき、新しいBAセクタが書き込まれる。前のBAセクタは陳腐とマークされる。従って、最後に書き込まれたBAセクタだけが有効である。
ブートブロック1820は、ブートセクタを含む専用ブロックである。ブートセクタ内の情報が変更されると、新しいブートセクタが書き込まれる。最後に書き込まれたブートセクタだけが有効である。ブートブロック1820は、固定された物理的位置を有し、システム初期化時に走査することによって特定される。ブートブロックの位置は、1つの正確な位置に固定されるのではなくて1つの範囲の中に固定されるので、走査する必要があるかもしれない。これは、不良な消去ブロックの可能性を考慮に入れるためである。走査を速やかに完了するようにブートブロックの位置は狭い範囲の中に固定されることになる。ブートセクタは、ブロックアドレス1821の位置と、必要とされる他の任意のシステム構成情報とを含む。従って、初期化時に、図18Dのデータ構造は速やかに再建されることになる。ブートブロック1820は、固定された位置を有し、ブロックアドレス1821の位置を示し、ブロックアドレス1821の位置は図に示されているデータ構造の位置を示している。
前に説明されている或るデータ構造は、EBLブロック、PBLブロックおよびGATブロックのような専用ブロックを使用する。このような専用ブロックは、メモリアレイの単一の消去ブロックであり、或いは複数の消去ブロックを含む適応メタブロックである。適応メタブロックを使用することの1つの利点は、使用される適応メタブロックのサイズを保持されるべきデータの量に合わせて調整することである。例えば、メモリが多数の消去ブロックを有する場合、多数のPBLセクタがあるので、おそらく大きなPBLブロックが適している。メモリアレイがデータで満杯であるときには、消去済みブロックの数は少なく、従ってPBLセクタの数は少ないので、おそらくより小さなPBLブロックが適している。
最大サイズに満たないサイズの適応メタブロックが制御データのために使用される場合には、制御データは他のデータと並列にプログラムされてもよい。データがホストからメモリアレイへプログラムされるべく送られる場合、このような並列プログラミングは、制御データをホストデータのプログラミングと同時に更新することを可能にすることになる。従って、制御データが更新されている間にホストデータのプログラミングに対する妨害はないけれども、ホストデータのプログラミングのために使用可能な並列性が低下するためにプログラミング速度が低下する可能性がある。従って、図15D、15Eおよび15Fに示されている並列プログラミングの例は、制御データ、コピーされるデータおよびホストデータの組み合わせの並列プログラミングに適用される。これは、制御データがプログラムされ終わるまでホストデータのプログラミングが遅らせられる他のメモリシステムに見られる待ち時間を避けることができる。
不揮発性RAM
或る不揮発性メモリ構造は、データにランダムにアクセスすることを可能にする。これは、データが1ページの最小単位で書き込まれ、1消去ブロックの最小単位で消去されるフラッシュメモリとは対照的である。不揮発性ランダムアクセスメモリ(NVRAM)の例は、磁気抵抗RAM(MRAM)、強誘電性RAM(FeRAM)、および位相変化メモリ(オボニックス・ユニファイド・メモリ (Ovonics Unified Memory) 或いはOUV)としても知られている)を含む。NVRAMは、フラッシュメモリも使用するメモリシステムの一部として使用されてもよい。NVRAMは、別個のチップ上に配置されてもよいし、或いはコントローラチップまたはフラッシュメモリチップに組み込まれてもよい。NVRAMは、フラッシュメモリカード或いは組み込み形フラッシュメモリシステムの一部であってもよい。NVRAMは揮発性RAMと同じアプリケーションの多くに使用され、NVRAMに格納されているデータは電源が失われても失われないという利点がある。例えば、メディア管理テーブルはNVRAMにおいて維持される。
図19は、メモリシステム1900上に配置されているNVRAM1901を示す。メモリシステム1900は、取り外し可能なメモリカードにおいて実現可能である。NVRAM1901は、ホスト1905から受け取られているデータのためのバッファとして使用することもできる。データをフラッシュメモリアレイ1910にプログラムする前にデータをバッファリングすることによって、メモリアレイ1910の適応メタブロックを、受け取られたデータにより良く適合するように構成することができる。図12A、12Bおよび12Cに示されている前の例では、メモリアレイのメタブロックに格納されたデータは、後に、そのデータのためにより良く構成されたメタブロックにコピーされた。NVRAMバッファを使用することにより、フラッシュメモリの1つの部分から他の部分へのこのようなコピー操作を回避し或いは最少にすることができる。
図20は、始めにNVRAMに格納されるデータのストリームの境界を反映するように適応論理ブロックをどのように構成することができるかということの例を示す。データストリーム2001および2002は、ホストから受け取られて、NVRAMに格納される。データストリーム2001と2002とは論理的に不連続である。すなわち、データストリーム2001とデータストリーム2002との間の論理アドレス範囲にギャップがあり、それらは別々のストリームであり、別様に処理されることが示されている。別々のストリームは、ストリームとストリームの間の時間遅れにより、或いはストリームとストリームの間に断絶が存在することを示すホストからの何らかの連絡によっても区別される。
データストリーム2001は、5個の論理グループ2010〜2014にわたって広がる論理アドレス範囲を有する。データストリーム2002は、7個の論理グループ2017〜2023にわたって広がる論理アドレス範囲を有する。適応論理ブロック2030および2031が論理グループ2010〜2014から形成される。適応論理ブロック2032および2033が論理グループ2017〜2023から形成される。適応論理ブロック2030〜2033は、データストリーム2001,2002のフラッシュメモリアレイ2040へのプログラミングの間に最大の並列性を可能にするように構成される。フラッシュメモリアレイ2040は4個のプレーンを有するので、適応論理ブロックは4論理グループの最大サイズを有する。適応論理ブロック2030および2033は、4個の論理グループから各々成り、最大の並列性で別個にプログラム可能である。適応論理ブロック2031,2032は、並列に、最大の並列性で、一緒にプログラム可能である。データストリーム2001が特定のホストファイルに対応し、データストリーム2002が別のホストファイルに対応するならば、その2つのファイルがデータの最少量のコピー操作で別々に更新されるように、2つのファイルを別々の適応メタブロックにおいて維持するのが有利である。従って、データストリームを含むように使用される論理ブロックの境界は、データストリームの境界になるべく適合させられる。データストリーム2001および2002は、論理アドレス空間において他のデータストリームにより分離されることになる。NVRAMにおいて数個のデータストリームを維持することにより、数個のデータストリームの特性を比較して、データストリーム内のデータをフラッシュメモリアレイ2040にプログラムする最善の方法を判定することができる。図20の例は図19に示されているハードウェアで実施され、この場合データストリーム2001,2002はNVRAM1901に格納され、メモリアレイ2040はフラッシュメモリセルアレイ1910に対応する。
図21は、NVRAMの他のアプリケーションを示す。データの性質によりデータをいずれかのタイプのメモリに格納することができるように、メモリシステムはNVRAMとフラッシュメモリとを統合することができる。例えば、頻繁に更新されるデータはNVRAMに格納される。NVRAMは、フラッシュメモリのように使用されるように構成することができる。フラッシュメモリが特定の消去ブロックサイズを有する場合、NVRAMは同サイズのデータを単位として動作するように構成される。
図21は、NVRAMに格納される更新済みデータ2140を示す。適応論理ブロック2130〜2132は、元のデータのストリーム2105からの元のデータを含む論理グループ2110〜2121から形成される。適応論理ブロック2130〜2132はメモリアレイ(図示せず)にプログラムされる。更新済みデータ2140はホストから受け取られる。前述したように、更新済みデータは更新中に新しい適応論理ブロックに格納することができるので、1つ以上の適応論理ブロックは更新済みデータを含み、他の適応論理ブロックは元のデータだけを含む。論理グループ2125,2126は、更新済みデータ2140と、元の論理グループ2115,2116からの多少の元のデータとから形成される。適応論理ブロック2135は論理グループ2125,2126から形成される。適応論理ブロック2136,2137は、適応論理ブロック2131内の残りの論理グループから形成される。従って、適応論理ブロック2131は、元のデータだけを含む適応論理ブロック2136および2137と更新済みデータを含む適応論理ブロック2135とにより取って代わられる。
適応論理ブロック2135は、フラッシュメモリアレイではなくてNVRAMに格納される。これは、適応論理ブロック2135が効率的に更新されることを可能にする。一般に、フラッシュメモリで可能な速度より高い速度でNVRAMに書き込むことが可能である。データは、非順次的順序で、ガーベッジコレクションなしで書き込まれてもよい。メディアマネージャは、フラッシュメモリと同様の仕方でNVRAMを処理することができる。NVRAMは、フラッシュメモリの消去ブロックと同じサイズを有するアドレス指定可能な複数の単位に分割される。アドレス指定可能な単位は並列にプログラムされてもよい。論理グループ2125,2126の位置を記録するテーブルは、NVRAM内のアドレス指定可能な単位のアドレスを単に記録する。更新済みデータと同じ論理範囲を有するデータのその後の更新があるならば、それらの更新は、フラッシュメモリの一部分から他の部分へデータをコピーすることなく迅速に行われることになる。適応論理ブロック2135はNVRAMからフラッシュメモリへ再配置される。例えば、他の目的に使用するために使用可能なNVRAM内の容量が不十分であるとき、適応論理ブロック2135からのデータをNVRAMからフラッシュメモリへ移して、使用可能なNVRAMの容量を作り出すことができる。
適応論理ブロック2136および2137は、唯一の論理グループを各々有する。これらの論理グループは、新しい適応論理ブロック2138,2139が形成されるように再構成することができる。適応論理ブロック2138,2139は、適応論理ブロック2136,2137より大きく、より効率的なデータ処理を可能にする。
データ境界
メモリシステムにより受け取られるデータの中にデータ境界が存在する。データ境界(論理境界)の例は、データラン境界およびファイル境界を含む。通常、1つのホストファイルは1つ以上のデータランとして格納される。データランは、ファイル記憶のためにホストにより割り当てられる論理的に連続する複数のセクタのセットである。データランは、有効なデータを既に含んでいない論理アドレス空間の部分に割り当てられる。図22は2つのファイル、ファイルAおよびファイルBを示す。ファイルAはデータラン1、データラン3およびデータラン5を含む。ファイルBはデータラン2およびデータラン4を含む。
ファイル境界は、ホストが1つのファイルを他のファイルの末端の直ぐ後に1つのアドレスから書き始める場合に作られる。従って、ファイル境界は1つのデータランの中にあることになる。図23は、単一のデータランの中に書き込まれたファイルCとファイルDとの間のファイル境界を示す。
通常、適応メタブロックを使用するメモリアレイによりデータが受け取られるとき、そのデータの格納のための適応メタブロックの構造は、データ境界の位置を考慮に入れない。その理由は、データ境界の位置が分からないこと、或いはデータを大きな適応メタブロックに速やかに書き込まざるを得なくする時間的制約があることにある。このようなメモリアレイに記憶されているデータが更新されるとき、多少のデータが元のメタブロックから新しいメタブロックにコピーされなければならない。このようなデータのコピーは、メモリシステムの、新しいデータを書き込むための容量を減少させる。通常、所与の操作において単一の論理ファイルだけが更新される。1つの適応メタブロックが2つ以上のファイルの部分を含んでいる場合、付加的なファイル部分は新しい適応メタブロックにコピーされなければならない。このような部分のコピーは、ガーベッジコレクションの間に行われ、かなりの資源を使い果たす可能性を有する。従って、データ境界を含む適応メタブロックは、それらが更新されるときに、不要なオーバーヘッドの原因となる。
メモリアレイ内でのデータのコピーを最小限にすると同時にプログラミング中に並列性を最大にすることによって高性能を達成することができる。これら2つの目標は、高度の並列性を達成するために複数の適応メタブロックを並列にプログラムし、データ境界を含むように最小サイズの適応論理ブロック(メタグループ)を形成することによって、達成されることになる。適応メタブロックは、1つの単位としてプログラムされる“プログラムブロック”に形成可能である。プログラムブロックは、最大並列プログラミングの単位である。すなわち、1つのプログラムブロックは、全体としてメモリアレイの全てのプレーンにわたって広がる複数の適応メタブロックから構成される。図24は、このようなメモリシステムにおいて使用されるデータ単位の階層を示す。
データ境界を含むように最小サイズのメタグループを形成することの例が図25および26に示されている。図25は、最小サイズのメタグループであるメタグループに各々格納された2つのデータラン境界を示す。ホストセクタデータラン2510は、論理アドレスAから論理アドレスA+4n+Xまで広がっている。従って、データ境界2520が論理アドレスA+4n+Xに存在する。論理アドレスA+4n+Xは、論理グループ2530の中にある。メタグループBはデータ境界2520を含むように形成される。メタグループBは、論理グループを1つだけ含む最小サイズのメタグループである。ホストセクタデータラン2510の残りの部分はメタグループAに含まれる。メタグループAは最小サイズのメタグループではなくて4つの論理グループを含む。図25は、論理アドレスB+Yから広がるホストセクタデータラン2511も示す。従って、データ境界が論理アドレスB+Yに形成される。論理アドレスB+Yは、論理グループ2531の中にある。メタグループCは、データ境界2521を含むように形成される。メタグループCは、論理グループを1つだけ含む最小サイズのメタグループである。ホストセクタデータラン2511の残りの部分はメタグループDに含まれる。メタグループDは、2つの論理グループを有し、最小サイズのメタグループではない。ホストセクタデータラン2510および2511が後に更新されるとき、これは更新されるデータラン内に存しない付加的なデータの僅かなコピー操作で行われる。その理由は、メタグループBおよびCだけが付加的なデータを含み、これらの各々が1論理グループに及ばない付加的データを含むことにある。
図26は、最小サイズの適応メタグループにマッピングされるファイル2610およびファイル2611間のファイル境界2615を示す。ファイル境界2615は、論理アドレスA+4n+Xに示されている。ファイル境界2615はホストセクタデータラン2605の中にある。論理アドレスA+4n+Xは、論理グループ2630の中にある。メタグループBは論理グループ2630から形成される。メタグループAは、ファイル2610の残りの部分から形成される。メタグループCは、ファイル2611の残りの部分から形成される。ファイル2610は、メタグループAおよびBを更新することによって更新されることになる。従って、メタグループBに含まれるファイル2611の一部2641だけがファイルAの更新の間にコピーされる。同様に、ファイルBは、メタグループBおよびCを更新することによって更新されることになる。これは、メタグループBに格納されているファイル2610の一部2640だけをコピーすることを含む。
データ境界情報はメモリシステムにより、メモリシステムに供給されるデータから判定され、或いはデータ境界情報はメモリシステムに直接供給されることになる。例えば、ホストは、ホストシステム自体がメモリシステムに供給するデータに関するデータ境界情報を供給することができる。データ境界情報は、ホストにより供給されるデータの中のデータラン境界またはファイル境界の位置を含むことができる。このようなデータ境界情報は、通常、境界を含むデータより前に提供される。メタグループの最大サイズがL個の論理グループである場合、提供されるデータより少なくともL個の論理グループだけ前にデータ境界情報を提供することが望ましい。
ホストは、直ぐ書き込めるデータがそれ以上はないことを知らせるためにデータランのシーケンスの終わりについての通知を提供することもできる。この通知は、メモリシステムがバックグラウンド操作をスケジュールすることを可能にする。電源切断操作の通知もホストにより提供される。このような通知は、ハンドシェイク操作の一部分である。電源切断操作は、メモリシステムがホストに応答して、メモリシステム自体が電源切断に適する状態にあることを示すまでは行われない。メモリシステムがメモリシステム自体の能力をホストに知らせ、またその逆も行われるように、電源投入の後にホストとメモリシステムとの間で対話が行われる。このような能力は、前述したようにデータ境界情報を受け入れて使用する能力を含む。
ホストからのデータ境界情報を受け取る他に、データ境界はメモリシステムにより他の情報源からも判定可能である。これは、更新される1つの範囲のデータからデータ境界位置を引き出すことを含む。データランの始まりは、ホストにより提供されるデータアドレスから直接特定されることになる。データランの終わりは、他のデータランへのアドレス移行から仮定されることになる。ファイル境界は、ホストによるディレクトリおよびFATアクセスのパターンから仮定されることになる。データ境界およびファイル境界を推測するために元のデータについてのメタグループマッピングを使用することもできる。
データ境界管理操作
方式Aでは、データ境界位置に応答する構成でのデータ格納は、始めにこのようなデータを一時的位置に格納し、その後データをフラッシュメモリに格納すべくメタグループにマッピングすることによって、行われることになる。一時的位置は、アキュムレータRAMにより提供される。或いは、一時的位置は、フラッシュメモリアレイの一部により提供される。図27は、データ境界管理情報を用いてデータを構成するためのこれら2つの選択肢を示す。方式Aは、一時的アキュムレータRAMに格納されているデータを示し、これは、次に、データ境界管理でフラッシュメモリに格納される前にメタグループマッピングにさらされる。方式Bは、メタグループ再マッピングの前に中間メタグループマッピングでデータをフラッシュメモリに格納し、その後にデータ境界管理でフラッシュメモリに格納することを示している。
一時的アキュムレータRAMは、ホストからセクタのデータを受け取り、セクタのデータは、後に、データ境界の位置により決定される仕方でフラッシュメモリにおいて並列プログラムされるべく転送される。アキュムレータRAMは、少なくとも1つのプログラムブロックのデータを格納することを可能にするのに充分な容量を持つことができる。従って、アキュムレータRAM内のデータは、後に単一のプログラムブロックにおいて並列にプログラムされるメタブロックに形成される。アキュムレータRAMは、NVRAM1901のような不揮発性メモリである。或いはアキュムレータRAMは揮発性メモリであってよく、その場合には、データがフラッシュメモリにプログラムされる前にホストによって電源が除去されれば、アキュムレータRAM内のデータが失われる危険がある。この危険は、ホストとメモリシステムとの間に適切なプロトコルを持つことによって管理されることになる。
図28Aは、図25に示されているメタブロックA〜Dから構成されるプログラムブロック2800を示す。最大プログラミング速度のためには、メタブロックA〜Dを一緒にプログラムすること、従ってメモリシステムの最大並列プログラミング容量を使用することが望ましい。ファイルを更新する操作の効率のためには、メタブロックBおよびCを、各々1つの消去ブロックから成る別々のメタブロックとして維持することが望ましい。図28Aに示されているデータの構成は、これらの目標の両方を達成する。データのセクタは、2つの別々のデータランとして、すなわちAからA+4n+Xまでのデータラン2510およびB+YからB+3n−1までのデータラン2511として、ホストから受け取られる。図28Bは、これらのデータランからのデータのセクタがメタブロックA〜Dにどのようにプログラムされるのかを示す。この例では、ページはデータの単一のセクタを含むけれども、他の例ではページは複数のセクタを含むことができる。プログラムブロックはメモリアレイの全てのプレーンにわたって広がる。プログラムブロック内では、セクタは、メタブロック構成により決定される順序でプログラム可能である。プログラムブロックページが示され、1つのプログラムブロックページは、並列にプログラム可能であるメモリアレイの各プレーンからの1つのページから構成される。すなわち、プログラムブロックページ0はメモリアレイの全てのプレーンにわたって広がり、プログラムブロックページ0内の全てのセクタは同じプログラミングステップでプログラムされる。プログラムロックページ0がプログラムされ終わると、プログラムブロックページ1がプログラムされ、以降同様に行われる。図28Bにおいてセクタがプログラムされる順序は、これらのセクタが図25に示されているようにホストから受け取られる順序ではない。アキュムレータRAMにおけるこれらのセクタの順序の変更が図28Cに示されている。図28Cは、プログラムブロック2800にプログラミングのために転送されるアキュムレータRAM内に保持されているデータラン2510およびデータラン2511を示す。プログラムブロックにコピーされるべきデータは、図に示されているようにアキュムレータRAMに書き込まれることになる。セクタA+4n+XからA+5n−1までとBからB+YまでとはアキュムレータRAMにコピーされるので、これらはプログラムブロックに転送されるように使用可能である。或いは、コピーされるべきデータは、フラッシュメモリ内に既に置かれ、従ってフラッシュメモリアレイの1つの部分から他の部分へと直接コピーされることになる。図28Cは、図28Bのプログラムブロックページ0およびプログラムブロックページ1についてのセクタのマッピングを示す。
図27の方式Bの場合のように、ホストから受け取られるデータのための一時的記憶位置を提供するためにフラッシュメモリが使用される場合、データは、いろいろなタイプのメタグループを含む中間フォーマットで格納される。このようなメタグループのサイズは、最大サイズのメタグループの論理アドレス範囲の中のデータラン境界またはファイル境界のような論理境界の存在により、また任意の論理境界の後にさらなるデータを転送する必要により、決定される。中間の形のデータ記憶を提供するために次の5つのメタグループタイプ、すなわちフルメタグループ、パーシャルメタグループ、ショートメタグループ、スタートメタグループおよびマルチファイルメタグループ、を使用することができる。
フルメタグループ2900が図29Aに示されている。完全メタグループは、格納されるべきデータの中に論理境界がない場合、或いは存在する任意の論理境界に関して使用可能な情報がない場合に、割り当てられる。
パーシャルメタグループ2901が図29Bに示されている。格納されるべきデータ中に論理境界が存在するけれども中間フォーマットでデータをプログラムするときに最大の並列性が望まれる場合にパーシャルメタグループが割り当てられる。論理境界は、プログラミングの前に(例えば、ホストから)知られ、或いはプログラミング中に遭遇される。パーシャルメタグループは、1つのメタグループにおいて可能な最大個数より少ないデータの論理グループを含む。パーシャルメタグループは、最大サイズのメタブロックにプログラムされるので、アレイの全プレーンを並列に用いてプログラムされ、従ってなるべく速やかにプログラムされる。
ショートメタグループ2902が図29Cに示されている。ショートメタグループは、格納されるべきデータの中に論理境界が存在して最大の並列性が不要である場合に、割り当てられる。ショートメタグループは、1つのメタグループにおいて可能な最大個数の論理グループより少ない論理グループを有する。ショートメタグループは、最大サイズのメタブロックに含まれる消去ブロックより少ない消去ブロックを含むメタブロックにプログラムされる。データ書き込み帯域幅は減るが、再配置されるデータはショートメタグループと並列にプログラム可能である。ショートメタグループは、データラン境界の直ぐ後にそれ以上のデータが続かないということをホストが信号したときに使用されることになる。
スタートメタグループ2903が図29Dに示されている。スタートメタグループは、データランのスタート境界のデータを格納するために割り当てられる。データラン内の第1のセクタが論理グループの第1のセクタではない場合、整列フセットを使用することができる。第1の論理グループを完成させるデータは、他の位置からコピーされることになる。スタートメタグループは、書き込み中に論理境界に遭遇した場合、パーシャルメタグループであってもよい。
マルチファイルメタグループ2904が図29Eに示されている。マルチファイルメタグループは、ファイル境界を含み、従って少なくとも2つの異なるファイルの部分を含む。マルチファイルメタグループは、パーシャルメタグループ、ショートメタグループ或いはスタートメタグループであってもよい。
前述した中間フォーマットのメタグループの中のデータは、後に論理境界が存在するときにより望ましい構成に再マッピングされることになる。フルメタグループは論理境界を含んでいないので、再マッピングは不要である。しかし、パーシャルメタグループ、ショートメタグループ、スタートメタグループおよびマルチファイルメタグループは図30に示されているように再マッピングされることになる。図30Aは、パーシャルメタグループ3010のメタグループAおよびメタグループBへの再マッピングを示す。メタグループBは最小サイズ(1論理グループ)のメタグループである。メタグループBは、1つの元のブロックからコピーされたデータで完成される。図30Bは、ショートメタグループ3020のメタグループAおよびメタグループBへの再マッピングを示す。これは、パーシャルメタグループの再マッピングと同様である。図30Cは、スタートメタグループ3030のメタグループAおよびメタグループBへの再マッピングを示す。ここで、スタートメタグループ3030は整列オフセットを有する。この整列オフセットは、メタグループAが順序整然となるように、除去される。図30Dは、メタグループA、BおよびCに再マッピングされるマルチファイルメタグループ3040を示す。メタグループBは、論理境界3041を含む。メタグループBは、最小サイズ(1論理グループ)のメタグループである。
中間フォーマットの中のデータは、ホストからの受け取りの直後に再マッピングのために分析される。しかし、データの再配置は直ぐには行われないかもしれない。代わりに、データのためにプログラム操作がスケジュールされ、データと計画された再マッピングとに関する情報が再マップリストに格納されることになる。その後、データ再配置は、より適切な時にバックグラウンドで行われ、或いは格納されたデータの範囲内の更新されたデータの受け取りのようなイベントによりトリガされることになる。再マップリストは、適切な制御情報構造でフラッシュメモリに、例えばログまたは専用再マップセクタに格納することができる。
再マップリストは、再マッピング操作が未解決になっている中間フォーマットで最近書き込まれた各メタグループについて1つのエントリを有する。このようなメタグループは一般にデータ境界を含む。再マップリスト中のエントリは以下のように6個のフィールド、すなわち
メタグループのタイプ(パーシャル、ショート、スタートまたはマルチファイル)
メタグループ中のデータランのスタートの論理アドレス
メタグループサイズ(メタグループ中の論理グループの個数)
メタブロックサイズ(メタブロック中の消去ブロックの個数)
メタグループ内の境界のオフセット
ページタグ
を含むことができる。
中間フォーマットのメタグループが作られるとき、1つのエントリがリストに加えられる。中間フォーマットの1つのメタグループがリストから削除されるとき、リストから1つのエントリが除去される。1つのエントリが追加または削除されるとき、新しいリストを新しい位置に、例えば新しいログセクタまたは新しい再マップセクタに、書き込むことによってリストは更新可能である。
再マップリスト中のメタグループマッピングは、関連するデータに関する如何なるメディア管理操作のためにも使用されない。メディア管理制御構造は、データの一時的記憶のために割り当てられた中間フォーマットのメタグループに関する。従って、他のメディア管理機能に影響を及ぼさずに再マップリストからエントリを除去することができる。例えば、未解決の操作のバックログが大きくなりすぎたならば、エントリを削除することになる。これは、データがメモリアレイに格納される仕方の効率を単に低下させる。
中間フォーマットからのデータのプログラミングは、ホストデータを書き込むためにホストが使用可能な書き込み帯域幅が減じられることのないようにスケジュールされることになる。再マッピング操作は、データがホストから受け取られていないときに、バックグラウンド操作として実行される。単一の中間メタグループについての全ての再マッピングされるメタグループは並列にプログラム可能である。再マッピング操作が実行されている間に電源が失われることのないように、メモリシステムの電源切断を管理するためにホストとのハンドシェイクプロトコルを確立することができる。再マッピング操作は、元のホストデータのプログラミングと並列に実行可能である。図31は、ホストからのデータ3150が適応メタブロック3110にプログラムされる間に、メモリアレイから再配置されたデータ3160が並列に適応メタブロック3120にプログラムされることを示す。このような並列操作は元のホストデータを書き込むために使用可能な書き込み帯域幅を減じるため、このような並列プログラミングは直ぐに書き込むために使用可能な元のホストデータがそれ以上はないということをホストがメモリシステムに知らせる場合に限って適切である。再マッピング操作は、ホスト更新に応答して実行可能である。更新されるべきデータが中間フォーマットであり、再マップリストに列挙されている場合、更新されるデータは、中間メタグループからコピーされるデータと共に再マッピングフォーマットで書き込むことができる。
ホストインターフェイスにおいて新しい処理に迅速に応答することができるように再マッピング操作を一時停止させることができる。再マッピング操作は現在のページプログラミング操作の完了後に一時停止されてよく、その場合には、後に次のページのプログラミングから再開される。或いは、チップの構成が可能ならば、ホストに速く応答するために、1つのページをプログラムしている途中で再マッピング操作を一時停止させることができる。ページプログラミング中に再マッピング操作を一時停止させるために、リセットコマンドをフラッシュメモリチップに発することによってフラッシュメモリにおけるその実行を終わらせることができる。チップは、その後、新しいホスト処理に応じて直ぐにアクセスすることができる。再マッピング操作は、その後、一時停止されたページについて同一のデータをフラッシュチップに再転送し、次にプログラムコマンドを送ることによって、再開することができる。多くのフラッシュチップの構成は、データパターンが変わっていなければ、部分的にプログラムされたページのプログラミングの再開を許容する。
ホストが境界位置情報を提供するデータ記憶
一実施形態では、ホストは、ホストデータをメモリアレイにより効率的に格納するために使用可能な付加的情報をメモリシステムに提供する。このような情報の一例は、送られるホストデータ内のデータ境界(論理境界)の位置である。通常、データ境界の位置は、ホストデータが受け取られるときにそれが効率的に格納され、始めに中間フォーマットで格納されなくてもよいように、境界を含むホストデータが送られる前に提供されるべきである。
データ境界位置に基づいてホストデータをより効率的に格納するために、データをメモリアレイの適応メタブロックに格納する前に一定のデータをバッファリングすることが有利である。この目的のために、シリアルフラッシュバッファを設けることができる。図32は、消去済みブロックプール3204からの消去ブロックで構成されるシリアルフラッシュバッファ3202を示す。シリアルフラッシュバッファ3202内の消去ブロックは、在来のメタブロックのような最大サイズの適応メタブロックとして構成することできる。これは、メモリアレイの最大の並列性でデータをシリアルフラッシュバッファにプログラムすることを可能にする。メモリアレイが複数のプレーンに分割されている場合、このことは、シリアルフラッシュバッファのメタブロックがメモリアレイの各プレーンからの1つの消去ブロックを含むことを一般的に意味する。従って、シリアルフラッシュバッファ3202は1つ以上のバッファメタブロックから構成され、それらは、一般に、必ずしもそうとは限らないけれども、最大の並列性でのデータ格納を可能にするメタブロックである。シリアルフラッシュバッファとして使用することができる構造の例が、本願と同じ日に出願され、その全体が本願明細書において参照により援用されている代理人整理番号SNDK.406US0の“スクラッチパッドブロック”という米国特許出願(特許文献24)に記載されている。
前述したようにメモリアレイ内の適応メタブロックにデータを直接格納する代わりに、ホストデータをシリアルフラッシュバッファ3202に送ることができる。シリアルラッシュバッファは、メモリアレイ内の1つ以上のバッファメタブロックから成る。バッファメタブロックは、論理的に関連していないデータの複数の部分を含むことができる。シリアルフラッシュバッファ3202内のいろいろなメタブロックは、論理境界とバッファメタブロックのメタブロック境界との整合がないので、如何なる特別の意味も持たない。すなわち、順次データの部分は、単一のメタブロックに格納され、或いは複数のメタブロックに格納され、また一般にバッファメタブロックとは整列させられない。データがバッファメタブロックからコピーされるとき、バッファメタブロック内のデータが陳腐になる。1つのバッファメタブロック内の全てのデータが陳腐であるとき、そのバッファメタブロックを含む消去ブロックは消去済みブロックプールに返されることになる。従って、バッファメタブロックは、必要に応じて消去済みブロックプールからの消去ブロックから形成される。それらが陳腐なデータだけを含むとき、消去ブロックは消去されて消去済みブロックプールに返される。シリアルフラッシュバッファ3202は線形メモリを形成し、シリアルフラッシュバッファ3202に格納されるべき新しいデータは消去済みブロックプール3204からの(割り当てブロックリストまたは同様の構造からの)連結された複数のブロックからバッファの頂部に形成されたバッファメタブロックに書き込まれ、バッファの底部のバッファメタブロック内のデータは割り当てられた適応メタブロックにコピーされるのでバッファの底部のメタブロック内のデータは陳腐になる。陳腐なデータだけを含むバッファメタブロックの消去ブロックは、(プレーンブロックリストまたは同様の構造に)消去済みブロックプール3204に返される。バッファメタブロックは、固定されたサイズのメタブロックであり、或いは個々に選択されたサイズの適応メタブロックである。例えば、最大サイズのメタブロックは、高度の並列性を提供するバッファメタブロックとして使用することができる。
図33Aは、フラッシュメモリアレイの割り当てられた適応メタブロックに格納されるホストデータのための2つの択一的ルートを示す。データは、割り当てられた適応メタブロック3308に直接書き込まれる(3306)。或いは、データは、シリアルフラッシュバッファ3302のバッファメタブロック3312に書き込まれ(3310)、その後バッファメタブロック3312から割り当てられた適応メタブロック3316にコピーをする(3314)ことができる。特定のデータのためにこれらの択一的ルートのどちらが使用されるかは、論理境界の位置によることになる。特に、論理境界の位置がホストによって提供される場合、どちらのルートを使用するべきかは、提供された位置に応じて決定されることである。データの一部分が最大サイズのメタグループと同じかまたはこれより大きくて如何なる論理境界も持っていない場合、データのその部分は、割り当てられた適応メタブロックに直接格納することになる。最大の並列性を目的として可能な場合には最大サイズの適応メタブロックが使用される。最大サイズのメタグループより小さなデータの部分が格納される場合、どちらのルートを使用するかは部分のサイズに基づいて決定することである。データの一部分が論理境界を有する場合、一般にはそれを最小サイズの適応メタブロックに格納するのが望ましい。データのこのような部分は、バッファメタブロックに格納されて後に割り当てられた適応メタブロックにコピーされることになる。これは、データのこのような部分をホストから受け取って始めに最大の並列性で速やかに格納することを可能にする。後に、データのこれらの部分は、図33Aにおいて3306および3314で示されているように、割り当てられた適応メタブロックに他のデータと並列にコピーされるので、高度の並列性が使用される。従って、最小サイズの適応メタブロックが書き込まれる場合でも低度の並列性でのデータ書き込みは一般に回避される。
図33Bは他の例を示し、この例ではバッファメタブロック3318内のデータが最小サイズの適応メタブロック3322にコピーされ(3320)、ここで元の適応メタブロック3328からコピーされたデータ3324と共に格納される。この例は、論理境界を含む最小サイズの適応メタブロックを代表している。論理境界は適応メタブロックの論理アドレス空間内の何処かに存在するので、論理境界の一方の側のデータが更新されるときには、更新されたデータと或る程度の元のデータとの両方が適応メタブロックに格納される。
図34は、前述した方式AおよびBと対比させて、シリアルフラッシュバッファを使用する方式、方式Cを示す。方式AおよびBは、受け取られた全てのデータを何らかの中間形で(RAMまたはフラッシュに)格納し、(論理境界の位置のような)データの特性を判定し、その後にデータをそれらの特性に応じてフラッシュに格納する。対照的に、方式Cでは、データの特性はホストから受け取られる。これらの特性の受け取りは、データをその特性に応じてフラッシュメモリに直接格納することを可能にする。しかし、或るデータはバッファメタブロック3430に格納されて、後に、高速操作を可能にするように特性に応じてフラッシュメモリに格納されるべくコピーされる(3432)。従って、バッファメタブロックの目的は、方式AおよびBのRAMまたは中間メタグループの目的とは異なり、格納されるデータの多くが割り当てられたメタブロックに直接書き込まれる。
データはデータラン単位で更新され、データランは、割り当ての直前には使用されていなくて割り当てられたセクタ同士の間に広がる、ホストにより割り当てられた論理的に連続する複数のセクタのセットである。データランは、論理アドレス空間の複数の割り当てられた部分により画定される空いている論理アドレス空間の1つの連続する部分にホストがデータを割り当てるときに形成される。或るシステムでは、データランはメタグループ構造と整列しておらず、このことはデータ更新時の非能率の原因となる。ここで説明する特定のシステムでは、データランは、メタグループのサイズおよび境界位置(従って、対応する適応メタブロックのサイズ)をデータに適合させることによってメタグループと整列させられるほうがよい。特に、論理境界を含むデータの部分を格納するために最小サイズのメタグループを使用してもよい。データラン境界の位置はメモリコントローラによって決定することができる。データランのスタート部に存するデータラン境界は、最後に受け取られたデータとは連続していないデータがホストから受け取られたときに、特定されることになる。データランの終端部に存するデータラン境界も、論理アドレスにおけるジャンプにより特定されることになる。このようなジャンプの前の最後のセクタは、1つのデータランの最後のセクタである。しかし、ホストから受け取られたセクタの中の論理アドレスに存するジャンプが(FATのような)システム情報の更新またはいろいろなデータランへのインターリーブな書き込みに起因するものであるという例外がある。或るシステムではホストは2つ以上のデータランにインターリーブ的に書き込むことができる。コントローラは、この事態に対処するために複数の開いているデータランを維持することができるので、1つの開いているデータランに連続するデータが受け取られたならば、それはそのデータランの一部として処理される。それが1つの開いているデータランに連続するものでなければ、それは新しいデータランのスタート部であると見なされる。開いているデータランは、一定時間後にコントローラによって、データランの個数が限度に達したとき、或いはホストからの信号に応答して、閉じられることになる。
図35Aは、非整列 (non-alignment)(N)で格納されたデータラン3530を示す。これは、論理境界の位置を考慮せずに格納されたデータランである。メタグループ構造は、最大サイズの全てのメタグループを示す。図35Bは、部分的整列 (partial alignment)(P)で格納されたデータラン3532を示す。データラン3532のスタート部に存するデータラン境界を格納するために最小サイズのメタグループ3534(1論理グループ)が使用される。データラン3532の残りの部分は最大サイズのメタグループ3536,3538に格納されるので、データの終端部は最大サイズのメタグループ3538内に存在する。このように、各端部にデータ境界を有するデータランについて、唯一のデータ境界が最小サイズのメタグループに割り当てられる。図35Cは、完全整列 (full alignment) (F)で格納されたデータラン3540を示す。データラン3540の両端部に存するデータラン境界に最小サイズのメタグループ3542,3548が割り当てられる。最大サイズのメタグループは、高い並列性を得るために可能なところで(例えば、メタグループ3544)使用される。しかし、この例では、終端部から2番目のメタグループのために短縮されたサイズのメタグループ3546が使用されている。
通常、データランの各端部に1つの最小サイズのメタグループが割り当てられる場合、これらのメタグループの間のデータランの部分は整数個の最大サイズのメタグループを形成しない。従って、データランの中央部分からの少なくとも1つのメタグループは最大サイズに及ばないメタグループである。図35Cに示されている例では、終端部から2番目のメタグループ3546は、短縮されたサイズのメタグループ(或いはパッドメタグループ)である。しかし、パッドメタグループは、特定の位置に存在しなければならないわけではない。図35Dは、いろいろなサイズの適応メタブロックにマッピングされた1つのデータランを有する1つのデータラン構造を示す。最小サイズのヘッドブロック3550とテールブロック3556とはデータラン境界を含む論理グループのために使用されている。データラン境界を含む論理グループ3550,3556の間では、データは、可能な場合には最大サイズの適応メタブロック(例えば、メタブロック3552)にマッピングされる。他の例では、複数のフルブロックが1つのデータランのために使用される。残りのデータはパッドブロック3554に格納されるが、これは短縮されたサイズの適応メタブロックである。
図35Eは、8個の論理グループの最大メタグループサイズを有するメモリに完全整列で格納されたいろいろな長さのデータランを示す。データラン境界が単一の論理グループ内に存在する場合、この論理グループは最小サイズのメタグループ3558を形成し、ヘッドメタグループと見なされる。データランが2個の論理グループにわたる場合、各論理グループは最小サイズの1つのメタグループ3560,3562を形成し、ヘッドメタグループおよびテールメタグループと見なされる。データランが3個の論理グループにわたる場合、中央の論理グループ3564は最小サイズのメタグループを形成し、パッドメタグループと見なされる。3個の論理グループと9個の論理グループとの間に及ぶデータランについて、ヘッドメタグループおよびテールメタグループは同じままであるが、パッドメタグループのサイズはデータランのサイズに従って大きくなる。データランが10個の論理グループにわたる場合、ヘッドメタグループとテールメタグループとの間にフルメタグループ3566を形成することができる。従って、パッドメタグループは不要である。10個の論理グループより大きなデータランについては、1つのフルメタグループと1つのパッドメタグループとを形成することができる。18個の論理グループより大きいデータランについて、2つのフルメタグループを形成することができる。より大きなデータランについては、必要なときには適切なサイズの1つのパッドメタグループと共に、複数のフルメタグループを形成することができる。
データがホストにより更新されるとき、そのデータは一般にデータラン境界の間に広がるデータランとして受け取られる。このようなデータラン境界の位置は、前に特定されてデータを格納するために使われていたものと同じである。従って、データランは、更新データのデータラン境界と整列して既に格納されているデータを更新することができる。例えば、1つのデータランが、同じ論理アドレス範囲にわたって広がる1つのデータランによって前に更新されたデータを更新する場合、データは同じ論理境界に整列させられることになる。格納されたデータが同じデータ境界に完全に整列して格納されたのならば、そのデータの更新は完全から完全への遷移を含む。格納されたデータが部分的整列で格納されたのならば、更新は、部分的から完全への或いは部分的から部分的への遷移を含むことになる。格納されたデータが非整列で格納されたのならば、更新は、非から完全への、非から部分的への、或いは非から非への遷移を含むことができる。図36は、データ更新中に生じる遷移のうちの幾つかを示す。(完全から非へのような)他の或る遷移が可能ではあるが、それらは一般には望ましくないので図36には示されていない。
図37は、データラン3770がホストから受け取られるときの完全から完全への(F2F)遷移の例を示す。データラン3770は、データの論理的に連続するセクタのストリームとして受け取られることになる。さらに、ホストは、データランのスタート部および終端部に存するデータ境界の位置を含むデータ境界位置情報を送ることができる。データランのスタート部3772の位置は、データラン3770内の第1に受け取られるセクタのアドレスから判定されて、前もって知られていなくてもよいけれども、データランの終端部3774の位置が、この例では完全整列を可能にするためにデータラン3770の最後のセクタが受け取られる前に知られる。他の例では、データランの終端部の位置は確実に知られないかもしれないが、位置は前のデータランの終端部の位置から予測される。このようなデータ境界位置は、ホストによりリストに記録可能である。ホストからのデータラン3770のデータラン境界は、完全整列で格納された前に受け取られたデータランのデータラン境界と同じである。従って、元のメタグループと同じサイズを有する更新されたメタグループが割り当てられることになる。データラン3770のデータの部分AおよびDは、データラン境界を含む論理グループ内にあり、従って最小サイズのメタグループに格納される。従って、それらは始めにシリアルフラッシュバッファに格納される(A→K,D→L)。バッファKおよびL内のデータは、後に元のデータ(P→E,Q→J)と一緒にヘッドメタグループ3776およびテールメタグループ3778にコピーされる(K→F,L→I)。ヘッドメタグループ3776およびテールメタグループ3778は、最小サイズのメタグループとしてメモリアレイに格納される。データランの部分Bは、最大サイズのメタグループGを形成し、従ってシリアルフラッシュバッファに格納されずに割り当てられた最大サイズのメタブロックに直接格納される。データラン3770の部分Cは、最大サイズには及ばないメタグループHを形成する。メタグループHは、フラッシュメモリ内の割り当てられた適応メタブロックに直接書き込まれる。
或る例では、部分Cのようなデータの部分は、割り当てられた適応メタブロックに格納される前にシリアルフラッシュバッファに格納することができる。しかし、部分Cのサイズによっては、それをフラッシュメモリに直接書き込むほうがより効率的である。例えば、部分Cが1つの完全メタグループの部分と殆ど同じ量のデータを含んでいる場合、データをフラッシュに直接書き込むほうが、それをシリアルバッファに書き込んで後にそれを整列したフォーマットでフラッシュにコピーするより効率的である。一般に、データをシリアルバッファにバッファリングすることからの効率のゲインは、少量のデータについて最大であり、大量のデータについて最小である。データをバッファリングするか否かの決定は、データの部分のサイズに基くことができる。完全メタグループのデータは最大サイズのメタブロックに直接書き込まれ、1論理グループまたはそれ未満を含むデータはシリアルバッファに書き込まれ、1論理グループと1完全メタグループとの間のデータは、1つのしきい値サイズより少量であれば、バッファリングすることができる。例えば、そのしきい値は、1つの完全メタグループ内の論理グループの個数の半分、または(1つの完全メタグループ内の論理グループの個数の半分)−2(N/2−2、ここでNは1つの完全メタグループ内の論理グループの個数である)である。N/2−2は、効率的な操作を可能にして収斂性シリアルフラッシュバッファを持つために計算されたしきい値である。従って、1つのメタグループ内に16個の論理グループがあるならば、6個の論理グループまたはそれ未満の論理グループを含むデータの部分はシリアルバッファにバッファリングすることができる一方、6個より多い論理グループを含むデータの部分はフラッシュに直接書き込まれてもよい。
図38は、部分的整列から完全整列への(P2F)遷移の例を示す。この例ではデータラン3880がホストから受け取られて完全整列で格納される。最小サイズのヘッドメタグループ3882およびテールメタグループ3884が割り当てられる。データラン3880により更新されるデータは、データランのデータ境界に部分的に整列させられて前に格納されたものである。従って、ヘッドメタグループと同じ論理アドレス空間について最小サイズの元のメタグループ3886が存在する。しかし、データランのテールに対応する元の最小サイズのメタグループはない。データランのスタート部のデータは図37に示されているものと同様に扱われる。データAはシリアルフラッシュバッファに格納される(A→K)。その後、バッファK内のデータが、元のメタグループからコピーされるバッファE内のデータと一緒に(P→E)最小サイズの更新されるメタグループ3882にコピーされる(K→F)。データBおよびCは、前と同様にメタグループGおよびHにプログラムされる。メタグループGは、最大サイズの更新されるメタグループに直接プログラム可能な最大サイズのメタグループとして示されている。メタグループHは、最大には及ばないサイズであり、更新されるメタブロックに直接プログラムされ、或いはメタグループHのサイズによっては先にシリアルフラッシュバッファに格納される。この例では、メタグループHは更新されるメタグループに直接プログラムされる。より長いデータランが受け取られた場合、最大サイズの追加メタグループを使用することができる。
データラン3880の終端部のデータDは、シリアルフラッシュバッファにコピーされ(D→L)、その後に、元のメタグループからコピーされるデータJ(Q→J)と一緒にテールメタグループ3884にコピーされる。データJは、最小サイズより大きなメタグループ3888(この場合、最大サイズのメタグループ)からコピーされる。メタグループ3888は、データランによって更新されないデータだけを含む論理グループRを含む。論理グループRは、再配置メタグループに再配置される(R→T)。他の例では、再配置メタグループは複数の論理グループを含むことができる。元のメタグループから再配置メタグループへの元のデータのこのコピー操作は、より大きな効率を得るために他のプログラミング操作と並列に行われてもよい。図37および38から分かるように、部分的から完全への遷移は完全から完全への遷移が含むよりも多くのデータコピー操作を含むことになる(例えば、元のデータRの再配置メタブロックTへのコピー)。
図39は、ホストから受け取られたデータラン3990についての部分的整列から部分的整列への(P2P)遷移の例を示す。この遷移は、データランのスタート部のデータについて前に説明したものと同様である。データラン3990のスタート部のデータAは、シリアルフラッシュバッファに格納され(A→K)、後に、元のメタグループ3994からコピーされるデータE(P→E)と一緒に最小サイズの更新されるメタグループ3992にコピーされる(K→F)。データBは、最大サイズのメタグループにプログラムされる(B→G)。データラン境界まで広がっていて最大サイズに及ばないメタグループを含むデータDは、最大サイズの更新されるメタグループ3996に書き込まれる(D→I)。元のメタグループからのデータQは、同じ最大サイズの更新メタグループ3996にコピーされる(Q→J)。このように、この遷移中、整列は同じままであり、スタートデータラン境界は最小サイズの適応メタグループ3992にマッピングされ、残りのデータは最大サイズの適応メタグループにマッピングされる。
図40は、非整列から完全整列への(N2F)遷移の例を示す。ホストからのデータラン4002が受け取られて、データラン境界との整列なしで(非整列で)格納されている元のデータを更新するために使用される。この例では、元のデータは最大サイズのメタブロックに格納される。対照的に、更新されるメタグループは、データラン4002のスタート部および終端部のデータ境界について最小サイズのヘッドメタグループ4004およびテールメタグループ4006を含む。データラン4002の第1の部分的論理グループからのデータAはシリアルバッファにバッファリングされる(A→K)。同様に、データランの最後の部分的論理グループからのデータDはシリアルバッファにバッファリングされる(D→L)。これは、データラン4002の終端部のデータラン境界の位置に関してホストにより提供される情報に対する応答である。データBは、最大サイズのメタグループとして格納される(B→G)。より大きなデータランについて、追加のデータは最大サイズの追加メタグループとして格納することができる。メタグループGは最大サイズのメタグループに格納される。ヘッド、テール或いは最大サイズのメタグループに割り当てられない残りのデータCはパッドメタグループに割り当てられる(C→H)。メタグループHはこの例では最大サイズに及ばないメタブロックに直接格納されるが、他の例では始めにシリアルバッファに格納され、その後に最大サイズ未満のメタブロックにコピーされる。この例では、Cはテールパッドデータと見なされてよく、Hはテールパッドブロックと見なされる。更新されない元のメタグループ(O,P,Q,R)内のデータは、再配置メタグループに(O→S,R→T)或いはヘッドメタグループおよびテールメタグループに(P→E,Q→J)コピーされる。データのこれらの部分のコピーは、可能な場合には並列に行うことができる。例えば、再配置されたメタグループSおよびTへの部分OおよびRのコピーを並列に行うことができ、ここでOおよびRは共同で1つの最大サイズのメタグループと同等またはそれ未満のデータを含む。部分PおよびQのコピーは、他の元のメタグループからまたはシリアルバッファからの他のコピー操作と並列に行うことができる。データ部分Cが短い場合、データ部分Cはバッファリングされ、データ部分E,F,IおよびJのプログラミングのような他のプログラミング操作と並列に、更新されるメタグループにコピーすることができる。
図41は、非整列から部分的整列への(N2P)遷移の例を示す。元のメタグループは、データラン4110のデータラン境界と整列していない。この例では、元のメタグループは最大サイズのメタグループであるけれども、これは非整列については必ずしもそうではない。更新されたメタグループは、データランと部分的に整列して形成される。図40の場合のようにデータラン4110のスタート部のデータラン境界に最小サイズの更新されたメタグループ4112が割り当てられる。残りのメタグループは最大サイズのメタグループであり、データラン4110の終端部のデータラン境界は最小サイズのメタグループに割り当てられない。代わりに、この例では、データラン4110の終端部のデータラン境界は最大サイズのメタグループ4114に割り当てられる。元のメタグループは、更新されたメタグループに(P→E,Q→J)或いは再配置されたメタグループに(O→S,R→T)コピーされる元のデータ(O,P,Q,R)を含む。
図42は、非整列から部分的整列への(N2P)遷移の他の例を示す。元のメタブロックは、また、最大サイズのメタブロックである。図42は、元のメタブロックに対応しない(非整列)データラン境界を有するホストからのデータラン4220を示す。データラン内のデータをデータ境界に部分的に整列させて格納するために、更新されたメタブロックが形成される。この例では、データラン4220のスタート部のデータラン境界に最小サイズの更新されたメタグループ4222が割り当てられる。他の更新されたメタグループのメタグループ境界は、元のメタグループのメタグループ境界と同じ位置に配置される。この例では、ヘッドメタグループと次のメタグループ境界との間に最大サイズ未満のメタグループGが使用される。これは、ヘッドパッドメタグループと見なされ、これに格納されているデータはヘッドパッドデータと見なされる。ヘッドパッドメタグループは、直接に、またはシリアルフラッシュバッファにバッファリングされた後に、ヘッドパッドメタブロックに格納することができる。ヘッドパッドメタグループを直接格納するか或いはそれをバッファリングするかに関する決定は、(テールパッドデータに関して前に論じられたように)それが何らかのしきい値より大きいか或いは小さいかに基づくことができる。前と同様に、必要に応じて元のデータは再配置されたメタグループに(O→S)或いは更新されたメタグループに(Q→J)コピーすることができる。
図43は、非整列から非整列への(N2N)遷移の例を示す。この例では、ホストからデータラン4330が受け取られ、これは、データランの境界と全く整列していない元のメタグループに格納されているデータを更新する。更新されたデータは、データランの境界と全く整列していない更新されるメタグループに格納される。この例では、元のメタグループと更新されたメタグループとの両方が最大サイズのメタグループだけを含んでいる。この方式は、適応メタブロックを使用しないシステム(メタブロックのサイズが固定されているシステム)で使用されてもよい。この例では、シリアルフラッシュバッファは使用されない。元のデータ(P,Q)は、更新されるメタブロックにコピーされる(P→E,Q→J)。このように、大量の元のデータが更新されるメタグループに格納され、その後のデータランが同じデータラン境界位置を持って受け取られたならば、このデータは再びコピーされる。
データラン更新管理
ファイルは、ホストシステム内で作られたか、または外部情報源からホストシステムに受け取られたデータのセットであり、ホストシステム内で論理的セクタアドレスにマッピングされる。連続する論理的セクタアドレスのセットはデータランと称される。データランは、1つ以上のファイルまたは1つのファイルの複数の部分の格納のためにホストにより割り当てられた論理的に連続するセクタのセットと見なされてよく、データランは、論理アドレス空間の前に割り当てられた複数の部分の間に広がる。ホストは、いろいろなデータランへの書込み操作をインターリーブすることができる。通常、何時でも限られた数の開いたデータランが許容されるので、データランが必要に応じて開閉される。データランの中のセクタは、開いているバッファに、またはそのデータランと関連付けられている更新ブロックに、書き込まむことができる。データランからのデータを受け取って格納するには、データランと、データを格納するために使われる(バッファおよび更新メタブロックを含む)メモリ構造との管理が必要である。図44は、構造の幾つかと、これらに関して実行可能な操作とを示す。
データランを開く操作は、現存する1つのデータラン内の最後のセクタと連続していなく、かつ1つの現存するデータラン内の最後のセクタから許容される順次アドレスジャンプの範囲内にない1つのセクタが受け取られたときに、行うことができる。データランは、最も長い間更新されていない(LRU)データランであり、許容される最大個数のデータランが存在して、新しいデータランが開かれなければならないときに、閉じられることになる。また、データランの中の1つのセクタが更新され、更新がカオス的であると見なされる原因となるときにも、閉じられる。このようなカオス的更新は、一般に、米国特許出願第10/750,155号(特許文献23)に記載されている方法のような他の方法を用いて処理される。
バッファは、データランからの順次データを書き込むためのシリアルフラッシュバッファの部分である。バッファは、シリアルフラッシュバッファ内で物理的に連続していなくてもよい。複数の不連続なバッファがあれば、複数のバッファへのインターリーブな書き込みを容易にすることができる。データランが開かれるとき、データランの第1の論理グループが不完全であれば、バッファが開かれることになる。バッファは、データランの最後の論理グループについて第1のセクタが受け取られたときにも、開かれることになる。バッファは、パッドデータ(ヘッドパッド或いはテールパッド)のためにも、そのパッドデータが何らかの所定量に及ばない場合に、開かれることになる。バッファは、これに書き込まれるべきデータが完全であるときに、閉じられることになる。閉じられたバッファは、そのデータの全てを更新ブロックに書き込むことによってコピーされる。コピーは、バッファがシリアルフラッシュバッファの終端部に存する次の使用可能なバッファのうちの1つであるときに、行うことができる。通常、このようなコピー操作は、他のバッファのまたは元のデータの他のコピー操作と並列に、行われる。
更新メタブロックは、ホストからのまたはバッファからの何らかの更新されたデータが書き込まれる適応メタブロックである。バッファに送られない、それについての不完全な更新メタブロックが存在しないデータが受け取られたときに、更新メタブロックが割り当てられる。更新メタブロックは、データがバッファからコピーされるときにも割り当てられる。更新メタブロックのサイズは、格納されるべきデータの量による。更新メタブロックは、最小サイズのメタブロック、短縮されたサイズのメタブロック或いは最大サイズのメタブロックである。例えば、最小サイズのメタブロックはデータランのスタート部(ヘッド)および終端部(テール)のために使用され、短縮されたサイズのメタブロックはパッドデータ(ヘッドパッドまたはテールパッド)のために使用され、最大サイズのメタブロックはデータランの他の全てのデータのために使用されてもよい。更新ブロックは、最後のセクタがホスト、バッファまたは元のブロックからのデータで満たされたときに、完成したと見なされる。従って、完成は、バッファからのコピー操作の結果として或いは元のブロックからのコピーの結果として生じ、データランの閉鎖によりトリガされる。
元のメタブロックは適応メタブロックであり、ホストからの更新されたセクタによって陳腐にされた1つ以上のセクタを含む。メタブロックは、その中のセクタが更新されたデータのセクタの受け取りによって陳腐にされたとき、開いている元のメタブロックと見なされる。元のメタブロックは、その中のそれ以上のセクタが、任意の開いているデータランへのホストによるさらなる書き込みによって陳腐にされないときに、完成していると見なされてよい。データは、完成した元のメタブロックから再配置メタブロックにコピーすることができる。完成している元のメタブロックは、その中の全ての有効なセクタがコピーされたときには、完全に陳腐な元のメタブロックと見なされる。完全に陳腐な元のメタブロックは消去されることになる。
再配置メタブロックは、その中に元のメタブロックからデータの連続する論理グループをコピーすることができる適応メタブロックである。データが元のメタブロックからコピーされることになっていてヘッドメタブロックまたはテールメタブロックの一部ではないときに、再配置メタブロックが割り当てられることになる。再配置メタブロックは、その最後のセクタ位置が書き込まれたときに、完成していると見なされる。再配置メタブロックは、最小サイズまたは短縮されたサイズのメタブロックである。
図45は、本発明の実施形態に従ってデータ境界整列を伴ってホストから受け取られたセクタを格納するためのフローチャートを示す。この例はデータのセクタが格納されることを示しているが、データの他の単位も使用可能である。最初に、セクタの格納が開いているデータランへのカオス的更新を必要とするか否かが判定される(4550)。カオス的更新は、セクタが非順次的に更新される更新であり、米国特許出願第10/750,155号(特許文献23)にさらに記載され、この出願は、その全体が本願明細書において参照により援用されている。開いているデータランへのカオス的更新は、データ境界整列を伴う格納の代わりに実行されてもよい。従って、カオス的更新は、ここでは詳しく説明しない。セクタがカオス的更新を必要としないと判定されたならば、受け取られたセクタが開いているデータランに連続するか否かが判定される(4552)。
受け取られたセクタが開いているデータランに連続するものではなくて、開いているデータランの数が所定の最大値より少なければ(4554)、新しいデータランが開かれる(4556)。開いているデータランの数が所定の最大値より少なくなければ、新しいデータランを開く(4556)前に、(後に詳述するように)1つのデータランを閉じなければならない(4558)。新しいデータランが開かれた後、論理グループ境界からデータランのスタート部までにオフセットがあるか否かが判定される(4560)。オフセットがあればバッファが開かれ(4562)、バッファのサイズは、ヘッドデータ、すなわちデータランの第1の論理グループ内の部分、に等しい。その後、このバッファの終端部に達するまでこのバッファにセクタが書き込まれ、そしてバッファは閉じられる。
受け取られるセクタが開いているデータランに連続し、またデータランのために開いているバッファが存在するならば(4564)、セクタはバッファに書き込まれる(4566)。データランのために開いているバッファがない(4564)が、データランのために不完全なメタブロックが存在するならば(4568)、後述するようにセクタはその不完全なメタブロックに書き込まれる(4570)。データランのために開いているバッファがなく、また不完全なメタブロックが存在しなければ、受け取られたセクタがヘッドパッドデータであるか否かが判定される(4572)。また、論理グループ境界からのオフセットなしで(4560)新しいデータランが開かれる場合、この判定が行われる。セクタがヘッドパッドデータである場合、データの量(セクタの数)が、バッファリングのための最大のパッド長さである所定値(maxpad)と比較される(4574)。セクタの数がmaxpadより大きくなければ、ヘッドパッドデータと同じサイズのバッファが開かれる(4576)。セクタの数がmaxpadより大きければ、短縮されたメタブロックが割り当てられ(4578)、後にセクタはこの短縮されたメタブロックに書き込まれる(4570)。
セクタがヘッドパッドデータではないと判定されたならば(4572)、次に、セクタがテールパッドであるのか或いはテールデータであるのかが判定される(4580)。それらがテールパッド或いはテールデータでなければ、最大サイズのメタブロックが割り当てられ(4582)、セクタは後に最大サイズのメタブロックに書き込まれる(4570)。これは、ヘッドでもなくテールデータでもないデータについて一種のデフォルト条件である。従って、データランの中央部のデータは一般に最大の並列性を用いるために最大サイズのメタブロックに書き込まれる。セクタがテールパッドまたはテールデータを含んでいれば、セクタが(データランの最後の論理グループからの)テールデータであるか否かが判定される(4584)。それらが最後の論理グループからのものであれば、バッファが開かれ(4586)、バッファのサイズはテールデータに等しい(データランからの、最後の論理グループ内のデータに等しい)。その後、セクタはバッファに書き込まれる(4566)。セクタが最後の論理グループからのものでなければ、セクタはテールパッドデータであり、テールパッドの長さが所定のサイズ(maxpad)より大きいか否かが判定される(4588)。セクタの数がmaxpadより多ければ、短縮されたサイズのメタブロックが割り当てられ(4578)、その後にセクタはメタブロックに書き込まれる(4570)。テールパッドがmaxpadより大きくなければ(4588)、テールパッドに等しいバッファが開かれる(4590)。セクタは、その後、このバッファに書き込まれる(4566)。
図46は、1つ以上のメタブロックにセクタを書き込むためのフローチャートを示す。本願のこのフローチャートおよび他のフローチャートにおいて、論理の流れはフローチャートの底部に向かい、判断ボックスは、ボックスの下に示された肯定結果と、ボックスの一方の側に示されている否定結果とを有する。セクタのグループの格納のために割り当てられたメタブロックが短縮されたまたは最小サイズのメタブロックであるかが始めに判定される(4601)。短縮された或いは最小サイズのメタブロックが割り当てられていなければ(最大サイズのメタブロックが割り当てられていれば)、書き込まれるべきセクタは、割り当てられたメタブロックに並列に書き込まれる(4603)。その後、メタブロックが満杯か否かが判定される(4605)。メタブロックが満杯であれば、それは“完全”と称される(4607)。その後、データランまたはホストによりデータランに書き込まれるさらなるデータに対応するデータの全てが元のメタブロックにおいて陳腐になっているか否かが判定され(4609)、そうであるならば、元のブロックは完成していると見なされる(4611)。短縮されたまたは最小サイズのメタブロックが書き込まれるのであれば(4601)、バッファが現在コピーされていなければ(4612)、コピーされるべく使用可能な閉じているバッファが特定され(4613)、これらのバッファに関連付けられている元のデータが特定され(4615)、1つ以上の短縮されたまたは最小サイズのメタブロックが割り当てられる(4617)。元のデータが現在再配置されていなければ(4619)、完全な元のメタブロックから再配置されるべきデータが特定され(4621)、短縮されたまたは最小サイズのメタブロックが割り当てられる(4623)。その後、バッファからコピーされる或いは短縮されたメタブロックに再配置されるセクタの書き込みと並列の、セクタのグループに割り当てられたメタブロックへのセクタの書き込みが前のように実行される。
図47は、データランを閉じるためのフローチャートを示す。最も長い間使用されていない(LRU)データランが始めに特定される(4731)。このデータランのための開いているバッファが存在するならば(4733)、それは閉じられ(4735)、データランのための不完全なメタブロックが存在するならば(4737)、その不完全なメタブロックが完全になるまで(4741)元のメタブロックまたはバッファからデータがコピーされる(4739)。部分的に陳腐な元のメタブロックが存在するならば(4743)(完全な元のメタブロック)短縮されたサイズのメタブロックが再配置されたメタブロックとして割り当てられ(4745)、元のブロックが完全に陳腐になるまで(4749)有効なセクタがコピーされる(4747)。その後、データランは閉じられていると称される(4751)。
本発明を種々の代表的な実施形態に関して説明してきたが、本発明が添付の特許請求の範囲の全範囲内においてその権利が保護されるべきことが理解されよう。
一緒に動作する不揮発性メモリのブロック図である。 一緒に動作するホストシステムのブロック図である。 図1Aのメモリアレイの編成の第1の例を示す。 図1Aのメモリアレイに記憶されているオーバーヘッドデータを伴うホストデータセクタの例を示す。 図1Aのメモリアレイの編成の第2の例を示す。 図1Aのメモリアレイの編成の第3の例を示す。 図5のメタブロックのようなメモリアレイにおけるメタブロックの例を示す。 図6に示されているようなメタブロックに記憶されている論理ブロックの例を示す。 元のデータがメモリアレイ内のメタブロックに記憶されるデータ更新を示す。 メモリアレイ内の適応メタブロックに格納される適応論理ブロックを示す。 セクタから論理グループへ、および論理グループから図9Aの適応論理ブロックへの論理マッピングを示す。 2つの適応論理ブロックの2つの適応メタブロックへの並列プログラミングを示す。 種々の構成で適応論理ブロックにマッピングされる論理グループを示す。 更新されて新しい適応論理ブロックに格納される、適応論理ブロックに記憶されているデータを示す。 データストリームに適合するように再マッピングされる適応論理ブロックの例を示す。 データストリームに適合するように再マッピングされる適応論理ブロックの他の例を示す。 より小さな適応論理ブロックに再マッピングされる、部分的に充填されている適応論理ブロックを示す。 更新される論理アドレス範囲に適合させられているデータを更新するために使用される適応論理ブロックを示す。 メモリアレイの適応メタブロックに記憶されている適応論理ブロックを示す。 メモリアレイに記憶されている図15Aの適応論理ブロックの論理グループのセクタを示す。 メモリアレイに記憶されている論理グループのセクタの他の例を示す。 2つの適応メタブロックが並列にプログラムされるセクタの配置の例を示す。 3つのメタブロックの並列プログラミングの例と、その結果としてのメタブロック内でのページの配置とを示す。 最初に更新されるセクタが適応メタブロック内の第1のセクタではないデータ更新の例を示す。 メモリアレイの適応メタブロックに記憶されている論理グループの位置を記録したテーブルを示す。 適応メタブロック構成を管理するために使用可能なメディアマネージャを示す。 消去済みブロック管理階層の例を示すブロック図である。 1つの有効なセクタと複数の陳腐なセクタとを含む複数のセクタを含むEBLブロックを示す。 アドレステーブル管理階層の例を示すブロック図である。 ブートアドレスおよびブートブロックを含むデータ構造を示す。 NVRAMを含むメモリシステムを示す。 NVRAMを使用するメモリアレイに効率的に記憶された2つのデータストリームを示す。 NVRAMに記憶されている更新されたデータを示す。 データランから成るファイルを示す。 データランの中でのファイル境界を示す。 データ単位の階層を示す。 メタグループにマッピングされる2つのデータランを示す。 メタグループにマッピングされるファイル境界を伴うデータランを示す。 データ境界管理を伴うフラッシュメモリにデータを格納するための2つの方式を示す。 図25のメタグループA〜Dを記憶するメタブロックA〜Dから成るプログラムブロックを示す。 図28AのメタブロックA〜Dにおけるセクタの構成を示す。 プログラムブロックに転送されるアキュムレータ内のセクタを示す。 満杯のメタグループを示す。 部分的メタグループを示す。 短いメタグループを示す。 スタートメタグループを示す。 マルチファイルメタグループを示す。 部分的メタグループの再マッピングを示す。 短いメタグループの再マッピングを示す。 スタートメタグループの再マッピングを示す。 マルチファイルメタグループの再マッピングを示す。 ホストータおよび再配置されるデータの並列プログラミングを示す。 シリアルフラッシュバッファを用いるホストデータの記憶を示す。 ホストからのデータを格納する代替の方法を示す。 ホストからのデータの書き込みと共に元のデータがコピーされる図33Aの代替の方法を示す。 ホストからのデータを格納するための代替の方式を示す。 非整列で記憶されたデータランを示す。 部分的整列で記憶されたデータランを示す。 完全整列で記憶されたデータランを示す。 データランの代表的な構造を示す。 いろいろな長さのデータランの代表的な構造を示す。 データラン内のデータの更新中に発生し得る遷移の例を示す。 完全から完全への遷移の例を示す。 部分的から完全への遷移の例を示す。 部分的から部分的への遷移の例を示す。 非整列から完全整列への遷移の例を示す。 非整列から部分的整列への遷移の例を示す。 非整列から部分的整列への遷移の第2の例を示す。 非整列から非整列への例を示す。 一定のデータ構造と、データ構造と関連して実行可能な操作との一覧表である。 本発明の実施形態に従ってセクタを記憶する操作を示すフローチャートである。 図45のセクタの書き込みを示すフローチャートである。 本発明の実施形態に従ってデータランを閉じる操作を示すフローチャートである。

Claims (11)

  1. 別々にプログラム可能なプレーンに配置された複数の個別に消去可能な消去ブロックを含むメモリアレイにデータを格納する方法であって、
    適応メタブロックを形成するために前記アレイのいろいろなプレーンから1つの数の消去ブロックを選択するステップであって、前記適応メタブロック内の消去ブロックの数が可能な値の1つの範囲から選択され、前記適応メタブロックは、格納されるべきデータのサイズに対応するために、異なる数の消去ブロックに適応可能である選択可能な数の消去ブロックから形成されるステップと、
    前記適応メタブロック内の消去ブロックを並列にプログラムするステップと、を含み、
    前記適応メタブロック内にプログラムされるべきデータはデータのアドレス指定可能な単位を含み、1つの消去ブロックに格納されるデータのアドレス指定可能な単位の数に等しい数のデータのアドレス指定可能な単位から論理グループが個別に形成され、該論理グループが、前記適応メタブロック内の消去ブロックの各々が前記論理グループからのデータの少なくとも1つのアドレス指定可能な単位を含むように、前記論理グループで形成される適応論理ブロックが適応メタブロックにプログラムされる方法。
  2. 請求項1記載の方法において、
    前記可能な値の範囲は、1から、前記メモリアレイ内の別々にプログラム可能なプレーンの数までである方法。
  3. 請求項1記載の方法において、
    前記適応メタブロック内の消去ブロックを並列にプログラムするステップは、前記適応メタブロック内にない複数の消去ブロックをプログラムするステップと並列に行われる方法。
  4. 請求項3記載の方法において、
    前記適応メタブロック内にない複数の消去ブロックは、他の適応メタブロック内にある方法。
  5. 請求項1記載の方法において、
    前記1つの数の消去ブロックを選択するステップは、1つの数のプレーンを選択するステップを含み、個々のプレーンは、前記プレーン内の使用可能な消去ブロックの数に応じて選択される方法。
  6. 請求項1記載の方法において、
    前記適応メタブロック内にプログラムされるべき複数のアドレス指定可能なデータパケットに論理境界が含まれるか否かに応じて適応メタブロック内の消去ブロックの数が選択される方法。
  7. 請求項記載の方法において、
    論理境界の位置は、更新される論理アドレスの範囲により判定される方法。
  8. 請求項記載の方法において、
    論理境界の位置は、ホストにより明示される方法。
  9. 不揮発性メモリシステムであって、
    別々にプログラム可能なプレーンに配置されたメモリセルの第1のアレイと、
    複数の消去ブロックを有するプレーンであって、消去ブロックが個別に消去される前記アレイの最小単位であるプレーンと、を備え、
    前記システムは、1つの数のプレーンを選択するように構成されているので、適応メタブロックを形成でき、前記適応メタブロックは、格納されるべきデータのサイズに対応するために、異なる数の消去ブロックに適応可能である選択可能な数の消去ブロックから形成され、
    前記システムは、選択されたプレーン内の個々の消去ブロックを並列にプログラムするように構成され、
    前記適応メタブロック内にプログラムされるべきデータはデータのアドレス指定可能な単位を含み、1つの消去ブロックに格納されるデータのアドレス指定可能な単位の数に等しい数のデータのアドレス指定可能な単位から論理グループが個別に形成され、該論理グループが、前記適応メタブロック内の消去ブロックの各々が前記論理グループからのデータの少なくとも1つのアドレス指定可能な単位を含むように、前記論理グループで形成される適応論理ブロックが適応メタブロックにプログラムされるシステム。
  10. 請求項9記載のシステムにおいて、
    個々のプレーンは、そのプレーン内に残っている使用可能な消去ブロックの数に応じて選択されるシステム。
  11. 請求項9記載のシステムにおいて、
    メモリセルの第2のアレイをさらに備え、
    前記メモリセルの第1のアレイはフラッシュメモリ内にあり、前記メモリセルの第2のアレイは不揮発性ランダムアクセスメモリ内にあるシステム。
JP2006547364A 2003-12-30 2004-12-22 データラン・プログラミング Expired - Fee Related JP4977473B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US10/749,189 2003-12-30
US10/749,189 US7433993B2 (en) 2003-12-30 2003-12-30 Adaptive metablocks
US10/841,118 2004-05-07
US10/841,118 US20050144363A1 (en) 2003-12-30 2004-05-07 Data boundary management
US11/016,271 2004-12-16
US11/016,271 US7383375B2 (en) 2003-12-30 2004-12-16 Data run programming
PCT/US2004/043306 WO2005066770A2 (en) 2003-12-30 2004-12-22 Data run programming

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012005217A Division JP5438137B2 (ja) 2003-12-30 2012-01-13 データラン・プログラミング

Publications (2)

Publication Number Publication Date
JP2007517325A JP2007517325A (ja) 2007-06-28
JP4977473B2 true JP4977473B2 (ja) 2012-07-18

Family

ID=34753551

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006547364A Expired - Fee Related JP4977473B2 (ja) 2003-12-30 2004-12-22 データラン・プログラミング
JP2012005217A Expired - Fee Related JP5438137B2 (ja) 2003-12-30 2012-01-13 データラン・プログラミング

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012005217A Expired - Fee Related JP5438137B2 (ja) 2003-12-30 2012-01-13 データラン・プログラミング

Country Status (7)

Country Link
US (1) US7383375B2 (ja)
EP (2) EP1700204B1 (ja)
JP (2) JP4977473B2 (ja)
KR (1) KR100983212B1 (ja)
CN (1) CN100524209C (ja)
TW (1) TWI280581B (ja)
WO (1) WO2005066770A2 (ja)

Families Citing this family (289)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4175991B2 (ja) * 2003-10-15 2008-11-05 株式会社東芝 不揮発性半導体記憶装置
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7558906B2 (en) 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US20070084375A1 (en) * 2005-08-10 2007-04-19 Smith Kyle S High density cartridge and method for reloading
US7529905B2 (en) * 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US20070143566A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7769978B2 (en) * 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143378A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with adaptive file handling in a directly mapped file storage system
US20070156998A1 (en) * 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143561A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system
US7793068B2 (en) * 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US20070174563A1 (en) * 2006-01-23 2007-07-26 Stuart Staniford System and method for selecting memory locations for overwrite
EP1850347A1 (en) * 2006-04-28 2007-10-31 Deutsche Thomson-Brandt Gmbh Method and device for writing to a flash memory
US7564721B2 (en) * 2006-05-25 2009-07-21 Micron Technology, Inc. Method and apparatus for improving storage performance using a background erase
KR100758301B1 (ko) * 2006-08-04 2007-09-12 삼성전자주식회사 메모리 카드 및 그것의 데이터 저장 방법
KR100855467B1 (ko) 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
WO2008057557A2 (en) * 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
US8286156B2 (en) * 2006-11-07 2012-10-09 Sandisk Technologies Inc. Methods and apparatus for performing resilient firmware upgrades to a functioning memory
US8166267B2 (en) 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
EP2097825B1 (en) 2006-12-26 2013-09-04 SanDisk Technologies Inc. Use of a direct data file system with a continuous logical address space interface
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US7791952B2 (en) * 2007-01-30 2010-09-07 Micron Technology, Inc. Memory device architectures and operation
US8275953B2 (en) * 2007-03-19 2012-09-25 Sandisk Technologies Inc. Methods for forcing an update block to remain sequential
US7904670B2 (en) * 2007-03-19 2011-03-08 Sandisk Corporation Methods for conversion of update blocks based on comparison with a threshold size
US20080235464A1 (en) * 2007-03-19 2008-09-25 Shai Traister System for conversion of update blocks based on comparison with a threshold size
US8341375B2 (en) * 2007-03-19 2012-12-25 Sandisk Technologies Inc. Methods for conversion of update blocks based on association with host file management data structures
US20080235489A1 (en) * 2007-03-19 2008-09-25 Sergey Anatolievich Gorobets Systems for forcing an update block to remain sequential
US20080250220A1 (en) * 2007-04-06 2008-10-09 Takafumi Ito Memory system
US7869277B1 (en) * 2007-04-25 2011-01-11 Apple Inc. Managing data writing to memories
US20080307156A1 (en) * 2007-06-08 2008-12-11 Sinclair Alan W System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium
US8713283B2 (en) * 2007-06-08 2014-04-29 Sandisk Technologies Inc. Method of interfacing a host operating through a logical address space with a direct file storage medium
US8239639B2 (en) * 2007-06-08 2012-08-07 Sandisk Technologies Inc. Method and apparatus for providing data type and host file information to a mass storage system
US20090055574A1 (en) * 2007-08-25 2009-02-26 Bei-Chuan Chen NAND Flash Memory Device And Related Method Thereof
US8533562B2 (en) * 2007-09-12 2013-09-10 Sandisk Technologies Inc. Data protection after possible write abort or erase abort
US8566504B2 (en) 2007-09-28 2013-10-22 Sandisk Technologies Inc. Dynamic metablocks
TW200917277A (en) * 2007-10-15 2009-04-16 A Data Technology Co Ltd Adaptive hybrid density memory storage device and control method thereof
US8880483B2 (en) * 2007-12-21 2014-11-04 Sandisk Technologies Inc. System and method for implementing extensions to intelligently manage resources of a mass storage system
US8621137B2 (en) * 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
JP2009211192A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
JP5166118B2 (ja) * 2008-05-21 2013-03-21 株式会社東芝 半導体メモリの制御方法
US8762654B1 (en) * 2008-07-02 2014-06-24 Marvell International Ltd. Selectively scheduling memory accesses in parallel based on access speeds of memory
US8209439B2 (en) * 2008-08-25 2012-06-26 Sandisk Il Ltd. Managing multiple concurrent operations with various priority levels in a local storage device
WO2010035241A1 (en) * 2008-09-28 2010-04-01 Ramot At Tel Aviv University Ltd. Method and system for adaptive coding in flash memories
US8671327B2 (en) * 2008-09-28 2014-03-11 Sandisk Technologies Inc. Method and system for adaptive coding in flash memories
US8566562B2 (en) * 2008-10-03 2013-10-22 Skymedi Corporation Method for sequentially writing data with an offset to a non-volatile memory
TWI413984B (zh) * 2008-10-16 2013-11-01 Silicon Motion Inc 快閃記憶體裝置以及資料更新方法
EP2189895A1 (en) * 2008-11-24 2010-05-26 Deutsche Thomson OHG Flash based memory comprising a Flash translation layer and method for storing a file therein
US8266365B2 (en) 2008-12-17 2012-09-11 Sandisk Il Ltd. Ruggedized memory device
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8094500B2 (en) 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8392687B2 (en) * 2009-01-21 2013-03-05 Micron Technology, Inc. Solid state memory formatting
EP2396729B1 (en) * 2009-02-12 2019-05-22 Toshiba Memory Corporation Memory system and method of controlling memory system
KR101574540B1 (ko) * 2009-04-15 2015-12-07 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
US20110060865A1 (en) * 2009-09-08 2011-03-10 Lsi Corporation Systems and Methods for Flash Memory Utilization
TWI417889B (zh) * 2009-12-30 2013-12-01 Silicon Motion Inc 快閃記憶體之寫入逾時控制方法及其記憶裝置
JP5404483B2 (ja) * 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
US8429391B2 (en) 2010-04-16 2013-04-23 Micron Technology, Inc. Boot partitions in memory devices and systems
JP2011227664A (ja) 2010-04-19 2011-11-10 Toshiba Corp メモリシステム
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US9268649B1 (en) * 2011-06-23 2016-02-23 Western Digital Technologies, Inc. Disk drive with recent write streams list for data refresh determination
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
EP2761469B1 (en) * 2011-09-30 2019-11-13 Intel Corporation Non-volatile random access memory (nvram) as a replacement for traditional mass storage
US9146856B2 (en) * 2012-04-10 2015-09-29 Micron Technology, Inc. Remapping and compacting in a memory device
TWI479313B (zh) * 2012-07-11 2015-04-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9465732B2 (en) 2013-03-15 2016-10-11 Sandisk Technologies Llc Binning of blocks for dynamic linking
US9116774B2 (en) 2013-05-14 2015-08-25 Sandisk Technologies Inc. Firmware updates for multiple product configurations
TWI470431B (zh) * 2013-06-14 2015-01-21 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9411721B2 (en) * 2013-11-15 2016-08-09 Sandisk Technologies Llc Detecting access sequences for data compression on non-volatile memory devices
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9772876B2 (en) * 2014-01-06 2017-09-26 International Business Machines Corporation Executing an all-to-allv operation on a parallel computer that includes a plurality of compute nodes
WO2015114754A1 (ja) * 2014-01-29 2015-08-06 株式会社日立製作所 ストレージ装置
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
WO2015196378A1 (zh) 2014-06-25 2015-12-30 华为技术有限公司 读写闪存中数据的方法、装置及用户设备
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
KR20160112135A (ko) * 2015-03-18 2016-09-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10120573B2 (en) * 2015-09-14 2018-11-06 Microsoft Technology Licensing, Llc. Modular sequential writing of data to data storage devices
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US9830084B2 (en) * 2015-12-03 2017-11-28 Sandisk Technologies Llc Writing logical groups of data to physical locations in memory using headers
US10013179B2 (en) 2015-12-03 2018-07-03 Sandisk Technologies Llc Reading logical groups of data from physical locations in memory using headers
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
KR101805828B1 (ko) * 2016-03-21 2017-12-07 주식회사 디에이아이오 스토리지 시스템의 주소 변환 방법 및 스토리지 시스템의 메모리 장치 컨트롤러
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
CN106445407A (zh) * 2016-08-17 2017-02-22 北京兆易创新科技股份有限公司 一种芯片处理方法及装置
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10545861B2 (en) 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10482010B2 (en) * 2017-06-29 2019-11-19 Intel Corporation Persistent host memory buffer
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10613943B2 (en) * 2017-07-27 2020-04-07 Western Digital Technologies, Inc. Method and system for improving open block data reliability
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10445230B2 (en) * 2017-12-08 2019-10-15 Macronix International Co., Ltd. Managing block arrangement of super blocks
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
CN112055850B (zh) * 2017-12-13 2024-04-23 美光科技公司 Nand装置及相关方法和机器可读媒体
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
CN109817257B (zh) * 2018-12-27 2020-10-13 西安紫光国芯半导体有限公司 一种动态存储器刷新操作下的省电方法和动态存储器
US10990320B2 (en) * 2019-02-01 2021-04-27 Western Digital Technologies, Inc. Systems and methods to optimally select metablocks
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US12087382B2 (en) 2019-04-11 2024-09-10 Pure Storage, Inc. Adaptive threshold for bad flash memory blocks
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
TWI769386B (zh) * 2019-07-04 2022-07-01 群聯電子股份有限公司 資料抹除方法、記憶體控制電路單元及記憶體儲存裝置
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
CN111143313B (zh) * 2019-12-25 2023-07-25 成都三零嘉微电子有限公司 一种提高混合映射算法的日志块读写性能的方法
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11586385B1 (en) 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US12099742B2 (en) 2021-03-15 2024-09-24 Pure Storage, Inc. Utilizing programming page size granularity to optimize data segment storage in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11756644B2 (en) 2021-06-23 2023-09-12 International Business Machines Corporation Triage of multi-plane read requests
KR102403277B1 (ko) * 2021-12-24 2022-05-30 오픈엣지테크놀로지 주식회사 어레이 풀링 방법 및 이를 위한 장치
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus
US11966605B2 (en) * 2022-03-09 2024-04-23 Kioxia Corporation Superblock-based write management in non-volatile memory devices

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
JP3122222B2 (ja) 1992-05-08 2001-01-09 株式会社東芝 メモリカード装置
US5532962A (en) 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JPH06266596A (ja) 1993-03-11 1994-09-22 Hitachi Ltd フラッシュメモリファイル記憶装置および情報処理装置
US5367484A (en) 1993-04-01 1994-11-22 Microchip Technology Incorporated Programmable high endurance block for EEPROM device
KR970008188B1 (ko) 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5473765A (en) 1994-01-24 1995-12-05 3Com Corporation Apparatus for using flash memory as a floppy disk emulator in a computer system
US5661053A (en) 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
JP3153730B2 (ja) 1995-05-16 2001-04-09 株式会社東芝 不揮発性半導体記憶装置
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6125435A (en) 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
JP3604466B2 (ja) 1995-09-13 2004-12-22 株式会社ルネサステクノロジ フラッシュディスクカード
US6304980B1 (en) 1996-03-13 2001-10-16 International Business Machines Corporation Peer-to-peer backup system with failure-triggered device switching honoring reservation of primary device
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5860124A (en) 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US6034897A (en) 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
JP3072722B2 (ja) 1997-06-20 2000-08-07 ソニー株式会社 フラッシュメモリを用いるデータ管理装置及びデータ管理方法並びにフラッシュメモリを用いる記憶媒体
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6226728B1 (en) 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
JP2000122917A (ja) * 1998-07-13 2000-04-28 Sony Corp 記録装置および記録方法、再生装置および再生方法、記録媒体、並びにプログラム記録媒体
JP4085478B2 (ja) 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
US6490649B2 (en) 1998-11-10 2002-12-03 Lexar Media, Inc. Memory device
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6401160B1 (en) 1999-03-31 2002-06-04 Intel Corporation Method and apparatus to permit adjustable code/data boundary in a nonvolatile memory
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
US6544844B2 (en) 1999-10-08 2003-04-08 Macronix International Co., Ltd. Method for forming a flash memory cell having contoured floating gate surface
US6377500B1 (en) 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6571261B1 (en) 2000-07-13 2003-05-27 International Business Machines Corporation Defragmentation utility for a shared disk parallel file system across a storage area network
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
JP3699890B2 (ja) 2000-08-30 2005-09-28 シャープ株式会社 不揮発性半導体記憶装置
JP3992960B2 (ja) * 2000-10-26 2007-10-17 松下電器産業株式会社 記録装置及びプログラム
US6684289B1 (en) 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6591330B2 (en) 2001-06-18 2003-07-08 M-Systems Flash Disk Pioneers Ltd. System and method for flexible flash file
JP4256600B2 (ja) * 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6717847B2 (en) 2001-09-17 2004-04-06 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123412D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
TW506123B (en) 2001-10-24 2002-10-11 Macronix Int Co Ltd Multi-level NROM memory cell and its operating method
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
JP3967121B2 (ja) 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US6895464B2 (en) 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US7096313B1 (en) 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
US7103732B1 (en) 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
US7526599B2 (en) 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US6831865B2 (en) 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US6985992B1 (en) 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US8412879B2 (en) 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
JP2005135008A (ja) 2003-10-28 2005-05-26 Sony Corp 情報配信システム及び情報配信方法
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144363A1 (en) 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management

Also Published As

Publication number Publication date
EP2256621A1 (en) 2010-12-01
US20050144367A1 (en) 2005-06-30
JP2012099139A (ja) 2012-05-24
EP1700204B1 (en) 2014-03-12
WO2005066770A2 (en) 2005-07-21
US7383375B2 (en) 2008-06-03
TW200535854A (en) 2005-11-01
CN1922571A (zh) 2007-02-28
JP5438137B2 (ja) 2014-03-12
TWI280581B (en) 2007-05-01
CN100524209C (zh) 2009-08-05
JP2007517325A (ja) 2007-06-28
KR20070012630A (ko) 2007-01-26
EP1700204A1 (en) 2006-09-13
KR100983212B1 (ko) 2010-09-20
WO2005066770A9 (en) 2005-09-29

Similar Documents

Publication Publication Date Title
JP5438137B2 (ja) データラン・プログラミング
US7433993B2 (en) Adaptive metablocks
US20050144363A1 (en) Data boundary management
JP4787266B2 (ja) スクラッチパッドブロック
KR101202620B1 (ko) 복수-스트림 업데이팅을 갖는 비휘발성 메모리 및 방법
JP4399008B2 (ja) 不揮発性メモリおよびマルチストリーム更新追跡を伴う方法
KR101089576B1 (ko) 업데이트 및 스크래치 패드 블록들을 위한 개선된 인덱싱을갖는 비휘발성 메모리 및 방법
JP5001011B2 (ja) ホストの使用特性に基づいたフラッシュメモリのアドレスマッピングの適応的モード切り換え
EP2112599B1 (en) Scheduling of housekeeping operations in flash memory systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071130

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110527

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120117

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120229

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120321

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120416

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150420

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150420

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150420

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees