IP Library Granted Patent US 12663944
Granted Patent B2
US 12663944 · App. 18/894,564 · Granted Jun 23, 2026

Method and non-transitory computer-readable storage medium and apparatus for controlling executions of input-output commands

Inventors: Ting-Chu Lee (Zhubei City, TW); Cheng-Yu Tsai (Kaohsiung City, TW)
Assignee: SILICON MOTION, INC.
G06F3/0659G06F3/0619G06F3/0679
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 12663944
App. No.
18/894,564
Granted
Jun 23, 2026
Kind
B2
Abstract

The invention introduces a method for controlling executions of input-output (I/O) commands, performed by a processing unit, which includes: obtaining a current temperature of a device side; fetching I/O commands from a command queue during a fetching time period, and executing the I/O commands to read user data from the flash module, and/or program user data into the flash module in response to the current temperature of the device side exceeding a threshold; calculating a length of an actual execution time period for the I/O commands, and calculating a length of a pause time period according to the length of the actual execution time period after the I/O commands are executed completely; and not fetching and executing any I/O command in the command queue during the pause time period.

Claims (107)

1 . A method for controlling executions of input-output (I/O) commands, performed by a processing unit, comprising:

obtaining a current temperature of a device side, wherein the device side comprises a flash controller and a flash module, and the flash controller is coupled to the flash module and comprises the processing unit;

fetching a plurality of I/O commands from a command queue during a fetching time period, and executing the plurality of I/O commands to read user data from the flash module, and/or program user data into the flash module in response to the current temperature of the device side exceeding a threshold;

calculating a length of an actual execution time period for the plurality of I/O commands, and calculating a length of a pause time period according to the length of the actual execution time period after the plurality of I/O commands are executed completely, wherein a calculated length of the pause time period is limited to a range of a shortest pause time period and a longest pause time period and is positively correlated with the length of the actual execution time period; and

not fetching and executing any I/O command in the command queue during the pause time period.

2 . The method of claim 1 , wherein the processing unit comprises a temperature sensor, and the temperature sensor is arranged operably to: measure a current temperature of the processing unit as the current temperature of the device side.

3 . The method of claim 1 , comprising:

querying the flash module through a flash interface (I/F) to obtain a current temperature of the flash module as the current temperature of the device side.

4 . The method of claim 1 , comprising:

providing a temperature compensation table comprising a plurality of records, wherein each record comprises a temperature range, and information about a preset fetching time period corresponding to the temperature range;

obtaining a record matching the current temperature of the device side from the temperature compensation table;

obtaining a length of the preset fetching time period from the matched record;

setting a fetching timer to count to the fetching time period according to the length of the preset fetching time period; and

stopping fetching any I/O command from the command queue in response to a signal indicating that the fetching timer has expired, which is received from the fetching timer.

5 . The method of claim 4 , wherein the actual execution time period of the plurality of I/O commands indicates a time interval starting from setting the fetching timer until executions of the plurality of I/O commands complete.

6 . The method of claim 1 , wherein the length of the pause time period is calculated by an equation:

TS

=

min

(

max

[

RT

*

Ratio

,

MIN_TS

]

,

MAX_TS

)

,

TS represents the length of the pause time period, min( ) represents a function for obtaining a minimum value from multiple values in round brackets, max[ ] represents a function for obtaining a maximum value from multiple values in square brackets, RT represents the length of the actual execution time period, Ratio represents a pause ratio, MIN_TS represents the shortest pause time period and MAX_TS represents the longest pause time period.

7 . The method of claim 6 , comprising:

providing a temperature compensation table comprising a plurality of records, wherein each record comprises a temperature range, and a pause ratio, a shortest pause time period and a longest pause time period corresponding to the temperature range;

obtaining a record matching the current temperature of the device side from the temperature compensation table; and

obtaining the pause ratio, the shortest pause time period and the longest pause time period of the equation from the matched record.

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

obtain a current temperature of a device side, wherein the device side comprises a flash controller and a flash module, and the flash controller is coupled to the flash module and comprises the processing unit;

fetch a plurality of I/O commands from a command queue during a fetching time period, and execute the plurality of I/O commands to read user data from the flash module, and/or program user data into the flash module in response to the current temperature of the device side exceeding a threshold;

calculate a length of an actual execution time period for the plurality of I/O commands, and calculate a length of a pause time period according to the length of the actual execution time period after the plurality of I/O commands are executed completely, wherein a calculated length of the pause time period is limited to a range of a shortest pause time period and a longest pause time period and is positively correlated with the length of the actual execution time period; and

not fetch and execute any I/O command in the command queue during the pause time period.

9 . The non-transitory computer-readable storage medium of claim 8 , wherein the processing unit comprises a temperature sensor, and the temperature sensor is arranged operably to: measure a current temperature of the processing unit as the current temperature of the device side.

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

