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