JP2009503740A - Indexing file data in reprogrammable non-volatile memory that directly stores data files - Google Patents

Indexing file data in reprogrammable non-volatile memory that directly stores data files Download PDF

Info

Publication number
JP2009503740A
JP2009503740A JP2008525157A JP2008525157A JP2009503740A JP 2009503740 A JP2009503740 A JP 2009503740A JP 2008525157 A JP2008525157 A JP 2008525157A JP 2008525157 A JP2008525157 A JP 2008525157A JP 2009503740 A JP2009503740 A JP 2009503740A
Authority
JP
Japan
Prior art keywords
file
data
page
block
memory
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.)
Pending
Application number
JP2008525157A
Other languages
Japanese (ja)
Inventor
ダブリュー. シンクレア,アラン
ライト,バリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/459,255 external-priority patent/US7949845B2/en
Priority claimed from US11/459,246 external-priority patent/US7669003B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of JP2009503740A publication Critical patent/JP2009503740A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • 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/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/7201Logical to physical mapping or translation of blocks or pages

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)

Abstract

各ファイルの一意の識別名およびファイル内のデータのオフセットを用いるが、メモリの中間論理アドレスまたは仮想アドレス空間のいずれも用いることなく、大容量の消去ブロックのフラッシュメモリシステムに直接ホストシステムのデータファイルの書き込みを行う。メモリのどこにファイルがあるかに関するディレクトリ情報を、ホストではなく、メモリシステムのコントローラが、メモリシステムに保持する。各データファイルを、ファイルディレクトリに一意に識別し、このディレクトリ情報が、ファイルを構成するデータグループのファイルインデックステーブル(FIT)内のエントリと、メモリ内のそれらの物理記憶位置を指す。  The host system data file directly into the large erase block flash memory system, using the unique identifier of each file and the offset of the data in the file, but without using either the intermediate logical address or virtual address space of the memory Write. The memory system controller, not the host, maintains directory information about where the files are in memory in the memory system. Each data file is uniquely identified in a file directory, and this directory information points to entries in the file index table (FIT) of the data groups that make up the file and their physical storage locations in memory.

Description

本発明は、半導体フラッシュメモリなどの再プログラム可能な不揮発性メモリシステムの動作に関し、より具体的には、ホストデバイスとメモリとの間のインターフェイスを管理することに関する。   The present invention relates to the operation of a reprogrammable non-volatile memory system, such as a semiconductor flash memory, and more particularly to managing an interface between a host device and a memory.

ホストシステム、メモリシステムおよび他の電子システムの外部インターフェイスを介して伝達したデータのアドレス指定を行う技術として、主に2つの技術がある。そのうちの1つは、システムが生成したり、または受信したりしたデータファイルのアドレスを、そのシステム用に設定した連続する論理アドレス空間の別個の範囲に対してマッピングを行うことである。通常、アドレス空間の広さは、システムが処理可能なアドレスの全域をカバーするのに十分な広さである。一例として、磁気ディスク記憶装置のドライブは、このような論理アドレス空間を介して、コンピュータまたは他のホストシステムと通信を行う。このアドレス空間の広さは、ディスクドライブの全データ記憶容量のアドレス指定を行うのに十分な広さである。2つの技術のうちの2つ目は、電子システムが生成したり、または受信したりしたデータファイルを一意に識別し、ファイル内で、オフセットにより理論的にそれらのデータのアドレス指定を行う。このアドレス指定方法の形式を、コンピュータまたは他のホストシステムと、“スマートカード”として周知の取り外し可能なメモリカードとの間で用いる。通常、顧客がスマートカードを利用して、顧客識別、バンキング、販売時点購入、ATMアクセス等を行う。   There are mainly two techniques for addressing data transmitted via external interfaces of host systems, memory systems, and other electronic systems. One of them is to map the address of the data file generated or received by the system to a separate range of contiguous logical address spaces set up for that system. Usually, the address space is wide enough to cover the entire address that the system can handle. As an example, a drive of a magnetic disk storage device communicates with a computer or other host system via such a logical address space. This address space is large enough to address the entire data storage capacity of the disk drive. The second of the two techniques uniquely identifies the data files that are generated or received by the electronic system, and theoretically addresses those data by offset within the file. This form of addressing method is used between a computer or other host system and a removable memory card known as a “smart card”. Usually, a customer uses a smart card to perform customer identification, banking, point-of-sales purchase, ATM access, and the like.

初期世代の市販のフラッシュメモリシステムでは、メモリセルの矩形アレイを、多数のグループのセルに分割していた。それぞれの記憶データ量は、標準ディスクドライブセクタ、すなわち、512バイトであった。通常、各グループは、16バイトといった追加のデータ量をさらに含んで、誤り訂正符号(ECC)と、ユーザデータおよび/または対応づけられたユーザデータを記憶するメモリセルグループに関する、考えられ得る他のオーバーヘッドデータとが記憶可能である。このようなグループそれぞれのメモリセルは、同時に消去可能な最小数のメモリセルである。すなわち、消去単位は、1つのデータセクタと、含まれる任意のオーバーヘッドデータとを記憶するのに効率的なメモリセルの数である。この種のメモリシステムの例が、米国特許第5,602,987号(特許文献1)および第6,426,893号(特許文献2)に記載されている。データで再プログラミングを行う前にメモリセルを消去することが、フラッシュメモリの特徴である。   In early generation commercial flash memory systems, a rectangular array of memory cells was divided into multiple groups of cells. Each storage data amount was a standard disk drive sector, that is, 512 bytes. Typically, each group further includes an additional amount of data, such as 16 bytes, and other possible data related to error correction codes (ECC) and memory cell groups that store user data and / or associated user data. Overhead data can be stored. The memory cells in each such group are the minimum number of memory cells that can be erased simultaneously. That is, the erase unit is the number of memory cells that are efficient for storing one data sector and any overhead data contained therein. Examples of this type of memory system are described in US Pat. Nos. 5,602,987 (Patent Document 1) and 6,426,893 (Patent Document 2). It is a feature of flash memory to erase memory cells before reprogramming with data.

フラッシュメモリシステムは、パーソナルコンピュータ、カメラ等の様々なホストに取り外し可能に接続する、メモリカードまたはフラッシュドライブの形で最も一般に提供されているものであるが、このようなホストシステムに埋め込まれている場合もある。データをメモリに書き込む際に、ホストは通常、一意の論理アドレスをメモリシステムの連続する仮想アドレス空間内のセクタ、クラスタまたは他のデータ単位に割り当てる。ディスクオペレーティングシステム(DOS)のように、ホストは、メモリシステムの論理アドレス空間内のアドレスにデータを書き込んだり、またアドレスからデータを読み出したりする。メモリシステム内のコントローラは、ホストから受け取った論理アドレスを、メモリアレイ内の物理アドレスに変換する。実際に、データをここに記憶し、次に、これらのアドレス変換を常に把握しておく。メモリシステムのデータ記憶容量は少なくとも、メモリシステムに対し定義した全論理アドレス空間についてアドレス指定可能なデータ量と同じである。   Flash memory systems are most commonly offered in the form of memory cards or flash drives that are removably connected to various hosts such as personal computers, cameras, etc., but are embedded in such host systems. In some cases. When writing data to memory, the host typically assigns unique logical addresses to sectors, clusters or other data units within the contiguous virtual address space of the memory system. Like a disk operating system (DOS), the host writes data to and reads data from addresses in the logical address space of the memory system. A controller in the memory system converts the logical address received from the host into a physical address in the memory array. In fact, the data is stored here, and then these address translations are always known. The data storage capacity of the memory system is at least as large as the amount of data that can be addressed for all logical address spaces defined for the memory system.

次世代のフラッシュメモリシステムでは、消去単位の大きさは、多数のデータセクタを記憶するのに十分なメモリセルブロックに増加した。メモリシステムが接続しているホストシステムが、セクタなどの小さな最小単位でデータのプログラミングを行ったり、また読み出しを行ったとしても、フラッシュメモリの1つの消去単位に多数のセクタが記憶してある。ホストが論理データセクタを更新したり、または置換したりすると、普通は、ブロック内のいくつかのデータセクタは使われなくなることがある。ブロック内に記憶してある任意のデータを上書きする前に全ブロックを消去する必要があるので、通常、前に消去が行われたもののデータ記憶容量がまだ残っている別のブロックに、新しいデータまたは更新データを記憶する。この処理により、メモリ内部の貴重な空間を占有する使われなくなったデータのある、もともとのブロックを空けるようにする。しかし、内部に有効なデータが残っている場合、そのブロックを消去することはできない。   In next generation flash memory systems, the size of the erase unit has increased to enough memory cell blocks to store a large number of data sectors. Even if the host system to which the memory system is connected performs data programming or reading in a small minimum unit such as a sector, a large number of sectors are stored in one erase unit of the flash memory. When a host updates or replaces a logical data sector, usually some data sectors in the block may not be used. Since all blocks must be erased before overwriting any data stored in the block, the new data is usually placed in another block that was previously erased but still has data storage capacity. Alternatively, update data is stored. This process frees up the original blocks with obsolete data that occupies valuable space inside the memory. However, if valid data remains inside, the block cannot be erased.

従って、メモリの記憶容量をよりよく利用するために、有効な断片的データのコピー元のブロックを消去して、それらの全記憶容量を再利用できるように、これらの断片的データを消去ブロックにコピーすることにより、有効な断片的データを統合したり、または集めたりすることが一般的に行われている。論理アドレス順にブロック内部のデータセクタをグループ化するためにデータのコピーを行うことも望ましいのは、これにより、データ読み出し速度と、読み出したデータをホストに送信する速度とが向上するからである。このようなデータコピーがかなり頻繁に行われると、メモリシステムの動作性能が低下してしまう。このことは特に、メモリの記憶容量が、システムの論理アドレス空間を介してホストがアドレス指定可能なデータ量を若干上回っている場合に、メモリシステムの動作に影響を与える典型的な場合である。この場合、ホストがプログラミングを行ったコマンドを実行する前に、データの統合や収集が必要になることもある。そして、結果としてプログラミングを行う時間が長くなる。   Therefore, in order to make better use of the memory capacity of the memory, these pieces of fragmented data are made into erased blocks so that the blocks from which valid fragmented data is copied can be erased and their full storage capacity can be reused. It is common practice to consolidate or collect useful fragmentary data by copying. It is also desirable to copy the data to group the data sectors within the block in logical address order because this improves the data read speed and the speed at which the read data is sent to the host. If such data copying is performed quite frequently, the operating performance of the memory system is degraded. This is a typical case that affects the operation of the memory system, especially when the storage capacity of the memory is slightly above the amount of data that the host can address through the system's logical address space. In this case, data integration or collection may be required before the host executes the programmed command. As a result, the time for programming increases.

任意の半導体領域に記憶するデータのビット数を増やすために、メモリシステムの世代を経るにつれて、ブロックサイズは大きくなっていった。256データセクタ以上を記憶するブロックが一般的になっている。さらに、データのプログラミングと読み出しとを行う際の並列処理の程度を上げるために、2つ、4つ、あるいはそれ以上のブロック数の異なるアレイまたはサブアレイを理論的に接続して、メタブロックを構成するようにすることがしばしば行われている。このように容量が大きい動作単位をともに効率的に動作させることが、課題となっている。   In order to increase the number of bits of data stored in an arbitrary semiconductor region, the block size has increased with the generation of memory systems. Blocks that store more than 256 data sectors are common. Furthermore, in order to increase the degree of parallel processing when programming and reading data, two or four or more arrays or subarrays with different numbers of blocks are theoretically connected to form a metablock. It is often done to do. Thus, it is a problem to efficiently operate both operation units having a large capacity.

このようなメモリシステムのための一般的なホストインターフェイスは、ディスクドライブとともに一般的に用いられるものと同様な論理アドレスインターフェイスである。メモリが接続しているホストが生成したファイルには、インターフェイスの論理アドレス空間内の一意のアドレスが割り当てられている。次に、メモリシステムは通常、論理アドレス空間と、メモリの物理ブロックまたはメタブロックとの間でデータのマッピングを行う。メモリシステムは、物理メモリに対してどのように論理アドレス空間のマッピングを行うかを常に把握しているが、ホストはこのことを知る必要はない。ホストは、論理アドレス空間内のそのデータファイルのアドレスを常に把握しているが、メモリシステムの動作には、このマッピングについてわかっている必要はない。
米国特許第5,602,987号 米国特許第6,426,893号 米国特許出願第11/060,248号 米国特許出願第10/915,039号 米国特許第5,570,315号 米国特許第5,774,397号 米国特許第6,046,935号 米国特許第6,373,746号 米国特許第6,456,528号 米国特許第6,522,580号 米国特許第6,771,536号 米国特許第6,781,877号 米国公開特許出願第2003/0147278号 米国公開特許出願第2003/0109093号 米国特許第6,763,424号 米国特許出願第10/749,831号 米国特許出願第10/750,155号 米国特許出願第10/917,888号 米国特許出願第10/917,867号 米国特許出願第10/917,889号 米国特許出願第10/917,725号 米国特許出願第11/192,220号 米国特許出願第11/192,386号 米国特許出願第11/191,686号 米国特許出願第10/749,189号 米国特許出願第10/841,118号 米国特許出願第11/016,271号 米国特許出願第10/897,049号 米国特許出願第11/022,369号 米国特許出願第11/196,869号 米国特許出願第11/316,577号 米国特許出願第11/382,232号 米国特許出願第11/382,224号
A common host interface for such a memory system is a logical address interface similar to that commonly used with disk drives. A file generated by the host to which the memory is connected is assigned a unique address in the logical address space of the interface. The memory system then typically maps data between the logical address space and the physical blocks or metablocks of the memory. Although the memory system always knows how to map the logical address space to physical memory, the host does not need to know this. The host always knows the address of its data file in the logical address space, but the operation of the memory system does not need to know about this mapping.
US Pat. No. 5,602,987 US Pat. No. 6,426,893 US Patent Application No. 11 / 060,248 US patent application Ser. No. 10 / 915,039 US Pat. No. 5,570,315 US Pat. No. 5,774,397 US Pat. No. 6,046,935 US Pat. No. 6,373,746 US Pat. No. 6,456,528 US Pat. No. 6,522,580 US Pat. No. 6,771,536 US Pat. No. 6,781,877 US Published Patent Application No. 2003/0147278 US Published Patent Application No. 2003/0109093 US Pat. No. 6,763,424 US patent application Ser. No. 10 / 749,831 US patent application Ser. No. 10 / 750,155 US patent application Ser. No. 10 / 917,888 US patent application Ser. No. 10 / 917,867 US patent application Ser. No. 10 / 917,889 US patent application Ser. No. 10 / 917,725 US patent application Ser. No. 11 / 192,220 US patent application Ser. No. 11 / 192,386 US patent application Ser. No. 11 / 191,686 US patent application Ser. No. 10 / 749,189 US patent application Ser. No. 10 / 841,118 US patent application Ser. No. 11 / 016,271 US patent application Ser. No. 10 / 897,049 US Patent Application No. 11 / 022,369 US patent application Ser. No. 11 / 196,869 US patent application Ser. No. 11 / 316,577 US patent application Ser. No. 11 / 382,232 US patent application Ser. No. 11 / 382,224

フラッシュメモリシステムのこのように大きな規模の消去ブロックの動作を効率的に行う際に、様々な度合いで確実に生じる問題を克服する技術が、たくさん開発されている。これに対して、本発明は、根本的な変更、すなわち、メモリとホストシステムとの間でデータを転送するインターフェイスの変更に基づいている。仮想アドレス空間内の論理アドレスを用いることにより、メモリとホストシステムとの間でデータ通信を行うことではなく、ホストが割り当てたファイル名によりデータファイルの識別を行い、ファイル内のアドレスのオフセットを行ってそれにアクセスする。メモリシステムは次に、各セクタまたは他の単位のデータが属するホストファイルのことがわかるようになる。ここで説明するファイル単位とは、連続オフセットアドレスなどにより順序づけられたデータセットであって、ホスト演算システム内で動作するアプリケーションプログラムが生成し、かつ一意に識別したデータセットである。   Many techniques have been developed to overcome problems that occur reliably in various degrees when efficiently operating such large scale erase blocks in a flash memory system. In contrast, the present invention is based on a fundamental change, that is, a change in the interface for transferring data between the memory and the host system. By using the logical address in the virtual address space, the data file is identified by the file name assigned by the host, and the address in the file is offset, instead of performing data communication between the memory and the host system. To access it. The memory system then knows which host file each sector or other unit of data belongs to. The file unit described here is a data set ordered by a continuous offset address or the like, which is a data set generated and uniquely identified by an application program operating in the host computing system.

このことが、現在市販のメモリシステムの多くで用いられていないのは、ホストが現在では、ファイルを識別することなく、共通セットの論理アドレスにより、全てのファイル内のメモリシステムに対しデータの識別を行っているからである。論理アドレスを用いる代わりに、ファイルオブジェクトによってホストデータの識別を行うことにより、データの統合やガーベッジコレクションを頻繁に行う必要性を低減するように、メモリシステムのコントローラはデータを記憶することができる。従って、データのコピー動作の頻度と、コピーデータ量とが大幅に低減するので、これによりメモリシステムのデータのプログラミングと読み出し性能が向上する。さらに、メモリシステムのコントローラは、ホストファイルを記憶するメモリブロックのディレクトリおよびインデックステーブル情報を保持する。このため、現在、論理アドレスインターフェイスの管理に必要なファイルアロケーションテーブル(FAT)を、ホストが保持する必要がなくなる。   This is not currently used in many of the commercially available memory systems because the host does not currently identify the file, but identifies the data to the memory systems in all files with a common set of logical addresses. It is because it is doing. Instead of using logical addresses, memory system controllers can store data so as to reduce the need for frequent data integration and garbage collection by identifying host data by file objects. Accordingly, the frequency of data copy operations and the amount of copy data are greatly reduced, thereby improving the data programming and reading performance of the memory system. Further, the controller of the memory system holds the directory and index table information of the memory block that stores the host file. This eliminates the need for the host to hold a file allocation table (FAT) currently required for managing the logical address interface.

そうではなく、データグループによりファイルのデータの識別を行い、メモリ内のファイルのデータグループの位置をファイルインデックステーブル(FIT)に保持する。前に援用されている特許出願、特に米国特許出願第11/060,248号(特許文献3)で、より完全に記載されているように、データグループは、連続する連続オフセットアドレスおよび連続する物理メモリアドレスの両方を有するデータを含んでいる。前に援用されている特許出願にも記載されているように、各ファイルに対する有効なデータグループのインデックスを、それらのオフセットアドレスでFITに保持する。その一意のファイル識別子を用いることにより、ファイルディレクトリを介して任意のファイルにアクセスする。次に、ファイルのFITエントリへのアクセスが、ファイルのデータグループの物理位置となる。   Instead, the data of the file is identified by the data group, and the position of the data group of the file in the memory is held in the file index table (FIT). As described more fully in previously incorporated patent applications, particularly US patent application Ser. No. 11 / 060,248, a data group consists of consecutive consecutive offset addresses and consecutive physical It contains data with both memory addresses. As described in previously incorporated patent applications, the valid data group indexes for each file are kept in the FIT at their offset addresses. By using the unique file identifier, an arbitrary file is accessed through the file directory. Next, the access to the FIT entry of the file becomes the physical position of the data group of the file.

典型的には、メモリシステムが接続するホストは、5つのファイルなどの、1度に開くあらかじめ設定した最大数のファイルとともに動作する。最大数のファイルがすでに開かれているときに、新しいファイルを開く必要があるというイベントでは、まず、ホストが現在開いているファイルを閉じる。追加データの書き込み、更新、または削除等を行うことによりファイルが変更する度に、開いているファイルのデータグループは頻繁に変わる。典型的には、ファイルのデータグループのFITリストの更新に必要なことは、ファイルのエントリを含んでいるページを読み出し、それらのエントリを修正し、次に、メモリの異なる位置に、修正したページの、あれば、典型的には同じメモリブロック内の消去ページの書き換えを行うことである。従って、そのページが変わる度に、ファイルディレクトリは、ファイルのFITエントリを含んでいる現在のページを示すことができなければならない。   Typically, the host to which the memory system is connected operates with a preset maximum number of files that are open at one time, such as five files. In the event that a new file needs to be opened when the maximum number of files is already open, the host first closes the currently open file. Each time a file changes by writing, updating, or deleting additional data, the data group of the open file changes frequently. Typically, updating a file data group's FIT list requires reading the pages containing the file entries, modifying those entries, and then modifying the modified page to a different location in memory. If there is, typically, the erase page in the same memory block is rewritten. Thus, each time the page changes, the file directory must be able to point to the current page containing the FIT entry for the file.

ファイルディレクトリに入っているものすべての書き換えを行う必要なしに、アクティブファイルのデータグループのリストの更新を行うことが好ましい。開いているファイルのデータグループのアドレス指定を間接的に行う手法により、ファイルのFITエントリにアクセスする際に、ファイルディレクトリが、メモリの同じ位置を指したままにすることが可能になる。好ましくは、ファイルディレクトリが、ファイルの更新FITエントリを含んでいるページのアドレスを含んでいるFITエントリの、書き込みが行われた最後のページに含まれる、論理ポインタのアドレス指定を行う。ファイルのFITエントリの更新を行う度に、論理ポインタは変化するが、ファイルのファイルディレクトリのアドレスが変わる必要はない。   It is preferable to update the list of active file data groups without having to rewrite everything in the file directory. The technique of indirectly addressing the data group of an open file allows the file directory to remain pointing to the same location in memory when accessing the FIT entry of the file. Preferably, the logical addressing of the logical pointer contained in the last written page of the FIT entry containing the address of the page containing the file update FIT entry is preferably performed. Each time the FIT entry of the file is updated, the logical pointer changes, but the address of the file directory of the file does not need to change.

しかし、小さいファイルを数多く記憶する際に発生するように、メモリシステムに多数のファイルを記憶してある場合、このような間接アドレス指定が、効率的ではない。というのは、もちろん、それらのデータ記憶容量によるが、ディレクトリおよびFITページは、非常に多くのファイルのエントリを1度に納めることができるからである。結果として、ホストが閉じていたので、現在アクティブではないファイルに対し、好ましくは、ファイルディレクトリにより、インデックスエントリに直接アドレス指定を行う。間接アドレス指定の論理アドレスポインタの特徴は用いない。   However, such indirect addressing is not efficient when many files are stored in the memory system, as occurs when many small files are stored. This is because, of course, depending on their data storage capacity, directories and FIT pages can contain very many file entries at once. As a result, since the host was closed, files that are not currently active are preferably addressed directly to the index entry by the file directory. The feature of the logical address pointer with indirect addressing is not used.

従って、開いているファイルなどの、近い将来変わることが考えられるファイルのFITエントリの間接アドレス指定と、閉じているファイルへの直接アドレス指定との組み合わせは、好適な動作モードである。すなわち、アクティブでデータの書き込みが行われていたり、または更新が行われていたりする開いたファイルに対し、ファイルディレクトリは、ファイルディレクトリを修正する必要なく、アクティブファイルのインデックスエントリのセットを修正するように、ファイルの一意の識別子が識別したインデックスエントリのセットのFITの位置を、間接的に定義する。具体例では、ファイルのインデックスエントリの実際の物理位置との参照を行う、メモリ内の任意の位置のアドレス指定を行うファイルディレクトリにより、これを達成する。インデックスエントリの更新を行って移動する度に、この参照は変わるが、ファイルディレクトリを更新する必要はない。同時に、閉じているファイルに対し、一意のファイル識別子が識別したインデックスエントリのセットのFITの位置を、ファイルディレクトリが直接定義する。閉じているファイルに対するインデックスエントリの再配置は、開いているファイルに対するものよりずっと可能性が低い。   Thus, the combination of indirect addressing of FIT entries for files that are likely to change in the near future, such as open files, and direct addressing to closed files is a preferred mode of operation. That is, for open files that are active and data is being written or updated, the file directory should modify the set of active file index entries without having to modify the file directory. And indirectly define the FIT position of the set of index entries identified by the unique identifier of the file. In a specific example, this is accomplished by a file directory that addresses any location in memory that references the actual physical location of the file's index entry. This reference changes each time the index entry is updated and moved, but the file directory need not be updated. At the same time, for a closed file, the file directory directly defines the FIT position of the set of index entries identified by the unique file identifier. Relocating index entries for closed files is much less likely than for open files.

さらに、直接アドレス指定で用いるために、好ましくは、FITページのインデックスエントリを、FITへのポインタがファイルディレクトリの同じページに含まれているファイルのデータグループに制限する。従って、そのディレクトリページに記載されているファイルの1つ以上のFITエントリの更新を行う場合、ファイルディレクトリの1ページだけを、更新すればよい。そうしないと、ファイルの1つ以上のFITエントリの更新を行う場合、複数のファイルディレクトリページを頻繁に更新しなければならなくなる。   Further, for use in direct addressing, preferably the index entry of the FIT page is limited to the data group of the file whose pointer to the FIT is contained in the same page of the file directory. Therefore, when updating one or more FIT entries of a file described in the directory page, only one page of the file directory needs to be updated. Otherwise, when updating one or more FIT entries of a file, multiple file directory pages must be updated frequently.

本発明の他の態様、利点、特徴および詳細については、添付の図面を参照して説明する、以下の例示の説明に含まれている。   Other aspects, advantages, features, and details of the invention are included in the following illustrative description, which is described with reference to the accompanying drawings.

ここで参照する特許、特許出願、論文、他の公報、文献および事柄は全て、事実上、その全体が本願明細書において参照により援用されている。定義上、または援用されている公報、文献または事柄と本願との間の用語のある程度の不一致または矛盾については、本願で用いる用語により明らかになるであろう。   All patents, patent applications, papers, other publications, documents and matters referred to herein are effectively incorporated by reference herein in their entirety. Any discrepancies or inconsistencies in terms between publications, documents or matters that are defined or incorporated by reference and this application will become apparent from the terms used in this application.

フラッシュメモリシステムの概要
図1〜図8を参照して、一般的なフラッシュメモリシステムと、ホストデバイスとの典型的な動作とについて説明する。これは、本発明の様々な態様を実施するシステムである。図1のホストシステム1は、フラッシュメモリ2にデータを記憶し、フラッシュメモリ2からデータを検索する。フラッシュメモリをホストに埋め込むことが可能であるが、メモリ2については、より広く普及している形態のカードとし、機械的および電気的なコネクタである接続部分3および4を介してホストに取り外し可能に接続しているものとして例示する。現在、多くの異なるフラッシュメモリカードが市販されているが、一例として、コンパクトフラッシュ(CF)、マルチメディアカード(MMC)、セキュアデジタル(SD)、ミニSD、マイクロSD、メモリスティック、スマートメディアおよびトランスフラッシュという商標のもとで販売されている。これらのカードは、それらの標準化仕様により一意の機械的および/または電気的インターフェイスを有しているが、各カードに含まれるフラッシュメモリは非常に似通っている。これらのカードはすべて、本願の譲受人であるサンディスク コーポレイション(SanDisk Corporation) から入手できる。サンディスク コーポレイションは、クルーザー(Cruzer)という商標のもとで一連のフラッシュドライブも販売している。これは、ホストのUSBコンセントに接続することによりホストに接続するユニバーサル・シリアル・バス(USB)プラグを有する、小形パッケージのハンドヘルド形メモリシステムである。これらのメモリカードおよびフラッシュドライブはそれぞれ、ホストとインターフェイスをとり、内部のフラッシュメモリの動作を制御するコントローラを含んでいる。
Overview of Flash Memory System A typical flash memory system and a typical operation of a host device will be described with reference to FIGS. This is a system that implements various aspects of the invention. The host system 1 in FIG. 1 stores data in the flash memory 2 and retrieves data from the flash memory 2. Although it is possible to embed flash memory in the host, the memory 2 is a card of a more widespread form and can be removed from the host via connection parts 3 and 4 which are mechanical and electrical connectors. It is illustrated as being connected to. Currently, many different flash memory cards are commercially available. For example, compact flash (CF), multimedia card (MMC), secure digital (SD), mini SD, micro SD, memory stick, smart media and transformer. It is sold under the trademark Flash. Although these cards have unique mechanical and / or electrical interfaces due to their standardized specifications, the flash memory contained in each card is very similar. All of these cards are available from SanDisk Corporation, the assignee of the present application. SanDisk Corporation also sells a series of flash drives under the trademark Cruiser. This is a small package handheld memory system with a universal serial bus (USB) plug that connects to the host by connecting to the host's USB outlet. Each of these memory cards and flash drives includes a controller that interfaces with the host and controls the operation of the internal flash memory.

このようなメモリカードおよびフラッシュドライブを用いるホストシステムの数は多く、様々である。これらは、パーソナルコンピュータ(PC)、ラップトップや他の携帯用コンピュータ、携帯電話、個人用携帯情報端末(PDA)、デジタル静止画カメラ、デジタル動画カメラや携帯用オーディオプレーヤを含む。ホストは典型的には、1つ以上の種類のメモリカードまたはフラッシュドライブ用の組み込みコンセントを含んでいるが、メモリカードを接続するアダプタを必要とするものもある。メモリシステムは通常、それ自体のメモリコントローラおよびドライバを備えているが、メモリシステムの中には、メモリが接続しているホストが実行するソフトウェアの制御しか受け付けないものもある。コントローラを備えるメモリシステムのうち、特にホストに埋め込まれているものは、メモリ、コントローラおよびドライバが1つの集積回路チップ上に構成されているものがよくある。   The number of host systems using such memory cards and flash drives is large and varied. These include personal computers (PCs), laptops and other portable computers, mobile phones, personal digital assistants (PDAs), digital still cameras, digital video cameras and portable audio players. Hosts typically include one or more types of memory cards or built-in outlets for flash drives, although some require an adapter to connect the memory cards. A memory system typically has its own memory controller and driver, but some memory systems only accept control of software executed by a host to which the memory is connected. Of the memory systems provided with a controller, those embedded in a host often have a memory, a controller and a driver configured on one integrated circuit chip.

