JP2009503743A - Managing memory blocks that store data files directly - Google Patents

Managing memory blocks that store data files directly Download PDF

Info

Publication number
JP2009503743A
JP2009503743A JP2008525168A JP2008525168A JP2009503743A JP 2009503743 A JP2009503743 A JP 2009503743A JP 2008525168 A JP2008525168 A JP 2008525168A JP 2008525168 A JP2008525168 A JP 2008525168A JP 2009503743 A JP2009503743 A JP 2009503743A
Authority
JP
Japan
Prior art keywords
data
file
block
blocks
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
JP2008525168A
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/382,224 external-priority patent/US8055832B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of JP2009503743A publication Critical patent/JP2009503743A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

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)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

メモリの中間論理アドレスまたは仮想アドレス空間を利用しないで、各ファイルの一意の識別名とファイル内のデータのオフセットとを用いて、大容量消去ブロックのフラッシュメモリシステムに、直接ホストシステムのデータファイルの書き込みを行う。メモリのどこにファイルを記憶してあるかについてのディレクトリ情報を、ホストではなく、メモリシステムのコントローラにより、メモリシステム内に保持する。メモリブロックの種類を選択して、ファイルのデータの書き込みがすでに行われたブロックの種類に依存する、ファイルの追加データを受け取る。有効なデータ量が最も少ないものから開始するようにブロックを選択する処理により、データを含んでいるブロックを選択して、そこから使われていない容量を解放する。  Without using the intermediate logical address or virtual address space of the memory, using the unique identification name of each file and the offset of the data in the file, the flash memory system of the large-capacity erase block is directly connected to the data file of the host system. Write. Directory information about where the file is stored in the memory is held in the memory system by the controller of the memory system, not by the host. A memory block type is selected to receive additional file data depending on the type of block for which file data has already been written. By selecting a block so as to start with the least amount of valid data, the block containing the data is selected, and the unused capacity is released therefrom.

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号 米国特許出願第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/259,423号 米国特許出願第11/312,985号
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 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 No. 11 / 259,423 US patent application Ser. No. 11 / 312,985

フラッシュメモリシステムのこのように大きな規模の消去ブロックの動作を効率的に行う際に、様々な度合いで確実に生じる問題を克服する技術が、たくさん開発されている。これに対して、本発明は、根本的な変更、すなわち、メモリとホストシステムとの間でデータを転送するインターフェイスの変更に基づいている。仮想アドレス空間内の論理アドレスを用いることにより、メモリとホストシステムとの間でデータ通信を行うことではなく、ホストが割り当てたファイル名によりデータファイルの識別を行い、ファイル内のアドレスのオフセットを行ってそれにアクセスする。メモリシステムは次に、各セクタまたは他の単位のデータが属するホストファイルのことがわかるようになる。ここで説明するファイル単位とは、連続オフセットアドレスなどにより順序づけられたデータセットであって、ホスト演算システム内で動作するアプリケーションプログラムが生成し、かつ一意に識別したデータセットである。   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.

本発明の一態様によれば、メモリの異なるブロック全体にわたるファイルの断片化の度合いを制御する方法により、メモリブロックを選択してファイルのデータを書き込む。これにより、完全に消去したブロックを確保して新しいデータを受け取るために、ファイルのデータをより少ない数のブロックに統合するのに必要な、オーバーヘッド動作の回数と程度とを低減する。従って、効率的なやり方でメモリの全容量を利用するために、はじめにファイルのデータを書き込むブロックを選択し、後でブロック間でのデータ移動をあまり行わないようにすることにより、メモリシステムの性能が向上する。   According to one aspect of the present invention, a memory block is selected and file data is written by a method for controlling the degree of file fragmentation across different blocks of memory. This reduces the number and degree of overhead operations required to consolidate the file data into a smaller number of blocks in order to secure completely erased blocks and receive new data. Therefore, in order to utilize the full capacity of memory in an efficient manner, the performance of the memory system is selected by selecting the block to which the file data is written first and not moving much data between the blocks later. Will improve.

具体的な実施形態では、ファイルのデータをすでに記憶してあるブロックの種類に基づいて、1種類のアクティブブロックを選択して、ホストまたは別のブロックから受け取ったファイルのデータの書き込みを行う。多数の許可されている状態のうちの1つを、システムに記憶した各ファイルに割り当てる。各状態は、2つ以上のファイルのデータを含むブロックおよび/または消去した容量を含むブロックの1つ以上の種類の組み合わせにより定義されている。ファイルのデータを書き込むアクティブブロックとして選択されているブロックの種類は、ファイルの現在の状態に基づいている。   In a specific embodiment, one type of active block is selected based on the type of block in which file data is already stored, and the file data received from the host or another block is written. One of a number of allowed states is assigned to each file stored in the system. Each state is defined by a combination of one or more types of blocks containing data from two or more files and / or blocks containing erased capacity. The type of block selected as the active block to which the file data is written is based on the current state of the file.

本発明の他の態様、利点、特徴および詳細については、添付の図面を参照して説明する、以下の例示の説明に含まれている。   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) ”(特許文献3)に記載のリングバスなどの、他の構成のシステムバスを用いることもできる。   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号(特許文献4)、第5,774,397号(特許文献5)、第6,046,935号(特許文献6)、第6,373,746号(特許文献7)、第6,456,528号(特許文献8)、第6,522,580号(特許文献9)、第6,771,536号(特許文献10)および第6,781,877号(特許文献11)ならびに米国公開特許出願第2003/0147278号(特許文献12)を参照することができる。   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, 046,935 (patent document 6), 6,373,746 (patent document 7), 6,456,528 (patent document 8), 6,522,580 (patent document 9), Reference may be made to US Pat. Nos. 6,771,536 (Patent Document 10) and 6,781,877 (Patent Document 11) and US Published Patent Application 2003/0147278 (Patent Document 12).

図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号(特許文献13)に記載されているような非導電性誘電電荷補足材料とすることもできる。   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 element of a memory cell is generally a conductive floating gate, but is also a non-conductive dielectric charge supplemental material 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号(特許文献14)にいくつか記載されている。   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. Some aspects of memory management and use of metablocks when receiving partial block data updates are described in US Pat. No. 6,763,424 (Patent Document 14).

典型的には、データ圧縮は、処理において無効なデータのあるメタページを無視して、メタブロックからのすべての有効なデータメタページの読み出しと、新しいメタブロックへのそれらの書き込みを行う。有効なデータのあるメタページを、記憶してあるデータの論理アドレス順と一致する物理アドレス順で配列することも好ましい。新しいメタブロックを占有するメタページの数が、古いメタブロックを占有していた数よりも少なくなっている。というのは、無効なデータを含むメタページを新しいメタブロックにコピーしていないからである。次に、古いブロックを消去し、新しいデータの記憶に利用できるようにする。次に、統合で得た追加したメタページの容量を、他のデータの記憶に用いることができる。   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) ”(特許文献15)、2003年12月30日出願の米国特許出願第10/750,155号“ブロック管理システムを用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Block Management System) ”(特許文献16)、2004年8月13日出願の米国特許出願第10/917,888号、現在公開されている公開特許出願第2005/0141313号である“メモリプレーン配列を用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Memory Planes Alignment)”(特許文献17)、現在公開されている公開特許出願第2005/0141312号の2004年8月13日出願の米国特許出願第10/917,867号(特許文献18)、2004年8月13日出願の米国特許出願第10/917,889号、現在公開されている公開特許出願第2005/0166087号である“位相プログラム障害処理を用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Phased Program Failure Handling) ”(特許文献19)、2004年8月13日出願の米国特許出願第10/917,725号、現在公開されている公開特許出願第2005/0144365号である“制御データ管理を用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Control Data Management) ”(特許文献20)、2005年7月27日出願の米国特許出願第11/192,220号“マルチストリーム更新トラックを用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Multi-Stream Update Tracking)”(特許文献21)、2005年7月27日出願の米国特許出願第11/192,386号“スクラッチパッドおよび更新ブロックのための向上した索引付けを用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Improved Indexing for Scratch Pad and Update Blocks) ”(特許文献22)、2005年7月27日出願の米国特許出願第11/191,686号“マルチストリーム更新を用いた不揮発性メモリおよび方法(Non-Volatile Memory and Method with Multi-Stream Updating)”(特許文献23)に記載されている。   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, now published as “Nonvolatile with Mass Erase Block”. Management of Non-Volatile Memory Systems Having Large Erase Blocks "(patent document 15), US patent application Ser. No. 10 / 750,155 filed Dec. 30, 2003,“ Using a block management system. Non-Volatile Memory and Method with Block Management System "(Patent Document 16), US patent application Ser. No. 10 / 917,888, filed Aug. 13, 2004, currently published patent. No. 2005/0141313 “Non-Volatile Memory and Method wit Using Memory Plane Array” h Memory Planes Alignment) ”(Patent Document 17), US Patent Application No. 10 / 917,867 (Patent Document 18) filed Aug. 13, 2004, currently published patent 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 19), US patent application Ser. No. 10 / 917,725 filed Aug. 13, 2004, published patent application No. 2005/0144365 currently published. “Non-Volatile Memory and Method with Control Data Management” (Patent Document 20), US patent application Ser. No. 11 / 192,220, filed Jul. 27, 005 “Non-Volatile Memory and Method with Multi-Stream Update Tracking” (Patent Document 21) 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 22), 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 23).

大容量消去ブロックを有するメモリアレイの動作を効率的に制御する課題の1つは、任意の書き込み動作の間に記憶が行われているデータセクタの数を、メモリのブロックの容量および境界と一致させ、調整することである。アプローチの1つは、全メタブロックを満杯にする量よりも少ないデータ量を記憶する必要がある場合、ホストからの新しいデータの記憶に用いられるメタブロックを、最大数のブロックよりも少ない数で構成することである。適応メタブロックの利用については、2003年12月30日出願の米国特許出願第10/749,189号、現在公開されている公開特許出願第2005/0144357号である“適応メタブロック(Adaptive Metablocks) ”(特許文献24)に記載されている。データブロック間の境界およびメタブロック間の物理境界のフィッティングについては、現在公開されている公開特許出願第2005/0144363号の2004年5月7日出願の米国特許出願第10/841,118号(特許文献25)、2004年12月16日出願の米国特許出願第11/016,271号、現在公開されている公開特許出願第2005/0144367号である“データランプログラミング(Data Run Programming)”(特許文献26)に記載されている。   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 24). 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 25), US Patent Application No. 11 / 016,271, filed December 16, 2004, and published patent application No. 2005/0144367, “Data Run Programming” ( Patent Document 26).

メモリコントローラは、FAT表からのデータも用いる。これは、ホストが不揮発性メモリに記憶したもので、メモリシステムの動作をより効率的に行う。このような利用の1つは、ホストが識別したデータが使われなくなって、それらの論理アドレスの割り当てを解除する際に、学習することである。これを知ることにより、通常、ホストが書き込みを行う新しいデータをそれらの論理アドレスに書き込むことにより学習する前に、メモリコントローラが、このような無効なデータを含むブロックを消去するスケジュールをたてることが可能になる。このことは、2004年7月21日出願の米国特許出願第10/897,049号、現在公開されている公開特許出願第2006/0020744号である“不揮発性メモリシステム上のデータを保持する方法および装置(Method and Apparatus for Maintaining Data on Non-Volatile Memory Systems)”(特許文献27)に記載されている。他の技術は、任意の書き込み動作を1つのファイルに行うのかどうかを推理するために、すなわち、複数のファイルの間に境界があるかどうかを推理するために、新しいデータをメモリに書き込むホストのパターンの監視を行うことを含んでいる。2004年12月23日出願の米国特許出願第11/022,369号、現在公開されている公開特許出願第2006/0020745号である“最適化順次クラスタ管理のためのFAT分析(FAT Analysis for Optimized Sequential Cluster Management)”(特許文献28)に、このタイプの技術の利用について記載されている。   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, “Methods of Retaining Data on Nonvolatile Memory Systems. And “Method and Apparatus for Maintaining Data on Non-Volatile Memory Systems” (Patent Document 27). 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 2006/0020745, “FAT Analysis for Optimized Sequential Cluster Management”. (Sequential Cluster Management) "(Patent Document 28) 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は、データを識別したファイルに基づいて、フラッシュメモリへのデータの記憶を整理し、データを記憶するブロックが2つ以上のファイルになることを最小限にする。メモリ603の物理メモリセルブロックが、データ管理の基本単位である。   The file block management function 605 organizes the storage of data in the flash memory based on the file in which the data is identified, and minimizes that the block storing the data becomes two or more files. A physical memory cell block of the memory 603 is a basic unit of data management.

個別のメタページが特定のファイル内で連続する論理オフセットアドレス範囲のデータを含むように、機能607により、データをメタページに整理して、メモリ603に書き込みを行う。機能609は、メモリ603へのアクセスを制御し、そこに記憶してあるデータの読み出しを行う。ホストからコマンドを受けた場合、ファイルのデータの消去を行うことにより、機能611に、機能613が保持しているファイル索引付け情報および機能615内のブロックのリストの更新を行わせる。   The function 607 organizes the data into metapages and writes them to the memory 603 so that the individual metapages include data in a logical offset address range that is continuous within a specific file. A function 609 controls access to the memory 603 and reads data stored therein. When a command is received from the host, the function 611 is made to update the file indexing information held by the function 613 and the block list in the function 615 by erasing the file data.

ファイルデータ索引付け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 list 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号(特許文献29)を参照されたい。変換層621およびインターフェイス層623の情報についてはさらに、発明者アラン・シンクレア(Alan Sinclair) による2005年12月21日出願の米国特許出願第11/316,577号(特許文献30)により得られる。   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.

好ましくは、各ファイルのデータのオフセットを、前の説明によるファイルの生成または変更を行った後で、正しい論理的順序で連続して保持する。従って、データをファイルに挿入する動作の一部として、例えば、ホストが行った挿入したデータのオフセットは、挿入の直前のオフセットから連続し、挿入後のすでにファイルに入っているデータを、挿入したデータ量で増分する。最も一般的には、既存のファイルの更新を行うと、類似量の更新データで置き換えられた既存のファイルの任意のアドレス範囲のデータになるので、通常、他のファイルのデータのオフセットを置き換える必要はない。   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.

