[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2009503745A - Nonvolatile memory with block management - Google Patents

Nonvolatile memory with block management Download PDF

Info

Publication number
JP2009503745A
JP2009503745A JP2008525178A JP2008525178A JP2009503745A JP 2009503745 A JP2009503745 A JP 2009503745A JP 2008525178 A JP2008525178 A JP 2008525178A JP 2008525178 A JP2008525178 A JP 2008525178A JP 2009503745 A JP2009503745 A JP 2009503745A
Authority
JP
Japan
Prior art keywords
block
blocks
list
record
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008525178A
Other languages
Japanese (ja)
Other versions
JP4547028B2 (en
JP2009503745A5 (en
Inventor
ダブリュー. シンクレア,アラン
ライト,バリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/459,268 external-priority patent/US7558906B2/en
Priority claimed from US11/459,260 external-priority patent/US7552271B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Priority claimed from PCT/US2006/030228 external-priority patent/WO2007019217A1/en
Publication of JP2009503745A publication Critical patent/JP2009503745A/en
Publication of JP2009503745A5 publication Critical patent/JP2009503745A5/ja
Application granted granted Critical
Publication of JP4547028B2 publication Critical patent/JP4547028B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

ブロック消去可能なメモリアレイを含む不揮発性メモリシステムでは、特定の分類のブロックのためのレコードを個別に保守する。ブロックのために1つ以上のリストを保守でき、個々のリストは記述子値に従って序列される。このような序列リストは、記述子値によるブロックの迅速な識別を可能にする。  In a non-volatile memory system that includes a block erasable memory array, records for a particular class of blocks are individually maintained. One or more lists can be maintained for a block, and individual lists are ordered according to descriptor values. Such an ordered list allows for rapid identification of blocks by descriptor value.

Description

本願は、半導体フラッシュメモリ等の再プログラム可能な不揮発性メモリシステムの動作に関し、より具体的にはメモリアレイの個別に消去可能なブロックの管理に関する。   The present application relates to the operation of a reprogrammable non-volatile memory system such as a semiconductor flash memory, and more specifically to the management of individually erasable blocks of a memory array.

ホストシステム、メモリシステム、その他の電子システムの外部インターフェイスを通じて通信されるデータをアドレス指定するには主に2つの手法がある。そのうちの一手法では、システムによって生成または受信されるデータファイルのアドレスが、データの論理ブロックとして設定された別個の連続論理アドレス空間範囲にマップされる(これ以降「LBAインターフェイス」と称する)。アドレス空間の大きさは通常、システムで取り扱うことのできるアドレス全域を十分にカバーする。一例において、磁気ディスク記憶ドライブは、このような論理アドレス空間を通じてコンピュータをはじめとするホストシステムと通信する。このアドレス空間は、ディスクドライブの全データ記憶容量を十分にアドレス指定する大きさを持つ。   There are two main approaches to addressing data communicated through external interfaces of host systems, memory systems, and other electronic systems. In one approach, the address of a data file generated or received by the system is mapped to a separate continuous logical address space range set as a logical block of data (hereinafter referred to as the “LBA interface”). The size of the address space usually covers enough of the entire address that can be handled by the system. In one example, the magnetic disk storage drive communicates with a host system, such as a computer, through such a logical address space. This address space is large enough to address the entire data storage capacity of the disk drive.

フラッシュメモリシステムは多くの場合、パーソナルコンピュータやカメラ等の様々なホストと着脱可能な状態で接続するメモリカードまたはフラッシュドライブの形で提供されるが、このようなホストシステムの中に埋め込まれることもある。ホストは通常、メモリへデータを書き込む場合に、メモリシステムの連続する仮想アドレス空間の中でセクタ、クラスタ、あるいはその他のデータ単位に一意な論理アドレスを割り当てる。ホストは、ディスクオペレーティングシステム(DOS)のように、メモリシステムの論理アドレス空間の中のアドレスにデータを書き込み、かつこれからデータを読み出す。メモリシステムの中のコントローラは、ホストから受け取った論理アドレスをメモリアレイの中のデータが実際に記憶される物理アドレスに翻訳し、これらのアドレス翻訳の経緯を把握する。メモリシステムのデータ記憶容量は少なくとも、メモリシステムのために規定される論理アドレス空間全体にわたってアドレス指定可能なデータ量に相当する。   Flash memory systems are often provided in the form of memory cards or flash drives that are detachably connected to various hosts such as personal computers and cameras, but can also be embedded in such host systems. is there. When writing data to the memory, the host normally assigns a unique logical address to a sector, cluster, or other data unit within the contiguous virtual address space of the memory system. The host, like a disk operating system (DOS), writes data to and reads data from addresses in the logical address space of the memory system. The controller in the memory system translates the logical address received from the host into a physical address where the data in the memory array is actually stored, and grasps the history of the address translation. The data storage capacity of the memory system corresponds at least to the amount of data that can be addressed over the entire logical address space defined for the memory system.

現在の商用フラッシュメモリシステムにおける消去単位のサイズは、複数セクタのデータを十分に記憶するメモリセルブロックまで拡大している。事実、多数のデータページが1つのブロックに記憶され、1ページで複数セクタのデータを記憶できる。さらに、多くの場合、2つ以上のブロックがまとめてメタブロックとして扱われ、このようなブロックのページはまとめてメタページとして論理的にリンクされる。多数のセクタのデータを含むデータのページまたはメタページがまとめて読み書きされることにより、操作の並列性を高めている。そのような大容量操作単位には、それらを効率的に操作するという課題がともなう。   The size of the erase unit in the current commercial flash memory system has been expanded to a memory cell block that sufficiently stores data of a plurality of sectors. In fact, many data pages are stored in one block, and one page can store data of a plurality of sectors. Further, in many cases, two or more blocks are collectively treated as metablocks, and pages of such blocks are logically linked together as metapages. The parallelism of the operation is enhanced by collectively reading and writing data pages or metapages including data of a large number of sectors. Such large capacity operation units have the problem of operating them efficiently.

説明を平易にするため、別段の断りがない限り、ここで用いる用語「ブロック」は、ある特定のシステムでメタブロックが使われるか否かに応じて、ブロック消去単位または多重ブロック「メタブロック」を指すことを意図する。同様に、ここで言及する「ページ」は、システム構成に応じて、単一のブロックまたはメタブロック内の「メタページ」の中でのプログラミングの単位を指すことがある。   For simplicity of explanation, unless otherwise noted, the term “block” as used herein refers to a block erase unit or multiple block “metablock” depending on whether the metablock is used in a particular system. Is intended to point to Similarly, a “page” referred to herein may refer to a unit of programming within a “metapage” within a single block or metablock, depending on the system configuration.

現在普及しているメモリシステムのLBAインターフェイスが使われる場合、メモリの接続先にあたるホストによって生成されるファイルには、インターフェイスの論理アドレス空間の中で一意なアドレスが割り当てられる。次いで、メモリシステムは普通、論理アドレス空間とメモリの物理ブロックのページとの間でデータをマッピングする。メモリシステムは論理アドレス空間から物理メモリへのマッピングを絶えず把握するが、ホストはこれを知らない。ホストは、論理アドレス空間の中でそのデータファイルのアドレスを絶えず把握するが、メモリシステムはこのマッピングについて無知かまたはほぼ無知の状態で動作する。
米国特許出願第11/382,224号 米国特許出願第11/382,228号 米国特許出願第11/382,232号 米国特許出願第11/382,235号
When the LBA interface of the currently popular memory system is used, a unique address in the logical address space of the interface is assigned to the file generated by the host to which the memory is connected. The memory system then typically maps data between the logical address space and the pages of the physical block of memory. The memory system keeps track of the mapping from logical address space to physical memory, but the host does not know this. The host keeps track of the address of the data file in the logical address space, but the memory system operates ignorant or nearly ignorant about this mapping.
US patent application Ser. No. 11 / 382,224 US patent application Ser. No. 11 / 382,228 US patent application Ser. No. 11 / 382,232 US patent application Ser. No. 11 / 382,235

使用されている2通りのシステムインターフェイス手法の2番目の手法では、電子システムによって生成または受信されたデータファイルが一意に識別され、そのデータはファイル内でのオフセットによって論理的にアドレスされる。コンピュータをはじめとする他のホストシステムと「スマートカード」として知られる着脱可能なメモリカードとの間では、このアドレス指定方法の形態が使われている。スマートカードは通常、識別、バンキング、販売時点購入、ATMアクセス等のために消費者に利用され、フラッシュメモリカードやフラッシュドライブに比べて少量のメモリを内蔵する。   In the second of the two system interface approaches used, a data file generated or received by the electronic system is uniquely identified and the data is logically addressed by an offset within the file. This form of addressing is used between other host systems such as computers and removable memory cards known as “smart cards”. Smart cards are typically used by consumers for identification, banking, point-of-sale purchases, ATM access, etc. and contain a small amount of memory compared to flash memory cards and flash drives.

前に相互参照した特許出願において、大容量フラッシュメモリシステムではホストによって割り当てられたファイル名によってデータファイルが識別され、このファイルのデータはファイル内のオフセットアドレスによってアクセスされる(これ以降「直接データファイルインターフェイス」と称する)。次いで、メモリシステムは、各セクタまたはその他のデータ単位が帰属するホストファイルを知る。ここで論じるファイル単位は、例えば連続する論理オフセットアドレスによって序列される1組のデータであり、メモリシステムの接続先にあたるホスト演算システムで動作するアプリケーションプログラムによって作成され、一意に識別される。   In a previously cross-referenced patent application, a large flash memory system identifies a data file by a file name assigned by the host, and the data in this file is accessed by an offset address within the file (hereinafter “direct data file” Interface)). The memory system then knows the host file to which each sector or other data unit belongs. The file unit discussed here is, for example, a set of data ordered by successive logical offset addresses, and is created and uniquely identified by an application program that operates in a host computing system that is a connection destination of the memory system.

前に援用されている4つの米国特許出願(2006年5月8日に出願された米国特許出願第11/382,224号(特許文献1)、第11/382,228号(特許文献2)、第11/382,232号(特許文献3)、第11/382,235号(特許文献4))では、メモリシステムの動作中にアクセスされるブロックのリストを保守する手法が説明されている。リスト上の個々の項目は、メモリブロックのパラメータとそれぞれのアドレスとを含む。リスト内の項目は、これに対応するブロックの物理アドレスか、またはこの項目の中に記録されたブロックパラメータの値のいずれかに従って選択できる。本願明細書は、フラッシュメモリの指定されたブロックの中でデータブロックの1つ以上のリストを記憶することに、またリスト内の特定の項目に、この項目の中にあるフィールドの情報内容に基づきアクセスすることに関する。   Four previously incorporated US patent applications (US patent applications 11 / 382,224 (patent document 1) and 11 / 382,228 filed on May 8, 2006). 11 / 382,232 (Patent Document 3) and 11 / 382,235 (Patent Document 4)) describe a technique for maintaining a list of blocks accessed during operation of a memory system. . Each item on the list includes memory block parameters and respective addresses. An item in the list can be selected according to either the physical address of the corresponding block or the value of the block parameter recorded in this item. This specification is based on storing one or more lists of data blocks in a specified block of flash memory, and on a particular item in the list, based on the information content of the field in this item. Related to access.

その手法では、2つ以上のリスト上で全ブロックの情報を収容する整列されていないレコードを記憶するため、指定されたブロック内の論理ページのいくつかを使用する。その他のページは、ブロックの内容アドレス指定可能なパラメータと、ブロックの完全レコードへのポインタだけを収容する項目のリストのために使用する。これらのリストの中ではパラメータ値の順序で項目が記憶され、ある特定のパラメータ値を持つ項目には速やかにアクセスできる。これらのリストは、整列されていないブロックレコードに対し一種のディレクトリとしての役割を果たす。   That approach uses some of the logical pages in the specified block to store unordered records that contain information for all blocks on more than one list. The other pages are used for lists of items that contain only block content addressable parameters and pointers to complete records of the block. In these lists, items are stored in the order of parameter values, and items having a specific parameter value can be quickly accessed. These lists serve as a kind of directory for unordered block records.

ブロック消去可能な不揮発性メモリでは、個々のブロックとそこに収容されたデータについて最新の情報を保守すれば、効率的なメモリ管理が可能となる。1つ以上のファイルの有効データと、用済みデータと、消去済みの空間とが混在するブロックの場合、これは非常に複雑である。しかし、このようなデータをブロック単位で把握すれば、ある種のメモリシステム操作は、特にメモリアレイにおける使用されていない空間の再生は、効率的に遂行できる。使用されていない空間(用済みデータを収容する空間または使用されていない消去済みの空間)の再生はブロック単位で行われる(ここでブロックは消去の単位である)。有効データのコピーを減らすため、ブロックに対するブロック再生操作は効率的な順序で遂行することが望ましい。ブロック再生の順序を決定するには、1つ以上の記述子値の順序でブロックを格付けすると有益であり、ここで、記述子値は、ブロックに記憶されるデータの少なくとも1つの態様を記述する。例えば、ブロックは、そこに収容された有効データの量によって序列でき、そのようにして収容する有効データ量が最も少ないブロックを最初に再生するべく速やかに識別できる。   In a block erasable nonvolatile memory, efficient memory management becomes possible if the latest information is maintained for each block and the data contained therein. In the case of a block in which valid data of one or more files, used data, and erased space are mixed, this is very complicated. However, if such data is grasped in units of blocks, certain types of memory system operations can be performed efficiently, especially the reproduction of unused space in the memory array. Reproduction of unused space (a space for storing used data or an unused erased space) is performed in units of blocks (here, a block is an erase unit). In order to reduce the copy of valid data, it is desirable to perform block playback operations on blocks in an efficient order. To determine the order of block playback, it is beneficial to rank the blocks in the order of one or more descriptor values, where the descriptor values describe at least one aspect of the data stored in the block. . For example, the blocks can be ordered according to the amount of valid data contained therein, and thus the block with the least amount of valid data contained can be quickly identified for first playback.

第1の例において、必ずしも全てのブロックではないが、メモリアレイの様々なブロックのために、レコードを保守する。有効データを収容するブロックは、それらが消去済みの空間を収容するか否かに従い(不完全ブロック)、収容しない場合にはそれらが用済みデータを収容するか否かに従い(用済みブロック)、分類される。これとは別に、用済みデータだけを収容するブロック(無効ブロック)と消去済みの空間だけを収容するブロック(消去済みブロック)とが分類される。これらの分類のいずれか1つに該当する各ブロックにつきレコードを保守する。レコードは専用のレコードブロックにて保守される。加えて、分類されたブロックはリストに列挙され、このリストは記述子値によって序列される。記述子値は、ブロック内の有効データ量、ブロックのアドレス、または他の何らかの記述子値であってもよい。リスト項目は、第1の例において、対応するレコードのポインタを収容する。   In the first example, records are maintained for various blocks of the memory array, but not necessarily all blocks. Blocks that contain valid data depend on whether they contain erased space (incomplete blocks), and if they do not, they contain whether they contain used data (used blocks), being classified. Separately, a block that contains only used data (invalid block) and a block that contains only erased space (erased block) are classified. Records are maintained for each block that falls into any one of these categories. Records are maintained in dedicated record blocks. In addition, the classified blocks are listed in a list, which is ordered by descriptor value. The descriptor value may be the amount of valid data in the block, the address of the block, or some other descriptor value. The list item contains the pointer of the corresponding record in the first example.

第2の例では、様々な分類に該当するブロックのためのレコードも保守する。2つ以上のファイルのデータを収容し、かつ用済みデータもあるいは消去済みの空間も収容しないブロックのために分類「コンプリート共通ブロック」が加えられる。レコードは、専用レコードブロックの中の専用レコードページにて保守される。レコードは、ブロックのブロックアドレス、ブロックに収容された有効データ量、書き込みポインタの位置等を含む、対応するブロックについて様々な情報を収容できる。   In the second example, records for blocks corresponding to various classifications are also maintained. A classification “complete common block” is added for blocks that contain data for more than one file and that do not contain used data or erased space. Records are maintained on a dedicated record page in a dedicated record block. A record can contain various information about the corresponding block including the block address of the block, the amount of valid data contained in the block, the position of the write pointer, and the like.

個々のレコードを速やかに見つけることを可能にするためにディレクトリが提供される。ディレクトリの中の項目は、レコードページと、レコードページにおける対応するレコードの位置とを識別する。ディレクトリはディレクトリブロックの中の専用ディレクトリページにて保守され、ディレクトリの項目はブロックアドレスによって序列される。ディレクトリページは重複しないブロックアドレス範囲を収容する。1つのディレクトリページで複数のレコードページのポインタを収容できる。しかし、1つのディレクトリページの項目によって指示されるレコードは1レコードページに収容されたレコードだけである。したがって、レコードページの中でレコードが更新されるときには、ただひとつのディレクトリページを更新すればよい。   A directory is provided to allow individual records to be found quickly. Items in the directory identify the record page and the position of the corresponding record on the record page. Directories are maintained on a dedicated directory page within the directory block, and directory entries are ordered by block address. Directory pages contain non-overlapping block address ranges. One directory page can accommodate pointers of a plurality of record pages. However, the record indicated by the item of one directory page is only the record accommodated in one record page. Therefore, when a record is updated in a record page, only one directory page needs to be updated.

ディレクトリブロックはまた、1つ以上のリストを収容できる。リスト内の項目はブロックアドレスと記述子値とを収容し、リスト内の項目は記述子値によって序列される。ブロック内の有効データ量は代表的な記述子値である。再生またはその他の目的でブロック内のデータに基づきブロックを選択するにあたって、リストは簡便な手段を提供する。例えば、有効データ量を記述子値として使用する用済みブロックのリストでは、有効データ量が最も少ない用済みブロックが最初の項目になる。このブロックは再生のためにリストから速やかに識別でき、かくしてリストは再生操作のためのキューを提供する。別の例では、ある特定の記述子値を持つブロックを探すことができる。これは、適切なリストページでバイナリ探索を遂行することによって速やかに識別できる。   A directory block can also contain one or more lists. Items in the list contain block addresses and descriptor values, and items in the list are ordered by descriptor values. The amount of valid data in the block is a typical descriptor value. The list provides a convenient means for selecting a block based on the data in the block for playback or other purposes. For example, in the list of used blocks that use the effective data amount as the descriptor value, the used block with the smallest effective data amount becomes the first item. This block can be quickly identified from the list for playback, thus the list provides a queue for playback operations. In another example, a block with a certain descriptor value can be looked for. This can be quickly identified by performing a binary search on the appropriate list page.

第3の例では、不揮発性メモリアレイの各ブロックにつき常時レコードを保守する。この場合のディレクトリページは固定ブロックアドレス範囲の項目を収容し、項目はブロックアドレスによって順次に序列される。これは、特定のブロックの項目をディレクトリページの中で所定のオフセットのところに提供するため、項目の参照先にあたるブロックのブロックアドレスを項目に収容する必要はない。   In the third example, a record is always maintained for each block of the nonvolatile memory array. The directory page in this case contains items in the fixed block address range, and the items are sequentially ordered by block address. This provides an item of a specific block at a predetermined offset in the directory page, so there is no need to accommodate the block address of the block that is the reference destination of the item in the item.

ここではフラッシュデータファイルインターフェイスとともに動作するフラッシュメモリに使われるリストを管理しこれにアクセスする手法を説明するが、これらの手法は様々な用途でタイプの異なるリストに役立てることもできる。   Although techniques are described here for managing and accessing lists used in flash memory that operates with the flash data file interface, these techniques can also be used for different types of lists in various applications.

詳細な第1の例
前述した特許出願で説明されている直接データファイル記憶法はブロックのリストを作成し、個々のブロックの使用に関する所定の値を持つ項目がこのリストから選択される。ここでは、これらのブロックリストの内容アドレス指定可能な探索のための手法を説明する。本願明細書では、添付の図1〜3を参照する。
Detailed First Example The direct data file storage method described in the aforementioned patent application creates a list of blocks from which items with predetermined values for the use of individual blocks are selected. Here, a technique for searching for the addressable contents of these block lists will be described. In this specification, reference is made to the accompanying FIGS.

図1は、メモリセルブロックの、この内容に基づく、分類を示す表である。事実上メモリシステムの全ブロックが図に示されたとおりに分類される。この例では3つの別々のリスト、すなわち不完全ブロックのリストと、用済みブロックのリストと、消去済みブロックのリストとを保守する。   FIG. 1 is a table showing the classification of memory cell blocks based on this content. Virtually all blocks of the memory system are classified as shown in the figure. In this example, three separate lists are maintained: a list of incomplete blocks, a list of used blocks, and a list of erased blocks.

この例で認識されるブロックのタイプは次のとおりである。
「プログラムブロック」は部分的にプログラムされ、かつただひとつのファイルの有効データを収容する。このブロックにはある程度の消去済み容量が残存する。これはある程度の用済みデータを収容することもある。
「共通ブロック」は部分的にプログラムされ、かつ2つ以上のファイルの有効データを収容する。ある程度の消去済み容量が残存する。ある程度の用済みデータを収容することもある。
「フル共通ブロック」は完全にプログラムされ、かつ2つ以上のファイルの有効データを収容する。ある程度の用済みデータを収容することもある。
「ファイルブロック」は完全にプログラムされ、かつ1つのファイルの有効データを収容する。ある程度の用済みデータを収容することもある。
「無効ブロック」は有効データを収容しない。無効ブロックは少なくともある程度は用済みデータを収容し、消去済み容量を収容することもあるが、有効データは収容しない。
「消去済みブロック」はブロックの全容量がプログラムされておらず、データを受け付けることができる。消去済みブロックの中にデータはない。メモリがデータで満たされているかまたはほぼ満たされている場合は通常、使用中のブロックの中にある使われていない容量を連続的に再生することによって特定の最小消去済みブロック数のプールを維持する。
The types of blocks recognized in this example are as follows.
A “program block” is partially programmed and contains valid data for only one file. Some erased capacity remains in this block. This may contain some used data.
A “common block” is partially programmed and contains valid data for two or more files. Some erased capacity remains. Some used data may be accommodated.
A “full common block” is completely programmed and contains valid data for two or more files. Some used data may be accommodated.
A “file block” is completely programmed and contains valid data for one file. Some used data may be accommodated.
An “invalid block” does not contain valid data. An invalid block contains at least some used data and may contain erased capacity, but it does not contain valid data.
The “erased block” can receive data because the entire capacity of the block is not programmed. There is no data in the erased block. When memory is full or nearly full of data, it typically maintains a pool of a specific minimum number of erased blocks by continuously reclaiming unused space in the blocks in use To do.

この例を目的とし、前述したタイプを持つブロックは次に示す3つの分類に分類される。
「不完全ブロック」はある程度のプログラムされていない容量を収容し、1つ以上のファイルの有効データを収容し、かつある程度の用済みデータを収容することがある。プログラムブロックと共通ブロックは不完全ブロックの例である。
「用済みブロック」は、ある程度の用済みブロックを収容するファイルブロックまたはフル共通ブロックである。用済みブロックは消去済み容量を収容せず、有効データと用済みデータの両方を収容する。
「消去済みブロック」の定義は同一名のブロックタイプと同じであり、つまりデータがないブロックである。
For the purpose of this example, blocks having the types described above are classified into the following three categories.
An “incomplete block” contains some unprogrammed capacity, contains valid data for one or more files, and may contain some used data. Program blocks and common blocks are examples of incomplete blocks.
A “used block” is a file block or a full common block that contains a certain amount of used block. Used blocks do not contain erased capacity, but contain both valid data and used data.
The definition of “erased block” is the same as the block type with the same name, that is, a block without data.

メモリアレイの全てのブロックがこれらの分類に入るわけではないことと、ブロックによってはこれらの分類から外れることがあることと、またこのようなブロックがこの例のリストに出現しないこととに留意すべきである。   Note that not all blocks in the memory array fall into these categories, some blocks may fall out of these categories, and such blocks will not appear in this example list. Should.

記憶容量を再生するためのブロックを選択する場合、主な要因となるのは、ブロック内の有効データ量(有効データ容量)である。ブロックに対する再生操作にあたってはこれの有効データを別のブロックへコピーする必要があるから、有効データ量が最も少ないブロックが最初に選ばれる。というのは、データコピーには時間がかかり、データをプログラムし読み出すにあたってメモリシステムの効率的な動作に支障をきたすおそれがあるからである。容量の大半が消去済みでデータを記憶するために使用できるブロックの利点は、いくぶんこれに相反する。有用な消去済み記憶容量を持つブロックを再生することによって得られる記憶空間の増大はさほど大きくないから、そのようなブロックは再生操作にとって好ましくない。この特定の例の不完全および用済みブロックリストは、ブロックに収容された有効データ量(ページ数)と消去済みの量(ページ数)とに基づきブロックを分類するために使用される。ここで説明するこれらのリストの目的は、再生操作に供されるブロックを一度に1つずつ選択することにある。   When selecting a block for reproducing the storage capacity, the main factor is the effective data amount (effective data capacity) in the block. Since it is necessary to copy this valid data to another block in the reproduction operation for the block, the block having the smallest valid data amount is selected first. This is because data copying takes time and may hinder the efficient operation of the memory system when programming and reading data. The advantage of blocks that can be used to store data with most of the capacity erased is somewhat contradictory. Such blocks are undesirable for playback operations because the increase in storage space obtained by playing back blocks with useful erased storage capacity is not very large. This particular example incomplete and used block list is used to classify blocks based on the amount of valid data (number of pages) contained in the block and the amount of erased (number of pages). The purpose of these lists described here is to select one block at a time for playback operations.

ブロックリストのタイプとアクセス
不完全ブロックリスト(Pリスト)は、システム内の全ての不完全ブロックにつき、すなわちある程度の有効データとある程度の消去済み容量の両方を収容する全ブロックにつき、項目を収容する。ある程度の用済みデータを収容することもある。
Block List Type and Access Incomplete Block List (P List) contains entries for every incomplete block in the system, ie for every block that contains both some valid data and some erased capacity. . Some used data may be accommodated.

用済みブロックリスト(Oリスト)は、不完全ブロックリストに項目を持たない、用済みデータを収容する、システム内の全ブロックにつき項目を収容する。   The used block list (O list) contains items for all blocks in the system that contain used data that has no items in the incomplete block list.

消去済みブロックリスト(Eリスト)は、システム内の全消去済みブロックにつき項目を収容する。   The erased block list (E list) contains entries for all erased blocks in the system.

フラッシュメモリ操作の一具体例において、次のブロックリストを保守する。
P(V)リスト:ブロックに記憶される有効データ容量に従って項目が序列される不完全ブロックリスト
P(A)リスト:ブロックのブロックアドレスに従って項目が序列される不完全ブロックリスト
O(V)リスト:ブロックに記憶される有効データ容量に従って項目が序列される用済みブロックリスト
O(A)リスト:ブロックのブロックアドレスに従って項目が序列される用済みブロックリスト
Eリスト:消去済みブロックリスト
In one example of flash memory operation, the next block list is maintained.
P (V) list: Incomplete block list in which items are ordered according to the effective data capacity stored in the block P (A) list: Incomplete block list in which items are ordered according to the block address of the block O (V) list: Used block list in which items are ordered according to the effective data capacity stored in the block O (A) list: Used block list in which items are ordered according to the block address of the block E list: Erased block list

P(V)リスト、O(V)リスト、P(A)リスト、O(A)リストとは、ブロックレコードの共通セットに対し「ディレクトリ」の役割を果たす。再生ブロックを選択するには、有効データ容量値が最も低い項目がP(V)リストとO(V)リストとから読み出される。アクティブブロックを選択するには、最も高い有効データ容量値が目標値に満たないかまたはこれに等しい項目がP(V)リストから読み出される。消去済みブロックを選択するには、Eリスト上の最初の項目が読み出され、リストから削除される。   The P (V) list, O (V) list, P (A) list, and O (A) list serve as a “directory” for a common set of block records. In order to select a reproduction block, the item having the lowest effective data capacity value is read from the P (V) list and the O (V) list. To select an active block, the item with the highest valid data capacity value less than or equal to the target value is read from the P (V) list. To select an erased block, the first item on the E list is read and deleted from the list.

PリストまたはOリストで項目を更新するには、ターゲットブロックアドレスを持つ項目がP(A)リストまたはO(A)リストから読み出される。   To update an item in the P list or O list, the item having the target block address is read from the P (A) list or O (A) list.

ブロックリストの記憶法
前述したセクションで明らかにしたブロックリスト上のブロックに関係する情報を記憶するために、1つ以上のブロックまたはメタブロックが割り当てられる。これらはレコードブロックとして知られ、書き込みまたは更新が1ページ単位で行われる。レコードブロック内の情報のために内容アドレス指定が使用される。
Block List Storage One or more blocks or metablocks are assigned to store information related to the blocks on the block list identified in the previous section. These are known as record blocks, and writing or updating is performed in units of one page. Content addressing is used for information in the record block.

各々のレコードブロックは一定数の論理ページを収容し、論理ページの各々は、使用可能な次の物理ページへこれを再度書き込むことによって更新できる。リスト内のブロックについて情報を収容するレコードを記憶するため、複数の論理ページが割り当てられる。これらはレコードページとして知られている。   Each record block contains a certain number of logical pages, and each of the logical pages can be updated by rewriting it to the next available physical page. A plurality of logical pages are allocated to store records containing information about the blocks in the list. These are known as record pages.

レコードは、ブロックリスト内の全ブロックにつき存在する。レコードページとこれの中にあるレコードはどんな順序でもよい。異なるブロックリストの中にあるブロックのレコードを別々にする必要はない。レコードページの中には用済みレコードが存在することがあり、これは、ブロックリストへ追加されたブロックの新しいレコードに置き換えることができる。レコードは、ブロックの物理アドレスと、ブロックの中にある有効データ量(有効データ容量)を定める値とを、他の情報と併せて収容する。   A record exists for every block in the block list. The record page and the records within it can be in any order. There is no need to separate records for blocks in different block lists. There may be a obsolete record in the record page, which can be replaced with a new record for the block added to the block list. The record contains the physical address of the block and a value that determines the effective data amount (effective data capacity) in the block, together with other information.

個々のブロックリストの1ブロックリストの中でブロックを識別する項目を記憶するため、1つ以上の論理ページが割り当てられる。これらはリストページとして知られている。異なるブロックリストのための別々のリストページが使用される。リストページ内の各項目は、記述子値を、レコードページ内のブロックレコードのポインタと併せて収容し、記述子値は、対応するブロックの物理アドレスか、またはブロック内の有効データ容量の値(またはブロック内のデータに関連する他の何らかの値)である。レコードに対応するブロックが2つのブロックリストに現れる場合は、異なるブロックリストの異なるリストページにある2つのリスト項目が同じレコードを指示する。   One or more logical pages are allocated to store items identifying the blocks in one block list of the individual block lists. These are known as list pages. Separate list pages are used for different block lists. Each item in the list page contains a descriptor value, together with a pointer to a block record in the record page. The descriptor value is either the physical address of the corresponding block or the value of the effective data capacity in the block ( Or some other value related to the data in the block). When a block corresponding to a record appears in two block lists, two list items on different list pages of different block lists indicate the same record.

ブロックリスト内の項目は、ブロックのレコードの共通セットに対し「ディレクトリ項目」の役割を果たす。   Items in the block list serve as “directory items” for the common set of records in the block.

不完全ブロックリストまたは用済みブロックリストのリストページでは、それらの記述子の順序で項目が記憶される。項目は稠密な形式で書き込まれ、リストページ内の書き込まれていない項目位置は通常、書き込まれた最後の項目の後ろにある。リストページは重複しない記述子範囲を記憶する。リストページが満杯になると、新しい論理ページをリストページとして割り当てることによってその項目を2つのリストページに分けることができる。同様に、記述子範囲が隣接する2つのリストページの項目数がしきい値を下回る場合は、2つのリストページを1つにまとめることができる。レコードブロックのインデックスは、各リストページの最初の項目の記述子を収容する。 In the list page of the incomplete block list or the used block list, items are stored in the order of their descriptors. Items are written in a dense format, and the unwritten item position in the list page is usually after the last item written. List pages store non-overlapping descriptor ranges. When the list page is full, the item can be split into two list pages by assigning a new logical page as the list page. Similarly, when the number of items in two list pages adjacent to each other in the descriptor range is lower than the threshold value, the two list pages can be combined into one. The record block index contains the descriptor of the first item of each list page.

不完全ブロックリストまたは用済みブロックリストの中でブロックアドレスかまたは有効データ容量の目標値を持つ項目は、レコードブロックインデックスから該当する記述子範囲を持つリストページを識別することにより、そのページをフラッシュから読み出し、次いでそのページの中で目標項目のリニア探索かまたはバイナリ探索を遂行することにより、見つけることができる。そして、この項目より識別されるレコードページからターゲットブロックのレコードを読み出すことができる。   In the incomplete block list or the used block list, an item having a block address or effective data capacity target value is flushed by identifying the list page having the corresponding descriptor range from the record block index. Can be found by reading from and then performing a linear or binary search for the target item in the page. Then, the record of the target block can be read from the record page identified from this item.

消去済みブロックリスト内のブロックの項目はリストページに記憶でき、ここでそれらは、それらが書き込まれた順序を保つ。消去済みブロックは常にリストの中で最も古い項目として選択される。   Items of blocks in the erased block list can be stored on the list page, where they keep the order in which they were written. The erased block is always selected as the oldest item in the list.

レコードブロックの構造
ブロックリストの中で参照されるブロックの全ての項目とインデックス情報は、フラッシュメモリの1つ以上のレコードブロックに収容される。レコードブロックはメタブロックであり、ページ単位で更新される。
レコードブロックは次の特性を持つ。
1.あらゆるタイプのブロックリストをまとめて1つのレコードブロックに記憶できる。
2.必要に応じ、複数のレコードブロックを使用できる。
3.レコードブロックは特定の数の論理ページを持ち、これはこの例においてブロック内の物理ページ数の25%に規定される。
4.最後に書き込まれたページのレコードブロックインデックスセクションは、各論理ページから物理ページへのマッピングを提供する。
5.論理ページは、使用可能な次の物理ページにこれを再度書き込むことによって更新できる。
6.ブロックリストのため、またはブロックのレコードのために使用されるあらゆるタイプのページに論理ページを割り当てることができる。
7.レコードブロックは、満杯のときに圧縮され消去済みブロックに再度書き込まれる。
All items and index information of blocks referred to in the structure block list of the record block are accommodated in one or more record blocks of the flash memory. A record block is a metablock and is updated in units of pages.
A record block has the following characteristics:
1. All types of block lists can be stored together in one record block.
2. Multiple record blocks can be used as needed.
3. A record block has a certain number of logical pages, which in this example is defined as 25% of the number of physical pages in the block.
4). The record block index section of the last written page provides a mapping from each logical page to the physical page.
5. The logical page can be updated by rewriting it to the next available physical page.
6). A logical page can be assigned to any type of page used for a block list or for a record of a block.
7). Record blocks are compressed when full and rewritten into erased blocks.

