(57)【要約】【課題】所定のコマンドに対してリアサイン元アドレスのデータをホストに送るディスク・ドライブ装置において、データ・レートを維持すると共にデータの正確性を高める。【解決手段】本発明の一実施形態のＨＤＤ１は、リアサインされているデータ・セクタが存在する場合、リアサイン先データ・セクタに加えて、リアサイン元データ・セクタにデータを書き込むための処理を行う。リアサイン元データ・セクタにデータを書き込むことによって、コンティニュアス・リードにおいて転送されるデータの正確性を高めることができる。リアサイン元データ・セクタへの書き込み処理におけるＥＲＰテーブルの登録実行ステップ数は、リアサイン先データ・セクタのＥＲＰテーブルの登録実行ステップ数よりも少ない。【選択図】図４
2008276818.tif 000002
【特許請求の範囲】
【請求項１】
ディスク・ドライブ装置におけるディスクへのアクセス方法であって、
リアサイン元アドレスへのライト・コマンドに応じて、そのリアサイン元アドレスに対応するリアサイン先アドレスとそのリアサイン元アドレスとにデータを書き込むための処理を行い、
通常のリード・コマンドに対してリアサイン先アドレスのデータを送り、予め定められたリード・コマンドに対してリアサイン元アドレスのデータを送る、方法。
【請求項２】
前記リアサイン元アドレスへのデータ書き込みにおいてエラーが発生した場合に、エラー回復処理を省略して前記リアサイン元アドレスへのデータ書き込みのための処理を終了する、
請求項１に記載の方法。
【請求項３】
前記リアサイン元アドレスへのデータ書き込みに対応したエラー回復処理の最大ステップ数は、前記リアサイン先アドレスへのデータ書き込みに対応したエラー回復処理の最大ステップ数よりも少ない、
請求項１に記載の方法。
【請求項４】
前記リアサイン元アドレスのリアサイン理由に応じて、前記リアサイン元アドレスにデータを書き込むための処理を変更する、
請求項１に記載の方法。
【請求項５】
前記リアサイン理由がライト・エラーである場合、前記リアサイン元アドレスへデータ書き込みのための処理におけるエラー回復処理を省略する、あるいは、そのエラー回復処理の最大ステップ数を、前記リアサイン理由がリード・エラーである場合における最大ステップ数よりも少なくする、
請求項４に記載の方法。
【請求項６】
前記ライト・コマンドの種類に応じて、前記リアサイン元アドレスへのデータ書き込みのための処理の実行の有無を決定する、
請求項１に記載の方法。
【請求項７】
前記リアサイン元アドレスへのライト・コマンドは複数のアドレスを含み、
前記複数のアドレスが含むリアサイン元アドレス数に応じて、前記リアサイン元アドレスへデータ書き込みの有無を決定する、あるいは、そのエラー回復処理の最大ステップ数を変更する、
請求項１に記載の方法。
【請求項８】
ディスクにアクセスするヘッドと、
前記ヘッドを前記ディスク上で移動する移動機構と、
通常のリード・コマンドに対して前記ヘッドが読み出したリアサイン先アドレスのデータを送り、予め定められたリード・コマンドに対して前記ヘッドが読み出したリアサイン元アドレスのデータを送るコントローラと、を有し、
前記コントローラは、リアサイン元アドレスへのライト・コマンドに応じて、そのリアサイン元アドレスに対応するリアサイン先アドレスとそのリアサイン元アドレスとにデータを書き込むための処理をする、
ディスク・ドライブ装置。
【請求項９】
前記コントローラは、前記リアサイン元アドレスへのデータ書き込みにおいてエラーが発生した場合に、エラー回復処理を省略して前記リアサイン元アドレスへのデータ書き込みのための処理を終了する、
請求項８に記載のディスク・ドライブ装置。
【請求項１０】
前記コントローラは、前記リアサイン元アドレスへのデータ書き込みに対応したエラー回復処理の最大ステップ数は、前記リアサイン先アドレスへのデータ書き込みに対応したエラー回復処理の最大ステップ数よりも少ない、
請求項８に記載のディスク・ドライブ装置。
【請求項１１】
前記コントローラは、前記リアサイン元アドレスのリアサイン理由に応じて、前記リアサイン元アドレスにデータを書き込むための処理を変更する、
請求項８に記載のディスク・ドライブ装置。
【請求項１２】
前記コントローラは、前記リアサイン理由がライト・エラーである場合、前記リアサイン元アドレスへデータ書き込みにおけるエラー回復処理を省略する、あるいは、そのエラー回復処理の最大ステップ数を、前記リアサイン理由がリード・エラーである場合における最大ステップ数よりも少なくする、
請求項１１に記載のディスク・ドライブ装置。
【請求項１３】
前記コントローラは、前記リアサイン元アドレスへライト・コマンドの種類に応じて、そのリアサイン元アドレスへのデータ書き込みのための処理の実行の有無を決定する、
請求項８に記載のディスク・ドライブ装置。
【請求項１４】
前記リアサイン元アドレスへのライト・コマンドは複数のアドレスを含み、
前記コントローラは、前記複数のアドレスが含むリアサイン元アドレス数に応じて、前記リアサイン元アドレスへデータ書き込みのための処理の実行の有無を決定する、あるいは、そのエラー回復処理の最大ステップ数を変更する、
請求項８に記載のディスク・ドライブ装置。
【請求項１５】
ディスクにアクセスするヘッドと、
前記ヘッドを移動する移動機構と、
前記移動機構を制御するコントローラと、を有し、
前記コントローラは、通常のリード・コマンドに対して、前記ヘッドを使用してリアサイン先アドレスのデータを読み出し、さらに、予め定められたリード・コマンドに指定されたアドレスに含まれるリアサイン元アドレスの数に基づいて、前記リアサイン元アドレスのデータを読み出すか、リアサイン先アドレスのデータを読み出すかを決定する、
を有するディスク・ドライブ装置。
【請求項１６】
前記リアサイン元アドレスの数は、前記指定されたアドレスにおいて、連続するリアサイン元アドレスの最大数であり、
前記コントローラは、前記連続するリアサイン元アドレスの最大数が基準を越える場合に、前記ヘッドを使用してリアサイン先アドレスのデータを読み出す、
請求項１５に記載のディスク・ドライブ装置。
【請求項１７】
前記リアサイン元アドレスの数は、前記指定されたアドレスが含むリアサイン元アドレスの総数であり、
前記コントローラは、前記総数が基準を越える場合に、前記ヘッドを使用してリアサイン先アドレスのデータを読み出す、
請求項１５に記載のディスク・ドライブ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスク・ドライブ装置及びそのディスクへのアクセス方法に関し、特に、特定のリード・コマンドにリアサイン元アドレスのデータをホストに送るディスク・ドライブ装置における制御に関する。
【背景技術】
【０００２】
ディスク・ドライブ装置として、光ディスク、光磁気ディスク、あるいはフレキシブル磁気ディスクなどの様々な態様のディスクを使用する装置が知られているが、その中で、ハードディスク・ドライブ（ＨＤＤ）は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、携帯電話、あるいはデジタル・カメラなどで使用されるリムーバブルメモリなど、ＨＤＤの用途は、その優れた特性により益々拡大している。
【０００３】
ＨＤＤで使用される磁気ディスクは、同心円状に形成された複数のデータ・トラックを有しており、各データ・トラックは複数のデータ・セクタが記録されている。また、磁気ディスク上には、円周方向に離間して複数のサーボ・データが記録されている。揺動するアクチュエータに支持されたヘッド・スライダのヘッド素子部が、サーボ・データのアドレス情報に従って所望のデータ・セクタにアクセスすることによって、データ・セクタへのデータ書き込み及びデータ・セクタからのデータ読み出しを行うことができる。
【０００４】
記録面上のデータ・セクタが欠陥セクタであり、データの書き込みもしくは読み出しを行うことができない場合、そのセクタは他のセクタにリアサインされる。つまり、リアサイン元である欠陥セクタへホストからのアクセス（リードもしくはライト）がある場合、ＨＤＤは欠陥セクタと対応づけられたリアサイン先のセクタにアクセスする。これによって、ホストのアドレス管理を要することなく、ＨＤＤ内で欠陥セクタの使用を禁止することができる。
【０００５】
近年のＰＣアプリケーションやＨＤＤの用途範囲の拡大に伴い、ＨＤＤにＡＶデータを格納することが多くなっている。このため、ＡＶデータなどの連続するデータに対応したストリーム・コマンドが定義されている。ＡＶデータの再生においては、わずかなデータの誤り（正確性）よりも、データの連続性（転送速度）が優先される。このため、データの読み出しあるいは書き込みにおいてエラーが発生した場合にも、エラー回復処理を開始することなく次のセクタへのアクセスを行うオプションが規定されている。これを、コンティニュアス・リード、あるいはコンティニュアス・ライトと呼ぶ。
【０００６】
ＡＶデータのように、ホストから連続セクタへのアクセス要求がある場合、リアサイン先アドレスへのアクセスは、リアサイン元アドレスへのアクセスよりも多くの処理時間を必要とする。これは、リアサイン先のセクタは、リアサイン元セクタから離れた位置に存在するからである。そのため、ＡＶコマンドのアクセスにおいて、リアサインされているセクタが存在しても、そのリアサイン先セクタではなく、リアサイン元セクタをそのままアクセスする技術が知られている（例えば、特許文献１を参照）。これによって、ＡＶデータを要求されている一定の速度で転送することができる。
【特許文献１】特開２００４−７０９７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記従来技術のように、リアサイン元セクタのデータを読み出すことによって、ＡＶデータの転送レートと連続性とを維持することができる。しかし、データ・セクタがリアサインされている場合、新たなデータはリアサイン先セクタに書き込まれ、リアサイン元セクタのデータは更新されることがない。このため、ＨＤＤは、ＡＶコマンドに対して、常に誤ったデータをホストに送ることになる。データの正確性よりも転送速度が優先されるモードにおいても、より正確なデータをホストに転送できることが好ましい。また、ＡＶコマンドに指定されている複数データ・セクタ内に多くのリアサインされたデータ・セクタが含まれる場合、ホストに転送されるデータの正確性が大きく損なわれることになる。
【課題を解決するための手段】
【０００８】
本発明の一態様は、ディスク・ドライブ装置におけるディスクへのアクセス方法である。この方法は、リアサイン元アドレスへのライト・コマンドに応じて、そのリアサイン元アドレスに対応するリアサイン先アドレスとそのリアサイン元アドレスとにデータを書き込むための処理をする。通常のリード・コマンドに対してリアサイン先アドレスのデータを送り、予め定められたリード・コマンドに対してリアサイン元アドレスのデータを送る。リアサイン元アドレスにデータを書き込むための処理をすることで、データの正確性を高めることができる。この態様は、所定条件が成立する場合にのみリアサイン元アドレスにデータを書き込むための処理をする方法を含む。また、データを書き込むための処理はエラーなどのためにディスクにデータを書き込まない場合を含む。
【０００９】
好ましい一例において、前記リアサイン元アドレスへのデータ書き込みにおいてエラーが発生した場合に、エラー回復処理を省略して前記リアサイン元アドレスへのデータ書き込みのための処理を終了する。エラー回復処理を省略することで、パフォーマンスの低下を抑えることができる。
【００１０】
好ましい一例において、前記リアサイン元アドレスへのデータ書き込みに対応したエラー回復処理の最大ステップ数は、前記リアサイン先アドレスへのデータ書き込みに対応したエラー回復処理の最大ステップ数よりも少ない。これによって、データの正確性とパフォーマンスの両立を図ることができる。
【００１１】
好ましい一例において、前記リアサイン元アドレスのリアサイン理由に応じて、前記リアサイン元アドレスにデータを書き込むための処理を変更する。さらに、前記リアサイン理由がライト・エラーである場合、前記リアサイン元アドレスへデータ書き込みにおけるエラー回復処理を省略する、あるいは、そのエラー回復処理の最大ステップ数を、前記リアサイン理由がリード・エラーである場合における最大ステップ数よりも少なくすることが好ましい。これによって、データの正確性とパフォーマンスの両立を図ることができる。
【００１２】
好ましい一例において、前記リアサイン元アドレスへライト・コマンドの種類に応じて、そのリアサイン元アドレスへのデータ書き込みのための処理の実行の有無を決定する。これによって、データの正確性とパフォーマンスの両立を図ることができる。
【００１３】
好ましい一例において、前記リアサイン元アドレスへのライト・コマンドは複数のアドレスを含み、前記複数のアドレスが含むリアサイン元アドレス数に応じて、前記リアサイン元アドレスへデータ書き込みの有無を決定する、あるいは、そのエラー回復処理の最大ステップ数を変更する。これによって、データの正確性とパフォーマンスの両立を図ることができる。
【００１４】
本発明の他の態様に係るディスク・ドライブ装置は、ディスクにアクセスするヘッドと、前記ヘッドを前記ディスク上で移動する移動機構と、通常のリード・コマンドに対して前記ヘッドが読み出したリアサイン先アドレスのデータを送り、予め定められたリード・コマンドに対して前記ヘッドが読み出したリアサイン元アドレスのデータを送るコントローラとを有している。コントローラは、リアサイン元アドレスへのライト・コマンドに応じて、そのリアサイン元アドレスに対応するリアサイン先アドレスとそのリアサイン元アドレスとにデータを書き込むための処理をする。リアサイン元アドレスにデータを書き込むための処理をすることで、データの正確性を高めることができる。この態様は、所定条件が成立する場合にのみリアサイン元アドレスにデータを書き込むための処理をする装置を含む。また、データを書き込むための処理はエラーなどのためにディスクにデータを書き込まない場合を含む。
【００１５】
本発明の他の態様に係るディスク・ドライブ装置は、ディスクにアクセスするヘッドと、前記ヘッドを移動する移動機構と、前記移動機構を制御するコントローラとを有している。前記コントローラは、通常のリード・コマンドに対して、前記ヘッドを使用してリアサイン先アドレスのデータを読み出し、さらに、予め定められたリード・コマンドに指定されたアドレスに含まれるリアサイン元アドレスの数に基づいて、前記リアサイン元アドレスのデータを読み出すか、リアサイン先アドレスのデータを読み出すかを決定する。リアサイン元アドレスの数に基づいて、前記リアサイン元アドレスのデータを読み出すか、リアサイン先アドレスのデータを読み出すかを決定することで、データの正確性と転送レートとの両立を図ることができる。
【００１６】
好ましい一例において、前記リアサイン元アドレスの数は、前記指定されたアドレスにおいて、連続するリアサイン元アドレスの最大数であり、前記コントローラは、前記連続するリアサイン元アドレスの最大数が基準を越える場合に、前記ヘッドを使用してリアサイン先アドレスのデータを読み出す。あるいは、前記リアサイン元アドレスの数は、前記指定されたアドレスが含むリアサイン元アドレスの総数であり、前記コントローラは、前記総数が基準を越える場合に、前記ヘッドを使用してリアサイン先アドレスのデータを読み出す。これらによって、より適正な判定をすることができる。
【発明の効果】
【００１７】
本発明によれは、所定のコマンドに対してリアサイン元アドレスのデータをホストに送るディスク・ドライブ装置において、必要なデータ・レートを維持すると共に、データの正確性を高めることができる。
【発明を実施するための最良の形態】
【００１８】
以下に、本発明を適用した好適な実施形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、必要に応じて重複説明は省略されている。以下においては、ディスク・ドライブ装置の一例であるハードディスク・ドライブ（ＨＤＤ）を例として、本発明の実施形態を説明する。本形態のＨＤＤは、リード・コマンドが指定しているアドレスがリアサイン元データ・セクタを含む場合、通常のリード・コマンドに対してはリアサイン先のデータ・セクタをアクセスし、所定のリード・コマンドに対してはリアサイン先データ・セクタではなく、リアサイン元データ・セクタにアクセスする。
【００１９】
まず、ＨＤＤの全体構成を説明する。図１は、ＨＤＤ１の全体構成を模式的に示すブロック図である。ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を備えている。回路基板２０上には、リード・ライト・チャネル（ＲＷチャネル）２１、モータ・ドライバ・ユニット２２、ハードディスク・コントローラ（ＨＤＣ）とＭＰＵの集積回路（ＨＤＣ／ＭＰＵ）２３及び半導体メモリのＲＡＭ２４などの各回路を有している。エンクロージャ１０内において、スピンドル・モータ（ＳＰＭ）１４は所定の角速度で磁気ディスク１１を回転する。磁気ディスク１１は、データを記憶するディスクである。ＨＤＣ／ＭＰＵ２３からの制御データに従って、モータ・ドライバ・ユニット２２がＳＰＭ１４を駆動する。
【００２０】
各ヘッド・スライダ１２は、磁気ディスク上を浮上するスライダと、スライダに固定され磁気信号と電気信号との間の変換（データの読み書き）を行うヘッド素子部とを備えている。各ヘッド・スライダ１２はアクチュエータ１６の先端部に固定されている。アクチュエータ１６はボイス・コイル・モータ（ＶＣＭ）１５に連結され、回動軸を中心に回動することによって、ヘッド・スライダ１２を回転する磁気ディスク１１上においてその半径方向に移動する。モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従ってＶＣＭ１５を駆動する。アーム電子回路（ＡＥ：Arm Electronics）１３は、ＨＤＣ／ＭＰＵ２３からの制御データに従って複数のヘッド素子部１２の中から磁気ディスク１１にアクセス（リードもしくはライト）するヘッド・スライダ１２を選択し、リード／ライト信号の増幅を行う。
【００２１】
ＲＷチャネル２１は、リード処理において、ＡＥ１３から取得したリード信号からサーボ・データ及びユーザ・データを抽出し、デコード処理を行う。デコード処理されたデータは、ＨＤＣ／ＭＰＵ２３に供給される。また、ＲＷチャネル２１は、ライト処理において、ＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、さらに、コード変調されたデータをライト信号に変換してＡＥ１３に供給する。ＨＤＣ／ＭＰＵ２３において、ＨＤＣはロジック回路であり、ＭＰＵはＲＡＭ２４にロードされたファーム・ウェアに従って動作する。ＨＤＤ１の起動に伴い、ＲＡＭ２４には、制御及びデータ処理に必要とされるデータが磁気ディスク１１あるいはＲＯＭ（不図示）からロードされる。ＨＤＣ／ＭＰＵ２３はコントローラの一例であり、ヘッド・ポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、ＨＤＤ１の全体制御を実行する。
【００２２】
ＨＤＣ／ＭＰＵ２３は、ＲＷチャネル２１から取得した磁気ディスク１１からのリード・データを、ホスト５１に伝送する。磁気ディスク１１からのリード・データは、ＲＡＭ２４内のリード・バッファに一時的に格納された後、ＨＤＣ／ＭＰＵ２３を介してホスト５１に転送される。また、ホスト５１からのライト・データは、ＨＤＣ／ＭＰＵ２３を介して、ＲＡＭ２４内のライト・バッファに一時的に格納され、その後、所定のタイミングでＨＤＣ／ＭＰＵ２３を介して磁気ディスク１１に転送される。本形態のＨＤＣ／ＭＰＵ２３は、特に、磁気ディスク１１へのデータ書き込み回数に応じたデータ再書き込み処理を制御する。
【００２３】
以下において、本形態のＨＤＤ１における磁気ディスクへのアクセス制御について具体的に説明する。なお、アクセスは、磁気ディスク１１からの読み出しと書き込みの上位概念である。本形態のＨＤＤ１は、ＡＶデータなどのためのストリーム・コマンドに対応している。ホスト５１が、ストリーム・リード・コマンドに対しては連続アクセスすることを指示している場合、ＨＤＤ１は、ＥＣＣエラーを無視してホスト５１にデータを転送する。本形態のＨＤＤ１は、さらに、連続アクセスを指定されたストリーム・リード・コマンドに対して、リアサイン先アドレスのデータ・セクタではなく、リアサイン元アドレスのデータ・セクタを読み出す。本明細書においては、この連続読み出しの機能をリード・コンティニュアスと呼ぶ。
【００２４】
ホスト５１は、例えば、ストリーム・リード・コマンド内のフィールドがリード・コンティニュアスをイネーブル設定する。ＨＤＤ１は、そのストリーム・リード・コマンドが指定するアドレス内において、リアサイン先データ・セクタではなく、リアサイン元データ・セクタを読み出す。
【００２５】
具体的には、図２のフローチャートに示すように、ＨＤＣ／ＭＰＵ２３は、リード・コマンドをホストから受信すると（Ｓ１１）、そのリード・コマンドがリード・コンティニュアスを指定しているコマンドであるか決定する（Ｓ１２）。受信したリード・コマンドがストリーム・コマンドであり、ホスト５１からの設定コマンドあるいはそのリード・コマンドによってリード・コンティニュアス機能がイネーブル設定されている場合（Ｓ１２におけるＹ）、ＨＤＣ／ＭＰＵ２３はリード・コンティニュアスの処理を行う。具体的には、ＨＤＣ／ＭＰＵ２３は磁気ディスク１１からのデータ読み出しにおいて、ＥＣＣエラーを無視し、さらに、リアサインされているデータ・セクタについて、リアサイン先ではなくリアサイン元のデータ・セクタを読み出し、そのデータをホスト５１に転送する（Ｓ１３）。
【００２６】
受信したリード・コマンドがストリーム・リード・コマンドではない、あるいはリード・コンティニュアスがディスエーブル設定である場合（Ｓ１２におけるＮ）、ＨＤＣ／ＭＰＵ２３は通常の処理として磁気ディスク１１からデータを読み出す。つまり、ＥＣＣエラーが発生した場合には、オフラインのエラー訂正あるいはエラー回復処理を行い、また、リアサインされたデータ・セクタが存在する場合は、リアサイン先データ・セクタを読み出す（Ｓ１４）。このように、予め設定されているリード・コマンドに対して、リアサイン元データ・セクタを読み出すことによって、データ転送の連続性及び転送レートを維持することができる。
【００２７】
本形態のＨＤＤ１は、リアサインされているデータ・セクタが存在する場合、リアサイン先データ・セクタに加えて、リアサイン元データ・セクタにデータを書き込むための処理（エラーにより磁気ディスク１１に書き込みしない場合を含む）を行う。リアサイン元データ・セクタにデータを書き込むことによって、コンティニュアス・リードにおいて転送されるデータの正確性を高めることができる。ＨＤＤ１は、リアサイン先データ・セクタとリアサイン元データ・セクタのそれぞれの書き込みのための処理を同様に行うことができる。ここで、書き込みのための処理とは、磁気ディスク１１への実際の磁気データの書き込みの他、エラーが発生した場合の訂正処理や回復処理などを含む処理である。
【００２８】
しかし、リアサイン元データ・セクタは、何らかの問題がある欠陥セクタであることが通常である。そのため、リアサイン元データ・セクタへデータを書き込むことができない、あるいは、エラー発生によりデータ書き込みに多くの時間を要する蓋然性が高い。これにより、ＨＤＤ１のパフォーマンスが低下する恐れがある。そこで、リアサイン先データ・セクタとリアサイン元データ・セクタとの間において、データ書き込みのための処理を異なるものとすることが好ましい。好ましい例において、ＨＤＤ１は、エラーが発生した場合のエラー回復処理を異なる方法で行う。
【００２９】
ＨＤＣ／ＭＰＵ２３が、エラー回復処理を制御する。具体的には、図３のブロック図に示すように、ＨＤＣ／ＭＰＵ２３は、ＲＡＭ２４上のＥＲＰテーブルを参照して、エラー回復処理を行う。ＨＤＤ１は、リアサイン先データ・セクタへの書き込みのためのリアサイン先用ＥＲＰテーブル２４１と、リアサイン元データ・セクタへの書き込みのためのリアサイン元用ＥＲＰテーブル２４２とを有している。リアサイン先データ・セクタへの書き込み処理においてエラーが発生した場合、ＨＤＣ／ＭＰＵ２３は、リアサイン先用ＥＲＰテーブル２４１を参照し、リアサイン元データ・セクタへの書き込み処理においてエラーが発生した場合はリアサイン元用ＥＲＰテーブル２４２を参照する。
【００３０】
ＥＲＰテーブル２４１、２４２は、エラー回復のためのステップを登録している。具体的には、同一条件での書き込みのリトライ・ステップ、ＲＷチャネル２１のパラメータを変更したリトライ・ステップなどである。ＨＤＣ／ＭＰＵ２３は、エラー回復するまで、あるいは最後のＥＲＰステップまで、優先度の高いＥＲＰステップから順次実行する。好ましい態様において、リアサイン元用ＥＲＰテーブル２４２の最大実行ステップ数は、リアサイン先用ＥＲＰテーブル２４１の最大実行ステップ数よりも小さい。
【００３１】
最大ＥＲＰステップ数は、実際に実行されうる最初から最後のＥＲＰステップまでのステップ数である。例えば、リアサイン先用ＥＲＰテーブル２４１の最大実行ステップ数を１２８とし、リアサイン元用ＥＲＰテーブル２４２の実行ステップ数を６４とする。このように、リアサイン元用ＥＲＰテーブル２４２の実行ステップ数を小さくすることによって、リアサイン元データ・セクタへ書き込みのための処理に多くの時間が使用されることを避け、パフォーマンスの低下を抑制することができる。
【００３２】
図４のフローチャートを参照して、異なるＥＲＰテーブルを参照する具体的な処理方法を説明する。ＨＤＣ／ＭＰＵ２３がホスト５１からライト・コマンドを受信すると（Ｓ２１）、指定アドレスへのデータ書き込みを開始する。指定アドレスの中にリアサインされているデータ・セクタが存在する場合、ＨＤＣ／ＭＰＵ２３はリアサイン先アドレスのデータ・セクタへの書き込み処理を開始する（Ｓ２２）。そのデータ・セクタの書込み処理においてエラーが発生した場合（Ｓ２３におけるＹ）、ＨＤＣ／ＭＰＵ２３はリアサイン先用ＥＲＰテーブル２４１を参照して（Ｓ２４）、エラー回復処理を行う（Ｓ２５）。エラー回復して、あるいはエラーが発生せず（Ｓ２３におけるＮ）、そのデータ・セクタに正常にデータを書き込むことができると、そのデータ・セクタへの書き込み処理は終了する。最後のＥＲＰステップまでにエラー回復しない場合は、ＨＤＣ／ＭＰＵ２３は、リアサイン処理などの、通常の処理を行う。
【００３３】
ＨＤＣ／ＭＰＵ２３は、リアサイン元アドレスへもデータ書き込みを試みる。リアサイン元アドレスへの書き込み処理を開始し（Ｓ２６）、エラーが発生すると（Ｓ２７におけるＹ）、ＨＤＣ／ＭＰＵ２３は、リアサイン元用ＥＲＰテーブル２４２を選択する（Ｓ２８）。リアサイン元用ＥＲＰテーブル２４２に従ってエラー回復処理を行い（Ｓ２９）、エラー回復して正常にデータを書き込めると、リアサイン元アドレスへのデータ書き込み処理は終了する。エラーが最後のステップまでにエラーが回復しない場合にはＨＤＣ／ＭＰＵ２３は、リアサイン元アドレスへのデータ書き込みを行うことなく処理を終了する。エラーが起きない場合（Ｓ２７におけるＮ）、ＨＤＣ／ＭＰＵ２３は、正常にデータを書き込み、リアサイン元アドレスへのデータ書き込み処理を終了する。
【００３４】
リアサイン元データ・セクタのデータは更新されていなくとも許されるため、エラー回復されない場合に、データの書き込み処理を終了しても問題とはならない。また、パフォーマンスの観点からは、できるだけ早いタイミングで処理を終了することが好ましい。ＥＲＰ実行ステップ数が少なく、エラー回復しない場合にそのまま処理を終了することで、データの正確性の向上とパフォーマンスの維持を図ることができる。
【００３５】
上記例は、リアサイン元データ・セクタへの書き込み処理においてエラー発生した場合、通常よりも最大実行ステップ数の少ないテーブルを参照してエラー回復処理を実行している。パフォーマンスを優先する場合、エラー回復処理を省略することで、処理時間を短縮することができる。具体的には、図５のフローチャートに示すように、ＨＤＣ／ＭＰＵ２３は、リアサイン元アドレスへのデータ書き込み処理を開始し（Ｓ３５）、エラーが発生すると（Ｓ３６におけるＹ）、エラー回復処理をすることなく（Ｓ３７）処理を終了する。その他の処理は、図４に示したフローチャートと同様である。エラー回復処理を省略することで、パフォーマンスの低下をより小さくすることができる。
【００３６】
図４及び５を参照して説明した例は、エラー回復処理実行の有無は異なるが、リアサイン先アドレスに加えて、リアサイン元アドレスへの書き込み処理（実際に書き込みしない場合を含む）を常に行う。これとは異なり、予め設定された特定条件が成立する場合に、リアサイン元アドレスへのデータ書き込み処理を行うことができる。これによって、パフォーマンスの低下をより小さくすることができる。好ましい例において、ＨＤＣ／ＭＰＵ２３は、リアサイン理由に応じてリアサイン元データ・セクタへの書き込み処理の有無を決定する。
【００３７】
図６は、リアサイン・ディフェクト・マップ（ＲＤＭ）２４３の登録データを模式的に示している。ＨＤＣ／ＭＰＵ２３は、磁気ディスク１１へのアクセスにおいて、このＲＤＭ２４３を参照し、コマンドが指定しているアドレスのリアサイン先アドレスを特定する。ＲＤＭ２４３は連続アドレスを一つのエントリとして登録することができる。ＲＤＭ２４３は、リアサイン元データ・セクタの先頭ＬＢＡ（Logical Block Address）、リアサイン先データ・セクタの先頭ＬＢＡ、データ・セクタ数、そしてリアサインされた理由を保持している。
【００３８】
リアサイン理由は、具体的には、リード・エラー、ライト・エラー、そしてホスト５１からコマンドなどがある。ＨＤＣ／ＭＰＵ２３は、リード処理においてエラー回復できない場合（リード・エラー）、ライト処理においてエラー回復できない場合（ライト・エラー）、あるいはホスト５１からのコマンドに従って、対応するアドレスをＲＤＭ２４３に登録する。ＨＤＣ／ＭＰＵ２３は、ライト・コマンドがリアサイン元アドレスを指定している場合、そのリアサイン理由を参照して、リアサイン元アドレスへデータ書き込み処理を行うか否かを決定する。
【００３９】
具体的な処理工程を、図７のフローチャートを参照して説明する。この例は、リアサイン理由がリード・エラーの時にリアサイン元アドレスへのデータ書き込み処理を行い、それ以外のときにはリアサイン元アドレスへのデータ書き込み処理を省略する。リード・エラーの場合、ライト・エラーの場合よりも、リアサイン元アドレスにデータを書き込むことができる可能性がより高いからである。リアサイン理由がコマンドである場合には、設計によっていずれを選択してもよい。
【００４０】
ＨＤＣ／ＭＰＵ２３は、ライト・コマンドを受信すると（Ｓ４１）、リアサイン先アドレスへの書き込み処理を行う（Ｓ４２）。ＨＤＣ／ＭＰＵ２３はＲＤＭ２４３を参照してリアサイン理由を特定する（Ｓ４３）。リアサイン理由がリード・エラーである場合（Ｓ４４におけるＹ）、ＨＤＣ／ＭＰＵ２３は、リアサイン元アドレスへの書き込み処理（エラーのために実際に書き込まない場合を含む）を行う（Ｓ４５）。リアサイン理由がリード・エラーでない場合（Ｓ４４におけるＮ）、ＨＤＣ／ＭＰＵ２３は、リアサイン元アドレスへの書き込み処理を開始することなく処理を終了する。
【００４１】
上記例は、リアサイン理由に応じて、リアサイン元アドレスへのデータ書き込み処理の有無を決定している。これに対して、リアサイン理由に応じてエラー回復処理を変更することができる。好ましい例において、ＨＤＣ／ＭＰＵ２３はリード・エラーのときに登録実行ステップが多いＥＲＰテーブルを参照し、その他のエラーのときには登録実行ステップが少ないＥＲＰテーブルを参照する。
【００４２】
具体的には、図８のフローチャートに示すように、ＨＤＣ／ＭＰＵ２３は、ライト・コマンドを受信すると（Ｓ５１）、リアサイン先アドレスへの書き込み処理を行う（Ｓ５２）。さらに、ＨＤＣ／ＭＰＵ２３は、リアサイン元アドレスへの書き込み処理を開始する（Ｓ５３）。エラーが発生すると（Ｓ５４におけるＹ）、ＨＤＣ／ＭＰＵ２３はＲＤＭ２４３を参照してリアサイン理由を特定し（Ｓ５５）、その理由に従ってＥＲＰテーブルを選択する（Ｓ５６）。リード・エラーの場合は登録実行ステップ数が多いテーブルを、それ以外の理由の場合は登録実行ステップ数が少なくテーブルを選択する。その後、ＨＤＣ／ＭＰＵ２３は選択したＥＲＰテーブルに従ってエラー回復処理を実行する（Ｓ５７）。
【００４３】
他の好ましい例において、ＨＤＣ／ＭＰＵ２３は、ライト・コマンドの指定アドレス内のリアサインされているデータ・セクタ数に応じて、リアサイン元アドレスへのデータ書き込み処理の有無を決定する。指定アドレス内のリアサイン元アドレス数が基準を越えている場合、ＨＤＣ／ＭＰＵ２３はリアサイン元アドレスへのデータ書き込み処理を行う。超えてない場合は行わない。特定するデータ・セクタ数は、コマンド指定アドレス内の全リアサイン元データ・セクタ数、あるいは、コマンド指定アドレス内における連続データ・セクタの最大数とすることができる。
【００４４】
図９のフローチャートを参照して、具体的な処理方法を説明する。ＨＤＣ／ＭＰＵ２３は、ライト・コマンドを受信すると（Ｓ６１）、リアサイン先アドレスを含む指定アドレスのデータ書き込み処理を行う（Ｓ６２）。ＨＤＣ／ＭＰＵ２３は、ＲＤＭ２３３を参照して、指定アドレス内のリアサイン元アドレス数（データ・セクタ数）を特定する（Ｓ６３）。リアサイン元アドレス数が基準数を超える場合（Ｓ６４におけるＹ）、ＨＤＣ／ＭＰＵ２３は、各リアサイン元アドレスへのデータ書き込み処理（エラーにより磁気ディスクへ書き込みできない場合を含む）を行う。リアサイン元アドレス数が基準数以下の場合は、リアサイン元データ・セクタへのデータ書き込み処理を行うことなく処理を終了する。
【００４５】
なお、基準数と比較するアドレス数は、上述のように、最大連続セクタ数もしくはトータル・セクタ数とすることができる。この他、ライト・コマンドの種類に応じてリアサイン元データ・セクタへの書き込み処理の有無を決定することができる。例えば、ライト・コマンドがストリーム・コマンドである場合には、リアサイン元データ・セクタへの書き込み処理を行うようにすることができる。
【００４６】
ライト・コマンド指定アドレス内のリアサイン元データ・セクタ数に基づき、ＨＤＣ／ＭＰＵ２３は、リアサイン元アドレスへのデータ書き込み処理におけるＥＲＰテーブルを変更することができる。図８を参照して説明した処理において、リアサイン理由による判断基準をリアサイン元データ・セクタ数に変更することに対応する。
【００４７】
具体的には、図１０に示すように、ＨＤＣ／ＭＰＵ２３は、リアサイン元アドレスへのデータ書き込み処理においてエラーが発生すると（Ｓ７４におけるＹ）、ＨＤＣ／ＭＰＵ２３は、指定アドレス内のリアサイン元アドレス数を特定し（Ｓ７５）、その数に応じてＥＲＰテーブルを選択する。例えば、二つのＥＲＰテーブルを用意し、リアサイン元アドレス数が基準数未満の場合には、登録実行ステップ数がより少ないＥＲＰテーブルを使用してエラー回復処理を実行する（Ｓ７６）。設計によっては、３以上のテーブルを用意してもよい。
【００４８】
リード・コンティニュアスにおいて、常にリアサイン元データ・セクタを読み出す、あるいは、リアサイン先データ・セクタを読み出すのではなく、予め設定されている条件に応じて、リアサイン元データ・セクタとリアサイン先データ・セクタの一方を選択し、その選択したデータをホスト５１に転送することが好ましい。これにより、転送データの正確性と転送レートの維持との両立を図ることができる。
【００４９】
好ましい例において、ＨＤＣ／ＭＰＵ２３は、リード・コンティニュアスに対応したリード・コマンドの指定アドレス内のリアサイン元アドレス数（データ・セクタ数）に応じて、リアサイン元アドレスとリアサイン先アドレスの一方を選択する。具体的には、指定アドレス内のリアサイン元アドレス数が基準数を越える場合に、ＨＤＣ／ＭＰＵ２３はリアサイン先データ・セクタを読み出し、超えていない場合にはリアサイン元データ・セクタを読み出す。リアサインされているデータ・セクタが多い場合には、リアサイン先をアクセスすることで、データの正確性と転送レートとを両立することができる。なお、基準数と比較するリアサイン元アドレス数は、上述と同様に、総アドレス数あるいは最大連続アドレス数とすることができる。
【００５０】
図１１を参照して、上記コンティニュアス・リードのフローを説明する。ＨＤＣ／ＭＰＵ２３は、リード・コマンドをホストから受信すると（Ｓ８１）、そのリード・コマンドがリード・コンティニュアスを指定しているコマンドであるか決定する（Ｓ８２）。受信したリード・コマンドがストリーム・コマンドであり、ホスト５１からの設定コマンドあるいはそのリード・コマンドによってリード・コンティニュアス機能がイネーブル設定されている場合（Ｓ８２におけるＹ）、ＨＤＣ／ＭＰＵ２３は、リード・コマンドの指定アドレス内におけるリアサイン元アドレス数を、ＲＤＭ２３４を参照して特定する（Ｓ８３）。
【００５１】
リアサイン元アドレス数が基準数を越える場合（Ｓ８４におけるＹ）、ＨＤＣ／ＭＰＵ２３は、リアサイン先データ・セクタを読み出す（Ｓ８５）。このとき、ＥＣＣエラーの訂正処理を行う、あるいはそれを無視することができる。リアサイン元アドレス数が基準数を越えない場合（Ｓ８４におけるＮ）、ＨＤＣ／ＭＰＵ２３は、リアサインされているデータ・セクタについて、リアサイン先ではなくリアサイン元のデータ・セクタを読み出し、そのデータをホスト５１に転送する（Ｓ８６）。このとき、ＨＤＣ／ＭＰＵ２３は、ＥＣＣエラーを無視する。
【００５２】
受信したリード・コマンドがストリーム・リード・コマンドではない、あるいはリード・コンティニュアスがディスエーブル設定である場合（Ｓ８２におけるＮ）、ＨＤＣ／ＭＰＵ２３は通常の処理として磁気ディスク１１からデータを読み出す。つまり、ＥＣＣエラーが発生した場合には、オフラインのエラー訂正あるいはエラー回復処理を行い、また、リアサインされたデータ・セクタが存在する場合は、リアサイン先データ・セクタを読み出す（Ｓ８５）。
【００５３】
以上、本発明を好ましい実施形態を例として説明したが、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。例えば、本形態の制御を、磁気ディスク以外のディスクを利用するディスク・ドライブ装置に適用することができる。上記各例の要素を組み合わせて、あるいはそれぞれ別に利用することができる。例えば、本形態のリアサイン元アドレスとリアサイン先アドレスの選択は、ＥＣＣエラーの処理とは独立に使用することができる。
【図面の簡単な説明】
【００５４】
【図１】本実施形態に係るＨＤＤの全体構成を模式的に示すブロック図である。
【図２】本実施形態に係るコンティニュアス・リードの処理工程を示すフローチャートである。
【図３】本実施形態に係るデータ書き込み処理に関連する論理構成要素を模式的に示すブロック図である。
【図４】本実施形態に係るリアサイン先データ・セクタとリアサイン元データ・セクタとへの書き込み処理において、ＥＲＰテーブルを変更する処理を示すフローチャートである。
【図５】本実施形態に係るリアサイン元データ・セクタへの書き込み処理においてエラー回復処理を省略する場合の処理を示すフローチャートである。
【図６】本実施形態に係るリアサイン・ディフェクト・マップの一例を示している
【図７】本実施形態において、リアサイン理由に応じてリアサイン元データ・セクタへの書き込み処理の有無を決定する処理工程を示すフローチャートである。
【図８】本実施形態に係るリアサイン元データ・セクタへの書き込み処理において、リアサイン理由に応じてＥＲＰテーブルを選択する処理工程を示すフローチャートである。
【図９】本実施形態において、コマンド指定アドレス内のリアサイン元データ・セクタ数に応じてリアサイン元データ・セクタへの書き込み処理の有無を決定する処理工程を示すフローチャートである。
【図１０】本実施形態に係るリアサイン元データ・セクタへの書き込み処理において、コマンド指定アドレス内のリアサイン元データ・セクタ数に応じてＥＲＰテーブルを選択する処理工程を示すフローチャートである。
【図１１】本実施形態に係るコンティニュアス・リード処理において、コマンド指定アドレス内のリアサイン元データ・セクタ数に応じて、リアサイン先とリアサイン元の一方を選択してデータ読み出し処理を行う処理工程を示すフローチャートである。
【符号の説明】
【００５５】
１  ハードディスク・ドライブ、１０  エンクロージャ、１１  磁気ディスク
１２  ヘッド・スライダ、１３  アーム・エレクトロニクス
１４  スピンドル・モータ、１５  ボイス・コイル・モータ、１６  アクチュエータ
２０  回路基板、２１  ＲＷチャネル、２２  モータ・ドライバ・ユニット
２３  ＨＤＣ／ＭＰＵ、２４  ＲＡＭ、５１  ホスト
２４１  リアサイン先用ＥＲＰテーブル、２４２  リアサイン元用ＥＲＰテーブル
２４３  リアサイン・ディフェクト・マップ
【図１】
2008276818.tif 000003
【図２】
2008276818.tif 000004
【図３】
2008276818.tif 000005
【図４】
2008276818.tif 000006
【図５】
2008276818.tif 000007
【図６】
2008276818.tif 000008
【図７】
2008276818.tif 000009
【図８】
2008276818.tif 000010
【図９】
2008276818.tif 000011
【図１０】
2008276818.tif 000012
【図１１】
2008276818.tif 000013