IP Library Granted Patent US 8,433,981
Granted Patent B1
US 8,433,981 · App. 12/959,101 · Granted Apr 30, 2013

Coding across data blocks to reduce write amplification in NAND flash

Inventors: Rajiv Agarwal (Palo Alto, CA); Marcus Marrow (Santa Clara, CA)
Assignee: SK hynix memory solutions inc.
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 8,433,981
App. No.
12/959,101
Granted
Apr 30, 2013
Kind
B1
Abstract

Data is stored from a host. A flash memory is divided into a plurality of memory groups, the memory groups each comprising a plurality of flash memory blocks. A first portion of one of the plurality of memory groups is allocated for storing parity data of an error-correcting code for the memory group. A second portion of the memory group is allocated for storing data from the host. A flash memory block in the memory group is erased prior to writing the data from the host, wherein the flash memory block contains valid data. The erased valid data is recovered using the error-correcting code.

Claims (39)

1. A method of storing data from a host, comprising:

dividing a flash memory into a plurality of memory groups, the memory groups each comprising a plurality of flash memory blocks;

allocating a first portion of one of the plurality of memory groups for storing parity data of an error-correcting code for the memory group;

allocating a second portion of the memory group for storing data from the host;

using a controller to erase a flash memory block in the memory group prior to writing the data from the host, wherein the flash memory block contains valid data; and

recovering the erased valid data using the error-correcting code.

2. The method as recited in claim 1 , wherein the recovering of the erased valid data using the error-correcting code is performed before a total amount of erased valid data in the memory group exceeds a maximum amount of data correctable by the error-correcting code.

3. The method as recited in claim 1 , wherein the recovering of the erased valid data is performed before a read request for the erased valid data.

4. The method as recited in claim 1 , wherein the recovering of the erased valid data is performed during an idle period of a controller for the flash memory.

5. The method as recited in claim 1 , wherein the recovering of the erased valid data is based on the parity data.

6. The method as recited in claim 1 , wherein the first portion of the memory group for storing parity data comprises a plurality of flash memory blocks.

7. The method as recited in claim 1 , further comprising recomputing the parity data after the erased valid data are recovered.

8. The method as recited in claim 1 , the error-correcting code spanning across the plurality of flash memory blocks in the memory group.

9. The method as recited in claim 1 , further comprising updating a counter for the total amount of erased valid data in the memory group.

10. The method as recited in claim 1 , further comprising storing the location of the erased valid data.

11. A system for storing data from a host, comprising:

a processor configured to:

divide a flash memory into a plurality of memory groups, the memory groups each comprising a plurality of flash memory blocks;

allocate a first portion of one of the plurality of memory groups for storing parity data of an error-correcting code for the memory group;

allocate a second portion of the memory group for storing data from the host;

erase a flash memory block in the memory group prior to writing the data from the host, wherein the flash memory block contains valid data; and

recover the erased valid data using the error-correcting code; and

a memory coupled to the processor and configured to provide the processor with instructions.

12. The system as recited in claim 11 , wherein the recovering of the erased valid data using the error-correcting code is performed before a total amount of erased valid data in the memory group exceeds a maximum amount of data correctable by the error-correcting code.

13. The system as recited in claim 11 , wherein the recovering of the erased valid data is performed before a read request for the erased valid data.

14. The system as recited in claim 11 , wherein the recovering of the erased valid data is performed during an idle period of a controller for the flash memory.

15. The system as recited in claim 11 , wherein the recovering of the erased valid data is based on the parity data.

16. The system as recited in claim 11 , the error-correcting code spanning across the plurality of flash memory blocks in the memory group.

17. A computer program product for storing data from a host, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

dividing a flash memory into a plurality of memory groups, the memory groups each comprising a plurality of flash memory blocks;

allocating a first portion of one of the plurality of memory groups for storing parity data of an error-correcting code for the memory group;

allocating a second portion of the memory group for storing data from the host;

erasing a flash memory block in the memory group prior to writing the data from the host, wherein the flash memory block contains valid data; and

recovering the erased valid data using the error-correcting code.

18. The computer program product as recited in claim 17 , wherein the recovering of the erased valid data using the error-correcting code is performed before a total amount of erased valid data in the memory group exceeds a maximum amount of data correctable by the error-correcting code.

19. The computer program product as recited in claim 17 , wherein the recovering of the erased valid data is performed before a read request for the erased valid data.

20. The computer program product as recited in claim 17 , wherein the recovering of the erased valid data is performed during an idle period of a controller for the flash memory.

21. The computer program product as recited in claim 17 , wherein the recovering of the erased valid data is based on the parity data.

22. The computer program product as recited in claim 17 , the error-correcting code spanning across the plurality of flash memory blocks in the memory group.

Assignments (2)
CHANGE OF NAME Recorded Feb 22, 2013
From: LINK_A_MEDIA DEVICES CORPORATION
To: SK HYNIX MEMORY SOLUTIONS INC.
Reel/Frame 029860/0199 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2011
From: AGARWAL, RAJIV; MARROW, MARCUS
To: LINK_A_MEDIA DEVICES CORPORATION
Reel/Frame 025999/0704 →
Continuity (1)
Provisional Application 61335895 · Jan 12, 2010