ファイルブロックの管理
図11のファイル対ブロックマッピング機能605の一例を以下に説明する。外部ホストまたはホスト内部処理のいずれかから、メモリシステムにデータの書き込みを行うか、またはデータ解放動作の一部として、メモリの他の位置からコピーする場合、特定の処理に基づいて、データを記憶する宛先ブロックを選択する。この処理では、記憶してあるファイルデータの構造に基づいて、特定のブロックの種類を認識する。次に、多数の状態のうちの1つとして、メモリシステムに記憶してある各ファイルに注記を行う。ファイルの状態はそれぞれ、ファイルのデータを記憶してあるブロックの数と種類とで定義済みである。ファイルにデータの書き込みを行う場合、その現在の状態と、ある状態から別の状態へ許可されている遷移とを制御して、1つ以上の他のファイルのデータも含んでいる特定のファイルのデータを含むブロックの数を制限する。これにより、メモリブロックの効率的な利用を促進し、新しいデータまたはコピーしたデータを受け入れるのに十分な消去ブロックを全メモリで保持するのに必要な、後で行う解放動作の頻度を低減する。
File Block Management An example of the file-to-block mapping function 605 in FIG. 11 will be described below. When writing data to the memory system from either an external host or host internal process, or copying from another location in memory as part of a data release operation, the data is stored based on a specific process Select the destination block to be used. In this processing, the type of a specific block is recognized based on the stored file data structure. Next, annotate each file stored in the memory system as one of a number of states. Each file state is defined by the number and type of blocks storing file data. When writing data to a file, it controls the current state and the transitions that are allowed from one state to another state, and the specific file that contains data from one or more other files Limit the number of blocks that contain data. This facilitates efficient use of the memory blocks and reduces the frequency of subsequent release operations required to hold enough erase blocks in the entire memory to accept new or copied data.

この例で認識される、ファイルデータを含むブロックの種類は以下の通りである。
“ファイルブロック”とは、完全にプログラミングが行われ、1つのファイルの有効なデータを含んでいる。使われなくなったデータをいくつか含んでいることもある。
“プログラムブロック”とは、部分的にプログラミングが行われ、1つのファイルにだけ有効なデータを含んでいる。消去した容量がいくらかブロックに残っている。使われなくなったデータをいくつか含んでいることもある。
“共有ブロック”とは、部分的にプログラミングが行われ、2つ以上のファイルに有効なデータを含んでいる。消去した容量がいくらか残っている。使われなくなったデータをいくつか含んでいることもある。
“フル共有ブロック”とは、プログラミングが完全に行われ、2つ以上のファイルに有効なデータを含んでいる。使われなくなったデータをいくつか含んでいることもある。
“フルプログラムブロック”とは、ファイルに直近に書き込まれたデータと使われなくなったデータとを含む場合、満杯になったプログラムブロックに対する一時指定であり、ファイルに対し存在するオフセットアドレスの範囲は、1つのブロックが収容可能ものである。ファイルに書き込む次のデータが、1つのブロックが収容可能なオフセットアドレスの範囲を超えている場合、フルプログラムブロックは次に、ファイルブロックとして指定を受ける。完全プログラムブロックは、既存の論理ブロックアドレス(LBA)システムの完全な無秩序(Chaotic) ブロックに相当する。というのは、一旦有効なデータの指定を行って、使われなくなったデータを少なくとも別のときに1回指定したならば、このブロックにファイルの特定の論理オフセットの書き込みを複数回行うからである。
The types of blocks including file data recognized in this example are as follows.
A “file block” is completely programmed and contains valid data from one file. May contain some data that is no longer used.
A “program block” is partially programmed and contains valid data in only one file. Some erased capacity remains in the block. May contain some data that is no longer used.
A “shared block” is partially programmed and contains valid data in two or more files. Some erased capacity remains. May contain some data that is no longer used.
A “full shared block” is fully programmed and contains valid data in two or more files. May contain some data that is no longer used.
A “full program block” is a temporary designation for a program block that is full when it includes data that was most recently written to the file and data that is no longer used. One block can be accommodated. If the next data to be written to the file exceeds the range of offset addresses that one block can accommodate, the full program block is then designated as a file block. A complete program block corresponds to a complete Chaotic block in an existing logical block address (LBA) system. This is because once valid data is specified and data that is no longer used is specified at least once, the specific logical offset of the file is written to this block multiple times. .

別のブロックの種類は、“消去ブロック”であり、ブロックの全容量のプログラミングを行わず、データを受け入れられるようにしたものである。メモリが満杯であったり、または全データ量に近かったりする場合、典型的には、使用されているブロック内に存在する使われていない容量を連続して解放することにより、指定の最小数の消去ブロックのプールを保持する。   Another type of block is an “erase block”, which allows data to be received without programming the full capacity of the block. When memory is full or close to the total amount of data, a specified minimum number is typically achieved by continuously releasing unused capacity in the used blocks. Maintain a pool of erase blocks.

“フラクタルブロック”とは、プログラムブロック、共有ブロックまたはフル共有ブロックのことを言う全体的な用語である。ファイルのフラクタルブロックは、プログラミングを行わないメモリ容量、他のファイルの有効なデータのいずれか、または両方とともに、有効なファイルのデータを含んでいる。ここで説明する技術の主な目的は、ファイルのデータを受け取ると指定されているアクティブブロックの種類を管理することにより、メモリシステム内のフラクタルブロックの数を最小限にすることである。これにより、指定の最小数の消去ブロックを保持するのに必要なガーベッジコレクションおよびデータ統合(ブロック解放動作)の原因を低減する。そして、データの内部コピーを行って、前にプログラミングを行ったブロック内の使われていない容量の断片を解放するのに時間がかからないので、メモリにデータの書き込みを行う速度が上がる。   “Fractal block” is an overall term that refers to a program block, shared block, or full shared block. The fractal block of a file contains valid file data, along with either unprogrammed memory capacity, valid data from other files, or both. The main purpose of the technique described here is to minimize the number of fractal blocks in the memory system by managing the type of active block that is designated to receive file data. This reduces the cause of garbage collection and data consolidation (block release operations) required to hold a specified minimum number of erase blocks. And since it takes no time to perform an internal copy of the data and free up unused pieces of the previously programmed block, the speed at which the data is written to the memory is increased.

ここで他の種類のブロックについて用いられる用語を、まとめて説明する。
“部分ブロック”とは、プログラミングを行わない容量、1つ以上のファイルの有効なデータを含むもので、使われなくなったデータを含む場合もある。プログラムブロックおよび共有ブロックが、部分ブロックの一例である。
“使われなくなったブロック”とは、使われなくなったデータを含むファイルブロックまたはフル共有ブロックである。使われなくなったブロックは、消去した容量を含まず、有効なデータおよび使われなくなったデータの両方を含んでいる。
“無効なブロック”とは、有効なデータを全く含まないものである。無効なブロックは、少なくとも使われなくなったデータを含み、有効なデータを含まない、消去した容量を含んでいる場合もある。
Here, terms used for other types of blocks will be described together.
A “partial block” includes a non-programming capacity and valid data of one or more files, and may include data that is no longer used. A program block and a shared block are examples of partial blocks.
A “block that is no longer used” is a file block or a full shared block that contains data that is no longer used. Blocks that are no longer used do not include erased capacity, but include both valid and unused data.
An “invalid block” is one that does not contain any valid data. An invalid block contains at least data that is no longer used and may contain erased capacity that does not contain valid data.

図14A〜図14Eは、前に説明した種類のブロックを用いる例をいくつか示している。図14Aでは、ファイルAのデータが、ブロック661および663に埋められ、第3のブロック665に部分的に埋められている。この例の各ブロックには、左から右へデータの書き込みを行う。まずブロック661を埋め、次に、ブロック663を埋め、その後、ブロック665の一部分に書き込みを行う。残っているブロック665の部分は、追加のデータを記憶可能な、プログラミングを行わない消去した容量である。ブロック661および663は、前の定義によるファイルブロックであり、ブロック665はプログラムブロックである。新しいデータがあれば、ブロック665に書き込みを行い、プログラムポインタPから開始する。ブロックにデータの書き込みを行う際に、ポインタPは左から右へ移動して、ブロックの次に利用可能な記憶位置を常に示している。プログラミングを行わない消去した容量を保持する個別のブロックに対して、現在アクティブであるかどうかをこのようなポインタが保持するので、ブロックに書き込みを行う他のデータの物理アドレスが常にわかるようになる。   14A-14E show several examples using blocks of the type previously described. In FIG. 14A, the data of file A is embedded in blocks 661 and 663 and partially embedded in the third block 665. Data is written in each block in this example from left to right. First, the block 661 is filled, then the block 663 is filled, and then a part of the block 665 is written. The remaining portion of block 665 is an erased capacity that can store additional data without programming. Blocks 661 and 663 are file blocks according to the previous definition, and block 665 is a program block. If there is new data, write to block 665 and start from program pointer P. When writing data to a block, the pointer P moves from left to right and always indicates the next available storage location after the block. For individual blocks that hold erased capacity without programming, such pointers hold whether they are currently active, so that the physical address of other data that writes to the block is always known. .

一例として、図14Bは、ファイルブロック662とフルプログラムブロック667とに記憶したファイルAを示す。フルプログラムブロックに対する前の定義により、ブロック667は、ファイルAの直近の書き込みデータと、使われなくなったデータとを含み、使われていない容量はない。また、前の定義により、2つのブロック662および667に記憶したファイルAの全データ量は、1つのブロックの記憶容量に等しい。プログラムポインタPが示すブロック667の終端に、ファイルAの最後のデータが書き込まれている。さらにファイルAのデータを受信した場合、別のブロックに対しプログラミングを行う。そのブロックが、ブロック667のファイルAのデータを集めた別のブロックになる。というのは、使われなくなったデータが占有する空間を解放するからである。あるいは、完全に消去したブロックに、追加データの書き込みを行うことができる。いずれの場合も、ポインタPは、追加したファイルAのデータの開始位置の新しいブロックに移動する。次に、ブロック667がファイルブロックになる。従って、まさに図14Bに示したときだけ存在するので、ブロック667は過渡的なものである。ファイルAのデータですべて埋まってしまう直前のものがプログラムブロックであって、ファイルAの新しいデータが書き込まれると直ちに、ファイルブロックになる。   As an example, FIG. 14B shows file A stored in file block 662 and full program block 667. By the previous definition for the full program block, block 667 contains the most recently written data of file A and the data that is no longer used, and there is no unused capacity. Further, according to the previous definition, the total data amount of the file A stored in the two blocks 662 and 667 is equal to the storage capacity of one block. The last data of the file A is written at the end of the block 667 indicated by the program pointer P. Further, when data of file A is received, programming is performed for another block. That block becomes another block in which data of file A in block 667 is collected. This is because it frees up space occupied by data that is no longer used. Alternatively, additional data can be written into a completely erased block. In either case, the pointer P moves to a new block at the start position of the data of the added file A. Next, block 667 becomes a file block. Therefore, block 667 is transient because it exists only as shown in FIG. 14B. The program block immediately before being completely filled with the data of file A is a program block. As soon as new data of file A is written, it becomes a file block.

図14Cの例は、共有ブロックであるブロック669を含んでいる。というのは、別のファイルBのデータとともに、現在のファイルAのデータと、プログラミングを行わない容量とを含んでいるからである。ファイルAの終端でブロック669に新しいデータの書き込みを行い、プログラムポインタPが示すところから開始する。ブロック669は、ファイルAのアクティブブロックである。プログラムポインタPのところでファイルAまたはBの追加データの書き込みを行う場合には、ファイルBのアクティブブロックである場合もある。あるいは、個別のブロック(図示せず)がファイルBのアクティブブロックであってもよい。   The example of FIG. 14C includes a block 669 that is a shared block. This is because the data of the current file A and the capacity not to be programmed are included together with the data of another file B. At the end of file A, new data is written to block 669, starting from where program pointer P indicates. Block 669 is the active block of file A. When additional data of file A or B is written at program pointer P, it may be an active block of file B. Alternatively, the individual block (not shown) may be the active block of file B.

この形態のプログラミングを行わない容量をうまく利用するために、消去ブロックではなく、別のファイルのデータをすでに含んでいる部分ブロックの消去した容量に直接ファイルのデータの書き込みを行ってもよい。これは特に、ファイルデータの量が満杯のブロックの容量より少ないとわかっているファイルデータの書き込みを行う場合に、有益である。既存の部分ブロックの検索を行って、書き込みを行うデータの量がわかっているデータに合う消去した容量の量を検出する。データのページの数(または、メタブロックを用いる場合はメタページ)を、部分ブロック内のプログラミングを行わない、消去した容量のページの数と比較する。このようにプログラムブロックの使われていない消去が行われた空間に対しプログラミングを行う場合、共有ブロックに変換する。   In order to make good use of the capacity without this form of programming, the file data may be written directly into the erased capacity of the partial block that already contains the data of another file instead of the erase block. This is particularly beneficial when writing file data where the amount of file data is known to be less than the capacity of a full block. An existing partial block is searched to detect the amount of erased capacity that matches the data for which the amount of data to be written is known. The number of pages of data (or metapages if using metablocks) is compared to the number of erased pages without programming in the partial block. In this way, when programming is performed on the space where the program block is not used, it is converted to a shared block.

図14Dでは、ファイルブロック661と、ブロック671の一部分と、ブロック673の一部分とにファイルAを記憶してある。2つのファイルAおよびBのデータで満杯なので、ブロック671はフル共有ブロックである。ブロック673は、図14Aのブロック665と同様のプログラムブロックである。ブロック673はファイルのアクティブブロックであり、ポインタPがブロック673内の使われていない容量の位置を指し、追加データの書き込みを開始するところである。   In FIG. 14D, the file A is stored in the file block 661, a part of the block 671, and a part of the block 673. Block 671 is a full shared block because it is full of data from two files A and B. Block 673 is a program block similar to block 665 of FIG. 14A. A block 673 is an active block of the file, and the pointer P points to an unused capacity position in the block 673, and writing of additional data is started.

図14Eの例では、フル共有ブロック671および共有ブロック675の一部分にファイルAの書き込みを行う。ブロック675は、第3のファイルCのデータを含んでいる。ポインタPは、アクティブブロック675の使われていない部分の最初の位置を指し、追加データの書き込みを行うところである。   In the example of FIG. 14E, the file A is written to a part of the full shared block 671 and the shared block 675. Block 675 contains data for third file C. The pointer P points to the first position of the unused portion of the active block 675 and is where additional data is written.

図14A〜図14Eの例では、いくつかの異なる種類のブロックを説明するために、複数のブロックにファイルのデータを記憶してあるものを示しているが、多くの場合、ファイルを記憶するには、もっと少ない数のブロックで十分であって、1つのブロックでも十分である。ここで説明する技術は、このような小さいファイルにも適用可能である。また、大きいファイルは、4つ以上のブロックのページを占有することになる。   In the example of FIGS. 14A to 14E, in order to explain several different types of blocks, the data of the file is stored in a plurality of blocks. However, in many cases, the file is stored. A smaller number of blocks is sufficient, and a single block is sufficient. The technique described here can be applied to such a small file. In addition, a large file occupies a page of four or more blocks.