図1のホストシステム1は、メモリ2が接続する限り、2つの主な部分である、回路およびソフトウェアの組み合わせから構成されていると見なすこともできる。これらは、アプリケーション5と、メモリ2とインターフェイスをとるドライバ部分6とである。パーソナルコンピュータでは、例えば、アプリケーション5は、文書作成、グラフィック、制御または他の広く普及しているアプリケーションソフトウェアを実行するプロセッサを含むことができる。主に1つのセットの機能を専用に実行するカメラ、携帯電話または他のホストシステムでは、アプリケーション5は、カメラが画像の撮影および保存を行うように動作させたり、携帯電話が電話をかけたり、また受けたりするように動作させたりする等のソフトウェアを含んでいる。   The host system 1 of FIG. 1 can be regarded as being composed of a combination of circuits and software, which are two main parts, as long as the memory 2 is connected. These are the application 5 and the driver portion 6 that interfaces with the memory 2. In a personal computer, for example, the application 5 can include a processor that executes document creation, graphics, control, or other popular application software. For cameras, mobile phones or other host systems that primarily perform a set of functions, the application 5 can be operated so that the camera captures and stores images, the mobile phone makes calls, It also includes software that operates to receive.

図1のメモリシステム2は、フラッシュメモリ7と、カードと接続したホストとフラッシュメモリとのインターフェイスをとってデータのやりとりを行いメモリ7を制御する回路8とを含んでいる。コントローラ8は典型的には、データプログラミングや読み出しを行う間に、ホスト1が用いるデータの論理アドレスと、メモリ7の物理アドレスとの間で変換を行う。   The memory system 2 of FIG. 1 includes a flash memory 7 and a circuit 8 that controls the memory 7 by exchanging data through an interface between the host connected to the card and the flash memory. The controller 8 typically converts between the logical address of the data used by the host 1 and the physical address of the memory 7 during data programming and reading.

図2を参照して、図1の不揮発性メモリ2として用いられる典型的なフラッシュメモリシステムの回路について説明する。通常、システムコントローラは、システムバス13を介して、1つ以上の集積回路メモリチップと並列に接続している1つの集積回路チップ11上で実現される。このような1つのメモリチップ15を図2に示す。図に示されている特定のバス13は、データを送る個別のセットの導体17と、メモリアドレス用のセット19と、制御信号、状態信号用のセット21を含んでいる。あるいは、1つのセットの導体は、これらの3つの機能を時分割で実行するものであってもよい。さらに、2004年8月9日出願の米国特許出願第10/915,039号、現在公開されている公開特許出願第2006/0031593号である“リングバス構造およびフラッシュメモリシステムでのその用法(Ring Bus Structure and It's Use in Flash Memory Systems) ”(特許文献4)に記載のリングバスなどの、他の構成のシステムバスを用いることもできる。   With reference to FIG. 2, a circuit of a typical flash memory system used as the nonvolatile memory 2 of FIG. 1 will be described. Typically, the system controller is implemented on one integrated circuit chip 11 connected in parallel with one or more integrated circuit memory chips via a system bus 13. One such memory chip 15 is shown in FIG. The particular bus 13 shown includes a separate set of conductors 17 for sending data, a set 19 for memory addresses, and a set 21 for control and status signals. Alternatively, one set of conductors may perform these three functions in a time division manner. Further, US patent application Ser. No. 10 / 915,039, filed Aug. 9, 2004, published patent application No. 2006/0031593, “ring bus structure and its use in flash memory systems (Ring It is also possible to use a system bus having another configuration such as a ring bus described in “Bus Structure and It's Use in Flash Memory Systems”.

典型的なコントローラチップ11は、インターフェイス回路25を介してシステムバス13とインターフェイスをとるそれ自体の内部バス23を有している。通常、バスに接続している主な機能は、(マイクロプロセッサまたはマイクロコントローラなどの)プロセッサ27と、システムを初期化する(“立ち上げる”)コードを含む読み出し専用メモリ(ROM)29と、メモリとホストとの間での送信データのバッファを主に行うのに用いられるランダムアクセスメモリ(RAM)31と、メモリとホストとの間でコントローラを介してやりとりするデータ用の誤り訂正符号(ECC)を計算し検証する回路33とである。コントローラバス23は、回路35を介してホストシステムとインターフェイスをとる。これは、メモリカード内にある図2のシステムの場合、コネクタ4の一部であるカードの外部接点37を介して行われる。コントローラ11の他の構成部品それぞれが、クロック39に接続し、これを用いる。   A typical controller chip 11 has its own internal bus 23 that interfaces with the system bus 13 via an interface circuit 25. Typically, the main functions connected to the bus are: a processor 27 (such as a microprocessor or microcontroller), a read only memory (ROM) 29 containing code that initializes ("boots") the system, a memory A random access memory (RAM) 31 used mainly for buffering transmission data between the host and the host, and an error correction code (ECC) for data exchanged between the memory and the host via the controller And a circuit 33 for calculating and verifying. The controller bus 23 interfaces with the host system via a circuit 35. This is done via the card's external contacts 37 that are part of the connector 4 in the case of the system of FIG. Each other component of the controller 11 connects to and uses the clock 39.

システムバス13と接続している他の構成部品とともに、メモリチップ15は典型的には、多数のサブアレイまたはプレーンとして構成されるメモリセルアレイを含んでいる。図を簡略化するために、このような2つのプレーン41および43を示しているが、このようなプレーンは4つまたは8つ用いられることもある。あるいは、チップ15のメモリセルアレイを、プレーンに分割しなくてもよい。しかし、分割した場合、各プレーンは、たいてい互いに独立して動作可能な列制御回路45および47を有している。回路45および47は、システムバス13のアドレス部19からそれらのそれぞれのメモリセルアレイのアドレスを受け取り、これらのアドレスを復号して、特定の1つ以上の個別のビット線49および51に対しアドレス指定を行う。アドレスバス19上で受け取ったアドレスに応じて、行制御回路55を介してワード線53のアドレス指定を行う。ソース電圧制御回路57および59は、Pウェル電圧制御回路61および63のように、それぞれのプレーンにも接続している。メモリチップ15がメモリセルアレイを1つ有し、かつシステムにこのようなチップが2つ以上ある場合には、それぞれのチップのアレイは、前述したマルチプレーンチップ内のプレーンすなわちサブアレイと同じように動作することになる。   Along with other components connected to the system bus 13, the memory chip 15 typically includes a memory cell array configured as a number of subarrays or planes. For simplicity of illustration, two such planes 41 and 43 are shown, but four or eight such planes may be used. Alternatively, the memory cell array of the chip 15 may not be divided into planes. However, when divided, each plane usually has column control circuits 45 and 47 that can operate independently of each other. Circuits 45 and 47 receive their respective memory cell array addresses from the address section 19 of the system bus 13, decode these addresses, and address specific one or more individual bit lines 49 and 51. I do. The word line 53 is addressed via the row control circuit 55 in accordance with the address received on the address bus 19. Source voltage control circuits 57 and 59 are also connected to their respective planes, like P well voltage control circuits 61 and 63. If the memory chip 15 has one memory cell array and there are more than two such chips in the system, each array of chips operates in the same way as the planes or sub-arrays in the multiplane chip described above. Will do.

システムバス13のデータ部分17に接続しているデータ入出力回路65および67それぞれを介して、データをプレーン41および43とやりとりする。回路65および67は、列制御回路45および47それぞれを介して、プレーンに接続した線69および71を通じて、メモリセルにプログラミングを行うデータと、各々のプレーンのメモリセルから読み出すデータとを供給する。   Data is exchanged with the planes 41 and 43 via data input / output circuits 65 and 67 connected to the data portion 17 of the system bus 13, respectively. Circuits 65 and 67 supply data for programming the memory cells and data to be read from the memory cells of each plane through lines 69 and 71 connected to the planes through column control circuits 45 and 47, respectively.

コントローラ11は、メモリチップ15の動作を制御し、データのプログラミング、データの読み出し、消去および各種の段取りを行うが、各メモリチップはまた、コントローラ11からのコマンドを実行し、このような機能を行う制御回路をいくつか含んでいる。インターフェイス回路73は、システムバス13の制御・状態部分21に接続している。コントローラからのコマンドを状態マシーン75に供給し、次にこれらのコマンドを実行するために、他の回路の特定の制御を行うようにする。図2に示すように、制御線77〜81は、状態マシーン75をこれらの他の回路に接続している。状態マシーン75からの状態情報を、線83を介してインターフェイス73に通信し、バス部21を介してコントローラ11に送信する。   The controller 11 controls the operation of the memory chip 15 and performs data programming, data reading, erasing, and various setups. Each memory chip also executes commands from the controller 11 to perform such functions. Includes some control circuits to do. The interface circuit 73 is connected to the control / state portion 21 of the system bus 13. Commands from the controller are supplied to the state machine 75, which then performs certain control of other circuits in order to execute these commands. As shown in FIG. 2, control lines 77-81 connect the state machine 75 to these other circuits. The state information from the state machine 75 is communicated to the interface 73 via the line 83 and transmitted to the controller 11 via the bus unit 21.

NORなどの他のアーキテクチャをかわりに用いることもできるが、メモリセルアレイ41および43のNANDアーキテクチャが現在好適なものである。一例のNANDフラッシュメモリおよびメモリシステムの一部としてのそれらの動作については、米国特許第5,570,315号(特許文献5)、第5,774,397号(特許文献6)、第6,046,935号(特許文献7)、第6,373,746号(特許文献8)、第6,456,528号(特許文献9)、第6,522,580号(特許文献10)、第6,771,536号(特許文献11)および第6,781,877号(特許文献12)ならびに米国公開特許出願第2003/0147278号(特許文献13)を参照することができる。   Other architectures such as NOR may be used instead, but the NAND architecture of memory cell arrays 41 and 43 is currently preferred. An example NAND flash memory and their operation as part of a memory system are described in US Pat. Nos. 5,570,315, 5,774,397, 6, 046,935 (patent document 7), 6,373,746 (patent document 8), 6,456,528 (patent document 9), 6,522,580 (patent document 10), Reference may be made to US Pat. No. 6,771,536 (Patent Document 11) and 6,781,877 (Patent Document 12) and US Published Patent Application No. 2003/0147278 (Patent Document 13).

図3は、一例のNANDアレイを示す回路図である。これは、図2のメモリシステムのメモリセルアレイ41の一部分である。多数のグローバルビット線が形成されているが、説明を簡略化するために、図3にはこのような線91〜94を4本だけ示す。これらのビット線のうちの1本と基準電位との間には、多数の直列接続メモリセルストリング97〜104が接続している。メモリセルストリング99を代表例として用いると、複数の電荷蓄積メモリセル107〜110が、ストリングのいずれかの端部に、選択トランジスタ111および112と直列で接続している。1本のストリングの選択トランジスタが導電性である場合、そのビット線と基準電位との間にストリングが接続している。次に、そのストリング内のメモリセルに対し1つずつ、プログラミングを行ったり、または読み出しを行ったりする。   FIG. 3 is a circuit diagram showing an example NAND array. This is a part of the memory cell array 41 of the memory system of FIG. A number of global bit lines are formed, but only four such lines 91-94 are shown in FIG. 3 for the sake of simplicity. A large number of series-connected memory cell strings 97 to 104 are connected between one of these bit lines and the reference potential. When the memory cell string 99 is used as a representative example, a plurality of charge storage memory cells 107 to 110 are connected in series with selection transistors 111 and 112 at either end of the string. When the selection transistor of one string is conductive, the string is connected between the bit line and the reference potential. Next, programming or reading is performed for each memory cell in the string.

メモリセルの多数のストリングそれぞれのメモリセル1つの電荷蓄積素子に対して、図3のワード線115〜118が個別に延在し、ゲート119および120が、ストリングの各端部で、選択トランジスタの状態を制御する。共通ワード線とコントロールゲート線115〜120とを共有するメモリセルストリングにより、1度に消去するメモリセルのブロック123を構成するようにする。このセルブロックは、物理的に1度に消去可能な最小数のセルを含んでいる。ワード線115〜118のうちの1本に沿った1行のメモリセルに対し、1度にプログラミングを行う。典型的には、NANDアレイの行に対し、所定の順序でプログラミングを行う。この場合、接地電位または別の共通電位に接続したストリングの端部に最も近いワード線118に沿った行から開始している。ワード線117に沿ったメモリセルの行に対しプログラミングを行い、これを次々に繰り返して、ブロック123全体に行う。最後に、ワード線115に沿った行に対しプログラミングを行う。   The word lines 115-118 of FIG. 3 individually extend for each charge storage element in each memory cell of multiple strings of memory cells, and gates 119 and 120 are connected to the select transistor at each end of the string. Control the state. A block 123 of memory cells to be erased at one time is constituted by a memory cell string sharing the common word line and the control gate lines 115 to 120. This cell block includes the minimum number of cells that can be physically erased at one time. Programming is performed once for one row of memory cells along one of the word lines 115-118. Typically, the NAND array rows are programmed in a predetermined order. In this case, we start with the row along the word line 118 closest to the end of the string connected to ground or another common potential. Programming is performed on the row of memory cells along the word line 117 and this is repeated one after another for the entire block 123. Finally, programming is performed on the row along the word line 115.

第2のブロック125も同様である。そのメモリセルストリングは第1のブロック123のストリングと同じグローバルビット線に接続しているが、ワード線およびコントロールゲート線のセットが異なっている。行制御回路55により、それらの適切な動作電圧でワード線およびコントロールゲートゲート線を駆動している。図2のプレーン1および2のようにシステムに2つ以上のプレーンすなわちサブアレイがある場合、一方のメモリアーキテクチャが、間に延在している共通ワード線を用いる。あるいは、共通ワード線を共有するプレーンすなわちサブアレイが3つ以上ある場合もある。他のメモリアーキテクチャでは、個別のプレーンすなわちサブアレイのワード線を別々に駆動する。   The same applies to the second block 125. The memory cell string is connected to the same global bit line as the string of the first block 123, but the set of word lines and control gate lines is different. The row control circuit 55 drives the word line and the control gate gate line with these appropriate operating voltages. If there is more than one plane or sub-array in the system, such as planes 1 and 2 in FIG. 2, one memory architecture uses a common word line that extends between them. Alternatively, there may be more than two planes or subarrays that share a common word line. In other memory architectures, individual planes or sub-array word lines are driven separately.

前に援用されているNAND特許および公開特許出願のいくつかに記載されているように、メモリシステムは、電荷蓄積素子または領域それぞれに3つ以上の検出可能なレベルの電荷を記憶するように動作し、これにより、それぞれ2つ以上のビットのデータを記憶する。メモリセルの電荷蓄積素子は大抵、一般的に導電性フローティングゲートであるが、あるいは、米国公開特許出願第2003/0109093号(特許文献14)に記載されているような非導電性誘電電荷補足材料とすることもできる。   The memory system operates to store three or more detectable levels of charge in each charge storage element or region, as described in some of the previously incorporated NAND patents and published patent applications. As a result, two or more bits of data are stored. The charge storage elements of memory cells are usually generally conductive floating gates, or alternatively non-conductive dielectric charge supplemental materials as described in US Published Patent Application No. 2003/0109093. It can also be.

図4は、一例として用いられるフラッシュメモリセルアレイ7(図1)の構成を示す概念図である。以下にさらに説明する。1つの集積メモリセルチップの上、2つのチップ(各チップに2つのプレーン)の上、または4つの別々のチップの上に、メモリセルの4つのプレーンすなわちサブアレイ131〜134を載置してもよい。以下の説明では、特定の配置は重要ではない。もちろん、1、2、8、16またはそれ以上などの他の数のプレーンが、システムにあってもよい。それぞれのプレーン131〜134上にあるブロック137、138、139および140のように、プレーンを、図4に示す矩形のメモリセルブロックに個別に分割する。各プレーンを、数十または数百のブロックに分割可能である。前述したように、メモリセルブロックは、物理的に1度に消去可能な最小数のメモリセルの消去単位である。しかし、並列処理が増えているので、ブロックの動作は大きいメタブロック単位で行われている。各プレーンから1つのブロックが、論理的にともにリンクしてメタブロックを形成している。図に示されている4つのブロック137〜140が、1つのメタブロック141を形成している。典型的には、メタブロック内のセルをすべて、ともに消去する。ブロック145〜148から形成されている第2のメタブロック143からわかるように、メタブロックの形成に用いられるブロックは、それぞれのプレーン内で同じ相対位置である必要はない。通常、プレーンすべてにメタブロックを延在することは好ましいが、システム性能を高くするには、異なるプレーンの1つ、2つまたは3つのブロックのいずれか、またはすべてから動的にメタブロックを形成する機能により、メモリシステムの動作を行うことができる。これにより、メタブロックの大きさを、1回のプログラミング動作で記憶できるデータ量と、密接に一致させることが可能になる。   FIG. 4 is a conceptual diagram showing a configuration of a flash memory cell array 7 (FIG. 1) used as an example. This will be further described below. Four planes of memory cells or subarrays 131-134 may be placed on one integrated memory cell chip, on two chips (two planes on each chip), or on four separate chips. Good. In the following description, the particular arrangement is not important. Of course, there can be other numbers of planes in the system, such as 1, 2, 8, 16 or more. Like the blocks 137, 138, 139 and 140 on the respective planes 131 to 134, the planes are individually divided into rectangular memory cell blocks shown in FIG. Each plane can be divided into tens or hundreds of blocks. As described above, the memory cell block is an erase unit of the minimum number of memory cells that can be physically erased at one time. However, since parallel processing is increasing, block operations are performed in large metablock units. One block from each plane is logically linked together to form a metablock. The four blocks 137 to 140 shown in the figure form one metablock 141. Typically, all cells in the metablock are erased together. As can be seen from the second metablock 143 formed from blocks 145 to 148, the blocks used to form the metablock need not be in the same relative position within each plane. Usually, it is preferable to extend metablocks to all of the planes, but to increase system performance, dynamically form metablocks from one, two, or three blocks of different planes, or all The memory system can be operated by the function. This makes it possible to closely match the size of the metablock with the amount of data that can be stored in one programming operation.

図5に示すように、個別のブロックを順に、動作を行うためにメモリセルのページに分割する。ブロック131〜134それぞれのメモリセルを例えば、8つのページP0〜P7に分割する。あるいは、ブロック内でそれぞれ16、32またはそれ以上のメモリセルのページに分割してもよい。ページは、ブロック内でデータのプログラミングと読み出しを行う単位であり、1度にプログラミングを行う最小のデータ量を含むものである。図3のNANDアーキテクチャでは、ページは、ブロック内のワード線に沿ったメモリセルから形成されている。しかし、メモリシステム動作の並列処理を向上させるために、2つ以上のブロック内のこのようなページを、論理的にメタページにリンクしてもよい。図5にメタページ151を示す。これは、4つのブロック131〜134それぞれのうちの1つの物理ページから構成されている。メタページ151は例えば、4つのブロックそれぞれでページP2を含んでいるが、メタページのページは、それぞれのブロック内で必ずしも同じ相対位置にある必要はない。   As shown in FIG. 5, the individual blocks are sequentially divided into pages of memory cells for operation. For example, the memory cells of the blocks 131 to 134 are divided into eight pages P0 to P7. Alternatively, each block may be divided into pages of 16, 32 or more memory cells. A page is a unit for programming and reading data in a block, and includes a minimum amount of data to be programmed at a time. In the NAND architecture of FIG. 3, the page is formed from memory cells along the word lines in the block. However, such pages in two or more blocks may be logically linked to a metapage to improve parallel processing of memory system operations. FIG. 5 shows the metapage 151. This is composed of one physical page in each of the four blocks 131-134. For example, the metapage 151 includes the page P2 in each of the four blocks, but the pages of the metapage are not necessarily in the same relative position in each block.

4つのプレーンすべてで、並列に最大データ量のプログラミングと読み出しを行うことは好ましいが、システム性能を高くするには、異なるプレーンの別々のブロックにおける1つ、2つまたは3つのページのいずれかまたはすべてのメタページを形成するように、メモリシステムを動作させることもできる。これにより、プログラミングと読み出し動作を、並列に都合よく処理できるデータ量と適応可能なように一致させることができ、データのプログラミングを行わないメタページの一部が残ってしまうようなことを低減する。   It is preferable to program and read the maximum amount of data in parallel on all four planes, but for higher system performance, either one, two or three pages in separate blocks on different planes or The memory system can also be operated to form all metapages. This allows programming and read operations to be adaptively matched with the amount of data that can be conveniently processed in parallel, reducing the possibility of remaining metapages that are not subject to data programming. .

図5に示すように、複数のプレーンの物理ページを構成するメタページは、それらの複数のプレーンのワード線の行に沿ってメモリセルを含んでいる。1本のワード線の行のセルすべてに対して同時にプログラミングを行うよりも、より一般には、2つ以上の交互に配置したグループで交互にプログラミングを行う。各グループは、(1つのブロック内の)1ページのデータ、または(複数のブロックにわたる)1つのメタページのデータを記憶してある。メモリセルに対し交互に1度にプログラミングを行うことにより、データレジスタおよびセンス増幅器を含む1単位の周辺回路を、ビット線ごとに配置する必要はなく、むしろ隣接するビット線の間で時分割で処理を行う。これにより、周辺回路に必要な基板空間の量を節約し、行に沿って高い密度でメモリセルを集積することが可能になる。あるいは、任意のメモリシステムで可能な並列処理を最大にするために、行に沿ったセル毎に同時にプログラミングを行うことが好ましい。   As shown in FIG. 5, the metapage constituting the physical pages of the plurality of planes includes memory cells along the rows of the word lines of the plurality of planes. Rather than programming all of the cells in a single word line row at the same time, more generally, the programming is done alternately in two or more alternating groups. Each group stores one page of data (in one block) or one metapage (across multiple blocks). By programming the memory cells alternately once at a time, it is not necessary to arrange one unit of peripheral circuit including the data register and the sense amplifier for each bit line, but rather in a time-sharing manner between adjacent bit lines. Process. This saves the amount of substrate space required for the peripheral circuitry and allows memory cells to be integrated at high density along the row. Alternatively, it is preferable to program each cell along a row simultaneously to maximize the parallelism possible with any memory system.

図3を参照すると、図に示されているように1つの行を配置するよりも、NANDストリングの少なくとも一方の端部に沿って2つの行の選択トランジスタ(図示せず)を配置することにより、行に沿ったメモリセルを1つおきにデータプログラミングが同時に行われることを、最も都合良く達成する。次に、1つの制御信号に応答して、一方の行の選択トランジスタを、ブロック内の他のストリングを1つおきにそれぞれのビット線に接続し、もう1つの制御信号に応答して、もう一方の行の選択トランジスタを、他のストリングを1つおきにはさまれるようにそれぞれのビット線に接続する。従って、2つのページのデータが、メモリセルの各行に書き込まれる。   Referring to FIG. 3, by placing two rows of select transistors (not shown) along at least one end of the NAND string, rather than placing one row as shown. Most conveniently, data programming is performed simultaneously for every other memory cell along the row. Then, in response to one control signal, one row of select transistors is connected to each other bit line for every other string in the block, and in response to another control signal, the other The select transistors in one row are connected to the respective bit lines so that every other string is sandwiched. Thus, two pages of data are written to each row of memory cells.

典型的には、各論理ページのデータ量は、整数である1つ以上のデータセクタであり、従来では、各セクタは512バイトのデータを含んでいる。図6は、1ページまたは1メタページのデータの論理データページの2つのセクタ153および155を示す。各セクタには通常、記憶してある512バイトのユーザまたはシステムデータの部分157が含まれ、部分157のデータ、または物理ページ、またはこれを記憶しているブロックのいずれかに関するオーバーヘッドデータを別の数のバイト159として含んでいる。典型的には、オーバーヘッドデータのバイト数は16バイトであり、それぞれのセクタ153および155に対し全部で528バイトである。オーバーヘッド部分159は、プログラミングを行う間にデータ部分157から算出したECCと、その論理アドレスと、ブロックの消去と再プログラミングを行った実際の回数と、1つ以上の制御フラグと、動作電圧レベルなどとともに、このようなオーバーヘッドデータ159から算出したECCとを含んでもよい。あるいは、オーバーヘッドデータ159またはその一部を、他のブロックの異なるページに記憶してもよい。   Typically, the data amount of each logical page is one or more data sectors that are integers, and conventionally each sector contains 512 bytes of data. FIG. 6 shows two sectors 153 and 155 of a logical data page of data of one page or one metapage. Each sector typically includes a stored portion of 512 bytes of user or system data 157, and separate overhead data for either the portion 157 data, or the physical page, or the block storing it. It is included as a number of bytes 159. Typically, the number of bytes of overhead data is 16 bytes, for a total of 528 bytes for each sector 153 and 155. The overhead portion 159 includes the ECC calculated from the data portion 157 during programming, its logical address, the actual number of times the block was erased and reprogrammed, one or more control flags, the operating voltage level, etc. In addition, the ECC calculated from the overhead data 159 may be included. Alternatively, overhead data 159 or a portion thereof may be stored on a different page in another block.

メモリの並列処理が増えるに従って、メタブロックのデータ記憶容量が増え、データページおよびメタページの大きさも結果として増えることになる。そして、データページは、3つ以上のデータセクタを含むことになる。データページの2つのセクタと、メタページ毎に2つのデータページとで、1メタページには4つのセクタが存在する。従って、各メタページは2,048バイトのデータを記憶する。これは高い度合いの並列処理であり、行のメモリセルの数が増えるに従って、さらに度合いが高くなる。この理由により、1ページおよび1メタページのデータ量を増やすために、フラッシュメモリの幅が広がっていくことになる。   As memory parallel processing increases, the data storage capacity of metablocks increases and the size of data pages and metapages increases as a result. The data page includes three or more data sectors. There are two sectors per data page and two data pages per metapage, and there are four sectors per metapage. Therefore, each metapage stores 2,048 bytes of data. This is a high degree of parallel processing, and the degree becomes even higher as the number of memory cells in a row increases. For this reason, the width of the flash memory is increased in order to increase the data amount of one page and one metapage.

前に識別した、物理的に小さい再プログラム可能な不揮発性メモリカードおよびフラッシュドライブは、512メガバイト(MB)、1ギガバイト(GB)、2GBおよび4GBのデータ記憶容量で市販され、容量はさらに大きくなっている。図7は、ホストとこのような大容量メモリシステムとの間の最も一般的なインターフェイスを示す。ホストは、アプリケーションソフトウェア、またはホストが実行するファームウェアプログラムが生成したりまたは用いたりするデータファイルを処理する。一例として、文書処理のデータファイルであり、別の例として、コンピュータ援用設計(CAD)ソフトウェアの図面ファイルがあり、PC、ラップトップコンピュータ等の一般的なコンピュータホストに多く見受けられるものである。pdfフォーマットの文書もこのようなファイルである。スチルデジタルビデオカメラは、メモリカードに記憶する画像それぞれのデータファイルを生成する。携帯電話は、電話ディレクトリなどの内部メモリカード上のファイルからデータを利用する。PDAは、アドレスファイル、カレンダファイル等のいくつかの異なるファイルを記憶し、利用する。このようなアプリケーションのいずれにおいても、メモリカードは、ホストを動かすソフトウェアを含んでいる。   The previously identified, physically small, reprogrammable non-volatile memory cards and flash drives are commercially available with 512 megabyte (MB), 1 gigabyte (GB), 2 GB and 4 GB data storage capacities, making the capacity even larger ing. FIG. 7 shows the most common interface between a host and such a mass memory system. The host processes data files generated or used by application software or firmware programs executed by the host. An example is a data file for document processing, and another example is a drawing file of computer aided design (CAD) software, which is often found in general computer hosts such as PCs and laptop computers. A document in the pdf format is also such a file. The still digital video camera generates a data file for each image stored in the memory card. The cellular phone uses data from a file on an internal memory card such as a telephone directory. The PDA stores and uses several different files such as an address file and a calendar file. In any such application, the memory card contains software that runs the host.

ホストシステムとメモリシステムとの間の、一般的な論理インターフェイスを図7に示す。連続する論理アドレス空間161は、メモリシステムに記憶する全データのアドレスを構成するのに十分な広さである。典型的には、ホストアドレス空間を、データクラスタの単位で分割する。任意のホストシステムが多数のデータセクタを含むように、各クラスタを設計してもよく、典型的には、4セクタから64セクタの間である。標準的なセクタは512バイトのデータを含んでいる。   A typical logical interface between the host system and the memory system is shown in FIG. The continuous logical address space 161 is large enough to constitute an address of all data stored in the memory system. Typically, the host address space is divided in units of data clusters. Each cluster may be designed such that any host system includes multiple data sectors, typically between 4 and 64 sectors. A standard sector contains 512 bytes of data.

図7の例には、3つのファイル1、2、3が生成されている。ホストシステム上で実行するアプリケーションプログラムにより、順序づけられたデータセットとして各ファイルを生成し、一意の名称または他の基準により識別する。ホストにより、ファイル1に対して、他のファイルにまだ割り当てられていない十分に利用可能な論理アドレス空間が割り当てられている。図に示されているファイル1は、利用可能な論理アドレスの連続する範囲に割り当てられている。アドレス範囲は一般に、ホストの動作を行うソフトウェアの特定の範囲などの、特定の目的のために割り当てられているので、ホストが論理アドレスをデータに割り当てているときにこれらのアドレスが利用されていないとしても、データの記憶が行えないようになっている。   In the example of FIG. 7, three files 1, 2, and 3 are generated. Each file is generated as an ordered data set by an application program running on the host system and identified by a unique name or other criteria. The host assigns a fully available logical address space for file 1 that has not yet been assigned to another file. The file 1 shown in the figure is assigned to a continuous range of available logical addresses. Address ranges are generally assigned for a specific purpose, such as a specific range of software that operates the host, so these addresses are not used when the host assigns logical addresses to data However, the data cannot be stored.

ホストがファイル2を後で生成する場合、図7に示すように、ホストは同様に、論理アドレス空間161内の連続するアドレスの2つの異なる範囲を割り当てる。ファイルを連続する論理アドレスに割り当てる必要はないが、他のファイルにすでに割り当てられたアドレス範囲の間でアドレスが断片化することがある。次に、この例について、ホストがさらに生成した別のファイル3を、ファイル1、2および他のデータに前に割り当てられていないホストアドレス空間の他の部分に割り当てていることからわかる。   If the host later generates file 2, the host similarly allocates two different ranges of consecutive addresses in the logical address space 161, as shown in FIG. There is no need to assign files to consecutive logical addresses, but addresses may be fragmented between address ranges already assigned to other files. Next, for this example, it can be seen from the fact that another file 3 further generated by the host is assigned to other parts of the host address space not previously assigned to files 1, 2 and other data.

ファイルアロケーションテーブル(FAT)を保持することにより、ホストは、メモリ論理アドレス空間を常に把握している。これは、変換160を行って各種のホストファイルに対しホストが割り当てた論理アドレスを保持している。新しいファイルを記憶したり、他のファイルを削除したり、ファイルを変更したりする際等に、ホストは頻繁にFAT表の更新を行う。FAT表は典型的には、時折更新が行われる不揮発性メモリに保存したコピーとともに、ホストメモリに記憶する。コピーに対しては典型的には、他のデータファイルのように、論理アドレス空間を介して不揮発性メモリにアクセスする。ホストファイルを削除する場合、ホストは次に、削除ファイルに前に割り当てられた論理アドレスの割り当てを解除して、FAT表を更新することにより、他のデータファイルとともに利用可能であることを示す。   By holding a file allocation table (FAT), the host keeps track of the memory logical address space. This holds the logical addresses assigned by the host to various host files after performing the conversion 160. The host frequently updates the FAT table when a new file is stored, another file is deleted, or a file is changed. The FAT table is typically stored in the host memory along with a copy stored in non-volatile memory that is updated from time to time. For copying, typically, the non-volatile memory is accessed through a logical address space like other data files. When deleting a host file, the host then deallocates the logical address previously assigned to the deleted file and updates the FAT table to indicate that it can be used with other data files.

メモリシステムのコントローラが選択してファイルを記憶する物理位置について、ホストは無関係である。典型的なホストは、その各種のファイルに割り当てたその論理アドレス空間および論理アドレスについてのみわかっている。これに反して、メモリシステムは、典型的なホスト/カードインターフェイスを介して、データを書き込んだ論理アドレス空間の一部分についてだけわかっているが、特定のホストファイルに割り当てられた論理アドレス、またはホストファイルの数についてはわかっていない。メモリシステムのコントローラは、データの記憶または検索用にホストが提供した論理アドレスを、ホストデータを記憶してあるフラッシュメモリセルアレイ内の一意の物理アドレスに変換する。ブロック163は、これらの論理対物理アドレス変換の作業表を表し、これは、メモリシステムのコントローラが保持している。   The host is irrelevant as to the physical location where the memory system controller selects and stores the file. A typical host knows only about its logical address space and logical addresses assigned to its various files. On the other hand, the memory system knows only through the typical host / card interface about a portion of the logical address space that wrote the data, but the logical address assigned to a particular host file, or host file. I don't know about the number. The controller of the memory system converts the logical address provided by the host for data storage or retrieval into a unique physical address in the flash memory cell array in which the host data is stored. Block 163 represents a work table for these logical-to-physical address translations, which is maintained by the memory system controller.

メモリシステムのコントローラは、システム性能を高いレベルで維持するやり方で、メモリアレイ165のブロックおよびメタブロック内にデータファイルを記憶できるようにプログラミングが行われている。この図では、4つのプレーンすなわちサブアレイが用いられている。好ましくは、それぞれのプレーンのブロックから構成される全メタブロックにわたって、システムが実行可能な最大の度合いの並列処理で、データのプログラミングと読み出しが行われる。通常、メモリコントローラが用いる動作ファームウェアおよびデータを記憶するための保留ブロックとして、少なくとも1つのメタブロック167が割り当てられている。別のメタブロック169、または複数のメタブロックが、ホストを動かすソフトウェア、ホストFAT表等を記憶するために、割り当てられていることもある。大抵の物理記憶空間は、データファイルを記憶するために残されている。しかし、メモリコントローラは、その各種のファイルオブジェクト間でホストがどのように受信したデータを割り当てているかをわかっていない。典型的には、ホストと対話することによりメモリコントローラがわかっていることのすべては、ホストが特定の論理アドレスに書き込んだデータを、コントローラの論理対物理アドレス表163が保持する、対応する物理アドレスに記憶していることである。   The memory system controller is programmed to store data files in the blocks and metablocks of the memory array 165 in a manner that maintains system performance at a high level. In this figure, four planes or subarrays are used. Preferably, data programming and reading are performed with the maximum degree of parallelism that the system can execute across all metablocks comprised of blocks in each plane. Normally, at least one metablock 167 is allocated as a reserved block for storing operation firmware and data used by the memory controller. Another metablock 169, or multiple metablocks, may be assigned to store software running the host, host FAT table, etc. Most physical storage space is left for storing data files. However, the memory controller does not know how the host has allocated the received data between the various file objects. Typically, all that the memory controller knows by interacting with the host is that the corresponding physical address that the controller's logical-to-physical address table 163 holds the data that the host wrote to a particular logical address. It is to remember.

典型的なメモリシステムでは、アドレス空間161に記憶するのに必要なデータ量以上に、余分なブロックの記憶容量が備えられている。1つ以上のこれらの余分なブロックを、メモリ寿命が経過する間に不良となる他のブロックと置換するための、冗長ブロックとして備えてもよい。個別のメタブロックに含まれるブロックの論理グループ化は、メタブロックにもともと割り当てられている不良ブロックと冗長ブロックを置換するというように、様々な理由で大抵行われる。典型的には、メタブロック171などの1つ以上の追加ブロックを、消去ブロックプールに保持する。ホストがデータをメモリシステムに書き込む場合、コントローラは、消去ブロックプールのメタブロック内の物理アドレスにホストが割り当てた論理アドレスを変換する。次に、論理アドレス空間161内のデータの記憶に用いられない他のメタブロックを消去し、次のデータ書き込み動作を行う間に用いる消去プールブロックとして指定する。好適な形態では、論理アドレス空間を、それぞれ物理メモリメタブロックの記憶容量と同じデータ量を含む論理グループに分割するので、メタブロックに対し論理グループの1対1マッピングが可能になる。   In a typical memory system, the storage capacity of an extra block is provided in excess of the amount of data required to be stored in the address space 161. One or more of these extra blocks may be provided as redundant blocks to replace other blocks that fail during the lifetime of the memory. Logical grouping of blocks included in individual metablocks is usually performed for various reasons, such as replacing a defective block and a redundant block originally assigned to a metablock. Typically, one or more additional blocks such as metablock 171 are kept in the erase block pool. When the host writes data to the memory system, the controller translates the logical address assigned by the host to a physical address in the metablock of the erase block pool. Next, other metablocks that are not used to store data in the logical address space 161 are erased and designated as erase pool blocks that are used during the next data write operation. In a preferred form, the logical address space is divided into logical groups each containing the same amount of data as the storage capacity of the physical memory metablock, allowing one-to-one mapping of logical groups to metablocks.

もともと記憶してあるデータが使われなくなったときは、特定のホスト論理アドレスに記憶してあるデータを新しいデータで頻繁に上書きする。これに対応して、メモリシステムのコントローラは、新しいデータを消去ブロックに書き込んで、次に、それらの論理アドレスの論理対物理アドレス表を変更して、それらの論理アドレスのデータを記憶してある新しい物理ブロックの識別を行う。次に、それらの論理アドレスのもともとのデータを含むブロックを消去し、新しいデータを記憶するのに利用できるようにする。書き込み開始時に消去ブロックプールからの前に消去したブロックの記憶容量が十分でない場合、現在のデータ書き込み動作が完了する前に、このような消去を頻繁に行う必要がある。これは、システムデータのプログラミング速度に悪影響を与えることになる。典型的には、メモリコントローラは、ホストが新しいデータをそれらの同じ論理アドレスに書き込むときに限って、ホストが任意の論理アドレスのデータを使わなくなったことを学習する。従って、メモリの多くのブロックが、このような無効なデータをある期間記憶していることになる。   When the originally stored data is no longer used, the data stored at a specific host logical address is frequently overwritten with new data. Correspondingly, the memory system controller has written new data to the erase block and then modified the logical-to-physical address table for those logical addresses to store the data for those logical addresses. Identify new physical blocks. The block containing the original data at those logical addresses is then erased and made available for storing new data. If the storage capacity of a previously erased block from the erase block pool at the start of writing is not sufficient, it is necessary to frequently perform such erase before the current data write operation is completed. This will adversely affect system data programming speed. Typically, the memory controller learns that the host no longer uses data at any logical address only when the host writes new data to their same logical address. Therefore, many blocks of the memory store such invalid data for a certain period.

集積回路メモリチップの領域を効率的に利用するために、ブロックおよびメタブロックの大きさが大きくなっている。このため、個別のデータ書き込みのかなりの部分が、メタブロックの記憶容量より小さい、多くの場合、ブロックの記憶容量よりも小さいデータ量を記憶することになる。通常、メモリシステムのコントローラは、新しいデータを消去プールメタブロックに向けるので、メタブロックの一部分に書き込みが行われなくなることになる。新しいデータが別のメタブロックに記憶してあるデータの更新である場合、望ましくは、それらの新しいデータメタページと隣接する論理アドレスを有する他のメタブロックからの残っている有効なメタページのデータについても、論理アドレス順で新しいメタブロックにコピーする。古いメタブロックを他の有効なデータメタページに保持してもよい。これは、時間の経過とともに個別のメタブロックの特定のメタページのデータが使われなくなって無効になり、このデータを、異なるメタブロックに書き込まれた同じ論理アドレスの新しいデータと置換することになる。   In order to efficiently use the area of the integrated circuit memory chip, the size of the block and the metablock is increased. For this reason, a significant portion of the individual data write will store a smaller amount of data than the metablock storage capacity, often less than the block storage capacity. Typically, the memory system controller directs new data to the erase pool metablock, which prevents writing to a portion of the metablock. If the new data is an update of data stored in another metablock, preferably the remaining valid metapage data from other metablocks with logical addresses adjacent to those new data metapages Are copied to a new metablock in the order of logical addresses. Old metablocks may be kept on other valid data metapages. This will invalidate the data on a particular metapage in an individual metablock over time, replacing this data with new data at the same logical address written to a different metablock. .

全論理アドレス空間161にわたってデータの記憶に十分な物理的メモリ空間を保持するために、このようなデータを定期的に圧縮したり、統合したりする(ガーベッジコレクションを行う)。できる限り実際に実行可能なように、メタブロック内のデータセクタをそれらの論理アドレスと同じ順序で保持することも望ましい。というのは、これにより、連続する論理アドレスデータの読み出しがより効率的になるからである。従って、典型的には、データ圧縮およびガーベジコレクションが、この追加の目的で行われる。部分ブロックデータの更新を受け取った際のメモリの管理およびメタブロックの利用の態様については、米国特許第6,763,424号(特許文献15)にいくつか記載されている。   In order to maintain sufficient physical memory space for data storage across the entire logical address space 161, such data is periodically compressed or consolidated (garbage collection is performed). It is also desirable to keep the data sectors in the metablock in the same order as their logical addresses so that they can be as practical as possible. This is because it makes reading of continuous logical address data more efficient. Thus, data compression and garbage collection are typically performed for this additional purpose. Several aspects of memory management and use of metablocks upon receipt of partial block data updates are described in US Pat. No. 6,763,424 (Patent Document 15).

典型的には、データ圧縮は、処理において無効なデータのあるメタページを無視して、メタブロックからのすべての有効なデータメタページの読み出しと、新しいメタブロックへのそれらの書き込みを行う。有効なデータのあるメタページを、記憶してあるデータの論理アドレス順と一致する物理アドレス順で配列することも好ましい。新しいメタブロックを占有するメタページの数が、古いメタブロックを占有していた数よりも少なくなっている。というのは、無効なデータを含むメタページを新しいメタブロックにコピーしていないからである。次に、古いブロックを消去し、新しいデータの記憶に利用できるようにする。次に、統合で得た追加したメタページの容量を、他のデータの記憶に用いることができる。   Typically, data compression ignores metapages with invalid data in the process and reads all valid data metapages from the metablock and writes them to the new metablock. It is also preferable to arrange metapages with valid data in a physical address order that matches the logical address order of the stored data. The number of metapages that occupy the new metablock is less than the number that occupied the old metablock. This is because the metapage containing invalid data has not been copied to the new metablock. The old block is then erased and made available for storing new data. Next, the capacity of the added metapage obtained by the integration can be used for storing other data.

ガーベッジコレクションを行う間、連続する論理アドレスまたはほぼ連続する論理アドレスのある有効なデータのメタページを、2つ以上のメタブロックから集め、別のメタブロックに書き換える。通常、消去ブロックプールに1つである。有効なデータメタページすべてをもともとの2つ以上のメタブロックからコピーする場合、これらを消去して後で用いる。   During garbage collection, valid data metapages with contiguous or nearly contiguous logical addresses are collected from two or more metablocks and rewritten to another metablock. Usually there is one for the erase block pool. If all valid data metapages are copied from the original two or more metablocks, they are erased and used later.

特に、ホストからのコマンドが実行可能になる前に、データ統合またはガーベッジコレクションを行う必要がある場合、データ統合およびガーベッジコレクションには時間がかかり、メモリシステムの性能に影響を与えることがある。通常、メモリシステムのコントローラによりこのような動作のスケジュールをたてて、できる限りバックグラウンドで実行するが、これらの動作を行わなければならないので、コントローラは、このような動作が完了するまで、ホストにビジー状態信号を送信しなければならなくなる。ホストコマンドの実行が遅延可能な一例として、ホストがメモリに書き込みを行いたいデータをすべて記憶するのに、消去ブロックプール内の前に消去したメタブロックが十分なく、データ統合またはガーベッジコレクションが必要なので、1つ以上のメタブロックの有効なデータをはじめにクリアし、次に、消去する例が挙げられる。従って、このような混乱を最小にするために、メモリ制御を管理することが注目される。多くのこのような技術について、2003年12月30日出願の米国特許出願第10/749,831号、現在公開されている公開特許出願第2005/0144358号である“大容量消去ブロックを有する不揮発性メモリシステムの管理(Management of Non-Volatile Memory Systems Having Large Erase Blocks) ”(特許文献16)、2003年12月30日出願の米国特許出願第10/750,155号“ブロック管理システムを用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Block Management System) ”(特許文献17)、2004年8月13日出願の米国特許出願第10/917,888号、現在公開されている公開特許出願第2005/0141313号である“メモリプレーン配列を用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Memory Planes Alignment)”(特許文献18)、現在公開されている公開特許出願第2005/0141312号の2004年8月13日出願の米国特許出願第10/917,867号(特許文献19)、2004年8月13日出願の米国特許出願第10/917,889号、現在公開されている公開特許出願第2005/0166087号である“位相プログラム障害処理を用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Phased Program Failure Handling) ”(特許文献20)、2004年8月13日出願の米国特許出願第10/917,725号、現在公開されている公開特許出願第2005/0144365号である“制御データ管理を用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Control Data Management) ”(特許文献21)、2005年7月27日出願の米国特許出願第11/192,220号“マルチストリーム更新トラックを用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Multi-Stream Update Tracking)”(特許文献22)、2005年7月27日出願の米国特許出願第11/192,386号“スクラッチパッドおよび更新ブロックのための向上した索引付けを用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Improved Indexing for Scratch Pad and Update Blocks) ”(特許文献23)、2005年7月27日出願の米国特許出願第11/191,686号“マルチストリーム更新を用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Multi-Stream Updating)”(特許文献24)に記載されている。   In particular, if data integration or garbage collection needs to be performed before commands from the host can be executed, data integration and garbage collection can be time consuming and affect the performance of the memory system. Typically, such operations are scheduled by the memory system controller and run in the background as much as possible, but these operations must be performed, so the controller must host until such operations are complete. Will have to send a busy signal. One example where host command execution can be delayed is that there is not enough previously erased metablocks in the erase block pool to store all the data that the host wants to write to memory, and data consolidation or garbage collection is required. Examples include clearing valid data in one or more metablocks first and then erasing. Therefore, it is noted that memory control is managed to minimize such confusion. Many such technologies are described in US patent application Ser. No. 10 / 749,831, filed Dec. 30, 2003, published patent application No. 2005/0144358, “Nonvolatile with large erase block”. Management of Non-Volatile Memory Systems Having Large Erase Blocks ”(Patent Document 16), US patent application Ser. No. 10 / 750,155 filed Dec. 30, 2003,“ Using Block Management System Non-Volatile Memory and Method with Block Management System "(Patent Document 17), US patent application Ser. No. 10 / 917,888, filed Aug. 13, 2004, published patent now published No. 2005/0141313 “Non-Volatile Memory and Method wit Using Memory Plane Array” h Memory Planes Alignment) "(Patent Document 18), U.S. Patent Application No. 10 / 917,867 (Patent Document 19) filed Aug. 13, 2004, which is currently published application No. 2005/0141312. US patent application Ser. No. 10 / 917,889, filed Aug. 13, 2004, published patent application No. 2005/0166087, “Non-volatile memory and method using phase program fault handling (Non- Volatile Memory and Method with Phased Program Failure Handling ”(Patent Document 20), US patent application Ser. No. 10 / 917,725, filed Aug. 13, 2004, published patent application No. 2005/0144365. “Non-Volatile Memory and Method with Control Data Management” (Patent Document 21), US patent application Ser. No. 11 / 192,220, filed Jul. 27, 005 “Non-Volatile Memory and Method with Multi-Stream Update Tracking” (Patent Document 22) No. 11 / 192,386, filed Jul. 27, 2005, Non-Volatile Memory and Method with Improved, with improved indexing for scratchpads and update blocks. Indexing for Scratch Pads and Update Blocks) "(Patent Document 23), US Patent Application No. 11 / 191,686, filed July 27, 2005" Non-Volatile Memory and Method Using Multi-Stream Update " and Method with Multi-Stream Updating) ”(Patent Document 24).

