IP Library Granted Patent US 10,346,312
Granted Patent B2
US 10,346,312 · App. 15/338,718 · Granted Jul 9, 2019

Variable-size flash translation layer

Inventor: Earl T. Cohen (Oakland, CA)
Assignee: Seagate Technology LLC
G06F12/1009G06F3/064G06F3/0619G06F3/0659G06F3/0661G06F3/0679G06F11/1068G06F12/02G06F12/0246G06F12/0292G06F12/10G11C16/08G11C29/04G11C29/52G06F12/04G06F2212/2022G06F2212/401G06F2212/7201G06F2212/7202
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 10,346,312
App. No.
15/338,718
Granted
Jul 9, 2019
Kind
B2
Abstract

A method for using a variable-size flash translation layer. The method includes reading an entry in a map based on a read logical block address in a read request to obtain both a physical address of a particular page in a memory and information regarding compressed data with a variable size; converting the information to both an address in the particular page and a number of read units in the memory that contain the compressed data; and reading the compressed data from at least the particular page in the memory based on the address and the number of read units.

Claims (63)

1. A method for using a variable-size flash translation layer, comprising the steps of:

reading an entry in a map based on a read logical block address in a read request to obtain both a physical address of a particular page in a memory and information regarding compressed data with a variable size, wherein the particular page comprises a plurality of read units;

converting the information to both an offset in the particular page and a number of the read units in the memory that contain the compressed data, wherein the offset points from a start of the particular page to one of the plurality of read units in the particular page that is an initial one of the number of the read units that contain the compressed data; and

reading stored data from at least the particular page in the memory based on the physical address of the particular page, the offset within the particular page and the number of the read units; and

separating the compressed data from error correction code bits in the stored data based on the information in the entry read from the map.

2. The method according to claim 1 , further comprising the step of:

performing error correction decoding on the stored data prior to the separating of the compressed data from the error correction code bits.

3. The method according to claim 2 , further comprising the steps of:

decompressing the compressed data to generate read data; and

transferring the read data to a host.

4. The method according to claim 1 , further comprising the steps of:

determining that at least a portion of the compressed data is in one or more subsequent read units in a subsequent page of the memory; and

reading only the one or more subsequent read units from the subsequent page.

5. The method according to claim 1 , further comprising the steps of:

receiving a write request to store write data in the memory;

compressing the write data to generate the compressed data;

writing in the particular page at least a portion of the compressed data; and

storing in the map the physical address of the particular page, the offset in the particular page to the compressed data, and a length of the compressed data.

6. The method according to claim 1 , further comprising the steps of:

receiving a write request to store write data in the memory; and

writing in the particular page a header that includes at least a portion of a write logical block address of the write request.

7. The method according to claim 1 , wherein

at least one of the number of the read units includes at least some different data corresponding to another logical block address different than the read logical block address.

8. The method according to claim 1 , wherein

at least one of the number of the read units includes one or more headers and at least a portion of the compressed data.

9. The method according to claim 1 , wherein the steps are performed in a solid-state drive.

10. An apparatus comprising:

a memory configured to store data; and

a controller configured to

process a plurality of input/output requests to read/write to/from the memory,

read an entry in a map based on a read logical block address in a read request to obtain both a physical address of a particular page in the memory and information regarding compressed data with a variable size, wherein the particular page comprises a plurality of read units,

convert the information to both an offset in the particular page and a number of the read units in the memory that contain the compressed data, wherein the offset points from a start of the particular page to one of the plurality of read units in the particular page that is an initial one of the number of the read units that contain the compressed data,

read stored data from at least the particular page in the memory based on the physical address of the particular page, the offset within the particular page and the number of the read units; and

separate the compressed data from error correction code bits in the stored data based on the information in the entry read from the map.

11. The apparatus according to claim 10 , wherein the controller is further configured to

perform error correction decoding on the stored data prior to the separation of the compressed data from the error correction code bits.

12. The apparatus according to claim 11 , wherein the controller is further configured to

decompress the compressed data to generate read data, and

transfer the read data to a host.

13. The apparatus according to claim 10 , wherein the controller is further configured to

determine that at least a portion of the compressed data is in one or more subsequent read units in a subsequent page of the memory, and

read only the one or more subsequent read units from the subsequent page.

14. The apparatus according to claim 10 , wherein the controller is further configured to

receive a write request to store write data in the memory,

compress the write data to generate the compressed data,

write in the particular page at least a portion of the compressed data, and

store in the map the physical address of the particular page, the offset in the particular page to the compressed data, and a length of the compressed data.

15. The apparatus according to claim 10 , wherein the controller is further configured to

receive a write request to store write data in the memory, and

write in the particular page a header that includes at least a portion of a write logical block address of the write request.

16. The apparatus according to claim 10 , wherein

at least one of the number of the read units includes at least some different data corresponding to another logical block address different than the read logical block address.

17. The apparatus according to claim 10 , wherein

at least one of the number of the read units includes one or more headers and at least a portion of the compressed data.

18. The apparatus according to claim 10 , wherein the memory and the controller are part of a solid-state drive.

19. An apparatus comprising:

an interface configured to process a plurality of read/write operations to/from a memory; and

a control circuit configured to

read an entry in a map based on a read logical block address in a read request to obtain both a physical address of a particular page in the memory and information regarding compressed data with a variable size, wherein the particular page comprises a plurality of read units,

convert the information to both an offset in the particular page and a number of the read units in the memory that contain the compressed data, wherein the offset points from a start of the particular page to one of the plurality of read units in the particular page that is an initial one of the number of the read units that contain the compressed data,

read stored data from at least the particular page in the memory based on the physical address of the particular page, the offset within the particular page and the number of the read units; and

separate the compressed data from error correction code bits in the stored data based on the information in the entry read from the map.

20. The apparatus according to claim 19 , wherein the interface and the control circuit are part of a solid-state drive.

Continuity (5)
Continuation 14055336 · Oct 16, 2013
Provisional Application 61888681 · Oct 9, 2013
Provisional Application 61866672 · Aug 16, 2013
Provisional Application 61755169 · Jan 22, 2013
Related Publication 20170046273A1 · Feb 16, 2017