ブロック665、667、669、671、673および675は、フラクタルブロックであることに留意されたい。任意の1つのファイルのデータが占有するフラクタルブロックの数を最小限にすることが望ましい。というのは、それらブロックが存在することで、それらの使われていない容量を解放する必要性が増すので、システムの性能に悪影響を与えるからである。使われていない消去した容量は、部分ブロック665、669、673および675にあるが、ファイルの書き込みが行われていないデータ量がわかっていて、かつそのわかっている量が、これらのブロックのうちの1つの使われていない容量と一致していなければ、ホストからの新しいデータの書き込みをこの空間に直接行うことを効率的に行えない。最も一般的には、特定のファイルに対するホストからのデータ量がわかっていないので、これらのビットの容量をすぐには埋められない。従って、メモリ容量を効率的に利用するために、解放動作を行う間、別のブロックから使われていない空間へデータを移動する必要がある場合もある。ブロック669、671および675は2つ以上のファイルのデータを含み、このことは、ファイルのうちの1つを削除したり、または共有ブロックに記憶したそのデータが使われなくなったりした場合、データの解放を行って、使われなくなったデータが占有するブロックの容量を解放する可能性があることを意味している。   Note that blocks 665, 667, 669, 671, 673 and 675 are fractal blocks. It is desirable to minimize the number of fractal blocks occupied by any one file data. This is because the presence of these blocks adversely affects the performance of the system because it increases the need to free up unused capacity. Unused erased capacity is in partial blocks 665, 669, 673, and 675, but the amount of data that has not been written to the file is known, and the known amount is the amount of these blocks. If it does not coincide with one unused capacity, it is not possible to efficiently write new data directly from this host to this space. Most commonly, the amount of data from the host for a particular file is not known, so the capacity of these bits cannot be filled immediately. Therefore, in order to efficiently use the memory capacity, it may be necessary to move data from another block to an unused space during the release operation. Blocks 669, 671, and 675 contain data for more than one file, which means that if one of the files is deleted or the data stored in the shared block is no longer used, This means that there is a possibility of releasing the capacity of the block occupied by data that is no longer used.

従って、データ解放動作に必要な時間を減らすために、1つ、2つまたは他の数のフラクタルブロックに限って1度に特定のファイルのデータを記憶できるようにする。ここで説明する具体例では、2つ以下のフラクタルブロックにしか任意の1つのファイルのデータを記憶しないようにする。新しいアクティブブロックを指定してファイルのデータを記憶する処理について考える。許可されているファイル状態のセットのうちの1つを、ファイルのデータを記憶してあるブロックの種類で定義済みの各ファイルに割り当てる。既存のブロックが満杯になった場合などで、特定のファイルのデータを受け取るのに新しいアクティブブロックに割り当てが必要な場合、ファイルの状態によりブロックの種類をこのように指定するが、多くの場合、他の要因も考えられる。   Therefore, in order to reduce the time required for the data release operation, only one, two, or other number of fractal blocks can store data of a particular file at a time. In the specific example described here, data of one arbitrary file is stored only in two or less fractal blocks. Consider a process of specifying a new active block and storing file data. One of the set of allowed file states is assigned to each file defined with the type of block in which the file data is stored. If a new active block needs to be allocated to receive data for a particular file, such as when an existing block is full, the file type specifies the block type in this way. Other factors are possible.

ここで説明するメモリ動作のコンセプトの具体的な実施例における、フラクタルブロックおよびファイルのデータを記憶してあるフルプログラムブロックの種類および組み合わせについて、10の許可されているファイル状態0〜9の定義を図15の表に示す。許可されているファイル状態のそれぞれにより、たった2つのフラクタルブロックまたは1つのフルプログラムブロックに対してデータの記憶が可能になる。ファイルに対応付けられているファイルブロックの数に、制限はない。メモリがホストからそのデータを受け取る場合と、解放動作を行う間メモリ内でデータを再配置する場合との2つの場合では、これらのファイル状態を用いて、ファイルデータを記憶するアクティブブロックを選択する。メモリシステムに記憶してある全ファイルの状態を監視して、他の情報とともに、ファイルのFITレコードのヘッダといったファイルインデックステーブル(FIT)613(図11)に、記録する。状態遷移が発生した場合は必ず、FITエントリを更新して、新しいファイル状態に記録する。   Define 10 allowed file states 0-9 for the types and combinations of fractal blocks and full program blocks that store file data in the specific embodiment of the memory operation concept described here. It is shown in the table of FIG. Each allowed file state allows data to be stored in only two fractal blocks or one full program block. There is no limit to the number of file blocks associated with a file. In two cases, the case where the memory receives the data from the host and the case where the data is rearranged in the memory during the release operation, an active block for storing the file data is selected using these file states. . The status of all files stored in the memory system is monitored and recorded together with other information in a file index table (FIT) 613 (FIG. 11) such as the header of the FIT record of the file. Whenever a state transition occurs, the FIT entry is updated and recorded in a new file state.

図15で定義済みのファイル状態0〜9の間の得られる主な遷移について、図16の状態図を示し、図17の表で説明する。これらの3つの図から、好適なメモリシステムの動作の詳細がわかり、この動作を行うのに十分であると考えられる。しかし、この動作のある態様について、さらに説明する。   The main transitions obtained between the file states 0 to 9 defined in FIG. 15 are shown in the state diagram of FIG. From these three figures, the details of the operation of the preferred memory system are known and considered sufficient to perform this operation. However, some aspects of this operation are further described.

図15の表に示すように、フラクタルブロックにデータがないので、ファイルを状態0と指定する。他の種類のブロックがファイルブロックだけなので、ファイルのデータは1つ以上のファイルブロックにしか書き込まれないものか、ファイルのデータをどのブロックにも記憶していないものかのいずれかである。前者が、データ量とブロック容量との間で必要な正確さによる一時的条件である可能性が一番大きい。この後者の条件は、メモリシステムが新しいファイルの情報を受け取ったものの、そのファイルのデータの書き込みをまだ行っていない場合に発生する。いずれの場合も、アクティブブロックがデータを受信すると指定する必要がある。ホストから長さがわからないデータを受け取った場合、消去ブロックをアクティブブロックとして指定する。一旦、消去ブロックにデータの書き込みを行ったならば、このブロックがアクティブプログラムブロックになったので、状態0から状態2へファイルが遷移する(図16を参照)。   As shown in the table of FIG. 15, since there is no data in the fractal block, the file is designated as state 0. Since the only other type of block is a file block, the file data is either written to only one or more file blocks, or the file data is not stored in any block. The former is most likely a temporary condition due to the required accuracy between data volume and block capacity. This latter condition occurs when the memory system has received information about a new file but has not yet written data for that file. In either case, it is necessary to specify that the active block receives data. When data whose length is unknown is received from the host, the erase block is designated as the active block. Once data has been written to the erase block, this block has become an active program block, so the file transitions from state 0 to state 2 (see FIG. 16).

しかし、ファイル状態0であり、ホストから受け取った新しいファイルのデータの長さがブロックの記憶容量より小さいとわかっている場合、消去した容量が、わかっているデータ量を記憶するのに十分に利用可能ならば、部分ブロックをアクティブブロックとして指定する。次に、ファイルは状態0から状態3へ遷移する(図16を参照)。このような部分ブロックは、プログラムブロックまたは共有ブロックである。長さがわかっているデータと、利用可能な部分ブロックの残っている記憶容量との間で、考えられる最良適合となる。量がわかっているデータに対して十分な容量のある部分ブロックがまったくなければ、消去ブロックにデータの書き込みを行うことにより、状態0から状態2へファイルが遷移する。   However, if the file status is 0 and the length of the new file data received from the host is known to be less than the storage capacity of the block, the erased capacity is sufficient to store the known amount of data. If possible, designate the partial block as the active block. Next, the file transitions from state 0 to state 3 (see FIG. 16). Such a partial block is a program block or a shared block. The best possible fit is between the data of known length and the remaining storage capacity of the available partial blocks. If there is no partial block having a sufficient capacity for the data whose amount is known, the file transitions from the state 0 to the state 2 by writing data in the erase block.

状態2のファイルの特徴は、プログラムブロックが、ファイルの追加データの受け取りに割り当てられていることである。しかし、ファイルが十分大きければ、ブロックは最終的に満杯になり、次に、別のアクティブブロックを指定する必要がある。今はファイルブロックである満杯のブロックには、使われなくなったデータは含まれず、ファイルは状態0に戻る。ここでは、アクティブブロックと指定しない。次に、前述したように、追加データを記憶する量によるが、消去ブロックまたは部分ブロックを、新しいアクティブブロックとして指定する。しかし、満杯のブロックに使われなくなったデータが含まれていて、ファイルの最大オフセットが、1つのブロックが収容可能なオフセットアドレスの範囲より小さければ、前の定義により、フルプログラムブロックになる。次に、好ましくは、その有効なデータを消去ブロックにコピーすることにより、ブロックを圧縮し、もともとのブロックを消去する。得られるブロックは、この有効なデータと消去した容量とを含むので、部分ブロックになる。次に、この新しい部分ブロックがアクティブプログラムブロックになる。ファイルの状態は、状態2から状態1へ遷移して、状態2に戻る(図16を参照)。しかし、状態1でファイルのデータを受け取って、そのオフセットアドレスが、1つのブロックが収容可能なアドレス範囲を超えている場合、フルプログラムブロックはファイルブロックになる。そして、ファイルは状態0に遷移する。   A characteristic of the file in state 2 is that the program block is assigned to receive additional data of the file. However, if the file is large enough, the block eventually becomes full and then another active block needs to be specified. The full block, which is now a file block, does not contain data that is no longer used, and the file returns to state 0. Here, it is not designated as an active block. Next, as described above, depending on the amount of additional data to be stored, the erase block or partial block is designated as a new active block. However, if data that is no longer used is included in a full block and the maximum offset of the file is smaller than the range of offset addresses that can be accommodated by one block, it becomes a full program block according to the previous definition. Next, the block is preferably compressed by copying the valid data to the erase block, and the original block is erased. Since the obtained block includes this valid data and the erased capacity, it becomes a partial block. This new partial block then becomes the active program block. The state of the file transitions from state 2 to state 1 and returns to state 2 (see FIG. 16). However, when the file data is received in the state 1 and the offset address exceeds the address range that one block can accommodate, the full program block becomes a file block. The file then transitions to state 0.

部分ブロックとして、解放動作を行う間、ファイルが状態2のときに存在するアクティブプログラムブロックを、ソースブロックからの別のファイルの量がわかっているデータの宛先ブロックとして選択する。プログラムブロックのIDを、リストのそれぞれのブロック内に利用可能な消去した容量を含んでいる部分ブロックのリストに保持する。ソースブロックからコピーするデータ量は、リストの部分ブロックの消去した容量と合っている。解放動作を行う間、現在のファイルのプログラムブロックを別のファイルのデータの宛先ブロックとして選択する場合、他のファイルのデータをその消去した容量にコピーした後で、プログラムブロックは、現在のファイルのアクティブ共有ブロックになる。そして、ファイルは、状態2から状態3へ遷移する(図15および図16参照)。   As a partial block, during the release operation, the active program block that exists when the file is in state 2 is selected as the destination block for the data for which the amount of another file from the source block is known. The ID of the program block is kept in a list of partial blocks containing the erased capacity available in each block of the list. The amount of data copied from the source block matches the erased capacity of the partial blocks in the list. If the program block of the current file is selected as the destination block for the data of another file during the release operation, after copying the data of the other file to its erased capacity, the program block Become an active shared block. The file then transitions from state 2 to state 3 (see FIGS. 15 and 16).

さらに、ファイルが状態2の間に、プログラムブロックを解放する動作一部として、ファイルのプログラムブロックに書き込んだデータを、別のファイルのデータを記憶してある部分ブロックである別のブロックにコピーする可能性がある。この状況で、解放動作の宛先ブロックがアクティブ共有ブロックになる。ファイルは状態2から状態4へ遷移する。これで、共有ブロックにファイルの別のデータの書き込みを行うことになり、ファイルのアクティブブロックになる。   Further, as part of the operation of releasing the program block while the file is in state 2, the data written in the program block of the file is copied to another block that is a partial block in which data of another file is stored. there is a possibility. In this situation, the destination block for the release operation becomes the active shared block. The file transitions from state 2 to state 4. Thus, another data of the file is written to the shared block, and the file becomes an active block.

状態2のファイルのアクティブ共有ブロックが満杯になった場合、フル共有ブロックとして指定する。そして、2つのフラクタルブロック、フル共有ブロックおよびプログラムブロックの限度まで、ファイルが入る。別のフラクタルブロックがファイルのデータの受け取りに割り当てられていないので、ファイルのデータをプログラムブロックから消去ブロックにコピーし、この新しいブロックをファイルのアクティブプログラムブロックとして指定する。ファイル状態遷移の一部として、このようなファイルデータのコピーを、ここでは“データ遷移”として識別し、図16および図17にそのように注記する。そして、ファイルは状態4から状態8へ遷移する。   When the active shared block of the file in state 2 becomes full, it is designated as a full shared block. The file then goes to the limit of two fractal blocks, a full shared block and a program block. Since another fractal block is not assigned to receive the file data, the file data is copied from the program block to the erase block and this new block is designated as the active program block of the file. As part of the file state transition, such a copy of the file data is identified herein as a “data transition” and is noted as such in FIGS. The file then transitions from state 4 to state 8.

状態遷移が完了したと見なす前に、すべてのデータ遷移を1つの動作として完了する。このことは、ファイルに、データの書き込みを行うアクティブブロックが必要な場合、データ遷移のデータコピー部分が完了するまで、メモリは他の動作を行うことができないことを意味している。従って、典型的には、このデータコピーを、時間の経過とともに他のメモリ動作と交互に行うことはできない。   All data transitions are completed as one operation before the state transition is considered complete. This means that if the file requires an active block for writing data, the memory cannot perform other operations until the data copy portion of the data transition is complete. Thus, typically, this data copy cannot alternate with other memory operations over time.

