<目 次>
1.システム構成
2.学習処理
3.ビジィ応答−ビジィエンドの循環チェック処理
4.時系列処理
5.再試行割込み処理その1
6.再試行割込み処理その2
7.入出力ポートのインテリジェント化
1.システム構成
図3は、磁気テープ装置をドライブユニットとして用いた本発明の入出力制御装置のシステム構成である。
図3において、入出力制御装置として機能する磁気テープ制御ユニット10に対しては、デバイスインタフェース22を介して、この実施例にあっては、8台の磁気テープドライブユニット12−1〜12−8が接続される。磁気テープドライブユニット12−1〜12−8には、予めドライブ機番#1〜#8が設定される。
磁気テープ制御ユニット10は、この実施例にあっては、8つの入出力ポート20−1〜20−8を有する。入出力ポート20−1〜20−8はポート番号A〜Hが定義される。以下の説明では、単にポートA〜Hと表現する。
磁気テープ制御ユニット10のポートA〜Hのそれぞれには、ホストコンピュータ14−1〜14−8に設けたチャネル装置16−1〜16−8がチャネルバス18−1〜18−8を介して接続される。ここで、チャネル装置16−1〜16−8にはチャネル番号A〜Hが定義されている。以下の説明では単に、チャネルA〜チャネルHと表現する。
ホストコンピュータ14−1〜14−8のチャネルA〜Hと磁気テープ制御ユニット10のポートA〜Hの間のチャネルバス18−1〜18−8は、それぞれ固有の転送速度をもっている。例えば、チャネルAとポートAを結ぶチャネルバス18−1は電気的なチャネルバスであり、その転送速度は4.5MBsとなる。
このような電気的なチャネルバス18−1としては、IBM製のブロック・マルチプレクス・チャネルインタフェース(BMC)を使用することができる。また、チャネルBとポートBを結ぶチャネルバス18−2は、例えば光チャネルバスであり、その転送速度は9MBsと高速である。このような光チャネルバス18−2としては、例えばIBM製のESCONチャネルを使用することができる。
残りのチャネルバス18−3〜18−8についても、各々固有の転送速度をもったチャネルバスが使用される。勿論、本発明にあっては、少なくとも複数のチャネルバスの転送速度が高速と低速の2種類である場合を対象としている。例えば、転送速度4.5MBsの電気的なチャネルバス18−1は低速チャネルバスとなり、これに対し光チャネルバスを用いたチャネルバス18−2は、転送速度が9MBsであることから高速チャネルバスとなる。
以下の説明では、低速チャネルバス18−1のチャネルAを低速チャネルといい、高速チャネルバス18−2のチャネルBを高速チャネルという。同様に、ポートA,Bについても、ポートAが低速入出力ポート、ポートBが高速入出力ポートとなる。
図4は、図3の磁気テープ制御ユニット10のハードウェア構成である。磁気テープ制御ユニット10は、ホストインタフェース部24、バッファメモリ26、フォーマッタ部28および通信情報メモリテーブル30で構成される。ホストインタフェース部24には、MPU32、ファームウェア34およびインタフェースプロセッサ36が設けられる。
インタフェースプロセッサ36には、ホストコンピュータとのチャネルバスを接続した入出力ポート20−1〜20−8で実現されるポートA〜Hが設けられる。フォーマッタ部28には、MPU38、ファームウェア40およびフォーマッタプロセッサ42が設けられる。
本発明の入出力制御は、ホストインタフェース部24に設けられたMPU32、ファームウェア34およびインタフェースプロセッサ36の制御機能により実現することができる。バッファメモリ26には、ホストコンピュータと磁気テープドライブユニットとの間でやり取りされるデータが一時的に格納される。バッファメモリ26を経由したデータ転送により、入出力制御装置10とチャネル側の転送、入出力制御装置10と磁気テープドライブユニット側の転送は、非同期に行われることになる。
ホストインタフェース部24に設けられたMPU32は、インタフェースプロセッサ36において、いずれかのポートA〜Hに起動要求を受けると、他のポートが結合中でないことを条件に起動要求を受け入れ、チャネルバスと結合して、ホストコンピュータからの入出力要求に基づくチャネルコマンドワードの転送処理を行う。
チャネルコマンドは、通常、一連のコマンドシーケンスを実現するための異なったコマンド語の連続するコマンドチェインニングと、データのブロック単位の転送を行う際のリードコマンドまたはライトコマンドを繰り返し転送するためのデータチェインニングがある。
このようなチャネルコマンドによる1回の転送処理ごとに、チャネル装置は対応する磁気テープ制御ユニット10のポートに対しスタートI/O要求(スタートI/Oコマンド)を発行して起動要求を行う。この起動要求の際には、通常、磁気テープドライブユニットのドライブ機番#1〜#8のいずれかを指定する。インタフェースプロセッサ36は、ポートA〜Hに対するチャネルバスからのスタートI/O要求を監視しており、スタートI/O要求を認識すると、他のポートが結合中にないことを条件に、スタートI/Oコマンドに対する正常終了を示す結合完了応答を返す。もし、スタートI/O要求を受けた際に他のポートが結合中であった場合には、基本的にはビジィ応答を返すことになる。
MPU32は、インタフェースプロセッサ36を介して受信したチャネル側からのコマンドを解読し、磁気テープドライブユニットの制御に必要なパラメータなどの各種情報を通信情報メモリテーブル30に書き込む。また、磁気テープドライブユニットに対する書込みのために転送されたデータについては、バッファメモリ26に書き込む。
フォーマッタ部28のMPU38は、MPU32とは非同期に、通信情報メモリテーブル30をサイクリックに参照しており、磁気テープドライブユニットの制御またはデータ転送に必要な情報を認識すると、フォーマットプロセッサ42を経由して、指定されたドライブ機番をもつ磁気テープドライブユニットに対する各種の制御およびデータ転送のための処理動作を指示する。
またMPU38は、サイクリックに磁気テープドライブユニット12−1〜12−8の状態を検出して、検出結果を通信情報メモリテーブル30に書き込んでいる。このため、チャネル側より磁気テープドライブユニットの状態を確認するためのセンスコマンドをホストインタフェース部24で受けた場合、MPU32は通信情報メモリテーブル30を参照することで磁気テープドライブユニットの状態を認識し、ステータスコマンドに対し応答することができる。
更にインタフェースプロセッサ36には、チャネルバスからの転送データを圧縮した後にバッファメモリ26に書き込み、また磁気テープドライブユニットからバッファメモリ26に読み出された圧縮リードデータを元のデータに伸長してチャネルバスに送り出すための圧縮伸長部としての機能が設けられる。このデータの圧縮伸長処理は、リードまたはライト要求の最初に送られてくるセットコマンドのビットフラグにより伸長または圧縮するか、そのまま処理するか、指定することができる。
一方、オプションとして、デバイスインタフェース25を介してCRT35とキーボード45が設けられる。これによりオペレータはホストインタフェース部24のMPU32の入出力制御に必要な各種のパラメータを外部から設定できる。勿論、ホストコンピュータ側のCRTとキーボードを使用して、MPU32の制御パラメータを設定してもよい。
2.学習処理
図5は本発明の実施例であり、磁気テープ制御ユニット10にポートAとポートBの2つを設けた場合を例にとっている。
磁気テープ制御ユニット10にはルート制御部46が設けられ、ポートAまたはポートBに対するチャネルバスからの起動要求に基づいて、いずれか一方のポートを選択するチャネルスイッチとしての機能をもつ。ポートA,ポートBのそれぞれにはタイマ52,58が設けられている。タイマ52,58は、ポートA,Bからのチャネルバスに対するビジィエンドで起動し、その後にチャネルバスから起動要求を受けたときに停止する。
タイマ52,58により計測される起動時間は、より正確には、チャネルバスに対しビジィ応答を行った後に他のポートの結合終了に伴ってビジィエンドを応答した時点から、このビジィエンドを受けたビジィ解除待ちのチャネル装置からの起動要求がポートで受信されるまでの時間となる。したがって起動時間そのものはチャネル装置がビジィ解除待ちの状態でユニットエンドを受信して再度起動要求を発行する時間を表わすことになり、チャネルバスの転送速度に依存する。
ここで、ポートAは低速チャネルバス18−1に接続された低速ポートであり、ポートBは高速チャネルバス18−2に接続された高速ポートとなっている。このため、タイマ52で計測される低速ポートAの起動時間T1は、タイマ58で計測される高速ポートBの起動時間T2より長い時間となる。起動時間計測記憶部48は、タイマ52,58による低速ポートAの起動時間T1と高速ポートBの起動時間T2を記憶する。
更に磁気テープ制御ユニット10には、ビジィ率計測記憶部50が設けられている。ビジィ率計測記憶部50は、ポートAに設けた起動数カウンタ54とビジィ数カウンタ56、およびポートBについて設けた起動数カウンタ60とビジィ数カウンタ62のそれぞれの計数値を用いて、ポートA,Bごとにビジィ率R1,R2を算出して記憶する。
例えばポートAを例にとると、起動数カウンタ54はポートAに対するチャネルバス18−1からの起動要求があるごとにカウントアップされ、ポートAに対する運用中の起動要求の総数を表わす。ビジィ数カウンタ56は、ポートAに対する起動要求のうち、他のポートBが結合中でビジィ応答を行った回数を計数する。
ビジィ率計測記憶部50は、起動数カウンタ54がカウントアップするごとに、即ち起動要求があるごとに、そのときの起動数カウンタ54の値でビジィ数カウンタ56の値を割って、ポートAのビジィ率R1を算出する。この点は、ポートBの起動数カウンタ60およびビジィ数カウンタ62についても同様であり、起動要求を受けるごとにビジィ数カウンタ62の値を起動数カウンタ60の値で割って、ポートBのビジィ率R2を算出して記憶する。
更に、起動時間計測記憶部48にあっては、タイマ52,58で計測されたポートA,Bの起動時間T1,T2をそのまま記憶するのではなく、起動時間はそのときの状況により異なることから、最大時間Tmax ,最小時間Tmin および平均時間Tavに分けて記憶する。最大時間Tmax の記憶は、前回までに得られた最大時間Tmax と今回得られた起動時間Tを比較し、起動時間Tが大きければ、それまでの最大時間Tmax を更新し、小さければ、それまでの最大時間Tmax を残す。最小時間Tmin についても同様にして更新する。
平均時間Tavについては、現時点までの起動時間の総和を起動要求回数で割ることで求めることができる。全ての起動時間の総和をとった場合には、データビット長が大きくなりすぎることから、一定数の起動時間ごとの移動平均を計算することが望ましい。
ルート制御部46は、高速ポートBに起動要求を受けると、ポートAが非結合状態にあっても直ちに結合完了応答を行わず、ビジィ率計測記憶部50を参照して、ポートAとポートBのビジィ率R1,R2を比較し、ビジィ率R1,R2が同じになるようにルート制御を行う。通常、低速ポートA側のビジィ率R1が大きく、高速ポートBのビジィ率R2が小さいことから、ビジィ率の大きい低速ポートAの起動時間T1を起動時間計測記憶部48から読み出し、読み出した低速ポートAの起動時間T1に亘って、ポートBは低速ポートAに対する起動要求の待ち時間を設定する。
このポートAに対する起動要求の待ち時間T1の間に低速ポートAに対し起動要求があると、ルート制御部46はポートAをチャネルバス18−1に結合して転送処理を行い、先に起動要求のあった高速ポートBについては、ビジィ応答を返すようになる。この結果、ビジィ率の高い低速ポートA側が優先的に起動要求を受け入れられることになり、高速ポートBとのビジィ率をほぼ等しくさせることができる。
また起動時間計測記憶部48には、低速ポートAの起動時間T1として最大時間Tmax ,平均時間Tavおよび最小時間Tmin が記憶されていることから、ポートA,Bのビジィ率R1,R2の関係から、例えば次のように低速ポートAに対する起動要求の待ち時間を設定する。
1)R1>R2の場合は、最大時間Tmax を待ち時間に設定する。
2)R1=R2の場合は、平均時間Tavを待ち時間に設定する。
3)R1<R2の場合は、最小時間Tmin を待ち時間に設定する。
図6は、図5の磁気テープ制御ユニット10における起動時間計測処理のタイムチャートである。いま、ホストコンピュータ14−2がスタートI/O要求100をポートBに発行すると、このときポートAは使用されていないことから、正常終了を示す結合完了応答102が返され、チャネルBおよびポートBが転送処理104,106を行う。
この転送処理104,106の間に、低速チャネルAからスタートI/O要求108が行われたとすると、低速ポートAからビジィ応答110が返される。転送処理が済むと、高速ポートBよりユニットエンド112が高速チャネルBに報告され、続いて低速ポートAよりビジィ解除待ちにある低速チャネルAに対しビジィエンド114が出される。このビジィエンド114に対し低速チャネルAはビジィ解除を認識し、スタートI/O116を発行する。
図5のタイマ58は、この低速ポートAにおけビジィエンド114からスタートI/O要求116を受けるまでの時間T1を起動時間として計測する。スタートI/O要求116を受けた低速ポートAは、正常終了を示す結合完了応答118を出し、低速チャネルAおよび低速ポートAで転送処理120,122を行う。
この転送処理120,122の間に、高速チャネルBからスタートI/O要求124が行われたとすると、高速ポートBからビジィ応答126が返される。転送処理が済むと、低速ポートAよりユニットエンド128が低速チャネルAに報告され、続いて高速ポートBよりビジィ解除待ちにある高速チャネルBに対しビジィエンド130が出される。このビジィエンド130に対し高速チャネルBはビジィ解除を認識し、スタートI/O132を発行する。
図5のタイマ60は、この高速ポートBにおけビジィエンド130からスタートI/O要求132を受けるまでの時間T2を起動時間として計測する。図7は、起動時間計測記憶部48の記憶時間を使用したルート制御部46による入出力制御である。いま高速チャネルBからスタートI/O要求142が高速ポートBに行われ、結合完了応答114により転送処理145,146を行っている間に、低速チャネルAからスタートI/O要求148があると、これはビジィ応答150となる。
この低速チャネルAがビジィ解除待ちの状態で転送処理145,146が終了してユニットエンド146が出され、これに伴い低速ポートAからビジィエンド156が出されると、起動時間T1に基づいた待ち時間Tの設定を行う。待ち時間T0 の間に、高速チャネルBから高速ポートBに対しスタートI/O要求156が先に行われる。しかし、待ち時間T0 のに中にあるので、スタートI/O要求156は受け入れられず、待たされる。
続いて低速チャネルAは、ビジィエンド154を受けてからT1´時間後にスタートI/O要求158を出す。このとき磁気テープ制御ユニット10は、待ち時間Tの設定で低速ポートAに対する起動要求を優先させる待ち時間Tの間にあり、スタートI/O要求158を受け入れて結合完了応答160を返し、転送処理162,164に入る。
続いて高速ポートBより高速チャネルAに対し、スタートI/O要求156に対するビジィ応答166を返す。転送処理162,164が済むとユニットエンド168を出し、またビジィエンド170を出す。そして、高速チャネルBと高速ポートBの結合による転送処理174,176を行う。
このように、高速ポートBに対する起動要求の受付時に低速ポートA側の起動時間に亘る待ち時間Tを設けて、低速ポートAに対する起動要求を待って処理を行うことで、高速ポートBに対する起動要求が連続していても、低速ポートAに対する起動要求があればこれを正常に受け付けて処理することができ、高速ポートB側にサービスが偏ってしまうことを防止できる。
図8は、図5の磁気テープ制御ユニット10における起動時間およびビジィ率を用いた入出力制御処理のフローチャートである。
ステップS1で起動要求があると、ステップS2に進み、高速ポートか否かチェックする。高速ポートであればステップS3に進み、例えば低速ポートで計測した起動時間T1を待ち時間Tとしてタイマにセットし、ステップS4で起動時間T1がタイムアウトするまで、ステップS5で低速ポートに対する起動要求をチェックする。
起動時間T1の間に低速ポートに起動要求があったことがステップS5で判別されると、ステップS6に進んで、低速ポートを低速チャネルに結合して、転送処理を開始する。同時に、ステップS7で高速ポートから高速チャネルにビジィ応答を行う。低速側での転送処理の終了がステップS8で判別されると、ステップS9でユニットエンドを低速ポートから出し、次にビジィエンドを高速ポートから出す。このため、ビジィ解除待ちにある高速ポートから再度、起動要求が行われ、再びステップS1の処理となる。
一方、ステップS2で低速ポートからの起動要求が判別された場合には、ステップS10に進み、高速ポートが結合中にないことを条件に、低速ポートをチャネルに結合して転送制御を行う。もし高速ポートが結合中であれば、低速ポートより制御ユニットエンドを応答し、高速ポートの結合終了による制御ユニットエンドの応答を待って低速ポートに再度起動要求を行わせる通常の処理となる。
図9のフローチャートは図5の起動時間計測記憶部48の処理動作であり、ポートA,Bごとに独立して処理動作を行う。例えばポートAを例にとると、ステップS1でビジィエンドの応答を判別し、ステップS2に進んで、タイマをスタートする。続いてステップS3で、ポートAに対する起動要求の受信をチェックしており、起動要求を受信するとステップS4に進み、ステップS2で起動したタイマを停止する。
続いてステップS5で、タイマに保持されている時間を起動時間として取り込んで記憶する。次にステップS6で、今回計測した起動時間を含めた平均時間Tavを算出し、ステップS7で、最小時間の条件を満足すれば現在の最小時間Tmin を更新し、またステップS8で、最大時間の条件を満足すれば最大時間Tmaxを更新する。
図10のフローチャートは、図8のステップS3で低速ポートの起動時間T1をタイマにセットする際の詳細を示す。まずステップS1で、起動要求を受けた高速ポートBのビジィ率R2と、要求待ちにある低速ポートAのビジィ率R1を算出する。このビジィ率R1,R2のそれぞれは、図4のポートA,Bのそれぞれに設けたビジィ数カウンタ56,62の計数値を起動数カウンタ54,60の計数値で割って得たビジィ率計測記憶部50に格納している値である。続いてステップS2で、低速ポートAのビジィ率R1と高速ポートBのビジィ率R2の大小関係を比較する。低速ポートのビジィ率R1が高速ポートのビジィ率R2より大きければ、ステップS3に進み、起動時間計測記憶部48に格納している低速ポートAの起動時間の内の最大時間Tmax を待ち時間としてセットする。低速ポートのビジィ率R1と高速ポートのビジィ率R2が等しい場合には、ステップS4で低速ポートの起動時間の平均時間Tavを待ち時間にセットする。更に、低速ポートのビジィ率R1が高速ポートのビジィ率R2より小さいときは、ステップS5に進み、低速ポートの起動時間の内の最小時間Tmin を待ち時間にセットする。
尚、図10による高速ポートと低速ポートのビジィ率に基づいた起動時間の待ち時間へのセットに限定されず、高速ポートのビジィ率と低速ポートのビジィ率がほぼ等しくなるように待ち時間を決める適宜の方式を採用することができる。例えば、低速ポートの起動時間として平均時間Tavのみを使用し、ステップS3,S5の最大時間または最小時間の代わりに平均時間に所定の重み係数を掛け合わせた時間を求めてセットするようにしてもよい。
図11は本発明の変形実施例である。この実施例は、高速ポートのユニットエンドの際に、低速ポートから低速チャネルにビジィエンドを応答してから起動要求を受信するまでの起動時間を計測し、その後の高速ポートBに対する高速チャネルからの起動要求を、計測した起動時間に亘り待たせ、その間に低速ポートに対する低速チャネルから処理要求を受け付けるようにしたことを特徴とする。
図11において、低速ポートAに対しては起動時間計測部230が設けられる。起動時間計測部230は、図6のタイムチャートと同様に、低速ポートAが低速チャネルAにビジィエンドを出してからスタートI/O要求(起動要求)を受けるまでの起動時間Tを計測する。待ち時間決定部232は、起動時間計測部230の計測時間Tに基づいて、ルート制御部46における待ち時間T0 を設定する。この待ち時間T0 の設定は、計測時間Tと同じ時間あってもよい。
また計測時間Tに応じて待ち時間T0 を可変設定してもよい。通常、計測時間Tに対し実際の待ち時間T0 を長めにした方が、低速側へのサービスの割付けが有効にできるので、例えば計測時間Tに1以上の所定の係数Kを掛け合せた待ち時間T0 を可変設定する。
更に、待ち時間T0 をオペレータの入力操作により設定してもよい。このため待ち時間決定部232に対し、外部に表示部234と入力部236が設けられる。表示部234と入力部236の機能は、図4のデバイスインタフェース25、CRT35及びキーボード45で実現される。
オペレータは、入力部236の操作で待ち時間決定部323に設定された現在の待ち時間T0 を表示部234に読出し表示し、そのときの各チャネルのビジィ状態やホストコンピュータの運用形態を考慮し、任意の待ち時間T0 を入力し、待ち時間決定部232に設定する。
ルート制御部46は、高速ポートBの転送終了でユニットエンドを応答すると、待ち時間設定部232から与えられる待ち時間T0 に亘り、高速ポートBに起動要求があってもビジィ応答を出して待たせる。この待ち時間T0 の間に、低速ポートAに起動要求があれば、直ちに受け付けて転送処理を行う。
待ち時間T0 がタイムアップするか、又は低速ポートAの転送終了でユニットエンドとなると、高速ポートBからビジィエンドを出し、高速チャネルに再度起動要求を行わせて受け付けることになる。
3.ビジィ応答−ビジィエンドの循環チェック処理
図12は本発明の他の実施例である。この実施例は、高速ポートでの連続的な起動要求により、低速ポート側がビジィエンド(ビジィ解除応答)に基づく起動要求に対しビジィ応答を繰り返してしまうビジィ応答−ビジィエンドの循環状態を検出して、低速ポートに優先的にサービスを割り付けるようにしたことを特徴とする。
磁気テープ制御ユニット10の低速ポートAおよび高速ポートBのそれぞれには、カウンタ64,66が設けられる。カウンタ64,66は、ビジィエンドの応答と、応答したビジィエンドに基づく起動要求に対するビジィ応答が行われることで1つカウントアップされる。即ち、1回のビジィ応答−ビジィエンドの循環を検出してカウントアップする。
循環数判定部68は、カウンタ64,66の計数値、即ちビジィ応答−ビジィエンドの循環回数が所定値に達したか否か判定している。循環数判定部68でカウンタ64またはカウンタ66の計数値が所定値に達したことが判定されると、この判定出力を受けてルート制御部46が、循環数が所定数を越えたポートAまたはポートBに対し優先的に起動要求を受け付けるように制御する。
図13のフローチャートは、図12の処理動作である。まずステップS1で、ポートAまたはポートBに対する起動要求の有無をチェックしている。起動要求があると、他のポートと結合中にないことを条件にチャネルに結合して転送処理を行う。ステップS3で転送処理を終了すると、ステップS4でユニットエンドを応答する。
このときビジィ応答を行っていたポートがあれば、そのポートからビジィエンドを応答する。このため、他のポートでもしステップS2の結合による転送中に起動要求が行われてビジィ応答が済んでいると、ステップS4のビジィエンドで図12に示した対応するカウンタがビジィ応答−ビジィエンドの循環数を1つカウントアップすることになる。
次にステップS5で、ビジィ応答−ビジィエンドの循環数が一定値を越えるポートがあるか否かチェックする。もし一定値を越えるポートがあった場合には、ステップS6に進み、一定値を越えるポートに対し起動要求の優先処理を割り付ける。そしてステップS7で起動要求を判別すると、ステップS8で優先割付けポートか否かチェックし、優先割付けポートでなければ、ステップS12でビジィ応答を返す。
この結果、優先割付けポートに対する起動要求のみが受け付けられて、ステップS9でチャネルバスとの結合により転送処理が行われることになる。ステップS10で優先割付けポートの転送処理が終了すると、ステップS11で、優先割付けポートに設けている循環数カウンタをリセットし、ユニットエンドを応答する。このときステップS12でビジィ応答により待ち状態となっている他のポートがあれば、そのポートからビジィエンドを出して起動要求を行わせる。
4.時系列処理
図14は、本発明の他の実施例である。この実施例は、あるポートの結合中における他のポートのビジィ応答の時刻を記憶しておき、結合終了時にビジィ応答時刻の最も古いポートに優先的にサービスを割り付けるようにしたことを特徴とする。
磁気テープ制御ユニット10には、ポートA,ポートBおよびルート制御部46に加えて、ビジィ応答時刻記憶部70と処理ポート決定部72が設けられる。ビジィ応答時刻記憶部70は、ポートAまたはポートBの結合中に他のポートに起動要求が行われてビジィ応答を行った時刻を記憶する。この実施例は、ポートA,ポートBの2つであることから、ポートAの結合中はポートBの応答時刻を記憶し、ポートBの結合中はポートAの応答時刻を記憶する。
処理ポート決定部72は、結合中のポートの転送処理が終了してユニットエンドを応答した際に、ビジィ応答時刻記憶部70を参照し、記憶しているビジィ応答時刻の中の最も古い時刻をもつポートを、次に起動要求を優先的に処理ポートとして決定して、ルート制御部46に通知する。ルート制御部46は、処理ポート決定部72で決定されたポートからの起動要求を優先的に処理する。
この実施例では、ポートA,ポートBの2つしかないことから、ポートAの結合中にポートBがビジィ応答を行うと、処理ポート決定部72は次に優先受け付けるポートとしてポートBを決定し、ルート制御部46はポートAからの起動要求に対してはビジィ応答を行い、ポートBからの起動要求のみを受け付ける。この結果、ポートAが低速ポート、ポートBが高速ポートであっても、それぞれの連続した起動要求に対し、ルート制御部46は交互に起動要求を受け付けることができ、低速ポートAと高速ポートBのビジィ率をほぼ均一にすることができる。
実際には図3の実施例のように、磁気テープ制御ユニット10にはポートA〜Hの8つのポートが設けられており、この場合には、あるポートの結合中に残り7つのポートのいずれかに起動要求があれば、そのときのビジィ応答時刻が記憶される。そして、現在の転送処理が終了してユニットエンドとなった場合には、複数のビジィ応答時刻の中の最も古い時刻をもつポートからビジィエンドを出すことで、起動要求の受付けが割り付けられることになる。
図15のフローチャートは、図14の処理動作である。ステップS1で、複数のポートに対する起動要求を監視しており、特定のポートに起動要求があると、ステップS2で、ポートをチャネルバスに結合して転送処理を行う。ステップS3で転送処理の終了をチェックしており、転送を終了すると、ステップS4で、結合中のポートからユニットエンドを応答する。
このステップS1〜S4において、あるポートの結合中に他のポートから起動要求があれば、ビジィ応答時刻記憶部70に応答時刻が記憶されている。そこで、ユニットエンドを応答した後のステップS5で、ビジィ応答時刻の中から最も古い時刻のポートを処理ポートとして決定し、ステップS6で、決定ポートからビジィエンドを出す。このビジィエンドを受けたビジィ解除待ちチャネルは、起動要求を再度発行する。
続いてステップS7で起動要求をチェックしており、起動要求があると、ステップS8で優先割付けポートか否かチェックする。優先割付けポートでなければ、ステップS12でビジィ応答を返す。この結果、優先割付けポートに対する起動要求のみが受け付けられ、ステップS9で、チャネルバスに結合して転送処理が行われる。
ステップS10で転送処理の終了が判別されると、ステップS11で、処理ポートのビジィ応答時刻をリセットし、ユニットエンドを応答してステップS13に戻り、ビジィ応答時刻の記録が残っていれば再びステップS5に戻り、残っているビジィ応答時刻の中の最も古い応答時刻をもつポートを処理ポートとして決定してビジィエンドを出す処理を繰り返す。ビジィ応答時刻が残っていなければ、再びステップS1に戻る。
5.再試行割込み処理その1
図16は、本発明の他の実施例である。この発明の実施例は、あるポートがチャネルとの結合中に他のポートに起動要求が来たら、ビジィを応答する代わりにチャネル動作の再試行を要求するステータスを応答して、現在処理中の転送処理が終了したら、再試行要求をステータス応答したチャネルに対し再試行開始の割込み要求を行って、再結合するようにしたことを特徴とする。
磁気テープ制御ユニット10には、ポートA,ポートBおよびルート制御部46に加えて再試行割込み処理部74が設けられる。再試行割込み処理部74は、例えばポートAの結合中にポートBに起動要求が来たら、通常はビジィ応答を返していたが、この第4発明にあっては、チャネル動作の再試行を要求するステータスを応答し、ポートBのチャネルバスとの結合を一旦切り離す。
次に、ポートAの結合による転送処理が終了してユニットエンドが応答されたら、再試行要求のステータスを応答したチャネルBに対し再試行開始の割込み要求を行って再結合する。このような再試行割込み処理部74による起動要求に対する再試行要求ステータスの応答を受けたチャネル装置は、チャネル動作の再試行開始の待ち状態に入り、その後、再試行開始の割込み応答を受けると、再度、起動要求からのコマンドシーケンスを開始して再結合する。
このような再試行割込み処理部74の処理により、磁気テープ制御ユニット10側でどのポートと再結合するか決定でき、各ポートに対し平均したサービスを提供できる。例えば、高速ポートBの起動要求が連続しており、高速ポートBの結合中に低速ポートAに起動要求があると、再試行割込み処理部74は再試行要求ステータスを応答し、ポートAに対するチャネル側を再試行待ち状態とする。
高速ポートBの転送処理が終了してユニットエンドを応答すると、再試行割込み処理部74は低速ポートAを経由して、対応するチャネル装置側に再試行開始の割込み要求を行って再結合し、再試行開始の割込みを受けたチャネル装置から起動要求を再発行し、一連のコマンドシーケンスに従った転送処理を行う。
この結果、高速ポートB側に起動要求が連続しても、高速ポートBの結合中に生じた低速ポートAの起動要求がビジィ応答として排除されず、割込みにより強制的に低速ポートAの起動要求が受け入れられ、低速ポートAと高速ポートBに平均してサービスを提供できる。
図17は、図16で高速ポートBの結合中に低速ポートAに起動要求があった場合の処理である。まず高速チャネルBよりスタートI/O要求200が高速ポートBに対し行われると、結合完了応答202を行った後、転送処理204,206が行われる。この転送中に低速チャネルAより低速ポートAにスタートI/O要求208があると、再試行割込みステータス応答210が行われ、低速チャネルAは再試行起動待ちに入る。
転送処理204,206が終了して制御ユニットエンド212が出されると、これに伴って低速ポートAより低速チャネルAに対し再試行開始割込み通知214が行われ、再試行開始待ち状態にある低速チャネルAより再度、スタートI/O要求216が発行される。これに対し再結合により結合完了応答218が出され、低速チャネルAと低速ポートAの間の結合で転送処理220,222が行われる。転送処理が終了すると、制御ユニットエンド224が出される。
図18のフローチャートは、図16の実施例の処理動作である。まずステップS1で、起動要求の有無をチェックしており、特定のポートに起動要求があると、ステップS2に進み、他のポートが結合状態にないことを条件に、チャネルと結合して転送処理を行う。転送中はステップS3で転送終了が判別されるまで、ステップS4で他のポートに起動要求があるか否かチェックしている。
もし起動要求があると、ステップS5に進み、起動要求を行ったチャネル装置に対し、ステップS5で、再試行ステータスを応答するか否かチェックする。ここで、現在結合中のポートが低速ポートであり、結合中に起動要求を受けたポートが高速ポートであった場合には、優先的に処理する必要がないことから、ステップS7でビジィ応答を返す。
一方、現在結合中のポートが高速ポートであり、結合中に起動要求を受けたポートが低速ポートであった場合には、優先的に処理する必要があることから、ステップS6に進み、再試行ステータスを応答する。
ステップS7で転送終了が判別されると、ステップS8に進み、結合中のポートからユニットエンドを応答する。続いてステップS9で、転送中に再試行ステータスの応答を行ったか否かチェックし、もし行っていれば、ステップS10で、再試行ステータスの応答を行った他のポートから再試行開始の割込み要求を発行する。
もし転送中に再試行ステータスを応答していなければ、ステップS11で、ビジィ応答を行った他のポートからユニットエンドを応答し、再びステップS1に戻る。
尚、上記の実施例は、低速ポートAと高速ポートBの2つのポートを例にとっているが、図4に示したように、ポートA〜Hの8つの場合についても同様に適用できる。ポートが3以上となった場合には、あるポートの結合中に他の複数のポートで割込み要求を受ける場合があることから、割込み要求に対する再試行割込み処理に優先順位を付け、その優先順位に従って再試行開始の割込み通知を行えばよい。
6.再試行割込み処理その2
図19は、本発明の他の実施例である。この発明にあっては、あるポートの結合中に所定の割込み条件が成立したら、現在結合中のポートからチャネルに対し再試行要求のステータスを応答して、一旦結合を切り離す。次に、全てのポートに関しビジィ応答の状況、例えば最も新しいビジィ応答時刻やビジィ回数をチェックするか、あるいは割込み要求を解析し、どのポートに対するサービスを優先させるかを決定する。そして優先処理を決定したポートからユニットエンドを応答して、優先的に転送処理を行う。転送処理が終了したら、結合を切り離したポートから再試行開始の割込み要求を行って再結合し、一度中断した処理を再開する。
図19の実施例は、割込み条件として一定の時間間隔で割込みを発生させるようにしたことを特徴とする。磁気テープ制御ユニット10には、ポートA,ポートBおよびルート制御部46に加えて、割込みタイマ80、ビジィ応答記憶部82および再試行割込み処理部76が設けられる。割込みタイマ80は、予め定めた一定の時間間隔で再試行割込み処理部76にタイマ出力を生じ、割込み処理を行わせる。
ビジィ応答記憶部82には、ポートAとポートBのビジィ状態を示す情報として例えば最新のビジィ応答を行った時刻およびビジィ回数が記憶されている。再試行割込み処理部76は、例えば高速ポートBの結合中に割込みタイマ80のタイムアウトで割込み動作を開始し、現在結合中にある高速ポートBよりチャネル装置に対し再試行要求のステータスを応答して、一旦結合を切り離す。
高速ポートBとの結合を切り離した後、ビジィ応答記憶部82に記憶している全ポート、即ちポートA,ポートBのそれぞれのビジィ状態、例えばビジィ応答の最新時刻とビジィ回数を参照し、どのポートに対するサービスを優先すべきかを決定する。例えば、現在高速ポートBについては処理中であることから、他のポートとなる低速ポートAについてのビジィ時刻が最も古い時刻で、またビジィ回数がある値を示しているため、再試行割込み処理部76は低速ポートAを優先的な処理ポートと決定する。
処理ポートを決定すると再試行割込み処理部76は、ルート制御部46を通じて、決定した処理ポートAよりチャネル装置に対しユニットエンドを応答させる。このポートAからのユニットエンドを受けて、それまでのビジィ応答により待ち状態にあるチャネル装置より起動要求が低速ポートAに対し行われ、有効に結合されて転送処理を行う。
低速ポートA側の転送処理が終了してユニットエンドが応答されると、再試行割込み処理部76は、処理を中断して切り離していた高速ポートBよりチャネル装置に対し再試行開始の割込み要求を発行する。この割込み要求を受けて、チャネル装置より高速ポートBに対し起動要求が行われ、一旦中断された転送処理が再開される。また、低速ポートAの優先的な処理を終了してユニットエンドを発行したときに、同時にビジィ応答記憶部82の低速ポートAに関するビジィ応答時刻およびビジィ回数はリセットされる。
図20のタイムチャートは、図19の再試行処理の動作である。まず、高速チャネルBよりスタートI/O要求300が高速ポートBに対し行われ、他の低速ポートAが結合中にないことから、正常終了としての結合完了応答302が返され、高速チャネルBおよび高速ポートBは転送処理304,306を行う。この転送処理中に割込みタイマによるタイマ割込み308が発生すると、高速ポートBより高速チャネルBに対し再試行ステータス応答310を出して、結合を切り離す。
結合の切離し後に、全ポートA,Bについてビジィ応答の状態をチェックし、このとき低速ポートA側にビジィ応答があった場合には、優先的に処理するポートとして低速ポートAを決定する。そして優先処理を決定したポートAより低速チャネルAに対しユニットエンド314を発行し、低速チャネルAからスタートI/O要求316を発行させる。
スタートI/O要求316は低速ポートAで正常に受け入れられ、結合完了応答318を返した後、低速チャネルAと低速ポートAの間で転送処理320,322が行われる。この転送処理が終了すると、低速ポートAよりユニットエンド324が応答され、次に結合を一旦切り離していた高速ポートBから高速チャネルBに対し再試行開始割込みの通知326が行われる。
このため、再試行待ち状態にあった高速チャネルBからスタートI/O要求328が出され、高速ポートBで受け付けられて正常終了となって結合完了応答330を返し、一旦中断した転送処理を転送処理332,334として再開する。再開した転送処理が終了すれば、ユニットエンド336を高速ポートBから発行する。
このように割込み条件の成立時に、磁気テープ制御ユニット側で現在の結合を切り離してビジィ状態に応じて優先的に処理すべきポートを決定して割込み的に転送処理を行わせることで、高速ポートに対する起動要求が連続するような場合にも、低速ポート側についてビジィ−ユニットエンドの循環を防止することができる。
図21のフローチャートは、図18の割込みタイマを用いた再試行割込み処理の処理動作である。まずステップS1で、各ポートに対する起動要求の有無をチェックしており、あるポートに起動要求があると、ステップS2に進み、他のポートと結合状態にないことを条件に、チャネルと結合して転送処理を開始する。
転送中は、ステップS3で転送終了が判別されるまで、ステップS4で割込みタイマのタイムアップを監視している。転送中に割込みタイマがタイムアップしたら、ステップS5に進み、現在結合中のポートから再試行要求のステータス応答を行って結合を切り離す。次にステップS6で、全ポートのビジィ応答の要因例えば時刻と回数を解析して、優先処理ポートを決定する。
ステップS7では、決定した優先処理ポートとステップS5で切り離した切離しポートとが同一ポートか否かチェックする。同一ポートでなければ、ステップS8で、決定ポートからチャネルに対しユニットエンドを応答し、これに伴う起動要求をステップS9で受けて、ポートを結合して転送処理を行う。
続いてステップS10で、割込みによる転送処理が終了すると、ステップS11で、ユニットエンドを応答して結合を切り離し、次にステップS12で、結合切離しにより再試行開始待ち状態にあるチャネル装置に対し、結合切離しポートから再試行開始の割込み要求を行う。
この割込み要求を受けて、再試行開始待ち状態にあるチャネル装置より起動要求が再度行われ、これがステップS1で判別されて、ステップS2で再びポートとチャネルを結合して転送処理を再開する。再開した転送処理の終了がステップS3で判別されると、ステップS13でユニットエンドを応答して、一連の転送処理が終了する。
一方、ステップS6で全ポートのビジィ応答の要因を解析して決定された最優先処理ポートが、ステップS5で結合を切り離したポートと同一ポートであった場合には、直ちにステップS12に進んで、切離しポートから再試行開始の割込み要求を行って、再結合による転送処理を直ちに再開する。
この図21のフローチャートから明らかなように、図19の高速ポートBの結合中に割込みタイマによる割込み条件が成立すると、ビジィ待ちにある低速ポートAの優先処理が決定されて、割込みにより低速ポートA側の転送処理を終了し、その後に高速ポートBの中断した転送処理を再開することになる。
また、低速ポートA側の処理中に割込みタイマによる割込み条件が成立した場合には、ビジィ応答回数が低速ポート側に偏っていれば、最優先処理ポートとして切離しポートと同じ低速ポートAが再び最優先処理ポートに決定され、この場合には直ちに再結合のための再試行開始の割込み要求によって中断した低速ポートAでの転送処理が再開される。勿論、状況によっては低速ポートの処理中に高速ポート側の転送処理が優先的に処理されるケースもあり得る。
また図19〜図21の実施例は、ポートA,Bの2つを例にとっているが、図5に示したように、実際には磁気テープ制御ユニット10には8つのポートA〜Hが設けられており、再試行割込み処理部76は割込みタイマによる割込み通知を受けた際に8つのポートA〜Hに関するビジィ応答の状態をチェックして、優先処理を行うポートを決定することになる。
図22は本発明の他の実施例であり、この実施例は、各ポートで一定の回数のコマンド処理を実行したことで割込み条件が成立したものと判断して再試行割込み処理を実行するようにしたことを特徴とする。
図22において、磁気テープ制御ユニット10には低速ポートA、高速ポートB、ルート制御部46、再試行割込み処理部76、ビジィ応答記憶部82およびコマンドカウンタ84,86を設けている。コマンドカウンタ84は、低速ポートAのコマンド実行回数を計数する。コマンドカウンタ86は、高速ポートBのコマンド実行回数を計数する。
再試行割込み処理部76は、コマンドカウンタ84または86の計数値が予め定めた一定回数に達すると再試行割込み処理を実行する。例えば高速ポートBの結合による転送処理で一連のコマンドシーケンスが実行されており、コマンドカウンタ86でコマンド実行に伴ってカウントアップが行われる。このときの計数値が一定回数を越えたことを再試行割込み処理部76が判定すると、現在結合中のポートBよりチャネル装置に対し再試行要求のステータス応答を行って結合を切り離す。
結合を切り離した後、再試行割込み処理部76は、ビジィ応答記憶部82を参照し、全てのポートA,Bについてのそれまでのビジィ応答の状況をチェックする。具体的には、ポートA,Bの各々におけるビジィ応答の最新応答時刻およびビジィ回数をチェックする。そしてビジィ応答時刻が古くビジィ応答回数の多いポートを最優先処理を行うポートとして決定する。この場合には、低速ポートAを最優先処理ポートに決定する。
この決定を受けてルート制御部46は、低速ポートAよりチャネル装置にビジィエンドを応答し、ビジィエンドを受けたチャネル装置より起動要求を低速ポートAに対し行わせ、ポートAの結合により転送処理を行う。低速ポートAの割込みによる転送処理が終了すると、低速ポートAからのユニットエンドの応答に続いて再試行割込み処理部76は、高速ポートBより再試行開始の割込み要求を行い、ポートBを結合して、中断した転送処理を再開する。
再試行割込み処理の詳細は、コマンドカウンタ84,86でポートA,Bのコマンド実行回数を計数し、このコマンド実行回数が一定値に達したときに再試行割込み処理を開始する以外は、図19〜図21に示した第1実施例と同じになる。
図23は本発明の他の実施例であり、この実施例は各ポートのビジィ率が一定値に達したときに再試行割込み処理を行うようにしたことを特徴とする。
図23において、磁気テープ制御ユニット10には、低速ポートA、高速ポートB、ルート制御部46、再試行割込み処理部76、ビジィ応答記憶部82、更にビジィ率演算部88が設けられる。ビジィ率演算部88は、図4の実施例に示した起動数カウンタ54,60、ビジィ数カウンタ56,62およびビジィ率計測記憶部50で実現することができる。
再試行割込み処理部76は、ビジィ率演算部88で演算される低速ポートAのビジィ率R1またはポートBのビジィ率R2が、予め定めた一定値に達するか否か判断している。ビジィ率R1またはR2が一定値に達すると、再試行割込み処理を開始する。再試行割込み処理は、図19の第1実施例および図22の第2実施例と同じになる。
即ち、現在結合中のポートから再試行要求のステータスを応答して、一旦結合を切り離し、ビジィ応答記憶部82を参照して、最優先に処理すべきポートを決定する。決定したポートに対してはビジィエンドを発行して、起動要求を受け付けて転送処理を行う。割込みによる転送処理が終了すると、切り離したポートに対し再試行開始の割込み要求を行って再結合し、中断した転送処理を再開する。
尚、この実施例にあっては、ビジィ率が一定値に達して再試行割込み処理が行われた場合、全ポートのビジィ応答の状況、即ちビジィ応答の時刻、ビジィ回数から優先処理ポートを決定しているが、割込み要因となったビジィ率そのものを分析して優先処理ポートを決定してもよい。即ち、全ポートのビジィ率を分析し、最もビジィ率の高いポートを優先処理ポートに決定すればよい。これは、割込み要因そのものの分析による優先処理ポートの決定といえる。
図19の実施例および図22の実施例についても、図23の実施例と同様、ビジィ率演算部88を設けることで、再試行割込み処理の際に全ポートのビジィ率を分析して、ビジィ率の最も高いポートを優先処理ポートに決定してもよい。
7.入出力ポートのインテリジェント化
図24は本発明の他の実施例であり、各ポートにコマンド解析機能を設け、他のポートの処理中に実行可能なコマンドを解析して並列的に処理を行うようにしたことを特徴とする。
図24において、磁気テープ制御ユニット10には、低速ポートAに対しコマンド解析実行部92が設けられ、またポートBに対しコマンド解析実行部94が設けられる。コマンド解析実行部92,94は、磁気テープ制御ユニット10と下位の磁気テープドライブユニット12−1,12−2に対し、独立した制御パス98で制御信号を供給する。
これに対し、磁気テープドライブユニット12−1,12−2側とのデータの転送はデータバス96により行われ、このデータバス96に対してはポートAとポートBを切替えるためのデータルート制御部90が設けられる。なお、既に説明した各発明の実施例にあっては、コマンド解析実行部とデータルート制御部は1つのルート制御部として磁気テープ制御ユニット10に設けられている。
ポートA,Bごとに設けたコマンド解析実行部92,94は、起動要求に伴うチャネルとの結合で受信されたコマンドを解析し、他のポートでデータ転送中にあっても実行可能なコマンドか否かを判断する。
他のポートの結合によるデータ転送中に実行可能なコマンドとしては、磁気テープドライブユニット12−1,12−2側での磁気テープのロード動作、アンロード動作、早送り動作、巻戻し動作などのモーション系のコマンド、および磁気テープドライブユニット12−1,12−2側の動作状態を通知するためのセンス系のコマンドなどがある。これに対し、他のポート側の結合によるデータ転送中に実行できないコマンドとしては、リードコマンドおよびライトコマンドがある。
コマンド解析実行部92,94は、他のポートの結合によるデータ転送中に起動要求を受けてモーション系またはセンス系のコマンドの受信を解析すると、ビジィ応答を行わずに結合完了応答を出して受け付け、モーション系またはセンス系のコマンドを実行する。この場合、他のポートの結合でデータ転送を行っている磁気テープドライブユニットと、並行して実行するモーション系またはセンス系コマンドの磁気テープドライブユニットとは、別ユニットでなければならない。ユニットの区別はスタートI/O要求のコマンドパラメータとして受信されるドライブ機番でチェックする。
データ転送系と制御系およびセンス系が独立に処理可能な磁気テープ制御ユニット10と磁気テープドライブユニット12−1,12−2側の間のデバイスバスとしては、図示の制御用バス98とデータ転送用バス96の独立したバス以外に、コマンド処理とデータ転送が同時に行えるような共通バス構成を用いることもできる。
図25のフローチャートは、図24の処理動作である。まずステップS1で、ポートに対する起動要求をチェックしており、起動要求を受けると、ステップS2で、そのポートをチャネルと結合してコマンドの転送処理を行う。次にステップS3で、受信コマンドを解析する。このコマンド解析によって、データ転送を伴わないモーション系かまたはセンス系のコマンドかが判る。
次のステップS4では、データ転送を伴わないコマンドか、即ちモーション系のコマンドかまたはセンス系のコマンドかを判別する。モーション系コマンドまたはセンス系コマンドであれば、ステップS5に進み、動作中の磁気テープドライブユニットがあるか否かチェックする。動作中の磁気テープドライブユニットがあれば、ステップS6で、受信コマンドの解析で得られたドライブ機番と現在動作中のドライブ機番が同一か否かチェックする。
同一であれば、コマンドの如何に関わらず実行することはできないため、ステップS10でビジィ応答を返す。ドライブ機番が異なっていれば、モーション系コマンドまたはセンス系コマンドは実行可能であることから、ステップS7で受信コマンドを実行する。続いてステップS8で、コマンド実行に伴う一連の転送処理の終了を判別すると、ステップS9でユニットエンドを応答して、再びステップS1に戻る。勿論、ビジィ応答を行ったポートがあれば、ユニットエンドに伴ってビジィエンドを応答する。
一方、ステップS4でデータ転送を伴うライトコマンドまたはリードコマンドであった場合には、ステップS11に進み、他のポートでデータ転送中か否かチェックする。他のポートでデータ転送中にあれば、データ転送はできないことから、ステップS12でビジィ応答を返し、ステップS1に戻る。
他のポートでデータ転送中でなければ、ライトコマンドまたはリードコマンドは実行可能であることから、ステップS12でコマンド実行に伴うデータ転送処理を行い、ステップS8で転送終了を終了すると、ステップS9でユニットエンドを応答して、再びステップS1の処理に戻る。
尚、前述した本発明の各実施例にあっては、磁気テープを記憶媒体とした磁気テープ制御ユニットおよび磁気テープドライブユニットで構成された入出力サブシステムを例にとっているが、これ以外の入出力装置として、光磁気ディスク装置、磁気ディスク装置など、適宜の入出力装置を対象とした入出力制御装置を含むものである。また本発明は、実施例に示した数値による限定は受けない。