大容量消去ブロックを有するメモリアレイの動作を効率的に制御する課題の1つは、任意の書き込み動作の間に記憶が行われているデータセクタの数を、メモリのブロックの容量および境界と一致させ、調整することである。アプローチの1つは、全メタブロックを満杯にする量よりも少ないデータ量を記憶する必要がある場合、ホストからの新しいデータの記憶に用いられるメタブロックを、最大数のブロックよりも少ない数で構成することである。適応メタブロックの利用については、2003年12月30日出願の米国特許出願第10/749,189号、現在公開されている公開特許出願第2005/0144357号である“適応メタブロック(Adaptive Metablocks) ”(特許文献25)に記載されている。データブロック間の境界およびメタブロック間の物理境界のフィッティングについては、現在公開されている公開特許出願第2005/0144363号の2004年5月7日出願の米国特許出願第10/841,118号(特許文献26)、2004年12月16日出願の米国特許出願第11/016,271号、現在公開されている公開特許出願第2005/0144367号である“データランプログラミング(Data Run Programming)”(特許文献27)に記載されている。   One challenge to efficiently control the operation of a memory array with a large erase block is to match the number of data sectors being stored during any write operation with the capacity and boundaries of the memory block. And adjust. One approach is to use less than the maximum number of metablocks to store new data from the host if you need to store less data than fills all metablocks. Is to configure. The use of adaptive metablocks is described in US patent application Ser. No. 10 / 749,189, filed Dec. 30, 2003, published patent application No. 2005/0144357, “Adaptive Metablocks”. (Patent Document 25). For fitting the boundaries between the data blocks and the physical boundaries between the metablocks, see US patent application Ser. No. 10 / 841,118 filed May 7, 2004 of the currently published published patent application No. 2005/0144363. Patent Document 26), U.S. Patent Application No. 11 / 016,271 filed December 16, 2004, and published patent application No. 2005/0144367 currently published, “Data Run Programming” ( Patent Document 27).

メモリコントローラは、FAT表からのデータも用いる。これは、ホストが不揮発性メモリに記憶したもので、メモリシステムの動作をより効率的に行う。このような利用の1つは、ホストが識別したデータが使われなくなって、それらの論理アドレスの割り当てを解除する際に、学習することである。これを知ることにより、通常、ホストが書き込みを行う新しいデータをそれらの論理アドレスに書き込むことにより学習する前に、メモリコントローラが、このような無効なデータを含むブロックを消去するスケジュールをたてることが可能になる。このことは、2004年7月21日出願の米国特許出願第10/897,049号、現在公開されている公開特許出願第2006/0020744号である“不揮発性メモリシステム上のデータを保持する方法および装置(Method and Apparatus for Maintaining Data on Non-Volatile Memory Systems)”(特許文献28)に記載されている。他の技術は、任意の書き込み動作を1つのファイルに行うのかどうかを推理するために、すなわち、複数のファイルの間に境界があるかどうかを推理するために、新しいデータをメモリに書き込むホストのパターンの監視を行うことを含んでいる。2004年12月23日出願の米国特許出願第11/022,369号、現在公開されている公開特許出願第2006/0020745号である“最適化順次クラスタ管理のためのFAT分析(FAT Analysis for Optimized Sequential Cluster Management)”(特許文献29)に、このタイプの技術の利用について記載されている。   The memory controller also uses data from the FAT table. This is what the host stores in the non-volatile memory, and makes the operation of the memory system more efficient. One such use is to learn when data identified by the host is no longer used and the logical addresses are deallocated. Knowing this, the memory controller usually schedules the block containing such invalid data to be erased before the host learns by writing new data to be written to those logical addresses. Is possible. This is described in US patent application Ser. No. 10 / 897,049 filed Jul. 21, 2004, published patent application No. 2006/0020744, which is currently published, “Method of Retaining Data on Nonvolatile Memory Systems. And “Method and Apparatus for Maintaining Data on Non-Volatile Memory Systems” (Patent Document 28). Other techniques allow a host to write new data to memory in order to infer whether any write operation is performed on a single file, i.e., whether there are boundaries between multiple files. Includes performing pattern monitoring. US Patent Application No. 11 / 022,369 filed December 23, 2004, published patent application No. 2006/0020745, “FAT Analysis for Optimized Sequential Cluster Management”. (Sequential Cluster Management) "(Patent Document 29) describes the use of this type of technology.

メモリシステムの動作を効率的に行うために、個別のファイルのデータにホストが割り当てた論理アドレスについて、できるだけ多くをコントローラがわかっていることが望ましい。次に、ファイル境界がわからない場合、多数のメタブロック間で分散するよりも、コントローラは、1つのメタブロックまたはメタブロックグループにデータファイルを記憶することが可能になる。結果として、データ統合およびガーベッジコレクション動作の回数と複雑さとが低減する。結果として、メモリシステムの性能が向上する。しかし、前述したように、ホスト/メモリインターフェイスが論理アドレス空間161(図7)を含んでいる場合、メモリコントローラがホストデータファイル構造について多く知ることは困難である。   In order to efficiently operate the memory system, it is desirable for the controller to know as much as possible about the logical addresses assigned by the host to the data of individual files. Second, if the file boundaries are not known, the controller can store the data file in one metablock or metablock group rather than being distributed among multiple metablocks. As a result, the number and complexity of data integration and garbage collection operations are reduced. As a result, the performance of the memory system is improved. However, as described above, if the host / memory interface includes the logical address space 161 (FIG. 7), it is difficult for the memory controller to know much about the host data file structure.

図8を参照すると、図7にすでに示した典型的な論理アドレスホスト/メモリインターフェイスを別のやり方で示している。ホストが、ホストが生成したデータファイルを論理アドレスに割り当てている。次に、メモリシステムがこれらの論理アドレスを認識し、実際にデータを記憶してあるメモリセルブロックの物理アドレスに対してマッピングを行う。   Referring to FIG. 8, the exemplary logical address host / memory interface already shown in FIG. 7 is shown in another manner. The host assigns a data file generated by the host to a logical address. Next, the memory system recognizes these logical addresses and performs mapping to the physical addresses of the memory cell blocks that actually store data.

ファイルベースのメモリインターフェイスおよび動作
ホストと、大容量のデータを記憶するメモリシステムとの間の、異なるタイプのインターフェイスにより、論理アドレス空間を用いなくていいようになる。そのかわり、ホストは、一意のファイルID(または他の一意の参照)と、ファイル内のデータ単位(バイトなど)のオフセットアドレスとにより、各ファイルに対し論理的にアドレス指定を行う。このファイルアドレスを、直接メモリシステムのコントローラに渡し、各ホストファイルのデータを物理的に記憶してあるそれ自体の表に保存する。図2〜図6に関連して前述した同じメモリシステムで、この新しいインターフェイスを実施することができる。前述したものとの主な違いは、メモリシステムがホストシステムと行う通信方法である。
Different types of interfaces between the file-based memory interface and the operating host and the memory system storing large amounts of data eliminate the need for logical address space. Instead, the host logically addresses each file with a unique file ID (or other unique reference) and an offset address of a data unit (such as bytes) within the file. This file address is passed directly to the controller of the memory system and stored in its own table where each host file's data is physically stored. This new interface can be implemented in the same memory system described above in connection with FIGS. The main difference from the above is the communication method performed by the memory system with the host system.

図7の論理アドレスインターフェイスと比較を行うべき、このファイルベースのインターフェイスを、図9に示す。ファイル1、2および3のそれぞれの識別名と、図9のファイル内のデータオフセットを、直接メモリコントローラに渡す。次に、メモリコントローラ機能173により、この論理アドレス情報を、メタブロックの物理アドレスおよびメモリ165のメタページに変換する。ファイルディレクトリは、それぞれ記憶してあるセクタ、ページまたは他の単位のファイルデータが属するホストファイルを常に把握している。   This file-based interface to be compared with the logical address interface of FIG. 7 is shown in FIG. The identification names of the files 1, 2 and 3 and the data offset in the file of FIG. 9 are directly passed to the memory controller. Next, the memory controller function 173 converts the logical address information into a metablock physical address and a memory 165 metapage. The file directory always keeps track of the host file to which each stored sector, page or other unit file data belongs.

図8の論理アドレスインターフェイスと比較を行うべき、ファイルベースのインターフェイスを、図10にも示す。図8のFAT表に保持した論理アドレス空間およびホストについては、図10に示していない。むしろ、ファイル番号と、ファイル内のデータオフセットとにより、メモリシステムに対して、ホストが生成したデータファイルの識別を行う。次に、メモリシステムのコントローラは、メモリセルアレイの物理ブロックに対して直接ファイルのマッピングを行い、ホストファイルを記憶してあるメモリブロックのファイルディレクトリおよびインデックステーブル情報を保持する。そして、ホストは、論理アドレスインターフェイスの管理に現在必要なファイルアロケーションテーブル(FAT)を保持する必要はなくなる。   A file-based interface to be compared with the logical address interface of FIG. 8 is also shown in FIG. The logical address space and host held in the FAT table of FIG. 8 are not shown in FIG. Rather, the data file generated by the host is identified to the memory system by the file number and the data offset in the file. Next, the controller of the memory system directly maps the file to the physical block of the memory cell array, and holds the file directory and index table information of the memory block storing the host file. The host does not need to maintain a file allocation table (FAT) currently required for managing the logical address interface.

図11は、そのプロセッサと、コントローラの他の回路とで実行するメモリシステムのファームウェアが実行する直接データファイルシステムの主な機能の概要のブロック図である。これは、以下で説明する特定のメモリ動作について想定した、全体的なフレームワークである。ファイルベースのインターフェイス601層が、メモリシステムと、外部ホストシステム、または同じメモリカードまたはフラッシュドライブ上で実行するホストアプリケーションとの間で、コマンドおよびデータのやりとりを行う。ホストアプリケーションは、メモリシステムの3つの主な機能、すなわち、ファイルの書き込み、ファイルの削除、およびファイルの読み出しを行う。フラッシュメモリアレイ603内に、データを記憶してある。   FIG. 11 is a block diagram outlining the main functions of the direct data file system executed by the firmware of the memory system executed by the processor and other circuits of the controller. This is an overall framework that assumes specific memory operations described below. A file-based interface 601 layer exchanges commands and data between the memory system and an external host system or a host application executing on the same memory card or flash drive. The host application performs three main functions of the memory system: writing a file, deleting a file, and reading a file. Data is stored in the flash memory array 603.

データを識別したファイルに基づいて、ファイル対ブロックマッピング機能605がフラッシュメモリ内のデータの記憶を編成する。各ファイルに対し、他のファイルのデータとともにファイルのデータを含んでいるフラッシュブロックの数を制限する。これにより、再配置を行って、ファイルの削除または変更を行った際に生成された、使われなくなったデータ空間を解放しなければならない無関係のファイルデータの容量を最小限にし、その結果、性能およびメモリの耐久性が向上することになる。メモリ603の物理メモリセルブロックが、データ管理の基本単位である。   Based on the file that identified the data, a file-to-block mapping function 605 organizes the storage of the data in the flash memory. For each file, limit the number of flash blocks that contain file data along with other file data. This minimizes the amount of irrelevant file data that must be reclaimed to free up unused data space generated when files are deleted or modified, resulting in performance In addition, the durability of the memory is improved. A physical memory cell block of the memory 603 is a basic unit of data management.

データバッファリングおよびプログラミング機能607が、ファイルインターフェイスまたはフラッシュメモリ内の位置からのファイルデータをバッファメモリに一時的に記憶し、フラッシュメモリにその転送を行い、ファイルのアクティブブロックまたは一時的なスワップブロックのいずれかに、そのプログラミングを行うことの制御を行う。好ましくは、各ファイルデータグループの始点を、フラッシュメモリ内のメタページの始点と直接そろえる。論理メタページの構造は、各データグループに対するオフセットアドレス空間内で定義済みである。   A data buffering and programming function 607 temporarily stores file data from a location in the file interface or flash memory in the buffer memory, transfers the data to the flash memory, and updates the active block or temporary swap block of the file. Either controls the programming. Preferably, the start point of each file data group is directly aligned with the start point of the metapage in the flash memory. The structure of the logical metapage is already defined in the offset address space for each data group.

図11の機能609は、メモリ603へアクセスし、そこに記憶してあるデータの読み出しを制御する。ホストが命令した場合に行われるファイルのデータの削除を行うことにより、機能613が保持しているファイル索引付け情報と、機能615のブロックのレコードとの更新を、機能611に行わせる。   A function 609 in FIG. 11 accesses the memory 603 and controls reading of data stored therein. By deleting the file data that is performed when the host instructs, the function 611 is updated with the file indexing information held by the function 613 and the record of the block of the function 615.

