IP Library Granted Patent US 9,189,333
Granted Patent B2
US 9,189,333 · App. 14/064,524 · Granted Nov 17, 2015

Generating soft decoding information for flash memory error correction using hard decision patterns

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,189,333
App. No.
14/064,524
Granted
Nov 17, 2015
Kind
B2
Abstract

A flash memory controller having soft-decoding error correcting code (ECC) logic generates log likelihood ratio or similar ECC decoder soft input information from decision patterns obtained from reading data from the same portion of flash memory two or more times. Each decision pattern corresponds to a voltage region bordering one of the reference voltages. Each decision pattern represents a combination of flash memory bit value decisions for a cell voltage within the voltage region corresponding to the decision pattern when a corresponding combination of the reference voltages are used to read the cell. Numerical values are then computed in response to combinations of the flash memory bit value decisions represented by the decision patterns. The numerical values are provided to the soft-decoding ECC logic to serve as soft input information.

Claims (49)

1. A method for operation of a flash memory controller having soft-decoding error correcting code logic, comprising:

reading data from a portion of a flash memory in a plurality of instances using a plurality of different reference voltages, in each instance reading data from the portion of the flash memory using a different reference voltage from all other instances, the plurality of different reference voltages distributed over a voltage range, the voltage range substantially centered on an estimated mid-point between a pair of adjacent target cell voltages;

determining a plurality of decision patterns, each decision pattern corresponding to a voltage region bordering one of the reference voltages, each decision pattern representing a combination of flash memory decision values for a cell voltage within the voltage region corresponding to the decision pattern when a corresponding combination of the reference voltages are used to read the cell;

generating a plurality of numerical values, each numerical value computed in response to the combination of the flash memory decision values represented by each decision pattern; and

inputting the plurality of numerical values to the soft-decoding error correcting code logic.

2. The method of claim 1 , wherein generating a plurality of numerical values comprises computing a weighted sum of the flash memory decision values.

3. The method of claim 1 , wherein in computing the weighted sum each flash memory decision value of “1” has a weight of decimal “1” and each flash memory bit value decision of “0” has a weight of decimal “−1”.

4. The method of claim 1 , wherein the soft-decoding error correcting code logic comprises log likelihood ratio soft-decoding error correcting code logic.

5. The method of claim 1 , further comprising:

reading data from a portion of a flash memory in an initial instance; and

the soft-decoding error correcting code logic determining whether a read error occurred;

wherein the steps of reading data from a portion of a flash memory in a plurality of instances using a plurality of different reference voltages, determining a plurality of decision patterns, generating a plurality of numerical values, and inputting the plurality of numerical values to soft-decoding error correcting code logic are performed in response to a determination that a read error occurred in response to reading data from the portion of the flash memory in the initial instance.

6. The method of claim 5 , wherein:

if it is determined that a read error occurred, then the step of reading data from a portion of a flash memory in a plurality of instances using a plurality of different reference voltages further includes reading data in one or more additional instances following the initial instance and determining in each instance whether a read error occurred and further includes reading data in an nth instance using an nth reference voltage different from all other reference voltages, wherein n is an integer greater than two;

the step of determining whether a read error occurred includes determining whether a read error occurred in the nth instance;

if it is determined a read error occurred in the nth instance, then the step of determining a plurality of decision patterns includes determining an (n+1)th decision pattern corresponding to a voltage region bordering the nth reference voltage;

if it is determined a read error occurred in the nth, then the step of generating a plurality of numerical values includes determining instance an (n+1)th plurality of numerical values; and

if it is determined a read error occurred in the nth instance, then the step of inputting the plurality of numerical values to soft-decoding error correcting code logic of the flash memory controller includes inputting the (n+1)th plurality of numerical values to the soft-decoding error correcting code logic of the flash memory controller.

7. The method of claim 1 , wherein reading data from a portion of a flash memory in a plurality of instances using a plurality of different reference voltages comprises reading data using the estimated mid-point between two target cell voltages and reading data using incrementally higher and lower reference voltages from the estimated mid-point.

8. The method of claim 7 , wherein a voltage increment between adjacent reference voltages is fixed, whereby all voltage regions are equal to each other in width.

9. A flash memory controller, comprising:

a buffer memory;

a processing system comprising:

soft-decoding error correcting code logic;

read logic for reading data into the buffer memory from a portion of a flash memory in a plurality of instances using a plurality of different reference voltages, in each instance reading data from the portion of the flash memory using a different reference voltage from all other instances, the plurality of different reference voltages distributed over a voltage range, the voltage range substantially centered on an estimated mid-point between a pair of adjacent target cell voltages;

decision pattern logic for determining a plurality of decision patterns, each decision pattern corresponding to a voltage region bordering one of the reference voltages, each decision pattern representing a combination of flash memory decision values for a cell voltage within the voltage region corresponding to the decision pattern when a corresponding combination of the reference voltages are used to read the cell; and

