(57)【特許請求の範囲】
【請求項１】
階層構造を有するデータの異なる階層のデータのそれぞれが上記階層構造の境界を示すデータを介して連続的に記録されるとともにブロックサイズが可変なディジタルデータを転送するデータ転送方法において、
転送を指示する１つのコマンドによってブロックサイズが互いに異なる複数のデータブロックを転送する際に、
上記複数のデータブロックのそれぞれの、該データブロックのブロックサイズ情報および該データブロックの上記階層構造のいずれかを示す属性を含み、該データブロックのいずれかの位置に上記階層構造の境界が位置するときには、該ブロックサイズ情報および該属性によりいずれの上記階層構造の境界であるかを示す情報を含むブロック情報を、上記複数のデータブロックと共に転送するようにした
ことを特徴とするデータ転送方法。
【請求項２】
請求項１に記載のデータ転送方法において、
上記データブロック位置に上記階層構造の境界が位置するときには、上記ブロックサイズ情報を示すデータが０とされる
ことを特徴とするデータ転送方法。
【請求項３】
請求項１に記載のデータ転送方法において、
上記複数のデータブロックのそれぞれの上記ブロック情報を１つにまとめてテーブルとして転送することを特徴とするデータ転送方法。
【請求項４】
請求項１に記載のデータ転送方法において、
上記複数のデータブロックを転送する際に、データブロックと該データブロックに対応する上記ブロック情報とからなる組を連続的に転送するようにした事を特徴とするデータ転送方法。
【請求項５】
請求項１に記載のデータ転送方法において、
上記階層構造は、ファイル、セット、ボリュームおよび物理デバイスからなることを特徴とするデータ転送方法。
【請求項６】
階層構造を有するデータの異なる階層のデータのそれぞれが上記階層構造の境界を示すデータを介して連続的に記録されるとともにブロックサイズが可変なディジタルデータを転送するデータ転送装置において、
転送を指示する１つのコマンドによってブロックサイズが互いに異なる複数のデータブロックを転送する手段と、
上記複数のデータブロックのそれぞれの、該データブロックのブロックサイズ情報および該データブロックの上記階層構造のいずれかを示す属性を含み、該データブロック位置に上記階層構造の境界が位置するときには、該ブロックサイズ情報および該属性によりいずれの上記階層構造の境界であるかを示す情報を含むブロック情報を、上記複数のデータブロックと共に転送する手段と
を有することを特徴とするデータ転送装置。
【請求項７】
階層構造を有するデータの異なる階層のデータのそれぞれが上記階層構造の境界を示すデータを介して連続的に記録されたディジタルデータを転送するデータ転送装置において、
転送を指示する１つのコマンドによって複数のデータブロックを転送する手段と、
上記複数のデータブロックのそれぞれの、該データブロックのいずれかの位置に上記階層構造の境界が位置するときには、該ブロックサイズ情報および該属性によりいずれの上記階層構造の境界であるかを示す情報を含むブロック情報を上記複数のデータブロックと共に転送する手段と
を備え、
上記階層構造は、ファイル、セット、ボリュームおよび物理デバイスからなることを特徴とするデータ転送装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、大容量のデータをシーケンシャルに記録するようなテープストリーマに用いて好適な、ブロックサイズが可変なデータを高速に読み書きできるようにしたデータ転送方法および装置に関する。
【０００２】
【従来の技術】
データ容量の増大化に伴い、大容量のデータを格納する手段として、磁気テープ上にデータを記録するようなデータの記録装置の必要性が増している。このような磁気テープを利用した記録媒体では、ディスクによる記録媒体とは異なり、データが概ねシーケンシャルに記録される。このような記録装置は、例えば大容量のハードディスクのバックアップに用いて好適なものである。
【０００３】
例えば、ホストとされるコンピュータに対して、所定のインタフェースを介してこの記録装置を接続する。ホストからインタフェースを介して、記録装置に対してデータコピーを行う旨のコマンドが発行される。そして、接続のインタフェースに基づく所定のやり取りがなされた後、ホストから記録装置に対してデータが転送され、記録装置において例えば磁気テープにデータが書き込まれる。
【０００４】
従来では、この、ホストと記録装置とを接続するためのインタフェースとして、ＳＣＳＩ(Small Computer System Interface) が主に用いられていた。このＳＣＳＩでは、ＳＣＳＩバスに接続される装置は、ＳＣＳＩコマンドを発行するイニシエータ（例えばＳＣＳＩボード）と、ＳＣＳＩコマンドを受け取り実行するターゲット（例えばハードディスク）とに分かれる。イニシエータとターゲットとの間で、データの転送が行われる。上述の例では、コンピュータに対してＳＣＳＩボードが接続され、記録装置がターゲットとされる。
【０００５】
【発明が解決しようとする課題】
ところで、このＳＣＳＩでは、データがブロック単位で扱われる。ブロックとは、データのある一定の大きさを持った集まりであって、このブロックが複数集まりファイルが構成される。このブロックは、ファイルを作成するホスト側で、任意の大きさで形成される。ＳＣＳＩによるデータの転送は、ブロック情報を保存するために、ブロック単位で行われる。
【０００６】
ＳＣＳＩには、複数のブロックを一つにまとめて転送するモードも用意されているが、このモードでは、まとめて転送するブロックのサイズが互いに同一である必要がある。この場合には、一つのコマンドで複数のブロックを転送することができる。しかしながら、転送するブロックのサイズが互いに異なる場合には、一度の転送、すなわち、イニシエータから発行される一つのコマンドで、１ブロックの転送しか行うことができないという問題点があった。
【０００７】
１回の転送を行うためには、データ本体を転送するための転送時間の他に、バスを占有する（アービトレーション）ための時間や、コマンドの受け渡し時間などが必要とされる。これらの時間は、データ本体の転送時間に対してオーバーヘッドになる。
【０００８】
このオーバーヘッドの時間は、ブロックサイズが比較的大きい場合には、さほど問題にはならない。しかしながら、転送されるブロックサイズが小さい場合には、ブロック毎に費やされるこのオーバーヘッド時間が無視できなくなり、全体として転送速度が低下してしまうという問題点があった。
【０００９】
したがって、この発明の目的は、互いに異なるサイズのブロックをまとめて転送できるようにしたデータ転送方法を提供することにある。
【００１０】
【課題を解決するための手段】
この発明は、上述した課題を解決するために、階層構造を有するデータの異なる階層のデータのそれぞれが階層構造の境界を示すデータを介して連続的に記録されるとともにブロックサイズが可変なディジタルデータを転送するデータ転送方法において、転送を指示する１つのコマンドによってブロックサイズが互いに異なる複数のデータブロックを転送する際に、複数のデータブロックのそれぞれの、データブロックのブロックサイズ情報およびデータブロックの階層構造のいずれかを示す属性を含み、データブロックのいずれかの位置に階層構造の境界が位置するときには、ブロックサイズ情報および属性によりいずれの階層構造の境界であるかを示す情報を含むブロック情報を、複数のデータブロックと共に転送するようにしたことを特徴とするデータ転送方法および装置である。
【００１１】
上述したように、この発明では、複数のデータブロックのそれぞれのブロック情報を複数のデータブロックと共に転送するようにされているため、ブロックサイズが可変な複数のデータブロックを、ブロック情報を保存しつつ連続的に転送することができる。
【００１２】
【発明の実施の形態】
以下、この発明の実施の形態を、図面を参照しながら説明する。図１は、この発明の実施の第１および第２の形態に共通して適用することができる、各機器の接続形態の一例を示す。ホストコンピュータ１には、ＳＣＳＩボードが装着される（図示しない）。このＳＣＳＩボードに対してＳＣＳＩケーブル２が接続され、ＳＣＳＩケーブル２で以て、ホストコンピュータ１と、この発明が適用されるテープストリーマ３とが接続される。テープストリーマ３は、ＣＰＵやメモリを有し、ＣＰＵの制御に基づき、カセットに収納された磁気テープを記録媒体としてデータの記録／再生を行う。
【００１３】
ＳＣＳＩボードは、例えばＣＰＵを有し、ホストコンピュータ１から出された指示に基づき、ＳＣＳＩコマンドを発行する。また、ＳＣＳＩボードでは、ホストコンピュータ１の指示によるデータ転送の、様々なフェーズの制御がなされる。ＳＣＳＩコマンドに基づくやり取りがＳＣＳＩケーブル２を介して相手側（この例ではテープストリーマ３）との間でなされ、ホストコンピュータ１とテープストリーマ３との間でのデータの転送が行われる。
【００１４】
図２は、この発明の実施の第１および第２の形態に共通して適用することができる、テープストリーマ３における磁気テープ上のデータイメージの一例を示す。図２Ａに示されるように、テープ上には、ファイル単位でデータが書き込まれる。それぞれの、ファイルの終端には、ファイルのデリミタコードであるマークＴＭが書き込まれる。新たなファイルは、このマークＴＭの後ろから書き込まれる。ファイルのそれぞれは、図２Ｂに示されるように、１または複数のブロックからなる。各々のブロックのサイズは、この図２Ｂのように互いに異なる場合もあるし、全て等しくされている場合もある。
【００１５】
また、図示は省略するが、テープ全体の先頭には、テープに書き込まれたデータを管理するための管理テーブルが設けられる。このテープをテープストリーマ３にロードした際に、この管理テーブルを読み込むことで、テープ上のファイルなどの配置を参照することができる。
【００１６】
なお、テープストリーマ３は、ヘリカルスキャン方式で磁気テープに記録を行う。したがって、磁気テープには、ヘリカルトラックが形成される。４つのトラックでトラックセットが形成され、磁気テープへのデータの書き込みは、このトラックセット単位で行われる。また、トラックセットのそれぞれには、トラックセットを互いに識別するためのＩＤが付される。１トラックセットにおいて、データ本体が格納される領域の先頭側に、サブコードデータの領域が配置され、ＩＤが記される。一方、データ本体が格納される領域の終端側には、データ本体のブロック構成を管理するブロック管理テーブルが配置される。
【００１７】
図３は、この発明の実施の第１、第２、第３および第４の形態に共通して適用することができる、上述のテープストリーマ３の構成の一例を概略的に示す。入力端子１０に対してＳＣＳＩケーブル２が接続される。データ書き込み時、ホストコンピュータ１から転送されたデータが端子１０からＳＣＳＩコントローラ１１に供給される。ＳＣＳＩコントローラ１１では、端子１０から供給されたＳＣＳＩコマンドの解析や実行がなされると共に、転送されるデータ本体とそれに付随するデータとの分離が行われる。
【００１８】
分離されたデータ本体は、データ圧縮コントローラＡＬＤＣ１２に供給され、所定の方法で圧縮符号化され、アドレスコントローラＡＤＣ１３に供給される。このアドレスコントローラＡＤ１３は、メモリ１４に対するアドレス制御を行い、メモリ１４におけるデータの読み書きの制御を行う。例えば、アドレスコントローラＡＤＣ１３によって、メモリ１４に対して、アクセスを開始するアドレスがポインタとして指定されると共に、アクセスされるデータサイズが指定される。データは、アドレスコントローラＡＤＣ１３の制御に基づき、磁気テープ１８上のイメージでメモリ１４に格納される。
【００１９】
データは、アドレスコントローラ１３の制御に基づき、書き込みのタイミングに対応してメモリ１４から読み出され、ＥＣＣエンコーダ／デコーダ１５に供給される。ＥＣＣエンコーダ／デコーダ１５は、データ書き込み時にはエンコーダ、読み出し時にはデコーダの機能となるように構成されている。書き込み時には、供給されたデータが例えばリード・ソロモン符号を用いた積符号で以てエラー訂正符号化される。エラー訂正符号化されたデータは、イコライザ１６に供給される。
【００２０】
イコライザ１６に供給されたデータは、記録媒体への記録に適した信号に変換され、回転ヘッドである記録ヘッド１７によってヘリカルトラックで以て磁気テープ１８に書き込まれ記録される。この例では、４トラックを１トラックセットとして記録される。
【００２１】
なお、図３では省略されているが、ＳＣＳＩコントローラ１１，データ圧縮コントローラＡＬＤＣ１２，アドレスコントローラＡＤＣ１３，およびイコライザ１６は、上述のＥＣＣエンコーダ／デコーダ１５と同様に、書き込みおよび読み出しの両方に対応するような構成とされている。
【００２２】
一方、読み出し時には、磁気テープ１８から回転ヘッドである再生ヘッド１９によって読み出された信号がイコライザ１６を介してＥＣＣエンコーダ／デコーダ１５に供給される。このデータは、ＥＣＣエンコーダ／デコーダ１５でエラー訂正を施され、アドレスコントローラＡＤＣ１３の制御により、メモリ１４に書き込まれる。
【００２３】
メモリ１４に書き込まれたデータは、アドレスコントローラＡＤＣ１３の制御により、所定のタイミングで読み出され、データ圧縮コントローラＡＬＤＣ１２に供給され圧縮符号化を解かれ、ＳＣＳＩコントローラ１１に供給される。そして、ＳＣＳＩコントローラ１１の制御によって端子１０からＳＣＳＩケーブル２を介してホストコンピュータ１に対して転送される。
【００２４】
このテープストリーマ３は、３つのＣＰＵ２０，２２，および２３を有する。ＣＰＵ２０は、ＳＣＳＩコントローラ１１，データ圧縮コントローラ１２，およびアドレスコントローラＡＤＣ１３を制御する。それと共に、ＳＣＳＩコントローラ１１で、上述した、供給された本体データから分離された、本体データに付随したデータがＣＰＵ２０に供給される。
【００２５】
また、ＣＰＵ２０の制御に基づき、ＳＣＳＩコントローラ１１では、ＳＣＳＩコントローラ１１とホストコンピュータ１側のＳＣＳＩボードとの間でのデータならびにコマンドのやり取りを行う。
【００２６】
ＣＰＵ２２は、ＥＣＣエンコーダ／デコーダ１５を制御すると共に、ＥＣＣエンコーダ／デコーダ１５の処理結果が供給される。また、ＣＰＵ２３は、固定ヘッド２４によって読み出された、磁気テープ１８の長手方向に形成されたトラックの信号や、磁気テープ１８を駆動するためのモータ２５の回転のセンス信号などにより、モータ２５の回転制御を行う。
【００２７】
ＣＰＵ２０とＣＰＵ２２との間に接続されるＤＰＲＡＭ２１は、デュアルポートＲＡＭであり、ＣＰＵ２０とＣＰＵ２２との間の通信を行う。図３では省略されているが、ＣＰＵ２２とＣＰＵ２３も、同様にして通信を行うことができる。ここでは、ＣＰＵは、ＣＰＵ２０，２２，および２３の３つが用いられているが、これはこの例に限らず、全体的に１つのＣＰＵで構成してもよいし、特定の２つのＣＰＵを組み合わせて構成することもできる。
【００２８】
図４は、図３における構成うち、端子１０からメモリ１４までをさらに詳細に示す。このように、ＳＣＳＩコントローラ１１，データ圧縮コントローラ１２，およびアドレスコントローラ１３のそれぞれは、ＦＩＦＯを有する。すなわち、ＳＣＳＩコントローラ１１は、端子１０の反対側にＦＩＦＯ１１１を有し、データ圧縮コントローラ１２は、両側にそれぞれＦＩＦＯ１２１および１２２を有する。アドレスコントローラ１３は、メモリ１４と反対側にＦＩＦＯ１３１を有する。また、ＳＣＳＩコントローラ１１とデータ圧縮コントローラ１２との間には、さらに、ＣＰＵ２０によって読み書きのタイミングが制御されるＦＩＦＯ１１２が設けられる。
【００２９】
図５は、図３の構成を、メモリ１４におけるデータ構造を中心として、概略的に示す。上述したように、メモリ１４には、磁気テープ１８への書き込みのイメージでデータが格納される。磁気テープ１８に対する書き込みは、上述したように、４つのトラックからなるトラックセットを単位として行われる。メモリ１４にも、このトラックセットを単位としてアドレスが設けられ、データが書き込まれる。一つのトラックセット中に、複数のブロックのデータが含まれるようにできる。
【００３０】
データは、トラックセット毎にアドレシングができるように、メモリ１４に対して配置される。例えば、この図５のように、メモリ１４のアドレスの１行に対して１トラックセットが配置される。メモリ１４からトラックセット毎にデータが読み出され、磁気テープ１８に対する４トラック分の書き込みが行われる。
【００３１】
ところで、例えばテープストリーマ３に対するデータの記録の際には、ホストコンピュータ１から、ＳＣＳＩボードを介して、テープストリーマ３に対してデータ書き込みを指示するＷＲＩＴＥコマンドが送られる。それと共に、ホストコンピュータ１においてブロックテーブルが作成され、ＳＣＳＩボードを介してテープストリーマ３に転送される。
【００３２】
テープストリーマ３からのデータの読み出しも、ＲＥＡＤコマンドを用い同様な処理で以て行われる。すなわち、ホストコンピュータ１からテープストリーマ３に対してＲＥＡＤコマンドが送られる。テープストリーマ３では、このコマンドに基づきテープからのデータの読み込みを行い、読み込まれたデータに基づきブロックテーブルが作成される。ブロックデータの転送後、このブロックテーブルが転送される。
【００３３】
ホストコンピュータ１におけるこれらの処理は、例えば、ＯＳ(Operation System)とアプリケーションとの間に位置し、ホストコンピュータ１に接続される周辺機器の管理などを行う、デバイスドライバで行われる。そのため、アプリケーション側では、これらの処理を意識せずに、通常のファイル書き込みならびに読み込みと同様な処理でこの発明による処理を実現することができる。勿論、これに限らず、アプリケーションにおいて、この処理を直接的に行うようにしてもよい。
【００３４】
図６は、ＷＲＩＴＥコマンドおよび後述するＲＥＡＤコマンドの構造の一例を示す。コマンドは、６バイトから構成され、最初のバイトは、オペレーションコードとされる。オペレーションコードに格納される値によって、このコマンドの種別が判別される。この例では、「０Ａｈ」（ｈは、１６進表記であることを表す）でＷＲＩＴＥコマンドを表し、「０８ｈ」でＲＥＡＤコマンドを表す。次のバイトには、論理ユニット番号などの、各種のパラメータが格納される。続く３バイトは、転送されるデータのサイズ（総転送長）を表す。最後の１バイトは、制御コードである。このＷＲＩＴＥ／ＲＥＡＤコマンドも、実施の第１および第２の形態について共通して用いられる。
【００３５】
次に、この発明の実施の第１の形態について説明する。この発明では、互いにサイズの異なるブロックをまとめて転送することができる。この実施の第１の形態では、一度にまとめて転送される複数のブロックに対して、各々のブロックサイズなどを記したブロックテーブルを付加する。
【００３６】
図７は、この書き込みの際に作成されるブロックテーブルの一例を示す。書き込み時のブロックテーブルには、このように、最初の４バイトに転送するブロックの個数（Ｎ）が格納され、続けて、それぞれのブロックの長さがブロックの転送順に、４バイトずつ格納される。
【００３７】
図８は、テープストリーマ３に対するデータの記録の際の処理を概略的に示すフローチャートである。転送されたブロックテーブルは、テープストリーマ３に受信される（ステップＳ１０）。テープストリーマ３では、受信されたブロックテーブルを解析した後（ステップＳ１１）、最初の１ブロック分のデータを受信する（ステップＳ１２）。ステップＳ１３で、ブロックイメージが作成される。作成されたブロックイメージで以て磁気テープにデータが書き込まれる。そして、処理はステップＳ１１に戻され、次の１ブロック分の処理が行われる。ステップＳ１０で受信されたブロックテーブルについて、全ての処理が終了すると（ステップＳ１４）、例えば次のブロックテーブルの受信が待機される。
【００３８】
図９は、このようにして行われるデータ転送の様子を、従来の方法と比較して示す。図９Ａは、従来の方法で以て、互いにサイズの異なる複数のデータブロックを転送し書き込む例である。従来では、このように、サイズの異なるブロック毎にＷＲＩＴＥコマンドを発行する必要があった。図９Ｂに示される、この発明による方法では、複数のデータブロックを転送する際に、ＷＲＩＴＥコマンドが１回だけ送られ、その後、ブロックテーブルが転送される。そして、このブロックテーブルに基づいて、データブロックが１つずつ転送される。
【００３９】
このように、ブロックテーブルを最初に転送して、その後、ブロックを転送する方法を用いることによって、従来の、ブロック毎にＷＲＩＴＥコマンドを発行する方法よりも、大幅にデータの転送に要する時間を短縮することができる。従来の方法では、図１０Ａに一例が示されるように、ブロック毎に発行されるコマンドに対して、それぞれオーバーヘッド時間を要する。すなわち、一つのブロックが転送されてから次のブロックが転送されるまでの間に、所定のオーバーヘッド時間が費やされる。
【００４０】
それに対して、この発明による方法では、最初の１回のＷＲＩＴＥコマンドでブロックテーブルが転送され、このブロックテーブルの内容に応じて連続的にブロックが転送される。そのため、図１０Ｂに一例が示されるように、各ブロック転送の間では、ブロックテーブルの解析時間が費やされるだけである。したがって、図１０Ａの例と同一のブロックを転送する場合でも、転送時間が大幅に短縮される。
【００４１】
図１１は、テープストリーマ３からのデータの読み込みの際の処理を概略的に示すフローチャートである。テープストリーマ３からのデータの読み出しの際には、ホストコンピュータ１からＳＣＳＩボードを介して、テープストリーマ３に対してデータ読み出しを指示するＲＥＡＤコマンドが送られる。
【００４２】
テープストリーマ３では、受信されたＲＥＡＤコマンドに基づき、磁気テープ上のデータの読み出しが行われる。読み出されたデータは、一旦メモリに蓄えられ、データのブロックの解析がなされる（ステップＳ２０）。次のステップＳ２１で、解析されたブロックが１ブロックだけホストコンピュータ１のＳＣＳＩボードに対して転送される。そして、テープストリーマ３において、例えばメモリ上に、転送されたデータブロックに関するブロックテーブルが作成される（ステップＳ２２）。
【００４３】
図１２は、この読み出しの際に作成されるブロックテーブルの一例を示す。読み出し時のブロックテーブルは、上述の書き込み時のブロックテーブルと同様に、テーブルの先頭から、ブロックの長さがブロックの転送順に従って、それぞれ４バイトずつ格納される。すなわち、読み込まれて転送されたブロックの長さデータが順番に積み重ねられていく。そして、転送する全てのブロックの長さが格納されると、続けて、転送するブロックの個数（Ｎ）が４バイトで表され、格納される。
【００４４】
ステップＳ２０からステップＳ２２までの処理が、ＲＥＡＤコマンドで指示されたデータが全て転送されるまで繰り返される。データの転送が終了すると（ステップＳ２３）、ステップＳ２２で作成された、転送されたデータの全てのブロック情報を含むブロックテーブルがテープストリーマ３からホストコンピュータ１のＳＣＳＩボードに転送される（ステップＳ２４）。
【００４５】
図１３は、このようにして行われるデータ転送の様子を、従来の方法と比較して示す。図１３Ａは、従来の方法で以て、互いにサイズの異なる複数のデータブロックを読み込み転送する例である。ブロックサイズが互いに異なる場合、従来では、このように、１回のＲＥＡＤコマンドで以て１つのデータブロックしか読み出せなかった。図１３Ｂに示される、この発明による方法では、１回のＲＥＡＤコマンドで複数のデータブロックが転送され、その後、ブロックテーブルが転送される。データを受信した側では、転送されたブロックテーブルを参照することで、データ構造の解析を行うことができる。
【００４６】
このように、テープから読み出されたデータのブロックを解析して作成したブロックテーブルを転送することによって、従来の、ブロック毎にＲＥＡＤコマンドを発行する方法よりも、大幅にデータの転送に要する時間を短縮することができる。従来の方法では、図１４Ａに一例が示されるように、ブロック毎に発行されるコマンドに対して、それぞれオーバーヘッド時間を要する。すなわち、一つのブロックが転送されてから次のブロックが転送されるまでの間に、所定のオーバーヘッド時間が費やされる。
【００４７】
それに対して、この発明による方法では、最初の１回のＲＥＡＤコマンドで連続的にブロックが転送され、最後に、各ブロックの情報が格納されるブロックテーブルが転送される。そのため、図１４Ｂに一例が示されるように、各ブロック転送の間では、ブロックテーブルの解析時間が費やされるだけである。したがって、図１４Ａの例と同一のブロックを転送する場合でも、転送時間が大幅に短縮される。
【００４８】
上述のように、ブロックテーブルを用いて転送を行うことによって、転送時間の大幅な短縮が実現可能である。すなわち、実際には、ブロックテーブルは、転送されるデータ本体に比べて極めて小さいサイズであると共に、ブロック解析は、ＣＰＵでの単純な計算によって行われるので、ブロック解析に要する時間は、データの転送時間に対して無視できる。それに比べて、従来の方法によるオーバーヘッドによって費やされる時間は、バスのコントロールなどに要する時間などを含むため、大きいものとなる。厳密にいうと、
ブロックテーブルの転送時間＋（ブロックテーブル解析時間×Ｎ）＜オーバーヘッド時間×（Ｎ＋１）
このような条件の下で、この発明による転送時間に優位性がある。
【００４９】
次に、この発明の実施の第２の形態について説明する。上述した実施の第１の形態では、テープストリーマ３に対するデータの書き込み時と読み出し時とでは、ブロックテーブルの形式が異なっていた。この実施の第２の形態では、書き込み時と読み出し時とで、データの形式を同一にして、処理をより平易に行うことができるようにしたものである。
【００５０】
図１５は、この実施の第２の形態による転送データの構造の一例を示す。ここで、Ｎ個のブロックをひとまとめにして転送するものとする。先頭の４バイトには、１番目に転送されるブロックの長さが格納される。続けて、１番目のブロックのデータ本体が格納される。ブロックが４バイト単位で完結するように、ブロックの終端が「０」で埋められ、ゼロ・パディングがなされる。
【００５１】
このような、ブロックの長さのデータとブロック本体のデータ（およびゼロ・パディング）とからなる組が、転送されるブロックの数だけ繰り返される。Ｎ個のブロックが転送されるこの例では、Ｎ番目のブロックのデータ本体が格納されるまで繰り返される。転送される全てのブロックが格納されると、最後の４バイトに転送ブロック数のＮが格納される。
【００５２】
図１６は、このようなデータ構造に基づく、この実施の第２の形態による、テープストリーマ３におけるデータ書き込みの処理を示すフローチャートである。このフローチャートの実行に先んじて、ホストコンピュータ１において、テープストリーマ３に書き込むためのデータがファイルとして用意され、そのファイルのテープストリーマ３に対する例えばコピーが指示される。この指示に基づき、ホストコンピュータ１でＷＲＩＴＥコマンドが発行される。発行されたＷＲＩＴＥコマンドは、ＳＣＳＩケーブル２を介してテープストリーマ３のＳＣＳＩコントローラ１１に転送され、ＳＣＳＩコントローラ１１からＣＰＵ２０に渡される。
【００５３】
最初のステップＳ３０において、ＣＰＵ２０からＳＣＳＩコントローラ１１に対して、４バイト分のデータの転送命令が出される。この４バイト分のデータは、転送されるブロックのサイズを表す、ブロックサイズデータである。このデータは、ＳＣＳＩコントローラ１１の内蔵ＦＩＦＯ１１１に格納される。ステップＳ３１で、ＳＣＳＩコントローラ１１からＣＰＵ２０対して転送終了通知が出されると、次のステップＳ３２で、ＦＩＦＯ１１１に格納されたブロックサイズデータがＣＰＵ２０によって得られる。
【００５４】
ブロックサイズデータが得られると、ステップＳ３３で、得たブロックデータサイズに付加データ長が加えられ、転送されるデータの長さを表す転送長とされる。付加データ長は、ゼロ・パディングのサイズであるパディングサイズと、次のブロックサイズデータ分の４バイトとからなる。転送長は、ＳＣＳＩコントローラ１１の内蔵ＦＩＦＯ１１１にセットされる。
【００５５】
次のステップＳ３４では、ＣＰＵ２０によって、メモリ１４上での、転送を行うブロック（＃ｎとする）の開始アドレスと、そのブロック＃ｎの切れ目までの転送長とが、アドレスコントローラＡＤＣ１３に対してセットされる。そして、ＣＰＵ２０から転送開始命令が出される。
【００５６】
なお、開始アドレスは、例えば、ブロック＃ｎが最初に転送されるブロックであればメモリの所定アドレスが開始アドレスとされ、最初に転送されるブロックでない場合には、前回転送されたブロックのアドレスに基づいて求められる。ブロック＃ｎの切れ目までの転送長は、例えば、上述のステップＳ３３で得られた転送長から求められる。
【００５７】
ＣＰＵ２０から出された転送開始命令により、ブロック＃ｎの転送が開始され、ホストコンピュータ１からＳＣＳＩケーブル２を介してテープストリーマ３にブロック＃ｎのデータが転送される。転送されたデータは、ＳＣＳＩコントローラ１１，データ圧縮コントローラＡＬＤＣ１２，およびアドレスコントローラＡＤＣ１３を介してメモリ１４の所定のアドレスに格納される。
【００５８】
アドレスコントローラＡＤＣ１３からＣＰＵ２０に対してブロック＃ｎの転送が終了した旨通知されると（ステップＳ３５）、ステップＳ３６で、ＣＰＵ２０によって、メモリ１４上での、ブロック＃ｎの続きが開始されるアドレスと、そのブロック＃ｎの終端までの転送長にパディングデータ長とが、アドレスコントローラＡＤＣ１３に対してセットされる。そして、ＣＰＵ２０から転送開始命令が出される。
【００５９】
アドレスコントローラＡＤＣ１３からＣＰＵ２０に対してブロック＃ｎの転送が終了した旨通知されると（ステップＳ３７）、ステップＳ３８で、ＣＰＵ２０によって、メモリ１４上に次のブロック＃（ｎ＋１）が書き込まれるアドレスが求められる。そして、次のステップＳ３９で、ステップＳ３８で求められたアドレスと、ブロックサイズデータ分の４バイトがアドレスコントローラＡＤＣ１３にセットされる。そして、ＣＰＵ２０から転送開始命令が出される。これにより、ブロックサイズデータがメモリ１４に書き込まれる。
【００６０】
アドレスコントローラＡＤＣ１３からＣＰＵ２０に対してブロック＃（ｎ＋１）の転送が終了した旨通知されると（ステップＳ４０）、次のステップＳ４１で、メモリ１４に書き込まれたブロックサイズデータが読み出され、次に転送を行うブロックのブロックサイズが求められる。そして、ＣＰＵ２０によって、メモリ１４におけるポインタがブロックサイズデータ分（４バイト）戻される（ステップＳ４２）。これにより、メモリ１４において、次のブロックは、直前に書き込まれたブロックに続けて書き込まれることになる。
【００６１】
次のステップＳ４３では、ＷＲＩＴＥコマンドによる転送が全て終了したかどうかが判断される。ＷＲＩＴＥコマンドには、転送するデータのサイズ、すなわち総転送長が記されている。また、図１５に示されるように、データの終端には、転送される総ブロック数Ｎが格納されている。これら総転送長および総ブロック数Ｎとを転送終了条件として、判断がなされる。若し、未だ転送されていないブロックがあるとされたら、処理はステップＳ３４へ戻される。
【００６２】
次に、テープストリーマ３からのデータの読み出しについて説明する。この実施の第２の形態では、読み出しの際にも書き込みと同一のデータ構造が用いられる。図１７は、テープストリーマ３におけるデータ読み出しの処理を示すフローチャートである。
【００６３】
このフローチャートの実行に先んじて、ホストコンピュータ１からテープストリーマ３に対して、ロードされたテープの情報が要求される。テープストリーマ３では、テープ先頭の管理テーブルを読み込み、テープに書き込まれているファイルの情報をホストコンピュータ１に転送する。ホストコンピュータ１では、この情報に基づき、テープストリーマ３から読み込みたいデータを指定するＲＥＡＤコマンドが発行される。このＲＥＡＤコマンドは、ＳＣＳＩケーブル２を介してテープストリーマ３のＳＣＳＩコントローラ１１に転送され、ＳＣＳＩコントローラ１１からＣＰＵ２０に渡される。
【００６４】
最初のステップＳ５０で、ＲＥＡＤコマンドに基づくＣＰＵ２０の制御によって、磁気テープ１８からデータが読み出される。読み出されたデータは、イコライザ１６を介してＥＣＣエンコーダ／デコーダ１５に供給され、所定の方法でエラー訂正処理が施される。このとき、データに訂正不能なエラーが存在した場合には、処理が後述するステップＳ６４に飛ばされる（ステップＳ５１）。そして、ステップＳ６４で、例えば転送したブロックの数が「０」とされて処理が終了される。
【００６５】
ステップＳ５１で、エラーが無いとされれば、エラー訂正されたデータがアドレスコントローラＡＤＣ１３を介して、メモリ１４の所定のアドレスから、テープ上の記録イメージで以て書き込まれる。次のステップＳ５２では、ＣＰＵ２０により、メモリ１４からブロック管理テーブルが読み出され、転送するブロックのブロックサイズが取得される。ブロックサイズを示すブロックサイズデータは、ＳＣＳＩコントローラ１１に内蔵されるＦＩＦＯ１１１に転送される（ステップＳ５３）。
【００６６】
ブロックサイズデータの転送が終了されると（ステップＳ５４）、ステップＳ５５で、ＣＰＵ２０により、ＳＣＳＩコントローラ１１のレジスタに対して、転送されたブロックサイズが転送長としてセットされる。
【００６７】
次のステップＳ５６では、ＣＰＵ２０により、アドレスコントローラＡＤＣ１３に対して、メモリ１４中に書き込まれている、転送するブロックであるブロック＃ｎの開始アドレスと、このブロック＃ｎの切れ目までの転送長がセットされる。そして、ステップＳ５７で、ＣＰＵ２０からアドレスコントローラＡＤＣ１３に対して、転送開始命令が出される。
【００６８】
この命令に基づき、メモリ１４のブロック＃ｎの開始アドレスから転送長で指定された長さだけデータが読み出される。読み出されたデータは、アドレスコントローラＡＤＣ１３およびデータ圧縮コントローラＡＬＤＣ１２を介してＳＣＳＩコントローラ１１に供給される。そして、ＳＣＳＩコントローラ１１においてＳＣＳＩバスの制御などがなされ、端子１０からＳＣＳＩケーブル２を介してホストコンピュータ１に対してブロック＃ｎが転送される。
【００６９】
転送が終了したとされると（ステップＳ５８）、次のステップＳ５９で、ＣＰＵ２０によって、アドレスコントローラＡＤＣ１３に対して、メモリ１４においてブロック＃ｎの続きが始まるアドレスがセットされると共に、ブロック＃ｎの終端までの長さが転送長としてセットされる。そして、ステップＳ６０で転送開始命令が出され、転送が開始される。
【００７０】
転送が終了したとされると（ステップＳ６１）、処理はステップＳ６２に移行し、ＣＰＵ２０によって、ＳＣＳＩコントローラ１１の内蔵ＦＩＦＯ１１１に対してパディングデータが転送される。
【００７１】
次のステップＳ６３で、ＲＥＡＤコマンドによる転送が全て終了したかどうかが判断される。ＲＥＡＤコマンドには、転送するデータのサイズ、すなわち総転送長が記されている。また、図１５に示されるように、データの終端には、転送される総ブロック数Ｎが格納されている。これら総転送長および総ブロック数Ｎとを転送終了条件として、判断がなされる。若し、未だ転送されていないブロックがあるとされたら、処理はステップＳ５２へ戻される。
【００７２】
一方、ステップＳ６３で転送が終了したと判断されたら、処理はステップＳ６４に移行し、ＣＰＵ２０によって、転送したブロック数ＮがＳＣＳＩコントローラ１１の内蔵ＦＩＦＯ１１１に転送される。そして、ステップＳ６５で転送の終了を待って一連の処理が終了される。
【００７３】
次に、この発明の実施の第３の形態について説明する。この発明の実施の第３の形態においては、発明の実施の第１の形態のブロックテーブルに属性を示す１バイトのデータを入れることによって、ブロック、ファイル、セット、ボリューム、物理デバイスおよびストレージシステムの階層から成るデータを連続的に記録しても、再生時に、各階層のブロック、ファイル、セット、ボリューム、物理デバイスの各境界を識別することができるようにする。
【００７４】
図１８は、ブロック、ファイル、セット（ディレクトリ）、ボリューム、物理デバイス、ストレージシステムの関係を示す。ストレージシステム２００は、１つ以上の物理デバイス２１０を有する。この物理デバイスは、ハードディスクやフロッピーディスク、光ディスクなどである。この各物理デバイス２１０は、１つ以上のボリューム２２０を有する。また、この各ボリューム２２０は、１つ以上のセット２３０を有する。さらに、このセット２３０は、１つ以上のファイル２４０を有する。さらにまた、この各ファイル２４０は、１つ以上のブロック２５０を有する。
【００７５】
このように、ブロック、ファイル、セット、ボリューム、物理デバイス、ストレージシステムは、互いに階層関係となっている。
【００７６】
この発明の実施の第３の形態によるブロックテーブルの構成について、図１９を参照して詳細に説明する。図１９は、この発明の実施の第３の形態による書き込みの際に作成されるブロックテーブルの一例を示す。図１９に示されるように、最初の４バイトで、転送するブロックの個数（Ｎ）が示される。
【００７７】
このブロックの個数（Ｎ）を示すデータの後ろには、属性を示す１バイトのデータと、ｉ番目のブロックの長さ（ｉ＝０，１，２，・・・，Ｎ）を示すデータが格納される。この属性を示すデータは、８ビットからなり、その値によって、ファイルマーク、セットマーク、ボリュームマーク、物理デバイスマークを示す。
【００７８】
また、図１９に示されるように、この属性を示す１バイトのデータに続けて、ｉ番目のブロックの長さ（ｉ＝０，１，２，・・・，Ｎ）を示すデータが格納される。このｉ番目のブロック位置に、ファイル、セット、ボリュームまたは物理デバイスの境界、すなわち切れ目が位置するときには、このｉ番目のブロックの長さを示すデータが〔０〕とされると共に、属性を示す１バイトのデータによって、この境界がファイル、セット、ボリュームおよび物理デバイスの境界のうちの何れであるかが示される。
【００７９】
例えば、８ビットの属性データの値が〔１０００００００〕であるときには、ファイルの境界を示す。また、８ビットの属性データの値が〔０１００００００〕であるときには、セットの境界であることを示す。また、８ビットの属性データの値が〔００１０００００〕であるときには、ボリュームの境界であることを示す。また、８ビットの属性データの値が〔０００１００００〕であるときには、物理デバイスの境界であることを示す。さらに、これらの境界ではないときには、この８ビットの属性データの値は、〔００００００００〕とされる。
【００８０】
そして、属性を示す１バイトのデータおよびｉ番目のブロックの長さを示すデータがブロックの個数Ｎに相当する数だけブロックテーブルに格納される。
【００８１】
このように、ブロックテーブル中に、ファイル、セット、ボリュームおよび物理デバイスの各境界の有無を示す属性データを持たせているので、ブロック、ファイル、セット、ボリューム、物理デバイスおよびストレージシステムの階層から成るデータを連続的に記録しても、再生時に、各階層のブロック、ファイル、セット、ボリュームおよび物理デバイスの各境界を識別することができる。
【００８２】
次に、この発明の実施の第４の形態について説明する。この発明の実施の第４の形態においては、発明の第２の形態のブロックテーブルに属性を示す１バイトのデータを入れることによって、ブロック、ファイル、セット、ボリューム、物理デバイスおよびストレージシステムの階層から成るデータを連続的に記録しても、再生時に、各階層のブロック、ファイル、セット、ボリューム、物理デバイスの各境界を識別することができるようにする。
【００８３】
ここで、ブロック、ファイル、セット、ボリューム、物理デバイスおよびストレージシステムについては、図１８を用いて既に説明しているので、ここでの説明は省略する。
【００８４】
この発明の実施の第４の形態によるブロックテーブルの構成について、詳細に説明する。図２０は、この発明の実施の第４の形態による書き込みの際に作成されるブロックテーブルの一例を示す。図２０に示されるように、ｉ番目のブロックの長さ（ｉ＝１，２，・・・，Ｎ）を示すデータの前には、属性を示す８ビットのデータが格納される。また、ｉ番目のブロックの長さを示すデータの後ろには、ｉ番目のブロックのデータ本体が格納される。このデータ本体が４バイト単位で完結するように、ブロック本体の終端は、必要な数の〔０〕データで埋められ、ゼロ・パディングがなされる。
【００８５】
上述した発明の実施の第３の形態と同様に、ｉ番目のブロック位置にファイル、セット、ボリュームまたは物理デバイスの境界、すなわち切れ目が位置するときには、このｉ番目のブロックの長さを示すデータが〔０〕とされると共に、属性を示す１バイトのデータによって、この境界がファイル、セット、ボリュームおよび物理デバイスのうちの何れの境界であるかが示される。
【００８６】
例えば、８ビットの属性データの値が〔１０００００００〕であるときには、ファイルの境界であることを示す。また、８ビットの属性データの値が〔０１００００００〕であるときには、セットの境界であることを示す。また、８ビットの属性データの値が〔００１０００００〕であるときには、ボリュームの境界であることを示す。また、８ビットの属性データの値が〔０００１００００〕であるときには、物理デバイスの境界であることを示す。さらに、これらの境界ではないときには、この８ビットの属性データの値は、〔００００００００〕とされる。
【００８７】
そして、属性を示す１バイトのデータ、ｉ番目のブロックの長さを示すデータおよびデータ本体がブロックの個数Ｎに相当する数だけブロックテーブルに格納される。転送される全てのブロックについてのデータが格納されると、最後の４バイトに転送ブロックの個数Ｎを示すデータが格納される。
【００８８】
このように、ブロックテーブル中にファイル、セット、ボリュームおよび物理デバイスの各境界の有無を示す属性データを持たせているので、ブロック、ファイル、セット、ボリューム、物理デバイスおよびストレージシステムの階層から成るデータを連続的に記録しても、再生時に、各階層のブロック、ファイル、セット、ボリュームおよび物理デバイスの各境界を識別することができる。
【００８９】
上述のように、発明の実施の第３および第４の形態によれば、ファイルマーク、セットマーク、ボリュームマークおよび物理デバイスマークといった情報がテープ上に保存されているので、一つにまとめられた複数のファイル、セット、ボリュームおよび物理デバイスを復元するための特別なアプリケーションソフトウェアを用いずに、データを再生することができる。
【００９０】
なお、上述では、この発明がＳＣＳＩのプロトコルに適用されるように説明したが、これはこの例に限定されない。例えば、この発明は、ＩＰＩ−３(Intelligent Peripheral Interface)などのデータ転送プロトコルにも適用できるものである。また、この発明は、コマンド間のオーバーヘッドが大きいような他のプロトコルにも用いて好適なものである。
【００９１】
また、この発明による方法で転送されたデータは、例えばテープストリーマ３に書き込まれる際のフォーマットが従来のものと変わらないので、既存のデバイスドライバでも読み書きを行うことが可能である。
【００９２】
【発明の効果】
以上説明したように、この発明によれば、１度のＷＲＩＴＥ／ＲＥＡＤコマンドの発行で、サイズの異なる複数のブロックを転送することができるようにされているため、コマンド間に生じるオーバーヘッド時間を著しく抑えることができ、データ転送速度が大幅に向上するという効果がある。
【００９３】
また、この発明によれば、ハードウェアの構成としては従来のものを用い、ファームウェアで以て処理することができるため、従来の機種にこの発明を新たに適用する際にも、コストがほとんどかからないという効果がある。
【００９４】
さらに、実施の第１の形態では、ブロックの構造がブロックテーブルという形でデータに付加されるため、ホストコンピュータに対して最初にブロックテーブルを転送しておいて、後からブロック構造を解析することができるという効果がある。
【００９５】
さらにまた、この発明では、サイズの異なる複数のブロックを、一つの大きなデータにまとめて転送するため、バスの利用効率が向上するという効果がある。従来のオーバーヘッドの時間を、他のデバイスが使用することができるという効果がある。
【図面の簡単な説明】
【図１】この発明の実施の第１および第２の形態に共通な各機器の接続形態の一例を示すブロック図である。
【図２】磁気テープ上のデータイメージの一例を概念的に示す略線図である。
【図３】テープストリーマの構成の一例を概略的に示すブロック図である。
【図４】テープストリーマの構成のうち、端子からメモリまでの構成の一例を示すブロック図である。
【図５】テープストリーマの構成のうち、メモリにおけるデータ構造を中心として概略的に示すブロック図である。
【図６】ＷＲＩＴＥ／ＲＥＡＤコマンドの構造の一例を示す略線図である。
【図７】書き込みの際に作成されるブロックテーブルの一例を示す略線図である。
【図８】テープストリーマに対するデータの記録の際の処理を概略的に示すフローチャートである。
【図９】書き込み時のデータ転送の様子を従来の方法と比較して示す略線図である。
【図１０】第１の実施の形態による方法で転送時間が短縮されることを説明するための略線図である。
【図１１】テープストリーマからのデータの読み込みの際の処理を概略的に示すフローチャートである。
【図１２】読み出しの際に作成されるブロックテーブルの一例を示す略線図である。
【図１３】読み込み時のデータ転送の様子を従来の方法と比較して示す略線図である。
【図１４】第１の実施の形態による方法で転送時間が短縮されることを説明するための略線図である。
【図１５】実施の第２の形態による転送データの構造の一例を示す略線図である。
【図１６】実施の第２の形態による、テープストリーマにおけるデータ書き込みの処理を示すフローチャートである。
【図１７】実施の第２の形態による、テープストリーマにおけるデータ読み込みの処理を示すフローチャートである。
【図１８】ブロック、ファイル、セット、ボリューム、物理デバイスおよびストレージシステムの階層関係を説明するための略線図である。
【図１９】実施の第３の形態によるブロックテーブルの構成を示す略線図である。
【図２０】実施の第４の形態によるブロックテーブルの構成を示す略線図である。
【符号の説明】
１・・・ホストコンピュータ、２・・・ＳＣＳＩケーブル、３・・・テープストリーマ、１１・・・ＳＣＳＩコントローラ、１２・・・データ圧縮コントローラＡＬＤＣ、１３・・・アドレスコントローラＡＤＣ、１４・・・メモリ、１５・・・ＥＣＣエンコーダ／デコーダ、１８・・・磁気テープ、２０，２２，２３・・・ＣＰＵ、１１１・・・ＳＣＳＩコントローラに内蔵されたＦＩＦＯ
【図１】
0004324993.tif 000002
【図２】
0004324993.tif 000003
【図３】
0004324993.tif 000004
【図４】
0004324993.tif 000005
【図５】
0004324993.tif 000006
【図６】
0004324993.tif 000007
【図７】
0004324993.tif 000008
【図８】
0004324993.tif 000009
【図９】
0004324993.tif 000010
【図１０】
0004324993.tif 000011
【図１１】
0004324993.tif 000012
【図１２】
0004324993.tif 000013
【図１３】
0004324993.tif 000014
【図１４】
0004324993.tif 000015
【図１５】
0004324993.tif 000016
【図１６】
0004324993.tif 000017
【図１７】
0004324993.tif 000018
【図１８】
0004324993.tif 000019
【図１９】
0004324993.tif 000020
【図２０】
0004324993.tif 000021