ファイルデータ索引付け613は、一意のファイル識別子と、ファイル内のデータのオフセットアドレスとにより、メモリ603に記憶してある個別のファイルの索引付けを行う。各ファイルのデータは、連続する論理オフセットアドレスを有するデータセットグループとして記憶してある。ファイルディレクトリは、個別のファイルに対し、データグループエントリセットのファイルインデックステーブル(FIT)の位置の識別を行う。消去が行われたブロックのID、部分的にファイルデータのプログラミングが行われたブロック、または使われなくなったデータとともにファイルデータを含むブロックのいずれかのIDを、ブロックレコード機能615により保持する。   The file data indexing 613 indexes individual files stored in the memory 603 based on the unique file identifier and the offset address of the data in the file. The data of each file is stored as a data set group having continuous logical offset addresses. The file directory identifies the position of the file index table (FIT) of the data group entry set for each individual file. The block record function 615 holds an ID of a block that has been erased, a block in which file data has been partially programmed, or a block that includes file data together with data that is no longer used.

前述したガーベッジコレクションおよびデータ統合機能の主な目的は、使われていないメモリ空間を解放して、追加データの記憶に用いることである。ガーベッジコレクションでは、ソースブロックの有効なデータを、使われなくなったデータも含んでいるブロックから、少なくとも消去が行われた空間をある程度有する1つ以上の宛先ブロックにコピーする。これにより、有効なデータをより少ない数のブロックに統合するので、一旦もともとのソースブロックを消去したならば、使われなくなったデータが占有していた容量を解放することになる。データ統合では、消去されているが使われていない空間を含む、1つの部分的に埋められているブロックの有効なデータを、別の部分的に埋められているブロックの有効なデータと結合する。最も一般的には、部分的に埋められているブロックは、部分的に一部分だけが埋められている、最後に消去したブロックで閉じられている新しいファイルに書き込みを行うことに起因している。一旦、データを統合したならば、次に、複製のデータとなる、コピーしたてのデータを含むソースブロックを消去し、新しいデータを記憶するのに利用できるようにする。   The main purpose of the garbage collection and data integration functions described above is to free up unused memory space for storing additional data. In garbage collection, valid data in a source block is copied from a block that also contains obsolete data to one or more destination blocks that have at least some space that has been erased. This consolidates valid data into a smaller number of blocks, so once the original source block is erased, the capacity occupied by the unused data is released. Data integration combines valid data from one partially filled block with valid data from another partially filled block, including erased but unused space . Most commonly, a partially filled block results from writing to a new file that is partially partially filled and closed with the last erased block. Once the data is merged, the source block containing the newly copied data, which becomes the duplicate data, is then erased and made available for storing new data.

ガーベッジコレクションおよびデータ統合動作は両方とも、ここではブロック解放として一緒に扱う。機能617は、プログラミングを行っていないメタページを有する物理ブロック、または使われなくなったデータを含む物理ブロックから、他のブロックへの有効なファイルデータのコピーを制御することにより、ブロックを解放する。これにより、もともとのブロックを消去して、ブロックにある使われていない空間を解放できるようにし、この空間を新しいファイルデータの記憶に利用できるようにする。機能619は、解放可能な容量と、消去ブロックの数とに基づいて、ブロック解放動作を行う回数および期間を適応可能なように制御する。全体的なメモリシステムの性能を良好に保つやり方で、新しいファイルデータの書き込みを行う速度に対して最適な速度で、ブロックの解放を行う。   Both garbage collection and data integration operations are treated together here as block release. Function 617 releases the block by controlling the copying of valid file data from one physical block with an unprogrammed metapage or one that contains obsolete data to another block. This erases the original block, frees up unused space in the block, and makes this space available for storing new file data. The function 619 controls the number and period of block release operations to be adaptive based on the releasable capacity and the number of erase blocks. Blocks are released at a speed that is optimal for the speed at which new file data is written, in a manner that maintains good overall memory system performance.

図11の機能図では、変換層621およびインターフェイス層623がファイルインターフェイス601の上位に位置し、フラッシュメモリのバックエンドシステムとインターフェイスをとり、その動作の制御を行う。この例では、インターフェイス層623は、3つの異なるプロトコルのうちの1つにより、ホストまたはそれ以外のものと、メモリシステム外部のデータの通信を行う機能を有している。ファイルインターフェイス625は、ここでの説明の中心となるものであり、一意のファイル識別子とファイル内の論理オフセットアドレスとにより、個別のファイルのデータの識別を行う。オブジェクトインターフェイス627は、電子装置間でデータファイルのやりとりをするのに主に用いられるものであり、ファイルの大きさは通常周知のものである。インターフェイス627の既存のプロトコルは、マイクロソフト コーポレイション(Microsoft Corporation) のメディアトランスファープロトコル(MTP)およびピクチャトランスファープロトコル(PTP)を含んでいる。この例では、後方互換性のある論理(LBA)インターフェイス629も含んでいる。磁気ディスクドライブシステムのものと同様の、現在フラッシュメモリカードが用いているプロトコルにより、インターフェイス629を介してデータを送信して、ホストが、定義済みのメモリシステムの論理アドレス空間に対し、データのアドレス指定を行う。   In the functional diagram of FIG. 11, the conversion layer 621 and the interface layer 623 are positioned above the file interface 601 and interface with the flash memory back-end system to control its operation. In this example, the interface layer 623 has a function of communicating data outside the memory system with a host or other device by one of three different protocols. The file interface 625 is the center of the description here, and identifies individual file data based on a unique file identifier and a logical offset address in the file. The object interface 627 is mainly used for exchanging data files between electronic devices, and the size of the file is usually known. Existing protocols for interface 627 include Microsoft Corporation's Media Transfer Protocol (MTP) and Picture Transfer Protocol (PTP). In this example, a backward compatible logic (LBA) interface 629 is also included. Data is sent via the interface 629 according to the protocol currently used by the flash memory card, similar to that of the magnetic disk drive system, and the host addresses the data to the logical address space of the defined memory system. Specify.

変換層621は、プロトコルアダプタ631、633および635を含んでいる。これらアダプタの機能により、インターフェイスプロトコル625、627および629それぞれのプロトコルをファイルインターフェイス601との共通プロトコルに変換する。変換層により、コマンド、データフォーマット等を、異なるプロトコル間で変換する。LBAプロトコルアダプタ635はさらに、メモリシステムの論理アドレス空間をスタティックファイルに分割する。次に、ファイルインターフェイス601が同じやり方で、これらのファイルを、インターフェイス625および627を介して通信する別個のファイルとして扱う。LBAプロトコルアダプタ635の機能の詳細は、発明者S.A.ゴロベッツ(S. A. Gorobets)による2005年8月3日出願の米国特許出願第11/196,869号(特許文献30)を参照されたい。変換層621およびインターフェイス層623の情報についてはさらに、発明者アラン・シンクレア(Alan Sinclair) による2005年12月21日出願の米国特許出願第11/316,577号(特許文献31)により得られる。   The conversion layer 621 includes protocol adapters 631, 633 and 635. The functions of these adapters convert each of the interface protocols 625, 627, and 629 into a common protocol with the file interface 601. The conversion layer converts commands, data formats, etc. between different protocols. The LBA protocol adapter 635 further divides the logical address space of the memory system into static files. The file interface 601 then treats these files as separate files that communicate via interfaces 625 and 627 in the same manner. Details of the functions of the LBA protocol adapter 635 can be found in A. See US patent application Ser. No. 11 / 196,869 filed Aug. 3, 2005 by S. A. Gorobets. Information about the conversion layer 621 and the interface layer 623 can be further obtained from US patent application Ser. No. 11 / 316,577 filed Dec. 21, 2005 by inventor Alan Sinclair.

新しいデータファイルのプログラミングを行ってメモリに取り込む場合、データを消去したメモリセルブロックに書き込む。ブロック内の第1の物理位置から開始し、ブロックの位置を介して連続して順に書き込みを進める。ファイル内のそのデータのオフセットの順序に関係なく、ホストから受け取った順に、データのプログラミングを行う。ファイルのデータをすべてメモリに書き込むまで、プログラミングを継続する。ファイルのデータ量が1つのメモリブロックの容量を超える場合、第1のブロックが満杯になったときは、第2の消去ブロックにプログラミングを継続する。第1のブロックと同じやり方で、ファイルのデータすべてを記憶するまで、または第2のブロックが満杯になるまで、第1の位置から順に、第2のメモリブロックにプログラミングを行う。第3のブロックまたは追加付加ブロックに対し、ファイルに残っているデータのプログラミングを行ってもよい。1つのファイルのデータを記憶してある複数のブロックまたはメタブロックは、物理的または論理的に連続している必要はない。説明を簡単にするため、特に明記がない限り、ここで用いる用語“ブロック”とは、特定のシステムでメタブロックが用いられているかどうかにより、消去ブロック単位または複数のブロックである“メタブロック”のいずれかについて言うものである。   When programming a new data file and loading it into memory, the data is written into the erased memory cell block. Starting from the first physical location within the block, the writing proceeds sequentially through the location of the block. Regardless of the offset order of the data in the file, the data is programmed in the order received from the host. Continue programming until all file data is written to memory. If the amount of data in the file exceeds the capacity of one memory block, programming continues to the second erase block when the first block is full. In the same manner as the first block, the second memory block is programmed sequentially from the first location until all the data in the file is stored or until the second block is full. The remaining data in the file may be programmed for the third block or the additional additional block. A plurality of blocks or metablocks storing data of one file need not be physically or logically contiguous. For simplicity, unless otherwise specified, the term “block” as used herein refers to an erase block unit or a plurality of blocks, depending on whether the metablock is used in a particular system. Is something to say about either.

図12の状態図は、図11に示すメモリ動作の全体的な機能を示す。個別のメモリブロックを考察すると、3つの状態のうちの1つになる。これらは、解放可能な容量のない、有効なファイルデータの記憶が行われている消去ブロック641およびブロック643と、プログラミングが行われない消去ページおよび/または記憶してあるが使われなくなった(無効な)データから、解放可能な容量を有している、有効なファイルデータを含んでいるブロック645とである。機能647が、消去したメモリブロックにデータの書き込みを行うことにより、得られるプログラミングが行われたブロックが解放可能な容量を保持しているかどうかに基づいて、カテゴリ643または645のブロックになる。機能649で示すように、ファイルを消去する場合、ファイルのデータを含んでいるブロック643を、解放可能な容量を有するブロック645に変換する。機能651が、ブロック645の使われていない記憶容量を解放することにより、それらのブロックを、新しいデータの書き込みが行われる消去ブロック641の状態に復帰させることになる。   The state diagram of FIG. 12 shows the overall function of the memory operation shown in FIG. Considering an individual memory block, it can be in one of three states. These include erase block 641 and block 643 where valid file data is stored with no releasable capacity, erased pages that are not programmed and / or stored but no longer used (invalid And block 645 containing valid file data having a releasable capacity from the data. Function 647 writes data to the erased memory block, resulting in a category 643 or 645 block based on whether the resulting programmed block has releasable capacity. As indicated by function 649, when erasing a file, the block 643 containing the file data is converted to a block 645 having a releasable capacity. By releasing the unused storage capacity of the block 645, the function 651 returns these blocks to the state of the erase block 641 where new data is written.

図13Aを参照すると、メモリシステムに行うデータファイルの書き込みを示している。この例では、データファイル181は、メモリシステムの1つのブロックまたはメタブロック183の記憶容量よりも大きい。これは、縦の実線の間に延びている。従って、データファイル181の部分184は、第2のブロック185に書き込まれる。これらのメモリセルブロックは物理的に連続して示しているが、必ずしも連続している必要はない。ファイルのデータすべてをメモリに書き込むまで、ホストからの受信ストリーミングとして、ファイル181からのデータの書き込みを行う。図13Aの例では、データ181はファイルの初期データである。   Referring to FIG. 13A, data file writing to the memory system is shown. In this example, the data file 181 is larger than the storage capacity of one block or metablock 183 of the memory system. This extends between the vertical solid lines. Accordingly, the portion 184 of the data file 181 is written to the second block 185. Although these memory cell blocks are shown physically contiguous, they need not necessarily be contiguous. Data from the file 181 is written as reception streaming from the host until all the file data is written to the memory. In the example of FIG. 13A, the data 181 is initial file data.

メモリシステムが、記憶してあるデータの管理を行い、状態を常に把握する好適なやり方は、大きさが可変のデータグループを用いることである。すなわち、完全なファイルを形成する定義済みの順序でつながっている複数のグループのデータとして、ファイルのデータを記憶する。好ましくは、しかし、ファイルインデックステーブル(FIT)を用いることにより、メモリシステムのコントローラがファイル内のデータグループの順序を保持する。ホストからのデータストリームとして書き込みが行われている間、ファイルデータの論理オフセットアドレス、またはデータを記憶する物理空間に不連続性があると、必ず新しいデータグループが始まってしまう。このような物理的な不連続性の一例は、ファイルのデータが1つのブロックで満杯になり、別のブロックへの書き込みが始まる場合である。図13Aにこれを示す。第1のデータグループが第1のブロック183で満杯になり、第2のデータグループとしてのファイルの残っている部分184を第2のブロック185に記憶する。第1のデータグループを(F0,D0)で示す。F0がデータファイルが開始したときの論理オフセットであり、D0がファイルが始まるメモリ内部の物理位置である。第2のデータグループを(F1,D1)で示す。F1が第2のブロック185が始まるときに記憶してあるデータの論理ファイルオフセットであり、D1がデータを記憶してある物理位置である。   A preferred way for the memory system to manage stored data and keep track of the state is to use variable-size data groups. That is, the file data is stored as a plurality of groups of data connected in a predefined order that forms a complete file. Preferably, however, by using a file index table (FIT), the controller of the memory system maintains the order of the data groups in the file. While writing as a data stream from the host, if there is a discontinuity in the logical offset address of the file data or the physical space for storing the data, a new data group always starts. An example of such a physical discontinuity is when the file data is full in one block and writing to another block begins. This is illustrated in FIG. 13A. The first data group becomes full in the first block 183 and the remaining portion 184 of the file as the second data group is stored in the second block 185. The first data group is indicated by (F0, D0). F0 is a logical offset when the data file starts, and D0 is a physical location inside the memory where the file starts. The second data group is indicated by (F1, D1). F1 is the logical file offset of the data stored when the second block 185 begins, and D1 is the physical location where the data is stored.

ホスト−メモリインターフェイスを介して転送するデータ量について、多数のバイト数のデータ、多数のデータセクタ、または他の細分性で述べる場合もある。現在の論理アドレスインターフェイスを介して大容量メモリシステムと通信を行う場合、ホストは大抵の場合、そのファイルのデータをバイト細分性で定義するが、次に、バイトを512バイト毎のセクタにグループ化を行ったり、または多数のセクタ毎のクラスタにグループ化を行ったりする。これは、メモリシステムの動作を簡略化するために通常行われている。ここで説明するファイルベースのホスト−メモリインターフェイスは他の単位のデータを用いる場合もあるが、もともとのホストファイルのバイト細分性が一般的には好ましい。すなわち、好ましくは、セクタ、クラスタ等ではなく、データオフセット、長さ等を、バイトで、最小の合理的な単位のデータで表現する。これにより、ここで説明する技術によるフラッシュメモリ記憶装置の容量をより効率的に利用することが可能になる。   The amount of data transferred through the host-memory interface may be described by a large number of bytes of data, a large number of data sectors, or other granularity. When communicating with a large memory system via the current logical address interface, the host often defines the file data with byte granularity, but then groups the bytes into 512-byte sectors. Or grouping into clusters for many sectors. This is usually done to simplify the operation of the memory system. Although the file-based host-memory interface described herein may use other units of data, the byte granularity of the original host file is generally preferred. That is, preferably, data offset, length, and the like are expressed not in sectors, clusters, etc., in bytes, but in the smallest reasonable unit of data. As a result, the capacity of the flash memory storage device according to the technique described here can be used more efficiently.

次に、図13Aに示すやり方でメモリに書き込んだ新しいファイルを、この順で、データグループのインデックスエントリ(F0,D0)、(F1、D1)シーケンスとしてFITで表す。すなわち、ホストシステムが特定のファイルにアクセスしたい場合は必ず、ホストはそのファイルIDまたは他の識別名をメモリシステムに送信し、次に、そのFITにアクセスして、そのファイルを構成するデータグループの識別を行う。メモリシステムの動作の便宜上、これらの個別のエントリも個別のデータグループの長さ<length>に含めてもよい。用いる際には、メモリコントローラは、データグループの長さを算出し、記憶する。   Next, the new file written in the memory in the manner shown in FIG. 13A is represented by FIT in this order as an index entry (F0, D0), (F1, D1) sequence of the data group. That is, whenever the host system wants to access a particular file, the host sends the file ID or other identifier to the memory system, and then accesses the FIT to identify the data groups that make up the file. Identify. For convenience of operation of the memory system, these individual entries may also be included in the length <length> of the individual data group. When used, the memory controller calculates and stores the length of the data group.

好ましくは、ホストが図13Aのファイルを開いている状態に保持している限り、ホストからさらにデータを受信してそのファイルに書き込みを行う位置を定義できるように、物理書き込みポインタPについても保持する。ファイル内の新しいデータの論理位置に関わらず、物理メモリ内のファイルの終端にファイルの新しいデータの書き込みを行う。メモリシステムにより、4つまたは5つのファイルなどの複数のファイルを1度に開いたままにしておくことが可能になり、それぞれに対し書き込みポインタPを保持する。異なるファイルの書き込みポインタは、異なるメモリブロック内の位置を指している。メモリシステムに、すでに存在する開いているファイルの数に制限があるときに、ホストシステムが新しいファイルを開きたい場合、開いているファイルのうちの1つをまず閉じて、次に、新しいファイルを開く。   Preferably, as long as the host holds the file of FIG. 13A in an open state, the physical write pointer P is also held so that a position for further receiving data from the host and writing to the file can be defined. . Regardless of the logical position of the new data in the file, the new data in the file is written at the end of the file in the physical memory. The memory system allows a plurality of files, such as four or five files, to remain open at one time, and holds a write pointer P for each. Different file write pointers point to locations in different memory blocks. If the memory system has a limit on the number of open files that already exist, and the host system wants to open a new file, it closes one of the open files first and then opens the new file. open.

図13Bは、図13Aの前に書き込みが行われたもののまだ開いたファイルとなっているファイルの終端に、ホストがデータの追加を行うことを示す。ホストシステムが、ファイルの終端にデータ187を追加していることを示している。これは、そのファイルのデータの終端で、第2のブロック185に書き込みが行われている。追加データはデータグループ(F1,D1)の一部となるので、これでデータをさらに含むことになる。というのは、既存のデータグループ184と追加データ189との間に論理的にも物理的にもアドレス不連続性がないからである。従って、満杯になったファイルはやはり、FITのインデックスエントリ(F0,D0)、(F1,D1)のシーケンスとして表される。ポインタPのアドレスについても、記憶した追加データの終端のアドレスに変更する。   FIG. 13B shows that the host adds data to the end of the file that was written before FIG. 13A but is still an open file. This indicates that the host system is adding data 187 to the end of the file. This is the end of the data of the file, and the second block 185 is being written. Since the additional data becomes a part of the data group (F1, D1), it further includes data. This is because there is no logical or physical address discontinuity between the existing data group 184 and the additional data 189. Therefore, the full file is still represented as a sequence of FIT index entries (F0, D0) and (F1, D1). The address of the pointer P is also changed to the end address of the stored additional data.

図13Aの前に書き込みを行ったファイルへのデータブロック191の挿入についての一例を図13Cに示す。ホストがデータ191をファイルに挿入しているが、メモリシステムは、前に書き込みを行ったファイルデータの終端の位置193に挿入したデータを追加している。ホストがファイルを閉じた後で、バックグラウンドで後で行うこともあるが、開いているファイルにデータの挿入を行っている間、それらの論理の順序でファイルのデータの書き換えを行う必要はない。1つの新しいグループ(F1,D3)を形成する場合、挿入したデータをすべて、第2のメモリブロック185に記憶するからである。しかし、この挿入を行うことにより、図13Aの前のデータグループ(F0,D0)になり、挿入前のグループ(F0,D0)と、挿入後のグループ(F2,D1)との2つのグループに分割される。これは、挿入の始点F1と挿入の終点F2とで発生するようなデータの論理的な不連続性がある場合は必ず、新しいデータグループを形成する必要があるからである。グループ(F3,D2)は、第2のブロック185の始点である物理アドレスD2の結果である。たとえ同じメモリブロックに記憶してある場合であっても、グループ(F1,D3)および(F3,D2)を、別々に保持する。つまり、記憶してあるデータオフセットに不連続性があるからである。次に、データグループインデックスエントリ(F0,D0)、(F1,D3)、(F2,D1)、(F3,D2)の順で、挿入のもともとのファイルをメモリシステムFITに表す。メモリ内のデータを全部使って、新しいファイルまたは既存のファイルの新しいデータの書き込みを行うこともできることが、図13A、図13Bおよび図13Cの例からわかることに留意されたい。   FIG. 13C shows an example of the insertion of the data block 191 into the file written before FIG. 13A. The host has inserted the data 191 into the file, but the memory system is adding the inserted data to the end position 193 of the previously written file data. Although the host may close the file and later in the background, there is no need to rewrite the data in the logical order while inserting data into the open file. . This is because when one new group (F1, D3) is formed, all the inserted data is stored in the second memory block 185. However, by performing this insertion, it becomes the previous data group (F0, D0) of FIG. 13A, and is divided into two groups, a group before insertion (F0, D0) and a group after insertion (F2, D1). Divided. This is because a new data group must be formed whenever there is a logical discontinuity of data as occurs at the insertion start point F1 and the insertion end point F2. The group (F3, D2) is a result of the physical address D2 that is the start point of the second block 185. Even if stored in the same memory block, groups (F1, D3) and (F3, D2) are held separately. That is, the stored data offset is discontinuous. Next, the original file of insertion is represented in the memory system FIT in the order of data group index entries (F0, D0), (F1, D3), (F2, D1), (F3, D2). Note that it can be seen from the examples of FIGS. 13A, 13B, and 13C that all of the data in the memory can be used to write new files or new data for existing files.

図13Cに示す既存のファイルへのデータの挿入に代えて、データを挿入したときは必ず、ホストが別個のファイルとしてメモリにファイルの書き換えを行ってもよい。次に、メモリシステムは、この別個のファイルを新しいファイルとして処理することもある。次に、ホストが古いファイルを削除し、メモリシステムは、データがもう使われなくなった古いファイルを記憶してある空間の解放に応答できる。   Instead of inserting data into the existing file shown in FIG. 13C, whenever data is inserted, the host may rewrite the file in the memory as a separate file. The memory system may then treat this separate file as a new file. The host then deletes the old file and the memory system can respond to the release of the space storing the old file whose data is no longer used.

図13Dは、図13Aに示すやり方でもともと書き込みを行ったデータのある一部分を更新する、別の例を示す。データファイルの部分195が更新部分である。更新を行ってメモリシステムの全ファイルの書き換えを行うのではなく、ファイルの更新部分197を、前に書き込みを行ったデータに追加する。前に書き込みを行ったデータの部分199は、今は使われなくなっている。更新を行った後、データグループインデックスエントリ(F0,D0)、(F1,D3)、(F2,D1)、(F3,D2)の順で、ファイルをメモリシステムFITに表す。図13Aの1つのデータグループ(F0,D0)を、図13Dに示す部分に再度分割する。更新部分の前のグループと、更新部分と、更新部分の後のグループとである。使われなくなったデータが占有している空間199を解放することが望ましいが、メモリにファイルデータの書き込みを行う一部としてではなく、好ましくは、後で行う。典型的には、このような解放を行うことにより、記憶してある特定のファイルのデータのデータグループの数がより少なくなる。   FIG. 13D shows another example of updating a portion of the data originally written in the manner shown in FIG. 13A. The data file portion 195 is an updated portion. Rather than updating and rewriting all the files in the memory system, an updated portion 197 of the file is added to the previously written data. The previously written data portion 199 is no longer used. After updating, the files are represented in the memory system FIT in the order of data group index entries (F0, D0), (F1, D3), (F2, D1), (F3, D2). One data group (F0, D0) in FIG. 13A is divided again into the portions shown in FIG. 13D. The group before the update part, the update part, and the group after the update part. Although it is desirable to free space 199 occupied by data that is no longer used, it is preferably done later, not as part of writing file data to memory. Typically, by performing such a release, the number of data groups of data of a specific file stored is reduced.

可変長データグループの利用をさらに説明するために、一連の同じファイルを含むいくつかの書き込み動作について、図14A〜図14Eに順に示す。まず、図14Aに示すように、メモリシステムの2つのブロックに、もともとのファイルデータW1の書き込みを行う。次に、2つのデータグループ、物理メモリブロックの始点から始まる第1のグループと、物理メモリブロックの境界の後から開始しなければならない第2のグループとにより、ファイルを定義する。次に、図14Aのファイルを、データグループに対する以下の一連のインデックスエントリ(F0,D0)、(F1,D1)により記述する。   To further illustrate the use of variable length data groups, several write operations involving a series of identical files are shown in order in FIGS. 14A-14E. First, as shown in FIG. 14A, the original file data W1 is written into two blocks of the memory system. Next, a file is defined by two data groups, a first group starting from the start of the physical memory block and a second group that must start after the boundary of the physical memory block. Next, the file in FIG. 14A is described by the following series of index entries (F0, D0) and (F1, D1) for the data group.

図14Bでは、ホストが、図14Aで書き込まれたファイルデータの更新を行う。更新データの前のバージョンが使われなくなっている前のグループ(F1,D1)のすぐ後に、更新したファイルデータU1の書き込みを行う。図14Aの前のグループ(F0,D0)が短くなって図14Bの変更後のグループ(F0,D0)になり、前のグループ(F1,D1)が短くなって、グループ(F4,D2)になる。メモリブロックの境界で重複しているので、2つのグループ(F2,D3)および(F3,D4)に更新データの書き込みを行う。データのいくつかは、第3のメモリブロックに記憶する。これで、データグループに対する以下の一連のインデックスエントリ(F0,D0)、(F2,D3)、(F3,D4)、(F4,D2)により、ファイルを記述する。   In FIG. 14B, the host updates the file data written in FIG. 14A. The updated file data U1 is written immediately after the group (F1, D1) before the previous version of the update data is no longer used. The previous group (F0, D0) in FIG. 14A is shortened to become the group (F0, D0) after the change in FIG. 14B, and the previous group (F1, D1) is shortened to become the group (F4, D2). Become. Since the data overlap at the boundary of the memory block, the update data is written into the two groups (F2, D3) and (F3, D4). Some of the data is stored in a third memory block. The file is now described by the following series of index entries (F0, D0), (F2, D3), (F3, D4), (F4, D2) for the data group.

ホストが新しいファイルデータI1の挿入を行う、図14Bのファイルをさらに変更したものを図14Cに示す。挿入したデータがメモリブロックの境界と重複しているので、図14Cの新しいグループ(F5,D6)および(F6,D7)として、図14Bの前のグループ(F4,D2)のすぐ次のメモリに、新しいデータI1の書き込みを行う。第4のメモリブロックを用いる。新しいデータI1の挿入により、図14Bの前のグループ(F0,D0)を、図14Cの短縮したグループ(F0,D0)および(F7,D5)に分割する。これで、データグループに対する以下のインデックスエントリシーケンス(F0,D0)、(F5,D6)、(F6,D7)、(F7,D5)、(F8,D3)、(F9,D4)、(F10,D2)により、ファイルを記述する。   FIG. 14C shows a further modification of the file of FIG. 14B in which the host inserts new file data I1. Since the inserted data overlaps the boundary of the memory block, the new groups (F5, D6) and (F6, D7) in FIG. 14C are stored in the next memory of the previous group (F4, D2) in FIG. 14B. The new data I1 is written. A fourth memory block is used. By inserting new data I1, the previous group (F0, D0) in FIG. 14B is divided into the shortened groups (F0, D0) and (F7, D5) in FIG. 14C. The following index entry sequences (F0, D0), (F5, D6), (F6, D7), (F7, D5), (F8, D3), (F9, D4), (F10, D2) describes the file.

図14Dは、新しいデータW2をファイルの終端に追加した、図14Cのデータファイルの別の変更例を示す。図14Dの新しいグループ(F11,D8)として、図14Cの前のグループ(F10,D2)のすぐ次に新しいデータW2の書き込みを行う。これで、データグループに対する以下のインデックスエントリシーケンス(F0,D0)、(F5,D6)、(F6,D7)、(F7,D5)、(F8,D3)、(F9,D4)、(F10,D2)、(F11,D8)により、ファイルを記述する。   FIG. 14D shows another modification of the data file of FIG. 14C in which new data W2 is added to the end of the file. As a new group (F11, D8) in FIG. 14D, new data W2 is written immediately after the previous group (F10, D2) in FIG. 14C. The following index entry sequences (F0, D0), (F5, D6), (F6, D7), (F7, D5), (F8, D3), (F9, D4), (F10, A file is described by D2) and (F11, D8).

図14Dのファイルに更新したファイルデータU2の書き込みを行う、開かれているファイルに対する第2の更新を図14Eに示す。そのデータの前のバージョンが使われなくなっている、図14Dの前のグループ(F11,D8)のすぐ次に、図14Eの更新データU2の書き込みを行う。図14Dの前のグループ(F9,D4)が短くなって、図14Eの変更後のグループ(F9,D4)になり、前のグループ(F10,D2)が完全に使われなくなり、前のグループ(F11,D8)が短くなって、新しいグループ(F14,D9)を形成する。ブロックの境界と重複している図14Eの新しいグループ(F12,D10)および(F13,D11)に、更新データの書き込みを行う。これで、第5のブロックには、ファイルを記憶する必要がある。これで、データグループに対する以下のインデックスエントリシーケンス(F0,D0)、(F5,D6)、(F6,D7)、(F7,D5)、(F8,D3)、(F9,D4)、(F12,D10)、(F13,D11)、(F14,D9)により、ファイルを記述する。   FIG. 14E shows a second update to the open file that writes the updated file data U2 to the file of FIG. 14D. The update data U2 of FIG. 14E is written immediately after the previous group (F11, D8) of FIG. 14D where the previous version of the data is no longer used. The previous group (F9, D4) in FIG. 14D is shortened to become the changed group (F9, D4) in FIG. 14E, and the previous group (F10, D2) is not completely used. F11, D8) are shortened to form a new group (F14, D9). Update data is written into the new groups (F12, D10) and (F13, D11) in FIG. 14E that overlap the block boundaries. Thus, it is necessary to store the file in the fifth block. The following index entry sequences (F0, D0), (F5, D6), (F6, D7), (F7, D5), (F8, D3), (F9, D4), (F12, The file is described by D10), (F13, D11), and (F14, D9).

