US2006184719A1PendingUtilityA1
Direct data file storage implementation techniques in flash memories
Est. expiryFeb 16, 2025(expired)· nominal 20-yr term from priority
Inventors:Alan Welsh Sinclair
G06F 12/0246G06F 3/0607G06F 2212/7205G06F 3/0679G06F 3/0643G06F 2212/7201G06F 12/02G06F 12/00
49
PatentIndex Score
0
Cited by
0
References
0
Claims
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. The file based interface between the host and memory systems allows the memory system controller to utilize the data storage blocks within the memory with increased efficiency.
Claims
exact text as granted — not AI-modified1 . A method of operating a re-programmable non-volatile mass storage system having memory cells organized into blocks that are erased prior to any new data being written therein and which individually have a capacity of storing multiple units of data that individually include at least 512 bytes of data, comprising:
receiving data with a logical address including a unique file identification and offsets of data within the identified file, programming the received data at physical addresses within the blocks of memory cells, and maintaining a plurality of records of the programmed data for the individual files that identify groups of variable amounts of data making up the file and which individually have both contiguous logical offset addresses and contiguous physical addresses of data within the group.
2 . The method of claim 1 , wherein maintaining the plurality of records includes providing in the individual records at least a beginning logical offset address and a beginning physical address of the data within the group.
3 . The method of claim 2 , wherein maintaining the plurality of records additionally includes providing in the individual records a length of the data within the group.
4 . The method of claim 3 , additionally comprising maintaining a file map of the plurality of records organized by grouping the records of the individual files.
5 . The method of claim 1 , wherein programming data includes programming the received data of a new file by beginning with a first physical address of an erased block and continuing through the erased block and other erased blocks if necessary in physical order until all the received data of the file have been programmed in one programming operation.
6 . The method of claim 1 , wherein programming data includes programming received additional data of an existing file previously stored in the memory system by beginning with a physical address of a block immediately after the existing file data ends in said block and continuing through an erased portion of that block and other erased blocks if necessary in physical order until all the additional data of the file have been programmed in one programming operation.
7 . The method of claim 6 , wherein programming the additional data includes programming data of an insert within the previously stored file.
8 . The method of claim 7 , wherein maintaining a plurality of records includes changing records of the existing data groups of the existing file and adding at least one additional record of at least one other data group.
9 . The method of claim 6 , wherein programming the additional data includes programming data of an update to a portion of the data of the previously stored file which results in the data portion of the previously stored file becoming obsolete.
10 . The method of claim 9 , wherein maintaining a plurality of records includes changing records of the existing data groups of the existing file and adding at least one additional record of at least one other data group.
11 . The method of claim 1 , wherein at least some of the individual units contain a plurality of said groups of data.
12 . The method of claim 1 , wherein the mass storage system contains a number of memory cells sufficient to store at least 256 megabytes of data.
13 . The method of claim 1 , wherein the individual unit of data contains at least 1024 bytes.
14 . The method of claim 1 , wherein at least 8 units of data are written into individual blocks of the mass storage system.
15 . A method of transferring data between a host system and a re-programmable non-volatile mass storage system having memory cells organized into blocks of memory cells that are erasable together, an individual block being erased prior to new data being written therein, wherein:
the host system identifies individual files of data it generates by unique file identifiers and offsets of given sized units of data within the individual files, and the mass storage system stores said individual files of data into at least one previously erased block of memory cells with boundaries between groups of data having non-sequential data offsets within one file or between groups of data of two different files that are specified with a physical address resolution equal to that of the file offset address unit.
16 . The method of claim 15 , wherein the given sized units of data contain one byte of data.
17 . The method of claim 15 , wherein the groups of data individually contain variable amounts of data having both contiguous logical offset and contiguous physical addresses of the data.
18 . The method of claim 17 , wherein the mass storage system maintains a plurality of records of the groups of data that make up the individual files.
19 . The method of claim 18 , wherein maintaining the plurality of records includes providing in the individual records at least a beginning logical offset address and a beginning physical address of the data within the group.
20 . The method of claim 19 , wherein maintaining the plurality of records additionally includes providing in the individual records a length of the data within the group.
21 . A method of operating a re-programmable non-volatile memory system with a host system, the memory system having blocks of memory cells that are erased prior to new data being written therein, comprising:
receiving data addressed by a unique file identification, storing the received file data within one or more of the memory system blocks, thereafter rendering at least some of the stored file data obsolete as a result of responding to subsequent commands from the host, and thereafter garbage collecting one or more blocks containing the obsolete file data in a manner to obtain at least one erased block prior to the host sending a command to program data that requires use of said erased block to store new data.
22 . The method of claim 21 , wherein garbage collecting blocks occurs during periods when the host is idle.
23 . The method of claim 21 , wherein garbage collecting blocks occurs in periods interleaved with operations of the memory system to write or read data.
24 . The method of claim 21 , wherein garbage collecting blocks includes copying valid data from the one or more blocks containing the obsolete file data and into at least one other block with a physical order that is the same as the logical offset address order of the copied data.
25 . The method of claim 21 , wherein receiving data addressed by a unique file identification includes receiving data addressed with offsets within the identified file.
26 . A method of transferring data between a host system and a re-programmable non-volatile mass storage system having blocks of memory cells that are erasable together, an individual block being erased prior to new data being written therein, wherein:
the host system identifies individual files of data it generates by unique file identifiers and offsets of given sized units of data within the individual files, and sends such file identifiers and offsets to the mass storage system, and the mass storage system writes units of data of a file in an order received from the host system into at least one previously erased block of memory cells with contiguous physical addresses independent of data offsets within the file.
27 . The method of claim 26 wherein the mass storage system further writes units of data of the file to fill at least one memory block and any residual data of an amount less than enough to fill another memory block is written into a common block that also contains residual data of a different file.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.