IP Library Granted Patent US 10,157,098
Granted Patent B2
US 10,157,098 · App. 15/997,674 · Granted Dec 18, 2018

Flash memory apparatus and storage management method for flash memory

Inventors: Tsung-Chieh Yang (Hsinchu, TW); Hong-Jung Hsu (Kaohsiung, TW); Jian-Dong Du (Taoyuan, TW)
Assignee: Silicon Motion Inc.
G06F11/1068G11C11/5621G11C16/10G11C16/26G11C29/52
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 10,157,098
App. No.
15/997,674
Granted
Dec 18, 2018
Kind
B2
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 (27)

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 1 bit or data of at least 2 bits; 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 as first blocks;

wherein the flash memory controller is further arranged for reading out the groups of data from the first blocks, executing error correction and de-randomize operation upon read out 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 as a second block; a cell of a first block is used for storing data of a first bit number which is different from a second bit number, a cell of the second block being arranged for storing data of the second bit number.

2. The flash memory apparatus of claim 1 , wherein the cell of the second block is arranged for storing data of 3 bits, and the 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.

3. The flash memory apparatus of claim 1 , wherein 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 readout 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.

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 1 bit or data of at least 2 bits, 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 as first blocks;

reading out the groups of data from the first blocks;

executing error correction and de-randomize operation upon read out 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 as a second block;

wherein a cell of a first block is used for storing data of a first bit number which is different from a second bit number, a cell of the second block being arranged for storing data of the second bit number.

5. The method of claim 4 , wherein the cell of the second block is arranged for storing data of 3 bits, and the 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.

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 1 bit or data of at least 2 bits, 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 as first blocks, and the flash memory controller comprises:

a decoding circuit, configured for executing error correction upon read out data which is read out by the flash memory controller from the first blocks;

a de-randomizer, coupled to the decoding circuit, configured for performing a de-randomize operation upon the read out 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 as a second block; a cell of a first block is used for storing data of a first bit number which is different from a second bit number, a cell of the second block being arranged for storing data of the second bit number.

7. The flash memory controller of claim 6 , wherein the cell of the second block is arranged for storing data of 3 bits, and the 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.

Priority Claims (1)
TW 106105508 A · Feb 20, 2017 · national
Continuity (4)
Continuation 15874895 · Jan 19, 2018
Continuation In Part 15497185 · Apr 25, 2017
Provisional Application 62328025 · Apr 27, 2016
Related Publication 20180285195A1 · Oct 4, 2018
Cited By (47)
US 12,197,390 US 12,204,413 US 12,204,768 US 12,204,788 US 12,212,624 US 12,216,903 US 12,229,402 US 12,229,437 US 12,235,743 US 12,236,117 US 12,242,425 US 12,253,922 US 12,253,941 US 12,271,264 US 12,271,359 US 12,277,106 US 12,282,799 US 12,293,111 US 12,314,131 US 12,314,163 US 12,314,170 US 12,314,183 US 12,340,107 US 12,341,848 US 12,366,972 US 12,373,289 US 12,373,340 US 12,379,854 US 12,393,340 US 12,393,353 US 12,430,053 US 12,430,059 US 12,439,544 US 12,475,041 US 12,481,442 US 12,487,920 US 12,511,239 US 12,524,309 US 12,547,317 US 12,561,093 US 12,572,421 US 12,619,469 US 12,682,949 US 12,687,973 US 12,699,512 US 12,717,709 US 12,724,670