ファイル状態4から状態3への遷移は、そのプログラムブロックを解放するブロックと指定する場合に発生する。解放動作の一部として、プログラムブロック内のファイルのデータを共有ブロックに移動する。その後、共有ブロックがファイルのアクティブブロックになる。さらに、一旦、状態4のファイルのアクティブ共有ブロックが満杯になったら、ファイルを2つのフラクタルブロックに記憶する。フラクタルブロックのうちの1つを削除するまで、別のブロックをアクティブブロックとして割り当てることはできない。従って、状態4から状態7への遷移の一部として、プログラムブロック内のデータを部分ブロックの消去した容量に移動し(データ遷移)、これにより、フラクタルプログラムブロックを削除する。そして、得られる共有ブロックがファイルのアクティブブロックになる。   The transition from the file state 4 to the state 3 occurs when the program block is designated as a block to be released. As part of the release operation, the file data in the program block is moved to the shared block. Thereafter, the shared block becomes the active block of the file. Further, once the active shared block of the file in state 4 is full, the file is stored in two fractal blocks. Until one of the fractal blocks is deleted, another block cannot be assigned as the active block. Therefore, as part of the transition from state 4 to state 7, the data in the program block is moved to the erased capacity of the partial block (data transition), thereby deleting the fractal program block. The obtained shared block becomes the active block of the file.

状態3のときに、アクティブ共有ブロックにファイルのデータの書き込みを行う。解放動作を行う間、ファイルのデータをアクティブ共有ブロックから部分ブロックの消去した容量に移動する場合、宛先部分ブロックがファイルの別のデータを書き込むアクティブ共有ブロックになる。そして、ファイルは状態3から状態6へ遷移する。しかし、ソースプログラムブロックから移動するデータ量が、部分ブロックのリスト上の部分ブロックの容量とうまく適合しない場合、共有ブロック内のファイルデータを、そのブロックから消去ブロックへ移動するので、その消去ブロックがファイルのアクティブプログラムブロックになる。そして、ファイルは状態3から状態2へ遷移する。この状態遷移の途中で、アクティブブロックの割り当てが、もともとの共有ブロックから新しい消去ブロックへのデータ遷移を含んでいると、次に、ファイルのアクティブプログラムブロックになる。   In state 3, file data is written to the active shared block. If the file data is moved from the active shared block to the erased capacity of the partial block during the release operation, the destination partial block becomes the active shared block to which another data of the file is written. The file then transitions from state 3 to state 6. However, if the amount of data moved from the source program block does not fit well with the capacity of the partial block on the partial block list, the file data in the shared block is moved from that block to the erase block, so that the erase block Becomes the active program block for the file. The file then transitions from state 3 to state 2. If the active block assignment includes a data transition from the original shared block to the new erase block in the middle of this state transition, then it becomes the active program block of the file.

ファイルが状態3にあるときの別の可能性は、ファイルのデータが書き込まれるアクティブ共有ブロックが満杯になることである。次に、ファイルには別のデータを書き込むアクティブブロックがなくなり、状態5へ遷移する。この状態は、ファイル状態0のときの動作と同様の状態で、ファイルのアクティブブロックはないが、ファイルが状態5のときに、フル共有ブロックにファイルのデータが含まれている点が異なっている。状態0のときには、ファイルのデータを含んでいるフラクタルブロックはない。通常、2つの状態0および5は一時的状態で、この状態から、ファイルの追加データの書き込みを行うと直ちに遷移が始まる。   Another possibility when the file is in state 3 is that the active shared block into which the file's data is written is full. Next, there is no active block for writing other data in the file, and a transition is made to state 5. This state is the same as the operation in the file state 0 and there is no active block of the file. However, when the file is in the state 5, the data of the file is included in the full shared block. . When in state 0, there is no fractal block containing file data. Normally, the two states 0 and 5 are temporary states, and from this state, the transition starts immediately when additional data of the file is written.

状態5のとき、他のファイル状態への考えられる遷移は、状態5でかつ状態0ではないときに、共有ブロックにファイルのデータを記憶することを除いて、ファイルが状態0のときの遷移と同様である。データ量がわからない場合、消去ブロックをファイルの追加データに割り当てるので、アクティブプログラムブロックを生成し、ファイルが状態8へ遷移する。データ量がわかっている場合、部分ブロックの残っている容量に書き込みを行い、大きさがうまく適合したならば、これにより、部分ブロックがアクティブ共有ブロックになり、ファイルは状態5から状態7へ遷移する。状態8のときにフル共有ブロックにファイルのデータを記憶することと、ファイル状態2のときにこのようなブロックがないこととを除いて、ファイル状態8は状態2と同様である。ファイル状態7は、ファイル状態3に関連して同様である。   When in state 5, the possible transitions to other file states are the transitions when the file is in state 0 except that the file data is stored in the shared block when in state 5 and not in state 0. It is the same. If the amount of data is not known, an erase block is assigned to additional data in the file, so an active program block is generated and the file transitions to state 8. If the amount of data is known, write to the remaining capacity of the partial block, and if the size fits well, this makes the partial block an active shared block and the file transitions from state 5 to state 7 To do. File state 8 is the same as state 2 except that file data is stored in the full shared block in state 8 and no such block exists in file state 2. File state 7 is similar to file state 3.

ファイル状態6で、アクティブ共有ブロックがデータで埋められている場合、フル共有ブロックおよび共有ブロックにファイルを記憶する。この実施形態における2つのフラクタルブロックの限度になったので、プログラムブロックまたは他のフラクタルブロックとして、別のブロックを割り当てることはできない。従って、データ遷移が発生しなければならない。データと部分ブロックの消去した容量とのふさわしい適合がなければ、共有ブロックのうちの1つからのファイルのデータを、部分ブロックに移動して(状態7へのファイルの遷移)、ファイルのアクティブ共有ブロックになるか、または消去ブロックに移動する(状態8へのファイルの遷移)。   If the active shared block is filled with data in file state 6, the file is stored in the full shared block and shared block. Since this is the limit of two fractal blocks in this embodiment, another block cannot be assigned as a program block or other fractal block. Therefore, data transition must occur. If there is no suitable match between the data and the erased capacity of the partial block, the file data from one of the shared blocks is moved to the partial block (file transition to state 7) and the file is actively shared Block or move to erase block (file transition to state 8).

ファイル状態7のときは、アクティブ共有ブロックは満杯にならない。ファイルを2つのフル共有ブロックに記憶して、状態9への遷移となる。   When in file state 7, the active shared block is not full. The file is stored in two full shared blocks, and a transition to state 9 occurs.

また、ファイルが状態7のときは、解放するブロックとして共有ブロックを指定するので、次に、ファイルのデータを再配置する必要がある。そして、データ遷移が発生する。ファイルのデータを共有ブロックから消去ブロックに移動し、その後、アクティブプログラムブロックになれば、ファイル状態8への遷移が発生したことになる。そうではなく、ファイルのデータを部分ブロックに移動したならば、部分ブロックは共有ブロックになり、ファイル状態は7のままである。   When the file is in state 7, since the shared block is designated as the block to be released, it is necessary to rearrange the file data. Then, data transition occurs. If the file data is moved from the shared block to the erase block and then becomes the active program block, a transition to the file state 8 has occurred. Instead, if the file data is moved to a partial block, the partial block becomes a shared block and the file state remains at 7.

ファイルに追加データの書き込みを行う間、ファイルは2つのフル共有ブロックに残っているので、ファイル状態9は安定状態である。しかし、ファイルがその状態のときは、指定したアクティブブロックはない。2つのフラクタルブロックの限度があるので、ファイルに追加データの書き込みが可能になる前に、データ遷移は発生しなければならない。一例として、2つのフル共有ブロックのうちの一方のファイルのデータすべてを、消去ブロックに移動すると、このブロックが、ファイルの新しいデータを書き込むためのアクティブプログラムブロックになる。そして、ファイルは状態9から状態8へ遷移する。しかし、2つのフル共有ブロックのうちの一方のファイルのデータ量とファイルの追加データの全量がブロックの容量未満ならば、部分ブロック内の十分に消去が行われた空間を検索する。検出したならば、フル共有ブロックのうちの一方からのファイルのデータを部分ブロックに移動すると、ファイルの追加データの書き込みを行うためのアクティブ共有ブロックになる。これは、状態9から状態7への遷移となる。   While writing additional data to the file, the file remains in two full shared blocks, so file state 9 is stable. However, there is no active block specified when the file is in that state. Since there is a limit of two fractal blocks, a data transition must occur before additional data can be written to the file. As an example, if all the data of one of the two full shared blocks is moved to the erase block, this block becomes the active program block for writing new data of the file. The file then transitions from state 9 to state 8. However, if the amount of data in one of the two full shared blocks and the total amount of additional data in the file are less than the capacity of the block, a sufficiently erased space in the partial block is searched. If detected, moving the file data from one of the full shared blocks to a partial block becomes an active shared block for writing additional data of the file. This is a transition from state 9 to state 7.

ファイル状態8のときは、アクティブプログラムブロックにファイルのデータの書き込みが行われているが、他のファイルのデータは、フル共有ブロックに格納されたままになっている。プログラムブロックが満杯になった場合、ファイルブロックになり、ファイルのアクティブブロックはもうない。そして、状態は状態5に遷移する。さらにファイルが遷移することにより、前述したように、新しいアクティブブロックとして消去ブロックまたは部分ブロックを割り当てることになる。   In the file state 8, file data is written to the active program block, but data of other files is still stored in the full shared block. When a program block becomes full, it becomes a file block and there are no more active blocks in the file. Then, the state transitions to state 5. Further, when the file transitions, as described above, an erase block or a partial block is allocated as a new active block.

しかし、状態8のときに、ファイルのアクティブプログラムブロックを解放動作のための宛先ブロックとして選択した場合、第1の場合では、ファイルの状態は、直接状態7に遷移する。これにより、ファイルの新しいデータを受け取るアクティブの共有ブロックを生成する。あるいは、状態8のときにファイルのアクティブプログラムブロックを解放動作のソースブロックとして指定した場合、ファイルのデータを部分ブロックに移動すると、ファイルに追加データを書き込むためのアクティブ共有ブロックになる。第2の場合では、ファイル状態は、やはり状態8から状態7へ遷移する。   However, when the active program block of the file is selected as the destination block for the release operation in the state 8, the file state directly transitions to the state 7 in the first case. This creates an active shared block that receives new data for the file. Alternatively, when the active program block of the file is designated as the source block of the release operation in the state 8, when the file data is moved to the partial block, it becomes an active shared block for writing additional data to the file. In the second case, the file state also transitions from state 8 to state 7.

図16および図17に示す主なファイル状態遷移の他に、発生する第2のファイルの遷移のセットがある。これらを図18および図19に示す。現在注目のファイルのこれらの第2の遷移は、現在のファイルのデータを含んでいるフラクタルブロック内に記憶した1つのファイルのデータすべてが使われなくなったときに発生する。使われなくなったデータは、現在のファイルのものであったり、または他のファイルのものであったりする。ホストがファイルを削除した結果として、ホストがファイルに前に書き込みを行ったデータを更新した結果として、または解放動作を行う間、ファイルのデータを再配置した結果として、データが使われなくなる。ファイルを更新する途中で、例えば、別のブロックに新しいデータの書き込みを行うことによりすべてを更新した場合、共有ブロックに記憶したファイルのデータすべてが使われなくなる。一例の解放動作では、現在注目のファイルではない、共有ブロック内のファイルのデータを別のブロックにコピーした場合、共有ブロック内の他のファイルのデータが使われないようにしておく。   In addition to the main file state transitions shown in FIGS. 16 and 17, there is a set of second file transitions that occur. These are shown in FIGS. These second transitions of the current file of interest occur when all of the data of one file stored in the fractal block containing the data of the current file is no longer used. The data that is no longer used may be from the current file or from another file. Data is no longer used as a result of the host deleting the file, as a result of updating data previously written to the file by the host, or as a result of rearranging file data during the release operation. In the middle of updating a file, for example, when all data is updated by writing new data to another block, all data of the file stored in the shared block is not used. In one example of the release operation, when data of a file in a shared block that is not the file of interest is copied to another block, the data of the other file in the shared block is not used.

これらの状況でデータを使わないようにすることにより、使われなくなったデータを記憶してあるブロックの種類を変更し、ファイルの状態が変わることになる。ファイルのデータ用に新しいアクティブブロックが必要な場合、新しいファイル状態に基づいて、図16および図17に関連して説明したやり方で選択する。   By not using data in these situations, the type of block storing data that is no longer used is changed, and the state of the file changes. If a new active block is needed for the file data, it is selected in the manner described in connection with FIGS. 16 and 17 based on the new file status.

図18の遷移と、発生する特定の遷移の図19の識別名とが、これらのすべての説明になる。これらの遷移により、ファイルのデータを含んでいるフラクタルブロックの数が減る傾向にあるので、ファイル状態を簡素化することに留意されたい。これらの遷移により、ファイルの状態が、フラクタルブロックがない状態0に移行しやすくなる。   The transition of FIG. 18 and the identification name of FIG. 19 of the particular transition that occurs are all these descriptions. Note that these transitions simplify the file state because they tend to reduce the number of fractal blocks that contain file data. These transitions facilitate the transition of the file state to state 0 where there is no fractal block.

ファイルに対しデータのプログラミングを行うが、現在のファイルにアクティブブロックがない場合に、ファイル状態の情報を利用して、ファイルのアクティブブロックとして割り当てられたブロックの種類を判定する。図20の表の右側の欄に、真ん中の欄で述べた条件下での状態0〜9の任意の1つでファイルに対するアクティブブロックの割り当てをまとめている。ブロックの種類は、図に示す順である。“最良適合部分ブロック”は、量がわかっているデータを効率的に利用できる量の消去した容量を有する部分ブロックを意味する。ふさわしい部分ブロックがない場合、最も一般的には消去ブロックを選択する。しかし、状態2または3のいずれかで、ファイルの最良適合の部分ブロックを識別できない場合、“最大部分ブロック”を割り当てる。これは、書き込まれる全データ量を十分処理できる消去した容量がないブロックであるが、そのデータの最大量を処理可能なブロックである。次に、ファイルの状態を変更し、新しい状態でブロックの選択を制御して、最大部分ブロックに適合しない残っているデータ量を受け付ける。しかし、データ量および部分ブロック内の利用可能な容量により、最大部分ブロックを利用してもデータを3つ以上のブロックに分割するようになる場合、消去ブロックをアクティブブロックとして割り当てる。   When data is programmed for a file, but there are no active blocks in the current file, the file status information is used to determine the type of block assigned as the active block of the file. The right column of the table of FIG. 20 summarizes the allocation of active blocks to files in any one of states 0-9 under the conditions described in the middle column. The types of blocks are in the order shown in the figure. “Best-fit sub-block” means a sub-block with an erased capacity of an amount that can efficiently utilize data of known amount. If there is no suitable partial block, the erase block is most commonly selected. However, if in either state 2 or 3, the best-fit partial block of the file cannot be identified, the “maximum partial block” is assigned. This is a block having no erased capacity that can sufficiently process the total amount of data to be written, but is a block capable of processing the maximum amount of data. Next, the state of the file is changed, and the selection of the block is controlled in the new state, and the remaining data amount that does not conform to the maximum partial block is accepted. However, if the data is divided into three or more blocks even if the maximum partial block is used due to the amount of data and the available capacity in the partial block, the erase block is assigned as an active block.

