IP Library › Granted Patent US 12,743,353
Granted Patent B2
US 12,743,353 · App. 19/091,418 · Granted Sep 22, 2026

Method and non-transitory computer-readable storage medium and apparatus for performing sudden power off recovery process

Inventors: Yu-Lin Yeh Liu (Miaoli County, TW); Szu-I Yeh (Hsinchu County, TW)
Assignee: SILICON MOTION, INC.
G06F11/2089G06F12/0253G06F2212/7205
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 12,743,353
App. No.
19/091,418
Granted
Sep 22, 2026
Kind
B2
Abstract

The invention introduces a method for performing a sudden power off recovery (SPOR) process, performed by a processing unit of a flash controller, to include: performing operations for the SPOR process after regaining power; and performing operations for a reduced garbage collection (GC) process. An execution time of the operations for the SPOR process and the reduced GC process is limited to a preset time that a host side waits for a completion of the SPOR process by the flash controller.

Claims (55)

1 . A method for performing a sudden power off recovery (SPOR) process, performed by a processing unit of a flash controller, comprising:

performing operations for the SPOR process after regaining power; and

performing operations for a reduced garbage collection (GC) process,

wherein an execution time of the operations for the SPOR process and the reduced GC process is limited to a preset time that a host side waits for a completion of the SPOR process by the flash controller.

2 . The method of claim 1 , wherein the reduced GC process comprises a loop that is repeatedly executed, and the loop comprises:

collecting user data of a plurality of valid pages from a source block;

determining whether a reading fail has occurred, or a first execution time of the reduced GC process has exceeded a predetermined time after collecting the user data of the valid pages from the source block;

exiting the SPOR process when the reading fail has occurred, or the first execution time of the reduced GC process has exceeded the predetermined time;

programming the user data of the valid pages into a physical page in a destination block when a reading is successful and the first execution time of the reduced GC process hasn't exceeded the predetermined time;

determining whether a second execution time of the reduced GC process has exceeded the predetermined time after programming the user data of the valid pages into the physical page in the destination block;

exiting the SPOR process when the second execution time of the reduced GC process has exceeded the predetermined time; and

executing a next iteration of the loop when the second execution time of the reduced GC process hasn't exceeded the predetermined time.

3 . The method of claim 2 , comprising:

starting a timer to count from 0 at a beginning of the reduced GC process,

wherein a counting value of the timer indicates the first execution time or the second execution time of the reduced GC process.

4 . The method of claim 2 , wherein the predetermined time is any time from 400 to 500 milliseconds (ms).

5 . The method of claim 1 , wherein an execution time of the SPOR process and the reduced GC process is limited to any time from 0.8 to 1 second.

6 . The method of claim 1 , wherein functions of a soft decoding process and a redundant array of independent disks (RAID) decoding process are disabled in the reduced GC process.

7 . The method of claim 6 , wherein, for user data of an erroneous page, the soft decoding process executes a bit flipping algorithm to generate new variable nodes according to soft bits corresponding to hard bits or variable nodes, and syndromes, and uses a formula to calculate soft bits of the new variable nodes; and the RAID decoding process generates corrected user data of the erroneous page according to user data of other pages, and data of a parity page in a page group.

8 . A non-transitory computer-readable storage medium having stored therein program code that, when loaded and executed by a processing unit of a flash controller, causes the processing unit to:

perform operations for a sudden power off recovery (SPOR) process after regaining power; and

perform operations for a reduced garbage collection (GC) process,

wherein an execution time of the operations for the SPOR process and the reduced GC process is limited to a preset time that a host side waits for a completion of the SPOR process by the flash controller.

9 . The non-transitory computer-readable storage medium of claim 8 , wherein the reduced GC process comprises a loop that is repeatedly executed, the loop comprises:

collecting user data of a plurality of valid pages from a source block;

determining whether a reading fail has occurred, or a first execution time of the reduced GC process has exceeded a predetermined time after collecting the user data of the valid pages from the source block;

exiting the SPOR process when the reading fail has occurred, or the first execution time of the reduced GC process has exceeded the predetermined time;

programing the user data of the valid pages into a physical page in a destination block when a reading is successful and the first execution time of the reduced GC process hasn't exceeded the predetermined time;

determining whether a second execution time of the reduced GC process has exceeded the predetermined time after programming the user data of the valid pages into the physical page in the destination block;

exiting the SPOR process when the second execution time of the reduced GC process has exceeded the predetermined time; and