図2にはレコードブロックの一例の構造が示されている。   FIG. 2 shows an example of the structure of the record block.

レコードブロックインデックス
レコードブロックインデックスは、レコードブロックの中にある各ページの1セクションとして存在する。これは最後に書き込まれたページの中にあるものだけが有効である。レコードブロックインデックスは可能な各論理ページにつき項目を収容し、論理ページ番号に従って序列される。各項目は次に示す3つのフィールドを持つ。
1.ページタイプを識別する数字コード
a.P(V)リストページ
b.P(A)リストページ
c.O(V)リストページ
d.O(A)リストページ
e.Eリストページ
f.レコードページ
g.割り当てされていない論理ページ
2.ページ内の最初の項目の値(これにより、P(V)、P(A)、O(V)、O(A)リストページの各タイプで値の範囲を設定し、キャッシュできる。)
3.論理ページのマップ先にあたる物理ページのポインタ
Record block index The record block index exists as one section of each page in the record block. This is only valid for the last page written. The record block index contains an entry for each possible logical page and is ordered according to the logical page number. Each item has the following three fields.
1. Numeric code identifying page type a. P (V) list page b. P (A) list page c. O (V) list page d. O (A) list page e. E list page f. Record page g. 1. Unassigned logical page The value of the first item in the page (this allows the range of values to be set and cached for each type of P (V), P (A), O (V), O (A) list page)
3. Pointer to the physical page to which the logical page is mapped

