Magnetic disk drive
The magnetic disk device addresses reliability issues by implementing sector grouping and parity sector management to enhance error correction and prevent side-erasure, improving data integrity and drive performance.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- KK TOSHIBA
- Filing Date
- 2025-06-18
- Publication Date
- 2026-06-29
AI Technical Summary
Magnetic disk drives face challenges in maintaining reliability due to issues such as side-erasure and the inability to perform track-level error correction when data is randomly overwritten, leading to uncorrectable errors.
The magnetic disk device incorporates a sector grouping system with both correctable and uncorrectable sectors, utilizing a parity sector management system to manage error correction and set Drift of Level (DOL) thresholds to enhance reliability and prevent side-erasure.
This approach improves the reliability of magnetic disk drives by effectively managing error correction and reducing uncorrectable errors through optimized sector grouping and DOL settings, enhancing data integrity and drive performance.
Smart Images

Figure 0007881803000001 
Figure 0007881803000002 
Figure 0007881803000003
Abstract
Description
Technical Field
[0001] Embodiments of the present invention relate to a magnetic disk drive.
Background Art
[0002] A magnetic disk drive may have an error correction function that corrects a sector based on a parity sector corresponding to a track including the sector when the sector cannot be corrected (salvaged or recovered) by a correction code corresponding to the sector. The magnetic disk drive writes, as a parity sector for a track, the result of an exclusive OR (XOR) operation on each sector of a predetermined track. When an error is detected in a predetermined sector of the track, the magnetic disk drive executes an error correction process (hereinafter, may also be referred to as a track ECC process) that corrects the error by an error correction code based on the parity sector corresponding to the track. When the magnetic disk drive randomly overwrites data in a part of a track including a parity sector in a conventional magnetic recording (CMR) format, the magnetic disk drive may not be able to execute the track ECC process on this track.
[0003] <好 The magnetic disk drive sets, for a target track (hereinafter, may also be referred to as a target track), a target position (hereinafter, may also be referred to as a target position), for example, a DOL (Drift of level) or a WOS (Write off track Slice) that is an upper limit value of a deviation amount in the radial direction of the disk from the track center.
[0004] Furthermore, in magnetic disk drives, side-erasure can occur when data is written due to the influence of leakage flux from the head (Adjacent Track Interference: ATI). ATI varies depending on, for example, the characteristics of the head, the TPI (Track Per Inch) setting, and the write current setting. To prevent side-erasure, magnetic disk drives have a refresh function that rewrites the data on a given track when the number of times data has been written to the surrounding tracks of that track reaches a specified number of times. [Prior art documents] [Patent Documents]
[0005] [Patent Document 1] U.S. Patent No. 10748567 [Patent Document 2] U.S. Patent No. 10910013 [Patent Document 3] U.S. Patent No. 7245447 [Overview of the project] [Problems that the invention aims to solve]
[0006] The object of the embodiments of the present invention is to provide a magnetic disk device and a method for setting DOL that can improve reliability. [Means for solving the problem]
[0007] The magnetic disk device according to this embodiment includes a disk, a head for writing data to and reading data from the disk, a first sector group including at least one first sector and the first parity sector capable of performing track-by-track error correction processing based on a first parity sector, and a second sector group including at least one second sector that cannot perform track-by-track error correction processing. [Brief explanation of the drawing]
[0008] [Figure 1] Figure 1 is a block diagram showing the configuration of a magnetic disk device according to an embodiment. [Figure 2] Figure 2 is a schematic diagram showing an example of the arrangement of a head on a disk according to the embodiment. [Figure 3] Figure 3 is a schematic diagram showing an example of track ECC processing. [Figure 4] Figure 4 is a schematic diagram showing an example of track ECC processing. [Figure 5] Figure 5 is a schematic diagram showing an example of track ECC processing. [Figure 6] Figure 6 is a schematic diagram showing an example of low DOL and high DOL and a low unreliable bubble threshold UTH1 according to the embodiment. [Figure 7] Figure 7 is a schematic diagram showing an example of a DOL according to this embodiment. [Figure 8] Figure 8 is a schematic diagram showing an example of a DOL according to this embodiment. [Figure 9] Figure 9 is a schematic diagram showing an example of a DOL according to this embodiment. [Figure 10] Figure 10 is a flowchart showing an example of a method for setting DOL according to this embodiment. [Figure 11] Figure 11 is a flowchart showing an example of the light processing according to this embodiment. [Figure 12] Figure 12 is a block diagram showing the configuration of a magnetic disk drive according to Modification Example 1. [Figure 13] Figure 13 is a schematic diagram showing an example of a refresh threshold related to Modification Example 1. [Figure 14] Figure 14 is a flowchart showing an example of a method for setting the refresh threshold according to this embodiment. [Figure 15] Figure 15 is a flowchart showing an example of the write process for the correctable region according to this embodiment. [Figure 16] Figure 16 is a block diagram showing the configuration of a magnetic disk drive according to Modification Example 2. [Figure 17]FIG. 17 is a schematic diagram showing an example of the evacuation process according to Modification 2. [Figure 18] FIG. 18 is a flowchart showing an example of the evacuation process according to Modification 2. [Figure 19] FIG. 19 is a flowchart showing an example of the evacuation process according to Modification 2.
Mode for Carrying Out the Invention
[0009] Hereinafter, embodiments will be described with reference to the drawings. Note that the drawings are merely examples and do not limit the scope of the invention. (Embodiment) FIG. 1 is a block diagram showing the configuration of a magnetic disk device 1 according to the embodiment. The magnetic disk device 1 includes a head disk assembly (HDA) described later, a driver IC 20, a head amplifier integrated circuit (hereinafter sometimes referred to as a head amplifier IC or a preamplifier) 30, a volatile memory 70, a non-volatile memory 80, a buffer memory (buffer) 90, and a system controller 130 which is a one-chip integrated circuit. Further, the magnetic disk device 1 is connected to a host system (hereinafter simply referred to as a host) 100.
[0010] The HDA has a magnetic disk (hereinafter sometimes referred to as a disk) 10, a spindle motor (hereinafter sometimes referred to as an SPM) 12, an arm 13 on which a head 15 is mounted, and a voice coil motor (hereinafter sometimes referred to as a VCM) 14. The disk 10 is attached to the SPM 12 and rotates by the drive of the SPM 12. The arm 13 and the VCM 14 constitute an actuator. The actuator controls the movement of the head 15 mounted on the arm 13 to a predetermined position on the disk 10 by driving the VCM 14. Two or more disks 10 and heads 15 may be provided. Also, two or more actuators may be provided.
[0011] Disk 10 is allocated a user data area 10a, which is available to the user, and a system area 10b, which records information necessary for system management, in a data-writable area. Disk 10 may also be allocated a media cache (sometimes called a media cache area) as a separate area from the user data area 10a and the system area 10b, which temporarily holds data (or commands) transferred from the host 100, etc., before writing them to a predetermined area in the user data area 10a. Hereinafter, the direction from the inner circumference to the outer circumference of disk 10, or from the outer circumference to the inner circumference of disk 10, will be referred to as the radial direction. In the radial direction, the direction from the inner circumference to the outer circumference will be referred to as the outward direction (or outside), and the direction from the outer circumference to the inner circumference, that is, the opposite direction to the outward direction, will be referred to as the inward direction (or inside). The direction perpendicular to the radial direction of disk 10 will be referred to as the circumferential direction. That is, the circumferential direction corresponds to the direction along the circumference of disk 10. Furthermore, predetermined positions on the disk 10 in the radial direction may be referred to as radial positions, and predetermined positions on the disk 10 in the circumferential direction may be referred to as circumferential positions. Radial positions and circumferential positions may also be collectively referred to simply as positions. The disk 10 is divided into multiple areas (hereinafter sometimes referred to as zones or zone areas) at predetermined ranges in the radial direction. Each zone contains multiple tracks. Each track contains multiple sectors. The term "track" is used in various ways, including: one of several regions obtained by dividing the disk 10 into predetermined radial ranges; data written to one of several regions obtained by dividing the disk 10 into predetermined radial ranges; a region extending circumferentially at a predetermined radial position of the disk 10; data written to a region extending circumferentially at a predetermined radial position of the disk 10; a region that completes one full rotation of the disk 10 at a predetermined radial position; data written to a region that completes one full rotation of the disk 10 at a predetermined radial position; the path of a head 15 positioned at a predetermined radial position of the disk 10 for writing; data written by a head 15 positioned at a predetermined radial position of the disk 10; data written to a predetermined track of the disk 10; and various other meanings.The term "sector" is used in various senses, including one of several regions obtained by dividing a predetermined track on disk 10 circumferentially, data written to one of several regions obtained by dividing a predetermined track on disk 10 circumferentially, a region at a predetermined circumferential position at a predetermined radial position on disk 10, data written to a region at a predetermined circumferential position at a predetermined radial position on disk 10, data written to a predetermined sector on disk 10, and other various meanings. The "radial width of a track" is sometimes referred to as "track width." The center position of the track width is sometimes referred to as the track center. The track center is sometimes simply referred to as a track. The "radial width of a sector" is sometimes referred to as "sector width." The center position of the sector width is sometimes referred to as the sector center. The sector center is sometimes simply referred to as a sector. A track center may have multiple sector centers.
[0012] Head 15 has a slider as its main body and includes a write head 15W and a read head 15R mounted on the slider. The write head 15W writes data to the disk 10. For example, the write head 15W writes a predetermined track to the disk 10. The read head 15R reads data recorded on the disk 10. For example, the read head 15R reads a predetermined track on the disk 10. Note that the “write head 15W” may sometimes be simply referred to as “head 15,” and the “read head 15R” may also be simply referred to as “head 15.” Furthermore, the “write head 15W and read head 15R” may be collectively referred to as “head 15.” The “center of head 15” may also be referred to as “head 15,” the “center of write head 15W” as “write head 15W,” and the “center of read head 15R” as “read head 15R.” Sometimes the "center of the 15W light head" is simply referred to as "head 15," and sometimes the "center of the lead head 15R" is simply referred to as "head 15." Positioning the center of head 15 at a predetermined location may be expressed as positioning head 15 at a predetermined location, placing head 15 in a predetermined location, or positioning head 15 in a predetermined location. Positioning the center of head 15 at a target location in a predetermined area (hereinafter sometimes referred to as the area target location), for example, at the radial center of a predetermined area, may be expressed as positioning head 15 in a predetermined area, placing head 15 in a predetermined area, positioning head 15 in a predetermined area, placing it in a predetermined area, or positioning it in a predetermined area. The act of "positioning the center of the head 15 at a target position on a predetermined track (hereinafter sometimes referred to as the track target position), for example, at the track center" may also be expressed as "positioning the head 15 on a predetermined track," "placing the head 15 on a predetermined track," "positioning the head 15 on a predetermined track," "placing it on a track," or "positioning it on a track."
[0013] Figure 2 is a schematic diagram showing an example of the arrangement of the head 15 on the disk 10 according to this embodiment. As shown in Figure 2, the direction in which the disk 10 rotates in the circumferential direction is called the rotation direction. In the example shown in Figure 2, the rotation direction is shown as counterclockwise, but it may also be in the opposite direction (clockwise).
[0014] The head 15 rotates around its axis relative to the disk 10 by the drive of the VCM 14, moving to a predetermined position from the inside outward, or from the outside inward.
[0015] In the example shown in Figure 2, the system area 10b is located on the outside of the user data area 10a on the disk 10. In other words, the user data area 10a is located on the inside of the system area 10b on the disk 10. In the example shown in Figure 2, the system area 10b is located on the outermost edge of the disk 10. The user data area 10a may be divided and arranged radially around the disk 10. Also, the system area 10b may be located in a position different from the one shown in Figure 2. For example, the system area 10b may be located between multiple user data areas 10a on the disk 10, or it may be located on the innermost edge of the disk 10.
[0016] The driver IC20 controls the driving of the SPM12 and VCM14 according to the control of the system controller 130 (specifically, the MPU60 described later). The head amplifier IC (preamplifier) 30 includes a read amplifier and a write driver. The read amplifier amplifies the read signal read from the disk 10 and outputs it to the system controller 130 (more specifically, the read / write (R / W) channel 40 described later). The write driver outputs a write current to the head 15 according to the signal output from the R / W channel 40.
[0017] The volatile memory 70 is a semiconductor memory in which the data stored is lost when the power supply is cut off. The volatile memory 70 stores data necessary for processing in each part of the magnetic disk device 1. The volatile memory 70 is, for example, DRAM (Dynamic Random Access Memory) or SDRAM (Synchronous Dynamic Random Access Memory).
[0018] Non-volatile memory 80 is a semiconductor memory that records stored data even when the power supply is cut off. Non-volatile memory 80 is, for example, a NOR-type or NAND-type flash ROM (Flash Read Only Memory: FROM).
[0019] The buffer memory 90 is a semiconductor memory that temporarily records data transmitted and received between the magnetic disk device 1 and the host 100. The buffer memory 90 may be integrated with the volatile memory 70. The buffer memory 90 is, for example, DRAM, SRAM (Static Random Access Memory), SDRAM, FeRAM (Ferroelectric Random Access Memory), or MRAM (Magnetoresistive Random Access Memory).
[0020] The system controller (controller) 130 is implemented using, for example, a large-scale integrated circuit (LSI) called a System-on-a-Chip (SoC), in which multiple elements are integrated onto a single chip. The system controller 130 includes a read / write (R / W) channel 40, a hard disk controller (HDC) 50, and a microprocessor or microprocessing unit (MPU) 60. The system controller 130 is electrically connected to, for example, a driver IC 20, a head amplifier IC 30, a volatile memory 70, a non-volatile memory 80, a buffer memory 90, and a host system 100, etc.
[0021] The R / W channel 40 performs signal processing on data transferred from the disk 10 to the host 100 (hereinafter sometimes referred to as read data) and data transferred from the host 100 (hereinafter sometimes referred to as write data) in response to instructions from the MPU 60, which will be described later. The R / W channel 40 has a circuit or function for modulating the write data. The R / W channel 40 has a circuit or function for measuring and demodulating the signal quality of the read data. The R / W channel 40 is electrically connected to, for example, the head amplifier IC 30, HDC 50, and MPU 60.
[0022] The HDC50 controls data transfer. For example, the HDC50 controls data transfer between the host 100 and the disk 10 in response to instructions from the MPU60, which will be described later. The HDC50 is electrically connected to, for example, the R / W channel 40, the MPU60, the volatile memory 70, the non-volatile memory 80, and the buffer memory 90.
[0023] The MPU60 is the main controller that controls each part of the magnetic disk drive 1. The MPU60 controls the VCM14 via the driver IC20 and performs servo control to position the head 15. The MPU60 controls the SPM12 via the driver IC20 to rotate the disk 10. The MPU60 controls the write operation to the disk 10 and selects the storage location for data transferred from the host 100, such as the write data. The MPU60 controls the read operation of data from the disk 10 and controls the processing of data transferred from the disk 10 to the host 100, such as the read data. The MPU60 also manages the area where data is recorded. The MPU60 is connected to each part of the magnetic disk drive 1. For example, the MPU60 is electrically connected to the driver IC20, the R / W channel 40, and the HDC50, etc.
[0024] The MPU 60 includes a read / write control unit 610, an error detection unit 620, an error correction unit 630, a parity sector management unit 640, and an off-track management unit 650, etc. The MPU 60 executes the processing of each unit, for example, the read / write control unit 610, the error detection unit 620, the error correction unit 630, the parity sector management unit 640, and the off-track management unit 650, etc., on the firmware. The MPU 60 may also have each unit, for example, the read / write control unit 610, the error detection unit 620, the error correction unit 630, the parity sector management unit 640, and the off-track management unit 650, etc., as circuits. The read / write control unit 610, the error detection unit 620, the error correction unit 630, the parity sector management unit 640, and the off-track management unit 650, etc., may be included in the R / W channel 40 or HDC 50.
[0025] The read / write control unit 610 controls read operations to read data from disk 10 and write operations to write data to disk 10 according to commands from the host 100. The read / write control unit 610 controls the VCM 14 via the driver IC 20 to position the head 15 at a predetermined location on disk 10 and execute the read operation or write operation. Hereinafter, the term "access" may be used to include recording or writing data to a predetermined area (write operation), reading or reading data from a predetermined area (read operation), and moving the head 15, etc., to a predetermined area.
[0026] The read / write control unit 610 performs a write operation in the Conventional Magnetic Recording (CMR) format, for example, by writing data to another track (or cylinder) or sector adjacent to a predetermined track (or cylinder) or sector (hereinafter sometimes referred to as an adjacent track (or cylinder)) or sector (hereinafter sometimes referred to as an adjacent sector) at a predetermined radial distance (gap) from a predetermined track (or cylinder) or sector. An "adjacent track (or cylinder)" includes a "track (or cylinder) adjacent to the predetermined track (or cylinder) in the outward direction", a "track (or cylinder) adjacent to the predetermined track (or cylinder) in the inward direction", and a "multiple tracks (or cylinders) adjacent to the predetermined track (or cylinder) in both the outward and inward directions". An "adjacent sector" includes a "sector adjacent to the predetermined sector in the outward direction", a "sector adjacent to the predetermined sector in the inward direction", and a "multiple sectors adjacent to the predetermined sector in both the outward and inward directions". Hereinafter, "writing data in the normal recording format" may be referred to as "normal recording," "performing normal recording processing," or simply "writing." The read / write control unit 610 performs random writing to write data randomly and sequential writing to write data sequentially.
[0027] Furthermore, the read / write control unit 610 may perform the write process in a Shingled Write Magnetic Recording (SMR) or Shingled Write Recording (SWR) format when sequentially writing to multiple tracks (or multiple cylinders), in which the next track (or cylinder) to be written is overwritten on a radial portion of the previously written track (or multiple cylinder). Hereinafter, "writing data in the Shingled Write format" may be referred to as "Shingled Recording," "Performing Shingled Write Recording," or simply "Writing."
[0028] The error detection unit 620 detects data, sectors, and areas where errors have occurred. For example, the error detection unit 620 detects data that cannot be read (hereinafter sometimes referred to as read error data or error data) or sectors that cannot be read (hereinafter sometimes referred to as read error sectors or error sectors). Error data and error sectors may be caused by defects, misalignment of the head 15, misalignment of adjacent tracks (or adjacent cylinders), etc.
[0029] The error correction unit 630 recovers (corrects, remedies, or error-corrects) the error data or error sector. The error correction unit 630 performs read retries by reading the error data or error sector multiple times. The error correction unit 630 also performs a process (hereinafter sometimes referred to as ECC processing or error correction processing) to correct the error (error) in the error data or error sector based on the Error Correction Code. The error correction unit 630 performs ECC processing (hereinafter sometimes referred to as sector ECC processing) on the error data or error sector of a predetermined track (or predetermined cylinder) based on the ECC (hereinafter sometimes referred to as sector ECC) corresponding to the error data or error sector. Sector ECC processing corresponds to sector-level error correction or error correction processing.
[0030] The error correction unit 630 performs ECC processing (hereinafter sometimes referred to as track ECC processing) on error data or error sectors of a predetermined track (or predetermined cylinder) or a part of a predetermined track (or predetermined cylinder), for example, on multiple data or multiple sectors arranged continuously in the circumferential direction on that track (or predetermined cylinder), based on ECC (hereinafter sometimes referred to as track ECC). Track ECC processing corresponds to error correction processing or error correction processing on a track basis. Here, "track basis" may include not only a physical track basis, but also a region basis comprising a physical track or smaller. For example, the error correction unit 630 performs track ECC processing on error sectors of a predetermined track (or predetermined cylinder) or a part of a predetermined track (or predetermined cylinder) based on parity data or parity sectors corresponding to that track (or predetermined cylinder) or a part of that track (or predetermined cylinder). The error correction unit 630 records, for example, error data or information related to error sectors (hereinafter sometimes referred to as error data information or error sector information) in a predetermined recording area, such as disk 10, volatile memory 70, or non-volatile memory 80.
[0031] The parity sector management unit 640 calculates the parity sector (or parity data) by performing an exclusive OR (XOR) operation, writes the parity sector (or parity data), and manages this parity sector (or parity data).
[0032] When writing to a predetermined track (or cylinder), the parity sector management unit 640 calculates the parity sector (or parity data) by performing an XOR operation on all sectors (or data) other than the parity sector of that track (or cylinder), writes (or modifies) the calculated parity sector (or parity data), and manages this parity sector (or parity data). Furthermore, when the parity sector management unit 640 writes some sectors (or data) to a predetermined track (or predetermined cylinder), it reads the track (or predetermined cylinder) to which some sectors (or data) are to be written, calculates the parity sector by performing an XOR operation on all sectors (or data) other than the parity sector of the track (or cylinder) in which the sectors (or data) corresponding to some sectors (or data) have been replaced with some sectors (or data) in a predetermined recording area, such as the volatile memory 70, and writes (or modifies) all sectors other than the parity sector of the track (or cylinder) in which some sectors (or data) have been replaced, along with the calculated parity sector (or parity data), to the same track (or cylinder), and manages this parity sector (or parity data). In the following, the process of "writing predetermined data (hereinafter sometimes referred to as update data), reading at least one sector or track (cylinder) to which the update data will be written, replacing the data corresponding to the update data in this at least one sector or track (cylinder) with this update data, performing an XOR operation on all sectors other than the parity sector (hereinafter sometimes referred to as the update sector group) of this at least one sector or track (cylinder) (hereinafter sometimes referred to as the update sector or update track (update cylinder)) to calculate the parity sector (hereinafter sometimes referred to as the update parity sector), and writing the update sector group and the update parity sector to the same sector or track" may be referred to as "read-modify-write." In the following, for the sake of explanation, "performing an XOR operation on sectors other than the parity sector" may be referred to as "performing an XOR operation on sectors."
[0033] The parity sector management unit 640 calculates the parity sector by performing an XOR operation on the data in a predetermined area and writes the calculated parity sector to a predetermined area on the disk 10. The parity sector management unit 640 calculates the parity sector by performing an XOR operation on all sectors of a predetermined track (or predetermined cylinder) and writes the calculated parity sector to this track (or cylinder). Alternatively, the parity sector management unit 640 may calculate the parity sector by performing an XOR operation on some sectors of a predetermined track (or predetermined cylinder) and write the calculated parity sector to this track (or cylinder). For example, the parity sector management unit 640 may calculate the parity sector by performing an XOR operation on all sectors (hereinafter sometimes referred to as valid sectors) except for sectors that are set or registered as invalid sectors due to defects or the like occurring in a predetermined track (or predetermined cylinder) (hereinafter sometimes referred to as defect-registered sectors), and write the calculated parity sector to this track (or cylinder). Defect-registered sectors correspond to sectors that are not used for data recording, etc., such as error sectors. Valid sectors correspond to sectors that are used for data recording, etc. For the sake of explanation, "performing an XOR operation on valid sectors other than defect-registered sectors" may be referred to as "performing an XOR operation on sectors."
[0034] The parity sector management unit 640 manages whether each parity sector corresponding to each track or part of each track is a valid parity sector that can be used for error correction, for example, track ECC processing (hereinafter sometimes referred to as a valid parity sector) or an invalid parity sector that cannot be used for error correction, for example, track ECC processing (hereinafter sometimes referred to as an invalid parity sector).
[0035] The parity sector management unit 640 manages the parity sector obtained by performing an XOR operation on all valid sectors of a predetermined track as a valid parity sector. The parity sector management unit 640 records the parity sector of this track as a valid parity sector in a predetermined recording area, for example, disk 10 (system area 10b), volatile memory 70, non-volatile memory 80, or buffer memory 90, as a table (hereinafter sometimes referred to as a management table) TB1. The parity sector management unit 640 records tracks or cylinders (hereinafter sometimes referred to as correctable tracks or correctable cylinders) that can perform track ECC processing (or correct) based on the valid parity sector as a management table TB1 in a predetermined recording area, for example, disk 10 (system area 10b), volatile memory 70, non-volatile memory 80, or buffer memory 90.
[0036] The parity sector management unit 640 writes (or overwrites) at least one sector that is continuously aligned circumferentially from the parity sector on a predetermined track, for example, a valid sector (hereinafter sometimes referred to as a trailing sector), and manages all trailing sectors, for example, the parity sector obtained by XORing the valid sector, as a valid parity sector. The parity sector management unit 640 records the parity sector of this track as a valid parity sector in a predetermined recording area, for example, disk 10 (system area 10b), volatile memory 70, non-volatile memory 80, or buffer memory 90, as a management table TB1. The parity sector management unit 640 records trailing sectors on which track ECC processing can be performed (or corrected) based on the valid parity sector on a predetermined track as a management table TB1 in a predetermined recording area, for example, disk 10 (system area 10b), volatile memory 70, non-volatile memory 80, or buffer memory 90. Furthermore, if a predetermined track includes a trailing sector that can be processed (or corrected) based on valid parity sectors, the parity sector management unit 640 records the sectors other than the trailing sector that cannot be processed (or corrected) (hereinafter sometimes referred to as trailing sectors) as a management table TB1 in a predetermined recording area, for example, the system area 10b of disk 10, volatile memory 70, non-volatile memory 80, or buffer memory 90.
[0037] The parity sector management unit 640 manages a parity sector as an invalid parity sector if the parity sector of a track that has written (overwritten) a previous sector, for example, a valid sector (hereinafter sometimes referred to as the previous sector), corresponds to the result of an XOR operation on all sectors of the track before the previous sector was written (hereinafter sometimes referred to as the previous parity sector). The parity sector management unit 640 records the parity sector of this track as an invalid parity sector as a management table TB1 in a predetermined recording area, for example, disk 10 (system area 10b), volatile memory 70, non-volatile memory 80, or buffer memory 90. The parity sector management unit 640 records tracks or cylinders that cannot be processed (or corrected) using track ECC processing (hereinafter sometimes referred to as uncorrectable tracks or uncorrectable cylinders) as a management table TB1 in a predetermined recording area, for example, disk 10 (system area 10b), volatile memory 70, non-volatile memory 80, or buffer memory 90.
[0038] Hereinafter, "at least one sector on which track ECC processing can be performed" may be referred to as a "correctable sector or logical track." Also, "at least one sector on which track ECC cannot be performed (or corrected)" may be referred to as an "uncorrectable sector." "Areas on which track ECC can be performed (or corrected), such as correctable tracks, correctable cylinders, and correctable sectors," may be collectively referred to as "correctable areas," and "areas on which track ECC processing cannot be performed, such as uncorrectable tracks, uncorrectable cylinders, and uncorrectable sectors," may be collectively referred to as "uncorrectable areas."
[0039] The parity sector management unit 640 manages the correctable and uncorrectable areas of disk 10 using the management table TB1. For example, if the management table TB1 shows the correctable and uncorrectable areas for tracks 0, 1, 2, 3, 4, 5, 6, and 7 as 3Eh in hexadecimal (binary: 00111110), the parity sector management unit 640 determines that tracks 2 through 6 are correctable areas. In this case, the management table TB1 shows one bit of information for each track, where "1" indicates a correctable area and "0" indicates an uncorrectable area. The parity sector management unit 640 refers to the management table TB1 when performing a write operation via the read / write control unit 610, and when performing a read operation via the read / write control unit 610.
[0040] The parity sector management unit 640 manages the correctable and uncorrectable areas whenever it receives a command from, for example, the host 100 to perform a write operation that makes error correction on a track-by-track basis impossible, such as a sequential write to partway through a track or a random write. The parity sector management unit 640 updates or modifies the correctable and uncorrectable areas each time a random write is performed. If the parity sector management unit 640 performs a random write to a portion of the correctable area, it changes this correctable area to an uncorrectable area. For example, if the parity sector management unit 640 performs a random write to a portion of a correctable track, it changes this correctable track to an uncorrectable track. In other words, if the parity sector management unit 640 performs a random write to a correctable track with less than one track's worth of data, it changes this correctable track to an uncorrectable track.
[0041] The parity sector management unit 640 manages areas that will result in read errors when changed from a correctable area to an uncorrectable area (hereinafter sometimes referred to as the random write prohibited area) in a table (hereinafter sometimes referred to as the random write prohibited table) TB2. In other words, the parity sector management unit 640 has a random write prohibited table TB2 for managing the random write prohibited area.
[0042] For example, the parity sector management unit 640 manages tracks that would result in a read error if changed from a correctable track to a non-correctable track (hereinafter sometimes referred to as random write prohibited tracks) using the random write prohibited table TB2. In other words, the parity sector management unit 640 has a random write prohibited table TB2 for managing random write prohibited tracks.
[0043] For example, the parity sector management unit 640 manages at least one sector (sometimes referred to as a random write prohibited sector) that would cause a read error if changed from a correctable sector to an uncorrectable sector using the random write prohibited table TB2. In other words, the parity sector management unit 640 has a random write prohibited table TB2 for managing random write prohibited sectors.
[0044] The off-track management unit 650 manages the target area position of the area to be targeted on disk 10 (hereinafter sometimes referred to as the target area), for example, the upper limit of the radial deviation from the center of a predetermined area, which is the DOL (Drift of level) (or WOS (Write off track Slice)). The off-track management unit 650 also manages the track target position of the track to be targeted on disk 10 (hereinafter sometimes referred to as the target track), for example, the upper limit of the radial deviation from the track center (hereinafter sometimes referred to as the off-track amount), which is the DOL (or WOS). The off-track management unit 650 has multiple DOLs.
[0045] The off-track management unit 650 sets multiple DOLs for multiple regions. In other words, the off-track management unit 650 sets multiple DOLs for each direction toward multiple regions. The off-track management unit 650 sets multiple DOLs for multiple tracks. In other words, the off-track management unit 650 sets multiple DOLs for each direction toward multiple tracks. The off-track management unit 650 sets multiple DOLs for multiple sectors. In other words, the off-track management unit 650 sets multiple DOLs for each direction toward multiple sectors.
[0046] The off-track management unit 650 sets multiple DOLs for a predetermined area (direction toward the predetermined area). The off-track management unit 650 sets multiple DOLs for each of the multiple areas (direction toward the multiple areas divided from the predetermined area). For example, the off-track management unit 650 sets multiple DOLs for a predetermined track (direction toward the predetermined track). The off-track management unit 650 sets multiple DOLs for each of the multiple areas (direction toward the multiple areas divided from the predetermined track) that are divided from the predetermined track.
[0047] The off-track management unit 650 sets the DOL for this radial area (in the direction toward this radial area) of the target area (hereinafter sometimes referred to as the target area) to a different DOL depending on whether the area located in the radial direction of the target area (hereinafter sometimes referred to as the radial area) is a correctable area (hereinafter sometimes referred to as the correctable radial area) or an uncorrectable area (hereinafter sometimes referred to as the uncorrectable radial area). In other words, the off-track management unit 650 sets different values for the DOL for the correctable radial area and the DOL for the uncorrectable radial area within the target area.
[0048] The correctable radius region can reduce the occurrence rate of uncorrectable errors, which are errors that cannot be read when data is written to the target region compared to the uncorrectable radius region. Therefore, the radial target position of the target region relative to the correctable radius region, for example, the distance or approach from the radial center of the target region (hereinafter referred to as squeeze), can be larger than the squeeze for the uncorrectable radius region. In other words, the squeeze margin for the correctable radius region can be larger than the squeeze margin for the uncorrectable radius region.
[0049] If the off-track management unit 650 determines that the radius area of the target area is a correctable radius area, it sets the DOL for this radius area of the target area (in the direction toward this radius area) to a predetermined DOL (hereinafter sometimes referred to as high DOL). If the off-track management unit 650 determines that the radius area of the target area is an uncorrectable radius area, it sets the DOL for this radius area of the target area (in the direction toward this radius area) to a DOL (absolute value) smaller than high DOL (hereinafter sometimes referred to as low DOL). High DOL is greater than low DOL.
[0050] The off-track management unit 650 sets the DOL for the adjacent area (in the direction toward this adjacent area) of the target area to a different DOL depending on whether the adjacent area (hereinafter sometimes referred to as an adjacent area) is a correctable area (hereinafter sometimes referred to as a correctable adjacent area) or an uncorrectable area (hereinafter sometimes referred to as an uncorrectable adjacent area). In other words, the off-track management unit 650 sets different values for the DOL for correctable adjacent areas and for uncorrectable adjacent areas within the target area.
[0051] Correctable adjacent regions can have a lower rate of uncorrectable bubble errors when data is written to them compared to uncorrectable adjacent regions. Therefore, the squeeze for correctable adjacent regions can be larger than the squeeze for uncorrectable adjacent regions. In other words, the squeeze margin for correctable adjacent regions can be larger than the squeeze margin for uncorrectable adjacent regions.
[0052] If the off-track management unit 650 determines that the adjacent area to the target area is a correctable adjacent area, it sets the DOL for this adjacent area (in the direction toward this adjacent area) of the target area to high DOL. If the off-track management unit 650 determines that the adjacent area to the target area is an uncorrectable adjacent area, it sets the DOL for this adjacent area (in the direction toward this adjacent area) of the target area to low DOL.
[0053] The off-track management unit 650 sets the DOL of the target track to a different DOL depending on whether the track located radially to the target track (hereinafter sometimes referred to as the target track) is a correctable track (hereinafter sometimes referred to as the correctable radial track) or an uncorrectable track (hereinafter sometimes referred to as the uncorrectable radial track). In other words, the off-track management unit 650 sets different values for the DOL of the correctable radial track and the DOL of the uncorrectable radial track in the target area.
[0054] Correctable radius tracks can reduce the incidence of uncorrectable errors compared to non-correctable radius tracks when writing data to the target area. Therefore, the squeeze for correctable radius tracks can be larger than the squeeze for non-correctable radius tracks. In other words, the squeeze margin for correctable radius tracks can be larger than the squeeze margin for non-correctable radius tracks.
[0055] If the off-track management unit 650 determines that the target track's radius track is a correctable radius track, it sets the DOL for this radius track (in the direction toward this radius track) of the target track to high DOL. If the off-track management unit 650 determines that the target track's radius track is an uncorrectable radius track, it sets the DOL for this radius track (in the direction toward this radius track) of the target track to low DOL.
[0056] The off-track management unit 650 sets the DOL for the target track in the direction toward this adjacent track (in the direction toward this adjacent track) depending on whether the track radially adjacent to the target track (hereinafter sometimes referred to as the adjacent track) is a correctable track (hereinafter sometimes referred to as the correctable adjacent track) or an uncorrectable track (hereinafter sometimes referred to as the uncorrectable adjacent track). In other words, the off-track management unit 650 sets different values for the DOL for correctable adjacent tracks and for the DOL for uncorrectable adjacent tracks in the target area.
[0057] Correctable adjacent tracks can have a lower rate of uncorrectable errors than uncorrectable adjacent tracks when data is written to the target area. Therefore, the squeeze for correctable adjacent tracks can be larger than the squeeze for uncorrectable adjacent tracks. In other words, the squeeze margin for correctable adjacent tracks can be larger than the squeeze margin for uncorrectable adjacent tracks.
[0058] If the off-track management unit 650 determines that the adjacent track of the target track is a correctable adjacent track, it sets the DOL of the target track for this adjacent track (in the direction toward this adjacent track) to high DOL. If the off-track management unit 650 determines that the adjacent track of the target track is an uncorrectable adjacent track, it sets the DOL of the target track for this adjacent track (in the direction toward this adjacent track) to low DOL.
[0059] The off-track management unit 650 sets different DOL values for the target sector relative to this radial sector (in the direction toward this radial sector) depending on whether at least one sector located radially in the direction of the target sector of the target track (hereinafter sometimes referred to as the target sector) and arranged circumferentially (hereinafter sometimes referred to as the radial sector) is a correctable sector (hereinafter sometimes referred to as the correctable radial sector) or an uncorrectable sector (hereinafter sometimes referred to as the correctable radial sector). In other words, the off-track management unit 650 sets different values for the DOL relative to correctable radial sectors and the DOL relative to uncorrectable radial sectors in the target area.
[0060] Correctable radius sectors can have a lower rate of uncorrectable errors than uncorrectable radius sectors when data is written to the area in question. Therefore, the squeeze for correctable radius sectors can be larger than the squeeze for uncorrectable radius sectors. In other words, the squeeze margin for correctable radius sectors can be larger than the squeeze margin for uncorrectable radius sectors.
[0061] If the off-track management unit 650 determines that the radius sector of the target sector is a correctable radius sector, it sets the DOL for this radius sector (in the direction toward this radius sector) of the target sector to high DOL. If the off-track management unit 650 determines that the radius sector of the target track is an uncorrectable radius sector, it sets the DOL for this radius sector (in the direction toward this radius sector) of the target sector to low DOL.
[0062] The off-track management unit 650 sets the DOL for the target sector in the direction toward this adjacent sector (or toward this adjacent sector) depending on whether at least one sector (hereinafter sometimes referred to as an adjacent sector) that is radially adjacent to the target sector and aligned circumferentially is a correctable sector (hereinafter sometimes referred to as a correctable adjacent sector) or an uncorrectable sector (hereinafter sometimes referred to as an uncorrectable adjacent sector). In other words, the off-track management unit 650 sets different values for the DOL for correctable adjacent sectors and for uncorrectable adjacent sectors in the target area.
[0063] Correctable adjacent sectors can have a lower rate of uncorrectable errors than uncorrectable adjacent sectors when data is written to the area in question. Therefore, the squeeze for correctable adjacent sectors can be larger than the squeeze for uncorrectable adjacent sectors. In other words, the squeeze margin for correctable adjacent sectors can be larger than the squeeze margin for uncorrectable adjacent sectors.
[0064] If the off-track management unit 650 determines that the adjacent sector of the target sector is a correctable adjacent sector, it sets the DOL for this adjacent sector (in the direction toward this adjacent sector) of the target sector to high DOL. If the off-track management unit 650 determines that the adjacent sector of the target track is an uncorrectable adjacent sector, it sets the DOL for this adjacent sector (in the direction toward this adjacent sector) of the target sector to low DOL.
[0065] The off-track management unit 650 manages the off-track threshold (sometimes referred to as the unrecoverable threshold) for a radius track, for example, an adjacent track (in the direction toward the adjacent track) where an error occurs that prevents reading unless track ECC is performed on the adjacent track. The unrecoverable threshold is greater than the DOL. The off-track management unit 650 has multiple unrecoverable thresholds.
[0066] The off-track management unit 650 sets multiple unrecoverable bubble thresholds corresponding to multiple DOLs (directions toward multiple DOLs). The off-track management unit 650 sets different unrecoverable bubble thresholds for different DOLs.
[0067] The off-track management unit 650 sets an unrecoverable bubble threshold (hereinafter sometimes referred to as the low unrecoverable bubble threshold) for the target track that is smaller than the high DOL for a radius track (in the direction toward the radius track), for example, an adjacent track (in the direction toward the adjacent track), and larger than the low DOL. The low unrecoverable bubble threshold corresponds to the unrecoverable bubble threshold of a radius track or radius sector with a low DOL set, for example, an adjacent track or adjacent sector with a low DOL set. Note that the unrecoverable bubble threshold of a radius track or radius sector with a high DOL set, for example, an adjacent track or adjacent sector with a high DOL set, may also be referred to as the high unrecoverable bubble threshold. The high unrecoverable bubble threshold is larger than the high DOL.
[0068] The off-track management unit 650 sets a low unrecoverable threshold for the radius sector (in the direction toward the radius sector) where a high DOL is set in the target sector, for example, for adjacent sectors (in the direction toward the adjacent sector).
[0069] If the off-track management unit 650 determines that the amount of off-track (or squeeze) for a predetermined radius track (in the direction toward the predetermined radius track), for example, a predetermined adjacent track (in the direction toward the predetermined adjacent track), is greater than the low unrecoverable threshold corresponding to this radius track (in the direction toward this radius track), for example, this adjacent track (in the direction toward this adjacent track), then it will not permit write processing to this radius track. For example, if the off-track management unit 650 determines that the amount of off-track (or squeeze) for a correctable adjacent track (in the direction toward the correctable adjacent track) in the target track is greater than the low unrecoverable threshold corresponding to this correctable adjacent track (in the direction toward this correctable adjacent track), then it will not permit writes that make track-level error correction impossible to a portion of this correctable adjacent track, such as sequential writes up to partway through a track, or random writes. In other words, if the off-track management unit 650 determines that the amount of off-track data (or squeeze) for a correctable adjacent track (in the direction toward the correctable adjacent track) in the target track is greater than the low unrecoverable threshold corresponding to this correctable adjacent track (in the direction toward this correctable adjacent track), it will not permit random writing of less than one track's worth of data to this correctable adjacent track.
[0070] The off-track management unit 650 may manage the target track in the random write prohibition table TB2 if it determines that the amount of off-track (or squeeze) for a predetermined radius track (in the direction toward the predetermined radius track), for example, a predetermined adjacent track (in the direction toward the predetermined adjacent track), is greater than the low unrecoverable bubble threshold corresponding to this radius track (in the direction toward this radius track), for example, this adjacent track (in the direction toward this adjacent track). For example, the off-track management unit 650 may manage the target track in the random write prohibition table TB2 if it determines that the amount of off-track (or squeeze) for a correctable adjacent track (in the direction toward the correctable adjacent track), for example, a low unrecoverable bubble threshold corresponding to this correctable adjacent track (in the direction toward this correctable adjacent track).
[0071] The off-track management unit 650 may perform a read-modify-write operation on a radius track, for example, this adjacent track, if it determines that the amount of off-track (or squeeze) for a predetermined radius track (in the direction toward the predetermined radius track), for example, a predetermined adjacent track (in the direction toward the predetermined adjacent track), is greater than the low unrecoverable threshold corresponding to this adjacent track (in the direction toward this adjacent track). For example, the off-track management unit 650 may perform a read-modify-write operation on a correctable radius track, for example, this correctable adjacent track, if it determines that the amount of off-track (or squeeze) for a correctable adjacent track (in the direction toward the correctable adjacent track), for example, this correctable adjacent track, is greater than the low unrecoverable threshold corresponding to this correctable adjacent track (in the direction toward this correctable adjacent track).
[0072] If the off-track management unit 650 determines that the amount of off-track (or squeeze) for a predetermined radius sector (in the direction toward the predetermined radius sector), for example, a predetermined adjacent sector (in the direction toward the predetermined adjacent sector), in the target sector is greater than the low unrecoverable threshold corresponding to this radius sector (in the direction toward this radius sector), for example, this adjacent sector (in the direction toward this adjacent sector), then write processing to this radius sector is not permitted. For example, if the off-track management unit 650 determines that the amount of off-track (or squeeze) for a correctable adjacent sector (in the direction toward the correctable adjacent sector) in the target sector is greater than the low unrecoverable threshold corresponding to this correctable adjacent sector (in the direction toward this correctable adjacent sector), then writes that make track-level error correction impossible to a portion of this correctable adjacent sector, such as sequential writes up to the middle of a track, or random writes, are not permitted. In other words, if the off-track management unit 650 determines that the amount of off-track (or squeeze) for a correctable adjacent sector (in the direction toward the correctable adjacent sector) in the target sector is greater than the low unrecoverable threshold corresponding to this correctable adjacent sector (in the direction toward this correctable adjacent sector), it will not permit random writing of data less than the amount of data that can be written to the entire area of this correctable adjacent sector.
[0073] If the off-track management unit 650 determines that the amount of off-track (or squeeze) for a predetermined radius sector (in the direction toward the predetermined radius sector), for example, a predetermined adjacent sector (in the direction toward the predetermined adjacent sector), in the target sector is greater than the low unrecoverable threshold corresponding to this radius sector (in the direction toward this radius sector), for example, this adjacent sector (in the direction toward this adjacent sector), then the radius sector may be managed in the random write prohibition table TB2. For example, if the off-track management unit 650 determines that the amount of off-track (or squeeze) for a correctable adjacent sector (in the direction toward the correctable adjacent sector) in the target sector is greater than the low unrecoverable threshold corresponding to this correctable adjacent sector (in the direction toward this correctable adjacent sector), then the correctable adjacent sector may be managed in the random write prohibition table TB2.
[0074] The off-track management unit 650 may perform a read-modify-write operation on a radius sector, for example, this adjacent sector, if it determines that the amount of off-track (or squeeze) for a predetermined radius sector (in the direction toward the predetermined radius sector), for example, a predetermined adjacent sector (in the direction toward the predetermined adjacent sector), in the target sector is greater than the low unrecoverable threshold corresponding to this radius sector (in the direction toward this radius sector), for example, this adjacent sector (in the direction toward this adjacent sector). For example, the off-track management unit 650 may perform a read-modify-write operation on a correctable radius sector, for example, this correctable adjacent sector, if it determines that the amount of off-track (or squeeze) for a correctable adjacent sector (in the direction toward the correctable adjacent sector) in the target sector is greater than the low unrecoverable threshold corresponding to this correctable adjacent sector (in the direction toward this correctable adjacent sector).
[0075] Figure 3 is a schematic diagram showing an example of track ECC processing. Figure 3 shows the direction in which the head 15 moves relative to the disk 10 in the circumferential direction (circumferential position), that is, the read / write direction (hereinafter sometimes referred to as the direction of travel). In Figure 3, the direction of travel is the rear direction (or sometimes simply referred to as rear). Note that the direction of travel may also be the front direction (or sometimes simply referred to as front). Figure 3 shows tracks TRn-1, TRn, and TRn+1. In Figure 3, tracks TRn-1 to TRn+1 are arranged in the order shown from the outside to the inside. Track TRn is adjacent to track TRn-1 in the outer direction, and track TRn+1 is adjacent to track TRn in the outer direction. Track TRn-1 has sectors Sc(n-1)0, Sc(n-1)1, Sc(n-1)2, Sc(n-1)3, Sc(n-1)4, Sc(n-1)5, Sc(n-1)6, Sc(n-1)7, Sc(n-1)8, Sc(n-1)9, Sc(n-1)10, Sc(n-1)11, and parity sector Pn-1. Sectors Sc(n-1)0, Sc(n-1)1, Sc(n-1)2, Sc(n-1)3, Sc(n-1)4, Sc(n-1)5, Sc(n-1)6, Sc(n-1)7, Sc(n-1)8, Sc(n-1)9, Sc(n-1)10, Sc(n-1)11, and parity sector Pn-1 are written consecutively in the order described in the direction of travel. Parity sector Pn-1 corresponds to the result of an XOR operation on sectors Sc(n-1)0 to Sc(n-1)11. In other words, parity sector Pn-1 is a valid parity sector. Track TRn-1 corresponds to a correctable track. Track TRn has sectors Scn0, Scn1, Scn2, Scn3, Scn4, Scn5, Scn6, Scn7, Scn8, Scn9, Scn10, Scn11, and parity sector Pn. Sectors Scn0, Scn1, Scn2, Scn3, Scn4, Scn5, Scn6, Scn7, Scn8, Scn9, Scn10, Scn11, and parity sector Pn are written consecutively in the order listed in the direction of travel. Parity sector Pn corresponds to the result of an XOR operation on sectors Scn0 to Scn11. In other words, parity sector Pn is a valid parity sector.Track TRn corresponds to a correctable track. Track TRn+1 has sectors Sc(n+1)0, Sc(n+1)1, Sc(n+1)2, Sc(n+1)3, Sc(n+1)4, Sc(n+1)5, Sc(n+1)6, Sc(n+1)7, Sc(n+1)8, Sc(n+1)9, Sc(n+1)10, Sc(n+1)11, and parity sector Pn+1. Sectors Sc(n+1)0, Sc(n+1)1, Sc(n+1)2, Sc(n+1)3, Sc(n+1)4, Sc(n+1)5, Sc(n+1)6, Sc(n+1)7, Sc(n+1)8, Sc(n+1)9, Sc(n+1)10, Sc(n+1)11, and parity sector Pn+1 are written consecutively in the order listed in the direction of travel. Parity sector Pn+1 corresponds to the result of an XOR operation on sectors Sc(n+1)0 through Sc(n+1)11. In other words, parity sector Pn+1 is a valid parity sector. Track TRn+1 corresponds to a correctable track.
[0076] In the example shown in Figure 3, if the MPU60 detects an error sector in sectors Scon0 to Scon11 of track TRn, and if this error sector cannot be corrected by read retry and sector ECC processing, it performs track ECC processing on the error sector based on the parity sector Pn to correct the error sector.
[0077] Figure 4 is a schematic diagram showing an example of track ECC processing. Figure 4 corresponds to Figure 3. In the example shown in Figure 4, the MPU 60 randomly overwrites sectors Scrn5, Scrn6, and Scrn7 of track TRn. The MPU 60 records track TRn as an uncorrectable track in a predetermined recording area, such as disk 10 (system area 10b), volatile memory 70, non-volatile memory 80, or buffer memory 90, as a management table TB1. If the MPU 60 detects an error sector in sectors Scrn0 to Scrn11 of track TRn, and cannot correct this error sector with read retry and sector ECC processing, it cannot perform track ECC processing on the error sector of track TRn.
[0078] In the example shown in Figure 4, the MPU60 sets the DOL (inward DOL) for track TRn-1 (in the direction toward track TRn) to a low DOL. In other words, the MPU60 changes the DOL (inward DOL) for track TRn-1 (in the direction toward track TRn) from a high DOL to a low DOL.
[0079] In the example shown in Figure 4, the MPU60 sets the DOL (outward DOL) for track TRn (direction toward track TRn) to low DOL at track TRn+1. In other words, the MPU60 changes the DOL (outward DOL) for track TRn (direction toward track TRn) at track TRn+1 from high DOL to low DOL.
[0080] Figure 5 is a schematic diagram showing an example of track ECC processing. Figure 5 corresponds to Figure 3. In the example shown in Figure 5, the MPU 60 overwrites the rear sectors Scon8, Scon9, Scon10, and Scon11 of track TRn. The MPU 60 overwrites the parity sector Pn by performing an XOR operation on the rear sectors Scon8 to Scon11. The MPU 60 records the rear sectors Scon8 to Scon11 as correctable sectors as management table TB1 in a predetermined recording area, for example, disk 10 (system area 10b), volatile memory 70, non-volatile memory 80, or buffer memory 90. The MPU 60 records the front sectors Scon0 to Scon7 as uncorrectable sectors as management table TB1 in a predetermined recording area, for example, disk 10 (system area 10b), volatile memory 70, non-volatile memory 80, or buffer memory 90. If the MPU60 detects an error sector in the rear sectors Scon8 to Scon11 of track TRn, and cannot correct this error sector through read retry and sector ECC processing, it will perform track ECC processing on the error sector based on the parity sector Pn to correct the error sector. If the MPU60 detects an error sector in the front sectors Scon0 to Scon7 of track TRn, and cannot correct this error sector through read retry and sector ECC processing, it will not perform track ECC processing on the error sector of track TRn.
[0081] In the example shown in Figure 5, the MPU 60 sets the DOL (inward DOL) for the front sectors Scn0 to Scn7 of track TRn (towards the front sectors Scn0 to Scn7) to a low DOL in the front sectors Sc(n-1)0 to Sc(n-1)7 of track TRn-1. In other words, the MPU 60 changes the DOL (inward DOL) for the front sectors Scn0 to Scn7 of track TRn (towards the front sectors Scn0 to Scn7) from a high DOL to a low DOL in the front sectors Sc(n-1)0 to Sc(n-1)7 of track TRn-1.
[0082] In the example shown in Figure 5, the MPU 60 sets the DOL (outward DOL) for the front sectors Scn0 to Scn7 of track TRn (towards the front sectors Scn0 to Scn7) to a low DOL in the front sectors Sc(n+1)0 to Sc(n+1)7 of track TRn+1. In other words, the MPU 60 changes the DOL (outward DOL) for the front sectors Scn0 to Scn7 of track TRn (towards the front sectors Scn0 to Scn7) to a low DOL in the front sectors Sc(n+1)0 to Sc(n+1)7 of track TRn-1 from a high DOL to a low DOL.
[0083] Figure 6 is a schematic diagram showing an example of low DOL D1 and high DOL D2 and a low unrecoverable threshold UTH1 according to this embodiment. In Figure 6, the horizontal axis represents squeeze (or off-track amount), and the vertical axis represents the unrecoverable error rate. On the vertical axis of Figure 6, the unrecoverable error rate increases as you move in the direction of the arrowhead and decreases as you move away from the arrowhead. On the horizontal axis of Figure 6, the squeeze increases as you move in the direction of the arrowhead and decreases as you move away from the arrowhead. The horizontal axis of Figure 6 shows low DOL D1, high DOL D2, and the unrecoverable threshold UTH1. On the horizontal axis of Figure 6, high DOL D2 is greater than low DOL D1. The low unrecoverable threshold UTH1 corresponds to low DOL D1. The low unrecoverable threshold UTH1 is greater than low DOL D1 and smaller than high DOL D2. Figure 6 shows the change in the unrecoverable error rate for squeezes corresponding to unrecoverable adjacent regions (unrecoverable adjacent tracks and unrecoverable adjacent sectors, etc.) ERL1 (hereinafter sometimes referred to as the change in the unrecoverable error rate corresponding to unrecoverable adjacent regions) and the change in the unrecoverable error rate for squeezes corresponding to correctable adjacent regions (correctable adjacent tracks and correctable adjacent sectors, etc.) ERL2 (hereinafter sometimes referred to as the change in the unrecoverable error rate corresponding to correctable adjacent regions). As shown in Figure 6 for the change in the unrecoverable error rate corresponding to unrecoverable adjacent regions ERL1 and the change in the unrecoverable error rate corresponding to correctable adjacent regions ERL2, in correctable regions, the unrecoverable error rate increases with a smaller squeeze than in unrecoverable regions.
[0084] In the example shown in Figure 6, the MPU60 sets the DOL for uncorrectable adjacent tracks or uncorrectable adjacent sectors (in the direction toward the uncorrectable adjacent tracks or uncorrectable adjacent sectors) to low DOL D1 and the DOL for correctable adjacent tracks or correctable adjacent sectors (in the direction toward the correctable adjacent tracks or correctable adjacent sectors) to high DOL D2. The MPU60 sets a low uncorrectable threshold UTH1 for correctable adjacent tracks or correctable adjacent sectors (in the direction toward the correctable adjacent tracks or correctable adjacent sectors) on the target track. If the MPU60 determines that the off-track amount (or squeeze) for correctable adjacent tracks or correctable adjacent sectors (in the direction toward the correctable adjacent tracks or correctable adjacent sectors) on the target track is greater than the low uncorrectable threshold, it may perform a read-modify-write operation on the correctable adjacent track or correctable adjacent sector.
[0085] Figure 7 is a schematic diagram showing an example of a DOL according to this embodiment. Figure 7 shows tracks TRk-1, TRk, and TRk+1. In Figure 7, tracks TRk-1 to TRk+1 are arranged in the order shown from the outside to the inside. Track TRk is adjacent to track TRk-1 in the inside direction, and track TRk+1 is adjacent to track TRk in the outside direction. In Figure 7, track TRk-1 corresponds to an uncorrectable adjacent track, and track TRk+1 corresponds to a correctable adjacent track. Figure 7 shows the track center TRCk of track TRk. Figure 7 shows circumferential position CPS, circumferential position CP0, and circumferential position CPR. Circumferential position CP0 is located behind circumferential position CPS, and circumferential position CPR is located behind circumferential position CP0. Figure 7 shows the path HR71 of the head 15 from circumferential position CPS to circumferential position CP0 on track TRk, and the path HR72 of the head 15 from circumferential position CP0 to circumferential position CPR on track TRk.
[0086] In the example shown in Figure 7, the MPU60 sets the DOL (outward DOL) for track TRk-1 (direction toward track TRk-1) to low DOL D1, and the DOL (inward DOL) for track TRk+1 (direction toward track TRk+1) to high DOL D2.
[0087] In the example shown in Figure 7, the MPU 60 moves the head 15 from circumferential position CPS to circumferential position CP0 on track TRk according to path HR71. If the MPU 60 determines that the off-track amount (squeeze) in the direction toward track TRk-1 (outward) is greater than DOL D1 at circumferential position CP0, it stops the light processing (or light operation) and repositions the head 15 to the track center TRCk. If the MPU 60 stops the light processing (or light operation) on track TRk and positions the head 15 to the track center TRCk, it moves the head 15 from circumferential position CP0 to circumferential position CPR according to path HR72.
[0088] Figure 8 is a schematic diagram showing an example of a DOL according to this embodiment. Figure 8 shows track TRk-1 and track TRk. In Figure 8, track TRk-1 has a front sector FSck-1 and a rear sector RSck-1 adjacent to the rear of the front sector FSck-1. The front sector FSck-1 corresponds to an uncorrectable adjacent sector, and the rear sector RSck-1 corresponds to a correctable adjacent sector. In Figure 8, track TRk has a front sector FSck and a rear sector RSck adjacent to the rear of the front sector FSck. Figure 8 shows circumferential position CPS, circumferential position CP1, and circumferential position CPR. Circumferential position CP1 is located behind circumferential position CPS, and circumferential position CPR is located behind circumferential position CP1. The front sector FSck-1 corresponds to the region from circumferential position CPS to circumferential position CP1 in track TRk-1. The rear sector RSck-1 corresponds to the region from circumferential position CP1 to circumferential position CPR on track TRk-1. The front sector FSck corresponds to the region from circumferential position CPS to circumferential position CP1 on track TRk. The rear sector RSck corresponds to the region from circumferential position CP1 to circumferential position CPR on track TRk. Figure 8 shows the path HR81 of head 15 from circumferential position CPS to circumferential position CPR on track TRk.
[0089] In the example shown in Figure 8, the MPU60 sets the DOL for the front sector FSck-1 (outward DOL in the front sector FSck) to low DOL D1 and the DOL for the rear sector RSck-1 (outward DOL in the rear sector RSck) to high DOL D2 in track TRk.
[0090] In the example shown in Figure 8, the MPU 60 moves the head 15 from circumferential position CPS to circumferential position CPR in track TRk according to the path HR81. If the MPU 60 determines that the off-track amount (squeeze) in the direction toward the front sector FSck-1 (outward) in the region from circumferential position CPS to circumferential position CP1 of track TRk is less than or equal to DOL D1, it continues the write process (or write operation) without stopping. If the MPU 60 determines that the off-track amount (squeeze) in the direction toward the rear sector FSck-1 (outward) in the region from circumferential position CP1 to circumferential position CPR of track TRk is less than or equal to DOL D2, it continues the write process (or write operation) without stopping. Furthermore, if the MPU60 determines that the amount of off-track (squeeze) in the direction toward the rear sector FSck-1 (outward) in the region from circumferential position CP1 to circumferential position CPR of track TRk is greater than DOL D1 and less than or equal to DOL D2, it will continue the write process (or write operation) without stopping.
[0091] Figure 9 is a schematic diagram showing an example of a DOL according to this embodiment. Figure 9 shows tracks TRk-1, TRk, and TRk+1. Figure 9 shows circumferential position CPS, circumferential position CP2, and circumferential position CPR. Circumferential position CP2 is located further back than circumferential position CPS, and circumferential position CPR is located further back than circumferential position CP2. Figure 9 shows the path HR91 of the head 15 from circumferential position CPS to circumferential position CP2 on track TRk, and the path HR92 of the head 15 from circumferential position CP2 to circumferential position CPR on track TRk.
[0092] In the example shown in Figure 9, the MPU60 sets a low DOL (outward DOL) for track TRk-1 (direction toward track TRk-1) and a high DOL (inward DOL) for track TRk+1 (direction toward track TRk+1). Also in the example shown in Figure 9, the MPU60 sets a low unreliable bubble threshold UTH1 for track TRk+1 (inward direction).
[0093] In the example shown in Figure 9, the MPU 60 moves the head 15 from circumferential position CPS to circumferential position CP2 in track TRk according to path HR91. If the MPU 60 determines that the off-track amount (squeeze) in the direction toward track TRk+1 (inward) is greater than the low unrecoverable threshold UTH1, it performs a read-modified write to track TRk+1. If the MPU 60 determines that the off-track amount (squeeze) in the direction toward track TRk+1 (inward) at circumferential position CP2 is greater than or equal to DOL D2, it stops the write process (or write operation) and repositions the head 15 to the track center TRCk. If the MPU 60 stops the write process (or write operation) in track TRk and positions the head 15 to the track center TRCk, it moves the head 15 from circumferential position CP2 to circumferential position CPR according to path HR92.
[0094] Figure 10 is a flowchart showing an example of a method for setting DOL according to this embodiment. The MPU60 determines whether the adjacent area of the target area is a correctable area or not (B1001). For example, the MPU60 determines whether the adjacent track or sector of the target track or target sector is a correctable adjacent track or correctable adjacent sector, or an uncorrectable adjacent track or uncorrectable adjacent sector. If it is determined that the adjacent area of the target area is a correctable area (YES in B1001), the MPU60 sets the DOL for the adjacent area of the target area to high DOL (B1002). The MPU60 sets a low uncorrectable threshold for the adjacent area of the target area (B1003) and terminates processing. If it is determined that the adjacent area of the target area is an uncorrectable area (NO in B1001), the MPU60 sets the DOL for the adjacent area of the target area to low DOL (B1004) and terminates processing.
[0095] Figure 11 is a flowchart showing an example of the light processing according to this embodiment. The MPU60 receives a write command to write data to the target area (B1101). For example, the MPU60 receives a write command to write data to the target track or target sector. The MPU60 determines whether the target area is a correctable area or not (B1102). For example, the MPU60 determines whether the target track or target sector is a correctable track or a correctable sector, or an uncorrectable track or an uncorrectable sector.
[0096] If the MPU60 determines that the target area is not a correctable area (NO in B1102), it writes data to the target area (B1103) and terminates processing. For example, if the MPU60 determines that the target track or sector is not a correctable track or sector, it writes data to the target track or sector and terminates processing.
[0097] If the target area is determined to be a correctable area (YES in B1102), the MPU60 determines whether the squeeze in the direction toward the target area in the adjacent areas of the target area is greater than or less than the low unrecoverable threshold (B1104). For example, if the target sector or target track is determined to be a correctable sector or target track, the MPU60 determines whether the squeeze in the direction toward the target sector or target track in the adjacent sector or track of the target sector or target track is greater than or less than the low unrecoverable threshold.
[0098] If the MPU60 determines that the squeeze in this adjacent sector or track toward this target sector or track is less than or equal to the low unrecoverable threshold (NO in B1104), the MPU60 proceeds to processing B1103. If the MPU60 determines that the squeeze in this adjacent sector or track toward this target sector or track is greater than the low unrecoverable threshold (YES in B1104), the MPU60 performs a read-modified write (B1105) without allowing writes to this target sector or track that would make track-level error correction impossible, such as sequential writes up to partway through a track, or random writes, and then terminates processing. For example, if the MPU60 determines that the squeeze in this adjacent sector or track toward this target sector or track is greater than the low unrecoverable threshold, the MPU60 performs a read-modified write without allowing random writes to the target sector or track and then terminates processing. For example, if the MPU60 determines that the squeeze in the adjacent sector or track toward the target sector or track is greater than the low unrecoverable threshold, the MPU60 reads the target sector or track, writes an updated sector or track with the corresponding data in the target sector or track replaced with the updated data, calculates an updated parity sector by performing an XOR operation on all the updated sectors of the updated sector or track, writes the updated sectors and the updated parity sector to the same target sector or track, and terminates the process.
[0099] According to this embodiment, the magnetic disk drive 1 manages correctable areas (correctable tracks or correctable sectors) and correctable areas (uncorrectable tracks or uncorrectable sectors) using a management table TB1. The magnetic disk drive 1 manages random write prohibited tracks or random write prohibited sectors using a random write prohibited table TB2. If the magnetic disk drive 1 determines that an adjacent area to a target area is a correctable adjacent area, it sets the DOL for the direction toward this adjacent area of the target area to a high DOL. If the magnetic disk drive 1 determines that an adjacent area to a target area is an uncorrectable adjacent area, it sets the DOL for the direction toward this adjacent area of the target area to a low DOL. The magnetic disk drive 1 sets a low uncorrectable threshold for adjacent areas in the target area where a high DOL has been set. If the magnetic disk drive 1 determines that an adjacent area to the target area is a correctable area, and that the squeeze in the target area toward this adjacent area is greater than the low uncorrectable threshold, it performs a read-modified write to this adjacent area without allowing writes that would make track-level error correction impossible, such as sequential writes up to partway through a track, or random writes. As a result, the magnetic disk drive 1 can improve recording density. Furthermore, the magnetic disk drive 1 can perform write operations efficiently. Consequently, the magnetic disk drive 1 can improve reliability.
[0100] Next, a modified example of the embodiment described above will be explained. In the modified example, the same reference numerals are used for parts that are the same as in the embodiment described above, and their detailed descriptions are omitted. (Variation 1) The magnetic disk device 1 according to Modification 1 differs from the magnetic disk device 1 according to the previously described embodiment in that it performs a refresh process.
[0101] Figure 12 is a block diagram showing the configuration of the magnetic disk device 1 according to Modification Example 1. The MPU 60 further includes a write count unit 660 and a refresh control unit 670. The MPU 60 executes the processing of each unit, such as the read / write control unit 610, error detection unit 620, error correction unit 630, parity sector management unit 640, off-track management unit 650, write count unit 660, and refresh control unit 670, on the firmware. The MPU 60 may also have each unit, such as the read / write control unit 610, error detection unit 620, error correction unit 630, parity sector management unit 640, off-track management unit 650, write count unit 660, and refresh control unit 670, as circuits. The read / write control unit 610, error detection unit 620, error correction unit 630, parity sector management unit 640, off-track management unit 650, write count unit 660, and refresh control unit 670, etc., may be included in the R / W channel 40 or HDC 50. Note that the MPU60 does not necessarily have to include the off-track management unit 650.
[0102] The write count unit 660 counts the number of times data has been written (hereinafter sometimes referred to as the number of writes or write count). The number of writes (or write count) corresponds, for example, to the number of times the head 15 has been affected by the effects of leakage magnetic flux, etc. (Adjacent Track Interference: ATI) by writing data. The write count unit 660 may store the number of writes as a table in a predetermined recording area, for example, the disk 10 (system area 10b), volatile memory 70, non-volatile memory 80, or buffer memory 90, as a management table TB1.
[0103] The write count unit 660 counts the number of times data is written to an area (hereinafter sometimes referred to as a nearby area) located within a predetermined radius from the target area. For example, the write count unit 660 counts the number of times data is written to a nearby area located within the range receiving ATI from the target area.
[0104] The write count unit 660 increments the number of writes corresponding to a target area by a predetermined value when data is written to an area adjacent to the target area. For example, when data is written to an adjacent area outside or inside the target area, the write count unit 660 increments the number of writes corresponding to this target area by a predetermined value. For example, when data is written to an adjacent area outside or inside the target area, the write count unit 660 increments the number of writes corresponding to this target area by 1.
[0105] The write count unit 660 counts the number of times data is written to an adjacent area (hereinafter sometimes referred to as an adjacent area) in the radial direction of the target area. For example, the write count unit 660 counts the number of times data is written to an adjacent area located within the range of ATI from the target area.
[0106] The write count unit 660 increases (increments) the number of writes corresponding to the target area by a predetermined value when data is written to an adjacent area of the target area. For example, when data is written to adjacent areas in the outward and inward directions of the target area, the write count unit 660 increases (increments) the number of writes corresponding to the target area by a predetermined value. For example, when data is written to adjacent areas in the outward and inward directions of the target area, the write count unit 660 increases (increments) the number of writes corresponding to the target area by 1. In addition, when data is written to adjacent areas in the outward and inward directions of the target area, the write count unit 660 may increase the number of writes corresponding to the target area by a value corresponding to the squeeze amount. For example, when data is written to adjacent areas in the outward and inward directions of the target area, the write count unit 660 may increase the number of writes corresponding to the target area by a value greater than 1 corresponding to the squeeze amount.
[0107] The write count unit 660 counts the number of write operations performed when data is written to an adjacent track or sector in the radial direction of the target track or sector.
[0108] The write count unit 660 increments the number of writes corresponding to the target track or sector by a predetermined value when data is written to an adjacent track or sector of the target track or sector. For example, when data is written to adjacent tracks in the outward and inward directions of the target track or sector, the write count unit 660 increments the number of writes corresponding to the target track or sector by a predetermined value. For example, when data is written to adjacent tracks or sectors in the outward and inward directions of the target track or sector, the write count unit 660 increments the number of writes corresponding to the target track or sector by 1.
[0109] The refresh control unit 670 performs a process (hereinafter sometimes referred to as a refresh process) to rewrite a predetermined area, for example, a predetermined track, with the same data that has been written to that area, for example, a predetermined track. If the refresh control unit 670 determines that the number of writes corresponding to the predetermined area exceeds a threshold (hereinafter sometimes referred to as a refresh threshold) corresponding to the number of writes for which a refresh process is performed, it performs a refresh process on that area. If the refresh control unit 670 determines that the number of writes corresponding to the predetermined area exceeds the refresh threshold, it performs a refresh process on a portion of that area. In other words, if the refresh control unit 670 determines that the number of writes corresponding to the predetermined area exceeds the refresh threshold, it performs a refresh process on data in that area that is less than or equal to the capacity set in advance as a format. If the refresh control unit 670 performs a refresh process on the predetermined area, it resets the number of writes corresponding to that area, for example, to 0.
[0110] The refresh control unit 670 executes a refresh process on the target track or sector if it determines that the number of writes to the target track or sector has exceeded the refresh threshold for that track or sector. The refresh control unit 670 executes a refresh process on a portion of the target track or sector if it determines that the number of writes to the target track or sector has exceeded the refresh threshold for that track or sector. In other words, if the refresh control unit 670 determines that the number of writes to the target track or sector has exceeded the threshold for that track or sector, it executes a refresh process on the data in the target track or sector that is less than or equal to the capacity set in advance as a format.
[0111] The refresh control unit 670 changes (or sets) the refresh threshold. The refresh control unit 670 has multiple refresh thresholds. The refresh control unit 670 changes (or sets) the refresh threshold of the correctable area to a higher refresh threshold than the currently set refresh threshold (hereinafter sometimes referred to as the current refresh threshold) in multiple refresh thresholds. The refresh control unit 670 changes (or sets) the refresh threshold of the non-correctable area to a lower refresh threshold than the current refresh threshold in multiple refresh thresholds.
[0112] Furthermore, the refresh control unit 670 sets the refresh threshold for the correctable area to a higher refresh threshold than the refresh threshold for the non-correctable area among the multiple refresh thresholds, and sets the refresh threshold for the non-correctable area to a lower refresh threshold than the refresh threshold for the correctable area among the multiple refresh thresholds.
[0113] The refresh control unit 670 has two refresh thresholds, for example, a high refresh threshold and a low refresh threshold. The refresh control unit 670 may have three or more refresh thresholds. The high refresh threshold is greater than the low refresh threshold, and the low refresh threshold is less than the high refresh threshold. The refresh control unit 670 sets the refresh threshold for correctable areas to the high refresh threshold and the refresh threshold for uncorrectable areas to the low refresh threshold. The refresh control unit 670 performs refresh processing less frequently in uncorrectable areas with a low refresh threshold than in correctable areas with a high refresh threshold. In other words, the refresh control unit 670 performs refresh processing more frequently in correctable areas with a high refresh threshold than in uncorrectable areas with a low refresh threshold. Here, frequency corresponds, for example, to the number of times the process is performed at a particular time.
[0114] For example, the refresh control unit 670 sets the refresh threshold for correctable tracks or correctable cylinders to a high refresh threshold, and sets the refresh threshold for non-correctable tracks or correctable cylinders to a low refresh threshold.
[0115] For example, the refresh control unit 670 sets the refresh threshold for correctable sectors (or logical tracks) to a high refresh threshold and the refresh threshold for non-correctable sectors to a low refresh threshold.
[0116] The refresh control unit 670 may set different refresh thresholds for the tracks corresponding to each head 15 in a plurality of heads 15 corresponding to a predetermined cylinder (track). Alternatively, the refresh control unit 670 may set the same refresh threshold for the tracks corresponding to each head 15 in a plurality of heads 15 corresponding to a predetermined cylinder (track).
[0117] For example, if the refresh control unit 670 wants to maintain a constant performance across multiple heads 15 for a given cylinder (track), it sets the refresh threshold of the cylinder (track) corresponding to at least one of the multiple heads 15 to a high refresh threshold, and sets the refresh thresholds of the cylinders (tracks) corresponding to the other heads 15, excluding the at least one head 15 set to the high refresh threshold, to a low refresh threshold.
[0118] For example, if the refresh control unit 670 maintains a constant performance across four heads 15 for a given cylinder (track), and the refresh thresholds for the four cylinders (tracks) corresponding to each of the four heads 15 are 300, 300, 300, and 300 respectively, then two of the four heads 15 increase the two refresh thresholds corresponding to the two correctable cylinders (correctable tracks) by 100 times each. In this case, the refresh control unit 670 reduces the two refresh thresholds corresponding to the two cylinders (tracks) of the two heads 15 other than the two heads 15 corresponding to the correctable cylinders (correctable tracks) by 100 times each. In this case, the TPI of the two heads 15 that do not correspond to the correctable cylinders (correctable tracks) can be improved while maintaining the performance of the four heads 15. Furthermore, if the remaining two heads 15 of the four heads 15, excluding the two heads 15 corresponding to correctable cylinders (correctable tracks), correspond to writes where track-level error correction is impossible, such as sequential writes up to a certain point in a track, or two randomly written uncorrectable cylinders (uncorrectable tracks), the refresh control unit 670 maintains two refresh thresholds corresponding to the two cylinders (tracks) that these two heads 15 correspond to at 300 and 300 cycles, respectively. Here, "randomly writing to a predetermined track, for example, a correctable track (correctable cylinder)" is equivalent to "writing at a unit smaller than the unit in which track-level error correction is performed." Therefore, randomly writing to a predetermined track, for example, a correctable track (correctable cylinder), may make track-level error correction impossible on that track.The refresh control unit 670, when the number of writes to a correctable cylinder (correctable track) is equal to or greater than the refresh threshold of a non-correctable cylinder (non-correctable track), will not allow random writes to the correctable cylinder (correctable track) because it would become a non-correctable track if random writes were made to it. Instead, it performs a read-modify-write operation on the correctable cylinder (correctable track) to maintain it as a correctable track.
[0119] Figure 13 is a schematic diagram showing an example of refresh thresholds LTH and HTH related to Modification 1. In Figure 13, the horizontal axis represents the number of writes (times), and the vertical axis represents the Unrecoverable Error Rate. On the vertical axis of Figure 13, the Unrecoverable Error Rate increases as you move in the direction of the arrowhead and decreases as you move away from the arrowhead. On the horizontal axis of Figure 13, the number of writes increases as you move in the direction of the arrowhead and decreases as you move away from the arrowhead. The horizontal axis of Figure 13 shows the low refresh threshold LTH and the high refresh threshold HTH. Figure 13 shows the change in the Unrecoverable Error Rate corresponding to the uncorrectable region (hereinafter sometimes referred to as the change in the Unrecoverable Error Rate) ERL3, and the change in the Unrecoverable Error Rate corresponding to the correctable region (hereinafter sometimes referred to as the change in the Unrecoverable Error Rate) ERL4. As shown in Figure 13, which shows the change in the unrecoverable bubble error rate ERL3 and the change in the unrecoverable bubble error rate ERL4, the correctable region has a lower unrecoverable bubble error rate per write cycle than the uncorrectable region.
[0120] In the example shown in Figure 13, the MPU 60 sets the refresh threshold for the correctable area to a high refresh threshold and the refresh threshold for the uncorrectable area to a low refresh threshold. The MPU 60 sets the TPI of the head 15 corresponding to the uncorrectable area to a high TPI. If the MPU 60 determines that the number of writes corresponding to the correctable area exceeds the high refresh threshold HTH, it performs a refresh process on the correctable area. If the MPU 60 determines that the number of writes corresponding to the uncorrectable area exceeds the low refresh threshold LTH, it performs a refresh process on the uncorrectable area. The MPU 60 performs refresh processes on the uncorrectable area more frequently than it performs refresh processes on the correctable area.
[0121] Figure 14 is a flowchart showing an example of a method for setting the refresh threshold according to this embodiment. The MPU60 determines whether a given area is a correctable area or not (B1401). In other words, the MPU60 determines whether a given area is a correctable area or not. For example, the MPU60 determines whether a given track is a correctable track or not. For example, the MPU60 determines whether a given sector is a correctable sector or not. If the MPU60 determines that a given area is a correctable area (YES in B1401), the MPU60 sets the refresh threshold of this correctable area to a high refresh threshold (B1402) and terminates processing. In other words, the MPU60 sets the refresh threshold of this correctable track (or this correctable cylinder) to a high refresh threshold. The MPU60 sets the refresh threshold of this correctable sector to a high refresh threshold.
[0122] If the MPU60 determines that a designated area is an uncorrectable area (NO in B1401), it sets the refresh threshold of this uncorrectable area to a low refresh threshold (B1403) and terminates processing. In other words, the MPU60 sets the refresh threshold of this uncorrectable track (or this uncorrectable cylinder) to a low refresh threshold. The MPU60 sets the refresh threshold of this uncorrectable sector to a low refresh threshold.
[0123] Figure 15 is a flowchart showing an example of the write process for the correctable region according to this embodiment. The MPU60 receives a write command to write data to a correctable area (B1501). For example, the MPU60 receives a write command to write data to a correctable track (or correctable cylinder). The MPU60 determines whether the number of writes to the correctable area is greater than or less than the low refresh threshold (B1502). For example, the MPU60 determines whether the number of writes to the correctable track (or correctable cylinder) is greater than or less than the low refresh threshold. If it is determined that the number of writes to the correctable area is less than or less than the low refresh threshold (NO in B1502), the MPU60 writes data to the correctable area (B1503) and terminates processing. For example, if it is determined that the number of writes to the correctable track is less than or less than the low refresh threshold, the MPU60 writes data to the correctable track and terminates processing.
[0124] If the MPU60 determines that the number of writes to the correctable area is greater than the low refresh threshold (YES in B1502), it performs a read-modified write (B1504) without allowing writes to the correctable area that would make track-level error correction impossible, such as sequential writes up to partway through a track, or random writes, and then terminates processing. For example, if the MPU60 determines that the number of writes to a correctable track (or correctable cylinder) is greater than the low refresh threshold, it performs a read-modified write without allowing random writes to the correctable track (or correctable cylinder). For example, if the MPU60 determines that the number of writes to a correctable track (or correctable cylinder) is greater than the low refresh threshold, the MPU60 reads the correctable track, writes an updated track (or updated cylinder) with the data instructed to be written by the write command replaced with the corresponding data in the correctable track (or correctable cylinder), calculates the updated parity sector by performing an XOR operation on all the updated sectors of the updated track (or updated cylinder), writes the updated sectors and the updated parity sector to the same track or cylinder, and terminates the process.
[0125] According to Modification 1, the magnetic disk drive 1 changes the refresh threshold corresponding to each cylinder on the surface of the multiple disks 10 corresponding to each of the multiple heads 15. The magnetic disk drive 1 has a high refresh threshold and a low refresh threshold. The magnetic disk drive 1 sets the refresh threshold of the correctable area to the high refresh threshold and the refresh threshold of the uncorrectable area to the low refresh threshold. The magnetic disk drive 1 performs refresh processing on the uncorrectable area set to the low refresh threshold less frequently than it performs refresh processing on the correctable area set to the high refresh threshold. When writing data to the correctable area, the magnetic disk drive 1 performs read-modify-write on the correctable area if the number of writes to this correctable area is greater than the low refresh threshold. Therefore, the magnetic disk drive 1 can improve TPI. Consequently, the magnetic disk drive 1 can improve recording density.
[0126] (Modification 2) The magnetic disk device 1 according to Modification 2 differs from the magnetic disk device 1 according to the previously described embodiment and Modification 1 in that it saves data of tracks for which track ECC can no longer be performed.
[0127] Figure 16 is a block diagram showing the configuration of the magnetic disk device 1 according to modified example 2. The MPU 60 further includes a data backup unit 680. The MPU 60 executes the processing of each unit, such as the read / write control unit 610, error detection unit 620, error correction unit 630, parity sector management unit 640, off-track management unit 650, write count unit 660, refresh control unit 670, and data backup unit 680, on the firmware. The MPU 60 may also have each unit, such as the read / write control unit 610, error detection unit 620, error correction unit 630, parity sector management unit 640, off-track management unit 650, write count unit 660, refresh control unit 670, and data backup unit 680, as circuits. The read / write control unit 610, error detection unit 620, error correction unit 630, parity sector management unit 640, off-track management unit 650, write count unit 660, refresh control unit 670, and data backup unit 680 may be included in the R / W channel 40 or HDC 50. Note that the MPU 60 does not need to include at least one of the off-track management unit 650, write count unit 660, and refresh control unit 670.
[0128] The data backup unit 680 records the data instructed by a command received from the host 100, etc., to a recording area different from the recording area instructed by the command (hereinafter sometimes referred to as "other recording areas"), for example, disk 10, volatile memory 70, non-volatile memory 80, or buffer memory 90. The data backup unit 680 temporarily records the data instructed by a command received from the host 100, etc., to the other recording area, for example, disk 10, volatile memory 70, non-volatile memory 80, or buffer memory 90. Hereinafter, "temporarily recording data to another recording area" may be referred to as "backing up" or "executing backup processing."
[0129] When the data backup unit 680 receives a write command (hereinafter sometimes referred to as a forbidden area write command) to a random write prohibited area, such as a random write prohibited track or random write prohibited sector, from the host 100 or the like, it determines whether there is free space in other recording areas or not.
[0130] If the data backup unit 680 determines that there is free space in another recording area, it backs up this prohibited area write command and the data corresponding to this prohibited area write command (hereinafter sometimes referred to as prohibited area command data) to another recording area, and does not execute, stops, or temporarily suspends this prohibited area write command. In other words, if the data backup unit 680 determines that there is free space in another recording area, and receives this prohibited area write command from the host 100 or the like, it backs up this prohibited area write command and the prohibited area command data corresponding to this prohibited area write command, and does not execute, stops, or temporarily suspends the write process for this random write prohibited track.
[0131] If the data backup unit 680 determines that there is free space in another recording area, it backs up this prohibited area write command, the prohibited area command data corresponding to this prohibited area write command, and the data of this random write prohibited track (hereinafter sometimes referred to as random write prohibited data) to another recording area, and does not execute, stops, or temporarily suspends this prohibited area write command. In other words, if the data backup unit 680 determines that there is free space in another recording area, and receives this prohibited area write command from the host 100 or the like, it backs up this prohibited area write command, the prohibited area command data corresponding to this prohibited area write command, and the random write prohibited data corresponding to this random write prohibited track, and does not execute, stops, or temporarily suspends the write process of this random write prohibited track.
[0132] If the data backup unit 680 determines that there is free space in another recording area, it writes a random write-prohibited track corresponding to this prohibited area write command, based on the prohibited area command data corresponding to this prohibited area write command, so that track ECC can be performed on this random write-prohibited track. In other words, if the data backup unit 680 determines that there is free space in another recording area, it writes a random write-prohibited track corresponding to this prohibited area write command, based on the prohibited area command data corresponding to this prohibited area write command, so that this random write-prohibited track becomes a correctable track.
[0133] When the data backup unit 680 receives a forbidden area write command from the host 100 or the like and determines that there is no free space in other recording areas, it writes the forbidden area command data corresponding to this forbidden area write command to the area specified by this forbidden area write command, for example, the random write forbidden track, as usual, and sets the area specified by this forbidden area write command, for example, the random write forbidden track, as an uncorrectable track in the user data area 10a of disk 10. In other words, when the data backup unit 680 receives a forbidden area write command from the host 100 or the like and determines that there is no free space in other recording areas, it writes the forbidden area command data corresponding to this forbidden area write command to the random write forbidden track, and manages the area corresponding to this forbidden area write command, for example, the random write forbidden track, as an uncorrectable track in the user data area 10a of disk 10 in the management table TB1.
[0134] For example, when the data backup unit 680 receives a forbidden area write command from the host 100 or the like, it determines whether there is free space in the cache for temporarily recording data, such as the system area 10b of disk 10, the volatile memory 70, the non-volatile memory 80, or the buffer memory 90.
[0135] If the data backup unit 680 determines that there is free space in the cache, it backs up the prohibited area command data corresponding to this prohibited area write command to the cache, and does not execute, stops, or temporarily suspends the write process for this random write prohibited track.
[0136] If the data backup unit 680 determines that there is free space in the cache, it backs up the forbidden area command data corresponding to this forbidden area write command and the random write forbidden track corresponding to this forbidden area write command to the cache, and does not execute, stops, or temporarily suspends the write process for this random write forbidden track.
[0137] When the data backup unit 680 has backed up the prohibited area command data (update data) corresponding to this prohibited area write command to the cache during idle periods, it performs a read-modify-write operation on this random write prohibited track based on this prohibited area command data (update data) and this random write prohibited data.
[0138] When idle, the data backup unit 680 backs up the forbidden area command data (update data) corresponding to this forbidden area write command and the random write prohibition data of the random write prohibition track corresponding to this forbidden area write command to the cache, and then performs a read-modify-write operation on this random write prohibition track based on this forbidden area command data (update data) and this random write prohibition data.
[0139] If the data backup unit 680 receives a command (hereinafter sometimes referred to as a write-prohibited residual command) from the host 100 or the like to write data (hereinafter sometimes referred to as write-prohibited residual data) to the remaining area (hereinafter sometimes referred to as the write-prohibited residual area) after deducting the area on which the prohibited area command data is written from this random write-prohibited track, it writes the write-prohibited residual data and the prohibited area command data to this random write-prohibited track in the user data area 10a of disk 10. In other words, if the data backup unit 680 determines that it has received at least one command (hereinafter sometimes referred to as a one-track command) from the host 100 or the like to write data for one track of the random write-prohibited track, it writes the data corresponding to this one-track command to this random write-prohibited track in the user data area 10a of disk 10.
[0140] When the data backup unit 680 receives a forbidden area write command from the host 100 or the like, and determines that there is no free space in the cache, it writes the forbidden area command data corresponding to this forbidden area write command to the area indicated by this forbidden area write command, for example, the random write forbidden track, and sets the area indicated by this forbidden area write command, for example, the random write forbidden track, to an uncorrectable track.
[0141] When the data backup unit 680 receives a write command from the host 100 or the like that prevents track ECC from being executed on a predetermined correctable track (which may also be referred to as a non-correctable track), it determines whether or not there is free space in other recording areas.
[0142] If the data backup unit 680 determines that there is free space in another recording area, it backs up this uncorrectable command and the data corresponding to this uncorrectable command (hereinafter sometimes referred to as uncorrectable command data) to another recording area, and does not execute, stops, or temporarily suspends this uncorrectable command. In other words, if the data backup unit 680 determines that there is free space in another recording area, it backs up this uncorrectable command, the uncorrectable command data corresponding to this uncorrectable command, and the uncorrectable data of this uncorrectable track, and does not execute, stops, or temporarily suspends the write process of this uncorrectable track.
[0143] If the data backup unit 680 determines that there is free space in another recording area, it backs up the uncorrectable command, the uncorrectable command data corresponding to this uncorrectable command, and the data of this uncorrectable track (hereinafter sometimes referred to as uncorrectable data) to another recording area, and does not execute, stops, or temporarily suspends the uncorrectable command. In other words, if the data backup unit 680 determines that there is free space in another recording area, it backs up the uncorrectable command, the uncorrectable command data corresponding to this uncorrectable command, and the uncorrectable data of this uncorrectable track, and does not execute, stops, or temporarily suspends the write process of this uncorrectable track.
[0144] If the data backup unit 680 determines that there is free space in other recording areas, it writes the track scheduled to be uncorrectable to the uncorrectable track corresponding to this uncorrectable command, based on the uncorrectable command data corresponding to this uncorrectable command, so that track ECC can be performed on the uncorrectable track. In other words, if the data backup unit 680 determines that there is free space in other recording areas, it writes the track scheduled to be uncorrectable to the uncorrectable track corresponding to this uncorrectable command, based on the uncorrectable command data corresponding to this uncorrectable command, so that the track scheduled to be uncorrectable becomes an correctable track.
[0145] When the data backup unit 680 receives an uncorrectable command from the host 100 or the like and determines that there is no free space in other recording areas, it writes the uncorrectable command data corresponding to this uncorrectable command to the uncorrectable track and sets the uncorrectable track as the uncorrectable track in the user data area 10a of disk 10. In other words, when the data backup unit 680 receives an uncorrectable command from the host 100 or the like and determines that there is no free space in other recording areas, it writes the uncorrectable command data corresponding to this uncorrectable command to the uncorrectable track and manages the uncorrectable track as the uncorrectable track in the user data area 10a of disk 10 in the management table TB1.
[0146] For example, when the data backup unit 680 receives an uncorrectable command from the host 100 or the like, it determines whether there is free space in the cache, for example, the system area 10b of disk 10, the volatile memory 70, the non-volatile memory 80, or the buffer memory 90.
[0147] If the data backup unit 680 determines that there is free space in the cache, it temporarily backs up the uncorrectable command data corresponding to this uncorrectable command to the cache that records data, and does not execute, stops, or temporarily suspends the write process for this uncorrectable track.
[0148] If the data backup unit 680 determines that there is free space in the cache, it temporarily backs up the uncorrectable command data corresponding to this uncorrectable command and the uncorrectable scheduled data of the uncorrectable scheduled track corresponding to this uncorrectable command to the cache that records data, and does not execute, stops, or temporarily suspends the write process for this uncorrectable scheduled track.
[0149] When the data backup unit 680 has backed up the uncorrectable command data (update data) corresponding to this uncorrectable command to the cache during idle periods, it performs a read-modify-write operation on this track scheduled to be uncorrectable based on this uncorrectable command data (update data).
[0150] When idle, the data backup unit 680 backs up the uncorrectable command data (update data) corresponding to this uncorrectable command and the uncorrectable scheduled data of the uncorrectable scheduled track corresponding to this uncorrectable command to the cache, and then performs a read-modify-write operation on the uncorrectable scheduled track based on this uncorrectable command data (update data) and this uncorrectable scheduled data.
[0151] If the data backup unit 680 receives a command (hereinafter sometimes referred to as an "uncorrectable residual command") from the host 100 or the like to write data (hereinafter sometimes referred to as "uncorrectable residual data") to the remaining area (hereinafter sometimes referred to as the "uncorrectable residual area") after deducting the area for writing the uncorrectable command data from the uncorrectable scheduled track, it writes the uncorrectable residual data and the uncorrectable command data to the uncorrectable scheduled track in the user data area 10a of disk 10. In other words, if the data backup unit 680 determines that it has received a command for one track of the uncorrectable scheduled track from the host 100 or the like, it writes the data corresponding to this one track of command to the uncorrectable scheduled track in the user data area 10a of disk 10.
[0152] When the data backup unit 680 receives an uncorrectable command from the host 100 or the like, and determines that there is no free space in the cache, it writes the uncorrectable command data corresponding to this uncorrectable command to the uncorrectable track, and sets the uncorrectable track to the uncorrectable track.
[0153] Figure 17 is a schematic diagram showing an example of the retraction process according to Modification 2. Figure 17 shows tracks TRm-2, TRm+1, TRm, TRm+1, and TRm+2. In Figure 17, tracks TRm-2 to TRm+2 are arranged in the order shown from the outside to the inside. Track TRm-1 is adjacent to track TRm in the outer direction. Track TRm-2 is adjacent to track TRm-1 in the outer direction. Track TRm+1 is adjacent to track TRm in the inner direction. Track TRm+2 is adjacent to track TRm+1 in the inner direction. In Figure 17, tracks TRm-2 to TRm+2 correspond to correctable tracks. Figure 17 shows circumferential position CPS, circumferential position CP3, circumferential position CP4, and circumferential position CPR. Circumferential position CP3 is located behind circumferential position CPS, circumferential position CP4 is located behind circumferential position CP3, and circumferential position CPR is located behind circumferential position CP4. Figure 17 shows the regions WCd1, WCd2, and WCd3 that are lit by a predetermined light command. Hereinafter, the "command that instructs the lighting of a predetermined region or data" and the "region or data that is lit by a predetermined light command" may be referred to as "light command". In other words, the "command that instructs the writing of area or data WCd1" and the "area or data WCd1 that is written by the predetermined write command" are referred to as "write command WCd1", the "command that instructs the writing of area or data WCd2" and the "area WCd2 that is written by the predetermined write command" are referred to as "write command WCd2", and the "command that instructs the writing of area or data WCd3" and the "area WCd3 that is written by the predetermined write command" are referred to as "write command WCd3".Light command WCd1 corresponds to the area or data from circumferential position CP4 to circumferential position CPR of track TRm-2, the area or data from circumferential position CPS to circumferential position CPR of track TRm-1, the area or data from circumferential position CPS to circumferential position CPR of track TRm, the area or data from circumferential position CPS to circumferential position CPR of track TRm+1, and the area or data from circumferential position CPS to circumferential position CP3 of track TRm+2. Furthermore, the write command WCd1 corresponds to a command to write data to the area from circumferential position CP4 to circumferential position CPR on track TRm-2, a command to write data to the area from circumferential position CPS to circumferential position CPR on track TRm-1, a command to write data to the area from circumferential position CPS to circumferential position CPR on track TRm, a command to write data to the area from circumferential position CPS to circumferential position CPR on track TRm+1, and a command to write data to the area from circumferential position CPS to circumferential position CP3 on track TRm+2. The write command WCd2 corresponds to the area or data from circumferential position CPS to circumferential position CP4 on track TRm-2. Furthermore, the write command WCd2 corresponds to a command to write data to the area from circumferential position CPS to circumferential position CP4 on track TRm-2. The write command WCd3 corresponds to the area or data from circumferential position CP3 to circumferential position CPR on track TRm+2. Furthermore, the write command WCd3 corresponds to a command that writes data to the area from circumferential position CP3 to circumferential position CPR on track TRm+2.
[0154] In the example shown in Figure 17, when the MPU 60 receives a write command WCd1 from the host 100 or the like, the write operation on track TRm-2 will be less than one track's worth, which means that track TRm-2 may change from a correctable track to an uncorrectable track. Therefore, the MPU 60 caches the uncorrectable command data corresponding to track TRm-2 in the write command WCd1 and track TRm-2, for example, in the system area 10b of disk 10, volatile memory 70, non-volatile memory 80, or buffer memory 90, and does not perform the write operation on track TRm-2. In other words, the MPU 60 caches the uncorrectable command data (update data) from circumferential position CP4 to circumferential position CPR of track TRm-2 and track TRm-2, for example, in the system area 10b of disk 10, volatile memory 70, non-volatile memory 80, or buffer memory 90, and does not perform the write operation on track TRm-2.
[0155] If the MPU60 has saved the irreparable command data (update data) corresponding to track TRm-2 of the write command WCd1 and track TRm-2 to the cache, it will perform a read-modify-write operation on track TRm-2 during idle periods based on the irreparable command data (update data) corresponding to track TRm-2 of the write command WCd1 and track TRm-2. In other words, if the MPU60 has saved the irreparable command data (update data) from circumferential position CP4 to circumferential position CPR of track TRm-2 and track TRm-2 to the cache, it will perform a read-modify-write operation on track TRm-2 during idle periods based on the irreparable command data (update data) from circumferential position CP4 to circumferential position CPR of track TRm-2 and track TRm-2.
[0156] Furthermore, MPU60 saves the irreparable command data corresponding to track TRm-2 of write command WCd1 and track TRm-2 to the cache, and when it receives write command WCd2 from host 100 or the like, it writes the irreparable command data corresponding to track TRm-2 of write command WCd1 and write command WCd2 to track TRm-1. In other words, MPU60 saves the irreparable command data (update data) from circumferential position CP4 to circumferential position CPR of track TRm-2 and track TRm-2 to the cache, and when it receives write command WCd2 from host 100 or the like, it writes the irreparable command data (update data) from circumferential position CP4 to circumferential position CPR of track TRm-2 and write command WCd2 to track TRm-1.
[0157] In the example shown in Figure 17, when the MPU 60 receives a write command WCd1 from the host 100, etc., the write operation on track TRm+2 will be less than one track's worth, which means that track TRm+2 may change from a correctable track to an uncorrectable track. Therefore, the MPU 60 caches the uncorrectable command data corresponding to track TRm+2 in the write command WCd1 and track TRm+2, for example, in disk 10, volatile memory 70, non-volatile memory 80, or buffer memory 90, and does not perform the write operation on track TRm+2. In other words, the MPU 60 caches the uncorrectable command data from circumferential position CPS to circumferential position CP3 of track TRm+2 and track TRm+2, for example, in disk 10, volatile memory 70, non-volatile memory 80, or buffer memory 90, and does not perform the write operation on track TRm+2.
[0158] When MPU60 caches the irreparable command data (update data) corresponding to track TRm+2 of write command WCd1 and track TRm+2, it performs a read-modify-write operation on track TRm-2 during idle periods based on the irreparable command data (update data) corresponding to track TRm+2 of write command WCd1 and track TRm+2. In other words, when MPU60 caches the irreparable command data (update data) from circumferential position CPS to circumferential position CP3 of track TRm+2 and track TRm+2, it performs a read-modify-write operation on track TRm-2 during idle periods based on the irreparable command data (update data) from circumferential position CPS to circumferential position CP3 of track TRm+2 and track TRm+2.
[0159] Furthermore, MPU60 caches the irreparable command data corresponding to track TRm+2 of write command WCd1 and track TRm+2, and when it receives write command WCd3 from host 100 or the like, it writes the irreparable command data corresponding to track TRm+2 of write command WCd1 and write command WCd3 to track TRm+2. In other words, MPU60 caches the irreparable command data from circumferential position CPS to circumferential position CP3 of track TRm+2 and track TRm+2, and when it receives write command WCd3 from host 100 or the like, it writes the irreparable command data from circumferential position CPS to circumferential position CP3 of track TRm+2 and write command WCd3 to track TRm+2.
[0160] Figure 18 is a flowchart showing an example of the evacuation process related to Modification Example 2. The MPU60 receives a write command to write data to a predetermined correctable area in the user data area 10a, for example, a correctable track (B1801). The MPU60 determines whether the correctable area corresponding to the write command, for example, a correctable track, becomes an uncorrectable area, for example, an uncorrectable track, or not (B1802). In other words, the MPU60 determines whether the command received from the host 100 is an uncorrectable area command or not. If it is determined that the area will not become an uncorrectable area, for example, an uncorrectable track (NO in B1802), the MPU60 writes the data corresponding to this write command to a predetermined correctable area in the user data area 10a, for example, a correctable track (B1803), and terminates processing.
[0161] If it is determined that the area is uncorrectable, for example, an uncorrectable track (YES in B1802), MPU60 determines whether there is free space in the cache (B1804). If it is determined that there is no free space in the cache (NO in B1804), MPU60 proceeds to process B1803.
[0162] If the MPU60 determines that there is free space in the cache (YES in B1804), it saves the data corresponding to this write command (uncorrectable command) (uncorrectable command data) (and the data of the correctable track (uncorrectable track) in the user data area 10a corresponding to this uncorrectable command (uncorrectable data)) to the cache (B1805) and terminates the process.
[0163] Figure 19 is a flowchart showing an example of the evacuation process related to Modification Example 2. The MPU60 receives a write command to write data to a designated track in the user data area 10a (B1801). The MPU60 determines whether the track corresponding to the write command is allowed to perform a write operation that would make track-level error correction impossible, such as a sequential write up to a certain point in a track, or a random write, or whether random writing is permitted (B1901). If it is determined that random writing is permitted for this track (NO in B1901), the MPU60 writes the data corresponding to this write command to this track in the user data area 10a (B1803) and terminates processing.
[0164] If it is determined that random writes are not permitted for this track (YES in B1901), MPU60 determines whether there is free space in the cache (B1804). If it is determined that there is no free space in the cache (NO in B1804), MPU60 proceeds to process B1803.
[0165] If the MPU60 determines that there is free space in the cache (YES in B1804), it saves the data corresponding to this write command and the track data in user data area 10a corresponding to this command to the cache (B1805), and then terminates the process.
[0166] According to Modification 2, when the magnetic disk drive 1 receives a forbidden area write command from the host 100 or the like, it determines whether there is free space in other recording areas. If the magnetic disk drive 1 determines that there is free space in other recording areas, it saves the forbidden area command data corresponding to this forbidden area write command, as well as the random write prohibition data, to another recording area and does not execute this forbidden area write command. If the magnetic disk drive 1 determines that there is no free space in other recording areas, it writes the forbidden area command data corresponding to the forbidden area write command to the random write prohibition track.
[0167] Furthermore, when the magnetic disk drive 1 receives an uncorrectable data entry command from the host 100 or the like, it determines whether there is free space in other recording areas. If the magnetic disk drive 1 determines that there is free space in other recording areas, it saves the uncorrectable data entry command data corresponding to this uncorrectable data entry command, as well as the data scheduled to be uncorrectable, to another recording area and does not execute this uncorrectable data entry command. If the magnetic disk drive 1 determines that there is no free space in other recording areas, it writes the uncorrectable data entry command data corresponding to the uncorrectable data entry command to the track scheduled to be uncorrectable.
[0168] For tracks where Track ECC cannot be performed, the DOL (Data Location Limit) is set to a strict value, which can lead to write faults and thus degrade write performance. Additionally, the number of write operations for tracks where Track ECC cannot be performed may be set low, requiring frequent refresh operations, which can also degrade write performance. In Modification 2, when a write command is received, the data corresponding to the write command is temporarily saved to the cache, and a process is executed to change tracks where Track ECC cannot be performed to tracks where Track ECC can be performed. Therefore, the magnetic disk drive 1 can perform write operations efficiently. In other words, the magnetic disk drive 1 can improve write performance. Consequently, the magnetic disk drive 1 can improve reliability.
[0169] While several embodiments have been described, these embodiments are presented as examples only and are not intended to limit the scope of the invention. These novel embodiments can be implemented in a variety of other forms, and various omissions, substitutions, and modifications can be made without departing from the spirit of the invention. These embodiments and their variations are included in the scope and spirit of the invention, as well as in the claims and their equivalents. [Explanation of symbols]
[0170] 1...Magnetic disk drive, 10...Magnetic disk, 10a...User data area, 10b...System area, 12...Spindle motor (SPM), 13...Arm, 14...Voice coil motor (VCM), 16...Actuator, 15...Head, 15W...Write head, 15R...Read head, 20...Driver IC, 30...Head amplifier IC, 40...Read / write (R / W) channel, 50...Hard disk controller (HDC), 60...Microprocessor (MPU), 70...Volatile memory, 80...Non-volatile memory, 90...Buffer memory, 100...Host system (Host), 130...System controller.
Claims
1. The disc and A head for writing data to the disk and reading data from the disk, A group of first sectors including at least one first sector capable of performing track-level error correction processing based on a first parity sector, A group of second sectors including at least one second sector in which track-level error correction processing cannot be performed, Magnetic disk drive.
2. The magnetic disk device according to claim 1, wherein both the first sector group and the second sector group are capable of writing only a portion of any part of the sector group.
3. The magnetic disk apparatus according to claim 1, wherein the first sector is continuous with the first parity sector in the circumferential direction of the disk.
4. The magnetic disk device according to claim 1, wherein the second sector group includes a second parity sector.
5. The magnetic disk device according to claim 1, wherein different read operations are applied to the first sector group and the second sector group.
6. The magnetic disk device according to claim 5, wherein when an error sector is detected in the first group of sectors, and the error sector cannot be corrected by sector ECC processing, track ECC processing is performed on the error sector based on the first parity sector to correct the error sector.
7. The magnetic disk device according to claim 5, wherein if an error sector is detected in the first group of sectors, and the error sector cannot be corrected by read retry, track ECC processing is performed on the error sector based on the first parity sector to correct the error sector.
8. The magnetic disk device according to claim 5, wherein if an error sector is detected in the second group of sectors, and the error sector cannot be corrected by sector ECC processing, track ECC processing is not performed on the error sector based on the second parity sector.
9. The magnetic disk device according to claim 5, wherein if an error sector is detected in the second group of sectors and cannot be corrected by read retry, track ECC processing is not performed on the error sector based on the first parity sector.
10. The magnetic disk device according to claim 1, wherein if a group of sectors belonging to a first write command includes the first parity sector, this group of sectors is managed as a group of sectors that perform track ECC processing.
11. The magnetic disk device according to claim 1, wherein if a group of sectors belonging to a second write command does not contain the first parity sector, this group of sectors is managed as a group of sectors that do not perform track ECC processing.