executing a next iteration of the loop when the second execution time of the reduced GC process hasn't exceeded the predetermined time.

10 . The non-transitory computer-readable storage medium of claim 9 , wherein the program code that, when loaded and executed by the processing unit, causes the processing unit to:

start a timer to count from 0 at a beginning of the reduced GC process,

wherein a counting value of the timer indicates the first execution time or the second execution time of the reduced GC process.

11 . The non-transitory computer-readable storage medium of claim 9 , wherein the predetermined time is any time from 400 to 500 milliseconds (ms).

12 . The non-transitory computer-readable storage medium of claim 8 , wherein an execution time of the SPOR process and the reduced GC process is limited to any time from 0.8 to 1 second.

13 . The non-transitory computer-readable storage medium of claim 8 ,

wherein functions of a soft decoding process and a redundant array of independent disks (RAID) decoding process are disabled in the reduced GC process,

wherein, for user data of an erroneous page, the soft decoding process executes a bit flipping algorithm to generate new variable nodes according to soft bits corresponding to hard bits or variable nodes, and syndromes, and uses a formula to calculate soft bits of the new variable nodes; and the RAID decoding process generates corrected user data of the erroneous page according to user data of other pages, and data of a parity page in a page group.

14 . An apparatus for performing a sudden power off recovery (SPOR) process, comprising:

a processing unit, arranged operably to: perform operations for the SPOR process after regaining power; and perform operations for a reduced garbage collection (GC) process,

wherein an execution time of the operations for the SPOR process and the reduced GC process is limited to a preset time that a host side waits for a completion of the SPOR process by a flash controller.

15 . The apparatus of claim 14 , wherein the reduced GC process comprises a loop that is repeatedly executed, the loop comprises:

collecting user data of a plurality of valid pages from a source block;

determining whether a reading fail has occurred, or a first execution time of the reduced GC process has exceeded a predetermined time after collecting the user data of the valid pages from the source block;

exiting the SPOR process when the reading fail has occurred, or the first execution time of the reduced GC process has exceeded the predetermined time;

programming the user data of the valid pages into a physical page in a destination block when a reading is successful and the first execution time of the reduced GC process hasn't exceeded the predetermined time;

determining whether a second execution time of the reduced GC process has exceeded the predetermined time after programming the user data of the valid pages into the physical page in the destination block;

exiting the SPOR process when the second execution time of the reduced GC process has exceeded the predetermined time; and

executing a next iteration of the loop when the second execution time of the reduced GC process hasn't exceeded the predetermined time.

16 . The apparatus of claim 15 , wherein the processing unit is arranged operably to: start a timer to count from 0 at a beginning of the reduced GC process, and a counting value of the timer indicates the first execution time or the second execution time of the reduced GC process.

17 . The apparatus of claim 15 , wherein the predetermined time is any time from 400 to 500 milliseconds (ms).

18 . The apparatus of claim 14 , wherein an execution time of the SPOR process and the reduced GC process is limited to any time from 0.8 to 1 second.

19 . The apparatus of claim 14 , wherein the processing unit is arranged operably to: disable functions of a soft decoding process and a redundant array of independent disks (RAID) decoding process in the reduced GC process.

20 . The apparatus of claim 19 , wherein, for user data of an erroneous page, the soft decoding process executes a bit flipping algorithm to generate new variable nodes according to soft bits corresponding to hard bits or variable nodes, and syndromes, and uses a formula to calculate soft bits of the new variable nodes; and the RAID decoding process generates corrected user data of the erroneous page according to user data of other pages, and data of a parity page in a page group.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 27, 2025
From: YEH LIU, YU-LIN; YEH, SZU-I
To: SILICON MOTION, INC.
Reel/Frame 070643/0540 →
Priority Claims (1)
CN 202411732175.1 · Nov 29, 2024 · national
Continuity (1)
Related Publication 20260154167A1 · Jun 4, 2026
References Cited (9)
US 11194502B1 · Lin · 2021 [cited by applicant]
US 12149260B2 · Kuo et al. · 2024 [cited by applicant]
US 12210775B2 · Lee et al. · 2025 [cited by applicant]
US 20170177469A1 · Hashimoto · 2017 [cited by examiner]
US 20210109855A1 · Watt · 2021 [cited by examiner]
US 20230205461A1 · Lee et al. · 2023 [cited by applicant]
TW I748542B · 2021 [cited by applicant]
TW I804359B · 2023 [cited by applicant]
TW 202326440A · 2023 [cited by applicant]