(57)【要約】　　【目的】チャネルと入出力ポート間のチャネルバスの速度が異なっても、特定のポートに偏ることなく均等に入出力処理をサービスする。　　【構成】図１（Ｂ）のように、循環数判定部６８によって、複数の入出力ポートＡ，Ｂのいずれかで、起動要求に対するビジィ応答と他の入出力ポートの転送終了に伴うビジィ解除（ビジィエンド）の応答とが繰り返されるループ状態の回数を計数し、このループ回数が所定値を越えるか否か判定する。循環数判定部６８でループ回数が所定値を越える入出力ポートが判定された場合、ルート制御部４６が判定入出力ポートに対し起動要求の受付けを優先的に割り付ける。即ち、ルート制御部４６は、優先割付け入出力ポートに対する起動要求のみを受付け、他の入出力ポートに対する起動要求に対してはビジィ応答する。　　【選択図】　　　図１
2004005727.tif 000002
【特許請求の範囲】
【請求項１】
　転送速度の異なるチャネルバスを介して上位装置側の複数のチャネル装置に接続された複数の入出力ポートと、
　前記複数の入出力ポートのいずれかで、起動要求に対するビジィ応答と他の入出力ポートの転送終了に伴うビジィ解除の応答とが繰り返されるループ状態の回数を計数し、該ループ回数が所定値を越えるか否か判定する判定部と、
　前記判定部でループ回数が所定値を越える入出力ポートが判定された場合、該判定入出力ポートの起動要求を優先的に処理するルート制御部と、
を設けたことを特徴とする入出力制御装置。
【請求項２】
　請求項１記載の入出力制御装置に於いて、前記ルート制御部は、前記判定ポートに対する起動要求のみを受け付け、他の入出力ポートの起動要求に対してはビジィ応答することを特徴とする入出力制御装置。
【請求項３】
　転送速度の異なるチャネルバスを介して上位装置側の複数のチャネル装置に接続された複数の入出力ポートのいずれかで、起動要求に対するビジィ応答と他の入出力ポートの転送終了に伴うビジィ解除の応答とが繰り返されるループ状態の回数を計数し、該ループ回数が所定値を越えるか否か判定する判定過程と、
　前記判定過程でループ回数が所定値を越える入出力ポートが判定された場合、該判定入出力ポートの起動要求を優先的に処理するルート制御過程と、
を備えたことを特徴する入出力制御方法。
【請求項４】
　請求項３記載の入出力制御方法に於いて、前記ルート制御過程は、前記判定ポートに対する起動要求のみを受け付け、他の入出力ポートの起動要求に対してはビジィ応答することを特徴とする入出力制御方法。
【請求項５】
　転送速度の異なるチャネルバスを介して上位装置側の複数のチャネル装置に接続された複数の入出力ポートと、
　前記複数の入出力ポートの各々につき、起動要求に対するビジィ応答を行った時刻を記憶するビジィ応答時刻記憶部と、
　前記起動要求に対する転送処理の終了毎に、前記ビジィ応答時刻の中の最も古い応答時刻をもつ入出力ポートを、優先処理ポートに決定する処理ポート決定部と、
　前記処理ポート決定部で決定した優先処理ポートの起動要求を優先的に処理するルート制御部と、
を設けたことを特徴する入出力制御装置。
【請求項６】
　請求項５記載の入出力制御装置に於いて、前記ルート制御部は、前記優先処理ポートに対する起動要求のみを受け付け、他の入出力ポートの起動要求に対してはビジィ応答することを特徴とする入出力制御装置。
【請求項７】
　転送速度の異なるチャネルバスを介して上位装置側の複数のチャネル装置に接続された複数の入出力ポートの各々につき、起動要求に対するビジィ応答を行った時刻を記憶するビジィ応答時刻記憶過程と、
　前記起動要求に対する転送制御の終了毎に、前記ビジィ応答時刻の中の最も古い応答時刻をもつ入出力ポートを、優先処理ポートに決定する処理ポート決定過程と、
　前記処理ポート決定過程で決定した優先処理ポートの起動要求を優先的に処理するルート制御過程と、
を設けたことを特徴とする入出力制御方法。
【請求項８】
　請求項７記載の入出力制御方法に於いて、前記ルート制御過程は、前記優先処理ポートに対する起動要求のみを受け付け、他の入出力ポートの起動要求に対してはビジィ応答することを特徴とする入出力制御方法。
【請求項９】
　転送速度の異なるチャネルバスを介して上位装置側の複数のチャネル装置に接続された複数の入出力ポートと、
　前記複数の入出力ポートのいずれかに対するチャネル装置からの起動要求に伴なう結合、結合中の転送処理、及び転送終了に伴うエンドステータスの応答を行うルート制御部と、
　前記ルート制御部によって特定のチャネル装置と入出力ポートとの結合中に、他の入出力ポートに他のチャネル装置から起動要求があった場合、該他の入出力ポートから再試行ステータスを応答して前記他のチャネル装置との結合を切り離し、現在処理中の入出力ポートとチャネル装置の結合終了時に、前記他の入出力ポートから再試行開始の割込み通知を前記他のチャネル装置に通知して起動要求を再試行させる再試行割込み処理部と、
を設けたことを特徴とする入出力制御装置。
【請求項１０】
　転送速度の異なるチャネルバスを介して上位装置側の複数のチャネル装置に接続された複数の入出力ポートと、
　前記複数の入出力ポートのいずれかに対するチャネル装置からの起動要求に伴なう結合、結合中の転送処理、及び転送終了に伴うエンドステータスの応答、更には他の入出力ポートが結合中の起動要求に対しビジィ応答を行うルート制御部と、
　前記ルート制御部によって特定のチャネル装置と入出力ポートとの結合による転送処理中に所定の割込条件が成立した場合、前記入出力ポートから前記チャネル装置に再試行ステータスを応答し転送処理を中断して結合を切り離し、全ポートに関するビジィ応答の状態を解析して優先処理ポートを決定し、該優先処理ポートから他のチャネル装置にエンドステータスを応答して起動要求を行わせ、該起動要求に伴なう転送処理の終了時に、前記入出力ポートから前記チャネル装置に再試行開始の割込みを通知して中断した転送処理を再開させる再試行割込み処理部と、
を設けたことを特徴とする入出力制御装置。
【請求項１１】
　請求項１０記載の入出力制御装置に於いて、前記再試行割込み処理部は、一定時間に達する毎に、再試行割込み処理を行うことを特徴とする入出力制御装置。
【請求項１２】
　請求項１０記載の入出力制御装置に於いて、前記再試行割込み処理部は、結合中の前記入出力ポートのコマンド処理回数が所定値に達した時に、再試行割込み処理を行うことを特徴とする入出力制御装置。
【請求項１３】
　請求項１０記載の入出力制御装置に於いて、前記再試行割込み処理部は、前記入出力ポートの結合中に、他の入出力ポートに対する起動要求に対するビジィ応答でビジィ率が所定値に到達した時、再試行割込み処理を行うことを特徴とする入出力制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、ホストコンピュータ側の複数のチャネル装置を複数の入出力ポートに個別に接続して入出力要求を処理する入出力制御装置に関し、特に、転送速度の異なるチャネルバスを使用した入出力制御装置及び入出力制御方法に関する。
【背景技術】
【０００２】
　図２６は、磁気テープ装置を用いた入出力サブシステムの一例である。入出力サブシステムは、入出力制御ユニットとして機能する磁気テープ制御ユニット４１０と、入出力装置として機能する複数の磁気テープドライブユニット４１２−１〜４１２−４で構成される。磁気テープドライブユニット４１２−１〜４１２−４には、デバイス機番＃１〜＃４が定義される。
【０００３】
　磁気テープ制御ユニット４１０は例えば２つの入出力ポート４２０−１，４２０−２をもつ。入出力ポート４２０−１，４２０−２にはポート番号Ａ，Ｂが定義される。入出力ポート４２０−１，４２０−２にはホストコンピュータ４１４−１，４１４−２のチャネル装置４１６−１，４１６−２がチャネルバス４１８−１，４１８−２を介して接続される。チャネル装置４１６−１，４１６−２にはチャネル番号Ａ，Ｂが定義される。尚、以下の説明は、単にチャネルＡ，Ｂ及びポートＡ，Ｂと表わす。
【０００４】
　ホストコンピュータによる入出力動作を簡単に説明する。例えばホストコンピュータ４１４−１で磁気テープドライブユニット４１２−１にロードされた磁気テープに対する入出力要求、例えばライト要求が発生したとする。ホストコンピュータ４１４−１のチャネルＡは、まず入出力ポートＡに対し磁気テープドライブユニット４１２−１のデバイス機番＃１を指定したスタートＩ／Ｏ要求（起動要求）を発行する。
【０００５】
　磁気テープ制御ユニット４１０は、ポートＡからのスタートＩ／Ｏ要求に対しポートＢがチャネルＢと結合中か否かチェックする。ポートＢが結合中になければ、ポートＡに対するスタートＩ／Ｏ要求を受け入れてチャネルＡと結合し、スタートＩ／Ｏ要求の正常終了を応答し、コマンドシーケンスの転送処理を行う。　一方、チャネルＡからのスタートＩ／Ｏ要求をポートＡで受けた際に、チャネルＢが結合中であった場合は、ビジィ応答を返す。そして、チャネルＢとポートＢの結合による転送処理が終了すると、ポートＢからチャネルＢにユニットエンドのステータス応答が行われ結合が切り離される。これに伴ないポートＡからチャネルＡにもビジィ解除を示すビジィエンドが行われ、ビジィ応答により待ち状態にあるチャネルＡから、再度、ポートＡに対し起動要求が行われる。
【特許文献１】特開平０５−１９７６５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
　ところで、このような複数のチャネルからの入出力要求を処理する入出力制御装置にあっては、各チャネルの入出力要求に対し、ある程度、均等にサービスを行う必要がある。しかし、チャネルバスの転送速度が異なったり、電気チャネルバスや光チャネルバスのようにチャネルによって異なった転送プロトコルが採用されている場合、どうしても高速チャネルのサービスへ偏る傾向になり、低速チャネルに対するサービスは低下する問題点があった。
【０００７】
　またシステム環境として、高速ホストコンピュータと中・低速ホストコンピュータが混在している場合が多く、更に、高速ホストコンピュータと中・低速ホストコンピュータはクロスコール可能に接続されている。このような場合にも、同様な問題が発生する。
【０００８】
　これを図２６について説明すると次のようになる。例えばチャネルＡが低速チャネルであり、チャネルＢが高速チャネルであったとする。この場合の入出力制御は例えば図２７のタイムチャートのようになる。
【０００９】
　いま高速チャネルＢからスタートＩ／Ｏ要求５００をポートＢに行い、正常終了による結合完了応答５０２が得られると、高速チャネルＢとポートＢ間でのコマンドシーケンスの転送処理５０４，５０６が行われる。
【００１０】
　この転送処理５０４，５０６の間に、低速チャネルＡからスタートＩ／Ｏ要求５０８をポートＡに発行したとすると、ポートＢが結合中にあるため、ビジィ応答５１０が返される。
【００１１】
　転送処理５０６が終了するとポートＢからユニットエンド（Unit End）５１２が高速チャネルＢに返され、結合が解除される。このユニットエンド５１２に伴ない、次にポートＡからビジィ解除待ちにある低速チャネルＡにビジィ解除を示すビジィエンド５１４が返される。ここでユニットエンド５１２を受けた高速チャネルＢで次の入出力要求が発生していたとすると、直ちに高速チャネルＢから起動要求としてのスタートＩ／Ｏ要求５１６がポートＢに出され、結合完了応答５１８を経て再び転送処理５２０，５２２に入る。
【００１２】
　一方、ビジィエンド５１４を受けた低速チャネルＡは、ビジィ解除を認識してスタートＩ／Ｏ要求５２４をポートＡに出す。しかし、ビジィエンド５１４を出してからスタートＩ／Ｏ要求５２４がポートＡで受信されるまでに時間がかかり、この間に、高速チャネルＢからのスタートＩ／Ｏ要求５１６でポートＢが結合中になっている。このため低速チャネルＡからのスタートＩ／Ｏ要求５２４に対しポートＡから再びビジィ応答５２６が出され、低速チャネルＡは再度、ビジィ解除待ちとなる。
【００１３】
　このため高速チャネルＢに入出力要求が続く限り、低速チャネルＡはスタートＩ／Ｏ要求、ビジィ応答、ビジィエンドのループ処理が繰り返され、入出力要求が受け入れられずサービスの低下が発生する。最悪の場合、このループ処理が長時間に亘ることで、低速チャネルＡのホストコンピュータは、チャネル装置や入出力サブシステムに何らかの異常が起きたものと判断するチェック・コンディションとなってしまう問題がある。
【００１４】
　また制御方法によっては、高速チャネルからの入出力要求が連続した場合、低速チャネルＡに対して高速チャネル側での結合終了に伴なうビジィエンドを応答する時間も無くなり、ビジィ解除待ちにある低速チャネルはいくら待ってもビジィエンドが得られず、ビジィ解除待ちがタイムアウトとなって低速チャネルの入出力要求がエラー終了となる事態も発生する。
【００１５】
　このように特定のチャネルに入出力制御装置のサービスが偏ってしまう問題を解決する方法として、各入出力ポートが均等にサービスされるように、時分割でルートの優先度を変化させる方法がある。
【００１６】
　図２８は入出力制御装置にポートＡ〜Ｈの８チャネルを設けた場合であり、クロックによりポートＡ〜Ｈに順番に優先度を割り当てていく。例えば時刻ｔ0 で全入出力ポートＡ〜Ｈに起動要求があった場合、このとき入出力ポートＣのスロットにクロックがあって優先度を設定しており、入出力ポートＣでの結合が受理される。それ以外の入出力ポートについては、自動的にビジィ応答が報告される。
【００１７】
　また時刻ｔ0 で入出力ポートＢ，Ｅの２つに起動要求があったとすると、入出力ポートＥのスロットにクロックが変化した時刻ｔ1 で入出力ポートＥの結合が受理され、入出力ポートＢについては自動的にビジィ応答が報告される。
【００１８】
　このような時分割でルートの優先度を変化させる方法は、各チャネルバスが同一性能で、且つ電気チャネルバス又は光チャネルバスといったプロトコルが同じ場合は有効である。しかし、転送速度が異なったり、電気チャネルと光チャネルが混在したプロトコルの異なる場合には、あまり有効ではない。
【００１９】
　本発明の目的は、チャネルと入出力ポート間のチャネルバス速度が異なっても、特定のポートに偏ることなく均等に入出力処理をサービスできる入出力制御装置及び制御方法を提供する。
【課題を解決するための手段】
【００２０】
　図１及び図２は本発明の原理説明図である。
【００２１】
　まず本発明は、異なる転送速度のチャネルバスを介して上位装置側の複数のチャネル装置と複数の入出力ポートを接続した入出力制御装置を対象とする。具体的には、転送速度の異なるチャネルバスを介して上位装置側の高速チャネル装置及び低速チャネル装置の各々に接続された高速入出力ポート及び低速入出力ポートを有する入出力制御装置を対象とする。
【００２２】
　本発明は、図１（Ａ）のように、入出力制御装置１０における入出力ポートＡ，Ｂの各々に、他の入出力ポートの転送終了に伴いビジィ解除を応答から起動要求を受信するまでの起動時間を計測して記憶する起動時間計測記憶部４８を設ける。そしてルート制御部４６によって、高速チャネル装置Ｂから高速入出力ポートＢに起動要求を受けた際に、起動時間計測記憶部４８に記憶した低速入出力ポートＢの起動時間Ｔ２に亘って低速入出力ポートＢに対する起動要求を待つ。この待ち時間中に低速入出力ポートＢに起動要求があれば、対応する低速チャネル装置Ｂと結合して転送処理を行う。
【００２３】
　この場合、高速チャネル装置Ａに対してはビジィ応答とする。また待ち時間に亘り低速入出力ポートＢから起動要求がなかった場合は、高速チャネル装置Ａと高速入出力ポートＡを結合して転送処理を行う。
【００２４】
　本発明は、更に、各入出力ポートのビジィ率を計測して記録するビジィ率計測記憶部５０を設ける。この場合、起動時間計測記憶部５０は、各入出力ポートＡ，Ｂの起動時間Ｔ１，Ｔ２を計測する毎に、最大時間Ｔmax 、平均時間Ｔav及び最小時間Ｔmin を生成して記憶する。またルート制御部４６は、ビジィ率計測記憶部５０に記憶した各入出力ポートＡ，Ｂのビジィ率Ｒ１，Ｒ２が均等になるように、最大時間、平均時間または最小時間を選択して低速入出力ポートＢの起動要求の待ち時間Ｔ１を設定する。
【００２５】
　ビジィ率Ｒとしては、各入出力ポートＡ，Ｂ毎に、計測したビジィ応答回数をチャネル装置からの入出力起動回数で割って算出する。ビジィ率に基づく待ち時間の設定としては、低速入出力ポートＡのビジィ率Ｒ１が高速入出力ポートＢのビジィ率Ｒ２より大きい場合は最大時間Ｔmax を選択して設定し、低速入出力ポートＡのビジィ率Ｒ１が高速入出力ポートＢのビジィ率Ｒ２に等しい場合は平均時間Ｔavを選択して設定する。さらに低速入出力ポートＡのビジィ率Ｒ１が高速入出力ポートＢのビジィ率Ｒ２より小さい場合は最小時間Ｔmin を選択して設定する。
【００２６】
　また前記発明の変形として次のようにする。まず入出力制御装置に、低速入出力ポートＡから低速チャネル装置Ａにビジィ解除を応答してから起動要求を受信するまでの起動時間を計測する起動時間計測部を設ける。ルート制御部４６は、低速入出力ポートＡからのビジィ解除の応答時に、高速入出力ポートＢに対する高速チャネル装置Ｂからの処理要求を、計測した起動時間に亘り待たせ、その間に低速入出力ポートＢに対する低速チャネル装置Ｂから処理要求を受け付ける。
【００２７】
　また起動時間計測部の計測時間に基づいて、ルート制御部４６の待ち時間を可変させる待ち時間設定部を設けてもよい。更に、オペレータの入力操作によって、ルート制御部４６の待ち時間を設定させる待ち時間設定部を設けてもよい。
【００２８】
　また本発明は、図１（Ｂ）のように、判定部６８によって、複数の入出力ポートＡ，Ｂのいずれかで、起動要求に対するビジィ応答と他の入出力ポートの転送終了に伴うビジィ解除（ビジィエンド）の応答とが繰り返されるループ状態の回数を計数し、このループ回数が所定値を越えるか否か判定する。
【００２９】
　判定部６８でループ回数が所定値を越える入出力ポートが判定された場合、ルート制御部４６が判定入出力ポートに対し起動要求の受付けを優先的に割り付ける。即ち、ルート制御部４６は、優先割付け入出力ポートに対する起動要求のみを受付け、他の入出力ポートに対する起動要求に対してはビジィ応答する。
【００３０】
　また本発明は、図１（Ｃ）のように、ビジィ応答時刻記憶部７０で複数の入出力ポートＡ，Ｂの各々につき、起動要求に対するビジィ応答を行った時刻を記憶する。処理ポート決定部７２は、起動要求に対する転送処理の終了毎に、ビジィ応答時刻の中の最も古い応答時刻をもつ入出力ポートを処理ポートに決定する。ルート制御部４６は、決定した入出力ポートに対し起動要求の受付けを優先的に割り付ける。
【００３１】
　また本発明は、図２（Ｄ）のように、ルート制御部４６によって特定のチャネル装置Ｂと入出力ポートＢとの結合中に、他の入出力ポートＡに他のチャネル装置Ａから起動要求があった場合、再試行割込み処理部７４が他の入出力ポートＢから再試行ステータスを応答して他のチャネル装置Ｂとの結合を切り離す。　そして、現在処理中の入出力ポートＡとチャネル装置Ａの結合終了時に、試行割込み処理部７４は、他の入出力ポートＡから再試行開始の割込み通知を他のチャネル装置Ａに通知して起動要求を再試行させる。
【００３２】
　また本発明は、図２（Ｅ）のように、ルート制御部４６によって特定のチャネル装置Ｂと入出力ポートＢとの結合中に所定の割込条件が成立した場合、例えば割込タイマ８０がタイムアップした場合、再試行割込み処理部７６によって割込み処理を行う。この再試行割込み処理は、
　（１）入出力ポートＢからチャネル装置Ｂに再試行ステータスを応答して処理を中断して結合を切り離す。
【００３３】
　（２）切離しが済むと、全てのポートＡ，Ｂについて、それまでのビジィ応答状態をチェックし、優先処理ポートを決定する。例えば、以前にビジィ応答を行ったポートＡを優先処理ポートに決定する。
【００３４】
　（３）続いて、優先処理ポートＡからチャネル装置Ａにエンドステータスを応答して起動要求を行わせる。
【００３５】
　（４）この起動要求に伴なう転送処理が終了すると、再試行割込み処理部７６は、入出力ポートＢからチャネル装置Ｂに再試行開始の割込みを通知し、中断した処理を再開させる。
【００３６】
　ここで再試行割込みの割込条件としては、
　　　1)入出力ポートの結合時間が一定時間に達したこと、
　　　2)結合中の入出力ポートのコマンド処理回数が所定値に達したこと、
　　　3)入出力ポートの結合中に、他の入出力ポートに対する起動要求に対するビジィ応答でビジィ率が所定値に到達したこと、
等とする。
【００３７】
　また本発明は、図２（Ｆ）のように、複数の入出力ポートＡ，Ｂ毎にコマンド解析実行部９２，９４を設ける。例えばコマンド解析実行部９２は、他の入出力ポートＢの結合中に、入出力ポートＡの起動要求に伴って受信したコマンドが実行可能なコマンドか否か解析し、実行可能なコマンドであれば起動要求を受け付けて内部資源に対するコマンド処理を実行する。
【００３８】
　具体的には、他の入出力ポートＢの結合によって内部資源のデータ転送を行っている場合、別の内部資源で且つデータ転送を伴わない制御系のコマンドであれば、入出力ポートＡの起動要求を受け付けて他の内部資源に対するコマンド処理を実行する。
【００３９】
　内部資源は、データバスに対し独立した制御バスを備えた複数の入出力装置、例えば磁気テープドライブユニット１２である。
【００４０】
　このような本発明の入出力制御装置及び方法によれば、次の作用が得られる。
【００４１】
　本発明は、学習方式ということができる。高速のチャネル装置に入出力制御のサービスが偏ってしまう一因として、ビジィ解除待ちにあるチャネルがビジィ解除の通知（ビジィエンド）を受けてから起動要求を出すまでの速さが上げられる。一般に高速チャネルは、この時間が短く、低速チャネルは長い。
【００４２】
　そこで、各入出力ポートにタイマを設け、ビジィ解除を応答してから起動要求を受けるまでの起動時間をダイナミックに計測して記憶する。この起動時間の計測結果は、最大値、最小値、平均値に分けて算出記憶する。入出力制御装置は、例えば高速入出力ポートで連続してユニットエンド後に起動要求を受けても、受理応答は即座に行わずに、低速ポートの起動要求を起動時間だけ待つ。そして低速入出力ポートからの起動が来れば、高速ポートと低速ポートのどちらを受理するか判断し、片側だけにサービスが偏るのを防ぐ。
【００４３】
　サービスの偏りを示す指標の一つとしてビジィ率を使用する。ビジィ率は、ビジィ応答カウンタで求めたビジィ応答の数を、チャネルからの起動の数を積算する起動数カウンタの値で割って求める。そして各入出力ポートのビジィ率をなるべく小さい値に、また各入出力ポートのビジィ率の値の差が大きくならないように、待ち時間を決める。
【００４４】
　ビジィ解除の応答後、例えば、応答した入出力ポートのビジィ率が高い場合は、起動時間の最大値付近の値で待ち、逆に入出力ポートのビジィ率が低く、他の入出力ポートのビジィ率が高い場合は、最小値付近の値で待つようにする。このように、本発明は、自らの学習によって各チャネルのサービスを均一化できる。
【００４５】
　更に本発明は、ビジィ応答とビジィ解除応答（ビジィエンド）のループ処理が長時間続くとホスト側でチェックコンディションになるので、これを防ぐ。即ち、起動要求、ビジィ応答−ビジィ解除応答となるループ処理の回数をカウンタで検出し、カウンタが一定値を越えた入出力ポートを優先的にサービスする。その他の入出力ポートにはビジィを応答する。入出力ポートで優先処理が済んだら、その入出力ポートのカウンタはリセットする。これによりビジィ応答とビジィ解除応答がループすることによるチェックコンディションを回避できる。
【００４６】
　更に本発明は、時系列処理方式である。各入出力ポートにビジィ応答した時刻を記憶し、継続中のチャネルとの処理が終了したら、各入出力ポートのビジィ応答時刻を調べ、一番古い時刻を示している入出力ポートにビジィエンドを報告して優先的にサービスを行う。
【００４７】
　更に本発明は、再試行割込み方式である。チャネルとの結合中に他のチャネルからの起動がきたら、ビジィ応答の代わりにチャネルの再試行を要求するステータスを報告して、後からの起動してきたチャネルとの結合を一旦切る。現在処理中のチャネルとの結合が終了したら、再試行要求を既にしたチャネルに対して再試行開始の割り込みを行い、再結合する。このようにビジィ応答の代わりに再試行ステータスを応答することで、入出力制御装置側でどの入出力ポートを再結合するか決定でき、各入出力ポートを平均してサービスできる。
【００４８】
　更に本発明は、再試行割込み方式の変形といえる。まずチャネルとの結合中に所定の割込条件（所定時間、所定コマンド処理回数、所定ビジィ率等）が成立したら、割込みを発生して現在結合中のチャネルに対してチャネル再試行要求のステータスを応答し、処理を中断して一旦結合を切る。その後、全バスについて、以前にビジィ応答しているか、チェック要因は割込み要因を分析して、どの入出力ポートに対しサービスするか決定する。
【００４９】
　処理ポートを決定したら、そのポートからユニットエンドを応答して優先的に処理する。この優先処理が済んだら、再試行要求のステータス応答を行ったチャネルに対し再試行開始の割込み通知を行い、再結合して中断した処理を再開する。これによって、高速チャネルの処理が連続し、低速チャネルでビジィ応答を解除するユニットエンドが報告できない事態を回避できる。
【００５０】
　更に本発明は、チャネルスイッチとして機能する入出力ポートのインテリジェント化である。他の入出力ポートでコマンド処理中であっても、入出力ポート自身で受け付けたコマンドが実行可能か否か判断し、実行可能な場合は、下位のドライブユニットに対する処理を実行し、ビジィ応答の回数を減らす。
【００５１】
　例えば他の入出力ポートの結合中に、ある入出力ポートに起動要求があった場合は、これを受け付けてコマンドを解析し、結合中の入出力ポートと共通の内部資源、例えばデータバスを使わないコマンド、例えばモーション系やセンス系の制御コマンドの場合は、有効に受け付けて実行してしまう。このインテリジェント化は、データバスとコマンド処理バスが別であったり、共通バスであっても、データ転送と、コマンド処理用のデータ転送が同時に行えるような共通バス構成のハードウェアをもつ場合に有効となる。
【発明の効果】
【００５２】
　以上説明してきたように本発明によれば、入出力制御装置の複数の入出力ポートを異なった転送速度のチャネルバスによってホストコンピュータ側のチャネル装置と接続していても、入出力要求に対するサービスが特定のチャネルとポート間に偏ってしまうことを確実に防止でき、チャネル装置からの入出力要求が重複しても、各入出力ポートに対するサービスをほぼ均一に提供することができる。
【００５３】
　このため、低速のチャネルとポート間で起動要求がビジィ応答となってユニットエンドに対し起動要求を再度行ってもビジィ応答となってしまうビジィ−ユニットエンドのループ状態へ陥ることを確実に防止し、ホストコンピュータの入出力要求に対する応答遅れでタイムオーバとなり、チェックコンディションとなる事態を回避して、システム性能を保証することができる。
【発明を実施するための最良の形態】
【００５４】
　　　　　　　　＜目 次＞
　　　１．システム構成
　　　２．学習処理
　　　３．ビジィ応答−ビジィエンドの循環チェック処理
　　　４．時系列処理
　　　５．再試行割込み処理その１
　　　６．再試行割込み処理その２
　　　７．入出力ポートのインテリジェント化
【００５５】
１．システム構成
　図３は、磁気テープ装置をドライブユニットとして用いた本発明の入出力制御装置のシステム構成である。
【００５６】
　図３において、入出力制御装置として機能する磁気テープ制御ユニット１０に対しては、デバイスインタフェース２２を介して、この実施例にあっては、８台の磁気テープドライブユニット１２−１〜１２−８が接続される。磁気テープドライブユニット１２−１〜１２−８には、予めドライブ機番＃１〜＃８が設定される。
【００５７】
　磁気テープ制御ユニット１０は、この実施例にあっては、８つの入出力ポート２０−１〜２０−８を有する。入出力ポート２０−１〜２０−８はポート番号Ａ〜Ｈが定義される。以下の説明では、単にポートＡ〜Ｈと表現する。
【００５８】
　磁気テープ制御ユニット１０のポートＡ〜Ｈのそれぞれには、ホストコンピュータ１４−１〜１４−８に設けたチャネル装置１６−１〜１６−８がチャネルバス１８−１〜１８−８を介して接続される。ここで、チャネル装置１６−１〜１６−８にはチャネル番号Ａ〜Ｈが定義されている。以下の説明では単に、チャネルＡ〜チャネルＨと表現する。
【００５９】
　ホストコンピュータ１４−１〜１４−８のチャネルＡ〜Ｈと磁気テープ制御ユニット１０のポートＡ〜Ｈの間のチャネルバス１８−１〜１８−８は、それぞれ固有の転送速度をもっている。例えば、チャネルＡとポートＡを結ぶチャネルバス１８−１は電気的なチャネルバスであり、その転送速度は４．５ＭＢｓとなる。
【００６０】
　このような電気的なチャネルバス１８−１としては、ＩＢＭ製のブロック・マルチプレクス・チャネルインタフェース（ＢＭＣ）を使用することができる。また、チャネルＢとポートＢを結ぶチャネルバス１８−２は、例えば光チャネルバスであり、その転送速度は９ＭＢｓと高速である。このような光チャネルバス１８−２としては、例えばＩＢＭ製のＥＳＣＯＮチャネルを使用することができる。
【００６１】
　残りのチャネルバス１８−３〜１８−８についても、各々固有の転送速度をもったチャネルバスが使用される。勿論、本発明にあっては、少なくとも複数のチャネルバスの転送速度が高速と低速の２種類である場合を対象としている。例えば、転送速度４．５ＭＢｓの電気的なチャネルバス１８−１は低速チャネルバスとなり、これに対し光チャネルバスを用いたチャネルバス１８−２は、転送速度が９ＭＢｓであることから高速チャネルバスとなる。
【００６２】
　以下の説明では、低速チャネルバス１８−１のチャネルＡを低速チャネルといい、高速チャネルバス１８−２のチャネルＢを高速チャネルという。同様に、ポートＡ，Ｂについても、ポートＡが低速入出力ポート、ポートＢが高速入出力ポートとなる。
【００６３】
　図４は、図３の磁気テープ制御ユニット１０のハードウェア構成である。磁気テープ制御ユニット１０は、ホストインタフェース部２４、バッファメモリ２６、フォーマッタ部２８および通信情報メモリテーブル３０で構成される。ホストインタフェース部２４には、ＭＰＵ３２、ファームウェア３４およびインタフェースプロセッサ３６が設けられる。
【００６４】
　インタフェースプロセッサ３６には、ホストコンピュータとのチャネルバスを接続した入出力ポート２０−１〜２０−８で実現されるポートＡ〜Ｈが設けられる。フォーマッタ部２８には、ＭＰＵ３８、ファームウェア４０およびフォーマッタプロセッサ４２が設けられる。
【００６５】
　本発明の入出力制御は、ホストインタフェース部２４に設けられたＭＰＵ３２、ファームウェア３４およびインタフェースプロセッサ３６の制御機能により実現することができる。バッファメモリ２６には、ホストコンピュータと磁気テープドライブユニットとの間でやり取りされるデータが一時的に格納される。バッファメモリ２６を経由したデータ転送により、入出力制御装置１０とチャネル側の転送、入出力制御装置１０と磁気テープドライブユニット側の転送は、非同期に行われることになる。
【００６６】
　ホストインタフェース部２４に設けられたＭＰＵ３２は、インタフェースプロセッサ３６において、いずれかのポートＡ〜Ｈに起動要求を受けると、他のポートが結合中でないことを条件に起動要求を受け入れ、チャネルバスと結合して、ホストコンピュータからの入出力要求に基づくチャネルコマンドワードの転送処理を行う。
【００６７】
　チャネルコマンドは、通常、一連のコマンドシーケンスを実現するための異なったコマンド語の連続するコマンドチェインニングと、データのブロック単位の転送を行う際のリードコマンドまたはライトコマンドを繰り返し転送するためのデータチェインニングがある。
【００６８】
　このようなチャネルコマンドによる１回の転送処理ごとに、チャネル装置は対応する磁気テープ制御ユニット１０のポートに対しスタートＩ／Ｏ要求（スタートＩ／Ｏコマンド）を発行して起動要求を行う。この起動要求の際には、通常、磁気テープドライブユニットのドライブ機番＃１〜＃８のいずれかを指定する。インタフェースプロセッサ３６は、ポートＡ〜Ｈに対するチャネルバスからのスタートＩ／Ｏ要求を監視しており、スタートＩ／Ｏ要求を認識すると、他のポートが結合中にないことを条件に、スタートＩ／Ｏコマンドに対する正常終了を示す結合完了応答を返す。もし、スタートＩ／Ｏ要求を受けた際に他のポートが結合中であった場合には、基本的にはビジィ応答を返すことになる。
【００６９】
　ＭＰＵ３２は、インタフェースプロセッサ３６を介して受信したチャネル側からのコマンドを解読し、磁気テープドライブユニットの制御に必要なパラメータなどの各種情報を通信情報メモリテーブル３０に書き込む。また、磁気テープドライブユニットに対する書込みのために転送されたデータについては、バッファメモリ２６に書き込む。
【００７０】
　フォーマッタ部２８のＭＰＵ３８は、ＭＰＵ３２とは非同期に、通信情報メモリテーブル３０をサイクリックに参照しており、磁気テープドライブユニットの制御またはデータ転送に必要な情報を認識すると、フォーマットプロセッサ４２を経由して、指定されたドライブ機番をもつ磁気テープドライブユニットに対する各種の制御およびデータ転送のための処理動作を指示する。
【００７１】
　またＭＰＵ３８は、サイクリックに磁気テープドライブユニット１２−１〜１２−８の状態を検出して、検出結果を通信情報メモリテーブル３０に書き込んでいる。このため、チャネル側より磁気テープドライブユニットの状態を確認するためのセンスコマンドをホストインタフェース部２４で受けた場合、ＭＰＵ３２は通信情報メモリテーブル３０を参照することで磁気テープドライブユニットの状態を認識し、ステータスコマンドに対し応答することができる。
【００７２】
　更にインタフェースプロセッサ３６には、チャネルバスからの転送データを圧縮した後にバッファメモリ２６に書き込み、また磁気テープドライブユニットからバッファメモリ２６に読み出された圧縮リードデータを元のデータに伸長してチャネルバスに送り出すための圧縮伸長部としての機能が設けられる。このデータの圧縮伸長処理は、リードまたはライト要求の最初に送られてくるセットコマンドのビットフラグにより伸長または圧縮するか、そのまま処理するか、指定することができる。
【００７３】
　一方、オプションとして、デバイスインタフェース２５を介してＣＲＴ３５とキーボード４５が設けられる。これによりオペレータはホストインタフェース部２４のＭＰＵ３２の入出力制御に必要な各種のパラメータを外部から設定できる。勿論、ホストコンピュータ側のＣＲＴとキーボードを使用して、ＭＰＵ３２の制御パラメータを設定してもよい。
【００７４】
２．学習処理
　図５は本発明の実施例であり、磁気テープ制御ユニット１０にポートＡとポートＢの２つを設けた場合を例にとっている。
【００７５】
　磁気テープ制御ユニット１０にはルート制御部４６が設けられ、ポートＡまたはポートＢに対するチャネルバスからの起動要求に基づいて、いずれか一方のポートを選択するチャネルスイッチとしての機能をもつ。ポートＡ，ポートＢのそれぞれにはタイマ５２，５８が設けられている。タイマ５２，５８は、ポートＡ，Ｂからのチャネルバスに対するビジィエンドで起動し、その後にチャネルバスから起動要求を受けたときに停止する。
【００７６】
　タイマ５２，５８により計測される起動時間は、より正確には、チャネルバスに対しビジィ応答を行った後に他のポートの結合終了に伴ってビジィエンドを応答した時点から、このビジィエンドを受けたビジィ解除待ちのチャネル装置からの起動要求がポートで受信されるまでの時間となる。したがって起動時間そのものはチャネル装置がビジィ解除待ちの状態でユニットエンドを受信して再度起動要求を発行する時間を表わすことになり、チャネルバスの転送速度に依存する。
【００７７】
　ここで、ポートＡは低速チャネルバス１８−１に接続された低速ポートであり、ポートＢは高速チャネルバス１８−２に接続された高速ポートとなっている。このため、タイマ５２で計測される低速ポートＡの起動時間Ｔ１は、タイマ５８で計測される高速ポートＢの起動時間Ｔ２より長い時間となる。起動時間計測記憶部４８は、タイマ５２，５８による低速ポートＡの起動時間Ｔ１と高速ポートＢの起動時間Ｔ２を記憶する。
【００７８】
　更に磁気テープ制御ユニット１０には、ビジィ率計測記憶部５０が設けられている。ビジィ率計測記憶部５０は、ポートＡに設けた起動数カウンタ５４とビジィ数カウンタ５６、およびポートＢについて設けた起動数カウンタ６０とビジィ数カウンタ６２のそれぞれの計数値を用いて、ポートＡ，Ｂごとにビジィ率Ｒ１，Ｒ２を算出して記憶する。
【００７９】
　例えばポートＡを例にとると、起動数カウンタ５４はポートＡに対するチャネルバス１８−１からの起動要求があるごとにカウントアップされ、ポートＡに対する運用中の起動要求の総数を表わす。ビジィ数カウンタ５６は、ポートＡに対する起動要求のうち、他のポートＢが結合中でビジィ応答を行った回数を計数する。
【００８０】
　ビジィ率計測記憶部５０は、起動数カウンタ５４がカウントアップするごとに、即ち起動要求があるごとに、そのときの起動数カウンタ５４の値でビジィ数カウンタ５６の値を割って、ポートＡのビジィ率Ｒ１を算出する。この点は、ポートＢの起動数カウンタ６０およびビジィ数カウンタ６２についても同様であり、起動要求を受けるごとにビジィ数カウンタ６２の値を起動数カウンタ６０の値で割って、ポートＢのビジィ率Ｒ２を算出して記憶する。
【００８１】
　更に、起動時間計測記憶部４８にあっては、タイマ５２，５８で計測されたポートＡ，Ｂの起動時間Ｔ１，Ｔ２をそのまま記憶するのではなく、起動時間はそのときの状況により異なることから、最大時間Ｔmax ，最小時間Ｔmin および平均時間Ｔavに分けて記憶する。最大時間Ｔmax の記憶は、前回までに得られた最大時間Ｔmax と今回得られた起動時間Ｔを比較し、起動時間Ｔが大きければ、それまでの最大時間Ｔmax を更新し、小さければ、それまでの最大時間Ｔmax を残す。最小時間Ｔmin についても同様にして更新する。
【００８２】
　平均時間Ｔavについては、現時点までの起動時間の総和を起動要求回数で割ることで求めることができる。全ての起動時間の総和をとった場合には、データビット長が大きくなりすぎることから、一定数の起動時間ごとの移動平均を計算することが望ましい。
【００８３】
　ルート制御部４６は、高速ポートＢに起動要求を受けると、ポートＡが非結合状態にあっても直ちに結合完了応答を行わず、ビジィ率計測記憶部５０を参照して、ポートＡとポートＢのビジィ率Ｒ１，Ｒ２を比較し、ビジィ率Ｒ１，Ｒ２が同じになるようにルート制御を行う。通常、低速ポートＡ側のビジィ率Ｒ１が大きく、高速ポートＢのビジィ率Ｒ２が小さいことから、ビジィ率の大きい低速ポートＡの起動時間Ｔ１を起動時間計測記憶部４８から読み出し、読み出した低速ポートＡの起動時間Ｔ１に亘って、ポートＢは低速ポートＡに対する起動要求の待ち時間を設定する。
【００８４】
　このポートＡに対する起動要求の待ち時間Ｔ１の間に低速ポートＡに対し起動要求があると、ルート制御部４６はポートＡをチャネルバス１８−１に結合して転送処理を行い、先に起動要求のあった高速ポートＢについては、ビジィ応答を返すようになる。この結果、ビジィ率の高い低速ポートＡ側が優先的に起動要求を受け入れられることになり、高速ポートＢとのビジィ率をほぼ等しくさせることができる。
【００８５】
　また起動時間計測記憶部４８には、低速ポートＡの起動時間Ｔ１として最大時間Ｔmax ，平均時間Ｔａｖおよび最小時間Ｔmin が記憶されていることから、ポートＡ，Ｂのビジィ率Ｒ１，Ｒ２の関係から、例えば次のように低速ポートＡに対する起動要求の待ち時間を設定する。
【００８６】
　　　1)Ｒ１＞Ｒ２の場合は、最大時間Ｔmax を待ち時間に設定する。
【００８７】
　　　2)Ｒ１＝Ｒ２の場合は、平均時間Ｔavを待ち時間に設定する。
【００８８】
　　　3)Ｒ１＜Ｒ２の場合は、最小時間Ｔmin を待ち時間に設定する。
【００８９】
　図６は、図５の磁気テープ制御ユニット１０における起動時間計測処理のタイムチャートである。いま、ホストコンピュータ１４−２がスタートＩ／Ｏ要求１００をポートＢに発行すると、このときポートＡは使用されていないことから、正常終了を示す結合完了応答１０２が返され、チャネルＢおよびポートＢが転送処理１０４，１０６を行う。
【００９０】
　この転送処理１０４，１０６の間に、低速チャネルＡからスタートＩ／Ｏ要求１０８が行われたとすると、低速ポートＡからビジィ応答１１０が返される。転送処理が済むと、高速ポートＢよりユニットエンド１１２が高速チャネルＢに報告され、続いて低速ポートＡよりビジィ解除待ちにある低速チャネルＡに対しビジィエンド１１４が出される。このビジィエンド１１４に対し低速チャネルＡはビジィ解除を認識し、スタートＩ／Ｏ１１６を発行する。
【００９１】
　図５のタイマ５８は、この低速ポートＡにおけビジィエンド１１４からスタートＩ／Ｏ要求１１６を受けるまでの時間Ｔ１を起動時間として計測する。スタートＩ／Ｏ要求１１６を受けた低速ポートＡは、正常終了を示す結合完了応答１１８を出し、低速チャネルＡおよび低速ポートＡで転送処理１２０，１２２を行う。
【００９２】
　この転送処理１２０，１２２の間に、高速チャネルＢからスタートＩ／Ｏ要求１２４が行われたとすると、高速ポートＢからビジィ応答１２６が返される。転送処理が済むと、低速ポートＡよりユニットエンド１２８が低速チャネルＡに報告され、続いて高速ポートＢよりビジィ解除待ちにある高速チャネルＢに対しビジィエンド１３０が出される。このビジィエンド１３０に対し高速チャネルＢはビジィ解除を認識し、スタートＩ／Ｏ１３２を発行する。
【００９３】
　図５のタイマ６０は、この高速ポートＢにおけビジィエンド１３０からスタートＩ／Ｏ要求１３２を受けるまでの時間Ｔ２を起動時間として計測する。図７は、起動時間計測記憶部４８の記憶時間を使用したルート制御部４６による入出力制御である。いま高速チャネルＢからスタートＩ／Ｏ要求１４２が高速ポートＢに行われ、結合完了応答１１４により転送処理１４５，１４６を行っている間に、低速チャネルＡからスタートＩ／Ｏ要求１４８があると、これはビジィ応答１５０となる。
【００９４】
　この低速チャネルＡがビジィ解除待ちの状態で転送処理１４５，１４６が終了してユニットエンド１４６が出され、これに伴い低速ポートＡからビジィエンド１５６が出されると、起動時間Ｔ１に基づいた待ち時間Ｔの設定を行う。待ち時間Ｔ0 の間に、高速チャネルＢから高速ポートＢに対しスタートＩ／Ｏ要求１５６が先に行われる。しかし、待ち時間Ｔ0 のに中にあるので、スタートＩ／Ｏ要求１５６は受け入れられず、待たされる。
【００９５】
　続いて低速チャネルＡは、ビジィエンド１５４を受けてからＴ1´時間後にスタートＩ／Ｏ要求１５８を出す。このとき磁気テープ制御ユニット１０は、待ち時間Ｔの設定で低速ポートＡに対する起動要求を優先させる待ち時間Ｔの間にあり、スタートＩ／Ｏ要求１５８を受け入れて結合完了応答１６０を返し、転送処理１６２，１６４に入る。
【００９６】
　続いて高速ポートＢより高速チャネルＡに対し、スタートＩ／Ｏ要求１５６に対するビジィ応答１６６を返す。転送処理１６２，１６４が済むとユニットエンド１６８を出し、またビジィエンド１７０を出す。そして、高速チャネルＢと高速ポートＢの結合による転送処理１７４，１７６を行う。
【００９７】
　このように、高速ポートＢに対する起動要求の受付時に低速ポートＡ側の起動時間に亘る待ち時間Ｔを設けて、低速ポートＡに対する起動要求を待って処理を行うことで、高速ポートＢに対する起動要求が連続していても、低速ポートＡに対する起動要求があればこれを正常に受け付けて処理することができ、高速ポートＢ側にサービスが偏ってしまうことを防止できる。
【００９８】
　図８は、図５の磁気テープ制御ユニット１０における起動時間およびビジィ率を用いた入出力制御処理のフローチャートである。
【００９９】
　ステップＳ１で起動要求があると、ステップＳ２に進み、高速ポートか否かチェックする。高速ポートであればステップＳ３に進み、例えば低速ポートで計測した起動時間Ｔ１を待ち時間Ｔとしてタイマにセットし、ステップＳ４で起動時間Ｔ１がタイムアウトするまで、ステップＳ５で低速ポートに対する起動要求をチェックする。
【０１００】
　起動時間Ｔ１の間に低速ポートに起動要求があったことがステップＳ５で判別されると、ステップＳ６に進んで、低速ポートを低速チャネルに結合して、転送処理を開始する。同時に、ステップＳ７で高速ポートから高速チャネルにビジィ応答を行う。低速側での転送処理の終了がステップＳ８で判別されると、ステップＳ９でユニットエンドを低速ポートから出し、次にビジィエンドを高速ポートから出す。このため、ビジィ解除待ちにある高速ポートから再度、起動要求が行われ、再びステップＳ１の処理となる。
【０１０１】
　一方、ステップＳ２で低速ポートからの起動要求が判別された場合には、ステップＳ１０に進み、高速ポートが結合中にないことを条件に、低速ポートをチャネルに結合して転送制御を行う。もし高速ポートが結合中であれば、低速ポートより制御ユニットエンドを応答し、高速ポートの結合終了による制御ユニットエンドの応答を待って低速ポートに再度起動要求を行わせる通常の処理となる。
【０１０２】
　図９のフローチャートは図５の起動時間計測記憶部４８の処理動作であり、ポートＡ，Ｂごとに独立して処理動作を行う。例えばポートＡを例にとると、ステップＳ１でビジィエンドの応答を判別し、ステップＳ２に進んで、タイマをスタートする。続いてステップＳ３で、ポートＡに対する起動要求の受信をチェックしており、起動要求を受信するとステップＳ４に進み、ステップＳ２で起動したタイマを停止する。
【０１０３】
　続いてステップＳ５で、タイマに保持されている時間を起動時間として取り込んで記憶する。次にステップＳ６で、今回計測した起動時間を含めた平均時間Ｔavを算出し、ステップＳ７で、最小時間の条件を満足すれば現在の最小時間Ｔmin を更新し、またステップＳ８で、最大時間の条件を満足すれば最大時間Ｔmaxを更新する。
【０１０４】
　図１０のフローチャートは、図８のステップＳ３で低速ポートの起動時間Ｔ１をタイマにセットする際の詳細を示す。まずステップＳ１で、起動要求を受けた高速ポートＢのビジィ率Ｒ２と、要求待ちにある低速ポートＡのビジィ率Ｒ１を算出する。このビジィ率Ｒ１，Ｒ２のそれぞれは、図４のポートＡ，Ｂのそれぞれに設けたビジィ数カウンタ５６，６２の計数値を起動数カウンタ５４，６０の計数値で割って得たビジィ率計測記憶部５０に格納している値である。続いてステップＳ２で、低速ポートＡのビジィ率Ｒ１と高速ポートＢのビジィ率Ｒ２の大小関係を比較する。低速ポートのビジィ率Ｒ１が高速ポートのビジィ率Ｒ２より大きければ、ステップＳ３に進み、起動時間計測記憶部４８に格納している低速ポートＡの起動時間の内の最大時間Ｔmax を待ち時間としてセットする。低速ポートのビジィ率Ｒ１と高速ポートのビジィ率Ｒ２が等しい場合には、ステップＳ４で低速ポートの起動時間の平均時間Ｔavを待ち時間にセットする。更に、低速ポートのビジィ率Ｒ１が高速ポートのビジィ率Ｒ２より小さいときは、ステップＳ５に進み、低速ポートの起動時間の内の最小時間Ｔmin を待ち時間にセットする。
【０１０５】
　尚、図１０による高速ポートと低速ポートのビジィ率に基づいた起動時間の待ち時間へのセットに限定されず、高速ポートのビジィ率と低速ポートのビジィ率がほぼ等しくなるように待ち時間を決める適宜の方式を採用することができる。例えば、低速ポートの起動時間として平均時間Ｔavのみを使用し、ステップＳ３，Ｓ５の最大時間または最小時間の代わりに平均時間に所定の重み係数を掛け合わせた時間を求めてセットするようにしてもよい。
【０１０６】
　図１１は本発明の変形実施例である。この実施例は、高速ポートのユニットエンドの際に、低速ポートから低速チャネルにビジィエンドを応答してから起動要求を受信するまでの起動時間を計測し、その後の高速ポートＢに対する高速チャネルからの起動要求を、計測した起動時間に亘り待たせ、その間に低速ポートに対する低速チャネルから処理要求を受け付けるようにしたことを特徴とする。
【０１０７】
　図１１において、低速ポートＡに対しては起動時間計測部２３０が設けられる。起動時間計測部２３０は、図６のタイムチャートと同様に、低速ポートＡが低速チャネルＡにビジィエンドを出してからスタートＩ／Ｏ要求（起動要求）を受けるまでの起動時間Ｔを計測する。待ち時間決定部２３２は、起動時間計測部２３０の計測時間Ｔに基づいて、ルート制御部４６における待ち時間Ｔ0 を設定する。この待ち時間Ｔ0 の設定は、計測時間Ｔと同じ時間あってもよい。
【０１０８】
　また計測時間Ｔに応じて待ち時間Ｔ0 を可変設定してもよい。通常、計測時間Ｔに対し実際の待ち時間Ｔ0 を長めにした方が、低速側へのサービスの割付けが有効にできるので、例えば計測時間Ｔに１以上の所定の係数Ｋを掛け合せた待ち時間Ｔ0 を可変設定する。
【０１０９】
　更に、待ち時間Ｔ0 をオペレータの入力操作により設定してもよい。このため待ち時間決定部２３２に対し、外部に表示部２３４と入力部２３６が設けられる。表示部２３４と入力部２３６の機能は、図４のデバイスインタフェース２５、ＣＲＴ３５及びキーボード４５で実現される。
【０１１０】
　オペレータは、入力部２３６の操作で待ち時間決定部３２３に設定された現在の待ち時間Ｔ0 を表示部２３４に読出し表示し、そのときの各チャネルのビジィ状態やホストコンピュータの運用形態を考慮し、任意の待ち時間Ｔ0 を入力し、待ち時間決定部２３２に設定する。
【０１１１】
　ルート制御部４６は、高速ポートＢの転送終了でユニットエンドを応答すると、待ち時間設定部２３２から与えられる待ち時間Ｔ0 に亘り、高速ポートＢに起動要求があってもビジィ応答を出して待たせる。この待ち時間Ｔ0 の間に、低速ポートＡに起動要求があれば、直ちに受け付けて転送処理を行う。
【０１１２】
　待ち時間Ｔ0 がタイムアップするか、又は低速ポートＡの転送終了でユニットエンドとなると、高速ポートＢからビジィエンドを出し、高速チャネルに再度起動要求を行わせて受け付けることになる。
【０１１３】
３．ビジィ応答−ビジィエンドの循環チェック処理
　図１２は本発明の他の実施例である。この実施例は、高速ポートでの連続的な起動要求により、低速ポート側がビジィエンド（ビジィ解除応答）に基づく起動要求に対しビジィ応答を繰り返してしまうビジィ応答−ビジィエンドの循環状態を検出して、低速ポートに優先的にサービスを割り付けるようにしたことを特徴とする。
【０１１４】
　磁気テープ制御ユニット１０の低速ポートＡおよび高速ポートＢのそれぞれには、カウンタ６４，６６が設けられる。カウンタ６４，６６は、ビジィエンドの応答と、応答したビジィエンドに基づく起動要求に対するビジィ応答が行われることで１つカウントアップされる。即ち、１回のビジィ応答−ビジィエンドの循環を検出してカウントアップする。
【０１１５】
　循環数判定部６８は、カウンタ６４，６６の計数値、即ちビジィ応答−ビジィエンドの循環回数が所定値に達したか否か判定している。循環数判定部６８でカウンタ６４またはカウンタ６６の計数値が所定値に達したことが判定されると、この判定出力を受けてルート制御部４６が、循環数が所定数を越えたポートＡまたはポートＢに対し優先的に起動要求を受け付けるように制御する。
【０１１６】
　図１３のフローチャートは、図１２の処理動作である。まずステップＳ１で、ポートＡまたはポートＢに対する起動要求の有無をチェックしている。起動要求があると、他のポートと結合中にないことを条件にチャネルに結合して転送処理を行う。ステップＳ３で転送処理を終了すると、ステップＳ４でユニットエンドを応答する。
【０１１７】
　このときビジィ応答を行っていたポートがあれば、そのポートからビジィエンドを応答する。このため、他のポートでもしステップＳ２の結合による転送中に起動要求が行われてビジィ応答が済んでいると、ステップＳ４のビジィエンドで図１２に示した対応するカウンタがビジィ応答−ビジィエンドの循環数を１つカウントアップすることになる。
【０１１８】
　次にステップＳ５で、ビジィ応答−ビジィエンドの循環数が一定値を越えるポートがあるか否かチェックする。もし一定値を越えるポートがあった場合には、ステップＳ６に進み、一定値を越えるポートに対し起動要求の優先処理を割り付ける。そしてステップＳ７で起動要求を判別すると、ステップＳ８で優先割付けポートか否かチェックし、優先割付けポートでなければ、ステップＳ１２でビジィ応答を返す。
【０１１９】
　この結果、優先割付けポートに対する起動要求のみが受け付けられて、ステップＳ９でチャネルバスとの結合により転送処理が行われることになる。ステップＳ１０で優先割付けポートの転送処理が終了すると、ステップＳ１１で、優先割付けポートに設けている循環数カウンタをリセットし、ユニットエンドを応答する。このときステップＳ１２でビジィ応答により待ち状態となっている他のポートがあれば、そのポートからビジィエンドを出して起動要求を行わせる。
【０１２０】
４．時系列処理
　図１４は、本発明の他の実施例である。この実施例は、あるポートの結合中における他のポートのビジィ応答の時刻を記憶しておき、結合終了時にビジィ応答時刻の最も古いポートに優先的にサービスを割り付けるようにしたことを特徴とする。
【０１２１】
　磁気テープ制御ユニット１０には、ポートＡ，ポートＢおよびルート制御部４６に加えて、ビジィ応答時刻記憶部７０と処理ポート決定部７２が設けられる。ビジィ応答時刻記憶部７０は、ポートＡまたはポートＢの結合中に他のポートに起動要求が行われてビジィ応答を行った時刻を記憶する。この実施例は、ポートＡ，ポートＢの２つであることから、ポートＡの結合中はポートＢの応答時刻を記憶し、ポートＢの結合中はポートＡの応答時刻を記憶する。
【０１２２】
　処理ポート決定部７２は、結合中のポートの転送処理が終了してユニットエンドを応答した際に、ビジィ応答時刻記憶部７０を参照し、記憶しているビジィ応答時刻の中の最も古い時刻をもつポートを、次に起動要求を優先的に処理ポートとして決定して、ルート制御部４６に通知する。ルート制御部４６は、処理ポート決定部７２で決定されたポートからの起動要求を優先的に処理する。
【０１２３】
　この実施例では、ポートＡ，ポートＢの２つしかないことから、ポートＡの結合中にポートＢがビジィ応答を行うと、処理ポート決定部７２は次に優先受け付けるポートとしてポートＢを決定し、ルート制御部４６はポートＡからの起動要求に対してはビジィ応答を行い、ポートＢからの起動要求のみを受け付ける。この結果、ポートＡが低速ポート、ポートＢが高速ポートであっても、それぞれの連続した起動要求に対し、ルート制御部４６は交互に起動要求を受け付けることができ、低速ポートＡと高速ポートＢのビジィ率をほぼ均一にすることができる。
【０１２４】
　実際には図３の実施例のように、磁気テープ制御ユニット１０にはポートＡ〜Ｈの８つのポートが設けられており、この場合には、あるポートの結合中に残り７つのポートのいずれかに起動要求があれば、そのときのビジィ応答時刻が記憶される。そして、現在の転送処理が終了してユニットエンドとなった場合には、複数のビジィ応答時刻の中の最も古い時刻をもつポートからビジィエンドを出すことで、起動要求の受付けが割り付けられることになる。
【０１２５】
　図１５のフローチャートは、図１４の処理動作である。ステップＳ１で、複数のポートに対する起動要求を監視しており、特定のポートに起動要求があると、ステップＳ２で、ポートをチャネルバスに結合して転送処理を行う。ステップＳ３で転送処理の終了をチェックしており、転送を終了すると、ステップＳ４で、結合中のポートからユニットエンドを応答する。
【０１２６】
　このステップＳ１〜Ｓ４において、あるポートの結合中に他のポートから起動要求があれば、ビジィ応答時刻記憶部７０に応答時刻が記憶されている。そこで、ユニットエンドを応答した後のステップＳ５で、ビジィ応答時刻の中から最も古い時刻のポートを処理ポートとして決定し、ステップＳ６で、決定ポートからビジィエンドを出す。このビジィエンドを受けたビジィ解除待ちチャネルは、起動要求を再度発行する。
【０１２７】
　続いてステップＳ７で起動要求をチェックしており、起動要求があると、ステップＳ８で優先割付けポートか否かチェックする。優先割付けポートでなければ、ステップＳ１２でビジィ応答を返す。この結果、優先割付けポートに対する起動要求のみが受け付けられ、ステップＳ９で、チャネルバスに結合して転送処理が行われる。
【０１２８】
　ステップＳ１０で転送処理の終了が判別されると、ステップＳ１１で、処理ポートのビジィ応答時刻をリセットし、ユニットエンドを応答してステップＳ１３に戻り、ビジィ応答時刻の記録が残っていれば再びステップＳ５に戻り、残っているビジィ応答時刻の中の最も古い応答時刻をもつポートを処理ポートとして決定してビジィエンドを出す処理を繰り返す。ビジィ応答時刻が残っていなければ、再びステップＳ１に戻る。
【０１２９】
５．再試行割込み処理その１
　図１６は、本発明の他の実施例である。この発明の実施例は、あるポートがチャネルとの結合中に他のポートに起動要求が来たら、ビジィを応答する代わりにチャネル動作の再試行を要求するステータスを応答して、現在処理中の転送処理が終了したら、再試行要求をステータス応答したチャネルに対し再試行開始の割込み要求を行って、再結合するようにしたことを特徴とする。
【０１３０】
　磁気テープ制御ユニット１０には、ポートＡ，ポートＢおよびルート制御部４６に加えて再試行割込み処理部７４が設けられる。再試行割込み処理部７４は、例えばポートＡの結合中にポートＢに起動要求が来たら、通常はビジィ応答を返していたが、この第４発明にあっては、チャネル動作の再試行を要求するステータスを応答し、ポートＢのチャネルバスとの結合を一旦切り離す。
【０１３１】
　次に、ポートＡの結合による転送処理が終了してユニットエンドが応答されたら、再試行要求のステータスを応答したチャネルＢに対し再試行開始の割込み要求を行って再結合する。このような再試行割込み処理部７４による起動要求に対する再試行要求ステータスの応答を受けたチャネル装置は、チャネル動作の再試行開始の待ち状態に入り、その後、再試行開始の割込み応答を受けると、再度、起動要求からのコマンドシーケンスを開始して再結合する。
【０１３２】
　このような再試行割込み処理部７４の処理により、磁気テープ制御ユニット１０側でどのポートと再結合するか決定でき、各ポートに対し平均したサービスを提供できる。例えば、高速ポートＢの起動要求が連続しており、高速ポートＢの結合中に低速ポートＡに起動要求があると、再試行割込み処理部７４は再試行要求ステータスを応答し、ポートＡに対するチャネル側を再試行待ち状態とする。
【０１３３】
　高速ポートＢの転送処理が終了してユニットエンドを応答すると、再試行割込み処理部７４は低速ポートＡを経由して、対応するチャネル装置側に再試行開始の割込み要求を行って再結合し、再試行開始の割込みを受けたチャネル装置から起動要求を再発行し、一連のコマンドシーケンスに従った転送処理を行う。
【０１３４】
　この結果、高速ポートＢ側に起動要求が連続しても、高速ポートＢの結合中に生じた低速ポートＡの起動要求がビジィ応答として排除されず、割込みにより強制的に低速ポートＡの起動要求が受け入れられ、低速ポートＡと高速ポートＢに平均してサービスを提供できる。
【０１３５】
　図１７は、図１６で高速ポートＢの結合中に低速ポートＡに起動要求があった場合の処理である。まず高速チャネルＢよりスタートＩ／Ｏ要求２００が高速ポートＢに対し行われると、結合完了応答２０２を行った後、転送処理２０４，２０６が行われる。この転送中に低速チャネルＡより低速ポートＡにスタートＩ／Ｏ要求２０８があると、再試行割込みステータス応答２１０が行われ、低速チャネルＡは再試行起動待ちに入る。
【０１３６】
　転送処理２０４，２０６が終了して制御ユニットエンド２１２が出されると、これに伴って低速ポートＡより低速チャネルＡに対し再試行開始割込み通知２１４が行われ、再試行開始待ち状態にある低速チャネルＡより再度、スタートＩ／Ｏ要求２１６が発行される。これに対し再結合により結合完了応答２１８が出され、低速チャネルＡと低速ポートＡの間の結合で転送処理２２０，２２２が行われる。転送処理が終了すると、制御ユニットエンド２２４が出される。
【０１３７】
　図１８のフローチャートは、図１６の実施例の処理動作である。まずステップＳ１で、起動要求の有無をチェックしており、特定のポートに起動要求があると、ステップＳ２に進み、他のポートが結合状態にないことを条件に、チャネルと結合して転送処理を行う。転送中はステップＳ３で転送終了が判別されるまで、ステップＳ４で他のポートに起動要求があるか否かチェックしている。
【０１３８】
　もし起動要求があると、ステップＳ５に進み、起動要求を行ったチャネル装置に対し、ステップＳ５で、再試行ステータスを応答するか否かチェックする。ここで、現在結合中のポートが低速ポートであり、結合中に起動要求を受けたポートが高速ポートであった場合には、優先的に処理する必要がないことから、ステップＳ７でビジィ応答を返す。
【０１３９】
　一方、現在結合中のポートが高速ポートであり、結合中に起動要求を受けたポートが低速ポートであった場合には、優先的に処理する必要があることから、ステップＳ６に進み、再試行ステータスを応答する。
【０１４０】
　ステップＳ７で転送終了が判別されると、ステップＳ８に進み、結合中のポートからユニットエンドを応答する。続いてステップＳ９で、転送中に再試行ステータスの応答を行ったか否かチェックし、もし行っていれば、ステップＳ１０で、再試行ステータスの応答を行った他のポートから再試行開始の割込み要求を発行する。
【０１４１】
　もし転送中に再試行ステータスを応答していなければ、ステップＳ１１で、ビジィ応答を行った他のポートからユニットエンドを応答し、再びステップＳ１に戻る。
【０１４２】
　尚、上記の実施例は、低速ポートＡと高速ポートＢの２つのポートを例にとっているが、図４に示したように、ポートＡ〜Ｈの８つの場合についても同様に適用できる。ポートが３以上となった場合には、あるポートの結合中に他の複数のポートで割込み要求を受ける場合があることから、割込み要求に対する再試行割込み処理に優先順位を付け、その優先順位に従って再試行開始の割込み通知を行えばよい。
【０１４３】
６．再試行割込み処理その２
　図１９は、本発明の他の実施例である。この発明にあっては、あるポートの結合中に所定の割込み条件が成立したら、現在結合中のポートからチャネルに対し再試行要求のステータスを応答して、一旦結合を切り離す。次に、全てのポートに関しビジィ応答の状況、例えば最も新しいビジィ応答時刻やビジィ回数をチェックするか、あるいは割込み要求を解析し、どのポートに対するサービスを優先させるかを決定する。そして優先処理を決定したポートからユニットエンドを応答して、優先的に転送処理を行う。転送処理が終了したら、結合を切り離したポートから再試行開始の割込み要求を行って再結合し、一度中断した処理を再開する。
【０１４４】
　図１９の実施例は、割込み条件として一定の時間間隔で割込みを発生させるようにしたことを特徴とする。磁気テープ制御ユニット１０には、ポートＡ，ポートＢおよびルート制御部４６に加えて、割込みタイマ８０、ビジィ応答記憶部８２および再試行割込み処理部７６が設けられる。割込みタイマ８０は、予め定めた一定の時間間隔で再試行割込み処理部７６にタイマ出力を生じ、割込み処理を行わせる。
【０１４５】
　ビジィ応答記憶部８２には、ポートＡとポートＢのビジィ状態を示す情報として例えば最新のビジィ応答を行った時刻およびビジィ回数が記憶されている。再試行割込み処理部７６は、例えば高速ポートＢの結合中に割込みタイマ８０のタイムアウトで割込み動作を開始し、現在結合中にある高速ポートＢよりチャネル装置に対し再試行要求のステータスを応答して、一旦結合を切り離す。
【０１４６】
　高速ポートＢとの結合を切り離した後、ビジィ応答記憶部８２に記憶している全ポート、即ちポートＡ，ポートＢのそれぞれのビジィ状態、例えばビジィ応答の最新時刻とビジィ回数を参照し、どのポートに対するサービスを優先すべきかを決定する。例えば、現在高速ポートＢについては処理中であることから、他のポートとなる低速ポートＡについてのビジィ時刻が最も古い時刻で、またビジィ回数がある値を示しているため、再試行割込み処理部７６は低速ポートＡを優先的な処理ポートと決定する。
【０１４７】
　処理ポートを決定すると再試行割込み処理部７６は、ルート制御部４６を通じて、決定した処理ポートＡよりチャネル装置に対しユニットエンドを応答させる。このポートＡからのユニットエンドを受けて、それまでのビジィ応答により待ち状態にあるチャネル装置より起動要求が低速ポートＡに対し行われ、有効に結合されて転送処理を行う。
【０１４８】
　低速ポートＡ側の転送処理が終了してユニットエンドが応答されると、再試行割込み処理部７６は、処理を中断して切り離していた高速ポートＢよりチャネル装置に対し再試行開始の割込み要求を発行する。この割込み要求を受けて、チャネル装置より高速ポートＢに対し起動要求が行われ、一旦中断された転送処理が再開される。また、低速ポートＡの優先的な処理を終了してユニットエンドを発行したときに、同時にビジィ応答記憶部８２の低速ポートＡに関するビジィ応答時刻およびビジィ回数はリセットされる。
【０１４９】
　図２０のタイムチャートは、図１９の再試行処理の動作である。まず、高速チャネルＢよりスタートＩ／Ｏ要求３００が高速ポートＢに対し行われ、他の低速ポートＡが結合中にないことから、正常終了としての結合完了応答３０２が返され、高速チャネルＢおよび高速ポートＢは転送処理３０４，３０６を行う。この転送処理中に割込みタイマによるタイマ割込み３０８が発生すると、高速ポートＢより高速チャネルＢに対し再試行ステータス応答３１０を出して、結合を切り離す。
【０１５０】
　結合の切離し後に、全ポートＡ，Ｂについてビジィ応答の状態をチェックし、このとき低速ポートＡ側にビジィ応答があった場合には、優先的に処理するポートとして低速ポートＡを決定する。そして優先処理を決定したポートＡより低速チャネルＡに対しユニットエンド３１４を発行し、低速チャネルＡからスタートＩ／Ｏ要求３１６を発行させる。
【０１５１】
　スタートＩ／Ｏ要求３１６は低速ポートＡで正常に受け入れられ、結合完了応答３１８を返した後、低速チャネルＡと低速ポートＡの間で転送処理３２０，３２２が行われる。この転送処理が終了すると、低速ポートＡよりユニットエンド３２４が応答され、次に結合を一旦切り離していた高速ポートＢから高速チャネルＢに対し再試行開始割込みの通知３２６が行われる。
【０１５２】
　このため、再試行待ち状態にあった高速チャネルＢからスタートＩ／Ｏ要求３２８が出され、高速ポートＢで受け付けられて正常終了となって結合完了応答３３０を返し、一旦中断した転送処理を転送処理３３２，３３４として再開する。再開した転送処理が終了すれば、ユニットエンド３３６を高速ポートＢから発行する。
【０１５３】
　このように割込み条件の成立時に、磁気テープ制御ユニット側で現在の結合を切り離してビジィ状態に応じて優先的に処理すべきポートを決定して割込み的に転送処理を行わせることで、高速ポートに対する起動要求が連続するような場合にも、低速ポート側についてビジィ−ユニットエンドの循環を防止することができる。
【０１５４】
　図２１のフローチャートは、図１８の割込みタイマを用いた再試行割込み処理の処理動作である。まずステップＳ１で、各ポートに対する起動要求の有無をチェックしており、あるポートに起動要求があると、ステップＳ２に進み、他のポートと結合状態にないことを条件に、チャネルと結合して転送処理を開始する。
【０１５５】
　転送中は、ステップＳ３で転送終了が判別されるまで、ステップＳ４で割込みタイマのタイムアップを監視している。転送中に割込みタイマがタイムアップしたら、ステップＳ５に進み、現在結合中のポートから再試行要求のステータス応答を行って結合を切り離す。次にステップＳ６で、全ポートのビジィ応答の要因例えば時刻と回数を解析して、優先処理ポートを決定する。
【０１５６】
　ステップＳ７では、決定した優先処理ポートとステップＳ５で切り離した切離しポートとが同一ポートか否かチェックする。同一ポートでなければ、ステップＳ８で、決定ポートからチャネルに対しユニットエンドを応答し、これに伴う起動要求をステップＳ９で受けて、ポートを結合して転送処理を行う。
【０１５７】
　続いてステップＳ１０で、割込みによる転送処理が終了すると、ステップＳ１１で、ユニットエンドを応答して結合を切り離し、次にステップＳ１２で、結合切離しにより再試行開始待ち状態にあるチャネル装置に対し、結合切離しポートから再試行開始の割込み要求を行う。
【０１５８】
　この割込み要求を受けて、再試行開始待ち状態にあるチャネル装置より起動要求が再度行われ、これがステップＳ１で判別されて、ステップＳ２で再びポートとチャネルを結合して転送処理を再開する。再開した転送処理の終了がステップＳ３で判別されると、ステップＳ１３でユニットエンドを応答して、一連の転送処理が終了する。
【０１５９】
　一方、ステップＳ６で全ポートのビジィ応答の要因を解析して決定された最優先処理ポートが、ステップＳ５で結合を切り離したポートと同一ポートであった場合には、直ちにステップＳ１２に進んで、切離しポートから再試行開始の割込み要求を行って、再結合による転送処理を直ちに再開する。
【０１６０】
　この図２１のフローチャートから明らかなように、図１９の高速ポートＢの結合中に割込みタイマによる割込み条件が成立すると、ビジィ待ちにある低速ポートＡの優先処理が決定されて、割込みにより低速ポートＡ側の転送処理を終了し、その後に高速ポートＢの中断した転送処理を再開することになる。
【０１６１】
　また、低速ポートＡ側の処理中に割込みタイマによる割込み条件が成立した場合には、ビジィ応答回数が低速ポート側に偏っていれば、最優先処理ポートとして切離しポートと同じ低速ポートＡが再び最優先処理ポートに決定され、この場合には直ちに再結合のための再試行開始の割込み要求によって中断した低速ポートＡでの転送処理が再開される。勿論、状況によっては低速ポートの処理中に高速ポート側の転送処理が優先的に処理されるケースもあり得る。
【０１６２】
　また図１９〜図２１の実施例は、ポートＡ，Ｂの２つを例にとっているが、図５に示したように、実際には磁気テープ制御ユニット１０には８つのポートＡ〜Ｈが設けられており、再試行割込み処理部７６は割込みタイマによる割込み通知を受けた際に８つのポートＡ〜Ｈに関するビジィ応答の状態をチェックして、優先処理を行うポートを決定することになる。
【０１６３】
　図２２は本発明の他の実施例であり、この実施例は、各ポートで一定の回数のコマンド処理を実行したことで割込み条件が成立したものと判断して再試行割込み処理を実行するようにしたことを特徴とする。
【０１６４】
　図２２において、磁気テープ制御ユニット１０には低速ポートＡ、高速ポートＢ、ルート制御部４６、再試行割込み処理部７６、ビジィ応答記憶部８２およびコマンドカウンタ８４，８６を設けている。コマンドカウンタ８４は、低速ポートＡのコマンド実行回数を計数する。コマンドカウンタ８６は、高速ポートＢのコマンド実行回数を計数する。
【０１６５】
　再試行割込み処理部７６は、コマンドカウンタ８４または８６の計数値が予め定めた一定回数に達すると再試行割込み処理を実行する。例えば高速ポートＢの結合による転送処理で一連のコマンドシーケンスが実行されており、コマンドカウンタ８６でコマンド実行に伴ってカウントアップが行われる。このときの計数値が一定回数を越えたことを再試行割込み処理部７６が判定すると、現在結合中のポートＢよりチャネル装置に対し再試行要求のステータス応答を行って結合を切り離す。
【０１６６】
　結合を切り離した後、再試行割込み処理部７６は、ビジィ応答記憶部８２を参照し、全てのポートＡ，Ｂについてのそれまでのビジィ応答の状況をチェックする。具体的には、ポートＡ，Ｂの各々におけるビジィ応答の最新応答時刻およびビジィ回数をチェックする。そしてビジィ応答時刻が古くビジィ応答回数の多いポートを最優先処理を行うポートとして決定する。この場合には、低速ポートＡを最優先処理ポートに決定する。
【０１６７】
　この決定を受けてルート制御部４６は、低速ポートＡよりチャネル装置にビジィエンドを応答し、ビジィエンドを受けたチャネル装置より起動要求を低速ポートＡに対し行わせ、ポートＡの結合により転送処理を行う。低速ポートＡの割込みによる転送処理が終了すると、低速ポートＡからのユニットエンドの応答に続いて再試行割込み処理部７６は、高速ポートＢより再試行開始の割込み要求を行い、ポートＢを結合して、中断した転送処理を再開する。
【０１６８】
　再試行割込み処理の詳細は、コマンドカウンタ８４，８６でポートＡ，Ｂのコマンド実行回数を計数し、このコマンド実行回数が一定値に達したときに再試行割込み処理を開始する以外は、図１９〜図２１に示した第１実施例と同じになる。
【０１６９】
　図２３は本発明の他の実施例であり、この実施例は各ポートのビジィ率が一定値に達したときに再試行割込み処理を行うようにしたことを特徴とする。
【０１７０】
　図２３において、磁気テープ制御ユニット１０には、低速ポートＡ、高速ポートＢ、ルート制御部４６、再試行割込み処理部７６、ビジィ応答記憶部８２、更にビジィ率演算部８８が設けられる。ビジィ率演算部８８は、図４の実施例に示した起動数カウンタ５４，６０、ビジィ数カウンタ５６，６２およびビジィ率計測記憶部５０で実現することができる。
【０１７１】
　再試行割込み処理部７６は、ビジィ率演算部８８で演算される低速ポートＡのビジィ率Ｒ１またはポートＢのビジィ率Ｒ２が、予め定めた一定値に達するか否か判断している。ビジィ率Ｒ１またはＲ２が一定値に達すると、再試行割込み処理を開始する。再試行割込み処理は、図１９の第１実施例および図２２の第２実施例と同じになる。
【０１７２】
　即ち、現在結合中のポートから再試行要求のステータスを応答して、一旦結合を切り離し、ビジィ応答記憶部８２を参照して、最優先に処理すべきポートを決定する。決定したポートに対してはビジィエンドを発行して、起動要求を受け付けて転送処理を行う。割込みによる転送処理が終了すると、切り離したポートに対し再試行開始の割込み要求を行って再結合し、中断した転送処理を再開する。
【０１７３】
　尚、この実施例にあっては、ビジィ率が一定値に達して再試行割込み処理が行われた場合、全ポートのビジィ応答の状況、即ちビジィ応答の時刻、ビジィ回数から優先処理ポートを決定しているが、割込み要因となったビジィ率そのものを分析して優先処理ポートを決定してもよい。即ち、全ポートのビジィ率を分析し、最もビジィ率の高いポートを優先処理ポートに決定すればよい。これは、割込み要因そのものの分析による優先処理ポートの決定といえる。
【０１７４】
　図１９の実施例および図２２の実施例についても、図２３の実施例と同様、ビジィ率演算部８８を設けることで、再試行割込み処理の際に全ポートのビジィ率を分析して、ビジィ率の最も高いポートを優先処理ポートに決定してもよい。
【０１７５】
７．入出力ポートのインテリジェント化
　図２４は本発明の他の実施例であり、各ポートにコマンド解析機能を設け、他のポートの処理中に実行可能なコマンドを解析して並列的に処理を行うようにしたことを特徴とする。
【０１７６】
　図２４において、磁気テープ制御ユニット１０には、低速ポートＡに対しコマンド解析実行部９２が設けられ、またポートＢに対しコマンド解析実行部９４が設けられる。コマンド解析実行部９２，９４は、磁気テープ制御ユニット１０と下位の磁気テープドライブユニット１２−１，１２−２に対し、独立した制御パス９８で制御信号を供給する。
【０１７７】
　これに対し、磁気テープドライブユニット１２−１，１２−２側とのデータの転送はデータバス９６により行われ、このデータバス９６に対してはポートＡとポートＢを切替えるためのデータルート制御部９０が設けられる。なお、既に説明した各発明の実施例にあっては、コマンド解析実行部とデータルート制御部は１つのルート制御部として磁気テープ制御ユニット１０に設けられている。
【０１７８】
　ポートＡ，Ｂごとに設けたコマンド解析実行部９２，９４は、起動要求に伴うチャネルとの結合で受信されたコマンドを解析し、他のポートでデータ転送中にあっても実行可能なコマンドか否かを判断する。
【０１７９】
　他のポートの結合によるデータ転送中に実行可能なコマンドとしては、磁気テープドライブユニット１２−１，１２−２側での磁気テープのロード動作、アンロード動作、早送り動作、巻戻し動作などのモーション系のコマンド、および磁気テープドライブユニット１２−１，１２−２側の動作状態を通知するためのセンス系のコマンドなどがある。これに対し、他のポート側の結合によるデータ転送中に実行できないコマンドとしては、リードコマンドおよびライトコマンドがある。
【０１８０】
　コマンド解析実行部９２，９４は、他のポートの結合によるデータ転送中に起動要求を受けてモーション系またはセンス系のコマンドの受信を解析すると、ビジィ応答を行わずに結合完了応答を出して受け付け、モーション系またはセンス系のコマンドを実行する。この場合、他のポートの結合でデータ転送を行っている磁気テープドライブユニットと、並行して実行するモーション系またはセンス系コマンドの磁気テープドライブユニットとは、別ユニットでなければならない。ユニットの区別はスタートＩ／Ｏ要求のコマンドパラメータとして受信されるドライブ機番でチェックする。
【０１８１】
　データ転送系と制御系およびセンス系が独立に処理可能な磁気テープ制御ユニット１０と磁気テープドライブユニット１２−１，１２−２側の間のデバイスバスとしては、図示の制御用バス９８とデータ転送用バス９６の独立したバス以外に、コマンド処理とデータ転送が同時に行えるような共通バス構成を用いることもできる。
【０１８２】
　図２５のフローチャートは、図２４の処理動作である。まずステップＳ１で、ポートに対する起動要求をチェックしており、起動要求を受けると、ステップＳ２で、そのポートをチャネルと結合してコマンドの転送処理を行う。次にステップＳ３で、受信コマンドを解析する。このコマンド解析によって、データ転送を伴わないモーション系かまたはセンス系のコマンドかが判る。
【０１８３】
　次のステップＳ４では、データ転送を伴わないコマンドか、即ちモーション系のコマンドかまたはセンス系のコマンドかを判別する。モーション系コマンドまたはセンス系コマンドであれば、ステップＳ５に進み、動作中の磁気テープドライブユニットがあるか否かチェックする。動作中の磁気テープドライブユニットがあれば、ステップＳ６で、受信コマンドの解析で得られたドライブ機番と現在動作中のドライブ機番が同一か否かチェックする。
【０１８４】
　同一であれば、コマンドの如何に関わらず実行することはできないため、ステップＳ１０でビジィ応答を返す。ドライブ機番が異なっていれば、モーション系コマンドまたはセンス系コマンドは実行可能であることから、ステップＳ７で受信コマンドを実行する。続いてステップＳ８で、コマンド実行に伴う一連の転送処理の終了を判別すると、ステップＳ９でユニットエンドを応答して、再びステップＳ１に戻る。勿論、ビジィ応答を行ったポートがあれば、ユニットエンドに伴ってビジィエンドを応答する。
【０１８５】
　一方、ステップＳ４でデータ転送を伴うライトコマンドまたはリードコマンドであった場合には、ステップＳ１１に進み、他のポートでデータ転送中か否かチェックする。他のポートでデータ転送中にあれば、データ転送はできないことから、ステップＳ１２でビジィ応答を返し、ステップＳ１に戻る。
【０１８６】
　他のポートでデータ転送中でなければ、ライトコマンドまたはリードコマンドは実行可能であることから、ステップＳ１２でコマンド実行に伴うデータ転送処理を行い、ステップＳ８で転送終了を終了すると、ステップＳ９でユニットエンドを応答して、再びステップＳ１の処理に戻る。
【０１８７】
　尚、前述した本発明の各実施例にあっては、磁気テープを記憶媒体とした磁気テープ制御ユニットおよび磁気テープドライブユニットで構成された入出力サブシステムを例にとっているが、これ以外の入出力装置として、光磁気ディスク装置、磁気ディスク装置など、適宜の入出力装置を対象とした入出力制御装置を含むものである。また本発明は、実施例に示した数値による限定は受けない。
【図面の簡単な説明】
【０１８８】
【図１】本発明の原理説明図
【図２】本発明の他の実施例の原理説明図
【図３】本発明が適用されるシステムの構成図
【図４】本発明の入出力制御ユニットのブロック図
【図５】本発明の実施例のブロック図
【図６】図５の起動時間の計測のタイムチャート
【図７】図５の入出力処理のタイムチャート
【図８】図５の入出力処理のフローチャート
【図９】図５の起動時間計測のフローチャート
【図１０】図５の待ち時間のタイマセットのフローチャート
【図１１】本発明の変形実施例のブロック図
【図１２】他の発明の実施例のブロック図
【図１３】図１２の入出力処理のフローチャート
【図１４】他の発明の実施例のブロック図
【図１５】図１４の入出力処理のフローチャート
【図１６】他の発明の実施例のブロック図
【図１７】図１６の入出力処理のタイムチャート
【図１８】図１６の入出力処理のフローチャート
【図１９】他の発明の第１実施例のブロック図
【図２０】図１９の入出力処理のタイムチャート
【図２１】図１９の入出力処理のフローチャート
【図２２】他の発明の実施例のブロック図
【図２３】他の発明の実施例のブロック図
【図２４】他の発明の実施例のブロック図
【図２５】図２４の入出力処理のタイムチャート
【図２６】従来装置のブロック図
【図２７】従来の入出力制御で起きるビジィ−ユニットエンドの循環のタイムチャート
【図２８】入出力ポートにクロックに同期したタイムスロットを割当てる従来制御の説明図
【符号の説明】
【０１８９】
１０：磁気テープ制御ユニット（入出力制御装置）
１２−１〜１２−８：磁気テープドライブユニット（入出力装置）
１４−１〜１４−８：ホストコンピュータ（上位装置）
１６−１〜１６−８：チャネル装置
１８−１〜１８−８：チャネルバス
２０−１〜２０−８：入出力ポート（ポート）
２２：デバイスバス
２４：ホストインタフェース部
２５：デバイスバス
２６：バッファメモリ
２８：フォーマッタ部
３０：通信情報メモリテーブル
３２，３８：ＭＰＵ
３４，４０：ファームウェア
３５：ＣＲＴ
３６：インタフェースプロセッサ
４２：フォーマットプロセッサ
４４：内部バス
４５：キーボード
４６：ルート制御部
４８：起動時間計測記憶部
５０：ビジィ率計測記憶部
５２，５８：タイマ
５４，６０：起動数カウンタ
５６，６２：ビジィ数カウンタ
６４，６６：カウンタ
６８：ビジィ−ユニットエンド循環数判定部（判定部）
７４，７６：再試行割込み処理部
８０：割込みタイマ
８２：ビジィ応答記憶部
９０：データルート制御部
９２，９４：コマンド解析実行部
９６：データバス
９８：制御バス
【図１】
2004005727.tif 000003
【図２】
2004005727.tif 000004
【図３】
2004005727.tif 000005
【図４】
2004005727.tif 000006
【図５】
2004005727.tif 000007
【図６】
2004005727.tif 000008
【図７】
2004005727.tif 000009
【図８】
2004005727.tif 000010
【図９】
2004005727.tif 000011
【図１０】
2004005727.tif 000012
【図１１】
2004005727.tif 000013
【図１２】
2004005727.tif 000014
【図１３】
2004005727.tif 000015
【図１４】
2004005727.tif 000016
【図１５】
2004005727.tif 000017
【図１６】
2004005727.tif 000018
【図１７】
2004005727.tif 000019
【図１８】
2004005727.tif 000020
【図１９】
2004005727.tif 000021
【図２０】
2004005727.tif 000022
【図２１】
2004005727.tif 000023
【図２２】
2004005727.tif 000024
【図２３】
2004005727.tif 000025
【図２４】
2004005727.tif 000026
【図２５】
2004005727.tif 000027
【図２６】
2004005727.tif 000028
【図２７】
2004005727.tif 000029
【図２８】
2004005727.tif 000030