IP Library Granted Patent US 9,400,710
Granted Patent B2
US 9,400,710 · App. 14/662,360 · Granted Jul 26, 2016

Redundant data storage schemes for multi-die memory systems

Inventors: Ofir Shalvi (Ra'anana, IL); Naftali Sommer (Rishon Le-Zion, IL); Uri Perlmutter (Ra'anana, IL); Julian Vlaiko (Kfar Saba, IL); Moshe Neerman (Hadera, IL)
Assignee: Apple Inc.
G06F11/1016G06F3/065G06F3/0619G06F3/0655G06F3/0688G06F11/108G06F11/1068G06F11/14G06F11/1666G06F12/023G06F12/0246G06F2212/7205G06F2212/7208
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,400,710
App. No.
14/662,360
Granted
Jul 26, 2016
Kind
B2
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. An apparatus, comprising:

a first memory device including a first plurality of blocks;

a second memory device including a second plurality of blocks; and

a controller configured to:

select a first subset of blocks of the first plurality of blocks;

copy first data stored in each block of the first subset of blocks to a respective block of the second plurality of blocks;

erase the first data stored in each block of a first portion of the first subset of blocks; and

delay erasure of the first data stored in each block of a second portion of the first subset of blocks for a predetermined period of time.

2. The apparatus of claim 1 , wherein the first plurality of blocks and the second plurality of blocks includes a plurality of non-volatile memory cells.

3. The apparatus of claim 1 , wherein the first data stored in the first subset of blocks is encoded with an Error Correction Code (ECC).

4. The apparatus of claim 1 , wherein the controller is further configured to read second data stored in at least one of the second plurality of blocks.

5. The apparatus of claim 4 , wherein the controller is further configured to re-read the first data stored in a corresponding block of the first subset of blocks from which the second data stored in the at least one of the second plurality of blocks was copied in response to a determination that the second data stored in the at least one of the second plurality of blocks includes at least one error.

6. The apparatus of claim 5 , wherein to re-read the first data stored in the corresponding block, the controller is further configured to check if the corresponding block has been erased.

7. A method, comprising:

selecting a first subset of blocks of the first plurality of blocks;

copying first data stored in each of block of the first subset of blocks to a respective block of the second plurality of blocks;

erasing the first data stored in each block of a first portion of the first subset of blocks; and

delaying erasure of the first data stored in each block of a second portion of the first subset of blocks for a predetermined period of time.

8. The method of claim 7 , wherein the first block of the plurality of blocks is included in a first memory device, and wherein the second block of the plurality of blocks is included in a second memory device.

9. The method of claim 8 , wherein the first memory device and the second memory device each include a plurality of non-volatile data storage cells.

10. The method of claim 7 , further comprising reading second data stored in at least one of the second plurality of blocks.

11. The method of claim 10 , further comprising re-reading the first data stored in a corresponding block of the first subset of blocks from which the second data stored in the at least one of the second plurality of blocks was copied in response to determining that the second data stored in the at least one of the second plurality of blocks includes at least one error.

12. The method of claim 11 , wherein re-reading the first data stored in the corresponding block comprises checking if the corresponding block has been erased.

13. The method of claim 7 , wherein the first data stored in the first subset of blocks is encoded with an Error Correction Code (ECC).

14. A system, comprising:

a host processor; and

a storage unit coupled to the host processor, wherein the storage unit includes a plurality of blocks, wherein each block of the plurality of blocks includes a respective plurality of data storage cells, and wherein the storage unit is configured to:

select a first subset of blocks of the plurality of blocks;

copy first data stored in each of block of the first subset of blocks to a respective block in a second subset of the plurality of blocks;

erase the first data stored in each block of a first portion of the first subset of blocks; and

delay erasure of the first data stored in each block of a second portion of the first subset of blocks for a predetermined period of time.

15. The system of claim 14 , wherein the storage unit includes a first memory device and a second memory device, and wherein the first memory device include the first subset of blocks and the second memory device includes the second subset of blocks.

16. The system of claim 14 , wherein each data storage cell of a given one of the respective plurality of data storage cells comprises a non-volatile data storage cell.

17. The system of claim 14 , wherein the storage unit is further configured to read second data stored in at least one of the second subset of the plurality of blocks.

18. The system of claim 17 , wherein the storage unit is further configured to re-read the first data stored in a corresponding block of the first subset of blocks from which the second data stored in the at least one of the second subset of blocks was copied in response to a determination that the second data stored in the at least one of the second subset of blocks includes at least one error.

19. The system of claim 18 , wherein to re-read the first data stored in the corresponding block, the storage unit is further configured to check if the corresponding block has been erased.

20. The system of claim 14 , wherein the first data stored in the first subset of blocks is encoded with an Error Correction Code (ECC).

Continuity (6)
Continuation 14173245 · Feb 5, 2014
Continuation 12987175 · Jan 10, 2011
Provisional Application 61293808 · Jan 11, 2010
Provisional Application 61364406 · Jul 15, 2010
Provisional Application 61373883 · Aug 16, 2010
Related Publication 20150193300A1 · Jul 9, 2015