(57)【特許請求の範囲】
【請求項１】
回転する記憶媒体に、データのリード及びライトを行うヘッドと、
前記記憶媒体の所望トラックに前記ヘッドを位置付けるアクチュエータと、
上位からのライトコマンド及びライトデータを受領し、前記ライトデータを、前記ヘッドにより、前記記憶媒体の指定されたトラックにライトするとともに、前記ヘッドによる前記トラックへのライト時に、前記ヘッドが、前記トラックから外れたオフトラックを検出し、前記ライトデータの前記トラックへのライトリトライを実行する制御回路と、
少なくとも、対象トラック番号と、前記オフトラック時のヘッドのずれ量とを有する書き直し要求を格納する書き直し要求テーブルとを有し、
前記制御回路は、前記オフトラック検出時に、前記ずれ量が所定の閾値より大きいか否かを判定することにより、前記ヘッドのオフトラックによる隣接トラックのデータへの影響の可能性があるか否かを判定し、前記隣接トラックのデータへの影響の可能性があると判定した場合には、前記隣接トラックの書き直し要求を、前記書き直し要求テーブルに格納し、前記ずれ量に基づき、前記ライトコマンドとは異なるタイミングであるバックグラウンドで、振動が収まった後に、前記書き直し要求テーブルに格納された前記書き直し要求を実行する
ことを特徴とするデータ記憶装置。
【請求項２】
前記制御回路は、他のライトコマンドを受領した時に、前記他のライトコマンドの実行前に、前記書き直し要求テーブルに格納された前記書き直し要求を実行する
ことを特徴とする請求項１のデータ記憶装置。
【請求項３】
前記制御回路は、前記オフトラック要因である振動が収まったかを判定し、前記振動が収まったと判定した時に、前記書き直し要求テーブルに格納された前記書き直し要求を実行する
ことを特徴とする請求項１のデータ記憶装置。
【請求項４】
回転する記憶媒体の所望のトラックに、データのリード及びライトを行うヘッドを位置付け、前記データのリード及びライトを行うデータ記憶装置の隣接トラック書き直し処理方法において、
前記ヘッドによる前記トラックへのライト時に、前記ヘッドが、前記トラックから外れたオフトラックを検出するステップと、
前記オフトラック検出時に、前記オフトラック時のヘッドのずれ量が所定の閾値より大きいか否かを判定することにより、前記ヘッドのオフトラックによる隣接トラックのデータへの影響の可能性があるか否かを判定するステップと、
前記隣接トラックのデータへの影響の可能性があると判定した場合には、少なくとも、対象トラック番号と、前記ヘッドのずれ量とを有する前記隣接トラックの書き直し要求を、書き直し要求テーブルに格納するステップと、
前記ライトデータの前記トラックへのライトリトライを実行するステップと、
前記ずれ量に基づき、前記ライトコマンドとは異なるタイミングであるバックグラウンドで、振動が収まった後に、前記書き直し要求テーブルに格納された前記書き直し要求を実行するステップとを有する
ことを特徴とする隣接トラック書き直し処理方法。
【請求項５】
前記書き直し要求を実行するステップは、他のライトコマンドを受領した時に、前記他のライトコマンドの実行前に、前記書き直し要求テーブルに格納された前記書き直し要求を実行するステップを有する
ことを特徴とする請求項４の隣接トラック書き直し処理方法。
【請求項６】
前記書き直し要求を実行するステップは、
前記オフトラック要因である振動が収まったかを判定するステップと、
前記振動が収まったと判定した時に、前記書き直し要求テーブルに格納された前記書き直し要求を実行するステップとを有する
ことを特徴とする請求項４の隣接トラック書き直し処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、上位からのライトデータを、ヘッドにより、媒体に記録するデータ記憶装置及び隣接トラック書き直し処理方法に関し、特に、媒体へのライトデータ記録時に、オフトラックが発生した場合に、隣接トラックのライトデータをリライトするデータ記憶装置及び隣接トラック書き直し処理方法に関する。
【背景技術】
【０００２】
近年のデータ電子化処理の要求により、データを記憶する磁気ディスク装置や光ディスク装置の媒体記憶装置に、大容量化が要求されている。このため、ディスク媒体は、益々トラック密度や記録密度が高くなっている。
【０００３】
このようなデータ記憶装置は、ディスクへのデータライト時に、何らかの理由で、ヘッドが、オフトラックしたライトエラーが発生することがある。即ち、記録媒体への書き込み時、書き込みヘッドの位置が目標トラックのセンターからどれだけずれているかを検出し、このずれ量が設定した閾値を超えた際に、その書き込みをオフトラックエラーと判断し、リトライを行っている。
【０００４】
この時、ヘッド位置のずれ量が、大きすぎると、隣接するトラックに寄せ書きした可能性がある。このため、オフトラックエラーの判断基準に加えて、隣接トラックへ寄せ書きした可能性があるかの判断基準を設けて、隣接トラックへ寄せ書きした可能性がある場合には、当該ライトコマンドのリトライ（ライトコマンドのトラックのデータライト）と同時に、寄せ書きされたトラックのリード及び書き直しを実施していた（特許文献１，２、３参照）。即ち、従来は、隣接トラックへの書き直しを、当該ライトコマンドのリトライに続いて行っていた。
【特許文献１】特許第３，９４２，４８３号公報
【特許文献２】特許第３，０３７，２５０号公報
【特許文献２】特開２００１−０１４６０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
近年のディスク記憶装置の記録密度の向上に伴い、トラックピッチも狭くなっている。このため、ヘッドが、オフトラックする程度が増加しつつある。特に、トラックピッチが狭くなると、振動による影響により、オフトラックする可能性が大きくなる。
【０００６】
このため、従来のように、隣接トラックへの書き直しを、当該ライトコマンドのリトライに続いて行う場合、当該ライトコマンドで発生したオフトラックエラーの要因となる振動の影響を受ける可能性がある。このため、書き直し処理実施時にも、オフトラックエラーに至る要素が存在することになり、最悪の場合さらなる寄せ書きが発生することになりうる。
【０００７】
また、即時の書き直し処理の実施は、当該ライトコマンドの実行時間の延伸に繋がり、ドライブの性能低下の要因となりうる。
【０００８】
従って、本発明の目的は、オフトラックにより、隣接トラックへライトを行った可能性があった場合、隣接トラックのデータを任意のタイミングで再書き込みするためのデータ記憶装置及び隣接トラック書き直し処理方法を提供することにある。
【０００９】
又、本発明の他の目的は、オフトラックにより、隣接トラックへライトを行った可能性があった場合に、ライトリトライとは、別のタイミングで、隣接トラックのデータを再書き込みするためのデータ記憶装置及び隣接トラック書き直し処理方法を提供することにある。
【課題を解決するための手段】
【００１０】
この目的の達成のため、本発明のデータ記憶装置は、回転する記憶媒体に、データのリード及びライトを行うヘッドと、前記記憶媒体の所望トラックに前記ヘッドを位置付けるアクチュエータと、上位からのライトコマンド及びライトデータを受領し、前記ライトデータを、前記ヘッドにより、前記記憶媒体の指定されたトラックにライトするとともに、前記ヘッドによる前記トラックへのライト時に、前記ヘッドが、前記トラックから外れたオフトラックを検出し、前記ライトデータの前記トラックへのライトリトライを実行する制御回路と、少なくとも、対象トラック番号と、前記オフトラック時のヘッドのずれ量とを有する書き直し要求を格納する書き直し要求テーブルとを有し、前記制御回路は、前記オフトラック検出時に、前記ずれ量が所定の閾値より大きいか否かを判定することにより、前記ヘッドのオフトラックによる隣接トラックのデータへの影響の可能性があるか否かを判定し、前記隣接トラックのデータへの影響の可能性があると判定した場合には、前記隣接トラックの書き直し要求を、前記書き直し要求テーブルに格納し、前記ずれ量に基づき、前記ライトコマンドとは異なるタイミングであるバックグラウンドで、振動が収まった後に、前記書き直し要求テーブルに格納された前記書き直し要求を実行する。
【００１１】
又、本発明の隣接トラック書き直し処理方法は、回転する記憶媒体の所望のトラックに、データのリード及びライトを行うヘッドを位置付け、前記データのリード及びライトを行うデータ記憶装置の隣接トラック書き直し処理方法において、前記ヘッドによる前記トラックへのライト時に、前記ヘッドが、前記トラックから外れたオフトラックを検出するステップと、前記オフトラック検出時に、前記オフトラック時のヘッドのずれ量が所定の閾値より大きいか否かを判定することにより、前記ヘッドのオフトラックによる隣接トラックのデータへの影響の可能性があるか否かを判定するステップと、前記隣接トラックのデータへの影響の可能性があると判定した場合には、少なくとも、対象トラック番号と、前記ヘッドのずれ量とを有する前記隣接トラックの書き直し要求を、書き直し要求テーブルに格納するステップと、前記ライトデータの前記トラックへのライトリトライを実行するステップと、前記ずれ量に基づき、前記ライトコマンドとは異なるタイミングであるバックグラウンドで、振動が収まった後に、前記書き直し要求テーブルに格納された前記書き直し要求を実行するステップとを有する。
【００１２】
更に、本発明は、好ましくは、前記制御回路は、他のライトコマンドを受領した時に、前記他のライトコマンドの実行前に、前記書き直し要求テーブルに格納された前記書き直し要求を実行する。
【００１３】
更に、本発明は、好ましくは、前記制御回路は、前記オフトラック要因である振動が収まったかを判定し、前記振動が収まったと判定した時に、前記書き直し要求テーブルに格納された前記書き直し要求を実行する。
【００１４】
更に、本発明は、好ましくは、前記制御回路は、前記他のライトコマンドを受領した時に、前記ライトコマンドの実行前に、前記書き直し要求テーブルに格納された前記ライトコマンドで指定されたトラックに隣接するトラックに対する前記書き直し要求を実行する。
【００１５】
更に、本発明は、好ましくは、前記制御回路は、前記他のライトコマンドを受領した時に、前記書き直し要求テーブルに、前記ライトコマンドで指定されたトラックに隣接するトラックに対する前記書き直し要求が存在するかを判定し、前記隣接トラックの書き直し要求が存在する場合に、前記隣接トラックの書き直し要求を実行し、前記隣接トラックの書き直し要求が存在しない場合には、前記オフトラック要因である振動が収まったかを判定し、前記振動が収まったと判定した時に、前記書き直し要求テーブルに格納された前記隣接トラック以外の書き直し要求を実行する。
【００１６】
更に、本発明は、好ましくは、前記制御回路は、他のライトコマンドを受領した時に、前記書き直し要求テーブルの前記書き直し要求の書き直し領域が、前記他のライトコマンドのライト範囲内であるかを判定し、前記書き直し要求の書き直し領域が、前記他のライトコマンドのライト範囲内であるとの判定に応じて、前記書き直し要求テーブルに格納された前記書き直し要求をリセットする。
【００１７】
更に、本発明は、好ましくは、前記書き直し要求テーブルは、少なくとも、対象トラック番号と、前記オフトラック時のヘッドのずれ量とを有する複数の書き直し要求を格納し、前記制御回路は、前記隣接トラックのデータへの影響の可能性があると判定した場合に、前記隣接トラックの書き直し要求の前記ヘッドのずれ量と、前記書き直し要求テーブルに格納された前記書き直し要求のずれ量とを比較し、前記ずれ量が最小である前記書き直し要求を、前記書き直し要求テーブルから削除する。
【００１８】
更に、本発明は、好ましくは、前記制御回路は、前記隣接トラックのデータへの影響の可能性があると判定した場合には、前記隣接トラックが、前記オフトラックを発生した前記ライトコマンドの対象範囲内であるかを判定し、前記隣接トラックが、前記ライトコマンドの対象範囲内であることの判定に応じて、前記隣接トラックの書き直し要求を、前記書き直し要求テーブルへの格納を禁止する。
【００１９】
更に、本発明は、好ましくは、前記制御回路は、前記ライトコマンドを受領していないことを判定し、前記ライトコマンドを受領していない場合に、前記書き直し要求テーブルに格納された前記書き直し要求を実行する。
【００２０】
更に、本発明は、好ましくは、前記ライトデータを一時格納するキャッシュメモリを更に有し、前記制御回路は、前記書き直し要求テーブルの前記書き直し要求の対象データが前記キャッシュメモリに存在するかを判定し、前記書き直し要求の対象データが、前記キャッシュメモリに存在する場合に、前記キャッシュメモリの対象データを前記隣接トラックにライトして、前記書き直し要求を実行する。
【００２１】
更に、本発明は、好ましくは、前記制御回路は、前記隣接トラックのデータへの影響の可能性があると判定した場合には、前記隣接トラックのデータが、キャッシュメモリに存在するかを判定し、存在する場合に、前記キャッシュメモリに存在する識別子を付して、前記書き直し要求を、前記書き直し要求テーブルに格納し、前記ライトリトライとは、別のタイミングで、前記書き直し要求テーブルに格納された前記キャッシュメモリに存在する識別子を有する書き直し要求を優先的に実行する。
【発明の効果】
【００２２】
ライトコマンドにて隣接トラックのデータに影響を与えるオフトラックエラーが発生した際、当該ライトコマンドに付随して、即時書き直し処理を実施せず、書き直しが必要なトラックの情報やオフトラック時のずれ量等を保持しておき、他のタイミングで保持した書き直し要求を実行するため、オフトラック要因となった振動が収まるのを待ってから書き直し処理を実施し、書き直し処理時のオフトラックエラーの発生、ないし寄せ書きの発生を抑止でき、また書き直し処理をバックグラウンドで行うことで当該ライトコマンドの実行時間の延伸を軽減し、書き直し処理によるドライブの性能低下を軽減させることができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を、データ記憶装置、書き直し処理の第１の実施の形態、書き直し処理の第２の実施の形態、他の実施の形態の順で説明するが、本発明は、この実施の形態に限られない。
【００２４】
（データ記憶装置）
図１は、本発明の一実施の形態のデータ記憶装置の構成図であり、図２は、オフトラック検出の説明図である。図１は、データ記憶装置として、磁気ディスクにデータをリード／ライトする磁気ディスク装置（ＨＤＤ）を例に示す。
【００２５】
図１に示すように、磁気ディスク装置１０は、パーソナルコンピュータに内蔵され、パーソナルコンピュータのホスト（図示せず）とＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｏｎｅｎｔ  Ｓｅｒｉａｌ  Ｉｎｔｅｒｆａｃｅ），ＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）規格等のインターフェースのケーブル９で接続される。
【００２６】
磁気ディスク装置１０は、磁気ディスク１９と、磁気ディスク１９を回転するスピンドルモータ２０と、磁気ディスク１９にデータをリード／ライトする磁気ヘッド２５と、磁気ヘッド２５を磁気ディスク１９の半径方向（トラック横断方向）に移動するアクチュエータ（ＶＣＭ）２２とを備える。
【００２７】
又、制御部として、ＨＤＣ（Hard  Disk  Controller）２６と、データバッファ１４と、ＭＰＵ１１と、メモリ（ＲＡＭ、ＲＯＭ）１３と、リードチャネル回路（ＲＤＣ）２４と、ヘッドＩＣ１８と、スピンドルモータドライバ２１と、ＶＣＭドライバ２３と、ショックセンサー（振動センサ）２８と、これらを接続するバス１７とを備える。
【００２８】
ＨＤＣ２６は、ホストからタスクをセットするタスクファイル１２Ａを有するインターフェース制御回路１２と、データバッファ１４を制御するデータバッファ制御回路１５と、記録データのフォーマット変換し、リードデータの逆フォーマット変換を行うフォーマット変換回路１６とを有する。リードチャネル回路２４は、リードデータの復調を行うとともに、リードゲート、ライトゲート、リードクロック、ライトクロックの生成を行う。
【００２９】
データバッファ１４は、キャッシュメモリの役目を果たし、ホストからのライトデータをキャッシュ領域１４−１に保存し、且つ磁気ディスク１９からのリードデータを保存する。そして、ライトバック時には、データバッファ１４のライトデータを、磁気ディスクにライトし、リード時には、データバッファ１４のリードデータを、ホストへ転送する。
【００３０】
ヘッドＩＣ１８は、ライト時は、ライトデータに従い、磁気ヘッド２５に記録電流を流し、リード時は、磁気ヘッド２５からの読取信号を増幅して、リードチャネル回路１６に出力する。スピンドルドライバ２１は、スピンドルモータ２０を回転駆動する。ＶＣＭドライバ２３は、磁気ヘッド２５を移動するＶＣＭ２２を駆動する。
【００３１】
ＭＰＵ（Micro  Processor）１１は、磁気ヘッド２５の位置検出及び位置制御、リード／ライト制御、リトライ制御を行う。メモリ（ＲＯＭ／ＲＡＭ）１３は、ＭＰＵ１１の処理に必要なデータを格納する。ショックセンサー２８は、振動を検出し、検出信号を、バス１７を介し、ＭＰＵ１１に出力する。
【００３２】
ＭＰＵ１１は、ヘッドＩＣ１８からの磁気ディスク１９のサーボ信号から位置を検出し、ＶＣＭ２２をシーク、オントラック制御するとともに、検出位置からオフトラック検出する。ライト時に、オフトラック検出すると、ライトエラーと判定し、そのセクターのライトゲート発生を停止する。メモリ１３は、図４以下で説明する書き直し処理要求テーブル１３−１を格納する。
【００３３】
図２は、本発明の実施の形態のオフトラック検出の説明図である。図２は、磁気ディスク１９の対象トラックＴ０に、磁気ヘッド２５のライト素子２５−１に位置付け、データをライトしている様子を示す。ライト素子２５−１が、対象トラックＴ０のセンターに位置している時は、正常なデータライトを行うことができる。
【００３４】
一方、ライト素子２５−１が、対象トラックＴ０のセンターに位置制御しているにも係らず、磁気ヘッド２５が受ける風圧や振動により、ライト素子２５−１が、トラックセンターから外れることがある。これを検出するため、ＭＰＵ１１は、オフトラックスライス値を設け、磁気ヘッド２５からのサーボ信号の復調結果であるヘッド位置が、オフトラックスライス値を越えると、ライトオフトラックを検出する。このオフトラックスライス値は、ライト素子２５−１が、対象トラックＴ０に、正常にデータを書き込めないと判断できる値に設定される。ＭＰＵ１１は、オフトラックを検出すると、当該トラックＴ０のライトデータのライトリトライを実行する。
【００３５】
更に、ＭＰＵ１１は、オフトラックスライス値より大きい値の重大なオフトラックスライス値を設ける。この重大なオフトラックスライス値αは、ライト素子によるデータ書込みが、隣接トラックＴ１のデータに影響する可能性があると判断するためのものである。このため、ＭＰＵ１１は、磁気ヘッド２５からのサーボ信号の復調結果であるヘッド位置が、重大なオフトラックスライス値αを越えると、隣接トラックＴ１のデータに影響する可能性があると判断する。この場合には、隣接トラックＴ１のデータの書き直しも実行する。
【００３６】
（書き直し処理の第１の実施の形態）
図３は、本発明のライトリトライ処理の第１の実施の形態の処理フロー図、図４は、図１及び図３の書き直し処理要求テーブル１３−１の説明図、図５及び図６は、図３の処理による図４のテーブルへの登録動作の説明図である。
【００３７】
図４により、書き直し処理要求テーブル１３−１を説明する。図４に示すように、書き直し処理要求テーブル１３−１は、書き直し処理要求を格納するものであり、エントリ番号と、有効フラグと、トラック番号と、ずれ量とで構成される。有効フラグは、書き直し処理未了のものを、有効、書き直し処理完了済みを、無効とセットされる。トラック番号は、書き直すべきトラック（即ち、前述のヘッド位置が、重大なオフトラックスライス値αを越え、隣接トラックＴ１のデータに影響する可能性があると判断された場合のその隣接トラック番号）である。ずれ量は、隣接トラックに影響すると判断した時のトラックセンターからヘッド位置までの距離（ずれ）である。
【００３８】
本願は、このような書き直し要求発生時に、この処理テーブル１３−１に、書き直し要求を登録しておき、ライトリトライとは、別の任意のタイミングで、処理テーブル１３−１の書き直し要求を実行するものである。
【００３９】
以下、図５及び図６により、図３のライトリトライ処理を説明する。
【００４０】
（Ｓ１０）ＭＰＵ１１は、図２のように、ヘッド位置が、オフトラックスライス値を越えると、ライトオフトラックを検出し、その時のヘッド２５のトラックセンター位置からのずれ量Δｎｅｗを取得し、ずれ量Δｎｅｗが、図２の重大なオフトラックスライス値α以上であるかを判定する。ＭＰＵ１１は、ずれ量Δｎｅｗが、図２の重大なオフトラックスライス値α以上でない場合には、隣接トラックへの影響の可能性なしと判断し、ステップＳ２２の通常のライトリトライを実行する。
【００４１】
（Ｓ１２）ＭＰＵ１１は、逆に、ずれ量Δｎｅｗが、図２の重大なオフトラックスライス値α以上である場合には、隣接トラックへの影響の可能性ありと判断し、処理テーブル１３−１への登録処理に移る。先ず、ＭＰＵ１１は、処理テーブル１３−１の既存エントリが、全て有効であるかを、有効フラグから判定する。
【００４２】
（Ｓ１４）ＭＰＵ１１は、処理テーブル１３−１の既存エントリが、全てが、有効でない（一部又は全部、無効）と判定すると、図５に示すように、無効なエントリの１つを、登録用エントリに選択する。そして、ステップＳ２０に進む。
【００４３】
（Ｓ１６）ＭＰＵ１１は、処理テーブル１３−１の既存エントリが、全てが、有効であると判定すると、処理テーブル１３−１は、図６の状態である。このままでは、新規エントリを登録できない。このため、ＭＰＵ１１は、処理テーブル１３−１の全エントリのずれ量Δ１〜ΔＭと、今回のずれ量Δｎｅｗの大小関係を比較する。そして、この比較で、今回のずれ量Δｎｅｗが、最小であるかを判断する。ＭＰＵ１１は、処理テーブル１３−１の全エントリのずれ量Δ１〜ΔＭと、今回のずれ量Δｎｅｗの大小関係の比較により、今回のずれ量Δｎｅｗが、最小であると判断すると、処理テーブル１３−１への登録を行うことなく、ステップＳ２２の通常のライトリトライを実行する。この場合、今回、隣接トラックへの影響の可能性ありと判断された書き直し要求は、実行されない。
【００４４】
（Ｓ１８）一方、ＭＰＵ１１は、処理テーブル１３−１の全エントリのずれ量Δ１〜ΔＭと、今回のずれ量Δｎｅｗの大小関係の比較により、今回のずれ量Δｎｅｗが、最小でないと判断すると、処理テーブル１３−１のずれ量が最小であったエントリを、登録エントリに選択する。
【００４５】
（Ｓ２０）ＭＰＵ１１は、図５及び図６に示すように、ステップＳ１４又はＳ１８で選択された登録用エントリに、書き直し対象トラック番号Ｎｎｅｗを、ずれ量に、Δｎｅｗを上書きする。そして、処理テーブル１３−１の登録用エントリの有効フラグを有効にセットする。
【００４６】
（Ｓ２２）ＭＰＵ１１は、オフトラック検出したトラックのライトリトライを実行する。即ち、キャッシュメモリ１４−１から再度、ライトデータを読み出し、そのトラックにライトする。
【００４７】
このように、オフトラック検出した際にライトリトライ時には、隣接トラックへの影響の可能性があっても、このライトリトライと同時に、隣接トラックのリライトを実行せずに、処理テーブル１３−１に、書き直し要求を格納しておく。そして、後述するように、任意のタイミングで、処理テーブル１３−１を参照して、隣接トラックの書き戻し処理を実行する。
【００４８】
又、処理テーブル１３−１から最小のずれ量のエントリを排除する理由は、ずれ量が小さい場合には、隣接トラックへの影響の可能性があっても、当該隣接トラックのオフセットリード等でデータをリードできる場合があり、それより重大な影響のあるエントリを格納するためである。
【００４９】
次に、この処理テーブル１３−１を使用したライトコマンド処理を、図７で説明する。
【００５０】
（Ｓ３０）ＭＰＵ１１は、ライトコマンドを受領すると、そのコマンドを処理する前に、書き戻し処理する。即ち、ＭＰＵ１１は、ライトコマンドで指定するトラック領域の隣接トラックを対象とした有効な書き直し要求エントリが、処理テーブル１３−１に存在するかを判定する。即ち、ライトコマンドで指定された書き込みトラック番号と、処理テーブル１３−１の各エントリのトラック番号とを比較して、ライトコマンドで指定するトラック領域の隣接トラックを対象とした有効な書き直し要求エントリが、存在するかを判定する。
【００５１】
（Ｓ３２）ＭＰＵ１１は、ライトコマンドで指定するトラック領域の隣接トラックを対象とした有効な書き直し要求エントリが、処理テーブル１３−１に存在すると判定した場合には、当該エントリを実行エントリに選択し、ステップＳ３８に進む。
【００５２】
（Ｓ３４）一方、ＭＰＵ１１は、ライトコマンドで指定するトラック領域の隣接トラックを対象とした有効な書き直し要求エントリが、処理テーブル１３−１に存在しないと判定すると、処理テーブル１３−１に有効な書き直し要求エントリが存在するかを判定する。存在しない場合には、ステップＳ４０に進む。一方、存在する場合には、ＭＰＵ１１は、当該エントリを実行エントリに選択する。
【００５３】
（Ｓ３６）ＭＰＵ１１は、ショックセンサー２８の出力から、直前の重度のライトオフトラック発生時の振動が収まっているかを判定する。ＭＰＵ１１は、直前の重度のライトオフトラック発生時の振動が収まっていないと判定すると、ステップＳ４０に進む。
【００５４】
（Ｓ３８）一方、ＭＰＵ１１は、直前の重度のライトオフトラック発生時の振動が収まっていると判定すると、選択した実行エントリの書き戻し処理を実施する。例えば、隣接トラックのデータをリードし、リードしたデータをその隣接トラックに書き戻す。
【００５５】
（Ｓ４０）そして、ＭＰＵ１１は、ライトコマンドで指定するライト範囲内に、対象範囲が全て含まれる有効な書き直し要求エントリが、処理テーブル１３−１に存在するかを判定する。即ち、ライトコマンドで指定された書き込みトラック番号と、処理テーブル１３−１の各エントリのトラック番号とを比較して、ライトコマンドで指定するライト範囲内に、対象範囲が全て含まれる有効な書き直し要求エントリが、存在するかを判定する。存在する場合は、当該ライトコマンドのデータで上書きされるため、そのエントリの有効フラグを無効に変更する。即ち、書き直しは、必要ないため、無効とする。
【００５６】
（Ｓ４２）ＭＰＵ１１は、ライトコマンドを実行する、即ち、ライトコマンドで指定するトラックにライトデータを書き込む。
【００５７】
このように、リトライしたライトコマンドと別のライトコマンドに同期して、ライトコマンドで指定するトラック領域の隣接トラックを、書き直しし、ライトコマンドを実行する。隣接トラックのため、ライトコマンドの実行時間への影響は、小さい。
【００５８】
又、有効エントリも、振動が収まった後、書き直しするため、振動が継続した状態での、書き直しを防止できる。更に、ライトコマンドに範囲に含まれる書き直し領域は、特別の書き直しをせず、ライトコマンドの実行により、隣接トラックも上書きされるため、ライトコマンドの実行時間への影響を防止できる。
【００５９】
（書き直し処理の第２の実施の形態）
図８は、本発明のライトリトライ処理の第２の実施の形態の処理フロー図、図９は、図１及び図８の書き直し処理要求テーブル１３−１Ａの説明図、図１０及び図１１は、図８の処理による図９のテーブルへの登録動作の説明図である。この第２の実施の形態は、第１の実施の形態に、更に、ライトコマンドが到来しない場合に、バックグランドで、書き直し処理を実行することと、キャッシュメモリに残っている書き戻しデータは、優先処理し、キャッシュメモリの有効利用を図る機能を追加したものである。
【００６０】
図９により、書き直し処理要求テーブル１３−１Ａを説明する。図９に示すように、書き直し処理要求テーブル１３−１Ａは、書き直し処理要求を格納するものであり、エントリ番号と、有効フラグと、トラック番号と、ずれ量、キャッシュデータに有無と、キャッシュデータの位置（アドレス）とで構成される。有効フラグは、トラック番号、ずれ量は、第１の実施の形態で説明したものと同一である。キャッシュデータの有無は、書き直すべきトラックのデータが、バッファ１４のキャッシュメモリ１４−１に存在しているか否かを示す。キャッシュデータの位置は、存在している場合に、そのデータのキャッシュメモリ１４−１の位置（アドレス）を示す。
【００６１】
本願は、このような書き直し要求発生時に、この処理テーブル１３−１に、書き直し要求を登録しておき、ライトリトライとは、別の任意のタイミングで、処理テーブル１３−１の書き直し要求を実行するものである。
【００６２】
以下、図１０及び図１１により、図８のライトリトライ処理を説明する。
【００６３】
（Ｓ５０）ＭＰＵ１１は、図２のように、ヘッド位置が、オフトラックスライス値を越えると、ライトオフトラックを検出し、その時のヘッド２５のトラックセンター位置からのずれ量Δｎｅｗを取得し、ずれ量Δｎｅｗが、図２の重大なオフトラックスライス値α以上であるかを判定する。ＭＰＵ１１は、ずれ量Δｎｅｗが、図２の重大なオフトラックスライス値α以上でない場合には、隣接トラックへの影響の可能性なしと判断し、ステップＳ６８の通常のライトリトライを実行する。
【００６４】
（Ｓ５２）ＭＰＵ１１は、逆に、ずれ量Δｎｅｗが、図２の重大なオフトラックスライス値α以上である場合には、隣接トラックへの影響の可能性ありと判断し、処理テーブル１３−１への登録処理に移る。ＭＰＵ１１は、この書き直し範囲が、実行中（ライトオフトラックしたライトコマンドの実行中）のコマンドの対象範囲内であるか、又は、未だライトされていない領域であるかを判定する。ＭＰＵ１１は、書き直し範囲が、実行中（ライトオフトラックしたライトコマンドの実行中）のコマンドの対象範囲内である、又は、未だライトされていない領域であると判定すると、書き直しは、必要ないため、ステップＳ６８の通常のライトリトライを実行する。
【００６５】
（Ｓ５４）ＭＰＵ１１は、書き直し範囲が、実行中（ライトオフトラックしたライトコマンドの実行中）のコマンドの対象範囲内でない、又は、未だライトされていない領域でないと判定すると、処理テーブル１３−１Ａの既存エントリが、全て有効であるかを、有効フラグから判定する。
【００６６】
（Ｓ５６）ＭＰＵ１１は、処理テーブル１３−１Ａの既存エントリが、全てが、有効でない（一部又は全部、無効）と判定すると、図１０に示すように、無効なエントリの１つを、登録用エントリに選択する。そして、ステップＳ６２に進む。
【００６７】
（Ｓ５８）ＭＰＵ１１は、処理テーブル１３−１Ａの既存エントリが、全てが、有効であると判定すると、処理テーブル１３−１Ａは、図１１の状態である。このままでは、新規エントリを登録できない。このため、ＭＰＵ１１は、処理テーブル１３−１Ａの全エントリのずれ量Δ１〜ΔＭと、今回のずれ量Δｎｅｗの大小関係を比較する。そして、この比較で、今回のずれ量Δｎｅｗが、最小であるかを判断する。ＭＰＵ１１は、処理テーブル１３−１Ａの全エントリのずれ量Δ１〜ΔＭと、今回のずれ量Δｎｅｗの大小関係の比較により、今回のずれ量Δｎｅｗが、最小であると判断すると、処理テーブル１３−１Ａへの登録を行うことなく、ステップＳ６８の通常のライトリトライを実行する。この場合、今回、隣接トラックへの影響の可能性ありと判断された書き直し要求は、実行されない。
【００６８】
（Ｓ６０）一方、ＭＰＵ１１は、処理テーブル１３−１Ａの全エントリのずれ量Δ１〜ΔＭと、今回のずれ量Δｎｅｗの大小関係の比較により、今回のずれ量Δｎｅｗが、最小でないと判断すると、処理テーブル１３−１Ａのずれ量が最小であったエントリを、登録エントリに選択する。
【００６９】
（Ｓ６２）ＭＰＵ１１は、図１０及び図１１に示すように、ステップＳ５６又はＳ６０で選択された登録用エントリに、書き直し対象トラック番号Ｎｎｅｗを、ずれ量Δｎｅｗを上書きする。
【００７０】
（Ｓ６４）ＭＰＵ１１は、バッファメモリ１４の領域を管理するバッファ制御回路１５に、バッファメモリ１４のキャッシュメモリ１４−１に、この書き直し要求の対象範囲のデータが、存在するかを問い合わせる。存在する場合には、ＭＰＵ１１は、処理テーブル１３−１Ａの登録用エントリのキャッシュメモリ１４−１の位置を、キャッシュメモリの位置に登録する。更に、キャッシュメモリ１４−１の当該データの上書き禁止（プロテクト）を設定する。更に、ＭＰＵ１１は、処理テーブル１３−１Ａの登録エントリのキャッシュデータの有無を、有りとセットする。一方、キャッシュメモリ１４−１に、この書き直し要求の対象範囲のデータが、存在しない場合には、ＭＰＵ１１は、処理テーブル１３−１Ａの登録エントリのキャッシュデータの有無を、無しにセットする。
【００７１】
（Ｓ６６）そして、ＭＰＵ１１は、処理テーブル１３−１Ａの登録用エントリの有効フラグを有効にセットする。
【００７２】
（Ｓ６８）ＭＰＵ１１は、オフトラック検出したトラックのライトリトライを実行する。即ち、キャッシュメモリ１４−１から再度、ライトデータを読み出し、そのトラックにライトする。
【００７３】
このように、オフトラック検出した際にライトリトライ時には、隣接トラックへの影響の可能性があっても、このライトリトライと同時に、隣接トラックのリライトを実行せずに、処理テーブル１３−１Ａに、書き直し要求を格納しておく。そして、後述するように、任意のタイミングで、処理テーブル１３−１Ａを参照して、隣接トラックの書き戻し処理を実行する。
【００７４】
又、処理テーブル１３−１から最小のずれ量のエントリを排除する理由は、ずれ量が小さい場合には、隣接トラックへの影響の可能性があっても、当該隣接トラックのオフセットリード等でデータをリードできる場合があり、それより重大な影響のあるエントリを格納するためである。
【００７５】
更に、リトライ範囲の書き直し要求は、リトライで実行できるため、テーブルに登録しない。又、キャッシュメモリにデータが存在するかを予め調べておく。
【００７６】
次に、この処理テーブル１３−１Ａを使用したライトコマンド処理を、図１２、図１３で説明する。
【００７７】
（Ｓ７０）ＭＰＵ１１は、処理テーブル１３−１Ａに、有効な書き直し処理要求のエントリがある場合に、この処理を開始する。
【００７８】
（Ｓ７２）先ず、ＭＰＵ１１は、ライトコマンドを受領したかを判定する。
【００７９】
（Ｓ７４）ＭＰＵ１１は、ライトコマンドを受領していないと判定すると、その他のコマンド要求（リード、診断等）を受領しているかを判定する、ＭＰＵ１１は、その他のコマンドを受領している場合は、その要求コマンドを実行し、ステップＳ７２に戻る。
【００８０】
（Ｓ７６）ＭＰＵ１１は、その他のコマンドも受領していないと判定すると、バックグランドで、書き直し処理を実行する。即ち、ＭＰＵ１１は、ショックセンサー２８の出力から、直前の重度のライトオフトラック発生時の振動が収まっているかを判定する。ＭＰＵ１１は、直前の重度のライトオフトラック発生時の振動が収まっていないと判定すると、ステップＳ７２に戻る。
【００８１】
（Ｓ７８）一方、ＭＰＵ１１は、直前の重度のライトオフトラック発生時の振動が収まっていると判定すると、処理テーブル１３−１Ａを参照して、キャッシュデータ有りの有効エントリがあるかを判定する。キャッシュデータ有りの有効エントリが存在しない場合には、有効エントリから任意のエントリを選択し、書き戻し処理を実施する。例えば、隣接トラックのデータをリードし、リードしたデータをその隣接トラックに書き戻す。逆に、キャッシュデータ有りの有効エントリが存在する場合には、その有効エントリの書き直し処理を行う。即ち、処理テーブル１３−１Ａからキャッシュデータに位置を得て、キャッシュメモリ１４−１のその位置のキャッシュデータを、読み出し、処理テーブル１３−１Ａで指定されたトラックに書き直す。
【００８２】
（Ｓ８０）一方、ステップＳ７２で、ＭＰＵ１１は、ライトコマンドを受領していると判定すると、そのコマンドを処理する前に、書き戻し処理する。即ち、ＭＰＵ１１は、ライトコマンドで指定するトラック領域の隣接トラックを対象とした有効な書き直し要求エントリが、処理テーブル１３−１Ａに存在するかを判定する。即ち、ライトコマンドで指定された書き込みトラック番号と、処理テーブル１３−１Ａの各エントリのトラック番号とを比較して、ライトコマンドで指定するトラック領域の隣接トラックを対象とした有効な書き直し要求エントリが、存在するかを判定する。
【００８３】
ＭＰＵ１１は、ライトコマンドで指定するトラック領域の隣接トラックを対象とした有効な書き直し要求エントリが、処理テーブル１３−１Ａに存在すると判定した場合には、当該エントリの書き戻し処理（図１３参照）を実行し、ステップＳ８２に進む。逆に、ＭＰＵ１１は、ライトコマンドで指定するトラック領域の隣接トラックを対象とした有効な書き直し要求エントリが、処理テーブル１３−１に存在すると判定した場合には、書き直し処理せずに、ステップＳ８２に進む。
【００８４】
（Ｓ８２）次に、ＭＰＵ１１は、処理テーブル１３−１Ａに、ライトコマンドで指定するライト範囲内に、対象範囲が全て含まれる有効な書き直し要求エントリが、存在するかを判定する。即ち、ライトコマンドで指定された書き込みトラック番号と、処理テーブル１３−１の各エントリのトラック番号とを比較して、ライトコマンドで指定するライト範囲内に、対象範囲が全て含まれる有効な書き直し要求エントリが、存在するかを判定する。存在する場合は、当該ライトコマンドのデータで上書きされるため、そのエントリの有効フラグを無効に変更する。即ち、書き直しは、必要ないため、無効とする。
【００８５】
（Ｓ８４）ＭＰＵ１１は、ライトコマンドを実行する、即ち、ライトコマンドで指定するトラックにライトデータを書き込む。
【００８６】
（Ｓ８６）ＭＰＵ１１は、処理テーブル１３−１Ａを参照して、有効な書き直し処理要求が残っているかを判定する。ＭＰＵ１１は、有効な書き直し処理要求が残っている場合には、ステップＳ７２に戻り、残っていなければ、この処理を終了する。
【００８７】
図１３により、図１２の書き直し処理を説明する。
【００８８】
（Ｓ９０）ＭＰＵ１１は、処理テーブル１３−１Ａを参照して、そのエントリが、キャッシュデータ有りの有効エントリであるかを判定する。
【００８９】
（Ｓ９２）逆に、キャッシュデータ有りの有効エントリである場合には、ＭＰＵ１１は、処理テーブル１３−１Ａからキャッシュデータに位置を得て、キャッシュメモリ１４−１のその位置のキャッシュデータを、読み出し、処理テーブル１３−１Ａで指定されたトラックに書き直す。そして、ＭＰＵ１１は、キャッシュメモリ１４−１のそのキャッシュ位置を上書き可能に設定する（プロテクトを外す）。
【００９０】
（Ｓ９４）キャッシュデータ有りの有効エントリでない場合には、書き直し対象の隣接トラックのデータをリードし、リードしたデータをその隣接トラックに書き戻す。
【００９１】
（Ｓ９６）そして、ＭＰＵ１１は、処理テーブル１３−１Ａの当該エントリを無効に設定する。そして、書き直し処理を終了する。
【００９２】
図１３の書き直し処理は、図１２のステップＳ７８の書き直し処理と、ステップＳ８０の書き直し処理とを兼用するため、ステップＳ９０の判断が設けられている。しかしながら、ステップＳ７８の書き直し処理は、実際に実行される処理は、図１３のいずれか一方である。
【００９３】
このように、リトライしたライトコマンドと別のライトコマンドに同期して、ライトコマンドで指定するトラック領域の隣接トラックを、書き直しし、ライトコマンドを実行する。隣接トラックのため、ライトコマンドの実行時間への影響は、小さい。又、ライトコマンドに範囲に含まれる書き直し領域は、特別の書き直しをせず、ライトコマンドの実行により、隣接トラックも上書きされるため、ライトコマンドの実行時間への影響を防止できる。
【００９４】
更に、有効エントリも、コマンドの到来しないバックグランドで、振動が収まった後、書き直しするため、振動が継続した状態での、書き直しを防止できる。しかも、書き直し処理にキャッシュデータを使用する際、該当するキャッシュデータは当該書き直し処理を実施するまで、保持され続けることになり、使用できるキャッシュ領域の減少及び断片化を招く。このため、キャッシュデータを使用した書き直し処理は、キャッシュデータを使用しない書き直し処理に優先して実施し、キャッシュメモリの有効活用を図る。
【００９５】
さらに、書き直し処理要求が登録されているシリンダの隣接シリンダに対してライトを実行する際、書き直し対象シリンダがこれ以上、隣接シリンダのライトに伴う寄せ書きの影響を受けないよう、当該書き直し処理を実施してから当該ライト処理を実施している。
【００９６】
（他の実施の形態）
前述の実施の形態では、データ記憶装置を磁気ディスク装置で説明したが、光ディスク、光磁気ディスク、セクタ単位に記録する他の記憶媒体を使用した記憶装置にも適用できる。更に、インターフェースは、ＡＴＡに限らず、他のインターフェースにも適用できる。
【００９７】
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
【００９８】
尚、本発明は、以下の発明を包含する。
【００９９】
（付記１）回転する記憶媒体に、データのリード及びライトを行うヘッドと、前記記憶媒体の所望トラックに前記ヘッドを位置付けるアクチュエータと、上位からのライトコマンド及びライトデータを受領し、前記ライトデータを、前記ヘッドにより、前記記憶媒体の指定されたトラックにライトするとともに、前記ヘッドによる前記トラックへのライト時に、前記ヘッドが、前記トラックから外れたオフトラックを検出し、前記ライトデータの前記トラックへのライトリトライを実行する制御回路と、少なくとも、対象トラック番号と、前記オフトラック時のヘッドのずれ量とを有する書き直し要求を格納する書き直し要求テーブルとを有し、前記制御回路は、前記オフトラック検出時に、前記ずれ量が所定の閾値より大きいか否かを判定することにより、前記ヘッドのオフトラックによる隣接トラックのデータへの影響の可能性があるか否かを判定し、前記隣接トラックのデータへの影響の可能性があると判定した場合には、前記隣接トラックの書き直し要求を、前記書き直し要求テーブルに格納し、前記ずれ量に基づき、前記ライトリトライとは、別の任意のタイミングで、前記書き直し要求テーブルに格納された前記書き直し要求を実行することを特徴とするデータ記憶装置。
【０１００】
（付記２）前記制御回路は、他のライトコマンドを受領した時に、前記他のライトコマンドの実行前に、前記書き直し要求テーブルに格納された前記書き直し要求を実行することを特徴とする付記１のデータ記憶装置。
【０１０１】
（付記３）前記制御回路は、前記オフトラック要因である振動が収まったかを判定し、前記振動が収まったと判定した時に、前記書き直し要求テーブルに格納された前記書き直し要求を実行することを特徴とする付記１のデータ記憶装置。
【０１０２】
（付記４）前記制御回路は、前記他のライトコマンドを受領した時に、前記ライトコマンドの実行前に、前記書き直し要求テーブルに格納された前記ライトコマンドで指定されたトラックに隣接するトラックに対する前記書き直し要求を実行することを特徴とする付記２のデータ記憶装置。
【０１０３】
（付記５）前記制御回路は、前記他のライトコマンドを受領した時に、前記書き直し要求テーブルに、前記ライトコマンドで指定されたトラックに隣接するトラックに対する前記書き直し要求が存在するかを判定し、前記隣接トラックの書き直し要求が存在する場合に、前記隣接トラックの書き直し要求を実行し、前記隣接トラックの書き直し要求が存在しない場合には、前記オフトラック要因である振動が収まったかを判定し、前記振動が収まったと判定した時に、前記書き直し要求テーブルに格納された前記隣接トラック以外の書き直し要求を実行することを特徴とする付記２のデータ記憶装置。
【０１０４】
（付記６）前記制御回路は、他のライトコマンドを受領した時に、前記書き直し要求テーブルの前記書き直し要求の書き直し領域が、前記他のライトコマンドのライト範囲内であるかを判定し、前記書き直し要求の書き直し領域が、前記他のライトコマンドのライト範囲内であるとの判定に応じて、前記書き直し要求テーブルに格納された前記書き直し要求をリセットすることを特徴とする付記１のデータ記憶装置。
【０１０５】
（付記７）前記書き直し要求テーブルは、少なくとも、対象トラック番号と、前記オフトラック時のヘッドのずれ量とを有する複数の書き直し要求を格納し、前記制御回路は、前記隣接トラックのデータへの影響の可能性があると判定した場合に、前記隣接トラックの書き直し要求の前記ヘッドのずれ量と、前記書き直し要求テーブルに格納された前記書き直し要求のずれ量とを比較し、前記ずれ量が最小である前記書き直し要求を、前記書き直し要求テーブルから削除することを特徴とする付記１のデータ記憶装置。
【０１０６】
（付記８）前記制御回路は、前記隣接トラックのデータへの影響の可能性があると判定した場合には、前記隣接トラックが、前記オフトラックを発生した前記ライトコマンドの対象範囲内であるかを判定し、前記隣接トラックが、前記ライトコマンドの対象範囲内であることの判定に応じて、前記隣接トラックの書き直し要求を、前記書き直し要求テーブルへの格納を禁止することを特徴とする付記１のデータ記憶装置。
【０１０７】
（付記９）前記制御回路は、前記ライトコマンドを受領していないことを判定し、前記ライトコマンドを受領していない場合に、前記書き直し要求テーブルに格納された前記書き直し要求を実行することを特徴とする付記１のデータ記憶装置。
【０１０８】
（付記１０）前記ライトデータを一時格納するキャッシュメモリを更に有し、前記制御回路は、前記書き直し要求テーブルの前記書き直し要求の対象データが前記キャッシュメモリに存在するかを判定し、前記書き直し要求の対象データが、前記キャッシュメモリに存在する場合に、前記キャッシュメモリの対象データを前記隣接トラックにライトして、前記書き直し要求を実行することを特徴とする付記１のデータ記憶装置。
【０１０９】
（付記１１）前記制御回路は、前記隣接トラックのデータへの影響の可能性があると判定した場合には、前記隣接トラックのデータが、キャッシュメモリに存在するかを判定し、存在する場合に、前記キャッシュメモリに存在する識別子を付して、前記書き直し要求を、前記書き直し要求テーブルに格納し、前記ライトリトライとは、別のタイミングで、前記書き直し要求テーブルに格納された前記キャッシュメモリに存在する識別子を有する書き直し要求を優先的に実行することを特徴とする付記１０のデータ記憶装置。
【０１１０】
（付記１２）回転する記憶媒体の所望のトラックに、データのリード及びライトを行うヘッドを位置付け、前記データのリード及びライトを行うデータ記憶装置の隣接トラック書き直し処理方法において、前記ヘッドによる前記トラックへのライト時に、前記ヘッドが、前記トラックから外れたオフトラックを検出するステップと、前記オフトラック検出時に、前記オフトラック時のヘッドのずれ量が所定の閾値より大きいか否かを判定することにより、前記ヘッドのオフトラックによる隣接トラックのデータへの影響の可能性があるか否かを判定するステップと、前記隣接トラックのデータへの影響の可能性があると判定した場合には、少なくとも、対象トラック番号と、前記ヘッドのずれ量とを有する前記隣接トラックの書き直し要求を、書き直し要求テーブルに格納するステップと、前記ライトデータの前記トラックへのライトリトライを実行するステップと、前記ずれ量に基づき、前記ライトリトライとは、別の任意のタイミングで、前記書き直し要求テーブルに格納された前記書き直し要求を実行するステップとを有することを特徴とする隣接トラック書き直し処理方法。
【０１１１】
（付記１３）前記書き直し要求を実行するステップは、他のライトコマンドを受領した時に、前記他のライトコマンドの実行前に、前記書き直し要求テーブルに格納された前記書き直し要求を実行するステップを有することを特徴とする付記１２の隣接トラック書き直し処理方法。
【０１１２】
（付記１４）前記書き直し要求を実行するステップは、前記オフトラック要因である振動が収まったかを判定するステップと、前記振動が収まったと判定した時に、前記書き直し要求テーブルに格納された前記書き直し要求を実行するステップとを有することを特徴とする付記１２の隣接トラック書き直し処理方法。
【０１１３】
（付記１５）前記書き直し要求を実行するステップは、前記他のライトコマンドを受領した時に、前記ライトコマンドの実行前に、前記書き直し要求テーブルに格納された前記ライトコマンドで指定されたトラックに隣接するトラックに対する前記書き直し要求を実行するステップを有することを特徴とする付記１３の隣接トラック書き直し処理方法。
【０１１４】
（付記１６）前記書き直し要求を実行するステップは、前記他のライトコマンドを受領した時に、前記書き直し要求テーブルに、前記ライトコマンドで指定されたトラックに隣接するトラックに対する前記書き直し要求が存在するかを判定するステップと、前記隣接トラックの書き直し要求が存在する場合に、前記隣接トラックの書き直し要求を実行するステップと、前記隣接トラックの書き直し要求が存在しない場合には、前記オフトラック要因である振動が収まったかを判定し、前記振動が収まったと判定した時に、前記書き直し要求テーブルに格納された前記隣接トラック以外の書き直し要求を実行するステップとを有することを特徴とする付記１３の隣接トラック書き直し処理方法。
【０１１５】
（付記１７）前記書き直し要求を実行するステップは、他のライトコマンドを受領した時に、前記書き直し要求テーブルの前記書き直し要求の書き直し領域が、前記他のライトコマンドのライト範囲内であるかを判定するステップと、前記書き直し要求の書き直し領域が、前記他のライトコマンドのライト範囲内であるとの判定に応じて、前記書き直し要求テーブルに格納された前記書き直し要求をリセットするステップとを有することを特徴とする付記１２の隣接トラック書き直し処理方法。
【０１１６】
（付記１８）前記格納ステップは、前記隣接トラックのデータへの影響の可能性があると判定した場合に、前記隣接トラックの書き直し要求の前記ヘッドのずれ量と、前記書き直し要求テーブルに格納された前記書き直し要求のずれ量とを比較し、前記ずれ量が最小である前記書き直し要求を、前記書き直し要求テーブルから削除するステップを有することを特徴とする付記１２の隣接トラック書き直し処理方法。
【０１１７】
（付記１９）前記格納ステップは、前記隣接トラックのデータへの影響の可能性があると判定した場合には、前記隣接トラックが、前記オフトラックを発生した前記ライトコマンドの対象範囲内であるかを判定するステップと、前記隣接トラックが、前記ライトコマンドの対象範囲内であることの判定に応じて、前記隣接トラックの書き直し要求を、前記書き直し要求テーブルへの格納を禁止するステップとを有することを特徴とする付記１２の隣接トラック書き直し処理方法。
【０１１８】
（付記２０）前記書き直し要求を実行するステップは、前記ライトコマンドを受領していないことを判定するステップと、前記ライトコマンドを受領していない場合に、前記書き直し要求テーブルに格納された前記書き直し要求を実行するステップとを有することを特徴とする付記１２の隣接トラック書き直し処理方法。
【０１１９】
（付記２１）前記書き直し要求を実行するステップは、前記書き直し要求テーブルの前記書き直し要求の対象データが、ライトデータを一時格納するキャッシュメモリに存在するかを判定するステップと、前記書き直し要求の対象データが、前記キャッシュメモリに存在する場合に、前記キャッシュメモリの対象データを前記隣接トラックにライトして、前記書き直し要求を実行するステップとを有することを特徴とする付記１２の隣接トラック書き直し処理方法。
【０１２０】
（付記２２）前記格納するステップは、前記隣接トラックのデータへの影響の可能性があると判定した場合には、前記隣接トラックのデータが、キャッシュメモリに存在するかを判定するステップと、存在する場合に、前記キャッシュメモリに存在する識別子を付して、前記書き直し要求を、前記書き直し要求テーブルに格納するステップとを有し、前記書き直し要求を実行するステップは、前記ライトリトライとは、別のタイミングで、前記書き直し要求テーブルに格納された前記キャッシュメモリに存在する識別子を有する書き直し要求を優先的に実行するステップを有することを特徴とする付記２１の隣接トラック書き直し処理方法。
【産業上の利用可能性】
【０１２１】
ライトコマンドにて隣接トラックのデータに影響を与えるオフトラックエラーが発生した際、当該ライトコマンドに付随して、即時書き直し処理を実施せず、書き直しが必要なトラックの情報やオフトラック時のずれ量等の書き直し要求を保持しておき、ライトリトライと別のタイミングで、保持した書き直し要求を実行するため、オフトラック要因となった振動が収まるのを待ってから書き直し処理を実施でき、書き直し処理時のオフトラックエラーの発生、ないし寄せ書きの発生を抑止でき、また書き直し処理をバックグラウンドで行うことで当該ライトコマンドの実行時間の延伸を軽減し、書き直し処理によるドライブの性能低下を軽減させることができる。
【図面の簡単な説明】
【０１２２】
【図１】本発明の一実施の形態のデータ記憶装置の構成図である。
【図２】本発明の一実施の形態のオフトラック及び隣接トラックの寄せ書きの説明図である。
【図３】本発明の第１の実施の形態のライトリトライ処理のフロー図である。
【図４】図１及び図３の書き直し要求テーブルの説明図である。
【図５】図４の書き直し要求テーブルへの図３の書き直し要求格納処理の説明図である。
【図６】図４の書き直し要求テーブルのフル時の図３の書き直し要求格納処理の説明図である。
【図７】本発明の第１の実施の形態の書き直し処理のフロー図である。
【図８】本発明の第２の実施の形態のライトリトライ処理のフロー図である。
【図９】図１及び図８の書き直し要求テーブルの説明図である。
【図１０】図９の書き直し要求テーブルへの図８の書き直し要求格納処理の説明図である。
【図１１】図９の書き直し要求テーブルのフル時の図８の書き直し要求格納処理の説明図である。
【図１２】本発明の第２の実施の形態の書き直し処理のフロー図である。
【図１３】図１２の書き直し処理フロー図である。
【符号の説明】
【０１２３】
１０  ディスク装置
１１  ＭＰＵ（処理ユニット）
２６  ＨＤＣ
１３  メモリ（ＲＯＭ／ＲＡＭ）
１３−１，１３−１Ａ  書き直し要求テーブル
１４  データバッファ
１４−１  キャッシュメモリ
１５  データバッファ制御回路
２４  リードチャネル回路
１７  バス
１８  ヘッドＩＣ
１９  記憶媒体（磁気ディスク）
２０  スピンドルモータ
２２  アクチュエータ（ＶＣＭ）
２５  ヘッド（磁気ヘッド）
【図１】
0005058060.tif 000002
【図２】
0005058060.tif 000003
【図３】
0005058060.tif 000004
【図４】
0005058060.tif 000005
【図５】
0005058060.tif 000006
【図６】
0005058060.tif 000007
【図７】
0005058060.tif 000008
【図８】
0005058060.tif 000009
【図９】
0005058060.tif 000010
【図１０】
0005058060.tif 000011
【図１１】
0005058060.tif 000012
【図１２】
0005058060.tif 000013
【図１３】
0005058060.tif 000014