[go: up one dir, main page]

JP2009503738A - 直接データファイル記憶を用いるフラッシュメモリにおけるデータ操作 - Google Patents

直接データファイル記憶を用いるフラッシュメモリにおけるデータ操作 Download PDF

Info

Publication number
JP2009503738A
JP2009503738A JP2008525155A JP2008525155A JP2009503738A JP 2009503738 A JP2009503738 A JP 2009503738A JP 2008525155 A JP2008525155 A JP 2008525155A JP 2008525155 A JP2008525155 A JP 2008525155A JP 2009503738 A JP2009503738 A JP 2009503738A
Authority
JP
Japan
Prior art keywords
file
data
block
blocks
fit
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
JP2008525155A
Other languages
English (en)
Other versions
JP4537481B2 (ja
JP2009503738A5 (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
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of JP2009503738A publication Critical patent/JP2009503738A/ja
Publication of JP2009503738A5 publication Critical patent/JP2009503738A5/ja
Application granted granted Critical
Publication of JP4537481B2 publication Critical patent/JP4537481B2/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
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0608Saving storage space on storage systems
    • 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • 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
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Communication Control (AREA)

Abstract

ホストシステムデータファイルは、各ファイルおよびファイル内のデータのオフセットの一意の識別を用いるが、メモリのためのどのような中間的論理アドレスまたは仮想アドレス空間も用いることなく、大型消去ブロックのフラッシュメモリシステムに直接書き込まれる。ファイルがメモリ中のどこに格納されるかのディレクトリ情報が、メモリシステム内に、ホストによってではなく、そのコントローラによって維持される。

Description

本願は、一般的にはホストデバイスとメモリシステムとの間のインターフェイスの管理を含む、半導体フラッシュメモリのような再プログラム可能な不揮発性メモリシステムの操作に関し、より具体的には、共通の大容量メモリ論理アドレス空間(LBA)インターフェイスではなくデータファイルインターフェイスの効率的な使用に関する。
本願明細書中には、すべて2005年2月16日にAlan W. Sinclair単独またはPeter J. Smithと共同で出願された同時継続中の米国特許出願第11/060,174号(特許文献1)、第11/060,248号(特許文献2)および第11/060,249号(特許文献3)(以下、「先行出願」と称する)に記載されるフラッシュメモリの様々な操作における開発が記載されている。
さらなる開発が、Alan W. SinclairおよびBarry Wrightの米国特許出願、すなわち、すべて2006年5月8日に出願された米国特許出願第11/382,224号(特許文献4)および第11/382,232号(特許文献5)、ならびに仮特許出願第60/746,740号(特許文献6)および第60/746,742号(特許文献7)、さらにはすべて2006年7月21日出願された「Indexing Of File Data In Reprogrammable Non-Volatile Memories That Directly Store Data Files」(特許文献8)、「Reprogrammable Non-Volatile Memory Systems With Indexing Directly Stored Data Files 」(特許文献9)、「Methods of Managing Blocks in NonVolatile Memory」(特許文献10)および「NonVolatile Memory With Block Management」(特許文献11)という米国特許出願に記載されている。
すべての特許、特許出願、記事およびその他の刊行物、文書ならびに本願明細書中で参照される事物は、すべての目的のために、その全体が本願明細書において参照により援用されている。含まれる刊行物、文書または事物のいずれかと本願との間の用語の定義または使用におけるいずれかの不一致または矛盾の範囲まで、本願の定義または使用がまさるものとする。
米国特許出願第11/060,174号 米国特許出願第11/060,248号 米国特許出願第11/060,249号 米国特許出願第11/382,224号 米国特許出願第11/382,232号 米国仮特許出願第60/746,740号 米国仮特許出願第60/746,742号 2006年7月21日出願された「Indexing Of File Data In Reprogrammable Non-Volatile Memories That Directly Store Data Files」という米国特許出願 2006年7月21日出願された「Reprogrammable Non-Volatile Memory Systems With Indexing Directly Stored Data Files 」という米国特許出願 2006年7月21日出願された「Methods of Managing Blocks in NonVolatile Memory」という米国特許出願 2006年7月21日出願された「NonVolatile Memory With Block Management」という米国特許出願 本願と同時に出願されたSergey Anatolievich Gorobetsによる「Interfacing Systems Operating Through A Logical Address Space and on a Direct Date File Basis 」 米国特許出願第10/749,831号 米国特許出願第10/750,155号 米国特許出願第10/917,888号 米国特許出願第10/917,867号 米国特許出願第10/917,889号 米国特許出願第10/917,725号 米国特許出願第11/192,200号 米国特許出願第11/192,386号 米国特許出願第11/191,686号
データ統合(data consolidation)は本願明細書中で、ガベージコレクションとは別に扱われ、これら2つのプロセスは、異なるアルゴリズムにより少なくとも部分的に実施される。ファイルまたはメモリブロックが古い(obsolete)データを含む場合、ファイルまたはブロックの有効なデータを1つ以上の他のブロックへ移動するためにガベージコレクション操作が用いられる。ガベージコレクション操作は、有効なデータをより少数のブロックへ集め、こうして当初のソースブロックがひとたび消去されると古いデータにより占められる容量を解放する。データ統合において、通常、新しいファイルの書き込みの結果として作られるような、1つの部分的に満たされたブロックの有効なデータは、別の部分的に満たされたブロックの有効なデータと組み合わされる。古い重複データを現在含んでいる、データのソースであった当初のブロックの一方または両方は、ガベージコレクションを予定する。古いデータにより占められたメモリ記憶容量を回復するために個別のガベージコレクション操作を予定するためにキュー(queue) が提供されるが、データ統合は好ましくは、ガベージコレクションが全く予定されておらず条件がその他の点で統合について十分である場合に行われる。
新しく書き込まれたファイルのデータ統合をそのファイルが閉じられたすぐ後に予定するのではなく、新しく書き込まれたファイルのデータは、ホストからの受信後にそれらがプログラムされた当初のブロック中で維持される。これは最も一般的には、新しいデータで部分的に満たされたブロックを含んでいる。データファイルが、古いデータを作成するやり方で削除または更新されることは珍しくないので、部分的に満たされたブロックのデータの統合は、ファイルが閉じられた後できるだけ長く延期される。ファイルは、どのデータも再配置する必要なく削除できる。従って、そのような統合が必要になる前にファイルが削除または更新されれば、統合は回避される。そのような統合は、メモリが一杯になると、新しいデータのさらにプログラミングのための十分な消去済ブロックがあるように、必要になり得る。しかし、論理インターフェイスが用いられる場合とは反対に、ファイルベースのメモリは、ホストにより削除されたデータファイルを維持しないので、たとえ統合が遅延されたとしても、メモリは通常、十分な数の消去済ブロックを有する。従って、省略された統合により取られる時間が節約され、結果としてメモリの性能が改善される。
以下に記載される、直接ファイル記憶におけるいくつかの他の展開があり、それらは、以下のように要約できる。
1.ひとたびファイルが閉じられると、そのファイルは、古いデータを含んでいない限り、ファイルガベージコレクションキューに加えられない。
2.ファイルのガベージコレクションは、別のファイルからのデータを含む共通ブロックを作成しない。ガベージコレクションの間にコピーされなければならないファイルのためのデータは、そのファイルのための現在のプログラムブロックにプログラムされる。プログラムブロックは、ガベージコレクションの最後に部分的にプログラムされて残る。
3.ファイルの削除によって古いものにされるブロック中のファイルグループの結果として、データが共通ブロックから再配置されなければならない場合、残る有効なデータはプログラムブロックの利用可能な空間に再配置される。
4.プログラムブロックの全部または一部に直接書き込まれたホストデータの移動は、回避される。
5.ファイルのガベージコレクションの間に、データは、そのファイルのためのプログラムブロックに再配置される。専用の中間コピーブロックは皆無である。
6.データは、メモリシステムのコントローラバッファメモリとデータの完全なセクタ中のメモリセルアレイとの間で転送される。これにより、プログラミングの間のECCの発生およびデータを読み出す間のECCのチェックが可能になる。
7.共通ブロック中のデータグループまたはファイルグループの開始は、メタページの開始に整合される。オンチップコピーはその結果、ブロック統合のために用いられ得る。プログラムブロック中のデータグループは、物理的構造への特定の整合を全く有さない。
8.フラッシュメモリ内のスワップブロックは、アクティブではない、すなわち、最近のwrite コマンドが別のファイルに関する場合の、開いているファイルのための揮発性コントローラバッファメモリ中に維持されたデータの保全コピーを行うために用いられる。スワップブロックは、利用可能なバッファメモリ容量が、より多くの開いているファイルを、それらの間でのスワップ操作の使用によってサポートできるようにするため、仮想バッファ構造の一部として用いられることもある。
9.FITファイルが、その現在の範囲があふれるので、別のFIT範囲に移動される場合、ディレクトリ中のファイルデータポインタは、新しいFIT範囲を反映するように更新される。
10.FIT範囲についてのFIT更新ブロック中のデータは、FIT更新ブロック中の範囲についてのデータ量がしきい値を越える場合に、範囲についてのFITブロック中のデータと統合される。これにより、新しいファイルについてのデータが、FITブロックに統合されることが可能になる。
11.FIT更新ブロックの圧縮の間、十分な消去済空間が存在すれば、閉じられたファイルのためのFITファイルは、その範囲のためのFITブロックに再配置される。さもなければ、そのFITファイルは、圧縮されたFIT更新ブロックに再配置される。
12.ホストは、メタブロックのサイズと同じ、等しいサイズをセット中のすべてのファイルが有するようにwrite_pointer およびread_pointer コマンドを用いることができ、セット中の1つのファイルが、このファイルが閉じられた直後に単一のメタブロックに統合されるようにするために、close およびidleコマンドを用い得る。
13.ホストコマンドのセットは、命令されたデータ書き込みまたは読み出しが始まるメモリドレスを与えるwrite_pointer およびread_pointer の値についてのcompanion コマンドを含む指定されたfileIDについてのreadコマンドおよびwrite コマンドを含む。
添付図面は、本願の一部として含まれ、以下の説明において参照される。
1.直接データファイル・プラットフォーム
1.1概要
直接データファイル・プラットフォームを有するメモリカードが図1−1に例示してある。直接データファイル・プラットフォームは、データがファイル名およびファイルオフセットアドレスにより識別される、ファイル組織化データ記憶デバイスである。これは、データ記憶以外の機能を含み得るメモリカードにおける記憶プラットフォームとして働く。ファイルデータは、外部ファイルインターフェイスチャネルによりこのプラットフォーム中でアクセスされる。
記憶デバイスは、論理アドレスを全く持たない。独立したアドレス空間が各ファイルについて存在し、メモリ管理アルゴリズムが、データのファイル構造に従ってデータ記憶を組織する。直接データファイル・プラットフォームにおいて用いられるデータ記憶の組織化は、従来の論理ブロック化メモリ管理を有する従来のファイルシステムを組み込むファイル記憶デバイスの操作特性と比べて操作特性にかなりの向上をもたらす。
1.2プラットフォームの構成要素
直接データファイル・プラットフォームは、図1−2に例示されるような機能性層に構造化された以下の構成要素を有する。
直接データファイルインターフェイス:カード中の他の機能ブロックから、ファイル名およびファイルオフセットアドレスにより識別されたデータへのアクセスを提供するファイルAPI。
ファイル−ツー−フラッシュマッピングアルゴリズム:ファイル断片化を排除し最高の性能および耐久性を提供するファイル組織化データ記憶のための方式。
ファイルデータのプログラミング:ファイル−ツー−フラッシュマッピングアルゴリズムに従うファイルデータをプログラムすること。
ファイルデータの読み出し:フラッシュメモリからの、ファイルオフセットアドレスにより指定されたデータを読み出すこと。
ファイル削除:削除されたファイルについてのデータを含むブロックを識別し、それらのブロックをガベージコレクションキューに加えること。
ガベージコレクション:古いデータにより占められたメモリ容量を回復するために実行される操作。これらの操作は、ブロックを消去するために、有効なデータを別の位置へコピーすることを伴うことがある。
ファイルインデックス化:ファイルインデックス化により、あるファイルについての有効なデータグループの位置を、オフセットアドレス順に、識別することが可能になる。
データバッファリングおよびプログラミング:プログラムされるべきデータについてのバッファメモリの使用、およびプログラムブロック中のファイルデータをプログラムするシーケンス。
消去ブロック管理:ファイルデータまたは制御情報の記憶のための割り当てに利用可能なデバイス中の消去ブロックのプールの管理。
ブロック状態管理:ファイルデータ記憶のためのブロックが分類できる8つの状態間の移行。
制御データ構造:目的専用のフラッシュブロック中に格納された制御データ構造。
2.直接データファイルインターフェイス
直接データファイルインターフェイスは、直接データファイル・プラットフォームへのAPIであり、フラッシュ大容量データ記憶を含むデバイス内のフラッシュメモリ管理のためのバックエンドシステムを形成する。
2.1コマンドセット
以下のセクションは、複数のソースとのファイルベースのインターフェイスをサポートする一般的なコマンドを定義する。コマンドは、6つのクラスにおいて定義される。
1.ファイルコマンド
2.データコマンド
3.ファイル情報コマンド
4.ストリームコマンド(モデリングについてのみ)
5.状態コマンド
6.デバイスコマンド
2.1.1ファイルコマンド(図2−1参照)
ファイルは、デバイス内でfileIDにより独立して識別されるオブジェクトである。ファイルは、ホストにより作成されたデータのセットを含むか、またはデータを全く持たないことがあり、その場合、ファイルは、ディレクトリまたはフォルダを表す。
2.1.1.1create(作成)
createコマンドは、デバイス中のディレクトリ内の<fileID>により識別されたエントリを作成する。<fileID>パラメータが省略されれば、デバイスは、利用可能な値をファイルに割り当て、それをホストに返す。これは、ファイルを作成する通常の方法である。
ホストは代わりに、<fileID>値をファイルに割り当てることができる。fileIDの特定の値がホストインターフェイスプロトコル内のファイルの特定タイプを示せば、この方法が用いられ得る。例えば、ルートディレクトリは、ホストにより特定のfileIDを割り当てられ得る。
2.1.1.2open(開く)
このコマンドは、<fileID>により指定されたファイルのための後のデータコマンドの実行を可能にする。ファイルが存在しなければ、エラーメッセージが返される。ファイルのためのwrite_pointer がファイルの終わりに設定され、ファイルのためのread_pointer がファイルの最初に設定される。file_infoのためのinfo_write_pointer は、file_infoの終わりに設定され、ファイルのためのinfo_read_pointer は、file_infoの最初に設定される。同時に開いていることができるファイルの最大数がある。この数が超過されれば、コマンドは実行されず、エラーメッセージが返される。同時に開いているファイルの最大数は、例えば、8であり得る。
指定されたファイルに書き込むためのデバイス内の資源は、その後のwrite, insert またはdeleteコマンドの受信後にのみ利用可能にされる。
2.1.1.3close (閉じる)
このコマンドは、指定されたファイルのためのその後のデータコマンドの実行をできなくする。ファイルについてのwrite_pointer, read_pointer, info_write_pointer およびinfo_read_pointer 値は、無効になる。
2.1.1.4delete(削除)
deleteコマンドは、<fileID>により指定されたファイルについてのディレクトリ、ファイルインデックステーブルおよび情報テーブルエントリが削除されるべきであることを示す。ファイルのためのデータが消去され得る。削除されたファイルは、その後アクセスできない。
2.1.1.5erase (消去)
erase コマンドは、<fileID>により指定されたファイルについてのディレクトリ、ファイルインデックステーブルおよび情報テーブルエントリが削除されるべきであることを示す。何か他のコマンドが実行される前に、ファイルデータは消去されなければならない。消去済ファイルは、その後アクセスできない。
2.1.1.6list_files
ディレクトリ中のすべてのファイルについてfileID値は、list_files コマンドの受信に続いて、デバイスから番号順にストリームされ得る。最後のファイルに達すると、fileIDストリーミングは終了され、この条件は、statusコマンドによりホストによって識別され得る。list_files コマンドは、何か他のコマンドの受信により終了される。
2.1.2データコマンド(図2−2参照)
データコマンドは、指定されたファイルのためのデータ入出力操作を開始し、ファイル内のオフセットアドレス値を定義するために用いられる。指定されたファイルは、ホストにより開かれていなければならない。そうでなければ、エラーが返される。は、ファイルが最後に開かれたときにホストへ返されたファイルハンドルである。
2.1.2.1write (書き込み)
write コマンドの受信に続いてデバイスにストリームされたデータは、write_pointer の現在値により定義されたオフセットアドレスにおいて、指定されたファイルに上書きされる。write コマンドは、ファイルについての新しいデータを書き込み、データをファイルに付加し、ファイル内のデータを更新するために用いられる。write コマンドは、何か他のコマンドの受信によって終了される。
2.1.2.2insert(挿入)
insertコマンドの受信に続いてデバイスにストリームされたデータは、write_pointer の現在値により定義されたオフセットアドレスにおいて、指定されたファイルに挿入される。ファイルサイズは、挿入されたデータの長さだけ増大される。insertコマンドは、何か他のコマンドの受信によって終了される。
2.1.2.3remove(除去)
removeコマンドは、write_pointer の現在値により定義されたオフセットアドレスにおいて、指定されたファイルから、<length>により定義された連続データを削除する。ファイルサイズは<length>だけ減少させらされる。
2.1.2.4read(読み出し)
read_pointer の現在値により定義されたオフセットアドレスにおける指定されたファイル中のデータは、readコマンドの受信に続いてデバイスからストリームされ得る。
ファイルの終わりに達すると、データストリーミングは終了され、この条件は、statusコマンドによってホストにより識別され得る。readコマンドは、何か他のコマンドの受信によって終了される。
2.1.2.5save_buffer
デバイスバッファ中に含まれ、フラッシュメモリにまだプログラムされていない指定されたファイルについてのデータは、フラッシュメモリ中の一時的な位置に保存される。
その後のwrite またはinsertコマンドが受信されると、そのデータは、バッファに返され、そのコマンドに関するデータと共にフラッシュするようにプログラムされる。
2.1.2.6write_pointer
write_pointer コマンドは、指定されたファイルについてのwrite_pointer を、指定されたオフセットアドレスに設定する。write またはinsertコマンドに続いてデータがデバイスへストリームされるにつれ、write_pointer はデバイスにより増分される。
2.1.2.7read_pointer
read_pointer コマンドは、指定されたファイルについてのread_pointer を、指定されたオフセットアドレスに設定する。readコマンドに続いてデータがデバイスからストリームされるにつれ、read_pointer はデバイスにより増分される。
2.1.3infoコマンド(図2−3参照)
file_infoは、ファイルに関連付けられているホストにより生成された情報である。file_infoの性質と内容は、ホストにより決定され、それはデバイスによって解釈されない。infoコマンドは、指定されたファイルについてのfile_info入出力操作を開始し、file_info内のオフセットアドレス値を定義するために用いられる。
2.1.3.1write_info
デバイスへストリームされたfile_infoは、write_infoコマンドの受信に続いて、info_write_pointer の現在値により定義されたオフセットアドレスにおいて、指定されたファイルについてのfile_infoを上書きする。指定されたファイルについてのfile_infoの内容および長さは、ホストにより決定される。write_infoコマンドは、何か他のコマンドの受信により終了される。
2.1.3.2read_info
info_read_pointer の現在値により定義されたオフセットアドレスにおける指定されたファイルについてのfile_infoは、read_infoコマンドの受信に続いてデバイスへストリームされ得る。file_infoの終わりに達すると、file_infoストリーミングは終了され、この条件はstatusコマンドによりホストによって識別され得る。read_infoコマンドは、何か他のコマンドの受信により終了される。
2.1.3.3info_write_pointer
info_write_pointer コマンドは、指定されたファイルについてのinfo_write_pointer を、指定されたオフセットアドレスに設定する。info_write_pointer は、write_infoコマンドに続いてfile_infoがデバイスにストリームされるにつれ、デバイスにより増分される。
2.1.3.4info_read_pointer
info_read_pointer コマンドは、指定されたファイルについてのinfo_read_pointer を、指定されたオフセットアドレスに設定する。info_read_pointer は、read_infoコマンドに続いてfile_infoがデバイスからストリームされるにつれ、デバイスにより増分される。
2.1.4ストリームコマンド(図2−4参照)
ストリームコマンドは、直接データファイル・プラットフォームの行動モデルと共にのみ用いられる。それらの目的は、データコマンドに関連して、ホストへまたはホストからのデータのストリーミングをエミュレートすることである。
2.1.4.1ストリーム
ストリームコマンドは、ホストによりプラットフォームへまたはプラットフォームから転送されるべき<length>により定義されたデータの中断されないデータのストリームをエミュレートする。データがバッファメモリに追加またはバッファメモリから除去されるにつれ、ストリームの残りの長さを表す変数が、プラットフォームのモデルにより減分される。
2.1.4.2pause (休止)
pause コマンドは、直接データファイルモデルの操作を制御しているコマンドリスト中の後続コマンドの実行の前に挿入される長さ<time>の遅延を挿入する。<time>は、マイクロ秒で定義される。
2.1.5状態コマンド(図2−6参照)
状態コマンドは、デバイスの状態を制御する。
2.1.5.1idle(アイドル)
idleコマンドは、ホストが、直接データファイルデバイスをアイドル状態にすることを示し、このアイドル状態の間、デバイスは、内部ハウスキーピング操作を実行し得る。ホストは、アイドル状態のデバイスからわざと電力を取り去らない。デバイスが内部操作でビジーであるかどうかにかかわらず、アイドル状態は、ホストによる何か他のコマンドの伝送によって終了され得る。そのような他のコマンドが受信されると、デバイス中で進行中のどのような内部操作も、指定された時間以内に中断または終了されなければならない。この時間の例は、10ミリ秒以下である。
2.1.5.2standby (待機)
standby コマンドは、ホストが、直接データファイルデバイスを待機状態にすることを示し、この待機状態の間、デバイスは、内部ハウスキーピング操作を実行できない。ホストは、待機状態のデバイスからわざと電力を取り去らない。待機状態は、ホストによる何か他のコマンドの伝送によって終了され得る。
2.1.5.3shutdown(シャットダウン)
shutdownコマンドは、デバイスが次にビジー状態にならない場合、ホストにより電力がデバイスから取り去られることを示す。すべての開いているファイルは、shutdownコマンドに応答してデバイスにより閉じられる。
2.1.6デバイスコマンド(図2−6参照)
デバイスコマンドは、ホストがデバイスに問い合わせできるようにする。
2.1.6.1capacity(容量)
capacityコマンドに応答して、デバイスは、デバイス中に格納されたファイルデータの容量、および新しいファイルデータ用に利用可能な容量を報告する。
2.1.6.2status(ステータス)
statusコマンドに応答して、デバイスは、その現在のステータスを報告する。
ステータスは、以下の3つのタイプのビジーステータスを含む。
1.デバイスは、データの書き込みまたは読み出しのためのフォアグラウンド操作の実行でビジーである。
2.デバイスは、デバイスがアイドル状態にあった間に開始されたバックグラウンド操作の実行でビジーである。
3.バッファメモリはビジーであり、データの書き込みまたは読み出しのためにホストが利用できない。
2.1.7コマンドパラメータ
以下のパラメータは、以下で定義されるようなコマンドと共に用いられる。
2.1.7.1FileID
これは、デバイスのディレクトリ内のファイルを識別するために用いられるファイル識別子である。
2.1.7.2オフセット
オフセットは、ファイルまたはfile_infoの開始に関する、バイトで表した、ファイルまたはfile_info内の論理アドレスである。
2.1.7.3長さ
これは、連続オフセットアドレスを有するファイルについてのデータランの、バイトで表した長さである。
2.1.7.4時間
これはマイクロ秒で表した時間である。
3.ファイル−ツー−フラッシュマッピングアルゴリズム
直接データファイル・プラットフォームにより採用されたファイル−ツー−フラッシュマッピングアルゴリズムは、ホストが、ファイルベースのインターフェイスを介してファイルデータ書き込みおよびファイル削除操作を実行する際に、最大システム性能および最大メモリ耐久性を提供するために定義されたファイル組織化データ記憶のための新しい方式である。マッピングアルゴリズムは、フラッシュメモリ中のブロック間のファイルデータのコピーを最小限にするように設計されている。これは、1つ以上のファイルについてのデータを含むブロックの発生を最も低くするやり方でファイルデータをフラッシュブロックにマッピングすることにより達成される。
3.1ファイル−ツー−フラッシュマッピング原理
3.1.1ファイル
ファイルは、ホストにより作成および維持されるデータのセットである。データは、ファイル名によってホストにより識別され、ファイルの冒頭からのそのオフセット位置によってアクセスされ得る。ファイルオフセットアドレスは、ホストにより設定されることができ、書き込みポインタとしてデバイスにより増分され得る。
3.1.2物理メモリ構造
直接データファイル・プラットフォームは、固定サイズのメタブロック中のファイルについてのすべてのデータを格納する。メタブロックを含むフラッシュ消去ブロックの実際の数、すなわち、消去ブロックの並列性(parallelism) は、製品間で変わり得る。本願明細書全体を通して、用語「ブロック」は、「メタブロック」を示すために用いられる。
用語「メタページ」は、メタブロックの完全な並列性を有するページを示すために用いられる。メタページは、プログラミングの最大単位である。
用語「ページ」は、メモリのプレーン内、すなわち、フラッシュ消去ブロック内のページを示すために用いられる。ページは、プログラミングの最小単位である。
用語「セクタ」は、ECCが関連付けられた格納されたデータの単位を示すために用いられる。セクタは、フラッシュメモリとの間のデータ転送の最小単位である。
ファイルについてのオフセットアドレスと物理フラッシュメモリ構造との間で維持される指定された整合は皆無である。
3.1.3データグループ
データグループは、単一のメモリブロック中の隣接する物理アドレスにおいてプログラムされた、ファイル内の隣接するオフセットアドレスを持つファイルデータのセットである。ファイルは通常、多数のデータグループとしてプログラムされる。データグループは、1バイトと1つのブロックとの間の任意の長さを有し得る。各データグループは、相互参照目的のためのファイル識別子情報を含むヘッダを用いてプログラムされる。ファイルのためのデータは、それが含むデータグループに従って物理メモリ中でインデックスを付けられる。ファイルインデックステーブルは、ファイルの各データグループについてのファイルオフセットアドレスおよび物理アドレス情報を提供する。
3.1.4プログラムブロック
ファイルは、ファイルデータがプログラムされるようにするために、ホストにより開かれなければならない。各開いているファイルは、プログラムブロックとして割り当てられた専用ブロックを有し、そのファイルのためのデータは、プログラムブロック内のプログラムポインタにより定義された位置でプログラムされる。ファイルがホストにより開かれるとき、プログラムブロックがすでに存在していなければ、ファイルのためのプログラムブロックが開かれる。プログラムポインタは、プログラムブロックの冒頭に設定される。ホストにより開かれるファイルのためにプログラムブロックがすでに存在していれば、そのプログラムブロックは、ファイルのためのデータをプログラムするために使われ続ける。
ファイルデータは、ファイル内のそのオフセットアドレスまたはそのオフセットアドレスのためのデータが前もってプログラムされているかどうかにかかわらず、ファイルデータがホストから受信される順序でプログラムブロック中でプログラムされる。プログラムブロックが一杯になると、そのプログラムブロックはファイルブロックとして知られ、消去済ブロックプールからの消去済ブロックは、新しいプログラムブロックとして開かれる。ファイルについてのデータを格納しているブロック間の物理アドレス関係は皆無である。
3.1.5共通ブロック
共通ブロックは、1つ以上のファイルについてのデータグループを含んでいる。同じファイルについての複数のデータグループが共通ブロック中に存在すれば、それらのデータグループは、隣接して配置され、隣接している単位は、ファイルグループとして知られる。データは、ブロック統合操作または共通ブロックのガベージコレクション操作の間にのみ、共通ブロックにプログラムされる。
共通ブロック内の個別のデータグループまたはファイルグループの開始は、メタページの開始と整合しなければならない。
ファイルグループ内のデータグループには、介入スペースがない。そのようなデータグループ間の境界は、ページ内で生じ得る。ファイルは、単一の共通ブロック中でのみデータを有するべきである(これの例外については、8.3.4参照)。
3.2ファイルタイプ
3.2.1プレーンファイル
プレーンファイルは、任意数の完全なファイルブロックおよび1つの部分的にプログラムされたプログラムブロックを含む。プレーンファイルは、通常逐次オフセットアドレス順で、ホストからのファイルのためのデータのプログラミングにより、または編集済ファイルのガベージコレクションにより作成され得る。プレーンファイルの例が図3−1に示してある。プレーンファイルは、開いているファイルまたは閉じられたファイルであり得る。
ファイルについてのさらなるデータが、プログラムブロック中のプログラムポインタにおいてプログラムされ得る。ファイルがホストにより削除されれば、そのデータを含むブロックは、そのようなブロックからのデータをフラッシュメモリ中の別の位置にコピーする必要なしに、直ちに消去され得る。従って、プレーンファイル形式は非常に効率的であり、ファイルをできるだけ長くこの形式で維持することには利点がある。
3.2.2共通ファイル
共通ファイルは、任意数の完全なファイルブロック、および他の無関係なファイルのためのデータと共にそのファイルのためのデータを含む1つの共通ブロックを含む。例が図3−2に示してある。共通ファイルは、ガベージコレクション操作の間、またはプログラムブロックの統合によりプレーンファイルから作成され得る。
共通ファイルは通常、閉じたファイルであり、関連付けられた書き込みポインタを持たない。ホストが共通ファイルを開けば、プログラムブロックが開かれ、プログラムポインタは、プログラムブロックの冒頭に設定される。ファイルがホストにより削除されれば、そのファイルブロックは直ちに消去されるであろうが、無関係なファイルまたは無関係なファイルのためのデータは、共通ブロックが消去される前に、ガベージコレクション操作において共通ブロックからフラッシュメモリ中の別の位置にコピーされなければならない。
3.2.3編集済プレーンファイル
プレーンファイルは、ホストによりいつでも編集でき、ホストは、そのファイルのための前にプログラムされたオフセットアドレスのための更新されたデータを書き込む。例が図3−3に示してある。そのような更新されたデータは、プログラムブロック中のプログラムポインタにおいて通常のやり方でプログラムされ、結果として生じる編集済プレーンファイルは、1つ以上の古いファイルブロック中、またはプログラムブロックそれ自体の中に古いデータを含む。
編集済プレーンファイルは、ファイルのためのガベージコレクション操作においてプレーンファイルに復元され得る。そのようなガベージコレクションの間、任意の有効なファイルデータが、各古いファイルブロックからファイルのためのプログラムポインタにコピーされ、結果として生じる完全に古いブロックが消去される。ガベージコレクションは、可能であれば、ファイルがホストにより閉じられるまで実行されない。
3.2.4編集済共通ファイル
開いた共通ファイルは、ホストによりいつでも編集でき、ホストは、そのファイルのための前にプログラムされたオフセットアドレスのための更新されたデータを書き込む。例が図3−4に示してある。そのような更新されたデータは、プログラムブロック中のプログラムポインタにおいて通常のやり方でプログラムされ、結果として生じる編集済共通ファイルは、1つ以上の古いファイルブロック中、共通ブロック中、またはプログラムブロックそれ自体の中に古いデータを含む。
編集済共通ファイルは、ファイルのためのガベージコレクション操作においてプレーンファイル形式に復元され得る。そのようなガベージコレクションの間、任意の有効なファイルデータが、各古いファイルブロックおよび共通ブロックからファイルのためのプログラムポインタにコピーされる。結果として生じる完全に古いファイルブロックが消去され、古い共通ブロックは、別個のその後のガベージコレクション操作のために記録される。
3.3ガベージコレクションおよびブロック統合
3.3.1ガベージコレクション
ガベージコレクション操作は、古いデータにより占められたメモリ容量を回復するために実行される。これらのガベージコレクション操作は、1つのブロックを消去するために、有効なデータを別の位置へコピーすることを伴うことがある。ガベージコレクションは、古いデータの作成に応答して直ちに実行される必要はない。保留中のガベージコレクション操作は、ガベージコレクションキューに記録され、その後スケジューリング・アルゴリズムに従って最適レートで実行される。
直接データファイル・プラットフォームは、ホストコマンドにより開始されることがあるバックグラウンドガベージコレクション操作をサポートする。これにより、ホストは、内部ハウスキーピング操作のために休止時間をデバイスに割り当てることが可能になり、これにより、ファイルがその後ホストにより書き込まれるときにより高い性能が可能になる。
十分なバックグラウンド時間がホストにより利用可能にされなければ、デバイスはガベージコレクションをフォアグラウンド操作として実行する。ガベージコレクション操作のバーストは、ホストからのファイルデータのプログラミングのバーストとインターリーブされる。インターリーブ動作周期は、未処理分が蓄積されないことを保証しつつ、ガベージコレクションレートを最小に維持するために適応的に制御され得る。
3.3.2ブロック統合
デバイス中の各プレーンファイルは、不完全に満たされたプログラムブロックを含み、かなりのボリュームの消去済容量がそのようなプログラムブロック中にロックアップされることがある。共通ブロックも、消去済容量を含み得る。従って、閉じられたファイルおよび共通ブロックのための統合プログラムブロックの進行中のプロセスは、ロックされた消去済容量を制御するために実施される。ブロック統合は、ガベージコレクション機能の一部として扱われ、同じスケジューリング・アルゴリズムにより管理される。
プログラムブロックまたは共通ブロック中のデータは、1つ以上の無関係なファイルのためのデータと、そのような無関係なデータを別の共通ブロックまたはプログラムブロックからコピーすることによって統合される。当初のブロックがプログラムブロックであったならば、それは共通ブロックになる。プログラムブロックを、別のプログラムブロックとではなく、古い共通ブロックと統合することが望ましい。古い共通ブロックは、古いデータを含み、従って、有効なデータをそのブロックから別の位置に移さなければならないことは避けがたい。しかし、プログラムブロックは古いデータを含まず、そのブロックからデータを別の位置へコピーすることは望ましくないオーバーヘッドである。
3.3.3平衡状態
ファイルデータがデバイス容量の高い百分率を占める場合、新しいファイルを書き込むための容量を作成するために、ホストは、ファイルに関する削除操作を実行しなければならない。この状態では、デバイス中のほとんどのファイルは、共通ファイル形式を有する。なぜならば、プレーンファイル形式のファイルのためのプログラムブロック中の消去済空間のための利用可能な容量がほとんどないからである。
共通ファイルの削除は、ガベージコレクションの間に無関係なファイルがその共通ブロックから再配置されるための有効なデータを必要とする。そのようなファイルグループのためのデータは最も一般的には、閉じられたファイルのための1つ以上のプログラムブロック中の利用可能な容量に再配置される。ホストにより最近書き込まれ次に削除されたファイルのためのプログラムブロック中の利用可能な未使用容量と、ホストにより削除されるファイルの結果として共通ブロックからファイルデータを再配置するための必要容量との間に、平衡が頻繁にある。この一般的な平衡状態は、ファイルデータをプログラムブロックから再配置する必要を低減し、ファイル−ツー−フラッシュマッピングアルゴリズムの効率に寄与する。
4.デバイス操作
4.1デバイス操作の実行
デバイスの操作シーケンスは、ホストから供給されたコマンドの流れにより決定される。ホストコマンドが受信されると、現在のデバイス操作が中断され、コマンドは正常に解釈される。一定のコマンドは、以下の4つの主要なデバイス操作のうちの1つの実行を引き起こす。
1.データの読み出し
2.データのプログラミング
3.ファイルの削除、または
4.ガベージコレクション
デバイス操作は、以下の条件の1つに到達するまで続く。
1.操作が完了され、
2.別のホストコマンドが受信されるか、または
3.フォアグラウンドのガベージコレクションモードにおいて、インターリーブされたバーストの最後に到達する。
プライオリティのガベージコレクション操作が実行のためにキューに入れられると、これらの操作は、いずれかの新しいコマンドが解釈される前に、完了される。
デバイス操作を示す全体的な流れ図が、図4−1として示してある。
5.ファイルデータのプログラミング
5.1ファイルデータのプログラミングのための原理
ファイルのためのデータは、ホストからのwrite またはinsertコマンドに続いてそのデータがホストからデバイスへストリームされる際にフラッシュメモリにプログラムされる。次のプログラム操作のためにバッファメモリ中に十分なデータが蓄積されたとき、データは、ファイルのためのプログラムブロックにおいてプログラムされる。この操作の説明については、第9章を参照のこと。
プログラムブロックが一杯になると、そのブロックは、ファイルブロックと呼ばれ、消去済ブロックプールからの消去済ブロックが、プログラムブロックとして割り当てられる。加えて、共通ブロックおよび古いブロックのためのファイルインデックステーブルおよびガベージコレクションキューが更新される。
ファイルデータのプログラミング手順は、ガベージコレクションのスケジューリング・アルゴリズムにより設定されるインターリーブなパラメータN1に従って、フォアグラウンドのガベージコレクションのバーストを開始する(セクション8.4参照)。メタページプログラム操作がフラッシュメモリにおいて開始されるときはいつでも、インターリーブなプログラムカウンタが増分され、このカウンタが値N1を超えると、フォアグラウンドモードでのガベージコレクション操作が開始される。
ファイルデータのプログラミングは、ホストが別のコマンドを伝送するまで、1つのメタページのユニット中に留まる。
ファイルデータのプログラミングの例を例示する流れ図が、図5−1として示してある。
6.ファイルデータの読み出し
6.1ファイルデータの読み出しのための原理
ホストからのreadコマンドに応答して、read_pointer により指定されたところから始まるファイルオフセットアドレスのためのデータが、フラッシュメモリから読み出され、ファイルの終わりに達するまで、ホストに逐次返される。ファイルインデックステーブル(FIT)が読み出され、read_pointer に対応する位置を識別するためにファイルのためのFITエントリが評価される。それに続くFITエントリは、ファイルのためのデータグループの位置を指定する。
ファイルデータは、ファイルの終わりに達するまで、または、ホストが別のコマンドを伝送するまで、1つのメタページの単位で読み出される。
ファイルデータ読み出しプロセスの例が、図6−1に示してある。
7.ファイルの削除
7.1ファイル削除のための原理
ホストからのファイルのためのdeleteコマンドに応答して、そのファイルのためのデータを含むブロックが識別され、その後のガベージコレクション操作のためにガベージコレクションキューに加えられる。ファイルを削除するための手順は、これらのガベージコレクション操作を開始せず、従って、ファイルのためのデータは、直ちに消去されない。
ファイルのためのFITエントリは、当初ファイルのためのデータを含み得る共通ブロックを識別するために評価される。その後、ファイルのためのFITエントリがオフセットアドレス順に評価されて、データグループが位置するデータブロックが、その後のガベージコレクションのために、共通ブロックキューまたは古いブロックキューのいずれかに加えられる。ファイルディレクトリおよびファイルインデックステーブルは次に、ファイルのためのエントリを除去するために更新される。
7.2ファイルの消去
ホストからのファイルのためのerase コマンドに応答して、deleteコマンドについてと同じ手順がたどられるべきであるが、ブロックは、ガベージコレクションのためのプライオリティの共通ブロックキューおよびプライオリティの古いブロックキューに加えられるファイルのためのデータを含んでいる。
主要なデバイス操作シーケンスは次に、何か他のホストコマンドが実行される前に、これらのブロックのためのガベージコレクション操作が実行されることを保証する。これは、erase コマンドにより識別されたファイルのためのデータが直ちに消去されることを保証する。
ファイル削除プロセスの流れ図が、図7−1として示してある。
8.ガベージコレクション
8.1ガベージコレクションのための原理
ガベージコレクションは、古いファイルデータにより占められたフラッシュメモリ容量を回復するために実行されなければならない操作である。ガベージコレクションは、ファイルの削除またはファイルのデータの編集の結果として必要になることがある。
ブロック統合は、ガベージコレクションの一形態であり、ファイルデータで不完全に満たされたブロックの消去済容量を回復し、無関係なファイルを格納するためにそれらのブロックの使用を可能にするために実行される。統合は、プレーンファイル中のプログラムブロックを共通ブロックへ変換するためにプレーンファイル中のプログラムブロックに関して、または共通ブロックの数を低減するために共通ブロックに関して実行され得る。
ガベージコレクションおよびブロック統合のプロセスは、ソースブロックが消去され得るために、ファイル−ツー−フラッシュマッピングアルゴリズムの要求に合わせて、有効なファイルデータをソースフラッシュブロックから1つ以上の宛先ブロックへ再配置した。
保留中のガベージコレクション操作は直ちには実行されないが、段階的実行のためのスケジューリング・アルゴリズムに従って実行される。ガベージコレクションを必要とするオブジェクトのためのエントリが、デバイスの操作の間に3つのガベージコレクションキューにその時々に加えられる。別個のキューが、ファイル、古いブロック、および共通ブロックについて存在する。オブジェクトが、あらかじめ決められたプライオリティの順番で次のガベージコレクション操作のためのキューから選ばれる。そのキューが空であれば、ブロック統合は実行され得る。
ガベージコレクション操作は、2つのやり方でスケジュールを組むことができる。バックグラウンド操作は、ホストがデバイスへの読み出しまたは書き込みアクセスを行っていない場合に、ホストにより開始することができ、そのホストが別のアクセスを行うまで連続的にデバイスによって実行される。フォアグラウンド操作は、デバイスがホストによりアクセスされている間に、そのデバイスによりスケジュールを組むことができ、ホストから受信されたファイルデータのためのプログラム操作のバーストとインターリーブされたバーストにおいて実行される。インターリーブされたバーストの長さは、ガベージコレクションレートを要求される最小値に常に維持するために適応的に制御され得る。
8.2ガベージコレクションキュー
ガベージコレクションキューは、保留中のガベージコレクション操作がそのためにあるオブジェクトのためのエントリを含む。3つのキューは各々、古いブロック、共通ブロックおよびファイルのためのエントリをそれぞれ含む。2つの付加的なキューは、これら3つのキューよりも高いプライオリティを与えられ、古いブロックおよび共通ブロックそれぞれのためのエントリを含む。これら5つのガベージコレクションキューは、フラッシュメモリ中の制御ブロック中の制御ログに格納される。
8.2.1プライオリティの古いブロックキュー
このキューは、ホストからのerase コマンドの結果として完全に古いものにされたブロックのためのエントリを含む。これは、最も高いプライオリティのガベージコレクションキューである。このキューの中で識別されたすべてのブロックに関するガベージコレクション操作は、何か他のコマンドがホストから受け取られる前に、または何か他のキューからのオブジェクトに関してガベージコレクション操作が開始される前に、完了されなければならない。
8.2.2プライオリティの共通ブロックキュー
このキューは、ホストからのerase コマンドの結果として部分的に古くされた共通ブロックのためのエントリを含む。これは、2番目に高いプライオリティのガベージコレクションキューである。このキューの中で識別されたすべてのブロックに関するガベージコレクション操作は、何か他のコマンドがホストから受け取られる前に、またはより低いプライオリティのキューからのオブジェクトに関してガベージコレクション操作が開始される前に、完了されなければならない。
8.2.3古いブロックキュー
このキューは、ホストからのdeleteコマンド、またはファイルのデータの編集の結果として完全に古いものにされたブロックのためのエントリを含む。これは、3番目に高いプライオリティのガベージコレクションキューである。このキューの中で識別されたすべてのブロックに関するガベージコレクション操作は、より低いプライオリティのキューからのオブジェクトに関して操作が開始される前に、完了されるべきである。
8.2.4共通ブロックキュー
このキューは、ホストからのdeleteコマンド、またはファイルのデータの編集の結果として部分的に古くされた共通ブロックのためのエントリを含む。これは、4番目に高いプライオリティのガベージコレクションキューである。このキューの中で識別されたすべてのブロックに関するガベージコレクション操作は、より低いプライオリティのキューからのオブジェクトに関して操作が開始される前に、完了されるべきである。
8.2.5ファイルキュー
このキューは、ファイルのデータの編集の結果として古いデータを有するファイルのためのエントリを含む。これは、最も低いプライオリティのガベージコレクションキューである。ファイルがホストにより閉じられる場合、そのファイルがプレーンファイルでない限り、そのファイルのためのエントリがファイルキューに加えられる。従って、あるファイルがホストにより閉じられるときに、そのファイルがプレーンファイルであるのか、または編集済ファイル(プレーンまたは共通)であるのかを決定するために、そのファイルのためのFITエントリに関する分析を実行することが必要である。
この分析のための手順は以下の通りである。
1.関連のFITファイル中のFITエントリは、オフセットアドレス順に評価される。
2.データグループおよびデータグループヘッダの累積容量が決定される。
3.ファイルデータにより占められた物理容量が決定される。これは、そのファイルのためのデータを含むプログラムブロック以外のブロックの数に、プログラムブロック中の使用容量を加えたものである。
4.データグループ容量が物理容量のX%を超えれば、そのファイルは、プレーンファイルであると決定される。Xの値の例は、98%である。X%は、バッファ消去操作の結果生じるプログラムされていない空間がプレーンファイル中に残ることを見越して、100%未満である。
8.3ガベージコレクション操作
8.3.1古いブロック
古いブロックは、古いデータのみを含み、データを別のブロックへ再配置する必要なく消去できる。
8.3.2共通ブロック
共通ブロックは、ソースブロックであり、1つ以上のファイルのための1つ以上の部分的または完全に古いデータグループを含む。有効なデータは、このソースブロックから1つ以上の宛先ブロックに再配置されなければならない。
データは、完全ファイルグループの単位で再配置され、その場合、1つのファイルグループは、共通ブロック内の同じファイルのための1つ以上のデータグループを含む。各ファイルグループは、そのままの状態で宛先ブロックに再配置されるが、異なるファイルグループは異なるブロックに再配置され得る。
共通ブロックは、宛先ブロックとして好ましい選択であり、適切な共通ブロックが全く利用できなければプログラムブロックが続き、適切なプログラムブロックが全く利用できなければ消去済ブロックが続く。
ガベージコレクション操作は、以下の条件、すなわち、操作が完了するか、ホストがコマンドを送るか、またはフォアグラウンドモードにおいてインターリーブされたバーストの終わりに達するかの1つが発生するまで継続し得る。
共通ブロックのガベージコレクション操作についての流れ図が図8−5に示してある。
8.3.3ファイルガベージコレクション
ファイルガベージコレクションは、ファイルのための古いデータにより占められた容量を回復するために実行される。ファイルガベージコレクションは、編集済プレーンファイル状態または編集済共通ファイル状態のファイルをプレーンファイル状態に復元する。第1のステップは、ガベージコレクションの間にデータグループがそこからコピーされなければならない古いファイルブロックおよび共通ブロックを識別するために、そのFITファイル中のFITエントリに関する分析を実行することである。この分析のための手順は以下の通りである。
1.関連のFITファイル中のFITエントリが、オフセットアドレス順に評価される。
2.データグループを物理ブロックと関係付けるために、データグループリストが構築される。プログラムブロック中のデータグループは、このリストから除外される。
3.リスト中で参照される各ブロック中のデータグループおよびデータグループヘッダにより占められる物理容量が決定される。
4.データグループ容量がブロックの容量のX%を超えれば、そのブロックは、ファイルブロックであると決定される。Xの値の例は、98%である。X%は、バッファ消去操作の結果生じるプログラムされていない空間がファイルブロック中に残ることを見越して、100%未満である。
5.ファイルブロックであると決定されるブロック中のデータグループが、前に構築されたデータグループリスト構成から取り去られる。
改訂されたデータグループリスト中で参照されるデータグループは、古いファイルブロックまたは共通ブロック中に含まれ、ファイルガベージコレクション操作の間に、プログラムブロックにコピーされる。ファイルガベージコレクション操作の結果、ファイルのデータグループ構造は修正され得る。すなわち、再配置されたデータグループが、ブロック境界により2分されたり、または隣接するデータグループと併合されたりし得る。ファイルのためのプログラムブロックは、宛先ブロックとして用いられる。これが満たされると、別のプログラムブロックが開かれる。
ガベージコレクション操作は、以下の条件、すなわち、操作が完了するか、ホストがコマンドを送るか、またはフォアグラウンドモードにおいてインターリーブされたバーストの終わりに達するかの1つが発生するまで継続し得る。
ファイルガベージコレクション操作についての流れ図が図8−4に示してある。
8.3.4ブロック統合
ブロック統合は、不完全にプログラムされたプログラムブロックおよび共通ブロック中の消去済容量を回復するため、およびその容量を他のファイルのためのデータを格納するために利用可能にするため、実行される。
統合のためのソースブロックが、最小限の可能なデータ再配置後にブロックが消去され得るようにするために、最も低いプログラムされた容量を有するプログラムブロックログまたは共通ブロックログ中のブロックとして選択される。データは、完全ファイルグループの単位で再配置され、その場合、1つのファイルグループは、プログラムブロックまたは共通ブロック内の同じファイルのための1つ以上のデータグループを含む。各ファイルグループは、そのままの状態で宛先ブロックに再配置されるが、異なるファイルグループは異なるブロックに再配置され得る。
共通ブロックは、宛先ブロックとして好ましい選択であり、適切な共通ブロックが全く利用できなければ、プログラムブロックが続く。まれに、宛先ブロックが全く利用できない場合、2つ以上の単一の宛先ブロックに再配置されるように、1つのファイルグループが分割され得る。
ブロック統合操作は、以下の条件、すなわち、操作が完了するか、ホストがコマンドを送るか、またはフォアグラウンドモードにおいてインターリーブされたバーストの終わりに達するかの1つが発生するまで継続し得る。
ブロック統合操作についての流れ図が図8−6に示してある。
8.4ガベージコレクション操作のスケジューリング
ガベージコレクションは、好ましくは、ホストデバイスがカードにアクセスしている期間の間にバックグラウンドタスクとして実行される。ホストにより開始されたバックグラウンドガベージコレクションは、直接データファイル・プラットフォームにおいてサポートされる。
しかし、ホストがデータをデバイスに書き込んでいる間にフォアグラウンドタスクとしてガベージコレクションを実行することが必要なこともあり得る。このモードでは、完全なガベージコレクション操作は、単一の事象として完了される必要はない。ガベージコレクションのバーストは、ガベージコレクション操作が複数の別個の段階で完了され、ホストへのデバイスの利用可能性の中断が限定されるように、ホストからのデータのプログラミングのバーストとインターリーブされ得る。
8.4.1バックグラウンド操作
バックグラウンドガベージコレクションは、ホストがidleコマンドをデバイスに送るときに開始される。これは、ホストが電力をデバイスから故意に除去せず、デバイスに直ちにアクセスすることを意図しないことを示す。しかし、ホストは、別のコマンドを伝送することにより、アイドル状態をいつでも終了し得る。
アイドル状態において、デバイスは、以下の条件、すなわち、ホストが別のコマンドを送る、または、すべてのガベージコレクションキューが空でありどのようなブロック統合操作も可能ではない、の1つが発生するまで連続的なガベージコレクション操作を実行する。
8.4.2インターリーブされた操作
インターリーブされたガベージコレクション操作は、ファイルデータをプログラムするための直接データファイルプロセスによって開始される。インターリーブされた操作は、図8−1に例示されている。ホストインターフェイスがアクティブでありかつN1のプログラム操作がフラッシュメモリに対してなされるホストデータ書き込み段階の後、デバイスは、ガベージコレクション段階に切り替わる。この段階において、フラッシュメモリに対するN2のプログラム操作が完了されるまで、1つ以上のガベージコレクション操作の一部が実行される。
進行中のガベージコレクション操作は、ガベージコレクション段階の最後に中断され、次のそのような段階において再開され得る。N1およびN2の値は、適応スケジューリング・アルゴリズムにより決定される。
8.4.3適応スケジューリング
適応スケジューリング方法は、ホストデータプログラミングおよびガベージコレクションのインターリーブされたバーストの相対長さを制御するために用いられ、その結果、ガベージコレクション操作によるホストデータ書き込み操作の中断は最小限に維持され得る。これは、その後の性能低下を引き起こし得る保留中のガベージコレクションの未処理分が蓄積されないことをさらに保証することによっても達成される。
8.4.3.1操作の原理
いつでも、デバイス状態は、前に書き込まれたホストデータにより占められる容量、消去済ブロックプール中のブロックの中の消去済容量、およびガベージコレクション操作により、さらなるホストデータを書き込むために利用可能にされ得る回復可能容量を含む。この回復可能容量は、プログラムブロック、共通ブロック、または前に書き込まれたホストデータと共有される古いファイルブロック中、あるいは完全に古いブロック中にあり得る。これらのタイプの容量利用が、図8−2に示してある。
ガベージコレクションの適応スケジューリングは、増分ホストデータのプログラミングと前に書き込まれたホストデータの再配置とのインターリーブ比率を制御し、その比率が、すべての回復可能容量がホストデータ用に利用可能にされ得る適応期間にわたって一定なままであり得るようにする。ホストがファイルを削除し、これが、前に書き込まれたホストデータが回復可能容量に変換されれば、インターリーブ比率はそれに応じて変更され、新しい適応期間が開始される。
最適なインターリーブ比率は、以下のように決定できる。
消去済ブロックプール中の消去済ブロックの数=erased_blocks、
プログラムブロックおよび共通ブロックを合わせた数=data_blocks、
プログラムブロックおよび共通ブロック中の有効なデータページの総数=data_pages 、
古いブロックの数=obsolete_blocks、
ブロック中のページ数=pages_per_block であるならば、
ガベージコレクションにより作成され得る消去済ブロックの数は、data_blocks-(data_pages/pages_per_block)により与えられ、
ガベージコレクション後の消去済ブロックの総数は、erased_blocks+obsolete_blocks+data_blocks-(data_pages/pages_per_block)により与えられ、
書き込まれ得る増分データメタページの数は、pages_per_block*(erased_blocks+obsolete_blocks+data_blocks)-data_pageにより与えられる。
有効なデータが、プログラムブロックおよび共通ブロック全体にわたって均等に分布される(データページカウントが低いブロックは、ブロック統合操作のためのソースブロックとして選択されるので、悲観的な仮定である)と仮定すれば、
ガベージコレクションの間に再配置されるメタページの数は、data_pages*(data_blocks-data_pages/pages_per_block)/data_blocksにより与えられる。
最適なインターリーブ比率N1:N2は、書き込まれ得る増分データメタページの数とガベージコレクションの間に再配置されなければならないメタページの数との比率である。従って、
N1:N2=(pages_per_block*(erased_blocks+obsolete_blocks+data_blocks)-data_pages)/(data_pages*(data_blocks-data_pages/pages_per_block)/data_blocks) となる。
古いファイルブロック中の古い容量の回復が適応スケジューリング・アルゴリズムに含まれていないことに留意されたい。そのような容量は、ファイルの編集のみに起因し、共通した発生ではない。かなりの容量が古いファイルブロック中に存在すれば、適応的に決定されたインターリーブ比率は最適条件ではないことがあるが、最小比率を有する操作(8.4.3.2において説明される)に切り替えることにより、そのようなブロックの効率的なガベージコレクションが保証される。
8.4.3.2インターリーブ制御
インターリーブ比率N1:N2は、以下のように3つのバンドにおいて定義される。
1)最大:ガベージコレクションが完全に阻止されることが決してないように保証するため、インターリーブ比率の最大限度が設定される。この最大限度の例は、10対1である。
2)適応:適応バンドにおいて、インターリーブ比率は、共通ブロックおよび古いブロックの保留中のガベージコレクション、ならびにプログラムブロックと共通ブロックとの統合にとって最適であるように制御される。インターリーブ比率は、
N1:N2=(pages_per_block*(erased_blocks+obsolete_blocks+data_blocks)-data_pages)/(data_pages*(data_blocks-data_pages/pages_per_block)/data_blocks) の関係から定義される。
ここで、N1およびN2は、ページプログラム操作の数として定義される。ガベージコレクションのバーストの好ましい期間を表すN2の値が定義される。この値の例は、16である。
3)最小:消去済ブロックプール中のブロックの数が、定義された最小値を下回れば、インターリーブ比率は、適応的に定義されないが、固定された最小限度に設定される。この最小限度の例は、1対10である。
8.4.3.3制御パラメータ
以下のパラメータは、適応スケジューリングの制御のために、フラッシュメモリ中の制御ブロック中の制御ログ中に維持される。
消去済ブロックカウント:消去済ブロックプール中のブロック数のカウントが維持される。消去済ブロックプールにブロックが付加され、かつこれから除去されるときに、このカウントが更新される。
プログラムおよび共通ブロックカウント:プログラムブロックおよび共通ブロックを合わせた数のカウントが維持される。共通ブロックは、古いデータを含み得る。プログラムブロックログおよび共通ブロックログにブロックが付加され、かつこれらから除去されるときに、このカウントが更新される。
プログラムおよび共通ブロックページカウント:プログラムブロックおよび共通ブロック中の有効なデータページの数のカウントが維持される。プログラムブロックログおよび共通ブロックログにブロックが付加され、かつこれらから除去されるときに、このカウントが更新される。
古いブロックカウント:ガベージコレクションを待っている完全に古くなったブロックの数のカウントが維持される。古いブロックのガベージコレクションキューにブロックが付加され、かつこれから除去されるときに、このカウントが更新される。
8.5ガベージコレクションのための流れ図
いくつかの特定のガベージコレクション操作の1つを選ぶための特定のアルゴリズムの流れ図が図8−3に示してある。図8−4は、図8−3の「ファイルガベージコレクション」ブロックについての流れ図である。図8−3の「共通ブロックのガベージコレクション」ブロックについての流れ図が、図8−5の主題である。図8−3の「ブロック統合」機能は、図8−6の流れ図により示される。
図8−7A〜図8−7Dの4つの図は、図8−5のプロセスに起因し得る共通ブロックのガベージコレクションの例を示している。図8−7Aが初期条件を示しているのに対し、図8−7B〜図8−7Cは、ガベージコレクションプロセスにおける3つのステップを例示している。矢印は、古いブロックから一杯ではないファイルブロックへの有効なデータの転送を示し、これらの宛先ファイルブロックは共通ブロックになる。
9.データバッファリングおよびプログラミング
このセクションにおいて説明されるデータバッファリングおよびプログラミング方法は、現行製品において用いられる同じフラッシュインターフェイスおよび誤り訂正符号(ECC)構造の使用を余儀なくされる。新しいフラッシュインターフェイスおよびECC構造が導入されれば、代わりの最適化された方法が将来採用される。
9.1データバッファ
フラッシュメモリにプログラムし、あるいはフラッシュメモリから読み出されるデータの一時的格納のために、コントローラ(先行出願のRAM31)中のSRAM中にバッファメモリが存在する。バッファメモリの割り当てられた領域は、完全なメタページが単一操作でフラッシュメモリにプログラムされるようにするために、ファイルについての十分なデータを蓄積するために使用される。バッファメモリ中のファイルについてのデータのオフセットアドレスは重要ではない。バッファメモリは、複数のファイルについてのデータを格納し得る。
ホストとの書き込み操作および読み出し操作双方のパイプライニングを可能にするために、2つのメタページの容量を有するバッファメモリ空間が、バッファされる各ファイルについて利用可能であるべきである。バッファメモリは1組のセクタバッファを含む。個別のセクタバッファは、単一のファイルのためのデータの一時的格納のために割り当てられ、データがその最終的な宛先に転送されたときに割り当て解除され得る。セクタバッファは、0〜N−1のセクタバッファ番号により識別される。セクタバッファの数(N)の例は、64である。
利用可能なセクタバッファは、それらのセクタバッファ番号順に周期的に割り当てられる。各セクタバッファは、1つのファイルラベルと、その中に含まれるデータの開始および終わりを定義する2つの関連したポインタとを有する。セクタバッファ中のデータ内のファイルのオフセットアドレス範囲も記録される。セクタバッファおよびこれらと関連した制御情報双方は、コントローラ中の揮発性メモリの内部にのみ存在する。
9.2データプログラミング
9.2.1メタページ
メタページは、フラッシュメモリにおけるプログラミングの最大単位である。データは、最大性能のために、可能な限りいかなる場合でもメタページ単位でプログラムされるべきである。
9.2.2ページ
ページは、メタページのサブセットであり、フラッシュメモリにおけるプログラミングの最小単位である。
9.2.3セクタ
セクタは、ページのサブセットであり、コントローラとフラッシュメモリとの間のデータ転送の最小単位である。1つのセクタは通常、512バイトのファイルデータを含む。ECCは、各セクタについてコントローラにより生成されて(先行出願の図2のコントローラECC回路33によるように)、セクタの終わりに付加されたフラッシュに転送される。データがフラッシュから読み出されるとき、そのデータは、ECCがチェックされるようにするために、多数の完全なセクタでコントローラに転送されなければならない。
9.3バッファ消去
ファイルのためのデータは通常、フラッシュメモリにおいて完全なメタページをプログラムするために十分なデータが利用可能になるまで、セクタバッファ中に蓄積される。ホストが、あるファイルのためのデータのストリーミングを停止すると、1つ以上のセクタバッファが、1つのメタページの一部のためのファイルデータと共にとどまる。このデータは、ホストがそのファイルのためのさらなるデータを書き込めるようにするために、バッファメモリ中にとどまる。しかし、一定の状況の下では、バッファメモリ中のデータは、バッファ消去として知られる操作においてフラッシュメモリに投入されなければならない。バッファ消去操作は、セクタバッファ中に保持されるファイルのためのすべてのデータが、メタページ内の1つ以上のペー中でプログラムされるようにする。
バッファ消去操作は、以下の2つの事象において実行される。
1)ファイルがホストにより閉じられるか、または
2)shutdownコマンドがホストにより受信される。
ホストにより閉じられるファイルのためのデータが、スワップブロックへスワップアウトされていれば、そのデータは、バッファメモリに返されるべきであり、バッファ消去が実行されるべきである。電力の除去に続くデバイスの初期化の間スワップブロック中にあるデータは、バッファメモリに返されるべきであり、バッファ消去が実行されるべきである。
9.4バッファスワップ
バッファスワップは、1つ以上のセクタバッファ中のファイルのためのデータが、スワップブロックとして知られる一時的位置でプログラムされ、ホストがそのファイルのためのデータを書き込み続けるときに、後にバッファメモリに返される、操作である。
9.4.1スワップブロックの形式
スワップブロックは、セクタバッファからスワップアウトされたファイルのためのデータを格納する専用ブロックである。ファイルのためのデータは、スワップブロック中のそのファイル専用の1つ以上のページ中で隣接して格納される。データがその後バッファメモリへスワップインにより戻される場合、そのデータは、そのスワップブロック中で古くなる。
スワップブロックが一杯になると、その内部の有効なデータは、圧縮形態で消去済ブロックに書き込まれ、このブロックがスワップブロックになる。この圧縮形態は、異なるファイルのためのデータが同じページ内に存在できるようにする。好ましくは、単一のスワップブロックのみが存在する。
9.4.2スワップブロック中に格納されるデータのインデックス化
スワップブロック中の各ファイルについて、バッファメモリ中のファイルについて前に記録された情報のコピーを含むスワップブロックインデックスがフラッシュメモリ中で維持される(9.1参照)。
9.4.3スワップブロックへのデータの移動(スワップアウト)
ホストにより開かれたファイル、またはホストからのファイルについてのwriteコマンドの結果としてスワップブロックからスワップインされなければならいファイルに割り当てられる利用可能なセクタバッファが不十分な場合、スワップアウト操作が生じる。スワップアウト用に選択されるファイルは、バッファメモリ中にそのためのバッファが存在するファイルのうちの最近書き込まれていないファイルであるべきである。
必要に応じ、予定されていない電力の除去が万一発生した場合のデータの保全性を向上するため、ホストからの最近のwrite コマンドに関連しないバッファメモリ中の任意のファイルについてスワップアウトが実行され得る。この場合、ファイルのためのデータは、バッファメモリ中に残ることができ、電力の除去がなかったのであれば、その後のスワップイン操作は必要とされない。
9.4.4スワップブロックからのデータの復元(スワップイン)
ファイルのための完全なデータは、スワップブロックから1つ以上のセクタバッファに読み出される。ファイルデータは、そのスワップアウト前と全く同じ整合をセクタバッファと有する必要がない。整合は、スワップブロックの圧縮の結果、変更されている可能性がある。スワップブロック中のファイルのためのデータは、古くなる。
9.5ホストからのファイルデータのプログラミング
このセクションで示される例は、1メタページあたり2ページ、および1ページあたり2セクタを有するフラッシュメモリ構成に関する。
9.5.1ホストからの連続データのプログラミング
ファイルのためのデータは、ホストからストリームされ、連続して割り当てられたセクタバッファ中に蓄積される。十分なセクタバッファが満たされると、それらのセクタバッファのデータは、各セクタについての1ECCと共にフラッシュメモリに転送され、ファイルのためのプログラムブロック中の宛先メタページがプログラムされる。連続的なホストデータプログラミングの例が、図9−1に示してある。
9.5.2ホストからの中断データのプログラミング
ファイルのためのデータは、ホストからストリームされ、連続して割り当てられたセクタバッファ中に蓄積される。図9−2は、中断されたホストデータのプログラミングの例を示す。ストリームは、データセグメント2Aの後に中断されると同時に、異なるファイルのための書き込み操作が実行される。ファイルのためにさらにwrite コマンドが受信されると、ホストからストリームされたデータが、前と同じセクタバッファ中に蓄積され、データセグメント2Bにおいて開始する。十分なセクタバッファが満たされると、それらのセクタバッファのデータは、各セクタについてのECCと共にフラッシュメモリに転送され、ファイルのためのプログラムブロック中の宛先メタページがプログラムされる。
9.5.3バッファから消去されるデータのプログラミング
ファイルのためのデータは、ホストからストリームされ、連続して割り当てられたセクタバッファ中に蓄積される。しかし、完全なメタページにおいてプログラムされる不十分なデータが存在する。1つの例が図9−3に示してある。データセグメント1および2Aは、パディングセグメント2Bと共に、フラッシュメモリへ各セクタについてのECCと共に転送され、ファイルのためのプログラムブロック中の宛先ページがプログラムされる。
9.5.4バッファからスワップアウトされるデータのプログラミング
この操作は、宛先ページが、ファイルのためのプログラムブロック中ではなく、スワップブロック中で次に利用可能なものであること以外は、バッファ消去プログラミングのための操作と同一である。図9−4は、これを例示している。
9.5.5バッファからの消去に続くホストからのデータのプログラミング
ファイルのためのバッファ消去操作の後にホストにより供給されたファイルデータは、バッファメモリから消去済データとは別個にプログラムされる。従って、プログラミングは、ファイルのためのプログラムブロック中の次に利用可能なページにおいて開始しなければならない。現在のメタページを完成するために十分なデータが蓄積され、そのデータは、図9−5のセクタ3および4について示されるようにECCと共に転送されプログラムされる。
9.5.6バッファへのスワップインに続くホストからのデータのプログラミング
バッファメモリからスワップアウトされたファイルのためのさらなるデータが受信されると、そのデータは、バッファメモリ中に割り当てられたセクタバッファ中に蓄積される。スワップアウトされたデータも、スワップブロックからバッファメモリに返される。十分なデータが蓄積されると、完全なメタページが単一操作でプログラムされる。
図9−6に例示されるように、データセグメント1および2Aは、パディングセグメント2Bと共に、スワップブロックから読み出され、2つのセクタバッファ中で復元される。ECCは、両方のセクタでチェックされる。
図9−7の例に示されるように、ホストからのファイルデータは、バッファセクタ中で蓄積される。データセグメント1、2A/2B、3A/3Bおよび4A/4Bは、各セクタのためのECCと共にフラッシュメモリに転送され、セクタ1、2、3および4としてプログラムされる。
9.6フラッシュからコピーされたデータのプログラミング
9.6.1整合されたメタページからのデータのコピー
図9−8に例示されるように、一杯の宛先メタページにコピーされるべきデータが単一の一杯のソースメタページを占める場合、ソースおよび宛先メタページは、整合されていると言われる。データセクタ1、2、3および4は、ソースメタページから4つのセクタバッファに読み出され、ECCは、各セクタでチェックされる。
9.6.1.1バッファからの書き戻し
図9−9に示されるように、データは、4つのセクタバッファから宛先メタページにプログラムされる。ECCが生成され、セクタ1、2、3および4について格納される。
9.6.1.2オンチップコピー
コピーされるべきデータのメタページ整合がソースおよび宛先メタページにおいて同じ場合、フラッシュチップ内のオンチップコピーは、コピー操作の速度を増大させるために用いられ得る。ECCチェックがエラーを全く示さなければ、データは、宛先メタページにプログラムされる。
9.6.1.3共通ブロック内のメタページ整合
共通ブロック内の各ファイルグループの開始は、メタページの開始と整合することを強制されるべきである。プログラムブロック中のデータグループも、ブロック中の第1のメタページの開始と整合する。従って、共通ブロックへのプログラムブロックの統合および1つの共通ブロックからプログラムブロックまたは別の共通ブロックへのファイルグループのコピーのような、共通ブロックについてのすべてのデータコピー操作は、整合されたメタページ間のデータコピーで動作する。フラッシュチップ内のオンチップコピーは、共通ブロックへまたは共通ブロックからデータをコピーする場合にコピー操作の速度を増大させるために用いられるべきである。
9.6.2不整合な連続したメタページからのデータコピー
完全な宛先メタページにコピーされるべきデータが隣接しているが、2つの連続したソースメタページを占める場合、ソースおよび宛先メタページは、不整合であると言われる。ソースメタページの読み出しの例が、図9〜10に示してある。データセクタ1A/1B、2、および3は、第1のソースメタページから3つのセクタバッファに読み出され、データセクタ4および5A/5Bは、第2のソースメタページからさらなる2つのセクタバッファに読み出される。ECCは、各セクタでチェックされる。
データ部分1A/1B、2A/2B、3A/3B、および4A/4Bは、図9〜11に示されるように、セクタバッファから、宛先メタページ中のセクタ1、2、3および4にプログラムされる。ECCが生成され、セクタ1、2、3および4のために格納される。
コピーされているメタページデータが連続データのより大きいランの一部である場合、コピーは部分的にパイプラインされ得る。データは、ソース位置から十分なメタページ中のバッファメモリに読み出される。N+1のソースメタページは、Nの宛先メタページをプログラムするために読み出されなければならない。
9.6.3不整合かつ非連続なメタページからのデータのコピー
完全な宛先メタページにコピーされるべきデータが隣接しておらず、かつ2つ以上の非連続なソースメタページを占める場合、ソースおよび宛先メタページは、不整合かつ非連続と言われる。この場合は、ファイル内の2つ以上の隣接していないデータグループの一部を単一の宛先メタページへコピーすることを表す。図9〜12に示されるように、データセクタ1A/1B、2、および3A/3Bは、第1のソースメタページから3つのセクタバッファに読み出され、データセクタ4A/4Bおよび5A/5Bは、第2のソースメタページからさらなる2つのセクタバッファに読み出される。ECCは、各セクタでチェックされる。
次にデータ部分1A/1B、2A/2B、3A/3B、および4A/4Bは、図9〜13に示されるように、セクタバッファから宛先メタページ中のセクタ1、2、3および4にプログラムされる。ECCが生成され、セクタ1、2、3および4のために格納される。
10.ファイルインデックス化
10.1ファイルインデックス化の原理
図10−1にファイルインデックス化が一般的に示してある。ファイルのためのデータは、データグループのセットとして格納され、各データグループは、ファイルオフセットアドレス空間および物理アドレス空間双方の中の隣接するアドレスのランにわたっている。ファイルのためのセット内のデータグループは、互いにどのような特定の物理アドレス関係も有する必要がない。ファイルインデックステーブル(FIT)により、ファイルのための有効なデータグループの位置を、オフセットアドレス順で識別することができる。ファイルのためのFITエントリのセットが、ファイルデータポインタにより識別される。
ホストにより生成されるファイルに関連した情報は、情報テーブル(IT)中でfile_infoとして格納される。file_infoの性質および内容はホストにより決定され、その性質および内容は、デバイスにより解釈されない。file_infoは、ファイル名、親ディレクトリ、子ディレクトリ、属性、権利情報、およびファイルについてのファイル関連付けを含み得る。IT中のファイルのためのfile_infoは、ファイル情報ポインタにより識別される。
ディレクトリは、デバイス中のすべての有効なファイルのためのファイルデータポインタおよびファイル情報ポインタを含む。ファイルのためのこれらのディレクトリエントリは、数値であるfileIDにより識別さる。
10.2ファイルインデックス化構造
図10−2は、ファイルインデックス化構造の例を示す。
10.3ディレクトリ
10.3.1FileID
fileIDは、直接データファイル・プラットフォーム中に存在するファイルのための数値識別子である。これは、createコマンドに応答して直接データファイル・プラットフォームにより割り当てられるか、またはcreateコマンドを有するパラメータとして指定され得る。
fileID値がデバイスにより割り当てられると、ディレクトリ中のエントリへの周期的ポインタが、次の利用可能なfileIDの位置を特定するために用いられる。ファイルが削除または消去されると、ファイルのfileIDにより識別されたディレクトリエントリは、利用可能としてマークされる。
fileID値がディレクトリ中のエントリを定義し、このエントリは、ファイルのためのファイルデータポインタおよびファイル情報ポインタのためのフィールドを含む。
デバイス中に格納され得るファイルの最大数は、fileIDに割り当てられるビット数により決定される。
10.3.2ファイルデータポインタ
ファイルデータポインタは、FITブロックリスト中のファイルのためのエントリへの論理ポインタであり、あるいは制御ログ内のFIT更新ブロックリストでもある。
ファイルデータポインタは、以下の2つのフィールドを有する。
1)FIT範囲
2)FITファイル番号
ファイルが0の長さを有するときでさえ、ファイルのためのファイルデータポインタが存在する。
10.3.2.1FIT範囲
FIT範囲は、FITのサブセットである。各FIT範囲は、別個の物理FITブロックにマッピングされる。1つのFIT範囲は、1つのFITファイルと、例えば、512であり得る最大数のFITファイルとの間を含むことができる。
10.3.2.2FITファイル番号
FITファイル番号は、FIT内のFITファイルを識別するために用いられる論理番号である。
10.3.3ファイル情報ポインタ
ファイル情報ポインタは、情報ブロックリスト中のファイルのためのエントリへの論理ポインタであり、あるいは、また制御ログ内の情報更新ブロックリストでもある。
ファイル情報ポインタは、以下の2つのフィールドを有する。
1)情報範囲
2)情報番号
10.3.3.1情報範囲
情報範囲は、情報テーブルのサブセットである。各情報範囲は、別個の物理情報ブロックにマッピングされる。1つの情報範囲は、1つのfile_infoのセットと、例えば、512であり得る最大数のfile_infoのセットとの間を含むことができる。
10.3.3.2情報番号
情報番号は、情報ブロック内のfile_infoのセットを識別するために用いられる論理番号である。
10.3.4ディレクトリ構造
ディレクトリは、目的専用のフラッシュブロック中に格納される。図10−3は、ディレクトリブロック形式の例を示す。ディレクトリは、ページのセットとして構造化され、各ページ内には、連続したfileID値を有するファイルのためのエントリのセットが存在する。このエントリのセットは、ディレクトリ範囲と呼ばれる。
ディレクトリは、制御ポインタにより定義された次の消去済ページ位置にディレクトリページの改訂バージョンを書き込むことにより更新される。必要であれば、メタページ中の異なるページにそれらをプログラムすることによって、複数のページが同時に更新され得る。
ディレクトリ範囲のための現在のページ位置は、ディレクトリブロック中の最後に書き込まれたページ中の範囲ポインタにより識別される。
10.4ブロックリスト
ファイルインデックステーブルおよび情報テーブルは両方とも、一連の論理範囲を含み、1つの範囲は、物理フラッシュブロックとの相関関係を有する。ブロックリストは、ファイルデータポインタまたはファイル情報ポインタ中で定義された範囲と物理ブロックとの間、ならびにファイルデータポインタまたはファイル情報ポインタ中で定義された論理数とファイルインデックステーブルおよび情報テーブル内の物理ブロックにおいて用いられる論理数との間の相関関係を記録するために、制御ログ中に維持される。
10.4.1FITブロックリスト
FITブロックリストは、ファイルのためのFIT中のエントリにFITファイルポインタを割り当てる制御ログ中のリストである。FITファイルポインタは、ファイルデータポインタ中で定義された範囲に割り当てられる物理フラッシュブロックのアドレス、およびファイルデータポインタ中で定義される同じFITファイル番号を含む。FITブロックリスト中のエントリは、単一のフィールド、ブロック物理アドレスを含む。
FIT更新ブロックリストは、更新されるFIT中のファイルのためのエントリにFITファイルポインタを割り当てる制御ログ中のリストである。FITファイルポインタは、FIT更新ブロックエントリとして現在割り当てられる物理フラッシュブロックのアドレス、およびFIT更新ブロックにおいて更新されるFITファイルFITに割り当てられるFIT更新ファイル番号を含む。FIT更新ブロックリスト中のエントリは、以下の3つのフィールドを含む。
1)FIT範囲
2)FITファイル番号
3)FIT更新ファイル番号
ファイルデータポインタに対応するFITファイルポインタがFITブロックリストから決定されるべきである場合、ファイルデータポインタに関するエントリが存在するかどうかを決定するためにFIT更新ブロックリストが検索される。なにも存在しなければ、FITブロックリスト中のファイルデータポインタに関するエントリが有効である。
10.4.2情報ブロックリスト
ホストにより書き込まれたfile_infoは、ファイル情報ポインタにより識別された情報テーブル中に直接格納される。情報ブロックリストは、情報ポインタを情報テーブル中のfile_infoに割り当てるために存在する。これらの情報ブロックリストのためのインデックス化機構は、FITブロックリストについて記載された機構と完全に類似する。
情報ブロックリスト中のエントリは、単一のフィールド、ブロック物理アドレスを含む。
情報更新ブロックリスト中のエントリは、以下の3つのフィールドを含む。
1)情報範囲
2)情報番号
3)更新情報数
10.5ファイルインデックステーブル
ファイルインデックステーブル(FIT)は、FITエントリのストリングを含み、各FITエントリは、データグループのフラッシュメモリ中のファイルオフセットアドレスおよび物理位置を識別する。FITは、デバイス中に格納されたファイルのためのすべての有効なデータグループのためのエントリを含む。古いデータグループは、FITによりインデックスされない。FIT論理的構造の例が、図10−4に示してある。
ファイル中のデータグループのためのFITエントリのセットが、連続したエントリとして、ファイルオフセットアドレス順に維持される。エントリのセットは、FITファイルとして知られる。FITは、一連のFIT範囲として維持され、各FIT範囲は、物理フラッシュブロックとの相関関係を有する。FIT範囲の数は、デバイス中のデータグループの数に応じて変わる。新しいFIT範囲が作成され、FIT範囲は、デバイスの操作の間に除去される。FITブロックリストは、ファイルデータポインタからFITファイルポインタを作成するために用いられ、それによってFIT中の位置が識別され得る。
10.5.1FITファイル
FITファイルは、ファイル内のデータグループのための隣接するFITエントリのセットである。このセット中のエントリは、ファイルオフセットアドレス順である。FITファイル中のFITエントリは連続し、単一のFIT範囲内に含まれるか、または1つのFIT範囲から次の連続したFIT範囲にオーバーフローする。
10.5.2FITヘッダ
FITファイル中の第1のエントリは、FITヘッダである。FITヘッダは、以下の3つのフィールドを有する。
1)fileID
2)プログラムブロック
3)プログラムポインタ
FITヘッダは、FITエントリの整数に等しい固定長さを有する。この数は、1であり得る。
10.5.2.1FileID
fileIDは、ディレクトリ中のファイルのためのエントリを識別する。
10.5.2.2プログラムブロック
FITファイルの更新されたバージョンがFITに書き込まれるときはいつも、ファイルのためのプログラムブロックの現在の物理位置がFITヘッダに記録される。ファイルがホストにより再び開かれるときに、この物理位置は、ファイルのためのプログラムブロックの位置を特定するために用いられる。この物理位置は、FITファイルと、プログラムブロック統合のために選択されたファイルのためのプログラムブロックとの間の対応関係を有効化するためにも用い得る。
10.5.2.3プログラムポインタ
FITファイルの更新されたバージョンがFITに書き込まれるときはいつも、ファイルのためのプログラムブロック内のプログラムポインタの現在値がFITヘッダに記録される。この現在値は、ファイルがホストにより再び開かれるとき、またはプログラムブロック統合のためにプログラムブロックが選択されるときに、ファイルのためのプログラムブロック内のデータをプログラムするための位置を定義するために使用される。
10.5.3FITエントリ
FITエントリは、データグループを指定する。FITエントリは、以下の4つのフィールドを有する。
1)オフセットアドレス
2)長さ
3)ポインタ
4)EOFフラグ
10.5.3.1オフセットアドレス
オフセットアドレスは、データグループの最初のバイトに関するファイル内のバイトで表したオフセットである。
10.5.3.2長さ
これは、データグループ内のファイルデータの長さをバイトで定義する。完全なデータグループの長さは、この値よりデータグループヘッダの長さだけ長い。
10.5.3.3ポインタ
これは、データグループの開始のフラッシュブロック中の位置へのポインタである。ポインタは、以下の2つのフィールドを有する。
1)データグループを含む物理ブロックを定義する、ブロックアドレス
2)データグループの開始のブロック内のバイトオフセットを定義する、バイトアドレス(このアドレスは、データグループヘッダを含む。)
10.5.3.4EOFフラグ
EOFフラグは、あるデータグループを、ファイルの終わりであると識別する単一のビットである。
10.5.4FITブロック形式
FIT範囲は、FITブロックとして知られる単一の物理ブロックにマッピングされる。これらのブロック中のデータの更新バージョンは、FIT更新ブロックとして知られる、共通更新ブロック中にプログラムされる。データは、1ページ単位で更新される。メタページ内の複数のページは、必要であれば、並列に更新され得る。
10.5.4.1間接アドレス指定
FITファイルは、FITファイルポインタにより識別される。このポインタ内のFITファイル番号フィールドは、論理ポインタであり、これは、インデックス化に用いられる物理構造内でFITファイルのためのデータが移動される際に一定のままである。物理ページ構造内のポインタフィールドは、論理ポインタから物理ポインタへの変換を提供する。
10.5.4.2ページ形式
FITブロックおよびFIT更新ブロックにおいて用いられるページ形式は、同一である。
1つのページが、FITエントリのための第1の領域およびファイルポインタのための第2の領域の2つの領域にさらに分割される。図10−5に、例が示してある。
第1の領域は、各々がデータグループを指定するか、またはFITファイルのためのFITヘッダを含むFITエントリを含む。1つのFITページ中のFITエントリ数の例は、512である。1つのFITページまたは重なっている2つ以上のFITページ内で、FITエントリの隣接するセットによりFITファイルが指定される。FITヘッダを含む、FITファイルの第1のエントリは、第2の領域中のファイルポインタにより識別される。
第2の領域は、最近プログラムされたFITページ中のみの有効なファイルポインタを含む。すべての他のページ中の第2の領域は古く、用いられない。ファイルポインタ領域は、FITブロックに含まれ得る各FITファイルのための1つのエントリを含み、すなわち、ファイルポインタのエントリの数は、FITブロック中に存在し得るFITファイルの最大数に等しい。ファイルポインタのエントリは、FITファイル番号に従って逐次的に格納される。N番目のファイルポインタのエントリは、FITブロック内のFITファイルNへのポインタを含む。ファイルポインタのエントリは、以下の2つのフィールドを有する。
1)FITブロック内の物理ページを指定するページ番号
2)物理ページ内のFITエントリを指定するエントリ番号
ファイルポインタのエントリは、FITブロック内の論理FITファイル番号をブロック内の物理位置に変換するための機構を提供する。ファイルポインタの完全セットは、すべてのFITページがプログラムされるときに更新されるが、最近プログラムされたページにおいてのみ有効である。FITファイルがFIT更新ブロックにおいて更新される場合、FITブロック中またはFIT更新ブロック中のその以前の位置は古くなり、ファイルポインタによりもはや参照されない。
10.5.5FIT更新ブロック
FITブロック中のFITファイルの変化は、すべてのFITブロックにより共有される単一のFIT更新ブロックにおいてなされる。物理FITブロックの例が図10−6に示してある。
ファイルデータポインタは、FITファイルへの論理ポインタである。そのFIT範囲フィールドは、このFIT範囲にマッピングされるFITブロックの物理ブロックアドレスを識別するためにFITブロックリストにアドレス指定するために用いられる。FITファイルポインタのFITファイル番号フィールドは次に、FITブロック中の目標FITファイルのための正しいファイルポインタを選択する。
ファイルデータポインタのFIT範囲フィールドおよびFITファイル番号フィールド双方は、目標FITファイルが更新されたかどうかを識別するため、FIT更新ブロックリストにアドレス指定するために用いられる。このリスト中にエントリが発見されれば、FIT更新ブロックの物理ブロックアドレス、およびFITファイルの更新されたバージョンの更新ブロック内のFITファイル番号を提供する。これは、FITブロック中のFITファイルのために用いられるFITファイル番号と異なり得る。FIT更新ブロックは、FITファイルの有効なバージョンを含み、FITブロック中のバージョンは古い。
10.5.6更新操作
FITブロックは、統合操作の間のみプログラムされる。これは、ブロック内で密に詰められるFITファイルという結果になる。FIT更新ブロックは、FITエントリが修正、追加、または除去されるとき、および圧縮操作の間に更新される。図10−7は、FITファイルに関する更新操作の例を示す。
FITファイルは、統合操作の結果として、FITブロック中で密に詰められる。FITブロックは、その中に存在できるFITファイルの最大数があるため、完全に充填されないことがある。FITファイルは、1つのページから次のページにオーバーフローすることがある。FITブロック中のFITファイルは、そのFITファイルがFIT更新ブロック中で更新および再書き込みされると、古くなる。
FITファイルが更新されると、そのFITファイルは、FIT更新ブロック中の次の利用可能なページ中でその全体が再書き込みされる。FITファイルの更新は、既存のFITエントリの内容の変更またはFITエントリの数の変更を含み得る。FITファイルは、1つのページから次のページにオーバーフローすることがある。FIT更新ブロック内のFITファイルは、同じFIT範囲とすべて関連する必要はない。
10.5.7FIT範囲の作成
FITファイルのための付加的な記憶空間に対応するために新しいFIT範囲が作成されなければならない場合、FITブロックは、直ちに作成されない。この範囲内の新しいデータは当初、FIT更新ブロックに書き込まれる。その範囲のための統合操作が実行されるとき、FITブロックがその後で作成される。
10.5.8圧縮および統合
10.5.8.1ディレクトリ更新ブロックまたはFIT更新ブロックの圧縮
FIT更新ブロックが一杯になると、その有効なFITファイルデータが、消去済ブロックに圧縮された形でプログラムされることができ、このブロックが次に更新ブロックになる。更新が少数のファイルにのみ関連すれば、プログラムされるべき圧縮された有効なデータの1つのページしかないこともある。
圧縮操作において再配置されるべきFITファイルが、閉じられたファイルに関連し、範囲のためのFITブロックが、十分にプログラムされていないページを含んでいれば、FITファイルは、圧縮された更新ブロックではなく、FITブロックに再配置され得る。
10.5.8.2ディレクトリブロックまたはFETブロックの統合
FITエントリが更新されると、FITブロック中の元のFITファイルは古くなる。そのようなFITブロックは、古い空間を回復するために、ガベージコレクションを周期的にかけられるべきである。これは、統合操作によって達成される。加えて、新しいファイルが、範囲内で作成され、更新ブロック中のエントリを有することがあるが、FITブロック中の対応する古いエントリは全く存在し得ない。そのようなFITファイルは、FITブロックに周期的に再配置されるべきである。
更新ブロックのFITファイルは適切な範囲のためのFITブロックに統合され、従って、更新ブロックから取り除かれうる一方で、他のFITファイルは更新ブロックにとどまる。
FITファイル中のFITエントリの数が更新プロセスの間に増大し、かつFIT範囲のための有効なデータを単一の消去済ブロックに統合できなければ、そのFIT範囲に本来割り当てられたいくつかのFITファイルが、別のFIT範囲に割り当てられ、統合が、別個の操作において2つのブロックへ実行され得る。FITファイルのそのような再割り当ての場合、ディレクトリ中のファイルデータポインタは、新しいFIT範囲を反映するために更新されなければならない。
ある範囲のための統合操作は、FIT更新ブロック中のその範囲のための有効なデータの容量が定義されたしきい値に達したときに、実行されるべきである。このしきい値の例は、50%である。
圧縮は、いまだ開き、ホストがアクセスを続け得るファイルに関するアクティブなFITファイルについての統合に優先して実行されるべきである。
10.6情報テーブル
情報テーブルは、セクション10.5においてファイルインデックステーブルについて定義された同じ構造、インデックス化機構および更新手法を用いる。しかし、ファイルのためのfile_infoは、直接データファイル・プラットフォーム内では解釈されない単一の情報ストリングを含む。
10.7データグループ
データグループは、単一のメモリブロック中の隣接する物理アドレスにおいてプログラムされた、ファイルのための隣接するオフセットアドレスを有するファイルデータのセットである。ファイルは通常、いくつかのデータグループとしてプログラムされる。データグループは、1バイトと1ブロックとの間のどのような長さでも有し得る。
10.7.1データグループヘッダ
各データグループは、相互参照を目的としてファイル識別子情報を含むヘッダと共にプログラムされる。ヘッダは、データグループがその一部を形成するファイルのためのFITファイルポインタを含む。
11.ブロック状態管理
11.1ブロック状態
ファイルデータ記憶のためのブロックは、図11−1の状態図に示されるように、以下の8つの状態に分類できる。
11.1.1消去済ブロック
消去済ブロックは、消去済ブロックプール中で消去済状態にある。この状態から可能な移行は以下の通りである。
(a)消去済ブロックからプログラムブロック
単一のファイルのためのデータは、そのデータがホストから供給される場合、またはそのデータがファイルのためのガベージコレクションの間にコピーされる場合に、消去済ブロックにプログラムされる。
11.1.2プログラムブロック
プログラムブロックは、単一のファイルのための有効なデータで部分的にプログラムされ、いくらかの消去済容量を含む。ファイルは、開いているか、または閉じられている。ファイルのためのさらなるデータは、ホストにより供給される場合、またはファイルのガベージコレクションの間にコピーされる場合に、ブロックにプログラムされるべきである。
この状態からの可能な移行は、以下の通りである。
(b)プログラムブロックからプログラムブロック
単一のファイルのためのデータは、そのデータがホストから供給される場合、またはそのデータがファイルのためのガベージコレクションの間にコピーされる場合に、そのファイルのためのプログラムブロックにプログラムされる。
(c)プログラムブロックからファイルブロック
ホストからの単一のファイルのためのデータは、そのファイルのためにプログラムブロックを満たすようにプログラムされる。
(f)プログラムブロックから古いブロック
プログラムブロック中のファイルのためのすべてのデータは、有効なデータがガベージコレクションの間に別のブロックにコピーされる結果、あるいはファイルのすべてまたは一部がホストにより削除される結果として、古くなる。
(h)プログラムブロックから古いプログラムブロック
プログラムブロック中のデータの一部は、データの更新されたバージョンがホストにより同じプログラムブロックに書き込まれる結果、またはファイルの一部がホストにより削除される結果として、古くなる。
(l)プログラムブロックから共通ブロック
あるファイルのための残りのデータは、そのファイルまたは共通ブロックのガベージコレクションの間、あるいはプログラムブロックの統合の間に、異なる閉じられたファイルのためのプログラムブロックにプログラムされる。
11.1.3ファイルブロック
ファイルブロックは、単一のファイルのための完全に有効なデータで満たされる。
この状態からの可能な移行は、以下の通りである。
(d)ファイルブロックから古いファイルブロック
ファイルブロック中のデータの一部は、データの更新されたバージョンがホストによりファイルのためのプログラムブロックにプログラムされる結果として、古くなる。
(g)ファイルブロックから古いブロック
ファイルブロック中のすべてのデータは、ブロック中のデータの更新されたバージョンがホストによりファイルのためのプログラムブロックにプログラムされる結果、あるいはファイルのすべてまたは一部がホストにより削除される結果として、古くなる。
11.1.4古いファイルブロック
古いファイルブロックは、単一のファイルのための有効なデータと古いデータとの任意の組み合わせで満たされる。
この状態からの可能な移行は、以下の通りである。
(e)古いファイルブロックから古いブロック
古いファイルブロック中のすべてのデータは、ブロック中の有効なデータの更新されたバージョンがホストによりファイルのためのプログラムブロックにプログラムされる結果、有効なデータがガベージコレクションの間に別のブロックにコピーされる結果、あるいはファイルのすべてまたは一部がホストにより削除される結果として、古くなる。
11.1.5古いプログラムブロック
古いプログラムブロックは、単一のファイルのための有効なデータおよび古いデータの任意の組み合わせで部分的にプログラムされ、いくらかの消去済容量を含む。ファイルのためのさらなるデータは、ホストにより供給されるときに、そのブロックにプログラムされるべきである。しかし、ガベージコレクションの間、ファイルのためのデータは、ブロックにコピーされるべきでなく、新しいプログラムブロックが開かれるべきである。
この状態からの可能な移行は、以下の通りである。
(i)古いプログラムブロックから古いプログラムブロック
単一のファイルのためのデータは、ホストから供給されるときに、そのファイルのための古いプログラムブロックにプログラムされる。
(j)古いプログラムブロックから古いブロック
古いプログラムブロック中のファイルのためのすべてのデータは、有効なデータがガベージコレクションの間に別のブロックにコピーされる結果、あるいはファイルのすべてまたは一部がホストにより削除される結果として、古くなる。
(k)古いプログラムブロックから古いファイルブロック
単一のファイルのためのデータは、ホストから供給されるときに、そのファイルのための古いプログラムブロックを満たすためにプログラムされる。
11.1.6共通ブロック
共通ブロックは、2つ以上のファイルのための有効なデータでプログラムされ、通常いくらかの消去済容量を含む。どのようなファイルのための残りのデータも、ガベージコレクションまたはプログラムブロックの統合の間にプログラムされ得る。
この状態からの可能な移行は、以下の通りである。
(m)共通ブロックから共通ブロック
ファイルのガベージコレクションの間の共通ブロックまたは共通ブロック、またはプログラムブロックの統合の間に、ファイルのための残りのデータがプログラムされる。
(n)共通ブロックから古い共通ブロック
共通ブロック中の1つのファイルのためのデータの一部またはすべては、データの更新されたバージョンがホストによりそのファイルのためのプログラムブロックにおいてプログラムされる結果、ファイルのガベージコレクションの間にデータが別のブロックにコピーさる結果、あるいはファイルのすべてまたは一部がホストにより削除される結果として、古くなる。
11.1.7古い共通ブロック
古い共通ブロックは、2つ以上のファイルのための有効なデータおよび古いデータの任意の組み合わせでプログラムされ、通常いくらかの消去済容量を含む。さらなるデータが、そのブロックにプログラムされるべきではない。
この状態からの可能な移行は、以下の通りである。
(o)古い共通ブロックから古いブロック
古い共通ブロック中のすべてのファイルのためのデータは、1つのファイルのためのデータの更新されたバージョンがホストによりそのファイルのためのプログラムブロックにおいてプログラムされる結果、ファイルのガベージコレクションの間に1つのファイルのためのデータが別のブロックにコピーされる結果、あるいは1つのファイルのすべてまたは一部がホストにより削除される結果、古くなる。
11.1.8古いブロック
古いブロックは古いデータのみを含んでいるが、まだ消去されていない。
この状態からの可能な移行は、以下の通りである。
(p)古いブロックから消去済ブロック
古いブロックは、ガベージコレクションの間に消去され、消去済ブロックプールに戻して付加される。
12.消去済ブロック管理
12.1メタブロックリンキング
消去ブロックをメタブロックにリンクする方法は、以前の第3世代のLBAシステムのために定義された方法と変わっていない。
12.2消去済ブロックプール
消去済ブロックプールは、ファイルデータまたは制御情報の記憶のための割り当てに利用可能なデバイス中の消去済ブロックのプールである。プール中の各消去済ブロックはメタブロックであり、すべてのメタブロックは、同じ固定された並列性を有する。
プール中の消去済ブロックは、制御ブロック中の消去済ブロックログ中のエントリとして記録される。エントリは、ブロックの消去順序に従ってログ中で並べられる。割り当てのための消去済ブロックが、ログの頭におけるエントリとして選択される。ブロックが消去されるときに、エントリがログの末尾に加えられる。
13.制御データ構造
制御データ構造は、目的専用のフラッシュブロック中に格納される。ブロックの3つのクラスが、以下の通り定義される。
1)ファイルディレクトリブロック
2)ファイルインデックステーブルブロック
3)制御ブロック
13.1ファイルディレクトリブロック
ファイルディレクトリブロックの構造は、前に説明されている。
13.2ファイルインデックステーブルブロック
ファイルインデックステーブルブロックの構造は、前に説明されている。
13.3制御ブロック
制御ブロックは、制御情報を4つの独立ログに格納する。ログの各々に、別個のページが割り当てられる。必要であれば、1つのログあたり複数のページに拡張できる。制御ブロックの形式の例が、図13−1に示してある。
ログは、制御ポインタにより定義された次の消去済ページ位置に、完全ログの改訂バージョンを書き込むことにより更新される。複数のログは、必要であれば、それらをメタページ中の異なるページにプログラムすることにより、同時に更新され得る。4つのログの各々の有効なバージョンのページ位置は、制御ブロック中の最近書き込まれたページ中のログポインタにより識別される。
13.3.1共通ブロックログ
共通ブロックログは、デバイス中に存在するすべての共通ブロックについての情報を記録する。共通ブロックログ中のログエントリは、図13−2において説明されるように、ブロックエントリのための第1の領域およびデータグループエントリのための第2の領域の2つの領域に再分割される。各ブロックエントリは、共通ブロックの物理位置を記録する。エントリは、固定サイズであり、決まった数が共通ブロックログ中に存在する。各エントリは、以下のフィールドを有する。
1)ブロック物理アドレス
2)プログラミングのための共通ブロック中の次の利用可能なページへのポインタ
3)ブロックのためのデータグループエントリの最初のものへのポインタ
4)データグループエントリの数
データグループエントリは、共通ブロック中のデータグループについての情報を記録する。隣接しているデータグループエントリのセットは、共通ブロック中のすべてのデータグループを定義する。共通ブロック中には、可変数のデータグループがある。各エントリは、好ましくは、以下のフィールドを有する。
1)共通ブロック内のバイトアドレス
2)FITファイルポインタ
13.3.2プログラムブロックログ
プログラムブロックログは、閉じられたファイルのためのデバイス中に存在するすべてのプログラムブロックについての情報を記録する。各プログラムブロックについて、1つのエントリが存在し、以下のフィールドを有する。
1)物理アドレスブロック
2)プログラミングのためのプログラムブロック中の次の利用可能なページへのポインタ
3)FITファイルポインタ
13.3.3消去済ブロックログ
消去済ブロックログは、デバイス中に存在するすべての消去済ブロックの同一性を記録する。各消去済ブロックについて1つのエントリが存在する。エントリは、ブロックの消去順に従ってログ中で並べられる。割り当てのための消去済ブロックが、ログの頭におけるエントリとして選択される。ブロックが消去されるときに、エントリがログの末尾に加えられる。エントリは、単一のフィールド、すなわち、ブロック物理アドレスを有する。
13.3.4制御ログ
制御ログは、様々な制御情報を以下のフィールドに記録する。
13.3.4.1開いているファイルリスト
このフィールドは、以下のような、現在開いているファイルの各々についての情報を含む。
1)パス名
2)ファイル名
3)FITファイルポインタ
4)プログラムブロック物理アドレス
開いているファイルのためのプログラムブロックは、プログラムブロックログに含まれない。
13.3.4.2共通ブロックカウント
このフィールドは、共通ブロックログ中に記録された共通ブロックの総数を含む。
13.3.4.3プログラムブロックカウント
このフィールドは、プログラムブロックログ中に記録されたプログラムブロックの総数を含む。ブロックがプログラムブロックログに付加され、かつこれから除去されるときに、カウントが更新される。
13.3.4.4消去済ブロックカウント
このフィールドは、消去済ブロックログ中に記録された消去済ブロックの総数を含む。ブロックが消去済ブロックログに付加され、かつこれから除去されるときに、カウントが更新される。
13.3.4.5プログラム/共通ブロックページカウント
このフィールドは、プログラムブロックおよび共通ブロック中の有効なデータページの数のカウントを含む。ブロックがプログラムブロックログおよび共通ブロックログに付加され、かつこれらから除去されるときに、カウントが更新される。
13.3.4.6古いブロック計算
このフィールドは、ガベージコレクションを待つ完全に古いブロックの数のカウントを含む。ブロックが古いブロックのガベージコレクションキューに付加され、かつこれから除去されるときに、カウントが更新される。
13.3.4.7FITブロックリスト
このフィールドは、FIT範囲をFITブロックへマッピングするための情報を含む。このフィールドは、各FIT範囲についてのFITブロック物理アドレスを定義するエントリを含む。
13.3.4.8FIT更新ブロックリスト
このフィールドは、FIT範囲およびFITファイル番号をFIT更新ファイル番号にマッピングするための情報を含む。このフィールドは、更新ブロック中に存在する各有効なFITファイルについてのエントリを含む。エントリは、以下の3つのフィールドを有する。
1)FIT範囲
2)FITファイル番号
3)FIT更新ファイル番号
13.3.4.9ディレクトリブロックリスト
このフィールドは、ディレクトリ範囲をディレクトリブロックへマッピングするための情報を含む。このフィールドは、各ディレクトリ範囲についてのディレクトリブロック物理アドレスを定義するエントリを含む。
13.3.4.10ディレクトリ更新ブロックリスト
このフィールドは、サブディレクトリ番号を更新するためにディレクトリ範囲およびサブディレクトリ番号をマッピングするための情報を含む。このフィールドは、更新ブロック中に存在する有効なサブディレクトリの各々についてのエントリを含む。エントリは、以下の3つのフィールドを有する。
1)ディレクトリ範囲
2)サブディレクトリ番号
3)更新サブディレクトリ番号
13.3.4.11バッファスワップブロックインデックス
このフィールドは、スワップブロック中の有効なデータグループのインデックスを含む。各データグループについてのインデックスは、以下のフィールドを含む。
1)FITファイルポインタ
2)スワップブロック内のバイトアドレス
3)長さ
13.3.4.12プライオリティの古いブロックキュー
このフィールドは、ガベージコレクションのためのプライオリティの古いブロックキュー中のすべてのブロックのブロックアドレスを含む。
13.3.4.13プライオリティの共通ブロックキュー
このフィールドは、ガベージコレクションのためのプライオリティの共通ブロックキュー中のすべてのブロックのブロックアドレスを含む。
13.3.4.14古いブロックキュー
このフィールドは、ガベージコレクションのための古いブロックキュー中のすべてのブロックのブロックアドレスを含む。
13.3.4.15共通ブロックキュー
このフィールドは、ガベージコレクションのための共通ブロックキュー中のすべてのブロックのブロックアドレスを含む。
13.3.4.16ファイルキュー
このフィールドは、ガベージコレクションのためのファイルキュー中のすべてのファイルのFITファイルポインタを含む。
14.静的ファイル
14.1静的ファイル
いくつかのホストは、同一サイズを有するフィルのセットを作成し、そのセット中のファイル内でデータを周期的に更新することにより、直接データファイルデバイス中にデータを格納し得る。そのようなセットの一部であるファイルは、静的ファイルと呼ばれる。ホストは、メモリカードの外部にあってもよく、またはオンカードアプリケーションを実行しているメモリカード内のプロセッサであってもよい。
静的ファイルの使用の応用例が、本願と同時に出願されたSergey Anatolievich Gorobetsによる「Interfacing Systems Operating Through A Logical Address Space and on a Direct Date File Basis 」(特許文献12)という米国特許出願に記載されている。その出願において、ホストの論理アドレス空間は、メモリコントローラによりそのような静的ファイルに分割される。
直接データファイルデバイスは、何か他のファイルについてと全く同じ方法で静的ファイル記憶を管理する。しかし、ホストは、静的ファイルによってデバイスの挙動および性能を最適化するやり方で直接データファイルコマンドセット中のコマンドを用い得る。
14.1.1静的ファイルパーティション
静的ファイルは、デバイス中の専用パーティション中のセットとして格納される。1つのパーティション中のすべての静的ファイルは、同一のファイルサイズを有する。
14.1.2静的ファイルサイズ
ファイルサイズは、ファイルに書き込まれたオフセットアドレスの範囲を介して、ホストにより定義される。静的ファイルは、メタブロックのサイズに等しいサイズを有する。
ホストは、write_pointer およびread_pointer により表されるファイルオフセット値を管理し、それらの値を、静的ファイルに許された値の範囲内に常に維持する。
14.1.3静的ファイルの削除
直接データファイルデバイス中の他のファイルとは異なり、ホストは、通常操作の間に、静的ファイルを削除しない。静的ファイルは、ホストにより作成され、次にデバイス中に連続的に存在する。ファイルにいつ書き込まれたデータも、既存のファイルデータを上書きする。
しかし、ホストは常に、例えば、デバイスを再フォーマットするためまたはデバイス中の静的ファイルのためにパーティションのサイズを減少させるためのホストによる操作間で、静的ファイルを削除する能力を有する。
14.2静的ファイルと共に用いられるコマンドセット
図14−1は、静的ファイルと共に用いるコマンドセットを示し、そのサブセットが図2−1〜2−6に示してあり、これらは、静的ファイルのとって必要とされるすべての操作をサポートする。
14.3静的ファイルの作成
静的ファイルは、ホストからのcreateコマンドの使用によってデバイス中で作成される。ホストは通常、ホストがそれを用いてファイルを識別することを望むfileIDを指定する。
ホストは、デバイス中でホストがどのファイルを作成したかを追跡するか、あるいはそのfileIDがすでにデバイス中に存在しないファイルを開くことをホストが試みた後のデバイスからのエラーメッセージに応答してファイルを作成することができる。
14.4静的ファイルを開く
ホストは、パラメータとしてファイルのためのfileIDを用いるopenコマンドを送ることにより、静的ファイルを開く。
ホストは、デバイス中で同時に開いているファイルの数、またはデバイス中で同時に開いているホストにより定義された特定タイプのファイルの数をホストが制御するように、静的ファイルのセットを用いてデバイス中で動作し得る。従って、ホストは、別の静的ファイルを開く前に、1つ以上の静的ファイルを閉じることができる。
14.5静的ファイルへの書き込み
静的ファイルが最初に書き込まれるとき、その静止ファイルは、デバイス中の単一の完全ファイルブロックを占める。なぜならば、ファイルサイズは、ホストにより、フラッシュメモリ中のメタブロックのサイズと正確に等しいと定義されるからである。従って、ファイルのためのオフセットアドレス範囲は、フラッシュメモリ中のメタブロックのサイズと正確に等しい。
静的ファイルへのその後の書き込みにより、このオフセットアドレス範囲内でデータが更新される。ホストは、write_pointer コマンドを用いてファイルのためのwrite_pointer 値を制御することによってデータが更新されるファイルオフセットアドレスを制御する。ホストは、静的ファイルのサイズに関するオフセットアドレス範囲の終わりをwrite_pointer 値が超えることを許さない。同様に、ホストは、read_pointer 値をこの範囲内に拘束する。
ファイルが開かれた後に静的ファイル中の既存データが更新されると、更新されたデータがプログラムされるプログラムブロックが開かれる。ファイルブロック中の対応するオフセットアドレスを有するデータは古くなる。完全な静的ファイルが更新されれば、プログラムブロック中のすべてのデータは有効であり、プログラムブロックはファイルのためのファイルブロックになる。ファイルのための以前のファイルブロック中のすべてのデータは古くなり、ブロックは、古いブロックのガベージコレクションキューに加えられる。ファイルのためにさらなる更新データが受信されれば、消去済ブロックは、プログラムブロックとして割り当てられる。
静的ファイルのためのプログラムブロックが一杯になるが、そのファイルのためのすべての有効なデータを含んでいなければ、プログラムブロック中のデータのうちのいくつかは古い。なぜならば、複数の更新が同じオフセットアドレスになされているからである。この場合、プログラムブロックは、ファイルブロックになれず、ファイルのためのさらなるデータが受信されるときに、別の空のプログラムブロックは開かれない。プログラムブロック(プログラムブロックは圧縮されている)からの有効なデータがコピーされる消去済ブロックが割り当てられ、この部分的に満たされたブロックは次に、ファイルのためのプログラムブロックになる。ファイルのための以前のプログラムブロック中のすべてのデータは今では古く、ブロックは、古いブロックのガベージコレクションキューに加えられる。
ホストが、以下のセクション14.6において記載されるようにファイルを閉じることにより、ファイルのためのいくつかの有効なデータを各々含んでいる、ファイルブロックとプログラムブロックとの統合とを強制できることに留意されたい。ホストは、ファイルのためのさらなるデータが受信されたときに、直接データファイルデバイスがプログラムブロックを圧縮できるようにするのではなく、部分的に古いプログラムブロックが一杯になったときに、一時的にファイルを閉じることを選ぶことができる。
14.6静的ファイルの閉鎖
ホストは、パラメータとしてファイルのためのfileIDを用いるcloseコマンドを送ることにより、静的ファイルを閉じる。
ファイルのためのデータの一部のみが更新されていれば、静的ファイルの閉鎖は、ファイルをファイルガベージコレクションキューに入れる。これは、以下のセクション14.7に記載されるように、ファイルのためのその後のガベージコレクション操作を可能にする。しかし、ホストは、同じくセクション14.7に記載されるように、ファイルに関する即時のガベージコレクション操作を強制することができる。
14.7静的ファイルのガベージコレクション
ファイル中のデータの一部の更新に続いて、ファイルガベージコレクションキュー中のエントリを有する静的ファイルが閉じられている。ファイルのためのファイルブロックは、いくつかの有効なデータおよびいくつかの古いデータを含み、プログラムブロックは、いくつかの有効なデータ、ことによるといくつかの古いデータ、およびことによるといくらかの消去済容量を含む。
ファイルガベージコレクション操作は、ファイルのためのすべての有効なデータを単一のブロックに統合する。プログラムブロックが古いデータをまったく含まなければ、有効なデータは、ファイルブロックからプログラムブロックにコピーされ、ファイルブロックは、消去される。プログラムブロックが古いデータを含んでいれば、ファイルブロックおよびプログラムブロック双方からのすべての有効なデータが、消去済ブロックにコピーされ、ファイルブロックおよびプログラムブロック双方が消去される。
ファイルガベージコレクションは、ガベージコレクションのスケジューリング・アルゴリズムにより決定されるときに、エントリがキューの頭に達する場合に、実行される。しかし、ホストがファイルを閉じるとき、ホストはファイルに関する即時のガベージコレクション操作を強制することができる。ホストは、ファイルのためのclose コマンドの直後にidleコマンドを送ることによりこれを行い、これにより、別のコマンドが受信されるまで、デバイスにガベージコレクションまたはブロック統合操作を連続的に実行させる。ホストは、別のコマンドを送る前に、デバイスが内部操作の実行でもはやビジーではないことをホストが検出するまで、デバイスの内部ビジーステータスを監視する。この機構により、ファイルが閉じられてすぐのファイルについてのファイルブロックおよびプログラムブロックの統合が、ホストにより保証され得る。
前述した例としてのメモリシステムの概要
直接データファイル・プラットフォーム
直接データファイル・プラットフォームは、フラッシュメモリにおいてデータ記憶を管理するための全般的なバックエンドシステムとして働く。
直接データファイルインターフェイスは、複数のデータのソースをサポートする内部ファイル記憶インターフェイスである。
あらかじめ定められた長さを持たないファイルデータのランダムな読み出し/書き込みアクセスを有するファイルインターフェイスである。
あらかじめ定められた長さを有する完全なファイルオブジェクトの転送を有するオブジェクトインターフェイスである。
ファイルシステムを組み込んだ従来のホストへのLBAインターフェイスである。論理ブロックは、論理ファイルとして格納される。
ファイル内のデータへのランダムアクセスを有する埋め込みアプリケーションプログラムである。
直接データファイル記憶は、ファイルごとのデータ記憶を組織するバックエンドシステムである。
記憶デバイスのための論理アドレス空間はない。
ファイルシステムはない。
直接データファイル対先行システム
直接データファイル・プラットフォームは、先行システムに対して以下の利点を提供する。
高いデータ書き込み速度:
ファイル断片化による徐々に進行する性能低下が排除され、
最高データ書き込み速度は、ホストにより削除されるファイルがバックグラウンド操作において消去されるときに、増大され得る。
データ書き込み速度の均一性:
ストリーミングデータのための維持される書き込み速度は、ガベージコレクションが、バックグラウンドにおいて、またはホストデータの書き込みとインターリーブされたバーストにおいて実行されるときに、改善され得る。
以下の利点は、直接データファイル・プラットフォームにおいて用いられるアルゴリズムの特性の結果である。
限定されたファイル断片化
限定されたファイルおよびブロック統合
真のファイル削除
最適なファイルデータインデックス化
効率的なガベージコレクション
直接データファイルインターフェイス−望ましい特徴
直接データファイルインターフェイスは、ホスト中の動作システムから独立しているべきである。
数値識別子を有するファイルは、フラットな階層において管理され、
ファイルと関連付けられたデータは、インターフェイスより上のレベルにおける階層ディレクトリの構築および維持を可能にするために、格納され得る。
直接データファイルインターフェイスは好ましくは、ファイルデータ転送の以下の種々の形式をサポートする。
サイズが未定義であり、データをそれにストリームできるファイル、
書き込まれる前にサイズが定義されるファイル、
サイズが固定され、永続的に存在するファイル。
直接データファイルインターフェイス−実施
ファイル内のデータは、1バイトの粒度のランダムな書き込みおよび読み出しアクセスを有する。
データは、ファイルのためのデータに、追加、上書き、または内部に挿入され得る。
書き込みまたは読み出されるファイルデータは、長さをあらかじめ定義せずに、デバイスへまたはデバイスからストリームされる。
現在の操作は、別のコマンドの受信によって終了される。
ファイルは、データを書き込むために開かれ、ファイルの終わりにおいて、またはファイルが非活動状態にあるときに閉じられる。
ファイルハンドルが、ホストにより指定されたファイルのためのデバイスにより返される。
階層ディレクトリがサポートされるが、維持されない。
ファイルのための関連付けられた情報が、格納され得る。
その中においてデバイスがバックグラウンドで内部操作を実行できる状態が、ホストにより開始され得る。
直接データファイルインターフェイス−コマンドセット
ファイルコマンド:
ファイルオブジェクトを制御するためのコマンド、create, open, close, delete, erase, List_files
データコマンド:
ファイルデータを書き込みおよび読み出すためのコマンド、write, insert, remove, read, save_buffer, write_pointer, read_pointer
情報コマンド:
ファイルに関連付けられた情報を書き込みおよび読み出すためのコマンド、write_info、read_info, info_write_pointer, info_read_pointer
状態コマンド:
デバイスの状態を制御するためのコマンド、idle, standby, shutdown
デバイスコマンド:
デバイスに問い合わせるためのコマンド、capacity, status
ファイル−ツー−フラッシュマッピングアルゴリズム
データ構造:
ファイル
データグループ
ブロックタイプ:
プログラムブロック
ファイルブロック
共通ブロック
ファイルタイプ:
プレーンファイル
共通ファイル
編集済ファイル
メモリ回復:
ガベージコレクション
ブロック統合
ファイル−ツー−フラッシュマッピングアルゴリズム−データ構造
ファイル:
ファイルは、ホストにより作成および維持されるデータのセットであり、
ホストは、外部ホストであってもよく、またはメモリカード内のアプリケーションプログラムであってもよく、
ファイルは、ホストによって作成されたファイル名により、または直接データファイル・プラットフォームによって作成されたファイルハンドルにより識別され、
ファイル内のデータは、ファイルオフセットアドレスにより識別され、
異なるファイルのためのオフセットアドレスのセットは、デバイス内の独立した論理アドレス空間として働く。デバイス自体のための論理アドレス空間は皆無である。
データグループ:
データグループは、ファイル内の隣接したオフセットアドレスを有する単一のファイルのためのデータのセットであり、
データグループは、単一のブロック中の隣接した物理アドレスに格納され、
データグループは、1バイトから1ブロックまでの間のどのような長さでも持つことができ、
データグループは、物理フラッシュアドレスに論理ファイルアドレスをマッピングするための基本単位である。
ファイル−ツー−フラッシュマッピングアルゴリズム−ブロックタイプ
プログラムブロック:
ホストにより書き込まれたすべてのデータは、プログラムブロックにおいてプログラムされ、
プログラムブロックは、単一のファイルのためのデータ専用であり、
プログラムブロック中のファイルデータは、ファイルオフセットアドレスのどのような順序であってもよく、プログラムブロックは、ファイルのための複数のデータグループを含むことができ、
各開いているファイルのため、および指定されない数の閉じられたファイルのために別個のプログラムブロックが存在する。
ファイルブロック:
プログラムブロックは、その最後の位置がプログラムされたときに、ファイルブロックになる。
共通ブロック:
共通ブロックは、1つ以上のファイルのためのデータグループを含み、
共通ブロックは、共通ブロックのガベージコレクションの間またはブロック統合操作の間に、無関係なファイルのためのデータグループをプログラムブロックにプログラムすることによって作成され、
データグループは、別の共通ブロックのガベージコレクションの間またはブロック統合操作の間に、共通ブロックに書き込まれ得る。
ファイル−ツー−フラッシュマッピングアルゴリズム−ファイルタイプ
プレーンファイル(図3−1参照):
プレーンファイルは、任意の数の完全なファイルブロックおよび1つの部分的に書き込まれたプログラムブロックを含む。
プレーンファイルは、その消去前に、どのブロックからもデータを再配置する必要なく、削除され得る。
共通ファイル(図3−2参照):
共通ファイルは、任意の数の完全なファイルブロック、および1つの共通ブロックを含み、この共通ブロックは、ファイルのためのデータを、他の無関係なファイルのためのデータと共に含む。
共通ブロックのみに関するガベージコレクション操作は、削除されるファイルに続いて実行されなければならない。
編集済ファイル(図3−3および3−4参照)
編集済ファイルは、上書きされた既存のオフセットアドレスにおけるデータの結果として、そのブロックの1つ以上に、古いデータを含む。
古いデータにより占められたメモリ容量は、ファイルガベージコレクション操作によって回復され得る。
ファイルガベージコレクション操作は、編集済ファイルをプレーンファイル形式に復元する。
ファイル−ツー−フラッシュマッピングアルゴリズム−メモリ回復
ガベージコレクション:
ガベージコレクション操作は、古いデータにより占められたメモリ容量を回復するために実行される。
保留中の操作は、ガベージコレクションキューに記録され、スケジューリング・アルゴリズムに従って最適なレートで後に実行される。
ガベージコレクションは、ホストコマンドにより開始され、ホストインターフェイスが動作休止している間に、バックグラウンドで実行され得る。操作は、何か他のホストコマンドの受信と同時に一時停止される。
ガベージコレクションは、フォアグラウンド操作として、ホストデータ書き込み操作とインターリーブされたバーストにおいても実行され得る。
ブロック統合:
進行中のブロック統合プロセスは、プログラムブロックおよび共通ブロック中にロックアップされた消去済容量を回復するために実施され得る。
プログラムブロック中のファイルデータの容量および共通ブロックの削除済ファイルのための古いデータの容量の分布が不均衡である場合にのみ、必要である。
複数のプログラムブロックまたは共通ブロック中のデータは、1つ以上のブロックの消去を可能にするために統合される。
ファイルデータのプログラミング
ファイルハンドルにより識別されたファイルのためのデータは、そのデータがwrite コマンドまたはinsertコマンドに続いてホストからストリームされるにつれて、フラッシュメモリにプログラムされる。
データの当初のファイルオフセットアドレスは、その値がホストにより設定され得る書き込みポインタにより定義される。
バッファメモリ中に十分なデータが蓄積されたら、メタページが、ファイルのためのプログラムブロック中にプログラムされる。
プログラムブロックが一杯になると、そのプログラムブロックはファイルブロックと呼ばれ、消去済ブロックが、ファイルのための新しいプログラムブロックとして割り当てられる。
プログラムブロックが一杯になるときはいつも、または別のホストコマンドが受信されたときはいつも、データグループのインデックス化構造が、フラッシュメモリ中で更新される。
ファイルデータのプログラミング手順は、適応スケジューリング・アルゴリズムにより決定されるホストデータストリームにおける間隔で、フォアグラウンドガベージコレクションのバーストを開始する。
別のホストコマンドが受信されると、ファイルデータのプログラミング手順が終了される。
ファイルデータの読み出し
ファイルハンドルにより識別されたファイルのためのデータは、フラッシュメモリから読み出され、readコマンドに続いてホストにストリームされる。
データの当初のファイルオフセットアドレスは、その値がホストにより設定され得る読み出しポインタにより定義される。
ファイルデータは、ファイルの終わりに達するまで、または別のホストコマンドが受信されるまで、1メタページ単位で読み出される。
データは、ファイルオフセットアドレス順にホストへ転送される。
ファイルのために読み出されるデータグループの位置は、ファイルのインデックス化構造により定義される。
別のホストコマンドが受信されると、ファイルデータ読み出し手順が終了される。
ファイルの削除
ファイルのためのdeleteコマンドに応答して、そのファイルのためのデータを含むブロックが識別され、その後のガベージコレクション操作のためのガベージコレクションキューに加えられる。
ファイルディレクトリおよびファイルインデックステーブルは、ファイルのためのエントリを除去するために更新される。
ファイルを削除するための手順は、ガベージコレクション操作を開始せず、ファイルのためのデータは、直ちには消去されない。
ファイルのためのerase コマンドに応答して、deleteコマンドについてと同じ手順がたどられるが、ガベージコレクション操作が開始され、何か他のホストコマンドが実行される前に、完了される。
ガベージコレクション
ガベージコレクションは、古いデータにより占められたフラッシュ容量を回復する操作である。
その後のガベージコレクション操作を定義するために、デバイスの操作の間に、オブジェクトが3つのガベージコレクションキューにその時々に加えられる。
古いブロックキュー−ファイルデータの更新またはファイルの削除の結果としてブロックが完全に古くなると、そのブロックは、このキューに加えられる。
共通ブロックキュー−複数のファイルのためのデータを含むブロックの一部の中のデータが、ファイルデータ更新、ファイルの削除、またはファイルのガベージコレクションの結果として古くなると、そのデータは、このキューに加えられる。
ファイルキュー−ファイルがホストにより閉じられると、そのファイルは、このキューに加えられる。オブジェクトは、プライオリティのガベージコレクションのために指定され得る。
ガベージコレクション操作は、以下の2つの方法でスケジュールを組みこまれ得る。
バックグラウンド操作は、ホストがデバイスへの読み出しまたは書き込み操作を行っていないときに、ホストにより開始され得る。
フォアグラウンド操作は、直接データファイル・プラットフォームがホストによりアクセスされているのと同時に、直接データファイル・プラットフォームにより開始され得る。
ガベージコレクション−スケジューリング
バックグラウンドガベージコレクションは、ホストにより開始される。デバイスが内部操作を実行することが許されるアイドル状態は、直接データファイルインターフェイスにおいて特定のコマンドを介してホストにより開始される。アイドル状態が持続している間、ガベージコレクションキューからのオブジェクトのガベージコレクションが続く。いずれかのコマンドがホストから受信されると、ガベージコレクションは保留される。ホストは、ガベージコレクション操作が、次のコマンドを送る前に完了できるようにするために、デバイスのビジー状態を任意に監視できる。
フォアグラウンドガベージコレクションは、ホストがバックグラウンド操作を開始していない場合に、直接データファイル・プラットフォームにより開始される。ガベージコレクションは、適応アルゴリズムに従ってスケジュールを組み込まれる。現在のガベージコレクション操作のためのプログラムのバーストおよび消去操作は、ホストから受信されたファイルデータのためのプログラム操作のバーストとインターリーブされる。バーストの長さは、インターリーブされたガベージコレクションの動作周期を定義するために適応的に制御され得る。
ガベージコレクション−適応スケジューリング(図8−2参照)
フラッシュメモリは通常、プログラムブロック、共通ブロック、および古いファイルブロックに含まれるさらなるホストデータを書き込むために必要とされる回復可能な容量を有する。
適応ガベージコレクションは、さらなるホストデータのプログラミングおよび前に書き込まれたホストデータの再配置のインターリーブ比率を制御する。回復可能な容量は、これを消去済容量に変換することにより、新しいホストデータ用に利用可能にされる。ガベージコレクションレートは、適応期間にわたって一定のままである。
ガベージコレクション−操作のプライオリティ
スケジュールが組み込まれたガベージコレクションのための操作は、以下のプライオリティの順序を有するガベージコレクションキューから選ばれる。
1.古いブロックのプライオリティのガベージコレクション:
ファイル消去コマンドの結果として作成された古いブロックのための次のエントリが選択される。
2.共通ブロックのプライオリティのガベージコレクション:
ファイル消去コマンドの結果として作成された部分的に古い共通ブロックのための次のエントリが選択される。
3.古いブロックのガベージコレクション:
古いブロックのための次のエントリが選択される。
4.共通ブロックのガベージコレクション:
部分的に古い共通ブロックのための次のエントリが選択される。
5.ファイルガベージコレクション:
部分的に古いファイルのための次のエントリが選択される。
6.ブロック統合:
ガベージコレクションキュー中にエントリがまったく存在しない場合、ソースブロックおよび宛先ブロックが、ブロック統合操作のために選択される。
ガベージコレクション−共通ブロックのガベージコレクション
有効なファイルは、プログラムブロックまたは共通ブロックのいずれかの中にいくつかのデータを含む。
ファイルが削除されるとき、ファイルのための古いデータを含むいずれかの共通ブロックが、共通ブロックのガベージコレクション操作を経験する。
無関係なファイルのためのデータグループが、別の共通ブロックまたはプログラムブロックに再配置される(図8−7A〜図8−7D参照)。
共通ブロックのガベージコレクション操作の間、有効なファイルグループが、ソース共通ブロックから、1つ以上の選択された宛先ブロックに再配置される。
宛先ブロックは、各ファイルグループについて個別に選択される。
宛先ブロックの選択のためのプライオリティは、以下の通りである。
1.再配置されるソースファイルグループにとって最適である利用可能な消去済容量を有する共通ブロック
2.再配置されるソースファイルグループにとって最適である利用可能な消去済容量を有するプログラムブロック
3.次にプログラムブロックと呼ばれる消去済ブロック
ガベージコレクション−ファイルガベージコレクション
ファイルのための古いデータにより占められた容量を回復するため、ファイルガベージコレクションは、ファイルが閉じられた後、実行され得る。これは、編集の間にファイルのためのデータが上書きされていれば、必要になるだけである。
編集済プレーンファイル状態または編集済共通ファイル状態のファイルは、プレーンファイル状態(単一のプログラムブロックを含み、共通ブロックをまったく含まない)に復元される。
ファイルガベージコレクションは、有効なデータグループを、古いデータを含んでいるブロックからファイルのためのプログラムブロックへコピーすることにより実行される。
データグループは、当初のプログラムポインタに続いてオフセットアドレスから順次コピーされ、ファイルの終わりにラップアラウンドを有する。
ガベージコレクション−ブロック統合
ブロック統合操作の間に、有効なファイルグループが、1つの選択されたソースブロックから、1つ以上の選択された宛先ブロックに再配置される。
ソースブロックは、データの容量が最も低い共通ブロックまたはプログラムブロックとして選択される。
宛先ブロックは、各ファイルグループについて個別に選択される。
宛先ブロックの選択のためのプライオリティは、以下の通りである。
1.再配置されるソースのファイルグループにとって最適である利用可能な消去済容量を有する共通ブロック
2.再配置されるソースのファイルグループにとって最適である利用可能な消去済容量を有するプログラムブロック
3.ファイルグループの一部が書き込まれる、最高の利用可能な消去済容量を有するプログラムブロックまたは共通ブロック(この状況において、ファイルが、2つのブロックを他の無関係なファイルと共有することが許される。)
4.ファイルグループの残りが書き込まれる、ソースのファイルグループの残りにとって最適である利用可能な消去済容量を有する第2のプログラムブロックまたは共通ブロック
5.次にプログラムブロックと呼ばれ、ファイルグループの残りが書き込まれる消去済ブロック
ファイルインデックス化(図10−1参照)
ファイルがホストにより作成されるときに直接データファイルデバイスにより割り当てられるfileIDにより、ファイルが識別される。
フラットディレクトリが、各fileIDについてファイルデータポインタおよびファイル情報ポインタを指定する。
ファイルデータポインタは、ファイルインデックステーブル中のエントリのセットを識別し、各エントリは、そのセットが関連するファイルのためのデータグループを指定する。
ファイル情報ポインタは、情報テーブル中のファイルのための情報ストリングを識別する:
file_infoは、ホストにより書き込まれ、直接データファイルデバイスによって解釈されない。
file_infoは、ファイル名、親ディレクトリ、子ディレクトリ、属性、権利情報、およびファイルのためのファイル関連付けを含み得る。
ファイルインデックス化−インデックス化構造
図10−2参照。
ファイルインデックス化−ファイルインデックステーブル(FIT)−図10−4参照
FITは、フラッシュメモリ中のファイルのためのすべての有効なデータグループのためのエントリを含む。古いデータグループは、FITによりインデックスを付けられない。
FITは、各々が物理ブロックにマッピングされる論理範囲に分割される。
FITファイルは、ファイルオフセットアドレス順の、ファイルのための連続したエントリのセットである。
FITファイルは、物理ブロックおよび論理ファイル数を定義する、FITファイルポインタにより識別される。
ファイルインデックス化−ファイルインデックスの更新(図10−6および図10−7参照)
ファイルインデックステーブルおよび情報テーブルについて同じ構造が用いられる。
ブロックリストは、論理ファイルデータポインタを、物理FITブロック内またはFIT更新ブロック内をFITファイルと関係付けるために用いられる。
FITファイルは、圧縮形式でFITブロックに格納される。
FITファイルの更新されたバージョンは、共有されたFIT更新ブロック中に、1ページ中に単一のFITファイルで、格納される。
FIT更新ブロックの圧縮およびFITブロック中のFITファイルの統合は、その時々に実行される。
ファイルインデックス化−インデックスページ形式(図10−5参照)
FITブロック、FIT更新ブロック、情報ブロック、および情報更新ブロックのために、同じ構造が用いられる。
情報は、1ページ単位でプログラムされる。
1つのページが、FITエントリおよびファイルポインタのために2つの領域に再分割される。
ファイルポインタは、範囲内の論理ファイル番号を、対応するFITファイルの開始のためのページ番号およびエントリ番号に変換する。
FITファイルは、物理的に連続したFITエントリを含む。
データバッファリングおよびプログラミング
ホストによりフラッシュメモリ内に書き込みまたは再配置されるデータは、セクタバッファのセット中にバッファされる。
データグループ境界の分解能は1バイトであるが、データは、ECC生成およびチェックのために、フラッシュへまたはフラッシュから1セクタの整数倍で転送される。
バッファからのデータは、可能であれば、メタページ単位でフラッシュにおいてプログラムされる。
バッファ消去操作は、ファイルが閉じられているまたはシャットダウンが保留中である場合に、1つのページの一部のみをプログラムする。ファイルインデックス化技術は、ページのプログラムされていない部分が残ることを可能にする。
バッファスワップアウト操作は、バッファ空間の管理およびバッファ中のデータのバックアップのために、バッファ中のファイルデータが、共通スワップブロック中に一時的に格納されることを可能にする。
プログラムブロックまたは共通ブロック中のファイルグループの開始は、メタページの開始と整合される。
オンチップコピーは、フラッシュにおけるほとんどのデータ再配置に用い得る。
ブロック状態管理
直接データファイルシステムは、データ記憶と関連付けられたブロックのための8つの状態を維持する(図11−1参照)。
消去済ブロック管理
直接データファイルは、ファイルのためのすべてのデータおよびすべての制御情報を、固定サイズのメタブロック中に格納する。(用語「ブロック」は、「メタブロック」を指定するためによく用いられる)。
消去ブロックをブロックにリンクする方法は、以下の継続中の米国特許出願において記載される論理アドレス空間(LBA)インターフェイスを有するシステムにおいて用いられる方法から変わっていない。継続中の米国特許出願とは、2003年12月30日に出願された「Management of Non-Volatile Memory Systems Having Large Erase Blocks 」という米国特許出願第10/749,831号(特許文献13)、2003年12月30日に出願された「Non-Volatile Memory and Method with Block Management System 」という米国特許出願第10/750,155号(特許文献14)、2004年8月13日に出願された「Non-Volatile Memory and Method with Memory Planes Alignment 」という米国特許出願第10/917,888号(特許文献15)、2004年8月13日に出願された米国特許出願第10/917,867号(特許文献16)、2004年8月13日に出願された「Non-Volatile Memory and Method with Phased Program Failure Handling 」という米国特許出願第10/917,889号(特許文献17)、2004年8月13日に出願された「Non-Volatile Memory and Method with Control Data Management 」という米国特許出願第10/917,725号(特許文献18)、2005年7月27日に出願された「Non-Volatile Memory and Method with Multi-Stream Update Tracking」という米国特許出願第11/192,200号(特許文献19)、2005年7月27日に出願された「Non-Volatile Memory and Method with Improved Indexing for Scratch Pad and Update Blocks 」という米国特許出願第11/192,386号(特許文献20)、および2005年7月27日に出願された「Non-Volatile Memory and Method with Multi-Stream Updating 」という米国特許出願第11/191,686号(特許文献21)である。
データまたは制御情報を格納するための割り当てに利用可能な消去済ブロックは、消去済ブロックプール中に維持される。
消去済ブロックは、消去済ブロックログ中のエントリとして記録される。
割り当てのための消去済ブロックは、ログの頭におけるエントリとして選択される。
ブロックが消去されるときに、ログの末尾にエントリが加えられる。
制御データ構造
制御データ構造は、専用制御ブロック中に格納される。
制御情報は、4つの独立したログ中に格納される。各ログは、制御ブロック中の1ページ以上を占める。有効なログページは、書き込まれた最後のページのログポインタにより追跡される。
共通ブロックログは、フラッシュメモリ中に存在するすべての共通ブロックのためのエントリを、共通ブロックが含む利用可能な消去済容量順で含む。
プログラムブロックログは、フラッシュメモリ中に存在するすべてのプログラムブロックのためのエントリを、プログラムブロックが含む利用可能な消去済容量順で含む。
消去済ブロックログは、フラッシュメモリ中に存在するすべての消去済ブロックのためのエントリを、消去済ブロックの消去順で含む。
制御ログは、制御パラメータ、カウント、およびリストのためのあらかじめ定義されたフィールドを含む。
ログは、制御ブロック中の次の消去済ページ位置に完全なログの改訂バージョンを書き込むことにより更新される。
直接データファイル・プラットフォームを有するメモリカードを示す。 直接データファイル・プラットフォームの構成要素を示す。 ファイルコマンドを示す。 データコマンドを示す。 情報コマンドを示す。 ストリームコマンドを示す。 状態コマンドを示す。 デバイスコマンドを示す。 プレーンファイルの形式を示す。 共通ファイルの形式を示す。 編集済プレーンファイルの形式を示す。 編集済共通ファイルの形式を示す。 デバイス操作のための流れ図を示す。 ファイルデータのプログラミングのための流れ図を示す。 ファイルデータの読み出しのための流れ図を示す。 ファイル削除のための流れ図を示す。 フォアグラウンドガベージコレクションのためのインターリーブされた操作を示す。 ガベージコレクションの適応スケジューリングのための操作原理を示す。 ガベージコレクション選択のための流れ図を示す。 ファイルガベージコレクションのための流れ図を示す。 共通ブロックのガベージコレクションのための流れ図を示す。 ブロック統合のための流れ図を示す。 4つの時系列段階を示す、共通ブロックのガベージコレクションの例を示す。 4つの時系列段階を示す、共通ブロックのガベージコレクションの例を示す。 4つの時系列段階を示す、共通ブロックのガベージコレクションの例を示す。 4つの時系列段階を示す、共通ブロックのガベージコレクションの例を示す。 連続したホストデータプログラミングを示す。 中断されたホストデータプログラミングを示す。 バッファ消去プログラミングを示す。 バッファスワップアウトプログラミングを示す。 バッファ消去後のホストデータプログラミングを示す。 スワップインデータ読み出しを示す。 バッファスワップイン後のホストデータプログラミングを示す。 バッファへの整合データ読み取出しを示す。 バッファからの整合データプログラミングを示す。 バッファへの不整合データ読み出しを示す。 バッファからの不整合データプログラミングを示す。 バッファへの不整合非逐次データ読み出しを示す。 バッファからの不整合非逐次データプログラミングを示す。 ファイルインデックス化を示す。 ファイルインデックス化構造を示す。 ディレクトリブロック形式を示す。 ファイルインデックステーブル(FIT)論理構造を示す。 FITページ形式を示す。 物理FITブロックを示す。 FITファイル更新操作の例を示す。 ブロック状態図を示す。 制御ブロック形式を示す。 共通ブロックログ形式を示す。 (一緒にされるべきパートAおよびパートBにおいて)静的ファイルと共に用いられるコマンドセットを示す。

