(57)【特許請求の範囲】
【請求項１】
上位装置から複数のデータのＷｒｉｔｅ要求、及び、前記Ｗｒｉｔｅ要求に対応して同期要求を受取り、該同期要求の完了を上位装置に返す、テープドライブであって、
上位装置からのコマンドを受取るインタフェースと、
上位装置からのデータを一時保管するバッファと、
前記バッファに保管されたデータを記録するテープ媒体と、
前記バッファから前記テープ媒体へデータを記録する書込み制御とを含み、
前記インタフェース部は、上位装置からの連続して発行される複数のコマンドを非同期に処理できるように複数のコマンドをキューイングできる機能を有し、
前記書込み制御は、
（ａ）上位装置から第１の同期要求に続いて前記キューイング機能を利用して後続のデータ群のＷｒｉｔｅ要求を受取った後に、前記バッファに保管されたデータに対して同期要求を受け取った時点でのバッファに保管された最終のデータのバッファ位置を保存し、
（ｂ）前記バッファ位置までのバッファに保管されたデータがテープ媒体に記録されているかを確認し、
（ｃ）前記同期要求に対して前記バッファ位置までのバッファに保管されたデータがテープ媒体に記録される場合、上位装置に前記同期要求の完了を返す、
ことを特徴とするテープドライブ。
【請求項２】
前記書込み制御は、
（１）上位装置からの複数の第１のＷｒｉｔｅ要求に対応するデータを受取り、バッファに保管するステップと、
（２）上位装置から前記バッファに保管されたデータに対して第１の同期要求を受取るステップと、
（３）第１の同期要求の位置を前記同期キューにより保存するステップと、
（４）前記コマンドのキューイング機能を使って、前記後続のＷｒｉｔｅ要求として上位装置から複数の第２の Ｗｒｉｔｅ要求を受取るステップと、
（５）第２のＷｒｉｔｅ要求に対するデータ転送指示を上位装置に送るステップと、
（６）前記転送指示に応答して上位装置から転送されたデータを、バッファに保管するステップと、
（７）第１の同期要求に対応するバッファ位置に保管された最終データがテープ媒体に記録されたかをチェックするステップと、
（８）前記チェックにおいて前記同期キューに保管されている同期要求のバッファ位置のデータがテープ媒体に書込まれている場合、前記同期要求の完了を上位装置に返すステップと、
（９）上位装置から前記バッファに保管されたデータに対して第２の同期要求を受取り、前記（３）−（８）ステップを第２の同期要求及び第３のＷｒｉｔｅ要求に対して実行するステップと、を含む請求項１に記載のテープドライブ。
【請求項３】
第１の同期要求の完了を、第２のＷｒｉｔｅ要求を上位装置から受信後に上位装置に返す請求項２に記載のテープドライブ。
【請求項４】
第１の同期要求の完了を、第２のＷｒｉｔｅ要求に対してデータ転送指示を上位装置に発送後に、上位装置に返す請求項３に記載のテープドライブ。
【請求項５】
第１の同期要求の完了を、前記転送指示に応答して上位装置から転送されたデータをバッファに保管した後に上位装置に返す請求項４に記載のテープドライブ。
【請求項６】
第１の同期要求の完了を、第１の同期要求の後に更に第２の同期要求を上位装置から受信後に上位装置に返す請求項５に記載のテープドライブ。
【請求項７】
上位装置は、非同期に複数のコマンドを前記テープドライブに発行するホストである請求項１〜６の何れか１項に記載にテープドライブ。
【請求項８】
上位装置から複数のデータのＷｒｉｔｅ要求、及び、前記Ｗｒｉｔｅ要求に対応して同期要求を受取り、該同期要求の完了を上位装置に返す、テープドライブの書込み方法であって、
前記テープドライブは、上位装置からのコマンドを受取るインタフェースと、上位装置からのデータを一時保管するバッファと、前記バッファに保管されたデータを記録するテープ媒体と、前記バッファから前記テープ媒体へデータを記録する書込み制御とを含み、  更に上位装置からの連続して発行される複数のコマンドを非同期に処理できるように、前記複数のコマンドの複数をキューイングできる機能を有し、
（ａ）上位装置から、第１の同期要求に続いて前記キューイング機能を利用して後続のデータ群のＷｒｉｔｅ要求を受取った後に、前記バッファに保管されたデータに対して同期要求を受け取った時点でのバッファに保管された最終のデータのバッファ位置を保存することと、
（ｂ）前記バッファ位置までのバッファに保管されたデータがテープ媒体に記録されているかを確認することと、
（ｃ）前記同期要求に対して前記バッファ位置までのバッファに保管されたデータがテープ媒体に記録される場合、上位装置に前記同期要求の完了を返すことと、
を含むデータ書込み方法。
【請求項９】
上位装置から複数のデータのＷｒｉｔｅ要求、及び、前記Ｗｒｉｔｅ要求に対応して同期要求を受取り、該同期要求の完了を上位装置に返す、テープドライブへデータ書込みためのプログラムであって、
前記テープドライブは、上位装置からのコマンドを受取るインタフェースと、上位装置からのデータを一時保管するバッファと、前記バッファに保管されたデータを記録するテープ媒体と、前記バッファから前記テープ媒体へデータを記録する書込み制御とを含み、  更に上位装置からの連続して発行される複数のコマンドを非同期に処理できるように、前記コマンドの複数をキューイングできる機能を有し、
（ａ）上位装置から第１の同期要求に続いて前記キューイング機能を利用して後続のデータ群のＷｒｉｔｅ要求を受取った後に、前記バッファに保管されたデータに対して同期要求を受け取った時点でのバッファに保管された最終のデータのバッファ位置を保存することと、、
（ｂ）前記バッファ位置までのバッファに保管されたデータがテープ媒体に記録されているかを確認することと、、
（ｃ）前記同期要求に対して前記バッファ位置までのバッファに保管されたデータがテープ媒体に記録される場合、上位装置に前記同期要求の完了を返すことと、
、をテープドライブに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同期要求後もバックヒッチなしで後続の書込みデータを受け付ける書込み方法及びその装置に関する。
特に、本発明は、先に上位装置から送られたデータを一時的にバッファに格納して同期要求を受信後バックヒッチなしで後続の書込みデータを受取り、同期処理が完了したならばそのタイミングでその完了を上位装置に返すテープ媒体のデータを書き込む装置及びデータ書込み制御方法に関する。 
【背景技術】
【０００２】
磁気テープ媒体等のテープ媒体（以下、テープともいう）にデータを書き込むテープ記録装置（テープドライブまたはドライブともいう）では、データを一旦バッファに蓄積しておく。バッファ保管データは、ドライブの都合の良いタイミングでバッファからテープ媒体へデータを書き込むのが一般的である。ホストは、ドライブに送ったデータが全てテープ媒体上に書き出されていることを保証した。このデータ記録の保証を確実にするために、強制的にデータを書き込むためのコマンド（ＷｒｉｔｅＦＭ Ｎｏｎ Ｉｍｍｅｄｉａｔｅコマンド：「ＷｒｉｔｅＦＭ０」とも言う。）をドライブに送る。このようなバッファからテープ媒体への強制書込みを「同期」という。
【０００３】
ところで、同期が発生した後にテープ媒体を停止させないと、テープ媒体上で、先行する同期にて書き込まれたデータと次に書き込まれたデータとの間にギャップが生じる。その結果、テープ媒体の記録領域が無駄になってしまう。そのため、バックヒッチ（Ｂａｃｋｈｉｔｃｈ）を行う必要がある。バックヒッチとは、テープ媒体の走行速度を減速して一旦停止し、逆方向に走行し、その後、再度元の方向に走行して書き込むべき位置に達して次のデータを書く、という一連の動作のことである。次のデータは、このバックヒッチが完了するまで書き込むことができない。バックヒッチには約３〜５秒程度の時間を要するため、バックヒッチの発生は、パフォーマンスに大きな影響を与える。
【０００４】
テープドライブはテープ媒体にデータを書き込む場合、ドライブはホストから送られたデータをすぐには書き込まず、一旦ドライブ内のバッファに格納する。一定の量のデータがバッファに蓄積された後書き込みを開始する。バックヒッチには１回あたり最大で５秒程度の時間がかかるため、書き込みのパフォーマンスの観点から、ドライブはできる限りバックヒッチを行わずに書き続けることが望ましい。通常の書き込みではドライブ内のバッファにデータを貯めながら書き込みを行うので、書き込みの途中でバッファが空になることは少なく、バックヒッチも滅多に起きない。
【０００５】
一方、ホストはドライブに対し、バッファ内のデータをすべてテープ媒体に書き出す処理、同期（Ｓｙｎｃｈｒｏｎｏｕｓ）を要求することがある。従来のテープドライブでは、ドライブが同期要求（同期コマンド）を受け取った後、同期が完了するまで、Ｗｒｉｔｅコマンド（Ｗｒｉｔｅ要求）を受け付けない。従来のテープドライブは、同期要求を受け取った後、同期処理が完了するまでＷｒｉｔｅコマンドに対するデータ転送を受け付けていない。このことは、同期が完了した時点で、ドライブのバッファが必ず空になっていることになり、それが理由でバックヒッチが必ず起きる。バックヒッチが生じると、バッファよって、以下の問題があることが知られている。
１．同期の頻度が高いとバックヒッチの回数も増えるので、書き込みのパフォーマンスが低下する。
２．パフォーマンス低下を防ぐため、ドライブは同期要求による書き込みでもバックヒッチせずに書き込むこともできる（Backhitchless Flush）。しかし、Backhitchless Flushを行うと、記録密度の低い状態でデータが書き込まれることになり、テープ媒体の容量は低下してしまう。
【０００６】
そこで、かかる状況を回避するための技術として、ＲＡＢＦ（Recursive Accumulating Backhitchless Flush）が提案されている（例えば、特許文献１、２参照）。まず、テープドライブが、同期要求を受けた際に、テープ媒体にまだ書かれていないバッファ内のデータを、テープ媒体の走行を継続させたまま、テープ媒体上に予約されている一時記録領域（ＡＢＦラップ）に書き出す。尚、この書出しは、先行する同期にて書き込まれたデータと次の同期にて書き込まれたデータとの間のギャップが問題とならないため、バックヒッチを行わないバッファフラッシュ（Backhitchless Flush）である。一方で、テープドライブは、データをバッファに蓄積し（Accumulate）、バッファ又は一時記録領域に空きがなくなった際に通常の記録領域（通常ラップ）に書き戻す（リライトする）動作を反復的に（Recursive）行う。このように、ＲＡＢＦでは、同期を行う際に、次の同期に備えてバックヒッチを行うことが必要とならないため、同期に要する時間の短縮が図れる。特に、データ量に対する同期要求の頻度が高い場合において、大幅なパフォーマンス向上を実現するものである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第６８５６４７９号明細書
【特許文献２】米国特許第６８６５０４３号明細書
【特許文献３】特開２００８−１４６７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ＲＡＢＦは、余分な移動（ＡＢＦ-Ｒｅｃｕｒｓｉｖｅ間）、及び、同じデータをテープに２度書する、など余分な処理時間を要する。
また、特許文献３は、ホストが新規に導入した２つのコマンドでポーリング（Ｐｏｌｌｉｎｇ）を必要とする。ホストはドライブ同期処理の終了を確認するためにホスト−ドライブ間のインタフェースにおいて一定間隔で問い合わせる時間を要する。ポーリングによる問い合わせがテープへの書込みパフォーマンスに影響を与える。
【０００９】
本発明の目的は、同期要求後もバックヒッチなしで後続の書込みデータを受け付けるテープ媒体への書込み装置及びその書込み方法を提供することである。
【課題を解決するための手段】
【００１０】
上記の目的を達成する本発明は、上位装置から複数のデータのＷｒｉｔｅ要求、及び、前記Ｗｒｉｔｅ要求に対応して同期要求を受取り同期処理（バッファに保管されたデータをテープ媒体に記録）の完了を上位装置返す、テープドライブである。このテープドライブは、上位装置からのコマンドを受取るインタフェースと、上位装置からのデータを一次保管するバッファと、前記バッファに保管されたデータを記録するテープ媒体と、前記バッファから前記テープ媒体へデータを記録する書込み制御とを含み、前記インタフェース部は、上位装置からの連続して発行される複数のコマンドを非同期（Ａｓｙｎｃｈｒｏｎｏｕｓ）に処理できるように、複数のコマンドをキューイングできる機能を有す。
前記書込み制御は、（ａ）上位装置から（第１のＷｒｉｔｅ要求により転送されたデータがバッファに保管し、）第１の同期要求に続いて後続のデータ群のＷｒｉｔｅ要求を受取り、（ｂ）前記コマンドのキューニング機能を利用して後続の複数のＷｒｉｔｅ要求を受取った後に第１の同期要求の処理（第１のデータ群がバッファから前記テープ媒体に記録）が完了し、そのタイミングで前記完了を返すことを実行する。
【００１１】
このテープドライブの書込み制御は、前記バッファに保管されたデータに対して同期要求を受け取った時のデータのバッファに保管された最終のデータのバッファ位置を同期要求の位置として保存し、同期キューの機能として複数の同期要求の位置を保存することを特徴とする。
【００１２】
このテープドライブの書込み制御は、
（１）上位装置からの複数の第１のＷｒｉｔｅ要求に対応するデータを受取り、バッファに保管するステップと、
（２）上位装置から前記バッファに保管されたデータに対して第１の同期要求を受取るステップと、
（３）第１の同期要求の位置を前記同期キューにより保存するステップと、
（４）第１同期要求の完了なしでも、前記コマンドのキューイング機能を使って、前記後続のＷｒｉｔｅ要求として上位装置から複数の第２の
Ｗｒｉｔｅ要求を受取るステップと、
（５）第１の同期要求の位置に対応するバッファに保管されたデータがテープ媒体に書けているかどうかに関わらず、第２のＷｒｉｔｅ要求に対するデータ転送指示を上位装置に送るステップと、
（６）前記転送指示に応答して、上位装置から転送されたデータをバッファに保管するステップと、
（７）第１の同期要求に対応するバッファ位置に保管された最終データがテープ媒体に記録されたかをチェックするステップと、
（８）前記チェックにおいて前記同期キューに保管されている同期要求のバッファ位置のデータがテープ媒体に書込まれている場合、前記同期要求の完了を上位装置に返すステップと、
（９）上位装置から前記バッファに保管されたデータに対して第２の同期要求を受取り、
前記（３）−（８）ステップを第２の同期要求及び第３のＷｒｉｔｅ要求に対して実行するステップと、を含むことを特徴とする。
【００１３】
このテープドライブは、第１の同期要求の完了を第２のＷｒｉｔｅ要求を上位装置から受信後に上位装置に返すことを特徴とする。
【００１４】
このテープドライブは、第１の同期要求の完了を第２のＷｒｉｔｅ要求に対してデータ転送指示を上位装置に発送後に上位装置に返すことを特徴とする。
【００１５】
このテープドライブは、第１の同期要求の完了を前記更にデータ指示転送に対する第２のデータを上位装置から受信後に上位装置に返すことを特徴とする。
【００１６】
このテープドライブは、第１の同期要求の完了を前記更に第２のデータに対する第２の同期要求を上位装置から受信後に上位装置に返すことを特徴とする。
【００１７】
上位装置は、非同期（Ａｓｙｃｈｒｏｎｏｕｓ）に複数のコマンドを前記テープドライブに発行するコンピュータ・サーバであることを特徴とする。
【００１８】
更に上記の目的を達成する本発明は、上位装置から複数のデータのＷｒｉｔｅ要求、及び、それに対応する同期要求を受取り、同期処理（バッファ・データをテープ媒体に記録）、の完了を上位装置に返すテープドライブの書込み方法である。このテープドライブは、上位装置からの連続して発行される複数のコマンドを非同期に処理できるように前記複数のコマンドの複数をキューイングできる機能を有する。この書込み方法は、
（ａ）上位装置から第１のＷｒｉｔｅ要求により転送されたデータをバッファに保管に保管し、第１の同期要求に続いて後続のデータ群のＷｒｉｔｅ要求を受取るステップと、
（ｂ）前記コマンドのキューニング機能を利用して後続の複数のＷｒｉｔｅ要求を受取った後に第１の同期要求の処理を完了しそのタイミングでその完了を返すステップと、を含む。
【００１９】
更に上記の目的を達成する本発明は、上位装置から複数のデータのＷｒｉｔｅ要求、及び、対応する同期要求を受取り同期処理（バッファ・データをテープ媒体に記録）、該同期要求の完了を上位装置返す、コンピュータへのデータの書込み制御のためのプログラムである。前記テープドライブは、上位装置からの連続して発行される複数のコマンドを非同期に処理できるように、前記コマンドの複数をキューイングできる機能を有する。
このプログラムは、（ａ）上位装置から（第１のＷｒｉｔｅ要求により転送されたデータバッファに保管し、）第１の同期要求に続いて後続のデータ群のＷｒｉｔｅ要求を受取るステップと、（ｂ）前記コマンドのキューニング機能を利用して後続の複数のＷｒｉｔｅ要求を受取った後に第１の同期要求の処理（第１の前記データ群がバッファから前記テープ媒体に記録）が完了し、そのタイミングで前記完了を返すステップとをコンピュータに実行させる。
【００２０】
以上の本発明の適用により、テープドライブは同期処理の完了を確実に保証すると同時に一連の複数のＷｒｉｔｅ要求によるデータのテープ媒体への書込みのパフォーマンスの改善できる。
【図面の簡単な説明】
【００２１】
【図１】本実施の形態が適用されるテープドライブ１０の構成例を示す。
【図２】現行のテープドライブにおけるＷｒｉｔｅデータと従来の同期要求（ＷｒｉｔｅＦＭ０）の場合のトランザクションのシーケンスを示す。
【図３】本発明のドライブにけるＷｒｉｔｅデータと同期要求（ＷｒｉｔｅＦＭ０）の場合のデータトランザクションのシーケンスを示す。
【図４】複数の書込みデータ（Ｗｒｉｔｅ要求及びそのデータ）及び複数の同期要求（ＷｒｉｔｅＦＭ０）のドライブの動作のフローチャートを示す。
【発明を実施するための形態】
【００２２】
以下、添付図面を参照して、本発明を実施するための本発明の実施形態（以下「実施例」ともいう）について詳細に説明する。
【００２３】
図１は、本実施の形態が適用されるテープドライブ１０の構成例を示した図である。
テープドライブ１０は、ホスト３０から送られた複数のデータを固定長のデータセット（ＤａｔａＳｅｔ：ＤＳとも言う）単位でテープ媒体への書込みをする。ＤＳは複数のデータの集まりであり、固定長のフォーマット構造を有するテープ媒体に書込む単位である。本発明はＤＳが可変長である場合を排除するものではない。
【００２４】
このテープドライブ１０は、ホストインターフェイス（以下、「インタフェース」という）１１と、バッファ１２と、チャネル１３と、ヘッド１４と、モータ１５とを含む。また、書込み読取り制御（コントローラ）１６と、ヘッド位置制御システム１７と、モータドライバ１８とを含む。更に、テープドライブ１０には、テープカートリッジ２０が挿入されることにより装填可能となっているので、ここでは、テープカートリッジ２０も図示している。このテープカートリッジ２０は、リール２１、２２に巻かれたテープ２３を含む。テープ２３は、リール２１、２２の回転に伴い、リール２１からリール２２の方向へ、又は、リール２２からリール２１の方向へ、長手方向に移動する。尚、テープ２３としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【００２５】
ここで、インタフェース１１は、上位装置の一例であるホスト３０との通信を行う。例えば、ホスト３０から、テープ２３へのデータの書込みを指示するコマンド、テープ２３を目的の位置に移動させるコマンド、テープ２３からのデータの読出しを指示するコマンドを受け取る。このインタフェース１１で用いる通信規格としては、ＳＣＳＩが例示される。ＳＣＳＩの場合、１つ目のコマンドは、Ｗｒｉｔｅコマンドに相当し、２つ目のコマンドは、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに相当し、３つ目のコマンドは、Ｒｅａｄコマンドに相当する。また、インタフェース１１は、ホスト３０に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。 
【００２６】
バッファ１２は、テープ２３に書き込むべきデータやテープ２３から読み出されたデータを蓄積するメモリである。例えば、ＤＲＡＭ（Dynamic Random Access Memory）によって構成される。また、バッファ１２は、複数のバッファセグメントからなり、各バッファセグメントが、テープ２３に対する読み書きの単位であるデータセット（ＤＳ）を格納している。１つのデータセットは、ホスト３０から送られるデータの１つの一部分、または、複数のデータから構成される。読み書きチャネル１３を介して渡されたデータはＤＳ単位（例えば４００ＫＢまたは１．６ＭＢ）として、ヘッド１４によりテープ２３に書込まれる。同期コマンド（Ｓｙｎｃｈｒｏｎｏｕｓ）は、バッファ内に保管されたデータをテープに書く込み要求である。
【００２７】
チャネル１３は、テープ２３に書き込むべきデータをヘッド１４に送ったり、テープ２３から読み出されたデータをヘッド１４から受け取ったりするために用いられる通信経路である。
ヘッド１４は、テープ２３が長手方向に移動するとき、テープ２３に対して情報を書き込んだり、テープ２３から情報を読み出したりする。モータ１５は、リール２１、２２を回転させる。尚、図では、１つの矩形でモータ１５を表しているが、モータ１５としては、リール２１、２２の各々に１つずつ、合計２個設けるのが好ましい。 
書込み読取り制御１６は、テープドライブ１０の全体を制御する。例えば、インタフェース１１で受け付けたコマンドに従って、データのテープ２３への書込みやテープ２３からの読出しを制御する。また、ヘッド位置制御システム１７やモータドライバ１８の制御も行う。
【００２８】
本発明のテープドライブは、先のホストから要求された同期が完了する前に、後続のWrite コマンドに対するデータ転送を受け付ける機能を要求する。キューイングをサポートしているテープドライブにおいて、ドライブが同期要求を受け取った後に他のデータ書込みを可能にする処理を実行する。本発明のテープドライブは、複数のコマンドを受け付けて、それぞれ独立、且つ、非同期（Ａｓｙｎｃｈｒｏｎｏｕｓ）に各処理を実行することができる。テープドライブのキューニング機能は、インタフェース１１に組み込まれるＳＣＳＩインタフェースなどが具備している。本発明の実施例では、ホストのアプリケーション（適用業務）も、複数のコマンドを各処理の完了を確保できなくとも、非同期に発行する。このキューニング機能により、ドライブのバッファが空になることを防ぐことにより、ドライブは、バックヒッチなしに同期要求（Ｓｙｎｃｈｒｏｎｏｕｓ）を処理できる。
【００２９】
ＳＣＳＩインタフェースの場合、テープドライブでは、同期要求のコマンドとして、ＷｒｉｔｅＦｉｌｅｍａｒｋコマンドを使用する。このコマンドは、Ｆｉｌｅｍａｒｋ を指定された数バッファに書き込んだ後、バッファ内のデータをすべてテープ媒体に書き出す同期処理を行う。Ｆｉｌｅｍａｒｋを書かずに、同期処理のみを行う場合、書き込む Ｆｉｌｅｍａｒｋを０として、ＷｒｉｔｅＦＭ０というコマンドを発行する。 
【００３０】
図２は、現行のテープドライブにけるＷｒｉｔｅデータと従来の同期要求の場合のトランザクションのシーケンスを示す。トランザクションシーケンスは、ドライブ内でのホスト・データ（ホストからドライブに転送中のデータ）、バッファ・データ（バッファに保管されているデータ）、及びテープ・データ（テープに書かれたバッファ・データ）の関係を示す。ホストから時間の経過とともにＷｒｉｔｅコマンドによりデータｎ、ｎ＋１、ｎ＋２、ｎ＋３、・・・が送られ、バッファ１２のセグメント毎に保管される変遷を示す。同期要求（ＷｒｉｔｅＦＭ０）を受取った後データｎ＋４がテープに記録（同期処理）が完了するまで、後続のＷｒｉｔｅデータｎ＋５，ｎ＋６，・・・を受取り不可能であることを示す。テープドライブは、同期コマンドに対して完了のステータス（Ｃｏｍｐ）を送ったときには、同期コマンドを受け取る直前までバッファに入っていたデータをテープ媒体上に書いたことを保障する。その同期要求の記録が完了した後は、バッファは空になる。点線の示される円内は、従来の同期処理では、後続のデータを既にデータを書き込んだテープ位置の直後に書くために、ヘッド移動がバックヒッチを行うことを示す。点線の円内の直線矢印は、テープをバックヒッチさせてヘッドのテープへの位置を同期完了によりデータが書き込まれたテープ位置直後まで移動させる過程を示す。点線の矩形内は、先のＷｒｉｔｅＦＭ０の完了（Ｃｏｍｐ）後に。後続のＷｒｉｔｅデータｎ＋５，ｎ＋６，ｎ＋７・・・・を受取る様子を示す。バックヒッチを行なわずに、後続のデータを書くと、テープ媒体上には、飛び飛びにデータが書かれるため、メディアの記録容量が低下するとともに、読み出し速度も遅くなる。
【００３１】
図３は、本発明のドライブにけるＷｒｉｔｅデータと同期要求（ＷｒｉｔｅＦＭ０）のトランザクションのシーケンスを示す。トランザクションシーケンスは、ドライブ内でのホスト・データ（ホストからドライブに転送中のデータ）、バッファ・データ（バッファに保管されているデータ）、及びテープ・データ（テープに書かれたバッファ・データ）の関係を示している。ホストから時間の経過とともにＷｒｉｔｅコマンドによりデータｎ、ｎ＋１、ｎ＋２、ｎ＋３、・・・・・が送られ、バッファ１２のセグメント毎に保管される変遷を示す。本発明では、次の処理でこのバックヒッチを回避し、高速にデータを書き込むことができる。本発明のドライブは、同期コマンド(ＷｒｉｔｅＦＭ０) を受取り、実際に同期処理が完了する前であっても、続くＷｒｉｔｅデータを受取ることができる。ホストは、キューイング機能を使って同期処理完了前に後続のＷｒｉｔｅデータを転送する。同期処理の完了（Ｃｏｍｐ）を待たずにホストが後続のＷｒｉｔｅデータｎ＋５，ｎ＋６，ｎ＋７，・・・をドライブに送る。点線矩形内のトランザクションの推移は、ドライブがそれらＷｒｉｔｅデータｎ＋５，ｎ＋６，ｎ＋７，・・・をドライブが受取っている様子を示す。後続のＷｒｉｔｅデータｎ＋７を受け取っている最中に、同期キューに保存されたバッファ位置（データｎ＋４）まで同期処理の完了（テープに記録）がされた場合、そのタイミングで同期完了をホストに返す。
【００３２】
本発明のテープドライブは、次の機能を有する同期キュー機能を具備する。
（ａ） 同期コマンドが来たときに、同期されるべき最終データが保管されている「バッファ」の「位置」を覚えおく。
（ｂ）その後に続くWrite コマンド中に同期されるべき最終データがテープ上に書かれているかどうかを確認する。
（ｃ）テープ上に書かれていたら、そのタイミングで先に受け取った同期コマンドに対して完了（Ｃｏｍｐ）をホストに返す。
同期キュー機能は、インタフェース１１または書込み読み取り制御（コントローラ）１６に組み込ませてもよい。
【００３３】
同期要求が複数回重なったとしても、その都度、ドライブは各同期要求のバッファでの物理位置を同期キューに保存すればよい。バッファの物理位置に対応する対応するデータがテープ媒体上に記録されたとこれで、対応する同期要求にステータスを返すことで、入れ子の同期要求に対しても対応可能である。
【００３４】
図４は、複数の書込みデータ（Ｗｒｉｔｅコマンド及びそのデータ）及び複数の同期要求（ＷｒｉｔｅＦＭ０）のドライブの動作のフローチャートを示す。このフローチャートは、最も簡単な、複数の同期要求が入れ子にならない場合の動作の例示である。
（１）４０５：ホストは、データ書込み（Ｗｒｉｔｅコマンドとデータ）、同期コマンド（ＷｒｉｔｅＦＭ０）をドライブに発行する。ホストは、キューイングを使って、ＷｒｉｔｅＦＭ０コマンドのステータスが返ってこなくても、次に書き込むべきデータに対するＷｒｉｔｅ コマンドをドライブに送る。
（２）４１０、４１５：ドライブはコマンドを受取り、ＷｒｉｔｅコマンドまたはＷｒｉｔｅＦＭ０かを区別する。
（３）４２０：ドライブは、４１５においてホストから ＷｒｉｔｅＦＭ０を受信した場
合、同期キュー機能によりバッファ位置を保存しておく。
（４）４２５：ドライブは、ＷｒｉｔｅＦＭ０コマンドを受け取った時のデータがすべてテープ媒体に書けているかどうかに関わらず、データ転送指示をホストに送る
（５）４３０：ホストは、４０５で発行したＷｒｉｔｅ コマンドに対するデータを転送
する。
（６）４３５：ドライブは、ホストから送られてくるデータをバッファに保管する。
（７）４４０：ドライブは、どのバッファ位置までのデータがテープに記録されているかをチェックする。４２０において同期キューに保存されたＷｒｉｔｅＦＭ０のバッファ位置までのデータの全てがテープ媒体に記録されている場合、そのコマンドに対するステータスをホストに返す（４５０）。
（８）ステップ（１）〜（３）においける後続のＷｒｉｔｅコマンド及びデータに対する同期要求（ＷｒｉｔｅＦＭ０）に対してステップ（４）−（７）を繰り返す。
【００３５】
１０ＭＢのファイルを１０００個、合計１０ＧＢのデータをファイル単位で同期処理を行い、書き込んだ場合の、それぞれの方法でかかる時間を示す。各パラメータは以下のように定義する；メディアへの転送レート：１６０ＭＢ／Ｓ（ＩＢＭテープドライブ  ＴＳ１１３０相当）、バックヒッチ時間:５Sec、ＲＡＢＦ用バッファーサイズ:１ＧＢ。 また、ホストからのドライブへの転送レートは、十分早いと仮定する。従来の書込み方法において、ＲＡＢＦを利用しない書込みを考える。同期要求で常にバックヒッチを行うので、メディアに書き込む時間と、バックヒッチの時間の足し算で求められる。
(10/160)×1000＋5×1000＝62.5＋5000＝5062.5(Sec)
【００３６】
従来の書込み方法において、ＲＡＢＦを利用する場合を考える。同期要求を受け取った際に、ABF領域に書いていき、ＲＡＢＦ用バッファーサイズがいっぱいになったところで、Ｒｅｃｕｒｒｓｉｖｅ領域に書き直す。すべてのデータは２回メディアに書かれる。ＲＡＢＦ用バッファーサイズは、１ＧＢなので１０回ＲＡＢＦサイクルを繰り返す。
１回のＲＡＢＦサイクルで、バックヒッチ は２回必要である。
2((10/160)×1000)＋(5×2)×10＝125＋100＝225(Sec)
【００３７】
本発明の書込み方法では手法では、上記２つの例と同等の条件において(10/160) ×1000＝62.5(Sec)の値が得られる。本発明のドライブは、同期要求を受け取った後もＷｒｉｔｅコマンドと書き込みデータを受け取るので、バックヒッチなしでデータを書き続けることを想定している。この評価値は、本発明のテープドライブでは、テープ媒体への転送時間のみで書込みを終了することができるとして算定している。本発明の書込み法の評価値は、上記２つの従来の書込み方法の値と比較して、書込みパフォーマンス上十分な優位性を表している。
【００３８】
以上本発明によれば、同期処理の完了を確実に保証すると同時に一連の複数のＷｒｉｔｅ要求によるデータ書込みのパフォーマンスの改善できるテープドライブ提供がされる。
【符号の説明】
【００３９】
１０…テープドライブ、
１１…インタフェース、
１２…バッファ（ＤＲＡＭ）、
１３…読み書きチャネル、
１４…ヘッド、
１５…モータ、
１６…書込み読取り制御（コントローラ）、
１７…ヘッド位置制御システム、
１８…モータドライバ、
２０…カートリッジ、
２１，２２…リール、
【図１】
0005643152.tif 000002
【図２】
0005643152.tif 000003
【図３】
0005643152.tif 000004
【図４】
0005643152.tif 000005