前述した動作を、図2に示す一例のメモリシステムに格納しているファームウェアを実行する、コントローラ11のプロセッサ27が実行してもよい。   The above-described operation may be executed by the processor 27 of the controller 11 that executes firmware stored in the memory system of the example illustrated in FIG.

ブロック容量の解放
前述したように、ブロック管理の一部には、ブロック内の使われていない容量を解放して新しいデータを記憶することが含まれている。メモリシステムに記憶するデータ量がその容量よりずっと少ない場合、これは、特に問題ではないが、好ましくは、メモリシステムを、データで満杯になっているように動作するように設計する。これは、使われなくなったデータだけを含んでいるブロックや、有効なデータを含んでいるが、使われなくなったデータおよび/または書き込みが行われていない消去ページもある他のブロックを、この使われていない容量を解放するように処理できることを意味している。この目的は、できるだけ余すところなくメモリシステムの記憶容量を利用することであり、同時に、システム性能への悪影響を最小限にすることである。ブロックの解放については、図11の全体的なシステム動作図に617と記してある。
Releasing Block Capacity As described above, part of block management includes releasing unused capacity in a block and storing new data. If the amount of data stored in the memory system is much less than its capacity, this is not particularly a problem, but preferably the memory system is designed to operate as if it is full of data. This includes blocks that contain only data that is no longer used, or other blocks that contain valid data, but that are no longer used and / or have erased pages that have not been written. It means that it can be processed to free up the capacity that is not known. The purpose is to utilize the storage capacity of the memory system as much as possible, while at the same time minimizing adverse effects on system performance. The release of the block is indicated as 617 in the overall system operation diagram of FIG.

解放動作を行うと指定されたブロック(ソースブロック)内の有効なデータを、有効なデータを記憶するのに十分な消去した容量を有する1つ以上のブロック(宛先ブロック)にコピーする。前述したブロック管理技術に従って、宛先ブロックを選択する。ソースブロックに記憶した各ファイルのデータを、前述したように、ファイルの状態および他の要因に基づいて選択した種類のブロックにコピーする。解放動作の一部としての異なる種類のファイル間のデータコピーの一例を、図21A〜図21Dに示す。   When the release operation is performed, valid data in a designated block (source block) is copied to one or more blocks (destination block) having an erased capacity sufficient to store valid data. A destination block is selected according to the block management technique described above. The data of each file stored in the source block is copied to the type of block selected based on the file status and other factors, as described above. An example of data copy between different types of files as part of the release operation is shown in FIGS. 21A to 21D.

図21Aでは、2つの部分ブロック681および683の解放動作を、一例として示す。ブロック681は、ファイルAの有効なデータを記憶してあるプログラムブロックであるが、データを記憶していない消去した容量も含んでいる。考えられる解放動作の1つは、ファイルAの状態に基づいて、ブロック681のファイルAのデータを、異なるファイルBのデータをすでに含んでいる別の部分ブロック685の利用可能な消去した容量にコピーし、共有ブロックとすることである。次に、FITでは、ブロック681内のデータグループをもう参照することはなく、このブロックには、使われなくなったという注記が付けられる。ブロック681内に記憶が行われる際に、ファイルAは、プログラムブロックを含む、状態2、4または8(図15を参照)のうちの1つになっている。次に、データを別のフラクタルブロックに移動することになるが、ファイルは、2つのフラクタルブロックの上限まで書き込まれたままである。ブロック685にコピーを行った後、ファイルAは、状態3、4、6または7のうちの1つに遷移する。これは、他のファイルのデータを記憶してあるブロックの種類に基づいて共有ブロック内に記憶してある、ファイルのデータを含んでいる。   In FIG. 21A, the releasing operation of the two partial blocks 681 and 683 is shown as an example. A block 681 is a program block that stores valid data of the file A, but also includes an erased capacity that does not store data. One possible release operation is to copy the file A data in block 681 to the available erased capacity of another partial block 685 that already contains data from a different file B based on the state of file A. And a shared block. Next, the FIT no longer refers to the data group in block 681, and is annotated that this block is no longer used. When storage is performed in block 681, file A is in one of states 2, 4 or 8 (see FIG. 15) containing program blocks. The data will then be moved to another fractal block, but the file remains written up to the upper limit of two fractal blocks. After copying to block 685, file A transitions to one of states 3, 4, 6 or 7. This includes file data that is stored in the shared block based on the type of block in which other file data is stored.

図21Aのブロック683は、ファイルCおよびDのデータに記憶してあるデータを、ファイルEのデータを含んでいるプログラムブロック687の消去した容量にコピーすることにより、解放された共有ブロックであり、そして共有ブロックになる。ブロックそれ自体のように、ブロック683のファイルCおよびDのデータが使われなくなる。データをある共有ブロックから別の共有ブロックに移動したので、ファイルCおよびDそれぞれの状態は変わらない。しかし、ファイルEの状態は、2から3、または8から7へのいずれかに変わっている。あるいは、ファイルCおよびDそれぞれのデータを互いに異なるブロックに移動することが可能であり、必ずしも共有ブロックの利用可能な空間にコピーする必要はない。そして、ファイルの状態はおそらく他の状態に遷移することになる。   Block 683 in FIG. 21A is a shared block released by copying the data stored in the data of files C and D to the erased capacity of program block 687 containing the data of file E, And it becomes a shared block. As with the block itself, files C and D in block 683 are not used. Since the data is moved from one shared block to another shared block, the states of the files C and D do not change. However, the state of file E has changed from either 2 to 3 or 8 to 7. Alternatively, the data of the files C and D can be moved to different blocks, and it is not always necessary to copy them to the available space of the shared block. And the state of the file will probably transition to another state.

図21Bは、一例のブロック689および691の解放動作を示す。有効でかつ使われなくなったデータで満杯になっているので、これらのブロックはそれぞれ、使われなくなったブロックである。一部分が使われなくなり残りが有効な、ブロック689はファイルFのデータを含んでいるファイルブロックである。これは、例えば、ファイルの終端に物理的に新しいデータの書き込みを行う、ファイルFを更新する間に発生する。このファイルには、既存のファイルのデータとして同じ論理オフセットがあり、既存のデータが使われなくなる。この例では、ファイルFのデータを、ファイルGのデータを含んでいるプログラムブロック693の消去した容量にコピーし、ブロック693の種類が共有ブロックに変わることになる。あるいは、ファイルFの有効なデータを消去ブロックに書き込むと、このブロックはプログラムブロックになる。   FIG. 21B illustrates the release operation of example blocks 689 and 691. Each of these blocks is an obsolete block because it is full of valid and obsolete data. Block 689 is a file block containing data of file F, where a part is not used and the rest is valid. This occurs, for example, while the file F is updated, in which new data is physically written at the end of the file. This file has the same logical offset as the data of the existing file, and the existing data is not used. In this example, the file F data is copied to the erased capacity of the program block 693 containing the file G data, and the type of the block 693 is changed to a shared block. Alternatively, when valid data of file F is written to the erase block, this block becomes a program block.

図21Bのブロック691は、ファイルHの無効なデータおよびファイルIの有効なデータを含んでいるフル共有ブロックである。この例では、ファイルIの有効なデータを、ブロック691から消去ブロック695にコピーする。そして、ブロック695がプログラムブロックになる。あるいは、良い適合があれば、ファイルIのデータを、別のファイルのデータを含んでいる部分ブロックに書き込んでもよい。宛先ブロックは、解放動作を行ったときのファイルIの状態に依存する。   Block 691 in FIG. 21B is a full shared block containing invalid data for file H and valid data for file I. In this example, valid data in file I is copied from block 691 to erase block 695. The block 695 becomes a program block. Alternatively, if there is a good fit, the file I data may be written to a partial block containing another file data. The destination block depends on the state of the file I when the release operation is performed.

図21Aおよび図21Bに示す4つの具体的な一例の解放動作それぞれの結果として、2つの部分ブロックに記憶してあるデータを1つに結合すると、これにより、他の2つのブロックには使われなくなったデータだけが残ることになる。これらは無効なブロックになる。次に、図21Cに示すように、ブロックの消去を行うことにより、もともとのブロック681、683、689および691それぞれの全空間を解放する。消去ブロックは、無効なブロックを解放した結果である。   As a result of each of the four specific example release operations shown in FIG. 21A and FIG. 21B, the data stored in the two partial blocks are combined into one so that they are used for the other two blocks. Only the lost data will remain. These become invalid blocks. Next, as shown in FIG. 21C, the entire spaces of the original blocks 681, 683, 689 and 691 are released by erasing the blocks. An erase block is the result of releasing an invalid block.

図21Dは、ファイルJのデータを記憶してある一例のファイルブロック697を示す。ホストがファイルJを削除した場合、ブロック697内のファイルJのデータと、おそらく他のブロックのデータもまた、使われなくなる。そして、ブロック697は無効なものになる。無効なブロックを解放することにより、システムの消去ブロックプール用に、消去ブロックを生成する。   FIG. 21D shows an example file block 697 in which data of file J is stored. If the host deletes file J, the data of file J in block 697 and possibly other blocks are also not used. Block 697 is then invalid. Releases invalid blocks to create erase blocks for the system's erase block pool.

一般に、メモリからファイルの消去を行うと、共有ブロックまたはフル共有ブロックなどの1つ以上のフラクタルブロック内のファイルのデータも、使われなくなる。残っている別のファイルの有効なデータがブロックの記憶容量より少なく、小さい量となるので、そのブロックに対し解放動作を行う。   Generally, when a file is erased from the memory, data of the file in one or more fractal blocks such as a shared block or a full shared block is not used. Since the remaining valid data of another file is smaller than the storage capacity of the block and becomes a small amount, the release operation is performed on the block.

図22のフローチャートに、一般的な解放動作を示す。ステップ701に示すように、具体的な実施形態に基づいて、1つ以上のリストを、部分ブロックと、使われなくなったブロックと、無効なブロックとに対し保持する。リストを、ブロックリスト615(図11)の一部として保持してもよい。メモリ動作技術の1つにより、このブロックリストを、電源をはじめに入れたときなど、メモリシステムの開始時に形成する。このリストは、各ブロック内の有効なデータ量や各ブロック内の消去メモリ量といった、1度に1つずつ解放ブロックを選択可能な、ブロックの他の情報を含むことができる。典型的には、これらの量を、ブロックのページ数、またはメタブロックを用いる場合はメタページの数で測定する。好適な別の技術は、これらのリストを不揮発性メモリに保持して、その状態が変わったときは必ず、リストのブロックのエントリの追加または更新を行うことである。この技術により、メモリシステムを初期化する際に、ブロックを走査してリストを形成する必要がなくなる。リストの部分ブロックと、使われなくなったブロックと、無効なブロックとをすべて保持する代わりに、解放ブロックを選択する特徴の1つが、コピーする必要のある有効なデータがほとんどないもの、または全くないブロックなので、設定したしきい値量を下回る小さい量の有効なデータを有するブロックだけを含むようにする。非常に時間のかかる多くの解放動作で必要なことは、あるブロックから別のブロックにデータのコピーを行うことなので、通常、コピーするデータ量がより少ないブロックに対してはじめに行う。   The general release operation is shown in the flowchart of FIG. As shown in step 701, according to a specific embodiment, one or more lists are maintained for partial blocks, obsolete blocks, and invalid blocks. The list may be maintained as part of the block list 615 (FIG. 11). According to one memory operation technique, this block list is formed at the start of the memory system, such as when power is first turned on. This list may contain other information about the blocks that can select the free block one at a time, such as the amount of valid data in each block and the amount of erase memory in each block. Typically, these quantities are measured by the number of pages in the block, or the number of metapages when using metablocks. Another preferred technique is to keep these lists in non-volatile memory and add or update entries in the blocks of the list whenever their state changes. This technique eliminates the need to scan blocks to form a list when initializing the memory system. Instead of keeping all the partial blocks in the list, the blocks that are no longer used, and the invalid blocks, one of the features of selecting a free block is that there is little or no valid data that needs to be copied Since it is a block, only blocks having a small amount of valid data below the set threshold amount are included. What is required for many very time-consuming release operations is to copy data from one block to another, so it is usually done first for blocks with less data to copy.

データの書き込み、更新、移動、削除等を行うと、このようなブロックリストは常に変化する。種類が、部分ブロック、使われなくなったブロック、無効なブロックから変更したブロックになるという変化により、図22のステップ701で保持するリストが変わることになる。このようなブロックに個別に記憶した有効なデータ量の変化と、消去した容量の量の変化とを、ブロックリスト615(図11)にも注記を行う。   When data is written, updated, moved, deleted, etc., such a block list always changes. The list held in step 701 in FIG. 22 changes depending on the change in type from a partial block, a block that is no longer used, or an invalid block to a changed block. Annotation is also made in the block list 615 (FIG. 11) about the change in the effective data amount individually stored in such a block and the change in the amount of erased capacity.

ステップ703において、好ましくは、解放するために、1つの解放ブロックを次のブロックとして更新したリストのものと識別する。部分ブロックまたは使われなくなったブロックならば、それが、宛先ブロックと呼ぶ別のブロックに有効なデータをコピーするソースである。ソースブロックの選択に用いられるいくつかの特定の技術について、以下に説明する。   In step 703, one released block is preferably identified as the next updated block list for release. If it is a partial block or a block that is no longer used, it is the source that copies valid data to another block called the destination block. Some specific techniques used for source block selection are described below.

次のステップ705で、ホストのコマンドに応答して、メモリ動作を行う必要があるかを考慮して、いま解放動作を行うことが妥当であるかどうかを判定する。ホストが、アイドルコマンド、または、ホストがメモリシステムに特定の動作を行わせるまで時間があることを示す、似たようなものをメモリシステムに送信した場合、メモリシステムは、解放動作を含むオーバーヘッド動作をフォアグラウンドで自由に実行する。メモリシステムが、メモリへのデータ書き込みでビジーであったり、またはホストコマンドに応答して、メモリからのデータ読み出しでビジーであったりしても、解放動作、特にそのデータコピーを、データ書き込み、読み出し動作と交互に配置して行うことができる。このような交互配置法については、アラン・シンクレアによる2005年10月25日出願の米国特許出願第11/259,423号(特許文献31)、アラン・ベネットらによる2005年12月19日出願の米国特許出願第11/312,985号(特許文献32)に記載されている。   In the next step 705, in response to the command from the host, it is determined whether it is appropriate to perform the release operation in consideration of the necessity of performing the memory operation. If the host sends an idle command or something similar to the memory system that indicates that the host has time to perform a specific operation, the memory system will perform an overhead operation including a release operation. Run freely in the foreground. Even if the memory system is busy writing data to the memory or busy reading data from the memory in response to a host command, the release operation, especially its data copy, is written to and read from It can be performed alternately with the operation. Such an interleaving method is described in US Patent Application No. 11 / 259,423 (Patent Document 31) filed on October 25, 2005 by Alan Sinclair, and December 19, 2005 filed by Alan Bennet et al. It is described in US patent application Ser. No. 11 / 312,985 (patent document 32).

