IP Library Granted Patent US 8,743,603
Granted Patent B2
US 8,743,603 · App. 13/890,704 · Granted Jun 3, 2014

Efficient data storage in multi-plane memory devices

Inventors: Yoav Kasorla (Kfar Netar, IL); Eyal Gurgi (Petah-Tikva, IL); Dotan Sokolov (Ra'anana, IL); Ofir Shalvi (Ra'anana, 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,743,603
App. No.
13/890,704
Granted
Jun 3, 2014
Kind
B2
Abstract

A method for data storage includes initially storing a sequence of data pages in a memory that includes multiple memory arrays, such that successive data pages in the sequence are stored in alternation in a first number of the memory arrays. The initially-stored data pages are rearranged in the memory so as to store the successive data pages in the sequence in a second number of the memory arrays, which is less than the first number. The rearranged data pages are read from the second number of the memory arrays.

Claims (31)

1. A method for data storage, comprising:

storing a sequence of data pages in a memory;

receiving a series of requests from a host to sequentially retrieve the stored data pages from the memory;

responsively to a given request received at a given time, reading from the memory one or more non-requested data pages in the sequence, which were not yet requested by the host at the given time, as well as reading one or more requested data pages specified in the given request;

caching the read requested and non-requested data pages; and

canceling cross-coupling interference in at least one of the requested data pages using the cached requested and non-requested data pages.

2. A data storage apparatus, comprising:

a memory, which comprises multiple memory arrays; and

circuitry, which is coupled to initially store a sequence of data pages in the memory such that successive data pages in the sequence are stored in alternation in a first number of the memory arrays, to rearrange the initially-stored data pages in the memory so as to store the successive data pages in the sequence in a second number of the memory arrays, which is less than the first number, and to read the rearranged data pages from the second number of the memory arrays.

3. The apparatus according to claim 2 , wherein the circuitry is coupled to read a given data page and one or more neighboring data pages from the second number of the memory arrays, and to cancel cross-coupling interference in the given data page responsively to the read neighboring data pages.

4. The apparatus according to claim 3 , and comprising a cache memory, wherein the circuitry is coupled to cache the read data pages in the cache memory such that both the given data page and the neighboring data pages are cached in the cache memory at a given time, and to cancel the interference using the cached given data page and neighboring data pages.

5. The apparatus according to claim 2 , wherein the second number of the memory arrays comprises a single memory array.

6. The apparatus according to claim 2 , wherein the second number of the memory arrays comprises two or more memory arrays, and wherein the circuitry is coupled to rearrange the initially-stored data pages by storing the successive data pages in alternation in the second number of the memory arrays.

7. The apparatus according to claim 2 , wherein the circuitry is coupled to rearrange the initially-stored data pages so as to store the successive data pages in a third number of the memory arrays, which is smaller than the first number and larger than the second number, and to rearrange the data pages stored in the third number of the memory arrays so as to store the successive data pages in the second number of the memory arrays.

8. The apparatus according to claim 2 , wherein the circuitry is coupled to define multiple groups of the memory arrays, each group having the second number of the memory arrays, and to rearrange the initially-stored data pages by storing respective subsets of the successive data pages in the groups.

9. The apparatus according to claim 8 , wherein the circuitry is coupled to store the subsets in the groups using multi-plane write commands, each command specifying storage of the second number of the data pages in each of the groups.

10. The apparatus according to claim 2 , wherein the circuitry is coupled to initially store the sequence using multi-plane write commands, each command specifying storage of the first number of the data pages in the first number of the memory arrays.

11. The apparatus according to claim 2 , wherein the circuitry is coupled to send an acknowledgement indication responsively to a successful completion of initially-storing the sequence, irrespective of rearrangement of the initially-stored data pages.

12. The apparatus according to claim 2 , wherein the circuitry is coupled to rearrange the data pages during an idle period in which no memory access operations are performed.

13. The apparatus according to claim 2 , wherein each of the memory arrays comprises a plurality of analog memory cells, and wherein the circuitry is coupled to initially store the sequence by programming the memory cells in the first number of the memory arrays using first programming parameters, and to rearrange the data pages by programming the memory cells in the second number of the memory arrays using second programming parameters, different from the first programming parameters.

14. The apparatus according to claim 13 , wherein the circuitry is coupled to program the memory cells using the first programming parameters by programming the memory cells to assume a first number of programming levels, and to program the memory cells using the second programming parameters by programming the memory cells to assume a second number of programming levels, larger than the first number.

15. The apparatus according to claim 13 , wherein the circuitry is coupled to program the memory cells using the first programming parameters by applying to the memory cells a first sequence of programming pulses whose amplitude increases incrementally by a first step size, and to program the memory cells using the second programming parameters by applying to the memory cells a second sequence of programming pulses whose amplitude increases incrementally by a second step size, smaller than the first step size.

16. The apparatus according to claim 2 , wherein the circuitry is coupled to receive a request from a host to retrieve one or more requested data pages in the sequence, to read from the second number of the memory arrays, responsively to the request, one or more non-requested data pages in the sequence that were not requested by the host in addition to reading the requested data pages, to cache the read requested and non-requested data pages, and to cancel cross-coupling interference in at least one of the requested data pages using the cached requested and non-requested data pages.

17. The apparatus according to claim 2 , wherein the memory comprises a Dynamic Random Access Memory (DRAM) and a non-volatile memory, and wherein the circuitry is coupled to initially store the data pages in the DRAM and to rearrange the initially-stored data pages by copying the data pages from the DRAM to the non-volatile memory.

18. The apparatus according to claim 2 , wherein the memory cells in the second number of the memory arrays are arranged along multiple word lines, and wherein the circuitry is coupled to rearrange the initially-stored data pages by storing the data pages in an ascending order of the word lines and in a reverse order of the sequence.

19. A data storage apparatus, comprising:

a memory; and

a processor, which is coupled to store a sequence of data pages in a memory, to receive a series of requests from a host to sequentially retrieve the stored data pages from the memory, to read from the memory, responsively to a given request received at a given time, one or more non-requested data pages in the sequence that were not yet requested by the host at the given time, as well as reading one or more requested data pages specified in the given request, to cache the read requested and non-requested data pages, and to cancel cross-coupling interference in at least one of the requested data pages using the cached requested and non-requested data pages.

20. A data storage apparatus, comprising:

an interface, which is operative to communicate with a memory that includes multiple memory arrays; and

a processor, which is coupled to initially store a sequence of data pages in the memory such that successive data pages in the sequence are stored in alternation in a first number of the memory arrays, to cause the memory to rearrange the initially-stored data pages in the memory so as to store the successive data pages in the sequence in a second number of the memory arrays, which is less than the first number, and to read the rearranged data pages from the second number of the memory arrays.

Continuity (4)
Division 12332370 · Dec 11, 2008
Provisional Application 61014048 · Dec 16, 2007
Provisional Application 61016570 · Dec 25, 2007
Related Publication 20130254470A1 · Sep 26, 2013