(57)【要約】【課題】ホストへのリード・データの転送遅延を防ぐことができる。【解決手段】本発明の一形態において、ＨＤＣ／ＭＰＵ２３は、ホスト５１からのリード／ライト・コマンドに対応した処理において発生したエラーに対して、エラー回復処理を行う。エラー回復処理の実行中に、新たなコンティニュアス・モードのリード・コマンドをホストから受信すると、設定条件に従って実行中のエラー回復処理を中断する。ＨＤＤは、リード・コマンドが指定するアドレスのデータを磁気ディスクから読み出し、その読み出したデータをホストに転送する。【選択図】図４
2010027105.tif 000002
【特許請求の範囲】
【請求項１】
ディスク・ドライブ装置におけるエラー回復処理の方法であって、
ホストからのディスクへのアクセスを伴うコマンドに対応した処理において発生したエラーに対して、エラー回復処理を開始し、
前記エラー回復処理の実行中に、新たなリード・コマンドを前記ホストから受信し、
設定条件に従って前記エラー回復処理を中断して、前記リード・コマンドが指定するアドレスのデータをディスクから読み出し、
前記読み出したデータを前記ホストに転送する、
方法。
【請求項２】
前記エラー回復処理において、テーブルに登録された複数のエラー回復処理ステップを順次実行し、
二つのエラー回復ステップの間において前記エラー回復処理を中断する、
請求項１に記載の方法。
【請求項３】
受信したリード・コマンドのコマンド・タイプを参照し、
前記コマンド・タイプに基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１に記載の方法。
【請求項４】
前記エラー回復処理を中断する条件は、リード・データのためのバッファ空き容量が前記リード・コマンドのデータに足りていることを含む、
請求項１に記載の方法。
【請求項５】
前記エラー回復処理において、テーブルに登録された複数のエラー回復処理ステップを順次実行し、
次に実行するエラー回復処理ステップの内容に基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１に記載の方法。
【請求項６】
前記エラー回復処理を中断しないと判定する条件は、前記次に実行するエラー回復処理ステップが、その前のエラー回復処理ステップと同様にターゲット・トラックのフォローイングを維持してデータ書き込みを試みるステップである、ことを含む、
請求項５に記載の方法。
【請求項７】
前記エラー回復処理のコマンド・タイプを参照し、
前記コマンド・タイプに基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１に記載の方法。
【請求項８】
前記エラー回復処理において、テーブルに登録された複数のエラー回復処理ステップを順次実行し、
実行済みのエラー回復処理ステップ数に基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１に記載の方法。
【請求項９】
前記エラー回復処理のコマンドのタイム・アウトまでの時間に基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１に記載の方法。
【請求項１０】
前記エラー回復処理のコマンドはライト・コマンドであり、
ライト・データのためのバッファの空き容量及び／もしくはリード・データのためのバッファ空き容量に基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１に記載の方法。
【請求項１１】
データを記憶するディスクを回転するモータと、
前記ディスクにアクセスするヘッドと、
前記ヘッドを移動して前記ディスクの所望の半径位置に前記ヘッドを移動する移動機構と、
ホストからの前記ディスクへのアクセスを伴うコマンドに対応した処理において発生したエラーに対するエラー回復処理の実行中に新たなリード・コマンドを前記ホストから受信すると、設定条件に従って前記エラー回復処理を中断して、前記リード・コマンドが指定するアドレスのデータを前記ヘッド及び前記移動機構を制御して前記ディスクから読み出し前記ホストに転送する、コントローラと、
を有するディスク・ドライブ装置。
【請求項１２】
前記コントローラは、前記エラー回復処理において、テーブルに登録された複数のエラー回復処理ステップを順次実行し、二つのエラー回復ステップの間において前記エラー回復処理を中断する、
請求項１１に記載のディスク・ドライブ装置。
【請求項１３】
前記コントローラは、受信したリード・コマンドのコマンド・タイプを参照し、前記コマンド・タイプに基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１１に記載のディスク・ドライブ装置。
【請求項１４】
前記エラー回復処理を中断する条件は、リード・データのためのバッファ空き容量が前記リード・コマンドのデータに足りていることを含む、
請求項１１に記載のディスク・ドライブ装置。
【請求項１５】
前記コントローラは、前記エラー回復処理においてテーブルに登録された複数のエラー回復処理ステップを順次実行し、次に実行するエラー回復処理ステップの内容に基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１１に記載のディスク・ドライブ装置。
【請求項１６】
前記エラー回復処理を中断しないと判定する条件は、前記次に実行するエラー回復処理ステップが、その前のエラー回復処理ステップと同様にターゲット・トラックのフォローイングを維持してデータ書き込みを試みるステップである、ことを含む、
請求項１５に記載のディスク・ドライブ装置。
【請求項１７】
前記コントローラは、前記エラー回復処理のコマンド・タイプを参照し、前記コマンド・タイプに基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１１に記載のディスク・ドライブ装置。
【請求項１８】
前記コントローラは、前記エラー回復処理においてテーブルに登録された複数のエラー回復処理ステップを順次実行し、実行済みのエラー回復処理ステップ数に基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１１に記載のディスク・ドライブ装置。
【請求項１９】
前記コントローラは、前記エラー回復処理のコマンドのタイム・アウトまでの時間に基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１１に記載のディスク・ドライブ装置。
【請求項２０】
前記エラー回復処理のコマンドはライト・コマンドであり、
前記コントローラは、ライト・データのためのバッファの空き容量及び／もしくはリード・データのためのバッファ空き容量に基づいて前記エラー回復処理を中断するか否かを判定する、
請求項１１に記載のディスク・ドライブ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスク・ドライブ装置及びそのエラー回復処理の方法に関し、特に、エラー回復処理中に新たなコマンドを受信した場合の処理に関する。
【背景技術】
【０００２】
ディスク・ドライブ装置として、光ディスク、光磁気ディスク、あるいはフレキシブル磁気ディスクなどの様々な態様のメディアを使用する装置が知られているが、その中で、ハードディスク・ドライブ（ＨＤＤ）は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システムあるいは携帯電話など、ＨＤＤの用途は、その優れた特性により益々拡大している。
【０００３】
ＨＤＤは、ホストからのリード・コマンドに応答して、規定時間内にデータをホストに転送することが要求される。特に、ＡＶ機器向けのＨＤＤは、短い規定時間内にデータを読み出す必要がある。ＡＶ機器においては、映像や音声の停止は障害として目、耳によりユーザに認識されやすいため、それを避けることが強く要求される。そのため、ＨＤＤからホスト（ＡＶ機器内のメイン・コントローラ）に対して遅滞なくリード・データが転送されることが要求される。
【０００４】
そこで、多くのＡＶ機器において、映像／音声データのリードのためにストリーム・コマンドが使用される。ストリーム・コマンドは、通常のＡＴＡコマンドと異なり、コンティニュアス・モードを指定することができる。このコンティニュアス・モードにおいて、ＨＤＤは、リード・エラーが発生してもその回復処理を行わず、次のセクタのリードに移る。ホストは、リード・コマンド内のフィールドでモード設定を行うことができる。ＨＤＤは、コンティニュアス・モードを示すリード・コマンドに対しては、エラー回復処理を省略してリード処理を行う。
【０００５】
エラーが発生したセクタについては、正確なデータがホストに転送されないために、多少の画像飛びや音声飛びが発生する。しかし、ＨＤＤはコンティニュアス・モードにおいては、リード・コマンドに対応した処理においてエラーが発生しても、エラー回復処理のために磁気ディスクからのデータ読み出し及びリード・データ転送を停止しないため、ホストに対してリード・データが遅滞なく転送され、ＡＶ機器においても最も避けるべき事象である映像／音声の静止を効果的に防ぐことができる。
【０００６】
一方、システム領域のリード／ライトについては、誤ったデータがリード／ライトされることは、ＡＶ機器全体の故障につながる。従って、ＨＤＤは、そのようなデータのリード／ライト処理においてエラーが発生した場合には、そのエラーに対応したエラー回復処理を行い、正確なデータのリード／ライトを行うことが必要であり、一般に、ホストはコンティニュアス・モードを指定しない。あるいは、ＡＶ機器においても、映像／音声データのライト処理にためには、一般に、ホストはエラー回復処理を伴うモードをＨＤＤに対して指示する。従って、ＨＤＤは、映像／音声データのライトにおいてエラーが発生した場合、そのエラー回復処理を実行する。
【０００７】
ＨＤＤは、複数のエラー回復ステップが登録されているテーブルに従って上記エラー回復処理を行う。ＨＤＤは、エラーが回復されるまで各ステップを順次実行していくため、実行ステップによってエラーが回復しないために、エラー回復に多くの時間がかかることがある。このような場合、ホストとＨＤＤとの間の必要な転送レートが確保されない可能性がある。そのため、例えば特許文献１は、必要な転送レートを保証するために、エラー回復処理におけるリトライ回数の上限値を変更することを提案している。
【特許文献１】特開２００１−８４７１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献１の技術によれば、ＨＤＤは、個々のコマンドに対するエラー回復処理に要する時間を制限することにより、コマンド発行間隔内にそのコマンドの処理を終了することができる。しかし、上記技術は、ＨＤＤが受信したコマンドが転送レート保障コマンドである場合に、そのコマンドの処理におけるエラー回復処理の処理時間の上限を設定する。上記特許文献においては、特定のコマンドの実行に対する他のコマンドのエラー回復処理の処理時間の影響は考慮されていない。
【０００９】
例えば、ライト処理においてエラーが発生してエラー回復処理を行っている間に、ＨＤＤはコンティニュアス・モードのリード・コマンドを受信する場合がある。このとき、コンティニュアス・モードのリード・コマンドは、実行中のライト・コマンドのエラー回復処理の終了を待たなければならない。エラー回復処理に多くの時間を要する場合、コンティニュアス・モードのリード・コマンドの実行が遅れ、ユーザが視聴している映像や音声が静止してしまうことがありうる。従って、他のコマンドの処理によるリード・データの転送遅延をより確実に防ぐ技術が望まれる。
【課題を解決するための手段】
【００１０】
本発明の一態様は、ディスク・ドライブ装置におけるエラー回復処理の方法である。この方法は、ホストからのディスクへのアクセスを伴うコマンドに対応した処理において発生したエラーに対して、エラー回復処理を開始する。前記エラー回復処理の実行中に、新たなリード・コマンドを前記ホストから受信する。設定条件に従って前記エラー回復処理を中断して、前記リード・コマンドが指定するアドレスのデータをディスクから読み出す。前記読み出したデータを前記ホストに転送する。これにより、必要なデータの転送遅延を抑制することができる。
【００１１】
好ましくは、前記エラー回復処理において、テーブルに登録された複数のエラー回復処理ステップを順次実行し、二つのエラー回復ステップの間において前記エラー回復処理を中断する。これにより、エラー回復ステップが中断されず、全体的な処理効率の低下を避けることができる。
好ましくは、受信したリード・コマンドのコマンド・タイプを参照し、前記コマンド・タイプに基づいて前記エラー回復処理を中断するか否かを判定する。これにより、転送遅延を避けることを必要とされるコマンドの遅延を避けると共に、エラー回復処理の中断に伴う処理効率の低下を避けることができる。
好ましくは、前記エラー回復処理を中断する条件は、リード・データのためのバッファ空き容量が前記リード・コマンドのデータに足りていることを含む。これにより、無駄な中断による処理効率の低下を避けることができる。
【００１２】
好ましくは、前記エラー回復処理において、テーブルに登録された複数のエラー回復処理ステップを順次実行し、次に実行するエラー回復処理ステップの内容に基づいて前記エラー回復処理を中断するか否かを判定する。これにより、中断処理を行う場合において、エラー回復率を上げることができる。さらに、前記エラー回復処理を中断しないと判定する条件は、前記次に実行するエラー回復処理ステップが、その前のエラー回復処理ステップと同様にターゲット・トラックのフォローイングを維持してデータ書き込みを試みるステップであることを含む、ことが好ましい。このようなステップは、連続処理によりエラー回復の可能性を高めることができるからである。
【００１３】
好ましくは、前記エラー回復処理のコマンド・タイプを参照し、前記コマンド・タイプに基づいて前記エラー回復処理を中断するか否かを判定する。これにより、優先すべきコマンドのエラー回復処理を先に終了することができる。
好ましくは、前記エラー回復処理において、テーブルに登録された複数のエラー回復処理ステップを順次実行し、実行済みのエラー回復処理ステップ数に基づいて前記エラー回復処理を中断するか否かを判定する。これにより、データ転送遅延を抑制しながら、エラー回復の可能性を高めることができる。
【００１４】
好ましくは、前記エラー回復処理のコマンドのタイム・アウトまでの時間に基づいて前記エラー回復処理を中断するか否かを判定する。これにより、より確実にタイム・アウトを避けることができる。
好ましい例において、前記エラー回復処理のコマンドはライト・コマンドであり、ライト・データのためのバッファの空き容量及び／もしくはリード・データのためのバッファ空き容量に基づいて前記エラー回復処理を中断するか否かを判定する。これにより、無駄な中断による処理効率の低下を避けることができる。
【００１５】
本発明の他の態様に係るディスク・ドライブ装置は、データを記憶するディスクを回転するモータと、前記ディスクにアクセスするヘッドと、前記ヘッドを移動して前記ディスクの所望の半径位置に前記ヘッドを移動する移動機構と、ホストからの前記ディスクへのアクセスを伴うコマンドに対応した処理において発生したエラーに対するエラー回復処理の実行中に新たなリード・コマンドを前記ホストから受信すると、設定条件に従って前記エラー回復処理を中断して、前記リード・コマンドが指定するアドレスのデータを前記ヘッド及び前記移動機構を制御して前記ディスクから読み出し前記ホストに転送する、コントローラと、を有する。これにより、必要なデータの転送遅延を抑制することができる。
【発明の効果】
【００１６】
本発明によれば、ホストへのリード・データの転送遅延を防ぐことができる。
【発明を実施するための最良の形態】
【００１７】
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、必要に応じて重複説明は省略されている。以下においては、ディスク・ドライブ装置の一例であるハードディスク・ドライブ（ＨＤＤ）について説明する。
【００１８】
本形態のＨＤＤは、所定の条件に従って、アクセスを伴うコマンド（リード・コマンドもしくはライト・コマンド）に対する処理のエラー回復処理（ＥＲＰ）を中断し、エラー回復処理の実行中に受信したリード・コマンドが指定するアドレスのデータを磁気ディスクから読み出してホストに転送する。これにより、リード・コマンドが指定するリード・データのホストへの転送が遅延することを防止する。リード・データの転送後、ＨＤＤは、中断していたＥＲＰを再開する。本形態のＥＲＰについて詳細に説明する前に、まず、ＨＤＤの全体構成を説明する。
【００１９】
図１は、ＨＤＤ１の全体構成を模式的に示すブロック図である。ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を備えている。回路基板２０上には、リード・ライト・チャネル（ＲＷチャネル）２１、モータ・ドライバ・ユニット２２、ハードディスク・コントローラ（ＨＤＣ）とＭＰＵの集積回路（ＨＤＣ／ＭＰＵ）２３及び半導体メモリのＲＡＭ２４などの各回路要素を有している。エンクロージャ１０内において、スピンドル・モータ（ＳＰＭ）１４は所定の角速度で磁気ディスク１１を回転する。磁気ディスク１１は、データを記憶するディスクである。ＨＤＣ／ＭＰＵ２３からの制御データに従って、モータ・ドライバ・ユニット２２がＳＰＭ１４を駆動する。
【００２０】
磁気ディスク１１にアクセス（リードもしくはライト）するヘッド・スライダ１２は、磁気ディスク上を浮上するスライダと、スライダに固定され磁気信号と電気信号との間の変換（データのリード・ライト）を行うヘッド素子部とを備えている。各ヘッド・スライダ１２はアクチュエータ１６の先端部に固定されている。
【００２１】
アクチュエータ１６はボイス・コイル・モータ（ＶＣＭ）１５に連結され、回動軸を中心に回動することによって、ヘッド・スライダ１２を回転する磁気ディスク１１上においてその半径方向に移動する。モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従ってＶＣＭ１５を駆動する。アーム電子回路（ＡＥ）１３は、ＨＤＣ／ＭＰＵ２３からの制御データに従って複数のヘッド素子部１２の中から磁気ディスク１１にアクセスするヘッド・スライダ１２を選択し、リード／ライト信号の増幅を行う。
【００２２】
ＲＷチャネル２１は、リード処理において、ＡＥ１３から取得したリード信号からサーボ・データ及びユーザ・データを抽出し、デコード処理を行う。デコード処理されたデータは、ＨＤＣ／ＭＰＵ２３に供給される。また、ＲＷチャネル２１は、ライト処理において、ＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、さらに、コード変調されたデータをライト信号に変換してＡＥ１３に供給する。
【００２３】
ＨＤＣ／ＭＰＵ２３において、ＨＤＣはロジック回路であり、ＭＰＵはＲＡＭ２４にロードされたファームウェアに従って動作する。ＨＤＣ／ＭＰＵ２３はコントローラの一例であり、ヘッド・ポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、ＨＤＤ１の全体制御を実行する。特に本形態において、ＨＤＣ／ＭＰＵ２３は、リードＥＲＰ及びライトＥＲＰの実行制御にその特徴を有している。
【００２４】
本形態において、ＨＤＣ／ＭＰＵ２３は、所定の条件に従って、実行中のリード処理及び／もしくはライト処理のエラー回復処理を中断してそのエラー回復処理の実行中に受信したリード・コマンドの処理を開始する。これにより、迅速な転送が要求されるリード・データを、ホスト５１に遅滞なく転送することができる。例えば、ＡＶ機器において、ホスト５１は、その機器内のメイン・コントローラである。ＨＤＣ／ＭＰＵ２３がエラー回復処理を中断する条件のいくつかの好ましい態様が存在する。以下において、これらの好ましい態様について詳細に説明する。以下において、リード・コマンドという言葉は、異なるタイプのリード・コマンドを包含し、ライト・コマンドについても同様である。また、コマンド・タイプという言葉は、リード・コマンドとライト・コマンドの双方のコマンド・タイプを包含する。
【００２５】
ＥＲＰ実行中にリード・コマンドを受信した場合に常にＥＲＰを中断することは、迅速な転送を要求されないリード・データの転送のために現在実行中の処理を中断する、あるいは、他の条件からリード・データの転送よりもＥＲＰを優先すべき場合にもＥＲＰを中断することになり、ＨＤＤ１の処理効率を大きく低下させることになる。従って、ＨＤＣ／ＭＰＵ２３は、予め設定されている条件が満足する場合にＥＲＰを中断する。
【００２６】
ＨＤＣ／ＭＰＵ２３がＥＲＰの中断を判断する条件項目として、好ましい複数の条件項目が存在する。これらの条件項目から選択する、あるいは、これらの条件項目のいくつかを適切に組み合わせることによって、ＨＤＤ１は、それが実装される装置に適切な処理を行うことができる。ＥＲＰ中断の条件項目は、受信したリード・コマンドのコマンド・タイプ、実行中のＥＲＰが対応するコマンドあるいはそのコマンドのタイム・アウトまでの時間、次に行うＥＲＰステップや実行済みＥＲＰステップ数などの実行中のＥＲＰの状態、バッファの状態などの項目を含む。
【００２７】
ＨＤＣ／ＭＰＵ２３は、設定されている一つあるいは複数のＥＲＰ中断条件項目について判定を行い、全ての条件項目が満足される場合にＥＲＰを中断する。以下において、好ましい条件項目を具体的に説明するが、ＨＤＤ１の設計においては、各位項目を独立して使用する、また、適切な組み合わせを選択することができる。
【００２８】
複数の好ましい条件項目の組み合わせが存在するが、その中で、まず、ライトＥＲＰを実行中に特定のリード・コマンドを受信した場合に、ライトＥＲＰを中断する処理を説明する。特定のリード・コマンドの好ましい例は、コンティニュアス・モードを指定するリード・コマンドである。このリード・コマンドは、ＡＶデータに有用なストリーム・コマンドの一つである。コンティニュアス・モードにおいて、ＨＤＣ／ＭＰＵ２３は、リード処理において発生したエラーを無視し、エラー回復処理を行うことなく磁気ディスク１１からのリード・データの読み出しとホスト５１への転送を続行する。
【００２９】
図２は、リード・ストリーム・コマンドのフォーマットの一例を示している。リード・コマンドは、コマンドの種類を示すコマンド・タイプ、データを読み出す開始アドレスであるスタートＬＢＡ（Logical Block Address）、そしてデータ長のそれぞれを示す各フィールドを有している。ＨＤＣ／ＭＰＵ２３は、コマンド・タイプを参照することで、そのリード・コマンドがコンティニュアス・モードを指定しているか否かを特定することができる。
【００３０】
ＨＤＣ／ＭＰＵ２３は、リード・コマンドが指定するデータがキャッシュ・ヒットしている場合は、エラー回復処理を中断することなく、リード・データのホスト５１への転送とエラー回復処理とを並行して行う。キャッシュ・ヒットしている場合はバッファ内のデータを転送すればよいので、ＨＤＣ／ＭＰＵ２３は磁気ディスク１１にアクセスする必要がなく、ライトＥＲＰとリード・データ転送を並行して行うことができる。
【００３１】
ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰをライトＥＲＰテーブルに従って実行する。ライトＥＲＰテーブルは、エラー回復のための複数のライトＥＲＰステップから構成されている。ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰテーブルに登録されている優先度の高いステップから順次実行していく。
【００３２】
好ましくは、ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰステップの途中で処理を中断することなく、ライトＥＲＰステップの間においてライトＥＲＰを中断する。ホスト５１はバッファを有しており、リード・データの転送を完了すべきタイミングまでに相応の猶予時間が存在する。従って、実行中のＥＲＰステップを終了させることで、ライト・エラーからの回復確率を上げ、全体の処理効率の低下を避けることが好ましい。
【００３３】
さらに、好ましい態様として、ＨＤＣ／ＭＰＵ２３は、次に実行するライトＥＲＰステップの内容に応じて、ライトＥＲＰを中断するか否かを決定する。特定のライトＥＲＰステップが次のステップである場合、ＨＤＣ／ＭＰＵ２３はライトＥＲＰを中断することなく、そのライトＥＲＰステップを実行する。例えば、ライトＥＲＰステップの中には、連続して実行することが好ましいステップが存在する。ＨＤＣ／ＭＰＵ２３は、そのような予め設定されている特定のライトＥＲＰステップを、新たなリード・コマンドの実行よりも優先して実行し、ライト・エラーからの回復確率を上げ、ＨＤＤ１全体の処理効率の低下を避けることが好ましい。
【００３４】
これらの条件においてライトＥＲＰ（ＥＲＰの中断）を行う処理の流れを、図３のフローチャートを参照して説明する。また、また、図４のブロック図を合わせて参照する。ＨＤＣ／ＭＰＵ２３は、ホスト５１からのライト・コマンドに従い磁気ディスク１１へのデータ書き込みを行う。ライト・キャッシュ機能はイネーブルされており、ＨＤＣ／ＭＰＵ２３は、ホスト５１からライト・データをＲＡＭ２４のバッファ２４２に格納すると、ホスト５１にライト完了の通知を行う。
【００３５】
ライト処理中にエラーが発生すると、ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰを開始する（Ｓ１１）。ＨＤＣ／ＭＰＵ２３は、ＲＡＭ２４に格納されているライトＥＲＰテーブル２４１を参照し、優先度の高いステップから順次実行する。ライトＥＲＰ実行中にホスト５１からリード・コマンドを受信すると（Ｓ１２）、ＨＤＣ／ＭＰＵ２３は、そのリード・コマンドがキャッシュ・ヒットしているか判定する（Ｓ１３）。キャッシュ・ヒットしている場合（Ｓ１３におけるＹ）、ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰを中断することなく続行する（Ｓ１６）。また、ライトＥＲＰと並行して、ＨＤＣ／ＭＰＵ２３は、バッファ２４２内にあるデータをホスト５１に転送する。
【００３６】
リード・コマンドの指定アドレスのデータが、キャッシュ・ヒットしてない場合（Ｓ１３におけるＮ）、ＨＤＣ／ＭＰＵ２３はコマンドのタイプを特定する（Ｓ１４）。図２を参照して説明したように、ＨＤＣ／ＭＰＵ２３はコマンド内のフィールドを参照することで、コマンドのタイプを特定することができる。受信したリード・コマンドがリード・コンティニュアス・モードのリード・コマンドでない場合（Ｓ１４におけるＮ）、ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰを中断することなく続行する（Ｓ１６）。ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰが終了した後に、そのリード・コマンドに応じて磁気ディスク１１からデータを読み出す（Ｓ１７）。
【００３７】
受信したリード・コマンドがリード・コンティニュアス・モードのリード・コマンドである場合（Ｓ１４におけるＹ）、ＨＤＣ／ＭＰＵ２３は、実行中のライトＥＲＰステップを完了した後、次のライトＥＲＰステップが、ライトＥＲＰを続行すべきステップであるか判定する。（Ｓ１５）。ライトＥＲＰを続行する特定のＥＲＰステップは、予め設定されており、ＨＤＣ／ＭＰＵ２３は、次のＥＲＰステップがＥＲＰ続行のステップ・グループ内に含まれているかを判定する。
【００３８】
次のライトＥＲＰステップが上記特定のＥＲＰステップである場合（Ｓ１５におけるＹ）、ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰを中断することなく、そのライトＥＲＰステップの実行を開始する（Ｓ１８）。そのライトＥＲＰステップが終了すると、ＨＤＣ／ＭＰＵ２３は、上記工程（Ｓ１５）に戻り、同様の工程を繰り返す。
【００３９】
次のライトＥＲＰステップが上記特定のＥＲＰステップでない場合（Ｓ１５におけるＮ）、ＨＤＣ／ＭＰＵ２３はライトＥＲＰを中断し（Ｓ１９）、必要なパラメータをＲＡＭ２４に格納する（Ｓ２０）。具体的には、ＲＡＭ２４に待避させるパラメータ・セットは、ＲＷチャネル２１のパラメータ、ライト・コマンドが指定するアドレス、そして最後に終了したライトＥＲＰステップを特定する情報などを含んでいる。その後、ＨＤＣ／ＭＰＵ２３は、受信したリード・コマンドに対応したデータを磁気ディスク１１から読み出し、ホスト５１に転送する（Ｓ１７）。
【００４０】
リード・コマンドの処理（Ｓ１７）が終了すると、ライトＥＲＰは中断されたままであるので（Ｓ２３におけるＹ）、ＨＤＣ／ＭＰＵ２３は、ＲＡＭ２４からライトＥＲＰのパラメータ・セットを取得し（Ｓ２１）、ＨＤＣ／ＭＰＵ２３は中断したライトＥＲＰを再開する（Ｓ２２）。つまり、ＨＤＣ／ＭＰＵ２３は、中断前に最後に終了したライトＥＲＰステップの次のステップから、ライトＥＲＰを再開する。このように、ＨＤＣ／ＭＰＵ２３は、中断ポイントからライトＥＲＰを再開することが好ましい。ライトＥＲＰを初めからやり直すと、同じステップを何度も繰り返す可能性があり、エラー回復までの所要時間が長くなる、と考えられるからである。
【００４１】
上記処理フローにライトＥＲＰ中断の条件項目として使用した、ライトＥＲＰを続行することが好ましいライトＥＲＰステップについて具体的に説明する。典型的には、ライトＥＲＰで実行される複数ＥＲＰステップの内、いくつかは処理内容の異なるステップであり、また、いくつかは同一のステップである。例えば、ライトＥＲＰテーブルは５の異なるライトＥＲＰステップを有し、それら５つのライトＥＲＰステップは、それぞれが２回ずつ実行するように登録されている。つまり、ライトＥＲＰテーブルには、全部で１０のライトＥＲＰステップが登録されている。
【００４２】
具体的なライトＥＲＰステップは、ＨＤＤの設計によって異なる。いくつかのライトＥＲＰステップを例示すると、あるライトＥＲＰステップは、ＲＷチャネル２１のパラメータを初期状態にリセットして書き込みを試みる。また、他のライトＥＲＰステップは、ターゲット・トラックとトラック番号（シリンダ番号）は同じだが記録面（ヘッド・スライダ）が異なるトラックにシークした後、ターゲット・トラックに再シークして書き込みを試みる。ライトＥＲＰテーブルに登録されている同一処理のライトＥＲＰステップは、一つのみであることもあり、また、そのライトＥＲＰステップが複数ステップ登録されていることもある。複数ステップ登録されている場合、そられは連続している、あるいは分散して登録されていることがある。
【００４３】
種々のライトＥＲＰステップの中で、連続して実行することでエラー回復の確率を高めることができるステップが存在する。これらは、ターゲット・トラックのフォローイングを維持しながら（別トラックへシークすることなく）、データの書き込みを試みる処理である。例えば、同一処理内容の連続するライトＥＲＰステップのグループであって、そのステップの処理内容は、ターゲット・トラックのフォローイングを維持しつつデータ書き込みを試みる場合である。
【００４４】
このような複数ステップの実行においては、エラー回復の確率を高めるために、シーク処理を挟まずにフォローイングを続けてデータ書き込みの試みを繰り返すことが好ましい。つまり、次に実行するライトＥＲＰステップが一つ前のＥＲＰステップと同一処理内容であって、そのステップ内でターゲット・トラックのフォローイングが維持される場合、ＨＤＣ／ＭＰＵ２３は、次に実行するライトＥＲＰステップを続けて行うことが好ましい。ライトＥＲＰの中断は、シーク処理を伴うため、そのようなステップを実行しているときは、ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰを中断することなく、それを続行することが好ましい。
【００４５】
このようなライトＥＲＰステップの好ましい例は、サーボ・セクタのバーストを検出することができなくてもそれを無視してターゲット・フォローイングとデータ書き込みを行う（試みる）ステップ、サーボ検出のためのＲＷチャネル２１のパラメータを振りながらターゲット・フォローイングとデータの書き込みを試みるステップ、グレイ・コード（サーボ・トラック（サーボ・シリンダ）ＩＤ）を読み出すことができなくてもそれを無視してターゲット・フォローイングとデータの書き込みを試みるステップ、そして、セクタ番号を読み出すことができなくてもそれを無視してターゲット・フォローイングとデータの書き込みを試みるステップ、などである。ＲＷチャネル２１のパラメータを変更して書き込みを試みるステップは、各ステップにおけるＨＤＤ１の設定は異なるが、処理内容は同一である。
【００４６】
広く知られているように、磁気ディスク１１上には、半径方向に連続して形成された複数のサーボ・トラックが形成されており、各サーボ・トラックは、円周方向において離間した複数のサーボ・セクタから構成されている。各サーボ・セクタの間に、ユーザ・データがデータ・セクタ単で記録される。各サーボ・セクタは、サーボ・トラックを識別すしグレイ・コードで形成さされたサーボ・トラック（サーボ・シリンダ）ＩＤ、サーボ・セクタを識別するセクタ番号、サーボ・トラック内のより詳細な位置を特定するためのバースト・パターンを含む。
【００４７】
ＨＤＣ／ＭＰＵ２３は、上記のライトＥＲＰステップをそれぞれ複数回繰り返す。リード・コマンドを受信した後に開始する最初のライトＥＲＰステップが、これらのライトＥＲＰステップの２回目以降のステップである場合、ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰを中断することなく、そのステップを開始する。リード・コマンドを受信した後に開始する最初のライトＥＲＰステップが、これらと異なるライトＥＲＰステップである、あるいはこれらのライトＥＲステップのうちの一つであるが、連続する複数ステップの最初のステップである場合は、ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰを中断して、リード・コマンドに対応した処理を行う。
【００４８】
これに対して、リード・コマンドを受信したら、そのステップを開始することなくライトＥＲＰを中断することが好ましいステップとして、例えば、ターゲット・トラックとトラック番号（シリンダ番号）は同じだが記録面（ヘッド・スライダ）が異なるトラックにシークした後にターゲット・トラックに再シークして書き込みを試みるステップは、シーク処理を含むため、その前のステップと連続して行う必要はない。あるいは、ホストから受信したライト・データにエラーが存在するため、そのエラー訂正を行うステップは、ディスクへの書き込みとは直接に係らないため、その前のステップと連続して行う必要はない。この他、他のトラックへのシークを行い、そこでダミー・ライトを行った後に再度ターゲット・トラックでの書き込みを試みるステップも中断すべきステップの一つである。
【００４９】
図３のフローチャートを参照して説明した好ましい例は、次に実行するライトＥＲＰステップに基づいて、ライトＥＲＰの中断／続行を決定している。ＨＤＣ／ＭＰＵ２３は、これと異なる他のライトＥＲＰの条件項目（必要条件項目）、あるいは、これに追加された他のライトＥＲＰの条件項目に基づいて中断／続行を決定することができる。好ましい例において、ＨＤＣ／ＭＰＵ２３は、上記条件項目に加え、ライトＥＲＰステップの実行済ステップ数に基づいてライトＥＲＰの中断／続行を決定する。ライトＥＲＰステップの実行済ステップ数が予め設定されている特定数に達していることを、ライトＥＲＰ中断の必要条件とする。
【００５０】
具体的には、ＨＤＣ／ＭＰＵ２３は、優先度の高い特定数のライトＥＲＰステップを終了するまではライトＥＲＰを続行し、特定数のライトＥＲＰステップが終了した後にライトＥＲＰを中断する。これにより、ライト・エラーからの回復を早めて、電源遮断によるデータ消失の可能性を低減する。例えば、ＨＤＣ／ＭＰＵ２３は、最初から１０番目のライトＥＲＰステップを終了するまでは、コンティニュアス・モードのリード・コマンドを受信してもライトＥＲＰを中断しない。この特定数は、例えばエラー回復率の点から、設計により適切な値を選択して、ＨＤＣ／ＭＰＵ２３のファームウェアに設定する。
【００５１】
具体的な処理においては、例えば、ＨＤＣ／ＭＰＵ２３は、図３のフローチャートにおいて、次のライトＥＲＰステップの内容（種類）について判定する（Ｓ１５）前に、最後に終了したライトＥＲＰステップのステップ順位を参照し、その値が特定数に達しているか判定する。
【００５２】
ステップ順位が特定数に達していない場合、ＨＤＣ／ＭＰＵ２３は次のライトＥＲＰステップについて判定する（Ｓ１５）ことなく、次のライトＥＲＰステップを実行する。ステップ順位が特定数に達している場合、ＨＤＣ／ＭＰＵ２３は次のライトＥＲＰステップについて判定する（Ｓ１５）。実行済みライトＥＲＰステップ数の判定のために次のライトＥＲＰステップの順位を使用する場合は、その順位が特定数に１を加えた値に達しているか否か判定すればよい。
【００５３】
他の好ましい条件項目は、実行中のライトＥＲＰが対応するライト・コマンドのコマンド・タイプである。ＨＤＣ／ＭＰＵ２３は、ライト・コマンドのコマンド・タイプに従って、ライトＥＲＰの中断処理を変更する。例えば、ライト・コマンドが特定のタイプである場合のみライトＥＲＰを中断し、他のタイプのライトＥＲＰ実行中にいずれのリード・コマンドを受信しても、ライトＥＲＰを中断することなく続行する。
【００５４】
好ましい例において、ホスト５１は、ＡＶデータの読み出し／書き込みにストリーム・コマンドを使用し、システム・データ（ＡＶデータ以外のシステム制御のためのデータ）の読み出し／書き込みにＡＴＡコマンドを使用する。ＨＤＣ／ＭＰＵ２３は、ライトＥＲＰのコマンド・タイプがストリーム・コマンドである場合にのみ、ライトＥＲＰを中断する。
【００５５】
図３を参照して説明した例において、ＨＤＣ／ＭＰＵ２３は、実行中のライトＥＲＰがストリーム・コマンドのライトＥＲＰであれば、図３のフローチャートに従った処理を行い、ＡＴＡコマンド（例えばWRITE DMA）であれば、図３のフローチャートに従った処理を開始することなく、ライトＥＲＰを続行する。これにより、電源遮断によりシステムに必須のデータが書き込まれない危険性を低減することができる。
【００５６】
上述のように、好ましいライトＥＲＰの中断条件としては、ライトＥＲＰに関する条件のほか、受信したリード・コマンドについての条件がある。図３を参照して説明した処理において、ＨＤＣ／ＭＰＵ２３は、リード・ストリーム・コマンドにおいて、コンティニュアス・モードである場合に、ライトＥＲＰの中断を行う。このように、全てのリード・コマンドではなく、転送遅延を防ぐことが特に必要なコマンドに対してライトＥＲＰを中断することで、リード・データ転送遅延を避けながら、処理効率が低下することを抑えることができる。なお、設計によって、いずれのリード・コマンドを受信した場合にも、図３のフローチャートに従った処理をしてもよい。
【００５７】
リード・コマンドに関する好ましい条件項目は、リード・コマンドのコマンド・タイプのほかに、リード・データのためのバッファ空き容量がある。ＨＤＣ／ＭＰＵ２３は、ホスト５１から受信したリード・データを、いったん、ＲＡＭ２４内のバッファ２４２に格納する。
リード・データのためのバッファ空き容量が、そのデータ長よりも小さい場合には、リード・データを受信することはできないため、ライトＥＲＰを中断しても意味がない。ＨＤＣ／ＭＰＵ２３は、リード・コマンドを受信すると、指定アドレスのデータ長とバッファ空き容量を比較し、データ長が空き容量以下の場合に、ライトＥＲＰの中断について判定を行う。
【００５８】
ＨＤＣ／ＭＰＵ２３は、例えば、図３のフローチャートの処理を開始する前にデータ長と空き容量との関係について判定を行う。データ長が空き容量以下の場合に、ＨＤＣ／ＭＰＵ２３は図３のフローチャートの処理を開始し、データ長が空き容量よりも大きい場合にはライトＥＲＰを続行する。なお、ＨＤＤ１は、ライト・データとリード・データを同一のバッファ（シングル・バッファ）に格納してもよく、あるいは、リード・データとライト・データとを異なるバッファ（デュアル・バッファ）に格納してもよい。バッファは、典型的には、リング・バッファである。
【００５９】
ライトＥＲＰの中断の条件項目として、ＨＤＣ／ＭＰＵ２３は、バッファ内のライト・データの容量を使用することができる。シングル・バッファにおいて、ライト・データが多いと、リード・バッファのための容量が少なくなってしまう。また、デュアル・バッファにおいても、新たなライト・データを受信することができず、ホスト５１を待たせることになる。
【００６０】
そこで、好ましい例において、ＨＤＣ／ＭＰＵ２３は、バッファ内のライト・データ容量を使用して、ライトＥＲＰ中断の有無を判定する。例えば、バッファ内のライト・データ容量が特定の容量を超える場合には、ＨＤＣ／ＭＰＵ２３はライトＥＲＰを続行する。バッファ内のライト・データ容量が特定の容量を超えていない場合、ＨＤＣ／ＭＰＵ２３は図３のフローチャートの処理を開始する。
【００６１】
これまで説明した処理において、ＨＤＤ１のライト・キャッシュ機能がＯＮである。これにより、ＨＤＣ／ＭＰＵ２３は、ライト・コマンド実行中であっても、次のコマンドを受信することができる。この他、コマンド・キューイングをサポートするＨＤＤ１に本発明を適用することができる。コマンド・キューイングを使用すると、ＨＤＣ／ＭＰＵ２３は、リード・コマンド及びライト・コマンドを完了する前に、次のコマンドをホスト５１から受信することができる。このようなＨＤＤ１は、ライトＥＲＰの他、所定条件においてリードＥＲＰを中断するようにしてもよい。
【００６２】
好ましい例において、ＨＤＣ／ＭＰＵ２３は、ＡＴＡコマンド（例えば、READ DMA）のリードＥＲＰを実行中にコンティニュアス・モードのリード・ストリーム・コマンドを受信した場合、所定の条件において、リードＥＲＰを中断し、新たに受信したリード・コマンドの処理を行う。リードＥＲＰ中断の条件項目も、ライトＥＲＰと同様に、受信したリード・コマンドのコマンド・タイプ、実行中のＥＲＰが対応するコマンドあるいはそのコマンドのタイム・アウトまでの時間、次に行うＥＲＰステップや実行済みＥＲＰステップ数などの実行中のＥＲＰの状態、バッファの状態などの項目を含む。
【００６３】
この他、ホスト５１によりタイム・アウトが設定されている場合、ＨＤＣ／ＭＰＵ２３は、タイム・アウトをＥＲＰ中断の条件項目として使用することが好ましい。ＨＤＣ／ＭＰＵ２３は、規定時間が経過する（タイム・アウト）前にコマンド処理を完了しなければならない。そのため、タイム・アウトまでの時間が少ない場合、ＨＤＣ／ＭＰＵ２３は、ＥＲＰを中断することなく、その処理を続行することが好ましい。
【００６４】
例えば、ＨＤＣ／ＭＰＵ２３は、ＥＲＰを行っているコマンドのタイム・アウトまでの時間が設定値よりも小さい場合には、他の条件が満足していていてもＥＲＰを中断することなく、その処理を続行する。これにより、他のコマンドの処理を行うことで現在実行中のコマンドがタイム・アウトとなることを避けることができる。
【００６５】
以上、本発明について好ましい態様を使用して説明したが、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態においては、ＨＤＤを例にとって説明したが、光ディスクや光磁気ディスクなど他のディスクを使用するディスク・ドライブ装置、あるいはそのディスクを着脱可能なディスク・ドライブ装置に本発明を適用することができる。
【図面の簡単な説明】
【００６６】
【図１】本実施形態にかかるハードディスク・ドライブの全体構成を模式的に示すブロック図である。
【図２】本実施の形態において、ストリーム・コマンドのフォーマットを模式的に示す図である。
【図３】本実施の形態において、ライトＥＲＰを中断する処理の流れを示すフローチャートである。
【図４】本実施の形態に係るライトＥＲＰの実行に関連する構成要素を模式的に示すブロック図である。
【符号の説明】
【００６７】
１  ハードディスク・ドライブ、１０  筺体、１１  磁気ディスク
１２  ヘッド・スライダ、１３  アーム・エレクトロニクス、１４  スピンドル・モータ
１５  ボイス・コイル・モータ、１６  アクチュエータ、２０  回路基板
２１  ＲＷチャネル、２２  モータ・ドライバ・ユニット
２３  ハードディスク・コントローラ／ＭＰＵ、２４  ＲＡＭ
２４１  ＥＲＰテーブル、２４２  バッファ
【図１】
2010027105.tif 000003
【図２】
2010027105.tif 000004
【図３】
2010027105.tif 000005
【図４】
2010027105.tif 000006