ステップ705において、解放動作を実行すると判定した場合、識別した解放ブロックが有効なデータを含んでいるかどうかにより処理は異なり、その場合、2つ以上のファイルの有効なデータを含んでいるかどうかにより処理が異なる。部分ブロックまたは使われなくなったブロックの場合、定義により、有効なデータを含んでいるし、かつ共有ブロックまたはフル共有ブロックの場合、2つ以上のファイルに有効なデータを含んでいる。解放ブロック内に有効なデータがあるかどうか、ステップ707において判定する。移動する必要のある有効なデータがある場合、1つのファイルのデータを識別して、次のステップ709において、そのデータを受け取る宛先ブロックとして識別する。前述した処理により、(この例では)有効なデータが属するファイルのデータすべてを、2つ以下のフラクタルブロックに記憶して保持するために、図15〜図17に関連して、宛先ブロックを識別する。ステップ711で示すように、1つのファイルの有効なデータをソース解放ブロックから宛先ブロックへコピーすることを開始する。これらのデータをコピーした後、処理はステップ707に戻って、別のファイルのデータが残っているかどうかを判定する。残っている場合、追加データに対しステップ709および711の処理を繰り返す。異なるファイルのデータ用に前に選択したものとは別に、宛先ブロックを選択する。ステップ713を実行する毎に、ソースブロックの消去を行う場合、ステップ707において、ソースブロックには移動するデータがないと判定するまで、これを繰り返す。次に、このブロックを消去ブロックプールに移動して、新しいデータの記憶に用いる。   If it is determined in step 705 that the release operation is to be executed, the process differs depending on whether the identified release block contains valid data, and in this case, the process depends on whether it contains valid data of two or more files. Is different. In the case of a partial block or a block that is no longer used, it contains valid data by definition, and in the case of a shared block or full shared block, it contains valid data in more than one file. In step 707, it is determined whether there is valid data in the release block. If there is valid data that needs to be moved, the data of one file is identified, and in the next step 709, it is identified as the destination block that receives the data. Through the process described above, the destination block is identified in relation to FIGS. 15-17 to store (in this example) all the data of the file to which valid data belongs in less than two fractal blocks. To do. As shown in step 711, it begins copying valid data from one file from the source release block to the destination block. After copying these data, the process returns to step 707 to determine whether data from another file remains. If it remains, the processes in steps 709 and 711 are repeated for the additional data. Select the destination block separately from the one previously selected for the data of the different file. When erasing the source block every time step 713 is executed, this is repeated until it is determined in step 707 that there is no data to be moved in the source block. The block is then moved to the erase block pool and used to store new data.

ステップ707に戻り、無効なブロックの場合であるが、ソースブロックに有効なデータが含まれていない場合、移動する有効なデータはない。ソースブロックを消去する必要があるだけである。従って、その場合の処理は、図22に示すように、ステップ709および711をバイパスする。   Returning to step 707, in the case of an invalid block, if the source block does not contain valid data, there is no valid data to move. You just need to erase the source block. Accordingly, the processing in that case bypasses steps 709 and 711 as shown in FIG.

図22の処理の第1の実施形態では、ステップ701において、部分ブロックと、使われなくなったブロックと、無効なブロックとのリストを1つ保持する。ブロック内の有効なデータ量は、リストの個別のエントリに含まれている。ステップ703において、リストから解放ブロックとして選択されたブロックは、有効なデータが一番少ない。リストに無効なブロックが1つある場合、有効なデータがないので、そのブロックをはじめに選択する。リストに無効なブロックが多くある場合、データが最も長いブロックを選択する。リストに無効なブロックがない場合、有効なデータ量が最も少ないブロックを解放ブロックとして選択する。リストの全ブロックから有効なデータ量が最も少ないブロックを選択することにより、あるブロックから別のブロックにコピーする有効なデータがもっと多くある場合に比べて、解放動作にかかる時間が短くなる。結果として、メモリに対するデータの書き込み、読み出し速度などの、他のメモリシステムの動作を速い速度で維持する。新規の消去ブロックを、メモリ性能に対し、より少ないコストで得られる。   In the first embodiment of the process of FIG. 22, in step 701, one list of partial blocks, blocks that are no longer used, and invalid blocks is maintained. The amount of valid data in the block is contained in a separate entry in the list. In step 703, the block selected as the release block from the list has the least valid data. If there is one invalid block in the list, there is no valid data, so that block is selected first. If there are many invalid blocks in the list, select the block with the longest data. If there are no invalid blocks in the list, the block with the least amount of valid data is selected as the release block. By selecting the block having the smallest effective data amount from all the blocks in the list, the time required for the release operation is shortened as compared with the case where there is more effective data to be copied from one block to another block. As a result, other memory system operations such as writing and reading data to and from the memory are maintained at a high speed. New erase blocks can be obtained at lower cost for memory performance.

1つのリストのフラクタルブロック内の有効なデータ量に基づいてソースブロックを選択する、図22の処理の第1の実施形態の利点は、実行するのに相対的に簡単なことである。しかし、部分ブロックの値についても考慮ことにより、この処理をさらに改良することもできる。部分ブロックにはデータを書き込む消去した容量があるが、使われなくなったブロックも無効なブロックもどちらも、消去した容量を含んでいない。使われなくなったブロックを新しいデータの記憶に用いる前に、有効なデータをそれらブロックから別のブロックに移動する必要があるので、それらブロックを消去して、新しいデータを記憶するのに利用できるようにする。しかし、部分ブロックは、解放動作のオーバーヘッドを行う必要のない、データを書き込む消去した容量を有している。例えば、データを書き込む消去した容量も大量に含む場合、有効なデータ量が最も少ないという理由だけで、部分ブロックを解放することは有益ではない。   The advantage of the first embodiment of the process of FIG. 22 that selects a source block based on the amount of valid data in one list of fractal blocks is that it is relatively simple to perform. However, this process can be further improved by considering the values of the partial blocks. The partial block has an erased capacity for writing data, but neither the unused block nor the invalid block contains the erased capacity. Before using obsolete blocks for storing new data, valid data must be moved from one block to another so that they can be erased and used to store new data. To. However, the partial block has an erased capacity for writing data that does not require the overhead of the release operation. For example, when a large amount of erased capacity for writing data is included, it is not beneficial to release the partial block only because the effective data amount is the smallest.

従って、図22の処理の他の実施形態において、有効なデータ量と、部分ブロックに存在する消去した容量の量との両方に基づいて、ソースブロックを解放する候補として部分ブロックを選択する。部分ブロック内のデータの構成要素を、図23に示す。ブロック(メタブロックでもよい)は、有効なデータを含んでいるある数の1つ以上のページ(メタページでもよい)と、消去したもので、データを書き込む1つ以上の他のページとを有している。一例として図23に示すように、部分ブロックは、使われなくなったデータがある1つ以上の他のページも含んでいることもある。   Therefore, in another embodiment of the process of FIG. 22, the partial block is selected as a candidate to release the source block based on both the effective amount of data and the amount of erased capacity present in the partial block. The components of data in the partial block are shown in FIG. A block (which may be a metablock) has a number of one or more pages (which may be metapages) that contain valid data and an erased one or more other pages where data is written. is doing. As an example, as shown in FIG. 23, a partial block may also contain one or more other pages with data that is no longer used.

図22の処理のこれらの他の実施形態において、好ましくは、ステップ701において、部分ブロックを、使われなくなったブロックおよび無効なブロックのリストとは別のリストに保持する。消去した容量がほとんどなく、(これは、それらの今の状態であまり役に立たないことを意味する)移動する必要のある有効なデータの量が小さい場合には、部分ブロックを、解放動作のためのそれらのリストの先頭に移動する。このようなブロックは主として、使われなくなったデータを含んでいる。逆に、消去した容量が大量で(場合によってはデータの記憶に役立つことを意味する)、移動する有効なデータ量が大きい部分ブロックを、解放ブロックの候補として識別する可能性は最も低い。使われなくなったブロックを解放することで行われるように、消去した容量がある部分ブロックを解放することで、同じ量の記憶容量をメモリシステムに追加することはない。有益な消去した容量がなく、有効なデータをコピーする必要がないので、無効なブロックは明らかに、解放するのに最も魅力的なブロックである。   In these other embodiments of the process of FIG. 22, preferably, in step 701, the partial blocks are kept in a list separate from the list of unused blocks and invalid blocks. If there is almost no erased capacity and this means less useful data in their current state, the partial block is free for the release operation. Move to the top of those lists. Such blocks mainly contain data that is no longer used. Conversely, a partial block that has a large amount of erased capacity (meaning that it may be useful for data storage in some cases) and has a large amount of effective data to move is least likely to be identified as a candidate for a released block. The same amount of storage capacity is not added to the memory system by releasing partial blocks with erased capacity, as is done by releasing blocks that are no longer used. Obviously, invalid blocks are the most attractive blocks to free because there is no useful erased capacity and no need to copy valid data.

図22の解放ブロック識別ステップ703の第2の実施形態では、ステップ701において、部分ブロックと、使われなくなったブロックと、無効なブロックとのそれぞれに1つずつ、3つの別々のリストを保持している。無効なブロックがある場合、そのリストからブロックがなくなるまで、解放ブロックを無効なブロックリストから選択する。一番長くリストにある無効なブロックをはじめに選択するように、先入れ先出し(FIFO)を除いて、無効なブロックをリストに記載する順番は特にない。次に、無効なブロックがない場合、そのリストの全ブロックのうち、有効なデータ量が最も少ないブロックを、使われなくなったブロックリストから選択する。   In the second embodiment of the release block identification step 703 of FIG. 22, in step 701, three separate lists are maintained, one for each of the partial block, the unused block and the invalid block. ing. If there are invalid blocks, select a free block from the invalid block list until there are no more blocks in the list. There is no particular order in which invalid blocks are listed, except for first-in first-out (FIFO), so that the longest invalid block is selected first. Next, when there is no invalid block, a block having the smallest valid data amount is selected from the block list that is no longer used among all the blocks in the list.

無効なリストまたは使われなくなったリストのいずれにもブロックがない場合、ステップ703において、部分ブロックリストのブロックを解放ブロックとして選択する。部分ブロックを、有効なデータ量が最も少ないものとして選択することもできるが、それらの消去した容量の有益性がわかるように、部分ブロックの順位付けを行うことが好ましい。この目的のために、各部分ブロックに対し、以下のように“解放利得”を算出することができる。
解放利得=(S−kE)/V (1)
If there is no block in either the invalid list or the list that is no longer used, in step 703, a block in the partial block list is selected as a release block. Although partial blocks can be selected as having the least amount of valid data, it is preferable to rank the partial blocks so that the benefits of their erased capacity can be seen. For this purpose, the “release gain” can be calculated for each partial block as follows.
Release gain = (S−kE) / V (1)

Sは、データを記憶してあるページの総数としてのブロックの大きさであり、Eは、データを書き込む消去した容量のページの数であり、Vは、別のブロックに移動する必要のある有効なデータを含んでいるページの数である。ブロックの消去した容量の考えられる影響の重み付けを行うために、定数kを含んでいるが、1で設定可能である。kEの値が増えると、得られる解放利得が低下していく。Vの値が増えていくと、解放利得も低下していく。ステップ703において、解放利得の値が最も高い部分ブロックを、解放ブロックとして選択する。他の数学的表現を交互に用いて、有効なデータを含むシステム動作と、消去した容量があることの利点とに対する妨げとなるものとのバランスをとるEおよびVに関して、解放利得を定義することができる。その消去した容量にデータを書き込む毎に、ファイルディレクトリまたはFITが保持する情報の一部として記憶する毎にというように、ブロックに変更がある毎に、解放利得を算出してもよい。   S is the size of the block as the total number of pages storing data, E is the number of pages of erased capacity to which data is written, and V is an effective value that needs to be moved to another block The number of pages that contain irrelevant data. A constant k is included to weight the possible influence of the erased capacity of the block, but can be set to 1. As the value of kE increases, the resulting release gain decreases. As the value of V increases, the release gain also decreases. In step 703, the partial block having the highest release gain value is selected as the release block. Alternately use other mathematical expressions to define the release gain in terms of E and V that balances system operation with valid data and the barrier to the benefits of having erased capacity Can do. The release gain may be calculated every time the block is changed, such as each time data is written to the erased capacity, each time it is stored as part of information held in the file directory or FIT.

この第2の実施形態について、図25に示す。別々の部分ブロックリストと、使われなくなったブロックリストと、無効なブロックリストとから(図22のステップ701において保持するように)、解放ブロックを選択する方法(図22のステップ703)を示している。ステップ721において、はじめに無効なブロックリストにブロックがあるかどうかを判定する。このようなブロックが複数ある場合、ステップ723において、リストにのっている最も長いブロックを、解放ブロックとして選択する。無効なブロックリストにブロックがない場合、ステップ725において、使われなくなったブロックリストにエントリがあるかどうかを判定する。2つ以上のブロックが使われなくなったブロックリストにある場合であるが、あれば、ステップ727において、有効なデータ量が最も少ないブロックを、解放ブロックとして選択する。ステップ725において、使われなくなったブロックリストにエントリがないと判定した場合、ステップ729において、部分ブロックリストを調べる。部分ブロックリストに2つ以上のブロックがある場合、解放利得が最も高いものを解放ブロックとして選択する。前述した式(1)を利用するといったように、解放利得は、ブロック内の有効なデータ量および消去した容量を考慮に入れている。部分ブロックリストに何もない場合、ステップ721に戻り、リストのうちの1つにブロックが現れるまで、処理を繰り返す。解放ブロックを選択した後で、処理は、図22のステップ705に進む。   This second embodiment is shown in FIG. A method (step 703 in FIG. 22) for selecting a release block from a separate partial block list, a block list that is no longer used, and an invalid block list (as retained in step 701 in FIG. 22) is shown. Yes. In step 721, it is first determined whether there is a block in the invalid block list. When there are a plurality of such blocks, in step 723, the longest block on the list is selected as a release block. If there is no block in the invalid block list, it is determined in step 725 whether there is an entry in the block list that is no longer used. If two or more blocks are in the block list that is no longer used, if there is, in step 727, the block with the smallest effective data amount is selected as the release block. If it is determined in step 725 that there is no entry in the block list that is no longer used, in step 729, the partial block list is examined. If there are two or more blocks in the partial block list, the block with the highest release gain is selected as the release block. The release gain takes into account the effective amount of data in the block and the erased capacity, such as using equation (1) above. If there is nothing in the partial block list, the process returns to step 721 and the process is repeated until a block appears in one of the lists. After selecting the release block, the process proceeds to step 705 in FIG.

