Direct File Data Programming and Deletion in Flash Memories
First Claim
1. A method of operating a re-programmable non-volatile memory system with a host system that generates a plurality of data files having unique individual file identifiers, the memory system having blocks of memory cells that are erased prior to new data being written therein, comprising:
- maintaining a pool of erased blocks available for storage of data of the files, the blocks in the pool having been erased prior to being needed for the storage of data of the files,receiving from the host data of the files and their unique individual file identifiers,storing the received data files individually in one or more of the erase pool blocks of the memory system,thereafter receiving from the host a command to delete from the memory system one of the stored data files by its unique file identifier,thereafter identifying each of one or more blocks of memory cells containing data of the file being deleted,thereafter rendering obsolete all the data of the file being deleted that are stored in the identified one or more blocks, wherein thereafter no valid data remain in the memory system for the unique identifier of the file being deleted, andthereafter reclaiming space occupied by the obsolete data of the file being deleted in a manner that increases a number of erased blocks in the pool,wherein executing the received command to delete said one of the stored data files causes the number of erased blocks in the pool to be increased and no data to remain in the memory system for the unique identifier of the deleted file.
2 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. 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.
-
Citations
28 Claims
-
1. A method of operating a re-programmable non-volatile memory system with a host system that generates a plurality of data files having unique individual file identifiers, the memory system having blocks of memory cells that are erased prior to new data being written therein, comprising:
-
maintaining a pool of erased blocks available for storage of data of the files, the blocks in the pool having been erased prior to being needed for the storage of data of the files, receiving from the host data of the files and their unique individual file identifiers, storing the received data files individually in one or more of the erase pool blocks of the memory system, thereafter receiving from the host a command to delete from the memory system one of the stored data files by its unique file identifier, thereafter identifying each of one or more blocks of memory cells containing data of the file being deleted, thereafter rendering obsolete all the data of the file being deleted that are stored in the identified one or more blocks, wherein thereafter no valid data remain in the memory system for the unique identifier of the file being deleted, and thereafter reclaiming space occupied by the obsolete data of the file being deleted in a manner that increases a number of erased blocks in the pool, wherein executing the received command to delete said one of the stored data files causes the number of erased blocks in the pool to be increased and no data to remain in the memory system for the unique identifier of the deleted file. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A memory system capable of storing data of multiple files that are received by the memory system with unique file identifiers and offsets of data within individual files, comprising:
-
an array of non-volatile charge storing semiconductor memory cells organized into a plurality of individual blocks of memory cells that are simultaneously erased prior to new data being written therein, a directory including records that identify one or more of the blocks of memory cells in which data of individual ones of the received files are stored, and a controller connected with the memory cell array that operates to (a) maintain a pool of erased blocks available for storage of data of the files, (b) cause data received by the memory system of the uniquely identified files to be individually stored in an identified one or more of the erase pool blocks of memory cells, (c) record in the directory the identity of the blocks of memory cells and locations therein in which data of the uniquely identified files are stored by their offset addresses, (d) in response to receiving a command to delete a specific file, identify from the directory one or more blocks of memory cells in which data of the specific file are stored, (e) cause all the data of the specific file stored in the identified one or more blocks of memory cells to be marked as obsolete, and (f) thereafter cause the obsolete data of the selected file to be erased in a manner that adds at least one erased block to the erase pool blocks, and (g) remove the directory record for the selected file, wherein all data and the directory record of the selected file are deleted from the memory system. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A memory system capable of storing data of multiple files that are received by the memory system with unique file identifiers and offsets of data within individual files, comprising:
-
an array of non-volatile charge storing semiconductor memory cells organized into a plurality of individual blocks of memory cells that are simultaneously erased prior to new data being written therein, the individual blocks of memory cells being further divided into a plurality of pages of memory cells that are individually programmable with data of the multiple files, a directory including records that identify one or more of the blocks and pages of memory cells within the identified blocks in which data of individual ones of the received files are stored, at least one queue in which a plurality of blocks of memory cells containing obsolete data are listed, and a controller connected with the memory cell array that is configured to (a) cause data of the uniquely identified files received by the memory system to be stored in pages of one or more of the blocks of memory cells, (b) record in the directory the identity of the blocks of memory cells and locations therein in which data of the uniquely identified files are stored by their offset addresses, (c) read data of the stored individual files by first accessing the directory records of the individual files to ascertain the blocks and pages of memory cells in which data of the individual files are stored, (d) in response to receiving a command to delete a specific file, identify from the directory one or more blocks of memory cells and pages therein in which data of the specific file are stored, (e) cause the identified one or more blocks of memory cells and pages therein to be listed in the at least one queue, (f) thereafter cause the data stored in the blocks of memory cells and pages therein that are listed in the at least one queue to be erased and the records of the specific file in the directory to be removed. - View Dependent Claims (12, 13)
-
-
14. A memory system capable of storing data of multiple files that are received by the memory system with unique file identifiers and offsets of data within individual files, comprising:
-
an array of non-volatile charge storing semiconductor memory cells organized into a plurality of blocks of memory cells, wherein the memory cells of individual blocks are simultaneously erased prior to new data being written therein, a directory including a plurality of records that individually identify locations within at least one of the blocks of memory cells in which data of one the received files are stored, and a controller connected with the memory cell array that operates in a manner comprising; (a) causing data received by the memory system of the uniquely identified files to be individually stored in an identified at least one of the blocks of memory cells, (b) recording in the directory the identity of the at least one of the blocks of memory cells and locations therein in which data of the uniquely identified files are stored by their offset addresses, (c) in response to receiving a command to replace at least a portion of the data of a first one of the received files with update data, (i) causing update data received by the memory system along with the command to update data of the first one of the received files to be written into one or more blocks of memory cells, (ii) causing one of the records in the directory for the first one of the received files to be updated to identify the one or more blocks of memory cells in which update data are stored, (iii) marking as obsolete the at least a portion of the data stored for the first one of the received files that was replaced by the update data, and (iv) thereafter causing the obsolete data of the first one of the received files to be erased, (d) in response to receiving a command to delete a second one of the received files, (i) identifying from the directory one or more blocks of memory cells in which data of the second one of the received files are stored, (ii) causing all the data of the second one of the received files stored in the identified one or more blocks of memory cells to be marked as obsolete, and (iii) thereafter causing the obsolete data of the second one of the received files to be erased and the directory record for the second one of the received files to be removed from the directory, whereby the second one of the received files has been removed from the memory system. - View Dependent Claims (15, 16, 17)
-
-
18. In a re-programmable non-volatile memory system with memory cells organized into blocks of memory cells that are erased together prior to new data being written into the blocks of memory cells, a method of operating the memory system when connected with a host, comprising:
-
receiving data of files from the host, along with unique identifiers of the individual data files received, writing the individual received data files into one or more erased blocks of the memory system, maintaining a directory of records for the data files written in the memory system, the records individually listing, for one of the unique file identifiers, the one or more blocks in which data of the identified file have been written, reading data of individual files stored in the memory system by first identifying the directory records for the files by their unique file identifiers, and thereafter reading data from the one or more blocks listed in the directory records for the individual files, receiving from the host a command to delete from the memory system one of the data files identified by its unique file identifier, identifying one or more blocks of memory cells containing data of the file to be deleted by reference to the directory record for the unique file identifier received from the host for the file to be deleted, marking as obsolete all the data of the file being deleted that are written in the identified one or more blocks, reclaiming data storage space occupied by the data of the file marked as obsolete in a manner to provide at least one erased block for the storage of additional data of files from the host, and deleting from the directory the record for the unique file identifier of the file being deleted, wherein execution of the command to delete from the memory system said one of the data files increases a number of erased blocks available for storing data files by at least one and neither data nor the directory record remain in the memory system for the unique file identifier of the deleted file. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A method of operating a re-programmable non-volatile memory system with a host system whose application programs generate a plurality of data files assigned unique individual file identifiers with offsets of data within the individual files, the memory system having blocks of memory cells that are erased together prior to new data being written therein, comprising:
-
maintaining a pool of erased blocks available for storage of data of the files, the blocks in the pool having been erased prior to being needed for the storage of data of the files, receiving from the host data of the files and their unique individual file identifiers, storing the received data files individually in one or more of the erase pool blocks of the memory system, in response to receiving from the host a command to update one of the stored data files identified by its unique file identifier and an offset address that designates a portion of the data within the file that are to be replaced, writing into at least one block of the memory system updated data received from the host for the identified file, and marking obsolete original data of the identified file that have been updated, in response to receiving from the host a command to delete from the memory system one of the stored data files identified by its unique file identifier, identifying each of one or more blocks of memory cells containing data of the file being deleted, thereafter rendering obsolete all the data of the file being deleted that are stored in the identified one or more blocks, wherein thereafter no valid data remain in the memory system for the unique identifier of the file being deleted, and thereafter reclaiming space occupied by the obsolete data of the file being deleted in a manner that increases a number of erased blocks in the pool, wherein executing the received command to delete said one of the stored data files causes the number of erased blocks in the pool to be increased and no data to remain in the memory system for the unique identifier of the deleted file.
-
Specification