IP Library Granted Patent US 10,216,572
Granted Patent B2
US 10,216,572 · App. 15/230,075 · Granted Feb 26, 2019

Flash channel calibration with multiple lookup tables

Inventor: Guangming Lu (Irvine, CA)
Assignee: NGD Systems, Inc.
G06F11/1068G06F11/1012G11C11/5642G11C16/26G11C29/021G11C29/028H03M13/05H03M13/45G11C29/42G11C29/52
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 10,216,572
App. No.
15/230,075
Granted
Feb 26, 2019
Kind
B2
Abstract

A system and method for generating lookup tables for use in an adaptive multiple-read system for reading flash memory. Successive different attempts are made to decode previously stored data using error correction codes, the attempts differing, for example, with respect to the combination of raw data words used for each attempt, each raw data word having been obtained by reading a code word of data using a different word line voltage. When a decoding attempt succeeds, log likelihood ratios are calculated from counts of flipped bits, i.e., bits in the raw data read from the memory having a different value than the corresponding bits in the decoded data.

Claims (132)

1. A method, comprising:

calibrating a flash memory; and

performing an adaptive multi-read operation based on the calibration,

the calibrating comprising:

performing a first read operation on a first plurality of flash memory cells, at a first word line voltage, to form a first raw data word;

performing a second read operation on the first plurality of flash memory cells, at a second word line voltage, to form a second raw data word;

executing a first error correction code decoding attempt with a first set of one or more raw data words including the first raw data word;

determining that the first error correction code decoding attempt has succeeded; and

based on the determining that the first error correction code decoding attempt has succeeded:

generating,

from bit differences between

 the first set of one or more raw data words and

 one or more corresponding decoded data words generated by the first error correction code decoding attempt,

a first lookup table including:

 a first log likelihood ratio corresponding to a first range of word line voltages and

 a second log likelihood ratio corresponding to a second range of word line voltages; and

generating,

from bit differences between

 a second set of two or more raw data words and

 two or more corresponding decoded data words generated by the first error correction code decoding attempt,

a second lookup table including:

 a third log likelihood ratio corresponding to a third range of word line voltages;

 a fourth log likelihood ratio corresponding to a fourth range of word line voltages; and

 a fifth log likelihood ratio corresponding to a fifth range of word line voltages.

2. The method of claim 1 , wherein:

the third log likelihood ratio corresponds to the first range of word line voltages;

the third log likelihood ratio equals the first log likelihood ratio;

the fourth range of word line voltages is a sub-range of the second range of word line voltages; and

the fifth range of word line voltages is a sub-range of the second range of word line voltages.

3. The method of claim 1 , further comprising, based on the determining that the first error correction code decoding attempt has succeeded:

generating,

from bit differences between

a third set of three or more raw data words and

three or more corresponding decoded data words generated by the first error correction code decoding attempt,

a third lookup table including:

a sixth log likelihood ratio corresponding to a sixth range of word line voltages;

a seventh log likelihood ratio corresponding to a seventh range of word line voltages;

an eighth log likelihood ratio corresponding to an eighth range of word line voltages; and

a ninth log likelihood ratio corresponding to a ninth range of word line voltages.

4. The method of claim 1 , wherein the first error correction code decoding attempt is a soft decision input error correction code decoding attempt.

5. The method of claim 4 , wherein the first error correction code decoding attempt comprises a decoding attempt utilizing a low density parity check algorithm.

6. The method of claim 5 , further comprising:

performing a third read operation on a second plurality of flash memory cells, at the first word line voltage, to form a third raw data word;

performing a fourth read operation on the second plurality of flash memory cells, at the second word line voltage, to form a fourth raw data word;

executing a second error correction code decoding attempt with a third set of one or more raw data words including the third raw data word;

determining that the second error correction code decoding attempt has not succeeded; and

based on the determining that the first error correction code decoding attempt has not succeeded:

executing a third error correction code decoding attempt with one or more raw data words not including the third raw data word.

7. The method of claim 1 , further comprising:

performing a third read operation on a second plurality of flash memory cells, at the first word line voltage, to form a third raw data word;

performing a fourth read operation on the second plurality of flash memory cells, at the second word line voltage, to form a fourth raw data word;

executing a second error correction code decoding attempt with a third set of one or more raw data words including the third raw data word;

determining that the second error correction code decoding attempt has not succeeded; and

based on the determining that the first error correction code decoding attempt has not succeeded:

executing a third error correction code decoding attempt with one or more raw data words not including the third raw data word.

8. The method of claim 7 , wherein the second error correction code decoding attempt is a soft decision input error correction code decoding attempt.

9. The method of claim 7 , wherein the second error correction code decoding attempt is a hard decision input error correction code decoding attempt.

10. The method of claim 1 , further comprising:

performing a third read operation on a second plurality of flash memory cells, at the first word line voltage, to form a third raw data word;

performing a fourth read operation on the second plurality of flash memory cells, at the second word line voltage, to form a fourth raw data word;

executing a second error correction code decoding attempt with a third set of one or more raw data words including the third raw data word;

determining that the second error correction code decoding attempt has not succeeded; and

based on the determining that the first error correction code decoding attempt has not succeeded:

generating the first lookup table and the second lookup table from bit differences between the third set of one or more raw data words and a data set reconstructed from separately stored information.

11. The method of claim 1 , wherein the first log likelihood ratio is a logarithm of a ratio of

a probability of a threshold word line voltage, at which a flash memory cell transistor of a flash memory cell of the flash memory is configured to transition between an on state and an off state, being within the first range of word line voltages if the flash memory cell was most recently programmed with a logical 1, and

a probability of the threshold word line voltage being within the first range of word line voltages if the flash memory cell was most recently programmed with a logical 0.

12. A solid state drive, comprising:

a controller; and

flash memory,

the controller being to:

calibrate the flash memory, and

perform an adaptive multi-read operation based on the calibration,

the calibrating comprising:

performing a first read operation on a first plurality of flash memory cells of the flash memory, at a first word line voltage, to form a first raw data word;

performing a second read operation on the first plurality of flash memory cells, at a second word line voltage, to form a second raw data word;

executing a first error correction code decoding attempt with a first set of one or more raw data words including the first raw data word;

determining that a first error correction code decoding attempt has succeeded; and

based on the determining that the first error correction code decoding attempt has succeeded:

generating,

from bit differences between

 a second set of one or more raw data words and

 one or more corresponding decoded data words generated by the first error correction code decoding attempt,

a first lookup table including:

 a first log likelihood ratio corresponding to a first range of word line voltages and

 a second log likelihood ratio corresponding to a second range of word line voltages; and

generating,

from bit differences between

 a second set of two or more raw data words and

 two or more corresponding decoded data words generated by the first error correction code decoding attempt,

a second lookup table including:

 a third log likelihood ratio corresponding to a third range of word line voltages;

 a fourth log likelihood ratio corresponding to a fourth range of word line voltages; and

 a fifth log likelihood ratio corresponding to a fifth range of word line voltages.

13. The solid state drive of claim 12 , wherein the controller is further configured to, based on the determining that the first error correction code decoding attempt has succeeded,

generate,

from bit differences between

a third set of three or more raw data words and

three or more corresponding decoded data words generated by the first error correction code decoding attempt,

a third lookup table including:

a sixth log likelihood ratio corresponding to a sixth range of word line voltages;

a seventh log likelihood ratio corresponding to a seventh range of word line voltages;

an eighth log likelihood ratio corresponding to an eighth range of word line voltages; and

a ninth log likelihood ratio corresponding to a ninth range of word line voltages.

14. The solid state drive of claim 12 , wherein the first error correction code decoding attempt is a soft decision input error correction code decoding attempt.