第3の実施形態を、図24のフローチャートに示す。図22のステップ701で保持している無効なブロックリストでエントリを検索するステップ741によっても、図22のステップ703の実行を開始する。無効なブロックリストに2つ以上のエントリがある場合、図25のステップ743において、最も古いものを選択して解放ブロックとする。無効なブロックリストにエントリがない場合、次のステップ745において、使われなくなったブロックリストにエントリがあるかどうかを判定する。あれば、次のステップは、図24の実施形態とは異なる。部分ブロックリストに少なくとも1つのエントリがある場合、使われなくなったブロックまたは部分ブロックのリストから解放ブロックを選択することが一番いいかどうかを判定する。   The third embodiment is shown in the flowchart of FIG. The execution of step 703 of FIG. 22 is also started by step 741 of searching for an entry in the invalid block list held in step 701 of FIG. If there are two or more entries in the invalid block list, the oldest one is selected as a released block in step 743 of FIG. If there is no entry in the invalid block list, it is determined in the next step 745 whether there is an entry in the block list that is no longer used. If so, the next step is different from the embodiment of FIG. If there is at least one entry in the partial block list, it is determined whether it is best to select a free block from a block or list of partial blocks that are no longer used.

ステップ747において、使われなくなったブロックリストで、有効なデータ量が最も少ないブロックの識別を行う。次に、ステップ749において、部分ブロックリストに少なくとも1つのブロックがあるかどうかを判定する。あれば、ステップ751において、有効なデータ量が最も少ないブロックを識別する。次のステップ753において、使われなくなったブロックリストから識別した1つのブロックと、部分ブロックリストから識別した1つのブロックとの間で選択を行う。この目的のために、ステップ751において、部分ブロックリストから識別したブロックについて数量(V+kE)を算出する。V、Eおよびkは前述したのと同じである。この数量を、ステップ747において使われなくなったブロックリストから識別したブロック内の有効なデータ量Vと比較する。部分ブロックの数量(V+kE)が、使われなくなったブロックの数量Vより大きい場合、ステップ755において、使われなくなったブロックを解放ブロックとして選択する。しかし、使われなくなったブロックの数量Vが、識別した部分ブロックの数量(V+kE)より大きい場合、ステップ757において、部分ブロックを解放ブロックとして選択する。   In step 747, the block having the smallest effective data amount is identified from the block list that is no longer used. Next, in step 749, it is determined whether there is at least one block in the partial block list. If there is, in step 751, a block having the smallest effective data amount is identified. In the next step 753, a selection is made between one block identified from the block list that is no longer used and one block identified from the partial block list. For this purpose, in step 751, the quantity (V + kE) is calculated for the blocks identified from the partial block list. V, E and k are the same as described above. This quantity is compared with the effective data amount V in the block identified from the block list that is no longer used in step 747. If the partial block quantity (V + kE) is larger than the unused block quantity V, in step 755, the unused block is selected as a released block. However, if the number V of unused blocks is larger than the number of identified partial blocks (V + kE), in step 757, the partial block is selected as a release block.

識別した使われなくなったブロックの有効なデータVだけと比較する前に、識別した部分ブロックの消去した容量の数量kEをその有効なデータVに加算することにより、使われなくなったブロックを選択するように、処理にバイアスをかける。その消去した容量にデータを記憶するために用いられる可能性がまだあるので、識別した使われなくなったブロックと同じ有効なデータ量を有する識別した部分ブロックを保持する。実際、数量kEだけ使われなくなったブロックより小さい有効なデータ量を有する部分ブロックを保持することになる。   Before comparing with only the valid data V of the identified unused block, the erased capacity quantity kE of the identified partial block is added to the valid data V to select the unused block. So that the process is biased. Since the erased capacity still has the possibility of being used to store data, it retains the identified partial block having the same effective data amount as the identified unused block. In fact, a partial block having an effective data amount smaller than the block that is no longer used by the quantity kE is retained.

図25のステップ745に戻り、使われなくなったブロックリストにエントリがない場合、ステップ759において、部分ブロックリストにブロックが記載されているかどうかを判定する。なければ、3つのリストのうちの1つにブロックが記載されるまで、処理はステップ741に戻り、繰り返される。複数の部分ブロックが記載されていれば、ステップ761において、有効なデータ量が最も少ないブロックを解放ブロックとして選択する。あるいは、第2の実施形態のステップ731(図24)に関連して説明したように、解放利得を用いて部分ブロックを選択してもよい。   Returning to step 745 of FIG. 25, if there is no entry in the block list that is no longer used, it is determined in step 759 whether a block is described in the partial block list. If not, the process returns to step 741 and is repeated until the block is listed in one of the three lists. If a plurality of partial blocks are described, in step 761, a block having the smallest effective data amount is selected as a release block. Alternatively, as described in connection with step 731 (FIG. 24) of the second embodiment, a partial block may be selected using a release gain.

一方、第3の実施形態では、2つのリストしか用いないこともある。第1のリストは、使われなくなったデータと、消去を行わないメモリ容量とを含むブロックのエントリを含む、使われなくなったブロックリストである。図25に示すように、個別の無効なブロックリストを用いるのではなく、無効なブロックと使われなくなったブロックの両方を、1つの“使われなくなった”ブロックリストに記載する。オプションとして、ブロックは有効なデータを含むこともある。リストの各エントリは、関連するブロック内の有効なデータ量を定義する値を含むフィールドを有している。リストのエントリは、これらのフィールドの値に基づいて、順序づけられている。従って、使われなくなったデータがあり、有効なデータのないブロック(無効なブロック)を、この第1のリストの先頭にともにグループ化する。   On the other hand, in the third embodiment, only two lists may be used. The first list is a block list that is no longer used, including block entries that contain data that is no longer used and the memory capacity that is not erased. As shown in FIG. 25, instead of using individual invalid block lists, both invalid blocks and blocks that are no longer used are listed in one “no longer used” block list. Optionally, the block may contain valid data. Each entry in the list has a field that contains a value that defines the amount of valid data in the associated block. The list entries are ordered based on the values of these fields. Therefore, there are data that are no longer used, and blocks that have no valid data (invalid blocks) are grouped together at the top of this first list.

第3の実施形態の別の形態である第2のリストは、消去が行われたメモリ容量を含むブロックのエントリを含んでいる、部分ブロックリストである。オプションとして、ブロックは有効なデータを含んでいることもある。リストの各エントリは、関連するブロック内の有効なデータ量を定義する値を含んでいるフィールドを有している。リストのエントリは、これらのフィールドの値に基づいて、順序づけられている。図25のステップ753における手法により、第1のリストまたは第2のリストのいずれかの先頭から、ブロックを選択してもよい(無効なデータ量が最も少ないブロック)。   The second list, which is another form of the third embodiment, is a partial block list including entries of blocks including the memory capacity that has been erased. Optionally, the block may contain valid data. Each entry in the list has a field containing a value that defines the amount of valid data in the associated block. The list entries are ordered based on the values of these fields. A block may be selected from the head of either the first list or the second list by the method in step 753 of FIG. 25 (block with the least amount of invalid data).

図26の表に、第3の実施形態のこの変形例による、解放動作のための部分ブロックリストと、使われなくなったブロックリストとに記載したブロックの種類の詳細について記載している。部分ブロックリストに記載されるために、ブロックは、有効なデータと消去した容量とを両方とも含んでいる。ブロック内に使われなくなったデータがあってもなくてもよい。使われなくなったブロックリストに記載されるために、ブロックは、使われなくなったデータと、有効なデータまたは消去した容量のいずれかとを含んでいる。   The table of FIG. 26 describes details of the types of blocks described in the partial block list for release operation and the block list that is no longer used according to this modification of the third embodiment. To be listed in the partial block list, the block contains both valid data and erased capacity. There may or may not be any unused data in the block. To be listed in the block list that is no longer used, the block contains data that is no longer used and either valid data or erased capacity.

図22、図24および図25に関連して前に説明した処理を、図2に示す一例のメモリシステムに格納したファームウェアを実行する、コントローラ11のプロセッサ27が実行してもよい。   The processing described above in connection with FIGS. 22, 24 and 25 may be performed by the processor 27 of the controller 11 executing firmware stored in the example memory system shown in FIG.

まとめ
例示の実施形態に関連して本発明の様々な態様を説明してきたが、本発明が添付の特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
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. 各種の組み合わせが可能な種類のブロックにデータファイルを記憶する例を示す。An example is shown in which a data file is stored in a block of a type that allows various combinations. 各種の組み合わせが可能な種類のブロックにデータファイルを記憶する例を示す。An example is shown in which a data file is stored in a block of a type that allows various combinations. 各種の組み合わせが可能な種類のブロックにデータファイルを記憶する例を示す。An example is shown in which a data file is stored in a block of a type that allows various combinations. 各種の組み合わせが可能な種類のブロックにデータファイルを記憶する例を示す。An example is shown in which a data file is stored in a block of a type that allows various combinations. 各種の組み合わせが可能な種類のブロックにデータファイルを記憶する例を示す。An example is shown in which a data file is stored in a block of a type that allows various combinations. 個別のファイルのデータを記憶してあるブロックの種類により許可されているファイル状態のリストである。It is a list of file states that are permitted by the type of block that stores the data of individual files. 図15に示すリストのファイル状態の間での許可されている主な遷移を示す状態図である。FIG. 16 is a state diagram showing the main transitions allowed between the file states of the list shown in FIG. 図16の状態図に示す主なファイル状態遷移を説明する表である。It is a table | surface explaining the main file state transition shown in the state diagram of FIG. 図15に示すリストのファイル状態の間で得られる第2の遷移を示す状態図である。FIG. 16 is a state diagram showing a second transition obtained between the file states of the list shown in FIG. 15. 図18の状態図に示す第2のファイル状態遷移を説明する表である。It is a table | surface explaining the 2nd file state transition shown in the state diagram of FIG. 図15〜図20の条件下で、アクティブブロックとして割り当てられるブロックの種類をリストアップした一覧表である。FIG. 21 is a list of types of blocks allocated as active blocks under the conditions of FIGS. 15 to 20. FIG. 一例のブロック解放動作を示す。An example block release operation is shown. 一例のブロック解放動作を示す。An example block release operation is shown. 一例のブロック解放動作を示す。An example block release operation is shown. 一例のブロック解放動作を示す。An example block release operation is shown. 一般的な解放動作を示すフローチャートである。It is a flowchart which shows general release operation | movement. 典型的な部分メモリセルブロックに記憶するデータの種類を示す。The type of data stored in a typical partial memory cell block is shown. 図22のフローチャートのステップの1つを実行する具体的な実施形態の詳細を示す。FIG. 23 shows details of a specific embodiment for performing one of the steps of the flowchart of FIG. 図22のフローチャートの同じステップを実行する別の実施形態の詳細を示す。FIG. 23 shows details of another embodiment that performs the same steps of the flowchart of FIG. さらに別の実施形態の2つのブロックリストに記載したブロックの種類を定義する表である。It is a table | surface which defines the kind of block described in the two block lists of another embodiment.

Claims (26)

