US 9,811,414 B2
Method for managing data stored in flash memory and associated memory device and controller
Tsung-Chieh Yang, Hsinchu (TW); and Li-Sheng Kan, Hsinchu County (TW)
Assigned to Silicon Motion Inc., Hsinchu County (TW)
Filed by Silicon Motion Inc., Hsinchu County (TW)
Filed on Jul. 25, 2013, as Appl. No. 13/950,301.
Claims priority of provisional application 61/675,355, filed on Jul. 25, 2012.
Claims priority of application No. 102116649 A (TW), filed on May 10, 2013.
Prior Publication US 2014/0032993 A1, Jan. 30, 2014
Int. Cl. G06F 11/10 (2006.01); G06F 12/02 (2006.01); G06F 3/00 (2006.01); G06F 11/14 (2006.01)
CPC G06F 11/1068 (2013.01) [G06F 3/00 (2013.01); G06F 11/14 (2013.01); G06F 12/0246 (2013.01); G06F 2212/1032 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A method for managing data stored in a flash memory, wherein the flash memory comprises a plurality of blocks; the method comprising:
reading a program list from a memory within a memory controller for controlling the flash memory, instead of the flash memory, wherein the program list records information about programmed blocks of the plurality of blocks and sequence of write times of the programmed blocks, and the memory within the memory controller is different from the flash memory;
determining a first block of the plurality of blocks according to the program list, wherein the first block is a programmed block that has an earliest write time in the program list, and the first block is a starting block for a quality detection operation;
starting the quality detection operation to read the first block to detect quality of the first block to generate a first detection result;
referring to the first detection result to determine whether to move contents of the first block to a third block and delete the contents of the first block; and
when the contents of the first block are moved to the third block, deleting records associated with the first block in the program list, and adding records associated with the third block into the program list stored in the memory within the memory controller.