(57)【要約】【課題】リアサインするセクタ数の増加を抑えつつ、コマンドに応じた処理時間を短縮する。【解決手段】本発明の一つの実施形態において、ＨＤＣ／ＭＰＵ２３は、複数セクタのリードまたはライトを要求するコマンドの処理が完了する前にタイム・アウトになったと判定すると、所定の基準に従って、すでにメディア・アクセスしたセクタからリアサインするセクタを選択し、それをリアサイン候補テーブル２４１に登録する。さらに、ＨＤＣ／ＭＰＵ２３は、所定のタイミングで、登録されているセクタのリアサインを行う。これによって、リアサインするセクタ数を抑制しつつ、複数セクタ・アクセスを要求するコマンドに対する処理時間を低減する。【選択図】図４
2008021351.tif 000002
【特許請求の範囲】
【請求項１】
メディア上のセクタを物理的に異なる位置にリアサインする方法であって、
複数セクタのリード処理またはライト処理のコマンドを取得し、
前記取得したコマンドに従って処理を開始し、前記複数セクタの内の少なくとも一部のセクタのメディア・アクセスを行い、
前記コマンドに対する処理時間が基準をこえると判定した場合に、すでにメディア・アクセスしたセクタの少なくとも一部をリアサインすることを決定する、方法。
【請求項２】
前記メディア・アクセスしたセクタの内、最もリトライ数が多いセクタを少なくともリアサインすることを決定する、
請求項１に記載の方法。
【請求項３】
前記複数セクタにおけるメディア・アクセス前のセクタへメディア・アクセスする場合の時間を特定し、
前記特定された時間に基づいて、すでにメディア・アクセスしたセクタからリアサインするセクタを決定する、
請求項１に記載の方法。
【請求項４】
前記特定された時間はリトライ数で表される、
請求項３に記載の方法。
【請求項５】
前記メディア・アクセスしたセクタのリトライ数に基づいて前記メディア・アクセス前のセクタのリトライ数を予想し、その予想したリトライ数に基づいてすでにメディア・アクセスしたセクタからリアサインするセクタを決定する、
請求項４に記載の方法。
【請求項６】
前記メディア・アクセス前のセクタのリトライ数を測定し、その測定したリトライ数に基づいてすでにメディア・アクセスしたセクタからリアサインするセクタを決定する、
請求項４に記載の方法。
【請求項７】
リアサインすることを決定するセクタのリトライ総数が、前記メディア・アクセス前のセクタに対して特定されたリトライ総数以上となるように、前記すでにメディア・アクセスしたセクタからリアサインするセクタを決定する、
請求項４に記載の方法。
【請求項８】
前記リアサインすることを決定したセクタを、前記コマンドの後に受信したそのセクタのライト処理のコマンドに応じた処理において、リアサインする、
請求項１に記載の方法。
【請求項９】
リード処理においてリアサインすることを決定したセクタをリアサインする前に、そのセクタのリード・ベリファイを実行する、
請求項１に記載の方法。
【請求項１０】
データを記憶するメディアと、
前記メディアの複数セクタのリード処理またはライト処理のコマンドに対応して、前記複数セクタの内の少なくとも一部のセクタのメディア・アクセスを行うヘッドと、
前記コマンドに対する処理時間が基準をこえると判定した場合に、すでにメディア・アクセスしたセクタの内の少なくとも一部をリアサインすることを決定するコントローラと、
を有するデータ記憶装置。
【請求項１１】
前記コントローラは、前記複数セクタにおけるメディア・アクセス前のセクタへメディア・アクセスする場合に対応する時間を特定し、
前記特定された時間に基づいて、すでにメディア・アクセスしたセクタからリアサインするセクタを決定する、
請求項１０に記載のデータ記憶装置。
【請求項１２】
前記特定された時間はリトライ数で表される、
請求項１１に記載のデータ記憶装置。
【請求項１３】
前記コントローラは、前記メディア・アクセスしたセクタのリトライ数に基づいて前記メディア・アクセス前のセクタのリトライ数を予想し、その予想したリトライ数に基づいてすでにメディア・アクセスしたセクタからリアサインするセクタを決定する、
請求項１２に記載のデータ記憶装置。
【請求項１４】
前記コントローラは、前記メディア・アクセス前のセクタのリトライ数を測定し、その測定したリトライ数に基づいてすでにメディア・アクセスしたセクタからリアサインするセクタを決定する、
請求項１２に記載のデータ記憶装置。
【請求項１５】
前記コントローラは、リアサインすることを決定するセクタのリトライ総数が、前記メディア・アクセス前のセクタに対して特定されたリトライ総数以上となるように、前記すでにメディア・アクセスしたセクタからリアサインするセクタを決定する、
請求項１２に記載のデータ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメディア上のセクタをリアサインする方法及びデータ記憶装置に関し、特に、コマンドに対応した処理において所定の時間が経過した場合におけるリアサイン処理に関する。
【背景技術】
【０００２】
データ記憶装置として、光ディスク、磁気テープあるいは半導体回路などの様々な態様のメディアを使用する装置が知られているが、その中で、ハードディスク・ドライブ（ＨＤＤ）は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、携帯電話、あるいはデジタル・カメラなどで使用されるリムーバブルメモリなど、ＨＤＤの用途は、その優れた特性により益々拡大している。
【０００３】
ＨＤＤで使用される磁気ディスクは、同心円状に形成された複数のトラックを有している。各トラックには、アドレス情報を有する複数のサーボ・データとユーザ・データを含むデータ・セクタとが記録されている。ヘッド素子部がサーボ・データのアドレス情報に従って所望のデータ・セクタにアクセスすることによって、データ・セクタへのデータ書き込み及びデータ・セクタからのデータ読み出しを行うことができる。
【０００４】
リード・コマンドまたはライト・コマンドに対して、タイム・アウト時間を設定することができるＨＤＤが知られている。ＨＤＤは、コマンドを受信してからの時間を計測し、コマンドに対応した処理が基準時間をこえると、タイム・アウトとしてホストにエラーを報告する。ＨＤＤは、コマンドに対応した処理を正常に完了することなく、エラー報告によってそのコマンドに対する処理を終了する。
【０００５】
リード／ライト処理において、アクセスするセクタにおいて繰り返しエラーが発生すると、タイム・アウトにつながる。そこで、ＨＤＤは、特定のセクタにおいてリードまたはライトのエラーが繰り返し発生することを避けるため、問題となるセクタを物理的に別の場所に置き換えるリアサイン処理を行う。典型的には、ＨＤＤは、基準回数のリトライを行っても正確にリードまたはライトすることができない場合、そのセクタをリアサインする（例えば、特許文献１を参照）。
【０００６】
これによって、リードまたはライト処理においてアクセスしたセクタにおいて、エラーが繰り返し発生し、これによってタイム・アウトが頻繁に発生することを防止する。同時に、所定リトライ数をこえるセクタのみをリアサインすることで、リアサインするセクタがいたずらに増加することを防止することができる。
【特許文献１】特開平１０−２７５４２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
リードまたはライトの１コマンドによってアクセス要求されるセクタ数は、１セクタとは限らない。典型的には、１コマンドは複数セクタへのアクセスを要求する。アクセス要求された複数のセクタの内、いくつかのセクタにおいて基準回数未満の比較的少ないリトライが繰り返されることがある。このような場合、上記のリアサイン基準によっては、各セクタがリアサインされることはない。しかし、各セクタのリトライ総数が多くなると、そのコマンドに対してタイム・アウト・エラーとなる。
【０００８】
このようなタイム・アウト・エラーの発生を抑制するためには、リアサインするリトライ数の基準を小さい値に再設定することが考えられる。しかし、基準数を小さくすると、リアサインするセクタが急激に増加し、ディスク容量の低下、あるいはリアサインするセクタを登録するテーブルがオーバーフローを起こすことが考えられる。従って、リアサインするセクタ数の増加を抑えつつ、コマンドに対応した処理時間を短縮する技術が要求される。
【課題を解決するための手段】
【０００９】
本発明の一態様は、メディア上のセクタを物理的に異なる位置にリアサインする方法である。この方法は、複数セクタのリード処理またはライト処理のコマンドを取得する。さらに、前記取得したコマンドに従って処理を開始し、前記複数セクタの内の少なくとも一部のセクタのメディア・アクセスを行う。そして、前記コマンドに対する処理時間が基準をこえると判定した場合に、すでにメディア・アクセスしたセクタの少なくとも一部をリアサインすることを決定する。複数セクタの処理時間を基準としてリアサインすることを決定し、メディア・アクセス済みのセクタからリアサインするセクタを選択することで、リアサインするセクタ数の増加を抑えつつ、コマンドに応じた処理時間を短縮することができる。
【００１０】
前記メディア・アクセスしたセクタの内、最もリトライ数が多いセクタを少なくともリアサインすることを決定することが好ましい。これによって、リアサインするセクタ数を抑えつつ、処理時間の短縮を行うことができる。
【００１１】
前記複数セクタにおけるメディア・アクセス前のセクタへメディア・アクセスする場合の時間を特定し、前記特定された時間に基づいてすでにメディア・アクセスしたセクタからリアサインするセクタを決定することが好ましい。これによって、基準時間超過の発生を効果的に抑えることができる。
【００１２】
好ましくは、前記特定された時間はリトライ数で表される。これによって、装置内における複雑な処理を避けることができる。さらに、前記メディア・アクセスしたセクタのリトライ数に基づいて前記メディア・アクセス前のセクタのリトライ数を予想し、その予想したリトライ数に基づいてすでにメディア・アクセスしたセクタからリアサインするセクタを決定することが好ましい。これによって、処理時間の短縮を図ると共に、メディア・アクセス前のセクタのリトライ数を効果的に予想できる。あるいは、前記メディア・アクセス前のセクタのリトライ数を測定し、その測定したリトライ数に基づいてすでにメディア・アクセスしたセクタからリアサインするセクタを決定することが好ましい。これによって、メディア・アクセス前のセクタのリトライ数をより正確に特定することができる。
【００１３】
リアサインすることを決定するセクタのリトライ総数が、前記メディア・アクセス前のセクタに対して特定されたリトライ総数以上となるように、前記すでにメディア・アクセスしたセクタからリアサインするセクタを決定することが好ましい。これによって、同様のコマンドに対して基準時間を超える可能性をより小さくすることができる。
【００１４】
前記リアサインすることを決定したセクタを、前記コマンドの後に受信したそのセクタのライト処理のコマンドに応じた処理においてリアサインすることが好ましい。これによって、リアサインのための処理を効率化することができる。また、リード処理においてリアサインすることを決定したセクタをリアサインする前に、そのセクタのリード・ベリファイを実行することが好ましい。これによって、欠陥のないセクタのリアサインを避けることができる。
【００１５】
本発明の他の態様に係るデータ記憶装置は、データを記憶するメディアと、前記メディアの複数セクタのリード処理またはライト処理のコマンドに対応して、前記複数セクタの内の少なくとも一部のセクタのメディア・アクセスを行うヘッドと、前記コマンドに対する処理時間が基準をこえると判定した場合に、すでにメディア・アクセスしたセクタの内の少なくとも一部をリアサインすることを決定するコントローラを有するものである。複数セクタの処理時間を基準としてリアサインすることを決定し、メディア・アクセス済みのセクタからリアサインするセクタを選択することで、リアサインするセクタ数の増加を抑えつつ、コマンドに応じた処理時間を短縮することができる。
【００１６】
前記コントローラは、前記複数セクタにおけるメディア・アクセス前のセクタへメディア・アクセスする場合に対応する時間を特定し、前記特定された時間に基づいて、すでにメディア・アクセスしたセクタからリアサインするセクタを決定することが好ましい。
【００１７】
前記コントローラは、前記メディア・アクセスしたセクタのリトライ数に基づいて前記メディア・アクセス前のセクタのリトライ数を予想し、その予想したリトライ数に基づいてすでにメディア・アクセスしたセクタからリアサインするセクタを決定することが好ましい。あるいは、前記コントローラは、前記メディア・アクセス前のセクタのリトライ数を測定し、その測定したリトライ数に基づいてすでにメディア・アクセスしたセクタからリアサインするセクタを決定することが好ましい。
【００１８】
前記コントローラは、リアサインすることを決定するセクタのリトライ総数が、前記メディア・アクセス前のセクタに対して特定されたリトライ総数以上となるように、前記すでにメディア・アクセスしたセクタからリアサインするセクタを決定することが好ましい。
【発明の効果】
【００１９】
本発明によれば、リアサインするセクタ数の増加を抑えつつ、コマンドに応じた処理時間を短縮することができる。
【発明を実施するための最良の形態】
【００２０】
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略されている。
【００２１】
本実施形態は、メディアにおけるユーザ・データの記録単位であるデータ・セクタのリアサインに関する。本形態の手法は、複数セクタのリードまたはライトを要求するコマンドの処理が完了する前にその処理時間が所定のレベルをこえたと判定すると、所定の基準に従って、すでにメディア・アクセスしたセクタからリアサインするセクタを選択する。これによって、リアサインするセクタ数を抑制しつつ、複数セクタ・アクセスを要求するコマンドに対する処理時間を低減する。
【００２２】
以下においては、データ記憶装置の一例であるハードディスク・ドライブ（ＨＤＤ）を例として、本発明の実施形態を詳細に説明する。本実施形態の特徴点の説明を行う前に、最初に、ＨＤＤの全体構成を説明する。図１は、本実施の形態に係るＨＤＤ１の全体構成を模式的に示すブロック図である。図１に示すように、ＨＤＤ１は、エンクロージャ１０内に、メディア（記録媒体）の一例である磁気ディスク１１、ヘッド素子部１２、アーム電子回路（アームエレクトロニクス：ＡＥ）１３、スピンドル・モータ（ＳＰＭ）１４、ボイス・コイル・モータ（ＶＣＭ）１５、そしてアクチュエータ１６を備えている。
【００２３】
ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を備えている。回路基板２０上には、リード・ライト・チャネル（ＲＷチャネル）２１、モータ・ドライバ・ユニット２２、ハードディスク・コントローラ（ＨＤＣ）とＭＰＵの集積回路（以下、ＨＤＣ／ＭＰＵ）２３及び半導体メモリの一例であるＲＡＭ２４などの各ＩＣを備えている。尚、各回路構成は一つのＩＣに集積すること、あるいは、複数のＩＣに分けて実装することができる。
【００２４】
ＳＰＭ１４は、そこに固定されている磁気ディスク１１を、所定の角速度で回転する。ＨＤＣ／ＭＰＵ２３からの制御データに従って、モータ・ドライバ・ユニット２２がＳＰＭ１４を駆動する。メディアの一例である本例の磁気ディスク１１は、データを記録する記録面を両面に備え、各記録面に対応するヘッド素子部１２が設けられている。
【００２５】
各ヘッド素子部１２はスライダ（不図示）に固定されている。また、スライダはアクチュエータ１６に固定されている。アクチュエータ１６はＶＣＭ１５に連結され、回動軸を中心に回動することによって、ヘッド素子部１２（及びスライダ）を磁気ディスク１１上において半径方向に移動する。モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従ってＶＣＭ１５を駆動する。ヘッド素子部１２には、典型的には、ライト・データに応じて電気信号を磁界に変換するライト素子及び磁気ディスク１１からの磁界を電気信号に変換するリード素子を備えている。なお、磁気ディスク１１は、１枚以上あればよく、記録面は磁気ディスク１１の片面あるいは両面に形成することができる。また、本発明をリード素子のみを備えるデータ記憶装置に適用することができる。
【００２６】
ＡＥ１３は、複数のヘッド素子部１２の中からデータ・アクセスが行われる１つのヘッド素子部１２を選択し、選択されたヘッド素子部１２により再生される再生信号を一定のゲインで増幅（プリアンプ）し、ＲＷチャネル２１に送る。また、ＲＷチャネル２１からの記録信号を選択されたヘッド素子部１２に送る。
【００２７】
チャネル回路の一例であるＲＷチャネル２１は、ライト処理において、ＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、更にコード変調されたライト・データをライト信号に変換してＡＥ１３に供給する。リード処理において、ＲＷチャネル２１はＡＥ１３から供給されたリード信号を一定の振幅となるように増幅し、取得したリード信号からデータを抽出し、デコード処理を行う。読み出されるデータは、ユーザ・データとサーボ・データを含む。デコード処理されたリード・データは、ＨＤＣ／ＭＰＵ２３に供給される。
【００２８】
ＨＤＣ／ＭＰＵ２３において、ＭＰＵはＲＡＭ２４にロードされたマイクロ・コードに従って動作する。ＨＤＤ１の起動に伴い、ＲＡＭ２４には、ＭＰＵ上で動作するマイクロ・コードの他、制御及びデータ処理に必要とされるデータが磁気ディスク１１あるいはＲＯＭ（不図示）からロードされる。ＨＤＣはロジック回路として構成され、ＭＰＵと一体的に様々な処理を実行する。例えば、ＨＤＣ／ＭＰＵ２３は、コマンド実行順序の管理、ヘッド素子部１２のポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、ＨＤＤ１の全体制御を実行する。また、ＨＤＣ／ＭＰＵ２３は、ディフェクト管理において、データ・セクタのリアサイン処理を実行制御する。この点については後に詳述する。
【００２９】
ＨＤＣ／ＭＰＵ２３は、ＲＷチャネル２１から取得した磁気ディスク１１からのリード・データを、ホスト５１に転送する。磁気ディスク１１からのリード・データは、ＲＡＭ２４内のリード・バッファに一旦格納された後、ＨＤＣ／ＭＰＵ２３を介してホスト５１に転送される。また、ホスト５１からのライト・データは、ＨＤＣ／ＭＰＵ２３を介して、ＲＡＭ２４内のライト・バッファに一旦格納され、その後、所定のタイミングでＨＤＣ／ＭＰＵ２３を介して磁気ディスク１１に転送される。
【００３０】
図２を参照して、磁気ディスク１１上の記録データについて説明する。図２は、磁気ディスク１１の記録面の記録データの状態を模式的に示している。磁気ディスク１１の記録面には、磁気ディスク１１の中心から半径方向に放射状に延び、所定の角度毎に形成された複数のサーボ領域１１１と、隣り合う２つのサーボ領域１１１の間にデータ領域１１２が形成されている。サーボ領域１１１とデータ領域１１２は、所定の角度で交互に設けられている。各サーボ領域１１１には、ヘッド素子部１２の位置決め制御を行うためのサーボ・データが記録される。各データ領域１１２には、ユーザ・データが記録される。
【００３１】
磁気ディスク１１の記録面には、半径方向の所定幅を有し、同心円状に形成された複数本のデータ・トラック１１３が形成されている。ユーザ・データは、データ・トラック１１３に沿って記録される。また、磁気ディスク１１の記録面上には、同心円状に形成された複数のサーボ・トラックが形成されており、各サーボ・トラックは同一半径位置の各サーボ領域１１１によって構成されている。サーボ・トラック・ピッチとデータ・トラック・ピッチとは、同一もしくは異なる。
【００３２】
各データ・トラック１１３において、ユーザ・データは、データ・セクタ単位で記録されている。典型的なデータ・セクタのデータ長は５１２バイトである。典型的には、サーボ領域１１１の間に数個のデータ・セクタが収容されている。ＨＤＤ１は、データ・セクタ単位で、磁気ディスク１１へのデータの書き込み及びその読み出しを行う。また、データ・トラック１１３は、磁気ディスク１１の半径方向の位置に従って、複数のゾーン１１４ａ−１１４ｃにグループ化されている。１つのデータ・トラック１１３に含まれるセクタの数は、ゾーンのそれぞれに設定される。
【００３３】
以下においては、ホスト５１から複数セクタへのアクセスを指示するコマンドを受信した場合における、リアサイン処理について説明する。アクセスを指示するコマンドは、リードもしくはライト・コマンドである。ライト・キャッシュ機能はＯＦＦされているものとする。つまり、ＨＤＤ１は、ホスト５１からライト・コマンド及びユーザ・データを受信すると、そのユーザ・データを磁気ディスク１１の記録面に書き込んでから、ホスト５１にライト処理の完了を通知する。
【００３４】
ＨＤＤ１はタイム・アウト機能を有しており、コマンドを受信してからコマンドに対応する処理の完了前に基準時間が経過すると、ホスト５１にタイム・アウト・エラーを報告する。基準時間は、典型的にはライト処理とリード処理とで同一であるが、異なる時間であってもよい。また、ホスト５１が、コマンドをＨＤＤ１に送信することによって基準時間を設定してもよいし、あるいはＨＤＤ１に予め基準時間を設定登録するようにしてもよい。
【００３５】
本形態のＨＤＤ１は、タイム・アウトになると、すでにメディア・アクセスしたセクタから、リアサインするセクタを選択する。メディア・アクセスは、磁気ディスク１１へのデータの書き込み、または磁気ディスク１１からのデータの読み出しである。本形態における処理の一例について、図３を参照して説明する。ＨＤＤ１は、ホスト５１から、ＬＢＡ（Logical Block Address）０からＬＢＡ９９までの１００セクタへのデータ書き込みを指示するライト・コマンドを受信する。なお、よく知られているように、ＨＤＣ／ＭＰＵ２３は、ＬＢＡで指定されたセクタをＣＨＳ（Cylinder Head Sector）アドレスに変換し、ＣＨＳアドレスを使用して磁気ディスク１１にアクセスする。
【００３６】
図３の例において、ＨＤＤ１が、ＬＢＡ６０のセクタまでのメディア・アクセスを終了したタイミングで基準時間が経過し、タイム・アウトとなる。ＬＢＡ６１からＬＢＡ９９までのセクタは未アクセスである。つまり、ＨＤＤ１がＬＢＡ０からＬＢＡ５９までの各セクタにデータを書き込んだタイミングでタイム・アウトとなり、ＬＢＡ６０からＬＢＡ９９までのセクタには、ユーザ・データをまだ書き込んでいない。
【００３７】
ＨＤＤ１は、ＬＢＡ０、ＬＢＡ１０、ＬＢＡ２０、ＬＢＡ３０及びＬＢＡ５０の各セクタへのデータ書き込みにおいて、エラー・リカバリ処理を実行する。具体的に、ＨＤＤ１は、ＬＢＡ０、ＬＢＡ１０、ＬＢＡ２０、ＬＢＡ３０及びＬＢＡ５０の各セクタにおいて、１０回、５０回、２０回、４０回そして３０回の各リトライを実行する。他のセクタにおいては、エラーが発生することなくデータ書き込みを終了している。
【００３８】
ＨＤＤ１は、メディア・アクセス済みのセクタ（ＬＢＡ０からＬＢＡ５９）から、リアサインするセクタを選択する。磁気ディスク１１の記録面には、リアサイン用の領域が用意されており、リアサインされたセクタのアドレスに対応するセクタの物理領域は、リアサイン先の領域となる。図３の例において、ＨＤＤ１は、リアサインするセクタとして、ＬＢＡ１０、ＬＢＡ３０及びＬＢＡ５０を選択する。本例の選択基準について説明する。
【００３９】
ＨＤＤ１は、アクセス済みのセクタのリトライ数から未アクセスのセクタのリトライ数を予想する。具体的には、６０セクタのアクセスのリトライ総数が１５０であるので、残り４０セクタのリトライ総数を１００（１５０×４０／６０）と予想する。ＨＤＤ１は、選択したセクタのリトライ総数が予想リトライ総数以上となるように、アクセス済みセクタからリアサインするセクタを選択する。さらに、ＨＤＤ１は、リトライ数が多いセクタから選択していく。ＬＢＡ１０、ＬＢＡ３０及びＬＢＡ５０のリトライ総数は１２０であり、予想リトライ総数以上である。また、これらセクタは、リトライ数の上位３セクタである。
【００４０】
以上のように、複数セクタへのアクセスにおいてタイム・アウトが起きた場合に、アクセス済みのセクタから選択したセクタをリアサインすることによって、次回以降の複数セクタに対する処理において、タイム・アウトが起きる可能性を低減することができる。また、アクセスすることができなかったセクタの予想リトライ数に基づいてリアサインするセクタを選択することで、リアサイン・セクタ数を抑えつつ、同様のコマンドを次に受けた場合におけるタイム・アウトの可能性を効果的に抑えることができる。
【００４１】
続いて、本形態のリアサイン処理におけるＨＤＤ１内の各機能要素のオペレーションについて説明する。図４のブロック図に示すように、ＨＤＣ／ＭＰＵ２３は、ホスト５１からのコマンドに対する処理の実行を制御する。ＨＤＣ／ＭＰＵ２３は、ホスト５１から転送されるユーザ・データ（ライト・データ）を、ＲＡＭ２４内のバッファ２４５に一旦格納された後、ＲＷチャネル２１を介して、磁気ディスク１１に転送する。また、磁気ディスク１１から読み出したユーザ・データ（リード・データ）は、ＲＷチャネル２１及びＨＤＣ／ＭＰＵ２３を介してバッファ２４５に一旦格納した後、ホスト５１に転送する。
【００４２】
ＨＤＣ／ＭＰＵ２３は、リードまたはライト処理において、特定セクタへのアクセスにおけるエラーが発生すると、エラー・リカバリ・プロシージャ（ＥＲＰ）を実行する。ＨＤＣ／ＭＰＵ２３は、ＲＡＭ２４に格納されているＥＲＰテーブル２４５を参照し、それに従ってＥＲＰを実行する。ＥＲＰテーブル２４５には、リード・エラー及びライト・エラーのそれぞれに対応したＥＲＰステップが登録されている。例えば、リード・エラーに対して２５６のＥＲＰステップが登録されており、ライト・エラーに対して６４のＥＲＰステップが登録されている。
【００４３】
アクセスすべきセクタにおいてリード・エラーあるいはライト・エラーが発生すると、ＨＤＣ／ＭＰＵ２３は、エラーが発生したセクタに対して、上位のＥＲＰステップから、順次、各ＥＲＰステップを実行する。各ＥＲＰステップの実行がリトライに相当し、ＨＤＣ／ＭＰＵ２３のＥＲＰ実行ステップ数が、そのセクタに対するリトライ回数となる。
【００４４】
ＨＤＣ／ＭＰＵ２３は、各セクタへのアクセス（データの読み出し、あるいはデータの書き込み）においてリトライ回数を測定し、その値をリトライ数ログ・テーブル２４２に格納する。図５は、リトライ数ログ・テーブル２４２のフォーマットの一例を示している。リトライ数ログ・テーブル２４２は、ＬＢＡとそれに関連付けられたリトライ数とを有している。ＨＤＣ／ＭＰＵ２３は、エラーが発生してＥＲＰを実行したセクタについて、そのＬＢＡとリトライ数をリトライ数ログ・テーブル２４２に登録する。
【００４５】
コマンドに対応する処理を正常に完了することなくタイム・アウトとなると、ＨＤＣ／ＭＰＵ２３は、リトライ数ログ・テーブル２４２を参照し、予め設定されている基準に従ってリアサインするセクタを選択する。図５の例においては、ＬＢＡＸ１、ＬＢＡＸ３及びＬＢＡＸ４の各セクタが選択される。ＨＤＣ／ＭＰＵ２３は、選択したセクタを、リアサイン候補テーブル２４１に登録する。ＨＤＣ／ＭＰＵ２３は、リアサイン候補テーブル２４１への登録が終了すると、リトライ数ログ・テーブル２４２をクリアする。
【００４６】
図６は、リアサイン候補テーブル２４１のフォーマットの一例を示している。リアサイン候補テーブル２４１は、ＬＢＡとそれに関連付けられたコマンド種別とを示している。コマンド種別は、対応ＬＢＡのセクタがリードあるいはライトのいずれの処理においてエラーを起こしたものであるかを示す。図５の例に従って、リアサイン候補テーブル２４１には、ＬＢＡＸ１、ＬＢＡＸ３及びＬＢＡＸ４の各セクタが新たに登録されている。これらは、リード処理においてリアサインすべきセクタとして選択されたものであり、リアサイン候補テーブル２４１が、これらのコマンド種別をリード・コマンドと示している。なお、図６において、ＬＢＡのＬ１からＬ３は同一のコマンドに対応し、Ｚ１とＫ０はそれぞれ別のコマンドに対応する。
【００４７】
好ましくは、ＨＤＣ／ＭＰＵ２３は、ライト・コマンドの処理において、そのコマンドに対応するセクタのリアサインを行う。つまり、ＨＤＣ／ＭＰＵ２３は、ライト・コマンドを取得するとリアサイン候補テーブル２４１を参照し、コマンドが示すＬＢＡが存在するかを確認する。ライト・コマンドが示すＬＢＡがリアサイン候補テーブル２４１に登録されていると、ＨＤＣ／ＭＰＵ２３は、そのＬＢＡに対応するユーザ・データを、リアサインされた別の物理領域に書き込む。
【００４８】
さらに、ＨＤＣ／ＭＰＵ２３は、リアサインしたＬＢＡをリアサイン欠陥テーブル２４３に登録する。図７は、リアサイン欠陥テーブル２４３に登録されている１エントリのフォーマット例を示している。図７の例において、リアサイン欠陥テーブル２４３は、リアサイン元のＬＢＡの最初のアドレス、リアサイン先のＬＢＡの最初のアドレス及びリアサインされているセクタ数を、互いに関連付けて登録している。リアサイン元のＬＢＡは、リアサイン候補テーブル２４１に登録されていたＬＢＡであり、連続数はそのＬＢＡから連続するセクタ数となる。リアサイン先のＬＢＡは、リアサインされた別の物理領域のＬＢＡである。
【００４９】
ＨＤＣ／ＭＰＵ２３は、ホスト５１からリードもしくはライトのコマンドを受信すると、リアサイン欠陥テーブル２４３を参照する。ＨＤＣ／ＭＰＵ２３は、コマンドに対応するＬＢＡがそこに含まれている場合、リアサイン欠陥テーブル２４３に従ってアドレス変換をした後、その変換後のＬＢＡをＣＨＳに変換して磁気ディスク１１にアクセスする。
【００５０】
続いて、図８のフローチャートを参照して、リードもしくはライト処理において、リアサイン候補のＬＢＡ（セクタ）を登録する処理を説明する。ＨＤＣ／ＭＰＵ２３は、ホスト５１からリード・コマンドもしくはライト・コマンドを取得する（Ｓ１１）と、そのコマンドに対応した処理を開始する（Ｓ１２）。その処理の一つとして、ＨＤＣ／ＭＰＵ２３は、タイム・アウト・エラーを判定するための時間計測を開始する（Ｓ１３）。ＨＤＣ／ＭＰＵ２３は内部にクロックを有しており、そのクロックに従ってカウンタ（タイマ）がカウントすることで時間計測する。
【００５１】
ＨＤＣ／ＭＰＵ２３は、タイム・アウトが起きているかを判定する（Ｓ１４）。具体的には、予め設定されている基準時間と計測時間とを比較し、コマンド受信からの経過時間が基準時間に達したかを判定する。計測時間が基準時間に達しておらず、基準時間未満の場合（Ｓ１４におけるＮＯ）、ＨＤＣ／ＭＰＵ２３は、コマンドが指定するＬＡＢのセクタへのメディア・アクセスを実行制御する（Ｓ１５）。メディア・アクセスは、磁気ディスク１１へのデータ書き込み及び読み出しを包含する語である。
【００５２】
本例において、コマンドは複数セクタへのメディア・アクセスを指示する。コマンドは、通常、連続ＬＢＡの複数セクタのアクセスを指示するが、メディア・アクセスすべきセクタのＬＢＡは連続していなくてもよい。リード・コマンドであれば、ＨＤＣ／ＭＰＵ２３は、セクタ単位で磁気ディスク１１からユーザ・データを読み出して、バッファ２４５に格納し、ライト・コマンドであれば、ＨＤＣ／ＭＰＵ２３は、バッファ２４５からセクタ単位でユーザ・データを磁気ディスク１１に転送する。
【００５３】
ＨＤＣ／ＭＰＵ２３は、いずれかのセクタへのメディア・アクセスにおいてエラーが発生した場合、ＥＲＰ処理を実行しそのときのリトライ数をリトライ数ログ・テーブル２４２に登録する（Ｓ１６）。ＨＤＣ／ＭＰＵ２３は、コマンドが指定する全てのセクタについてタイム・アウト前に処理を完了すると（Ｓ１７におけるＹＥＳ）、コマンドに対応する処理が終了となる。メディア・アクセスすべきセクタがまだ残っている場合（Ｓ１７におけるＮＯ）、ＨＤＣ／ＭＰＵ２３は、Ｓ１４からＳ１６の処理を繰り返す。
【００５４】
コマンド対応処理において、ＨＤＣ／ＭＰＵ２３が、計測時間が基準時間に達していると判定した場合（Ｓ１４におけるＹＥＳ）、ＨＤＣ／ＭＰＵ２３は、ホスト５１にタイム・アウト・エラーを通知する（Ｓ１８）。ホスト５１は、その通知に応答して予め設定されている処理を行う。ホスト５１の処理は設計によって異なる。
【００５５】
ＨＤＣ／ＭＰＵ２３は、さらに、リトライ数ログ・テーブル２４２を参照して、リアサイン候補のセクタ（ＬＢＡ）を選択する（Ｓ１９）。ＨＤＣ／ＭＰＵ２３は、メディア・アクセス済みのセクタの中から、そのリトライ数に従って、リアサインするセクタを選択する。選択方法の好ましい一例は上に記載したが、これに限定されるものではない。例えば、最もリトライ数の多いセクタのみをリアサイン候補セクタとして選択してもよい。リアサインするセクタに最もリトライ数の多いセクタを含めることで、すくないリアサイン・セクタ数で処理時間の短縮を効果的に図ることができる。
【００５６】
また、ＨＤＣ／ＭＰＵ２３は未メディア・アクセス・セクタに対応するリトライ数を特定し、その特定したリトライ数に基づいてリアサインするセクタを決定することが好ましい。リトライ数によって、未メディア・アクセス・セクタを処理する場合の対応時間を特定することができる。一つの好ましい方法において、図９のフローチャートに示すように、ＨＤＣ／ＭＰＵ２３は、まず、メディア・アクセスしていないセクタの残数を特定する（Ｓ１９１）。セクタ残数は、コマンドの指定セクタ数とアクセス済みセクタ数とから算出する。
【００５７】
ＨＤＣ／ＭＰＵ２３は、メディア・アクセス済みのセクタのリトライ総数をリトライ数ログ・テーブル２４２を参照して特定し（Ｓ１９２）、そのリトライ総数からメディア・アクセスしていないセクタのリトライ総数を予想する（Ｓ１９３）。予想方法の好ましい一つは、メディア・アクセス済みセクタのリトライ総数と、メディア・アクセス済みセクタ数と未メディア・アクセス・セクタ数との比とを使用して決定する。なお、他の計算方法に従って予想数を決定してもよい。
【００５８】
ＨＤＣ／ＭＰＵ２３は、予想したリトライ総数に基づいて、リアサイン候補のセクタをメディア・アクセス済みセクタの中から決定する（Ｓ１９４）。好ましい方法の一つは、選択するセクタのリトライ総数が予想したリトライ総数以上となるように、リアサインするセクタを選択する。これによって、同様のアクセスを指示された場合にタイム・アウトとなる可能性を効果的に抑えることができる。一例を、図３を参照して上述した。この他、リアサインするセクタのリトライ総数が予想リトライ総数の予め設定された割合以上、例えば８０％以上となるように、リアサインするセクタを選択してもよい。
【００５９】
リアサインするセクタとして、図３を参照して説明したように、リトライ数が多いセクタから選択することは好ましい方法の一つである。この他、メディア・アクセス済みのセクタのＬＢＡに基づいて、リアサインするセクタを選択することは好ましい他の方法の一つである。具体的には、ＥＲＰを実行した連続するＬＢＡのセクタが存在する場合、その連続セクタのリトライ数に基づいてリアサインするセクタを選択する。例えば、連続するセクタの場合、それらのリトライ合計数を基準として、リトライ数の多いセクタまたは連続セクタからリアサイン候補のセクタとして選択する。リアサイン欠陥テーブル２４３は、連続セクタを１エントリで登録することができるため、リアサイン欠陥テーブル２４３に登録するエントリ数を、少なくすることができる。また、
【００６０】
上述の例は、未メディア・アクセス・セクタのリトライ数をＨＤＣ／ＭＰＵ２３が予想することでそれを特定するが、この他、実際に未メディア・アクセス・セクタのリトライ数を測定し、それによってリトライ数を特定してもよい。リトライ数を予想することで処理時間の短縮を図ることができるが、実際にリトライ数を測定することでより正確な値を得ることができる。図１０のフローチャートに示すように、ＨＤＣ／ＭＰＵ２３は、メディア・アクセスすることなくコマンド対応処理が終了した各セクタのリトライ数を測定する（Ｓ１９５）。そして、その測定されたリトライ数に基づいてリアサイン候補のセクタを決定する（Ｓ１９６）。
【００６１】
リトライ数の測定は、ホスト５１とのインターフェースがアイドル状態にある間に行うことが好ましい。これによって、パフォーマンスの低下を防止することができる。リトライ数の測定は、リード処理におけるエラーの場合と、ライト処理におけるエラーの場合とで異なる。リード処理においてタイム・アウトが起きた場合、ＨＤＣ／ＭＰＵ２３は未メディア・アクセス・セクタを実際に読み出し、各セクタのリトライ数を測定する。エラーが発生した場合には、ＥＲＰテーブル２４４に従って各ＥＲＰステップを実行する。
【００６２】
ライト処理においてタイム・アウトが発生した場合に、メディア・アクセスしてない各セクタに対して実際にデータを書き込むことはできない。従って、データ書き込みを省略した処理をＨＤＣ／ＭＰＵ２３は実行することで、各セクタのリトライ数を測定する。ライト処理のＥＲＰは、ＲＷチャネル２１のパラメータ変更や、管理領域へのダミー・ライトあるいはシークの繰り返しなど、サーボ・データの正確な読み出しの回復を図るものである。従って、これらのＥＲＰステップを、データ書き込みをスキップした形で実行することが好ましい。なお、リード及びライトの各リトライ数測定は、ＥＲＰテーブル２４４に従わず、同一条件でのリトライを繰り返してもよい。
【００６３】
ＨＤＣ／ＭＰＵ２３は、リアサイン候補テーブル２４１に登録されているＬＢＡのセクタをリアサインする。好ましくは、ＨＤＣ／ＭＰＵ２３は、ライト・コマンドに対応した処理において、上記リアサインを実行する。ライト処理は新たにデータを書き込むもので、リアサインのための書き込みを省略することができ、リアサインの処理効率を上げることができる。なお、ライト処理に限らず、アイドル状態にあるときにリアサイン処理を実行してもよい。
【００６４】
図１１のフローチャートに示すように、ＨＤＣ／ＭＰＵ２３は、ライト・コマンドを取得すると（Ｓ３１）、リアサイン候補テーブル２４１を参照し、コマンドが指示するＬＢＡの中にリアサイン候補テーブル２４１に登録されているＬＢＡがあるか確認する（Ｓ３２）。リアサイン候補テーブル２４１に登録されたＬＢＡをライト・コマンドが含まない場合（Ｓ３２におけるＮＯ）、ＨＤＣ／ＭＰＵ２３は、リアサイン処理をすることなくライト・コマンドに対応した処理を行う。
【００６５】
ライト・コマンドが指定するＬＢＡがリアサイン候補テーブル２４１に登録されている場合（Ｓ３２におけるＹＥＳ）、ＨＤＣ／ＭＰＵ２３はそのＬＢＡのセクタのリアサイン処理を開始する。まず、ＨＤＣ／ＭＰＵ２３は、リアサイン候補テーブル２４１を参照して、そのセクタがリード処理において登録されたものか、ライト処理において登録されたものであるかを確認する（Ｓ３３）。ライト処理において登録されたセクタである場合（Ｓ３３におけるＮＯ）、ＨＤＣ／ＭＰＵ２３はそのセクタのリアサインを行う（Ｓ３４）。具体的には、ＨＤＣ／ＭＰＵ２３は、リアサイン先へのデータの書き込みと、リアサイン欠陥テーブル２４３への登録を行う。
【００６６】
リード処理において登録されたセクタである場合（Ｓ３３におけるＹＥＳ）、ＨＤＣ／ＭＰＵ２３は、リアサイン前に、そのセクタのリード・ベリファイを実行する（Ｓ３５）。具体的には、ＨＤＣ／ＭＰＵ２３は、そのセクタにライト・データを書き込む。さらに、そのセクタから書き込んだデータの読み出しを行い、エラー起こすことなく正常に読み出すことができるかを確認する（Ｓ３６）。エラーが起きることなく正常にデータを読み出すことができた場合（Ｓ３６におけるＹＥＳ）、ＨＤＣ／ＭＰＵ２３はそのセクタのリアサインをすることなく処理を終了する。また、ＨＤＣ／ＭＰＵ２３は、リアサイン候補テーブル２４１に登録されているエントリを削除する。
【００６７】
再度エラーが発生した場合（Ｓ３６におけるＮＯ）、ＨＤＣ／ＭＰＵ２３はそのセクタのリアサインをする（Ｓ３４）。リードにおいては、磁気ディスク１１の欠陥ではなく、ライト・データに依存してエラーが発生することある。このため、リード・ベリファイによってセクタ欠陥の確認を行うことができ、ライト状態に起因する一時的なエラーによって、不要に欠陥セクタの登録をすることを防ぐことができる。なお、エラーが発生した場合でも、ＥＲＰを実行して基準リトライ数内で読み出すことができた場合、リアサインを行うことなくデータ書き込みを行うようにしてもよい。また、リード・ベリファイ処理を行うことが好ましいが、設計によってはこれを省略してもよい。
【００６８】
以上の説明において、ＨＤＣ／ＭＰＵ２３は、リアサインするセクタの選択を、リトライ数を基準して行う。これに対して、ＨＤＣ／ＭＰＵ２３は、実際に測定した処理時間を基準としてリアサインするセクタを決定してもよい。例えば、ＨＤＣ／ＭＰＵ２３はＥＲＰを行った各セクタの処理時間を測定し、その測定時間から未メディア・アクセス・セクタの処理時間を予想することができる。
【００６９】
いずれの場合においても、ＨＤＣ／ＭＰＵ２３は各処理に対応する時間を特定しており、その基準がリトライ数であるか、計測時間であるかが異なることになる。リトライ数を使用することで、ＨＤＣ／ＭＰＵ２３内の処理を単純化することができる。一方、リトライ数は実際の処理時間と一致するものではないので、ＨＤＣ／ＭＰＵ２３が時間測定を行うことで、より確実にタイム・アウト・エラーの可能性を低減することができる。
【００７０】
以上、本発明を好ましい実施形態を例として説明したが、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。例えば、本発明は磁気ディスク装置に限らず、他のタイプのメディアを使用するデータ記憶装置に適用することができる。
【００７１】
また、メディア・アクセスとしてリード処理のみを行うデータ記憶装置に本発明を適用することができる。あるいは、リードもしくはライトの一方のメディア・アクセスのみにおいて、本発明のリアサイン処理を行ってもよい。本発明のリアサインの手法は、タイム・アウトの場合に限定されるものではなく、ＨＤＤに設定されている他の基準時間を使用して、本発明のリアサイン処理を行ってもよい。
【図面の簡単な説明】
【００７２】
【図１】本実施形態にかかるＨＤＤの全体構成を模式的に示すブロック図である。
【図２】本実施形態にかかる磁気ディスク上に記録されているデータの物理フォーマットを模式的に示す図である。
【図３】本実施形態にかかるリアサイン処理の一例において、メディア・アクセスされたセクタとその中からリアサインする候補として選択されたセクタを模式的に表している。
【図４】本実施形態にかかるリアサイン処理に関連する構成を模式的に示すブロック図である。
【図５】本実施形態にかかるリトライ数ログ・テーブルの一例を模式的に示す図である。
【図６】本実施形態にかかるリアサイン候補テーブルの一例を模式的に示す図である。
【図７】本実施形態にかかるリアサイン欠陥テーブルにおける１エントリの一例を模式的に示す図である。
【図８】本実施形態において、リードもしくはライト処理においてリアサイン候補のＬＢＡ（セクタ）を登録する処理を説明するフローチャートである。
【図９】本実施形態において、メディア・アクセスしたセクタからリアサイン候補を選択する処理を示すフローチャートである。
【図１０】本実施形態において、メディア・アクセスしたセクタからリアサイン候補を選択する他の態様の処理を示すフローチャートである。
【図１１】本実施形態において、リアサイン候補として登録されているセクタのリアサインを説明するフローチャートであある。
【符号の説明】
【００７３】
１  ハードディスク・ドライブ、１０  エンクロージャ、１１  磁気ディスク
１２  ヘッド素子部、１４  スピンドル・モータ、１５  ボイス・コイル・モータ
１６  アクチュエータ、２０  回路基板、２１  リード・ライト・チャネル
２２  モータ・ドライバ・ユニット、２３  ハードディスク・コントローラ／ＭＰＵ
２４  ＲＡＭ、５１  ホスト、１１１  サーボ領域、１１２  データ領域
１１３  データ・トラック、１１４ａ−ｃ  ゾーン、２４１  リアサイン候補テーブル
２４２  リトライ数ログ、２４３  リアサイン欠陥テーブル
２４４  エラー・リカバリ・プロシージャ・テーブル、２４５  バッファ
【図１】
2008021351.tif 000003
【図２】
2008021351.tif 000004
【図３】
2008021351.tif 000005
【図４】
2008021351.tif 000006
【図５】
2008021351.tif 000007
【図６】
2008021351.tif 000008
【図７】
2008021351.tif 000009
【図８】
2008021351.tif 000010
【図９】
2008021351.tif 000011
【図１０】
2008021351.tif 000012
【図１１】
2008021351.tif 000013