好ましくは、各ファイルのデータのオフセットを、前の説明によるファイルの生成または変更を行った後で、正しい論理的順序で連続して保持する。従って、データをファイルに挿入する動作の一部として、例えば、ホストが行った挿入したデータのオフセットは、挿入の直前のオフセットから連続し、挿入後のすでにファイルに入っているデータを、挿入したデータ量で増分する。最も一般的には、既存のファイルの更新を行うと、類似量の更新データで置き換えられた既存のファイルの任意のアドレス範囲のデータになるので、通常、他のファイルのデータのオフセットを置き換える必要はない。   Preferably, the offset of the data in each file is continuously maintained in the correct logical order after the file is created or modified as described above. Therefore, as part of the operation of inserting data into the file, for example, the offset of the inserted data performed by the host is continuous from the offset immediately before the insertion, and the data already in the file after insertion is inserted. Increment by the amount of data. Most commonly, updating an existing file results in data in any address range of the existing file that has been replaced with a similar amount of update data, so it is usually necessary to replace the data offset in the other file There is no.

図13に関連して前述した、データの割り当ておよび索引付け機能はすべて、メモリシステムのコントローラが行うことに留意されたい。適切なコマンドとともに、ホストは単に、ファイルIDおよびファイル内のデータのオフセットをメモリシステムに送る通信を行うだけでよい。残りはメモリシステムが行う。   Note that all of the data allocation and indexing functions described above in connection with FIG. 13 are performed by the controller of the memory system. With the appropriate command, the host simply needs to communicate to send the file ID and the offset of the data in the file to the memory system. The rest is done by the memory system.

前述したやり方でホストからのファイルデータを直接フラッシュメモリに書き込みを行う利点は、このように記憶してあるデータの細分性または分解を、ホストのデータと同じように保持することができることである。ホストアプリケーションが1バイトの細分性でファイルデータの書き込みを行う場合、例えば、そのデータについても、1バイト細分性でフラッシュメモリに書き込みを行う。次に、個別のデータグループ内のデータ量および位置を、バイト数で測定する。すなわち、ホストアプリケーションファイル内で別々にアドレス指定可能なデータの同じオフセット単位については、フラッシュメモリに記憶したときのそのファイル内でもやはり別々にアドレス指定可能である。次に、ブロック内の同じファイルのデータグループ間の境界はいずれも、最も近いバイトまたは他のホストオフセット単位に対し、インデックステーブルで指定されている。同様に、ブロック内の異なるファイルのデータグループ間の境界は、ホストのオフセット単位で定義されている。   The advantage of writing file data from the host directly into the flash memory in the manner described above is that the granularity or decomposition of the data stored in this way can be retained in the same way as the host data. When the host application writes file data with 1-byte granularity, for example, the data is also written into the flash memory with 1-byte granularity. Next, the data amount and position in the individual data group are measured by the number of bytes. That is, the same offset unit of data that can be addressed separately within the host application file can still be addressed separately within that file when stored in the flash memory. Next, any boundaries between data groups of the same file in the block are specified in the index table for the nearest byte or other host offset unit. Similarly, the boundaries between data groups of different files within a block are defined in host offset units.

用語“セクタ”とは、ここでは大きなブロックのメモリに用いられ、ECCが対応づけられている記憶してあるデータの単位を表している。セクタも、フラッシュメモリとやりとりするデータ転送の最小単位である。“ページ”は、ブロック内のメモリセルの単位を表すのに用いられ、プログラミングの最小単位である。“メタページ”とは、メタブロックの完全な並列処理を行うページを表すのに用いられる。メタページは、プログラミングの最大単位である。   The term “sector” is used herein for a large block of memory and represents a unit of stored data associated with an ECC. A sector is also a minimum unit of data transfer to and from the flash memory. A “page” is used to represent a unit of memory cells in a block and is the smallest unit of programming. “Metapage” is used to represent a page that performs complete parallel processing of metablocks. A metapage is the largest unit of programming.

図14Bおよび図14Eから、更新コマンドにより、ファイル内のデータ量より大きいファイルを記憶する必要のある物理空間となることがわかる。これは、更新により置き換えられたデータを、メモリに記憶したままになっているからである。従って、使われなくなった無効なデータを削除することにより、ファイルのデータをより小さい物理記憶空間に統合する(ガーベッジコレクションを行う)ことは、非常に望ましい。従って、他のデータがさらに記憶空間を利用できるようになる。   From FIG. 14B and FIG. 14E, it can be seen that the update command results in a physical space that needs to store a file larger than the data amount in the file. This is because the data replaced by the update is still stored in the memory. Therefore, it is highly desirable to consolidate file data into a smaller physical storage space (garbage collection) by deleting invalid data that is no longer used. Therefore, other data can further use the storage space.

図14Bおよび図14Eのファイルデータの更新の他に、図14Cのデータ挿入を行うことにより、順番が狂ってファイルデータを記憶することになることもわかる。すなわち、ほとんどいつも、ファイル内のいずれかに論理的に位置づけられるが、更新および挿入を行う際に、更新および挿入は、メモリに記憶してあるファイルの終端に加えられる。これは、図14B、図14Cおよび図14Eに一例である。従って、メモリに記憶してあるファイルのデータを整理し直して、ファイル内のオフセットの順序に一致させることは望ましい。連続してページおよびブロックの読み出しを行うことにより、ファイルのデータがそれらのオフセットの順序になるので、記憶してあるデータの読み出し速度が向上することになる。これにより、可能なファイルの断片化を解消する(defragmentation) ことが最大になる。しかし、場合によっては1つ以上のメモリブロックを解放して他のデータを記憶に用いるようにするファイルデータ統合のように、ファイルデータを整理し直して読み出しをより効率的にすることは、メモリシステムの性能にはあまり重要ではない。従って、ファイル内のデータを整理し直すことは、工場管理費を追加したほどの価値のある恩恵が得られないので通常単独で行われないが、工場管理費がほとんど、あるいは全くかからないで、多くのガーベッジコレクション動作の一部として行うことができる。   It can also be seen that by inserting the data in FIG. 14C in addition to updating the file data in FIGS. 14B and 14E, the file data is stored out of order. That is, almost always logically positioned anywhere in the file, but when updating and inserting, updates and insertions are added to the end of the file stored in memory. This is an example in FIGS. 14B, 14C and 14E. Therefore, it is desirable to re-arrange the file data stored in the memory so that it matches the order of the offsets in the file. By continuously reading the pages and blocks, the file data is in the order of their offsets, so that the read speed of the stored data is improved. This maximizes the possible defragmentation of the file. However, in some cases, reorganizing file data to make reading more efficient, such as file data integration that frees one or more memory blocks and uses other data for storage, Less important to system performance. Therefore, reorganizing the data in the file is not usually done alone, as it does not provide the valuable benefits of adding factory management costs, but with little or no factory management costs. As part of the garbage collection operation.

図14Eのファイルは、生成された2つのデータ更新U1およびU2により、メモリに記憶された使われなくなったデータグループ(グレー部分)を含んでいる。結果として、図14Eからわかるように、ファイルの記憶に用いられるメモリ容量の量が、ファイルの大きさよりも相当大きい。従って、ガーベッジコレクションを行うことが適切である。図15は、図14Eのデータファイルのガーベッジコレクションを行った結果を示す。ガーベッジコレクションの前は、そのファイルは、ほぼ5つのブロックの記憶容量を占有しているが(図14E)、ガーベッジコレクション後の同じファイルは、3つのメモリセルブロックを多少超えて納められている(図15)。ガーベッジコレクション動作の一部として、データをブロックからコピーする。はじめに、他の消去ブロックに書き込みを行い、次に、もともとのブロックを消去する。全ファイルのガーベッジコレクションを行う場合、ファイル内のデータ論理オフセットの順序と同じ物理的順序で、新しいブロックにそのデータをコピーする。例えば、ガーベッジコレクションの後(図15)、ホストファイル内の順序と同じ順序で、更新U1およびU2、挿入I1を記憶する。   The file of FIG. 14E includes a data group (gray portion) that is no longer used and is stored in memory due to the two generated data updates U1 and U2. As a result, as can be seen from FIG. 14E, the amount of memory capacity used to store the file is considerably larger than the size of the file. Therefore, it is appropriate to perform garbage collection. FIG. 15 shows the result of garbage collection of the data file of FIG. 14E. Prior to garbage collection, the file occupies approximately 5 blocks of storage (FIG. 14E), but the same file after garbage collection is stored slightly beyond 3 memory cell blocks ( FIG. 15). As part of the garbage collection operation, data is copied from the block. First, writing to another erase block is performed, and then the original block is erased. When garbage collecting all files, the data is copied to a new block in the same physical order as the order of data logical offsets in the file. For example, after garbage collection (FIG. 15), updates U1 and U2 and insert I1 are stored in the same order as in the host file.

通常、ファイルベースのガーベッジコレクションも、統合したファイル内に、新しい、異なるデータグループを形成することになる。図15の場合、新しいデータグループに対する以下の新しいインデックスエントリシーケンス(F0,D12)、(F1,D13)、(F2,D14)、(F3,D15)により、ファイルを記述する。これは、図14Eに示すファイルの状態で存在するものよりも、データグループの数はずっと少ない。ファイルのデータをコピーしたメモリセルブロック毎に1つのデータグループがある。ガーベッジコレクション動作の一部として、ファイルインデックステーブル(FIT)の更新を行って、ファイルを構成する新しいデータグループを反映させる。   Typically, file-based garbage collection will also create new and different data groups within the consolidated file. In the case of FIG. 15, a file is described by the following new index entry sequences (F0, D12), (F1, D13), (F2, D14), and (F3, D15) for the new data group. This is a much smaller number of data groups than those present in the file state shown in FIG. 14E. There is one data group for each memory cell block to which the file data is copied. As part of the garbage collection operation, the file index table (FIT) is updated to reflect the new data groups that make up the file.

図14Eのデータ分布から図15のデータ分布へ移動するには、相当のデータ量のコピーを行うことが必要であることに留意されたい。図14Eのそれぞれのブロックから有効なデータの読み出しを行って、次に、図15の4つの消去ブロックに書き込みを行う。これにより、将来用いるファイルのデータグループを非常に簡略にするが、データのコピーに相当長い時間がかかる。従って、ファイルベースのデータのガーベッジコレクションを行わないで、その代わりに、ファイルとしてデータを直接メモリに記憶する場合であっても、ブロックベースで行う。最もデータ量が少ないブロックにガーベッジコレクションを行って、別のブロックにコピーすることにより、ブロックの使われていない容量を解放する。このことは、前に援用されている、2006年5月8日出願の米国特許出願第11/382,232号“フラッシュメモリのデータ記憶容量の解放(Reclaiming Data Storage Capacity in Flash Memories)”(特許文献32)に記載されている。   Note that copying from the data distribution of FIG. 14E to the data distribution of FIG. 15 requires a significant amount of data to be copied. Effective data is read from each block in FIG. 14E, and then written into the four erase blocks in FIG. This greatly simplifies the data group of the file to be used in the future, but it takes a considerably long time to copy the data. Therefore, garbage collection of file-based data is not performed. Instead, even when data is directly stored in a memory as a file, it is performed on a block basis. Garbage collection is performed on the block with the smallest amount of data, and then copied to another block to release unused capacity of the block. This was previously incorporated by reference in US patent application Ser. No. 11 / 382,232, “Reclaiming Data Storage Capacity in Flash Memories,” filed May 8, 2006 (patented). Reference 32).

従って、図14Eの状態で、ファイルのデータを保持しているブロックの解放を、同じファイルのデータを記憶してある複数のブロックに行うのではなく、ブロックに対し個別に行う。例えば、任意のときに解放動作を行うように考えられているメモリシステムのブロックのうち、図14Eの第2のブロック002の有効なデータ量が最も少ない場合、次に、図16に示すように、別の消去ブロック010にその1つのデータグループをコピーする。そして、新しいブロックは、1つのデータグループ(F8,D16)と、新しいデータの書き込みが行われるブロックの残りの消去した容量とを含むことになる。図14Eでデータを記憶してあるブロックから、その消去した容量を解放する。次に、ファイル(F0,D0)、(F5,D6)、(F6,D7)、(F7,D5)、(F8,D16)、(F9,D4)、(F12,D10)、(F13,D11)、(F14,D9)から構成される、以下のインデックスエントリシーケンスにより、データグループに対し、ファイルを記述する。ブロック解放処理に基づいて、解放動作のための基準を個別に満たすまでは、図14Eに示す他のブロックを変更しない。   Therefore, in the state shown in FIG. 14E, the blocks holding the file data are not released to a plurality of blocks storing the same file data, but individually to the blocks. For example, if the effective data amount of the second block 002 in FIG. 14E is the smallest among the blocks of the memory system that are considered to perform the release operation at any time, then, as shown in FIG. The one data group is copied to another erase block 010. The new block includes one data group (F8, D16) and the remaining erased capacity of the block in which new data is written. The erased capacity is released from the block storing data in FIG. 14E. Next, the files (F0, D0), (F5, D6), (F6, D7), (F7, D5), (F8, D16), (F9, D4), (F12, D10), (F13, D11) ), (F14, D9), the file is described for the data group by the following index entry sequence. Based on the block release processing, the other blocks shown in FIG. 14E are not changed until the criteria for the release operation are individually satisfied.

ファイルデータの索引付け
図17は、いくつかのそれぞれ異なる時間0、2、4、XおよびYでの1つのファイルのファイルインデックステーブル(FIT)内のインデックスエントリシーケンスを示す。これらは、図14A、図14C、図14E、図15および図16それぞれに関連する前述したシーケンスである。好ましくは、ホストシステムからの支援を受けずに、メモリのコントローラにより、FITのデータの書き込みを行って、現在の状態を保持する。メモリシステムにデータの書き込みを行う際に、ホストシステムは、パス名、ファイル名およびファイル内のデータのオフセットを供給するが、データグループの定義、またはメモリセルアレイのどこに記憶するかについては、ホストは行わない。図17のエントリでは、図14A〜図14Eのメモリセルブロックに、左から1で始まる番号を振る。従って、図14Cに示す状態のファイルでは、例えば、その第3のデータグループ(F6,D7)にはブロック004に記憶するように図17に注記が付けられる。左から4つめのブロックで、そのブロックの初期アドレスからD7バイトである。好ましくは、表の各エントリに各データグループの長さも含む。
Indexing File Data FIG. 17 shows the index entry sequence in the file index table (FIT) for a file at several different times 0, 2, 4, X and Y. These are the previously described sequences associated with FIGS. 14A, 14C, 14E, 15 and 16 respectively. Preferably, the FIT data is written by the memory controller without assistance from the host system, and the current state is maintained. When writing data to the memory system, the host system supplies the path name, file name, and offset of the data in the file, but the host is responsible for defining the data group or where to store it in the memory cell array. Not performed. In the entry of FIG. 17, numbers starting from 1 are assigned to the memory cell blocks of FIGS. 14A to 14E. Therefore, in the file in the state shown in FIG. 14C, for example, the third data group (F6, D7) is annotated in FIG. 17 to be stored in the block 004. The fourth block from the left, which is D7 bytes from the initial address of the block. Preferably, each entry in the table also includes the length of each data group.

図17に示す、ファイルの変更により、ファイルのデータグループに対する修正となる際に、またはあまり頻繁にではないが、メモリのコントローラが、1つのファイルに対するインデックスエントリシーケンスの書き換えを行う。コントローラは、このような変更をそのメモリに記憶し、フラッシュメモリに1度にその多くの書き込みを行うこができる。任意のある時間に、ファイル毎に有効なインデックスのセットが1つだけ存在する。これは、異なる時間でファイルを定義した図17に示す5つのインデックスのセットである。時間XおよびYのインデックスは、2つの異なる種類の解放動作の結果を示す。前述したように、一方はファイルベースのもので、もう一方はブロックベースのものである。ファイルへの追加データのプログラミング、ファイルからのデータ読み出し、そのデータを記憶してあるファイルまたはブロックのデータのガーベッジコレクションを行う必要があるときに、メモリシステムのコントローラは、ファイルの現在のインデックスのセットを用いる。他の動作に用いる場合もある。従って、それらのファイルオフセット(Fx)の順で個別のファイルのインデックスエントリを記憶している場合、FITは使いやすいが、そうでない場合、コントローラは、まちがいなく論理的順序でエントリの読み出しを行うことができる。メモリコントローラが特定のファイルのインデックスエントリの読み出しを行う最も一般的な理由は、ホストコマンドの実行中にある。   When the file change shown in FIG. 17 results in a modification to the data group of the file, or less frequently, the memory controller rewrites the index entry sequence for one file. The controller stores such changes in its memory and can make many writes to the flash memory at one time. There is only one set of valid indexes per file at any given time. This is a set of five indexes shown in FIG. 17 that define files at different times. The indices at times X and Y indicate the results of two different types of release operations. As described above, one is file-based and the other is block-based. When you need to program additional data to a file, read data from a file, or garbage collect data from a file or block that stores that data, the memory system controller sets the current index of the file. Is used. It may be used for other operations. Therefore, FIT is easy to use when storing individual file index entries in the order of their file offsets (Fx), but otherwise the controller must read the entries in a logical order. Can do. The most common reason for the memory controller to read an index entry for a particular file is during execution of a host command.

具体的なファイル索引付けを行う第1の実施形態
図18を参照して、連続するセット内の数値である一意のファイルID201で、直接データファイルインターフェイスとともに動作するメモリシステムに記憶してあるファイルの識別を行う。ディレクトリ203は、メモリ装置に記憶している有効なファイル毎に1つエントリを含んでいる。好ましくは、ディレクトリ203はフラットな階層で、サブディレクトリをサポートしていない。これにより、メモリの直接データファイルシステムが、ホストで用いられるオペレーティングシステムとは独立可能になる。特定のホストオペレーティングシステムプロトコルに従う階層ディレクトリについては、直接データファイルシステム外部のファームウェア層がサポートを行い、フラットなディレクトリ構造をやはりサポートしているファイルメタデータ(ファイル“属性”情報もわかっている)機能とともに利用する。
First Embodiment Performing Specific File Indexing Referring to FIG. 18, a unique file ID 201, which is a numerical value in a continuous set, of a file stored in a memory system operating directly with a data file interface Identify. The directory 203 includes one entry for each valid file stored in the memory device. Preferably, directory 203 is a flat hierarchy and does not support subdirectories. This allows the memory direct data file system to be independent of the operating system used by the host. File metadata (also known as file “attribute” information) for hierarchical directories that follow specific host operating system protocols, supported directly by the firmware layer outside the data file system and still supporting a flat directory structure Use with.

前の説明をまとめると、データセットグループとしてファイルのデータを記憶してある。それぞれ、ファイルオフセットアドレス空間と物理アドレス空間との両方で、1度に実行する連続するアドレス全域にわたっている。ファイルのセット内のデータグループは、互いに特定の物理アドレス関係を持つ必要はない。データグループは、ファイルの連続するオフセットアドレスを有するファイルデータのセットであり、1つのメモリブロックの連続する物理アドレスでプログラミングが行われる。通常、数多くのデータグループとして、ファイルに対しプログラミングを行う。データグループの長さは、1バイトから1ブロックの間とすることができる。ファイルインデックステーブル(FIT)205により、オフセットアドレスの順で、識別すべきファイルの有効なデータグループの位置の記録を行う。FITレコードとしてファイルのFITエントリのセットについてわかり、ディレクトリ203のエントリで指定されている。   In summary, the file data is stored as a data set group. Each of the file offset address space and the physical address space covers the entire continuous address executed at one time. Data groups within a set of files need not have a specific physical address relationship to each other. A data group is a set of file data having consecutive offset addresses of a file, and programming is performed with consecutive physical addresses of one memory block. Typically, the file is programmed as a number of data groups. The length of the data group can be between 1 byte and 1 block. A file index table (FIT) 205 records the positions of valid data groups of the file to be identified in the order of offset addresses. A set of FIT entries of a file is known as an FIT record, and is specified by an entry in the directory 203.

FIT205は、2つの構成要素、アクティブファイルインデックスブロック207および1つ以上の非アクティブファイルインデックステーブルブロック209を有している。直接データファイル装置内のアクティブファイルのFITレコードは、アクティブファイルインデックスブロック207に配置されている。以下に説明するように、このブロックに対し、ディレクトリ203が間接アドレス指定を行うことにより、それらのファイルのディレクトリ203のエントリの更新を行う必要なく、アクティブファイルのFITレコードを修正することが可能になる。非アクティブファイルに対して、ファイルディレクトリ203が直接、非アクティブファイルインデックスブロック209にFITレコードのアドレス指定を行う。いずれの場合も、FITレコードにより、一意のファイルID201により個別に指定するファイルを構成するデータグループ211の位置を指定する。参照するために、部分的なファイルのファイルIDを含んでいるヘッダで、各データグループに対しプログラミングを行ってもよい。図18の213に示すように、ファイルのデータを記憶してあるブロックを解放した後で必要になるといったように、ファイルのFITレコードを修正してもよい。   The FIT 205 has two components, an active file index block 207 and one or more inactive file index table blocks 209. The FIT record of the active file in the direct data file device is arranged in the active file index block 207. As described below, the directory 203 performs indirect addressing for this block, so that it is possible to modify the FIT record of the active file without having to update the entry of the directory 203 of those files. Become. For the inactive file, the file directory 203 directly addresses the FIT record to the inactive file index block 209. In any case, the position of the data group 211 that constitutes the file that is individually designated by the unique file ID 201 is designated by the FIT record. For reference, each data group may be programmed with a header that includes the file ID of the partial file. As indicated by reference numeral 213 in FIG. 18, the FIT record of the file may be modified so that it becomes necessary after releasing the block storing the file data.

共通の構成部品を同じ参照番号で識別した、図18を多少拡張したものを図19に示す。複数の非アクティブファイルインデックスブロック209を示す。非アクティブFITプログラムブロック209aは、新規に書き込みが行われたデータファイルの新しいFITレコードの書き込みが行われる消去を行ったメモリページを有している。一旦、このブロックが満杯になると、非アクティブファイルFITブロック209bとして指定し、新しい消去ブロックを非アクティブFITプログラムブロックとして指定する。典型的には、ファイルディレクトリ203は、システムに保持している各ファイルIDに対して、FITブロック207、209aおよび209bすべてのFITレコードを指す。   FIG. 19 shows a slightly expanded version of FIG. 18 in which common components are identified by the same reference numerals. A plurality of inactive file index blocks 209 are shown. The inactive FIT program block 209a has an erased memory page in which a new FIT record of a newly written data file is written. Once this block is full, it is designated as an inactive file FIT block 209b and a new erase block is designated as an inactive FIT program block. Typically, the file directory 203 points to the FIT records of all FIT blocks 207, 209a and 209b for each file ID held in the system.

アクティブファイルインデックスブロック207、または非アクティブファイルインデックスブロック209のうちの1つに特定のファイルのFITレコードを記憶してあるかどうかは、近い将来、ファイルに修正を行う可能性が高いかどうかに依存する。高ければ、ブロック内207にそのFITレコードを保持してあるアクティブファイルであると考えられ、高くなければ、ブロック209のうちの1つにそのFITレコードを保持してある非アクティブファイルであると考えられる。メモリシステムが、“開いているファイル”および“閉じているファイル”コマンドを送信するホストシステムとともに動作している場合、メモリは、開いているファイルはすべてアクティブで、閉じているファイルはすべて非アクティブであると見なす。典型的には、これらのコマンドを用いるホストは、5つなどの所定の数を超えない多数の開いているファイルを保持する。従って、ホストがその開いているファイルに書き込みを行ったデータは、そのFITレコードがブロック207内に記憶してあり、閉じているファイルのFITレコードはブロック209のうちの1つに記憶してある。   Whether an active file index block 207 or one of the inactive file index blocks 209 stores a FIT record for a particular file depends on whether the file is likely to be modified in the near future To do. If it is high, it is considered to be an active file holding the FIT record in block 207, and if not high, it is considered to be an inactive file holding the FIT record in one of blocks 209. It is done. If the memory system is operating with a host system that sends “open file” and “closed file” commands, the memory is active for all open files and inactive for all closed files. Is considered. Typically, a host using these commands maintains a number of open files that do not exceed a predetermined number, such as five. Thus, the data that the host wrote to the open file has its FIT record stored in block 207 and the FIT record of the closed file stored in one of blocks 209. .

しかし、ホストのなかには、開いているファイルコマンドおよび閉じているファイルコマンドをメモリシステムに送信しないものもある。この場合、ホストのファイルへのデータの書き込みを監視することにより、メモリシステムが、近い将来、ファイルの修正を行う可能性が高いかどうかを判定する。記憶ブロックの始端と終端との間のどこかで、ホストが新しいデータグループの書き込みを終えた場合、可能性が一番大きいと考えられるのは、ホストが、少なくとも少しの間、そのファイルへのデータの書き込みを終えたということである。しかし、記憶ブロックの終端に一致して、新しいデータグループが終わっている場合、ホストには、ファイルへ書き込みを行うデータがもっとあるという可能性が高いと考えられる。この場合、メモリシステムは、データグループが記憶ブロックの終端に一致して終わっていると定義する可能性が一番大きいので、ホストがファイルのデータの書き込みを完了したことを示すものではない。   However, some hosts do not send open file commands and closed file commands to the memory system. In this case, by monitoring the writing of data to the file on the host, it is determined whether or not the memory system is likely to modify the file in the near future. Somewhere between the beginning and end of a storage block, if the host has finished writing a new data group, the most likely possibility is that the host will write to that file for at least a short time. This means that the data has been written. However, if the new data group ends with the end of the storage block, it is likely that the host has more data to write to the file. In this case, the memory system is most likely to define that the data group ends with the end of the storage block, and does not indicate that the host has completed writing the file data.

直接データファイルインターフェイスシステムのファイルディレクトリ203は、システムがサポートしているファイルID毎に1つのエントリを含んでいる。装置がサポートしている連続するファイルID値に対応する連続するエントリのセットとして、ディレクトリを編成している。図20に示すように、指定のファイルIDのエントリには、特定の論理ページ内の特定のエントリ番号として直接アクセスすることができる。指定のファイルIDのエントリを探すのに、ディレクトリサーチを行う必要はない。   The file directory 203 of the direct data file interface system includes one entry for each file ID supported by the system. A directory is organized as a set of consecutive entries corresponding to consecutive file ID values supported by the device. As shown in FIG. 20, an entry with a specified file ID can be directly accessed as a specific entry number in a specific logical page. There is no need to perform a directory search to find an entry for a specified file ID.

ディレクトリエントリは、FITレコードを構成しているFITエントリの数とともに、ファイルのデータの索引付け情報を含んでいるFITレコードの位置を指定している。これを、フィールド217および219それぞれで図20に示す。フィールド217の内容が非アクティブファイルのレコードを指している場合、ファイルのFITレコードを記憶しているブロック209のうちの1つの位置の物理アドレスを含んでいる。しかし、ファイルがアクティブの場合、フィールド217は、以下で説明する、ファイルのFITエントリの更新または変更を行ったのと同じままになっている中間位置を指す、論理アドレスを含んでいる。   The directory entry designates the position of the FIT record including the indexing information of the file data, together with the number of FIT entries constituting the FIT record. This is shown in FIG. 20 for fields 217 and 219, respectively. If the contents of field 217 point to a record of an inactive file, it contains the physical address of one of the blocks 209 storing the file's FIT record. However, if the file is active, field 217 contains a logical address that points to an intermediate location that remains the same as the update or change of the file's FIT entry, described below.

ディレクトリはPページの論理ページから構成され、各ページはE個のディレクトリエントリから構成されている。従って、ディレクトリはP*Eファイルの容量がある。専用の1つ以上のブロックに、ディレクトリを記憶している。D個のディレクトリブロックが存在する場合、それぞれP/D論理ページを含み、P/D*Eファイルの容量がある。含んでいる論理ページの範囲に基づいて、ディレクトリブロックをDIR0からDIR(D−1)と指定する。装置に同時に存在した最大数のファイルから、ディレクトリブロックの数を求める。既存のブロックが割り当てられたファイルIDのエントリを含んでいない場合、ディレクトリブロックを加算する。しかし、サポートされているファイルの数が減る場合、ディレクトリを圧縮してもよい。   The directory is composed of logical pages of P pages, and each page is composed of E directory entries. Therefore, the directory has a capacity of a P * E file. Directories are stored in one or more dedicated blocks. When there are D directory blocks, each includes a P / D logical page and has a capacity of a P / D * E file. The directory block is designated as DIR0 to DIR (D-1) based on the range of the logical page included. The number of directory blocks is determined from the maximum number of files that existed simultaneously on the device. If the existing block does not include the assigned file ID entry, the directory block is added. However, the directory may be compressed if the number of supported files is reduced.

論理ページの更新を行うディレクトリブロックに用いられる一例の物理構造について、図21で説明する。(隣接する縦の点線の間の)各エントリは、ファイルIDのFITレコードの仕様、またはそのファイルIDのファイルが存在しないことを示すヌル値を含んでいる。ファイルのデータを含んでいるデータグループの数が、FITレコードの許可されている最大数のFITエントリを超えている場合、継続ファイルIDをファイルに割り当てて、継続FITレコードを利用できるようにする。継続ファイルIDを、ファイルに割り当てられた主ファイルIDのディレクトリエントリ内に指定する。ディレクトリは、専用の1つ以上のブロックに位置している。ディレクトリブロックの物理位置を、制御ブロックの制御ログ内のディレクトリブロックリストに定義する。   An example of a physical structure used for a directory block for updating a logical page will be described with reference to FIG. Each entry (between adjacent vertical dotted lines) contains a FIT record specification for a file ID or a null value indicating that no file with that file ID exists. If the number of data groups containing file data exceeds the maximum allowed number of FIT entries in the FIT record, a continuation file ID is assigned to the file so that the continuation FIT record can be used. The continuation file ID is specified in the directory entry of the main file ID assigned to the file. A directory is located in one or more dedicated blocks. The physical location of the directory block is defined in the directory block list in the control log of the control block.

