Locating data in non-volatile memory
AssigneeLSI Corporation
InventorEarl Cohen
Life of this patent
Estimating the term…
Abstract
Systems and methods presented herein provide for locating data in non-volatile memory by decoupling a mapping unit size from restrictions such as the maximum size of a reducible unit to provide efficient mapping of larger mapping units. In one embodiment, a method comprises mapping a logical page address in a logical block address space to a read unit address and a number of read units in the non-volatile memory. The method also comprises mapping data of the logical page address to a plurality of variable-sized pieces of data spread across the number of read units starting at the read unit address in the non-volatile memory.
Claims22
A method of reading a logical page from a non-volatile memory, comprising:
- determining a respective one of a plurality of entries of a map associated with a logical page address of the logical page,
- wherein the logical page address is in a logical block address space,
- wherein each of the entries comprises a respective address of one of a plurality of read units in the non-volatile memory, a respective plurality of lengths in read units, and a respective one or more spanning indications, and
- wherein each of the read units corresponds to an individually correctable portion of the non-volatile memory;
- reading a number of the read units according to the respective plurality of lengths in read units and the respective one or more spanning indications of the respective entry;
- decoding each of the read units in the number of the read units;
- extracting from the decoded read units, according to the respective plurality of lengths in read units and the respective one or more spanning indications of the respective entry, a respective variable-sized piece of data for each of the respective lengths in read units;
- and
- decompressing the variable-sized pieces of data to reconstruct the logical page.
A method, comprising:
- first mapping each of a plurality of pages in a storage address space to a respective address of one of a plurality of smallest quantities of correctable data readable from a non-volatile memory, wherein each of the pages are stored in the non-volatile memory as a respective plurality of variable-sized pieces;
- second mapping each of the pages to a respective plurality of spans, each of the respective spans specifying an integer number of the smallest quantities of correctable data readable from the non-volatile memory;
- third mapping each of the pages to a respective one or more next indications;
- first determining particular ones of the smallest quantities of correctable data readable from the non-volatile memory to access to retrieve a particular one of the pages according to results of the first mapping, results of the second mapping, and results of the third mapping;
- and
- second determining which ones of the particular smallest quantities of correctable data readable from the non-volatile memory store data of each of the respective plurality of variable-sized pieces of the particular page according to results of the second mapping and results of the third mapping.
A storage device, comprising:
- a non-volatile memory operable to store data;
- and
- a controller operable to determine a respective one of a plurality of entries of a map associated with a logical page address of the logical page,
- wherein the logical page address is in a logical block address space,
- wherein each of the entries comprises a respective address of one of a plurality of read units in the non-volatile memory, a respective plurality of lengths in read units, and a respective one or more spanning indications,
- wherein each of the read units corresponds to an individually correctable portion of the non-volatile memory, and
- wherein the controller is further operable to:
- read a number of the read units according to the respective plurality of lengths in read units and the respective one or more spanning indications of the respective entry;
- decode each of the read units in the number of the read units;
- extract from the decoded read units, according to the respective plurality of lengths in read units and the respective one or more spanning indications of the respective entry, a respective variable-sized piece of data for each of the respective lengths in read units;
- and
- decompress the variable-sized pieces of data to reconstruct the logical page
Dependencies are inferred from the claim text.