IP Library › Granted Patent US 10,025,662
Granted Patent B2
US 10,025,662 · App. 15/876,211 · Granted Jul 17, 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,025,662
App. No.
15/876,211
Granted
Jul 17, 2018
Kind
B2
Abstract

A method used in a flash memory module having a plurality of storage blocks is disclosed. Each storage block can be used as a first block or a second block wherein a cell of the first block is arranged for storing data of 1 bit and a cell of the second block is arranged for storing data of at least 2 bits. The method includes: classifying data to be programmed into a plurality of groups of data; executing error code encoding to generate a corresponding parity check code to store the groups of data and the corresponding parity check code to at least one block of first blocks; and after completing storing the groups of data, performing an internal copy operation upon the groups of data and the corresponding parity check code from the at least one block of the first blocks to at least one second block.

Claims (28)

1. A flash memory apparatus, comprising:

a flash memory module comprising a plurality of storage blocks, each storage block can be used as a first block or a second block, a cell of the first block being arranged for storing data of 1 bit, a cell of the second block being arranged for storing data of at least 2 bits; and

a flash memory controller having a plurality of channels respectively connected to the flash memory module, the flash memory controller being configured for classifying data to be programmed into a plurality of groups of data, executing error code encoding to generate a corresponding parity check code to store the groups of data and the corresponding parity check code to at least one block of first blocks;

wherein after completing storing the groups of data, the flash memory module is arranged for performing an internal copy operation upon the groups of data and the corresponding parity check code from the at least one block of the first blocks to at least one second block.

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 at least one 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 plurality of first blocks are a plurality of single-level-cell (SLC) blocks, when programing a group of data to a single-level-cell block, the flash memory controller is arranged for sequentially organizing and classifying every (M) word lines of all word lines of the single-level-cell block as a group of word lines to generate a plurality of odd groups of word lines and a plurality of even groups of word lines, for respectively executing different (M) exclusive-OR encoding operations upon each word line within an odd group of word lines and each word line within an even group of word lines to generate (M) partial parity check codes of the each word line within the odd group of word lines and (M) partial parity check codes of the each word line within the even group of word lines, for programing and storing (M) partial parity check codes of each word line within the plurality of odd group of word lines to last data pages of last (M) word lines in the plurality of odd group of word lines, and for programing and storing (M) partial parity check codes of each word line within the plurality of even group of word lines to last data pages of last (M) word lines in the plurality of even group of word lines.

4. The flash memory apparatus of claim 1 , wherein when performing memory garbage collection, the flash memory controller is arranged for externally reading out and retrieving data from the plurality of first blocks or from the at least one second block for re-encoding and re-programming the read out and retrieved data.

5. The flash memory apparatus of claim 1 , wherein when programming data into the at least one second block and shutdown occurring, the flash memory module is arranged to discard data stored by the at least one second block and perform the internal copy operation to copy and program data from the plurality of first blocks into the at least one second block.

6. The flash memory apparatus of claim 1 , wherein when programming data into the plurality of first blocks, the flash memory controller is arranged to program data into the plurality of first blocks according to a randomizer seed rule of the at least one second block.

7. A flash memory storage management method used in a flash memory module having a plurality of storage blocks, each storage block can be used as a first block or a second block, a cell of the first block being arranged for storing data of 1 bit, a cell of the second block being arranged for storing 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;

executing error code encoding to generate a corresponding parity check code to store the groups of data and the corresponding parity check code to at least one block of first blocks; and

after completing storing the groups of data, performing an internal copy operation upon the groups of data and the corresponding parity check code from the at least one block of the first blocks to at least one second block.

8. The method of claim 7 , wherein the cell of the second block is arranged for storing data of 3 bits, and the at least one second block is a triple-level-cell block, and the step of classifying the data to be programmed into N 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.

9. The method of claim 7 , wherein the plurality of first blocks are a plurality of single-level-cell (SLC) blocks, and the executing step comprises:

when programing a group of data to a single-level-cell block, sequentially organizing and classifying every (M) word lines of all word lines of the single-level-cell block as a group of word lines to generate a plurality of odd groups of word lines and a plurality of even groups of word lines;

respectively executing different (M) exclusive-OR encoding operations upon each word line within an odd group of word lines and upon each word line within an even group of word lines to generate (M) partial parity check codes of the each word line within the odd group of word lines and (M) partial parity check codes of the each word line within the even group of word lines; and

programing and storing (M) partial parity check codes of each word line within the plurality of odd group of word lines to last data pages of last (M) word lines in the plurality of odd group of word lines, and for programing and storing (M) partial parity check codes of each word line within the plurality of even group of word lines to last data pages of last (M) word lines in the plurality of even group of word lines.

10. The method of claim 7 , further comprising:

when performing memory garbage collection, reading out and retrieving data from the plurality of first blocks or from the at least one second block for re-encoding and re-programming the read out and retrieved data.

11. The method of claim 7 , further comprising:

when programming data into the at least one second block and shutdown occurring, discarding data stored by the at least one second block and performing the internal copy operation to copy and program data from the plurality of first blocks into the at least one second block.

12. The method of claim 7 , further comprising:

when programming data into the plurality of first blocks, programing data into the plurality of first blocks according to a randomizer seed rule of the at least one second block.

13. A flash memory controller, comprising:

a plurality of channels respectively connected to a flash memory module having a plurality of storage blocks, each storage block can be used as a first block or a second block, a cell of the first block being arranged for storing data of 1 bit, a cell of the second block being arranged for storing data of at least 2 bits; and

an error correction code encoding circuit;

wherein the flash memory controller is configured for classifying data to be programmed into a plurality of groups of data, using the error correction code encoding circuit to executing error code encoding to generate a corresponding parity check code to store the groups of data and the corresponding parity check code to at least one block of first blocks; after completing storing the groups of data, the flash memory controller is configured for performing an internal copy operation upon the groups of data and the corresponding parity check code from the at least one block of the first blocks to at least one second block.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2018
From: YANG, TSUNG-CHIEH; HSU, HONG-JUNG; DU, JIAN-DONG
To: SILICON MOTION INC.
Reel/Frame 044683/0423 →
Priority Claims (1)
TW 106105508 A · Feb 20, 2017 · national
Continuity (3)
Continuation In Part 15497185 · Apr 25, 2017
Provisional Application 62328025 · Apr 27, 2016
Related Publication 20180143877A1 · May 24, 2018
Cited By (1)
US 12,399,638