図21に、以下の4つのフィールドを含む、ディレクトリエントリ225の説明図を示す。
1)FIT論理ブロック#(227):このフィールドにより、ターゲットファイルIDのFITレコードが位置するFIT論理ブロック番号の識別を行う。ディレクトリブロック内のFITブロックポインタの1つにより、対応する物理ブロックアドレスを定義している。一例の物理ポインタ229を、図21に示す。フィールド227が、FITブロックポインタの1つを指している。アクティブファイルインデックスブロック用に、FIT論理ブロックNを確保している。FIT論理ブロック番号の0の値は、装置にファイルが存在しないことを意味している。
2)FIT論理ページ#(231):このフィールドにより、ターゲットファイルIDのFITレコードが位置している、アクティブファイルインデックスブロック207または非アクティブFITブロック209(図19)内の論理ページ番号の識別を行う。アクティブファイルインデックスブロック207に記憶しているFITレコードの位置は(図19)、レコードが位置しているページの間接アドレスである。非アクティブFITプログラムブロック209aまたは非アクティブFITブロック209bの場合、ページの直接物理アドレスである。
3)FITページエントリ#(233):このフィールドにより、ターゲットファイルIDのFITレコードが始まるページ内の連続するエントリ番号の識別を行う。
4)FITエントリ#(235):このフィールド内の先頭ビットがゼロの場合、このフィールドがターゲットファイルIDのFITレコード内のFITエントリの数を指定する。このフィールド内の先頭ビットが1の場合、ターゲットファイルIDのFITエントリの数は、FITレコードで許可されているFITエントリの最大数を超えている。この場合、フィールドが、ファイルに用いられる継続ファイルIDを指定する。継続ファイルIDのディレクトリエントリでは、このフィールドが、ターゲットIDと継続ファイルIDとの両方のFITレコード内のFITエントリの総数を指定する。
FIG. 21 shows an explanatory diagram of the directory entry 225 including the following four fields.
1) FIT logical block # (227): This field identifies the FIT logical block number where the FIT record of the target file ID is located. The corresponding physical block address is defined by one of the FIT block pointers in the directory block. An example physical pointer 229 is shown in FIG. Field 227 points to one of the FIT block pointers. A FIT logical block N is reserved for the active file index block. A value of 0 in the FIT logical block number means that no file exists on the device.
2) FIT logical page # (231): This field identifies the logical page number in the active file index block 207 or inactive FIT block 209 (FIG. 19) where the FIT record of the target file ID is located. . The position of the FIT record stored in the active file index block 207 (FIG. 19) is the indirect address of the page where the record is located. In the case of the inactive FIT program block 209a or the inactive FIT block 209b, it is the direct physical address of the page.
3) FIT page entry # (233): This field identifies consecutive entry numbers in the page where the FIT record of the target file ID starts.
4) FIT entry # (235): If the first bit in this field is zero, this field specifies the number of FIT entries in the FIT record of the target file ID. When the first bit in this field is 1, the number of FIT entries of the target file ID exceeds the maximum number of FIT entries permitted in the FIT record. In this case, the field specifies the continuation file ID used for the file. In the continuation file ID directory entry, this field specifies the total number of FIT entries in both the target ID and continuation file ID FIT records.

ポインタ229の一例である図21のFITブロックポインタが、装置に存在するそれぞれのFIT論理ブロックを指定する。これらは、ディレクトリブロック内の最後にプログラミングが行われたページだけに有効なものである。装置に存在する各FIT論理ブロック#に対し、FITブロックポインタが存在する。以下の3つのフィールドが、FITブロックポインタに存在する。
1)FITブロックアドレス(237):このフィールドが、ディレクトリエントリ225のフィールド227のFIT論理ブロック#に現在割り当てられている物理ブロックアドレスを指定する。
2)有効なFITレコード#(239):このフィールドが、FIT論理ブロックに存在する有効なファイルの数を指定する。
3)使われなくなったFITエントリ#(241):このフィールドが、FIT論理ブロックに存在する使われなくなったFITエントリの数を指定する。
The FIT block pointer of FIG. 21, which is an example of the pointer 229, specifies each FIT logical block existing in the apparatus. These are only valid for the last programmed page in the directory block. There is a FIT block pointer for each FIT logical block # present in the device. The following three fields are present in the FIT block pointer.
1) FIT block address (237): This field specifies the physical block address currently assigned to the FIT logical block # in the field 227 of the directory entry 225.
2) Valid FIT record # (239): This field specifies the number of valid files present in the FIT logical block.
3) FIT entry # (241) no longer used: This field specifies the number of FIT entries no longer in use present in the FIT logical block.

ディレクトリ論理ページポインタ243(図21)は、ディレクトリブロックの論理対物理ページマッピングとして機能する。1つのポインタが、ブロック内の各論理ページに対して存在し、論理ページの現在の物理ページアドレスを指定する。ディレクトリページポインタエントリは、ディレクトリブロック内の直近にプログラミングを行った物理ページにだけ有効なものである。   The directory logical page pointer 243 (FIG. 21) functions as a logical to physical page mapping of the directory block. One pointer exists for each logical page in the block and specifies the current physical page address of the logical page. Directory page pointer entries are only valid for the most recently programmed physical page in the directory block.

論理ページの単位で、ディレクトリの更新を行う。1つのプログラミング動作で、論理ページ内の任意の数のエントリの更新を行ってもよい。ページの読み出しを行って、1つ以上のエントリの更新を行い、ディレクトリブロックの次に利用可能な消去ページで再プログラミングを行ってもよい。ディレクトリページポインタおよびFITブロックポインタの再プログラミングを同時に行って、すべてのフィールドの現在の値を指定する。   Update the directory in units of logical pages. Any number of entries in the logical page may be updated in one programming operation. The page may be read to update one or more entries and reprogrammed with the next available erase page in the directory block. The directory page pointer and FIT block pointer are reprogrammed simultaneously to specify the current values of all fields.

ディレクトリブロックの最後のページに対しプログラミングを行った場合、ブロックを圧縮し、消去ブロックに書き換えを行う。これが、新しいディレクトリブロックになる。使われなくなったディレクトリブロックを消去する前に、ディレクトリページポインタが定義するように、有効なページをすべて消去ブロックにコピーすることにより、圧縮を行う。   When programming is performed on the last page of the directory block, the block is compressed and rewritten into an erase block. This becomes a new directory block. Before erasing a directory block that is no longer in use, compression is performed by copying all valid pages to the erase block as defined by the directory page pointer.

ファイルディレクトリが指すファイルインデックステーブル(FIT)は、FITエントリストリングを含んでいる。各FITエントリにより、ファイルオフセットアドレスおよびデータグループのフラッシュメモリ内の物理位置の識別を行う。好ましくは、FITは、装置に記憶してあるファイルの有効なデータグループすべてのエントリを含んでいる。使われなくなったデータグループについては、FITが索引付けを行う必要はない。ファイル内のデータグループのFITエントリのセットを、オフセットアドレスの順で、連続するエントリとしてファイルに保持する。FITレコードとして、エントリのセットがわかっている。FITを、アクティブファイルのインデックスブロックとともにFITブロックのセットに保持する。装置のデータグループの数により、FITブロックの数は変化する。装置の動作の間に、新しいFITブロックを生成して、FITブロックを削除する。   The file index table (FIT) pointed to by the file directory includes a FIT entry string. Each FIT entry identifies the file offset address and the physical location of the data group in the flash memory. Preferably, the FIT contains entries for all valid data groups of files stored on the device. Data groups that are no longer used need not be indexed by the FIT. A set of FIT entries of data groups in the file is held in the file as consecutive entries in the order of offset addresses. A set of entries is known as a FIT record. The FIT is held in a set of FIT blocks along with the active file index block. The number of FIT blocks varies depending on the number of data groups in the device. During the operation of the device, a new FIT block is created and the FIT block is deleted.

FITの論理構造の一例を、図22に示す。ファイルのディレクトリエントリのFITブロックアドレス237およびFIT論理ページ#231(図21)により、特定のファイルのFITレコード247を検出する。FITレコードはそれぞれ、ファイル内のデータグループの連続するFITエントリのセットを含んでいる。好ましくは、そのセットのエントリは、ファイルオフセットアドレスの順に連続している。   An example of the logical structure of FIT is shown in FIG. The FIT record 247 of a specific file is detected from the FIT block address 237 of the directory entry of the file and the FIT logical page # 231 (FIG. 21). Each FIT record contains a set of consecutive FIT entries for a data group in the file. Preferably, the set entries are consecutive in the order of file offset addresses.

好ましくは、ファイルの各FITレコードは、FITレコードの第1のエントリとして、FITヘッダ249(図22)を含んでいる。FITヘッダの固定長は、整数のFITエントリに等しい。FITヘッダの3つのフィールドは以下のとおりである。
1)ファイルID:ファイルIDにより、ディレクトリ内のファイルのエントリの識別を行う。
2)プログラムブロック:FITに更新したバージョンのFITレコードの書き込みを行うときは必ず、FITヘッダにファイルのプログラムブロックの現在の物理位置を記録する。ホストがファイルを再び開くときに、これを用いることにより、ファイルのプログラムブロックを検出する。プログラムブロックの統合に選択した、FITレコードとファイルのプログラムブロックとの対応関係の検査を行うのに利用してもよい。
3)プログラムポインタ:FITに更新したバージョンのFITレコードの書き込みを行うときは必ず、FITヘッダにファイルのプログラムブロック内のプログラムポインタの現在の値を記録する。ホストがファイルを再び開くとき、あるいはプログラムブロック統合にプログラムブロックを選択したときに、これを用いることにより、ファイルのプログラムブロック内でデータのプログラミングを行う位置を定義する。
Preferably, each FIT record of the file includes a FIT header 249 (FIG. 22) as the first entry of the FIT record. The fixed length of the FIT header is equal to an integer FIT entry. The three fields of the FIT header are as follows:
1) File ID: The file ID in the directory is identified by the file ID.
2) Program block: When the updated version of the FIT record is written to the FIT, the current physical position of the program block of the file is recorded in the FIT header. When the host reopens the file, it is used to detect the program block of the file. It may be used to check the correspondence between the FIT record and the program block of the file selected for program block integration.
3) Program pointer: When writing an updated version of the FIT record in the FIT, the current value of the program pointer in the program block of the file is recorded in the FIT header. When the host reopens the file or selects a program block for program block integration, this is used to define the location for programming data within the program block of the file.

典型的には、ファイルのFITレコードには、ファイルを構成するデータグループの物理位置を指定する多数のエントリがさらにある。一例のファイルに対する1つのFITエントリ251を、他のものとともに図22に示す。各FITエントリには以下の4つのフィールドがある。
1)オフセットアドレス:オフセットアドレスは、データグループの最初のバイトに関連する、ファイル内のバイト表示のオフセットである。
2)長さ:これにより、データグループ内のファイルデータ長さをバイト表示で定義する。完全なデータグループの長さは、データグループヘッダの長さの分だけ、この値よりも長い。
3)ポインタ:これは、データグループが始まるフラッシュブロック内の位置を示すポインタである。ポインタには、(1)データグループを含んでいる物理ブロックを定義するブロックアドレスと、(2)データグループが始まるブロック内のバイトオフセットを定義するバイトアドレスの2つのサブフィールドがある。このアドレスは、データグループヘッダを含んでいる。
4)EOFフラグ:EOFフラグは、データファイルの終端のデータグループの識別を行う1つのビットである。
Typically, a file's FIT record also has a number of entries that specify the physical location of the data groups that make up the file. One FIT entry 251 for an example file is shown in FIG. 22 along with others. Each FIT entry has the following four fields:
1) Offset address: The offset address is the byte representation offset within the file associated with the first byte of the data group.
2) Length: This defines the file data length in the data group in bytes. The length of the complete data group is longer than this value by the length of the data group header.
3) Pointer: This is a pointer indicating the position in the flash block where the data group begins. The pointer has two subfields: (1) a block address that defines the physical block that contains the data group, and (2) a byte address that defines the byte offset within the block where the data group begins. This address includes a data group header.
4) EOF flag: The EOF flag is one bit for identifying the data group at the end of the data file.

図23は、アクティブファイルインデックスブロック207(図18および図19)の物理フォーマットを示す。アクティブファイル専用のインデックスブロック内で、アクティブファイルのFITレコードの更新が行われている。ブロックのページ毎に1つ以上のエントリのFITレコード1つだけ記憶し、論理FITレコードの間接アドレス指定を行うことにより、アクティブファイルインデックスブロックに、FITレコードの更新を容易に行うことが可能になる。論理FITレコードの更新を行う際に、次に利用可能な消去ページの全体に書き換えを行って、この直近でプログラミングを行ったページのFITページポインタのセットにより、論理ページ対物理ページのマッピングを行う。システムで同時にアクティブとなるファイル毎に、1つの論理FITレコードが存在する。   FIG. 23 shows the physical format of the active file index block 207 (FIGS. 18 and 19). In the index block dedicated to the active file, the FIT record of the active file is updated. By storing only one FIT record of one or more entries for each page of the block and performing indirect addressing of the logical FIT record, it becomes possible to easily update the FIT record in the active file index block. . When the logical FIT record is updated, the entire available erase page is rewritten, and the logical page to physical page is mapped by setting the FIT page pointer of the page that has been programmed recently. . There is one logical FIT record for each file that is simultaneously active in the system.

前述したように、ディレクトリエントリ内の対応するFIT論理ブロック#227がアクティブファイルインデックスブロックに関係する場合、ファイルのファイルディレクトリエントリ内のFIT論理ページ#231(図21)が、論理FITレコードを指定する。ファイルのファイルディレクトリエントリの更新を行う必要なく、アクティブファイルインデックスブロックに、論理FITレコードの更新および書き換えを行う。FIT論理ページ#231はFITレコードの間接アドレスであり、更新したFITレコードを含んでいるページの一部として、FIT論理ページポインタ255のセットのうちの1つが更新および書き換えを行った物理ページに対し、マッピングを行う。   As described above, when the corresponding FIT logical block # 227 in the directory entry relates to the active file index block, the FIT logical page # 231 (FIG. 21) in the file directory entry of the file specifies the logical FIT record. . The logical FIT record is updated and rewritten in the active file index block without the need to update the file directory entry of the file. FIT logical page # 231 is an indirect address of the FIT record. As a part of the page including the updated FIT record, one of the sets of FIT logical page pointers 255 is updated and rewritten with respect to the physical page. , Mapping.

アクティブファイルインデックスブロック207の直近にプログラミングが行われたページ内のFITページポインタ255のセット(図23)は、有効なバージョンの論理FITレコードが配置されている物理ページを指定する。FITページポインタのヌル値は、アクティブファイルインデックスブロック内のFIT論理ページ#が割り当てられていないことを意味している。装置に同時に存在するアクティブファイル毎に、FITページポインタフィールドが1つ存在する。   A set of FIT page pointers 255 (FIG. 23) in a page programmed immediately after the active file index block 207 specifies a physical page on which a valid version of the logical FIT record is located. A null value of the FIT page pointer means that the FIT logical page # in the active file index block is not allocated. There is one FIT page pointer field for each active file that exists simultaneously on the device.

アクティブファイルインデックスブロックの最後のページに対しプログラミングを行う場合、ブロックを圧縮し、消去ブロックに書き換えを行うと、新しいアクティブファイルインデックスブロックになる。使われなくなったアクティブファイルプログラムブロックの消去を行う前に、FITページポインタが定義したように、有効なページをすべて、消去ブロックにコピーすることにより、圧縮を行う。   When programming the last page of an active file index block, compressing the block and rewriting it into an erase block results in a new active file index block. Before erasing an active file program block that is no longer used, compression is performed by copying all valid pages to the erase block as defined by the FIT page pointer.

閉じることでアクティブファイルが非アクティブになったり、以下に説明する非アクティブFITプログラムブロックにそのFITレコードをコピーしたりすると、アクティブFITブロック内のFITレコードのデータが使われなくなる。   When the active file becomes inactive by closing or the FIT record is copied to an inactive FIT program block described below, the data of the FIT record in the active FIT block is not used.

非アクティブFITブロックが、現在アクティブであるファイルの他に、メモリシステムに記憶してあるデータファイルすべてのFITレコードの記憶領域となる。1つのFITプログラムブロックが、FITブロック内のFITレコードのプログラミングを行う手段となる。図24を参照して、非アクティブファイルFITプログラムブロック209a(図19)の詳細を示す。非アクティブFITプログラムブロック内の全ページに対しプログラミングを行った場合、これが非アクティブFITブロック209bになり、消去ブロックを新しい非アクティブFITプログラムブロックとして割り当てる。   The inactive FIT block becomes a storage area for FIT records of all data files stored in the memory system in addition to the currently active file. One FIT program block is a means for programming the FIT record in the FIT block. Referring to FIG. 24, details of the inactive file FIT program block 209a (FIG. 19) are shown. When programming is performed on all pages in the inactive FIT program block, this becomes the inactive FIT block 209b, and the erase block is assigned as a new inactive FIT program block.

図24に示すように、ディレクトリから直接、非アクティブFITプログラムブロック内の各FITレコードのアドレス指定を行う。ディレクトリエントリ内のFIT論理ページ#231(図21)が、非アクティブFITプログラムブロック内の物理ページを直接指し、ディレクトリエントリ内のFITページエントリ#233が、FITレコードの始点の識別を行う。複数のFITレコードを、非アクティブFITプログラムブロック内の1ページに記憶してもよい。   As shown in FIG. 24, addressing of each FIT record in the inactive FIT program block is performed directly from the directory. The FIT logical page # 231 (FIG. 21) in the directory entry directly points to the physical page in the inactive FIT program block, and the FIT page entry # 233 in the directory entry identifies the start point of the FIT record. Multiple FIT records may be stored on one page in the inactive FIT program block.

好ましくは、図20に示すように、図24の非アクティブFITプログラムブロックのページ内のFITレコードすべてに、ディレクトリの同じ論理ページ内のディレクトリエントリがなければならないようにする。これにより、ディレクトリブロック内で1つのプログラム動作で、非アクティブFITプログラムブロックページ内のFITレコードすべてのディレクトリエントリの更新を行うことが可能になる。   Preferably, as shown in FIG. 20, all FIT records in the page of the inactive FIT program block of FIG. 24 must have a directory entry in the same logical page of the directory. This makes it possible to update the directory entries of all the FIT records in the inactive FIT program block page by one program operation in the directory block.

開くことでファイルがアクティブになったり、アクティブファイルインデックスブロック内でそのFITレコードを生成したり、またはファイルを削除したりする場合、非アクティブFITプログラムブロック内のFITレコードはすべて使われなくなる。   If the file becomes active by opening, its FIT record is generated in the active file index block, or the file is deleted, all the FIT records in the inactive FIT program block are not used.

図24の非アクティブFITプログラムブロックの最後のページに対しプログラミングを行った場合、非アクティブFITブロック209b(図19)を生成する。   When programming is performed on the last page of the inactive FIT program block of FIG. 24, an inactive FIT block 209b (FIG. 19) is generated.

図25は、FITレコードの一例の動作を示す。1つのこのような動作261により、アクティブファイルにデータの書き込みが行われる。アクティブファイルにデータの書き込みが行われているときに、時折、ファイルデータのプログラミングを行うアルゴリズムがFITの更新を要求する。アクティブファイルインデックスブロック207に、書き込みが行われているファイルの更新FITレコードのプログラミングを行う。前述した図23に示すように、アクティブファイルインデックスブロック内の論理FITレコードに間接アドレス指定方法を用いているので、ファイルのディレクトリエントリの更新を行う必要はない。   FIG. 25 shows an example of the operation of the FIT record. One such operation 261 writes data to the active file. When data is being written to the active file, an algorithm for programming the file data occasionally requests an FIT update. Programming the update FIT record of the file being written to the active file index block 207. As shown in FIG. 23 described above, since the indirect addressing method is used for the logical FIT record in the active file index block, it is not necessary to update the directory entry of the file.

既存の非アクティブデータファイルまたは新しいデータファイルを開いたり、アクティブにしたりした場合、図25に機能263として示すように、ブロック内のFITページポインタフィールドでそのポインタの書き込みを行うことにより(図23を参照)、アクティブファイルインデックスブロック207に論理FITレコードを割り当てる。ファイルが既存のファイルの場合、そのFITレコードも、アクティブファイルインデックスブロック207からFITブロック209bまたはFITプログラムブロック209a内のその既存の位置に移動する。アクティブファイルインデックスブロック207内の1回のページプログラミング動作で、FITページポインタフィールドおよびFITレコードの書き込みを行ってもよい。開いているファイルまたはアクティブになっているファイルのディレクトリエントリを更新するためにはディレクトリ内で1ページだけ更新を行うだけでよい。   When an existing inactive data file or a new data file is opened or activated, as shown as function 263 in FIG. 25, the pointer is written in the FIT page pointer field in the block (see FIG. 23). The logical FIT record is assigned to the active file index block 207. If the file is an existing file, its FIT record is also moved from the active file index block 207 to its existing location in the FIT block 209b or FIT program block 209a. The FIT page pointer field and the FIT record may be written in one page programming operation in the active file index block 207. To update a directory entry for an open file or an active file, only one page in the directory needs to be updated.

図25の265に、データファイルが閉じている状態を示す。ファイルを閉じて、アクティブファイルが非アクティブになった場合、アクティブファイルインデックスブロック207からFITプログラムブロック209aにそのFITレコードを移動する。FITプログラムブロック209aに、このFITレコードを含んでいるページのプログラミングを行った場合、好ましくは、同じディレクトリページに関連するできるだけ多くのFITレコードを、FITブロックからFITプログラムブロック209aの同じページに移動する。これにより、使われなくなったFITエントリを含んでいるFITブロックのガーベッジコレクション機構となる。すでに含まれている使われなくなったFITエントリの数に基づいて、このようなFITレコードを移動するためのソースFITブロックを選択する必要がある。使われなくなったFITエントリの数が最も高いFITブロックに、最も高い優先順位を与える。好ましくは、定義済みの数の使われなくなったFITエントリより少ない数のFITブロックからは、FITレコードを移動しない。   A state 265 in FIG. 25 shows a state where the data file is closed. When the file is closed and the active file becomes inactive, the FIT record is moved from the active file index block 207 to the FIT program block 209a. If the FIT program block 209a is programmed with a page containing this FIT record, preferably as many FIT records associated with the same directory page are moved from the FIT block to the same page of the FIT program block 209a. . This provides a garbage collection mechanism for FIT blocks containing FIT entries that are no longer used. Based on the number of unused FIT entries already included, it is necessary to select a source FIT block for moving such FIT records. The highest priority is given to the FIT block having the highest number of FIT entries that are no longer used. Preferably, FIT records are not moved from a smaller number of FIT blocks than a predefined number of unused FIT entries.

最後にプログラミングが行われたディレクトリページ内のFITブロックポインタフィールドに、FITブロック内の使われなくなったFITエントリの数を定義する。ディレクトリページに対しプログラミングを行って、移動したFITレコードのエントリの更新と、FITブロックポインタおよびディレクトリページポインタフィールド内のパラメータの更新を行う必要がある。アクティブファイルインデックスブロックページに対しプログラミングを行って、ブロックから移動した論理FITレコードのFITページポインタにヌルエントリを挿入する必要がある。   The number of unused FIT entries in the FIT block is defined in the FIT block pointer field in the directory page where programming was performed last. It is necessary to program the directory page to update the entry of the moved FIT record and update the parameters in the FIT block pointer and directory page pointer fields. It is necessary to program the active file index block page and insert a null entry into the FIT page pointer of the logical FIT record moved from the block.

ガーベッジコレクション動作267(図25)は、FITブロックのガーベッジコレクション、またはデータファイルやデータブロックのガーベッジコレクションのいずれかに関連することができる。まず、FITブロック209bのうちの1つのガーベッジコレクションについて説明する。FITブロックの消去動作は、使われなくなったFITエントリが占有する容量を回収するために、時折行う必要がある。FITブロックの消去を行う前に、有効なFITレコードすべてを、FITブロック209bからFITプログラムブロック209aに移動する。ファイルを非アクティブにする前述した処理を行っても、有効なFITレコードすべてを移動することにはならない。従って、FITガーベッジコレクション処理を行って、有効なFITレコードすべてを消去するFITブロックから移動することが望ましい。   Garbage collection operation 267 (FIG. 25) may relate to either garbage collection of FIT blocks or garbage collection of data files or data blocks. First, garbage collection of one of the FIT blocks 209b will be described. The erase operation of the FIT block needs to be performed occasionally in order to recover the capacity occupied by the FIT entry that is no longer used. Prior to erasing the FIT block, all valid FIT records are moved from the FIT block 209b to the FIT program block 209a. Performing the process described above for deactivating a file does not move all valid FIT records. Therefore, it is desirable to move from the FIT block that performs the FIT garbage collection process and erases all valid FIT records.

好ましくは、使われなくなったFITエントリの数が最も高いFITブロックを、FITガーベッジコレクションブロックとして指定し、次に、有効なFITレコードすべてを移動するまで、このブロックにFITガーベッジコレクション動作を行う必要がある。次に、別のFITブロックを、FITガーベッジコレクションブロックとして指定する。FITガーベッジコレクションブロックのページを選択してFITプログラムブロックに移動し、利用可能ならば、同じディレクトリページに関連するFITガーベッジコレクションブロックからの他のFITレコードで、ページを埋める。プログラミングを行うページにまだ空間がある場合、他のFITブロックからのFITレコードでさらに埋めてもよい。関連するディレクトリページ内のエントリに基づいて、選択したページとともに移動する他のFITレコードの選択を行う必要がある。   Preferably, the FIT block with the highest number of FIT entries that are no longer used must be designated as the FIT garbage collection block and then FIT garbage collection operations must be performed on this block until all valid FIT records are moved. is there. Next, another FIT block is designated as the FIT garbage collection block. Select a page of the FIT garbage collection block to go to the FIT program block and, if available, fill the page with other FIT records from the FIT garbage collection block associated with the same directory page. If there is still space on the page to be programmed, it may be further filled with FIT records from other FIT blocks. Based on the entries in the associated directory page, it is necessary to make a selection of other FIT records that move with the selected page.

好ましくは、ディレクトリページに対しプログラミングを行って、移動したFITレコードのエントリの更新、FITブロックポインタおよびディレクトリページポインタフィールド内のパラメータの更新を行う。望ましくは、FITガーベッジコレクション動作のスケジュールをたてて、データガーベッジコレクション動作を行うのと同時に、定期的に行う。データガーベッジコレクションのページプログラム動作をN回行う毎に、FITガーベッジコレクションのページプログラム動作を1回行う。   Preferably, programming is performed on the directory page to update the entry of the moved FIT record and update the parameters in the FIT block pointer and directory page pointer fields. Preferably, the FIT garbage collection operation is scheduled and performed at the same time as the data garbage collection operation. Each time the data garbage collection page program operation is performed N times, the FIT garbage collection page program operation is performed once.

ここで、データファイルまたはデータブロックのガーベッジコレクション267について説明する。データガーベッジコレクション動作により、閉じたファイルまたは非アクティブになったファイルのFITレコードの更新が必要となる。これを、必要な更新を組み込んで、FITレコードをFITブロックからFITプログラムブロックに移動することにより実行する。好ましくは、FITプログラムブロックにプログラミングが行われているページを、同じディレクトリページに関連する他のFITレコードで埋める。   Here, the garbage collection 267 of the data file or data block will be described. Data garbage collection operations require the FIT record of a closed or inactive file to be updated. This is done by incorporating the necessary updates and moving the FIT record from the FIT block to the FIT program block. Preferably, the page in which the FIT program block is programmed is filled with other FIT records associated with the same directory page.

具体的なファイル索引付けを行う第2の実施形態
ファイルIDが識別したファイルオブジェクト内の直接データファイルメモリシステムに、データの書き込みを行って、論理オフセットアドレスにより、ファイルオブジェクト内にファイルのアドレス指定を行う。データを、データセットグループとして記憶する。グループはそれぞれ、連続する論理オフセットアドレスおよび連続する物理位置を有している。ファイル索引付けにより、ファイルIDおよび論理オフセットアドレスをデータグループの位置と関係付ける。
Second Embodiment Performing Specific File Indexing Data is written to the direct data file memory system in the file object identified by the file ID, and the file address is specified in the file object by the logical offset address. Do. Data is stored as a data set group. Each group has a contiguous logical offset address and a contiguous physical location. File indexing associates file IDs and logical offset addresses with data group locations.

ディレクトリにより、ファイルオブジェクトのインデックスエントリのファイルインデックステーブル(FIT)内の位置を直接定義する。通常、直接索引付けを用いるが、間接索引付け方法も用いることにより、結果として行う必要があるファイルディレクトリの修正を行わずに、あるファイルのインデックスエントリが頻繁に修正可能になる。ファイル索引付けも、やはりファイルデータからの別々のファイル属性情報の記憶をサポートする。   The directory directly defines the position of the file object index entry in the file index table (FIT). Typically, direct indexing is used, but the indirect indexing method is also used, so that index entries for a file can be frequently modified without modifying the file directories that need to be done as a result. File indexing also supports storing separate file attribute information from file data.

DFS装置内のファイルは、1つの論理IDを有するデータオブジェクトである。数値ファイルIDによりファイルの識別を行い、ファイル内のデータをオフセットアドレスで識別する。   A file in the DFS device is a data object having one logical ID. A file is identified by a numerical file ID, and data in the file is identified by an offset address.

ホストからのコマンドに応答して、DFS装置がファイルID値の割り当てを行って、ファイルオブジェクトを生成する。DFSシステムがファイル索引付けを行って、各ファイルオブジェクト内のデータの物理位置と、各ファイルオブジェクトの属性の物理位置とを追跡する。   In response to the command from the host, the DFS apparatus assigns a file ID value and generates a file object. The DFS system performs file indexing to track the physical location of the data within each file object and the physical location of the attributes of each file object.