Claims (14)

  1. データがその中に書き込まれる前に個別に消去されるメモリセルの複数のブロックを有し、一意のファイル識別子および個別のファイル内のオフセットの論理アドレスを有するデータを受信する再プログラム可能な不揮発性メモリシステムを操作する方法であって、第1のファイルのデータが少なくとも第1および第2のブロック中に格納され、第2のブロックが第1のファイルのデータで部分的にのみ満たされ、第2のブロックの残りの部分が消去される場合に、第1のブロックから再配置される第1のファイルのデータに応答して、第1のファイルの有効なデータを、第1のブロックから第2のブロックの消去済部分にコピーするステップを含み、それによって、前記有効なデータが、完全に消去されたブロックにコピーされない方法。
  2. 請求項1記載の方法において、
    第1のブロックから第1のファイルのデータをコピーするステップの前に、第2のファイルのデータも第1のブロック中に格納される方法。
  3. 請求項1記載の方法において、
    第1のファイルのデータが、グループ内のデータの隣接する論理オフセットアドレスおよび隣接する物理アドレス双方を個別に有する複数のデータグループとして格納される方法。
  4. データがその中に書き込まれる前に個別に消去されるメモリセルの複数のブロックを有し、一意のファイル識別子およびファイル内のオフセットの論理アドレスを有するファイルとしてデータを受信する再プログラム可能な不揮発性メモリシステムを操作する方法であって、
    ファイルのデータを1つ以上の消去済ブロックの連続ページに書き込むステップを含み、
    ファイルのデータが、1つ以上の消去済ブロックの1つのページの一部にのみ書き込まれて次に閉じられる場合、さらに、1つのブロック中に格納されるファイルのデータの少なくともいくつかが古い場合に限り、ファイルを閉じるコマンドの受信に応答してガベージコレクションが1つのブロックに関して実行される方法。
  5. 請求項4記載の方法において、
    ファイルのデータを書き込むステップは、グループ内のデータの隣接する論理オフセットアドレスおよび隣接する物理アドレス双方を個別に有する複数のデータグループを書き込むステップを含む方法。
  6. データがその中に書き込まれる前に個別に消去されるメモリセルの複数のブロックを有し、一意のファイル識別子および個別のファイル内のオフセットの論理アドレスを有するデータを受信する再プログラム可能な不揮発性メモリシステムを操作する方法であって、
    所与のファイルのデータを第1のブロック中に格納するステップと、
    所与のファイルの新たに受信されたデータを第2のブロック中に書き込むステップと、
    所与のファイルのデータを第1のブロックから第2のブロックにコピーすることにより、所与のファイルのガベージコレクションを実行するステップと、
    を含む方法。
  7. 請求項6記載の方法において、
    メモリシステム内での所与のファイルの記憶位置の記録を、グループ内のデータの隣接する論理オフセットアドレスおよび隣接する物理アドレス双方を個別に有する複数のデータグループとして維持するステップをさらに含む方法。
  8. データがその中に書き込まれる前に個別に消去されるメモリセルの複数のブロックを有する再プログラム化可能な不揮発性メモリシステムであって、
    一意のファイル識別子および個別のファイル内のオフセットの論理アドレスを有するデータが受け取られ、
    第1のファイルのデータが少なくとも第1および第2のブロック中に格納され、第2のブロックが第1のファイルのデータで部分的にのみ満たされ、第2のブロックの残りの部分が消去され、
    第1のファイルの有効なデータが、第1のブロックから再配置される第1のファイルのデータに応答して、第1のブロックから第2のブロックの消去済部分にコピーされ、それによって、前記有効なデータが、完全に消去されたブロックにコピーされないメモリシステム。
  9. 請求項8記載のメモリシステムにおいて、
    第1のブロックから第1のファイルのデータをコピーする前に、第2のファイルのデータも第1のブロック中に格納されるメモリシステム。
  10. 請求項8記載のメモリシステムにおいて、
    第1のファイルのデータが、グループ内のデータの隣接する論理オフセットアドレスおよび隣接する物理アドレス双方を個別に有する複数のデータグループとして格納されるメモリシステム。
  11. ファイル内のデータの一意のファイル識別子およびオフセットの論理アドレスを有するファイルとしてデータを受信できる再プログラム可能な不揮発性メモリシステムであって、
    メモリシステムは、データがその中に書き込まれる前に個別に消去されるメモリセルの複数のブロックを備え、
    消去済状態にある場合に、ファイルのデータが、1つ以上のブロックの連続ページに書き込まれ、
    ファイルのデータが、1つのブロックの1つのページの一部にのみ書き込まれて次に閉じられる場合、さらに、1つのブロック中に格納されるファイルのデータの少なくともいくつかが古い場合に限り、ファイルを閉じるコマンドの受信に応答してガベージコレクションが、1つ以上のブロックの少なくとも1つに書き込まれるデータに関して実行されるメモリシステム。
  12. 請求項11記載のメモリシステムにおいて、
    ファイルのデータが、グループ内のデータの隣接する論理オフセットアドレスおよび隣接する物理アドレス双方を個別に有する複数のデータグループの形で書き込まれるメモリシステム。
  13. 一意のファイル識別子および個別のファイル内のオフセットの論理アドレスを有するデータを受信する再プログラム可能な不揮発性メモリシステムであって、
    メモリシステムは、データがその中に書き込まれる前に個別に消去されるメモリセルの複数のブロックを備え、
    所与のファイルのデータが第1のブロック中に格納され、
    所与のファイルの新たに受信されたデータが第2のブロック中に書き込まれ、
    所与のファイルのデータを第1のブロックから第2のブロックにコピーすることにより、所与のファイルのガベージコレクションが実行されるメモリシステム。
  14. 請求項13記載のメモリシステムにおいて、
    所与のファイルのデータが、グループ内のデータの隣接する論理オフセットアドレスおよび隣接する物理アドレス双方を個別に有する複数のデータグループの形で書き込まれるメモリシステム。
JP2008525155A 2005-08-03 2006-08-01 直接データファイル記憶を用いるフラッシュメモリにおけるデータ操作 Expired - Fee Related JP4537481B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US70538805P 2005-08-03 2005-08-03
PCT/US2006/030093 WO2007019174A2 (en) 2005-08-03 2006-08-01 Data operations in flash memories utilizing direct data file storage

Publications (3)

Publication Number Publication Date
JP2009503738A true JP2009503738A (ja) 2009-01-29
JP2009503738A5 JP2009503738A5 (ja) 2009-09-17
JP4537481B2 JP4537481B2 (ja) 2010-09-01

Family

ID=37402587

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008525181A Expired - Fee Related JP4537482B2 (ja) 2005-08-03 2006-08-01 直接データファイル記憶メモリにおけるデータ統合およびガベージコレクション
JP2008525155A Expired - Fee Related JP4537481B2 (ja) 2005-08-03 2006-08-01 直接データファイル記憶を用いるフラッシュメモリにおけるデータ操作

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008525181A Expired - Fee Related JP4537482B2 (ja) 2005-08-03 2006-08-01 直接データファイル記憶メモリにおけるデータ統合およびガベージコレクション

Country Status (7)

Country Link
US (12) US7409489B2 (ja)
EP (2) EP1920336A2 (ja)
JP (2) JP4537482B2 (ja)
KR (2) KR20080038364A (ja)
CN (7) CN101233480B (ja)
TW (6) TW200741526A (ja)
WO (2) WO2007019220A2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010103760A1 (ja) * 2009-03-13 2010-09-16 パナソニック株式会社 アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム
JP2010277685A (ja) * 2009-05-26 2010-12-09 Corrado Villa 電力損失を制御するための方法及びデバイス
US8392476B2 (en) 2010-02-16 2013-03-05 Kabushiki Kaisha Toshiba Semiconductor memory device
JP2015076070A (ja) * 2013-10-11 2015-04-20 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム
KR20150095900A (ko) * 2012-12-19 2015-08-21 마벨 월드 트레이드 리미티드 스토리지 드라이브의 비휘발성 반도체 메모리에 그리고 상기 비휘발성 반도체 메모리로부터 데이터를 전달하기 위해 디스크립터들을 생성하는 장치 및 방법
JP2016026345A (ja) * 2015-09-03 2016-02-12 マイクロン テクノロジー, インク. メモリアレイにおける読み出し待ち時間を短縮するためのメモリ操作の一時停止

Families Citing this family (558)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7108975B2 (en) * 2001-09-21 2006-09-19 Regents Of The University Of Michigan Atlastin
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US7934064B1 (en) * 2004-12-21 2011-04-26 Acronis Inc. System and method for consolidation of backups
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
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
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
JP2006350476A (ja) * 2005-06-13 2006-12-28 Sony Computer Entertainment Inc コンテンツ配信装置およびシステム
US8335920B2 (en) * 2005-07-14 2012-12-18 Imation Corp. Recovery of data access for a locked secure storage device
US8321953B2 (en) * 2005-07-14 2012-11-27 Imation Corp. Secure storage device with offline code entry
US8438647B2 (en) * 2005-07-14 2013-05-07 Imation Corp. Recovery of encrypted data from a secure storage device
US8015606B1 (en) 2005-07-14 2011-09-06 Ironkey, Inc. Storage device with website trust indication
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
US7552271B2 (en) * 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7627733B2 (en) * 2005-08-03 2009-12-01 Sandisk Corporation Method and system for dual mode access for storage devices
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
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
US7558906B2 (en) * 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
JP4394047B2 (ja) * 2005-08-05 2010-01-06 信越ポリマー株式会社 キーフレームおよび押釦スイッチ用カバー部材
US20070067620A1 (en) * 2005-09-06 2007-03-22 Ironkey, Inc. Systems and methods for third-party authentication
US12061519B2 (en) 2005-09-30 2024-08-13 Purage Storage, Inc. Reconstructing data segments in a storage network and methods for use therewith
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
US20070094445A1 (en) * 2005-10-20 2007-04-26 Trika Sanjeev N Method to enable fast disk caching and efficient operations on solid state disks
US20070116023A1 (en) * 2005-11-23 2007-05-24 Broadcom Corporation Method and apparatus for dynamically configuring a generic processing module
US20070136671A1 (en) * 2005-12-12 2007-06-14 Buhrke Eric R Method and system for directing attention during a conversation
US20070136553A1 (en) * 2005-12-13 2007-06-14 Sinclair Alan W Logically-addressed file storage systems
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7747837B2 (en) * 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7793068B2 (en) * 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US8266378B1 (en) 2005-12-22 2012-09-11 Imation Corp. Storage device with accessible partitions
US8639873B1 (en) 2005-12-22 2014-01-28 Imation Corp. Detachable storage device with RAM cache
US7818726B2 (en) * 2006-01-25 2010-10-19 Microsoft Corporation Script-based object adaptation
US7454587B1 (en) * 2006-02-06 2008-11-18 Xilinx, Inc. Method and apparatus for memory management in an integrated circuit
CN100485681C (zh) * 2006-03-23 2009-05-06 北京握奇数据系统有限公司 智能卡存储系统及该系统中文件创建管理的方法
US20070233752A1 (en) * 2006-03-30 2007-10-04 Kiran Bangalore Method and apparatus to reclaim nonvolatile memory space
US7469329B2 (en) * 2006-03-30 2008-12-23 International Business Machines Corporation Methods for dynamically resizing memory pools
JP4135747B2 (ja) * 2006-04-06 2008-08-20 ソニー株式会社 データ処理装置及びフラッシュメモリへのアクセス方法
US8176249B2 (en) * 2006-05-21 2012-05-08 Amiram Grynberg Methods for embedding session secrets, within application instances
DE102006025133A1 (de) * 2006-05-30 2007-12-06 Infineon Technologies Ag Speicher- und Speicherkommunikationssystem
US20070300031A1 (en) * 2006-06-22 2007-12-27 Ironkey, Inc. Memory data shredder
US8429242B1 (en) * 2006-06-26 2013-04-23 Emc Corporation Methods and apparatus for providing content
JP2008009803A (ja) * 2006-06-30 2008-01-17 Sony Corp 情報記憶装置、および、情報転送方法、情報転送システム、プログラム、並びに、記録媒体
US20080010323A1 (en) * 2006-07-06 2008-01-10 An Chen Computer Co., Ltd. Method for duplicating data
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
US7444461B2 (en) * 2006-08-04 2008-10-28 Sandisk Corporation Methods for phased garbage collection
KR100758301B1 (ko) * 2006-08-04 2007-09-12 삼성전자주식회사 메모리 카드 및 그것의 데이터 저장 방법
US8949555B1 (en) * 2007-08-30 2015-02-03 Virident Systems, Inc. Methods for sustained read and write performance with non-volatile memory
US7441071B2 (en) * 2006-09-28 2008-10-21 Sandisk Corporation Memory systems for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
US7444462B2 (en) * 2006-09-28 2008-10-28 Sandisk Corporation Methods for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
US7444463B2 (en) * 2006-09-29 2008-10-28 Sandisk Corporation System for phased garbage collection with state indicators
US7464216B2 (en) * 2006-09-29 2008-12-09 Sandisk Corporation Method for phased garbage collection with state indicators
KR100849221B1 (ko) * 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
WO2008057557A2 (en) * 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
US8074011B2 (en) * 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8578127B2 (en) * 2009-09-09 2013-11-05 Fusion-Io, Inc. Apparatus, system, and method for allocating storage
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
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
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
KR20090087119A (ko) 2006-12-06 2009-08-14 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 빈 데이터 토큰 지시어를 사용한 저장 장치 내의 데이터 관리 장치, 시스템 및 방법
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US8209605B2 (en) * 2006-12-13 2012-06-26 Pado Metaware Ab Method and system for facilitating the examination of documents
EP1939751A1 (en) * 2006-12-22 2008-07-02 Telefonaktiebolaget LM Ericsson (publ) Storing compressed data
JP5266250B2 (ja) 2006-12-26 2013-08-21 サンディスク テクノロジィース インコーポレイテッド 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用
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
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
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
US8166267B2 (en) * 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
US20080177782A1 (en) * 2007-01-10 2008-07-24 Pado Metaware Ab Method and system for facilitating the production of documents
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
KR100869675B1 (ko) * 2007-02-05 2008-11-21 지인정보기술 주식회사 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
KR100825802B1 (ko) * 2007-02-13 2008-04-29 삼성전자주식회사 기입 데이터의 논리적 페이지보다 이전 논리적 페이지들을가지는 데이터들을 데이터 블록으로부터 복사하는 불휘발성메모리 장치의 데이터 기입 방법
US7639540B2 (en) * 2007-02-16 2009-12-29 Mosaid Technologies Incorporated Non-volatile semiconductor memory having multiple external power supplies
KR100875294B1 (ko) * 2007-03-16 2008-12-23 삼성전자주식회사 프로그래밍시 블럭단위의 상태 레지스터를 확인하는 플래시메모리와 그 방법
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
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US9632870B2 (en) * 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
DE102007015535A1 (de) * 2007-03-30 2008-10-02 Siemens Ag Verfahren zur digitalen Speicherung von Daten auf einem Datenspeicher mit beschränktem verfügbarem Speicherplatz
US8768898B1 (en) * 2007-04-26 2014-07-01 Netapp, Inc. Performing direct data manipulation on a storage device
US9785549B2 (en) 2007-04-27 2017-10-10 Microsoft Technology Licensing, Llc Managing object lifetime for native/managed peers
US7991942B2 (en) * 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US7882301B2 (en) 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
US8041883B2 (en) 2007-05-09 2011-10-18 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method
US8041847B1 (en) 2007-05-10 2011-10-18 Marvell International Ltd. Periodic and conditional execution of DMA operations
US8010507B2 (en) * 2007-05-24 2011-08-30 Pado Metaware Ab Method and system for harmonization of variants of a sequential file
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
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
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
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
WO2009001514A1 (ja) * 2007-06-22 2008-12-31 Panasonic Corporation メモリコントローラ、不揮発性記憶装置、ファイルシステム、不揮発性記憶システム、データ書き込み方法及びデータ書き込みプログラム
TWI369633B (en) * 2007-06-27 2012-08-01 Sandisk Corp Phased garbage collection and house keeping operations in a flash memory system
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
US7822791B2 (en) * 2007-06-28 2010-10-26 Intel Corporation Method and apparatus for flash memory reclaim
US20090006506A1 (en) * 2007-06-28 2009-01-01 Nokia Corportion Method and system for garbage collection of native resources
US8201188B2 (en) * 2007-09-20 2012-06-12 Microsoft Corporation Device-hosted services over media transfer protocol
US7805632B1 (en) * 2007-09-24 2010-09-28 Net App, Inc. Storage system and method for rapidly recovering from a system failure
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8316277B2 (en) 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
CA2708669A1 (en) * 2007-12-13 2009-06-18 Redknee Inc. Method and system for storage
US9032154B2 (en) * 2007-12-13 2015-05-12 Sandisk Technologies Inc. Integration of secure data transfer applications for generic IO devices
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
US20090164745A1 (en) * 2007-12-21 2009-06-25 Alan Sinclair System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
US7934052B2 (en) 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
US20090228716A1 (en) * 2008-02-08 2009-09-10 Pado Metawsre Ab Method and system for distributed coordination of access to digital files
US9060046B2 (en) * 2008-02-18 2015-06-16 Google Technology Holdings LLC Method and apparatus for transferring media data between devices
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
KR101477047B1 (ko) * 2008-02-29 2014-12-30 삼성전자주식회사 메모리 시스템 및 그것의 블록 병합 방법
TWI385520B (zh) * 2008-02-29 2013-02-11 Via Tech Inc 儲存單元管理方法及系統
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP4675985B2 (ja) 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
US20110016275A1 (en) * 2008-03-04 2011-01-20 Nxp B.V. Mobile communication device and method for implementing mifare memory multiple sectors mechanisms
CN101251788A (zh) * 2008-03-07 2008-08-27 威盛电子股份有限公司 储存单元管理方法及系统
JP2009230205A (ja) * 2008-03-19 2009-10-08 Toshiba Corp メモリシステム
US8484432B2 (en) 2008-03-11 2013-07-09 Kabushiki Kaisha Toshiba Memory system
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device
US8356105B2 (en) * 2008-05-02 2013-01-15 Marblecloud, Inc. Enterprise device policy management
US8880775B2 (en) * 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
MX2010014374A (es) 2008-06-24 2011-03-01 Nxp Bv Metodo para accesar aplicaciones en un ambiente movil seguro.
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US20090327581A1 (en) * 2008-06-30 2009-12-31 Coulson Richard L Nand memory
KR100954039B1 (ko) * 2008-08-11 2010-04-20 (주)인디링스 플래시 메모리 제어 방법 및 제어 장치
US8281062B2 (en) * 2008-08-27 2012-10-02 Sandisk Il Ltd. Portable storage device supporting file segmentation and multiple transfer rates
TWI399651B (zh) * 2008-09-12 2013-06-21 Communication protocol method and system for input / output device
US20100070544A1 (en) * 2008-09-12 2010-03-18 Microsoft Corporation Virtual block-level storage over a file system
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
CN101676882B (zh) * 2008-09-16 2013-01-16 美光科技公司 存储器装置的内嵌映射信息
US7953774B2 (en) * 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
CN101685381B (zh) 2008-09-26 2013-07-24 美光科技公司 固态大容量存储装置的数据串流
US8429658B2 (en) * 2008-10-16 2013-04-23 International Business Machines Corporation Lock deferral for real-time garbage collection
US8205203B2 (en) * 2008-10-16 2012-06-19 International Business Machines Corporation Scheduling for real-time garbage collection
CN101727398B (zh) * 2008-10-31 2012-07-11 西安奇维测控科技有限公司 经信息序列化实现闪存控制器管理数据存储与还原的方法
JP5364340B2 (ja) * 2008-11-07 2013-12-11 株式会社ケーヒン バックアップ方法及び装置並びに車両用電子制御装置
US8341311B1 (en) 2008-11-18 2012-12-25 Entorian Technologies, Inc System and method for reduced latency data transfers from flash memory to host by utilizing concurrent transfers into RAM buffer memory and FIFO host interface
KR101469771B1 (ko) * 2008-12-03 2014-12-08 삼성전자주식회사 플래시 메모리를 포함하는 반도체 장치 및 이의 어드레스 사상 방법
US8849856B2 (en) * 2008-12-16 2014-09-30 Sandisk Il Ltd. Discardable files
US20120173593A1 (en) * 2008-12-16 2012-07-05 Fabrice Jogand-Coulomb System and Method for Managing Discardable Objects
US9104686B2 (en) * 2008-12-16 2015-08-11 Sandisk Technologies Inc. System and method for host management of discardable objects
JP5268617B2 (ja) * 2008-12-17 2013-08-21 キヤノン株式会社 画像形成装置、画像形成装置の制御方法及びコンピュータプログラム
JP4551958B2 (ja) * 2008-12-22 2010-09-29 株式会社東芝 半導体記憶装置および半導体記憶装置の制御方法
US8452940B2 (en) * 2008-12-30 2013-05-28 Sandisk Technologies Inc. Optimized memory management for random and sequential data writing
US8327040B2 (en) 2009-01-26 2012-12-04 Micron Technology, Inc. Host controller
US8386723B2 (en) * 2009-02-11 2013-02-26 Sandisk Il Ltd. System and method of host request mapping
US9098396B2 (en) * 2009-02-13 2015-08-04 Sandisk Il Ltd. Enhancement of efficiency in power failure handling in flash memory
US20100235605A1 (en) * 2009-02-13 2010-09-16 Nir Perry Enhancement of storage life expectancy by bad block management
KR20100094241A (ko) * 2009-02-18 2010-08-26 삼성전자주식회사 예비 블록을 포함하지 않는 불휘발성 메모리 장치
US20100228906A1 (en) * 2009-03-06 2010-09-09 Arunprasad Ramiya Mothilal Managing Data in a Non-Volatile Memory System
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
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
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
KR101574540B1 (ko) * 2009-04-15 2015-12-07 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
CA2758235A1 (en) 2009-04-27 2010-11-04 Kamlesh Gandhi Device and method for storage, retrieval, relocation, insertion or removal of data in storage units
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
TWI455133B (zh) * 2009-05-26 2014-10-01 Silicon Motion Inc 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
WO2010143209A1 (en) * 2009-06-10 2010-12-16 Francesco Falanga Suspension of memory operations for reduced read latency in memory arrays
CN102576330B (zh) * 2009-06-12 2015-01-28 提琴存储器公司 具有持久化无用单元收集机制的存储系统
US8364931B2 (en) * 2009-06-29 2013-01-29 Mediatek Inc. Memory system and mapping methods using a random write page mapping table
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
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
JP5254141B2 (ja) * 2009-07-14 2013-08-07 富士通株式会社 アーカイブ装置、データ格納プログラムおよびデータ格納方法
WO2011013125A1 (en) * 2009-07-27 2011-02-03 Storwize Ltd. Method and system for transformation of logical data objects for storage
US8683088B2 (en) * 2009-08-06 2014-03-25 Imation Corp. Peripheral device data integrity
US8745365B2 (en) * 2009-08-06 2014-06-03 Imation Corp. Method and system for secure booting a computer by booting a first operating system from a secure peripheral device and launching a second operating system stored a secure area in the secure peripheral device on the first operating system
US9235350B2 (en) * 2009-08-27 2016-01-12 International Business Machines Corporation Dispersed storage unit and methods with metadata separation for use in a dispersed storage system
KR101717644B1 (ko) 2009-09-08 2017-03-27 샌디스크 테크놀로지스 엘엘씨 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
KR101689420B1 (ko) 2009-09-09 2016-12-23 샌디스크 테크놀로지스 엘엘씨 저장 장치의 전력 감소 관리를 위한 장치, 시스템, 및 방법
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8838877B2 (en) * 2009-09-16 2014-09-16 Apple Inc. File system derived metadata for management of non-volatile memory
US8234250B1 (en) * 2009-09-17 2012-07-31 Netapp. Inc. Processing data of a file using multiple threads during a deduplication gathering phase
TWI506422B (zh) * 2009-09-23 2015-11-01 Silicon Motion Inc 用來管理具有多通道、多途徑的記憶裝置之方法以及相關之記憶裝置及其控制器
US8745353B2 (en) * 2009-10-23 2014-06-03 Seagate Technology Llc Block boundary resolution for mismatched logical and physical block sizes
US8364929B2 (en) * 2009-10-23 2013-01-29 Seagate Technology Llc Enabling spanning for a storage device
US8635422B1 (en) * 2009-10-29 2014-01-21 Symantec Corporation Systems and methods for reclaiming storage space from deleted volumes on thin-provisioned disks
US8140740B2 (en) * 2009-10-29 2012-03-20 Hewlett-Packard Development Company, L.P. Data defragmentation of solid-state memory
US8549223B1 (en) 2009-10-29 2013-10-01 Symantec Corporation Systems and methods for reclaiming storage space on striped volumes
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
JP5593682B2 (ja) * 2009-11-17 2014-09-24 セイコーエプソン株式会社 プリンター、プリンターの制御方法、及び、プログラム
TWI423024B (zh) * 2009-11-23 2014-01-11 Phison Electronics Corp 用於快閃記憶體的資料儲存方法及其控制器與儲存系統
DE112010004667T5 (de) * 2009-12-03 2013-01-17 Hitachi, Ltd. Speichervorrichtung und Speichersteuerung
US8176234B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Multi-write coding of non-volatile memories
US8176235B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Non-volatile memories with enhanced write performance and endurance
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US20110153912A1 (en) * 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
TWI484334B (zh) * 2009-12-24 2015-05-11 Univ Nat Taiwan 非揮發記憶體的區域式管理方法
TWI409633B (zh) * 2010-02-04 2013-09-21 Phison Electronics Corp 快閃記憶體儲存裝置、其控制器與資料寫入方法
CN101799820B (zh) * 2010-02-08 2013-03-20 深圳市同洲电子股份有限公司 闪存、文件系统挂载方法及装置、数据管理方法及装置
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US8108447B2 (en) * 2010-03-11 2012-01-31 Symantec Corporation Systems and methods for garbage collection in deduplicated data systems
JP2011192240A (ja) * 2010-03-17 2011-09-29 Sony Corp 記憶装置および記憶システム
JP5066209B2 (ja) 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
JP2011209973A (ja) * 2010-03-30 2011-10-20 Hitachi Ltd ディスクアレイ構成プログラム、計算機、計算機システム
US10013252B2 (en) * 2010-04-16 2018-07-03 Oracle International Corporation Software development compliance system
US8782327B1 (en) * 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
TW201140315A (en) * 2010-05-11 2011-11-16 Jmicron Technology Corp Method for estimating capacity usage status of storage unit, and associated memory device and controller thereof
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US9104546B2 (en) * 2010-05-24 2015-08-11 Silicon Motion Inc. Method for performing block management using dynamic threshold, and associated memory device and controller thereof
US8683148B2 (en) * 2010-06-30 2014-03-25 Sandisk Il Ltd. Status indication when a maintenance operation is to be performed at a memory device
US8369156B2 (en) 2010-07-13 2013-02-05 Sandisk Technologies Inc. Fast random access to non-volatile storage
CN101901263A (zh) * 2010-07-22 2010-12-01 华为终端有限公司 文件系统的访问方法及装置
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
EP2598996B1 (en) 2010-07-28 2019-07-10 SanDisk Technologies LLC Apparatus, system, and method for conditional and atomic storage operations
US20120036301A1 (en) * 2010-08-03 2012-02-09 Caspole Eric R Processor support for filling memory regions
US9146875B1 (en) * 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
JP5569936B2 (ja) * 2010-08-11 2014-08-13 国立大学法人 東京大学 制御装置およびデータ記憶装置
US8468007B1 (en) * 2010-08-13 2013-06-18 Google Inc. Emulating a peripheral mass storage device with a portable device
US8667248B1 (en) * 2010-08-31 2014-03-04 Western Digital Technologies, Inc. Data storage device using metadata and mapping table to identify valid user data on non-volatile media
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
CN102455973A (zh) * 2010-10-19 2012-05-16 厦门华侨电子股份有限公司 一种利用Flash芯片剩余空间设置数据区擦写数据的方法
CN102004697B (zh) * 2010-10-21 2012-09-19 北京握奇数据系统有限公司 一种Flash的回收方法和装置
CN102467522B (zh) * 2010-11-10 2013-09-11 中兴通讯股份有限公司 一种基于nand闪存的文件系统的自编程方法及装置
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US8527693B2 (en) 2010-12-13 2013-09-03 Fusion IO, Inc. Apparatus, system, and method for auto-commit memory
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
WO2012100087A2 (en) 2011-01-19 2012-07-26 Fusion-Io, Inc. Apparatus, system, and method for managing out-of-service conditions
JP5917163B2 (ja) * 2011-01-27 2016-05-11 キヤノン株式会社 情報処理装置、その制御方法及びプログラム並びに記憶媒体
WO2012106362A2 (en) 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
KR20120088454A (ko) * 2011-01-31 2012-08-08 에스케이하이닉스 주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 장치와, 이를 위한 프로그램 방법
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9575842B2 (en) * 2011-02-24 2017-02-21 Ca, Inc. Multiplex backup using next relative addressing
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8621328B2 (en) 2011-03-04 2013-12-31 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance
US8972696B2 (en) 2011-03-07 2015-03-03 Microsoft Technology Licensing, Llc Pagefile reservations
FR2965079A1 (fr) * 2011-03-15 2012-03-23 Continental Automotive France Procede de gestion d'une memoire non volatile
US8661221B2 (en) * 2011-03-16 2014-02-25 International Business Machines Corporation Leasing fragmented storage between processes
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8966191B2 (en) 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US9311229B2 (en) 2011-03-29 2016-04-12 Blackberry Limited System and method for managing flash memory
CN102736985B (zh) * 2011-03-30 2015-10-14 群联电子股份有限公司 数据合并方法、控制器与储存装置
US9009438B2 (en) 2011-06-01 2015-04-14 International Business Machines Corporation Space reclamation in multi-layered and thin provisioned storage systems
US9449692B2 (en) 2011-08-03 2016-09-20 Micron Technology, Inc. Functional data programming and reading in a memory
JP4988054B2 (ja) * 2011-08-12 2012-08-01 株式会社東芝 メモリシステム
CN102508784B (zh) * 2011-11-02 2015-01-07 杭州海康威视数字技术股份有限公司 视频监控设备中闪存卡的数据存储方法及其系统
KR101298191B1 (ko) 2011-11-04 2013-08-20 에스케이하이닉스 주식회사 반도체 메모리 장치, 이를 위한 연속 프로그램 제어 회로 및 프로그램 방법
US8832411B2 (en) * 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US9274945B2 (en) 2011-12-15 2016-03-01 International Business Machines Corporation Processing unit reclaiming requests in a solid state memory device
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
KR20130075018A (ko) * 2011-12-27 2013-07-05 한국전자통신연구원 플래시 메모리 파일 시스템에 적용 가능한 데이터 업데이트 장치 및 방법
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
WO2013098463A1 (en) 2011-12-29 2013-07-04 Nokia Corporation Method for erasing data entity in memory module
KR20130078973A (ko) * 2012-01-02 2013-07-10 삼성전자주식회사 메모리 장치의 불량 저장 영역 관리 방법 및 이를 이용한 저장 장치
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US8868978B2 (en) 2012-02-14 2014-10-21 International Business Machines Corporation Reclaiming discarded solid state devices
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
DE102012006046A1 (de) * 2012-03-27 2013-10-02 Heidelberger Druckmaschinen Ag Adaptives Remote-Service-Protokoll
WO2013162531A1 (en) * 2012-04-25 2013-10-31 Hewlett-Packard Development Company L.P. Dynamic memory allocation
US8681548B2 (en) 2012-05-03 2014-03-25 Sandisk Technologies Inc. Column redundancy circuitry for non-volatile memory
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
TWI477966B (zh) * 2012-05-31 2015-03-21 Silicon Motion Inc 資料儲存裝置與快閃記憶體操作方法
US9846641B2 (en) 2012-06-18 2017-12-19 International Business Machines Corporation Variability aware wear leveling
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US8799561B2 (en) * 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9921954B1 (en) * 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9201784B2 (en) * 2012-09-07 2015-12-01 Kabushiki Kaisha Toshiba Semiconductor storage device and method for controlling nonvolatile semiconductor memory
US10282286B2 (en) * 2012-09-14 2019-05-07 Micron Technology, Inc. Address mapping using a data unit type that is variable
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US9490035B2 (en) 2012-09-28 2016-11-08 SanDisk Technologies, Inc. Centralized variable rate serializer and deserializer for bad column management
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
US8897080B2 (en) 2012-09-28 2014-11-25 Sandisk Technologies Inc. Variable rate serial to parallel shift register
TWI479492B (zh) * 2012-11-20 2015-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
US9411718B2 (en) * 2012-12-21 2016-08-09 Seagate Technology Llc Method to apply fine grain wear leveling and garbage collection
US9430376B2 (en) * 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9348746B2 (en) * 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9734050B2 (en) * 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
JP5619198B2 (ja) * 2013-02-04 2014-11-05 株式会社フィックスターズ 情報処理装置、情報処理方法、およびプログラム
US9383924B1 (en) * 2013-02-27 2016-07-05 Netapp, Inc. Storage space reclamation on volumes with thin provisioning capability
US9361040B1 (en) * 2013-02-27 2016-06-07 Marvell International Ltd. Systems and methods for data storage management
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US8656255B1 (en) * 2013-03-15 2014-02-18 Avalanche Technology, Inc. Method for reducing effective raw bit error rate in multi-level cell NAND flash memory
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10417123B1 (en) * 2013-05-16 2019-09-17 Western Digital Technologies, Inc. Systems and methods for improving garbage collection and wear leveling performance in data storage systems
CN103268291B (zh) * 2013-05-23 2016-02-24 清华大学 在闪存存储系统中延迟持久化索引元数据的方法
US9256371B2 (en) 2013-05-28 2016-02-09 Globalfoundries Inc. Implementing reinforcement learning based flash control
US9349450B2 (en) 2013-06-10 2016-05-24 Micron Technology, Inc. Memory devices and memory operational methods including single erase operation of conductive bridge memory cells
US10102148B2 (en) 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
US9690837B1 (en) * 2013-06-28 2017-06-27 EMC IP Holding Company LLC Techniques for preserving redundant copies of metadata in a data storage system employing de-duplication
US9785545B2 (en) * 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
US9477484B2 (en) 2013-07-23 2016-10-25 Samsung Electronics Co., Ltd. System and method for boot acceleration of a data processing system wherein a nonvolatile memory is pre-configured before boot time
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9639463B1 (en) * 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US9569447B2 (en) * 2013-11-08 2017-02-14 Texas Instruments Incorporated File access method and system thereof
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
CN104699688A (zh) * 2013-12-04 2015-06-10 杭州鹰湾科技有限公司 一种搜索文件的方法和电子设备
KR20150068747A (ko) 2013-12-12 2015-06-22 삼성전자주식회사 비휘발성 메모리 시스템, 이를 포함하는 모바일 장치 및 비휘발성 메모리 시스템의 동작방법
US9766823B2 (en) 2013-12-12 2017-09-19 Memory Technologies Llc Channel optimized storage modules
CN104731710B (zh) * 2013-12-18 2018-06-29 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器储存装置
US20150186257A1 (en) * 2013-12-26 2015-07-02 Anand S. Ramalingam Managing a transfer buffer for a non-volatile memory
CA2881206A1 (en) 2014-02-07 2015-08-07 Andrew WARFIELD Methods, systems and devices relating to data storage interfaces for managing address spaces in data storage devices
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US11537290B2 (en) 2014-03-20 2022-12-27 International Business Machines Corporation Managing high performance storage systems with hybrid storage technologies
US9684625B2 (en) 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
KR102164617B1 (ko) 2014-03-24 2020-10-12 삼성전자주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US9996303B2 (en) * 2014-05-08 2018-06-12 Kabushiki Kaisha Toshiba Hybrid-HDD that gives up old NAND data at the last moment
KR102211709B1 (ko) 2014-05-19 2021-02-02 삼성전자주식회사 신호 송수신 특성을 향상한 불휘발성 메모리 시스템, 호스트 장치, 불휘발성 메모리 시스템 및 호스트의 동작방법
US9383926B2 (en) * 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
KR102148389B1 (ko) 2014-06-11 2020-08-27 삼성전자주식회사 오버 라이트 동작을 갖는 메모리 시스템 및 그에 따른 동작 제어방법
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
TWI554944B (zh) * 2014-06-20 2016-10-21 慧榮科技股份有限公司 快閃記憶體控制裝置、快閃記憶體控制系統以及快閃記憶體控制方法
JP6119682B2 (ja) * 2014-06-27 2017-04-26 株式会社デンソー 電子制御装置
US9710326B2 (en) 2014-07-28 2017-07-18 SK Hynix Inc. Encoder by-pass with scrambler
TWI524180B (zh) * 2014-08-15 2016-03-01 財團法人資訊工業策進會 位元組定址儲存系統
US9600409B2 (en) * 2014-08-29 2017-03-21 EMC IP Holding Company LLC Method and system for garbage collection in a storage system based on longevity of stored data
US9652382B1 (en) * 2014-09-04 2017-05-16 Sk Hynix Memory Solutions Inc. Look-ahead garbage collection for NAND flash based storage
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
JP2016057876A (ja) * 2014-09-10 2016-04-21 富士通株式会社 情報処理装置、入出力制御プログラム、及び入出力制御方法
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US9658966B2 (en) 2014-11-24 2017-05-23 Sandisk Technologies Llc Systems and methods of write cache flushing
US20160188495A1 (en) * 2014-12-26 2016-06-30 Intel Corporation Event triggered erasure for data security
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
KR102277521B1 (ko) 2015-01-23 2021-07-16 삼성전자주식회사 저장 장치 및 그것의 리드 리클레임 및 읽기 방법
CN105988935B (zh) * 2015-02-04 2019-04-23 群联电子股份有限公司 智能卡管理方法、存储器存储装置及存储器控制电路单元
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
JP2016170583A (ja) * 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
US10037270B2 (en) 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
US9811462B2 (en) 2015-04-30 2017-11-07 Toshiba Memory Corporation Memory system executing garbage collection
KR102402783B1 (ko) * 2015-05-11 2022-05-27 삼성전자 주식회사 전자 장치 및 이의 페이지 병합 방법
US10009438B2 (en) 2015-05-20 2018-06-26 Sandisk Technologies Llc Transaction log acceleration
US9875053B2 (en) 2015-06-05 2018-01-23 Western Digital Technologies, Inc. Scheduling scheme(s) for a multi-die storage device
US10289327B2 (en) * 2015-06-05 2019-05-14 Western Digital Technologies, Inc. Scheduling scheme(s) for a multi-die storage device
US10248418B2 (en) 2015-06-30 2019-04-02 International Business Machines Corporation Cleared memory indicator
US10884945B2 (en) 2015-06-30 2021-01-05 International Business Machines Corporation Memory state indicator check operations
US10635307B2 (en) 2015-06-30 2020-04-28 International Business Machines Corporation Memory state indicator
CN106326136A (zh) * 2015-07-02 2017-01-11 广明光电股份有限公司 固态硬盘搜集垃圾区块的方法
CN106325764B (zh) * 2015-07-08 2021-02-26 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器存储装置
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US10268400B2 (en) * 2015-09-03 2019-04-23 Sandisk Technologies Llc System and method for file detection and usage during compaction
KR102387956B1 (ko) 2015-09-09 2022-04-19 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템
KR102501751B1 (ko) * 2015-09-22 2023-02-20 삼성전자주식회사 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
US11188229B2 (en) * 2015-09-25 2021-11-30 Hitachi Vantara Llc Adaptive storage reclamation
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US10120613B2 (en) * 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10102119B2 (en) * 2015-10-30 2018-10-16 Sandisk Technologies Llc Garbage collection based on queued and/or selected write commands
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
KR102468992B1 (ko) * 2015-11-06 2022-11-22 에스케이하이닉스 주식회사 메모리 장치 및 이의 동작 방법
US10303371B2 (en) 2015-12-02 2019-05-28 Toshiba Memory Corporation Data storage device that stabilizes write latency
TWI609323B (zh) * 2016-01-29 2017-12-21 捷鼎國際股份有限公司 資料儲存方法及其系統
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10739996B1 (en) 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
US10481830B2 (en) * 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
KR20180014975A (ko) * 2016-08-02 2018-02-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
KR102618699B1 (ko) 2016-09-28 2024-01-02 삼성전자주식회사 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
KR102697927B1 (ko) 2016-11-11 2024-08-22 삼성전자주식회사 스토리지 장치 및 그 동작 방법
CN106598508A (zh) * 2016-12-30 2017-04-26 郑州云海信息技术有限公司 一种固态硬盘及其写入仲裁方法、系统
US10838634B1 (en) * 2016-12-30 2020-11-17 EMC IP Holding Company LLC Managing storage capacity in version families having both writable and read-only data objects
US10255179B2 (en) * 2016-12-30 2019-04-09 Western Digital Technologies, Inc. Garbage collection read throttling
CN108509349B (zh) * 2017-02-27 2022-10-14 得一微电子股份有限公司 一种nand flash的数据源区块回收方法及固态硬盘
JP6765322B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
CN108572887A (zh) * 2017-03-14 2018-09-25 上海骐宏电驱动科技有限公司 数据检验校正方法
CN107015764B (zh) * 2017-03-17 2020-03-27 深圳市江波龙电子股份有限公司 Nand flash的数据处理方法、装置和一种Nand flash
US11893265B2 (en) * 2017-05-02 2024-02-06 Google Llc Garbage collection for data storage
US12260109B2 (en) 2017-06-06 2025-03-25 Google Llc Optimizing data storage with access windows
US10521106B2 (en) 2017-06-27 2019-12-31 International Business Machines Corporation Smart element filtering method via gestures
US10379765B2 (en) * 2017-06-27 2019-08-13 Western Digital Technologies, Inc. Geometry-aware command scheduling
KR102430791B1 (ko) * 2017-07-19 2022-08-10 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
CN107678684B (zh) * 2017-08-22 2020-11-10 深圳市硅格半导体有限公司 存储器的无效数据清除方法、装置和存储器
US11100996B2 (en) 2017-08-30 2021-08-24 Micron Technology, Inc. Log data storage for flash memory
WO2019071620A1 (zh) * 2017-10-09 2019-04-18 华为技术有限公司 一种垃圾数据清理方法及设备
KR20190052368A (ko) * 2017-11-08 2019-05-16 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN108021630B (zh) * 2017-11-21 2021-03-30 深圳市雷鸟网络传媒有限公司 垃圾文件清理方法、智能终端及计算机可读存储介质
US10445230B2 (en) * 2017-12-08 2019-10-15 Macronix International Co., Ltd. Managing block arrangement of super blocks
US10642602B2 (en) * 2017-12-12 2020-05-05 Nxp Usa, Inc. NVM architecture with OTA support
US11099760B2 (en) * 2017-12-14 2021-08-24 Intel Corporation Background data refresh using a system timestamp in storage devices
TWI644207B (zh) * 2017-12-29 2018-12-11 國科美國研究實驗室 Method for garbage collection of data storage device
CN114089916B (zh) * 2018-01-12 2022-12-20 珠海极海半导体有限公司 数据采集系统和温湿度传感器系统
CN110109868B (zh) * 2018-01-18 2023-07-18 伊姆西Ip控股有限责任公司 用于索引文件的方法、装置和计算机程序产品
JP6443571B1 (ja) * 2018-02-02 2018-12-26 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
KR20190102790A (ko) * 2018-02-27 2019-09-04 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법과, 이를 포함하는 메모리 시스템
US10884916B2 (en) * 2018-03-29 2021-01-05 Intel Corporation Non-volatile file update media
CN108536614A (zh) * 2018-03-30 2018-09-14 天津麒麟信息技术有限公司 一种Flash直接随机写实现方法、装置及存储介质
KR20190120966A (ko) * 2018-04-17 2019-10-25 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR102603916B1 (ko) * 2018-04-25 2023-11-21 삼성전자주식회사 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치
US11301376B2 (en) 2018-06-11 2022-04-12 Seagate Technology Llc Data storage device with wear range optimization
CN115509961A (zh) 2018-06-25 2022-12-23 慧荣科技股份有限公司 实体存储对照表产生装置及方法
KR20200016075A (ko) * 2018-08-06 2020-02-14 에스케이하이닉스 주식회사 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치
US10891224B2 (en) * 2018-09-06 2021-01-12 Micron Technology, Inc. Maintaining data consistency in a memory sub system that uses hybrid wear leveling operations
TWI703438B (zh) 2018-09-11 2020-09-01 慧榮科技股份有限公司 映射表更新方法
US11175802B2 (en) * 2018-09-21 2021-11-16 Sap Se Configuration object deletion manager
KR102645142B1 (ko) * 2018-10-25 2024-03-07 삼성전자주식회사 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들
TWI709042B (zh) * 2018-11-08 2020-11-01 慧榮科技股份有限公司 用來進行關於容錯式磁碟陣列的映射資訊管理之方法與裝置以及儲存系統
WO2020102998A1 (zh) * 2018-11-20 2020-05-28 华为技术有限公司 一种删除内存中索引项的方法、装置
KR20200067035A (ko) * 2018-12-03 2020-06-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
KR102788974B1 (ko) * 2018-12-13 2025-03-31 에스케이하이닉스 주식회사 데이터 저장 장치와, 그것의 동작 방법
JP7435470B2 (ja) * 2018-12-19 2024-02-21 ソニーグループ株式会社 情報処理装置、情報処理方法および情報処理プログラム
US10915444B2 (en) * 2018-12-27 2021-02-09 Micron Technology, Inc. Garbage collection candidate selection using block overwrite rate
US11288185B2 (en) 2019-01-03 2022-03-29 Silicon Motion, Inc. Method and computer program product for performing data writes into a flash memory
TWI739075B (zh) * 2019-01-03 2021-09-11 慧榮科技股份有限公司 閃存的資料寫入方法及電腦程式產品
US10976950B1 (en) * 2019-01-15 2021-04-13 Twitter, Inc. Distributed dataset modification, retention, and replication
US11113270B2 (en) 2019-01-24 2021-09-07 EMC IP Holding Company LLC Storing a non-ordered associative array of pairs using an append-only storage medium
US10658045B1 (en) * 2019-05-15 2020-05-19 Western Digital Technologies, Inc. Enhanced solid-state drive write performance with background erase
US11327809B2 (en) 2019-06-19 2022-05-10 International Business Machines Corporation Virtual machine memory removal increment selection
US11508021B2 (en) * 2019-07-22 2022-11-22 Vmware, Inc. Processes and systems that determine sustainability of a virtual infrastructure of a distributed computing system
EP3993273A4 (en) * 2019-07-22 2022-07-27 Huawei Technologies Co., Ltd. Method and apparatus for data compression in storage system, device, and readable storage medium
KR20210012329A (ko) * 2019-07-24 2021-02-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TWI688956B (zh) * 2019-08-28 2020-03-21 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
CN112486404B (zh) * 2019-09-12 2024-07-02 伊姆西Ip控股有限责任公司 用于管理存储块的方法、设备和计算机程序产品
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11650742B2 (en) * 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
KR20210044564A (ko) 2019-10-15 2021-04-23 삼성전자주식회사 스토리지 장치 및 그것의 가비지 컬렉션 방법
US11762569B2 (en) * 2019-10-29 2023-09-19 International Business Machines Corporation Workload based relief valve activation for hybrid controller architectures
KR20210051873A (ko) * 2019-10-31 2021-05-10 에스케이하이닉스 주식회사 컨트롤러 및 메모리 시스템
US11429445B2 (en) * 2019-11-25 2022-08-30 Micron Technology, Inc. User interface based page migration for performance enhancement
CN111049729A (zh) * 2019-11-29 2020-04-21 苏州浪潮智能科技有限公司 一种持久化消息传输方法与装置
US11157179B2 (en) 2019-12-03 2021-10-26 Pure Storage, Inc. Dynamic allocation of blocks of a storage device based on power loss protection
US11175984B1 (en) 2019-12-09 2021-11-16 Radian Memory Systems, Inc. Erasure coding techniques for flash memory
JP2021099642A (ja) * 2019-12-20 2021-07-01 キヤノン株式会社 情報処理装置および情報処理装置の制御方法
KR20210100265A (ko) 2020-02-06 2021-08-17 삼성전자주식회사 스토리지 장치 및 그 동작 방법
US11748277B2 (en) 2020-03-05 2023-09-05 Seagate Technology, Llc Client input/output (I/O) access rate variation compensation
US11704035B2 (en) 2020-03-30 2023-07-18 Pure Storage, Inc. Unified storage on block containers
US12079162B2 (en) 2020-03-30 2024-09-03 Pure Storage, Inc. Snapshot management in a storage system
US12235799B2 (en) 2020-03-30 2025-02-25 Pure Storage, Inc. Optimizing a transfer of a file system
CN113495681B (zh) * 2020-04-07 2024-09-24 杭州萤石软件有限公司 一种nand flash文件数据存取方法、装置及存储介质
US11604759B2 (en) 2020-05-01 2023-03-14 EMC IP Holding Company LLC Retention management for data streams
US11599546B2 (en) 2020-05-01 2023-03-07 EMC IP Holding Company LLC Stream browser for data streams
US11586385B1 (en) 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
KR20210138996A (ko) 2020-05-13 2021-11-22 삼성전자주식회사 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US11599420B2 (en) 2020-07-30 2023-03-07 EMC IP Holding Company LLC Ordered event stream event retention
US11567665B2 (en) * 2020-08-31 2023-01-31 Micron Technology, Inc. Data dispersion-based memory management
US11513871B2 (en) 2020-09-30 2022-11-29 EMC IP Holding Company LLC Employing triggered retention in an ordered event stream storage system
US11755555B2 (en) 2020-10-06 2023-09-12 EMC IP Holding Company LLC Storing an ordered associative array of pairs using an append-only storage medium
KR20220048864A (ko) * 2020-10-13 2022-04-20 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11599293B2 (en) 2020-10-14 2023-03-07 EMC IP Holding Company LLC Consistent data stream replication and reconstruction in a streaming data storage platform
KR20220060385A (ko) * 2020-11-04 2022-05-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11494111B2 (en) * 2020-12-17 2022-11-08 Micron Technology, Inc. Data operation based on valid memory unit count
US11556270B2 (en) * 2021-01-07 2023-01-17 EMC IP Holding Company LLC Leveraging garbage collection for raid transformation
US11816065B2 (en) 2021-01-11 2023-11-14 EMC IP Holding Company LLC Event level retention management for data streams
US20220222008A1 (en) * 2021-01-14 2022-07-14 Silicon Motion, Inc. Method for managing flash memory module and associated flash memory controller and memory device
US12099513B2 (en) 2021-01-19 2024-09-24 EMC IP Holding Company LLC Ordered event stream event annulment in an ordered event stream storage system
CN114780014B (zh) * 2021-01-22 2025-07-18 伊姆西Ip控股有限责任公司 管理元数据存储单元的方法、电子设备和计算机程序产品
TWI766582B (zh) * 2021-02-17 2022-06-01 群聯電子股份有限公司 有效資料合併方法、記憶體儲存裝置及記憶體控制電路單元
US12099742B2 (en) * 2021-03-15 2024-09-24 Pure Storage, Inc. Utilizing programming page size granularity to optimize data segment storage in a storage system
JP7566676B2 (ja) 2021-03-22 2024-10-15 キオクシア株式会社 メモリシステム、および情報処理システム
US11775197B2 (en) * 2021-03-25 2023-10-03 Kyocera Document Solutions Inc. Single command for reading then clearing dynamic random access memory
US11740828B2 (en) * 2021-04-06 2023-08-29 EMC IP Holding Company LLC Data expiration for stream storages
US11740821B2 (en) * 2021-04-12 2023-08-29 EMC IP Holding Company LLC Cost-aware garbage collection for cloud storage
US12001881B2 (en) 2021-04-12 2024-06-04 EMC IP Holding Company LLC Event prioritization for an ordered event stream
US11500578B2 (en) * 2021-04-19 2022-11-15 Micron Technology, Inc. Memory access threshold based memory management
US11954537B2 (en) 2021-04-22 2024-04-09 EMC IP Holding Company LLC Information-unit based scaling of an ordered event stream
US11681460B2 (en) 2021-06-03 2023-06-20 EMC IP Holding Company LLC Scaling of an ordered event stream based on a writer group characteristic
US11513720B1 (en) * 2021-06-11 2022-11-29 Western Digital Technologies, Inc. Data storage device having predictive analytics
US11543993B1 (en) * 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs
US11735282B2 (en) 2021-07-22 2023-08-22 EMC IP Holding Company LLC Test data verification for an ordered event stream storage system
US11733893B2 (en) * 2021-07-28 2023-08-22 International Business Machines Corporation Management of flash storage media
US11907564B2 (en) * 2021-08-03 2024-02-20 Yadro International Ltd. Method of and system for initiating garbage collection requests
US20230082636A1 (en) * 2021-09-16 2023-03-16 Micron Technology, Inc. Parity data modification for partial stripe data update
US11922047B2 (en) * 2021-09-16 2024-03-05 EMC IP Holding Company LLC Using RPO as an optimization target for DataDomain garbage collection
JP2023044330A (ja) * 2021-09-17 2023-03-30 キオクシア株式会社 メモリシステムおよび制御方法
US11847334B2 (en) * 2021-09-23 2023-12-19 EMC IP Holding Company LLC Method or apparatus to integrate physical file verification and garbage collection (GC) by tracking special segments
US11971850B2 (en) 2021-10-15 2024-04-30 EMC IP Holding Company LLC Demoted data retention via a tiered ordered event stream data storage system
US12124727B2 (en) * 2021-12-17 2024-10-22 Samsung Electronics Co., Ltd. Automatic deletion in a persistent storage device
US11822813B2 (en) 2021-12-28 2023-11-21 Samsung Electronics Co., Ltd. Storage device, operation method of storage device, and storage system using the same
WO2023125507A1 (zh) * 2021-12-29 2023-07-06 华为技术有限公司 生成块组的方法、装置和设备
WO2023141992A1 (zh) * 2022-01-28 2023-08-03 长江存储科技有限责任公司 存储器、存储器的控制方法及存储器系统
US12019899B2 (en) * 2022-03-03 2024-06-25 Western Digital Technologies, Inc. Data relocation with protection for open relocation destination blocks
US11886735B2 (en) * 2022-03-22 2024-01-30 Micron Technology, Inc. Data movement based on address table activity
US11934656B2 (en) 2022-04-11 2024-03-19 Netapp, Inc. Garbage collection and bin synchronization for distributed storage architecture
US11941297B2 (en) 2022-04-11 2024-03-26 Netapp, Inc. Garbage collection and bin synchronization for distributed storage architecture
US11947452B2 (en) * 2022-06-01 2024-04-02 Micron Technology, Inc. Controlling variation of valid data counts in garbage collection source blocks
US20240012579A1 (en) * 2022-07-06 2024-01-11 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for data placement in a storage device
KR20240018974A (ko) 2022-08-03 2024-02-14 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US11977758B2 (en) * 2022-08-12 2024-05-07 Micron Technology, Inc. Assigning blocks of memory systems
CN115292247B (zh) * 2022-09-28 2022-12-06 北京鼎轩科技有限责任公司 一种文件读取方法、装置、电子设备和存储介质
US11960742B1 (en) * 2022-10-14 2024-04-16 Oracle International Corporation High-performance, block-level fail atomicity on byte-level non-volatile media
US12056378B1 (en) * 2023-01-27 2024-08-06 Dell Products L.P. Storage management system and method
US12242751B2 (en) * 2023-03-03 2025-03-04 SanDisk Technologies, Inc. Data storage device and method for host-assisted efficient handling of multiple versions of data
KR20240138839A (ko) * 2023-03-13 2024-09-20 삼성전자주식회사 메모리 장치, 메모리 장치의 동작방법 및 메모리 시스템
US20240393978A1 (en) * 2023-05-26 2024-11-28 Micron Technology, Inc. Memory device background operations
US12197323B2 (en) * 2023-06-12 2025-01-14 SanDisk Technologies, Inc. Data storage device with balanced background operations and method therefor
US20250028473A1 (en) * 2023-07-18 2025-01-23 SK Hynix NAND Product Solutions Corp. (dba Solidigm) System and methods for dram-less garbage collection with improved performance
CN116610596B (zh) * 2023-07-19 2023-10-03 合肥康芯威存储技术有限公司 一种存储器件及其数据处理方法
CN116610597B (zh) * 2023-07-20 2023-10-17 合肥康芯威存储技术有限公司 一种存储器件及其垃圾回收的控制方法
US20250053346A1 (en) * 2023-08-07 2025-02-13 Dell Products L.P. Efficient ingest tier references via virtual addresses
CN117632039B (zh) * 2024-01-25 2024-05-03 合肥兆芯电子有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元
US12306750B1 (en) * 2024-02-22 2025-05-20 Oracle International Corporation Selecting garbage collection processes
CN119376648B (zh) * 2024-12-27 2025-03-11 苏州元脑智能科技有限公司 一种硬盘操作方法、计算机程序产品、电子设备及介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10326227A (ja) * 1997-05-23 1998-12-08 Nec Corp フラッシュメモリを記憶媒体とする記憶装置の管理方式
JP2002366423A (ja) * 2001-06-04 2002-12-20 Samsung Electronics Co Ltd フラッシュメモリの管理方法
JP2003208352A (ja) * 2002-01-17 2003-07-25 Fujitsu Ltd 書き込み回数の制限とウエアレベリングを可能にしたフラッシュメモリ
JP2004526233A (ja) * 2001-01-26 2004-08-26 デルタ サーチ ラブズ インコーポレイテッド オペレーティングシステムなしでcpuおよびデバイスを管理するモジュラーマイクロコントローラ
JP2004310573A (ja) * 2003-04-09 2004-11-04 Nippon Telegr & Teleph Corp <Ntt> Icカードにおけるメモリ管理方法、及びicカード
JP2005122439A (ja) * 2003-10-16 2005-05-12 Sharp Corp デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法
JP2006515086A (ja) * 2002-10-28 2006-05-18 サンディスク コーポレイション ブロック内のページをグループ化する方法及び装置
JP2007520804A (ja) * 2003-12-30 2007-07-26 サンディスク コーポレイション 不揮発性メモリおよび非順次更新ブロック管理を伴う方法

