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;
(ii) for each logical block, a respective first page pointer for indicating a page of the corresponding first physical block, and(iii) second mapping data indicating for each logical page of each logical block, 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 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 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.
222 Citations
26 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; (ii) for each logical block, a respective first page pointer for indicating a page of the corresponding first physical block, and (iii) second mapping data indicating for each logical page of each logical block, 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 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 physical page of the corresponding first physical block. - View Dependent Claims (2, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
3. 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; (ii) for each logical block, a respective first page pointer for indicating a 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 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.
-
-
12. A memory system having:
-
a first non-volatile memory for storing user data, the first 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 second memory, the second memory being organized into a plurality of bytes, the bytes being randomly accessible, each byte being writable and readable as a unit, the second memory being arranged to store data mapping logical blocks to corresponding physical blocks; a memory controller arranged to store user data in said first non-volatile memory; at least a portion of the second memory being non-volatile, at least a portion of the mapping data being stored in said non-volatile memory. - View Dependent Claims (13, 14, 15)
-
-
16. 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; 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 a said logical page of a said 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 corresponding logical block, and subsequently to write data relating to logical pages of that logical block in pages of the second physical block. - View Dependent Claims (17, 18, 19)
-
-
20. 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; (ii) third mapping data indicating, for at least one of the plurality of logical blocks, a mapping between the or each logical block 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 (21, 22)
-
-
23. (canceled)
-
24. (canceled)
-
25. (canceled)
-
26. (canceled)
Specification