IP Library Granted Patent US 11,698,757
Granted Patent B2
US 11,698,757 · App. 17/955,188 · Granted Jul 11, 2023

Memory system and method of controlling nonvolatile memory

Inventor: Shinichi Kanno (Ota, JP)
Assignee: Kioxia Corporation
G06F3/0659G06F3/0604G06F3/0652G06F3/0653G06F3/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 11,698,757
App. No.
17/955,188
Granted
Jul 11, 2023
Kind
B2
Abstract

According to one embodiment, when a command executed in a nonvolatile memory is an erase/program command and when a cumulative weight value satisfies a condition that a first input is selected as an input of high priority, a memory system suspends execution of the erase/program command by transmitting a suspend command to the nonvolatile memory. The memory system repeats executing an operation of starting the execution of one read command of the first input and an operation of updating the cumulative weight by using the weight associated with the read command until read command no longer exists in the first input or until the condition that the cumulative weight is larger than the first value is not satisfied, and resumes the execution of the suspended erase/program command.

Claims (39)

1. A memory system comprising:

a nonvolatile memory; and

a controller configured to control the nonvolatile memory, wherein

the controller is configured to:

select an input, based on a cumulative weight and from a first input and a second input, as an input of high priority, the first input being for accepting read commands to be transmitted to the nonvolatile memory, the second input being for accepting erase commands to be transmitted to the nonvolatile memory and program commands to be transmitted to the nonvolatile memory;

start execution of a command corresponding to the selected input of high priority, and update the cumulative weight by using a weight associated with the command for which execution is started;

when execution of a command of one of the first input and the second input is started, update the cumulative weight to a value obtained by subtracting a weight associated with the command of the one of the first input and the second input from the cumulative weight;

when execution of a command of the other of the first input and the second input is started, update the cumulative weight to a value obtained by adding a weight associated with the command of the other of the first input and the second input to the cumulative weight;

while a first condition that a current value of the cumulative weight is larger than a first value is satisfied, select the one of the first input and the second input as the input of high priority;

while a second condition that the current value of the cumulative weight is smaller than the first value is satisfied, select the other of the first input and the second input as the input of high priority;

when a command which is being executed in the nonvolatile memory is an erase command or a program command and when the current value of the cumulative weight satisfies a condition that the first input is selected as the input of high priority, of the first condition and the second condition, suspend execution of the erase command or the program command by transmitting a suspend command to the nonvolatile memory; and

execute an operation of starting execution of one read command of the first input and an operation of updating the cumulative weight by using a weight associated with the one read command until a read command no longer exists in the first input or until the cumulative weight does not satisfy the condition that the first input is selected as the input of high priority, wherein

the controller includes a command queue capable of storing one or more read commands to be transmitted to the nonvolatile memory, and

the controller is further configured to:

determine an upper limit of a number of read commands capable of being stored in the command queue, based on the current value of the cumulative weight.

2. The memory system of claim 1 , wherein

an upper limit value is set in the nonvolatile memory to a number of times of suspension allowed during the execution of the erase command or the program command or a total suspension time allowed during the execution of the erase command or the program command,

the controller is further configured to continue the execution of the erase command or the program command without suspending the execution of the erase command or the program command, irrespective of the current value of the cumulative weight, after the number of times of suspension allowed or the total suspension time allowed of the erase command or the program command which is being executed reaches the upper limit value.

3. The memory system of claim 2 , wherein

an interval time to be secured between a resumption of the execution of the erase command or the program command and a next suspension is further defined in the nonvolatile memory,

the controller is further configured to continue the execution of the erase command or the program command without suspending the execution of the erase command or the program command, irrespective of the current value of the cumulative weight, while an elapsed time from the resumption of the execution of the erase command or the program command is less than the interval time.

4. The memory system of claim 2 , wherein

the controller is further configured to:

when the current value of the cumulative weight satisfies the condition that the first input is selected as the input of high priority, set the upper limit of the number of read commands capable of being stored in the command queue to a number proportional to the current value of the cumulative weight; and

when the current value of the cumulative weight does not satisfy the condition that the first input is selected as the input of high priority, set the upper limit of the number of read commands capable of being stored in the command queue to 1.

5. The memory system of claim 4 , wherein

the controller is configured to, when a plurality of read commands are stored in the command queue, transmit the plurality of read commands stored in the command queue to the nonvolatile memory in an order of storing the plurality of read commands in the command queue or an order of respective weights associated with each of the plurality of read commands, respectively.

6. The memory system of claim 1 , wherein

the controller is further configured to:

when the current value of the cumulative weight satisfies the condition that the first input is selected as the input of high priority, set the upper limit of the number of read commands capable of being stored in the command queue to a number proportional to the current value of the cumulative weight; and

when the current value of the cumulative weight does not satisfy the condition that the first input is selected as the input of high priority, set the upper limit of the number of read commands capable of being stored in the command queue to 1.

7. The memory system of claim 6 , wherein

the controller is further configured to, when a plurality of read commands are stored in the command queue, transmit the plurality of read commands stored in the command queue to the nonvolatile memory in an order of storing the plurality of read commands in the command queue or an order of respective weights associated with each of the plurality of read commands, respectively.

8. The memory system of claim 1 , wherein

the nonvolatile memory is configured to execute the read command, the erase command, and the program command, and

a time required to execute the read command is shorter than a time required to execute the erase command or the program command.

9. The memory system of claim 1 , wherein

the controller is further configured to:

execute the operation of starting execution of the one read command of the first input and the operation of updating the cumulative weight by using the weight associated with the one read command until a read command no longer exists in the first input or until the cumulative weight does not satisfy the condition that the first input is selected as the input of high priority, and then resume execution of the suspended erase command or the suspended program command.

Priority Claims (1)
JP 2020-140065 · Aug 21, 2020 · national
Continuity (2)
Continuation 17202704 · Mar 16, 2021
Related Publication 20230014304A1 · Jan 19, 2023