| CPC G06F 3/0659 (2013.01) [G06F 3/061 (2013.01); G06F 3/0634 (2013.01); G06F 3/0679 (2013.01)] | 20 Claims |

|
1. A method for configuring a current block to program data, performed by a processing unit, comprising:
dividing storage space of a flash module into a static area and a dynamic area, wherein each memory cell of an empty super block (SB) in the static area is only configured as a single level cell (SLC), and each memory cell of an empty SB in the dynamic area is configured as an SLC or a non-SLC;
entering a first mode to obtain a first empty SB from the dynamic area and erase the first empty SB to configure the first empty SB as a non-SLC block for preparing to program first user data into the non-SLC block;
in the first mode, monitoring a background garbage collection (GC) flag, a quantity of empty SBs in the static area, and a quantity of empty SBs in the dynamic area; and
entering a second mode from the first mode to obtain a second empty SB from the static area and erase the second empty SB to configure the second empty SB as an SLC block for preparing to program second user data into the SLC block in response that the background GC flag indicates that a background GC process has been performed, at least one empty SB is presented in the static area, and the quantity of empty SBs in the dynamic area equals or is less than a predefined quantity, wherein the predefined quantity is set to any integer ranging from 2 to 5.
|