Family Cites Families (206)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774A (en) * 1848-09-19 Steam-hammer
US614509A (en) * 1898-11-22 Hose-coupling
US676632A (en) * 1901-01-30 1901-06-18 Frederick G Rogers Boiler.
US4369754A (en) * 1980-11-04 1983-01-25 Bob Lofman Vacuum responsive injection system for engines
US4800520A (en) * 1985-10-29 1989-01-24 Kabushiki Kaisha Toshiba Portable electronic device with garbage collection function
US4802117A (en) * 1985-12-16 1989-01-31 Pitney Bowes Inc. Method of preserving data storage in a postal meter
JP2685173B2 (ja) 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
US4864511A (en) 1987-01-27 1989-09-05 Storage Technology Corporation Automated cartridge system
GB2204973A (en) 1987-05-19 1988-11-23 Gen Electric Co Plc Data processing system
JP3015377B2 (ja) * 1988-08-26 2000-03-06 株式会社東芝 Icカード
EP0675502B1 (en) * 1989-04-13 2005-05-25 SanDisk Corporation Multiple sector erase flash EEPROM system
US5388086A (en) * 1989-06-13 1995-02-07 Kabushiki Kaisha Toshiba Electro-magnetic actuator for driving an objective lens
GB2251324B (en) 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US6256642B1 (en) * 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
JPH05233426A (ja) * 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
JP2839060B2 (ja) 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムおよびデータ処理方法
US5628014A (en) * 1992-03-20 1997-05-06 Paranode, Inc. Methods and apparatus for node caching at the file level
JP3017892B2 (ja) 1992-09-30 2000-03-13 株式会社東芝 ファイル管理装置
US5479633A (en) 1992-10-30 1995-12-26 Intel Corporation Method of controlling clean-up of a solid state memory disk storing floating sector data
JP3641280B2 (ja) * 1992-10-30 2005-04-20 インテル・コーポレーション フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法
US5454103A (en) * 1993-02-01 1995-09-26 Lsc, Inc. Method and apparatus for file storage allocation for secondary storage using large and small file blocks
US5581723A (en) * 1993-02-19 1996-12-03 Intel Corporation Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5619690A (en) 1993-06-21 1997-04-08 Hitachi, Ltd. Computer system including a computer which requests an access to a logical address in a secondary storage system with specification of a local address in the secondary storage system
US5555204A (en) * 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
US5353256A (en) * 1993-06-30 1994-10-04 Intel Corporation Block specific status information in a memory device
US5640529A (en) * 1993-07-29 1997-06-17 Intel Corporation Method and system for performing clean-up of a solid state disk during host command execution
US7137011B1 (en) * 1993-09-01 2006-11-14 Sandisk Corporation Removable mother/daughter peripheral card
KR0169267B1 (ko) * 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5553261A (en) 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5809558A (en) 1994-09-29 1998-09-15 Intel Corporation Method and data storage system for storing data in blocks without file reallocation before erasure
US5754817A (en) 1994-09-29 1998-05-19 Intel Corporation Execution in place of a file stored non-contiguously in a non-volatile memory
ATE149709T1 (de) * 1994-09-30 1997-03-15 Sel Alcatel Ag Verfahren zur speicherverwaltung eines flash- speichers
JP2669365B2 (ja) 1994-11-24 1997-10-27 日本電気株式会社 書換え可能なromファイル装置
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
GB2291990A (en) 1995-09-27 1996-02-07 Memory Corp Plc Flash-memory management system
GB2291991A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
US5933847A (en) 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
DE19536522A1 (de) 1995-09-29 1997-04-03 Siemens Ag Koppelnetzwerk für Kommunikationseinrichtungen
FR2740237B1 (fr) 1995-10-18 1997-11-14 Schlumberger Ind Sa Composant electronique a memoire synchronisee
US6014724A (en) * 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method
US5987478A (en) * 1995-10-31 1999-11-16 Intel Corporation Virtual small block file manager for flash memory array
US5875477A (en) * 1995-12-22 1999-02-23 Intel Corporation Method and apparatus for error management in a solid state disk drive using primary and secondary logical sector numbers
US5799168A (en) 1996-01-05 1998-08-25 M-Systems Flash Disk Pioneers Ltd. Standardized flash controller
US5867341A (en) 1996-01-30 1999-02-02 Seagate Technology, Inc. Disc drive system using multiple pairs of embedded servo bursts
US6038571A (en) * 1996-01-31 2000-03-14 Kabushiki Kaisha Toshiba Resource management method and apparatus for information processing system of multitasking facility
US5787445A (en) 1996-03-07 1998-07-28 Norris Communications Corporation Operating system including improved file management for use in devices utilizing flash memory as main memory
US5903495A (en) * 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
GB9606927D0 (en) * 1996-04-02 1996-06-05 Memory Corp Plc Data storage devices
US5896393A (en) * 1996-05-23 1999-04-20 Advanced Micro Devices, Inc. Simplified file management scheme for flash memory
JPH09319645A (ja) 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
US5996047A (en) 1996-07-01 1999-11-30 Sun Microsystems, Inc. Method and apparatus for caching file control information corresponding to a second file block in a first file block
FR2752072B1 (fr) * 1996-08-01 1999-01-29 Solaic Sa Carte a circuit integre comportant des fichiers classes selon une arborescence
DE19633648A1 (de) * 1996-08-21 1998-02-26 Grundig Ag Verfahren und Schaltungsanordnung zur Speicherung von Diktaten bei einem digitalen Diktiergerät
US5761536A (en) * 1996-08-21 1998-06-02 International Business Machines Corporation System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis
JPH1069420A (ja) * 1996-08-29 1998-03-10 Sony Corp 情報記録装置、情報記録再生装置、情報記録方法および情報再生方法
US5907854A (en) * 1996-09-27 1999-05-25 Alcatel Usa Sourcing, L.P. Flash memory file system for writing data files without rewriting an entire volume
US6681239B1 (en) * 1996-12-23 2004-01-20 International Business Machines Corporation Computer system having shared address space among multiple virtual address spaces
US6279069B1 (en) * 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US6182188B1 (en) 1997-04-06 2001-01-30 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
FR2759795B1 (fr) 1997-02-14 1999-05-07 Francois Charles Oberthur Fidu Procede de stockage de donnees dans une memoire reinscriptible de carte a puce
US5966047A (en) 1997-03-27 1999-10-12 Motorola, Inc. Programmable analog array and method
US6088759A (en) 1997-04-06 2000-07-11 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US5832493A (en) 1997-04-24 1998-11-03 Trimble Navigation Limited Flash file management system
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6021415A (en) * 1997-10-29 2000-02-01 International Business Machines Corporation Storage management system with file aggregation and space reclamation within aggregated files
US5928347A (en) * 1997-11-18 1999-07-27 Shuttle Technology Group Ltd. Universal memory card interface apparatus
US6029168A (en) * 1998-01-23 2000-02-22 Tricord Systems, Inc. Decentralized file mapping in a striped network file system in a distributed computing environment
US6493811B1 (en) 1998-01-26 2002-12-10 Computer Associated Think, Inc. Intelligent controller accessed through addressable virtual space
WO1999045460A2 (en) 1998-03-02 1999-09-10 Lexar Media, Inc. Flash memory card with enhanced operating mode detection and user-friendly interfacing system
KR100319598B1 (ko) * 1998-03-18 2002-04-06 김영환 플래시메모리어레이액세스방법및장치
US6226728B1 (en) * 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US6038636A (en) * 1998-04-27 2000-03-14 Lexmark International, Inc. Method and apparatus for reclaiming and defragmenting a flash memory device
US6151666A (en) * 1998-05-27 2000-11-21 Storage Technology Corporation Method for reclaiming fragmented space on a physical data storage cartridge
US6901457B1 (en) * 1998-11-04 2005-05-31 Sandisk Corporation Multiple mode communications system
JP2000148546A (ja) * 1998-11-10 2000-05-30 Nec Corp データ入出力装置およびデータ入出力方法、並びに記録媒体
US6490649B2 (en) 1998-11-10 2002-12-03 Lexar Media, Inc. Memory device
US6256690B1 (en) 1999-01-15 2001-07-03 Todd Carper System and method for facilitating multiple applications on a smart card
US6480935B1 (en) * 1999-01-15 2002-11-12 Todd Carper Smart card memory management system and method
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
JP2000227871A (ja) 1999-02-05 2000-08-15 Seiko Epson Corp 不揮発性記憶装置、その制御方法、および、情報記録媒体
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 소니 가부시끼 가이샤 기록방법, 관리방법 및 기록장치
JP4779183B2 (ja) * 1999-03-26 2011-09-28 ソニー株式会社 再生装置および再生方法
US6401160B1 (en) * 1999-03-31 2002-06-04 Intel Corporation Method and apparatus to permit adjustable code/data boundary in a nonvolatile memory
GB9907280D0 (en) * 1999-03-31 1999-05-26 Philips Electronics Nv A method of scheduling garbage collection
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
US6467015B1 (en) 1999-04-15 2002-10-15 Dell Products, L.P. High speed bus interface for non-volatile integrated circuit memory supporting continuous transfer
US6535949B1 (en) 1999-04-19 2003-03-18 Research In Motion Limited Portable electronic device having a log-structured file system in flash memory
JP3524428B2 (ja) * 1999-04-20 2004-05-10 東京エレクトロンデバイス株式会社 記憶装置、記憶システム、メモリ管理方法及び記録媒体
US6449625B1 (en) * 1999-04-20 2002-09-10 Lucent Technologies Inc. Use of a two-way stack approach to optimize flash memory management for embedded database systems
US6547150B1 (en) * 1999-05-11 2003-04-15 Microsoft Corporation Smart card application development system and method
JP3863330B2 (ja) * 1999-09-28 2006-12-27 株式会社東芝 不揮発性半導体メモリ
DE60004463D1 (de) 1999-10-25 2003-09-18 Sun Microsystems Inc Speichersystem mit Unterstützung von Dateistufenzugriffen und Blockstufenzugriffen
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6567307B1 (en) * 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
JP3726663B2 (ja) * 2000-09-07 2005-12-14 日産自動車株式会社 電子制御装置の制御データ記憶装置
US6865650B1 (en) 2000-09-29 2005-03-08 Emc Corporation System and method for hierarchical data storage
US6834331B1 (en) 2000-10-24 2004-12-21 Starfish Software, Inc. System and method for improving flash memory data integrity
US20020112116A1 (en) * 2000-11-17 2002-08-15 Nelson Mark Edward Methods, systems, and computer program products for storing data in collections of tagged data pieces
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
KR100365725B1 (ko) * 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP3631463B2 (ja) * 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
JP2002251310A (ja) 2001-02-21 2002-09-06 Ricoh Co Ltd フラッシュメモリのファイルシステム作成方式
US6571326B2 (en) 2001-03-08 2003-05-27 Intel Corporation Space allocation for data in a nonvolatile memory
CN1284356C (zh) * 2001-04-06 2006-11-08 索尼公司 数字摄像机和数据传送方法
US6779063B2 (en) * 2001-04-09 2004-08-17 Hitachi, Ltd. Direct access storage system having plural interfaces which permit receipt of block and file I/O requests
JP2002333384A (ja) * 2001-05-10 2002-11-22 Fujikura Ltd 定偏波光ファイバの偏波面の角度ずれ推定方法及び定偏波光ファイバの接続方法
US20020188592A1 (en) 2001-06-11 2002-12-12 Storage Technology Corporation Outboard data storage management system and method
JP4256600B2 (ja) * 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US6522580B2 (en) * 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
JP4812192B2 (ja) * 2001-07-27 2011-11-09 パナソニック株式会社 フラッシュメモリ装置、及び、それに記憶されたデータのマージ方法
US6456528B1 (en) * 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
GB0123412D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
US6823417B2 (en) 2001-10-01 2004-11-23 Hewlett-Packard Development Company, L.P. Memory controller for memory card manages file allocation table
JP3641230B2 (ja) 2001-10-22 2005-04-20 株式会社東芝 メモリカードを制御するための装置および方法
US6859856B2 (en) * 2001-10-23 2005-02-22 Flex P Industries Sdn. Bhd Method and system for a compact flash memory controller
US6925007B2 (en) * 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
US6883114B2 (en) * 2001-11-08 2005-04-19 M-Systems Flash Disk Pioneers Ltd. Block device driver enabling a ruggedized file system
US6668336B2 (en) 2001-11-08 2003-12-23 M-Systems Flash Disk Pioneers Ltd. Ruggedized block device driver
US20040049627A1 (en) 2001-11-09 2004-03-11 Flex-P Industries Method and system for controlling compact flash memory
TWI240861B (en) 2002-01-11 2005-10-01 Integrated Circuit Solution In Data access method and architecture of flash memory
US6542407B1 (en) 2002-01-18 2003-04-01 Sandisk Corporation Techniques of recovering data from memory cells affected by field coupling with adjacent memory cells
JP2003215495A (ja) 2002-01-28 2003-07-30 Fuji Photo Optical Co Ltd プロジェクタ用光学系およびこれを用いたプロジェクタ装置
US6771536B2 (en) * 2002-02-27 2004-08-03 Sandisk Corporation Operating techniques for reducing program and read disturbs of a non-volatile memory
DE60210416T2 (de) 2002-02-28 2006-09-07 Matsushita Electric Industrial Co., Ltd., Kadoma Speicherkarte
JP4206688B2 (ja) 2002-04-15 2009-01-14 ソニー株式会社 データ処理装置及びデータ処理方法
US6766432B2 (en) * 2002-05-24 2004-07-20 Sun Microsystems, Inc. Memory management system supporting object deletion in non-volatile memory
US6895464B2 (en) * 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
JP4059711B2 (ja) 2002-06-04 2008-03-12 株式会社日立グローバルストレージテクノロジーズ 多重書き込み型記憶装置
US6865659B2 (en) 2002-06-07 2005-03-08 Sun Microsystems, Inc. Using short references to access program elements in a large address space
KR100453053B1 (ko) 2002-06-10 2004-10-15 삼성전자주식회사 플래쉬 메모리용 파일 시스템
KR100541366B1 (ko) * 2002-07-19 2006-01-16 주식회사 하이닉스반도체 고속 데이터 억세스를 위한 디램
US7035949B2 (en) * 2002-07-29 2006-04-25 M-System Flash Dist Pioneers Ltd. Multipurpose processor, system and method
DE10234971B4 (de) 2002-07-31 2006-08-10 Giesecke & Devrient Gmbh Verfahren und Datenträger zum Erzeugen und Korrigieren von Programmcode
US6979481B2 (en) * 2002-08-19 2005-12-27 Mohawk Paper Mills, Inc. Microporous photo glossy inkjet recording media
US6781877B2 (en) * 2002-09-06 2004-08-24 Sandisk Corporation Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
US7093071B2 (en) * 2002-10-09 2006-08-15 Intel Corporation Queued copy command
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US7039788B1 (en) 2002-10-28 2006-05-02 Sandisk Corporation Method and apparatus for splitting a logical block
US7103732B1 (en) * 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
US7526599B2 (en) * 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
AU2003274764A1 (en) * 2002-10-30 2004-05-25 Matsushita Electric Industrial Co., Ltd. Recording method and recording apparatus
CN1260642C (zh) * 2002-11-18 2006-06-21 深圳市朗科科技有限公司 一种向移动存储装置发送命令和数据的方法
EP1435576B1 (en) * 2003-01-03 2013-03-20 Austria Card Plastikkarten und Ausweissysteme GmbH Method and apparatus for block-oriented memory management provided in smart card controllers
US7433712B2 (en) * 2003-02-06 2008-10-07 Modu Ltd. Multi-access solid state memory devices and a telephone utilizing such
WO2004077447A1 (ja) * 2003-02-28 2004-09-10 Fujitsu Limited フラッシュメモリ及びメモリ制御方法
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US6865122B2 (en) * 2003-04-11 2005-03-08 Intel Corporation Reclaiming blocks in a block-alterable memory
US7437557B2 (en) * 2003-06-03 2008-10-14 Lg Electronics Inc. Garbage collection system and method for a mobile communication terminal
CN1705937A (zh) 2003-06-27 2005-12-07 松下电器产业株式会社 从属装置以及通信设定方法
JP4318075B2 (ja) 2003-08-29 2009-08-19 富士フイルム株式会社 Usbファンクション装置
TWI240863B (en) * 2003-09-05 2005-10-01 Megawin Technology Co Ltd Method for efficiently controlling flash memory read/write
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
EP1704484A2 (en) * 2003-12-30 2006-09-27 SanDisk Corporation Non-volatile memory and method with non-sequential update block management
US7383375B2 (en) * 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7519639B2 (en) * 2004-01-05 2009-04-14 International Business Machines Corporation Method and apparatus for dynamic incremental defragmentation of memory
US20060004950A1 (en) 2004-06-30 2006-01-05 Jeffrey Wang Flash memory file system having reduced headers
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
US8375146B2 (en) * 2004-08-09 2013-02-12 SanDisk Technologies, Inc. Ring bus structure and its use in flash memory systems
KR100631765B1 (ko) * 2004-10-18 2006-10-09 삼성전자주식회사 플래시 메모리의 데이터 처리 장치 및 방법
US20060101084A1 (en) 2004-10-25 2006-05-11 International Business Machines Corporation Policy based data migration in a hierarchical data storage system
US7287145B1 (en) * 2004-12-13 2007-10-23 Nvidia Corporation System, apparatus and method for reclaiming memory holes in memory composed of identically-sized memory devices
US7412560B2 (en) 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7366826B2 (en) 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7386655B2 (en) * 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7315916B2 (en) 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US20060161724A1 (en) 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
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
KR100706242B1 (ko) * 2005-02-07 2007-04-11 삼성전자주식회사 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
US7849253B2 (en) * 2005-04-04 2010-12-07 Standard Microsystems Corporation Method for fast access to flash-memory media
WO2006133597A1 (en) 2005-06-15 2006-12-21 Intel Corporation Using transacted writes and caching mechanism to improve write performance in multi-level cell flash memoty
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7552271B2 (en) * 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7627733B2 (en) 2005-08-03 2009-12-01 Sandisk Corporation Method and system for dual mode access for storage devices
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
KR101272642B1 (ko) 2005-08-03 2013-06-10 쌘디스크 코포레이션 플래시 메모리시스템 내의 데이터 저장 용량의 리클레이밍
EP1913463A2 (en) 2005-08-03 2008-04-23 SanDisk Corporation Management of memory blocks which directly store data files
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
EP1910928A2 (en) 2005-08-03 2008-04-16 SanDisk Corporation Non-volatile memory with scheduled reclaim operations
US7558906B2 (en) * 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
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
KR101348255B1 (ko) 2005-10-13 2014-01-08 샌디스크 테크놀로지스, 인코포레이티드 고정된 크기의 저장 블록을 가진 메모리 시스템에서데이터의 변환된 유닛의 저장
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US20070136553A1 (en) 2005-12-13 2007-06-14 Sinclair Alan W Logically-addressed file storage systems
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
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7426606B2 (en) 2006-03-31 2008-09-16 Intel Corporation Method, apparatus and system for reverting FAT cluster number to file ID and offset of non-FAT flash file system
KR100806343B1 (ko) * 2006-10-19 2008-02-27 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
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

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10326227A (ja) * 1997-05-23 1998-12-08 Nec Corp フラッシュメモリを記憶媒体とする記憶装置の管理方式
JP2004526233A (ja) * 2001-01-26 2004-08-26 デルタ サーチ ラブズ インコーポレイテッド オペレーティングシステムなしでcpuおよびデバイスを管理するモジュラーマイクロコントローラ
JP2002366423A (ja) * 2001-06-04 2002-12-20 Samsung Electronics Co Ltd フラッシュメモリの管理方法
JP2003208352A (ja) * 2002-01-17 2003-07-25 Fujitsu Ltd 書き込み回数の制限とウエアレベリングを可能にしたフラッシュメモリ
JP2006515086A (ja) * 2002-10-28 2006-05-18 サンディスク コーポレイション ブロック内のページをグループ化する方法及び装置
JP2004310573A (ja) * 2003-04-09 2004-11-04 Nippon Telegr & Teleph Corp <Ntt> Icカードにおけるメモリ管理方法、及びicカード
JP2005122439A (ja) * 2003-10-16 2005-05-12 Sharp Corp デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法
JP2007520804A (ja) * 2003-12-30 2007-07-26 サンディスク コーポレイション 不揮発性メモリおよび非順次更新ブロック管理を伴う方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010103760A1 (ja) * 2009-03-13 2010-09-16 パナソニック株式会社 アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム
JP5485163B2 (ja) * 2009-03-13 2014-05-07 パナソニック株式会社 アクセスモジュール、情報記録モジュール、コントローラ、及び情報記録システム
JP2010277685A (ja) * 2009-05-26 2010-12-09 Corrado Villa 電力損失を制御するための方法及びデバイス
US8392476B2 (en) 2010-02-16 2013-03-05 Kabushiki Kaisha Toshiba Semiconductor memory device
KR101277371B1 (ko) 2010-02-16 2013-06-20 가부시끼가이샤 도시바 반도체 메모리 장치
KR20150095900A (ko) * 2012-12-19 2015-08-21 마벨 월드 트레이드 리미티드 스토리지 드라이브의 비휘발성 반도체 메모리에 그리고 상기 비휘발성 반도체 메모리로부터 데이터를 전달하기 위해 디스크립터들을 생성하는 장치 및 방법
KR102217966B1 (ko) 2012-12-19 2021-02-22 마벨 월드 트레이드 리미티드 스토리지 드라이브의 비휘발성 반도체 메모리에 그리고 상기 비휘발성 반도체 메모리로부터 데이터를 전달하기 위해 디스크립터들을 생성하는 장치 및 방법
JP2015076070A (ja) * 2013-10-11 2015-04-20 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム
JP2016026345A (ja) * 2015-09-03 2016-02-12 マイクロン テクノロジー, インク. メモリアレイにおける読み出し待ち時間を短縮するためのメモリ操作の一時停止