レコードページ
レコードはそのリストのうちの1つの項目をブロックに関係する必要情報を全て収容し、レコードページに記憶される。レコードページは次に示す3つのセクションに細分される。
1.項目状態
2.レコード
3.共通ブロックレコード
The record page record contains all the necessary information related to the block in one item of the list and is stored in the record page. The record page is subdivided into three sections:
1. Item status Record 3. Common block record

項目状態セクションは、レコードが使用中か、それとも新しいブロックに割り当てることができるかを指示するビットマップを備える。レコードセクションはリスト内の全ブロックにつき一定サイズの項目を有し、フィールドはブロックの属性を次のとおりに規定する。
1.ブロックアドレス
2.ブロック内の有効データ容量
3.ブロック内のページ書き込みポインタの位置
4.ブロック内の最初のデータグループのファイルID
5.ブロック内にデータが存在するファイルの合計数
6.ブロックの共通ブロックレコードへのオフセット(値0は共通ブロックレコードが存在しないことを意味する。)
The item status section comprises a bitmap that indicates whether the record is in use or can be assigned to a new block. The record section has a fixed size item for every block in the list, and the field defines the attributes of the block as follows.
1. Block address 2. Effective data capacity in block 3. position of page write pointer in block File ID of the first data group in the block
5. 5. Total number of files with data in the block Offset to common block record of the block (a value of 0 means no common block record exists)

共通ブロックレコードセクションの項目のサイズは不定であり、フィールドは共通ブロック内の他のファイルIDを次のとおりに規定する。
1.共通ブロックにおける後続データグループのファイルID
2.レコード終了インジケータ
The size of the item in the common block record section is indefinite, and the field defines other file IDs in the common block as follows.
1. File ID of subsequent data group in common block
2. Record end indicator

ブロックリストからブロックが削除される場合、レコードページは用済み項目を収容する。このようなレコードは、リストに追加される新しいブロックに再び割り当てることができる。   When a block is deleted from the block list, the record page contains a used item. Such records can be reassigned to new blocks that are added to the list.

ブロックに割り当てられるレコードブロックの中の論理ページ番号とそのページ内のレコード番号は、レコードを参照するためにリストページによって使用されるため、通常は変更されない。しかし、ブロックのレコードを同一のリストページ内の別のレコード番号、別のリストページ、または別のレコードブロックへ移すことは許される。ブロックのレコードが移される場合、いずれかのリスト項目でそのポインタを相応に更新しなければならない。   The logical page number in the record block assigned to the block and the record number in that page are not normally changed because they are used by the list page to refer to the record. However, it is permissible to move a block of records to another record number, another list page, or another record block within the same list page. If a block record is moved, the pointer must be updated accordingly in any list item.

レコードページが修正され再度書き込まれる場合、用済みの空間をなくすために共通ブロックレコードを圧縮でき、共通ブロックレコードへのオフセットの変化を反映させるためにレコードを更新できる。   If the record page is modified and rewritten, the common block record can be compressed to eliminate used space, and the record can be updated to reflect the change in offset to the common block record.

レコードと共通ブロックレコードとの間の境界は動的である。   The boundary between records and common block records is dynamic.

図3にはブロックレコードページの一例の構造が示されている。   FIG. 3 shows an exemplary structure of a block record page.

リストページ
リストページは、1組のブロックの項目を、記述子値によって規定される順序で収容する。P(V)リストとO(V)リスト内の項目における記述子は有効データ容量であり、P(A)リストとO(A)リスト内の項目における記述子はブロックアドレスである。
List page The list page contains a set of items of blocks in the order defined by the descriptor values. Descriptors in items in the P (V) list and O (V) list are valid data capacities, and descriptors in items in the P (A) list and O (A) list are block addresses.

有効項目はリストページの中で一連の項目位置を占めるが、ページ全体を埋め尽くす必要はない。この中に用済み項目はなく、記述子値は連続しなくともよい。   A valid item occupies a series of item positions in a list page, but does not need to fill the entire page. There are no obsolete items in this, and the descriptor values do not have to be contiguous.

リストページ内の項目は、記述子フィールド内の値の順序に並ぶ。記述子値の範囲は、他のリストページ内の記述子値の範囲と重複しない。   Items in the list page are arranged in the order of the values in the descriptor field. The range of descriptor values does not overlap with the range of descriptor values in other list pages.

ブロックリストへ追加されたブロックのための項目を挿入する必要がある場合、その新しいブロックの記述子値を記述子範囲に含むリストページを識別する。新しい項目は記述子範囲内の適切な位置に挿入され、リストページは再度書き込まれる。項目を削除しなければならない場合、その項目を省いてリストページが圧縮され、再度書き込まれる。   When it is necessary to insert an entry for a block added to the block list, a list page is identified that includes the descriptor value of the new block in the descriptor range. The new item is inserted at the appropriate location within the descriptor range and the list page is rewritten. If an item has to be deleted, the list page is compressed and rewritten, omitting the item.

満杯になったリストページへ追加を行わなければならない場合、空き論理ページが新しいリストページとして割り当てられ、満杯のリストページの記述子範囲は、2つのほぼ等しい重複しない範囲に分割され、それらは2つの使用可能なリストページに書き込まれる。   If an addition must be made to a full list page, a free logical page is allocated as a new list page, and the full list page descriptor range is divided into two approximately equal non-overlapping ranges, which are 2 Written to one available list page.

記述子範囲が隣接する2つのリストページで総有効項目数がしきい値(この例では、リストページにおける項目位置数の70%)を下回ると、2つのリストページの範囲は統合され、2つのリストページのうちの一方に書き込まれる。次いで、他方の使用されていないページは空き論理ページとなる。   If the total number of valid items falls below a threshold (in this example, 70% of the number of item positions in the list page) on two list pages with adjacent descriptor ranges, the two list page ranges are merged and Written on one of the list pages. The other unused page then becomes a free logical page.

P(V)リストとO(V)リストの場合、リストページ内の項目内のフィールドは次のとおりである。
1.ブロック内の有効データ容量
2.レコードページ内のブロックのレコードを指すポインタ(レコードページはリストページと同じレコードブロックの中になくてもよい。)
For P (V) lists and O (V) lists, the fields in the items in the list page are as follows:
1. 1. Effective data capacity in block Pointer to the record of the block in the record page (the record page may not be in the same record block as the list page)

P(A)リストとO(A)リストの場合、リストページ内の項目内のフィールドは次のとおりである。
1.ブロックアドレス
2.レコードページ内のブロックのレコードを指すポインタ(レコードページはリストページと同じレコードブロックの中になくてもよい。)
For P (A) and O (A) lists, the fields in the items in the list page are as follows:
1. Block address Pointer to the record of the block in the record page (the record page may not be in the same record block as the list page)

Eリストの場合、リストページ内の項目内のフィールドは次のとおりである。
1.ブロックアドレス
For the E list, the fields in the items in the list page are as follows:
1. Block address

レコードのアクセスシーケンス
PリストまたはOリストで目標ブロックのレコードにアクセスするには、次のステップからなるシーケンスを使用する。
1.P(V)リスト、O(V)リスト、P(A)リスト、またはO(A)リストを目標リストとして設定する。
2.レコードブロックの中で最後に書き込まれたページからレコードブロックインデックスを読み出す。この情報はあらかじめキャッシュの中に存在することがある。
3.ステップ1で規定した目標リストで目標記述子値のリストページに割り当てられた論理ページ番号を判定する。
4.ステップ3で判定した論理ページ番号をレコードブロックから読み出す。
5.目標ブロックの項目を読み出すために、ステップ4で読み出したリストページを探索する。
6.ステップ5で読み出した項目によって規定されるレコードブロックからレコードページを読み出す。
7.ステップ6で読み出したレコードページからターゲットブロックのレコードを読み出す。
Access sequence of records To access the records of the target block in the P list or O list, a sequence consisting of the following steps is used.
1. A P (V) list, O (V) list, P (A) list, or O (A) list is set as the target list.
2. The record block index is read from the page written last in the record block. This information may already exist in the cache.
3. The logical page number assigned to the list page of the target descriptor value in the target list defined in step 1 is determined.
4). The logical page number determined in step 3 is read from the record block.
5. In order to read the item of the target block, the list page read in step 4 is searched.
6). A record page is read from the record block defined by the item read in step 5.
7). The record of the target block is read from the record page read in step 6.