query the flash module through a flash interface (I/F) to obtain a current temperature of the flash module as the current temperature of the device side.

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

provide a temperature compensation table comprising a plurality of records, wherein each record comprises a temperature range, and information about a preset fetching time period corresponding to the temperature range;

obtain a record matching the current temperature of the device side from the temperature compensation table;

obtain a length of the preset fetching time period from the matched record;

set a fetching timer to count to the fetching time period according to the length of the preset fetching time period; and

stop fetching any I/O command from the command queue in response to a signal indicating that the fetching timer has expired, which is received from the fetching timer,

wherein the actual execution time period of the plurality of I/O commands indicates a time interval starting from setting the fetching timer until executions of the plurality of I/O commands complete.

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

provide a temperature compensation table comprising a plurality of records, wherein each record comprises a temperature range, and a pause ratio, a shortest pause time period and a longest pause time period corresponding to the temperature range;

obtain a record matching the current temperature of the device side from the temperature compensation table; and

obtain the pause ratio, the shortest pause time period and the longest pause time period of the equation from the matched record.

13 . The non-transitory computer-readable storage medium of claim 8 , wherein the length of the pause time period is calculated by an equation:

TS

=

min

(

max

[

RT

*

Ratio

,

MIN_TS

]

,

MAX_TS

)

,

TS represents the length of the pause time period, min( ) represents a function for obtaining a minimum value from multiple values in round brackets, max[ ] represents a function for obtaining a maximum value from multiple values in square brackets, RT represents the length of the actual execution time period, Ratio represents a pause ratio, MIN_TS represents the shortest pause time period and MAX_TS represents the longest pause time period.

14 . An apparatus for controlling executions of input-output (I/O) commands, comprising:

a flash interface (I/F), coupled to a flash module; and

a processing unit, coupled to the flash I/F, arranged operably to: obtain a current temperature of a device side, wherein the device side comprises a flash controller and the flash module, and the flash controller is coupled to the flash module and comprises the processing unit and flash I/F; fetch a plurality of I/O commands from a command queue during a fetching time period, and execute the plurality of I/O commands to read user data from the flash module, and/or program user data into the flash module through the flash I/F in response to the current temperature of the device side exceeding a threshold; calculate a length of an actual execution time period for the plurality of I/O commands, and calculate a length of a pause time period according to the length of the actual execution time period after the plurality of I/O commands are executed completely, wherein a calculated length of the pause time period is limited to a range of a shortest pause time period and a longest pause time period and is positively correlated with the length of the actual execution time period; and not fetch and execute any I/O command in the command queue during the pause time period.

15 . The apparatus of claim 14 , wherein the processing unit comprises a temperature sensor, and the temperature sensor is arranged operably to: measure a current temperature of the processing unit as the current temperature of the device side.

16 . The apparatus of claim 14 , wherein the processing unit is arranged operably to: query the flash module through the flash I/F to obtain a current temperature of the flash module as the current temperature of the device side.

17 . The apparatus of claim 14 , comprises:

a random access memory (RAM), arranged operably to: store a temperature compensation table comprising a plurality of records, wherein each record comprises a temperature range, and information about a preset fetching time period corresponding to the temperature range,

wherein the processing unit is arranged operably to: obtain a record matching the current temperature of the device side from the temperature compensation table; obtain a length of the preset fetching time period from the matched record; set a fetching timer to count to the fetching time period according to the length of the preset fetching time period; and stop fetching any I/O command from the command queue in response to a signal indicating that the fetching timer has expired, which is received from the fetching timer.

18 . The apparatus of claim 17 , wherein the actual execution time period of the plurality of I/O commands indicates a time interval starting from setting the fetching timer until executions of the plurality of I/O commands complete.

19 . The apparatus of claim 14 , wherein the length of the pause time period is calculated by an equation:

TS

=

min

(

max

[

RT

*

Ratio

,

MIN_TS

]

,

MAX_TS

)

,

TS represents the length of the pause time period, min( ) represents a function for obtaining a minimum value from multiple values in round brackets, max[ ] represents a function for obtaining a maximum value from multiple values in square brackets, RT represents the length of the actual execution time period, Ratio represents a pause ratio, MIN_TS represents the shortest pause time period and MAX_TS represents the longest pause time period.

20 . The apparatus of claim 19 , comprises:

a random access memory (RAM), arranged operably to: store a temperature compensation table comprising a plurality of records, wherein each record comprises a temperature range, and a pause ratio, a shortest pause time period and a longest pause time period corresponding to the temperature range,

wherein the processing unit is arranged operably to: obtain a record matching the current temperature of the device side from the temperature compensation table; and obtain the pause ratio, the shortest pause time period and the longest pause time period of the equation from the matched record.