Data storage devices (DSDs) are often used by electronic devices to record data onto or to reproduce data from a recording media. As electronic devices become increasingly mobile, the risk of mechanical shock to a DSD increases from events such as when the electronic device is dropped. In order to prevent damage to the DSD, some DSDs may take precautionary action before impact if it is sensed that the electronic device or DSD is falling. In the example of a DSD including a rotating magnetic disk as a recording media, a magnetic head may be moved away from the disk during a fall to prevent contact between the head and the disk at impact after the fall. Such contact between the head and the disk may result in damage to the disk and loss of data stored on the disk.
The increasing mobility and increasing physical movement of electronic devices such as tablet computers have also made it more difficult to accurately determine when a DSD is in a falling state as opposed to some other type of motion which might provide a false indication of falling. A false indication of falling may, for example, result from walking or running with the electronic device or may result from movement of the electronic device as part of a particular application such as gaming. False indications of falling can degrade performance of the electronic device due to unnecessary preventative measures taken by the DSD such as moving a head away from a disk during a false fall. On the other hand, the failure to take precautionary measures during an actual fall can result in severely damaging the DSD and/or losing data.
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.
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.
As shown in
In one embodiment, DSD 100 includes controller 122 which can perform a fall determination process as 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
Disk 102 comprises a number of radial spaced, concentric tracks for storing data and can form part of a disk pack (not shown) which can include additional disks below disk 102.
With reference to
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 102, data to be written to disk 102, and/or instructions for DSD 100, such as instructions loaded into volatile memory 124 from firmware 10.
Interface 126 is configured to interface DSD 100 with calibration device 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, interface 126 can be included as part of controller 122. Although
DSD 100 also includes spindle motor (SM) 138 for rotating disk 102 when writing data to disk 102 or reading data from disk 102. SM 138 and VCM 132 are connected to controller 122 which includes control circuitry such as a servo controller to control SM 138 and VCM 132 with VCM control signal 30 and SM control signal 34, respectively. These control signals can be, for example, control currents for controlling the rotation of VCM 132 and SM 138.
Sensor 134 is configured to detect acceleration of DSD 100 and can include, for example, an XYZ sensor with three degrees of freedom. In other embodiments, sensor 134 can include a sensor with six degrees of freedom such as an XYZ-YPR sensor. The detected acceleration can be input to controller 122 to determine when DSD 100 is in a falling state. For example, sensor 134 may detect that DSD 100 is in a free-fall state or that DSD 100 is in a tipping-drop state where DSD 100 rotates about an axis while at least a portion of DSD 100 drops. Controller 122 may then implement protective measures to prevent damage to DSD 100 before impact. In particular, controller 122 can control VCM 132 via VCM control signal 30 to move head 129 away from disk 102 in an attempt to avoid contact between head 129 and disk 102 during an impact. Contact between head 129 and disk 102 can result in damage to disk 102 and loss of data stored on disk 102.
In other embodiments, sensor 134 may be part of a host (not shown) in communication with DSD 100 and located in the same device as DSD 100. In such embodiments, the input of sensor 134 may be received by controller 122 via interface 126.
In block 201, an initial input is received by controller 122 from sensor 134 indicating an acceleration of DSD 100 during an initial time period. In one implementation, the input from sensor 134 may include a series of acceleration values for each dimension detected by sensor 134 every 1 ms over an initial time period of 15 ms. In the case where sensor 134 is a three axis XYZ sensor, the input received in block 201 can include acceleration values in each of an x dimension, y dimension and z dimension during the initial time period.
In block 202, controller 122 of DSD 100 determines whether an initial acceleration threshold has been reached by the initial input received in block 201. The initial acceleration threshold may be an acceleration set for each of the dimensions detected by sensor 134. For example, in an implementation where sensor 134 is an XYZ sensor, the initial acceleration threshold may be a value of 0.6 times the gravitational acceleration constant G in each of the three dimensions detected by sensor 134. In other embodiments, the initial acceleration threshold may be reached when sensor 134 has detected accelerations of less than or equal to 0.6 G in each of the measured dimensions for the entirety of the initial time period. If the initial acceleration threshold has not been reached in block 202, the process returns to block 201 to receive another initial input from sensor 134.
If the initial acceleration threshold has been reached in block 202, this can trigger controller 122 to receive another input from sensor 134 in block 203 indicating an acceleration of DSD 100 during a time period following the initial time period. As discussed in more detail below, evaluation of the input by controller 122 can serve as an attempt to confirm that the trigger caused by reaching the initial acceleration threshold in block 202 indicates an actual falling state.
The second period of time may be longer than the initial period of time and can be based on a safe fall time for DSD 100 where a fall time longer than the safe fall time is more likely to result in damage to DSD 100. For example, DSD 100 may be able to withstand a fall from a height of 8.6 cm in most situations without damage. The second period of time may then be set based on a corresponding fall time of 132 ms for a height of 8.6 cm. In this example, the second period of time may be set to 40 ms to allow for 15 ms to determine whether the initial acceleration threshold has been reached in block 202, to allow for a park time of 60 ms to move head 129 away from disk 102, and to allow for a margin of safety of 17 ms before impact at 132 ms or more. By setting the second period of time in this way, it is ordinarily possible to reduce the likelihood of damage to DSD 100 since there should be enough time to confirm an actual fall and move head 129 away from disk 102 before an impact resulting from a fall that could damage DSD 100. Of course, in other embodiments the second period of time can be set differently to meet different design criteria.
In block 204, controller 122 calculates a classifier function using the input received from sensor 134 in block 203. The classifier function can serve as a binary classifier to determine whether DSD 100 is in an actual fall state or if DSD 100 is experiencing a motion similar to falling in a false fall state. In one embodiment, the classifier function can generally be expressed as shown in Equation 1 below to provide a binary classification of an actual fall or a false fall.
c=f(x1 . . . xn,y1 . . . yn,z1 . . . zn) Eq. 1
c≧0, actual fall
c<0, false fall
In Equation 1, x1 . . . xn can represent accelerations detected by sensor 134 in an x dimension during samplings from time 1 to time n (e.g., 1 ms to 40 ms). Similarly, y1 . . . yn can represent accelerations detected by sensor 134 in a y dimension from time 1 to time n, and z1 . . . zn can represent accelerations detected by sensor 134 in a z dimension from time 1 to time n. The values for these accelerations can be temporarily stored by controller 122 in volatile memory 124, for example. The calculated value of the classifier function can then be used by controller 122 to determine whether DSD 100 is actually falling.
In one embodiment, the classifier function may take the form of a function including a weighted sum of values derived from the input, such as:
c=w
0+Σni−1wxy,ixiyi+wxz,ixizi+wyz,iyizi+wx
where w0, wxy, wxz, wyz, wx
c=w
0+Σni=1wxy,i|xi∥yi|+wxz,i|xi∥zi|+wyz,i|xi∥zi|+wx
With reference to
If the calculated value does not indicate an actual fall, the process returns to block 201 to receive another initial input from sensor 134 during another initial time period. On the other hand, if the calculated value of the classifier function indicates an actual fall in block 206, controller 122 controls VCM 132 via VCM control signal 30 to move head 129 away from disk 102 as a protective action against an impending mechanical shock event.
The fall determination process of
In other embodiments, blocks 201 and 202 of
In block 300, the calibration process begins and the period of time for an acceleration input (e.g., the input received in block 203 of
In block 304, acceleration values are recorded for a plurality of actual falls and a plurality of false falls. These values may be detected by sensor 134 in DSD 100 and stored in memory 105 of calibration device 101 as acceleration values 15. In this regard, the test falls may be performed by dropping DSD 100 or an electronic device including DSD 100 from different heights and/or with different rotations with calibration device 101 connected or disconnected from DSD 100. In addition, the iterative testing of actual and false falls in block 304 may be performed with different DSDs of the same design in situations where damage may affect the detection or quality of acceleration values.
In block 306, processor 103 of calibration device 101 sets a bias value (i.e., w0) if needed and minimizes (i.e., mathematically reduces) a cost function using acceleration values 15 to set weight values (e.g., wxy, wxz, wyz, wx
c(w)=error2 Eq. 4
In addition, a logistic function can be used to approximate a step function to set a particular value of the classifier function (e.g., c=0 in the example of Equation 1 above) as the dividing line between actual falls and false falls. An example of such a logistic function is:
which is graphed in
where the result, r, is equal to one for actual falls and equal to zero for false falls.
The recorded acceleration values 15 can then be used to calculate classifier function values c for the plurality of actual falls and the plurality of false falls. In this regard, the fall indicators 35 can be used to relate sets of acceleration values in acceleration values 15 to either actual falls or false falls and for setting the value for r accordingly.
Returning to
w
n+1
=w
n+a·error·ln·(1−ln)·s Eq. 7
where s is a particular set of acceleration values from acceleration values 15 corresponding to either an actual fall or a false fall, and a is an optional coefficient for weighting actual falls more heavily than false falls. For example, a can be set to a higher value such as a=2 for sets of acceleration values for actual falls than for sets of acceleration values for false falls which may have a=1.
Actual falls may be weighted more heavily during the calibration process to reduce the misclassification of actual falls as false falls at a cost of possibly misclassifying some false falls as actual falls during operation of DSD 100. In other words, the possible damage to DSD 100 due to misclassifying an actual fall can be less of a penalty than a temporary loss in performance due to misclassifying a false fall as an actual fall. The choice of classifying actual falls with c≧0 rather than simply c>0 in Equation 1 above can also reflect this preference for more accurate determination of actual falls.
In block 308, the set weight values can be stored in memory 105 of calibration device 101 as weight values 25. The weight values are then used to write the weighted classifier function as part of firmware 10 of DSD 100 for use during operation of DSD 100. The calibration process of
Moreover, 100% of the actual falls (19 out of 19 actual falls) were correctly determined with a calculated value of c greater than zero. Thus, by using a classification function as disclosed herein, it is ordinarily possible to accurately differentiate between actual falls and false falls.
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/857,449 (Atty. Docket No. T6526.P), filed on Jul. 23, 2013, which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61857449 | Jul 2013 | US |