詳細な第2の例
第2の例では前述した第1の例と同じく、特定のブロックが、そこに収容されるデータに従い、それぞれ分類され、これらのブロックのためのレコードが保守される。リストは、ブロックに記憶されるデータに関係する記述子値に従って序列され、保守される。ブロックの中にある有効データ量は、このような記述子値の一例である。しかし、この第2の例で、ブロックの管理に用いる構造および方法のいくつかは異なる。第1および第2の例の構造および方法は代案とみなすべきものであり、両例の構造および/または手法の様々な組み合わせもまた本発明の開示の一部とみなされる。第2の例は、第1の例との違いに焦点をあてながら説明する。よって、両例に共通の要素は第2の例に関して重ねて詳述しない場合がある。
Detailed Second Example In the second example, like the first example described above, specific blocks are classified according to the data contained therein, and records for these blocks are maintained. The list is ordered and maintained according to descriptor values related to the data stored in the block. The amount of valid data in a block is an example of such a descriptor value. However, in this second example, some of the structures and methods used for block management are different. The structures and methods of the first and second examples are to be considered as alternatives, and various combinations of the structures and / or techniques of both examples are also considered part of this disclosure. The second example will be described focusing on the difference from the first example. Thus, elements common to both examples may not be detailed again with respect to the second example.

第2の例のブロック分類は第1の例のブロック分類と同じであり、「コンプリート共通ブロック分類」が追加される。図4は、追加の分類「コンプリート共通ブロック」を除いて図1とほぼ同じブロック分類表を示す。「不完全ブロック」、「用済みブロック」、「消去済みブロック」、または「コンプリート共通ブロック」のブロック分類を有する各ブロックにつきレコード項目を保守する。分類「コンプリート共通ブロック」は、消去済み容量を収容せず、かつ用済みデータを収容しない共通ブロックに使われる。コンプリート共通ブロック(CCB)のレコードは、全コンプリート共通ブロックのブロックレコードにより保守される。再生のために使用できる空間を持たない(消去済みの空間も用済みの空間も持たない)コンプリート共通ブロックは通常、再生操作に供されない。しかし、コンプリート共通ブロックの中である程度のデータが用済みになると、そのブロックは用済みブロックとして再分類され、再生操作に供されることがある。そのような再分類が行われる場合には、ブロックに記憶されるデータの関連情報を収容するブロックレコードが必要である。この情報はブロックの既存のCCBレコード項目から使用可能である。したがって、コンプリート共通ブロックのレコードを保守すれば、ブロックのレコードを生成するために情報を探索するという重い負担を伴わずにコンプリート共通ブロックから用済みブロックへの移行を果たすことができる。   The block classification of the second example is the same as the block classification of the first example, and “complete common block classification” is added. FIG. 4 shows a block classification table that is almost the same as FIG. 1 except for the additional classification “complete common block”. A record entry is maintained for each block having a block classification of “incomplete block”, “used block”, “erased block”, or “complete common block”. The classification “complete common block” is used for a common block that does not contain erased capacity and does not contain used data. A complete common block (CCB) record is maintained by a block record of all complete common blocks. Complete common blocks that do not have space available for playback (no erased or used space) are typically not subjected to playback operations. However, when a certain amount of data is used up in the complete common block, the block may be reclassified as a used block and may be subjected to a reproduction operation. When such reclassification is performed, a block record that contains relevant information of data stored in the block is required. This information is available from the block's existing CCB record entry. Therefore, if a complete common block record is maintained, a transition from a complete common block to a used block can be achieved without the heavy burden of searching for information to generate a block record.

図1および4の分類方式は例示的なものであり、これ以外の方式も予期される。(後ほど詳述する)一例において、メモリアレイの中にある全ブロックのために常時レコードを保守する。この場合は、用済みデータを持たないファイルブロックのための追加のブロック分類を図4の表に加えることができる。別の例では、図4の分類のいくつかは必要とされない。例えば、消去済みブロックや無効ブロックのレコードは保守しなくてよい。さらに別の例では、図4とは異なるブロックタイプにブロックを分けることができる。図4のブロックタイプが特定のメモリ管理方式にとって好都合であるが、他のメモリ管理方式で異なるブロックタイプを使用できることも理解できよう。   The classification schemes of FIGS. 1 and 4 are exemplary, and other schemes are anticipated. In one example (discussed in detail below), records are always maintained for all blocks in the memory array. In this case, additional block classifications for file blocks that do not have used data can be added to the table of FIG. In another example, some of the classifications of FIG. 4 are not required. For example, records of erased blocks and invalid blocks need not be maintained. In yet another example, the blocks can be divided into different block types than in FIG. It will be appreciated that the block type of FIG. 4 is convenient for a particular memory management scheme, but that different block types can be used with other memory management schemes.

図4の表に記載されたブロック分類のいずれか1つに該当する全ブロックにつきレコードを保守する。ブロック分類が異なるブロックのレコードを同じページにまとめて記憶できる。この例では、ブロックレコードだけを記憶する専用のブロックレコードブロックを保守する。レコードブロック内の個々のレコード項目へのアクセスを促進するため、ブロックディレクトリを保守する。(ブロックディレクトリとブロックレコードの両ページをただひとつのブロックで収容する第一の例と違って)ブロックディレクトリとブロックレコードは、フラッシュメモリの中で別個の1組のブロックに記憶される。図5は、ディレクトリブロック503の中にあるブロックディレクトリ項目501を示し、このブロックディレクトリ項目は、ブロックレコードブロック509の中にある対応するブロックレコード507の位置を指すポインタ505を含む。ブロックディレクトリ項目501はブロックアドレス506をも含む。   Records are maintained for all blocks corresponding to any one of the block classifications described in the table of FIG. Records of blocks with different block classifications can be stored together on the same page. In this example, a dedicated block record block that stores only block records is maintained. Maintain a block directory to facilitate access to individual record items within a record block. The block directory and block record are stored in a separate set of blocks in the flash memory (unlike the first example, where both the block directory and block record pages are contained in a single block). FIG. 5 shows a block directory entry 501 in the directory block 503 that includes a pointer 505 that points to the location of the corresponding block record 507 in the block record block 509. Block directory entry 501 also includes a block address 506.

ブロックディレクトリは、ブロックレコードに項目が存在する各ブロックにつき1つのブロックディレクトリ項目を収容する。ブロックディレクトリ項目は重複しないブロックアドレス値範囲の中で記憶され、各々の範囲は別々のブロックディレクトリページに割り当てられる。範囲の中ではブロックアドレス値に従って項目が序列される。目標ブロックアドレスのブロックディレクトリ項目は、1つのブロックディレクトリページを読み出すことにより、またそのページの中でバイナリ探索を遂行することにより、見つけることができる。このようにしてブロックディレクトリは、ブロックアドレスに従って特定のブロックレコード項目を見つける簡便な手段を提供する。   The block directory contains one block directory item for each block that has an item in the block record. Block directory entries are stored in non-overlapping block address value ranges, each range being assigned to a separate block directory page. Within the range, items are ordered according to block address values. The block directory entry for the target block address can be found by reading one block directory page and performing a binary search within that page. In this way, the block directory provides a convenient means of finding a particular block record item according to the block address.

用途によっては、ブロックアドレス以外の基準によってブロックを探索することが望ましい。場合によっては、ブロックに記憶されるデータに関連する記述子値をこのような探索に使用できる。例えば、再生の目的で、有効データが最も少ない不完全ブロックを識別することが望まれるかもしれない。このようなブロックを見つける一方法として、収容された有効データ量が最も少ないブロックがどれなのかを判定するために全ブロックのレコード項目を探索する。しかし、そのような探索によって多大な負担が加わるかもしれない。一代案では、収容される有効データ量(有効データ容量)に従ってブロックが序列されるブロックのリストを保守する。この場合は収容された有効データ量の順にブロックがリストされるから、有効データ量が最も少ないブロックを識別するには、そのリストの中の最初(または最後)の項目を読み出すだけでよい。同様に、一定量の有効データを持つブロックが必要ならば、バイナリ探索でこのようなブロックを速やかに識別できる。ブロックに記憶される有効データ量はリスト項目の中の記述子値によって与えられる。このような記述子値は、ブロックに記憶されるデータを記述する。これは、ブロックの物理位置を記述する(第一の例で記述子値として使われる)ブロックアドレスと対照をなす。   Depending on the application, it is desirable to search for blocks based on criteria other than block addresses. In some cases, descriptor values associated with the data stored in the block can be used for such searches. For example, for playback purposes, it may be desirable to identify incomplete blocks with the least valid data. As a method for finding such a block, the record items of all the blocks are searched in order to determine which block has the smallest effective data amount accommodated. However, such a search may add significant burden. In one alternative, a list of blocks is maintained in which the blocks are ordered according to the amount of valid data contained (effective data capacity). In this case, since the blocks are listed in the order of the contained effective data amount, in order to identify the block having the smallest effective data amount, it is only necessary to read the first (or last) item in the list. Similarly, if a block with a certain amount of valid data is required, such a block can be quickly identified by a binary search. The amount of valid data stored in the block is given by the descriptor value in the list item. Such descriptor values describe the data stored in the block. This contrasts with the block address (used as a descriptor value in the first example) that describes the physical location of the block.

レコードのフィールドの中で規定されるブロック内の有効データ量の記述子値に従ってブロックレコードにアクセスするため、2段階探索プロセスを取り入れたメカニズムが提供される。この内容アドレス指定メカニズムを使用できるブロック分類の場合、有効データ容量値を収容する項目は、ブロックディレクトリの中で別々のリストページに記憶される。これらのブロックリスト項目は重複しない有効データ容量値範囲の中で記憶され、各々の範囲は別々のブロックリストページに割り当てられる。範囲の中では有効データ容量値に従って項目が序列される。各々のブロックリスト項目はブロックアドレスを収容し、そのアドレスは明確にブロックディレクトリ項目を識別する。ブロックリスト項目511はブロックアドレス513を収容し、これはブロックアドレス506と同じであり、よってブロックディレクトリ項目501を識別する。ブロックリスト項目511はまた、ブロックアドレス513を有するブロックの有効データ容量515を収容する。目標有効データ容量値のブロックディレクトリ項目は、1つのリストページを読み出すことにより、そのページの中でバイナリ探索を遂行して目標有効データ容量値を持つ項目を見つけることにより、さらに1つのディレクトリページを読み出すことにより、次いでそのディレクトリページの中でバイナリ探索を遂行して目標ブロックアドレスを持つ項目を見つけることにより、見つけることができる。   A mechanism incorporating a two-stage search process is provided for accessing block records according to the descriptor value of the amount of valid data in the block defined in the field of the record. For block classifications that can use this content addressing mechanism, items containing valid data capacity values are stored in separate list pages in the block directory. These block list items are stored in valid data capacity value ranges that do not overlap, and each range is assigned to a separate block list page. Within the range, items are ordered according to valid data capacity values. Each block list item contains a block address, which clearly identifies the block directory item. Block list entry 511 contains block address 513, which is the same as block address 506, and thus identifies block directory entry 501. Block list item 511 also contains the effective data capacity 515 of the block having block address 513. The block directory item of the target effective data capacity value is obtained by reading one list page, performing a binary search in the page to find an item having the target effective data capacity value, and adding one more directory page. By reading, it can then be found by performing a binary search in the directory page to find the item with the target block address.

バイナリ探索は、単にページの記述子値範囲の中間にある項目を調べることを意味する場合がある。この項目の記述子値と探している記述子値との比較に基づき、探索はページの半分に限定される。そしてこの半ページの中間にある項目も同様に調べ、探索はページの4分の1に限定される。連続するステップの後には、探している記述子値を有する1つ以上の項目が見つかる。別の例では、探している記述子値がリストの中で最下位(または最上位)であるため、バイナリ探索は必要ない。したがって、リスト内の最初(または最後)の項目が選択される。   A binary search may simply mean looking at an item that is in the middle of the page's descriptor value range. Based on a comparison of the descriptor value of this item with the descriptor value that is being searched, the search is limited to half the page. The items in the middle of this half page are examined in the same manner, and the search is limited to a quarter of the page. After successive steps, one or more items with the descriptor value you are looking for are found. In another example, a binary search is not necessary because the descriptor value you are looking for is the lowest (or highest) in the list. Therefore, the first (or last) item in the list is selected.

ブロックレコードはブロックディレクトリの中の項目によって直接アドレス指定できる。ブロックレコードのページは、同じまたは別のブロックレコードブロック内のプログラムされていない位置へページを移す読み出し/修正/書き込み操作によって更新される。ページ内のブロックレコードはどれも、同じブロックディレクトリページの中にある項目に対応しなければならない。しかし、1つのディレクトリページで複数のブロックレコードページの項目を収容できる。よって、ブロックレコードページの更新にあたっては、ただひとつのブロックディレクトリページを修正すればよい。   Block records can be addressed directly by entries in the block directory. The block record page is updated by a read / modify / write operation that moves the page to an unprogrammed location in the same or another block record block. Every block record in a page must correspond to an item in the same block directory page. However, one directory page can accommodate a plurality of block record page items. Therefore, when updating the block record page, only one block directory page needs to be modified.

ブロックディレクトリ
ブロックディレクトリは、ブロックアドレスによってブロックを識別し、対応するブロックレコードの位置を指示する、序列された項目の集まりである。ブロックレコードの保守が行われる各ブロックにつき1項目がブロックディレクトリの中に存在する。この例では、不完全ブロック、用済みブロック、コンプリート共通ブロック、および消去済みブロックの各ブロックにつき1項目が存在する。ブロックディレクトリは1つ以上のディレクトリブロックに収容される。
Block Directory A block directory is a group of ordered items that identify a block by a block address and indicate the location of the corresponding block record. There is one entry in the block directory for each block for which block records are maintained. In this example, there is one entry for each of the incomplete block, the used block, the complete common block, and the erased block. Block directories are contained in one or more directory blocks.