一意に識別が行われたファイルとして、再プログラム可能な不揮発性メモリのブロックにデータを記憶する方法であって、
1つ以上の複数の種類のブロックの間でどのように前記ファイルのデータを配分するかに基づいて、複数のファイル状態のうちの1つの個別に記憶したファイルの記録を保持するステップと、
任意のファイルの記録の状態に基づいて選択される種類のブロックに、任意のファイルのいずれか1つの追加データの書き込みを行うステップと、
を含む方法。
A method of storing data in a reprogrammable nonvolatile memory block as a uniquely identified file,
Maintaining a record of a separately stored file of one of a plurality of file states based on how to distribute the file data among one or more types of blocks; and
Writing any additional data of any file into a block of a type selected based on the recording status of the arbitrary file;
Including methods.
請求項1記載の方法において、
個別のファイルの前記記録は、別のファイルからのデータとともに、前記ファイルのデータの記憶が行われるいかなる種類のブロックの識別名をも含む方法。
The method of claim 1, wherein
The method wherein the record of an individual file includes the identification of any kind of block in which the data of the file is stored, along with data from another file.
請求項1記載の方法において、
前記追加データの書き込みを行うステップは、前記任意のファイルの状態を第1の状態から第2の状態へ遷移するステップをさらに含み、前記第1のファイル状態および第2のファイル状態は、少なくとも1つの異なる種類のブロック内に前記任意のファイルのデータの記憶を行うことに基づいている方法。
The method of claim 1, wherein
The step of writing the additional data further includes a step of transitioning the state of the arbitrary file from the first state to the second state, wherein the first file state and the second file state are at least 1 A method based on storing the data of the arbitrary file in two different types of blocks.
請求項1記載の方法において、
前記追加データの書き込みを行うステップは、前記メモリの、前記ファイルのデータを含み、所定の数に満たない別のファイルのデータも含むブロックの数を制限する種類のブロックに、前記任意のファイルの追加データの書き込みを行うように、前記任意のファイルの前記状態を遷移するステップを含む方法。
The method of claim 1, wherein
The step of writing the additional data includes a step of restricting the number of blocks of the arbitrary file including the data of the file in the memory and limiting the number of blocks including the data of another file that is less than a predetermined number. Transitioning the state of the arbitrary file to write additional data.
請求項1記載の方法において、
前記追加データの書き込みを行うステップは、前記メモリの外部から受け取ったデータの書き込みを行うステップを含む方法。
The method of claim 1, wherein
The step of writing the additional data includes the step of writing data received from outside the memory.
請求項1記載の方法において、
前記追加データの書き込みを行うステップは、前記メモリ内の別の位置からのデータのコピーを行うステップを含む方法。
The method of claim 1, wherein
The step of writing the additional data includes the step of copying data from another location in the memory.
一意に識別が行われたファイルのデータで再プログラミングを行う前に消去が行われるメモリセルブロックにグループ化した記憶セルを有する、不揮発性メモリシステムの動作方法であって、
指定を受けた個別のブロック内に記憶したファイルデータの構造について、複数のデータブロックの種類のセットを指定するステップと、
指定を受けた個別のファイルのデータを記憶してある1つ以上のブロックの種類の組み合わせについて、複数の許可されているファイル状態のセットを指定するステップと、
前記メモリシステムに記憶した個別のデータファイルのファイル状態の記録を保持するステップと、
前記レコードの前記ファイルの現在の状態に基づいて選択される種類のブロックに個別のファイルのデータの書き込みを行うステップと、
を含む方法。
A method of operating a non-volatile memory system having storage cells grouped into memory cell blocks that are erased before reprogramming with uniquely identified file data comprising:
Designating a set of multiple data block types for the structure of the file data stored in the specified individual block;
Designating a set of multiple allowed file states for a combination of one or more block types that store designated individual file data; and
Maintaining a record of the file status of individual data files stored in the memory system;
Writing individual file data to a block of a type selected based on the current state of the file of the record;
Including methods.
請求項7記載の方法において、
前記指定した複数のデータブロックの種類は、1つのファイルだけのデータを1つのブロックに記憶した第1の複数の種類と、2つ以上のファイルのデータを1つのブロックに記憶した第2の複数の種類とを含み、前記許可されているファイル状態が、前記ファイルのうちの1つのデータの書き込みが行われる、前記第2の複数の種類のブロックの最大数を制限している方法。
The method of claim 7, wherein
The types of the plurality of designated data blocks are a first plurality of types in which data of only one file is stored in one block, and a second plurality of types in which data of two or more files are stored in one block. And the allowed file state limits the maximum number of blocks of the second plurality of types to which data of one of the files is written.
請求項8記載の方法において、
前記最大数は、2である方法。
The method of claim 8, wherein
The method wherein the maximum number is two.
請求項7記載の方法において、
前記メモリ記憶セルは、一括消去可能である方法。
The method of claim 7, wherein
A method in which the memory storage cells are batch erasable.
請求項10記載の方法において、
前記メモリ記憶セルは、個別に電荷蓄積素子を含む方法。
The method of claim 10, wherein
The memory storage cell includes a charge storage element individually.
請求項10記載の方法において、
2以上のビットのデータを記憶するために、前記電荷蓄積素子の動作を個別に行って、複数のレベルの電荷を蓄積する方法。
The method of claim 10, wherein
In order to store two or more bits of data, the charge storage elements are individually operated to store a plurality of levels of charges.
再プログラミングを行う前に同時に消去を行い、複数の別個に識別したデータファイルとしてデータを記憶するメモリセルブロックにグループ化したメモリ記憶セルを有する、不揮発性メモリシステムの動作方法であって、
2つ以上のファイルに有効なデータを含んでいる第1の種類のブロックと、1つのファイルだけのデータを含んでいる第2の種類のブロックとを含む複数の種類のブロックのうちの1つにより、個別のファイルのデータを記憶してあるブロックの識別を行うステップと、
前記ブロックの許可されている1つ以上の種類について、前記メモリシステムの1つ以上のブロックに記憶した個別のファイルのために、複数の許可されている状態のうちの1つを指定するステップと、
前記第2の種類のブロックに優先して1つのファイルのデータを記憶可能な前記第1の種類のブロックの数を制限するファイル状態の間における、複数の許可されている遷移のセットを保持するステップと、
前記メモリに記憶した既存のファイルに追加データの書き込みを行う必要に応答して、前記既存のファイルのデータの書き込みが直近に行われた前記ブロックのうちの1つの識別を行うが、この識別したブロックが、前記ファイルの追加データを受け付けない場合、前記ファイルの状態を許可されているファイル状態遷移のセット内の次に許可されている状態に遷移し、次に許可されている状態が許可する種類を有する追加ブロックの識別を行うステップと、
その後、そのように識別した前記種類のブロックに、前記追加データの書き込みを行うステップと、
を含む方法。
A method of operating a non-volatile memory system having memory storage cells grouped into memory cell blocks that simultaneously erase before reprogramming and store data as a plurality of separately identified data files, comprising:
One of a plurality of types of blocks including a first type of block containing valid data in two or more files and a second type of block containing data from only one file To identify the block storing the data of the individual file,
Designating one of a plurality of allowed states for individual files stored in one or more blocks of the memory system, for one or more types of allowed blocks; ,
Maintain a set of multiple permitted transitions between file states that limit the number of blocks of the first type that can store data of one file in preference to the second type of blocks Steps,
In response to the need to write additional data to the existing file stored in the memory, one of the blocks in which the data of the existing file was most recently written is identified. If the block does not accept additional data for the file, the state of the file is transitioned to the next allowed state in the set of allowed file state transitions, and the next allowed state is allowed. Identifying additional blocks having types;
Then writing the additional data to the type of block identified as such;
Including methods.
請求項13記載の方法において、
ファイル状態の間における、前記複数の許可されている遷移のセットは、1つのファイルのデータを記憶可能な前記第1の種類のブロックの数を、2つに制限している方法。
14. The method of claim 13, wherein
The method wherein the set of allowed transitions between file states limits the number of the first type of blocks that can store data for one file to two.
請求項13記載の方法において、
前記追加データの書き込みを行うステップは、前記メモリが接続しているホストシステムから受け取ったデータの書き込みを行うステップを含む方法。
14. The method of claim 13, wherein
The step of writing the additional data includes the step of writing data received from a host system to which the memory is connected.
請求項13記載の方法において、
前記追加データの書き込みを行うステップは、前記メモリ内の別の位置からのデータのコピーを行うステップを含む方法。
14. The method of claim 13, wherein
The step of writing the additional data includes the step of copying data from another location in the memory.
請求項13記載の方法において、
前記方法を、携帯用メモリカードまたはドライブ内で実行する方法。
14. The method of claim 13, wherein
A method of executing the method in a portable memory card or drive.
別個に識別したデータファイルを、再プログラミングを行う前に消去が行われることが特徴となっている不揮発性メモリセルのブロックにプログラミングを行う方法であって、
あらかじめ設定された限度を下回るように、前記ファイルのデータを部分的に含んでいるブロックの数を保持するデータファイルのプログラミングが行われる1つ以上のブロックを選択するステップと、
前記選択した1つ以上のブロックに前記ファイルのデータのプログラミングを行うステップと、
を含む方法。
A method of programming a separately identified data file into a block of non-volatile memory cells characterized by being erased before reprogramming,
Selecting one or more blocks in which a data file is programmed that retains the number of blocks that partially contain the data of the file to be below a preset limit;
Programming the data of the file into the selected one or more blocks;
Including methods.
再プログラム可能な不揮発性メモリシステムであって、
データの書き換えを行う前に消去が行われることを特徴とする不揮発性メモリセルのブロックと、
前記メモリセルブロックと動作可能に接続して、あらかじめ設定された限度を下回るように、任意の1つのファイルのデータを部分的に含んでいるブロックの数を保持できるように選択された1つ以上のメモリセルブロックに、個別のファイルのデータの書き込みが行われるようにするコントローラと、
を備えるメモリシステム。
A reprogrammable non-volatile memory system comprising:
A block of non-volatile memory cells characterized in that erasure is performed before rewriting data;
One or more selected to operably connect with the memory cell block and to hold a number of blocks that partially contain the data of any one file so as to fall below a preset limit A controller for writing data of individual files to the memory cell block of
A memory system comprising:
請求項19記載のメモリシステムにおいて、
前記コントローラは、前記ファイルのデータで部分的に埋められているメモリセルブロックの数に基づいて、複数の指定状態のうちの1つを前記個別のファイルに割り当てるようにさらに動作するメモリシステム。
The memory system of claim 19, wherein
The controller is further operative to assign one of a plurality of specified states to the individual file based on the number of memory cell blocks partially filled with data of the file.
請求項19記載のメモリシステムにおいて、
前記コントローラは、前記メモリセルブロックにデータを記憶してある各ファイルに1つの状態を割り当て、前記任意のファイルの前記状態に基づいて、任意のファイルのデータを記憶するブロックを選択するようにさらに動作するモリシステム。
The memory system of claim 19, wherein
The controller further assigns one state to each file storing data in the memory cell block, and further selects a block storing data of an arbitrary file based on the state of the arbitrary file. A working Mori system.
請求項21記載のメモリシステムにおいて、
前記コントローラは、前記ファイルのデータで部分的に埋められているブロックの数に基づいて、前記メモリセルブロックにデータを記憶してある各ファイルに1つの状態を割り当てるようにさらに動作するモリシステム。
The memory system of claim 21, wherein
The memory system further operates to assign a state to each file storing data in the memory cell block based on the number of blocks partially filled with data of the file.
請求項22記載のメモリシステムにおいて、
前記コントローラは、前記ファイルのデータで部分的に埋められているブロックで、データの書き込みが行われる消去した容量も含んでいるブロックの数にさらに基づいて、前記メモリセルブロックにデータを記憶してある各ファイルに1つの状態を割り当てるようにさらに動作するモリシステム。
The memory system of claim 22,
The controller stores data in the memory cell block based further on the number of blocks that are partially filled with data of the file, including the erased capacity where data is written. A memory system that further operates to assign one state to each file.
請求項22記載のメモリシステムにおいて、
前記コントローラは、前記ファイルのデータで部分的に埋められているブロックで、1つ以上の他のファイルのデータも含んでいるブロックの数にさらに基づいて、前記メモリセルブロックにデータを記憶してある各ファイルに1つの状態を割り当てるようにさらに動作するメモリシステム。
The memory system of claim 22,
The controller stores data in the memory cell block based on the number of blocks that are partially filled with data of the file and that also includes data of one or more other files. A memory system that further operates to assign one state to each file.
再プログラム可能な不揮発性メモリシステムであって、
同時に消去可能なメモリセルブロックに構成された不揮発性メモリセルアレイと、
前記メモリアレイと動作可能に接続して、任意のファイルのデータを記憶するブロックの選択に用いられる状態であって、部分的に埋められている1つ以上のブロックが別のファイルのデータも含んでいるかどうかと、部分的に埋められている1つ以上のブロックが追加データの書き込みが行われる消去した容量を含んでいるかどうかという、前記ファイルのデータで部分的に埋められている、1つ以上のブロックの数に依存する状態を含む前記状態を、各ファイルに割り当てるコントローラと、
を備えるメモリシステム。
A reprogrammable non-volatile memory system comprising:
A non-volatile memory cell array configured in simultaneously erasable memory cell blocks;
One or more blocks that are operatively connected to the memory array and used to select a block for storing data of an arbitrary file, wherein one or more partially filled blocks also include data of another file And one or more blocks partially filled with data of the file, such as whether or not one or more partially filled blocks contain erased capacity to which additional data is written. A controller for assigning each state to the file, the state including the state depending on the number of blocks,
A memory system comprising:
請求項25記載のメモリシステムにおいて、
前記コントローラは、あらかじめ設定された限度を下回るように、前記任意のファイルのデータを部分的に含んでいるブロックの数を保持するブロックであって、前記任意のファイルデータの書き込みが行われるブロックを選択するようにさらに動作するメモリシステム。
26. The memory system of claim 25.
The controller holds a number of blocks partially containing the data of the arbitrary file so as to fall below a preset limit, and the block to which the arbitrary file data is written is stored. A memory system that further operates to select.
JP2008525168A 2005-08-03 2006-08-01 Managing memory blocks that store data files directly Pending JP2009503743A (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US70538805P 2005-08-03 2005-08-03
US11/382,224 US8055832B2 (en) 2005-08-03 2006-05-08 Management of memory blocks that directly store data files
US11/382,228 US7581057B2 (en) 2005-08-03 2006-05-08 Memory system with management of memory blocks that directly store data files
PCT/US2006/030165 WO2007019197A2 (en) 2005-08-03 2006-08-01 Management of memory blocks that directly store data files

Publications (1)

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

Family

ID=37441503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008525168A Pending JP2009503743A (en) 2005-08-03 2006-08-01 Managing memory blocks that store data files directly

Country Status (4)

Country Link
EP (1) EP1913463A2 (en)
JP (1) JP2009503743A (en)
KR (1) KR101378031B1 (en)
WO (1) WO2007019197A2 (en)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US8166267B2 (en) 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8046522B2 (en) 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
KR101464199B1 (en) * 2006-12-26 2014-11-21 샌디스크 테크놀로지스, 인코포레이티드 Use of a direct data file system with a continuous logical address space interface
US9311229B2 (en) 2011-03-29 2016-04-12 Blackberry Limited System and method for managing flash memory
US8539007B2 (en) * 2011-10-17 2013-09-17 International Business Machines Corporation Efficient garbage collection in a compressed journal file
US9696920B2 (en) * 2014-06-02 2017-07-04 Micron Technology, Inc. Systems and methods for improving efficiencies of a memory system
CN110727647B (en) * 2019-10-21 2022-07-05 中国民航信息网络股份有限公司 Freight rate data storage method and device

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0123412D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
US7035949B2 (en) * 2002-07-29 2006-04-25 M-System Flash Dist Pioneers Ltd. Multipurpose processor, system and method
US7526599B2 (en) * 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
KR20070007264A (en) * 2003-12-30 2007-01-15 쌘디스크 코포레이션 Non-volatile memory and method with non-sequential update block management
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7849253B2 (en) 2005-04-04 2010-12-07 Standard Microsystems Corporation Method for fast access to flash-memory media

Also Published As

Publication number Publication date
EP1913463A2 (en) 2008-04-23
KR20080044254A (en) 2008-05-20
WO2007019197A3 (en) 2007-09-07
KR101378031B1 (en) 2014-03-27
WO2007019197A2 (en) 2007-02-15

Similar Documents

Publication Publication Date Title
JP4533956B2 (en) Free up data storage capacity of flash memory system
US7450420B2 (en) Reclaiming data storage capacity in flash memories
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
US8880483B2 (en) System and method for implementing extensions to intelligently manage resources of a mass storage system
US8046522B2 (en) Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US7877540B2 (en) Logically-addressed file storage methods
US7739444B2 (en) System using a direct data file system with a continuous logical address space interface
US7917686B2 (en) Host system with direct data file interface configurability
US20080155175A1 (en) Host System That Manages a LBA Interface With Flash Memory
KR101378031B1 (en) Management of memory blocks that directly store data files
KR20080032636A (en) Interfacing systems operating through a logical address space and on a direct data file basis
US20070136553A1 (en) Logically-addressed file storage systems
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
JP2009503740A (en) Indexing file data in reprogrammable non-volatile memory that directly stores data files
US8769217B2 (en) Methods and apparatus for passing information to a host system to suggest logical locations to allocate to a file
KR20090108695A (en) Managing a lba interface in a direct data file memory system