Management of memory blocks that directly store data files
First Claim
1. A method of storing data in blocks of re-programmable non-volatile memory as uniquely identified individual files, which comprises:
- assigning a plurality of states to the individual files, wherein one of said plurality of states is assigned to a given one of the individual files having data stored in the blocks of the non-volatile memory, wherein the assigning of said one state to the given file is based upon a number of the blocks of the non-volatile memory that are partially filled with data of the given file and that also contain erased capacity in which data may be written,maintaining records for the individual files of said plurality of file states that are based upon how data of the individual files are distributed among one or more of a plurality of types of blocks, andwriting additional data of the given file to a type of block that is selected based upon the state in the record of the given file.
3 Assignments
0 Petitions
Accused Products
Abstract
Host system data files are written directly to a large erase block flash memory system with a unique identification of each file and offsets of data within the file but without the use of any intermediate logical addresses or a virtual address space for the memory. Directory information of where the files are stored in the memory is maintained within the memory system by its controller, rather than by the host. A type of memory block is selected to receive additional data of a file that depends upon the types of blocks into which data of the file have already been written. Blocks containing data are selected for reclaiming any unused capacity therefrom by a process that selects blocks in order starting with those containing the least amount of valid data.
172 Citations
20 Claims
-
1. A method of storing data in blocks of re-programmable non-volatile memory as uniquely identified individual files, which comprises:
-
assigning a plurality of states to the individual files, wherein one of said plurality of states is assigned to a given one of the individual files having data stored in the blocks of the non-volatile memory, wherein the assigning of said one state to the given file is based upon a number of the blocks of the non-volatile memory that are partially filled with data of the given file and that also contain erased capacity in which data may be written, maintaining records for the individual files of said plurality of file states that are based upon how data of the individual files are distributed among one or more of a plurality of types of blocks, and writing additional data of the given file to a type of block that is selected based upon the state in the record of the given file. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method of operating a non-volatile memory system with storage cells grouped into blocks of memory cells that are erased prior to reprogramming with data of uniquely identified files, comprising:
-
designating a set of a plurality of data block types in terms of a structure of file data stored within individual blocks so designated, designating a set of a plurality of permitted file states in terms of a combination of types of one or more blocks in which data of individual files so designated are stored, maintaining a record of the file states of individual data files stored in the memory system, and writing data for an individual file to a type of block selected according to the current state of the file in the record;
wherein the designated plurality of data block types includes a first plurality of types in which data of only one file are stored in a single block and a second plurality of types in which data of two or more files are stored in a single block, and wherein the permitted file states limit a maximum number of blocks of the second plurality of types to which data of a single one of the files may be written, and wherein the maximum number is two.- View Dependent Claims (8, 9, 10)
-
-
11. A method of operating a non-volatile memory system with memory storage cells grouped into blocks of memory cells that are simultaneously erased prior to reprogramming and which stores data as a plurality of distinctly identified data files, comprising:
-
identifying blocks storing data of individual files by one of a plurality of types of blocks including a first type of block containing valid data of two or more files and a second type of block containing data of only one file, designating one of a plurality of permitted states for individual files stored in one or more blocks of the memory system in terms of an allowed one or more types of the blocks, maintaining a set of a plurality of permitted transitions between file states that limit a number of blocks of the first type that can store data of a single file in favor of blocks of the second type, in response to a need to write additional data to a given file stored in the memory system, identify one of the blocks to which data of the given file have most recently been written but if this identified block cannot accept additional data of the given file then transition the state of the given file to a next permitted state within the set of permitted file state transitions and identify an additional block having a type allowed by the next permitted state, and thereafter writing the additional data to the type of block so identified;
wherein the set of plurality of permitted transitions between file states limit the number of blocks of the first type that can store data of a single file to two. - View Dependent Claims (12, 13, 14)
-
-
15. A method for programming a plurality of files of data in a reprogrammable non-volatile memory system, comprising a plurality of blocks of non-volatile memory cells characterized by the memory cells of individual blocks being simultaneously erased prior to reprogramming data therein, comprising:
-
assigning and storing a state for each of the plurality of files of data programmed in the plurality of blocks of non-volatile memory cells, the assigned state of each of the plurality of files being based on at least; a number of the blocks of non-volatile memory cells that are partially filled with data of the file, and a number of the blocks of non-volatile memory cells that are partially filled with data of the file that also contain erased capacity in which additional data may be programmed, and selecting one or more of the blocks of non-volatile memory cells in which data of a given one of the individual files of data are to be programmed based on the stored state of the given one of the individual files of data, and programming the data of the given one of the individual files of data into the selected one or more blocks. - View Dependent Claims (16, 17, 18)
-
-
19. A method for programming a plurality of files of data in a reprogrammable non-volatile memory system comprising a plurality of blocks of non-volatile memory cells characterized by the memory cells of individual blocks being simultaneously erased prior to reprogramming data therein, said method comprising:
-
assigning and storing a state for each of the plurality of files of data programmed in the plurality of blocks of non-volatile memory cells, the assigned state of each of the plurality of files being based on at least; a number of the blocks of non-volatile memory cells that are partially filled with data of the file, and a number of the blocks of non-volatile memory cells that are partially filled with data of the file that also contain data of one or more other of the plurality of files, and selecting one or more of the blocks of non-volatile memory cells in which data of a given one of the individual files of data are to be programmed based on the stored state of the given one of the individual files of data, and programming the data of the given one of the individual files of data into the selected one or more blocks. - View Dependent Claims (20)
-
Specification