Also Published As

Publication number Publication date
TW200745929A (en) 2007-12-16
TW200741526A (en) 2007-11-01
US20070033377A1 (en) 2007-02-08
US20070033327A1 (en) 2007-02-08
US7590795B2 (en) 2009-09-15
CN101233498A (zh) 2008-07-30
US7984084B2 (en) 2011-07-19
WO2007019220A3 (en) 2007-06-07
EP1920336A2 (en) 2008-05-14
CN101288045A (zh) 2008-10-15
CN101258473B (zh) 2012-05-30
CN101233498B (zh) 2014-03-12
KR20080038363A (ko) 2008-05-06
US20070033376A1 (en) 2007-02-08
US7610437B2 (en) 2009-10-27
US7562181B2 (en) 2009-07-14
KR20080038364A (ko) 2008-05-06
JP4537481B2 (ja) 2010-09-01
TW200745930A (en) 2007-12-16
US20070033324A1 (en) 2007-02-08
WO2007019220A2 (en) 2007-02-15
CN101233479B (zh) 2012-09-05
TW200805134A (en) 2008-01-16
JP4537482B2 (ja) 2010-09-01
CN101288045B (zh) 2012-08-29
WO2007019174A3 (en) 2007-07-19
US7558905B2 (en) 2009-07-07
US7409489B2 (en) 2008-08-05
JP2009503746A (ja) 2009-01-29
US7581057B2 (en) 2009-08-25
CN101233480A (zh) 2008-07-30
TWI421684B (zh) 2014-01-01
CN101278267B (zh) 2012-08-22
CN101233480B (zh) 2012-08-29
US8291151B2 (en) 2012-10-16
US20070186032A1 (en) 2007-08-09
US7450420B2 (en) 2008-11-11
KR101377147B1 (ko) 2014-03-24
US20070033325A1 (en) 2007-02-08
WO2007019174A2 (en) 2007-02-15
TW200731065A (en) 2007-08-16
US20070033326A1 (en) 2007-02-08
US20070033329A1 (en) 2007-02-08
CN101233499A (zh) 2008-07-30
US20070033378A1 (en) 2007-02-08
TW200728977A (en) 2007-08-01
EP1920337A2 (en) 2008-05-14
US8055832B2 (en) 2011-11-08
CN101258473A (zh) 2008-09-03
US7590794B2 (en) 2009-09-15
US20070033330A1 (en) 2007-02-08
CN101278267A (zh) 2008-10-01
US20070033328A1 (en) 2007-02-08
US20070030734A1 (en) 2007-02-08
CN101233479A (zh) 2008-07-30

Similar Documents

Publication Publication Date Title
JP4537481B2 (ja) 直接データファイル記憶を用いるフラッシュメモリにおけるデータ操作
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
US7877539B2 (en) Direct data file storage in flash memories
US8214583B2 (en) Direct file data programming and deletion in flash memories
US7984233B2 (en) Direct data file storage implementation techniques in flash memories
US8032724B1 (en) Demand-driven opportunistic garbage collection in memory components
JP5571691B2 (ja) 記憶装置におけるマッピングアドレステーブルの維持
KR101430097B1 (ko) 비휘발성 메모리 및 클래스 기반의 업데이트 블록 대체 규칙을 위한 방법
TW200844999A (en) Non-volatile memory with worst-case control data management and methods therefor

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090803

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090803

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090807

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091027

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100112

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100427

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

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

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

Free format text: PAYMENT UNTIL: 20130625

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130625

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

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

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

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

LAPS Cancellation because of no payment of annual fees