(57)【特許請求の範囲】
【請求項１】
ディスク媒体の各ディスク面に対応してそれぞれ設けられるヘッドを前記ディスク媒体の半径方向に移動可能なように支持するアクチュエータを備えたディスク記憶装置における自己ミラーリング方法であって、
１つのライトコマンドに対し、当該ライトコマンドで指定される前記ディスク媒体の目標トラックが存在するディスク面及び前記ディスク媒体のもう一方のディスク面にそれぞれ対応して設けられた前記各ヘッドを用いて、前記目標トラック及び当該目標トラックとシリンダ位置が同一の別のトラックに、同一データを同時に書き込むステップと、
１つのリードコマンドに対し、当該リードコマンドで指定される前記ディスク媒体の目標トラックが存在するディスク面に対応して設けられた前記ヘッドを用いて当該目標トラックのデータを読み出すステップと、
前記目標トラックのデータを読み出すステップでリードエラーが発生した場合、前記ディスク媒体の前記目標トラックが存在するディスク面とは異なるもう一方のディスク面に対応して設けられた前記ヘッドを用いて、前記目標トラックとシリンダ位置が同一の別のトラックからデータを読み出すステップと、
前記別のトラックからデータを読み出すステップの後に、前記目標トラックのデータの読み出しのリトライを、予め定められた第１のリトライ回数を上限に実行するステップと、
前記目標トラックのデータの読み出しのリトライに失敗し、且つ前記別のトラックからデータを読み出すステップでリードエラーが発生した場合、前記別トラックのデータの読み出しのリトライを、前記第１のリトライ回数を上限に実行するステップと、
少なくとも、前記目標トラックのデータの読み出しのリトライまたは前記別トラックのデータの読み出しのリトライの結果に応じて、前記目標トラックまたは前記別トラックのデータが現在回復不能なデータまたは回復不能となる可能性のあるデータであるか否かを検証するステップと、
前記検証ステップでの検証結果に応じて、前記目標トラックまたは前記別トラックのデータのうち正しく読み出されたデータを、前記ディスク媒体の各データ面にそれぞれ確保された、それぞれシリンダアドレス範囲が同一の代替領域内の対応する代替トラックに記録する代替処理を実行するステップと
を具備することを特徴とするディスク記憶装置における自己ミラーリング方法。
【請求項２】
前記代替処理実行ステップは、前記目標トラックのデータの読み出しのリトライに成功しても、その際のリトライ回数が前記第１のリトライ回数より少ない予め定められた第２のリトライ回数を超えている場合、または前記目標トラックのデータの読み出しのリトライに失敗し、且つ前記別のトラックからデータを読み出すステップで正しくデータが読み出せた場合、または前記別トラックのデータの読み出しのリトライに成功した場合に、対応する正しく読み出されたデータを用いて前記代替処理を実行することを特徴とする請求項１記載のディスク記憶装置における自己ミラーリング方法。
【請求項３】
ディスク媒体の各ディスク面に対応してそれぞれ設けられるヘッドを前記ディスク媒体の半径方向に移動可能なように支持するアクチュエータを備え、前記ディスク媒体の前記各ディスク面のユーザ領域が当該ディスク媒体の半径方向にシリンダ数が同一の第１及び第２のユーザ領域に分割されたディスク記憶装置における自己ミラーリング方法であって、
前記第１のユーザ領域内のトラックを目標トラックとして指定する１つのライトコマンドに対し、当該ライトコマンドで指定される前記ディスク媒体の目標トラックが存在するディスク面に対応して設けられた前記ヘッドを用いて、前記目標トラックにデータを書き込むステップと、
前記目標トラックが存在する前記ディスク面上の前記第２のユーザ領域内の、前記目標トラックと相対シリンダ位置が同一の別のトラックに、前記目標トラックに書き込んだのと同一のデータを書き込むステップと、
前記第１のユーザ領域内のトラックを目標トラックとして指定する１つのリードコマンドに対し、前記目標トラック、または当該目標トラックが存在する前記ディスク面上の前記第２のユーザ領域内の、当該目標トラックと相対シリンダ位置が同一の別のトラックのうち、現在のヘッド位置に近いトラックである第１のトラックのデータを読み出すステップと、
前記第１のトラックのデータを読み出すステップでリードエラーが発生した場合、前記目標トラックまたは前記別のトラックのうちの残りのトラックである第２のトラックのデータを読み出すステップと、
前記第２のトラックのデータを読み出すステップでリードエラーが発生した場合、当該第２のトラックのデータの読み出しのリトライを、予め定められた第１のリトライ回数を上限に実行するステップと、
前記第２のトラックのデータを読み出すステップでリードエラーが発生した場合、前記第１のトラックのデータの読み出しのリトライを、前記第１のリトライ回数を上限に実行するステップと、
少なくとも、前記第１のトラックのデータの読み出しのリトライまたは前記第２のトラックのデータの読み出しのリトライの結果に応じて、前記第１または第２のトラックのデータが現在回復不能なデータまたは回復不能となる可能性のあるデータであるか否かを検証するステップと、
前記検証ステップでの検証結果に応じて、前記目標トラックまたは前記別トラックのデータのうち正しく読み出されたデータを、前記目標トラックが存在する前記第１のユーザ領域に対して一定の位置関係を保って同一ディスク面上に確保された第１の代替領域内と、前記別のトラックが存在する前記第２のユーザ領域に対して、前記第１のユーザ領域に対する前記第１の代替領域の位置関係と同一の位置関係を保って同一ディスク面上に確保された第２の代替領域内の、それぞれ対応する代替トラックに記録する代替処理を実行するステップと
を具備することを特徴とするディスク記憶装置における自己ミラーリング方法。
【請求項４】
前記代替処理実行ステップは、
前記第１のトラックのデータの読み出しのリトライに成功しても、その際のリトライ回数が前記第１のリトライ回数より少ない予め定められた第２のリトライ回数を超えているか、もしくは前記第２のトラックのデータの読み出しのリトライに成功しても、その際のリトライ回数が前記第２のリトライ回数を超えている場合、
または、前記第１のトラックのデータの読み出しのリトライに失敗した場合で、且つ第２のトラックのデータを読み出すステップで正しくデータが読み出せた場合、もしくは前記第２のトラックのデータの読み出しのリトライに成功した場合に、
対応する正しく読み出されたデータを用いて前記代替処理を実行することを特徴とする請求項３記載のディスク記憶装置における自己ミラーリング方法。
【請求項５】
前記ディスク媒体の前記各ディスク面は当該ディスク媒体の半径方向に、それぞれシリンダ内のセクタ数が異なる複数のゾーンに分割されており、前記各ゾーンは、それぞれ前記第１及び第２のユーザ領域に分割されていることを特徴とする請求項３記載のディスク記憶装置における自己ミラーリング方法。
【請求項６】
各ディスク面の第１のシリンダアドレス範囲にユーザ領域が、確保されると共に、第２のシリンダアドレス範囲に代替領域が確保されたディスク媒体と、
前記ディスク媒体の各ディスク面に対応してそれぞれ設けられるヘッドを前記ディスク媒体の半径方向に移動可能なように支持するアクチュエータと、
１つのライトコマンドに対し、当該ライトコマンドで指定される前記ディスク媒体の目標トラックが存在するディスク面及び前記ディスク媒体のもう一方のディスク面にそれぞれ対応して設けられた前記各ヘッドを用いて、前記目標トラック及び当該目標トラックとシリンダ位置が同一の別のトラックに、同一データを同時に書き込む手段と、
１つのリードコマンドに対し、当該リードコマンドで指定される前記ディスク媒体の目標トラックが存在するディスク面に対応して設けられた前記ヘッドを用いて当該目標トラックのデータを読み出す目標トラックデータ読み出し手段と、
前記目標トラックデータ読み出し手段によるデータ読み出しでリードエラーが発生した場合、前記ディスク媒体の前記目標トラックが存在するディスク面とは異なるもう一方のディスク面に対応して設けられた前記ヘッドを用いて、前記目標トラックとシリンダ位置が同一の別のトラックからデータを読み出す別トラックデータ読み出し手段と、
前記別トラックデータ読み出し手段によるデータ読み出し後に、前記目標トラックのデータの読み出しのリトライを、予め定められた第１のリトライ回数を上限に実行する第１のリトライ手段と、
前記第１のリトライ手段によるリトライに失敗し、且つ前記別トラックデータ読み出し手段によるデータ読み出しでリードエラーが発生した場合、前記別トラックのデータの読み出しのリトライを、前記第１のリトライ回数を上限に実行する第２のリトライ手段と、
少なくとも、前記第１または第２のリトライ手段によるリトライの結果に応じて、前記目標トラックまたは前記別トラックのデータが現在回復不能なデータまたは回復不能となる可能性のあるデータであるか否かを検証する検証手段と、
前記検証手段による検証結果に応じて、前記目標トラックまたは前記別トラックのデータのうち正しく読み出されたデータを、前記ディスク媒体の各データ面にそれぞれ確保された、前記代替領域内の対応する代替トラックに記録する代替処理を実行する代替処理手段と
を具備することを特徴とするディスク記憶装置。
【請求項７】
各ディスク面にシリンダ数が同一の第１及び第２のユーザ領域が確保されると共に、前記第１及び第２のユーザ領域に対してそれぞれ一定の位置関係を保って第１及び第２の代替領域が確保されたディスク媒体と、
前記ディスク媒体の各ディスク面に対応してそれぞれ設けられるヘッドを前記ディスク媒体の半径方向に移動可能なように支持するアクチュエータと、
前記第１のユーザ領域内のトラックを目標トラックとして指定する１つのライトコマンドに対し、当該ライトコマンドで指定される前記ディスク媒体の目標トラックが存在するディスク面に対応して設けられた前記ヘッドを用いて、前記目標トラックにデータを書き込むと共に、前記目標トラックが存在する前記ディスク面上の前記第２のユーザ領域内の、前記目標トラックと相対シリンダ位置が同一の別のトラックに、前記目標トラックに書き込んだのと同一のデータを書き込む書き込む手段と、
前記第１のユーザ領域内のトラックを目標トラックとして指定する１つのリードコマンドに対し、前記目標トラック、または当該目標トラックが存在する前記ディスク面上の前記第２のユーザ領域内の、当該目標トラックと相対シリンダ位置が同一の別のトラックのうち、現在のヘッド位置に近いトラックである第１のトラックのデータを読み出す第１のトラックデータ読み出し手段と、
前記第１のトラックデータ読み出し手段によるデータ読み出しでリードエラーが発生した場合、前記目標トラックまたは前記別のトラックのうちの残りのトラックである第２のトラックのデータを読み出す第２のトラックデータ読み出し手段と、
前記第２のトラックデータ読み出し手段によるデータ読み出しでリードエラーが発生した場合、前記第２のトラックのデータの読み出しのリトライを、予め定められた第１のリトライ回数を上限に実行する第１のリトライ手段と、
前記第２のトラックデータ読み出し手段によるデータ読み出しでリードエラーが発生した場合、前記第１のトラックのデータの読み出しのリトライを、前記第１のリトライ回数を上限に実行する第２のリトライ手段と、
少なくとも、前記第１または第２のリトライ手段によるリトライの結果に応じて、前記第１または第２のトラックのデータが現在回復不能なデータまたは回復不能となる可能性のあるデータであるか否かを検証する検証手段と、
前記検証手段による検証結果に応じて、前記目標トラックまたは前記別トラックのデータのうち正しく読み出されたデータを、前記目標トラックが存在する前記第１のユーザ領域に対応する前記第１の代替領域内と、前記別のトラックが存在する前記第２のユーザ領域に対応する前記第２の代替領域内の、それぞれ対応する代替トラックに記録する代替処理を実行する代替処理手段と
を具備することを特徴とするディスク記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスク媒体の各ディスク面に対応してそれぞれ設けられるヘッドを前記ディスク媒体の半径方向に移動可能なように支持するアクチュエータを備えたディスク記憶装置に係り、特に１つのライトコマンドに対して同一データを目標トラック及び当該目標トラックとは異なるトラックに書き込むことにより自己ミラーリングを実現するのに好適な、ディスク記憶装置における自己ミラーリング方法及び同方法を適用するディスク記憶装置に関する。
【０００２】
【従来の技術】
ディスク媒体を対象とするデータのリード／ライトがヘッドにより行われるディスク記憶装置として、磁気ディスク装置が知られている。この磁気ディスク装置では、１つのライトコマンドに対し、データは、ディスク媒体（磁気ディスク）上の当該コマンドで指定された箇所にだけに書かれるのが一般的であった。
【０００３】
しかし、このような磁気ディスク装置では、ヘッドクラッシュ等で、ディスク媒体上の該当する箇所が損傷して、その箇所のデータが読み取り不能となった場合、そのデータを回復することは困難であった。
【０００４】
そこで従来は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）システムを構築してデータのミラーリングを行うことで、データが失われるのを防いでいた。しかし、ＲＡＩＤシステムは磁気ディスク装置を複数台必要とするため、家庭での使用など、規模の小さいシステムでの使用には適していない。
【０００５】
一方、特開平９−９１８５５号公報には、ディスクの一方の面と他方の面とに、それぞれ異なるヘッドＡ，Ｂにより同一のデータを同時に書き込むことで、データの２重化を図った、つまり自己ミラーリングを図った磁気ディスク装置が記載されている。この公報記載の磁気ディスク装置においては、読み出し時に、一方のヘッドＡによりデータを読み出し、このデータに異常があった場合に、他方のヘッドＢによりバックアップデータを読み出すようにしている。このヘッドＢにより読み出されたデータは、そのまま、復旧書き込みデータとなり、ヘッドＡにより記録することで、自動復旧するようにしている。
【０００６】
【発明が解決しようとする課題】
しかしながら、上記公報に記載の技術では、ヘッドクラッシュ等に起因する読み出しエラーについては考慮されていない。即ち、ヘッドクラッシュ等でディスク媒体上の該当する箇所が損傷した場合、その箇所にデータを正しく書き込むことは困難であり、また書き込めたとしても正しく読み出すことは困難である。このような場合、自動復旧されず、データの２重化を実現できなくなる。したがって、もう一方のデータが記録されている箇所が損傷した場合には、データは回復できない。また、上記公報には、データの２重化を、ランダムリード時の読み出し性能の向上を図ることに利用することは何も記載されていない。
【０００７】
本発明は上記事情を考慮してなされたものでその目的は、ディスク記憶装置においてデータの２重化を常に維持できる自己ミラーリング方法及び同方法を適用するディスク記憶装置を提供することにある。
【０００８】
本発明の他の目的は、ランダムリード時の読み出し性能が向上できる自己ミラーリング方法及び同方法を適用するディスク記憶装置を提供することにある。
【０００９】
【課題を解決するための手段】
本発明の第１の観点によれば、ディスク媒体の各ディスク面に対応してそれぞれ設けられるヘッドを当該ディスク媒体の半径方向に移動可能なように支持するアクチュエータを備えたディスク記憶装置における自己ミラーリング方法が提供される。この方法は、１つのライトコマンドに対し、当該ライトコマンドで指定されるディスク媒体の目標トラックが存在するディスク面及びディスク媒体のもう一方のディスク面にそれぞれ対応して設けられた各ヘッドを用いて、上記目標トラック及び当該目標トラックとシリンダ位置が同一の別のトラックに、同一データを同時に書き込むステップと、１つのリードコマンドに対し、当該リードコマンドで指定されるディスク媒体の目標トラックが存在するディスク面に対応して設けられたヘッドを用いて当該目標トラックのデータを読み出すステップと、上記目標トラックのデータを読み出すステップでリードエラーが発生した場合、ディスク媒体の上記目標トラックが存在するディスク面とは異なるもう一方のディスク面に対応して設けられたヘッドを用いて、上記目標トラックとシリンダ位置が同一の別のトラックからデータを読み出すステップと、上記別のトラックからデータを読み出すステップの後に、目標トラックのデータの読み出しのリトライを、予め定められた第１のリトライ回数を上限に実行するステップと、上記目標トラックのデータの読み出しのリトライに失敗し、且つ上記別のトラックからデータを読み出すステップでリードエラーが発生した場合、当該別トラックのデータの読み出しのリトライを、上記第１のリトライ回数を上限に実行するステップと、少なくとも、上記目標トラックのデータの読み出しのリトライまたは上記別トラックのデータの読み出しのリトライの結果に応じて、上記目標トラックまたは上記別トラックのデータが現在回復不能なデータまたは回復不能となる可能性のあるデータであるか否かを検証するステップと、上記検証ステップでの検証結果に応じて、上記目標トラックまたは上記別トラックのデータのうち正しく読み出されたデータを、ディスク媒体の各データ面にそれぞれ確保された、それぞれシリンダアドレス範囲が同一の代替領域内の対応する代替トラックに記録する代替処理を実行するステップとを備えたことを特徴とする。
【００１０】
このように、本発明の第１の観点に係る自己ミラーリング方法においては、ディスク媒体の各ディスク面の同一シリンダ位置に同一データが記録され、データの２重化、つまり自己ミラーリングが実現される。しかも、２重化されたデータの少なくとも一方が正しく読めるものの、そのデータが回復不能となる可能性のあるデータである場合（例えば、一定の回数を超えるリトライで正しく読めた場合）、または２重化されたデータの一方が現在回復不能なデータ（例えばリトライを予め定められた上限回数繰り返しても正しく読めなかったデータ）であり、且つもう一方のデータが正しく読める場合に、正しく読めたデータを用いて、ディスク媒体の各データ面にそれぞれ確保された、それぞれシリンダアドレス範囲が同一の代替領域内の対応する代替トラックに記録する代替処理が行われるため、２重化されたデータが両方とも回復不能となるのを未然に防いで、データの２重化を常に維持できる。
【００１１】
本発明の第２の観点に係る自己ミラーリング方法は、同一ディスク面上にシリンダ数が同一の第１及び第２のユーザ領域を確保し、この第１及び第２のユーザ領域内の相対シリンダ位置が同一のシリンダに同一データを書き込むことで、データの２重化、つまり自己ミラーリングを実現するようにしたことを特徴とする。
【００１２】
本発明の第２の観点に係る自己ミラーリング方法においは、リードコマンドに対し、当該コマンドで指定された第１のユーザ領域内の目標トラック、または当該目標トラックが存在するディスク面上の第２のユーザ領域内の、当該目標トラックと相対シリンダ位置が同一の別のトラックのうち、現在のヘッド位置に近いトラックのデータを読むことにより、ランダムリード時の読み出し性能の向上が図れる。しかも、２重化されたデータの少なくとも一方が正しく読めるものの、そのデータが回復不能となる可能性のあるデータである場合、または２重化されたデータの一方が現在回復不能なデータで、且つもう一方のデータが正しく読める場合に、正しく読めたデータを用いて、第１及び第２のユーザ領域に対してそれぞれ一定の位置関係を保って確保された第１及び第２の代替領域内の対応する代替トラックに記録する代替処理が行われるため、データの２重化を常に維持できる。
【００１３】
【発明の実施の形態】
以下、本発明を磁気ディスク装置に適用した実施の形態につき図面を参照して説明する。
【００１４】
図１は本発明の一実施形態に係る磁気ディスク装置の構成を示すブロック図である。
図１の磁気ディスク装置（以下、ＨＤＤと称する）において、磁気記録媒体としてのディスク（磁気ディスク）１１は上側と下側の２つのディスク面１１−０，１１−１を有している。ディスク１１の各ディスク面１１−０，１１−１は、データが磁気記録される記録面をなしている。各ディスク面１１−０，１１−１には、同心円状の多数のトラック（データトラック）が配置されたリング状のデータ領域が確保されている。
【００１５】
ディスク１１の各ディスク面１１−０，１１−１に対応してそれぞれヘッド（磁気ヘッド）ヘッドＨ０，Ｈ１が配置されている。ヘッドＨ０，Ｈ１は、ディスク１１（のディスク面１１−０，１１−１）へのデータ書き込み（データ記録）及びディスク１１（のディスク面１１−０，１１−１）からのデータ読み出し（データ再生）に用いられる。なお、図１の構成では、単一枚のディスク１１を備えたＨＤＤを想定しているが、ディスク１１が複数枚積層配置されたＨＤＤであっても構わない。
【００１６】
ディスク１１の各ディスク面１１−０，１１−１には、複数のサーボ領域（図示せず）がディスク１１の半径方向に放射状に且つディスク１１の円周方向に等間隔で離散的に配置されている。各サーボ領域には、ヘッドＨ０，Ｈ１を目標トラックに移動させて当該目標トラックの目標範囲内に位置付けるのに用いられるサーボデータが記録されている。このサーボデータは、当該サーボデータを識別するための固有のパターンであるサーボマーク、トラックコード（シリンダアドレス）及びバースト信号を含む。トラックコード及びバースト信号は、ヘッドＨ０，Ｈ１を目標トラックの目標範囲内に位置付けるための位置情報として用いられる、更に詳細に述べるならば、トラックコードは、対応するサーボ領域が位置するトラック（シリンダ）を示す。このトラックコードに基づき、ヘッドＨ０，Ｈ１を目標トラックに移動させるシーク制御が行われる。バースト信号は、対応するサーボ領域が位置するトラックにおけるヘッドの相対的な位置情報（位置誤差）を、再生波形の振幅で示す。シーク制御の完了後、このバースト信号に基づき、ヘッドＨ０，Ｈ１を目標トラックの目標範囲内に位置付けるためのトラックキング制御が行われる。隣接するサーボ領域の間は、ユーザデータ領域となっており、当該データ領域にはデータセクタが複数個配置されている。
【００１７】
また、ディスク１１のディスク面１１−０，１１−１には、図２に示すように、ユーザから利用可能なユーザ領域１１１−０，１１１−１と、欠陥セクタの代替先となる代替トラックが確保された代替領域１１２−０，１１２−１と、システム管理に必要な情報、つまりシステム管理情報を保存する管理領域１１３−０，１１３−１とが割り当てられている。システム管理情報は、欠陥セクタと当該セクタに割り当てられるセクタ（代替セクタ）との対応関係を示す欠陥セクタ管理情報を含む。欠陥セクタ管理情報は、欠陥セクタのアドレスと当該セクタに割り当てられるセクタのアドレスとの組を含む。なお、図１の例では、代替領域１１３−０，１１３−１はユーザ領域１１１−０，１１１−１の外周側にリング状に配置されているが、これに限るものではない。例えば、ユーザ領域１１１−０，１１１−１の内周側に、或いはユーザ領域１１１−０，１１１−１の外周側と内周側の両方に、代替領域が配置されるようにしても構わない。代替領域１１２−０，１１２−１と管理領域１１３−０，１１３−１とは、システムのみが使用する、つまりユーザからは見えない非ユーザ領域である。この代替領域１１２−０，１１２−１と管理領域１１３−０，１１３−１とを合わせた領域はシステム領域と呼ばれる。なお、管理領域１１３−０，１１３−１だけがシステム領域と呼ばれることもある。
【００１８】
ディスク１１はスピンドルモータ（以下、ＳＰＭと称する）１３により高速に回転する。ヘッドＨ０，Ｈ１はヘッド移動機構としてのアクチュエータ（キャリッジ）１４の先端に、ディスク１１の半径方向に移動可能なように支持されている。アクチュエータ１４は、当該アクチュエータ１４の駆動源となるボイスコイルモータ（以下、ＶＣＭと称する）１５を有しており、当該ＶＣＭ１５により駆動される。
【００１９】
ＳＰＭ１３及びＶＣＭ１５は、ドライバＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１６からそれぞれ供給される駆動電流により駆動される。ドライバＩＣ１６は１チップ化されたモータドライバであり、ＳＰＭドライバ及びＶＣＭドライバを構成する。ドライバＩＣ１６からＳＰＭ１３及びＶＣＭ１５にそれぞれ供給される駆動電流を決定するための値（制御量）は、ＣＰＵ２０により決定される。
【００２０】
ヘッドＨ０，Ｈ１はフレキシブルプリント配線板（ＦＰＣ）に実装されたヘッドＩＣ１７と接続されている。ヘッドＩＣ１７は、ヘッドＨ０，Ｈ１により読み取られた微弱な信号（リード信号）を増幅するリードアンプ、及びライトデータをヘッドＨ０，Ｈ１に例えば同時に供給するライト電流に変換するライトアンプを含む、１チップ化されたヘッドアンプ回路である。
【００２１】
ヘッドＩＣ１７は、リード／ライトチャネル（以下、Ｒ／Ｗチャネルと称する）１８と接続されている。Ｒ／Ｗチャネル１８は、ヘッドＩＣ１７から出力される増幅されたリード信号に対するＡ／Ｄ（アナログ／デジタル）変換処理、ライトデータの符号化処理及びリードデータの復号化処理、Ａ／Ｄ変換処理で２値化されたリード信号からゲートアレイ１９により生成されるタイミング信号に従ってサーボデータを抽出するサーボデータ検出処理等の各種の信号処理を実行する。
【００２２】
Ｒ／Ｗチャネル１８は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）としての例えばゲートアレイ１９及びＨＤＣ（ディスクコントローラ）２３と接続されている。ゲートアレイ１９は、Ｒ／Ｗチャネル１８により検出されたサーボデータから位置情報を抽出して、ＣＰＵ２０から読み込み可能なように保持する。またゲートアレイ１９は、ＨＤＤにおけるデータの読み出し／書き込み、Ｒ／Ｗチャネル１８でのサーボデータの検出等に必要な各種のタイミング信号を生成する。ゲートアレイ１９は、制御用のレジスタ群（図示せず）を有している。この制御用レジスタ群はＣＰＵ２０のメモリ領域の一部に割り当てられており、ＣＰＵ２０がこの領域に対して読み出し及び書き込みを行うことでゲートアレイ１９及びＨＤＣ２３を制御する。
【００２３】
ＣＰＵ２０は、制御プログラムが格納された不揮発性メモリ、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２１と、当該ＣＰＵ２０のワーク領域等を提供するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２と接続されている。ＣＰＵ２０は、ＨＤＤの主コントローラであり、ＲＯＭ２１に格納されている制御プログラムに従ってＨＤＤ内各部を制御する。
【００２４】
例えばＣＰＵ２０は、ゲートアレイ１９により抽出される位置情報に基づいてヘッド１２を目標トラックの目標範囲内に位置付ける制御を行う。ＣＰＵ２０はまたディスク１１におけるデータの２重化のために、ゲートアレイ１９を介してヘッドＩＣ１７を制御することで、１つのライトコマンドに対して、ディスク１１の一方のディスク面上に存在する目標トラックの目標セクタと、当該目標トラックとシリンダ位置が同一である他方のディスク面上の当該目標セクタに対応するセクタに同一データを書き込ませる制御を行う。本実施形態では、ホストからはディスク面１１−０のユーザ領域１１１−０が割り当てられる論理アドレスのみが見えるようになっている。つまりディスク面１１−１の領域は、ディスク面１１−０に対するバックアップ領域として用いられる。
【００２５】
またＣＰＵ２０は、ディスク１１のディスク面１１−０，１１−１上のそれぞれ対応するセクタの一方が異常（欠陥セクタ）の場合、もう一方のセクタのデータを用いて、ディスク面１１−０，１１−１上の代替領域１１２−０，１１２−１における同一シリンダ位置への代替処理を行う。
【００２６】
ＨＤＣ（ディスクコントローラ）２３は、Ｒ／Ｗチャネル１８によって復号化されたリードデータからホストに転送すべきデータを生成する。またＨＤＣ２３は、ホストから転送されたライトデータを符号化してＲ／Ｗチャネル１８に転送する。ＨＤＣ２３、Ｒ／Ｗチャネル１８により復号されたリードデータのＥＣＣ（エラー検出訂正）処理を実行するＥＣＣ回路２３０を内蔵する。
【００２７】
バッファメモリ２４は例えばＲＡＭである。バッファメモリ２４には、ホストとＨＤＤ（内のＨＤＣ２３）との間で転送されるデータを一時格納するバッファ領域が確保されている。バッファメモリ２４にはまた、ディスク１１のディスク面１１−０，１１−１上の管理領域１１３−０，１１３−１に保存されている欠陥セクタ管理情報の群の写しがＨＤＤの立ち上げ時に格納される、欠陥セクタ管理情報領域が確保されている。ＣＰＵ２０は、バッファメモリ２４上の欠陥セクタ管理情報の群を参照することで、目的セクタが欠陥セクタである場合に、その代替セクタを高速に認識することができる。
【００２８】
次に、図１の構成の動作を説明する。
まず、ライト動作について図３のフローチャートを参照して説明する。
図１のＨＤＤでは、ホストからのライトコマンドで指定されたデータの書き込みは、セクタ単位で順次行われる。
【００２９】
今、目標トラックの目標セクタＳＣＴ０がディスク１１のディスク面１１−０上のシリンダＣｘ内にあるものとする。この場合、ＣＰＵ２０は、ドライバＩＣ１６を介してＶＣＭ１５を駆動することで、アクチュエータ１４により支持されているヘッドＨ０を、ディスク面１１−０上の目標トラックに移動させるシーク制御と、ヘッドＨ０を当該目標トラックの目標範囲内に位置付けるトラッキング制御とを行う。この制御により、ヘッドＨ１は、ディスク面１１−０上の目標トラックとシリンダ番号が同一の、ディスク面１１−１上のシリンダＣｘの位置に位置付けられる。
【００３０】
この状態でＣＰＵ２０は、ゲートアレイ１９を介してヘッドＩＣ１７を制御することで、ヘッドＨ０及びＨ１により、ディスク面１１−０のシリンダＣｘ内の目標セクタＳＣＴ０及びディスク面１１−１のシリンダＣｘ内の当該目標セクタＳＣＴ０と同一セクタ番号のセクタＳＣＴ１に同一データを同時に書き込ませる（ステップＳ１）。これにより、ディスク面１１−０上のシリンダＣｘ内の目標セクタＳＣＴ０に書き込まれたデータと同一のデータが、ディスク面１１−１上のシリンダＣｘ内の上記目標セクタＳＣＴ０と同一セクタ番号のセクタＳＣＴ１にも書き込まれる。この結果、１つのＨＤＤ内でのデータの２重化、つまり自己ミラーリングが図られる。
【００３１】
次に、図１の構成におけるリード動作について、図４及び図５のフローチャートを参照して説明する。
図１のＨＤＤでは、ホストからのリードコマンドで指定されたデータの読み込みも、セクタ単位で順次行われる。
【００３２】
今、目標トラック内の目標セクタＳＣＴ０が、上記ライト動作の場合と同様に、ディスク１１のディスク面１１−０上のシリンダＣｘ内にあるものとする。この場合、ＣＰＵ２０は、ヘッドＨ０をディスク面１１−０上の目標トラック（シリンダＣｘ）の目標範囲内に位置付ける。このとき、ヘッドＨ１は、ディスク面１１−１上のシリンダＣｘの位置に位置付けられる。
【００３３】
この状態でＣＰＵ２０は、ゲートアレイ１９を介してヘッドＩＣ１７を制御することで、ヘッドＨ０によりディスク面１１−０上のシリンダＣｘ（目標トラック）からデータを読み出させ、ＨＤＣ２３によりそのデータから、シリンダＣｘ内の目標セクタＳＣＴ０のデータを抽出させる（ステップＳ１１）。このときＨＤＣ２３では、ＥＣＣ回路２３０によりエラー検出・訂正処理が行われる。
【００３４】
ＣＰＵ２０は、ＨＤＣ２３により正しいデータが抽出できないリードエラーの発生の有無を判定する（ステップＳ１２）。もし、リードエラーがないならば、目標セクタＳＣＴ０からデータを読み出すリード動作は終了する。
【００３５】
これに対し、リードエラーが発生した場合、ＣＰＵ２０は、ゲートアレイ１９を介してヘッドＩＣ１７を制御することで、ヘッドＨ１によりディスク面１１−１上のシリンダＣｘからデータを読み出させ、ＨＤＣ２３によりそのデータから、上記目標セクタＳＣＴ０と同一セクタ番号のセクタＳＣＴ１のデータを抽出させる（ステップＳ１３）。ここで、リードエラーが発生しなかったならば（ステップＳ１４）、つまりセクタＳＣＴ１のデータがＨＤＣ２３により正しく抽出されたならば、そのデータが上記目標セクタＳＣＴ０からの正しい読み出しデータとして用いられる。このときＣＰＵ２０は、図示せぬフラグをＯＮし（ステップＳ１５）、リードリトライのためにステップＳ１６に進む。これに対し、リードエラーが発生したならば、ＣＰＵ２０はそのままリードリトライのためにステップＳ１６に進む。
【００３６】
ＣＰＵ２０はステップＳ１６において、リトライ回数をカウントするカウンタ（リトライカウンタ）Ｒを初期値０に設定し、しかる後にヘッドＨ０によりディスク面１１−０のシリンダＣｘのデータを読み出させ、そのデータからＨＤＣ２３により目標セクタＳＣＴ０のデータを抽出させる（ステップＳ１７）。ここで、リードエラーが発生したならば（ステップＳ１８）、ＣＰＵ２０はリトライカウンタＲを１だけインクリメントし（ステップＳ１９）、そのインクリメント後のリトライカウンタＲの値が、リトライ回数の上限値ＲＭＡＸ１を超えているか否かを判定する（ステップＳ２０）。もし、ＲがＲＭＡＸ１を超えていないならば、ＣＰＵ２０は再びヘッドＨ０によるリード動作のリトライを行う（ステップＳ１７）。
【００３７】
このように、ＣＰＵ２０はＲＭＡＸ１を上限に、ヘッドＨ０によるリード動作で目標セクタＳＣＴ０のデータが正しく読み出せるまで、リードリトライを繰り返す（ステップＳ１７〜Ｓ２０）。
【００３８】
もし、ＲがＲＭＡＸ１を超える前に、目標セクタＳＣＴ０のデータが正しく読み出せたならば、ＣＰＵ２０はそのときのＲの値が、当該セクタＳＣＴ０を正常セクタと認定するリトライ回数の上限値ＲＭＡＸ２（ＲＭＡＸ２＜ＲＭＡＸ１）を超えているか否かを判定する（ステップＳ２１）。もし、ＲがＲＭＡＸ２を超えていないならば、ＣＰＵ２０は上記目標セクタＳＣＴ０は正常であるとして、目標セクタＳＣＴ０からデータを読み出すリード動作を終了する。
【００３９】
これに対し、ＲがＲＭＡＸ２を超えているならば、つまりＲＭＡＸ２を超える回数のリトライにより初めて目標セクタＳＣＴ０のデータを正しく読み出せたならば、ＣＰＵ２０は当該目標セクタＳＣＴ０は欠陥セクタの可能性があり、近い将来、ＲＭＡＸ１で示される回数のリトライを行っても当該セクタから正しいデータが読み出せなくなる虞があると判定する。この場合、ＣＰＵ２０は、上記目標セクタＳＣＴ０を欠陥セクタと認定し、以下に述べる代替処理を行う。
【００４０】
まずＣＰＵ２０は、ディスク面１１−０上のシリンダＣｘ内の目標セクタＳＣＴ０に、当該ディスク面１１−０の代替領域１１２−０内の任意の空きセクタを代替セクタとして割り当てて、当該代替セクタに上記目標セクタＳＣＴ０から読み出されたデータをヘッドＨ０により書き込ませる代替処理を行う（ステップＳ２２）。ここでは、欠陥セクタのアドレスと代替セクタのアドレスとの対を含む欠陥セクタ管理情報が、バッファメモリ２４内の欠陥セクタ管理情報領域に追加される。このバッファメモリ２４内の欠陥セクタ管理情報領域には、図１のＨＤＤの立ち上げ時にディスク面１１−０，１１−１の管理領域１１３−０，１１３−１から読み出された欠陥セクタ管理情報群が格納されている。
【００４１】
次にＣＰＵ２０は、ディスク面１１−１上のシリンダＣｘ内の（上記目標セクタＳＣＴ０とセクタ番号が同一の）セクタＳＣＴ１に、当該セクタＳＣＴ１が正常であるか否かに無関係に、当該ディスク面１１−１の代替領域１１２−１内の任意の空きセクタ（好ましくは上記目標セクタＳＣＴ０に対する代替セクタに対応する位置の空きセクタ）を代替セクタとして割り当てて、その割り当てた代替セクタに上記目標セクタＳＣＴ０から読み出されたデータをヘッドＨ１により書き込ませる代替処理を行う（ステップＳ２３）。ここでは、欠陥セクタのアドレスと代替セクタのアドレスとの対を含む欠陥セクタ管理情報が、バッファメモリ２４内の欠陥セクタ管理情報領域に追加される。
【００４２】
これにより、ディスク面１１−０のシリンダＣｘ内の欠陥と認定されたセクタＳＣＴ０と、ディスク面１１−１のシリンダＣｘ内の当該セクタＳＣＴ０に対応するセクタＳＣＴ１とは共に、代替領域１１２−０，１１２−１内の空きセクタに代替され、データの２重化が維持される。
【００４３】
なお、ディスク面１１−０，１１−１の代替領域１１２−０，１１２−１内のセクタ群をそれぞれ管理するバッファメモリ２４内の欠陥セクタ管理情報群は、ＨＤＤのアイドル状態における任意のタイミングと、ＨＤＤの停止時とに、ディスク面１１−０，１１−１の管理領域１１３−０，１１３−１に書き戻される。
【００４４】
一方、ヘッドＨ０によるリード動作のリトライをＲＭＡＸ１回繰り返しても、目標セクタＳＣＴ０のデータを正しく読み出せなかったならば（ステップＳ２０）、つまりＲＭＡＸ１回のリトライに失敗したならば、ＣＰＵ２０は当該目標セクタＳＣＴ０は回復不能な欠陥セクタであると認定する。
【００４５】
この場合、上記フラグがＯＮしているならば（ステップＳ２４）、ＣＰＵ２０は、ディスク面１１−１上のシリンダＣｘ内の（上記目標セクタＳＣＴ０とセクタ番号が同一の）セクタＳＣＴ１のデータは正しく読み出されているものとして、当該データを用いて（先に目標セクタＳＣＴ０のデータを用いて行った場合と同様にして）上記ステップＳ２２，Ｓ２３の代替処理を行う。これにより、セクタＳＣＴ０が回復不能な欠陥セクタであっても、当該欠陥セクタＳＣＴ０に対応するセクタＳＣＴ１のデータを用いることで、欠陥セクタＳＣＴ０とセクタＳＣＴ１とは共に、代替領域１１２−０，１１２−１内の空きセクタに代替され、データの２重化が維持される。
【００４６】
これに対し、上記フラグがＯＮしていないならば（ステップＳ２４）、ＣＰＵ２０は、上記ステップＳ１６から始まるヘッドＨ０によるリード動作のリトライと同様にして、ヘッドＨ１によるリード動作のリトライを開始する。即ちＣＰＵ２０は、リトライカウンタＲを初期値０に設定し（ステップＳ２５）、しかる後にＲＭＡＸ１を上限に、ヘッドＨ１によるリード動作で、ディスク面１１−１のシリンダＣｘ内の、目標セクタＳＣＴ０に対応するセクタＳＣＴ１のデータが正しく読み出せるまで、リードリトライを繰り返す（ステップＳ２６〜Ｓ２９）。
【００４７】
もし、ＲがＲＭＡＸ１を超える前に、セクタＳＣＴ１のデータが正しく読み出せ場合（ステップＳ２７）、そのデータが上記目標セクタＳＣＴ０からの正しい読み出しデータとして用いられる。この場合、、ＣＰＵ２０は、セクタＳＣＴ１のデータを用いて（先に目標セクタＳＣＴ０のデータを用いて行った場合と同様にして）上記ステップＳ２２，Ｓ２３の代替処理を行う。これにより、セクタＳＣＴ０が回復不能な欠陥セクタであっても、セクタＳＣＴ１のデータを用いることで、欠陥セクタＳＣＴ０とセクタＳＣＴ１とは共に、代替領域１１２−０，１１２−１内の空きセクタに代替され、データの２重化が維持される。
【００４８】
これに対し、ヘッドＨ１によるリード動作のリトライをＲＭＡＸ１回繰り返しても、セクタＳＣＴ１のデータを正しく読み出せなかったならば、つまりヘッドＨ０及びＨ１による、それぞれＲＭＡＸ１回のリトライに失敗したならば、ＣＰＵ２０は目標セクタＳＣＴ０及び対応するセクタＳＣＴ１のいずれも回復不能な欠陥セクタであるとして、エラー処理に進む。
【００４９】
［第１の変形例］
次に、上記実施形態の第１の変形例について説明する。
【００５０】
この第１の変形例の特徴は、データの２重化を、ディスク１１の同一ディスク面上で実現する点にある。そのため、ディスク１１の各ディスク面１１−０，１１−１では、ユーザ領域が、図６に示すようにディスク１１の半径方向に２つのユーザ領域２１１−０及び２１１−１に分割されている。ここで、ユーザ領域２１１−０及び２１１−１内のシリンダ（トラック）数は同一であり、ｎであるものとする。また、各シリンダ（トラック）内のセクタ（データセクタ）数は同一であるものとする。ユーザ領域（外周側のユーザ領域）２１１−０のシリンダアドレスは０〜ｎ−１であり、ユーザ領域（内周側のユーザ領域）２１１−１のシリンダアドレスはｎ〜２ｎ−１である。ホストからは、ユーザ領域２１１−０のシリンダのアドレス０〜ｎ−１だけが見えるものとする。ユーザ領域２１１−０の外周側には、当該ユーザ領域２１１−０内の欠陥セクタの代替に用いられる代替領域２１２−０と、図２中の管理領域１１３−０，１１３−１に相当する管理領域２１３とが確保されている。また、ユーザ領域２１１−１の外周側（ユーザ領域２１１−０の内周側）には、当該ユーザ領域２１１−１内の欠陥セクタの代替に用いられる代替領域２１２−１が確保されている。ここでは、代替領域２１２−０，２１２−１のシリンダ数は同一であり、ユーザ領域２１１−０，２１１−１に対して一定の関係を保つ位置、例えばユーザ領域２１１−０，２１１−１の外周に接する位置に配置されている。
【００５１】
次に、上記実施形態の第１の変形例の動作について、便宜的に図１の構成を援用して説明する。
【００５２】
まず、目標トラックｉがディスク１１のディスク面１１−０のユーザ領域２１１−０に含まれている場合のライト動作について図７のフローチャートを参照して説明する。
今、ヘッドＨ０がディスク面１１−０のユーザ領域２１１−０内の目標トラックｉにシーク・位置決めされているものとする。この状態でＣＰＵ２０は、ディスク１１のユーザ領域２１１−０内の目標トラックｉの目標セクタＳＣＴ０にヘッドＨ０によりデータを書き込ませる（ステップＳ３１）。次にＣＰＵ２０は、ヘッドＨ０を、ディスク１１のユーザ領域２１１−１内の、上記目標トラックｉと相対位置（相対シリンダ位置）が同一のトラックｊに移動して、そのトラックｊの上記目標セクタＳＣＴ０と同一セクタ番号のセクタＳＣＴ１に、当該目標セクタＳＣＴ０に書き込んだのと同一のデータをヘッドＨ０により書き込ませる（ステップＳ３２）。これにより、ディスク面１１−０のユーザ領域２１１−０のトラックｉ内の目標セクタＳＣＴ０に書き込まれたデータと同一のデータが、同じディスク面１１−０のユーザ領域２１１−１の当該目標セクタＳＣＴ０と相対位置が同一のトラックｊ内の対応するセクタＳＣＴ１にも書き込まれる。この結果、１つのＨＤＤ内でのデータの２重化、つまり自己ミラーリングが図られる。ここで、トラックｉのシリンダアドレスをＣｘとすると、トラックｊのシリンダアドレスはＣｘ＋ｎで表される。
【００５３】
次に、上記第１の変形例におけるリード動作について、目標トラックがディスク１１のディスク面１１−０のユーザ領域２１１−０内にある場合について、図８乃至図１１のフローチャートを参照して説明する。
まずＣＰＵ２０は、ホストからのリードコマンドで指定されたデータの読み込みをセクタ単位で実行するに際し、ゲートアレイ１９により検出される現在のヘッド位置（ここではヘッドＨ０のシリンダ位置）を、ユーザ領域２１１−０内の目標トラックｉの位置（シリンダ位置Ｃｘ）、及びユーザ領域２１１−１内の、当該目標トラックｉと相対位置が同一のトラックｊの位置（シリンダ位置Ｃｘ＋ｎ）と比較する（ステップＳ４１）。そしてＣＰＵ２０は、現在のヘッド位置（ヘッドＨ０のシリンダ位置）が、目標トラックｉまたは対応するトラックｊのいずれの側に近いかを判定する（ステップＳ４２）。
【００５４】
もし、ヘッドＨ０がトラックｉ，ｊのうちのトラックｉに近いならば、ＣＰＵ２０はヘッドＨ０を現在位置からトラックｉの位置（シリンダＣｘの位置）に移動（シーク）させる（ステップＳ４３）。次にＣＰＵ２０は、ヘッドＨ０によりユーザ領域２１１−０内のトラックｉ（シリンダＣｘ）からデータを読み出させ、ＨＤＣ２３によりそのデータから、トラックｉ内の目標セクタＳＣＴ０のデータを抽出させる（ステップＳ４４）。
【００５５】
ＣＰＵ２０は、ＨＤＣ２３により正しいデータが抽出できないリードエラーの発生の有無を判定する（ステップＳ４５）。もし、リードエラーがないならば、目標セクタＳＣＴ０からデータを読み出すリード動作は終了する。この場合、２重化されたデータのうち、ヘッドＨ０の位置に近い方のデータが読み出されたことから、高速読み出しが実現できる。即ち第１の変形例によれば、ランダムリードアクセス時には、異なるシリンダ位置に格納された２重化データを利用して、その際のヘッド位置に近い方のデータを読み出すことにより、シーク時間を短縮して、より速い応答速度を実現できる。
【００５６】
これに対し、リードエラーが発生した場合、ＣＰＵ２０はヘッドＨ０をトラックｉ（シリンダＣｘ）からユーザ領域２１１−１内のトラックｊの位置（シリンダＣｘ＋ｎ）に移動（シーク）させる（ステップＳ４６）。次にＣＰＵ２０は、ヘッドＨ０によりユーザ領域２１１−１内のトラックｊ（シリンダＣｘ＋ｎ）からデータを読み出させ、ＨＤＣ２３によりそのデータから、トラックｊ内のセクタＳＣＴ１のデータを抽出させる（ステップＳ４７）。ここで、リードエラーが発生しなかったならば（ステップＳ４８）、ＣＰＵ２０はトラックｊ内のセクタＳＣＴ１は正常であるとして図示せぬＦ１フラグをＯＮし（ステップＳ４９）、先にエラーとなったトラックｉ内のセクタＳＣＴ０を対象とするリードリトライのためにステップＳ６８に進む。
【００５７】
これに対し、リードエラーが発生したならば（ステップＳ４８）、ＣＰＵ２０は上記実施形態と同様にして、当該リードエラーとなったトラックｊ内のセクタＳＣＴ１を対象とするリードリトライを開始する。即ちＣＰＵ２０は、リトライカウンタＲを初期値０に設定し（ステップＳ５０）、しかる後にＲＭＡＸ１を上限に、ヘッドＨ０によるリード動作で、ディスク面１１−０のユーザ領域２１１−１のトラックｊ（シリンダＣｘ＋ｎ）内の、目標セクタＳＣＴ０に対応するセクタＳＣＴ１のデータが正しく読み出せるまで、リードリトライを繰り返す（ステップＳ５１〜Ｓ５４）。
【００５８】
もし、ＲがＲＭＡＸ１を超える前に、トラックｊ内のセクタＳＣＴ１のデータが正しく読み出せ（ステップＳ５２）、且つＲがＲＭＡＸ２をも超えていないならば（ステップＳ５２ａ）、ＣＰＵ２０は当該セクタＳＣＴ１は正常であるとして上記Ｆ１フラグをＯＮし（ステップＳ４９）、上記ステップＳ６８に進む。
【００５９】
また、ＲがＲＭＡＸ１を超える前に、セクタＳＣＴ１のデータが正しく読み出せても（ステップＳ５２）、ＲがＲＭＡＸ２を超えているならば（ステップＳ５２ａ）、ＣＰＵ２０は当該セクタＳＣＴ１は近い将来回復不能な欠陥セクタとなる虞があるものと判断し、図示せぬＦ２フラグをＯＮして（ステップＳ５２ｂ）、上記ステップＳ６８に進む。
【００６０】
また、リードリトライをＲＭＡＸ１回繰り返しても、トラックｊ内のセクタＳＣＴ１のデータを正しく読み出せなかったならば、ＣＰＵ２０は当該セクタＳＣＴ１は回復不能な欠陥セクタであると認定する。この場合、ＣＰＵ２０はそのまま上記ステップＳ６８に進む。
【００６１】
ＣＰＵ２０は、ステップＳ６８において、ヘッドＨ０をトラックｊ（シリンダＣｘ＋ｎ）からユーザ領域２１１−０内のトラックｉの位置（シリンダＣｘ）に移動させる。そしてＣＰＵ２０は、先にエラーとなったトラックｉ内のセクタＳＣＴ０を対象とするリードリトライを開始する。即ちＣＰＵ２０は、リトライカウンタＲを初期値０に設定し（ステップＳ６９）、しかる後にＲＭＡＸ１を上限に、ヘッドＨ０によるリード動作で、ディスク面１１−０のユーザ領域２１１−０のトラックｉ（シリンダＣｘ）内の目標セクタＳＣＴ０のデータが正しく読み出せるまで、リードリトライを繰り返す（ステップＳ７０〜Ｓ７３）。
【００６２】
もし、ＲがＲＭＡＸ１を超える前に、セクタＳＣＴ０のデータが正しく読み出せた場合（ステップＳ７１）、ＣＰＵ２０はＦ１フラグがＯＮしているか否かを判定する（ステップＳ７４）、ＣＰＵ２０は、Ｆ１フラグがＯＮしている場合、ユーザ領域２１１−１のトラックｊ（シリンダＣｘ＋ｎ）内のセクタＳＣＴ１は正常であると判断する。この場合、ＣＰＵ２０は、ＲがＲＭＡＸ２を超えているか否かを判定する（ステップＳ７５）。もし、ＲがＲＭＡＸ２を超えていないならば、ＣＰＵ２０はユーザ領域２１１−０のトラックｉ（シリンダＣｘ）内の目標セクタＳＣＴ０も正常であると判断し、当該目標セクタＳＣＴ０からデータを読み出すリード動作を終了する。これに対し、ＲがＲＭＡＸ２を超えているならば、ＣＰＵ２０はユーザ領域２１１−０のトラックｉ（シリンダＣｘ）内の目標セクタＳＣＴ０は欠陥セクタとなる可能性があるとして、セクタＳＣＴ０またはＳＣＴ１から読み出されたデータを用いて、以下に述べる代替処理を行う。
【００６３】
まずＣＰＵ２０は、現在ヘッドＨ０が位置しているディスク面１１−０のトラックｉ（シリンダＣｘ）内の目標セクタＳＣＴ０に、当該ディスク面１１−０の代替領域２１２−０内の任意の空きセクタを代替セクタとして割り当てて、当該代替セクタにセクタＳＣＴ０またはＳＣＴ１から読み出されたデータをヘッドＨ０により書き込ませる代替処理を行う（ステップＳ７６）。ここでは、欠陥セクタのアドレスと代替セクタのアドレスとの対を含む欠陥セクタ管理情報が、バッファメモリ２４内の欠陥セクタ管理情報領域に追加される。
【００６４】
次にＣＰＵ２０は、ヘッドＨ０をディスク面１１−０のトラックｊ（シリンダＣｘ＋ｎ）に移動させ、当該トラックｊ（シリンダＣｘ＋ｎ）内のセクタＳＣＴ１に、当該ディスク面１１−０の代替領域２１２−１内の任意の空きセクタを代替セクタとして割り当てて、当該代替セクタにセクタＳＣＴ０またはＳＣＴ１から読み出されたデータをヘッドＨ０により書き込ませる代替処理を行う（ステップＳ７７）。ここでは、欠陥セクタのアドレスと代替セクタのアドレスとの対を含む欠陥セクタ管理情報が、バッファメモリ２４に格納されている欠陥セクタ管理情報群に追加される。
【００６５】
これにより、ディスク面１１−０のトラックｉ（シリンダＣｘ）内の欠陥セクタであると認定されたセクタＳＣＴ０と、同じディスク面１１−０のトラックｊ（シリンダＣｘ＋ｎ）内の当該セクタＳＣＴ０に対応するセクタＳＣＴ１とは共に、代替領域２１２−０，２１２−１内の空きセクタに代替され、データの２重化が維持される。
【００６６】
一方、トラックｉ内のセクタＳＣＴ０を対象とするリードリトライをＲＭＡＸ１回繰り返しても、当該セクタＳＣＴ０のデータを正しく読み出せなかったならば（ステップＳ７３）、ＣＰＵ２０は当該セクタＳＣＴ０は回復不能な欠陥セクタであると認定する。
【００６７】
この場合、上記Ｆ１またはＦ２フラグがＯＮしているならば（ステップＳ７８）、ＣＰＵ２０は、トラックｊ（シリンダＣｘ＋ｎ）内のセクタＳＣＴ１からは正しいデータが読み出されていると判断し、当該セクタＳＣＴ１から読み出されたデータを用いて（先にセクタＳＣＴ０またはＳＣＴ１のデータを用いて行った場合と同様にして）上記ステップＳ７６，Ｓ７７の代替処理を行う。これにより、セクタＳＣＴ０が回復不能な欠陥セクタであっても、当該欠陥セクタＳＣＴ０に対応するセクタＳＣＴ１のデータを用いることで、欠陥セクタＳＣＴ０とセクタＳＣＴ１とは共に、代替領域２１２−０，２１２−１内の空きセクタに代替され、データの２重化が維持される。
【００６８】
以上、ヘッドＨ０がトラックｉ，ｊのうちのトラックｉに近い場合の動作について説明した。ヘッドＨ０がトラックｉ，ｊのうちのトラックｊに近い場合の動作については、ヘッドＨ０がトラックｉに近い場合と同様であるため、説明を省略する。必要があれば、上述の動作説明において、トラックｉをトラックｊに、トラックｊをトラックｉに、それぞれ読み替えられたい。
【００６９】
また、ディスク面１１−１を対象とするヘッドＨ１によるライト動作及びリード動作についても、上記したディスク面１１−０を対象とするヘッドＨ０によるライト動作及びリード動作と同様である。
【００７０】
［第２の変形例］
次に、上記実施形態の第２の変形例について説明する。
【００７１】
上記第１の変形例では、ディスク１１上の各シリンダ内のセクタ数は同一であるとしている。しかし、ディスク面がディスク半径方向に複数のリング状のゾーンに分割して管理されるＣＤＲ（Ｃｏｎｓｔａｎｔ  Ｄｅｎｓｉｔｙ  Ｒｅｃｏｒｄｉｎｇ）方式のＨＤＤの場合、各シリンダ内のセクタ数は、ゾーン毎に異なり、ディスク１１の外周側のゾーンほど、シリンダ内のセクタ数は多くなる。この場合、上記第１の変形例は適用できない。
【００７２】
そこで、例えば図１２に示すように、ディスク１１の各ディスク面が、ゾーンＺ０及びＺ１に分割して管理されているものとすると、そのゾーンＺ０及びＺ１のユーザ領域を、ディスク１１の半径方向に、それぞれ、シリンダ数が同一の２つのユーザ領域３１１−００，３１１−０１及び３１１−１０，３１１−１１に分割して管理するとよい。そして、ユーザ領域３１１−００，３１１−０１及び３１１−１０，３１１−１１毎に、代替領域３１２−００，３１２−０１及び３１２−１０，３１２−１１を確保する。ここでは、ユーザ領域３１１−００，３１１−０１及び代替領域３１２−００，３１２−０１の組と、ユーザ領域３１１−１０，３１１−１１及び代替領域３１２−１０，３１２−１１の組が、それぞれ、上記第１の変形例におけるユーザ領域２１１−０，２１１−１及び代替領域２１２−０，２１２−１の組に対応する。
【００７３】
上記実施形態では、本発明をＨＤＤ（磁気ディスク装置）に適用した場合について説明した。しかし本発明は、ディスク媒体を対象とするデータのリード／ライトがヘッドにより行われるディスク記憶装置であれば、光磁気ディスク装置などＨＤＤ以外のディスク記憶装置にも適用可能である。
【００７４】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも１つが解決でき、発明の効果の欄で述べられている効果の少なくとも１つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００７５】
【発明の効果】
以上詳述したように本発明の第１の観点によれば、ディスク媒体の各ディスク面の同一シリンダ位置に同一データを記録することによりデータの２重化、つまり自己ミラーリングを実現できる。しかも本発明によれば、２重化されたデータの少なくとも一方が正しく読めるものの、そのデータが回復不能となる可能性のあるデータである場合、または２重化されたデータの一方が現在回復不能なデータで、且つもう一方のデータが正しく読める場合に、正しく読めたデータを用いて、ディスク媒体の各データ面にそれぞれ確保された、それぞれシリンダアドレス範囲が同一の代替領域内の対応する代替トラックに記録する代替処理を行うようにしたので、データの２重化を常に維持できる。
【００７６】
また本発明の第２の観点によれば、同一ディスク面上にシリンダ数が同一の第１及び第２のユーザ領域を確保し、この第１及び第２のユーザ領域内の相対シリンダ位置が同一のシリンダに同一データを書き込むようにしたので、データの２重化、つまり自己ミラーリングを実現できる。しかも、リードコマンドに対し、当該コマンドで指定された第１のユーザ領域内の目標トラック、または当該目標トラックが存在するディスク面上の第２のユーザ領域内の、当該目標トラックと相対シリンダ位置が同一の別のトラックのうち、現在のヘッド位置に近いトラックのデータを読むようにしたので、ランダムリード時の読み出し性能の向上が図れる。更に、２重化されたデータの少なくとも一方が正しく読めるものの、そのデータが回復不能となる可能性のあるデータである場合、または２重化されたデータの一方が現在回復不能なデータであり、且つもう一方のデータが正しく読める場合に、正しく読めたデータを用いて、第１及び第２のユーザ領域に対して一定の位置関係を保って確保された第１及び第２の代替領域内の対応する代替トラックに記録する代替処理を行うようにしたので、データの２重化を常に維持できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る磁気ディスク装置の構成を示すブロック図。
【図２】図１中のディスク１１の各ディスク面１１−０，１１−１のフォーマットの概念を示す図。
【図３】同実施形態におけるライト動作を説明するためのフローチャート。
【図４】同実施形態におけるリード動作を説明するためのフローチャートの一部を示す図。
【図５】同実施形態におけるリード動作を説明するためのフローチャートの残りを示す図。
【図６】同実施形態の第１の変形例で適用されるディスク１１のフォーマットの概念を示す図。
【図７】同実施形態の第１の変形例におけるライト動作を説明するためのフローチャート。
【図８】同実施形態の第１の変形例におけるリード動作を説明するためのフローチャートの一部を示す図。
【図９】同実施形態の第１の変形例におけるリード動作を説明するためのフローチャートの他の一部を示す図。
【図１０】同実施形態の第１の変形例におけるリード動作を説明するためのフローチャートの更に他の一部を示す図。
【図１１】同実施形態の第１の変形例におけるリード動作を説明するためのフローチャートの残りを示す図。
【図１２】同実施形態の第２の変形例で適用されるディスク１１のフォーマットの概念を示す図。
【符号の説明】
１１…ディスク
１１−０，１１−１…ディスク面
２０…ＣＰＵ
２３…ＨＤＣ（ディスクコントローラ）
１１１−０，１１１−１，２１１−０，２１１−１，３１１−００，３１１−０１，３１１−１０，３１１−１１…ユーザ領域
１１２−０，１１２−１，２１２−０，２１２−１，３１２−００，３１２−０１，３１２−１０，３１２−１１…代替領域
１１３−０，１１３−１，２１３，３１３…管理領域
Ｈ０，Ｈ１…ヘッド
【図１】
0003590390.tif 000002
【図２】
0003590390.tif 000003
【図３】
0003590390.tif 000004
【図４】
0003590390.tif 000005
【図５】
0003590390.tif 000006
【図６】
0003590390.tif 000007
【図７】
0003590390.tif 000008
【図８】
0003590390.tif 000009
【図９】
0003590390.tif 000010
【図１０】
0003590390.tif 000011
【図１１】
0003590390.tif 000012
【図１２】
0003590390.tif 000013