図6は、用済みブロックと不完全ブロックのリストページを収容するディレクトリブロック621を示している。図6はまた、ディレクトリブロックの中にあるディレクトリページを示している。各ディレクトリブロックは一定数の論理ページを収容し、この論理ページの各々は、これを使用可能な次の物理ページへ再度書き込むことによって更新できる。有効項目を収容するページには論理ページ番号が割り当てられる。この例で、ディレクトリブロック内の論理ページ数はブロック内の物理ページ数の25%に指定される。他の例ではこれとは別の制限を指定できる。ディレクトリブロックの最後のページが書き込まれた後には、有効ページの全てを消去済みブロックへ書き込むことにより、そして元のディレクトリブロックを消去することにより、ブロックが圧縮される。   FIG. 6 shows a directory block 621 that contains a list page of used blocks and incomplete blocks. FIG. 6 also shows a directory page in the directory block. Each directory block contains a fixed number of logical pages, each of which can be updated by rewriting it to the next available physical page. A logical page number is assigned to a page containing a valid item. In this example, the number of logical pages in the directory block is specified as 25% of the number of physical pages in the block. Other examples can specify other restrictions. After the last page of the directory block has been written, the block is compressed by writing all of the valid pages to the erased block and by erasing the original directory block.

ブロックディレクトリページ
ブロックディレクトリページは、1組のブロックディレクトリ項目を、それらのブロックアドレス値の順に収容する。図7Aにはブロックディレクトリページ731の一例が示されている。有効ブロックディレクトリ項目733はブロックディレクトリページ731の中で一連の項目位置を占めるが、ページ全体を埋め尽くす必要はないため、消去済みの空間が残ることがある。各々のブロックディレクトリページはレコードインデックス(後述する)を収容する。ここで、ブロックディレクトリページ731はレコードインデックス735を収容する。ブロックディレクトリ項目733の中に用済み項目はなく、ブロックアドレス値は連続しなくともよい。ある1つのブロックディレクトリページにおけるブロックアドレス値の範囲は、別のブロックディレクトリページにおけるブロックアドレス値の範囲に重複しない。
Block Directory Page The block directory page contains a set of block directory items in order of their block address values. FIG. 7A shows an example of the block directory page 731. The valid block directory item 733 occupies a series of item positions in the block directory page 731, but it is not necessary to fill the entire page, so an erased space may remain. Each block directory page contains a record index (described below). Here, the block directory page 731 contains a record index 735. There are no used items in the block directory item 733, and the block address values may not be continuous. The range of block address values in one block directory page does not overlap with the range of block address values in another block directory page.

ブロックの項目を挿入する必要がある場合は、その新しいブロックのブロックアドレス値をブロックアドレス範囲に含むブロックディレクトリページが、ディレクトリインデックスの情報から識別される。新しい項目はブロックアドレス範囲の中の適切な位置に挿入され、ブロックディレクトリページは再度書き込まれる。項目を削除しなければならない場合は、その項目を省いてブロックディレクトリページが圧縮され、再度書き込まれる。   If a block entry needs to be inserted, a block directory page that includes the block address value of the new block in the block address range is identified from the directory index information. A new entry is inserted at the appropriate location in the block address range and the block directory page is rewritten. If an item must be deleted, the block directory page is compressed and rewritten, omitting the item.

満杯になったブロックディレクトリページへ追加を行わなければならない場合は、空き論理ページが新しいブロックディレクトリページとして割り当てられ、満杯になったブロックディレクトリページのブロックアドレス範囲は2つのほぼ等しい重複しない範囲に分割され、それらは2つの使用可能なブロックディレクトリページに書き込まれる。   If an addition must be made to a full block directory page, a free logical page is allocated as the new block directory page, and the block address range of the full block directory page is divided into two approximately equal non-overlapping ranges. They are written to two available block directory pages.

ブロックアドレス範囲が隣接する2つのブロックディレクトリページの総有効項目数がしきい値(この例では、1ブロックディレクトリページにおける項目位置数の70%)を下回ると、2つのブロックディレクトリページの範囲は統合され、2つのブロックディレクトリページのうちの一方に書き込まれる。次いで、他方の未使用ページは空き論理ページとなる。   When the total number of valid items in two block directory pages adjacent to each other in the block address range falls below a threshold value (70% of the number of item positions in one block directory page in this example), the ranges of the two block directory pages are merged. And written to one of the two block directory pages. Next, the other unused page becomes a free logical page.

この例のブロックディレクトリ項目737は2つのフィールド、すなわち(1)ブロックアドレスと、(2)対応するブロックレコードのポインタとを収容する。このポインタは、ブロックレコードページの論理識別子と、ページ内のある特定のブロックレコードのバイトオフセットとを識別する。ブロックレコードページ論理識別子は、同じブロックディレクトリページの中にある項目によって参照される最高16個のブロックレコードページのうちの1つを識別する。これは、その項目を収容するブロックディレクトリページの中のレコードインデックスフィールドによって物理ブロックアドレスとページ番号とへ変換される。バイトオフセットは、識別されたブロックレコードページの中でブロックレコードの位置を識別する。   The block directory entry 737 in this example contains two fields: (1) a block address and (2) a pointer to the corresponding block record. This pointer identifies the logical identifier of the block record page and the byte offset of a particular block record within the page. The block record page logical identifier identifies one of up to 16 block record pages referenced by items in the same block directory page. This is converted into a physical block address and a page number by the record index field in the block directory page containing the item. The byte offset identifies the position of the block record within the identified block record page.

各々の有効ブロックディレクトリページとブロックリストページの中には単独の有効レコードインデックスフィールドが存在する。これは、ブロックレコードページの論理識別子をブロックレコードページが位置するところのページ番号と物理ブロックアドレスとに変換するために使われる。レコードインデックス735は、ブロックディレクトリページ731のいずれかの項目の中で使われる各論理識別子につき1つの項目(例えば、項目739)を収容する。1つのブロックディレクトリページの中でブロックディレクトリ項目により最高16個のブロックレコードページが参照される。したがって、4ビット論理識別子が使用される。かくして個々のブロックディレクトリ項目は、対応するブロックレコードページの長い物理ページ位置の代わりに4ビット識別子を使用できる。レコードインデックスフィールドは、ブロックディレクトリページ内の全項目のためにこれらの論理識別子を変換する役割を果たす。   There is a single valid record index field in each valid block directory page and block list page. This is used to convert the logical identifier of the block record page into the page number and physical block address where the block record page is located. The record index 735 contains one item (eg, item 739) for each logical identifier used in any item on the block directory page 731. A block directory entry references up to 16 block record pages within a block directory page. Therefore, a 4-bit logical identifier is used. Thus, each block directory entry can use a 4-bit identifier instead of the long physical page position of the corresponding block record page. The record index field serves to translate these logical identifiers for all items in the block directory page.

有効ディレクトリインデックスフィールド741は、最後に書き込まれたブロックディレクトリまたはブロックリストページにのみ存在する。それ以前に書き込まれたページ内のディレクトリインデックスフィールドの情報は用済みである。この目的は、ブロックディレクトリ項目とブロックリスト項目の序列と、論理ページから物理ページへのマッピングとを支援することにある。これが提供する構造では、ブロックディレクトリブロック内の個々のページに関する最新データが記憶される。ディレクトリインデックスは、論理ページ番号に従って序列される項目743などの項目を各可能な論理ページにつき収容する。各項目には4つのフィールドがある。
(1)論理ページの割り当て状態フラグ
(2)ページのタイプ、例えばブロックディレクトリ、PBリスト、またはOBリスト
(3)ブロックディレクトリページ内の最初の項目のブロックアドレス、またはリストページ(PBまたはOB)内の最初の項目の有効データ容量値(これにより各論理ページでブロックアドレスまたは有効データ値の範囲を確立し、キャッシュできる。)
(4)論理ページのマッピングにあたるブロックディレクトリの中の物理ページへのポインタ
The valid directory index field 741 exists only in the last written block directory or block list page. Previously written information in the directory index field in the page has been used. The purpose is to support the ordering of block directory items and block list items and the mapping from logical pages to physical pages. In the structure it provides, the latest data for individual pages in the block directory block is stored. The directory index contains items such as items 743 ordered according to logical page number for each possible logical page. Each item has four fields.
(1) Logical page allocation status flag (2) Page type, eg, block directory, PB list, or OB list (3) Block address of first item in block directory page, or in list page (PB or OB) Valid data capacity value of the first item of (this allows each logical page to establish a block address or valid data value range and cache it)
(4) Pointer to physical page in block directory corresponding to logical page mapping

ブロックリストページ
ブロックリストページは、1ブロック分類につき1組のブロックリスト項目を、ブロックに収容されたデータ(例えば、ブロックに収容された有効データ量)を記述する記述子値の順に、収容する。図7Bにはブロックリストページ751の一例が示されている。この例で、ブロックリストページはPBリストページまたはOBリストページである。図7BはOBリストページ751を示している。有効ブロックリスト項目753はブロックリストページ751の中で一連の項目位置を占めるが、ページ全体を埋め尽くす必要はない。ブロックリストページの中には通常、用済み項目はない。ブロックリスト項目753は記述子値によって序列されるが、記述子値は連続しなくともよく、繰り返すことができる。この例で、有効データ容量値は連続しなくともよく、繰り返すことができる。ある1つのブロックリストページの記述子値の範囲は、同一ブロック分類の別のブロックリストページの記述子値の範囲に重複しない。
Block List Page The block list page contains one set of block list items per block classification, in the order of descriptor values that describe the data contained in the block (for example, the amount of valid data contained in the block). FIG. 7B shows an example of the block list page 751. In this example, the block list page is a PB list page or an OB list page. FIG. 7B shows an OB list page 751. The valid block list item 753 occupies a series of item positions in the block list page 751, but it is not necessary to fill the entire page. There are usually no used items in the block list page. Although block list items 753 are ordered by descriptor values, the descriptor values need not be contiguous and can be repeated. In this example, the valid data capacity values need not be continuous and can be repeated. The descriptor value range of one block list page does not overlap with the descriptor value range of another block list page of the same block classification.

この例で使われる記述子値は有効データ容量であるが、別の記述子値を使用することもできる。例えば、ブロック内の消去済み容量を記述子値として使用できる。再生のためブロックを所望の順序でリストするため、有効データ量と消去済み容量の組み合わせから記述子値を導き出すことができる。リストは、場合によっては重複してよい。この場合、2つの異なるリストの中に同じブロックが現れることがある。例えば、ブロックを、そこに収容される有効データ量に従ってリストすると同時に、(別のリストでは)そこに収容される消去済みの空間の量に従ってリストすることができる。   The descriptor value used in this example is the effective data capacity, but other descriptor values can be used. For example, the erased capacity in a block can be used as a descriptor value. To list the blocks for playback in the desired order, a descriptor value can be derived from a combination of valid data volume and erased capacity. The lists may overlap in some cases. In this case, the same block may appear in two different lists. For example, blocks may be listed according to the amount of valid data contained therein, while at the same time (according to another list) the amount of erased space contained therein.

ブロックの項目を挿入する必要がある場合は、その新しいブロックの有効データ容量値を有効データ容量範囲に含むブロックリストページが、ディレクトリインデックスの情報から識別される。ブロックリストページは再度書き込まれ、新しい項目は、この有効データ容量値に従ってページの適切な位置に挿入される。項目を削除しなければならない場合、その項目を省いて、新しい物理位置にブロックリストページが再度書き込まれる。   When it is necessary to insert an item of a block, a block list page including the effective data capacity value of the new block in the effective data capacity range is identified from the directory index information. The block list page is rewritten and new items are inserted at the appropriate location on the page according to this valid data capacity value. If the item must be deleted, the block list page is rewritten at the new physical location, omitting the item.

満杯になったブロックリストページへ追加を行わなければならない場合、空き論理ページが新しいブロックリストページとして割り当てられ、満杯になったブロックリストページの有効データ範囲は2つのほぼ等しい重複しない範囲に分割され、それらは2つの使用可能なブロックリストページに書き込まれる。   If an addition must be made to a full block list page, a free logical page is allocated as the new block list page, and the valid data range of the full block list page is divided into two approximately equal non-overlapping ranges. , They are written to two available block list pages.

範囲が隣接する2つのブロックリストページの総有効項目数が所定のしきい値(この例では、1ブロックリストページにおける項目位置数の70%)を下回ると、2つのブロックリストページの範囲は統合され、2つのブロックリストページのうちの一方に書き込まれる。そして、他方の未使用ページは空き論理ページとなる。   When the total number of valid items in two adjacent block list pages with a range falls below a predetermined threshold (in this example, 70% of the number of item positions in one block list page), the ranges of the two block list pages are merged. And written to one of the two block list pages. The other unused page becomes a free logical page.

ブロックリスト項目755は2つのフィールド、すなわち(1)ブロックアドレスと、(2)記述子値とを収容し、この例における記述子値は、ブロック内の有効データ量を示す値である。第1の例と違って、ブロックアドレスによって序列されるリストはない(しかし、ディレクトリはブロックアドレスによって序列される)。この例において、リストはブロックアドレスを含み、このブロックアドレスからディレクトリ項目が見つかり、さらにこのディレクトリ項目が対応するレコードの位置を順に指示する。よって、この例において、リスト項目753はレコードを直接指示しない。ブロックリストはディレクトリインデックスを収容できるが、有効なディレクトリインデックスを収容するのは最後に書き込まれたページだけである。図7BのOBリストページは用済みのディレクトリインデックス757を収容する。   Block list entry 755 contains two fields: (1) block address and (2) descriptor value, which in this example is a value indicating the amount of valid data in the block. Unlike the first example, there is no list ordered by block address (but directories are ordered by block address). In this example, the list includes a block address, a directory entry is found from this block address, and further indicates the position of the record to which this directory entry corresponds. Therefore, in this example, the list item 753 does not directly indicate a record. The block list can contain a directory index, but only the last written page contains a valid directory index. The OB list page of FIG. 7B contains a used directory index 757.

ブロックレコード
ブロックレコードはレコードの集まりであり、各レコードは、ブロックアドレスによって識別されるブロックの情報を収容する。各ブロックディレクトリ項目につき1つのレコードが存在する。ブロックレコードはブロックディレクトリ項目によってアドレス指定され、ブロックレコードページが修正されるときにはブロックディレクトリページを修正しなければならない。
Block record A block record is a collection of records, and each record contains information of a block identified by a block address. There is one record for each block directory entry. Block records are addressed by block directory entries, and the block directory page must be modified when the block record page is modified.

