Data storage devices (DSDs) are often used to record data onto or to reproduce data from a storage media. Some DSDs include multiple types of storage media. For example, in the case of a solid state hybrid drive (SSHD), a solid state storage media such as a flash memory is used for storing data in addition to at least one rotating magnetic disk for storing data.
The solid state storage media of the SSHD may be used to store data when the disk is not available for storing data, such as when the disk is not spinning. However, the available capacity of the solid state media is generally limited and data that is only stored in the solid state media usually needs to be migrated to the disk at some point in the future. In addition, data may also need to be migrated from the disk to the solid state media so that, for example, the data is available for quick access when the disk is not spinning or so that the same data is stored on both the disk and the solid state media.
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 embodiments 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 embodiments.
In the embodiment of
DSD 106 includes controller 120 which includes circuitry such as one or more processors for executing instructions and can include a microcontroller, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), hard-wired logic, analog circuitry and/or a combination thereof. In one implementation, controller 120 can include a system on a chip (SoC).
Host interface 126 is configured to interface DSD 106 with host 101 and may interface according to a standard such as, for example, PCI express (PCIe), serial advanced technology attachment (SATA), or serial attached SCSI (SAS). As will be appreciated by those of ordinary skill in the art, host interface 126 can be included as part of controller 120. Although
In the example of
Disk pack 134 comprises multiple disks that are radially aligned so as to rotate about SM 138. Each disk in disk pack 134 includes a number of radial spaced, concentric tracks for storing data. HSA 136 includes multiple heads each arranged to read data from and write data to a corresponding surface of a disk in disk pack 134.
DSD 106 also includes solid state memory 132 for storing data. In an embodiment, solid state memory 132 is used to store cached data 20 which may be identical data to, or a most recent copy of, data for selected ranges of logical block addresses (LBAs) on disk pack 134. Cached data 20 can include data that is only stored in solid state memory 132 and is a most recently written version of data for a particular logical address such as an LBA. Such cached data may be referred to as “dirty data,” which is periodically synchronized with the disk pack 134 by writing the dirty data to disk pack 134 for the logical address. In one example, dirty data may result from a deferred write operation where data intended to be written to disk pack 134 is first stored in solid state memory 132 as described below in more detail.
Volatile memory 140 can include, for example, a dynamic random access memory (DRAM) which can be used by DSD 106 to temporarily store data. Data stored in volatile memory 140 can include data read from NVM (e.g., disk pack 134 or solid state memory 132), data to be written to NVM, instructions loaded from firmware for execution by controller 120, and/or data used in executing firmware.
In operation, host interface 126 receives host read and write commands from host 101 via host interface 126 for reading data from and writing data to NVM such as solid state memory 132 and disk pack 134. In response to a write command from host 101, controller 120 may buffer the data to be written for the write command in volatile memory 140.
For data to be written to disk pack 134, a read/write channel (not shown) of controller 120 may then encode the buffered data into write signal 32 which is provided to a head of HSA 136 for magnetically writing data to a disk surface of disk pack 134.
In response to a read command for data stored on a disk surface of disk pack 134, controller 120 controls a head of HSA 136 to magnetically read data stored on the surface of disk pack 134 and to send the read data as read signal 32. The read/write channel of controller 120 can then decode and buffer the data into volatile memory 140 for transmission to host 101 via host interface 126.
DSD 106 can also perform a deferred write operation that allows DSD 106 to write data that is to be written to disk pack 134 to solid state memory 132, and then later write the data to its intended location in disk pack 134. This deferred writing can ordinarily allow for servicing of host write commands for writes intended for disk pack 134 while performing other operations in disk pack 134. The deferred write operation can also allow for servicing of host write commands for writes intended for disk pack 134 without requiring disk pack 134 to spin up to an operational speed for writing the data. The data from deferred write operations can be stored in solid state memory 132 as dirty data, but the available capacity for storing dirty data is limited in solid state memory 132. As the amount of dirty data approaches a high level limit, disk pack 134 may need to be spun up to an operational speed to transfer some of dirty data to disk pack 134.
In addition to transferring dirty data to disk pack 134, data may also be transferred from disk pack 134 to solid state memory 132. In this regard, certain data stored on disk pack 134, such as frequently accessed data or high priority data, can be transferred from disk pack 134 to solid state memory 132. In some implementations, the frequently accessed or high priority data may be specified by host 101 by flagging certain data or providing a range of LBAs for data to be transferred from disk pack 134 to solid state memory 132. DSD 106 may migrate frequently accessed data such as, for example, a particular word processing file to solid state memory 132 to reduce a number of times that disk pack 134 needs to be spun up to access such data and to decrease a latency for host 101 to access the data. High priority data, such as an operating system file for example, may be transferred from disk pack 134 to solid state memory 132 in order to provide faster access to the high priority data in solid state memory 132.
As discussed below, the transfer of data between solid state memory 132 and disk pack 134 can be interspersed with other operations performed on disk pack 134 to reduce a number of times that disk pack 134 needs to be spun up (i.e., the number of spin cycles) and to reduce an overall spin time of disk pack 134. This reduction in the number of spin cycles and in the overall spin time can result in a reduction in power consumption and an improved reliability of DSD 106. In addition, an overall performance of DSD 106 can be improved by reducing the latency in accessing data for random reads when the data is stored in solid state memory 132 instead of disk pack 134.
As shown in
In the example of
By transferring data when disk pack 134 is already spinning (e.g., to service command(s) from the host), power can ordinarily be conserved by reducing the need to spin up disk pack 134 solely to transfer data between solid state memory 132 and disk pack 134. In addition, performance efficiency in terms of IOPS can typically be improved by interspersing the transfer of data with other operations to complete more operations during a shorter period of time.
As shown in
When operational activity level 202 falls below target level 204, controller 120 transfers data between solid state memory 132 and disk pack 134. The occurrence of transfer activity generally corresponds to the cross-hatched area between operational activity level 202 and target level 204 in
In other embodiments, controller 120 may continue to transfer data between solid state memory 132 and disk pack 134 when operational activity level 202 rises above target level 204. In such embodiments, controller 120 may set a baseline rate of transfer when operational activity level 202 is greater than target level 204 and then increase the rate of transfer as operational activity level 202 decreases below target level 204.
In the embodiment of
In some embodiments, the target level may be adjusted (e.g., dynamically adjusted) to a different activity level. For example, target level 204 may be adjusted up to target level 208 if the need to transfer data between solid state memory 132 and disk pack 134 becomes more urgent. Factors that may result in an adjustment of the target level can include an available capacity of solid state memory 132, an amount of dirty data stored in solid state memory 132, or an age of dirty data stored in solid state memory 132. In one example, the target level may be increased if the amount of data to be transferred from solid state memory 132 to disk pack 134 exceeds a threshold amount of data. The target level may also be increased if the amount of data to be transferred from disk pack 134 to solid state memory 132 exceeds a threshold or if a total amount of data to be transferred in both directions exceeds a threshold.
The selection of which data to transfer can be made in part based on the operations corresponding to operational activity level 202. For example, controller 120 may select certain data to transfer based on a rotational position optimization (RPO) algorithm so that movement of HSA 136 is reduced. In one such example, controller 120 may identify specific portions of data to transfer that have logical addresses (e.g., LBAs) addressed near data that is being written to or read from disk pack 134 for operations corresponding to operational activity level 202.
In other examples, controller 120 may identify dirty data addressed with logical addresses within a range of logical addresses that are being refreshed in disk pack 134 as part of a disk maintenance activity affecting operational activity level 202. This can allow for the more recent dirty data to be written to disk pack 134 when refreshing the range of logical block addresses rather than using data from disk pack 134 that might be obsolete. Similarly, controller 120 may identify dirty data within a range of logical addresses associated with a garbage collection or defragmentation process affecting operational activity level 202.
In
In some implementations, controller 120 maintains power saving timers to trigger a power saving action of DSD 106 after a certain amount of time since receiving a last read or write command from host 101. In such implementations, the completion of the transfer of data does not extend the power saving timers. In other words, disk pack 134 may enter a power saving state at 14 seconds without having to wait for the expiration of a power saving timer that would have otherwise expired before 14 seconds if not for the transferring of data between solid state memory 132 and disk pack 134. Power saving actions may include moving HSA 136 away from disk pack 134 (i.e., parking HSA 136) and reducing the angular speed of disk pack 134.
As shown in
As discussed above, by interspersing the transfer of data with other operations, performance efficiency of DSD 106 can ordinarily be increased to complete more operations during a shorter period of time.
Queue 402 is a queue for pending operations to service host commands received from host 101 (e.g., HC1, HC2 and HC3). The pending operations queued in queue 402 can include, for example, read commands for accessing data from DSD 106 or write commands for storing data in DSD 106. In some embodiments, the host commands queued in queue 402 can constitute an operational activity level, such as operational activity level 202 in
Queue 404 is a queue for pending data transfer operations from disk pack 134 to solid state memory 132 (i.e., data read migrations), such as DRM1 and DRM2. Such data read migrations can be for data that is frequently accessed on disk 134 or high priority data that is to be stored in both disk pack 134 and in solid state memory 132 for redundancy.
Queue 406 is a queue for pending data transfer operations from solid state memory 132 to disk pack 134 (i.e., data write migrations), such as DWM1, DWM2, DWM3, and DWM4. Such data write migrations can include transfers of portions of dirty data to disk pack 134 after a deferred write, for example.
Queue 408 is a queue for pending maintenance operations to be performed on disk pack 134, such as M1. Such maintenance operations can include garbage collection, defragmentation, and refreshing of data in disk pack 134 for a particular range of logical addresses.
In the embodiment of
Controller 120 may also change the predetermined rates of operations being selected from the queues and/or change the sequence of operations based on the considerations discussed above for adjusting the target level. In other words, the predetermined rates and/or the sequence may be changed based on at least one of an amount of data to be transferred from the disk pack 134 to the solid state memory 132, an available capacity of solid state memory 132, an amount of dirty data stored in solid state memory 132, and an age of dirty data stored in solid state memory 132. Again, these selection factors may be integrated into an RPO algorithm, or used in place of an RPO algorithm.
In block 502, controller 120 may optionally adjust a target level for operational activity, such as from target level 204 to target level 208 in
In block 504, controller 120 determines an operational activity level for disk pack 134 in performing the at least one operation from block 500. As discussed above, the operational activity level can include a number of commands queued for performance on disk pack 134, such as a number of host commands queued in queue 402 of
In block 506, controller 120 determines whether the operational activity level is greater than the target level. If so, the process returns to block 504 to determine an updated operational activity level and to compare the updated operational activity level to the target level in block 506.
If the operational activity level is not greater than the target level, controller 120 in block 508 sets an amount of data to be transferred between solid state memory 132 and disk pack 134. In more detail, the amount of data is set based on the difference between the target level and the current operational activity level. In addition to the current operational activity level, the amount of data to be transferred may also be set based on the amount of dirty data stored in solid state memory 132. As the amount of dirty data increases, the amount of dirty data to be transferred can be increased. In one implementation, the performance of other operations such as the at least one operation of block 500 may be delayed if the amount of dirty data has exceeded a high level limit.
In block 510, controller 120 identifies portions of data to be transferred between solid state memory 132 and disk pack 134. The identification of data can include comparing logical addresses (e.g., LBAs) for the data with logical addresses for data involved with other operations performed on disk pack 134. For example, controller 120 may identify logical addresses of data based on an RPO algorithm or may compare logical addresses of data with a range of logical addresses determined by controller 120 for a disk maintenance operation.
In block 512, controller 120 transfers the data identified in block 510 between solid state memory 132 and disk pack 134. Controller 120 checks in block 514 whether there is more data to transfer. This can involve, for example, determining if there are still more data transfer operations queued in either of queues 404 or 406. Controller 120 may also consider whether there are other operations that need to be performed on disk pack 134 such that disk pack 134 will continue spinning. In such an example, controller 120 may determine in block 514 that more data should be transferred even though the previous data transfer operations queued in queues 404 and 406 have been performed. Controller 120 may then consider an amount of cached data 20 stored in solid state memory 132 in selecting more data to transfer. However, controller 120 may determine in block 514 that the amount of dirty data has reached a low level limit and that the transfer of data should stop even though disk pack 134 will continue to spin for the performance of other operations.
If controller 120 determines in block 514 that there is more data to transfer, the process returns to block 502 to optionally adjust the target level and determine a current operational activity level in block 504.
If it is determined in block 514 that there is no more data to transfer, the data migration process of
By interspersing the migration of data with other operations, it is ordinarily possible to reduce an overall spin time and save power by avoiding spinning up the disk solely to transfer data between solid state memory 132 and disk pack 134. In addition, coordinating the transfer of data with other disk operations to reach a target operational activity level can generally improve a performance efficiency of DSD 106.
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 embodiments is provided to enable any person of ordinary skill in the art to make or use the embodiments 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 embodiments 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,270, filed on Aug. 28, 2013, which is hereby incorporated by reference in its entirety.
| Number | Name | Date | Kind |
|---|---|---|---|
| 5333138 | Richards et al. | Jul 1994 | A |
| 5420998 | Horning | May 1995 | A |
| 5457786 | Roush | Oct 1995 | A |
| 5471604 | Hasbun et al. | Nov 1995 | A |
| 5581785 | Nakamura et al. | Dec 1996 | A |
| 5586291 | Lasker et al. | Dec 1996 | A |
| 5636355 | Ramakrishnan et al. | Jun 1997 | A |
| 5682273 | Hetzler | Oct 1997 | A |
| 5905901 | Klein | May 1999 | A |
| 5913067 | Klein | Jun 1999 | A |
| 5954820 | Hetzler | Sep 1999 | A |
| 6044439 | Ballard et al. | Mar 2000 | A |
| 6115200 | Allen et al. | Sep 2000 | A |
| 6236527 | Uchiike et al. | May 2001 | B1 |
| 6275949 | Watanabe | Aug 2001 | B1 |
| 6295577 | Anderson et al. | Sep 2001 | B1 |
| 6408357 | Hanmann et al. | Jun 2002 | B1 |
| 6429990 | Serrano et al. | Aug 2002 | B2 |
| 6437935 | Johnson et al. | Aug 2002 | B1 |
| 6614616 | Michel et al. | Sep 2003 | B1 |
| 6661591 | Rothberg | Dec 2003 | B1 |
| 6662267 | Stewart | Dec 2003 | B2 |
| 6687850 | Rothberg | Feb 2004 | B1 |
| 6725397 | Emberty et al. | Apr 2004 | B1 |
| 6732241 | Riedel | May 2004 | B2 |
| 6754021 | Kisaka et al. | Jun 2004 | B2 |
| 6798599 | Dykes et al. | Sep 2004 | B2 |
| 6807630 | Lay et al. | Oct 2004 | B2 |
| 6845456 | Menezes et al. | Jan 2005 | B1 |
| 6856556 | Hajeck | Feb 2005 | B1 |
| 6892313 | Codilian et al. | May 2005 | B1 |
| 6909574 | Aikawa et al. | Jun 2005 | B2 |
| 6928518 | Talagala | Aug 2005 | B2 |
| 6968450 | Rothberg et al. | Nov 2005 | B1 |
| 7003620 | Avraham et al. | Feb 2006 | B2 |
| 7017037 | Fortin et al. | Mar 2006 | B2 |
| 7028174 | Atai-Azimi et al. | Apr 2006 | B1 |
| 7076605 | Son | Jul 2006 | B1 |
| 7082494 | Thelin et al. | Jul 2006 | B1 |
| 7107444 | Fortin et al. | Sep 2006 | B2 |
| 7114029 | Thelin | Sep 2006 | B1 |
| 7120806 | Codilian et al. | Oct 2006 | B1 |
| 7126857 | Hajeck | Oct 2006 | B2 |
| 7139933 | Hsu et al. | Nov 2006 | B2 |
| 7142385 | Shimotono et al. | Nov 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 |
| 7334082 | Grover et al. | Feb 2008 | B2 |
| 7340647 | Aasheim et al. | Mar 2008 | B2 |
| 7350105 | Aasheim et al. | Mar 2008 | B2 |
| 7392340 | Dang et al. | Jun 2008 | B1 |
| 7395452 | Nicholson et al. | Jul 2008 | B2 |
| 7411757 | Chu et al. | Aug 2008 | B2 |
| 7421552 | Long | Sep 2008 | B2 |
| 7425810 | Hobbet et al. | Sep 2008 | B2 |
| 7430136 | Merry, Jr. et al. | Sep 2008 | B2 |
| 7447807 | Merry et al. | Nov 2008 | B1 |
| 7461202 | Forrer, Jr. et al. | Dec 2008 | B2 |
| 7468854 | Yamashita et al. | Dec 2008 | B2 |
| 7472222 | Auerbach et al. | Dec 2008 | B2 |
| 7477477 | Maruchi et al. | Jan 2009 | B2 |
| 7483234 | Shimozato | Jan 2009 | B2 |
| 7502256 | Merry, Jr. et al. | Mar 2009 | B2 |
| 7509441 | Merry et al. | Mar 2009 | B1 |
| 7509471 | Gorobets | Mar 2009 | B2 |
| 7516346 | Pinheiro et al. | Apr 2009 | B2 |
| 7552347 | Schutte | Jun 2009 | B2 |
| 7596643 | Merry, Jr. et al. | Sep 2009 | B2 |
| 7610438 | Lee et al. | Oct 2009 | B2 |
| 7610445 | Manus et al. | Oct 2009 | B1 |
| 7613876 | Bruce et al. | Nov 2009 | B2 |
| 7620773 | Nicholson et al. | Nov 2009 | B2 |
| 7644231 | Recio et al. | Jan 2010 | 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 |
| 7685360 | Brunnett et al. | Mar 2010 | B1 |
| 7685374 | Diggs et al. | Mar 2010 | B2 |
| 7698586 | Kim et al. | Apr 2010 | B2 |
| 7719785 | Taniguchi et al. | May 2010 | B2 |
| 7733712 | Walston et al. | Jun 2010 | B1 |
| 7752491 | Liikanen et al. | Jul 2010 | B1 |
| 7765373 | Merry et al. | Jul 2010 | B1 |
| 7774556 | Karamcheti et al. | Aug 2010 | B2 |
| 7797487 | Lubbers et al. | Sep 2010 | B2 |
| 7817372 | Takahashi | Oct 2010 | B2 |
| 7835104 | Yamashita et al. | Nov 2010 | B2 |
| 7890691 | Jiang | Feb 2011 | B2 |
| 7890696 | Lawson | Feb 2011 | B2 |
| 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 |
| 7984259 | English | Jul 2011 | B1 |
| 8060707 | Fairhurst et al. | Nov 2011 | B2 |
| 8078918 | Diggs et al. | Dec 2011 | B2 |
| 8090899 | Syu | Jan 2012 | B1 |
| 8095851 | Diggs et al. | Jan 2012 | B2 |
| 8098451 | Graef | 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 |
| 8139307 | Kim et al. | Mar 2012 | B2 |
| 8151020 | Merry, Jr. et al. | Apr 2012 | B2 |
| 8161227 | Diggs et al. | Apr 2012 | B1 |
| 8166245 | Diggs et al. | Apr 2012 | B2 |
| 8169726 | Wilson | May 2012 | B2 |
| 8243525 | Kan | Aug 2012 | B1 |
| 8244975 | DeCenzo | Aug 2012 | B2 |
| 8245003 | Suzuki et al. | Aug 2012 | B2 |
| 8254172 | Kan | Aug 2012 | B1 |
| 8261012 | Kan | Sep 2012 | B2 |
| 8286018 | Chang et al. | Oct 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 |
| 8612644 | Kumasawa et al. | Dec 2013 | B2 |
| 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 |
| 8719501 | Flynn et al. | May 2014 | B2 |
| 8745277 | Kan | Jun 2014 | B2 |
| 8773802 | Anderson et al. | Jul 2014 | B1 |
| 8775720 | Meyer et al. | Jul 2014 | B1 |
| 8782334 | Boyle et al. | Jul 2014 | B1 |
| 20020083264 | Coulson | Jun 2002 | A1 |
| 20030140198 | Ninose et al. | Jul 2003 | A1 |
| 20030145167 | Tomita | Jul 2003 | A1 |
| 20050108473 | Le Moal et al. | May 2005 | A1 |
| 20050120251 | Fukumori | Jun 2005 | A1 |
| 20060075185 | Azzarito et al. | Apr 2006 | A1 |
| 20060080501 | Auerbach et al. | Apr 2006 | A1 |
| 20060195657 | Tien et al. | Aug 2006 | A1 |
| 20070006021 | Nicholson et al. | Jan 2007 | A1 |
| 20070050540 | Klein | Mar 2007 | A1 |
| 20070162693 | Nam | Jul 2007 | A1 |
| 20080024899 | Chu et al. | Jan 2008 | A1 |
| 20080040537 | Kim | Feb 2008 | A1 |
| 20080049354 | Nitta | Feb 2008 | A1 |
| 20080059694 | Lee | Mar 2008 | A1 |
| 20080130156 | Chu et al. | Jun 2008 | A1 |
| 20080177938 | Yu | Jul 2008 | A1 |
| 20080222353 | Nam et al. | Sep 2008 | A1 |
| 20080256287 | Lee et al. | Oct 2008 | A1 |
| 20080288714 | Salomon et al. | Nov 2008 | A1 |
| 20080307270 | Li | Dec 2008 | A1 |
| 20090019218 | Sinclair et al. | Jan 2009 | A1 |
| 20090024793 | Fontenot et al. | Jan 2009 | A1 |
| 20090031072 | Sartore | Jan 2009 | A1 |
| 20090089501 | Ahn et al. | Apr 2009 | A1 |
| 20090103203 | Yoshida | Apr 2009 | A1 |
| 20090106518 | Dow | Apr 2009 | A1 |
| 20090144501 | Yim et al. | Jun 2009 | A2 |
| 20090150599 | Bennett | Jun 2009 | A1 |
| 20090172249 | Matthews | Jul 2009 | A1 |
| 20090172324 | Han et al. | Jul 2009 | A1 |
| 20090172499 | Olbrich et al. | Jul 2009 | A1 |
| 20090198940 | Ash et al. | Aug 2009 | A1 |
| 20090213486 | Takahashi | Aug 2009 | A1 |
| 20090249168 | Inoue | Oct 2009 | A1 |
| 20090271562 | Sinclair | Oct 2009 | A1 |
| 20090327603 | McKean et al. | Dec 2009 | A1 |
| 20100067138 | Ooi et al. | Mar 2010 | A1 |
| 20100088459 | Arya et al. | Apr 2010 | A1 |
| 20100122030 | Peters et al. | May 2010 | A1 |
| 20100169541 | Freikorn | Jul 2010 | A1 |
| 20100174849 | Walston et al. | Jul 2010 | A1 |
| 20100191922 | Dickey et al. | Jul 2010 | A1 |
| 20100195243 | Zhu et al. | Aug 2010 | A1 |
| 20100250793 | Syu | Sep 2010 | A1 |
| 20100325352 | Schuette et al. | Dec 2010 | A1 |
| 20110010490 | Kwon et al. | Jan 2011 | A1 |
| 20110099323 | Syu | Apr 2011 | A1 |
| 20110106804 | Keeler et al. | May 2011 | A1 |
| 20110138106 | Prabhakaran et al. | Jun 2011 | A1 |
| 20110202707 | Moon et al. | Aug 2011 | A1 |
| 20110283049 | Kang et al. | Nov 2011 | A1 |
| 20110283128 | Farhan et al. | Nov 2011 | A1 |
| 20120170435 | Trantham | Jul 2012 | A1 |
| 20120260020 | Suryabudi et al. | Oct 2012 | A1 |
| 20120278531 | Horn | Nov 2012 | A1 |
| 20120284460 | Guda | Nov 2012 | A1 |
| 20120290779 | Eleftheriou et al. | Nov 2012 | A1 |
| 20120317338 | Yi et al. | Dec 2012 | A1 |
| 20120324191 | Strange et al. | Dec 2012 | A1 |
| 20130024650 | Ambat et al. | Jan 2013 | A1 |
| 20130117520 | Ryu | May 2013 | A1 |
| 20130132638 | Horn et al. | May 2013 | A1 |
| 20130145106 | Kan | Jun 2013 | A1 |
| 20130173850 | Song | Jul 2013 | A1 |
| 20130218892 | Bell, Jr. et al. | Aug 2013 | A1 |
| 20130290668 | Na | Oct 2013 | A1 |
| 20130290793 | Booth et al. | Oct 2013 | A1 |
| 20140059405 | Syu et al. | Feb 2014 | A1 |
| 20140115427 | Guangming | Apr 2014 | A1 |
| 20140133220 | Danilak et al. | May 2014 | A1 |
| 20140136753 | Tomlin et al. | May 2014 | A1 |
| Entry |
|---|
| U.S. Appl. No. 12/720,568, filed Mar. 9, 2010, 22 pages. |
| Hannes Payer, Marco A.A. Sanvido, Zvonimir Z. Bandic, Christoph M. Kirsch, “Combo Drive: Optimizing Cost and Performance in a Heterogeneous Storage Device”, http://csl.cse.psu.edu/wish2009—papers/Payer.pdf. |
| Gokul Soundararajan, Vijayan Prabhakaran, Mahesh Balakrishan, Ted Wobber, “Extending SSD Lifetimes with Disk-Based Write Caches”, http://research.microsoft.com/pubs/115352/hybrid.pdf, Feb. 2010. |
| Xiaojian Wu, A. L. Narasimha Reddy, “Managing Storage Space in a Flash and Disk Hybrid Storage System”, http://www.ee.tamu.edu/˜reddy/papers/mascots09.pdf. |
| Tao Xie, Deepthi Madathil, “SAIL: Self-Adaptive File Reallocation on Hybrid Disk Arrays”, The 15th Annual IEEE International Conference on High Performance Computing (HiPC 2008), Bangalore, India, Dec. 17-20, 2008. |
| Non-Volatile Memory Host Controller Interface revision 1.0 specification available for download at http://www.intel.com/standards/nvmhci/index.htm. Ratified on Apr. 14, 2008, 65 pages. |
| DongKyu Lee; Koh, K.; “PDC-NH: Popular data concentration on NAND flash and hard disk drive,” 2009 10th IEEE/ACM International Conference on Grid Computing, pp. 196-200, Oct. 13-15, 2009. |
| Zaihas Amri Fahdzan Hasfar, et. al., U.S. Appl. No. 14/105,603, filed Dec. 13, 2013, 22 pages. |
| U.S. Appl. No. 12/824,959, filed Jun. 28, 2010, to Boyle et al., 21 pages. |
| U.S. Appl. No. 13/105,800, filed May 11, 2011, to Boyle et al., 19 pages. |
| U.S. Appl. No. 13/157,111, filed Jun. 9, 2011, to Wilkins et al., 16 pages. |
| U.S. Appl. No. 13/673,956, filed Nov. 9, 2012, to Malina et al., 40 pages. |
| U.S. Appl. No. 14/024,498, filed Sep. 11, 2013 to Chen et al., 19 pages. |
| International Search Report and Written Opinion dated Nov. 26, 2014 from related PCT Serial No. PCT/US2014/053009, 9 pages. |
| Number | Date | Country | |
|---|---|---|---|
| 20150062743 A1 | Mar 2015 | US |
| Number | Date | Country | |
|---|---|---|---|
| 61871270 | Aug 2013 | US |