JP4441577B2 - 固定サイズ格納ブロックを有するメモリシステムにおける変換データ単位格納 - Google Patents

固定サイズ格納ブロックを有するメモリシステムにおける変換データ単位格納 Download PDF

Info

Publication number
JP4441577B2
JP4441577B2 JP2008535553A JP2008535553A JP4441577B2 JP 4441577 B2 JP4441577 B2 JP 4441577B2 JP 2008535553 A JP2008535553 A JP 2008535553A JP 2008535553 A JP2008535553 A JP 2008535553A JP 4441577 B2 JP4441577 B2 JP 4441577B2
Authority
JP
Japan
Prior art keywords
data
memory
file
individual
group
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
JP2008535553A
Other languages
English (en)
Other versions
JP2009512066A5 (ja
JP2009512066A (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 US11/250,299 external-priority patent/US7529905B2/en
Priority claimed from US11/250,794 external-priority patent/US7814262B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of JP2009512066A publication Critical patent/JP2009512066A/ja
Publication of JP2009512066A5 publication Critical patent/JP2009512066A5/ja
Application granted granted Critical
Publication of JP4441577B2 publication Critical patent/JP4441577B2/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
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本願は、半導体フラッシュメモリ等の再プログラム可能な不揮発性メモリシステムの動作に関し、より具体的にはサイズが異なり時間の経過にともない変化するデータファイルの論理的単位の初期格納とその後の更新とに関する。本願明細書で参照する特許、特許出願、記事、その他の出版物、文書、事柄はどれも、その全体があらゆる目的のために本願明細書において参照により援用されている。
本願明細書で説明する手法は、いずれも2005年2月16日に出願された米国特許出願第11/060,249号(特許文献1)、第11/060,174号(特許文献2)、および第11/060,248号(特許文献3)、2005年8月3日に出願された仮米国特許出願第60/705,388号(特許文献4)でより詳しく記載され、これ以降「Direct Data File Applications (直接データファイルアプリケーション)」と称する、フラッシュメモリシステムで実装できる。
初期世代の商用フラッシュメモリシステムでは、メモリセルからなる矩形アレイが、標準ディスクドライブセクタのデータ量を、すなわち512バイトを、各々格納する多数のセルグループに分割されていた。さらに通常ならば、誤り訂正符号(ECC)を格納するため、および、ことによるとユーザデータおよび/またはこれを格納するメモリセルグループに関係する他のオーバーヘッドデータを格納するため、16バイト等、さらなる量のデータが各グループに加わる。そのようなグループ内のメモリセル数は、ともに消去可能な最低メモリセル数である。すなわち消去単位は事実上、1つのデータセクタを、そしてオーバーヘッドデータが含まれる場合はオーバーヘッドデータを、格納するメモリセル数である。米国特許第5,602,987号(特許文献5)および第6,426,893号(特許文献6)には、この種のメモリシステムの例が記載されている。フラッシュメモリの特徴として、メモリセルは、これにデータを再度プログラムする前に消去する必要がある。
フラッシュメモリシステムは多くの場合、パーソナルコンピュータやカメラ等、様々なホストに着脱可能な状態で接続するメモリカードまたはフラッシュドライブの形で提供されるが、そのようなホストシステムの中に埋め込まれることもある。ホストは通常、メモリへデータを書き込むときに、メモリシステムの連続する仮想アドレス空間の中でセクタ、クラスタ、またはその他のデータ単位に一意な論理アドレスを割り当てる。ホストは、ディスクオペレーティングシステム(DOS)のように、メモリシステムの論理アドレス空間の中のアドレスにデータを書き込み、かつこれからデータを読み出す。メモリシステムの中のコントローラは、ホストから受け取った論理アドレスをメモリアレイの中のデータが実際に格納される物理アドレスに翻訳し、これらのアドレス翻訳の経緯を把握する。メモリシステムのデータ格納容量は少なくとも、メモリシステムのために設定される論理アドレス空間全体にわたってアドレスされるデータ量に相当する。
後続世代のフラッシュメモリシステムでは、消去単位のサイズが複数のセクタのデータを十分に格納するメモリセルブロックまで拡大した。メモリシステムの接続先にあたるホストシステムがセクタ等の小さな最小単位でデータをプログラムし読み出すとしても、フラッシュメモリの1消去単位には多数のセクタが格納される。ホストが論理セクタのデータの更新や置き換えを行うにつれ、ブロック内のいくつかのデータセクタが用済みになることは多々ある。ブロックに格納されたデータに上書きを行うには事前にブロック全体を消去しなければならないので、新規または更新済みデータは通常、あらかじめ消去され、データのための容量が残っている別のブロックに格納される。この過程で元のブロックには用済みデータが残り、メモリ内の貴重なスペースを取る。しかし、このブロックは、その中に有効データが残っている場合には消去できない。
したがって、メモリ格納容量の有効利用を図るため、有効な不完全ブロックのデータを消去済みブロックにコピーすることによってこれを整理または回収するのが一般的であり、こうすればデータのコピー元にあたるブロックは消去でき、その格納容量の全体を再利用できる。ブロック内のデータセクタをそれぞれの論理アドレスの順にグループ分けするためにデータをコピーすることも望ましく、こうすればデータを読み出し、読み出したデータをホストへ転送する速度が上がる。そのようなデータコピーがあまりにも頻繁に行われると、メモリシステムの動作性能が低下することがある。これは特に、メモリの格納容量が、システムの論理アドレス空間を通じてホストによってアドレスされるデータ量と大差ない場合、つまりよくある場合では、メモリシステムの動作に影響する。この場合、ホストプログラミングコマンドが実行される前にデータを整理または回収する必要がある。そうするとプログラミングの時間が長引く。
所与の半導体領域に格納できるデータのビット数を増やすため、ブロックのサイズはメモリシステムの世代交代を通じて拡大している。256以上のデータセクタを格納するブロックが一般的になりつつある。加えて、データのプログラミングと読み出しにあたって並列度を高めるため、異なるアレイまたはサブアレイからなる2つ、4つ、またはそれ以上のブロックがしばしばメタブロックとして論理的にともにリンクされる。そのような大容量操作単位には、メモリシステムの効率的動作という課題がともなう。格納データのグループ分けに変化やサイズのばらつきを招く圧縮や暗号化をはじめとするデータ変換は、メモリシステムを適度な性能水準に維持することをより一層困難にする。
米国特許出願第11/060,249号 米国特許出願第11/060,174号 米国特許出願第11/060,248号 仮米国特許出願第60/705,388号 米国特許第5,602,987号 米国特許第6,426,893号 米国特許出願第10/915,039号 米国特許第5,570,315号 米国特許第5,774,397号 米国特許第6,046,935号 米国特許第6,373,746号 米国特許第6,456,528号 米国特許第6,522,580号 米国特許第6,771,536号 米国特許第6,781,877号 米国公開特許出願第2003/0147278号 米国公開特許出願第2003/0109093号 米国特許第6,763,424号 米国特許出願第10/749,831号 米国特許出願第10/750,155号 米国特許出願第10/917,888号 米国特許出願第10/917,867号 米国特許出願第10/917,889号 米国特許出願第10/917,725号 米国特許出願第10/749,189号 米国特許出願第10/841,118号 米国特許出願第11/016,271号 米国特許出願第10/897,049号 米国特許出願第11/022,369号 米国特許出願第11/196,869号
メモリシステムに格納されるデータは、個別のアドレス単位に、好ましくは等量のデータを有する単位に分割され、単位内のデータは、好ましくは個別に変換データ単位に変換された後、メモリのブロックまたはメタブロックに格納される。データ変換は、例えばメモリシステムがデータを符号化、圧縮、または暗号化することによって起こりうる。変換済みデータ単位は普通、変換前とは異なるサイズ、変換前より小さいか大きいサイズを有し、複数の変換済みデータ単位のサイズは通常ならば等しくない。格納済み・変換済みデータ単位はメモリの中で、変換済みデータ単位の境界と、変換済みデータ単位がまたがるブロックまたはメタブロックの物理境界とに一致するアドレス境界を有するデータグループによって識別される。物理ブロック境界によって2つ以上のデータグループに分かれる変換済みデータ単位の場合、これらのデータグループはつなぎ合わせることができる。サイズの異なるデータグループは、好ましくは使用可能な空間にて順次物理的に隣り合わせて格納される。メモリシステムにおけるさらなる処理で、変換済みデータ単位の境界に一致するデータグループ境界は好ましくは別々に識別され続ける。
これらの手法は、独自のアドレス範囲を各々有する個別ファイルオブジェクトの形をとるデータにより、またはメモリシステムの共通論理アドレス空間を共用する複数のファイルオブジェクトにより実装できる。いずれにせよ、データの論理アドレス範囲は個別データ単位に分割される。変換後、変換済みデータからなる1つ以上の一意に識別されるデータグループは物理格納位置へマッピングされる。一実施形態において、ある1つの変換済みデータ単位からなるデータグループが別の変換済みデータ単位からなるデータグループと併合されることも組み合わされることもなく、それゆえ、別々に認識される個別単位のデータは区別され続ける。これにより、読み出し時に格納されたグループのデータを単位ごとに再変換することが可能となる。メモリシステムによって変換され格納されるデータは、メモリシステムの外にあるホストから、またはメモリシステムの中でプロセッサによって実行されるアプリケーションから到来する。
本発明の他の態様、利点、特徴、および詳細は、添付の図面と併せて解釈すべきものである以下のこれらの代表的な例の説明に含まれる。
フラッシュメモリシステムの概説
現在のフラッシュメモリシステムと、ホストデバイスとの典型的な動作とを、図1〜図8との関係で説明する。そのようなシステムで本発明の様々な態様を実装できる。図1のホストシステム1は、フラッシュメモリ2の中にデータを格納し、このフラッシュメモリからデータを引き出す。フラッシュメモリはホストの中に埋め込むこともできるが、メモリ2はそれよりも一般的なカードの形状で図に示され、このカードは、機械的および電気的コネクタの嵌合部分3および4を通じて着脱可能な状態でホストへ接続される。例えばコンパクトフラッシュ(CF)、マルチメディアカード(MMC)、セキュアデジタル(SD)、ミニSD、メモリスティック、スマートメディア、トランスフラッシュカード等、様々なフラッシュメモリカードが現在市販されている。これらのカードの各々はそれぞれの規格化された仕様に従い独特の機械的および/または電気的インターフェイスを有するが、各々に内蔵されたフラッシュメモリはよく似ている。これらのカードはいずれも、本願の譲受人であるサンディスク コーポレイションから入手できる。サンディスクコーポレイションはまた、そのCruzerという商標のもとで一連のフラッシュドライブを提供し、このフラッシュドライブは、ホストのユニバーサル・シリアル・バス(USB)差込口に差し込まれることによってホストと接続するUSBプラグを有する小形の手持ち式メモリシステムである。これらのメモリカードとフラッシュドライブの各々は、ホストと連係して内蔵されたフラッシュメモリの動作を制御するコントローラを内蔵する。
そのようなメモリカードとフラッシュドライブとを使用するホストシステムは数多くあり様々である。これらには、パーソナルコンピュータ(PC)、ラップトップをはじめとする携帯用コンピュータ、携帯電話機、個人用携帯情報端末(PDA)、デジタル静止画カメラ、デジタル動画カメラ、携帯用オーディオプレイヤ等が含まれる。ホストは通常ならば1種類以上のメモリカードまたはフラッシュドライブのための一体化された差込口を内蔵するが、メモリカードを差し込むアダプタを必要とするものもある。
図1のホストシステム1は、メモリ2が接続される限りにおいて、回路とソフトウェアとの組み合わせからなる、2つの主要部分を有するものとみなすことができる。それらはアプリケーション部5と、メモリ2と連係するドライバ部6である。例えばパーソナルコンピュータの場合、アプリケーション部5は、ワープロ、グラフィック、コントロール、またはその他の一般的なアプリケーションソフトウェアを実行するプロセッサを含むことがある。カメラ、携帯電話機、または専ら1セットの機能を遂行するその他のホストシステムの場合、アプリケーション部5は、写真を撮影したり格納したりするためにカメラを動作させるソフトウェアや、電話をかけたり受けたりするために携帯電話機を動作させるソフトウェア等を含む。
図1のメモリシステム2はフラッシュメモリ7と回路8とを含み、それら回路はいずれも、データをやり取りするため、そしてメモリ7を制御するため、カードの接続先にあたるホストと連係する。コントローラ8は通常、データのプログラミングと読み出し中にホスト1によって使用されるデータの論理アドレスとメモリ7の物理アドレスとの変換を行う。
図2を参照すると、図1の不揮発性メモリ2として使用できる典型的なフラッシュメモリシステムの回路が記載されている。システムコントローラは普通、システムバス13沿いに1つ以上の集積回路メモリチップと並列で接続される単一集積回路チップ11上で実装され、図2にはただひとつのそのようなメモリチップ15が示されている。図に示された特定のバス13は、データを搬送する1セットの導体17と、メモリアドレスのためのセット19と、制御および状態信号のためのセット21とを含む。代わりに、これらの3つの機能の間で1セットの導体を時分割共用できる。さらに、2004年8月9日に出願の「Ring Bus Structure and It's Use in Flash Memory Systems (リングバス構造とフラッシュメモリシステムにおけるその使用)」という米国特許出願第10/915,039号(特許文献7)に記載されているリングバス等、これとは別のシステムバス構成も使用可能である。
典型的なコントローラチップ11は、インターフェイス回路25を通じてシステムバス13と連係する独自の内部バス23を有する。このバスへ通常接続される主要機能には、プロセッサ27(マイクロプロセッサまたはマイクロコントローラ)と、システムを初期化(「ブート」)するためのコードを収容する読み出し専用メモリ(ROM)29と、主にメモリとホストとの間で転送されるデータをバッファするために使われるランダムアクセスメモリ(RAM)31とがある。コントローラを通じてメモリとホストとの間を行き来するデータのための誤り訂正符号(ECC)を計算し検査する回路33もバス23へ接続されることがある。コントローラを通過するデータを符号化・復号化する専用の回路34が含まれることもある。そのような符号化は圧縮とセキュリティ暗号化を含むが、ほとんどのタイプのデータ変換はこの方法で行われる。専用回路33および34が使われる場合、この回路は、ファームウェア制御下でプロセッサ27によって実行される特定のアルゴリズムを代わりに実行する。コントローラバス23は回路35を通じてホストシステムと連係し、これは、メモリカードに内蔵される図2のシステムの場合に、コネクタ4の一部をなすカードの外部接点37を通じて果たされる。クロック39は、コントローラ11の他のコンポーネントの各々に接続され、他のコンポーネントの各々によって利用される。
メモリチップ15と、システムバス13に接続される他のメモリチップも同様に通常、複数のサブアレイまたはプレーンに編制されたメモリセルアレイを収容し、簡潔を図るため、2つのそのようなプレーン41および43が示されているが、これよりも多い、例えば4つまたは8つのそのようなプレーンを代わりに使用することもできる。あるいは、チップ15のメモリセルアレイはプレーンに分割しなくともよい。しかし、分割するならば、各々のプレーンは互いに独立して動作できる独自の列制御回路45および47を有する。回路45および47は、システムバス13のアドレス部19からそれぞれのメモリセルアレイのアドレスを受け取り、それぞれのビット線49および51のうちの特定の1つ以上のビット線をアドレスするため、それらを復号化する。ワード線53は、アドレスバス19で受け取るアドレスに応じて行制御回路55を通じてアドレスされる。ソース電圧制御回路57および59もまたそれぞれのプレーンに接続され、pウェル電圧制御回路61および63もしかりである。メモリチップ15がただひとつのメモリセルアレイを有し、2つ以上のそのようなチップがシステムに存在する場合、各チップのアレイは、前述したマルチプレーンチップ内のプレーンまたはサブアレイと同様に動作させることができる。
データは、システムバス13のデータ部分17に接続されたそれぞれのデータ入出力回路65および67を通じてプレーン41および43を出入りする。回路65および67は、それぞれの列制御回路45および47を通じてプレーンへ接続する線69および71を通じてそれぞれのプレーンのメモリセルの中にデータをプログラムするため、そしてメモリセルからデータを読み出すためにある。
コントローラ11は、データをプログラムするため、データを読み出すため、消去するため、および様々なハウスキーピング作業に応対するため、メモリチップ15の動作を制御するが、各々のメモリチップもまた、そのような機能を遂行するためにコントローラ11からのコマンドを実行する何らかの制御回路を収容する。インターフェイス回路73はシステムバス13の制御・状態部21へ接続される。コントローラからのコマンドは状態マシン75へ提供され、この状態マシンは、これらのコマンドを実行するために他の回路の具体的制御を提供する。制御線77〜81は、図2に示すこれらの他の回路に状態マシン75を接続する。状態マシン75からの状態情報は、バス部21に沿ってコントローラ11へ送信するため、線83に沿ってインターフェイス73へ伝達される。
現在はメモリセルアレイ41および43のNANDアーキテクチャが好まれているが、NOR等の他のアーキテクチャを代わりに使用することもできる。NANDフラッシュメモリの例とメモリシステムの一部としてのその動作は、米国特許第5,570,315号(特許文献8)、第5,774,397号(特許文献9)、第6,046,935号(特許文献10)、第6,373,746号(特許文献11)、第6,456,528号(特許文献12)、第6,522,580号(特許文献13)、第6,771,536号(特許文献14)、および第6,781,877号(特許文献15)、ならびに米国公開特許出願第2003/0147278号(特許文献16)を参照することによって得ることができる。
図2のメモリシステムのメモリセルアレイ41の一部分にあたる図3の回路図には、NANDアレイの例が示されている。多数のグローバルビット線が提供されるが、説明の簡潔を図るため、図2では4つのそのような線91〜94だけが示されている。これらのビット線のうちの1ビット線と基準電位との間には、いくつかの直列に接続されたメモリセルストリング97〜104が接続される。メモリセルストリング99を代表として使用し、ストリングの両端で選択トランジスタ111および112には複数の電荷蓄積メモリセル107〜110が直列で接続される。1ストリングの選択トランジスタが通電すると、ストリングはそのビット線と基準電位との間で接続される。そして、そのストリングの中で一度に1つのメモリセルがプログラムされるか、または読み出される。
図3のワード線115〜118は、数あるメモリセルストリングの各々で1つのメモリセルの電荷蓄積素子にわたって個別に延在し、ゲート119および120は、ストリングの末端にて選択トランジスタの状態を制御する。共通のワードおよびコントロールゲート線115〜120を共用するメモリセルストリングは、ともに消去されるメモリセルのブロック123を形成する。このセルからなるブロックは、一度に物理的に消去できる最小数のセルを収容する。ワード線115〜118の1ワード線沿いの1行のメモリセルが一度にプログラムされる。通常、NANDアレイの行は規定の順序でプログラムされ、この場合、接地等の共通電位へ接続されたストリングの末端に最も近いワード線118沿いの行から始まる。次にワード線117沿いのメモリセルの行がプログラムされ、ブロック123の全体を通じて同様に進む。最後にワード線115沿いの行がプログラムされる。
第2のブロック125は類似し、そのメモリセルストリングは第1のブロック123のストリングと同じグローバルビット線へ接続するが、異なるワードおよびコントロールゲート線のセットを有する。ワードおよびコンントロールゲート線は、行制御回路55によって適当な動作電圧まで駆動される。図2のプレーン1および2等、2つ以上のプレーンまたはサブアレイがシステムにある場合、それらの間に延在する共通ワード線を1つのメモリアーキテクチャで使用する。代わりに、共通ワード線を共用する3つ以上のプレーンまたはサブアレイがあってもよい。別のメモリアーキテクチャでは、個々のプレーンまたはサブアレイのワード線が別々に駆動される。
前に参照したNAND特許および公開特許出願のいくつかに記載されているように、各電荷蓄積素子または領域にて3つ以上の検出可能な電荷レベルを格納するようにメモリシステムを動作させることができ、これにより2ビット以上のデータを各々に格納する。メモリセルの電荷蓄積素子は一般的には導電性フローティングゲートであるが、米国公開特許出願第2003/0109093号(特許文献17)で記載されている非導電性誘電性電荷捕獲材であってもよい。
図4は、以降のさらなる説明で一例として使用するフラッシュメモリセルアレイ7(図1)の編制を概念的に示している。1つの集積メモリセルチップ、2つのチップ(各チップ上のプレーンのうちの2つ)、または4つの別々のチップの上に、メモリセルの4つのプレーンまたはサブアレイ131〜134があってよい。具体的な配置は以降の論述にとって重要でない。もちろん、1、2、8、16またはそれ以上等、これ以外の数のプレーンがシステム内にあってもよい。プレーンは、それぞれのプレーン131〜134に位置するブロック137、138、139、および140等、図4にて矩形で示されたメモリセルブロックに個別に分割される。各プレーンには何十、何百ものブロックがあってよい。前述したように、メモリセルのブロックは消去の単位、すなわち物理的にともに消去できる最小数のメモリセルである。しかし、並列性を高めるためには、これよりも大きいメタブロック単位でブロックを操作する。各プレーンから1つのブロックが論理的にともにリンクされることによってメタブロックが形成される。4つのブロック137〜140によって1つのメタブロック141が形成される様子が示されている。通常ならば、1メタブロック内の全てのセルが一緒に消去される。ブロック145〜148からなる第2のメタブロック143に見られるように、メタブロックを形成するのに用いられるブロックを、それぞれのプレーンの中で同じ相対的位置に制限する必要はない。通常は全てのプレーンにわたってメタブロックを延在させるのが好ましいが、高いシステム性能のためには、異なるプレーンにある1つ、2つ、または3つのブロックのいずれかまたは全部からなるメタブロックを動的に形成する能力を用いてメモリシステムを操作することができる。これにより、1回のプログラミング操作で格納できるデータ量にメタブロックのサイズをより近づけることが可能となる。
個々のブロックはさらに、動作上の目的のため、図5に示すようにメモリセルのページに分割される。例えば、ブロック131〜134の各々のメモリセルは8つのページP0〜P7に各々分割されている。代わりに、16、32、またはそれ以上のメモリセルページが各ブロックの中にあってよい。ページは、ブロックの中でデータをプログラムし読み出す単位であり、一度にプログラムされる、最少量のデータを収容する。図3のNANDアーキテクチャでは、ブロックの中でワード線沿いのメモリセルからページが形成されている。しかし、メモリシステムの動作上の並列性を高めるために、2つ以上のブロックの中にあるそのようなページをメタページに論理的にリンクできる。図5には、4つのブロック131〜134の各々にある1つの物理ページから形成されたメタページ151が示されている。メタページ151は、例えば4つのブロックの各々にあるページP2を含むが、メタページのページは、各ブロックの中で同じ相対的位置になくてもよい。全4つのプレーンにわたって最大量のデータを並行してプログラムし読み出すことが望ましいが、高いシステム性能のため、異なるプレーンの中にある別々のブロックの1つ、2つ、または3つのページのいずれかまたは全てからメタページを形成するべくメモリシステムを操作することもできる。これにより、並行して簡便に扱えるデータ量にプログラミングおよび読み出す操作を適合させることができ、さらにデータがプログラムされない部分がメタページに残る機会は減ることになる。
図5に示す複数のプレーンの物理ページからなるメタページは、それらの複数のプレーンのワード線の行に沿ってメモリセルを収容する。1つのワード線の行にある全てのセルを同時にプログラムするよりは、2つ以上の互い違いのグループでそれらをかわるがわるにプログラムするほうがむしろ一般的であり、各グループは、(単一ブロック内の)1ページのデータ、または(複数のブロックにまたがる)1メタページのデータを格納する。交互のメモリセルを一度にプログラムすることにより、データレジスタおよびセンス増幅器を含むひとまとまりの周辺回路を各ビット線のために用意する必要はなく、むしろそれらは隣接するビット線によって時分割共用される。これにより周辺回路に要する基板空間の量を節約し、メモリセルの行沿いの実装密度を増すことができる。さもなくば、所与のメモリシステムから最大限の並列性を引き出すため、行沿いの全セルを同時にプログラムするのが望ましい。
図3を参照し、行沿いの互い違いのメモリセルへのデータの同時プログラミングを最も簡便に果たすには、NANDストリングの少なくとも一端に沿って2行の選択トランジスタ(図示せず)を、図に示された1行の代わりに設ける。この場合、一方の行の選択トランジスタは、1つの制御信号に応じてブロック内の互い違いのストリングをそれぞれのビット線へ接続し、他方の行の選択トランジスタは、別の制御信号に応じて介在する互い違いのストリングをそれぞれのビット線へ接続する。したがって、メモリセルの各行には2ページ分のデータが書き込まれる。
各論理ページのデータ量は通常、整数にして1セクタ数以上のデータであり、各セクタは慣例上512バイトのデータを収容する。図6は、1ページまたはメタページのデータの、2セクタ153および155からなる論理データページを示している。各セクタは普通、512バイトのユーザまたはシステムデータが格納される部分157と、部分157にあるデータ、またはこれを格納する物理ページまたはブロックに関係するオーバーヘッドデータのために、さらなるバイト数159とを収容する。オーバーヘッドデータのバイト数は通常ならば16バイトであり、セクタ153および155の各々につき合計528バイトになる。オーバーヘッド部分159は、プログラミング中にデータ部分157から算出されるECC、その論理アドレス、ブロックが消去され再プログラムされる回数の経験カウント、1つ以上の制御フラグ、動作電圧レベル、および/またはその他に加え、そのようなオーバーヘッドデータ159から算出されるECCを収容できる。代わりに、オーバーヘッドデータ159、またはこれの一部分は、他のブロックの別のページに格納できる。
メモリの並列性が高まるにつれメタブロックのデータ格納容量は増し、その結果、データページおよびメタページのサイズも増す。かくしてデータページは3セクタ以上のデータを収容する場合がある。1データページ内に2セクタ、そして各メタページにつき2データページで、1メタページ内のセクタは4つになる。よって、各メタページは2,048バイトのデータを格納する。これは高度な並列性であり、行内のメモリセル数の増加にともないさらに高めることができる。このため、ページおよびメタページ内のデータ量を増やすため、フラッシュメモリの幅が拡大されつつある。
前述した物理的に小さい再プログラム可能な不揮発性メモリカードおよびフラッシュドライブは市販され、データ格納容量は512メガバイト(MB)、1ギガバイト(GB)、2GB、4GB、またはそれ以上になる。図7は、ホストとそのような大容量メモリシステムとの間の最も一般的なインターフェイスを示している。ホストは、ホストによって実行されるアプリケーションソフトウェアまたはファームウェアプログラムによって生成または使用されるデータファイルを処理する。ワープロデータファイルはその一例であり、コンピュータ支援設計(CAD)ソフトウェアの描画ファイルもこれにあたり、主にPC、ラップトップコンピュータ等、一般的なコンピュータホストに見られる。pdf形式の文書もそのようなファイルである。静止画デジタルビデオカメラは写真ごとにデータファイルを生成し、データファイルはメモリカードに格納される。携帯電話機は、電話帳等、内蔵メモリカード上のファイルからデータを利用する。PDAは、住所ファイル、カレンダーファイル等、数通りのファイルを格納し使用する。そのような用途において、メモリカードはホストを操作するソフトウェアを収容することもある。
図7には、ホストとメモリシステムとの間の一般的な論理インターフェイスが示されている。連続する論理アドレス空間161は、メモリシステムに格納されうる全データのためにアドレスを提供するにあたって十分に大きい。ホストアドレス空間は通常、データクラスタの単位に分割される。所与のホストシステムにおいて、いくつかのデータセクタを収容するように各クラスタを設計でき、4から64セクタあたりが一般的である。標準的なセクタは512バイトのデータを収容する。
図7の例では、3つのデータファイル1、2、および3が作成されたものとして示されている。ホストシステムで実行するアプリケーションプログラムは、整列された1セットのデータとして各ファイルを作成し、一意な名前またはその他の参照符によってこれを識別する。ファイル1にはホストによって、他のファイルにまだ割り振られていない十分に使用可能な論理アドレス空間が、割り当てられる。ファイル1は、一連の使用可能な論理アドレス範囲が割り当てられた状態で示されている。この他に通常ならば、ホストオペレーティングソフトウェアのための特定の範囲等、特定の目的のためにアドレス範囲が割り振られ、これらのアドレス範囲は、たとえホストがデータに論理アドレスを割り当てようとするときにこれらのアドレスがまだ利用されていなくとも、データの格納にあたって回避される。
ホストは同様に、後ほどホストによってファイル2が作成されるときに、論理アドレス空間161の中の2つの異なる連続アドレス範囲を、図7に示すように割り当てる。ファイルに連続する論理アドレスを割り当てる必要はなく、既に他のファイルに割り振られているアドレス範囲の間にあるアドレスの断片であってもよい。この例はさらに、ホストによって作成されたもうひとつのファイル3に、ファイル1および2やその他のデータにまだ割り振られていないホストアドレス空間の別の部分が割り振られる様子を示している。
ホストは、ファイルアロケーションテーブル(FAT)を保守することによってメモリ論理アドレス空間を絶えず把握し、ホストが様々なホストファイルに割り当てる論理アドレスは、このファイルアロケーションテーブルで保守される。FATテーブルは通常、ホストメモリの他に不揮発性メモリに格納され、新しいファイルが格納されるとき、他のファイルが削除されるとき、ファイルが修正されるとき等に、ホストによって頻繁に更新される。ホストは、例えばホストファイルが削除されるときにFATテーブルを更新することによって既に削除ファイルに割り振られていた論理アドレスを解除して、それらの論理アドレスを別のデータファイルに使用できることを明らかにする。
ホストは、メモリシステムコントローラがファイルを格納するために選択する物理位置を顧慮しない。典型的なホストは、その論理アドレス空間と、これがその各種ファイルに割り振った論理アドレスだけを認識する。他方、メモリシステムは、典型的なホスト/カードインターフェイスを通じて、データが書き込まれた論理アドレス空間部分だけを認識し、特定のホストファイルへ割り振られる論理アドレスは認識せず、ホストファイルの数すら認識しない。メモリシステムコントローラは、データの格納や引き出しのためにホストから提供される論理アドレスを、ホストデータが格納されるフラッシュメモリセルアレイの中の一意な物理アドレスに変換する。ブロック163は、メモリシステムコントローラによって保守されるこれらの論理−物理アドレス変換の作業テーブルを表している。
メモリシステムコントローラは、システムの性能を高い水準に維持しながらメモリアレイ165のブロックおよびメタブロックの中でデータファイルを格納するようにプログラムされる。この例証では4つのプレーンまたはサブアレイが使われている。データは好ましくは、各プレーンのブロックから形成されたメタブロック全体にわたって、システムが許す最大限の並列度でプログラムされ、読み出される。通常は、メモリコントローラによって使用されるオペレーティングファームウェアおよびデータを格納する予約ブロックとして、少なくとも1つのメタブロック167が割り振られる。そして、ホストオペレーティングソフトウェアやホストFATテーブル等の格納のため、別のメタブロック169または複数のメタブロックを割り振ることができる。物理格納空間のほとんどはデータファイルの格納のために残る。しかし、メモリコントローラは、様々なファイルオブジェクトにおいて受信データがホストによってどのように割り振られたかを認識しない。通常、メモリコントローラがホストとのやり取りを通じて認識することの全ては、ホストによって特定の論理アドレスに書き込まれるデータが対応する物理アドレスに格納されるということだけであり、これはコントローラの論理−物理アドレステーブル163によって管理される。
典型的なメモリシステムにおいて、アドレス空間161の中でデータ量を格納するのとは別に数ブロック分の格納容量が余分に用意される。メモリの寿命の中で他のブロックが欠陥となった場合に代用される冗長ブロックとして、これらの余分のブロックを1つ以上用意することができる。当初メタブロックに割り当てられていた欠陥ブロックのための冗長ブロックを代用する等、個々のメタブロックの中でのブロックの論理的グループ分けは通常、様々な理由から変更される。消去済みブロックのプールでは通常、メタブロック171等、1つ以上の追加のブロックが保守される。ホストがメモリシステムにデータを書き込む場合、コントローラはホストによって割り当てられた論理アドレスを、消去済みブロックプールにあるメタブロックの中の物理アドレスに変換する。そして、論理アドレス空間161の中でデータ格納のために使われていない他のメタブロックは消去され、以降のデータ書き込み操作中に使用するために消去済みプールブロックとして指定される。
特定のホスト論理アドレスに格納されたデータは、元の格納データが用済みになると、新規データによって頻繁に上書きされる。これに応じてメモリシステムコントローラは新規データを消去済みブロックに書き込み、次いで論理アドレスでデータを格納する新しい物理ブロックを明らかにするため、それらの論理アドレスの論理−物理アドレステーブルを変更する。そして、それらの論理アドレスのところで元のデータを収容するブロックは消去され、新規データの格納のために使用できるようになる。通常、書き込みが始まるときに消去ブロックプールの消去済みブロックに十分な格納容量がない場合、このような消去を現在のデータ書き込み操作が完了する前に行わなければならない。これはシステムのデータプログラミング速度を損なうおそれがある。メモリコントローラは通常、所与の論理アドレスにあるデータが用済みになっていることを、ホストがそれと同じ論理アドレスに新規データを書き込むときに初めて知る。したがって、メモリのブロックの多くは、そのような無効データを暫くの間格納することがある。
集積回路メモリチップの領域を効率よく運用するためにブロックとメタブロックのサイズは拡大している。その結果、個別データ書き込みの大部分で格納されるデータ量はメタブロックの格納容量に満たなく、多くの場合、ブロックの格納容量にすら満たない。メモリシステムコントローラは普通、新規データを消去済みプールのメタブロックへ誘導するので、メタブロックには埋まらない部分が生じる。新規データが別のメタブロックに格納されたデータの更新である場合、別のメタブロックにある、新規データメタページの論理アドレスと連続する論理アドレスを有する、残りの有効データメタページもまた、望ましくは論理アドレスの順序で新しいメタブロックにコピーされる。古いメタブロックは他の有効データメタページを保持することがある。その結果、個別のメタブロックの一部のメタページのデータはいずれ用済み、無効となり、新規データに差し替えられ、同じ論理アドレスが異なるメタブロックに書き込まれることになる。
論理アドレス空間161の全体にわたってデータ格納のために十分な物理メモリ空間を維持するため、そのようなデータは定期的に圧縮または整理される(ガーベッジコレクション)。メタブロックの中でデータセクタをできる限り論理アドレスと同じ順序に保つことも望ましい。なぜならば、こうすれば連続する論理アドレスでデータをより効率的に読み出すことができるからである。よって、通常は、このさらなる目的のためにもデータの圧縮とガーベッジコレクションが行われる。米国特許第6,763,424号(特許文献18)には、不完全ブロックデータ更新を受け取るときのメモリ管理とメタブロックの使用の態様がいくつか記載されている。
データ圧縮では通常、メタブロックから有効データメタページを全て読み出し、それらを新しいブロックに書き込み、その過程で無効データを含むメタページは無視する。また、有効データを含むメタページは好ましくは、そこに格納されたデータの論理アドレスの順序に一致する物理アドレス順で配置される。無効データを収容するメタページは新しいメタブロックへコピーされないので、新しいメタブロックに占めるメタページ数は古いメタブロックにおけるそれを下回る。そして、古いブロックは消去され、新規データの格納のために使用できるようになる。この整理によって得られる追加のメタページ容量は、他のデータの格納に役立てることができる。
ガーベッジコレクション中に、論理アドレスが連続するか、あるいはほぼ連続する有効データのメタページが2つ以上のメタブロックから回収され、別のメタブロックに、通常ならば消去済みブロックプールのメタブロックに、再度書き込まれる。元の2つ以上のメタブロックから全ての有効データメタページがコピーされたら、先々の使用に向けてそれらを消去できる。
データ整理とガーベッジコレクションには時間がかかり、データの整理またはガーベッジコレクションをホストからのコマンドを実行する前に行う必要がある場合は特に、メモリシステムの性能に影響する可能性がある。メモリシステムコントローラは普通、そのような操作を可能な限りバックグラウンドで行うようにスケジュールするが、これらの操作を遂行する必要から、コントローラは、そのような操作が完了するまではビジー状態信号をホストに提供しなければならない。例えば、ホストがメモリに書き込もうとするデータの全てを格納するにあたって十分な消去済みメタブロックが消去済みブロックプールにない場合には、ホストコマンドの実行を延期することができるから、まずはデータの整理またはガーベッジコレクションで1つ以上の有効データのメタブロックを片づける必要があり、その後にそれらのメタブロックを消去できる。したがって、そのような混乱を最小限に抑えるためにメモリ制御の管理に注意を払わなければならない。そのような手法が、2003年12月30日に出願の「Management of Non-Volatile Memory Systems Having Large Erase Blocks (大きい消去ブロックを有する不揮発性メモリシステムの管理)」という米国特許出願第10/749,831号(特許文献19)、2003年12月30日に出願の「Non-Volatile Memory and Method with Block Management System (ブロック管理システムを伴う不揮発性メモリおよび方法)」という米国特許出願第10/750,155号(特許文献20)、2004年8月13日に出願の「Non-Volatile Memory and Method with Memory Planes Alignment (メモリプレーンアラインメントを伴う不揮発性メモリおよび方法)」という米国特許出願第10/917,888号(特許文献21)、2004年8月13日に出願の米国特許出願第10/917,867号(特許文献22)、2004年8月13日に出願の「Non-Volatile Memory and Method with Phased Program Failure Handling (段階的プログラム障害処理を伴う不揮発性メモリおよび方法)」という米国特許出願第10/917,889号(特許文献23)、および2004年8月13日に出願の「Non-Volatile Memory and Method with Control Data Management(制御データ管理を伴う不揮発性メモリおよび方法)」という米国特許出願第10/917,725号(特許文献24)に数多く説明されている。
非常に大きい消去ブロックを伴うメモリアレイの動作を効率的に制御するにあたって1つの課題となるのは、所与の書き込み操作中に格納されるデータセクタの数を、メモリのブロックの容量に一致させ、その境界に整合させることである。1つのアプローチでは、メタブロック全体を埋め尽くす量に満たない一定量のデータを格納するため、ホストからの新規データの格納に使うメタブロックを、最大ブロック数未満で適宜構成する。適応メタブロックの使用が、2003年12月30日に出願の「Adaptive Metablocks(適応メタブロック)」という米国特許出願第10/749,189号(特許文献25)に記載されている。データブロック間の境界とメタブロック間の物理的境界の整合が、2004年5月7日に出願の米国特許出願第10/841,118号(特許文献26)、および2004年12月16日に出願の「Data Run Programming(データランプログラミング)」という米国特許出願第11/016,271号(特許文献27)に記載されている。
メモリコントローラはまた、ホストによって不揮発性メモリに格納されるFATテーブルのデータをメモリシステムのより効率的な動作に役立てることができる。例えば、論理アドレスの解除によりホストによってデータが用済みと識別されたことを知るのに役立てる。メモリコントローラは、通常ならばホストがその論理アドレスに新規データを書き込むことから知ることによってこれを事前に知ることにより、そのような無効データを収容するブロックの消去スケジュールを立てることができる。これは、2004年7月21日に出願の「Method and Apparatus for Maintaining Data on Non-Volatile Memory Systems(不揮発性メモリシステムでデータを保守する方法および装置)」という米国特許出願第10/897,049号(特許文献28)に記載されている。この他の手法として、ホストがメモリに新規データを書き込むパターンを監視することにより、所与の書き込み操作が単一ファイルか否かを、または複数のファイルである場合にはファイル間の境界がどこにあるかを推定する。2004年12月23日に出願の「FAT Analysis for Optimized Sequential Cluster Management(最適逐次クラスタ管理のためのFAT解析)」という米国特許出願第11/022,369号(特許文献29)では、この種の手法の使用が記載されている。
メモリシステムを効率よく操作するには、ホストによって個々のファイルのデータに割り当てられる論理アドレスについて、コントローラができるだけ多くのことを知ることが望ましい。かくしてデータファイルは、ファイルの境界が分からなければ多数のメタブロックに散在するところを、コントローラによって1つのメタブロックの中または1グループのメタブロックの中で格納することができる。その結果、データ整理およびガーベッジコレクション操作の回数と複雑さは抑えられる。結果的にメモリシステムの性能は向上する。しかし、前述したようにホスト/メモリインターフェイスが論理アドレス空間161(図7)を含む場合、メモリコントローラがホストデータファイル構造について多くを知ることは困難である。
図8を参照すると、既に図7に示されている典型的な論理アドレスホスト/メモリインターフェイスが異なる形で示されている。ホスト生成データファイルにはホストによって論理アドレスが割り振られる。そして、メモリシステムはこれらの論理アドレスを認識し、データが実際に格納されるメモリセルのブロックの物理アドレスにマッピングする。
直接データファイル記憶
大量データ格納のための改良されたホスト−メモリシステム間インターフェイスは、論理アドレス空間の使用を解消する。これは前述した直接データファイルアプリケーションの主題にあたる。ホストは代わりに、一意なファイルID(またはその他の一意な参照符)と、ファイル内でのデータ単位(バイト等)のオフセットアドレスとによって各ファイルを論理的にアドレスする。このファイルアドレスはメモリシステムコントローラへ直接提供され、メモリシステムコントローラは、各ホストファイルのデータが物理的に格納される位置について独自のテーブルを保管する。この新しいインターフェイスは、図2〜図6との関係で前述したのと同じメモリシステムで実装できる。前述したものとの主な違いは、そのメモリシステムがホストシステムと通信し、ファイルデータを格納する方法にある。
図9にはファイル本位インターフェイスが示され、これは図7の論理アドレスインターフェイスと比較するべきものである。ファイル1、2、および3の各々の識別情報と図9のファイルの中でのデータのオフセットは、メモリコントローラへ直に引き渡される。そしてこの論理アドレス情報はメモリコントローラ機能173によってメモリ165のメタブロックおよびメタページの物理アドレスに翻訳される。
ファイル本位インターフェイスは図10にも示され、これは図8の論理アドレスインターフェイスと比較するべきものである。図8の論理アドレス空間とホストによって保守されるFATテーブルは図10にない。メモリシステムにとって、ホストによって生成されるデータファイルはファイル番号とファイル内でのデータのオフセットとによって識別される。そしてメモリシステムはメモリセルアレイの物理ブロックにファイルを直接マッピングする。
直接データファイル記憶手法によって新規データファイルがメモリにプログラムされる場合、データはメモリセルの消去済みブロックへ書き込まれ、この書き込みはこのブロック内の第1の物理位置から始まり、このブロックの位置を順番に進む。データは、ファイルにおけるこのデータのオフセットの順序にかかわりなく、ホストからの受信順序でプログラムされる。プログラミングは、ファイルの全データがメモリへ書き込まれるまで続く。ファイル内のデータ量が単一メモリブロックの容量を超過する場合に最初のブロックが一杯になると、プログラミングは第2の消去済みブロックで継続する。第2のメモリブロックは、第1の位置からファイルの全データが格納されるか、あるいは第2のブロックが一杯になるまで、第1のメモリブロックと同様にプログラムされる。ファイルのデータが残っている場合は、第3のブロックまたは追加のブロックにプログラムされる。単一ファイルのデータを格納する複数のブロックまたはメタブロックが物理的または論理的に隣り合う必要はない。説明を平易にするため、別段の断りがない限り、本願明細書で用いられる用語「ブロック」は、ある特定のシステムでメタブロックが使われるか否かに応じて、ブロック消去単位か、あるいは多重ブロック「メタブロック」を指すものとする。
図11〜図13はフラッシュメモリの直接データファイル操作の例を提示するものであり、このメモリシステムにおいて符号化、圧縮、暗号化をはじめとするデータ変換は行われない。図11Aを参照すると、メモリシステムへのデータファイルの書き込みが例示されている。この例のデータファイル181は、垂直の実線の間に延在する形で示されたメモリシステムの1ブロックまたはメタブロック183の格納容量より大きい。このためデータファイル181の部分184は第2のブロック185にも書き込まれる。これらのメモリセルブロックは物理的に隣接する形で示されているが、隣接する必要はない。ファイル181のデータは、ファイルの全データがメモリへ書き込まれるまで、それらがホストから流れ込んで受信されるにつれて書き込まれる。図11Aの例におけるデータ181は、ホストによって書き込みコマンドが発行された後にホストから受信する最初のファイルのデータである。
メモリシステムが格納データを管理し追跡するための好適な方法では、不定サイズのデータグループを使用する。つまり、ファイルのデータは複数のデータグループとして格納され、それらのデータグループを所定の順序でつなぎ合わせることにより完全なファイルが形成される。しかし、好ましくは、メモリシステムコントローラがファイルインデックステーブル(FIT)を用いてファイル内のデータグループの順序を保守する。ホストからのデータストリームが書き込まれるにつれ、ファイルデータの論理オフセットアドレスまたはデータを格納する物理空間に途切れが生じると、新規データグループが始まる。例えば、ファイルのデータが1つのブロックを埋め尽くし、別のブロックへの書き込みが始まる場合に、そのような物理的途切れが生じる。これは図11Aに例示され、ここで第1のブロック183が第1のデータグループによって埋め尽くされると、ファイルの残りの部分184が第2のデータグループとして第2のブロック185に格納される。第1のデータグループは(F0,D0)で表すことができ、ここでF0はデータファイルの先頭の論理オフセットであり、D0はメモリの中でファイルが始まるところの物理位置である。第2のデータグループは(F1,D1)と表され、ここでF1は第2のブロック185の先頭に格納されるデータの論理ファイルオフセットであり、D1はデータが格納される物理位置である。
ホスト−メモリインターフェイスを通じて転送されるデータ量は、データのバイト数、データのセクタ数、または他の何らかの粒度で表すことができる。ホストはほとんどの場合、そのファイルのデータをバイト粒度で定義するが、現在の論理アドレスインターフェイスを通じて大容量メモリシステムと通信する場合には、さらに各々512バイトのセクタまたは各々複数のセクタからなるクラスタにバイトをグループ分けする。これは普通、メモリシステムの動作を簡素化するために行われる。本願明細書で説明するファイル本位のホスト−メモリインターフェイスでは他の何らかのデータ単位を使用することもできるが、元のホストファイルバイト粒度が概して好ましい。つまりデータオフセット、長さ等は、セクタ、クラスタ等ではなく、妥当で最小のデータ単位であるバイトで好ましくは表される。これは、本願明細書で説明する手法によるフラッシュメモリ格納容量のより効率的な使用を可能にする。
ホストはまた、一般的な既存論理アドレスインターフェイスにおいて、書き込まれるデータの長さを指定する。本願明細書で説明するファイル本位インターフェイスでもこれを果たすことはできるが、書き込みコマンドの実行にあたって必要ではないので、ホストは書き込まれるデータの長さを規定しないのが好ましい。
図11Aに示された方法でメモリへ書き込まれる新規ファイルは、FITの中で、データグループの順序に並んだ一連のインデックス項目(F0,D0)(F1,D1)として表される。つまり、ホストシステムがある特定のファイルにアクセスする場合に、ホストはそのファイルIDまたは他の識別情報をメモリシステムへ送信すると、メモリシステムはそのファイルを構成するデータグループを識別するFITにアクセスする。メモリシステムの動作上の便宜のため、個別データグループの長さを個別の項目に含めることもできる。これを使用する場合、メモリコントローラはデータグループの長さを計算し、格納する。
ホストが図11Aのファイルを開いた状態で維持する限り、ホストから受信するファイルのさらなるデータの書き込み位置を規定するため、物理的書き込みポインタPも好ましくは保守される。ファイルの新規データは、ファイル内での新規データの論理位置にかかわりなく、物理メモリにてファイルの末尾に書き込まれる。メモリシステムは、4つまたは5つのファイル等、一度に複数のファイルが開き続けることを許容し、各ファイルにつき書き込みポインタPを保守する。異なるファイルの書き込みポインタは異なるメモリブロック内の位置を指し示す。メモリシステムの開放ファイル制限に相当する数の開放ファイルが既に存在するときにホストシステムが新しいファイルを開こうとすると、まずは開いているファイルのどれかひとつを閉じ、その後に新たなファイルを開く。ファイルが閉じられた後は、その閉じたファイルの書き込みポインタPを保守する必要はもはやない。
図11Bは、既に書き込みが行われるが、まだ開いている図11Aのファイルの末尾への、ホストによる、同じく書き込みコマンドを用いた、データの付加を例示する。ホストシステムによってデータ187がファイルの末尾へ追加された様子が示され、このデータは第2のブロック185の中、そのファイルのデータの末尾に、書き込まれている。付加されたデータはデータグループ(F1,D1)の一部となり、既存のデータグループ184と付加されたデータ189との間に論理アドレスや物理アドレスの途切れはないので、データグループのデータは増加する。FITでは引き続き、ファイル全体が一連のインデックス項目(F0,D0)、(F1,D1)として表される。ポインタPのアドレスも付加された格納データの末尾のものに変更される。
図11Cには、既に書き込みが行われている図11Aのファイルへデータブロック191を挿入する例が示されている。ホストはデータ191をファイルの中に挿入しているが、メモリシステムは、位置193、書き込み済みファイルデータの末尾に、挿入データを付け加える。開放ファイルの中へデータが挿入されるときにファイルのデータを論理的順序で書き換える必要はないが、これは後ほどホストがファイルを閉じた後にバックグランドで果たすこともできる。挿入データは第2のメモリブロック185の中にすっかり格納され、1つの新規グループ(F1,D3)を形成する。しかし、この挿入を行う結果、図11Aの以前のデータグループ(F0,D0)は2つのグループに、すなわち挿入前のデータグループ(F0,D0)と、挿入後のデータグループ(F2,D1)とに分かれる。なぜならば、挿入の始点F1と挿入の終点F2に見られるように、データの論理的途切れが生じる場合には新規データグループを形成する必要があるからである。グループ(F3,D2)は、物理アドレスD2が第2のブロック185の先頭であるが故の結果である。グループ(F1,D3)および(F3,D2)は、たとえ同じメモリブロックに格納されても、そこに格納されるデータのオフセットに途切れがあるため、分離され続ける。元のファイルは挿入に伴い、メモリシステムのFITの中ではデータグループの順序に並んだインデックス項目(F0,D0)、(F1,D3)、(F2,D1)、(F3,D2)で表される。図11A、11B、および11Cの例から、新規または既存ファイルの新規データの書き込みにあたってメモリ内のデータが用済みにならないことに気づく。つまり、書き込みコマンドや挿入コマンドの実行によって他のデータが無効になったり用済みになったりすることはない。
図11Dはもうひとつの例を例示するものであり、当初図11Aに示すように書き込まれたデータの一部が更新コマンドを用いて更新される。データファイルの部分195が更新される様子が示されている。更新にともないメモリシステムの中でファイル全体を書き換えるのではなく、ファイルの更新部分197は書き込み済みのデータへ付け加えられる。そして、書き込み済みデータの部分199は用済みになる。通常は用済みデータに取られる空間を解放するために更新されたファイルを整理するのが望ましいが、通常これはホストがファイルを開いているときには行われず、ファイルが閉じた後にバックグランドで行われる。更新後のファイルは、メモリシステムのFITの中でデータグループの順序に並んだインデックス項目(F0,D0)、(F1,D3)、(F2,D1)、(F3,D2)で表される。図11Aの1個のデータグループ(F0,D0)は図11Dで再び断片に、すなわち更新部分の前のデータグループと、更新部分と、更新部分の後のデータグループとに分かれる。
不定長データグループの使用をさらに例証するため、同じファイルがかかわる一連の書き込み操作を図12A〜図12Eに順次示す。元のファイルデータW1はまず、書き込みコマンドによって、図12Aに示すようにメモリシステムの2つのブロックへ書き込まれる。そして、ファイルは2つのデータグループによって定義され、第1のグループは物理メモリブロックの先頭から始まり、第2のグループは物理メモリブロック境界の後ろになる必要がある。よって、図12Aのファイルは、次のデータグループの一連のインデックス項目(F0,D0)、(F1,D1)によって識別される。
図12Bでは、図12Aで書き込まれたファイルデータが更新コマンドによって更新される。更新されたファイルデータU1は従前のグループ(F1,D1)の直後に書き込まれ、更新データの従前バージョンは用済みになる。図12Aの従前のグループ(F0,D0)は図12Bの変更グループまで短縮され、従前グループ(F1,D1)はグループ(F4,D2)まで短縮される。更新データはメモリブロックの境界に重なっているので、2つのグループ(F2,D3)および(F3,D4)に書き込まれる。データの一部は第3のメモリブロックに格納される。ここで、ファイルは、次のデータグループの一連のインデックス項目(F0,D0)、(F2,D3)、(F3,D4)、(F4,D2)によって記述される。
図12Cでは、挿入コマンドを用いた新規ファイルデータI1の挿入により図12Bのファイルがさらに変更される。挿入データはメモリブロックの境界に重なっているので、新規データI1は、図12Cの新規グループ(F5,D6)および(F6,D7)として、メモリの中、図12Bの従前グループ(F4,D2)の直後に、書き込まれる。第4のメモリブロックが使用される。新規データI1の挿入のため、図12Bの従前グループ(F0,D0)は図12Cの短縮グループ(F0,D0)および(F7,D5)に分かれる。ここで、ファイルは、次のデータグループの一連のインデックス項目(F0,D0)、(F5,D6)、(F6,D7)、(F7,D5)、(F8,D3)、(F9,D4)、(F10,D2)によって記述される。
図12Dは、書き込みコマンドを用いてファイルの末尾へ新規データW2を付け加える、図12Cのデータファイルへのさらなる変更を示している。新規データW2は、図12Dの新規グループ(F11,D8)として、図12Cの従前グループ(F10,D2)の直後に書き込まれる。ここで、ファイルは、次のデータグループの一連のインデックス項目(F0,D0)、(F5,D6)、(F6,D7)、(F7,D5)、(F8,D3)、(F9,D4)、(F10,D2)、(F11,D8)によって記述される。
図12Eには開放ファイルへの第2の更新が示され、ここでは更新コマンドを発行するホストによって図12Dのファイルへ更新ファイルデータU2が書き込まれる。図12Eでは、更新データU2が図12Dの従前グループ(F11,D8)の直後に書き込まれ、そのデータの従前バージョンは用済みになる。図12Dの従前グループ(F9,D4)は図12Eで変更グループ(F9,D4)まで短縮され、従前グループ(F10,D2)は完全に用済みとなり、従前グループ(F11,D8)は短縮されて新規グループ(F14,D9)を形成する。更新データは、図12Eの新規グループ(F12,D10)および(F13,D11)に書き込まれ、ブロック境界に重なる。ここで、ファイルを格納するために第5のブロックが必要となる。ここで、ファイルは、次のデータグループの一連のインデックス項目(F0,D0)、(F5,D6)、(F6,D7)、(F7,D5)、(F8,D3)、(F9,D4)、(F12,D10)、(F13,D11)、(F14,D9)によって記述される。
各ファイルのデータのオフセットは好ましくは、これまでの説明に従ってファイルが作成または変更された後に正しい論理的順序の中で連続する状態に保たれる。したがって、例えば挿入コマンド(図12C)の実行の一部として、ホストによって提供される挿入データのオフセットは、挿入の直前のオフセットから連続し、ファイルの中に既にあるデータは挿入後に挿入データ量で増加する。更新コマンドではほとんどの場合、既存ファイルの所与のアドレス範囲の中でデータが同量の更新データに差し替えられるので、ファイルの他のデータのオフセットは通常ならば置き換える必要はない。
図11および図12に示された前述したデータ配分機能とインデックス機能の全てがメモリシステムのコントローラによって遂行されることに気づく。ホストは、書き込み、挿入、または更新コマンドのいずれかひとつの他に、ファイルIDとメモリシステムへ送信されるファイル内のデータのオフセットを伝達するまでである。残りの部分はメモリシステムが果たす。
説明した方法でホストからフラッシュメモリへ直接、ファイルデータを書き込む場合の利点として、格納データの粒度または分解能をホストのそれと同じに保つことができる。例えばホストアプリケーションが1バイト粒度でファイルデータを書き込むならば、フラッシュメモリでもそのデータは1バイト粒度で書き込まれる。この場合、個別データグループの中でのデータ量と位置はバイト数で測定される。つまり、ホストアプリケーションファイルの中で別個にアドレスされるオフセット単位のデータは、フラッシュメモリに格納されるファイルの中でも同じオフセット単位で別個にアドレスされる。同一ファイルのデータグループ間のブロック内境界は、インデックステーブルにおいて、最も近いバイトまたは他のホストオフセット単位まで指定される。同様に、異なるファイルのデータグループ間のブロック内境界はホストオフセット単位で定義される。
更新コマンドを実行する結果として、図12Bおよび図12Eから、ファイルの格納に必要な物理空間がファイル内のデータ量を上回ることに気づく。なぜならば、更新によって差し替えられたデータがメモリに格納され続けるからである。このため、用済みの無効データを取り除くことによってファイルのデータを整理(ガーベッジコレクション)し、物理格納空間を切り詰めることは非常に望ましい。こうすれば、他のデータに使える格納空間が増える。
図12Bおよび図12Eのファイルデータ更新の他にも、図12Cのデータ挿入の結果として、ファイルデータの格納順序が乱れることに気づく。つまり、更新と挿入はメモリに格納されたファイルの更新/挿入時点における末尾に追加されるが、それらは大抵ファイル内のどこかに論理的に配置されている。図12B、図12C、および図12Eの例がこれにあたる。そこで、ファイル内でのオフセットの順序に合わせてメモリに格納されたファイルのデータを並べ替えるのが望ましい。ページとブロックを順次に読み出すことは、ファイルのデータをそのオフセット順序で与えることになるので、並べ替えにより格納データの読み出し速度は向上する。これはまた、最大限のファイル断片化解消につながる。しかし、メモリシステムの性能にとって、読み出し効率を上げるためのファイルデータの並べ替えは、1つ以上のメモリブロックを解放して他のデータの格納に使用できるようにするファイルデータ整理ほど重要ではない。ファイル内のデータの並べ替えを単独で行うとオーバーヘッドの増大に見合うだけのメリットが得られないから、通常は単独で行わないが、多数のガーベッジコレクションの一部として行えば、オーバーヘッドの増大は皆無かごく僅かですむ。
図12Eのファイルでは、2回のデータ更新U1およびU2によって用済みとなったデータグループ(灰色の部分)がメモリに格納されている。図12Eから見てとれるように、ファイルの格納に使われているメモリ容量は、結果的にファイルのサイズをかなり上回っている。ガーベッジコレクションはしたがって適切である。図13は、図12Eのデータファイルでガーベッジコレクションを行った結果を例示する。ガーベッジコレクションの前に5ブロック近くの格納容量を占めていたファイルが(図12E)、ガーベッジコレクションの後には3メモリセルブロック強で収まっている(図13)。ガーベッジコレクション操作の一部として、データはこれの元の書き込みブロックから他の消去済みブロックへコピーされ、その後に元のブロックは消去される。ファイル全体でコレクションが行われる場合、そのデータは、ファイル内のデータ論理オフセット順序と同じ物理順序で新しいブロックへコピーされる。例えば更新U1およびU2ならびに挿入I1はガーベッジコレクション(図13)の後に、ホストファイルにおける順序と同じ順序で格納される。
また、ガーベッジコレクションの結果として通常は整理されているファイルの中に新しい異なるデータグループが形成される。図13の場合、次の新規データグループの新しい一連のインデックス項目(F0,D0)、(F1,D1)、(F2,D2)、(F3,D3)によってファイルが記述される。データグループの数は図12Eに示すファイルの状態より遥かに少ない。このときデータグループは、ファイルのデータがコピーされた各メモリセルブロックにつき1つずつある。ファイルを形成する新規データグループを反映するため、ファイルインデックステーブル(FIT)はガーベッジコレクション操作の一部として更新される。
不定サイズデータ単位の格納
現在のフラッシュメモリ動作において、従来、論理アドレス空間の中の所与のデータブロックを、データブロック内のデータ量と同じデータ格納容量を有するメモリの物理ブロックまたはメタブロックにマッピングする。これによりメモリシステムの動作効率は上がる。しかし、格納に先立ち論理アドレス空間と物理メモリとの間で論理データブロックのサイズを変えるようなデータ変換があると、論理データブロックと物理データブロックのこの望ましい同等サイズは失われる。この場合、従来のマッピング方式は使えない。
この問題を克服するひとつの手法として、サイズが不揃いの変換済みデータのグループに中間論理アドレスを割り当て、さらに中間アドレスのブロックをサイズが等しいフラッシュメモリのブロックへマッピングする。しかし、以降の更新によってそのような中間サイズデータグループのサイズが変化すると、中間アドレスから物理メモリブロックへの割り当てにあたって著しい断片化が生じる。その結果、より頻繁なデータ整理とガーベッジコレクションが必要となり、メモリシステムの性能は大いに低下する。
これまでのセクションで説明した直接データファイル手法を使用すれば、変換されたまたはサイズが不揃いになったデータ単位に対処しながら、なお良好なメモリシステム性能を維持できることが分かっている。不定サイズデータグループの使用は、量が異なり変化するデータ単位の取り扱いにとりわけ適している。
図14は、前述した直接データファイル手法を用いてデータファイルを書き込む例を説明するが、データはメモリシステムの中に変換され、格納されるデータ量はホストのデータ量とは異なる。データ変換は、メモリへの書き込みに先立つ受信データの圧縮、暗号化等の符号化によって生じる。圧縮アルゴリズムの第一の目的は、ホストからの一定量のデータの格納に要する物理メモリ量を抑えるため、データ量を大幅に減らすことにある。他方、データ暗号化プロセスによって格納されるデータ量が増加することは多々ある。本願明細書で説明する手法は両方の場合に等しく応用できる他、データの一部はサイズが増加し、他の部分のサイズは減少する状況にも応用できる。
図14を参照すると、ファイル201の中のデータは0からNに及ぶ論理オフセットアドレス202を有する。ファイルオフセットアドレスは、データとともにホストから提供される。このアドレス空間は、メモリシステムの中でコンバージョン203によって隣接するデータ単位204のHD1、HD2、HD3、およびHD4に分割される。ブロック205に示すように、これらのホストデータ単位はその後、207に示すそれぞれの論理データグループDG1、DG2、DG3、およびDG4に変換される。この図では、変換済みデータグループDG2は対応するホストデータ単位HD2より大きく、変換済みデータグループDG3はホスト単位HD3と同じサイズであり、他の2つのデータグループのデータはそれぞれの未変換ホストデータより少ない。しかし、変換済みデータグループは、実行する変換のタイプに応じて、それぞれの対応するホストデータ単位よりことごとく大きくなるか、あるいはことごとく小さくなるのがより一般的である。ブロック211に示すように、データ変換の後には、前述した直接データファイル手法と同様に、フラッシュメモリセルアレイ209の中の物理アドレスを論理データグループ207に割り当てることにより、論理データグループ207をフラッシュメモリセルアレイ209に格納する。
ファイル論理アドレス範囲204の個別のホストデータ単位HD1等は、好ましくは、等量またはほぼ等量のデータを収容するように選択される。このデータ量はまた、好ましくは、データ変換205で使用するデータと等しい量に設定される。つまり、圧縮・暗号化アルゴリズムの少なくともその多くは、一度に一定量のファイルデータだけを処理し、ホストデータ単位HD1等のサイズはその量と等しい量に設定できる。通常は変換アルゴリズムのパラメータ設定によってこの量を選択できるから、この量とホストデータ単位HD1等のサイズを併せて選択することにより、特定のシステム動作の最適化を図ることができる。
図15に示すように、これらの手法は前述したホストデータファイルインターフェイスに限定されず、ホストシステムとメモリシステムとの間で多数のファイルを単一の論理アドレス空間で仲介する場合にも使用できる。これは従来のディスク記憶システムインターフェイスである。データファイル213には、ホストのアドレスコンバージョン機能214によって論理アドレス空間215の中の一意なアドレスが割り当てられる。周知のように、ホストは、アドレス空間215内の使われていないアドレスに新規ファイルの論理アドレスを割り当てるが、特定のファイルにとって、これらのアドレスはことによると隣接せず、多くの場合、隣接しない。このため、メモリシステムは、特定のファイルに割り当てられる論理アドレスに関する情報を直接的には把握しない。
しかし、図15の単一論理アドレスインターフェイス215は、216に示すように、隣接するデータセット217に分割でき、各セットは好ましくは等量のデータを収容する。こうして各セットはデータファイルオブジェクトのように扱われ、218ではその論理アドレス範囲が219に示す論理ホストデータ単位HD1、HD2、およびHD3に分割される。これは、2005年8月3日に出願されたセルゲイ・A・ゴロベッツの米国特許出願第11/196,869号(特許文献30)で開示されている手法の実践にあたる。各データセット217の中のアドレスは、論理アドレスコンバージョン218によってホストデータ単位219へマッピングされる。ホストデータ(HD)単位のサイズは好ましくは同じかほぼ同じであり、好ましくは、変換機能223によって一度に変換されるデータ量に一致するよう選択される。これらのホストデータ(HD)単位は、図14との関係で前述したプロセスと同じ方法で225に示すサイズの異なる対応する論理データグループ(DG)の1つにコンバートされる。そして、論理データグループは、アドレス翻訳227によって決まるメモリ209内の物理アドレスに格納される。
データ変換205(図14)または223(図15)の遂行にあたっては通常、メモリコントローラにおいて、論理セット(204または219)のホストデータ(HD)単位が一度に1つずつRAM 31(図2)等に一時的に格納される。格納されたHD単位にはその後、符号化等の変換が行われる。同様に、変換された状態で格納されたホストデータ単位を修正するときには、データは読み出され、再変換され、再変換済みデータ単位の一部または全部は一時的にRAMに格納され、修正が行われる。現在のフラッシュメモリシステムは通常、プログラミング機能と読み出し機能の遂行にあたって僅か1ページまたは1メタページ分のデータの格納容量を要求するから、場合によっては容量がさらに大きいRAMが必要となる。
これまで、外部のホストとデータをやり取りするものとして、図14および図15のメモリシステムを説明してきたが、「ホスト」は代わりに、メモリシステムの中で実行するソフトウェアアプリケーションプログラムであってもよい。フラッシュメモリアレイの中に格納されるアプリケーションソフトウェアはRAM 31へロードされ、メモリ動作を制御するコントローラプロセッサ27(図2)によって実行される。あるいは必要に応じ、追加のマイクロプロセッサをこの目的のためにメモリシステムに加えることができる。
ここで初めて図16を参照し、図14または図15の例の変換済み論理データグループ(DG)を翻訳し、格納する手法をこれより説明する。図16におけるファイルまたはセット231のデータの例は、ホストデータファイルインターフェイス(図14)の1つのホストファイル201のものか、あるいは論理アドレス空間215(図15)の一部または全部のものに相当する。ホストデータ231の論理アドレス範囲は均等サイズのホストデータ単位HD1、HD2、HD3等に分割され、それらホストデータ単位の各々はそれぞれの開始論理アドレスA1、A2、A3等を持つ。ホストデータ単位HD1、HD2、HD3等は、メモリシステムの中で、例えば圧縮、暗号化、またはその他の符号化によって、異なる長さL1、L2、L3等をそれぞれ持つ対応するデータグループDG1、DG2、DG3等に個別に変換される。
そして、変化済みデータグループDG1、DG2、DG3等は、図11〜図13との関係で前述した直接データファイル操作のデータグループとして扱われる。データグループは、2つのブロックまたはメタブロックXおよびYが描かれた物理メモリ233に格納される。データグループは順次お互いに格納され、データグループDG1はメモリブロックXのアドレス0から始まり、データグループDG2はDG1の末尾のすぐ後ろ、ブロックXのアドレス1から始まる等である。この例のデータグループDG5はブロックXおよびYで分かれるため、それぞれ長さL5aおよびL5b、ならびにブロックXにおける開始メモリアドレス4およびブロックYにおける開始メモリアドレス0を有する、2つのサブグループDG5aおよびDG5bに分割される。グループDG5の先頭からブロックXに収まるデータはそこに格納され、グループDG5の残りの量はブロックYに格納される。
図16の例におけるホストは、メモリシステムに格納されるデータの論理アドレス空間がホストデータ単位HD1、HD2、HD3等に分割されることを知らない。ホストはまた、メモリシステムでデータ変換が行われることを知らない。ホストがメモリシステムからデータを読み出すときには、図16との関係で説明した書き込みプロセスの逆が起こる。データファイル(図14)またはシステム論理アドレス空間(図15)の中の所定のアドレスのデータをホストが要求すると、格納済みデータグループDG1、DG2、DG3等が格納ブロックXおよびYから読み出され、それぞれのホストデータ単位HD1、HD2、HD3等に個別に逆変換され、データグループ231に組み合わせされてホストへ送信される。
ホストデータ単位(HD)に対応するデータグループ(DG)の物理位置は、メモリシステムのオーバーヘッドの一部としてファイルインデックステーブル(FIT)で保守される。図16に示されたデータ格納に対応する、そのようなテーブルの一部分の例を図17に示す。このテーブルは、データが初めて書き込まれるときに作成され、書き込み済みデータが修正されるときに修正され、ホストが要求するデータを見つけて読み出す間に使用される。テーブルの中には、データ単位231の格納済みデータグループ(DG)ごとに少なくとも1つの行がある。テーブルの列内の各データグループの情報には、データグループに対応するホストデータ単位(HD)のオフセットアドレスAを伝える列235がある。列237には変換済みデータグループ(DG)の長さLが入る。物理メモリ233でデータグループが始まるところの開始バイト位置または他のアドレスは、ポインタ列239で提供される。
この直接データファイル手法の適用には、図11〜図13との関係で前述したものと大きく異なる点がひとつある。非変換データ格納の場合、データグループを組み合わせることによってデータグループの数を減らし、その追跡にかかるFITおよびオーバーヘッドのサイズを抑えることは容易いが、変換済みデータグループは違う。個別のホストデータ(HD)単位は個別に変換されるから、それぞれ対応する個別の変換済みデータグループ(DG)を絶えず把握することが望ましい。そうすれば、格納ブロックに格納されたデータグループ間の境界の記録が保たれ、格納ブロックから個別のデータグループへ読み出されるデータの区別が可能となる。そして、FITのいずれかの行によって識別される対応するデータグループ(DG)から対応するホストデータ(HD)単位への再変換が個別に行われる。
そこで、図17のFITには、列241と、各データグループが一定状態を保つか否かを指示する単一ビットが含まれる。ビット「1」は一定状態を保つことを意味する。データグループが併合されなければ、格納済みデータグループ間の境界は識別され続ける。ビット「0」は、図11〜図13との関係で前述した一般的な直接データファイルと直接データファイルアプリケーションの方法で、データグループを他のデータグループと組み合わせできることを意味する。この場合、メモリシステムは変換済みデータと非変換データの両方を格納できる。列241のビットは、変換されたデータグループの場合は「1」であり、非変換データグループの場合は「0」である。
変換済みデータと非変換データの両方を格納するシステムで、ホストから受け取る書き込みコマンドはメモリシステムの中で2つの具体的な書き込みコマンドのいずれか一方にコンバートされる。Writeコマンドは、受信データを、直接データファイル記憶を説明するこれまでのセクションの手法に従い併合できる自由データグループとして、メモリに書き込む。Write_Groupコマンドは、受信データを、このセクションの説明に従い併合できない固定データグループとして、メモリに書き込む。固定データグループの場合は、Write_Groupコマンドのデータ変換機能が送信され、その後にストリームされるデータによってグループが形成され、Close_Groupコマンドによってデータグループの終端が決定する。
図17のFITのもうひとつの列243は、各データグループが別のデータグループに連結しているか否かを伝える。これは、図16の例で格納ブロックXおよびYで分かれているデータグループDG5のように、データグループが2つのメモリブロックに分かれる場合に起こる。その結果、2つのサブグループが形成される。この列には、連結データサブグループの場合に「1」が入り、連結されていないグループの場合には「0」が入る。この例で、サブグループ244および246のそれぞれはこの列に「1」を持ち、データグループA5の一部にすぎないことが分かる。これは244と246がサブグループであって、先々、データ整理またはガーベッジコレクションがあったとして、そのデータ整理/ガーベッジコレクションの結果としてデータグループA5全体を単一のメモリブロックに格納することになる場合に、244と246を組み合わせ、単一のデータグループA5に戻せることを意味する。これは、個別データグループの組み合わせを禁ずる列241のビット「1」による規制の例外にあたる。図17では、2つのサブグループのうちの最初のサブグループのレコード244の一部として、データグループA5のオフセットアドレスと長さが一度だけ挿入されている。代わりに、レコード244および246の両方でこれらのデータを繰り返すこともできる。
図17のFITの例で、最後の列245はホストファイルの終端にあたるデータグループを標示するためのものである。したがって、図17のテーブルで最後のデータグループには「1」の標示があり、その他のデータグループは「0」の標示によりホストファイルの最終データグループではないことが分かる。これは、メモリシステムがホストに対しデータファイルオブジェクトインターフェイスを持つ場合、すなわち図14に示す場合に使用する。しかし、ホストインターフェイスが図15の連続単一論理アドレス空間の場合、通常これは使用しない。
データグループの長さ、例えばデータグループDG3の長さL3が、このデータグループの開始アドレスA3と次のデータグループの開始アドレスA4との差に等しくないことに気づく。これは言うまでもなく、ホストデータ単位HD3の変換によってその長さが変化したからである。
図18および図19は、当初ホストデータ単位HD1〜HD8で表現されていたデータファイルにその後データが付加された場合に生じるそれぞれ図16および図17の変化を示している。この場合、ファイルの末尾にホストデータグループHD9が追加される。このホストデータ単位はデータグループDG9に個別に変換される。この例で、変換されたデータグループDG9の最初の部分は、メモリ格納ブロックYの末尾に残っている空間に格納され、データグループDG9の残りの部分は、新たな格納ブロックZの先頭に格納される。代わりに、他のファイルの1つ以上のデータグループの格納にも使われる共通ブロックにデータグループDG9を格納することもできる。共通ブロックの使用は直接データファイルアプリケーションで説明されている。
この例で、図17のFITは、図19に示すように、その末尾に2つの項目が加わって更新される。一方の項目は格納ブロックYの中のサブグループのためのものであり、他方の項目は格納ブロックZの中のサブグループのためのものである。これらのサブグループ各々の「連結」ビットは「1」に設定され、「ファイル終端」ビットは最後のサブグループに移される。
図20および図21は、それぞれ図16および図17の格納済みデータグループに対するタイプの異なる変更を示している。この場合、ホストデータ単位HD4の一部分が更新される。この更新プロセスではまず、メモリ格納ブロックXから対応する変換済みデータグループDG4をそっくり読み出し、次に図20の247に示すように、このグループのデータを逆変換することにより、元のホストデータ単位(HD4)249を復元する。こうして得た元のホストデータ単位は、251に示すようにホストによって更新され、この場合、元のデータの一部が差し替えられる。更新されたホストデータ単位はその後、253に示すように、元のホストデータ単位HD4の変換に使ったのと同じアルゴリズムによって変換される。その結果、長さL9を持つ更新済みデータグループ(DG4)255が出来上がり、長さL9は通常元のデータグループの長さL4と異なる。
図18の付加されたデータグループDG9の格納の代替として、更新されたデータグループは図20において、格納ブロックYに部分的に格納されるのではなく、新たな格納ブロックZの中にそっくり格納されている。このため、追加されたデータグループを2つのサブグループに分けずにすむ。元のデータグループDG4は用済みと標示され、格納データの整理またはガーベッジコレクションが次回行われるときに除去される。
この変更を反映するため、図17の元のFITは更新される。図21に示すように、データグループDG4に対応する行の情報は変更され、新しい長さL9と新しい開始メモリアドレスZ0を示している。単位の最終データグループは引き続きデータグループDG8なので、ファイル終端ビットはデータグループDG8のセットのままである。
図20および図21は、読み出し/修正/書き込みの一形式を説明するものである。これは、RAM31(図1)等のバッファメモリの使用量を変えながら果たすことができる。ひとつのやり方として、修正の対象となるデータグループ(DG)全体を読み出し、これを再変換し、再変換されたホストデータグループ(DG)全体をバッファメモリに格納し、格納されたデータを新規の着信データで部分的に上書きすることによって修正し、修正された格納データを変換し、メモリに再度書き込む。これよりも所要バッファメモリが少ないもうひとつのやり方では、再変換されたデータで修正されない部分だけを格納し、格納されたデータを読み出し、それらを新規の着信差し替えデータと組み合わせ、修正されたデータを変換し、メモリに書き込む。
結論
これまで本発明の様々な態様をその代表的な実施形態との関係で説明してきたが、添付の特許請求の範囲の全範囲内でその権利が保護されるべきであることが理解できよう。
現在実装されているホストと接続された不揮発性メモリシステムとを概略的に示す。 図1の不揮発性メモリとして使用されるフラッシュメモリシステム例のブロック図である。 図2のシステムに使用できるメモリセルアレイの代表的な回路図である。 図2のシステムの物理メモリの編制例を示す。 図4の物理メモリの一部分の拡大図を示す。 図4および図5の物理メモリの一部分のさらなる拡大図を示す。 ホストと再プログラム可能なメモリシステムとの間の一般的な先行技術の論理アドレスインターフェイスを示す。 ホストと再プログラム可能なメモリシステムとの間の一般的な先行技術の論理アドレスインターフェイスを図7とは異なる様式で示す。 直接データファイルアプリケーションに従うホストと再プログラム可能なメモリシステムとの間の直接データファイル記憶インターフェイスを示す。 直接データファイルアプリケーションに従うホストと再プログラム可能なメモリシステムとの間の直接データファイル記憶インターフェイスを図9とは異なる形で示す。 データファイルをメモリに直接書き込む例を示す。 データファイルをメモリに直接書き込む他の例を示す。 データファイルをメモリに直接書き込む他の例を示す。 データファイルをメモリに直接書き込む他の例を示す。 メモリに対する単一データファイルの一連の直接的書き込みを示す。 メモリに対する単一データファイルの一連の直接的書き込みを示す。 メモリに対する単一データファイルの一連の直接的書き込みを示す。 メモリに対する単一データファイルの一連の直接的書き込みを示す。 メモリに対する単一データファイルの一連の直接的書き込みを示す。 図12Eに示されたデータファイルでガーベッジコレクションを行った結果を示す。 本発明に従うデータ変換を伴う直接データファイルメモリシステムの動作を示す。 本発明に従うデータ変換を伴う論理アドレス空間メモリシステムの動作を示す。 図14または15におけるデータ変換を説明するための例である。 図16の例で格納されるデータのファイルインデックステーブル(FIT)である。 図16の例によって格納されるデータへのデータの付加を示す。 図18に従う多少のデータが付加された後の格納データのファイルインデックステーブルである。 図13の例による格納データの更新を示す。 図20に従う更新された後の格納データのファイルインデックステーブルである。

Claims (15)

  1. 論理アドレス範囲内の論理アドレスで再プログラム可能な不揮発性メモリシステムによって受信されるデータを格納するように前記メモリシステムを操作する方法であって、前記メモリシステムは個別の作業セルブロックに編制されたメモリセルをみ、前記個別ブロックはその中にデータを書き込む前にともに消去される最小数のメモリセルを収容する方法において、
    前記メモリシステムによって受信されるデータを、前記個別メモリセルブロックの格納容量以下のデータ量を個別に収容する均等サイズのデータ単位に分割するステップであって、個別単位の中のデータは論理アドレス範囲内の一連の論理アドレスを有するステップと、
    変換前の対応するデータ単位とは異なる量のデータを個別に収容する対応するデータグループに前記受信データを符号化するか、圧縮するか、または暗号化するかのいずれか1つを少なくとも行うことによって、前記個別の受信データ単位を変換するステップと、
    切片のうちの1つが2つのメモリセルブロックのそれぞれに位置している状態で、個別グループが2つのメモリセルブロックにわたるように2つの切片に分けられるステップを含む、前記データグループの境界と前記メモリセルブロックの物理境界とに少なくとも一致する境界で1つ以上の前記メモリセルブロック内の一連の位置に前記データグループを書き込むステップと、
    前記メモリセルブロックの境界内にある個別のデータグループと切片とを定義する境界を維持するステップを含む、前記メモリセルブロック内の個別のデータグループと切片との位置の中央テーブルを維持するステップと、
    を含む方法。
  2. 請求項記載の方法において、
    既に変換され前記メモリに書き込まれた少なくとも1つの受信済み個別データ単位の中でデータを更新するデータの受信に応じて、前記メモリシステムの中で、
    前記少なくとも1つの変換済み個別データ単位を形成する変換済みデータの1つ以上のグループを読み出すステップと
    記読み出し済みデータを復号化する、解凍する、または解読するかのいずれか1つを少なくとも行うことによって、変換済みデータの前記読み出し済みグループを逆変換し、これにより前記少なくとも1つの個別データ単位を復元するステップと、
    その後、前記復元済みの少なくとも1つの個別データ単位を前記受信済み更新データにより修正するステップと、
    その後、前記修正済み・復元済みデータを符号化する、圧縮する、または暗号化するかのいずれか1つを少なくとも行うことによって、前記少なくとも1つの修正済みデータ単位を前記対応するデータグループに変換するステップと、
    切片のうちの1つが2つのメモリセルブロックのそれぞれに位置している状態で、個別グループが2つのメモリセルブロックにわたるように2つの切片に分けられるステップを含む、前記データグループを1つ以上の前記メモリセルブロック内の一連の位置に再書き込みするステップと、
    前記メモリセルブロックの物理境界内にある個別のデータグループと切片とを定義する境界を維持するステップを含む、前記メモリセルブロック内の個別の再書き込み済みグループと切片との位置の中央テーブルを変更するステップと、
    をさらに含む方法。
  3. 請求項記載の方法において、
    前記データを変換するステップは、前記少なくともいくつかの変換済みデータ単位が前記変換の前より少ない量のデータを個別に収容するデータ単位を含むことに帰結する方法。
  4. 請求項記載の方法において、
    前記データを変換するステップは、前記少なくともいくつかの変換済みデータ単位が前記変換の前より多い量のデータを個別に収容するデータ単位を含むことに帰結する方法。
  5. 請求項記載の方法において、
    前記変換済みデータのグループを定義するステップは、異なるセルブロックにある1データグループの切片をともにつなぎ合わせるステップを含む方法。
  6. 請求項記載の方法において、
    前記メモリシステムによって受信されるさらなるデータ単位を変換なしで少なくとも1つのさらなるメモリセルブロックに格納するステップと、
    前記さらなるデータ単位の格納位置を、前記メモリセルブロック内のさらなるデータグループによって識別するステップと
    含む方法。
  7. 請求項記載の方法において、
    前記方法は、メモリコネクタによって取り外し可能な状態でホストデバイスへ接続できるメモリシステムモジュールで遂行され、前記データは前記メモリコネクタを通じて受信される方法。
  8. 請求項記載の方法において、
    前記メモリシステムによって受信されるデータは、前記メモリシステムの中でプロセッサによって実行されるアプリケーションプログラムから発生する方法。
  9. 請求項1記載の方法において、
    前記論理アドレス範囲は、メモリシステムの論理アドレス範囲である方法。
  10. 請求項1記載の方法において、
    前記論理アドレス範囲は、格納されるデータのファイルオブジェクトの論理アドレス範囲である方法。
  11. 論理アドレス範囲内の論理アドレスで再プログラム可能な不揮発性メモリシステムによって受信されるデータを圧縮し、その圧縮データを格納するように前記メモリシステムを操作する方法であって、前記メモリシステムは個別の作業セルブロックに編制されたメモリセルを含み、前記個別ブロックはその中にデータを書き込む前にともに消去される最小数のメモリセルを収容する方法において、
    前記メモリシステムによって受信されるデータを、前記個別メモリセルブロックの格納容量以下のデータ量を個別に収容する均等サイズのデータ単位に分割するステップであって、個別グループの中のデータは論理アドレス範囲内の一連の論理アドレスを有するステップと、
    前記個別の受信データ単位を圧縮し、これにより圧縮する前のその対応するデータ単位よりも個別に小さい対応するデータグループを生成するステップと、
    切片のうちの1つが2つのメモリセルブロックのそれぞれに位置している状態で、個別グループが2つのメモリセルブロックにわたるように2つの切片に分けるステップを含む、前記データグループの境界と前記メモリセルブロックの物理境界とに少なくとも一致する境界で1つ以上の前記メモリセルブロック内の一連の位置に前記データグループを書き込むステップと、
    前記メモリセルブロックの境界内にある個別のデータグループと切片とを定義する境界を維持するステップを含む、前記メモリセルブロック内の個別のデータグループと切片との位置の中央テーブルを維持するステップと、
    を含む方法。
  12. 請求項11記載の方法において、
    前記論理アドレス範囲は、メモリシステムの論理アドレス範囲である方法。
  13. 請求項11記載の方法において、
    前記論理アドレス範囲は、格納されるデータのファイルオブジェクトの論理アドレス範囲である方法。
  14. 請求項11記載の方法において、
    前記方法が遂行される前記メモリシステムは、メモリコネクタによって取り外し可能な状態でホストデバイスへ接続できるモジュールの中にあり、前記データは前記メモリコネクタを通じて受信される方法。
  15. 請求項11記載の方法において、
    メモリセルを操作し、これにより少なくともいくつかの個別セルの2ビット以上の受信データを格納するステップをさらに含む方法。
JP2008535553A 2005-10-13 2006-09-28 固定サイズ格納ブロックを有するメモリシステムにおける変換データ単位格納 Expired - Fee Related JP4441577B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/250,299 US7529905B2 (en) 2005-10-13 2005-10-13 Method of storing transformed units of data in a memory system having fixed sized storage blocks
US11/250,794 US7814262B2 (en) 2005-10-13 2005-10-13 Memory system storing transformed units of data in fixed sized storage blocks
PCT/US2006/038008 WO2007047062A2 (en) 2005-10-13 2006-09-28 Storage of transformed units of data in a memory system having fixed sized storage blocks

Publications (3)

Publication Number Publication Date
JP2009512066A JP2009512066A (ja) 2009-03-19
JP2009512066A5 JP2009512066A5 (ja) 2009-11-26
JP4441577B2 true JP4441577B2 (ja) 2010-03-31

Family

ID=37499547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008535553A Expired - Fee Related JP4441577B2 (ja) 2005-10-13 2006-09-28 固定サイズ格納ブロックを有するメモリシステムにおける変換データ単位格納

Country Status (5)

Country Link
EP (1) EP1938195B1 (ja)
JP (1) JP4441577B2 (ja)
KR (1) KR101348255B1 (ja)
TW (1) TWI436210B (ja)
WO (1) WO2007047062A2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
EP2333660B1 (en) * 2009-12-04 2016-10-05 ST-Ericsson SA Method of and apparatus for providing a logical view of data stored in an non-volatile memory
US9134918B2 (en) 2009-12-31 2015-09-15 Sandisk Technologies Inc. Physical compression of data with flat or systematic pattern
KR101113755B1 (ko) * 2011-01-28 2012-02-27 엘아이지넥스원 주식회사 프리 메모리 관리 구조체를 사용하는 메모리 관리 방법
TW201234384A (en) * 2011-02-14 2012-08-16 Sheng-Chuang Zhang Semiconductor memory device with compression and decompression functions
US8943266B2 (en) 2013-03-13 2015-01-27 Hitachi, Ltd. Storage system and method of control for storage system
US10671317B2 (en) * 2016-05-25 2020-06-02 Samsung Electronics Co., Ltd. Block cleanup: page reclamation process to reduce garbage collection overhead in dual-programmable NAND flash devices
JP7440167B2 (ja) 2020-02-19 2024-02-28 Necソリューションイノベータ株式会社 情報格納方法
KR102583244B1 (ko) * 2022-01-28 2023-09-26 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
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

Also Published As

Publication number Publication date
KR101348255B1 (ko) 2014-01-08
JP2009512066A (ja) 2009-03-19
TW200731068A (en) 2007-08-16
KR20080074124A (ko) 2008-08-12
WO2007047062A3 (en) 2007-07-05
WO2007047062A2 (en) 2007-04-26
EP1938195B1 (en) 2018-08-29
TWI436210B (zh) 2014-05-01
EP1938195A2 (en) 2008-07-02

Similar Documents

Publication Publication Date Title
US7814262B2 (en) Memory system storing transformed units of data in fixed sized storage blocks
US7529905B2 (en) Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7877540B2 (en) Logically-addressed file storage methods
US7669003B2 (en) Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7949845B2 (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7877539B2 (en) Direct data file storage in flash memories
US8046522B2 (en) Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
TWI464584B (zh) 用於實施延伸以智慧型管理一大容量儲存系統之資源的系統與方法
US7917686B2 (en) Host system with direct data file interface configurability
US20070143567A1 (en) Methods for data alignment in non-volatile memories with a directly mapped file storage system
US20070143378A1 (en) Non-volatile memories with adaptive file handling in a directly mapped file storage system
US20070143566A1 (en) Non-volatile memories with data alignment in a directly mapped file storage system
US20070143560A1 (en) Non-volatile memories with memory allocation for a directly mapped file storage system
US20090182791A1 (en) Non-Volatile Memories And Method With Adaptive File Handling In A Directly Mapped File Storage System
US20070156998A1 (en) Methods for memory allocation in non-volatile memories with a directly mapped file storage system
JP4441577B2 (ja) 固定サイズ格納ブロックを有するメモリシステムにおける変換データ単位格納
JP2009503729A (ja) 論理アドレス空間と直接データファイル方式で動作するインターフェイスシステム
US20070136553A1 (en) Logically-addressed file storage systems
KR101464199B1 (ko) 연속 논리 주소 공간 인터페이스를 구비한 다이렉트 데이터 파일 시스템을 사용하는 방법
US20090164745A1 (en) System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
JP2009503744A (ja) 予定再生操作を伴う不揮発性メモリ
WO2007081638A2 (en) Non-volatile memories and methods with adaptive file handling in a directly mapped file storage system
WO2007073538A2 (en) Non-volatile memories and methods with data alignment in a directly mapped file storage system
JP2009519555A (ja) 論理アドレス形ファイル記憶
JP2010515163A (ja) ダイレクトデータファイルメモリシステムにおけるlbaインターフェイスの管理

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090928

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090928

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090930

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20091022

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: 20091215

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: 20100108

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

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4441577

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130115

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: 20130115

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

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

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

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: 20130115

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees