IP Library Granted Patent US 9,195,594
Granted Patent B2
US 9,195,594 · App. 13/962,558 · Granted Nov 24, 2015

Locating data in non-volatile memory

Inventor: Earl Cohen (Oakland, CA)
Assignee: Seagate Technology LLC
G06F12/04G06F12/0246
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,195,594
App. No.
13/962,558
Granted
Nov 24, 2015
Kind
B2
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.

Claims (70)

1. 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.

2. The method of claim 1 , wherein:

at least one of the read units in the number of the read units contains at least portions of two of the variable-sized pieces of data.

3. The method of claim 1 , wherein:

the number of the read units is less than a count of the respective plurality of lengths.

4. The method of claim 1 , wherein:

each of the read units comprises a respective number of user data bytes and a respective number of error correction code check bytes.

5. The method of claim 4 , wherein:

a first one of the read units has a first respective number of user data bytes;

a second one of the read units has a second respective number of user data bytes; and

the first number of user data bytes is different from the second number of user data bytes.

6. The method of claim 1 , wherein:

the number of the read units is equal to a sum of the respective plurality of lengths, plus a sum of the respective one or more spanning indications, minus a count of the respective plurality of lengths, plus one.

7. The method of claim 1 , wherein:

a count of the respective one or more spanning indications is one less than a count of the respective plurality of lengths.

8. The method of claim 1 , wherein:

the logical page is a first logical page;

the logical page address is a first logical page address;

the read units in the number of the read units comprise both all data of the first logical page and at least a portion of data of a second logical page at a second logical page address; and

the second logical page address is different from the first logical page address.

9. 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.

10. The method of claim 9 , further comprising:

in response to a read command to retrieve the particular page, retrieving solely a portion of the non-volatile memory corresponding to the particular smallest quantities of correctable data readable from the non-volatile memory.

11. The method of claim 9 , wherein:

one of the smallest quantities of correctable data readable from the non-volatile memory specified by the respective address, the respective spans, and the respective next indications of the particular page contemporaneously stores data of the particular page and data of a different one of the pages.

12. The method of claim 9 , further comprising:

fourth mapping each of the pages to a respective length specifying a length of the respective plurality of variable-sized pieces.

13. The method of claim 12 wherein:

the respective length is in units having a finer granularity than the smallest quantity of correctable data readable from the non-volatile memory.

14. The method of claim 13 , wherein:

the respective length is in units having a coarser granularity than byte granularity.

15. The method of claim 9 , further comprising:

accessing a map comprising a plurality of map entries according to an address in the storage address space of the particular page to look up a respective map entry associated with the particular page,

wherein the respective map entry comprises the respective address, the respective spans, and the respective next indications of the particular page.

16. The method of claim 15 , wherein:

the map has one entry for each of the pages.

17. The method of claim 15 , wherein:

the accessing the map comprises the first mapping, the second mapping, and the third mapping.

18. 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.

19. The storage device of claim 18 , wherein:

at least one of the read units in the number of the read units contains at least portions of two of the variable-sized pieces of data.

20. The storage device of claim 18 , wherein:

the number of the read units is less than a count of the respective plurality of lengths.

21. The storage device of claim 18 , wherein:

each of the read units comprises a respective number of user data bytes and a respective number of error correction code check bytes.

22. The storage device of claim 21 , wherein:

a first one of the read units has a first respective number of user data bytes, and a second one of the read units has a second respective number of user data bytes, the first number of user data bytes different from the second number of user data bytes.

Assignments (5)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2015
From: LSI CORPORATION
To: SEAGATE TECHNOLOGY LLC
Reel/Frame 034771/0272 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS INCLUDED IN SECURITY INTEREST PREVIOUSLY RECORDED AT REEL/FRAME (032856/0031) Recorded Nov 6, 2014
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 034177/0257 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2013
From: COHEN, EARL
To: LSI CORPORATION
Reel/Frame 030972/0287 →
Continuity (3)
Provisional Application 61782089 · Mar 14, 2013
Provisional Application 61755169 · Jan 22, 2013
Related Publication 20140208061A1 · Jul 24, 2014