# US 11,030,042 B2 · Flash memory apparatus and storage management method for flash memory

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

- Number: US 11,030,042 B2
- Document ID: US11030042B2
- Status: Granted
- Kind: B2
- Application number: 16/841,688
- Filed: 2020-04-07
- Published: 2020-07-23
- Granted: 2021-06-08
- Earliest claimed: 2016-04-27
- Assignees: Silicon Motion, Inc.
- Applicants: Silicon Motion, Inc.
- Inventors: Tsung-Chieh Yang; Hong-Jung Hsu; Jian-Dong Du
- Web page: https://patentgrep.com/patent/US11030042B2

## CPC

- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F 11/1072: {in multilevel memories}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G11C 11/5621: {using charge storage in a floating gate}
- G11C 11/5628: {Programming or writing circuits; Data input circuits}
- G11C 11/5642: {Sensing or reading circuits; Data output circuits}
- G11C 16/10: Programming or data input circuits
- G11C 16/26: Sensing or reading circuits; Data output circuits
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G11C 16/0483: {comprising cells having several storage transistors connected in series}
- G11C 2211/5641: Multilevel memory having cells with different number of storage levels
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

A flash memory method includes: classifying data into a plurality of groups of data; respectively executing error code encoding to generate first corresponding parity check code to store the groups of data and first corresponding parity check code into flash memory module as first blocks; reading out the groups of data from first blocks; executing error correction and de-randomize operation upon read out data to generate de-randomized data; executing randomize operation upon de-randomized data according to a set of seeds to generate randomized data; performing error code encoding upon randomized data to generate second corresponding parity check code; and, storing randomized data and second corresponding parity check code into flash memory module as second block; a cell of first block is used for storing data of first bit number which is different from second bit number corresponding to a cell of second block.

## Claims

### Claim 1

A flash memory apparatus, comprising:
a flash memory module comprising a plurality of storage blocks, a cell of each storage block can be used for storing data of a first bit number or data of a second bit number; and
a flash memory controller, configured for classifying data to be programmed into a plurality of groups of data, respectively executing error code encoding to generate a first corresponding parity check code to store the groups of data and the first corresponding parity check code into the flash memory module;
wherein the flash memory controller is further arranged for executing error correction and de-randomize operation upon the groups of data to generate de-randomized data, executing randomize operation upon the de-randomized data according to a set of seeds to generate randomized data, performing error code encoding upon the randomized data to generate a second corresponding parity check code, storing the randomized data and the second corresponding parity check code into the flash memory module.

### Claim 2 (depends on 1)

The flash memory apparatus of claim 1, wherein the cell of a block corresponding to the second bit number is arranged for storing data of 3 bits, and a second block is a triple-level-cell block, and the flash memory controller is arranged for classifying the data to be programmed into three groups of data to respectively program the three groups of data into three single-level-cell blocks.

### Claim 3 (depends on 1)

The flash memory apparatus of claim 1, wherein the groups of data are read from the flash memory module to be read out data, and the flash memory controller comprises:
a decoding circuit, configured for executing the error correction upon the read out data;
a de-randomizer, coupled to the decoding circuit, configured for performing the de-randomize operation upon the read out data to generate the de-randomized data;
a randomizer, coupled to the de-randomizer, configured for executing the randomize operation upon the de-randomized data according to the set of seeds to generate the randomized data; and
an encoding circuit, coupled to the randomizer, configured for performing the error code encoding upon the randomized data to generate the second corresponding parity check code.

### Claim 4

A flash memory storage management method used for a flash memory module having a plurality of storage blocks, a cell of each storage block can be used for storing data of a first bit number or data of a second bit number, and the flash memory storage management method comprises:
classifying data to be programmed into a plurality of groups of data;
respectively executing error code encoding to generate a first corresponding parity check code to store the groups of data and the first corresponding parity check code into the flash memory module;
executing error correction and de-randomize operation upon the groups of data to generate de-randomized data;
executing randomize operation upon the de-randomized data according to a set of seeds to generate randomized data;
performing error code encoding upon the randomized data to generate a second corresponding parity check code; and
storing the randomized data and the second corresponding parity check code into the flash memory module.

### Claim 5 (depends on 4)

The method of claim 4, wherein the cell of a block corresponding to the second bit number is arranged for storing data of 3 bits, and a second block is a triple-level-cell block, and the step of classifying the data to be programmed into the plurality of groups of data comprises: classifying the data to be programmed into three groups of data to respectively program the three groups of data into three single-level-cell blocks.

### Claim 6

A flash memory controller connected to a flash memory module having a plurality of storage blocks, a cell of each storage block can be used for storing data of a first bit number or data of a second bit number, the flash memory controller being configured for classifying data to be programmed into a plurality of groups of data, respectively executing error code encoding to generate a first corresponding parity check code to store the groups of data and the first corresponding parity check code into the flash memory module, and the flash memory controller comprises:
a decoding circuit, configured for executing error correction upon the groups of data which is read out by the flash memory controller from the flash memory module;
a de-randomizer, coupled to the decoding circuit, configured for performing a de-randomize operation upon the groups of data to generate de-randomized data;
a randomizer, coupled to the de-randomizer, configured for executing a randomize operation upon the de-randomized data according to a set of seeds to generate randomized data; and
an encoding circuit, coupled to the randomizer, configured for performing the error code encoding upon the randomized data to generate a second corresponding parity check code;
wherein the flash memory controller is arranged for storing the randomized data and the second corresponding parity check code into the flash memory module.

### Claim 7 (depends on 6)

The flash memory controller of claim 6, wherein the cell of a block corresponding to the second bit number is arranged for storing data of 3 bits, and a second block is a triple-level-cell block, and the flash memory controller is arranged for classifying the data to be programmed into three groups of data to respectively program the three groups of data into three single-level-cell blocks.
