(57)【要約】  【課題】  １つ又は複数のチャネルを介して複数のオペレーティング・システムと通信する制御ユニットにおいて予約デバイスのアクセス競合を低減するコンピュータ・プログラム、装置、及び方法を提供する。  【解決手段】  前記コンピュータ・プログラムは、処理回路によって読み取り可能な有形のストレージ・メディアであって、デバイスに関するＩ／Ｏ動作コマンドを含むコマンド・メッセージを第１のオペレーティング・システムから前記制御ユニットにおいて受信するステップを含む方法を実行するために前記処理回路によって実行される命令を記憶した有形のストレージ・メディアを含む。前記デバイスが第２のオペレーティング・システムによって予約されていることを指示するデバイス・ビジー・インジケータが受信される。前記コマンド・メッセージは、前記デバイス・ビジー・インジケータに応答してデバイス・ビジー・キュー上にキューイングされる。前記制御ユニットは、デバイス・エンド・インジケータの有無を監視する。前記デバイス・エンド・インジケータに応答して前記デバイス・ビジー・キューがサービスされ、前記Ｉ／Ｏ動作コマンドが実行される。  【選択図】  図１２
2011512585.tif 000002
【特許請求の範囲】
【請求項１】
１つ又は複数のチャネルを介して複数のオペレーティング・システムと通信する制御ユニットにおいて予約デバイスのアクセス競合を低減するコンピュータ・プログラムであって、
処理回路によって読み取り可能な有形のストレージ・メディアであって、
前記制御ユニットと通信するデバイスに関するＩ／Ｏ動作コマンドを含むコマンド・メッセージを、前記複数のオペレーティング・システムのうちの第１のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイスが前記複数のオペレーティング・システムのうちの第２のオペレーティング・システムによって予約されていることを前記制御ユニットに通知するデバイス・ビジー・インジケータを前記デバイスから受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記コマンド・メッセージをデバイス・ビジー・キュー上にキューイングするステップと、
前記デバイスが新しいＩ／Ｏ動作コマンドを受信する準備が整ったことを前記制御ユニットに通知するデバイス・エンド・インジケータの有無について前記デバイスを監視するステップと、
前記デバイス・エンド・インジケータに応答して前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行するステップと、
を含む方法を実行するために前記処理回路によって実行される命令を記憶した有形のストレージ・メディア
を備えるコンピュータ・プログラム。
【請求項２】
前記方法は、
追加的なＩ／Ｏ動作コマンドを含む追加的なコマンド・メッセージを、前記複数のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記追加的なコマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングするステップと、
前記デバイス・ビジー・キューをサービスして前記追加的なＩ／Ｏ動作コマンドを実行するステップと、
を更に含む、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングされた順に出力する先入れ先出し（ＦＩＦＯ）サービスとして実行される、請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージを優先度の高いコマンド・メッセージから優先度の低いコマンド・メッセージの順に前記デバイス・ビジー・キューから出力する優先度ベース・サービスとして実行される、請求項２に記載のコンピュータ・プログラム。
【請求項５】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージをオペレーティング・システム単位で前記デバイス・ビジー・キューから出力するラウンド・ロビン・サービスとして実行される、請求項２に記載のコンピュータ・プログラム。
【請求項６】
前記方法は、
前記デバイス・ビジー・キューがフルの間に追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
前記デバイス・エンド・インジケータがデバイス・ビジー・タイムアウト期間内に受信されない間に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
オペレーティング・システム・タイムアウト・リカバリ期間内に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、及び
前記デバイス・エンド・インジケータがコマンド・タイムアウト期間内に受信されなかったことが判定されたこと、
のうちの１つ又は複数に応答してデバイス・ビジー・メッセージを出力するステップ
を更に含む、請求項１に記載のコンピュータ・プログラム。
【請求項７】
前記方法は、
前記コマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングする前記ステップに応答してデバイス・ビジー・タイマーを開始するステップと、
前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行する前記ステップに応答して前記デバイス・ビジー・タイマーの値を読み取るステップと、
前記デバイス・ビジー・タイマーの前記値をトランスポート応答情報単位メッセージの形で前記１つ又は複数のチャネルを介して前記第１のオペレーティング・システムに出力するステップと、
を更に含む、請求項１に記載のコンピュータ・プログラム。
【請求項８】
前記コマンド・メッセージは、前記Ｉ／Ｏ動作コマンドをトランポート制御ワード（ＴＣＷ）チャネル・プログラムの一部として保持するトランスポート・コマンド制御ブロック（ＴＣＣＢ）を含むトランスポート・コマンド情報単位メッセージである、請求項１に記載のコンピュータ・プログラム。
【請求項９】
予約デバイスのアクセス競合を低減する装置であって、
１つ又は複数のチャネルを介して複数のオペレーティング・システムと通信する制御ユニット
を備え、前記制御ユニットは、
前記制御ユニットと通信するデバイスに関するＩ／Ｏ動作コマンドを含むコマンド・メッセージを、前記複数のオペレーティング・システムのうちの第１のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイスが前記複数のオペレーティング・システムのうちの第２のオペレーティング・システムによって予約されていることを前記制御ユニットに通知するデバイス・ビジー・インジケータを前記デバイスから受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記コマンド・メッセージをデバイス・ビジー・キュー上にキューイングするステップと、
前記デバイスが新しいＩ／Ｏ動作コマンドを受信する準備が整ったことを前記制御ユニットに通知するデバイス・エンド・インジケータの有無について前記デバイスを監視するステップと、
前記デバイス・エンド・インジケータに応答して前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行するステップと、
を含む方法を実行する、
装置。
【請求項１０】
前記制御ユニットは、
追加的なＩ／Ｏ動作コマンドを含む追加的なコマンド・メッセージを、前記複数のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記追加的なコマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングするステップと、
前記デバイス・ビジー・キューをサービスして前記追加的なＩ／Ｏ動作コマンドを実行するステップと、
を更に実行する、請求項９に記載の装置。
【請求項１１】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングされた順に出力する先入れ先出し（ＦＩＦＯ）サービスとして実行される、請求項１０に記載の装置。
【請求項１２】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージを優先度の高いコマンド・メッセージから優先度の低いコマンド・メッセージの順に前記デバイス・ビジー・キューから出力する優先度ベース・サービスとして実行される、請求項１０に記載の装置。
【請求項１３】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージをオペレーティング・システム単位で前記デバイス・ビジー・キューから出力するラウンド・ロビン・サービスとして実行される、請求項１０に記載の装置。
【請求項１４】
前記制御ユニットは、
前記デバイス・ビジー・キューがフルの間に追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
前記デバイス・エンド・インジケータがデバイス・ビジー・タイムアウト期間内に受信されない間に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
オペレーティング・システム・タイムアウト・リカバリ期間内に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、及び
前記デバイス・エンド・インジケータがコマンド・タイムアウト期間内に受信されなかったことが判定されたこと、
のうちの１つ又は複数に応答してデバイス・ビジー・メッセージを出力するステップ
を更に実行する、請求項９に記載の装置。
【請求項１５】
前記制御ユニットは、
前記コマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングする前記ステップに応答してデバイス・ビジー・タイマーを開始するステップと、
前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行する前記ステップに応答して前記デバイス・ビジー・タイマーの値を読み取るステップと、
前記デバイス・ビジー・タイマーの前記値をトランスポート応答情報単位メッセージの形で前記１つ又は複数のチャネルを介して前記第１のオペレーティング・システムに出力するステップと、
を更に実行する、請求項９に記載の装置。
【請求項１６】
前記コマンド・メッセージは、前記Ｉ／Ｏ動作コマンドをトランポート制御ワード（ＴＣＷ）チャネル・プログラムの一部として保持するトランスポート・コマンド制御ブロック（ＴＣＣＢ）を含むトランスポート・コマンド情報単位メッセージである、請求項９に記載の装置。
【請求項１７】
１つ又は複数のチャネルを介して複数のオペレーティング・システムと通信する制御ユニットにおいて予約デバイスのアクセス競合を低減する方法であって、
前記制御ユニットと通信するデバイスに関するＩ／Ｏ動作コマンドを含むコマンド・メッセージを、前記複数のオペレーティング・システムのうちの第１のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイスが前記複数のオペレーティング・システムのうちの第２のオペレーティング・システムによって予約されていることを前記制御ユニットに通知するデバイス・ビジー・インジケータを前記デバイスから受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記コマンド・メッセージをデバイス・ビジー・キュー上にキューイングするステップと、
前記デバイスが新しいＩ／Ｏ動作コマンドを受信する準備が整ったことを前記制御ユニットに通知するデバイス・エンド・インジケータの有無について前記デバイスを監視するステップと、
前記デバイス・エンド・インジケータに応答して前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行するステップと、
を含む方法。
【請求項１８】
追加的なＩ／Ｏ動作コマンドを含む追加的なコマンド・メッセージを、前記複数のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記追加的なコマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングするステップと、
前記デバイス・ビジー・キューをサービスして前記追加的なＩ／Ｏ動作コマンドを実行するステップと、
を更に含み、前記デバイス・ビジー・キューをサービスする前記ステップは、先入れ先出し（ＦＩＦＯ）サービス、優先度ベース・サービス、及びラウンド・ロビン・サービスのうちの１つとして実行される、請求項１７に記載の方法。
【請求項１９】
前記デバイス・ビジー・キューがフルの間に追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
前記デバイス・エンド・インジケータがデバイス・ビジー・タイムアウト期間内に受信されない間に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
オペレーティング・システム・タイムアウト・リカバリ期間内に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、及び
前記デバイス・エンド・インジケータがコマンド・タイムアウト期間内に受信されなかったことが判定されたこと、
のうちの１つ又は複数に応答してデバイス・ビジー・メッセージを出力するステップ
を更に含む、請求項１７に記載の方法。
【請求項２０】
前記コマンド・メッセージは、前記Ｉ／Ｏ動作コマンドをトランポート制御ワード（ＴＣＷ）チャネル・プログラムの一部として保持するトランスポート・コマンド制御ブロック（ＴＣＣＢ）を含むトランスポート・コマンド情報単位メッセージであり、前記方法は、
前記コマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングする前記ステップに応答してデバイス・ビジー・タイマーを開始するステップと、
前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行する前記ステップに応答して前記デバイス・ビジー・タイマーの値を読み取るステップと、
前記デバイス・ビジー・タイマーの前記値をトランスポート応答情報単位メッセージの形で前記１つ又は複数のチャネルを介して前記第１のオペレーティング・システムに出力するステップと、
を更に含む、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般に入出力処理に関するものであり、特に複数の予約デバイス・アクセス要求に関連するデバイス競合問題を軽減することに関するものである。
【背景技術】
【０００２】
入出力（Ｉ／Ｏ）動作は、Ｉ／Ｏ処理システム内のメモリ・デバイスとＩ／Ｏデバイスとの間のデータ転送に使用される。具体的には、Ｉ／Ｏ動作を実行することにより、データはメモリから１つ又は複数のＩ／Ｏデバイスに書き込まれ、１つ又は複数のＩ／Ｏデバイスからメモリに読み込まれる。
【０００３】
Ｉ／Ｏ動作の処理を容易にするために、Ｉ／Ｏ処理システムのＩ／Ｏサブシステムが利用される。Ｉ／Ｏサブシステムは、Ｉ／Ｏ処理システム内のメイン・メモリ及びＩ／Ｏデバイスと結合され、メモリとＩ／Ｏデバイスとの間の情報フローを誘導する。Ｉ／Ｏサブシステムの一例は、チャネル・サブシステムである。チャネル・サブシステムは、チャネル経路を通信媒体として使用する。各チャネル経路は、制御ユニットと結合されたチャネルを含み、制御ユニットは更に、１つ又は複数のＩ／Ｏデバイスと結合される。
【０００４】
チャネル・サブシステムは、チャネル・コマンド・ワード（ＣＣＷ）を利用してＩ／Ｏデバイスとメモリとの間のデータ転送を実行することができる。ＣＣＷは、実行すべきコマンドを指定する。あるＩ／Ｏ動作を開始するコマンドの場合、ＣＣＷは、その動作に関連するメモリ領域、その領域との間の転送が完了したときに必ず実行すべきアクション、及びその他のオプションを指定する。
【０００５】
Ｉ／Ｏ処理中に、チャネルはＣＣＷリストをメモリから取り出す。チャネルは、ＣＣＷリストの各コマンドを構文解析（parse）し、それ自体のエンティティ内のいくつかのコマンドを当該チャネルと結合されている制御ユニットに転送する。その後、制御ユニットはこれらのコマンドを処理する。チャネルは、各コマンドの状態を追跡し、次のコマンド・セットを処理のために制御ユニットにいつ送信すべきかを制御する。チャネルは、各コマンドがそれ自体のエンティティ内の制御ユニットに送信されることを保証する。更に、チャネルは、各コマンドに関する制御ユニットからの応答処理に関連するいくつかの情報を推論する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第５，４６１，７２１号
【特許文献２】米国特許第５，５２６，４８４号
【特許文献３】米国特許出願第１１／４６４，６１３号
【非特許文献】
【０００７】
【非特許文献１】「IBM(R) z/Architecture Principlesof Operation」、Publication No.SA22-7832-05、6th Edition（２００７年４月）
【非特許文献２】「Fibre Channel Single Byte CommandCode Sets-3 Mapping Protocol (FC-SB-3)」、T11/Project 1357-D/Rev. 1.6、INCITS（２００３年３月）
【非特許文献３】「Information Technology-FibreChannel Protocol for SCSI, Third Version (FCP-3)」、T10 Project 1560-D、 Revision 4（２００５年９月１３日）
【非特許文献４】「SCSI Primary Commands -4 (SPC-4)」、Project T10/1731-D、Rev 11、INCITS（２００７年５月）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＣＣＷ単位のＩ／Ｏ処理の実行は、各チャネルがＣＣＷを構文解析し、状態情報を追跡し、制御ユニットからの応答に対応する故に、チャネル・サブシステムの大量の処理オーバーヘッドが発生する恐れがある。したがって、ＣＣＷ及び状態情報の変換処理（interpreting）及び管理に関連する処理負担の大部分をチャネル・サブシステムから制御ユニットに移すことが有益である可能性がある。Ｉ／Ｏ処理システム内の制御ユニットとオペレーティング・システムとの間で通信するチャネルの役割を簡略化すれば、ハンドシェークの実行が少なくなる故に通信スループットを向上させることが可能となる。
【０００９】
複数のオペレーティング・システムによって制御されるチャネルから制御ユニットを介して共通のＩ／Ｏデバイスにコマンドが出される要求を管理する際は、追加的な問題が発生する可能性がある。複数のオペレーティング・システムは、共通のホスト・システム上に存在することも、それぞれチャネル・サブシステム及び処理要素を含む複数のホスト・システムにわたって存在することもある。予約済みの共通のＩ／Ｏデバイスに対するアクセス試行が複数のオペレーティング・システムによって実行された場合、制御ユニットは、典型的にはＩ／Ｏデバイスからデバイス・ビジー・インジケータ（device busy indicator）を受信し、そのデバイス・ビジー・インジケータをアクセス要求元のオペレーティング・システムによって制御される各チャネルに報告する。アクセス要求は、予約されたＩ／Ｏ動作の実行コマンドであることも、予約されていないＩ／Ｏ動作の実行コマンドであることもある。Ｉ／Ｏデバイスが非ビジー状態になると、制御ユニットは、各チャネルを介してデバイス・エンド・インジケータ（device end indicator）をオペレーティング・システムに送ることにより、Ｉ／Ｏデバイスが利用可能となったことを各オペレーティング・システムに通知する。その後、チャネル・サブシステムでは、Ｉ／Ｏデバイスに対するアクセス競合相手となる他のチャネルと比べて最先の（first-in-time）チャネルが競合状態で勝利することになり、以前に試行した要求を再度行うことが可能となる。予約要求は最先の要求元に許可されるため、応答の早いホスト・システムが応答の遅いホスト・システムを効果的にブロックすることができる。例えば、Ｉ／Ｏデバイスに近いホスト・システム上で実行されるオペレーティング・システムほど、経験する通信トランスポート遅延が短くなるので、Ｉ／Ｏデバイスからの距離が遠いホスト・システム上で実行されるオペレーティング・システムほど、Ｉ／Ｏデバイスにアクセスすることができない期間が長くなる可能性がある。それ故、Ｉ／Ｏデバイス及び後続のアクセス要求の予約競合が増加するにつれて、Ｉ／Ｏデバイスにアクセスする際のオペレーティング・システム間の不均衡も拡大する。したがって、当業界では、１つ又は複数のチャネルを介して複数のオペレーティング・システムと通信する制御ユニットにおいて予約Ｉ／Ｏデバイスの競合を低減することが必要とされている。
【課題を解決するための手段】
【００１０】
本発明の諸実施形態は、１つ又は複数のチャネルを介して複数のオペレーティング・システムと通信する制御ユニットにおいて予約デバイスのアクセス競合を低減するコンピュータ・プログラムを含む。前記コンピュータ・プログラムは、処理回路によって読み取り可能な有形のストレージ・メディアであって、以下の方法を実行するために前記処理回路によって実行される命令を記憶した有形のストレージ・メディアを含む。前記方法は、前記制御ユニットと通信するデバイスに関するＩ／Ｏ動作コマンドを含むコマンド・メッセージを、前記複数のオペレーティング・システムのうちの第１のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップを含む。前記方法は、前記デバイスが前記複数のオペレーティング・システムのうちの第２のオペレーティング・システムによって予約されていることを前記制御ユニットに通知するデバイス・ビジー・インジケータを前記デバイスから受信するステップも含む。また、前記方法は、前記デバイス・ビジー・インジケータに応答して前記コマンド・メッセージをデバイス・ビジー・キュー上にキューイングするステップも含む。更に、前記方法は、前記デバイスが新しいＩ／Ｏ動作コマンドを受信する準備が整ったことを前記制御ユニットに通知するデバイス・エンド・インジケータの有無について前記デバイスを監視するステップも含む。また、前記方法は、前記デバイス・エンド・インジケータに応答して前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行するステップも含む。
【００１１】
追加的な実施形態は、予約デバイスのアクセス競合を低減する装置を含む。前記装置は、１つ又は複数のチャネルを介して複数のオペレーティング・システムと通信する制御ユニットを含む。前記制御ユニットは、コマンド・メッセージを、前記複数のオペレーティング・システムのうちの第１のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップを含む方法を実行する。前記コマンド・メッセージは、前記制御ユニットと通信するデバイスに関するＩ／Ｏ動作コマンドを含む。前記制御ユニットは、デバイス・ビジー・インジケータを前記デバイスから受信する。前記デバイス・ビジー・インジケータは、前記デバイスが前記複数のオペレーティング・システムのうちの第２のオペレーティング・システムによって予約されていることを前記制御ユニットに通知する。前記制御ユニットは更に、前記デバイス・ビジー・インジケータに応答して前記コマンド・メッセージをデバイス・ビジー・キュー上にキューイングし、デバイス・エンド・インジケータの有無について前記デバイスを監視する。前記デバイス・エンド・インジケータは、前記デバイスが新しいＩ／Ｏ動作コマンドを受信する準備が整ったことを前記制御ユニットに通知する。また、前記制御ユニットは、前記デバイス・エンド・インジケータに応答して前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行する。
【００１２】
更なる実施形態は、１つ又は複数のチャネルを介して複数のオペレーティング・システムと通信する制御ユニットにおいて予約デバイスのアクセス競合を低減する方法を含む。前記方法は、前記制御ユニットと通信するデバイスに関するＩ／Ｏ動作コマンドを含むコマンド・メッセージを、前記複数のオペレーティング・システムのうちの第１のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップを含む。前記方法は、前記デバイスが前記複数のオペレーティング・システムのうちの第２のオペレーティング・システムによって予約されていることを前記制御ユニットに通知するデバイス・ビジー・インジケータを前記デバイスから受信するステップも含む。また、前記方法は、前記デバイス・ビジー・インジケータに応答して前記コマンド・メッセージをデバイス・ビジー・キュー上にキューイングするステップと、デバイス・エンド・インジケータの有無について前記デバイスを監視するステップと、を含む。前記デバイス・エンド・インジケータは、前記デバイスが新しいＩ／Ｏ動作コマンドを受信する準備が整ったことを前記制御ユニットに通知する。更に、前記方法は、前記デバイス・エンド・インジケータに応答して前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行するステップも含む。
【００１３】
以下の詳細な説明を添付図面と併せて読めば、諸実施形態に係る他のコンピュータ・プログラム、装置、及び／又は方法が当業者には理解されるだろう。そのような追加的なコンピュータ・プログラム、装置、及び／又は方法も本明細書の範囲に含まれ、本発明の範囲に含まれ、添付の特許請求範囲によって保護されることが本出願人の意図するところである。
【００１４】
本発明と見なされる主題は、添付の特許請求範囲の各請求項に具体的に明示され、明瞭に記載されている。本発明の上記及び他の目的、特徴、及び利点は、以下の詳細な説明を添付図面と併せて読めば明らかとなるだろう。
【図面の簡単な説明】
【００１５】
【図１】本発明の１つ又は複数の態様が組み込まれ使用されるＩ／Ｏ処理システムの一実施形態を示す図である。
【図２】従来技術のチャネル・コマンド・ワードの一例を示す図である。
【図３】従来技術のチャネル・コマンド・ワード・チャネル・プログラムの一例を示す図である。
【図４】図３のチャネル・コマンド・ワード・チャネル・プログラムを実行するためのチャネルと制御ユニットとの間の通信に使用される従来技術のリンク・プロトコルの一実施形態を示す図である。
【図５】本発明の一態様に係るトランスポート制御ワード・チャネル・プログラムの一実施形態を示す図である。
【図６】本発明の一態様に係る図５のトランスポート制御ワード・チャネル・プログラムを実行するためのチャネルと制御ユニットとの間の通信に使用されるリンク・プロトコル一実施形態を示す図である。
【図７】チャネル・コマンド・ワード・チャネル・プログラムの４つの読み取りコマンドを実行するためのチャネルと制御ユニットとの間の通信に使用される従来技術のリンク・プロトコルの一実施形態を示す図である。
【図８】本発明の一態様に係るトランスポート制御ワード・チャネル・プログラムの４つの読み取りコマンドを処理するためのチャネルと制御ユニットとの間の通信に使用されるリンク・プロトコルの一実施形態を示す図である。
【図９】本発明の一態様に係る制御ユニット及びチャネルの一実施形態を示す図である。
【図１０】本発明の一態様に係る制御ユニットからチャネルに通信される応答メッセージの一実施形態を示す図である。
【図１１】本発明の一態様に係る複数のホスト・システムと通信する制御ユニットの一実施形態を示す図である。
【図１２】予約デバイスのアクセス競合低減プロセスの一実施形態を示す図である。
【図１３】本発明の１つ又は複数の態様が組み込まれたコンピュータ・プログラムの一実施形態を示す図である。
【発明を実施するための形態】
【００１６】
以下の詳細な説明では、例示的な添付図面を参照しながら本発明の好ましい諸実施形態ならびにそれらの利点及び特徴を説明する。
【００１７】
本発明の一態様によれば、予約Ｉ／Ｏデバイスのアクセス競合を低減することによって入出力（Ｉ／Ｏ）処理が容易となる。例えば、Ｉ／Ｏ処理は、Ｉ／Ｏ処理に関連するステータスや測定データ等の情報に対する即時アクセスを可能にすることによって容易となる。更に、Ｉ／Ｏ処理は、一例としてＩ／Ｏ処理の実行に使用されるＩ／Ｏ処理システムのコンポーネント間の通信を減少させることによって容易となる。例えば、チャネルのようなホスト・システムのＩ／Ｏ通信アダプタと制御ユニットとの間のエクスチェンジ数及びシーケンス数が減少される。これは、複数のコマンドを制御ユニットによって実行される単一のエンティティとしてＩ／Ｏ通信アダプタから制御ユニットに送信し、制御ユニットが必要に応じてそれらのコマンドに由来するデータを単一のエンティティとして送信することによって達成される。
【００１８】
複数のコマンドは、本明細書ではトランスポート・コマンド制御ブロック（transport commandcontrol block : TCCB）と呼ばれるブロックに含められ、当該ブロックのアドレスは、トランポート制御ワード（transport control word: TCW）で指定される。ＴＣＷは、オペレーティング・システム又は他のアプリケーションからＩ／Ｏ通信アダプタに送信され、Ｉ／Ｏ通信アダプタは、ＴＣＣＢを処理のためにコマンド・メッセージの形で制御ユニットに転送する。制御ユニットは、Ｉ／Ｏ通信アダプタによる個々のコマンドと比較したステータス追跡を行うことなく各コマンドを処理する。複数のコマンドはチャネル・プログラムとも呼ばれ、チャネル・プログラムは、Ｉ／Ｏ通信アダプタではなく制御ユニット上で構文解析され実行される。
【００１９】
例示的な一実施形態において、制御ユニットは、チャネル・プログラムの実行に応答してステータスを含む応答メッセージと、拡張ステータス情報（extended statusinformation）と、を生成する。制御ユニットは、例えばチャネル・プログラムが実行されないことをＩ／Ｏ通信アダプタに知らせるため等、限られた数の通信シナリオ下ではチャネル・プログラムを実行せずに応答メッセージを生成することもできる。制御ユニットは、Ｉ／Ｏ通信アダプタとＩ／Ｏデバイスとの間の通信をサポートするとともにチャネル・プログラムの実行もサポートするいくつかの要素を含むことができる。例えば、制御ユニットは、通信及びステータス監視を容易にするために、１つ又は複数のキュー、タイマー、及びレジスタに加えてメッセージの構文解析及び処理を行う制御ロジックも含むことができる。Ｉ／Ｏ通信アダプタは、応答メッセージを構文解析してステータス情報及び拡張ステータス情報を抽出し、抽出された情報を使用して更なる計算を実行する。
【００２０】
１つ又は複数のホスト・システム上で実行される複数のオペレーティング・システムが、１つ又は複数のホスト・システム内の１つ又は複数のＩ／Ｏアダプタと通信する制御ユニットを介して予約Ｉ／Ｏデバイスに対するアクセス試行を行った場合は、アクセス競合が発生する可能性がある。一定のＩ／Ｏ動作を実行するために、Ｉ／Ｏデバイスは、要求元のオペレーティング・システムの制御下で１組のチャネル（経路グループ）に対する排他的アクセス用に予約され得る。経路グループは、デバイス予約が複数のチャネルから同じホストに戻されることを可能にするために確立され得る。Ｉ／Ｏデバイスが予約されると、他のオペレーティング・システムによる後続のＩ／Ｏデバイス予約試行又は使用試行は、Ｉ／Ｏデバイスからデバイス・ビジー・インジケータが返されることでブロックされる。例示的な一実施形態において、制御ユニットにおいて受信されたＩ／Ｏデバイスに関する予約要求を含む複数のコマンドは、デバイス・ビジー・インジケータが存在する間キューイングされる。Ｉ／Ｏデバイスのデバイス・ビジー・インジケータが解除されたこと、例えばデバイス・エンド・インジケータに応答して、制御ユニットはキューをサービスし、次に処理すべきコマンドを決定する。キューは、先入れ先出し（ＦＩＦＯ）サービス、優先度ベース・サービス、ラウンド・ロビン・サービスのようないくつかのキュー管理技法を利用することができる。ＦＩＦＯサービスは、コマンドを受信順に処理する。優先度ベース・サービスは、優先度の高いコマンドが優先度の低いコマンドよりも先にサービスされることを可能にする。ラウンド・ロビン・サービスは、様々なオペレーティング・システムからの各通信接続を順番に処理する。キューを使用して予約Ｉ／Ｏデバイスに対するアクセス要求を管理することにより、制御ユニットとオペレーティング・システムによって制御されるＩ／Ｏアダプタとの間の通信が簡略化され、また、応答の遅いホスト・システムが応答の早いホスト・システムによって不公平にブロックされることがないように競合が低減される。
【００２１】
ここで図１を参照して、本発明の１つ又は複数の態様が組み込まれ使用されるＩ／Ｏ処理システムの一例について説明する。Ｉ／Ｏ処理システム１００は、ホスト・システム１０１を含み、ホスト・システム１０１は更に、例えばメイン・メモリ１０２、１つ又は複数の中央演算処理装置（ＣＰＵ）１０４、ストレージ制御要素１０６、及びチャネル・サブシステム１０８を含む。ホスト・システム１０１は、メインフレームやサーバのような大規模コンピューティング・システムであってよい。Ｉ／Ｏ処理システム１００は、それぞれ後述する１つ又は複数の制御ユニット１１０、及び１つ又は複数のＩ／Ｏデバイス１１２も含む。
【００２２】
メイン・メモリ１０２は、Ｉ／Ｏデバイス１１２から入力され得るデータ及びプログラムを記憶する。例えば、メイン・メモリ１０２は、ＣＰＵ１０４のうちの１つ又は複数によって実行される１つ又は複数のオペレーティング・システム（ＯＳ）１０３を含むことができる。例えば、１つのＣＰＵ１０４は、Ｌｉｎｕｘ（Ｒ）オペレーティング・システム１０３とｚ／ＯＳ（Ｒ）オペレーティング・システム１０３を異なる仮想マシン・インスタンスとして実行することができる。メイン・メモリ１０２は、直接アドレス指定可能であり、ＣＰＵ１０４及びチャネル・サブシステム１０８による高速データ処理を可能にする。
【００２３】
ＣＰＵ１０４は、Ｉ／Ｏ処理システム１００の制御センターである。ＣＰＵ１０４は、命令実行、割り込みアクション、タイミング機能、初期プログラム・ロード、及び他のマシン関連機能に関する順序付け及び処理ファシリティを収容する。ＣＰＵ１０４は、双方向バスや単方向バスのような接続１１４を介してストレージ制御要素１０６と結合される。
【００２４】
ストレージ制御要素１０６は、バスのような接続１１６を介してメイン・メモリ１０２と結合され、接続１１４を介してＣＰＵ１０４と結合され、接続１１８を介してチャネル・サブシステム１０８と結合される。ストレージ制御要素１０６は、例えばＣＰＵ１０４及びチャネル・サブシステム１０８によって行われる要求のキューイング及び実行を制御する。
【００２５】
例示的な一実施形態において、チャネル・サブシステム１０８は、ホスト・システム１０１と制御ユニット１１０との間の通信インターフェースを提供する。チャネル・サブシステム１０８は、上述のとおりストレージ制御要素１０６と結合され、シリアル・リンクのような接続１２０を介して各制御ユニット１１０と結合される。接続１２０は、ファイバ・チャネル・ファブリック内のシングル・モード又はマルチ・モード導波管を利用して光リンクとして実装され得る。チャネル・サブシステム１０８は、Ｉ／Ｏデバイス１１２とメイン・メモリ１０２との間の情報フローを誘導する。チャネル・サブシステム１０８は、Ｉ／Ｏデバイス１１２と直接通信するタスクからＣＰＵ１０４を解放し、データ処理とＩ／Ｏ処理の同時進行を可能にする。チャネル・サブシステム１０８は、Ｉ／Ｏデバイス１１２との間の情報フローを管理する際に１つ又は複数のチャネル経路１２２を通信リンクとして使用する。Ｉ／Ｏ処理の一環として、チャネル・サブシステム１０８は、チャネル経路の利用可能性を検査し、利用可能なチャネル経路１２２を選択し、Ｉ／Ｏデバイス１１２による動作の実行を開始する経路管理機能も実行する。
【００２６】
各チャネル経路１２２は、チャネル１２４（図１に示す一例では、各チャネル１２４はチャネル・サブシステム１０８内に位置する）と、１つ又は複数の制御ユニット１１０と、１つ又は複数の接続１２０と、を含む。別の例では、１つ又は複数の動的スイッチ（図示せず）をチャネル経路１２２の一部として有することも可能である。動的スイッチは、チャネル１２４及び制御ユニット１１０と結合され、当該スイッチに接続される任意の２つのリンクを物理的に相互接続する能力を提供する。別の例では、複数のシステムを有することも可能であり、したがって複数のチャネル・サブシステム（図示せず）を制御ユニット１１０に接続することも可能である。
【００２７】
チャネル・サブシステム１０８内にはサブチャネル（図示せず）も位置する。１つのサブチャネルは、チャネル・サブシステム１０８を通じてプログラムからアクセス可能なＩ／Ｏデバイス１１２毎に提供され、当該Ｉ／Ｏデバイス１１２専用となる。サブチャネル（例えばテーブルのようなデータ構造）は、プログラムから見たデバイスの論理的外観を提供する。各サブチャネルは、関連するＩ／Ｏデバイス１１２及びその付属物に関する情報をチャネル・サブシステム１０８に提供する。サブチャネルは、関連するＩ／Ｏデバイス１１２が関与するＩ／Ｏ動作及びその他の機能に関する情報も提供する。サブチャネルは、チャネル・サブシステム１０８が関連するＩ／Ｏデバイス１１２に関する情報をＣＰＵ１０４に提供するための手段であり、ＣＰＵ１０４は、Ｉ／Ｏ命令を実行することによってこの情報を取得する。
【００２８】
チャネル・サブシステム１０８は、１つ又は複数の制御ユニット１１０と結合される。各制御ユニット１１０は、１つ又は複数のＩ／Ｏデバイス１１２を動作させ制御するロジックを提供し、また、共通のファシリティを利用して各Ｉ／Ｏデバイス１１２の特性をチャネル１２４によって提供されるリンク・インターフェースに適合させる。これらの共通のファシリティは、Ｉ／Ｏ動作の実行、Ｉ／Ｏデバイス１１２及び制御ユニット１１０のステータスに関するインディケーション、チャネル経路１２２を介したデータ転送タイミング制御、及び一定のレベルのＩ／Ｏデバイス１１２制御を実現する。
【００２９】
各制御ユニット１１０は、接続１２６（例えばバス）を介して１つ又は複数のＩ／Ｏデバイス１１２に接続される。Ｉ／Ｏデバイス１１２は、情報を受信し、又は情報をメイン・メモリ１０２又は他のメモリあるいはその両方に記憶する。Ｉ／Ｏデバイス１１２の例としては、ごく一部であるが、カード読み取り装置及び穿孔装置、磁気テープ・ユニット、直接アクセス記憶装置、ディスプレイ、キーボード、プリンタ、ポインティング・デバイス、テレプロセシング・デバイス、通信コントローラ、及びセンサー・ベース機器が挙げられる。
【００３０】
Ｉ／Ｏ処理システム１００の上記のコンポーネントのうちの１つ又は複数に関する詳細は、「IBM(R) z/Architecture Principlesof Operation」、Publication No.SA22-7832-05、6th Edition（２００７年４月）；１９９５年１０月２４日に発行されたCormier等の米国特許第５，４６１，７２１号「System ForTransferring Data Between I/O Devices And Main Or Expanded Storage UnderDynamic Control Of Independent Indirect Address Words (IDAWS)」；及び１９９６年６月１１日に発行されたCasper等の米国特許第５，５２６，４８４号「Method And System ForPipelining The Processing Of Channel Command Words」に記載されている。「ＩＢＭ」は、インターナショナル・ビジネス・マシーンズ社（米国ニューヨーク州アーモンク）の登録商標である。本明細書で使用される他の名称もインターナショナル・ビジネス・マシーンズ社又は他の企業の登録商標、商標、又は製品名である可能性がある。
【００３１】
一実施形態では、Ｉ／Ｏデバイス１１２とメイン・メモリ１０２との間のデータ転送にチャネル・コマンド・ワード（ＣＣＷ）が使用される。ＣＣＷは、実行すべきコマンドを指定し、処理を制御する他のフィールドを含む。ＣＣＷの一例を図２を参照して説明する。ＣＣＷ２００は、例えば実行すべきコマンド（例えば読み取り、逆方向読み取り、制御、感知及び書き込み）を指定するコマンド・コード２０２と、Ｉ／Ｏ動作の制御に使用される複数のフラグ２０４と、を含み、データ転送を指定するコマンドに関しては、ＣＣＷによって指定されたストレージ領域に転送すべきバイト数を指定するカウント・フィールド２０６と、直接アドレス指定が利用される場合にはデータを含むメイン・メモリ内の位置を指し、変更された間接データ・アドレス指定（modified indirect dataaddressing）が利用される場合には処理対象となる変更された間接データ・アドレス・ワード（modified indirect data addressword : MIDAW）のリスト（例えば隣接リスト）を指すデータ・アドレス２０８と、を含む。変更された間接アドレス指定に関する詳細は、２００６年８月１５日に出願されたBrice等の米国特許出願第１１／４６４，６１３号「Flexibly ControllingThe Transfer Of Data Between Input/Output Devices And Memory」に記載されている。
【００３２】
順次実行用に構成された１つ又は複数のＣＣＷは、本明細書ではＣＣＷチャネル・プログラムとも呼ばれるチャネル・プログラムを形成する。ＣＣＷチャネル・プログラムは、例えばオペレーティング・システム又は他のソフトウェアによってセット・アップされる。ソフトウェアはＣＣＷをセット・アップし、チャネル・プログラムに割り当てられたメモリのアドレスを取得する。ＣＣＷチャネル・プログラムの一例を図３を参照して説明する。ＣＣＷチャネル・プログラム２１０は、例えばエクステント定義（define extent）コマンドと共に使用されるエクステント定義データ２１６のメモリ内の位置を指すポインタ２１４を有するエクステント定義ＣＣＷ２１２を含む。本例では、エクステント定義コマンドの後に、ロケート・レコード（locate record）データ２２０を指すポインタ２１９を有するロケート・レコードＣＣＷ２１７や１つ又は複数の読み取りＣＣＷ２２１のような１つ又は複数の他のＣＣＷを含むメモリ内の別の領域（例えばアプリケーション領域）をチャネル・プログラムに参照させるチャネル内転送（transfer in channel : TIC）２１８が実行される。各読み取りＣＣＷ２２０は、データ領域２２４を指すポインタ２２２を有する。このデータ領域は、データに直接アクセスするためのアドレス、又はデータに間接的にアクセスするためのデータ・アドレス・ワード（例えばＭＩＤＡＷやＩＤＡＷ）のリストを含む。更に、ＣＣＷチャネル・プログラム２１０は、デバイス・アドレスで定義され、ＣＣＷチャネル・プログラム２１０の実行によって得られるステータス用サブチャネル２２６と呼ばれるチャネル・サブシステム内の所定の領域を含む。
【００３３】
ここで図３と共に図４も参照しながら、ＣＣＷチャネル・プログラムの処理について説明する。特に、図４は、ＣＣＷチャネル・プログラムの実行中にチャネルと制御ユニットとの間で発生する様々なエクスチェンジ及びシーケンスの一例を示す。本例において、通信に使用されるリンク・プロトコルはＦＩＣＯＮ（Ｒ）（Fibre Connectivity）である。ＦＩＣＯＮに関する情報は、「Fibre Channel Single Byte CommandCode Sets-3 Mapping Protocol (FC-SB-3)」、T11/Project 1357-D/Rev. 1.6、INCITS（２００３年３月）に記載されている。
【００３４】
図４を参照すると、チャネル３００は、制御ユニット３０２との間のエクスチェンジをオープンし、エクステント定義コマンド及びその関連データを制御ユニット３０２に送信する（３０４）。コマンドはエクステント定義ＣＣＷ２１２（図３）から取り出され、データはエクステント定義データ２１６から取得される。チャネル３００は、ＴＩＣ２１８を使用してロケート・レコードＣＣＷ及び読み取りＣＣＷの場所を突き止める。チャネル３００は、ロケート・レコードＣＣＷ２１７（図３）からロケート・レコード・コマンド（図４）を取り出し、ロケート・レコード・データ２２０からデータを取得する（３０５）。読み取りＣＣＷ２２１（図３）から読み取りコマンド（図４）が取り出される（３０６）。各読み取りコマンドは、制御ユニット３０２に送信される。
【００３５】
制御ユニット３０２は、チャネル３００のオープン・エクスチェンジに応答してチャネル３００との間のエクスチェンジをオープンする（３０８）。この処理は、ロケート・レコード・コマンド３０５又は読み取りコマンド３０６あるいはその両方の前に発生することも後に発生することもある。オープン・エクスチェンジに加えて、応答（「ＣＭＲ」）もチャネル３００に転送される。「ＣＭＲ」は、制御ユニット３０２がアクティブ状態にあり動作中であることを指示するインディケーションをチャネル３００に提供する。
【００３６】
制御ユニット３０２は、要求されたデータ３１０をチャネル３００に送信する（３１０）。また、制御ユニット３０２は、ステータスをチャネル３００に提供し、エクスチェンジをクローズする（３１２）。これに応答して、チャネル３００はデータを記憶し、ステータスを検査し、エクスチェンジをクローズする（３１４）。これにより、ステータスが受信されたことが制御ユニット３０２に指示される。
【００３７】
上記の４ｋのデータを読み取るＣＣＷチャネル・プログラムの処理では、２回のエクスチェンジのオープン及びクローズ、ならびに７つのシーケンスが必要となる。チャネルと制御ユニットとの間のエクスチェンジ及びシーケンスの総数は、チャネル・プログラムの複数のコマンドをＴＣＣＢに集約することよって減少される。チャネル、例えば図１のチャネル１２４は、ＴＣＷを使用してＴＣＣＢの位置、ならびにチャネル・プログラムの実行に関連するステータス及びデータにアクセスしそれらを記憶する位置を識別する。ＴＣＷは、チャネルによって変換処理されるものであり、制御ユニットからは送信されず、制御ユニットからは見えない。
【００３８】
以下では図５を参照して、図３と同様であるが個別のＣＣＷの代わりにＴＣＣＢを含む４ｋのデータを読み取るチャネル・プログラムの一例について説明する。図示のとおり、本明細書ではＴＣＷチャネル・プログラムと呼ばれるチャネル・プログラム４００は、ＴＣＣＢ４０４のメモリ内の位置と、データ領域４０６又はデータ領域４０６を指すＴＩＤＡＬ４１０（即ち、ＭＩＤＡＷに類似する転送モード間接データ・アドレス・ワード（transfer mode indirectdata address word : TIDAW）のリスト）のメモリ内の位置と、ステータス領域４０８と、を指定するＴＣＷ４０２を含む。ＴＣＷ、ＴＣＣＢ、及びステータスについては以下で更に詳述する。
【００３９】
ＴＣＷチャネル・プログラムの処理を図６を参照して説明する。これらの通信に使用されるリンク・プロトコルは、例えばファイバ・チャネル・プロトコル（ＦＣＰ）である。特に、ＣＣＷによって制御されるデータ転送を実行するＦＣＰをサポートするホスト・バス・アダプタの使用が可能となる、ＦＣＰリンク・プロトコルの３つのフェーズが使用される。ＦＣＰ及びそのフェーズに関する詳細は、「Information Technology -Fibre Channel Protocol for SCSI, Third Version (FCP-3)」、T10 Project 1560-D, Revision 4（２００５年９月１３日）に記載されている。
【００４０】
図６を参照すると、チャネル５００は、制御ユニット５０２との間のエクスチェンジをオープンし、ＴＣＣＢ５０４を制御ユニット５０２に送信する。一例において、ＴＣＣＢ５０４及びシーケンス・イニシアチブは、「ＦＣＰ＿ＣＭＮＤ」情報単位（ＩＵ）又はトランスポート・コマンドＩＵと呼ばれるＦＣＰコマンドの形で制御ユニット５０２に転送される。制御ユニット５０２は、ＴＣＣＢ５０４の複数のコマンド（例えばデバイス制御ワード（device control word : DCW）としてのエクステント定義コマンド、ロケート・レコード・コマンド、読み取りコマンド）を実行し、例えば「ＦＣＰ＿Ｄａｔａ」ＩＵを介してデータ５０６をチャネル５００に転送する。制御ユニット５０２はステータスも提供し、エクスチェンジをクローズする（５０８）。一例として、最終ステータスは、例えばトランスポート応答ＩＵとも呼ばれる「ＦＣＰ＿ＲＳＰ」ＩＵペイロードのバイト１０又は１１にアクティブ・ビットを有するＦＣＰステータス・フレームの形で送られる。「ＦＣＰ＿ＲＳＰ」ＩＵペイロードは、拡張測定ワードの計算をサポートし、制御ユニット５０２によってサポートされるオープン・エクスチェンジの最大数をチャネル５００に通知するパラメータを含めた追加的なステータス情報と共に、ＦＩＣＯＮ終了ステータスをトランスポートするのに使用され得る。
【００４１】
別の一例では、４ｋの顧客データを書き込むために、チャネル５００は以下のＦＣＰリンク・プロトコル・フェーズを使用する：
１．ＴＣＣＢを「ＦＣＰ＿ＣＭＮＤ」ＩＵの形で転送する。
２．データのＩＵ及びシーケンス・イニシアチブを制御ユニット５０２に転送する。
３．最終ステータスが例えば「ＦＣＰ＿ＲＳＰ」ＩＵペイロードのバイト１０又は１１にアクティブ・ビットを有するＦＣＰステータス・フレームの形で送信される。「ＦＣＰ＿ＲＳＰ＿ＩＮＦＯ」フィールド又は感知フィールドを使用して、拡張測定ワードの計算をサポートし、制御ユニット５０２によってサポートされるオープン・エクスチェンジの最大数をチャネル５００に通知するパラメータを含めた追加的なステータス情報と共に、ＦＩＣＯＮ終了ステータスがトランスポートされる。
【００４２】
図５のＴＣＷチャネル・プログラムを実行することにより、２回のエクスチェンジが発生する図３（図４も参照）のＣＣＷチャネル・プログラムと対照的に、１回のエクスチェンジのオープン及びクローズのみが行われることになる（図６も参照）。更に、７つの通信シーケンスが発生するＣＣＷチャネル・プログラム（図３及び図４参照）と比較して、ＴＣＷチャネル・プログラムでは３つの通信シーケンス（図５及び図６参照）が発生する。
【００４３】
エクスチェンジ数及びシーケンス数は、追加的なコマンドがプログラムに追加された場合にもＴＣＷチャネル・プログラムの場合と同じになる。例えば、図７のＣＣＷチャネル・プログラムの通信と図８のＴＣＷチャネル・プログラムの通信を比較していただきたい。図７のＣＣＷチャネル・プログラムでは、各コマンド（例えばエクステント定義コマンド６００、ロケート・レコード・コマンド６０１、読み取りコマンド６０２、読み取りコマンド６０４、読み取りコマンド６０６、ロケート・レコード・コマンド６０７、及び読み取りコマンド６０８）は、個別のシーケンスでチャネル６１０から制御ユニット６１２に送信される。更に、４ｋの各データ・ブロック（データ６１４〜６２０）は、個別のシーケンスで制御ユニット６１２からチャネル６１０に送信される。このＣＣＷチャネル・プログラムでは、２回のエクスチェンジのオープン及びクローズ（例えばオープン・エクスチェンジ６２２、６２４、及びクローズ・エクスチェンジ６２６、６２８）、ならびに１４個の通信シーケンスが必要となる。これと比較して、図８のＴＣＷチャネル・プログラムでは、３つのシーケンスと１回のエクスチェンジで図７のＣＣＷチャネル・プログラムと同じタスクが達成される。
【００４４】
図８に示されるように、チャネル７００は、制御ユニット７０２との間のエクスチェンジをオープンし、ＴＣＣＢ７０４を制御ユニット７０２に送信する。ＴＣＣＢ７０４は、上述のとおりエクステント定義コマンドと、２つのロケート・レコード・コマンドと、４つの読み取りコマンドとをＤＣＷに含める。ＴＣＣＢ７０４が受信されたことに応答して、制御ユニット７０２は、各コマンドを実行し、１６ｋのデータ７０６を単一のシーケンスでチャネル７００に送信する。また、制御ユニット７０２は、ステータスをチャネル７００に提供し、エクスチェンジをクローズする（７０８）。それ故、ＴＣＷチャネル・プログラムで図７のＣＣＷチャネル・プログラムと同じ量のデータを転送するのに必要となる通信量はずっと少なくなる。
【００４５】
次に図９を参照すると、ＴＣＷチャネル・プログラムの実行をサポートする図１の制御ユニット１１０及びチャネル１２４の一実施形態がより詳細に示されている。制御ユニット１１０は、接続１２０を介してチャネル１２４から受信される、図８のＴＣＣＢ７０４のようなＴＣＣＢが収容されたコマンド・メッセージを構文解析し処理するＣＵ制御ロジック８０２を含む。ＣＵ制御ロジック８０２は、接続１２６を介して制御ユニット１１０において受信されたＴＣＣＢから例えばＩ／Ｏデバイス１１２等のデバイスを制御するＤＣＷ及び制御データを抽出して、１つ又は複数のＩ／Ｏ動作コマンドを実行することができる。ＣＵ制御ロジック８０２は、デバイス・コマンド及びデータをＩ／Ｏデバイス１１２に送信するとともに、Ｉ／Ｏデバイス１１２からステータス情報及び他のフィードバックを受信する。例えば、Ｉ／Ｏデバイス１１２は、Ｉ／Ｏデバイス１１２をターゲットとする事前の予約要求のためにビジー状態にある可能性がある。制御ユニット１１０が同じＩ／Ｏデバイス１１２に対する複数のアクセス要求を受信したときに発生し得る潜在的なデバイス予約の競合問題を管理するために、ＣＵ制御ロジック８０２は、デバイス・ビジー（ＤＢ）キュー８０４内のデバイス・ビジー・メッセージ及び関連データを追跡し記憶する。例示的な一実施形態において、図１のＯＳ１０３は、Ｉ／Ｏデバイス１１２を予約して、予約がアクティブである間は他のＯＳ１０３がＩ／Ｏデバイス１１２にアクセスしないようにする。デバイス予約は必ずしもすべてのＩ／Ｏ動作について必要となるわけではないが、デバイス予約を使用することにより、固定期間中、例えばディスク・フォーマット中に排他的アクセスを必要とする動作をサポートすることが可能となる。
【００４６】
ＣＵ制御ロジック８０２は、制御ユニット１１０内のＣＵタイマー８０６やＣＵレジスタ８０８のような他の要素にアクセスし、それらの要素を制御することができる。ＣＵタイマー８０６は、一続きのＩ／Ｏ動作が完了するまでどの程度時間がかかるかを追跡する複数のタイマー機能を含むことができる。ＣＵタイマー８０６は更に、所定期間内に完了しないＩ／Ｏ動作及びコマンドを監視し中断させる１つ又は複数のカウントダウン・タイマーも含むことができる。ＣＵレジスタ８０８は、構成及びステータス情報と、ＣＵ制御ロジック８０２によってコマンドが実行されたときに更新される動的ステータス情報と、を提供する固定値を含むことができる。更に、制御ユニット１１０は、チャネル１２４とＩ／Ｏデバイス１１２との間の通信に関連する複数のメッセージ又はステータス情報を記憶する他のバッファ又はメモリ要素（図示せず）も含むことができる。ＣＵレジスタ８０８は、制御ユニット１１０によってサポートされるオープン制御ユニット・エクスチェンジの最大数を定義する最大制御ユニット・エクスチェンジ・パラメータ（maximum control unitexchange parameter）を含むことができる。
【００４７】
チャネル・サブシステム１０８内のチャネル１２４は、制御ユニット１１０との間の通信をサポートする複数の要素を含む。例えば、チャネル１２４は、ＣＨＮサブシステム・タイマー８１２及びＣＨＮサブシステム・レジスタ８１４とのインターフェースをとるＣＨＮ制御ロジック８１０を含むことができる。例示的な一実施形態において、ＣＨＮ制御ロジック８１０は、チャネル・サブシステム１０８と制御ユニット１１０との間の通信を制御する。ＣＨＮ制御ロジック８１０は、接続１２０を介してＣＵ制御ロジック８０２と直接インターフェースをとり、それによってトランスポート・コマンドのようなコマンドを送信し、トランスポート応答ＩＵのような応答を受信することができる。別法として、メッセージング・インターフェース又はバッファ（図示せず）あるいはその両方をＣＨＮ制御ロジック８１０とＣＵ制御ロジック８０２との間に配置することもできる。ＣＨＮサブシステム・タイマー８１２は、制御ユニット１１０によって追跡される時間に加えて、一続きのＩ／Ｏ動作が完了するまでどの程度時間がかかるかも追跡する複数のタイマー機能を含むことができる。ＣＨＮサブシステム・タイマー８１２は更に、所定期間内に完了しないコマンド・シーケンスを監視し中断させる１つ又は複数のカウントダウン・タイマーも含むことができる。ＣＨＮサブシステム・レジスタ８１４は、構成及びステータス情報、ならびにコマンドがトランスポートされ応答が受信されたときに更新される動的ステータス情報を提供する固定値を含むことができる。
【００４８】
図１０には、ＴＣＷチャネル・プログラムの完了時に制御ユニット１１０からチャネル１２４に通信される応答メッセージ９００、例えばトランスポート応答ＩＵの一例が示される。応答メッセージ９００は、ステータス情報をチャネル１２４に提供し、チャネル１２４と制御ユニット１１０との間のオープン・エクスチェンジがクローズされることを指示することができる。ＴＣＷチャネル・プログラム（例えば図６及び図８参照）が実行されるときに提供されるステータス情報は、ＣＣＷチャネル・プログラム（例えば図４及び図７参照）の完了時に送信されるステータス情報に加えて追加的な情報も含む。応答メッセージ９００は、ステータス・セクション９０２と、拡張ステータス・セクション９０４と、を含む。応答メッセージ９００が受信されると、チャネル１２４は、ＴＣＷが動作するデバイスに関するサブチャネル内のステータス・セクション９０２、及び応答メッセージ９００をトリガしたＴＣＷチャネル・プログラムに関連するＴＣＷによって定義されるメモリ位置の拡張ステータス・セクション９０４の各部分を記憶する。例えば、ＴＣＷは、図１のメイン・メモリ１０２内のあるセクションを拡張ステータス・セクション９０４の記憶セクションに指定することができる。
【００４９】
応答メッセージ９００のステータス・セクション９０２は、アドレス・ヘッダー９０６、ステータス・フラグ１９０８、最大制御ユニット・エクスチェンジ・パラメータ９１０、応答フラグ９１２、応答コード９１４、残りカウント９１６、応答長９１８、予約位置９２０、ＳＰＣ‐４感知タイプ９２２、ステータス・フラグ２９２４、ステータス・フラグ３９２６、デバイス・ステータス９２８、水平冗長検査（ＬＲＣ）ワード９３０のような複数のフィールドを含むことができる。ステータス・セクション９０２内の各フィールドは、応答メッセージ９００の構文解析をサポートする特定のバイト・アドレスに割り当てられる。図１０にはステータス・セクション９０２内のフィールドの一配置構成が示されているが、フィールドの順序は、本開示の範囲内で交代順序に並べ替えることが可能であることが理解されるだろう。更に、応答メッセージ９００内のフィールドは、本発明の範囲内で省略することも結合することも可能であり、例えばステータス・フラグ２９２４とステータス・フラグ３９２６を単一のフィールドに結合することもできる。ＳＰＣ‐４に関する詳細は、「SCSI Primary Commands-4 (SPC-4)」、Project T10/1731-D、Rev 11、INCITS（２００７年５月）に記載されている。
【００５０】
例示的な一実施形態において、アドレス・ヘッダー９０６は、ＴＣＷチャネル・プログラムを開始した制御ユニット１１０によって受信されたＴＣＣＢ内の値と同じ値にセットされる。アドレス・ヘッダー９０６は必ずしも必要でないが、アドレス・ヘッダー９０６を含めることにより、複数のＩ／Ｏデバイス１１２がアクセスされているときにＩ／Ｏデバイス１１２上のコマンド及び応答メッセージを追跡する検査をサポートすることが可能となる。
【００５１】
ステータス・フラグ１  ９０８は、Ｉ／Ｏ動作の成功ステータスのような情報を指示することができる。ステータス・フラグ１  ９０８内の複数のビットは、追加的なステータス情報を提供することができる。
【００５２】
最大制御ユニット・エクスチェンジ・パラメータ９１０は、制御ユニット１１０がエクスチェンジのオープンをチャネル１２４に許可する最大エクスチェンジ数を識別する。値「０」は、チャネル１２４が使用している現在の値が制御ユニット１１０によって変更されないことをチャネル１２４に知らせることができる。例示的な一実施形態において、チャネル１２４は、制御ユニット１１０が最大制御ユニット・エクスチェンジ・パラメータ９１０を利用して修正可能なオープン・エクスチェンジの最大数のデフォルト値、例えば６４を定める。応答メッセージ９００で送信される最大制御ユニット・エクスチェンジ・パラメータ９１０の値は、ある式の所望の実際値であってもシード値であってもよい。例えば、最大制御ユニット・エクスチェンジ・パラメータ９１０の値は、チャネル１２４で増分又は乗算あるいはその両方を行うことができ、それによって実際のオープン・エクスチェンジの最大数、例えばチャネル１２４によって「３２」と解釈される値「１」を決定することができる。
【００５３】
オープン・エクスチェンジの最大数のデフォルト値を使用することにより、制御ユニット１１０の決定に従って修正可能な共通の始点が各制御ユニット１１０及びチャネル１２４に与えられる。一実施形態において、チャネル１２４は、制御ユニット１１０からの応答メッセージ９００の形で受信された最大制御ユニット・エクスチェンジ・パラメータ９１０を検査して、最大制御ユニット・エクスチェンジ・パラメータ９１０がデフォルト値又は事前に受信された値を下回るかどうかを判定する。新しい数が現在のオープン・エクスチェンジ数よりも小さい場合は、チャネル１２４は、使用される現在のエクスチェンジ数が新しい限界を下回るまで新しいＩ／Ｏコマンドを制御ユニット１１０に駆動しない。
【００５４】
例示的な一実施形態において、応答フラグ９１２は、ＦＣＰ（先述）で定義される標準定義を使用するフィールドであり、デフォルト値、例えば２にセットされ得る。応答コード９１４は、小型コンピュータ・システム・インターフェース（ＳＣＳＩ）のステータス・フィールドと等価であってよく、デフォルト値、例えば０にセットされ得る。読み取り又は書き込みコマンド用の残りカウント９１６は、読み取り又は書き込みコマンド対象のバイト数と、実際に読み取られた又は書き込まれたバイト数の差を指示する。応答長９１８は、予約位置９２０以降の応答メッセージ９００内の情報バイトに関する追加的なカウントである。応答長９１８は、可変サイズの応答メッセージ９００をサポートする。ＳＰＣ‐４感知タイプ９２２は、メッセージ・タイプに基づく特定の値に割り当てることができ、例えばトランスポート応答ＩＵ＝７Ｆ（１６進数）とすることができる。一実施形態において、ステータス・フラグ２９２４は値「８０」（１６進数）にセットされ、その結果残りカウント９１６が有効値となり、Ｉ／Ｏ動作が完了したことが指示される。ステータス・フラグ３９２６は、Ｉ／Ｏ動作が完了したときに値「１」にセットされ、その結果拡張ステータス・セクション９０４が応答メッセージ９００の一部として含まれることが指示される。デバイス・ステータス９２８は、Ｉ／Ｏデバイス１１２によって生成されるステータス情報を中継する。ＬＲＣワード９３０は、ステータス・セクション９０２の完全性を検証するために応答メッセージ９００のステータス・セクション９０２内の他のフィールドをカバーする検査ワードである。ＬＲＣワード９３０は、初期シード値と連続するＬＲＣ計算に含まれる各フィールドとの排他論理和演算を適用することによって生成され得る。
【００５５】
拡張ステータス・セクション９０４は、ＴＣＷチャネル・プログラムを実行可能なトランスポート・モードで制御ユニット１１０を動作させることに関連する情報を、チャネル・サブシステム１０８及びＯＳ１０３に提供する。拡張ステータス・セクション９０４は、各タイプに応じた様々なタイプのステータス定義を有する構成可能な定義をサポートすることができる。例示的な一実施形態において、拡張ステータス・セクション９０４は、トランスポート・ステータス・ヘッダー（ＴＳＨ）９３２と、トランスポート・ステータス・エリア（ＴＳＡ）９３４と、ＴＳＨ９３２及びＴＳＡ９３４のＬＲＣワード９３６と、を含む。ＴＳＨ９３２は、拡張ステータス長９４０、拡張ステータス・フラグ９４２、ＤＣＷオフセット９４４、ＤＣＷ残りカウント９４６、及び予約位置９４８を含むことができる。ＴＳＨ９３２は、拡張ステータス・フラグ９４２内のタイプ・コードでそれぞれ定義される様々なフォーマットに共通である。ＴＳＡ９３４は、総デバイス（total device）時間パラメータ９５０、遅延（defer）時間パラメータ９５２、キュー（queue）時間パラメータ９５４、デバイス・ビジー（device busy）時間パラメータ９５６、正味デバイス・アクティブ（device active only）時間パラメータ９５８、及び接続デバイス感知データ（appended device sensedata）９６０を含むことができる。以下、これらの各フィールドについて詳細に説明する。
【００５６】
拡張ステータス長９４０は、拡張ステータス・セクション９０４のサイズである。例示的な一実施形態において、拡張ステータス・フラグ９４２は以下の定義を有する：
ビット０：ＤＣＷオフセット９４４が有効。
ビット１：ＤＣＷ残りカウント９４６が有効。
ビット２：このビットが「１」にセットされると、制御ユニット１１０がデータを得るために低速メディアにアクセスする必要が生じたこと、例えばキャッシュ・ミスが発生したことが図１のＯＳ１０３に明確に知らされる。
ビット３：時間パラメータ９５０〜９５８が有効。タイプ・コードが「１」にセットされ且つ本ビットが「１」にセットされると、時間パラメータ９５０〜９５８がすべて有効であることが指示される。
ビット４：予約済み。
ビット５〜７：これらの３つのビットは、拡張ステータス・セクション９０４のＴＳＡ９３４のフォーマットを定義するタイプ・コードである。エンコードの名前は以下のとおりである：
０．予約済み。
１．Ｉ／Ｏステータス。拡張ステータス・セクション９０４は、トランスポート・モードＩ／Ｏ動作の有効な終了ステータスを収容する。
２．Ｉ／Ｏ例外。拡張ステータス・セクション９０４は、例外条件によるトランスポート・モードＩ／Ｏ動作の終了に関する情報を収容する。
３．問い合わせステータス。拡張ステータス・セクション９０４は、問い合わせ動作のステータスを収容する。
４．〜７．予約済み。
【００５７】
ＤＣＷオフセット９４４は、障害のあるＤＣＷのＴＣＣＢ内のオフセットを指示する。同様に、ＤＣＷ残りカウント９４６は、障害のあるＤＣＷ（即ちＤＣＷの実行が中断された場合）の残りバイト・カウントを指示する。
【００５８】
例示的な一実施形態において、拡張ステータス・フラグ９４２のタイプ・コードがＩ／Ｏステータスのタイプを指示する場合のＴＳＡ９３４の定義は、時間パラメータ９５０〜９５８と、任意選択で接続デバイス感知データ９６０も含む。時間パラメータ９５０〜９５８は時間値であり、マイクロ秒のような任意の時間単位にスケーリングすることができる。図９のＣＵタイマー８０６は、時間パラメータ９５０〜９５８を計算するのに使用される一方、ＣＵレジスタ８０８は、トリガ・イベントに関するＣＵタイマー８０６の値を収集するのに利用され得る。
【００５９】
総デバイス時間パラメータ９５０は、制御ユニット１１０がトランスポート・コマンドＩＵを受信した時点からＩ／Ｏ動作に関するトランスポート応答ＩＵ（即ち応答メッセージ９００）を送信する時点までの経過時間である。遅延時間パラメータ９５２は、制御ユニットの遅延時間を指示する。この時間は、チャネル１２４との間の通信が実行されないときにＩ／Ｏデバイス１１２と協働する制御ユニット１１０によって蓄積される時間である。図４に示されるようなＣＣＷチャネル・プログラムでは、制御ユニット３０２は、この時間の間にチャネル３００から切断される。
【００６０】
キュー時間パラメータ９５４は、Ｉ／Ｏ動作が制御ユニット１１０においてキューイングされる時間であるが、Ｉ／Ｏデバイス１１２が同じ又は別のホスト・システム１０１上の異なるＯＳ１０３によって予約される場合は、デバイス・ビジー時間中のキュー時間は含まれない。デバイス・ビジー時間パラメータ９５６は、Ｉ／Ｏデバイス１１２が同じ又は別のホスト・システム１０１上の異なるＯＳ１０３によって予約されている故にデバイス・ビジーの待機状態にある制御ユニット１１０においてトランスポート・コマンドＩＵがキューイングされる時間である。
【００６１】
正味デバイス・アクティブ時間パラメータ９５８は、制御ユニット１１０がチャネル・エンド（ＣＥ）をデバイス・エンド（ＤＥ）が利用可能になるまで保持するときの、制御ユニット１１０におけるＣＥからＤＥまでの経過時間である。ＣＥは、チャネル１２４と制御ユニット１１０との間のデータ又は制御情報の転送に関するＩ／Ｏ動作の部分が完了したことを指示することができる。ＤＥは、Ｉ／Ｏ動作のデバイス部分が完了したことを指示することができる。接続デバイス感知データ９６０は、制御ユニット１１０がデバイス・ステータス９２８内のアクティブ・ユニット検査（ＵＣ）ビットに応答して条件付きで提供する補足ステータスである。
【００６２】
ＬＲＣワード９３６は、ＴＳＨ９３２及びＴＳＡ９３４の水平冗長検査ワードであり、応答メッセージ９００のステータス・セクション９０２内のＬＲＣワード９３０と同様に計算される。ＬＲＣワード９３６は、接続デバイス感知データ９６０に含まれるワード数に応じて可変数のワードに関して計算することができる。
【００６３】
次に図１１を参照すると、接続１２０を介して制御ユニット１１０と通信する複数のホスト・システム１０１が示されている。各ホスト・システム１０１は、１つ又は複数のチャネル１２４を有するチャネル・サブシステム１０８を含む。図１１の各ホスト・システム１０１内には１つのチャネル１２４だけが示されているが、各ホスト・システムは複数のＯＳ１０３によって制御される複数のチャネル１２４を含み得ることが理解されるだろう。ホスト・システム１０１は、図１に関して先述した他の処理システム要素、即ち、ストレージ制御要素１０６と結合される１つ又は複数のＣＰＵ１０４及びメイン・メモリ１０２も含む。各ホスト・システム１０１は、Ｉ／Ｏデバイス１１２に対する排他的アクセスの予約要求をそれぞれ行うことが可能な１つ又は複数のＯＳ１０３を実行することができる。各ホスト・システム内のＯＳ１０３は、１つ又は複数のチャネル１２４を個別に制御してＩ／Ｏ動作を開始することができる。これらのＯＳ１０３は、１つ又は複数のチャネル１２４上の異なるサブチャネル（図示せず）を使用して制御ユニット１１０と通信することができる。
【００６４】
チャネル１２４と制御ユニット１１０との間の各接続１２０は、直接接続とすることができる。別法として、接続１２０をファイバ・チャネル・ファブリックの一部として１つ又は複数の動的スイッチ１００２を経由させることにより、制御ユニット１１０側の物理接続数を減少させることができる。
【００６５】
図９に関して先述したように、ＣＵ制御ロジック８０２は、接続１２０を介してチャネル１２４から受信される、図８のＴＣＣＢ７０４のようなＴＣＣＢが収容されたコマンド・メッセージを構文解析し処理する。ＣＵ制御ロジック８０２において受信されるコマンドの中にはデバイス予約要求を含むものもある可能性がある。デバイス予約は、必ずしもすべてのＩ／Ｏ動作について必要となるわけではないが、Ｉ／Ｏデバイス１１２に対する排他的アクセスを必要とするＩ／Ｏ動作についてＯＳ１０３単位で要求することが可能である。例えば、異なるＯＳ１０３が同時にＩ／Ｏデバイス１１２のデータ・ブロック読み取りを要求することができる。制御ユニット１１０は、Ｉ／Ｏデバイス１１２を予約することなく各読み取り要求をサービスすることができる。しかしながら、Ｉ／Ｏデバイス１１２がチャネル１２４のうちの１つを介してＯＳ１０３のうちの１つによって予約されたときは、Ｉ／Ｏデバイス１１２に対するアクセス試行を行うその他のＯＳ１０３は、Ｉ／Ｏデバイス１１２が予約されている間ブロックされる。
【００６６】
例示的な一実施形態において、ＣＵ制御ロジック８０２は、Ｉ／Ｏデバイス１１２がＯＳ１０３によって予約されたときにＩ／Ｏデバイス１１２からデバイス・ビジー・インジケータを受信する。ＣＵ制御ロジック８０２は、デバイス・ビジー・インジケータが存在するときにコマンド・メッセージを受信するので、それらのコマンド・メッセージをＤＢキュー８０４上に置くことができる。これらのコマンド・メッセージには、各コマンド・メッセージに関連する特定のＯＳ１０３又はチャネル１２４あるいはその両方を定める識別情報が収容される可能性がある。例示的な一代替実施形態において、ＣＵ制御ロジック８０２は、各コマンド・メッセージに関連する特定のＯＳ１０３又はチャネル１２４あるいはその両方をＣＵレジスタ８０８で追跡する。Ｉ／Ｏデバイス１１２の予約が解除されたときは、その旨がデバイス・エンド・インジケータを利用してＣＵ制御ロジック８０２に通知される。ＣＵ制御ロジック８０２は、デバイス・エンド・インジケータに応答してＤＢキュー８０４をサービスし、実行すべきＩ／Ｏデバイス１１２のコマンド・メッセージを抽出する。抽出されたコマンド・メッセージによってＩ／Ｏデバイス１１２が再び予約される可能性があり、その場合は待ち状態のコマンド・メッセージの更なるサービス遅延が生じる可能性がある。一方、抽出されたコマンド・メッセージによってＩ／Ｏデバイス１１２の予約が必要とされない（例えばＩ／Ｏデバイス１１２に対する排他的アクセスが必要とされない）可能性もあり、その場合はＤＢキュー８０４の追加的なサービスを行って追加的なコマンド・メッセージを引き続き実行することが可能となる。
【００６７】
ＤＢキュー８０４のサービスは、ＤＢキュー８０４を管理する様々な技法を使用して実行することができる。例えば、ＤＢキュー８０４は、各コマンド・メッセージをＤＢキュー８０４に入れた順に抽出するＦＩＦＯとして管理することができる。別法として、ＤＢキュー８０４は、優先度付きキューとしてサービスすることもできる。ＤＢキュー８０４に書き込まれるコマンド・メッセージの優先度は、制御ユニット１１０にトランスポートされる各コマンド・メッセージ内のフィールドに含めることができる。スケジューリング・オプションの範囲で任意の数の優先度を定めることができる。ＤＢキュー８０４が優先度付きキューとしてサービスされる場合は、サービス時にＤＢキュー８０４内で最も高い優先度のコマンド・メッセージが優先度の低いコマンド・メッセージよりも先に抽出される。コマンド・メッセージがＤＢキュー８０４内に留まる時間量を監視して各コマンド・メッセージの優先度を期間に応じて高めることにより、各コマンド・メッセージのサービスを保証することができる。ＤＢキュー８０４向けの別のキュー・サービス手法は、ラウンド・ロビン・サービスである。ラウンド・ロビン・サービスを使用する場合は、ＤＢキュー８０４をＯＳ１０３単位でサービスするためにＤＢキュー８０４内の各コマンド・メッセージに関連するＯＳ１０３（又はチャネル１２４）が分析される。ラウンド・ロビン・サービスは、あるＯＳ１０３が複数のアクセス要求のバーストを制御ユニット１１０に送信した場合に発生し得る潜在的な不均衡が防止されるように、各通信リンクに対するアクセスを提供する。
【００６８】
コマンド・メッセージがＤＢキュー８０４上にキューイングされたときは、ＣＵレジスタ８０８内のデバイス・ビジー・タイマーが開始される。ＤＢキュー８０４のサービスによってＩ／Ｏ動作コマンドが実行されると、ＣＵレジスタ８０８内のデバイス・ビジー・タイマーの値が読み取られ、それによってコマンド・メッセージがＤＢキュー８０４内でどの程度の時間待ち状態にあったかが判定される。デバイス・ビジー・タイマーの値は、図１０の応答メッセージ９００のデバイス・ビジー時間パラメータ９５６の形で報告される。複数のＯＳ１０３をサポートするために複数のデバイス・ビジー・タイマーがＣＵレジスタ８０８内に存在することもある。別法として、ＣＵレジスタ８０８内のデバイス・ビジー・タイマーは、デバイス・ビジー時間値が複数のＯＳ１０３のＣＵレジスタ８０８に取り込まれ、チャネル１２４を介して各ＯＳ１０３に出力される連続動作タイマーとすることもできる。
【００６９】
複数のコマンド・メッセージがＤＢキュー８０４にキューイングされるときは、ＤＢキュー８０４の深度が監視される。ＤＢキュー８０４がフルになり、その結果コマンド・メッセージをそれ以上キューイングすることができなくなった場合は、ＣＵ制御ロジック８０２は、ＤＢキュー８０４がフルの間に新しいコマンド・メッセージを送信するすべてのＯＳ１０３にデバイス・ビジー・メッセージを出力することができる。その後、ＣＵ制御ロジック８０２は、デバイス・エンド・メッセージを送信してＩ／Ｏデバイス１１２がレディ状態になったことを指示することができ、その結果、ＯＳ１０３による１つ又は複数のチャネル１２４を介したコマンド・メッセージの再送信がトリガされ得る。別法として、ＤＢキュー８０４内のコマンド・メッセージのうちのいくつかをデバイス・ビジーと共にＯＳ１０３に返し、ＤＢキュー８０４からフラッシュすることもできる。この場合も、ＣＵ制御ロジック８０２は、デバイス・エンド・メッセージを送信してＩ／Ｏデバイス１１２がレディ状態になったことを指示することができ、その結果、ＯＳ１０３による１つ又は複数のチャネル１２４を介したコマンド・メッセージの再送信がトリガされ得る。
【００７０】
ＤＢキュー８０４を管理する際は、ＣＵ制御ロジック８０２は、フル・キュー状態以外にも様々なシナリオ下のビジー状態をＯＳ１０３に通知することができる。例えば、ＣＵ制御ロジック８０２は、ＣＵタイマー８０６を使用してコマンド・メッセージがＤＢキュー８０４上に留まる時間を監視することができる。Ｉ／Ｏデバイス１１２が予約されているときにコマンド・メッセージがコマンド・タイムアウト期間よりも長い期間にわたってキューイングされている（例えばデバイス・エンド・インジケータが受信されない）場合、そのコマンド・メッセージはＤＢキュー８０４から削除され、デバイス・ビジー・メッセージが「ＦＣＰ＿ＲＳＰ」ＩＵの形でコマンド・メッセージの発信元に送信される。コマンド・タイムアウト期間は、３０秒のような固定値にセットすることも、構成可能とすることもできる。例示的な一実施形態では、Ｉ／Ｏデバイス１１２がデバイス・ビジー・タイムアウト期間を超えて予約され、その間に新しいコマンド・メッセージが受信された場合は、ＣＵ制御ロジック８０２は、その新しいコマンド・メッセージをＤＢキュー８０４上に置かない。ＣＵ制御ロジック８０２は、デバイス・ビジー・メッセージを「ＦＣＰ＿ＲＳＰ」ＩＵの形で新しいコマンド・メッセージの発信元に送信する。
【００７１】
ＯＳ１０３は、要求されたコマンド・メッセージが完了するまでの経過時間も監視することができる。オペレーティング・システム・タイムアウト期間が経過したことが判定されたことに応答して、ＯＳ１０３は、リセット・アリージャンス（reset allegiance）メッセージを制御ユニット１１０に送信してＩ／Ｏデバイス１１２の解放を試行することができる。これに応答して、制御ユニット１１０は、オペレーティング・システム・タイムアウト・リカバリ期間に入る。オペレーティング・システム・タイムアウト・リカバリ期間中に新しいコマンド・メッセージが受信された場合は、ＣＵ制御ロジック８０２は、その新しいコマンド・メッセージをＤＢキュー８０４上に置かない。ＣＵ制御ロジック８０２は、新しいコマンド・メッセージの発信元に対して「ＦＣＰ＿ＲＳＰ」ＩＵの形のデバイス・ビジー・メッセージで応答する。
【００７２】
次に図１２を参照して、１つ又は複数のチャネルを介して複数のＯＳと通信する制御ユニットにおいて予約デバイスのアクセス競合を低減する例示的な諸実施形態に係るプロセス１１００について説明する。ここでは図１のＩ／Ｏ処理システム１００及び図１１の制御ユニット１１０の詳細な図面も参照しながら説明を行う。ブロック１１０２で、制御ユニット１１０は、制御ユニット１１０と通信するＩ／Ｏデバイス１１２に関するＩ／Ｏ動作コマンドを含むコマンド・メッセージを、複数のＯＳ１０３のうちの第１のＯＳから１つ又は複数のチャネル１２４を介して受信する。コマンド・メッセージは、ＴＣＷチャネル・プログラムの一部として複数のＤＣＷを有するＴＣＣＢを含むトランスポート・コマンドＩＵである可能性がある。ブロック１１０４で、制御ユニット１１０は、デバイス・ビジー・インジケータをＩ／Ｏデバイス１１２から受信する。デバイス・ビジー・インジケータは、Ｉ／Ｏデバイス１１２が複数のＯＳ１０３のうちの第２のＯＳによって予約されていることを制御ユニット１１０に通知する。
【００７３】
ブロック１１０６で、制御ユニット１１０は、デバイス・ビジー・インジケータに応答してコマンド・メッセージをＤＢキュー８０４にキューイングする。制御ユニット１１０において追加的なコマンド・メッセージが受信されたときは、それらのコマンド・メッセージはＤＢキュー８０４上にキューイングされる。
【００７４】
ブロック１１０８で、制御ユニット１１０は、Ｉ／Ｏデバイス１１２が新しいＩ／Ｏ動作コマンドを受信する準備が整ったことを制御ユニット１１０に通知するデバイス・エンド・インジケータの有無についてＩ／Ｏデバイス１１２を監視する。ブロック１１１０で、制御ユニット１１０は、デバイス・エンド・インジケータに応答してＤＢキュー８０４をサービスしてコマンド・メッセージを抽出し、Ｉ／Ｏ動作コマンドを実行する。ＤＢキュー８０４は、先述のとおりＦＩＦＯサービス、優先度ベース・サービス、あるいはラウンド・ロビン・サービスを使用してサービスされ得る。
【００７５】
例示的な諸実施形態の技術的効果としては、Ｉ／Ｏ処理システムにおける予約デバイスのアクセス競合が低減されることが挙げられる。デバイスが予約されている間に受信されたコマンド・メッセージをデバイス・ビジー・キューを使用して一時的に記憶することにより、制御ユニットは、コマンド・メッセージを発信したホスト・システムのチャネル・サブシステムに負担をかけることなく、様々なＯＳに由来するコマンド・メッセージのサービス順序を管理することが可能となる。制御ユニット上でのＴＣＷチャネル・プログラムの実行を妨げずに複数のコマンド・メッセージが処理されることが利点として挙げられる。それ故、デバイス・ビジー・キューイングでは、チャネル・プログラム毎の交換メッセージ数の減少に部分的に起因する通信スループットの向上の利点も享受しながら、予約デバイスに対するアクセス競合が対処される。システム設計者又は顧客のプリファレンスに応じて様々なデバイス・ビジー・キュー・サービス技法を使用することができる。例示的な諸実施形態において、応答の遅いホスト・システムから発信されるコマンド・メッセージは、応答の早いホスト・システムと公平にサービスされる。
【００７６】
上述のとおり、諸実施形態は、上述の処理を実施するコンピュータ実装プロセス及び装置の形で実施することができる。例示的な諸実施形態において、本発明は、１つ又は複数のネットワーク要素によって実行されるコンピュータ・プログラム・コードの形で実施される。諸実施形態は、製品となる有形の媒体内で実行される命令を収容したコンピュータ・プログラム・コード・ロジック１２０４を含むコンピュータ使用可能な媒体１２０２上の、図１３に示されるようなコンピュータ・プログラム１２００を含む。コンピュータ使用可能な媒体１２０２の例示的な製品としては、フレキシブル・ディスク、ＣＤ‐ＲＯＭ、ハード・ドライブ、ユニバーサル・シリアル・バス（ＵＳＢ）フラッシュ・ドライブ、又は他の任意のコンピュータ可読記憶媒体を挙げることができ、コンピュータ・プログラム・コード・ロジック１２０４がコンピュータにロードされ実行されたときは、当該コンピュータが本発明を実施する装置となる。諸実施形態は、例えばストレージ・メディアに記憶されるものであれ、コンピュータへのロード又はコンピュータによる実行あるいはその両方が行われるものであれ、電気配線又は電気ケーブル、光ファイバ、電磁放射等、何らかの伝送媒体を介して伝送されるものであれ、それ自体がコンピュータにロードされ実行されたときに当該コンピュータが本発明を実施する装置となる、コンピュータ・プログラム・コード・ロジック１２０４を含む。コンピュータ・プログラム・コード・ロジック１２０４が汎用マイクロプロセッサ上に実装された場合、当該マイクロプロセッサは、コンピュータ・プログラム・コード・ロジック１２０４の各セグメントによって特定の論理回路を形成するように構成される。
【００７７】
以上、本発明について例示的な諸実施形態を参照して説明したが、これらの実施形態には本発明の範囲から逸脱しない限り様々な変更を施すことができ、それらの各要素を均等物で置き換えることができることが当業者には理解されるだろう。また、本発明の本質的な範囲から逸脱しなければ、特定の状況又は材料に応じて本発明の教示内容に様々な修正を施すことが可能である。したがって、本発明は、本発明の最良の実施形態として本明細書に開示される特定の実施形態に限定されるものではなく、添付の特許請求範囲に含まれるすべての実施形態を包含することが本出願人の意図するところである。また、「第１の」や「第２の」等の用語の使用はいかなる序列関係も重要度も示すものではなく、ある要素と別の要素を区別するのに使用されるものである。更に、「ａ」や「ａｎ」等の用語の使用は数量の限定を示すものではなく、言及される要素が少なくとも１つ存在することを示している。
【図１】
2011512585.tif 000003
【図２】
2011512585.tif 000004
【図３】
2011512585.tif 000005
【図４】
2011512585.tif 000006
【図５】
2011512585.tif 000007
【図６】
2011512585.tif 000008
【図７】
2011512585.tif 000009
【図８】
2011512585.tif 000010
【図９】
2011512585.tif 000011
【図１０】
2011512585.tif 000012
【図１１】
2011512585.tif 000013
【図１２】
2011512585.tif 000014
【図１３】
2011512585.tif 000015
【手続補正書】
【提出日】平成22年10月6日(2010.10.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１つ又は複数のチャネルを介して複数のオペレーティング・システムと通信する制御ユニットにおいて予約デバイスのアクセス競合を低減するコンピュータ・プログラムであって、
処理回路によって読み取り可能な有形のストレージ・メディアであって、
前記制御ユニットと通信するデバイスに関するＩ／Ｏ動作コマンドを含むコマンド・メッセージを、前記複数のオペレーティング・システムのうちの第１のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイスが前記複数のオペレーティング・システムのうちの第２のオペレーティング・システムによって予約されていることを前記制御ユニットに通知するデバイス・ビジー・インジケータを前記デバイスから受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記コマンド・メッセージをデバイス・ビジー・キュー上にキューイングするステップと、
前記デバイスが新しいＩ／Ｏ動作コマンドを受信する準備が整ったことを前記制御ユニットに通知するデバイス・エンド・インジケータの有無について前記デバイスを監視するステップと、
前記デバイス・エンド・インジケータに応答して前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行するステップと、
を含む方法を実行するために前記処理回路によって実行される命令を記憶した有形のストレージ・メディアを備え、
前記方法は、
前記コマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングする前記ステップに応答してデバイス・ビジー・タイマーを開始するステップと、
前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行する前記ステップに応答して前記デバイス・ビジー・タイマーの値を読み取るステップと、
前記デバイス・ビジー・タイマーの前記値をトランスポート応答情報単位メッセージの形で前記１つ又は複数のチャネルを介して前記第１のオペレーティング・システムに出力するステップと、
をコンピュータに実行させるコンピュータ・プログラム。
【請求項２】
前記方法は、
追加的なＩ／Ｏ動作コマンドを含む追加的なコマンド・メッセージを、前記複数のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記追加的なコマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングするステップと、
前記デバイス・ビジー・キューをサービスして前記追加的なＩ／Ｏ動作コマンドを実行するステップと、
を更に含む、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングされた順に出力する先入れ先出し（ＦＩＦＯ）サービスとして実行される、請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージを優先度の高いコマンド・メッセージから優先度の低いコマンド・メッセージの順に前記デバイス・ビジー・キューから出力する優先度ベース・サービスとして実行される、請求項２に記載のコンピュータ・プログラム。
【請求項５】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージをオペレーティング・システム単位で前記デバイス・ビジー・キューから出力するラウンド・ロビン・サービスとして実行される、請求項２に記載のコンピュータ・プログラム。
【請求項６】
前記方法は、
前記デバイス・ビジー・キューがフルの間に追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
前記デバイス・エンド・インジケータがデバイス・ビジー・タイムアウト期間内に受信されない間に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
オペレーティング・システム・タイムアウト・リカバリ期間内に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、及び
前記デバイス・エンド・インジケータがコマンド・タイムアウト期間内に受信されなかったことが判定されたこと、
のうちの１つ又は複数に応答してデバイス・ビジー・メッセージを出力するステップ
を更に含む、請求項１に記載のコンピュータ・プログラム。
【請求項７】
前記コマンド・メッセージは、前記Ｉ／Ｏ動作コマンドをトランポート制御ワード（ＴＣＷ）チャネル・プログラムの一部として保持するトランスポート・コマンド制御ブロック（ＴＣＣＢ）を含むトランスポート・コマンド情報単位メッセージである、請求項１に記載のコンピュータ・プログラム。
【請求項８】
予約デバイスのアクセス競合を低減する装置であって、
１つ又は複数のチャネルを介して複数のオペレーティング・システムと通信する制御ユニットを備え、前記制御ユニットは、
前記制御ユニットと通信するデバイスに関するＩ／Ｏ動作コマンドを含むコマンド・メッセージを、前記複数のオペレーティング・システムのうちの第１のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイスが前記複数のオペレーティング・システムのうちの第２のオペレーティング・システムによって予約されていることを前記制御ユニットに通知するデバイス・ビジー・インジケータを前記デバイスから受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記コマンド・メッセージをデバイス・ビジー・キュー上にキューイングするステップと、
前記デバイスが新しいＩ／Ｏ動作コマンドを受信する準備が整ったことを前記制御ユニットに通知するデバイス・エンド・インジケータの有無について前記デバイスを監視するステップと、
前記デバイス・エンド・インジケータに応答して前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行するステップと、
を含む方法を実行し、
前記制御ユニットは、
前記コマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングする前記ステップに応答してデバイス・ビジー・タイマーを開始するステップと、
前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行する前記ステップに応答して前記デバイス・ビジー・タイマーの値を読み取るステップと、
前記デバイス・ビジー・タイマーの前記値をトランスポート応答情報単位メッセージの形で前記１つ又は複数のチャネルを介して前記第１のオペレーティング・システムに出力するステップとを更に実行する、
装置。
【請求項９】
前記制御ユニットは、
追加的なＩ／Ｏ動作コマンドを含む追加的なコマンド・メッセージを、前記複数のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記追加的なコマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングするステップと、
前記デバイス・ビジー・キューをサービスして前記追加的なＩ／Ｏ動作コマンドを実行するステップとを更に実行する、請求項８に記載の装置。
【請求項１０】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングされた順に出力する先入れ先出し（ＦＩＦＯ）サービスとして実行される、請求項９に記載の装置。
【請求項１１】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージを優先度の高いコマンド・メッセージから優先度の低いコマンド・メッセージの順に前記デバイス・ビジー・キューから出力する優先度ベース・サービスとして実行される、請求項９に記載の装置。
【請求項１２】
前記デバイス・ビジー・キューをサービスする前記ステップは、前記追加的なコマンド・メッセージをオペレーティング・システム単位で前記デバイス・ビジー・キューから出力するラウンド・ロビン・サービスとして実行される、請求項９に記載の装置。
【請求項１３】
前記制御ユニットは、
前記デバイス・ビジー・キューがフルの間に追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
前記デバイス・エンド・インジケータがデバイス・ビジー・タイムアウト期間内に受信されない間に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
オペレーティング・システム・タイムアウト・リカバリ期間内に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、及び
前記デバイス・エンド・インジケータがコマンド・タイムアウト期間内に受信されなかったことが判定されたこと、
のうちの１つ又は複数に応答してデバイス・ビジー・メッセージを出力するステップ
を更に実行する、請求項８に記載の装置。
【請求項１４】
前記コマンド・メッセージは、前記Ｉ／Ｏ動作コマンドをトランポート制御ワード（ＴＣＷ）チャネル・プログラムの一部として保持するトランスポート・コマンド制御ブロック（ＴＣＣＢ）を含むトランスポート・コマンド情報単位メッセージである、請求項８に記載の装置。
【請求項１５】
１つ又は複数のチャネルを介して複数のオペレーティング・システムと通信する制御ユニットにおいて予約デバイスのアクセス競合を低減する方法であって、
前記制御ユニットと通信するデバイスに関するＩ／Ｏ動作コマンドを含むコマンド・メッセージを、前記複数のオペレーティング・システムのうちの第１のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイスが前記複数のオペレーティング・システムのうちの第２のオペレーティング・システムによって予約されていることを前記制御ユニットに通知するデバイス・ビジー・インジケータを前記デバイスから受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記コマンド・メッセージをデバイス・ビジー・キュー上にキューイングするステップと、
前記デバイスが新しいＩ／Ｏ動作コマンドを受信する準備が整ったことを前記制御ユニットに通知するデバイス・エンド・インジケータの有無について前記デバイスを監視するステップと、
前記デバイス・エンド・インジケータに応答して前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行するステップと、を含み、
前記コマンド・メッセージは、前記Ｉ／Ｏ動作コマンドをトランポート制御ワード（ＴＣＷ）チャネル・プログラムの一部として保持するトランスポート・コマンド制御ブロック（ＴＣＣＢ）を含むトランスポート・コマンド情報単位メッセージであり、前記方法は、
前記コマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングする前記ステップに応答してデバイス・ビジー・タイマーを開始するステップと、
前記デバイス・ビジー・キューをサービスして前記Ｉ／Ｏ動作コマンドを実行する前記ステップに応答して前記デバイス・ビジー・タイマーの値を読み取るステップと、
前記デバイス・ビジー・タイマーの前記値をトランスポート応答情報単位メッセージの形で前記１つ又は複数のチャネルを介して前記第１のオペレーティング・システムに出力するステップとを更に含む、方法。
【請求項１６】
追加的なＩ／Ｏ動作コマンドを含む追加的なコマンド・メッセージを、前記複数のオペレーティング・システムから前記１つ又は複数のチャネルを介して前記制御ユニットにおいて受信するステップと、
前記デバイス・ビジー・インジケータに応答して前記追加的なコマンド・メッセージを前記デバイス・ビジー・キュー上にキューイングするステップと、
前記デバイス・ビジー・キューをサービスして前記追加的なＩ／Ｏ動作コマンドを実行するステップと、を更に含み、
前記デバイス・ビジー・キューをサービスする前記ステップは、先入れ先出し（ＦＩＦＯ）サービス、優先度ベース・サービス、及びラウンド・ロビン・サービスのうちの１つとして実行される、請求項１５に記載の方法。
【請求項１７】
前記デバイス・ビジー・キューがフルの間に追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
前記デバイス・エンド・インジケータがデバイス・ビジー・タイムアウト期間内に受信されない間に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、
オペレーティング・システム・タイムアウト・リカバリ期間内に前記追加的なコマンド・メッセージが前記制御ユニットにおいて受信されたこと、及び
前記デバイス・エンド・インジケータがコマンド・タイムアウト期間内に受信されなかったことが判定されたこと、のうちの１つ又は複数に応答してデバイス・ビジー・メッセージを出力するステップ
を更に含む、請求項１５に記載の方法。
【国際調査報告】
2011512585.tif 000016
2011512585.tif 000017