In certain embodiments, a method for scheduling data transfer commands between a first actuator or a second actuator across an interface is disclosed. The method includes balancing data transfer commands between the first actuator and the second actuator by applying a first rule for read commands and a second rule for write commands.
In certain embodiments, a data storage device includes a first actuator, a second actuator, an interface, a data buffer, and circuitry. The first actuator positions a first read/write head, and the second actuator positions a second read/write head. The interface includes a data path, which is communicatively coupled to the first read/write head and the second read/write head. The data buffer is communicatively coupled between the data path and the first read/write head and the second read/write head. The circuitry is configured to schedule data transfer commands across the data path between the first actuator and the second actuator by applying a first rule for read commands and a second rule for write commands.
In certain embodiments, a system on a chip includes circuitry, which is configured to apply a first rule for read commands and apply a second rule for write commands.
While multiple embodiments are disclosed, still other embodiments of the present invention will become apparent to those skilled in the art from the following detailed description, which shows and describes illustrative embodiments of the invention. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not restrictive.
While the disclosure is amenable to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and are described in detail below. The intention, however, is not to limit the disclosure to the particular embodiments described but instead is intended to cover all modifications, equivalents, and alternatives falling within the scope of the appended claims.
Data storage systems (e.g., servers) can include multiple data storage devices (e.g., solid state drives, hard disk drives) that are operated and accessed in parallel to increase the amount of data that can be stored and accessed. For example, servers may include multiple hard disk drives that are performing read and/or write operations in parallel. Each data storage device in a data storage system may be assigned and identified by the system by a separate logical unit number (hereafter “Lun”). Similarly, hard disk drives can include multiple actuators, each with read/write heads that themselves are performing read and/or write operations in parallel. Each actuator in a data storage device may be assigned and identified by a data storage system by a separate Lun.
Data storage systems and/or data storage devices may have fewer data paths through which to transfer data compared to the number of Luns (e.g., number of data storage devices in a data storage system or number of actuators in a data storage device). This can restrict the rate at which data is transferred to and from the Luns. As a result, the Luns' performance can become unbalanced such that the Luns are not being used equivalently. Further, the data path(s) may sit idle while the data storage systems or the data storage devices access requested data. Certain embodiments of the present disclosure are accordingly directed to scheduling data transfer commands to balance how data is transferred to and from Luns in a data storage system or a data storage device. Although the various approaches described below are described in the context of a data storage device with multiple actuators, the approaches can be applicable to data storage systems and other data storage devices without actuators such as solid state drives.
The data storage device 100 include an interface 108 (e.g., an input/output interface) for transferring data to and from the data storage device 100. For example, the interface 108, among other features, can be communicatively coupled between a host 150 (e.g., a data storage system such as a server or laptop) and the read/write heads 104A and 104B to facilitate communication between the the read/write heads 104A and 104B and the host 150. The data storage device 100 includes fewer data paths (i.e., one interface 108 with one data path) than the number of actuators (i.e., two actuators 102A and 102B).
To balance how data is transferred through the interface 108, the data storage device 100 can include logic (described in more detail below) stored as instructions (e.g., firmware) that dictate how data transfer commands are scheduled to be transferred through the interface 108 shared between the multiple actuators 102A and 1028. Although only two actuators for the data storage device 100 are shown in
The data storage device 100 can include a system on a chip (“SOC”) 110 (shown in dashed lines) that includes a system controller 112 and its associated memory 114. The interface 108 may also be part of the SOC 110. The SOC 110 can also include a read/write channel 116, which can encode data associated with write commands and decode data associated with read commands. The SOC 110 may be an integrated circuit such as an application-specific integrated circuit (“ASIC”) and field-programmable gate array (“FPGA”) that includes instructions for carrying out various functions of the data storage device 100.
The system controller 112 can be coupled to and control access to a buffer 118, which can temporarily store data associated with read commands and write commands. The buffer 118 can be a volatile memory, such as a dynamic random access memory (“DRAM”), static random access memory (“SRAM”), or other volatile memory.
The read/write channel 116 may be coupled to a solid state memory 120 (via a formatter and with buffer manager logic located therebetween). The solid state memory 120 may be a volatile memory, such as DRAM, or a non-volatile memory, such as flash memory and the like.
The data storage device 100 can also include a media cache 122. The media cache 122 may be a partition of the magnetic recording media 106 that is reserved for the media cache 122. The media cache 122 may be used to store a large amount of data to be readily accessible, available and aggregated, potentially reducing the time required to carry out data transfer commands.
During operation, the data storage device 100 receives various data transfer commands (e.g., a read command or a write command) from the host 150. In a multi-actuator data storage device 100, the host 150 may view each actuator 102A and 102B of the data storage device 100 as a separate data storage device. As such, each data transfer command may be directed to a particular actuator (e.g., a read command for data accessible by the first actuator 102A, a write command to write data to media accessible by the second actuator 102B).
Data associated with a write command may be received from the host 150 by the interface 108 and initially stored to the buffer 118. The data is encoded or otherwise processed by the read/write channel 116 and eventually stored to the magnetic recording media 106 via one of the read/write heads 104A or 104B coupled to the respective first actuator 102A and the second actuator 102B. In certain embodiments, the data is stored to the media cache 122 before its final position on the magnetic recording media 106. Data associated with a read command may be retrieved from the magnetic recording media 106 or media cache 122 and stored in the buffer 118. Such data is then transferred to the host 150 by the interface 108. While data is being transferred over the interface 108 in response to a read command or write command, the interface 108 (assuming only one data path) cannot be used to transfer data associated with a separate read command or write command. As such, subsequent data transfers have to wait for previously-scheduled data transfers to complete before starting.
As mentioned above, the data storage device 100 can include logic that dictates how data transfer commands are scheduled to balance how data is transferred through the interface 108 shared between the multiple actuators 102A and 102B. Such logic may be stored and executed by components of the data storage device such as the SOC 110. For example, the logic may be stored in the memory 114 of the system controller 112.
The first rule includes only scheduling read commands that are associated with data at least partially stored in the buffer 118. In certain embodiments, a read command is able to be scheduled only if all of the requested data is available in the buffer 118. In other embodiments, a read command is able to be scheduled only if the requested data is partially available in the buffer 118 and the requested data not in the buffer 118 can be continuously transferred to the buffer 118 without interruption before completing the read command. In both embodiments, the read command is scheduled when the requested data is available such that it can be continuously transferred through the interface 108. As such, the interface 108 can be continuously used without waiting for currently unavailable data to be made available to the buffer 118 (and therefore to the interface 108).
The second rule includes only scheduling write commands that are associated with an amount of data that can be stored to available capacity of the buffer 118. In certain embodiments, a write command is able to be scheduled only if the buffer 118 has enough available capacity to store all of the to-be-written data. In other embodiments, a write command is able to be scheduled only if the buffer 118 has enough available capacity to store and/or empty the buffer 118 such that all of the to-be-written data can be continuously transferred to the buffer 118 (and therefore across the interface 108) without interruption before completing the write command. In both approaches, the write command is scheduled when the buffer 118 has enough available capacity for the to-be-written data to be continuously transferred through the interface 108. As such, the interface 108 can be continuously used without waiting for the buffer 118 to empty some of its contents before transferring data across the interface 108.
The method 200 also includes applying a third rule for data transfer commands associated with a random read or write workload (block 204 in
The method 300 can select and assign a data path to either a first Lun (referred to as Lun_X in
In sequential workloads, performance is measured in terms of a sustained data rate. Meeting the sustained data rate depends on scheduling commands with a data transfer length (e.g., number of sectors to transfer) that is larger than a transfer length threshold. The particular value for the transfer length threshold may vary depending on a given product's configuration.
For sequential workloads, data transfers can be balanced between Luns depending on two different scenarios and therefore apply respective rules (e.g., a fourth rule for the first scenario and a fifth rule for the second scenario). The method 400 first determines which scenario is applicable (block 402 in
The second scenario involves the two Luns having different transfer lengths—one of which is less than the transfer length threshold and one of which is larger than the transfer length threshold. For the second scenario, the method 400 attempts to meet a sustained data rate associated with the transfer length threshold. In particular, the method 400 prioritizes large data transfers until such data transfers can no longer meet the sustained data rate. For example, block 408 of
Next, as noted in block 410 of
The deficit tracks how much time is missed when one Lun misses a data transfer. For example, if a data transfer is scheduled to start at 11:30:00:00 am, but the data is actually transferred at 11:30:00:01 am, the deficit time is 1 millisecond.
The data storage device may require that a command with transfer length Y has to be scheduled once for transfer to the host every Freq_Interval second such that the sustained data rate is satisfied. For example, if the desired sustained data rate is 100 MB per second and the transfer length is 1 MB, the data transfer has to occur 100 times in one second. The frequency interval is the interval to start a data transfer and is calculated as follows: Y/(256*X) second, where Y is the transfer length in terms of number of sectors based on a 4K sector size and X is the media rate in terms of MB.
The saving time tracks how much time one Lun schedules a data transfer earlier than the frequency interval and is calculated by determining the difference in the amount of time between the frequency interval and the scheduled data transfer For example, if the transfer length is 1 MB and has to occur every 10 milliseconds, the savings time is 1 millisecond if the data transfer only took 9 milliseconds.
As mentioned above, the methods disclosed herein and outlined in the figures can be executed by circuitry of the data storage device 100. For example, the SOC 110 comprising the system controller 112 and/or the read/write channel 116 can carry out the disclosed methods.
Various modifications and additions can be made to the embodiments disclosed without departing from the scope of this disclosure. For example, while the embodiments described above refer to particular features, the scope of this disclosure also includes embodiments having different combinations of features and embodiments that do not include all of the described features. Accordingly, the scope of the present disclosure is intended to include all such alternatives, modifications, and variations as falling within the scope of the claims, together with all equivalents thereof.
Number | Name | Date | Kind |
---|---|---|---|
4270154 | Crawford | May 1981 | A |
4423448 | Frandsen | Dec 1983 | A |
4544972 | Kogure et al. | Oct 1985 | A |
4937693 | Connolly et al. | Jun 1990 | A |
4959782 | Tulpule et al. | Sep 1990 | A |
5223993 | Squires et al. | Jun 1993 | A |
5261058 | Squires et al. | Nov 1993 | A |
5274773 | Squires et al. | Dec 1993 | A |
5293282 | Squires et al. | Mar 1994 | A |
5341351 | Ng | Aug 1994 | A |
5343345 | Gilovich | Aug 1994 | A |
5343347 | Gilovich | Aug 1994 | A |
5355486 | Cornaby | Oct 1994 | A |
5412666 | Squires et al. | May 1995 | A |
5475498 | Radice | Dec 1995 | A |
5477401 | Squires et al. | Dec 1995 | A |
5523901 | Anderson et al. | Jun 1996 | A |
5566348 | Dahman | Oct 1996 | A |
5610808 | Squires | Mar 1997 | A |
5694581 | Cheng | Dec 1997 | A |
5761007 | Price et al. | Jun 1998 | A |
5805386 | Faris | Sep 1998 | A |
5983485 | Misso | Nov 1999 | A |
6005743 | Price et al. | Dec 1999 | A |
6005747 | Gilovich | Dec 1999 | A |
6057990 | Gilovich | May 2000 | A |
6121742 | Misso | Sep 2000 | A |
6344938 | Smith | Feb 2002 | B1 |
6384998 | Price et al. | May 2002 | B1 |
6437937 | Guo | Aug 2002 | B1 |
6449130 | Koyama | Sep 2002 | B1 |
6490138 | Prater | Dec 2002 | B1 |
6493172 | Morris et al. | Dec 2002 | B1 |
6519109 | Price et al. | Feb 2003 | B1 |
6560075 | Price et al. | May 2003 | B2 |
6563657 | Serrano et al. | May 2003 | B1 |
6603640 | Prater et al. | Aug 2003 | B1 |
6678120 | Money | Jan 2004 | B2 |
6687092 | Kan et al. | Feb 2004 | B2 |
6690549 | Aikawa et al. | Feb 2004 | B1 |
6735032 | Dunn et al. | May 2004 | B2 |
6819513 | Chainer et al. | Nov 2004 | B2 |
6847504 | Bennett et al. | Jan 2005 | B1 |
7031115 | Gilovich | Apr 2006 | B1 |
7102842 | Howard | Sep 2006 | B1 |
7146623 | Kuwajima et al. | Dec 2006 | B2 |
7199981 | Zabtcioglu | Apr 2007 | B2 |
7272697 | Klein | Sep 2007 | B2 |
7315429 | van Zyl | Jan 2008 | B2 |
7385781 | Craig et al. | Jun 2008 | B1 |
7430091 | Manasse | Sep 2008 | B2 |
7469463 | Prater et al. | Dec 2008 | B2 |
7492542 | van Zyl | Feb 2009 | B2 |
7710683 | Craig et al. | May 2010 | B2 |
7760463 | Ward et al. | Jul 2010 | B2 |
8028311 | Gilovich | Sep 2011 | B2 |
8607007 | Lee | Dec 2013 | B2 |
9830939 | Hamilton | Nov 2017 | B1 |
10090017 | Gartee | Oct 2018 | B2 |
20020039259 | Koyama et al. | Apr 2002 | A1 |
20020060885 | Money | May 2002 | A1 |
20030090838 | Pottebaum et al. | May 2003 | A1 |
20070297083 | Deguchi et al. | Dec 2007 | A1 |
20120250177 | Somanache et al. | Oct 2012 | A1 |