(57)【要約】【課題】  Ｉ／Ｏ処理システムにおける入出力（Ｉ／Ｏ）動作の状態を判別する。【解決手段】  Ｉ／Ｏオペレーティング・システムからの前記Ｉ／Ｏ動作の実行要求がチャネル・サブシステムにおいて受信され、前記Ｉ／Ｏ動作を実行するＩ／Ｏデバイスを制御する制御ユニットに転送される。前記Ｉ／Ｏ動作が完了したことを指示するインジケーションが前記制御ユニットから受信されないまま所定の量の時間が経過した後は、前記Ｉ／Ｏ動作の状態を判別する前記Ｉ／Ｏオペレーティング・システムからの問い合わせ要求が前記チャネル・サブシステムにおいて受信される。前記チャネル・サブシステムから前記制御ユニットに問い合わせコマンドが送信される。前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスの状態と、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットの状態と、実行される前記Ｉ／Ｏ動作の状態と、を指示する前記制御ユニットからの応答が受信される。【選択図】  図９
2011512588.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ／Ｏ処理システムにおける入出力（Ｉ／Ｏ）動作の状態を判別するコンピュータ・プログラムであって、
処理回路によって読み取り可能な有形のストレージ・メディアであって、
Ｉ／Ｏオペレーティング・システムからの前記Ｉ／Ｏ動作の実行要求をチャネル・サブシステムにおいて受信するステップと、
前記要求を、前記チャネル・サブシステムから前記Ｉ／Ｏ動作を実行するＩ／Ｏデバイスを制御する制御ユニットに転送するステップと、
前記Ｉ／Ｏ動作が完了したことを指示するインジケーションが前記制御ユニットから受信されないまま所定の量の時間が経過した後に、前記Ｉ／Ｏ動作の状態を判別する前記Ｉ／Ｏオペレーティング・システムからの問い合わせ要求を前記チャネル・サブシステムにおいて受信するステップと、
前記問い合わせ要求が前記チャネル・サブシステムにおいて受信されたことに応答して、前記チャネル・サブシステムから前記制御ユニットに問い合わせコマンドを送信して前記Ｉ／Ｏ動作の状態を判別するステップと、
前記Ｉ／Ｏ動作の状態を指示する前記制御ユニットからの応答を前記チャネル・サブシステムにおいて受信するステップと、
を含む方法を実行するために前記処理回路によって実行される命令を記憶した有形のストレージ・メディア
を備え、前記応答は、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスの状態と、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットの状態と、実行される前記Ｉ／Ｏ動作の状態と、を指示する情報を含む、
コンピュータ・プログラム。
【請求項２】
前記Ｉ／Ｏ動作は、完了期間と関連付けられ、前記所定の量の時間は、前記完了期間よりも短い、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記問い合わせコマンドは、前記問い合わせコマンドの送信理由及び送信時期を指示する情報を含む、請求項１に記載のコンピュータ・プログラム。
【請求項４】
前記制御ユニットの状態を指示する前記応答に含まれる前記情報は、前記制御ユニットがビジー状態にあるのか、リカバリ動作を実行しているのか、それとも他の問い合わせ要求に応答しているのかを指示する、請求項１に記載のコンピュータ・プログラム。
【請求項５】
前記Ｉ／Ｏデバイスの状態を指示する前記応答に含まれる前記情報は、前記Ｉ／Ｏデバイスがパス・グループによって予約されているかどうか、前記制御ユニットがロング・ビジー状態にあるかどうか、又は前記Ｉ／Ｏデバイスがリカバリ・プロセスを実行しているかどうかを指示する、請求項１に記載のコンピュータ・プログラム。
【請求項６】
前記Ｉ／Ｏ動作の状態を指示する前記応答に含まれる前記情報は、動作が存在するのか、実行中であるのか、別のＩ／Ｏ動作の完了待ち状態にあるのか、それともデバイス依存動作の実行待ち状態にあるのかを指示する、請求項１に記載のコンピュータ・プログラム。
【請求項７】
前記制御ユニットからの前記応答に含まれる前記情報は、前記Ｉ／Ｏデバイスが別のＩ／Ｏ処理システムによって予約されているかどうかを指示する、請求項１に記載のコンピュータ・プログラム。
【請求項８】
Ｉ／Ｏ処理システムにおいてＩ／Ｏ動作を実行する入出力（Ｉ／Ｏ）デバイスを制御する制御ユニットと通信するように適合された装置であって、
Ｉ／Ｏオペレーティング・システム及び前記制御ユニットと通信するチャネル・サブシステム
を備え、前記チャネル・サブシステムは、
前記Ｉ／Ｏオペレーティング・システムから前記Ｉ／Ｏ動作の実行要求を受信するステップと、
前記要求を、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットに転送するステップと、
前記Ｉ／Ｏ動作が完了したことを指示するインジケーションが前記制御ユニットから受信されないまま所定の量の時間が経過した後に、前記Ｉ／Ｏ動作の状態を判別する前記Ｉ／Ｏオペレーティング・システムからの問い合わせ要求を受信するステップと、
前記問い合わせ要求が受信されたことに応答して、前記制御ユニットに問い合わせコマンドを送信して前記Ｉ／Ｏ動作の状態を判別するステップと、
前記Ｉ／Ｏ動作の状態を指示する前記制御ユニットからの応答を受信するステップと、
を含む方法を実行し、前記応答は、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスの状態と、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットの状態と、実行される前記Ｉ／Ｏ動作の状態と、を指示する情報を含む、
装置。
【請求項９】
前記Ｉ／Ｏ動作は、完了期間と関連付けられ、前記所定の量の時間は、前記完了期間よりも短い、請求項８に記載の装置。
【請求項１０】
前記問い合わせコマンドは、前記問い合わせコマンドの送信理由及び送信時期を指示する情報を含む、請求項８に記載の装置。
【請求項１１】
前記制御ユニットの状態を指示する前記応答に含まれる前記情報は、前記制御ユニットがビジー状態にあるのか、リカバリ動作を実行しているのか、それとも他の問い合わせ要求に応答しているのかを指示する、請求項８に記載の装置。
【請求項１２】
前記Ｉ／Ｏデバイスの状態を指示する前記応答に含まれる前記情報は、前記Ｉ／Ｏデバイスがパス・グループによって予約されているかどうか、前記制御ユニットがロング・ビジー状態にあるかどうか、又は前記Ｉ／Ｏデバイスがリカバリ・プロセスを実行しているかどうかを指示する、請求項８に記載の装置。
【請求項１３】
前記Ｉ／Ｏ動作の状態を指示する前記応答に含まれる前記情報は、動作が存在するのか、実行中であるのか、別のＩ／Ｏ動作の完了待ち状態にあるのか、それともデバイス依存動作の実行待ち状態にあるのかを指示する、請求項８に記載の装置。
【請求項１４】
前記制御ユニットからの前記応答に含まれる前記情報は、前記Ｉ／Ｏデバイスが別のＩ／Ｏ処理システムによって予約されているかどうかを指示する、請求項８に記載の装置。
【請求項１５】
Ｉ／Ｏ処理システムにおける入出力（Ｉ／Ｏ）動作の状態を判別する方法であって、
Ｉ／Ｏオペレーティング・システムからの前記Ｉ／Ｏ動作の実行要求をチャネル・サブシステムにおいて受信するステップと、
前記要求を、前記チャネル・サブシステムから前記Ｉ／Ｏ動作を実行するＩ／Ｏデバイスを制御する制御ユニットに転送するステップと、
前記Ｉ／Ｏ動作が完了したことを指示するインジケーションが前記制御ユニットから受信されないまま所定の量の時間が経過した後に、前記Ｉ／Ｏ動作の状態を判別する前記Ｉ／Ｏオペレーティング・システムからの問い合わせ要求を前記チャネル・サブシステムにおいて受信するステップと、
前記問い合わせ要求が前記チャネル・サブシステムにおいて受信されたことに応答して、前記チャネル・サブシステムから前記制御ユニットに問い合わせコマンドを送信して前記Ｉ／Ｏ動作の状態を判別するステップと、
前記Ｉ／Ｏ動作の状態を指示する前記制御ユニットからの応答を前記チャネル・サブシステムにおいて受信するステップと、
を含み、前記応答は、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスの状態と、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットの状態と、実行される前記Ｉ／Ｏ動作の状態と、を指示する情報を含む、
方法。
【請求項１６】
前記Ｉ／Ｏ動作は、完了期間と関連付けられ、前記所定の量の時間は、前記完了期間よりも短い、請求項１５に記載の方法。
【請求項１７】
前記問い合わせコマンドは、前記問い合わせコマンドの送信理由及び送信時期を指示する情報を含む、請求項１５に記載の方法。
【請求項１８】
前記制御ユニットの状態を指示する前記応答に含まれる前記情報は、前記制御ユニットがビジー状態にあるのか、リカバリ動作を実行しているのか、それとも他の問い合わせ要求に応答しているのかを指示する、請求項１５に記載の方法。
【請求項１９】
前記Ｉ／Ｏデバイスの状態を指示する前記応答に含まれる前記情報は、前記Ｉ／Ｏデバイスがパス・グループ又は別のＩ／Ｏ処理システムによって予約されているかどうか、前記制御ユニットがロング・ビジー状態にあるかどうか、又は前記Ｉ／Ｏデバイスがリカバリ・プロセスを実行しているかどうかを指示する、請求項１５に記載の方法。
【請求項２０】
前記Ｉ／Ｏ動作の状態を指示する前記応答に含まれる前記情報は、動作が存在するのか、実行中であるのか、別のＩ／Ｏ動作の完了待ち状態にあるのか、それともデバイス依存動作の実行待ち状態にあるのかを指示する、請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般に入出力処理に関するものであり、特にＩ／Ｏ動作の状態を判別することに関するものである。
【背景技術】
【０００２】
入出力（Ｉ／Ｏ）動作は、Ｉ／Ｏ処理システム内のメモリ・デバイスとＩ／Ｏデバイスとの間のデータ転送に使用される。具体的には、Ｉ／Ｏ動作を実行することにより、データはメモリから１つ又は複数のＩ／Ｏデバイスに書き込まれ、１つ又は複数のＩ／Ｏデバイスからメモリに読み込まれる。
【０００３】
Ｉ／Ｏ動作の処理を容易にするために、Ｉ／Ｏ処理システムのＩ／Ｏサブシステムが利用される。Ｉ／Ｏサブシステムは、Ｉ／Ｏ処理システム内のメイン・メモリ及びＩ／Ｏデバイスと結合され、メモリとＩ／Ｏデバイスとの間の情報フローを誘導する。Ｉ／Ｏサブシステムの一例は、チャネル・サブシステムである。チャネル・サブシステムは、チャネル経路を通信媒体として使用する。各チャネル経路は、制御ユニットと結合されたチャネルを含み、制御ユニットは更に、１つ又は複数のＩ／Ｏデバイスと結合される。
【０００４】
オペレーティング・システムは、チャネル・コマンド・ワード（ＣＣＷ）を利用することができ、それらをチャネル・サブシステムに渡すことによってＩ／Ｏデバイスとメモリとの間のデータ転送を実行することができる。ＣＣＷは、実行すべきコマンドを指定する。あるＩ／Ｏ動作を開始するコマンドの場合、ＣＣＷは、その動作に関連するメモリ領域、その領域との間の転送が完了したときに必ず実行すべきアクション、及びその他のオプションを指定する。
【０００５】
Ｉ／Ｏ処理中に、チャネルはＣＣＷリストをメモリから取り出す。チャネルは、ＣＣＷリストの各コマンドを構文解析（parse）し、それ自体のエンティティ内のいくつかのコマンドを当該チャネルと結合されている制御ユニットに転送する。その後、制御ユニットはこれらのコマンドを処理する。チャネルは、各コマンドの状態を追跡し、次のコマンド・セットを処理のために制御ユニットにいつ送信すべきかを制御する。チャネルは、各コマンドがそれ自体のエンティティ内の制御ユニットに送信されることを保証する。更に、チャネルは、各コマンドに関する制御ユニットからの応答処理に関連するいくつかの情報を取得する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第５，４６１，７２１号
【特許文献２】米国特許第５，５２６，４８４号
【特許文献３】米国特許出願第１１／４６４，６１３号
【非特許文献】
【０００７】
【非特許文献１】「IBM(R)z/Architecture Principles of Operation」、PublicationNo. SA22-7832-05、6th Edition（２００７年４月）
【非特許文献２】「FibreChannel Single Byte Command Code Sets-3 Mapping Protocol (FC-SB-3)」、T11/Project 1357-D/Rev. 1.6、INCITS（２００３年３月）
【非特許文献３】「InformationTechnology - Fibre Channel Protocol for SCSI, Third Version (FCP-3)」、T10 Project 1560-D、Revision 4（２００５年９月１３日）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
使用されるリンク・プロトコルによっては、オペレーティング・システムは、動作の完了が想定された時間又は割り当てられた時間よりも長くなるＩ／Ｏ動作に対してどのようなアクションをとるべきかを十分な情報に基づいて判断することが困難となる可能性がある。したがって、Ｉ／Ｏ動作の状態を判別し、実行時間が想定された時間又は割り当てられた時間よりも長くなるＩ／Ｏ動作に対してとるべきアクションを決定する手法をオペレーティング・システムに提供することが必要とされている。
【課題を解決するための手段】
【０００９】
本発明の諸実施形態は、Ｉ／Ｏ処理システムにおける入出力（Ｉ／Ｏ）動作の状態を判別するコンピュータ・プログラムを含む。前記コンピュータ・プログラムは、処理回路によって読み取り可能な有形のストレージ・メディアであって、以下の方法を実行するために前記処理回路によって実行される命令を記憶した有形のストレージ・メディアを備える。前記方法は、Ｉ／Ｏオペレーティング・システムからの前記Ｉ／Ｏ動作の実行要求をチャネル・サブシステムにおいて受信するステップと、前記要求を、前記チャネル・サブシステムから前記Ｉ／Ｏ動作を実行するＩ／Ｏデバイスを制御する制御ユニットに転送するステップと、を含む。前記方法は更に、前記Ｉ／Ｏ動作が完了したことを指示するインジケーションが前記制御ユニットから受信されないまま所定の量の時間が経過した後に、前記Ｉ／Ｏ動作の状態を判別する前記Ｉ／Ｏオペレーティング・システムからの問い合わせ要求を前記チャネル・サブシステムにおいて受信するステップと、前記問い合わせ要求が前記チャネル・サブシステムにおいて受信されたことに応答して、前記チャネル・サブシステムから前記制御ユニットに問い合わせコマンドを送信して前記Ｉ／Ｏ動作の状態を判別するステップと、前記Ｉ／Ｏ動作の状態を指示する前記制御ユニットからの応答を前記チャネル・サブシステムにおいて受信するステップと、を含む。前記応答は、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスの状態と、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットの状態と、実行される前記Ｉ／Ｏ動作の状態と、を指示する情報を含む。
【００１０】
追加的な実施形態は、Ｉ／Ｏ処理システムにおいてＩ／Ｏ動作を実行する入出力（Ｉ／Ｏ）デバイスを制御する制御ユニットと通信するように適合された装置を含む。前記装置は、Ｉ／Ｏオペレーティング・システム及び前記制御ユニットと通信するチャネル・サブシステムを備える。前記チャネル・サブシステムは、前記Ｉ／Ｏオペレーティング・システムから前記Ｉ／Ｏ動作の実行要求を受信するステップと、前記要求を、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットに転送するステップと、を含む方法を実行する。前記方法は更に、前記Ｉ／Ｏ動作が完了したことを指示するインジケーションが前記制御ユニットから受信されないまま所定の量の時間が経過した後に、前記Ｉ／Ｏ動作の状態を判別する前記Ｉ／Ｏオペレーティング・システムからの問い合わせ要求を受信するステップと、前記問い合わせ要求が受信されたことに応答して、前記制御ユニットに問い合わせコマンドを送信して前記Ｉ／Ｏ動作の状態を判別するステップと、前記Ｉ／Ｏ動作の状態を指示する前記制御ユニットからの応答を受信するステップと、を含む。前記応答は、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスの状態と、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットの状態と、実行される前記Ｉ／Ｏ動作の状態と、を指示する情報を含む。
【００１１】
更なる実施形態は、Ｉ／Ｏ処理システムにおける入出力（Ｉ／Ｏ）動作の状態を判別する方法を含む。前記方法は、Ｉ／Ｏオペレーティング・システムからの前記Ｉ／Ｏ動作の実行要求をチャネル・サブシステムにおいて受信するステップと、前記要求を、前記チャネル・サブシステムから前記Ｉ／Ｏ動作を実行するＩ／Ｏデバイスを制御する制御ユニットに転送するステップと、を含む。前記方法は更に、前記Ｉ／Ｏ動作が完了したことを指示するインジケーションが前記制御ユニットから受信されないまま所定の量の時間が経過した後に、前記Ｉ／Ｏ動作の状態を判別する前記Ｉ／Ｏオペレーティング・システムからの問い合わせ要求を前記チャネル・サブシステムにおいて受信するステップと、前記問い合わせ要求が前記チャネル・サブシステムにおいて受信されたことに応答して、前記チャネル・サブシステムから前記制御ユニットに問い合わせコマンドを送信して前記Ｉ／Ｏ動作の状態を判別するステップと、前記Ｉ／Ｏ動作の状態を指示する前記制御ユニットからの応答を前記チャネル・サブシステムにおいて受信するステップと、を含む。前記応答は、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスの状態と、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットの状態と、実行される前記Ｉ／Ｏ動作の状態と、を指示する情報を含む。
【００１２】
以下の詳細な説明を添付図面と併せて読めば、諸実施形態に係る他のシステム、方法、又はコンピュータ・プログラム、あるいはそれらのすべてが当業者には理解されるだろう。そのような追加的なシステム、方法、又はコンピュータ・プログラム、あるいはそれらのすべてが本明細書の範囲に含まれ、本発明の範囲に含まれ、添付の特許請求範囲によって保護されることが本出願人の意図するところである。
【００１３】
本発明と見なされる主題は、添付の特許請求範囲の各請求項に具体的に明示され、明瞭に記載されている。本発明の上記及び他の目的、特徴、及び利点は、以下の詳細な説明を添付図面と併せて読めば明らかとなるだろう。
【図面の簡単な説明】
【００１４】
【図１】本発明の１つ又は複数の態様が組み込まれ使用されるＩ／Ｏ処理システムの一実施形態を示す図である。
【図２】チャネル・コマンド・ワードの一例を示す図である。
【図３】チャネル・コマンド・ワード・チャネル・プログラムの一例を示す図である。
【図４】図３のチャネル・コマンド・ワード・チャネル・プログラムを実行するためのチャネルと制御ユニットとの間の通信に使用されるリンク・プロトコルの一実施形態を示す図である。
【図５】本発明の一態様に係るトランスポート制御ワード・チャネル・プログラムの一実施形態を示す図である。
【図６】本発明の一態様に係る図５のトランスポート制御ワード・チャネル・プログラムを実行するためのチャネルと制御ユニットとの間の通信に使用されるリンク・プロトコル一実施形態を示す図である。
【図７】チャネル・コマンド・ワード・チャネル・プログラムの４つの読み取りコマンドを実行するためのチャネルと制御ユニットとの間の通信に使用されるリンク・プロトコルの一実施形態を示す図である。
【図８】本発明の一態様に係るトランスポート制御ワード・チャネル・プログラムの４つの読み取りコマンドを処理するためのチャネルと制御ユニットとの間の通信に使用されるリンク・プロトコルの一実施形態を示す図である。
【図９】本発明の一態様に係る制御ユニット及びチャネルの一実施形態を示す図である。
【図１０】本発明の一態様に係る問い合わせＴＣＷアドレス（Interrogate-TCW Address）フィールドを含むトランスポート制御ワード（ＴＣＷ）の一実施形態を示す図である。
【図１１】本発明の一態様に係る問い合わせＤＣＷの一実施形態を示す図である。
【図１２】本発明の一態様に係るトランスポート応答ＩＵの一実施形態を示す図である。
【図１３】本発明の一態様に従ってＩ／Ｏ動作の状態を制御ユニットに要求すべきタイミングを決定するために、Ｉ／Ｏオペレーティング・システムによって実行されるプロセスの一実施形態を示す図である。
【図１４】本発明の一態様に従ってＩ／Ｏ動作の状態を判別するために制御ユニットに問い合わせを行うプロセスの一実施形態を示す図である。
【図１５】本発明の１つ又は複数の態様が組み込まれたコンピュータ・プログラム製品の一実施形態を示す図である。
【発明を実施するための形態】
【００１５】
以下の詳細な説明では、例示的な添付図面を参照しながら本発明の好ましい諸実施形態ならびにそれらの利点及び特徴を説明する。
【００１６】
本発明の一態様によれば、入出力（Ｉ／Ｏ）処理が容易となる。例えば、Ｉ／Ｏ処理は、Ｉ／Ｏ処理に関連するステータスや測定データ等の情報に対する即時アクセスを可能にすることによって容易となる。更に、Ｉ／Ｏ処理は、一例としてＩ／Ｏ処理の実行に使用されるＩ／Ｏ処理システムのコンポーネント間の通信を減少させることによって容易となる。例えば、チャネルのようなＩ／Ｏ通信アダプタと制御ユニットとの間のエクスチェンジ数及びシーケンス数が減少される。これは、複数のコマンドを制御ユニットによって実行される単一のエンティティとしてＩ／Ｏ通信アダプタから制御ユニットに送信し、制御ユニットが必要に応じてそれらのコマンドに由来するデータを単一のエンティティとして送信することによって達成される。
【００１７】
複数のコマンドは、本明細書ではトランスポート・コマンド制御ブロック（transport command control block：ＴＣＣＢ）と呼ばれるブロックに含められ、当該ブロックのアドレスは、トランポート制御ワード（transport control word：ＴＣＷ）で指定される。ＴＣＷは、オペレーティング・システム又は他のアプリケーションからＩ／Ｏ通信アダプタに送信され、Ｉ／Ｏ通信アダプタは、ＴＣＣＢを処理のためにコマンド・メッセージの形で制御ユニットに転送する。制御ユニットは、Ｉ／Ｏ通信アダプタによる個々のコマンドと比較したステータス追跡を行うことなく各コマンドを処理する。複数のコマンドはチャネル・プログラムとも呼ばれ、チャネル・プログラムは、Ｉ／Ｏ通信アダプタではなく制御ユニット上で構文解析され実行される。
【００１８】
例示的な一実施形態において、制御ユニットは、チャネル・プログラムの実行に応答してステータスを含む応答メッセージと、拡張ステータス情報（extended status information）と、を生成する。制御ユニットは、例えばチャネル・プログラムが実行されないことをＩ／Ｏ通信アダプタに知らせるため等、限られた数の通信シナリオ下ではチャネル・プログラムを実行せずに応答メッセージを生成することもできる。制御ユニットは、Ｉ／Ｏ通信アダプタとＩ／Ｏデバイスとの間の通信をサポートするとともにチャネル・プログラムの実行もサポートするいくつかの要素を含むことができる。例えば、制御ユニットは、通信及びステータス監視を容易にするために、１つ又は複数のキュー、タイマー、及びレジスタに加えてメッセージの構文解析及び処理を行う制御ロジックも含むことができる。Ｉ／Ｏ通信アダプタは、応答メッセージを構文解析してステータス情報及び拡張ステータス情報を抽出し、抽出された情報を使用して拡張測定ワード決定のような更なる計算を実行する。
【００１９】
ここで図１を参照して、本発明の１つ又は複数の態様が組み込まれ使用されるＩ／Ｏ処理システムの一例について説明する。Ｉ／Ｏ処理システム１００は、例えばホスト・システム１０１、メイン・メモリ１０２、１つ又は複数の中央演算処理装置（ＣＰＵ）１０４、ストレージ制御要素１０６、チャネル・サブシステム１０８、１つ又は複数の制御ユニット１１０、及び１つ又は複数のＩ／Ｏデバイス１１２を含む。以下、これらの各要素について説明する。
【００２０】
メイン・メモリ１０２は、Ｉ／Ｏデバイス１１２から入力され得るデータ及びプログラムを記憶する。例えば、メイン・メモリ１０２は、ＣＰＵ１０４のうちの１つ又は複数によって実行される１つ又は複数のオペレーティング・システム１０３を含むことができる。メイン・メモリ１０２は、直接アドレス指定可能であり、ＣＰＵ１０４及びチャネル・サブシステム１０８による高速データ処理を可能にする。
【００２１】
ＣＰＵ１０４は、Ｉ／Ｏ処理システム１００の制御センターである。ＣＰＵ１０４は、命令実行、割り込みアクション、タイミング機能、初期プログラム・ロード、及び他のマシン関連機能に関する順序付け及び処理ファシリティを収容する。ＣＰＵ１０４は、双方向バスや単方向バスのような接続１１４を介してストレージ制御要素１０６と結合される。
【００２２】
ストレージ制御要素１０６は、バスのような接続１１６を介してメイン・メモリ１０２と結合され、接続１１４を介してＣＰＵ１０４と結合され、接続１１８を介してチャネル・サブシステム１０８と結合される。ストレージ制御要素１０６は、例えばＣＰＵ１０４及びチャネル・サブシステム１０８によって行われる要求のキューイング及び実行を制御する。
【００２３】
チャネル・サブシステム１０８は、上述のとおりストレージ制御要素１０６と結合され、シリアル・リンクのような接続１２０を介して各制御ユニット１１０と結合される。接続１２０は、シングル・モード又はマルチ・モード導波管を利用して光リンクとして実装され得る。チャネル・サブシステム１０８は、Ｉ／Ｏデバイス１１２とメイン・メモリ１０２との間の情報フローを誘導する。チャネル・サブシステム１０８は、Ｉ／Ｏデバイス１１２と直接通信するタスクからＣＰＵ１０４を解放し、データ処理とＩ／Ｏ処理の同時進行を可能にする。チャネル・サブシステム１０８は、Ｉ／Ｏデバイス１１２との間の情報フローを管理する際に１つ又は複数のチャネル経路１２２を通信リンクとして使用する。Ｉ／Ｏ処理の一環として、チャネル・サブシステム１０８は、チャネル経路の利用可能性を検査し、利用可能なチャネル経路１２２を選択し、Ｉ／Ｏデバイス１１２による動作の実行を開始する経路管理機能も実行する。
【００２４】
各チャネル経路１２２は、チャネル１２４（図１に示す一例では、各チャネル１２４はチャネル・サブシステム１０８内に位置する）と、１つ又は複数の制御ユニット１１０と、１つ又は複数の接続１２０と、を含む。別の例では、１つ又は複数の動的スイッチ（図示せず）をチャネル経路１２２の一部として有することも可能である。動的スイッチは、チャネル１２４及び制御ユニット１１０と結合され、当該スイッチに接続される任意の２つのリンクを物理的に相互接続する能力を提供する。別の例では、複数のシステムを有することも可能であり、したがって複数のチャネル・サブシステム（図示せず）を制御ユニット１１０に接続することも可能である。
【００２５】
チャネル・サブシステム１０８内にはサブチャネル（図示せず）も位置する。１つのサブチャネルは、チャネル・サブシステム１０８を通じてプログラムからアクセス可能なＩ／Ｏデバイス１１２毎に提供され、当該Ｉ／Ｏデバイス１１２専用となる。サブチャネル（例えばテーブルのようなデータ構造）は、プログラムから見たデバイスの論理状態を表す。各サブチャネルは、関連するＩ／Ｏデバイス１１２及びその付属物に関する情報をチャネル・サブシステム１０８に提供する。サブチャネルは、関連するＩ／Ｏデバイス１１２が関与するＩ／Ｏ動作及びその他の機能に関する情報も提供する。サブチャネルは、チャネル・サブシステム１０８が関連するＩ／Ｏデバイス１１２に関する情報をＣＰＵ１０４上で実行されるオペレーティング・システムに提供するための手段であり、それらのオペレーティング・システムは、Ｉ／Ｏ命令を実行することによってこの情報を取得する。
【００２６】
チャネル・サブシステム１０８は、１つ又は複数の制御ユニット１１０と結合される。各制御ユニット１１０は、１つ又は複数のＩ／Ｏデバイス１１２を動作させ制御するロジックを提供し、また、共通のファシリティを利用して各Ｉ／Ｏデバイス１１２の特性をチャネル１２４によって提供されるリンク・インターフェースに適合させる。これらの共通のファシリティは、Ｉ／Ｏ動作の実行、Ｉ／Ｏデバイス１１２及び制御ユニット１１０のステータスに関するインジケーション、チャネル経路１２２を介したデータ転送タイミング制御、及び一定のレベルのＩ／Ｏデバイス１１２制御を実現する。
【００２７】
各制御ユニット１１０は、接続１２６（例えばバス）を介して１つ又は複数のＩ／Ｏデバイス１１２に接続される。Ｉ／Ｏデバイス１１２は、情報を受信し、又は情報をメイン・メモリ１０２又は他のメモリあるいはその両方に記憶する。Ｉ／Ｏデバイス１１２の例としては、ごく一部であるが、カード読み取り装置及び穿孔装置、磁気テープ・ユニット、直接アクセス記憶装置、ディスプレイ、キーボード、プリンタ、ポインティング・デバイス、テレプロセシング・デバイス、通信コントローラ、及びセンサー・ベース機器が挙げられる。
【００２８】
Ｉ／Ｏ処理システム１００の上記のコンポーネントのうちの１つ又は複数に関する詳細は、「IBM(R) z/Architecture Principles of Operation」、Publication No. SA22-7832-05、6th Edition（２００７年４月）；１９９５年１０月２４日に発行されたCormier et al.の米国特許第５，４６１，７２１号「System For Transferring DataBetween I/O Devices And Main Or Expanded Storage Under Dynamic Control OfIndependent Indirect Address Words (IDAWS)」；及び１９９６年６月１１日に発行されたCasper et al.の米国特許第５，５２６，４８４号「Method And System For Pipelining TheProcessing Of Channel Command Words」に記載されている。「ＩＢＭ」は、インターナショナル・ビジネス・マシーンズ社（米国ニューヨーク州アーモンク）の登録商標である。本明細書で使用される他の名称もインターナショナル・ビジネス・マシーンズ社又は他の企業の登録商標、商標、又は製品名である可能性がある。
【００２９】
一実施形態では、Ｉ／Ｏデバイス１１２とメイン・メモリ１０２との間のデータ転送にチャネル・コマンド・ワード（ＣＣＷ）が使用される。ＣＣＷは、実行すべきコマンドを指定し、処理を制御する他のフィールドを含む。ＣＣＷの一例を図２を参照して説明する。ＣＣＷ２００は、例えば実行すべきコマンド（例えば読み取り、逆方向読み取り、制御、感知及び書き込み）を指定するコマンド・コード２０２と、Ｉ／Ｏ動作の制御に使用される複数のフラグ２０４と、を含み、データ転送を指定するコマンドに関しては、ＣＣＷによって指定されたストレージ領域に転送すべきバイト数を指定するカウント・フィールド２０６と、直接アドレス指定が利用される場合にはデータを含むメイン・メモリ内の位置を指し、変更された間接データ・アドレス指定（modified indirect data addressing）が利用される場合には処理対象となる変更された間接データ・アドレス・ワード（modified indirect data addressword：ＭＩＤＡＷ）のリスト（例えば隣接リスト）を指すデータ・アドレス２０８と、を含む。変更された間接アドレス指定に関する詳細は、２００６年８月１５日に出願されたBrice et al.の米国特許出願第１１／４６４，６１３号「Flexibly Controlling The Transfer Of Data Between Input/Output DevicesAnd Memory」に記載されている。
【００３０】
順次実行用に構成された１つ又は複数のＣＣＷは、本明細書ではＣＣＷチャネル・プログラムとも呼ばれるチャネル・プログラムを形成する。ＣＣＷチャネル・プログラムは、例えばオペレーティング・システム又は他のソフトウェアによってセット・アップされる。ソフトウェアはＣＣＷをセット・アップし、チャネル・プログラムに割り当てられたメモリのアドレスを取得する。ＣＣＷチャネル・プログラムの一例を図３を参照して説明する。ＣＣＷチャネル・プログラム２１０は、例えばエクステント定義（define extent）コマンドと共に使用されるエクステント定義データ２１６のメモリ内の位置を指すポインタ２１４を有するエクステント定義ＣＣＷ２１２を含む。本例では、エクステント定義コマンドの後に、ロケート・レコード（locate record）データ２２０を指すポインタ２１９を有するロケート・レコードＣＣＷ２１７や１つ又は複数の読み取りＣＣＷ（read CCW）２２１のような１つ又は複数の他のＣＣＷを含むメモリ内の別の領域（例えばアプリケーション領域）をチャネル・プログラムに参照させるチャネル内転送（transfer in channel：ＴＩＣ）２１８が実行される。各読み取りＣＣＷ２２０は、データ領域２２４を指すポインタ２２２を有する。このデータ領域は、データに直接アクセスするためのアドレス、又はデータに間接的にアクセスするためのデータ・アドレス・ワード（例えばＭＩＤＡＷやＩＤＡＷ）のリストを含む。更に、ＣＣＷチャネル・プログラム２１０は、デバイス・アドレスで定義され、ＣＣＷチャネル・プログラム２１０の実行によって得られるステータス用サブチャネル２２６と呼ばれるチャネル・サブシステム内の所定の領域を含む。
【００３１】
ここで図３と共に図４も参照しながら、ＣＣＷチャネル・プログラムの処理について説明する。特に、図４は、ＣＣＷチャネル・プログラムの実行中にチャネルと制御ユニットとの間で発生する様々なエクスチェンジ及びシーケンスの一例を示す。本例において、通信に使用されるリンク・プロトコルはＦＩＣＯＮ（Ｒ）（Fibre Connectivity）である。ＦＩＣＯＮに関する情報は、「Fibre Channel Single Byte Command Code Sets-3Mapping Protocol (FC-SB-3)」、T11/Project 1357-D/Rev. 1.6、INCITS（２００３年３月）に記載されている。
【００３２】
図４を参照すると、チャネル３００は、制御ユニット３０２との間のエクスチェンジをオープンし、エクステント定義コマンド及びその関連データを制御ユニット３０２に送信する（３０４）。コマンドはエクステント定義ＣＣＷ２１２（図３）から取り出され、データはエクステント定義データ２１６から取得される。チャネル３００は、ＴＩＣ２１８を使用してロケート・レコードＣＣＷ及び読み取りＣＣＷの場所を突き止める。チャネル３００は、ロケート・レコードＣＣＷ２１７（図３）からロケート・レコード・コマンド（図４）を取り出し、ロケート・レコード・データ２２０からデータを取得する（３０５）。読み取りＣＣＷ２２１（図３）から読み取りコマンド（図４）が取り出される（３０６）。各読み取りコマンドは、制御ユニット３０２に送信される。
【００３３】
制御ユニット３０２は、チャネル３００のオープン・エクスチェンジ（open exchange）に応答してチャネル３００との間のエクスチェンジをオープンする（３０８）。この処理は、ロケート・レコード・コマンド３０５又は読み取りコマンド３０６あるいはその両方の前に発生することも後に発生することもある。オープン・エクスチェンジに加えて、応答（「ＣＭＲ」）もチャネル３００に転送される。「ＣＭＲ」は、制御ユニット３０２がアクティブ状態にあり動作中であることを指示するインジケーションをチャネル３００に提供する。
【００３４】
制御ユニット３０２は、要求されたデータ３１０をチャネル３００に送信する（３１０）。また、制御ユニット３０２は、ステータスをチャネル３００に提供し、エクスチェンジをクローズする（３１２）。これに応答して、チャネル３００はデータを記憶し、ステータスを検査し、エクスチェンジをクローズする（３１４）。これにより、ステータスが受信されたことが制御ユニット３０２に指示される。
【００３５】
上記の４ｋのデータを読み取るＣＣＷチャネル・プログラムの処理では、２回のエクスチェンジのオープン及びクローズ、ならびに７つのシーケンスが必要となる。チャネルと制御ユニットとの間のエクスチェンジ及びシーケンスの総数は、チャネル・プログラムの複数のコマンドをＴＣＣＢに集約することよって減少される。チャネル、例えば図１のチャネル１２４は、ＴＣＷを使用してＴＣＣＢの位置、ならびにチャネル・プログラムの実行に関連するステータス及びデータにアクセスしそれらを記憶する位置を識別する。ＴＣＷは、チャネルによって変換処理されるものであり、制御ユニットからは送信されず、制御ユニットからは見えない。
【００３６】
以下では図５を参照して、図３と同様であるが個別のＣＣＷの代わりにＴＣＣＢを含む４ｋのデータを読み取るチャネル・プログラムの一例について説明する。図示のとおり、本明細書ではＴＣＷチャネル・プログラムと呼ばれるチャネル・プログラム４００は、ＴＣＣＢ４０４のメモリ内の位置と、データ領域４０６又はデータ領域４０６を指すＴＩＤＡＬ４１０（即ち、ＭＩＤＡＷに類似するトランスポート・モード間接データ・アドレス・ワード（transport mode indirect dataaddress word：ＴＩＤＡＷ）のリスト）のメモリ内の位置と、ステータス領域４０８と、を指定するＴＣＷ４０２を含む。ＴＣＷ、ＴＣＣＢ、及びステータスについては以下で更に詳述する。
【００３７】
ＴＣＷチャネル・プログラムの処理を図６を参照して説明する。これらの通信に使用されるリンク・プロトコルは、例えばファイバ・チャネル・プロトコル（ＦＣＰ）である。特に、ＣＣＷによって制御されるデータ転送を実行するＦＣＰをサポートするホスト・バス・アダプタの使用が可能となる、ＦＣＰリンク・プロトコルの３つのフェーズが使用される。ＦＣＰ及びそのフェーズに関する詳細は、「Information Technology - Fibre ChannelProtocol for SCSI, Third Version (FCP-3)」、T10Project 1560-D、Revision 4（２００５年９月１３日）に記載されている。
【００３８】
図６を参照すると、チャネル５００は、制御ユニット５０２との間のエクスチェンジをオープンし、ＴＣＣＢ５０４を制御ユニット５０２に送信する。一例において、ＴＣＣＢ５０４及びシーケンス・イニシアチブは、「ＦＣＰ＿ＣＭＮＤ」情報単位（ＩＵ）又はトランスポート・コマンドＩＵと呼ばれるＦＣＰコマンドの形で制御ユニット５０２に転送される。制御ユニット５０２は、ＴＣＣＢ５０４の複数のコマンド（例えばデバイス制御ワード（device control word：ＤＣＷ）としてのエクステント定義コマンド、ロケート・レコード・コマンド、読み取りコマンド）を実行し、例えば「ＦＣＰ＿Ｄａｔａ」ＩＵを介してデータ５０６をチャネル５００に転送する。制御ユニット５０２はステータスも提供し、エクスチェンジをクローズする（５０８）。一例として、最終ステータスは、例えばトランスポート応答ＩＵとも呼ばれる「ＦＣＰ＿ＲＳＰ」ＩＵペイロードのバイト１０又は１１にアクティブ・ビットを有するＦＣＰステータス・フレームの形で送られる。「ＦＣＰ＿ＲＳＰ」ＩＵペイロードは、拡張測定ワードの計算をサポートし、制御ユニット５０２によってサポートされるオープン・エクスチェンジの最大数をチャネル５００に通知するパラメータを含めた追加的なステータス情報と共に、ＦＩＣＯＮ終了ステータスをトランスポートするのに使用され得る。
【００３９】
別の一例では、４ｋの顧客データを書き込むために、チャネル５００は以下のＦＣＰリンク・プロトコル・フェーズを使用する：
１．ＴＣＣＢを「ＦＣＰ＿ＣＭＮＤ」ＩＵの形で転送する。
２．データのＩＵ及びシーケンス・イニシアチブを制御ユニット５０２に転送する。
（「ＦＣＰ  Ｔｒａｎｓｆｅｒ  Ｒｅａｄｙ」使用不可）
３．最終ステータスが例えば「ＦＣＰ＿ＲＳＰ」ＩＵペイロードのバイト１０又は１１にアクティブ・ビットを有するＦＣＰステータス・フレームの形で送信される。「ＦＣＰ＿ＲＳＰ＿ＩＮＦＯ」フィールド又は感知フィールドを使用して、拡張測定ワードの計算をサポートし、制御ユニット５０２によってサポートされるオープン・エクスチェンジの最大数をチャネル５００に通知するパラメータを含めた追加的なステータス情報と共に、ＦＩＣＯＮ終了ステータスがトランスポートされる。
【００４０】
図５のＴＣＷチャネル・プログラムを実行することにより、２回のエクスチェンジが発生する図３（図４も参照）のＣＣＷチャネル・プログラムと対照的に、１回のエクスチェンジのオープン及びクローズのみが行われることになる（図６も参照）。更に、７つの通信シーケンスが発生するＣＣＷチャネル・プログラム（図３及び図４参照）と比較して、ＴＣＷチャネル・プログラムでは３つの通信シーケンス（図５及び図６参照）が発生する。
【００４１】
エクスチェンジ数及びシーケンス数は、追加的なコマンドがプログラムに追加された場合にもＴＣＷチャネル・プログラムの場合と同じになる。例えば、図７のＣＣＷチャネル・プログラムの通信と図８のＴＣＷチャネル・プログラムの通信を比較していただきたい。図７のＣＣＷチャネル・プログラムでは、各コマンド（例えばエクステント定義コマンド６００、ロケート・レコード・コマンド６０１、読み取りコマンド６０２、読み取りコマンド６０４、読み取りコマンド６０６、ロケート・レコード・コマンド６０７、及び読み取りコマンド６０８）は、個別のシーケンスでチャネル６１０から制御ユニット６１２に送信される。更に、４ｋの各データ・ブロック（データ６１４〜６２０）は、個別のシーケンスで制御ユニット６１２からチャネル６１０に送信される。このＣＣＷチャネル・プログラムでは、２回のエクスチェンジのオープン及びクローズ（例えばオープン・エクスチェンジ６２２、６２４、及びクローズ・エクスチェンジ（close exchange）６２６、６２８）、ならびに１４個の通信シーケンスが必要となる。これと比較して、図８のＴＣＷチャネル・プログラムでは、３つのシーケンスと１回のエクスチェンジで図７のＣＣＷチャネル・プログラムと同じタスクが達成される。
【００４２】
図８に示されるように、チャネル７００は、制御ユニット７０２との間のエクスチェンジをオープンし、ＴＣＣＢ７０４を制御ユニット７０２に送信する。ＴＣＣＢ７０４は、上述のとおりエクステント定義コマンドと、２つのロケート・レコード・コマンドと、４つの読み取りコマンドとをＤＣＷに含める。ＴＣＣＢ７０４が受信されたことに応答して、制御ユニット７０２は、各コマンドを実行し、１６ｋのデータ７０６を単一のシーケンスでチャネル７００に送信する。また、制御ユニット７０２は、ステータスをチャネル７００に提供し、エクスチェンジをクローズする（７０８）。それ故、ＴＣＷチャネル・プログラムで図７のＣＣＷチャネル・プログラムと同じ量のデータを転送するのに必要となるオーバーヘッドはずっと少なくなる。
【００４３】
次に図９を参照すると、ＴＣＷチャネル・プログラムの実行をサポートする図１の制御ユニット１１０及びチャネル１２４の一実施形態がより詳細に示されている。制御ユニット１１０は、接続１２０を介してチャネル１２４から受信される、図８のＴＣＣＢ７０４のようなＴＣＣＢが収容されたコマンド・メッセージを構文解析し処理するＣＵ制御ロジック８０２を含む。ＣＵ制御ロジック８０２は、制御ユニット１１０において受信されたＴＣＣＢからＤＣＷ及び制御データを抽出して、例えば接続１２６を介してＩ／Ｏデバイス１１２のようなデバイスを制御することができる。ＣＵ制御ロジック８０２は、デバイス・コマンド及びデータをＩ／Ｏデバイス１１２に送信するとともに、Ｉ／Ｏデバイス１１２からステータス情報及び他のフィードバックを受信する。例えば、Ｉ／Ｏデバイス１１２は、Ｉ／Ｏデバイス１１２をターゲットとする事前の予約要求のためにビジー状態にある可能性がある。制御ユニット１１０が同じＩ／Ｏデバイス１１２に対する複数のアクセス要求を受信したときに発生し得る潜在的なデバイス予約の競合問題を管理するために、ＣＵ制御ロジック８０２は、デバイス・ビジー（ＤＢ）キュー８０４内のデバイス・ビジー・メッセージ及び関連データを追跡し記憶する。
【００４４】
ＣＵ制御ロジック８０２は、制御ユニット１１０内のＣＵタイマー８０６やＣＵレジスタ８０８のような他の要素にアクセスし、それらの要素を制御することができる。ＣＵタイマー８０６は、一続きのＩ／Ｏ動作が完了するまでどの程度時間がかかるかを追跡する複数のタイマー機能を含むことができる。ＣＵタイマー８０６は更に、所定期間内に完了しないＩ／Ｏ動作及びコマンドを監視し中断させる１つ又は複数のカウントダウン・タイマーも含むことができる。ＣＵレジスタ８０８は、構成及びステータス情報と、ＣＵ制御ロジック８０２によってコマンドが実行されたときに更新される動的ステータス情報と、を提供する固定値を含むことができる。更に、制御ユニット１１０は、チャネル１２４とＩ／Ｏデバイス１１２との間の通信に関連する複数のメッセージ又はステータス情報を記憶する他のバッファ又はメモリ要素（図示せず）も含むことができる。ＣＵレジスタ８０８は、制御ユニット１１０によってサポートされるオープン制御ユニット・エクスチェンジの最大数を定義する最大制御ユニット・エクスチェンジ・パラメータ（maximum control unit exchangeparameter）を含むことができる。
【００４５】
チャネル・サブシステム１０８内のチャネル１２４は、制御ユニット１１０との間の通信をサポートする複数の要素を含む。例えば、チャネル１２４は、ＣＨＮサブシステム・タイマー８１２及びＣＨＮサブシステム・レジスタ８１４とのインターフェースをとるＣＨＮ制御ロジック８１０を含むことができる。例示的な一実施形態において、ＣＨＮ制御ロジック８１０は、チャネル・サブシステム１０８と制御ユニット１１０との間の通信を制御する。ＣＨＮ制御ロジック８１０は、接続１２０を介してＣＵ制御ロジック８０２と直接インターフェースをとり、それによってトランスポート・コマンドのようなコマンドを送信し、トランスポート応答ＩＵのような応答を受信することができる。別法として、メッセージング・インターフェース又はバッファ（図示せず）あるいはその両方をＣＨＮ制御ロジック８１０とＣＵ制御ロジック８０２との間に配置することもできる。ＣＨＮサブシステム・タイマー８１２は、制御ユニット１１０によって追跡される時間に加えて、一続きのＩ／Ｏ動作が完了するまでどの程度時間がかかるかも追跡する複数のタイマー機能を含むことができる。ＣＨＮサブシステム・タイマー８１２は更に、所定期間内に完了しないコマンド・シーケンスを監視し中断させる１つ又は複数のカウントダウン・タイマーも含むことができる。ＣＨＮサブシステム・レジスタ８１４は、構成及びステータス情報、ならびにコマンドがトランスポートされ応答が受信されたときに更新される動的ステータス情報を提供する固定値を含むことができる。
【００４６】
制御ユニットからのＦＩＣＯＮコマンド応答（ＣＭＲ）フレームは、ファイバ・チャネル・エクステンション（Fibre Channel Extension：ＦＣＸ）、つまりトランスポート・モード・プロトコルの一部ではない。ＣＭＲをトランスポート・モード・プロトコルから取り除くことは、ＦＣＸの性能を改善するのに役立つ。ＦＩＣＯＮのＣＭＲは、制御ユニットがチャネルから送信されたコマンドを受信し、そのコマンドを実行することをチャネルに知らせるものである。ＦＩＣＯＮチャネルは、ＣＭＲを受信したときは該当するサブチャネルを「サブチャネル及びアクティブ・デバイス（SubChannel and Active Device）」としてマーク付けする。
【００４７】
いかなるコンピューティング環境でも、割り込みは様々なＩ／Ｏデバイスで発生する可能性がある。Ｉ／Ｏデバイスにおける動作を要求したＯＳが割り込みの検出に失敗した場合は、それによってデータ処理システムの動作速度が低下し最終的に停止する恐れもある。欠落割り込みハンドラ（Missing Interrupt Handler：ＭＩＨ）は、例えばＯＳ１０３に含まれる機構であるが、進行中のＩ／Ｏ動作の時間を計り、Ｉ／Ｏデバイスによる動作の実行時間がその動作の実行に割り当てられた又は設定された所定の「通常の」量の時間を超過しているかどうかを判断することにより、脱落した割り込みを検出するのに役立つ。ＭＩＨ時間に達し、且つＩ／Ｏデバイスによる動作の実行が完了していない場合は、割り込みが欠落したこと、リンク障害が発生したこと、アダプタ障害が発生したこと、制御ユニット・エラーが発生したこと、又は共有システムによる予約時間が想定よりも長くなったことが指示される。
【００４８】
ＦＩＣＯＮにおいてオペレーティング・システムのＭＩＨがタイム・アウトとなったとき、即ちＭＩＨ時間に達したときは、サブチャネルが「サブチャネル及びアクティブ・デバイス」としてマーク付けされているかどうかを確認することによって次にどのようなアクションをとるべきかが判断される。ＦＣＸの場合、サブチャネルは、全体の動作期間にわたって「開始待ち（Start pending）」状態のままとなる。したがって、ＦＣＸでは、ＭＩＨがタイム・アウトとなったときはサブチャネルが全体の動作期間にわたって「開始待ち」状態のままとなるので、Ｉ／Ｏオペレーティング・システムはＩ／Ｏ動作の状態を知ることができなくなる。
【００４９】
本発明の一態様によれば、欠落した割り込みのタイム・アウト直前、例えばＭＩＨ時間に達する１秒前に、オペレーティング・システムは、問い合わせコマンドを使用して制御ユニットにおけるＩ／Ｏ動作の状態を判別する。問い合わせコマンドは、Ｉ／Ｏ動作の実行完了に割り当てられた時間が経過する前であってＩ／Ｏ動作が完了する前に、「ｃａｎｃｅｌ  ｓｕｂｃｈａｎｎｅｌ」命令によって開始することができる。
【００５０】
問い合わせコマンドにはいくつかの利点がある。例えば、問い合わせコマンドは、ＭＩＨタイム・アウトの発生直前に実行されるため、Ｉ／Ｏ動作の度にＣＭＲを送る必要がなくなる。Ｉ／Ｏ動作の度にＣＭＲを送る必要がなくなるため、ファブリック・トラフィックを減少させチャネル及びアダプタ・オーバーヘッドを減少させることにより、ＦＣＸ性能が改善される。また、問い合わせコマンドは、タイム・アウトが実際に発生した場合に制御ユニットによってログに記憶されるＯＳに関する情報を制御ユニットに転送する。別の利点は、ＦＩＣＯＮのＣＭＲでは制御ユニットがＩ／Ｏを現在実行中であることだけが指示されるのに対して、Ｉ／Ｏ動作に関する詳細な状態情報が制御ユニットからＯＳに返されることである。また、Ｉ／Ｏ動作が失敗した場合も、問い合わせコマンドによって交換される情報は問題の判別に非常に役立つ。
【００５１】
本明細書に記載される問い合わせの実行は、「ｃａｎｃｅｌ  ｓｕｂｃｈａｎｎｅｌ」命令、及びＴＣＷ内の問い合わせＴＣＷアドレス・フィールドを必要とする。この問い合わせの実行は、チャネル・サブシステムの観点、チャネル・サブシステムからの問い合わせコマンド及び応答の観点、及び制御ユニットからの問い合わせコマンド及び応答の観点から説明される。以下、これらの各観点について説明する。
【００５２】
図１０には、トランスポート制御ワード（ＴＣＷ）９００の例示的な一実施形態が示される。ＴＣＷ９００は、チャネル１２４によるＩ／Ｏ動作のセット・アップに利用されるものであり、制御ユニット１１０には送信されない。図１０に示されるＴＣＷは、チャネル・サブシステムの観点から問い合わせを実行する場合である。
【００５３】
図１０に示される例示的なＴＣＷ９００において、例えばフォーマット・フィールド９０２が「００ｂ」と等しい場合は、その後にＴＣＷ９００が続くことが指示される。ＴＣＷ９００は、フラグ・フィールド９０６も含む。フラグ・フィールド９０６の最初の５ビットは、将来の使用目的で予約され、０にセットされる。フラグ・フィールド９０６の６番目のビットは、ＴＩＤＡＬデータ・アドレス・フラグである。例示的な一実施形態において、データ・アドレス・フィールド９１４にＴＩＤＡＬのアドレスが収容されるとき、ＴＩＤＡＬデータ・アドレス・フラグは１にセットされる。ＴＩＤＡＬデータ・アドレス・フラグが０にセットされる場合は、データ・アドレス・フィールド９１４にデータ・アドレスが収容される。フラグ・フィールド９０６の７番目のビットは、ＴＣＣＢ  ＴＩＤＡＬフラグである。例示的な一実施形態において、ＴＣＣＢアドレス・フィールド９２２にＴＣＣＢ  ＴＩＤＡＬのアドレスが収容されるとき、ＴＣＣＢ  ＴＩＤＡＬフラグは１にセットされる。ＴＣＣＢ  ＴＩＤＡＬフラグが０にセットされる場合は、ＴＣＣＢアドレス・フィールド９２２はＴＣＣＢを直接アドレス指定する。フラグ・フィールド９０６の８〜２４番目のビットは、将来の使用目的で予約される。フィールド９０７は、将来の使用目的で予約され得る。
【００５４】
ＴＣＷ９００は、ＴＣＣＢの長さを間接的に表すＴＣＣＢ長フィールド９０８も含み、ＴＣＣＢの実際の長さを判別するのに利用することができる。Ｒ／Ｗ９１０フィールドは、ＴＣＷ９００の実行結果としてデータの読み取りが実行されるのか、データの書き込みが実行されるのか、それともその両方が実行されるのかを指示するのに利用される読み取り／書き込みビットを含む。例示的な一実施形態において、読み取り／書き込みビット内の読み取りビットは、ＴＣＷ９００の実行結果として入力データがＩ／Ｏデバイス１１２からホスト・システム１０１内のシステム・ストレージ（例えばメイン・メモリ１０２）に転送されることを指示する１にセットされる。読み取り／書き込みビット内の書き込みビットは、ＴＣＷ９００の実行結果として出力データがホスト・システム１０１内のシステム・ストレージ（例えばメイン・メモリ１０２）からＩ／Ｏデバイスに転送されることを指示する１にセットされる。フィールド９１２は、将来の使用目的で予約され得る。
【００５５】
データ・アドレス・フィールド９１４は、各フラグ・フィールド・ビット６につき１つの直接アドレス又は間接アドレスを含むことができる。データ・アドレス・フィールド９１４の内容は、出力データに関するＴＩＤＡＬのアドレス（トランスポート・モード間接データ・アドレス・ワードのリスト）であることも、出力データの実際のアドレスであることもある。データ・アドレス・フィールド９１４の内容は、入力データに関するＴＩＤＡＬのアドレスであることも、入力データの実際のアドレスであることもある。例示的な一実施形態において、出力データ・アドレス及び入力データ・アドレスは、単一のデータ・アドレス・フィールド９１４に含められ、フィールド９１６は、将来の使用目的で予約される。別法として、出力データ・アドレス及び入力データ・アドレスは、フィールド９１４と９１６に分割することができる。
【００５６】
ＴＣＷ９００は、トランスポート・ステータス・ブロック・アドレス・フィールド９２０も含む。このアドレスには、Ｉ／Ｏ動作に関するトランスポート応答ＩＵ内の完了ステータスの一部分（例えば拡張ステータス部分）が記憶される。ＴＣＷ９００内のＴＣＣＢアドレス・フィールド９２２は、システム・ストレージ内のＴＣＣＢの位置に対応するアドレスを含む。このフィールドは、ＴＣＷ９００に関して実行すべきＤＣＷが所在する制御ブロックである。フラグ・フィールド・ビット７にも示されるように、ＴＣＣＢアドレス・フィールド９２２の内容は、ＴＣＣＢに関するＴＩＤＡＬのアドレスであることも、ＴＣＣＢの実際のアドレスであることもある。ＴＣＷ９００内のデータ・バイト・カウント・フィールド９２４は、出力動作でＴＣＷによって転送される出力データの量と、入力動作でＴＣＷによって転送される入力データの量と、を指示する。フィールド９２６は、将来の使用目的で予約され得る。別法として、出力データ・カウント及び入力データ・カウント情報は、フィールド９２４と９２６に分割することができる。ＴＣＷ９００内のいくつかの追加的なフィールドは予約済みとなる。例えば、予約済みフィールド９２８、予約済みフィールド９３０、及び予約済みフィールド９３２である。
【００５７】
本発明の一態様によれば、ＴＣＷ９００は、将来の機能のためにより多くのスペースが確保され得るように、例えば３２バイトから６４バイトに拡張される。かかる機能の１つは、割り当てられた期間内にＩ／Ｏが完了しなかった場合に問い合わせを実行すべきかどうかを指示する問い合わせ値が収容された問い合わせＴＣＷアドレス・フィールド９３４によって実現され得る問い合わせ機能である。問い合わせＴＣＷアドレス・フィールド９３４には別のＴＣＷのアドレスが収容されることもあるが、このフィールドは、後で詳述する「ｃａｎｃｅｌ  ｓｕｂ‐ｃｈａｎｎｅｌ  Ｉ／Ｏ」命令の主導の下でチャネル１２４が動作状態の問い合わせを行う際に使用され得る。
【００５８】
ＴＣＷ９００は、チャネルがＩ／Ｏ動作を駆動する際に使用するソフトウェアによってセット・アップされ得る。図１０に示されるＴＣＷは、コマンド・ワードがどのように構成され得るかを示す一例である。この他にも、追加的なフィールドが含められる構成、又は図１０に示されるフィールドが含められない構成、あるいはその両方が可能である。
【００５９】
本発明の一態様によれば、ＦＣＸ「ｓｔａｒｔ  ｓｕｂｃｈａｎｎｅｌ」が既にチャネルに送信されている場合は、「ｃａｎｃｅｌ  ｓｕｂｃｈａｎｎｅｌ」命令を実行して制御ユニットの状態が判別される。サブチャネルが「開始待ち」状態にあり、且つ「ｓｔａｒｔ  ｓｕｂｃｈａｎｎｅｌ」がチャネルに送信されており、且つＴＣＷ内の問い合わせＴＣＷアドレス・フィールドの値が０でない場合は、キャンセル命令により、チャネル・サブシステムから制御ユニットに送信され得る問い合わせコマンドがサブチャネルにキューイングされる。この問い合わせコマンドにより、問い合わせ中の動作の状態に関する情報を、制御ユニットからのデータ転送フェーズにおいて又はトランスポート応答ＩＵの拡張ステータス部分において返すことが可能となる。問い合わせ動作のプロトコルは、以下のように実装することができる。
【００６０】
ＦＣＸのＩ／Ｏ動作がアクティブである場合は、そのＩ／Ｏ動作に関するＴＣＷ内の問い合わせＴＣＷアドレスを使用して問い合わせＴＣＷが指示される。チャネルは、０値の問い合わせＴＣＷアドレスを得た場合は問い合わせを開始しない。ＯＳは、欠落割り込み（ＭＩＨ）のタイム・アウトに先立ってＩ／Ｏデバイスに問い合わせを行いたい場合には、ＴＣＷ内の問い合わせＴＣＷアドレス・ワードを問い合わせＴＣＷのアドレスで更新する。問い合わせを行わずにキャンセル命令の送信のみを行いたい場合には、ＯＳは、ＴＣＷ内の問い合わせＴＣＷアドレスを０にセットされたままにする。その後、問い合わせイニシアチブがキャンセル命令と共にチャネル・サブシステムに渡される。キャンセル命令は現行設計の「Ｃａｎｃｅｌ」を実行するものであるが、サブチャネルがＦＣＸ「ｓｔａｒｔ  ｓｕｂｃｈａｎｎｅｌ」による「開始待ち」状態にあり、且つ「Ｓｔａｒｔ」がチャネルに渡されている場合は、制御ユニットに問い合わせを行うイニシアチブはチャネル・サブシステムに与えられる。
【００６１】
本発明の諸態様によれば、サブチャネルがアイドル状態にある場合、つまり１次ステータス又はアラート・ステータスによる割り込み待ち状態にある場合、又は正味デバイス・アクティブ状態にある場合は、問い合わせコマンドを発行するイニシアチブは破棄される。チャネルが「開始待ち」状態のサブチャネルにおいて問い合わせイニシアチブを受信し、且つ「Ｓｔａｒｔ」がなおもチャネル内にキューイングされている場合、チャネルは問い合わせイニシアチブを破棄する。チャネルが問い合わせイニシアチブを受信し、且つそのチャネルの問い合わせ動作が既に進められている場合、チャネルは新しい問い合わせイニシアチブを破棄する。
【００６２】
チャネルが開始待ち状態にあるＵＡに対する問い合わせイニシアチブを受信し、制御ユニットとの間のエクスチェンジ・オープンを有する場合、チャネル・サブシステムはその問い合わせを実行する。本発明の一態様によれば、チャネル・サブシステムは、問い合わせを実行する際に以下の処理を行う。チャネル・サブシステムは、現在のＴＣＷ内の問い合わせＴＣＷアドレスを取り出して、問い合わせＴＣＷを取り出すためのポインタ値を取得する。ポインタがすべて０である場合、チャネルは問い合わせを破棄する。この場合、ＯＳは、問い合わせではなくキャンセル命令を出すことを望む。ポインタが有効である場合、チャネル・サブシステムは処理を継続する。チャネル・サブシステムは、新しいエクスチェンジをオープンし、問い合わせＴＣＷによってアドレス指定されるＴＣＣＢに含まれる問い合わせＤＣＷをトランスポート・コマンドＩＵの形で制御ユニットに送信する。この動作は、チャネルによって完了までの時間が計られる。問い合わせ動作がチャネルによって設定された量の時間内に完了しなかった場合、チャネルは、問い合わせ動作と共に問い合わせ中の動作も中断させる。その後、サブチャネルは、インターフェース制御検査ステータス（interface control check status）と共にＯＳに返される。
【００６３】
制御ユニットは、問い合わせコマンドを受信し実行し、それによってＵＡに関する問い合わせ情報を、トランスポート・コマンドＩＵ内のコマンドに基づくトランスポート応答ＩＵの形で又はデータＩＵとしてチャネル・サブシステムに転送する。問い合わせ先のＵＡ上でアクティブな元の動作は影響を受けない。Ｉ／Ｏサブシステムは、中間ステータス割り込みを生成し、問い合わせ完了ビットを１にセットして、問い合わせの完了をＯＳに報告することができる。
【００６４】
本発明の一態様によれば、問い合わせコマンドは、ＦＣＸをサポートするすべての制御ユニット・タイプで同一となり得る一意のコマンドである。問い合わせに関するトランスポート・コマンドＩＵには１つのＤＣＷのみが収容される。この問い合わせＤＣＷコマンドは、それ自体に関連する最大２３２バイトの制御データを有することができ、この制御データは、制御ユニットに渡され、問い合わせが実行される理由を指示する情報とすることができる。
【００６５】
問い合わせコマンドは、それぞれ図１１に示される問い合わせコマンド１０００の一部となる問い合わせＤＣＷ１０１０及び問い合わせ制御データ１０２０に含まれる情報をトランスポートする。制御ユニットは、Ｉ／Ｏ動作に関する情報をＯＳに返すトランスポート応答ＩＵをもって応答する。本発明の一態様に係るトランスポート応答ＩＵの形で返される情報のフォーマットは、図１２の項目１１００として示される。
【００６６】
図１１は、本発明の一態様に係るＤＣＷ１０００の一実施形態を示す。例示的な一実施形態において、ＤＣＷ１０００の長さは、８バイト長に制御データ・カウント・フィールド１０１４の長さを足したものとなる。ＤＣＷは、ＤＣＷコマンド・フィールド１０１１と、フラグ・フィールド１０１２と、予約済みフィールド１０１３と、制御データ（ＣＤ）カウント・フィールド１０１４と、データ・バイト・カウント・フィールド１０１５、１０１６、１０１７、１０１８と、を含む。ＤＣＷコマンド・フィールド１０１１は、１バイト長であり、ＣＣＷで利用されるＣＣＷコマンド・バイトと同じである（但し、ＣＣＷで利用されない追加的なコマンド・コードを含むこともできる）。フラグ・フィールド１０１２は、８ビットを含む。例示的な一実施形態において、２番目のビットは、ＴＣＣＢ内の次のＤＣＷ１０００に続くチェーン・コマンドである。このフラグ・ビットが０にセットされている場合は、ＴＣＣＢ内のＤＣＷプログラムの最後のＤＣＷ１０００であることが指示される。フラグ・フィールド１０１２内のその他のビットは予約され、０にセットされる。問い合わせＤＣＷ１０１０は、４０（１６進数）が収容されたＤＣＷコマンド・フィールド１０１１を有する。制御データ・カウント・フィールド１０１４は、ＤＣＷに含められる問い合わせ制御データの量を指示する。フィールド１０１５〜１０１８は、問い合わせＤＣＷによって転送可能な読み取りデータの４バイトのデータ・カウントを含む。
【００６７】
問い合わせＤＣＷの制御データ・カウント・フィールド１０１４が０よりも大きい場合は、問い合わせ制御データがＤＣＷにおいて指定される。制御ユニットに送信される問い合わせ制御データ１０２０の用途は、デバイス依存ログをとることであり、Ｉ／Ｏタイム・アウトのデバッグ支援に使用される。
【００６８】
本発明の一態様によれば、問い合わせ制御データ１０２０は、後述のフォーマットを有する。図１１を参照すると、問い合わせ制御データ１０２０のワード０のバイト０｛Ｆｍｔフィールド１０２１｝には、問い合わせデータのレイアウト又はフォーマット（ＦＭＴ）を定義する符号なし整数値が収容される。ワード０のバイト１（ＲＣフィールド１０２２）には、問い合わせ動作がＯＳによって開始された理由を指示する符号なし整数値又は理由コード（reason code：ＲＣ）が収容される。ＲＣ値は、以下の意味を有する可能性がある：
０      問い合わせ理由の指定なし。
１      タイム・アウト：問い合わせ中の動作に関するプログラム検出タイム・アウト。
２〜２５５      予約済み。
【００６９】
問い合わせ制御データのワード０のバイト２（ＲＣＱフィールド１０２３）には、理由コード修飾子（Reason-Code Qualifier：ＲＣＱ）と呼ばれる問い合わせ動作開始理由に関する追加的な情報を指示する符号なし整数値が収容される。ＲＣフィールド１０２２に値１が収容される場合、ＲＣＱ値は、以下の意味を有する可能性がある：
０      問い合わせ理由修飾子の指定なし。
１      １次：タイム・アウトは１次プログラムによって検出される。
２      ２次：タイム・アウトは２次プログラムによって検出される。
３〜２５５      予約済み。
ＲＣフィールド１０２２に値１が収容されない場合には、ＲＣＱは何の意味も持たないようにすることができる。
【００７０】
ワード０のバイト３｛ＬＰＭフィールド１０２４｝には、問い合わせ中の動作が「ｓｔａｒｔ  ｓｕｂｃｈａｎｎｅｌ」コマンドによって開始されるときに使用された論理パス・マスク（Logical-Path Mask：ＬＭＰ）が収容される。
【００７１】
問い合わせ制御データのワード１を参照すると、ワード１のバイト０｛ＰＡＭフィールド１０２５｝には、問い合わせ動作開始時点のパス利用可能マスク（Path-Available Mask：ＰＡＭ）の値が収容される。ワード１のバイト１（ＰＩＭフィールド１０２６）には、問い合わせ動作開始時点のパス・インストール・マスク（Path-Installed Mask：ＰＩＭ）の値が収容される。ワード１のバイト２〜３（タイム・アウト・フィールド１０２７）は、Ｉ／Ｏ動作の完了に割り当てられた時間を指示するタイム・アウト値を示す。ＲＣフィールド１０２２に１の値が収容され、且つＲＣＱフィールド１０２３に１又は２の値が収容される場合、ワード１のバイト２〜３には、プログラムによって使用される符号なし整数秒単位のタイム・アウト間隔が収容される。
【００７２】
問い合わせ制御データ１０２０のワード２を参照すると、バイト０（フラグ・フィールド１０２８）には、問い合わせに関する情報を有するフラグが収容される。各フラグ・ビットには、以下の意味を与えることができる：
ビット０      マルチパス・コード。
ビット１      プログラム・パス・リカバリ。問い合わせはプログラムによるパス・リカバリ中に発行される。
ビット２      クリティカル。そのデバイスがプログラムにとってクリティカルなデバイスであることを意味する。
ビット３〜７      予約済み。
【００７３】
図１１に示されるように、ワード２のバイト１〜３｛フィールド１０２９｝及びワード３のバイト０〜３｛フィールド１０３０｝も将来の使用目的で予約され得る。ワード４〜５（時間フィールド１０４０）には、問い合わせ動作が開始された時間に関する情報が収容され得る。ワード６〜７（フィールド１０５０）には、問い合わせ動作を開始したプログラムを識別するプログラム識別子が収容され得る。このフィールドの内容は、プログラム依存とすることができる。ワード８〜Ｎ（フィールド１０６０）には、プログラム依存情報が収容され得る。
【００７４】
問い合わせコマンドの終了ステータス情報は、図１２に示されるトランスポート応答ＩＵペイロードにおいて制御ユニットによって設定され得る。トランスポート応答ＩＵ１１００では、終了ステータス及びステータス・フラグを含むステータス・ペイロード１１１０がワード０〜７に収容され得る。ワード８〜２３には、問い合わせに関するＴＣＷ内のトランスポート・ステータス・ブロック・アドレス毎にｚメモリ内のステータス・ブロック・アドレスに記憶され得る拡張ステータス・ペイロード１１２０が収容され得る。
【００７５】
図１２に示されるように、バイト０のワード８（ＥＳフィールド１１２１）には、ＥＳペイロードのサイズを指示する拡張ステータス（ＥＳ）長が収容される。ワード８のバイト１（ＥＳフラグ・フィールド１１２２）は、ＥＳフラグを含む。フラグ・ビット５〜７は、タイプ・コードを指示する。タイプ・コードは、ＥＳペイロードのステータス領域のフォーマットを定義する。問い合わせ用のタイプ・コードは３である。ステータス領域を定義する３ビット・エンコードは、以下のように与えることができる：
０      タイプ・コード０。ステータス領域に情報が存在しない。
１      タイプ・コード１。有効終了Ｉ／Ｏステータス。
２      タイプ・コード２。エラー終了ステータス。
３      タイプ・コード３。拡張ステータスは問い合わせ応答であり、フォーマットは図１２に示されるとおりである。
４〜７      予約済み。
【００７６】
ワード８のバイト２及び３｛ステータス・フィールド１１２３｝ならびにワード９（ステータス・フィールド１１２４）には、Ｉ／Ｏ動作のステータスを指示する情報が収容される。Ｉ／Ｏ動作に関して、これらのフィールドの値は、問い合わせ用の０とすることができる。
【００７７】
トランスポート拡張ステータス・ペイロード１１２０のワード１１〜２３は、問い合わせステータス領域とすることができる。ワード１１のバイト０（フォーマット・フィールド１１２６）には、問い合わせステータス領域のレイアウトを定義する符号なし整数値が収容される。このフィールドの値が０である場合は、問い合わせステータスの内容は無意味となる。フォーマット・バイトがａ（０１ｈ）にセットされる場合は、問い合わせステータス領域の以下の定義が適用される。
【００７８】
ワード１１のバイト１（フラグ・フィールド１１２７）には、問い合わせステータス領域に関する情報が収容される。各フラグ・ビットには、以下の意味を与えることができる：
ビット０      制御幅状態（control-width state）有効：ビット０が１である場合には、制御ユニット状態フィールドに有意の情報が収容される。ビット０が０である場合には、制御ユニット状態フィールドは何の意味も持たない。
ビット１      デバイス状態（device-state）有効：ビット１が１である場合には、デバイス状態フィールドに有意の情報が収容される。ビット１が０である場合には、デバイス状態フィールドは何の意味も持たない。
ビット２      動作状態（operation-state）有効：ビット２が１である場合には、動作状態フィールドに有意の情報が収容される。ビット２が０である場合には、動作状態フィールドは何の意味も持たない。
ビット３〜７      予約済み。
【００７９】
ワード１１のバイト２（制御ユニット状態フィールド１１２８）には、Ｉ／Ｏデバイスに関する制御ユニットの現在の状態を指示する８ビットの符号なし整数が収容される。各値には、以下の意味を与えることができる：
０      ビジー：制御ユニットはビジー状態にあり、ビジー状態に関する追加的な情報がデバイス依存データ・フィールドに収容され得る。
１      リカバリ：制御ユニットはリカバリ・プロセスを実行し、リカバリ状態に関する追加的な情報がデバイス依存データ・フィールドに収容され得る。
２      問い合わせ最大（interrogate maximum）：制御ユニットはそれ自体がサポートする最大数の問い合わせ動作を実行する。
３〜１２７      予約済み。
１２８〜２５５      デバイス依存を意味する。
【００８０】
ワード１１のバイト３（デバイス状態フィールド１１２９）には、Ｉ／Ｏデバイスの現在の状態を指示する８ビットの符号なし整数が収容される。このバイトには、以下の意味を与えることができる：
０      パス・グループ識別：予約対象デバイスを有するパス・グループを識別する情報が状態依存情報フィールドに収容される。
１      ロング・ビジー：制御ユニットはロング・ビジー状態にある。ロング・ビジーの意味はデバイス依存であり、ロング・ビジー状態に関する追加的な情報がデバイス依存フィールドに収容され得る。
２      リカバリ：デバイスはリカバリ・プロセスを実行する。
３〜１２７      予約済み。
１２８〜２５５      デバイス依存を意味する。
【００８１】
ワード１２のバイト０（動作状態フィールド１０３０）には、そのデバイスにＩ／Ｏ動作が存在するかどうかを指示し、Ｉ／Ｏ動作が存在する場合は動作状態も指示する８ビットの符号なし整数が収容される。このバイト値には、以下の意味を与えることができる：
０      Ｉ／Ｏ動作が存在しない。
１      Ｉ／Ｏ動作が存在し、実行中である。
２      Ｉ／Ｏ動作が存在し、別の構成によって開始されたＩ／Ｏ動作の完了待ち状態にある。
３      Ｉ／Ｏ動作が存在し、同じデバイス・エクステントから開始されたＩ／Ｏ動作の完了待ち状態にある。
４      Ｉ／Ｏ動作が存在し、デバイス依存動作の実行待ち状態にある。
５〜１２７      予約済み。
１２８〜２５５      デバイス依存を意味する。
【００８２】
フィールド１０３１は、将来の使用目的で予約され得る。
【００８３】
ワード１３〜１５（フィールド１１４０）には、状態依存情報が収容され得る。このフィールドの内容は、デバイス依存である。このフィールドが有意であるかどうかは、それぞれ制御ユニット状態フィールド１１２８、デバイス状態フィールド１１２９、及び動作状態フィールド１１３０によって指定される。
【００８４】
ワード１６（フィールド１１５０）には、デバイスの実装レベルを識別するデバイス・レベル識別子又はトークンが収容され得る。
【００８５】
ワード１７〜２３（フィールド１１６０）には、デバイス依存情報が収容され得る。このフィールドが有意であるかどうかは、それぞれ制御ユニット状態フィールド１１２８、デバイス状態フィールド１１２９、及び動作状態フィールド１１３０によって指定され得る。
【００８６】
例示的な諸実施形態によれば、ＯＳ１０３は、問い合わせに関するトランスポート応答ＩＵの形で返される制御ユニット状態情報、デバイス状態情報、及び動作状態情報から、動作の完了が割り当てられた時間よりも長くなるＩ／Ｏ動作に対してどのようなアクションをとるべきかを十分な情報に基づいて判断することが可能となる。
【００８７】
図１３は、本発明の諸態様に従ってＩ／Ｏ動作の状態を制御ユニットに要求すべきタイミングを決定するためにオペレーティング・システムによって使用される方法を示す。ステップ１２６５でタイマー・ポップが発生すると、ステップ１２７０で、オペレーティング・システムの欠落割り込みハンドラ（ＭＩＨ）が制御を受信する。例えば、ＭＩＨは、各タイマー・ポップの発生後、１秒に１回制御を受信する。ステップ１２７１で、ＭＩＨは、オペレーティング・システム内で実行中のすべてのアプリケーション、ミドルウェア、及びサブシステムから発行されたすべてのアクティブＩ／Ｏ動作をスキャンする。ステップ１２７２で、Ｉ／Ｏ動作の有効期限が切れそうかどうか、例えばＩ／Ｏ動作のタイム・リミットが１秒以内に到来するかどうかが判断される。そうである場合は、ステップ１２７３で、Ｉ／Ｏ動作がトランスポート・モード（ＦＣＸ）に関するものであるかどうかが判断される。Ｉ／Ｏ動作がトランスポート・モードに関するものである場合には、ステップ１２５０で、問い合わせＤＣＷが作成され、アクティブＴＣＷが問い合わせコマンドを指すように更新される。そうでない場合には、ステップ１２７４からステップ１２７８に進んで従来の「ヘリテージ（heritage）」ＭＩＨ処理が実行される。ステップ１２５０から、ＭＩＨ処理は、例えばステップ１２６５の１秒後にタイマー・ポップが発生するまでステップ１２７１を継続し、又はステップ１２９０で終了する。ステップ１２７２でＩ／Ｏ動作の有効期限がすぐには切れないことが判断された場合には、ステップ１２７５で、Ｉ／Ｏ動作時間がそれ自体の割り当て時間を超過しているかどうかを確認する検査が行われる。Ｉ／Ｏ動作がそれ自体の割り当て時間を超過していない場合には、ステップ１２７８で伝統的な（従来の）ヘリテージＭＩＨ処理が行われる。実際にＩ／Ｏ動作時間の超過が発生した場合には、ステップ１２７６で、問い合わせコマンドが発行されているかどうかを確認する検査が行われる。問い合わせコマンドが発行されていない場合には、そのコマンドがトランスポート・モード・コマンド（ＦＣＸ）でないことが指示され、ステップ１２７８で、ヘリテージＭＩＨリカバリ処理が実行される。一方、ステップ１２７６で問い合わせコマンドが発行され無事完了していることが判断された場合には、ステップ１２７９で、問い合わせ結果を検査することによってデバイスが別のシステム用に予約されているかどうかが判断される。問い合わせ情報によってデバイスが別のシステム用に予約されていることが指示された場合には（１１４０）、エラーは存在せず、欠落割り込みも発生していないことになる。それ故、処理はステップ１２９０で終了する。デバイスが他の何らかのシステム用に予約されていない場合には、ステップ１２７７で、問い合わせによって返された情報は、診断用のシステムＬＯＧＲＥＣデータセットに書き込まれるレコードに入れられる。その後、ステップ１２７８のヘリテージＭＩＨ処理に進む。
【００８８】
図１４は、本発明の諸態様に係るＩ／Ｏ動作の状態を判別する方法を示す。ステップ１２０５で、Ｉ／Ｏ動作開始要求がＯＳ１０３からチャネル・サブシステム１０８に送信され、更に、ステップ１２０７で制御ユニット１１０へと送信される。ステップ１２１０で、要求は制御ユニットにおいて受信され処理される。Ｉ／Ｏ動作に割り当てられた実行時間が終了に近付いた場合は、先の段落で説明したように、図１３及び図１４に示されるステップ１２５０で、オペレーティング・システムによる問い合わせ動作が開始される。
【００８９】
問い合わせは、ＯＳ１０３がメイン・メモリ１０２内の問い合わせ制御ブロックをセット・アップし、「ｃａｎｃｅｌ  ｓｕｂｃｈａｎｎｅｌ」をチャネル・サブシステム１０８に送信するステップ１２５０から開始する。チャネル・サブシステム１０８は、問い合わせを制御ユニットに送信すべきかどうかを判断する。問い合わせを行うにあたって上述の各条件が満足されない場合には、ヘリテージＭＩＨ処理によってＩ／Ｏ動作が終了し、Ｉ／Ｏのイニシエータに対してエラーがシミュレートされる。問い合わせ条件が満足される場合には、ステップ１２２５で、問い合わせ要求がチャネル・サブシステム１０８から制御ユニット１１０に送信される。ステップ１２３０で、制御ユニット１１０は問い合わせ要求を受信する。ステップ１２３５で、制御ユニット１１０は、Ｉ／Ｏ動作の状態、制御ユニット１１０、及び問い合わせＩ／Ｏ動作を実行したＩ／Ｏデバイスを指示する問い合わせ応答をチャネル・サブシステム１０８に送信する。ステップ１２４０で、問い合わせ応答がチャネル・サブシステム１０８において受信されると、チャネル・サブシステム１０８は、ＯＳに対する割り込みを生成する。ステップ１２４５で、ＯＳは、問い合わせ応答を受信し、ＬＯＧＲＥＣエントリを作成して状態情報を制御ユニットに記録し、上述のヘリテージＭＩＨ処理を進める。
【００９０】
Ｉ／Ｏ動作の状態を判別するにあたっては、図１２に示されるすべてのステップを必ずしも実行する必要はないことを理解していただきたい。更に、図１３及び図１４に示されるステップの順序は、各プロセスがどのように実行され得るかを示す例にすぎない。また、図１３及び図１４に示されない追加的なステップが実行されてもよい。
【００９１】
上述のとおり、諸実施形態は、上述の処理を実施するコンピュータ実装プロセス及び装置の形で実施することができる。例示的な諸実施形態において、本発明は、１つ又は複数のネットワーク要素によって実行されるコンピュータ・プログラム・コードの形で実施される。諸実施形態は、製品となる有形の媒体内で実行される命令を収容したコンピュータ・プログラム・コード・ロジック１３０４を含むコンピュータ使用可能な媒体１３０２上の、図１３に示されるようなコンピュータ・プログラム製品１３００を含む。コンピュータ使用可能な媒体１３０２の例示的な製品としては、フレキシブル・ディスク、ＣＤ‐ＲＯＭ、ハード・ドライブ、ユニバーサル・シリアル・バス（ＵＳＢ）フラッシュ・ドライブ、又は他の任意のコンピュータ可読記憶媒体を挙げることができ、コンピュータ・プログラム・コード・ロジック１３０４がコンピュータにロードされ実行されたときは、当該コンピュータが本発明を実施する装置となる。諸実施形態は、例えばストレージ・メディアに記憶されるものであれ、コンピュータへのロード又はコンピュータによる実行あるいはその両方が行われるものであれ、電気配線又は電気ケーブル、光ファイバ、電磁放射等、何らかの伝送媒体を介して伝送されるものであれ、それ自体がコンピュータにロードされ実行されたときに当該コンピュータが本発明を実施する装置となる、コンピュータ・プログラム・コード・ロジック１３０４を含む。コンピュータ・プログラム・コード・ロジック１３０４が汎用マイクロプロセッサ上に実装された場合、当該マイクロプロセッサは、コンピュータ・プログラム・コード・ロジック１３０４の各セグメントによって特定の論理回路を形成するように構成される。
【００９２】
以上、本発明について例示的な諸実施形態を参照して説明したが、これらの実施形態には本発明の範囲から逸脱しない限り様々な変更を施すことができ、それらの各要素を均等物で置き換えることができることが当業者には理解されるだろう。また、本発明の本質的な範囲から逸脱しなければ、特定の状況又は材料に応じて本発明の教示内容に様々な修正を施すことが可能である。したがって、本発明は、本発明の最良の実施形態として本明細書に開示される特定の実施形態に限定されるものではなく、添付の特許請求範囲に含まれるすべての実施形態を包含することが本出願人の意図するところである。また、「第１の」や「第２の」等の用語の使用はいかなる序列関係も重要度も示すものではなく、ある要素と別の要素を区別するのに使用されるものである。更に、「ａ」や「ａｎ」等の用語の使用は数量の限定を示すものではなく、言及される要素が少なくとも１つ存在することを示している。
【図１】
2011512588.tif 000003
【図２】
2011512588.tif 000004
【図３】
2011512588.tif 000005
【図４】
2011512588.tif 000006
【図５】
2011512588.tif 000007
【図６】
2011512588.tif 000008
【図７】
2011512588.tif 000009
【図８】
2011512588.tif 000010
【図９】
2011512588.tif 000011
【図１０】
2011512588.tif 000012
【図１１】
2011512588.tif 000013
【図１２】
2011512588.tif 000014
【図１３】
2011512588.tif 000015
【図１４】
2011512588.tif 000016
【図１５】
2011512588.tif 000017
【手続補正書】
【提出日】平成22年10月22日(2010.10.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
Ｉ／Ｏ処理システムにおける入出力（Ｉ／Ｏ）動作の状態を判別するコンピュータ・プログラムであって、
処理回路によって読み取り可能であって、
Ｉ／Ｏオペレーティング・システムからの前記Ｉ／Ｏ動作の実行要求をチャネル・サブシステムにおいて受信するステップと、
前記要求を、前記チャネル・サブシステムから前記Ｉ／Ｏ動作を実行するＩ／Ｏデバイスを制御する制御ユニットに転送するステップと、
前記Ｉ／Ｏ動作が完了したことを指示するインジケーションが前記制御ユニットから受信されないまま所定の量の時間が経過した後に、前記Ｉ／Ｏ動作の状態を判別する前記Ｉ／Ｏオペレーティング・システムからの問い合わせ要求を前記チャネル・サブシステムにおいて受信するステップと、
前記問い合わせ要求が前記チャネル・サブシステムにおいて受信されたことに応答して、前記チャネル・サブシステムから前記制御ユニットに問い合わせコマンドを送信して前記Ｉ／Ｏ動作の状態を判別するステップと、
前記Ｉ／Ｏ動作の状態を指示する前記制御ユニットからの応答を前記チャネル・サブシステムにおいて受信するステップと、
を含む方法を実行するために前記処理回路によって実行される命令を記憶していて、
前記応答は、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスの状態と、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットの状態と、実行される前記Ｉ／Ｏ動作の状態と、を指示する情報を含む、
コンピュータ・プログラム。
【請求項２】
前記Ｉ／Ｏ動作は、完了期間と関連付けられ、前記所定の量の時間は、前記完了期間よりも短い、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記問い合わせコマンドは、前記問い合わせコマンドの送信理由及び送信時期を指示する情報を含む、請求項１に記載のコンピュータ・プログラム。
【請求項４】
前記制御ユニットの状態を指示する前記応答に含まれる前記情報は、前記制御ユニットがビジー状態にあるのか、リカバリ動作を実行しているのか、それとも他の問い合わせ要求に応答しているのかを指示する、請求項１に記載のコンピュータ・プログラム。
【請求項５】
前記Ｉ／Ｏデバイスの状態を指示する前記応答に含まれる前記情報は、前記Ｉ／Ｏデバイスがパス・グループによって予約されているかどうか、前記制御ユニットがロング・ビジー状態にあるかどうか、又は前記Ｉ／Ｏデバイスがリカバリ・プロセスを実行しているかどうかを指示する、請求項１に記載のコンピュータ・プログラム。
【請求項６】
前記Ｉ／Ｏ動作の状態を指示する前記応答に含まれる前記情報は、動作が存在するのか、実行中であるのか、別のＩ／Ｏ動作の完了待ち状態にあるのか、それともデバイス依存動作の実行待ち状態にあるのかを指示する、請求項１に記載のコンピュータ・プログラム。
【請求項７】
前記制御ユニットからの前記応答に含まれる前記情報は、前記Ｉ／Ｏデバイスが別のＩ／Ｏ処理システムによって予約されているかどうかを指示する、請求項１に記載のコンピュータ・プログラム。
【請求項８】
Ｉ／Ｏ処理システムにおいてＩ／Ｏ動作を実行する入出力（Ｉ／Ｏ）デバイスを制御する制御ユニットと通信するように適合された装置であって、
Ｉ／Ｏオペレーティング・システム及び前記制御ユニットと通信するチャネル・サブシステム
を備え、前記チャネル・サブシステムは、
前記Ｉ／Ｏオペレーティング・システムから前記Ｉ／Ｏ動作の実行要求を受信するステップと、
前記要求を、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットに転送するステップと、
前記Ｉ／Ｏ動作が完了したことを指示するインジケーションが前記制御ユニットから受信されないまま所定の量の時間が経過した後に、前記Ｉ／Ｏ動作の状態を判別する前記Ｉ／Ｏオペレーティング・システムからの問い合わせ要求を受信するステップと、
前記問い合わせ要求が受信されたことに応答して、前記制御ユニットに問い合わせコマンドを送信して前記Ｉ／Ｏ動作の状態を判別するステップと、
前記Ｉ／Ｏ動作の状態を指示する前記制御ユニットからの応答を受信するステップと、
を含む方法を実行し、前記応答は、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスの状態と、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットの状態と、実行される前記Ｉ／Ｏ動作の状態と、を指示する情報を含む、
装置。
【請求項９】
前記Ｉ／Ｏ動作は、完了期間と関連付けられ、前記所定の量の時間は、前記完了期間よりも短い、請求項８に記載の装置。
【請求項１０】
前記問い合わせコマンドは、前記問い合わせコマンドの送信理由及び送信時期を指示する情報を含む、請求項８に記載の装置。
【請求項１１】
前記制御ユニットの状態を指示する前記応答に含まれる前記情報は、前記制御ユニットがビジー状態にあるのか、リカバリ動作を実行しているのか、それとも他の問い合わせ要求に応答しているのかを指示する、請求項８に記載の装置。
【請求項１２】
前記Ｉ／Ｏデバイスの状態を指示する前記応答に含まれる前記情報は、前記Ｉ／Ｏデバイスがパス・グループによって予約されているかどうか、前記制御ユニットがロング・ビジー状態にあるかどうか、又は前記Ｉ／Ｏデバイスがリカバリ・プロセスを実行しているかどうかを指示する、請求項８に記載の装置。
【請求項１３】
前記Ｉ／Ｏ動作の状態を指示する前記応答に含まれる前記情報は、動作が存在するのか、実行中であるのか、別のＩ／Ｏ動作の完了待ち状態にあるのか、それともデバイス依存動作の実行待ち状態にあるのかを指示する、請求項８に記載の装置。
【請求項１４】
前記制御ユニットからの前記応答に含まれる前記情報は、前記Ｉ／Ｏデバイスが別のＩ／Ｏ処理システムによって予約されているかどうかを指示する、請求項８に記載の装置。
【請求項１５】
Ｉ／Ｏ処理システムにおける入出力（Ｉ／Ｏ）動作の状態を判別する方法であって、
Ｉ／Ｏオペレーティング・システムからの前記Ｉ／Ｏ動作の実行要求をチャネル・サブシステムにおいて受信するステップと、
前記要求を、前記チャネル・サブシステムから前記Ｉ／Ｏ動作を実行するＩ／Ｏデバイスを制御する制御ユニットに転送するステップと、
前記Ｉ／Ｏ動作が完了したことを指示するインジケーションが前記制御ユニットから受信されないまま所定の量の時間が経過した後に、前記Ｉ／Ｏ動作の状態を判別する前記Ｉ／Ｏオペレーティング・システムからの問い合わせ要求を前記チャネル・サブシステムにおいて受信するステップと、
前記問い合わせ要求が前記チャネル・サブシステムにおいて受信されたことに応答して、前記チャネル・サブシステムから前記制御ユニットに問い合わせコマンドを送信して前記Ｉ／Ｏ動作の状態を判別するステップと、
前記Ｉ／Ｏ動作の状態を指示する前記制御ユニットからの応答を前記チャネル・サブシステムにおいて受信するステップと、
を含み、前記応答は、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスの状態と、前記Ｉ／Ｏ動作を実行する前記Ｉ／Ｏデバイスを制御する前記制御ユニットの状態と、実行される前記Ｉ／Ｏ動作の状態と、を指示する情報を含む、
方法。
【請求項１６】
前記Ｉ／Ｏ動作は、完了期間と関連付けられ、前記所定の量の時間は、前記完了期間よりも短い、請求項１５に記載の方法。
【請求項１７】
前記問い合わせコマンドは、前記問い合わせコマンドの送信理由及び送信時期を指示する情報を含む、請求項１５に記載の方法。
【請求項１８】
前記制御ユニットの状態を指示する前記応答に含まれる前記情報は、前記制御ユニットがビジー状態にあるのか、リカバリ動作を実行しているのか、それとも他の問い合わせ要求に応答しているのかを指示する、請求項１５に記載の方法。
【請求項１９】
前記Ｉ／Ｏデバイスの状態を指示する前記応答に含まれる前記情報は、前記Ｉ／Ｏデバイスがパス・グループ又は別のＩ／Ｏ処理システムによって予約されているかどうか、前記制御ユニットがロング・ビジー状態にあるかどうか、又は前記Ｉ／Ｏデバイスがリカバリ・プロセスを実行しているかどうかを指示する、請求項１５に記載の方法。
【請求項２０】
前記Ｉ／Ｏ動作の状態を指示する前記応答に含まれる前記情報は、動作が存在するのか、実行中であるのか、別のＩ／Ｏ動作の完了待ち状態にあるのか、それともデバイス依存動作の実行待ち状態にあるのかを指示する、請求項１５に記載の方法。
【国際調査報告】
2011512588.tif 000018
2011512588.tif 000019