Patent Publication Number: US-6993688-B2

Title: Data sector error tracking and correction mechanism

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This application claims priority from U.S. Provisional Application 60/325,339 filed on Sep. 27, 2001, for inventors Hui Su and Gregory P. Moller and entitled “DATA SECTOR ERROR TRACKING AND CORRECTION MECHANISM”. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates generally to disc drive data storage systems, and more particularly but not by limitation to an error correction mechanism for data sectors. 
     BACKGROUND OF THE INVENTION 
     In a disc drive, data is stored on one or more discs. A disc is typically divided into a plurality of generally parallel disc tracks, which are arranged concentrically with one another and perpendicular to the disc radius. Each track is further broken down into a plurality of sectors, which further aid in locating information. Typically, the disc is a magnetic recording that uses single-state domains and magnetic transition domains to store bits corresponding to a “1” or “0” on the disc surface. Usually, a magnetic domain contains at least 100 thermally stable grains or magnetic particles. 
     The data is stored and retrieved by a transducer or “head” that is positioned over a desired track by an actuator arm. Typically, when a read operation is sent from a host (such as a computer) to the disc drive, a controller converts a logical block address (LBA) received from the host to a physical block address (PBA). Next, the physical track, head and sector information, which includes the number of sectors to be read from a destination track, are calculated based on the PBA. A seek operation is then performed and sectors falling on the same track are usually read within a disc revolution. Data read from the disc is transferred to a buffer random access memory (RAM) inside the disc drive before being sent to the host. 
     It is common to encounter disc read-errors when the disc drive is transferring data from the disc to the buffer RAM inside the disc drive. Error correction is typically performed on the disc read-errors to correct data that is sent to the host. However, ever increasing disc drive densities increase the number of errors encountered. Some errors occur momentarily due to system noise, thermal conditions or external vibrations. Small magnetic domains have a propensity to reverse their magnetic state due to these conditions. These and other errors may propagate into large errors (growth errors) under certain conditions that ultimately cause long correction times and unrecoverable errors. 
     In current systems, growth errors are prevented by correcting errors in a sector (known as an “error sector”) that has more errors than a threshold level. Threshold levels below the maximum correction capability are used to prevent growth errors. When an error sector is encountered during a read operation, the controller stops the read operation and applies a retry routine that re-reads the error sector into the buffer memory. Then, the error sector is corrected and written back to the disc during the retry routine. Stopping the read operation for each error sector encountered and performing a retry routine on the error sector results in extra revolutions for the read operation, which increases overhead. Alternatively, an entire data track can be written into the data buffer and written back to the disc to reduce disc revolutions in a retry routine. However, this dramatically increases the data buffer size and causes retry routines to be time consuming and expensive since every sector has to be read into the data buffer no matter whether the data sector has errors or not. Various embodiments of the present invention address these problems, and offer other advantages over the prior art. 
     SUMMARY OF THE INVENTION 
     The present invention relates to solving the above-mentioned problems in a disc drive storage system. In one embodiment, a method first determines a number of sectors to be read from a disc. The method also includes a step wherein data is read from all sectors of the number of sectors during a first disc revolution. As this data is read, errors sectors are identified that have a number of errors above a predetermined threshold. Next, data from the error sectors is corrected. During a second disc revolution, corrected data is written back to the error sectors. In a further embodiment, data is read from just the sectors failing the threshold check and corrected on-the-fly during an intermediate disc revolution. 
     The present invention also can be implemented in a disc drive storage system. The disc drive includes a controller for performing instructions executing the above-mentioned method. 
     These and various other features as well as advantages, which characterize various embodiments of the present invention, will be apparent upon reading of the following detailed description and review of the associated drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a perspective view of a disc drive with which various embodiments of the present invention are useful. 
         FIG. 2  a schematic diagram of a disc drive in accordance with the present invention. 
         FIG. 3  is a block diagram of an error correction and tracking unit and a buffer unit. 
         FIG. 3-1  is an illustration of a plurality of sectors in a data track on a disc. 
         FIG. 4  is a flow chart illustrating a method of error correction according to one embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS 
       FIG. 1  illustrates a perspective view of a magnetic disc drive  100  in which various embodiments of the present invention are useful. The same reference numerals are used in the various figures to represent the same or similar elements. Host system  101  utilizes disc drive  100  for data storage. Disc drive  100  includes a housing with a base  102  and a top cover (not shown). Disc drive  100  further includes a plurality of individual discs  105  in disc pack  106 , which is mounted on a spindle motor  107  ( FIG. 2 ) by a disc clamp  108 . The plurality of individual discs  105  are mounted for co-rotation about central axis  109 . 
     Each disc surface has an associated slider  110 , which is mounted in disc drive  100  and carries a read/write head for communication with the disc surface. In the example shown in  FIG. 1 , sliders  110  are supported by suspensions  112 , which are in turn supported by track accessing arms  114  of an actuator  116 . The actuator shown in  FIG. 1  is of the type known as a rotary moving coil actuator and includes a voice coil motor (VCM), shown generally at  118 . Other types of actuators can be used, such as linear actuators. 
     Voice coil motor  118  rotates actuator  116  with its attached sliders  110  about a pivot shaft  120  to position slider  110  over a desired data track along a path  122  between a disc inner diameter  124  and a disc outer diameter  126 . Voice coil motor  118  operates under the control of a closed-loop servo controller within internal circuitry  128  (including a disc controller  129  in  FIG. 2 ) based on position information, which is stored on one or more of the disc surfaces within dedicated servo fields. The servo field can be interleaved with data sectors on each disc surface or can be located on a single disc surface that is dedicated to storing servo information. As slider  110  passes over the servo fields, the read/write head generates a readback signal that identifies the location of the head relative to the center line of the desired track. Based on this location, actuator  116  moves suspension  112  to adjust the position of the head so that it moves toward the desired position. Once the transducing head is appropriately positioned, disc controller  129  can then execute a desired read or write operation. 
       FIG. 2  illustrates a schematic diagram of disc drive  100  in accordance with one embodiment of the present invention. Spindle motor  107  rotates disc  105  about central axis  109  at a high speed. Slider  110 , which carriers a read/write head, is supported by suspension  112 . Suspension  112  is connected to track accessing arm  114  of actuator  116 , herein schematically illustrated. Disc controller  129  directs the position of actuator  116  to access data from disc  105  with slider  110 . Disc controller  129  is operably coupled to the read/write head of slider  110  to selectively read and write particular sectors. Host system  101  is in communication with disc controller  129  through host interface  130 . Host interface  130  is adapted to receive commands from host system  101  and provide them to disc controller  129  in order to operate disc drive  100  in accordance with these commands. When a read operation is sent from host  101  to host interface  130 , host interface  130  directs disc controller  129  to read from disc  105 . Disc controller  129  determines the number of data sectors to be read and reads all of the number of data sectors from disc  105  into error correction and tracking unit  132  and buffer unit  134 . Error correction and tracking unit  132  provides error correction and tracking of data received from disc controller  129  while buffer unit  134  provides temporary storage for data read from disc controller  129 . Although herein illustrated as separate units, those skilled in the art will recognize that disc controller  129 , error correction and tracking unit  132  and buffer unit  134  may be part of a single integrated circuit (IC) and also be part of internal circuitry  128 . 
     Error correction and tracking unit  132  includes error correction code (ECC) unit  136  and error tracking unit  138 . ECC unit  136  performs error correction on data using error correction code, typically through use of an algorithm, parity bits or other method. Any type of error correction may be used to correct data supplied to ECC unit  136 . Data supplied to ECC unit  136  is usually a number of sectors read from disc  105 . While ECC unit  136  is performing error correction, error tracking unit  138  tracks the number of errors in each data sector, or alternatively monitors an error rate. The number of errors in each data sector is compared with a predefined limit level in error tracking unit  138 . A signal is generated based on whether or not the number of errors in each data sector is more than the predefined limit level. If a sector includes more errors than the limit level, that sector is identified as an error sector. Buffer unit  134 , in conjunction with buffer manager  140 , stores data received from disc controller  129  into buffer memory  142 . After receiving error correction and tracking data from error correction and tracking unit  132 , buffer manager  140  corrects data stored in buffer memory  142  and stores error tracking data into reference unit  144 . Corrected data from buffer memory  142  is sent through host interface  130  to host system  101 . If error tracking unit  138  determines that there are error sectors, buffer unit  134  will send a command to disc controller  129  to read only the identified error sectors in a next disc revolution. Buffer unit  134  uses the data in reference unit  144  to determine which sectors are to be read. Data read from the error sectors is then sent from disc controller  129  to error correction and tracking unit  132  and buffer unit  134 . ECC unit  136  corrects the error sectors and sends correction information to buffer unit  134 . Buffer unit  134 , which has stored the error sectors in buffer memory  142 , uses buffer manager  140  and correction data from ECC unit  136  to correct the error sectors in buffer memory  142 . After error sectors in buffer memory  142  have been corrected, buffer unit  134  sends a write operation to disc controller  129  to write the corrected data back to disc  105  using the data stored in reference unit  144 . 
       FIG. 3  illustrates an exemplary embodiment for operation of error correction and tracking unit  132  and buffer unit  134 . Data unit  150  has been read into ECC unit  136  to determine if any errors exist. In this example, data unit  150  includes ten sectors (numbered  0 – 9 ). Error tracking unit  138  tracks the errors corrected by ECC unit  136  and develops table  152  containing information pertinent to tracking the data. Error tracking unit  138  tracks errors that correspond to symbols that are incorrect, known as “symbol errors”, although error tracking unit  138  can track other errors such as bit errors. A symbol can be a word, byte, sector, 8-bit segment, 10-bit segment or any other unit of data. Table  152  can include rows  154 ,  156  and  158 . Row  154  corresponds to an identifier of each data sector in data unit  150 . Row  156  is the number of symbol errors that occur in each of the sectors of data unit  150 . Error tracking unit  138  can provide a signal of whether a particular sector is an error sector or not. In this example, a threshold of three symbol errors per sector is used to determine whether a particular sector is an error sector or not and stores the signal in row  158 . The threshold value is programmable and can be stored in internal circuitry  128  ( FIG. 1 ). Those skilled in the art will recognize that a maximum error correction level can be used that is independent of the threshold level. For example, an ECC unit may have a maximum correction level of five errors per symbol. In contrast, the threshold level can be three symbol errors per sector. In current systems, a lower error correction level would be set to reduce growth errors. If a sector was encountered above the error correction level, a retry routine would be used, even though the error is correctable, to prevent growth errors. With the present invention, the maximum error correction level can be used continuously since the threshold level is in place to rewrite error sectors. Even though a particular sector has more errors than the threshold, the sector can be corrected and sent to host  101 . Row  158  is generated based upon a comparison between the number of errors for each sector, which is contained in row  156 , and the threshold. As illustrated, sectors  3  and  9  have a number of errors above the threshold and thus a ‘0’ bit is generated in row  158 . Sectors  0 – 2  and  4 – 8  have a number of errors less than the threshold and thus a ‘1’ bit is generated in row  158 . Row  158  thus contains logic signals or flags that indicate whether particular sectors are error sectors or not. Row  158  can be referred to as a “skip mask”. 
     Skip mask  158  can then be stored in reference unit  144  of buffer unit  134  for use by disc controller  129  ( FIG. 2 ) to determine what sectors are to be read and written during subsequent disc revolutions. For example, during a next disc revolution, data from sectors  3  and  9  (error sectors) can be read into buffer memory  142  as data unit  160 . After data unit  160  has been corrected using ECC unit  136 , corrected data unit  160  is written to the disc using skip mask  158  in a next disc revolution. 
       FIG. 3-1  illustrates disc  105  having a plurality of sectors  162  along data track  164 . As illustrated, data unit  150  includes sectors  0 – 9  of the plurality of sectors  162  along data track  164 . Arrows  166  and  168  point to error sectors  3  and  9 , respectively. 
       FIG. 4  illustrates a flowchart of a method of correcting errors in accordance with an embodiment of the present invention. For illustrative purposes, method  400  is described with reference to elements previously discussed having similar reference numerals. First, a number of sectors to be read is determined by disc controller  129  in step  402 . Further, method  400  includes step  404  of reading data from all sectors of the number of sectors during a first disc revolution. During this step, disc controller  129  reads data from all of the number of sectors on disc  105  according to a command from host system  101 . During step  406 , error tracking unit  138  identifies error sectors having a number of errors above a predetermined threshold. This identification can be stored in skip mask  158 , for example. Using the signals from skip mask  158 , data can be read from only the error sectors during a second disc revolution in step  408  based on the signals for each sector indicative of whether each sector is an error sector or not. Alternatively, data from the error sectors can be maintained in buffer memory  142 , without the need for step  408 . After data from the error sectors is read, ECC unit  136  corrects the data from the error sectors in buffer memory  142  using buffer manager  140  during step  410 . After the data is corrected, buffer unit  134 , again using skip mask  158 , writes data to the error sectors on the disc during a third disc revolution in step  412 . 
     In summary, one embodiment of the present invention is directed to a method ( 400 ) for reducing growth errors in a disc drive storage system ( 100 ). The method includes determining ( 402 ) a number of sectors to be read from a disc ( 105 ). Also, data ( 150 ) is read ( 404 ) from all sectors of the number of sectors during a first disc revolution. Next, error sectors having a number of errors above a predetermined threshold are identified ( 406 ). As used herein and in the appended claims, a number of errors can be an actual number or error rate. In addition, the method includes correcting ( 410 ) the data ( 160 ) from the error sectors. Corrected data is written ( 412 ) to the error sectors during a second disc revolution. 
     Another embodiment directed to the present invention is a disc drive storage system, ( 100 ). The disc drive storage system ( 100 ) includes a rotating disc ( 105 ) having a disc surface. A transducer is configured to read and write data from the disc surface. The disc drive also has a buffer memory ( 142 ) and a controller ( 129 ) configured to determine a number of sectors to be read from the disc ( 105 ). The controller ( 129 ) is also configured to read all sectors of the number of sectors on a disc ( 105 ) during a first disc revolution and identify error sectors having a number of errors above a predetermined threshold. Further, the controller ( 129 ) is configured to correct data from the error sectors and write corrected data to the error sectors during a second disc revolution. 
     It is to be understood that even though numerous characteristics and advantages of various embodiments of the invention have been set forth in the foregoing description, together with details of the structure and function of various embodiments of the invention, this disclosure is illustrative only, and changes may be made in detail, especially in matters of structure and arrangement of parts within the principles of the present invention to the full extent indicated by the broad general meaning of the terms in which the appended claims are expressed For example, the particular elements may vary depending on the particular application for the error correction system while maintaining substantially the same functionality without departing from the scope and spirit of the present invention. In addition, although the preferred embodiment described herein is directed to an error correction system for a disc drive, it will be appreciated by those skilled in the art that the teachings of the present invention can be applied to other error correction systems, without departing from the scope and spirit of the present invention.