# Patent

## Title
Actuator prepositioning for disk drive

## Abstract

A target location for an actuator of a disk drive is determined for prepositioning the actuator before receiving a command from a host. The target location is determined based on at least one of a characteristic of the disk drive, recent command activity of the host, and information provided by the host. The actuator is moved toward the target location to preposition the actuator.

## Background
CROSS-REFERENCE TO RELATED APPLICATION
This application claims the benefit of U.S. Provisional Application No. 61/810,472, filed on Apr. 10, 2013, which is hereby incorporated by reference in its entirety.


BACKGROUND
Disk drives are often used to write data on or to read data from a recording media. A disk drive can include multiple rotating magnetic disks with tracks for storing data and heads to read data from the disks and/or to write data on the disks. The disks are typically arranged in a stacked configuration with the heads arranged in a corresponding stacked assembly referred to as a head stack assembly (HSA). The HSA can be attached to an actuator that is typically moved by a voice coil motor (VCM). This arrangement ordinarily allows for positioning of the head to read data from or to write data on an adjacent surface of one of the disks in the stack.
One problem encountered by disk drives is a long seek time which includes the amount of time it takes to move the actuator to a target location in order to read or write data in accordance with a read or write command received from a host. This problem is worsened when the actuator must move or seek over a relatively far distance across the disk. Such seek delays can decrease the overall performance of the disk drive.



BRIEF DESCRIPTION OF THE DRAWINGS
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. Reference numbers are reused throughout the drawings to indicate correspondence between referenced elements.
FIG. 1 is a block diagram depicting a disk drive according to an embodiment.
FIG. 2 is a flowchart for an actuator prepositioning process according to an embodiment.
FIG. 3 is a flowchart for an actuator prepositioning process according to another embodiment.
FIG. 4A is a graph depicting a first modeled actuator performance without actuator prepositioning.
FIG. 4B is a graph depicting a second modeled actuator performance with actuator prepositioning.



DETAILED DESCRIPTION
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.
FIG. 1 illustrates a block diagram including host 101 in communication with disk drive 106. Host 101 and disk drive 106 can form, for example, a computer system (e.g., desktop, mobile/laptop, tablet, smartphone, etc.) or other electronic device. In the example of FIG. 1, disk drive 106 is a hybrid drive including two types of non-volatile memory (NVM), i.e., magnetic disk 200 and solid state NVM 128. In other embodiments, disk drive 106 may not include solid state NVM 128.
As shown in FIG. 1, disk drive 106 includes controller 122 which can perform various operations of disk drive 106 described herein. Controller 122 can be implemented using 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 the example of FIG. 1, disk drive 106 includes rotating magnetic disk 200 and head 129 connected to the distal end of actuator 130 which is rotated about pivot 134 by voice coil motor (VCM) 132 to position head 129 over disk 200. Head 129 includes at least a read element (not shown) for reading data from disk 200, and a write element (not shown) for writing data on disk 200.
Disk 200 comprises a number of radial spaced, concentric tracks 210 for storing data. In addition, disk 200 includes a plurality of angularly spaced servo wedges 2200-220N, each of which may include embedded servo information that can be read from disk 200 by head 129 to determine the position of head 129 over disk 200. For example, each servo wedge 2200-220N may include a pattern of alternating magnetic transitions (servo burst), which may be read from disk 200 by head 129 and transmitted as position signal 32 for processing by controller 122 to measure the position of head 129 in relation to disk 200. The angular spacing between servo wedges 2200-220N may be uniform, as shown in the example of FIG. 1.
Disk drive 106 also includes solid state NVM 128 for storing data. While the description herein refers to solid state NVM generally, it is understood that solid state memory may comprise one or more of various types of memory devices such as flash integrated circuits, 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 NVM (non-volatile memory) chips, or any combination thereof.
Volatile memory 124 can include, for example, a DRAM. Data stored in volatile memory 124 can include data read from disk 200 (e.g., portions of user data), data to be written to disk 200, and/or instructions for disk drive 106, such as instructions loaded into volatile memory 124 from a disk drive firmware.
Host interface 126 is configured to interface disk drive 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 122. Although FIG. 1 depicts the co-location of host 101 and disk drive 106, in some embodiments the two need not be physically co-located. In some embodiments, disk drive 106 may be located remotely from host 101 and connected to host 101 via a network interface.
In operation, controller 122 writes data to and reads data from disk 200 in response to commands from host 101. To write data to disk 200, controller 122 positions head 129 over disk 200 by sending VCM control signal 30 (e.g., control current) to VCM 132 which moves actuator 130 to a target location. Controller 122 processes data to be written to disk 200 into write signal 32, which is output to head 129. For its part, head 129 converts write signal 32 into a magnetic field that magnetizes the surface of disk 200 based upon write signal 32, thereby magnetically writing data on disk 200. Controller 122 may notify host 101 after data for the write command has been successfully written on disk 200.
When controller 122 receives a read command from host 101 requesting data written on disk 200, controller 122 positions head 129 over disk 200 by sending VCM control signal 30 to VCM 132 which moves actuator 130 to a target location. Head 129 then generates read signal 32 based upon the magnetization of the disk surface under head 129 and controller 122 processes read signal 32 into data.
As discussed in more detail below with reference to FIGS. 2 to 4B, by prepositioning actuator 130 before receiving a command from host 101, it is ordinarily possible to improve performance of disk drive 106. In particular, a target location can be determined based on a predefined set of parameters and/or fixed or adaptive heuristics in view of the current host workload and operating mode. Prepositioning the actuator toward the target location ordinarily improves performance for the current host workload by decreasing physical data access time.
Many workloads to a disk drive have varying levels of logical and physical command access locality and often times have measurable variation in the arrival rate of these commands, even at very shallow host queue depths. If the disk drive is not currently actively servicing a pending host command and there is some level of delay from the host for a new command to execute, it is often beneficial to determine a likely expected location for the next command that will be received from the host and preposition (or start to move) the actuator to a location that will decrease physical access time to the next command, thus increasing throughput.
FIG. 2 is a flowchart for an actuator prepositioning process which can be performed by controller 122. The process of FIG. 2 begins in block 300 while disk drive 106 is not actively servicing a command, such as a read or write command received from host 101. In addition, controller 122 may wait a threshold period of time at block 300 after performing a previous command from host 101. The threshold period can vary, for example, based on an average benefit such as an average reduction in time to perform a command with prepositioning as compared to a penalty for prepositioning in the wrong direction such as a worst case or average seek time penalty for prepositioning in the wrong direction. If disk drive 106 has the capability to abort an active seek command during prepositioning, the threshold period may be reduced since the seek time penalty will be reduced.
In block 302, disk drive 106 may optionally receive host information from host 101 which can include hinting from host 101 using a hinting protocol or custom command. Host Information can include information sent from host 101 such as a location for expected future command activity (e.g., a logical block address range) or a priority for a certain type of data, such as file system metadata. As discussed below with reference to block 306, such host information can be used to Identify an expected centroid on disk 200 for future command activity and/or higher priority regions on disk 200 where reduced data access times are more valuable to host 101.
In block 304, disk drive 106 may optionally retrieve information on recent host command activity and/or characteristics of disk drive 106. Examples of information on recent host command activity can include recent activity of disk drive 106, such as the last twenty commands performed by disk drive 106 with location information. The activity information can identify “hot spots” on disk 200 where most of the recent activity has taken place and can include locations on disk 200 (e.g., bands of activity, centroid of recent activity, results from a self-learned behavior by a higher-order algorithm) for each of the various types of commands of a determined recent activity period. The activity information may also include pending or active host commands that are queued for performance by disk drive 106, relationships to current or recent streams as determined by stream-detection logic (e.g., whether it is part of a data stream), and scheduled background activity. In the example of scheduled background activity, this information may provide a location on disk 200 where scheduled background activity is likely to begin or resume.
Information on recent host command activity can also include the level of random, sequential, and/or near sequential activity. Information on sequential activity (e.g., recent sequential writes) can provide a location on disk 200 where the sequential activity left off which can indicate where such sequential activity may resume.
Examples of characteristics of disk drive 106 retrieved in block 304 can include parameters such as a data capacity of disk drive 106, a total quantity of commands that can be queued before execution, and/or a cache size. Disk drive characteristics may also include operational features of disk drive 106, such as whether active seeks can be aborted, which is discussed in more detail below with reference to FIG. 3.
In block 306, controller 122 determines a target location for actuator 130 based on at least one of a disk drive characteristic, recent host command activity, and host information. The disk drive characteristic, recent host command activity and host information can include information obtained in blocks 302 and 304 above. By using static and/or heuristic methods, controller 122 can determine a target location to bias the actuator to a preferred position for servicing a future command from host 101. Since head 129 is mounted on actuator 130, the target location can, for example, correspond to a particular location for head 129 relative to a particular track 210 on disk 200.
In one embodiment, disk drive 106 may determine the target location based on the drive characteristic of a capacity of disk drive by setting the target location such that head 129 would be prepositioned on disk 200 at a midpoint of a range for either a total available data capacity of disk 200 or a data capacity previously used on disk 200. As understood by those of ordinary skill in the art, many other target locations can be determined using disk drive characteristics, recent host command activity and/or host information.
In block 308, controller 122 commands VCM 132 via VCM control signal 30 to move actuator 130 toward the target location determined in block 306. The process of FIG. 2 ends in block 310 when actuator 130 reaches the target location.
In some cases, a command from host 101 may be received by disk drive 106 while actuator 130 is in the process of moving toward the target location. In such cases, it may or may not be advantageous to continue moving toward the target location. If an actuator preposition location was identified and the value of prepositioning to the target location is determined to be of higher value, then controller 122 does not interrupt the command to the target location. With specific workload command locality, it may be more advantageous to not abort the current prepositioning seek and schedule the new command with some lower execution priority in accordance with a prioritized command scheduling algorithm in order to improve performance. For example, controller 122 may use hinting from host 101 or historical host command activity to determine that a set of localized or sequential commands is likely to be received from host 101 soon after receiving the new command. In such a situation, controller 122 may determine that prepositioning to the target location is of higher value than servicing the new command. In addition, if the new command is a random write command that can be committed to another type of NVM such as solid state NVM 128, then the new command can be stored in the other type of NVM without having to seek to a new location on the disk.
On the other hand, if the ability to abort active seeks is available, then on early receipt of a high priority command, it might be beneficial to abort the active seek to the target location and/or determine a new target location in consideration of the newly-received command.
FIG. 3 is a flowchart for an actuator prepositioning process which includes evaluation of a command received after a target location has been determined. An understanding of blocks 400 to 408 can be attained with reference to the description of blocks 300 to 308 described above for FIG. 2. Accordingly, this description is not repeated here.
In block 410, controller 122 checks whether a new command has been received from host 101. If not, actuator 130 continues to move toward the target location until it reaches the target location in block 420.
If a new command is received in block 410, controller 122 determines whether the new command requires movement of actuator 130. In this regard, some new commands may not require movement of actuator 130. In one example, the new command can be a read command for data which is stored in a read cache of disk drive 106 (e.g., a read cache in volatile memory 124). Disk drive 106 can provide such cached data to host 101 without moving actuator 130 over disk 200. In another example, the new command can be a relatively isolated/unrelated write command for a relatively small amount of data. If so, controller 122 can store the data of the new write command in solid state NVM 128 if available instead of moving actuator 130 to store the data on disk 200. Disk drive 106 may also be able to temporarily store data for a new write command to a write cache (e.g., a write cache in volatile memory 124) for later storage to an NVM such as disk 200 or solid state NVM 128. If the new command does not require movement of actuator 130, then actuator 130 continues moving toward the target location until actuator 130 reaches the target location in block 420.
If the new command is determined in block 412 to not require actuator movement, controller 122 determines in block 414 whether the new command has high value relative to actuator prepositioning. As discussed above with reference to block 302 of FIG. 2, some data may be given a high priority, such as file system metadata. Controller 122 in block 414 may determine that the new command has a higher value relative to prepositioning the actuator. If so, controller 122 in block 422 aborts the active seek and determines a new target location in consideration of the new command. On the other hand, if controller 122 determines in block 414 that the new command does not have a high value relative to the actuator prepositioning, controller 122 reschedules the new command with a lower priority in block 418. The process of FIG. 3 then ends in block 420 when the actuator reaches the target location.
By performing actuator prepositioning, it is ordinarily possible to improve disk drive performance under a variety of conditions (i.e., different workloads) without additional component cost. FIGS. 4A and 4B are graphs depicting modeled actuator performance for a given trial host workload including random reads of 64 KB over an available data capacity for a disk drive.
FIG. 4A models a disk drive without actuator prepositioning where positioning happened instantaneously or the delay from the host for a replacement command was sufficiently slow to allow a non-instantaneous actuator positioning to occur.
FIG. 4B models a disk drive using actuator prepositioning where the host delay of a follow-on command is large enough for the actuator prepositioning to occur (additional approximate 6 ms in this example). The target location for the disk drive of FIG. 4B was determined as the middle of a range for a total available data capacity of disk 200, i.e., 50% LBA capacity.
As shown in the table below, there was approximately a 3.5% improvement in input/output operations per second (78.5 IOPS vs. 75.9 IOPS) and a lower average seek time for the disk drive of FIG. 4B using actuator prepositioning. Accordingly, actuator prepositioning as disclosed herein ordinarily allows for improved disk drive performance with a lower average seek time.



















IOPS @ 
IOPS @ 
Avg-

AvgDisk- 
Avg-
Avg-
Missed-



45-us Avg
6-ms Avg
Seek-
Avg-
Transfer-
NonQueued-
Seek-
Rev-



Intercommand
Intercommand
Time
Latency 
Time
CCT
Distance
Rate



Time
time
(ms)
(ms)
(ms)
(ms)
(cylinders)
(%)







Normal
138.51
75.90
3.57
3.00
0.39
7.17
49540.04
1%


Seek to 50% LBA 
147.47
78.52
3.13
3.00
0.39
6.74
37020.17
1%









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 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.

## Claims

1. A method for positioning an actuator of a disk drive in communication with a host, the method comprising:
determining a target location for prepositioning the actuator to a position expected to decrease a physical access time for a subsequent command from the host before receiving the subsequent command from the host, wherein the target location is determined based on at least one of a characteristic of the disk drive, recent command activity of the host, and information provided by the host; and
moving the actuator toward the target location.

2. The method of claim 1, further comprising waiting a threshold period of time after performing a command received from the host before moving the actuator toward the target location.

3. The method of claim 2, wherein the threshold period of time is based on an average reduction in time to perform a command when the actuator is prepositioned before performing the command.

4. The method of claim 1, wherein the information provided by the host includes at least one logical block address for expected future commands and/or a priority for a type of data.

5. The method of claim 1, wherein the recent command activity of the host includes at least one of:
a recent set of commands received from the host,
commands received from the host that are queued for performance by the disk drive,
whether recent commands received from the host are part of a data stream,
scheduled background activity of the host, and
location information for a set of recent commands received from the host.

6. The method of claim 1, wherein the characteristic of the disk drive includes at least one of:
data capacity of the disk drive,
a data capacity of a cache of the disk drive for storing data associated with commands received from the host,
a total quantity of commands that can be queued by the disk drive before execution of the commands, and
whether movement of the actuator toward the target location can be aborted before reaching the target location.

7. The method of claim 6, wherein the disk drive includes at least one disk for storing data and the target location is determined based on the data capacity of the disk drive such that the target location corresponds to a midpoint in a range for a total available data capacity or for a total previously written data capacity on the at least one disk.

8. The method of claim 1, further comprising:
receiving a command from the host while the actuator moves toward the target location; and
determining whether to abort moving the actuator toward the target location or to continue moving the actuator toward the target location.

9. The method of claim 8, wherein the disk drive includes a solid state memory for storing data and the method further comprises:
determining to continue moving the actuator toward the target location if the received command is an isolated write command for storing data less than a predetermined size; and
storing the data for the isolated write command in the solid state memory.

10. The method of claim 8, further comprising:
determining whether performing the received command is a higher priority than prepositioning the actuator; and
when it is determined that performing the received command is a higher priority than prepositioning the actuator:
aborting movement of the actuator toward the target location;
determining a new target location based on the received command; and
moving the actuator toward the new target location.

11. A disk drive in communication with a host, the disk drive comprising:
at least one disk for storing data;
at least one head for reading data from and writing data to the at least one disk;
an actuator for positioning the at least one head in relation to the at least one disk; and
a controller configured to:
determine a target location for prepositioning the actuator to a position expected to decrease a physical access time for a subsequent command from the host before receiving the subsequent command from the host, wherein the target location is determined based on at least one of a characteristic of the disk drive, recent command activity of the host, and information provided by the host; and
command movement of the actuator toward the target location.

12. The disk drive of claim 11, wherein the controller is further configured to wait a threshold period of time after the disk drive performs a command received from the host before commanding movement of the actuator toward the target location.

13. The disk drive of claim 12, wherein the threshold period of time is based on an average reduction in time for the disk drive to perform a command when the actuator is prepositioned before performing the command.

14. The disk drive of claim 11, wherein the information provided by the host includes at least one logical block address for expected future commands and/or a priority for a type of data.

15. The disk drive of claim 11, wherein the recent command activity of the host includes at least one of:
a recent set of commands received from the host,
commands received from the host that are queued for performance by the disk drive,
whether recent commands received from the host are part of a data stream,
scheduled background activity of the host, and
location information for a set of recent commands received from the host.

16. The disk drive of claim 11, wherein the characteristic of the disk drive includes at least one of:
data capacity of the disk drive,
a data capacity of a cache of the disk drive for storing data associated with commands received from the host,
a total quantity of commands that can be queued by the disk drive before execution of the commands, and
whether movement of the actuator toward the target location can be aborted before reaching the target location.

17. The disk drive of claim 16, wherein the controller is further configured to determine the target location based on the data capacity of the disk drive such that the target location corresponds to a midpoint in a range for a total available data capacity or for a total previously written data capacity on the at least one disk.

18. The disk drive of claim 11, wherein the controller is further configured to:
receive a command from the host while the actuator moves toward the target location; and
determine whether to abort moving the actuator toward the target location or to continue moving the actuator toward the target location.

19. The disk drive of claim 18, further comprising a solid state memory for storing data, and wherein the controller is further configured to:
determine to continue moving the actuator toward the target location if the received command includes an isolated write command for storing data less than a predetermined size; and
store the data for the isolated write command in the solid state memory.

20. The disk drive of claim 18, wherein the controller is further configured to:
determine whether performing the received command is a higher priority than prepositioning the actuator; and
when it is determined that performing the received command is a higher priority than prepositioning the actuator:
abort movement of the actuator toward the target location;
determine a new target location based on the received command; and
command movement of the actuator toward the new target location.