(57)【要約】【課題】ＬＢＡを振り直した場合に記録ディスクを再フォーマットすることなく使用可能セクタを正常に使用できるようにする。【解決手段】当該ハードディスク装置は、ＬＢＡの振り分けの度に、振り分けを行ったハードディスク装置の世代（新しい世代）と過去に振り分けを行ったときのハードディスク装置の世代（古い世代）とのＬＢＡの差分値を管理する。また、記録ディスク上の各セクタに、アクセスしたときの世代と、その世代のＬＢＡとを書き込む。そして、記録ディスクへのデータの書き込み時などに、アクセス先のセクタが新しい世代において一度も使用されていないかを、セクタに書き込まれている世代により判定する。世代が新しい世代ではない場合、新しい世代のＬＢＡを対応する差分値を加算するなどしてセクタに書き込まれているであろうＬＢＡに補正し、ＬＢＡチェックが正しければ未使用のセクタであるとして、新しい世代でデータの書込みを行う。【選択図】図４
2019050066.tif 000002
【特許請求の範囲】
【請求項１】
ホストからのアドレス指定をＬＢＡにより受け付けるハードディスク装置において、
前記ＬＢＡの再振り分けにより更新される古い世代のＬＢＡと、再振り分け後の新しい世代のＬＢＡと、の差分値を対応付けて設定する設定手段と、
前記ホストからの読み取り命令または書込み命令により前記ＬＢＡが指定された場合、該指定されたＬＢＡに対応するセクタに書き込まれているデータを読み取る読取手段と、
前記読取手段が読み取った前記データに含まれている世代情報が前記新しい世代を示す世代情報か否かを判定する第１判定手段と、
前記第１判定手段が前記新しい世代を示す世代情報ではないと判定した場合に、前記新しい世代のＬＢＡを前記設定手段が設定した前記差分値に基づいて補正する補正手段と、
前記補正手段により補正されたＬＢＡによりセクタエラーを判定する第２判定手段と、
前記ホストからの命令が書込み命令の場合に、前記第２判定手段が判定した前記セクタエラーではないセクタに書き込まれているデータを、前記新しい世代の世代情報と前記指定された新しい世代のＬＢＡとを含む新しい世代のユーザデータで上書きする書込手段と、
を有するハードディスク装置。
【請求項２】
前記ホストからの命令が読み取り命令で、前記第１判定手段が前記新しい世代を示す世代情報ではないと判定した場合に、前記セクタの読取値ではない所定値を前記ホストに返す出力手段を有する、
ことを特徴とする請求項１に記載のハードディスク装置。
【請求項３】
前記出力手段は、
前記第１判定手段が前記新しい世代を示す世代情報であると判定した場合に、前記セクタの読取値を前記ホストに返す、
ことを特徴とする請求項２に記載のハードディスク装置。
【請求項４】
前記出力手段は、
前記セクタがセクタエラーである場合に、セクタエラーを前記ホストに返す、
ことを特徴とする請求項２または３に記載のハードディスク装置。
【請求項５】
前記設定手段は、
前記再振り分けの度に、各再振り分けにおいて更新されたそれぞれの古い世代のＬＢＡについて世代別に前記差分値を対応付けて設定する、
ことを特徴とする請求項１乃至４の内の何れか一項に記載のハードディスク装置。
【請求項６】
前記補正手段は、
前記設定手段が設定した前記世代別の前記差分値から該当する前記差分値を一つ抽出して前記新しい世代のＬＢＡを前記古い世代のＬＢＡに補正する、
ことを特徴とする請求項５に記載のハードディスク装置。
【請求項７】
前記設定手段は、
前記再振り分けの度に、各再振り分けに時に更新されたそれぞれの古い世代のＬＢＡについて世代別に前記差分値を対応付けて設定し、
前記補正手段は、
前記設定手段が設定した前記世代別の前記差分値から該当する前記差分値を一つ抽出して前記新しい世代のＬＢＡを前記古い世代のＬＢＡに補正し、
前記出力手段は、
前記設定手段が設定した前記世代別の前記差分値の中に該当する差分値が含まれていない場合にセクタエラーを前記ホストに返す、
ことを特徴とする請求項３に記載のハードディスク装置。
【請求項８】
前記出力手段は、
前記補正手段が抽出して補正した前記古い世代のＬＢＡが前記第２判定手段でセクタエラーと判定された場合に、前記セクタエラーを前記ホストに返す、
ことを特徴とする請求項７に記載のハードディスク装置。
【請求項９】
前記セクタに含まれている前記世代情報および前記ＬＢＡは、前記データに付加されているＣＲＣデータに対して排他的論理和により埋め込まれている、
ことを特徴とする請求項１乃至８の内の何れか一項に記載のハードディスク装置。
【請求項１０】
前記設定手段は、前記セクタの物理ブロックの単位に前記差分値を設定する、
ことを特徴とする請求項１乃至９の内の何れか一項に記載のハードディスク装置。
【請求項１１】
ホストからのアドレス指定をＬＢＡにより受け付けるハードディスク装置の制御方法であって、
前記ＬＢＡの再振り分けにより更新される古い世代のＬＢＡと、再振り分け後の新しい世代のＬＢＡと、の差分値を対応付けて設定するステップと、
前記ホストからの読み取り命令または書込み命令により前記ＬＢＡが指定された場合、該指定されたＬＢＡに対応するセクタに書き込まれているデータを読み取るステップと、
前記読み取られたデータに含まれている世代情報が前記新しい世代を示す世代情報か否かを判定するステップと、
前記新しい世代を示す世代情報ではないと判定した場合に、前記新しい世代のＬＢＡを前記設定した差分値に基づいて補正するステップと、
前記補正されたＬＢＡによりセクタエラーを判定するステップと、
前記ホストからの命令が書込み命令の場合に、前記セクタエラーではないセクタに書き込まれているデータを、前記新しい世代の世代情報と前記指定された新しい世代のＬＢＡとを含む新しい世代のユーザデータで上書きするステップと、
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ハードディスク装置および制御方法に関する。
【背景技術】
【０００２】
従来、ハードディスク装置では、ホストからのコマンドやアドレス指定に従い、記録ヘッドを記録ディスク上の指定された位置に移動させ、その位置にあるセクタからデータの読み取りやセクタへのデータの書き込みを行う。そのホストによるアドレス指定方式の一つにＬＢＡ方式がある。ＬＢＡ方式では、ハードディスク装置が、ホストにより指定されるＬＢＡを記録ディスク上のセクタを指す物理アドレスに変換し、ＬＢＡに対応するセクタに記録ヘッドを位置決めする。
【０００３】
しかしながら、ＬＢＡ方式の場合は、故障やユーザ変更などによるハードディスク装置の初期化の度に、アクセス不能となったセクタを除き、その他のセクタ（これを「使用可能セクタ」と呼ぶ）を範囲にＬＢＡを再度振り直し、記録ディスクの再フォーマットを行う。しかし、再フォーマットによって全ての使用可能セクタの初期化を完了させるまでには時間がかかる。一方、記録ディスク上の各セクタには、ユーザデータと共に、ＬＤＰＣ等の誤り訂正符号の誤検出を防ぐためにＣＲＣデータが書き込まれている。再フォーマットは、記録ディスク上の使用可能セクタにある古いＬＢＡに基づくＣＲＣデータを新しいＬＢＡに基づくＣＲＣデータに書き換える処理を含むため、再フォーマットを行わないと、新しいＬＢＡで指定したセクタを読み取る際、そのセクタに古いＬＢＡに基づくＣＲＣデータが書かれていることによりＣＲＣエラーとなってしまい、使用可能セクタを正常に使用できない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７３９４６０６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一つの実施形態は、ＬＢＡを振り直した場合に記録ディスクを再フォーマットすることなく使用可能セクタを正常に使用できるようにするハードディスク装置および制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの実施形態によれば、ホストからのアドレス指定をＬＢＡにより受け付けるハードディスク装置において、設定手段と、読取手段と、第１判定手段と、補正手段と、第２判定手段と、書込手段とを備える。設定手段は、ＬＢＡの再振り分けにより更新される古い世代のＬＢＡと、再振り分け後の新しい世代のＬＢＡと、の差分値を対応付けて設定する。読取手段は、ホストからの読み取り命令または書込み命令によりＬＢＡが指定された場合、そのＬＢＡに対応するセクタに書き込まれているデータを読み取る。第１判定手段は、読取手段が読み取ったデータに含まれている世代情報が新しい世代を示す世代情報か否かを判定する。補正手段は、新しい世代を示す世代情報ではないと判定された場合に、ホストから指定された新しい世代のＬＢＡを設定手段が設定した差分値に基づいて補正する。第２判定手段は、補正手段により補正されたＬＢＡによりセクタエラーを判定する。書込手段は、ホストからの命令が書込み命令の場合に、第２判定手段が判定した前記セクタエラーではないセクタに書き込まれているデータを、新しい世代の世代情報と新しい世代のＬＢＡとを含む新しい世代のユーザデータで上書きする。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態に係るハードディスク装置の構成の一例を示す図である。
【図２】図２は、実施形態に係る磁気ディスクの構成についての説明図である。
【図３】図３は、実施形態に係るハードディスク装置の制御回路の構成の一例を示す図である。
【図４】図４は、実施形態に係る機能ブロックの一例を示す図である。
【図５】図５は、実施形態に係るＭｏｄｉｆｉｅｄＣＲＣデータの生成手順と、セクタのデータ構造の一例を示す図である。
【図６】図６は、実施形態に係る世代対応テーブルのデータ構造の一例を示す図である。
【図７】図７は、実施形態に係るＬＢＡを一貫して管理するための方法について説明するための図である。
【図８】図８は、実施形態に係る磁気ディスク上の各世代における未使用のセクタを使用するタイミングの一例を説明するための概念図である。
【図９】図９は、実施形態に係るＭＰＵによるデータの読み取りおよび書込み時の処理の一例を示すフロー図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかるハードディスク装置および制御方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００９】
（実施形態）
本実施形態のハードディスク装置は、ホストからＬＢＡ（Logical  Block  Addressing）によりアドレス指定を受け付けるハードディスク装置が適用対象になる。そのようなハードディスク装置において、初期化時に行うＬＢＡの再振り分けの際に、記録ディスクの再フォーマットを省略し、初期化の完了までの時間を短縮する。本実施形態のハードディスク装置では、再フォーマットに代わる手段を有し、次のように動作する。例えば、ＬＢＡの振り分けの度に、そのときのハードディスク装置の世代（新しい世代）のＬＢＡと過去に振り分けを行ったときの古い世代のＬＢＡとの差分値を管理する。また、記録ディスク上の各セクタに対し、ハードディスク装置のアクセスしたときの世代と、当該世代のＬＢＡとを書き込む。そして、記録ディスクへのデータの書き込み時などにおいて、アクセス先のセクタが新しい世代において一度も使用されていないかを、セクタに書き込まれている世代により判定する。世代が新しい世代ではない場合、新しい世代のＬＢＡを、管理されている差分値を加算するなどしてセクタに書き込まれているであろうＬＢＡに補正し、補正後のＬＢＡでのチェックが正しければ未使用のセクタであるとする。
【００１０】
「世代」は、ＬＢＡの再振り分けの度に一つ更新する。例えば、新品の記録ディスクを組み込んだ時点のハードディスク装置の世代を世代０とする。そして、その記録ディスクを対象にＬＢＡの再振り分けを行った後のハードディスク装置の世代を世代１とする。引き続き、ＬＢＡの再振り分けが行われる度にハードディスク装置の世代を一つ加算する。また、世代は、数値が高いものほど「新しい」（または、「上位」）とする。
【００１１】
以下に、本実施形態のハードディスク装置について、磁気ヘッドと磁気ディスクとを有するハードディスク装置への適用例を示す。「磁気ディスク」は「記録ディスク」に相当し、「磁気ヘッド」は「記録ヘッド」に相当する。
【００１２】
図１は、実施形態に係るハードディスク装置の構成の一例を示す図である。図１には、ハードディスク装置１の上部カバーを外した場合の筐体１００内部の構成を示している。図１に示すように、ハードディスク装置１は磁気ディスク１０１や、データの読み取りおよび書込みを行う磁気ヘッド１０２などを備えている。
【００１３】
磁気ディスク１０１は、２枚設けられている磁気ディスクの内の１枚（第１の磁気ディスク１０１）であり、もう１枚（第２の磁気ディスク１０１（図３参照））は、第１の磁気ディスク１０１の背面側（図１の紙面の奥行側）に配置されている。なお、本実施形態では、磁気ディスクの枚数を２枚として説明するが、磁気ディスクの枚数は、１枚だけでもよいし、また３枚以上であってもよい。第１の磁気ディスク１０１および第２の磁気ディスク１０１は、スピンドルモータの回転軸１０３に対し、回転軸１０３の軸方向に所定ピッチで装着されており、当該回転軸１０３の回転駆動により同じ回転数で一体的に回転する。
【００１４】
磁気ヘッド１０２はアーム１０４の先端部に取り付けられている。アーム１０４は、ＶＣＭ（Voice  Coil  Motor）１０５により駆動され、軸１０６を中心に正負の両方向に決められた範囲内で回転する。この動作により、磁気ヘッド１０２は破線Ｔ上を移動し、磁気ディスク１０１の半径方向の何れかのトラック上に位置決めする。磁気ヘッド１０２とアーム１０４とからなるヘッドユニットは、各磁気ディスク１０１の表（おもて）面と裏面のそれぞれに１組ずつの計４組が設けられている。
【００１５】
磁気ヘッド１０２は、具体的に、アーム１０４の先端部に設けられているサスペンション１０７の先端にあるヘッドスライダ１０８に搭載されている。磁気ヘッド１０２は、リード素子およびライト素子を有し、リード素子により磁気ディスク１０１上の走査対象の面のデータを読み取り、ライト素子により磁気ディスク１０１上の上記走査対象の面にデータを書き込む。図１に示す例では、磁気ヘッド１０２は第１の磁気ディスク１０１上の表面に対しデータの読み取りおよび書込みを行う。
【００１６】
この他、ハードディスク装置１は、磁気ヘッド１０２を磁気ディスク１０１上から退避してパーキングするランプロード機構１０９などを備える。
【００１７】
図１の紙面の奥行側に位置するハードディスク装置１の底部には、ハードディスク装置１の各部を制御する制御回路２０（図３参照）が設けられている。制御回路２０は、ハードディスク装置１の筐体１００に外部接続のために設けられている接続ピン等のインターフェイスを介してホスト（不図示）と通信し、ホストからのコマンドなどに応じてハードディスク装置１の各部を制御する。
【００１８】
図２は、磁気ディスク１０１の構成についての説明図である。磁気ディスク１０１は、プラッタの両面に磁性体を有し、出荷前にサーボライタなどによりサーボ情報が書き込まれたものである。図２には、サーボ情報が書き込まれたサーボゾーンの配置の一例として放射状に配置されたサーボゾーン１０１ａを示している。磁気ディスク１０１の半径方向には同心円の複数のトラック１０１ｂが所定のピッチで設けられている。各トラック１０１ｂの周回上は多数のセクタが連続的に形成されている。各セクタは磁性領域を有し、データの書き換えが自在である。各セクタのデータ長は、例えば５１２バイトであるが、これに限らず、４キロバイト等、他のデータ長でもよい。セクタが配置されているデータゾーンにおいて、例えば最外周のトラック上にシステム領域を設け、それ以外をユーザ領域としている。
【００１９】
図３は、ハードディスク装置の制御回路の構成の一例を示す図である。なお、図３において、制御対象が図１に示すものと同一のものについては同一の符号を付す。図３に示すように、制御回路２０は、プリアンプ（ＰｒｅＡｍｐ）２１と、リードチャネル回路（ＲＤＣ）２２と、ハードディスクコントローラ（ＨＤＣ）２３と、ＤＳＰ（Digital  Signal  Processor）２４と、ＭＰＵ（Micro  Processing  Unit）２５と、メモリ２６とを有する。
【００２０】
プリアンプ２１は、磁気ヘッド１０２（ライト素子）に書込み信号を送出し、磁気ヘッド１０２（リード素子）の読み取り信号を増幅する。
【００２１】
ＲＤＣ２２は、プリアンプ２１からの読み取り信号を信号整形し、同期クロックの作成、ゲート信号の作成、及び読み取り信号の出力を行う。
【００２２】
ＤＳＰ２４は、スピンドルモータやＶＣＭ１０５を制御してシークやフォローイングなどの位置決め制御を行う。具体的に、ＤＳＰ２４は、ＲＤＣ２２からの読み取り信号から得たサーボ情報を復調し、サーボ情報から復調した位置と目標位置との誤差に従いＶＣＭ駆動指令値を演算することにより、上記位置決め制御を行う。
【００２３】
ＨＤＣ２３は、ＡＴＡ（AT  Attached）等のインターフェイスで、ホストと通信する。また、ＲＤＣ２２からのゲート信号、クロックに応じて、ＲＤＣ２２からの読み取りデータを受け、バッファに格納し、データをホストへ転送する。また、ＨＤＣ２３は、ＲＤＣ２２のゲート信号、クロックに応じて、ホストからの書き込みデータをＲＤＣ２２へ出力する。
【００２４】
ＭＰＵ２５は、ＨＤＣ２３が受け取ったホストからのコマンドを解析し、ハードディスク装置１本体の状態の監視や、ハードディスク装置１の各部の制御などを行う。例えば、ＭＰＵ２５は、本実施形態の初期化処理や、ホストに返すデータを書き換えるなどの再フォーマット省略処理などを行う。メモリ２６は、データの書き換えが自在な不揮発性メモリである。メモリ２６は、ＭＰＵ２５が実行する各種処理や制御のためのプログラム（初期化プログラムや再フォーマット省略プログラムなど）やデータ（新しい世代情報、ＬＢＡ／物理アドレス変換テーブル、世代対応テーブルなど）を格納する。
【００２５】
当該構成において、ホストによるハードディスク装置１のアドレス指定方式はＬＢＡ方式であり、ＨＤＣ２３がホストから受け取ったコマンドに従ってＭＰＵ２５が各部を制御する。
【００２６】
続いて、初期化について説明する。磁気ディスク上の一部のトラックへメカ故障などにより磁気ヘッドが位置決めできない場合や、磁気ヘッド１個が故障し、それに対応する磁気ディスクの一面の全セクタが使用できなくなる場合など、一部のセクタが使用できなくなることがある。また、磁気ディスクの不良により一部の領域にアクセスすることができなくなることもある。このような場合に、ハードディスク装置１の初期化が必要になる。ユーザが変わる場合もハードディスク装置１の初期化が行われる。本実施形態では、このような初期化の手順において、ＬＢＡの再振り分けを行ったときの従来の磁気ディスク上の再フォーマット手続きを省略し、初期化の完了までの時間を短縮する。本実施形態では、従来の磁気ディスク上の再フォーマット手続の代わりに、磁気ディスク上にデータを書き込む際に、その対象とするセクタにユーザデータや後述するＭｏｄｉｆｉｅｄＣＲＣ（Cyclic  Redundancy  Check）データを書き込むことを、アクセス先のセクタに対して順次行う。
【００２７】
図４は、ＭＰＵ２５がメモリ２６のプログラムを適宜実行して実現する機能ブロックの一例を示す図である。図４には、再フォーマットを省略するための主な機能として、設定部２５０と、読出部２５１と、判定部２５２と、補正部２５３と、書込部２５４と、出力部２５５とを示している。
【００２８】
設定部２５０は、ＬＢＡの振り分けの度に、ＬＢＡと再振り分けされた世代とを管理するための「世代対応テーブル」を設定する。具体的に、設定部２５０は、ＬＢＡの再振り分けにより更新される古い世代のＬＢＡと該再振り分けによりシフトした新しい世代のＬＢＡとの差分値を世代ごとに対応付けて設定する。
読出部２５１は、ホストにより指定されたＬＢＡに対応するセクタに書き込まれているデータを読み出す。具体的に、読出部２５１は、ホストからコマンドと共に送信されるＬＢＡに基づき、ＬＢＡに対応するセクタの物理アドレスをＬＢＡ／物理アドレス変換テーブルから取得し、その物理アドレスに基づきプリアンプ２１、ＲＤＣ２２、ＨＤＣ２３、ＤＳＰ２４などを制御し、対象のセクタからデータを読み出す。
【００２９】
判定部２５２は、読出部２５１が読み出したデータに基づいて各種の判定を行う。例えば、読出部２５１が読み出したデータから世代情報を抽出し、抽出した世代情報がメモリ２６に記憶されている新しい世代情報（ハードディスク装置１の今回の初期化の世代）であるかを判定する。この判定では、ハードディスク装置１において今回の世代で上書きを終えているセクタか、それとも過去の何れかの初期化の世代で書込み又は上書きを行った後に今回の世代で一度も上書きされていない未使用のセクタかが分かる。その他の判定については、処理フローと共に説明する。
【００３０】
補正部２５３は、判定部２５２が今回の世代ではないと判定すると、今回の世代のＬＢＡを世代対応テーブルに基づいて読出部２５１が読み出したデータに含まれているであろう古い世代のＬＢＡに補正する。
【００３１】
書込部２５４は、ホストにより指定された書込み先のセクタに対し、ユーザデータに今回の世代の世代情報と今回の世代のＬＢＡとを含めて上書きする。
【００３２】
出力部２５５は、判定部２５２の判定結果に基づいてＨＤＣ２３からホストに所定データを返信させる。例えば、ホストにより指定されたＬＢＡに対応するセクタを読み取った結果、新しい世代で書き込まれたデータであれば、読取値をそのまま返信させる。また、古い世代において書き込まれたデータであれば、未使用のセクタであることを示すデータ値（例えばオール０など）を返信させる。
【００３３】
ここで、設定部２５０は「設定手段」に対応する。読出部２５１は「読取手段」に対応する。判定部２５２は「第１判定手段」および「第２判定手段」に対応する。補正部２５３は「補正手段」に対応する。書込部２５４は「書込手段」に対応する。出力部２５５は「出力手段」に対応する。
【００３４】
以下、再フォーマットを省略するための説明として、磁気ディスク上に書き込むＭｏｄｉｆｉｅｄＣＲＣデータの構成と、世代対応テーブルの構成と、磁気ディスク上の各セクタのデータの更新手続きについて詳しく説明する。
【００３５】
（ＭｏｄｉｆｉｅｄＣＲＣデータ）
図５は、ＭｏｄｉｆｉｅｄＣＲＣデータの生成手順と、セクタのデータ構造の一例を示す図である。ＭＰＵ２５は、図５（ａ）に示すように、ホストから受け取ったユーザデータＤ１からＣＲＣを計算してＣＲＣデータＤ２を生成する。更に、ＭＰＵ２５は、生成したＣＲＣデータＤ２の所定数のビット列をＬＢＡｄ３１とＸＯＲ（排他的論理和）し、ＣＲＣデータＤ２の残りのビット列を世代情報ｄ３２とＸＯＲし、ＬＢＡｄ３１と世代情報ｄ３２とを埋め込んだＣＲＣデータ（これを「ＭｏｄｉｆｉｅｄＣＲＣデータ」と呼ぶ）Ｄ３を生成する。
【００３６】
ここでＬＢＡｄ３１および世代情報ｄ３２は、埋め込み時点にハードディスク装置１のメモリ２６に記憶されている最新のＬＢＡおよび最新の世代情報である。「世代情報」は「ＬＢＡ」の再振り分けの度に世代を一つ更新した情報である。例えば、新品の磁気ディスク１０１を組み込んだ時点のハードディスク装置１の世代を世代０とする。そして、その磁気ディスク１０１において磁気ヘッド１０２や磁気ディスク１０１の不良などによりＬＢＡの再振り分けを行った後のハードディスク装置１の世代を世代１とする。引き続き、ＬＢＡの再振り分けが行われる度にハードディスク装置１の世代を一つ加算する。世代情報は、数値が高いものほど「新しい」（または、「上位」）となる。
【００３７】
なお、ＣＲＣデータＤ２に対するＬＢＡｄ３１および世代情報ｄ３２の埋め込み順序や、ＣＲＣデータＤ２に対するＬＢＡｄ３１および世代情報ｄ３２の埋め込み位置は、この例に限らず適宜変形してもよい。例えば、埋め込みの順序を入れ替えたり、同時に埋め込むようにしたり、埋め込み位置を変えたりしてもよい。
【００３８】
磁気ディスク１０１上の各セクタは、図５（ｂ）に示すようにユーザデータＤ１とＭｏｄｉｆｉｅｄＣＲＣデータＤ３などの付加情報とが書き込み可能になっている。付加情報には、ＭｏｄｉｆｉｅｄＣＲＣデータＤ３の他にＥＣＣ（Error  Checking  and  Correction）データなどが含まれる。なお、初回は、オール１のデータからＣＲＣを計算するなどし、そのＣＲＣデータＤ２に、世代０の最初に振り分けたＬＢＡｄ３１と、世代０を示す世代情報ｄ３２とを埋め込んだＭｏｄｉｆｉｅｄＣＲＣデータＤ３を各セクタに書き込むようにする。
【００３９】
（世代対応テーブル）
ＭＰＵ２５は、世代対応テーブルを生成し、生成した世代対応テーブルによりハードディスク装置１の各世代におけるＬＢＡの再振り分けの変遷履歴を管理する。ここでは、世代対応テーブルのデータ構造の一例を示し、ＭＰＵ２５が各世代に渡ってＬＢＡを一貫して管理するための方法について説明する。
【００４０】
図６は、世代対応テーブルのデータ構造の一例を示す図である。図６には、世代対応テーブルＴとして、「世代」ｔ１と、「世代別再振り分けＬＢＡ」ｔ２と、「ＬＢＡの差分」ｔ３とを対応付けたデータ構造のものを示している。
【００４１】
「世代」ｔ１には、ハードディスク装置１の「世代情報」として、ハードディスク装置１がＬＢＡを再振り分けした時点の「世代情報」を設定する。
【００４２】
「世代別再振り分けＬＢＡ」ｔ２と「ＬＢＡの差分」ｔ３には差分情報を設定する。具体的に、「世代別再振り分けＬＢＡ」ｔ２と「ＬＢＡの差分」ｔ３には、それぞれ、各世代において再振り分けしたＬＢＡと、再振り分けしたＬＢＡの各世代間におけるＬＢＡの差分値を設定する。例えば、「世代別再振り分けＬＢＡ」ｔ２には、同一のセクタにおいて元のＬＢＡに対応しない番号が割り振られたときのＬＢＡを設定し、「ＬＢＡの差分」ｔ３には、「世代別再振り分けＬＢＡ」ｔ２に設定したＬＢＡの各世代間におけるＬＢＡの差分値を設定する。
【００４３】
図７は、ＬＢＡを一貫して管理するための方法について説明するための図である。図７には、ハードディスク装置１の世代が変わるごとにＬＢＡが再度振り分けられる様子を表す概念図と、それぞれの世代における世代対応テーブルＴの設定例とを示している。ここでは一例として、世代０〜世代２までのものを示している。
【００４４】
図７において、物理ブロックＢ１、Ｂ２、・・・は、この順に磁気ディスク１０１上の先頭セクタから最後尾セクタまでを表している。例えば、先頭セクタは、第１の磁気ディスク１０１の表面の先頭セクタであり、その表面の全セクタ、裏面の全セクタ、および第２の磁気ディスク１０１の表面の全セクタと続き、裏面の最後尾セクタで完結する。
【００４５】
物理ブロックＢ１、Ｂ２、・・・の内部に示す数字は、各セクタに割り振ったＬＢＡを示している。例えば世代０の物理ブロックＢ１に示す「０〜９９」は、物理ブロックＢ１に連続して並ぶ１００個のセクタに、その順にＬＢＡとして０番、１番、・・・、９９番を割り振ったことを表している。物理ブロックＢ３や物理ブロックＢ５に示す「使用不可」は、それぞれの直前の世代においてその領域へのアクセスができなくなった使用不可セクタの領域を表している。例えば世代１と世代２に示す「使用不可」の物理ブロックＢ３は、世代０において使用不可セクタになった領域である。また、世代２に示す「使用不可」の物理ブロックＢ５は、世代１において使用不可セクタになった領域である。
【００４６】
図７に示す矢印Ｙ１、Ｙ２は、ＬＢＡの再振り分けにより直前の世代からの「再振り分けされたＬＢＡ」のシフト位置を示している。この例では、世代０で物理ブロックＢ３が「使用不可」になり、世代１で物理ブロックＢ３以降のＬＢＡが１００番だけシフトしたことを表している。更に、世代１で物理ブロックＢ５が「使用不可」になり、世代２で物理ブロックＢ５以降のＬＢＡが１００番だけシフトしたことを表している。
【００４７】
各世代の物理ブロックＢ１、Ｂ２、・・・の直下に示す差分Ｃ１、Ｃ２、・・・は、各物理ブロックＢ１、Ｂ２、・・・における当該世代よりも前の各世代におけるＬＢＡの差分値を表している。
【００４８】
具体的に、世代０では、それよりも前の世代がないため、各物理ブロックＢ１、Ｂ２、・・・の差分値は全て０である。世代１では、それよりも前の世代が世代０であるため、各物理ブロックＢ１、Ｂ２、・・・の差分値は世代０との差分値になっている。ここでは、世代１において物理ブロックＢ３以降のＬＢＡが１００番ずつシフトしたため、物理ブロックＢ３以降のＬＢＡの差分値がそれぞれ「１００」になる。世代２では、それよりも前の世代が世代０と世代１のため、各物理ブロックＢ１、Ｂ２、・・・の差分値は世代０との差分値と世代１との差分値の２つになる。ここでは、世代２において物理ブロックＢ５以降のＬＢＡが１００番ずつシフトしている。
【００４９】
このため、世代１との差分値は、物理ブロックＢ５以降のＬＢＡの差分値がそれぞれ「１００」になる。世代０との差分値は、世代１における世代０の差分値と、上記世代１の差分値との足し合わせ結果となる。つまり、物理ブロックＢ４は「１００（世代１における世代０の差分値）＋０（世代１の差分値）＝１００」となる。物理ブロックＢ６と物理ブロックＢ７は「１００（世代１における世代０の差分値）＋１００（世代１の差分値）＝２００」となる。
【００５０】
このように、世代０において一部のセクタが使用できなくなると、ＬＢＡの再振り分けを実施し、この実施により世代を１代繰り上げる。世代０でＬＢＡの再振り分けを実施した場合は世代１になり、世代１でＬＢＡの再振り分けを実施した場合は世代２になる。つまり、世代ｎ（ｎは０以上の整数）でＬＢＡの再振り分けを実施した場合は世代ｎ＋１になる。
【００５１】
続いて、図７の世代別の世代対応テーブルＴの登録（設定）例について説明する。世代０のときの世代対応テーブルＴ０では、ＬＢＡが再振り分けされていないため登録がない。
【００５２】
世代１のときの世代対応テーブルＴ１では、使用不可セクタが発生した直前の世代（つまり世代０）との差分を示すレコード情報を登録する。具体的に、世代情報「０」と、差分Ｃ２に０以外の値が設定されている物理ブロックのＬＢＡの番号と、これらに対応する差分Ｃ２の値とを有するレコード情報を登録する。本例では、物理ブロックＢ４に対応する差分値は１００で０以外である。従って、世代情報「０」と、物理ブロックＢ４のＬＢＡの番号２００〜番号２９９と、差分Ｃ２の値１００とを有するレコード情報を登録する。なお、ＬＢＡの番号２００以後は全て差分値１００である。世代対応テーブルＴ１に示すＬＢＡの番号「２００〜」は理解を容易にするため番号２００以後の全てを表したものである。
【００５３】
世代２のときの世代対応テーブルＴ２では、世代０のレコード情報を更新し、使用不可セクタが発生した直前の世代（つまり世代１）との差分を示すレコード情報を追加登録する。具体的な登録方法は世代１で説明したものと同様である。世代０のレコード情報の更新は差分Ｃ３に基づいて行い、世代１のレコード情報の更新は差分Ｃ４に基づいて行う。
【００５４】
このように、ＬＢＡの再振り分けを行う度に、上述したように世代対応テーブルＴを登録する。また、登録の際、世代を重ねるごとに使用不可セクタが新たに加わり、それ以前に設定した各世代の差分情報も変わるため、変化のあった世代の設定値の更新も行う。
【００５５】
なお、世代対応テーブルＴのデータ構造は一例であり、世代ごとにその差分だけを覚えておくように構成を変形してもよい。
【００５６】
（磁気ディスク１０１上の各セクタのデータ更新手続き）
本実施形態において、ＭＰＵ２５は、ホストからＬＢＡで指定されたセクタにユーザデータの書き込み命令を受け取った際などに、世代対応テーブルＴ（図６参照）により当該セクタが未使用のセクタとしてよいセクタかを判定し、未使用のセクタとしてよい場合に、当該セクタにユーザデータを書込み、ＭｏｄｉｆｉｅｄＣＲＣデータを更新する。
【００５７】
当該再フォーマットを省略するための処理について更に具体的に説明する。
本実施形態において、ＭＰＵ２５は、ＬＢＡにより指定されたセクタが上記の未使用のセクタであるかを判定する。そして、ＭＰＵ２５は、未使用のセクタである場合に再フォーマットを省略する処理を行う。例えば、ホストから書き込み命令を受けている場合、ＭＰＵ２５は、指定されたセクタに対しユーザデータを書き込むと共に、既に書き込まれている古いＭｏｄｉｆｉｅｄＣＲＣデータを当該ハードディスク装置１の新しいＭｏｄｉｆｉｅｄＣＲＣデータにより更新する制御を行う。新しいＭｏｄｉｆｉｅｄＣＲＣデータは、当該ハードディスク装置１がメモリ２６に記憶している今回の世代の世代情報と、今回の再振り分けしたＬＢＡとを、ＭＰＵ２５が、ユーザデータからＣＲＣ計算したＣＲＣデータに埋め込むことにより生成する。
【００５８】
図８は、磁気ディスク１０１上の各世代における未使用のセクタを使用するタイミングの一例を説明するための概念図である。図８には、世代別に、物理ブロックＢ１、Ｂ２、・・・の書き換え前のＭｏｄｉｆｉｅｄＣＲＣデータＤ３が示す世代と、書き換え後のＭｏｄｉｆｉｅｄＣＲＣデータＤ３が示す世代とを示している。物理ブロックＢ１、Ｂ２、・・・における世代別に発生する「使用不可」とＬＢＡの再振り分け方は、図７に従っている。
【００５９】
世代０では、図８のＭｏｄｉｆｉｅｄＣＲＣデータのパターンＤ３０に示すように、各物理ブロックＢ１、Ｂ２、・・・のＭｏｄｉｆｉｅｄＣＲＣデータＤ３は全て「世代０」である。
【００６０】
世代１では、ＬＢＡの振り分け直後、各物理ブロックＢ１、Ｂ２、・・・のＭｏｄｉｆｉｅｄＣＲＣデータＤ３は「世代０」に示すＭｏｄｉｆｉｅｄＣＲＣデータのパターンＤ３０の設定になっており、ＬＢＡが「世代１」のパターンに一致しない。その後においてハードディスク装置１が使用されている期間内に書込みが指定されたセクタが、「世代１」のＭｏｄｉｆｉｅｄＣＲＣデータに書き換えられることになる。この例では、ＭｏｄｉｆｉｅｄＣＲＣデータのパターンＤ３１に示すように、セクタ「２００〜２９９」とセクタ「４００〜４９９」が「世代１」のＭｏｄｉｆｉｅｄＣＲＣデータに書き換えられたものを示している。
【００６１】
世代２では、ＬＢＡの振り分け直後、各物理ブロックＢ１、Ｂ２、・・・のＭｏｄｉｆｉｅｄＣＲＣデータＤ３は「世代１」に示すＭｏｄｉｆｉｅｄＣＲＣデータのパターンＤ３１の設定になっており、ＬＢＡが「世代２」のパターンに一致しない。その後においてハードディスク装置１が使用されている期間内に書込みが指定されたセクタが、「世代２」のＭｏｄｉｆｉｅｄＣＲＣデータに書き換えられることになる。この例では、ＭｏｄｉｆｉｅｄＣＲＣデータのパターンＤ３２に示すように、セクタ「２００〜２９９」が直前の「世代１」から「世代２」のＭｏｄｉｆｉｅｄＣＲＣデータに書き換えられたものを示している。また、セクタ「４００〜４９９」が最初の「世代０」から「世代２」のＭｏｄｉｆｉｅｄＣＲＣデータに書き換えられたものを示している。
【００６２】
このように、ホストによりユーザデータの書き込み先として未使用のセクタが指定されたタイミングで、磁気ディスク１０１上の当該未使用のセクタに書き込まれている古い世代のＭｏｄｉｆｉｅｄＣＲＣデータを新しい世代のＭｏｄｉｆｉｅｄＣＲＣデータに書き換える。磁気ディスク１０１上には、全セクタに渡り古い各世代のＭｏｄｉｆｉｅｄＣＲＣデータが混在することになるが、ホストにより書き込み先として指定されたタイミングで、その指定されたセクタの古い世代のＭｏｄｉｆｉｅｄＣＲＣデータが新しい世代のＭｏｄｉｆｉｅｄＣＲＣデータに書き換えられ、その世代でアクセスするセクタの使用が可能になる。つまり、従来はハードディスク装置の世代が変わるごとに磁気ディスク１０１上の全てのセクタを再フォーマットしていたが、再フォーマットを省略しても各世代においてセクタの使用が可能になる。
【００６３】
（再フォーマットの省略処理）
続いて、ハードディスク装置１が各世代に渡って行う再フォーマットの省略処理について説明する。ハードディスク装置１ではＬＢＡの再振り分けに伴い、設定部２５０が世代対応テーブルＴを設定する。そして、各世代において、ＭＰＵ２５が、設定されている世代対応テーブルＴに基づき次の処理を行うことで再フォーマットを省略する。
【００６４】
図９は、ＭＰＵ２５によるデータの読み取りおよび書込み時の処理の一例を示すフロー図である。先ず、ＭＰＵ２５は、ホストが指定したＬＢＡに対応する磁気ディスク１０１上のセクタからデータを読出す（Ｓ１）。
【００６５】
続いて、ＭＰＵ２５は、読出したデータに付加されているＥＣＣからエラー訂正処理を実行し（Ｓ２）、ＥＣＣによるエラー訂正が可能かを判定する（Ｓ３）。
【００６６】
ＥＣＣによるエラー訂正が可能でない場合（Ｓ３：Ｎｏ判定）、ＭＰＵ２５は、そのセクタがセクタエラー（この場合、アンコレクタブルエラー）であることをＨＤＣ２３を通じてホストに返す（Ｓ４）。なお、ＭＰＵ２５は、ステップＳ１に戻ってデータを読み直したり、磁気ディスク１０１上の読む位置をほんの少しずらしたり、より強力なＥＣＣを試したりして、それでもエラー訂正が可能でない場合にセクタエラーであることを返すようにしてもよい。
【００６７】
ＥＣＣによるエラー訂正が可能な場合やＥＣＣのエラーが検出されなかった場合には（Ｓ３：Ｙｅｓ判定）、ＭＰＵ２５はＣＲＣ計算を実行し（Ｓ５）、続いて当該データのＣＲＣデータに埋め込まれている世代情報とＬＢＡとを抽出する（Ｓ６）。ステップＳ５のＣＲＣ計算の結果が正しければ世代情報とＬＢＡとが抽出される。ＣＲＣ計算の結果が崩れていれば世代情報とＬＢＡとが崩れた値で抽出される。この場合、以下のステップＳ２３において登録外の組み合わせとして検出し、セクタエラーとすることができる。
【００６８】
続いて、ＭＰＵ２５は、抽出した世代情報が、当該ハードディスク装置１のメモリ２６に記憶されている世代情報（今回の新しい世代）に一致するかの第１判定を行う（Ｓ７）。
【００６９】
抽出した世代情報が当該ハードディスク装置１の世代情報に一致する場合（Ｓ７：Ｙｅｓ判定）、ＭＰＵ２５は、世代情報とペアで埋め込まれているＬＢＡによりＬＢＡチェックを行い（Ｓ８）、ＬＢＡチェックの結果を判定する（Ｓ９）。
【００７０】
ＬＢＡチェックの結果が正しい場合（Ｓ９：Ｙｅｓ判定）、ＭＰＵ２５は、当該セクタは、今回の世代で書込みを終えているセクタであるとし、ＯＫセクタとして処理を行う（Ｓ１０）。例えば、ＭＰＵ２５は、ホストから読み取り命令があれば、そのセクタのユーザデータをホストに返し、書き込み命令があれば、そのセクタにユーザデータなどを書込んで更新する。
【００７１】
ＬＢＡチェックの結果が誤りである場合（Ｓ９：Ｎｏ判定）、ＭＰＵ２５は、セクタエラーをホストに返す（Ｓ４）。
【００７２】
ステップＳ７において、抽出した世代情報が当該ハードディスク装置１の世代情報ではない場合（Ｓ７：Ｎｏ判定）、ＭＰＵ２５は、世代情報と共に抽出したＬＢＡが当該ハードディスク装置１の今回のＬＢＡ（ホストが指定したＬＢＡ）と一致するかを判定する（Ｓ２１）。
【００７３】
抽出したＬＢＡが当該ハードディスク装置１の今回のＬＢＡと一致しない場合（Ｓ２１：Ｎｏ判定）、ＭＰＵ２５は、抽出したペア情報（世代情報およびＬＢＡ）により、世代対応テーブルＴに問い合わせを行う（Ｓ２２）。
【００７４】
そして、その問い合わせに基づき、ＭＰＵ２５は、抽出したペア情報の組み合わせが登録されているかを判定する（Ｓ２３）。その組み合わせが登録されていない場合（Ｓ２３：Ｎｏ判定）、ＭＰＵ２５は、セクタエラーをホストに返す（Ｓ１０）。
【００７５】
ＭＰＵ２５は、その組み合わせが登録されている場合（Ｓ２３：Ｙｅｓ判定）、その組み合わせについての差分情報を世代対応テーブルＴから取得する（Ｓ２４）。
【００７６】
続いて、ＭＰＵ２５は、新しいＬＢＡをセクタに書き込まれているであろう古いＬＢＡに補正してＬＢＡを判定する第２判定処理を次のように行う。
【００７７】
先ず、ＭＰＵ２５は、新しいＬＢＡを、ステップＳ２４で取得した差分情報でセクタに書き込まれているであろう古いＬＢＡに補正することにより、ＬＢＡ候補を算出する（Ｓ２５）。
【００７８】
そして、ＭＰＵ２５は、ＬＢＡ候補によりＬＢＡチェックを行い（Ｓ２６）、ＬＢＡチェックの結果を判定する（Ｓ２７）。ＬＢＡチェックの結果が誤りである場合（Ｓ２７：Ｎｏ判定）、ＭＰＵ２５は、セクタエラーをホストに返す（Ｓ４）。
【００７９】
ＬＢＡチェックの結果が正しい場合（Ｓ２７：Ｙｅｓ判定）、ＭＰＵ２５は、未使用のセクタとして処理を行う（Ｓ２８）。例えば、ＭＰＵ２５は、ホストから読み取り命令があれば、そのセクタにユーザデータが書き込まれていても初期値（オール０の値など）をホストに返し、書き込み命令があれば、そのセクタにユーザデータなどを書込んで更新する。この更新により、当該セクタがハードディスク装置１の今回の新しい世代とＬＢＡとを含む新しいＭｏｄｉｆｉｅｄＣＲＣデータに更新される。
【００８０】
ところで、当該ハードディスク装置１とはセクタの世代情報は異なるがＬＢＡが一致する場合がある（Ｓ２１：Ｙｅｓ判定）。これは、ＬＢＡの再振り分け後も元のＬＢＡと変わらないセクタで、当該ハードディスク装置１の今回の世代において１度も書込みされていないセクタにおいて発生する。このようなセクタの検出と処理を、ＭＰＵ２５は、例えば次のように行う。
【００８１】
ＭＰＵ２５は、先ず、抽出した世代情報と当該ハードディスク装置１の世代情報との新旧を比較する（Ｓ２９）。
【００８２】
抽出した世代情報がハードディスク装置１の世代情報よりも古い場合（Ｓ２９：Ｙｅｓ判定）、当該セクタについてＬＢＡの振り直しは発生しておらず、今回の世代において１度も書込みされていないセクタであるため、ＭＰＵ２５は、未使用のセクタとして処理を行う（Ｓ２８）。例えば、ＭＰＵ２５は、ホストから読み取り命令があれば、そのセクタにユーザデータが書き込まれていても初期値（オール０の値など）をホストに返し、書き込み命令があれば、そのセクタにユーザデータなどを書込んで更新する。
【００８３】
一方、抽出した世代情報がハードディスク装置１の世代情報よりも新しい場合（Ｓ２９：Ｎｏ判定）、ＣＲＣ計算の結果が崩れているため、ＭＰＵ２５は、セクタエラーをホストに返す（Ｓ４）。
【００８４】
なお、ステップＳ２２およびステップＳ２３は、世代対応テーブルの全データを対象に一度に処理する場合の例である。世代対応テーブルにおいて世代情報別に問い合せを行う場合には、ステップＳ２２およびステップＳ２３をステップＳ２３がＹｅｓ判定になるまで繰り返す。例えば上位の世代情報から順に問い合わせを行う。全ての世代情報において、抽出した世代情報とＬＢＡとの組み合わせが登録されていない場合は、世代情報とＬＢＡとが崩れた値であるため、ステップＳ４に移行してセクタエラーをホストに返す。
【００８５】
以上のように、本実施形態のハードディスク装置および制御方法では、ＬＢＡの再振り分けを行った場合であっても磁気ディスク上の再フォーマットを省略し、磁気ディスク上のセクタへアクセスする際にＣＲＣデータの書き換えを行う。このため、ハードディスク装置を初期化した場合に、初期化が完了するまでの時間を再フォーマットの時間分短縮することが可能になる。また、従来は、初期化を行う度に磁気ディスク上の全てのセクタを対象に再フォーマットする必要があったが、本実施形態のハードディスク装置および制御方法では、その世代で使用するセクタを対象とするため、世代全体に渡る初期化の時間を大幅に短縮することが可能になる。
【００８６】
本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８７】
２５  ＭＰＵ、２５０  設定部、２５１  読出部、２５２  判定部、２５３  補正部、２５４  書込部、２５５  出力部。
【図１】
2019050066.tif 000003
【図２】
2019050066.tif 000004
【図３】
2019050066.tif 000005
【図４】
2019050066.tif 000006
【図５】
2019050066.tif 000007
【図６】
2019050066.tif 000008
【図７】
2019050066.tif 000009
【図８】
2019050066.tif 000010
【図９】
2019050066.tif 000011