numerical value generating logic for generating a plurality of numerical values, each numerical value computed in response to the combination of the flash decision values represented by each decision pattern and for providing the plurality of numerical values to the soft-decoding error correcting code logic.

10. The flash memory controller of claim 9 , wherein the numerical value generating logic computes a plurality of numerical values by computing a weighted sum of the flash memory decision values.

11. The flash memory controller of claim 9 , wherein in computing the weighted sum the numerical value generating logic assigns each flash memory decision value of “1” a weight of decimal “1” and assigns each flash memory decision value of “0” a weight of decimal “−1”.

12. The flash memory controller of claim 9 , wherein the soft-decoding error correcting code logic comprises log likelihood ratio soft-decoding error correcting code logic.

13. The flash memory controller of claim 9 , further comprising, further comprising read retry logic, wherein:

the soft-decoding error correcting code logic determines whether a read error occurred reading data from a portion of a flash memory in an initial instance;

the read retry logic causes the read logic, decision pattern logic and numerical value generating logic to read data, determine a plurality of decision patterns, compute a plurality of numerical values, and input the plurality of numerical values to the soft-decoding error correcting code logic in response to a determination by the soft-decoding error correcting logic that a read error occurred in response to reading data from the portion of the flash memory in the initial instance.

14. The flash memory controller of claim 13 , wherein:

if the soft-decoding error correcting logic determines that a read error occurred, then the read retry logic causes the read logic to read data in one or more additional instances following the initial instance and determine in each instance whether a read error occurred and further to read data in an nth time instance using an nth reference voltage different from all other reference voltages, wherein n is an integer greater than two;

the soft-decoding error correcting logic determines whether a read error occurred in the nth instance;

if the soft-decoding error correcting logic determines a read error occurred in the nth instance, then the decision pattern logic determines an (n+1)th decision pattern corresponding to a voltage region bordering the nth reference voltage;

if the soft-decoding error correcting logic determines a read error occurred in the nth instance, then the numerical value generating logic determines an (n+1)th plurality of numerical values; and

if the soft-decoding error correcting logic determines a read error occurred in the nth instance, then the numerical value generating logic inputs the (n+1)th plurality of numerical values to the soft-decoding error correcting code logic.

15. The flash memory controller of claim 9 , wherein the read logic reads data from a portion of a flash memory in a plurality of instances using a plurality of different reference voltages by reading data using the estimated mid-point between two target cell voltages and reading data using incrementally higher and lower reference voltages from the estimated mid-point.

16. The flash memory controller of claim 15 , wherein a voltage increment between adjacent reference voltages is fixed, whereby all voltage regions are equal to each other in width.

17. A computer program product for flash memory control by a flash memory controller having soft-decoding error correcting code logic, the computer program product comprising a computer-readable medium having stored therein in computer-executable non-transitory form instructions that, when executed on a processing system of the flash memory controller, cause the processing system to effect a method comprising:

reading data from a portion of a flash memory in a plurality of instances using a plurality of different reference voltages, in each instance reading data from the portion of the flash memory using a different reference voltage from all other instances, the plurality of different reference voltages distributed over a voltage range, the voltage range substantially centered on an estimated mid-point between a pair of adjacent target cell voltages;

determining a plurality of decision patterns, each decision pattern corresponding to a voltage region bordering one of the reference voltages, each decision pattern representing a combination of flash memory decision values for a cell voltage within the voltage region corresponding to the decision pattern when a corresponding combination of the reference voltages are used to read the cell;

generating a plurality of numerical values, each numerical value computed in response to the combination of the flash memory decision values represented by each decision pattern; and

inputting the plurality of numerical values to the soft-decoding error correcting code logic.

18. The computer program product of claim 17 , wherein generating a plurality of numerical values comprises computing a weighted sum of the flash memory decision values.

19. The computer program product of claim 17 , wherein in computing the weighted sum each flash memory bit value decision value of “1” has a weight of decimal “1” and each flash memory decision value of “0” has a weight of decimal “−1”.

20. The computer program product of claim 17 , wherein the soft-decoding error correcting code logic comprises log likelihood ratio soft-decoding error correcting code logic.

Assignments (5)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2015
From: LSI CORPORATION
To: SEAGATE TECHNOLOGY LLC
Reel/Frame 034773/0535 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS INCLUDED IN SECURITY INTEREST PREVIOUSLY RECORDED AT REEL/FRAME (032856/0031) Recorded Nov 6, 2014
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 034177/0257 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2013
From: WU, YUNXIANG; CHEN, ZHENGANG; HARATSCH, ERICH F.
To: LSI CORPORATION
Reel/Frame 031489/0534 →