Data storage devices (DSDs) have various power modes or states varying in energy consumption. Using lower power modes reduces the amount of energy consumed, which is particularly helpful for extended use of battery operated systems. Performance is typically reduced in the lower power states. Managing when to transition to lower power states can mitigate performance reduction. In addition, there is an energy cost to transitioning between power states.
The features and advantages of the implementations of the present disclosure will become more apparent from the detailed description set forth below when taken in conjunction with the drawings. The drawings and the associated descriptions are provided to illustrate implementations of the disclosure and not to limit the scope of what is claimed.
In the following detailed description, numerous specific details are set forth to provide a full understanding of the present disclosure. It will be apparent, however, to one of ordinary skill in the art that the various implementations disclosed may be practiced without some of these specific details. In other instances, well-known structures and techniques have not been shown in detail to avoid unnecessarily obscuring the various implementations.
While the description herein refers generally to a solid state memory such as a NAND flash memory, it is understood that other implementations can include one or more of various types of solid state memory such as Chalcogenide RAM (C-RAM), Phase Change Memory (PC-RAM or PRAM), Programmable Metallization Cell RAM (PMC-RAM or PMCm), Ovonic Unified Memory (OUM), Resistance RAM (RRAM), NAND memory (e.g., single-level cell (SLC) memory, multi-level cell (MLC) memory, or any combination thereof), NOR memory, EEPROM, Ferroelectric Memory (FeRAM), Magnetoresistive RAM (MRAM), other discrete non-volatile memory (NVM) chips, or any combination thereof.
A bus 105, which may be Serial ATA (SATA), Serially Attached SCSI (SAS), Peripheral Component Interconnect Express (PCIe), or other suitable protocol, links the DSD 100 to the host 102 which sends service requests. A system and data path control 110 manages data and commands to/from the DSD 100. The system and data path control 110 passes service requests from the host through the bus 105, and passes service requests (Nk) 115 to a command counter 120. The command counter 120 determines a command rate (λk) 125, which is passed to a workload estimator/filter 130. The workload estimator/filter 130 uses the command rate 125 and an average latency (avg[Lk]) 175 to determine an estimated command rate (est[λk]) 135, which is passed to a probability calculator 140. The probability calculator 140 uses the estimated command rate to determine a timer interpolation value (nk) 145, which is passed to a timer 160 of a power manager state machine 150. The timer interpolation value 145 corresponds to a time within a specified time interval when a probability of receiving no commands within the specified time interval will reach a threshold probability.
The power manager state machine 150 increases efficiency by keeping the hard disk 180 and the solid state memory 190 in the lower power states. Although keeping the hard disk 180 and the solid state memory 190 in the lowest power states would be ideal to reduce energy consumption, performance suffers due to the added overhead of transitioning into active (higher power) states. The timer 160 delays the transition into lower power states until a predicted time, based on a desired or prescribed probability of no commands arriving. The power manager state machine uses the timer 160 to control transitioning between states. Providing feedback based on a command rate and latency in performing commands improves the workload estimation.
In one embodiment, the power manager state machine 150 provides feedback by passing a latency (Lk) 155 to an average latency estimator 170. The average latency estimator 170 uses the latency 155 to determine the average latency 175, which is passed to the workload estimator/filter 130. The power manager state machine 150 can control the power states of the hard disk 180 and the solid state memory 190. The hard disk 180 and the solid state memory 190 exchange data and control signals 185 with the system and data path control 110. The hard disk 180 may be a disk-based storage medium such as one or more magnetic recording platters. The solid state memory 190 may be a flash-based storage medium. In other implementations, the DSD 100 may not have either the hard disk 180 or the solid state memory 190, or may have additional storage mediums controlled by the power manager state machine 150.
In one embodiment, the workload estimator/filter 130 uses the command rate 125 and the average latency 175 to determine the estimated command rate 135. In one implementation, the workload estimator/filter 130 may use Equation 1 below when λk is below a maximum rate, MaxR.
est[λk]=Bk*λk+(1−Bk)*est[λk-1] Equation 1
where Bk is a gain value such that Bk=1 when λk>=est[λk] (when command rate is increasing), and Bk=B2 otherwise (when command rate is decreasing), where B2 determines how fast the rate should decay.
In one implementation, B2 may be determined through one or more lookup tables based on avg[Lk]. For example, table 1 shows four discrete values, but in other implementations more or less values for B2 may be used.
The probability calculator 140 uses the estimated command rate 135 to determine the timer interpolation value 145. In one implementation the probability calculator 140 may use the following equation:
nk=−Ts/(α*dt)*(est[λk]*(Tbe/ln(P[0]))+1) Equation 2
where nk is set to 0 when nk<0 and nk is set to 1000 when nk>1000. In addition, a is set in Equation 2 so that α=B2/(1−B2) for relaxation control to meet a final value at n*dt=Ts˜1 second. In this example, dt can be a timer resolution such as 1 ms. Tbe is a break even time for the state transition. The break even time can represent an amount of time that would need to be spent at a lower power state to achieve an energy saving that is equal the amount of energy that will be needed to transition down to the lower state and transition up to an active state. P[0] is a target probability for state transition decisions, corresponding to a Poisson distribution value of no events occurring (e.g., that no service commands come in during the time interval). One example of such a target probability can be expressed as ln(P[0]=0.75)=−0.289.
In other implementations, the timer interpolation value 145 may be determined through one or more lookup tables, using similar inputs and parameters.
The average latency estimator 170 uses feedback from the power manager state machine 150 to determine the average latency 175. In one implementation, the average latency estimator 170 may use the following equation:
Avg[Lk]=A*Lk+(1−A)*Avg[Lk-1] Equation 3
where Lk=0 for no transition back to an active power state, Lk=lx0, for a resume latency for a state transition, and where A is a weight value between 0 and 1 inclusive, such as 0.5 to provide an average.
The system 215 may be a single server queue. The service requestor 220 may be a host which requests service, i.e. data reads or writes, from the DSD subsystem 210. The DSD subsystem 210 may be a subsystem which handles power management of a DSD, such as a solid state drive (SSD), solid state hybrid drive (SSHD), or a hard disk drive (HDD), and may be implemented as a logic in a memory connected to a controller. The service queue 230 is a queue of service requests from the service requestor 220. The service queue 230 may be a queue as known in the art, such as a first-in-first-out (FIFO) implemented in a memory of the DSD subsystem 210. The service provider 240 performs the requested services from the service queue 230. The workload predictor/estimator 250 predicts or estimates the workload, which corresponds to an expected size of the service queue 230 within a specified period of time, such as 1 second. The power manager 260 issues commands to manage power settings and/or consumption in the DSD subsystem 210.
The system 215 may operate with the service requestor 220 issuing service requests, which are saved in the service queue 230. The service queue 230 provides the service requests to the service provider 240, which fulfills the requests as they are received from the service queue 230.
The DSD subsystem 210 includes power management features. The service requestor 220 further provides previous information on the workload or service requests to the workload predictor/estimator 250. Based on the previous information, the workload predictor/estimator 250 provides a partial observation of a state of the service requestor 220 to the power manager 260. With this partial state of the service requestor 220 as well as a current state of the service queue 230, the power manager 260 then issues commands or otherwise controls the service provider 240 to efficiently manage energy consumption. For example, the power manager 260 may command the DSD to enter a lower power state when no service requests are expected within a specified period of time. However, the workload predictor/estimator 250 receives input from only the service requestor 220 and may perform better if it received feedback from the system.
The workload curve 280 may represent a real-world limit or ideal power-performance curve for a system, such as the system 215. The system may choose between two different timers, as depicted by the first timer curve 290 and the second timer curve 295, although in other implementations more or less timers may be used. Both the first timer curve 290 and the second timer curve 295 show that the system generally stays in one mode, such as “green,” before quickly transitioning to the other extreme, “perf.” Increasing energy consumption without reducing latency leads to a loss of efficiency. In other words, efficiency may be increased by having a timer curve more closely follow the workload curve 280.
The state diagram 400 illustrates a simplified logic of how a controller, such as controller 104, determines whether to change states. However, the state diagram 400 does not describe the timers used between state changes, which will be discussed further below.
When in the active state 410, the controller determines whether the service queue is empty (SQ=0), and whether the probability P[0] that no events (i.e., 0 service requests) will occur in the time period is greater than a threshold probability (X). Even if the service queue is empty, the controller may stay in the active state 410 if the probability of an event occurring is greater than the threshold probability. However, if the service queue is empty and there is sufficient probability that no events will occur, the controller transitions to the standby state 420.
The controller will transition back to the active state 410 if the service queue is not empty. Otherwise, the controller will again check the probability that 0 events will occur. If the probability of 0 events is below the threshold probability, X, the controller will stay in the standby state 420, for faster transition back to the active state 410 (as compared to the off state 430). If the service queue is empty and the probability of 0 events exceeds the threshold probability, the controller transitions to the off state 430.
If the service queue is no longer empty, the controller will transition back to the active state 410. If the service queue remains empty, the controller will stay in the off state 430.
When in the active state 460, the controller determines whether the service queue is empty (SQ=0), and whether the probability (P[0]) that 0 events (service requests) will occur in the time period is greater than a threshold probability (X). Even if the service queue is empty, the controller will stay in the active state 460 if the probability of an event occurring is greater than the threshold probability. However, if the service queue is empty and there is sufficient probability that no events will occur, the controller transitions to the idle state 470.
The controller will transition back to the active state 460 if the service queue is not empty. Otherwise, the controller will check the probability that 0 events will occur. If the probability of 0 events is less than the threshold probability, the controller will stay in the idle state 470, for faster transition back to the active state 460 (as compared to the standby state 480). If the service queue is empty and the probability of 0 events exceeds the threshold probability, the controller transitions to the standby state 480.
If the service queue is no longer empty, the controller will transition back to the active state 460. If the service queue remains empty, the controller will stay in the standby state 480.
The counter value may be set based on the appropriate curve for a given break even time. For example, looking at the third curve 553 with a break even time of 0.5 seconds, if 85% probability is the threshold, then the counter may be set to approximately 0.5 seconds where the third curve 553 reaches 0.850. By setting the counter to 0.5 seconds, the power manager state machine 150 waits for the counter to expire before switching to a lower power state. If no commands are received by then, the power manager state machine 150 assumes it can safely transition to the lower power state. In other words, the power manager state machine 150 waits until a sufficiently high probability of receiving no commands is reached before transitioning to a lower power state. If the curve does not intersect the threshold probability, then the power manager state machine 150 will wait for the next time interval. Shorter break even times and longer times since the last estimate tend to reduce this delay in switching states.
The following description primarily traces through the example curve 640 with a break even time of 0.1 seconds. From 0 to 4 seconds, the estimator curve 630 is high, although relaxing. Accordingly, the timer is set at a value 602 of 1000, which may be a maximum timer value. This is done for all the curves with different break even times, including curve 640. Because no state transitions will occur in this time interval, the timer 160 may be set to the maximum to wait out the entire interval.
After three intervals pass, the timer is set to a value 604, which may also be the maximum timer value. However, at the next time interval, the estimator curve 630 has relaxed enough that if the current state transition had a break even time of 0.1 seconds (follow curve 640), the timer 160 would be set to a value 605. The value 605 may be 390. The timer 160 waits 0.390 seconds. If no commands arrived during that 0.390 second time period, the power manager state machine 150 transitions to a lower power state. On subsequent intervals, the timer 160 may be set to a value 614 of 0, a value 616 of 0, a value 618 of 0, a value 620 of 0, and a value 622 of zero. In other words, the timer 160 is not used. With a different state transition, the break even time may change.
Moving onto the next curve 650 when the break even time is 0.2 seconds, the timer 160 is set to a value 606 of 1000, at the fifth interval. At the next interval, the timer 160 is set to a value 607, following the second curve 650. The value 607 may also be 390, meaning the power manager state machine 150 waits for the timer 160 to expire after 0.390 seconds before transitioning to a lower power state if no commands have arrived. On subsequent intervals, the timer 160 may be set to the value 616, the value 618, and so on.
As the break even times become longer, the amount of time waited before transitioning to a lower power state generally increases, such as increasing the number of intervals waited before assigning a timer value, and increasing the timer value. At a break even time of 0.5 seconds, the timer 160 is set to a value 608, which may be 1000, at the sixth interval. Following the third curve 660, at the next interval the timer 160 is set to a value 609, which may be 730. In other words, the power manager state machine 150 waits 0.730 seconds before transitioning to a lower power state. With a break even time of 1 second, the timer 160 may be set to a value 610, which may be 1000, at the seventh interval. Following the fourth curve 670, at the next interval the timer 160 is set to a value 611, which may be 730. With a break even time of 2 seconds, the timer 160 may be set to a value 612, which may be 1000, at the eighth interval. Following the fifth curve 680, at the next interval the timer 160 is set to a value 613, which may be 730. After the state transition, the timer 160 may be accordingly set to 0 values, such as the value 618, the value 620, and/or the value 622.
In
Those of ordinary skill in the art will appreciate that the various illustrative logical blocks, modules, and processes described in connection with the examples disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. Furthermore, the foregoing processes can be embodied on a computer readable medium which causes a processor or computer to perform or execute certain functions.
To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, and modules have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Those of ordinary skill in the art may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
The various illustrative logical blocks, units, modules, and controllers described in connection with the examples disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
The activities of a method or process described in connection with the examples disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. The steps of the method or algorithm may also be performed in an alternate order from those provided in the examples. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable media, an optical media, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an Application Specific Integrated Circuit (ASIC).
The foregoing description of the disclosed example implementations is provided to enable any person of ordinary skill in the art to make or use the implementations in the present disclosure. Various modifications to these examples will be readily apparent to those of ordinary skill in the art, and the principles disclosed herein may be applied to other examples without departing from the spirit or scope of the present disclosure. The described implementations are to be considered in all respects only as illustrative and not restrictive and the scope of the disclosure is, therefore, indicated by the following claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
This application claims the benefit of U.S. Provisional Application No. 61/871,809, filed on Aug. 29, 2013, which is hereby incorporated by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
5517649 | McLean | May 1996 | A |
5666538 | DeNicola | Sep 1997 | A |
5682273 | Hetzler | Oct 1997 | A |
5774292 | Georgiou | Jun 1998 | A |
5905901 | Klein | May 1999 | A |
5913067 | Klein | Jun 1999 | A |
5954820 | Hetzler | Sep 1999 | A |
6845456 | Menezes et al. | Jan 2005 | B1 |
6856556 | Hajeck | Feb 2005 | B1 |
6892313 | Codilian et al. | May 2005 | B1 |
7126857 | Hajeck | Oct 2006 | B2 |
7206948 | Brauer | Apr 2007 | B2 |
7231198 | Loughran | Jun 2007 | B2 |
7254721 | Tobias et al. | Aug 2007 | B1 |
7275166 | Kaiju et al. | Sep 2007 | B2 |
7425810 | Hobbet et al. | Sep 2008 | B2 |
7430136 | Merry, Jr. et al. | Sep 2008 | B2 |
7447807 | Merry et al. | Nov 2008 | B1 |
7502256 | Merry, Jr. et al. | Mar 2009 | B2 |
7509441 | Merry et al. | Mar 2009 | B1 |
7552347 | Schutte | Jun 2009 | B2 |
7596643 | Merry, Jr. et al. | Sep 2009 | B2 |
7647513 | Tobias et al. | Jan 2010 | B2 |
7653778 | Merry, Jr. et al. | Jan 2010 | B2 |
7685337 | Merry, Jr. et al. | Mar 2010 | B2 |
7685338 | Merry, Jr. et al. | Mar 2010 | B2 |
7685374 | Diggs et al. | Mar 2010 | B2 |
7733712 | Walston et al. | Jun 2010 | B1 |
7765373 | Merry et al. | Jul 2010 | B1 |
7856563 | Sade | Dec 2010 | B1 |
7898855 | Merry, Jr. et al. | Mar 2011 | B2 |
7912991 | Merry et al. | Mar 2011 | B1 |
7936603 | Merry, Jr. et al. | May 2011 | B2 |
7962792 | Diggs et al. | Jun 2011 | B2 |
8078918 | Diggs et al. | Dec 2011 | B2 |
8090899 | Syu | Jan 2012 | B1 |
8095851 | Diggs et al. | Jan 2012 | B2 |
8108692 | Merry et al. | Jan 2012 | B1 |
8122185 | Merry, Jr. et al. | Feb 2012 | B2 |
8127048 | Merry et al. | Feb 2012 | B1 |
8135903 | Kan | Mar 2012 | B1 |
8151020 | Merry, Jr. et al. | Apr 2012 | B2 |
8161227 | Diggs et al. | Apr 2012 | B1 |
8166245 | Diggs et al. | Apr 2012 | B2 |
8243525 | Kan | Aug 2012 | B1 |
8254172 | Kan | Aug 2012 | B1 |
8261012 | Kan | Sep 2012 | B2 |
8286018 | Chang | Oct 2012 | B2 |
8296625 | Diggs et al. | Oct 2012 | B2 |
8312207 | Merry, Jr. et al. | Nov 2012 | B2 |
8312214 | English | Nov 2012 | B1 |
8316176 | Phan et al. | Nov 2012 | B1 |
8341339 | Boyle et al. | Dec 2012 | B1 |
8375151 | Kan | Feb 2013 | B1 |
8392635 | Booth et al. | Mar 2013 | B2 |
8397107 | Syu et al. | Mar 2013 | B1 |
8407449 | Colon et al. | Mar 2013 | B1 |
8423722 | Deforest et al. | Apr 2013 | B1 |
8433858 | Diggs et al. | Apr 2013 | B1 |
8443167 | Fallone et al. | May 2013 | B1 |
8447920 | Syu | May 2013 | B1 |
8458435 | Rainey, III et al. | Jun 2013 | B1 |
8478930 | Syu | Jul 2013 | B1 |
8489854 | Colon et al. | Jul 2013 | B1 |
8503237 | Horn | Aug 2013 | B1 |
8521972 | Boyle et al. | Aug 2013 | B1 |
8549236 | Diggs et al. | Oct 2013 | B2 |
8583835 | Kan | Nov 2013 | B1 |
8601311 | Horn | Dec 2013 | B2 |
8601313 | Horn | Dec 2013 | B1 |
8612669 | Syu et al. | Dec 2013 | B1 |
8612804 | Kang et al. | Dec 2013 | B1 |
8615681 | Horn | Dec 2013 | B2 |
8638602 | Horn | Jan 2014 | B1 |
8639872 | Boyle et al. | Jan 2014 | B1 |
8683113 | Abasto et al. | Mar 2014 | B2 |
8700834 | Horn et al. | Apr 2014 | B2 |
8700950 | Syu | Apr 2014 | B1 |
8700951 | Call et al. | Apr 2014 | B1 |
8706985 | Boyle et al. | Apr 2014 | B1 |
8707104 | Jean | Apr 2014 | B1 |
8713066 | Lo et al. | Apr 2014 | B1 |
8713357 | Jean et al. | Apr 2014 | B1 |
8719531 | Strange et al. | May 2014 | B2 |
8724422 | Agness et al. | May 2014 | B1 |
8725931 | Kang | May 2014 | B1 |
8745277 | Kan | Jun 2014 | B2 |
8751728 | Syu et al. | Jun 2014 | B1 |
8769190 | Syu et al. | Jul 2014 | B1 |
8769232 | Suryabudi et al. | Jul 2014 | B2 |
8775720 | Meyer et al. | Jul 2014 | B1 |
8782327 | Kang et al. | Jul 2014 | B1 |
8788778 | Boyle | Jul 2014 | B1 |
8788779 | Horn | Jul 2014 | B1 |
8788880 | Gosla et al. | Jul 2014 | B1 |
8793429 | Call et al. | Jul 2014 | B1 |
20050108231 | Findleton | May 2005 | A1 |
20050160221 | Yamazaki | Jul 2005 | A1 |
20060095686 | Miller | May 2006 | A1 |
20080104431 | Shimada | May 2008 | A1 |
20090113123 | Joukov | Apr 2009 | A1 |
20090254702 | Kumano | Oct 2009 | A1 |
20100174849 | Walston et al. | Jul 2010 | A1 |
20100250793 | Syu | Sep 2010 | A1 |
20100332882 | Nayak | Dec 2010 | A1 |
20110099323 | Syu | Apr 2011 | A1 |
20110283049 | Kang et al. | Nov 2011 | A1 |
20110283128 | Farhan et al. | Nov 2011 | A1 |
20120260020 | Suryabudi et al. | Oct 2012 | A1 |
20120278531 | Horn | Nov 2012 | A1 |
20120284460 | Guda | Nov 2012 | A1 |
20120324191 | Strange et al. | Dec 2012 | A1 |
20130041875 | Kan | Feb 2013 | A1 |
20130132638 | Horn et al. | May 2013 | A1 |
20130145106 | Kan | Jun 2013 | A1 |
20130290793 | Booth et al. | Oct 2013 | A1 |
20130347103 | Veteikis | Dec 2013 | A1 |
20140059405 | Syu et al. | Feb 2014 | A1 |
20140079170 | Le Houerou | Mar 2014 | A1 |
20140101369 | Tomlin et al. | Apr 2014 | A1 |
20140115427 | Lu | Apr 2014 | A1 |
20140133220 | Danilak et al. | May 2014 | A1 |
20140136753 | Tomlin et al. | May 2014 | A1 |
20140149826 | Lu et al. | May 2014 | A1 |
20140157078 | Danilak et al. | Jun 2014 | A1 |
20140181432 | Horn | Jun 2014 | A1 |
20140223255 | Lu et al. | Aug 2014 | A1 |
20140298117 | Ahmadi-Ardakani | Oct 2014 | A1 |
20150046653 | Soundararajan | Feb 2015 | A1 |
Entry |
---|
Huayuan Chen, U.S. Appl. No. 14/024,498, filed Sep. 11, 2013, 19 pages. |
“Reinforcement Learning: A Tutorial”; Harmon and Harmon; Wright Laboratory, Wright-Patterson AFB, OH; 1997; available at http://oai.dtic.mil/oai/oai?verb=getRecord&metadataPrefix=html&identifier=ADA323194. |
Number | Date | Country | |
---|---|---|---|
61871809 | Aug 2013 | US |