# US 8,788,905 B2 · Flash memory device error correction code controllers and related methods and memory systems

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,788,905 B2
- Document ID: US8788905B2
- Status: Granted
- Kind: B2
- Application number: 13/012,955
- Filed: 2011-01-25
- Published: 2011-05-19
- Granted: 2014-07-22
- Earliest claimed: 2007-01-08
- Assignees: Samsung Electronics Co., Ltd.
- Applicants: Chang-Duck Lee; Seok-won Heo; Si-Yung Park; Dong-Ryoul Lee
- Inventors: Chang-Duck Lee; Seok-won Heo; Si-Yung Park; Dong-Ryoul Lee
- Web page: https://patentgrep.com/patent/US8788905B2

## CPC

- G06F 11/1072: {in multilevel memories}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- H03M 13/15: Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes (H03M13/17 takes precedence)
- H03M 13/19: Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
- H03M 13/23: using convolutional codes, e.g. unit memory codes
- H03M 13/35: Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M 13/3715: {Adaptation to the number of estimated errors or to the channel state}
- G06F 12/0238: {Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory}
- G06F 13/1668: {Details of memory controller}
- H03M 13/1515: {Reed-Solomon codes}
- H03M 13/152: {Bose-Chaudhuri-Hocquenghem [BCH] codes}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)

## Abstract

An ECC controller for a flash memory device storing M-bit data (M: a positive integer equal to or greater than 2) includes an encoder and a decoder. The encoder generates first ECC data for input data to be stored in the flash memory device using a first error correction scheme and generates second ECC data for the input data using a second error correction scheme. The input data, the first ECC data, and the second ECC data are stored in the flash memory device. The decoder calculates the number of errors in data read from the flash memory device and corrects the errors in the read data using one of the first ECC data and the second ECC data selectively based on the number of the errors.

## Claims

### Claim 1

An error correction code (ECC) controller for a memory device having a memory cell array that stores M-bit data per memory cell of a main cell area of the memory cell array, M being a positive integer equal to or greater than 2, the ECC controller comprising:
an encoder that is configured to generate first ECC data in response to input data that is stored in the main cell area of the memory cell array using a first error correction scheme and that is configured to generate second ECC data in response to the input data using a second error correction scheme,
wherein the first error correction scheme operates at a higher speed than the second error correction scheme, and wherein the second error correction scheme is capable of correcting a greater number of errors than the first error correction scheme.

### Claim 2 (depends on 1)

The ECC controller of claim 1, wherein the encoder is configured to store the first ECC data and the second ECC data in the memory cell array.

### Claim 3 (depends on 2)

The ECC controller of claim 2, wherein the memory cell array further includes a spare area, and wherein the first ECC data and the second ECC data are stored in the spare area of the memory cell array.

### Claim 4 (depends on 3)

The ECC controller of claim 3, wherein the first and second ECC data are stored by storing 1-bit of data per memory cell.

### Claim 5 (depends on 1)

The ECC controller of claim 1, wherein the encoder comprises:
a first encoder that is configured to generate the first ECC data using the first error correction scheme; and
a second encoder that is configured to generate the second ECC data using the second error correction scheme.

### Claim 6 (depends on 5)

The ECC controller of claim 5, further comprising a decoder that is configured to correct errors in the input data when the input data is read from the memory device.

### Claim 7 (depends on 6)

The ECC controller of claim 6, wherein the decoder comprises:
a first decoder that is configured to correct errors in the read input data using the first ECC data;
a second decoder that is configured to correct errors in the read input data using the second ECC data.

### Claim 8 (depends on 6)

The ECC controller of claim 6, wherein the decoder is further configured to correct errors in the input data using the first ECC data when the input data contains less than a threshold number of detected errors and to correct errors in the input data using the second ECC data when the input data contains a number of detected errors equal to or more than the threshold number of detected errors.

### Claim 9 (depends on 1)

The ECC controller of claim 1, in combination with the flash memory device to form a memory system.

### Claim 10 (depends on 1)

The ECC controller of claim 1, wherein the encoder uses the same input data to generate the first ECC data and the second ECC data.

### Claim 11

A method for error correction encoding first data that is to be stored in a non-volatile memory device, the method comprising:
generating first error correction code (ECC) data for the first data using a first error correction scheme;
generating second error correction code (ECC) data for the first data using a second error correction scheme;
storing the first data, the first ECC data, and the second ECC in the non-volatile memory device;
reading the first data from the non-volatile memory device;
selecting one of the first ECC data or the second ECC data to correct the errors in the first data based on whether a number of errors in the first data is less than a threshold number of errors; and
correcting the errors in the first data using the selected one of the first ECC data or the second ECC data.

### Claim 12 (depends on 11)

The method of claim 11, wherein storing the first data, the first ECC data and the second ECC data in the non-volatile memory device comprises storing the first data in a first region of a memory cell array of the non-volatile memory device, where multiple bits of the first data are stored in at least some of the memory cells of the first region, and storing the first and second ECC data in a second region of the memory cell array, where a single bit of data is stored in each of the memory cells of the second region.

### Claim 13 (depends on 11)

The method of claim 11, wherein the first error correction scheme operates at a higher speed than the second error correction scheme, and wherein the second error correction scheme is capable of correcting a greater number of errors than the first error correction scheme.

### Claim 14 (depends on 11)

The method of claim 11, wherein the first error correction scheme is an error correction scheme that uses a Bose-Chaudhuri-Hocquenghem (BCH) code, and wherein the second error correction scheme is an error correction scheme that uses a Reed Solomon (RS) code.

### Claim 15

A memory system comprising:
a flash memory device that is configured to store M-bit data, M being a positive integer equal to or greater than 2; and
a memory controller that is configured to control the flash memory device, the memory controller comprising an encoder that is configured to generate first ECC data in response to input data that is stored in the flash memory device by using a first error correction scheme and that is configured to generate second ECC data in response to the input data by using a second error correction scheme, the input data, the first ECC data, and the second ECC data being stored in the flash memory device.

### Claim 16 (depends on 15)

The memory system of claim 15, the memory controller further comprising a decoder that is configured to correct errors in the input data when the input data is read from the flash memory device using one of the first ECC data or the second ECC data.

### Claim 17 (depends on 16)

The memory system of claim 16, wherein the encoder comprises:
a first encoder that is configured to generate the first ECC data in response to the input data by using the first error correction scheme; and
a second encoder that is configured to generate the second ECC data in response to the input data by using the second error correction scheme.

### Claim 18 (depends on 16)

The memory system of claim 16, wherein the decoder comprises:
a first decoder that is configured to correct the errors in the read input data using the first ECC data; and
a second decoder that is configured to correct the errors in the read input data using the second ECC data.

### Claim 19 (depends on 15)

The memory system of claim 15, wherein the first error correction scheme is an error correction scheme that uses a Bose-Chaudhuri-Hocquenghem (BCH) code, and the second error correction scheme is an error correction scheme that uses a Reed Solomon (RS) code.

### Claim 20 (depends on 15)

The memory system of claim 15, wherein a memory cell array of the flash memory device includes a data area and a spare area, and wherein the input data is stored in the data area, and wherein the first ECC data and the second ECC data are stored in the spare area.

### Claim 21 (depends on 15)

The memory system of claim 15, wherein the encoder uses the same input data to generate the first ECC data and the second ECC data.
