JP2008507756A - 最適化されたシーケンシャルなクラスタの管理のためのfat分析 - Google Patents

最適化されたシーケンシャルなクラスタの管理のためのfat分析 Download PDF

Info

Publication number
JP2008507756A
JP2008507756A JP2007522509A JP2007522509A JP2008507756A JP 2008507756 A JP2008507756 A JP 2008507756A JP 2007522509 A JP2007522509 A JP 2007522509A JP 2007522509 A JP2007522509 A JP 2007522509A JP 2008507756 A JP2008507756 A JP 2008507756A
Authority
JP
Japan
Prior art keywords
data
host
logical address
storing
cluster
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.)
Granted
Application number
JP2007522509A
Other languages
English (en)
Other versions
JP4931810B2 (ja
JP2008507756A5 (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/897,049 external-priority patent/US7395384B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of JP2008507756A publication Critical patent/JP2008507756A/ja
Publication of JP2008507756A5 publication Critical patent/JP2008507756A5/ja
Application granted granted Critical
Publication of JP4931810B2 publication Critical patent/JP4931810B2/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files

Abstract

(フラッシュメモリなどの)不揮発性メモリシステムにおいてデータを管理するための技法が開示される。コントローラが、ホストのファイルシステムに関する情報を利用することが可能となり、この情報はホストによって不揮発性メモリに格納され、1以上のクラスタ(またはクラスタを有するセクタ)が現在割り当てられているかどうかの判定が行われる。コントローラはホストのファイルシステムに関する情報を利用して、ホストが、次の未使用クラスタへデータを送信する時点を特定し、不揮発性メモリ内の別の記憶位置からデータをコピーすることによって、シーケンシャルなフォーマットでそのようなデータの格納を行うことが可能となる。

Description

本発明は、一般に、計算システムと共に用いられるデータ格納システムに関し、特に、不揮発性メモリ記憶装置においてデータの保守管理を行うための技法に関する。
特に、小形の形状のファクタカードの形で今日使用されている商業的に成功した多くの不揮発性メモリ製品が存在する。これらの不揮発性メモリ製品には、1以上の集積回路チップ上に形成されたフラッシュEEPROMアレイ(電気的に消去可能でプログラム可能なリードオンリメモリ)セルが使用されている。典型的には、個々のホストとのインターフェイスとして集積回路チップ上のメモリコントローラが提供される。ホストは、コントローラを使用して不揮発性メモリで(読み出し、書き込みなどの)種々の処理を行うことができる。コントローラには1以上の特別の回路が設けられ、そのような回路として、典型的には、マイクロプロセッサ、ある種の不揮発性リードオンリメモリ(ROM)、揮発性ランダムアスセスメモリ(RAM)、並びに、データがコントローラの中を通り抜けるとき、データのプログラミング中およびデータの読み出し中にデータから生じる誤り訂正符号(ECC)の計算を行う回路などがある。市販のカードのいくつかとして、コンパクトフラッシュ(登録商標)(CF)カード、マルチメディアカード(MMC)、セキュアデジタル(SD)カード、スマートメディアカード、個人用タグ (personnel tag)(P−Tag)およびメモリスティックカードがある。ホストには、パーソナルコンピュータ、ノート形コンピュータ、携帯用個人情報端末(PDA)、種々のデータ通信装置、デジタルカメラ、移動電話、携帯用オーディオプレーヤー、自動車用サウンドシステム、および、同種の機器が含まれる。メモリカードの実施構成以外にも、不揮発性メモリは種々のタイプのホストシステムの中へ組み込むことができる。
ほとんどすべての集積回路用アプリケーションにおける場合のように、フラッシュEEPROMメモリセルアレイの場合にも、いくつかの集積回路機能の実現に必要なシリコン基板面積の縮小に対する圧力が存在する。所定のサイズのメモリカードと、別の種類のパッケージとの記憶容量を増やすために、所定の面積のシリコン基板に格納できるデジタルデータ量を増やすようにという、容量の増加とサイズの縮小化の双方を求める要望が継続的に存在する。データの記憶密度を高める1つの方法として、1個のメモリセル当たりおよび/または記憶素子または記憶ユニット当たり2ビット以上のデータを格納する方法がある。これは、記憶素子の電荷レベルの電圧範囲のウィンドウを3以上の状態に分割することにより達成される。このような4状態を利用することにより、個々のセルに2ビットのデータを格納することが可能となり、いずれの状態も、記憶素子当たり3ビットのデータ等々が格納されることになる。フローティングゲートを利用する多状態フラッシュEEPROM構造については、米国特許第5,043,940号(特許文献1)および第5,172,338号(特許文献2)に記載され、さらに、誘電体フローティングゲートを用いる構造については、前述した米国特許出願第2003/0109093号(特許文献3)に記載されている。多状態メモリセルアレイの選択された部分は、米国特許第5,930,167号(特許文献4)および米国特許第6,456,528号(特許文献5)に記載されているように、種々の理由によって2状態(2進)での動作も可能となる。
典型的なフラッシュEEPROMアレイのメモリセルは、一括消去される個別のセル“ブロック”に分割される。個々の消去ブロックは通常1以上のデータページを格納し、この1ページがプログラミングと読み出しとを行う最小単位であるが、同時に異なるサブアレイすなわちプレーンで2以上のページのプログラミングや読み出しを行うことも可能である。個々のページは通常1以上のデータセクタを格納し、このセクタサイズはホストシステムによって定義される。一つの例示のセクタには、磁気ディスク駆動装置に関して定義されている標準規格に準拠する512バイトのユーザデータが含まれ、これに加えて、ユーザデータおよび/またはユーザデータが格納されている消去ブロックに関する或るバイト数のオーバーヘッド情報も含まれている。このようなメモリは、一般に32、128またはそれ以上のページを持つ個々の消去ブロック内に構成され、個々のページには1セクタまたはわずか数セクタのホストデータが格納される。ブロックに対してデータを再書き込みするためにブロックをまず消去することが望ましいことも留意されたい。
ユーザデータをプログラムしてメモリアレイの中へ入れ、このメモリアレイからユーザデータを読み出す間の並行性レベルを高めるために、このアレイはプレーンと呼ばれるサブアレイに通常分割され、これらのサブアレイは、並列処理が可能となるようにサブアレイ自身のデータレジスタ並びにその他の回路を備え、これによって、数個のプレーンまたはすべてのプレーンの各々に対してデータセクタを同時にプログラムしたり、数個のプレーンまたはすべてのプレーンの各々からデータセクタを同時に読み出したりすることができるようになる。単一の集積回路のアレイを物理的に分割してプレーンに変えることも可能であるし、あるいは、別々の1以上の集積回路チップから個々のプレーンを形成することも可能である。このようなメモリの実施構成の例については、米国特許第5,798,968号(特許文献6)および米国特許第5,890,192号(特許文献7)に記載されている。
メモリをさらに効率的に管理するために、消去ブロックを仮想ブロックすなわちメタブロックと一体に論理的にリンクすることも可能である。すなわち、個々のプレーンから得られる1つの消去ブロックを含むように個々のメタブロックは定義される。メタブロックの利用については、国際公開特許出願第02/058074号(特許文献8)に記載されている。メタブロックは、データのプログラミングと読み出しのための宛先としてホストの論理ブロックアドレスにより特定される。同様に、メタブロックからなるすべての消去ブロックは一括消去される。このような大きなブロックおよび/またはメタブロックと共に動作するメモリシステム内のコントローラは、ホストから受信した論理ブロックアドレス(LBA)と、メモリセルアレイ内の物理ブロック番号(PBN)との間での変換を含む複数の機能を実行する。このブロック内の個々のページは、典型的には、このブロックアドレス内のオフセット値によって特定される。アドレス変換は、論理ブロック番号(LBN)と論理ページの中間項の利用を含む場合が多い。したがって、メモリアレイ内のブロックは単一の消去ブロックから構成されるものであってもよいし、あるいは、メタブロックを形成するために論理的にリンクされる2以上の消去ブロックから構成されるものであってもよい。
ホストアプリケーションの視点から見れば、論理アドレス0を起点として論理アドレスNで終る論理アドレス空間にフラッシュメモリを分割することができる。図1はホストの論理アドレス空間102を示し、この論理アドレス空間102は“論理セクタ”に分割されている。ホストは(4〜64などの)いくつかの論理セクタをクラスタにグループ化する。図1に示されているように、ホストは、クラスタA、B、C、D、E、F、G、Hを含むクラスタに論理アドレス空間102を分割してもよい。したがって、これらのクラスタの各々は、(クラスタ当たり4〜64の論理セクタなどの)所定数のセクタを表わすことができることになる。いずれの場合にも、ホストは、“クラスタ”と呼ばれる論理データ単位でデータを割り当てることになる。例えば、クラスタA、B、Cを用いてファイル1を割り当てることが可能であり、これに対してクラスタDを用いてファイル2が割り当てられる。ホストがクラスタの中にファイルを割り当てることに留意されたい。しかし、クラスタ内のすべての論理セクタがファイル用としてデータを含む必要があるわけではない。例えば、(唯一の論理セクタなどの)クラスタCの一部だけがデータを含むようにすることも可能である。それでも、たとえクラスタ内のすべての論理セクタが必ずしも必要となるというわけではなくても、ホストは代表的にクラスタ全体を1つのファイルに割り当てることになる。
ホストはファイルアロケーションテーブル(FAT)104を用いてファイルを追跡することができる。ファイルアロケーションテーブル(FAT)104は論理的ファイル構造を効果的に表わし、ファイルの各々に関連して論理的ファイル構造の中にどのようなクラスタが割り当てられているかをもまた示すものである。ホストは、ファイルアロケーションテーブル(FAT)104の更新によって論理的ファイル構造の保守管理を行う。例えば、新規ファイルが割り当てられると、ファイルアロケーションテーブル(FAT)104が更新されて、特に、どのようなクラスタが新規ファイル用として割り当てられているかが示される。また、ファイルあるいはディレクトリが削除されると、ホストはファイルアロケーションテーブル(FAT)104を更新する。クラスタは、更新の結果、ホストによって割当てが解除される場合もあることに留意されたい。例えば、ホストがファイル1を削除すると、更新されたファイルアロケーションテーブル(FAT)106は、ファイル1を格納するためにホストが割り当てていたクラスタA、B、Cを効果的に解除するという結果を生み出すことができる。
ホストの論理アドレス空間とは対照的に、フラッシュメモリコントローラの論理アドレス空間は“論理ブロック”に分割される。言い換えれば、コントローラ用の同じ論理アドレス空間102を論理アドレス空間103として表わすことも可能である。論理アドレス空間102と論理アドレス空間103の双方の基本単位はこの例ではセクタである。図1に示されているように、論理アドレス空間103は、論理ブロック1と論理ブロック2とを含む種々の論理ブロックに分割することも可能であり、個々の論理ブロックには、メモリアレイの単一ブロックに対応づけられる複数のデータセクタが含まれる。これらの論理ブロックは、例えば、単一の消去ブロックやメタブロックのような単位として消去することができるメモリブロックに対応づけられる。したがって、論理ブロックとメモリアレイのブロックとの間に1対1の対応関係が存在することになり、その場合、論理ブロック内のすべてのセクタは単一ブロックに格納される。例えば、論理ブロック1を対応づけてブロック2にするようにしてもよいなどである。要するに、ホストとコントローラとが異なる論理メモリ単位を使用することになる。ホストが論理アドレス空間を分割してクラスタにするのに対して、コントローラは論理アドレス空間を分割して論理ブロックにする。典型的には、アプリケーション用データおよびサブディレクトリエントリのみに対して割り当てられる論理アドレス空間にホストクラスタが適用されることにも留意されたい。さらに、別のシステムタ用として割り当てられた論理アドレス空間をホストがクラスタとして管理しなくてもよくなる。通常、第1のクラスタは論理アドレス空間の冒頭に位置しなくてもよいことにも留意されたい。したがって、クラスタと論理ブロックとは互いに一直線にならなくてもよくなる。
これに対して、従来方式のコントローラはホストが利用する論理構成を認知するものではない。従来方式では、コントローラは、ホストが使用する論理アドレス102を単に論理アドレス103に対応づけ、次いで、物理アドレス110にするにすぎない。これは、従来方式のコントローラが、ホストの論理データ構成や、ホストの処理がデータに対して及ぼしたかもしれない悪い結果を考慮していないことを意味する。例えば、新規ファイルが割り当てられると、論理的ファイルシステム104は更新されて、特に、どのようなクラスタが新規ファイル用として割り当てられたかが示されることになる。また、ファイルやディレクトリが削除されると、ホストは論理的ファイルシステム104の更新を行う。さらに、1以上のクラスタがホストにより割当てを解除される場合もある。例えば、ホストがファイル1を削除すると、更新されたファイルアロケーションテーブル106によって、ファイル1を格納するために前回割り当てられたクラスタA、B、Cの割当てをホストが効果的に解除したことが示される(すなわち、ファイル1は更新されたファイルアロケーションテーブル106にはもはや表されない)。ホストによってクラスタA、B、Cが割当てを解除され、消去が可能になるとはいえ、従来方式のコントローラによって、割当て解除済みのクラスタA、B、Cに対応する当該データの“ガーベッジコレクション”は行われなくなる。これは、データがメモリにそのまま持続して存在することを意味する。ガーベッジコレクションとは、旧いデータセクタを含む原ブロックから更新ブロックへ有効なデータセクタのコピーを行う処理である。すべての有効なデータセクタがコピーされると、原ブロックは消去用としてマークすることができる。典型的には、データは2以上のブロックから単一ブロックへ統合され、それによってさらに効率的にデータが格納され、メモリアレイ内の空間が解放されることになる。ガーベッジコレクション中にデータの不必要なコピーを行うことはこのような処理の効率を下げることになる。さらに、2つのブロック内のデータが1つのブロックに統合される際、ガーベッジコレクション中にブロックの更新が行われると、割当て解除済みのデータが複数回コピーされる可能性がある。
例示によってさらに説明すると、原ブロック120が図1に描かれている。説明を簡略にするために、原ブロック120には、ファイル1と2を割り当てるためにホストが使用する論理クラスタA、B、C、Dに対応するデータが含まれていると想定する。また、別の想定として、ホストがファイル1(クラスタA、B、C)の割当てが遅れて解除されたと想定する。この想定によって、原ブロック120には、すべての論理クラスタA、B、C、Dがまだ含まれていることになる。というのは、コントローラには、ファイル1がホストによって割当てを解除されたことを知る方法がないからである。これに対して、ホストは、原ブロック120のデータ部分Dの更新をコントローラに要求している。言い換えれば、ある時点において、ホストは、ファイル2を変更し、それによって、1以上の論理セクタに対応するデータ用として更新すべきものであることがわかっている論理アドレスを用いて、書き込み要求の送信を望むことが可能となる。コントローラは、ホストによりアドレス指定されたこれらの論理セクタがホストによってすでに書き込まれたセクタ(すなわち、クラスタD)に対応するものであるため、更新ブロック122が部分的に用いられていると判定する。というのは、原ブロック120内のデータの上書きは不可能であるからである。このことは、更新ブロック122が“閉じられる”(すなわち、原ブロック120内のすべてのデータがブロック122へコピーされる)までのしばらくの間、2つのブロックを用いて論理ブロックを表わすことができることを意味する。例えば、ガーベッジコレクションサイクル中に原ブロック120と更新ブロック122とを組み合わせ、それによって更新ブロック122が“原”ブロック122になり、前の原ブロック120が消去され、利用可能なメモリブロックのプールへ戻されるようにすることも可能である。いずれの場合にも、割当てを解除されたクラスタ(A、B、C)に対応するデータが更新ブロック122へ遅かれ早かれコピーされ、その結果更新ブロック122を閉じることが可能となり、原ブロック120を消去できるようになることに留意されたい。コントローラは、揮発性メモリや、論理データブロックへのメモリブロックの割当てを定義する不揮発性メモリ内のマッピングテーブルの保守管理を行うことも可能である。不揮発性メモリに格納されたデータのコピー処理にはかなりの量の時間とリソースとを必要とする。しかし、(割当て解除済みのクラスタA、B、Cなどの)割当てを解除されたデータのコピー処理を行う必要はなくなる。したがって、割当て解除済みのデータをコピーしなければ、システムパフォーマンスのさらなる改善が可能となる。一般に、広く利用されているアドレス規定に従いながらできるかぎりシステム性能の改善を図ることが望ましい。
したがって、代替の不揮発性メモリ管理技法は、有益なものとなる。
米国特許第5,043,940号 米国特許第5,172,338号 米国特許出願第2003/0109093号 米国特許第5,930,167号 米国特許第6,456,528号 米国特許第5,798,968号 米国特許第5,890,192号 国際公開特許出願第02/058074号 米国特許出願第10/750,155号 米国特許出願第10/749,831号
概括的に言えば、本発明は、(フラッシュメモリなどの)不揮発性メモリシステムにおいてデータ管理を行うための技法に関する。本発明の1つの態様によれば、コントローラはホストのファイルシステムに関する情報を利用することが可能となり、この情報は、ホストによって不揮発性メモリに格納されて、1以上のクラスタ(または1以上のクラスタ内の1以上のセクタ)が現在割り当てられているかどうかの判定が行われることになる。理解されるように、コントローラを用いて、ホストのファイルシステムに関する情報を利用して、特に、1以上のクラスタ(または1以上のセクタ)が、例えば、ガーベッジコレクションサイクル中にメモリ内の1つの記憶位置から別の記憶位置へコピーされないようにすることを保証することが可能となる。この結果、従来行われた(データのコピーなどの)いくつかの不必要な処理の回避が可能となり、システム性能が改善されることになる。
コントローラは、以前に割り当てられた1以上のクラスタが割当てを解除されたかどうかの判定を行うために、ホストがファイルアロケーションテーブル(FAT)に正常に書き込んだ情報を直接利用することが可能であることも理解できる。前述したのとは別に、コントローラは、ルートディレクトリ、サブディレクトリ並びにファイルアロケーションテーブル(FAT)に書き込まれた情報を利用して、例えば、データアロケーションテーブル(DAT)内のクラスタアロケーションに関するコントローラ自身の情報の生成および/または保守管理を行うことも可能である。しかし、本発明を実現して、ファイルアロケーションテーブル(FAT)に正常に格納された情報の利用が可能となることは明らかである。したがって、コントローラがコントローラ自身の情報の保守管理を行ったり、(データアロケーションテーブルなどの)何らかの追加のデータ構造を生成したりすることは不要となる。しかし、以下説明するように、データアロケーションテーブル(DAT)の保守管理を行うことによって、ファイルアロケーションテーブル(FAT)から得られる情報に単に依拠するよりも多くの利益を得ることが可能となる。したがって、例えばデータアロケーションテーブル(DAT)として実現できるデータ属性格納部(DAS)についてさらに説明することにする。
一般に、データ属性格納部(DAS)には、コントローラが不揮発性メモリの中で保守管理を行う1以上のデータ属性が含まれる。データ属性は、(割当て状態や割当て解除状態、サイズ、優先順位などの)データに関する有益情報を提供することができる。したがって、データ属性格納部(DAS)を用いてさらにインテリジェントにデータ管理を行うことが可能となる。本発明の別の態様は、データ属性格納部(DAS)を用いてデータの管理を行うための技法に関する。
1つの実施形態では、データ属性格納部(DAS)は割当て格納部(AS)として実現される。割当て格納部(AS)は、例えばテーブル、すなわち個々のデータクラスタ(ホストの論理単位)の割当て状態を示すデータアロケーションテーブル(DAT)として実現することができる。クラスタとは、論理的にデータを構成するためにホストが用いる論理単位を表わすものである。より良好なメモリ管理を達成するために、不揮発性メモリシステムのコントローラはデータアロケーションテーブル(DAT)にアクセスを行うことができる。したがって、データアロケーションテーブル(DAT)は、ホストが利用する論理構成とコントローラとの間の橋渡しを効果的に行うものである。こうすることによって、コントローラはホストの論理構成を効果的に理解することが可能となる。さらに、コントローラはホストの活動をモニタして、例えば、ホストがクラスタの割当てを解除されたかどうかの判定を行う。例えば、DOS対応システムのルートディレクトリ、ファイルアロケーションテーブル(FAT)およびサブディレクトリをモニタして、ホストによってデータのクラスタの割当て解除の検知を図ることが可能となる。例えば、ファイルまたはファイルの一部がホストによって削除された結果として、ルートディレクトリ、ファイルアロケーションテーブル(FAT)あるいはサブディレクトリの変更が生じる場合がある。いずれの場合にも、1以上のデータクラスタの割当て解除が検知されると、コントローラはデータアロケーションテーブル(DAT)を更新する。この結果、データアロケーションテーブル(DAT)はデータに関する更新情報を提供できることになる。さらにインテリジェントなデータ管理のためにこの情報の利用が可能となる。例えば、ガーベッジコレクション中にデータのコピーを行うべきかどうかを判定するために割当て解除状態を利用することができる。割当てが解除されたデータのコピーは行う必要がない。この結果、従来方式で行われるいくつかの不必要な処理を回避することが可能となり、システム性能を改善することが可能となる。
別の実施形態では、ホストによってFATまたはDASに格納された情報を利用して、ホストが送信したデータの一部をどのように格納するのが望ましいかを決定することができる。どこか別の場所からデータをコピーすることによって、非シーケンシャルに受信したデータを非シーケンシャルに格納したり、シーケンシャルに格納したりして、何らかのギャップを受信したデータに充填するように図ることも可能である。このようなシーケンシャルな格納が利点を有する場合として、ホストが、利用可能な(未使用のあるいは割当てを解除された)(クラスタなどの)論理アドレス空間の一部へ書き込みを行う場合がある。データのこのような書き込みは、ホストが新しいデータを格納していることを示すものであり、非シーケンシャルにデータを格納する何らかの理由を示すものではない。ホストが送信するデータセクタの論理アドレスを未使用クラスタの論理アドレス範囲と比較することによって、コントローラは、ホストが次の未使用クラスタに対して書き込みを行っているかどうかを判定することが可能となる。この判定に基づいて、コントローラはセクタ用の格納方式を選択することも可能である。
1つの実施形態では、ホストが次の未使用クラスタへの書き込みを行っていることがホストから受信した単複のセクタによって示されているかどうかに関して判定が行われる。ホストが次の未使用クラスタへの書き込みを行っていれば、メモリアレイ内のどこか別の場所からコピーされたデータによって、データ内のいずれのギャップも満たされた状態で、データはシーケンシャルな形でブロックに書き込まれていることになる。ホストが次の未使用クラスタへの書き込みを行っていなければ、データをシーケンシャルにあるいは非シーケンシャルに格納すべきかどうかを判定するために追加の基準を考慮してもよい。例えば、セクタ間の論理アドレス内でジャンプしてホストからセクタを受信する場合、ジャンプのサイズによって格納方式を決定することができる。ジャンプが小さなものであれば、結果として生じるギャップはコピーされたデータで満たすことも可能であり、さらに、シーケンシャルなフォーマットで更新済みデータを保持するようにしてもよい。更新ブロックがシーケンシャルで、かつ、満たされるように近接している別の例では、更新ブロックをデータで満たして、非シーケンシャルに受信したセクタに書き込みを行うのではなく、更新ブロックをシーケンシャルに保つようにすることも可能である。不揮発性メモリ内のFATのコピーから直接取得した情報に基づいて格納方式を選択したり、DAS内の、または、FATから導き出された類似の構造内の情報に基づいて格納方式を選択したりすることも可能である。
方法、システム、デバイス、装置あるいはコンピュータ可読媒体として含まれる本発明は多くの態様で実現することが可能である。本発明の他の態様並びに利点は、本発明の原理を例示する添付図面と関連して行う以下の詳細な説明から明らかになる。
同じ参照番号によって類似の要素が参照される添付図面を例示として本発明を示すが、これは本発明を限定するものではない。
本発明は、(フラッシュメモリなどの)不揮発性メモリシステムにおいてデータを管理するための技法に関する。本発明の1つの態様によれば、コントローラはホストのファイルシステムに関する情報を利用することが可能であり、この情報は、1以上のクラスタ(1以上のクラスタ内の1以上のセクタ)が現在割り当てられているかどうかを判定するために、ホストによって不揮発性メモリに格納されたものである。理解されるように、コントローラは、ホストのファイルシステムに関する情報を利用して、特に、例えば、ガーベッジコレクションサイクル中などに1以上のクラスタ(またはクラスタ内の1以上のセクタ)が、メモリ内の1つの記憶位置から別の記憶位置へコピーされないことを保証することができる。この結果、従来方式で行われる(データをコピーするなどの)いくつかの不必要な処理を回避することが可能となり、システム性能を改善することが可能となる。
1以上の予め割り当てられたクラスタが割当てを解除されたかどうかを判定するために、ファイルアロケーションテーブル(FAT)にホストが正常に書き込んだ情報をコントローラが直接利用できることも理解できる。前述したのとは別に、コントローラは、ルートディレクトリ、サブディレクトリおよびファイルアロケーションテーブル(FAT)に書き込まれた情報を利用して、例えば、データアロケーションテーブル(DAT)の中でファイルアロケーションテーブル(FAT)自身のクラスタアロケーションに関する情報の生成および/または保守管理を行うようにすることが可能となる。しかし、本発明を実現して、ファイルアロケーションテーブル(FAT)に正常に格納された情報を利用できることは明らかである。したがって、コントローラがコントローラ自身の情報の保守管理を行ったり、(データアロケーションテーブル(DAT)などの)何らかの追加のデータ構造を生成したりすることは不要となる。しかし、以下説明するように、データアロケーションテーブル(DAT)の保守管理を行うほうが、ファイルアロケーションテーブル(FAT)から得られる情報に単に依拠する場合よりも多くの利点を提供できることになる。したがって、例えばデータアロケーションテーブル(DAT)として実装できるデータ属性格納部(DAS)についてもさらに例示によって説明することにする。
一般に、1以上のデータ属性を含むデータ属性格納部(DAS)の保守管理はコントローラによって不揮発性メモリの中で行うことが可能である。データ属性は、(割当て状態や割当て解除状態、サイズ、優先順位などの)データに関する有益情報を提供することができる。したがって、データ属性格納部(DAS)を用いてさらにインテリジェントにデータ管理を行うことが可能となる。本発明の別の態様は、データ属性格納部(DAS)を利用するデータ管理のための技法に関する。
1つの実施形態では、データ属性格納部(DAS)は割当て格納部(AS)として実装される。割当て格納部(AS)は、例えば、テーブルとしてあるいはデータの個々のクラスタ(ホストの論理単位)の割当て状態を示すデータアロケーションテーブル(DAT)として実装することができる。クラスタとは、ホストがデータを論理的に構成するために使用する論理単位を表わすものである。より好適なメモリ管理を行うために、不揮発性メモリシステムのコントローラはデータアロケーションテーブル(DAT)にアクセスすることができる。したがって、データアロケーションテーブル(DAT)は、ホストが利用する論理構成と、コントローラとの間での橋渡しを効果的に行うことになる。こうすることによって、コントローラはホストの論理構成を効果的に理解できることになる。さらに、コントローラはホストの活動をモニタして、例えば、ホストがクラスタの割当てを解除したかどうかの判定を行う。例えば、ルートディレクトリ、ファイルアロケーションテーブル(FAT)およびDOS対応システムのサブディレクトリをモニタして、データのクラスタの割当て解除をホストが検知するように図ることも可能である。例えば、ファイルまたはファイルの一部がホストにより削除された結果として、ルートディレクトリ、ファイルアロケーションテーブル(FAT)あるいはサブディレクトリの変更が生じる場合がある。いずれの場合にも、データの1以上のクラスタの割当て解除が検知されると、コントローラはデータアロケーションテーブル(DAT)の更新を行うことになる。この結果、データアロケーションテーブル(DAT)はデータに関する更新された情報を提供できることになる。この情報を利用して、さらにインテリジェントなデータ管理が行われることになる。例えば、割当て解除状態を利用して、ガーベッジコレクション中にデータをコピーすべきかどうかを判定することができる。割当てを解除されたデータのコピーを行う必要はない。その結果、従来方式で行われるいくつかの不必要な処理を回避することが可能となり、システム性能を改善することが可能となる。
図2A〜図8を参照しながら以下本発明の実施形態について論ずることにする。しかし、当業者であれば容易に理解できるように、これらの図面によって本願明細書で行う以下の詳細な説明は、あくまで説明のためのものであって、本発明はこれらの限定された実施形態の範囲を越えて拡大するものである。例えば、この説明はフラッシュメモリに言及するものではあるが、別の種類の不揮発性メモリを使用することも可能である。別の種類の不揮発性メモリとしては、磁気抵抗RAM(MRAM)、強誘電体RAM、および(オボニクス単一化メモリ (Ovonics Unified Memory) すなわちOUMとしても公知の)相変化メモリが含まれる。
前述したように、コントローラはホストのファイルシステムに関する情報を利用することが可能であり、この情報はホストよって不揮発性メモリに格納され、1以上のクラスタ(またはクラスタ内のセクタ)が現在割り当てられているかどうかの判定が本発明の1つの態様に従って行われる。コントローラは、ホストのファイルシステムに関する情報を利用して、特に、ガーベッジコレクションサイクル中にメモリ内の1つの記憶位置から別の記憶位置へ1以上のクラスタ(またはクラスタ内のセクタ)がコピーされないようにすることを保証することができる。例示によってさらに説明すると、本発明の1つの態様に基づくコピー管理方法(250)が図2Aに描かれている。最初に、ホストは、不揮発性メモリデバイスを使用して、ファイルシステムが利用する情報を格納する(252)。次に、コントローラは、ホストが格納した情報を利用して(252)、1以上のクラスタ(または1以上のクラスタ内の1以上のセクタ)が何らかの有効なファイルに現在割り当てられているかどうかの判定を行う(254)。当業者であれば解るように、1以上のクラスタ(または1以上のクラスタ内の1以上のセクタ)が、何らかの有効なファイルに現在割り当てられているかどうかを判定する(254)ために、ファイルアロケーションテーブル(FAT)にホストが正常に書き込んだ情報をコントローラは直接利用することができる。これとは別に、コントローラは、ホストによってデバイスへ書き込まれた一続きの論理セクタと一緒に、ルートディレクトリ、サブディレクトリおよびFAT内の書き込まれた情報を利用して、クラスタアロケーションに関するコントローラ自身の情報を生成し、この情報の保守管理を行うことを意図することも可能である。例えば、コントローラは、コントローラ自身のデータアロケーションテーブル(DAT)の生成および/または保守管理を行うことが可能である。いずれの場合にも、コントローラは、現在割り当てられていないと判定された(254)任意のクラスタ(またはクラスタ内のセクタ)が、メモリ内でのガーベッジコレクション処理中に1つの記憶位置から別の記憶位置へコピーされないことを保証する(256)。言い換えれば、クラスタ(またはクラスタ内のセクタ)が現在割り当てられていると判定された場合には(254)、このクラスタ(またはクラスタ内のセクタ)は単にコピーされることになる。コピー管理方法(250)は後続の処理を終了させる(256)。
前述したように、データアロケーションテーブル(DAT)の保守管理を行うステップは、単にファイルアロケーションテーブル(FAT)から得られる情報に依拠する以外のさらに多くの利点を提供することができる。当業者には明らかなように、FATは、クラスタが割当て解除されたことを必ずしも示すというわけではない場合がある。例えば、クラスタエントリのチェーンが、ディレクトリ内のいずれのファイル参照符号ともリンクされることなくFATの中に存在する場合がある。
ファイルが削除されると、ファイルのディレクトリエントリはホスト内のファイルシステムにより修正されて(ファイル名の第1の文字が0xE5へ変更される)、ファイルが削除されたことが示される。しかし、FAT内のクラスタエントリは、あたかもクラスタエントリがまだファイルに割り当てられているかのような状態にこのクラスタエントリの連鎖情報を保持することも可能である。クラスタを再使用するための、および、未使用を示す“0x0000”へFATクラスタエントリを更新するためのアルゴリズムとして、典型的には、ホストにおいて特定のファイルシステムを実現する機能がある。DATは、ディレクトリ情報またはサブディレクトリ情報の変更を利用して、クラスタ属性が、ホストファイルシステムに依拠することなく、クラスタの現在の割当て状態をファイルに反映することを可能にすることができる。環境によっては、DATの実施構成のほうが、単にFATに依拠するよりも安全である場合さえある。クラスタの割当て状態を確かめるために単にFATを利用する場合、ホストがファイルの終了時にFATを更新するまで、メモリシステムが、ファイルへのクラスタの割当てについて認知していない場合もある。したがって、すでに書き込まれているファイルの一部をFATに書き込みを行う以前にホストが修正を行う場合、まだ割当てを解除された状態を有するいくつかの有効なデータがコントローラによって破棄される場合もある。DATの実施構成はこの問題点を効果的に処理することができる。
さらに、本発明の原理に従って提供されるデータアロケーションテーブル(DAT)は、FATが通常提供していない特徴も提供することができる。例えば、FATはクラスタ用の単一の割当て状態を定義するものである。これに対して、例えば、1つのセクタあるいは1グループのセクタに対する割当て状態の分析をクラスタ内で可能にすることによって、マルチビット状態の保存を許可できるようにDATを実装することが可能である。こうすることによって、コントローラは、第1のファイルの最後のクラスタのみが部分的に使用されるファイル間で、割り当てられていないセクタのコピーを避けることが可能となる。DATが提供できる利点および追加の特徴を示しながら、以下説明する実施形態では、(DATなどの)データ属性格納部(DAS)においてコントローラ自身の情報の保守管理を行うコントローラをさらに例示する。しかし、本発明の範囲と精神から逸脱することなく、コントローラが、単にFATに依拠して、ホストが使用する種々のファイルと関連づけられた割当て状態を判断できることは明らかである。
図2Bは、本発明の1つの実施形態に従う計算環境200を描く図である。この計算環境200では、フラッシュメモリコントローラ202はホストアプリケーション204の(フラッシュメモリ206などの)不揮発性メモリへのアクセスを可能にする。言い換えれば、ホストアプリケーション204は、フラッシュメモリ206へのインターフェイスとしてフラッシュメモリコントローラ202を利用する。したがって、ホストアプリケーション204は、フラッシュメモリコントローラ202が(書き込み、読み出しなどの)種々のアクセス処理をフラッシュメモリ206上で実行するように要求することができる。ホストアプリケーション204はデータのアドレス指定を行うために論理アドレス空間を利用することができる。フラッシュメモリコントローラは、ホストの論理アドレス空間を対応づけて、コントローラの論理アドレス空間の中へ入れ、ホストの論理アドレス空間はフラッシュメモリ206上の物理アドレス空間に順に対応づけられる。
さらに、フラッシュメモリはデータ属性格納部(DAS)208の構築と保守管理とを行うことができる。DAS208には、フラッシュメモリ206に格納されたデータと関連づけられた種々の属性に関する情報が含まれる。例えば、データ属性格納部(DAS)208に格納されたデータ属性はデータの割当て状態、割り当てられたデータのサイズ、優先順位を含むものであってもよい。一般に、データ属性格納部(DAS)208は、任意の望ましいデータ属性を格納でき、また1以上のビットの情報を有する属性を表わすこともできる。フラッシュメモリコントローラ204は、ホストアプリケーション204の活動をモニタするデータ属性モニタ部208を設けるものであることに留意されたい。データ属性モニタ部208は、フラッシュメモリ206に格納されたデータに関してホストアプリケーション204の活動を解釈することができる。このことは、データ属性モニタ部208がどこでデータ属性を変更すべきかを判断し、DAS208の中でデータ属性を適宜更新できることを意味する。
例示によってさらに説明すると、図3Aは本発明の1つの実施形態に従ってデータ属性格納部(DAS)208を描く図である。この実施形態では、データ属性208はデータアロケーションテーブル(DAT)308として実現される。したがって、DAT308は不揮発性メモリシステムの種々のデータ部分の割当て状態/割当て解除状態に関する情報を提供する。理解されるように、これら種々のデータ部分は論理データ構成、すなわち、ホストアプリケーション204によって利用される論理データ構成に従って構成することができる。前述したように、ホストアプリケーションはデータを構成して、クラスタと呼ぶことができるホスト論理単位に変えることも可能である。DAT308はこれらのクラスタを表わす単位に分割することができる。
このことは、ホストアプリケーションが利用する論理クラスタの各々をDAT308の中でエントリとして表わすことができることを意味する。例えば、クラスタ1は、第1のエントリによって、クラスタ10は第10のエントリによって表わすことができる等々となる。さらに、DAT308の個々のエントリはクラスタの割当て状態/割当て解除状態を示すことができる。例えば、1ビットを用いて論理クラスタが現在割り当てられているか、あるいは割当てが解除されているかをDAT308の個々のエントリが示すようにすることができる。数ビットを用いて、属性に関するさらに多くの情報および/またはいくつかの属性に関する情報を示すことができることに留意されたい。いずれの場合にも、DAT308によってデータのより良好な管理ができることになる。例えば、データ部分の割当て状態/割当て解除状態に基づいて、フラッシュメモリコントローラは、ホストアプリケーションにより割当てが解除されたデータのコピーを避けるようにすることも可能である。
さらに例示によって説明すると、図3Bは、本発明の1つの実施形態に従うDAT208のエントリ302を描く図である。テーブルエントリ302は4ビットを含み、その場合、第1のビット(ビット0)は割当て状態/割当て解除状態を示すことができ、3つの他のビットはまとめて、どのくらいの量のデータが割り当てられているか(半分を示す“100”および満杯を示す“111”など)を示すことができる。同様に、さらに多くのビットを利用してクラスタの別の属性に関する情報を示すことができる。例えば、4ビットによって個々のクラスタを表わすことが可能であり、その場合1ビットは割当て解除状態を表わし、3ビットは、クラスタのどのような部分が割当てを解除されているかを示すことになる。当業者には明らかなように、多数の他の方法でクラスタ用の多ビットを定義することも可能である。例えば、極性(または順序)を尊重してもよいし、あるいは(6、8、12などの)より多くのビットを使用してもよい。前述したのとは別に、“サブクラスタ”のセクタ番号を示すために、完全に割当てを解除されたすべてのビットを割り当てることが可能であり、完全に割り当てられたクラスタを例えばマークしてすべてのビットをゼロにセットすることも可能である。
前述したように、データ属性モニタ部210はホストアプリケーション204の活動をモニタするものである。このモニタに基づいて、データ属性モニタ部259はデータ属性格納部(DAS)208を更新することができる。図2に示されているように、ホストアプリケーション204の活動を解釈するために、データ属性モニタ部210は、ホストが理解し、使用するデータの論理構成を実現する必要がある。例示によってさらに説明すると、図3Cは、ホストの論理データ構成を描く図であり、この論理データ構成は本発明の1つの実施形態に従うコントローラによって利用することができる。図3Cに示されているように、ホストは、論理アドレス空間を分割して、システム310とユーザ空間312にすることができる。システムデータ310は、ファイルアロケーションテーブル(FAT1)と、FAT2(FAT1のコピー)と、ルートディレクトリ情報とを含むことが可能であり、これらすべてをシステムデータ310として格納してもよい。ユーザ空間はサブディレクトリに関する情報を含むことも可能である。データ属性モニタ部210は、ホストアプリケーション202が割当てを解除した(例えば、ファイルを除去したり、ファイルを短くしたりした)かどうかを判定するために、FAT1、FAT2、ルートディレクトリおよびサブディレクトリをモニタすることも可能である。データのモニタについても図6を参照しながら以下で説明する。
しかし、次に図4を参照しながら、フラッシュメモリに格納されたデータに関する情報をフラッシュメモリコントローラに提供する方法400が本発明の1つの実施形態に従って描かれている。データに関する情報は、フラッシュメモリコントローラによって利用され、例えば、(ガーベッジコレクションなどの)データの保守管理中にデータについての決定を通知することが可能となる。方法400は、例えば、図2のフラッシュメモリコントローラ202によって利用することができる。
最初に、フラッシュメモリ記憶装置のコントローラ用のデータ属性格納部(DAS)が生成される(402)。データ属性格納部(DAS)は、フラッシュメモリ記憶装置内の複数のデータ部分の各々に対して1以上の属性を提供する。データにアクセスするためにコントローラを使用するホストの活動がモニタされる(404)。次に、モニタ(404)に基づいて、フラッシュメモリ記憶装置のデータ部分に関連する属性を更新すべきかどうかが判定される(406)。したがって、フラッシュメモリ記憶装置の少なくとも1つのデータ部分に対する更新を行うべきであると判定された(406)場合、少なくとも1つのデータ部分に関連する少なくとも1つの属性が更新される(408)。更新(408)後、ホストの活動はモニタされる(404)。その後、方法(400)は、データのモニタがそれ以上所望されなくなったり、必要とされなくなったりするまで、前述したのと同様に進行することができる。
前述したように、データ属性格納部(DAS)を設け、フラッシュメモリコントローラによってこのデータ属性格納部を利用して、(ガーベッジコレクションなどの)保守管理処理を実施することができる。図5は、本発明の1つの実施形態に従うフラッシュメモリの保守管理方法(500)を描く図である。最初に、フラッシュメモリ記憶装置に格納されたデータの一部に対してフラッシュメモリコントローラが保守管理処理を実施する必要があるかどうかの判定が行われる(502)。コントローラが保守管理処理を実施する必要がある旨が判定された(502)場合、データ属性格納部(DAS)のどのような部分が、保守管理の対象となるデータ部分に関する情報を提供するかが判定される(504)。したがって、データ部分に関連する少なくとも1つの属性がデータ属性格納部(DAS)から読み出される(506)。最後に、少なくとも1つのデータ属性に基づいて処理が実行される(508)。少なくとも1つのデータ属性により提供された情報に基づいて、保守管理処理をさらにインテリジェントに実行することができると理解すべきである。
図6は、本発明の1つの実施形態に従うモニタ方法600を描く図である。モニタ方法(600)は、図4に例示されているモニタ処理と更新処理(すなわち、図4の処理404、406、408)中に行うことができるいくつかの処理例を描く図である。モニタ方法600はフラッシュメモリコントローラによって実行することができる。最初に、書き込み処理を求める要求が受信されたかどうかが判定される(602)。次に、書き込み処理が指定アドレス空間のアドレス指定を行うかどうかが判定される。例えば、この指定アドレス空間には、DOS環境の中で動作するホストがアドレス指定を行う論理アドレス空間のFAT1、FAT2、ルートディレクトリおよびサブディレクトリを含むことができる。ルートディレクトリ内のおよび別のサブディレクトリ内の情報からサブディレクトリ用の指定アドレス空間を決定することも可能である。一般に、指定アドレス空間とは、データが(例えば、ファイルのディレクトリの除去や修正、ファイルの編集などの)割当てを解除された処理であることをホスト活動が示すことができるアドレス空間を表わすものである。いずれの場合にも、書き込み処理が指定アドレス空間に対するものであると処理604時に判定された場合、指定アドレス空間に現在格納されているデータが読み出される(606)。次に、書き込み処理が実行される(608)。書き込み処理が実行された(608)後、以前に読み出された(606)古いデータは、書き込まれた(608)データと比較される(610)。したがって、データの変更が存在するかどうかが判定される(612)。データの変更が存在しないと判定された場合(612)、書き込み処理要求が受信されたかどうかが判定される(602)。
前述したのとは別に、更新済みデータが古いデータから別の記憶位置に書き込まれるフラッシュメモリシステムにおいて、前回の読み出しを行う(606)ことなく、古い記憶位置と新しい記憶位置とに位置するデータ間で直接の比較(610)を行うことが可能となる。
しかし、データに対する変更が検知されたと判定された(612)場合、この変更は解釈されて(614)、1以上のクラスタが割当てを解除されたかどうかの判定が行われる(616)ことになる。クラスタが割当てを解除されていないと判定された場合、書き込み処理要求が受信されたかどうかが判定される(602)。しかし、1以上のクラスタが割当てを解除されたと判定された(616)場合には、データアロケーションテーブル(DAT)内での1以上のクラスタの状態が変更されて、“割当て解除済み”状態を示すようになることに留意されたい。したがって、指定アドレス空間内のデータの変更がデータの割当て解除を結果として生じたと知覚される(616)と、モニタ方法600によってデータアロケーションテーブル(DAT)の効果的な更新が行われる(618)。
一方、書き込み処理が指定アドレス空間に対するものではないと判定された(604)場合、書き込み処理が実行される(620)。さらに、書き込まれたクラスタが特定され(622)、その結果、1以上の特定したクラスタの状態を“割当て済み”にセットできる。理解されるように、この処理は、無指定のアドレス空間において書き込み処理を実行したとき、特定されたクラスタを表わすDATのエントリが“割当て済み”にセットされることを保証するものである。DAT内で表わされるクラスタの状態を“割当て済み”にセットした(624)後、書き込み処理要求が受信されたかどうかの判定を行う(602)ことができる。
前述したように、データ属性格納部(DAS)を例えば利用して、保守管理処理を実施することができる。例示によってさらに説明すると、図7は、本発明の1つの実施形態に従うガーベッジコレクション方法700の例を描く図である。理解されるように、ガーベッジコレクション方法700は、データアロケーションテーブル(DAT)を利用して、更新処理中にブロックのより良好な更新を可能にするものである。最初に、更新ブロックを閉じるべきかどうかが初めに判定される(702)と、更新ブロックのすべてのセクタが書き込まれたかどうかの判定が行われる。更新ブロックのすべての論理セクタが書き込まれた場合、原ブロックが更新ブロックにより効果的に置き換えられることになる。したがって、更新ブロックが原ブロックとしてマークされ(706)、前の原ブロックは消去され(708)、その結果、この原ブロックは後で使用できることになる。
一方、更新ブロックのすべてのセクタが書き込まれなかったと判定された(702)場合、書き込まれなかったセクタに対応する論理セクタが特定される(710)。次いで、特定された論理セクタ(710)がクラスタへ対応づけられる(712)。クラスタはデータアロケーションテーブル(DAT)の中でチェックされる(714)。したがって、特定されたクラスタのすべて(710)が割当てを解除されたことをDATが示すかどうかが判定される(716)。すべてのクラスタの割当て解除が行われたことがDATによって示された場合、更新ブロックは原ブロックとしてマークされ(706)、古いブロックは消去される(708)。
すべてのクラスタが割当てを解除されたことがDATによって示される(716)と、1以上のクラスタがコピーされなくなることに留意すべきである。1以上のクラスタがまだ割り当てられていることがDATテーブルによって示された場合にのみ、割り当てられた状態のままになっているデータは更新ブロックへコピーされる(718)。いずれの場合にも、更新ブロックをすぐに閉じたり、更新ブロックがいっぱいになったとき、後で閉じたりすることができることに留意すべきである。更新ブロックにマークをつけ(706)、前の原ブロック(古いブロック)を消去すること(708)はできるが、割り当てられていないデータの不必要なコピーは避けられることになる。ガーベッジコレクション方法(700)は消去(708)の後終了する。
理解されるように、本発明の1つの実施形態に従って、フラッシュメモリを用いてデータ属性格納部(DAS)を実現することができる。例示によってさらに説明すると、図8は本発明の1つの実施形態に従うデータアロケーションテーブル(DAT)800を描く図である。メモリ部分801を利用してデータアロケーションテーブル(DAT)800が実現される。メモリ部分801は単位として消去可能なブロックであってもよい。メモリ部分801はデータアロケーションテーブル(DAT)800を表わすのに必要とされるメモリよりも大きくなる。個々のセクションは1以上のページに配置されるものであってもよく、その場合ページはプログラミングメモリの最小単位となる。
図8に示されているように、データ属性格納部(DAS)800は、複数のセクション、すなわち、当初メモリ部分801の冒頭に書き込まれる原セクションDAS1(802)、DAS2(804)、DAS3(806)、DAS4(808)に分割してもよい。これら原セクションの各々は、論理的にデータを構成するためにホストが使用する複数のクラスタを表わすことができる。クラスタと関連づけられたデータ属性の更新を行う必要があるとき、データ属性格納部(DAS)800の適当な原セクション用の更新セクションに書き込みを行うことによって、データ属性格納部(DAS)800の対応するセクションを更新することができる。この更新セクションは最後の原セクションすなわちDAS4(808)の後に書き込まれる。例えば、原DAS3(806)は新たなセクション816に書き込みを行うことによって更新される。同様に、原DAS1(802)を更新する必要があるとき、新たなセクション812に書き込みを行うことができる。原DAS4(818)を表わすなどのために新たなセクション818の書き込みが行われる。
さらに、インデックス方式を用いてデータアロケーションテーブル(DAT)800の保守管理を行うことができる。図8に示されているように、メモリの個々のセクションにはインデックス部分(Ii−U)が含まれる。最後のエントリ(806)のこのインデックス部分はデータ属性格納部(DAS)800の最新のセクションを参照する。このことは、インデックス820、830、840、850がそれぞれデータ属性格納部(DAS)800の第1、第2、第3および第4の最新のセクション(DAS1、DAS2、DAS3、DAS4)を指すことを意味する。例えば、メモリ部分801がほぼいっぱいになったとき、原セクション(DAS1、DAS2、DAS3、DAS4)として最新のセクションが再生されるように、メモリ部分801のガーベッジコレクションを行うことができる。
データ属性格納部(DAS)の利用が任意の利用となるように本発明を実施することができることも留意すべきである。例えば、データ属性格納部(DAS)の利用は、ホストの実際のデータ論理構成が(DOSなどの)特定の動作環境用として予想されるデータ構成に従うことを保証するように、検証プロセスが決定するシステムコンプライアンスに依存するようにすることも可能である。前述したのとは別に、ホストによるコマンドの送信によってデータ属性格納部(DAS)の利用を可能にして、データ属性格納部(DAS)が特定の動作環境用のデータ構成に従うものであることを示すようにすることができる。割り当てられたクラスタの割当てが解除されるとすぐに、データアロケーションテーブル(DAT)がクラスタ(またはクラスタ内のセクタ)の状態を変更する必要はないことに留意すべきである。言い換えれば、クラスタが割当てを解除されたとき、クラスタがまだ割り当てられていると信じることは、深刻な問題をもたらすものではない。したがって、割当て状態を割当て解除にセットすることが可能となる。理解されるように、異なる時刻に1つずつ行うのではなく、一度にクラスタグループに対する割当てが解除となるように割当て状態をセットすることによって、システム性能をさらに改善することが可能となる。一方、当業者であれば理解できるように、有効な、割当て済みのクラスタ用の状態情報は常に厳密に正確で、かつ、最新のものであることが望ましい(すなわち、割当て済みのクラスタは割り当てられたものとして常にマークを施すことが望ましい)。割当て済みのクラスタに正確にマークを施すことを保証するために、ホストがクラスタへデータを書き込む度に、割当て状態クラスタが割当て済みに自動的にセットされるようにしてもよい。データアロケーションテーブル(DAT)内の情報をマッピングテーブル内の情報と同時刻に更新して、論理データブロックへの物理メモリブロックの割当てを定義し、最近書き込まれたセクタあるいはクラスタへ保存するようにしてもよいことも理解できる。
さらに、データ属性格納部(DAS)を他の多くの保守管理処理用として利用できることが理解できる。例えば、データ属性格納部(DAS)は、ブロックに対応するすべてのクラスタが割当てを解除されたことを示すと、ブロックを消去することができる。この消去は、例えばバックグラウンドとして実行され、性能のさらなる改善が図られることになる。
別の実施形態では、ホストによって不揮発性メモリに格納された情報を利用して、どのようにホストから受信したデータを格納すべきであるかを決定することができる。1つの例では、ホストがFATに格納した情報とディレクトリとを利用して、シーケンシャルにあるいは非シーケンシャルに(カオス的に)データを格納すべきかどうかの判定を行うことができる。
或る種のメモリシステムでは、データがシーケンシャルであるか非シーケンシャルであるかに応じて、ホストから受信したデータを格納するのに異なる格納方式が利用される。例えば、2003年12月30日出願の“不揮発性メモリおよびブロック管理システムに関する方法”という米国特許出願第10/750,155号(特許文献9)は、その全体が本願明細書において参照により援用されているものであるが、この特許出願には、ホストによって非シーケンシャルに送信されるデータを処理する或る技法について記載されている。特に、シーケンシャルな更新をシーケンシャルな更新ブロックに割り当て、その一方で、データを任意の順序に格納できるカオス更新ブロックに非シーケンシャルな更新を割り当てるようにすることができる。カオス更新ブロックへのデータの格納によって、或る種類のデータ更新に利点が生じる一方で、別の種類のデータ更新にとっては非効率を引き起こす原因になる場合もある。この理由のために、米国特許出願第10/750,155号(特許文献9)には、所定の基準が満たされたシーケンシャルな方法で、或る非シーケンシャルに受信したデータを格納するための技法ついて記載されている。本発明の実施形態では、非シーケンシャルにデータを受信したとき、不揮発性メモリへデータをシーケンシャルに書き込むか、非シーケンシャルに書き込むかの判定基準は、不揮発性メモリにホストが格納した情報の分析から決定できる。2003年12月30日出願の“大きな消去ブロックを含む不揮発性メモリシステムの管理”という米国特許出願第10/749,831号(特許文献10)には、不揮発性メモリアレイに格納するためにホストが送信するデータの管理のための追加の方法について記載されている。この特許出願は、その全体が本願明細書において参照により援用されている。特に、ホストが非シーケンシャルに更新するデータの管理方法について説明する。所定の判断基準に従うデータに対して様々な指定ブロックを使用することも可能である。
本発明の実施形態では、FAT、ルートディレクトリおよびサブディレクトリ(または不揮発性メモリに格納されている同様のホストデータ)と、ホストにより書き込まれている(セクタなどの)データ部分の論理アドレスとを比較したり、DASに格納された情報のような引き出された情報と比較したりして、書き込み中のデータ部分が次の未使用クラスタ内に論理アドレスを含んでいるかどうかの判定を行うようにしてもよい。データ部分が次の未使用クラスタ内にアドレスを含んでいれば、それは、ホストが次の利用可能な記憶位置に新しいデータを格納していることを示すことになる。このような格納パターンでは、シーケンシャルにデータを格納し、次いで、非シーケンシャルな順序でデータを格納するのではなく、不揮発性メモリにすでに格納されているデータをコピーし、それから、シーケンシャルに格納されている記憶位置へ後でデータをコピーすることによって、更新ブロック内のいずれかのギャップを満たすことができると好都合な場合がある。
図9Aは、FATテーブル900の1例を示す。個々のクラスタ0〜8は、ファイル内の次のクラスタを示すFATテーブル内にエントリを有する。したがって、クラスタ0用のエントリは、このファイル用の次のクラスタがクラスタ1の中にあることを示す“1”になる。クラスタ1内のエントリは“5”であり、次のクラスタがクラスタ5であることを示している。クラスタ5内のエントリは“6”であり、次のクラスタがクラスタ6であることを示している。クラスタ6内のエントリは、“ファイルの最後”すなわちクラスタがそれ以上このファイル用のデータを含まないことを示す“EOF”である。別のファイルがクラスタ3と4とに同様に格納される。クラスタ4、7および8は、“未使用”すなわち割当てを行わないように指定する。これは、例えば、ファイルが旧いものになっているホストによる割当て解除の結果である場合もある。ホストによるこの割当て解除は、不揮発性メモリの中でデータが消去されることを必ずしも意味するものではないことに留意すべきである。というのは、ファイルの格納に用いる論理アドレス範囲が新しいデータの格納用として単に利用できるようになるにすぎないからである。旧いデータは、将来の或る時点まで不揮発性メモリに物理的に格納された状態のまま残る場合もある。旧い制御情報を含むクラスタが割当てを解除される可能性もある。やはりホストによって不揮発性メモリの中に格納されたルートディレクトリやサブディレクトリがファイルの第1のクラスタを示す場合もある。
図9Bは、ルートディレクトリとサブディレクトリとに含まれる情報と共にFAT900から導き出されるDAT910を示す。DAT910には、クラスタが割り当てられているか、未使用であるかを示す個々のクラスタ用のエントリが含まれる。追加データは、前述したようにDAT910に格納することも可能である。DATの保守管理を行って、DATに格納された情報が、FATおよびディレクトリ内の情報よりも最新の情報となるようにすることもできる。ホストが格納用の新しいデータを送信するとすぐに、更新されたFATまたはディレクトリ情報がホストによって書き込まれないうちにDATを更新することも可能である。同様に、DAS内の他の情報の保守管理を行って、最新のものにするように図ることも可能である。
図9Cは、FAT900の論理アドレス範囲の一部用のセクタとクラスタとの間の対応関係を示す。この例では、1つのクラスタの中に4つのデータセクタが含まれている。異なるセクタ番号を有するクラスタを使用することも可能である。典型的には、クラスタには4〜64個の間のセクタが含まれる。クラスタ4にはセクタX、セクタX+1、セクタX+2およびセクタX+3が含まれている。ホストによる論理アドレス範囲の割当てが一般にクラスタ毎のベースで行われるのに対して、メモリコントローラは一般にセクタ内のデータを処理するものである。一般に、クラスタは単一の単位として割り当てられるが、これは、たとえクラスタの論理アドレス範囲全体がデータの格納用として使用されなかった場合でも、後で行われる別のデータの格納用としてクラスタの論理アドレス範囲全体を使用できないようにするためである。図9Cは、割当て済みのクラスタから得られるセクタ5と6とを示し、ホストがデータ格納用としてこれらの論理アドレスを利用できないことを示すために、これらのセクタにはシェードが施されている。
図9Dと図9Eは、非シーケンシャルにホストから受信したデータの格納を行うための2つの代替方式を示す。双方の図には、不揮発性メモリに格納するためにホストから受信されるセクタX〜X+3並びにX+12〜X+15が示されている。これらのセクタは図9Cのクラスタ4と7に対応するセクタである。図9Dでは、受信したデータがカオス更新ブロック920へ書き込まれている。このブロックはカオスブロックである。というのは、セクタX+12がセクタX+3の直後に書き込まれていて、セクタX+3からセクタX+12までの論理アドレス範囲でジャンプが生じているからである。カオスブロック920は、セクタX〜X+3を含むとき、シーケンシャルな更新ブロックになることを開始してもよく、さらに、ブロック920は、セクタX+12が格納されているとき、カオス更新ブロックへの変換を開始してもよい。一般に、ホストが非シーケンシャルにデータを送信する場合、カオス(非シーケンシャルな)ブロックが利用される。図9Dのカオスブロック920内の有効なデータはシーケンシャルなブロック922へ最終的に移転され、ブロック922において、別の記憶位置からコピーできるセクタX+4〜X+11と共に格納される。これは一般に統合処理の一部として行われる。シーケンシャルなブロックは一般に長期の格納を行うためのものであることが望ましい。というのは、セクタが所定の方法で配列されるため、ブロック内でのセクタのインデックス作成が必要でない場合があるからである。カオスブロック920内の全ての有効なデータが別の記憶位置へコピーされた後、カオスブロック920は旧いものとしてマークされ、消去が可能となる。
図9Eは、セクタX〜X+3並びにX+12〜X+15の非シーケンシャルなデータを示し、このデータはシーケンシャルなブロック930の中でシーケンシャルに更新される。ブロック930がこの時点でシーケンシャルなブロックとなるようにセクタX〜X+3にまず書き込みを行うことができる。セクタX+12が受信されると、たとえデータが非シーケンシャルに受信されたものであっても、このデータをシーケンシャルに格納するために判定が行われる。原ブロックから(クラスタ5および6に対応する)セクタX+4〜X+11をコピーして、ホストから受信したセクタ間の論理アドレス範囲を満たすことによってシーケンシャルな格納を行うことが可能となる。セクタX+4〜X+11はパディングセクタと見なすことができる。というのは、これらのセクタを利用して、ホストが送信するセクタ内のギャップの充填すなわち“パッドアウト(pad out) ”が行われるからである。セクタX+4〜X+11は別の記憶位置からコピーされた有効なデータセクタである。このようにして、受信されたセクタは、カオスブロック内の中間の格納段階を通ることなくシーケンシャルなブロック930に格納される。したがって、これら2つの技法間の主要な相違点として、セクタX〜X+3並びにX+12〜X+15をカオスブロック920へ書き込み、次いでカオスブロック920を後で消去するステップが図9Eの例では不要になるという点が挙げられる。セクタX〜X+3並びにX+12〜X+15は一度書き込まれ、セクタX+4〜X+12はこの例ではそのままコピーされる。この処理は、8回の少ない回数のセクタ書き込みと、1回の少ない消去処理とを必要とし、その結果データ格納効率が改善されることになる。
受信したデータをシーケンシャルに格納すべきか、非シーケンシャルに格納すべきかに関する判定は種々の基準に基づいて行うことができる。或る種のデータ、特に、すぐに再更新が行われる可能性の大きいデータの場合、非シーケンシャルな格納のほうが適している場合がある。例えば、制御データや、更新頻度の高いホストデータの一部の場合、カオスブロックに格納するほうが効率が良くなる場合がある。或る種のデータ、特に、データがすぐに再更新される可能性が小さい場合、シーケンシャルな格納のほうが適している場合がある。非シーケンシャルに受信したデータは一般に非シーケンシャルに格納されると考えられるが、場合によっては、シーケンシャルにデータを書き込むと都合がよいこともある。カオスブロックへの中間格納が回避されるため、カオスブロックのガーベッジコレクションを行ってシーケンシャルなフォーマットでデータを取得する必要はない。これによって、図9Dに示されている統合処理が回避されることになり、その結果、オーバーヘッドが減り、性能の改善が図られることになる。ホストが次の未使用クラスタへ書き込みを行うとき、これはホストが次の利用可能な記憶位置に単に新しいデータを書き込んでいるという表示であり、一般に、論理アドレス範囲がすぐに再更新されるという表示ではない。したがって、図9Eに示されているようなシーケンシャルな更新方式を選択するほうが、図9Dに示されているようなカオス的な更新方式を選択するよりも効率のよいものとなる可能性がある。この結果、データが次の未使用クラスタから得られたものであるか否かに従って、使用する格納方式を決定することができる。データが、図9Eに示されているような次の未使用クラスタからのものである場合、シーケンシャルな格納部を選択することができる。したがって、図9Dの格納方式はこの例ではこのデータ用としては選択されないことになる。
図10は、本発明の実施形態に従う格納方式の選択を示すフローチャートである。非シーケンシャルなデータがホストから受信されると、データが次の未使用クラスタ10からのものであるか否かに関する決定がコントローラによって行われる。この決定は、FATと、ホストが不揮発性メモリに格納したディレクトリ情報とを直接見ることによって、あるいは、DASやDATに格納されているような情報のようなFATとディレクトリ情報とから導き出される情報を見ることによって行ってもよい。現在アドレス指定されているクラスタが次の未使用クラスタでなければ、データはデフォルトの方式12に従って通常の方法で格納される。このことは、データが非シーケンシャルに格納されることを意味する場合がある。あるいは、いくつかの例では、データをシーケンシャルに書き込ませる別の基準が存在する場合もある。現在アドレス指定されているクラスタが次の未使用クラスタであれば、シーケンシャルな書き込みが選択される。この場合、データの有効なクラスタが原メタブロックから現在のシーケンシャルなメタブロック14へコピーされて、最後に書き込まれたクラスタと現在アドレス指定されているクラスタとの間の論理アドレスのギャップのパッディングが行われることになる。次いで、現在アドレス指定されているクラスタから受信したデータは現在のシーケンシャルなメタブロックへ書き込まれる。この結果、現在のメタブロック16はシーケンシャルな状態のまま残ることになる。
図11は、1つの実施形態でホストから受信したセクタのための格納方式の選択を示すフローチャートである。同様の格納方式選択フローチャートが米国特許出願第10/750,155号(特許文献9)に示されている。開かれた更新ブロックが存在する(20)場合、更新ブロックはシーケンシャルなブロックになり(22)、セクタは更新ブロックの最後のセクタまでシーケンシャルになり(24)、次いで、セクタは更新ブロックへ書き込まれる(26)。セクタが更新ブロックの最後のセクタまでシーケンシャルでなければ、シーケンシャルな強制書き込みを行うべきか否かに関する決定が行われる(27)。更新ブロック内の最後のセクタから受信したセクタへのアドレスジャンプが所定量(CB )よりも大きくなければ(28)、最後のセクタと受信したセクタとの間のギャップはコピーされたセクタによりパッディングを行って(30)、前述したようにシーケンシャルなブロックとして更新ブロックの保守管理を行うようにしてもよい。更新ブロック内の空の物理セクタ数が所定量(CB )よりも大きくなければ(32)、更新ブロックを閉じて(34)、シーケンシャルなブロックとして更新ブロックの保守管理を行うことも可能であり、さらに、前述したように新たな更新ブロックを割り当てること(36)も可能である。シーケンシャルな強制書き込みを引き起こす第3の場合として、ホストが次の利用可能なクラスタへの書き込みを行っている(40)場合がある。このような書き込みが行われているとき、シーケンシャルなブロックとして更新ブロックの保守管理を行うことができるように、不揮発性メモリ内のどこか別の場所からコピーされたセクタによって、受信したセクタと更新ブロック内の最後のセクタとの間のギャップのパッディングを行う(30)。シーケンシャルな形でデータの書き込みを行うためのこれら基準のいずれも満たされなければ、更新ブロックをカオス更新ブロックへ変換すること(42)も可能である。したがって、この結果、格納方式を選択する選択基準は、ホストが不揮発性メモリに格納したデータから導き出された属性を含むことが可能となる。
図12Aは、更新ブロック50においてシーケンシャルにデータを格納するメモリシステムによってホストから非シーケンシャルに受信したデータの1例を示す。クラスタ2のセクタAが受信され、後続してクラスタ7のセクタBが受信される。セクタAは、受信されると、更新ブロック50の第1のセクタとなることが可能であり、更新ブロック50がセクタAのみを含む場合、更新ブロック50はシーケンシャルなブロックと見なされる。これとは別に、図12Aに示されているように、更新ブロック50はシーケンシャルなブロックとすることも可能である。というのは、更新ブロック50に前回格納されたセクタと共にセクタAがシーケンシャルに格納されるからである。セクタBの受信に先行して更新ブロック50がシーケンシャルであると想定して、セクタBを受信したとき、シーケンシャルな更新ブロックとして更新ブロック50の保守管理を行うか、更新ブロック50(セクタA)へ書き込まれた最後のセクタの後にセクタBを直接格納し、それによってカオスブロックへ更新ブロック50を変換するかに関する判定が行われる。この例では、クラスタ7はセクタAに後続する次の未使用クラスタである。したがって、クラスタ7からセクタBを受信したとき、シーケンシャルな強制書き込みが行われ、セクタが更新ブロック50へコピーされ、セクタAとセクタBとの間のギャップが満たされることになる。この結果、データは、図12Aの更新ブロック50にシーケンシャルに格納されることになる。
図12Bは、更新ブロック52に非シーケンシャルにデータを格納するメモリシステムによってホストから非シーケンシャルに受信したデータの1例を示す。セクタAは図12Aのようにまず受信される。セクタAはシーケンシャルに格納され、その結果、更新ブロック52は、セクタAがプログラムされるとシーケンシャルなブロックになる。次いで、セクタXが受信される。セクタXは次の未使用クラスタへは書き込まれない。セクタXは割当て済みのクラスタへ書き込まれ、したがってシーケンシャルな強制書き込みを引き起こすものではない。セクタXは非シーケンシャルに書き込みを行ってもよいし、あるいは、そのようにする何らかの別の理由(例えば、セクタXとセクタSとの間の論理的ギャップがしきい値未満であるなど)があれば、シーケンシャルに書き込みを行ってもよい。この例では、セクタXは、更新ブロック52内の次の利用可能な空間へ書き込みが行われているものとして示されている。この結果、更新ブロック52はカオスブロックとなる。図12C内の第2の例では、セクタYはセクタAの後で受信される。セクタYの受信前には更新ブロック54はシーケンシャルなブロックになる。セクタYは次の未使用クラスタから得られたものではない。というのは、更新ブロック(セクタA)内の最後に書き込まれたセクタとセクタYとの間に未使用クラスタ(クラスタ7)が存在するからである。したがって、セクタYはシーケンシャルな強制書き込みを引き起こすものではなく、パディングを行うことなく更新ブロック54へ書き込みを行って、更新ブロック54をカオスブロックにするものである。図12Dに示されている第3の例では、セクタAの後にセクタZが受信される。更新ブロック56はセクタZの受信に先行してシーケンシャルである。セクタZはクラスタ0から得られるものであり、したがって、次の未使用クラスタから得られるものではない。というのは、クラスタ0はクラスタ2の前に存在するからである。したがって、図示の順序で示されているように、クラスタ0は次の未使用クラスタではない。したがって、セクタZはクラスタAの直後に書き込みを行うことが可能であり、これに起因して更新ブロック56はカオスブロックとなる。
本発明の利点は非常に多い。異なる実施形態または実施構成は1以上の以下の利点を生み出すことができる。以下が網羅的なリストではないこと、および本願明細書に記載されていない他の利点が存在する可能性もあることに留意されたい。本発明の1つの利点として、不揮発性メモリシステムの性能の改善が可能であるいう点が挙げられる。本発明の別の利点として、広く使用されている規定を用いて本発明の実現が可能であるという点が挙げられる。本発明のさらに別の利点として、本発明はフラッシュメモリ内のテーブルとして相対的に小さな属性を実現することができるという点が挙げられる。他の実施構成ではテーブルは必要ではない。さらに別の利点として、任意の用途のために、および/または、バックグラウンドでの保守管理処理中に利用するために、本発明が実施可能であるという点が挙げられる。
前述した本発明の種々の態様または特徴は、単独で、あるいは、種々に組み合わせて利用することが可能である。本発明はハードウェアあるいはハードウェアとソフトウェアとの組み合わせによって実現可能である。本発明はコンピュータ可読媒体におけるコンピュータ可読コードとして具現化することも可能である。このコンピュータ可読媒体は、コンピュータシステムによって後で読み出すことができるデータを格納することが可能な任意のデータ記憶装置であってもよい。コンピュータ可読媒体の例として、リードオンリメモリ、ランダムアクセスメモリ、CD−ROM、DVD、磁気テープ、光データ記憶装置、並びに搬送波が含まれる。これらのコンピュータ可読媒体は、ネットワーク接続されたコンピュータシステムにわたって分散するので、コンピュータ可読コードを格納し、分散して実行するように図ることが可能である。
本発明の多くの特徴と利点とは前述した説明から明らかであり、したがって、本発明のこのようなすべての特徴並びに利点をカバーすることが添付の特許請求の範囲によって意図されている。さらに、多くの修正および変更が当業者の心に容易に浮かぶであろうことが考えられるため、本願明細書に例示し、記載したような構成および処理と同じ正確な構成および処理に本発明は限定されるものではない。したがって、すべての適切な修正並びに均等物は本発明の範囲内に属するものとなる。
いくつかの論理セクタに分割することができる論理アドレス空間を示す。 本発明の1つの実施形態に従うコピー管理方法を描く。 本発明の1つの実施形態に従う計算環境を描く。 本発明の1つの実施形態に従うデータアロケーションテーブル(DAT)を描く。 本発明の1つの実施形態に従うデータアロケーションテーブル(DAT)のエントリを描く。 本発明の1つの実施形態に従うコントローラによって利用できるホストの論理データ構成を描く。 本発明の1つの実施形態に従う、フラッシュメモリに格納されたデータに関する情報をフラッシュメモリコントローラに提供する方法を描く。 本発明の1つの実施形態に従うフラッシュメモリの保守管理方法を示す。 本発明の1つの実施形態に従うモニタ方法を示す。 本発明の1つの実施形態に従う例示のガーベッジコレクション方法を描く。 本発明の1つの実施形態に従うデータアロケーションテーブル(DAT)を描く。 ファイルアロケーションテーブル(FAT)の1例を示す。 図9AのFATから導き出されるDATを示す。 ホストデータの一部に対するクラスタとセクタ間の対応関係の1例を示す。 カオスブロックに格納され、シーケンシャルなブロックへ遅れてコピーされる非シーケンシャルなデータを示す。 シーケンシャルなブロックに直接格納された非シーケンシャルなデータを示す。 本発明の実施形態に従うホストデータの一部のための格納方式を選択するためのフローチャートを示す。 本発明の別の実施形態に従うホストデータの一部のための格納方式を選択するためのフローチャートを示す。 シーケンシャルに格納された非シーケンシャルなデータの1例を示す。 非シーケンシャルに格納された非シーケンシャルなデータの第1の例を示す。 非シーケンシャルに格納された非シーケンシャルなデータの第2の例を示す。 非シーケンシャルに格納された非シーケンシャルなデータの第3の例を示す。

Claims (21)

  1. コントローラと不揮発性メモリアレイとを備えたメモリシステムに適応性のある方法でデータ部分を格納する方法において、前記コントローラが、
    前記不揮発性メモリアレイ内のファイルアロケーションテーブルまたはディレクトリ内の、ホストによって格納された情報から論理アドレス範囲の属性を取得するステップと、
    前記論理アドレス範囲内に論理アドレスを含むデータ部分のための複数の格納方式のなかから、前記論理アドレス範囲の属性に従って格納方式を選択し、
    前記選択された格納方式に従って前記データ部分を格納するステップと、
    を備える方法。
  2. 請求項1記載のデータ部分を格納する方法において、
    前記論理アドレス範囲の属性は、前記論理アドレス範囲がホストデータの格納を行うための次の未使用の論理アドレス範囲である属性となる方法。
  3. 請求項2記載のデータ部分を格納する方法において、
    前記選択された格納方式は、シーケンシャルな更新ブロックでの前記データ部分の格納を含む方法。
  4. 請求項1記載のデータ部分を格納する方法において、
    前記論理アドレス範囲の属性は、前記論理アドレス範囲がホストデータの格納を行うための次の未使用の論理アドレス範囲ではない属性となる方法。
  5. 請求項4記載のデータ部分を格納する方法において、
    前記選択された格納方式は、カオス更新ブロックでの前記データ部分の格納を含む方法。
  6. 請求項1記載のデータ部分を格納する方法において、
    前記データ部分が前記不揮発性メモリアレイ内の第1の記憶位置に以前に格納され、前記論理アドレス範囲の属性は、前記論理アドレス範囲が前記ホストによって割り当てられる属性であり、前記選択された格納方式が、第1の記憶位置から第2の記憶位置へ前記データ部分を前記不揮発性メモリアレイにコピーすることを含む方法。
  7. 請求項6記載のデータ部分を格納する方法において、
    前記データ部分が前記不揮発性メモリアレイ内の第1の記憶位置に以前に格納されたものであり、前記論理アドレス範囲の属性は、前記論理アドレス範囲が前記ホストによって割り当てられる属性であり、前記選択された格納方式が、前記第1の記憶位置から第2の記憶位置へ前記データ部分をコピーすることなく、前記第1の記憶位置において前記データ部分の保守管理を行う方法。
  8. 請求項1記載のデータ部分を格納する方法において、
    前記属性は、前記ファイルアロケーションテーブルまたはディレクトリから導き出されたデータ属性格納部から取得される方法。
  9. ホストから受信したデータを不揮発性メモリアレイに格納する方法において、
    1以上のアドレス可能なデータ単位を前記ホストから受け取るステップと、
    前記ホストがデータの格納用として利用可能な複数の論理アドレス範囲を特定するために、前記ホストが前記不揮発性メモリアレイに格納した情報を分析するステップと、
    前記1以上のアドレス可能なデータ単位が前記ホストにとって利用可能な論理アドレスの次の範囲へ割り当てられているかどうかを判定するために、前記ホストにとって利用可能な前記複数の論理アドレス範囲を前記1それ以上のアドレス可能なデータ単位の論理アドレスと比較するステップと、
    前記判定に依存して、前記1以上のアドレス可能なデータ単位を格納するステップと、
    を備える方法。
  10. 請求項9記載のホストから受信したデータを不揮発性メモリアレイに格納する方法において、
    前記1以上のアドレス可能な単位が、利用可能な次のシーケンシャルな記憶位置に指定されていれば、前記1以上のアドレス可能な単位を格納する態様がシーケンシャルな態様となり、前記1以上のアドレス可能な単位が、利用可能な次のシーケンシャルな記憶位置に指定されていなければ、前記格納する態様が非シーケンシャルな態様となる方法。
  11. 請求項9記載のホストから受信したデータを不揮発性メモリアレイに格納する方法において、
    前記1以上のアドレス可能なデータ単位を格納するステップは、前記1以上のアドレス可能なデータ単位の論理アドレスと、最後に書き込まれたアドレス可能なデータ単位の論理アドレスとの間の論理アドレスのギャップが所定量を上回るかどうかを含む追加要因に依存する態様で行われる方法。
  12. 請求項11記載のホストから受信したデータを不揮発性メモリアレイに格納する方法において、
    追加の要因とは、前記1以上のアドレス可能なデータ単位を格納するための更新ブロックが、所定量のデータよりも多くのデータをシーケンシャルな形で含むかどうかというものである方法。
  13. アドレス可能なデータ単位でホストからデータを受け取る、不揮発性メモリにデータを格納するメモリデバイスにおいて、
    ホストのファイルアロケーションテーブルのコピーを含む不揮発性メモリアレイと、
    前記不揮発性メモリアレイとの通信時のメモリコントローラであって、前記ホストのファイルアロケーションテーブルのコピー内容をモニタし、前記ホストのファイルアロケーションテーブルのコピーから論理アドレス空間部分の割当て状態を判定し、前記論理アドレス空間部分内に論理アドレスを含むアドレス可能なデータ単位のためのデータ管理方式を前記割当て状態に応じて選択するメモリコントローラと、
    を備えるメモリデバイス。
  14. 請求項13記載の不揮発性メモリにデータを格納するメモリデバイスにおいて、
    前記メモリデバイスは、コントローラと取り外し可能に接続された取り外し可能なメモリカードの一部を形成するメモリデバイス。
  15. 請求項13記載の不揮発性メモリにデータを格納するメモリデバイスにおいて、
    前記メモリコントローラは、前記論理アドレス空間部分の割当て状態をデータ属性格納部に記録するメモリデバイス。
  16. 請求項13記載の不揮発性メモリにデータを格納するメモリデバイスにおいて、
    前記不揮発性メモリアレイに格納するために、前記アドレス可能なデータ単位をホストから受け取り、前記論理アドレス空間部分が次の未使用部分であれば、前記データ管理方式がシーケンシャルなブロックに格納部を設け、前記論理アドレス空間部分が次の未使用部分でなければ、前記データ管理方式がカオスブロックに格納部を設けるメモリデバイス。
  17. 請求項13記載の不揮発性メモリにデータを格納するメモリデバイスにおいて、
    前記メモリデバイスがガーベッジコレクション処理を行うとき、前記アドレス可能なデータ単位が前記不揮発性メモリアレイ内の第1の記憶位置に格納され、前記論理アドレス空間部分が割り当てられていれば、前記データ管理方式は、前記アドレス可能なデータ単位を前記不揮発性メモリアレイ内の第2の記憶位置へコピーを行う処理となり、前記論理アドレス空間部分が割り当てられていなければ、前記データ管理方式は、コピーを行うことなく、第1の記憶位置において前記アドレス可能なデータ単位の保守管理を行う処理となるメモリデバイス。
  18. 不揮発性メモリ内のホストデータの格納用メモリコントローラにとって利用可能な代替の格納方式の間で選択を行うためのプログラムコードを含むコンピュータ可読媒体において、
    複数の論理アドレス空間部分の割り当て状態をホストが前記不揮発性メモリに格納した情報から特定し、前記割り当て状態を前記メモリコントローラへ出力するコンピュータプログラムコードと、
    ホストデータ部分の論理アドレスを含む論理アドレス空間部分の割り当て状態に従って、前記ホストデータ部分のためのデータ管理方式を選択するコンピュータプログラムコードと、
    を含むコンピュータ可読媒体。
  19. 請求項18記載のコンピュータ可読媒体において、
    前記論理アドレス空間部分が割り当てられていない論理アドレス空間の次の部分であれば、前記データ部分をシーケンシャルなブロックに格納し、そうでなければ、前記データ部分をカオスブロックに格納するように、前記選択された管理方式に従って前記ホストデータ部分に対して動作するコンピュータプログラムコードをさらに含むコンピュータ可読媒体。
  20. 請求項18記載のコンピュータ可読媒体において、
    前記論理アドレス空間部分が割り当てられていれば、古い記憶位置から新しい記憶位置へ前記データ部分をコピーし、前記論理アドレス空間部分が割り当てられていなければ、新しい記憶位置へコピーを行うことなく、前記データ部分を前記古い記憶位置に残すように、前記選択された管理方式に従って前記ホストデータ部分に対して動作するコンピュータプログラムコードをさらに含むコンピュータ可読媒体。
  21. 請求項18記載のコンピュータ可読媒体において、
    前記複数の論理アドレス空間部分の割り当て状態を含むデータ属性格納部を設けたコンピュータプログラムコードをさらに含むコンピュータ可読媒体。
JP2007522509A 2004-07-21 2005-06-17 最適化されたシーケンシャルなクラスタの管理のためのfat分析 Expired - Fee Related JP4931810B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10/897,049 2004-07-21
US10/897,049 US7395384B2 (en) 2004-07-21 2004-07-21 Method and apparatus for maintaining data on non-volatile memory systems
US11/022,369 US8607016B2 (en) 2004-07-21 2004-12-23 FAT analysis for optimized sequential cluster management
US11/022,369 2004-12-23
PCT/US2005/021846 WO2006019496A1 (en) 2004-07-21 2005-06-17 Fat analysis for optimized sequential cluster management

Publications (3)

Publication Number Publication Date
JP2008507756A true JP2008507756A (ja) 2008-03-13
JP2008507756A5 JP2008507756A5 (ja) 2008-07-03
JP4931810B2 JP4931810B2 (ja) 2012-05-16

Family

ID=34972595

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007522509A Expired - Fee Related JP4931810B2 (ja) 2004-07-21 2005-06-17 最適化されたシーケンシャルなクラスタの管理のためのfat分析

Country Status (7)

Country Link
US (1) US8607016B2 (ja)
EP (1) EP1782211B1 (ja)
JP (1) JP4931810B2 (ja)
KR (1) KR20070060070A (ja)
AT (1) ATE557350T1 (ja)
TW (1) TW200622619A (ja)
WO (1) WO2006019496A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011048738A1 (ja) * 2009-10-22 2011-04-28 株式会社日立製作所 半導体記憶装置および制御方法

Families Citing this family (157)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7174420B2 (en) * 2002-10-22 2007-02-06 Microsoft Corporation Transaction-safe FAT file system
US7363540B2 (en) * 2002-10-22 2008-04-22 Microsoft Corporation Transaction-safe FAT file system improvements
HUP0400808A2 (hu) * 2004-04-19 2005-11-28 Dr.Kozéky László Géza Fémgőz ívű plazmafáklya és annak alkalmazása a metallurgiában, a plazmaenergiás pirolízisben és vitrifikációban, és más anyagátalakító eljárásokban
US8607016B2 (en) 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US8606830B2 (en) * 2004-12-17 2013-12-10 Microsoft Corporation Contiguous file allocation in an extensible file system
US7873596B2 (en) 2006-05-23 2011-01-18 Microsoft Corporation Extending cluster allocations in an extensible file system
US9639554B2 (en) 2004-12-17 2017-05-02 Microsoft Technology Licensing, Llc Extensible file system
US8321439B2 (en) 2004-12-17 2012-11-27 Microsoft Corporation Quick filename lookup using name hash
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
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
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7861095B2 (en) * 2005-02-15 2010-12-28 Arm Limited Data processing apparatus security
US20060236026A1 (en) * 2005-04-15 2006-10-19 Jens Hempel Method and system for allocating, accessing and de-allocating storage space of a memory card
US7457910B2 (en) * 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7558906B2 (en) 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile 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
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
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7627733B2 (en) * 2005-08-03 2009-12-01 Sandisk Corporation Method and system for dual mode access for storage devices
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US20070084375A1 (en) * 2005-08-10 2007-04-19 Smith Kyle S High density cartridge and method for reloading
US7814262B2 (en) * 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
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
JP4633802B2 (ja) * 2005-12-09 2011-02-16 パナソニック株式会社 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
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
US20070143566A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7793068B2 (en) * 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
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
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
CN100485681C (zh) * 2006-03-23 2009-05-06 北京握奇数据系统有限公司 智能卡存储系统及该系统中文件创建管理的方法
CN100517236C (zh) * 2006-04-03 2009-07-22 北京握奇数据系统有限公司 智能卡嵌入式操作系统及其控制方法
US7752412B2 (en) 2006-09-29 2010-07-06 Sandisk Corporation Methods of managing file allocation table information
US7681008B2 (en) * 2006-09-29 2010-03-16 Sandisk Corporation Systems for managing file allocation table information
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8019938B2 (en) 2006-12-06 2011-09-13 Fusion-I0, Inc. Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
JP4402103B2 (ja) 2006-12-11 2010-01-20 富士通株式会社 データ記憶装置、そのデータ再配置方法、プログラム
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
KR101464199B1 (ko) 2006-12-26 2014-11-21 샌디스크 테크놀로지스, 인코포레이티드 연속 논리 주소 공간 인터페이스를 구비한 다이렉트 데이터 파일 시스템을 사용하는 방법
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
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
CN100535935C (zh) * 2006-12-26 2009-09-02 北京握奇数据系统有限公司 Cpu与逻辑加密双用智能卡及其数据同步方法
US7747664B2 (en) * 2007-01-16 2010-06-29 Microsoft Corporation Storage system format for transaction safe file system
US7613738B2 (en) 2007-01-16 2009-11-03 Microsoft Corporation FAT directory structure for use in transaction safe file system
KR100923990B1 (ko) 2007-02-13 2009-10-28 삼성전자주식회사 플래시 저장 장치의 특성을 기반으로 한 컴퓨팅 시스템
KR100825802B1 (ko) 2007-02-13 2008-04-29 삼성전자주식회사 기입 데이터의 논리적 페이지보다 이전 논리적 페이지들을가지는 데이터들을 데이터 블록으로부터 복사하는 불휘발성메모리 장치의 데이터 기입 방법
US7966355B2 (en) * 2007-02-13 2011-06-21 Modu Ltd. Interface for extending functionality of memory cards
US20080235465A1 (en) * 2007-03-19 2008-09-25 Bum Suck So Systems for conversion of update blocks based on association with host file management data structures
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
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
US20080235480A1 (en) * 2007-03-21 2008-09-25 Shai Traister Systems for storing memory operations in a queue
US7987332B2 (en) * 2007-03-21 2011-07-26 Sandisk Technologies Inc. Methods for storing memory operations in a queue
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
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
WO2009001514A1 (ja) * 2007-06-22 2008-12-31 Panasonic Corporation メモリコントローラ、不揮発性記憶装置、ファイルシステム、不揮発性記憶システム、データ書き込み方法及びデータ書き込みプログラム
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
KR101472797B1 (ko) * 2007-07-16 2014-12-15 삼성전자주식회사 데이터를 읽거나 쓰기 위한 방법 및 장치
US20090089516A1 (en) * 2007-10-02 2009-04-02 Greg Pelts Reclaiming storage on a thin-provisioning storage device
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
JP4164118B1 (ja) * 2008-03-26 2008-10-08 眞澄 鈴木 フラッシュメモリを用いた記憶装置
WO2009129340A2 (en) * 2008-04-15 2009-10-22 Adtron, Inc. Flash memory management
US8566505B2 (en) * 2008-04-15 2013-10-22 SMART Storage Systems, Inc. Flash management using sequential techniques
US20090259806A1 (en) * 2008-04-15 2009-10-15 Adtron, Inc. Flash management using bad page tracking and high defect flash memory
US8028123B2 (en) * 2008-04-15 2011-09-27 SMART Modular Technologies (AZ) , Inc. Circular wear leveling
US8185778B2 (en) * 2008-04-15 2012-05-22 SMART Storage Systems, Inc. Flash management using separate metadata storage
US8347046B2 (en) * 2008-04-15 2013-01-01 Microsoft Corporation Policy framework to treat data
US8180954B2 (en) * 2008-04-15 2012-05-15 SMART Storage Systems, Inc. Flash management using logical page size
US7877522B2 (en) * 2008-05-27 2011-01-25 Sandisk Il Ltd. Method of monitoring host activity
US20100082537A1 (en) * 2008-09-29 2010-04-01 Menahem Lasser File system for storage device which uses different cluster sizes
US9015209B2 (en) 2008-12-16 2015-04-21 Sandisk Il Ltd. Download management of discardable files
US9104686B2 (en) * 2008-12-16 2015-08-11 Sandisk Technologies Inc. System and method for host management of discardable objects
US9020993B2 (en) 2008-12-16 2015-04-28 Sandisk Il Ltd. Download management of discardable files
JP4816740B2 (ja) * 2009-02-09 2011-11-16 ソニー株式会社 情報処理装置、および情報処理方法、並びにプログラム
US20100235329A1 (en) * 2009-03-10 2010-09-16 Sandisk Il Ltd. System and method of embedding second content in first content
US20100250830A1 (en) * 2009-03-27 2010-09-30 Ross John Stenfort System, method, and computer program product for hardening data stored on a solid state disk
US8230159B2 (en) * 2009-03-27 2012-07-24 Lsi Corporation System, method, and computer program product for sending logical block address de-allocation status information
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
US8090905B2 (en) * 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US20110004718A1 (en) 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US9792074B2 (en) * 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
WO2011036668A1 (en) * 2009-09-23 2011-03-31 Infinite Memories Ltd. Methods circuits data-structures devices and system for operating a non-volatile memory device
US8510525B2 (en) * 2009-11-19 2013-08-13 Vinpower Inc. Method of duplicating segmented data to multiple random accessible storage devices
US8327109B2 (en) * 2010-03-02 2012-12-04 Advanced Micro Devices, Inc. GPU support for garbage collection
WO2011121590A1 (en) * 2010-03-31 2011-10-06 Kaminario Technologies Ltd. Log structure array
US8706983B2 (en) * 2010-06-30 2014-04-22 Sandisk Technologies Inc. Garbage collection of memory blocks using volatile memory
TWI459196B (zh) * 2010-07-06 2014-11-01 Innostor Technology Corp 快閃記憶體用之提高資料存取效能的登入-結構化檔案系統
US8463802B2 (en) * 2010-08-19 2013-06-11 Sandisk Il Ltd. Card-based management of discardable files
US8549229B2 (en) 2010-08-19 2013-10-01 Sandisk Il Ltd. Systems and methods for managing an upload of files in a shared cache storage system
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US8788849B2 (en) 2011-02-28 2014-07-22 Sandisk Technologies Inc. Method and apparatus for protecting cached streams
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9348819B1 (en) * 2011-12-31 2016-05-24 Parallels IP Holdings GmbH Method and system for file data management in virtual environment
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9201784B2 (en) * 2012-09-07 2015-12-01 Kabushiki Kaisha Toshiba Semiconductor storage device and method for controlling nonvolatile semiconductor memory
CN102981968B (zh) * 2012-11-13 2016-05-25 浪潮电子信息产业股份有限公司 一种nor-flash-fat文件系统空闲簇的分配方法
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9639296B1 (en) 2013-04-05 2017-05-02 Amazon Technologies, Inc. Deallocating portions of data storage based on notifications of invalid data
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9606909B1 (en) 2013-04-05 2017-03-28 Amazon Technologies, Inc. Deallocating portions of provisioned data storage based on defined bit patterns indicative of invalid data
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9569447B2 (en) * 2013-11-08 2017-02-14 Texas Instruments Incorporated File access method and system thereof
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9613715B2 (en) 2014-06-16 2017-04-04 Sandisk Technologies Llc Low-test memory stack for non-volatile storage
US8976609B1 (en) 2014-06-16 2015-03-10 Sandisk Enterprise Ip Llc Low-test memory stack for non-volatile storage
US9653184B2 (en) 2014-06-16 2017-05-16 Sandisk Technologies Llc Non-volatile memory module with physical-to-physical address remapping
US10496607B2 (en) * 2016-04-01 2019-12-03 Tuxera Inc. Systems and methods for enabling modifications of multiple data objects within a file system volume
TWI631461B (zh) * 2017-06-27 2018-08-01 晨星半導體股份有限公司 行車記錄器之儲存裝置的控制方法與儲存裝置控制系統
US11435922B2 (en) * 2017-06-27 2022-09-06 Sigmastar Technology Ltd. Control method for storage device of driving recorder and storage device control system
US10503404B2 (en) 2017-10-23 2019-12-10 Micron Technology, Inc. Namespace management in non-volatile memory devices
US10437476B2 (en) 2017-10-23 2019-10-08 Micron Technology, Inc. Namespaces allocation in non-volatile memory devices
US10678703B2 (en) * 2017-11-16 2020-06-09 Micron Technology, Inc. Namespace mapping structual adjustment in non-volatile memory devices
US11580034B2 (en) 2017-11-16 2023-02-14 Micron Technology, Inc. Namespace encryption in non-volatile memory devices
DE102019118631A1 (de) * 2018-08-03 2020-02-06 Samsung Electronics Co., Ltd. Speichervorrichtung, welche eine Wartungsarbeit unabhängig ohne Befehl des Host initiiert, und elektronisches System mit derselben
US11372812B2 (en) * 2018-10-08 2022-06-28 Silicon Motion, Inc. Mobile device and method capable of earlier determining that a number of files in a directory of an external connected storage device is about to full
TWI789647B (zh) * 2018-10-08 2023-01-11 慧榮科技股份有限公司 能夠更早地判斷出外接儲存裝置之資料夾的檔案個數將要額滿的行動裝置及方法
JP2020141100A (ja) * 2019-03-01 2020-09-03 キオクシア株式会社 半導体装置およびその製造方法
US11294827B2 (en) * 2019-09-12 2022-04-05 Western Digital Technologies, Inc. Non-sequential zoned namespaces
US11892983B2 (en) 2021-04-29 2024-02-06 EMC IP Holding Company LLC Methods and systems for seamless tiering in a distributed storage system
WO2022233391A1 (en) * 2021-05-04 2022-11-10 Huawei Technologies Co., Ltd. Smart data placement on hierarchical storage
US20230127387A1 (en) * 2021-10-27 2023-04-27 EMC IP Holding Company LLC Methods and systems for seamlessly provisioning client application nodes in a distributed system
US11762682B2 (en) 2021-10-27 2023-09-19 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components with advanced data services
US11922071B2 (en) 2021-10-27 2024-03-05 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components and a GPU module
US11677633B2 (en) 2021-10-27 2023-06-13 EMC IP Holding Company LLC Methods and systems for distributing topology information to client nodes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06266587A (ja) * 1993-03-16 1994-09-22 Nec Corp フラッシュメモリのファイル管理方式
JPH09319645A (ja) * 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
JPH10124381A (ja) * 1996-10-21 1998-05-15 Mitsubishi Electric Corp 半導体記憶装置
JP2002513484A (ja) * 1996-11-25 2002-05-08 マクロニクス インターナショナル カンパニー リミテッド フラッシュメモリ大容量記憶システム

Family Cites Families (31)

* 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
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US6347051B2 (en) 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
US5337275A (en) 1992-10-30 1994-08-09 Intel Corporation Method for releasing space in flash EEPROM memory array to allow the storage of compressed data
US5357475A (en) 1992-10-30 1994-10-18 Intel Corporation Method for detaching sectors in a flash EEPROM memory array
JP3078946B2 (ja) 1993-03-11 2000-08-21 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置
US5682497A (en) 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
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
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
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
WO1999031592A1 (fr) 1997-12-16 1999-06-24 Tdk Corporation Systeme de memoire flash
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
EP1209568A1 (en) * 1999-02-22 2002-05-29 Hitachi, Ltd. Memory card, method for allotting logical address, and method for writing data
KR100704998B1 (ko) * 1999-02-26 2007-04-09 소니 가부시끼 가이샤 기록방법, 관리방법 및 기록장치
WO2001029670A2 (en) * 1999-10-21 2001-04-26 Matsushita Electric Industrial Co., Ltd. A semiconductor memory card access apparatus, a computer-readable recording medium, an initialization method, and a semiconductor memory card
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US20030120858A1 (en) * 2000-09-15 2003-06-26 Matrix Semiconductor, Inc. Memory devices and methods for use therewith
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
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
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
WO2004059651A2 (en) * 2002-12-27 2004-07-15 Solid State System Co., Ltd. Nonvolatile memory unit with specific cache
GB2400927A (en) 2003-04-22 2004-10-27 Hewlett Packard Development Co Method of managing memory by checking that none of the sectors in a block is needed before erasing the block.
KR100608602B1 (ko) 2003-12-10 2006-08-03 삼성전자주식회사 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
US8504798B2 (en) 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7395384B2 (en) * 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US8607016B2 (en) 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06266587A (ja) * 1993-03-16 1994-09-22 Nec Corp フラッシュメモリのファイル管理方式
JPH09319645A (ja) * 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
JPH10124381A (ja) * 1996-10-21 1998-05-15 Mitsubishi Electric Corp 半導体記憶装置
JP2002513484A (ja) * 1996-11-25 2002-05-08 マクロニクス インターナショナル カンパニー リミテッド フラッシュメモリ大容量記憶システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011048738A1 (ja) * 2009-10-22 2011-04-28 株式会社日立製作所 半導体記憶装置および制御方法
JP2011090496A (ja) * 2009-10-22 2011-05-06 Hitachi Ltd 半導体記憶装置および制御方法

Also Published As

Publication number Publication date
EP1782211A1 (en) 2007-05-09
JP4931810B2 (ja) 2012-05-16
US8607016B2 (en) 2013-12-10
ATE557350T1 (de) 2012-05-15
TW200622619A (en) 2006-07-01
KR20070060070A (ko) 2007-06-12
US20060020745A1 (en) 2006-01-26
WO2006019496A1 (en) 2006-02-23
EP1782211B1 (en) 2012-05-09

Similar Documents

Publication Publication Date Title
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
EP2254053B1 (en) FAT-analysis for optimized sequential cluster management
US8214583B2 (en) Direct file data programming and deletion in flash memories
US9367451B2 (en) Storage device management device and method for managing storage device
JP5530012B2 (ja) 記憶装置のためのストレージアドレス再マッピングのための方法およびシステム
US7877539B2 (en) Direct data file storage in flash memories
US7984233B2 (en) Direct data file storage implementation techniques in flash memories
US7594062B2 (en) Method for changing data of a data block in a flash memory having a mapping area, a data area and an alternative area
US7702846B2 (en) Memory controller, nonvolatile storage device, nonvolatile storage system, and data writing method
US20100169540A1 (en) Method and apparatus for relocating selected data between flash partitions in a memory device
US20070088666A1 (en) File recording apparatus
US20090271562A1 (en) Method and system for storage address re-mapping for a multi-bank memory device
JP4977703B2 (ja) 予定再生操作を伴う不揮発性メモリ
JPWO2005103903A1 (ja) 不揮発性記憶システム
JP4682261B2 (ja) 不揮発性メモリおよびクラスベースの更新ブロック置換規則のための方法
JP5266250B2 (ja) 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用
US20050169058A1 (en) Data management apparatus and method used for flash memory
JP2010515163A (ja) ダイレクトデータファイルメモリシステムにおけるlbaインターフェイスの管理

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080512

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110510

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110728

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111006

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4931810

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

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

Year of fee payment: 3

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees