IP Library Granted Patent US 8,788,779
Granted Patent B1
US 8,788,779 · App. 13/216,177 · Granted Jul 22, 2014

Non-volatile storage subsystem with energy-based performance throttling

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 8,788,779
App. No.
13/216,177
Granted
Jul 22, 2014
Kind
B1
Abstract

A non-volatile storage subsystem regulates energy consumption by controlling or “throttling” the rate at which memory operations are performed. During relatively idle periods in which few or no memory operations are performed, energy allotments or “counts” are accumulated to reflect unused energy. These accumulated energy counts may then be effectively allocated for use during bursts or other periods of relatively heavy memory activity, such that the memory operations are performed at a relatively high rate without causing a maximum average power consumption to be exceeded.

Claims (41)

1. A storage subsystem capable of regulating energy consumption by controlling memory operations, the storage subsystem comprising:

an array of non-volatile memory; and

a controller that accesses the array of non-volatile memory in response to commands received from a host system, said controller configured to maintain energy count data representing accumulated energy counts available for performing memory operations on the array of non-volatile memory, said energy count data reflecting at least (1) energy counts accrued over time, and (2) energy consumed by actual memory operations;

wherein memory operations comprise a first memory operation and a second memory operation, the first memory operation scheduled to be executed before the second memory operation; and

wherein the controller is further configured to, in response to determining that the first memory operation exceeds an energy count data threshold:

defer execution of the first memory operation; and

in response to determining that the second memory operation does not exceed the energy count data threshold, execute the second memory operation before executing the first memory operation,

wherein the energy count data threshold is based at least in part on the energy count data.

2. The storage subsystem of claim 1 , wherein the controller is capable of keeping track, via the energy count data, of energy counts accumulated during an idle period, and is capable of making the accumulated energy counts available during a burst memory access period such that energy consumption during the burst memory access period temporarily exceeds a target average energy consumption rate.

3. The storage subsystem of claim 1 , wherein the controller is configured to update the energy count data such that energy allotments are accrued at a rate corresponding to a target average energy consumption rate.

4. The storage subsystem of claim 3 , wherein the controller is further configured to use the energy count data to enable said target average energy consumption rate to be temporarily exceeded during burst sequences of memory operations.

5. The storage subsystem of claim 1 , wherein the controller maintains a single counter that represents accumulated energy counts, and is configured to increment and decrement the counter to reflect energy counts accrued over time and energy consumed by memory operations.

6. The storage subsystem of claim 1 , wherein the controller is configured to maintain a first counter that represents a cumulative number of energy counts accrued, and a second counter that represents a cumulative amount of energy used for memory operations.

7. The storage subsystem of claim 1 , wherein the controller is configured to adjust the energy count data by different amounts for different respective types of memory operations.

8. The storage subsystem of claim 1 , wherein the controller is configured to adjust the energy count data by different respective amounts for the following types of memory operations: (a) read, (b) program, (c) block erase.

9. The storage subsystem of claim 1 , wherein the array of non-volatile memory is an array of flash memory.

10. A method of regulating energy consumption in a storage subsystem that comprises a controller and an array of non-volatile memory, the method comprising:

maintaining energy count data representing accumulated energy counts available for performing memory operations on the array of non-volatile memory, wherein maintaining said energy count data comprises updating the energy count data to reflect (1) energy counts accrued over time, and (2) energy consumed by actual memory operations, and wherein memory operations comprise a first memory operation and a second memory operation, the first memory operation scheduled to be executed before the second memory operation;

in response to determining that the first memory operation exceeds an energy count data threshold:

deferring execution of the first memory operation; and

in response to determining that the second memory operation does not exceed the energy count data threshold, executing the second memory operation before executing the first memory operation,

wherein the energy count data threshold is based at least in part on the energy count data;

said method implemented by the controller.

11. The method of claim 10 , wherein the method is performed such that energy counts accumulated during an idle period are made available during a burst memory access period, enabling energy consumption during the burst memory access period to temporarily exceed a maximum average energy consumption rate.

12. The method of claim 10 , wherein the method comprises updating the energy count data such that energy counts are accrued at a rate corresponding to a maximum average energy consumption rate.

13. The method of claim 12 , wherein the method enables said maximum average energy consumption rate to be temporarily exceeded during burst sequences of memory operations.

14. The method of claim 10 , wherein maintaining the energy count data comprises maintaining a single counter that represents accumulated energy counts.

15. The method of claim 10 , wherein maintaining the energy count data comprises maintaining a first counter that represents a cumulative number of energy counts accrued, and a second counter that represents a cumulative amount of energy used for memory operations.

16. The method of claim 10 , wherein the method comprises adjusting the energy count data by different amounts for different respective types of memory operations.

17. The method of claim 10 , wherein the memory array comprises flash memory, and the method comprises adjusting the energy count data by different respective amounts for at least the following types of flash memory operations: (a) read, (b) program, (c) erase.

18. A method of regulating energy consumption in a storage subsystem that comprises a controller and an array of non-volatile memory, the method comprising:

tracking, with said controller, a quantity of energy allotments accumulated during a substantially idle period in which memory activity is below an average level, said energy allotments accrued at a rate corresponding to a target average energy consumption rate;

subsequently, using the accumulated energy allotments to enable a sequence of memory operations to be performed by the controller at a rate at which energy consumption exceeds the target average energy consumption rate, wherein memory operations comprise a first memory operation and a second memory operation, the first memory operation scheduled to be executed before the second memory operation;

in response to determining that the first memory operation exceeds an energy count allotment threshold:

deferring execution of the first memory operation; and

in response to determining that the second memory operation does not exceed the energy count allotment threshold, executing the second memory operation before executing the first memory operation,

wherein the energy count allotment threshold is based at least in part on (1) the accumulated energy allotments and (2) energy consumed by memory operations,

said method implemented by the controller.

19. The method of claim 18 , wherein the target average energy consumption rate is a maximum average energy consumption rate associated with a host connector.

20. The storage subsystem of claim 1 , further comprising a temperature sensor configured to sense a current temperature of an interface between the host system and the storage subsystem, wherein the controller is further configured to, in response to determining that the current temperature exceeds a temperature threshold, decrease a rate at which memory operations are performed.

21. The storage subsystem of claim 19 , wherein the controller is further configured to decrease the rate at which memory operations are performed by decreasing the energy count data threshold.

Assignments (13)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
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 038744 FRAME 0481 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0556 →
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045501/0714 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038744/0481 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038744/0281 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038722/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2011
From: HORN, ROBERT L.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 026823/0898 →