IP Library Granted Patent US 9,136,015
Granted Patent B2
US 9,136,015 · App. 13/908,041 · Granted Sep 15, 2015

Threshold adjustment using data value balancing in analog memory device

Inventors: Micha Anholt (Tel Aviv, IL); Eyal Gurgi (Petah-Tikva, IL); Barak Baum (Givatayim, IL); Moshe Neerman (Hadera, IL); Moti Teitel (Shoham, IL)
Assignee: Apple Inc.
G11C29/021G06F11/1072G11C11/56G11C11/5628G11C11/5642G11C29/028G11C29/42G11C16/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,136,015
App. No.
13/908,041
Granted
Sep 15, 2015
Kind
B2
Abstract

A method, in a memory including multiple analog memory cells, includes segmenting a group of the memory cells into a common section and at least first and second dedicated sections. Each dedicated section corresponds to a read threshold that is used for reading a data page to be stored in the group. Data to be stored in the group is jointly balanced over a union of the common section and the first dedicated section, and over the union of the common section and the second dedicated section, to create a balanced page such that for each respective read threshold an equal number of memory cells will be programmed to assume programming levels that are separated by the read threshold. The balanced page is stored to the common and dedicated sections, and the read thresholds are adjusted based on detecting imbalance between data values in readout results of the balanced page.

Claims (51)

1. A method, comprising:

receiving a plurality of data bits for storage in a memory, wherein the memory includes a plurality of pages, wherein each page of the plurality of pages includes a plurality of memory cells, and wherein each memory cell of the plurality of memory cells is configured to store multiple data bits;

determining a first number of bits to modify of a first subset of the plurality of data bits;

modifying the first number of bits of the first subset of the plurality of data bits to generate a first set of modified data bits;

determining a second number of bits to modify of a second subset of the plurality of data bits dependent upon values of a first portion of the first set of modified data bits and a value of at least one data bit of the second subset;

modifying the second number of bits of the second subset of the plurality of data bits to generate a second set of modified data bits;

determining a third number of bits to modify of a third subset of the plurality of data bits dependent upon values of a second portion of the first set of modified data bits and a value of at least one data bit of the third subset;

modifying the third number of bits of the third subset of the plurality of data bits to generate a third set of modified data bits; and

storing the first set of modified data bits, the second set of modified data bits, and the third set of modified data bits in respective first, second, and third subsets of the plurality of memory cells included in a given page of the plurality of pages.

2. The method according to claim 1 , wherein modifying the first number of bits of the first subset of the plurality of data bits comprises splitting the plurality of data bits into multiple significance bit pages, and modifying the first number of bits of a first significance bit page of the multiple significance bit pages.

3. The method according to claim 2 , wherein modifying the second number of bits of the second subset of the plurality of data bits comprises modifying the second number of bits of a second significance bit page of the multiple significance bit pages.

4. The method according to claim 3 , wherein modifying the third number of bits of the third subset of the plurality of data bits comprises modifying the third number of bits of a third significance bit page of the multiple significance bit pages.

5. The method according to claim 1 , wherein determining the second number of bits to modify of the second subset of the plurality of data bits comprises processing the second subset of the plurality of data bits after processing the first subset, wherein a decision on a value of the first number is fixed when processing the second subset.

6. The method according to claim 1 , wherein determining the first number of bits to modify of the first subset of the plurality of data bits comprises accumulating an imbalance measure over the first subset, wherein the imbalance measure corresponds to a number of data bits with a value of one minus a number of data bits with a value of zero.

7. The method according to claim 1 , wherein modifying the first number of bits of the first subset of the plurality of data bits comprises flipping values of the first number of bits of the first subset, and wherein storing the first set of modified data bits comprises storing flipping information that is indicative of the first number of bits.

8. The method according to claim 7 , further comprising recovering the plurality of data bits by flipping the values of the flipped bits a second time using the flipping information.

9. The method according to claim 7 , wherein flipping the values of the first number of bits comprises flipping a sequential set of the first number of bits.

10. The method according to claim 7 , further comprising segmenting the first subset of the plurality of data bits into a first plurality of sub-sections that are each selectively flipped as a unit, wherein flipping the bits comprises flipping a number of the first plurality of sub-sections.

11. The method according to claim 10 , further comprising segmenting the second subset of the plurality of data bits into a second plurality of sub-sections that are each selectively flipped as a unit, wherein modifying the second number of bits comprises checking, in parallel, multiple bit flipping alternatives in the third subset of the plurality of data bits.