ブロックレコードは、図8に示すレコードブロック861などのような、1つ以上の専用レコードブロックに収容される。第1の例と違って、ブロックリストとブロックレコードは同じブロックの中にまとめて記憶されない。ただひとつのブロックレコードブロックがプログラムされていないページを収容し、ここへブロックレコードを書き込むことができる。ブロックレコード情報はどれも、ブロックレコード書き込みポインタによって識別されるこのブロックの中のプログラムされていない次のページ位置にプログラムされる。ブロック内の最後のページがプログラムされると、ブロックレコード書き込みポインタは消去済みブロックの最初のページへ移される。ブロックレコードブロックは、ブロックレコードページが再度書き込まれるときに用済みページを収容することができる。いくつかの実施形態において、有効ブロックレコードページは、ブロックレコードページが再度書き込まれてページ内のレコードが常に用済みになるときに用済みレコードを収容しない。別の実施形態において、用済みレコードが有効ブロックレコードページに残ることがある。しかし、用済みレコードのディレクトリ項目は削除されるかまたは有効レコードを指示する項目に置き換えられるので、用済みレコードはアクセスされない。レコードページの中の用済みレコードは、レコードページが再度書き込まれるときにコピーされない。   Block records are contained in one or more dedicated record blocks, such as record block 861 shown in FIG. Unlike the first example, the block list and the block record are not stored together in the same block. A single block record block contains a non-programmed page and a block record can be written here. Any block record information is programmed to the next unprogrammed page position in this block identified by the block record write pointer. When the last page in the block is programmed, the block record write pointer is moved to the first page of the erased block. A block record block can contain used pages when a block record page is rewritten. In some embodiments, a valid block record page does not contain a used record when the block record page is rewritten and the records in the page are always used. In another embodiment, used records may remain on valid block record pages. However, the used record is not accessed because the directory item of the used record is deleted or replaced with an item indicating a valid record. Spent records in the record page are not copied when the record page is rewritten.

ブロックレコードページは、1つのブロックディレクトリページの中にあるブロックディレクトリ項目によって参照される1組のブロックレコードを、このブロックディレクトリページ内の項目と同じ順序で収容する。図9は、ブロックレコードページ965の一例を示している。ブロックディレクトリページは複数のブロックレコードページを参照できる。ブロックレコードページの修正にあたっては、ただひとつのブロックディレクトリページを修正すればよい。第1の例と違って、ブロックレコードページはブロックディレクトリ項目によって直接識別されるため、この例のブロックレコードページはブロックレコードインデックスを含まない。   The block record page contains a set of block records referenced by block directory items within a block directory page in the same order as the items in the block directory page. FIG. 9 shows an example of the block record page 965. A block directory page can reference multiple block record pages. To modify a block record page, only one block directory page needs to be modified. Unlike the first example, the block record page in this example does not include a block record index because the block record page is identified directly by the block directory entry.

ブロックレコードページは、これを読み出すことにより、そして1つ以上のブロックレコードを更新または追加することにより修正できる。いずれの用済みブロックレコードもページの圧縮によって削除され、ページは、ブロックレコード書き込みポインタによって識別される位置にプログラムされる。   The block record page can be modified by reading it and updating or adding one or more block records. Any obsolete block records are deleted by page compression, and the page is programmed to the location identified by the block record write pointer.

ブロックレコードページヘッダは、ブロックレコードページに関連するブロックディレクトリページへの参照符と、このブロックレコードページにおけるブロックレコード情報の長さとを記憶する。ブロックレコードページヘッダはまた、ブロックレコードページが書き込まれたときにブロックレコードブロックの各々に存在する用済みページ数のレコードを記憶する。この情報は、最後に書き込まれたブロックレコードページヘッダの中にあるものだけが有効である。   The block record page header stores a reference to the block directory page associated with the block record page and the length of the block record information in this block record page. The block record page header also stores a record of the number of used pages present in each of the block record blocks when the block record page is written. This information is valid only in the last written block record page header.

個々のブロックレコード項目のサイズは不定である。よって、コンプリート共通ブロックのレコードは消去済みブロックのレコードより大きくなることがある。第1の例と違って、別個の共通ブロックレコード領域は必要ない。この例のレコードブロックは、ブロックの属性を定義する次のフィールドを持つ。
(1)ブロックアドレス
(2)ブロックのタイプ、PB、OB、CCB、またはEB
(3)ブロック内の有効データ容量
(4)ブロック内のページ書き込みポインタの位置
(5)ブロック内にデータが存在するファイルの合計数
(6)ブロック内にデータが存在する各ファイルのファイルID
The size of each block record item is indefinite. Thus, the complete common block record may be larger than the erased block record. Unlike the first example, a separate common block record area is not required. The record block in this example has the following fields that define the attributes of the block.
(1) Block address (2) Block type, PB, OB, CCB, or EB
(3) Effective data capacity in block (4) Position of page write pointer in block (5) Total number of files in which data exists in block (6) File ID of each file in which data exists in block

他の例では、異なる記述子値を含む異なるフィールドをレコードに収容してよい。   In other examples, the record may contain different fields containing different descriptor values.

第2の例におけるブロックレコードの再生プロセス
ブロックレコードは1つ以上のレコードブロックの中に収容され、ブロックディレクトリ項目によって直接アドレス指定される。新規または更新済みブロックレコードをプログラムするにあたって使用できる消去済みページは、ただひとつのレコードブロックに収容される。それ以外の全てのレコードブロックで全てのページがプログラムされていたとしても、完全に用済みまたは部分的に用済みのページがブロックに収容されることがある。用済みブロックレコードによって占められる容量の再生は、再生される次のブロックとして1つのレコードブロックを指定することにより、そしてこの再生ブロックからブロックレコード書き込みポインタによって現在指定されているページへページを徐々にコピーすることにより、その後に再生ブロックを消去することにより、遂行される。
Block record playback process in the second example The block record is contained in one or more record blocks and is directly addressed by a block directory entry. Erased pages that can be used in programming a new or updated block record are contained in a single record block. Even if all pages are programmed in all other record blocks, completely used or partially used pages may be contained in the block. Playing back the capacity occupied by a used block record is done by designating one record block as the next block to be played, and gradually moving the page from this play block to the page currently specified by the block record write pointer. This is accomplished by copying and subsequently erasing the playback block.

レコードブロックに対する前の再生プロセスが完了し、前の再生ブロックが消去されると、再生ブロックが選択される。用済みページ数が最高のレコードブロックが再生ブロックとして選択される。各レコードブロックの用済みページ数は、最後に書き込まれたブロックレコードページのブロックレコードページヘッダに記録される。ブロックレコード書き込みポインタを収容するレコードブロックは再生のために選択されないことがある。選択されたレコードブロックは、再生プロセスが完了してブロックが消去されるまで再生ブロックであり続ける。次いで、消去されたブロックは消去済みブロックのプールへ加えられ、ホストデータを含むあらゆる類のデータを記憶するために再び使用できる。よって、ブロックは暫くの間専用レコードブロックであり続けるが、レコードブロックとして永久的に指定されるのではない。   When the previous playback process for the record block is completed and the previous playback block is erased, the playback block is selected. The record block with the highest number of used pages is selected as the playback block. The number of used pages in each record block is recorded in the block record page header of the last written block record page. The record block containing the block record write pointer may not be selected for playback. The selected record block remains a playback block until the playback process is complete and the block is erased. The erased block is then added to the pool of erased blocks and can be used again to store any kind of data, including host data. Thus, the block remains a dedicated record block for some time, but is not permanently designated as a record block.

用済みページを収容するブロックレコードブロックを再生するプロセスでは、ブロックから、有効ブロックレコードを収容する少数のページを、ブロックレコード書き込みポインタによって指定されるページへ、スケジュールされた間隔で段階的にコピーする。良好な性能のため、1段階にコピーされるページの数はメタページに収容されるページの数になる。しかし、場合によっては、これよりも少ないページが書き込まれる。ブロックレコード書き込みポインタのところでページをプログラムすることは、メタページに対する1回のプログラミング操作として遂行できる。再生ブロックにおけるページの段階的コピー操作は、4つのメタページに収容されるページ位置数を通過するブロックレコード書き込みポインタの進捗によって規定される間隔でスケジュールできる。メタページをプログラムするには、書き込みポインタは、段階的コピー操作がスケジュールされるときに物理メタページの最初のページを指示しなければならない。   In the process of replaying block record blocks containing used pages, a small number of pages containing valid block records are copied step by step from the block to the page specified by the block record write pointer at scheduled intervals. . For good performance, the number of pages copied in one stage is the number of pages accommodated in the metapage. However, in some cases, fewer pages are written. Programming the page at the block record write pointer can be accomplished as a single programming operation on the metapage. The stepwise copy operation of pages in the playback block can be scheduled at intervals defined by the progress of the block record write pointer passing through the number of page positions contained in the four metapages. To program a metapage, the write pointer must point to the first page of the physical metapage when a staged copy operation is scheduled.

前述したブロックレコードブロックの再生プロセスとは対照的に、ディレクトリブロックの再生プロセスでは、ディレクトリブロックに消去済みの空間が残っていないときにそのブロックディレクトリブロックを圧縮するだけでよい。常時最大25%(この例の論理容量は物理容量の25%)の有効ページを持つブロックディレクトリブロックを圧縮すると、少なくとも75%の消去済みの空間を有するブロックになる。圧縮が行われると、データのコピー元にあたるブロックは無効ブロックとなり、消去されて消去済みブロックとなる。次いで、このブロックは消去済みブロックのプールへ加えられ、ホストデータを含むあらゆる類のデータを記憶するために使用できる。よって、ブロックは暫くの間専用ディレクトリブロックであり続けるが、ディレクトリブロックとして永久に指定されるのではない。   In contrast to the block record block playback process described above, the directory block playback process only needs to compress the block directory block when no erased space remains in the directory block. Compressing a block directory block with valid pages that are always at most 25% (logical capacity in this example is 25% of physical capacity) will result in a block with at least 75% erased space. When compression is performed, the block corresponding to the data copy source becomes an invalid block and is erased to become an erased block. This block is then added to the pool of erased blocks and can be used to store any kind of data, including host data. Thus, the block remains a dedicated directory block for some time, but is not permanently designated as a directory block.

第2の例の構造の更新
メモリアレイでブロックにデータが書き込まれるとき、またはファイルが削除されるときには、1つ以上のブロックレコードを更新する必要がある。また、対応するブロックディレクトリおよびリスト項目を更新する必要がある。図10に示された次のプロセスは、第2の例の各種構造の更新を説明するものであり、このとき(既にある程度の用済みデータを収容する)不完全ブロックには追加の有効データが記憶され、ブロックは用済みブロックになる。
(1)追加データを記憶するブロックのアドレスを受け取る。
(2)このブロックのディレクトリ項目175を収容するディレクトリページ173の物理ページ位置を判定するため、ブロックディレクトリブロック170の最終書き込みページでディレクトリインデックス171を調べる。
(3)ブロックの項目175を見つけるため、ディレクトリページ173の中でバイナリ探索を遂行する。
(4)項目175の論理識別子からレコードインデックス177の情報に沿って、ブロックレコードブロック181の中でこのブロックのレコード183を収容する物理ページ179を判定する。受け取ったアドレスに対応する正しいレコード183を見つけるため、ディレクトリ項目175の中のオフセットを使用する。
(5)レコード183からブロックの分類を判定する。追加データの記憶によって分類が変化するか否かを判定する。ここでブロックは不完全ブロックであり、このブロックに残された空間は追加データで満たされるから、このブロックは用済みブロックになる。
(6)レコードページ183の内容を、書き込みポインタ185によって指示される位置へコピーし、対象ブロックのレコード183は、異なるタイプのブロック、有効データ、ページ書き込みポインタの位置等を反映させるために更新される。
(7)ディレクトリページ173をブロックディレクトリブロック170の使用可能な次の物理ページへコピーする。レコードページの新しい物理位置を反映させるため、更新された項目とレコードインデックスを新しいディレクトリページに書き込む。また、新しい物理ページでディレクトリインデックスを更新する。
(8)ブロックの項目189を収容する不完全ブロックリストページ187の物理ページ位置を判定するため、ディレクトリインデックスを再び調べる(場合によっては複数のリストを調べる)。
(9)記述子値が対象ブロックのそれに等しいリスト項目189を見つけるため、ページ187の中でバイナリ探索を遂行する。複数のリスト項目が記述子値を有する場合は、ブロックアドレスにより一致する全ての項目を探索する。
(10)不完全ブロックリストページ187を新しい位置へコピーし、対象ブロックの項目189は削除される。新しい不完全ブロックページは、不完全ブロックページの新しい物理位置で更新されたディレクトリインデックスを含む。
(11)対象ブロックの有効データ量を含む、ブロック範囲当たりの有効データをカバーする用済みブロックリストページの物理ページ位置を判定するため、ディレクトリインデックスを再び調べる(図示せず)。
(12)用済みブロックリストページをコピーし、対象ブロックの新しい項目を、ブロック内の現在の有効データ量に基づき、適切なオフセットのところに追加する。新しい用済みブロックリストページは、用済みブロックリストの新しい位置を示す更新済みディレクトリインデックスを含む(図示せず)。
One or more block records need to be updated when data is written to a block or when a file is deleted in the update memory array of the second example structure . It is also necessary to update the corresponding block directory and list items. The next process shown in FIG. 10 illustrates the updating of the various structures of the second example, where additional valid data is present in an incomplete block (which already contains some used data). Stored, the block becomes a obsolete block.
(1) Receive an address of a block storing additional data.
(2) In order to determine the physical page position of the directory page 173 containing the directory item 175 of this block, the directory index 171 is examined on the last written page of the block directory block 170.
(3) Perform a binary search in the directory page 173 to find the block entry 175.
(4) Based on the information of the record index 177 from the logical identifier of the item 175, the physical page 179 that accommodates the record 183 of this block in the block record block 181 is determined. The offset in the directory entry 175 is used to find the correct record 183 corresponding to the received address.
(5) The block classification is determined from the record 183. It is determined whether or not the classification is changed by storing additional data. Here, the block is an incomplete block, and the space left in this block is filled with additional data, so this block becomes a obsolete block.
(6) The contents of the record page 183 are copied to the position indicated by the write pointer 185, and the record 183 of the target block is updated to reflect different types of blocks, valid data, the position of the page write pointer, etc. The
(7) Copy directory page 173 to the next available physical page in block directory block 170. Write the updated item and record index to the new directory page to reflect the new physical location of the record page. It also updates the directory index with new physical pages.
(8) Examine the directory index again to determine the physical page position of the incomplete block list page 187 containing the block item 189 (in some cases, check multiple lists).
(9) Perform a binary search in page 187 to find a list item 189 whose descriptor value is equal to that of the target block. If multiple list items have descriptor values, search for all items that match by block address.
(10) The incomplete block list page 187 is copied to a new position, and the target block item 189 is deleted. The new incomplete block page includes the directory index updated with the new physical location of the incomplete block page.
(11) In order to determine the physical page position of the used block list page covering the valid data per block range including the valid data amount of the target block, the directory index is checked again (not shown).
(12) Copy the used block list page and add a new entry for the target block at the appropriate offset based on the current amount of valid data in the block. The new used block list page includes an updated directory index (not shown) that indicates the new location of the used block list.

