(57)【特許請求の範囲】
【請求項１】
媒体に対し、データのリード／ライトを行うドライブと、
前記ドライブの制御を行うコントローラ（５）からなり、
前記コントローラ（５）には、
ホストコンピュータとの間のデータ転送速度を設定するデータ転送速度設定手段（１１）と、
ホストコンピュータとの間のデータ転送時のエラーを検出するエラー検出手段（１２〜１６）を備え、
ホストコンピュータとコントローラ間のデータ転送速度を監視対象及び制御対象として、前記エラー検出手段でデータ転送エラーを検出した際、前記データ転送速度設定手段に、現データ転送速度よりも低い速度を設定してデータ転送の再試行を行う外部記憶装置において、
前記データ転送エラーのエラー回数をカウントするエラーカウンタと、
前記エラーカウンタでカウントしたエラー回数が、予め設定したエラー閾値を超えた際、以降のコマンド処理を、実行可能なデータ転送速度に切り換える制御手段を備えたことを特徴とする外部記憶装置。
【請求項２】
請求項１記載の外部記憶装置において、
前記エラーカウンタは、前記データ転送エラーのエラー回数を、前記コントローラ毎にカウントするエラーカウンタであり、
前記制御手段は、前記エラーカウンタでカウントしたエラー回数が、予め設定したエラー閾値を超えた際、同一コントローラ内で行われるコマンド処理を、実行可能なデータ転送速度に切り換える制御手段であることを特徴とする外部記憶装置。
【請求項３】
請求項１記載の外部記憶装置において、
前記エラーカウンタは、前記データ転送エラーのエラー回数を、前記上位装置のチャネルポート毎にカウントするエラーカウンタであり、
前記制御手段は、前記エラーカウンタでカウントしたエラー回数が、予め設定したエラー閾値を超えた際、同一チャネルポートで行われるコマンド処理を、実行可能なデータ転送速度に切り換える制御手段であることを特徴とする外部記憶装置。
【請求項４】
請求項１記載の外部記憶装置において、
前記エラーカウンタは、前記データ転送エラーのエラー回数を、前記ドライブ機番毎にカウントするエラーカウンタであり、
前記制御手段は、前記エラーカウンタでカウントしたエラー回数が、予め設定したエラー閾値を超えた際、同一ドライブ機番で行われるコマンド処理を、実行可能なデータ転送速度に切り換える制御手段であることを特徴とする外部記憶装置。
【請求項５】
請求項１記載の外部記憶装置において、
前記エラーカウンタは、前記データ転送エラーのエラー回数を、前記媒体毎にカウントするエラーカウンタであり、
前記制御手段は、前記エラーカウンタでカウントしたエラー回数が、予め設定したエラー閾値を超えた際、同一媒体で行われるコマンド処理を、実行可能なデータ転送速度に切り換える制御手段であることを特徴とする外部記憶装置。
【請求項６】
前記エラー検出時の再試行によるデータ転送が正常終了した際、前記エラーカウンタの値（エラー回数）をインクリメントするエラーカウンタ制御手段と、
前記エラー検出時の再試行によるデータ転送が正常終了した際のデータ転送速度を、実行可能なデータ転送速度として記録しておく記録手段を備えたことを特徴とする請求項１〜５のいずれかに記載の外部記憶装置。
【請求項７】
前記外部記憶装置が、磁気テープを媒体としてデータの記憶／再生処理を行う磁気テープ装置（磁気テープサブシステム）であることを特徴とした請求項１〜６のいずれかに記載の外部記憶装置。
【請求項８】
媒体に対し、データのリード／ライトを行うドライブと、
前記ドライブの制御を行うコントローラ（５）からなり、
前記コントローラ（５）には、
ホストコンピュータとの間のデータ転送速度を設定するデータ転送速度設定手段（１１）と、
ホストコンピュータとの間のデータ転送時のエラーを検出するエラー検出手段（１２〜１６）を備え、
ホストコンピュータとコントローラ間のデータ転送速度を監視対象及び制御対象として、前記エラー検出手段でデータ転送エラーを検出した際、前記データ転送速度設定手段に、現データ転送速度よりも低い速度を設定してデータ転送の再試行を行う外部記憶装置において、
前記データ転送エラーのエラー回数をカウントし、
前記エラー回数が、予め設定したエラー閾値を超えた場合には、同一コントローラ内で行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行することを特徴とした外部記憶装置のデータ転送制御方法。
【請求項９】
請求項８記載の外部記憶装置において、
前記データ転送エラーのエラー回数を、前記上位装置のチャネルポート毎にカウントし、
前記エラー回数が、予め設定したエラー閾値を超えた場合には、同一チャネルポートで行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行することを特徴とする外部記憶装置のデータ転送制御方法。
【請求項１０】
請求項８記載の外部記憶装置において、
前記データ転送エラーのエラー回数を、前記ドライブ機番毎にカウントし、
前記エラー回数が、予め設定したエラー閾値を超えた場合には、同一ドライブ機番で行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行することを特徴とする外部記憶装置のデータ転送制御方法。
【請求項１１】
請求項８記載の外部記憶装置において、
前記データ転送エラーのエラー回数を、前記媒体毎にカウントし、
前記エラー回数が、予め設定したエラー閾値を超えた場合には、同一媒体で行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行することを特徴とする外部記憶装置のデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、電子計算機システムにおいて、データの記録／再生処理を行う磁気テープサブシステム等の外部記憶装置、及び外部記憶装置のデータ転送制御方法に関する。
【０００２】
【従来の技術】
図１５〜図１７は従来例を示した図であり、図１５〜図１７中、３はホスト（ホストコンピュータ）、４、１０はデータ送受信制御回路、５は磁気テープ制御装置（以下「ＭＴＣ」という）、６はホストインターフェースコントローラ（以下「ＨＩＣ」という）、７はマルチブロックバッファ（以下「ＭＢＢ」という）、８は制御情報テーブル（以下「ＣＩＴ」という）、９はフォーマッタ部（以下「ＦＭＴ」という）、１１はデータ転送速度レジスタ、１２はチャネルデータ異常検出回路、１３はメモリ、１４はマイクロプロセッサ（以下「ＭＰＵ」と記す）、１５はデータ圧縮回路を示す。
【０００３】
§１：従来例の一般的な説明
従来、磁気テープサブシステムは、電子計算機システムの外部記憶装置として広く使用されており、莫大な保存データを記憶するものである。
【０００４】
このような磁気テープサブシステムにおいては、大量のデータを短時間で処理する必要があり、上位装置（ホスト）のチャネルと磁気テープサブシステム間のデータ転送速度は飛躍的に高速度化してきている。
【０００５】
前記チャネルと磁気テープサブシステム間のデータ転送は、チャネル−磁気テープサブシステム間で一つ一つのデータを送受信しているため、チャネル、または磁気テープサブシステムの送受信速度を遅らせることにより、データ転送速度を切り換えることは可能である。
【０００６】
また、磁気テープサブシステムでは、莫大なデータをより効率良く記憶処理を行うため、データを圧縮して記憶し、ホストへはデータを解凍して転送することで、より多くのデータを記憶できるようにしている。
【０００７】
しかし、磁気テープサブシステム内のデータ送受信回路等の故障により、高速度のデータ転送が正常に行えず、かつ前記故障を検出できない場合がある。このような場合は、磁気テープサブシステム内で時間監視を行い、監視時間内に処理が終わらないことで故障を検出していた。
【０００８】
また、磁気テープサブシステム内のデータ圧縮回路は、効率良くデータを保存するため、莫大なデータをより少ないデータに変換して保存する。このため、一般的に、圧縮回路への入力データは多く、出力データは少なくなる。
【０００９】
そして、入力データの転送速度が高速度になればなるほど、磁気テープサブシステムの負荷が高まり、その結果、マージンが不足して異常状態に陥る確率が高くなる。なお、磁気テープサブシステムが異常状態に陥り、内部の異常検出回路で異常を検出できない場合は、前記の時間監視により異常を検出する。
【００１０】
前記データ圧縮回路は、プログラムによって実現すると、処理速度が遅くなって媒体への記憶処理に時間がかかることと、一定の規則性を持ったアルゴリズムであることから、ハードウェアにより実現することが普通である。
【００１１】
しかし、前記ハードウェア構成のデータ圧縮回路は、素子の故障等により装置固有のハードウェア故障を持つ場合がある。この故障の原因は、高速度のデータ転送による高負荷な状態に依存している場合も多い。
【００１２】
従って、磁気テープサブシステムでデータ転送速度を低く切り換えることにより、前記故障を救済できる場合もある。しかし、磁気テープサブシステムへのデータ保存処理の時間をできるだけ短縮させるために、通常、磁気テープサブシステムとチャネル間では、先ず両者間で最大速度のデータ転送を行うのが普通である。
【００１３】
そして、データ転送で異常が発生した場合には、データ転送速度を低く切り換えてデータ転送のリトライを行っていた。以下、前記データ転送処理を図面を参照しながら説明する。
【００１４】
§２：磁気テープサブシステムの構成説明・・・図１５参照
図１５は従来例の装置構成図である。以下、図１５に基づいて磁気テープサブシステムの構成を説明する。
【００１５】
図１５に示したように、磁気テープサブシステムは、ＭＴＣ５と、ドライブ（磁気テープユニット：ＭＴＵ）で構成し、該ＭＴＣ５には、ＨＩＣ６、ＭＢＢ７、ＣＩＴ８、ＦＭＴ９等を設ける。
【００１６】
また、前記ＨＩＣ６には、データ送受信制御回路１０、ＭＰＵ１４、データ圧縮回路１５、チャネルデータ異常検出回路１２、メモリ１３を設け、前記データ送受信制御回路１０には、データ転送速度レジスタ１１を設ける。
【００１７】
このような構成の磁気テープサブシステムは、ホストに接続して使用するが、この場合、ホストのチャネルＣＨには、データ送受信制御回路４を設ける。前記各部の機能等は次の通りである。
【００１８】
(1) ：ＨＩＣ６は、ホスト３との間の各種入出力処理（コマンドの処理等）を行うものである。
(2) ：ＦＭＴ９は、ドライブ内の磁気テープ（媒体）に対するリード／ライトデータのフォーマット処理等を行うものである。
【００１９】
(3) ：ＣＩＴ８は、各種の制御情報（コマンドの制御情報等）を格納するもの（メモリ）である。
(4) ：ＭＢＢ７は、転送データを一時的に格納するデータバッファである。
【００２０】
(5) ：データ送受信制御回路４、１０は、データ転送時の送受信制御を行うものである。
(6) ：ＭＰＵ１４は、ＨＩＣ内の各種制御を行うものである。
【００２１】
(7) ：データ圧縮回路１５は、ドライブ内で媒体に書き込むデータを圧縮処理するものである。
(8) ：チャネルデータ異常検出回路１２は、チャネルからのデータ転送時に異常（ハードウェア故障等）が発生したことを検出するものである。
【００２２】
(9) ：メモリ１３は、タイマー（ソフトタイマ）、タイマー閾値、最高データ転送速度等のデータを格納するものである。なお、このメモリ１３内のデータはＭＰＵ１４が管理する。
【００２３】
(10)：データ転送速度レジスタ１１はチャネルとの間のデータ転送速度を設定するものである。
§３：フローチャートによる磁気テープサブシステムの処理説明・・・図１６参照
図１６は従来例の処理フローチャートである。以下、図１６に基づいて、ＭＴＣ内のＨＩＣの処理を説明する。なお、Ｓ１〜Ｓ８は各処理ステップを示す。
【００２４】
先ず、ＭＰＵ１４は、最高データ転送速度を、データ送受信制御回路１０内のデータ転送速度レジスタ１１に設定する（Ｓ１）。そして、ＭＰＵ１４はメモリ１３に格納されているタイマーをリセットしてスタートさせ（Ｓ２）、データ転送を開始する（Ｓ３）。
【００２５】
その後、ＭＰＵ１４は、前記タイマーの値（経過時間）を、メモリ１３内のタイマー閾値と比較することで、タイマーによる時間監視を行う（Ｓ４）。この時間監視で、タイマー値がタイマー閾値を超えない場合は、チャネルデータ異常検出回路１２でエラーを検出したかどうかを判断する（Ｓ５）。その結果、エラーを検出しなければ、ＭＰＵ１４は上位装置（ホスト３）に正常終了報告を行う（Ｓ６）。
【００２６】
また、前記Ｓ４の処理で、タイマー値がタイマー閾値を超えた場合、及び前記Ｓ５の処理でエラーを検出した場合、ＭＰＵ１４は、現データ転送速度より低いデータ転送速度を、データ送受信制御回路１０内のデータ転送速度レジスタ１１に設定する（Ｓ７）。そして、上位装置に異常報告（リトライ指示）を行う（Ｓ８）。
【００２７】
§４：タイムチャートによるデータ転送時の説明・・・図１７参照
図１７は従来例のタイムチャートである。以下、図１７に基づいて、前記磁気テープサブシステムとホスト間で行うデータ転送を説明する。
【００２８】
なお、図のＡはチャネル、ＢはＭＴＣ、Ｃは最高データ転送速度（４．５Ｍ）、Ｄはタイマーの値（初期値＝０）、Ｅはタイマー閾値（１０）、Ｆはデータ転送速度レジスタの値（初期値＝４．５Ｍ）を示す（Ｍ：メガバイト／秒）。また、ｔ１〜ｔ８は各タイミングを示す。
【００２９】
ｔ１：上位装置（ホスト）からデータ転送の要求が発生した場合、ＭＰＵ１４は、メモリ１３に格納されている最高データ転送速度４．５Ｍでデータ転送を試みる。
【００３０】
ｔ２：前記データ転送処理中に、ＭＰＵ１４は、タイムアウトを検出し、上位装置にはリトライ指示を報告する。
ｔ３：既に、４．５Ｍでのデータ転送では、エラーが発生したため、ＭＰＵ１４は、データ転送を３．０Ｍに落として再試行（リトライ）を行う。
【００３１】
ｔ４：データ転送速度を落として実行することにより、成功した場合は、ＭＰＵ１４は、上位装置に正常終了を報告する。
ｔ５：ここで、新たにデータ転送の要求が発生した場合、ＭＰＵ１４は、再び最高データ転送速度である４．５Ｍでデータ転送を試みる。
【００３２】
ｔ６：やはりデータ転送中にタイムアウトを検出し、ＭＰＵ１４は、上位装置にはリトライを報告する。
ｔ７：ＭＰＵ１４は、データ転送速度を３．０Ｍに落として再試行する。
【００３３】
ｔ８：続いて、ＭＰＵ１４は、上位装置に正常終了を報告する。
【００３４】
【発明が解決しようとする課題】
前記のような従来のものにおいては、次のような課題があった。
(1) ：上位装置（ホスト）からのデータ転送要求（コマンド）が発生する度に、最高データ転送速度によりデータ転送を行う。従って、外部記憶装置の負荷が高くなり、リトライ処理の発生頻度が高くなる。
【００３５】
その結果、外部記憶装置が行うデータ記憶処理の遅延時間が多くなる。また、チャネルの占有時間が長くなる。
(2) ：タイマによる時間監視でエラーを検出しているが、この場合の監視時間は、外部記憶装置固有の最大データ量を転送できる時間を最低でも持つ必要がある。例えば、磁気テープサブシステムでは、通常使用されている転送時間よりも９０倍程度多い監視時間を持っている。
【００３６】
このため、正常なデータ転送ができれば、１分で完了するものが、故障や異常によりデータ転送のリトライが発生すると、９０分も時間がかかる状態が発生する。従って、データの記憶処理時間が大幅に遅れることになる。
【００３７】
(3) ：前記データ送受信制御回路等のハードウェア故障（または異常）の内、データ転送速度が高いために故障（または異常）となる場合がある。このような場合、データ転送速度を低く設定すれば、前記の故障（または異常）を救済できることがある。
【００３８】
しかし、従来は、上位装置からのデータ転送要求（コマンド）が発生する度に、最高データ転送速度によりデータ転送を行うため、前記のような故障があった場合、データ転送要求がある度に、データ転送のエラーが発生する。従って、リトライの回数が極めて多くなり、データの記憶処理が遅くなる。
【００３９】
(4) ：データ転送時のエラーは、転送データのデータパターンに起因している場合がある。ところで、一般に、外部記憶装置を所有している利用者は、同系統のデータを保存している。従って、前記データパターンに起因したエラーは、利用者に依存して多くなる場合がある。
【００４０】
このような場合、データ転送要求がある度に、データ転送のエラーが発生するため、リトライの回数が極めて多くなり、データの記憶処理が遅くなる。
本発明は、このような従来の課題を解決し、データ転送時のエラー回数を基に、データ転送速度を最適な速度に設定することにより、データ転送のリトライ回数を減少させ、データの記憶処理の遅延を少なくすることを目的とする。
【００４１】
【課題を解決するための手段】
図１は本発明の原理説明図であり、図１中、図１５〜図１７と同じものは、同一符号で示してある。また、４−１、４−２はデータ送受信制御回路、ＣＨ−ＡはチャネルＡ、ＣＨ−ＢはチャネルＢを示す。
【００４２】
本発明は、前記の目的を達成するため、外部記憶装置（例えば、磁気テープサブシステム）を、媒体に対しデータのリード／ライトを行うドライブと、前記ドライブの制御を行うコントローラ（ＭＴＣ５）で構成し、前記コントローラ（ＭＴＣ５）には、上位装置（ホスト）とのインターフェース制御を行うインターフェース制御手段（ＨＩＣ６）を設けた。
【００４３】
また、前記インターフェース制御手段（ＨＩＣ６）には、上位装置との間のデータ転送速度を設定するデータ転送速度設定手段（データ転送速度レジスタ１１）と、前記データ転送速度設定手段（データ転送速度レジスタ１１）に設定されたデータ転送速度でデータ転送を行うデータ送受信制御回路１０と、上位装置との間のデータ転送エラーを検出するエラー検出手段（チャネルデータ異常検出回路１２、メモリ１３、ＭＰＵ１４、メモリ１６）を設けた。
【００４４】
【作用】
前記構成に基づく本発明の作用を、図１に基づいて説明する。
(1) ：ＨＩＣ６内のＭＰＵ１４は、データ転送速度レジスタ１１に、メモリ１３に格納されている最高データ転送速度、或いはメモリ１６に格納されている実行可能データ転送速度を、以下に説明する処理に従って、データ転送速度レジスタ１１にセットする。
【００４５】
これにより、データ送受信制御回路１０では、前記データ転送速度レジスタ１１にセットされているデータ転送速度に従って、チャネルとの間でデータ転送を行う。
【００４６】
(2) ：ＭＰＵ１４では、チャネルとの間でデータ転送が行われている時、メモリ１３内のタイマーをスタートさせて、タイムアップを行い、このタイマーの値（経過時間）を、メモリ１３に格納されているタイマー閾値と比較することにより、データ転送のタイムオーバーを監視している。
【００４７】
また、ＭＰＵ１４では、チャネルデータ異常検出回路１２からの検出情報を基に、データ転送が異常状態になったか否かを監視している。
そして、前記タイムオーバー、或いはチャネルデータ異常検出回路からの異常検出により、データ転送が異常になった場合には、ＭＰＵ１４は、現データ転送速度よりも低いデータ転送速度を、データ転送速度レジスタ１１にセットし、チャネルに対してリトライ（再試行）を要求する。これにより、前記低い速度でのデータ転送が行われる。
【００４８】
このようにしてデータ転送のリトライを行い、データ転送が正常終了したら、ＭＰＵ１４は、メモリ１６に格納されているエラーカウンタの値をインクリメント（＋１）する。
【００４９】
そして、前記エラー検出時のリトライ（再試行）によるデータ転送が正常終了した際のデータ転送速度を、実行可能データ転送速度として、メモリ１６に記録しておく。
【００５０】
前記の処理を行い、チャネルから起動されたＭＴＣ５では、ＭＰＵ１４の制御により、次のようにして、データ転送速度レジスタ１１にデータ転送速度を設定してデータ転送を行う。
【００５１】
(3) ：データ転送エラーのエラー回数を、前記ＭＴＣ５毎にカウントし、前記エラー回数が、メモリ１３に格納されているエラー閾値を超えた場合には、ＭＰＵ１４は、同一ＭＴＣ５で行われるコマンド処理全てを、前記メモリ１６内の実行可能データ転送速度に切り換えて実行する。
【００５２】
(4) ：データ転送エラーのエラー回数を、前記上位装置のチャネル（ＣＨ−Ａ、ＣＨ−Ｂ）ポート毎にカウントし、前記エラー回数が、メモリ１３に格納されているエラー閾値を超えた場合には、ＭＰＵ１４は、同一チャネルポートで行われるコマンド処理全てを、前記メモリ１６内の実行可能データ転送速度に切り換えて実行する。
【００５３】
(5) ：データ転送エラーのエラー回数を、前記ドライブ機番毎にカウントし、前記エラー回数が、メモリ１３に格納されているエラー閾値を超えた場合には、ＭＰＵ１４は、同一ドライブ機番で行われるコマンド処理全てを、前記メモリ１６内の実行可能なデータ転送速度に切り換えて実行する。
【００５４】
(6) ：データ転送エラーのエラー回数を、前記媒体毎にカウントし、前記エラー回数が、メモリ１３に格納されているエラー閾値を超えた場合には、ＭＰＵ１４は、同一媒体で行われるコマンド処理全てを、前記メモリ１６内の実行可能なデータ転送速度に切り換えて実行する。
【００５５】
以上の処理を行うことにより、データ転送のエラー時に行うリトライ回数が減少する。従って、媒体へのデータの記憶処理時間が短くなる。
【００５６】
【実施例】
以下、本発明の実施例を図面に基づいて説明する。
図２〜図１４は、本発明の実施例を示した図であり、図２〜図１４中、図１、及び図１５〜図１７と同じものは、同一符号で示してある。また、図２〜図１４中、１０−１、１０−２はデータ送受信制御回路、１６−１、１６−２、１６−３、１６−４はメモリを示す。
【００５７】
（実施例１の説明）
以下、図２〜図４に基づいて、実施例１を説明する。実施例１は、データ転送エラーのエラー回数を、ＭＴＣ（ＭＴＣ０、ＭＴＣ１）毎にカウントし、前記エラー回数が、予め設定されたエラー閾値を超えた場合には、同一ＭＴＣで行われるコマンド処理全てを、実行可能データ転送速度に切り換えて実行する例である。
【００５８】
§１：磁気テープサブシステムの構成の説明・・・図２参照
図２は実施例１の装置構成図である。以下、図２に基づいて磁気テープサブシステムの構成を説明する。図示のように、ホストの２つのチャネル（ＣＨ−Ａ、ＣＨ−Ｂ）に、それぞれ、ＭＴＣ（ＭＴＣ０、ＭＴＣ１）とドライブからなる磁気テープサブシステムを接続している。
【００５９】
この場合、チャネルＡ（ＣＨ−Ａ）とチャネルＢ（ＣＨ−Ｂ）に、それぞれ磁気テープサブシステムのＭＴＣ（ＭＴＣ０、ＭＴＣ１）を接続する。そして、ホスト３のチャネルＡにはデータ送受信制御回路４−１を設け、チャネルＢにはデータ送受信制御回路４−２を設ける。
【００６０】
また、各ＭＴＣ５（ＭＴＣ０、ＭＴＣ１）には、それぞれ、ＨＩＣ６、ＭＢＢ７、ＣＩＴ８、ＦＭＴ９を設けるが、前記ＭＢＢ７とＣＩＴ８は、２つのＭＴＣで共用化する。
【００６１】
前記各ＭＴＣ（ＭＴＣ０、ＭＴＣ１）のＨＩＣ６には、それぞれ、データ送受信制御回路１０、チャネルデータ異常検出回路１２、ＭＰＵ１４、メモリ１３、メモリ１６、データ圧縮回路１５が設けてあり、前記データ送受信制御回路１０には、それぞれデータ転送速度レジスタ１１が設けてある。
【００６２】
前記各部の機能等は、次の通りである。
(1) ：ＨＩＣ６は、ホスト３との間の各種入出力処理（コマンドの処理等）を行うものである。
【００６３】
(2) ：ＦＭＴ９は、ドライブ内の磁気テープ（以下、単に「媒体」とも記す）に対するライト／リードデータのフォーマット処理等を行うものである。
(3) ：ＣＩＴ８は、ＨＩＣ６、及びＦＭＴ９がアクセスし、各種の制御情報（コマンドの制御情報等）を格納するもの（メモリ）である。
【００６４】
(4) ：ＭＢＢ７は、転送データを一時的に格納するデータバッファである。
(5) ：ドライブは、ＭＴＣ５の制御により、磁気テープを駆動して、データのリード／ライトを行う装置である。
【００６５】
(6) ：データ送受信制御回路４−１、４−２は、チャネルＣＨ−Ａ、ＣＨ−Ｂでのデータの送受信制御を行うものである。また、データ送受信制御回路１０はＭＴＣ５内でのデータの送受信制御を行うものである。
【００６６】
(7) ：チャネルデータ異常検出回路１２は、チャネルインターフェースの制御信号を基に、チャネルとのデータ転送が正常に行われたか否かを監視するものである。この場合、前記データ転送が正常か異常かの情報は、チャネルデータ異常検出回路１２からＭＰＵ１４へ通知する。
【００６７】
(8) ：ＭＰＵ１４は、ＭＴＣ内の各種制御を行うものである。ＭＰＵ１４が行う制御には、次のようなものがある。
▲１▼：メモリ１３、１６の各情報（データ）を管理して、エラーカウンタの制御（リセット／インクリメント等）や、タイマーの制御（タイマーのリセット／スタート等）を行う。
【００６８】
▲２▼：タイマーによる時間監視を行って、タイムオーバーによるデータ転送の異常（エラー）検出を行う。この場合、ＭＰＵ１４は、メモリ１３に格納されているタイマーの値とタイマー閾値との比較を行うことで、前記タイムオーバーを検出する。
【００６９】
▲３▼：メモリ１３にリトライ情報を書いたり、クリアしたりする。
▲４▼：メモリ１３の最高データ転送速度を、データ転送速度レジスタ１１に設定したり、メモリ１６の実行可能データ転送速度をデータ転送速度レジスタ１１に設定したりする。また、メモリ１６に、前記実行可能データ転送速度を書いたりする。
【００７０】
▲５▼：チャネルデータ異常検出回路１２からの検出情報、及び前記タイマーによる時間監視の情報（タイムオーバー）を基に、データ転送の異常（エラー）を検出する。
【００７１】
▲６▼：その他、ＨＩＣ６内の各種制御（例えば、データ圧縮回路へのデータ転送制御等）を行う。
(9) ：メモリ１３は、ＭＰＵ１４が制御を行う際に使用する各種データ等を格納するメモリであり、エラー閾値、タイマー（ソフトタイマ）、タイマー閾値、リトライ情報、最高データ転送速度等を格納する。
【００７２】
(10)：メモリ１６は、ＭＰＵ１４が制御を行う際に使用する各種データ等を格納するメモリであり、エラーカウンタ、実行可能データ転送速度等のデータを格納する。
【００７３】
(11)：データ圧縮回路１５は、媒体に書き込むデータの圧縮処理を行うものである。
(12)：データ転送速度レジスタ１１は、チャネルとの間のデータ転送速度を設定するものである。なお、データ転送速度レジスタ１１へのデータ転送速度の設定は、ＭＰＵ１４が行う。
【００７４】
§２：ＭＴＣの基本的な動作概要説明・・・図２参照
前記ＭＴＣの行う基本的な処理概要は次の通りである。
(1) ：先ず、ＭＴＣ５がホスト３からコマンドを受け取ると、ＭＴＣ５内のＨＩＣ６では、ＭＰＵ１４がコマンドを解析してその内容に従い、ＣＩＴ８に制御内容（ＦＭＴ９に対する命令）を書き込む（制御情報の書き込み）。
【００７５】
(2) ：ＦＭＴ９は、定期的にＣＩＴ８に書かれている制御情報を読み込み、処理する内容か否かを判断する。その結果例えば、リード／ライト動作であれば、ＦＭＴ９がフォーマット処理を行う。
【００７６】
この場合、ＨＩＣ６と、ＦＭＴ９間でＭＢＢ７を経由し、バッファリングを行いながらデータの転送を行う。
(3) ：その後、ＦＭＴ９がコマンドを実行し終えたならば、ＦＭＴ９はＣＩＴ８にコマンドの完了を書き込み、ＨＩＣ６がコマンドの終了をホスト３に報告して処理を終了する。
【００７７】
(4) ：ＭＰＵ１４は、データ転送速度レジスタ１１に、メモリ１３内の最高データ転送速度、或いはメモリ１６に格納されている実行可能データ転送速度を、以下に説明する処理に従って、データ転送速度レジスタ１１にセットする。
【００７８】
これにより、データ送受信制御回路１０では、前記データ転送速度レジスタ１１にセットされているデータ転送速度に従って、チャネルとの間でデータ転送を行う。
【００７９】
(5) ：ＭＰＵ１４では、チャネルとの間でデータ転送が行われている時、メモリ１３内のタイマーをスタートさせて、タイムアップを行い、このタイマーの値（経過時間）を、メモリ１３に格納されているタイマー閾値と比較することにより、データ転送のタイムオーバーを監視している。
【００８０】
また、ＭＰＵ１４では、チャネルデータ異常検出回路１２からの検出情報を基に、データ転送が異常状態になったか否かを監視している。そして、前記タイムオーバー、或いはチャネルデータ異常検出回路からの異常検出があって、データ転送が異常（エラー）となった場合には、ＭＰＵ１４は、現データ転送速度よりも低いデータ転送速度を、データ転送速度レジスタ１１にセットし、チャネルに対してリトライを要求する。これにより、前記低い速度でのデータ転送が行われる。
【００８１】
§３：実施例１の処理説明・・・図３参照
図３は実施例１の処理フローチャートである。以下、図３に基づいて実施例１の処理を説明する。なお、Ｓ１１〜Ｓ２５は各処理ステップを示す。
【００８２】
ＭＰＵ１４は、メモリ１６内のエラーカウンタの値と、メモリ１３のエラー閾値を比較することにより、エラーカウンタの値（エラー回数）がエラー閾値を超えたか否かを判断する（Ｓ１１）。
【００８３】
その結果、エラーカウンタの値がエラー閾値を超えていなければ、ＭＰＵ１４は、メモリ１３に格納されている最高データ転送速度を読み出して、データ送受信制御回路１０のデータ転送速度レジスタ１１に設定し（Ｓ１２）、エラーカウンタの値がエラー閾値を超えていた場合は、メモリ１６に格納されている実行可能データ転送速度を読み出して、データ送受信制御回路１０のデータ転送速度レジスタ１１に設定する（Ｓ１３）。
【００８４】
その後、ＭＰＵ１４は、メモリ１３に格納されているタイマーをリセットして、スタートさせ（Ｓ１４）、データ送受信制御回路１０に指示を出して、データ転送を開始する（Ｓ１５）。
【００８５】
データ転送開始後、ＭＰＵ１４は、メモリ１３に格納されているタイマーの値をタイマー閾値と比較し、タイマー値がタイマー閾値を超えたか否かを判断し（Ｓ１６）、タイマー閾値を超えない場合は、チャネルデータ異常検出回路１２でエラーを検出したか否かを判断する（Ｓ１７）。
【００８６】
その結果、エラーを検出しない場合は、ＭＰＵ１４は、メモリ１３内にリトライ情報が記録されているか否かを判断する（Ｓ１８）。その結果、リトライ情報が記録されていない場合は、上位装置（ホスト）に正常終了を報告する（Ｓ２２）。
【００８７】
しかし、リトライ情報が記録されていた場合は（Ｓ１８）、エラーが発生したので、ＭＰＵ１４はメモリ１６内のエラーカウンタの値をインクリメント（＋１）し（Ｓ１９）、メモリ１６に実行可能データ転送速度を記録する（Ｓ２０）。
【００８８】
その後、ＭＰＵ１４は、メモリ１３に格納されているリトライ情報記録をクリアし（Ｓ２１）、上位装置に正常終了報告をする（Ｓ２２）。
また、前記Ｓ１６の処理で、タイマーの値がタイマー閾値を超えた場合、及び前記Ｓ１７の処理で、エラーを検出した場合は、ＭＰＵ１４は、現データ転送速度より低いデータ転送速度を、データ送受信制御回路１０内のデータ転送速度レジスタ１１に設定する（Ｓ２３）。
【００８９】
そして、ＭＰＵ１４は、メモリ１３内にリトライ情報を記録し（Ｓ２４）、上位装置に異常（リトライ指示）を報告する（Ｓ２５）。
§４：タイムチャートによる実施例１の処理説明・・・図４参照
図４は実施例１のタイムチャートである。以下、図４に基づいて、実施例１の処理を説明する。
【００９０】
なお、図のＡはチャネル、ＢはＭＴＣ、Ｃは最高データ転送速度（４．５Ｍ）、Ｄはタイマーの値（初期値＝０）、Ｅはタイマー閾値（１０）、Ｆはエラーカウンタの値（初期値＝０）、Ｇはエラー閾値（２）、Ｈは実行可能転送速度（初期値＝０）、Ｉはデータ転送速度レジスタの値（初期値＝４．５Ｍ）を示す（Ｍ：メガバイト／秒）。また、ｔ１〜ｔ１０は各タイミングを示す。
【００９１】
ｔ１：上位装置（ホスト）からデータ転送の要求が発生した場合、ＭＰＵ１４は、エラーカウンタの値と、エラー閾値を確認する。その結果、エラーカウンタの値がエラー閾値を超えていない場合は、最高データ転送速度である４．５Ｍでデータ転送を試みる。
【００９２】
ｔ２：前記データ転送中に、ＭＰＵ４はタイムアウト（タイマーの値≧タイマー閾値）を検出し、上位装置にリトライ指示を報告する。
ｔ３：既に、４．５Ｍでのデータ転送ではエラーが発生したため、ＭＰＵ１４は、データ転送速度を３．０Ｍに落として再試行（リトライ）する。
【００９３】
ｔ４：データ転送速度を落として実行することにより、データ転送が成功した場合は、ＭＰＵ１４は、上位装置に正常終了を報告し、メモリ１６に格納されているエラーカウンタをインクリメント（＋１）する。また、ＭＰＵ１４は、本リトライで救済できるデータ転送速度（３．０Ｍ）を実行可能データ転送速度としてメモリ１６に記録する。
【００９４】
ｔ５：ここで、新たにチャネルからデータ転送要求が発生した場合、ＭＰＵ１４は、エラーカウンタの値と、エラー閾値を確認する。ここでは、エラーカウンタの値がエラー閾値を超えていないため、最高データ転送速度である４．５Ｍでデータ転送を試みる。
【００９５】
ｔ６：やはりデータ転送中にタイムアウトを検出し、ＭＰＵ１４は、上位装置にはリトライを報告する。
ｔ７：ＭＰＵ１４は、データ転送速度を３．０Ｍに落として再試行（リトライ）する。
【００９６】
ｔ８：続いてＭＰＵ１４は、上位装置に正常終了を報告し、前記ｔ４の時と同じ処理を行う。
ｔ９：新たにデータ転送の要求が発生した場合、ＭＰＵ１４は、エラーカウンタの値とエラー閾値を比較して、エラーカウンタの値がエラー閾値を超えているか否かを確認する。
【００９７】
ここでは、エラーカウンタの値とエラー閾値とが一致した（エラーカウンタの値＝エラー閾値＝２）ため、ＭＰＵ１４は、最高データ転送速度である４．５Ｍでのデータ転送は不可能であると判断し、過去に実行できたデータ転送速度（メモリ１６に格納されている実行可能転送速度）を採用し処理を行う。
【００９８】
すなわち、先にメモリ１６に格納しておいた実行可能データ転送速度である３．０Ｍのデータ転送速度を、データ転送速度レジスタ１１に設定してデータ転送を試みる。
【００９９】
ｔ１０：データ転送が正常に終了したならば、ＭＰＵ１４は、上位装置に正常終了を報告する。
（実施例２の説明）・・・図５、図６、図７参照
実施例２は、データ転送エラーのエラー回数を、上位装置のチャネル（ＣＨ−Ａ、ＣＨ−Ｂ）ポート毎にカウントし、前記エラー回数が、予め設定したエラー閾値を超えた場合には、同一チャネルポートで行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行する例である。
【０１００】
§１：実施例２の磁気テープサブシステムの構成説明・・・図５参照
図５は実施例２の装置構成図である。以下、図５に基づいて、磁気テープサブシステムの構成を説明する。
【０１０１】
この例は、チャネルＡ、及びチャネルＢの各チャネルポートに対応して、ＨＩＣ内に２組のデータ送受信制御回路と、メモリ（チャネルＡ用、チャネルＢ用）を設けた例である。
【０１０２】
すなわち、ＭＴＣ５には、データ送受信制御回路１０−１、１０−２と、メモリ１６−１、１６−２と、チャネルデータ異常検出回路１２と、ＭＰＵ１４と、データ圧縮回路１５と、メモリ１３を設ける。また、前記データ送受信制御回路１０−１、１０−２には、それぞれデータ転送速度レジスタ１１−１、１１−２を設ける。
【０１０３】
前記構成において、データ送受信制御回路１０−１と、メモリ１６−１はチャネルＡ（ＣＨ−Ａ）用であり、データ送受信制御回路１０−２と、メモリ１６−２はチャネルＢ（ＣＨ−Ｂ）用である。
【０１０４】
なお、前記各部の機能は、前記実施例１の各部と同じなので説明は省略する。例えば、データ送受信制御回路１０−１、１０−２は前記データ送受信制御回路１０と同じであり、メモリ１６−１、１６−２は、前記メモリ１６と同じであり、データ転送速度レジスタ１１−１、１１−２はデータ転送速度レジスタ１１と同じである。
【０１０５】
§２：実施例２の処理説明・・・図６参照
図６は実施例２の処理フローチャートである。以下、図６に基づいて実施例２の処理を説明する。なお、Ｓ３１〜Ｓ４８は各処理ステップを示す。
【０１０６】
ＭＴＣ５に対して、チャネルＡ（ＣＨ−Ａ）からの起動があると（Ｓ３１）、ＭＰＵ１４では、メモリ１６−１に格納されているチャネルＡ用のエラーカウンタの値と、実行可能データ転送速度を読み出す（Ｓ３２）。
【０１０７】
しかし、チャネルＢ（ＣＨ−Ｂ）からの起動であれば、ＭＰＵ１４は、メモリ１６−２内のチャネルＢ用のエラーカウンタの値と、実行可能データ転送速度を読み出す（Ｓ３３）。
【０１０８】
その後、ＭＰＵ１４は、メモリ１６−１、或いはメモリ１６−２内のエラーカウンタの値が、メモリ１３内のエラー閾値を超えたか否かを判断し（Ｓ３４）、超えていない場合は、最高データ転送速度を、起動があった方のデータ送受信制御回路（１０−１、又は１０−２）内のデータ転送速度レジスタ（１１−１、又は１１−２）に設定する（Ｓ３５）。
【０１０９】
しかし、Ｓ３４の処理で、エラーカウンタの値がエラー閾値を超えていた場合は、メモリ１６−１、または１６−２に格納されている実行可能データ転送速度を、起動のあった方のデータ送受信制御回路１０のデータ転送速度レジスタ（１１−１、または１１−２）に設定する（Ｓ３６）。
その後、ＭＰＵ１４は、メモリ１３内のタイマーをリセットして、スタートさせ（Ｓ３７）、データ転送を開始する（Ｓ３８）。データ転送開始後、ＭＰＵ１４は、タイマーの値がタイマー閾値を超えたか否かを判断し（Ｓ３９）、タイマー閾値を超えない場合は、チャネルデータ異常検出回路１２でエラーを検出したか否かを判断する（Ｓ４０）。
【０１１０】
その結果、エラーを検出しない場合は、ＭＰＵ１４は、メモリ１３内にリトライ情報が記録されているか否かを判断する（Ｓ４１）。その結果、リトライ情報が記録されていない場合は、上位装置に正常終了を報告する（Ｓ４５）。
【０１１１】
しかし、リトライ情報が記録されていた場合は（Ｓ４１）、エラーが発生したため、ＭＰＵ１４はメモリ１６−１、または１６−２に格納されているエラーカウンタの値をインクリメント（＋１）し（Ｓ４２）、実行可能データ転送速度をメモリ１６−１、または１６−２に記録する（Ｓ４３）。
【０１１２】
その後、ＭＰＵ１４は、メモリ１３内のリトライ情報記録をクリアし（Ｓ４４）、上位装置に正常終了報告をする（Ｓ４５）。
また、前記Ｓ３９の処理で、タイマーの値がタイマー閾値を超えた場合、及び前記Ｓ４０の処理で、エラーを検出した場合は、ＭＰＵ１４は、現データ転送速度より低いデータ転送速度を、データ送受信制御回路１０内のデータ転送速度レジスタ１１−１、または１１−２に設定する（Ｓ４６）。
【０１１３】
そして、ＭＰＵ１４は、メモリ１３内にリトライ情報を記録し（Ｓ４７）、上位装置に異常（リトライ指示）を報告する（Ｓ４８）。
以上のようにして、データ転送エラーのエラー回数を、上位装置のチャネル（ＣＨ−Ａ、ＣＨ−Ｂ）ポート毎にカウントし、前記エラー回数が、予め設定したエラー閾値を超えた場合には、ＭＰＵ１４は、同一チャネルポートで行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行する。
【０１１４】
§３：タイムチャートによる実施例２の処理説明・・・図７参照
図７は実施例２のタイムチャートである。以下、図７に基づいて、実施例２の処理を説明する。
【０１１５】
なお、図のＡはチャネルＡ、ＢはチャネルＢ、ＣはＭＴＣ、Ｄは最高データ転送速度（４．５Ｍ）、Ｅはタイマーの値（初期値＝０）、Ｆはタイマー閾値（１０）、ＧはチャネルＡのエラーカウンタの値（初期値＝０）、ＨはチャネルＢのエラーカウンタの値（初期値＝０）、Ｉはエラー閾値（１）、ＪはチャネルＡの実行可能転送速度（初期値＝０）、ＫはチャネルＢの実行可能転送速度（初期値＝０）、Ｌはデータ転送速度レジスタの値（初期値＝４．５）を示す。また、ｔ１〜ｔ１０は各タイミングを示す。
【０１１６】
ｔ１：チャネルＢからデータ転送の要求（コマンド）が発生した場合、ＭＰＵ１４は、チャネルＢ用のエラーカウンタの値と、エラー閾値を確認する。その結果、エラーカウンタの値がエラー閾値を超えていた場合は、最高データ転送速度である４．５Ｍでデータ転送を試みる。
【０１１７】
ｔ２：前記データ転送中に、ＭＰＵ１４はタイムアウトを検出し、上位装置にリトライ指示を報告する。
ｔ３：既に、４．５Ｍでのデータ転送では、エラーが発生したため、データ転送速度を３．０Ｍに落として再試行（リトライ）する。
【０１１８】
ｔ４：データ転送速度を落として実行することにより成功した場合は、ＭＰＵ１４は、上位装置に正常終了を報告し、エラーカウンタをインクリメント（＋１）する。また、本リトライで救済できるデータ転送速度（３．０Ｍ）を実行可能データ転送速度としてメモリ１６−２に記録する。
【０１１９】
ｔ５：ここで、新たにチャネルＢからデータ転送の要求が発生した場合、ＭＰＵ１４は、チャネルＢ用のエラーカウンタの値と、エラー閾値を確認する。ここで、エラーカウンタの値とエラー閾値が一致したため、本チャネルを介してのデータ転送においては、３．０Ｍ（実行可能データ転送速度）で行うことにする。
【０１２０】
ｔ６：データ転送が正常に終了したならば、ＭＰＵ１４は、上位装置に正常終了を報告する。
ｔ７：ここで、新たにチャネルＡからデータ転送の要求（コマンド）が発生した場合、ＭＰＵ１４は、チャネルＡ用のエラーカウンタの値とエラー閾値を確認する。その結果、エラーカウンタがエラー閾値を超えていない場合は、メモリ１３内の最高データ転送速度である４．５Ｍでデータ転送を試みる。
【０１２１】
ｔ８：データ転送が正常に終了したならば、ＭＰＵ１４は、上位装置に正常終了を報告する。
ｔ９：続いて、チャネルＢからデータ転送の要求が発生した場合、既にチャネルＢにおいて、エラーカウンタがエラー閾値を超えているため、３．０Ｍ（実行可能データ転送速度）でデータ転送を行う。
【０１２２】
ｔ１０：データ転送が正常に終了したならば、ＭＰＵ１４は、上位装置に正常終了を報告する。
（実施例３の説明）・・・図８、図９、図１０参照
実施例３は、データ転送エラーのエラー回数を、ドライブ機番毎にカウントし、前記エラー回数が、予め設定されたエラー閾値を超えた場合には、同一ドライブ機番で行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行する例である。
【０１２３】
§１：実施例３の磁気テープサブシステムの構成説明・・・図８参照
図８は実施例３の装置構成図である。以下、図８に基づいて、磁気テープサブシステムの構成を説明する。
【０１２４】
この例では、ＭＴＣに複数のドライブが接続された装置において、ＭＴＣ内のＨＩＣに、各ドライブに対応したメモリを設け、前記各メモリに、それぞれドライブ毎のエラーカウンタを設ける。
【０１２５】
図示のように、ホスト３に接続されたＭＴＣ５には、複数のドライブ（ドライブ＃０、ドライブ＃１）が接続されている。そして、ＭＴＣ５には、ＨＩＣ６、ＭＢＢ７、ＣＩＴ８、ＦＭＴ９を設け、前記ＨＩＣ６には、データ送受信制御回路１０、チャネルデータ異常検出回路１２、メモリ１３、ＭＰＵ１４、データ圧縮回路１５、メモリ１６−３、メモリ１６−４が設けてある。
【０１２６】
この場合、メモリ１６−３は、ドライブ＃０に対応して設けたメモリであり、メモリ１６−４はドライブ＃１に対応して設けたメモリである。前記メモリ１６−３、１６−４は、実施例１のメモリ１６と同じデータを格納するものである。なお、他の構成は、前記実施例１、及び実施例２と同じなので、説明は省略する。
【０１２７】
§２：実施例３の処理説明・・・図９参照
図９は実施例３の処理フローチャートである。以下、図９に基づいて実施例３の処理を説明する。なお、Ｓ５１〜Ｓ６８は各処理ステップを示す。
【０１２８】
上位装置から、ドライブ＃０に起動がかかった場合（Ｓ５１）、ＭＰＵ１４では、メモリ１６−３内のドライブ＃０用のエラーカウンタの値と、実行可能データ転送速度を読み出す（Ｓ５２）。また、ドライブ＃１への起動であれば、ＭＰＵ１４は、メモリ１６−４内のドライブ＃１用のエラーカウンタの値と、実行可能データ転送速度を読み出す（Ｓ５３）。
【０１２９】
その後、ＭＰＵ１４は、前記読み出したエラーカウンタの値が、メモリ１３内のエラー閾値を超えたか否かを判断し（Ｓ５４）、超えていない場合は、最高データ転送速度を、データ送受信制御回路１０内のデータ転送速度レジスタ１１に設定する（Ｓ５５）。
【０１３０】
しかし、Ｓ５４の処理で、エラーカウンタの値がエラー閾値を超えていた場合は、当該ドライブに関する実行可能データ転送速度を、データ送受信制御回路１０のデータ転送速度レジスタ１１に設定する（Ｓ５６）。
【０１３１】
その後、ＭＰＵ１４は、メモリ１３内のタイマーをリセットして、スタートさせ（Ｓ５７）、データ転送を開始する（Ｓ５８）。データ転送開始後、ＭＰＵ１４は、タイマーの値がタイマー閾値を超えたか否かを判断し（Ｓ５９）、タイマー閾値を超えない場合は、チャネルデータ異常検出回路１２でエラーを検出したか否かを判断する（Ｓ６０）。
【０１３２】
その結果、エラーを検出しない場合は、ＭＰＵ１４は、メモリ１３内にリトライ情報が記録されているか否かを判断する（Ｓ６１）。その結果、リトライ情報が記録されていない場合は、ＭＰＵ１４は、上位装置に正常終了を報告する（Ｓ６５）。
【０１３３】
しかし、リトライ情報が記録されていた場合は（Ｓ６１）、ＭＰＵ１４はメモリ１６−３、または１６−４に格納されているエラーカウンタの値をインクリメント（＋１）し（Ｓ６２）、実行可能データ転送速度をメモリ１６−３、または１６−４に格納する（Ｓ６３）。
【０１３４】
その後、ＭＰＵ１４は、メモリ１３内のリトライ情報記録をクリアし（Ｓ６４）、上位装置に正常終了報告をする（Ｓ６５）。
また、前記Ｓ５９の処理で、タイマー値がタイマー閾値を超えた場合、及び前記Ｓ６０の処理で、エラーを検出した場合は、ＭＰＵ１４は、現データ転送速度より低いデータ転送速度を、データ送受信制御回路１０内のデータ転送速度レジスタ１１に設定する（Ｓ６６）。
【０１３５】
そして、ＭＰＵ１４は、メモリ１３内にリトライ情報を記録し（Ｓ６７）、上位装置に異常（リトライ指示）を報告する（Ｓ６８）。
§３：タイムチャートによる実施例３の処理説明・・・図１０参照
図１０は実施例３のタイムチャートである。以下、図１０に基づいて、実施例３の処理を説明する。
【０１３６】
なお、図のＡはチャネル、ＢはＭＴＣ、Ｃは最高データ転送速度（４．５Ｍ）、Ｄはタイマーの値（初期値＝０）、Ｅはタイマー閾値（１０）、Ｆはドライブ＃０用のエラーカウンタの値（初期値＝０）、Ｇはドライブ＃１用のエラーカウンタの値（初期値＝０）、Ｈはエラー閾値（１）、Ｉはドライブ＃０用の実行可能転送速度（初期値＝０）、Ｊはドライブ＃１用の実行可能転送速度（初期値＝０）、Ｋはデータ転送速度レジスタの値（初期値＝４．５）を示す。また、ｔ１〜ｔ１０は各タイミングを示す。
【０１３７】
ｔ１：上位装置（チャネルＡ）からドライブ＃０に対し、データ転送の要求が発生した場合、ＭＰＵ１４は、メモリ１６−３に格納されているドライブ＃０用のエラーカウンタの値と、メモリ１３に格納されているエラー閾値を確認する。その結果、エラーカウンタの値がエラー閾値を超えていた場合は、ＭＰＵ１４は、最高データ転送速度である４．５Ｍでデータ転送を試みる。
【０１３８】
ｔ２：前記データ転送中に、ＭＰＵ１４はタイムアウトを検出し、上位装置にリトライ指示を報告する。
ｔ３：既に、４．５Ｍでのデータ転送では、エラーが発生したため、ＭＰＵ１４は、データ転送速度を３．０Ｍに落として再試行する。
【０１３９】
ｔ４：データ転送速度を落として実行することにより成功した場合は、ＭＰＵ１４は、上位装置に正常終了を報告し、メモリ１６−３に格納されているドライブ＃０用のエラーカウンタの値をインクリメント（＋１）する。
【０１４０】
また、ＭＰＵ１４は、本リトライで救済できるデータ転送速度（３．０Ｍ）を実行可能データ転送速度としてメモリ１６−３に記録する。
ｔ５：続いて、チャネルＡよりドライブ＃１にデータ転送の要求が発生した場合、ＭＰＵ１４は、メモリ１６−４に格納されているドライブ＃１用のエラーカウンタの値と、メモリ１３に格納されているエラー閾値を確認する。ここでは、エラー閾値を超えていないため、最高データ転送速度である４．５Ｍでデータ転を試みる。
【０１４１】
ｔ６：データ転送が正常に終了したならば、ＭＰＵ１４は、上位装置に正常終了を報告する。
ｔ７：そして、再び、チャネルＡよりドライブ＃０にデータ転送の要求が発生した場合、ＭＰＵ１４は、メモリ１６−３に格納されているドライブ＃０用のエラーカウンタと、メモリ１３に格納されているエラー閾値を確認する。
【０１４２】
この時、ドライブ＃０用のエラーカウンタの値と、エラー閾値が一致しているため、本ドライブを介するデータ転送処理は、全て３．０Ｍに落として実行する。
【０１４３】
ｔ８：データ転送が正常に終了したならば、ＭＰＵ１４は、上位装置に正常終了を報告する。
ｔ９：続いて、チャネルＡより、ドライブ＃１に対し、データ転送要求が発生した場合、ＭＰＵ１４は、メモリ１６−４に格納されているドライブ＃１用のエラーカウンタの値と、メモリ１３に格納されているエラー閾値を確認し、エラー閾値を超えていないため、最高データ転送速度である４．５Ｍでデータ転送を試みる。
【０１４４】
ｔ１０：データ転送が正常に終了したならば、ＭＰＵ１４は、上位装置に正常終了を報告する。
（実施例４の説明）・・・図１１〜図１４参照
実施例４は、データ転送エラーのエラー回数を、媒体毎にカウントし、前記エラー回数が、メモリ１３に格納されているエラー閾値を超えた場合には、同一媒体で行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行するようにした例である。
【０１４５】
§１：実施例４の磁気テープサブシステムの構成説明・・・図１１参照
図１１は実施例４の装置構成図である。以下、図１１に基づいて、磁気テープサブシステムの構成を説明する。
【０１４６】
実施例４では、ＭＴＣに接続されたドライブの各媒体毎に、ＨＩＣ内にエラーカウンタを設ける。図示のように、ホスト３に接続されたＭＴＣ５には、ドライブ（ドライブ＃０）が接続されていて、媒体（媒体１、媒体２）が交換出来るようになっている。
【０１４７】
そして、ＭＴＣ５には、ＨＩＣ６、ＭＢＢ７、ＣＩＴ８、ＦＭＴ９を設け、前記ＨＩＣ６には、データ送受信制御回路１０、チャネルデータ異常検出回路１２、メモリ１３、ＭＰＵ１４、データ圧縮回路１５、メモリ１６が設けてある。
【０１４８】
前記各部の構成は、前記実施例１、実施例２、及び実施例３と同じなので、説明は省略する。
§２：実施例４の処理１（データ転送時の処理）の説明・・・図１２参照
図１２は実施例４の処理フローチャート１である。以下、図１２に基づいて実施例４の処理１（データ転送時の処理）を説明する。なお、Ｓ７１〜Ｓ８５は各処理ステップを示す。
【０１４９】
ＭＰＵ１４は、メモリ１６内のエラーカウンタの値が、メモリ１３内のエラー閾値を超えたか否かを判断し（Ｓ７１）、超えていない場合は、最高データ転送速度を、データ送受信制御回路１０内のデータ転送速度レジスタ１１に設定する（Ｓ７２）。
【０１５０】
しかし、Ｓ７１の処理で、エラーカウンタの値がエラー閾値を超えていた場合は、メモリ１６に格納されている実行可能データ転送速度を、データ送受信制御回路１０のデータ転送速度レジスタ１１に設定する（Ｓ７３）。
【０１５１】
その後、ＭＰＵ１４は、メモリ１３内のタイマーをリセットして、スタートさせ（Ｓ７４）、データ転送を開始する（Ｓ７５）。データ転送開始後、ＭＰＵ１４は、タイマーの値がタイマー閾値を超えたか否かを判断し（Ｓ７６）、タイマー閾値を超えない場合は、チャネルデータ異常検出回路１２でエラーを検出したか否かを判断する（Ｓ７７）。
【０１５２】
その結果、エラーを検出しない場合は、ＭＰＵ１４は、メモリ１３内にリトライ情報が記録されているか否かを判断する（Ｓ７８）。そして、メモリ１３にリトライ情報が記録されていない場合は、ＭＰＵ１４は、上位装置に正常終了を報告する（Ｓ８２）。
【０１５３】
しかし、リトライ情報が記録されていた場合は（Ｓ７８）、ＭＰＵ１４はメモリ１６内のエラーカウンタの値をインクリメント（＋１）し（Ｓ７９）、実行可能データ転送速度をメモリ１６に記録する（Ｓ８０）。その後、ＭＰＵ１４は、メモリ１３内のリトライ情報をクリアし（Ｓ８１）、上位装置に正常終了報告をする（Ｓ８２）。
【０１５４】
また、前記Ｓ７６の処理で、タイマーの値がタイマー閾値を超えた場合、及び前記Ｓ７７の処理で、エラーを検出した場合は、ＭＰＵ１４は、現データ転送速度より低いデータ転送速度を、データ送受信制御回路１０内のデータ転送速度レジスタ１１に設定する（Ｓ８３）。
【０１５５】
そして、ＭＰＵ１４は、メモリ１３内にリトライ情報を記録し（Ｓ８４）、上位装置に異常（リトライ指示）を報告する（Ｓ８５）。
§３：実施例４の処理２（磁気テープのマウント時の処理）説明・・・図１３参照
図１３は実施例４の処理フローチャート２である。以下、図１３に基づいて、実施例４の処理２（磁気テープのマウント時の処理）を説明する。なお、Ｓ９１、Ｓ９２は処理ステップを示す。
【０１５６】
この処理は、磁気テープ（媒体）を交換する際に行う磁気テープのマウント時の処理である。磁気テープをマウントする場合は、先ず、当該ドライブ（この例ではドライブ＃０）に対応してメモリ１６に格納されているエラーカウンタをクリアする（Ｓ９１）。
【０１５７】
次に、当該ドライブに対応してメモリ１６に格納されている実行可能転送速度をクリアする（Ｓ９２）。以降、図１２の処理を行う。
なお、前記実施例３の場合は、ドライブ依存という判断のため、当該ドライブを介するデータ転送処理は、全て前記実施例３の処理の対象となる。この場合、リセット条件としては、ＩＭＰＬ（イニシャル・マイクロプログラム・ローダ）のロード時、或いは電源投入時である。
【０１５８】
これに対して実施例４では、媒体依存という判断のため、媒体のマウント時にエラーカウンタ、及び実行可能データ転送速度をリセットする。つまり、媒体が交換された場合には、再び、最高データ転送速度によりデータ転送を行う。
【０１５９】
§４：タイムチャートによる実施例４の処理説明・・・図１４参照
図１４は実施例４のタイムチャートである。以下、図１４に基づいて、実施例４の処理を説明する。
【０１６０】
なお、図のＡはチャネル、ＢはＭＴＣ、Ｃは最高データ転送速度（４．５Ｍ）、Ｄはタイマーの値（初期値＝０）、Ｅはタイマー閾値（１０）、Ｆはエラーカウンタの値（初期値＝０）、Ｇはエラー閾値（１）、Ｈは実行可能転送速度（初期値＝０）、Ｉはデータ転送速度レジスタの値（初期値＝４．５）を示す。また、ｔ１〜ｔ８は各タイミングを示す。
【０１６１】
ｔ１：上位装置からデータ転送の要求が発生した場合、ＭＰＵ１４は、メモリ１６に格納されているエラーカウンタの値と、メモリ１３に格納されているエラー閾値を確認する。その結果、エラーカウンタの値がエラー閾値を超えていない場合は、ＭＰＵ１４は、最高データ転送速度である４．５Ｍでデータ転送を試みる。
【０１６２】
ｔ２：前記データ転送中に、ＭＰＵ１４はタイムアウトを検出し、ＭＰＵ１４は、上位装置にリトライ指示を報告する。
ｔ３：既に、４．５Ｍでのデータ転送では、エラーが発生したため、ＭＰＵ１４は、データ転送速度を３．０Ｍに落として再試行する。
【０１６３】
ｔ４：データ転送速度を落として実行することにより成功した場合は、ＭＰＵ１４は、上位装置に正常終了を報告し、メモリ１６に格納されているエラーカウンタの値をインクリメント（＋１）する。また、本リトライで救済できるデータ転送速度（３．０Ｍ）を実行可能データ転送速度として、メモリ１６に記録する。
【０１６４】
ｔ５：続いて、データ転送の要求が発生した場合、ＭＰＵ１４は、メモリ１６に格納されているエラーカウンタの値と、エラー閾値を確認する。この時、エラーカウンタの値とエラー閾値が一致しているため、ＭＰＵ１４は、データ転送速度を全て３．０Ｍに落として実行する。
【０１６５】
ｔ６：データ転送が正常に終了したならば、ＭＰＵ１４は、上位装置に正常終了を報告する。ここで、媒体（磁気テープ）の入れ換えを行う（デマウント→マウント）。この時、ＭＰＵ１４は、メモリ１６に格納されているエラーカウンタ、及び実行可能データ転送速度をリセットする。
【０１６６】
ｔ７：そして、再び、データ転送の要求が発生した場合、ＭＰＵ１４は、メモリ１６に格納されているエラーカウンタの値と、メモリ１３に格納されているエラー閾値を確認する。この時、エラーカウンタの値はリセットされていて、エラー閾値を超えていないため、ＭＰＵ１４は、最高データ転送速度である４．５Ｍでデータ転送を試みる。
【０１６７】
ｔ８：データ転送が正常に終了したならば、ＭＰＵ１４は、上位装置に正常終了を報告する。
（他の実施例）
以上実施例について説明したが、本発明は次のようにしても実施可能である。
【０１６８】
(1) ：磁気テープサブシステムに限らず、可換媒体を使用する他の同様な外部記憶装置（例えば、光磁気ディスク装置）にも同様に適用可能である。
(2) ：前記実施例４では、ドライブの数を１個として説明しているが、このような例に限らず、ドライブの数は、任意の数（複数）でも前記実施例４と同様に実施可能である。
【０１６９】
(3) ：前記エラーカウンタ、及びタイマーは、ハードウェアで構成することも可能である。
【０１７０】
【発明の効果】
以上説明したように、本発明によれば次のような効果がある。
(1) ：ＭＴＣ内の各部の故障、チャネル異常、ドライブの異常、データパターンの異常等が発生した場合には、データ転送が異常終了（エラー）する。このような場合、過去に実行可能であったデータ転送速度を用いてデータ転送を行うことにより、ホストと磁気テープサブシステム間のリトライ処理を削減することができる。また、チャネルの占有時間を少なくすることができる。
【０１７１】
(2) ：データ転送時のリトライ回数が削減できるから、媒体へのデータ記憶処理が短時間で終了する。
(3) ：従来は、上位装置からのデータ転送要求（コマンド）が発生する度に、最高データ転送速度によりデータ転送を行っていたが、本発明では、エラー回数が一定回数に達すると、過去に実行可能であったデータ転送速度を用いてデータ転送を行う。従って、その後行うデータ転送のリトライ処理が大幅に削減でき、媒体へのデータの記憶処理時間が短縮できる。
【０１７２】
(4) ：データ送受信制御回路等のハードウェア故障（または異常）の内、データ転送速度が高いために故障（または異常）となる場合がある。このような場合、データ転送速度を低く設定すれば、前記の故障（または異常）を救済できることがある。
【０１７３】
しかし、最初からデータ転送速度を低く設定しておくと、リトライ回数は減るが、データ転送に時間がかかり、媒体へのデータ記憶処理が遅くなる。
このため、本発明では、最初は最高のデータ転送速度でデータ転送を行い、エラー回数が一定回数に達したら、過去に実行可能であったデータ転送速度を用いてデータ転送を行うようにしている。
【０１７４】
このため、リトライ回数を減らして、データ転送速度を可能な限り高速に設定し、効率よくデータ転送を行うことができる。その結果、データの記憶処理も効率よく行うことができる。
【０１７５】
(5) ：データ転送時のエラーは、転送データのデータパターンに起因している場合がある。ところで、一般に、外部記憶装置を所有している利用者は、同系統のデータを保存している。従って、前記データパターンに起因したエラーは、利用者に依存して多くなる場合がある。
【０１７６】
このような場合、本発明では、エラー回数が一定回数に達したら、過去に実行可能であったデータ転送速度を用いてデータ転送を行うようにしている。
このため、前記のようなデータパターンに起因したエラーも防止することができ、リトライ回数を減らして、効率よくデータ転送を行うことができる。その結果、データの記憶処理も効率よく行うことができる。
【０１７７】
(6) ：データ転送エラーのエラー回数を、前記ＭＴＣ毎にカウントし、エラー回数が、予め設定したエラー閾値を超えた場合には、同一ＭＴＣで行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行する。
【０１７８】
従って、ＭＴＣ毎に、最適なデータ転送速度を設定して、効率よくデータ転送を行うことができる。
(7) ：データ転送エラーのエラー回数を、上位装置のチャネルポート毎にカウントし、前記エラー回数が、メモリ１３に格納されているエラー閾値を超えた場合には、同一チャネルポートで行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行する。
【０１７９】
従って、上位装置のチャネルポート毎に、最適なデータ転送速度を設定して、効率よくデータ転送を行うことができる。
(8) ：データ転送エラーのエラー回数を、ドライブ機番毎にカウントし、前記エラー回数が、メモリ１３に格納されているエラー閾値を超えた場合には、同一ドライブ機番で行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行する。
【０１８０】
従って、ドライブ機番毎に、最適なデータ転送速度を設定して、効率よくデータ転送を行うことができる。
(9) ：データ転送エラーのエラー回数を、媒体毎にカウントし、前記エラー回数が、メモリ１３に格納されているエラー閾値を超えた場合には、同一媒体で行われるコマンド処理全てを、実行可能なデータ転送速度に切り換えて実行する。
【０１８１】
従って、媒体毎に、最適なデータ転送速度を設定して、効率よくデータ転送を行うことができる。
【図面の簡単な説明】
【図１】本発明の原理説明図である。
【図２】実施例１の装置構成図である。
【図３】実施例１の処理フローチャートである。
【図４】実施例１のタイムチャートである。
【図５】実施例２の装置構成図である。
【図６】実施例２の処理フローチャートである。
【図７】実施例２のタイムチャートである。
【図８】実施例３の装置構成図である。
【図９】実施例３の処理フローチャートである。
【図１０】実施例３のタイムチャートである。
【図１１】実施例４の装置構成図である。
【図１２】実施例４の処理フローチャート１である。
【図１３】実施例４の処理フローチャート２である。
【図１４】実施例４のタイムチャートである。
【図１５】従来例の装置構成図である。
【図１６】従来例の処理フローチャートである。
【図１７】従来例のタイムチャートである。
【符号の説明】
３  ホスト（ホストコンピュータ）
４−１、４−２、１０  データ送受信制御回路
５  ＭＴＣ（磁気テープ制御装置）、
６  ＨＩＣ（ホストインターフェースコントローラ）
１１  データ転送速度レジスタ
１２  チャネルデータ異常検出回路
１３、１６  メモリ
１４  ＭＰＵ（マイクロプロセッサ）
【図１】
0003815625.tif 000002
【図２】
0003815625.tif 000003
【図３】
0003815625.tif 000004
【図４】
0003815625.tif 000005
【図５】
0003815625.tif 000006
【図６】
0003815625.tif 000007
【図７】
0003815625.tif 000008
【図８】
0003815625.tif 000009
【図９】
0003815625.tif 000010
【図１０】
0003815625.tif 000011
【図１１】
0003815625.tif 000012
【図１２】
0003815625.tif 000013
【図１３】
0003815625.tif 000014
【図１４】
0003815625.tif 000015
【図１５】
0003815625.tif 000016
【図１６】
0003815625.tif 000017
【図１７】
0003815625.tif 000018