IP Library Granted Patent US 9,449,705
Granted Patent B2
US 9,449,705 · App. 14/173,965 · Granted Sep 20, 2016

Programming schemes for multi-level analog memory cells

Inventors: Ofir Shalvi (Ra'anana, IL); Naftali Sommer (Rishon-LeZion, IL); Dotan Sokolov (Ra'anana, IL); Yoav Kasorla (Kfar Netar, IL)
Assignee: Apple Inc.
G11C16/34G06F11/1008G11C11/56G11C11/5628G11C29/00
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,449,705
App. No.
14/173,965
Granted
Sep 20, 2016
Kind
B2
Abstract

A method for data storage includes storing first data bits in a set of multi-bit analog memory cells at a first time by programming the memory cells to assume respective first programming levels. Second data bits are stored in the set of memory cells at a second time that is later than the first time by programming the memory cells to assume respective second programming levels that depend on the first programming levels and on the second data bits. A storage strategy is selected responsively to a difference between the first and second times. The storage strategy is applied to at least one group of the data bits, selected from among the first data bits and the second data bits.

Claims (46)

1. A method, comprising:

receiving a first plurality of data bits to store in a memory device, wherein the memory device includes a first plurality of memory cells and a second plurality of memory cells;

storing the first plurality of data bits in a respective subset of the first plurality of memory cells, wherein storing the first plurality of data bits includes programming the respective subset of the first plurality of memory cells dependent upon a respective set of first programming levels;

evaluating a criterion of the received first plurality of data bits, wherein the criterion includes cross-coupling interference from one or more memory cells neighboring the first plurality of memory cells;

storing the first plurality of data bits in the second plurality of memory cells in response to determining that the first plurality of data bits meet the evaluated criterion;

receiving a second plurality of data bits to store in the memory device;

determining a respective set of second programming levels dependent upon the received second plurality of data bits and an elapsed time since the storing in the first plurality of data bits; and

storing the second plurality of data bits in the respective subset of the first plurality of memory cells, wherein storing the second plurality of data bits includes programming the respective subset of the first plurality of memory cells dependent upon the respective set of second programming levels.

2. The method of claim 1 , wherein each memory cell of the first plurality of memory cells comprises a non-volatile memory cell.

3. The method of claim 1 , wherein determining the respective set of second programming levels comprises retrieving the stored first plurality of data bits responsive to a determination that the first plurality of data bits are stored in the respective subset of the first plurality of memory cells.

4. The method of claim 3 , wherein retrieving the stored first plurality of data bits comprises storing the retrieved first plurality of data bits in a buffer.

5. The method of claim 1 , wherein the evaluated criterion further includes a distortion level of the first plurality of data bits.

6. The method of claim 3 , wherein determining the respective set of second programming levels comprises detecting and correction errors in the retrieved first plurality of data bits.

7. The method of claim 1 , wherein storing the first plurality of data bits comprises applying to the respective subset of the first plurality of memory cells a first sequence of programming pulses, wherein the first sequence of programming pulses are incrementally increased by a first step size, and wherein storing the second plurality of data bits comprises applying to the respective subset of the second plurality of memory cells a second sequence of programming pulses, wherein the second sequence of programming pulses are incrementally increased by a second step size, wherein the second step size is less than the first step size.

8. An apparatus, comprising:

a first plurality of memory cells;

a second plurality of memory cells; and

a control circuit coupled to the first plurality of memory cells and the second plurality of memory cells, wherein the control circuit is configured to:

receive a first plurality of data bits;

store the first plurality of data bits in a respective subset of the first plurality of memory cells dependent upon a respective set of first programming levels;

evaluate a criterion of the received first plurality of data bits;

store the first plurality of data bits in a respective subset of the second plurality of memory cells in response to a determination that the first plurality of data bits meet the evaluated criterion;

receive a second plurality of data bits;

determine a respective set of second programming levels dependent upon the received second plurality of data bits; and

store the second plurality of data bits in the respective subset of the first plurality of memory cells dependent upon the respective set of second programming levels.

9. The apparatus of claim 8 , wherein each memory cell of the first plurality of memory cells comprises a non-volatile memory cell.

10. The apparatus of claim 8 , wherein to determine the respective set of second programming levels the control circuit is further configured to retrieve the stored first plurality of data bits responsive to a determination that the first plurality of data bits are stored in the respective subset of the first plurality of memory cells.

11. The apparatus of claim 10 , wherein to retrieve the stored first plurality of data bits the control circuit is further configured to store the retrieved first plurality of data bits in a buffer.

12. The apparatus of claim 8 , wherein to determine the respective set of second programming levels the control circuit is further configured to detect and correct errors in the retrieved first plurality of data bits.

13. The apparatus of claim 8 , wherein to store the first plurality of data bits the control circuit is further configured to apply to the respective subset of the first plurality of memory cells a first sequence of programming pulses, wherein the first sequence of programming pulses are incrementally increased by a first step size, and wherein to store the second plurality of data bits the control circuit is further configured to apply to the respective subset of the second plurality of memory cells a second sequence of programming pulses, wherein the second sequence of programming pulses are incrementally increased by a second step size, wherein the second step size is less than the first step size.

14. The apparatus of claim 8 , wherein each cell of the second plurality of memory cells comprises a static random access memory cell.

15. A system, comprising:

a memory device, wherein the memory device includes a first plurality of memory cells and a second plurality of memory cells; and

a memory controller coupled to the memory device, wherein the memory controller is configured to:

receive a first plurality of data bits;

store the first plurality of data bits in a respective subset of the first plurality of memory cells dependent upon a respective set of first programming levels;

evaluate a criterion of the received first plurality of data bits;

store the first plurality of data bits in a respective subset of the second plurality of memory cells in response to a determination that the first plurality of data bits meets the evaluated criterion;

receive a second plurality of data bits;

determine a respective set of second programming levels dependent upon the received second plurality of data bits; and

store the second plurality of data bits in the respective subset of the first plurality of memory cells dependent upon the respective set of second programming levels.

16. The system of claim 15 , wherein each memory cell of the first plurality of memory cells comprises a non-volatile memory cell.

17. The system of claim 15 , wherein to determine the respective set of second programming levels the memory controller is further configured to retrieve the stored first plurality of data bits responsive to a determination that the first plurality of data bits are stored in the respective subset of the first plurality of memory cells.

18. The system of claim 17 , wherein to retrieve the stored first plurality of data bits the memory controller is further configured to store the retrieved first plurality of data bits in a buffer.

19. The system of claim 15 , wherein to determine the respective set of second programming levels the memory controller is further configured to detect and correct errors in the retrieved first plurality of data bits.

20. The system of claim 15 , wherein to store the first plurality of data bits the memory controller is further configured to apply to the respective subset of the first plurality of memory cells a first sequence of programming pulses, wherein the first sequence of programming pulses are incrementally increased by a first step size, and wherein to store the second plurality of data bits the memory controller is further configured to apply to the respective subset of the second plurality of memory cells a second sequence of programming pulses, wherein the second sequence of programming pulses are incrementally increased by a second step size, wherein the second step size is less than the first step size.

Continuity (7)
Continuation 13566372 · Aug 3, 2012
Division 12186867 · Aug 6, 2008
Provisional Application 60985236 · Nov 4, 2007
Provisional Application 60970058 · Sep 5, 2007
Provisional Application 60954317 · Aug 7, 2007
Provisional Application 60954169 · Aug 6, 2007
Related Publication 20140157090A1 · Jun 5, 2014