前述したステップは必ずしも示されたとおりの順序で遂行されない。いくつかのステップは並行して遂行できる。例えば、更新済みの用済みブロックリストページと更新済み不完全ブロックリストページの書き込みは、メタブロック書き込みの一部として並行してよい。   The steps described above are not necessarily performed in the order shown. Several steps can be performed in parallel. For example, the updated used block list page and the updated incomplete block list page may be written in parallel as part of the metablock writing.

詳細な第3の例
第3の例では、メモリアレイの各ブロックにつき常時レコードを保守する。これには1つ以上の追加のブロック分類が関係し、例えば用済みデータを収容しないファイルブロックのための追加の分類を、図4に示された第2の例の分類に加えることができる。各ブロックごとにレコードを保守すると保守する各レコードの合計数が増えるが、より簡素な構造を使用することができる。第3の例は、ブロックごとにレコードを用意する点を除き、第2の例と同様に進行する。
Detailed Third Example In the third example, a record is always maintained for each block of the memory array. This involves one or more additional block classifications, for example, additional classifications for file blocks that do not contain used data can be added to the second example classification shown in FIG. Maintaining records for each block increases the total number of records maintained, but a simpler structure can be used. The third example proceeds in the same manner as the second example except that a record is prepared for each block.

例えば、全てのブロックのためのレコードを保守する場合は、ディレクトリ項目も全てのブロックのために保守する。ディレクトリ項目は一定の均等サイズを有する。したがって、ディレクトリページには、ブロックアドレスによって順次に序列される一定数の項目が収容できる。よって、各ディレクトリページは一定のブロックアドレス範囲をカバーする。このようなページの中の項目はそれぞれのブロックアドレスに従って所定のオフセットをとるため、各項目の中で別々にブロックアドレスを記録する必要はない。ある特定のブロックのディレクトリ項目を見つけるには、そのブロックを含むブロックアドレス範囲をカバーするディレクトリページを見つけ、そのページの中で、ディレクトリページの最初の項目のブロックアドレスと所望のブロックアドレスとの差によって決まるオフセットのところにある項目まで進めばよい。したがって、ディレクトリページのバイナリ探索は必要ない。対照的に、レコードのサイズは通常ならば不定であり、常に一定数の項目がレコードページの中で保守されるとは限らない。この例ではこれまでの例と違って、リスト内に項目を持たないブロックのためのレコードが保守される。   For example, if records are maintained for all blocks, directory entries are also maintained for all blocks. Directory items have a uniform size. Therefore, the directory page can accommodate a fixed number of items that are sequentially ordered by block addresses. Thus, each directory page covers a certain block address range. Since the items in such a page have a predetermined offset according to their block addresses, there is no need to record the block addresses separately in each item. To find a directory entry for a particular block, find the directory page that covers the block address range that contains the block, and within that page, the difference between the block address of the first entry on the directory page and the desired block address. You can proceed to the item that is at the offset determined by. Thus, a binary search of the directory page is not necessary. In contrast, the size of a record is usually indeterminate, and a fixed number of items are not always maintained in a record page. Unlike the previous examples, this example maintains a record for blocks that have no items in the list.

メモリ内の各ブロックにつきレコードを保守することは、いくつかの用途にとって好都合である。例えば、ブロックの物理的特性について記述子を保守できる。このような記述子の一例として消去カウントがある。消去カウントは、消去され損耗レベル化の目的に使用できる特定のブロックの消去回数を示す。ブロックの消去カウントに従って1つ以上のリストでブロックを序列できる。また、ブロックが最後に消去されたときのタイムスタンプをレコードに含むことができ、こうすれば最後の消去から経過した時間に従ってブロックをリストの中で序列できる。   Maintaining records for each block in memory is convenient for some applications. For example, descriptors can be maintained for the physical characteristics of the block. An example of such a descriptor is an erasure count. The erase count indicates the number of erases of a specific block that is erased and can be used for wear leveling purposes. Blocks can be ordered in one or more lists according to the block erase count. Also, the time stamp when the block was last erased can be included in the record, so that the blocks can be ordered in the list according to the time elapsed since the last erase.

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

第1の例によるブロック分類の表を示す。2 shows a table of block classification according to a first example. 第1の例によるレコードブロックのページを示す。2 shows a page of record blocks according to a first example. 図2のレコードブロックの個々のページの詳細図を示す。3 shows a detailed view of individual pages of the record block of FIG. 第2の例によるブロック分類の表を示す。The table of the block classification by the 2nd example is shown. ブロックレコードブロックにある対応するブロックレコードを指示するブロックディレクトリブロック内のブロックディレクトリ項目を示す。A block directory entry in a block directory block indicating a corresponding block record in the block record block. ディレクトリブロックのページ構造の詳細を示す。Details of the page structure of the directory block. レコードインデックスとディレクトリインデックスとを含む、図6のブロックディレクトリページの構造を示す。FIG. 7 shows the structure of the block directory page of FIG. 6 including a record index and a directory index. 図6の用済みブロックリストページの構造を示す。The structure of the used block list page of FIG. 6 is shown. レコードブロックのページ構造の詳細を示す。Details of the page structure of the record block are shown. 図8のレコードページの構造をより詳細に示す。The structure of the record page of FIG. 8 is shown in more detail. ブロックレコードと関係する構造との更新過程にあるディレクトリブロックとレコードブロックとを示す。The directory block and the record block in the process of updating the structure related to the block record are shown.

Claims (34)

メモリシステムであって、
データを各々収容する第1の複数の個別に消去可能なブロックを含む不揮発性メモリアレイと、
前記第1の複数のブロックの各々につき項目を収容するリストであって、前記リスト内の前記項目は、前記第1の複数のブロックの各々に記憶される有効データ量に従って序列されるリストと、
を備えるメモリシステム。
A memory system,
A non-volatile memory array including a first plurality of individually erasable blocks each containing data;
A list containing items for each of the first plurality of blocks, wherein the items in the list are ordered according to the amount of valid data stored in each of the first plurality of blocks;
A memory system comprising:
請求項1記載のメモリシステムにおいて、
複数のレコードをさらに備え、前記複数のレコードの各々は前記第1の複数の個別に消去可能なブロックのうちの1ブロックに対応し、前記複数のレコードの各々はそれに対応するブロックに関する情報を収容するメモリシステム。
The memory system of claim 1, wherein
A plurality of records, each of the plurality of records corresponding to one of the first plurality of individually erasable blocks, each of the plurality of records containing information about the corresponding block; Memory system.
請求項2記載のメモリシステムにおいて、
前記リスト項目は第1のブロックの中の複数のリストページにて保守され、前記複数のレコードは第2のブロックの中のレコードページにて保守されるメモリシステム。
The memory system of claim 2, wherein
The memory system wherein the list items are maintained on a plurality of list pages in a first block, and the plurality of records are maintained on a record page in a second block.
請求項1記載のメモリシステムにおいて、
前記複数のブロックは、消去済みの空間と有効データの両方を収容する不揮発性メモリアレイの全ブロックからなるメモリシステム。
The memory system of claim 1, wherein
The plurality of blocks are memory systems comprising all blocks of a nonvolatile memory array that accommodates both erased space and valid data.
請求項1記載のメモリシステムにおいて、
前記複数のブロックは、用済みデータを収容しかつ消去済みの空間を収容しない不揮発性メモリアレイの前記ブロックの全部からなるメモリシステム。
The memory system of claim 1, wherein
The plurality of blocks is a memory system including all of the blocks of the nonvolatile memory array that contains used data and does not contain erased space.
不揮発性メモリアレイであって、
複数の個別に消去可能なブロックと、
前記複数のブロックのための複数のレコードであって、前記複数のレコードの各々は前記複数のブロックのうちの1ブロックに関する情報を収容する複数のレコードと、
複数のディレクトリ項目を収容するディレクトリであって、前記複数のディレクトリ項目の各々は前記複数のレコードのうちの1レコードの位置を含むディレクトリと、
複数のリスト項目を収容するリストであって、前記複数のリスト項目の各々は前記複数のブロックのうちの1個の個別のブロックに記憶されるデータを記述し、前記複数のリスト項目はそれぞれの記述子値によって序列されるリストと、
を備える不揮発性メモリアレイ。
A non-volatile memory array,
Multiple individually erasable blocks;
A plurality of records for the plurality of blocks, wherein each of the plurality of records includes a plurality of records containing information on one block of the plurality of blocks;
A directory containing a plurality of directory items, wherein each of the plurality of directory items includes a directory including a position of one record of the plurality of records;
A list containing a plurality of list items, wherein each of the plurality of list items describes data stored in one individual block of the plurality of blocks; A list ordered by descriptor values;
A non-volatile memory array comprising:
請求項6記載の不揮発性メモリアレイにおいて、
前記複数のレコードは第1のブロックに置かれ、前記ディレクトリと前記リストは第2のブロックにて保守される不揮発性メモリアレイ。
The non-volatile memory array of claim 6,
The plurality of records are placed in a first block, and the directory and the list are maintained in a second block.
請求項6記載の不揮発性メモリアレイにおいて、
前記記述子値は、前記複数のブロックのそれぞれのブロックに記憶される有効データ量を表す不揮発性メモリアレイ。
The non-volatile memory array of claim 6,
The descriptor value is a non-volatile memory array that represents an effective data amount stored in each of the plurality of blocks.
請求項6記載の不揮発性メモリアレイにおいて、
前記複数のブロックは、消去済みの空間と有効データの両方を個別に収容する前記不揮発性メモリアレイ内の前記ブロックの全部からなる不揮発性メモリアレイ。
The non-volatile memory array of claim 6,
The plurality of blocks are non-volatile memory arrays including all of the blocks in the non-volatile memory array that individually accommodates both erased space and valid data.
請求項6記載の不揮発性メモリアレイにおいて、
前記複数のブロックは、用済みデータを個別に収容しかつ消去済みの空間を収容しない前記不揮発性メモリアレイの前記ブロックの全部からなる不揮発性メモリアレイ。
The non-volatile memory array of claim 6,
The plurality of blocks are non-volatile memory arrays comprising all the blocks of the non-volatile memory array that individually store used data and do not store erased spaces.
請求項6記載の不揮発性メモリアレイにおいて、
前記複数のブロックは、前記不揮発性メモリアレイの全ブロックからなる不揮発性メモリアレイ。
The non-volatile memory array of claim 6,
The plurality of blocks are nonvolatile memory arrays including all blocks of the nonvolatile memory array.
請求項6記載の不揮発性メモリアレイにおいて、
前記リストは、別個のリスト項目範囲を各々記憶する複数のページにて保守される不揮発性メモリアレイ。
The non-volatile memory array of claim 6,
The list is a non-volatile memory array maintained on a plurality of pages each storing a separate list item range.
メモリセルのブロックにグループ分けされ前記ブロックのページでデータを再プログラムする前に消去される記憶セルを具備する不揮発性メモリシステムであって、
データを記憶する第1の複数のブロックと、
前記第1の複数のブロックのうちの対応する1ブロックに記憶されるデータを記述する記述子値を少なくとも個別に含む複数のレコードを収容する第1の複数のページと、
前記第1の複数のページにおけるレコードの位置に対するポインタを収容する第2の複数のページであって、前記第1の複数のページのうちの個別の1ページ中にある有効レコードは、前記第2の複数のページのうちの1ページに記憶されるポインタによって指示されるレコードに限定される第2の複数のページと、
を備える不揮発性メモリシステム。
A non-volatile memory system comprising storage cells grouped into blocks of memory cells and erased prior to reprogramming data in a page of the block,
A first plurality of blocks for storing data;
A first plurality of pages containing a plurality of records at least individually including descriptor values describing data stored in a corresponding one of the first plurality of blocks;
A second plurality of pages containing pointers to record positions in the first plurality of pages, wherein the valid records in one individual page of the first plurality of pages are the second record A second plurality of pages limited to a record indicated by a pointer stored in one of the plurality of pages;
A non-volatile memory system comprising:
請求項13記載の不揮発性メモリシステムにおいて、
前記第1の複数のページは1つ以上のブロックからなる第1のグループに置かれ、前記第2の複数のページは1つ以上のブロックからなる第2のグループに置かれる不揮発性メモリシステム。
The non-volatile memory system according to claim 13.
The non-volatile memory system, wherein the first plurality of pages are placed in a first group of one or more blocks, and the second plurality of pages are placed in a second group of one or more blocks.
請求項13記載の不揮発性メモリシステムにおいて、
前記第1の複数のページは、前記第1の複数のブロックのうちの1ブロックではない第1のブロックに置かれ、前記第2の複数のページは、前記第1の複数のブロックのうちの1ブロックではない第2のブロックに置かれる不揮発性メモリシステム。
The non-volatile memory system according to claim 13.
The first plurality of pages are placed in a first block that is not one block of the first plurality of blocks, and the second plurality of pages are included in the first plurality of blocks. A non-volatile memory system placed in a second block that is not one block.
請求項13記載の不揮発性メモリシステムにおいて、
第3の複数のページに置かれるリストをさらに備え、前記リストは前記第1の複数のブロックのそれぞれに個別に対応する複数の項目を収容し、項目はこれに対応するブロックの記述子値を収容する不揮発性メモリシステム。
The non-volatile memory system according to claim 13.
A list placed on a third plurality of pages, the list containing a plurality of items individually corresponding to each of the first plurality of blocks, wherein the item contains a descriptor value of the corresponding block; Accommodates non-volatile memory system.
ブロック消去可能な不揮発性メモリアレイを操作する方法であって、
前記不揮発性メモリアレイの複数のブロックの各々につきリスト項目を収容するリストを保守するステップを備え、前記リスト項目は、前記複数のブロックのそれぞれ個別に記憶される有効データ量に従って序列される方法。
A method of operating a block erasable non-volatile memory array comprising:
Maintaining a list containing list items for each of a plurality of blocks of the non-volatile memory array, wherein the list items are ordered according to the amount of valid data stored in each of the plurality of blocks.
請求項17記載の方法において、
前記不揮発性メモリアレイの前記複数のブロックの各々につきレコードを保守するステップをさらに備え、前記複数のブロックのうちの1ブロックのための個別のレコードは前記ブロックの物理アドレスを含み、各リスト項目はレコード項目へリンクされる方法。
The method of claim 17, wherein
Maintaining a record for each of the plurality of blocks of the non-volatile memory array, wherein an individual record for one of the plurality of blocks includes a physical address of the block, and each list item is How to link to record fields.
請求項18記載の方法において、
リスト項目は第1のブロックの中にあるリストページにて保守され、前記レコードは第2のブロックの中にあるレコードページにて保守される方法。
The method of claim 18, wherein:
A method wherein list items are maintained on a list page in a first block and the record is maintained on a record page in a second block.
請求項17記載の方法において、
前記複数のブロックは、消去済みの空間と有効データの両方を収容する前記不揮発性メモリアレイの全ブロックからなる方法。
The method of claim 17, wherein
The plurality of blocks comprising all blocks of the non-volatile memory array containing both erased space and valid data.
請求項17記載の方法において、
前記複数のブロックは、用済みデータを収容しかつ消去済みの空間を収容しない前記不揮発性メモリアレイの全ての前記ブロックからなる方法。
The method of claim 17, wherein
The plurality of blocks are made up of all the blocks of the non-volatile memory array that contain used data and do not contain erased space.
ブロック消去可能な不揮発性メモリアレイを操作する方法であって、
前記メモリアレイ内の複数のブロックのための複数のレコードを保守するステップであって、前記複数のレコードの各々は前記複数のブロックのうちの1ブロックに関する情報を収容するステップと、
複数のディレクトリ項目を収容するディレクトリを保守するステップであって、前記複数のディレクトリ項目の各々は前記複数のレコードのうちの1レコードに関する位置情報を含むステップと、
複数のリスト項目を収容するリストを保守するステップであって、前記複数のリスト項目の各々は前記複数のブロックのうちの1個の個別のブロックに記憶されるデータを記述し、前記複数のリスト項目はそれぞれの記述子値によって序列されるステップと、
を含む方法。
A method of operating a block erasable non-volatile memory array comprising:
Maintaining a plurality of records for a plurality of blocks in the memory array, each of the plurality of records containing information relating to one block of the plurality of blocks;
Maintaining a directory containing a plurality of directory items, each of the plurality of directory items including position information relating to one record of the plurality of records;
Maintaining a list containing a plurality of list items, each of the plurality of list items describing data stored in one individual block of the plurality of blocks, wherein the plurality of lists Items are ordered by their descriptor values,
Including methods.
請求項22記載の方法において、
前記複数のレコードは第1のブロックにて保守され、前記ディレクトリと前記リストは第2のブロックにて保守される方法。
The method of claim 22, wherein
The plurality of records are maintained in a first block, and the directory and the list are maintained in a second block.
請求項22記載の方法において、
前記記述子値は、前記複数のブロックのうちのそれぞれのブロックに記憶される有効データ量を表す方法。
The method of claim 22, wherein
The descriptor value represents a valid data amount stored in each of the plurality of blocks.
請求項22記載の方法において、
前記複数のブロックは、消去済みの空間と有効データの両方を個別に収容する前記不揮発性メモリアレイ内の前記ブロックの全部からなる方法。
The method of claim 22, wherein
The plurality of blocks comprising all of the blocks in the non-volatile memory array that individually contain both erased space and valid data.
請求項22記載の方法において、
前記複数のブロックは、用済みデータを収容しかつ消去済みの空間を収容しない前記不揮発性メモリアレイ内の前記ブロックの全部からなる方法。
The method of claim 22, wherein
The plurality of blocks comprising all of the blocks in the non-volatile memory array that contain used data and do not contain erased space.
請求項22記載の方法において、
前記複数のブロックは、前記不揮発性メモリアレイ内の前記ブロックの全部からなる方法。
The method of claim 22, wherein
The method wherein the plurality of blocks comprise all of the blocks in the non-volatile memory array.
請求項22記載の方法において、
前記リストは、別個のリスト項目範囲を各々記憶する複数のページにて保守される方法。
The method of claim 22, wherein
The list is maintained on a plurality of pages each storing a separate list item range.
請求項28記載の方法において、
所定の記述子値を有するブロックを、前記所定の特性に一致するリスト項目を前記リストで探索することによって探索するステップをさらに含む方法。
30. The method of claim 28, wherein
A method further comprising searching for a block having a predetermined descriptor value by searching the list for a list item that matches the predetermined characteristic.
請求項29記載の方法において、
前記所定の特性は、前記リスト内のリスト項目の最小有効データ量である方法。
30. The method of claim 29.
The method wherein the predetermined characteristic is a minimum valid data amount of a list item in the list.
メモリセルのブロックにグループ分けされ前記ブロックのページでデータを再プログラムする前に消去される記憶セルを具備する不揮発性メモリシステムを操作する方法であって、
第1の複数のブロックでデータを記憶するステップと、
前記第1の複数のブロックのうちの対応する1ブロックに記憶されるデータを記述する記述子値を少なくとも個別に含むレコードを第1の複数のページにて保守するステップと、
前記第1の複数のページにおけるレコードの位置に対するポインタを第2の複数のページにて保守するステップであって、前記第1の複数のページのうちの個別の1ページの中にある有効レコードは、前記第2の複数のページのうちの1ページに記憶されるポインタによって指示されるレコードに限定されるステップと、
を含む方法。
A method of operating a non-volatile memory system comprising storage cells that are grouped into blocks of memory cells and that are erased prior to reprogramming data in a page of the blocks,
Storing data in a first plurality of blocks;
Maintaining a record in the first plurality of pages that includes at least individually descriptor values describing data stored in a corresponding one of the first plurality of blocks;
Maintaining a pointer to a record position in the first plurality of pages in a second plurality of pages, wherein valid records in one individual page of the first plurality of pages are: A step limited to a record pointed to by a pointer stored in one of the second plurality of pages;
Including methods.
請求項31記載の方法において、
前記第1の複数のページは1つ以上のブロックからなる第1のグループに置かれ、前記第2の複数のページは1つ以上のブロックからなる第2のグループに置かれる方法。
32. The method of claim 31, wherein
The method wherein the first plurality of pages are placed in a first group of one or more blocks and the second plurality of pages are placed in a second group of one or more blocks.
請求項31記載の方法において、
前記第1の複数のページは、前記第1の複数のブロックのうちの1ブロックではない第1のブロックに置かれ、前記第2の複数のページは、前記第1の複数のブロックのうちの1ブロックではない第2のブロックに置かれる方法。
32. The method of claim 31, wherein
The first plurality of pages are placed in a first block that is not one block of the first plurality of blocks, and the second plurality of pages are included in the first plurality of blocks. A method that is placed in a second block that is not one block.
請求項31記載の方法において、
前記第1の複数のブロックのそれぞれと対応する記述子値とのリストを第3の複数のページにて保守するステップをさらに含み、前記リスト項目は記述子値によって序列される方法。
32. The method of claim 31, wherein
The method further comprises maintaining a list of descriptor values corresponding to each of the first plurality of blocks in a third plurality of pages, wherein the list items are ordered by descriptor values.
JP2008525178A 2005-08-03 2006-08-01 Nonvolatile memory with block management Expired - Fee Related JP4547028B2 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US70538805P 2005-08-03 2005-08-03
US74674006P 2006-05-08 2006-05-08
US11/459,268 US7558906B2 (en) 2005-08-03 2006-07-21 Methods of managing blocks in nonvolatile memory
US11/459,260 US7552271B2 (en) 2005-08-03 2006-07-21 Nonvolatile memory with block management
PCT/US2006/030228 WO2007019217A1 (en) 2005-08-03 2006-08-01 Nonvolatile memory with block management

