Hybrid drives (SSHD) provide the benefits of both a hard disk drive (HDD) and a solid-state drive (SSD). The HDD and SSD subsystems of the SSHD run independently but share a common power supply for the SSHD. For example, hybrid UltraBook application typically have a HDD running on 5V and an SSD running of 3.3V, but the SSHD runs on a 5V for both subsystems. The combined currents for the HDD and SSD subsystems can exceed the host power supply capability.
The features and advantages of the embodiments 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 embodiments 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.
The DSD 100 interfaces with the host 110 through a controller 140. The controller 140 is connected to the SSD 120 and the HOD 130 to control the SSD 120 and the HOD 130 through signals. The controller 140 further includes a host interface 115 and a throttle control circuit 150. The host 110 can provide power (i.e. a host supply) to the DSD 100 through the host interface 115. Various signals used for communication pass through the host interface 115 as well. The host interface 115 is connected to the throttle control circuit 150.
The throttle control circuit 150 includes a current monitor 160 and a hardware controller 170. A host supply current may be routed through the current monitor 160. An SSD current 162 provides power to the SSD 120, and an HDD current 164 provides power to the HDD 130. A switch 182, which is controlled by the hardware controller 170 through a switch signal 184, can switch the power supply of the SSD 120 from the host supply to a capacitor 180. The capacitor 180 may be a single capacitor or may be a capacitor farm as known in the art. The current monitor 160 monitors the current levels of the SSD current 162 and the HDD current 164. In certain implementations, the current monitor 160 may monitor just one storage tier, just the combined current, or separately monitor the currents of each storage tier.
The current monitor 160 communicates to the hardware controller 170. The hardware controller 170 can send an SSD throttle signal 172 to the SSD 120 to reduce power used by the SSD 120. In certain implementations, the hardware controller 170 can send an HOD throttle signal 174 to the HDD 130 instead of or in addition to the SSD throttle signal 172. The SSD 120 may respond to SSD throttle signal 172 being asserted by pausing execution of commands. Similarly, the HDD 130 may respond to the HDD throttle signal 174 being asserted by pausing execution of commands. The operation of the throttle control circuit 150 will be further discussed with respect to
At time t0, the HOD current curve 210 transitions from a low state to a high state. For example, the HDD current curve 210 may rise to 0.9 A at time t0 to perform a power intensive operation, such as spinning up the disk. At time t1, the HDD current curve 210 falls because, for instance, the power intensive operation is complete. At time t2, the HDD current curve 210 rises again for a short period of time, such as for a seek operation. At time t3, the operation is complete, and the HDD current curve 210 falls again. At time t4, the HDD current curve 210 rises, but not as high as previously. For example, at t4 the HDD may be performing a write and read operation. At time t6, the operation may ramp up, and at time t7, the operation is complete.
The SSD can operate independently from the HOD to perform operations simultaneously. The SSD draws its own current for operations. However, when both the HOD and the SSD perform operations simultaneously, the combined current drawn may exceed or approach a limit for the host supply. In such cases, the DSD can be managed by reducing power used by one of the storage tiers.
The SSD current curve 220 shows the current levels when the SSD1, an unthrottled SSD, operates independently from the HDD. At time t0, while the HDD current curve 210 is high, the SSD current curve 220 is also high. The combined current at time t0 exceeds a current threshold set for the DSD 100. In addition, at time t6 the HDD current curve 210 and the SSD current curve 220 are both high. The SSD current curve 220 rises and falls independently from the HDD current curve 210, resulting in time spans in which both the HDD and the SSD1 are drawing peak current levels. In addition, certain time spans, such as from t3 to t4, have both the HDD current curve 210 and the SSD current curve 220 at low or idle levels.
To prevent the combined current from exceeding the current threshold, the throttle control circuit 150 may throttle the SSD current. As seen in the throttled SSD current curve 230, for the SSD2, a throttled SSD receiving the same commands as the SSD1, operations are paused from t0 to t1, when the HDD current curve 210 is high. The SSD2 resumes operations when the HDD current curve 210 drops at time t1. The SSD2 may then perform the operation paused at time t0, as seen in the throttled SSD current curve 230 at t1. At time t2, the SSD2 pauses operations to drop the current level until time t3. At t3, the HDD current curve 210 falls, which allows the SSD2 to resume operations without the combined current exceeding the current threshold. At time t4, the SSD2 continues to run until the operation is complete. From time t4 to time t5 the SSD2 may run operations previously paused during throttling, because the HDD current curve 210 does not rise high enough for the combined current to exceed the current threshold. For example, at time t3 the SSD2 may run the operation at time t1 of the SSD current curve 220, because at time t1 the SSD2 was performing the paused operation from time t0. Instead of pausing between operations, the SSD2 may continue with its queued operations until completed, or until another throttle causes the SSD2 to pause operations. At time t6 the SSD2 receives another command, but unlike the SSD1, the SSD2 waits until t7, when the HDD current curve 210 has fallen. The throttling prevents the HDD current curve 210 and the throttled SSD current curve 230 from reaching peak currents simultaneously, thereby preventing the combined current from exceeding the current threshold.
The measured current is output to a comparator 330. The measured current may be connected to resistor (R1) 340 and resistor (R2) 342. In
In
The current sense resistor 310 and the current sense amp 320 may generally correspond to the current monitor 160, and the comparator 330 may generally correspond to the hardware controller 170. In other implementations, the current monitor 160 and the hardware controller 170 may be implemented through various circuits, sub-circuits, and components, and may not be two discrete components or circuits.
Although not shown in
In one embodiment, the throttle signal may be connected to a pulse stretching circuit in order to assert the throttle signal for at least a minimum duration. The minimum duration may be selected to ensure enough time for the throttling to take effect. In addition, the minimum duration may prevent the throttle signal from being rapidly asserted and de-asserted when the measured current fluctuates near the current threshold.
Otherwise, the process continues to 440. At 440, the throttle control circuit 150 asserts a throttle signal to reduce power used by a first storage tier. The SSD 120 may be the first storage tier, which is chosen to be throttled because there is less impact on the system. In this regard, the SSD 120 is easier to start and stop compared to the HDD 130, and has no moving parts to consider. Certain DSDs 100 may have an SSD 120 that further includes a pin or other means to receive the SSD throttle signal 172. However, in other implementations, the HDD 130 may be throttled instead of or in addition to the SSD 120. The HDD 130 may also include an interface such as a pin to receive the HDD throttle signal 174. In addition, the SSD throttle signal 172 may be the same as the HDD throttle signal 174 such that both storage tiers may be throttled with one signal.
At 450, the throttle control circuit 150 determines if the current is below a resume threshold. The resume threshold ensures that the current is sufficiently below the current threshold before de-asserting the throttle signal. Similar to the current threshold, the resume threshold may be fixed or may be variable, selected through hysteresis and other analysis to improve the effectiveness of the throttling.
When the current is below the resume threshold, the throttle signal is de-asserted at 460. At 470, if the host 110 is powered down, the process ends at 480. Otherwise, the process returns to 420.
At 520, the throttle control circuit 150 determines a current threshold based on the current. The determined current threshold may vary depending upon factors which may indicate whether the monitored current is likely to reach the current threshold. For instance, the current's rate of change may be used to determine the current threshold. In such an example, a relatively fast increase in the monitored current can result in a lower current threshold to reduce the likelihood of exceeding a power supply limit for the DSD 100. In another example, a current level can be set below the current threshold. When the monitored current exceeds the current level for more than a predetermined duration, the current threshold may be lowered to reduce the likelihood of exceeding the power supply limit for the DSD 100. Additionally, hysteresis may be used to determine an appropriate current threshold. At 525, the throttle control circuit 150 determines whether the current exceeds the current threshold.
If the current exceeds the current threshold, then at 530 the throttle control circuit 150 asserts a throttle signal to reduce power used by a first storage tier. If the SSD 120 is the storage tier to be throttled, then the throttle control circuit 150 asserts the SSD throttle signal 172. In other implementations, the throttle control circuit 150 may instead assert the HDD throttle signal 174. In certain other implementations, the throttle control circuit 150 may decide between which of the SSD 120 and the HDD 130 to throttle. In other implementations, the throttle control circuit 150 may send a throttle signal to all storage tiers, at least one of which configured to accept and respond to the throttle signal.
In response to the SSD throttle signal 172, the SSD 120 pauses command execution at 535. The SSD throttle signal 172 causes the SSD 120 to stop executing commands after the SSD throttle signal 172 was asserted. By pausing command execution, the SSD 120 uses reduced power.
The SSD 120 may have commands queued or still being executed when the SSD throttle signal 172 is asserted. Pausing command execution in the middle of a command being executed may result in errors. In particular, commands accessing media (e.g. solid state memory or rotational media) may not be safely paused. Accordingly, such commands may run to completion to avoid errors. However, if commands are being executed after the throttle signal is asserted, then the power usage may not be reduced.
To reduce power drawn from the host 110 while allowing completions of commands already accessing media of the SSD 120, the SSD 120 may be powered by an alternative supply. As seen in
At 540, the power supply of the SSD 120 is switched to the capacitor 180. The switch 182 is controlled by the throttle control circuit 150, specifically the hardware controller 170, through the switch signal 184. The switch signal 184 may be the same as the throttle signal such that when the throttle signal is asserted, the switch 182 switches to the capacitor 180, and when the throttle signal is de-asserted, the switch 182 switches back to the host supply, i.e. the SSD current 162. In other implementations, the switch signal 184 may be another signal. When the HDD 130 is the storage tier to be throttled, the capacitor 180 and the switch 182 may instead be connected to the HDD 130.
At 545, the SSD 120 completes commands already accessing a media (i.e. NAND gates) of the SSD 120. Because the SSD 120 completes the commands while powered by the capacitor 180, the power drawn from the host 110 is reduced. Further, when the commands are completed, the SSD 120 no longer executes any commands.
At 550, a resume threshold is determined. The resume threshold may be determined through a hysteresis of the current, or may be a fixed value. The process waits at 555 until the current is below the resume threshold. When the current is below the resume threshold, the throttle signal is de-asserted after a minimum duration at 560. The minimum duration ordinarily prevents fluctuations in the current from causing the throttle signal to rapidly cycle between assertion and de-assertion. The minimum duration also ensures that the command execution is paused long enough to effectuate a reduction of power consumption.
At 565, the power supply of the SSD 120 is switched back to the host supply. When the switch signal 184 is the same as the throttle signal, the switching may occur nearly simultaneously as the de-assertion of the throttle signal. In other implementations, the switching may occur immediately after the commands previously received are complete. In yet other implementations, the switching may occur at other appropriate times. In addition, the switching may allow the capacitor 180 to recharge for the next throttle operation.
At 570, the SSD 120 resumes command execution normally. The commands queued while the throttle signal was asserted can resume execution in the same order as queued. In certain implementations, the commands may be executed in a different order, to improve efficiency as needed. At 580, if the host 110 is powered down, the process ends at 590. Otherwise, the throttle control circuit 150 continues monitoring the current at 515.
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 disk, a CD-ROM, 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.
According to one implementation, a method is disclosed for powering a DSD including at least a first storage tier and a second storage tier. The method comprises monitoring a current used by the DSD, determining whether the current exceeds a current threshold, and asserting a throttle signal to reduce power used by the first storage tier when it is determined that the current exceeds the current threshold.
According to another implementation, a DSD is disclosed, comprising a first storage tier, a second storage tier, and circuitry configured to monitor a current used by the DSD, determine whether the current exceeds a current threshold, and assert a throttle signal to reduce power used by the first storage tier when it is determined that the current exceeds the current threshold.
Number | Name | Date | Kind |
---|---|---|---|
5345347 | Hopkins et al. | Sep 1994 | A |
5452277 | Bajorek et al. | Sep 1995 | A |
5638541 | Sadashivaiah | Jun 1997 | A |
6367023 | Kling et al. | Apr 2002 | B2 |
6608729 | Willems et al. | Aug 2003 | B1 |
6725385 | Chu et al. | Apr 2004 | B1 |
6856556 | Hajeck | Feb 2005 | B1 |
6892313 | Codilian et al. | May 2005 | B1 |
6928559 | Beard | Aug 2005 | B1 |
7111178 | Rusu et al. | Sep 2006 | B2 |
7126857 | Hajeck | Oct 2006 | B2 |
7174469 | Luick | Feb 2007 | B2 |
7352641 | Wu | Apr 2008 | B1 |
7411757 | Chu et al. | Aug 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 |
7596643 | Merry, Jr. et al. | Sep 2009 | 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 |
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 |
8078901 | Meyer et al. | Dec 2011 | B1 |
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 |
8296625 | Diggs et al. | Oct 2012 | B2 |
8312207 | Merry, Jr. et al. | Nov 2012 | B2 |
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 |
20040083396 | Perahia | Apr 2004 | A1 |
20100169690 | Mundada et al. | Jul 2010 | A1 |
20100174849 | Walston et al. | Jul 2010 | A1 |
20100235659 | Sawyers et al. | Sep 2010 | A1 |
20100250793 | Syu | Sep 2010 | A1 |
20100318824 | Tinker | Dec 2010 | A1 |
20110099323 | Syu | Apr 2011 | A1 |
20110202707 | Moon et al. | Aug 2011 | A1 |
20110283049 | Kang et al. | Nov 2011 | A1 |
20110320690 | Petersen et al. | Dec 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 |
20130132638 | Horn et al. | May 2013 | A1 |
20130145106 | Kan | Jun 2013 | A1 |
20130290793 | Booth et al. | Oct 2013 | A1 |
20130294111 | Persson et al. | Nov 2013 | A1 |
20140059405 | Syu et al. | Feb 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 |
20140325166 | Iyigun et al. | Oct 2014 | A1 |