IP Library Granted Patent US 8,677,203
Granted Patent B1
US 8,677,203 · App. 12/987,175 · Granted Mar 18, 2014

Redundant data storage schemes for multi-die memory systems

Inventors: Ofir Shalvi (Ra'anana, IL); Naftali Sommer (Rishon Lezion, IL); Uri Perlmutter (Ra'anana, IL); Julian Vlaiko (Kfar Saba, IL); Moshe Neerman (Hadera, IL)
Assignee: Apple 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,677,203
App. No.
12/987,175
Granted
Mar 18, 2014
Kind
B1
Abstract

A method for data storage includes storing data in a memory that includes one or more memory units, each memory unit including memory blocks. The stored data is compacted by copying at least a portion of the data from a first memory block to a second memory block, and subsequently erasing the first memory block. Upon detecting a failure in the second memory block after copying the portion of the data and before erasure of the first memory block, the portion of the data is recovered by reading the portion from the first memory block.

Claims (37)

1. A method for data storage, comprising:

storing data in a memory that includes one or more memory units, wherein each memory unit includes a plurality of memory blocks;

compacting the stored data by reading at least a portion of the stored data from a first memory block and storing the read data in a second memory block, and subsequently erasing the first memory block; and

upon detecting a failure in the second memory block after storing the read data in the second memory block and before erasure of the first memory block, recovering the portion of the stored data by re-reading the portion of the stored data from the first memory block.

2. The method according to claim 1 , wherein compacting the stored data comprises delaying erasure of the first memory block.

3. The method according to claim 1 , wherein the memory includes at least first and second memory units, and wherein the first memory block is located in the first memory unit and the second memory block is located in the second memory unit.

4. A method for data storage, comprising:

accepting data for storage in a memory that includes multiple memory units;

encoding the data with an Error Correction Code (ECC), to produce an ECC code word, wherein the ECC code word includes multiple bits;

storing subsets of the multiple bits of the ECC code word in respective memory units of the multiple memory units; and

upon a failure in a given memory unit, decoding the ECC code word using the multiple bits of the ECC code word excluding bits of the ECC code word stored in the given memory unit.

5. The method according to claim 4 , wherein decoding the code word comprises associating the multiple bits with respective soft metrics, and decoding the ECC code word responsively to the soft metrics.

6. The method according to claim 4 , wherein decoding the ECC code word comprises marking a subset of the multiple bits that is stored in the given memory unit as erasures, and decoding the code word responsively to the erasures.

7. The method according to claim 4 , wherein storing the subsets comprises assigning the subsets of the multiple bits respective logical addresses that are mapped to physical storage locations in the respective memory units.

8. The method according to claim 7 , wherein the ECC code word comprises data and redundancy information, and comprising selecting an additional set of the respective logical addresses for storing additional data and additional redundancy information, such that the respective logical addresses that are assigned for storing the additional redundancy information in the additional set are mapped to a different subset of the memory units, in comparison with the respective logical addresses that are assigned for storing the redundancy information in the ECC code word.

9. The method according to claim 7 , wherein the respective memory units are assigned respective, non-overlapping ranges of the respective logical addresses.

10. The method according to claim 7 , wherein accepting the data comprises receiving the data from a host, and wherein assigning the respective logical addresses comprises allocating the respective logical addresses from a range of the respective logical addresses that is not accessible to the host.

11. The method according to claim 4 , and comprising reserving at least one spare memory unit in addition to the multiple memory units, and replacing the given memory unit with the at least one spare memory unit.

12. The method according to claim 11 , and comprising temporarily using the at least one spare memory unit for improving performance of data storage in the multiple memory units.

13. The method according to claim 4 , wherein the multiple memory units are partitioned into two or more groups, wherein each group of the two or more groups is associated with a respective processor of two or more processors, and wherein storing the subsets comprises distributing storage of the subsets among the multiple processors.

14. A data storage apparatus, comprising:

an interface, which is configured to communicate with a memory that includes one or more memory units, wherein each memory unit includes a plurality of memory blocks; and

a processor, which is configured to store data in the memory, to compact the stored data by reading at least a portion of the data from a first memory block and storing the read data to a second memory block and subsequently erasing the first memory block, and, upon detecting a failure in the second memory block after storing the read data in the second memory block and before erasure of the first memory block, to recover the portion of the data by re-reading the portion of the stored data from the first memory block.

15. The apparatus according to claim 14 , wherein the processor is configured to delay erasure of the first memory block.

16. The apparatus according to claim 14 , wherein the memory includes at least first and second memory units, and wherein the first memory block is located in the first memory unit and the second memory block is located in the second memory unit.

17. A data storage apparatus, comprising:

an interface, which is configured to communicate with a memory that includes multiple memory units; and

a processor, which is configured to accept data for storage in the memory, to encode the data with an Error Correction Code (ECC) so as to produce an ECC code word comprising multiple bits, to store respective subsets of the multiple bits of the code word in the multiple memory units, and, upon a failure in a given memory unit, to decode the ECC code word using the multiple bits that are stored in the memory units other than the given memory unit.

18. The apparatus according to claim 17 , wherein the processor is configured to associate the multiple bits with respective soft metrics, and to decode the ECC code word responsively to the soft metrics.

19. The apparatus according to claim 17 , wherein the processor is configured to mark a subset of the multiple bits that is stored in the given memory unit as erasures, and to decode the ECC code word responsively to the erasures.

20. The apparatus according to claim 17 , wherein the processor is configured to assign the subsets respective logical addresses that are mapped to physical storage locations in the respective memory units.

21. The apparatus according to claim 20 , wherein the ECC code word comprises data and redundancy information, and wherein the processor is configured to select an additional set of the respective logical addresses for storing additional data and additional redundancy information, such that the respective logical addresses that are assigned for storing the additional redundancy information in the additional set are mapped to a different subset of the memory units, in comparison with the respective logical addresses that are assigned for storing the redundancy information in the ECC code word.

22. The apparatus according to claim 20 , wherein the respective memory units are assigned respective, non-overlapping ranges of the respective logical addresses.

23. The apparatus according to claim 20 , wherein the interface is configured to receive the data from a host, and wherein the processor is configured to assign the respective logical addresses from a range of the respective logical addresses that is not accessible to the host.

24. The apparatus according to claim 17 , wherein the processor is configured to reserve at least one spare memory unit in addition to the multiple memory units, and to replace the given memory unit with the at least one spare memory unit.

25. The apparatus according to claim 24 , wherein the processor is configured to temporarily use the at least one spare memory unit for improving performance of data storage in the multiple memory units.

26. The apparatus according to claim 17 , wherein the multiple memory units are partitioned into two or more groups, wherein each group of the two or more groups is associated with a respective processor unit of two or more processing units, and wherein the processor is configured to distribute storage of the subsets among the multiple processors.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2012
From: ANOBIT TECHNOLOGIES LTD.
To: APPLE INC.
Reel/Frame 028399/0733 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2011
From: SHALVI, OFIR; SOMMER, NAFTALI; PERLMUTTER, URI; VLAIKO, JULIAN; NEERMAN, MOSHE
To: ANOBIT TECHNOLOGIES LTD.
Reel/Frame 025604/0203 →
Continuity (3)
Provisional Application 61293808 · Jan 11, 2010
Provisional Application 61364406 · Jul 15, 2010
Provisional Application 61373883 · Aug 16, 2010