15. The solid state drive of claim 14 , wherein the first error correction code decoding attempt comprises a decoding attempt utilizing a low density parity check algorithm.

16. The solid state drive of claim 15 , wherein the controller is further configured to:

perform a third read operation on a second plurality of flash memory cells, at the first word line voltage, to form a third raw data word;

perform a fourth read operation on the second plurality of flash memory cells, at the second word line voltage, to form a fourth raw data word;

execute a second error correction code decoding attempt with a third set of one or more raw data words including the third raw data word;

determine that the second error correction code decoding attempt has not succeeded; and

based on the determining that the first error correction code decoding attempt has not succeeded:

execute a second error correction code decoding attempt with one or more raw data words not including the first raw data word.

17. The solid state drive of claim 12 , wherein the controller is further configured to:

perform a third read operation on a second plurality of flash memory cells, at the first word line voltage, to form a third raw data word;

perform a fourth read operation on the second plurality of flash memory cells, at the second word line voltage, to form a fourth raw data word;

execute a second error correction code decoding attempt with a third set of one or more raw data words including the third raw data word;

determine that the second error correction code decoding attempt has not succeeded; and

based on the determining that the first error correction code decoding attempt has not succeeded:

execute a second error correction code decoding attempt with one or more raw data words not including the first raw data word.

18. The solid state drive of claim 17 , wherein the second error correction code decoding attempt is a soft decision input error correction code decoding attempt.

19. The solid state drive of claim 17 , wherein the second error correction code decoding attempt is a hard decision input error correction code decoding attempt.

20. The solid state drive of claim 12 , wherein the controller is further configured to:

perform a third read operation on a second plurality of flash memory cells, at the first word line voltage, to form a third raw data word;

perform a fourth read operation on the second plurality of flash memory cells, at the second word line voltage, to form a fourth raw data word;

execute a second error correction code decoding attempt with a third set of one or more raw data words including the third raw data word;

determine that the second error correction code decoding attempt has not succeeded; and

based on the determining that the first error correction code decoding attempt has not succeeded:

generate the first lookup table and the second lookup table from bit differences between the third set of one or more raw data words and a data set reconstructed from separately stored information.

21. The solid state drive of claim 12 , wherein the first log likelihood ratio is a logarithm of a ratio of

a probability of a threshold word line voltage, at which a flash memory cell transistor of a flash memory cell of the flash memory is configured to transition between an on state and an off state, being within the first range of word line voltages if the flash memory cell was most recently programmed with a logical 1, and

a probability of the threshold word line voltage being within the first range of word line voltages if the flash memory cell was most recently programmed with a logical 0.

Assignments (5)
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF CONVEYING PARTY PREVIOUSLY RECORDED AT REEL: 69518 FRAME: 243. ASSIGNOR(S) HEREBY CONFIRMS THE ASSET PURCHASE AGREEMENT. Recorded Jan 29, 2025
From: NGD SYSTEMS, INC.
To: NETLIST, INC.
Reel/Frame 070163/0719 →
ASSET PURCHASE AGREEMENT Recorded Dec 5, 2024
From: CMBG-FBC NGD SYSTEMS, LLC
To: NETLIST, INC.
Reel/Frame 069518/0243 →
SECURITY INTEREST Recorded Nov 3, 2021
From: NGD SYSTEMS, INC.
To: SILICON VALLEY BANK
Reel/Frame 058012/0289 →
MERGER AND CHANGE OF NAME Recorded Oct 20, 2016
From: NXGN DATA, INC.; NGD SYSTEMS, INC.
To: NGD SYSTEMS, INC.
Reel/Frame 040448/0657 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 11, 2016
From: LU, GUANGMING
To: NXGN DATA, INC.
Reel/Frame 039412/0284 →
Continuity (3)
Continuation In Part 14806063 · Jul 22, 2015
Provisional Application 62027683 · Jul 22, 2014
Related Publication 20170024279A1 · Jan 26, 2017