12. An apparatus, comprising:

a memory comprising a plurality of pages, wherein each page of the plurality of pages includes a plurality of memory cells, and wherein each memory cell of the plurality of memory cells is configured to store multiple data bits; and

a memory controller configured to:

receive a plurality of data bits for storage in the memory;

determine a first number of bits to modify of a first subset of the plurality of data bits;

modify the first number of bits of the first subset of the plurality of data bits to generate a first set of modified data bits;

determine a second number of bits to modify of a second subset of the plurality of data bits dependent upon values of a first portion of the first set of modified data bits and a value of at least one data bit of the second subset

modify the second number of bits of the second subset of the plurality of data bits to generate a second set of modified data bits;

determine a third number of bits to modify of a third subset of the plurality of data bits dependent upon values of a second portion of the first set of modified data bits and a value of at least one data bit of the third subset;

modify the third number of bits of the third subset of the plurality of data bits to generate a third set of modified data bits; and

store the first set of modified data bits, the second set of modified data bits, and the third set of modified data bits in respective first, second, and third subsets of the plurality of memory cells included in a given page of the plurality of pages.

13. The apparatus according to claim 12 , wherein to modify the first number of bits of the first subset, the memory controller is further configured to:

split the plurality of data bits into multiple significance bit pages, and

modify the first number of bits of a first significance bit page of the multiple significance bit pages.

14. The apparatus according to claim 13 , wherein to modify the second number of bits of the second subset, the memory controller is further configured to modify the second number of bits of a second significance bit page of the multiple significance bit pages.

15. The apparatus according to claim 14 , wherein to modify the third number of bits of the third subset, the memory controller is further configured to modify the third number of bits of a third significance bit page of the multiple significance bit pages.

16. The apparatus according to claim 12 , wherein to determine the second number of bits to modify of the second subset, the memory controller is further configured to process the second subset of the plurality of data bits after processing the first subset, wherein a decision on a value of the first number is fixed when processing the second subset.

17. The apparatus according to claim 12 , wherein to modify the first number of bits of the first subset, the memory controller is further configured to flip values of the first number of bits of the first subset, and wherein to store the first set of modified data bits, the memory controller is further configured to store flipping information that is indicative of the first number of bits.

18. The apparatus according to claim 17 , wherein the memory controller is further configured to flip the values of a sequential set of the first number of bits starting with a first bit of the first subset.

19. The apparatus according to claim 17 , wherein the memory controller is further configured to segment the first subset of the plurality of data bits into a first plurality of sub-sections that are each selectively flipped as a unit.

20. An apparatus, comprising:

an interface for communicating with a memory, wherein the memory includes a plurality of pages, wherein each page of the plurality of pages includes a plurality of memory cells, and wherein each memory cell of the plurality of memory cells is configured to store multiple data bits; and

a processor configured to:

receive a plurality of data bits for storage in the memory;

determine a first number of bits to modify of a first subset of the plurality of data bits;

modify the first number of bits of the first subset of the plurality of data bits to generate a first set of modified data bits;

determine a second number of bits to modify of a second subset of the plurality of data bits dependent upon values of a first portion of the first set of modified data bits and a value of at least one data bit of the second subset

modify the second number of bits of the second subset of the plurality of data bits to generate a second set of modified data bits;

determine a third number of bits to modify of a third subset of the plurality of data bits dependent upon values of a second portion of the first set of modified data bits and a value of at least one data bit of the third subset;

modify the third number of bits of the third subset of the plurality of data bits to generate a third set of modified data bits; and

store the first set of modified data bits, the second set of modified data bits, and the third set of modified data bits in respective first, second, and third subsets of the plurality of memory cells included in a given page of the plurality of pages,

wherein each of the first set of modified data bits is programmed to one of a first pair of voltage thresholds, each of the second set of modified data bits is programmed to one of a second pair of voltage thresholds, different from the first pair and each of the third set of modified data bits is programmed to one of a third pair of voltage thresholds, different from the first pair and the second pair.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2013
From: ANHOLT, MICHA; GURGI, EYAL; BAUM, BARAK; NEERMAN, MOSHE; TEITEL, MOTI
To: APPLE INC.
Reel/Frame 030530/0557 →
Continuity (2)
Provisional Application 61815299 · Apr 24, 2013
Related Publication 20140325310A1 · Oct 30, 2014