(57)【要約】【課題】ストリーム系コマンドによるデータを媒体に書込む媒体記憶装置に関し、コマンドの実行時間を守りつつ、ライトデータの信頼性を向上する。【解決手段】ライトストリーム系コマンドのライトデータを格納するバッファ（１４）と、バッファ（１４）のデータをヘッド（２５）により媒体（１９）に順次書込むコントローラ（２６）と、通常は、エラーすると終了してしまう処理を、エラーセクターを書き飛ばし、継続させ、かつコマンド実行後、書き飛ばしたセクタを書込むための処理ユニット（１１）とを設ける。これにより、コマンドで指定された書込み時間を守りつつ、次回からのリード処理で正しく媒体をリードできるように修正できる。【選択図】図１０
2004335020.tif 000002
【特許請求の範囲】
【請求項１】
ヘッドにより、記憶媒体に、ストリーム系コマンドに応じて、ライトデータを書込むストリーム系コマンドの書込み処理方法において、
前記ストリーム系コマンドの受信したライトデータをバッファに書込むステップと、
前記バッファのライトデータを前記ヘッドにより前記記憶媒体に書込みが成功したかを確認しながら、順次前記記憶媒体に書込むステップと、
前記書込みステップにおいて、前記書込みが成功しなかった場合に、前記書込みが成功しなかったセクタを書き飛ばし、前記成功しなかったセクタのライトデータを前記バッファでプロテクトするステップと、
前記ストリーム系コマンドの実行後、前記プロテクトしたセクタのライトデータを前記ヘッドにより前記記憶媒体に書込むステップとを有する
ことを特徴とするストリーム系コマンドの書込み処理方法。
【請求項２】
前記書込みが成功しなかった場合に、前記記憶媒体への書込み処理を停止した後、前記ヘッドの書込み処理を再起動するステップを更に有する
ことを特徴とする請求項１のストリーム系コマンドの書込み処理方法。
【請求項３】
前記プロテクトステップは、前記書込みが成功しなかったセクタと、再起動まで書き飛ばしたセクタとのライトデータをプロテクトするステップからなる
ことを特徴とする請求項２のストリーム系コマンドの書込み処理方法。
【請求項４】
前記プロテクトしたセクタのライトデータを書込むステップは、前記ライトデータの書込みが成功しなかった場合に、所定回数のリトライを許可するステップからなる
ことを特徴とする請求項１のストリーム系コマンドの書込み処理方法。
【請求項５】
記憶媒体に、ヘッドによりデータを書込む媒体記憶装置において、
ストリーム系コマンドとともに受信したライトデータを格納するバッファと、前記バッファのライトデータを前記ヘッドにより、順次前記記憶媒体に書込むためのコントローラと、
前記書込みが成功したかを確認し、前記書込みが成功しなかった場合に、前記書込みが成功しなかったセクタを書き飛ばし、前記成功しなかったセクタのライトデータを前記バッファでプロテクトする処理ユニットとを有し、
前記処理ユニットは、前記ストリーム系コマンドの実行後、前記プロテクトしたセクタのライトデータを前記ヘッドにより前記記憶媒体に書込む
ことを特徴とする媒体記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ストリーム系コマンドにより媒体にデータを書き込むストリーム系コマンドの書込み処理方法及び媒体記憶装置に関し、特に、指定時間内に、データを連続的に書き込むためのストリーム系コマンドの書込み処理方法及び媒体記憶装置に関する。
【０００２】
【従来の技術】
近年のデータ処理技術の進展により、動画像や音楽、音声等の処理も可能となっている。このため、データ記憶装置は、これらのデータの記憶に利用されつつある。このような用途のため、Ｒｅａｄ  Ｓｔｒｅａｍ／Ｗｒｉｔｅ  Ｓｔｒｅａｍといったストリーム系のコマンドが用意されている。
【０００３】
このストリーム系コマンドは、主にＡＶ（Ａｕｄｉｏ  Ｖｉｓｕａｌ）で使用される。そのため、本来持っているデータ記憶装置（磁気デイスク装置等）の信頼性よりも、パフォーマンス（速度）を優先する。
【０００４】
従来のデータ記憶装置では、媒体への書込みの際に、書込みエラーが発生すると、通常はリトライを行い、読み書きを極限まで試みる。しかし、Ｓｔｒｅａｍ系コマンドは、依頼ユニットが連続的にデータを送信するため、エラーが発生すると、指定時間内でリトライを含めて処理を終了しなければならない。そのため、従来は、書込みエラーが発生したら、そのコマンドをエラー終了していた。
【０００５】
【発明が解決しようとする課題】
近年、データ記憶装置の用途拡大に伴い、このようなエラー終了が好ましくない場合もある。例えば、実時間録画、録音の分野では、エラー終了しても、再送を期待できない。
【０００６】
又、データが正しく媒体にライトされないセクタが生じ、読み出しても、利用できない場合がある。
【０００７】
従って、本発明の目的は、ストリーム系コマンドによるデータライト中に、ライトエラーが発生しても、エラー終了せず、実行時間を守りつつ、且つ正しいデータをライトするためのストリーム系コマンドの書込み処理方法及び媒体記憶装置を提供することにある。
【０００８】
又、本発明の他の目的は、ストリーム系コマンドによるデータライト中に、ライトエラーが発生しても、エラー終了せず、実行時間を守りつつ、且つリード時に正しいデータをリードするためのストリーム系コマンドの書込み処理方法及び媒体記憶装置を提供することにある。
【０００９】
【課題を解決するための手段】
この目的の達成のため、本発明による、ヘッドにより、記憶媒体に、ストリーム系コマンドに応じて、ライトデータを書込むストリーム系コマンドの書込み処理方法は、前記ストリーム系コマンドの受信したライトデータをバッファに書込むステップと、前記バッファのライトデータを前記ヘッドにより前記記憶媒体に書込みが成功したかを確認しながら、順次前記記憶媒体に書込むステップと、前記書込みステップにおいて、前記書込みが成功しなかった場合に、前記書込みが成功しなかったセクタを書き飛ばし、前記成功しなかったセクタのライトデータを前記バッファでプロテクトするステップと、前記ストリーム系コマンドの実行後、前記プロテクトしたセクタのライトデータを前記ヘッドにより前記記憶媒体に書込むステップとを有する。
【００１０】
又、本発明による、記憶媒体に、ヘッドによりデータを書込む媒体記憶装置は、ストリーム系コマンドとともに受信したライトデータを格納するバッファと、前記バッファのライトデータを前記ヘッドにより、順次前記記憶媒体に書込むためのコントローラと、前記書込みが成功したかを確認し、前記書込みが成功しなかった場合に、前記書込みが成功しなかったセクタを書き飛ばし、前記成功しなかったセクタのライトデータを前記バッファでプロテクトする処理ユニットとを有し、前記処理ユニットは、前記ストリーム系コマンドの実行後、前記プロテクトしたセクタのライトデータを前記ヘッドにより前記記憶媒体に書込む。
【００１１】
本発明では、ライトストリーム系コマンドにおいて、通常は、エラーすると終了してしまう処理を、エラーセクターを書き飛ばし、継続させ、かつコマンド実行後、書き飛ばしたセクタを書込むため、コマンドで指定された書込み時間を守りつつ、次回からのリード処理で正しく媒体をリードできるように修正できる。
【００１２】
又、本発明では、好ましくは、前記書込みが成功しなかった場合に、前記記憶媒体への書込み処理を停止した後、前記ヘッドの書込み処理を再起動するステップを更に有する。これにより、ヘッドのエラー状態を回復して、書込みを継続できる。
【００１３】
又、本発明では、好ましくは、前記プロテクトステップは、前記書込みが成功しなかったセクタと、再起動まで書き飛ばしたセクタとのライトデータをプロテクトするステップからなる。これにより、書込み処理を停止して、再起動しても、書き飛ばしたライトデータをプロテクトできる。
【００１４】
又、本発明では、好ましくは、前記プロテクトしたセクタのライトデータを書込むステップは、前記ライトデータの書込みが成功しなかった場合に、所定回数のリトライを許可するステップからなる。これにより、リトライが許可されるため、一層書込みが確実となる。
【００１５】
又、本発明では、好ましくは、前記プロテクトステップは、前記書込みが成功しなかったセクタと、前記セクタのライトデータの前記バッファのアドレスをプロテクトテーブルに格納するステップを有する。プロテクトテーブルに記録するため、書込み処理を継続しても、後に書き飛ばしたセクタを認識できる。
【００１６】
更に、本発明では、好ましくは、前記プロテクトしたセクタのライトデータを書込むステップは、前記プロテクトテーブルを参照して、前記バッファのライトデータを書込むステップからなる。これにより、容易に、書き飛ばしたセクタを書込みできる。
【００１７】
更に、本発明では、好ましくは、前記プロテクトステップは、前記ライト処理を停止した後、前記再起動までの時間を考慮した最短の開始セクタを計算するステップと、前記書込みが成功しなかったセクタと、前記計算結果から得た前記再起動まで書き飛ばしたセクタとのライトデータをプロテクトするステップからなる。これにより、書き飛ばしたセクタを容易に検出できる。
【００１８】
更に、本発明では、好ましくは、前記記憶媒体が、回転するデイスク媒体からなる。これにより、大容量の媒体に適用できる。
【００１９】
更に、本発明では、好ましくは、前記プロテクトステップは、前記書込みが成功しなかった場合に、前記コマンドが前記ストリーム系コマンドであることを認識して、前記プロテクトを実行するステップからなる。これにより、通常の書込み処理ルーチンを利用して、ストリーム系コマンドの書込み処理を実行できる。
【００２０】
【発明の実施の形態】
以下、本発明の実施の形態を、媒体記憶装置、ストリーム系コマンドのデータライト処理、他の実施の形態の順で説明する。
【００２１】
［媒体記憶装置］
図１は、本発明の一実施の形態の媒体記憶装置の構成図、図２は、図１のタスクファイルの説明図、図３は、図２のフューチャレジスタの説明図、図４は、図１のメモリのテーブルの説明図、図５は、図４のテーブルの構成図、図６は、図１のデータバッファの説明図である。
【００２２】
図１は、媒体記憶装置として、磁気デイスクにデータをリード／ライトする磁気デイスク装置（ＨＤＤ）を例に示す。磁気デイスク装置１０は、パーソナルコンピュータ等のホストとＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）規格のインタフェイスのケーブル９で接続される。
【００２３】
磁気デイスク装置１０は、磁気デイスク１９と、磁気デイスク１９を回転するスピンドルモータ２０と、磁気デイスク１９にデータをリード／ライトする磁気ヘッド２５と、磁気ヘッド２５を磁気デイスク１９の半径方向（トラック横断方向）に移動するアクチュエータ（ＶＣＭ）２２とを備える。
【００２４】
又、制御部として、ＨＤＣ（Ｈａｒｄ  Ｄｉｓｋ  Ｃｏｎｔｒｏｌｌｅｒ）２６と、データバッファ１４と、ＭＰＵ１１と、メモリ１３と、ヘッドＩＣ１８と、スピンドルモータドライバ２１と、ＶＣＭドライバ２３と、位置検出部２４と、これらを接続するバス１７とを備える。
【００２５】
ＨＤＣ２６は、ホストからタスクをセットするタスクファイル１２Ａを有するＡＴＡインタフェース制御回路１２と、データバッファ１４を制御するデータバッファ制御回路１５と、記録データのフォーマットの制御を行うフォーマッタ制御回路１６とを有する。
【００２６】
ヘッドＩＣ１８は、ライト時は、記録データに従い磁気ヘッド２５に記録電流を流し、リード時は、磁気ヘッド２５からの読取信号を増幅して、リードデータ（サーボ情報を含む）を出力する。位置検出部２４は、ヘッドＩＣ１８からのサーボ情報から磁気ヘッド２５の位置を検出する。
【００２７】
スピンドルドライバ２１は、スピンドルモータ２０を回転駆動する。ＶＣＭドライバ２３は、磁気ヘッド２５を移動するＶＣＭ２２を駆動する。ＭＰＵ（Ｍｉｃｒｏ    Ｐｒｏｃｅｓｓｏｒ）１１は、磁気ヘッド２５の位置制御、リード／ライト制御、リトライ制御を行う。メモリ１３は、ＭＰＵ１１の処理に必要なテーブル、データを格納する。
【００２８】
図２は、ホストからのコマンド列（タスク）が設定される図１のＡＴＡ規格のタスクファイル（レジスタ）１２Ａの説明図である。コマンドレジスタ１Ｆ７には、リード、ライト等のコマンドを設定する。デバイス／ヘッドレジスタ１Ｆ６、シリンダハイ、ロー、セクタ番号レジスタ１Ｆ５〜１Ｆ３に、開始アドレスが設定される。セクターカウントレジスタ１Ｆ２に、リード／ライトのセクタ数が設定される。
【００２９】
フューチャレジスタ１Ｆ１には、リード／ライトの形態が指定される。図３に示すように、８ビットのフューチャレジスタ１Ｆ１のビット７が、ＵＲＧＥＮＴ（ＵＲＧ）ビット、ビット６が、ＷＲＩＴＥ  ＣＯＮＴＩＮＵＥ（ＷＣ）ビットである。ＵＲＧビットは、緊急処理を指定し、例えば、ライトコマンドでは、リトライを禁止し、ライト動作を実行することを指定する。ＷＣビットは、ライト継続を指定し、数回のリトライのみが許可されるライトモードを指定する。
【００３０】
本実施の形態では、ＵＲＧビット、又はＷＣビットの指定で、ストリーム系コマンドであることを指定する。
【００３１】
図４は、図１のメモリ１３に設定されるテーブルの説明図、図５は、図４のテーブルの構成図、図６は、図１のデータバッファ１４の説明図である。図４に示すように、メモリ１３には、コマンドテーブル１３Ａと、プロテクトテーブル１３Ｂが設けられる。
【００３２】
図６に示すように、データバッファ１４には、ホストからのライトデータ又はホストへのリードデータが、各バッファアドレス位置に、ＬＢＡ単位で格納される。
【００３３】
図５に示すように、コマンドテーブル１３Ａは、ホストから受けたコマンドと、開始ＬＢＡ（論理ブロックアドレス）、セクターカウント数、後述するプロテクトビットを格納する。プロテクトテーブル１３Ｂは、プロテクトするコマンド番号と、図６のデータバッファ１４の領域のプロテクトする開始ＬＢＡと、プロテクトするセクターカウント数と、そのデータバッファ１４のアドレスと、プロテクトビットとを格納する。
【００３４】
［ストリーム系コマンドのデータライト処理］
次に、前述の構成において、ストリーム系コマンドを受信した場合のデータライト処理を、図７乃至図９の処理フロー図で説明する。
【００３５】
（Ｓ１０）ＭＰＵ１１は、ＨＤＣ２６経由でのホストからのコマンドが一定時間ないかを判定する。一定時間ホストからのコマンドがないと判定すると、図９のステップＳ３２に進む。
【００３６】
（Ｓ１２）ＭＰＵ１１は、ホストからＨＤＣ２６がコマンドを受け取ったかを判定する。受け取ってないと、ステップＳ１０に戻る。
【００３７】
（Ｓ１４）ＭＰＵ１１は、ホストからＨＤＣ２６経由で、コマンドを受け取ると、ＭＰＵ１１は、そのコマンドコードを解析し、ＨＤＣ２６にそのコマンドに対応した命令を発する。即ち、ＭＰＵ１１は、コマンドコード解析により、Ｗｒｉｔｅ  Ｓｔｒｅａｍ  ＰＩＯ（Ｐｏｒｔ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）コマンドでないと判定すると、通常処理をＨＤＣ２６に発する。尚、通常処理は、データの信頼性を重視し、時間にかかわらず、リード／ライトエラーに対し、所定回数のリトライを行い、データの信頼性を保つ。
【００３８】
（Ｓ１６）一方、ＭＰＵ１１は、Ｗｒｉｔｅ  Ｓｔｒｅａｍ  ＰＩＯコマンドと判定すると、メモリ１３上にあるコマンドテーブル１３Ａを、ＨＤＣ２６のタスクファイル１２Ａにセットされたコマンド（図２参照）に従い、更新する。又、ホストから送られたライトデータは、ＨＤＣ２６（ＡＴＡインタフェース制御回路１２、バッファ制御回路１５）を経由して、データバッファ１４に格納される（図６参照）。
【００３９】
（Ｓ１８）次に、ＭＰＵ１１は、ＨＤＣ２６に、Ｗｒｉｔｅ  Ｓｔｒｅａｍ  ＰＩＯの動作を指示する。これにより、ＨＤＣ２６のバッファ制御回路１５は、受け取ったバッファ１４上のライトデータを、フォーマット回路１６、ヘッドＩＣ１８を介し磁気ヘッド２５を駆動して、磁気デイスク１９へライト動作を行う。
【００４０】
（Ｓ２０）ＭＰＵ１１は、位置検出部２４からの復調位置を検出し、ＶＣＭドライバ２３を介してＶＣＭ２２を駆動し、磁気ヘッド２５を指定トラックに位置制御する。又、復調位置から磁気ヘッドがトラック中心から所定範囲外れた（オフトラックエラー）かを判定している。
【００４１】
（Ｓ２２）ＭＰＵ１１は、オフトラックエラー等のライトエラーと判定すると、その時点（ライト系エラーが発生した時）で、ＨＤＣ２６の媒体ライト処理を停止する。次に、今回のコマンドが、フューチャレジスタ１Ｆ１（図３参照）が、ＵＲＧ  ｂｉｔ（Ｕｒｇｅｎｔ  ｂｉｔ）付きなので、リトライを行わずに、ＭＰＵ１１は、再起動までの時間を考慮した最短の開始ＬＢＡを計算する。即ち、ライトエラーでライト動作を停止しても、磁気デイスク１９は、回転しているため、再起動（ＶＣＭ２２による磁気ヘッド２５のトラック中心への復帰及びその確認）まで、所定数のセクタ（ＬＢＡ）の書込みができない。
【００４２】
（Ｓ２４）ＭＰＵ１１は、メモリ１３上のプロテクトテーブル１３Ｂ（図４参照）の更新を行う。即ち、プロテクトテーブル１３Ｂに、書けなかった開始ＬＢＡと、前述の最短の開始ＬＢＡから計算した書けなかったセクターカウント数、バッファ１４のそのバッファアドレスと、プロテクトビット（保護フラグ）を追加する。即ち、エラーセクターと、再起動までの書き飛ばしセクタのデータを保護する。
【００４３】
（Ｓ２６）ＭＰＵ１１は、後述する図１０に示すように、ＬＢＡ１１から再起動可能だと計算したとすると、ＬＢＡ５から１０までは何も行わず、ＬＢＡ１１からＨＤＣ２６に再度媒体ライト処理を起動させる。そして、ステップＳ１８に戻る。図１０では、ＬＢＡ４でライトエラーが検出されているから、実際ライトできなかった、またはライトしていないＬＢＡは、ＬＢＡ４からＬＢＡ１０までということになる。
【００４４】
（Ｓ２８）一方、ステップＳ２０でライト系エラーを検出しないと、ＭＰＵ１１は、ＨＤＣ２６からコマンドの終了通知があるかを判定する。終了通知がないと、ステップＳ１８に戻る。
【００４５】
（Ｓ３０）ＭＰＵ１１は、ＨＤＣ２６からコマンドの終了を受けると、メモリ１３上のコマンドテーブル１３Ａ（図５参照）の更新を行う。即ち、コマンドテーブル１３Ａのプロテクトビットを「１」から「０」に変更する。そして、図７のステップＳ１０に戻る。尚、その後ＭＰＵ１１は、新たにコマンドがホストにより発行された場合でも、データを格納しているバッファ１４上のバッファアドレス  ０ｘ０６００〜０ｘ１３ＦＦ（図６参照）までは、プロテクトテーブル１３Ｂ（図５参照）で保護されている為、使用しない。
【００４６】
（Ｓ３２）一方、ステップＳ１０で、この後、ホストが暫くコマンドを発行しなかったかを判定する。例として、１分間コマンド発行がないかを判定する。所定時間コマンドを受領しなければ、ＭＰＵ１１は、メモリ１３上のプロテクトテーブル１３Ｂ（図５参照）を基に、ＨＤＣ２６に、再度媒体ライト処理を指示する。この時は、ホストから発行されたコマンドではないので、ＨＤＣ２６は、フルリトライを行い、極力媒体ライトを完了するように試みる。即ち、ＭＰＵ１１は、オフトラックエラー等のライトエラーと判定すると、その時点（ライト系エラーが発生した時）で、ＨＤＣ２６の媒体ライト処理を停止し、リトライを行う。
【００４７】
（Ｓ３４）次に、ＭＰＵ１１は、リトライアウト（所定回のリトライを行っても、エラーが継続する）かを判定する。
【００４８】
（Ｓ３６）リトライアウトでない場合、即ち、媒体ライトが完了した場合には、ＭＰＵ１１は、ＨＤＣ２６からのライト完了を受ける。ＭＰＵ１１は、ライト完了を受けると、ＨＤＣ経由の媒体ライト処理を終了し、図５のプロテクトテーブル１３Ｂを更新する。即ち、実行したプロテクトテーブル１３Ｂをクリアし、ステップＳ１０の通常シーケンスである、コマンド受領待機状態に戻る。
【００４９】
（Ｓ３８）ステップＳ３４で、フルリトライでも、媒体ライトに失敗してしまった場合には、そのＬＢＡにライトする事を諦め、次のＬＢＡのライトへと移行する。例として、ＬＢＡ４へのフルリトライ媒体ライトが失敗したとしたら、ＬＢＡ４は諦め、次のＬＢＡ５へのフルリトライ媒体ライトへと移行する。又、ステップＳ３６で、ライト完了でないと判定すると、次のＬＢＡのライトに移行する。そして、ステップＳ３２に戻る。
【００５０】
即ち、図９のフローでは、ステップＳ３２からＳ３８までの工程を、プロテクトテーブル１３Ｂに記されているセクターカウント数分繰り返す。その工程を全て完了したら、図５のプロテクトテーブル１３Ｂを更新し、バッファデータ１４の保護を解除する。ＭＰＵ１１は、次からのコマンド受領時に、バッファアドレス  ０ｘ０６００〜０ｘ１３ＦＦ（図６参照）まで使用する動作を行う。
【００５１】
図１０乃至図１３の具体例で、詳細に説明する。図１１に示すようなコマンドシーケンスでホストからコマンド（Ｎｏ．０，Ｎｏ．１…）が発行されたものとする。その時、ＭＰＵ１１は、メモリ１３上にあるコマンドテーブル１３Ａを更新する（図１２参照）。
【００５２】
ホストから送られたライトデータは、図６に示したように、ＨＤＣ２６を経由してバッファ１４に格納される。ＭＰＵ１１は、Ｗｒｉｔｅ  Ｓｔｒｅａｍ  ＰＩＯと判断し、ＨＤＣ２６に指示し、ＨＤＣ２６は、受け取ったバッファ１４上のライトデータを、媒体１９へライト動作する。
【００５３】
そして、図１１のコマンドＮｏ．０，Ｎｏ．１は問題なく媒体にライトされ、ホストへ正常終了のステータスを返す。その後、Ｎｏ．２のコマンドでライト系エラー（オフトラック等）が発生したとすると、その時点（ライト系エラーが発生した時）で、ＨＤＣ２６は媒体ライト処理を停止する。今回のコマンドは、フューチャレジスタがＵＲＧ  ｂｉｔ（Ｕｒｇｅｎｔ  ｂｉｔ）付きなので、リトライを行わずに、ＭＰＵ１１にて再起動までの時間を考慮した最短の開始ＬＢＡを計算する。
【００５４】
そこで、ＭＰＵ１１は、メモリ１３上のプロテクトテーブル１３Ｂの更新を，図１３のように、行う。即ち、図１３の下段のプロテクトテーブル１３Ｂに示すように、書けなかった開始ＬＢＡと，セクターカウント数と、バッファアドレスと、プロテクトビットを追加する。
【００５５】
図１０に示すように、ＬＢＡ４でライトエラーが検出され、ＭＰＵ１１がＬＢＡ１１から再起動可能であると計算したとすると、ＬＢＡ５からＬＢＡ１０までは何も行わず（書き飛ばし）、ＬＢＡ１１からＨＤＣ経由で再度媒体ライトを起動する。この時、実際にライトできなかった、またはライトしていないＬＢＡは，図１０のＬＢＡ４からＬＢＡ１０までということになる。
【００５６】
コマンドが終了すると，ＭＰＵ１１は、メモリ１３上のコマンドテーブル１３Ａの更新を行い、そのプロテクトビットを「１」から「０」に変更する（図１２参照）。その後、ＭＰＵ１１は、新たにコマンドがホストにより発行された場合でも、データを格納しているバッファ１４上（図６）のバッファアドレス  ０ｘ０６００〜０ｘ１３ＦＦまでは使用しないように、プロテクトテーブル１３Ｂ（図１３参照）で保護される。
【００５７】
この後、ホストが暫くコマンドを発行しなかった、例えば、１分間コマンド発行がなければ、ＭＰＵ１１は、先程まで保護していた図６のバッファデータを，メモリ１３上のプロテクトテーブル１３Ｂ（図１３参照）を基に、再度媒体ライト処理を行う。この時は、ホストから発行されたコマンドではないので、フルリトライを行い、極力媒体ライトを完了するように試みる。
【００５８】
ここで、媒体ライトができた場合には、ＭＰＵ１１は，そのままＨＤＣ経由の媒体ライト処理を終了し、図１３のプロテクトテーブル１３Ｂを更新し、通常シーケンスである、コマンド受領待機状態に戻る。
【００５９】
フルリトライでも媒体ライトに失敗してしまった場合には、そのＬＢＡにライトする事を諦め、次のＬＢＡのライトへ移行する。例として、ＬＢＡ４へのフルリトライ媒体ライトが失敗したとしたら、ＬＢＡ４は諦め、次のＬＢＡ５へのフルリトライ媒体ライトへと移行する。
【００６０】
その工程をプロテクトテーブル１３Ｂ（図１３参照）に記されているセクターカウント数分繰り返す。その工程を全て完了したら、図１３のプロテクトテーブル１３Ｂを更新し、バッファデータの保護（図６）を解除する。プロテクトテーブル１３Ｂが、この状態になると、ＭＰＵ１１は，次からのコマンド受領時に、バッファアドレス  ０ｘ０６００〜０ｘ１３ＦＦ（図６）まで使用する動作を行う。
【００６１】
このように、本発明によれば、Ｗｒｉｔｅ  Ｓｔｒｅａｍ関連コマンドにおいて、通常は、エラーすると終了してしまう処理を継続させることが出来、かつ次回からのリード処理で正しく媒体をリードできるように修正できる。
【００６２】
又、一定時間、ホストからコマンド発行がない時に、書き飛ばしたセクタを書き込むので、ホストを使用せずに実行できる。更に、プロテクトテーブルを設け、書き飛ばしたセクタを記憶し、且つバッファ上でこれを保護するため、バッファからデータが消失することを防止し、確実に、コマンド終了後、ライト処理できる。
【００６３】
しかも、コマンド終了後の再書込みでは、フルリトライを行うことができるため、一層、書き飛ばしたセクタの書込みが確実となる。
【００６４】
［他の実施の形態］
前述の実施の形態では、媒体を磁気デイスクで説明したが、光デイスク、光磁気デイスク、他の記憶媒体にも適用できる。又、ライトエラーをオフトラックで説明したが、他のライトエラーにも適用できる。更に、インタフェースは、ＡＴＡに限らず、他のインタフェースにも適用できる。
【００６５】
しかも、アージェントビットの例で説明したが、数回のリトライの余裕があるライトコンテニュービットでも、同様に実現できる。更に、バッファにプロテクト領域を別途設け、プロテクトしたデータをコピーしても良い。
【００６６】
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
【００６７】
（付記１）ヘッドにより、記憶媒体に、ストリーム系コマンドに応じて、ライトデータを書込むストリーム系コマンドの書込み処理方法において、前記ストリーム系コマンドの受信したライトデータをバッファに書込むステップと、前記バッファのライトデータを前記ヘッドにより前記記憶媒体に書込みが成功したかを確認しながら、順次前記記憶媒体に書込むステップと、前記書込みステップにおいて、前記書込みが成功しなかった場合に、前記書込みが成功しなかったセクタを書き飛ばし、前記成功しなかったセクタのライトデータを前記バッファでプロテクトするステップと、前記ストリーム系コマンドの実行後、前記プロテクトしたセクタのライトデータを前記ヘッドにより前記記憶媒体に書込むステップとを有することを特徴とするストリーム系コマンドの書込み処理方法。
【００６８】
（付記２）前記書込みが成功しなかった場合に、前記記憶媒体への書込み処理を停止した後、前記ヘッドの書込み処理を再起動するステップを更に有することを特徴とする付記１のストリーム系コマンドの書込み処理方法。
【００６９】
（付記３）前記プロテクトステップは、前記書込みが成功しなかったセクタと、再起動まで書き飛ばしたセクタとのライトデータをプロテクトするステップからなることを特徴とする付記２のストリーム系コマンドの書込み処理方法。
【００７０】
（付記４）前記プロテクトしたセクタのライトデータを書込むステップは、前記ライトデータの書込みが成功しなかった場合に、所定回数のリトライを許可するステップからなることを特徴とする付記１のストリーム系コマンドの書込み処理方法。
【００７１】
（付記５）前記プロテクトステップは、前記書込みが成功しなかったセクタと、前記セクタのライトデータの前記バッファのアドレスをプロテクトテーブルに格納するステップを有することを特徴とする付記１のストリーム系コマンドの書込み処理方法。
【００７２】
（付記６）前記プロテクトしたセクタのライトデータを書込むステップは、前記プロテクトテーブルを参照して、前記バッファのライトデータを書込むステップからなることを特徴とする付記５のストリーム系コマンドの書込み処理方法。
【００７３】
（付記７）前記プロテクトステップは、前記ライト処理を停止した後、前記再起動までの時間を考慮した最短の開始セクタを計算するステップと、前記書込みが成功しなかったセクタと、前記計算結果から得た前記再起動まで書き飛ばしたセクタとのライトデータをプロテクトするステップからなることを特徴とする付記３のストリーム系コマンドの書込み処理方法。
【００７４】
（付記８）前記記憶媒体が、回転するデイスク媒体からなることを特徴とする付記１のストリーム系コマンドの書込み処理方法。
【００７５】
（付記９）前記プロテクトステップは、前記書込みが成功しなかった場合に、前記コマンドが前記ストリーム系コマンドであることを認識して、前記プロテクトを実行するステップからなることを特徴とする付記１のストリーム系コマンドの書込み処理方法。
【００７６】
（付記１０）記憶媒体に、ヘッドによりデータを書込む媒体記憶装置において、ストリーム系コマンドとともに受信したライトデータを格納するバッファと、前記バッファのライトデータを前記ヘッドにより、順次前記記憶媒体に書込むためのコントローラと、前記書込みが成功したかを確認し、前記書込みが成功しなかった場合に、前記書込みが成功しなかったセクタを書き飛ばし、前記成功しなかったセクタのライトデータを前記バッファでプロテクトする処理ユニットとを有し、前記処理ユニットは、前記ストリーム系コマンドの実行後、前記プロテクトしたセクタのライトデータを前記ヘッドにより前記記憶媒体に書込むことを特徴とする媒体記憶装置。
【００７７】
（付記１１）前記処理ユニットは、前記書込みが成功しなかった場合に、前記記憶媒体への書込み処理を停止した後、前記ヘッドの書込み処理を再起動することを特徴とする付記１０の媒体記憶装置。
【００７８】
（付記１２）前記処理ユニットは、前記書込みが成功しなかったセクタと、再起動まで書き飛ばしたセクタとのライトデータをプロテクトすることを特徴とする付記１１の媒体記憶装置。
【００７９】
（付記１３）前記処理ユニットは、前記プロテクトしたセクタのライトデータを書込む際に、前記ライトデータの書込みが成功しなかった場合に、所定回数のリトライを許可することを特徴とする付記１０の媒体記憶装置。
【００８０】
（付記１４）前記処理ユニットは、前記書込みが成功しなかったセクタと、前記セクタのライトデータの前記バッファのアドレスをプロテクトテーブルに格納することを特徴とする付記１０の媒体記憶装置。
【００８１】
（付記１５）前記処理ユニットは、前記プロテクトテーブルを参照して、前記バッファのライトデータを書込むことを特徴とする付記１４の媒体記憶装置。
【００８２】
（付記１６）前記処理ユニットは、前記ライト処理を停止した後、前記再起動までの時間を考慮した最短の開始セクタを計算し、前記書込みが成功しなかったセクタと、前記計算結果から得た前記再起動まで書き飛ばしたセクタとのライトデータをプロテクトすることを特徴とする付記１２の媒体記憶装置。
【００８３】
（付記１７）前記記憶媒体が、回転するデイスク媒体からなることを特徴とする付記１０の媒体記憶装置。
【００８４】
（付記１８）前記処理ユニットは、前記書込みが成功しなかった場合に、前記コマンドが前記ストリーム系コマンドであることを認識して、前記プロテクトを実行することを特徴とする付記１０の媒体記憶装置。
【００８５】
【発明の効果】
このように、本発明では、ライトストリーム系コマンドにおいて、通常は、エラーすると終了してしまう処理を、エラーセクターを書き飛ばし、継続させ、かつエラーセクターのデータをプロテクトし、コマンド実行後、書き飛ばしたセクタを書込むため、コマンドで指定された書込み時間を守りつつ、次回からのリード処理で正しく媒体をリードできるように修正できる。
【図面の簡単な説明】
【図１】本発明の一実施の形態の媒体記憶装置の構成図である。
【図２】図１のタスクファイルの説明図である。
【図３】図２のフューチャレジスタの説明図である。
【図４】図１のメモリのテーブルの説明図である。
【図５】図４のテーブルの詳細構成図である。
【図６】図１のデータバッファの説明図である。
【図７】本発明の一実施の形態の書込み処理フロー図（その１）である。
【図８】本発明の一実施の形態の書込み処理フロー図（その２）である。
【図９】本発明の一実施の形態の書込み処理フロー図（その３）である。
【図１０】図７乃至図９の処理の動作説明図である。
【図１１】図７乃至図９の処理のストリーム系ライトコマンドの一例の説明図である。
【図１２】図１１のストリーム系ライトコマンド例のコマンドテーブルの説明図である。
【図１３】図１１のストリーム系ライトコマンド例のプロテクトテーブルの説明図である。
【符号の説明】
１０  媒体記憶装置（磁気デイスク装置）
１１  ＭＰＵ（処理ユニット）
１２  ＡＴＡインタフェース制御回路
１２Ａ  タスクファイル
１３  メモリ
１３Ａ  コマンドテーブル
１３Ｂ  プロテクトテーブル
１４  データバッファ
１５  データバッファ制御回路
１９  媒体（磁気デイスク）
２０  スピンドルモータ
２２  アクチュエータ（ＶＣＭ）
２５  ヘッド（磁気ヘッド）
２６  コントローラ（ＨＤＣ）
【図１】
2004335020.tif 000003
【図２】
2004335020.tif 000004
【図３】
2004335020.tif 000005
【図４】
2004335020.tif 000006
【図５】
2004335020.tif 000007
【図６】
2004335020.tif 000008
【図７】
2004335020.tif 000009
【図８】
2004335020.tif 000010
【図９】
2004335020.tif 000011
【図１０】
2004335020.tif 000012
【図１１】
2004335020.tif 000013
【図１２】
2004335020.tif 000014
【図１３】
2004335020.tif 000015