(57)【要約】【課題】論理的に連続する複数のライトデータブロックのライトに要する時間を低減することができるディスクドライブ装置を実現する。【解決手段】実施形態によれば、書き込み手段は、連続する論理ブロックアドレスを有する複数のライトデータブロック内の第１ライトデータブロックの受信時に、ディスク媒体上の特定エリア内に含まれ且つヘッドの位置の近傍の第１記憶場所に、前記第１ライトデータブロックをライトし、第２ライトデータブロックの受信時に、前記第２ライトデータブロックを、前記特定エリア内に含まれ且つ前記ヘッドの位置の近傍の第２記憶場所にライトする。前記第２記憶場所は、前記第１ライトデータブロックのライト完了タイミングと前記第２ライトデータブロックの受信タイミングとの差分に対応する間隔だけ前記第１記憶場所からスキップされた記憶場所である。【選択図】図６
2013157062.tif 000002
【特許請求の範囲】
【請求項１】
ディスク媒体と、
前記ディスク媒体に対してデータのリード及びライトを行なうヘッドと、
前記ディスク媒体を回転させる機構と、
ホストから受信され且つ連続する論理ブロックアドレスを有する複数のライトデータブロックを前記ディスク媒体上の特定エリア内の互いに離間された複数の記憶場所にライトする書き込み手段とを具備し、
前記書き込み手段は、前記ヘッドを前記特定エリアに位置づけ、前記複数のライトデータブロック内の第１ライトデータブロックの受信時に、前記特定エリア内に含まれ且つ前記ヘッドの位置の近傍の第１記憶場所に、前記第１ライトデータブロックをライトし、前記第１ライトデータブロックに対応する第１論理ブロックアドレスに対して論理的に連続する第２論理ブロックアドレスを有する第２ライトデータブロックの受信時に、前記第２ライトデータブロックを、前記特定エリア内に含まれ且つ前記ヘッドの位置の近傍の第２記憶場所にライトするように構成され、前記第２記憶場所は、前記第１ライトデータブロックのライト完了タイミングと前記第２ライトデータブロックの受信タイミングとの差分に対応する間隔だけ前記第１記憶場所からスキップされた記憶場所である、ディスクドライブ装置。
【請求項２】
前記書き込み手段は、前記複数のライトデータブロックを前記ディスク媒体上のデータ記憶エリア内の連続するデータ記憶場所に順次ライトするためのシーケンシャルライト動作を実行する第１のライトモードと、前記複数のライトデータブロックを前記ディスク媒体上の前記特定エリア内の互いに離間された前記複数の記憶場所にライトする第２のライトモードとを有しており、前記第１のライトモードにおいて前記複数のライトデータブロック内のあるライトデータブロックの受信タイミングの遅れが検出された場合、前記第１のライトモードから前記第２のライトモードに移行するように構成されている請求項１記載のディスクドライブ装置。
【請求項３】
前記第１記憶エリアにライトされた前記複数のライトデータブロックを、前記複数のライトデータブロックの論理ブロックアドレスに基づいて、前記ディスク媒体上の前記データ記憶エリアにそれぞれ復元する復元手段をさらに具備する請求項１記載のディスクドライブ装置。
【請求項４】
前記書き込み手段は、前記第１ライトデータブロックがライトされた前記第１記憶場所の直後の前記特定エリア内の記憶場所に、前記第１ライトデータブロックのライト完了を示すライト完了情報をライトし、前記第２ライトデータブロックがライトされた前記第２記憶場所の直後の前記特定エリア内の記憶場所に、前記第２ライトデータブロックのライト完了を示すライト完了情報をライトする請求項１記載のディスクドライブ装置。
【請求項５】
前記特定エリアは前記ディスク媒体上の１以上のトラックを含む請求項１記載のディスクドライブ装置。
【請求項６】
前記特定エリアは前記ディスク媒体上に離間して配置された第１および第２の特定エリア部を含む請求項１記載のディスクドライブ装置。
【請求項７】
ホストから受信され且つ連続する論理ブロックアドレスを有する複数のライトデータブロックを、ディスクドライブ装置のディスク媒体にライトするライト制御方法であって、
ヘッドを前記ディスク媒体上の特定エリアに位置づけ、
前記複数のライトデータブロック内の第１ライトデータブロックの受信時に、前記特定エリア内に含まれ且つ前記ヘッドの位置の近傍の第１記憶場所に、前記第１ライトデータブロックをライトし、
前記第１ライトデータブロックに対応する第１論理ブロックアドレスに対して論理的に連続する第２論理ブロックアドレスを有する第２ライトデータブロックの受信時に、前記第２ライトデータブロックを、前記特定エリア内に含まれ且つ前記ヘッドの位置の近傍の第２記憶場所にライトし、前記第２記憶場所は、前記第１ライトデータブロックのライト完了タイミングと前記第２ライトデータブロックの受信タイミングとの差分に対応する間隔だけ前記第１記憶場所からスキップされた記憶場所である、ライト制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ディスクドライブ装置およびこのディスクドライブ装置に適用されるライト制御方法に関する。
【背景技術】
【０００２】
一般的に、ハードディスクドライブのようなディスクドライブ装置においては、ホストから受信されるライトデータを一時的に格納するためのバッファが用いられている。また、ディスク媒体上の特定の記憶領域（ログ領域ともいう）に幾つかのライトデータを一時的に格納するように構成されたハードディスクドライブも開発されている。
【０００３】
ところで、最近では、ハードディスクドライブのシーケンシャルライト性能の向上が求められている。
【０００４】
しかし、シーケンシャルライトにおいては、もしホストからのライトデータの受領のタイミングが遅延すると、このライトデータをライトすべき目的のセクタがヘッドの位置を通り過ぎてしまう場合がある。この場合、ハードディスクドライブは、ディスク媒体の回転によって目的のセクタがヘッドの下方に再び来るまで待つための待ち状態（回転待ち状態）となる。この待ち状態の時間は、ディスク媒体の１回転分の回転に要する時間に相当する。
【０００５】
もしシーケンシャルライト中にライトデータの受領のタイミングが遅延するといった状況が連続して発生すると、待ち時間が増加し、これによってシーケンシャルライト動作の性能が低下される可能性がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１２１３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、論理的に連続する複数のライトデータブロックのライトに要する時間を低減することができるディスクドライブ装置およびライト制御方法を提供することである。
【課題を解決するための手段】
【０００８】
実施形態によれば、ディスクドライブ装置は、ディスク媒体と、前記ディスク媒体に対してデータのリード及びライトを行なうヘッドと、前記ディスク媒体を回転させる機構と、ホストから受信され且つ連続する論理ブロックアドレスを有する複数のライトデータブロックを前記ディスク媒体上の特定エリア内の互いに離間された複数の記憶場所にライトする書き込み手段とを具備する。前記書き込み手段は、前記ヘッドを前記特定エリアに位置づけ、前記複数のライトデータブロック内の第１ライトデータブロックの受信時に、前記特定エリア内に含まれ且つ前記ヘッドの位置の近傍の第１記憶場所に、前記第１ライトデータブロックをライトし、前記第１ライトデータブロックに対応する第１論理ブロックアドレスに対して論理的に連続する第２論理ブロックアドレスを有する第２ライトデータブロックの受信時に、前記第２ライトデータブロックを、前記特定エリア内に含まれ且つ前記ヘッドの現在位置の近傍の第２記憶場所にライトするように構成される。前記第２記憶場所は、前記第１ライトデータブロックのライト完了タイミングと前記第２ライトデータブロックの受信タイミングとの差分に対応する間隔だけ前記第１記憶場所からスキップされた記憶場所である。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係るディスクドライブ装置の構成を示すブロック図。
【図２】同実施形態のディスクドライブ装置によって実行されるディスク制御プログラムの構成を示すブロック図。
【図３】同実施形態のディスクドライブ装置内のディスク媒体上に規定されたデータ記憶エリアと特定エリア（特殊エリア）を説明するため図。
【図４】同実施形態のディスクドライブ装置内のディスク媒体上に規定された複数の特殊エリアを説明するための図。
【図５】同実施形態のディスクドライブ装置内の回転待ち検出部の構成例を示すブロック図。
【図６】同実施形態のディスクドライブ装置によって実行されるシーケンシャルライト動作と特殊ライト動作とを説明するための図。
【図７】同実施形態のディスクドライブ装置において使用される書き込みデータ管理テーブルの構成例を示す図。
【図８】同実施形態のディスクドライブ装置の特殊エリアにライトされるライトデータブロックのフォーマットの例を示す図。
【図９】同実施形態のディスクドライブ装置によって実行されるライト処理の手順を示すフローチャート。
【図１０】同実施形態のディスクドライブ装置によって実行される特殊ライト動作の手順を示すフローチャート。
【図１１】同実施形態のディスクドライブ装置によって実行されるシーケンシャル継続処理の手順を示すフローチャート。
【図１２】同実施形態のディスクドライブ装置によって実行される書き戻し処理（復元処理）の手順を示すフローチャート。
【図１３】同実施形態のディスクドライブ装置によって実行される書き戻し対象データリード処理の手順を示すフローチャート。
【図１４】同実施形態のディスクドライブ装置によって実行される書き込みデータ管理テーブル初期化処理の手順を示すフローチャート。
【図１５】同実施形態のディスクドライブ装置のパワーオン時に同ディスクドライブ装置によって実行される処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、実施形態を説明する。  
図１は、一実施形態に係るディスクドライブ装置を概略的に示すブロック図である。このディスクドライブ装置１００は、例えば、サーバコンピュータのようなホストにデータ記憶装置として搭載される。このディスクドライブ装置１００は例えばハードディスクドライブとして実現されている。このディスクドライブ装置１００は、磁気ディスクであるディスク媒体１と、ヘッド５と、スピンドルモータ１１０と、アクチュエータアーム１３０と、ヘッドアンプ（ヘッドＩＣ）１４０と、プリント回路基板（ＰＣＢ）１９０とを備えている。
【００１１】
ディスク媒体１は、スピンドルモータ１１０により高速回転される。スピンドルモータ１１０はディスク媒体１を回転させるための回転機構として機能する。本実施形態では、ディスク媒体１上には、データ記憶エリアと、このデータ記憶エリアとは区別された特定のエリア（特殊エリア）とが規定されている。データ記憶エリアはユーザデータ等を格納するための記憶エリアである。特殊エリアはシーケンシャルライト動作の性能の低下を抑制するために使用される専用エリアである。データ記憶エリア内のデータ記憶位置（セクタ）それぞれには論理ブロックアドレス（ＬＢＡ）が割り当てられている。一方、特殊エリア内のデータ記憶位置（セクタ）それぞれには論理ブロックアドレス（ＬＢＡ）は割り当てられていない。
【００１２】
ヘッド５は、ディスク媒体１に対してデータの読出し及び書き込みを行なう。このヘッドは、リードヘッドとライトヘッドとを有する。リードヘッドは、ディスク媒体１上から放射状サーボパターン及びデータを読出す。また、ライトヘッドは、ディスク媒体１上のサーボセクタ以外の各セクタ（各データ記憶場所）にデータをライトする。
【００１３】
アクチュエータアーム１３０は、ヘッド５をディスク媒体１上の半径方向に移動させるヘッド移動機構１３１の一部として機能する。アクチュエータアーム１３０の先端部にはヘッド５が搭載されている。アクチュエータアーム１３０は、ピボット６の回りで回動されるようにピボット６に支持されている。アクチュエータアーム１３０はボイスコイルモータ（図示せず）により駆動される。このボイスコイルモータは、アクチュエータアーム１３０を駆動することにより、ヘッド５をディスク媒体１上の任意の半径位置に位置づける。ボイスコイルモータとアクチュエータアーム１３０等とにより、ヘッド移動機構１３１が構成される。
【００１４】
ボイスコイルモータは、ＰＣＢ１９０上に実装されているモータドライバ１０７により駆動制御される。ヘッドアンプ１４０は、ヘッド５内のリードヘッドからのリード信号を増幅して、ＰＣＢ１９０上に実装されているリード／ライトチャネルＩＣ（信号処理ユニット）１０６に出力する。
【００１５】
ＰＣＢ１９０には、マイクロプロセッサユニット（ＭＰＵ）１０１、ＲＯＭ１０２、ＲＡＭ１０３、ハードディスクコントローラ（ＨＤＣ）１０４、バッファ１０５、リード／ライトチャネルＩＣ１０６、モータドライバ１０７が実装されている。リード／ライトチャネルＩＣ１０６は、リード／ライト信号を処理する信号処理ユニットである。
【００１６】
ＨＤＣ１０４は、ＭＰＵ１０１の制御に基づいて、ホスト１０から受信されるライトデータをディスク媒体１にライトする処理と、ディスク媒体１に記憶されたデータをリードしてホスト１０に転送する処理とを実行する。ＨＤＣ１０４は、ホスト１０から論理的に連続したライトコマンドを受領した場合には、ＭＰＵ１０１の制御の下、ディスク媒体１上の物理的に連続する複数の記憶場所（セクタ）にライトデータブロックそれぞれを順次ライトするシーケンシャルライト動作を実行する。
【００１７】
ＭＰＵ１０１は、ディスクドライブ１００の動作を制御するプロセッサ（メインコントローラ）である。ＭＰＵ１０１は、ＲＯＭ１０２からＲＡＭ１０３にロードされるディスク制御プログラム１０３Ａを実行する。ディスク制御プログラム１０３Ａは、ディスク媒体１に対するデータのリードおよびライトを制御するプログラムである。このディスク制御プログラム１０３Ａは、シーケンシャルライト性能を向上させるために、特殊ライト動作の実行を制御するルーチンを含んでいる。特殊ライト動作は、ホスト１０から受信される論理的に連続したライトデータブロックそれぞれを、上述の特殊エリアに高速にライトする処理を実行する。また、ＲＡＭ１０３には、特殊エリアにライトされた各データ（各ライトデータブロック）を管理するための書き込みデータ管理テーブル１０３Ｂも格納される。書き込みデータ管理テーブル１０３Ｂは、ディスク媒体１上のシステム領域からＲＡＭ１０３にロードされる。また、書き込みデータ管理テーブル１０３Ｂの更新は、作業メモリであるＲＡＭ１０３上で実行される。更新された書き込みデータ管理テーブル１０３Ｂの内容は、ディスク媒体１上のシステム領域にバックアップされる。
【００１８】
ＨＤＣ１０４は、インターフェース制御部２０１、コマンド制御部２０２、ディスク制御部２０３、バッファ制御部２０４を備える。インターフェース制御部２０１は、ディスクドライブ１００とホスト１０との間のデータ転送を制御する。ディスクドライブ１００とホスト１０との間のインターフェースとしては、例えば、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）などが用いられる。
【００１９】
コマンド制御部２０２は、ＭＰＵ１０１の制御の下、ホスト１０から受信されるコマンド（ライトコマンド、リードコマンド）に応じた制御を実行する。ディスク制御部２０３は、ＭＰＵ１０１の制御の下、ホスト１０から受信されたライトデータブロック（単にライトデータともいう）をディスク媒体１にライトするための制御およびディスク媒体１からデータをリードするための制御等を実行する。ここで、ライトデータブロックは、一つのライトコマンドによって指定される、可変長のデータサイズを有するライトデータを意味する。ホスト１０から受信されたライトデータブロックは、バッファ制御部２０４によってバッファ１０５に一時的に格納される。そして、ライトデータブロックは、ディスク制御部２０３によってバッファ１０５からリードされ、そしてリード／ライトチャネルＩＣ１０６に供給される。
【００２０】
ディスク制御部２０３は、さらに、シーケンシャルライト動作中に発生する“回転待ち”を検出するための回転待ち検出部２０３Ａを備えている。
【００２１】
この回転待ち検出部２０３Ａは、シーケンシャルライト動作中において論理的に連続する複数のライトデータブロック内のあるライトデータブロックの受信タイミングが遅れたことを、上述の回転待ち状態として検出する。より詳しくは、回転待ち検出部２０３Ａは、論理的に連続する複数のライトデータブロック内のあるライトデータブロック（第１ライトデータブロック）の受信タイミングの遅れによって、シーケンシャルライト動作が待ち状態（回転待ち状態）になったことを検出する。待ち状態は、第１ライトデータブロックに対応するデータ記憶エリア上の目的記憶場所がディスク媒体１の回転によってヘッド５の下方に再び到達するまで待つ状態である。
【００２２】
すなわち、シーケンシャルライト中においては、もしホスト１０からのライトデータブロックの受信タイミングが遅れると、このライトデータブロックをライトすべき目的の記憶場所（目的の先頭セクタ）がヘッド５の位置を通り過ぎてしまう場合がある。この場合、ディスク媒体１の回転によって目的の記憶場所がヘッド５の下方に再び来るまで、シーケンシャルライト動作の実行は一時的に中断される（回転待ち状態）。このような回転待ち状態の発生は、回転待ち検出部２０３Ａによって検出される。
【００２３】
ライトデータブロックの受信タイミングの遅れは、例えば、ディスクドライブ１００の内部転送レートに比較してホスト１０の処理性能が低い場合に、あるいはコマンドキュー数が少ない場合などに発生する可能性がある。コマンドキュー数は、ディスクドライブ１００内のコマンドキューに保持可能なコマンド（例えばライトコマンド）の数を示す。
【００２４】
コマンドキュー数が１に設定されているならば、ディスクドライブ１００は、一つのライトコマンドに対応するライトデータブロックのライトが完了する度に、ライト完了をホスト１０に通知するための応答をホスト１０に返す。ライト完了の応答を受信するまで、ホスト１０は、次のライトコマンドおよび次のライトコマンドに対応するライトデータブロックをディスクドライブ１００に送信しない。したがって、ライトデータブロックの受信タイミングが遅れる可能性がある。
【００２５】
コマンドキュー数が４に設定されているならば、ディスクドライブ１００は、連続する４つのライトコマンドに対応する４つのライトデータブロックのライトが完了した時に、これら４つのライトデータブロックのライト完了をホスト１０に通知するための応答をホスト１０に返す。ライト完了の応答を受信した時、ホスト１０は、次の４つのライトコマンドおよび次の４つのライトコマンドに対応する４つのライトデータブロックをディスクドライブ１００に順次送信することができる。
【００２６】
次に、図２を参照して、ディスク制御プログラム１０３Ａの機能構成を説明する。ディスク制御プログラム１０３Ａは、ライト制御部３０１、シーケンシャルライト処理部３０２、特殊ライト処理部３０３、およびデータ復元部３０４を備える。ライト制御部３０１、シーケンシャルライト処理部３０２、および特殊ライト処理部３０３は、ホスト１０から受信される論理的に連続する複数のライトブロックデータをディスク媒体１にライトするための書き込み部３００を構成する。書き込み部３００は、論理的に連続する複数のライトブロックデータをディスク媒体１にライトするためのライトモードとして、シーケンシャルライトモードと特殊ライトモードとを有している。シーケンシャルライトモードにおいては、上述の複数のライトデータブロックをディスク媒体１上のデータ記憶エリア内の連続するデータ記憶場所に順次ライトするためのシーケンシャルライト動作が実行される。この場合、複数のライトデータブロックは、これら複数のライトデータブロックの論理ブロックアドレスが割り当てられた、データ記憶エリア内の連続するデータ記憶場所に、それぞれライトされる。特殊ライトモードでは、上述の複数のライトデータブロックはディスク媒体１上の特殊エリア内の互いに離間された複数の記憶場所にライトされる。
【００２７】
シーケンシャルライトモードにおいて、論理的に連続する複数のライトデータブロック内のあるライトデータブロックの受信タイミングの遅れ（回転待ち状態）が検出された場合、書き込み部３００は、シーケンシャルライトモードから特殊ライトモードに移行する。
【００２８】
シーケンシャルライト処理部３０２は、ＨＤＣ１０４と共同して、上述のシーケンシャルライト動作を実行する第１の書き込み部として機能する。このシーケンシャルライト処理部３０２は、論理的に連続する複数のライトデータブロック、つまり、ホスト１０から受信され且つ連続する論理ブロックアドレスを有する複数のライトデータブロックを、ディスク媒体１上のデータ記憶エリア内の物理的に連続する記憶場所に順次ライトするためのシーケンシャルライト動作を実行する。
【００２９】
シーケンシャルライト動作の実行中に回転待ち検出部２０３Ａによって上述の待ち状態（回転待ち状態）が検出された場合、ライト制御部３０１は、シーケンシャルライト処理部３０２の代わりに、特殊ライト処理部３０３を起動する。換言すれば、ライト制御部３０１は、書き込み部３００のライトモードを、シーケンシャルライトモード（第１のライトモード）から、特殊ライトモード（第２のライトモード）に変更する。
【００３０】
特殊ライト処理部３０３は、論理的に連続する複数のライトデータブロック、つまり、ホスト１０から受信され且つ連続する論理ブロックアドレスを有する複数のライトデータブロックを、ディスク媒体１上の特殊エリア内の互いに離間された複数の記憶場所にライトする書き込み部である。特殊ライト処理部３０３は、ヘッド５を特殊エリアに位置づけ、論理的に連続する複数のライトデータブロックを特殊エリアにライトするための特殊ライト動作を実行する。
【００３１】
特殊ライト動作においては、特殊ライト処理部３０３は、上述の複数のライトデータブロック内のあるライトデータブロック（第１のライトデータブロック）の受信時に、この第１のライトデータブロックの先頭ＬＢＡとは関係なく、最も速く書き込み可能な、特殊エリア内の記憶場所（第１の記憶場所）に、第１ライトデータブロックをライトする。最も速く書き込み可能な、特殊エリア内の第１の記憶場所は、特殊エリア内に含まれ、且つヘッド５の現在位置の近傍の記憶場所（例えば、ヘッド５の現在位置の直前近傍の記憶場所）である。特殊ライト処理部３０３は、特殊エリアに位置づけられたヘッド５の現在位置に基づいて、最も速く書き込み可能な特殊エリア内のセクタ、つまり最も速くトラッキング可能な特殊エリア内のセクタを決定し、その決定されたセクタから始まる記憶領域に第１のライトデータブロックをライトする。
【００３２】
さらに、特殊ライト動作においては、特殊ライト処理部３０３は、第１ライトデータブロックに対応する第１論理ブロックアドレス（先頭ＬＢＡ）に対して論理的に連続する第２論理ブロックアドレス（先頭ＬＢＡ）を有する第２ライトデータブロックも、特殊エリアにライトする。例えば、第１ライトデータブロックの先頭ＬＢＡが２、第１ライトデータブロックのデータサイズが１０ブロック（＝１０セクタ）である場合を想定する。この場合、もし次のライトコマンドによって指定される先頭ＬＢＡ、つまり第２ライトデータブロックの先頭ＬＢＡが１２であれば、第２ライトデータブロックの先頭ＬＢＡは、第１ライトデータブロックの先頭ＬＢＡに論理的に連続すると判定される。
【００３３】
特殊ライト処理部３０３は、この第２ライトデータブロックの受信時に、この第２ライトデータブロックの先頭ＬＢＡとは関係なく、最も速く書き込み可能な、特殊エリア内の記憶場所（第２の記憶場所）に、第２ライトデータブロックをライトする。最も速く書き込み可能な、特殊エリア内の第２の記憶場所は、特殊エリア内に含まれ、且つヘッド５の現在位置の近傍の記憶場所（例えば、ヘッド５の現在位置の直前近傍の記憶場所）である。特殊ライト処理部３０３は、特殊エリアに位置づけられたヘッド５の現在位置に基づいて、最も速く書き込み可能な特殊エリア内のセクタ、つまり最も速くトラッキング可能な特殊エリア内のセクタを決定し、その決定されたセクタから始まる記憶領域に第２のライトデータブロックをライトする。
【００３４】
ディスク媒体１は高速回転しているので、特殊エリア上のヘッド５の現在位置の近傍の記憶場所、つまりヘッド５が現在位置している特殊エリア上のセクタ番号は、時間の経過と共に変更される。したがって、第２記憶場所は、第１ライトデータブロックのライト完了タイミングと第２ライトデータブロックの受信タイミングとの差分に対応する間隔（スキップ幅）だけ、第１記憶場所からスキップされた記憶場所である。
【００３５】
さらに、特殊ライト処理部３０３は、第２ライトデータブロックに対応する第２論理ブロックアドレス（先頭ＬＢＡ）に対して論理的に連続する第３論理ブロックアドレス（先頭ＬＢＡ）を有する第３ライトデータブロックも、特殊エリアにライトする。
【００３６】
特殊ライト処理部３０３は、この第３ライトデータブロックの受信時に、この第３ライトデータブロックの先頭ＬＢＡとは関係なく、最も速く書き込み可能な、特殊エリア内の記憶場所（第３の記憶場所）に、第３ライトデータブロックをライトする。第３記憶場所は、第２ライトデータブロックのライト完了タイミングと第３ライトデータブロックの受信タイミングとの差分に対応する間隔（スキップ幅）だけ、第２記憶場所からスキップされた記憶場所である。
【００３７】
このように、特殊ライト動作においては、シーケンシャルライト可能な論理的に連続する複数のライトデータブロックの各々は、各ライトデータブロックのＬＢＡとは無関係に、ヘッド５の現在位置の近傍、特殊エリア内の記憶場所にライトされる。これにより、これら複数のライトデータブロックは、特殊エリア内の互いに離間された複数の記憶場所にそれぞれライトされる。よって、特殊ライト動作においては、ディスク媒体１の回転を待つという上述の待ち状態は発生しない。よって、たとえばコマンドキュー数が１に設定されている場合であっても、論理的に連続する複数のライトデータブロックを高速にディスク媒体１にライトすることができる。これにより、ディスクドライブ１００のシーケンシャルライト性能を向上させることができる。
【００３８】
なお、上述の説明では、シーケンシャルライト動作（シーケンシャルライトモード）中に回転待ち状態の発生が検出された場合に、ライトモードをシーケンシャルライトモードから特殊ライトモードに変更する場合を説明したが、上述したように、コマンドキュー数が小さい値に設定されている場合には、回転待ち状態が発生する確率は高い。したがって、特殊ライトモードを論理的に連続するライトブロックデータをライトするためのライトモードとして優先的に使用するようにしてもよい。
【００３９】
特殊エリアにライトされた各ライトデータブロックに関する書き込み情報（先頭ＬＢＡ、データサイズ、スキップ幅、等）は、書き込みデータ管理テーブル１０３Ｂに格納してもよい。あるいは、この書き込み情報が付加されたライトデータブロックを特殊エリアにライトしてもよい。この書き込み情報に基づき、ホスト１０からのリードコマンドで指定されたデータを、特殊エリアからリードすることもできる。また、特殊エリアにライトされた各ライトデータブロックを、これら各ライトデータブロックの論理ブロックアドレスに基づいて、データ記憶エリア上の本来の記憶場所に、復元（戻）してもよい。
【００４０】
データ復元部３０４は、この復元処理、つまり、特殊エリアにライトされた各ライトデータブロックをデータ記憶エリア上の本来の記憶場所に戻すための処理（書き戻し処理ともいう）を実行する。すなわち、データ復元部３０４は、特殊エリアにライトされた第１ライトデータブロック、第２ライトデータブロック、および第３ライトデータブロックを、これら第１ライトデータブロック、第２ライトデータブロック、および第３ライトデータブロックの論理ブロックアドレスが割り当てられた、データ記憶エリア内の記憶場所にそれぞれ復元する。
【００４１】
次に、図３を参照して、ディスク媒体１上の特殊エリアの例について説明する。図３に示されているように、ディスク媒体１上においては、複数の同心円状トラック５００が定義されている。各トラック５００は複数のセクタを有している。ディスク媒体１の外周側の各トラックに含まれるセクタ数は、ディスク媒体１の内周側の各トラックに含まれるセクタ数よりも多い。したがって、ディスク媒体１の外周側の記憶領域に対してデータをライトおよびリードするための転送レートは、ディスク媒体１の内周側の記憶領域に対してデータをライトおよびリードするための転送レートよりも速い。
【００４２】
ディスク媒体１上の特定の１以上のトラックが特殊エリア５０１として使用される。図３では、最も高速の転送レートを有する最外周のトラックが特殊エリア５０１として使用される場合が示されている。なお、特殊エリア５０１を、ディスク媒体１上に分散された複数の特殊エリア部から構成してもよい。各特殊エリア部は１以上のトラックから構成される。特殊エリア５０１内のどの記憶場所にも論理ブロックアドレスは割り当てられていない。特殊エリア５０１として使用されるトラック以外の他の全てのトラックは、データ記憶エリアとして使用される。データ記憶エリアの一部は、管理データ等を格納するためのシステム領域として使用され、データ記憶エリアの他の部分はユーザデータを格納するためのユーザデータ領域として使用される。
【００４３】
なお、複数の同心円状トラック５００は複数のゾーンにグルーピングされていてもよい。図４においては、同心円状トラック５００が、外側エリアに対応するゾーンＡ、中間エリアに対応するゾーンＢ、および内側エリアに対応するゾーンＣの３つのゾーンに分割されている場合が想定されている。ゾーン毎にデータ転送レートは異なる。ゾーンＡのデータ転送レートが最も高速であり、ゾーンＣのデータ転送レートが最も低速である。
【００４４】
ゾーンＡに属するトラック５００内の１以上のトラックを、特殊エリア部５０１Ａとして使用してもよい。同様に、ゾーンＢに属するトラック５００内の１以上のトラックを、特殊エリア部５０１Ｂとして使用してもよい。同様に、ゾーンＣに属するトラック５００内の１以上のトラックを、特殊エリア部５０１Ｃとして使用してもよい。
【００４５】
特殊ライトのために使用されるべき特殊エリア部は、３つの特殊エリア部５０１Ａ、５０１Ｂ、５０１Ｃから選択することができる。例えば、３つの特殊エリア部５０１Ａ、５０１Ｂ、５０１Ｃの内で、現在のシーケンシャルライト動作の対象となっているトラックに最も近接する特殊エリア部が、特殊ライトのために使用されるべき特殊エリア部として選択される。これにより、シーケンシャルライトモードから特殊ライトモードへの移行時に必要となるヘッド５の半径方向の移動量を最小限にすることができるので、ライトモードの変更に必要な時間を短縮することができる。
【００４６】
次に、図５を参照して、回転待ち検出部２０３Ａの構成の例を説明する。回転待ち検出部２０３Ａは、ライトデータブロックの受信タイミングの遅れの発生を検出する検出部である。この回転待ち検出部２０３Ａは、差分管理カウンタ６０１および回転待ち通知レジスタ６０２によって実現してもよい。
【００４７】
差分管理カウンタ６０１は、バッファ１０５に残っているライトデータの量を管理する。例えば、ホスト１０からデータサイズが１０ブロック（＝１０セクタ）であるライトデータブロックが受信されたならば、差分管理カウンタ６０１は、バッファ１０５に残っているライトデータの量を示す現在のカウント値を１０だけインクリメントする。一方、ディスク媒体１への所定のセクタ数分のライトデータの書き込みが完了する度に、差分管理カウンタ６０１は、現在のカウント値を、この所定のセクタ数分だけデクリメントする。現在のカウント値がゼロになった場合、差分管理カウンタ６０１は、回転待ち状態が発生することを示すステータスデータを回転待ち通知レジスタ６０２にセットし、これによってライトデータブロックの受信タイミングの遅れが発生すること、つまり回転待ち状態が発生することをＭＰＵ１０１に通知する。
【００４８】
次に、図６を参照して、シーケンシャルライト動作と特殊ライト動作を説明する。
【００４９】
ここでは、上述のコマンドキュー数が１である場合を想定する。５つのライトコマンドＷＴ１〜ＷＴ５は論理的に連続するライトコマンドである。この場合、ある同一のトラックに対するシーケンシャルライト動作が実行される。
【００５０】
ライトコマンドＷＴ１に対応するライトデータブロックＤＴ１は、ライトコマンドＷＴ１によって指定されるＬＢＡ（先頭ＬＢＡ）が割り当てられたデータ記憶場所にライトされる。より詳しくは、ライトデータブロックＤＴ１は、ライトコマンドＷＴ１によって指定されるＬＢＡ（先頭ＬＢＡ）が割り当てられたセクタから始まるセクタ群にライトされる。ライトデータブロックＤＴ１のライトが完了すると、ＭＰＵ１０１は、ライト完了を通知するための応答をホスト１０に返す。
【００５１】
ホスト１０は、ライトコマンドＷＴ２およびライトデータブロックＤＴ２をディスクドライブ１００に送信する。ライトデータブロックＤＴ２を受信した時、ライトデータブロックＤＴ２をライトすべき目的の記憶場所は既にヘッド５の下方を通り過ぎている場合がある。この場合、ＭＰＵ１０１は、目的の記憶場所がヘッド５の下方に再び到達するまで、シーケンシャルライト動作を中断する。
【００５２】
よって、もしライトモードを変更せずにシーケンシャルライト動作をこのまま継続したならば、論理的に連続する５つのライトデータブロックＤＴ１〜ＤＴ５のライトには、ディスク媒体１の５回転分に相当する時間が必要となる。
【００５３】
特殊ライト動作では、特殊エリア５０１上に、つまり特殊エリア５０１内のある同一のトラック（特殊トラック）上に、５つのライトデータブロックＤＴ１〜ＤＴ５がそれぞれあるスキップ間隔を置きながらライトされる。
【００５４】
より詳しくは、ＭＰＵ１０１は、ライトデータブロックＤＴ１が受信された時点で、特殊トラック内の最も速くライトを開始可能な記憶場所（ヘッド５の現在位置の近傍セクタ）を決定し、この記憶場所にライトデータブロックＤＴ１をライトする制御を実行する。ライトデータブロックＤＴ１のライトが完了すると、ＭＰＵ１０１は、ライト完了を通知するための応答をホスト１０に返す。ホスト１０は、ライトコマンドＷＴ２およびライトデータブロックＤＴ２をディスクドライブ１００に送信する。
【００５５】
ライトデータブロックＤＴ２が受信された時点で、ＭＰＵ１０１は、特殊トラック内の最も速くライトを開始可能な記憶場所（ヘッド５の現在位置の近傍セクタ）を決定し、この記憶場所にライトデータブロックＤＴ２をライトする制御を実行する。ライトデータブロックＤＴ２のライトが完了すると、ＭＰＵ１０１は、ライト完了を通知するための応答をホスト１０に返す。ホスト１０は、ライトコマンドＷＴ３およびライトデータブロックＤＴ３をディスクドライブ１００に送信する。
【００５６】
以上の特殊ライト動作においては、ディスク媒体１の回転を待つための上述の回転待ち状態は発生しない。さらに、ヘッド５を半径方向に移動させるシーク動作を実行する必要もない。したがって、論理的に連続する５つのライトデータブロックＤＴ１〜ＤＴ５のライトは、ディスク媒体１の１回転分に相当する時間内に完了する。よって、論理的に連続する５つのライトデータブロックＤＴ１〜ＤＴ５を、シーケンシャルライト動作よりも高速にディスク媒体１に特殊エリア（特殊トラック）にライトすることができる。
【００５７】
特殊トラックにライトされたライトデータブロックＤＴ１〜ＤＴ５は、後に、データ記憶エリア上の本来の記憶場所に書き戻してもよい。ライトデータブロックＤＴ１〜ＤＴ５の書き戻しが完了した後は、特殊トラックは再び新たな特殊ライトに使用することができる。この場合、新たなライトデータブロックが旧ライトデータブロック上に上書きされる。
【００５８】
次に、図７を参照して、書き込みデータ管理テーブル１０３Ｂの構成例を説明する。書き込みデータ管理テーブル１０３Ｂは、この書き込みデータ管理テーブル１０３Ｂが有効であることを示す有効フラグを保持する。
【００５９】
書き込みデータ管理テーブル１０３Ｂは、特殊エリア５０１にライトされた各ライトデータブロックに関する書き込み情報を格納する。いま、ある一回の特殊ライト動作によって、ライトデータブロックＤＴ１〜ＤＴｎが特殊エリア５０１にライトされた場合を想定する。この場合、ライトデータブロックＤＴ１〜ＤＴｎそれぞれに対応する書き込み情報が書き込みデータ管理テーブル１０３Ｂに登録される。
【００６０】
一つのライトデータブロックに対応する書き込み情報は、Ｓｔａｒｔ  ＬＢＡ、Ｗｒｉｔｅ  Ｃｏｕｎｔ、Ｓｋｉｐ  Ｓｅｃｔｏｒ  Ｃｏｕｎｔの３つの管理情報を含む。Ｓｔａｒｔ  ＬＢＡは、対応するライトデータブロックをライトすべき論理ブロックアドレスを示す。具体的には、Ｓｔａｒｔ  ＬＢＡは、ライトデータブロックの先頭の格納場所を指定する論理ブロックアドレス（開始ＬＢＡ）を示す。Ｗｒｉｔｅ  Ｃｏｕｎｔは、対応するライトデータブロックのデータサイズ、つまり対応するライトデータブロックの格納に必要なセクタ数（ブロック数）を示す。Ｓｋｉｐ  Ｓｅｃｔｏｒ  Ｃｏｕｎｔは、対応するライトデータブロックがライトされる記憶場所と直前のライトデータブロックがライトされた記憶場所との間の間隔（セクタ数）を示す。
【００６１】
たとえ停電等によってディスクドライブ１００が突然パワーオフされても、書き込み情報がロストされないようにするために、書き込み情報が付加されたライトデータを特殊エリアにライトしてもよい。
【００６２】
図８は、特殊エリアにライトされるライトデータブロックのフォーマットの例を示している。  
ライトデータブロックＤＴ１、ＤＴ２、ＤＴ３…は、特殊エリア内の同一トラックに互いに間隔を置きながらライトされる。ライトデータブロックＤＴ１は、図７のＷｒｉｔｅ  Ｃｏｕｎｔ［０］によって示されるデータサイズ（＝１０セクタ）を有している。ライトデータブロックＤＴ１は、図７のＳｋｉｐ  Ｓｅｃｔｏｒ  Ｃｏｕｎｔ［０］によって示される間隔（＝２セクタ）だけ特殊エリア内の先頭ブロック（先頭セクタ）からスキップされた格納場所にライトされる。ライトデータブロックＤＴ２は、図７のＳｋｉｐ  Ｓｅｃｔｏｒ  Ｃｏｕｎｔ［１］によって示される間隔（＝５セクタ）だけライトデータブロックＤＴ１の格納場所（最終セクタ）からスキップされた格納場所にライトされる。ライトデータブロックＤＴ２は、図７のＷｒｉｔｅ  Ｃｏｕｎｔ［１］によって示されるデータサイズ（＝１０セクタ）を有している。ライトデータブロックＤＴ３は、図７のＳｋｉｐ  Ｓｅｃｔｏｒ  Ｃｏｕｎｔ［２］によって示される間隔（＝５セクタ）だけライトデータブロックＤＴ２の格納場所（最終セクタ）からスキップされた格納場所にライトされる。ライトデータブロックＤＴ３は、図７のＷｒｉｔｅ  Ｃｏｕｎｔ［２］によって示されるデータサイズ（＝１０セクタ）を有している。
【００６３】
ＭＰＵ１０１は、特殊エリアへの各ライトデータブロック（要求データ）のライトが完了する度に、この要求データがライトされたセクタ群の直後の、特殊エリア内のセクタに、完了情報（ライト完了情報）をライトする。完了情報は、このライトデータブロックのライトが正常完了したことを示す。もしライトデータブロックのライトの途中で停電が発生したならば、完了情報は特殊エリアに書き込まれない。よって、完了情報をライトデータブロックの後ろにライトすることにより、上述の復元処理（書き戻し処理）によって、誤ったデータがデータ記憶エリアに戻されてしまうことを防止することができる。
【００６４】
完了情報は、ライトが正常完了したことを示す完了マークと、更新回数とを含んでいてもよい。更新回数は、特殊エリアに対するオーバーライトの回数、換言すれば、同一の特殊トラックに対して特殊ライト動作が実行された回数を示す。
【００６５】
さらに、ＭＰＵ１０１は、ライトを開始するライトデータブロックの直前のセクタに、開始情報と上述の書き込み情報とをライトする。開始情報は、このライトデータブロックのライト開始を示す開始マークと、上述の更新回数とを含んでもよい。ライトデータブロックＤＴ１がライトされるセクタ群の直前のセクタには、開始情報と、ライトデータブロックＤＴ１の書き込み情報とがライトされる。同様に、ライトデータブロックＤＴ２がライトされるセクタ群の直前のセクタには、開始情報と、ライトデータブロックＤＴ２の書き込み情報とがライトされる。
【００６６】
例えば、ライトデータブロックＤＴ１とライトデータブロックＤＴ２との間の間隔（＝５セクタ）に対応する記憶場所においては、まず、ライトデータブロックＤＴ１の完了情報がライトされる。そして、ライトデータブロックＤＴ２がライトされるべき記憶場所の直前のセクタに、ライトデータブロックＤＴ２の開始情報と、ライトデータブロックＤＴ２の書き込み情報（Ｓｔａｒｔ  ＬＢＡ［１］、Ｗｒｉｔｅ  Ｃｏｕｎｔ［１］、Ｓｋｉｐ  Ｓｅｃｔｏｒ  Ｃｏｕｎｔ［１］）とがライトされる。
【００６７】
次に、図９のフローチャートを参照して、ディスクドライブ装置１００によって実行されるライト処理の手順を説明する。
【００６８】
ディスクドライブ装置１００のＭＰＵ１０１は、ホスト１０から受信された１以上のライトコマンドがシーケンシャルライト可能なコマンドであるか否かを判定する（ステップＳ１１）。もしコマンドキュー数が１に設定されているならば、ステップＳ１１では、ＭＰＵ１０１は、ホスト１０から新たに受信されたライトコマンドが、直前のライトコマンドに論理的に連続するライトコマンドであるか否かを判定する。
【００６９】
ホスト１０から受信された１以上のライトコマンドがシーケンシャルライト可能なコマンドではないならば（ステップＳ１１のＮＯ）、ＭＰＵ１０１は、ランダムライト処理を実行する（ステップＳ１２）。ステップＳ１２では、ライトコマンドに対応するライトブロックデータは、このライトコマンドによって指定される論理ブロックアドレスが割り当てられたデータ記憶エリア内のデータ記憶位置にライトされる。
【００７０】
ホスト１０から受信された１以上のライトコマンドがシーケンシャルライト可能なコマンドであるならば（ステップＳ１１のＹＥＳ）、ＭＰＵ１０１は、ライトモードが特殊ライトモードにすでに変更されているか否かを判定する（ステップＳ１３）。ライトモードが変更されていないならば、つまり現在のライトモードがシーケンシャルライトモードであれば（ステップＳ１３のＮＯ）、ＭＰＵ１０１は、シーケンシャルライト処理を実行する（ステップＳ１４）。ステップＳ１４では、ＭＰＵ１０１によってシーケンシャルライト処理部３０２による処理が実行される。シーケンシャルライト処理部３０２は、処理対象のライトコマンドによって指定される論理ブロックアドレスが割り当てられた目的の記憶場所に、この処理対象のライトコマンドに対応するライトブロックデータをライトする。
【００７１】
ライトモードが変更されているならば、つまり現在のライトモードが特殊ライトモードであれば（ステップＳ１３のＹＥＳ）、ＭＰＵ１０１は、特殊エリアに対するライトを実行するための処理を実行する（ステップＳ１５）。ステップＳ１５では、ＭＰＵ１０１によって特殊ライト処理部３０３による処理が実行される。特殊ライト処理部３０３は、処理対象のライトコマンドに対応するライトデータブロックの受信時に、そのライトデータブロックを、特殊エリア内の最も早く書き込み可能な記憶場所にライトする。
【００７２】
シーケンシャルライト処理（ステップＳ１４）または特殊ライト処理（ステップＳ１５）の後、ＭＰＵ１０１は、シーケンシャルライト継続処理を実行する（ステップＳ１６）。シーケンシャルライト継続処理では、必要に応じて、ライトモードをシーケンシャルライトから特殊ライトモードに変更する処理などが実行される。
【００７３】
受信済みのシーケンシャルライト可能なすべてのライトコマンドの処理が完了するまでステップＳ１３〜Ｓ１６の処理が繰り返される（ステップＳ１７）。
【００７４】
次に、図１０のフローチャートを参照して、図７のステップＳ１５においてディスクドライブ装置１００によって実行される特殊ライト動作について説明する。  
ＭＰＵ１０１は、まず、特殊エリア（特殊トラック）上にヘッド５を位置づける。そして、ＭＰＵ１０１は、特殊エリアのヘッド５の現在位置を取得する処理を実行する（ステップＳ２１）。ステップＳ２１では、ＭＰＵ１０１は、ＨＤＣ１０４と共同して、特殊トラック上のヘッド５の現在位置、つまりヘッド５が位置する特殊トラック上のセクタ番号（ブロック番号）を検出する。
【００７５】
次いで、ＭＰＵ１０１は、目的のライトデータブロックに対応するライト処理開始ブロックを決定する（ステップＳ２２）。ライト処理開始ブロックは、目的のライトデータブロックをライトすべき先頭記憶場所（先頭セクタ）である。ステップＳ２２では、さらに、ＭＰＵ１０１は、目的のライトデータブロックに対応するスキップブロック数（スキップ幅）を決定する。スキップブロック数（スキップ幅）は、直前のライトデータブロック（または特殊エリアの先頭ブロック）と目的のライトデータブロックとの間の間隔を示す。
【００７６】
そして、ＭＰＵ１０１は、書き込みデータ管理テーブル１０３Ｂを更新して、目的のライトデータブロックに対応する書き込み情報（Ｓｔａｒｔ  ＬＢＡ、Ｗｒｉｔｅ  Ｃｏｕｎｔ、Ｓｋｉｐ  Ｓｅｃｔｏｒ  Ｃｏｕｎｔ）を書き込みデータ管理テーブル１０３Ｂに格納する（ステップＳ２３）。
【００７７】
ＭＰＵ１０１は、目的のライトデータブロックの先頭に開始情報と書き込み情報とを付加すると共に、目的のライトデータブロックの最終に完了情報を付加し、これによって図８で説明したようなフォーマットのライトデータブロックを生成する（ステップＳ２４，Ｓ２５）。そして、ＭＰＵ１０１は、この生成したライトデータブロックを特殊エリアにライトする（ステップＳ２６）。
【００７８】
次に、図１１のフローチャートを参照して、図７のステップＳ１６においてディスクドライブ装置１００によって実行されるシーケンシャル継続処理について説明する。  
ＭＰＵ１０１は、ホスト１０からライトコマンドを受信すると（ステップＳ３１）、受信したコマンドがシーケンシャルライト可能なコマンドであるか否かを判定する（ステップＳ３２）。受信したコマンドがシーケンシャルライト可能なコマンドであれば（ステップＳ３２のＹＥＳ）、ＭＰＵ１０１は、上述の回転待ち状態が発生しているか否かを判定する（ステップＳ３３）。
【００７９】
回転待ち状態が発生してない場合には（ステップＳ３３のＮＯ）、ＭＰＵ１０１は、シーケンシャルライト処理部３０２にシーケンシャルライト実施要求を通知して、シーケンシャルライト動作を実行する（ステップＳ３４）。
【００８０】
回転待ち状態が発生している場合には（ステップＳ３３のＹＥＳ）、ＭＰＵ１０１は、特殊エリアへの書き込み中であるか否か、つまり現在のライトモードが特殊ライトモードに変更されているか否かを判定する（ステップＳ３６）。現在のライトモードが特殊ライトモードでないならば（ステップＳ３６のＮＯ）、ＭＰＵ１０１は、特殊ライトモードを選択し、特殊ライト処理部３０３に特殊ライト動作を実行させるために、シーケンシャル実施要求を特殊ライト処理部３０３に通知する（ステップＳ３７）。特殊ライト動作は、上述したように、ライトデータブロックの受信完了直後にこのライトデータブロックを最速でライト可能な特殊エリア上の記憶場所にライトするライトモードである。次いで、ＭＰＵ１０１は、システム領域内またはＲＡＭ１０３上の書き込みデータ管理テーブル１０３Ｂの有効フラグ（ｆｌａｇ＝１）を１に設定して、書き込みデータ管理テーブル１０３Ｂを有効にする（ｆｌａｇ＝１）（ステップＳ３８）。
【００８１】
現在のライトモードが特殊ライトモードであるならば（ステップＳ３６のＹＥＳ）、ＭＰＵ１０１は、現在使用中の特殊エリアにライトデータブロックをライト可能であるか否か、つまり現在使用中の特殊エリアにライト可能な領域が残っているか否かを判定する（ステップＳ３９）。現在使用中の特殊エリアにライト可能な領域が残っていないならば（ステップＳ３９のＮＯ）、特殊エリアに空きがあるかどうか、つまり使用可能な別の特殊エリアが存在するか否かを判定する（ステップＳ４０）。使用可能の別の特殊エリアがあれば（ステップＳ４０のＹＥＳ）、ＭＰＵ１０１は、ライト対象の特殊エリアを、現在使用中の特殊エリアから使用可能の別の特殊エリアに変更する（ステップＳ４２）。もし使用可能の別の特殊エリアが複数存在するならば、現在使用中の特殊エリアの近傍に位置する使用可能の別の特殊エリアが、ライト対象の特殊エリアとして選択される。
【００８２】
使用可能の別の特殊エリアがなければ（ステップＳ４０のＮＯ）、ＭＰＵ１０１は、使用可能な特殊エリアを新たに作るために、書き戻し処理を実行する（ステップＳ４１）。そして、ＭＰＵ１０１は、ライト対象の特殊エリアを、作成された使用可能な特殊エリアに変更する（ステップＳ４２）。
【００８３】
そして、ＭＰＵ１０１は、特殊ライト処理部３０３にシーケンシャル（特殊ライト動作）を継続すべきことを通知する（ステップＳ３５）。
【００８４】
ホスト１０からコマンド（ライトコマンド）が受信されない場合（ステップＳ３１のＮＯ）、あるいは受信されたライトコマンドがシーケンシャルライト可能なコマンドではない場合（ステップＳ３２のＮＯ）にも、ＭＰＵ１０１は、書き戻し処理を実行してもよい（ステップＳ５１）。書き戻し処理の実行後、ＭＰＵ１０１は、シーケンシャル終了を書き込み部３００に通知する（ステップＳ５２）。
【００８５】
次に、図１２のフローチャートを参照して、図１１のステップＳ４１、Ｓ５１においてディスクドライブ装置１００によって実行される書き戻し処理（復元処理）の手順を説明する。
【００８６】
ＭＰＵ１０１は、書き込みデータ管理テーブル１０３Ｂが有効であるか否か、つまり書き込みデータ管理テーブル１０３Ｂのｆｌａｇが１に設定されているか否かを判定する（ステップＳ６１）。書き込みデータ管理テーブル１０３Ｂが有効でないならば（ステップＳ６１のＮＯ）、データ記憶エリアに戻すべきライトデータブロックは特殊エリアに存在しない。したがって、ＭＰＵ１０１は、書き戻し処理を終了する。
【００８７】
書き込みデータ管理テーブル１０３Ｂが有効であるならば（ステップＳ６１のＹＥＳ）、ＭＰＵ１０１は、特殊エリア上の全てのデータ（書き戻し対象データ）がバッファ１０５にロード済みかどうかを判定する（ステップＳ６２）。このロードが完了していなければ（ステップＳ６２のＮＯ）、ＭＰＵ１０１は、特殊エリア上の全てのデータ（書き戻し対象データ）をリードして、その全てのデータをバッファ１０５に格納する（ステップＳ６３）。ステップＳ６３では、後述する図１３のフローチャートのステップＳ８１に示されているように、リード処理は特殊エリアの先頭ブロック（先頭セクタ）から開始される。そして、特殊エリアの先頭ブロックから最終ブロックまでの領域内に格納されている全てのデータがリードされる。
【００８８】
次いで、ＭＰＵ１０１は、上述の開始情報、完了情報、書き込み情報内のスキップ幅（Ｓｋｉｐ  Ｓｅｃｔｏｒ  Ｃｏｕｎｔ）等に基づいて、バッファ１０５上にロードされたデータ列から、有効データ部（有効なライトデータブロック群）を抽出する処理を実行する（ステップＳ６４〜Ｓ６８）。
【００８９】
まず、ＭＰＵ１０１は、全ての開始情報と全ての完了情報をチェックして（ステップＳ６４）、データ列内に、更新回数が不一致となる境界部が存在するか否かを判定する（ステップＳ６５）。更新回数が不一致となる境界部の存在が検出されなかったならば（ステップＳＳ６５のＮＯ）、ＭＰＵ１０１は、データ列内に含まれる全てのデータを有効データ部として特定する（ステップＳ６６）。一方、更新回数が不一致となる境界部の存在が検出されたならば（ステップＳＳ６５のＹＥＳ）、ＭＰＵ１０１は、データ列内に含まれ、且つ不一致が検出された境界部よりも前のデータ部分を、有効データ部として特定する（ステップＳ６７）。
【００９０】
この後、ＭＰＵ１０１は、有効データ部内の各書き込み情報を収集して、有効データ部内の各ライトデータブロックを本来の記憶場所に戻すための設定処理を実行する（ステップＳ６８）。このステップＳ６８では、ＭＰＵ１０１は、各書き込み情報に基づいて、有効データ部内のライトデータブロック毎にＳｔａｒｔ  ＬＢＡ、Ｗｒｉｔｅ  Ｃｏｕｎｔ、およびＳｋｉｐ  Ｓｅｃｔｏｒ  Ｃｏｕｎｔを示すリスト情報を生成してもよい。この場合、各Ｓｋｉｐ  Ｓｅｃｔｏｒ  Ｃｏｕｎｔの値は、ライトデータブロック間のスキップ幅に相当するデータ部分を書き戻し対象データから除外するために用いられる。特殊エリアへのライトデータブロックのライトは、オーバーライト処理によって実行される。このため、書き戻し対象のライトデータブロック間のスキップ幅に相当するデータ記憶領域に、既に書き戻された古いライトデータブロックが存在する可能性がある。したがって、ライトデータブロック間のスキップ幅に相当するデータ部分を書き戻し対象データから除外することにより、このような古いライトデータブロックが誤って再びデータ記憶エリアに戻されてしまうことを防止することができる。
【００９１】
次いで、ＭＰＵ１０１は、作成したリスト情報に基づいて、各ライトデータブロックを、そのライトデータブロックのＳｔａｒｔ  ＬＢＡが割り当てられたセクタから始まる、データ記憶エリア上の記憶領域にライトする（ステップＳ６９）。これにより、各ライトデータブロックを本来の記憶場所に戻すことができる。そして、ＭＰＵ１０１は、システム領域内又はＲＡＭ１０３上の書き込みデータ管理テーブル１０３Ｂを更新する（ステップＳ７０）。ステップＳ７０では、書き込みデータ管理テーブル１０３Ｂのｆｌａｇ＝０に設定して、書き込みデータ管理テーブル１０３Ｂを無効にする処理が実行される。ステップＳ７０では、さらに、更新回数の値を更新する処理も行われる。
【００９２】
次に、図１３のフローチャートを参照して、特殊エリア上の全てのデータ（書き戻し対象データ）をリードする処理の手順ついて説明する。
【００９３】
ＭＰＵ１０１は、特殊エリアに格納されている全てのデータをリードして、そのリードしたデータをバッファ１０５に格納する（ステップＳ８１）。このステップＳ８１では、ＭＰＵ１０１は、特殊エリアからデータをリードする処理を、特殊エリアの先頭ブロック（先頭セクタ）から開始する。そして、ＭＰＵ１０１は、特殊エリアの先頭ブロックから最終ブロックまでの間のセクタそれぞれに格納されている全てのデータを順次リードし、それら全てのデータをバッファ１０５に格納する。
【００９４】
次に、図１４のフローチャートを参照して、書き込みデータ管理テーブル１０３Ｂを初期化するための手順について説明する。  
ＭＰＵ１０１は、書き込みデータ管理テーブル１０３Ｂの有効フラグ（ｆｌａｇ）を０に設定して書き込みデータ管理テーブル１０３Ｂを無効にすると共に、書き込みデータ管理テーブル１０３Ｂの更新回数（ｃｏｕｎｔ）を０にする（ステップＳ９１）。次いで、ＭＰＵ１０１は、書き込みデータ管理テーブル１０３Ｂの内容（書き込み情報）を初期化する（ステップＳ９２）。ステップＳ９２では、各Ｓｔａｒｔ  ＬＢＡの値は初期値（例えば“０ｘＦＦＦＦＦＦＦＦ”）に設定される。また、各Ｗｒｉｔｅ  Ｃｏｕｎｔの値、および各Ｓｋｉｐ  Ｓｅｃｔｏｒ  Ｃｏｕｎｔの値も、初期値（例えば“０ｘ００”）に設定される。ここで、記号“０ｘ”は、１６進表記であることを示している。そして、ＭＰＵ１０１は、初期化された書き込みデータ管理テーブル１０３Ｂをディスク媒体１上のシステム領域にライトする（ステップＳ９３）。
【００９５】
次に、図１５のフローチャートを参照して、ディスクドライブ装置１００のパワーオン時に実行される処理について説明する。  
ＭＰＵ１０１は、まず、システム領域の書き込みデータ管理テーブル１０３Ｂの有効フラグが有効（ｆｌａｇ＝１）であるか否かを判定する（ステップＳ１０１）。ｆｌａｇ＝１であるならば（ステップＳ１０１のＹＥＳ）、特殊エリアに有効データ（ライトデータブロック）が存在するので、ＭＰＵ１０１は、図１２で説明した書き戻し処理を実行する（ステップＳ１０２）。この後、ＭＰＵ１０１は、図１４で説明した管理テーブル初期化処理を実行する（ステップＳ１０３）。
【００９６】
一方、システム領域の書き込みデータ管理テーブル１０３Ｂの有効フラグが無効（ｆｌａｇ＝０）であるならば（ステップＳ１０１のＮＯ）、特殊エリアに有効データ（ライトデータブロック）は存在しない。したがって、ＭＰＵ１０１は、上述のステップＳ１０２、Ｓ１０３の処理の実行をスキップする。
【００９７】
以上説明したように、本実施形態によれば、連続する論理ブロックアドレスを有する複数のライトデータブロックは、ディスク媒体上の特定のエリア（特殊エリア）内の互いに離間された複数の記憶場所にライトされる。この場合、ヘッド５は特定のエリアに位置づけられる。そして、複数のライトデータブロック内の第１ライトデータブロックの受信時には、第１ライトデータブロックは、そのヘッド５の位置の近傍の第１記憶場所にライトされる。そして、第１ライトデータブロックに対応する第１論理ブロックアドレスに対して論理的に連続する第２論理ブロックアドレスを有する第２ライトデータブロックの受信時には、第２ライトデータブロックは、ヘッド５の位置の近傍の第２記憶場所にライトされる。このようにして、シーケンシャルライト可能な論理的に連続する複数のライトデータブロックの各々は、各ライトデータブロックのＬＢＡとは無関係に、ヘッド５の現在位置の近傍、特殊エリア内の記憶場所にライトされる。したがって、たとえ各ライトデータブロックの受信タイミングの遅れが発生しても、目的の記憶場所が再びヘッド５の下方に来るまで待つという待ち状態が発生することが無くなり、論理的に連続する複数のライトデータブロックのライトに要する時間を低減することができる。よって、ディスクドライブ１００のシーケンシャルライト性能を向上させることができ、シーケンシャルライト動作を実行した場合に比べ、論理的に連続する複数のライトデータブロックのライトの完了をホスト１０にいち早く通知することができる。
【００９８】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９９】
１…ディスク媒体、５…ヘッド、１０…ホスト、１１０…スピンドルモータ、２０３Ａ…回転待ち検出部、３００…書き込み部、３０２…シーケンシャルライト処理部、３０３…特殊ライト処理部、３０４…データ復元部、５０１、５０１Ａ，５０１Ｂ，５０１Ｃ…特殊エリア。
【図１】
2013157062.tif 000003
【図２】
2013157062.tif 000004
【図３】
2013157062.tif 000005
【図４】
2013157062.tif 000006
【図５】
2013157062.tif 000007
【図６】
2013157062.tif 000008
【図７】
2013157062.tif 000009
【図８】
2013157062.tif 000010
【図９】
2013157062.tif 000011
【図１０】
2013157062.tif 000012
【図１１】
2013157062.tif 000013
【図１２】
2013157062.tif 000014
【図１３】
2013157062.tif 000015
【図１４】
2013157062.tif 000016
【図１５】
2013157062.tif 000017