ファイル索引付けの階層を、図26に示す。ファイルのディレクトリエントリは、3つの主なフィールドである、一意のファイルIDと、メモリ内の他のアドレスを示す2つのポインタとを含んでいる。ポインタ1は、FIT内のそのファイルIDのあるファイルのFITレコードを指し、ポインタ2は、ファイルのファイル属性レコード(ATR)を指す。好ましくは、ディレクトリ、FIT、ATRを、フラッシュメモリ内の別々のセットのブロックに記憶する。   The file indexing hierarchy is shown in FIG. A directory entry for a file includes three main fields: a unique file ID and two pointers that point to other addresses in memory. The pointer 1 points to the FIT record of the file having the file ID in the FIT, and the pointer 2 points to the file attribute record (ATR) of the file. Preferably, the directory, FIT, ATR are stored in separate sets of blocks in the flash memory.

ディレクトリは、装置に存在するファイルオブジェクト毎に1つエントリを含んでいる。範囲がそれぞれ別々のページに割り当てられた、ファイルID値の重複しない範囲に、エントリを記憶する。ファイルID値に基づいて、範囲内のエントリは順序づけられている。ページ内の1ページの読み出しと、バイナリサーチを行うことにより、目的とするファイルIDのディレクトリエントリを検出することができる。   The directory contains one entry for each file object that exists in the device. Entries are stored in ranges where the file ID values do not overlap each other and the ranges are assigned to different pages. Based on the file ID value, the entries within the range are ordered. By reading one page in the page and performing a binary search, the directory entry of the target file ID can be detected.

占有する空間を最小限にするために、エントリにより、それぞれディレクトリに直接ファイルインデックステーブル(FIT)のアドレス指定を行う。これは、ページに編成したファイルオブジェクトを記述する、レコードの集まりから構成されている。同じまたは別のFITブロックのプログラミングを行わない位置にページを移動する、読み出し/修正/書き込み動作により、FIT内の1ページのレコードの更新を行う。FIT内の1ページのレコードはすべて、ディレクトリ内の同じページのエントリに関連しているので、FITページの更新を行うと、結果として、1つのディレクトリページを1ページだけ修正することが必要になる。   In order to minimize the occupied space, the file index table (FIT) is directly addressed to each directory by entry. It consists of a collection of records that describe file objects organized into pages. The record of one page in the FIT is updated by a read / modify / write operation that moves the page to a position where the same or another FIT block is not programmed. All records of a page in the FIT are related to the same page entry in the directory, so updating the FIT page results in the need to modify only one page of a directory page. .

個別の一時ファイルインデックステーブル(TFIT)ブロックを用いて、近い将来修正することになるFITレコードを記憶することができる。ファイルオブジェクトのレコードをTFIT内の論理ページに記憶して、ディレクトリエントリにより、間接アドレス指定を行う。ディレクトリの更新を行う必要なく、TFIT内のレコードを修正することが可能である。   A separate temporary file index table (TFIT) block can be used to store FIT records that will be modified in the near future. The record of the file object is stored in a logical page in TFIT, and indirect addressing is performed by a directory entry. It is possible to modify the record in the TFIT without having to update the directory.

ファイルIDにより識別したファイルオブジェクトに対し、ファイル属性レコード(ATR)を記憶する。属性レコードの内容はホストシステムが定義済みで、メモリシステムは解釈を行わない。一般に、ホストがメモリシステムとともに動作するのに重要または役に立つと考えられる場合は必ず、ホストはファイルオブジェクトの属性をATRに記憶することが可能である。ファイル属性の索引付け方法は、ファイルインデックステーブルを用いる場合と同じである。   A file attribute record (ATR) is stored for the file object identified by the file ID. The contents of the attribute record are predefined by the host system and are not interpreted by the memory system. In general, whenever the host is deemed important or useful to operate with the memory system, the host can store the attributes of the file object in the ATR. The file attribute indexing method is the same as when using the file index table.

直接データファイルメモリシステムに用いられる一例のファイル索引付け構造のセットを、図27に示す。ファイルディレクトリDIRは、ファイルIDにより識別したファイルオブジェクトを記述しているエントリの集まりを含んでいる。メモリシステムに存在するファイルオブジェクト毎に1つ、DIRにエントリがある。DIRは、1つ以上の専用DIRブロックに含まれている。   An example set of file indexing structures used in a direct data file memory system is shown in FIG. The file directory DIR includes a collection of entries describing file objects identified by file IDs. There is an entry in the DIR, one for each file object that exists in the memory system. The DIR is included in one or more dedicated DIR blocks.

各DIRブロックは、固定数の論理ページを含んでいる。次に利用可能な物理ページに書き換えを行うことにより、それぞれの更新を行う。有効なDIRエントリを含んでいるページを論理ページ番号に割り当てる。DIRブロック内の論理ページの数を、1ブロック内の物理ページの数の25%となるように指定する。   Each DIR block contains a fixed number of logical pages. Each update is performed by rewriting the next available physical page. Assign a page containing a valid DIR entry to a logical page number. The number of logical pages in the DIR block is specified to be 25% of the number of physical pages in one block.

DIRブロックの最後のページの書き込みを行った後で、消去ブロックに有効なページすべての書き込みを行って、もともとのDIRブロックの消去を行うことにより、ブロックを圧縮する。   After writing the last page of the DIR block, the block is compressed by writing all valid pages in the erase block and erasing the original DIR block.

DIRページは、ファイルID値の順で、DIRエントリのセットを含んでいる。有効なDIRエントリは、DIRページ内の連続するセットのエントリ位置を占有しているが、完全にページを埋める必要はない。セット内には使われなくなったエントリがなくなり、ファイルID値が連続している必要はない。DIRページ内のファイルID値の範囲は、他のDIRページ内のファイルID値の範囲と重複していない。   The DIR page includes a set of DIR entries in order of file ID values. A valid DIR entry occupies a contiguous set of entry positions within a DIR page, but does not need to completely fill the page. There are no more unused entries in the set, and the file ID values do not have to be contiguous. The range of file ID values in a DIR page does not overlap with the range of file ID values in other DIR pages.

新しいファイルのエントリの挿入が必要な場合、新しいブロックのファイルID値を含むファイルID範囲があるDIRページを、DIRインデックス内の情報から識別する。ファイルID範囲内の適切位置に新しいエントリを挿入し、DIRページの書き換えを行う。エントリの移動が必要な場合、エントリなしでDIRページを圧縮して、書き換えを行う。   If it is necessary to insert a new file entry, the DIR page with the file ID range containing the file ID value of the new block is identified from the information in the DIR index. A new entry is inserted at an appropriate position within the file ID range, and the DIR page is rewritten. When the entry needs to be moved, the DIR page is compressed without any entry and rewritten.

満杯になったDIRページにさらに追加を行う場合、フリーの論理ページを新しいDIRページとして割り当て、満杯になったDIRページのファイルID範囲を2つのほぼ等しい重複しない範囲に分割し、2つの利用可能なDIRページに書き込みを行う。   When adding further to a full DIR page, assign a free logical page as a new DIR page, split the file ID range of the full DIR page into two approximately equal non-overlapping ranges, and two available Write to the correct DIR page.

隣接するファイルID範囲がある2つのDIRページの有効なエントリの総数が、DIRページ内のエントリ位置の数の70%を下回る場合、2つのDIRページの範囲を統合して、2つのDIRページのうちの1つに書き込みを行う。そして、他の使われていないページがフリーの論理ページになる。   If the total number of valid entries in two DIR pages with adjacent file ID ranges is less than 70% of the number of entry positions in the DIR page, the two DIR page ranges are merged to Write to one of them. Then, other unused pages become free logical pages.

図27のDIRブロックのDIRエントリは、3つのフィールドを含んでいる。
1)ファイルID
2)FITレコードを示すポインタ(ポインタにより、FITレコードのFITページ論理識別子およびバイトオフセットを定義する。具体例では、FITページ論理識別子が、同じDIRページ内のエントリが参照する、16ページまでの個別のFITページのうちの1つの識別を行う。これを、エントリを含んでいるDIRページ内のFITインデックスフィールドにより、物理ブロックアドレスおよびページ番号に変換する。バイトオフセットにより、識別されたFITページ内のFITレコードの位置の識別を行う。あるいは、ポインタがTFITを示してもよい。FITレコードがTFITにあることと、ポインタがTFIT内の論理ページを定義することを示すように、ポインタ内の保留ビットを設定する。)
3)ファイル属性レコードを示すポインタ(ポインタが、ATRレコードのATRページ論理識別子およびバイトオフセットを定義する。具体例では、ATRページ論理識別子により、DIRページ内のエントリが参照する、16ページまでの個別のATRページのうちの1つの識別を行う。これを、エントリを含んでいるDIRページ内のFITインデックスフィールドにより、物理ブロックアドレスおよびページ番号に変換する。バイトオフセットにより、識別したATRページ内のATRレコードの位置の識別を行う。)
The DIR entry of the DIR block of FIG. 27 includes three fields.
1) File ID
2) Pointer indicating the FIT record (the FIT page logical identifier and byte offset of the FIT record are defined by the pointer. In the specific example, the FIT page logical identifier is an individual up to 16 pages referenced by an entry in the same DIR page. Is identified by a FIT index field in the DIR page containing the entry, and is converted to a physical block address and page number by a byte offset in the identified FIT page. Identify the location of the FIT record, or the pointer may indicate TFIT, a pending bit in the pointer to indicate that the FIT record is in TFIT and that the pointer defines a logical page in TFIT Set.)
3) Pointer indicating the file attribute record (the pointer defines the ATR page logical identifier and byte offset of the ATR record. In the specific example, the ATR page logical identifier refers to the individual up to 16 pages referenced by the entry in the DIR page. One of the ATR pages is converted to the physical block address and page number by the FIT index field in the DIR page containing the entry, and the ATR in the identified ATR page by the byte offset. (Identify the position of the record.)

有効なDIRページごとに、有効なFITインデックスフィールドが個別に存在する。これを用いることにより、FITページの論理識別子を、FITページが位置する物理ブロックアドレスおよびページ番号に変換する。FITレコードを示すページのエントリ内で用いられる論理識別子毎に、エントリを1つ含んでいる。   There is a separate valid FIT index field for each valid DIR page. By using this, the logical identifier of the FIT page is converted into a physical block address and a page number where the FIT page is located. One entry is included for each logical identifier used in the entry of the page indicating the FIT record.

有効なDIRインデックスフィールドは、直近に書き込みが行われたDIRページだけに存在する。前に書き込みが行われたDIRページすべてのフィールド内の情報が使われなくなる。その目的は、DIRエントリの順序と、論理ページの物理ページへのマッピングとをサポートすることである。   A valid DIR index field is present only on the most recently written DIR page. Information in the fields of all previously written DIR pages is no longer used. Its purpose is to support the order of DIR entries and the mapping of logical pages to physical pages.

DIRインデックスは、論理ページ番号に基づいて順序づけられた考えられる論理ページ毎に、エントリを1つ含んでいる。各エントリには3つのフィールドがある。
1.論理ページの割り当て状態フラグ
2.ページ内の第1のエントリに関連するファイルID(これにより、各DIRページ内のファイルID値の範囲を設定してキャッシュを行うことが可能になる。)
3.論理ページのマッピングを行うDIR内の物理ページを示すポインタ
The DIR index contains one entry for each possible logical page ordered based on the logical page number. Each entry has three fields.
1. 1. Logical page allocation status flag File ID associated with the first entry in the page (this allows caching by setting the range of file ID values in each DIR page)
3. Pointer indicating a physical page in the DIR that performs logical page mapping

図27のFITは、レコードの集まりを含んでいる。それぞれ、制御データおよびファイルIDにより識別したファイルオブジェクトのファイルデータ索引付け情報を含んでいる。装置に存在するファイルオブジェクトのFITまたはTFIT毎に、エントリが1つ存在する。ほとんどのファイルオブジェクトのFITレコードをFITに記憶し、TFITは、近い将来修正を行う確率が高いファイルオブジェクトだけのFITレコードを含んでいる。   The FIT in FIG. 27 includes a collection of records. Each includes file data indexing information of the file object identified by the control data and the file ID. There is one entry for each FIT or TFIT of a file object that exists in the device. FIT records for most file objects are stored in the FIT, and the TFIT contains only FIT records for file objects that are likely to be modified in the near future.

DIRエントリにより、直接FIT内のFITレコードのアドレス指定を行い、FITページを修正する際には、DIRページの修正を行う必要がある。   When the address of the FIT record in the FIT is directly specified by the DIR entry and the FIT page is corrected, it is necessary to correct the DIR page.

FITは、1つ以上の専用FITブロックに含まれている。FITレコードの書き込みが行われるプログラミングを行わないページを、FITブロックが1つだけ含んでいる。このブロック内の次のプログラミングを行わないページの位置で、FITレコード情報すべてのプログラミングを行い、FIT書き込みポインタにより識別する。ブロック内の最後のページに対しプログラミングを行った場合、FIT書き込みポインタを、消去ブロックの最初のページに移動する。FITブロックは、書き換えられたFITページから得られる使われなくなったページと、取り除かれたDIRエントリから得られる有効なFITページ内の使われなくなったFITレコードとを含んでいることもある。使われなくなった容量を、FITブロックから解放してもよい。   The FIT is included in one or more dedicated FIT blocks. The FIT block includes only one page on which the FIT record is written and not programmed. All the FIT record information is programmed at the position of the page in the block where the next programming is not performed, and is identified by the FIT write pointer. When programming for the last page in the block, move the FIT write pointer to the first page of the erase block. The FIT block may contain pages that are no longer used from the rewritten FIT page and obsolete FIT records in the valid FIT page that are obtained from the removed DIR entry. Capacity that is no longer used may be released from the FIT block.

FITページは、DIRエントリにより参照するFITレコードのセットを、DIRページ内のエントリとして、同じDIRページに同じ順序で含んでいる。DIRページは、複数のFITページを参照することもある。従って、FITページの修正を行うと、結果として、DIRページを1ページだけ修正することが必要になる。ページを読み出し、次に、更新を行ったり、または1つ以上のFITレコードを加えたりすることにより、FITページを修正してもよい。ページを圧縮することにより、使われなくなったFITレコードを取り除き、次に、FIT書き込みポインタにより識別した位置で、ページのプログラミングを行う。   The FIT page includes a set of FIT records referred to by a DIR entry as entries in the DIR page in the same order in the same DIR page. The DIR page may refer to a plurality of FIT pages. Therefore, if the FIT page is corrected, as a result, it is necessary to correct only one DIR page. The FIT page may be modified by reading the page and then performing an update or adding one or more FIT records. The compressed FIT record is removed by compressing the page, and then the page is programmed at the position identified by the FIT write pointer.

FITページヘッダは、FITページが対応づけられているDIRページと、FITページ内のFITレコード情報の長さとに対する参照を記憶している。FITページヘッダは、FITページの書き込みを行った際に、それぞれのFITブロックに存在する使われなくなったページの数の記録についても、記憶している場合もある。典型的には、この情報は、直近で書き込みが行われたFITページヘッダ内でだけ有効である。
図27のFITブロックのFITレコードは、以下のフィールドを含んでいる。
1)ファイルID
2)ファイル状態(前に援用されている米国特許出願第11/382,224号(特許文献33)に記載されているように、これは0〜9の番号で、各状態は、ファイルのデータを含むことが許可されている物理ブロックの種類の、位置に定義した組み合わせを指定している。典型的には、ファイルの状態が変わる際に、そのファイルの1つ以上のデータグループが変わったために、FITレコードの更新が必要になる。)
3)ファイルのアクティブブロックのアドレス
4)ファイル内のデータグループの数
5)以下を含む、ファイル内の各データグループ毎に1つのフィールド
a)ファイル内のバイト表示の論理オフセット
b)バイト表示の長さ
c)物理位置を示すポインタ
The FIT page header stores a reference to the DIR page associated with the FIT page and the length of the FIT record information in the FIT page. The FIT page header may also store a record of the number of pages that are no longer used in each FIT block when the FIT page is written. Typically, this information is valid only in the most recently written FIT page header.
The FIT record of the FIT block in FIG. 27 includes the following fields.
1) File ID
2) File status (as described in previously incorporated US patent application Ser. No. 11 / 382,224), which is a number from 0 to 9, each status being a file data Specifies the location-defined combination of physical block types that are allowed to contain, typically because one or more data groups in the file changed when the file state changed In addition, it is necessary to update the FIT record.)
3) Address of the active block of the file 4) Number of data groups in the file 5) One field for each data group in the file including: a) Logical offset of byte representation in the file b) Length of byte representation C) Pointer indicating physical position

図27のTFITブロックを用いることにより、一時的なFITレコード、すなわち、近い将来修正を行う確率が高いFITレコードを記憶することが可能になる。第1の実施形態で説明したように、例えば、これにより、開いているファイルコマンドおよび閉じているファイルコマンドを利用するシステムに、開いているファイルを組み込むことが可能になる。DIRエントリにより、間接的にTFIT内のFITレコードのアドレス指定を行い、DIRを更新する必要なく、TFITエントリを修正することが可能になる。   By using the TFIT block of FIG. 27, it is possible to store a temporary FIT record, that is, a FIT record having a high probability of performing correction in the near future. As described in the first embodiment, for example, this makes it possible to incorporate an open file into a system that uses open file commands and closed file commands. The DIR entry allows the TFIT entry to be modified without having to indirectly address the FIT record in the TFIT and update the DIR.

TFITは、固定数の論理ページを含んでいる1つの専用TFITブロックに含まれている。次に利用可能な物理ページに書き換えを行うことにより、各論理ページの更新を行う。有効なTFITエントリを含んでいるページに、論理ページ番号を割り当てる。ブロック内の物理ページの数の25%となるように、TFITブロック内の論理ページの数を指定する。   The TFIT is contained in one dedicated TFIT block that contains a fixed number of logical pages. Next, each logical page is updated by rewriting the usable physical page. Assign a logical page number to the page that contains a valid TFIT entry. The number of logical pages in the TFIT block is designated to be 25% of the number of physical pages in the block.

TFITブロックの最後のページの書き込みが行われた後で、有効なページすべてを消去ブロックに書き込みを行って、もともとのTFITブロックの消去を行うことにより、ブロックを圧縮する。FITレコードは、FITおよびTFITの両方に、同時に存在することはない。   After the last page of the TFIT block is written, all valid pages are written to the erase block, and the original TFIT block is erased to compress the block. FIT records do not exist in both FIT and TFIT at the same time.

TFITページは、FITレコードを1つだけ含んでいる。TFIT内のFITレコードは、FITブロックの前述したものと全く同じこともある。有効なTFITインデックスフィールドは、直近に書き込みが行われたTFITページだけに存在する。前に書き込みが行われたTFITページすべてのフィールド内の情報が使われなくなる。その目的は、論理ページを物理ページにマッピングを行うことである。TFITインデックスは、論理ページ番号に基づいて順序づけられた考えられる論理ページ毎に、エントリを1つ含んでいる。各エントリには2つのフィールドがある。
1.論理ページの割り当て状態フラグ
2.論理ページのマッピングを行う、TFIT内の物理ページを示すポインタ
The TFIT page contains only one FIT record. The FIT record in TFIT may be exactly the same as described above for the FIT block. A valid TFIT index field exists only in the most recently written TFIT page. The information in the fields of all previously written TFIT pages is not used. Its purpose is to map logical pages to physical pages. The TFIT index contains one entry for each possible logical page ordered based on the logical page number. Each entry has two fields.
1. 1. Logical page allocation status flag Pointer indicating the physical page in TFIT that performs logical page mapping

図27のATTRブロックは、レコードの集まりであり、それぞれ、ファイルIDにより識別したファイルオブジェクトの属性を含んでいる。属性レコードの内容はホストシステムが定義済みで、メモリシステムが解釈を行わない。ホストが属性の書き込みを行うファイルオブジェクト毎に、ATRにエントリが1つ存在する。DIRエントリにより、直接ATTRブロック内のATRレコードのアドレス指定を行い、ATRページを修正する際に、DIRページを修正する。   The ATTR block in FIG. 27 is a collection of records, and each includes attributes of a file object identified by a file ID. The contents of the attribute record are already defined by the host system and are not interpreted by the memory system. There is one entry in the ATR for each file object for which the host writes attributes. The DIR entry directly addresses the ATR record in the ATTR block, and the DIR page is corrected when the ATR page is corrected.

ATRは、1つ以上の専用ATTRブロックに含まれている。ATRブロック1つだけが、ATRレコードの書き込みが行われるプログラミングを行わないページを含んでいる。ATTRブロックは、書き換えられたATRページから得られる使われなくなったページと、削除したファイルから得られる有効なATRページ内の使われなくなったATRレコードとを含むこともある。   The ATR is contained in one or more dedicated ATTR blocks. Only one ATR block contains a non-programmed page where an ATR record is written. The ATTR block may include a page that is no longer used that is obtained from the rewritten ATR page and an ATR record that is no longer used in a valid ATR page obtained from the deleted file.

1ページのATTRブロックは、DIRページのエントリと同じ順序で、同じDIRページ内のDIRエントリにより参照する、ATRレコードのセットを含んでいる。DIRページは、複数のATRページを参照してもよい。従って、ATRページの修正を行うと、結果として、DIRページを1ページだけ修正することが必要になる。   A page ATTR block contains a set of ATR records that are referenced by DIR entries in the same DIR page in the same order as the entries in the DIR page. The DIR page may refer to a plurality of ATR pages. Therefore, when the ATR page is corrected, as a result, it is necessary to correct only one DIR page.

ATRページのヘッダは、ATRページが対応づけられたDIRページと、ATRページ内のATRレコード情報の長さとに対する参照を記憶している。ATRページのヘッダは、ATRページの書き込みが行われたときにATTRブロックそれぞれに存在する使われなくなったページの数の記録を含んでいる場合もある。典型的には、この情報は、直近に書き込みが行われたATRページのヘッダにだけ有効である。ATRレコードは、以下のフィールドを含んでいる。
1)ファイルID
2)ATRレコードの長さ
3)ATRレコードの内容(属性レコードの内容は、ホストシステムが定義済みなので、DFSシステムが解釈することはない。)
The header of the ATR page stores a reference to the DIR page associated with the ATR page and the length of the ATR record information in the ATR page. The ATR page header may also contain a record of the number of unused pages present in each ATTR block when the ATR page is written. Typically, this information is valid only for the header of the most recently written ATR page. The ATR record includes the following fields:
1) File ID
2) Length of ATR record 3) Contents of ATR record (The contents of the attribute record are not interpreted by the DFS system because the host system has already been defined.)

前述したように、データグループは、ファイル内の連続する論理オフセットアドレスを有するファイルデータのセットであり、1つのブロック内の連続する物理アドレスでプログラミングが行われる。複数のデータグループとして、ファイルのプログラミングを頻繁に行う。データグループは、1バイトから1ブロックの間の任意の長さであってよい。好ましくは、ヘッダで各データグループのプログラミングを行い、一部のファイルのファイルIDを含んでいる。   As described above, a data group is a set of file data having consecutive logical offset addresses in a file, and programming is performed with continuous physical addresses in one block. Files are frequently programmed as multiple data groups. The data group may be any length between 1 byte and 1 block. Preferably, each data group is programmed with a header and includes file IDs of some files.

FITレコードは1つ以上のFITブロックに含まれ、DIRエントリにより、直接アドレス指定が行われる。1つだけのFITブロックが、新しいまたは更新したFITレコードのプログラミングを行うのに利用可能な消去ページを含んでいる。他のFITブロックすべてにおいて、ページすべてに対しプログラミングを行うが、ブロックは、完全に使われなくなったページまたは部分的に使われなくなったページを含む場合もある。   The FIT record is included in one or more FIT blocks, and is directly addressed by a DIR entry. Only one FIT block contains erase pages that can be used to program new or updated FIT records. In all other FIT blocks, all pages are programmed, but the block may contain pages that are completely obsolete or partially obsolete.

1つのFITブロックを次に解放するブロックとして指定することにより、使われなくなったFITレコードが占有するこの容量を解放し、解放ブロックの消去を行う前に、この解放ブロックからFIT書き込みポインタが現在指定しているページへ、継続的にページコピーを行う。   By designating one FIT block as the next block to be released, this capacity occupied by the FIT record that is no longer used is released, and before the released block is erased, the FIT write pointer is now specified from this released block. Continuous page copy to the current page.

FITブロックの前の解放処理が完了し、ブロックの消去を行う場合に、解放ブロックを選択する。使われなくなったページの数が最も大きいFITブロックを、解放ブロックとして選択する。直近に書き込みが行われたFITページのFITページヘッダ内のFITブロック毎に、この値を記録する。FIT書き込みポインタを含んでいるFITブロックを選択して、解放する必要はない。解放処理が完了して、そのブロックを消去するまで、選択したFITブロックは、解放ブロックとして残る。   When the release processing before the FIT block is completed and the block is erased, the release block is selected. The FIT block having the largest number of pages that are no longer used is selected as a release block. This value is recorded for each FIT block in the FIT page header of the most recently written FIT page. There is no need to select and free the FIT block containing the FIT write pointer. The selected FIT block remains as a release block until the release process is completed and the block is erased.

使われなくなったページを含んでいるFITブロックを解放する処理には、スケジュールした間隔での個別のバーストで、このブロックからFIT書き込みポインタが指定するページに、有効なFITレコードを含んでいる小さい数のページのコピーを行うことが必要である。1回のバーストでのページの数は、メタページに含まれるページの数でなければならない。メタページの1回のプログラミング動作として、FIT書き込みポインタの示すページのプログラミングを行う必要がある。   The process of releasing a FIT block containing a page that is no longer used is a small number containing a valid FIT record in the page specified by the FIT write pointer from this block in individual bursts at scheduled intervals. It is necessary to make a copy of the page. The number of pages in one burst must be the number of pages included in the metapage. As a metapage programming operation, it is necessary to program the page indicated by the FIT write pointer.

4メタページに含まれるページの位置の数を介して、FIT書き込みポインタの進行により、定義済みの間隔で、解放ブロック内のページのバーストコピー動作のスケジュールをたてる必要がある。バーストコピー動作のスケジュールをたてたときに、書き込みポインタが物理メタページ内の最初のページを指す。   Through the number of page positions contained in the four metapages, the progress of the FIT write pointer needs to schedule burst copy operations for pages in the release block at defined intervals. When scheduling a burst copy operation, the write pointer points to the first page in the physical metapage.

同じ解放処理を、ATTRブロックに別々に行ってもよい。   The same release process may be performed separately on the ATTR block.

実施形態の変形例
前述した2つの具体的なファイル索引付けを行う実施形態それぞれにおいて、ホストからのデータのページと、FITエントリと、ディレクトリエントリとをすべて、1つ以上のブロックの別々のグループに記憶してある。この構成の第1の変形例として、ディレクトリエントリを含んでいるページおよびFITレコードを含んでいるページが、同じブロックにともに存在していてもよい。図20に示すように、ブロック内の複数の論理ページは、ディレクトリエントリを含んでいる。特定のファイルIDのディレクトリエントリは、ブロック内にわかっている論理アドレスがある。図21に示すように、各論理ページは、論理ページポインタのセットも含んでいる。これらは、ブロック内のディレクトリページの論理対物理ページマッピングとして機能する。ブロック内の論理ページ毎に、ポインタは1つあり、論理ページの現在の物理ページアドレスを指定する。FITレコードを含んでいるFITページは、ブロック内に存在することもある。FITページを論理ページには割り当てないが、ディレクトリエントリにより、物理ページ位置で直接アドレス指定を行う。FITページ内の1つ以上のFITレコードの更新を行う場合、FITページの位置を関連するディレクトリエントリから識別して、ページの読み出しを行って、関連するレコードを修正し、ブロック内の次に利用可能なプログラミングが行われないページに更新したページの書き込みを行う。ディレクトリエントリを更新して、この新しいFITページ位置に直接アドレス指定を行うために、1つのディレクトリ論理ページの修正を行って、更新したFITページが占有する位置に続く物理ページ位置に、プログラミングを行う。このディレクトリページの論理ページポインタも、同じ動作で更新してプログラミングを行う。ブロック内の論理ページすべての論理ページポインタは、ブロック内の最後に書き込みが行われたディレクトリページ内でだけ有効であって、これは常に、ブロック内の最後に書き込みが行われたページである。
Variations of Embodiments In each of the two specific file indexing embodiments described above, the page of data from the host, the FIT entry, and the directory entry are all in separate groups of one or more blocks. I remember it. As a first modification of this configuration, a page including a directory entry and a page including a FIT record may exist together in the same block. As shown in FIG. 20, the plurality of logical pages in the block include directory entries. A directory entry for a specific file ID has a known logical address in the block. As shown in FIG. 21, each logical page also includes a set of logical page pointers. These serve as a logical to physical page mapping of directory pages within the block. There is one pointer for each logical page in the block, which specifies the current physical page address of the logical page. A FIT page containing a FIT record may exist in a block. The FIT page is not assigned to a logical page, but is directly addressed at a physical page position by a directory entry. When updating one or more FIT records in a FIT page, identify the location of the FIT page from the associated directory entry, read the page, modify the associated record, and use it next in the block Write the updated page to a page where no programming is possible. To update the directory entry and address directly to this new FIT page location, modify one directory logical page and program to the physical page location following the location occupied by the updated FIT page. . The logical page pointer of this directory page is also updated and programmed by the same operation. The logical page pointer of all logical pages in the block is only valid in the directory page that was last written in the block, which is always the last page written in the block.

あるいは、FITページは論理ページポインタのセットを含んでいてもよいし、FITページは、ブロック内の最後に書き込みが行われたページであってもよい。   Alternatively, the FIT page may include a set of logical page pointers, or the FIT page may be the last written page in the block.

2つの具体的なファイル索引付けを行う実施形態で説明した構成のさらに別の変形例において、ディレクトリエントリを含んでいるページと、FITレコードを含んでいるページと、ホストからのデータを含んでいるページとが、同じブロックにともに存在していてもよい。ホストからデータの書き込みを行う場合、データグループの形式で、ブロック内の複数の連続する物理ページにプログラミングを行う。このデータグループの位置を、更新したFITページ内の関連するFITレコードのフィールドにより識別する。これは、データグループの終端のすぐ次の物理ページにプログラミングを行う。ディレクトリページも、FITページのすぐ後にプログラミングを行って、前述したように、更新したFITページ内のFITレコードすべてを示すポインタの更新を行う。   In yet another variation of the configuration described in the two specific file indexing embodiments, it includes a page containing directory entries, a page containing FIT records, and data from the host. A page may exist together in the same block. When writing data from the host, programming is performed on a plurality of consecutive physical pages in a block in the form of a data group. The location of this data group is identified by the field of the associated FIT record in the updated FIT page. This programs the physical page immediately following the end of the data group. The directory page is also programmed immediately after the FIT page, and the pointers indicating all the FIT records in the updated FIT page are updated as described above.

