US 12,107,603 B1
Adaptive read recovery for NAND flash memory devices
Nirmal Shende, Santa Clara, CA (US); and Nedeljko Varnica, San Jose, CA (US)
Assigned to Marvell Asia Pte Ltd, Singapore (SG)
Filed by Marvell Asia Pte Ltd, Singapore (SG)
Filed on Oct. 26, 2022, as Appl. No. 18/049,771.
Claims priority of provisional application 63/272,148, filed on Oct. 26, 2021.
Int. Cl. H03M 13/11 (2006.01); G06N 3/04 (2023.01); G06F 11/10 (2006.01); G06N 3/02 (2006.01); G06N 20/00 (2019.01); H03M 13/29 (2006.01); H03M 13/37 (2006.01); H03M 13/39 (2006.01); H03M 13/45 (2006.01); H04L 1/00 (2006.01)
CPC H03M 13/1108 (2013.01) [G06N 3/04 (2013.01); H03M 13/1125 (2013.01); G06F 11/1068 (2013.01); G06N 3/02 (2013.01); G06N 20/00 (2019.01); H03M 13/1105 (2013.01); H03M 13/2948 (2013.01); H03M 13/3707 (2013.01); H03M 13/3746 (2013.01); H03M 13/3927 (2013.01); H03M 13/458 (2013.01); H04L 1/005 (2013.01)] 22 Claims
OG exemplary drawing
 
1. A method of reading data read from a NAND Flash memory device, the method comprising:
decoding a set of data read from the NAND Flash memory device, using an initial set of hard bit thresholds;
when the decoding is unsuccessful, performing a read-retry operation that retries the decoding using, in order, each of a plurality of entries in a read-retry table of hard bit thresholds, stopping when decoding based on one of the entries is successful;
when the read-retry operation is unsuccessful, performing a deep retry operation using a set of log-likelihood ratios (LLRs) that vary in at least one of (a) values, and (b) symmetries, the deep retry operation comprising:
selecting a first operation for providing the set of LLRs that vary,
performing the first operation and determining decoder statistics based on the first operation,
in response to determining that the decoding performance is improving based on a change of the decoder statistics, continuing to use the first operation, and
in response to the decoding performance not improving, selecting and performing a second operation for providing the set of LLRs that vary; and
communicating the decoded data to a host.