(57)【特許請求の範囲】
【請求項１】
メイン・ストレージと、ストレージ・クラス・メモリ（フラッシュ・メモリを実装したＩ／Ｏアダプタおよびソリッド・ステート・デバイスを含む。以下同じ。）とを含むコンピューティング環境において、ストレージ・クラス・メモリ情報格納コマンドを実行する命令を実行する方法であって、前記方法は、
入出力（Ｉ／Ｏ）サブシステムによって要求ブロックを取得するステップであって、前記要求ブロックは、前記ストレージ・クラス・メモリ情報格納コマンドを示すコマンド・コードを含む、前記取得するステップと、
前記コマンド・コードに基づき、前記Ｉ／Ｏサブシステムによって前記ストレージ・クラス・メモリに関する情報を取得するステップと、
応答ブロックに前記情報を格納するステップであって、前記応答ブロックは、ヘッダ・エリアと、ストレージ・クラス・メモリ・アドレスの１つ以上の範囲を占有する１つ以上のストレージ・クラス・メモリ・インクリメントを表す１つ以上のエントリのストレージ・クラス・メモリ・アドレス・リストとを含むように構成されており、前記情報を格納するステップは、ヘッダ情報を前記ヘッダ・エリアに格納するステップ、および前記１つ以上のエントリを前記応答ブロックに格納するステップを含み、前記ヘッダ・エリアは、１つ以上のエントリの前記リストについてのパラメータを含み、前記パラメータは、ストレージ・クラス・メモリ・インクリメントのサイズのインジケーションを含む、前記情報を格納するステップと
を含む、方法。
【請求項２】
前記１つ以上のエントリのうちのエントリを前記応答ブロックに格納するステップは、前記エントリに対応する前記ストレージ・クラス・メモリ・インクリメントが構成済み状態であり、かつ前記エントリのために利用可能な空間が前記応答ブロック内にあることに応答して、前記エントリを前記応答ブロックに格納するステップを含む、請求項１に記載の方法。
【請求項３】
前記応答ブロックは、前記ストレージ・クラス・メモリ情報格納コマンドの格納の実行を、前記ストレージ・クラス・メモリ情報格納コマンドの後の実行において再開するための継続ポイントを示す、継続トークンを含むようさらに構成されており、格納する前記ステップは、前記エントリの前記応答ブロックへの格納を前記ストレージ・クラス・メモリ情報格納コマンドの後の実行が継続できるようにするべく、前記空間が利用不可能であることに応答して前記継続トークンに規定値を格納するステップを含む、請求項２に記載の方法。
【請求項４】
前記要求ブロックは、前記ストレージ・クラス・メモリ情報格納コマンドに関する継続ポイントを表す継続トークン用のトークン・フィールドを含むようさらに構成されており、前記ストレージ・クラス・メモリ情報格納コマンドの後の実行は、前記要求ブロック内の前記トークン・フィールドが前記規定値に設定されていることに応答して、前記要求ブロックの前記トークン・フィールド内で指定された前記継続ポイントから、前記エントリの前記応答ブロックへの格納を継続する、請求項３に記載の方法。
【請求項５】
前記エントリは、前記エントリに対応する前記ストレージ・クラス・メモリ・インクリメントの、ストレージ・クラス・メモリ・アドレス空間における開始アドレスを含む、請求項２に記載の方法。
【請求項６】
前記方法は、ストレージ・クラス・メモリ・インクリメント・サイズを前記開始アドレスに加算して、１を減じることによって、前記ストレージ・クラス・メモリ・インクリメントの、ストレージ・クラス・メモリ・アドレス空間における終了アドレスを求めるステップをさらに含み、前記ストレージ・クラス・メモリ・インクリメント・サイズは、前記応答ブロックに含まれる、請求項５に記載の方法。
【請求項７】
前記エントリは、前記ストレージ・クラス・メモリ・インクリメントに適用される現在の持続性ルールを示す持続性属性と、前記ストレージ・クラス・メモリ・インクリメントの動作状態と、前記ストレージ・クラス・メモリ・インクリメントのコンテンツのデータ状態と、前記ストレージ・クラス・メモリ・インクリメントが解放動作を認識するかどうかを示す解放インジケーションと、前記ストレージ・クラス・メモリ・インクリメントを提供するリソースを識別するリソース識別子とのうちの１つ以上をさらに含む、請求項５に記載の方法。
【請求項８】
格納する前記ステップに応答して、前記応答ブロックは、アドレス指定可能な最上位のストレージ・クラス・メモリ・インクリメント内の最後のバイトのストレージ・クラス・メモリ・アドレスを識別する、最大ストレージ・クラス・メモリ・アドレスをさらに含む、請求項１に記載の方法。
【請求項９】
格納する前記ステップに応答して、前記応答ブロックは、構成され得るストレージ・クラス・メモリ・インクリメントの最大数を示す、構成可能な最大ストレージ・クラス・メモリ・インクリメント・フィールドをさらに含む、請求項１に記載の方法。
【請求項１０】
格納する前記ステップに応答して、前記応答ブロックは、初期化状態のストレージ・クラス・メモリ・インクリメントの数を示す、初期化ストレージ・クラス・メモリ・インクリメントの合計フィールド、または非初期化状態のストレージ・クラス・メモリ・インクリメントの数を示す、非初期化ストレージ・クラス・メモリ・インクリメントの合計フィールドのうちの少なくとも１つをさらに含む、請求項１に記載の方法。
【請求項１１】
格納する前記ステップに応答して、前記応答ブロックは、前記ストレージ・クラス・メモリ情報格納コマンドの実行を試行した結果を示す応答コード、または前記ストレージ・クラス・メモリ情報格納コマンドの実行の前記試行に関する追加情報を提供する応答修飾子、または前記ストレージ・クラス・メモリに関連する動作を実行するために使用される移動指定ブロックのブロック・カウント・フィールド内で使用され得る最大値を示す、移動指定ブロック毎の最大ブロック・カウント・フィールド、または前記ストレージ・クラ ス・メモリ上で動作を実行するために使用される動作ブロック内で指定され得る移動指定ブロックの最大カウントを示す、最大移動指定ブロック・カウントのうちの少なくとも１つをさらに含む、請求項１に記載の方法。
【請求項１２】
格納する前記ステップに応答して、前記応答ブロックは、ストレージ・クラス・メモリの測定ブロックのサイズを示すストレージ・クラス・メモリ測定ブロック・サイズと、ストレージ・クラス・メモリ・インクリメントに関連付けられるリソース・パーツの最大数を示す、リソース・パーツの最大数と、前記ストレージ・クラス・メモリに関連する測定に使用されるデータ・ユニットのサイズを示すストレージ・クラス・メモリ・データ・ユニット・サイズとのうちの少なくとも１つをさらに含む、請求項１１に記載の方法。
【請求項１３】
メイン・ストレージと、ストレージ・クラス・メモリとを含むコンピューティング環境において、ストレージ・クラス・メモリ情報格納コマンドを実行する命令を実行するコンピュータ・システムであって、前記コンピュータ・システムは、
メモリと、
前記メモリと通信しているプロセッサと
を含み、前記コンピュータ・システムは、請求項１〜１２のいずれか１項に記載の方法を実行するように構成されている、コンピュータ・システム。
【請求項１４】
メイン・ストレージと、ストレージ・クラス・メモリとを含むコンピューティング環境において、ストレージ・クラス・メモリ情報格納コマンドを実行する命令を実行するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
処理回路によって読み取り可能であって、請求項１〜１２のいずれか１項に記載の方法を実行するために前記処理回路によって実行される命令を格納する、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の１つ以上の側面は、一般的には、コンピューティング環境の補助ストレージに関し、特に、補助ストレージの各側面を管理することに関する。
【背景技術】
【０００２】
コンピューティング環境には、メイン・ストレージ（別名メイン・メモリ）ならびに補助ストレージが含まれ得る。メイン・ストレージは、プロセッサがアクセスでき、例えば絶対アドレスによって、任意にアドレス指定可能なストレージである。メイン・ストレージは、直接アクセス・ストレージ・デバイス（ＤＡＳＤ：ｄｉｒｅｃｔ  ａｃｃｅｓｓ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）またはストレージ・クラス・メモリなどの補助ストレージと比較して、高速アクセスのストレージと考えられている。さらに、メイン・ストレージのアドレス指定は、ＤＡＳＤまたはストレージ・クラス・メモリのアドレス指定よりも単純であると考えられている。
【０００３】
典型的なメイン・ストレージ外の外部ストレージ空間であるストレージ・クラス・メモリは、直接アクセス・ストレージ・デバイスよりも高速なアクセスを提供する。ＤＡＳＤとは異なり、ストレージ・クラス・メモリは、通常、メカニカル・アーム回転ディスクとしてではなく、代わりに、非メカニカルのソリッド・ステート部品として実装される。通常、ストレージ・クラス・メモリは、いくつかの入出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）アダプタを介してコンピューティング・システムに接続されたソリッド・ステート・デバイスのグループとして実装される。Ｉ／Ｏアダプタは、Ｉ／Ｏデバイスの技術を中央処理ユニット（単数または複数）のメモリ・バスにマッピングするために使用される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メイン・ストレージと、ストレージ・クラス・メモリとを含むコンピューティング環境において、ストレージ・クラス・メモリ情報格納（Ｓｔｏｒｅ  Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｍｅｍｏｒｙ  Ｉｎｆｏｒｍａｔｉｏｎ）コマンドを実行する命令を実行するためのコンピュータ・プログラム製品を提供することによって、従来技術の欠点に対処し、利点を提供する。
【課題を解決するための手段】
【０００５】
コンピュータ・プログラム製品は、処理回路によって読み取り可能なコンピュータ読み取り可能ストレージ媒体であって、方法を実行するために処理回路によって実行される命令を格納する、コンピュータ読み取り可能ストレージ媒体を含む。この方法は、例えば、入出力（Ｉ／Ｏ）サブシステムによって要求ブロックを取得するステップであって、要求ブロックは、ストレージ・クラス・メモリ情報格納コマンドを示すコマンド・コードを含む、ステップと、コマンド・コードに基づき、Ｉ／Ｏサブシステムによってストレージ・クラス・メモリに関する情報を取得するステップと、応答ブロックに情報を格納するステップであって、応答ブロックは、ヘッダ・エリアと、ストレージ・クラス・メモリ・アドレスの１つ以上の範囲を占有する１つ以上のストレージ・クラス・メモリ・インクリメントを表す１つ以上のエントリのストレージ・クラス・メモリ・アドレス・リストとを含むように構成されており、情報を格納するステップは、ヘッダ情報をヘッダ・エリアに格納するステップ、および１つ以上のエントリを応答ブロックに格納するステップを含み、ヘッダ・エリアは、１つ以上のエントリのリストについてのパラメータを含み、パラメータは、ストレージ・クラス・メモリ・インクリメントのサイズのインジケーションを含む、ステップとを含む。
【０００６】
さらに、本発明の１つ以上の側面に関する方法およびシステムが、本願明細書に記載され、特許請求される。さらに、本発明の１つ以上の側面に関するサービスについても、本願明細書において記載され、特許請求され得る。
【０００７】
本発明の技術によって、さらなる特徴および利点が実現される。本発明のほかの実施形態および側面が、本願明細書に詳しく記載されており、特許請求される発明の一部と見なされる。
【０００８】
以下、単なる例として、添付の図面を参照しながら、本発明の実施形態（単数または複数）について記載する。
【図面の簡単な説明】
【０００９】
【図１】本発明の１つ以上の側面を組み入れて使用する、コンピューティング環境の一実施形態を示す。
【図２】本発明の１つ以上の側面を組み入れて使用する、コンピューティング環境の別の実施形態を示す。
【図３】本発明の側面に従って使用される、拡張非同期データ・ムーバ（Ｅｘｔｅｎｄｅｄ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｄａｔａ  Ｍｏｖｅｒ）動作要求ブロックの一実施形態を示す。
【図４】本発明の側面に従って使用される、拡張非同期データ・ムーバ動作ブロックの一実施形態を示す。
【図５】本発明の側面に従って使用される、拡張非同期データ・ムーバ要求ブロックの一実施形態を示す。
【図６】本発明の側面に従って使用される、拡張非同期データ・ムーバ応答ブロックの一実施形態を示す。
【図７】本発明の側面に従って使用される、拡張非同期データ・ムーバ移動指定ブロックの一実施形態を示す。
【図８】本発明の側面に従って使用される、拡張非同期データ・ムーバ間接データ・アドレス・ワードの一実施形態を示す。
【図９】本発明の側面に従って使用される、サブチャネル開始（Ｓｔａｒｔ  Ｓｕｂｃｈａｎｎｅｌ）命令の一実施形態を示す。
【図１０】本発明の側面による、サブチャネル開始命令に関連する論理の一実施形態を示す。
【図１１】本発明の側面に従って使用される、サブチャネル・クリア（Ｃｌｅａｒ  Ｓｕｂｃｈａｎｎｅｌ）命令の一実施形態を示す。
【図１２】本発明の側面に従って使用される、サブチャネル・テスト（Ｔｅｓｔ  Ｓｕｂｃｈａｎｎｅｌ）命令の一実施形態を示す。
【図１３】本発明の側面に従って使用される、サブチャネル変更（Ｍｏｄｉｆｙ  Ｓｕｂｃｈａｎｎｅｌ）命令の一実施形態を示す。
【図１４】本発明の側面に従って使用される、サブチャネル格納（Ｓｔｏｒｅ  Ｓｕｂｃｈａｎｎｅｌ）命令の一実施形態を示す。
【図１５】図１５Ａは、本発明の側面に従って使用される、拡張非同期データ・ムーバ・サブチャネル情報ブロックの一実施形態を示し、図１５Ｂは、本発明の側面に従って使用される、拡張非同期データ・ムーバ・パス管理制御ワードの一実施形態を示し、図１５Ｃは、本発明の側面に従って使用される、サブチャネル・ステータス・ワードの一実施形態を示し、図１５Ｄは、本発明の側面に従って使用される、拡張非同期データ・ムーバ拡張ステータス・ワードの一実施形態を示す。
【図１６】本発明の側面に従って使用される、ストレージ・クラス・メモリ情報格納（Ｓｔｏｒｅ  Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｍｅｍｏｒｙ  Ｉｎｆｏｒｍａｔｉｏｎ）要求ブロックの一実施形態を示す。
【図１７】本発明の側面に従って使用される、ストレージ・クラス・メモリ情報格納応答ブロックの一実施形態を示す。
【図１８】本発明の側面に従って使用される、ストレージ・クラス・メモリ・アドレス・リスト・エントリの一実施形態を示す。
【図１９】本発明の側面による、ストレージ・クラス・メモリ情報格納コマンドに関連する論理の一実施形態を示す。
【図２０】本発明の側面による、ストレージ・クラス・メモリの様々な状態を表す状態図の一例を示す。
【図２１】本発明の側面による、動作状態およびデータ状態を示す状態図の一実施形態を示す。
【図２２】本発明の側面に従って使用される、ストレージ・クラス・メモリ構成要求ブロックの一実施形態を示す。
【図２３】本発明の側面に従って使用される、ストレージ・クラス・メモリ構成応答ブロックの一実施形態を示す。
【図２４】本発明の側面に従って使用される、ストレージ・クラス・メモリ構成コマンドに関連する論理の一実施形態を示す。
【図２５】本発明の側面に従って使用される、ストレージ・クラス・メモリ構成コマンドに関連する論理の一実施形態を示す。
【図２６】図２６Ａは、本発明の側面に従って使用される、通知応答ブロックの一例を示し、図２６Ｂは、本発明の側面に従って使用される、イベント情報格納（Ｓｔｏｒｅ  Ｅｖｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ）要求ブロックの一実施形態を示し、図２６Ｃは、本発明の側面に従って使用される、イベント情報格納応答ブロックの一実施形態を示す。
【図２７】本発明の側面に従って使用される、ストレージ・クラス・メモリ構成解除（Ｄｅｃｏｎｆｉｇｕｒｅ  Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｍｅｍｏｒｙ）要求ブロックの一実施形態を示す。
【図２８】本発明の側面に従って使用される、ストレージ・クラス・メモリ・インクリメント要求リスト・エントリの一実施形態を示す。
【図２９】本発明の側面に従って使用される、ストレージ・クラス・メモリ構成解除応答ブロックの一実施形態を示す。
【図３０】本発明の側面に従って使用される、ストレージ・クラス・メモリ構成解除コマンドに関連する論理の一実施形態を示す。
【図３１】本発明の側面に従って使用される、ストレージ・クラス・メモリ構成解除コマンドに関連する論理の一実施形態を示す。
【図３２】本発明の１つ以上の側面を組み入れるコンピュータ・プログラム製品の一実施形態を示す。
【図３３】本発明の１つ以上の側面を組み入れて使用する、ホスト・コンピュータ・システムの一実施形態を示す。
【図３４】本発明の１つ以上の側面を組み入れて使用する、コンピュータ・システムのさらなる例を示す。
【図３５】本発明の１つ以上の側面を組み入れて使用する、コンピュータ・ネットワークを含むコンピュータ・システムの別の例を示す。
【図３６】本発明の１つ以上の側面を組み入れて使用する、コンピュータ・システムの様々な構成要素の一実施形態を示す。
【図３７】本発明の１つ以上の側面を組み入れて使用する、図３６のコンピュータ・システムの、実行ユニットの一実施形態を示す。
【図３８】本発明の１つ以上の側面を組み入れて使用する、図３６のコンピュータ・システムの、分岐ユニットの一実施形態を示す。
【図３９】本発明の１つ以上の側面を組み入れて使用する、図３６のコンピュータ・システムの、ロード／格納ユニットの一実施形態を示す。
【図４０】本発明の１つ以上の側面を組み入れて使用する、エミュレートされたホスト・コンピュータ・システムの一実施形態を示す。
【発明を実施するための形態】
【００１０】
ストレージ・クラス・メモリの実装の詳細をプログラム（例えばオペレーティング・システム）から隠す、ストレージ・クラス・メモリの抽象化であって、メイン・ストレージとストレージ・クラス・メモリとの間のデータの移動を制御することなどの特定のアクションを実行するための標準のチャネル・プログラミング・インターフェースを提供する、ストレージ・クラス・メモリの抽象化が、１つ以上の実施形態により提供される。
【００１１】
一例では、拡張非同期データ・ムーバ（ＥＡＤＭ：Ｅｘｔｅｎｄｅｄ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｄａｔａ  Ｍｏｖｅｒ）ファシリティと呼ばれるファシリティが提供される。これは、プログラムが、メイン・ストレージとストレージ・クラス・メモリとの間のデータのブロックの転送を要求すること、ならびにほかの動作を要求することを可能にする。このファシリティの各側面については、下記に詳述する。
【００１２】
さらに、ＥＡＤＭファシリティには、ＥＡＤＭ解放ファシリティと呼ばれる任意選択のファシリティが関連付けられる。ＥＡＤＭ解放ファシリティは、インストールされると、ストレージ・クラス・メモリの１つ以上のブロックにおけるデータの保持を必要としなくなったことをプログラムが指定するための手段を提供する。解放動作が、ストレージ・クラス・メモリのすべてのブロックに対してサポートされるか、またはストレージ・クラス・メモリのサブセットのみに対してサポートされるかは、モデルに依存する。
【００１３】
ストレージ・クラス・メモリのブロックが解放されると、プログラムは、新たなデータをそのブロック内へ転送してもよい。それがなされなければ、その後の、該ブロックからメイン・ストレージへデータを転送する要求は、不成功となる。
【００１４】
本発明の１つ以上の側面を組み入れる、もしくは使用する、またはその両方を行うコンピューティング環境の一実施形態について、図１を参照して説明する。コンピューティング環境１００は、例えば、ニューヨーク州アーモンク市（Ａｒｍｏｎｋ，Ｎｅｗ  Ｙｏｒｋ）のインターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ（ＩＢＭ社の登録商標）：Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ）により提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）に基づく。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）の実施形態は、「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」という題のＩＢＭ（ＩＢＭ社の登録商標）刊行物である、ＩＢＭ  Ｐｕｂｌｉｃａｔｉｏｎ  Ｎｏ．ＳＡ２２−７８３２−０８、２０１０年８月に記載されており、その内容全体を参照によって本願明細書に引用したものとする。一例では、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）に基づくコンピューティング環境として、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるｚＥｎｔｅｒｐｒｉｓｅ  １９６（ｚ１９６）システムがある。ＩＢＭ（ＩＢＭ社の登録商標）およびｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）は、米国ニューヨーク州アーモンク市のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標であり、ｚＥｎｔｅｒｐｒｉｓｅ  １９６およびｚ１９６は、同社の商標である。本願明細書で使用されるほかの名称が、インターナショナル・ビジネス・マシーンズ・コーポレーションまたはその他企業の登録商標、商標もしくは製品名であることもある。
【００１５】
一例として、コンピューティング環境１００は、１つ以上のバス１０６を介してメイン・メモリ１０４に結合された１つ以上の中央処理ユニット１０２を含む。中央処理ユニットのうちの１つ以上は、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるｚ／ＯＳ（ＩＢＭ社の登録商標）オペレーティング・システムなどのオペレーティング・システム１０８を実行するとよい。ほかの例では、中央処理ユニットのうちの１つ以上は、ほかのオペレーティング・システムを実行しても、オペレーティング・システムを実行しなくてもよい。ｚ／ＯＳ（ＩＢＭ社の登録商標）は、米国ニューヨーク州アーモンク市のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。
【００１６】
中央処理ユニット１０２およびメイン・メモリ１０４はさらに、１つ以上の接続１２２（例えばバスまたはその他の接続）を介してＩ／Ｏハブ１２０に結合されるとよい。Ｉ／Ｏハブは、１つ以上のＩ／Ｏアダプタ１３０への接続性を提供し、Ｉ／Ｏアダプタ１３０はさらに、１つ以上のソリッド・ステート・デバイス１４０に結合されている。このアダプタおよびソリッド・ステート・デバイスは、ストレージ・クラス・メモリの実装である（例えばフラッシュ・メモリ）。Ｉ／Ｏハブは、実施形態の１つ以上の側面を促進するＩ／Ｏサブシステム１４５の一部である。
【００１７】
図２に示されているように、さらなる実施形態では、コンピューティング環境１５０が、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）に基づく中央処理コンプレックス（ＣＰＣ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｃｏｍｐｌｅｘ）１５２を含むとよい。中央プロセッサ・コンプレックス１５２は、例えば、１つ以上のパーティション１５４と、ハイパーバイザ１５６と、１つ以上の中央プロセッサ１５８と、入出力サブシステム１６０の１つ以上のコンポーネントとを含む。この例では、パーティション１５４は、論理パーティション（例えばＬＰＡＲ（ｌｏｇｉｃａｌ  ｐａｒｔｉｔｉｏｎ））であり、そのそれぞれが、個別のシステムとして仮想化されたシステムのハードウェア・リソースのセットを含む。
【００１８】
各論理パーティション１５４は、個別のシステムとして機能できる。すなわち、各論理パーティションは、独立してリセットされること、必要に応じて初めにオペレーティング・システムまたはその他制御コードを搭載されること、さらに異なるプログラムとともに動作することができる。論理パーティションにおいて実行されるオペレーティング・システムまたはアプリケーション・プログラムは、全体的かつ完全なシステムにアクセスできるように見えるが、実際は、その一部分のみが利用可能である。ファームウェアと呼ばれる、ハードウェアとライセンス内部コード（ＬＩＣ：ｌｉｃｅｎｓｅｄ  ｉｎｔｅｒｎａｌ  ｃｏｄｅ）との組み合わせが、１つの論理パーティション内のプログラムによって、ほかの論理パーティション内のプログラムが妨げられないようにする。これにより、いくつかの異なる論理パーティションが、タイムスライス方式で単一または複数の物理プロセッサ上で動作できる。本願明細書で使用されるファームウェアには、例えば、プロセッサ（または処理を実行するエンティティ）のマイクロコード、ミリコード、もしくはマクロコード、またはそのいずれかの組み合わせが含まれる。これには、例えば、上位マシン・コードを実装するのに使用されるハードウェア・レベルの命令もしくはデータ構造またはその両方が含まれる。一実施形態では、これには例えば、信頼できるソフトウェアを含むマイクロコード、または基礎をなすハードウェアに特有でありシステム・ハードウェアに対するオペレーティング・システムのアクセスを制御するマイクロコードとして典型的に供給される、プロプライエタリ・コードが含まれる。
【００１９】
この例では、論理パーティションのいくつかは、常駐オペレーティング・システム（ＯＳ：ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）１７０を有し、これは１つ以上の論理パーティションで異なってもよい。一実施形態では、少なくとも１つの論理パーティションが、ニューヨーク州アーモンク市のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるｚ／ＯＳ（ＩＢＭ社の登録商標）オペレーティング・システムを実行している。
【００２０】
論理パーティション１５４は、中央プロセッサ１５８上で実行されるファームウェアによって実装される、ハイパーバイザ１５６により管理される。論理パーティション１５４およびハイパーバイザ１５６はそれぞれ、中央プロセッサに関連するメイン・メモリ１５９の個々の部分に存在する１つ以上のプログラムを含む。ハイパーバイザ１５６の一例は、ニューヨーク州アーモンク市のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるＰｒｏｃｅｓｓｏｒ  Ｒｅｓｏｕｒｃｅ／Ｓｙｓｔｅｍｓ  Ｍａｎａｇｅｒ（ＰＲ／ＳＭ（ＩＢＭ社の商標））である。
【００２１】
中央プロセッサ１５８は、論理パーティションに割り当てられる物理プロセッサ・リソースである。例えば、論理パーティション１５４は、１つ以上の論理プロセッサを含み、そのそれぞれが、パーティションに割り当てられた物理プロセッサ・リソース１５８の全部または一部分を表す。特定のパーティション１５４の論理プロセッサは、そのパーティション専用とされて、基礎をなすプロセッサ・リソースがそのパーティション用に予約されてもよく、または別のパーティションと共有されて、基礎をなすプロセッサ・リソースが別のパーティションに利用可能となる可能性があってもよい。
【００２２】
入出力サブシステム１６０（その一部分のみが示されている）は、ストレージ・クラス・メモリ１８０への接続性を提供する。この例では、ストレージ・クラス・メモリに関して、物理的な実装の詳細をプログラムから隠して、フラットとしてメモリを提示するアドレス空間が提供される。一例として、ストレージ・クラス・メモリには、システム全体で１つのアドレス空間があるが、構成（例えばＬＰＡＲ、または別の実施形態では仮想ゲスト）の観点からは、ストレージ・クラス・メモリ・インクリメントがポピュレートされるアドレス空間が、システムの各構成に対し１つある。ストレージ・クラス・メモリ・アドレス空間は、メイン・ストレージ・アドレス空間とは独立し、別である。
【００２３】
ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）の具体的な一例では、Ｉ／Ｏサブシステムは、チャネル・サブシステムを含み、これは、Ｉ／Ｏ周辺制御ユニット（およびデバイス）とメイン・メモリとの間だけでなく、ストレージ・クラス・メモリとメイン・メモリとの間の情報のフローも導く。なお、Ｉ／Ｏサブシステムは、チャネル・サブシステム以外であってもよい。
【００２４】
チャネル・サブシステムの場合、ＥＡＤＭ動作を実行するためにサブチャネルが使用される。これらのサブチャネルは、非同期データ・ムーバ（ＡＤＭ：Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｄａｔａ  Ｍｏｖｅｒ）タイプ・サブチャネルと呼ばれ、ほかのＩ／Ｏタイプ・サブチャネルのようにＩ／Ｏデバイスではなく、ＥＡＤＭ動作に関連する。ＡＤＭタイプ・サブチャネルは、デバイス番号を含まず、チャネルパス情報も含まない。構成に対して提供されるＡＤＭタイプ・サブチャネルの数は、モデルに依存する。ＡＤＭタイプ・サブチャネルは、サブシステム識別ワード（ＳＩＤ：ｓｕｂｓｙｓｔｅｍ  ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  ｗｏｒｄ）によりアドレス指定される。
【００２５】
ＡＤＭタイプ・サブチャネルは、チャネル・サブシステムに対する拡張である拡張非同期データ・ムーバ・ファシリティによって使用される。本願明細書に記載されるように、ＥＡＤＭファシリティは、プログラムが、メイン・ストレージとストレージ・クラス・メモリとの間でのデータのブロックの転送を要求すること、ならびにそのほか、ストレージ・クラス・メモリのブロックのクリアまたはストレージ・クラス・メモリのブロックの解放などの動作を実行することを可能にする。一実施形態では、ＥＡＤＭファシリティがインストールされている場合、以下が当てはまる。
【００２６】
＊  ＥＡＤＭ動作に使用される１つ以上のＡＤＭタイプ・サブチャネルが提供される。
【００２７】
＊  指定のＥＡＤＭ動作ブロック（ＡＯＢ：ＥＡＤＭ−ｏｐｅｒａｔｉｏｎ  ｂｌｏｃｋ）によって、ＥＡＤＭ動作が指示される。ＡＯＢには、ＥＡＤＭ要求ブロック（ＡＲＱＢ：ＥＡＤＭ−ｒｅｑｕｅｓｔ  ｂｌｏｃｋ）およびＥＡＤＭ応答ブロック（ＡＲＳＢ：ＥＡＤＭ−ｒｅｓｐｏｎｓｅ  ｂｌｏｃｋ）があり、ＥＡＤＭ移動指定ブロック（ＭＳＢ：ｍｏｖｅ−ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｂｌｏｃｋ）のリストを指示する。移動動作に関して、ＭＳＢは、ブロックのサイズ、ブロックのソースおよび宛先位置、ならびにデータ移動の方向など、移動されるデータのブロックについての情報を含む。
【００２８】
ＡＯＢによって指定され得るＭＳＢの最大数は、モデルに依存する。移動または動作を行うことをＭＳＢが指定してよいブロックの最大カウントも、モデルに依存する。
【００２９】
＊  プログラムは、ＡＤＭタイプ・サブチャネルおよびＥＡＤＭ動作要求ブロック（ＯＲＢ：ｏｐｅｒａｔｉｏｎ  ｒｅｑｕｅｓｔ  ｂｌｏｃｋ）を指示するサブチャネル開始命令を発行することによって、ＥＡＤＭ動作を開始する。さらに、ＥＡＤＭ  ＯＲＢは、ＡＯＢを指示する。命令は、ＥＡＤＭ  ＯＲＢのコンテンツを、指示されたサブチャネルに渡す。
【００３０】
＊  ＥＡＤＭ動作を開始するためにサブチャネル開始が発行されると、チャネル・サブシステムは、指定された動作を非同期的に実行する。
【００３１】
＊  プログラムから見て、ストレージ・クラス・メモリは、モデル依存の最小ブロック・サイズでブロック・コンカレントのように見える。この、モデル依存の値は、ＳＣＭブロック・コンカレント性サイズと呼ばれる。
【００３２】
＊  ＥＡＤＭ動作が完了すると、動作が開始されたＡＤＭタイプ・サブチャネルに関して、プログラムに対しＩ／Ｏ割り込みがペンディングにされる。
【００３３】
ＥＡＤＭ  ＯＲＢは、使用されるサブチャネル・キーおよびＡＯＢのアドレスの指定を含む。ＡＯＢは、例えば、４Ｋバイト境界で指示され、最大４Ｋバイトまでのサイズとされ得る。４ＫバイトＡＯＢに収まらないＭＳＢが必要とされる場合、ＡＯＢは、データ転送に使用されるストレージ・エリアを指示せずにリスト内の次のＭＳＢのアドレスを指示するＭＳＢを使用して、さらなるストレージ・エリアに及ぶＭＳＢリストを指定するとよい。
【００３４】
最初のＥＡＤＭ動作は、ＭＳＢをフェッチするために、指示されたＥＡＤＭ  ＯＲＢ内の情報、および指示されたＡＯＢ内のＡＲＱＢを使用して、チャネル・サブシステムによって開始される。ＭＳＢは、処理されるＥＡＤＭ動作を指定および制御する情報を含む。
【００３５】
各ＥＡＤＭ動作は、１つのＭＳＢによって表される。ＭＳＢは、例えば、メイン・ストレージからストレージ・クラス・メモリへのデータのブロックの転送、ストレージ・クラス・メモリからメイン・ストレージへのデータのブロックの転送、ストレージ・クラス・メモリのブロックのクリア、およびストレージ・クラス・メモリのブロックの解放を指定し得る。
【００３６】
転送されるストレージのブロックが、メイン・ストレージ内で連続的でなければ、新たなＭＳＢが使用されてもよく、またはＭＳＢは、非連続的なブロックを指示するためにＥＡＤＭ間接データ・アドレス・ワード（ＡＩＤＡＷ：ＥＡＤＭ  ｉｎｄｉｒｅｃｔ  ｄａｔａ  ａｄｄｒｅｓｓ  ｗｏｒｄ）のリストを指定することによって、間接アドレス指定を使用してもよい。
【００３７】
ＭＳＢは、一方向のみのデータの転送を指定するため、転送の方向に変更がある場合は新たなＭＳＢが使用されなければならない。
【００３８】
ＥＡＤＭ動作の終結は、通常は、チャネル終了およびデバイス終了の複合ステータス条件により示される。このステータス複合は、一次および二次ステータスの複合を表し、サブチャネルが、ステータスのクリア後に、別の開始機能に利用可能であることを示す。
【００３９】
ＥＡＤＭ動作は、サブチャネル・クリア命令によって早期終了され得る。サブチャネル・クリア命令の実行は、サブチャネルにおけるＡＯＢの実行を終了させ、実行中のＡＯＢのインジケーションをサブチャネルからクリアし、クリア機能を非同期的に実行する。
【００４０】
ＥＡＤＭ  ＯＲＢおよび関連の制御構造に関するさらなる詳細について、図３〜８を参照して、以下記載する。まず、図３を参照して、ＥＡＤＭ  ＯＲＢの一実施態様について記載する。
【００４１】
一例として、ＥＡＤＭ  ＯＲＢ２００には以下が含まれる。
【００４２】
割り込みパラメータ２０２：このフィールドは、後のサブチャネル変更命令またはサブチャネル開始命令によって置き換えられるまで、サブチャネルにおいて変更されないまま保たれる。これらのビットは、サブチャネルに関してＩ／Ｏ割り込みが発生するとき、および割り込み要求が、例えばペンディング割り込みテスト（Ｔｅｓｔ  Ｐｅｎｄｉｎｇ  Ｉｎｔｅｒｒｕｐｔｉｏｎ）の実行によりクリアされるとき、Ｉ／Ｏ割り込みコード内に入れられる。
【００４３】
サブチャネル・キー２０４：このフィールドは、ＡＲＱＢによって指定されたＥＡＤＭ動作のためのサブチャネル・キーを構成し、ＡＲＱＢのフェッチ、ＭＳＢのフェッチ、ＡＲＳＢの格納、およびデータ転送のためのメイン・ストレージのアクセスに適用される。このフィールドの値は規定値である。そうでない場合、プログラム・チェック条件がチャネル・サブシステムにより認識されるか、またはオペランド例外が認識される。
【００４４】
ＯＲＢ拡張制御（Ｘ）２０５：このフィールドは、ＯＲＢが拡張型かどうかを指定する。このフィールドは、ＡＤＭタイプ・サブチャネルが指示される場合、指定の値である。そうでない場合、オペランド例外またはプログラム・チェック条件のいずれかが認識される。
【００４５】
ＥＡＤＭ動作ブロック（ＡＯＢ）アドレス（２０６）：このフィールドは、ＥＡＤＭ動作ブロック（ＡＯＢ）のアドレスを指定する。このフィールドの特定のビットが規定値を含まなければ、オペランド例外またはプログラム・チェック条件のいずれかが認識される。
【００４６】
このフィールドが、フェッチから保護された位置を指示するか、または構成外の位置を指示する場合、開始機能は開始されない。この場合、サブチャネルは、一次、二次およびアラート・ステータスを伴うステータス・ペンディングになる。
【００４７】
チャネル・サブシステム（ＣＳＳ：Ｃｈａｎｎｅｌ  Ｓｕｂｓｙｓｔｅｍ）優先度２０８：このフィールドは、指示されたサブチャネルに割り振られ、開始ペンディングである１つ以上のサブチャネルに対して開始機能が開始される場合にＡＤＭタイプ・サブチャネルの選択を順序付けるために使用される、チャネル・サブシステム優先度番号を含む。
【００４８】
ストレージ・クラス・メモリ（ＳＣＭ）優先度２１０：このフィールドは、開始機能に関連するすべてのＥＡＤＭ動作に適用される優先度レベルを指定する、ストレージ・クラス・メモリ優先度（ＳＣＭ）番号を含む。
【００４９】
ＳＣＭ優先度フィールドのコンテンツがＥＡＤＭファシリティによって認識されるかどうかは、モデルに依存する。このフィールドを認識しないモデルでは、フィールド・コンテンツは無視され、開始機能に関連するすべてのＥＡＤＭ動作に、黙示の優先度番号が割り振られる。
【００５０】
フォーマット（ＦＭＴ：Ｆｏｒｍａｔ）２１２：このフィールドは、ＯＲＢのレイアウトを指定する。ＡＤＭタイプ・サブチャネルが指示される場合、このフィールドは、指定の値を含む。そうでない場合、オペランド例外が認識されるか、または特定の条件コードが設定される。
【００５１】
ＥＡＤＭ  ＯＲＢのＥＡＤＭ  ＡＯＢアドレス２０６によって指定されるＥＡＤＭ動作ブロック（ＡＯＢ）は、ＥＡＤＭ動作を呼び出すために使用される情報を含む。ＡＯＢは、一例では、４Ｋバイト境界上に割り当てられ、可変長である。
【００５２】
一例では、図４に示されているように、ＥＡＤＭ  ＡＯＢ２２０は、ＥＡＤＭ要求ブロック（ＡＲＱＢ）２２２、ＥＡＤＭ応答ブロック（ＡＲＳＢ）２２４、および最大で規定数（例えば１２４）までのＭＳＢを含むＭＳＢエリア２２６の３つのセクションを含む。なお、ＭＳＢ分岐を使用する（すなわち、ＭＳＢ内で次のＭＳＢへの分岐フラグを使用することによる）場合、ＡＲＱＢは、規定のＭＳＢを超えるＭＳＢの使用を指定してもよい。
【００５３】
ＥＡＤＭ要求ブロック（ＡＲＱＢ）２２２の一実施形態について、図５を参照して説明する。一例では、ＡＲＱＢ２２２には以下が含まれる。
【００５４】
フォーマット（ＦＭＴ）２３０：このフィールドは、ＡＲＱＢのレイアウトを指定する。このフィールドの値は規定値である。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でコマンド・コード・エラーが示される。
【００５５】
コマンド・コード２３２：このフィールドは、ＥＡＤＭブロック移動コマンドを指定するためのものである。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でコマンド・コード・エラーが示される。
【００５６】
ＭＳＢカウント２３４：このフィールドは、ＥＡＤＭ要求を構成するＭＳＢのカウントを指定する。指定され得るＭＳＢの最大カウントは、モデルに依存する。このフィールドの値は、ゼロより大きく、モデル依存の最大ＭＳＢカウント値以下でなければならない。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でＭＳＢカウント・エラーが示される。
【００５７】
ＥＡＤＭ  ＯＲＢは、ＥＡＤＭ要求ブロックに加えて、ＥＡＤＭ応答ブロック（ＡＲＳＢ）も指定する。ＥＡＤＭ応答ブロックは、この実施形態では、例外条件が認識された場合のみ意味を持つ。具体的には、ＡＲＳＢは、ＥＡＤＭサブチャネル・ステータス・ワード（ＳＣＳＷ：ｓｕｂｃｈａｎｎｅｌ  ｓｔａｔｕｓ  ｗｏｒｄ）内にアラート・ステータスがあり、ＥＡＤＭ拡張ステータス・ワード（ＥＳＷ：ｅｘｔｅｎｄｅｄ  ｓｔａｔｕｓ  ｗｏｒｄ）が意味を持ち、ＥＡＤＭ拡張レポート・ワード（ＥＲＷ：ｅｘｔｅｎｄｅｄ  ｒｅｐｏｒｔ  ｗｏｒｄ）内のＥＡＤＭ応答ブロック格納済み（Ｒ）ビットが１である場合にのみ意味を持つ。これらそれぞれについては後述する。ＡＲＳＢが意味を持たない場合、ＡＯＢ内のＡＲＳＢのコンテンツは予測不能である。
【００５８】
関連するサブチャネルがサブチャネル・アクティブである間に、プログラムがＡＲＳＢ内に格納すると、予測不能な結果が発生し得る。
【００５９】
ＡＲＳＢが格納される場合、既に転送されたデータがあっても、その量は予測不能である。
【００６０】
ＥＡＤＭ応答ブロックの一実施形態について、図６を参照して説明する。一例では、ＡＲＳＢ２２４には以下が含まれる。
【００６１】
フォーマット（ＦＭＴ）２４０：このフィールドは、ＡＲＳＢのレイアウトを指定する。ＡＲＳＢが格納される場合、このフィールドの値は、規定値として格納される。
【００６２】
例外フラグ（ＥＦ：Ｅｘｃｅｐｔｉｏｎ  Ｆｌａｇ）２４２：ＡＲＳＢが格納される場合、このフィールドは、設定されると、ＡＲＳＢが格納される例外の理由を指定する。例示の例外理由には以下が含まれる。
【００６３】
プログラム・チェック：プログラミング・エラーが検出されている。
【００６４】
保護チェック：ストレージ・アクセスが保護メカニズムによって妨げられている。保護は、ＡＲＱＢ、ＭＳＢ、ＡＩＤＡＷ、およびストレージ・クラス・メモリに転送されるデータのフェッチ、ならびにＡＲＳＢにおける情報の格納およびストレージ・クラス・メモリから転送されたデータの格納に当てはまる。
【００６５】
チャネル・データ・チェック：メイン・ストレージに含まれ現在ＥＡＤＭ動作の実行で使用されているデータに関する、修正されていないストレージ・エラーが検出された。プリフェッチされたときにデータが使用されなくても、検出されたときにこの条件は示されるとよい。データがチャネル・サブシステムによって参照されるとき、そのデータまたは関連するキーがメイン・ストレージ内に無効なチェック・ブロック・コード（ＣＢＣ：ｃｈｅｃｋｉｎｇ  ｂｌｏｃｋ  ｃｏｄｅ）を有すると、チャネル・データ・チェックが示される。
【００６６】
チャネル制御チェック：チャネル制御チェックは、チャネル・サブシステム制御に影響を及ぼす任意のマシン誤作動によりもたらされる。条件には、ＡＲＱＢ、ＡＲＳＢ、ＭＳＢ、ＡＩＤＡＷ、または個々の関連するキーに関する無効なＣＢＣが含まれる。この条件は、プリフェッチされたＡＲＱＢ、ＭＳＢ、ＡＩＤＡＷまたは個々の関連するキーで無効なＣＢＣが検出されたとき、そのＡＲＱＢ、ＭＳＢ、またはＡＩＤＡＷが使用されなくても、示されるとよい。
【００６７】
拡張非同期データ移動ファシリティ・チェック：ストレージ・クラス・メモリに含まれ現在ＥＡＤＭ動作の実行で使用されているデータに関する、修正されていないエラーが検出された。
【００６８】
例外制御ブロック識別子（ＥＣＢＩ：Ｅｘｃｅｐｔｉｏｎ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ  Ｉｄｅｎｔｉｆｉｅｒ）２４４：ＡＲＳＢが格納される場合、このフィールドは、各ビットが設定されると、ＥＦフィールドによって指示される認識された例外に関連する以下の要素のうちの任意の１つまたは組み合わせを指定する、複数ビット・マスクである。
【００６９】
＊  １つまたは複数の制御ブロック。
【００７０】
＊  メイン・ストレージ・データ・エリア。
【００７１】
＊  ストレージ・クラス・メモリ。
【００７２】
設定可能なビットは、例えば、ＥＡＤＭ移動指定ブロック、ＥＡＤＭ間接データ・アドレス、メイン・ストレージ内のデータ、もしくはストレージ・クラス・メモリ内のデータ、またはそのいずれかの組み合わせを表す。
【００７３】
ＥＣＢＩフィールド内のビットは、単一の例外条件に関連する要素を記述する。例外条件に関して要素を識別できない場合、このフィールドは、例えばゼロを含む。
【００７４】
フィールド有効性フラグ（ＦＶＦ：Ｆｉｅｌｄ  Ｖａｌｉｄｉｔｙ  Ｆｌａｇ）２４６：ＡＲＳＢが格納される場合、このフィールドは、各ビットがＡＲＳＢ内の特定のフィールドの有効性を示す、複数ビット・マスクを含む。有効性ビットが設定されている場合、対応するフィールドは格納済みであり、リカバリ目的で使用可能である。設定可能なビットは、例えば、失敗ＭＳＢアドレス・フィールド、失敗ＡＩＤＡＷフィールド、失敗メイン・ストレージ・アドレス・フィールド、もしくは失敗ストレージ・クラス・メモリ・アドレス・フィールド、またはそのいずれかの組み合わせを表す。
【００７５】
例外修飾子コード（ＥＱＣ：Ｅｘｃｅｐｔｉｏｎ  Ｑｕａｌｉｆｉｅｒ  Ｃｏｄｅ）２４８：ＡＲＳＢが格納される場合、このフィールドは、例外フラグ・フィールドにより指定された例外をさらに記述するコード値を含む。コード値は、例として以下を表し得る。
【００７６】
追加の記述は提供されない。この場合、例外制御ブロック識別子（ＥＣＢＩ）フィールドおよびフィールド有効性フラグ・フィールドによって有効とされた当該フィールドが、例外が認識されている制御ブロックを識別するとよい。
【００７７】
フォーマット・エラー：フォーマット・フィールドによって指定されたフォーマットは保留されている。この場合、例外制御ブロック識別子（ＥＣＢＩ）フィールドおよびフィールド有効性フラグ・フィールドによって有効とされた当該フィールドが、例外が認識されている制御ブロックを識別するとよい。
【００７８】
コマンド・コード・エラー：ＡＲＱＢのコマンド・コード・フィールド内で指定された値が認識されない。
【００７９】
ＭＳＢカウント・エラー：ＡＲＱＢのＭＳＢカウント・フィールド内で指定された値がゼロであるか、またはモデル依存の指定可能なＭＳＢの最大限度を上回っている。
【００８０】
フラグ・エラー：フラグ・フィールドによって指定されたフラグ・ビットは保留されている。この場合、例外制御ブロック識別子（ＥＣＢＩ）フィールドおよびフィールド有効性フラグ・フィールドによって有効とされた当該フィールドが、例外が認識されている制御ブロックを識別するとよい。
【００８１】
動作コード・エラー：保留されている動作コード値が指定されている。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。
【００８２】
ブロック・サイズ・エラー：保留されているブロック・サイズ値が指定されている。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。
【００８３】
ブロック・カウント・エラー：ＭＳＢのブロック・カウント・フィールド内で指定された値がゼロであるか、またはモデル依存の、ＭＳＢによって指定可能なブロックの最大カウントを上回っている。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。
【００８４】
メイン・ストレージ・アドレス指定エラー：メイン・ストレージ・アドレスが不正な境界で指定されている。そのようなアドレスは、ＭＳＢによって、またはＡＩＤＡＷによって指示された可能性がある。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ＡＩＤＡＷアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＡＩＤＡＷのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗メイン・ストレージ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているメイン・ストレージ・アドレスを含む。
【００８５】
ストレージ・クラス・メモリ・アドレス指定エラー：ストレージ・クラス・メモリ・アドレスが不正な境界で指定されている。そのようなアドレスは、ＭＳＢによって指示される。フィールド有効性フラグが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ＡＩＤＡＷアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＡＩＤＡＷのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ストレージ・クラス・メモリ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているストレージ・クラス・メモリ・アドレスを含む。
【００８６】
メイン・ストレージ・アドレス例外：ＥＡＤＭファシリティが、構成において利用可能でないアドレスの使用を試行したか、または最大ストレージ・アドレスをラップした。そのようなアドレスは、ＭＳＢによって指示されたか、またはデータ転送の間にメイン・ストレージ・アドレスをインクリメントすることから生じた可能性がある。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ＡＩＤＡＷアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＡＩＤＡＷのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗メイン・ストレージ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているメイン・ストレージ・アドレスを含む。
【００８７】
ストレージ・クラス・メモリ・アドレス例外：ＥＡＤＭファシリティが、構成において利用可能でないストレージ・クラス・メモリ・アドレスの使用を試行した。そのようなアドレスは、ＭＳＢによって指示されたか、またはデータ転送の間にストレージ・クラス・メモリ・アドレスをインクリメントすることから生じた可能性がある。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ＡＩＤＡＷアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＡＩＤＡＷのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ストレージ・クラス・メモリ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているストレージ・クラス・メモリ・アドレスを含む。
【００８８】
メイン・ストレージ・エラー：修正されていないメイン・ストレージ・エラーが検出された。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ＡＩＤＡＷアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＡＩＤＡＷのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗メイン・ストレージ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているメイン・ストレージ・アドレスを含む。
【００８９】
ＭＳＢリスト・エラー：ＡＯＢが、境界を越えるために次のＭＳＢへの分岐（ＢＮＭ：ｂｒａｎｃｈ−ｔｏ−ｎｅｘｔ  ＭＳＢ）を指定せずに、４Ｋバイト境界を越えるＭＳＢリストを指定するか、またはＭＳＢが、指定されたＭＳＢリスト内の最後のＭＳＢであり、そのＭＳＢによってＢＮＭが指定されている。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。
【００９０】
ＭＳＢ分岐エラー：ＡＯＢがＭＳＢリストを指定し、そのリスト内で、あるＭＳＢ（分岐元ＭＳＢ）が次のＭＳＢへの分岐（ＢＮＭ）を指定し、その分岐のターゲットであるＭＳＢがさらにＢＮＭを指定する。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されている分岐元ＭＳＢのアドレスを含む。
【００９１】
ＡＩＤＡＷリスト・エラー：ＭＳＢが、境界を越えるために次のＡＩＤＡＷへの分岐（ＢＮＡ：ｂｒａｎｃｈ−ｔｏ−ｎｅｘｔ  ＡＩＤＡＷ）を指定せずに、４Ｋバイト境界を越えるＥＡＤＭ間接データ・アドレス・ワード（ＡＩＤＡＷ）リストを指定する。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ＡＩＤＡＷアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＡＩＤＡＷのアドレスを含む。
【００９２】
ＡＩＤＡＷ分岐エラー：ＭＳＢが、ＥＡＤＭ間接データ・アドレス・ワード（ＡＩＤＡＷ）リストを指定し、そのリスト内で、あるＡＩＤＡＷ（分岐元ＡＩＤＡＷ）が次のＡＩＤＡＷへの分岐（ＢＮＡ）を指定し、その分岐のターゲットであるＡＩＤＡＷがさらにＢＮＡを指定する。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ＡＩＤＡＷアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されている分岐元ＡＩＤＡＷのアドレスを含む。
【００９３】
ストレージ・クラス・メモリの一時エラー：回復可能なストレージ・クラス・メモリ・エラーが検出されている。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ＡＩＤＡＷアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＡＩＤＡＷのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ストレージ・クラス・メモリ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているストレージ・クラス・メモリ・アドレスを含む。
【００９４】
解放動作非サポート・エラー：解放動作がサポートされていないストレージ・クラス・メモリに対して解放動作が指定された。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ＡＩＤＡＷアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＡＩＤＡＷのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ストレージ・クラス・メモリ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているストレージ・クラス・メモリ・アドレスを含む。
【００９５】
解放データ読み取りエラー：最後に成功した動作が解放動作であったストレージ・クラス・メモリに対して、読み取り動作が指定された。フィールド有効性フラグ・フィールドが、失敗ＭＳＢアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＭＳＢのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ＡＩＤＡＷアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているＡＩＤＡＷのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ストレージ・クラス・メモリ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているストレージ・クラス・メモリ・アドレスを含む。
【００９６】
失敗ＭＳＢアドレス２５０：フィールド有効性フラグ・フィールドの指定のビットが設定されている場合、このフィールドは、例外が認識されているＭＳＢのアドレスを示す。
【００９７】
失敗ＡＩＤＡＷアドレス２５２：フィールド有効性フラグ・フィールドの指定のビットが設定されている場合、このフィールドは、例外が認識されているＡＩＤＡＷのアドレスを示す。
【００９８】
失敗メイン・ストレージ・アドレス２５４：フィールド有効性フラグ・フィールドの指定のビットが設定されている場合、このフィールドは、例外が認識されているメイン・ストレージのブロックのアドレスを示す。
【００９９】
失敗ストレージ・クラス・メモリ・アドレス２５６：フィールド有効性フラグ・フィールドの指定のビットが設定されている場合、このフィールドは、例外が認識されているストレージ・クラス・メモリのブロックの（例えば６４ビット）ＳＣＭアドレスを含む。
【０１００】
ＥＡＤＭ要求ブロックおよびＥＡＤＭ応答ブロックに加えて、ＥＡＤＭ動作ブロック（ＡＯＢ）は、１つ以上のＥＡＤＭ移動指定ブロック（ＭＳＢ）も指定する。ＡＯＢは、例えば最大で１２４のＭＳＢを含み得る。なお、プログラムは、ＡＲＱＢのカウント・フィールド内でより大きな数のＭＳＢを指示すること、およびＭＳＢリストの継続部へ分岐するために次のＭＳＢへの分岐（ＢＮＭ）フラグを使用することによって、１２４を超えるＭＳＢを指定し得る。ＭＳＢリストには継続部が複数あってもよいが、一実施形態では、このような継続部のいずれも、４Ｋバイトの境界を越えるためにＢＮＭを使用することなく当該の境界を越えてはならない。ＭＳＢリストの継続部は、連続的である必要はない。ＭＳＢリストの継続部はそれぞれ、４Ｋバイト境界上で開始するよう指示される場合、最大１２８のＭＳＢを含んでよい。ＭＳＢリスト内のＭＳＢの総数は、ＡＲＱＢ内のＭＳＢカウント・フィールドによって指定される。
【０１０１】
ＥＡＤＭ移動指定ブロックは、例えば、メイン・ストレージとストレージ・クラス・メモリとの間で移動されるストレージのブロック、またはストレージのブロックに対して実行される動作を記述する。ＭＳＢ２２６の一実施形態について、図７を参照して説明する。例えば以下が含まれる。
【０１０２】
フォーマット（ＦＭＴ）２６０：このフィールドは、ＭＳＢのレイアウトを指定する。このフィールドの値は規定値である。そうでない場合、ＡＲＳＢの例外修飾子コード・フィールド内でＭＳＢフォーマット・エラーが示される。
【０１０３】
動作コード（ＯＣ：Ｏｐｅｒａｔｉｏｎ  Ｃｏｄｅ）２６２：このフィールドは、実行される動作を指定する。一例では、後述の、フラグ・フィールドの指定のビットが規定値である場合、このフィールドは、実行される動作を指定する。例示の動作には以下が含まれる。
【０１０４】
ストレージ・クラス・メモリ・クリア：このコードが指示される場合、ストレージ・クラス・メモリ・アドレス、ブロック・サイズ、およびブロック・カウント・フィールドによって指定されるストレージ・クラス・メモリがクリアされる（例えばゼロに設定される）。メイン・ストレージ・アドレス・フィールドは、この動作には意味を有さない。
【０１０５】
読み取り：このコードが指示される場合、データがストレージ・クラス・メモリからメイン・ストレージへ転送されるよう指定される。この動作の場合、ブロック・カウント、ブロック・サイズ、メイン・ストレージ・アドレス、およびストレージ・クラス・メモリ・アドレス・フィールドが意味を有する。
【０１０６】
書き込み：このコードが指示される場合、データがメイン・ストレージからストレージ・クラス・メモリへ転送されるよう指定される。この動作の場合、ブロック・カウント、ブロック・サイズ、メイン・ストレージ・アドレス、およびストレージ・クラス・メモリ・アドレス・フィールドが意味を有する。
【０１０７】
解放：このコードが指示され、ＥＡＤＭ解放ファシリティがインストールされている場合、ストレージ・クラス・メモリ・アドレス、ブロック・サイズ、およびブロック・カウント・フィールドによって指定されたストレージ・クラス・メモリが解放される。メイン・ストレージ・アドレス・フィールドは、この動作には意味を有さない。ＥＡＤＭ解放ファシリティがインストールされていない場合、このコードは保留される。
【０１０８】
保留されている値が指定されると、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内で動作コード・エラーが示される。
【０１０９】
フラグ・フィールドの指定のフラグ・ビットが規定値でない場合、このフィールドは保留され、チェックされない。
【０１１０】
フラグ２６４：このフィールドは、設定され得る１つ以上のフラグを特定する。予約されているフラグ・ビットが、規定値に設定される。そうでない場合、ＡＲＳＢの例外修飾子コード・フィールド内でフラグ・エラーが示される。例示のフラグには以下が含まれる。
【０１１１】
＊  次のＭＳＢへの分岐（ＢＮＭ）：設定されている場合、このフラグは、ＭＳＢがＥＡＤＭ動作を指定せず、データの転送に使用されないことを示す。代わりに、ＥＡＤＭ動作の指定に使用される次のＭＳＢのアドレスを、メイン・ストレージ・アドレス・フィールドが指定する。
【０１１２】
ＢＮＭフラグが設定され（例えば１）、メイン・ストレージ・アドレス・フィールドが、同じくＢＮＭフラグが設定されているＭＳＢを指定すると、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの失敗ＭＳＢアドレス・フィールドに分岐元ＭＳＢのアドレスが格納され、ＡＲＳＢの例外修飾子コード・フィールド内でＭＳＢ分岐エラーが示される。
【０１１３】
ＭＳＢが４Ｋバイト境界で終わり、ＡＯＢがさらなるＭＳＢを指定し、ＢＮＭフラグが設定されていない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの失敗ＭＳＢアドレス・フィールドにＭＳＢのアドレスが格納され、ＡＲＳＢの例外修飾子コード・フィールド内でＭＳＢリスト・エラーが示される。
【０１１４】
ＭＳＢが、指定されたＭＳＢリスト内の最後のＭＳＢであり、ＢＮＭフラグが設定されている場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの失敗ＭＳＢアドレス・フィールドにＭＳＢのアドレスが格納され、ＡＲＳＢの例外修飾子コード・フィールド内でＭＳＢリスト・エラーが示される。
【０１１５】
ＢＮＭフラグが設定されている場合、残りのフラグ、動作コード・フィールド、ブロック・サイズ・フィールド、ブロック・セット・カウント・フィールド、およびストレージ・クラス・メモリ・アドレスは意味を有さない。
【０１１６】
＊  間接アドレス指定：設定されている場合、このフラグは、データ転送に使用される１つまたは複数のメイン・ストレージ位置をそれぞれ指示する、ＥＡＤＭ間接データ・アドレス・ワード（ＡＩＤＡＷ）またはＡＩＤＡＷのリストの第１ＡＩＤＡＷのアドレスを、メイン・ストレージ・アドレス・フィールドが指示することを示す。設定されていない場合、このフラグは、メイン・ストレージ・アドレス・フィールドが、データ転送に使用されるメイン・ストレージ位置のアドレスを指示することを示す。
【０１１７】
ブロック・サイズ（ＢＳ：Ｂｌｏｃｋ  Ｓｉｚｅ）２６６：このフィールドは、メイン・ストレージおよびストレージ・クラス・メモリ両方に関して、転送されるデータ・ブロックのサイズおよび境界、または、動作が行われる（例えばクリアまたは解放される）ストレージ・クラス・メモリのブロックのサイズおよび境界を指定する。例には以下が含まれる。
【０１１８】
４Ｋ：コード値が、ある規定値である場合、転送されるデータ・ブロックは、４Ｋバイト境界上にあり、４Ｋバイトのサイズである。
【０１１９】
１Ｍ：コード値が、別の規定値である場合、転送されるデータ・ブロックは、１Ｍバイト境界上にあり、１Ｍバイトのサイズである。
【０１２０】
保留されている値が指定されると、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でブロック・サイズ・エラーが示される。
【０１２１】
ＢＮＭフラグが設定されている場合、このフィールドは無視される。
【０１２２】
ブロック・カウント２６８：このフィールドは、転送または動作（例えばクリアもしくは解放）が行われるデータのブロックのカウントを含む。ブロック・サイズ・フィールドに基づき、これは、４Ｋバイトまたは１Ｍバイトいずれかのブロックのカウントである。
【０１２３】
このフィールドの値は、ゼロより大きく、ＭＳＢによって指定可能な、モデル依存の最大ブロック・カウント以下でなければならない。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でブロック・カウント・エラーが示される。
【０１２４】
ＢＮＭフラグが設定されている場合、このフィールドは保留され、チェックされない。
【０１２５】
メイン・ストレージ・アドレス２７０：動作コード・フィールドが意味を有し（例えば、ＢＮＭフラグが設定されていない）、読み取りまたは書き込みいずれかの動作を指定し、フラグ・フィールド内の間接アドレス指定インジケータが設定されていない場合、このフィールドは、データ転送に使用されるメイン・ストレージ・アドレスを含み、以下が当てはまる。
【０１２６】
＊  ブロック・サイズ・フィールドが４Ｋバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値（例えばゼロ）を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
【０１２７】
＊  ブロック・サイズ・フィールドが１Ｍバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値（例えばゼロ）を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
【０１２８】
動作コード・フィールドが意味を有し、読み取りまたは書き込みいずれかの動作を指定し、フラグ・フィールド内の間接アドレス指定インジケータが設定されている場合、このフィールドは、データ転送に使用されるＡＩＤＡＷまたはＡＩＤＡＷのリストの第１ＡＩＤＡＷのメイン・ストレージ・アドレスを含む。この場合、このフィールドの特定のビットが規定値を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
【０１２９】
ＢＮＭフラグが設定されている場合、動作コードは意味を有さず、ＭＳＢは、ＥＡＤＭ動作を指定しない。代わりにこのフィールドは、ＥＡＤＭ動作を指定する次のＭＳＢのメイン・ストレージ・アドレスを含む。この場合、このフィールドの指定のビットが規定値を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
【０１３０】
ストレージ・クラス・メモリ・アドレス２７２：動作コード・フィールドが意味を有する場合、このフィールドは、データ転送に使用される、または動作（例えばクリアもしくは解放）が行われる、（例えば６４ビット）ストレージ・クラス・メモリ・アドレスを含み、以下が当てはまる。
【０１３１】
＊  ブロック・サイズ・フィールドが４Ｋバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値（例えばゼロ）を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でストレージ・クラス・メモリ指定エラーが示される。
【０１３２】
＊  ブロック・サイズ・フィールドが１Ｍバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でストレージ・クラス・メモリ指定エラーが示される。
【０１３３】
ＢＮＭフラグが設定されている場合、このフィールドは保留され、チェックされない。
【０１３４】
前述のとおり、ＥＡＤＭ間接データ・アドレス・ワードが指定され得る。ＥＡＤＭ間接データ・アドレス・ワード（ＡＩＤＡＷ）は、プログラムが、ストレージ・クラス・メモリと、メイン・ストレージの非連続的なブロックとの間でのデータのブロックの転送を指定できるようにする。ＡＩＤＡＷまたはＡＩＤＡＷのリストは、ＭＳＢ内の間接アドレス指定フラグが設定されている場合、ＭＳＢによって指示される。
【０１３５】
単一のＡＩＤＡＷによって転送されるデータの量は、ＭＳＢ内のブロック・サイズ・フィールドによって指定される。ＡＩＤＡＷリスト内のＡＩＤＡＷの数は、ＭＳＢ内のブロック・カウント・フィールドによって指定される数に、次のＡＩＤＡＷへの分岐を指定するＡＩＤＡＷの数を加えた合計である。データ転送は、ＡＩＤＡＷリスト内で指定された順序とは異なる順序で処理されてもよい。さらに、ＡＩＤＡＷリスト内の複数のＡＩＤＡＷによって指定されたデータ転送がコンカレントに処理されてもよい。
【０１３６】
ＡＩＤＡＷは、例えば、クワッドワード境界上に割り当てられる。ＡＩＤＡＷのリストは、任意の長さとしてよいが、一例では、境界を越えるために次のＡＩＤＡＷへの分岐（ＢＮＡ）が指定されない限り、４Ｋバイト境界を越えてはならない。分岐のターゲットであるＡＩＤＡＷが、ＢＮＡを指定するＡＩＤＡＷと連続していなければならないという要件はない。なお、プログラムは、ＡＩＤＡＷリストを、できる限り少ない４Ｋバイト・ブロックで作成するべきである。さもなければ性能劣化が発生し得る。
【０１３７】
図８を参照する。一例では、ＥＡＤＭ間接データ・アドレス・ワード２８０には以下が含まれる。
【０１３８】
フラグ２８２：例示のフラグには以下が含まれる。
【０１３９】
次のＡＩＤＡＷへ分岐（ＢＮＡ）：設定されている場合、このフラグは、メイン・ストレージ・アドレス・フィールドが、データを転送するのに使用されるメイン・ストレージ・アドレスを指定しないことを示す。代わりに、メイン・ストレージ・アドレス・フィールドは、データを転送するのに使用される次のＡＩＤＡＷのアドレスを指定する。
【０１４０】
ＢＮＡフラグが設定されていて、メイン・ストレージ・アドレス・フィールドが、同じくＢＮＡフラグが設定されているＡＩＤＡＷを指定する場合、ＡＲＳＢの失敗ＭＳＢアドレス・フィールドにＭＳＢのアドレスが格納され、ＡＲＳＢの失敗メイン・ストレージ・アドレス・フィールドに分岐元ＡＩＤＡＷのアドレスが格納され、ＡＲＳＢ内の例外修飾子コード・フィールド内でＡＩＤＡＷ分岐エラーが示される。
【０１４１】
ＡＩＤＡＷが４Ｋバイト境界で終わり、ＭＳＢがさらなるＡＩＤＡＷを指定し、ＢＮＡフラグが設定されていない場合、ＡＲＳＢの失敗ＭＳＢアドレス・フィールドにＭＳＢのアドレスが格納され、ＡＲＳＢの失敗メイン・ストレージ・アドレス・フィールドにＡＩＤＡＷのアドレスが格納され、ＡＲＳＢ内の例外修飾子コード・フィールド内でＡＩＤＡＷリスト・エラーが示される。
【０１４２】
メイン・ストレージ・アドレス２８４：ＢＮＡフラグが設定されていない場合、このフィールドは、データ転送に使用されるメイン・ストレージ内のアドレスを含み、以下が当てはまる。
【０１４３】
＊  ＭＳＢ内のブロック・サイズ・フィールドが４Ｋバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値（例えばゼロ）を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
【０１４４】
＊  ＭＳＢ内のブロック・サイズ・フィールドが１Ｍバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値（例えばゼロ）を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ＡＲＳＢの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
【０１４５】
＊  ＢＮＡフラグが設定されている場合、このフィールドは、データ転送に使用される次のＡＩＤＡＷのメイン・ストレージ・アドレスを含む。
【０１４６】
上述のとおり、ＥＡＤＭ動作は、サブチャネル開始命令によって指定される。すなわち、プログラムは、ＡＤＭタイプ・サブチャネルおよびＥＡＤＭ  ＯＲＢを指示するサブチャネル開始命令を発行することによって、ＥＡＤＭ動作を開始する。命令が実行されると、ＥＡＤＭ  ＯＲＢのコンテンツが、指示されたサブチャネルに渡される。ＥＡＤＭ  ＯＲＢは、サブチャネル・キー（保護に使用される）および使用されるＡＯＢのアドレスの指定を含む。
【０１４７】
一例では、図９に示されているとおり、サブチャネル開始命令３００は、サブチャネル開始機能を指定する動作コード３０２と、例えば開始されるＡＤＭタイプ・サブチャネルを指示するサブシステム識別子を含む汎用レジスタ１に位置する暗黙のオペランドである、第１オペランド３０４と、ＥＡＤＭ  ＯＲＢの論理アドレスである第２オペランド３０６とを含む。ＥＡＤＭ  ＯＲＢは、開始機能を制御する際に使用されるパラメータを指定する。ＥＡＤＭ  ＯＲＢのコンテンツは、サブチャネル開始の実行中、条件コードを設定する前に、指示されたサブチャネルに置かれる。サブチャネル開始を実行した結果、成功を示すコード以外の条件コードが設定される場合、ＥＡＤＭ  ＯＲＢのコンテンツは、指示されたサブチャネルに置かれない。
【０１４８】
ＡＤＭタイプ・サブチャネルに対するサブチャネル開始の実行後、チャネル・サブシステムは、ＥＡＤＭファシリティを用いたＥＡＤＭ動作を開始するために、非同期的に開始機能を実行する。開始機能には、例えば以下が含まれる。
【０１４９】
１．ＡＯＢからＡＲＱＢをフェッチすること。
【０１５０】
２．ＡＲＱＢおよびそれが指示するＭＳＢにより指定された、ＥＡＤＭ動作を実行すること。
【０１５１】
３．ＡＯＢ内のＡＲＳＢに、完了情報を条件付きで格納すること。
【０１５２】
４．ＡＤＭタイプ・サブチャネルをステータス・ペンディングにさせ、開始機能の完了を示すこと。
【０１５３】
図１０を参照する。一実施形態では、サブチャネル開始命令が実行され、ＳＩＤがＡＤＭタイプ・サブチャネルを指示し、第２オペランドがＥＡＤＭ  ＯＲＢを指示する場合、ＥＡＤＭ動作が指定される（ステップ３２０）。ＥＡＤＭ  ＯＲＢ内のパラメータが、指示されたサブチャネルに渡され（ステップ３２２）、チャネル・サブシステムが、ＥＡＤＭファシリティを用いて開始機能を実行するよう要求される（ステップ３２４）。チャネル・サブシステムは、サブチャネル開始命令の実行中に渡された情報を含む、サブチャネルにある情報を使用して、開始機能を非同期的に実行し、ＥＡＤＭ動作を開始する（ステップ３２６）。
【０１５４】
ＥＡＤＭ動作（例えば最初の動作）の実行は、ＥＡＤＭ  ＯＲＢからの情報を使用して、ＡＯＢを取得すること（ステップ３２８）を含み、ＡＯＢ内の情報を使用して、ＥＡＤＭ要求ブロック（ＡＲＱＢ）および１つ以上のＥＡＤＭ移動指定ブロック（ＭＳＢ）の指示が取得される（ステップ３３０）。続いて、指示された１つ以上のＭＳＢが、メイン・ストレージからフェッチされ（ステップ３３２）、要求されたＥＡＤＭ動作の制御に、ＭＳＢ内で指定された情報が使用される。最初の動作は、チャネル・サブシステムが、データ転送の開始を試行するか、またはクリアもしくは解放動作を試行したときに開始されたと見なされる。
【０１５５】
チャネル・サブシステムは、ＭＳＢ（単数または複数）内で要求された動作（単数または複数）を実行する（ステップ３３４）。この処理は、開始コマンドの実行とは非同期的である。
【０１５６】
サブチャネル開始によって開始されたＥＡＤＭ動作が終わると（ステップ３３６）、チャネル・サブシステムは、ステータス条件を生成する（ステップ３３８）。これらの条件の生成は、Ｉ／Ｏ割り込みによってプログラムに通知される（ステップ３３９）。プログラムは、ペンディング割り込みテスト命令の実行によってこれらの条件を問い合わせることもできる。
【０１５７】
生成されたステータス条件は、ＥＡＤＭサブチャネル・ステータス・ワード（ＳＣＳＷ）の形態でプログラムに提示される。ＥＡＤＭ  ＳＣＳＷは、サブチャネル・テスト命令の実行によって、ＥＡＤＭ割り込み応答ブロック（ＩＲＢ：ｉｎｔｅｒｒｕｐｔｉｏｎ  ｒｅｓｐｏｎｓｅ  ｂｌｏｃｋ）の一部として格納される。
【０１５８】
ＥＡＤＭ動作ブロック（ＡＯＢ）内で指定されたＥＡＤＭ動作が終わると、チャネル・サブシステムは、一次および二次割り込みステータスを生成する。ＥＡＤＭ動作は、サブチャネル・クリア、または開始機能の実行中に認識される異常条件によって終了され得る。
【０１５９】
移動動作の場合、チャネル・サブシステムによるＭＳＢの処理は、メイン・ストレージへ、またはメイン・ストレージからの情報のユニットのフローを制御する。ＭＳＢ処理の間にデータ移動の方向を変更するには、新たなＭＳＢが必要である。ＡＲＱＢが、要求を構成するＭＳＢのカウントを指示する。
【０１６０】
各ＥＡＤＭ動作は、１つのＭＳＢによって表される。ＭＳＢは、以下のうちのいずれかを指定し得る。
【０１６１】
＊  メイン・ストレージからストレージ・クラス・メモリへのデータのブロックの転送。
【０１６２】
＊  ストレージ・クラス・メモリからメイン・ストレージへのデータのブロックの転送。
【０１６３】
＊  ストレージ・クラス・メモリのブロックのクリア。
【０１６４】
＊  ＥＡＤＭ解放ファシリティがインストールされている場合、ストレージ・クラス・メモリのブロックの解放。
【０１６５】
移動動作に関して転送されるストレージのブロックが、メイン・ストレージ内で連続的でなければ、新たなＭＳＢが使用されてもよく、または、ＭＳＢは、非連続的なブロックを指示するためにＥＡＤＭ間接データ・アドレス・ワード（ＡＩＤＡＷ）のリストを指定することによって、間接アドレス指定を使用してもよい。ＭＳＢは、一方向のデータの転送しか指定できないため、データ転送の方向に変更がある場合は新たなＭＳＢが使用されなければならない。
【０１６６】
以下は、ＥＡＤＭデータ転送の特徴である。
【０１６７】
＊  データ転送は、指定されたＭＳＢリストの順序に対して異なる順序で処理されてもよい。
【０１６８】
＊  ＭＳＢリスト内の複数のＭＳＢによって指定されたデータ転送がコンカレントに処理されてもよい。
【０１６９】
＊  データ転送は、指定されたＡＩＤＡＷリストの順序に対して異なる順序で処理されてもよい。
【０１７０】
＊  ＡＩＤＡＷリスト内の複数のＡＩＤＡＷ内で指定されたデータ転送がコンカレントに処理されてもよい。
【０１７１】
＊  プログラムおよびほかのＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：中央処理ユニット）から見て、メイン・ストレージおよびストレージ・クラス・メモリへのアクセスは、必ずしも単一アクセス参照であるとは限らず、必ずしも左から右の方向で実行されるとは限らない。
【０１７２】
＊  ２つ以上のＥＡＤＭ動作が現在アクティブであり、同じＳＣＭ位置、メイン・ストレージ位置、または両方をアドレス指定する場合、動作は、コンカレントに実行されてもよく、異なる動作からのコンテンツがインターリーブされてもよい。なお、以下のとおりである。
【０１７３】
−  入力動作の場合、ＥＡＤＭファシリティによって、ＳＣＭブロック・コンカレント性サイズと等しいサイズであるメイン・ストレージの各ブロックに格納されるデータは、コンカレントなＥＡＤＭ動作のうちの１つのみによってストレージ・クラス・メモリから転送されるデータから成る。
【０１７４】
−  出力動作の場合、境界上にありＳＣＭブロック・コンカレント性サイズと等しいサイズであるストレージ・クラス・メモリの各ブロックは、コンカレントなＥＡＤＭ動作のうちの１つのみによって指定されるデータを含む。
【０１７５】
上記は、ＥＡＤＭ動作が単一のＡＯＢによって指定され、開始機能の同じインスタンスによって処理されるか、またはＥＡＤＭ動作が別々のＡＯＢによって指定され、開始機能の別々のインスタンスによって処理されるかにかかわらず当てはまる。
【０１７６】
＊  ＥＡＤＭ動作がサブチャネルに対してアクティブであるとき、アクティブな動作に関連するＡＲＱＢ、ＭＳＢ、ＡＩＤＡＷ、および転送データに対してプログラムによって加えられる変更が、ＥＡＤＭファシリティにより観測されるかどうかは、予測不能である。
【０１７７】
ＡＯＢによって指定されたすべてのＭＳＢにより指示されたブロックがすべて、転送またはクリアまたは解放されたとき、サブチャネルは、サブチャネルにて格納されるステータスを生成し、ＡＤＭタイプ・サブチャネルに関するＩ／Ｏ割り込みを要求する。
【０１７８】
ＥＡＤＭ動作の終結は、通常は、チャネル終了およびデバイス終了の複合ステータス条件により示される。このステータス複合は、一次および二次ステータスの複合を表し、サブチャネルが、ステータスのクリア後に、別の開始機能に利用可能であることを示す。
【０１７９】
上記のように、ＭＳＢは、データ転送動作、クリア動作、または解放動作を指定することができる。これらそれぞれについて、以下記載する。
【０１８０】
移動動作が要求されると、データの１つ以上のブロックが、メイン・ストレージとストレージ・クラス・メモリとの間で移動される。例えば、読み取り動作の場合、指定されるＳＣＭアドレスによって指示されるコンテンツを提供するＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｅｖｉｃｅ：ソリッド・ステート・デバイス）からＳＣＭデータが取得され、続いてそのコンテンツがメイン・メモリに格納される。書き込み動作の場合、このプロセスが逆になる。ＳＳＤを制御しているアダプタ（単数または複数）が格納を実行する。さらに詳細には、システム・ファームウェアは、移動動作を実行するために、まず、所与のＳＣＭアドレスをアダプタ・アドレス（例えば、論理ボリューム・アドレスであり、論理ボリュームは１つ以上のＳＳＤを含む）に変換する。例えば、ＳＣＭアドレスと、アダプタ・アドレスとを相関させる変換テーブルが使用される。続いて、システム・ファームウェアが、１つ以上の対応するアダプタ移動コマンド（例えば読み取りまたは書き込み）をＩ／Ｏアダプタの１つ以上に出す。アダプタ移動コマンドは、メイン・ストレージ・アドレス、アダプタ・アドレス、および転送サイズを含む。続いて、アダプタは、別の変換テーブルを使用して、アダプタ・アドレスに対応する１つ以上の物理ＳＳＤアドレスを特定する。Ｉ／Ｏアダプタは、メイン・ストレージからデータをフェッチしてそれをＳＳＤ上に格納すること、またはＳＳＤからデータをフェッチしてそれをメイン・メモリに格納することのいずれかによって、移動動作を達成する。「Ｆｉｒｍｗａｒｅ  Ｍａｎａｇｅｍｅｎｔ  ｏｆ  Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｍｅｍｏｒｙ」と題する、同時提出された特許出願ＰＯＵ９２０１１００９０ＵＳ１号に、追加の詳細がさらに提供されており、その内容全体を参照によって本願明細書に引用したものとする。
【０１８１】
クリア動作が実行される場合、コンテンツをゼロに設定することによって、ストレージ・クラス・メモリの指示されたインクリメントがクリアされる。
【０１８２】
さらに、解放動作が実行される場合、標準のＴＲＩＭコマンド１つ以上が、対応するＳＣＭアドレスを含むＳＳＤに出されるとよい。ＴＲＩＭコマンドは、ブロックの使用についてのヒントをプログラムが与えることを可能にし、ＳＳＤによる改善されたガベージ・コレクションを可能にする。ＴＲＩＭコマンドは、オペレーティング・システムがＳＳＤに、ストレージのどのブロックがもはや使用中とは見なされず、消去可能かを通知できるようにする。
【０１８３】
ＥＡＤＭ動作は、サブチャネル・クリア命令によって早期終了され得る。サブチャネル・クリア命令の実行は、サブチャネルにおけるＡＯＢの実行を終了させ、実行中のＡＯＢのインジケーションをサブチャネルからクリアし、クリア機能を非同期的に実行する。クリア機能が実行されると、サブチャネルがステータス・ペンディングになる前にデータ転送は終了され、転送されたデータの量は予測不能である。クリア機能の実行の結果、ステータスは生成されないが、チャネル・サブシステムにＩ／Ｏ割り込みをペンディングにさせる。
【０１８４】
図１１を参照する。一実施形態では、サブチャネル・クリア命令３５０は、サブチャネル・クリア機能を指示する動作コード３５２を含む。クリアされるサブチャネルは、例えば汎用レジスタ１内のサブシステム識別ワードによって指示される。
【０１８５】
ＡＤＭタイプ・サブチャネルのクリア機能には以下が含まれる。
【０１８６】
１．現在のデータ転送が終了されるのを確認する。
【０１８７】
２．サブチャネルのフィールド、および条件付きでＡＲＳＢを変更する。例えば、機能制御フィールドおよびアクティビティ制御フィールドにおいてクリア機能を示すようサブチャネル・ステータス・ワードが変更される。ＡＲＳＢは、検出された任意のエラーを反映するよう変更され得る。
【０１８８】
３．サブチャネルをステータス・ペンディングにさせ、クリア機能の完了を示す。
【０１８９】
サブチャネル・テスト、サブチャネル変更、およびサブチャネル格納を含む、ＡＤＭタイプ・サブチャネルを指定することができるほかの命令も発行され得る。これらそれぞれについて、以下記載する。
【０１９０】
図１２を参照する。一例では、サブチャネル・テスト命令３６０は、例えば、サブチャネル・テスト機能を指定する動作コード３６２と、例えばテストされるサブチャネルを指示するサブシステム識別ワードを含む汎用レジスタ１内に位置する暗黙のオペランドである、第１オペランド３６４と、情報が格納される割り込み応答ブロック（ＩＲＢ）の論理アドレスである第２オペランド３６６とを含む。
【０１９１】
ＡＤＭタイプ・サブチャネルを指定するサブチャネル・テストが実行され、サブチャネルがステータス・ペンディングであり、指示されたＥＡＤＭ  ＩＲＢ（割り込み応答ブロック）に情報が格納されると、指定の条件コードが設定される。サブチャネルがステータス・ペンディングでなく、指示されたＥＡＤＭ  ＩＲＢにステータス情報が格納されると、規定の条件コードが設定される。サブチャネルが提供または有効化されていない場合、何らのアクションもとられない。
【０１９２】
一例では、ＥＡＤＭ  ＩＲＢは、サブチャネル・ステータス・ワード（ＳＳＷ：Ｓｕｂｃｈａｎｎｅｌ  Ｓｔａｔｕｓ  Ｗｏｒｄ）および拡張ステータス・ワード（ＥＳＷ：Ｅｘｔｅｎｄｅｄ  Ｓｔａｔｕｓ  Ｗｏｒｄ）、ならびにファシリティにおいて存在し得る条件を記述するモデル依存のさらなる情報を提供するとよい拡張制御ワードを含む。これらのワードそれぞれについては、ＡＤＭタイプ・サブチャネルを指定することができる様々な命令について説明した後、さらに後述する。
【０１９３】
図１３を参照する。一実施形態では、サブチャネル変更命令３７０は、例えば、サブチャネル変更機能を指定する動作コード３７２と、例えば変更されるサブチャネルを指示するサブシステム識別ワードを含む汎用レジスタ１内に位置する暗黙のオペランドである、第１オペランド３７４と、サブチャネルに関連するサブチャネル情報ブロック（ＳＣＨＩＢ：ｓｕｂｃｈａｎｎｅｌ  ｉｎｆｏｒｍａｔｉｏｎ  ｂｌｏｃｋ）の論理アドレスである第２オペランド３７６とを含む。
【０１９４】
ＡＤＭタイプ・サブチャネルを指定するサブチャネル変更が実行され、指定されたサブチャネル情報ブロック（ＳＣＨＩＢ）からの情報がサブチャネルに入れられると、特定の条件コードが設定される。サブチャネルがステータス・ペンディングである場合、何らのアクションもとられず、規定の条件コードが設定される。サブチャネルが開始またはクリア機能でビジーである場合、何らのアクションもとられない。
【０１９５】
図１４を参照する。サブチャネル格納命令の一例について記載する。一例では、サブチャネル格納命令３８０は、サブチャネル格納機能を特定する動作コード３８２と、例えば情報が格納されるサブチャネルを指示するサブシステム識別ワードを含む汎用レジスタ１内に位置する暗黙のオペランドである、第１オペランド３８４と、ＳＣＨＩＢの論理アドレスである第２オペランド３８６とを含む。
【０１９６】
ＡＤＭタイプ・サブチャネルを指定するサブチャネル格納が発行され、ＳＣＨＩＢが格納されると、指定の条件コードが設定される。指示されたサブチャネルがチャネル・サブシステムにおいて提供されていない場合、何らのアクションもとられない。
【０１９７】
ＡＤＭタイプ・サブチャネルのサブチャネル情報ブロック（ＥＡＤＭ  ＳＣＨＩＢ）の一例について、図１５Ａを参照して説明する。一例では、ＥＡＤＭ  ＳＣＨＩＢ４００は、モデル依存の情報を含む、モデル依存のエリア４０１を含む。さらに、ＳＣＨＩＢ４００は、パス管理制御ワード（ＰＭＣＷ：ｐａｔｈ  ｍａｎａｇｅｍｅｎｔ  ｃｏｎｔｒｏｌ  ｗｏｒｄ）４０２およびサブチャネル・ステータス・ワード（ＳＣＳＷ）４０４を含み、これらそれぞれについて以下記載する。
【０１９８】
一例では、ＥＡＤＭ  ＰＭＣＷ４０２は、例えば、図１５Ｂに示されている以下のフィールドを含む。
【０１９９】
割り込みパラメータ４１０：このフィールドは、Ｉ／Ｏ割り込みコードに格納される割り込みパラメータを含む。割り込みパラメータは、サブチャネル開始およびサブチャネル変更によって任意の値に設定可能である。サブチャネル内の割り込みパラメータ・フィールドの初期値はゼロである。
【０２００】
割り込みサブクラス（ＩＳＣ：Ｉｎｔｅｒｒｕｐｔｉｏｎ  Ｓｕｂｃｌａｓｓ）４１２：このフィールドは、構成内の各ＣＰＵの、指定の制御レジスタ内のＩ／Ｏ割り込みサブクラス・マスク・ビットのビット・ポジションに対応する、指定の範囲の符号なし２進整数である複数のビットを含む。ＣＰＵの制御レジスタ内のマスク・ビットの設定は、そのＣＰＵによる、サブチャネルに関する割り込み要求の認識を制御する。ＩＳＣは、サブチャネル変更によって、値の設定が可能である。サブチャネル内のＩＳＣフィールドの初期値は、例えばゼロである。
【０２０１】
有効化（Ｅ：Ｅｎａｂｌｅｄ）４１４：このフィールドは、設定されている場合、すべてのＥＡＤＭ機能に関してサブチャネルが有効化されていることを示す。
【０２０２】
サブチャネル・タイプ（ＳＴ：Ｓｕｂｃｈａｎｎｅｌ  Ｔｙｐｅ）４１６：このフィールドは、サブチャネル・タイプを指示する。モデルおよび構成次第で、Ｉ／ＯサブチャネルまたはＡＤＭサブチャネルのサブチャネル・タイプのうちの１つ以上が提供され得る。
【０２０３】
このフィールドの値は、サブチャネルが構成されるときに決定され、サブチャネル変更による変更はできない。
【０２０４】
サブチャネル変更命令が実行され、ＡＤＭタイプ・サブチャネルを指示する場合、ＳＴは、ＡＤＭサブチャネルを示さなければならない。そうでない場合、オペランド例外が認識される。
【０２０５】
図１５Ａに戻る。サブチャネル情報ブロックはさらに、サブチャネル・ステータス・ワード４０４を含む。ＥＡＤＭサブチャネル・ステータス・ワード（ＳＣＳＷ）は、ＡＤＭタイプ・サブチャネルおよび関連するＥＡＤＭ動作のステータスを記述するインジケーションをプログラムに提供する。図１５Ｃに示されているとおり、一例では、サブチャネル・ステータス・ワード４０４には以下が含まれる。
【０２０６】
サブチャネル・キー（キー）４２０：機能制御フィールド（後述）内のＥＡＤＭ開始機能インジケータが設定されている場合、このフィールドは、チャネル・サブシステムによって使用されるストレージ・アクセス・キーを含む。これらのビットは、サブチャネル開始が実行されたときにＥＡＤＭ  ＯＲＢ内で指定されたキーと同一である。
【０２０７】
拡張ステータス・ワード・フォーマット（Ｌ）４２２：ステータス制御フィールド（後述）のステータス・ペンディング・インジケータが設定されている場合、このフィールドは、設定されると、フォーマット０  ＥＳＷが格納されたことを示す。フォーマット０  ＥＳＷは、以下のインジケーションのいずれかを含む割り込み条件がサブチャネル・テストによってクリアされると格納される。
【０２０８】
＊  プログラム・チェック
【０２０９】
＊  保護チェック
【０２１０】
＊  チャネル・データ・チェック
【０２１１】
＊  チャネル制御チェック
【０２１２】
＊  拡張非同期データ移動ファシリティ（ＥＡＤＭＦ：Ｅｘｔｅｎｄｅｄ  ａｓｙｎｃｈｒｏｎｏｕｓ  ｄａｔａ  ｍｏｖｅ  ｆａｃｉｌｉｔｙ）チェック
【０２１３】
遅延条件コード（ＣＣ：Ｃｏｎｄｉｔｉｏｎ  Ｃｏｄｅ）４２４：ＥＡＤＭ開始機能インジケータが設定され、ステータス・ペンディング・インジケータも設定されている場合、このフィールドは、サブチャネル・テストまたはサブチャネル格納が実行されたときにサブチャネルがステータス・ペンディングであった概略の理由を示す。遅延条件コードは、サブチャネルがステータスの任意の組み合わせを伴うステータス・ペンディングである場合であって、ＳＣＳＷ内の機能制御フィールドの開始機能インジケータが設定されている場合にのみ意味を持つ。
【０２１４】
遅延条件コードは、設定される場合、サブチャネルが開始ペンディングである間にサブチャネルがサブチャネル・アクティブになることを妨げる条件が生じたかどうかを示すために使用される。
【０２１５】
例示の遅延条件コードには以下が含まれる。
【０２１６】
＊  通常のＩ／Ｏ割り込みが提示された。
【０２１７】
＊  ＥＡＤＭ開始機能の開始の成功を妨げる条件に関してチャネル・サブシステムによって生成されたステータスが、ＥＡＤＭ  ＳＣＳＷ内にある。すなわち、サブチャネルはサブチャネル・アクティブ状態に移行しなかった。
【０２１８】
ＣＣＷ（ｃｈａｎｎｅｌ−ｃｏｍｍａｎｄ  ｗｏｒｄ：チャネル・コマンド・ワード）フォーマット（Ｆ）４２６：ＥＡＤＭ開始機能インジケータが設定されている場合、このフィールドは、規定値として格納される。
【０２１９】
プリフェッチ（Ｐ：Ｐｒｅｆｅｔｃｈ）４２８：ＥＡＤＭ開始機能インジケータが設定されている場合、このフィールドは、規定値として格納される。
【０２２０】
拡張制御（Ｅ）４３０：このフィールドは、設定されている場合、ＥＡＤＭ拡張制御ワード（ＥＣＷ：ｅｘｔｅｎｄｅｄ  ｃｏｎｔｒｏｌ  ｗｏｒｄ）内にモデル依存の情報が格納されていることを示す。
【０２２１】
機能制御（ＦＣ）４３２：機能制御フィールドは、サブチャネルにて示されているＥＡＤＭ機能を示す。例示の機能には以下が含まれる。
【０２２２】
＊  ＥＡＤＭ開始機能：設定されている場合、ＥＡＤＭ開始機能が要求され、ＡＤＭタイプ・サブチャネルにてペンディングまたは進行中のいずれかであることを示す。ＥＡＤＭ開始機能は、サブチャネル開始に関して正常な条件コードが設定されている場合に、サブチャネルにて示される。ＥＡＤＭ開始機能は、サブチャネル・テストが実行され、サブチャネルがステータス・ペンディングである場合、サブチャネルにてクリアされる。ＥＡＤＭ開始機能は、サブチャネル・クリアの実行中にもサブチャネルにてクリアされる。
【０２２３】
＊  ＥＡＤＭクリア機能：設定されている場合、ＥＡＤＭクリア機能が要求され、ＡＤＭタイプ・サブチャネルにてペンディングまたは進行中のいずれかであることを示す。ＥＡＤＭクリア機能は、サブチャネル・クリアに関して正常な条件コードが設定されている場合に、サブチャネルにて示される。ＥＡＤＭクリア機能インジケーションは、サブチャネル・テストが実行され、サブチャネルがステータス・ペンディングである場合、サブチャネルにてクリアされる。
【０２２４】
アクティビティ制御（ＡＣ：Ａｃｔｉｖｉｔｙ  Ｃｏｎｔｒｏｌ）４３４：アクティビティ制御フィールドは、サブチャネルにて前に受け取られたＥＡＤＭ機能の現在の進行状況を示す。
【０２２５】
サブチャネル・テストが実行されサブチャネルがステータス・ペンディングである場合、アクティビティ制御フィールド内のビットにより表されるすべての条件は、ＡＤＭタイプ・サブチャネルにてリセットされる。
【０２２６】
例示のアクティビティには以下が含まれる。
【０２２７】
＊  開始ペンディング：設定されている場合、サブチャネルが開始ペンディングであることを示す。チャネル・サブシステムは、ＥＡＤＭ開始機能を実行する最中であることも、そうではないこともある。サブチャネルは、サブチャネル開始に関して正常な条件コードが設定されると、開始ペンディングになる。ＥＡＤＭ開始機能の実行時に、ＡＲＱＢのフェッチを妨げる条件が存在することをチャネル・サブシステムが判断すると、サブチャネルは開始ペンディングのままとなる。
【０２２８】
サブチャネルは、以下のうちのいずれかが発生すると、開始ペンディングでなくなる。
【０２２９】
＊  チャネル・サブシステムが、ＡＯＢによって指定された最初のデータ転送の開始を試行する。
【０２３０】
＊  サブチャネル・クリアが実行される。
【０２３１】
＊  サブチャネル・テストが、サブチャネルにおけるステータス条件をクリアする。
【０２３２】
クリア・ペンディング：設定されている場合、サブチャネルはクリア・ペンディングである。チャネル・サブシステムは、ＥＡＤＭクリア機能を実行する最中であることも、そうではないこともある。サブチャネルは、サブチャネル・クリアの指定の条件コードが設定されると、クリア・ペンディングになる。
【０２３３】
サブチャネルは、以下のうちのいずれかが発生すると、クリア・ペンディングでなくなる。
【０２３４】
＊  ＥＡＤＭクリア機能が実行される。
【０２３５】
＊  サブチャネルが、ステータス・ペンディング条件のみをクリアする。
【０２３６】
サブチャネル・アクティブ：設定されている場合、ＡＤＭタイプ・サブチャネルがサブチャネル・アクティブであることを示す。チャネル・サブシステムが、ＡＯＢによって指定された最初のデータ転送の開始、または最初の動作の実行（いずれか最初に生じる方）を試行すると、ＡＤＭタイプ・サブチャネルは、サブチャネル・アクティブであると言われる。
【０２３７】
サブチャネルは、以下のうちのいずれかが発生すると、サブチャネル・アクティブでなくなる。
【０２３８】
＊  サブチャネルがステータス・ペンディングになる。
【０２３９】
＊  サブチャネル・クリアが実行される。
【０２４０】
ステータス制御（ＳＣ：Ｓｔａｔｕｓ  Ｃｏｎｔｒｏｌ）４３６：ステータス制御フィールドは、サブチャネル・ステータスおよびデバイス・ステータス・フィールド内の情報によって記述される割り込み条件の、概要レベルのインジケーションをプログラムに提供する。サブチャネルにおける条件を受けて、２つ以上のステータス制御インジケータが設定されてもよい。
【０２４１】
例示のステータス制御には以下が含まれる。
【０２４２】
アラート・ステータス：設定されている場合、アラート割り込み条件が存在することを示す。アラート割り込み条件は、アラート・ステータスがサブチャネルにある場合に認識される。アラート・ステータスは、以下の条件のうちのいずれかの下で、チャネル・サブシステムによって生成される。
【０２４３】
＊  ＡＤＭタイプ・サブチャネルが開始ペンディングであり、ステータス条件が最初のデータ転送の開始を妨げる。
【０２４４】
＊  サブチャネルがサブチャネル・アクティブであり、サブチャネル・ステータスとしてレポートされている異常条件が、ＥＡＤＭ動作を終了させた。
【０２４５】
サブチャネル・テストまたはサブチャネル・クリアが実行されると、サブチャネルにてアラート・ステータスがクリアされる。
【０２４６】
一次ステータス：設定されている場合、一次割り込み条件が存在することを示す。一次ステータスがサブチャネルにあると、一次割り込み条件が認識される。一次割り込み条件は、二次割り込み条件を伴う場合、サブチャネルにおけるＥＡＤＭ開始機能の完了を示す、応答型割り込み条件である。
【０２４７】
サブチャネル・テストまたはサブチャネル・クリアが実行されると、サブチャネルにて一次割り込み条件がクリアされる。
【０２４８】
二次ステータス：設定されている場合、二次割り込み条件が存在することを示す。二次ステータスがサブチャネルにあると、二次割り込み条件が認識される。二次割り込み条件は、一次割り込み条件を伴う場合、サブチャネルにおけるＥＡＤＭ開始機能の完了を示す、応答型割り込み条件である。
【０２４９】
サブチャネル・テストまたはサブチャネル・クリアが実行されると、サブチャネルにて二次割り込み条件がクリアされる。
【０２５０】
ステータス・ペンディング：設定されている場合、サブチャネルがステータス・ペンディングであること、および割り込み条件の原因を記述する情報が利用可能であることを示す。サブチャネル・テストが実行され、ステータス・ペンディング・ビットが設定されているＥＡＤＭ  ＳＣＳＷが格納されると、サブチャネルにてすべてのＥＡＤＭ  ＳＣＳＷインジケーションがクリアされ、サブチャネルはアイドル状態に入る。ステータス・ペンディング条件は、サブチャネル・クリアの実行中にもサブチャネルにてクリアされる。
【０２５１】
ステータス・ペンディングが設定されている場合、サブチャネルＡＲＳＢに関する、メイン・ストレージおよびストレージ・クラス・メモリへのアクセスはすべて終了している。
【０２５２】
サブチャネル・ステータス４３８：ＡＤＭタイプ・サブチャネル・ステータス条件は、チャネル・サブシステムにより検出されて、サブチャネル・ステータス・フィールドに格納される。サブチャネル・ステータス・フィールドは、サブチャネルがステータス・ペンディングである場合に意味を持つ。機器の誤作動により生じる条件を除いて、サブチャネル・ステータスは、チャネル・サブシステムがＥＡＤＭ機能の処理に関与している場合のみ発生し得る。
【０２５３】
ステータス条件の例には以下が含まれる。
【０２５４】
＊  プログラム・チェック：プログラム・チェックは、チャネル・サブシステムによってプログラミング・エラーが検出されると発生する。
【０２５５】
＊  保護チェック：保護チェックは、チャネル・サブシステムが、保護メカニズムによって禁止されているストレージ・アクセスを試行すると発生する。保護は、ＡＲＱＢ、ＭＳＢ、ＡＩＤＡＷ、およびストレージ・クラス・メモリに転送されるデータのフェッチ、ならびにＡＲＳＢにおける情報の格納およびストレージ・クラス・メモリから転送されたデータの格納に当てはまる。
【０２５６】
＊  チャネル・データ・チェック：チャネル・データ・チェックは、メイン・ストレージからのデータのフェッチまたはメイン・ストレージへのデータの格納に関して、修正されていないストレージ・エラーが検出されたことを示す。
【０２５７】
＊  チャネル制御チェック：チャネル制御チェックは、ＡＯＢ、ＭＳＢもしくはＡＩＤＡＷのフェッチもしくは格納に関して修正されていないストレージ・エラーが検出されたこと、またはチャネル・サブシステムがマシン誤作動に遭遇し、誤作動がＥＡＤＭ動作に影響を及ぼしたことを示す。
【０２５８】
＊  拡張非同期データ移動（ＥＡＤＭ）ファシリティ・チェック：ＥＡＤＭファシリティ・チェックは、ストレージ・クラス・メモリへ、もしくはストレージ・クラス・メモリからのデータの転送に関して、またはストレージ・クラス・メモリ上での動作の実行に関して、ＥＡＤＭファシリティによりエラーが検出されたことを示す。
【０２５９】
プログラム・チェック、保護チェック、チャネル・データ・チェック、チャネル制御チェック、またはＥＡＤＭファシリティ・チェック条件がチャネル・サブシステムによって認識されると、ＥＡＤＭ動作は終了され、チャネルは一次、二次およびアラート・ステータスを伴うステータス・ペンディングにされる。
【０２６０】
ＥＡＤＭ動作ブロック・アドレス（４４０）：このフィールドは、ＥＡＤＭ動作ブロック・アドレスを含む。
【０２６１】
デバイス・ステータス４４２：これは、デバイス終了またはチャネル終了を含む。
【０２６２】
サブチャネル・ステータス・ワードのＥＳＷフォーマット４２２が設定されていて、サブチャネルがステータス・ペンディングである場合、ＡＤＭタイプ・サブチャネルについての追加情報を指定するＥＡＤＭサブチャネル拡張ステータス・ワード（ＥＡＤＭ  ＥＳＷ）が提供される。
【０２６３】
一例として、図１５Ｄを参照する。ＥＡＤＭサブチャネル拡張ステータス・ワード４５０には以下が含まれる。
【０２６４】
ＥＡＤＭサブチャネル・ログアウト４５２：ＥＡＤＭサブチャネル・ログアウトには、一例では以下が含まれる。
【０２６５】
＊  拡張ステータス・フラグ（ＥＳＦ：Ｅｘｔｅｎｄｅｄ  Ｓｔａｔｕｓ  Ｆｌａｇｓ）：フィールドのビットが１である場合、チャネル・サブシステムによってエラーが検出されたことを指定するフィールド。
【０２６６】
拡張ステータス・フラグの例には以下が含まれる。
【０２６７】
キー・チェック：設定されている場合、チャネル・サブシステムが、ＥＡＤＭ動作ブロック（ＡＯＢ）内、ＥＡＤＭ移動指定ブロック（ＭＳＢ）内、またはＥＡＤＭ間接データ・アドレス・ワード（ＡＩＤＡＷ）内のデータを参照しているときに関連するストレージ・キー上で無効なチェック・ブロック・コード（ＣＢＣ）を検出したことを示す。
【０２６８】
＊  ＡＯＢアドレス有効性：設定されている場合、ＳＣＳＷのＡＯＢアドレス・フィールドに格納されているアドレスがリカバリ目的で使用可能であることを示す。
【０２６９】
例として以下を含む、ＥＡＤＭ拡張レポート・ワード４５４。
【０２７０】
設定されている場合、ＥＡＤＭ  ＳＣＳＷに格納されている例外ステータスが指定のＥＡＤＭ動作ブロック（ＡＯＢ）に関連することを指定する、ＥＡＤＭ動作ブロック・エラー（Ｂ）インジケータ；および設定されている場合、ＥＡＤＭ応答ブロック（ＡＲＳＢ）が格納されていることを示すＥＡＤＭ応答ブロック格納済み（Ｒ）インジケータ。
【０２７１】
ＳＣＳＷの拡張制御インジケータおよびＳＣＳＷの拡張ステータス・ワード・フォーマット・インジケータが設定されている場合、ＥＡＤＭ拡張制御ワードは、ＥＡＤＭファシリティに存在し得る条件を記述する、モデル依存の性質の追加情報を提供する。
【０２７２】
さらに、ＡＤＭタイプ・サブチャネルに関して、以下のチャネル・レポート・ワード（ＣＲＷ：ｃｈａｎｎｅｌ  ｒｅｐｏｒｔ  ｗｏｒｄ）がレポートされてもよい：サブチャネル・インストール・パラメータ初期化、サブチャネル・インストール・パラメータ回復、サブチャネル利用可能、チャネル・イベント情報ペンディング。
【０２７３】
ＥＡＤＭファシリティ内で発生する非応答型イベントおよび誤作動は、チャネル・イベント情報ペンディングＣＲＷによってレポートされるとよい。
【０２７４】
メイン・ストレージとストレージ・クラス・メモリとの間でデータ・ブロックを移動し、ストレージ・クラス・メモリ上でその他の動作を実行するために使用される、拡張非同期データ・ムーバ・ファシリティについて、上記に詳細に記載した。一実施形態では、ＥＡＤＭファシリティおよびストレージ・クラス・メモリについての情報は、ＥＡＤＭコマンドを使用して取得される。具体的には、ストレージ・クラス・メモリは直接アクセス可能ではないため、ストレージ・クラス・メモリが割り当てられているかどうかを判断し、割り当てられていれば構成に関する情報を取得するための能力が提供される。具体的には、一例として、任意のストレージ・クラス・メモリが割り当てられているか否か、割り当てられている場合はその量および位置を、制御プログラム（例えばオペレーティング・システム）に伝達するための能力が提供される。利用可能なストレージ・クラス・メモリを判断するための能力は、本願明細書において、ディスカバリと呼ばれ、ディスカバリ機能の一例は、ストレージ・クラス・メモリ（ＳＣＭ）情報格納（ＳＳＩ：Ｓｔｏｒｅ  ＳＣＭ  Ｉｎｆｏｒｍａｔｉｏｎ）コマンドによって提供される。
【０２７５】
ストレージ・クラス・メモリ情報格納（ＳＳＩ）コマンドは、ストレージ・クラス・メモリおよび拡張非同期データ・ムーバ・ファシリティについての情報を取得するために使用される。ＳＳＩコマンドは、例えばチャネル・サブシステムから取得された以下の情報を返す。この情報については、さらに詳しく後述する。
【０２７６】
１．以下を含むＥＡＤＭファシリティの特徴：
【０２７７】
＊  ＡＯＢ毎の移動指定ブロック（ＭＳＢ）の最大カウント。
【０２７８】
＊  ＭＳＢ毎の最大ブロック・カウント。
【０２７９】
２．以下を含むストレージ・クラス・メモリの特徴：
【０２８０】
＊  ＳＣＭインクリメント・サイズ。
【０２８１】
＊  ＳＣＭアドレス空間内のＳＣＭアドレス・インクリメントのリスト。
【０２８２】
＊  モデル依存の最大ＳＣＭアドレス。
【０２８３】
ＳＣＭ情報格納（Ｓｔｏｒｅ  ＳＣＭ  Ｉｎｆｏｒｍａｔｉｏｎ）コマンドの実行は、同期式であり、チャネル・サブシステムに含まれたいずれの情報も変更しない。
【０２８４】
ＳＳＩコマンドに関するさらなる詳細について、図１６〜１９を参照して説明する。まず図１６を参照する。一実施形態では、ＳＣＭ情報格納コマンドのコマンド要求ブロック５００には、例えば以下が含まれる。
【０２８５】
長さ５０２：コマンド要求ブロックの長さを指定する値。
【０２８６】
コマンド・コード５０４：ＳＣＭ情報格納コマンドのコマンド・コードを指定する値。
【０２８７】
フォーマット（ＦＭＴ）５０６：コマンド要求ブロックのフォーマットを指定する値。
【０２８８】
継続トークン５０８：完了しなかった前の応答からの再開のための継続ポイントを要求できる値。継続トークンの値がゼロであれば、新たに開始される。継続トークンの値がゼロ以外であり認識されなければ、新たに開始される。
【０２８９】
ＳＳＩコマンドの応答ブロック５２０の一実施形態について、図１７を参照して説明する。例えば以下が含まれる。
【０２９０】
長さ５２２：コマンド応答ブロックのバイト長を示す値。
【０２９１】
応答コード５２４：ＳＳＩコマンドの実行を試行した結果を記述する値。応答コード値は、応答ブロックの長さを表す。例えば、選択された応答コードが格納される場合、長さは、９６＋Ｎ×１６バイトを指定し、Ｎは、後述のストレージ・クラス・メモリ・アドレス・リスト・エントリの数である。一例では、Ｎは１≦Ｎ≦２４８の範囲である。
【０２９２】
フォーマット（ＦＭＴ）５２６：コマンド応答ブロックのフォーマットを示す値。フィールドの値は、例えばゼロである。
【０２９３】
ＲＱ５２８：以下に規定する応答修飾子値である。
【０２９４】
応答修飾は存在しない。
【０２９５】
指定された継続トークンが認識されず、ゼロが指定されたかのように扱われる。
【０２９６】
ＭＳＢ毎の最大ブロック・カウント（ＭＢＣ：Ｍａｘｉｍｕｍ  Ｂｌｏｃｋ  Ｃｏｕｎｔ  ｐｅｒ  ＭＳＢ）５３０：移動指定ブロック（ＭＳＢ）のブロック・カウント・フィールド内で使用され得る最大値を示す値。
【０２９７】
最大ＳＣＭアドレス（ＭＳＡ：Ｍａｘｉｍｕｍ  ＳＣＭ  Ａｄｄｒｅｓｓ）５３２：モデル依存の最大ＳＣＭアドレスを示す値。アドレス指定可能な最上位のＳＣＭインクリメント内の、最後のバイトのＳＣＭアドレスである。
【０２９８】
ＳＣＭインクリメント・サイズ（ＩＳ：Ｉｎｃｒｅｍｅｎｔ  Ｓｉｚｅ）５３４：ＳＣＭアドレス・リスト内の各ＳＣＭインクリメントのサイズを表す値であって、例えば２のべき乗である。
【０２９９】
最大ＭＳＢカウント（ＭＭＣ：Ｍａｘｉｍｕｍ  ＭＳＢ  Ｃｏｕｎｔ）５３６：ＥＡＤＭ動作ブロック（ＡＯＢ）内で指定され得る移動指定ブロック（ＭＳＢ）の最大カウントを示す値。
【０３００】
構成可能な最大ＳＣＭインクリメント（ＭＣＩ：Ｍａｘｉｍｕｍ  Ｃｏｎｆｉｇｕｒａｂｌｅ  ＳＣＭ  Ｉｎｃｒｅｍｅｎｔｓ）５３８：要求元の構成に対して構成され得るＳＣＭインクリメントの最大数である値。
【０３０１】
一実施形態では、ＭＣＩは２（６４−ＩＳ）以下である。例えば、１６ＧバイトＳＣＭインクリメント・サイズの場合、１６ＧバイトＳＣＭインクリメントのすべてが、６４ビット・アドレスのアドレス指定制約の中でアドレス可能でなければならないため、ＭＣＩ≦２（６４−３４）である。さらに、（（ＭＣＩ＋１）×ＩＳ）−１は、モデル依存の最大ＳＣＭアドレスを上回らない。
【０３０２】
構成されたＳＣＭインクリメントの数（ＮＣＩ：ｎｕｍｂｅｒ  ｏｆ  ｃｏｎｆｉｇｕｒｅｄ  ＳＣＭ  ｉｎｃｒｅｍｅｎｔｓ）は、後述の、正常なストレージ・クラス・メモリ構成コマンドが実行されるときに指定されてよい合計サイズ（ＴＳ：ｔｏｔａｌ  ｓｉｚｅ）を、ＴＳ≦（ＭＣＩ−ＮＣＩ）のように削減する。なお、システムの全容量と、ほかの構成に既に行われた割り当てとによって、初期化状態のＳＣＭインクリメントの数は、ほかの点では要求元の構成のＭＣＩ限界まで有効に構成するような要求を、完全に満たすことができることも、できないこともある。
【０３０３】
ＣＰＣの初期化ＳＣＭインクリメントの合計５４０：システムの（例えば中央処理コンプレックス（ＣＰＣ）の）初期化状態のＳＣＭインクリメントの数を表す値。システムが論理的に分割されている場合、これは、パーティションに対する／による割り当てに利用可能なインクリメントの数の合計である。
【０３０４】
ＣＰＣの非初期化ＳＣＭインクリメントの合計５４２：システムの（例えばＣＰＣの）非初期化状態のＳＣＭインクリメントの数を表す値。
【０３０５】
ＳＣＭ測定ブロック・サイズ５４４：ＳＣＭ測定ブロックの、バイト単位のブロック・サイズ（ＢＳ）である値。一例では、２のべき乗であり、最大ＳＣＭ測定ブロック・サイズは、例えば４０９６バイトである。
【０３０６】
ＳＣＭリソース・パーツの最大数５４６：ＳＣＭリソース・パーツ（ＲＰ：ｒｅｓｏｕｒｃｅ  ｐａｒｔｓ）（例えばＩ／Ｏアダプタ）のＣＰＣ上の最大数である値。各ＳＣＭインクリメントは、ＳＣＭリソース・パーツに関連する。各ＳＣＭリソース（例えば、１つ以上のＩ／Ｏアダプタおよび１つ以上のＳＳＤ）は、１つ以上のパーツを含む。ＳＣＭリソース・パーツの最大数は、例えば５０９である。
【０３０７】
一例では、「リソース・パーツ」という用語は、ストレージ・クラス・メモリに関する測定情報の取得に使用されるよう定義される。各ＳＣＭインクリメントは、複数のアダプタにわたって分散させることができ、各アダプタは、伝えるべき何らかの利用／測定データを有する。したがって、返される各測定ブロックは、インクリメント識別子およびリソース識別子から成るタプルによって識別される。
【０３０８】
ＳＣＭデータ・ユニット・サイズ５４８：ＳＣＭデータ・ユニットに含まれるバイトの数を示す、モデル依存の値。一例では、データ・ユニットは、ストレージ・クラス・メモリに関する測定情報の取得に使用されるよう規定される。レポートされるカウントは、バイトではなく、データ・ユニットのカウントである。
【０３０９】
継続トークン５５０：モデル依存の値であって、これによって、後のＳＳＩコマンドの発行が、このトークンによって表される継続ポイントにおいて継続し得る。継続トークンのコンテンツは、モデルに依存する。
【０３１０】
ストレージ・クラス・メモリ・アドレス・リスト５５２：ＳＣＭアドレス・リストの起点。格納される応答コードが所定の値である場合、複数のＳＣＭアドレス・リスト・エントリ（ＳＡＬＥ：ＳＣＭ  ａｄｄｒｅｓｓ  ｌｉｓｔ  ｅｎｔｒｙ）が格納される（例えば、（長さ−９６）／１６のＳＡＬＥが格納される）。
【０３１１】
一例では、格納されるＳＡＬＥの数は、要求元の構成におけるＳＣＭインクリメントの数、コマンド実行時のそれぞれのステータス、およびチャネル・サブシステム・モデルによって決まる。ゼロ以上のＳＡＬＥが格納され、格納されている実際の数は、一例では、応答ブロックのサイズ（長さ）から９６を減じ、続いてその結果を１６で割ることによって求められる。
【０３１２】
各ＳＣＭアドレス・リスト・エントリ（ＳＡＬＥ）は、ＳＣＭアドレスのある範囲を占有する１つのＳＣＭインクリメントを表す。ＳＡＬＥによって表されるＳＣＭインクリメントの開始ＳＣＭアドレスは、ＳＡＬＥに含まれ、これは、対応するＳＣＭインクリメントの第１バイトのＳＣＭアドレスである。終了アドレスは、一例では、バイト単位でのＳＣＭインクリメント・サイズを開始ＳＣＭアドレスに加算して、続いて１を減じることによって計算される。これは、ＳＣＭインクリメントの最後のバイトのＳＣＭアドレスである。ＳＡＬＥによって表されるストレージ・クラス・メモリは、一実施形態では、自然な２ＩＳバイト境界上で開始するＳＣＭバイト位置の連続的なセットである。
【０３１３】
ＳＡＬＥは、対応するＳＣＭインクリメントが構成済み状態であり、応答ブロック内にＳＡＬＥのための空間が利用可能である場合に格納される。応答ブロックのＳＣＭアドレス・リスト内の空間が使い果たされていれば、継続トークンに値が格納され、実行は、特定の応答コードにより完了する。
【０３１４】
２つ以上のＳＡＬＥは、そのＳＣＭアドレスの昇順で格納される。
【０３１５】
ＳＡＬＥの一実施形態について、図１８を参照して説明する。一例では、ＳＡＬＥ５５２には、例えば以下が含まれる。
【０３１６】
ＳＣＭアドレス（ＳＡ：ＳＣＭ  Ａｄｄｒｅｓｓ）５６０：ＳＣＭインクリメント・サイズによって決定される自然境界（２ＩＳバイト）上に位置合わせした、ＳＣＭアドレス空間内の対応するＳＣＭインクリメントのバイト０の開始ＳＣＭアドレスである値。
【０３１７】
持続性属性（Ｐ：Ｐｅｒｓｉｓｔｅｎｃｅ）５６２：ＳＣＭインクリメントに適用される現在の持続性ルールを示す値。ＳＣＭインクリメント内の任意の位置が、持続性ルールを継承する。考えられる持続性ルールには以下が含まれる。
【０３１８】
ルール１−電源オフ時にデータを保持。
【０３１９】
ルール２−パワー・オン・リセットまたはＩＭＬまでデータを保持。
【０３２０】
Ｏｐ（ｏｐｅｒａｔｉｏｎ：動作）状態５６４：ＳＡＬＥによって表されるストレージ・クラス・メモリ・インクリメントの動作状態を示す値。動作状態は、関連するＳＣＭインクリメントが構成済み状態の場合のみ有効である。
【０３２１】
動作状態の例には以下が含まれる。
【０３２２】
動作可能（Ｏｐ：Ｏｐｅｒａｔｉｏｎａｌ）：ＳＡＬＥによって表されたストレージ・クラス・メモリが、すべてのＩ／Ｏ動作に利用可能である。構成が成功すると動作可能状態に入り、一時または永久エラー状態から抜け出ると再び動作可能状態に入る。
【０３２３】
一時エラー（ＴＥ：Ｔｅｍｐｏｒａｒｙ  ｅｒｒｏｒ）：ＳＡＬＥによって表されたストレージ・クラス・メモリが、いずれのＩ／Ｏ動作にも利用可能でない。データ状態は無効であるが、動作可能から一時エラーへの移行時のデータ・コンテンツは保たれる。ＳＣＭインクリメントへのアクセスが存在しない場合に、動作可能状態から一時エラー状態に入る。
【０３２４】
永久エラー（ＰＥ：Ｐｅｒｍａｎｅｎｔ  ｅｒｒｏｒ）：ＳＡＬＥによって表されたストレージ・クラス・メモリが、いずれのＩ／Ｏ動作にも利用可能でない。データ状態は無効であり、データは失われる。修正不能なエラー条件が認識された場合に、一時エラー状態または動作可能状態から永久エラー状態に入る。
【０３２５】
動作が、ＥＡＤＭ応答ブロックの例外修飾子コード内に永久エラーのインジケーションが設定された状態で完了する場合、少なくともその対応するＳＣＭインクリメントが、永久エラー状態に入っている。しかし、その１つのＳＣＭインクリメント以外も永久エラー状態に入っていることもある。
【０３２６】
ＳＣＭインクリメントが動作可能状態ではない場合、そのインクリメント内の位置を参照するＩ／Ｏ動作が、ＥＡＤＭ応答ブロックの例外修飾子コード内に設定された一時または永久いずれかのエラーにより、拡張非同期データ移動ファシリティ・チェックを認識する。
【０３２７】
データ状態５６６：ＳＡＬＥによって表されるストレージ・クラス・メモリ・インクリメントのコンテンツのデータ状態を示す値。データ状態は、関連するＳＣＭインクリメントが構成済みかつ動作可能状態の場合に有効である。
【０３２８】
例示のデータ状態には以下が含まれる。
【０３２９】
ゼロ化−ＳＣＭインクリメントのコンテンツはすべてゼロである。
【０３３０】
有効−ＳＣＭインクリメントのコンテンツは、すべて成功した書き込みタイプ動作の蓄積である。インクリメント内のまだ書き込みが行われていない位置は、ゼロ化または予測不能のいずれかのままである。
【０３３１】
予測不能−任意の書き込みタイプＩ／Ｏ動作以前のＳＣＭインクリメントのコンテンツは、未知である。１つ以上の書き込みタイプ動作が実行された後、その位置への書き込みが成功した結果としてＳＣＭインクリメントのデータ状態が有効になっても、ほかの書き込まれていない位置のデータ・コンテンツは予測不能のままである。
【０３３２】
ゼロ化または予測不能のいずれかの状態から有効状態への移行は、最初の書き込みの成功により発生する。書き込まれるデータのサイズと、ターゲットＳＣＭインクリメントのサイズとの任意の差が原因で、有効への変化は、まだ書き込まれていない任意のデータ位置の実際の条件を表現するものではない。そのような位置は、書き込みのためにアクセスされていないため、事実上まだ、ゼロ化または予測不能と表現される。
【０３３３】
ランク５６８：ＳＡＬＥによって表されるストレージ・クラス・メモリ・インクリメントの概念上の品質を示す値。ランクは、関連するＳＣＭインクリメントが構成済みかつ動作可能状態の場合にのみ有効である。ゼロの値は、ランクが存在しないことを意味する。指定の範囲内のゼロ以外の値は、ランクが存在することを意味する。この例では、１のランク値が、最高または最良のランクである。１５のランク値が、最低または最悪のランクである。ほかの条件がすべて同じであれば、より高いランクのＳＣＭがより低いランクのＳＣＭよりも優先される。
【０３３４】
Ｒ５７０：このフィールドは、ＳＣＭインクリメントが解放動作を認識することを示す。以下の挙動が関係する。
【０３３５】
１．解放されたブロックは、読み取りの前にまず書き込まれる。そうでない場合、書き込みに読み取りが先行すると、読み取り動作のエラーが認識される。そのようなエラーの場合、ＳＣＭインクリメントは動作可能状態にとどまる。
【０３３６】
２．初期構成の後、データ状態はゼロ化される。
【０３３７】
３．プログラムは、指定のブロックを解放済み条件にする、解放と呼ばれる特殊な動作を行うことができる。
【０３３８】
リソースＩＤ５７２：ゼロ以外の値は、ＳＡＬＥによって表されるＳＣＭインクリメントを提供するリソースのリソース識別子（ＲＩＤ：ｒｅｓｏｕｒｃｅ  ｉｄｅｎｔｉｆｉｅｒ）である。ＲＩＤがゼロの場合、リソースＩＤは示されない。１つの特定の例では、ＲＩＤは、ＳＣＭインクリメントのストレージを提供するのと同数のアダプタおよびＳＳＤを表す。特定のＲＡＩＤアルゴリズム、すなわち、複数のアダプタ／ＳＳＤにわたるコンカレントＩ／Ｏ動作を可能にして性能を改善するストライピングが利用されてもよいため、ＲＩＤは複合エンティティを表すこともある。
【０３３９】
ストレージ・クラス・メモリの構成状態、ならびにストレージ・クラス・メモリ・アドレス・リストの動作およびデータ状態に関するさらなる詳細について、以下記載する。
【０３４０】
まず、図２０を参照する。構成状態と、これらの状態の中での移行をもたらすイベント／アクションとが表現されている。図のように、ＳＣＭ状態は、構成済み、待機、および保留である。ＳＣＭは、保留から待機に入り、次に待機から構成済みに入ることができる。ＳＣＭは、構成済みから、構成解除されて保留の状態に入ることができる。
【０３４１】
図２１を参照する。動作状態と、これらの状態の中での移行をもたらすイベントとが示されている。ＳＣＭインクリメントは、構成されるには待機状態になければならず、構成アクションの完了に成功すると、動作可能状態になる。ゼロ化状態のＳＣＭインクリメントに対する最初の書き込みは、ＳＣＭインクリメントを有効状態に移す。ルール１の持続性を有すると示されていないＳＣＭインクリメントが、途中、電源オフ、続いて電源オンにされると、ＳＣＭインクリメントは予測不能状態に移る。
【０３４２】
エラー（Ｅ：ｅｒｒｏｒ）は、モデル依存のエラーの詳細に応じて、一時エラー（ＴＥ）状態または永久エラー状態（ＰＥ）への移行を生じ得る。接続性の確保（Ａ：Ａｃｑｕｉｓｉｔｉｏｎ）が、一時エラー状態から動作可能（Ｏｐ）状態への移行を生じ得る。ＳＣＭインクリメントの構成解除は、ＳＣＭインクリメントの動作状態にかかわらず発生し得る。
【０３４３】
図２１はさらに、動作可能状態のときのデータ状態を、動作可能状態への入り方に従って示す。ＳＣＭインクリメントが構成され動作可能状態である場合、データ状態は、有効であり、対応するＳＣＭインクリメントに当てはまる。有効なデータ状態は、ゼロ化、予測不能、および有効である。以下は、動作可能状態への様々な入り方で生じ得るデータ状態である。
【０３４４】
＊  待機から−ゼロ化（ｚ：ｚｅｒｏｅｄ）
【０３４５】
＊  一時エラーから−有効（ｖ：ｖａｌｉｄ）
【０３４６】
＊  永久エラーから−予測不能（ｕ：ｕｎｐｒｅｄｉｃｔａｂｌｅ）またはゼロ化（ｚ）
【０３４７】
＊  動作可能から−有効（ｖ）−最初の書き込み
【０３４８】
＊  動作可能から−予測不能（ｕ：ｕｎｐｒｅｄｉｃｔａｂｌｅ）−電源が入れなおされ、持続性がルール１ではない。
【０３４９】
動作可能状態にない場合、データ状態は無効である。
【０３５０】
最初に構成されたとき、最初の書き込みの前は、ＳＣＭインクリメントのデータはゼロ化状態であり、つまり、コンテンツはすべてゼロである。
【０３５１】
一時エラー状態に移るとき、またはその状態であるとき、ＳＣＭインクリメントのデータ・コンテンツは変更されないが、インクリメントはアクセス不可能である。したがって、データは有効であるというのが説明的であるかもしれないが、プログラムのアクセス可能性がないことから、あまり意味はない。したがって、このシナリオでは、データ状態は無効である。さらに、動作可能から一時エラーへの移行を生じるエラーに基づき、データ完全性に影響が及ぶと、永久エラー状態に入り、データ状態は無効のままとなり、データは失われる。コンカレント修復が、永久エラー状態のＳＣＭインクリメントを、構成解除と、それに続く再構成とのいずれも伴わずに動作可能状態に移すことができる場合でも、元のデータはやはり失われ、データ状態が予測不能であるかまたはゼロ化であるかは、モデルに依存する。
【０３５２】
ＳＣＭインクリメントの持続性およびそのＲＡＳ（ｒｅｌｉａｂｉｌｉｔｙ，ａｃｃｅｓｓｉｂｉｌｉｔｙ  ａｎｄ  ｓｅｒｖｉｃｅａｂｉｌｉｔｙ：信頼性、アクセス可能性、およびサービス性）特性も、有効から予測不能データ状態への変化を決定し得る。持続性を超過すると、データ状態は有効から予測不能に移行することが予想される。
【０３５３】
ゼロ化または予測不能のいずれかのデータ状態から有効データ状態への移行は、最初の書き込みの成功により発生する。書き込まれるデータのサイズと、ターゲットＳＣＭインクリメントのサイズとの任意の差が原因で、有効への変化は、書き込みがまだ行われていない任意のデータ位置の実際の条件を表現するものではない。そのような位置は、最初の書き込みアクセス以前は、事実上まだ、ゼロ化または予測不能と表現される。
【０３５４】
ＳＣＭインクリメントが構成された後、ＳＣＭ情報格納コマンドの応答において観測可能な任意の１つ以上のイベントが生じると、非応答型通知がペンディングにされる。以下が例である。
【０３５５】
１．動作状態が、動作可能から一時エラーまたは永久エラーに変化するが、失敗動作においてレポートされない。
【０３５６】
２．動作状態が一時エラーから動作可能に変化する。
【０３５７】
３．動作状態が一時エラーから永久エラーに変化する。
【０３５８】
４．ランク変化。
【０３５９】
非応答型通知がペンディングにされない例には、以下が含まれる。
【０３６０】
１．データ状態がゼロ化または予測不能から有効に変化する。
【０３６１】
２．ストレージ・クラス・メモリ構成コマンドが完了する。
【０３６２】
３．ストレージ・クラス・メモリ構成解除コマンドが完了する。
【０３６３】
通知がペンディングのとき、プログラムは、通知を観測し、ＳＣＭ情報格納コマンドを発行して情報を取得してもよい。ＳＣＭ情報格納コマンドは、このほかにプログラムがＳＣＭもしくはＳＡＬＥまたはその両方についての情報を得たいときにも発行され得る。
【０３６４】
一例では、通知は、プログラムに対して発行されるマシン・チェック割り込みを含み、対応するＣＲＷがイベント・レポートを示す。プログラムは、ＣＨＳＣ（Ｃｈａｎｎｅｌ  Ｓｕｂｓｙｓｔｅｍ  Ｃａｌｌ：チャネル・サブシステム呼び出し）イベント情報格納コマンドを発行し、ストレージ・クラス・メモリ変更通知を伝達するコンテンツ・コードを備える応答ブロックを取得する。
【０３６５】
一実施形態では、ＳＣＭ情報格納（ＳＳＩ）コマンドは、ストレージ・クラス・メモリもしくはＳＣＭアドレス・リスト・エントリまたはその両方についての情報を取得するためにプログラム（例えばオペレーティング・システム）によって発行される、チャネル・サブシステム・コマンドである。一例では、プログラムは、チャネル・サブシステム呼び出し命令を発行し、この命令のコマンド・ブロック内でＳＳＩコマンドが示され、この命令は、チャネル・サブシステムに送られる。コマンドは、チャネル・サブシステムにて実行され、４Ｋバイト制御ブロックの残りの部分である応答ブロック内で応答が返される（すなわち、要求された情報が、応答ブロック用に指示されたメイン・ストレージ・エリアに格納される）。コマンドの動作に関するさらなる詳細について、図１９を参照して説明する。
【０３６６】
まず、プログラムは、ＳＣＭ情報格納コマンドを要求するために、前述の要求ブロックを生成する（ステップ５８０）。要求ブロックは、チャネル・サブシステムによって取得され（ステップ５８２）、要求ブロックの有効性について、１つ以上の有効性チェックが行われる（例えば、有効な長さフィールド、有効なコマンド要求ブロック・フォーマット、インストールされたコマンドなど）。要求が有効でなければ（質問５８４）、続いて、問題を示す応答コードが応答ブロックに入れられ（ステップ５８６）、応答ブロックが返される（ステップ５９２）。
【０３６７】
一方、要求が有効であれば（質問５８４）、続いてチャネル・サブシステムがマシン（例えばプロセッサなど）から情報を取得し（ステップ５８８）、応答ブロックに入れる（ステップ５９０）。応答ブロックが返される（ステップ５９２）。例えば、情報は、マシンの不揮発性ストレージに含まれ、システム初期化中にファームウェアによってのみアクセス可能なメイン・ストレージ内へファームウェアによってロードされる。チャネル・サブシステム（すなわちこの場合ファームウェア）は、ファームウェアによってのみアクセス可能なメイン・ストレージから読み取ることで情報を取得し、応答ブロックをポピュレートする。
【０３６８】
ストレージ・クラス・メモリについての情報を受領するのに応答して、またはほかの理由で、ストレージ・クラス・メモリの構成を変更する決定が下されてもよい。この決定は、手動で、またはプログラムもしくはその他エンティティによって自動で下され得る。構成は、後述のとおり、インクリメントを追加すること、またはインクリメントを削除することによって変更され得る。
【０３６９】
一例では、ストレージ・クラス・メモリを構成するために、ストレージ・クラス・メモリ構成コマンドが使用される。このコマンドは、システムの利用可能なプールから、ある量のストレージ・クラス・メモリが構成されることを要求する。この量は、ＳＣＭインクリメントのカウントとしてエンコードされたサイズとして指定される。
【０３７０】
特に指定のない限り、要求を満たすために使用される数のＳＣＭインクリメントは、初期化状態にある。要求されたＳＣＭインクリメントの数が、構成可能な最大ＳＣＭインクリメントの限界を上回る場合、特定の応答コードが提供される。
【０３７１】
各インクリメントのコンテンツは、ゼロであり、有効なＣＢＣを備える。構成された各ＳＣＭインクリメントに関連し適用される持続性ルールが、例えば手動制御により設定される。
【０３７２】
ストレージ・クラス・メモリ構成コマンドのコマンド要求ブロックの一実施形態が、図２２に示されている。一例では、ストレージ・クラス・メモリ構成要求ブロック７００には以下が含まれる。
【０３７３】
長さ７０２：コマンド要求ブロック長の長さを指定する値。
【０３７４】
コマンド・コード７０４：ストレージ・クラス・メモリ構成コマンドのコマンド・コードを指定する値。
【０３７５】
フォーマット（ＦＭＴ）７０６：コマンド要求ブロックのフォーマットを指定する値。
【０３７６】
合計サイズ（ＴＳ）７０８：要求されるストレージ・クラス・メモリのサイズを指定する値であって、ＳＣＭインクリメントのカウントとしてエンコードされる。既に構成されているＳＣＭインクリメントのカウントにＴＳを加えた結果が、構成可能な最大ＳＣＭインクリメント（ＭＣＩ）の限界を上回ってはならない。初期化状態のＳＣＭインクリメントの数が、指定された合計サイズよりも少なければ、特定の応答コードが提供される。
【０３７７】
非同期完了コリレータ（ＡＣＣ：Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｃｏｍｐｌｅｔｉｏｎ  Ｃｏｒｒｅｌａｔｏｒ）７１０：後述の通知応答の非同期完了通知フィールド内で返される値。コリレータは、要求を開始した元のスレッドを再開する働きをする。
【０３７８】
ストレージ・クラス・メモリ構成コマンドのコマンド応答ブロックの一実施形態が、図２３に示されている。一実施形態では、コマンド応答ブロック７３０には以下が含まれる。
【０３７９】
長さ７３２：コマンド応答ブロックの長さを示す値。
【０３８０】
応答コード７３４：ストレージ・クラス・メモリ構成コマンドの実行を試行した結果を記述する値。
【０３８１】
規定の応答コードが応答コード・フィールドに格納される場合、コマンドの処理を終えるために非同期プロセスが開始される。規定のコード以外の応答コードが応答コード・フィールドに格納される場合、ＳＣＭインクリメントは構成されず、何らの非同期プロセスも開始されず、後の通知は行われない。非同期プロセスの完了は通知応答内で示される。
【０３８２】
フォーマット（ＦＭＴ）７３６：コマンド応答ブロックのフォーマットを示す値。
【０３８３】
ストレージ・クラス・メモリ構成コマンドは、ＳＣＭアドレス空間に、ある量のストレージ・クラス・メモリが構成されることを要求するために、プログラムによって発行される。ＳＣＭを構成するために使用される論理の一実施形態について、図２４を参照して説明する。
【０３８４】
まず、プログラムが、ＳＣＭ構成コマンドを含むチャネル・サブシステム呼び出し命令を発行する（ステップ７４０）。ＳＣＭ構成コマンドの要求ブロックは、チャネル・サブシステムによって取得され（ステップ７４２）、チャネル・サブシステムが、コマンドの実行を試行する（ステップ７４４）。コマンドの実行の試行によって、成功を示さない応答コードが生じると（質問７４６）、続いて応答コードがＳＣＭ構成コマンドの応答ブロックに入れられ（ステップ７４８）、応答ブロックが返される（ステップ７５０）。
【０３８５】
成功の応答コードが示されると（質問７４６）、続いて応答コードが応答ブロックに入れられ（ステップ７５２）、応答ブロックが返される（ステップ７５４）。この例では、成功の応答コードは、要求ブロックの長さフィールドが有効であること、コマンドがシステムにおいて利用可能であること、コマンド要求ブロックが有効なフォーマットを有すること、チャネル・サブシステムがコマンドを実行できる（すなわちビジーでない）こと、要求された合計サイズが、要求対象の構成の構成可能な最大ＳＣＭインクリメントの限界を上回らないこと、および要求された合計サイズが初期化状態のＳＣＭインクリメントの数を上回らないことを示す。
【０３８６】
さらに、構成を完了する非同期プロセスが開始される（ステップ７５６）。この処理に関するさらなる詳細について、図２５を参照して説明する。
【０３８７】
一実施形態では、非同期処理は、１つ以上のインクリメントを割り当てるために、構成を実行する（ステップ７６０）。例えば、当該パーティションに対するＩ／Ｏ移動要求が新たに構成されたインクリメントにアクセスできるようにするために、構成されたＳＣＭインクリメントそれぞれに関して内部制御が変更される。具体的には、チャネル・サブシステムがＣＨＳＣ構成コマンドを受領するのに応答して、チャネル・サブシステムのファームウェアは、内部テーブルを調べて、要求を満たすのに十分なインクリメントがあることを確認し、構成に対して構成可能な最大ＳＣＭインクリメントを、要求が上回らないことを確認する。要求が有効であれば、ファームウェアは、１つ以上のテーブルを更新して、インクリメント（単数または複数）を構成に割り当て、インクリメント（単数または複数）を構成に対し動作可能状態にする。その結果、インクリメントは、構成からのＩ／Ｏ移動要求（上述）がアクセス可能となる。非同期プロセスの完了が、通知応答内で示される（ステップ７６２）。
【０３８８】
ストレージ・クラス・メモリ構成コマンドの通知応答データは、イベント情報格納（ＳＥＩ：Ｓｔｏｒｅ  Ｅｖｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ）コマンドの応答ブロック内で返される。ストレージ・クラス・メモリ構成コマンドに使用される通知応答ブロックのフォーマットの一実施形態について、図２６Ａを参照して説明する。
【０３８９】
一実施形態では、ストレージ・クラス・メモリ構成コマンドの通知応答ブロック８００には以下が含まれる。
【０３９０】
長さ８０２：コマンド応答ブロックの長さを示す値。
【０３９１】
応答コード８０４：イベント情報格納ＣＨＳＣコマンドの実行を試行した結果を記述する値。
【０３９２】
フォーマット（ＦＭＴ）８０６：コマンド応答ブロックのフォーマットを示す値。
【０３９３】
通知タイプ８０８：これがＥＡＤＭ関係の通知であることを示す値。
【０３９４】
Ｐ８１０：設定されている場合、チャネル・サブシステムが、このＣＨＳＣコマンドに応答して提供される情報に加えて、ペンディング・イベント情報を有することを指定する。
【０３９５】
Ｖ８１２：設定されている場合、チャネル・サブシステムがオーバーフロー条件を認識したこと、およびイベント情報が失われたことを指定する。
【０３９６】
コンテンツ・コード８１４：これが、ストレージ・クラス・メモリ構成コマンド要求によって開始された非同期プロセスの実行の終結への応答であることを示す値。
【０３９７】
二次応答コード８１６：ＳＣＭ構成コマンドの実行を試行した結果をさらに記述する値。
【０３９８】
二次応答コードが指定の値である場合、もともと要求されたとおりにストレージ・クラス・メモリの完全な量が構成されている。そうでない場合、例えば、無効な長さフィールド、ＳＣＭ構成コマンド未インストール、ＳＣＭ構成コマンド・ブロックが無効なフォーマットを有すること、要求された合計サイズがＭＣＩの限界を上回ること、要求された合計サイズが初期化状態のＳＣＭインクリメントの数を上回ること、チャネル・サブシステム・ビジーなどを示す応答コードが提供されるとよい。
【０３９９】
非同期完了コリレータ（ＡＣＣ）８１８：もともと、対応するコマンド要求ブロック内で指定されている値。
【０４００】
ストレージ・クラス・メモリ構成コマンドに関する通知応答ブロックを返すために使用されるイベント情報格納コマンドの一実施形態について、図２６Ｂ〜２６Ｃを参照して説明する。
【０４０１】
イベント情報格納コマンドは、チャネル・サブシステムによってペンディングにされたイベント情報を格納するために使用される。通常は、このコマンドは、プログラムがイベント情報ペンディング・チャネル・レポートを受領した結果として実行される。
【０４０２】
イベント情報格納コマンドを実行することによって、チャネル・サブシステムに含まれる情報が変更され得る。イベント情報格納コマンドは、同期的に実行される。
【０４０３】
イベント情報格納コマンドのコマンド要求ブロックの一実施形態について、図２６Ｂを参照して説明する。一例では、要求ブロック８３０には以下が含まれる。
【０４０４】
長さ８３２：このフィールドは、コマンド要求ブロックの長さを指定する。
【０４０５】
コマンド・コード８３４：このフィールドは、イベント情報格納コマンドを指定する。
【０４０６】
フォーマット（ＦＭＴ）８３６：コマンド要求ブロックのフォーマットを指定する値。
【０４０７】
通知タイプ選択マスク（ＮＴＳＭ：Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｔｙｐｅ  Ｓｅｌｅｃｔｉｏｎ  Ｍａｓｋ）８３８：各ビット・ポジションが同じ数値の論理プロセッサ・セレクタ（ＬＰＳ：ｌｏｇｉｃａｌ  ｐｒｏｃｅｓｓｏｒ  ｓｅｌｅｃｔｏｒ）値に対応するマスク。一例では、ビット０は無視され、１と見なされる。１で開始する指定の範囲内のあるビット・ポジションがゼロである場合、そのビット・ポジションに対応する通知タイプは、応答ブロックに格納されず、ペンディングとして認識されると破棄される。当該のビットが１である場合、ビット・ポジションに対応する通知タイプが、応答ブロックに格納されるとよい。
【０４０８】
図２６Ｃを参照する。一実施形態における、イベント情報格納コマンドの応答ブロック８５０について、以下記載する。
【０４０９】
長さ８５２：コマンド応答ブロックの初期の長さを指定する値。最終的な長さは、イベント情報格納コマンドの実行を試行した結果として格納される応答コードによって決まる。
【０４１０】
成功を示すコード以外の応答コードが応答コード・フィールドに格納される場合、応答データ・エリアに情報は格納されない。
【０４１１】
成功を示す応答コードが応答コード・フィールドに格納される場合、応答データ・エリアにイベント情報が格納される。
【０４１２】
応答コード８５４：イベント情報格納コマンドの実行を試行した結果を記述する値。
【０４１３】
イベント情報格納コマンドの場合、応答データ・エリアは、固定長部分および可変長部分を含む。
【０４１４】
指定のフォーマットの応答の場合、ＮＴ（Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｔｙｐｅ：通知タイプ）がゼロ以外であれば、フォーマットは、特定の通知タイプによって決まり、コンテンツ・コード依存のフィールドのフォーマットは、特定の通知タイプおよびコンテンツ・コード（ＣＣ：ｃｏｎｔｅｎｔ  ｃｏｄｅ）フィールドを総合して決まる。
【０４１５】
フォーマット（ＦＭＴ）８５６：コマンド応答ブロックのフォーマットを指定する値。
【０４１６】
通知タイプ（ＮＴ）８５８：通知タイプ（ＮＴ）を示す値。ＳＣＭ構成コマンドに関する特定の値が提供される。
【０４１７】
Ｐフラグ８６０：設定されている場合、チャネル・サブシステムが、このＣＨＳＣコマンドに応答して提供される情報に加えて、ペンディング・イベント情報を有することを指定する。プログラムは、イベント情報格納コマンドを再び実行することによって追加情報を取得することができる。設定されていない場合、このフラグは、チャネル・サブシステムが追加のペンディング・イベント情報を有さないことを指定する。
【０４１８】
Ｖフラグ８６２：設定されている場合、チャネル・サブシステムがオーバーフロー条件を認識したこと、およびイベント情報が失われたことを指定する。応答データ・エリアに含まれていないイベント情報が直前のペンディング情報である間に、オーバーフロー条件が認識された。オーバーフローは、応答データ・エリアに含まれている情報には影響を及ぼさない。
【０４１９】
コンテンツ・コード（ＣＣ）８６４：応答データ・エリアに含まれている情報のタイプを記述する値。一例では、値は、１つ以上のＳＣＭインクリメントが状態またはステータスを変更した、ストレージ・クラス・メモリ変更通知を示す。
【０４２０】
コンテンツ・コード依存のフィールド８６６：このフィールドは、イベントに関する追加情報を含むとよい。
【０４２１】
構成変更の通知の成功により、プログラムが、構成に関する詳細を取得するためにＳＣＭ情報格納コマンドを発行するよう促されるとよい。
【０４２２】
ストレージ・クラス・メモリの増加に加え、ストレージ・クラス・メモリは削減されてもよい。ストレージ・クラス・メモリ構成解除コマンドは、ある量のストレージ・クラス・メモリが、要求元の構成のＳＣＭアドレス空間から除去されることを要求する。構成解除されるＳＣＭインクリメントは、構成済み状態でなければならない。
【０４２３】
構成解除されるＳＣＭインクリメントは、本願明細書に記載の、ＳＣＭインクリメント要求リスト内で指定される。ＳＣＭインクリメント要求リスト・エントリ（ＳＩＲＬＥ：ＳＣＭ  ｉｎｃｒｅｍｅｎｔ  ｒｅｑｕｅｓｔ  ｌｉｓｔ  ｅｎｔｒｙ）内で、１つ以上の連続的なＳＣＭインクリメントが指定されるとよい。ほかのインクリメントのリスト（別名エクステント）と連続していないインクリメントのリストそれぞれに対して、別個のＳＩＲＬＥが指定されるとよい。
【０４２４】
持続性ルールにかかわらず、ＳＣＭインクリメントの構成解除の成功は、インクリメントを非初期化状態にする。ゼロ化が完了すると、ＳＣＭインクリメントは、非初期化状態から初期化状態に移行する。
【０４２５】
ストレージ・クラス・メモリ構成解除コマンドのコマンド要求ブロックの一実施形態が、図２７に示されている。ストレージ・クラス・メモリ構成解除コマンドのコマンド要求ブロック９００には、例えば以下が含まれる。
【０４２６】
長さ９０２：コマンド要求ブロックの長さを指定する値。一例では、長さは、３２＋（Ｎ×１６）バイトであり、Ｎは、ＳＣＭインクリメント要求リスト・エントリ（ＳＩＲＬＥ）のカウントである。この例での有効な長さは、１６で均等に割り切れ、（３２＋１×１６）≦Ｌ１≦（３２＋２５３×１６）の範囲である。
【０４２７】
コマンド・コード９０４：ストレージ・クラス・メモリ構成解除コマンドのコマンド・コードを指定する値。
【０４２８】
フォーマット（ＦＭＴ）９０６：コマンド要求ブロックのフォーマットを指定する値。
【０４２９】
非同期完了コリレータ（ＡＣＣ）９０８：上述の非同期完了通知内で返される値。
【０４３０】
ＳＣＭインクリメント要求リスト９１０：このフィールドは、ＳＣＭインクリメント要求リスト（ＳＩＲＬ：ＳＣＭ  ｉｎｃｒｅｍｅｎｔ  ｒｅｑｕｅｓｔ  ｌｉｓｔ）を含む。ＳＣＭインクリメント要求リストは、１つ以上のエントリ（ＳＩＲＬＥ）を含む。ＳＩＲＬの長さは、長さフィールドの値から判断される。
【０４３１】
ＳＣＭインクリメント要求リスト・エントリ（ＳＩＲＬＥ）は、ストレージ・クラス・メモリの指定されるエクステントのサイズおよび位置を指定する（例えば、インクリメントのリスト）。エクステントまたはＳＣＭエクステントは、ストレージ・クラス・メモリの指定のサイズである。
【０４３２】
図２８を参照する。一例では、ＳＩＲＬＥ９２０には以下が含まれる。
【０４３３】
合計サイズ（ＴＳ）９２２：構成解除されるストレージ・クラス・メモリのサイズを指定する値であって、ＳＣＭインクリメントのカウントとしてエンコードされる。
【０４３４】
開始ＳＣＭアドレス（ＳＡ）９２４：ＳＣＭアドレスであって、ＳＩＲＬＥによって構成解除される第１または唯一のＳＣＭインクリメントの除去が行われるＳＣＭアドレス空間内の位置である値。この例では、第１ＳＣＭインクリメント内のオフセットを構成すると考えられる最下位ビット・ポジションは無視され、ゼロと見なされる。
【０４３５】
合計サイズが１より大きい場合、第１インクリメント以降のさらなるＳＣＭインクリメントはそれぞれ、ＳＣＭインクリメント・サイズによって均等に割り切れ、かつ構成済みのＳＣＭインクリメントを含むＳＣＭアドレスに位置し、その位置は、前のＳＣＭインクリメントの最終バイトと連続している。すなわち、次の連続した位置にある。
【０４３６】
開始アドレスおよび合計サイズの総合によって表現される空間が、構成済みのＳＣＭインクリメントで完全に埋まっていなければ、指定の応答コードが提供され、いずれのＳＣＭインクリメントも構成解除されず、何らの非同期プロセスも開始されず、後の通知も発生しない。
【０４３７】
正常完了時、構成解除された各ＳＣＭインクリメントは保留状態に入っており、続いて、ゼロ化されてから待機状態に入る。
【０４３８】
ストレージ・クラス・メモリ構成解除コマンドのコマンド応答ブロックが、図２９に示されている。一実施形態では、コマンド応答ブロック９５０には以下が含まれる。
【０４３９】
長さ９５２：コマンド応答ブロックの長さを示す値。
【０４４０】
応答コード９５４：ストレージ・クラス・メモリ構成解除コマンドの実行を試行した結果を記述する値。
【０４４１】
指定の値の応答コードが応答コード・フィールドに格納される場合、コマンドの処理を終えるために、コマンドの非同期プロセスが開始される。指定の値以外の応答コードが応答コード・フィールドに格納される場合、いずれのＳＣＭインクリメントも構成解除されず、何らの非同期プロセスも開始されず、後の通知は行われない。非同期プロセスの完了は通知応答内で示される。
【０４４２】
ストレージ・クラス・メモリ構成解除コマンドの同期部分が指定の応答コードにより完了する前に、ＳＣＭインクリメント要求リスト内のすべてのエントリが検査され、指定されたＳＣＭインクリメントすべてが構成済み状態であることが確認される。
【０４４３】
フォーマット（ＦＭＴ）９５６：コマンド応答ブロックのフォーマットを示す値。
【０４４４】
ＳＣＭ構成解除コマンドに関連する論理の一実施形態について、図３０〜３１を参照して説明する。
【０４４５】
まず、プログラムが、ＳＣＭ構成解除コマンドを含むチャネル・サブシステム呼び出し命令を発行する（ステップ９７０）。ＳＣＭ構成解除コマンドの要求ブロックは、チャネル・サブシステムによって取得され（ステップ９７２）、チャネル・サブシステムが、コマンドの実行を試行する（ステップ９７４）。コマンドの実行の試行によって、成功を示さない応答コードが生じると（質問９７６）、続いて応答コードがＳＣＭ構成解除コマンドの応答ブロックに入れられ（ステップ９７８）、応答ブロックが返される（ステップ９８０）。
【０４４６】
成功の応答コードが示されると（質問９７６）、続いて応答コードが応答ブロックに入れられ（ステップ９８２）、応答ブロックが返される（ステップ９８４）。この例では、成功の応答コードは、要求ブロックの長さフィールドが有効であること、コマンドがシステムにおいて利用可能であること、コマンド要求ブロックが有効なフォーマットを有すること、チャネル・サブシステムがコマンドを実行できる（すなわちビジーでない）こと、およびＳＣＭインクリメントがもともと構成済み状態であったことを示す。
【０４４７】
さらに、構成解除を完了する非同期プロセスが開始される（ステップ９８６）。この処理に関するさらなる詳細について、図３１を参照して説明する。
【０４４８】
一実施形態では、非同期処理は、構成解除を実行する（ステップ９９０）。例えば、１つ以上のインクリメントが、割り当て解除される。ＳＣＭインクリメントは、構成済み状態から保留状態に移される。保留状態に入ると、ゼロ化プロセスが続き、完了すると、ＳＣＭインクリメントは待機状態に移行する。非同期プロセスの完了が、通知応答内で示される（ステップ９９２）。
【０４４９】
ストレージ・クラス・メモリ構成解除コマンドの通知応答データは、イベント情報格納（ＳＥＩ）ＣＨＳＣコマンドの応答ブロック内で返される。この応答ブロックの一例については、図２６Ａを参照して説明している。なお、この例におけるコンテンツ・コードは、これがストレージ・クラス・メモリ構成解除コマンド要求によって開始された非同期プロセスの実行の終結に対する応答であることを示す。同じく、二次応答コードはさらに、ストレージ・クラス・メモリ構成解除コマンドの実行を試行した結果を記述する。
【０４５０】
さらなる実施形態において、ストレージ・インクリメントの割り当ておよび割り当て解除は、ユーザに提示されるパネルを介して要求され得る。例えば、ユーザがシステムにパラメータを指定できるグラフィカル・インターフェースを提供するために、サービス要素が使用される。ストレージ・クラス・メモリに関して、ストレージ・クラス・メモリ割り当てパネルと呼ばれるパネルにより、ユーザは以下の動作を実行できる。
【０４５１】
１．所与の構成に対して構成可能な最大インクリメント（ＭＣＩ）を指定する。
【０４５２】
２．インクリメントを構成に割り当てる。
【０４５３】
３．インクリメントを構成から割り当て解除する。
【０４５４】
さらに、パネルにより、構成のインクリメント割り当ておよびＭＣＩ、ならびに利用可能プール、利用不可能プール、および非初期化プール内のインクリメントの数を閲覧できる。ＳＥにおけるアクションが原因で、インクリメントの割り当てが変化する場合、またはプールのうちの１つのサイズが変化する場合、構成に通知が送られる。
【０４５５】
ストレージ・クラス・メモリを管理するファシリティについて、詳しく上述した。これは、メモリの具体的な知識なしにプログラムがメモリにアクセスすることを可能にする、抽象化を提供する。本発明の１つ以上の側面によれば、メイン・ストレージとＳＣＭとの間でデータを移動させ、ＳＣＭをクリアまたは解放し、ＳＣＭを構成または構成解除し、ＳＣＭの構成を知るための能力が提供される。その他の能力も提供される。
【０４５６】
一実施形態では、ストレージ・クラス・メモリは、複数のデバイスおよびＩ／Ｏアダプタにまたがる物理的な実装とは独立して、ユーザ・レベルのプログラムに対し、フラット・メモリ空間として提示される。
【０４５７】
チャネル・サブシステムもしくはＡＤＭファシリティまたはその両方に関する詳細は、「Ｍｅｔｈｏｄ  ａｎｄ  Ｍｅａｎｓ  ｆｏｒ  Ｅｎａｂｌｉｎｇ  Ｖｉｒｔｕａｌ  Ａｄｄｒｅｓｓｉｎｇ  Ｃｏｎｔｒｏｌ  Ｂｙ  Ｓｏｆｔｗａｒｅ  Ｕｓｅｒｓ  Ｏｖｅｒ  Ａ  Ｈａｒｄｗａｒｅ  Ｐａｇｅ  Ｔｒａｎｓｆｅｒ  Ｃｏｎｔｒｏｌ  Ｅｎｔｉｔｙ」と題された、Ａｎｔｏｇｎｉｎｉらの１９９４年１２月２７日発行の米国特許第５，３７７，３３７号、「Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｃｏ−Ｐｒｏｃｅｓｓｏｒ  Ｄａｔａ  Ｍｏｖｅｒ  Ｍｅｔｈｏｄ  ａｎｄ  Ｍｅａｎｓ」と題された、Ｂｒｅｎｔらの１９９５年８月１５日発行の米国特許第５，４４２，８０２号、および「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｐｉｐｅｌｉｎｉｎｇ  ｔｈｅ  Ｐｒｏｃｅｓｓｉｎｇ  ｏｆ  Ｃｈａｎｎｅｌ  Ｃｏｍｍａｎｄ  Ｗｏｒｄｓ」と題された、１９９６年６月１１日発行の米国特許第５，５２６，４８４号に記載されており、それぞれの内容全体を参照によって本願明細書に引用したものとする。
【０４５８】
さらに、チャネル・サブシステムおよびそれに関連する命令に関するさらなる情報（ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）の具体的な実装に関する）を以下に提供する。
【０４５９】
入出力（Ｉ／Ｏ）
「入力」および「出力」という用語は、Ｉ／Ｏデバイスとメイン・ストレージとの間のデータの転送を表現するために使用される。この種の転送を伴う動作は、Ｉ／Ｏ動作と呼ばれる。Ｉ／Ｏ動作を制御するために使用されるファシリティは、集合的にチャネル・サブシステムと呼ばれる（Ｉ／Ｏデバイスおよびその制御ユニットが、チャネル・サブシステムに連結される）。
【０４６０】
チャネル・サブシステム
チャネル・サブシステムは、Ｉ／Ｏデバイスとメイン・ストレージとの間の情報のフローを導く。チャネル・サブシステムは、Ｉ／Ｏデバイスと直接通信するタスクからＣＰＵを解放し、Ｉ／Ｏ処理とコンカレントにデータ処理が進行することを可能にする。チャネル・サブシステムは、Ｉ／Ｏデバイスへ、またはＩ／Ｏデバイスからの情報のフローを管理する際に、１つ以上のチャネルパスを通信リンクとして使用する。Ｉ／Ｏ処理の一環として、チャネル・サブシステムはさらに、チャネルパスの利用可能性をテストすることによってパス管理動作を実行し、利用可能なチャネルパスを選択し、デバイスによるＩ／Ｏ動作の実行を開始する。
【０４６１】
チャネル・サブシステム内には、サブチャネルがある。チャネル・サブシステムを介してプログラムがアクセスできるＩ／Ｏデバイスそれぞれに、１つのサブチャネルが提供され、それ専用とされる。
【０４６２】
複数サブチャネル・セット・ファシリティは、任意選択のファシリティである。インストールされると、サブチャネルは、複数のサブチャネル・セットに分割され、各サブチャネル・セットは、１つの専用サブチャネルをＩ／Ｏデバイスに提供するとよい。使用されるモデルおよびインターフェース次第で、一部のＩ／Ｏデバイスは、特定のサブチャネル・セットを介してのみアクセスが許されてもよい。
【０４６３】
各サブチャネルは、関連するＩ／Ｏデバイスと、そのチャネル・サブシステムへの連結とに関する情報を提供する。サブチャネルはさらに、関連するＩ／Ｏデバイスに関係するＩ／Ｏ動作およびほかの機能に関する情報を提供する。サブチャネルは、チャネル・サブシステムが関連のＩ／Ｏデバイスについての情報をＣＰＵに提供する手段であり、ＣＰＵは、この情報を、Ｉ／Ｏ命令を実行することによって取得する。提供されるサブチャネルの実際の数は、モデルおよび構成に依存し、最大アドレス指定能力は、各サブチャネル・セットにおいて０〜６５，５３５である。
【０４６４】
Ｉ／Ｏデバイスは、制御ユニットを介して、チャネルパスによりチャネル・サブシステムに連結される。制御ユニットは、２つ以上のチャネルパスによってチャネル・サブシステムに接続されてもよく、Ｉ／Ｏデバイスは、２つ以上の制御ユニットに連結されてもよい。モデルおよび構成次第で、サブチャネルを介する合計８つもの異なるチャネルパスによって、個々のＩ／Ｏデバイスにチャネル・サブシステムがアクセスできてもよい。チャネル・サブシステムによって提供されるチャネルパスの総数は、モデルおよび構成に依存し、最大アドレス指定能力は０〜２５５である。
【０４６５】
チャネル・サブシステムの性能は、その使用法、およびそれが実装されるシステム・モデルに依存する。各チャネルパスは異なるデータ転送能力を備え、特定の速度でのみデータを転送するよう設計されたＩ／Ｏデバイス（例えば、磁気テープ・ユニットまたはディスク・ストレージ）は、少なくともこの速度に対応できるチャネルパスでしか、動作することができない。
【０４６６】
チャネル・サブシステムは、Ｉ／Ｏ動作の制御のための一般的なファシリティを含む。これらのファシリティが、Ｉ／Ｏデバイスの制御のために特殊設計された、独立した自律型機器の形態で提供される場合、Ｉ／Ｏ動作は、ＣＰＵ内のアクティビティと完全にオーバーラップされる。サブチャネルがアドレス指定不能なメイン・ストレージの一部として実装されている場合にチャネル・サブシステムがサブチャネルにアクセスするために必要とされ得る当該サイクルのほか、Ｉ／Ｏ動作中にチャネル・サブシステムによって要求されるメイン・ストレージ・サイクルは、メイン・ストレージ内の最終位置へ、または最終位置からのデータおよび制御情報の転送に必要とされるもののみである。これらのサイクルは、ＣＰＵおよびチャネル・サブシステムの両方がコンカレントに同じメイン・ストレージ・エリアの参照を試行する場合を除いて、ＣＰＵプログラムを遅延させない。
【０４６７】
サブチャネル・セット
複数サブチャネル・セット・ファシリティがインストールされている場合、サブチャネルは、複数サブチャネル・セットに分割される。サブチャネル・セット識別子（ＳＳＩＤ：ｓｕｂｃｈａｎｎｅｌ−ｓｅｔ  ｉｄｅｎｔｉｆｉｅｒ）によりそれぞれ識別された、最大４つのサブチャネル・セットが存在し得る。複数サブチャネル・セット・ファシリティがインストールされていない場合は、ゼロのＳＳＩＤを備える１つのみのサブチャネル・セットが存在する。複数サブチャネル・セット・ファシリティが有効化されていない場合、プログラムには、サブチャネル・セット・ゼロのみが見える。
【０４６８】
サブチャネル
サブチャネルは、プログラムに対し、デバイスの論理的な外観を提供し、単一のＩ／Ｏ動作を維持するのに必要な情報を含む。サブチャネルは、チャネル・プログラム指示、チャネルパス識別子、デバイス番号、カウント、ステータス・インジケーション、およびＩ／Ｏ割り込みサブクラス・コードの形態の情報と、パス利用可能性およびペンディング中または実行中の機能についての情報とを含む、内部ストレージから成る。Ｉ／Ｏ動作は、デバイスに関連するサブチャネルを指示するＩ／Ｏ命令を実行することによって、デバイスを用いて開始される。
【０４６９】
各デバイスは、インストール時の構成中に割り振られる、各チャネル・サブシステム内の１つのサブチャネルを用いてアクセス可能である。デバイスは、物理的に識別可能なユニットであってもよく、制御ユニットの内部に収容されていてもよい。例えば、一部のディスク・ストレージ・デバイスでは、データの読み出しに使用される各アクチュエータがデバイスと見なされる。すべての場合において、チャネル・サブシステムの観点からのデバイスとは、１つのサブチャネルに一意的に関連付けられたエンティティであって、デバイスにアクセスできるチャネルパスのタイプの規定の通信プロトコルを使用したチャネル・サブシステムによる選択に応答する、エンティティである。
【０４７０】
一部のモデルでは、サブチャネルは、一括して提供される。これらのモデルでは、連結されたデバイスよりも多くのサブチャネルが提供され得る。提供されているがデバイスを割り振られていないサブチャネルは、いずれの機能の実行のためにもチャネル・サブシステムによって使用されず、サブチャネルのサブチャネル情報ブロックに、関連するデバイス番号有効ビットをゼロとして格納することによって示される。
【０４７１】
チャネル・サブシステムによって提供されるサブチャネルの数は、関連するデバイスへのチャネルパスの数とは独立している。例えば、代替チャネルパスを介してアクセス可能なデバイスも、やはり単一のサブチャネルによって表される。各サブチャネルは、サブチャネル・セット・ファシリティがインストールされている場合、１６ビット・バイナリ・サブチャネル番号および２ビットＳＳＩＤを使用することによってアドレス指定される。
【０４７２】
サブチャネルでのＩ／Ｏ処理がＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬの実行によって要求された後、ＣＰＵは、ほかの作業のために解放され、チャネル・サブシステムが、データをアセンブルまたは逆アセンブルし、Ｉ／Ｏデバイスとメイン・ストレージとの間のデータ・バイトの転送を同期させる。これを達成するために、チャネル・サブシステムは、メイン・ストレージにおけるデータの宛先またはソースを記述するアドレスおよびカウントを維持および更新する。同じく、プログラムに通知されるべき信号をＩ／Ｏデバイスが提供すると、チャネル・サブシステムは、その信号をステータス情報に変換し、その情報を、プログラムによる読み出しが可能なサブチャネルに格納する。
【０４７３】
入出力デバイスの連結
チャネルパス
チャネル・サブシステムは、チャネル・サブシステムと制御ユニットとの間のチャネルパスを用いてＩ／Ｏデバイスと通信する。制御ユニットは、２つ以上のチャネルパスによってチャネル・サブシステムによりアクセス可能であってもよい。同じく、Ｉ／Ｏデバイスは、チャネル・サブシステムへの１つ以上のチャネルパスをそれぞれ有する２つ以上の制御ユニットを介して、チャネル・サブシステムによってアクセス可能であってもよい。
【０４７４】
サブチャネルに対し構成された複数のチャネルパスによってチャネル・サブシステムに連結されているデバイスは、利用可能なチャネルパスのいずれかを使用してチャネル・サブシステムによってアクセスされるとよい。同じく、動的再接続機能を有しマルチパス・モードで動作しているデバイスは、Ｉ／Ｏ動作のチェーンを継続するためにチャネル・サブシステムに論理的に再接続するとき、サブチャネルに対し構成された利用可能なチャネルパスのうちのいずれかをデバイスが選択できるよう動作するために、初期化されることが可能である。
【０４７５】
チャネル・サブシステムは、２タイプ以上のチャネルパスを含み得る。チャネル・サブシステムによって使用されるチャネルパス・タイプの例は、ＥＳＣＯＮ（ＩＢＭ社の登録商標）Ｉ／Ｏインターフェース、ＦＩＣＯＮ（ＩＢＭ社の登録商標）Ｉ／Ｏインターフェース、ＦＩＣＯＮ（ＩＢＭ社の登録商標）変換Ｉ／Ｏインターフェース、ならびにＩＢＭ（ＩＢＭ社の登録商標）Ｓｙｓｔｅｍ／３６０およびＳｙｓｔｅｍ／３７０  Ｉ／Ｏインターフェースである。「シリアルＩ／Ｏインターフェース」という用語は、ＥＳＣＯＮ（ＩＢＭ社の登録商標）Ｉ／Ｏインターフェース、ＦＩＣＯＮ（ＩＢＭ社の登録商標）Ｉ／Ｏインターフェース、およびＦＩＣＯＮ（ＩＢＭ社の登録商標）変換Ｉ／Ｏインターフェースを指すために使用される。「パラレルＩ／Ｏインターフェース」という用語は、ＩＢＭ（ＩＢＭ社の登録商標）Ｓｙｓｔｅｍ／３６０およびＳｙｓｔｅｍ／３７０  Ｉ／Ｏインターフェースを指すために使用される。
【０４７６】
ＥＳＣＯＮ（ＩＢＭ社の登録商標）Ｉ／Ｏインターフェースについては、Ｓｙｓｔｅｍ  Ｌｉｂｒａｒｙ  ｐｕｂｌｉｃａｔｉｏｎ「ＩＢＭ  Ｅｎｔｅｒｐｒｉｓｅ  Ｓｙｓｔｅｍｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ／３９０  ＥＳＣＯＮ  Ｉ／Ｏ  Ｉｎｔｅｒｆａｃｅ」ＳＡ２２−７２０２に記載されており、その内容全体を参照によって本願明細書に引用したものとする。
【０４７７】
ＦＩＣＯＮ（ＩＢＭ社の登録商標）Ｉ／Ｏインターフェースについては、ＡＮＳＩ  ｓｔａｎｄａｒｄｓ  ｄｏｃｕｍｅｎｔ「Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ−Ｓｉｎｇｌｅ−Ｂｙｔｅ  Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｓｅｔｓ−２」（ＦＣ−ＳＢ−２）に記載されている。
【０４７８】
ＩＢＭ（ＩＢＭ社の登録商標）Ｓｙｓｔｅｍ／３６０およびＳｙｓｔｅｍ／３７０  Ｉ／Ｏインターフェースについては、Ｓｙｓｔｅｍ  Ｌｉｂｒａｒｙ  ｐｕｂｌｉｃａｔｉｏｎ「ＩＢＭ  Ｓｙｓｔｅｍ／３６０  ａｎｄ  Ｓｙｓｔｅｍ／３７０  Ｉ／Ｏ  Ｉｎｔｅｒｆａｃｅ  Ｃｈａｎｎｅｌ  ｔｏ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ  ＯＥＭＩ」ＧＡ２２−６９７４に記載されており、その内容全体を参照によって本願明細書に引用したものとする。
【０４７９】
チャネルパスのタイプ、チャネルパスによって提供されるファシリティ、およびＩ／Ｏデバイスに応じて、Ｉ／Ｏ動作は、フレーム多重モード、バースト・モード、またはバイト多重モードの３つのモードのうちの１つで発生し得る。
【０４８０】
フレーム多重モードでは、Ｉ／Ｏデバイスは、チャネル・プログラムの実行の継続時間にわたって、チャネルパスに論理的に接続されたままであるとよい。フレーム多重モードで動作できるチャネルパスのファシリティは、コンカレントに動作するいくつかのＩ／Ｏデバイスによって共有されてもよい。このモードでは、Ｉ／Ｏ動作を完了するのに必要な情報が、フレームに分けられ、このフレームは、ほかのＩ／ＯデバイスのＩ／Ｏ動作からのフレームとインターリーブされ得る。この期間中、複数のＩ／Ｏデバイスが、チャネルパスに論理的に接続されていると見なされる。
【０４８１】
バースト・モードでは、Ｉ／Ｏデバイスは、チャネルパスを独占し、情報のバーストを転送するために、チャネルパスに論理的に接続されたままとなる。ほかのデバイスは、バーストが転送されている時間中、チャネルパス上で通信できない。バーストは、数バイト、データのブロック全体、関連する制御およびステータス情報を備えるブロックのシーケンス（ブロック長はゼロであってもよい）、またはチャネルパスを独占するステータス情報から成ることができる。バースト・モードで動作できるチャネルパスのファシリティは、コンカレントに動作するいくつかのＩ／Ｏデバイスによって共有されてもよい。
【０４８２】
一部のチャネルパスは、磁気テープ上の長いギャップが読み取られるときに発生するようなデータ転送の欠如を、バースト・モード動作中、約３０秒間許容することができる。データ転送の欠如が一定の限界を上回ると、機器の誤作動が示されることもある。
【０４８３】
バイト多重モードでは、Ｉ／Ｏデバイスがチャネルパスに論理的に接続された状態が短い時間間隔のみ続く。バイト多重モードで動作できるチャネルパスのファシリティは、コンカレントに動作するいくつかのＩ／Ｏデバイスによって共有されてもよい。このモードでは、すべてのＩ／Ｏ動作が短い時間間隔に分割され、その短い時間間隔の間に、情報のセグメントのみがチャネルパス上で転送される。そのような間隔の間、１つのデバイスおよびそれに関連するサブチャネルのみが、チャネルパスに論理的に接続される。複数のＩ／Ｏデバイスのコンカレント動作に関連する間隔は、デバイスからの要求に応答して配列される。サブチャネルに関連するチャネル・サブシステム・ファシリティは、情報のセグメントを転送するのに必要な時間のみ、任意の１つの動作に関してその制御権を行使する。セグメントは、単一バイトのデータ、数バイトのデータ、デバイスからのステータス・レポート、または新たな動作の開始に使用される制御シーケンスから成ることができる。
【０４８４】
通常、データ転送速度要件が高いデバイスは、フレーム多重モードのチャネルパスで動作し、より遅いデバイスは、バースト・モードで動作し、最も遅いデバイスは、バイト多重モードで動作する。一部の制御ユニットは、所望の動作モードを設定するための手動スイッチを有する。
【０４８５】
パラレルＩ／Ｏインターフェース・タイプのチャネルパス上で発生するＩ／Ｏ動作は、チャネルパスおよびＩ／Ｏデバイスによって提供されるファシリティに応じて、バースト・モードまたはバイト多重モードのいずれかで発生し得る。性能改善のために、一部のチャネルパスおよび制御ユニットには、高速転送およびデータ・ストリーミングのためのファシリティが提供される。これら２つのファシリティの説明については、その内容全体を参照によって本願明細書に引用したものとする、Ｓｙｓｔｅｍ  Ｌｉｂｒａｒｙ  ｐｕｂｌｉｃａｔｉｏｎ「ＩＢＭ  Ｓｙｓｔｅｍ／３６０  ａｎｄ  Ｓｙｓｔｅｍ／３７０  Ｉ／Ｏ  Ｉｎｔｅｒｆａｃｅ  Ｃｈａｎｎｅｌ  ｔｏ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ  ＯＥＭＩ」ＧＡ２２−６９７４を参照されたい。
【０４８６】
シリアルＩ／Ｏインターフェース・タイプのチャネルパス上で発生するＩ／Ｏ動作は、フレーム多重モードまたはバースト・モードのいずれかで発生し得る。性能改善のために、シリアルＩ／Ｏインターフェースに連結する一部の制御ユニットは、ユニット・チェック・ステータスの提示とコンカレントにセンス・データをプログラムに提供する能力を、プログラムによってそうすることが許されていれば提供する。
【０４８７】
制御ユニットまたはチャネル・サブシステムによっては、サブチャネルを介したデバイスへのアクセスは、単一のチャネルパス・タイプに制限され得る。
【０４８８】
上述のモードおよび機能は、チャネルパス上で情報を転送するために使用されるプロトコルおよび伝送の速度にのみ影響を及ぼす。ＣＰＵまたはチャネル・プログラムにより、これらのプログラムが実行される方法に関して観測できる影響はない。
【０４８９】
制御ユニット
制御ユニットは、Ｉ／Ｏデバイスを動作させ制御するのに必要な論理能力を提供し、チャネル・サブシステムによって提供される標準形態の制御に各デバイスが応答できるように、各デバイスの特徴を適応させる。
【０４９０】
制御ユニットとチャネル・サブシステムとの間の通信は、チャネルパス上で行われる。制御ユニットは、チャネル・サブシステムから制御信号を受け取り、チャネルパス上のデータ転送のタイミングを制御し、デバイスのステータスに関するインジケーションを提供する。
【０４９１】
制御ユニットに連結されているＩ／Ｏデバイスは、限られた特定の動作のみを実行するよう設計されていることも、または多数の異なる動作を実行することもある。典型的な動作は、記録媒体および記録データの移動である。デバイスは、その動作を遂行するために、そのデバイスのタイプ特有の詳細な信号シーケンスを必要とする。制御ユニットは、チャネル・サブシステムから受領されたコマンドをデコードし、特定のタイプのデバイス向けにコマンドを解釈し、動作の実行に必要な信号シーケンスを提供する。
【０４９２】
制御ユニットは、別個に収容されてもよく、またはＩ／Ｏデバイス、チャネル・サブシステムもしくはＣＰＵと物理的および論理的に統合されてもよい。制御ユニットおよびデバイスが必要とする機器のタイプの違いが理由で、多くの電気機械デバイスの場合、デバイスと制御ユニットとの間には明確に規定されたインターフェースが存在する。これらの電気機械デバイスは、多くの場合、制御ユニットに連結されたグループのうち、一度に１つのみのデバイスがデータを転送するよう要求されるタイプのものであり（例えば磁気テープ・ユニットまたはディスク・アクセス・メカニズム）、制御ユニットは、いくつかのＩ／Ｏデバイス間で共有される。他方、チャネル間アダプタなどの一部の電子Ｉ／Ｏデバイスでは、制御ユニットにはそれ自体のアイデンティティがない。
【０４９３】
プログラマの観点からは、制御ユニットにより実行される多くの機能は、Ｉ／Ｏデバイスにより実行されるものとマージできる。したがって、通常、本記載では、制御ユニットの機能について特に言及していない。Ｉ／Ｏ動作の実行は、Ｉ／Ｏデバイスがチャネル・サブシステムと直接通信するかのように記載されている。制御ユニットに言及するのは、それによって実行される機能を強調するとき、またはいくつかのデバイス間での制御ユニットの共有がＩ／Ｏ動作の実行にどのように影響するかについて記載するときに限られる。
【０４９４】
Ｉ／Ｏデバイス
入出力（Ｉ／Ｏ）デバイスは、外部ストレージ、データ処理システム間の通信手段、またはシステムとその動作環境との間の通信手段を提供する。Ｉ／Ｏデバイスには、磁気テープ・ユニット、直接アクセス・ストレージ・デバイス（例えばディスク）、ディスプレイ・ユニット、タイプライタ・キーボード・デバイス、プリンタ、遠隔処理デバイス、およびセンサ・ベースの機器などの機器が含まれる。Ｉ／Ｏデバイスは、物理的に別個の機器であってもよく、またはほかのＩ／Ｏデバイスと機器を共有してもよい。
【０４９５】
プリンタまたはテープ・デバイスなど、多くのタイプのＩ／Ｏデバイスは、外部媒体を使用し、これらのデバイスは、物理的に区別可能かつ識別可能である。ほかのタイプは、完全に電子的なものであり、物理的な記録媒体を直接扱わない。例えば、チャネル間アダプタは、２つのチャネルパス間のデータ転送を提供し、データがメイン・ストレージ外の物理的記録媒体に到達することは決してない。同様に、通信コントローラは、データ処理システムと遠隔局との間の情報の伝送を扱うこともあり、その入力および出力は伝送路上の信号である。
【０４９６】
最も単純な場合では、Ｉ／Ｏデバイスは、１つの制御ユニットに連結され、１つのチャネルパスからアクセス可能である。デバイスを制御ユニット間でスイッチングし、制御ユニットをチャネルパス間でスイッチングすることによって、一部のデバイスを２つ以上のチャネルパスからアクセス可能にするために、スイッチング機器が利用可能である。そのようなスイッチング機器は、Ｉ／Ｏデバイスがアクセスされ得る複数のパスを提供する。Ｉ／Ｏデバイスへの複数のチャネルパスは、システム内の性能もしくはＩ／Ｏ利用可能性または両方を改善するために提供される。デバイスへの複数のチャネルパスの管理は、チャネル・サブシステムおよびデバイスの制御下にあるが、チャネルパスは、プログラムによって間接的に制御されてもよい。
【０４９７】
Ｉ／Ｏアドレス指定
様々なコンポーネントの所要のアドレス指定のために、次の異なる４つのタイプのＩ／Ｏアドレス指定が、チャネル・サブシステムによって提供される：チャネルパス識別子、サブチャネル番号、デバイス番号、およびプログラムには見えないがチャネルパス・タイプに依存するアドレス。複数サブチャネル・セット・ファシリティがインストールされている場合、サブチャネル・セット識別子（ＳＳＩＤ）も、Ｉ／Ｏアドレス指定において使用される。
【０４９８】
サブチャネル・セット識別子
サブチャネル・セット識別子（ＳＳＩＤ）は、提供されるサブチャネル・セットそれぞれに割り振られる２ビット値である。
【０４９９】
チャネルパス識別子
チャネルパス識別子（ＣＨＰＩＤ：ｃｈａｎｎｅｌ−ｐａｔｈ  ｉｄｅｎｔｉｆｉｅｒ）は、システムのインストール済みチャネルパスそれぞれに割り振られる、システム固有の８ビット値である。ＣＨＰＩＤは、チャネルパスをアドレス指定するために使用される。ＣＨＰＩＤは、ＲＥＳＥＴ  ＣＨＡＮＮＥＬ  ＰＡＴＨの第２オペランド・アドレスによって指定され、リセットされるチャネルパスを指示するために使用される。ＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬが実行されると、デバイスへのアクセスが可能なチャネルパスが、サブチャネル情報ブロック（ＳＣＨＩＢ）内で、それぞれその関連するＣＨＰＩＤによって識別される。ＣＨＰＩＤはさらに、特定のチャネルパスを識別する必要があるときに、オペレータ・メッセージ内で使用することができる。システム・モデルは、２５６もの数のチャネルパスを提供し得る。チャネルパスの最大数およびチャネルパスに対するＣＨＰＩＤの割り振りは、システム・モデルに依存する。
【０５００】
サブチャネル番号
サブチャネル番号は、サブチャネルのアドレス指定に使用される、システム固有の１６ビット値である。この値は、チャネル・サブシステムのサブチャネル・セット内で固有である。サブチャネルは、次の８つのＩ／Ｏ命令によってアドレス指定される：ＣＡＮＣＥＬ  ＳＵＢＣＨＡＮＮＥＬ、ＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬ、ＨＡＬＴ  ＳＵＢＣＨＡＮＮＥＬ、ＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬ、ＲＥＳＵＭＥ  ＳＵＢＣＨＡＮＮＥＬ、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ、ＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬおよびＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬ。特定のＩ／Ｏデバイスに関連するＩ／Ｏ機能はすべて、Ｉ／Ｏデバイスに割り振られたサブチャネルを指示することによってプログラムにより指定される。各サブチャネル・セット内のサブチャネルは、常に、単一範囲の連続的な番号の中のサブチャネル番号を割り振られている。最小番号のサブチャネルは、サブチャネル０である。チャネル・サブシステムの最大番号のサブチャネルは、提供されるサブチャネル数より１低い数に相当するサブチャネル番号を有する。各サブチャネル・セット内に、最大で６５，５３６のサブチャネルを提供することができる。通常は、サブチャネル番号は、ＣＰＵプログラムと、チャネル・サブシステムとの間の通信においてのみ使用される。
【０５０１】
デバイス番号
Ｉ／Ｏデバイスを割り振られている各サブチャネルは、デバイス番号と呼ばれるパラメータも含む。デバイス番号は、デバイスがサブチャネルに割り振られる時点でサブチャネルのパラメータの１つとして割り振られる、１６ビット値である。デバイス番号は、プログラムに対してデバイスを一意的に識別する。
【０５０２】
デバイス番号は、システム・モデル、構成、またはチャネルパス・プロトコルにより課されるいかなる制限からも独立してデバイスを識別する手段を提供する。デバイス番号は、システムとシステム・オペレータとの間で行われる、デバイスに関する通信において使用される。例えば、デバイス番号は、初期のプログラム・ローディングに使用される入力デバイスを指示するためにシステム・オペレータによって入力される。
【０５０３】
プログラミング・ノート：デバイス番号は、デバイスのインストール時に割り振られ、任意の値を有することができる。しかし、制御プログラム、サポート・プログラム、または特定の制御ユニットもしくはＩ／Ｏデバイスによって要求され得るデバイス番号の割り振りに対する制約に、ユーザは注意しなければならない。
【０５０４】
デバイス識別子
デバイス識別子は、Ｉ／Ｏデバイスと通信するためにチャネル・サブシステムによって使用され、プログラムには識別されないアドレスである。使用されるデバイス識別子のタイプは、特定のチャネルパス・タイプおよび提供されるプロトコルに依存する。各サブチャネルは、１つ以上のデバイス識別子を含む。
【０５０５】
パラレルＩ／Ｏインターフェース・タイプのチャネルパスの場合、デバイス識別子は、デバイス・アドレスと呼ばれ、８ビット値から成る。ＥＳＣＯＮ（ＩＢＭ社の登録商標）Ｉ／Ｏインターフェースの場合、デバイス識別子は、４ビットの制御ユニット・アドレスおよび８ビットのデバイス・アドレスから成る。ＦＩＣＯＮ（ＩＢＭ社の登録商標）Ｉ／Ｏインターフェースの場合、デバイス識別子は、８ビットの制御ユニット・イメージＩＤおよび８ビットのデバイス・アドレスから成る。ＦＩＣＯＮ（ＩＢＭ社の登録商標）変換Ｉ／Ｏインターフェースの場合、デバイス識別子は、４ビットの制御ユニット・アドレスおよび８ビットのデバイス・アドレスから成る。
【０５０６】
デバイス・アドレスは、サブチャネルに関連する特定のＩ／Ｏデバイス（および、パラレルＩ／Ｏインターフェースでは制御ユニット）を識別する。デバイス・アドレスは、例えば、特定の磁気テープ・ドライブ、ディスク・アクセス・メカニズム、または伝送路を識別し得る。０〜２５５の範囲の任意の番号が、デバイス・アドレスとして割り振り可能である。
【０５０７】
ファイバ・チャネル拡張
ファイバ・チャネル拡張（ＦＣＸ：ｆｉｂｒｅ−ｃｈａｎｎｅｌ−ｅｘｔｅｎｓｉｏｎ）ファシリティは、トランスポート・コマンド制御ブロック（ＴＣＣＢ：ｔｒａｎｓｐｏｒｔ−ｃｏｍｍａｎｄ−ｃｏｎｔｒｏｌ  ｂｌｏｃｋ）およびトランスポート・ステータス・ブロック（ＴＳＢ：ｔｒａｎｓｐｏｒｔ−ｓｔａｔｕｓ  ｂｌｏｃｋ）を指示する、トランスポート制御ワード（ＴＣＷ：ｔｒａｎｓｐｏｒｔ−ｃｏｎｔｒｏｌ  ｗｏｒｄ）から成るチャネル・プログラムの形成を提供する任意選択のファシリティである。ＴＣＣＢは、デバイス・コマンド・ワード（ＤＣＷ：ｄｅｖｉｃｅ−ｃｏｍｍａｎｄ  ｗｏｒｄ）の形態の最大３０のＩ／Ｏコマンドのリストを含む、トランスポート・コマンド・エリア（ＴＣＡ：ｔｒａｎｓｐｏｒｔ−ｃｏｍｍａｎｄ  ａｒｅａ）を含む。ＴＣＷおよびそのＴＣＣＢは、読み取りまたは書き込み動作のいずれかを指定し得る。ＩＲＢに加えて、ＴＳＢは、完了ステータス、およびＴＣＷチャネル・プログラムに関するほかの情報を含む。
【０５０８】
ＦＣＸファシリティは、ＴＣＣＢ、入力データ・ストレージ・エリア、および出力データ・ストレージ・エリアのいずれかまたはすべてを直接または間接的に指示する能力を提供する。ストレージ・エリアが直接指示される場合、ＴＣＷは、ストレージの連続的な単一ブロックの位置を指定する。ストレージ・エリアが間接的に指示される場合、ＴＣＷは、１つ以上のトランスポート間接データ・アドレス・ワード（ＴＩＤＡＷ：ｔｒａｎｓｐｏｒｔ−ｉｎｄｉｒｅｃｔ−ｄａｔａ−ａｄｄｒｅｓｓ  ｗｏｒｄ）のリストの位置を指示する。ＴＩＤＡＷリストおよびリスト内の各ＴＩＤＡＷによって指示されるストレージ・エリアは、４Ｋバイト境界を越えることはできない。
【０５０９】
ＦＣＸファシリティはさらに、Ｉ／Ｏ動作の状態を判断するために、ＣＡＮＣＥＬ  ＳＵＢＣＨＡＮＮＥＬ命令によって開始され得る問い合わせ動作を提供する。
【０５１０】
Ｉ／Ｏコマンド・ワード
Ｉ／Ｏコマンド・ワードは、コマンドを指定し、コマンドに関連する情報を含む。ＦＣＸファシリティがインストールされている場合、チャネル・コマンド・ワード（ＣＣＷ）およびデバイス・コマンド・ワード（ＤＣＷ）の、２つの基本的な形態のＩ／Ｏコマンド・ワードがある。
【０５１１】
ＣＣＷは、８バイトの長さであり、実行されるコマンドを指定する。特定の動作を開始するコマンドの場合、ＣＣＷはさらに、動作に関連するストレージ・エリア、データ・バイトのカウント、コマンド完了時にとられるアクション、およびその他のオプションを指示する。すべてのＩ／ＯデバイスがＣＣＷを認識する。
【０５１２】
ＤＣＷは、８バイトの長さであり、実行されるコマンド、データ・バイトのカウント、およびその他のオプションを指定する。ＦＣＸをサポートするＩ／Ｏデバイスは、ＤＣＷを認識する。
【０５１３】
トランスポート・コマンド・ワード（ＴＣＷ：Ｔｒａｎｓｐｏｒｔ  Ｃｏｍｍａｎｄ  Ｗｏｒｄ）
ＴＣＷは、Ｉ／Ｏデバイスへ輸送されＩ／Ｏデバイスによって実行されるコマンドのリストを含む、トランスポート・コマンド制御ブロック（ＴＣＣＢ）を指示する。ＴＣＷはさらに、ＴＣＣＢ内のコマンドに関するストレージ・エリア、ならびにＩ／Ｏ動作のステータスを含むためのトランスポート・ステータス・ブロック（ＴＳＢ）を指示する。
【０５１４】
チャネル・プログラムの構造
ＦＣＸファシリティがインストールされていない場合、単一の形態のチャネル・プログラム、すなわちＣＣＷチャネル・プログラムが存在する。ＦＣＸファシリティがインストールされている場合、追加の形態のチャネル・プログラム、すなわちＴＣＷチャネル・プログラムが存在する。両形態のチャネル・プログラムについて、以下記載する。
【０５１５】
ＣＣＷチャネル・プログラム
１つ以上のＣＣＷから成るチャネル・プログラムは、ＣＣＷチャネル・プログラム（ＣＣＰ：ＣＣＷ  ｃｈａｎｎｅｌ  ｐｒｏｇｒａｍ）と呼ばれる。そのようなチャネル・プログラムは、チャネル・サブシステムによる逐次実行のために論理的にリンクされ配列された、１つ以上のＣＣＷを含む。
【０５１６】
ＴＣＷチャネル・プログラム
単一のＴＣＷから成るチャネル・プログラムは、ＴＣＷチャネル・プログラムと呼ばれる。ＴＣＷは、１〜３０のＤＣＷを含むトランスポート・コマンド制御ブロック（ＴＣＣＢ）を指示する。ＴＣＣＢ内のＤＣＷは、逐次実行のために論理的にリンクされ配列されている。制御情報を指定するＤＣＷの場合、ＴＣＣＢはさらに、それらのコマンドに関する制御情報を含む。ＴＣＷはさらに、デベイスから、またはデバイスへのデータの転送を指定するＤＣＷに関する１つまたは複数のストレージ・エリアと、完了ステータスのためのトランスポート・ステータス・ブロック（ＴＳＢ）の位置とを指示する。ＴＣＣＢおよびデータの転送のためのストレージ・エリアは、連続的または非連続的いずれかのストレージとして指定され得る。
【０５１７】
ＴＣＷは、完了ステータスのためのＴＳＢも指示する。
【０５１８】
Ｉ／Ｏ動作の実行
Ｉ／Ｏ動作は、次の４タイプのフォーマットを持つ情報によって開始および制御される：命令ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ、トランスポート・コマンド・ワード、Ｉ／Ｏコマンド・ワード、および指令。ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令は、ＣＰＵによって実行され、Ｉ／Ｏデータを管理または処理するほかのプログラムからのＩ／Ｏ動作の要求のフローを管理するＣＰＵプログラムの一部である。
【０５１９】
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬが実行されると、パラメータがターゲット・サブチャネルに渡され、サブチャネルに関連するＩ／Ｏデバイスを用いた開始機能をチャネル・サブシステムが実行するよう要求される。チャネル・サブシステムは、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令の実行中に渡された情報を含むサブチャネルにある情報を使用して、開始機能を実行し、デバイスへのアクセス可能なチャネルパスを発見する。デバイスが選択されると、ＣＣＷチャネル・プログラムの場合は、チャネル・サブシステムおよびＩ／ＯデバイスによりＣＣＷをデコードおよび実行することによって、またはＴＣＷチャネル・プログラムの場合は、チャネル・サブシステムによりＩ／ＯデバイスへＴＣＣＢを輸送し、デバイスによりＤＣＷをデコードおよび実行することによって、Ｉ／Ｏ動作の実行が遂行される。Ｉ／Ｏコマンド・ワードおよびトランスポート・コマンド・ワードは、メイン・ストレージからフェッチされるが、ＣＣＷ  ＤＣＷのコマンド・コード内の修飾ビットが、デバイスにおける動作の実行に関して、デバイス依存の条件を指定し得る。
【０５２０】
テープの巻き戻しまたはディスク・ドライブ上のアクセス・メカニズムの位置調整などのデバイス特有の動作は、Ｉ／Ｏデバイスによってデコードおよび実行される指令によって指定される。指令は、制御コマンドのコマンド・コード内の修飾ビットとしてデバイスに転送されてもよく、制御または書き込み動作中にデータとしてデバイスに転送されてもよく、またはほかの手段によってデバイスに利用可能にされてもよい。
【０５２１】
開始機能の開始
ＣＰＵプログラムは、命令ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬによりＩ／Ｏ動作を開始する。この命令は、動作要求ブロック（ＯＲＢ）のコンテンツをサブチャネルに渡す。
【０５２２】
ＯＲＢが、ＣＣＷチャネル・プログラムを指定する場合、ＯＲＢのコンテンツは、サブチャネル・キー、実行される第１ＣＣＷのアドレス、およびＣＣＷのフォーマットの指定を含む。ＣＣＷは、実行されるコマンド、および使用されるストレージ・エリアがあればそのストレージ・エリアを指定する。ＯＲＢが、ＴＣＷチャネル・プログラムを指定する場合、ＯＲＢのコンテンツは、サブチャネル・キーおよび実行されるＴＣＷのアドレスを含む。ＴＣＷは、実行のためにデバイスに輸送されるコマンドを含むＴＣＣＢ、データ転送に使用される１つまたは複数のストレージ・エリアがあればそのストレージ・エリア、およびＩ／Ｏ動作のステータスを含むためのＴＳＢを指示する。
【０５２３】
ＯＲＢコンテンツがサブチャネルに渡されると、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬの実行は完了する。この命令の実行の結果は、プログラム・ステータス・ワード内に設定される条件コードによって示される。
【０５２４】
ファシリティが利用可能になり、ＯＲＢがＣＣＷチャネル・プログラムを指定する場合、チャネル・サブシステムは、第１ＣＣＷをフェッチし、それをＯＲＢ内で指定されたフォーマット・ビットに従ってデコードする。フォーマット・ビットがゼロであれば、フォーマット０  ＣＣＷが指定されている。フォーマット・ビットが１であれば、フォーマット１  ＣＣＷが指定されている。フォーマット０およびフォーマット１  ＣＣＷは、同じ情報を含むが、フォーマット１  ＣＣＷ内では、３１ビット・アドレスをＣＣＷ内で直接指定できるように、フィールドが違う形で配列される。ファシリティが利用可能になり、ＯＲＢがＴＣＷチャネル・プログラムを指定する場合、チャネル・サブシステムは、指示されたＴＣＷをフェッチし、指示されたＴＣＣＢをデバイスへ輸送する。デバイスへ、またはデバイスからのデータの転送のためにＴＣＷによって指示されるストレージ・エリアは、６４ビット・アドレスである。
【０５２５】
サブチャネル動作モード
サブチャネル動作のモードは２つある。ＦＣＸファシリティがインストールされていて、ＴＣＷチャネル・プログラムを指定するＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令の実行の結果としてサブチャネルにて開始機能が設定されると、サブチャネルはトランスポート・モードに入る。サブチャネルは、開始機能がサブチャネルにてリセットされるまで、トランスポート・モードにとどまる。それ以外のときはすべて、サブチャネルはコマンド・モードである。
【０５２６】
パス管理
ＯＲＢがＣＣＷチャネル・プログラムを指定し、第１ＣＣＷが、特定の有効性テストをパスし、１として指定された中断フラグを有さない場合、または、ＯＲＢがＴＣＷチャネル・プログラムを指定し、指示されたＴＣＷが特定の有効性テストをパスした場合、チャネル・サブシステムは、選択可能なチャネルパスのグループからチャネルパスを選択することによって、デバイス選択を試行する。デバイス識別子を認識する制御ユニットが、それ自体を論理的にチャネルパスに接続し、その選択に応答する。
【０５２７】
ＯＲＢがＣＣＷチャネル・プログラムを指定する場合、チャネル・サブシステムは、ＣＣＷのコマンド・コード部分をチャネルパス上で送り、デバイスは、コマンドが実行可能かどうかを示すステータス・バイトを用いて応答する。制御ユニットは、この時点でチャネルパスから論理的に切断してもよく、または、データ転送を開始するために接続されたままでいてもよい。
【０５２８】
ＯＲＢがＴＣＷチャネル・プログラムを指定する場合、チャネル・サブシステムは、指示されたＴＣＷ内の情報を使用して、ＴＣＣＢを制御ユニットに転送する。ＴＣＣＢのコンテンツは、チャネル・サブシステムには無視され、制御ユニットおよびＩ／Ｏデバイスに対してのみ意味を有する。
【０５２９】
試行された選択が、ビジー・インジケーションまたはパス動作不能条件のいずれかの結果として発生しない場合、チャネル・サブシステムは、代わりのチャネルパスが利用可能であれば、それによってデバイスの選択を試行する。選択可能なすべてのパスに対して選択が試行され、ビジー条件が続く場合、動作は、パスが空きになるまでペンディングのままとなる。デバイス選択が試行されたチャネルパスのうちの１つ以上において、パス動作不能条件が検出された場合、プログラムは、後のＩ／Ｏ割り込みによるアラートを受ける。チャネル・プログラムが実行され次第（デバイスが代わりのチャネルパス上で選択されたと仮定して）、またはデバイス選択が試行されたチャネルパスのすべてにおいてパス動作不能条件が検出されたため実行が放棄された結果として、Ｉ／Ｏ割り込みが発生する。
【０５３０】
チャネル・プログラムの実行
コマンドがデバイスにて開始され、コマンドの実行が、デバイスへ、またはデバイスからのいずれのデータの転送も要求しない場合、デバイスは、コマンド・コードを受領すると直ちに動作の終了を伝達してもよい。データの転送を伴う動作では、チャネル・サブシステムがデバイスからのサービス要求に応答して動作のさらなる制御を行うように、サブチャネルが設定される。
【０５３１】
Ｉ／Ｏ動作は、単一のＣＣＷもしくはＴＣＷによって指示された１つのストレージ・エリアへ、もしくはそこからのデータの転送、または非連続的ないくつかのストレージ・エリアへ、もしくはそこからのデータの転送を伴ってもよい。後者の場合、一般に、Ｉ／Ｏ動作の実行のためにＣＣＷのリストが使用され、各ＣＣＷは、連続的なストレージ・エリアを指示し、ＣＣＷは、データ・チェーニングによって結合される。データ・チェーニングは、ＣＣＷ内のフラグによって指定され、現在のＣＣＷによって指示されたストレージ・エリアが枯渇または充満すると、チャネル・サブシステムに別のＣＣＷをフェッチさせる。データ・チェーニングに基づきフェッチされたＣＣＷによって指示されるストレージ・エリアは、Ｉ／Ｏデバイスにて既に進行中のＩ／Ｏ動作に関連し、Ｉ／Ｏデバイスは、新たなＣＣＷがフェッチされたときに通知されない。
【０５３２】
ＣＣＷがデコードされると、チャネル・サブシステムが、可能な限り早くＩ／Ｏ割り込みを要求することによって、チャネル・プログラム内の少なくとも当該ＣＣＷまではチェーニングが進行したことをＣＰＵプログラムに通知するよう、プログラマが指定するための規定が、ＣＣＷフォーマット内に設けられる。
【０５３３】
ＣＰＵにおける動的アドレス変換を補完するために、ＣＣＷ間接データ・アドレス指定および変更されたＣＣＷ間接データ・アドレス指定が提供される。
【０５３４】
ＯＲＢがＣＣＷチャネル・プログラムを指定し、ＣＣＷ間接データ・アドレス指定が使用される場合、当該ＣＣＷのストレージ・エリアを指示するために間接データ・アドレス・リストが使用されることが、ＣＣＷ内のフラグによって指定される。ストレージのブロックの境界に達する度にリストが参照され、次に使用されるストレージのブロックが判断される。ＯＲＢは、ストレージの各ブロックのサイズが２Ｋバイトであるかまたは４Ｋバイトであるかを指定する。
【０５３５】
ＯＲＢがＣＣＷチャネル・プログラムを指定し、変更されたＣＣＷ間接データ・アドレス指定が使用される場合、当該ＣＣＷのストレージ・エリアを指示するために、変更された間接データ・アドレス・リストが使用されることが、ＯＲＢ内のフラグおよびＣＣＷ内のフラグによって指定される。ストレージのブロックに関して指定されたバイトのカウントに達する度にリストが参照され、次に使用されるストレージのブロックが判断される。間接データ・アドレス指定が使用される場合と異なり、４Ｋバイト境界を横断するデータ転送が指定されないという条件で、ブロックは、任意の境界上で、最大４Ｋの長さで指定され得る。
【０５３６】
ＯＲＢがＴＣＷチャネル・プログラムを指定し、トランスポート間接データ・アドレス指定が使用される場合、ＴＣＣＢを含むストレージ・エリアを指示するためにトランスポート間接データ・アドレス・リストが使用されるかどうか、およびＴＣＣＢ内のＤＣＷに関連するデータ・ストレージ・エリアを指示するためにトランスポート間接データ・アドレス・リストが使用されるかどうかが、ＴＣＷ内のフラグによって指定される。ストレージのブロックに関して指定されたバイトのカウントに達する度に、対応するトランスポート間接データ・アドレス・リストが参照され、次に使用されるストレージ・ブロックが判断される。
【０５３７】
ＣＣＷ間接データ・アドレス指定および変更されたＣＣＷ間接データ・アドレス指定は、等価な連続的実ストレージとともにＣＰＵが動作した場合に使用されるのと事実上同じＣＣＷシーケンスが、ＣＰＵの動的アドレス変換がアクティブな状態で実行するプログラムに対して使用されることを可能にする。ＣＣＷ間接データ・アドレス指定は、ＯＲＢにおいてフォーマット０  ＣＣＷが指定されたか、またはフォーマット１  ＣＣＷが指定されたかとは独立して、最大で２６４−１までの絶対ストレージ・アドレスを有するデータ・ブロックをプログラムが指示することを可能にする。変更されたＣＣＷ間接データ・アドレス指定は、ＯＲＢにおいてフォーマット０  ＣＣＷが指定されたか、またはフォーマット１  ＣＣＷが指定されたかとは独立して、最大で２６４−１までの絶対ストレージ・アドレスを有するデータ・ブロックをプログラムが指示することを可能にする。
【０５３８】
一般に、Ｉ／Ｏ動作または動作のチェーンの実行は、３段階にのぼる関与を伴う。
【０５３９】
１．ＣＰＵとチャネル・サブシステム機器との統合が原因の影響のほか、ＣＰＵは、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬの実行の継続時間中ビジーであり、これは、アドレス指定されたサブチャネルにＯＲＢコンテンツが渡されるまで続く。
【０５４０】
２．サブチャネルは、ＯＲＢコンテンツの受領から、サブチャネルにて一次割り込み条件がクリアされるまで、新たなＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬでビジーである。
【０５４１】
３．Ｉ／Ｏデバイスは、デバイスにおける第１動作の開始から、サブチャネルが中断状態になるか、またはサブチャネルに二次割り込み条件が置かれるまでビジーである。中断されたサブチャネルの場合、デバイスは、中断されたチャネル・プログラムの実行が再開されると再びビジーになる。
【０５４２】
Ｉ／Ｏ動作の終結
Ｉ／Ｏ動作の終結は、通常は、チャネル終了およびデバイス終了の２つのステータス条件により示される。チャネル終了条件は、Ｉ／Ｏデバイスが、動作に関連するすべてのデータを受領または提供し、チャネル・サブシステム・ファシリティが必要なくなったことを示す。この条件は、一次割り込み条件と呼ばれ、この場合チャネル終了が一次ステータスである。概して、一次割り込み条件とは、Ｉ／Ｏ動作に関係し、かつサブチャネルにおけるＩ／Ｏ動作またはＩ／Ｏ動作のチェーンの終結を伝達する、任意の割り込み条件である。
【０５４３】
デバイス終了信号は、Ｉ／Ｏデバイスが実行を終え、別の動作をすぐに実行できることを示す。この条件は、二次割り込み条件と呼ばれ、この場合デバイス終了が二次ステータスである。概して、二次割り込み条件とは、Ｉ／Ｏ動作に関係し、かつデバイスにおけるＩ／Ｏ動作または動作のチェーンの終結を伝達する、任意の割り込み条件である。二次割り込み条件は、一次割り込み条件とコンカレントに、またはそれよりも後に発生することができる。
【０５４４】
一次または二次割り込み条件とコンカレントに、チャネル・サブシステムおよびＩ／Ｏデバイスの両方が、異常状況のインジケーションを提供することができる。
【０５４５】
Ｉ／Ｏ動作の終結を伝達する条件は、Ｉ／Ｏ割り込みによって、またはＣＰＵがＩ／Ｏ割り込みに関して無効化されている場合はチャネル・サブシステムのプログラムされた問い合わせによって、プログラムに通知されることが可能である。前者の場合、これらの条件は、割り込み元に関する情報を含むＩ／Ｏ割り込みコードの格納をもたらす。後者の場合、割り込みコードは、ＴＥＳＴ  ＰＥＮＤＩＮＧ  ＩＮＴＥＲＲＵＰＴＩＯＮの実行の結果として格納される。
【０５４６】
一次割り込み条件が認識されると、チャネル・サブシステムは、サブチャネルにおけるＩ／Ｏ動作の終結を記述する情報をサブチャネルが含むことを、割り込み要求によってプログラムに通知しようと試行する。コマンド・モード割り込みの場合、情報は、最後に使用されたＣＣＷを識別し、さらにその残りのバイト・カウントを提供し、そうすることで、使用されたメイン・ストレージの範囲を記述してもよい。トランスポート・モード割り込みの場合、情報は、現在のＴＣＷと、残りのバイト・カウントなどのＩ／Ｏ動作についてのさらなるステータスを含む、チャネル・プログラムに関連するＴＳＢとを識別する。チャネル・プログラムについての情報に加えて、チャネル・サブシステムおよびＩ／Ｏデバイスの両方が、一次または二次割り込み条件のいずれかの一部として、異常条件のさらなるインジケーションを提供してもよい。サブチャネルにおいて含まれる情報は、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬの実行またはＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬの実行によって格納されるとよい。この情報は、格納されると、サブチャネル・ステータス・ワード（ＳＣＳＷ）と呼ばれる。
【０５４７】
ＣＣＷチャネル・プログラムを使用する場合のチェーニング
ＯＲＢがＣＣＷチャネル・プログラムを指定する場合、プログラムがＩ／Ｏ動作のチェーンの実行を単一のＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令により開始するためのファシリティが提供される。現在のＣＣＷがコマンド・チェーニングを指定し、動作の間に異常条件が何ら検出されなかった場合、デバイス終了信号の受領により、チャネル・サブシステムは新たなＣＣＷをフェッチする。ＣＣＷが特定の有効性テストをパスし、新たなＣＣＷ内で中断フラグが１として指定されていない場合、デバイスにて新たなコマンドの実行が開始される。ＣＣＷが有効性テストにパスしなければ、新たなコマンドは開始されず、コマンド・チェーニングは抑制され、新たなＣＣＷに関連するステータスが、割り込み条件の生成をもたらす。中断フラグが１として指定され、中断制御、すなわち関連するＯＲＢのワード１のビット４における１の値によりこの値が有効である場合、新たなコマンドの実行は開始されず、コマンド・チェーニングは終わる。
【０５４８】
新たなコマンドの実行は、前の動作と同じ方法でチャネル・サブシステムによって開始される。コマンド・チェーニングを指定するＣＣＷによってもたらされる、動作の終結時に発生する終了信号は、プログラムに利用可能にされない。別のＩ／Ｏ動作がコマンド・チェーニングによって開始されると、チャネル・サブシステムは、チャネル・プログラムの実行を継続する。一方、異常条件が検出された場合、コマンド・チェーニングは抑制され、チャネル・プログラムは終了され、割り込み条件が生成され、終了をもたらす終了信号がプログラムに利用可能にされる。
【０５４９】
中断・再開機能は、チャネル・プログラムの実行に対する制御をプログラムに提供する。中断機能の開始は、ＯＲＢ内の中断制御ビットの設定によって制御される。チャネル・プログラム実行中、ＯＲＢ内の中断制御ビットが１であり、第１ＣＣＷまたはコマンド・チェーニング中にフェッチされたＣＣＷ内の中断フラグが１である場合、中断機能がチャネル・サブシステムに伝達される。
【０５５０】
中断は、有効に（ＯＲＢ内の中断制御ビットの１の値により）１として指定されている中断フラグを備えるＣＣＷをチャネル・サブシステムがフェッチすると発生する。このＣＣＷ内のコマンドは、Ｉ／Ｏデバイスに送られず、デバイスは、コマンドのチェーンが終わったことを伝達される。後のＲＥＳＵＭＥ  ＳＵＢＣＨＡＮＮＥＬ命令は、中断を生じさせたＣＣＷが変更された可能性があること、およびチャネル・サブシステムはＣＣＷを再フェッチして、中断フラグの現在の設定を検査しなければならないことを、チャネル・サブシステムに通知する。ＣＣＷ内で中断フラグがゼロであることが分かると、チャネル・サブシステムは、Ｉ／Ｏデバイスを用いたコマンドのチェーンの実行を再開する。
【０５５１】
ＴＣＷチャネル・プログラムを使用する場合のチェーニング
ＯＲＢがＴＣＷチャネル・プログラムを指定する場合も、プログラムがデバイス動作のチェーンの実行を単一のＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ命令により開始するためのファシリティが提供される。コマンド・チェーニングは、単一のＴＣＷによって指示される当該ＤＣＷに関して指定され得る。現在のＤＣＷがコマンド・チェーニングを指定し、動作の間に異常条件が何ら検出されなかった場合、ＤＣＷの正常な実行が認識されると、現在のＴＣＣＢ内の次のＤＣＷの処理をもたらす。
【０５５２】
次のＤＣＷが、特定の有効性テストをパスすると、新たなコマンドの実行がデバイスにて開始され、そのＤＣＷが現在のＤＣＷになる。ＤＣＷが有効性テストにパスしなければ、新たなコマンドは開始されず、コマンド・チェーニングは抑制され、チャネル・プログラムは終了され、新たなＤＣＷに関連するステータスが、割り込み条件の生成をもたらす。
【０５５３】
新たなコマンドの実行は、前の動作と同じ方法で開始される。最後に指定されているＤＣＷではないＤＣＷによってもたらされる、動作の終結時に発生する終了信号は、プログラムに利用可能にされない。別のＩ／Ｏ動作がコマンド・チェーニングによって開始されると、チャネル・プログラムの実行が継続する。一方、異常条件が検出された場合、コマンド・チェーニングは抑制され、チャネル・プログラムは終了され、割り込み条件が生成され、異常条件を識別するステータスがプログラムに利用可能にされる。
【０５５４】
Ｉ／Ｏ動作の早期終結
チャネル・プログラムの実行は、ＣＡＮＣＥＬ  ＳＵＢＣＨＡＮＮＥＬ、ＨＡＬＴ  ＳＵＢＣＨＡＮＮＥＬまたはＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬによって早期に終了され得る。チャネル・プログラムがデバイスにて開始されていなければ、ＣＡＮＣＥＬ  ＳＵＢＣＨＡＮＮＥＬの実行は、チャネル・サブシステムにサブチャネルでの開始機能を終了させる。ＣＡＮＣＥＬ  ＳＵＢＣＨＡＮＮＥＬの実行によって開始機能が終了されると、チャネル・サブシステムは、ＣＡＮＣＥＬ  ＳＵＢＣＨＡＮＮＥＬ命令に応答して条件コード０を設定する。ＨＡＬＴ  ＳＵＢＣＨＡＮＮＥＬの実行は、チャネル・サブシステムに、停止信号をＩ／Ｏデバイスに対し発行させ、サブチャネルでのチャネル・プログラム実行を終了させる。チャネル・プログラム実行がＨＡＬＴ  ＳＵＢＣＨＡＮＮＥＬの実行により終了されると、プログラムは、Ｉ／Ｏ割り込み要求によって終了を通知される。サブチャネルがコマンド・モードである場合、割り込み要求は、終了された動作のステータスをデバイスが提示するときに生成される。サブチャネルがトランスポート・モードである場合、割り込み要求は直ちに生成される。なお、停止信号がデバイスに発行されたのが、コマンド・チェーニング中の、デバイス終了の受領後、かつ次のコマンドのデバイスへの転送前である場合、デバイスが伝達を受けてから割り込み要求が生成される。後者の場合、ＳＣＳＷのデバイス・ステータス・フィールドは、ゼロを含むことになる。ＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬの実行は、実行中のチャネル・プログラムのインジケーションをサブチャネルからクリアし、チャネル・サブシステムに、クリア信号をＩ／Ｏデバイスに対し発行させ、チャネル・サブシステムに、クリア機能の完了をプログラムに通知するためのＩ／Ｏ割り込み要求を生成させる。
【０５５５】
Ｉ／Ｏ割り込み
Ｉ／Ｏ割り込み要求を生じさせる条件は、ＣＰＵ内のアクティビティとは非同期であり、２つ以上の条件が同時に発生する可能性がある。条件は、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬもしくはＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬによってクリアされるか、またはＩ／Ｏシステム・リセットによってリセットされるまでサブチャネルにて保たれる。
【０５５６】
Ｉ／Ｏ割り込み条件がチャネル・サブシステムによって認識され、サブチャネルにて示された場合、サブチャネルにて指定されるＩ／Ｏ割り込みサブクラスに関して、Ｉ／Ｏ割り込み要求がペンディングにされる。割り込みがペンディングにされるＩ／Ｏ割り込みサブクラスは、ＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬを利用したプログラム制御の下にある。ペンディングＩ／Ｏ割り込みは、そのＩ／Ｏ割り込みサブクラスからの割り込みに対応している任意のＣＰＵによって受け取られるとよい。各ＣＰＵは、８つのＩ／Ｏ割り込みサブクラスのそれぞれに対する当該ＣＰＵの有効化を制御する８つのマスク・ビットを制御レジスタ６内に有し、Ｉ／Ｏマスク、すなわちＰＳＷ（ｐｒｏｇｒａｍ  ｓｔａｔｕｓ  ｗｏｒｄ：プログラム・ステータス・ワード）内のビット６が、ＣＰＵのマスタＩ／Ｏ割り込みマスクである。
【０５５７】
ＣＰＵにてＩ／Ｏ割り込みが発生すると、Ｉ／Ｏ割り込みコードがそのＣＰＵのＩ／Ｏ通信エリアに格納され、Ｉ／Ｏ割り込み要求はクリアされる。Ｉ／Ｏ割り込みコードは、割り込みがペンディングしていたサブチャネルを識別する。続いて、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬまたはＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬによって、割り込み要求の生成をもたらしている条件が、明示的にサブチャネルから読み出されるとよい。
【０５５８】
さらに、ペンディングＩ／Ｏ割り込み要求は、対応するＩ／Ｏ割り込みサブクラスは有効化されているがＰＳＷのＩ／Ｏ割り込みが無効化されている場合、ＴＥＳＴ  ＰＥＮＤＩＮＧ  ＩＮＴＥＲＲＵＰＴＩＯＮによってクリアされるとよく、または対応するＩ／Ｏ割り込みサブクラスからのＩ／Ｏ割り込みに関してＣＰＵが無効化されている場合、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬによってクリアされるとよい。さらに、ペンディングＩ／Ｏ割り込み要求は、ＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬによってクリアされ得る。ＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬおよびＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬはどちらも、サブチャネルにて保たれている割り込み条件もクリアする。
【０５５９】
通常は、割り込み要求がＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬによってクリアされない限り、プログラムは、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬを発行して、動作の実行に関する情報を取得する。
【０５６０】
ＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬ
指示されたサブチャネルがクリアされ、指示されたサブチャネルにおいて現在の開始または停止機能があればそれが終了され、指示されたサブチャネルおよび関連するデバイスにてクリア機能を非同期的に実行するようチャネル・サブシステムが伝達される。
【０５６１】
汎用レジスタ１は、クリアされるサブチャネルを指示するサブシステム識別ワード（ＳＩＤ）を含む。
【０５６２】
開始または停止機能が進行中であれば、その機能はサブチャネルにて終了される。
【０５６３】
サブチャネルは、ステータス・ペンディングではなくなる。サブチャネルがクリア・ペンディングにされることを除いて、ＳＣＳＷのアクティビティ制御フィールド内に示されるすべてのアクティビティが、サブチャネルにてクリアされる。この命令の実行により実行されるクリア機能を除いて、ＳＣＳＷの機能制御フィールド内に示される進行中のあらゆる機能が、サブチャネルにてクリアされる。
【０５６４】
サブチャネルがトランスポート・モードで動作していて、条件コード２が設定されている場合、ＣＰＵは、問い合わせ機能を非同期的に実行するようチャネル・サブシステムに伝達し、命令を終了するとよい。
【０５６５】
チャネル・サブシステムは、クリア機能を非同期的に実行するよう伝達される。クリア機能については、下記「関連機能」のセクションに要約されており、さらにその後詳細に記載される。
【０５６６】
上記のアクションがとられたことを示すために、条件コード０が設定される。
【０５６７】
関連機能
ＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬの実行後、チャネル・サブシステムは、クリア機能を非同期的に実行する。条件が許せば、チャネル・サブシステムは、チャネルパスを選択し、Ｉ／Ｏ動作があればそれを終了するためにデバイスにクリア信号を発行することを試行する。続いて、サブチャネルはステータス・ペンディングになる。チャネル・サブシステムが遭遇する、デバイスへのクリア信号の発行を妨げる条件によって、サブチャネルがステータス・ペンディングになることが妨げられることはない。
【０５６８】
クリア機能の実行の結果としてサブチャネルがステータス・ペンディングになるとき、関連するデバイスを用いるデータ転送は、あったとしても終了されている。結果として生じるステータスがＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬによってクリアされるときに格納されるＳＣＳＷは、１として格納されたクリア機能ビットを有する。クリア信号がデバイスに発行されたことをチャネル・サブシステムが判断できる場合、クリア・ペンディング・ビットがゼロとしてＳＣＳＷに格納される。そうでない場合、クリア・ペンディング・ビットは１として格納され、遭遇した条件をより詳しく記述するほかのインジケーションが提供される。
【０５６９】
ＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬによって終了される開始機能に関しては、測定データは蓄積されず、サブチャネルの拡張ステータス・ワードにデバイス接続時間は格納されない。
【０５７０】
特殊条件
サブチャネルがＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬに関して動作不能である場合、条件コード３が設定され、ほかのアクションはとられない。サブチャネルがチャネル・サブシステムにおいて提供されていない場合、または有効なデバイス番号が割り振られていない場合、または有効化されていない場合、サブチャネルは、ＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬに関して動作不能である。
【０５７１】
ＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬは、下記に記載または列挙されるプログラム例外に遭遇することがある。
【０５７２】
複数サブチャネル・セット・ファシリティがインストールされていない場合、汎用レジスタ１のビット３２〜４７は、０００１ｈｅｘを含まなければならず、そうでない場合、オペランド例外が認識される。
【０５７３】
複数サブチャネル・セット・ファシリティがインストールされている場合、汎用レジスタ１のビット３２〜４４は、ゼロを含まなければならず、ビット４５〜４６は、有効な値を含まなければならず、ビット４７は、値１を含まなければならず、そうでない場合、オペランド例外が認識される。
【０５７４】
結果として生じる条件コード：
０  機能開始済み
１  ―
２  ―
３  動作不能
プログラム例外：
・オペランド
・特権動作
【０５７５】
クリア機能
ＣＬＥＡＲ  ＳＵＢＣＨＡＮＮＥＬの実行後、チャネル・サブシステムはクリア機能を実行する。クリア機能の実行は、（１）パス管理動作を実行すること、（２）サブチャネルのフィールドを変更すること、（３）関連するデバイスにクリア信号を発行すること、および（４）サブチャネルをステータス・ペンディングにさせ、クリア機能の完了を示させることにある。
【０５７６】
クリア機能パス管理
パス管理動作は、関連するサブチャネルのチャネルパス条件を検査して、クリア信号を関連するデバイスに発行できる利用可能なチャネルパスの選択を試行するために、クリア機能の一環として実行される。
【０５７７】
チャネルパス条件は以下の順序で検査される。
【０５７８】
１．チャネル・サブシステムが、伝達されるべきデバイスとアクティブに通信しているか、またはそのデバイスとのアクティブな通信の確立を試行している場合、使用中のチャネルパスが選択される。
【０５７９】
２．チャネル・サブシステムが、伝達されるべきデバイスからビジー状態終了インジケーション（割り込み条件を認識させない）を受け取る最中であり、関連するサブチャネルがいずれのチャネルパスに対してもアリージャンス（ａｌｌｅｇｉａｎｃｅ）を有さない場合、使用中のチャネルパスが選択される。
【０５８０】
３．関連するサブチャネルが、チャネルパスに対し専用アリージャンスを有する場合、そのチャネルパスが選択される。
【０５８１】
４．関連するサブチャネルが、１つ以上のチャネルパスに対しワーキング・アリージャンスを有する場合、それらのチャネルパスのうちの１つが選択される。
【０５８２】
５．関連するサブチャネルが、いずれのチャネルパスに対してもアリージャンスを有さず、最後に使用されたチャネルパスが示され、かつそのチャネルパスが選択可能である場合、そのチャネルパスが選択される。そのチャネルパスが選択可能でない場合、チャネルパスは選択されないか、または選択可能なチャネルパスのセットがあればそこからチャネルパスが選択される（最後に使用されたチャネルパスが示されなかったかのように）。
【０５８３】
６．関連するサブチャネルが、いずれのチャネルパスに対してもアリージャンスを有さず、最後に使用されたチャネルパスが示されず、かつ選択可能な１つ以上のチャネルパスが存在する場合、それらのチャネルパスのうちの１つが選択される。
【０５８４】
上記に列挙したチャネルパス条件がいずれも当てはまらない場合、チャネルパスは選択されない。
【０５８５】
第４項目、指定の条件下の第５項目、および第６項目の場合、チャネル・サブシステムは、チャネルパスのセットからチャネルパスを選択する。これらの場合には、チャネル・サブシステムは、以下の条件が当てはまらないことを条件として、チャネルパスの選択を試行するとよい。
【０５８６】
１．チャネルパス終了条件がチャネルパスに関して存在する。
【０５８７】
２．パラレルまたはＥＳＣＯＮ（ＩＢＭ社の登録商標）チャネルパスの場合：別のサブチャネルが、チャネルパスに対してアクティブ・アリージャンスを有する。
【０５８８】
ＦＩＣＯＮ（ＩＢＭ社の登録商標）チャネルパスの場合：チャネルパスは、現在、アクティブなコンカレント通信を有することができる最大数のサブチャネルとアクティブに通信するために使用されている。
【０５８９】
３．伝達されるべきデバイスが、タイプ１制御ユニットに連結されており、同じ制御ユニットに連結されている別のデバイスのサブチャネルが、同じチャネルパスに対しアリージャンスを有する。ただし、アリージャンスがワーキング・アリージャンスであり一次ステータスがサブチャネルによって受け取られている場合を除く。
【０５９０】
４．伝達されるべきデバイスが、タイプ３制御ユニットに連結されており、同じ制御ユニットに連結されている別のデバイスのサブチャネルが、同じチャネルパスに対し専用アリージャンスを有する。
【０５９１】
クリア機能のサブチャネル変更
サブチャネルにおけるパス管理制御インジケーションは、クリア機能の実行中に変更される。事実上、この変更は、チャネルパスの選択の試行後、ただしクリア信号を発行するデバイスの選択の試行前に発生する。変更されるパス管理制御インジケーションは、以下のとおりである。
【０５９２】
１．サブチャネルにおける８つの可能なチャネルパスすべての状態が、サブチャネルに関して動作可能に設定される。
【０５９３】
２．最後に使用されたチャネルパスを示さないように、最後に使用されたパスのインジケーションがリセットされる。
【０５９４】
３．パス動作不能条件があれば、それがリセットされる。
【０５９５】
クリア機能の伝達および完了
チャネルパスの選択の試行およびパス管理制御フィールドの変更後、チャネル・サブシステムは、条件が許せば、クリア信号を発行するデバイスの選択を試行する。サブチャネル、および選択されたチャネルパスがあればそれに関連する条件が、（１）クリア信号の発行が試行されるかどうか、および（２）クリア信号を発行する試行が成功するかどうかに影響を及ぼす。これらの条件とは独立して、サブチャネルはその後ステータス・ペンディングに設定され、クリア機能の実行が完了する。これらの条件およびそのクリア機能への影響について、以下のとおり説明する。
【０５９６】
クリア信号の発行が試行されない：チャネル・サブシステムは、以下の条件のうちのいずれかが存在する場合、デバイスへのクリア信号の発行を試行しない。
【０５９７】
１．チャネルパスが選択されなかった。
【０５９８】
２．選択されたチャネルパスが、もはや選択可能でない。
【０５９９】
３．選択されたチャネルパスに関して、チャネルパス終了条件が存在する。
【０６００】
４．パラレルまたはＥＳＣＯＮ（ＩＢＭ社の登録商標）チャネルパスの場合：選択されたチャネルパスが、別のデバイスとアクティブに通信するために現在使用されている。ＦＩＣＯＮ（ＩＢＭ社の登録商標）チャネルパスの場合：選択されたチャネルパスは、現在、アクティブなコンカレント通信を有することができる最大数のデバイスとアクティブに通信するために使用されている。
【０６０１】
５．伝達されるべきデバイスが、タイプ１制御ユニットに連結されており、同じ制御ユニットに連結されている別のデバイスのサブチャネルが、同じチャネルパスに対しアリージャンスを有する。ただし、アリージャンスがワーキング・アリージャンスであり一次ステータスがサブチャネルによって受け取られている場合を除く。
【０６０２】
６．伝達されるべきデバイスが、タイプ３制御ユニットに連結されており、同じ制御ユニットに連結されている別のデバイスのサブチャネルが、同じチャネルパスに対し専用アリージャンスを有する。
【０６０３】
上記の条件のうちのいずれかが存在する場合、サブチャネルは、クリア・ペンディングのままとなり、ステータス・ペンディングに設定され、クリア機能の実行は完了する。
【０６０４】
クリア信号を発行する試行が成功しない：チャネル・サブシステムが、デバイスへのクリア信号の発行を試行すると、以下の条件が理由でその試行が成功しないこともある。
【０６０５】
１．チャネル・サブシステムがクリア信号を発行するデバイスの選択を試行すると、制御ユニットまたはデバイスがビジー条件を伝達する。
【０６０６】
２．チャネル・サブシステムがクリア信号を発行するデバイスの選択を試行すると、パス動作不能条件が認識される。
【０６０７】
３．チャネル・サブシステムがクリア信号の発行を試行すると、エラー条件に遭遇する。
【０６０８】
上記の条件のうちのいずれかが存在し、チャネル・サブシステムが、クリア信号を発行する試行が成功しなかったと判断するか、または試行が成功したかどうかを判断できない場合、サブチャネルはクリア・ペンディングのままとなり、ステータス・ペンディングに設定され、クリア機能の実行は完了する。
【０６０９】
クリア信号を発行する試行が成功：チャネル・サブシステムが、クリア信号を発行する試行が成功したと判断すると、サブチャネルはクリア・ペンディングでなくなり、ステータス・ペンディングに設定され、クリア機能の実行は完了する。サブチャネルがステータス・ペンディングになるとき、関連するデバイスを用いるＩ／Ｏ動作は、あったとしても終了されている。
【０６１０】
プログラミング・ノート：クリア機能の実行後、制御ユニット終了のみの場合を除いて、デバイスによってチャネル・サブシステムに提示される任意のゼロ以外のステータスが、非応答型アラート・ステータスとしてプログラムに渡される。制御ユニット終了のみまたはゼロ・ステータスから成る非応答型ステータスは、プログラムに提示されない。
【０６１１】
ＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬ
サブチャネル情報ブロック（ＳＣＨＩＢ）内に含まれる情報は、サブチャネルにおけるプログラム変更可能フィールドに入れられる。結果として、プログラムは、そのサブチャネルに関して、クリア、停止、再開および開始機能ならびに特定のＩ／Ｏサポート機能に関連するＩ／Ｏ処理の特定の側面に影響を与える。
【０６１２】
汎用レジスタ１は、ＳＣＨＩＢの特定のフィールドによって指定されるとおりに変更されるべきサブチャネルを指示する、サブシステム識別ワード（ＳＩＤ）を含む。第２オペランド・アドレスは、ＳＣＨＩＢの論理アドレスであり、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
【０６１３】
ＳＣＨＩＢ情報をサブチャネルに入れることにより影響を受ける可能性があるチャネル・サブシステム動作は、以下である。
【０６１４】
・Ｉ／Ｏ処理（Ｅフィールド）
【０６１５】
・割り込み処理（割り込みパラメータおよびＩＳＣフィールド）
【０６１６】
・パス管理（Ｄ、ＬＰＭおよびＰＯＭフィールド）
【０６１７】
・監視およびアドレス限界チェック（測定ブロック・インデックス、ＬＭおよびＭＭフィールド）
【０６１８】
・測定ブロック・フォーマット制御（Ｆフィールド）
【０６１９】
・拡張測定ワード・モード有効化（Ｘフィールド）
【０６２０】
・コンカレント・センス・ファシリティ（Ｓフィールド）
【０６２１】
・測定ブロック・アドレス（ＭＢＡ：Ｍｅａｓｕｒｅｍｅｎｔ−ｂｌｏｃｋ  ａｄｄｒｅｓｓ）
【０６２２】
ＳＣＨＩＢオペランドのワード１のビット０、１、６および７、ならびにワード６のビット０〜２８は、ゼロでなければならず、ワード１のビット９および１０は、両方１であってはならない。拡張Ｉ／Ｏ測定ブロック・ファシリティがインストールされ、フォーマット１測定ブロックが指定される場合、ワード１１のビット２６〜３１は、ゼロとして指定されなければならない。拡張Ｉ／Ｏ測定ブロック・ファシリティがインストールされていない場合、ワード６のビット２９は、ゼロとして指定されなければならず、そうでない場合、オペランド例外が認識される。拡張Ｉ／Ｏ測定ワード・ファシリティがインストールされていない場合、またはインストールされているが有効化されていない場合、ワード６のビット３０は、ゼロとして指定されなければならず、そうでない場合、オペランド例外が認識される。ＳＣＨＩＢの残りのフィールドは無視され、ＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬの処理に影響を及ぼさない。
【０６２３】
ＳＣＨＩＢからの情報がサブチャネルのプログラム変更可能フィールドに入れられたことを示すよう、条件コード０が設定される。ただし、指示されたサブチャネルにおけるデバイス番号有効ビット（Ｖ）がゼロである場合は別であり、その場合、条件コード０が設定され、ＳＣＨＩＢからの情報はプログラム変更可能フィールドに入れられない。
【０６２４】
特殊条件
サブチャネルがステータス・ペンディングである場合、条件コード１が設定され、ほかのアクションはとられない。
【０６２５】
クリア、停止、または開始機能がサブチャネルにて進行中の場合、条件コード２が設定され、ほかのアクションはとられない。
【０６２６】
サブチャネルがＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬに関して動作不能である場合、条件コード３が設定され、ほかのアクションはとられない。サブチャネルがチャネル・サブシステムにおいて提供されていない場合、サブチャネルはＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬに関して動作不能である。
【０６２７】
ＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬは、下記に記載または列挙されるプログラム例外に遭遇することがある。
【０６２８】
ＳＣＨＩＢのワード１において、ビット０、１、６および７はゼロでなければならず、アドレス限界チェック・ファシリティがインストールされている場合、ビット９および１０は両方１であってはならない。ＳＣＨＩＢのワード６において、ビット０〜２８はゼロでなければならない。そうでない場合、オペランド例外が認識される。
【０６２９】
拡張Ｉ／Ｏ測定ブロック・ファシリティがインストールされ、フォーマット１測定ブロックが指定される場合、ワード１１のビット２６〜３１は、ゼロとして指定されなければならず、そうでない場合、オペランド例外が認識される。拡張Ｉ／Ｏ測定ブロック・ファシリティがインストールされていない場合、ワード６のビット２９は、ゼロとして指定されなければならず、そうでない場合、オペランド例外が認識される。拡張Ｉ／Ｏ測定ワード・ファシリティがインストールされていない場合、またはインストールされているが有効化されていない場合、ワード６のビット３０は、ゼロとして指定されなければならず、そうでない場合、オペランド例外が認識される。
【０６３０】
複数サブチャネル・セット・ファシリティがインストールされていない場合、汎用レジスタ１のビット３２〜４７は、０００１ｈｅｘを含まなければならず、そうでない場合、オペランド例外が認識される。
【０６３１】
複数サブチャネル・セット・ファシリティがインストールされている場合、汎用レジスタ１のビット３２〜４４は、ゼロを含まなければならず、ビット４５〜４６は、有効な値を含まなければならず、ビット４７は、値１を含まなければならず、そうでない場合、オペランド例外が認識される。
【０６３２】
第２オペランドは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。ＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬの実行は、すべてのアドレス指定および保護例外に基づき抑制される。
【０６３３】
結果として生じる条件コード：
０  機能完了
１  ステータス・ペンディング
２  ビジー
３  動作不能
プログラム例外：
・アクセス（フェッチ、オペランド２）
・オペランド
・特権動作
・指定
【０６３４】
プログラミング・ノート：
１．関連するサブチャネルが無効化されている間に、デバイスがＩ／Ｏエラー・アラートを伝達すると、チャネル・サブシステムは、クリア信号をデバイスに発行し、Ｉ／Ｏ割り込み条件を生成せずにＩ／Ｏエラー・アラート・インジケーションを破棄する。
【０６３５】
２．関連するサブチャネルが無効化されている間に、デバイスが非応答型ステータスを提示すると、そのステータスは、Ｉ／Ｏ割り込み条件を生成することなくチャネル・サブシステムによって破棄される。なお、提示されたステータスがユニット・チェックを含む場合、チャネル・サブシステムは、関連するサブチャネルに対しクリア信号を発行し、Ｉ／Ｏ割り込み条件を生成しない。これは、サブチャネルを有効化するためにプログラムがＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬを使用する場合、考慮に入れられるべきである。例えば、サブチャネルが無効化状態になったときに存在した関連するデバイス上の媒体は、取り替えられていることもあり得るため、プログラムは、その媒体の完全性を検証するべきである。
【０６３６】
３．ＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬが条件コード０を設定すると、その後プログラムがＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬを発行してサブチャネルのコンテンツを調べることが推奨される。ＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬの使用は、指示されたサブチャネルが変更されたか否かを判断する方法である。ＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬによって条件コード０が設定されるのに続いて、サブチャネルを調べない場合、結果として、プログラムが予期しないような条件が発生し得る。
【０６３７】
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ
チャネル・サブシステムが、関連するデバイスに関して開始機能を非同期的に実行するよう伝達され、指示されたＯＲＢ内に含まれる実行パラメータが、指示されたサブチャネルに置かれる。
【０６３８】
汎用レジスタ１は、開始されるサブチャネルを指示するサブシステム識別ワードを含む。第２オペランド・アドレスは、ＯＲＢの論理アドレスであり、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
【０６３９】
ＯＲＢ内に含まれる実行パラメータは、サブチャネルに置かれる。
【０６４０】
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬが実行され、サブチャネルが二次ステータスのみを伴うステータス・ペンディングであり、拡張ステータス・ワード・フォーマット・ビット（Ｌ）がゼロである場合、ステータス・ペンディング条件はサブチャネルにて破棄される。
【０６４１】
サブチャネルは、開始ペンディングにされ、開始機能がサブチャネルにて示される。第２オペランドが、コマンド・モードＯＲＢを指示すると、サブチャネルはコマンド・モードにとどまる。第２オペランドが、トランスポート・モードＯＲＢを指示すると、サブチャネルはトランスポート・モードに入る。サブチャネルがトランスポート・モードに入ると、以前の専用アリージャンスが存在しなければＬＰＵＭがゼロに設定され、そうでない場合ＬＰＵＭは変更されない。
【０６４２】
条件コード０の設定より論理的に前に、サブチャネルにパス動作不能条件があれば、クリアされる。
【０６４３】
チャネル・サブシステムは、開始機能を非同期的に実行するよう伝達される。開始機能については、下記「関連機能」のセクションに要約されており、その後詳細に記載される。
【０６４４】
上記のアクションがとられたことを示すために、条件コード０が設定される。
【０６４５】
関連機能
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬの実行後、チャネル・サブシステムは、開始機能を非同期的に実行する。
【０６４６】
すべてゼロを含まなければならないフィールド以外のＯＲＢのコンテンツは、有効性をチェックされる。一部のモデルでは、ゼロを含まなければならないＯＲＢのフィールドは、命令の実行中ではなく、非同期的にチェックされる。無効なフィールドが非同期的に検出されると、サブチャネルは、一次、二次、およびアラート・ステータスを伴い、遅延条件コード１およびプログラム・チェックが示された状態でステータス・ペンディングになる。この状況では、Ｉ／Ｏ動作またはＩ／Ｏ動作のチェーンは、デバイスにて開始されず、ＳＣＳＷがＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬの実行によってクリアされると、条件が、１として格納される開始ペンディング・ビットによって示される。
【０６４７】
一部のモデルでは、パス利用可能性が、命令の実行中ではなく、非同期的にテストされる。いずれのチャネルパスも選択可能でない場合、サブチャネルは、一次および二次ステータスを伴い、遅延条件コード３が示された状態でステータス・ペンディングになる。Ｉ／Ｏ動作またはＩ／Ｏ動作のチェーンは、デバイスにて開始されず、ＳＣＳＷがＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬの実行によってクリアされると、この条件が、１として格納された開始ペンディング・ビットによって示される。
【０６４８】
条件が許せば、チャネルパスが選択され、ＯＲＢ内で指示されているチャネル・プログラムの実行が開始される。
【０６４９】
特殊条件
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬが実行されるときにサブチャネルがステータス・ペンディングである場合、条件コード１が設定され、ほかのアクションはとられない。一部のモデルでは、サブチャネルが二次ステータスのみを伴うステータス・ペンディングである場合、条件コード１は設定されず、代わりにステータス・ペンディング条件は破棄される。
【０６５０】
開始、停止、またはクリア機能がサブチャネルにて現在進行中の場合、条件コード２が設定され、ほかのアクションはとられない。
【０６５１】
サブチャネルがＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬに関して動作不能である場合、条件コード３が設定され、ほかのアクションはとられない。サブチャネルがチャネル・サブシステムにおいて提供されていない場合、または有効なデバイス番号が関連付けられていない場合、または有効化されていない場合、サブチャネルは、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬに関して動作不能である。
【０６５２】
一部のモデルでは、いずれのチャネルパスも選択可能でない場合も、サブチャネルは、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬに関して動作不能である。これらのモデルでは、利用可能なチャネルパスがないことが、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬ実行の一環として検出される。ほかのモデルでは、チャネルパス利用可能性は、非同期的な開始機能の一環としてのみテストされる。
【０６５３】
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬは、下記に記載または列挙されるプログラム例外に遭遇することがある。
【０６５４】
コマンド・モードＯＲＢのワード１において、ビット２６〜３０はゼロでなければならず、コマンド・モードＯＲＢのワード２において、ビット０はゼロでなければならない。そうでない場合、一部のモデルでは、オペランド例外が認識される。ほかのモデルでは、非同期的な開始機能の一環として、プログラム・チェックを示すＩ／Ｏ割り込み条件が生成される。
【０６５５】
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬはさらに、下記に列挙されるプログラム例外に遭遇することがある。
【０６５６】
複数サブチャネル・セット・ファシリティがインストールされていない場合、汎用レジスタ１のビット３２〜４７は、０００１ｈｅｘを含まなければならず、そうでない場合、オペランド例外が認識される。
【０６５７】
複数サブチャネル・セット・ファシリティがインストールされている場合、汎用レジスタ１のビット３２〜４４は、ゼロを含まなければならず、ビット４５〜４６は、有効な値を含まなければならず、ビット４７は、値１を含まなければならず、そうでない場合、オペランド例外が認識される。
【０６５８】
第２オペランドは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬの実行は、すべてのアドレス指定および保護例外に基づき抑制される。
【０６５９】
結果として生じる条件コード：
０  機能開始済み
１  ステータス・ペンディング
２  ビジー
３  動作不能
プログラム例外：
・アクセス（フェッチ、オペランド２）
・オペランド
・特権動作
・指定
【０６６０】
開始機能および再開機能
開始および再開機能は、後述のＩ／Ｏ動作を開始する。開始機能は、コマンド・モードまたはトランスポート・モードのいずれかで動作しているサブチャネルに適用される。再開機能は、コマンド・モードで動作しているサブチャネルのみに適用される。
【０６６１】
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬおよびＲＥＳＵＭＥ  ＳＵＢＣＨＡＮＮＥＬの実行後、チャネル・サブシステムは、それぞれ開始および再開機能を実行して、関連するデバイスを用いたＩ／Ｏ動作を開始する。開始または再開機能の実行は、（１）パス管理動作を実行すること、（２）関連するデバイスを用いたＩ／Ｏ動作またはＩ／Ｏ動作のチェーンを実行すること、および（３）サブチャネルをステータス・ペンディングにさせ、開始機能の完了を示させることから成る。開始機能は、チャネル・プログラムの実行を開始し、チャネル・プログラムは、ＯＲＢ内で指示され、さらにＯＲＢは、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬのオペランドとして指示される。これは、再開機能とは対照的であり、再開機能は、中断されているチャネル・プログラムがあればその実行を、中断をもたらしたＣＣＷから開始する。そうでない場合、再開機能は開始機能であるかのように実行される。
【０６６２】
開始機能および再開機能のパス管理
デバイスを選択して当該デバイスを用いたＩ／Ｏ動作を開始するために使用できる、利用可能なチャネルパスを選択するために、パス管理動作が、開始または再開機能のいずれかの実行中、チャネル・サブシステムによって実行される。とられるアクションは以下のとおりである。
【０６６３】
１．現在、サブチャネルが開始ペンディングかつデバイス・アクティブである場合、開始機能は、先行する開始機能の二次ステータスが関連するデバイスから受け取られ、サブチャネルが開始ペンディングのみにされるまで、サブチャネルにてペンディングのままとなる。ステータスが受け取られ、アラート割り込み条件を記述するものでなければ、サブチャネルはステータス・ペンディングにされず、続いて、ペンディングの開始機能の実行が開始される。ステータスがアラート割り込み条件を記述するものであれば、サブチャネルは、二次およびアラート・ステータスを伴うステータス・ペンディングになり、ペンディングの開始機能は開始されず、遅延条件コード１が設定され、開始ペンディング・ビットは１のままとなる。現在、サブチャネルが開始ペンディングのみであれば、開始機能の実行が後述のとおり開始される。
【０６６４】
２．サブチャネルにてチャネルパスに対し専用アリージャンスが存在する場合、チャネル・サブシステムは、そのパスをデバイス選択のために選択する。デバイスの選択を試行している間にビジー条件に遭遇し、サブチャネルに専用アリージャンスが存在する場合、開始機能は、そのチャネルパスに関してビジーの内部インジケーションがリセットされるまで、ペンディングのままとなる。ビジーの内部インジケーションがリセットされると、そのチャネルパス上で、ペンディングの開始機能の実行が開始される。
【０６６５】
３．選択可能なチャネルパスがなく、サブチャネルにおいてチャネルパスに対する専用アリージャンスが存在しなければ、チャネルパスは選択されない。
【０６６６】
４．選択可能なチャネルパスがすべて試行され、そのうち１つ以上が、ほかのデバイスとアクティブに通信するために使用されている場合、あるいは、チャネル・サブシステムが当該チャネルパスのうちの１つ以上における制御ユニット・ビジーもしくはデバイス・ビジー条件のいずれか、または当該チャネルパスのうちの１つ以上におけるそうした条件の組み合わせに遭遇した場合、開始機能は、必要に応じてチャネルパス、制御ユニット、またはデバイスが利用可能になるまで、サブチャネルにてペンディングのままとなる。
【０６６７】
５．（１）開始機能が、タイプ１制御ユニットに連結されているデバイスとのチャネルパス上で開始されるものであり、（２）デバイスのサブチャネルが同じチャネルパスに対する専用アリージャンスを有するか、または同じチャネルパスに対するワーキング・アリージャンスを有する、ほかのデバイスであって、当該サブチャネルに関して一次ステータスが受領されていない、該ほかのデバイスが、同じ制御ユニットに連結されていない場合、そのチャネルパスは、選択可能であれば選択され、そうでない場合、そのチャネルパスは選択されない。なお、デバイスへの別のチャネルパスが選択可能であり、上述のアリージャンスが存在しなければ、そのチャネルパスが選択される。ほかに選択可能なチャネルパスがなければ、開始または再開機能は、必要に応じて、チャネルパスが利用可能になるまでペンディングのままとなる。
【０６６８】
６．デバイスがタイプ３制御ユニットに連結されていて、かつ、デバイスのサブチャネルが同じチャネルパスに対して専用アリージャンスを有するほかの少なくとも１つのデバイスが、同じ制御ユニットに連結されている場合、選択可能な別のチャネルパスが選択されてもよく、または該ほかのデバイスの専用アリージャンスがクリアされるまで、開始機能はペンディングのままとなる。
【０６６９】
７．チャネルパスが選択されていて、ペンディングのＣＣＷチャネル・プログラムの第１コマンドの実行を開始するため、またはペンディングのＴＣＷチャネル・プログラムのＴＣＣＢを輸送するためのデバイス選択中に、ビジー・インジケーションが受領されると、ビジー・インジケーションが受領されたチャネルパスは、ビジーの内部インジケーションがリセットされるまで、（受領されたデバイス・ビジーまたは制御ユニット・ビジー・インジケーションに応じて）当該デバイスまたは制御ユニットに対して再び使用されない。
【０６７０】
８．ＣＣＷチャネル・プログラムの場合は、開始に関して指定される、もしくは再開機能に関して暗示される第１コマンドの実行を開始するため、またはＴＣＷチャネル・プログラムの場合は、開始機能に関するＴＣＣＢの輸送を開始するために、デバイスの選択を試行する間、（上記アクション７に記載されたように）チャネル・サブシステムがビジー・インジケーションを受領すると、以下のアクションのうちの１つを実行する。
【０６７１】
ａ．デバイスがマルチパス・モードで動作するよう指定されており、受領されたビジー・インジケーションがデバイス・ビジーである場合、開始または再開機能は、ビジーの内部インジケーションがリセットされるまでペンディングのままとなる。
【０６７２】
ｂ．デバイスがマルチパス・モードで動作するよう指定されており、受領されたビジー・インジケーションが制御ユニット・ビジーである場合、またはデバイスが単一パス・モードで動作するよう指定されている場合、チャネル・サブシステムは、選択可能な代わりのチャネルパスを選択することでデバイスの選択を試行し、開始もしくは再開機能が開始されるか、またはデバイスの選択が選択可能なすべてのチャネルパスに対して試行されるまで、パス管理動作を継続する。選択可能なすべてのチャネルパスが選択された後に、開始または再開機能がチャネル・サブシステムによって開始されていなければ、開始または再開機能は、ビジーの内部インジケーションがリセットされるまでペンディングのままとなる。
【０６７３】
ｃ．サブチャネルが専用アリージャンスを有する場合、上記のアクション２が適用される。
【０６７４】
９．ＣＣＷチャネル・プログラムの第１コマンドを転送するため、またはＴＣＷチャネル・プログラムのＴＣＣＢを輸送するために選択を試行する間、デバイスが動作不能のようであり、対応するチャネルパスがサブチャネルに関して動作可能であれば、パス動作不能条件が認識され、サブチャネルにてチャネルパスの状態が、サブチャネルに関して動作可能からサブチャネルに関して動作不能に変化する。サブチャネルにパス動作不能条件がある場合、これは、サブチャネルが次にクリア・ペンディング、開始ペンディング、または再開ペンディング（サブチャネルが中断された場合）になるまで保たれ、その時点でパス動作不能条件がクリアされる。一方、対応するチャネルパスがサブチャネルに関して動作不能である場合、パス動作不能条件は認識されない。選択可能なチャネルパス上で第１コマンドまたはＴＣＣＢを転送するために選択を試行する間、デバイスが動作不能のようであれば、以下のアクションのうちの１つが発生する。
【０６７５】
ａ．そのチャネルパスに対して専用アリージャンスが存在すれば、それが選択可能な唯一のチャネルパスである。したがって、開始または再開機能を開始するさらなる試行は放棄され、割り込み条件が認識される。
【０６７６】
ｂ．専用アリージャンスが存在せず、試行されていない選択可能なほかのチャネルパスがあれば、それらのチャネルパスのうちの１つが、デバイス選択を試行してＣＣＷチャネル・プログラムの第１コマンドまたはＴＣＷチャネル・プログラムのＴＣＣＢを転送するために選択される。
【０６７７】
ｃ．専用アリージャンスが存在せず、試行されていない選択可能なほかのチャネルパスがなく、試行されたチャネルパスのうちの少なくとも１つにおいてデバイスが動作可能のようである場合、開始または再開機能は、必要に応じてチャネルパス、制御ユニット、またはデバイスが利用可能になるまで、サブチャネルにてペンディングのままとなる。
【０６７８】
ｄ．専用アリージャンスが存在せず、試行されていない選択可能なほかのチャネルパスがなく、試行されたすべてのチャネルパスにおいてデバイスが動作不能のようである場合、開始または再開機能を開始しようとするさらなる試行は放棄され、割り込み条件が認識される。
【０６７９】
１０．サブチャネルがアクティブであり、デバイスを用いたＩ／Ｏ動作が開始されるとき、サブチャネルにてマルチパス・モードが指定されていなければ、すべてのデバイス選択はＬＰＵＭインジケーションに従って発生する。例えば、ＣＣＷチャネル・プログラムに関してコマンド・チェーニングが指定されている場合、チャネル・サブシステムは、Ｉ／Ｏ動作のチェーンを記述する第１コマンドおよびその後のすべてのコマンドを同じチャネルパス上で転送する。
【０６８０】
Ｉ／Ｏ動作の実行
チャネルパスが選択された後、チャネル・サブシステムは、条件が許せば、関連するデバイスを用いたＩ／Ｏ動作の実行を開始する。第１Ｉ／Ｏ動作の開始および実行に、さらなるＩ／Ｏ動作の実行が続くとよい。
【０６８１】
コマンド・モードで動作しているサブチャネルに関して、チャネル・サブシステムは、書き込み（ｗｒｉｔｅ）、読み取り（ｒｅａｄ）、逆読み（ｒｅａｄ  ｂａｃｋｗａｒｄ）、制御（ｃｏｎｔｒｏｌ）、センス（ｓｅｎｓｅ）、センスＩＤ（ｓｅｎｓｅ  ＩＤ）、およびチャネル内転送（ｔｒａｎｓｆｅｒ  ｉｎ  ｃｈａｎｎｅｌ）の７タイプのコマンドを実行することができる。チャネル内転送以外の各コマンドは、対応するＩ／Ｏ動作を開始する。サブチャネルにてチャネル・プログラム実行が中断されている期間を除いて、サブチャネルは、第１コマンドを受け取ってから、サブチャネルにて一次割り込み条件が認識されるまでアクティブである。一次割り込み条件が、第１コマンドを受け取るよりも前に認識されると、サブチャネルはアクティブにならない。通常は、一次割り込み条件は、チャネル終了信号により、またはコマンド・チェーニングの場合はチェーンの最後のＣＣＷに関するチャネル終了信号により生じる。デバイスは、サブチャネルにて二次割り込み条件が認識されるまでアクティブである。通常は、二次割り込み条件は、デバイス終了信号により、またはコマンド・チェーニングの場合はチェーンの最後のＣＣＷに関するデバイス終了信号により生じる。
【０６８２】
トランスポート・モードで動作しているサブチャネルに関して、チャネル・サブシステムは、書き込み、読み取り、制御、センス、センスＩＤ、および問い合わせ（ｉｎｔｅｒｒｏｇａｔｅ）の６タイプのコマンドを実行のために輸送することができる。各コマンドは、対応するデバイス動作を開始する。１つ以上のコマンドが、ＴＣＣＢ内でＩ／Ｏデバイスに輸送されるとき、サブチャネルは、一次ステータスが提示されるまで開始ペンディングのままとなる。
【０６８３】
プログラミング・ノート：
単一パス・モードでは、Ｉ／Ｏ動作またはＩ／Ｏ動作のチェーンのためのコマンド、データ、およびステータスの転送はすべて、第１コマンドがデバイスに転送されたチャネルパス上で発生する。
【０６８４】
デバイスに動的再接続機能がインストールされている場合、Ｉ／Ｏ動作またはＩ／Ｏ動作のチェーンはマルチパス・モードで実行されるとよい。マルチパス・モードで動作するには、サブチャネルに関して、ＳＣＨＩＢのワード１のビット１３が１として指定されたＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬがあらかじめ実行されていなければならない。さらに、デバイスは、当該タイプのデバイスに適切なモデル依存の特定のコマンドを実行することによって、マルチパス・モード用に設定されなければならない。マルチパス・モード動作を処理するための全般的な手順は、以下のとおりである。
【０６８５】
１．セットアップ
ａ．設定されるマルチパス・グループのメンバとなる各チャネルパスに対して、マルチパス・モード設定タイプのコマンドのデバイスによる実行が成功しなければならず、さもなければ、マルチパス・モードの動作が、サブチャネルにて予測不能な結果を与えることもある。何らかの理由で、デバイスへの物理的に利用可能な１つ以上のチャネルパスがマルチパス・グループに含まれない場合、これらのチャネルパスは、サブチャネルがマルチパス・モードで動作している間、選択可能であってはならない。チャネルパスは、ＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬの実行前にＳＣＨＩＢにおいて、またはＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬの実行前にＯＲＢにおいて、対応するＬＰＭビットをゼロに設定することによって、選択不可能にすることができる。
【０６８６】
ｂ．マルチパス・モード設定タイプのコマンドがデバイスに転送されるとき、当該開始機能の実行のためにほかのチャネルパスが選択されることを回避するために、単一のチャネルパスのみが論理的に利用可能でなければならず、そうでない場合、チャネル・サブシステムにより２つ以上のチャネルパス上でデバイス・ビジー条件が検出されることもあり、これは、後のマルチパス・モード動作に関して予測不能な結果をもたらすこともある。このタイプのセットアップ手順は、マルチパス・グループのメンバーシップが変更される度に使用されるべきである。
【０６８７】
２．マルチパス・モードの終了
マルチパス・モードを終了して単一パス・モードで処理を継続するには、以下の２つの手順のうちのいずれかが使用されるとよい。
【０６８８】
ａ．マルチパス・モード解除タイプのコマンドが、マルチパス・グループの任意のチャネルパスに対して実行されるとよい。このコマンドの後には、（１）ＳＣＨＩＢのワード１のビット１３がゼロとして指定されたＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬの実行、または（２）ＬＰＭにおいて単一のチャネルパスのみ論理的に利用可能として指定することのいずれかが続かなければならない。デバイスが単一パス・モードで動作している間、開始機能は、複数のチャネルパスが選択可能なマルチパス・モードで動作しているサブチャネルにて実行されてはならない。さもなければ、その機能または後の開始機能に関して、サブチャネルにて予測不能な結果が発生し得る。
【０６８９】
ｂ．マルチパス・モード離脱タイプのコマンドが、マルチパス・グループの各チャネルパスに対して実行される（セットアップの逆）。このコマンドの後には、（１）ＳＣＨＩＢのワード１のビット１３がゼロとして指定されたＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬの実行、または（２）ＬＰＭにおいて単一のチャネルパスのみ論理的に利用可能として指定することのいずれかが続かなければならない。デバイスが単一パス・モードで動作している間、開始機能は、複数のチャネルパスが選択可能なマルチパス・モードで動作しているサブチャネルにて実行されてはならない。さもなければ、その機能または後の開始機能に関して、サブチャネルにて予測不能な結果が発生し得る。
【０６９０】
データのブロック化
Ｉ／Ｏデバイスによって記録されたデータがブロックに分けられる。ブロックの長さはデバイス次第である。例えば、ブロックは、カード、印字ライン、または磁気テープ上の連続した２つのギャップ間に記録された情報とすることができる。
【０６９１】
１つのＩ／Ｏ動作において転送可能な情報の最大量は、１ブロックである。Ｉ／Ｏ動作は、関連するメイン・ストレージ・エリアが使い果たされるか、またはブロックの終わりに達するか、どちらかが最初に発生したときに終了される。磁気テープ・ユニット上または照会用端末における書き込みなど、一部の動作に関しては、ブロックは規定されず、転送される情報の量は、プログラムによってのみ制御される。
【０６９２】
動作要求ブロック
動作要求ブロック（ＯＲＢ）は、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬのオペランドである。ＯＲＢは、その特定の開始機能を制御する際に使用されるパラメータを指定する。これらのパラメータには、割り込みパラメータ、サブチャネル・キー、第１ＣＣＷまたはＴＣＷのアドレス、動作制御ビット、優先度制御番号、および指示されたデバイスへのチャネルパスの論理的利用可能性の指定が含まれる。
【０６９３】
ＯＲＢのコンテンツは、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬの実行中、条件コード０の設定の前に、指示されたサブチャネルに置かれる。実行の結果、ゼロ以外の条件コードがもたらされる場合、ＯＲＢのコンテンツは、指示されたサブチャネルに置かれない。
【０６９４】
ＯＲＢアドレスの右端の２ビットはゼロであり、ＯＲＢをワード境界上に置かなければならず、そうでない場合、指定例外が認識される。ファイバ・チャネル拡張（ＦＣＸ）ファシリティがインストールされている場合、ＯＲＢのチャネル・プログラム・タイプ制御（Ｂ）（ワード１のビット１３）が、ＯＲＢによって指示されるチャネル・プログラムのタイプを指定する。Ｂがゼロである場合、ＯＲＢは、ＣＣＷチャネル・プログラムを指示する。Ｂが１である場合、ＯＲＢは、ＴＣＷチャネル・プログラムを指示する。ＦＣＸをサポートするＩ／Ｏデバイスのみが、ＴＣＷチャネル・プログラムを認識する。
【０６９５】
ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬの実行中、ＣＣＷチャネル・プログラムを指示するＯＲＢのコンテンツが、指示されたサブチャネルに置かれると、サブチャネルはコマンド・モードにとどまる。したがって、そのようなＯＲＢは、コマンド・モードＯＲＢとしても知られる。ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬの実行中、ＴＣＷチャネル・プログラムを指示するＯＲＢのコンテンツが、指示されたサブチャネルに置かれると、サブチャネルはトランスポート・モードに入る。したがって、そのようなＯＲＢは、トランスポート・モードＯＲＢとしても知られる。
【０６９６】
ＴＥＳＴ  ＰＥＮＤＩＮＧ  ＩＮＴＥＲＲＵＰＴＩＯＮ
サブチャネルにおけるペンディングＩ／Ｏ割り込みに関するＩ／Ｏ割り込みコードが、第２オペランド・アドレスによって指示される位置に格納され、ペンディングＩ／Ｏ割り込み要求がクリアされる。
【０６９７】
第２オペランド・アドレスは、ゼロ以外の場合、ワード０および１から成る２ワードＩ／Ｏ割り込みコードが格納される位置の論理アドレスである。第２オペランド・アドレスは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
【０６９８】
第２オペランド・アドレスがゼロであれば、ワード０〜２から成る３ワードＩ／Ｏ割り込みコードが、実位置１８４〜１９５に格納される。この場合、低アドレス保護およびキー制御保護は適用されない。
【０６９９】
第２オペランド・アドレスがゼロである場合のアクセス・レジスタ・モードでは、アクセス・レジスタ変換がアクセス・レジスタＢ２に対して発生するかどうかは予測不能である。変換が発生した場合、結果として生じるアドレス空間制御要素は使用されない。すなわち、割り込みコードはやはり実位置１８４〜１９５に格納される。
【０７００】
ペンディングＩ／Ｏ割り込み要求は、命令を実行しているＣＰＵの制御レジスタ６内のＩ／Ｏ割り込みサブクラス・マスクによって許可された、当該Ｉ／Ｏ割り込みサブクラスのみに関して受け取られる。制御レジスタ６によって許可されるＩ／Ｏ割り込み要求が存在しなければ、Ｉ／Ｏ割り込みコードは格納されず、第２オペランド位置は変更されず、条件コード０が設定される。
【０７０１】
ペンディングＩ／Ｏ割り込み要求が受け取られると、Ｉ／Ｏ割り込みコードが格納され、ペンディングＩ／Ｏ割り込み要求がクリアされ、条件コード１が設定される。格納されるＩ／Ｏ割り込みコードは、Ｉ／Ｏ割り込みが発生した場合に格納されるのと同じである。しかし、ＰＳＷは、Ｉ／Ｏ割り込みが発生するときにようにスワップされない。命令の実行中に格納されるＩ／Ｏ割り込みコードは、以下のとおり規定される。
【０７０２】
サブシステム識別ワード（ＳＩＤ）：
ＳＩＤのビット３２〜６３が、ワード０に入れられる。
【０７０３】
割り込みパラメータ：ワード１は、プログラムによって指定された４バイト・パラメータを含み、ＯＲＢまたはＰＭＣＷのワード０内でサブチャネルに渡される。デバイスがアラート・ステータスを提示し、割り込みパラメータが、ＳＴＡＲＴ  ＳＵＢＣＨＡＮＮＥＬまたはＭＯＤＩＦＹ  ＳＵＢＣＨＡＮＮＥＬの実行によってサブチャネルにあらかじめ渡されなかった場合、このフィールドはゼロを含む。
【０７０４】
割り込み識別ワード：ワード２は、格納される場合、割り込み識別ワードを含み、これはさらに、Ｉ／Ｏ割り込みのソースを識別する。ワード２は、第２オペランド・アドレスがゼロであるときのみ格納される。
【０７０５】
割り込み識別ワードは、以下のとおり規定される。
【０７０６】
Ａビット（Ａ）：割り込み識別ワードのビット０は、クリアされたペンディングＩ／Ｏ割り込み要求のタイプを指定する。ビット０がゼロである場合、Ｉ／Ｏ割り込み要求はサブチャネルに関連していた。
【０７０７】
Ｉ／Ｏ割り込みサブクラス（ＩＳＣ：Ｉ／Ｏ−Ｉｎｔｅｒｒｕｐｔｉｏｎ  Ｓｕｂｃｌａｓｓ）：割り込み識別ワードのビット・ポジション２〜４は、ペンディングＩ／Ｏ割り込み要求がクリアされたサブチャネルに関連するＩ／Ｏ割り込みサブクラスを指定する、０〜７の範囲の符号なし２進整数を含む。残りのビット・ポジションは保留され、ゼロとして格納される。
【０７０８】
特殊条件
ＴＥＳＴ  ＰＥＮＤＩＮＧ  ＩＮＴＥＲＲＵＰＴＩＯＮは、下記に記載または列挙されるプログラム例外に遭遇することがある。
【０７０９】
第２オペランドは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
【０７１０】
ＴＥＳＴ  ＰＥＮＤＩＮＧ  ＩＮＴＥＲＲＵＰＴＩＯＮの実行は、すべてのアドレス指定および保護例外に基づき抑制される。
【０７１１】
結果として生じる条件コード：
０  割り込みコードは格納されていない
１  割り込みコード格納済み
２  ―
３  ―
プログラム例外：
・アクセス（格納、オペランド２、第２オペランド・アドレスがゼロ以外のみ）
・特権動作
・指定
【０７１２】
プログラミング・ノート：
１．ＴＥＳＴ  ＰＥＮＤＩＮＧ  ＩＮＴＥＲＲＵＰＴＩＯＮは、Ｉ／Ｏ割り込みがマスク・オフされる場合、ゼロの第２オペランド・アドレスを用いてのみ実行されるべきである。さもなければ、Ｉ／Ｏ割り込みが発生すると、命令によって格納されるＩ／Ｏ割り込みコードが失われる可能性がある。ＴＥＳＴ  ＰＥＮＤＩＮＧ  ＩＮＴＥＲＲＵＰＴＩＯＮの後に獲得され、Ｉ／Ｏ割り込みのソースを識別するＩ／Ｏ割り込みコードも、実位置１８４〜１９５に格納され、命令によって格納されたＩ／Ｏ割り込みコードに取って代わる。
【０７１３】
２．第２オペランド・アドレスがゼロである場合のアクセス・レジスタ・モードでは、アクセス・レジスタ変換が発生しアクセス・レジスタがエラー状態である場合、アクセス例外が認識される。この例外は、Ｂ２フィールドをゼロにすること、または００００００００ｈｅｘ、０００００００１ｈｅｘ、またはその他任意の有効なコンテンツをアクセス・レジスタに入れることによって、防ぐことができる。
【０７１４】
ＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬ
指示されたサブチャネルの制御およびステータス情報が、指示されたＳＣＨＩＢに格納される。
【０７１５】
汎用レジスタ１は、情報が格納されるサブチャネルを指示するサブシステム識別ワードを含む。第２オペランド・アドレスは、ＳＣＨＩＢの論理アドレスであり、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
【０７１６】
拡張Ｉ／Ｏ測定ブロック・ファシリティがインストールされていない場合、ＳＣＨＩＢに格納される情報は、パス管理制御ワード、ＳＣＳＷ、およびモデルに依存する３ワードの情報から成る。拡張Ｉ／Ｏ測定ブロック・ファシリティがインストールされている場合、ＳＣＨＩＢに格納される情報は、パス管理制御ワード、ＳＣＳＷ、測定ブロック・アドレス・フィールド、およびモデルに依存する１ワードの情報から成る。
【０７１７】
ＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬの実行は、サブチャネルにおけるいかなる情報も変更しない。
【０７１８】
条件コード０は、指示されたサブチャネルの制御およびステータス情報がＳＣＨＩＢに格納されたことを示すために設定される。ＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬの実行の結果、条件コード０が設定される場合、ＳＣＨＩＢ内の情報が、サブチャネルの一貫した状態を示す。
【０７１９】
特殊条件
指示されたサブチャネルがＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬに関して動作不能である場合、条件コード３が設定され、ほかのアクションはとられない。サブチャネルがチャネル・サブシステムにおいて提供されていない場合、サブチャネルはＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬに関して動作不能である。
【０７２０】
ＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬは、下記に記載または列挙されるプログラム例外に遭遇することがある。
【０７２１】
複数サブチャネル・セット・ファシリティがインストールされていない場合、汎用レジスタ１のビット３２〜４７は、０００１ｈｅｘを含まなければならず、そうでない場合、オペランド例外が認識される。
【０７２２】
複数サブチャネル・セット・ファシリティがインストールされている場合、汎用レジスタ１のビット３２〜４４は、ゼロを含まなければならず、ビット４５〜４６は、有効な値を含まなければならず、ビット４７は、値１を含まなければならず、そうでない場合、オペランド例外が認識される。
【０７２３】
第２オペランドは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
【０７２４】
結果として生じる条件コード：
０  ＳＣＨＩＢ格納済み
１  ―
２  ―
３  動作不能
プログラム例外：
・アクセス（格納、オペランド２）
・オペランド
・特権動作
・指定
【０７２５】
プログラミング・ノート：
１．ＳＣＳＷに格納されるデバイス・ステータスは、デバイス・ビジー、制御ユニット・ビジー、または制御ユニット終了インジケーションを含むとよい。
【０７２６】
２．ＳＣＨＩＢに格納される情報はサブチャネルから取得される。ＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬ命令は、アドレス指定されたデバイスへの問い合わせをチャネル・サブシステムに行わせない。
【０７２７】
３．ＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬは、サブチャネルに存在する条件をサンプリングするためにいつでも実行でき、いかなるペンディング・ステータス条件のクリアも生じさせない。
【０７２８】
４．遅延を間にはさまずにＳＴＯＲＥ  ＳＵＢＣＨＡＮＮＥＬを繰り返し実行すること（例えば、サブチャネルが状態を変更したときの判断のため）は、回避されるべきである。その理由は、ＣＰＵによるサブチャネルのアクセスが繰り返されると、サブチャネルを更新するためのチャネル・サブシステムによるサブチャネルのアクセスを遅延させること、または妨げることがあるためである。
【０７２９】
ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬ
サブチャネルの制御およびステータス情報が、指示されたＩＲＢに格納される。
【０７３０】
汎用レジスタ１は、情報が格納されるサブチャネルを指示するサブシステム識別ワードを含む。第２オペランド・アドレスは、ＩＲＢの論理アドレスであり、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
【０７３１】
ＩＲＢに格納される情報は、ＳＣＳＷ、拡張ステータス・ワード、および拡張制御ワードから成る。
【０７３２】
サブチャネルがステータス・ペンディングであれば、ステータス制御フィールドのステータス・ペンディング・ビットが１として格納される。サブチャネルがステータス・ペンディングであるか否かは、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬが実行されるときに実行される機能に影響する。
【０７３３】
サブチャネルがステータス・ペンディングであり、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬが実行されると、上述の情報がＩＲＢに格納され、続いて、サブチャネルに存在する特定の条件およびインジケーションがクリアされる。サブチャネルがトランスポート・モードであれば、これらの条件、特に開始機能のクリアによって、サブチャネルはコマンド・モードに入る。Ｉ／Ｏ割り込み要求がサブチャネルに関してペンディングである場合、要求はクリアされる。これらのアクションがとられたことを示すために、条件コード０が設定される。
【０７３４】
サブチャネルがステータス・ペンディングではなく、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬが実行されると、情報がＩＲＢに格納され、いずれの条件もインジケーションもクリアされない。これらのアクションがとられたことを示すために、条件コード１が設定される。
【０７３５】
特殊条件
サブチャネルがＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬに関して動作不能である場合、条件コード３が設定され、ほかのアクションはとられない。サブチャネルが提供されていない場合、または有効なデバイス番号が関連付けられていない場合、または有効化されていない場合、サブチャネルは、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬに関して動作不能である。
【０７３６】
ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬは、下記に記載または列挙されるプログラム例外に遭遇することがある。
【０７３７】
複数サブチャネル・セット・ファシリティがインストールされていない場合、汎用レジスタ１のビット３２〜４７は、０００１ｈｅｘを含まなければならず、そうでない場合、オペランド例外が認識される。
【０７３８】
複数サブチャネル・セット・ファシリティがインストールされている場合、汎用レジスタ１のビット３２〜４４は、ゼロを含まなければならず、ビット４５〜４６は、有効な値を含まなければならず、ビット４７は、値１を含まなければならず、そうでない場合、オペランド例外が認識される。
【０７３９】
第２オペランドは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
【０７４０】
ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬの実行がアドレス指定および保護例外に基づき終了されると、サブチャネルの状態は変更されない。
【０７４１】
結果として生じる条件コード：
０  ＩＲＢ格納済み；サブチャネルはステータス・ペンディング
１  ＩＲＢ格納済み；サブチャネルはステータス・ペンディングでない
２  ―
３  動作不能
プログラム例外：
・アクセス（格納、オペランド２）
・オペランド
・特権動作
・指定
【０７４２】
プログラミング・ノート：
１．ＳＣＳＷに格納されるデバイス・ステータスは、デバイス・ビジー、制御ユニット・ビジー、または制御ユニット終了インジケーションを含むとよい。
【０７４３】
２．ＩＲＢに格納される情報はサブチャネルから取得される。ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬ命令は、アドレス指定されたデバイスへの問い合わせをチャネル・サブシステムに行わせない。
【０７４４】
３．Ｉ／Ｏ割り込みが発生する場合、それは、サブチャネルにおけるステータス・ペンディング条件の結果として生じており、通常、ステータスをクリアするためにＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬが実行される。さらに、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬは、サブチャネルに存在する条件をサンプリングするために、その他任意のときに実行されてよい。
【０７４５】
４．開始機能が完了されたときの判断のためにＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬを繰り返し実行することは、回避されるべきである。その理由は、開始機能の完了が示されるかどうか分からない条件が存在するためである。例えば、チャネル・サブシステムが、別のサブチャネルが既にステータス・ペンディングであるため、（任意のサブチャネルに関して）インターフェース制御チェック（ＩＦＣＣ：ｉｎｔｅｒｆａｃｅ−ｃｏｎｔｒｏｌ−ｃｈｅｃｋ）条件を一時保留にしている場合であって、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬによりテストされている開始機能に選択可能な唯一のパスとして、ＩＦＣＣ条件を伴うチャネルパスしかない場合、開始機能は、別のサブチャネルにおけるステータス・ペンディング条件がクリアされるまで開始されず、該当するサブチャネルにてＩＦＣＣ条件を示させることもある。
【０７４６】
５．例えばサブチャネルが状態を変更したときの判断のために、遅延を間にはさまずにＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬを繰り返し実行することは、回避されるべきである。その理由は、ＣＰＵによるサブチャネルのアクセスが繰り返されると、チャネル・サブシステムによるサブチャネルのアクセスを遅延させること、または妨げることがあるためである。同じサブチャネルに対してほぼ同時に、複数のＣＰＵによってＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬが実行される場合も、同じ影響があり得、これも回避されるべきである。
【０７４７】
６．ＣＰＵによるＩ／Ｏ割り込み処理の優先度は、ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬの実行によって変更することができる。ＴＥＳＴ  ＳＵＢＣＨＡＮＮＥＬが実行され、指示されたサブチャネルがＩ／Ｏ割り込み要求ペンディングを有する場合、以前に確立された優先度に関係なく、そのＩ／Ｏ割り込み要求はクリアされ、ＳＣＳＷが格納される。残りのＩ／Ｏ割り込み要求の相対的優先度は変更されない。
【０７４８】
当業者であれば当然のことであるが、本発明の各側面は、システム、方法またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の側面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または本願明細書においてすべて概して「回路」、「モジュール」もしくは「システム」と呼ばれ得る、ソフトウェアおよびハードウェアの側面を兼ね備えた実施形態の形態をとり得る。さらに、本発明の各側面は、コンピュータ読み取り可能プログラム・コードが具現化された１つ以上のコンピュータ読み取り可能媒体（単数または複数）において具現化された、コンピュータ・プログラム製品の形態をとることもできる。
【０７４９】
１つ以上のコンピュータ読み取り可能媒体（単数または複数）の任意の組み合わせが利用され得る。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能ストレージ媒体とされ得る。コンピュータ読み取り可能ストレージ媒体は、例えば、限定はされないが、電子、磁気、光学、電磁気、赤外線もしくは半導体のシステム、装置もしくはデバイス、または前述のものの任意の適切な組み合わせとされ得る。コンピュータ読み取り可能ストレージ媒体のより具体的な例（包括的でないリスト）には、１つ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）もしくはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光学式ストレージ・デバイス、磁気ストレージ・デバイスまたは前述のものの任意の適切な組み合わせが含まれる。この文書の文脈では、コンピュータ読み取り可能ストレージ媒体は、命令実行システム、装置もしくはデバイスによって、またはそれに関連して使用されるプログラムを含むこと、または格納することができる任意の有形の媒体であればよい。
【０７５０】
以下、図３２を参照する。一例では、コンピュータ・プログラム製品１０００は、例えば、本発明の１つ以上の側面を提供および促進するよう、コンピュータ読み取り可能プログラム・コード手段または論理１００４を格納する、１つ以上の非一時的なコンピュータ読み取り可能ストレージ媒体１００２を含む。
【０７５１】
コンピュータ読み取り可能媒体上に具現化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述のものの任意の適切な組み合わせを含むがこれらに限定はされない、適切な媒体を使用して伝送され得る。
【０７５２】
本発明の側面の動作を実行するコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋または同様のものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語、アセンブラもしくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書かれていてよい。プログラム・コードは、完全にユーザのコンピュータ上で実行されても、部分的にユーザのコンピュータ上で実行されても、スタンド・アロン・ソフトウェア・パッケージとしても、部分的にユーザのコンピュータ上で、かつ部分的に遠隔コンピュータ上で実行されても、または完全に遠隔コンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）もしくは広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して遠隔コンピュータがユーザのコンピュータに接続されてもよく、または（例えばインターネット・サービス・プロバイダを使用しインターネットを介して）外部コンピュータに接続されてもよい。
【０７５３】
本発明の側面について、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本願明細書に記載する。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令により実装可能である。マシンを生じるよう、こうしたコンピュータ・プログラム命令が、汎用コンピュータ、専用コンピュータまたはその他プログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータまたはその他プログラム可能データ処理装置のプロセッサにより実行されて、フローチャートもしくはブロック図またはその両方の１つもしくは複数のブロックにおいて指定された機能／動作を実装する手段を作り出すようにすることもできる。
【０７５４】
さらに、特定の形で機能するようコンピュータ、その他プログラム可能データ処理装置、またはその他デバイスに指示することができるこうしたコンピュータ・プログラム命令は、コンピュータ読み取り可能媒体に格納されて、コンピュータ読み取り可能媒体に格納されたこの命令が、フローチャートもしくはブロック図またはその両方の１つもしくは複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を生じるようにすることもできる。
【０７５５】
さらに、コンピュータ・プログラム命令は、コンピュータ、その他プログラム可能データ処理装置またはその他デバイスにロードされて、コンピュータ、その他プログラム可能装置、またはその他デバイス上で一連の動作ステップが実行されるようにしてコンピュータで実装されるプロセスを生じさせ、コンピュータまたはその他プログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方の１つもしくは複数のブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【０７５６】
各図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能性、および動作を示す。この関連で、フローチャートまたはブロック図内の各ブロックは、指定の論理機能（単数または複数）を実装する１つ以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すこともできる。さらに、いくつかの代わりの実装では、ブロック内に示されている機能が、図面に示されているのとは異なる順序で生じてもよいということに留意されたい。例えば、関連する機能性次第で、連続して示されている２つのブロックが実際には事実上コンカレントに実行されてもよく、または、各ブロックが逆順で実行されることがあってもよい。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方の複数ブロックの組み合わせは、指定の機能もしくは動作を実行する専用ハードウェア・ベース・システム、または専用ハードウェアおよびコンピュータ命令の組み合わせにより実装することができるということに留意されたい。
【０７５７】
上記に加えて、本発明の１つ以上の側面は、顧客環境の管理を提案するサービス・プロバイダによって、提供、提案、展開、管理、サービス提供などが行われてもよい。例えば、サービス・プロバイダは、１以上の顧客に対して、本発明の１つ以上の側面を実行するコンピュータ・コードもしくはコンピュータ・インフラストラクチャまたはその両方を、作成、維持、サポートなどすることができる。見返りとして、サービス・プロバイダは、例えば契約もしくは手数料の取り決めもしくはその両方に基づき、顧客から支払いを受領してもよい。さらに、または代わりに、サービス・プロバイダは、１以上のサードパーティに対する宣伝コンテンツの販売からの支払いを受領してもよい。
【０７５８】
本発明の一側面において、アプリケーションが、本発明の１つ以上の側面を実行するために展開され得る。一例として、アプリケーションの展開は、本発明の１つ以上の側面を実行するよう動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【０７５９】
本発明のさらなる側面として、コンピューティング・システムとともに本発明の１つ以上の側面を実行することができるコンピュータ読み取り可能コードのコンピューティング・システムへの統合を含む、コンピューティング・インフラストラクチャの展開が行われてもよい。
【０７６０】
本発明のさらなる側面として、コンピュータ読み取り可能コードをコンピュータ・システムに統合することを含む、コンピューティング・インフラストラクチャを統合するプロセスが提供され得る。コンピュータ・システムは、コンピュータ読み取り可能媒体を含み、コンピュータ媒体は、本発明の１つ以上の側面を含む。コードは、コンピュータ・システムとともに、本発明の１つ以上の側面を実行できる。
【０７６１】
様々な実施形態について上述したが、これらは例でしかない。例えば、ほかのアーキテクチャのコンピューティング環境が、本発明の１つ以上の側面を組み入れ、使用することができる。例として、ｚ１９６サーバ以外のサーバが、本発明の１つ以上の側面を含むこと、使用すること、もしくはそれから利益を得ること、またはそのいずれかの組み合わせを行うことができる。さらに、ほかの命令もしくはコマンドまたはその両方が使用されてもよく、命令／コマンドは、本願明細書に記載されたものに対し、追加の、より少ない、もしくは異なる、またはそのいずれかの組み合わせの情報を含んでもよい。多数の変形が考えられる。
【０７６２】
さらに、ほかのタイプのコンピューティング環境が、本発明の１つ以上の側面から利益を得ることができる。例として、システム・バスを介してメモリ要素に直接または間接的に結合された少なくとも２つのプロセッサを含む、プログラム・コードの格納もしくは実行またはその両方に適したデータ処理システムを使用可能である。メモリ要素は、例えば、プログラム・コードを実際に実行する間に用いられるローカル・メモリ、大容量ストレージ、および、実行中にコードが大容量ストレージから読み出されなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的なストレージとなるキャッシュ・メモリを含む。
【０７６３】
入出力、すなわちＩ／Ｏデバイス（限定はされないが、キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ：コンパクト・ディスク）、ＤＶＤ、サム・ドライブ、およびその他のメモリ媒体などを含む）が、直接、または介在するＩ／Ｏコントローラを介して、システムに結合されることが可能である。ネットワーク・アダプタもシステムに結合されて、データ処理システムが、ほかのデータ処理システムまたは遠隔プリンタまたはストレージ・デバイスに、介在するプライベートまたはパブリック・ネットワークを介して結合された状態となることを可能にしてもよい。モデム、ケーブル・モデム、およびイーサネット（Ｒ）カードが、利用可能なタイプのネットワーク・アダプタのごく一部である。
【０７６４】
図３３を参照する。本発明の１つ以上の側面を実装するための、ホスト・コンピュータ・システム５０００の代表的なコンポーネントが描かれている。代表的なホスト・コンピュータ５０００は、コンピュータ・メモリ（すなわち中央ストレージ）５００２と通信している１つ以上のＣＰＵ５００１、ならびにストレージ媒体デバイス５０１１と、ほかのコンピュータまたはＳＡＮおよび同様のものと通信するためのネットワーク５０１０とに対するＩ／Ｏインターフェースを含む。ＣＰＵ５００１は、アーキテクチャ化された（ａｒｃｈｉｔｅｃｔｅｄ）命令セットおよびアーキテクチャ化された機能性を有するアーキテクチャに準拠している。ＣＰＵ５００１は、プログラム・アドレス（仮想アドレス）をメモリの実アドレスに変換するための動的アドレス変換（ＤＡＴ：ｄｙｎａｍｉｃ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ）５００３を有するとよい。ＤＡＴは通常、コンピュータ・メモリ５００２のブロックに対する後のアクセスがアドレス変換の遅延を必要としないよう、変換をキャッシュに入れるための変換ルックアサイド・バッファ（ＴＬＢ：ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）５００７を含む。通常、コンピュータ・メモリ５００２と、プロセッサ５００１との間にキャッシュ５００９が用いられる。キャッシュ５００９は、２つ以上のＣＰＵに利用可能な大型キャッシュ、および大型キャッシュと各ＣＰＵとの間にあるより小型かつ高速な（下位レベル）キャッシュを有する階層型としてもよい。一部の実装では、下位レベル・キャッシュは分割され、命令のフェッチおよびデータ・アクセスに別々の下位レベル・キャッシュを提供する。一実施形態では、命令は、キャッシュ５００９を介して、命令フェッチ・ユニット５００４によりメモリ５００２からフェッチされる。命令は、命令デコード・ユニット５００６においてデコードされ、１つまたは複数の命令実行ユニット５００８にディスパッチされる（一部の実施形態ではほかの命令とともに）。通常は、例えば演算実行ユニット、浮動小数点実行ユニット、および分岐命令実行ユニットなどのいくつかの実行ユニット５００８が用いられる。命令は、実行ユニットによって、命令が指定したレジスタまたはメモリのオペランドに必要に応じてアクセスして実行される。メモリ５００２のオペランドがアクセス（ロードまたは格納）される場合、通常は、ロード／格納ユニット５００５が、実行される命令の制御下でアクセスを処理する。命令は、ハードウェア回路または内部マイクロコード（ファームウェア）において、または両方の組み合わせによって実行され得る。
【０７６５】
上述のとおり、コンピュータ・システムは、ローカル（またはメイン）ストレージ内の情報、ならびにアドレス指定、保護、ならびに参照および変更記録を含む。アドレス指定の一部の側面は、アドレスのフォーマット、アドレス空間の概念、アドレスの様々なタイプ、および１つのタイプのアドレスが別のタイプのアドレスに変換される方法を含む。メイン・ストレージの一部は、永久的に割り振られたストレージ位置を含む。メイン・ストレージは、データの直接アドレス指定可能な高速アクセス・ストレージをシステムに提供する。データおよびプログラムはどちらも、（入力デバイスから）メイン・ストレージ内にロードされてから処理可能となる。
【０７６６】
メイン・ストレージは、キャッシュと呼ばれることもある、より小型かつ高速アクセスのバッファ・ストレージを１つ以上含むとよい。キャッシュは、通常、ＣＰＵまたはＩ／Ｏプロセッサと物理的に関連付けられる。物理構造および別個のストレージ媒体を使用することの影響は、性能に対するものを除き、一般に、プログラムにより観測することはできない。
【０７６７】
命令およびデータ・オペランドに対して、別々のキャッシュが維持されてもよい。キャッシュ内の情報は、キャッシュ・ブロックまたはキャッシュ・ライン（または略してライン）と呼ばれる、整数境界上にある連続したバイト内に維持される。モデルにより、キャッシュ・ラインのサイズをバイトで返すＥＸＴＲＡＣＴ  ＣＡＣＨＥ  ＡＴＴＲＩＢＵＴＥ命令が提供されることもある。さらに、モデルにより、データもしくは命令キャッシュへのストレージのプリフェッチ、またはキャッシュからのデータの解放をもたらす、ＰＲＥＦＥＴＣＨ  ＤＡＴＡおよびＰＲＥＦＥＴＣＨ  ＤＡＴＡ  ＲＥＬＡＴＩＶＥ  ＬＯＮＧ命令が提供されることもある。
【０７６８】
ストレージは、長い水平方向のビット列と見なされる。多くの動作に関して、ストレージへのアクセスは、左から右のシーケンスで進む。ビット列は、８ビットのユニットにさらに分割される。８ビット・ユニットは、バイトと呼ばれ、これは、すべての情報フォーマットの基本的な構成ブロックである。ストレージ内の各バイト位置は、当該バイト位置のアドレス、または簡単に言えばバイト・アドレスである、負ではない固有の整数によって識別される。隣接したバイト位置は、左の０から開始し、左から右のシーケンスで進む、連続したアドレスを有する。アドレスは、符号なし２進整数であり、２４、３１、または６４ビットである。
【０７６９】
情報は、ストレージと、ＣＰＵまたはチャネル・サブシステムとの間で、一度に１バイト、または複数バイトのグループで伝送される。別途指定されない限り、例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）では、ストレージ内の複数バイトのグループは、グループの左端バイトによってアドレス指定される。グループ内のバイト数は、実行される動作により暗示されるか、または明示的に指定される。ＣＰＵ動作において使用される場合、バイトのグループは、フィールドと呼ばれる。例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）では、バイトの各グループの中で、ビットは左から右のシーケンスで番号を付けられる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）では、左端ビットが「上位」ビットと呼ばれ、右端ビットが「下位」ビットと呼ばれることもある。なお、ビットの番号は、ストレージ・アドレスではない。バイトのみがアドレス指定可能である。ストレージ内のバイトの個々のビットに対して演算を行うために、バイト全体がアクセスされる。バイト内のビットは、（例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）では）左から右へ０から７の番号を付けられる。アドレス内のビットは、２４ビット・アドレスの場合は、８〜３１もしくは４０〜６３、または３１ビット・アドレスの場合は、１〜３１もしくは３３〜６３の番号を付けることができ、６４ビット・アドレスの場合は、０〜６３の番号が付けられる。その他任意の複数バイトの固定長フォーマット内で、フォーマットを構成するビットは０から開始して連続的に番号を付けられる。エラー検出、および好ましくは訂正のために、各バイトまたは複数バイトのグループとともに、１つ以上のチェック・ビットが伝送されるとよい。そのようなチェック・ビットは、マシンによって自動的に生成され、プログラムにより直接制御されることはできない。ストレージ容量は、バイト数で表現される。ストレージ・オペランド・フィールドの長さが命令の動作コードによって暗示される場合、フィールドは、固定長を有すると言われ、これは、１、２、４、８または１６バイトとすることができる。一部の命令に関しては、より大きなフィールドが暗示されることもある。ストレージ・オペランド・フィールドの長さが暗示されないが、明示的に指定されている場合、フィールドは、可変長を有すると言われる。可変長オペランドは、１バイトのインクリメント単位で（または一部の命令に関しては、２バイトの倍数またはその他の倍数で）長さが異なり得る。情報がストレージに入れられるとき、ストレージへの物理パスの幅が、格納されるフィールドの長さを超え得るとしても、指示されたフィールドに含まれる当該バイト位置のみのコンテンツが置き換えられる。
【０７７０】
情報の特定のユニットは、ストレージ内の整数境界上になければならない。境界のストレージ・アドレスが、バイト単位でのユニットの長さの倍数である場合、情報のユニットに関して、境界は整数であると言われる。整数境界上の２、４、８および１６バイトのフィールドには、特別な名称が与えられる。ハーフワードは、２バイト境界上の連続した２バイトのグループであり、命令の基本的な構成ブロックである。ワードは、４バイト境界上の連続した４バイトのグループである。ダブルワードは、８バイト境界上の連続した８バイトのグループである。クワッドワードは、１６バイト境界上の連続した１６バイトのグループである。ストレージ・アドレスが、ハーフワード、ワード、ダブルワード、およびクワッドワードを指示する場合、アドレスの２進表現は、それぞれ１、２、３または４つ、右端のゼロビットを含む。命令は、２バイト整数境界上になければならない。多くの命令のストレージ・オペランドには、境界アラインメント要件がない。
【０７７１】
命令およびデータ・オペランドに別々のキャッシュを実装するデバイスでは、命令が後にフェッチされるキャッシュ・ラインにプログラムが格納を行うと、後にフェッチされる命令がその格納によって変更されるかどうかに関係なく、大きな遅延が生じ得る。
【０７７２】
一実施形態において、本発明はソフトウェア（ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピコ・コードなどと呼ばれることもあり、これらのいずれも本発明と矛盾しない）によって実施され得る。図３３を参照する。本発明を具現化するソフトウェア・プログラム・コードは、通常、ホスト・システム５０００のプロセッサ５００１によって、ＣＤ−ＲＯＭドライブ、テープ・ドライブ、またはハード・ドライブなどの長期ストレージ媒体デバイス５０１１からアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ、またはＣＤ−ＲＯＭなど、データ処理システムとともに使用される種々の周知の媒体のいずれかにおいて具現化され得る。コードは、そのような媒体上で配布されてもよく、または、１つのコンピュータ・システムのコンピュータ・メモリ５００２またはストレージから、ネットワーク５０１０上でほかのコンピュータ・システムへと、そのようなほかのシステムのユーザにより使用されるよう、ユーザに対し配布されてもよい。
【０７７３】
ソフトウェア・プログラム・コードは、様々なコンピュータ・コンポーネントおよび１つ以上のアプリケーション・プログラムの機能および対話を制御するオペレーティング・システムを含む。プログラム・コードは、通常は、ストレージ媒体デバイス５０１１から、相対的に高速なコンピュータ・ストレージ５００２にページングされ、そこでプログラム・コードは、プロセッサ５００１による処理に利用可能となる。メモリ内、物理媒体上にソフトウェア・プログラム・コードを具現化する技術および方法、もしくはネットワークを介してソフトウェア・コードを配布する技術および方法、またはその両方は周知であり、本願明細書ではこれ以上説明しない。プログラム・コードは、作成されて有形媒体（電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープおよび同様のものを含むがこれらに限定はされない）上に格納される場合、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、通常、好適にはコンピュータ・システム内にある処理回路によって、処理回路による実行のために読み取り可能である。
【０７７４】
図３４は、本発明が実施され得る代表的なワークステーションまたはサーバ・ハードウェア・システムを示す。図３４のシステム５０２０は、任意選択の周辺デバイスを含む、パーソナル・コンピュータ、ワークステーションまたはサーバなどの代表的なベース・コンピュータ・システム５０２１を含む。ベース・コンピュータ・システム５０２１は、１つ以上のプロセッサ５０２６、および周知の技術に従ってプロセッサ（単数または複数）５０２６とシステム５０２１のほかのコンポーネントとを接続し通信を可能にするために用いられるバスを含む。バスは、プロセッサ５０２６をメモリ５０２５および長期ストレージ５０２７に接続し、長期ストレージ５０２７は、例えばハード・ドライブ（例えば、磁気媒体、ＣＤ、ＤＶＤおよびフラッシュ・メモリのいずれかを含む）またはテープ・ドライブを含むことができる。システム５０２１はさらに、バスを介してマイクロプロセッサ５０２６をキーボード５０２４、マウス５０２３、プリンタ／スキャナ５０３０、もしくはタッチ・センシティブ・スクリーン、デジタル化入力パッドなどの任意のユーザ・インターフェースとすることができるその他のインターフェース・デバイス、またはそのいずれかの組み合わせなどの１つ以上のインターフェース・デバイスに接続する、ユーザ・インターフェース・アダプタを含み得るであろう。バスはさらに、ＬＣＤスクリーンまたはモニタなどのディスプレイ・デバイス５０２２を、ディスプレイ・アダプタを介してマイクロプロセッサ５０２６に接続する。
【０７７５】
システム５０２１は、ネットワーク５０２９と通信５０２８できるネットワーク・アダプタを経由してほかのコンピュータまたはコンピュータのネットワークと通信し得る。例示のネットワーク・アダプタは、通信チャネル、トークン・リング、イーサネット（Ｒ）、またはモデムである。あるいは、システム５０２１は、ＣＤＰＤ（ｃｅｌｌｕｌａｒ  ｄｉｇｉｔａｌ  ｐａｃｋｅｔ  ｄａｔａ：セルラ・デジタル・パケット・データ）カードなどの無線インターフェースを使用して通信してもよい。システム５０２１は、そのようなほかのコンピュータに、ローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）において関連付けられてもよく、またはシステム５０２１は、別のコンピュータなどとのクライアント／サーバ構成におけるクライアントとされることも可能である。これらの構成のすべて、ならびに適切な通信ハードウェアおよびソフトウェアは、当該技術分野において周知である。
【０７７６】
図３５は、本発明が実施され得るデータ処理ネットワーク５０４０を示す。データ処理ネットワーク５０４０は、無線ネットワークおよび有線ネットワークなど、複数の個別のネットワークを含むとよく、そのそれぞれが、複数の個別のワークステーション５０４１、５０４２、５０４３、５０４４を含むとよい。さらに、当業者には当然のことながら、１つ以上のＬＡＮが含まれてもよく、ＬＡＮは、ホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含むとよい。
【０７７７】
さらに図３５を参照する。ネットワークはさらに、ゲートウェイ・コンピュータ（クライアント・サーバ５０４６）またはアプリケーション・サーバ（データ・リポジトリにアクセスでき、さらにワークステーション５０４５から直接アクセスされ得る遠隔サーバ５０４８）などのメインフレーム・コンピュータまたはサーバを含んでもよい。ゲートウェイ・コンピュータ５０４６は、個別のネットワークそれぞれへの入口点としての機能を果たす。ゲートウェイは、１つのネットワーキング・プロトコルを別のネットワーキング・プロトコルに接続するときに必要とされる。ゲートウェイ５０４６は、好適には、通信リンクによって別のネットワーク（例えばインターネット５０４７）に結合されるとよい。ゲートウェイ５０４６はさらに、通信リンクを使用して、１つ以上のワークステーション５０４１、５０４２、５０４３、５０４４に直接結合されてもよい。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なＩＢＭ  ｅＳｅｒｖｅｒ（ＩＢＭ社の商標）Ｓｙｓｔｅｍ  ｚ（ＩＢＭ社の登録商標）サーバを利用して実装されてもよい。
【０７７８】
図３４および図３５をともに参照する。本発明を具現化するとよいソフトウェア・プログラミング・コードは、ＣＤ−ＲＯＭドライブまたはハード・ドライブなどの長期ストレージ媒体５０２７から、システム５０２０のプロセッサ５０２６によってアクセスされるとよい。ソフトウェア・プログラミング・コードは、データ処理システムとともに使用されるよう、ディスケット、ハード・ドライブ、またはＣＤ−ＲＯＭなど、種々の周知の媒体のいずれかにおいて具現化され得る。コードは、そのような媒体上で配布されてもよく、または、１つのコンピュータ・システムのメモリまたはストレージから、ネットワーク上でほかのコンピュータ・システムへと、そのようなほかのシステムのユーザにより使用されるよう、ユーザ５０５０、５０５１に対し配布されてもよい。
【０７７９】
あるいは、プログラミング・コードは、メモリ５０２５において具現化され、プロセッサ・バスを使用してプロセッサ５０２６によってアクセスされてもよい。そのようなプログラミング・コードは、様々なコンピュータ・コンポーネントおよび１つ以上のアプリケーション・プログラム５０３２の機能および対話を制御するオペレーティング・システムを含む。プログラム・コードは、通常は、ストレージ媒体５０２７から高速メモリ５０２５にページングされ、そこでプログラム・コードは、プロセッサ５０２６による処理に利用可能になる。メモリ内、物理媒体上にソフトウェア・プログラミング・コードを具現化する技術および方法、もしくはネットワークを介してソフトウェア・コードを配布する技術および方法、またはその両方は周知であり、本願明細書ではこれ以上説明しない。プログラム・コードは、作成されて有形媒体（電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープおよび同様のものを含むがこれらに限定はされない）上に格納される場合、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、通常、好適にはコンピュータ・システム内にある処理回路によって、処理回路による実行のために読み取り可能である。
【０７８０】
プロセッサが最も迅速に利用できるキャッシュ（通常はプロセッサのほかのキャッシュよりも高速かつ小型である）は、最下位の（Ｌ１またはレベル１）キャッシュであり、メイン・ストア（メイン・メモリ）は、最上位キャッシュ（３レベルある場合はＬ３）である。最下位キャッシュは、実行されるマシン命令を保持する命令キャッシュ（Ｉ（ｉｎｓｔｒｕｃｔｉｏｎ：命令）キャッシュ）と、データ・オペランドを保持するデータ・キャッシュ（Ｄ（ｄａｔａ：データ）キャッシュ）とに分けられることが多い。
【０７８１】
図３６を参照する。プロセッサ５０２６に関する、例示のプロセッサの実施形態が示されている。通常、１つ以上のレベルのキャッシュ５０５３が、メモリ・ブロックをバッファに入れてプロセッサ性能を改善するために用いられる。キャッシュ５０５３は、使用される可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは、６４、１２８または２５６バイトのメモリ・データである。データをキャッシュに入れるのとは別のキャッシュが、命令をキャッシュに入れるために用いられることが多い。キャッシュ・コヒーレンス（メモリおよびキャッシュにおけるラインのコピーの同期）は、当該技術分野で周知の様々な「スヌープ」アルゴリズムによって提供されることが多い。プロセッサ・システムのメイン・メモリ・ストレージ５０２５は、キャッシュと呼ばれることが多い。４つのレベルのキャッシュ５０５３を有するプロセッサ・システムでは、メイン・ストレージ５０２５は、通常はより高速であり、かつコンピュータ・システムに利用可能な不揮発性ストレージ（ＤＡＳＤ、テープなど）の一部分のみを保持するため、レベル５（Ｌ５）キャッシュと呼ばれることもある。メイン・ストレージ５０２５は、オペレーティング・システムによってメイン・ストレージ５０２５に対するページ・インおよびページ・アウトが行われるデータのページを「キャッシュに入れる」。
【０７８２】
プログラム・カウンタ（命令カウンタ）５０６１は、実行される現在の命令のアドレスを追跡する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）プロセッサのプログラム・カウンタは、６４ビットであり、従来のアドレス指定制限をサポートするために３１または２４ビットに切り捨てることができる。プログラム・カウンタは、通常、コンテキスト・スイッチの間持続するようコンピュータのＰＳＷ（プログラム・ステータス・ワード）において具現化される。したがって、プログラム・カウンタ値を有する進行中のプログラムは、例えばオペレーティング・システムにより割り込みされてもよい（プログラム環境からオペレーティング・システム環境へのコンテキスト・スイッチ）。プログラムのＰＳＷは、プログラムがアクティブでない間、プログラム・カウンタ値を維持し、オペレーティング・システムの実行中、オペレーティング・システムのプログラム・カウンタ（ＰＳＷ内）が使用される。通常、プログラム・カウンタは、現在の命令のバイト数に等しい量だけインクリメントされる。ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｉｎｇ：縮小命令セット・コンピューティング）命令は、通常、固定長であり、ＣＩＳＣ（Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｉｎｇ：複合命令セット・コンピューティング）命令は、通常、可変長である。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）の命令は、２バイト、４バイトまたは６バイトの長さを有するＣＩＳＣ命令である。例えば、コンテキスト・スイッチ動作または分岐命令の分岐成立動作のいずれかにより、プログラム・カウンタ５０６１が変更される。コンテキスト・スイッチ動作では、現在のプログラム・カウンタ値が、実行中のプログラムについてのほかの状態情報（条件コードなど）とともにプログラム・ステータス・ワードに保存され、実行される新たなプログラム・モジュールの命令をポイントする新しいプログラム・カウンタ値がロードされる。分岐命令の結果をプログラム・カウンタ５０６１にロードすることによって、プログラムが決定を下すことまたはプログラム内でループすることができるよう、分岐成立動作が実行される。
【０７８３】
通常、プロセッサ５０２６の代わりに命令をフェッチするために、命令フェッチ・ユニット５０５５が用いられる。フェッチ・ユニットは、「次の逐次命令」、分岐成立命令のターゲット命令、またはコンテキスト・スイッチ後のプログラムの最初の命令のいずれかをフェッチする。現代の命令フェッチ・ユニットは、プリフェッチされた命令が使用され得る可能性に基づいて命令を投機的にプリフェッチする、プリフェッチ技術を用いることが多い。例えば、フェッチ・ユニットは、次の逐次命令と、さらなる逐次命令の追加のバイトとを含む、１６バイトの命令をフェッチし得る。
【０７８４】
続いて、フェッチされた命令は、プロセッサ５０２６によって実行される。一実施形態では、フェッチされた命令（単数または複数）は、フェッチ・ユニットのディスパッチ・ユニット５０５６に渡される。ディスパッチ・ユニットは、命令（単数または複数）をデコードし、デコードされた命令（単数または複数）についての情報を適切なユニット５０５７、５０５８、５０６０に転送する。実行ユニット５０５７は、通常、命令フェッチ・ユニット５０５５から、デコードされた算術命令についての情報を受領し、命令のオペコードに従って、オペランドに対する算術演算を実行する。オペランドは、好適には、メモリ５０２５、アーキテクチャ化されたレジスタ５０５９、または実行されている命令の即値フィールドのいずれかから、実行ユニット５０５７に提供される。実行の結果は、格納される場合、メモリ５０２５、レジスタ５０５９、またはほかのマシン・ハードウェア（制御レジスタ、ＰＳＷレジスタおよび同様のものなど）のいずれかに格納される。
【０７８５】
プロセッサ５０２６は、通常、命令の機能を実行する１つ以上のユニット５０５７、５０５８、５０６０を有する。図３７を参照する。実行ユニット５０５７は、インターフェース論理５０７１を経由して、アーキテクチャ化された汎用レジスタ５０５９、デコード／ディスパッチ・ユニット５０５６、ロード／格納ユニット５０６０、およびほかのプロセッサ・ユニット５０６５と通信するとよい。実行ユニット５０５７は、いくつかのレジスタ回路５０６７、５０６８、５０６９を用いて、算術論理ユニット（ＡＬＵ：ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）５０６６が演算を行う情報を保持することができる。ＡＬＵは、加算、減算、乗算、および除算などの算術演算、ならびに論理積、論理和および排他的論理和（ＸＯＲ：ｅｘｃｌｕｓｉｖｅ−ｏｒ）、ローテートおよびシフトなどの論理関数を実行する。ＡＬＵは、設計に依存する専用の演算をサポートすることが好ましい。ほかの回路は、例えば条件コードおよびリカバリ・サポート論理を含む、ほかのアーキテクチャ化されたファシリティ５０７２を提供するとよい。通常、ＡＬＵ演算の結果は、出力レジスタ回路５０７０に保持され、出力レジスタ回路５０７０は、結果をほかの様々な処理機能に転送することができる。プロセッサ・ユニットの構成は多数あり、本記載は、一実施形態の代表的な理解を与えるためのものでしかない。
【０７８６】
例えばＡＤＤ命令は、算術および論理機能性を有する実行ユニット５０５７で実行される一方、例えば浮動小数点命令は、専用の浮動小数点能力を有する浮動小数点実行部で実行されると考えられる。実行ユニットは、オペコードが規定する機能をオペランドに対して実行することにより、命令によって特定されたオペランドに対して演算を行うことが好ましい。例えば、ＡＤＤ命令は、命令のレジスタ・フィールドによって特定された２つのレジスタ５０５９にあるオペランドに対して、実行ユニット５０５７により実行され得る。
【０７８７】
実行ユニット５０５７は、２つのオペランドに対して算術加算を実行し、結果を第３オペランドに格納する。第３オペランドは、第３レジスタであっても、または２つのソース・レジスタのうちの１つであってもよい。実行ユニットは、シフト、ローテート、論理積、論理和、およびＸＯＲなどの様々な論理関数、ならびに加算、減算、乗算、除算のいずれかを含む様々な代数関数を実行できる算術論理ユニット（ＡＬＵ）５０６６を利用することが好ましい。ＡＬＵ５０６６には、スカラー演算のために設計されたものも、浮動小数点のために設計されたものもある。データは、アーキテクチャに応じて、ビッグ・エンディアン（最下位のバイトが最も高いバイト・アドレスにある）、またはリトル・エンディアン（最下位のバイトが最も低いバイト・アドレスにある）とされ得る。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）は、ビッグ・エンディアンである。符号付きフィールドは、アーキテクチャに応じて、符号および大きさ、１の補数、または２の補数とされ得る。２の補数における負の値または正の値はどちらもＡＬＵ内で加法しか必要としないため、ＡＬＵが減算能力を設計する必要がないという点で、２の補数は有利である。通常、数値は省略表現で記述され、例えば１２ビット・フィールドは、４，０９６バイト・ブロックのアドレスを規定し、通常は４Ｋバイト（キロバイト）ブロックとして記述される。
【０７８８】
図３８を参照する。分岐命令を実行するための分岐命令情報は、通常、分岐ユニット５０５８に送られる。分岐ユニット５０５８は、多くの場合、分岐履歴テーブル５０８２などの分岐予測アルゴリズムを用いて、ほかの条件付き演算が完了する前に分岐の結果を予測する。条件付き演算が完了する前に、現在の分岐命令のターゲットがフェッチされ、投機的に実行される。条件付き演算が完了すると、投機的に実行された分岐命令は、条件付き演算の条件および予測された結果に基づいて、完了または破棄される。典型的な分岐命令は、条件コードをテストし、条件コードが分岐命令の分岐要件を満たす場合、ターゲット・アドレスに分岐するとよく、ターゲット・アドレスは、例えば、命令のレジスタ・フィールドまたは即値フィールド内にある数値を含むいくつかの数値に基づいて計算され得る。分岐ユニット５０５８は、複数の入力レジスタ回路５０７５、５０７６、５０７７と、出力レジスタ回路５０８０とを有するＡＬＵ５０７４を用いるとよい。分岐ユニット５０５８は、例えば、汎用レジスタ５０５９、デコード・ディスパッチ・ユニット５０５６、またはほかの回路５０７３と通信するとよい。
【０７８９】
例えば、オペレーティング・システムによって開始されるコンテキスト・スイッチ、コンテキスト・スイッチをもたらすプログラム例外もしくはエラー、コンテキスト・スイッチをもたらすＩ／Ｏ割り込み信号、または（マルチスレッド環境における）複数のプログラムのマルチスレッディング・アクティビティを含む様々な理由により、命令群の実行に割り込みが行われることがある。コンテキスト・スイッチ・アクションは、現在実行中のプログラムについての状態情報を保存し、続いて、呼び出される別のプログラムについての状態情報をロードすることが好ましい。状態情報は、例えば、ハードウェア・レジスタまたはメモリ内に保存され得る。状態情報は、実行される次の命令をポイントするプログラム・カウンタ値と、条件コードと、メモリ変換情報と、アーキテクチャ化されたレジスタ・コンテンツとを含むことが好ましい。コンテキスト・スイッチのアクティビティは、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、またはファームウェア・コード（マイクロコード、ピコ・コード、またはライセンス内部コード（ＬＩＣ））のみによって、またはその組み合わせによって遂行することができる。
【０７９０】
プロセッサは、命令により規定された方法に従ってオペランドにアクセスする。命令は、命令の一部分の値を使用して即値オペランドを提供することも、汎用レジスタまたは専用レジスタ（例えば浮動小数点レジスタ）のいずれかを明示的にポイントする１つ以上のレジスタ・フィールドを提供することもできる。命令は、オペコード・フィールドによってオペランドとして特定される暗黙のレジスタを利用することもできる。命令は、オペランドのメモリ位置を利用することもできる。オペランドのメモリ位置は、レジスタまたは即値フィールドによって提供されることもでき、または、命令がベース・レジスタ、インデックス・レジスタ、および即値フィールド（変位フィールド）を規定し、これらが例えば互いに加算されることで、メモリ内のオペランドのアドレスが提供される、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）の長変位ファシリティにより例示されるように、レジスタと即値フィールドとの組み合わせによって提供されることもできる。ここでの位置とは、通常、別途指示されない限り、メイン・メモリ（メイン・ストレージ）内の位置を意味する。
【０７９１】
図３９を参照する。プロセッサは、ロード／格納ユニット５０６０を使用してストレージにアクセスする。ロード／格納ユニット５０６０は、メモリ５０５３内のターゲット・オペランドのアドレスを取得し、オペランドをレジスタ５０５９または別のメモリ５０５３位置にロードすることによってロード動作を実行することも、メモリ５０５３内のターゲット・オペランドのアドレスを取得し、レジスタ５０５９または別のメモリ５０５３位置から取得されたデータをメモリ５０５３内のターゲット・オペランド位置に格納することによって格納動作を実行することもできる。ロード／格納ユニット５０６０は、投機的であってもよく、命令シーケンスに対してアウト・オブ・オーダー式のシーケンスでメモリにアクセスしてもよいが、ロード／格納ユニット５０６０は、命令がイン・オーダー実行されたという見かけをプログラムに対して維持する必要がある。ロード／格納ユニット５０６０は、汎用レジスタ５０５９、デコード／ディスパッチ・ユニット５０５６、キャッシュ／メモリ・インターフェース５０５３、またはほかの構成要素５０８３と通信するとよく、ストレージ・アドレスを計算して、パイプラインの順序付けを提供し動作をイン・オーダーに保持するための、種々のレジスタ回路、ＡＬＵ５０８５、および制御論理５０９０を含む。一部の動作は、アウト・オブ・オーダー式とすることができるが、当該技術分野において周知のように、ロード／格納ユニットは、アウト・オブ・オーダー式動作を、イン・オーダー実行されたようにプログラムに見せる機能性を提供する。
【０７９２】
好適には、アプリケーション・プログラムが「見る」アドレスは、多くの場合、仮想アドレスと呼ばれる。仮想アドレスは、「論理アドレス」および「実効アドレス」と呼ばれることもある。これらの仮想アドレスは、単に仮想アドレスにオフセット値をプリフィックス付加すること、１つ以上の変換テーブルを介して仮想アドレスを変換することを含むがこれらに限定されない、様々な動的アドレス変換（ＤＡＴ）技術の１つによって、物理メモリ位置にリダイレクトされるという点で仮想のものであり、変換テーブルは、少なくともセグメント・テーブルおよびページ・テーブルを単体で、または組み合わせて含むことが好ましく、セグメント・テーブルは、ページ・テーブルをポイントするエントリを有することが好ましい。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）では、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、および任意選択のページ・テーブルを含む、変換の階層が提供される。アドレス変換の性能は、仮想アドレスを関連した物理メモリ位置にマッピングするエントリを含む変換ルックアサイド・バッファ（ＴＬＢ）を利用することによって改善されることが多い。エントリは、ＤＡＴが変換テーブルを使用して仮想アドレスを変換するときに作成される。その結果、その後の仮想アドレスの使用では、低速な逐次変換テーブル・アクセスではなく、高速なＴＬＢのエントリを利用できる。ＴＬＢのコンテンツは、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ：最長時間未使用法）を含む様々な置換アルゴリズムによって管理され得る。
【０７９３】
プロセッサがマルチプロセッサ・システムのプロセッサである場合、各プロセッサは、コヒーレンシのために、Ｉ／Ｏ、キャッシュ、ＴＬＢおよびメモリなどの共有リソースをインターロック状態に保持する責任を負う。通常、キャッシュ・コヒーレンシの維持には「スヌープ」技術が利用される。スヌープ環境においては、共有を促進するために、各キャッシュ・ラインが、共有状態、排他的状態、変更状態、無効状態などのうちのいずれか１つであるとマーク付けされ得る。
【０７９４】
Ｉ／Ｏユニット５０５４（図３６）は、例えばテープ、ディスク、プリンタ、ディスプレイ、およびネットワークを含む周辺機器に連結するための手段をプロセッサに提供する。Ｉ／Ｏユニットは、ソフトウェア・ドライバによってコンピュータ・プログラムに提示されることが多い。ＩＢＭ（ＩＢＭ社の登録商標）のＳｙｓｔｅｍ  ｚ（ＩＢＭ社の登録商標）などのメインフレームにおいては、チャネル・アダプタおよびオープン・システム・アダプタが、オペレーティング・システムと周辺デバイスとの間の通信を提供するメインフレームのＩ／Ｏユニットである。
【０７９５】
さらに、ほかのタイプのコンピューティング環境が、本発明の１つ以上の側面から利益を得ることができる。例として、環境は、特定のアーキテクチャ（例えば命令実行、アドレス変換などのアーキテクチャ化された機能、およびアーキテクチャ化されたレジスタを含む）またはそのサブセットが（例えばプロセッサおよびメモリを有するネイティブ・コンピュータ・システム上で）エミュレートされる、エミュレータ（例えばソフトウェアまたはその他のエミュレーション・メカニズム）を含み得る。そのような環境では、エミュレータを実行するコンピュータが、エミュレートされる能力とは異なるアーキテクチャを有しても、エミュレータの１つ以上のエミュレーション機能が、本発明の１つ以上の側面を実装することができる。一例として、エミュレーション・モードでは、エミュレートされる特定の命令または動作がデコードされ、適切なエミュレーション機能が構築されて、個々の命令または動作が実装される。
【０７９６】
エミュレーション環境において、ホスト・コンピュータは、例えば、命令およびデータを格納するメモリと、メモリから命令をフェッチし、任意選択で、フェッチされた命令のローカル・バッファリングを提供する命令フェッチ・ユニットと、フェッチされた命令を受領し、フェッチされた命令のタイプを判断する命令デコード・ユニットと、命令を実行する命令実行ユニットとを含む。実行は、メモリからデータをレジスタにロードすること、データをレジスタから再びメモリに格納すること、またはデコード・ユニットによって判断された、何らかのタイプの算術または論理演算を実行することを含み得る。一例では、各ユニットは、ソフトウェアにおいて実装される。例えば、ユニットによって実行される動作は、エミュレータ・ソフトウェア内の１つ以上のサブルーチンとして実装される。
【０７９７】
より具体的には、メインフレームにおいて、アーキテクチャ化されたマシン命令は、多くの場合コンパイラ・アプリケーションを介して、プログラマ、今日では通常、「Ｃ」プログラマによって使用される。ストレージ媒体に格納されたこれらの命令は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）ＩＢＭ（ＩＢＭ社の登録商標）サーバにおいて、または代わりにほかのアーキテクチャを実行するマシンにおいて、ネイティブに実行され得る。これらの命令は、既存のおよび将来のＩＢＭ（ＩＢＭ社の登録商標）メインフレーム・サーバ内、およびＩＢＭ（ＩＢＭ社の登録商標）のほかのマシン（例えば、Ｐｏｗｅｒ  Ｓｙｓｔｅｍｓ（ＩＢＭ社の商標）サーバおよびＳｙｓｔｅｍ  ｘ（ＩＢＭ社の登録商標）サーバ）上でエミュレートすることができる。これらの命令は、ＩＢＭ（ＩＢＭ社の登録商標）、Ｉｎｔｅｌ（Ｒ）、ＡＭＤ（ＴＭ）などによって製造されたハードウェアを使用して様々なマシン上でＬｉｎｕｘ（Ｒ）を実行しているマシンにおいて実行することができる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）に基づく当該ハードウェア上での実行のほか、Ｌｉｎｕｘ（Ｒ）を使用することも、ならびに実行が全般的にエミュレーション・モードであるＨｅｒｃｕｌｅｓ、ＵＭＸまたはＦＳＩ（Ｆｕｎｄａｍｅｎｔａｌ  Ｓｏｆｔｗａｒｅ，Ｉｎｃ）によるエミュレーションを使用するマシンを使用することもできる。エミュレーション・モードでは、ネイティブ・プロセッサによってエミュレーション・ソフトウェアが実行され、エミュレートされるプロセッサのアーキテクチャがエミュレートされる。
【０７９８】
ネイティブ・プロセッサは、通常、ファームウェアまたはネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェアを実行して、エミュレートされるプロセッサのエミュレーションを実行する。エミュレーション・ソフトウェアは、エミュレートされるプロセッサ・アーキテクチャの命令のフェッチおよび実行を担当する。エミュレーション・ソフトウェアは、エミュレートされるプログラム・カウンタを維持し、命令境界を追跡する。エミュレーション・ソフトウェアは、エミュレートされたマシン命令を一度に１つ以上フェッチして、ネイティブ・プロセッサによる実行のために、その１つ以上のエミュレートされたマシン命令を、対応するネイティブ・マシン命令群に変換するとよい。これらの変換された命令は、より高速な変換を達成できるようキャッシュに入れられてもよい。いずれにせよ、エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ・ルールを維持し、オペレーティング・システムおよびエミュレートされたプロセッサのために書かれたアプリケーションが正常に動作することを保証する必要がある。さらに、エミュレーション・ソフトウェアは、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブルおよびページ・テーブルを含む動的アドレス変換機能、割り込みメカニズム、コンテキスト・スイッチ・メカニズム、時刻（ＴＯＤ：Ｔｉｍｅ  ｏｆ  Ｄａｙ）クロック、ならびにＩ／Ｏサブシステムへのアーキテクチャ化されたインターフェースを含むがこれらに限定されない、エミュレートされたプロセッサ・アーキテクチャによって識別されるリソースを提供し、オペレーティング・システムまたはエミュレートされたプロセッサ上で実行するように設計されたアプリケーション・プログラムを、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で実行できるようにしなければならない。
【０７９９】
エミュレートされる特定の命令がデコードされ、個々の命令の機能を実行するためのサブルーチンが呼び出される。エミュレートされたプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、例えば、「Ｃ」サブルーチンもしくはドライバにおいて、または好適な実施形態の説明を理解すれば当業者の技術の範囲内となる特定のハードウェアのドライバを提供するほかの何らかの方法で実装される。参照によって内容全体を本願明細書にそれぞれ引用したものとする、「Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  ｆｏｒ  Ｈａｒｄｗａｒｅ  Ｅｍｕｌａｔｉｏｎ」と題された、Ｂｅａｕｓｏｌｅｉｌらの米国特許第５，５５１，０１３号、および「Ｐｒｅｐｒｏｃｅｓｓｉｎｇ  ｏｆ  Ｓｔｏｒｅｄ  Ｔａｒｇｅｔ  Ｒｏｕｔｉｎｅｓ  ｆｏｒ  Ｅｍｕｌａｔｉｎｇ  Ｉｎｃｏｍｐａｔｉｂｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  ｏｎ  ａ  Ｔａｒｇｅｔ  Ｐｒｏｃｅｓｓｏｒ」と題された、Ｓｃａｌｚｉらの米国特許第６，００９，２６１号、および「Ｄｅｃｏｄｉｎｇ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎ  ｔｏ  Ｄｉｒｅｃｔｌｙ  Ａｃｃｅｓｓ  Ｅｍｕｌａｔｉｏｎ  Ｒｏｕｔｉｎｅｓ  ｔｈａｔ  Ｅｍｕｌａｔｅ  ｔｈｅ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ」と題された、Ｄａｖｉｄｉａｎらの米国特許第５，５７４，８７３号、および「Ｓｙｍｍｅｔｒｉｃａｌ  Ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ  Ｂｕｓ  ａｎｄ  Ｃｈｉｐｓｅｔ  Ｕｓｅｄ  ｆｏｒ  Ｃｏｐｒｏｃｅｓｓｏｒ  Ｓｕｐｐｏｒｔ  Ａｌｌｏｗｉｎｇ  Ｎｏｎ−Ｎａｔｉｖｅ  Ｃｏｄｅ  ｔｏ  Ｒｕｎ  ｉｎ  ａ  Ｓｙｓｔｅｍ」と題された、Ｇｏｒｉｓｈｅｋらの米国特許第６，３０８，２５５号、および「Ｄｙｎａｍｉｃ  Ｏｐｔｉｍｉｚｉｎｇ  Ｏｂｊｅｃｔ  Ｃｏｄｅ  Ｔｒａｎｓｌａｔｏｒ  ｆｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｅｍｕｌａｔｉｏｎ  ａｎｄ  Ｄｙｎａｍｉｃ  Ｏｐｔｉｍｉｚｉｎｇ  Ｏｂｊｅｃｔ  Ｃｏｄｅ  Ｔｒａｎｓｌａｔｉｏｎ  Ｍｅｔｈｏｄ」と題された、Ｌｅｔｈｉｎらの米国特許第６，４６３，５８２号、および「Ｍｅｔｈｏｄ  ｆｏｒ  Ｅｍｕｌａｔｉｎｇ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  ｏｎ  ａ  Ｈｏｓｔ  Ｃｏｍｐｕｔｅｒ  Ｔｈｒｏｕｇｈ  Ｄｙｎａｍｉｃ  Ｒｅｃｏｍｐｉｌａｔｉｏｎ  ｏｆ  Ｈｏｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ」と題された、Ｅｒｉｃ  Ｔｒａｕｔらの米国特許第５，７９０，８２５号、およびその他多数を含むがこれらに限定されない、様々なソフトウェアおよびハードウェア・エミュレーションの特許が、当業者が利用可能なターゲット・マシンのために、種々のマシン向けにアーキテクチャ化された命令フォーマットのエミュレーションを実現するための、様々な既知の方法を示している。
【０８００】
図４０には、ホスト・アーキテクチャのホスト・コンピュータ・システム５０００’をエミュレートする、エミュレートされたホスト・コンピュータ・システム５０９２の例が提供されている。エミュレートされたホスト・コンピュータ・システム５０９２において、ホスト・プロセッサ（ＣＰＵ）５０９１は、エミュレートされたホスト・プロセッサ（または仮想ホスト・プロセッサ）であり、ホスト・コンピュータ５０００’のプロセッサ５０９１のものとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ５０９３を含む。エミュレートされたホスト・コンピュータ・システム５０９２は、エミュレーション・プロセッサ５０９３がアクセス可能なメモリ５０９４を有する。例示の実施形態では、メモリ５０９４は、ホスト・コンピュータ・メモリ５０９６部分と、エミュレーション・ルーチン５０９７部分とに分割されている。ホスト・コンピュータ・メモリ５０９６は、ホスト・コンピュータ・アーキテクチャに従い、エミュレートされたホスト・コンピュータ５０９２のプログラムに利用可能である。エミュレーション・プロセッサ５０９３は、エミュレートされたプロセッサ５０９１のアーキテクチャ以外のアーキテクチャの、アーキテクチャ化された命令セットのネイティブ命令を実行する。このネイティブ命令は、エミュレーション・ルーチン・メモリ５０９７から取得される。さらにエミュレーション・プロセッサ５０９３は、シーケンス＆アクセス／デコード・ルーチンにおいて取得される、１つ以上の命令（単数または複数）を用いて、ホスト・コンピュータ・メモリ５０９６内のプログラムの実行すべきホスト命令にアクセスするとよく、シーケンス＆アクセス／デコード・ルーチンは、アクセスされたホスト命令（単数または複数）をデコードして、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判断するとよい。ホスト・コンピュータ・システム５０００’のアーキテクチャのために定義された、例えば汎用レジスタ、制御レジスタ、動的アドレス変換およびＩ／Ｏサブシステム・サポート、ならびにプロセッサ・キャッシュのようなファシリティを含むほかのファシリティを、アーキテクチャ化されたファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を改善するために、エミュレーション・プロセッサ５０９３において利用可能な機能（汎用レジスタ、および仮想アドレスの動的変換など）を利用することもできる。ホスト・コンピュータ５０００’の機能のエミュレートにおいてプロセッサ５０９３を支援するために、専用のハードウェアおよびオフ・ロード・エンジンも提供され得る。
【０８０１】
本願明細書で使用される専門用語は、特定の実施形態を説明するためのものでしかなく、本発明の限定となることは目的としていない。本願明細書で使用される、単数形「ａ」、「ａｎ」および「ｔｈｅ」は、文脈によりそうでないことが明確に示されていない限り、複数形も含むものとする。さらに、当然のことながら、「含む」もしくは「含んでいる」またはその両方の用語は、本明細書で使用されるとき、記載された機能、完全体、ステップ、動作、構成要素、もしくはコンポーネント、またはそのいずれかの組み合わせの存在を指定するが、１つ以上のほかの機能、完全体、ステップ、動作、構成要素、コンポーネント、もしくはそのグループ、またはそのいずれかの組み合わせの存在または追加を除外するものではない。
【０８０２】
添付の特許請求の範囲のミーンズまたはステップ・プラス・ファンクション構成要素すべての、対応する構造、材料、動作、および等価物がある場合、それらは、明確に請求されているほかの請求される構成要素とともに機能を実行する任意の構造、材料、または動作を含むものとする。本発明の記載は、例示および説明のために示されたものであるが、包括的であることも、開示された形態の発明に限定されることも目的としていない。当業者には、本発明の範囲および趣旨から逸脱することのない、多数の変更および変形が明らかであろう。実施形態は、本発明の原理および実際の応用を最もよく説明して、当業者が、意図される特定の用途に適する様々な変更を用いた様々な実施形態に関して、本発明を理解できるように選択され、記載された。
【図１】
0005607857.tif 000002
【図２】
0005607857.tif 000003
【図３】
0005607857.tif 000004
【図４】
0005607857.tif 000005
【図５】
0005607857.tif 000006
【図６】
0005607857.tif 000007
【図７】
0005607857.tif 000008
【図８】
0005607857.tif 000009
【図９】
0005607857.tif 000010
【図１０】
0005607857.tif 000011
【図１１】
0005607857.tif 000012
【図１２】
0005607857.tif 000013
【図１３】
0005607857.tif 000014
【図１４】
0005607857.tif 000015
【図１５】
0005607857.tif 000016
【図１６】
0005607857.tif 000017
【図１７】
0005607857.tif 000018
【図１８】
0005607857.tif 000019
【図１９】
0005607857.tif 000020
【図２０】
0005607857.tif 000021
【図２１】
0005607857.tif 000022
【図２２】
0005607857.tif 000023
【図２３】
0005607857.tif 000024
【図２４】
0005607857.tif 000025
【図２５】
0005607857.tif 000026
【図２６】
0005607857.tif 000027
【図２７】
0005607857.tif 000028
【図２８】
0005607857.tif 000029
【図２９】
0005607857.tif 000030
【図３０】
0005607857.tif 000031
【図３１】
0005607857.tif 000032
【図３２】
0005607857.tif 000033
【図３３】
0005607857.tif 000034
【図３４】
0005607857.tif 000035
【図３５】
0005607857.tif 000036
【図３６】
0005607857.tif 000037
【図３７】
0005607857.tif 000038
【図３８】
0005607857.tif 000039
【図３９】
0005607857.tif 000040
【図４０】
0005607857.tif 000041