US8996958B2

Method, device and computer program product for decoding a codeword

Summary by NHIP

Flash Memory Codeword Decoding

The method decodes codewords from multi-level flash memory when error counts exceed standard ECC correction limits. It generates modified codewords by increasing or decreasing symbol values to the next higher or lower level, then counts decoded occurrences to identify candidates with one more error than the maximum threshold t.

Claim Score by NHIP

Read claim 1, the broadest

Abstract

A method and apparatus for decoding a codeword received from a flash memory. The flash memory comprises multi-level flash memory cells, wherein each multi-level flash memory cell stores one symbol of the codeword. An ECC decoder is arranged for decoding the codeword into a decoded codeword and correcting a maximum number of errors. The method determines the number of errors in the codeword. If the number of errors is more than the maximum number of errors that the ECC decoder can correct, the method generates modified codewords, calculates a corrective effect of a modified codeword, and determines a decoded codeword based on the corrective effect.

US8996958B2, drawing sheet 1
Sheet 1 of 7

Term

Projected expiry 27 January 2031.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Projected expiry

18 claims: 3 independent, 15 dependent

  1. 1
    Broadest claimClaim Score 21, narrow(NHIP)A method for decoding a codeword (W) received from a flash memory comprising multi-level flash memory cells, wherein each multi-level flash memory cell stores one symbol (Si) of said codeword (W), and wherein an ECC decoder is arranged for decoding said codeword (W) into a decoded codeword (D) and correcting a maximum number (t) of errors, the method comprising:determining the number (e) of errors in said codeword W;if said number (e) of errors is more than the maximum number (t) of errors that said ECC decoder can correct, performing at least one of: generating a first modified codeword (W′) by increasing the value of a said symbol (Si) to the next higher value level;and generating a second modified codeword (W″) by decreasing the value of a said symbol (Si) to the next lower value level;calculating a corrective effect of at least one of the first and second modified codewords;and determining at least one of the decoded codeword (D) based on said corrective effect and an erasure of the codeword (W), wherein determining at least one decoded codeword (D) further comprises: decoding the modified codewords (W′, W″) and for all decoded modified codewords (D′, D″), counting the number (x(D)) of occurrences of the decoded modified codewords (D′, D″);and determining if there is one decoded modified codeword (D′, D″) whose number (x(D)) of occurrences is equal to one more than the maximum number (t) of errors, wherein the decoded modified codewords (D′, D″) are converted into hash values which are entered into a candidate hash map (H), together with the number (x(D)) of occurrences of said decoded modified codewords (D′, D″), wherein the entered hash values correspond only to candidate code words among the decoded modified codewords (D′, D″) that satisfy a criteria where a value difference between each symbol Si of the candidate codewords D′, D″ and the corresponding symbol Si of the received codeword W is not larger than 1.
  2. 14
    A decoding apparatus for decoding a codeword (W) received from a flash memory comprising multi-level flash memory cells, wherein each multi-level flash memory cell stores one symbol (Si) of said codeword (W), said decoding apparatus comprising:an ECC decoder for decoding said codeword (W) into a decoded codeword (D), and correcting a maximum number (t) of errors, an input port for receiving said codeword (W), a calculator for: determining a number (e) of errors in said codeword (W), if said number (e) of errors is more than the maximum number (t) of errors said decoder can correct, performing at least one of: generating a first modified codeword (W′) by increasing the value of a said symbol (Si) to the next higher value level, and generating a second modified codeword (W″) by decreasing the value of a said symbol (Si) to the next lower value level;calculating the corrective effect of the symbol modification steps ( 32 ′, 32 ″);determining at least one of the decoded codeword (D) based on said corrective effect and an erasure of the codeword;and an output port for outputting said decoded codeword (D), wherein determining at least one decoded codeword (D) further comprises: decoding the modified codewords (W′, W″) and for all decoded modified codewords (D′, D″), counting the number (x(D)) of occurrences of the decoded modified codewords (D′, D″);and determining if there is one decoded modified codeword (D′, D″) whose number (x(D)) of occurrences is equal to one more than the maximum number (t) of errors, wherein the decoded modified codewords (D′, D″) are converted into hash values which are entered into a candidate hash map (H), together with the number (x(D)) of occurrences of said decoded modified codewords (D′, D″), wherein the entered hash values correspond only to candidate code words among the decoded modified codewords (D′, D″) that satisfy a criteria where a value difference between each symbol Si of the candidate codewords D′, D″ and the corresponding symbol Si of the received codeword W is not larger than 1.
  3. 15
    A computer program product for decoding a codeword (W) received from a flash memory comprising multi-level flash memory cells, wherein each multi-level flash memory cell stores one symbol (Si) of the codeword (W), the computer program product comprising a computer-readable medium embodying program instructions executable by a processor to:determine a number (e) of errors in the codeword (W);if the number (e) of errors is more than a maximum number (t) of errors that an ECC decoder can correct, perform at least one of: generating a first modified codeword (W′) by increasing the value of said symbol (Si) to the next higher value level, and generating a second modified codeword (W″) by decreasing the value of said symbol (Si) to the next lower value level: calculate a corrective effect of at least one of the first and second modified codewords;and determine at least one of the decoded codeword (D) based on the corrective effect and an erasure of the codeword (W), wherein determining at least one decoded codeword (D) further comprises: decoding the modified codewords (W′, W″) and for all decoded modified codewords (D′, D″), counting the number (x(D)) of occurrences of the decoded modified codewords (D′, D″);and determining if there is one decoded modified codeword (D′, D″) whose number (x(D)) of occurrences is equal to one more than the maximum number (t) of errors, wherein the decoded modified codewords (D′, D″) are converted into hash values which are entered into a candidate hash map (H), together with the number (x(D)) of occurrences of said decoded modified codewords (D′, D″), wherein the entered hash values correspond only to candidate code words among the decoded modified codewords (D′, D″) that satisfy a criteria where a value difference between each symbol Si of the candidate codewords D′, D″ and the corresponding symbol Si of the received codeword W is not larger than 1.