The present disclosure is generally related to a diagnostic utility for a data storage device. Further, the present disclosure is also related to monitoring host activity and storing information related to the host activity in a nonvolatile cache of a data storage device.
In the following detailed description of the embodiments, reference is made to the accompanying drawings which form a part hereof, and in which are shown by way of illustration of specific embodiments. It is to be understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present disclosure.
When communication fails between a host computer and a data storage device, it can be difficult to determine the cause of the communication failure. Often, the data storage device is considered the cause of the communication failure and returned to the manufacturer. However, the data storage device manufacturer may have an inability to determine if the communication failure was caused by the data storage device or the host computer when the communication failure can not be duplicated; thus, possibly preventing the data storage device manufacturer from identifying and fixing the root cause of the communication failure. This disclosure provides solutions to these problems by implementing systems and methods having a diagnostic utility to monitor a host and and record information to a data storage device. The recorded information may be analyzed after a host or data storage device failure to help determine a cause of the failure.
Referring to
The CPU 102 may also be coupled to a memory controller 110 that can be coupled to a main memory 112 and a graphics interface 114. The memory controller 110 provides an interface to allow the CPU 104 or other devices to access the main memory 112. The main memory 112 may be volatile random access memory (RAM) and can be composed of one or more memory modules. The memory controller 110 includes logic for mapping addresses to and from the CPU 102 and other devices to particular areas of the main memory 112. The graphics interface 114 may include a video controller (not shown) and video memory (not shown) that may be connected to a display. The memory controller 110 handles communications between the CPU 102, the main memory 112, the graphics interface 114, and an input/output (I/O) controller 116 that is coupled to the memory controller 110.
The I/O controller 116 provides an interface for the CPU 104 to access other devices, such as a network interface 118, a basic input output system (BIOS) memory 120, various input devices such as a keyboard or mouse via an input device interface 122, an audio speaker or microphone via an audio interface 124, a data storage device 126 via a data storage device interface 128, and serial I/O devices via a serial I/O interface 130. The BIOS memory 120 may be flash memory or read-only-memory (ROM) and can contain the firmware code to initialize the BIOS and the hardware of the computer system 100 and load the operating system 106.
The data storage device interface 128 may be any interface that allows attachment of data storage devices. In a particular embodiment, the data storage device interface 128 comprises an interface that allows attachment of a disc drive, such as USB, IEEE 1394, SATA, eSATA PATA, SCSI, SAS, or Fiber Channel. The data storage device 126 may be internal or external to a case of the computer system 100. In another embodiment, the I/O controller 116 and the data storage device interface 128 may include logic to support attaching a redundant array of independent discs (RAID); thus, the data storage device 126 may comprise a RAID.
In a particular embodiment, the data storage device 126 may include a log 132 and a diagnostic tool 134. The data storage device 126 may be any type of data storage device, including a solid state storage device, a disc drive storage device, or a hybrid data storage device. A hybrid data storage device as discussed herein is a data storage device having both a magnetic recording medium and a nonvolatile solid state storage medium. In a particular embodiment, the data storage device 126 is removable (i.e. disconnectable) from the computer system 100.
During operation, the firmware from the BIOS memory 120 may be loaded when the computer system 100 is powered-on or reset. The firmware may initialize the BIOS and load the diagnostic utility module 108 into the system memory 104. In a particular embodiment, the computer system 100 may receive the diagnostic utility module 108 from the data storage device 126. The diagnostic utility module 108 can monitor the computer system 100 for an occurrence of data storage device related activity and store information based on the data storage device related activity in a nonvolatile memory of the data storage device 126.
In one embodiment, the diagnostic utility module may be loaded as part of the BIOS. In another embodiment, the BIOS may execute the diagnostic utility module 108 to perform the monitoring of the computer system 100 and the storing of the information in the data storage device 126. The information based on the data storage device related activity may be stored in the log 132 of the data storage device 126 in real-time. In a particular embodiment, the log 132 may be stored in a nonvolatile solid state memory medium of the data storage device 126. The information recorded in the log 132 of the data storage device 126 may include any information useful to determine an error of the computing system 100 and/or the data storage device 126.
In a particular embodiment, the BIOS loads the diagnostic utility module 108 prior to the operating system 106 being loaded. Once the operating system is loaded, the diagnostic utility module 108 can monitor the computer system 100 independent of the operation of the operating system 106 for the occurrence of data storage device related activity. The diagnostic utility module 108 can also store the information based on the data storage device related activity in a nonvolatile memory of the data storage device 126 independent of the operating system 106.
The diagnostic utility module 108 may monitor for data storage device related activity that may include communication between the data storage device 126 and other components of the computer system 100, including read requests, write requests, status requests, test requests, or other data storage device interface commands. Other data storage device related activity that may be monitored may also include network activity of the computer system 100, data bus activity of the computer system 100, operations performed by the operating system 106, applications executed by the operating system 106, and data access requests to another data storage device other than the data storage device 126.
Referring to
Further,
A servo control circuit 220 uses servo data to provide the appropriate current to the coil 224 to position the head(s) 219. The controller 206 can communicate with a processor 222 to move the head(s) 219 to the desired locations on the disc(s) 209 during execution of various pending commands in the command queue 213.
In a particular embodiment, the programmable controller 206 may also be coupled to a nonvolatile solid state memory 214. The nonvolatile solid state memory 214 may be used as a buffer/cache or as addressable memory by the programmable controller 206. In addition, the nonvolatile solid state memory 214 may allow direct memory access from the host via the interface circuit 204.
The nonvolatile solid state memory 214 may include a log file 215, such as the log 132 shown in
In another particular embodiment, the nonvolatile solid state memory 214 may include a diagnostic tool 216, such as the diagnostic utility module 134 shown in
Referring to
Once the BIOS has initialized, the BIOS can load a diagnostic utility into a system memory of the host, at 306. The BIOS may load the diagnostic utility from a memory of a removable data storage device, such as the data storage device 126 shown in
In a particular embodiment, the BIOS may execute the diagnostic utility to monitor the host for data storage related activity, at 310. Once the operating system is loaded, the diagnostic utility may monitor the host for the occurrence of data storage device related activity independent of the operation of the operating system. The diagnostic utility may monitor the host for data storage device related activity that may include communication between the data storage device and other components of the host, including read requests, write requests, status requests, test requests, or other data storage device interface commands. Other data storage device related activity that may be monitored may also include network activity of the host, data bus activity of the host, operations performed by the operating system, applications executed by the operating system, and data access requests to another data storage device.
When the diagnostic utility detects an occurrence of a data storage device related activity, at 312, the diagnostic utility may store information related to the data storage device related activity in a nonvolatile memory of the data storage device, at 314. In a particular embodiment, the nonvolatile memory may be a nonvolatile solid state memory, such as flash memory. The diagnostic utility can also store the information in the nonvolatile memory of the data storage device independent of the operating system. In a particular embodiment, the information may be stored in real time to the nonvolatile memory of the data storage device; thus, allowing information to be retained if there is power loss or host system failure. The information recorded in the nonvolatile memory of the data storage device may include any information useful to determine an error of the host and/or an error of the data storage device.
In a particular embodiment, the information useful to determine an error may include an indication of an action performed by the host or the data storage device, a date of the action, a time of the action, results of the action, a program requesting the action, a data type related to the action (such as a requested file type), or any other information that may be useful to determine an error. In another particular embodiment, the information may include an indication of data traffic between the host and the data storage device. The indication of data traffic may include indications of read or write requests, indications of bandwidth usage of a data bus between the host and the data storage device, indications of operating system activity at the host, such as which programs are performing operations and/or what operations are performed. The information may also include an indication of activity of other components of the host, such as input or output devices, other storage devices, network devices, audio devices, or video devices. The information may also include status, usage, and test results of other memory of the host, such as system memory or main memory
In accordance with various embodiments, the methods described herein may be implemented as one or more software programs running on a computer processor or controller, such as the CPU 102, the memory controller 110, or the controller 206. Dedicated hardware implementations including, but not limited to, application specific integrated circuits, programmable logic arrays and other hardware devices can likewise be constructed to implement the methods described herein. The systems and methods described herein are particularly useful for data storage devices having nonvolatile solid state memory; however, the systems and methods described herein can be applied to any type of data storage system.
The illustrations of the embodiments described herein are intended to provide a general understanding of the structure of the various embodiments. The illustrations are not intended to serve as a complete description of all of the elements and features of apparatus and systems that utilize the structures or methods described herein. Many other embodiments may be apparent to those of skill in the art upon reviewing the disclosure. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. Additionally, the illustrations are merely representational and may not be drawn to scale. Certain proportions within the illustrations may be exaggerated, while other proportions may be reduced. Accordingly, the disclosure and the figures are to be regarded as illustrative rather than restrictive
One or more embodiments of the disclosure may be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to limit the scope of this application to any particular invention or inventive concept. Moreover, although specific embodiments have been illustrated and described herein, it should be appreciated that any subsequent arrangement designed to achieve the same or similar purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all subsequent adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the description.
The Abstract of the Disclosure is provided to comply with 37 C.F.R. §1.72(b) and is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, various features may be grouped together or described in a single embodiment for the purpose of streamlining the disclosure. This disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter may be directed to less than all of the features of any of the disclosed embodiments.
The above-disclosed subject matter is to be considered illustrative, and not restrictive, and the appended claims are intended to cover all such modifications, enhancements, and other embodiments, which fall within the true spirit and scope of the present invention. Thus, to the maximum extent allowed by law, the scope of the present invention is to be determined by the broadest permissible interpretation of the following claims and their equivalents, and shall not be restricted or limited by the foregoing detailed description.