データグループがブロック内の3番目の最後のページを超えないようにすることで、このすぐ後に、FITページおよびディレクトリページのプログラミングを行うことが可能になる。   By ensuring that the data group does not exceed the third last page in the block, it is possible to program the FIT page and directory page immediately after this.

まとめ
例示の実施形態に関連して本発明の様々な態様を説明してきたが、本発明が添付の特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
Summary While various aspects of the invention have been described with reference to illustrative embodiments, it will be understood that the invention is entitled to protection within the full scope of the appended claims.

現在実施されているものとしてホストと接続している不揮発性メモリシステムとを概略的に示す。1 schematically illustrates a non-volatile memory system connected to a host as currently implemented. 図1の不揮発性メモリとして用いられる一例のフラッシュメモリシステムのブロック図である。FIG. 2 is a block diagram of an example flash memory system used as the nonvolatile memory of FIG. 1. 図2のシステムで用いられるメモリセルアレイの典型的な回路図である。FIG. 3 is a typical circuit diagram of a memory cell array used in the system of FIG. 図2のシステムの一例の物理メモリ構成を示す。3 shows a physical memory configuration of an example of the system of FIG. 図4の物理メモリの部分拡大図である。It is the elements on larger scale of the physical memory of FIG. 図4および図5の物理メモリの別の部分拡大図である。FIG. 6 is another partial enlarged view of the physical memory of FIGS. 4 and 5. ホストと再プログラム可能なメモリシステムとの間の一般的な従来技術の論理アドレスインターフェイスを示す。1 illustrates a typical prior art logical address interface between a host and a reprogrammable memory system. ホストと再プログラム可能なメモリシステムとの間の、図7に示すものとはやり方が異なる一般的な従来技術の論理アドレスインターフェイスを示す。FIG. 8 illustrates a typical prior art logical address interface between a host and a reprogrammable memory system that differs in manner from that shown in FIG. 本発明によるホストと再プログラム可能なメモリシステムとの間の直接ファイル記憶インターフェイスを示す。Fig. 3 shows a direct file storage interface between a host and a reprogrammable memory system according to the invention. 本発明によるホストと再プログラム可能なメモリシステムとの間の、図9に示すものとはやり方が異なる直接ファイル記憶インターフェイスを示す。FIG. 10 illustrates a direct file storage interface between a host and a reprogrammable memory system according to the present invention in a manner different from that shown in FIG. 直接データファイル記憶インターフェイスと協働するメモリシステムの機能ブロック図である。FIG. 2 is a functional block diagram of a memory system that cooperates with a direct data file storage interface. 直接データファイルメモリの動作周期を示す。Indicates the operation cycle of the direct data file memory. ファイルのデータを直接メモリに書き込む例を示す。An example of writing file data directly to memory is shown. ファイルのデータを直接メモリに書き込む他の例を示す。Another example of directly writing file data to memory will be described. ファイルのデータを直接メモリに書き込む他の例を示す。Another example of directly writing file data to memory will be described. ファイルのデータを直接メモリに書き込む他の例を示す。Another example of directly writing file data to memory will be described. 1つのデータファイルを直接メモリに書き込みを行うシーケンスを示す。A sequence for directly writing one data file to a memory is shown. 1つのデータファイルを直接メモリに書き込みを行うシーケンスを示す。A sequence for directly writing one data file to a memory is shown. 1つのデータファイルを直接メモリに書き込みを行うシーケンスを示す。A sequence for directly writing one data file to a memory is shown. 1つのデータファイルを直接メモリに書き込みを行うシーケンスを示す。A sequence for directly writing one data file to a memory is shown. 1つのデータファイルを直接メモリに書き込みを行うシーケンスを示す。A sequence for directly writing one data file to a memory is shown. 図14Eのブロックを解放した結果を示す。FIG. 14E shows the result of releasing the block of FIG. 14E. FIG. データグループ1つと、使われなくなったデータとを含んでいるブロックの解放を示す。Indicates release of a block containing one data group and data that is no longer used. 図14A、図14C、図14E、図15および図16のデータグループのFITのエントリを示す。14A, 14C, 14E, 15 and 16 show FIT entries of the data groups. 具体的なファイル索引付けを行う第1の実施形態の、アクティブおよび非アクティブファイルに異なるFIT構造を用いるファイル索引付けの原理を示す。FIG. 4 illustrates the principle of file indexing using different FIT structures for active and inactive files of the first embodiment for specific file indexing. FIG. 図18の説明を拡張して示す。The explanation of FIG. 18 is expanded. 図18および図19のファイルディレクトリの一例の論理構造を示す。FIG. 20 shows an example of the logical structure of the file directory of FIGS. 18 and 19. FIG. 図18および図19のファイルディレクトリを含んでいるメモリブロックの物理構造を示す。FIG. 20 shows the physical structure of a memory block containing the file directory of FIGS. 18 and 19. FIG. 図18および図19のFITの論理構造を示す。The logical structure of FIT of FIG. 18 and FIG. 19 is shown. アクティブファイルのFITエントリ(TFIT)を含んでいるブロックの物理構造を示す。The physical structure of the block containing the FIT entry (TFIT) of the active file is shown. 非アクティブファイルのFITエントリを含んでいるブロックの物理構造を示す。The physical structure of the block containing the FIT entry of the inactive file is shown. 図19の一例のファイル索引付けにおけるFITレコードに実行する動作を示す。The operation | movement performed to the FIT record in the file indexing of an example of FIG. 19 is shown. 具体的なファイル索引付けを行う第2の実施形態による、ファイル索引付けの階層を示す。FIG. 6 illustrates a file indexing hierarchy according to a second embodiment for performing specific file indexing. FIG. 図26の実施形態におけるファイル属性のファイルディレクトリ専用のメモリブロック、FITおよび表の一例のデータ構造を示す。FIG. 27 shows an exemplary data structure of a memory block, FIT, and table dedicated to a file directory having file attributes in the embodiment of FIG.

Claims (34)

メモリシステムの外部から受け取ったファイルのデータで再プログラミングを行う前に消去が行われるメモリセルブロックにグループ化した記憶セルを有する、不揮発性メモリシステムの動作方法であって、
前記メモリブロックに、一意のファイル識別子を有するファイルのデータを記憶するステップと、
個別のファイルに対し、前記個別のファイルのデータの前記物理ブロックの位置のレコードを保持するステップと、
分類(1)近い将来修正を行う可能性がある、または分類(2)近い将来修正を行う可能性がない、のうちのいずれかとして、前記個別のファイルの分類を保持するステップと、
一意のファイル識別子により、(1)と分類されたファイルのレコードへの間接リンクと、(2)と分類されたファイルのレコードへの直接リンクとである、前記ファイルのレコードへのリンクのディレクトリを保持するステップと、
一意のファイル識別子を用いることにより、前記ディレクトリを介して前記レコードのうちの選択した1つにアクセスするステップと、
を含む方法。
A method of operating a non-volatile memory system having storage cells grouped into memory cell blocks that are erased prior to reprogramming with file data received from outside the memory system,
Storing data of a file having a unique file identifier in the memory block;
Holding a record of the position of the physical block of the data of the individual file for the individual file;
Maintaining the classification of the individual files as either classification (1) likely to make a near future correction or classification (2) not likely to make a near future correction;
A directory of links to the record of the file, which is an indirect link to the record of the file classified as (1) and a direct link to the record of the file classified as (2) by a unique file identifier. Holding step;
Accessing a selected one of the records via the directory by using a unique file identifier;
Including methods.
請求項1記載の方法において、
前記メモリシステムに接続しているホストシステムが前記個別のファイルを開くと指定する分類(1)にファイルを保持し、前記メモリシステムに接続しているホストシステムが前記個別のファイルを閉じると指定する分類(2)にファイルを保持する方法。
The method of claim 1, wherein
The host system connected to the memory system holds the file in the classification (1) that specifies that the individual file is opened, and the host system connected to the memory system specifies that the individual file is closed. How to keep files in category (2).
請求項1記載の方法において、
前記メモリシステムに接続しているホストからの少なくとも1つの前記メモリブロック内へのファイルデータの書き込みに応答して、前記メモリシステムが前記ファイル分類を保持する方法。
The method of claim 1, wherein
A method in which the memory system retains the file classification in response to writing file data into at least one of the memory blocks from a host connected to the memory system.
請求項1記載の方法において、
ファイルの前記間接リンクは、エントリを前記ファイル変更の前記レコードを含んでいる第2の位置として変更を行わない前記メモリ内の第1の位置のアドレスの前記ディレクトリに含んでいて、前記第1の位置は変更のある前記第2の位置のアドレスを含んでいて、ファイルの前記直接リンクは、エントリを前記第2の位置のアドレスの前記ディレクトリに含んでいる方法。
The method of claim 1, wherein
The indirect link of the file includes an entry in the directory at the address of the first location in the memory that does not change as the second location containing the record of the file change, A method wherein the location includes an address of the second location with a change and the direct link of the file includes an entry in the directory of the address of the second location.
請求項1記載の方法において、
(1)と分類されたファイルのレコードを他のファイルのレコードがない前記メモリブロック内の個別のページに保持し、(2)と分類されたファイルの複数のレコードを前記メモリブロック内の個別のページに保持する方法。
The method of claim 1, wherein
(1) keep records of files classified as (1) in separate pages in the memory block without records of other files, and (2) record multiple records of files classified as separate in the memory block. How to keep on page.
請求項1記載の方法において、
(2)と分類されたファイルの多数のレコードを前記メモリブロックの第1のページにともにグループ化し、それらの数のレコードへの多数のリンクを、前記ディレクトリを構成する前記メモリブロックの第2のページにともにグループ化する方法。
The method of claim 1, wherein
(2) group together a large number of records in the file into the first page of the memory block, and link a large number of links to those number of records to a second of the memory blocks comprising the directory. How to group together on a page.
請求項6記載の方法において、
前記第1のページに記憶してある(2)と分類されたファイルのレコードの数を、そのリンクを前記第2のページに記憶してあるファイルに制限する方法。
The method of claim 6 wherein:
A method of limiting the number of records of a file classified as (2) stored in the first page to a file whose link is stored in the second page.
一意のファイル識別子が識別したファイルのデータで再プログラミングを行う前に消去が行われるメモリセルブロックにグループ化した記憶セルを有する、不揮発性メモリシステムの動作方法であって、
個別のファイルのデータを1つ以上のデータグループとして記憶するステップと、
前記ファイルのデータそれぞれのものを構成する前記データグループのレコードを保持するステップと、
前記一意のファイル識別子により、非アクティブファイルへの直接リンクと、アクティブファイルへの間接リンクとである、前記レコードへのリンクのディレクトリを保持するステップと、
を含む方法。
A method of operating a non-volatile memory system having storage cells grouped into memory cell blocks that are erased prior to reprogramming with data of a file identified by a unique file identifier, comprising:
Storing individual file data as one or more data groups;
Holding a record of the data group comprising each of the data of the file;
Maintaining a directory of links to the records that are direct links to inactive files and indirect links to active files by the unique file identifier;
Including methods.
請求項8記載の方法において、
アクティブファイルは近い将来それらの修正を行う可能性があり、非アクティブファイルは近い将来それらの修正を行う可能性がない方法。
The method of claim 8, wherein
A method where active files are likely to make those modifications in the near future and inactive files are not likely to make those modifications in the near future.
請求項8記載の方法において、
アクティブファイルは、前記メモリシステムに接続しているホストが開いていると指定したファイルを含み、非アクティブファイルは、前記ホストが閉じていると指定したファイルを含んでいる方法。
The method of claim 8, wherein
A method in which an active file includes a file that is designated as open by a host connected to the memory system, and an inactive file includes a file that is designated as closed by the host.
請求項8記載の方法において、
前記メモリシステムは、前記メモリブロック内の前記ファイルの記憶の少なくとも1つのパターンを監視することにより、前記個別のファイルがアクティブまたは非アクティブであると識別を行う方法。
The method of claim 8, wherein
The method wherein the memory system identifies that the individual file is active or inactive by monitoring at least one pattern of storage of the file in the memory block.
請求項8記載の方法において、
前記1つ以上のデータグループは、メモリセルブロック内の連続する論理ファイルオフセットアドレスおよび連続する物理アドレスにデータを含んでいる方法。
The method of claim 8, wherein
The method wherein the one or more data groups include data at successive logical file offset addresses and successive physical addresses within a memory cell block.
請求項8記載の方法において、
アクティブファイルのレコードを、他のファイルのレコードがない前記メモリブロック内の個別のページに保持し、非アクティブファイルの複数のレコードを、前記メモリブロック内の個別のページに保持する方法。
The method of claim 8, wherein
A method of maintaining a record of an active file on a separate page in the memory block without records of other files and a plurality of records of an inactive file on a separate page in the memory block.
請求項8記載の方法において、
非アクティブファイルの多数のレコードを前記メモリブロックの第1のページにともにグループ化し、それらの数のレコードへの多数のリンクを、前記ディレクトリを構成する前記メモリブロックの第2のページにともにグループ化する方法。
The method of claim 8, wherein
Multiple records of inactive files are grouped together on the first page of the memory block, and multiple links to those number of records are grouped together on the second page of the memory block that makes up the directory. how to.
ファイル内の一意のファイル識別子およびオフセットアドレスが識別したデータで、ブロックのページの再プログラミングを行う前に消去が行われるメモリセルブロックにグループ化した記憶セルを有する、不揮発性メモリシステムの動作方法であって、
個別のファイルのデータを、メモリセルブロック内の連続する論理ファイルオフセットアドレスおよび連続する物理アドレス内のデータを個別に指定する、1つ以上のデータグループとして記憶するステップと、
前記個別のファイルの前記データグループの表にエントリのセットを保持するステップと、
ファイルの一意の識別子により、閉じているファイルのデータへの直接リンクと、開いているファイルのデータへの間接リンクとである、前記ファイルのデータの前記表内のエントリに前記ファイルをリンクするファイルディレクトリを保持するステップと、
を含む方法。
A method of operating a non-volatile memory system having storage cells grouped into memory cell blocks that are data identified by a unique file identifier and offset address within the file and that are erased before reprogramming the page of the block. There,
Storing data of individual files as one or more data groups that individually specify data in successive logical file offset addresses and successive physical addresses in a memory cell block;
Maintaining a set of entries in a table of the data groups of the individual files;
A file that links the file to an entry in the table of data of the file that is a direct link to the data of the closed file and an indirect link to the data of the open file, with a unique identifier of the file Maintaining a directory;
Including methods.
請求項15記載の方法において、
開いているファイルの表を、他のファイルの表を含まない前記メモリブロック内の個別のページに保持し、閉じられているファイルの複数のレコードを、前記メモリブロック内の個別のページに保持する方法。
The method of claim 15, wherein
Keep a table of open files on a separate page in the memory block that does not contain tables of other files, and keep multiple records of closed files on a separate page in the memory block Method.
請求項15記載の方法において、
閉じられているファイルの多数のレコードを前記メモリブロックの第1のページにともにグループ化し、それらの数のレコードへの多数のリンクを、前記ディレクトリを構成する前記メモリブロックの第2のページにともにグループ化する方法。
The method of claim 15, wherein
Group together a number of records in a closed file into a first page of the memory block, and link a number of links to those number of records together into a second page of the memory block that constitutes the directory. How to group.
ブロックのページ内のデータの再プログラミングを行う前に消去が行われるメモリセルブロックにグループ化した記憶セルを有する、不揮発性メモリシステムの動作方法であって、
第1の複数のページに、個別に一意のファイル識別子を有するファイルのデータを記憶するステップと、
少なくとも第2のページに、前記第1の複数のページに記憶している前記ファイルのデータの前記物理ページ位置のレコードを保持するステップと、
少なくとも第3のページに、少なくとも前記第2のページ内のレコードの前記位置を示すポインタを保持し、前記第2のページ内の前記レコードを、そのポインタを前記第3のページに記憶してある前記ファイルのものに制限するステップと、
を含む方法。
A method of operating a non-volatile memory system having storage cells grouped into memory cell blocks that are erased prior to reprogramming the data in a page of the block, comprising:
Storing data of files having individually unique file identifiers in the first plurality of pages;
Holding a record of the physical page position of the data of the file stored in the first plurality of pages at least in a second page;
At least a third page holds at least a pointer indicating the position of the record in the second page, and the pointer in the second page is stored in the third page. Limiting to that of the file;
Including methods.
請求項18記載の方法において、
少なくとも前記第2のページ内のレコードの位置を示すポインタが、前記レコードが関連する前記ファイルの一意の識別子に対応付けられている方法。
The method of claim 18, wherein:
A method wherein at least a pointer indicating a position of a record in the second page is associated with a unique identifier of the file to which the record is related.
請求項18記載の方法において、
前記第1の複数のページが、1つ以上のブロックの第1のグループに位置し、前記少なくとも第2のページが、1つ以上のブロックの第2のグループに位置し、前記少なくとも第3のページが、1つ以上のブロックの第3のグループに位置している方法。
The method of claim 18, wherein:
The first plurality of pages is located in a first group of one or more blocks, the at least second page is located in a second group of one or more blocks, and the at least third The method, wherein the page is located in a third group of one or more blocks.
請求項18記載の方法において、
前記第1の複数のページが、1つ以上のブロックの第1のグループに位置し、前記少なくとも第2のページおよび前記少なくとも第3のページが、1つ以上のブロックの第2のグループの共有ブロックに位置している方法。
The method of claim 18, wherein:
The first plurality of pages are located in a first group of one or more blocks, and the at least second page and the at least third page are shared by a second group of one or more blocks The method that is located in the block.
請求項18記載の方法において、
前記第1の複数のページ、前記少なくとも第2のページおよび前記少なくとも第3のページが、1つ以上のブロックのグループの共有ブロックにともに位置している方法。
The method of claim 18, wherein:
The method wherein the first plurality of pages, the at least second page, and the at least third page are located together in a shared block of a group of one or more blocks.
ブロックのページ内のデータの再プログラミングを行う前に消去が行われるメモリセルブロックにグループ化した記憶セルを有する、不揮発性メモリシステムの動作方法であって、
少なくとも第1のページに、データを記憶してある前記物理ページの位置のレコードを保持するステップと、
少なくとも第2のページに、少なくとも前記第1のページ内のレコードの前記位置を指すポインタを保持し、前記第1のページ内の前記レコードを前記第2のページに記憶してある前記ポインタが指すものに制限するステップと、
を含む方法。
A method of operating a non-volatile memory system having storage cells grouped into memory cell blocks that are erased prior to reprogramming the data in a page of the block, comprising:
Holding a record of the position of the physical page in which data is stored in at least a first page;
At least a second page holds a pointer to at least the position of the record in the first page, and the pointer stored in the second page points to the record in the first page Step to restrict to things,
Including methods.
ブロックのページ内のファイルのデータの再プログラミングを行う前に消去が行われるメモリセルブロックにグループ化した記憶セルを有する、不揮発性メモリシステムの動作方法であって、
前記メモリブロックに、一意のファイル識別子を有するファイルのデータを記憶するステップと、
個別のファイルに対し、前記個別のファイルのデータの前記物理ブロックの位置のレコードを保持するステップと、
一意のファイル識別子により、前記レコードの物理アドレスを含むメモリの1つ以上の位置へのリンクである、前記ファイルの前記レコードへのリンクのディレクトリを前記ディレクトリに保持するステップと、
一意のファイル識別子を用いることにより、前記ディレクトリを介して前記レコードのうちの選択した1つにアクセスし、個別のファイルのレコードを他のファイルのレコードがない個別のページに保持するステップと、
を含む方法。
A method of operating a non-volatile memory system having storage cells grouped into memory cell blocks that are erased prior to reprogramming the data of a file in a page of the block, comprising:
Storing data of a file having a unique file identifier in the memory block;
Holding a record of the position of the physical block of the data of the individual file for the individual file;
Maintaining in the directory a directory of links to the record of the file, which is a link to one or more locations in memory containing the physical address of the record, with a unique file identifier;
Accessing a selected one of the records via the directory by using a unique file identifier, and maintaining a record of an individual file on a separate page without a record of another file;
Including methods.
データの再プログラミングを行う前にともに消去が行われるメモリセルブロックにグループ化した記憶セルを有する不揮発性メモリのメモリシステムであって、
前記メモリシステムの外部から受け取った一意のファイル識別子を有するファイルのデータを、それらのファイル識別子により、前記メモリブロックに記憶し、
データの前記物理ブロック位置のレコードを、前記個別のファイルに対し保持し、
分類(1)近い将来修正を行う可能性がある、または分類(2)近い将来修正を行う可能性がない、のうちのいずれかとして、前記個別のファイルの分類を保持し、
一意のファイル識別子により、(1)と分類されたファイルのレコードへの間接リンクと、(2)と分類されたファイルのレコードへの直接リンクとである、前記ファイルのレコードへのリンクのディレクトリを保持するメモリシステム。
A non-volatile memory memory system having storage cells grouped into memory cell blocks that are erased together prior to data reprogramming,
Data of files having unique file identifiers received from outside the memory system are stored in the memory block by the file identifiers;
Keep a record of the physical block position of the data for the individual file;
Holding the classification of the individual files as either classification (1) likely to make a near future correction or classification (2) not likely to make a near future correction;
A directory of links to the record of the file, which is an indirect link to the record of the file classified as (1) and a direct link to the record of the file classified as (2) by a unique file identifier. Memory system to hold.
請求項25記載のメモリシステムにおいて、
さらに、前記メモリシステムに接続しているホストシステムが前記個別のファイルを開くと指定する分類(1)にファイルを保持し、前記メモリシステムに接続しているホストシステムが前記個別のファイルを閉じていると指定する分類(2)にファイルを保持するメモリシステム。
26. The memory system of claim 25.
Furthermore, the host system connected to the memory system holds the file in the classification (1) that specifies that the individual file is opened, and the host system connected to the memory system closes the individual file. A memory system that holds files in the category (2) that is designated as being.
請求項25記載のメモリシステムにおいて、
さらに、ファイルの前記間接リンクは、エントリを前記ファイル変更の前記レコードを含んでいる第2の位置として変更を行わない前記メモリ内の第1の位置のアドレスの前記ディレクトリに含んでいて、前記第1の位置は変更のある前記第2の位置のアドレスを含んでいて、ファイルの前記直接リンクは、エントリを前記第2の位置のアドレスの前記ディレクトリに含んでいるメモリシステム。
26. The memory system of claim 25.
Further, the indirect link of the file includes an entry in the directory at the address of the first location in the memory that does not change as the second location containing the record of the file change, A memory system wherein a location of 1 includes the address of the second location with a change, and the direct link of the file includes an entry in the directory of the address of the second location.
請求項25記載のメモリシステムにおいて、
さらに、(1)と分類されたファイルのレコードを他のファイルのレコードがない前記メモリブロック内の個別のページに保持し、(2)と分類されたファイルの複数のレコードを前記メモリブロック内の個別のページに保持するメモリシステム。
26. The memory system of claim 25.
Furthermore, the records of the file classified as (1) are held in individual pages in the memory block having no records of other files, and the records of the file classified as (2) are stored in the memory block. A memory system that keeps individual pages.
請求項25記載のメモリシステムにおいて、
さらに、(2)と分類されたファイルの多数のレコードを前記メモリブロックの第1のページにともにグループ化し、それらの数のレコードへの多数のリンクを、前記ディレクトリを構成する前記メモリブロックの第2のページにともにグループ化するメモリシステム。
26. The memory system of claim 25.
Further, a large number of records of the file classified as (2) are grouped together in a first page of the memory block, and a large number of links to the number of records are grouped into the first number of the memory blocks constituting the directory. A memory system that groups two pages together.
請求項29記載のメモリシステムにおいて、
さらに、前記第1のページに記憶してある(2)と分類されたファイルのレコードの数を、そのリンクを前記第2のページに記憶してあるファイルに制限するメモリシステム。
30. The memory system of claim 29.
Further, a memory system for limiting the number of records of the file classified as (2) stored in the first page to the file stored in the second page.
データのブロックのページへの再プログラミングを行う前にともに消去が行われるメモリセルブロックにグループ化した記憶セルを有する不揮発性メモリのメモリシステムであって、
第1の複数のページに記憶される一意のファイル識別子を個別に有するファイルのデータと、
少なくとも第2のページ内の前記一意に識別が行われたファイルのデータを保持している前記物理ページ位置のレコードと、
前記少なくとも第2のページ内のレコードの前記位置を示すポインタを、少なくとも第3のページに保持し、前記第2のページ内の前記レコードを、そのポインタを前記第3のページに記憶している前記ファイルのものに制限する、ポインタと、
を備えるメモリシステム。
A non-volatile memory memory system having storage cells grouped into memory cell blocks that are erased together before reprogramming a block of data to a page,
Data of files individually having unique file identifiers stored in the first plurality of pages;
A record of the physical page position holding data of the uniquely identified file in at least a second page;
A pointer indicating the position of the record in the at least second page is held in at least the third page, and the pointer in the second page is stored in the third page. A pointer that is restricted to that of the file, and
A memory system comprising:
請求項31記載のメモリシステムにおいて、
さらに、前記第1の複数のページが、1つ以上のブロックの第1のグループに位置し、前記少なくとも第2のページが、1つ以上のブロックの第2のグループに位置し、前記少なくとも第3のページが、1つ以上のブロックの第3のグループに位置しているメモリシステム。
32. The memory system of claim 31, wherein
Further, the first plurality of pages is located in a first group of one or more blocks, the at least second page is located in a second group of one or more blocks, and the at least first A memory system in which three pages are located in a third group of one or more blocks.
請求項31記載のメモリシステムにおいて、
前記第1の複数のページが、1つ以上のブロックの第1のグループに位置し、前記少なくとも第2のページおよび前記少なくとも第3のページが、1つ以上のブロックの第2のグループの共有ブロックに位置しているメモリシステム。
32. The memory system of claim 31, wherein
The first plurality of pages are located in a first group of one or more blocks, and the at least second page and the at least third page are shared by a second group of one or more blocks A memory system located in a block.
請求項31記載のメモリシステムにおいて、
前記第1の複数のページ、前記少なくとも第2のページおよび前記少なくとも第3のページが、1つ以上のブロックのグループの共有ブロックにともに位置しているメモリシステム。
32. The memory system of claim 31, wherein
The memory system, wherein the first plurality of pages, the at least second page, and the at least third page are located together in a shared block of a group of one or more blocks.
JP2008525157A 2005-08-03 2006-08-01 Indexing file data in reprogrammable non-volatile memory that directly stores data files Pending JP2009503740A (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US70538805P 2005-08-03 2005-08-03
US74674206P 2006-05-08 2006-05-08
US11/459,255 US7949845B2 (en) 2005-08-03 2006-07-21 Indexing of file data in reprogrammable non-volatile memories that directly store data files
US11/459,246 US7669003B2 (en) 2005-08-03 2006-07-21 Reprogrammable non-volatile memory systems with indexing of directly stored data files
PCT/US2006/030098 WO2007019175A2 (en) 2005-08-03 2006-08-01 Indexing of file data in reprogrammable non-volatile memories that directly store data files

Publications (1)

Publication Number Publication Date
JP2009503740A true JP2009503740A (en) 2009-01-29

Family

ID=37441507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008525157A Pending JP2009503740A (en) 2005-08-03 2006-08-01 Indexing file data in reprogrammable non-volatile memory that directly stores data files

Country Status (5)

Country Link
EP (1) EP1917577A2 (en)
JP (1) JP2009503740A (en)
KR (1) KR20080038368A (en)
TW (1) TW200731067A (en)
WO (1) WO2007019175A2 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007073536A2 (en) * 2005-12-21 2007-06-28 Sandisk Corporation Non-volatile memories and methods with memory allocation for a directly mapped file storage system
EP2240867A4 (en) * 2007-12-13 2011-02-09 Redknee Inc Method and system for storage
JP2009288924A (en) * 2008-05-28 2009-12-10 Nec Electronics Corp File access system
DE102008059352A1 (en) * 2008-11-27 2010-06-02 Giesecke & Devrient Gmbh Memory access to a portable disk
TWI459197B (en) * 2011-04-21 2014-11-01 Phison Electronics Corp Data writing and reading method, memory controller and memory storage apparatus
US9032137B2 (en) * 2012-11-21 2015-05-12 Intel Corporation Flexible wear management for non-volatile memory
TWI582581B (en) * 2016-05-13 2017-05-11 群暉科技股份有限公司 Method and apparatus for performing data recovery in a redundant storage system
TWI643066B (en) * 2018-01-15 2018-12-01 慧榮科技股份有限公司 Method for reusing destination block related to garbage collection in memory device, associated memory device and controller thereof, and associated electronic device

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2291990A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Flash-memory management system

Also Published As

Publication number Publication date
WO2007019175A2 (en) 2007-02-15
KR20080038368A (en) 2008-05-06
TW200731067A (en) 2007-08-16
WO2007019175A3 (en) 2007-09-07
EP1917577A2 (en) 2008-05-07

Similar Documents

Publication Publication Date Title
US7669003B2 (en) Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7949845B2 (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
JP4533956B2 (en) Free up data storage capacity of flash memory system
US7450420B2 (en) Reclaiming data storage capacity in flash memories
US8239639B2 (en) Method and apparatus for providing data type and host file information to a mass storage system
US8880483B2 (en) System and method for implementing extensions to intelligently manage resources of a mass storage system
US7814262B2 (en) Memory system storing transformed units of data in fixed sized storage blocks
US7480766B2 (en) Interfacing systems operating through a logical address space and on a direct data file basis
US7529905B2 (en) Method of storing transformed units of data in a memory system having fixed sized storage blocks
US8713283B2 (en) Method of interfacing a host operating through a logical address space with a direct file storage medium
KR101378031B1 (en) Management of memory blocks that directly store data files
KR101464199B1 (en) Use of a direct data file system with a continuous logical address space interface
US20090164745A1 (en) System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
US20080307156A1 (en) System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium
JP2009503740A (en) Indexing file data in reprogrammable non-volatile memory that directly stores data files
US20130326128A1 (en) Methods and Apparatus for Passing Information to a Host System to Suggest Logical Locations to Allocate to a File