Controller for non-volatile memories and methods of operating the memory controller
First Claim
1. A memory system having:
- a non-volatile solid-state memory for storing user data, the non-volatile memory having a plurality of physical blocks, each physical block being organized into a plurality of physical pages, each physical block being erasable as a unit and each physical page being writable and readable as a unit,a mapping data memory arranged to store;
(i) first mapping data indicating, for each of a plurality of logical blocks, a mapping between each logical block and a corresponding first one of said physical blocks, each of said logical blocks being organized into a plurality of logical pages;
(ii) for each of said logical blocks, a respective first page pointer for indicating a free page of the corresponding first physical block, and(iii) second mapping data indicating for each logical page of each of said logical blocks, the physical page of the corresponding first physical block to which data in respect of that logical page was last written; and
a memory controller arranged to perform a write operation in relation to any logical page of any of said logical blocks, said write operation in relation to any given logical page including the steps of;
(a) using the respective first page pointer to identify a free physical page of the corresponding first physical block,(b) writing data to the identified physical page,(c) updating the second mapping data to indicate the identified physical page as the physical page to which data in respect of the given logical page was last written; and
(d) updating the respective first page pointer to indicate a new free physical page of the corresponding first physical block.
0 Assignments
0 Petitions
Accused Products
Abstract
A non-volatile memory system (3) is proposed consisting of a first non-volatile flash memory (5) having a plurality of blocks, each block having a plurality of pages, each block being erasable and each page being programmable, and a second non-volatile random access memory (23) having a plurality of randomly accessible bytes. The second non-volatile memory (23) stores data for mapping logical blocks to physical blocks and status information of logical blocks. Each logical block has an associated physical page pointer stored in the second non-volatile memory (23) that identifies the next free physical page of the mapped physical block to be written. The page pointer is incremented after every page write to the physical block, allowing all physical pages to be fully utilized for page writes. Furthermore, a method of writing and reading data is disclosed whereby the most recently written physical page associated with a logical address is identifiable by the memory system without programming flags into superseded pages, or recording time stamp values in any physical page or block of the first non-volatile memory (5). Furthermore, a method is provided for a logical block to be mapped to two physical blocks instead of one to provide additional space for page writes, resulting in reduction in page copy operations, thereby increasing the performance of the system.
-
Citations
39 Claims
-
1. A memory system having:
-
a non-volatile solid-state memory for storing user data, the non-volatile memory having a plurality of physical blocks, each physical block being organized into a plurality of physical pages, each physical block being erasable as a unit and each physical page being writable and readable as a unit, a mapping data memory arranged to store; (i) first mapping data indicating, for each of a plurality of logical blocks, a mapping between each logical block and a corresponding first one of said physical blocks, each of said logical blocks being organized into a plurality of logical pages; (ii) for each of said logical blocks, a respective first page pointer for indicating a free page of the corresponding first physical block, and (iii) second mapping data indicating for each logical page of each of said logical blocks, the physical page of the corresponding first physical block to which data in respect of that logical page was last written; and a memory controller arranged to perform a write operation in relation to any logical page of any of said logical blocks, said write operation in relation to any given logical page including the steps of; (a) using the respective first page pointer to identify a free physical page of the corresponding first physical block, (b) writing data to the identified physical page, (c) updating the second mapping data to indicate the identified physical page as the physical page to which data in respect of the given logical page was last written; and (d) updating the respective first page pointer to indicate a new free physical page of the corresponding first physical block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A memory system having:
-
a non-volatile solid-state memory for storing user data, the non-volatile memory having a plurality of physical blocks, each physical block being organized into a plurality of physical pages, each physical block being erasable as a unit and each physical page being writable and readable as a unit, a mapping data memory arranged to store; (i) first mapping data indicating, for each of a plurality of logical blocks, a mapping between each logical block and a corresponding first one of said physical blocks, each of said logical blocks being organized into a plurality of logical pages; (ii) for each of said logical blocks, a respective first page pointer for indicating a free page of the corresponding first physical block, and a memory controller arranged to perform a write operation in relation to any logical page of any of said logical blocks, said write operation in relation to any given logical page including the steps of; (a) using the respective first page pointer to identify a free physical page of the corresponding first physical block, (b) writing user data to the identified physical page, (c) writing in said identified physical page identity data indicating the identity of the given logical page; and (d) updating the pointer according to a predefined sequence; whereby the user data and identity data written to said identified physical page supersede any user data and identity data in a physical page of the corresponding first physical block previously associated with the logical page. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A memory system having:
-
a non-volatile solid-state memory for storing user data, the non-volatile memory having a plurality of physical blocks, each physical block being organized into a plurality of physical pages, each physical block being erasable as a unit and each physical page being writable and readable as a unit, a mapping data memory storing data indicating, for each of a plurality of logical blocks, a mapping between the logical blocks and corresponding first ones of physical blocks, each of said logical blocks being organized into a plurality of logical pages; a memory controller arranged to perform a write operation in relation to any logical page of any of said logical blocks, said write operation comprising storing data relating to any of said logical page of a first logical block in a physical page of the corresponding first physical block, said memory controller being arranged, upon a physical block fullness criterion being met in respect of the first physical block, to associate a second physical block with the first logical block, and subsequently to write data relating to logical pages of the first logical block in pages of the second physical block, whereby data for at least one logical page of the first logical block remains stored in the first physical block and data for at least one other logical page of the first logical block is stored in the second physical block. - View Dependent Claims (21, 22, 23, 24, 25, 26)
-
-
27. A memory system having:
-
a non-volatile memory for storing user data, the non-volatile memory having a plurality of physical blocks, each physical block being organized into a plurality of physical pages, each physical block being erasable as a unit and each physical page being writable and readable as a unit, a mapping data memory arranged to store; (i) first mapping data indicating, for each of the plurality of logical blocks, a mapping between each logical block and a corresponding first one of said physical blocks, each of said logical blocks being organized into a plurality of logical pages; (ii) third mapping data indicating, for at least one of the plurality of logical blocks, a mapping between each of said at least one of the plurality of logical blocks and a corresponding second one of said physical blocks; a memory controller arranged to perform a write operation into the non-volatile solid-state memory of user data in relation to any specified one of the plurality of logical blocks, said write operation including, in the case of a logical block which is one of said at least one logical blocks, writing user data into a determined one of the corresponding first and second physical blocks. - View Dependent Claims (28, 29, 30)
-
-
31. A memory system comprising:
-
a first non-volatile memory for storing user data, the first non-volatile memory having a plurality of physical blocks each individually erasable as a unit and each individually organized into a plurality of uniquely addressable physical pages of storage elements, a memory controller responsive to commands for accessing user data in the first non-volatile memory, said controller being operative on logical blocks, each logical block being organized into a plurality of logical pages, a plurality of mapping structures associated with respective said logical blocks, each of said mapping structures including a first field arranged to store the identity of a respective one of said physical blocks and a second field arranged to store a page pointer, each said page pointer identifying a free physical page of the physical block specified by the corresponding first field, for each logical page of each of said logical blocks, a corresponding logical address indicator arranged to store a logical identity of the physical page to which user data associated with the logical page was most recently written. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38, 39)
-
Specification