(57)【要約】【課題】【解決手段】  チャネル・サブシステムによって、チャネル・サブシステムが双方向データ転送をサポートしているかどうかを示すプロセス・ログイン（ＰＲＬＩ）要求メッセージを制御ユニットに送信すること、制御ユニットが双方向データ転送をサポートしているかどうかを示すＰＲＬＩ応答メッセージを制御ユニットから受信すること、少なくとも１つが入力データ転送を指定し、少なくとも１つが出力データ転送を指定する、複数のコマンドを収集すること、制御ユニットに転送されることになる出力データを含む少なくとも１つの出力データ・メッセージを制御ユニットに送信することであって、出力データ転送を指定する複数のコマンドのうちの少なくとも１つが出力データ・メッセージに関連付けられる、送信すること、および、ホスト・コンピュータ・システムの主記憶内に記憶されることになる入力データを含む少なくとも１つの入力メッセージを制御ユニットから受信することを、実行するために、コンピュータ・プログラム製品が提供される。【選択図】  図１
2014522021.tif 000002
【特許請求の範囲】
【請求項１】
制御ユニットとの通信用に構成されたホスト・コンピュータ・システムでＩ／Ｏ動作命令によって開始される入力／出力（Ｉ／Ｏ）動作を実行するためのコンピュータ・プログラムであって、
チャネル・サブシステムと制御ユニットとの間のリンクを初期化するために、前記ホスト・コンピュータ・システム内の前記チャネル・サブシステムによって、プロセス・ログイン（ＰＲＬＩ）要求メッセージを前記制御ユニットに送信することであって、前記ＰＲＬＩ要求メッセージは、前記チャネル・サブシステムが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、送信すること、
前記制御ユニットからＰＲＬＩ応答メッセージを受信することであって、前記ＰＲＬＩ応答メッセージは、前記制御ユニットが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、受信すること、
双方向データ転送がサポートされている旨の指示をホスト・オペレーティング・システムに提供すること、および、
前記ホスト・コンピュータ・システムから受信した前記Ｉ／Ｏ動作命令の実行に応答して、
前記ホスト・コンピュータ・システムから受信した前記Ｉ／Ｏ動作命令に関連付けられた複数のコマンドを収集することであって、前記複数のコマンドのうちの少なくとも１つは入力データ転送を指定し、前記複数のコマンドのうちの少なくとも１つは出力データ転送を指定する、収集すること、
前記複数のコマンドを前記制御ユニットに転送すること、
前記制御ユニットに転送されることになる出力データを含む少なくとも１つの出力データ・メッセージを前記制御ユニットに送信することであって、前記出力データ・メッセージは出力データ転送を指定する前記複数のコマンドのうちの少なくとも１つに関連付けられる、送信すること、および、
前記ホスト・コンピュータ・システムの主記憶内に記憶されることになる入力データを含む少なくとも１つの入力メッセージを前記制御ユニットから受信することであって、前記入力データ・メッセージは入力データ転送を指定する前記複数のコマンドのうちの少なくとも１つに関連付けられる、受信すること、
を含む方法を実行すること、
を含む方法を実行するために、処理回路によって読み取り可能であり、処理回路による実行のための命令を記憶する、有形記憶媒体を含む、
コンピュータ・プログラム。
【請求項２】
前記複数のコマンドが、それぞれがＩ／Ｏコマンドに関連付けられた複数のデバイス・コマンド・ワード（ＤＣＷ）であって、収集することが、前記Ｉ／Ｏ動作について前記ホスト・コンピュータ・システム内の前記チャネル・サブシステムで移送コマンド・ワード（ＴＣＷ）を取得することを含み、前記ＴＣＷが、前記ホスト・コンピュータ・システムの前記主記憶内にＴＣＣＢのアドレスを含む移送コマンド制御ブロック（ＴＣＣＢ）アドレス・フィールドを含み、前記ＴＣＣＢが前記複数のＤＣＷを含み、前記ＤＣＷの少なくとも１つが入力データ転送を指定し、前記ＤＣＷの少なくとも１つが出力データ転送を指定する、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記複数のコマンドを転送することが、前記複数のＤＣＷを含む前記ＴＣＣＢを前記制御ユニットに転送することを含む、請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記指示が、第１の転送準備済み使用不能条件が有効であるかどうかを指定するように構成され、前記方法が、
前記第１の転送準備済み使用不能条件が有効であることに応答して、前記ＴＣＣＢの転送に続いて、および前記制御ユニットからの少なくとも１つのメッセージの受信に先立ち、前記少なくとも１つの出力データ・メッセージを前記制御ユニットに送信すること、および
前記第１の転送準備済み使用不能条件が有効でないことに応答して、前記少なくとも１つの出力データ・メッセージの送信に先立ち、前記制御ユニットから前記少なくとも１つのメッセージを受信すること、
をさらに含む、請求項３に記載のコンピュータ・プログラム。
【請求項５】
前記制御ユニットからのメッセージが、前記チャネル・サブシステムに出力データを送信するよう要求する転送準備済みメッセージおよび前記入力データ・メッセージのうちの１つを含む、請求項４に記載のコンピュータ・プログラム。
【請求項６】
前記ＴＣＣＢが前記制御ユニットに送信される移送コマンド情報ユニット（ＩＵ）内に含まれ、前記移送コマンドＩＵが移送コマンド・ヘッダ（ＴＣＨ）を含み、前記ＴＣＨが、前記チャネル・サブシステムが双方向データ転送を要求しているかどうかを示すフィールドを含む、請求項２に記載のコンピュータ・プログラム。
【請求項７】
前記ＴＣＣＢが、転送されることになる出力データ量を指定する書き込みデータ長さ（ＤＬ）フィールド、および転送されることになる入力データ量を指定する双方向読み取りデータ長さ（ＢＲＤＬ）フィールドを含む、請求項６に記載のコンピュータ・プログラム。
【請求項８】
前記方法が、前記制御ユニットが双方向データ動作をサポートしていないことに応答して、前記Ｉ／Ｏ動作が終了したことを示す移送応答メッセージを前記制御ユニットから受信することをさらに含み、前記移送応答メッセージが、
前記制御ユニットが、前記ＴＣＨ内の読み取り（Ｒ）ビットおよび書き込み（Ｗ）ビットの両方が１に設定されること、および前記ＴＣＣＢが前記ＢＲＤＬを含まないことを検出すること、および
前記制御ユニットが、前記ＴＣＨ内のＲビットおよび書き込みＷビットの両方が１に設定されること、および前記制御ユニットが双方向データ転送をサポートしていないことを検出すること、
のうちの少なくとも１つに応答して、ＴＣＨコンテンツ・エラー指示を含む、請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記方法が、前記Ｉ／Ｏ動作が終了したことを示す移送応答メッセージを前記制御ユニットから受信することをさらに含み、前記移送応答メッセージが、
前記ＴＣＣＢ内のＤＬフィールド値と前記制御ユニットによって受信された出力データ量との間の差異を指定する、データ長さ残余カウント（ＤＬＲＣ）フィールド、および
前記ＴＣＣＢ内のＢＲＤＬフィールド値と前記制御ユニットによって送信される入力データ量との間の差異を指定する、ＢＲＤＬ残余カウント
を含む、請求項７に記載のコンピュータ・プログラム。
【請求項１０】
前記チャネル・サブシステムが、
前記ＤＬＲＣ値が、前記ＴＣＣＢ内の前記ＤＬフィールド値と前記制御ユニットに送信される出力データの量との間の差異に合致しないこと、
ＢＲＤＬ残余カウント値が、前記ＢＲＤＬフィールド値と前記制御ユニットから受信する入力データ量との間の差異に合致しないこと、
のうちの少なくとも１つに応答して、エラーを検出する、請求項９に記載のコンピュータ・プログラム。
【請求項１１】
前記ＰＲＬＩ要求メッセージが、前記制御ユニットが移送モード・プロトコルをサポートしているかどうかを示すための要求を前記制御ユニットに示し、前記移送モード・プロトコルが前記ＴＣＷおよび前記ＴＣＣＢの使用をサポートしており、前記ＰＲＬＩ応答メッセージが、前記制御ユニットが前記移送モード・プロトコルをサポートしているかどうかを示すフィールドを含む、請求項９に記載のコンピュータ・プログラム。
【請求項１２】
制御ユニットとの通信用に構成されたホスト・コンピュータ・システムでＩ／Ｏ動作命令によって開始される入力／出力（Ｉ／Ｏ）動作を実行するための装置であって、前記ホスト・コンピュータ・システムが、
チャネル・サブシステムと制御ユニットとの間のリンクを初期化するために、前記ホスト・コンピュータ・システム内の前記チャネル・サブシステムによって、プロセス・ログイン（ＰＲＬＩ）要求メッセージを前記制御ユニットに送信することであって、前記ＰＲＬＩ要求メッセージは、前記チャネル・サブシステムが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、送信すること、
前記制御ユニットからＰＲＬＩ応答メッセージを受信することであって、前記ＰＲＬＩ応答メッセージは、前記制御ユニットが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、受信すること、
双方向データ転送がサポートされている旨の指示をホスト・オペレーティング・システムに提供すること、および、
前記ホスト・コンピュータ・システムから受信した前記Ｉ／Ｏ動作命令の実行に応答して、
前記ホスト・コンピュータ・システムから受信した前記Ｉ／Ｏ動作命令に関連付けられた複数のコマンドを収集することであって、前記複数のコマンドのうちの少なくとも１つは入力データ転送を指定し、前記複数のコマンドのうちの少なくとも１つは出力データ転送を指定する、収集すること、
前記複数のコマンドを前記制御ユニットに転送すること、
前記制御ユニットに転送されることになる出力データを含む少なくとも１つの出力データ・メッセージを前記制御ユニットに送信することであって、前記出力データ・メッセージは出力データ転送を指定する前記複数のコマンドのうちの少なくとも１つに関連付けられる、送信すること、および、
前記ホスト・コンピュータ・システムの主記憶内に記憶されることになる入力データを含む少なくとも１つの入力メッセージを前記制御ユニットから受信することであって、前記入力データ・メッセージは入力データ転送を指定する前記複数のコマンドのうちの少なくとも１つに関連付けられる、受信すること、
を実行するように構成された、装置。
【請求項１３】
前記複数のコマンドが、それぞれがＩ／Ｏコマンドに関連付けられた複数のデバイス・コマンド・ワード（ＤＣＷ）であって、収集することが、前記Ｉ／Ｏ動作について前記ホスト・コンピュータ・システム内の前記チャネル・サブシステムで移送コマンド・ワード（ＴＣＷ）を取得することを含み、前記ＴＣＷが、前記ホスト・コンピュータ・システムの前記主記憶内にＴＣＣＢのアドレスを含む移送コマンド制御ブロック（ＴＣＣＢ）アドレス・フィールドを含み、前記ＴＣＣＢが前記複数のＤＣＷを含み、前記ＤＣＷの少なくとも１つが入力データ転送を指定し、前記ＤＣＷの少なくとも１つが出力データ転送を指定する、請求項１２に記載の装置。
【請求項１４】
前記指示が、第１の転送準備済み使用不能条件が有効であるかどうかを指定するように構成され、前記ホスト・コンピュータ・システムが、
前記第１の転送準備済み使用不能条件が有効であることに応答して、前記ＴＣＣＢの転送に続いて、および前記制御ユニットからの少なくとも１つのメッセージの受信に先立ち、前記少なくとも１つの出力データ・メッセージを前記制御ユニットに送信すること、および
前記第１の転送準備済み使用不能条件が有効でないことに応答して、前記少なくとも１つの出力データ・メッセージの送信に先立ち、前記制御ユニットから前記少なくとも１つのメッセージを受信すること、
をさらに実行するように構成された、請求項１３に記載の装置。
【請求項１５】
前記ＴＣＣＢが前記制御ユニットに送信される移送コマンド情報ユニット（ＩＵ）内に含まれ、前記移送コマンドＩＵが移送コマンド・ヘッダ（ＴＣＨ）を含み、前記ＴＣＨが、前記チャネル・サブシステムが双方向データ転送を要求しているかどうかを示すフィールドを含む、請求項１３に記載の装置。
【請求項１６】
前記ＴＣＣＢが、転送されることになる出力データ量を指定する書き込みデータ長さ（ＤＬ）フィールド、および転送されることになる入力データ量を指定する双方向読み取りデータ長さ（ＢＲＤＬ）フィールドを含む、請求項１５に記載の装置。
【請求項１７】
前記ホスト・コンピュータ・システムが、前記制御ユニットが双方向データ動作をサポートしていないことに応答して、前記Ｉ／Ｏ動作が終了したことを示す移送応答メッセージを前記制御ユニットから受信することをさらに実行するように構成され、前記移送応答メッセージが、
前記制御ユニットが、前記ＴＣＨ内の読み取り（Ｒ）ビットおよび書き込み（Ｗ）ビットの両方が１に設定されること、および前記ＴＣＣＢが前記ＢＲＤＬを含まないことを検出すること、および
前記制御ユニットが、前記ＴＣＨ内のＲビットおよび書き込みＷビットの両方が１に設定されること、および前記制御ユニットが双方向データ転送をサポートしていないことを検出すること、
のうちの少なくとも１つに応答して、ＴＣＨコンテンツ・エラー指示を含む、請求項１６に記載の装置。
【請求項１８】
前記方法が、前記Ｉ／Ｏ動作が終了したことを示す移送応答メッセージを前記制御ユニットから受信することをさらに含み、前記移送応答メッセージが、前記ＴＣＣＢ内のＤＬフィールド値と前記制御ユニットによって受信された出力データ量との間の差異を指定するデータ長さ残余カウント（ＤＬＲＣ）フィールド、および、前記ＴＣＣＢ内のＢＲＤＬフィールド値と前記制御ユニットによって送信される入力データ量との間の差異を指定するＢＲＤＬ残余カウントを含み、前記チャネル・サブシステムが、
前記ＤＬＲＣ値が、前記ＴＣＣＢ内の前記ＤＬフィールド値と前記制御ユニットに送信される出力データの量との間の差異に合致しないこと、
ＢＲＤＬ残余カウント値が、前記ＢＲＤＬフィールド値と前記制御ユニットから受信する入力データ量との間の差異に合致しないこと、
のうちの少なくとも１つに応答して、エラーを認識する、請求項１６に記載の装置。
【請求項１９】
制御ユニットとの通信用に構成されたホスト・コンピュータ・システムでＩ／Ｏ動作命令によって開始される入力／出力（Ｉ／Ｏ）動作を実行する方法であって、
チャネル・サブシステムと制御ユニットとの間のリンクを初期化するために、前記ホスト・コンピュータ・システム内の前記チャネル・サブシステムによって、プロセス・ログイン（ＰＲＬＩ）要求メッセージを前記制御ユニットに送信することであって、前記ＰＲＬＩ要求メッセージは、前記チャネル・サブシステムが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、送信すること、
前記制御ユニットからＰＲＬＩ応答メッセージを受信することであって、前記ＰＲＬＩ応答メッセージは、前記制御ユニットが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、受信すること、
双方向データ転送がサポートされている旨の指示をホスト・オペレーティング・システムに提供すること、および、
前記ホスト・コンピュータ・システムから受信した前記Ｉ／Ｏ動作命令の実行に応答して、
前記ホスト・コンピュータ・システムから受信した前記Ｉ／Ｏ動作命令に関連付けられた複数のコマンドを収集することであって、前記複数のコマンドのうちの少なくとも１つは入力データ転送を指定し、前記複数のコマンドのうちの少なくとも１つは出力データ転送を指定する、収集すること、
前記複数のコマンドを前記制御ユニットに転送すること、
前記制御ユニットに転送されることになる出力データを含む少なくとも１つの出力データ・メッセージを前記制御ユニットに送信することであって、前記出力データ・メッセージは出力データ転送を指定する前記複数のコマンドのうちの少なくとも１つに関連付けられる、送信すること、および、
前記ホスト・コンピュータ・システムの主記憶内に記憶されることになる入力データを含む少なくとも１つの入力メッセージを前記制御ユニットから受信することであって、前記入力データ・メッセージは入力データ転送を指定する前記複数のコマンドのうちの少なくとも１つに関連付けられる、受信すること、
を含む方法を実行すること、
を含む、方法。
【請求項２０】
前記複数のコマンドが、それぞれがＩ／Ｏコマンドに関連付けられた複数のデバイス・コマンド・ワード（ＤＣＷ）であって、収集することが、前記Ｉ／Ｏ動作について前記ホスト・コンピュータ・システム内の前記チャネル・サブシステムで移送コマンド・ワード（ＴＣＷ）を取得することを含み、前記ＴＣＷが、前記ホスト・コンピュータ・システムの前記主記憶内にＴＣＣＢのアドレスを含む移送コマンド制御ブロック（ＴＣＣＢ）アドレス・フィールドを含み、前記ＴＣＣＢが前記複数のＤＣＷを含み、前記ＤＣＷの少なくとも１つが入力データ転送を指定し、前記ＤＣＷの少なくとも１つが出力データ転送を指定する、請求項１９に記載の方法。
【請求項２１】
前記指示が、第１の転送準備済み使用不能条件が有効であるかどうかを指定するように構成され、
前記第１の転送準備済み使用不能条件が有効であることに応答して、前記ＴＣＣＢの転送に続いて、および前記制御ユニットからの少なくとも１つのメッセージの受信に先立ち、前記少なくとも１つの出力データ・メッセージを前記制御ユニットに送信すること、および
前記第１の転送準備済み使用不能条件が有効でないことに応答して、前記少なくとも１つの出力データ・メッセージの送信に先立ち、前記制御ユニットから前記少なくとも１つのメッセージを受信すること、
をさらに含む、請求項２０に記載の方法。
【請求項２２】
前記ＴＣＣＢが前記制御ユニットに送信される移送コマンド情報ユニット（ＩＵ）内に含まれ、前記移送コマンドＩＵが移送コマンド・ヘッダ（ＴＣＨ）を含み、前記ＴＣＨが、前記チャネル・サブシステムが双方向データ転送を要求しているかどうかを示すフィールドを含む、請求項２０に記載の方法。
【請求項２３】
前記ＴＣＣＢが、転送されることになる出力データ量を指定する書き込みデータ長さ（ＤＬ）フィールド、および転送されることになる入力データ量を指定する双方向読み取りデータ長さ（ＢＲＤＬ）フィールドを含む、請求項２２に記載の方法。
【請求項２４】
前記制御ユニットが双方向データ動作をサポートしていないことに応答して、前記Ｉ／Ｏ動作が終了したことを示す移送応答メッセージを前記制御ユニットから受信することをさらに含み、前記移送応答メッセージが、
前記制御ユニットが、前記ＴＣＨ内の読み取り（Ｒ）ビットおよび書き込み（Ｗ）ビットの両方が１に設定されること、および前記ＴＣＣＢが前記ＢＲＤＬを含まないことを検出すること、および
前記制御ユニットが、前記ＴＣＨ内のＲビットおよび書き込みＷビットの両方が１に設定されること、および前記制御ユニットが双方向データ転送をサポートしていないことを検出すること、
のうちの少なくとも１つに応答して、ＴＣＨコンテンツ・エラー指示を含む、請求項２３に記載の方法。
【請求項２５】
前記Ｉ／Ｏ動作が終了したことを示す移送応答メッセージを前記制御ユニットから受信することをさらに含み、前記移送応答メッセージが、前記ＴＣＣＢ内のＤＬフィールド値と前記制御ユニットによって受信された出力データ量との間の差異を指定するデータ長さ残余カウント（ＤＬＲＣ）フィールド、および、前記ＴＣＣＢ内のＢＲＤＬフィールド値と前記制御ユニットによって送信される入力データ量との間の差異を指定するＢＲＤＬ残余カウントを含み、前記チャネル・サブシステムが、
前記ＤＬＲＣ値が、前記ＴＣＣＢ内の前記ＤＬフィールド値と前記制御ユニットに送信される出力データの量との間の差異に合致しないこと、
ＢＲＤＬ残余カウント値が、前記ＢＲＤＬフィールド値と前記制御ユニットから受信する入力データ量との間の差異に合致しないこと、
のうちの少なくとも１つに応答して、エラーを認識する、請求項２２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に入力／出力（Ｉ／Ｏ）処理に関し、特に、移送モードのＩ／Ｏ動作を容易にするための機能を提供することに関する。
【背景技術】
【０００２】
入力／出力（Ｉ／Ｏ）動作が、Ｉ／Ｏ処理システムのメモリとＩ／Ｏデバイスとの間でデータを転送するために使用される。具体的には、Ｉ／Ｏ動作を実行することにより、データがメモリから１つまたは複数のＩ／Ｏデバイスに書き込まれ、データが１つまたは複数のＩ／Ｏデバイスからメモリに読み取られる。
【０００３】
Ｉ／Ｏ動作の処理を容易にするために、Ｉ／Ｏ処理システムのＩ／Ｏサブシステムが採用される。Ｉ／Ｏサブシステムは、Ｉ／Ｏ処理システムの主メモリおよびＩ／Ｏデバイスに結合され、メモリとＩ／Ｏデバイスとの間の情報の流れを指示する。Ｉ／Ｏサブシステムの一例がチャネル・サブシステムである。チャネル・サブシステムは、チャネル経路を通信媒体として使用する。各チャネル経路が制御ユニットに結合されたチャネルを含み、さらにこの制御ユニットは１つまたは複数のＩ／Ｏデバイスに結合される。
【０００４】
チャネル・サブシステムおよびＩ／Ｏデバイスは、Ｉ／Ｏデバイスとメモリとの間でデータを転送するための１つまたは複数のコマンド制御ブロックの転送をサポートする、移送モードで動作し得る。移送制御ワード（ＴＣＷ）が、実行されることになる１つまたは複数のＩ／Ｏコマンドを指定する。あるＩ／Ｏ動作を開始するコマンドの場合、ＴＣＷは、その動作に関連付けられたメモリ領域、その領域との間の転送が完了すると必ず実行される動作、および他のオプションを指定する。
【０００５】
こうしたＩ／Ｏ動作システムは、典型的には、個々の動作を入力データ動作（たとえば読み取り動作）または出力データ動作（たとえば書き込み動作）のいずれかとして処理することに関係する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願第１２／０３０９１２号
【非特許文献】
【０００７】
【非特許文献１】「ＩＢＭ（登録商標）  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、出版番号ＳＡ２２−７８３２−０８、第９版、２０１０年８月
【非特許文献２】「Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ：Ｌｉｎｋ  Ｓｅｒｖｉｃｅｓ（ＦＣ−ＬＳ−２）」、Ｔ１１  Ｐｒｏｊｅｃｔ  ２１０３−Ｄ、改訂版２．００、２００８年６月２６日
【発明の概要】
【発明が解決しようとする課題】
【０００８】
これらのシステムは、典型的には双方向動作をサポートしておらず、特に、双方向サポートの指示を生成または転送するための機能を含まない。
【課題を解決するための手段】
【０００９】
実施形態が、制御ユニットとの通信用に構成されたホスト・コンピュータ・システムでＩ／Ｏ動作命令によって開始される入力／出力（Ｉ／Ｏ）動作を実行するためのコンピュータ・プログラム製品を含む。コンピュータ・プログラム製品は、チャネル・サブシステムと制御ユニットとの間のリンクを初期化するために、ホスト・コンピュータ・システム内のチャネル・サブシステムによって、プロセス・ログイン（ＰＲＬＩ）要求メッセージを制御ユニットに送信することであって、ＰＲＬＩ要求メッセージは、チャネル・サブシステムが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、送信すること、制御ユニットからＰＲＬＩ応答メッセージを受信することであって、ＰＲＬＩ応答メッセージは、制御ユニットが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、受信すること、双方向データ転送がサポートされている旨の指示をホスト・オペレーティング・システムに提供すること、および、ホスト・コンピュータ・システムから受信したＩ／Ｏ動作命令の実行に応答して、方法を実行すること、を含む方法を実行するために、処理回路によって読み取り可能であり、処理回路による実行のための命令を記憶する、有形記憶媒体を含む。方法は、ホスト・コンピュータ・システムから受信したＩ／Ｏ動作命令に関連付けられた複数のコマンドを収集することであって、複数のコマンドのうちの少なくとも１つは入力データ転送を指定し、複数のコマンドのうちの少なくとも１つは出力データ転送を指定する、収集すること、複数のコマンドを制御ユニットに転送すること、制御ユニットに転送されることになる出力データを含む少なくとも１つの出力データ・メッセージを制御ユニットに送信することであって、出力データ・メッセージは出力データ転送を指定する複数のコマンドのうちの少なくとも１つに関連付けられる、送信すること、および、ホスト・コンピュータ・システムの主記憶内に記憶されることになる入力データを含む少なくとも１つの入力メッセージを制御ユニットから受信することであって、入力データ・メッセージは入力データ転送を指定する複数のコマンドのうちの少なくとも１つに関連付けられる、受信すること、を含む。
【００１０】
別の実施形態が、制御ユニットとの通信用に構成されたホスト・コンピュータ・システムでＩ／Ｏ動作命令によって開始された入力／出力（Ｉ／Ｏ）動作を実行するための装置を含む。ホスト・コンピュータ・システムは、チャネル・サブシステムと制御ユニットとの間のリンクを初期化するために、ホスト・コンピュータ・システム内のチャネル・サブシステムによって、プロセス・ログイン（ＰＲＬＩ）要求メッセージを制御ユニットに送信することであって、ＰＲＬＩ要求メッセージは、チャネル・サブシステムが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、送信すること、制御ユニットからＰＲＬＩ応答メッセージを受信することであって、ＰＲＬＩ応答メッセージは、制御ユニットが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、受信すること、双方向データ転送がサポートされている旨の指示をホスト・オペレーティング・システムに提供すること、および、ホスト・コンピュータ・システムから受信したＩ／Ｏ動作命令の実行に応答して方法を実行することであって、この方法は、ホスト・コンピュータ・システムから受信したＩ／Ｏ動作命令に関連付けられた複数のコマンドを収集することであって、複数のコマンドのうちの少なくとも１つは入力データ転送を指定し、複数のコマンドのうちの少なくとも１つは出力データ転送を指定する、収集すること、複数のコマンドを制御ユニットに転送すること、制御ユニットに転送されることになる出力データを含む少なくとも１つの出力データ・メッセージを制御ユニットに送信することであって、出力データ・メッセージは出力データ転送を指定する複数のコマンドのうちの少なくとも１つに関連付けられる、送信すること、および、ホスト・コンピュータ・システムの主記憶内に記憶されることになる入力データを含む少なくとも１つの入力メッセージを制御ユニットから受信することであって、入力データ・メッセージは入力データ転送を指定する複数のコマンドのうちの少なくとも１つに関連付けられる、受信することを含む、実行することを、実行するように構成される。
【００１１】
別の実施形態が、制御ユニットとの通信用に構成されたホスト・コンピュータ・システムでＩ／Ｏ動作命令によって開始される入力／出力（Ｉ／Ｏ）動作を実行する方法を含む。方法は、チャネル・サブシステムと制御ユニットとの間のリンクを初期化するために、ホスト・コンピュータ・システム内のチャネル・サブシステムによって、プロセス・ログイン（ＰＲＬＩ）要求メッセージを制御ユニットに送信することであって、ＰＲＬＩ要求メッセージは、チャネル・サブシステムが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、送信すること、制御ユニットからＰＲＬＩ応答メッセージを受信することであって、ＰＲＬＩ応答メッセージは、制御ユニットが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、受信すること、双方向データ転送がサポートされている旨の指示をホスト・オペレーティング・システムに提供すること、および、ホスト・コンピュータ・システムから受信したＩ／Ｏ動作命令の実行に応答して方法を実行することであって、この方法は、ホスト・コンピュータ・システムから受信したＩ／Ｏ動作命令に関連付けられた複数のコマンドを収集することであって、複数のコマンドのうちの少なくとも１つは入力データ転送を指定し、複数のコマンドのうちの少なくとも１つは出力データ転送を指定する、収集すること、複数のコマンドを制御ユニットに転送すること、制御ユニットに転送されることになる出力データを含む少なくとも１つの出力データ・メッセージを制御ユニットに送信することであって、出力データ・メッセージは出力データ転送を指定する複数のコマンドのうちの少なくとも１つに関連付けられる、送信すること、および、ホスト・コンピュータ・システムの主記憶内に記憶されることになる入力データを含む少なくとも１つの入力メッセージを制御ユニットから受信することであって、入力データ・メッセージは入力データ転送を指定する複数のコマンドのうちの少なくとも１つに関連付けられる、受信することを含む、実行すること、を含む。
【００１２】
追加の機能および利点は、本実施形態の技法を介して実現される。他の実施形態および態様が本明細書で説明され、請求された本発明の一部とみなされる。本発明を利点および機能と共により良く理解するために、説明および図面を参照されたい。
【００１３】
本発明とみなされる対象が具体的に指摘され、本明細書の結びにある特許請求の範囲で明確に請求される。本発明の前述および他の目的、機能、および利点は、添付の図面に関連して説明される以下の詳細な説明から明らかとなろう。
【図面の簡単な説明】
【００１４】
【図１】本発明の１つまたは複数の態様を組み込むおよび使用するＩ／Ｏ処理システムの一実施形態を示す図である。
【図２】移送制御ワード（ＴＣＷ）の一実施形態を示す図である。
【図３】移送コマンド制御ブロック（ＴＣＣＢ）の一実施形態を示す図である。
【図４】図３のＴＣＣＢを含む移送コマンド情報ユニット（ＩＵ）の一実施形態を示す図である。
【図５】図４の移送コマンドＩＵの移送コマンド・ヘッダの一実施形態を示す図である。
【図６】図４のＴＣＣＢの移送コマンド領域ヘッダ（ＴＣＡＨ）の一実施形態を示す図である。
【図７】図４のＴＣＣＢの移送コマンド領域（ＴＣＡ）の一実施形態を示す図である。
【図８】単方向データ転送動作に関する様々なデータ・カウントの例示的決定を示す表である。
【図９】双方向データ転送動作に関する様々なデータ・カウントの例示的決定を示す表である。
【図１０】デバイス・コマンド・ワード（ＤＣＷ）の一実施形態を示す図である。
【図１１】図１０のＤＣＷの制御フラグ・フィールドの一実施形態を示す図である。
【図１２】移送コマンド領域拡張（ＴＣＡＸ）の一実施形態を示す図である。
【図１３】ＣＢＣオフセット・ブロックの一実施形態を示す図である。
【図１４】移送モードＩ／Ｏ動作を実行する方法の一実施形態を示す流れ図である。
【図１５】チャネルと制御ユニットあるいはＩ／Ｏデバイスまたはその両方との間の入力および出力データの移送に使用される、移送データＩＵの一実施形態を示す流れ図である。
【図１６】移送応答ＩＵの一実施形態を示す図である。
【図１７】図１６の移送応答ＩＵの状況領域の一実施形態を示す図である。
【図１８】例示的プロセス・ログイン（ＰＲＬＩ）要求の構成要素を示す図である。
【図１９】例示的ＰＲＬＩ応答の構成要素を示す図である。
【図２０】チャネル・サブシステムからホスト・コンピュータ・システムＯＳに提供される例示的チャネル経路記述ブロックを示す図である。
【図２１】チャネル・サブシステム機能データを含む、図２０の記述ブロックの例示的チャネル記述データを示す図である。
【発明を実施するための形態】
【００１５】
本発明の実施形態が、コンピュータ・システムにおける入力／出力（Ｉ／Ｏ）処理を容易にする。一実施形態では、Ｉ／Ｏ動作およびチャネル経路を介したデータの移送を管理するために移送コマンドが提供される。移送コマンドは、データ転送チェックおよび追加ＤＣＷの転送を管理するために使用されるコマンド転送メタ情報（ＴＣＭＩ）を含み得る。ＴＣＭＩは、Ｉ／Ｏ動作において転送されることになるデータに関する情報を定義、指定、および検証するために、１つまたは複数のデータ移送情報ユニット（ＩＵ）内で定義される。移送コマンドは、問い合わせコマンド、ＣＢＣオフセット・ブロック転送（ＴＣＯＢ）コマンド、およびＴＣＡ拡張転送（ＴＴＥ）コマンドを含み得る。
【００１６】
一実施形態では、ホスト・コンピュータがＩ／Ｏ動作用のデバイスに送信できるコマンド数を増加可能にすることにより、Ｉ／Ｏ処理が容易になる。たとえば移送コマンド領域拡張（ＴＣＡＸ）の形のＴＣＭＩをホストからデバイスに送信して、Ｉ／Ｏ動作に関連付けることが可能なコマンド数の数を増加させることができる。一実施形態では、ＴＣＡＸは、移送コマンド領域拡張（ＴＣＡ）内で送信されるコマンドに加えて実行されることになるコマンドを含む、ＴＣＡ拡張転送（ＴＴＥ）と呼ばれるデバイス・コマンド・ワード（ＤＣＷ）を介して送信される。
【００１７】
Ｉ／Ｏ処理は、誤り長さ記録に遭遇した場合、Ｉ／ＯデバイスがＩ／Ｏ動作を続行する際に使用できる手段を提供することによっても容易にできる。たとえば、ＤＣＷ誤り長さ機構を、ホスト・システムおよび制御ユニットまたは制御デバイス内にインストールし得る。この機構は、制御ユニットによって実行され得る、誤り長さ（ＩＬ）チェックを提供する。誤り長さ抑制または抑制長さ指示（ＳＬＩ）フィールドは、デバイスに送信されるＤＣＷに追加し得る。このビットが活動化された場合、制御ユニットによって誤り長さ条件が検出されると、ＤＣＷチェイニングの続行が許可される。
【００１８】
Ｉ／Ｏ処理は、単一Ｉ／Ｏ動作中に読み取りコマンドおよび書き込みコマンドの両方をデバイスに送信するための手段を提供することによっても容易にできる。従来技術のＴＣＷチャネル・プログラムは、すべての書き込みコマンドまたはすべての読み取りコマンドのいずれかを指定する。双方向動作は、コマンドＩＵの移送コマンド・ヘッダ（ＴＣＨ）内に１つまたは複数のフラグを設定することによって、たとえば、読み取りフラグおよび書き込みフラグの両方を１に設定すること、ならびに読み取りおよび書き取りの両方のデータ・カウントを提供することによって、指定可能である。加えて、プロセス・ログイン（ＰＲＬＩ）要求メッセージなどの開始またはログイン・メッセージ内のフラグは、チャネル・サブシステムが双方向データ転送をサポートすることを示すように設定可能である。ＰＲＬＩ受け入れメッセージなどの応答メッセージは、デバイスが双方向データ転送をサポートしているかどうかを示すように設定可能なフラグを含むことができる。双方向データ転送がホストおよび制御ユニットの両方によってサポートされている場合、デバイスは、コマンドＩＵ内に読み取りフラグおよび書き込みフラグの両方が設定されている場合にエラーを報告しない。この機能は、双方向データ転送動作をサポートしていない従来技術のファイバー・チャネル・プロトコルを超える改良点である。本明細書に記述される場合、「双方向データ転送」とは、たとえば、単一のＴＣＷ  Ｉ／Ｏ動作内での読み取りコマンドおよび書き込みコマンドの両方の送信および実行など、単一のＴＣＷ  Ｉ／Ｏ動作内で実行される入力データおよび出力データの両方の転送である。
【００１９】
図１は、インターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ（登録商標））によるｚＳｅｒｉｅｓ（登録商標）メインフレーム・コンピュータなどの、データ記憶システムあるいはデータ処理システムまたはその両方を含むホスト・コンピュータ・システム１０２を含む、Ｉ／Ｏ処理システム１００の例示的実施形態を示す。ＩＢＭは、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で使用される他の名前は、インターナショナル・ビジネス・マシーンズ・コーポレーションまたは他の会社の登録商標、商標、または製品名とすることができる。ホスト・コンピュータ・システム１０２は、様々な処理、記憶、および通信の要素を含む。一実施形態では、ホスト・コンピュータ・システム１０２は、１つまたは複数の中央処理ユニット（ＣＰＵ）１０４、主記憶またはメモリ１０６などのメモリ構成要素、拡張記憶またはメモリ１０８、ＣＰＵ１０４のうちの１つまたは複数によって実行される１つまたは複数のオペレーティング・システム（ＯＳ）１１０を含む。たとえば、１つのＣＰＵ１０４が、異なる仮想マシン・インスタンスとしてＬｉｎｕｘ（登録商標）オペレーティング・システム１１０あるいはｚ／ＯＳ（登録商標）オペレーティング・システム１１０を実行することができる。ＣＰＵ１０４はＩ／Ｏ処理システム１００の制御センターである。これは、命令の実行、割り込み動作、タイミング機能、初期プログラム・ローディング、および他のマシン関係機能に関する順序付け機構および処理機構を含む。ＣＰＵ１０４は、双方向バスまたは単一方向バスなどの接続１１３を介して、主メモリ１０６あるいは拡張メモリ１０８またはその両方に結合される。
【００２０】
ホスト・コンピュータ・システム１０２は、ホスト・システム１０１と１つまたは複数の制御ユニット１１８によって制御され得る様々なＩ／Ｏデバイス１１６との間に通信インターフェースを提供する、チャネル・サブシステム１１４も含む。Ｉ／Ｏデバイスは、プリンタ、磁気テープ・ユニット、直接アクセス記憶デバイス、ディスプレイ、キーボード、通信コントローラ、テレプロセッシング（ｔｅｌｅｐｒｏｃｅｓｓｉｎｇ）・デバイス、およびセンサーベース機器などの機器を含む。本明細書の説明では、「制御ユニット」および「デバイス」という用語は交換可能に使用され得るか、または制御ユニットは１つまたは複数のデバイスを含むものとみなし得る。チャネル・サブシステム１１４は、Ｉ／Ｏデバイス１１６とホスト・コンピュータ・システム１０２との間の情報の流れを指示する。これは、Ｉ／Ｏデバイスと直接通信するタスクからＣＰＵを解放し、データ処理とＩ／Ｏ処理とを同時に進行することができる。チャネル・サブシステム１１４は、バスなどの接続１２０を介して、ＣＰＵ１０４、主メモリ１０６、あるいは拡張メモリ１０８またはそれらすべてに結合される。
【００２１】
一実施形態では、チャネル・サブシステム１１４は、直列リンクまたは並列リンクなどの接続１２４を介してチャネル・サブシステム１１４を各制御ユニット１１８に接続する、それぞれの「チャネル経路」１２２を介して各Ｉ／Ｏデバイス１１６に接続される。制御ユニット１１８は、複数のチャネル経路１２２を介してチャネル・サブシステム１１４に接続され得、Ｉ／Ｏデバイス１１６は、複数の制御ユニット１１８あるいはＩ／Ｏデバイス１１６またはその両方に接続され得る。すべてにおいて、別個のＩ／Ｏデバイス１１６は複数のチャネル経路によってアクセスされ得る。チャネル経路は、並列インターフェース、直列Ｉ／Ｏインターフェース、およびＦＩＣＯＮ  Ｉ／Ｏインターフェースなどの、様々なタイプの接続を使用することができる。たとえば直列チャネル経路は、たとえばファイバ・チャネル・ファブリック内のダイナミック・スイッチ１２６などを介して制御ユニット１１８に接続された１つまたは複数の光ファイバを含み得、並列インターフェースは、いくつかの導電体または光ファイバ導体を含み得る。
【００２２】
一実施形態では、チャネル・サブシステム１１４は、１つまたは複数のチャネル経路１２２を介してそれぞれが１つまたは複数の制御ユニット１１８あるいはＩ／Ｏデバイス１１６またはその両方に接続された、１つまたは複数の別個のチャネル１２８を含む。各チャネル１２８は、ローカル・チャネル・マイクロプロセッサ１３０、および、ローカル・チャネル・マイクロプロセッサ１３０に接続されそれによるアクセスが可能なローカル・チャネル・メモリ１３２などの、処理エレクトロニクスを含む。ローカル・チャネル・メモリ１３２は、チャネル・プログラム指定、チャネル経路識別子、デバイス番号、デバイス・カウント、状況指示などの情報、ならびに、経路可用性および保留中または実行中の機能に関する情報を含み得る。
【００２３】
各チャネル１２８内には、１つまたは複数のサブチャネルも配置される。各サブチャネルは、関連付けられたＩ／Ｏデバイス１１６およびそのチャネル・サブシステム１１４への接続に関する情報を提供する、チャネル・メモリ１３２内に配置されたデータ構造である。サブチャネルは、Ｉ／Ｏ動作および関連付けられたＩ／Ｏデバイス１１６に関連する他の機能に関する情報も提供する。サブチャネルは、それによってチャネル・サブシステム１１４が、関連付けられたＩ／Ｏデバイス１１６に関する情報をＣＰＵ１０４に提供する手段である。一実施形態では、チャネル・サブシステムによって提供されるサブチャネルの数は、関連付けられたＩ／Ｏデバイス１１６へのチャネル経路１２２の数とは無関係である。たとえば、代替チャネル経路１２２を通じてアクセス可能なデバイス１１６は、依然として単一のサブチャネルによって表される。
【００２４】
各制御ユニット１１８は、１つまたは複数のＩ／Ｏデバイス１１６を動作および制御するための論理を提供し、チャネル１２８によって提供されるリンク・インターフェースへの各Ｉ／Ｏデバイス１１６の特徴を、共通の機構を使用して適応させる。共通の機構は、Ｉ／Ｏ動作の実行、Ｉ／Ｏデバイス１１６および制御ユニット１１８の状況に関する指示、チャネル経路１２２を介するデータ転送のタイミングの制御、および、あるレベルのＩ／Ｏデバイス制御を提供する。制御ユニット１１８は別々に収容され得るか、またはＩ／Ｏデバイス、チャネル・サブシステム、またはＣＰＵと物理的および論理的に統合され得る。
【００２５】
Ｉ／Ｏ処理システム１００の上記構成要素のうちの１つまたは複数については、「ＩＢＭ（登録商標）  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、出版番号ＳＡ２２−７８３２−０８、第９版、２０１０年８月で、より詳細に説明されている。
【００２６】
Ｉ／Ｏ動作は、ホスト・コンピュータ・システム１０２とＩ／Ｏデバイス１１６との間のデータの転送を含む、任意の動作として説明される。本明細書で説明される場合、Ｉ／Ｏ動作は、（一実施形態では、制御ユニット１１８を介した）チャネル・サブシステム１１４とデバイス１１６との間の通信を含み、その中で、単一コマンド（たとえばチャネル・コマンド・ワードまたはＣＣＷ）、複数コマンドを含む単一コマンド・メッセージ（たとえば、移送コマンド情報ユニットまたは移送コマンド制御ブロック（ＴＣＣＢ））、または、複数チェーン・コマンド（たとえば複数ＣＣＷ）が、チャネル・サブシステム１１４からデバイスへと送信される。Ｉ／Ｏ動作は、コマンドまたはチェーン・コマンドの受信あるいは実行またはその両方に応答して、デバイス１１６または関連付けられた制御ユニット１１８によって生成される、１つまたは複数の応答メッセージも含み得る。
【００２７】
一実施形態では、Ｉ／Ｏ動作は、デバイス１１６を用いて、デバイス１１６に関連付けられたサブチャネルを指定するＯＳ１１０によって生成されるＩ／Ｏ命令の実行によって開始される。こうした命令は、チャネル・サブシステム１１４がＩ／Ｏ動作中に様々な機能を実行するよう要求するために、パラメータをチャネル１２８またはサブチャネルに送信することによって、ＣＰＵ１０４により、ホスト・システム内で実行される。
【００２８】
たとえば、ＣＰＵ１０４は、チャネル・サブシステム１１４が、サブチャネルに関連付けられたＩ／Ｏデバイス１１６によって開始機能を実行するように要求するパラメータを、ターゲット・サブチャネルに渡すことにより、「ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ」命令を実行する。チャネル・サブシステム１１４は、デバイス１１６へのアクセス可能なチャネル経路を見つけるため、およびチャネル経路が選択された後はＩ／Ｏ動作を実行するために、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令の実行中に渡される情報を含む、サブチャネルでの情報を使用することによって、開始機能を実行する。
【００２９】
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令などの命令がＣＰＵ１０４によって実行される場合、チャネル１２８がＩ／Ｏ動作の実行を開始する。一実施形態では、チャネル・サブシステム１１４は、チャネル・サブシステム１１４とデバイス１１６あるいは制御ユニット１１８またはその両方との間の通信のために、高性能ＦＩＣＯＮ（ＨＰＦ）プロトコルの下で動作する。ＦＩＣＯＮおよびＨＰＦについては、「Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ：Ｓｉｎｇｌｅ−Ｂｙｔｅ  Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｓｅｔｓ  Ｍａｐｐｉｎｇ  Ｐｒｏｔｏｃｏｌ−４（ＦＣ−ＳＢ−４）」、Ｔ１１  Ｐｒｏｊｅｃｔ  ２１２２−Ｄ、改訂版３．００、２００９年９月２２日で、より詳細に説明されている。
【００３０】
一実施形態では、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令の実行が、動作要求ブロック（ＯＲＢ）のコンテンツをチャネル・サブシステム１１４に渡す。ＯＲＢは、１つまたは複数のコマンド・ワード（たとえば、以下でより詳細に説明されるチャネル・コマンド・ワードまたは移送コマンド・ワード）のアドレスを含むチャネル・プログラムを指定する。サブチャネル動作には２つのモードが存在する。一実施形態では、ホスト・コンピュータ・システム１０２はコマンド・モードで動作し、チャネル・コマンド・ワード（ＣＣＷ）の形でコマンド・ワードを指定する。別の実施形態では、ホスト・システムは移送モードで動作し、移送コマンド・ワード（ＴＣＷ）の形でコマンド・ワードを指定する。
【００３１】
ＦＣＸ（ファイバ・チャネル拡張）機構がインストールされ、ＴＣＷチャネル・プログラムを指定するＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令の実行の結果としてサブチャネルで開始機能が設定された場合、サブチャネルは移送モードに入ることができる。サブチャネルで開始機能がリセットされるまで、サブチャネルは移送モードのままである。その他の場合は常に、サブチャネルはコマンド・モードである。
【００３２】
コマンド・モードでは、チャネルは、単一のチャネル・コマンド・ワード、または特定シーケンスのチャネル動作を制御する順次実行される一連のチャネル・コマンド・ワードを含む、ＣＣＷチャネル・プログラムを実行する。制御ユニットは、Ｉ／ＯデバイスによるＣＣＷコマンドの復号、受け入れ、および実行によって、ＣＣＷ  Ｉ／Ｏ動作を実行する。順次実行用に配列された１つまたは複数のＣＣＷがＣＣＷチャネル・プログラムを形成し、それぞれ１つまたは複数のＩ／Ｏ動作として実行される。
【００３３】
ファイバ・チャネル拡張（ＦＣＸ）機構は、移送コマンド制御ブロック（ＴＣＣＢ）および移送状況ブロック（ＴＳＢ）を指定する移送制御ワード（ＴＣＷ）からなる移送モード・チャネル・プログラムの形成を提供する、オプション機構である。ＴＣＣＢは、デバイス・コマンド・ワード（ＤＣＷ）の形である１つまたは複数の（たとえば３０までの）Ｉ／Ｏコマンドのリストを含む、移送コマンド領域（ＴＣＡ）を含む。ＴＣＷおよびそのＴＣＣＢは、読み取り動作または書き取り動作のいずれかを指定することができる。一実施形態では、システム内にＦＣＸ双方向データ転送機構をインストールすることが可能であり、このシステムは、移送モード動作をサポートし、接続されたデバイス１１６および制御ユニット１１８が双方向データ転送をサポートしている場合、ホスト・コンピュータ・システム１０２が単一移送モードのＩ／Ｏ動作において入力データおよび出力データの両方の転送を指定できるようにする。制御ユニット１１８が双方向データ転送を認識した場合、ＴＣＷおよびそのＴＣＣＢは、デバイスに応じて読み取りデータおよび書き込みデータの両方の転送を指定することができる。
【００３４】
移送モードでは、単一の移送コマンド・ワード（ＴＣＷ）が、コマンド・モードでは別々の個々のＣＣＷではなく単一メッセージ内で送信されるＴＣＣＢのメモリ内の位置（ならびに１つまたは複数のデータ領域のメモリ１０６または１０８内の位置）を指定する。制御ユニット１１８は、ＴＣＣＢおよびそれに含まれる個々のＤＣＷの復号、受け入れ、および実行によって、移送モードのＩ／Ｏ動作を実行する。ＯＲＢがＴＣＷチャネル・プログラムを指定する場合、チャネル・サブシステム１１４は指定されたＴＣＷ内の情報を使用して、ＴＣＣＢを制御ユニット１１８に転送する。ＴＣＣＢのコンテンツは、ＴＣＣＢが制御ユニット１１８に転送された後、チャネル・サブシステム１１４によって無視され、制御ユニット１１８および関連付けられたＩ／Ｏデバイス１１６に対してのみ意味を有する。
【００３５】
例示的実施形態では、制御ユニット１１８はチャネル・プログラムの実行に応答して応答メッセージを生成する。制御ユニット１１８は、たとえばチャネル・プログラムが実行されないことをチャネル・サブシステム１１４に通知するために、限定数の通信シナリオの下でチャネル・プログラムを実行することなく応答メッセージを生成することもできる。制御ユニット１１８は、Ｉ／Ｏ通信アダプタとＩ／Ｏデバイスとの間の通信をサポートするため、ならびにチャネル・プログラム実行をサポートする、いくつかの要素を含むことができる。たとえば、制御ユニット１１８は、通信および状況監視を容易にするための１つまたは複数のキュー、タイマ、およびレジスタに加えて、メッセージを解析および処理するための制御論理を含むことができる。
【００３６】
図２は、ホスト・システム（たとえば主メモリ１０６）内に記憶され、チャネル１２８から制御ユニット１１８に転送されることになる少なくとも１つの制御ブロックを指定する、移送制御ワード（ＴＣＷ）１４０の実施形態を示す。一実施形態では、制御ブロックは、そのコンテンツが処理のために制御ユニット１１８およびＩ／Ｏデバイス１１６に移送されることになる、移送コマンド・ブロック（ＴＣＣＢ）である。ＴＣＷ１４０がＴＣＣＢを指定する場合、ＴＣＣＢは１つまたは複数のデバイス・コマンド・ワード（ＤＣＷ）および関連付けられたオプションを指定するＴＣＡを含む。データ（ＴＣＣＢ内に含まれる制御データを除く）の転送を開始するコマンドを指定するＤＣＷの場合、ＴＣＷ１４０はデータが配置されている１つまたは複数の記憶領域を指定する。
【００３７】
一実施形態では、ＴＣＡは、ＴＣＣＢ内に収容可能なものに加えて、追加のＤＣＷあるいは制御データまたはその両方を転送するために提供される、ＴＣＡ拡張転送（ＴＴＥ）コマンドを含む。ＴＴＥは、ＴＣＡ拡張（ＴＣＡＸ）を（少なくとも１つのＤＣＷを含む）制御ユニットに転送し、たとえばＴＣＣＢの最後のＤＣＷをＴＴＥの最初のＤＣＷにチェイニングすることによって関連付けられるＴＣＡの論理的拡張とみなされる。
【００３８】
再度図２を参照すると、ＴＣＷ１４０の実施形態は、６４バイト境界上に指定される６４バイト制御ブロックである。ＴＣＷは以下で説明される様々なフィールドを含む。
【００３９】
たとえばいくつかのフラグ・フィールド１４２は、入力データ、出力データ、またはＴＣＣＢの位置を特定するために、直接または間接的のいずれのデータ・アドレス指定が使用されているかを示す。出力移送間接データ・アドレス指定（ＴＩＤＡ）フィールドは、出力データが直接または間接的のいずれでアドレス指定されるかを示す。たとえば、ワード０、ＴＣＷ１４０のビット７がゼロであり、出力データが指定された場合、出力データ・アドレス・フィールド１４４は絶対記憶内の出力データ位置を指定する。ビット７が１の場合、出力データ・アドレス・フィールド１４４は、それぞれ出力記憶位置を指定するＴＩＤＡワード（ＴＩＤＡＷ）またはＴＩＤＡＷのリスト（ＴＩＤＡＬ）内の第１のＴＩＤＡＷの絶対アドレスを指定する。入力ＴＩＤＡフィールドは、入力データが直接または間接的のいずれでアドレス指定されるかを示す。たとえば、ワード０、ビット５がゼロであり、入力データが指定された場合、入力データ・アドレス・フィールド１４６は入力記憶位置（すなわち入力データが記憶されることになる場所）の絶対アドレスを指定する。ビット５が１の場合、入力データ・アドレス・フィールド１４６は、入力記憶位置を指定するＴＩＤＡＷまたはＴＩＤＡＬ内の第１のＴＩＤＡＷの絶対アドレスを指定する。移送コマンド制御ブロックＴＩＤＡ（ＴＣＣＢ−ＴＩＤＡ）フィールドは、ＴＣＣＢが直接または間接的のいずれでアドレス指定されるかを示す。たとえば、ワード０、ビット６がゼロの場合、ＴＣＣＢアドレス・フィールド１４８はＴＣＷに関するＴＣＣＢの絶対アドレスを指定し、ビット６が１の場合、ＴＣＣＢアドレス・フィールド１４８は、ＴＣＣＢの位置を指定するＴＩＤＡＷまたはＴＩＤＡＬの絶対アドレスを指定する。
【００４０】
ＴＣＷ１４０は、ＴＣＣＢのバイト単位長さを指定する移送コマンド制御ブロック長さ（ＴＣＣＢＬ）フィールド１５０も含む。たとえばＴＣＣＢＬフィールドは、その値が（たとえば単方向データ転送について２０に加えられる場合、または双方向データ転送について２４に加えられる場合）バイト単位のＴＣＣＢ長さを指定する、符号なし整数を含む。
【００４１】
読み取り動作（Ｒ）フィールド１５２は、バイト数が主メモリ１０６に転送されることを示す場合、非ゼロ（たとえばワード１のビット１４が１）である。書き込み動作（Ｗ）フィールド１５４は、バイト数が主記憶から転送されることを示す場合、非ゼロ（たとえばワード１のビット１５が１）である。Ｒフィールド１５２およびＷフィールド１５４が両方とも１である場合、ターゲット・デバイス１１６および制御ユニット１１８が双方向データ転送をサポートしていない限り、プログラム・チェック条件が認識される。Ｗビットが１でありＴＣＷが問い合わせＴＣＷである場合、プログラム・チェック条件が認識される。
【００４２】
出力データ・アドレス・フィールド１４４は、デバイスに送信されることになる任意の出力データの記憶内の位置を示す。たとえばワード１のビット１５（Ｗフィールド・ビット１５４）が１であり、フラグ・フィールド１４２のビット７（出力ＴＩＤＡフラグ）がゼロの場合、ワード２〜３は絶対記憶内の６４ビット出力位置を指定する。Ｗビットが１であり、出力ＴＩＤＡフラグが１である場合、ワード２〜３は、出力記憶位置を指定するＴＩＤＡＷまたはＴＩＤＡＷのリストの絶対記憶内の６４ビット位置を指定する。入力データ・アドレス・フィールド１４６は、デバイスから受信された場合に任意の入力データが記憶されることになる位置を示す。たとえば、ワード１のビット１４（Ｒフィールド・ビット１５２）が１であり、フラグ・フィールド１４２のビット５（入力ＴＩＤＡフラグ）がゼロの場合、ワード４〜５は、絶対記憶内の６４ビット入力位置を指定する。Ｒビットが１であり、入力ＴＩＤＡフラグが１の場合、ワード４〜５は、入力記憶位置を指定するＴＩＤＡＷまたはＴＩＤＡＷのリストの絶対記憶内の位置を指定する。
【００４３】
移送状況ブロック・アドレス１５６は、ＴＣＷに関する移送状況ブロックの記憶内の位置を指定する。たとえばワード６〜７は、ＴＣＷに関する移送状況ブロックの絶対記憶内の６４ビット位置を指定する。
【００４４】
移送コマンド制御ブロック・アドレス・フィールド１４８は、ＴＣＣＢの１つまたは複数の（直接または間接）アドレスを指定する。たとえば、ＴＣＣＢ−ＴＩＤＡビット（フラグ・フィールドのビット６）がゼロの場合、ワード８〜９はＴＣＣＢの絶対記憶内の６４ビット位置を指定する。ＴＣＣＢ−ＴＩＤＡビットがゼロの場合、ＴＣＣＢは記憶の連続領域内に常駐するように指定される。移送コマンド制御ブロックＴＩＤＡビットが１の場合、ワード８〜９は、ＴＣＣＢの絶対記憶内の位置を指定するＴＩＤＡＷまたはＴＩＤＡＷのリストの絶対記憶内の６４ビット位置を指定する。ＴＣＣＢ−ＴＩＤＡビットが１の場合、ＴＣＣＢは記憶の非連続領域内に常駐するように指定可能である。
【００４５】
出力カウント・フィールド１５８は、ＴＣＷに関する出力バイト数を指定する。たとえば、ワード１のビット１５（Ｗビット）が１の場合、ワード１０はＴＣＷに関する出力バイトの符号なし整数合計カウントを含む。入力カウント・フィールド１６０は、ＴＣＷに関する入力バイト数を指定する。たとえば、ワード１のビット１４（Ｒビット）が１の場合、ワード１１はＴＣＷに関する入力バイトの符号なし整数合計カウントを含む。
【００４６】
ＴＣＷが問い合わせ動作を指定する場合、問い合わせＴＣＷアドレス・フィールド１６２は問い合わせＴＣＷの記憶内の位置を示す。たとえば、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令がＴＣＷを指定する場合、ＴＣＷのワード１５はチェックされない。しかしながら、ＣＡＮＣＥＬ  ＳＵＢＣＨＡＮＮＥＬ命令が、ＴＣＷチャネル・プログラムに関する開始を保留し状況を保留していないサブチャネルを指定する場合、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬによって指定されたＴＣＷのワード１５のビット１〜３１は、サブチャネルについての問い合わせ動作を開始するために使用される問い合わせＴＣＷの絶対記憶内の３１ビット位置を指定する。ＣＡＮＣＥＬ  ＳＵＢＣＨＡＮＮＥＬが発行された時にワード１５がゼロを含む場合、問い合わせ動作は開始されない。ＣＡＮＣＥＬ  ＳＵＢＣＨＡＮＮＥＬが発行された場合、ワード１５のビット０はゼロでなければならず、そうでなければ問い合わせ失敗状況が示されたプログラム・チェック条件が認識される。ＣＡＮＣＥＬ  ＳＵＢＣＨＡＮＮＥＬが発行され、ワード１５のビット１〜３１がゼロを含まない場合、ワード１５のビット１〜３１は６４バイト境界上の記憶位置を指定しなければならず、そうでなければ問い合わせ失敗状況が示されたプログラム・チェック条件が認識される。ワード１４は、問い合わせＴＣＷアドレス・フィールドを６４ビットに拡張するために予約することができる。
【００４７】
図３および図４を参照すると、移送コマンド制御ブロック（ＴＣＣＢ）１７０は、ＴＣＷ  Ｉ／Ｏ動作の一部として１つまたは複数の個々のコマンドを含み、チャネル１２８によってチャネル経路を介し、制御ユニット１１８あるいはデバイス１１６またはその両方に送信される。ＴＣＣＢ１７０は、複数のメッセージまたは情報ユニットを送信しなければならないことからチャネルを解放し、さらに動作実行の責務を制御ユニットに移行して、制御ユニット１１８が各コマンドについて応答を送信する必要性を取り除く。代わりに制御ユニット１１８は、すべてのコマンドを実行し、動作の完了時に応答を送信することができる。
【００４８】
ＴＣＣＢ１７０は可変長であり、ヘッダおよびトレーラの情報、ならびに１つまたは複数の（たとえば１から３０の）コマンドを、それらが順番に制御ユニット１１８によって実行されるように論理的にリンクされた（たとえばチェイニングされた）デバイス・コマンド・ワード（ＤＣＷ）として含むことが可能である。ＴＣＣＢ１７０は連続記憶の単一ブロックとして常駐することができるか、または、非連続記憶の複数ブロックとして常駐することができる。たとえば、前述のＴＣＷ１４０内のＴＣＣＢ−ＴＩＤＡフラグは、ＴＣＣＢが連続記憶内に常駐するかどうかを指定するために使用される。
【００４９】
ＴＣＣＢの例が図３および図４に示されている。図４に示されるように、ＴＣＣＢ１７０は、Ｉ／Ｏ動作を開始するために制御ユニット１１８に送信される移送コマンド情報ユニット（ＩＵ）１７２の一部として、チャネル１２８から制御ユニット１１８へと送信可能である。一実施形態では、移送コマンドＩＵ１７２は８バイトのＳＢ−４ヘッダ１７４と、それに続く４バイトの移送コマンド・ヘッダ（ＴＣＨ）１７６、およびＴＣＣＢ１７０で構成される。ＴＣＣＢ１７０は、１６バイトの移送コマンド領域ヘッダ（ＴＣＡＨ）１７８、可変長の移送コマンド領域（ＴＣＡ）１８０、および移送コマンド領域トレーラ（ＴＣＡＴ）１８２を含む。ＴＣＡＴ１８２は、４バイトのＬＲＣフィールド１８４、４バイトのデータ転送長さ（ＤＬ）フィールド１８６、および双方向動作の場合、４バイトの双方向読み取りデータ転送長さ（ＢＲＤＬ）フィールド１８８を、さらに含むことができる。これらのフィールドについて、以下でより詳細に説明する。
【００５０】
図４を参照すると、ＳＢ−４ヘッダ１７４は、データ転送用の論理経路およびデバイス１１６を識別するためのＦＣ−４アドレス指定情報を提供する。ＳＢ−４ヘッダ１７４は、チャネル１２８と制御ユニット１１８との間の論理経路に関するチャネル・イメージＩＤおよび制御ユニットＩＤ、ならびにデバイスＩＤを含む情報を提供する。
【００５１】
図５を参照すると、ＴＣＨ１７６はＴＣＣＢ１７０および関連付けられたデバイス動作に関する情報を含む。一実施形態では、ＴＣＨ１７６は、４バイトを含み、移送コマンドＩＵ１７２内でＳＢ−４ヘッダ１７４の直後に続く。ＴＣＨ１７６は、長さフィールド（「Ｌ１」）１９０、読み取りフィールド（「Ｒ」）１９２、および書き込みフィールド（「Ｗ」）１９４などのフィールドを含む。Ｌ１フィールド（たとえばビット２４〜２９に配置される）は、ＴＣＡ１８０に、ＴＣＡ１８０直後の１ワードのＬＲＣフィールド１８４を加えた、ワード単位の長さを指定する。たとえば、双方向動作をサポートしない制御ユニット１１８の場合、移送コマンドＩＵ１７２内で転送されるデータの合計量は、Ｌ１フィールドに８を加えた結果（すなわち、ＬＩフィールドに２ワードのＳＢ−４ヘッダ、１ワードのＴＣＨ、４ワードのＴＣＡＨ、および１ワードのＤＬを加えた結果）に等しく、等しくない場合、制御ユニットはデータ・カウント・エラーによる移送コマンドＩＵ整合性エラーを認識する。双方向動作をサポートする制御ユニットの場合、移送コマンドＩＵ１７２内で転送されるデータの合計量は、Ｌ１フィールドに８を加えた結果（すなわち、ＬＩフィールドに２ワードのＳＢ−４ヘッダ、１ワードのＴＣＨ、４ワードのＴＣＡＨ、および１ワードのＤＬを加えた結果）、または、Ｌ１フィールドに９を加えた結果（すなわち、ＬＩフィールドに２ワードのＳＢ−４ヘッダ、１ワードのＴＣＨ、４ワードのＴＣＡＨ、１ワードのＤＬ、および１ワードの双方向動作用のＢＲＤＬを加えた結果）に等しく、等しくない場合、制御ユニットはデータ・カウント・エラーによる移送コマンドＩＵ整合性エラーを認識するものとする。移送コマンドＩＵ整合性エラーが認識されない場合、ＴＣＣＢ内のＬＲＣの位置はＬ１フィールドに基づいて配置され、ＬＲＣチェックが実行可能である。
【００５２】
読み取り（Ｒ）フィールド１９２は、１つまたは複数の読み取りまたは入力コマンドを含む。図５の実施形態では、Ｒフィールド１９２はＲビット、ビット３０であり、これが１に設定された場合、ＴＣＡ１８０は読み取りデータを転送する１つまたは複数のコマンドを含む。Ｒビットがゼロに設定された場合、ＴＣＡ１８０は読み取りデータを転送するいかなるコマンドも含まない。Ｒビットが１であり、Ｗビット（たとえばビット３１）がゼロである場合、この動作は読み取り動作と呼ばれる。ＲビットおよびＷビットの両方がゼロに設定された場合、ＴＣＡ１８０は読み取りまたは書き込みデータを転送するいかなるコマンドも含まず、これはＩ／Ｏ動作がデータ転送を実行しないことを示す。ＲビットおよびＷビットの両方が１に設定された場合、ＴＣＡ１８０は読み取りおよび書き込みデータの両方を転送するコマンドを含むことが可能であり、この動作は双方向動作と呼ばれる。双方向動作が指定され制御ユニット１１８が双方向動作をサポートしていないか、または制御ユニット１１８は双方向動作をサポートしているが移送コマンドＩＵ１７２がＢＲＤＬフィールド１８８を含まない場合、デバイス１１６または制御ユニット１１８は、読み取りと書き込みの競合により、ＴＣＨコンテンツ・エラーを認識する。Ｒビットがゼロであり、制御ユニット１１８またはデバイス１１６が読み取りデータの転送を試行するＴＣＡ１８０内のコマンドに遭遇した場合、無効の読み取り試行によるＴＣＣＢコンテンツ・エラーが認識される。
【００５３】
書き込み（Ｗ）フィールド１９４は、ＴＣＡ１８０が１つまたは複数の書き込みまたは出力コマンドを含むことを指定する。図５の実施形態では、ＷフィールドはＷビット、ビット３１であり、１に設定された場合、ＴＣＡ１８０が書き込みデータを転送する１つまたは複数のコマンドを含むことを示す。Ｗビットが１であり、Ｒビット（ビット３０）がゼロである場合、この動作は書き込み動作と呼ばれる。Ｗビットがゼロであり、制御ユニット１１８またはデバイス１１６が書き込みコマンドを指定するＴＣＡ１８０内のコマンドに遭遇した場合、無効の書き込み条件によるＴＣＣＢコンテンツ・エラーが認識される。
【００５４】
図６を参照すると、ＴＣＡヘッダ（ＴＣＡＨ）１７８の実施形態は、ＴＣＡ１８０ならびにＴＣＡ長さおよびデバイス指示などのそこに記載された動作に関する情報を含む。この実施形態では、ワード１のバイト３は、ＴＣＡ１８０に、ＴＣＡヘッダのワード２および３と、ＴＣＡ１８０の直後の４バイトのＬＲＣフィールド１８４とを加えた、バイト単位の長さを指定する、符号なし２進整数を含む「Ｌ２」長さフィールド１９６である。サービス・アクション・コード・フィールド１９８（たとえば、ワード２のバイト０〜１）は、ＴＣＣＢによって指定される動作のタイプを指定する符号なしの整数値を含む。たとえば、「１ＦＦＥ」の１６進値はＳＢ−４デバイスのＩ／Ｏ動作を示し、「１ＦＦＦ」の１６進値はＳＢ−４デバイス・サポート機能を示す。優先順位番号フィールド２００（たとえばワード２のバイト３）は制御ユニットのＩ／Ｏ優先順位番号を含む。
【００５５】
図７を参照すると、移送コマンド領域（ＴＣＡ）１８０は、デバイス・コマンド・ワード（ＤＣＷ）２０２として１つまたは複数の（たとえば１から３０までの）コマンドを含む可変長領域である。ＴＣＡ１８０の長さは、一実施形態では、４バイト・ワードの整数である。デバイス制御データを指定するＤＣＷ２０２の場合、ＴＣＡ１８０は各ＤＣＷ２０２に関連付けられた制御データも含む。制御データを指定する各ＤＣＷ２０２は、コマンド関連データのサイズに応じて、最大ＤＣＷ容量を１つまたは複数のＤＣＷだけ減じる。入力または出力データを指定するＤＣＷ２０２の場合、ＴＣＷ１４０は関連付けられた記憶領域を指定し、ＤＣＷは転送するバイト・カウントを指定する。一実施形態では、ＴＣＡの最大サイズは２４０バイトである。図７の実施形態に示されるように、ＴＣＡ１８０内にＤＣＷ２０２全体に対して充分なスペースが存在する場合、ＤＣＷ２０２は、前のＤＣＷ２０２または前のＤＣＷ２０２に関連付けられた制御データに続くワード境界から開始する。ＴＣＡ１８０内の最後のＤＣＷ２０２が整数のワードではない制御データを指定した場合、後続のＬＲＣフィールド１８４は制御データに続くワード境界から開始する。
【００５６】
いくつかのデバイスの場合、ＤＣＷ２０２のリストは、ＴＣＡ１８０内に収まる範囲を越えて延在する可能性がある。このような場合、ＴＣＡ拡張（ＴＣＡＸ）フィールドは、追加のＤＣＷを含むよう指定され得、ＴＣＡＸが出力データであるかのように転送（たとえば出力移送データＩＵの一部として転送）され得る。しかしながら、ＴＣＡＸは、転送データではなくＴＣＡ１８０の論理継続として扱われる。ＴＣＡＸは、転送ＴＣＡ拡張（ＴＴＥ）ＤＣＷによってＴＣＡ１８０内に指定される。ＴＣＡＸおよびＴＴＥ  ＤＣＷは以下でより詳細に説明され、ＴＣＡＸの実施形態は図１２および図１３に示される。
【００５７】
図３および図４に示されるように、ＴＣＣＢは、様々なカウント情報を含む、ＴＣＣＢに関する追加の情報を提供する移送コマンド領域トレーラ（ＴＣＡＴ）１８２を含む。一実施形態では、単方向データ転送が指定される（ＲビットまたはＷビットのいずれかが１に設定される）場合、またはデータ転送が指定されない（ＴＣＷ内のＲビットおよびＷビットの両方がゼロに設定される）場合、ＴＣＡＴ１８２は２ワード長さである。双方向データ転送が指定される（ＴＣＷ内のＲビットおよびＷビットの両方が１に設定される）場合、ＴＣＡＴ１８２は３ワード長さである。
【００５８】
たとえば、単方向データ転送が指定される場合、移送カウントまたはデータ長さ（ＤＬ）フィールド１８６は、転送されることになる合計データの３２ビット符号なし整数カウント（「移送カウント値」）を指定する。読み取り動作が指定される場合（ＴＣＷ  Ｒビットが１）、ＴＣＡＴ内の移送カウント・フィールド内の値は、それぞれが読み取りタイプのコマンドを指定するＤＣＷ２０２内のカウント・フィールド値を総和することによって決定できる。この総和は最も近い４の倍数に切り上げられ、切り上げられた総和は移送カウント値に達するまで４だけ増加される。読み取り動作が指定される場合、移送カウント値は、次の４の倍数まで切り上げられたＴＣＷ入力カウント・フィールド１６０内の値に４を加えた結果に等しいはずである。
【００５９】
書き込み動作が指定される場合（ＴＣＷ内のＷビットが１）、書き込みコマンドを指定するＤＣＷ２０２内のカウント・フィールド値が総和される。加えて、移送コマンド・メタ情報（ＴＣＭＩ）の転送を指定するすべての移送コマンドＤＣＷ内のカウント・フィールド値（以下で詳細に説明）に、ＴＣＭＩ内の予約済みフィールドのサイズを加えた結果が、合計に加えられる。（ＴＣＭＩ予約済みフィールドのサイズはゼロであってよいことに留意されたい。）任意のＴＩＤＡＷ指定制御ブロック・チェック（ＣＢＣ）または巡回冗長検査（ＣＲＣ）バイトおよびパディング・バイトのカウントの合計が、総和に追加される。この総和は最も近い４の倍数に切り上げられ、切り上げられた総和は移送カウント値を得るように４だけ増加される。書き込み動作が指定される場合、移送カウント値は、次の４の倍数まで切り上げられたＴＣＷ出力カウント・フィールド１５８内の値に４を加えた結果に等しいはずである。読み取りまたは書き込みのどちらの動作も指定されない（ＴＣＷ内のＷビットおよびＲビットの両方がゼロである）場合、移送カウント値はゼロのはずである。
【００６０】
双方向データ転送が指定される場合、ＤＬフィールド１８６は書き込みカウントであり、転送されることになる合計出力データの３２ビット符号なし整数カウントを指定する。ＴＣＡＴ１８２内のＤＬフィールド（書き込みカウント・フィールド）内の移送カウント値は、前述の書き込み動作の場合と同様に決定される。双方向読み取りデータ長さ（ＢＲＤＬ）フィールド１８８は、転送されることになる合計入力データの３２ビット符号なし整数カウントを指定する。ＢＤＲＬフィールド１８８の移送カウント値は、前述の読み取り動作の場合と同様に決定される。
【００６１】
一実施形態では、書き込み動作または双方向動作の場合、ＤＬフィールドは、チャネルによって動作のために制御ユニットに転送されることになるバイト数を指定し、すべての中間および最終パッドおよびＣＲＣバイトを含む、４バイト符号なし２進整数を含むものとし、ＣＯＢが書き込み動作の第１の移送データＩＵ内に含まれる場合、ＣＯＢ、任意のＣＯＢパッド・バイト、およびＣＯＢ  ＣＲＣバイトも含む。ＴＴＥ  ＤＣＷがＴＣＡ内に存在する場合、ＤＬフィールドはＴＣＡＸ、任意のＴＣＡＸパッド・バイト、およびＴＣＡＸ  ＣＲＣバイトも含む。
【００６２】
図８および図９は、それぞれ単方向および双方向の転送のための、ＴＣＷ入力カウント、出力カウント、およびＴＣＡＴ移送カウント値の決定をまとめた表である。
【００６３】
双方向動作の場合、送方向読み取りデータ長さ（ＢＲＤＬ）フィールドは、制御ユニットによって動作の為のチャネルに転送されることになるバイト数を指定し、まだワード境界上にない場合はワード境界に丸めるために必要な任意のパッド・バイトに、ＣＲＣに関する４バイトを加えた結果を含む、４バイト符号なし２進整数を含む。双方向動作でない動作の場合、デバイスは、移送コマンドＩＵがＢＲＤＬフィールドを含む場合、読み取りと書き込みの競合により、ＴＣＨコンテンツ・エラーを認識するものとする。
【００６４】
図１０を参照すると、デバイス・コマンド・ワード（ＤＣＷ）２０２が、実行されることになるコマンドを指定する。コマンドがあるＩ／Ｏ動作を開始する場合、動作が実行されるバイトのカウント、記憶との間で転送が完了すると必ず実行されるアクション、および他のオプションを指定する。ＤＣＷデータ転送動作に関連付けられた記憶領域は、コマンドによって指定される動作に応じて、ＤＣＷ２０２を含むＴＣＣＢ１７０を指定するＴＣＷ１４０の入力データ・アドレス・フィールド１４６または出力データ・アドレス・フィールド１４４によって指定される。入力データ・アドレス・フィールド１４６または出力データ・アドレス・フィールド１４４が記憶を直接または間接的のいずれで指定するかは、ＴＣＷ１４０内の入力ＴＩＤＡフラグおよび出力ＴＩＤＡフラグによって指定される。
【００６５】
一実施形態では、ＤＣＷ２０２は、ワード境界上のＴＣＷ１４０内に指定される８バイト制御ブロックである。ＤＣＷ２０２は、コマンド・コード・フィールド２０４、制御フラグ・フィールド２０６、制御データ・カウント２０８、およびＤＣＷデータ・カウント２１０などのフィールドを含む。
【００６６】
コマンド・コード・フィールド２０４（たとえばワード０のビット０〜７）は、実行されることになる動作を指定する。コマンドが有効かどうかはデバイスに依存し、ＴＣＡＨ  １７８内のサービス・アクション・コード・フィールド１９８の値に依存する。基本のコマンドは、読み取り、書き込み、制御、感知、および移送を含む。チャネル・サブシステム１１４は、制御、順方向出力（書き込み）、順方向入力（読み取り、感知、感知ＩＤ）、逆方向入力（逆方向読み取り）、分岐（チャネル内転送）、および移送の、動作を区別する。いくつかのコマンドは、実行された場合、結果としてデータを転送しないが、デバイスをチェイニングさせ、コマンドのチェイニングに関するすべての条件が満たされた場合、次のコマンドの実行を開始させる。それぞれの基本動作について、以下で説明する。
【００６７】
読み取りコマンドは、デバイスからチャネルへのデータ転送を実行するデバイス動作の実行を開始する。書き込みコマンドは、チャネルからデバイスへのデータ転送を実行するデバイス動作の実行を開始する。制御コマンドは、ＤＣＷ内に提供された制御データを使用するデバイス動作の実行を開始する。感知コマンドは、データが記録ソースからではなく感知指示から取得される点を除いて、読み取りコマンドと同様である。制御コマンドおよび関連付けられた制御データは、特定のＩ／Ｏデバイスの管理およびＩ／Ｏコマンド実行中のデバイスの制御のために提供される。移送コマンドは、チャネル経路を介したＩ／Ｏ動作およびデータの転送を管理するために提供され、デバイス特有ではない。こうしたコマンドは、巡回冗長検査（ＣＲＣ）データおよび移送データＩＵ内の追加のＤＣＷの移送などの、制御ブロック・チェック・データの移送を管理する。
【００６８】
制御データ（ＣＤ）カウント・フィールド２０８は、ＤＣＷ２０２に関連付けられた制御データ・バイトの数を指定する。たとえばワード０のバイト３は、バイト単位で制御データの長さを指定する。コマンド・コードが制御データを必要とするコマンドを指定し、ワード０のバイト３がコマンドに必要なカウントより少ない制御データ・カウントを指定した場合、ユニット・チェック条件またはＴＣＣＢコンテンツ・エラーが認識される。コマンド・コードが制御データを必要とするコマンドを指定し、ワード０のバイト３がゼロを含むか、またはＴＣＡの終わりを過ぎた（または指定されたＴＣＡＸの終わりを過ぎた）データを指定する値を含む場合、デバイス検出プログラム・チェック条件またはＴＣＣＢカウント・エラーが認識される。
【００６９】
ＤＣＷデータ・カウント・フィールド２１０は、現在のＤＣＷ２０２に対してＴＣＷによって指定されるデータ（読み取りまたは書き込み動作のために転送されることになるデータ、すなわち顧客データ）のバイト・カウントを指定する。たとえば、ＤＣＷデータ・カウントは、図１０のＤＣＷ２０２のワード１に含まれ、このＤＣＷについてＴＣＷによって指定される記憶領域内のバイトの３２ビット符号なし整数カウントを指定する。ＤＣＷデータ・カウント・フィールド２１０は、いずれのパッドまたはＣＲＣバイトも含まない、ＤＣＷの実行中にチャネルと制御ユニットとの間で転送されることになるバイト数を示す。
【００７０】
図１１を参照すると、一実施形態では、ＤＣＷ２０２は様々な制御フラグ２０６を含む。チェーン・コマンド（ＣＣ）フラグ２１２は、コマンドのチェイニングを実行するための目的を指定する。現行のデバイス動作の通常の完了時、およびデバイスでのデバイス・エンドの認識後、コマンドのチェイニングによってＴＣＡ１８０内の次のＤＣＷ２０２が実行される。ＴＣＡ内の最後のＤＣＷ内で、ＣＣフラグ２１２はゼロに設定される。図１０の実施形態では、ワード０のビット９（ＣＣビット）が１の場合、コマンドのチェイニングを指定する。１の場合、現行のＤＣＷの通常の完了時に、ビットは次のＤＣＷによって指定された動作を開始させる。制御データ・カウントがゼロの場合、次のＤＣＷはＴＣＡまたはＴＣＡＸ内のＤＣＷの直後に続く。制御データ・カウントがゼロでない場合、次のＤＣＷは、ワード境界に丸められＤＣＷ用に指定された制御データの直後に続く。チェーン・コマンド・フラグが１の場合、一実施形態では、ＴＣＡ内またはＴＣＡＸ内の次のＤＣＷ位置は、８およびＣＤカウント・フィールド内の値を現行ＤＣＷの位置に追加すること、および、最も近いワード境界に切り上げることによって、決定される。ＴＣＡ内のＤＣＷ内でチェーン・コマンド・フラグが１であり、次のＤＣＷ位置がＴＣＡの終わりを過ぎており、ＴＣＡＸが指定されている場合、次のＤＣＷは指定されたＴＣＡＸの始めにある。
【００７１】
一実施形態では、制御フラグ・フィールドは抑制長さ指示（ＳＬＩ）フィールド２１４を含む。ＤＣＷ誤り長さ機構がチャネル１２８および制御ユニット１１８によってサポートされている場合、コマンド・チェイニングが誤り長さ条件で発生するかどうか、および、誤り長さ条件が制御ユニット１１８によって検出された場合に誤り長さが制御ユニットによって移送応答ＩＵ内に示されるかどうかを制御するビット（たとえばビット２）が、ＳＬＩフラグ・フィールド２１４内に提供される。ＤＣＷデータ・カウントが書き込みＤＣＷのためのデバイスによって必要とされるデータ量に一致しない場合、または、ＤＣＷデータ・カウントが読み取りＤＣＷのためのデバイスで使用可能なデータ量に一致しない場合、制御ユニットによって誤り長さ条件が検出される。ＤＣＷ誤り長さ機構がチャネルおよび制御ユニットによってサポートされていない場合、ビット２が予約され、チャネルによってゼロに設定され、制御ユニットによって無視される。ＳＬＩフラグ２１４が１であり、現行のＤＣＷについて誤り長さ条件が存在する場合、示されていればコマンド・チェイニングが許可されるものとし、制御ユニットは次に続くＤＣＷの実行を続行する。ＳＬＩフラグがゼロであり、ＤＣＷについて誤り長さ条件が存在する場合、示されていればコマンド・チェイニングは許可されず、制御ユニット１１８はＩ／Ｏ動作を中止する。ＤＣＷ２０２について誤り長さ条件が存在し、ＤＣＷ内のＳＬＩフラグ２１４が１に設定された場合、以下で説明するようにデータ転送が実行され、そうでなければ動作は終了され、その動作について異常終了条件が報告されるものとする。
【００７２】
読み取りＤＣＷ２０２の場合、ＤＣＷデータ・カウントがコマンドについてデバイス１１６で使用可能なデータ量よりも多い場合、以下のように適用される。ＣＣフラグ２１２が１である（チェイニングが示される）場合、デバイス１１６で使用可能なデータはチャネル１２８に転送され、ＤＣＷ２０２について転送されるデータの量がＤＣＷデータ・カウントに等しいように、パッド・バイト（ゼロに設定される）が転送される。パッド・バイトを含むすべての転送されたデータは、動作に必要なＣＲＣの任意の計算に含まれる。ＣＣフラグ２１２がゼロ（チェイニングが示されない）の場合、デバイスで使用可能なデータはチャネルに転送されるものとし、ＤＣＷについて転送されるデータの量がＤＣＷデータ・カウントに等しいように、追加のデータが転送されないかまたはパッド・バイト（ゼロに設定）が転送されるものとする。転送されるデータに任意のパッド・バイトを加えた結果が、動作に必要なＣＲＣの計算に含められるものとする。この場合、パッド・バイトが転送されるかどうかはモデルに依存する。ＤＣＷデータ・カウントがコマンドについてデバイスで使用可能なデータ量よりも少ない場合、ＤＣＷデータ・カウントに等しいデータ量のみがＤＣＷ２０２用のチャネル１２８に転送される。転送されるデータのみが、動作に必要なＣＲＣの計算に含められるものとする。
【００７３】
書き込みＤＣＷ２０２について、ＤＣＷデータ・カウントがコマンドについてデバイス１１６が必要とするデータ量よりも多い場合、以下のように適用される。ＣＣフラグ２１２が１である（チェイニングが示される）場合、ＤＣＷデータ・カウントによって指定されるデータ量が制御ユニット１１８に転送されるものとする。転送されるデータは、動作に必要な任意のＣＲＣの計算に使用されるものとし、デバイス１１６が必要としないデータは廃棄される。ＣＣフラグがゼロである（チェイニングが示されない）場合、デバイス１１６が必要とするデータ量が制御ユニット１１８に転送される。次の中間ＣＲＣワードまで、またはＤＣＷについてのデータ・カウントが使い尽くされるまで、追加のデータが転送される。転送されるすべてのデータは、動作に必要な任意のＣＲＣの計算に使用される。ＤＣＷデータ・カウントがコマンドについてデバイス１１６が必要とするデータ量よりも少ない場合、ＤＣＷデータ・カウントによって指定されるデータ量が制御ユニット１１８に転送される。転送されるデータは、動作に必要な任意のＣＲＣの計算に使用される。
【００７４】
移送コマンドＤＣＷは、特定のデータ転送コマンド（すなわち、ホスト・コンピュータ命令によって転送されるように要求される顧客データ）は指定しないが、移送モードＩ／Ｏ動作に関連付けられたサポート機能を実行する移送コマンドを指定するタイプのＤＣＷである。移送コマンドＤＣＷは制御データを指定することが可能であり、移送コマンド・メタ情報（ＴＣＭＩ）の転送も指定することができる。ＴＣＭＩは、デバイスでのＩ／Ｏ動作の状況、現行のＴＣＣＢに適合しないかまたは収容可能な追加のＤＣＷに関する情報、および、巡回冗長検査（ＣＲＣ）データなどの制御ブロック・チェック（ＣＢＣ）情報などの、Ｉ／Ｏ動作において転送機能を制御するために使用されるデータを含む。
【００７５】
移送コマンドＤＣＷがデバイスへのＴＣＭＩの転送を指定した場合、ＴＣＭＩは（たとえば移送データＩＵ内の）出力データとして転送される。ＴＣＭＩのサイズはコマンドに依存し、たとえば４の倍数である。ＴＣＭＩのサイズが４の偶数倍であり、出力記憶領域を指定するためにＴＩＤＡＷが使用され、ＴＣＭＩを含む記憶を指定するために使用される最後のＴＩＤＡＷ内の挿入ＣＢＣフラグが１であり、ＴＣＭＩを指定する移送コマンドＤＣＷ内のチェーン・コマンド・ビットが１であり、さらに後続のＤＣＷがＴＣＭＩまたは出力データの転送を指定する場合、ＴＣＭＩは予約済みの４バイトだけ拡張可能である。移送コマンドがデバイスへのＴＣＭＩの転送を指定し、前述のすべての条件が満たされたため、ＴＣＭＩが保存済みの４バイトだけ拡張される場合、保存済みの４バイトは移送コマンドＤＣＷ内のデータ・カウント値には含まれないが、ＴＣＭＩを含む記憶を指定するために使用される最後のＴＩＤＡＷ内のカウント値、ＴＣＷ内の出力カウント値、および関連付けられたＴＣＣＢ内の移送カウント値（単方向データ転送の場合、または双方向転送の場合は関連付けられたＴＣＣＢ内の書き込みカウント値）に含まれる。
【００７６】
一実施形態では、ＴＣＭＩは問い合わせ情報（問い合わせＤＣＷを介して）、ＣＢＣオフセット・ブロック（転送ＣＢＣオフセット・ブロックＤＣＷを介して）、およびＴＣＡ拡張（転送ＴＣＡ拡張ＤＣＷを介して）を含む。
【００７７】
図１２は、ＴＣＣＢ１７０のＴＣＡ１８０に含まれ、制御ユニット１１８に転送されることになるＴＣＡ拡張（ＴＣＡＸ）２２０を指定する、転送ＴＣＡ拡張（ＴＴＥ）コマンドと呼ばれる１つのタイプの移送コマンドＤＣＷによって指定されるデータの実施形態を示す。ＴＣＡＸはＴＣＡ１８０の論理拡張とみなされる。いくつかのデバイス１１６の場合、Ｉ／Ｏ動作に関連付けられたＤＣＷ２０２のリストは、ＴＣＡ１８０内に収容可能なＤＣＷの数を超える。こうしたインスタンスでは、ＴＴＥ  ＤＣＷは、（たとえばデータ移送ＩＵ内の）出力データとして転送されるＴＣＡＸ２２０を指定するＴＣＷ１４０の終わりに含めることができる。ＴＴＥ  ＤＣＷのコンテンツは、移送ＴＣＡ拡張コマンド（たとえば１６進５０の値）を含むことができる。
【００７８】
たとえば、ＴＣＡ１８０は最大サイズが２４０の可変長であり、ＤＣＷは８バイトである。したがってこの例では、ＴＣＣＢ１７０内で最大３０ＤＣＷが伝送可能である。しかしながら、制御データを必要とする制御コマンドを指定するＤＣＷ２０２の場合、制御データはＴＣＣＢ内の各ＤＣＷ２０２の直後に続く。したがって、こうしたコマンドを含むＴＣＣＢ１７０は３０ＤＣＷ未満に限定される。ＴＴＥ  ＤＣＷは、ＴＣＡ１８０に適合しないＩ／Ｏ動作に必要な追加のＤＣＷを指定するために使用できる。
【００７９】
図１２に示されるように、ＴＣＡ拡張（ＴＣＡＸ）は、別の移送コマンドＩＵまたはＴＣＣＢ内のＴＣＡ１８０の論理継続である可変長領域であり、ＤＣＷのリストおよび関連付けられた制御データを含む。ＴＣＡＸは、（初期のＴＣＣＢ内で転送されたものに加えて）ＴＣＷ  Ｉ／Ｏ動作に関する１つまたは複数の追加のＤＣＷおよび関連付けられた制御データを含み、Ｉ／Ｏ動作に必要なＤＣＷのリストを拡張するために別のＴＣＣＢ内または移送データＩＵ内で送信可能である。一実施形態では、ＴＣＡＸの長さは４の整数倍である。
【００８０】
図１２に示されるように、一実施形態では、ＴＣＡＸ２２０は、ＤＣＷ２０２あるいは前のＤＣＷ２０２についての制御データまたはその両方を含む。ＴＣＡＸ２２０内の最後の情報がＤＣＷ２０２である場合、そのＤＣＷ２０２の終わりがＴＣＡＸ２２０内の有意な情報の終わりを画定する。ＴＣＡＸ２２０内の最後の情報が制御データであり、制御データが４バイト境界上で終わる場合、制御データの終わりがＴＣＡＸ２２０内の有意な情報の終わりを画定する。ＴＣＡＸ２２０内の最後の情報が制御データであり、制御データが４バイト境界上で終わらない場合、４バイト境界に達するように制御データにパディング・バイトが付加され、パディング・バイトの終わりがＴＣＡＸ２２０内の有意な情報の終わりを画定する。４で分けられるＴＣＡＸ２２０内の有意な情報のサイズが奇数である場合、予約済みバイトは存在せず、奇数でない場合、ＴＣＡＸ２２０内の有意な情報の直後に続く４バイトは予約済みであり、ゼロを含むものとする。ＴＣＡ１８０内の最後のＤＣＷ２０２についての制御データがＴＣＡＸ２２０に含まれる場合、その制御データはＴＣＡＸ２２０内の最初のデータである。ＴＣＡＸ２２０内の追加のＤＣＷおよび制御データは、ＴＣＡ１８０に関して画定されたものとして処理される。
【００８１】
一実施形態では、ＴＣＡ１８０内にＴＣＯＢ  ＤＣＷ（以下で詳細に説明する）が存在しない場合、ＴＴＥ  ＤＣＷはＴＣＡ１８０内の最初のＤＣＷ２０２である。ＴＣＡ１８０内にＴＣＯＢ  ＤＣＷが存在する場合、ＴＴＥ  ＤＣＷはＴＣＡ１８０内の第２のＤＣＷ２０２である。ＴＴＥ  ＤＣＷデータ・カウントはＴＣＡＸ２２０の長さを指定し、４の整数倍のバイトとすることができる。ＴＴＥ  ＤＣＷ制御データ・カウントはゼロであり、ＴＴＥ  ＤＣＷ内のチェーン・コマンド・フラグは１に設定される。ＴＴＥ  ＤＣＷデータは、ＴＣＡＸ  ＣＲＣまたはＴＣＡＸパッド・バイトを含まない。
【００８２】
ＴＴＥコマンド（ＴＴＥ  ＤＣＷ）は、ＴＴＥコマンドについてのサポートを示すデバイスに送信されるものとし、ＴＣＡ長さがある最大値（たとえば６０ワード）を有し、ＴＣＡ内の最後のＤＣＷについての制御データがＴＣＡ内の最後のバイトを越えて延在するか、またはＴＣＡ長さがたとえば５８ワードより長く、１つまたは複数の追加のＤＣＷがＩ／Ｏ動作に必要である場合に、送信される。ＣＯＢが書き込み移送データＩＵ内に提供される場合、ＴＣＡＸはＣＯＢ  ＣＲＣに続くものとする。ＣＯＢが提供されない場合、ＴＣＡＸはＩ／Ｏ動作の第１の書き込み移送データＩＵ内で送信されるものとする。
【００８３】
別のタイプのＤＣＷは転送ＣＢＣオフセット・ブロック（ＴＣＯＢ）ＤＣＷであり、ＣＢＣオフセット・ブロック（ＣＯＢ）を制御ユニットに転送するコマンドである。ＣＢＣデータは、Ｉ／Ｏ動作において正しい量の入力または出力データが転送されていることを検証するために使用される、制御ブロック・チェック・データを表す。一実施形態では、ＣＢＣデータは巡回冗長検査（ＣＲＣ）データであり、ＣＯＢはＣＲＣオフセット・ブロックであり、ＴＣＯＢ  ＤＣＷは転送ＣＲＣオフセット・ブロックＤＣＷである。一般に、巡回冗長検査（ＣＲＣ）は、チャネル１２８と制御ユニット１１８との間で送信されているロー・データに対する偶発的な変更を検出するように構成された、エラー検出コードである。ＣＲＣ実行可能デバイス（たとえばチャネル１２８）は、送信または記憶されることになるデータの各ブロックについて、短い固定長の２進シーケンスを計算し、これをデータに付加して、コードワードまたは「ＣＲＣワード」を形成する。たとえば、ＣＲＣ生成が提供される場合、チャネル１２８は送信されるデータ上にＣＲＣを生成し、最後のデータ・バイトの終わりに計算された値を挿入する。ＣＲＣワードが受信されるかまたは読み取られる場合、受信側デバイス（たとえば制御ユニット１１８）は、そのチェック値をデータ・ブロックから新しく計算された値と比較するか、または同等に、コードワード全体でＣＲＣを実行して、その結果として生じるチェック値と予測される剰余定数とを比較する。チェック値が一致しない場合、ブロックは転送されるデータ内にエラーを含む。ＣＢＣデータは、本明細書の実施形態で説明されるが、そのように限定されるものではない。
【００８４】
図１３に示されるように、ＣＯＢ２２２は書き込みまたは読み取りデータ転送に関する移送データ内（たとえば移送データＩＵ内）の中間ＣＲＣワードの位置を指定する。一実施形態では、ＴＣＡ１８０内の第１のＤＣＷ２０２がＴＣＯＢコマンド、すなわちＴＣＯＢ  ＤＣＷを含む場合、ＣＯＢが提供される。中間ＣＲＣオフセットは、データ転送ＩＵ内のデータ間に配置され、ＩＵの終わりよりも前に配置される、ＣＲＣワードである。ＣＯＢ２２２は、ＣＲＣオフセット２２４と呼ばれ、それぞれが移送データ内の各中間ＣＲＣワードのバイト・オフセットを識別する、１ワード値のリストを含む。たとえばＣＯＢは、それぞれが、出力データに挿入されることになるＴＩＤＡＷによって指定されるＣＲＣのオフセットを識別する、４バイト・エントリのリストを含む可変長制御ブロックである。
【００８５】
図１３に示される実施形態では、ＣＯＢ２２２は１からＮ＋１ワード（ＣＲＣオフセット・ワード２２４）の中間ＣＲＣオフセットを含む。移送データＵＩ内にＣＯＢ２２２が提供される場合、ＣＯＢも０または１ワードのパッド・バイトおよび１ワードのＣＲＣを含むことができる。パッド・バイトは、ＣＲＣを含むワードがダブルワード境界上でないワード境界上となるように、提供可能である。ＣＯＢの最終ワードは、存在する場合は、中間ＣＲＣオフセット０からＮおよびパッド・ワードをカバーする、ＣＲＣを含むものとする。ＣＯＢがＴＣＯＢ  ＤＣＷについての制御データとして提供される場合、ＣＯＢパディングまたはＣＲＣは存在しないものとされ、制御データ・カウントはＣＯＢ内の中間ＣＲＣオフセット・フィールド数の４倍に等しいものとされる。
【００８６】
書き込み動作の場合、ＴＣＯＢ  ＤＣＷは、ＣＯＢがデバイス１１６に移送されることを指定する。ＴＣＯＢ  ＤＣＷコマンド・コードは、たとえば１６進６０の値であるＴＣＯＢコマンドを含む。ＣＯＢの位置は制御データ・カウントによって決定され、Ｉ／Ｏ動作の第１の書き込み移送データＩＵ内に、またはＩ／Ｏ動作のＴＣＯＢ  ＤＣＷに続く制御データとして、提供可能である。たとえば、ＴＣＯＢ  ＤＣＷのＣＤカウントがゼロでない場合、ＣＯＢ２２２はＴＣＡ１８０内のＴＣＯＢ  ＤＣＷの直後に続き、ＣＤカウントはＣＯＢ内のＣＲＣオフセットを４倍した数を指定する。ＣＤカウントがゼロの場合、ＣＯＢ２２２は出力データと共に転送されるＴＣＭＩとして指定され、ＣＯＢの位置はＴＣＷ１４０内の出力データ・アドレス・フィールド１４４によって指定される。
【００８７】
ＣＯＢ２２２内の各中間ＣＲＣオフセット２２４は、移送データＩＵ内のデータの第１のバイトからの相対的オフセットをバイト単位で示す。ＣＯＢ２２２が移送データＩＵ内に提供される場合、書き込み転送に関するデータの第１のバイトは、ＴＣＡＸ２２０が提供されていない場合はＣＯＢ  ＣＲＣに続く第１のバイト、または、ＴＣＡＸが提供されている場合はＴＣＡＸ  ＣＲＣに続く第１のバイトの、いずれかである。ＣＯＢがＴＣＡ１８０内にＤＣＷ制御データとして提供される場合、書き込み転送に関するデータの第１のバイトは、ＴＣＡＸ２２０が提供されていない場合は移送データＩＵ内の第１のバイト、または、ＴＣＡＸ２２０が提供されている場合はＴＣＡＸ  ＣＲＣに続く第１のバイトの、いずれかである。移送データＩＵ内に提供される場合、ＣＯＢはＩ／Ｏ動作の第１の書き込み移送データＩＵ内に提供される。
【００８８】
さらに他のタイプの移送コマンドＤＣＷは、デバイス１１６でＴＣＷ  Ｉ／Ｏ動作の状態を決定するために使用される問い合わせＤＣＷである。問い合わせコマンドは、デバイス１１６で動作を開始せず、デバイス１１６の状態に影響を与えず、デバイス１１６および関連付けられた論理経路に関連付けられた忠実さ（ａｌｌｅｇｉａｎｃｅ）をリセットしない。例示的問い合わせＤＣＷは、（１６進４０の値を含む）問い合わせコマンド・コードを含む。コマンド・コード・フィールド、カウント・フィールドおよびＣＤカウント・フィールドを例外として、ＤＣＷ内の他のすべてのフィールドはゼロを含むはずであり、そうでない場合は、デバイス検出プログラム・チェック条件である。問い合わせＤＣＷのＣＤカウントがゼロより大きい場合、問い合わせデータが指定される。
【００８９】
問い合わせ動作は、論理経路およびデバイス１１６上で実行され、デバイス１１６での動作の状態に関する情報を取得するために、進行中のＴＣＷ  Ｉ／Ｏ動作を有する。一実施形態では、問い合わせ動作についてのＴＣＣＢ１７０は、問い合わせデバイス・コマンド・コード（たとえばＸ’４０）を伴う単一ＤＣＷを含む。問い合わせ動作についてのＴＣＡＨ  １７８は、動作に関する読み取りデータ転送を指定するために１に設定されたＲビットを含むことができる。制御ユニット１１８が問い合わせコマンドを指定する移送コマンドＩＵを受け入れる場合、制御ユニット１１８で問い合わせ動作が認識される。制御ユニット１１８で問い合わせ動作が認識され、制御ユニット１１８が問い合わせコマンドを正常に実行できる場合、制御ユニット１１８は、問い合わせ移送コマンドＩＵによって指定された論理経路およびデバイス・アドレスの状態を記述する問い合わせ拡張状況を含む状況を、移送応答ＩＵ内に提供することができる。
【００９０】
図１４を参照すると、移送モードＩ／Ｏ動作を実行する方法の実施形態３００が示される。方法は、１つまたは複数のステージ３０１〜３０５を含む。一実施形態では、方法は、記述された順序でのすべてのステージ３０１〜３０５の実行を含む。しかしながらあるステージは省略可能であり、ステージは追加可能であり、またはステージの順序は変更可能である。
【００９１】
ステージ３０１で、ホスト・コンピュータ（たとえばＯＳ１１０）は、ＯＲＢをチャネル・サブシステム１１４に転送させる命令（たとえば、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ）を実行し、ＴＣＷ１４０を指定する。一実施形態では、状況の取り込みおよび指定されたＴＣＣＢ１７０の移送に特有のＴＣＷフィールドの妥当性に関するプログラム・チェック条件が、チャネル・サブシステム１１４によってチェックされ、ＴＣＣＢ１７０をＩ／Ｏデバイス１１６に移送するかどうかを決定する。こうしたプログラム・チェック条件が存在する場合、ＴＣＣＢ１７０は移送されず、プログラム・チェック条件が認識される。たとえば、ＴＣＣＢアドレス・フィールド１４８は、使用可能な記憶位置を指定することがチェックされる。ＴＣＣＢ−ＴＩＤＡフラグが１の場合、ＴＣＣＢアドレス・フィールド１４８は、クワッドワード境界上にあるアドレスを指定することもチェックされる。追加のプログラム・チェック条件について、以下でさらに詳細に説明する。
【００９２】
ステージ３０２で、チャネル１２８が、移送コマンド制御ブロック（ＴＣＣＢ）１７０などの制御ブロックおよび関連付けられたＴＣＷ１４０に関する制御情報を含む移送コマンドＩＵ１７２を、選択されたデバイス１１６に転送する場合、ＴＣＷ  Ｉ／Ｏ動作がＩ／Ｏデバイスによって（たとえば制御ユニット１１８を介して）開始される。一実施形態では、Ｉ／Ｏ動作およびデバイスの動作の実行に関連付けられた情報（たとえば、コマンド、入力データ、および出力データ）は、チャネル１２８と制御ユニット１１８との間で情報ユニット（ＩＵ）として転送される。一実施形態では、ＩＵはＳＢ−４情報ユニット（ＩＵ）の形である。
【００９３】
一実施形態では、ＩＵまたは他のメッセージは、チャネルと制御ユニットとの間で１つまたは複数の交換を介して送信される。１つはＩＵを送信するためにチャネル１２８によって使用され、１つはＩＵを送信するために制御ユニット１１８によって使用される、２つの単方向交換からなる交換ペアは、共通モードで実行されるすべてのＳＢ−４リンク制御機能およびすべてのＳＢ−４デバイス・レベル機能に必要である。移送交換と呼ばれる単一の双方向交換が、移送モードで実行されるデバイス・レベル機能に使用される。共通モードでのＳＢ−４リンク制御機能の実行中またはＳＢ−４デバイス・レベル機能の実行中に、チャネル１２８が送信するＩＵは、１つの交換に制限され、動作中にチャネルが受信するＩＵは異なる交換に制限される。チャネル１２８がＩＵを送信する交換はアウトバウンド交換と呼ばれ、チャネル１２８がＩＵを受信する交換はインバウンド交換と呼ばれる。アウトバウンド交換およびインバウンド交換の両方が、同じリンク・レベル機能またはデバイス・レベル機能の交換のためにチャネル１２８と制御ユニット１１８の間で同時に存在する場合、交換ペアが存在すると考えられ、制御ユニット１１８がチャネル１２８に接続されていると考えられる。単一接続内で実行されるチャネル・プログラムは、１つの交換ペアのみを使用する。チャネル・プログラム中に交換を閉じることによって接続が除去される場合、チャネル・プログラムを完了するために新しい交換ペアが生成される。チャネル１２８は、新しい交換（または開始ＩＵ）を非請求（ｕｎｓｏｌｉｃｉｔｅｄ）コマンドまたは非請求制御情報カテゴリとして開くＩＵを送信することによって、交換ペアを開始することができる。制御ユニット１１８は、開始ＩＵを非請求制御情報カテゴリまたは非請求データ情報カテゴリとして送信することによって、交換ペアを開始することができる。
【００９４】
移送モードで実行されるＩ／Ｏ動作の実行中にチャネルおよび制御ユニットが送信するＵＩは、移送交換と呼ばれる単一の双方向交換に制限される。チャネル１２８は、移送コマンドＩＵを非請求コマンド・カテゴリとして送信することによって、移送交換を開く（開始ＩＵ）。チャネル１２８は、それぞれが異なるデバイス１１６のため、または異なる論理経路上の同じデバイス１１６のための、複数の移送交換を開くことができる。
問い合わせ動作を実行するために、移送交換が論理経路およびその上の特定のデバイスに関してすでに存在する場合、その論理経路上の特定のデバイスのために新しい移送交換を開くことが可能であり、存在しない場合、チャネル１２８は既存の移送交換または交換ペアが閉じられるまで待機した後、論理経路上のデバイスのために新しい移送交換を開始する。
【００９５】
ステージ３０３で、制御ユニット１１８はＴＣＣＢ１７０および移送コマンドＩＵ１７２を受信し、ある条件に合致する場合、ＴＣＣＢ１７０を受け入れることができる。移送コマンドＩＵ１７２が受け入れられた場合、制御ユニット１１８でＴＣＣＢ１７０の実行が完了したものとみなされるまで、ＴＣＣＢ１７０は制御ユニット１１８で現行であるものとみなされる。エラー条件のために移送コマンドＩＵ１７２が受け入れられない場合、デバイス１１６でＴＣＣＢ１７０の実行を開始する以前にエラーが発生したことを示すように初期状況フラグが１に設定された状態で、移送応答ＩＵがチャネル１２８に戻される。制御ユニット１１８は、移送コマンドＩＵエラーを識別するために、移送応答ＩＵ（以下で説明される）内の状況フィールドおよびＩ／Ｏ拡張状況フィールド内にエラー情報を提供することができる。一実施形態では、移送コマンドＩＵ１７２が制御ユニット１１８で受け入れられるために、以下で説明される例示的条件が満たされなければならない。
１）移送コマンドＩＵが以下の整合性チェックを満たす。
ａ）双方向動作をサポートしない制御ユニットの場合、ＴＣＨ内のＬＩフィールドに８を加えた結果が、移送コマンドＩＵについて制御ユニットによって受信されるデータ量に等しいデータ量を指定するものとし、そうでない場合、データ・カウント・エラーによる移送コマンドＩＵ整合性エラーが認識されるものとする。
ｂ）双方向動作をサポートする制御ユニットの場合、ＴＣＨ内のＬＩフィールドに８または９を加えた結果が、移送コマンドＩＵについて制御ユニットによって受信されるデータ量に等しいデータ量を指定するものとし、そうでない場合、データ・カウント・エラーによる移送コマンドＩＵ整合性エラーが認識されるものとする。
ｃ）ＴＣＣＢ内のＬＲＣフィールドは有効であるものとし、有効でない場合、無効ＬＲＣエラーによる移送コマンドＩＵ整合性エラーが認識されるものとする。
２）指定された論理経路が確立されるものとし、確立されない場合、論理経路非確立エラーが認識されるものとする。
３）デバイスがインストールおよび準備されることを要求するコマンドの場合、デバイス・アドレスはインストールおよび準備されるデバイスを指定するものとし、指定されない場合、アドレス例外条件が認識されるものとする。
４）双方向データ転送が制御ユニットによってサポートされていないかまたは移送コマンドＩＵがＢＲＤＬフィールドを含まない場合、ＲビットおよびＷビットはどちらもＴＣＨ内で１に設定されないものとする。
５）移送コマンドＩＵ内のＴＣＣＢが以下のすべての条件を満たすものとし、満たさない場合、ＴＣＣＢコンテンツ・エラーが認識されるものとする。
ａ）Ｌ２フィールドが、Ｌ１フィールドより厳密に８バイト大きい長さを指定し、少なくとも２０バイトであり２５２バイトを超えない値を含むものとする。
ｂ）ＴＣＡＨのワード０のバイト１がゼロであるものとする。
ｃ）ＴＣＡＨ内のフォーマット制御フィールドが１６進「７Ｆ」に等しいものとする。
ｄ）ＴＣＡＨ内のサービス・アクション・コードが有効値を含むものとする（８．１３．４．４を参照のこと）。
ｅ）ＲビットおよびＷビットがどちらもゼロに設定される場合、データ長さ（ＤＬ）フィールドはゼロであるものとする。
６）別のＴＣＷ  Ｉ／Ｏ動作が、移送コマンドＩＵ内に指定された論理経路およびデバイス・アドレスについて進行中である場合、サービス・アクション・コードが１６進「１ＦＦＦ」を指定するものとし、さらにＴＣＡの第１のＤＣＷ内のコマンド・コードが問い合わせコマンド・コードを指定するものとし、そうでない場合、非問い合わせ第２動作エラーが認識されるものとする。
【００９６】
一実施形態では、チャネル１２８は、移送コマンドＩＵ１７２が送信された場合に接続が存在するものとみなし、制御ユニット１１８は、移送コマンドＩＵ１７２が受け入れられた場合に接続が存在するものとみなす。したがってチャネル１２８は、Ｉ／Ｏ動作が移送応答ＩＵを用いて制御ユニット１１８によって終了されるまで、制御ユニット１１８がＴＣＣＢ１７０を受け入れたかどうか、またはデバイス１１６でのＩ／Ｏ動作の進行に気付かない。一実施形態では、チャネル１２８は、制御ユニットからの応答を受信するための時間ウィンドウを設定することができるため、チャネルがウィンドウ内で移送応答ＩＵを受信しない場合、チャネルは移送コマンド・タイムアウトを認識する。
【００９７】
ステージ３０４で、ＴＣＣＢ１７０が受け入れられた場合、制御ユニット１１８はＴＣＡ１８０を処理し、各ＤＣＷ２０２を実行する。実行されているＤＣＷ２０２が現行のＤＣＷとして認識される。ＤＣＷ２０２は、移送モード・プログラムの第１のＤＣＷ（すなわちＴＣＣＢ内の第１のＤＣＷ）であり、Ｉ／Ｏデバイス１１６によって実行用に選択された場合、または、コマンド・チェイニング中に後続のＤＣＷ２０２がＩ／Ｏ動作の制御を引き継ぐ場合、現行となる。実行されることになる第１のＤＣＷは、ＴＣＣＢ１７０内のＴＣＡ１８０のオフセット・ゼロに位置するものとみなすことができる。チャネル・プログラム内の追加の各ＤＣＷはＴＣＡ１８０内（またはＴＣＡＸ２２０内）に配置され、Ｉ／Ｏデバイス１１６によってＤＣＷが必要とされる場合に使用される。
【００９８】
コマンド・チェイニングは、ＤＣＷ内のＤＣＷチェーン・コマンド（ＣＣ）フラグによって制御される。このフラグは、現行のＤＣＷが使い尽くされた時に講じるアクションを指定する。チェイニングは、ＴＣＡ内の連続するＤＣＷ間で実行される。ＴＣＡＸが指定される場合、チェイニングは、ＴＣＡ内の最終ＤＣＷとＴＣＡＸ内の第１のＤＣＷとの間、およびＴＣＡＸ内の連続するＤＣＷ間でも実行される。現行のＤＣＷがコマンド・チェイニングを指定し、動作中に異常な条件が検出されない場合、現行ＤＣＷの完了によって、次のＤＣＷが現行ＤＣＷとなり、デバイスによって実行される。ＴＣＡＸが指定され、次のＤＣＷのオフセットがＴＣＡの終わりを越えた場合、チェイニングはＴＣＡＸの第１のＤＣＷを続行し、そのＴＣＡＸオフセットは、算出されたオフセットからＴＣＡ長さを減じることによって決定される。したがってコマンド・チェイニングは、ＴＣＡオフセットの、およびその後ＴＣＡＸが指定された時にＴＣＡＸオフセットの、昇順で進行する。アテンション、ユニット・チェック、ユニット例外、または誤り長さなどの条件が発生した場合（ＤＣＷ内のＳＬＩフィールド２１４が活動化されない限り）、一連の動作は終了し、現行動作に関連付けられた状況によって割り込み条件が生成される。この場合、新しいＤＣＷは実行されない。
【００９９】
Ｉ／Ｏ動作を介して転送するように要求されたデータは、ＴＣＣＢ１７０内でのＤＣＷ２０２の処理中に、チャネル１２８と制御ユニット１１８との間で１つまたは複数の移送データＩＵを介して送信される。読み取り動作は、読み取りデータ転送のみを実行し、書き込み動作は書き込みデータ転送のみを実行し、双方向動作は読み取りおよび書き込みの両方のデータ転送を実行することができる。
【０１００】
図１５を参照すると、書き込み動作または双方向動作の場合、チャネル１２８は、動作に関する書き込みデータ３１２を転送するために、１つまたは複数の移送データＩＵ３１０を制御ユニット１１８に送信する。読み取り動作または双方向動作の場合、制御ユニット１１８は、動作用に指定された読み取りデータ３１６を転送するために、少なくとも１つの移送データＩＵ３１４をチャネル１２８に送信する。パッド・バイト３１８は、それに関してＣＲＣが計算され、カバーされることになるデータ領域が整数のデータ・ワードでない場合、データ領域を次のワード境界にパディングするために使用される、データ領域の最終ワードに含めることができる。これは、ＣＯＢ、中間および最終のＣＲＣによってカバーされることになるデータ領域に適用される。パッド・バイトに使用される値はモデル依存型である。
【０１０１】
移送データＩＵがＴＣＷ  Ｉ／Ｏ動作のためにチャネル１２８または制御ユニット１１８によって送信される最後の移送データＩＵである場合、最終ＣＲＣフィールド３２０は移送データＩＵ３１０、３１４に含められる。一実施形態では、最終ＣＲＣフィールド３２０はワード整合済み３２ビット巡回冗長検査コードを含む。読み取り動作または書き込み動作の場合、ＴＣＣＢ１７０内のＤＬフィールドは、すべての必要なパッド・バイトおよびＣＲＣバイトを含むことができる動作中に転送されることになるデータの量を指定する。双方向動作の場合、ＴＣＣＢ１７０内のＤＬフィールドは、動作の書き込みデータ転送部分について転送されることになるデータの量を指定し、ＢＲＤＬフィールドは、動作の読み取りデータ転送部分について転送されることになるデータの量を指定する。これらの量は、すべての必要なパッド・バイトおよびＣＲＣバイトを含むことができる。
【０１０２】
書き込みまたは双方向データ転送中に、出力データは、ＴＣＷ  Ｉ／Ｏ動作に関連付けられた移送交換で、１つまたは複数の移送データＩＵ３１０内で制御ユニット１１８に転送される。一実施形態では、第１の転送準備済みが使用不能の場合、動作の第１の書き込み移送データＩＵ３１０を除き、チャネル１２８は、各移送データＩＵ３１０の送信に先立ち、制御ユニット１１８からの転送準備済みＩＵを必要とする。制御ユニット１１８は、書き込み動作に関してＴＣＣＢ１７０のＤＬフィールド１８６によって指定されたすべてのデータを要求するまで、追加の転送準備済みＩＵを送信することによって、追加のデータを要求することができる。書き込み動作の場合、ＴＣＣＢ内のＤＬフィールドによって指定されたデータ転送の完了に続き、制御ユニット１１８によって送信される次のＩＵは、移送応答ＩＵである。双方向動作の場合、ＴＣＣＢ内のＤＬフィールドによって指定されたデータ転送の完了に続き、制御ユニット１１８によって送信される次のＩＵは、移送データＩＵまたは移送応答ＩＵとすることができる。
【０１０３】
読み取りデータ転送中、データは、ＴＣＷ  Ｉ／Ｏ動作に関連付けられた移送交換で、１つまたは複数の移送データＩＵ３１４内でチャネル１２８に転送される。各移送データＩＵ内で送信されるデータの量は制御ユニット１１８によって決定され、動作のためにすべての移送データＩＵ３１４内で転送されるデータの合計量が、ＤＬフィールド１８６内の値を、または双方向動作の場合ＢＲＤＬフィールド１８８内の値を超えない限り、任意の値に設定されてよい。読み取り動作では、制御ユニットによって送信されるデータの量がＴＣＣＢ内のＤＬフィールドより少ない場合、移送応答ＩＵ内のＤＬ残余カウントは、ＣＵによって送信されるデータの量とＴＣＣＢ内のＤＬフィールドとの間の差異であるものとされる。チャネルは、移送応答ＩＵ内の制御ユニットによって提供される残余カウントが、ＤＬとチャネルによって実際に受信されるバイト数との間の差異に合致しない場合、デバイス・レベル・プロトコル・エラーを認識する。
【０１０４】
書き込みおよび双方向動作の場合、移送応答ＩＵ内のＤＬ残余カウントは、チャネルによって送信されるデータの量とＴＣＣＢ内のＤＬフィールドとの間の差異であるものとされる。チャネルは、移送応答ＩＵ内の制御ユニットによって提供されるＤＬ残余カウントが、ＤＬとチャネルに実際に送信されるバイト数との間の差異に合致しない場合、デバイス・レベル・プロトコル・エラーを認識する。双方向動作では、制御ユニットによって送信されるデータの量がＴＣＣＢ内のＢＲＤＬフィールドより少ない場合、移送応答ＩＵ内のＢＲＤＬ残余カウントは、ＣＵによって送信されるデータの量とＴＣＣＢ内のＢＲＤＬフィールドとの間の差異であるものとされる。チャネルは、移送応答ＩＵ内の制御ユニットによって提供されるＢＲＤＬ残余カウントが、ＢＲＤＬとチャネルによって実際に受信されるバイト数との間の差異に合致しない場合、デバイス・レベル・プロトコル・エラーを認識する。
【０１０５】
書き込みまたは双方向動作では、第１の転送準備済みが使用不能の場合、チャネルは移送コマンドＩＵのすぐ後に続いて移送データＩＵを送信する。第１の移送データＩＵ後のチャネルからのすべての移送データＩＵでは、および、第１の転送準備済みが使用不能でない場合のチャネルからのすべての移送データＩＵでは、チャネルは、転送準備済みＩＵの受信後のみに、書き込み転送データＩＵを送信するものとする。チャネルは、各転送準備済みＩＵが受信された後、ＴＣＣＢによって指定されたすべての書き込みデータが転送されるか、または移送応答ＩＵが受信されるまで、移送データＩＵを送信するものとする。
【０１０６】
読み取りまたは双方向動作では、制御ユニットは、動作用に指定された読み取りデータを転送するために少なくとも１つの移送データＩＵをチャネルに送信する。
【０１０７】
双方向動作では、第１の転送準備済み使用不能が有効でない場合、制御ユニットは転送されることになる第１の移送データＩＵを選択する。制御ユニットは、移送データＩＵを要求するために転送準備済みＩＵをチャネルに送信するか、または移送データＩＵをチャネルに送信する。第１の転送準備済み使用不能が動作に対して有効である場合、チャネルは、移送コマンドＩＵに続いて移送データＩＵを送信する。
【０１０８】
双方向動作では、書き込みおよび読み取りの両方のデータ転送が実行可能である。書き込みデータ転送および読み取りデータ転送は、前述のように実行可能である。第１の転送準備済み使用不能が有効である場合の第１の移送データＩＵを除き、チャネルと制御ユニットとの間のデータ転送は、読み取り移送データＩＵを送信することにより、または書き込み移送データＩＵを要求するために転送準備済みＩＵを送信することにより、制御ユニットによって制御される。
【０１０９】
移送データＩＵ内で送信するためにデータがホスト記憶からフェッチされる順序に対して、移送データＩＵ内で受信されたデータがホスト記憶に記憶される順序は、双方向動作について予想不能な場合がある。
【０１１０】
第１の転送準備済み使用不能が有効である場合に、または、転送準備済みＩＵを送信することによって制御ユニットがチャネルに移送データＩＵを要求する場合に、チャネルが第１の移送データＩＵを転送する場合、移送データＩＵ内でチャネルによって送信されるデータは、ＴＣＡ内での読み取りＤＣＷの実行に続いて実行される書き込みＤＣＷ用とすることができる。
【０１１１】
図１５に示されるように、１つまたは複数の中間ＣＲＣワード３２０は、チャネル１２８によって送信される移送データＩＵ３１０内に存在することができる。中間ＣＲＣ３２０ワードは、ＴＣＡ１８０によって指定されるデータ領域全体の伝送に先立ち、データ領域のＣＲＣチェックを提供する。ＣＯＢ  ＣＲＣワード３２２は、ＣＯＢ２２２が移送データＩＵ内で転送されている場合、移送データＩＵ３１０内に存在することができる。
【０１１２】
再度図１４を参照すると、ステージ３０５で、ＴＣＷ  Ｉ／Ｏ動作はチャネル１２８または制御ユニット１１８のいずれかによって終了される。チャネル１２８は、異常な状況またはプログラム開始による終了の結果として、ＴＣＷ  Ｉ／Ｏ動作の終了を開始することができる。制御ユニット１２８は、動作の実行完了の結果として、またはコマンドの実行中に検出された異常な状況の結果として、動作の終了を開始することができる。制御ユニット１２８は、移送応答ＩＵを送信することによって、またはあるエラーの場合は交換の打ち切りによって、ＴＣＷ  Ｉ／Ｏ動作の終了を開始することができる。一実施形態では、制御ユニット１１８は、ＴＣＡ１８０（および指定されている場合はＴＣＡＸ）内のすべてのＤＣＷ２０２が実行されている環境、ＤＣＷ誤り長さ機構がサポートされ、ＳＬＩフラグ２１４がゼロに設定された場合、誤り長さ条件が検出されている環境、ユニット・チェック条件が検出されている環境、移送エラーなどの異常な条件環境、または、交換が打ち切られることを必要とする別のエラーが認識された環境のうちの、いずれかの環境の下で、ＴＣＷ  Ｉ／Ｏ動作の終了を開始することができる。
【０１１３】
図１６〜図１８は、制御ユニット１１８によって送信可能な例示的移送応答ＩＵ３３０を示す。移送応答ＩＵ３３０はＴＣＷ  Ｉ／Ｏ動作に状況を提供し、この状況は、通常の終了状況、または、異常な条件が検出された場合、動作の異常終了の原因を示す終了状況を含むことが可能である。移送応答ＩＵ３３０は、動作にさらに状況を提供する、拡張状況フィールドも含むことができる。移送応答ＩＵは、移送交換を閉じる場合、または閉じない場合がある。一実施形態では、移送応答ＩＵによって交換が閉じられたかどうかが、ＦＣ−ＦＳ−３ヘッダ内に示される。移送交換が移送応答ＩＵによって閉じられなかった場合、チャネルは、移送応答ＩＵの受信後に交換を閉じる、移送確認ＩＵを送信することができる。
【０１１４】
一実施形態では、移送応答ＩＵ３３０はＳＢ−４ヘッダ３３２と、それに続く状況フィールド３３４、状況ＬＣＲ３４４、および、たとえば３２から６４バイトを含むオプションの拡張状況フィールド３４６とを含む。拡張状況が提供された場合、４バイト拡張状況ＬＲＣフィールド３４０は、移送応答ＩＵ３３０の最終ワードとして提供可能である。拡張状況バイトの数がワード境界上にない場合、次のワード境界に丸めるためにパッド・バイトは拡張状況に追加される。ＳＢ−４ヘッダ３３２は移送コマンドＩＵのそれと同様のフォーマットを有し、この交換のために移送コマンドＩＵ内のＳＢ−４ヘッダに等しく設定される。
【０１１５】
図１７を参照すると、状況領域３３４の実施形態は、たとえば２０バイトであり、ＴＣＷ  Ｉ／Ｏ動作に関する情報を含む。「状況フラグ１」フィールド３３６は、ＴＣＷ  Ｉ／Ｏ動作中に検出された異常条件を報告するために、制御ユニット１１８によって設定された１つまたは複数の例外コードを含む。例示的なコードは以下を含む。
０−アドレス例外条件によるデバイス・レベル例外
２−論理経路非確立条件によるリンク・レベル拒否
３−リセット・イベント通知−リセット・イベントが、論理経路上および移送コマンドＩＵに関連付けられたデバイス上で生じた。このコードが移送応答ＩＵ内に設定された場合、制御ユニットはその状況に関する状況確認を要求する。状況確認が受信された場合、リセット・イベント条件は論理経路についてデバイスでリセットされ、それ以外の場合、リセット・イベント条件は保留のままである。
４−デバイス検出プログラム・チェック／ＩＦＣＣ−制御ユニットが、結果としてプログラム・チェックまたはＩＦＣＣが報告され得る条件を検出した。このカテゴリに入るエラーは、破損状態（たとえばＴＣＣＢ整合性エラー）で到達した移送コマンドＩＵ、書き込みデータについて検出された無効なＣＲＣ、および、問い合わせ動作ではない論理経路およびデバイス・アドレスに関する第２のＩ／Ｏ動作の受信を示す、エラーを含む。
５−デバイス検出プログラム・チェック−制御ユニットがＴＣＨのコンテンツ内にエラーを検出した。
【０１１６】
一実施形態では、状況フラグ１フィールド３３６は誤り長さ（ＩＬ）フラグ３３８を含む。ＤＣＷ誤り長さ機構がチャネルおよび制御ユニットによってサポートされている場合、ビット０はＩＬフラグであり、１に設定された場合、ＤＣＷオフセットによって示されるＤＣＷに関する誤り長さ条件により、ＴＣＷ  Ｉ／Ｏ動作が終了したことを示すものとする。ＤＣＷデータ・カウントが書き込みＤＣＷのためのデバイスが必要とするデータ量に一致しない場合、またはＤＣＷデータ・カウントが読み取りＤＣＷのためのデバイスで使用可能なデータ量に一致しない場合、制御ユニット１１８によって誤り長さが検出される。
【０１１７】
一実施形態では、ＤＣＷ２０２がＳＬＩフラグ２１４を含む場合、ＩＬフラグ３３８は、ＳＬＩフラグ２１４がゼロである場合、および、デバイス状況がユニット・チェック状況なしにチャネル・エンド状況を含む場合のみ、１に設定される。ＩＬフラグ３３８が移送応答ＩＵ内で１に設定された場合、ＤＣＷオフセットは誤り長さ条件を含むＤＣＷを識別し、ＤＣＷ残余カウントは誤り長さＤＣＷについて転送されたデータ転送の量があれば、これを示す。ＴＣＡ内の誤り長さＤＣＷに先行するＤＣＷについてのデータ転送があれば、完了するものとし、転送されるデータ上のすべてのＣＲＣチェックは以下で説明するように実行されるものとする。
【０１１８】
誤り長さ条件を含むＤＣＷが読み取りＤＣＷである場合、チャネルに送信された最終移送データＩＵは、ＴＣＷ  Ｉ／Ｏ動作中にチャネルに転送されたすべての読み取りデータについてのＣＲＣを含む。書き込みＤＣＷがＴＣＡ内の誤り長さ読み取りＤＣＷに先行する場合、それらの書き込みＤＣＷに関するデータは制御ユニットによって受信されているものとし、ＣＲＣチェックはデータ上で実行されているものとする。誤り長さ読み取りＤＣＷに続くＴＣＡ内の書き込みＤＣＷに関するデータは、書き込みデータに関するＣＲＣを取得するため、およびＣＲＣチェックを実行するために必要なように、制御ユニットに転送されるものとする。
【０１１９】
誤り長さ条件は、チャネルおよび制御ユニットによって誤り長さ機構がサポートされているかどうかにかかわらず、問い合わせコマンド、転送ＣＲＣオフセット・コマンド、またはＴＴＥコマンドによって認識されない。
【０１２０】
移送応答ＩＵ３３０は、データ長さ残余カウント（ＤＬＲＣ）フィールド３４０も含むことができる。書き込み動作および双方向動作の場合、ＤＬ残余カウントは、移送コマンドＩＵ内のＤＬフィールドとチャネルから実際に受信されたバイト数との間の差異を指定する、３２ビットの符号なし２進整数である。読み取り動作の場合、ＤＬ残余カウントは、移送コマンドＩＵ内のＤＬフィールドとチャネルに実際に送信されたバイト数との間の差異を指定する、３２ビットの符号なし２進整数である。
【０１２１】
双方向動作の場合、ＢＲＤＬ残余カウント・フィールド３４２は、移送応答ＩＵ３３０内に含まれることもある。双方向動作の場合、ＢＲＤＬ残余カウントは、移送コマンドＩＵ内のＢＲＤＬフィールドとチャネルに実際に送信されたバイト数との間の差異を指定する、３２ビットの符号なし２進整数である。
【０１２２】
状況フラグ３フィールド３４４は、関連付けられた移送モード動作に関する追加の情報を提供するために、制御ユニット１１８によって使用可能である。このフィールドは、可能な感知データを含む拡張状況が移送応答ＩＵ内で送信されたことを示すために、拡張状況送信済み（ＥＳＳ）ビットを含むことができる。拡張状況は、ＥＳタイプ・コード・フィールドなどのフィールドを含む拡張状況（ＥＳ）フラグを含む。タイプ・コードは、Ｉ／Ｏ状況（拡張状況領域は移送モードＩ／Ｏ動作に関する有効な終了状況を含む）、Ｉ／Ｏ例外（拡張状況領域は例外条件による移送モードＩ／Ｏ動作の終了に関する情報を含む）、および問い合わせ状況（拡張状況領域は問い合わせ動作に関する状況を含む）を含む。
【０１２３】
ＥＳフラグ内のＥＳタイプ・コードがＩ／Ｏ例外である場合、ＥＳは理由コード（ＲＣ）を含む。例示的な理由コードは、以下を含む。
１−ＴＣＣＢ整合性エラー：制御ユニットは、ＴＣＣＢが破損状態で到達したことを決定した（状況フラグ１フィールド内に例外コード４が示される場合に提供される）。
２−無効なＣＲＣ検出：データの受信時に無効なＣＲＣが検出された（状況フラグ１フィールド内に例外コード４が示される場合に提供される）。
３−誤りＴＣＣＢ長さ指定（状況フラグ１フィールド内に例外コード５が示される場合に提供される）。
４−ＴＣＡＨ指定エラー（状況フラグ１フィールド内に例外コード５が示される場合に提供される）。
５−ＤＣＷ指定エラー：拡張状況内のＤＣＷオフセット・フィールドによって指定されたＤＣＷにエラーが存在する（状況フラグ１フィールド内に例外コード５が示される場合に提供される）。
６−転送方向指定エラー：拡張状況内のＤＣＷオフセット・フィールドによって指定されたＤＣＷによって指定されたコマンドが、ＴＣＨ内に指定された転送方向と一致しないデータ転送の方向を指定するか、または、ＴＣＨ内でＲビットおよびＷビットの両方が１に設定され、双方向データ転送が制御ユニットによってサポートされていない（状況フラグ１フィールド内に例外コード５が示される場合に提供される）。
７−移送カウント指定エラー（状況フラグ１フィールド内に例外コード５が示される場合に提供される）。
８−２つのＩ／Ｏ動作がアクティブ：Ｉ／Ｏ動作がデバイスでアクティブである間に、第２の非問い合わせＴＣＣＢが実行のためにデバイスに移送された。ＲＣＱフィールドは意味を有さない。この理由コードは、状況フラグ１フィールド内に例外コード４が示される場合に提供される。
９−ＣＲＣオフセット・ブロック内の１つまたは複数のエントリが、中間ＣＲＣがデバイスあるいは実行されているコマンドまたはその両方に適切な位置にないことを示し、状況フラグ１フィールド内に例外コード４が示される場合に提供される。
【０１２４】
拡張状況は、Ｉ／Ｏ例外の理由に関する追加の情報を提供する理由コード限定子（ＲＣＱ）も提供可能である。異なる理由コード限定子タイプを、ＴＣＣＢ整合性エラー、出力データＣＲＣエラー、誤りＴＣＣＢ長さ指定、ＴＣＡＨ指定エラー、およびＤＣＷ指定エラーなどの、異なるタイプのエラーに使用可能である。ＴＣＣＢ整合性エラーに関する例示的ＲＣＱは、以下を含む。
０−追加情報なし。
１−データ・カウント・エラー−移送コマンドＩＵについて転送されたデータの量が、双方向動作をサポートしていない制御ユニットに関してＴＣＨ内のＬ１フィールドに８を加えた結果によって指定されたデータ量と等価でないか、または、双方向動作をサポートしている制御ユニットに関してＬ１フィールドに８または９のいずれかを加えた結果によって指定された量と等価でない。
２−ＬＲＣエラー−移送コマンドＩＵ上のＬＲＣが無効である。
【０１２５】
ＤＣＷ指定エラーに関する例示的ＲＣＱは以下を含む。
１−予約済みフィールド指定エラー：ゼロを含む必要のあるＤＣＷ内の予約済みフィールドが非ゼロ値を含む。
２−フラグ・フィールド・コマンド・チェイニング指定エラー：コマンド・チェイニング・ビットが１であり、次のＤＣＷのオフセットが、次のＤＣＷのすべてまたは一部がＴＣＡの終わりを超えて延在するようなオフセットであるか、または、コマンド・チェイニング・ビットがゼロであり、ＴＣＡ内に３バイトを超える未使用のバイトが残っている。
３−制御データ・カウント指定エラー：ＣＤカウントがＴＣＡの終わりを超える制御データを指定する。
４−ＴＣＯＢ  ＤＣＷ位置エラー：第１のＴＣＯＢ  ＤＣＷがＴＣＡ内の第１のＤＣＷでない。
５−ＴＣＯＢ  ＤＣＷ重複エラー：複数のＴＣＯＢ  ＤＣＷがＴＣＡ内に指定される。
６−ＴＣＯＢ  ＤＣＷ複数カウント指定エラー：ＣＤカウントおよびＤＣＷデータ・カウントの両方がゼロまたは非ゼロのいずれかである。
７−ＴＣＯＢ  ＤＣＷ方向エラー：ＴＣＯＢ  ＤＣＷがＴＣＡ内に指定され、ＴＣＨ内のＷビットがゼロである。
８−ＴＣＯＢ  ＤＣＷチェイニング・エラー：ＴＣＯＢ  ＤＣＷ内のチェーン・コマンド・ビットがゼロである。
９−ＴＣＯＢカウント指定エラー：ＴＣＯＢ  ＤＣＷが、非ゼロのＣＤカウントまたは４の倍数でないデータ・カウントを有する。
１０−ＴＴＥ  ＤＣＷ位置エラー：ＴＣＯＢ  ＤＣＷが指定され、ＴＣＡ内の第１のＤＣＷではないＴＴＥ  ＤＣＷに遭遇した、またはＴＣＯＢ  ＤＣＷが指定され、遭遇した第１のＴＴＥ  ＤＣＷがＴＣＡ内の第２のＤＣＷでなかった。
１１−ＴＴＥ  ＤＣＷ重複エラー：ＴＣＡ内の複数のＴＴＥ  ＤＣＷに遭遇した。
１２−ＴＴＥ  ＤＣＷ  ＣＤカウント指定エラー：ＴＴＥ  ＤＣＷ内の制御データ・カウントがゼロでない値を指定する。
１３−ＴＴＥ  ＤＣＷデータ・カウント指定エラー：ＴＴＥ  ＤＣＷ内のデータ・カウントが、８未満の値または４の倍数でない値を指定する。
１４−ＴＴＥ  ＤＣＷ方向エラー：ＴＴＥ  ＤＣＷが指定され、ＴＣＨ内のＷビットがゼロである。
１５−ＴＴＥ  ＤＣＷチェイニング・エラー：ＴＴＥ  ＤＣＷ内のチェーン・コマンド・ビットがゼロである。
１６−ＴＣＡＸ指定エラー：ＴＴＥ  ＤＣＷが指定され、以下のいずれかが真である。
ＴＣＡの長さが５８ワード以下である、または
ＴＣＡの長さが５９ワードであり、ＴＣＡ内の最終ＤＣＷが制御データを指定し、制御データの長さが５９ワードを超えて延在する、または
ＴＣＡの長さが最大長さの６０ワードであり、ＴＣＡ内の最終ワードがＤＣＷの第１のワードを含む。
【０１２６】
転送方向指定エラーに関する例示的ＲＣＱは、以下を含む。
１−読み取り方向指定エラー：ＤＣＷが入力動作を指定し、ＴＣＨ内のＲビットがゼロである。
２−書き込み方向指定エラー：ＤＣＷが出力動作を指定し、ＴＣＨ内のＷビットがゼロである。注−ＤＣＷ指定は、ＴＣＯＢまたはＴＴＥ  ＤＣＷが指定され、ＴＣＨ内のＷビットがゼロである場合に認識される。
３−読み取り対書き込みの競合：ＴＣＨ内のＲビットおよびＷビットの両方が１であり、制御ユニットが双方向動作をサポートしていないか、または制御ユニットが双方向動作をサポートしているが移送コマンドＩＵがＢＲＤＬフィールドを含まない、あるいは、ＲビットおよびＷビットの両方が１でなく、移送コマンドＩＵがＢＲＤＬフィールドを含む。
【０１２７】
移送カウント指定エラーに関する例示的ＲＣＱは、以下を含む。
１−読み取りカウント指定エラー：読み取り動作の場合、ＴＣＣＢ内のＤＬフィールドが、ＴＣＡ内のＤＣＷによって指定されたデータ・バイトにパッド・バイトおよびＣＲＣを加えた結果の合計カウントに等しくない値を指定し、双方向動作の場合、ＴＣＣＢ内のＢＲＤＬフィールドが、ＴＣＡ内の読み取りＤＣＷによって指定されたデータ・バイトにパッド・バイトおよびＣＲＣを加えた結果の合計カウントに等しくない値を指定する。
２−書き込みカウント指定エラー：ＴＣＣＢ内のＤＬフィールドが、ＴＣＡ内の書き込みＤＣＷによって指定されたデータ・バイトに、中間パッド・バイト、中間ＣＲＣ、最終パッド・バイト、および最終ＣＲＣバイトを加えた結果の合計カウントに等しくない値を指定し、ＣＯＢが書き込みデータ転送の第１の移送データＩＵに含まれる場合、このカウントは、ＣＯＢ、任意のＣＯＢパッド・バイト、およびＣＯＢ  ＣＲＣバイトを含む。ＴＴＥ  ＤＣＷがＴＣＡ内に存在する場合、このカウントはＴＣＡＸおよびＴＣＡＸ  ＣＲＣバイトも含む。
【０１２８】
プログラム・チェックは、プログラミング・エラーがチャネル・サブシステムによって検出された場合に発生する。移送モード動作の場合、プログラミング・エラーはＩ／Ｏデバイス１１６によっても検出され、プログラム・チェックとして報告される。プログラム・チェック条件は、いかのいずれかの理由によるものとすることができる。
【０１２９】
無効なＴＣＷ指定：以下のいずれかの条件が検出された場合、無効なＴＣＷ指定が認識される。
１．ＴＣＷ内でゼロについてチェックされた予約済みフィールドがゼロを含まない。
２．ＴＣＷフォーマット・フィールド内に非ゼロ値が指定される。
３．ＴＣＷ内の読み取りビットおよび書き込みビットがどちらも１であり、ＴＣＷフラグ・フィールドのビット１０がゼロであり、さらにＦＣＸ双方向データ転送機構がインストールされていないか、または指定されたデバイスが双方向データ転送をサポートしていないかのいずれかである。
４．ＴＣＷフラグのビット１０がゼロであり、ＴＣＷ内のＴＣＣＢ長さフィールドが１２未満または２４４より大きい長さを指定する。
５．ＴＣＷフラグ・フィールドのビット１０が１であり、さらに、ＴＣＷの書き込み動作（Ｗ）ビットがゼロであり、ＴＣＷの読み取り動作（Ｒ）ビットがゼロであるか、または双方がゼロである。
６．ＴＣＷフラグ・フィールドのビット１０が１であり、指定されたサブチャネルが、ファイバ・チャネル・サービス要求を移送するように構成された制御ユニットに関連付けられていない。
【０１３０】
ＴＴＥ  ＤＣＷが使用される場合、以下の条件のいずれかが存在する場合にデバイス検出プログラム・チェックが認識される。
１．ＴＣＯＢ  ＤＣＷが指定されていない場合、ＴＴＥ  ＤＣＷがＴＣＡ内の第１のＤＣＷでない。ＴＣＯＢ  ＤＣＷが指定されている場合、ＴＴＥ  ＤＣＷがＴＣＡ内の第２のＤＣＷでない。
２．ＴＴＥ  ＤＣＷが指定され、書き込み動作が指定されない（すなわち、ＴＣＷ内のＷビットがゼロである）。
３．ＴＴＥ  ＤＣＷ内のチェーン・コマンド・フラグがゼロである。
４．複数のＴＴＥ  ＤＣＷが指定される。
５．ＴＴＥ  ＤＣＷ内の制御データ・カウント・フィールドがゼロを含まない。
６．カウント・フィールドが８未満または４の倍数でない値を含む。
７．ＴＣＡについて以下のいずれかが真である。
ＴＣＡが、移送コマンドＤＣＷでない少なくとも１つのＤＣＷを含まない。
ＴＣＡが、移送コマンドＤＣＷでない１つまたは複数のＤＣＷを含み、ＴＣＡの最終ＤＣＷ内のチェーン・コマンド・フラグがゼロである。
【０１３１】
ＴＴＥ  ＤＣＷが使用され、追加のＴＣＭＩあるいは出力データまたはその両方がＴＣＡＸの後に続く場合、以下が真のはずであり、そうでない場合、デバイス検出プログラム・チェックが認識される可能性がある。
ＴＣＷ内の出力ＴＩＤＡフラグ（フラグ・ビット７）が１でなければならない。または
ＴＩＤＡが、ＴＣＡＸの転送およびデータの転送に使用される場合、ＴＣＡＸの転送に使用される最終ＴＩＤＡＷまたは専用ＴＩＤＡＷ内で挿入ＣＢＣ制御が１に設定されなければならない。ＴＩＤＡＷがＴＣＡＸのみの転送に使用される場合、最終または専用ＴＩＤＡＷ内で挿入ＣＢＣ制御を設定する必要がない。
【０１３２】
ＴＣＡの処理中、以下のいずれかの条件が検出された場合、ＴＣＣＢコンテンツ・エラーが認識される可能性がある。
１．遭遇する第１のＴＣＯＢ  ＤＣＷがＴＣＡ内の第１のＤＣＷではない。
２．ＴＣＡ内で第２のＴＣＯＢ  ＤＣＷに遭遇する。
３．ＴＣＡＨ内のＷビットがゼロである場合、ＴＣＡ内でＴＣＯＢ  ＤＣＷに遭遇する。
４．ＴＣＯＢ  ＤＣＷがチェイニング・フラグを設定していない。
５．ＣＤカウントおよびデータ・カウントの両方がゼロであるＴＣＯＢ  ＤＣＷに遭遇する。
６．ＣＤカウントおよびデータ・カウントの両方が非ゼロであるＴＣＯＢ  ＤＣＷに遭遇する。
７．ＣＤカウントがゼロであり、データ・カウントが４の倍数でない、ＴＣＯＢ  ＤＣＷに遭遇する。
８．データ・カウントがゼロであり、ＣＤカウントが４の倍数でない、ＴＣＯＢ  ＤＣＷに遭遇する。
９．ＴＣＯＢ  ＤＣＷが指定されず、ＴＴＥ  ＤＣＷがＴＣＡ内の第１のＤＣＷでないか、またはＴＣＯＢが指定され、ＴＴＥ  ＤＣＷがＴＣＡ内の第２のＤＣＷでない。
１０．ＴＣＡＨ内のＷビットがゼロである場合、ＴＣＡ内でＴＴＥ  ＤＣＷに遭遇する。
１１．ＴＴＥ  ＤＣＷがチェイニング・フラグを設定していない。
１２．ＴＣＡ内で第２のＴＴＥ  ＤＣＷに遭遇する。
１３．ＣＤカウントが非ゼロであるＴＴＥ  ＤＣＷに遭遇する。
１４．データ・カウントがゼロであるかまたは４の倍数でない、ＴＴＥ  ＤＣＷに遭遇する。
１５．ＴＴＥ  ＤＣＷが指定され、さらに、ＴＣＡの長さが５８ワードまたはそれ未満であること、ＴＣＡの長さが５９ワードであること、ＴＣＡ内の最終ＤＣＷが制御データを指定し、制御データの長さが５９ワードを超えて延在すること、または、ＴＣＡの長さが６０ワードの最大長さであり、ＴＣＡ内の最終ワードがＤＣＷの第１のワードを含むことの、いずれかが真である。
１６．ＤＣＷが、制御データを必要とするコマンドを含み、ＣＤカウント・フィールドがゼロであるかまたはＴＣＡの終わりを超えるデータを指定する値を含む。
１７．ＤＣＷが非ゼロであるＣＤカウント・フィールドを含み、コマンドが制御データを提供できない。
１８．書き込み動作中、デバイスが、読み取りデータ転送を実行するように試行したＴＣＡ内のコマンドに遭遇した。
１９．読み取り動作中、デバイスが、書き込みデータ転送を実行するように試行したＴＣＡ内のコマンドに遭遇した。
２０．ＣＣビットがＤＣＷ内でゼロであり、ＴＣＡ内に３バイトを超える未使用のバイトが残っている。
２１．ＣＣビットがＤＣＷ内で１であり、次のＤＣＷ位置がＴＣＡ指示の終わりから８バイト未満であることが決定され、ＴＣＡＸが提供されていないか、またはＴＣＡＸが提供されており、次のＤＣＷ位置がＴＣＡＸの終わりから８バイト未満であることが決定される。
２２．読み取りまたは双方向動作の場合、ＴＣＡ内の読み取りＤＣＷが現行となった場合に、すべての以前の読み取りＤＣＷおよび現行ＤＣＷに関するデータ・カウントにすべてのパッドおよびＣＲＣバイトを加えた合計がＴＣＣＢ内のＤＬフィールドを超えるか、または、双方向動作の場合、ＴＣＣＢ内のＢＲＤＬフィールドを超える。
２３．読み取りまたは双方向動作の場合、ＴＣＡ内の最終ＤＣＷが現行となった場合に、すべての読み取りＤＣＷに関するデータ・カウントにすべてのパッドおよびＣＲＣバイトを加えた合計がＴＣＣＢ内のＤＬフィールドに等しくないか、または、双方向動作の場合、ＴＣＣＢ内のＢＲＤＬフィールドに等しくない。
２４．書き込みまたは双方向動作の場合、ＴＣＡ内のＤＣＷが現行となった場合に、すべての書き込みＤＣＷに関するデータ・カウントにすべてのパッドおよびＣＲＣバイト（すべての中間のパッドおよびＣＲＣバイトを含む）を加えた合計が、さらにＣＯＢが移送データＩＵに含まれる場合に、ＣＯＢ、ＣＯＢパッド、およびＣＯＢ  ＣＲＣバイトが、さらにＴＣＡＸが存在する場合に、ＴＣＡＸ、ＴＣＡＸパッド、およびＴＣＡＸ  ＣＲＣバイトが、ＴＣＣＢ内のＤＬフィールドを超える。
２５．書き込み動作または双方向動作の場合、ＴＣＡ内の最終ＤＣＷが現行となった場合に、すべての書き込みＤＣＷに関するデータ・カウントにすべてのパッドおよびＣＲＣバイト（すべての中間のパッドおよびＣＲＣバイトを含む）を加えた合計が、さらにＣＯＢが移送データＩＵに含まれる場合に、ＣＯＢ、ＣＯＢパッド、およびＣＯＢ  ＣＲＣバイトが、さらにＴＣＡＸが存在する場合に、ＴＣＡＸ、ＴＣＡＸパッド、およびＴＣＡＸ  ＣＲＣバイトが、ＴＣＣＢ内のＤＬフィールドに等しくない。
【０１３３】
一実施形態では、コマンド・モードまたは移送モードの動作を実行するのに先立ち、チャネル・サブシステム１１４と制御ユニット１１８あるいはデバイス１１６またはその両方との間にリンクが確立される。１つまたは複数の制御ユニットとの物理接続を有するＩ／Ｏシステム内の各チャネル１２８は、固有識別子（「Ｎ＿Ｐｏｒｔ＿ＩＤ」）を有する「Ｎ＿Ｐｏｒｔ」と呼ぶことができる。同様に各制御ユニット１１８も、関連付けられたＮ＿Ｐｏｒｔ＿ＩＤを有するＮ＿Ｐｏｒｔも呼ぶことができる。チャネル１２８および制御ユニット１１８の両方が、それぞれ複数のチャネル・イメージまたは制御ユニット・イメージを含むことができる。各Ｎ＿Ｐｏｒｔは、ログイン手順の初期化および実行中に割り当てられたアドレス識別子を含む。明示的Ｎ＿Ｐｏｒｔログインは、初期化プロセス中に、Ｎ＿Ｐｏｒｔログイン（ＰＬＯＧＩ）拡張リンク・サービスによって実行可能である。Ｎ＿Ｐｏｒｔが別のＮ＿Ｐｏｒｔを用いてＮ＿Ｐｏｒｔログインを実行した場合、そのＮ＿Ｐｏｒｔは他のＮ＿Ｐｏｒｔを用いてログインされるものと言われる。
【０１３４】
一実施形態では、チャネル・サブシステムと制御ユニットとの間のリンク初期化は、プロセス・ログイン（ＰＲＬＩ）拡張リンク・サービス（ＥＬＳ）プロトコルを使用して実行される。ＰＲＬＩ  ＥＬＳの要求および応答のフォーマットを含むＰＲＬＩ  ＥＬＳの一般的な態様は、以下の項で定義されるＦＣ−ＳＢ−４に関する特定の設定値を用いて、２００８年６月２６日の「Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ：Ｌｉｎｋ  Ｓｅｒｖｉｃｅｓ（ＦＣ−ＬＳ−２）」、Ｔ１１  Ｐｒｏｊｅｃｔ  ２１０３−Ｄ、改訂版２．００内で与えられる。
【０１３５】
ＰＲＬＩ手順中、ＰＲＬＩをサポートするチャネル１２８はその構成内の各制御ユニット１１８に要求を送信し、制御ユニット１１８が移送モード動作をサポートするかどうかを決定するためにプロセス・ログインＥＬＳもサポートする。一実施形態では、ＰＲＬＩ要求は、論理経路の確立に先立ってチャネル初期化中に送信され、プロセス・ログアウト（ＰＲＬＯ）の結果としても送信可能である。ＰＲＬＩ  ＥＬＳは、チャネル１２８と制御ユニット１１８との間でプロセス・ログイン・サービス・パラメータを交換するために使用される。ＰＲＬＩ  ＥＬＳ要求は、論理経路が制御ユニットによって確立された場合、チャネルによって制御ユニットに送信することが可能であり、確立されたすべての論理経路に適用される。パラメータは、ＰＲＬＩ要求およびＰＲＬＩ応答を介して、チャネルと制御ユニットとの間で交換することができる。
【０１３６】
一実施形態では、制御ユニットが、チャネルですでに実施されているプロセス・ログインに関するサービス・パラメータを修正することになるＰＲＬＩ  ＥＬＳ要求を受信した場合、制御ユニットはリンク・サービス拒否（ＬＳ＿ＲＪＴ）でＰＲＬＩ  ＥＬＳ要求に応答する。ＬＳ＿ＲＪＴ応答は、理由コード１６進「０９」、「この時点でのコマンド要求実行不可」と共に送信される。制御ユニットがＬＳ＿ＲＪＴを送信した後、制御ユニットは、チャネルからのＰＲＬＩ  ＥＬＳ要求の再試行を正常に実行できるようにするために、プロセス・ログアウト（ＰＲＬＯ）ＥＬＳ要求をチャネルに送信するものとする。
【０１３７】
図１８を参照すると、ＰＲＬＩ要求は、サービス・パラメータを確立するために使用される様々なフィールドを含むサービス・パラメータ・ページを含む。たとえばサービス・パラメータ・ページ４００は、移送モードまたはＦＣ−４プロトコルを識別する（たとえばＳＢ−４プロトコルを示すために１６進「１Ｂ」に設定される）タイプ・コード・フィールド４０２を含むことが可能である。タイプ・コード拡張フィールド４０４（たとえばワード０のバイト１）がゼロに設定される。ＦＣ−ＬＳ−２フラグ・フィールド４０６（たとえばワード０のビット１６〜１９）は、チャネルによって以下のように設定可能である。
ビット１６−発信者プロセス・アソシエータ妥当性：このビットはチャネルによってゼロに設定され、制御ユニットによって無視される
ビット１７−応答者プロセス・アソシエータ妥当性：このビットはチャネルによってゼロに設定され、制御ユニットによって無視される
ビット１８−イメージ・ペア確立：このビットはチャネルによってゼロに設定され、制御ユニットによって無視される
ビット１９−予約済み：このビットはチャネルによってゼロに設定され、制御ユニットによって無視される
【０１３８】
サービス・パラメータ・ページは、チャネルによってゼロに設定される発信者プロセス・アソシエータ・フィールド４０８（たとえばワード１）、および応答者プロセス・アソシエータ・フィールド４１０（たとえばワード２）などの、追加のフィールドを含むことができる。最大開始遅延時間フィールド４１２（たとえばワード３のバイト０）は、制御ユニットがプロセス・ログアウト（ＰＲＬＯ）要求において開始遅延時間として設定可能な最大値を秒単位で指定する、２進整数を含む。ＰＲＬＯ要求は、チャネルまたは制御ユニットによって、チャネルと制御ユニットとの間の移送モード動作を終了させるために使用される。最大開始遅延時間値は、一般に、チャネルがホスト・システムを阻止することなく新しいＩ／Ｏ動作の開始を遅らせることが可能な時間に基づく。
【０１３９】
ＦＣ−ＳＢ−４フラグ・フィールド４１４（たとえばＰＲＬＩ要求ページのワード３のバイト３）は、以下で説明される１つまたは複数のフラグを含む。
０−移送モードがサポートされる。ビット０がゼロに設定される場合、チャネルは移送モード動作をサポートしない。ビット０が１に設定される場合、チャネルは移送モード動作をサポートする。
１−予約済みである。
２−ＤＣＷ誤り長さ（ＩＬ）機構がサポートされる。たとえば、ＩＬフラグがアクティブである場合（たとえばビット２が１に設定される場合）、ＤＣＷ  ＩＬ機構はチャネル１２８によってサポートされる。ビット２がゼロに設定される場合、ＤＣＷ  ＩＬ機構はチャネル１２８によってサポートされない。ＤＣＷ  ＩＬ機構は、抑制長さ指示（ＳＬＩ）フラグ２１４および誤り長さフラグ３３８に対するサポートを含む。移送モード・サポート・ビット（ビット０）がゼロに等しい場合、ビット２はゼロに設定されるものとする。
５−双方向データ転送がサポートされる。双方向転送指示がアクティブである（たとえばビット５が１に設定される）場合、送方向データ転送はチャネル１２８によってサポートされる。ビット５がゼロに設定される場合、双方向データ転送はチャネルによってサポートされない。このビットは、移送モード・サポート・ビットが１に等しい場合のみ有意である。
７−第１の転送準備済み使用不能がサポートされる。ビット７が１に設定される場合、第１の転送準備済み使用不能動作はチャネルによってサポートされる。ビット７がゼロに設定される場合、第１の転送準備済み使用不能動作はチャネルによってサポートされない。移送モード・サポート・ビット（ビット０）がゼロに等しい場合、ビット７はゼロに設定されるものとする。
【０１４０】
チャネルおよび制御ユニットの両方が第１の転送準備済み使用不能をサポートしている場合、移送モードの書き込みデータ転送は有効な第１の転送準備済み使用不能で実行され、結果としてチャネルは、制御ユニットからの転送準備済みＩＵを待つ必要なしに、第１の移送データＩＵを制御ユニットに送信することができる。チャネルまたは制御ユニットのいずれかが、第１の転送準備済みＩＵ使用不能をサポートしていないことを示す場合、第１の転送準備済み使用不能は移送モード動作に対して有効でない。
【０１４１】
図１９を参照すると、一実施形態では、ＰＲＬＩ応答は、移送モードまたはＦＣ−４プロトコルを識別する（たとえばＳＢ−４プロトコルを示すために１６進「１Ｂ」に設定される）タイプ・コード・フィールド４０２、および、ゼロに設定されるタイプ・コード拡張フィールド４０４などのフィールドを含むことが可能な、ＰＲＬＩ受け入れサービス・パラメータ・ページを含む。ＦＣ−ＬＳ−２フラグ・フィールド４０６（たとえばワード０のビット１６〜１９）は、チャネルによって以下のように設定可能である。
ビット１６−発信者プロセス・アソシエータ妥当性：このビットは制御ユニットによってゼロに設定され、チャネルによって無視される
ビット１７−応答者プロセス・アソシエータ妥当性：このビットは制御ユニットによってゼロに設定され、チャネルによって無視される
ビット１８−イメージ・ペア確立：このビットは制御ユニットによってゼロに設定され、チャネルによって無視される
ビット１９−予約済み：このビットは制御ユニットによってゼロに設定され、チャネルによって無視される
【０１４２】
応答コード・フィールド４２２（たとえばワード０のビット２０〜２３）は、ＰＲＬＩ要求の結果を示す２進整数を含む。応答コード値の意味は、ＦＣ−ＬＳ−２によって定義される。第１のバースト・サイズ・フィールド４２４（たとえばワード３のバイト０〜１）は、チャネルおよび制御ユニットの両方によって第１の転送準備済み使用不能がサポートされている場合、書き込みデータ転送について第１の移送データＩＵ内で送信することが可能となる最大データ量を（たとえば４ｋバイト単位で）指定する、２進整数を含む。ゼロの値は、第１のバースト・サイズ制限がないことを示す。第１のバースト・サイズ・フィールド４２４は、第１の転送準備済み使用不能をサポートするすべての制御ユニットによって実装可能である。
【０１４３】
ＰＲＬＩ受け入れサービス・パラメータ・ページ４２０は、以下で説明される定義済みの１つまたは複数のフラグを含むＦＣ−ＳＢ−４フラグ・フィールド４１４（たとえばワード３のバイト３）も含むことが可能である。
０−移送モードがサポートされる。ビット０がゼロに設定される場合、制御ユニット１１８は移送モード動作をサポートしない。ビット０が１に設定される場合、制御ユニット１１８は移送モード動作をサポートする。
２−ＤＣＷ誤り長さ（ＩＬ）機構がサポートされる。ビット２が１に設定される場合、ＤＣＷ誤り長さ（ＩＬ）機構は制御ユニット１１８によってサポートされる。ビット２がゼロに設定される場合、ＤＣＷ  ＩＬ機構は制御ユニット１１８によってサポートされない。ＤＣＷ誤り長さ機構は、ＳＬＩフラグ２１４および誤り長さフラグ３３８に対するサポートを含む。移送モード・サポート・ビット（ビット０）がゼロに等しい場合、ビット２はゼロに設定されるものとする。
５−双方向データ転送がサポートされる。双方向転送指示がアクティブである（たとえばビット５が１に設定される）場合、送方向データ転送は制御ユニット１１８によってサポートされる。ビット５がゼロに設定される場合、双方向データ転送は制御ユニット１１８によってサポートされない。このビットは、移送モード・サポート・ビットが１に等しい場合のみ有意である。
７−第１の転送準備済み使用不能がサポートされる。ビット７が１に設定される場合、第１の転送準備済み使用不能は制御ユニットによってサポートされる。ビット７がゼロに設定される場合、第１の転送準備済み使用不能動作は制御ユニットによってサポートされない。移送モード・サポート・ビット（ビット０）がゼロに等しい場合、ビット７はゼロに設定されるものとする。
【０１４４】
したがって、チャネル・サブシステムおよび制御ユニットは、ＰＲＬＩメッセージなどのログイン・メッセージを使用して、双方向データ転送についてのそれらそれぞれのサポートに関して互いに指示を与えることができる。チャネル・サブシステムあるいは制御ユニットまたはその両方は、ホスト・システム（たとえばＯＳ１１０）にも指示を与えることができる。たとえば、制御ユニットが双方向データ転送をサポートしている旨の指示を、制御ユニットからＯＳに与えることができる。一実施形態では、チャネル・サブシステムは、双方向データ転送をサポートするための機能を含む、チャネル・サブシステムあるいは制御ユニットまたはその両方の機能の指示を提供する。たとえばチャネル・サブシステムは、ＯＳからの命令に応答して、機能情報を提供することができる。
【０１４５】
機能指示の例が、図２０および図２１に示されている。図２０に示されるように、チャネル・サブシステムは、ＯＳ命令（たとえばＳＴＯＲＥ  ＣＨＡＮＮＥＬ  ＰＡＴＨ  ＤＥＳＣＲＩＰＴＩＯＮ命令）に応答して、ＯＳにチャネル経路記述ブロック５００を送信することができる。チャネル経路記述ブロック５００は、チャネル経路識別子（ＣＨＰＩＤ）フィールド５０２、記述子５０４、およびチャネル記述特有データ（ＣＤＳＤ）フィールド５０６などの、フィールドを含む。図２１を参照すると、例示的ＣＤＳＤフィールド５０６はチャネル経路記述ブロック５００のワード（たとえばワード５）であり、最大データ長さ（たとえばＴＣＷ／ＴＣＣＢについてサポートされる最大データ長さ）フィールド５０８を含む。たとえば（００  ０１ｈ）に設定されたＣＤＳＤフィールド５０６のビット０〜１５は、ＴＣＷ／ＴＣＣＢ当たりの最大バイトが６４ｋであることを意味する。拡張サポート・フィールド５１０（たとえばビット３１）は、ＦＣＸプロトコルなどのプロトコルまたはプロトコル拡張についてのサポートを示す。追加フィールド５１２（たとえばビット１６〜３０）は、チャネル・サブシステム機能に関する情報を含むことができる。たとえばフィールド５１２のＢＩＤＩビット（たとえばビット２８）は、双方向データ転送に関するチャネル・サブシステムサポートを示す。
【０１４６】
さらに詳細な説明は、米国特許公報第２００９／０２１０５５７号として公開された、２００８年２月１４日出願の米国特許出願第１２／０３０９１２号「Ｄｅｔｅｒｍｉｎｉｎｇ  Ｅｘｔｅｎｄｅｄ  Ｃａｐａｂｉｌｉｔｙ  ｏｆ  ａ  Ｃｈａｎｎｅｌ  Ｐａｔｈ」に提供されている。
【０１４７】
例示的実施形態の技術的な効果および特典は、ＴＣＣＢ内に配置されたＩ／Ｏコマンドおよびデバイス・サポート・データに加えて、移送サポート・データならびに追加のコマンドを制御ユニットに転送するための機能を含む。技術的効果は、誤り長さ条件を検出してもＤＣＷの処理を続行するための機能も含み、これによって制御ユニットはＩ／Ｏ動作を終了する必要なしにＩ／Ｏコマンドの処理を続行することができる。他の技術的効果は、単一のＩ／Ｏ動作中にチャネルと制御ユニットとの間で入力データと出力データの両方を移送するための機能を含む。
【０１４８】
本明細書で使用される用語は、特定の実施形態を説明するためのみのものであり、本発明を制限することは意図されていない。本明細書で使用される場合、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈が明確に示していない限り、複数形も含むことが意図される。「含む」あるいは「含んでいる」またはその両方の用語は、本明細書で使用される場合、示された特徴、整数、ステップ、動作、要素、あるいは構成要素、またはそれらすべての存在を指定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、あるいはそれらのグループ、またはそれらすべての存在または追加を排除するものではないことも、さらに理解されよう。
【０１４９】
以下の特許請求の範囲におけるすべての手段またはステップの対応する構造、材料、動作、および等価物に機能要素を加えた結果は、具体的に請求された他の請求要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図される。本発明の説明は、例示および説明の目的で提示されているが、本発明を網羅するかまたは開示された形に限定することは意図されていない。当業者であれば、本発明の範囲および趣旨を逸脱することなく、多くの修正および変形が明らかとなろう。実施形態は、本発明の原理および実際の適用例を最も良く説明するため、および、特定の企図された用途に好適な様々な修正を伴う様々な実施形態に関して、他の当業者が本発明を理解できるようにするために、選択および説明された。
【０１５０】
当業者であれば理解されるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具体化することができる。したがって、本発明の態様は、完全にハードウェア実施形態、完全にソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、すべてを全体として「回路」、「モジュール」、または「システム」と呼ぶことのできるソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに本発明の態様は、その上に具体化されたコンピュータ読み取り可能プログラム・コードを有する、１つまたは複数のコンピュータ読み取り可能媒体内に具体化された、コンピュータ・プログラム製品の形を取ることができる。
【０１５１】
１つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせが利用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体の、システム、装置、またはデバイス、あるいは前述の任意の好適な組み合わせとすることが可能であるが、これらに限定されない。コンピュータ読み取り可能記憶媒体のより特定の例（非網羅的リスト）は、１本または複数本のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、または前述の任意の好適な組み合わせを含むことになる。本書のコンテキストでは、コンピュータ読み取り可能記憶媒体は、命令実行のシステム、装置、またはデバイスによって、またはそれらに関連して使用するためのプログラムを含むかまたは記憶することが可能な、任意の有形媒体とすることができる。
【０１５２】
コンピュータ読み取り可能信号媒体は、たとえばベースバンド内にまたは搬送波の一部として、内部に具体化されたコンピュータ読み取り可能プログラム・コードを備える伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの任意の好適な組み合わせを含むがそれらに限定されない、様々な形のうちのいずれかを取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体ではなく、命令実行システム、装置、またはデバイスによって、またはそれらに関連して使用するためのプログラムを通信、伝搬、または移送することが可能な、任意のコンピュータ読み取り可能媒体とすることができる。
【０１５３】
コンピュータ読み取り可能媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述の任意の好適な組み合わせを含むがこれらに限定されない、任意の適切な媒体を使用して伝送可能である。
【０１５４】
本発明の態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などの、オブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語などの、従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、または、完全にリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介して、ユーザのコンピュータに接続可能であるか、または（たとえば、インターネット・サービス・プロバイダを使用し、インターネットを介して）外部コンピュータへの接続が可能である。
【０１５５】
本発明の態様は、本発明の実施形態に従った方法、装置（システム）、およびコンピュータ・プログラム製品の、流れ図あるいはブロック図またはその両方を参照しながら、以下で説明される。流れ図あるいはブロック図またはその両方の各ブロック、および流れ図あるいはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装可能であることを理解されよう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図またはその両方のブロック内に指定された機能／動作を実装するための手段を作成するように、汎用コンピュータ、特定用途向けコンピュータ、またはマシンを製造するための他のプログラマブル・データ処理装置のプロセッサに提供可能である。
【０１５６】
コンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに、特定の様式で機能するように命令可能な、コンピュータ読み取り可能媒体内にも記憶可能であり、結果としてコンピュータ読み取り可能媒体内に記憶された命令は、流れ図あるいはブロック図またはその両方のブロック内に指定された機能／動作を実装する命令を含む製品を製造することになる。
【０１５７】
コンピュータ・プログラム命令は、コンピュータ実装プロセスを生成するための一連の動作可能ステップを、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行させるために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードすることも可能であり、結果としてコンピュータまたは他のプログラマブル装置上で実行する命令が、流れ図あるいはブロック図またはその両方のブロック内に指定された機能／動作を実装するためのプロセスを提供することになる。
【０１５８】
本明細書に示された流れ図は、単なる一例である。本発明の範囲を逸脱することなく、そこに記載されたこの図またはステップ（または動作）に対する多くの変形が存在可能である。たとえばステップは異なる順序で実行可能であり、ステップは追加、削除、または修正可能である。これらの変形はすべて、請求された本発明の一部とみなされる。
【０１５９】
本発明に対する好ましい実施形態について説明してきたが、当業者であれば、現在または将来のいずれにおいても、以下の特許請求の範囲内にある様々な改良および機能強化が実行可能であることを理解されよう。これらの請求項は、第１に説明される本発明に関する適切な保護を維持するものと解釈されるべきである。
【図１】
2014522021.tif 000003
【図２】
2014522021.tif 000004
【図３】
2014522021.tif 000005
【図４】
2014522021.tif 000006
【図５】
2014522021.tif 000007
【図６】
2014522021.tif 000008
【図７】
2014522021.tif 000009
【図８】
2014522021.tif 000010
【図９】
2014522021.tif 000011
【図１０】
2014522021.tif 000012
【図１１】
2014522021.tif 000013
【図１２】
2014522021.tif 000014
【図１３】
2014522021.tif 000015
【図１４】
2014522021.tif 000016
【図１５】
2014522021.tif 000017
【図１６】
2014522021.tif 000018
【図１７】
2014522021.tif 000019
【図１８】
2014522021.tif 000020
【図１９】
2014522021.tif 000021
【図２０】
2014522021.tif 000022
【図２１】
2014522021.tif 000023
【手続補正書】
【提出日】平成26年1月24日(2014.1.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
制御ユニットとの通信用に構成されたホスト・コンピュータ・システムでＩ／Ｏ動作命令によって開始される入力／出力（Ｉ／Ｏ）動作を実行する方法であって、
チャネル・サブシステムと制御ユニットとの間のリンクを初期化するために、前記ホスト・コンピュータ・システム内の前記チャネル・サブシステムによって、プロセス・ログイン（ＰＲＬＩ）要求メッセージを前記制御ユニットに送信することであって、前記ＰＲＬＩ要求メッセージは、前記チャネル・サブシステムが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、送信すること、
前記制御ユニットからＰＲＬＩ応答メッセージを受信することであって、前記ＰＲＬＩ応答メッセージは、前記制御ユニットが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、受信すること、
双方向データ転送がサポートされている旨の指示をホスト・オペレーティング・システムに提供すること、および、
前記ホスト・コンピュータ・システムから受信した前記Ｉ／Ｏ動作命令の実行に応答して、
前記ホスト・コンピュータ・システムから受信した前記Ｉ／Ｏ動作命令に関連付けられた複数のコマンドを収集することであって、前記複数のコマンドのうちの少なくとも１つは入力データ転送を指定し、前記複数のコマンドのうちの少なくとも１つは出力データ転送を指定する、収集すること、
前記複数のコマンドを前記制御ユニットに転送すること、
前記制御ユニットに転送されることになる出力データを含む少なくとも１つの出力データ・メッセージを前記制御ユニットに送信することであって、前記出力データ・メッセージは出力データ転送を指定する前記複数のコマンドのうちの少なくとも１つに関連付けられる、送信すること、および、
前記ホスト・コンピュータ・システムの主記憶内に記憶されることになる入力データを含む少なくとも１つの入力メッセージを前記制御ユニットから受信することであって、前記入力データ・メッセージは入力データ転送を指定する前記複数のコマンドのうちの少なくとも１つに関連付けられる、受信すること、
を含む方法。
【請求項２】
前記複数のコマンドが、それぞれがＩ／Ｏコマンドに関連付けられた複数のデバイス・コマンド・ワード（ＤＣＷ）であって、前記収集することが、前記Ｉ／Ｏ動作について前記ホスト・コンピュータ・システム内の前記チャネル・サブシステムで移送コマンド・ワード（ＴＣＷ）を取得することを含み、前記ＴＣＷが、前記ホスト・コンピュータ・システムの前記主記憶内にＴＣＣＢのアドレスを含む移送コマンド制御ブロック（ＴＣＣＢ）アドレス・フィールドを含み、前記ＴＣＣＢが前記複数のＤＣＷを含み、前記ＤＣＷの少なくとも１つが入力データ転送を指定し、前記ＤＣＷの少なくとも１つが出力データ転送を指定する、請求項１に記載の方法。
【請求項３】
前記複数のコマンドを転送することが、前記複数のＤＣＷを含む前記ＴＣＣＢを前記制御ユニットに転送することを含む、請求項２に記載の方法。
【請求項４】
前記指示が、第１の転送準備済み使用不能条件が有効であるかどうかを指定するように構成され、前記方法が、
前記第１の転送準備済み使用不能条件が有効であることに応答して、前記ＴＣＣＢの転送に続いて、および前記制御ユニットからの少なくとも１つのメッセージの受信に先立ち、前記少なくとも１つの出力データ・メッセージを前記制御ユニットに送信すること、および
前記第１の転送準備済み使用不能条件が有効でないことに応答して、前記少なくとも１つの出力データ・メッセージの送信に先立ち、前記制御ユニットから前記少なくとも１つのメッセージを受信すること、
をさらに含む、請求項３に方法。
【請求項５】
前記制御ユニットからのメッセージが、前記チャネル・サブシステムに出力データを送信するよう要求する転送準備済みメッセージおよび前記入力データ・メッセージのうちの１つを含む、請求項４に記載の方法。
【請求項６】
前記ＴＣＣＢが前記制御ユニットに送信される移送コマンド情報ユニット（ＩＵ）内に含まれ、前記移送コマンドＩＵが移送コマンド・ヘッダ（ＴＣＨ）を含み、前記ＴＣＨが、前記チャネル・サブシステムが双方向データ転送を要求しているかどうかを示すフィールドを含む、請求項２に記載の方法。
【請求項７】
前記ＴＣＣＢが、転送されることになる出力データ量を指定する書き込みデータ長さ（ＤＬ）フィールド、および転送されることになる入力データ量を指定する双方向読み取りデータ長さ（ＢＲＤＬ）フィールドを含む、請求項６に記載の方法。
【請求項８】
前記方法が、前記制御ユニットが双方向データ動作をサポートしていないことに応答して、前記Ｉ／Ｏ動作が終了したことを示す移送応答メッセージを前記制御ユニットから受信することをさらに含み、前記移送応答メッセージが、
前記制御ユニットが、前記ＴＣＨ内の読み取り（Ｒ）ビットおよび書き込み（Ｗ）ビットの両方が１に設定されること、および前記ＴＣＣＢが前記ＢＲＤＬを含まないことを検出すること、および
前記制御ユニットが、前記ＴＣＨ内のＲビットおよび書き込みＷビットの両方が１に設定されること、および前記制御ユニットが双方向データ転送をサポートしていないことを検出すること、
のうちの少なくとも１つに応答して、ＴＣＨコンテンツ・エラー指示を含む、請求項７に記載の方法。
【請求項９】
前記方法が、前記Ｉ／Ｏ動作が終了したことを示す移送応答メッセージを前記制御ユニットから受信することをさらに含み、前記移送応答メッセージが、
前記ＴＣＣＢ内のＤＬフィールド値と前記制御ユニットによって受信された出力データ量との間の差異を指定する、データ長さ残余カウント（ＤＬＲＣ）フィールド、および
前記ＴＣＣＢ内のＢＲＤＬフィールド値と前記制御ユニットによって送信される入力データ量との間の差異を指定する、ＢＲＤＬ残余カウント
を含む、請求項７に記載の方法。
【請求項１０】
前記チャネル・サブシステムが、
前記ＤＬＲＣ値が、前記ＴＣＣＢ内の前記ＤＬフィールド値と前記制御ユニットに送信される出力データの量との間の差異に合致しないこと、
ＢＲＤＬ残余カウント値が、前記ＢＲＤＬフィールド値と前記制御ユニットから受信する入力データ量との間の差異に合致しないこと、
のうちの少なくとも１つに応答して、エラーを検出する、請求項９に記載の方法。
【請求項１１】
前記ＰＲＬＩ要求メッセージが、前記制御ユニットが移送モード・プロトコルをサポートしているかどうかを示すための要求を前記制御ユニットに示し、前記移送モード・プロトコルが前記ＴＣＷおよび前記ＴＣＣＢの使用をサポートしており、前記ＰＲＬＩ応答メッセージが、前記制御ユニットが前記移送モード・プロトコルをサポートしているかどうかを示すフィールドを含む、請求項９に記載の方法。
【請求項１２】
制御ユニットとの通信用に構成されたホスト・コンピュータ・システムでＩ／Ｏ動作命令によって開始される入力／出力（Ｉ／Ｏ）動作を実行するための装置であって、前記ホスト・コンピュータ・システムが、
チャネル・サブシステムと制御ユニットとの間のリンクを初期化するために、前記ホスト・コンピュータ・システム内の前記チャネル・サブシステムによって、プロセス・ログイン（ＰＲＬＩ）要求メッセージを前記制御ユニットに送信することであって、前記ＰＲＬＩ要求メッセージは、前記チャネル・サブシステムが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、送信すること、
前記制御ユニットからＰＲＬＩ応答メッセージを受信することであって、前記ＰＲＬＩ応答メッセージは、前記制御ユニットが双方向データ転送をサポートしているかどうかを示す値を有するフィールドを含む、受信すること、
双方向データ転送がサポートされている旨の指示をホスト・オペレーティング・システムに提供すること、および、
前記ホスト・コンピュータ・システムから受信した前記Ｉ／Ｏ動作命令の実行に応答して、
前記ホスト・コンピュータ・システムから受信した前記Ｉ／Ｏ動作命令に関連付けられた複数のコマンドを収集することであって、前記複数のコマンドのうちの少なくとも１つは入力データ転送を指定し、前記複数のコマンドのうちの少なくとも１つは出力データ転送を指定する、収集すること、
前記複数のコマンドを前記制御ユニットに転送すること、
前記制御ユニットに転送されることになる出力データを含む少なくとも１つの出力データ・メッセージを前記制御ユニットに送信することであって、前記出力データ・メッセージは出力データ転送を指定する前記複数のコマンドのうちの少なくとも１つに関連付けられる、送信すること、および、
前記ホスト・コンピュータ・システムの主記憶内に記憶されることになる入力データを含む少なくとも１つの入力メッセージを前記制御ユニットから受信することであって、前記入力データ・メッセージは入力データ転送を指定する前記複数のコマンドのうちの少なくとも１つに関連付けられる、受信すること、
を実行するように構成された、装置。
【請求項１３】
請求項１乃至１１のいずれかに記載の方法を、コンピュータに実行させるコンピュータ・プログラム。
【国際調査報告】
2014522021.tif 000024
2014522021.tif 000025