IP Library Granted Patent US 10,956,083
Granted Patent B2
US 10,956,083 · App. 15/693,021 · Granted Mar 23, 2021

Method and system for input-output throttling to improve quality of service in a solid state drive

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 10,956,083
App. No.
15/693,021
Granted
Mar 23, 2021
Kind
B2
Abstract

A non-volatile memory (NVM) system receives host requests that each specify a memory operation to be performed by the NVM system, the specified memory operations including read operations and write operations, and performs a set of operations for each memory operation specified by a received host request. The set of operations performed for each such memory operation include: initiating performance the memory operation; determining a throttle interval for the memory operation in accordance with at least a first factor, corresponding to available space in a write cache of the non-volatile memory system, and a second factor, corresponding to a metric corresponding to prevalence of write operations in the memory operations specified by the received host requests; and returning to the host system a response associated with the memory operation at a time no earlier than a start time associated with the memory operation plus the determined throttle interval.

Claims (91)

1. A method of processing, in a non-volatile memory system, memory operations requested by a host system, comprising:

receiving host requests that each specify a memory operation to be performed by the non-volatile memory system, the specified memory operations including read operations and write operations; and

performing a set of operations for each memory operation specified by a received host request, including:

initiating performance of the memory operation;

determining a first factor corresponding to available space in a write cache of the non-volatile memory system;

determining a second factor corresponding to a write prevalence metric indicating a percentage of the memory operations specified by the received host requests that are the write operations;

determining a throttle interval for the memory operation from a throttle interval lookup table by:

determining a throttle index based on the second factor;

selecting a record of the throttle interval lookup table using the throttle index, wherein each record of the throttle interval lookup table comprises a throttle interval value for a read operation and a throttle interval value for a write operation; and

using the first factor to select a particular throttle interval value from the selected record; and

returning to the host system a response associated with the memory operation at time no earlier than a start time associated with the memory operation plus the determined throttle interval.

2. The method of claim 1 , wherein:

the first factor is determined in accordance with a weighted sum of two or more factors;

the two or more factors include the second factor and a third factor; and

the third factor corresponds to a ratio of non-host write operations to host write operations in the non-volatile memory system.

3. The method of claim 1 , wherein:

the throttle interval lookup table includes three or more records;

each record corresponds to a different value of the throttle index;

each record includes a plurality of throttle interval values; and

determining the throttle interval includes selecting, in accordance with the first factor, a throttle interval value from among the plurality of throttle interval values in a record of the throttle interval lookup table identified by the throttle index.

4. The method of claim 3 , wherein the throttle interval values included in the three or more records of the throttle interval lookup table include:

at least one value corresponding to a throttle interval of zero duration; and

a maximum value corresponding to a throttle interval of at least one millisecond.

5. The method of claim 1 , further comprising storing, for each memory operation specified by a received host request, a timestamp representing the start time associated with the memory operation.

6. The method of claim 1 , further comprising:

providing responses to requests specifying read operations that satisfy a predefined quality of service standard for read operations; and

providing responses to requests specifying write operations that satisfy a predefined quality of service standard for write operations.

7. The method of claim 1 , wherein:

responsive to the memory operation comprising a read operation, the response indicates that the read operation to non-volatile memory has been completed and that read data is ready to be sent to the host system; and

responsive to the memory operation comprising a write operation, the response indicates that write data has been stored in the write cache but not in non-volatile memory.

8. The method of claim 7 , wherein:

the read operation is completed before the time no earlier than the start associated with the memory operation plus the determined throttle interval; and

the write operation is completed after the time no earlier than the start time associated with the memory operation plus the determined throttle interval.

9. A non-volatile memory system, comprising:

non-volatile memory;

one or more processors; and

memory storing one or more programs that, when executed by the one or more processors, cause the non-volatile memory system to:

receive, from a host system, host requests that each specify a memory operation to be performed by the non-volatile memory system, the specified memory operations including read operations and write operations; and

perform a set of operations for each memory operation specified by a received host request, including:

initiating performance of the memory operation;

determining a first factor corresponding to available space in a write cache of the non-volatile memory system;

determining a second factor corresponding to a write prevalence metric indicating a percentage of the memory operations specified by the received host requests that are the write operations;

determining a throttle interval for the memory operation from a data structure by:

determining a throttle index based on the second factor;

selecting a record in the data structure using the throttle index, wherein each record of the data structure comprises a throttle interval value for a read operation and a throttle interval value for a write operation; and

using the first factor to select a particular throttle interval value from the selected record; and

delaying transmission to the host system of a response associated with the memory operation when a current time is less than a sum of a start time associated with the memory operation and the determined throttle interval.

10. The non-volatile memory system of claim 9 , wherein the non-volatile memory comprises a three-dimensional memory array.

11. The non-volatile memory system of claim 9 , wherein:

the first factor is determined in accordance with a weighted sum of two or more factors;

the two or more factors include the second factor and a third factor; and

the third factor corresponds to a ratio of non-host write operations to host write operations in the non-volatile memory system.

12. The non-volatile memory system of claim 11 , wherein the one or more programs are further configured to cause the non-volatile memory system to select one of a plurality of records based on the weighted sum of the two or more factors.

13. The non-volatile memory system of claim 12 , wherein:

the plurality of records comprise at least three records; and

the throttle interval values included in the plurality of records of the data structure include:

at least one value corresponding to a throttle interval of zero duration; and

a maximum value corresponding to a throttle interval of at least one millisecond.

14. The non-volatile memory system of claim 9 , wherein the one or more programs are further configured to cause the non-volatile memory system to store, for each memory operation specified by a received host request, a timestamp representing the start time associated with the memory operation.

15. The non-volatile memory system of claim 9 , wherein the one or more programs are further configured to cause the non-volatile memory system to:

provide responses to requests specifying read operations that satisfy a predefined quality of service standard for read operations; and

provide responses to requests specifying write operations that satisfy a predefined quality of service standard for write operations.

16. The non-volatile memory system of claim 15 , wherein the predefined quality of service standard for read operations comprises a read response time requirement that is less than a write response time requirement for the predefined quality of service standard for write operations.

17. The non-volatile memory system of claim 9 , wherein:

responsive to the memory operation comprising a read operation, the response indicates that the read operation to non-volatile memory has been completed and that read data is ready to be sent to the host system; and

responsive to the memory operation comprising a write operation, the response indicates that write data has been stored in the write cache but not in non-volatile memory.

18. The non-volatile memory system of claim 17 , wherein:

the read operation is completed before the time no earlier than the start time associated with the memory operation plus the determined throttle interval; and

the write operation is completed after the time no earlier than the start time associated with the memory operation plus the determined throttle interval.

19. A non-volatile memory system, comprising:

a non-volatile memory;

means for receiving host requests that each specify a memory operation to be performed by the non-volatile memory system, the specified memory operations including read operations and write operations; and

means for performing a set of operations for each memory specified by a received host request, including:

means for initiating performance of the memory operation;

means for determining a first factor corresponding to available space in a write cache of the non-volatile memory system;

means for determining a second factor corresponding to a write prevalence metric indicating a percentage of the memory operations specified by the received host requests that are the write operations;

means for determining a throttle interval for the memory operation from a throttle interval lookup table by:

determining a throttle index based on the second factor;

selecting a record of the throttle interval lookup table using the throttle index, wherein each record of the throttle interval lookup table comprises a throttle interval value for a read operation and a throttle interval value for a write operation; and

using the first factor to select a particular throttle interval value from the selected record; and

means for delaying transmission to a host system a response associated with the memory operation until a time no earlier than a start time associated with the memory operation plus the determined throttle interval.

20. The non-volatile memory system of claim 19 , wherein:

the means for determining a throttle interval is further configured to determine the first factor in accordance with a weighted sum of two or more factors;

the two or more factors include the second factor and a third factor; and

the third factor corresponds to a ratio of non-host write operations to host write operations in the non-volatile memory system.

21. The non-volatile memory system of claim 19 , wherein:

responsive to the memory operation comprising a read operation, the response indicates that the read operation to non-volatile memory has been completed and that read data is ready to be sent to the host system; and

responsive to the memory operation comprising a write operation, the response indicates that write data has been stored in the write cache but not in non-volatile memory.

22. The non-volatile memory system of claim 21 , wherein:

the read operation is completed before the time no earlier than the start time associated with the memory operation plus the determined throttle interval; and

the write operation is completed after the time no earlier than the start time associated with the memory operation plus the determined throttle interval.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2017
From: WONGSO, MERVYN; KARIA, RUSHANG; DAELLI, EDOARDO; SCHMIER, JACOB; CORBIN, KEVIN; CHINTADA, LAKSHMANA RAO
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 043466/0884 →