(57)【要約】【課題】  ライト処理の性能を向上できる磁気ディスク装置及びライト処理方法を提供することである。【解決手段】  本実施形態に係る磁気ディスク装置は、ディスクと、前記ディスクに対してデータをライトし、前記ディスクからデータをリードするヘッドと、前記ディスクの第１トラックにおいてリードエラーが生じたエラーデータを訂正できる可能性を示す評価値に応じて、前記第１トラックをライトしている前記ヘッドの位置決め誤差が超えた場合にライト処理を中断する第１閾値を変更する、コントローラと、を備える。【選択図】図１
2019215943.tif 000002
【特許請求の範囲】
【請求項１】
ディスクと、
前記ディスクに対してデータをライトし、前記ディスクからデータをリードするヘッドと、
前記ディスクの第１トラックにおいてリードエラーが生じたエラーデータを訂正できる可能性に対応する評価値に応じて、前記第１トラックをライトしている前記ヘッドの位置決め誤差が超えた場合にライト処理を中断する第１閾値を変更する、コントローラと、を備える磁気ディスク装置。
【請求項２】
前記コントローラは、前記評価値に基づいて前記第１閾値を第１値から前記第１値よりも小さい第２値に変更する、請求項１に記載の磁気ディスク装置。
【請求項３】
前記コントローラは、前記評価値として前記位置決め誤差が前記第２値を超過した値の総和と前記位置決め誤差が前記第２値を超過した回数とを管理している、請求項２に記載の磁気ディスク装置。
【請求項４】
前記コントローラは、前記総和が第２閾値を超えた場合に前記第１閾値を前記第１値から前記第２値に変更する、請求項３に記載の磁気ディスク装置。
【請求項５】
前記コントローラは、前記回数が第３閾値を超えた場合に前記第１閾値を前記第１値から前記第２値に変更する、請求項３又は４に記載の磁気ディスク装置。
【請求項６】
前記コントローラは、前記位置決め誤差が前記第２値を超過した際に前記ヘッドがずれた第１方向に隣接する第１領域がリードできない不良領域である場合、前記総和及び前記回数を維持する、請求項３に記載の磁気ディスク装置。
【請求項７】
前記コントローラは、前記第１トラックの前記ディスクの半径方向に隣接する第２トラックをライトする際に前記総和及び前記回数を初期化する、請求項３乃至６のいずれか１項に記載の磁気ディスク装置。
【請求項８】
前記コントローラは、前記第１トラックの一部に前記第２トラックを重ね書きする、請求項７に記載の磁気ディスク装置。
【請求項９】
前記コントローラは、前記位置決め誤差が前記第１閾値の内の前記ディスクの半径方向の第１方向に対応する第２閾値に相当する第１値よりも小さい第２値を超過した値の第１総和と、前記位置決め誤差が前記第１閾値の内の前記第１方向と反対方向の第２方向に対応する第３閾値に相当する第３値よりも小さい第４値を超過した値の第２総和と、前記位置決め誤差が前記第１値を超過した第１回数と、前記位置決め誤差が前記第２値を超過した第２回数と、前記評価値として管理している、請求項１に記載の磁気ディスク装置。
【請求項１０】
前記コントローラは、
前記コントローラは、前記第１トラックに対応するパリティデータを前記第１トラックにライトし、前記パリティデータに基づいて前記エラーデータを訂正する、請求項１乃至９のいずれか１項に記載の磁気ディスク装置。
【請求項１１】
ディスクと、前記ディスクに対してデータをライトし、前記ディスクからデータをリードするヘッドとを備えている磁気ディスク装置に適用されるライト処理方法であって、
前記ディスクの第１トラックにおいてリードエラーが生じたエラーデータを訂正できる可能性を示す評価値に応じて、前記第１トラックをライトしている前記ヘッドの位置決め誤差が超えた場合にライト処理を中断する第１閾値を変更する、ライト処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、磁気ディスク装置及びライト処理方法に関する。
【背景技術】
【０００２】
近年、磁気ディスク装置の高記録容量化を実現するための様々な技術が開発されている。これら技術の一つとして瓦記録方式（Shingled write Magnetic Recording（ＳＭＲ）、またはShingled Write Recording（ＳＷＲ））と称される記録技術がある。瓦記録方式の磁気ディスク装置は、磁気ディスクへデータをライトする際に、隣接するトラック（以下、隣接トラックと称する）の一部に重ねて次の記録トラックを書き込みする。瓦記録方式の磁気ディスク装置では、重ね書きされたトラックの幅が重ね書きされていないトラックの幅と比較して狭くなり得る。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９０６４５２６号明細書
【特許文献２】米国特許第６９７５４６８号明細書
【特許文献３】米国特許第９３３６０７３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態が解決しようとする課題は、ライト処理の性能を向上できる磁気ディスク装置及びライト処理方法を提供することである。
【課題を解決するための手段】
【０００５】
本実施形態に係る磁気ディスク装置は、ディスクと、前記ディスクに対してデータをライトし、前記ディスクからデータをリードするヘッドと、前記ディスクの第１トラックにおいてリードエラーが生じたエラーデータを訂正できる可能性を示す評価値に応じて、前記第１トラックをライトしている前記ヘッドの位置決め誤差が超えた場合にライト処理を中断する第１閾値を変更する、コントローラと、を備える。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係る磁気ディスク装置の構成を示すブロック図である。
【図２】図２は、データがライトされた瓦記録領域の一例を示す模式図である。
【図３】図３は、第１実施形態に係るトラック単位のエラー訂正の方法の一例を示す模式図である。
【図４】図４は、ＤＤＯＬの一例を示す模式図である。
【図５】図５は、第１実施形態に係るＤＯＬの管理方法の一例を示すための模式図である。
【図６】図６は、第１実施形態に係るライト処理の制御系の一例を示すブロック図である。
【図７】図７は、第１実施形態に係るライト処理方法の一例を示すフローチャートである。
【図８】図８は、変形例１に係るＤＯＬの管理方法の一例を示すための模式図である。
【図９】図９は、変形例１に係るライト処理方法の一例を示すフローチャートである。
【図１０】図１０は、変形例２に係るライト処理方法の一例を示すフローチャートである。
【図１１】図１１は、変形例３に係るＤＯＬの管理方法の一例を示すための模式図である。
【図１２】図１２は、変形例３に係るライト処理方法の一例を示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下、実施の形態について図面を参照して説明する。なお、図面は、一例であって、発明の範囲を限定するものではない。  
（第１実施形態）  
図１は、第１実施形態に係る磁気ディスク装置１の構成を示すブロック図である。  
磁気ディスク装置１は、後述するヘッドディスクアセンブリ（ＨＤＡ）と、ドライバＩＣ２０と、ヘッドアンプ集積回路（以下、ヘッドアンプＩＣ、又はプリアンプ）３０と、揮発性メモリ７０と、バッファメモリ（バッファ）８０と、不揮発性メモリ９０と、１チップの集積回路であるシステムコントローラ１３０とを備える。また、磁気ディスク装置１は、ホストシステム（以下、単に、ホストと称する）１００と接続される。
【０００８】
ＨＤＡは、磁気ディスク（以下、ディスクと称する）１０と、スピンドルモータ（以下、ＳＰＭと称する）１２と、ヘッド１５を搭載しているアーム１３と、ボイスコイルモータ（以下、ＶＣＭと称する）１４とを有する。ディスク１０は、ＳＰＭ１２に取り付けられ、ＳＰＭ１２の駆動により回転する。アーム１３及びＶＣＭ１４は、アクチュエータを構成している。アクチュエータは、ＶＣＭ１４の駆動により、アーム１３に搭載されているヘッド１５をディスク１０上の所定の位置まで移動制御する。ディスク１０およびヘッド１５は、２つ以上の数が設けられてもよい。  
ディスク１０は、データ領域に、瓦記録（Shingled Magnetic Recording：ＳＭＲ）領域１０ａと、メディアキャッシュ（media cache）領域１０ｂと、が割り当てられている。以下、ディスク１０の半径方向に直交する方向を円周方向と称する。なお、ディスク１０は、瓦記録方式ではない通常の記録方式でライトされるユーザデータ領域や、システム管理に必要な情報をライトするシステムエリア等が割り当てられていてもよい。
【０００９】
瓦記録領域１０ａは、ホスト１００からライト要求されたユーザデータ等が記録される。メディアキャッシュ領域１０ｂは、瓦記録領域１０ａのキャッシュとして利用され得る。瓦記録領域１０ａでは、次にライトするトラックが現在ライトしたトラックの一部に重ね書きされる。そのため、瓦記録領域１０ａのトラック密度（Track Per Inch：ＴＰＩ）は、重ね書きされていない通常の記録方式でデータをライトされた領域のトラック密度よりも高くなる。瓦記録領域１０ａでは、重ね書きされた複数のトラックをそれぞれ含む複数のトラック群が互いに間隔（ギャップ）を空けて配置される。以下で、重ね書きされた複数のトラックを含むトラック群をバンド領域と称する。バンド領域は、半径方向に隣接するトラック（以下、隣接トラックと称する）が一部に重ね書きされた少なくとも１つのトラックと、最後に重ね書きされたトラック（最終トラック）とを含む。最終トラックは、他のトラックが重ね書きされていないため、他のトラックが一部に重ね書きされているトラックよりもトラック幅が広い。以下で、ディスク１０にライトされたトラックをライトトラックと称する。隣接トラックが重ね書きされた領域を除いた残りのライトトラックの領域をリードトラックと称する。また、ライトトラックを単にトラックと称する場合もあるし、リードトラックを単にトラックと称する場合もあるし、ライトトラック及びリードトラックをまとめて単にトラックと称する場合もある。トラックは、複数のセクタを含んでいる。例えば、複数のセクタは、それぞれ、誤り訂正符号（Error Correction Code）を含んでいる。誤り訂正符号は、例えば、ＬＤＰＣ（Low Density Parity Check）符号等を含む。なお、”トラック”は、ディスク１０の円周方向に延長するデータ、ディスク１０の円周方向に延長する領域、ヘッド１５の軌跡又は経路（動作経路）や、その他の種々の意味で用いる。”セクタ”は、トラックの所定の領域、例えば、セクタにライトされたデータ、トラックの所定の領域や、その他の種々の意味で用いる。また、ライトトラックの半径方向の幅をライトトラック幅と称し、リードトラックの半径方向の幅をリードトラック幅と称する場合もある。ライトトラック幅を単にトラック幅と称する場合もあるし、リードトラック幅を単にトラック幅と称する場合もあるし、ライトトラック幅及びリードトラック幅をまとめて単にトラック幅と称する場合もある。
【００１０】
図２は、データがライトされた瓦記録領域１０ａの一例を示す模式図である。図２において、縦軸は、ディスク１０の半径方向を示し、横軸は、ディスク１０の円周方向を示している。半径方向において、ディスク１０の中心に向かう方向を内方向（内側）ＩＤと称し、内方向と反対方向を外方向（外側）ＯＤと称する。また、半径方向において、データをライト及びリードする方向を順方向と称する。図２に示した例では、順方向は、内方向ＩＤと同じ方向である。なお、順方向は、外方向ＯＤと同じ方向であってもよい。円周方向において、一方向を右方向とし、右方向と反対方向を左方向とする。また、円周方向において、データをライト及びリードする方向を進行方向と称する。例えば、進行方向は、ディスク１０の回転方向と反対方向である。図２に示した例では、進行方向は、右方向と同じ方向である。なお、進行方向は、左方向と同じ方向であってもよい。
【００１１】
図２に示した例では、瓦記録領域１０ａは、バンド領域ＴＧｎを含む。図２では、バンド領域ＴＧｎにおける各トラックは、説明の便宜上、直線状に延長している。実際には、バンド領域ＴＧｎにおける各トラックは、ディスク１０の形状に沿って湾曲している同心円状である。つまり、実際には、バンド領域ＴＧｎにおける各トラックの左方向の端部と右方向の端部とは、一致している。また、バンド領域ＴＧｎにおける各トラックは、実際には外乱やその他の構造等の影響によるずれ等が生じている。なお、瓦記録領域１０ａは、２つ以上のバンド領域を含んでいてもよい。
【００１２】
図２に示した例では、バンド領域ＴＧｎは、ライトトラックＷＴｎ、ＷＴｎ＋１、ＷＴｎ＋２、ＷＴｎ＋３、及びＷＴｎ＋４を含む。ライトトラックＷＴｎ及びＷＴｎ＋１は、互いに一部が重なっている。ライトトラックＷＴｎ＋１及びＷＴｎ＋２は、互いに一部が重なっている。ライトトラックＷＴｎ＋２及びＷＴｎ＋３は、互いに一部が重なっている。ライトトラックＷＴｎ＋３及びＷＴｎ＋４は、互いに一部が重なっている。バンド領域ＴＧｎでは、ライトトラックＷＴｎ乃至ＷＴｎ＋４が半径方向にこの順番で重ね書きされている。なお、バンド領域ＴＧｎは、５つのトラックを含むとしたが、５つよりも少ない数のトラックを含んでいてもよいし、５つよりも多い数のトラックを含んでいてもよい。
【００１３】
ライトトラックＷＴｎは、トラックエッジＥｎＡとトラックエッジＥｎＢとを有している。図２に示した例では、トラックエッジＥｎＡは、ライトトラックＷＴｎの外方向ＯＤの端部であり、トラックエッジＥｎＢは、ライトトラックＷＴｎの内方向ＩＤ（順方向）の端部である。ライトトラックＷＴｎ＋１は、トラックエッジＥｎ＋１ＡとトラックエッジＥｎ＋１Ｂとを有している。図２に示した例では、トラックエッジＥｎ＋１Ａは、ライトトラックＷＴｎ＋１の外方向ＯＤの端部であり、トラックエッジＥｎ＋１Ｂは、ライトトラックＷＴｎ＋１の内方向ＩＤ（順方向）の端部である。ライトトラックＷＴｎ＋２は、トラックエッジＥｎ＋２ＡとトラックエッジＥｎ＋２Ｂとを有している。図２に示した例では、トラックエッジＥｎ＋２Ａは、ライトトラックＷＴｎ＋２の外方向ＯＤの端部であり、トラックエッジＥｎ＋２Ｂは、ライトトラックＷＴｎ＋２の内方向ＩＤ（順方向）の端部である。ライトトラックＷＴｎ＋３は、トラックエッジＥｎ＋３ＡとトラックエッジＥｎ＋３Ｂとを有している。図２に示した例では、トラックエッジＥｎ＋３Ａは、ライトトラックＷＴｎ＋３の外方向ＯＤの端部であり、トラックエッジＥｎ＋３Ｂは、ライトトラックＷＴｎ＋３の内方向ＩＤ（順方向）の端部である。ライトトラック（最終トラック）ＷＴｎ＋４は、トラックエッジＥｎ＋４ＡとトラックエッジＥｎ＋４Ｂとを有している。図２に示した例では、トラックエッジＥｎ＋４Ａは、ライトトラックＷＴｎ＋４の外方向ＯＤの端部であり、トラックエッジＥｎ＋４Ｂは、ライトトラックＷＴｎ＋４の内方向ＩＤ（順方向）の端部である。
【００１４】
ライトトラックＷＴｎのライトトラック幅ＷＷｎは、トラックエッジＥｎＡ及びＥｎＢの間の半径方向の長さである。ライトトラックＷＴｎ＋１のライトトラック幅ＷＷｎ＋１は、トラックエッジＥｎ＋１Ａ及びＥｎ＋１Ｂの間の半径方向の長さである。ライトトラックＷＴｎ＋２のライトトラック幅ＷＷｎ＋２は、トラックエッジＥｎ＋２Ａ及びＥｎ＋２Ｂの間の半径方向の長さである。ライトトラックＷＴｎ＋３のライトトラック幅ＷＷｎ＋３は、トラックエッジＥｎ＋３Ａ及びＥｎ＋３Ｂの間の半径方向の長さである。ライトトラックＷＴｎ＋４のライトトラック幅ＷＷｎ＋４は、トラックエッジＥｎ＋４Ａ及びＥｎ＋４Ｂの間の半径方向の長さである。ライトトラック幅ＷＷｎ乃至ＷＷｎ＋４は、例えば、同等である。なお、ライトトラック幅ＷＷｎ乃至ＷＷｎ＋４は、異なっていてもよい。
【００１５】
リードトラックＲＴｎは、ライトトラックＷＴｎ＋１が重ね書きされたライトトラックＷＴｎの一部を除いた残りの領域である。リードトラックＲＴｎ＋１は、ライトトラックＷＴｎ＋２が重ね書きされたライトトラックＷＴｎ＋１の一部を除いた残りの領域である。リードトラックＲＴｎ＋２は、ライトトラックＷＴｎ＋３が重ね書きされたライトトラックＷＴｎ＋２の一部を除いた残りの領域である。リードトラックＲＴｎ＋３は、ライトトラックＷＴｎ＋４が重ね書きされたライトトラックＷＴｎ＋３の一部を除いた残りの領域である。リードトラックＲＴｎ＋４は、ライトトラックＷＴｎ＋４に対応している。リードトラックＲＴｎ＋４は、バンド領域ＴＧｎにおける最終トラックに相当する。
【００１６】
リードトラックＲＴｎのリードトラック幅ＲＷｎは、トラックエッジＥｎＡ及びＥｎ＋１Ａの間の半径方向の長さである。リードトラックＲＴｎ＋１のリードトラック幅ＲＷｎ＋１は、トラックエッジＥｎ＋１Ａ及びＥｎ＋２Ａの間の半径方向の長さである。リードトラックＲＴｎ＋２のリードトラック幅ＲＷｎ＋２は、トラックエッジＥｎ＋２Ａ及びＥｎ＋３Ａの間の半径方向の長さである。リードトラックＲＴｎ＋３のリードトラック幅ＲＷｎ＋３は、トラックエッジＥｎ＋３Ａ及びＥｎ＋４Ａの間の半径方向の長さである。リードトラックＲＴｎ＋４のリードトラック幅ＲＷｎ＋４は、トラックエッジＥｎ＋４Ａ及びＥｎ＋４Ｂの間の半径方向の長さである。つまり、リードトラック幅ＲＷｎ＋４は、ライトトラック幅ＷＷｎ＋４と同等である。
【００１７】
ヘッド１５は、スライダを本体として、当該スライダに実装されているライトヘッド１５Ｗとリードヘッド１５Ｒとを備える。ライトヘッド１５Ｗは、ディスク１０上にデータをライトする。リードヘッド１５Ｒは、ディスク１０に記録されているデータをリードする。なお、ライトヘッド１５Ｗを単にヘッド１５と称する場合もあるし、リードヘッド１５Ｒを単にヘッド１５と称する場合もあるし、ライトヘッド１５Ｗ及びリードヘッド１５Ｒをまとめてヘッド１５と称する場合もある。  
ドライバＩＣ２０は、システムコントローラ１３０（詳細には、後述するＭＰＵ６０）の制御に従って、ＳＰＭ１２およびＶＣＭ１４の駆動を制御する。  
ヘッドアンプＩＣ（プリアンプ）３０は、リードアンプ及びライトドライバを備えている。リードアンプは、ディスク１０からリードされたリード信号を増幅して、システムコントローラ１３０（詳細には、後述するリード／ライト（Ｒ／Ｗ）チャネル４０）に出力する。ライトドライバは、Ｒ／Ｗチャネル４０から出力される信号に応じたライト電流をヘッド１５に出力する。
【００１８】
揮発性メモリ７０は、電力供給が断たれると保存しているデータが失われる半導体メモリである。揮発性メモリ７０は、磁気ディスク装置１の各部での処理に必要なデータ等を格納する。揮発性メモリ７０は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）、又はＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）である。  
バッファメモリ８０は、磁気ディスク装置１とホスト１００との間で送受信されるデータ等を一時的に記録する半導体メモリである。なお、バッファメモリ８０は、揮発性メモリ７０と一体に構成されていてもよい。バッファメモリ８０は、例えば、ＤＲＡＭ、ＳＲＡＭ（Static Random Access Memory）、ＳＤＲＡＭ、ＦｅＲＡＭ（Ferroelectric Random Access memory）、又はＭＲＡＭ（Magnetoresistive Random Access Memory）等である。  
不揮発性メモリ９０は、電力供給が断たれても保存しているデータを記録する半導体メモリである。不揮発性メモリ９０は、例えば、ＮＯＲ型またはＮＡＮＤ型のフラッシュＲＯＭ（Flash Read Only Memory :ＦＲＯＭ）である。
【００１９】
システムコントローラ（コントローラ）１３０は、例えば、複数の素子が単一チップに集積されたSystem-on-a-Chip(ＳｏＣ)と称される大規模集積回路（ＬＳＩ）を用いて実現される。システムコントローラ１３０は、リード／ライト（Ｒ／Ｗ）チャネル４０、ハードディスクコントローラ（ＨＤＣ）５０、及びマイクロプロセッサ（ＭＰＵ）６０等を含む。システムコントローラ１３０は、例えば、ドライバＩＣ２０、ヘッドアンプＩＣ３０、揮発性メモリ７０、バッファメモリ８０、不揮発性メモリ９０、及びホストシステム１００等に電気的に接続されている。  
Ｒ／Ｗチャネル４０は、後述するＭＰＵ６０からの指示に応じて、ディスク１０からホスト１００に転送されるリードデータ及びホスト１００から転送されるライトデータの信号処理を実行する。Ｒ／Ｗチャネル４０は、リードデータの信号品質を測定する回路、又は機能を有している。Ｒ／Ｗチャネル４０は、例えば、ヘッドアンプＩＣ３０、ＨＤＣ５０、及びＭＰＵ６０等に電気的に接続されている。  
ＨＤＣ５０は、後述するＭＰＵ６０からの指示に応じて、ホスト１００とＲ／Ｗチャネル４０との間のデータ転送を制御する。ＨＤＣ５０は、例えば、Ｒ／Ｗチャネル４０、ＭＰＵ６０、揮発性メモリ７０、バッファメモリ８０、及び不揮発性メモリ９０等に電気的に接続されている。
【００２０】
ＭＰＵ６０は、磁気ディスク装置１の各部を制御するメインコントローラである。ＭＰＵ６０は、ドライバＩＣ２０を介してＶＣＭ１４を制御し、ヘッド１５の位置決めを行なうサーボ制御を実行する。ＭＰＵ６０は、ディスク１０へのデータのライト動作を制御すると共に、ライトデータの保存先を選択する。また、ＭＰＵ６０は、ディスク１０からのデータのリード動作を制御すると共に、リードデータの処理を制御する。ＭＰＵ６０は、磁気ディスク装置１の各部に接続されている。ＭＰＵ６０は、例えば、ドライバＩＣ２０、Ｒ／Ｗチャネル４０、及びＨＤＣ５０等に電気的に接続されている。  
ＭＰＵ６０は、リード／ライト制御部６１と、パリティデータ管理部６２と、エラー訂正部６３と、ＤＯＬ（Drift-Off Level）管理部６４とを備えている。ＭＰＵ６０は、これら各部、例えば、リード／ライト制御部６１、パリティデータ管理部６２、エラー訂正部６３、及びＤＯＬ管理部６４等の処理をファームウェア上で実行する。なお、ＭＰＵ６０は、これら各部を回路として備えていてもよい。また、パリティデータ管理部６２及びエラー訂正部６３は、Ｒ／Ｗチャネル４０に備えられていてもよい。
【００２１】
リード／ライト制御部６１は、ホスト１００からのコマンドに従って、データのリード処理及びライト処理を制御する。リード／ライト制御部６１は、ドライバＩＣ２０を介してＶＣＭ１４を制御し、ヘッド１５をディスク１０上の所定の位置に位置決めし、データをリード又はライトする。例えば、リード／ライト制御部６１は、ディスク１０において、所定の円周方向の位置（以下、円周位置と称する）の所定の半径方向の位置（以下、半径位置と称する）にヘッド１５をシークする。リード／ライト制御部６１は、ヘッド１５を目標とする所定の半径位置（以下、目標位置と称する）に位置決めし、所定のセクタにデータをライトする、又は所定のセクタからデータをリードする。リード／ライト制御部６１は、ディスク１０と同心円状に並んでいる複数の円周位置のそれぞれに対応する複数の目標位置にヘッド１５をそれぞれ位置決めして所定のトラックをライトする。以下、所定のトラックの各円周位置における各目標位置で示されるヘッド１５の経路を目標経路と称する。瓦記録を実行する場合、リード／ライト制御部６１は、所定のバンド領域の所定のセクタからシーケンシャルにデータをライトする。所定のバンド領域をリードする場合、リード／ライト制御部６１は、このバンド領域の所定のセクタからシーケンシャルにデータをリードする。以下、”ヘッド１５（ライトヘッド１５Ｗ又はリードヘッド１５Ｒ）の中心部を所定の位置に位置決め、又は配置する”ことを単に”ヘッド１５（ライトヘッド１５Ｗ又はリードヘッド１５Ｒ）を所定の位置に位置決め、又は配置する”と表現する場合もある。なお、リード／ライト制御部６１は、瓦記録方式ではなく、通常の記録方式でデータをライトしてもよい。
【００２２】
リード／ライト制御部６１は、目標位置とヘッド１５の実際の半径位置（以下、実位置と称する）との誤差（以下、オフセット量、又は位置決め誤差と称する）に基づいて、ライト処理を制御する。例えば、リード／ライト制御部６１は、１つ前にライトしたトラック（以下、前のトラックと称する）に対応するオフセット量（以下、前のオフセット量と称する）に基づいて、現在ライトするトラック（以下、現在のトラックと称する）に対応するオフセット量の閾値（以下、ＤＯＬ（Drift-Off Level）と称する）を取得する。現在のトラックに対応するオフセット量（以下、現在のオフセット量と称する）がＤＯＬを超えた場合、リード／ライト制御部６１は、ライト処理を禁止（又は中断）する。このように、前のオフセット量と現在のオフセット量とに基づいてライト処理を制御する機能をＤＤＯＬ（Dynamic Drift-Off Level）機能、又はＤＤＯＬと称する場合もある。
【００２３】
パリティデータ管理部６２は、排他的論理和（Exclusive OR:XOR）演算により取得したＸＯＲ演算値（以下、パリティデータ又は演算値と称する）を管理する。例えば、パリティデータ管理部６２は、ホスト１００から転送されたデータ、又はディスク１０からリードしたデータにＸＯＲ演算を実行し、ＸＯＲ演算の結果としてパリティデータを取得する。パリティデータ管理部６２は、リード／ライト制御部６１を介して、パリティデータをディスク１０の所定のトラックの所定のセクタにライトする。以下、パリティデータをライトするセクタをパリティセクタと称する。一例では、パリティデータ管理部６２は、所定のトラックからリードした、又は所定のトラックにライトする全てセクタのデータにＸＯＲ演算を実行し、全てのセクタのデータに対するＸＯＲ演算の結果として取得したパリティデータをこのトラックのパリティセクタにライトする。パリティデータ管理部６２は、ディスク１０の各トラックに対応する各パリティデータを各トラックに対応する各パリティセクタにライトする。なお、パリティデータ管理部６２は、パリティデータが有効であるか有効でないかをテーブル等で管理していてもよい。また、パリティデータ管理部６２は、所定のトラックの全てのセクタの内の幾つかのセクタ毎のデータにＸＯＲ演算を実行し、幾つかのセクタのデータに対するＸＯＲ演算の結果として取得したパリティデータをメモリ、例えば、瓦記録領域１０ａ、メディアキャッシュ１０ｂ、揮発性メモリ７０、又はバッファメモリ８０に記録してもよい。
【００２４】
エラー訂正部６３は、リードできない、又は所定の回数以上リードしてもリードできないセクタ（以下、リードエラーセクタと称する）にライトされたデータ（以下、リードエラーデータと称する）を検出し、検出したリードエラーデータを訂正する（以下、エラー訂正、又は訂正と称する）。エラー訂正部６３は、例えば、トラック単位でエラー訂正を実行する。所定のトラックでリードエラーセクタを検出した場合、エラー訂正部６３は、このトラックに対応するパリティデータに基づいて、検出したリードエラーセクタにライトされたリードエラーデータを訂正する。一例では、エラー訂正部６３は、所定のトラックに対応するパリティデータに基づいて、このトラックの全てのセクタの内の２つのリードエラーセクタにそれぞれライトされたリードエラーデータを訂正できる。なお、エラー訂正部６３は、所定のトラックに対応するパリティデータに基づいて、１つのリードエラーデータのみを訂正可能であってもよいし、３つ以上のリードエラーデータを訂正可能であってもよい。なお、エラー訂正部６３は、誤り訂正符号に基づいてエラー訂正してもよい。
【００２５】
図３は、本実施形態に係るトラック単位のエラー訂正の方法の一例を示す模式図である。  
図３には、トラックＴｒｋを示している。トラックＴｒｋは、所定のバンド領域の１つのライトトラック又はリードトラックであってもよいし、通常の記録方式でライトされたトラックであってもよい。図３において、トラックＴｒｋは、ディスク１０と同心円状であるが、円状以外の形状であってもよい。トラックＴｒｋは、セクタＳｋ０、Ｓｋ１、Ｓｋ２、Ｓｋ３、Ｓｋ４、Ｓｋ５、Ｓｋ６、Ｓｋ７、Ｓｋ８、Ｓｋ９、Ｓｋ１０、Ｓｋ１１、Ｓｋ１２、Ｓｋ１３、Ｓｋ１４と、パリティセクタＰＳｋとを含む。なお、トラックＴｒｋは、他のセクタをさらに含んでいてもよいし、セクタＳｋ０乃至Ｓｋ１４の内のいくつかのセクタを含んでいなくともよい。図３において、セクタＳｋ１０は、リードエラーセクタである。
【００２６】
リード／ライト制御部６１は、例えば、トラックＴｒｋにおいて最初にセクタＳｋ０にユーザデータをライトする。リード／ライト制御部６１は、セクタＳｋ０からセクタＳｋ１４まで進行方向に沿ってユーザデータをライトする。  
パリティデータ管理部６２は、セクタＳｋ０乃至Ｓｋ１４にそれぞれ対応する複数のユーザデータにＸＯＲ演算を実行し、セクタＳｋ０乃至Ｓｋ１４にそれぞれ対応する複数のユーザデータに対するＸＯＲ演算の結果としてパリティデータを取得する。  
リード／ライト制御部６１は、トラックＴｒｋにおいて最後にユーザデータをライトしたセクタＳｋ１４の進行方向の次に位置する（隣接する）パリティセクタＰＳｋにセクタＳｋ０乃至Ｓｋ１４にそれぞれ対応する複数のデータに対応するパリティデータをライトする。
【００２７】
リード／ライト制御部６１は、セクタＳｋ０からセクタＳｋ１４まで進行方向に沿ってデータをリードする。  
エラー訂正部６３は、リードできないリードエラーセクタＳｋ１０のリードエラーデータを検出し、パリティセクタＰＳｋにライトしたパリティデータに基づいて、リードエラーセクタＳｋ１０にライトされたリードエラーデータを訂正する。
【００２８】
ＤＯＬ管理部６４は、所定のトラックのＤＯＬに対応する複数のオフセット量の値（以下、ＤＯＬ設定値と称する）や現在のトラック（又は隣接トラック）でパリティデータや誤り訂正符号等に基づいてリードエラーデータを訂正できる可能性に対応する指標（以下、エラー訂正指標又は評価値と称する）等を管理する。ここで、エラー訂正指標は、オフセット量がＤＯＬや複数のＤＯＬ設定値の内の１つのＤＯＬ設定値を超過した量（以下、超過量と称する）の総和（以下、単に、総和と称する）や回数（以下、超過回数と称する）等を含む。所定のトラックにデータをライトする場合、ＤＯＬ管理部６４は、前のオフセット量やエラー訂正指標に基づいて、所定のトラックに対応する複数のＤＯＬ設定値を生成する。なお、ＤＯＬ管理部６４は、予め設定された複数のＤＯＬ設定値を前のオフセット量に基づいて調整してもよいし、予め複数のＤＯＬ設定値を有していてもよい。所定のトラックにデータをライトする場合、ＤＯＬ管理部６４は、前のオフセット量やエラー訂正指標に基づいて、複数のＤＯＬ設定値の内の１つのＤＯＬ設定値をＤＯＬとして設定する。所定のトラックにデータをライトしている場合、ＤＯＬ管理部６４は、エラー訂正指標に基づいてＤＯＬを変更する。オフセット量がＤＯＬを超えた場合、ＤＯＬ管理部６４は、リード／ライト制御部６１を介してライト処理を禁止（又は中断）する。
【００２９】
エラー訂正指標、例えば、総和及び超過回数が所定の閾値よりも小さいと判定した場合、ＤＯＬ管理部６４は、パリティデータや誤り訂正符号に基づいてリードエラーデータを訂正できる可能性が大きい、又はリードエラーデータを訂正できると判定し、このトラックに対応する複数のＤＯＬ設定値の内の最も絶対値の大きいＤＯＬ設定値（以下、最大設定値と称する）をＤＯＬに設定する。換言すると、総和が所定の閾値（以下、総和閾値と称する）よりも小さい、且つ超過回数が所定の閾値（以下、超過回数の閾値と称する）よりも小さいと判定した場合、ＤＯＬ管理部６４は、最大設定値をＤＯＬに設定する。
【００３０】
エラー訂正指標、例えば、総和及び超過回数の内の少なくとも一方が所定の閾値よりも大きいと判定した場合、ＤＯＬ管理部６４は、パリティデータや誤り訂正符号に基づいてリードエラーデータを訂正できる可能性が小さい、又はリードエラーデータを訂正できないと判定し、最大設定値から所定のトラックに対応する複数のＤＯＬ設定値の内の最大設定値よりも絶対値の小さい所定のＤＯＬ設定値にＤＯＬを変更する。換言すると、総和が総和閾値よりも大きいと判定した場合、ＤＯＬ管理部６４は、最大設定値から最大設定値よりも小さい所定のＤＯＬ設定値にＤＯＬを変更する。超過回数が超過回数の閾値よりも大きいと判定した場合、ＤＯＬ管理部６４は、最大設定値から最大設定値よりも小さい所定のＤＯＬ設定値にＤＯＬを変更する。総和が総和閾値よりも大きい、且つ超過回数が超過回数の閾値よりも大きいと判定した場合、ＤＯＬ管理部６４は、最大設定値から最大設定値よりも小さい所定のＤＯＬ設定値にＤＯＬを変更する。
【００３１】
一例では、所定のトラックにおいて、所定のオフセット量が複数のＤＯＬ設定値の内の最も絶対値の小さいＤＯＬ設定値（以下、最小設定値と称する）を超過した量の総和（以下、最小超過量の総和と称する場合もある）と所定のオフセット量が最小設定値を超えた超過回数（以下、最小超過回数と称する場合もある）とが所定の閾値より小さい場合、ＤＯＬ管理部６４は、このトラックのＤＯＬを最大設定値に設定する。換言すると、所定のトラックにおいて最小超過量の総和が総和閾値よりも小さい、且つ最小超過回数が超過回数の閾値よりも小さい場合、ＤＯＬ管理部６４は、このトラックのＤＯＬを最大設定値に設定する。また、所定のトラックにおいて最小超過量の総和と最小超過回数との内の少なくとも一方が所定の閾値より大きい場合、ＤＯＬ管理部６４は、このトラックに対応するＤＯＬを最大設定値から最小設定値に変更する。換言すると、所定のトラックにおいて最小超過量の総和が総和閾値よりも大きい場合、ＤＯＬ管理部６４は、このトラックに対応するＤＯＬを最大設定値から最小設定値に変更する。所定のトラックにおいて、最小超過回数が超過回数の閾値よりも大きい場合、ＤＯＬ管理部６４は、このトラックに対応するＤＯＬを最大設定値から最小設定値に変更する。所定のトラックにおいて、最小超過量の総和が総和閾値よりも大きい、且つ最小超過回数が超過回数の閾値よりも大きい場合、ＤＯＬ管理部６４は、このトラックに対応するＤＯＬを最大設定値から最小設定値に変更する。
【００３２】
なお、ＤＯＬ管理部６４は、所定のトラックにおいて、総和及び超過回数の内の少なくとも一方が所定の値を超える毎にＤＯＬを段階的に小さくしてもよい。換言すると、ＤＯＬ管理部６４は、所定のトラックにおいて総和が総和閾値よりも小さい所定の値（以下、総和のＤＯＬ変更値と称する）を超える毎にＤＯＬを段階的に小さくする。総和のＤＯＬ変更値は、例えば、複数の値を含んでいる。総和が総和閾値を超えた場合、ＤＯＬ管理部６４は、最小設定値をＤＯＬに設定する。ＤＯＬ管理部６４は、所定のトラックにおいて、超過回数が超過回数の閾値よりも小さい所定の値（以下、超過回数のＤＯＬ変更値と称する）を超える毎にＤＯＬを段階的に小さくする。超過回数のＤＯＬ変更値は、例えば、複数の値を含んでいる。超過回数が超過回数の閾値を超えた場合、ＤＯＬ管理部６４は、最小設定値をＤＯＬに設定する。ＤＯＬ管理部６４は、所定のトラックにおいて、総和が総和のＤＯＬ変更値を超える、且つ超過回数が超過回数のＤＯＬ変更値を超える毎にＤＯＬを段階的に小さくする。
【００３３】
図４は、ＤＤＯＬの一例を示す模式図である。  
図４に示した例では、バンド領域ＴＧｍは、ライトトラックＷＴｍと、ライトトラックＷＴｍ＋１と、ライトトラックＷＴｍ＋２とを示す。バンド領域ＴＧｍでは、ライトトラックＷＴｍ乃至ＷＴｍ＋２が順方向にこの順番で重ね書きされている。図４には、ライトトラックＷＴｍにおける目標経路ＴＷＴｍ及び各円周位置における各実位置で示されるヘッド１５の経路（以下、実経路と称する）ＳＷＴｍを示している。ライトトラックＷＴｍは、実経路ＳＷＴｍにヘッド１５を位置決めしてライトされている。ライトトラックＷＴｍは、トラックエッジＥｍＡを有している。トラックエッジＥｍＡは、ライトトラックＷＴｍの外方向ＯＤの端部である。図４には、ライトトラックＷＴｍ＋１における目標経路ＴＷＴｍ＋１及び実経路ＳＷＴｍ＋１を示している。ライトトラックＷＴｍ＋１は、実経路ＳＷＴｍ＋１にヘッド１５を位置決めしてライトされている。ライトトラックＷＴｍ＋１は、トラックエッジＥｍ＋１Ａを有している。トラックエッジＥｍ＋１Ａは、ライトトラックＷＴｍ＋１の外方向ＯＤの端部である。リードトラックＲＴｍは、トラックエッジＥｍＡ及びＥｍ＋１Ａの間に配置されている。図４には、ライトトラックＷＴｍ＋２における目標経路ＴＷＴｍ＋２及び実経路ＳＷＴｍ＋２を示している。ライトトラックＷＴｍ＋２は、実経路ＳＷＴｍ＋２にヘッド１５を位置決めしてライトされている。ライトトラックＷＴｍ＋２は、トラックエッジＥｍ＋２Ａを有している。トラックエッジＥｍ＋２Ａは、ライトトラックＷＴｍ＋１の外方向ＯＤの端部である。リードトラックＲＴｍ＋１は、トラックエッジＥｍ＋１Ａ及びＥｍ＋２Ａの間に配置されている。リードトラック幅ＲＷｃは、円周位置Ｐ０におけるリードトラックＲＴｍ＋１の半径方向の長さである。リードトラック幅ＲＷｃは、例えば、リードトラックＲＴｍ＋１をリード可能なリードトラック幅の下限値である。図４において、目標経路ＴＷＴｍ、ＴＷＴｍ＋２、及びＴＷＴｍ＋２は、例えば、ディスク１０と同心円状の経路である。
【００３４】
リード／ライト制御部６１は、目標経路ＴＷＴｍを追従するようにヘッド１５、例えば、ライトヘッド１５Ｗを位置決めしてライトトラックＷＴｍをライトする。実際には、ライトトラックＷＴｍをライトする場合、ライトヘッド１５Ｗは、実経路ＳＷＴｍ上を走行する。そのため、リード／ライト制御部６１は、実経路ＳＷＴｍに基づいてライトトラックＷＴｍをライトする。
【００３５】
リード／ライト制御部６１は、目標経路ＴＷＴｍ＋１を追従するようにライトヘッド１５Ｗを位置決めしてライトトラックＷＴｍ＋１をライトする。実際には、ライトトラックＷＴｍ＋１をライトする場合、ライトヘッド１５Ｗは、実経路ＳＷＴｍ＋１上を走行する。そのため、リード／ライト制御部６１は、実経路ＳＷＴｍ＋１に基づいてライトトラックＷＴｍ＋１をライトする。ライトトラックＷＴｍ＋１をライトした際に、リード／ライト制御部６１は、円周位置Ｐ０で順方向にオフセット量Ｄｍ＋１でずれてライトしている。
【００３６】
リード／ライト制御部６１は、目標経路ＴＷＴｍ＋２を追従するようにヘッド１５、例えば、ライトヘッド１５Ｗを位置決めしてライトトラックＷＴｍ＋２をライトする。実際には、ライトトラックＷＴｍ＋２をライトする場合、ライトヘッド１５Ｗは、実経路ＳＷＴｍ＋２上を走行する。そのため、リード／ライト制御部６１は、実経路ＳＷＴｍ＋２に基づいてライトトラックＷＴｍ＋２をライトする。ライトトラックＷＴｍ＋２をライトした際に、リード／ライト制御部６１は、円周位置Ｐ０で順方向と反対方向（外方向）にオフセット量Ｄｍ＋２でずれてライトしている。ＤＯＬ管理部６４は、例えば、ライトトラックＷＴｍ＋１の円周位置Ｐ０のオフセット量Ｄｍ＋１やエラー訂正指標に基づいてライトトラックＷＴｍ＋２の円周位置Ｐ０におけるＤＯＬを設定している。オフセット量Ｄｍ＋２がライトトラックＷＴｍ＋２の円周位置Ｐ０におけるＤＯＬを超えている場合、ＤＯＬ管理部６４は、ライト処理を中断する。
【００３７】
図５は、本実施形態に係るＤＯＬの管理方法の一例を示すための模式図である。  
図５には、図３に示したトラックＴｒｋの一部を示している。図５には、トラックＴｒｋにおける目標経路ＴＷＴｋ及び実経路ＳＷＴｋを示している。目標経路ＴＷＴｋは、例えば、ディスク１０と同心円状の経路である。図５において、目標経路ＴＷＴｋに対して外方向のオフセット量を正の値とし、目標経路ＴＷＴｋに対して内方向のオフセット量を負の値とする。なお、目標経路ＴＷＴｋに対して外方向のオフセット量を負の値とし、目標経路ＴＷＴｋに対して内方向のオフセット量を正の値としてもよい。
【００３８】
また、図５には、最小設定値ＤＰ１及びＤＭ１と、最大設定値ＤＰ２及びＤＭ２とを示している。最大設定値ＤＰ２及びＤＭ２は、例えば、エラー訂正指標が所定の閾値よりも小さいと判定された場合にＤＯＬとして設定される。最小設定値ＤＰ１及びＤＭ１は、例えば、エラー訂正指標が所定の閾値よりも大きいと判定された場合にＤＯＬとして設定される。最小設定値ＤＰ１及び最大設定値ＤＰ２は、目標経路ＴＷＴｋに対して外方向に位置している。以下、最小設定値ＤＰ１を外側の最小設定値ＤＰ１と称し、最大設定値ＤＰ２を外側の最大設定値ＤＰ２と称する。最小設定値ＤＭ１及び最大設定値ＤＭ２は、目標経路ＴＷＴｋに対して内方向に位置している。以下、最小設定値ＤＭ１を内側の最小設定値ＤＭ１と称し、最大設定値ＤＭ２を内側の最大設定値ＤＭ２と称する。なお、最小設定値ＤＰ１及びＤＭ１と最大設定値ＤＰ２及びＤＭ２との間に、他のＤＯＬ設定値が設定されていてもよい。
【００３９】
図５に示した例では、外側の最小設定値ＤＰ１及び内側の最小設定値ＤＭ１は、同じ形状である。外側の最小設定値ＤＰ１及び内側の最小設定値ＤＭ１は、例えば、半径方向に同じ間隔で離間しながら円周方向に延出している。図５に示した例では、外側の最大設定値ＤＰ２及び内側の最大設定値ＤＭ２は、円周方向において、同じ形状である。外側の最大設定値ＤＰ２及び内側の最大設定値ＤＭ２は、例えば、半径方向に同じ間隔で離間しながら円周方向に延出している。外側の最大設定値ＤＰ２及び外側の最小設定値ＤＰ１は、例えば、半径方向に同じ間隔で離間しながら円周方向に延出している。内側の最大設定値ＤＭ２及び内側の最小設定値ＤＭ１は、例えば、半径方向に同じ間隔で離間しながら円周方向に延出している。なお、外側の最小設定値ＤＰ１及び内側の最小設定値ＤＭ１は、半径方向に異なる間隔で離間しながら円周方向に延出していてもよい。外側の最大設定値ＤＰ２及び内側の最大設定値ＤＭ２は、半径方向に異なる間隔で離間しながら円周方向に延出していてもよい。外側の最大設定値ＤＰ２及び外側の最小設定値ＤＰ１は、半径方向に異なる間隔で離間しながら円周方向に延出していてもよい。内側の最大設定値ＤＭ２及び内側の最小設定値ＤＭ１は、半径方向に異なる間隔で離間しながら円周方向に延出していてもよい。
【００４０】
図５には、セクタＳｋ０乃至Ｓｋ７（にライトされたデータ）を示している。セクタＳｋ０乃至Ｓｋ７（にライトされたデータ）の中心部は、実経路ＳＷＴｋ上に位置している。セクタＳｋ１は、外側の最小設定値ＤＰ１から外方向に超過量ＥＡｋ１でずれている。セクタＳｋ４は、内側の最小設定値ＤＭ１から内方向に超過量ＥＡｋ４でずれている。
【００４１】
リード／ライト制御部６１は、目標経路ＴＷＴｋを追従するようにヘッド１５、例えば、ライトヘッド１５Ｗを位置決めしてトラックＴｒｋをライトする。実際には、トラックＴｒｋをライトする場合、ライトヘッド１５Ｗは、実経路ＳＷＴｋ上を走行する。そのため、リード／ライト制御部６１は、実経路ＳＷＴｋに基づいてトラックＴｒｋをライトする。
【００４２】
トラックＴｒｋのライト処理が開始した場合、ＤＯＬ管理部６４は、前のトラックに対応する総和及び超過回数を初期化、例えば、０にする。また、ＤＯＬ管理部６４は、トラックＴｒｋの前のトラックに対応する総和閾値、超過回数の閾値、及びＤＯＬ等をトラックＴｒｋに対応する総和閾値、超過回数の閾値、及びＤＯＬ等に変更する。例えば、ＤＯＬ管理部６４は、トラックＴｒｋの前のトラックのオフセット量やエラー訂正指標に基づいて、最大設定値ＤＰ２及びＤＭ２をＤＯＬに設定する。ＤＯＬ管理部６４は、セクタＳｋ１にデータをライトした際に、外側の最小設定値ＤＰ１よりも外方向にヘッド１５がずれたことを検出する。換言すると、ＤＯＬ管理部６４は、セクタＳｋ１にデータをライトした際に、オフセット量が外側の最小設定値ＤＰ１を超過したことを検出する。セクタＳｋ１においてオフセット量が外側の最小設定値ＤＰ１を超過したことを検出した場合、ＤＯＬ管理部６４は、セクタＳｋ１における超過量ＥＡｋ１を取得し、総和（０）に超過量ＥＡｋ１を加算する。また、オフセット量が外側の最小設定値ＤＰ１を超過したことを検出した場合、ＤＯＬ管理部６４は、超過回数をインクリメント、例えば、１増加させる。ＤＯＬ管理部６４は、総和（最小超過量の総和）が総和閾値を超えているか超えていないかを判定する。また、ＤＯＬ管理部６４は、超過回数（最小超過回数）が超過量の閾値を超えているか超えていないかを判定する。ＤＯＬ管理部６４は、総和が総和閾値を超えていない、且つ超過回数が超過回数の閾値を超えていないと判定した場合には、ＤＯＬを変更しない。
【００４３】
ＤＯＬ管理部６４は、セクタＳｋ４にデータをライトした際に、内側の最小設定値ＤＭ１よりも内方向にヘッド１５がずれたことを検出する。換言すると、ＤＯＬ管理部６４は、セクタＳｋ４にデータをライトした際に、オフセット量が内側の最小設定値ＤＭ１を超過したことを検出する。セクタＳｋ４においてオフセット量が内側の最小設定値ＤＭ１を超過したことを検出した場合、ＤＯＬ管理部６４は、セクタＳｋ４における超過量ＥＡｋ４を取得し、総和（ＥＡｋ１）に超過量ＥＡｋ４を加算する。また、オフセット量が内側の最小設定値ＤＭ１を超過したことを検出した場合、ＤＯＬ管理部６４は、超過回数をインクリメント、例えば、１増加させる。ＤＯＬ管理部６４は、総和（ＥＡｋ１＋ＥＡｋ４）が総和閾値を超えているか超えていないかを判定する。また、ＤＯＬ管理部６４は、超過回数が超過回数の閾値を超えているか超えていないかを判定する。総和及び超過回数の内の少なくとも一方が閾値（総和閾値及び超過回数の閾値）を超えていると判定した場合、ＤＯＬ管理部６４は、最大設定値ＤＰ２及びＤＭ２から最小設定値ＤＰ１及びＤＭ１にＤＯＬを変更する。つまり、総和が総和閾値を超えていると判定した場合、ＤＯＬ管理部６４は、最大設定値ＤＰ２及びＤＭ２から最小設定値ＤＰ１及びＤＭ１にＤＯＬを変更する。超過回数が超過回数の閾値を超えていると判定した場合、ＤＯＬ管理部６４は、最大設定値ＤＰ２及びＤＭ２から最小設定値ＤＰ１及びＤＭ１にＤＯＬを変更する。総和が総和閾値を超えている、且つ超過回数が超過回数の閾値を超えていると判定した場合、ＤＯＬ管理部６４は、最大設定値ＤＰ２及びＤＭ２から最小設定値ＤＰ１及びＤＭ１にＤＯＬを変更する。
【００４４】
図６は、本実施形態に係るライト処理の制御系の一例を示すブロック図である。  
磁気ディスク装置１は、ライト処理時のヘッド１５の制御系（以下、ライト制御系と称する）ＷＳＹを有している。ライト制御系ＷＳＹは、ＶＣＭ１４と、ヘッド１５と、ドライバＩＣ２０、ヘッドアンプＩＣ３０と、Ｒ／Ｗチャネル４０と、ＨＤＣ５０と、ＭＰＵ６０と、揮発性メモリ７０とを含む。なお、ライト制御系ＷＳＹは、バッファ８０又は不揮発性メモリ９０を含んでいてもよい。Ｒ／Ｗチャネル４０は、復調回路４１を有している。なお、Ｒ／Ｗチャネル４０は、変調回路を有していてもよい。揮発性メモリ７０は、展開領域ＤＡを有している。なお、ライト制御系ＷＳＹがバッファ８０又は不揮発性メモリ９０を含む場合、バッファ８０又は不揮発性メモリ９０は、展開領域ＤＡを有していてもよい。ライト制御系ＷＳＹは、例えば、ＭＰＵ６０によって制御されている。図６において、ライト制御系の処理を図５に図示した例を用いて説明する。
【００４５】
図６に示した例では、現在のトラック、例えば、トラックＴｒｋをライトする場合、ライト制御系ＷＳＹは、揮発性メモリ７０の展開領域ＤＡにトラックＴｒｋに対応するトラック番号、総和、超過回数、ＤＯＬ設定値や、ＤＯＬ等の情報（以下、ライト制御情報と称する）を記録する。セクタＳｋ４にデータをライトする場合、ライト制御系ＷＳＹは、半径位置に関連する情報（以下、半径位置情報と称する）、例えば、サーボ信号をヘッド１５からヘッドアンプＩＣ３０に入力する。ライト制御系ＷＳＹは、半径位置情報をヘッドアンプＩＣ３０からＲ／Ｗチャネル４０の復調回路４１に入力する。ライト制御系ＷＳＹは、復調回路４１において、半径位置情報に基づいてオフセット量を算出する。
【００４６】
ライト制御系ＷＳＹは、ＨＤＣ５０又はＭＰＵ６０において、オフセット量が所定のＤＯＬ設定値、例えば、最小設定値ＤＰ１及びＤＭ１を超えているか超えていないかを判定する。最小設定値ＤＰ１及びＤＭ１を超えていると判定した場合、ライト制御系ＷＳＹは、ＨＤＣ５０又はＭＰＵ６０において、最小設定値ＤＰ１及びＤＭ１及びオフセット量に基づいて超過量ＥＡｋ４を算出し、算出した超過量ＥＡｋ４を総和ＥＡｋ１に加算する。ライト制御系ＷＳＹは、算出した総和（ＥＡｋ１＋ＥＡｋ４）を展開領域ＤＡに記録する。ライト制御系ＷＳＹは、ＨＤＣ５０又はＭＰＵ６０において、超過回数１をインクリメントして２にする。ライト制御系ＷＳＹは、算出した超過回数２を展開領域ＤＡに記録する。ライト制御系ＷＳＹは、総和（ＥＡｋ１＋ＥＡｋ４）が総和閾値を超えているか超えていないかを判定し、超過回数２が超過回数の閾値を超えているか超えていないかを判定する。総和（ＥＡｋ１＋ＥＡｋ４）及び超過回数２の内の少なくとも一方が閾値（総和閾値及び超過回数の閾値）を超えていると判定した場合、ライト制御系ＷＳＹは、ＤＯＬを最大設定値ＤＰ２及びＤＭ２から最小設定値ＤＰ１及びＤＭ１に変更し、変更したＤＯＬ（ＤＰ１及びＤＭ１）を展開領域ＤＡに記録する。
【００４７】
また、セクタＳｋ４にデータをライトした後に、ライト制御系ＷＳＹは、オフセット量がＤＯＬ（ＤＰ１及びＤＭ１）を超えているか超えていないかを判定する。オフセット量がＤＯＬ（ＤＰ１及びＤＭ１）を超えていると判定した場合、ライト制御系ＷＳＹは、ヘッドアンプＩＣ３０、Ｒ／Ｗチャネル４０、ＨＤＣ５０、及びＭＰＵ６０を介してライト処理を中断する。また、オフセット量がＤＯＬを超えていると判定した場合、ライト制御系ＷＳＹは、ＶＣＭ１４、ドライバＩＣ２０、及びＭＰＵ６０を介して、ライト処理を中断し、例えば、ＤＯＬを超えない半径位置にヘッド１５を移動する。ライト処理を中断した後にＤＯＬを超えない半径位置にヘッド１５を移動した場合、ライト制御系ＷＳＹは、ライト処理を再開する。
【００４８】
トラックＴｒｋのライト処理が完了した後にトラックＴｒｋの順方向に隣接する次のトラックをライトする場合、ライト制御系ＷＳＹは、展開領域ＤＡに記録しているトラックＴｒｋに対応するライト制御情報を次のトラックに対応するライト制御情報に変更する。例えば、ライト制御系ＷＳＹは、トラックＴｒｋに対応するトラック番号Ｔｒｋから次のトラックに対応するトラック番号に変更し、総和及び超過回数を０にし、トラックＴｒｋに対応する複数のＤＯＬ設定値及びＤＯＬを次のトラックに対応する複数のＤＯＬ設定値及びＤＯＬに変更する。
【００４９】
図７は、本実施形態に係るライト処理方法の一例を示すフローチャートである。  
所定のトラックのライト処理を開始した場合、ＭＰＵ６０は、前のトラックに対応する総和及び超過回数を初期化する（Ｂ７０１）。例えば、ＭＰＵ６０は、前のトラックに対応する総和及び超過回数を０にする。ＭＰＵ６０は、ＤＯＬを設定する（Ｂ７０２）。例えば、ＭＰＵ６０は、前のオフセット量及びエラー訂正指標に基づいて、所定のトラックに対応する複数のＤＯＬ設定値を生成し、複数のＤＯＬ設定値の内の最大設定値をＤＯＬに設定する。ＭＰＵ６０は、所定のトラックの所定のセクタにデータをライトし（Ｂ７０３）、オフセット量が所定のＤＯＬ設定値を超えているか超えていないかを判定する（Ｂ７０４）。例えば、ＭＰＵ６０は、オフセット量が最小設定値を超えているか超えていないかを判定する。所定のＤＯＬ設定値を超えていないと判定した場合（Ｂ７０４のＮＯ）、ＭＰＵ６０は、Ｂ７０８の処理へ進む。所定のＤＯＬ設定値を超えていると判定した場合（Ｂ７０４のＹＥＳ）、ＭＰＵ６０は、超過量を算出する（Ｂ７０５）。ＭＰＵ６０は、超過量に基づいて総和を算出し、超過回数をインクリメントする（Ｂ７０６）。ＭＰＵ６０は、総和及び超過回数の少なくとも一方が閾値（総和閾値及び超過回数の閾値）を超えているか超えていないかを判定する（Ｂ７０７）。総和及び超過回数の少なくとも一方が閾値を超えていないと判定した場合（Ｂ７０７のＮＯ）、ＭＰＵ６０は、Ｂ７０９の処理へ進む。総和及び超過回数の少なくとも一方が閾値を超えていると判定した場合（Ｂ７０７のＹＥＳ）、ＭＰＵ６０は、ＤＯＬを変更する（Ｂ７０８）。例えば、ＭＰＵ６０は、最大設定値から最小設定値にＤＯＬを変更する。ＭＰＵ６０は、所定のトラックの最後のセクタであるか最後のセクタでないかを判定する（Ｂ７０９）。最後のセクタでないと判定した場合（Ｂ７０９のＮＯ）、ＭＰＵ６０は、Ｂ７０２の処理に進む。最後のセクタであると判定した場合（Ｂ７０９のＹＥＳ）、ＭＰＵ６０は、処理を終了する。
【００５０】
本実施形態によれば、磁気ディスク装置１は、前のオフセット量及びエラー訂正指標に基づいて、現在のトラックに対応する複数のＤＯＬ設定値の内の１つのＤＯＬ設定値、例えば、最大設定値をＤＯＬに設定する。総和及び超過回数の内の少なくとも一方が閾値（総和閾値及び超過回数の閾値）を超えたためにパリティデータや誤り訂正符号に基づいてリードエラーデータを訂正できる可能性が小さい、又はリードエラーデータを訂正できないと判定した場合、磁気ディスク装置１は、ＤＯＬを最大設定値から最大設定値よりも小さいＤＯＬ設定値、例えば、最小設定値に変更する。つまり、磁気ディスク装置１は、ＤＤＯＬにより所定のトラックにデータをライトしている途中でＤＯＬを変更することができる。そのため、磁気ディスク装置１は、ライト処理の性能を向上することができる。また、磁気ディスク装置１は、リード処理の性能を向上することができる。
【００５１】
次に、変形例に係る磁気ディスク装置について説明する。変形例において、前述の実施形態と同一の部分には同一の参照符号を付してその詳細な説明を省略する。  
（変形例１）  
変形例１の磁気ディスク装置１は、ＤＯＬの管理方法が第１実施形態の磁気ディスク装置１と異なる。  
図８は、変形例１に係るＤＯＬの管理方法の一例を示すための模式図である。  
図８には、ＤＯＬ設定値ＤＰ３及びＤＭ３を示している。ＤＯＬ設定値ＤＰ３及びＤＭ３は、例えば、オフセット量が最大設定値ＤＰ２を超えた場合、又は総和及び超過回数の内の少なくとも一方が所定の値（総和のＤＯＬ変更値及び超過回数のＤＯＬ変更値）を超えた場合にＤＯＬとして設定される。ＤＯＬ設定値ＤＰ３は、目標経路ＴＷＴｋに対して外方向に位置している。以下、ＤＯＰ設定値ＤＰ３を外側のＤＯＬ設定値ＤＰ３と称する。ＤＯＬ設定値ＤＭ３は、目標経路ＴＷＴｋに対して内方向に位置している。以下、ＤＯＬ設定値ＤＭ３を内側のＤＯＬ設定値ＤＭ３と称する。なお、外側の最小設定値ＤＰ１及び外側のＤＯＬ設定値ＤＰ３の間に、他のＤＯＬ設定値が設定されていてもよいし、外側の最大設定値ＤＰ２及び外側のＤＯＬ設定値ＤＰ３の間に、他のＤＯＬ設定値が設定されていてもよい。また、内側の最小設定値ＤＭ１及び内側のＤＯＬ設定値ＤＭ３の間に、他のＤＯＬ設定値が設定されていてもよいし、内側の最大設定値ＤＭ２及び内側のＤＯＬ設定値ＤＭ３の間に、他のＤＯＬ設定値が設定されていてもよい。
【００５２】
外側のＤＯＬ設定値ＤＰ３及び内側のＤＯＬ設定値ＤＭ３は、同じ形状である。外側のＤＯＬ設定値ＤＰ３及び内側のＤＯＬ設定値ＤＭ３は、例えば、半径方向に同じ間隔で離間しながら円周方向に延出している。外側の最小設定値ＤＰ１及び外側のＤＯＬ設定値ＤＰ３は、例えば、半径方向に同じ間隔で離間しながら円周方向に延出している。外側の最大設定値ＤＰ２及び外側のＤＯＬ設定値ＤＰ３は、例えば、半径方向に同じ間隔で離間しながら円周方向に延出している。内側の最小設定値ＤＭ１及び内側のＤＯＬ設定値ＤＭ３は、例えば、半径方向に同じ間隔で離間しながら円周方向に延出している。内側の最大設定値ＤＭ２及び内側のＤＯＬ設定値ＤＭ３は、例えば、半径方向に同じ間隔で離間しながら円周方向に延出している。なお、外側のＤＯＬ設定値ＤＰ３及び内側のＤＯＬ設定値ＤＭ３は、例えば、半径方向に異なる間隔で離間しながら円周方向に延出している。外側の最小設定値ＤＰ１及び外側のＤＯＬ設定値ＤＰ３は、例えば、半径方向に異なる間隔で離間しながら円周方向に延出している。外側の最大設定値ＤＰ２及び外側のＤＯＬ設定値ＤＰ３は、例えば、半径方向に異なる間隔で離間しながら円周方向に延出している。内側の最小設定値ＤＭ１及び内側のＤＯＬ設定値ＤＭ３は、例えば、半径方向に異なる間隔で離間しながら円周方向に延出している。内側の最大設定値ＤＭ２及び内側のＤＯＬ設定値ＤＭ３は、例えば、半径方向に異なる間隔で離間しながら円周方向に延出している。
【００５３】
トラックＴｒｋのライト処理が開始した場合、ＤＯＬ管理部６４は、前のトラックに対応する総和及び超過回数を初期化、例えば、０にする。また、ＤＯＬ管理部６４は、トラックＴｒｋの前のトラックに対応する総和閾値、超過回数の閾値、及びＤＯＬ等をトラックＴｒｋに対応する総和閾値、超過回数の閾値、及びＤＯＬ等に変更する。例えば、ＤＯＬ管理部６４は、トラックＴｒｋの前のトラックのオフセット量やエラー訂正指標に基づいて、最大設定値ＤＰ２及びＤＭ２をＤＯＬに設定する。ＤＯＬ管理部６４は、セクタＳｋ１にデータをライトした際に、外側の最小設定値ＤＰ１よりも外方向にヘッド１５が超過したことを検出する。換言すると、ＤＯＬ管理部６４は、セクタＳｋ１にデータをライトした際に、オフセット量が外側の最小設定値ＤＰ１を超過したことを検出する。セクタＳｋ１においてオフセット量が外側の最小設定値ＤＰ１を超過したことを検出した場合、ＤＯＬ管理部６４は、セクタＳｋ１における超過量ＥＡｋ１を取得し、総和（０）に超過量ＥＡｋ１を加算する。また、オフセット量が外側の最小設定値ＤＰ１を超過したことを検出した場合、ＤＯＬ管理部６４は、超過回数をインクリメントする。ＤＯＬ管理部６４は、総和（最小超過量の総和）が総和閾値を超えているか超えていないかを判定する。また、ＤＯＬ管理部６４は、超過回数（最小超過回数）が超過量の閾値を超えているか超えていないかを判定する。ＤＯＬ管理部６４は、総和が総和のＤＯＬ変更値を超えているか超えていないかを判定する。また、ＤＯＬ管理部６４は、超過回数が超過回数のＤＯＬ変更値を超えているか超えていないかを判定する。総和及び超過回数の内の少なくとも一方が所定の値（総和のＤＯＬ変更値及び超過回数のＤＯＬ変更値）を超えていると判定した場合、ＤＯＬ管理部６４は、最大設定値ＤＰ２及びＤＭ２からＤＯＬ設定値ＤＰ３及びＤＭ３にＤＯＬを変更する。つまり、総和が総和のＤＯＬ変更値を超えていると判定した場合、ＤＯＬ管理部６４は、最大設定値ＤＰ２及びＤＭ２からＤＯＬ設定値ＤＰ３及びＤＭ３にＤＯＬを変更する。超過回数が超過回数のＤＯＬ変更値を超えていると判定した場合、ＤＯＬ管理部６４は、最大設定値ＤＰ２及びＤＭ２からＤＯＬ設定値ＤＰ３及びＤＭ３にＤＯＬを変更する。総和が総和のＤＯＬ変更値を超えている、且つ超過回数が超過回数のＤＯＬ変更値を超えていると判定した場合、ＤＯＬ管理部６４は、最大設定値ＤＰ２及びＤＭ２からＤＯＬ設定値ＤＰ３及びＤＭ３を変更する。
【００５４】
ＤＯＬ管理部６４は、セクタＳｋ４にデータをライトした際に、内側の最小設定値ＤＭ１よりも内方向にヘッド１５がずれたことを検出する。換言すると、ＤＯＬ管理部６４は、セクタＳｋ４にデータをライトした際に、オフセット量が内側の最小設定値ＤＭ１を超過したことを検出する。セクタＳｋ４においてオフセット量が内側の最小設定値ＤＭ１を超過したことを検出した場合、ＤＯＬ管理部６４は、セクタＳｋ４における超過量ＥＡｋ４を取得し、総和（ＥＡｋ１）に超過量ＥＡｋ４を加算する。また、オフセット量が内側の最小設定値ＤＭ１を超過したことを検出した場合、ＤＯＬ管理部６４は、超過回数をインクリメントする。ＤＯＬ管理部６４は、総和（ＥＡｋ１＋ＥＡｋ４）が総和閾値を超えているか超えていないかを判定する。また、ＤＯＬ管理部６４は、超過回数が超過回数の閾値を超えているか超えていないかを判定する。総和及び超過回数の内の少なくとも一方が閾値（総和閾値及び超過回数の閾値）を超えていると判定した場合、ＤＯＬ管理部６４は、ＤＯＬ設定値ＤＰ３及びＤＭ３から最小設定値ＤＰ１及びＤＭ１にＤＯＬを変更する。
【００５５】
図９は、変形例１に係るライト処理方法の一例を示すフローチャートである。  
所定のトラックのライト処理を開始した場合、ＭＰＵ６０は、前のトラックに対応する総和及び超過回数を初期化し（Ｂ７０１）、ＤＯＬを設定し（Ｂ７０２）、所定のトラックの所定のセクタにデータをライトし（Ｂ７０３）、オフセット量が所定のＤＯＬ設定値を超えているか超えていないかを判定する（Ｂ７０４）。所定のＤＯＬ設定値を超えていると判定した場合（Ｂ７０４のＹＥＳ）、ＭＰＵ６０は、超過量を算出し（Ｂ７０５）、超過量に基づいて総和を算出し、超過回数をインクリメントする（Ｂ７０６）。ＭＰＵ６０は、総和及び超過回数の少なくとも一方が閾値（総和閾値及び超過回数の閾値）を超えているか超えていないかを判定する（Ｂ７０７）。総和及び超過回数の少なくとも一方が閾値を超えていないと判定した場合（Ｂ７０７のＮＯ）、ＭＰＵ６０は、総和及び超過回数の少なくとも一方が所定の値（総和のＤＯＬ変更値及び超過回数のＤＯＬ変更値）を超えているか超えていないかを判定する（Ｂ９０１）。総和及び超過回数の少なくとも一方が所定の値を超えていないと判定した場合（Ｂ９０１のＮＯ）、ＭＰＵ６０は、Ｂ７０９の処理へ進む。総和及び超過回数の少なくとも一方が所定の値を超えていないと判定した場合（Ｂ９０１のＹＥＳ）、ＭＰＵ６０は、ＤＯＬを変更し（Ｂ９０２）、Ｂ７０９の処理へ進む。例えば、ＭＰＵ６０は、最大設定値から最大設定値よりも小さく、且つ最小設定値よりも大きいＤＯＬ設定値にＤＯＬを変更する。  
変形例１によれば、磁気ディスク装置１は、総和及び超過回数の内の少なくとも一方が所定の値（総和のＤＯＬ変更値及び超過回数のＤＯＬ変更値）を超える毎に、ＤＯＬを段階的に小さくする。そのため、磁気ディスク装置１は、ライト処理及びリード処理の性能を向上することができる。
【００５６】
（変形例２）  
変形例２の磁気ディスク装置１は、ＤＯＬの管理方法が前述した実施形態及び変形例の磁気ディスク装置１と異なる。  
ＭＰＵ６０は、例えば、所定のトラックにおいて、目標経路に対して外方向の複数のＤＯＬ設定値（以下、外側のＤＯＬ設定値と称する）と目標経路に対して内方向の複数のＤＯＬ設定値（以下、内側のＤＯＬ設定値と称する）とを別々に管理している。また、ＭＰＵ６０は、現在のトラック（又は現在のトラックの外側の隣接トラック）でパリティデータや誤り訂正符号に基づいてリードエラーデータを訂正できる可能性を示す指標（以下、外側のエラー訂正指標と称する）と現在のトラック（又は現在のトラックの内側の隣接トラック）でパリティデータや誤り訂正符号に基づいてリードエラーデータを訂正できる可能性を示す指標（以下、内側のエラー訂正指標と称する）とを別々に管理している。ここで、外側のエラー訂正指標は、オフセット量が外側のＤＯＬや複数の外側のＤＯＬ設定値の内の１つの外側のＤＯＬ設定値を超過した量（以下、外側の超過量と称する）の総和（以下、単に、外側の総和と称する）や回数（以下、外側の超過回数と称する）等を含む。内側のエラー訂正指標は、オフセット量が内側のＤＯＬや複数の内側のＤＯＬ設定値の内の１つの内側のＤＯＬ設定値を超過した量（以下、内側の超過量と称する）の総和（以下、単に、内側の総和と称する）や回数（以下、内側の超過回数と称する）等を含む。
【００５７】
所定のトラックにデータをライトする場合、ＭＰＵ６０は、前のオフセット量や外側のエラー訂正指標に基づいて、所定のトラックに対応する複数の外側のＤＯＬ設定値を生成する。所定のトラックにデータをライトする場合、ＭＰＵ６０は、前のオフセット量や外側のエラー訂正指標に基づいて、所定のトラックに対応する複数の外側のＤＯＬ設定値の内の１つの外側のＤＯＬ設定値を目標経路に対して外方向のＤＯＬ（以下、外側のＤＯＬと称する）として設定する。所定のトラックにデータをライトしている場合、ＤＯＬ管理部６４は、外側のエラー訂正指標に基づいて外側のＤＯＬを変更する。オフセット量が外側のＤＯＬを超えた場合、ＭＰＵ６０は、リード／ライト制御部６１を介してライト処理を中断する。
【００５８】
外側のエラー訂正指標、例えば、外側の総和及び外側の超過回数が所定の閾値よりも小さいと判定した場合、ＭＰＵ６０は、このトラックに対応する複数の外側のＤＯＬ設定値の内の最も絶対値の大きい外側のＤＯＬ設定値（以下、外側の最大設定値と称する）を外側のＤＯＬに設定する。換言すると、外側の総和が所定の閾値（以下、外側の総和閾値と称する）よりも小さい、且つ外側の超過回数が所定の閾値（以下、外側の超過回数の閾値と称する）よりも小さいと判定した場合、ＭＰＵ６０は、外側の最大設定値を外側のＤＯＬに設定する。
【００５９】
外側のエラー訂正指標、例えば、外側の総和及び外側の超過回数の内の少なくとも一方が所定の閾値よりも大きいと判定した場合、ＭＰＵ６０は、外側の最大設定値から所定のトラックに対応する複数の外側のＤＯＬ設定値の内の外側の最大設定値よりも絶対値の小さい所定の外側のＤＯＬ設定値に外側のＤＯＬを変更する。換言すると、外側の総和が外側の総和閾値よりも大きいと判定した場合、ＭＰＵ６０は、外側の最大設定値から外側の最大設定値よりも小さい所定の外側のＤＯＬ設定値に外側のＤＯＬを変更する。外側の超過回数が外側の超過回数の閾値よりも大きいと判定した場合、ＭＰＵ６０は、外側の最大設定値から外側の最大設定値よりも小さい所定の外側のＤＯＬ設定値に外側のＤＯＬを変更する。外側の総和が外側の総和閾値よりも大きい、且つ外側の超過回数が外側の超過回数の閾値よりも大きいと判定した場合、ＭＰＵ６０は、外側の最大設定値から外側の最大設定値よりも小さい所定の外側のＤＯＬ設定値に外側のＤＯＬを変更する。
【００６０】
一例では、所定のトラックにおいて、所定のオフセット量が複数の外側のＤＯＬ設定値の内の最も絶対値の小さい外側のＤＯＬ設定値（以下、外側の最小設定値と称する）を超過した量の外側の総和（以下、外側の最小超過量の総和と称する場合もある）と所定のオフセット量が外側の最小設定値を超えた外側の超過回数（以下、外側の最小超過回数と称する場合もある）とが所定の閾値より小さい場合、ＭＰＵ６０は、このトラックのＤＯＬを外側の最大設定値に設定する。換言すると、所定のトラックにおいて外側の最小超過量の総和が外側の総和閾値よりも小さい、且つ外側の最小超過回数が外側の超過回数の閾値よりも小さい場合、ＭＰＵ６０は、このトラックの外側のＤＯＬを外側の最大設定値に設定する。また、所定のトラックにおいて外側の最小超過量の総和と外側の最小超過回数との内の少なくとも一方が所定の閾値より大きい場合、ＭＰＵ６０は、このトラックに対応するＤＯＬを最大設定値から最小設定値に変更する。換言すると、所定のトラックにおいて外側の最小超過量の総和が外側の総和閾値よりも大きい場合、ＭＰＵ６０は、このトラックに対応するＤＯＬを外側の最大設定値から外側の最小設定値に変更する。所定のトラックにおいて、外側の最小超過回数が外側の超過回数の閾値よりも大きい場合、ＭＰＵ６０は、このトラックに対応するＤＯＬを外側の最大設定値から外側の最小設定値に変更する。所定のトラックにおいて、外側の最小超過量の総和が外側の総和閾値よりも大きい、且つ外側の最小超過回数が外側の超過回数の閾値よりも大きい場合、ＭＰＵ６０は、このトラックに対応するＤＯＬを外側の最大設定値から外側の最小設定値に変更する。
【００６１】
なお、ＭＰＵ６０は、所定のトラックにおいて、外側の総和及び外側の超過回数の内の少なくとも一方が所定の値を超える毎に外側のＤＯＬを段階的に小さくしてもよい。換言すると、ＭＰＵ６０は、所定のトラックにおいて外側の総和が外側の総和閾値よりも小さい所定の値（以下、外側の総和のＤＯＬ変更値と称する）を超える毎に外側のＤＯＬを段階的に小さくする。外側の総和のＤＯＬ変更値は、例えば、複数の値を含んでいる。外側の総和が外側の総和閾値を超えた場合、ＭＰＵ６０は、外側の最小設定値を外側のＤＯＬに設定する。ＭＰＵ６０は、所定のトラックにおいて、外側の超過回数が外側の超過回数の閾値よりも小さい所定の値（以下、外側の超過回数のＤＯＬ変更値と称する）を超える毎に外側のＤＯＬを段階的に小さくする。外側の超過回数のＤＯＬ変更値は、例えば、複数の値を含んでいる。外側の超過回数が外側の超過回数の閾値を超えた場合、ＭＰＵ６０は、外側の最小設定値を外側のＤＯＬに設定する。ＭＰＵ６０は、所定のトラックにおいて、外側の総和が外側の総和のＤＯＬ変更値を超える、且つ外側の超過回数が外側の超過回数の外側のＤＯＬ変更値を超える毎に外側のＤＯＬを段階的に小さくする。
【００６２】
所定のトラックにデータをライトする場合、ＭＰＵ６０は、前のオフセット量や内側のエラー訂正指標に基づいて、所定のトラックに対応する複数の内側のＤＯＬ設定値を生成する。所定のトラックにデータをライトする場合、ＭＰＵ６０は、前のオフセット量や内側のエラー訂正指標に基づいて、所定のトラックに対応する複数の内側のＤＯＬ設定値の内の１つの内側のＤＯＬ設定値を目標経路に対して内方向のＤＯＬ（以下、内側のＤＯＬと称する）として設定する。所定のトラックにデータをライトしている場合、ＭＰＵ６０は、内側のエラー訂正指標に応じて内側のＤＯＬを変更する。オフセット量が内側のＤＯＬを超えた場合、ＭＰＵ６０は、リード／ライト制御部６１を介してライト処理を中断する。
【００６３】
所定のトラックにデータをライトする場合、ＭＰＵ６０は、前のオフセット量や内側のエラー訂正指標に基づいて、現在のトラックに対応する複数の内側のＤＯＬ設定値の内の１つの内側のＤＯＬ設定値を内側のＤＯＬに設定する。内側のエラー訂正指標、例えば、内側の総和及び内側の超過回数が所定の閾値よりも小さいと判定した場合、ＭＰＵ６０は、このトラックに対応する複数の内側のＤＯＬ設定値の内の最も絶対値の大きい内側のＤＯＬ設定値（以下、内側の最大設定値と称する）を内側のＤＯＬに設定する。換言すると、内側の総和が所定の閾値（以下、内側の総和閾値と称する）よりも小さい、且つ内側の超過回数が所定の閾値（以下、内側の超過回数の閾値と称する）よりも小さいと判定した場合、ＭＰＵ６０は、内側の最大設定値を内側のＤＯＬに設定する。
【００６４】
内側のエラー訂正指標、例えば、内側の総和及び内側の超過回数の内の少なくとも一方が所定の閾値よりも大きいと判定した場合、ＭＰＵ６０は、内側の最大設定値から所定のトラックに対応する複数の内側のＤＯＬ設定値の内の内側の最大設定値よりも絶対値の小さい所定の内側のＤＯＬ設定値に内側のＤＯＬを変更する。換言すると、内側の総和が内側の総和閾値よりも大きいと判定した場合、ＭＰＵ６０は、内側の最大設定値から内側の最大設定値よりも小さい所定の内側のＤＯＬ設定値に内側のＤＯＬを変更する。内側の超過回数が内側の超過回数の閾値よりも大きいと判定した場合、ＭＰＵ６０は、内側の最大設定値から内側の最大設定値よりも小さい所定の内側のＤＯＬ設定値に内側のＤＯＬを変更する。内側の総和が内側の総和閾値よりも大きい、且つ内側の超過回数が内側の超過回数の閾値よりも大きいと判定した場合、ＭＰＵ６０は、内側の最大設定値から内側の最大設定値よりも小さい所定の内側のＤＯＬ設定値に内側のＤＯＬを変更する。
【００６５】
一例では、所定のトラックにおいて、所定のオフセット量が複数の内側のＤＯＬ設定値の内の最も絶対値の小さい内側のＤＯＬ設定値（以下、内側の最小設定値と称する）を超過した量の内側の総和（以下、内側の最小超過量の総和と称する場合もある）と所定のオフセット量が内側の最小設定値を超えた内側の超過回数（以下、内側の最小超過回数と称する場合もある）とが所定の閾値より小さい場合、ＭＰＵ６０は、このトラックのＤＯＬを内側の最大設定値に設定する。換言すると、所定のトラックにおいて内側の最小超過量の総和が内側の総和閾値よりも小さい、且つ内側の最小超過回数が外側の超過回数の閾値よりも小さい場合、ＭＰＵ６０は、このトラックの内側のＤＯＬを内側の最大設定値に設定する。また、所定のトラックにおいて内側の最小超過量の総和と内側の最小超過回数との内の少なくとも一方が所定の閾値より大きい場合、ＭＰＵ６０は、このトラックに対応するＤＯＬを最大設定値から最小設定値に変更する。換言すると、所定のトラックにおいて内側の最小超過量の総和が内側の総和閾値よりも大きい場合、ＭＰＵ６０は、このトラックに対応するＤＯＬを外側の最大設定値から外側の最小設定値に変更する。所定のトラックにおいて、内側の最小超過回数が内側の超過回数の閾値よりも大きい場合、ＭＰＵ６０は、このトラックに対応するＤＯＬを内側の最大設定値から内側の最小設定値に変更する。所定のトラックにおいて、内側の最小超過量の総和が外側の総和閾値よりも大きい、且つ外側の最小超過回数が外側の超過回数の閾値よりも大きい場合、ＭＰＵ６０は、このトラックに対応するＤＯＬを内側の最大設定値から内側の最小設定値に変更する。
【００６６】
なお、ＭＰＵ６０は、所定のトラックにおいて、内側の総和及び内側の超過回数の内の少なくとも一方が所定の値を超える毎に外側のＤＯＬを段階的に小さくしてもよい。換言すると、ＭＰＵ６０は、所定のトラックにおいて内側の総和が内側の総和閾値よりも小さい所定の値（以下、内側の総和のＤＯＬ変更値と称する）を超える毎に内側のＤＯＬを段階的に小さくする。内側の総和のＤＯＬ変更値は、例えば、複数の値を含んでいる。内側の総和が内側の総和閾値を超えた場合、ＭＰＵ６０は、内側の最小設定値を内側のＤＯＬに設定する。ＭＰＵ６０は、所定のトラックにおいて、内側の超過回数が内側の超過回数の閾値よりも小さい所定の値（以下、内側の超過回数のＤＯＬ変更値と称する）を超える毎に内側のＤＯＬを段階的に小さくする。内側の超過回数のＤＯＬ変更値は、例えば、複数の値を含んでいる。内側の超過回数が内側の超過回数の閾値を超えた場合、ＭＰＵ６０は、内側の最小設定値を内側のＤＯＬに設定する。ＭＰＵ６０は、所定のトラックにおいて、内側の総和が内側の総和のＤＯＬ変更値を超える、且つ内側の超過回数が内側の超過回数の内側のＤＯＬ変更値を超える毎に内側のＤＯＬを段階的に小さくする。
【００６７】
図１０は、変形例２に係るライト処理方法の一例を示すフローチャートである。  
所定のトラックのライト処理を開始した場合、ＭＰＵ６０は、前のトラックに対応する総和及び超過回数を初期化し（Ｂ７０１）、ＤＯＬを設定し（Ｂ７０２）、所定のトラックの所定のセクタにデータをライトし（Ｂ７０３）、オフセット量が所定のＤＯＬ設定値を超えているか超えていないかを判定する（Ｂ７０４）。所定のＤＯＬ設定値を超えていると判定した場合（Ｂ７０４のＹＥＳ）、ＭＰＵ６０は、ヘッド１５がずれた方向を判定する（Ｂ１００１）。ヘッド１５が外方向にずれたと判定した場合（Ｂ１００１の外方向）、ＭＰＵ６０は、外側の超過量を算出し（Ｂ１００２）、外側の超過量に基づいて外側の総和を算出し、外側の超過回数をインクリメントする（Ｂ１００３）。ＭＰＵ６０は、外側の総和及び外側の超過回数の内の少なくとも一方が閾値（外側の総和閾値及び外側の超過量の閾値）を超えているか超えていないかを判定する（Ｂ１００４）。外側の総和及び外側の超過回数の内の少なくとも一方が閾値を超えていないと判定した場合（Ｂ１００４のＮＯ）、ＭＰＵ６０は、Ｂ７０９の処理へ進む。外側の総和及び外側の超過回数の内の少なくとも一方が閾値を超えていると判定した場合（Ｂ１００４のＹＥＳ）、ＭＰＵ６０は、外側のＤＯＬを変更し（Ｂ１００５）、Ｂ７０９の処理へ進む。例えば、ＭＰＵ６０は、外側の最大設定値から外側の最小設定値に外側のＤＯＬを変更する。ヘッド１５が内方向にずれたと判定した場合（Ｂ１００１の内方向）、ＭＰＵ６０は、内側の超過量を算出し（Ｂ１００６）、内側の超過量に基づいて内側の総和を算出し、内側の超過回数をインクリメントする（Ｂ１００７）。ＭＰＵ６０は、内側の総和及び内側の超過回数の内の少なくとも一方が閾値（内側の総和閾値及び内側の超過回数の閾値）を超えているか超えていないかを判定する（Ｂ１００８）。内側の総和及び内側の超過回数の内の少なくとも一方が閾値を超えていないと判定した場合（Ｂ１００８のＮＯ）、ＭＰＵ６０は、Ｂ７０９の処理へ進む。内側の総和及び内側の超過回数の内の少なくとも一方が閾値を超えていると判定した場合（Ｂ１００８のＹＥＳ）、ＭＰＵ６０は、内側のＤＯＬを変更し（Ｂ１００９）、Ｂ７０９の処理へ進む。例えば、ＭＰＵ６０は、内側の最大設定値から内側の最小設定値に内側のＤＯＬを変更する。
【００６８】
変形例２によれば、磁気ディスク装置１は、外側のＤＯＬと内側のＤＯＬとを別々に管理している。磁気ディスク装置１は、前のオフセット量及び外側のエラー訂正指標に基づいて外側の最大設定値を外側のＤＯＬに設定し、前のオフセット量及び内側のエラー訂正指標に基づいて内側の最大設定値を内側のＤＯＬに設定する。外側の総和及び外側の超過回数の内の少なくとも一方が閾値（外側の総和閾値及び外側の超過回数の）を超えたためにパリティデータや誤り訂正符号に基づいてリードエラーデータを訂正できる可能性が小さい、又はリードエラーデータを訂正できないと判定した場合、磁気ディスク装置１は、外側のＤＯＬを外側の最大設定値から外側の最小設定値に変更する。また、内側の総和及び内側の超過回数の内の少なくとも一方が閾値（内側の総和閾値及び内側の超過回数）を超えたためにパリティデータや誤り訂正符号に基づいてリードエラーデータを訂正できる可能性が小さい、又はリードエラーデータを訂正できないと判定した場合、磁気ディスク装置１は、内側のＤＯＬを内側の最大設定値から内側の最小設定値に変更する。そのため、磁気ディスク装置１は、ライト処理及びリード処理の性能を向上することができる。
【００６９】
（変形例３）  
変形例３の磁気ディスク装置１は、ＤＯＬの管理方法が前述した実施形態及び変形例の磁気ディスク装置１と異なる。  
図１１は、変形例３に係るＤＯＬの管理方法の一例を示すための模式図である。  
図１１には、セクタＳｋ１の半径方向の外方向に隣接するセクタＳ（ｋ−１）１を示している。セクタＳ（ｋ−１）１は、例えば、傷等の欠陥（又は、ディフェクト）を含むセクタ（不良セクタ）として出荷前のディスク１０の欠陥の検査で検出された不良セクタに関連する情報を含むＰリスト又は出荷後に検出された不良セクタに関連する情報を含むＧリストに登録されている。
【００７０】
ＭＰＵ６０は、セクタＳｋ１にデータをライトした際に、外側の最小設定値ＤＰ１よりも外方向にヘッド１５がずれたことを検出する。換言すると、ＭＰＵ６０は、セクタＳｋ１にデータをライトした際に、オフセット量が外側の最小設定値ＤＰ１を超過したことを検出する。セクタＳｋ１においてオフセット量が外側の最小設定値ＤＰ１を超過したことを検出した場合、ＭＰＵ６０は、セクタＳｋ１の外方向に隣接するセクタＳ（ｋ−１）１が不良セクタか不良セクタでないかを判定する。例えば、ＭＰＵ６０は、セクタＳｋ１の外方向に隣接するセクタＳ（ｋ−１）１がＰリスト及びＧリストの少なくとも一方に登録されているか登録されていないかを判定する。セクタＳ（ｋ−１）がＰリスト及びＧリストの少なくとも一方に登録されているためセクタＳ（ｋ−１）１が不良セクタであると判定した場合、ＭＰＵ６０は、総和や超過回数を算出せずに、ライト処理を実行する。換言すると、セクタＳ（ｋ−１）がＰリスト及びＧリストの少なくとも一方に登録されているためセクタＳ（ｋ−１）１が不良セクタであると判定した場合、ＭＰＵ６０は、総和や超過回数を維持する。セクタＳ（ｋ−１）がＰリスト及びＧリストに登録されていないためセクタＳ（ｋ−１）１が不良セクタでないと判定した場合、ＭＰＵ６０は、セクタＳｋ１における超過量ＥＡｋ１を取得、総和（０）に超過量ＥＡｋ１を加算する。また、オフセット量が外側の最小設定値ＤＰ１を超過したことを検出した場合、ＭＰＵ６０は、超過回数をインクリメントする。ＭＰＵ６０は、総和が総和閾値を超えているか超えていないかを判定する。また、ＭＰＵ６０は、超過回数が超過量の閾値を超えているか超えていないかを判定する。
【００７１】
図１２は、変形例３に係るライト処理方法の一例を示すフローチャートである。  
所定のトラックのライト処理を開始した場合、ＭＰＵ６０は、前のトラックに対応する総和及び超過回数を初期化し（Ｂ７０１）、ＤＯＬを設定し（Ｂ７０２）、所定のトラックの所定のセクタにデータをライトし（Ｂ７０３）、オフセット量が所定のＤＯＬ設定値を超えているか超えていないかを判定する（Ｂ７０４）。所定のＤＯＬ設定値を超えていると判定した場合（Ｂ７０４のＹＥＳ）、ＭＰＵ６０は、ヘッド１５がずれた方向に位置するセクタが不良セクタであるか不良セクタでないかを判定する（Ｂ１２０１）。例えば、ＭＰＵ６０は、ヘッド１５が半径方向においてずれた方向に隣接するセクタがＰリスト又はＧリストに登録されているか登録されていないかを判定する。ヘッド１５がずれた方向に位置するセクタが不良セクタでないと判定した場合（Ｂ１２０１のＮＯ）、ＭＰＵ６０は、Ｂ７０９の処理に進む。例えば、ＭＰＵ６０は、ヘッド１５が半径方向においてずれた方向に隣接するセクタがＰリスト及びＧリストに登録されていないためヘッド１５が半径方向いおいてずれた方向に隣接するセクタが不良セクタでないと判定する。ヘッド１５がずれた方向に位置するセクタが不良セクタであると判定した場合（Ｂ１２０１のＹＥＳ）、ＭＰＵ６０は、Ｂ７０８の処理に進む。例えば、ＭＰＵ６０は、ヘッド１５が半径方向においてずれた方向に隣接するセクタがＰリスト及びＧリストの少なくとも一方に登録されているためヘッド１５が半径方向いおいてずれた方向に隣接するセクタが不良セクタであると判定する。
【００７２】
変形例３によれば、磁気ディスク装置１は、ヘッド１５がずれた方向に位置するセクタが不良セクタであるか不良セクタでないかを判定する。ヘッド１５がずれた方向に位置するセクタが不良セクタであると判定した場合、磁気ディスク装置１は、総和や超過回数を算出せずに、ライト処理を実行する。そのため、磁気ディスク装置１は、ライト処理及びリード処理の性能を向上することができる。  
なお、前述した実施形態及び変形例の構成は、瓦記録によりデータをライトする磁気ディスク装置１だけでなく、瓦記録でない通常の記録によりデータをライトする磁気ディスク装置にも適用することができる。
【００７３】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７４】
１…磁気ディスク装置、１０…磁気ディスク、１０ａ…瓦記録領域、１０ｂ…メディアキャッシュ、１２…スピンドルモータ（ＳＰＭ）、１３…アーム、１４…ボイスコイルモータ（ＶＣＭ）、１５…ヘッド、１５Ｗ…ライトヘッド、１５Ｒ…リードヘッド、２０…ドライバＩＣ、３０…ヘッドアンプＩＣ、４０…リード／ライト（Ｒ／Ｗ）チャネル、５０…ハードディスクコントローラ（ＨＤＣ）、６０…マイクロプロセッサ（ＭＰＵ）、７０…揮発性メモリ、８０…バッファメモリ、９０…不揮発性メモリ、１００…ホストシステム（ホスト）、１３０…システムコントローラ。
【図１】
2019215943.tif 000003
【図２】
2019215943.tif 000004
【図３】
2019215943.tif 000005
【図４】
2019215943.tif 000006
【図５】
2019215943.tif 000007
【図６】
2019215943.tif 000008
【図７】
2019215943.tif 000009
【図８】
2019215943.tif 000010
【図９】
2019215943.tif 000011
【図１０】
2019215943.tif 000012
【図１１】
2019215943.tif 000013
【図１２】
2019215943.tif 000014