Publications (3)

Publication Number Publication Date
JP2009503745A true JP2009503745A (en) 2009-01-29
JP2009503745A5 JP2009503745A5 (en) 2009-09-17
JP4547028B2 JP4547028B2 (en) 2010-09-22

Family

ID=40361356

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008525178A Expired - Fee Related JP4547028B2 (en) 2005-08-03 2006-08-01 Nonvolatile memory with block management

Country Status (4)

Country Link
JP (1) JP4547028B2 (en)
AT (1) ATE493707T1 (en)
DE (1) DE602006019263D1 (en)
TW (1) TWI399642B (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515162A (en) * 2006-12-26 2010-05-06 サンディスク コーポレイション Use of direct data file system with continuous logical address space interface
JP2011159044A (en) * 2010-01-29 2011-08-18 Toshiba Corp Controller for non-volatile memory and method for controlling non-volatile memory
JP2017016691A (en) * 2012-03-23 2017-01-19 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. System and methods for storing data using table of contents entries
CN111177020A (en) * 2018-11-13 2020-05-19 爱思开海力士有限公司 Storage device and operation method thereof

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211233A (en) * 2008-03-01 2009-09-17 Toshiba Corp Memory system
US8219781B2 (en) * 2008-11-06 2012-07-10 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
TWI423023B (en) * 2011-04-22 2014-01-11 Silicon Motion Inc Data selection method for flash memory and data storage device
TWI454912B (en) * 2012-01-06 2014-10-01 Phison Electronics Corp Data processing method, memory controller and memory storage device

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0772989A (en) * 1992-10-30 1995-03-17 Intel Corp Method for cleaning-up of solid-state memory disk for storing of floating sector data
JPH10326227A (en) * 1997-05-23 1998-12-08 Nec Corp System for managing storage device using flash memory as storage medium
JP2002366423A (en) * 2001-06-04 2002-12-20 Samsung Electronics Co Ltd Method for managing flash memory
JP2003208352A (en) * 2002-01-17 2003-07-25 Fujitsu Ltd Flash memory enabling restriction of writing frequency and ware levelling
JP2003228513A (en) * 2001-11-28 2003-08-15 Access:Kk Memory control method and device
WO2003102782A1 (en) * 2002-06-03 2003-12-11 Honeywell Internation Inc. Flash memory management system and method
WO2004040453A2 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Method and apparatus for grouping pages within a block
JP2004526233A (en) * 2001-01-26 2004-08-26 デルタ サーチ ラブズ インコーポレイテッド A modular microcontroller that manages CPUs and devices without an operating system
JP2004310573A (en) * 2003-04-09 2004-11-04 Nippon Telegr & Teleph Corp <Ntt> Memory management method for ic card, and ic card
JP2005122439A (en) * 2003-10-16 2005-05-12 Sharp Corp Device equipment and format conversion method for recording device of device equipment
WO2005066793A2 (en) * 2003-12-30 2005-07-21 Sandisk Corporation Non-volatile memory and method with non-sequential update block management
JP2007520804A (en) * 2003-12-30 2007-07-26 サンディスク コーポレイション Non-volatile memory and method with nonsequential update block management

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method
JP2000227871A (en) * 1999-02-05 2000-08-15 Seiko Epson Corp Non-volatile storage device, control method therefor and information recording medium
CN1703678A (en) * 2002-10-28 2005-11-30 桑迪士克股份有限公司 Method and apparatus for performing multi-page write operations in a non-volatile memory system
JP2004280752A (en) * 2003-03-19 2004-10-07 Sony Corp Date storage device, management information updating method for data storage device, and computer program
TWI240863B (en) * 2003-09-05 2005-10-01 Megawin Technology Co Ltd Method for efficiently controlling flash memory read/write
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0772989A (en) * 1992-10-30 1995-03-17 Intel Corp Method for cleaning-up of solid-state memory disk for storing of floating sector data
JPH10326227A (en) * 1997-05-23 1998-12-08 Nec Corp System for managing storage device using flash memory as storage medium
JP2004526233A (en) * 2001-01-26 2004-08-26 デルタ サーチ ラブズ インコーポレイテッド A modular microcontroller that manages CPUs and devices without an operating system
JP2002366423A (en) * 2001-06-04 2002-12-20 Samsung Electronics Co Ltd Method for managing flash memory
JP2003228513A (en) * 2001-11-28 2003-08-15 Access:Kk Memory control method and device
JP2003208352A (en) * 2002-01-17 2003-07-25 Fujitsu Ltd Flash memory enabling restriction of writing frequency and ware levelling
WO2003102782A1 (en) * 2002-06-03 2003-12-11 Honeywell Internation Inc. Flash memory management system and method
WO2004040453A2 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Method and apparatus for grouping pages within a block
JP2006515086A (en) * 2002-10-28 2006-05-18 サンディスク コーポレイション Method and apparatus for grouping pages in a block
JP2004310573A (en) * 2003-04-09 2004-11-04 Nippon Telegr & Teleph Corp <Ntt> Memory management method for ic card, and ic card
JP2005122439A (en) * 2003-10-16 2005-05-12 Sharp Corp Device equipment and format conversion method for recording device of device equipment
WO2005066793A2 (en) * 2003-12-30 2005-07-21 Sandisk Corporation Non-volatile memory and method with non-sequential update block management
JP2007520804A (en) * 2003-12-30 2007-07-26 サンディスク コーポレイション Non-volatile memory and method with nonsequential update block management

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515162A (en) * 2006-12-26 2010-05-06 サンディスク コーポレイション Use of direct data file system with continuous logical address space interface
JP2011159044A (en) * 2010-01-29 2011-08-18 Toshiba Corp Controller for non-volatile memory and method for controlling non-volatile memory
US8171254B2 (en) 2010-01-29 2012-05-01 Kabushiki Kaisha Toshiba Memory controller and memory control method
JP2017016691A (en) * 2012-03-23 2017-01-19 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. System and methods for storing data using table of contents entries
CN111177020A (en) * 2018-11-13 2020-05-19 爱思开海力士有限公司 Storage device and operation method thereof
CN111177020B (en) * 2018-11-13 2023-05-05 爱思开海力士有限公司 Memory device and method of operating the same

Also Published As

Publication number Publication date
TW200739342A (en) 2007-10-16
DE602006019263D1 (en) 2011-02-10
ATE493707T1 (en) 2011-01-15
JP4547028B2 (en) 2010-09-22
TWI399642B (en) 2013-06-21

Similar Documents

Publication Publication Date Title
US7552271B2 (en) Nonvolatile memory with block management
US7558906B2 (en) Methods of managing blocks in nonvolatile memory
KR101329068B1 (en) Nonvolatile memory with block management
JP5000316B2 (en) Object-based data storage
US8607016B2 (en) FAT analysis for optimized sequential cluster management
US7624239B2 (en) Methods for the management of erase operations in non-volatile memories
US7610434B2 (en) File recording apparatus
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
US7783845B2 (en) Structures for the management of erase operations in non-volatile memories
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
US7774392B2 (en) Non-volatile memory with management of a pool of update memory blocks based on each block&#39;s activity and data order
US7917686B2 (en) Host system with direct data file interface configurability
JP4547028B2 (en) Nonvolatile memory with block management
US7779056B2 (en) Managing a pool of update memory blocks based on each block&#39;s activity and data order
US20080155175A1 (en) Host System That Manages a LBA Interface With Flash Memory
US7571275B2 (en) Flash real-time operating system for small embedded applications
JP5266250B2 (en) Use of direct data file system with continuous logical address space interface
JP2010515163A (en) Management of LBA interface in direct data file memory system
JP2009503740A (en) Indexing file data in reprogrammable non-volatile memory that directly stores data files
KR100638638B1 (en) Method for controling flash memory device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090803

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090803

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090807

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091117

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100127

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100608

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100702

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4547028

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees