ストレージ・クラス・メモリの実装の詳細をプログラム(例えばオペレーティング・システム)から隠す、ストレージ・クラス・メモリの抽象化であって、メイン・ストレージとストレージ・クラス・メモリとの間のデータの移動を制御することなどの特定のアクションを実行するための標準のチャネル・プログラミング・インターフェースを提供する、ストレージ・クラス・メモリの抽象化が、1つ以上の実施形態により提供される。
一例では、拡張非同期データ・ムーバ(EADM:Extended Asynchronous Data Mover)ファシリティと呼ばれるファシリティが提供される。これは、プログラムが、メイン・ストレージとストレージ・クラス・メモリとの間のデータのブロックの転送を要求すること、ならびにほかの動作を要求することを可能にする。このファシリティの各側面については、下記に詳述する。
さらに、EADMファシリティには、EADM解放ファシリティと呼ばれる任意選択のファシリティが関連付けられる。EADM解放ファシリティは、インストールされると、ストレージ・クラス・メモリの1つ以上のブロックにおけるデータの保持を必要としなくなったことをプログラムが指定するための手段を提供する。解放動作が、ストレージ・クラス・メモリのすべてのブロックに対してサポートされるか、またはストレージ・クラス・メモリのサブセットのみに対してサポートされるかは、モデルに依存する。
ストレージ・クラス・メモリのブロックが解放されると、プログラムは、新たなデータをそのブロック内へ転送してもよい。それがなされなければ、その後の、該ブロックからメイン・ストレージへデータを転送する要求は、不成功となる。
本発明の1つ以上の側面を組み入れる、もしくは使用する、またはその両方を行うコンピューティング環境の一実施形態について、図1を参照して説明する。コンピューティング環境100は、例えば、ニューヨーク州アーモンク市(Armonk,New York)のインターナショナル・ビジネス・マシーンズ・コーポレーション(IBM(IBM社の登録商標):International Business Machines Corporation)により提供されるz/Architecture(IBM社の登録商標)に基づく。z/Architecture(IBM社の登録商標)の実施形態は、「z/Architecture Principles of Operation」という題のIBM(IBM社の登録商標)刊行物である、IBM Publication No.SA22−7832−08、2010年8月に記載されており、その内容全体を参照によって本願明細書に引用したものとする。一例では、z/Architecture(IBM社の登録商標)に基づくコンピューティング環境として、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるzEnterprise 196(z196)システムがある。IBM(IBM社の登録商標)およびz/Architecture(IBM社の登録商標)は、米国ニューヨーク州アーモンク市のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標であり、zEnterprise 196およびz196は、同社の商標である。本願明細書で使用されるほかの名称が、インターナショナル・ビジネス・マシーンズ・コーポレーションまたはその他企業の登録商標、商標もしくは製品名であることもある。
一例として、コンピューティング環境100は、1つ以上のバス106を介してメイン・メモリ104に結合された1つ以上の中央処理ユニット102を含む。中央処理ユニットのうちの1つ以上は、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/OS(IBM社の登録商標)オペレーティング・システムなどのオペレーティング・システム108を実行するとよい。ほかの例では、中央処理ユニットのうちの1つ以上は、ほかのオペレーティング・システムを実行しても、オペレーティング・システムを実行しなくてもよい。z/OS(IBM社の登録商標)は、米国ニューヨーク州アーモンク市のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。
中央処理ユニット102およびメイン・メモリ104はさらに、1つ以上の接続122(例えばバスまたはその他の接続)を介してI/Oハブ120に結合されるとよい。I/Oハブは、1つ以上のI/Oアダプタ130への接続性を提供し、I/Oアダプタ130はさらに、1つ以上のソリッド・ステート・デバイス140に結合されている。このアダプタおよびソリッド・ステート・デバイスは、ストレージ・クラス・メモリの実装である(例えばフラッシュ・メモリ)。I/Oハブは、実施形態の1つ以上の側面を促進するI/Oサブシステム145の一部である。
図2に示されているように、さらなる実施形態では、コンピューティング環境150が、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/Architecture(IBM社の登録商標)に基づく中央処理コンプレックス(CPC:central processing complex)152を含むとよい。中央プロセッサ・コンプレックス152は、例えば、1つ以上のパーティション154と、ハイパーバイザ156と、1つ以上の中央プロセッサ158と、入出力サブシステム160の1つ以上のコンポーネントとを含む。この例では、パーティション154は、論理パーティション(例えばLPAR(logical partition))であり、そのそれぞれが、個別のシステムとして仮想化されたシステムのハードウェア・リソースのセットを含む。
各論理パーティション154は、個別のシステムとして機能できる。すなわち、各論理パーティションは、独立してリセットされること、必要に応じて初めにオペレーティング・システムまたはその他制御コードを搭載されること、さらに異なるプログラムとともに動作することができる。論理パーティションにおいて実行されるオペレーティング・システムまたはアプリケーション・プログラムは、全体的かつ完全なシステムにアクセスできるように見えるが、実際は、その一部分のみが利用可能である。ファームウェアと呼ばれる、ハードウェアとライセンス内部コード(LIC:licensed internal code)との組み合わせが、1つの論理パーティション内のプログラムによって、ほかの論理パーティション内のプログラムが妨げられないようにする。これにより、いくつかの異なる論理パーティションが、タイムスライス方式で単一または複数の物理プロセッサ上で動作できる。本願明細書で使用されるファームウェアには、例えば、プロセッサ(または処理を実行するエンティティ)のマイクロコード、ミリコード、もしくはマクロコード、またはそのいずれかの組み合わせが含まれる。これには、例えば、上位マシン・コードを実装するのに使用されるハードウェア・レベルの命令もしくはデータ構造またはその両方が含まれる。一実施形態では、これには例えば、信頼できるソフトウェアを含むマイクロコード、または基礎をなすハードウェアに特有でありシステム・ハードウェアに対するオペレーティング・システムのアクセスを制御するマイクロコードとして典型的に供給される、プロプライエタリ・コードが含まれる。
この例では、論理パーティションのいくつかは、常駐オペレーティング・システム(OS:operating system)170を有し、これは1つ以上の論理パーティションで異なってもよい。一実施形態では、少なくとも1つの論理パーティションが、ニューヨーク州アーモンク市のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/OS(IBM社の登録商標)オペレーティング・システムを実行している。
論理パーティション154は、中央プロセッサ158上で実行されるファームウェアによって実装される、ハイパーバイザ156により管理される。論理パーティション154およびハイパーバイザ156はそれぞれ、中央プロセッサに関連するメイン・メモリ159の個々の部分に存在する1つ以上のプログラムを含む。ハイパーバイザ156の一例は、ニューヨーク州アーモンク市のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるProcessor Resource/Systems Manager(PR/SM(IBM社の商標))である。
中央プロセッサ158は、論理パーティションに割り当てられる物理プロセッサ・リソースである。例えば、論理パーティション154は、1つ以上の論理プロセッサを含み、そのそれぞれが、パーティションに割り当てられた物理プロセッサ・リソース158の全部または一部分を表す。特定のパーティション154の論理プロセッサは、そのパーティション専用とされて、基礎をなすプロセッサ・リソースがそのパーティション用に予約されてもよく、または別のパーティションと共有されて、基礎をなすプロセッサ・リソースが別のパーティションに利用可能となる可能性があってもよい。
入出力サブシステム160(その一部分のみが示されている)は、ストレージ・クラス・メモリ180への接続性を提供する。この例では、ストレージ・クラス・メモリに関して、物理的な実装の詳細をプログラムから隠して、フラットとしてメモリを提示するアドレス空間が提供される。一例として、ストレージ・クラス・メモリには、システム全体で1つのアドレス空間があるが、構成(例えばLPAR、または別の実施形態では仮想ゲスト)の観点からは、ストレージ・クラス・メモリ・インクリメントがポピュレートされるアドレス空間が、システムの各構成に対し1つある。ストレージ・クラス・メモリ・アドレス空間は、メイン・ストレージ・アドレス空間とは独立し、別である。
z/Architecture(IBM社の登録商標)の具体的な一例では、I/Oサブシステムは、チャネル・サブシステムを含み、これは、I/O周辺制御ユニット(およびデバイス)とメイン・メモリとの間だけでなく、ストレージ・クラス・メモリとメイン・メモリとの間の情報のフローも導く。なお、I/Oサブシステムは、チャネル・サブシステム以外であってもよい。
チャネル・サブシステムの場合、EADM動作を実行するためにサブチャネルが使用される。これらのサブチャネルは、非同期データ・ムーバ(ADM:Asynchronous Data Mover)タイプ・サブチャネルと呼ばれ、ほかのI/Oタイプ・サブチャネルのようにI/Oデバイスではなく、EADM動作に関連する。ADMタイプ・サブチャネルは、デバイス番号を含まず、チャネルパス情報も含まない。構成に対して提供されるADMタイプ・サブチャネルの数は、モデルに依存する。ADMタイプ・サブチャネルは、サブシステム識別ワード(SID:subsystem identification word)によりアドレス指定される。
ADMタイプ・サブチャネルは、チャネル・サブシステムに対する拡張である拡張非同期データ・ムーバ・ファシリティによって使用される。本願明細書に記載されるように、EADMファシリティは、プログラムが、メイン・ストレージとストレージ・クラス・メモリとの間でのデータのブロックの転送を要求すること、ならびにそのほか、ストレージ・クラス・メモリのブロックのクリアまたはストレージ・クラス・メモリのブロックの解放などの動作を実行することを可能にする。一実施形態では、EADMファシリティがインストールされている場合、以下が当てはまる。
* EADM動作に使用される1つ以上のADMタイプ・サブチャネルが提供される。
* 指定のEADM動作ブロック(AOB:EADM−operation block)によって、EADM動作が指示される。AOBには、EADM要求ブロック(ARQB:EADM−request block)およびEADM応答ブロック(ARSB:EADM−response block)があり、EADM移動指定ブロック(MSB:move−specification block)のリストを指示する。移動動作に関して、MSBは、ブロックのサイズ、ブロックのソースおよび宛先位置、ならびにデータ移動の方向など、移動されるデータのブロックについての情報を含む。
AOBによって指定され得るMSBの最大数は、モデルに依存する。移動または動作を行うことをMSBが指定してよいブロックの最大カウントも、モデルに依存する。
* プログラムは、ADMタイプ・サブチャネルおよびEADM動作要求ブロック(ORB:operation request block)を指示するサブチャネル開始命令を発行することによって、EADM動作を開始する。さらに、EADM ORBは、AOBを指示する。命令は、EADM ORBのコンテンツを、指示されたサブチャネルに渡す。
* EADM動作を開始するためにサブチャネル開始が発行されると、チャネル・サブシステムは、指定された動作を非同期的に実行する。
* プログラムから見て、ストレージ・クラス・メモリは、モデル依存の最小ブロック・サイズでブロック・コンカレントのように見える。この、モデル依存の値は、SCMブロック・コンカレント性サイズと呼ばれる。
* EADM動作が完了すると、動作が開始されたADMタイプ・サブチャネルに関して、プログラムに対しI/O割り込みがペンディングにされる。
EADM ORBは、使用されるサブチャネル・キーおよびAOBのアドレスの指定を含む。AOBは、例えば、4Kバイト境界で指示され、最大4Kバイトまでのサイズとされ得る。4KバイトAOBに収まらないMSBが必要とされる場合、AOBは、データ転送に使用されるストレージ・エリアを指示せずにリスト内の次のMSBのアドレスを指示するMSBを使用して、さらなるストレージ・エリアに及ぶMSBリストを指定するとよい。
最初のEADM動作は、MSBをフェッチするために、指示されたEADM ORB内の情報、および指示されたAOB内のARQBを使用して、チャネル・サブシステムによって開始される。MSBは、処理されるEADM動作を指定および制御する情報を含む。
各EADM動作は、1つのMSBによって表される。MSBは、例えば、メイン・ストレージからストレージ・クラス・メモリへのデータのブロックの転送、ストレージ・クラス・メモリからメイン・ストレージへのデータのブロックの転送、ストレージ・クラス・メモリのブロックのクリア、およびストレージ・クラス・メモリのブロックの解放を指定し得る。
転送されるストレージのブロックが、メイン・ストレージ内で連続的でなければ、新たなMSBが使用されてもよく、またはMSBは、非連続的なブロックを指示するためにEADM間接データ・アドレス・ワード(AIDAW:EADM indirect data address word)のリストを指定することによって、間接アドレス指定を使用してもよい。
MSBは、一方向のみのデータの転送を指定するため、転送の方向に変更がある場合は新たなMSBが使用されなければならない。
EADM動作の終結は、通常は、チャネル終了およびデバイス終了の複合ステータス条件により示される。このステータス複合は、一次および二次ステータスの複合を表し、サブチャネルが、ステータスのクリア後に、別の開始機能に利用可能であることを示す。
EADM動作は、サブチャネル・クリア命令によって早期終了され得る。サブチャネル・クリア命令の実行は、サブチャネルにおけるAOBの実行を終了させ、実行中のAOBのインジケーションをサブチャネルからクリアし、クリア機能を非同期的に実行する。
EADM ORBおよび関連の制御構造に関するさらなる詳細について、図3〜8を参照して、以下記載する。まず、図3を参照して、EADM ORBの一実施態様について記載する。
一例として、EADM ORB200には以下が含まれる。
割り込みパラメータ202:このフィールドは、後のサブチャネル変更命令またはサブチャネル開始命令によって置き換えられるまで、サブチャネルにおいて変更されないまま保たれる。これらのビットは、サブチャネルに関してI/O割り込みが発生するとき、および割り込み要求が、例えばペンディング割り込みテスト(Test Pending Interruption)の実行によりクリアされるとき、I/O割り込みコード内に入れられる。
サブチャネル・キー204:このフィールドは、ARQBによって指定されたEADM動作のためのサブチャネル・キーを構成し、ARQBのフェッチ、MSBのフェッチ、ARSBの格納、およびデータ転送のためのメイン・ストレージのアクセスに適用される。このフィールドの値は規定値である。そうでない場合、プログラム・チェック条件がチャネル・サブシステムにより認識されるか、またはオペランド例外が認識される。
ORB拡張制御(X)205:このフィールドは、ORBが拡張型かどうかを指定する。このフィールドは、ADMタイプ・サブチャネルが指示される場合、指定の値である。そうでない場合、オペランド例外またはプログラム・チェック条件のいずれかが認識される。
EADM動作ブロック(AOB)アドレス(206):このフィールドは、EADM動作ブロック(AOB)のアドレスを指定する。このフィールドの特定のビットが規定値を含まなければ、オペランド例外またはプログラム・チェック条件のいずれかが認識される。
このフィールドが、フェッチから保護された位置を指示するか、または構成外の位置を指示する場合、開始機能は開始されない。この場合、サブチャネルは、一次、二次およびアラート・ステータスを伴うステータス・ペンディングになる。
チャネル・サブシステム(CSS:Channel Subsystem)優先度208:このフィールドは、指示されたサブチャネルに割り振られ、開始ペンディングである1つ以上のサブチャネルに対して開始機能が開始される場合にADMタイプ・サブチャネルの選択を順序付けるために使用される、チャネル・サブシステム優先度番号を含む。
ストレージ・クラス・メモリ(SCM)優先度210:このフィールドは、開始機能に関連するすべてのEADM動作に適用される優先度レベルを指定する、ストレージ・クラス・メモリ優先度(SCM)番号を含む。
SCM優先度フィールドのコンテンツがEADMファシリティによって認識されるかどうかは、モデルに依存する。このフィールドを認識しないモデルでは、フィールド・コンテンツは無視され、開始機能に関連するすべてのEADM動作に、黙示の優先度番号が割り振られる。
フォーマット(FMT:Format)212:このフィールドは、ORBのレイアウトを指定する。ADMタイプ・サブチャネルが指示される場合、このフィールドは、指定の値を含む。そうでない場合、オペランド例外が認識されるか、または特定の条件コードが設定される。
EADM ORBのEADM AOBアドレス206によって指定されるEADM動作ブロック(AOB)は、EADM動作を呼び出すために使用される情報を含む。AOBは、一例では、4Kバイト境界上に割り当てられ、可変長である。
一例では、図4に示されているように、EADM AOB220は、EADM要求ブロック(ARQB)222、EADM応答ブロック(ARSB)224、および最大で規定数(例えば124)までのMSBを含むMSBエリア226の3つのセクションを含む。なお、MSB分岐を使用する(すなわち、MSB内で次のMSBへの分岐フラグを使用することによる)場合、ARQBは、規定のMSBを超えるMSBの使用を指定してもよい。
EADM要求ブロック(ARQB)222の一実施形態について、図5を参照して説明する。一例では、ARQB222には以下が含まれる。
フォーマット(FMT)230:このフィールドは、ARQBのレイアウトを指定する。このフィールドの値は規定値である。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でコマンド・コード・エラーが示される。
コマンド・コード232:このフィールドは、EADMブロック移動コマンドを指定するためのものである。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でコマンド・コード・エラーが示される。
MSBカウント234:このフィールドは、EADM要求を構成するMSBのカウントを指定する。指定され得るMSBの最大カウントは、モデルに依存する。このフィールドの値は、ゼロより大きく、モデル依存の最大MSBカウント値以下でなければならない。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でMSBカウント・エラーが示される。
EADM ORBは、EADM要求ブロックに加えて、EADM応答ブロック(ARSB)も指定する。EADM応答ブロックは、この実施形態では、例外条件が認識された場合のみ意味を持つ。具体的には、ARSBは、EADMサブチャネル・ステータス・ワード(SCSW:subchannel status word)内にアラート・ステータスがあり、EADM拡張ステータス・ワード(ESW:extended status word)が意味を持ち、EADM拡張レポート・ワード(ERW:extended report word)内のEADM応答ブロック格納済み(R)ビットが1である場合にのみ意味を持つ。これらそれぞれについては後述する。ARSBが意味を持たない場合、AOB内のARSBのコンテンツは予測不能である。
関連するサブチャネルがサブチャネル・アクティブである間に、プログラムがARSB内に格納すると、予測不能な結果が発生し得る。
ARSBが格納される場合、既に転送されたデータがあっても、その量は予測不能である。
EADM応答ブロックの一実施形態について、図6を参照して説明する。一例では、ARSB224には以下が含まれる。
フォーマット(FMT)240:このフィールドは、ARSBのレイアウトを指定する。ARSBが格納される場合、このフィールドの値は、規定値として格納される。
例外フラグ(EF:Exception Flag)242:ARSBが格納される場合、このフィールドは、設定されると、ARSBが格納される例外の理由を指定する。例示の例外理由には以下が含まれる。
プログラム・チェック:プログラミング・エラーが検出されている。
保護チェック:ストレージ・アクセスが保護メカニズムによって妨げられている。保護は、ARQB、MSB、AIDAW、およびストレージ・クラス・メモリに転送されるデータのフェッチ、ならびにARSBにおける情報の格納およびストレージ・クラス・メモリから転送されたデータの格納に当てはまる。
チャネル・データ・チェック:メイン・ストレージに含まれ現在EADM動作の実行で使用されているデータに関する、修正されていないストレージ・エラーが検出された。プリフェッチされたときにデータが使用されなくても、検出されたときにこの条件は示されるとよい。データがチャネル・サブシステムによって参照されるとき、そのデータまたは関連するキーがメイン・ストレージ内に無効なチェック・ブロック・コード(CBC:checking block code)を有すると、チャネル・データ・チェックが示される。
チャネル制御チェック:チャネル制御チェックは、チャネル・サブシステム制御に影響を及ぼす任意のマシン誤作動によりもたらされる。条件には、ARQB、ARSB、MSB、AIDAW、または個々の関連するキーに関する無効なCBCが含まれる。この条件は、プリフェッチされたARQB、MSB、AIDAWまたは個々の関連するキーで無効なCBCが検出されたとき、そのARQB、MSB、またはAIDAWが使用されなくても、示されるとよい。
拡張非同期データ移動ファシリティ・チェック:ストレージ・クラス・メモリに含まれ現在EADM動作の実行で使用されているデータに関する、修正されていないエラーが検出された。
例外制御ブロック識別子(ECBI:Exception Control Block Identifier)244:ARSBが格納される場合、このフィールドは、各ビットが設定されると、EFフィールドによって指示される認識された例外に関連する以下の要素のうちの任意の1つまたは組み合わせを指定する、複数ビット・マスクである。
* 1つまたは複数の制御ブロック。
* メイン・ストレージ・データ・エリア。
* ストレージ・クラス・メモリ。
設定可能なビットは、例えば、EADM移動指定ブロック、EADM間接データ・アドレス、メイン・ストレージ内のデータ、もしくはストレージ・クラス・メモリ内のデータ、またはそのいずれかの組み合わせを表す。
ECBIフィールド内のビットは、単一の例外条件に関連する要素を記述する。例外条件に関して要素を識別できない場合、このフィールドは、例えばゼロを含む。
フィールド有効性フラグ(FVF:Field Validity Flag)246:ARSBが格納される場合、このフィールドは、各ビットがARSB内の特定のフィールドの有効性を示す、複数ビット・マスクを含む。有効性ビットが設定されている場合、対応するフィールドは格納済みであり、リカバリ目的で使用可能である。設定可能なビットは、例えば、失敗MSBアドレス・フィールド、失敗AIDAWフィールド、失敗メイン・ストレージ・アドレス・フィールド、もしくは失敗ストレージ・クラス・メモリ・アドレス・フィールド、またはそのいずれかの組み合わせを表す。
例外修飾子コード(EQC:Exception Qualifier Code)248:ARSBが格納される場合、このフィールドは、例外フラグ・フィールドにより指定された例外をさらに記述するコード値を含む。コード値は、例として以下を表し得る。
追加の記述は提供されない。この場合、例外制御ブロック識別子(ECBI)フィールドおよびフィールド有効性フラグ・フィールドによって有効とされた当該フィールドが、例外が認識されている制御ブロックを識別するとよい。
フォーマット・エラー:フォーマット・フィールドによって指定されたフォーマットは保留されている。この場合、例外制御ブロック識別子(ECBI)フィールドおよびフィールド有効性フラグ・フィールドによって有効とされた当該フィールドが、例外が認識されている制御ブロックを識別するとよい。
コマンド・コード・エラー:ARQBのコマンド・コード・フィールド内で指定された値が認識されない。
MSBカウント・エラー:ARQBのMSBカウント・フィールド内で指定された値がゼロであるか、またはモデル依存の指定可能なMSBの最大限度を上回っている。
フラグ・エラー:フラグ・フィールドによって指定されたフラグ・ビットは保留されている。この場合、例外制御ブロック識別子(ECBI)フィールドおよびフィールド有効性フラグ・フィールドによって有効とされた当該フィールドが、例外が認識されている制御ブロックを識別するとよい。
動作コード・エラー:保留されている動作コード値が指定されている。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。
ブロック・サイズ・エラー:保留されているブロック・サイズ値が指定されている。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。
ブロック・カウント・エラー:MSBのブロック・カウント・フィールド内で指定された値がゼロであるか、またはモデル依存の、MSBによって指定可能なブロックの最大カウントを上回っている。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。
メイン・ストレージ・アドレス指定エラー:メイン・ストレージ・アドレスが不正な境界で指定されている。そのようなアドレスは、MSBによって、またはAIDAWによって指示された可能性がある。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗AIDAWアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているAIDAWのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗メイン・ストレージ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているメイン・ストレージ・アドレスを含む。
ストレージ・クラス・メモリ・アドレス指定エラー:ストレージ・クラス・メモリ・アドレスが不正な境界で指定されている。そのようなアドレスは、MSBによって指示される。フィールド有効性フラグが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗AIDAWアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているAIDAWのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ストレージ・クラス・メモリ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているストレージ・クラス・メモリ・アドレスを含む。
メイン・ストレージ・アドレス例外:EADMファシリティが、構成において利用可能でないアドレスの使用を試行したか、または最大ストレージ・アドレスをラップした。そのようなアドレスは、MSBによって指示されたか、またはデータ転送の間にメイン・ストレージ・アドレスをインクリメントすることから生じた可能性がある。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗AIDAWアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているAIDAWのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗メイン・ストレージ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているメイン・ストレージ・アドレスを含む。
ストレージ・クラス・メモリ・アドレス例外:EADMファシリティが、構成において利用可能でないストレージ・クラス・メモリ・アドレスの使用を試行した。そのようなアドレスは、MSBによって指示されたか、またはデータ転送の間にストレージ・クラス・メモリ・アドレスをインクリメントすることから生じた可能性がある。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗AIDAWアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているAIDAWのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ストレージ・クラス・メモリ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているストレージ・クラス・メモリ・アドレスを含む。
メイン・ストレージ・エラー:修正されていないメイン・ストレージ・エラーが検出された。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗AIDAWアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているAIDAWのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗メイン・ストレージ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているメイン・ストレージ・アドレスを含む。
MSBリスト・エラー:AOBが、境界を越えるために次のMSBへの分岐(BNM:branch−to−next MSB)を指定せずに、4Kバイト境界を越えるMSBリストを指定するか、またはMSBが、指定されたMSBリスト内の最後のMSBであり、そのMSBによってBNMが指定されている。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。
MSB分岐エラー:AOBがMSBリストを指定し、そのリスト内で、あるMSB(分岐元MSB)が次のMSBへの分岐(BNM)を指定し、その分岐のターゲットであるMSBがさらにBNMを指定する。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されている分岐元MSBのアドレスを含む。
AIDAWリスト・エラー:MSBが、境界を越えるために次のAIDAWへの分岐(BNA:branch−to−next AIDAW)を指定せずに、4Kバイト境界を越えるEADM間接データ・アドレス・ワード(AIDAW)リストを指定する。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗AIDAWアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているAIDAWのアドレスを含む。
AIDAW分岐エラー:MSBが、EADM間接データ・アドレス・ワード(AIDAW)リストを指定し、そのリスト内で、あるAIDAW(分岐元AIDAW)が次のAIDAWへの分岐(BNA)を指定し、その分岐のターゲットであるAIDAWがさらにBNAを指定する。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗AIDAWアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されている分岐元AIDAWのアドレスを含む。
ストレージ・クラス・メモリの一時エラー:回復可能なストレージ・クラス・メモリ・エラーが検出されている。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗AIDAWアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているAIDAWのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ストレージ・クラス・メモリ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているストレージ・クラス・メモリ・アドレスを含む。
解放動作非サポート・エラー:解放動作がサポートされていないストレージ・クラス・メモリに対して解放動作が指定された。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗AIDAWアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているAIDAWのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ストレージ・クラス・メモリ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているストレージ・クラス・メモリ・アドレスを含む。
解放データ読み取りエラー:最後に成功した動作が解放動作であったストレージ・クラス・メモリに対して、読み取り動作が指定された。フィールド有効性フラグ・フィールドが、失敗MSBアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているMSBのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗AIDAWアドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているAIDAWのアドレスを含む。フィールド有効性フラグ・フィールドが、失敗ストレージ・クラス・メモリ・アドレス・フィールドが有効であることを示す場合、そのフィールドは、例外が認識されているストレージ・クラス・メモリ・アドレスを含む。
失敗MSBアドレス250:フィールド有効性フラグ・フィールドの指定のビットが設定されている場合、このフィールドは、例外が認識されているMSBのアドレスを示す。
失敗AIDAWアドレス252:フィールド有効性フラグ・フィールドの指定のビットが設定されている場合、このフィールドは、例外が認識されているAIDAWのアドレスを示す。
失敗メイン・ストレージ・アドレス254:フィールド有効性フラグ・フィールドの指定のビットが設定されている場合、このフィールドは、例外が認識されているメイン・ストレージのブロックのアドレスを示す。
失敗ストレージ・クラス・メモリ・アドレス256:フィールド有効性フラグ・フィールドの指定のビットが設定されている場合、このフィールドは、例外が認識されているストレージ・クラス・メモリのブロックの(例えば64ビット)SCMアドレスを含む。
EADM要求ブロックおよびEADM応答ブロックに加えて、EADM動作ブロック(AOB)は、1つ以上のEADM移動指定ブロック(MSB)も指定する。AOBは、例えば最大で124のMSBを含み得る。なお、プログラムは、ARQBのカウント・フィールド内でより大きな数のMSBを指示すること、およびMSBリストの継続部へ分岐するために次のMSBへの分岐(BNM)フラグを使用することによって、124を超えるMSBを指定し得る。MSBリストには継続部が複数あってもよいが、一実施形態では、このような継続部のいずれも、4Kバイトの境界を越えるためにBNMを使用することなく当該の境界を越えてはならない。MSBリストの継続部は、連続的である必要はない。MSBリストの継続部はそれぞれ、4Kバイト境界上で開始するよう指示される場合、最大128のMSBを含んでよい。MSBリスト内のMSBの総数は、ARQB内のMSBカウント・フィールドによって指定される。
EADM移動指定ブロックは、例えば、メイン・ストレージとストレージ・クラス・メモリとの間で移動されるストレージのブロック、またはストレージのブロックに対して実行される動作を記述する。MSB226の一実施形態について、図7を参照して説明する。例えば以下が含まれる。
フォーマット(FMT)260:このフィールドは、MSBのレイアウトを指定する。このフィールドの値は規定値である。そうでない場合、ARSBの例外修飾子コード・フィールド内でMSBフォーマット・エラーが示される。
動作コード(OC:Operation Code)262:このフィールドは、実行される動作を指定する。一例では、後述の、フラグ・フィールドの指定のビットが規定値である場合、このフィールドは、実行される動作を指定する。例示の動作には以下が含まれる。
ストレージ・クラス・メモリ・クリア:このコードが指示される場合、ストレージ・クラス・メモリ・アドレス、ブロック・サイズ、およびブロック・カウント・フィールドによって指定されるストレージ・クラス・メモリがクリアされる(例えばゼロに設定される)。メイン・ストレージ・アドレス・フィールドは、この動作には意味を有さない。
読み取り:このコードが指示される場合、データがストレージ・クラス・メモリからメイン・ストレージへ転送されるよう指定される。この動作の場合、ブロック・カウント、ブロック・サイズ、メイン・ストレージ・アドレス、およびストレージ・クラス・メモリ・アドレス・フィールドが意味を有する。
書き込み:このコードが指示される場合、データがメイン・ストレージからストレージ・クラス・メモリへ転送されるよう指定される。この動作の場合、ブロック・カウント、ブロック・サイズ、メイン・ストレージ・アドレス、およびストレージ・クラス・メモリ・アドレス・フィールドが意味を有する。
解放:このコードが指示され、EADM解放ファシリティがインストールされている場合、ストレージ・クラス・メモリ・アドレス、ブロック・サイズ、およびブロック・カウント・フィールドによって指定されたストレージ・クラス・メモリが解放される。メイン・ストレージ・アドレス・フィールドは、この動作には意味を有さない。EADM解放ファシリティがインストールされていない場合、このコードは保留される。
保留されている値が指定されると、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内で動作コード・エラーが示される。
フラグ・フィールドの指定のフラグ・ビットが規定値でない場合、このフィールドは保留され、チェックされない。
フラグ264:このフィールドは、設定され得る1つ以上のフラグを特定する。予約されているフラグ・ビットが、規定値に設定される。そうでない場合、ARSBの例外修飾子コード・フィールド内でフラグ・エラーが示される。例示のフラグには以下が含まれる。
* 次のMSBへの分岐(BNM):設定されている場合、このフラグは、MSBがEADM動作を指定せず、データの転送に使用されないことを示す。代わりに、EADM動作の指定に使用される次のMSBのアドレスを、メイン・ストレージ・アドレス・フィールドが指定する。
BNMフラグが設定され(例えば1)、メイン・ストレージ・アドレス・フィールドが、同じくBNMフラグが設定されているMSBを指定すると、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの失敗MSBアドレス・フィールドに分岐元MSBのアドレスが格納され、ARSBの例外修飾子コード・フィールド内でMSB分岐エラーが示される。
MSBが4Kバイト境界で終わり、AOBがさらなるMSBを指定し、BNMフラグが設定されていない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの失敗MSBアドレス・フィールドにMSBのアドレスが格納され、ARSBの例外修飾子コード・フィールド内でMSBリスト・エラーが示される。
MSBが、指定されたMSBリスト内の最後のMSBであり、BNMフラグが設定されている場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの失敗MSBアドレス・フィールドにMSBのアドレスが格納され、ARSBの例外修飾子コード・フィールド内でMSBリスト・エラーが示される。
BNMフラグが設定されている場合、残りのフラグ、動作コード・フィールド、ブロック・サイズ・フィールド、ブロック・セット・カウント・フィールド、およびストレージ・クラス・メモリ・アドレスは意味を有さない。
* 間接アドレス指定:設定されている場合、このフラグは、データ転送に使用される1つまたは複数のメイン・ストレージ位置をそれぞれ指示する、EADM間接データ・アドレス・ワード(AIDAW)またはAIDAWのリストの第1AIDAWのアドレスを、メイン・ストレージ・アドレス・フィールドが指示することを示す。設定されていない場合、このフラグは、メイン・ストレージ・アドレス・フィールドが、データ転送に使用されるメイン・ストレージ位置のアドレスを指示することを示す。
ブロック・サイズ(BS:Block Size)266:このフィールドは、メイン・ストレージおよびストレージ・クラス・メモリ両方に関して、転送されるデータ・ブロックのサイズおよび境界、または、動作が行われる(例えばクリアまたは解放される)ストレージ・クラス・メモリのブロックのサイズおよび境界を指定する。例には以下が含まれる。
4K:コード値が、ある規定値である場合、転送されるデータ・ブロックは、4Kバイト境界上にあり、4Kバイトのサイズである。
1M:コード値が、別の規定値である場合、転送されるデータ・ブロックは、1Mバイト境界上にあり、1Mバイトのサイズである。
保留されている値が指定されると、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でブロック・サイズ・エラーが示される。
BNMフラグが設定されている場合、このフィールドは無視される。
ブロック・カウント268:このフィールドは、転送または動作(例えばクリアもしくは解放)が行われるデータのブロックのカウントを含む。ブロック・サイズ・フィールドに基づき、これは、4Kバイトまたは1Mバイトいずれかのブロックのカウントである。
このフィールドの値は、ゼロより大きく、MSBによって指定可能な、モデル依存の最大ブロック・カウント以下でなければならない。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でブロック・カウント・エラーが示される。
BNMフラグが設定されている場合、このフィールドは保留され、チェックされない。
メイン・ストレージ・アドレス270:動作コード・フィールドが意味を有し(例えば、BNMフラグが設定されていない)、読み取りまたは書き込みいずれかの動作を指定し、フラグ・フィールド内の間接アドレス指定インジケータが設定されていない場合、このフィールドは、データ転送に使用されるメイン・ストレージ・アドレスを含み、以下が当てはまる。
* ブロック・サイズ・フィールドが4Kバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値(例えばゼロ)を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
* ブロック・サイズ・フィールドが1Mバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値(例えばゼロ)を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
動作コード・フィールドが意味を有し、読み取りまたは書き込みいずれかの動作を指定し、フラグ・フィールド内の間接アドレス指定インジケータが設定されている場合、このフィールドは、データ転送に使用されるAIDAWまたはAIDAWのリストの第1AIDAWのメイン・ストレージ・アドレスを含む。この場合、このフィールドの特定のビットが規定値を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
BNMフラグが設定されている場合、動作コードは意味を有さず、MSBは、EADM動作を指定しない。代わりにこのフィールドは、EADM動作を指定する次のMSBのメイン・ストレージ・アドレスを含む。この場合、このフィールドの指定のビットが規定値を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
ストレージ・クラス・メモリ・アドレス272:動作コード・フィールドが意味を有する場合、このフィールドは、データ転送に使用される、または動作(例えばクリアもしくは解放)が行われる、(例えば64ビット)ストレージ・クラス・メモリ・アドレスを含み、以下が当てはまる。
* ブロック・サイズ・フィールドが4Kバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値(例えばゼロ)を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でストレージ・クラス・メモリ指定エラーが示される。
* ブロック・サイズ・フィールドが1Mバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でストレージ・クラス・メモリ指定エラーが示される。
BNMフラグが設定されている場合、このフィールドは保留され、チェックされない。
前述のとおり、EADM間接データ・アドレス・ワードが指定され得る。EADM間接データ・アドレス・ワード(AIDAW)は、プログラムが、ストレージ・クラス・メモリと、メイン・ストレージの非連続的なブロックとの間でのデータのブロックの転送を指定できるようにする。AIDAWまたはAIDAWのリストは、MSB内の間接アドレス指定フラグが設定されている場合、MSBによって指示される。
単一のAIDAWによって転送されるデータの量は、MSB内のブロック・サイズ・フィールドによって指定される。AIDAWリスト内のAIDAWの数は、MSB内のブロック・カウント・フィールドによって指定される数に、次のAIDAWへの分岐を指定するAIDAWの数を加えた合計である。データ転送は、AIDAWリスト内で指定された順序とは異なる順序で処理されてもよい。さらに、AIDAWリスト内の複数のAIDAWによって指定されたデータ転送がコンカレントに処理されてもよい。
AIDAWは、例えば、クワッドワード境界上に割り当てられる。AIDAWのリストは、任意の長さとしてよいが、一例では、境界を越えるために次のAIDAWへの分岐(BNA)が指定されない限り、4Kバイト境界を越えてはならない。分岐のターゲットであるAIDAWが、BNAを指定するAIDAWと連続していなければならないという要件はない。なお、プログラムは、AIDAWリストを、できる限り少ない4Kバイト・ブロックで作成するべきである。さもなければ性能劣化が発生し得る。
図8を参照する。一例では、EADM間接データ・アドレス・ワード280には以下が含まれる。
フラグ282:例示のフラグには以下が含まれる。
次のAIDAWへ分岐(BNA):設定されている場合、このフラグは、メイン・ストレージ・アドレス・フィールドが、データを転送するのに使用されるメイン・ストレージ・アドレスを指定しないことを示す。代わりに、メイン・ストレージ・アドレス・フィールドは、データを転送するのに使用される次のAIDAWのアドレスを指定する。
BNAフラグが設定されていて、メイン・ストレージ・アドレス・フィールドが、同じくBNAフラグが設定されているAIDAWを指定する場合、ARSBの失敗MSBアドレス・フィールドにMSBのアドレスが格納され、ARSBの失敗メイン・ストレージ・アドレス・フィールドに分岐元AIDAWのアドレスが格納され、ARSB内の例外修飾子コード・フィールド内でAIDAW分岐エラーが示される。
AIDAWが4Kバイト境界で終わり、MSBがさらなるAIDAWを指定し、BNAフラグが設定されていない場合、ARSBの失敗MSBアドレス・フィールドにMSBのアドレスが格納され、ARSBの失敗メイン・ストレージ・アドレス・フィールドにAIDAWのアドレスが格納され、ARSB内の例外修飾子コード・フィールド内でAIDAWリスト・エラーが示される。
メイン・ストレージ・アドレス284:BNAフラグが設定されていない場合、このフィールドは、データ転送に使用されるメイン・ストレージ内のアドレスを含み、以下が当てはまる。
* MSB内のブロック・サイズ・フィールドが4Kバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値(例えばゼロ)を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
* MSB内のブロック・サイズ・フィールドが1Mバイト・ブロックを指定する場合、このフィールドの指定のビットが規定値(例えばゼロ)を含む。そうでない場合、チャネル・サブシステムによってプログラム・チェック条件が認識され、ARSBの例外修飾子コード・フィールド内でメイン・ストレージ指定エラーが示される。
* BNAフラグが設定されている場合、このフィールドは、データ転送に使用される次のAIDAWのメイン・ストレージ・アドレスを含む。
上述のとおり、EADM動作は、サブチャネル開始命令によって指定される。すなわち、プログラムは、ADMタイプ・サブチャネルおよびEADM ORBを指示するサブチャネル開始命令を発行することによって、EADM動作を開始する。命令が実行されると、EADM ORBのコンテンツが、指示されたサブチャネルに渡される。EADM ORBは、サブチャネル・キー(保護に使用される)および使用されるAOBのアドレスの指定を含む。
一例では、図9に示されているとおり、サブチャネル開始命令300は、サブチャネル開始機能を指定する動作コード302と、例えば開始されるADMタイプ・サブチャネルを指示するサブシステム識別子を含む汎用レジスタ1に位置する暗黙のオペランドである、第1オペランド304と、EADM ORBの論理アドレスである第2オペランド306とを含む。EADM ORBは、開始機能を制御する際に使用されるパラメータを指定する。EADM ORBのコンテンツは、サブチャネル開始の実行中、条件コードを設定する前に、指示されたサブチャネルに置かれる。サブチャネル開始を実行した結果、成功を示すコード以外の条件コードが設定される場合、EADM ORBのコンテンツは、指示されたサブチャネルに置かれない。
ADMタイプ・サブチャネルに対するサブチャネル開始の実行後、チャネル・サブシステムは、EADMファシリティを用いたEADM動作を開始するために、非同期的に開始機能を実行する。開始機能には、例えば以下が含まれる。
1.AOBからARQBをフェッチすること。
2.ARQBおよびそれが指示するMSBにより指定された、EADM動作を実行すること。
3.AOB内のARSBに、完了情報を条件付きで格納すること。
4.ADMタイプ・サブチャネルをステータス・ペンディングにさせ、開始機能の完了を示すこと。
図10を参照する。一実施形態では、サブチャネル開始命令が実行され、SIDがADMタイプ・サブチャネルを指示し、第2オペランドがEADM ORBを指示する場合、EADM動作が指定される(ステップ320)。EADM ORB内のパラメータが、指示されたサブチャネルに渡され(ステップ322)、チャネル・サブシステムが、EADMファシリティを用いて開始機能を実行するよう要求される(ステップ324)。チャネル・サブシステムは、サブチャネル開始命令の実行中に渡された情報を含む、サブチャネルにある情報を使用して、開始機能を非同期的に実行し、EADM動作を開始する(ステップ326)。
EADM動作(例えば最初の動作)の実行は、EADM ORBからの情報を使用して、AOBを取得すること(ステップ328)を含み、AOB内の情報を使用して、EADM要求ブロック(ARQB)および1つ以上のEADM移動指定ブロック(MSB)の指示が取得される(ステップ330)。続いて、指示された1つ以上のMSBが、メイン・ストレージからフェッチされ(ステップ332)、要求されたEADM動作の制御に、MSB内で指定された情報が使用される。最初の動作は、チャネル・サブシステムが、データ転送の開始を試行するか、またはクリアもしくは解放動作を試行したときに開始されたと見なされる。
チャネル・サブシステムは、MSB(単数または複数)内で要求された動作(単数または複数)を実行する(ステップ334)。この処理は、開始コマンドの実行とは非同期的である。
サブチャネル開始によって開始されたEADM動作が終わると(ステップ336)、チャネル・サブシステムは、ステータス条件を生成する(ステップ338)。これらの条件の生成は、I/O割り込みによってプログラムに通知される(ステップ339)。プログラムは、ペンディング割り込みテスト命令の実行によってこれらの条件を問い合わせることもできる。
生成されたステータス条件は、EADMサブチャネル・ステータス・ワード(SCSW)の形態でプログラムに提示される。EADM SCSWは、サブチャネル・テスト命令の実行によって、EADM割り込み応答ブロック(IRB:interruption response block)の一部として格納される。
EADM動作ブロック(AOB)内で指定されたEADM動作が終わると、チャネル・サブシステムは、一次および二次割り込みステータスを生成する。EADM動作は、サブチャネル・クリア、または開始機能の実行中に認識される異常条件によって終了され得る。
移動動作の場合、チャネル・サブシステムによるMSBの処理は、メイン・ストレージへ、またはメイン・ストレージからの情報のユニットのフローを制御する。MSB処理の間にデータ移動の方向を変更するには、新たなMSBが必要である。ARQBが、要求を構成するMSBのカウントを指示する。
各EADM動作は、1つのMSBによって表される。MSBは、以下のうちのいずれかを指定し得る。
* メイン・ストレージからストレージ・クラス・メモリへのデータのブロックの転送。
* ストレージ・クラス・メモリからメイン・ストレージへのデータのブロックの転送。
* ストレージ・クラス・メモリのブロックのクリア。
* EADM解放ファシリティがインストールされている場合、ストレージ・クラス・メモリのブロックの解放。
移動動作に関して転送されるストレージのブロックが、メイン・ストレージ内で連続的でなければ、新たなMSBが使用されてもよく、または、MSBは、非連続的なブロックを指示するためにEADM間接データ・アドレス・ワード(AIDAW)のリストを指定することによって、間接アドレス指定を使用してもよい。MSBは、一方向のデータの転送しか指定できないため、データ転送の方向に変更がある場合は新たなMSBが使用されなければならない。
以下は、EADMデータ転送の特徴である。
* データ転送は、指定されたMSBリストの順序に対して異なる順序で処理されてもよい。
* MSBリスト内の複数のMSBによって指定されたデータ転送がコンカレントに処理されてもよい。
* データ転送は、指定されたAIDAWリストの順序に対して異なる順序で処理されてもよい。
* AIDAWリスト内の複数のAIDAW内で指定されたデータ転送がコンカレントに処理されてもよい。
* プログラムおよびほかのCPU(central processing unit:中央処理ユニット)から見て、メイン・ストレージおよびストレージ・クラス・メモリへのアクセスは、必ずしも単一アクセス参照であるとは限らず、必ずしも左から右の方向で実行されるとは限らない。
* 2つ以上のEADM動作が現在アクティブであり、同じSCM位置、メイン・ストレージ位置、または両方をアドレス指定する場合、動作は、コンカレントに実行されてもよく、異なる動作からのコンテンツがインターリーブされてもよい。なお、以下の通りである。
− 入力動作の場合、EADMファシリティによって、SCMブロック・コンカレント性サイズと等しいサイズであるメイン・ストレージの各ブロックに格納されるデータは、コンカレントなEADM動作のうちの1つのみによってストレージ・クラス・メモリから転送されるデータから成る。
− 出力動作の場合、境界上にありSCMブロック・コンカレント性サイズと等しいサイズであるストレージ・クラス・メモリの各ブロックは、コンカレントなEADM動作のうちの1つのみによって指定されるデータを含む。
上記は、EADM動作が単一のAOBによって指定され、開始機能の同じインスタンスによって処理されるか、またはEADM動作が別々のAOBによって指定され、開始機能の別々のインスタンスによって処理されるかにかかわらず当てはまる。
* EADM動作がサブチャネルに対してアクティブであるとき、アクティブな動作に関連するARQB、MSB、AIDAW、および転送データに対してプログラムによって加えられる変更が、EADMファシリティにより観測されるかどうかは、予測不能である。
AOBによって指定されたすべてのMSBにより指示されたブロックがすべて、転送またはクリアまたは解放されたとき、サブチャネルは、サブチャネルにて格納されるステータスを生成し、ADMタイプ・サブチャネルに関するI/O割り込みを要求する。
EADM動作の終結は、通常は、チャネル終了およびデバイス終了の複合ステータス条件により示される。このステータス複合は、一次および二次ステータスの複合を表し、サブチャネルが、ステータスのクリア後に、別の開始機能に利用可能であることを示す。
上記のように、MSBは、データ転送動作、クリア動作、または解放動作を指定することができる。これらそれぞれについて、以下記載する。
移動動作が要求されると、データの1つ以上のブロックが、メイン・ストレージとストレージ・クラス・メモリとの間で移動される。例えば、読み取り動作の場合、指定されるSCMアドレスによって指示されるコンテンツを提供するSSD(solid state device:ソリッド・ステート・デバイス)からSCMデータが取得され、続いてそのコンテンツがメイン・メモリに格納される。書き込み動作の場合、このプロセスが逆になる。SSDを制御しているアダプタ(単数または複数)が格納を実行する。さらに詳細には、システム・ファームウェアは、移動動作を実行するために、まず、所与のSCMアドレスをアダプタ・アドレス(例えば、論理ボリューム・アドレスであり、論理ボリュームは1つ以上のSSDを含む)に変換する。例えば、SCMアドレスと、アダプタ・アドレスとを相関させる変換テーブルが使用される。続いて、システム・ファームウェアが、1つ以上の対応するアダプタ移動コマンド(例えば読み取りまたは書き込み)をI/Oアダプタの1つ以上に出す。アダプタ移動コマンドは、メイン・ストレージ・アドレス、アダプタ・アドレス、および転送サイズを含む。続いて、アダプタは、別の変換テーブルを使用して、アダプタ・アドレスに対応する1つ以上の物理SSDアドレスを特定する。I/Oアダプタは、メイン・ストレージからデータをフェッチしてそれをSSD上に格納すること、またはSSDからデータをフェッチしてそれをメイン・メモリに格納することのいずれかによって、移動動作を達成する。「Firmware Management of Storage Class Memory」と題する、同時提出された特許出願POU920110090US1号に、追加の詳細がさらに提供されており、その内容全体を参照によって本願明細書に引用したものとする。
クリア動作が実行される場合、コンテンツをゼロに設定することによって、ストレージ・クラス・メモリの指示されたインクリメントがクリアされる。
さらに、解放動作が実行される場合、標準のTRIMコマンド1つ以上が、対応するSCMアドレスを含むSSDに出されるとよい。TRIMコマンドは、ブロックの使用についてのヒントをプログラムが与えることを可能にし、SSDによる改善されたガベージ・コレクションを可能にする。TRIMコマンドは、オペレーティング・システムがSSDに、ストレージのどのブロックがもはや使用中とは見なされず、消去可能かを通知できるようにする。
EADM動作は、サブチャネル・クリア命令によって早期終了され得る。サブチャネル・クリア命令の実行は、サブチャネルにおけるAOBの実行を終了させ、実行中のAOBのインジケーションをサブチャネルからクリアし、クリア機能を非同期的に実行する。クリア機能が実行されると、サブチャネルがステータス・ペンディングになる前にデータ転送は終了され、転送されたデータの量は予測不能である。クリア機能の実行の結果、ステータスは生成されないが、チャネル・サブシステムにI/O割り込みをペンディングにさせる。
図11を参照する。一実施形態では、サブチャネル・クリア命令350は、サブチャネル・クリア機能を指示する動作コード352を含む。クリアされるサブチャネルは、例えば汎用レジスタ1内のサブシステム識別ワードによって指示される。
ADMタイプ・サブチャネルのクリア機能には以下が含まれる。
1.現在のデータ転送が終了されるのを確認する。
2.サブチャネルのフィールド、および条件付きでARSBを変更する。例えば、機能制御フィールドおよびアクティビティ制御フィールドにおいてクリア機能を示すようサブチャネル・ステータス・ワードが変更される。ARSBは、検出された任意のエラーを反映するよう変更され得る。
3.サブチャネルをステータス・ペンディングにさせ、クリア機能の完了を示す。
サブチャネル・テスト、サブチャネル変更、およびサブチャネル格納を含む、ADMタイプ・サブチャネルを指定することができるほかの命令も発行され得る。これらそれぞれについて、以下記載する。
図12を参照する。一例では、サブチャネル・テスト命令360は、例えば、サブチャネル・テスト機能を指定する動作コード362と、例えばテストされるサブチャネルを指示するサブシステム識別ワードを含む汎用レジスタ1内に位置する暗黙のオペランドである、第1オペランド364と、情報が格納される割り込み応答ブロック(IRB)の論理アドレスである第2オペランド366とを含む。
ADMタイプ・サブチャネルを指定するサブチャネル・テストが実行され、サブチャネルがステータス・ペンディングであり、指示されたEADM IRB(割り込み応答ブロック)に情報が格納されると、指定の条件コードが設定される。サブチャネルがステータス・ペンディングでなく、指示されたEADM IRBにステータス情報が格納されると、規定の条件コードが設定される。サブチャネルが提供または有効化されていない場合、何らのアクションもとられない。
一例では、EADM IRBは、サブチャネル・ステータス・ワード(SSW:Subchannel Status Word)および拡張ステータス・ワード(ESW:Extended Status Word)、ならびにファシリティにおいて存在し得る条件を記述するモデル依存のさらなる情報を提供するとよい拡張制御ワードを含む。これらのワードそれぞれについては、ADMタイプ・サブチャネルを指定することができる様々な命令について説明した後、さらに後述する。
図13を参照する。一実施形態では、サブチャネル変更命令370は、例えば、サブチャネル変更機能を指定する動作コード372と、例えば変更されるサブチャネルを指示するサブシステム識別ワードを含む汎用レジスタ1内に位置する暗黙のオペランドである、第1オペランド374と、サブチャネルに関連するサブチャネル情報ブロック(SCHIB:subchannel information block)の論理アドレスである第2オペランド376とを含む。
ADMタイプ・サブチャネルを指定するサブチャネル変更が実行され、指定されたサブチャネル情報ブロック(SCHIB)からの情報がサブチャネルに入れられると、特定の条件コードが設定される。サブチャネルがステータス・ペンディングである場合、何らのアクションもとられず、規定の条件コードが設定される。サブチャネルが開始またはクリア機能でビジーである場合、何らのアクションもとられない。
図14を参照する。サブチャネル格納命令の一例について記載する。一例では、サブチャネル格納命令380は、サブチャネル格納機能を特定する動作コード382と、例えば情報が格納されるサブチャネルを指示するサブシステム識別ワードを含む汎用レジスタ1内に位置する暗黙のオペランドである、第1オペランド384と、SCHIBの論理アドレスである第2オペランド386とを含む。
ADMタイプ・サブチャネルを指定するサブチャネル格納が発行され、SCHIBが格納されると、指定の条件コードが設定される。指示されたサブチャネルがチャネル・サブシステムにおいて提供されていない場合、何らのアクションもとられない。
ADMタイプ・サブチャネルのサブチャネル情報ブロック(EADM SCHIB)の一例について、図15Aを参照して説明する。一例では、EADM SCHIB400は、モデル依存の情報を含む、モデル依存のエリア401を含む。さらに、SCHIB400は、パス管理制御ワード(PMCW:path management control word)402およびサブチャネル・ステータス・ワード(SCSW)404を含み、これらそれぞれについて以下記載する。
一例では、EADM PMCW402は、例えば、図15Bに示されている以下のフィールドを含む。
割り込みパラメータ410:このフィールドは、I/O割り込みコードに格納される割り込みパラメータを含む。割り込みパラメータは、サブチャネル開始およびサブチャネル変更によって任意の値に設定可能である。サブチャネル内の割り込みパラメータ・フィールドの初期値はゼロである。
割り込みサブクラス(ISC:Interruption Subclass)412:このフィールドは、構成内の各CPUの、指定の制御レジスタ内のI/O割り込みサブクラス・マスク・ビットのビット・ポジションに対応する、指定の範囲の符号なし2進整数である複数のビットを含む。CPUの制御レジスタ内のマスク・ビットの設定は、そのCPUによる、サブチャネルに関する割り込み要求の認識を制御する。ISCは、サブチャネル変更によって、値の設定が可能である。サブチャネル内のISCフィールドの初期値は、例えばゼロである。
有効化(E:Enabled)414:このフィールドは、設定されている場合、すべてのEADM機能に関してサブチャネルが有効化されていることを示す。
サブチャネル・タイプ(ST:Subchannel Type)416:このフィールドは、サブチャネル・タイプを指示する。モデルおよび構成次第で、I/OサブチャネルまたはADMサブチャネルのサブチャネル・タイプのうちの1つ以上が提供され得る。
このフィールドの値は、サブチャネルが構成されるときに決定され、サブチャネル変更による変更はできない。
サブチャネル変更命令が実行され、ADMタイプ・サブチャネルを指示する場合、STは、ADMサブチャネルを示さなければならない。そうでない場合、オペランド例外が認識される。
図15Aに戻る。サブチャネル情報ブロックはさらに、サブチャネル・ステータス・ワード404を含む。EADMサブチャネル・ステータス・ワード(SCSW)は、ADMタイプ・サブチャネルおよび関連するEADM動作のステータスを記述するインジケーションをプログラムに提供する。図15Cに示されているとおり、一例では、サブチャネル・ステータス・ワード404には以下が含まれる。
サブチャネル・キー(キー)420:機能制御フィールド(後述)内のEADM開始機能インジケータが設定されている場合、このフィールドは、チャネル・サブシステムによって使用されるストレージ・アクセス・キーを含む。これらのビットは、サブチャネル開始が実行されたときにEADM ORB内で指定されたキーと同一である。
拡張ステータス・ワード・フォーマット(L)422:ステータス制御フィールド(後述)のステータス・ペンディング・インジケータが設定されている場合、このフィールドは、設定されると、フォーマット0 ESWが格納されたことを示す。フォーマット0 ESWは、以下のインジケーションのいずれかを含む割り込み条件がサブチャネル・テストによってクリアされると格納される。
* プログラム・チェック
* 保護チェック
* チャネル・データ・チェック
* チャネル制御チェック
* 拡張非同期データ移動ファシリティ(EADMF:Extended asynchronous data move facility)チェック
遅延条件コード(CC:Condition Code)424:EADM開始機能インジケータが設定され、ステータス・ペンディング・インジケータも設定されている場合、このフィールドは、サブチャネル・テストまたはサブチャネル格納が実行されたときにサブチャネルがステータス・ペンディングであった概略の理由を示す。遅延条件コードは、サブチャネルがステータスの任意の組み合わせを伴うステータス・ペンディングである場合であって、SCSW内の機能制御フィールドの開始機能インジケータが設定されている場合にのみ意味を持つ。
遅延条件コードは、設定される場合、サブチャネルが開始ペンディングである間にサブチャネルがサブチャネル・アクティブになることを妨げる条件が生じたかどうかを示すために使用される。
例示の遅延条件コードには以下が含まれる。
* 通常のI/O割り込みが提示された。
* EADM開始機能の開始の成功を妨げる条件に関してチャネル・サブシステムによって生成されたステータスが、EADM SCSW内にある。すなわち、サブチャネルはサブチャネル・アクティブ状態に移行しなかった。
CCW(channel−command word:チャネル・コマンド・ワード)フォーマット(F)426:EADM開始機能インジケータが設定されている場合、このフィールドは、規定値として格納される。
プリフェッチ(P:Prefetch)428:EADM開始機能インジケータが設定されている場合、このフィールドは、規定値として格納される。
拡張制御(E)430:このフィールドは、設定されている場合、EADM拡張制御ワード(ECW:extended control word)内にモデル依存の情報が格納されていることを示す。
機能制御(FC)432:機能制御フィールドは、サブチャネルにて示されているEADM機能を示す。例示の機能には以下が含まれる。
* EADM開始機能:設定されている場合、EADM開始機能が要求され、ADMタイプ・サブチャネルにてペンディングまたは進行中のいずれかであることを示す。EADM開始機能は、サブチャネル開始に関して正常な条件コードが設定されている場合に、サブチャネルにて示される。EADM開始機能は、サブチャネル・テストが実行され、サブチャネルがステータス・ペンディングである場合、サブチャネルにてクリアされる。EADM開始機能は、サブチャネル・クリアの実行中にもサブチャネルにてクリアされる。
* EADMクリア機能:設定されている場合、EADMクリア機能が要求され、ADMタイプ・サブチャネルにてペンディングまたは進行中のいずれかであることを示す。EADMクリア機能は、サブチャネル・クリアに関して正常な条件コードが設定されている場合に、サブチャネルにて示される。EADMクリア機能インジケーションは、サブチャネル・テストが実行され、サブチャネルがステータス・ペンディングである場合、サブチャネルにてクリアされる。
アクティビティ制御(AC:Activity Control)434:アクティビティ制御フィールドは、サブチャネルにて前に受け取られたEADM機能の現在の進行状況を示す。
サブチャネル・テストが実行されサブチャネルがステータス・ペンディングである場合、アクティビティ制御フィールド内のビットにより表されるすべての条件は、ADMタイプ・サブチャネルにてリセットされる。
例示のアクティビティには以下が含まれる。
* 開始ペンディング:設定されている場合、サブチャネルが開始ペンディングであることを示す。チャネル・サブシステムは、EADM開始機能を実行する最中であることも、そうではないこともある。サブチャネルは、サブチャネル開始に関して正常な条件コードが設定されると、開始ペンディングになる。EADM開始機能の実行時に、ARQBのフェッチを妨げる条件が存在することをチャネル・サブシステムが判断すると、サブチャネルは開始ペンディングのままとなる。
サブチャネルは、以下のうちのいずれかが発生すると、開始ペンディングでなくなる。
* チャネル・サブシステムが、AOBによって指定された最初のデータ転送の開始を試行する。
* サブチャネル・クリアが実行される。
* サブチャネル・テストが、サブチャネルにおけるステータス条件をクリアする。
クリア・ペンディング:設定されている場合、サブチャネルはクリア・ペンディングである。チャネル・サブシステムは、EADMクリア機能を実行する最中であることも、そうではないこともある。サブチャネルは、サブチャネル・クリアの指定の条件コードが設定されると、クリア・ペンディングになる。
サブチャネルは、以下のうちのいずれかが発生すると、クリア・ペンディングでなくなる。
* EADMクリア機能が実行される。
* サブチャネルが、ステータス・ペンディング条件のみをクリアする。
サブチャネル・アクティブ:設定されている場合、ADMタイプ・サブチャネルがサブチャネル・アクティブであることを示す。チャネル・サブシステムが、AOBによって指定された最初のデータ転送の開始、または最初の動作の実行(いずれか最初に生じる方)を試行すると、ADMタイプ・サブチャネルは、サブチャネル・アクティブであると言われる。
サブチャネルは、以下のうちのいずれかが発生すると、サブチャネル・アクティブでなくなる。
* サブチャネルがステータス・ペンディングになる。
* サブチャネル・クリアが実行される。
ステータス制御(SC:Status Control)436:ステータス制御フィールドは、サブチャネル・ステータスおよびデバイス・ステータス・フィールド内の情報によって記述される割り込み条件の、概要レベルのインジケーションをプログラムに提供する。サブチャネルにおける条件を受けて、2つ以上のステータス制御インジケータが設定されてもよい。
例示のステータス制御には以下が含まれる。
アラート・ステータス:設定されている場合、アラート割り込み条件が存在することを示す。アラート割り込み条件は、アラート・ステータスがサブチャネルにある場合に認識される。アラート・ステータスは、以下の条件のうちのいずれかの下で、チャネル・サブシステムによって生成される。
* ADMタイプ・サブチャネルが開始ペンディングであり、ステータス条件が最初のデータ転送の開始を妨げる。
* サブチャネルがサブチャネル・アクティブであり、サブチャネル・ステータスとしてレポートされている異常条件が、EADM動作を終了させた。
サブチャネル・テストまたはサブチャネル・クリアが実行されると、サブチャネルにてアラート・ステータスがクリアされる。
一次ステータス:設定されている場合、一次割り込み条件が存在することを示す。一次ステータスがサブチャネルにあると、一次割り込み条件が認識される。一次割り込み条件は、二次割り込み条件を伴う場合、サブチャネルにおけるEADM開始機能の完了を示す、応答型割り込み条件である。
サブチャネル・テストまたはサブチャネル・クリアが実行されると、サブチャネルにて一次割り込み条件がクリアされる。
二次ステータス:設定されている場合、二次割り込み条件が存在することを示す。二次ステータスがサブチャネルにあると、二次割り込み条件が認識される。二次割り込み条件は、一次割り込み条件を伴う場合、サブチャネルにおけるEADM開始機能の完了を示す、応答型割り込み条件である。
サブチャネル・テストまたはサブチャネル・クリアが実行されると、サブチャネルにて二次割り込み条件がクリアされる。
ステータス・ペンディング:設定されている場合、サブチャネルがステータス・ペンディングであること、および割り込み条件の原因を記述する情報が利用可能であることを示す。サブチャネル・テストが実行され、ステータス・ペンディング・ビットが設定されているEADM SCSWが格納されると、サブチャネルにてすべてのEADM SCSWインジケーションがクリアされ、サブチャネルはアイドル状態に入る。ステータス・ペンディング条件は、サブチャネル・クリアの実行中にもサブチャネルにてクリアされる。
ステータス・ペンディングが設定されている場合、サブチャネルARSBに関する、メイン・ストレージおよびストレージ・クラス・メモリへのアクセスはすべて終了している。
サブチャネル・ステータス438:ADMタイプ・サブチャネル・ステータス条件は、チャネル・サブシステムにより検出されて、サブチャネル・ステータス・フィールドに格納される。サブチャネル・ステータス・フィールドは、サブチャネルがステータス・ペンディングである場合に意味を持つ。機器の誤作動により生じる条件を除いて、サブチャネル・ステータスは、チャネル・サブシステムがEADM機能の処理に関与している場合のみ発生し得る。
ステータス条件の例には以下が含まれる。
* プログラム・チェック:プログラム・チェックは、チャネル・サブシステムによってプログラミング・エラーが検出されると発生する。
* 保護チェック:保護チェックは、チャネル・サブシステムが、保護メカニズムによって禁止されているストレージ・アクセスを試行すると発生する。保護は、ARQB、MSB、AIDAW、およびストレージ・クラス・メモリに転送されるデータのフェッチ、ならびにARSBにおける情報の格納およびストレージ・クラス・メモリから転送されたデータの格納に当てはまる。
* チャネル・データ・チェック:チャネル・データ・チェックは、メイン・ストレージからのデータのフェッチまたはメイン・ストレージへのデータの格納に関して、修正されていないストレージ・エラーが検出されたことを示す。
* チャネル制御チェック:チャネル制御チェックは、AOB、MSBもしくはAIDAWのフェッチもしくは格納に関して修正されていないストレージ・エラーが検出されたこと、またはチャネル・サブシステムがマシン誤作動に遭遇し、誤作動がEADM動作に影響を及ぼしたことを示す。
* 拡張非同期データ移動(EADM)ファシリティ・チェック:EADMファシリティ・チェックは、ストレージ・クラス・メモリへ、もしくはストレージ・クラス・メモリからのデータの転送に関して、またはストレージ・クラス・メモリ上での動作の実行に関して、EADMファシリティによりエラーが検出されたことを示す。
プログラム・チェック、保護チェック、チャネル・データ・チェック、チャネル制御チェック、またはEADMファシリティ・チェック条件がチャネル・サブシステムによって認識されると、EADM動作は終了され、チャネルは一次、二次およびアラート・ステータスを伴うステータス・ペンディングにされる。
EADM動作ブロック・アドレス(440):このフィールドは、EADM動作ブロック・アドレスを含む。
デバイス・ステータス442:これは、デバイス終了またはチャネル終了を含む。
サブチャネル・ステータス・ワードのESWフォーマット422が設定されていて、サブチャネルがステータス・ペンディングである場合、ADMタイプ・サブチャネルについての追加情報を指定するEADMサブチャネル拡張ステータス・ワード(EADM ESW)が提供される。
一例として、図15Dを参照する。EADMサブチャネル拡張ステータス・ワード450には以下が含まれる。
EADMサブチャネル・ログアウト452:EADMサブチャネル・ログアウトには、一例では以下が含まれる。
* 拡張ステータス・フラグ(ESF:Extended Status Flags):フィールドのビットが1である場合、チャネル・サブシステムによってエラーが検出されたことを指定するフィールド。
拡張ステータス・フラグの例には以下が含まれる。
キー・チェック:設定されている場合、チャネル・サブシステムが、EADM動作ブロック(AOB)内、EADM移動指定ブロック(MSB)内、またはEADM間接データ・アドレス・ワード(AIDAW)内のデータを参照しているときに関連するストレージ・キー上で無効なチェック・ブロック・コード(CBC)を検出したことを示す。
* AOBアドレス有効性:設定されている場合、SCSWのAOBアドレス・フィールドに格納されているアドレスがリカバリ目的で使用可能であることを示す。
例として以下を含む、EADM拡張レポート・ワード454。
設定されている場合、EADM SCSWに格納されている例外ステータスが指定のEADM動作ブロック(AOB)に関連することを指定する、EADM動作ブロック・エラー(B)インジケータ;および設定されている場合、EADM応答ブロック(ARSB)が格納されていることを示すEADM応答ブロック格納済み(R)インジケータ。
SCSWの拡張制御インジケータおよびSCSWの拡張ステータス・ワード・フォーマット・インジケータが設定されている場合、EADM拡張制御ワードは、EADMファシリティに存在し得る条件を記述する、モデル依存の性質の追加情報を提供する。
さらに、ADMタイプ・サブチャネルに関して、以下のチャネル・レポート・ワード(CRW:channel report word)がレポートされてもよい:サブチャネル・インストール・パラメータ初期化、サブチャネル・インストール・パラメータ回復、サブチャネル利用可能、チャネル・イベント情報ペンディング。
EADMファシリティ内で発生する非応答型イベントおよび誤作動は、チャネル・イベント情報ペンディングCRWによってレポートされるとよい。
メイン・ストレージとストレージ・クラス・メモリとの間でデータ・ブロックを移動し、ストレージ・クラス・メモリ上でその他の動作を実行するために使用される、拡張非同期データ・ムーバ・ファシリティについて、上記に詳細に記載した。一実施形態では、EADMファシリティおよびストレージ・クラス・メモリについての情報は、EADMコマンドを使用して取得される。具体的には、ストレージ・クラス・メモリは直接アクセス可能ではないため、ストレージ・クラス・メモリが割り当てられているかどうかを判断し、割り当てられていれば構成に関する情報を取得するための能力が提供される。具体的には、一例として、任意のストレージ・クラス・メモリが割り当てられているか否か、割り当てられている場合はその量および位置を、制御プログラム(例えばオペレーティング・システム)に伝達するための能力が提供される。利用可能なストレージ・クラス・メモリを判断するための能力は、本願明細書において、ディスカバリと呼ばれ、ディスカバリ機能の一例は、ストレージ・クラス・メモリ(SCM)情報格納(SSI:Store SCM Information)コマンドによって提供される。
ストレージ・クラス・メモリ情報格納(SSI)コマンドは、ストレージ・クラス・メモリおよび拡張非同期データ・ムーバ・ファシリティについての情報を取得するために使用される。SSIコマンドは、例えばチャネル・サブシステムから取得された以下の情報を返す。この情報については、さらに詳しく後述する。
1.以下を含むEADMファシリティの特徴:
* AOB毎の移動指定ブロック(MSB)の最大カウント。
* MSB毎の最大ブロック・カウント。
2.以下を含むストレージ・クラス・メモリの特徴:
* SCMインクリメント・サイズ。
* SCMアドレス空間内のSCMアドレス・インクリメントのリスト。
* モデル依存の最大SCMアドレス。
SCM情報格納(Store SCM Information)コマンドの実行は、同期式であり、チャネル・サブシステムに含まれたいずれの情報も変更しない。
SSIコマンドに関するさらなる詳細について、図16〜19を参照して説明する。まず図16を参照する。一実施形態では、SCM情報格納コマンドのコマンド要求ブロック500には、例えば以下が含まれる。
長さ502:コマンド要求ブロックの長さを指定する値。
コマンド・コード504:SCM情報格納コマンドのコマンド・コードを指定する値。
フォーマット(FMT)506:コマンド要求ブロックのフォーマットを指定する値。
継続トークン508:完了しなかった前の応答からの再開のための継続ポイントを要求できる値。継続トークンの値がゼロであれば、新たに開始される。継続トークンの値がゼロ以外であり認識されなければ、新たに開始される。
SSIコマンドの応答ブロック520の一実施形態について、図17を参照して説明する。例えば以下が含まれる。
長さ522:コマンド応答ブロックのバイト長を示す値。
応答コード524:SSIコマンドの実行を試行した結果を記述する値。応答コード値は、応答ブロックの長さを表す。例えば、選択された応答コードが格納される場合、長さは、96+N×16バイトを指定し、Nは、後述のストレージ・クラス・メモリ・アドレス・リスト・エントリの数である。一例では、Nは1≦N≦248の範囲である。
フォーマット(FMT)526:コマンド応答ブロックのフォーマットを示す値。フィールドの値は、例えばゼロである。
RQ528:以下に規定する応答修飾子値である。
応答修飾は存在しない。
指定された継続トークンが認識されず、ゼロが指定されたかのように扱われる。
MSB毎の最大ブロック・カウント(MBC:Maximum Block Count per MSB)530:移動指定ブロック(MSB)のブロック・カウント・フィールド内で使用され得る最大値を示す値。
最大SCMアドレス(MSA:Maximum SCM Address)532:モデル依存の最大SCMアドレスを示す値。アドレス指定可能な最上位のSCMインクリメント内の、最後のバイトのSCMアドレスである。
SCMインクリメント・サイズ(IS:Increment Size)534:SCMアドレス・リスト内の各SCMインクリメントのサイズを表す値であって、例えば2のべき乗である。
最大MSBカウント(MMC:Maximum MSB Count)536:EADM動作ブロック(AOB)内で指定され得る移動指定ブロック(MSB)の最大カウントを示す値。
構成可能な最大SCMインクリメント(MCI:Maximum Configurable SCM Increments)538:要求元の構成に対して構成され得るSCMインクリメントの最大数である値。
一実施形態では、MCIは2(64−IS)以下である。例えば、16GバイトSCMインクリメント・サイズの場合、16GバイトSCMインクリメントのすべてが、64ビット・アドレスのアドレス指定制約の中でアドレス可能でなければならないため、MCI≦2(64−34)である。さらに、((MCI+1)%IS)−1は、モデル依存の最大SCMアドレスを上回らない。
構成されたSCMインクリメントの数(NCI:number of configured SCM increments)は、後述の、正常なストレージ・クラス・メモリ構成コマンドが実行されるときに指定されてよい合計サイズ(TS:total size)を、TS≦(MCI−NCI)のように削減する。なお、システムの全容量と、ほかの構成に既に行われた割り当てとによって、初期化状態のSCMインクリメントの数は、ほかの点では要求元の構成のMCI限界まで有効に構成するような要求を、完全に満たすことができることも、できないこともある。
CPCの初期化SCMインクリメントの合計540:システムの(例えば中央処理コンプレックス(CPC)の)初期化状態のSCMインクリメントの数を表す値。システムが論理的に分割されている場合、これは、パーティションに対する/による割り当てに利用可能なインクリメントの数の合計である。
CPCの非初期化SCMインクリメントの合計542:システムの(例えばCPCの)非初期化状態のSCMインクリメントの数を表す値。
SCM測定ブロック・サイズ544:SCM測定ブロックの、バイト単位のブロック・サイズ(BS)である値。一例では、2のべき乗であり、最大SCM測定ブロック・サイズは、例えば4096バイトである。
SCMリソース・パーツの最大数546:SCMリソース・パーツ(RP:resource parts)(例えばI/Oアダプタ)のCPC上の最大数である値。各SCMインクリメントは、SCMリソース・パーツに関連する。各SCMリソース(例えば、1つ以上のI/Oアダプタおよび1つ以上のSSD)は、1つ以上のパーツを含む。SCMリソース・パーツの最大数は、例えば509である。
一例では、「リソース・パーツ」という用語は、ストレージ・クラス・メモリに関する測定情報の取得に使用されるよう定義される。各SCMインクリメントは、複数のアダプタにわたって分散させることができ、各アダプタは、伝えるべき何らかの利用/測定データを有する。したがって、返される各測定ブロックは、インクリメント識別子およびリソース識別子から成るタプルによって識別される。
SCMデータ・ユニット・サイズ548:SCMデータ・ユニットに含まれるバイトの数を示す、モデル依存の値。一例では、データ・ユニットは、ストレージ・クラス・メモリに関する測定情報の取得に使用されるよう規定される。レポートされるカウントは、バイトではなく、データ・ユニットのカウントである。
継続トークン550:モデル依存の値であって、これによって、後のSSIコマンドの発行が、このトークンによって表される継続ポイントにおいて継続し得る。継続トークンのコンテンツは、モデルに依存する。
ストレージ・クラス・メモリ・アドレス・リスト552:SCMアドレス・リストの起点。格納される応答コードが所定の値である場合、複数のSCMアドレス・リスト・エントリ(SALE:SCM address list entry)が格納される(例えば、(長さ−96)/16のSALEが格納される)。
一例では、格納されるSALEの数は、要求元の構成におけるSCMインクリメントの数、コマンド実行時のそれぞれのステータス、およびチャネル・サブシステム・モデルによって決まる。ゼロ以上のSALEが格納され、格納されている実際の数は、一例では、応答ブロックのサイズ(長さ)から96を減じ、続いてその結果を16で割ることによって求められる。
各SCMアドレス・リスト・エントリ(SALE)は、SCMアドレスのある範囲を占有する1つのSCMインクリメントを表す。SALEによって表されるSCMインクリメントの開始SCMアドレスは、SALEに含まれ、これは、対応するSCMインクリメントの第1バイトのSCMアドレスである。終了アドレスは、一例では、バイト単位でのSCMインクリメント・サイズを開始SCMアドレスに加えて、続いて1を減じることによって計算される。これは、SCMインクリメントの最後のバイトのSCMアドレスである。SALEによって表されるストレージ・クラス・メモリは、一実施形態では、自然な2ISバイト境界上で開始するSCMバイト位置の連続的なセットである。
SALEは、対応するSCMインクリメントが構成済み状態であり、応答ブロック内にSALEのための空間が利用可能である場合に格納される。応答ブロックのSCMアドレス・リスト内の空間が使い果たされていれば、継続トークンに値が格納され、実行は、特定の応答コードにより完了する。
2つ以上のSALEは、そのSCMアドレスの昇順で格納される。
SALEの一実施形態について、図18を参照して説明する。一例では、SALE552には、例えば以下が含まれる。
SCMアドレス(SA:SCM Address)560:SCMインクリメント・サイズによって決定される自然境界(2ISバイト)上に位置合わせした、SCMアドレス空間内の対応するSCMインクリメントのバイト0の開始SCMアドレスである値。
持続性属性(P:Persistence)562:SCMインクリメントに適用される現在の持続性ルールを示す値。SCMインクリメント内の任意の位置が、持続性ルールを継承する。考えられる持続性ルールには以下が含まれる。
ルール1−電源オフ時にデータを保持。
ルール2−パワー・オン・リセットまたはIMLまでデータを保持。
Op(operation:動作)状態564:SALEによって表されるストレージ・クラス・メモリ・インクリメントの動作状態を示す値。動作状態は、関連するSCMインクリメントが構成済み状態の場合のみ有効である。
動作状態の例には以下が含まれる。
動作可能(Op:Operational):SALEによって表されたストレージ・クラス・メモリが、すべてのI/O動作に利用可能である。構成が成功すると動作可能状態に入り、一時または永久エラー状態から抜け出ると再び動作可能状態に入る。
一時エラー(TE:Temporary error):SALEによって表されたストレージ・クラス・メモリが、いずれのI/O動作にも利用可能でない。データ状態は無効であるが、動作可能から一時エラーへの移行時のデータ・コンテンツは保たれる。SCMインクリメントへのアクセスが存在しない場合に、動作可能状態から一時エラー状態に入る。
永久エラー(PE:Permanent error):SALEによって表されたストレージ・クラス・メモリが、いずれのI/O動作にも利用可能でない。データ状態は無効であり、データは失われる。修正不能なエラー条件が認識された場合に、一時エラー状態または動作可能状態から永久エラー状態に入る。
動作が、EADM応答ブロックの例外修飾子コード内に永久エラーのインジケーションが設定された状態で完了する場合、少なくともその対応するSCMインクリメントが、永久エラー状態に入っている。しかし、その1つのSCMインクリメント以外も永久エラー状態に入っていることもある。
SCMインクリメントが動作可能状態ではない場合、そのインクリメント内の位置を参照するI/O動作が、EADM応答ブロックの例外修飾子コード内に設定された一時または永久いずれかのエラーにより、拡張非同期データ移動ファシリティ・チェックを認識する。
データ状態566:SALEによって表されるストレージ・クラス・メモリ・インクリメントのコンテンツのデータ状態を示す値。データ状態は、関連するSCMインクリメントが構成済みかつ動作可能状態の場合に有効である。
例示のデータ状態には以下が含まれる。
ゼロ化−SCMインクリメントのコンテンツはすべてゼロである。
有効−SCMインクリメントのコンテンツは、すべて成功した書き込みタイプ動作の蓄積である。インクリメント内のまだ書き込みが行われていない位置は、ゼロ化または予測不能のいずれかのままである。
予測不能−任意の書き込みタイプI/O動作以前のSCMインクリメントのコンテンツは、未知である。1つ以上の書き込みタイプ動作が実行された後、その位置への書き込みが成功した結果としてSCMインクリメントのデータ状態が有効になっても、ほかの書き込まれていない位置のデータ・コンテンツは予測不能のままである。
ゼロ化または予測不能のいずれかの状態から有効状態への移行は、最初の書き込みの成功により発生する。書き込まれるデータのサイズと、ターゲットSCMインクリメントのサイズとの任意の差が原因で、有効への変化は、まだ書き込まれていない任意のデータ位置の実際の条件を表現するものではない。そのような位置は、書き込みのためにアクセスされていないため、事実上まだ、ゼロ化または予測不能と表現される。
ランク568:SALEによって表されるストレージ・クラス・メモリ・インクリメントの概念上の品質を示す値。ランクは、関連するSCMインクリメントが構成済みかつ動作可能状態の場合にのみ有効である。ゼロの値は、ランクが存在しないことを意味する。指定の範囲内のゼロ以外の値は、ランクが存在することを意味する。この例では、1のランク値が、最高または最良のランクである。15のランク値が、最低または最悪のランクである。ほかの条件がすべて同じであれば、より高いランクのSCMがより低いランクのSCMよりも優先される。
R570:このフィールドは、SCMインクリメントが解放動作を認識することを示す。以下の挙動が関係する。
1.解放されたブロックは、読み取りの前にまず書き込まれる。そうでない場合、書き込みに読み取りが先行すると、読み取り動作のエラーが認識される。そのようなエラーの場合、SCMインクリメントは動作可能状態にとどまる。
2.初期構成の後、データ状態はゼロ化される。
3.プログラムは、指定のブロックを解放済み条件にする、解放と呼ばれる特殊な動作を行うことができる。
リソースID572:ゼロ以外の値は、SALEによって表されるSCMインクリメントを提供するリソースのリソース識別子(RID:resource identifier)である。RIDがゼロの場合、リソースIDは示されない。1つの特定の例では、RIDは、SCMインクリメントのストレージを提供するのと同数のアダプタおよびSSDを表す。特定のRAIDアルゴリズム、すなわち、複数のアダプタ/SSDにわたるコンカレントI/O動作を可能にして性能を改善するストライピングが利用されてもよいため、RIDは複合エンティティを表すこともある。
ストレージ・クラス・メモリの構成状態、ならびにストレージ・クラス・メモリ・アドレス・リストの動作およびデータ状態に関するさらなる詳細について、以下記載する。
まず、図20を参照する。構成状態と、これらの状態の中での移行をもたらすイベント/アクションとが表現されている。図のように、SCM状態は、構成済み、待機、および保留である。SCMは、保留から待機に入り、次に待機から構成済みに入ることができる。SCMは、構成済みから、構成解除されて保留の状態に入ることができる。
図21を参照する。動作状態と、これらの状態の中での移行をもたらすイベントとが示されている。SCMインクリメントは、構成されるには待機状態になければならず、構成アクションの完了に成功すると、動作可能状態になる。ゼロ化状態のSCMインクリメントに対する最初の書き込みは、SCMインクリメントを有効状態に移す。ルール1の持続性を有すると示されていないSCMインクリメントが、途中、電源オフ、続いて電源オンにされると、SCMインクリメントは予測不能状態に移る。
エラー(E:error)は、モデル依存のエラーの詳細に応じて、一時エラー(TE)状態または永久エラー状態(PE)への移行を生じ得る。接続性の確保(A:Acquisition)が、一時エラー状態から動作可能(Op)状態への移行を生じ得る。SCMインクリメントの構成解除は、SCMインクリメントの動作状態にかかわらず発生し得る。
図21はさらに、動作可能状態のときのデータ状態を、動作可能状態への入り方に従って示す。SCMインクリメントが構成され動作可能状態である場合、データ状態は、有効であり、対応するSCMインクリメントに当てはまる。有効なデータ状態は、ゼロ化、予測不能、および有効である。以下は、動作可能状態への様々な入り方で生じ得るデータ状態である。
* 待機から−ゼロ化(z:zeroed)
* 一時エラーから−有効(v:valid)
* 永久エラーから−予測不能(u:unpredictable)またはゼロ化(z)
* 動作可能から−有効(v)−最初の書き込み
* 動作可能から−予測不能(u:unpredictable)−電源が入れなおされ、持続性がルール1ではない。
動作可能状態にない場合、データ状態は無効である。
最初に構成されたとき、最初の書き込みの前は、SCMインクリメントのデータはゼロ化状態であり、つまり、コンテンツはすべてゼロである。
一時エラー状態に移るとき、またはその状態であるとき、SCMインクリメントのデータ・コンテンツは変更されないが、インクリメントはアクセス不可能である。したがって、データは有効であるというのが説明的であるかもしれないが、プログラムのアクセス可能性がないことから、あまり意味はない。したがって、このシナリオでは、データ状態は無効である。さらに、動作可能から一時エラーへの移行を生じるエラーに基づき、データ完全性に影響が及ぶと、永久エラー状態に入り、データ状態は無効のままとなり、データは失われる。コンカレント修復が、永久エラー状態のSCMインクリメントを、構成解除と、それに続く再構成とのいずれも伴わずに動作可能状態に移すことができる場合でも、元のデータはやはり失われ、データ状態が予測不能であるかまたはゼロ化であるかは、モデルに依存する。
SCMインクリメントの持続性およびそのRAS(reliability,accessibility and serviceability:信頼性、アクセス可能性、およびサービス性)特性も、有効から予測不能データ状態への変化を決定し得る。持続性を超過すると、データ状態は有効から予測不能に移行することが予想される。
ゼロ化または予測不能のいずれかのデータ状態から有効データ状態への移行は、最初の書き込みの成功により発生する。書き込まれるデータのサイズと、ターゲットSCMインクリメントのサイズとの任意の差が原因で、有効への変化は、書き込みがまだ行われていない任意のデータ位置の実際の条件を表現するものではない。そのような位置は、最初の書き込みアクセス以前は、事実上まだ、ゼロ化または予測不能と表現される。
SCMインクリメントが構成された後、SCM情報格納コマンドの応答において観測可能な任意の1つ以上のイベントが生じると、非応答型通知がペンディングにされる。以下が例である。
1.動作状態が、動作可能から一時エラーまたは永久エラーに変化するが、失敗動作においてレポートされない。
2.動作状態が一時エラーから動作可能に変化する。
3.動作状態が一時エラーから永久エラーに変化する。
4.ランク変化。
非応答型通知がペンディングにされない例には、以下が含まれる。
1.データ状態がゼロ化または予測不能から有効に変化する。
2.ストレージ・クラス・メモリ構成コマンドが完了する。
3.ストレージ・クラス・メモリ構成解除コマンドが完了する。
通知がペンディングのとき、プログラムは、通知を観測し、SCM情報格納コマンドを発行して情報を取得してもよい。SCM情報格納コマンドは、このほかにプログラムがSCMもしくはSALEまたはその両方についての情報を得たいときにも発行され得る。
一例では、通知は、プログラムに対して発行されるマシン・チェック割り込みを含み、対応するCRWがイベント・レポートを示す。プログラムは、CHSC(Channel Subsystem Call:チャネル・サブシステム呼び出し)イベント情報格納コマンドを発行し、ストレージ・クラス・メモリ変更通知を伝達するコンテンツ・コードを備える応答ブロックを取得する。
一実施形態では、SCM情報格納(SSI)コマンドは、ストレージ・クラス・メモリもしくはSCMアドレス・リスト・エントリまたはその両方についての情報を取得するためにプログラム(例えばオペレーティング・システム)によって発行される、チャネル・サブシステム・コマンドである。一例では、プログラムは、チャネル・サブシステム呼び出し命令を発行し、この命令のコマンド・ブロック内でSSIコマンドが示され、この命令は、チャネル・サブシステムに送られる。コマンドは、チャネル・サブシステムにて実行され、4Kバイト制御ブロックの残りの部分である応答ブロック内で応答が返される(すなわち、要求された情報が、応答ブロック用に指示されたメイン・ストレージ・エリアに格納される)。コマンドの動作に関するさらなる詳細について、図19を参照して説明する。
まず、プログラムは、SCM情報格納コマンドを要求するために、前述の要求ブロックを生成する(ステップ580)。要求ブロックは、チャネル・サブシステムによって取得され(ステップ582)、要求ブロックの有効性について、1つ以上の有効性チェックが行われる(例えば、有効な長さフィールド、有効なコマンド要求ブロック・フォーマット、インストールされたコマンドなど)。要求が有効でなければ(質問584)、続いて、問題を示す応答コードが応答ブロックに入れられ(ステップ586)、応答ブロックが返される(ステップ592)。
一方、要求が有効であれば(質問584)、続いてチャネル・サブシステムがマシン(例えばプロセッサなど)から情報を取得し(ステップ588)、応答ブロックに入れる(ステップ590)。応答ブロックが返される(ステップ592)。例えば、情報は、マシンの不揮発性ストレージに含まれ、システム初期化中にファームウェアによってのみアクセス可能なメイン・ストレージ内へファームウェアによってロードされる。チャネル・サブシステム(すなわちこの場合ファームウェア)は、ファームウェアによってのみアクセス可能なメイン・ストレージから読み取ることで情報を取得し、応答ブロックをポピュレートする。
ストレージ・クラス・メモリについての情報を受領するのに応答して、またはほかの理由で、ストレージ・クラス・メモリの構成を変更する決定が下されてもよい。この決定は、手動で、またはプログラムもしくはその他エンティティによって自動で下され得る。構成は、後述のとおり、インクリメントを追加すること、またはインクリメントを削除することによって変更され得る。
一例では、ストレージ・クラス・メモリを構成するために、ストレージ・クラス・メモリ構成コマンドが使用される。このコマンドは、システムの利用可能なプールから、ある量のストレージ・クラス・メモリが構成されることを要求する。この量は、SCMインクリメントのカウントとしてエンコードされたサイズとして指定される。
特に指定のない限り、要求を満たすために使用される数のSCMインクリメントは、初期化状態にある。要求されたSCMインクリメントの数が、構成可能な最大SCMインクリメントの限界を上回る場合、特定の応答コードが提供される。
各インクリメントのコンテンツは、ゼロであり、有効なCBCを備える。構成された各SCMインクリメントに関連し適用される持続性ルールが、例えば手動制御により設定される。
ストレージ・クラス・メモリ構成コマンドのコマンド要求ブロックの一実施形態が、図22に示されている。一例では、ストレージ・クラス・メモリ構成要求ブロック700には以下が含まれる。
長さ702:コマンド要求ブロック長の長さを指定する値。
コマンド・コード704:ストレージ・クラス・メモリ構成コマンドのコマンド・コードを指定する値。
フォーマット(FMT)706:コマンド要求ブロックのフォーマットを指定する値。
合計サイズ(TS)708:要求されるストレージ・クラス・メモリのサイズを指定する値であって、SCMインクリメントのカウントとしてエンコードされる。既に構成されているSCMインクリメントのカウントにTSを加えた結果が、構成可能な最大SCMインクリメント(MCI)の限界を上回ってはならない。初期化状態のSCMインクリメントの数が、指定された合計サイズよりも少なければ、特定の応答コードが提供される。
非同期完了コリレータ(ACC:Asynchronous Completion Correlator)710:後述の通知応答の非同期完了通知フィールド内で返される値。コリレータは、要求を開始した元のスレッドを再開する働きをする。
ストレージ・クラス・メモリ構成コマンドのコマンド応答ブロックの一実施形態が、図23に示されている。一実施形態では、コマンド応答ブロック730には以下が含まれる。
長さ732:コマンド応答ブロックの長さを示す値。
応答コード734:ストレージ・クラス・メモリ構成コマンドの実行を試行した結果を記述する値。
規定の応答コードが応答コード・フィールドに格納される場合、コマンドの処理を終えるために非同期プロセスが開始される。規定のコード以外の応答コードが応答コード・フィールドに格納される場合、SCMインクリメントは構成されず、何らの非同期プロセスも開始されず、後の通知は行われない。非同期プロセスの完了は通知応答内で示される。
フォーマット(FMT)736:コマンド応答ブロックのフォーマットを示す値。
ストレージ・クラス・メモリ構成コマンドは、SCMアドレス空間に、ある量のストレージ・クラス・メモリが構成されることを要求するために、プログラムによって発行される。SCMを構成するために使用される論理の一実施形態について、図24を参照して説明する。
まず、プログラムが、SCM構成コマンドを含むチャネル・サブシステム呼び出し命令を発行する(ステップ740)。SCM構成コマンドの要求ブロックは、チャネル・サブシステムによって取得され(ステップ742)、チャネル・サブシステムが、コマンドの実行を試行する(ステップ744)。コマンドの実行の試行によって、成功を示さない応答コードが生じると(質問746)、続いて応答コードがSCM構成コマンドの応答ブロックに入れられ(ステップ748)、応答ブロックが返される(ステップ750)。
成功の応答コードが示されると(質問746)、続いて応答コードが応答ブロックに入れられ(ステップ752)、応答ブロックが返される(ステップ754)。この例では、成功の応答コードは、要求ブロックの長さフィールドが有効であること、コマンドがシステムにおいて利用可能であること、コマンド要求ブロックが有効なフォーマットを有すること、チャネル・サブシステムがコマンドを実行できる(すなわちビジーでない)こと、要求された合計サイズが、要求対象の構成の構成可能な最大SCMインクリメントの限界を上回らないこと、および要求された合計サイズが初期化状態のSCMインクリメントの数を上回らないことを示す。
さらに、構成を完了する非同期プロセスが開始される(ステップ756)。この処理に関するさらなる詳細について、図25を参照して説明する。
一実施形態では、非同期処理は、1つ以上のインクリメントを割り当てるために、構成を実行する(ステップ760)。例えば、当該パーティションに対するI/O移動要求が新たに構成されたインクリメントにアクセスできるようにするために、構成されたSCMインクリメントそれぞれに関して内部制御が変更される。具体的には、チャネル・サブシステムがCHSC構成コマンドを受領するのに応答して、チャネル・サブシステムのファームウェアは、内部テーブルを調べて、要求を満たすのに十分なインクリメントがあることを確認し、構成に対して構成可能な最大SCMインクリメントを、要求が上回らないことを確認する。要求が有効であれば、ファームウェアは、1つ以上のテーブルを更新して、インクリメント(単数または複数)を構成に割り当て、インクリメント(単数または複数)を構成に対し動作可能状態にする。その結果、インクリメントは、構成からのI/O移動要求(上述)がアクセス可能となる。非同期プロセスの完了が、通知応答内で示される(ステップ762)。
ストレージ・クラス・メモリ構成コマンドの通知応答データは、イベント情報格納(SEI:Store Event Information)コマンドの応答ブロック内で返される。ストレージ・クラス・メモリ構成コマンドに使用される通知応答ブロックのフォーマットの一実施形態について、図26Aを参照して説明する。
一実施形態では、ストレージ・クラス・メモリ構成コマンドの通知応答ブロック800には以下が含まれる。
長さ802:コマンド応答ブロックの長さを示す値。
応答コード804:イベント情報格納CHSCコマンドの実行を試行した結果を記述する値。
フォーマット(FMT)806:コマンド応答ブロックのフォーマットを示す値。
通知タイプ808:これがEADM関係の通知であることを示す値。
P810:設定されている場合、チャネル・サブシステムが、このCHSCコマンドに応答して提供される情報に加えて、ペンディング・イベント情報を有することを指定する。
V812:設定されている場合、チャネル・サブシステムがオーバーフロー条件を認識したこと、およびイベント情報が失われたことを指定する。
コンテンツ・コード814:これが、ストレージ・クラス・メモリ構成コマンド要求によって開始された非同期プロセスの実行の終結への応答であることを示す値。
二次応答コード816:SCM構成コマンドの実行を試行した結果をさらに記述する値。
二次応答コードが指定の値である場合、もともと要求されたとおりにストレージ・クラス・メモリの完全な量が構成されている。そうでない場合、例えば、無効な長さフィールド、SCM構成コマンド未インストール、SCM構成コマンド・ブロックが無効なフォーマットを有すること、要求された合計サイズがMCIの限界を上回ること、要求された合計サイズが初期化状態のSCMインクリメントの数を上回ること、チャネル・サブシステム・ビジーなどを示す応答コードが提供されるとよい。
非同期完了コリレータ(ACC)818:もともと、対応するコマンド要求ブロック内で指定されている値。
ストレージ・クラス・メモリ構成コマンドに関する通知応答ブロックを返すために使用されるイベント情報格納コマンドの一実施形態について、図26B〜26Cを参照して説明する。
イベント情報格納コマンドは、チャネル・サブシステムによってペンディングにされたイベント情報を格納するために使用される。通常は、このコマンドは、プログラムがイベント情報ペンディング・チャネル・レポートを受領した結果として実行される。
イベント情報格納コマンドを実行することによって、チャネル・サブシステムに含まれる情報が変更され得る。イベント情報格納コマンドは、同期的に実行される。
イベント情報格納コマンドのコマンド要求ブロックの一実施形態について、図26Bを参照して説明する。一例では、要求ブロック830には以下が含まれる。
長さ832:このフィールドは、コマンド要求ブロックの長さを指定する。
コマンド・コード834:このフィールドは、イベント情報格納コマンドを指定する。
フォーマット(FMT)836:コマンド要求ブロックのフォーマットを指定する値。
通知タイプ選択マスク(NTSM:Notification Type Selection Mask)838:各ビット・ポジションが同じ数値の論理プロセッサ・セレクタ(LPS:logical processor selector)値に対応するマスク。一例では、ビット0は無視され、1と見なされる。1で開始する指定の範囲内のあるビット・ポジションがゼロである場合、そのビット・ポジションに対応する通知タイプは、応答ブロックに格納されず、ペンディングとして認識されると破棄される。当該のビットが1である場合、ビット・ポジションに対応する通知タイプが、応答ブロックに格納されるとよい。
図26Cを参照する。一実施形態における、イベント情報格納コマンドの応答ブロック850について、以下記載する。
長さ852:コマンド応答ブロックの初期の長さを指定する値。最終的な長さは、イベント情報格納コマンドの実行を試行した結果として格納される応答コードによって決まる。
成功を示すコード以外の応答コードが応答コード・フィールドに格納される場合、応答データ・エリアに情報は格納されない。
成功を示す応答コードが応答コード・フィールドに格納される場合、応答データ・エリアにイベント情報が格納される。
応答コード854:イベント情報格納コマンドの実行を試行した結果を記述する値。
イベント情報格納コマンドの場合、応答データ・エリアは、固定長部分および可変長部分を含む。
指定のフォーマットの応答の場合、NT(Notification Type:通知タイプ)がゼロ以外であれば、フォーマットは、特定の通知タイプによって決まり、コンテンツ・コード依存のフィールドのフォーマットは、特定の通知タイプおよびコンテンツ・コード(CC:content code)フィールドを総合して決まる。
フォーマット(FMT)856:コマンド応答ブロックのフォーマットを指定する値。
通知タイプ(NT)858:通知タイプ(NT)を示す値。SCM構成コマンドに関する特定の値が提供される。
Pフラグ860:設定されている場合、チャネル・サブシステムが、このCHSCコマンドに応答して提供される情報に加えて、ペンディング・イベント情報を有することを指定する。プログラムは、イベント情報格納コマンドを再び実行することによって追加情報を取得することができる。設定されていない場合、このフラグは、チャネル・サブシステムが追加のペンディング・イベント情報を有さないことを指定する。
Vフラグ862:設定されている場合、チャネル・サブシステムがオーバーフロー条件を認識したこと、およびイベント情報が失われたことを指定する。応答データ・エリアに含まれていないイベント情報が直前のペンディング情報である間に、オーバーフロー条件が認識された。オーバーフローは、応答データ・エリアに含まれている情報には影響を及ぼさない。
コンテンツ・コード(CC)864:応答データ・エリアに含まれている情報のタイプを記述する値。一例では、値は、1つ以上のSCMインクリメントが状態またはステータスを変更した、ストレージ・クラス・メモリ変更通知を示す。
コンテンツ・コード依存のフィールド866:このフィールドは、イベントに関する追加情報を含むとよい。
構成変更の通知の成功により、プログラムが、構成に関する詳細を取得するためにSCM情報格納コマンドを発行するよう促されるとよい。
ストレージ・クラス・メモリの増加に加え、ストレージ・クラス・メモリは削減されてもよい。ストレージ・クラス・メモリ構成解除コマンドは、ある量のストレージ・クラス・メモリが、要求元の構成のSCMアドレス空間から除去されることを要求する。構成解除されるSCMインクリメントは、構成済み状態でなければならない。
構成解除されるSCMインクリメントは、本願明細書に記載の、SCMインクリメント要求リスト内で指定される。SCMインクリメント要求リスト・エントリ(SIRLE:SCM increment request list entry)内で、1つ以上の連続的なSCMインクリメントが指定されるとよい。ほかのインクリメントのリスト(別名エクステント)と連続していないインクリメントのリストそれぞれに対して、別個のSIRLEが指定されるとよい。
持続性ルールにかかわらず、SCMインクリメントの構成解除の成功は、インクリメントを非初期化状態にする。ゼロ化が完了すると、SCMインクリメントは、非初期化状態から初期化状態に移行する。
ストレージ・クラス・メモリ構成解除コマンドのコマンド要求ブロックの一実施形態が、図27に示されている。ストレージ・クラス・メモリ構成解除コマンドのコマンド要求ブロック900には、例えば以下が含まれる。
長さ902:コマンド要求ブロックの長さを指定する値。一例では、長さは、32+(N%16)バイトであり、Nは、SCMインクリメント要求リスト・エントリ(SIRLE)のカウントである。この例での有効な長さは、16で均等に割り切れ、(32+1%16)≦L1≦(32+253%16)の範囲である。
コマンド・コード904:ストレージ・クラス・メモリ構成解除コマンドのコマンド・コードを指定する値。
フォーマット(FMT)906:コマンド要求ブロックのフォーマットを指定する値。
非同期完了コリレータ(ACC)908:上述の非同期完了通知内で返される値。
SCMインクリメント要求リスト910:このフィールドは、SCMインクリメント要求リスト(SIRL:SCM increment request list)を含む。SCMインクリメント要求リストは、1つ以上のエントリ(SIRLE)を含む。SIRLの長さは、長さフィールドの値から判断される。
SCMインクリメント要求リスト・エントリ(SIRLE)は、ストレージ・クラス・メモリの指定されるエクステントのサイズおよび位置を指定する(例えば、インクリメントのリスト)。エクステントまたはSCMエクステントは、ストレージ・クラス・メモリの指定のサイズである。
図28を参照する。一例では、SIRLE920には以下が含まれる。
合計サイズ(TS)922:構成解除されるストレージ・クラス・メモリのサイズを指定する値であって、SCMインクリメントのカウントとしてエンコードされる。
開始SCMアドレス(SA)924:SCMアドレスであって、SIRLEによって構成解除される第1または唯一のSCMインクリメントの除去が行われるSCMアドレス空間内の位置である値。この例では、第1SCMインクリメント内のオフセットを構成すると考えられる最下位ビット・ポジションは無視され、ゼロと見なされる。
合計サイズが1より大きい場合、第1インクリメント以降のさらなるSCMインクリメントはそれぞれ、SCMインクリメント・サイズによって均等に割り切れ、かつ構成済みのSCMインクリメントを含むSCMアドレスに位置し、その位置は、前のSCMインクリメントの最終バイトと連続している。すなわち、次の連続した位置にある。
開始アドレスおよび合計サイズの総合によって表現される空間が、構成済みのSCMインクリメントで完全に埋まっていなければ、指定の応答コードが提供され、いずれのSCMインクリメントも構成解除されず、何らの非同期プロセスも開始されず、後の通知も発生しない。
正常完了時、構成解除された各SCMインクリメントは保留状態に入っており、続いて、ゼロ化されてから待機状態に入る。
ストレージ・クラス・メモリ構成解除コマンドのコマンド応答ブロックが、図29に示されている。一実施形態では、コマンド応答ブロック950には以下が含まれる。
長さ952:コマンド応答ブロックの長さを示す値。
応答コード954:ストレージ・クラス・メモリ構成解除コマンドの実行を試行した結果を記述する値。
指定の値の応答コードが応答コード・フィールドに格納される場合、コマンドの処理を終えるために、コマンドの非同期プロセスが開始される。指定の値以外の応答コードが応答コード・フィールドに格納される場合、いずれのSCMインクリメントも構成解除されず、何らの非同期プロセスも開始されず、後の通知は行われない。非同期プロセスの完了は通知応答内で示される。
ストレージ・クラス・メモリ構成解除コマンドの同期部分が指定の応答コードにより完了する前に、SCMインクリメント要求リスト内のすべてのエントリが検査され、指定されたSCMインクリメントすべてが構成済み状態であることが確認される。
フォーマット(FMT)956:コマンド応答ブロックのフォーマットを示す値。
SCM構成解除コマンドに関連する論理の一実施形態について、図30〜31を参照して説明する。
まず、プログラムが、SCM構成解除コマンドを含むチャネル・サブシステム呼び出し命令を発行する(ステップ970)。SCM構成解除コマンドの要求ブロックは、チャネル・サブシステムによって取得され(ステップ972)、チャネル・サブシステムが、コマンドの実行を試行する(ステップ974)。コマンドの実行の試行によって、成功を示さない応答コードが生じると(質問976)、続いて応答コードがSCM構成解除コマンドの応答ブロックに入れられ(ステップ978)、応答ブロックが返される(ステップ980)。
成功の応答コードが示されると(質問976)、続いて応答コードが応答ブロックに入れられ(ステップ982)、応答ブロックが返される(ステップ984)。この例では、成功の応答コードは、要求ブロックの長さフィールドが有効であること、コマンドがシステムにおいて利用可能であること、コマンド要求ブロックが有効なフォーマットを有すること、チャネル・サブシステムがコマンドを実行できる(すなわちビジーでない)こと、およびSCMインクリメントがもともと構成済み状態であったことを示す。
さらに、構成解除を完了する非同期プロセスが開始される(ステップ986)。この処理に関するさらなる詳細について、図31を参照して説明する。
一実施形態では、非同期処理は、構成解除を実行する(ステップ990)。例えば、1つ以上のインクリメントが、割り当て解除される。SCMインクリメントは、構成済み状態から保留状態に移される。保留状態に入ると、ゼロ化プロセスが続き、完了すると、SCMインクリメントは待機状態に移行する。非同期プロセスの完了が、通知応答内で示される(ステップ992)。
ストレージ・クラス・メモリ構成解除コマンドの通知応答データは、イベント情報格納(SEI)CHSCコマンドの応答ブロック内で返される。この応答ブロックの一例については、図26Aを参照して説明している。なお、この例におけるコンテンツ・コードは、これがストレージ・クラス・メモリ構成解除コマンド要求によって開始された非同期プロセスの実行の終結に対する応答であることを示す。同じく、二次応答コードはさらに、ストレージ・クラス・メモリ構成解除コマンドの実行を試行した結果を記述する。
さらなる実施形態において、ストレージ・インクリメントの割り当ておよび割り当て解除は、ユーザに提示されるパネルを介して要求され得る。例えば、ユーザがシステムにパラメータを指定できるグラフィカル・インターフェースを提供するために、サービス要素が使用される。ストレージ・クラス・メモリに関して、ストレージ・クラス・メモリ割り当てパネルと呼ばれるパネルにより、ユーザは以下の動作を実行できる。
1.所与の構成に対して構成可能な最大インクリメント(MCI)を指定する。
2.インクリメントを構成に割り当てる。
3.インクリメントを構成から割り当て解除する。
さらに、パネルにより、構成のインクリメント割り当ておよびMCI、ならびに利用可能プール、利用不可能プール、および非初期化プール内のインクリメントの数を閲覧できる。SEにおけるアクションが原因で、インクリメントの割り当てが変化する場合、またはプールのうちの1つのサイズが変化する場合、構成に通知が送られる。
ストレージ・クラス・メモリを管理するファシリティについて、詳しく上述した。これは、メモリの具体的な知識なしにプログラムがメモリにアクセスすることを可能にする、抽象化を提供する。本発明の1つ以上の側面によれば、メイン・ストレージとSCMとの間でデータを移動させ、SCMをクリアまたは解放し、SCMを構成または構成解除し、SCMの構成を知るための能力が提供される。その他の能力も提供される。
一実施形態では、ストレージ・クラス・メモリは、複数のデバイスおよびI/Oアダプタにまたがる物理的な実装とは独立して、ユーザ・レベルのプログラムに対し、フラット・メモリ空間として提示される。
チャネル・サブシステムもしくはADMファシリティまたはその両方に関する詳細は、「Method and Means for Enabling Virtual Addressing Control By Software Users Over A Hardware Page Transfer Control Entity」と題された、Antogniniらの1994年12月27日発行の米国特許第5,377,337号、「Asynchronous Co−Processor Data Mover Method and Means」と題された、Brentらの1995年8月15日発行の米国特許第5,442,802号、および「Method and System for Pipelining the Processing of Channel Command Words」と題された、1996年6月11日発行の米国特許第5,526,484号に記載されており、それぞれの内容全体を参照によって本願明細書に引用したものとする。
さらに、チャネル・サブシステムおよびそれに関連する命令に関するさらなる情報(z/Architecture(IBM社の登録商標)の具体的な実装に関する)を以下に提供する。
入出力(I/O)
「入力」および「出力」という用語は、I/Oデバイスとメイン・ストレージとの間のデータの転送を表現するために使用される。この種の転送を伴う動作は、I/O動作と呼ばれる。I/O動作を制御するために使用されるファシリティは、集合的にチャネル・サブシステムと呼ばれる(I/Oデバイスおよびその制御ユニットが、チャネル・サブシステムに連結される)。
チャネル・サブシステム
チャネル・サブシステムは、I/Oデバイスとメイン・ストレージとの間の情報のフローを導く。チャネル・サブシステムは、I/Oデバイスと直接通信するタスクからCPUを解放し、I/O処理とコンカレントにデータ処理が進行することを可能にする。チャネル・サブシステムは、I/Oデバイスへ、またはI/Oデバイスからの情報のフローを管理する際に、1つ以上のチャネルパスを通信リンクとして使用する。I/O処理の一環として、チャネル・サブシステムはさらに、チャネルパスの利用可能性をテストすることによってパス管理動作を実行し、利用可能なチャネルパスを選択し、デバイスによるI/O動作の実行を開始する。
チャネル・サブシステム内には、サブチャネルがある。チャネル・サブシステムを介してプログラムがアクセスできるI/Oデバイスそれぞれに、1つのサブチャネルが提供され、それ専用とされる。
複数サブチャネル・セット・ファシリティは、任意選択のファシリティである。インストールされると、サブチャネルは、複数のサブチャネル・セットに分割され、各サブチャネル・セットは、1つの専用サブチャネルをI/Oデバイスに提供するとよい。使用されるモデルおよびインターフェース次第で、一部のI/Oデバイスは、特定のサブチャネル・セットを介してのみアクセスが許されてもよい。
各サブチャネルは、関連するI/Oデバイスと、そのチャネル・サブシステムへの連結とに関する情報を提供する。サブチャネルはさらに、関連するI/Oデバイスに関係するI/O動作およびほかの機能に関する情報を提供する。サブチャネルは、チャネル・サブシステムが関連のI/Oデバイスについての情報をCPUに提供する手段であり、CPUは、この情報を、I/O命令を実行することによって取得する。提供されるサブチャネルの実際の数は、モデルおよび構成に依存し、最大アドレス指定能力は、各サブチャネル・セットにおいて0〜65,535である。
I/Oデバイスは、制御ユニットを介して、チャネルパスによりチャネル・サブシステムに連結される。制御ユニットは、2つ以上のチャネルパスによってチャネル・サブシステムに接続されてもよく、I/Oデバイスは、2つ以上の制御ユニットに連結されてもよい。モデルおよび構成次第で、サブチャネルを介する合計8つもの異なるチャネルパスによって、個々のI/Oデバイスにチャネル・サブシステムがアクセスできてもよい。チャネル・サブシステムによって提供されるチャネルパスの総数は、モデルおよび構成に依存し、最大アドレス指定能力は0〜255である。
チャネル・サブシステムの性能は、その使用法、およびそれが実装されるシステム・モデルに依存する。各チャネルパスは異なるデータ転送能力を備え、特定の速度でのみデータを転送するよう設計されたI/Oデバイス(例えば、磁気テープ・ユニットまたはディスク・ストレージ)は、少なくともこの速度に対応できるチャネルパスでしか、動作することができない。
チャネル・サブシステムは、I/O動作の制御のための一般的なファシリティを含む。これらのファシリティが、I/Oデバイスの制御のために特殊設計された、独立した自律型機器の形態で提供される場合、I/O動作は、CPU内のアクティビティと完全にオーバーラップされる。サブチャネルがアドレス指定不能なメイン・ストレージの一部として実装されている場合にチャネル・サブシステムがサブチャネルにアクセスするために必要とされ得る当該サイクルのほか、I/O動作中にチャネル・サブシステムによって要求されるメイン・ストレージ・サイクルは、メイン・ストレージ内の最終位置へ、または最終位置からのデータおよび制御情報の転送に必要とされるもののみである。これらのサイクルは、CPUおよびチャネル・サブシステムの両方がコンカレントに同じメイン・ストレージ・エリアの参照を試行する場合を除いて、CPUプログラムを遅延させない。
サブチャネル・セット
複数サブチャネル・セット・ファシリティがインストールされている場合、サブチャネルは、複数サブチャネル・セットに分割される。サブチャネル・セット識別子(SSID:subchannel−set identifier)によりそれぞれ識別された、最大4つのサブチャネル・セットが存在し得る。複数サブチャネル・セット・ファシリティがインストールされていない場合は、ゼロのSSIDを備える1つのみのサブチャネル・セットが存在する。複数サブチャネル・セット・ファシリティが有効化されていない場合、プログラムには、サブチャネル・セット・ゼロのみが見える。
サブチャネル
サブチャネルは、プログラムに対し、デバイスの論理的な外観を提供し、単一のI/O動作を維持するのに必要な情報を含む。サブチャネルは、チャネル・プログラム指示、チャネルパス識別子、デバイス番号、カウント、ステータス・インジケーション、およびI/O割り込みサブクラス・コードの形態の情報と、パス利用可能性およびペンディング中または実行中の機能についての情報とを含む、内部ストレージから成る。I/O動作は、デバイスに関連するサブチャネルを指示するI/O命令を実行することによって、デバイスを用いて開始される。
各デバイスは、インストール時の構成中に割り振られる、各チャネル・サブシステム内の1つのサブチャネルを用いてアクセス可能である。デバイスは、物理的に識別可能なユニットであってもよく、制御ユニットの内部に収容されていてもよい。例えば、一部のディスク・ストレージ・デバイスでは、データの読み出しに使用される各アクチュエータがデバイスと見なされる。すべての場合において、チャネル・サブシステムの観点からのデバイスとは、1つのサブチャネルに一意的に関連付けられたエンティティであって、デバイスにアクセスできるチャネルパスのタイプの規定の通信プロトコルを使用したチャネル・サブシステムによる選択に応答する、エンティティである。
一部のモデルでは、サブチャネルは、一括して提供される。これらのモデルでは、連結されたデバイスよりも多くのサブチャネルが提供され得る。提供されているがデバイスを割り振られていないサブチャネルは、いずれの機能の実行のためにもチャネル・サブシステムによって使用されず、サブチャネルのサブチャネル情報ブロックに、関連するデバイス番号有効ビットをゼロとして格納することによって示される。
チャネル・サブシステムによって提供されるサブチャネルの数は、関連するデバイスへのチャネルパスの数とは独立している。例えば、代替チャネルパスを介してアクセス可能なデバイスも、やはり単一のサブチャネルによって表される。各サブチャネルは、サブチャネル・セット・ファシリティがインストールされている場合、16ビット・バイナリ・サブチャネル番号および2ビットSSIDを使用することによってアドレス指定される。
サブチャネルでのI/O処理がSTART SUBCHANNELの実行によって要求された後、CPUは、ほかの作業のために解放され、チャネル・サブシステムが、データをアセンブルまたは逆アセンブルし、I/Oデバイスとメイン・ストレージとの間のデータ・バイトの転送を同期させる。これを達成するために、チャネル・サブシステムは、メイン・ストレージにおけるデータの宛先またはソースを記述するアドレスおよびカウントを維持および更新する。同じく、プログラムに通知されるべき信号をI/Oデバイスが提供すると、チャネル・サブシステムは、その信号をステータス情報に変換し、その情報を、プログラムによる読み出しが可能なサブチャネルに格納する。
入出力デバイスの連結
チャネルパス
チャネル・サブシステムは、チャネル・サブシステムと制御ユニットとの間のチャネルパスを用いてI/Oデバイスと通信する。制御ユニットは、2つ以上のチャネルパスによってチャネル・サブシステムによりアクセス可能であってもよい。同じく、I/Oデバイスは、チャネル・サブシステムへの1つ以上のチャネルパスをそれぞれ有する2つ以上の制御ユニットを介して、チャネル・サブシステムによってアクセス可能であってもよい。
サブチャネルに対し構成された複数のチャネルパスによってチャネル・サブシステムに連結されているデバイスは、利用可能なチャネルパスのいずれかを使用してチャネル・サブシステムによってアクセスされるとよい。同じく、動的再接続機能を有しマルチパス・モードで動作しているデバイスは、I/O動作のチェーンを継続するためにチャネル・サブシステムに論理的に再接続するとき、サブチャネルに対し構成された利用可能なチャネルパスのうちのいずれかをデバイスが選択できるよう動作するために、初期化されることが可能である。
チャネル・サブシステムは、2タイプ以上のチャネルパスを含み得る。チャネル・サブシステムによって使用されるチャネルパス・タイプの例は、ESCON(IBM社の登録商標)I/Oインターフェース、FICON(IBM社の登録商標)I/Oインターフェース、FICON(IBM社の登録商標)変換I/Oインターフェース、ならびにIBM(IBM社の登録商標)System/360およびSystem/370 I/Oインターフェースである。「シリアルI/Oインターフェース」という用語は、ESCON(IBM社の登録商標)I/Oインターフェース、FICON(IBM社の登録商標)I/Oインターフェース、およびFICON(IBM社の登録商標)変換I/Oインターフェースを指すために使用される。「パラレルI/Oインターフェース」という用語は、IBM(IBM社の登録商標)System/360およびSystem/370 I/Oインターフェースを指すために使用される。
ESCON(IBM社の登録商標)I/Oインターフェースについては、System Library publication「IBM Enterprise Systems Architecture/390 ESCON I/O Interface」SA22−7202に記載されており、その内容全体を参照によって本願明細書に引用したものとする。
FICON(IBM社の登録商標)I/Oインターフェースについては、ANSI standards document「Fibre Channel−Single−Byte Command Code Sets−2」(FC−SB−2)に記載されている。
IBM(IBM社の登録商標)System/360およびSystem/370 I/Oインターフェースについては、System Library publication「IBM System/360 and System/370 I/O Interface Channel to Control Unit OEMI」GA22−6974に記載されており、その内容全体を参照によって本願明細書に引用したものとする。
チャネルパスのタイプ、チャネルパスによって提供されるファシリティ、およびI/Oデバイスに応じて、I/O動作は、フレーム多重モード、バースト・モード、またはバイト多重モードの3つのモードのうちの1つで発生し得る。
フレーム多重モードでは、I/Oデバイスは、チャネル・プログラムの実行の継続時間にわたって、チャネルパスに論理的に接続されたままであるとよい。フレーム多重モードで動作できるチャネルパスのファシリティは、コンカレントに動作するいくつかのI/Oデバイスによって共有されてもよい。このモードでは、I/O動作を完了するのに必要な情報が、フレームに分けられ、このフレームは、ほかのI/OデバイスのI/O動作からのフレームとインターリーブされ得る。この期間中、複数のI/Oデバイスが、チャネルパスに論理的に接続されていると見なされる。
バースト・モードでは、I/Oデバイスは、チャネルパスを独占し、情報のバーストを転送するために、チャネルパスに論理的に接続されたままとなる。ほかのデバイスは、バーストが転送されている時間中、チャネルパス上で通信できない。バーストは、数バイト、データのブロック全体、関連する制御およびステータス情報を備えるブロックのシーケンス(ブロック長はゼロであってもよい)、またはチャネルパスを独占するステータス情報から成ることができる。バースト・モードで動作できるチャネルパスのファシリティは、コンカレントに動作するいくつかのI/Oデバイスによって共有されてもよい。
一部のチャネルパスは、磁気テープ上の長いギャップが読み取られるときに発生するようなデータ転送の欠如を、バースト・モード動作中、約30秒間許容することができる。データ転送の欠如が一定の限界を上回ると、機器の誤作動が示されることもある。
バイト多重モードでは、I/Oデバイスがチャネルパスに論理的に接続された状態が短い時間間隔のみ続く。バイト多重モードで動作できるチャネルパスのファシリティは、コンカレントに動作するいくつかのI/Oデバイスによって共有されてもよい。このモードでは、すべてのI/O動作が短い時間間隔に分割され、その短い時間間隔の間に、情報のセグメントのみがチャネルパス上で転送される。そのような間隔の間、1つのデバイスおよびそれに関連するサブチャネルのみが、チャネルパスに論理的に接続される。複数のI/Oデバイスのコンカレント動作に関連する間隔は、デバイスからの要求に応答して配列される。サブチャネルに関連するチャネル・サブシステム・ファシリティは、情報のセグメントを転送するのに必要な時間のみ、任意の1つの動作に関してその制御権を行使する。セグメントは、単一バイトのデータ、数バイトのデータ、デバイスからのステータス・レポート、または新たな動作の開始に使用される制御シーケンスから成ることができる。
通常、データ転送速度要件が高いデバイスは、フレーム多重モードのチャネルパスで動作し、より遅いデバイスは、バースト・モードで動作し、最も遅いデバイスは、バイト多重モードで動作する。一部の制御ユニットは、所望の動作モードを設定するための手動スイッチを有する。
パラレルI/Oインターフェース・タイプのチャネルパス上で発生するI/O動作は、チャネルパスおよびI/Oデバイスによって提供されるファシリティに応じて、バースト・モードまたはバイト多重モードのいずれかで発生し得る。性能改善のために、一部のチャネルパスおよび制御ユニットには、高速転送およびデータ・ストリーミングのためのファシリティが提供される。これら2つのファシリティの説明については、その内容全体を参照によって本願明細書に引用したものとする、System Library publication「IBM System/360 and System/370 I/O Interface Channel to Control Unit OEMI」GA22−6974を参照されたい。
シリアルI/Oインターフェース・タイプのチャネルパス上で発生するI/O動作は、フレーム多重モードまたはバースト・モードのいずれかで発生し得る。性能改善のために、シリアルI/Oインターフェースに連結する一部の制御ユニットは、ユニット・チェック・ステータスの提示とコンカレントにセンス・データをプログラムに提供する能力を、プログラムによってそうすることが許されていれば提供する。
制御ユニットまたはチャネル・サブシステムによっては、サブチャネルを介したデバイスへのアクセスは、単一のチャネルパス・タイプに制限され得る。
上述のモードおよび機能は、チャネルパス上で情報を転送するために使用されるプロトコルおよび伝送の速度にのみ影響を及ぼす。CPUまたはチャネル・プログラムにより、これらのプログラムが実行される方法に関して観測できる影響はない。
制御ユニット
制御ユニットは、I/Oデバイスを動作させ制御するのに必要な論理能力を提供し、チャネル・サブシステムによって提供される標準形態の制御に各デバイスが応答できるように、各デバイスの特徴を適応させる。
制御ユニットとチャネル・サブシステムとの間の通信は、チャネルパス上で行われる。制御ユニットは、チャネル・サブシステムから制御信号を受け取り、チャネルパス上のデータ転送のタイミングを制御し、デバイスのステータスに関するインジケーションを提供する。
制御ユニットに連結されているI/Oデバイスは、限られた特定の動作のみを実行するよう設計されていることも、または多数の異なる動作を実行することもある。典型的な動作は、記録媒体および記録データの移動である。デバイスは、その動作を遂行するために、そのデバイスのタイプ特有の詳細な信号シーケンスを必要とする。制御ユニットは、チャネル・サブシステムから受領されたコマンドをデコードし、特定のタイプのデバイス向けにコマンドを解釈し、動作の実行に必要な信号シーケンスを提供する。
制御ユニットは、別個に収容されてもよく、またはI/Oデバイス、チャネル・サブシステムもしくはCPUと物理的および論理的に統合されてもよい。制御ユニットおよびデバイスが必要とする機器のタイプの違いが理由で、多くの電気機械デバイスの場合、デバイスと制御ユニットとの間には明確に規定されたインターフェースが存在する。これらの電気機械デバイスは、多くの場合、制御ユニットに連結されたグループのうち、一度に1つのみのデバイスがデータを転送するよう要求されるタイプのものであり(例えば磁気テープ・ユニットまたはディスク・アクセス・メカニズム)、制御ユニットは、いくつかのI/Oデバイス間で共有される。他方、チャネル間アダプタなどの一部の電子I/Oデバイスでは、制御ユニットにはそれ自体のアイデンティティがない。
プログラマの観点からは、制御ユニットにより実行される多くの機能は、I/Oデバイスにより実行されるものとマージできる。したがって、通常、本記載では、制御ユニットの機能について特に言及していない。I/O動作の実行は、I/Oデバイスがチャネル・サブシステムと直接通信するかのように記載されている。制御ユニットに言及するのは、それによって実行される機能を強調するとき、またはいくつかのデバイス間での制御ユニットの共有がI/O動作の実行にどのように影響するかについて記載するときに限られる。
I/Oデバイス
入出力(I/O)デバイスは、外部ストレージ、データ処理システム間の通信手段、またはシステムとその動作環境との間の通信手段を提供する。I/Oデバイスには、磁気テープ・ユニット、直接アクセス・ストレージ・デバイス(例えばディスク)、ディスプレイ・ユニット、タイプライタ・キーボード・デバイス、プリンタ、遠隔処理デバイス、およびセンサ・ベースの機器などの機器が含まれる。I/Oデバイスは、物理的に別個の機器であってもよく、またはほかのI/Oデバイスと機器を共有してもよい。
プリンタまたはテープ・デバイスなど、多くのタイプのI/Oデバイスは、外部媒体を使用し、これらのデバイスは、物理的に区別可能かつ識別可能である。ほかのタイプは、完全に電子的なものであり、物理的な記録媒体を直接扱わない。例えば、チャネル間アダプタは、2つのチャネルパス間のデータ転送を提供し、データがメイン・ストレージ外の物理的記録媒体に到達することは決してない。同様に、通信コントローラは、データ処理システムと遠隔局との間の情報の伝送を扱うこともあり、その入力および出力は伝送路上の信号である。
最も単純な場合では、I/Oデバイスは、1つの制御ユニットに連結され、1つのチャネルパスからアクセス可能である。デバイスを制御ユニット間でスイッチングし、制御ユニットをチャネルパス間でスイッチングすることによって、一部のデバイスを2つ以上のチャネルパスからアクセス可能にするために、スイッチング機器が利用可能である。そのようなスイッチング機器は、I/Oデバイスがアクセスされ得る複数のパスを提供する。I/Oデバイスへの複数のチャネルパスは、システム内の性能もしくはI/O利用可能性または両方を改善するために提供される。デバイスへの複数のチャネルパスの管理は、チャネル・サブシステムおよびデバイスの制御下にあるが、チャネルパスは、プログラムによって間接的に制御されてもよい。
I/Oアドレス指定
様々なコンポーネントの所要のアドレス指定のために、次の異なる4つのタイプのI/Oアドレス指定が、チャネル・サブシステムによって提供される:チャネルパス識別子、サブチャネル番号、デバイス番号、およびプログラムには見えないがチャネルパス・タイプに依存するアドレス。複数サブチャネル・セット・ファシリティがインストールされている場合、サブチャネル・セット識別子(SSID)も、I/Oアドレス指定において使用される。
サブチャネル・セット識別子
サブチャネル・セット識別子(SSID)は、提供されるサブチャネル・セットそれぞれに割り振られる2ビット値である。
チャネルパス識別子
チャネルパス識別子(CHPID:channel−path identifier)は、システムのインストール済みチャネルパスそれぞれに割り振られる、システム固有の8ビット値である。CHPIDは、チャネルパスをアドレス指定するために使用される。CHPIDは、RESET CHANNEL PATHの第2オペランド・アドレスによって指定され、リセットされるチャネルパスを指示するために使用される。STORE SUBCHANNELが実行されると、デバイスへのアクセスが可能なチャネルパスが、サブチャネル情報ブロック(SCHIB)内で、それぞれその関連するCHPIDによって識別される。CHPIDはさらに、特定のチャネルパスを識別する必要があるときに、オペレータ・メッセージ内で使用することができる。システム・モデルは、256もの数のチャネルパスを提供し得る。チャネルパスの最大数およびチャネルパスに対するCHPIDの割り振りは、システム・モデルに依存する。
サブチャネル番号
サブチャネル番号は、サブチャネルのアドレス指定に使用される、システム固有の16ビット値である。この値は、チャネル・サブシステムのサブチャネル・セット内で固有である。サブチャネルは、次の8つのI/O命令によってアドレス指定される:CANCEL SUBCHANNEL、CLEAR SUBCHANNEL、HALT SUBCHANNEL、MODIFY SUBCHANNEL、RESUME SUBCHANNEL、START SUBCHANNEL、STORE SUBCHANNELおよびTEST SUBCHANNEL。特定のI/Oデバイスに関連するI/O機能はすべて、I/Oデバイスに割り振られたサブチャネルを指示することによってプログラムにより指定される。各サブチャネル・セット内のサブチャネルは、常に、単一範囲の連続的な番号の中のサブチャネル番号を割り振られている。最小番号のサブチャネルは、サブチャネル0である。チャネル・サブシステムの最大番号のサブチャネルは、提供されるサブチャネル数より1低い数に相当するサブチャネル番号を有する。各サブチャネル・セット内に、最大で65,536のサブチャネルを提供することができる。通常は、サブチャネル番号は、CPUプログラムと、チャネル・サブシステムとの間の通信においてのみ使用される。
デバイス番号
I/Oデバイスを割り振られている各サブチャネルは、デバイス番号と呼ばれるパラメータも含む。デバイス番号は、デバイスがサブチャネルに割り振られる時点でサブチャネルのパラメータの1つとして割り振られる、16ビット値である。デバイス番号は、プログラムに対してデバイスを一意的に識別する。
デバイス番号は、システム・モデル、構成、またはチャネルパス・プロトコルにより課されるいかなる制限からも独立してデバイスを識別する手段を提供する。デバイス番号は、システムとシステム・オペレータとの間で行われる、デバイスに関する通信において使用される。例えば、デバイス番号は、初期のプログラム・ローディングに使用される入力デバイスを指示するためにシステム・オペレータによって入力される。
プログラミング・ノート:デバイス番号は、デバイスのインストール時に割り振られ、任意の値を有することができる。しかし、制御プログラム、サポート・プログラム、または特定の制御ユニットもしくはI/Oデバイスによって要求され得るデバイス番号の割り振りに対する制約に、ユーザは注意しなければならない。
デバイス識別子
デバイス識別子は、I/Oデバイスと通信するためにチャネル・サブシステムによって使用され、プログラムには識別されないアドレスである。使用されるデバイス識別子のタイプは、特定のチャネルパス・タイプおよび提供されるプロトコルに依存する。各サブチャネルは、1つ以上のデバイス識別子を含む。
パラレルI/Oインターフェース・タイプのチャネルパスの場合、デバイス識別子は、デバイス・アドレスと呼ばれ、8ビット値から成る。ESCON(IBM社の登録商標)I/Oインターフェースの場合、デバイス識別子は、4ビットの制御ユニット・アドレスおよび8ビットのデバイス・アドレスから成る。FICON(IBM社の登録商標)I/Oインターフェースの場合、デバイス識別子は、8ビットの制御ユニット・イメージIDおよび8ビットのデバイス・アドレスから成る。FICON(IBM社の登録商標)変換I/Oインターフェースの場合、デバイス識別子は、4ビットの制御ユニット・アドレスおよび8ビットのデバイス・アドレスから成る。
デバイス・アドレスは、サブチャネルに関連する特定のI/Oデバイス(および、パラレルI/Oインターフェースでは制御ユニット)を識別する。デバイス・アドレスは、例えば、特定の磁気テープ・ドライブ、ディスク・アクセス・メカニズム、または伝送路を識別し得る。0〜255の範囲の任意の番号が、デバイス・アドレスとして割り振り可能である。
ファイバ・チャネル拡張
ファイバ・チャネル拡張(FCX:fibre−channel−extension)ファシリティは、トランスポート・コマンド制御ブロック(TCCB:transport−command−control block)およびトランスポート・ステータス・ブロック(TSB:transport−status block)を指示する、トランスポート制御ワード(TCW:transport−control word)から成るチャネル・プログラムの形成を提供する任意選択のファシリティである。TCCBは、デバイス・コマンド・ワード(DCW:device−command word)の形態の最大30のI/Oコマンドのリストを含む、トランスポート・コマンド・エリア(TCA:transport−command area)を含む。TCWおよびそのTCCBは、読み取りまたは書き込み動作のいずれかを指定し得る。IRBに加えて、TSBは、完了ステータス、およびTCWチャネル・プログラムに関するほかの情報を含む。
FCXファシリティは、TCCB、入力データ・ストレージ・エリア、および出力データ・ストレージ・エリアのいずれかまたはすべてを直接または間接的に指示する能力を提供する。ストレージ・エリアが直接指示される場合、TCWは、ストレージの連続的な単一ブロックの位置を指定する。ストレージ・エリアが間接的に指示される場合、TCWは、1つ以上のトランスポート間接データ・アドレス・ワード(TIDAW:transport−indirect−data−address word)のリストの位置を指示する。TIDAWリストおよびリスト内の各TIDAWによって指示されるストレージ・エリアは、4Kバイト境界を越えることはできない。
FCXファシリティはさらに、I/O動作の状態を判断するために、CANCEL SUBCHANNEL命令によって開始され得る問い合わせ動作を提供する。
I/Oコマンド・ワード
I/Oコマンド・ワードは、コマンドを指定し、コマンドに関連する情報を含む。FCXファシリティがインストールされている場合、チャネル・コマンド・ワード(CCW)およびデバイス・コマンド・ワード(DCW)の、2つの基本的な形態のI/Oコマンド・ワードがある。
CCWは、8バイトの長さであり、実行されるコマンドを指定する。特定の動作を開始するコマンドの場合、CCWはさらに、動作に関連するストレージ・エリア、データ・バイトのカウント、コマンド完了時にとられるアクション、およびその他のオプションを指示する。すべてのI/OデバイスがCCWを認識する。
DCWは、8バイトの長さであり、実行されるコマンド、データ・バイトのカウント、およびその他のオプションを指定する。FCXをサポートするI/Oデバイスは、DCWを認識する。
トランスポート・コマンド・ワード(TCW:Transport Command Word)
TCWは、I/Oデバイスへ輸送されI/Oデバイスによって実行されるコマンドのリストを含む、トランスポート・コマンド制御ブロック(TCCB)を指示する。TCWはさらに、TCCB内のコマンドに関するストレージ・エリア、ならびにI/O動作のステータスを含むためのトランスポート・ステータス・ブロック(TSB)を指示する。
チャネル・プログラムの構造
FCXファシリティがインストールされていない場合、単一の形態のチャネル・プログラム、すなわちCCWチャネル・プログラムが存在する。FCXファシリティがインストールされている場合、追加の形態のチャネル・プログラム、すなわちTCWチャネル・プログラムが存在する。両形態のチャネル・プログラムについて、以下記載する。
CCWチャネル・プログラム
1つ以上のCCWから成るチャネル・プログラムは、CCWチャネル・プログラム(CCP:CCW channel program)と呼ばれる。そのようなチャネル・プログラムは、チャネル・サブシステムによる逐次実行のために論理的にリンクされ配列された、1つ以上のCCWを含む。
TCWチャネル・プログラム
単一のTCWから成るチャネル・プログラムは、TCWチャネル・プログラムと呼ばれる。TCWは、1〜30のDCWを含むトランスポート・コマンド制御ブロック(TCCB)を指示する。TCCB内のDCWは、逐次実行のために論理的にリンクされ配列されている。制御情報を指定するDCWの場合、TCCBはさらに、それらのコマンドに関する制御情報を含む。TCWはさらに、デベイスから、またはデバイスへのデータの転送を指定するDCWに関する1つまたは複数のストレージ・エリアと、完了ステータスのためのトランスポート・ステータス・ブロック(TSB)の位置とを指示する。TCCBおよびデータの転送のためのストレージ・エリアは、連続的または非連続的いずれかのストレージとして指定され得る。
TCWは、完了ステータスのためのTSBも指示する。
I/O動作の実行
I/O動作は、次の4タイプのフォーマットを持つ情報によって開始および制御される:命令START SUBCHANNEL、トランスポート・コマンド・ワード、I/Oコマンド・ワード、および指令。START SUBCHANNEL命令は、CPUによって実行され、I/Oデータを管理または処理するほかのプログラムからのI/O動作の要求のフローを管理するCPUプログラムの一部である。
START SUBCHANNELが実行されると、パラメータがターゲット・サブチャネルに渡され、サブチャネルに関連するI/Oデバイスを用いた開始機能をチャネル・サブシステムが実行するよう要求される。チャネル・サブシステムは、START SUBCHANNEL命令の実行中に渡された情報を含むサブチャネルにある情報を使用して、開始機能を実行し、デバイスへのアクセス可能なチャネルパスを発見する。デバイスが選択されると、CCWチャネル・プログラムの場合は、チャネル・サブシステムおよびI/OデバイスによりCCWをデコードおよび実行することによって、またはTCWチャネル・プログラムの場合は、チャネル・サブシステムによりI/OデバイスへTCCBを輸送し、デバイスによりDCWをデコードおよび実行することによって、I/O動作の実行が遂行される。I/Oコマンド・ワードおよびトランスポート・コマンド・ワードは、メイン・ストレージからフェッチされるが、CCW DCWのコマンド・コード内の修飾ビットが、デバイスにおける動作の実行に関して、デバイス依存の条件を指定し得る。
テープの巻き戻しまたはディスク・ドライブ上のアクセス・メカニズムの位置調整などのデバイス特有の動作は、I/Oデバイスによってデコードおよび実行される指令によって指定される。指令は、制御コマンドのコマンド・コード内の修飾ビットとしてデバイスに転送されてもよく、制御または書き込み動作中にデータとしてデバイスに転送されてもよく、またはほかの手段によってデバイスに利用可能にされてもよい。
開始機能の開始
CPUプログラムは、命令START SUBCHANNELによりI/O動作を開始する。この命令は、動作要求ブロック(ORB)のコンテンツをサブチャネルに渡す。
ORBが、CCWチャネル・プログラムを指定する場合、ORBのコンテンツは、サブチャネル・キー、実行される第1CCWのアドレス、およびCCWのフォーマットの指定を含む。CCWは、実行されるコマンド、および使用されるストレージ・エリアがあればそのストレージ・エリアを指定する。ORBが、TCWチャネル・プログラムを指定する場合、ORBのコンテンツは、サブチャネル・キーおよび実行されるTCWのアドレスを含む。TCWは、実行のためにデバイスに輸送されるコマンドを含むTCCB、データ転送に使用される1つまたは複数のストレージ・エリアがあればそのストレージ・エリア、およびI/O動作のステータスを含むためのTSBを指示する。
ORBコンテンツがサブチャネルに渡されると、START SUBCHANNELの実行は完了する。この命令の実行の結果は、プログラム・ステータス・ワード内に設定される条件コードによって示される。
ファシリティが利用可能になり、ORBがCCWチャネル・プログラムを指定する場合、チャネル・サブシステムは、第1CCWをフェッチし、それをORB内で指定されたフォーマット・ビットに従ってデコードする。フォーマット・ビットがゼロであれば、フォーマット0 CCWが指定されている。フォーマット・ビットが1であれば、フォーマット1 CCWが指定されている。フォーマット0およびフォーマット1 CCWは、同じ情報を含むが、フォーマット1 CCW内では、31ビット・アドレスをCCW内で直接指定できるように、フィールドが違う形で配列される。ファシリティが利用可能になり、ORBがTCWチャネル・プログラムを指定する場合、チャネル・サブシステムは、指示されたTCWをフェッチし、指示されたTCCBをデバイスへ輸送する。デバイスへ、またはデバイスからのデータの転送のためにTCWによって指示されるストレージ・エリアは、64ビット・アドレスである。
サブチャネル動作モード
サブチャネル動作のモードは2つある。FCXファシリティがインストールされていて、TCWチャネル・プログラムを指定するSTART SUBCHANNEL命令の実行の結果としてサブチャネルにて開始機能が設定されると、サブチャネルはトランスポート・モードに入る。サブチャネルは、開始機能がサブチャネルにてリセットされるまで、トランスポート・モードにとどまる。それ以外のときはすべて、サブチャネルはコマンド・モードである。
パス管理
ORBがCCWチャネル・プログラムを指定し、第1CCWが、特定の有効性テストをパスし、1として指定された中断フラグを有さない場合、または、ORBがTCWチャネル・プログラムを指定し、指示されたTCWが特定の有効性テストをパスした場合、チャネル・サブシステムは、選択可能なチャネルパスのグループからチャネルパスを選択することによって、デバイス選択を試行する。デバイス識別子を認識する制御ユニットが、それ自体を論理的にチャネルパスに接続し、その選択に応答する。
ORBがCCWチャネル・プログラムを指定する場合、チャネル・サブシステムは、CCWのコマンド・コード部分をチャネルパス上で送り、デバイスは、コマンドが実行可能かどうかを示すステータス・バイトを用いて応答する。制御ユニットは、この時点でチャネルパスから論理的に切断してもよく、または、データ転送を開始するために接続されたままでいてもよい。
ORBがTCWチャネル・プログラムを指定する場合、チャネル・サブシステムは、指示されたTCW内の情報を使用して、TCCBを制御ユニットに転送する。TCCBのコンテンツは、チャネル・サブシステムには無視され、制御ユニットおよびI/Oデバイスに対してのみ意味を有する。
試行された選択が、ビジー・インジケーションまたはパス動作不能条件のいずれかの結果として発生しない場合、チャネル・サブシステムは、代わりのチャネルパスが利用可能であれば、それによってデバイスの選択を試行する。選択可能なすべてのパスに対して選択が試行され、ビジー条件が続く場合、動作は、パスが空きになるまでペンディングのままとなる。デバイス選択が試行されたチャネルパスのうちの1つ以上において、パス動作不能条件が検出された場合、プログラムは、後のI/O割り込みによるアラートを受ける。チャネル・プログラムが実行され次第(デバイスが代わりのチャネルパス上で選択されたと仮定して)、またはデバイス選択が試行されたチャネルパスのすべてにおいてパス動作不能条件が検出されたため実行が放棄された結果として、I/O割り込みが発生する。
チャネル・プログラムの実行
コマンドがデバイスにて開始され、コマンドの実行が、デバイスへ、またはデバイスからのいずれのデータの転送も要求しない場合、デバイスは、コマンド・コードを受領すると直ちに動作の終了を伝達してもよい。データの転送を伴う動作では、チャネル・サブシステムがデバイスからのサービス要求に応答して動作のさらなる制御を行うように、サブチャネルが設定される。
I/O動作は、単一のCCWもしくはTCWによって指示された1つのストレージ・エリアへ、もしくはそこからのデータの転送、または非連続的ないくつかのストレージ・エリアへ、もしくはそこからのデータの転送を伴ってもよい。後者の場合、一般に、I/O動作の実行のためにCCWのリストが使用され、各CCWは、連続的なストレージ・エリアを指示し、CCWは、データ・チェーニングによって結合される。データ・チェーニングは、CCW内のフラグによって指定され、現在のCCWによって指示されたストレージ・エリアが枯渇または充満すると、チャネル・サブシステムに別のCCWをフェッチさせる。データ・チェーニングに基づきフェッチされたCCWによって指示されるストレージ・エリアは、I/Oデバイスにて既に進行中のI/O動作に関連し、I/Oデバイスは、新たなCCWがフェッチされたときに通知されない。
CCWがデコードされると、チャネル・サブシステムが、可能な限り早くI/O割り込みを要求することによって、チャネル・プログラム内の少なくとも当該CCWまではチェーニングが進行したことをCPUプログラムに通知するよう、プログラマが指定するための規定が、CCWフォーマット内に設けられる。
CPUにおける動的アドレス変換を補完するために、CCW間接データ・アドレス指定および変更されたCCW間接データ・アドレス指定が提供される。
ORBがCCWチャネル・プログラムを指定し、CCW間接データ・アドレス指定が使用される場合、当該CCWのストレージ・エリアを指示するために間接データ・アドレス・リストが使用されることが、CCW内のフラグによって指定される。ストレージのブロックの境界に達する度にリストが参照され、次に使用されるストレージのブロックが判断される。ORBは、ストレージの各ブロックのサイズが2Kバイトであるかまたは4Kバイトであるかを指定する。
ORBがCCWチャネル・プログラムを指定し、変更されたCCW間接データ・アドレス指定が使用される場合、当該CCWのストレージ・エリアを指示するために、変更された間接データ・アドレス・リストが使用されることが、ORB内のフラグおよびCCW内のフラグによって指定される。ストレージのブロックに関して指定されたバイトのカウントに達する度にリストが参照され、次に使用されるストレージのブロックが判断される。間接データ・アドレス指定が使用される場合と異なり、4Kバイト境界を横断するデータ転送が指定されないという条件で、ブロックは、任意の境界上で、最大4Kの長さで指定され得る。
ORBがTCWチャネル・プログラムを指定し、トランスポート間接データ・アドレス指定が使用される場合、TCCBを含むストレージ・エリアを指示するためにトランスポート間接データ・アドレス・リストが使用されるかどうか、およびTCCB内のDCWに関連するデータ・ストレージ・エリアを指示するためにトランスポート間接データ・アドレス・リストが使用されるかどうかが、TCW内のフラグによって指定される。ストレージのブロックに関して指定されたバイトのカウントに達する度に、対応するトランスポート間接データ・アドレス・リストが参照され、次に使用されるストレージ・ブロックが判断される。
CCW間接データ・アドレス指定および変更されたCCW間接データ・アドレス指定は、等価な連続的実ストレージとともにCPUが動作した場合に使用されるのと事実上同じCCWシーケンスが、CPUの動的アドレス変換がアクティブな状態で実行するプログラムに対して使用されることを可能にする。CCW間接データ・アドレス指定は、ORBにおいてフォーマット0 CCWが指定されたか、またはフォーマット1 CCWが指定されたかとは独立して、最大で264−1までの絶対ストレージ・アドレスを有するデータ・ブロックをプログラムが指示することを可能にする。変更されたCCW間接データ・アドレス指定は、ORBにおいてフォーマット0 CCWが指定されたか、またはフォーマット1 CCWが指定されたかとは独立して、最大で264−1までの絶対ストレージ・アドレスを有するデータ・ブロックをプログラムが指示することを可能にする。
一般に、I/O動作または動作のチェーンの実行は、3段階にのぼる関与を伴う。
1.CPUとチャネル・サブシステム機器との統合が原因の影響のほか、CPUは、START SUBCHANNELの実行の継続時間中ビジーであり、これは、アドレス指定されたサブチャネルにORBコンテンツが渡されるまで続く。
2.サブチャネルは、ORBコンテンツの受領から、サブチャネルにて一次割り込み条件がクリアされるまで、新たなSTART SUBCHANNELでビジーである。
3.I/Oデバイスは、デバイスにおける第1動作の開始から、サブチャネルが中断状態になるか、またはサブチャネルに二次割り込み条件が置かれるまでビジーである。中断されたサブチャネルの場合、デバイスは、中断されたチャネル・プログラムの実行が再開されると再びビジーになる。
I/O動作の終結
I/O動作の終結は、通常は、チャネル終了およびデバイス終了の2つのステータス条件により示される。チャネル終了条件は、I/Oデバイスが、動作に関連するすべてのデータを受領または提供し、チャネル・サブシステム・ファシリティが必要なくなったことを示す。この条件は、一次割り込み条件と呼ばれ、この場合チャネル終了が一次ステータスである。概して、一次割り込み条件とは、I/O動作に関係し、かつサブチャネルにおけるI/O動作またはI/O動作のチェーンの終結を伝達する、任意の割り込み条件である。
デバイス終了信号は、I/Oデバイスが実行を終え、別の動作をすぐに実行できることを示す。この条件は、二次割り込み条件と呼ばれ、この場合デバイス終了が二次ステータスである。概して、二次割り込み条件とは、I/O動作に関係し、かつデバイスにおけるI/O動作または動作のチェーンの終結を伝達する、任意の割り込み条件である。二次割り込み条件は、一次割り込み条件とコンカレントに、またはそれよりも後に発生することができる。
一次または二次割り込み条件とコンカレントに、チャネル・サブシステムおよびI/Oデバイスの両方が、異常状況のインジケーションを提供することができる。
I/O動作の終結を伝達する条件は、I/O割り込みによって、またはCPUがI/O割り込みに関して無効化されている場合はチャネル・サブシステムのプログラムされた問い合わせによって、プログラムに通知されることが可能である。前者の場合、これらの条件は、割り込み元に関する情報を含むI/O割り込みコードの格納をもたらす。後者の場合、割り込みコードは、TEST PENDING INTERRUPTIONの実行の結果として格納される。
一次割り込み条件が認識されると、チャネル・サブシステムは、サブチャネルにおけるI/O動作の終結を記述する情報をサブチャネルが含むことを、割り込み要求によってプログラムに通知しようと試行する。コマンド・モード割り込みの場合、情報は、最後に使用されたCCWを識別し、さらにその残りのバイト・カウントを提供し、そうすることで、使用されたメイン・ストレージの範囲を記述してもよい。トランスポート・モード割り込みの場合、情報は、現在のTCWと、残りのバイト・カウントなどのI/O動作についてのさらなるステータスを含む、チャネル・プログラムに関連するTSBとを識別する。チャネル・プログラムについての情報に加えて、チャネル・サブシステムおよびI/Oデバイスの両方が、一次または二次割り込み条件のいずれかの一部として、異常条件のさらなるインジケーションを提供してもよい。サブチャネルにおいて含まれる情報は、TEST SUBCHANNELの実行またはSTORE SUBCHANNELの実行によって格納されるとよい。この情報は、格納されると、サブチャネル・ステータス・ワード(SCSW)と呼ばれる。
CCWチャネル・プログラムを使用する場合のチェーニング
ORBがCCWチャネル・プログラムを指定する場合、プログラムがI/O動作のチェーンの実行を単一のSTART SUBCHANNEL命令により開始するためのファシリティが提供される。現在のCCWがコマンド・チェーニングを指定し、動作の間に異常条件が何ら検出されなかった場合、デバイス終了信号の受領により、チャネル・サブシステムは新たなCCWをフェッチする。CCWが特定の有効性テストをパスし、新たなCCW内で中断フラグが1として指定されていない場合、デバイスにて新たなコマンドの実行が開始される。CCWが有効性テストにパスしなければ、新たなコマンドは開始されず、コマンド・チェーニングは抑制され、新たなCCWに関連するステータスが、割り込み条件の生成をもたらす。中断フラグが1として指定され、中断制御、すなわち関連するORBのワード1のビット4における1の値によりこの値が有効である場合、新たなコマンドの実行は開始されず、コマンド・チェーニングは終わる。
新たなコマンドの実行は、前の動作と同じ方法でチャネル・サブシステムによって開始される。コマンド・チェーニングを指定するCCWによってもたらされる、動作の終結時に発生する終了信号は、プログラムに利用可能にされない。別のI/O動作がコマンド・チェーニングによって開始されると、チャネル・サブシステムは、チャネル・プログラムの実行を継続する。一方、異常条件が検出された場合、コマンド・チェーニングは抑制され、チャネル・プログラムは終了され、割り込み条件が生成され、終了をもたらす終了信号がプログラムに利用可能にされる。
中断・再開機能は、チャネル・プログラムの実行に対する制御をプログラムに提供する。中断機能の開始は、ORB内の中断制御ビットの設定によって制御される。チャネル・プログラム実行中、ORB内の中断制御ビットが1であり、第1CCWまたはコマンド・チェーニング中にフェッチされたCCW内の中断フラグが1である場合、中断機能がチャネル・サブシステムに伝達される。
中断は、有効に(ORB内の中断制御ビットの1の値により)1として指定されている中断フラグを備えるCCWをチャネル・サブシステムがフェッチすると発生する。このCCW内のコマンドは、I/Oデバイスに送られず、デバイスは、コマンドのチェーンが終わったことを伝達される。後のRESUME SUBCHANNEL命令は、中断を生じさせたCCWが変更された可能性があること、およびチャネル・サブシステムはCCWを再フェッチして、中断フラグの現在の設定を検査しなければならないことを、チャネル・サブシステムに通知する。CCW内で中断フラグがゼロであることが分かると、チャネル・サブシステムは、I/Oデバイスを用いたコマンドのチェーンの実行を再開する。
TCWチャネル・プログラムを使用する場合のチェーニング
ORBがTCWチャネル・プログラムを指定する場合も、プログラムがデバイス動作のチェーンの実行を単一のSTART SUBCHANNEL命令により開始するためのファシリティが提供される。コマンド・チェーニングは、単一のTCWによって指示される当該DCWに関して指定され得る。現在のDCWがコマンド・チェーニングを指定し、動作の間に異常条件が何ら検出されなかった場合、DCWの正常な実行が認識されると、現在のTCCB内の次のDCWの処理をもたらす。
次のDCWが、特定の有効性テストをパスすると、新たなコマンドの実行がデバイスにて開始され、そのDCWが現在のDCWになる。DCWが有効性テストにパスしなければ、新たなコマンドは開始されず、コマンド・チェーニングは抑制され、チャネル・プログラムは終了され、新たなDCWに関連するステータスが、割り込み条件の生成をもたらす。
新たなコマンドの実行は、前の動作と同じ方法で開始される。最後に指定されているDCWではないDCWによってもたらされる、動作の終結時に発生する終了信号は、プログラムに利用可能にされない。別のI/O動作がコマンド・チェーニングによって開始されると、チャネル・プログラムの実行が継続する。一方、異常条件が検出された場合、コマンド・チェーニングは抑制され、チャネル・プログラムは終了され、割り込み条件が生成され、異常条件を識別するステータスがプログラムに利用可能にされる。
I/O動作の早期終結
チャネル・プログラムの実行は、CANCEL SUBCHANNEL、HALT SUBCHANNELまたはCLEAR SUBCHANNELによって早期に終了され得る。チャネル・プログラムがデバイスにて開始されていなければ、CANCEL SUBCHANNELの実行は、チャネル・サブシステムにサブチャネルでの開始機能を終了させる。CANCEL SUBCHANNELの実行によって開始機能が終了されると、チャネル・サブシステムは、CANCEL SUBCHANNEL命令に応答して条件コード0を設定する。HALT SUBCHANNELの実行は、チャネル・サブシステムに、停止信号をI/Oデバイスに対し発行させ、サブチャネルでのチャネル・プログラム実行を終了させる。チャネル・プログラム実行がHALT SUBCHANNELの実行により終了されると、プログラムは、I/O割り込み要求によって終了を通知される。サブチャネルがコマンド・モードである場合、割り込み要求は、終了された動作のステータスをデバイスが提示するときに生成される。サブチャネルがトランスポート・モードである場合、割り込み要求は直ちに生成される。なお、停止信号がデバイスに発行されたのが、コマンド・チェーニング中の、デバイス終了の受領後、かつ次のコマンドのデバイスへの転送前である場合、デバイスが伝達を受けてから割り込み要求が生成される。後者の場合、SCSWのデバイス・ステータス・フィールドは、ゼロを含むことになる。CLEAR SUBCHANNELの実行は、実行中のチャネル・プログラムのインジケーションをサブチャネルからクリアし、チャネル・サブシステムに、クリア信号をI/Oデバイスに対し発行させ、チャネル・サブシステムに、クリア機能の完了をプログラムに通知するためのI/O割り込み要求を生成させる。
I/O割り込み
I/O割り込み要求を生じさせる条件は、CPU内のアクティビティとは非同期であり、2つ以上の条件が同時に発生する可能性がある。条件は、TEST SUBCHANNELもしくはCLEAR SUBCHANNELによってクリアされるか、またはI/Oシステム・リセットによってリセットされるまでサブチャネルにて保たれる。
I/O割り込み条件がチャネル・サブシステムによって認識され、サブチャネルにて示された場合、サブチャネルにて指定されるI/O割り込みサブクラスに関して、I/O割り込み要求がペンディングにされる。割り込みがペンディングにされるI/O割り込みサブクラスは、MODIFY SUBCHANNELを利用したプログラム制御の下にある。ペンディングI/O割り込みは、そのI/O割り込みサブクラスからの割り込みに対応している任意のCPUによって受け取られるとよい。各CPUは、8つのI/O割り込みサブクラスのそれぞれに対する当該CPUの有効化を制御する8つのマスク・ビットを制御レジスタ6内に有し、I/Oマスク、すなわちPSW(program state word:プログラム・ステータス・ワード)内のビット6が、CPUのマスタI/O割り込みマスクである。
CPUにてI/O割り込みが発生すると、I/O割り込みコードがそのCPUのI/O通信エリアに格納され、I/O割り込み要求はクリアされる。I/O割り込みコードは、割り込みがペンディングしていたサブチャネルを識別する。続いて、TEST SUBCHANNELまたはSTORE SUBCHANNELによって、割り込み要求の生成をもたらしている条件が、明示的にサブチャネルから読み出されるとよい。
さらに、ペンディングI/O割り込み要求は、対応するI/O割り込みサブクラスは有効化されているがPSWのI/O割り込みが無効化されている場合、TEST PENDING INTERRUPTIONによってクリアされるとよく、または対応するI/O割り込みサブクラスからのI/O割り込みに関してCPUが無効化されている場合、TEST SUBCHANNELによってクリアされるとよい。さらに、ペンディングI/O割り込み要求は、CLEAR SUBCHANNELによってクリアされ得る。CLEAR SUBCHANNELおよびTEST SUBCHANNELはどちらも、サブチャネルにて保たれている割り込み条件もクリアする。
通常は、割り込み要求がCLEAR SUBCHANNELによってクリアされない限り、プログラムは、TEST SUBCHANNELを発行して、動作の実行に関する情報を取得する。
CLEAR SUBCHANNEL
指示されたサブチャネルがクリアされ、指示されたサブチャネルにおいて現在の開始または停止機能があればそれが終了され、指示されたサブチャネルおよび関連するデバイスにてクリア機能を非同期的に実行するようチャネル・サブシステムが伝達される。
汎用レジスタ1は、クリアされるサブチャネルを指示するサブシステム識別ワード(SID)を含む。
開始または停止機能が進行中であれば、その機能はサブチャネルにて終了される。
サブチャネルは、ステータス・ペンディングではなくなる。サブチャネルがクリア・ペンディングにされることを除いて、SCSWのアクティビティ制御フィールド内に示されるすべてのアクティビティが、サブチャネルにてクリアされる。この命令の実行により実行されるクリア機能を除いて、SCSWの機能制御フィールド内に示される進行中のあらゆる機能が、サブチャネルにてクリアされる。
サブチャネルがトランスポート・モードで動作していて、条件コード2が設定されている場合、CPUは、問い合わせ機能を非同期的に実行するようチャネル・サブシステムに伝達し、命令を終了するとよい。
チャネル・サブシステムは、クリア機能を非同期的に実行するよう伝達される。クリア機能については、下記「関連機能」のセクションに要約されており、さらにその後詳細に記載される。
上記のアクションがとられたことを示すために、条件コード0が設定される。
関連機能
CLEAR SUBCHANNELの実行後、チャネル・サブシステムは、クリア機能を非同期的に実行する。条件が許せば、チャネル・サブシステムは、チャネルパスを選択し、I/O動作があればそれを終了するためにデバイスにクリア信号を発行することを試行する。続いて、サブチャネルはステータス・ペンディングになる。チャネル・サブシステムが遭遇する、デバイスへのクリア信号の発行を妨げる条件によって、サブチャネルがステータス・ペンディングになることが妨げられることはない。
クリア機能の実行の結果としてサブチャネルがステータス・ペンディングになるとき、関連するデバイスを用いるデータ転送は、あったとしても終了されている。結果として生じるステータスがTEST SUBCHANNELによってクリアされるときに格納されるSCSWは、1として格納されたクリア機能ビットを有する。クリア信号がデバイスに発行されたことをチャネル・サブシステムが判断できる場合、クリア・ペンディング・ビットがゼロとしてSCSWに格納される。そうでない場合、クリア・ペンディング・ビットは1として格納され、遭遇した条件をより詳しく記述するほかのインジケーションが提供される。
CLEAR SUBCHANNELによって終了される開始機能に関しては、測定データは蓄積されず、サブチャネルの拡張ステータス・ワードにデバイス接続時間は格納されない。
特殊条件
サブチャネルがCLEAR SUBCHANNELに関して動作不能である場合、条件コード3が設定され、ほかのアクションはとられない。サブチャネルがチャネル・サブシステムにおいて提供されていない場合、または有効なデバイス番号が割り振られていない場合、または有効化されていない場合、サブチャネルは、CLEAR SUBCHANNELに関して動作不能である。
CLEAR SUBCHANNELは、下記に記載または列挙されるプログラム例外に遭遇することがある。
複数サブチャネル・セット・ファシリティがインストールされていない場合、汎用レジスタ1のビット32〜47は、0001hexを含まなければならず、そうでない場合、オペランド例外が認識される。
複数サブチャネル・セット・ファシリティがインストールされている場合、汎用レジスタ1のビット32〜44は、ゼロを含まなければならず、ビット45〜46は、有効な値を含まなければならず、ビット47は、値1を含まなければならず、そうでない場合、オペランド例外が認識される。
結果として生じる条件コード:
0 機能開始済み
1 ―
2 ―
3 動作不能
プログラム例外:
・オペランド
・特権動作
クリア機能
CLEAR SUBCHANNELの実行後、チャネル・サブシステムはクリア機能を実行する。クリア機能の実行は、(1)パス管理動作を実行すること、(2)サブチャネルのフィールドを変更すること、(3)関連するデバイスにクリア信号を発行すること、および(4)サブチャネルをステータス・ペンディングにさせ、クリア機能の完了を示させることにある。
クリア機能パス管理
パス管理動作は、関連するサブチャネルのチャネルパス条件を検査して、クリア信号を関連するデバイスに発行できる利用可能なチャネルパスの選択を試行するために、クリア機能の一環として実行される。
チャネルパス条件は以下の順序で検査される。
1.チャネル・サブシステムが、伝達されるべきデバイスとアクティブに通信しているか、またはそのデバイスとのアクティブな通信の確立を試行している場合、使用中のチャネルパスが選択される。
2.チャネル・サブシステムが、伝達されるべきデバイスからビジー状態終了インジケーション(割り込み条件を認識させない)を受け取る最中であり、関連するサブチャネルがいずれのチャネルパスに対してもアリージャンス(allegiance)を有さない場合、使用中のチャネルパスが選択される。
3.関連するサブチャネルが、チャネルパスに対し専用アリージャンスを有する場合、そのチャネルパスが選択される。
4.関連するサブチャネルが、1つ以上のチャネルパスに対しワーキング・アリージャンスを有する場合、それらのチャネルパスのうちの1つが選択される。
5.関連するサブチャネルが、いずれのチャネルパスに対してもアリージャンスを有さず、最後に使用されたチャネルパスが示され、かつそのチャネルパスが選択可能である場合、そのチャネルパスが選択される。そのチャネルパスが選択可能でない場合、チャネルパスは選択されないか、または選択可能なチャネルパスのセットがあればそこからチャネルパスが選択される(最後に使用されたチャネルパスが示されなかったかのように)。
6.関連するサブチャネルが、いずれのチャネルパスに対してもアリージャンスを有さず、最後に使用されたチャネルパスが示されず、かつ選択可能な1つ以上のチャネルパスが存在する場合、それらのチャネルパスのうちの1つが選択される。
上記に列挙したチャネルパス条件がいずれも当てはまらない場合、チャネルパスは選択されない。
第4項目、指定の条件下の第5項目、および第6項目の場合、チャネル・サブシステムは、チャネルパスのセットからチャネルパスを選択する。これらの場合には、チャネル・サブシステムは、以下の条件が当てはまらないことを条件として、チャネルパスの選択を試行するとよい。
1.チャネルパス終了条件がチャネルパスに関して存在する。
2.パラレルまたはESCON(IBM社の登録商標)チャネルパスの場合:別のサブチャネルが、チャネルパスに対してアクティブ・アリージャンスを有する。
FICON(IBM社の登録商標)チャネルパスの場合:チャネルパスは、現在、アクティブなコンカレント通信を有することができる最大数のサブチャネルとアクティブに通信するために使用されている。
3.伝達されるべきデバイスが、タイプ1制御ユニットに連結されており、同じ制御ユニットに連結されている別のデバイスのサブチャネルが、同じチャネルパスに対しアリージャンスを有する。ただし、アリージャンスがワーキング・アリージャンスであり一次ステータスがサブチャネルによって受け取られている場合を除く。
4.伝達されるべきデバイスが、タイプ3制御ユニットに連結されており、同じ制御ユニットに連結されている別のデバイスのサブチャネルが、同じチャネルパスに対し専用アリージャンスを有する。
クリア機能のサブチャネル変更
サブチャネルにおけるパス管理制御インジケーションは、クリア機能の実行中に変更される。事実上、この変更は、チャネルパスの選択の試行後、ただしクリア信号を発行するデバイスの選択の試行前に発生する。変更されるパス管理制御インジケーションは、以下のとおりである。
1.サブチャネルにおける8つの可能なチャネルパスすべての状態が、サブチャネルに関して動作可能に設定される。
2.最後に使用されたチャネルパスを示さないように、最後に使用されたパスのインジケーションがリセットされる。
3.パス動作不能条件があれば、それがリセットされる。
クリア機能の伝達および完了
チャネルパスの選択の試行およびパス管理制御フィールドの変更後、チャネル・サブシステムは、条件が許せば、クリア信号を発行するデバイスの選択を試行する。サブチャネル、および選択されたチャネルパスがあればそれに関連する条件が、(1)クリア信号の発行が試行されるかどうか、および(2)クリア信号を発行する試行が成功するかどうかに影響を及ぼす。これらの条件とは独立して、サブチャネルはその後ステータス・ペンディングに設定され、クリア機能の実行が完了する。これらの条件およびそのクリア機能への影響について、以下のとおり説明する。
クリア信号の発行が試行されない:チャネル・サブシステムは、以下の条件のうちのいずれかが存在する場合、デバイスへのクリア信号の発行を試行しない。
1.チャネルパスが選択されなかった。
2.選択されたチャネルパスが、もはや選択可能でない。
3.選択されたチャネルパスに関して、チャネルパス終了条件が存在する。
4.パラレルまたはESCON(IBM社の登録商標)チャネルパスの場合:選択されたチャネルパスが、別のデバイスとアクティブに通信するために現在使用されている。FICON(IBM社の登録商標)チャネルパスの場合:選択されたチャネルパスは、現在、アクティブなコンカレント通信を有することができる最大数のデバイスとアクティブに通信するために使用されている。
5.伝達されるべきデバイスが、タイプ1制御ユニットに連結されており、同じ制御ユニットに連結されている別のデバイスのサブチャネルが、同じチャネルパスに対しアリージャンスを有する。ただし、アリージャンスがワーキング・アリージャンスであり一次ステータスがサブチャネルによって受け取られている場合を除く。
6.伝達されるべきデバイスが、タイプ3制御ユニットに連結されており、同じ制御ユニットに連結されている別のデバイスのサブチャネルが、同じチャネルパスに対し専用アリージャンスを有する。
上記の条件のうちのいずれかが存在する場合、サブチャネルは、クリア・ペンディングのままとなり、ステータス・ペンディングに設定され、クリア機能の実行は完了する。
クリア信号を発行する試行が成功しない:チャネル・サブシステムが、デバイスへのクリア信号の発行を試行すると、以下の条件が理由でその試行が成功しないこともある。
1.チャネル・サブシステムがクリア信号を発行するデバイスの選択を試行すると、制御ユニットまたはデバイスがビジー条件を伝達する。
2.チャネル・サブシステムがクリア信号を発行するデバイスの選択を試行すると、パス動作不能条件が認識される。
3.チャネル・サブシステムがクリア信号の発行を試行すると、エラー条件に遭遇する。
上記の条件のうちのいずれかが存在し、チャネル・サブシステムが、クリア信号を発行する試行が成功しなかったと判断するか、または試行が成功したかどうかを判断できない場合、サブチャネルはクリア・ペンディングのままとなり、ステータス・ペンディングに設定され、クリア機能の実行は完了する。
クリア信号を発行する試行が成功:チャネル・サブシステムが、クリア信号を発行する試行が成功したと判断すると、サブチャネルはクリア・ペンディングでなくなり、ステータス・ペンディングに設定され、クリア機能の実行は完了する。サブチャネルがステータス・ペンディングになるとき、関連するデバイスを用いるI/O動作は、あったとしても終了されている。
プログラミング・ノート:クリア機能の実行後、制御ユニット終了のみの場合を除いて、デバイスによってチャネル・サブシステムに提示される任意のゼロ以外のステータスが、非応答型アラート・ステータスとしてプログラムに渡される。制御ユニット終了のみまたはゼロ・ステータスから成る非応答型ステータスは、プログラムに提示されない。
MODIFY SUBCHANNEL
サブチャネル情報ブロック(SCHIB)内に含まれる情報は、サブチャネルにおけるプログラム変更可能フィールドに入れられる。結果として、プログラムは、そのサブチャネルに関して、クリア、停止、再開および開始機能ならびに特定のI/Oサポート機能に関連するI/O処理の特定の側面に影響を与える。
汎用レジスタ1は、SCHIBの特定のフィールドによって指定されるとおりに変更されるべきサブチャネルを指示する、サブシステム識別ワード(SID)を含む。第2オペランド・アドレスは、SCHIBの論理アドレスであり、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
SCHIB情報をサブチャネルに入れることにより影響を受ける可能性があるチャネル・サブシステム動作は、以下である。
・I/O処理(Eフィールド)
・割り込み処理(割り込みパラメータおよびISCフィールド)
・パス管理(D、LPMおよびPOMフィールド)
・監視およびアドレス限界チェック(測定ブロック・インデックス、LMおよびMMフィールド)
・測定ブロック・フォーマット制御(Fフィールド)
・拡張測定ワード・モード有効化(Xフィールド)
・コンカレント・センス・ファシリティ(Sフィールド)
・測定ブロック・アドレス(MBA:Measurement−block address)
SCHIBオペランドのワード1のビット0、1、6および7、ならびにワード6のビット0〜28は、ゼロでなければならず、ワード1のビット9および10は、両方1であってはならない。拡張I/O測定ブロック・ファシリティがインストールされ、フォーマット1測定ブロックが指定される場合、ワード11のビット26〜31は、ゼロとして指定されなければならない。拡張I/O測定ブロック・ファシリティがインストールされていない場合、ワード6のビット29は、ゼロとして指定されなければならず、そうでない場合、オペランド例外が認識される。拡張I/O測定ワード・ファシリティがインストールされていない場合、またはインストールされているが有効化されていない場合、ワード6のビット30は、ゼロとして指定されなければならず、そうでない場合、オペランド例外が認識される。SCHIBの残りのフィールドは無視され、MODIFY SUBCHANNELの処理に影響を及ぼさない。
SCHIBからの情報がサブチャネルのプログラム変更可能フィールドに入れられたことを示すよう、条件コード0が設定される。ただし、指示されたサブチャネルにおけるデバイス番号有効ビット(V)がゼロである場合は別であり、その場合、条件コード0が設定され、SCHIBからの情報はプログラム変更可能フィールドに入れられない。
特殊条件
サブチャネルがステータス・ペンディングである場合、条件コード1が設定され、ほかのアクションはとられない。
クリア、停止、または開始機能がサブチャネルにて進行中の場合、条件コード2が設定され、ほかのアクションはとられない。
サブチャネルがMODIFY SUBCHANNELに関して動作不能である場合、条件コード3が設定され、ほかのアクションはとられない。サブチャネルがチャネル・サブシステムにおいて提供されていない場合、サブチャネルはMODIFY SUBCHANNELに関して動作不能である。
MODIFY SUBCHANNELは、下記に記載または列挙されるプログラム例外に遭遇することがある。
SCHIBのワード1において、ビット0、1、6および7はゼロでなければならず、アドレス限界チェック・ファシリティがインストールされている場合、ビット9および10は両方1であってはならない。SCHIBのワード6において、ビット0〜28はゼロでなければならない。そうでない場合、オペランド例外が認識される。
拡張I/O測定ブロック・ファシリティがインストールされ、フォーマット1測定ブロックが指定される場合、ワード11のビット26〜31は、ゼロとして指定されなければならず、そうでない場合、オペランド例外が認識される。拡張I/O測定ブロック・ファシリティがインストールされていない場合、ワード6のビット29は、ゼロとして指定されなければならず、そうでない場合、オペランド例外が認識される。拡張I/O測定ワード・ファシリティがインストールされていない場合、またはインストールされているが有効化されていない場合、ワード6のビット30は、ゼロとして指定されなければならず、そうでない場合、オペランド例外が認識される。
複数サブチャネル・セット・ファシリティがインストールされていない場合、汎用レジスタ1のビット32〜47は、0001hexを含まなければならず、そうでない場合、オペランド例外が認識される。
複数サブチャネル・セット・ファシリティがインストールされている場合、汎用レジスタ1のビット32〜44は、ゼロを含まなければならず、ビット45〜46は、有効な値を含まなければならず、ビット47は、値1を含まなければならず、そうでない場合、オペランド例外が認識される。
第2オペランドは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。MODIFY SUBCHANNELの実行は、すべてのアドレス指定および保護例外に基づき抑制される。
結果として生じる条件コード:
0 機能完了
1 ステータス・ペンディング
2 ビジー
3 動作不能
プログラム例外:
・アクセス(フェッチ、オペランド2)
・オペランド
・特権動作
・指定
プログラミング・ノート:
1.関連するサブチャネルが無効化されている間に、デバイスがI/Oエラー・アラートを伝達すると、チャネル・サブシステムは、クリア信号をデバイスに発行し、I/O割り込み条件を生成せずにI/Oエラー・アラート・インジケーションを破棄する。
2.関連するサブチャネルが無効化されている間に、デバイスが非応答型ステータスを提示すると、そのステータスは、I/O割り込み条件を生成することなくチャネル・サブシステムによって破棄される。なお、提示されたステータスがユニット・チェックを含む場合、チャネル・サブシステムは、関連するサブチャネルに対しクリア信号を発行し、I/O割り込み条件を生成しない。これは、サブチャネルを有効化するためにプログラムがMODIFY SUBCHANNELを使用する場合、考慮に入れられるべきである。例えば、サブチャネルが無効化状態になったときに存在した関連するデバイス上の媒体は、取り替えられていることもあり得るため、プログラムは、その媒体の完全性を検証するべきである。
3.MODIFY SUBCHANNELが条件コード0を設定すると、その後プログラムがSTORE SUBCHANNELを発行してサブチャネルのコンテンツを調べることが推奨される。STORE SUBCHANNELの使用は、指示されたサブチャネルが変更されたか否かを判断する方法である。MODIFY SUBCHANNELによって条件コード0が設定されるのに続いて、サブチャネルを調べない場合、結果として、プログラムが予期しないような条件が発生し得る。
START SUBCHANNEL
チャネル・サブシステムが、関連するデバイスに関して開始機能を非同期的に実行するよう伝達され、指示されたORB内に含まれる実行パラメータが、指示されたサブチャネルに置かれる。
汎用レジスタ1は、開始されるサブチャネルを指示するサブシステム識別ワードを含む。第2オペランド・アドレスは、ORBの論理アドレスであり、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
ORB内に含まれる実行パラメータは、サブチャネルに置かれる。
START SUBCHANNELが実行され、サブチャネルが二次ステータスのみを伴うステータス・ペンディングであり、拡張ステータス・ワード・フォーマット・ビット(L)がゼロである場合、ステータス・ペンディング条件はサブチャネルにて破棄される。
サブチャネルは、開始ペンディングにされ、開始機能がサブチャネルにて示される。第2オペランドが、コマンド・モードORBを指示すると、サブチャネルはコマンド・モードにとどまる。第2オペランドが、トランスポート・モードORBを指示すると、サブチャネルはトランスポート・モードに入る。サブチャネルがトランスポート・モードに入ると、以前の専用アリージャンスが存在しなければLPUMがゼロに設定され、そうでない場合LPUMは変更されない。
条件コード0の設定より論理的に前に、サブチャネルにパス動作不能条件があれば、クリアされる。
チャネル・サブシステムは、開始機能を非同期的に実行するよう伝達される。開始機能については、下記「関連機能」のセクションに要約されており、その後詳細に記載される。
上記のアクションがとられたことを示すために、条件コード0が設定される。
関連機能
START SUBCHANNELの実行後、チャネル・サブシステムは、開始機能を非同期的に実行する。
すべてゼロを含まなければならないフィールド以外のORBのコンテンツは、有効性をチェックされる。一部のモデルでは、ゼロを含まなければならないORBのフィールドは、命令の実行中ではなく、非同期的にチェックされる。無効なフィールドが非同期的に検出されると、サブチャネルは、一次、二次、およびアラート・ステータスを伴い、遅延条件コード1およびプログラム・チェックが示された状態でステータス・ペンディングになる。この状況では、I/O動作またはI/O動作のチェーンは、デバイスにて開始されず、SCSWがTEST SUBCHANNELの実行によってクリアされると、条件が、1として格納される開始ペンディング・ビットによって示される。
一部のモデルでは、パス利用可能性が、命令の実行中ではなく、非同期的にテストされる。いずれのチャネルパスも選択可能でない場合、サブチャネルは、一次および二次ステータスを伴い、遅延条件コード3が示された状態でステータス・ペンディングになる。I/O動作またはI/O動作のチェーンは、デバイスにて開始されず、SCSWがTEST SUBCHANNELの実行によってクリアされると、この条件が、1として格納された開始ペンディング・ビットによって示される。
条件が許せば、チャネルパスが選択され、ORB内で指示されているチャネル・プログラムの実行が開始される。
特殊条件
START SUBCHANNELが実行されるときにサブチャネルがステータス・ペンディングである場合、条件コード1が設定され、ほかのアクションはとられない。一部のモデルでは、サブチャネルが二次ステータスのみを伴うステータス・ペンディングである場合、条件コード1は設定されず、代わりにステータス・ペンディング条件は破棄される。
開始、停止、またはクリア機能がサブチャネルにて現在進行中の場合、条件コード2が設定され、ほかのアクションはとられない。
サブチャネルがSTART SUBCHANNELに関して動作不能である場合、条件コード3が設定され、ほかのアクションはとられない。サブチャネルがチャネル・サブシステムにおいて提供されていない場合、または有効なデバイス番号が関連付けられていない場合、または有効化されていない場合、サブチャネルは、START SUBCHANNELに関して動作不能である。
一部のモデルでは、いずれのチャネルパスも選択可能でない場合も、サブチャネルは、START SUBCHANNELに関して動作不能である。これらのモデルでは、利用可能なチャネルパスがないことが、START SUBCHANNEL実行の一環として検出される。ほかのモデルでは、チャネルパス利用可能性は、非同期的な開始機能の一環としてのみテストされる。
START SUBCHANNELは、下記に記載または列挙されるプログラム例外に遭遇することがある。
コマンド・モードORBのワード1において、ビット26〜30はゼロでなければならず、コマンド・モードORBのワード2において、ビット0はゼロでなければならない。そうでない場合、一部のモデルでは、オペランド例外が認識される。ほかのモデルでは、非同期的な開始機能の一環として、プログラム・チェックを示すI/O割り込み条件が生成される。
START SUBCHANNELはさらに、下記に列挙されるプログラム例外に遭遇することがある。
複数サブチャネル・セット・ファシリティがインストールされていない場合、汎用レジスタ1のビット32〜47は、0001hexを含まなければならず、そうでない場合、オペランド例外が認識される。
複数サブチャネル・セット・ファシリティがインストールされている場合、汎用レジスタ1のビット32〜44は、ゼロを含まなければならず、ビット45〜46は、有効な値を含まなければならず、ビット47は、値1を含まなければならず、そうでない場合、オペランド例外が認識される。
第2オペランドは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。START SUBCHANNELの実行は、すべてのアドレス指定および保護例外に基づき抑制される。
結果として生じる条件コード:
0 機能開始済み
1 ステータス・ペンディング
2 ビジー
3 動作不能
プログラム例外:
・アクセス(フェッチ、オペランド2)
・オペランド
・特権動作
・指定
開始機能および再開機能
開始および再開機能は、後述のI/O動作を開始する。開始機能は、コマンド・モードまたはトランスポート・モードのいずれかで動作しているサブチャネルに適用される。再開機能は、コマンド・モードで動作しているサブチャネルのみに適用される。
START SUBCHANNELおよびRESUME SUBCHANNELの実行後、チャネル・サブシステムは、それぞれ開始および再開機能を実行して、関連するデバイスを用いたI/O動作を開始する。開始または再開機能の実行は、(1)パス管理動作を実行すること、(2)関連するデバイスを用いたI/O動作またはI/O動作のチェーンを実行すること、および(3)サブチャネルをステータス・ペンディングにさせ、開始機能の完了を示させることから成る。開始機能は、チャネル・プログラムの実行を開始し、チャネル・プログラムは、ORB内で指示され、さらにORBは、START SUBCHANNELのオペランドとして指示される。これは、再開機能とは対照的であり、再開機能は、中断されているチャネル・プログラムがあればその実行を、中断をもたらしたCCWから開始する。そうでない場合、再開機能は開始機能であるかのように実行される。
開始機能および再開機能のパス管理
デバイスを選択して当該デバイスを用いたI/O動作を開始するために使用できる、利用可能なチャネルパスを選択するために、パス管理動作が、開始または再開機能のいずれかの実行中、チャネル・サブシステムによって実行される。とられるアクションは以下のとおりである。
1.現在、サブチャネルが開始ペンディングかつデバイス・アクティブである場合、開始機能は、先行する開始機能の二次ステータスが関連するデバイスから受け取られ、サブチャネルが開始ペンディングのみにされるまで、サブチャネルにてペンディングのままとなる。ステータスが受け取られ、アラート割り込み条件を記述するものでなければ、サブチャネルはステータス・ペンディングにされず、続いて、ペンディングの開始機能の実行が開始される。ステータスがアラート割り込み条件を記述するものであれば、サブチャネルは、二次およびアラート・ステータスを伴うステータス・ペンディングになり、ペンディングの開始機能は開始されず、遅延条件コード1が設定され、開始ペンディング・ビットは1のままとなる。現在、サブチャネルが開始ペンディングのみであれば、開始機能の実行が後述のとおり開始される。
2.サブチャネルにてチャネルパスに対し専用アリージャンスが存在する場合、チャネル・サブシステムは、そのパスをデバイス選択のために選択する。デバイスの選択を試行している間にビジー条件に遭遇し、サブチャネルに専用アリージャンスが存在する場合、開始機能は、そのチャネルパスに関してビジーの内部インジケーションがリセットされるまで、ペンディングのままとなる。ビジーの内部インジケーションがリセットされると、そのチャネルパス上で、ペンディングの開始機能の実行が開始される。
3.選択可能なチャネルパスがなく、サブチャネルにおいてチャネルパスに対する専用アリージャンスが存在しなければ、チャネルパスは選択されない。
4.選択可能なチャネルパスがすべて試行され、そのうち1つ以上が、ほかのデバイスとアクティブに通信するために使用されている場合、あるいは、チャネル・サブシステムが当該チャネルパスのうちの1つ以上における制御ユニット・ビジーもしくはデバイス・ビジー条件のいずれか、または当該チャネルパスのうちの1つ以上におけるそうした条件の組み合わせに遭遇した場合、開始機能は、必要に応じてチャネルパス、制御ユニット、またはデバイスが利用可能になるまで、サブチャネルにてペンディングのままとなる。
5.(1)開始機能が、タイプ1制御ユニットに連結されているデバイスとのチャネルパス上で開始されるものであり、(2)デバイスのサブチャネルが同じチャネルパスに対する専用アリージャンスを有するか、または同じチャネルパスに対するワーキング・アリージャンスを有する、ほかのデバイスであって、当該サブチャネルに関して一次ステータスが受領されていない、該ほかのデバイスが、同じ制御ユニットに連結されていない場合、そのチャネルパスは、選択可能であれば選択され、そうでない場合、そのチャネルパスは選択されない。なお、デバイスへの別のチャネルパスが選択可能であり、上述のアリージャンスが存在しなければ、そのチャネルパスが選択される。ほかに選択可能なチャネルパスがなければ、開始または再開機能は、必要に応じて、チャネルパスが利用可能になるまでペンディングのままとなる。
6.デバイスがタイプ3制御ユニットに連結されていて、かつ、デバイスのサブチャネルが同じチャネルパスに対して専用アリージャンスを有するほかの少なくとも1つのデバイスが、同じ制御ユニットに連結されている場合、選択可能な別のチャネルパスが選択されてもよく、または該ほかのデバイスの専用アリージャンスがクリアされるまで、開始機能はペンディングのままとなる。
7.チャネルパスが選択されていて、ペンディングのCCWチャネル・プログラムの第1コマンドの実行を開始するため、またはペンディングのTCWチャネル・プログラムのTCCBを輸送するためのデバイス選択中に、ビジー・インジケーションが受領されると、ビジー・インジケーションが受領されたチャネルパスは、ビジーの内部インジケーションがリセットされるまで、(受領されたデバイス・ビジーまたは制御ユニット・ビジー・インジケーションに応じて)当該デバイスまたは制御ユニットに対して再び使用されない。
8.CCWチャネル・プログラムの場合は、開始に関して指定される、もしくは再開機能に関して暗示される第1コマンドの実行を開始するため、またはTCWチャネル・プログラムの場合は、開始機能に関するTCCBの輸送を開始するために、デバイスの選択を試行する間、(上記アクション7に記載されたように)チャネル・サブシステムがビジー・インジケーションを受領すると、以下のアクションのうちの1つを実行する。
a.デバイスがマルチパス・モードで動作するよう指定されており、受領されたビジー・インジケーションがデバイス・ビジーである場合、開始または再開機能は、ビジーの内部インジケーションがリセットされるまでペンディングのままとなる。
b.デバイスがマルチパス・モードで動作するよう指定されており、受領されたビジー・インジケーションが制御ユニット・ビジーである場合、またはデバイスが単一パス・モードで動作するよう指定されている場合、チャネル・サブシステムは、選択可能な代わりのチャネルパスを選択することでデバイスの選択を試行し、開始もしくは再開機能が開始されるか、またはデバイスの選択が選択可能なすべてのチャネルパスに対して試行されるまで、パス管理動作を継続する。選択可能なすべてのチャネルパスが選択された後に、開始または再開機能がチャネル・サブシステムによって開始されていなければ、開始または再開機能は、ビジーの内部インジケーションがリセットされるまでペンディングのままとなる。
c.サブチャネルが専用アリージャンスを有する場合、上記のアクション2が適用される。
9.CCWチャネル・プログラムの第1コマンドを転送するため、またはTCWチャネル・プログラムのTCCBを輸送するために選択を試行する間、デバイスが動作不能のようであり、対応するチャネルパスがサブチャネルに関して動作可能であれば、パス動作不能条件が認識され、サブチャネルにてチャネルパスの状態が、サブチャネルに関して動作可能からサブチャネルに関して動作不能に変化する。サブチャネルにパス動作不能条件がある場合、これは、サブチャネルが次にクリア・ペンディング、開始ペンディング、または再開ペンディング(サブチャネルが中断された場合)になるまで保たれ、その時点でパス動作不能条件がクリアされる。一方、対応するチャネルパスがサブチャネルに関して動作不能である場合、パス動作不能条件は認識されない。選択可能なチャネルパス上で第1コマンドまたはTCCBを転送するために選択を試行する間、デバイスが動作不能のようであれば、以下のアクションのうちの1つが発生する。
a.そのチャネルパスに対して専用アリージャンスが存在すれば、それが選択可能な唯一のチャネルパスである。したがって、開始または再開機能を開始するさらなる試行は放棄され、割り込み条件が認識される。
b.専用アリージャンスが存在せず、試行されていない選択可能なほかのチャネルパスがあれば、それらのチャネルパスのうちの1つが、デバイス選択を試行してCCWチャネル・プログラムの第1コマンドまたはTCWチャネル・プログラムのTCCBを転送するために選択される。
c.専用アリージャンスが存在せず、試行されていない選択可能なほかのチャネルパスがなく、試行されたチャネルパスのうちの少なくとも1つにおいてデバイスが動作可能のようである場合、開始または再開機能は、必要に応じてチャネルパス、制御ユニット、またはデバイスが利用可能になるまで、サブチャネルにてペンディングのままとなる。
d.専用アリージャンスが存在せず、試行されていない選択可能なほかのチャネルパスがなく、試行されたすべてのチャネルパスにおいてデバイスが動作不能のようである場合、開始または再開機能を開始しようとするさらなる試行は放棄され、割り込み条件が認識される。
10.サブチャネルがアクティブであり、デバイスを用いたI/O動作が開始されるとき、サブチャネルにてマルチパス・モードが指定されていなければ、すべてのデバイス選択はLPUMインジケーションに従って発生する。例えば、CCWチャネル・プログラムに関してコマンド・チェーニングが指定されている場合、チャネル・サブシステムは、I/O動作のチェーンを記述する第1コマンドおよびその後のすべてのコマンドを同じチャネルパス上で転送する。
I/O動作の実行
チャネルパスが選択された後、チャネル・サブシステムは、条件が許せば、関連するデバイスを用いたI/O動作の実行を開始する。第1I/O動作の開始および実行に、さらなるI/O動作の実行が続くとよい。
コマンド・モードで動作しているサブチャネルに関して、チャネル・サブシステムは、書き込み(write)、読み取り(read)、逆読み(read backward)、制御(control)、センス(sense)、センスID(sense ID)、およびチャネル内転送(transfer in channel)の7タイプのコマンドを実行することができる。チャネル内転送以外の各コマンドは、対応するI/O動作を開始する。サブチャネルにてチャネル・プログラム実行が中断されている期間を除いて、サブチャネルは、第1コマンドを受け取ってから、サブチャネルにて一次割り込み条件が認識されるまでアクティブである。一次割り込み条件が、第1コマンドを受け取るよりも前に認識されると、サブチャネルはアクティブにならない。通常は、一次割り込み条件は、チャネル終了信号により、またはコマンド・チェーニングの場合はチェーンの最後のCCWに関するチャネル終了信号により生じる。デバイスは、サブチャネルにて二次割り込み条件が認識されるまでアクティブである。通常は、二次割り込み条件は、デバイス終了信号により、またはコマンド・チェーニングの場合はチェーンの最後のCCWに関するデバイス終了信号により生じる。
トランスポート・モードで動作しているサブチャネルに関して、チャネル・サブシステムは、書き込み、読み取り、制御、センス、センスID、および問い合わせ(interrogate)の6タイプのコマンドを実行のために輸送することができる。各コマンドは、対応するデバイス動作を開始する。1つ以上のコマンドが、TCCB内でI/Oデバイスに輸送されるとき、サブチャネルは、一次ステータスが提示されるまで開始ペンディングのままとなる。
プログラミング・ノート:
単一パス・モードでは、I/O動作またはI/O動作のチェーンのためのコマンド、データ、およびステータスの転送はすべて、第1コマンドがデバイスに転送されたチャネルパス上で発生する。
デバイスに動的再接続機能がインストールされている場合、I/O動作またはI/O動作のチェーンはマルチパス・モードで実行されるとよい。マルチパス・モードで動作するには、サブチャネルに関して、SCHIBのワード1のビット13が1として指定されたMODIFY SUBCHANNELがあらかじめ実行されていなければならない。さらに、デバイスは、当該タイプのデバイスに適切なモデル依存の特定のコマンドを実行することによって、マルチパス・モード用に設定されなければならない。マルチパス・モード動作を処理するための全般的な手順は、以下のとおりである。
1.セットアップ
a.設定されるマルチパス・グループのメンバとなる各チャネルパスに対して、マルチパス・モード設定タイプのコマンドのデバイスによる実行が成功しなければならず、さもなければ、マルチパス・モードの動作が、サブチャネルにて予測不能な結果を与えることもある。何らかの理由で、デバイスへの物理的に利用可能な1つ以上のチャネルパスがマルチパス・グループに含まれない場合、これらのチャネルパスは、サブチャネルがマルチパス・モードで動作している間、選択可能であってはならない。チャネルパスは、MODIFY SUBCHANNELの実行前にSCHIBにおいて、またはSTART SUBCHANNELの実行前にORBにおいて、対応するLPMビットをゼロに設定することによって、選択不可能にすることができる。
b.マルチパス・モード設定タイプのコマンドがデバイスに転送されるとき、当該開始機能の実行のためにほかのチャネルパスが選択されることを回避するために、単一のチャネルパスのみが論理的に利用可能でなければならず、そうでない場合、チャネル・サブシステムにより2つ以上のチャネルパス上でデバイス・ビジー条件が検出されることもあり、これは、後のマルチパス・モード動作に関して予測不能な結果をもたらすこともある。このタイプのセットアップ手順は、マルチパス・グループのメンバーシップが変更される度に使用されるべきである。
2.マルチパス・モードの終了
マルチパス・モードを終了して単一パス・モードで処理を継続するには、以下の2つの手順のうちのいずれかが使用されるとよい。
a.マルチパス・モード解除タイプのコマンドが、マルチパス・グループの任意のチャネルパスに対して実行されるとよい。このコマンドの後には、(1)SCHIBのワード1のビット13がゼロとして指定されたMODIFY SUBCHANNELの実行、または(2)LPMにおいて単一のチャネルパスのみ論理的に利用可能として指定することのいずれかが続かなければならない。デバイスが単一パス・モードで動作している間、開始機能は、複数のチャネルパスが選択可能なマルチパス・モードで動作しているサブチャネルにて実行されてはならない。さもなければ、その機能または後の開始機能に関して、サブチャネルにて予測不能な結果が発生し得る。
b.マルチパス・モード離脱タイプのコマンドが、マルチパス・グループの各チャネルパスに対して実行される(セットアップの逆)。このコマンドの後には、(1)SCHIBのワード1のビット13がゼロとして指定されたMODIFY SUBCHANNELの実行、または(2)LPMにおいて単一のチャネルパスのみ論理的に利用可能として指定することのいずれかが続かなければならない。デバイスが単一パス・モードで動作している間、開始機能は、複数のチャネルパスが選択可能なマルチパス・モードで動作しているサブチャネルにて実行されてはならない。さもなければ、その機能または後の開始機能に関して、サブチャネルにて予測不能な結果が発生し得る。
データのブロック化
I/Oデバイスによって記録されたデータがブロックに分けられる。ブロックの長さはデバイス次第である。例えば、ブロックは、カード、印字ライン、または磁気テープ上の連続した2つのギャップ間に記録された情報とすることができる。
1つのI/O動作において転送可能な情報の最大量は、1ブロックである。I/O動作は、関連するメイン・ストレージ・エリアが使い果たされるか、またはブロックの終わりに達するか、どちらかが最初に発生したときに終了される。磁気テープ・ユニット上または照会用端末における書き込みなど、一部の動作に関しては、ブロックは規定されず、転送される情報の量は、プログラムによってのみ制御される。
動作要求ブロック
動作要求ブロック(ORB)は、START SUBCHANNELのオペランドである。ORBは、その特定の開始機能を制御する際に使用されるパラメータを指定する。これらのパラメータには、割り込みパラメータ、サブチャネル・キー、第1CCWまたはTCWのアドレス、動作制御ビット、優先度制御番号、および指示されたデバイスへのチャネルパスの論理的利用可能性の指定が含まれる。
ORBのコンテンツは、START SUBCHANNELの実行中、条件コード0の設定の前に、指示されたサブチャネルに置かれる。実行の結果、ゼロ以外の条件コードがもたらされる場合、ORBのコンテンツは、指示されたサブチャネルに置かれない。
ORBアドレスの右端の2ビットはゼロであり、ORBをワード境界上に置かなければならず、そうでない場合、指定例外が認識される。ファイバ・チャネル拡張(FCX)ファシリティがインストールされている場合、ORBのチャネル・プログラム・タイプ制御(B)(ワード1のビット13)が、ORBによって指示されるチャネル・プログラムのタイプを指定する。Bがゼロである場合、ORBは、CCWチャネル・プログラムを指示する。Bが1である場合、ORBは、TCWチャネル・プログラムを指示する。FCXをサポートするI/Oデバイスのみが、TCWチャネル・プログラムを認識する。
START SUBCHANNELの実行中、CCWチャネル・プログラムを指示するORBのコンテンツが、指示されたサブチャネルに置かれると、サブチャネルはコマンド・モードにとどまる。したがって、そのようなORBは、コマンド・モードORBとしても知られる。START SUBCHANNELの実行中、TCWチャネル・プログラムを指示するORBのコンテンツが、指示されたサブチャネルに置かれると、サブチャネルはトランスポート・モードに入る。したがって、そのようなORBは、トランスポート・モードORBとしても知られる。
TEST PENDING INTERRUPTION
サブチャネルにおけるペンディングI/O割り込みに関するI/O割り込みコードが、第2オペランド・アドレスによって指示される位置に格納され、ペンディングI/O割り込み要求がクリアされる。
第2オペランド・アドレスは、ゼロ以外の場合、ワード0および1から成る2ワードI/O割り込みコードが格納される位置の論理アドレスである。第2オペランド・アドレスは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
第2オペランド・アドレスがゼロであれば、ワード0〜2から成る3ワードI/O割り込みコードが、実位置184〜195に格納される。この場合、低アドレス保護およびキー制御保護は適用されない。
第2オペランド・アドレスがゼロである場合のアクセス・レジスタ・モードでは、アクセス・レジスタ変換がアクセス・レジスタB2に対して発生するかどうかは予測不能である。変換が発生した場合、結果として生じるアドレス空間制御要素は使用されない。すなわち、割り込みコードはやはり実位置184〜195に格納される。
ペンディングI/O割り込み要求は、命令を実行しているCPUの制御レジスタ6内のI/O割り込みサブクラス・マスクによって許可された、当該I/O割り込みサブクラスのみに関して受け取られる。制御レジスタ6によって許可されるI/O割り込み要求が存在しなければ、I/O割り込みコードは格納されず、第2オペランド位置は変更されず、条件コード0が設定される。
ペンディングI/O割り込み要求が受け取られると、I/O割り込みコードが格納され、ペンディングI/O割り込み要求がクリアされ、条件コード1が設定される。格納されるI/O割り込みコードは、I/O割り込みが発生した場合に格納されるのと同じである。しかし、PSWは、I/O割り込みが発生するときにようにスワップされない。命令の実行中に格納されるI/O割り込みコードは、以下のとおり規定される。
サブシステム識別ワード(SID):
SIDのビット32〜63が、ワード0に入れられる。
割り込みパラメータ:ワード1は、プログラムによって指定された4バイト・パラメータを含み、ORBまたはPMCWのワード0内でサブチャネルに渡される。デバイスがアラート・ステータスを提示し、割り込みパラメータが、START SUBCHANNELまたはMODIFY SUBCHANNELの実行によってサブチャネルにあらかじめ渡されなかった場合、このフィールドはゼロを含む。
割り込み識別ワード:ワード2は、格納される場合、割り込み識別ワードを含み、これはさらに、I/O割り込みのソースを識別する。ワード2は、第2オペランド・アドレスがゼロであるときのみ格納される。
割り込み識別ワードは、以下のとおり規定される。
Aビット(A):割り込み識別ワードのビット0は、クリアされたペンディングI/O割り込み要求のタイプを指定する。ビット0がゼロである場合、I/O割り込み要求はサブチャネルに関連していた。
I/O割り込みサブクラス(ISC:I/O−Interruption Subclass):割り込み識別ワードのビット・ポジション2〜4は、ペンディングI/O割り込み要求がクリアされたサブチャネルに関連するI/O割り込みサブクラスを指定する、0〜7の範囲の符号なし2進整数を含む。残りのビット・ポジションは保留され、ゼロとして格納される。
特殊条件
TEST PENDING INTERRUPTIONは、下記に記載または列挙されるプログラム例外に遭遇することがある。
第2オペランドは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
TEST PENDING INTERRUPTIONの実行は、すべてのアドレス指定および保護例外に基づき抑制される。
結果として生じる条件コード:
0 割り込みコードは格納されていない
1 割り込みコード格納済み
2 ―
3 ―
プログラム例外:
・アクセス(格納、オペランド2、第2オペランド・アドレスがゼロ以外のみ)
・特権動作
・指定
プログラミング・ノート:
1.TEST PENDING INTERRUPTIONは、I/O割り込みがマスク・オフされる場合、ゼロの第2オペランド・アドレスを用いてのみ実行されるべきである。さもなければ、I/O割り込みが発生すると、命令によって格納されるI/O割り込みコードが失われる可能性がある。TEST PENDING INTERRUPTIONの後に獲得され、I/O割り込みのソースを識別するI/O割り込みコードも、実位置184〜195に格納され、命令によって格納されたI/O割り込みコードに取って代わる。
2.第2オペランド・アドレスがゼロである場合のアクセス・レジスタ・モードでは、アクセス・レジスタ変換が発生しアクセス・レジスタがエラー状態である場合、アクセス例外が認識される。この例外は、B2フィールドをゼロにすること、または00000000hex、00000001hex、またはその他任意の有効なコンテンツをアクセス・レジスタに入れることによって、防ぐことができる。
STORE SUBCHANNEL
指示されたサブチャネルの制御およびステータス情報が、指示されたSCHIBに格納される。
汎用レジスタ1は、情報が格納されるサブチャネルを指示するサブシステム識別ワードを含む。第2オペランド・アドレスは、SCHIBの論理アドレスであり、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
拡張I/O測定ブロック・ファシリティがインストールされていない場合、SCHIBに格納される情報は、パス管理制御ワード、SCSW、およびモデルに依存する3ワードの情報から成る。拡張I/O測定ブロック・ファシリティがインストールされている場合、SCHIBに格納される情報は、パス管理制御ワード、SCSW、測定ブロック・アドレス・フィールド、およびモデルに依存する1ワードの情報から成る。
STORE SUBCHANNELの実行は、サブチャネルにおけるいかなる情報も変更しない。
条件コード0は、指示されたサブチャネルの制御およびステータス情報がSCHIBに格納されたことを示すために設定される。STORE SUBCHANNELの実行の結果、条件コード0が設定される場合、SCHIB内の情報が、サブチャネルの一貫した状態を示す。
特殊条件
指示されたサブチャネルがSTORE SUBCHANNELに関して動作不能である場合、条件コード3が設定され、ほかのアクションはとられない。サブチャネルがチャネル・サブシステムにおいて提供されていない場合、サブチャネルはSTORE SUBCHANNELに関して動作不能である。
STORE SUBCHANNELは、下記に記載または列挙されるプログラム例外に遭遇することがある。
複数サブチャネル・セット・ファシリティがインストールされていない場合、汎用レジスタ1のビット32〜47は、0001hexを含まなければならず、そうでない場合、オペランド例外が認識される。
複数サブチャネル・セット・ファシリティがインストールされている場合、汎用レジスタ1のビット32〜44は、ゼロを含まなければならず、ビット45〜46は、有効な値を含まなければならず、ビット47は、値1を含まなければならず、そうでない場合、オペランド例外が認識される。
第2オペランドは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
結果として生じる条件コード:
0 SCHIB格納済み
1 ―
2 ―
3 動作不能
プログラム例外:
・アクセス(格納、オペランド2)
・オペランド
・特権動作
・指定
プログラミング・ノート:
1.SCSWに格納されるデバイス・ステータスは、デバイス・ビジー、制御ユニット・ビジー、または制御ユニット終了インジケーションを含むとよい。
2.SCHIBに格納される情報はサブチャネルから取得される。STORE SUBCHANNEL命令は、アドレス指定されたデバイスへの問い合わせをチャネル・サブシステムに行わせない。
3.STORE SUBCHANNELは、サブチャネルに存在する条件をサンプリングするためにいつでも実行でき、いかなるペンディング・ステータス条件のクリアも生じさせない。
4.遅延を間にはさまずにSTORE SUBCHANNELを繰り返し実行すること(例えば、サブチャネルが状態を変更したときの判断のため)は、回避されるべきである。その理由は、CPUによるサブチャネルのアクセスが繰り返されると、サブチャネルを更新するためのチャネル・サブシステムによるサブチャネルのアクセスを遅延させること、または妨げることがあるためである。
TEST SUBCHANNEL
サブチャネルの制御およびステータス情報が、指示されたIRBに格納される。
汎用レジスタ1は、情報が格納されるサブチャネルを指示するサブシステム識別ワードを含む。第2オペランド・アドレスは、IRBの論理アドレスであり、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
IRBに格納される情報は、SCSW、拡張ステータス・ワード、および拡張制御ワードから成る。
サブチャネルがステータス・ペンディングであれば、ステータス制御フィールドのステータス・ペンディング・ビットが1として格納される。サブチャネルがステータス・ペンディングであるか否かは、TEST SUBCHANNELが実行されるときに実行される機能に影響する。
サブチャネルがステータス・ペンディングであり、TEST SUBCHANNELが実行されると、上述の情報がIRBに格納され、続いて、サブチャネルに存在する特定の条件およびインジケーションがクリアされる。サブチャネルがトランスポート・モードであれば、これらの条件、特に開始機能のクリアによって、サブチャネルはコマンド・モードに入る。I/O割り込み要求がサブチャネルに関してペンディングである場合、要求はクリアされる。これらのアクションがとられたことを示すために、条件コード0が設定される。
サブチャネルがステータス・ペンディングではなく、TEST SUBCHANNELが実行されると、情報がIRBに格納され、いずれの条件もインジケーションもクリアされない。これらのアクションがとられたことを示すために、条件コード1が設定される。
特殊条件
サブチャネルがTEST SUBCHANNELに関して動作不能である場合、条件コード3が設定され、ほかのアクションはとられない。サブチャネルが提供されていない場合、または有効なデバイス番号が関連付けられていない場合、または有効化されていない場合、サブチャネルは、TEST SUBCHANNELに関して動作不能である。
TEST SUBCHANNELは、下記に記載または列挙されるプログラム例外に遭遇することがある。
複数サブチャネル・セット・ファシリティがインストールされていない場合、汎用レジスタ1のビット32〜47は、0001hexを含まなければならず、そうでない場合、オペランド例外が認識される。
複数サブチャネル・セット・ファシリティがインストールされている場合、汎用レジスタ1のビット32〜44は、ゼロを含まなければならず、ビット45〜46は、有効な値を含まなければならず、ビット47は、値1を含まなければならず、そうでない場合、オペランド例外が認識される。
第2オペランドは、ワード境界上で指示されなければならず、そうでない場合、指定例外が認識される。
TEST SUBCHANNELの実行がアドレス指定および保護例外に基づき終了されると、サブチャネルの状態は変更されない。
結果として生じる条件コード:
0 IRB格納済み;サブチャネルはステータス・ペンディング
1 IRB格納済み;サブチャネルはステータス・ペンディングでない
2 ―
3 動作不能
プログラム例外:
・アクセス(格納、オペランド2)
・オペランド
・特権動作
・指定
プログラミング・ノート:
1.SCSWに格納されるデバイス・ステータスは、デバイス・ビジー、制御ユニット・ビジー、または制御ユニット終了インジケーションを含むとよい。
2.IRBに格納される情報はサブチャネルから取得される。TEST SUBCHANNEL命令は、アドレス指定されたデバイスへの問い合わせをチャネル・サブシステムに行わせない。
3.I/O割り込みが発生する場合、それは、サブチャネルにおけるステータス・ペンディング条件の結果として生じており、通常、ステータスをクリアするためにTEST SUBCHANNELが実行される。さらに、TEST SUBCHANNELは、サブチャネルに存在する条件をサンプリングするために、その他任意のときに実行されてよい。
4.開始機能が完了されたときの判断のためにTEST SUBCHANNELを繰り返し実行することは、回避されるべきである。その理由は、開始機能の完了が示されるかどうか分からない条件が存在するためである。例えば、チャネル・サブシステムが、別のサブチャネルが既にステータス・ペンディングであるため、(任意のサブチャネルに関して)インターフェース制御チェック(IFCC:interface−control−check)条件を一時保留にしている場合であって、TEST SUBCHANNELによりテストされている開始機能に選択可能な唯一のパスとして、IFCC条件を伴うチャネルパスしかない場合、開始機能は、別のサブチャネルにおけるステータス・ペンディング条件がクリアされるまで開始されず、該当するサブチャネルにてIFCC条件を示させることもある。
5.例えばサブチャネルが状態を変更したときの判断のために、遅延を間にはさまずにTEST SUBCHANNELを繰り返し実行することは、回避されるべきである。その理由は、CPUによるサブチャネルのアクセスが繰り返されると、チャネル・サブシステムによるサブチャネルのアクセスを遅延させること、または妨げることがあるためである。同じサブチャネルに対してほぼ同時に、複数のCPUによってTEST SUBCHANNELが実行される場合も、同じ影響があり得、これも回避されるべきである。
6.CPUによるI/O割り込み処理の優先度は、TEST SUBCHANNELの実行によって変更することができる。TEST SUBCHANNELが実行され、指示されたサブチャネルがI/O割り込み要求ペンディングを有する場合、以前に確立された優先度に関係なく、そのI/O割り込み要求はクリアされ、SCSWが格納される。残りのI/O割り込み要求の相対的優先度は変更されない。
当業者であれば当然のことであるが、本発明の各側面は、システム、方法またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の側面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本願明細書においてすべて概して「回路」、「モジュール」もしくは「システム」と呼ばれ得る、ソフトウェアおよびハードウェアの側面を兼ね備えた実施形態の形態をとり得る。さらに、本発明の各側面は、コンピュータ読み取り可能プログラム・コードが具現化された1つ以上のコンピュータ読み取り可能媒体(単数または複数)において具現化された、コンピュータ・プログラム製品の形態をとることもできる。
1つ以上のコンピュータ読み取り可能媒体(単数または複数)の任意の組み合わせが利用され得る。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能ストレージ媒体とされ得る。コンピュータ読み取り可能ストレージ媒体は、例えば、限定はされないが、電子、磁気、光学、電磁気、赤外線もしくは半導体のシステム、装置もしくはデバイス、または前述のものの任意の適切な組み合わせとされ得る。コンピュータ読み取り可能ストレージ媒体のより具体的な例(包括的でないリスト)には、1つ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM(erasable programmable read−only memory)もしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光学式ストレージ・デバイス、磁気ストレージ・デバイスまたは前述のものの任意の適切な組み合わせが含まれる。この文書の文脈では、コンピュータ読み取り可能ストレージ媒体は、命令実行システム、装置もしくはデバイスによって、またはそれに関連して使用されるプログラムを含むこと、または格納することができる任意の有形の媒体であればよい。
以下、図32を参照する。一例では、コンピュータ・プログラム製品1000は、例えば、本発明の1つ以上の側面を提供および促進するよう、コンピュータ読み取り可能プログラム・コード手段または論理1004を格納する、1つ以上の非一時的なコンピュータ読み取り可能ストレージ媒体1002を含む。
コンピュータ読み取り可能媒体上に具現化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、または前述のものの任意の適切な組み合わせを含むがこれらに限定はされない、適切な媒体を使用して伝送され得る。
本発明の側面の動作を実行するコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++または同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語、アセンブラもしくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれていてよい。プログラム・コードは、完全にユーザのコンピュータ上で実行されても、部分的にユーザのコンピュータ上で実行されても、スタンド・アロン・ソフトウェア・パッケージとしても、部分的にユーザのコンピュータ上で、かつ部分的に遠隔コンピュータ上で実行されても、または完全に遠隔コンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN:local area network)もしくは広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介して遠隔コンピュータがユーザのコンピュータに接続されてもよく、または(例えばインターネット・サービス・プロバイダを使用しインターネットを介して)外部コンピュータに接続されてもよい。
本発明の側面について、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本願明細書に記載する。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令により実装可能である。マシンを生じるよう、こうしたコンピュータ・プログラム命令が、汎用コンピュータ、専用コンピュータまたはその他プログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータまたはその他プログラム可能データ処理装置のプロセッサにより実行されて、フローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックにおいて指定された機能/動作を実装する手段を作り出すようにすることもできる。
さらに、特定の形で機能するようコンピュータ、その他プログラム可能データ処理装置、またはその他デバイスに指示することができるこうしたコンピュータ・プログラム命令は、コンピュータ読み取り可能媒体に格納されて、コンピュータ読み取り可能媒体に格納されたこの命令が、フローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を生じるようにすることもできる。
さらに、コンピュータ・プログラム命令は、コンピュータ、その他プログラム可能データ処理装置またはその他デバイスにロードされて、コンピュータ、その他プログラム可能装置、またはその他デバイス上で一連の動作ステップが実行されるようにしてコンピュータで実装されるプロセスを生じさせ、コンピュータまたはその他プログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックにおいて指定された機能/動作を実装するためのプロセスを提供するようにすることもできる。
各図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能性、および動作を示す。この関連で、フローチャートまたはブロック図内の各ブロックは、指定の論理機能(単数または複数)を実装する1つ以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すこともできる。さらに、いくつかの代わりの実装では、ブロック内に示されている機能が、図面に示されているのとは異なる順序で生じてもよいということに留意されたい。例えば、関連する機能性次第で、連続して示されている2つのブロックが実際には事実上コンカレントに実行されてもよく、または、各ブロックが逆順で実行されることがあってもよい。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方の複数ブロックの組み合わせは、指定の機能もしくは動作を実行する専用ハードウェア・ベース・システム、または専用ハードウェアおよびコンピュータ命令の組み合わせにより実装することができるということに留意されたい。
上記に加えて、本発明の1つ以上の側面は、顧客環境の管理を提案するサービス・プロバイダによって、提供、提案、展開、管理、サービス提供などが行われてもよい。例えば、サービス・プロバイダは、1以上の顧客に対して、本発明の1つ以上の側面を実行するコンピュータ・コードもしくはコンピュータ・インフラストラクチャまたはその両方を、作成、維持、サポートなどすることができる。見返りとして、サービス・プロバイダは、例えば契約もしくは手数料の取り決めもしくはその両方に基づき、顧客から支払いを受領してもよい。さらに、または代わりに、サービス・プロバイダは、1以上のサードパーティに対する宣伝コンテンツの販売からの支払いを受領してもよい。
本発明の一側面において、アプリケーションが、本発明の1つ以上の側面を実行するために展開され得る。一例として、アプリケーションの展開は、本発明の1つ以上の側面を実行するよう動作可能なコンピュータ・インフラストラクチャを提供することを含む。
本発明のさらなる側面として、コンピューティング・システムとともに本発明の1つ以上の側面を実行することができるコンピュータ読み取り可能コードのコンピューティング・システムへの統合を含む、コンピューティング・インフラストラクチャの展開が行われてもよい。
本発明のさらなる側面として、コンピュータ読み取り可能コードをコンピュータ・システムに統合することを含む、コンピューティング・インフラストラクチャを統合するプロセスが提供され得る。コンピュータ・システムは、コンピュータ読み取り可能媒体を含み、コンピュータ媒体は、本発明の1つ以上の側面を含む。コードは、コンピュータ・システムとともに、本発明の1つ以上の側面を実行できる。
様々な実施形態について上述したが、これらは例でしかない。例えば、ほかのアーキテクチャのコンピューティング環境が、本発明の1つ以上の側面を組み入れ、使用することができる。例として、z196サーバ以外のサーバが、本発明の1つ以上の側面を含むこと、使用すること、もしくはそれから利益を得ること、またはそのいずれかの組み合わせを行うことができる。さらに、ほかの命令もしくはコマンドまたはその両方が使用されてもよく、命令/コマンドは、本願明細書に記載されたものに対し、追加の、より少ない、もしくは異なる、またはそのいずれかの組み合わせの情報を含んでもよい。多数の変形が考えられる。
さらに、ほかのタイプのコンピューティング環境が、本発明の1つ以上の側面から利益を得ることができる。例として、システム・バスを介してメモリ要素に直接または間接的に結合された少なくとも2つのプロセッサを含む、プログラム・コードの格納もしくは実行またはその両方に適したデータ処理システムを使用可能である。メモリ要素は、例えば、プログラム・コードを実際に実行する間に用いられるローカル・メモリ、大容量ストレージ、および、実行中にコードが大容量ストレージから読み出されなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的なストレージとなるキャッシュ・メモリを含む。
入出力、すなわちI/Oデバイス(限定はされないが、キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、およびその他のメモリ媒体などを含む)が、直接、または介在するI/Oコントローラを介して、システムに結合されることが可能である。ネットワーク・アダプタもシステムに結合されて、データ処理システムが、ほかのデータ処理システムまたは遠隔プリンタまたはストレージ・デバイスに、介在するプライベートまたはパブリック・ネットワークを介して結合された状態となることを可能にしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)カードが、利用可能なタイプのネットワーク・アダプタのごく一部である。
図33を参照する。本発明の1つ以上の側面を実装するための、ホスト・コンピュータ・システム5000の代表的なコンポーネントが描かれている。代表的なホスト・コンピュータ5000は、コンピュータ・メモリ(すなわち中央ストレージ)5002と通信している1つ以上のCPU5001、ならびにストレージ媒体デバイス5011と、ほかのコンピュータまたはSANおよび同様のものと通信するためのネットワーク5010とに対するI/Oインターフェースを含む。CPU5001は、アーキテクチャ化された(architected)命令セットおよびアーキテクチャ化された機能性を有するアーキテクチャに準拠している。CPU5001は、プログラム・アドレス(仮想アドレス)をメモリの実アドレスに変換するための動的アドレス変換(DAT:dynamic address translation)5003を有するとよい。DATは通常、コンピュータ・メモリ5002のブロックに対する後のアクセスがアドレス変換の遅延を必要としないよう、変換をキャッシュに入れるための変換ルックアサイド・バッファ(TLB:translation lookaside buffer)5007を含む。通常、コンピュータ・メモリ5002と、プロセッサ5001との間にキャッシュ5009が用いられる。キャッシュ5009は、2つ以上のCPUに利用可能な大型キャッシュ、および大型キャッシュと各CPUとの間にあるより小型かつ高速な(下位レベル)キャッシュを有する階層型としてもよい。一部の実装では、下位レベル・キャッシュは分割され、命令のフェッチおよびデータ・アクセスに別々の下位レベル・キャッシュを提供する。一実施形態では、命令は、キャッシュ5009を介して、命令フェッチ・ユニット5004によりメモリ5002からフェッチされる。命令は、命令デコード・ユニット5006においてデコードされ、1つまたは複数の命令実行ユニット5008にディスパッチされる(一部の実施形態ではほかの命令とともに)。通常は、例えば演算実行ユニット、浮動小数点実行ユニット、および分岐命令実行ユニットなどのいくつかの実行ユニット5008が用いられる。命令は、実行ユニットによって、命令が指定したレジスタまたはメモリのオペランドに必要に応じてアクセスして実行される。メモリ5002のオペランドがアクセス(ロードまたは格納)される場合、通常は、ロード/格納ユニット5005が、実行される命令の制御下でアクセスを処理する。命令は、ハードウェア回路または内部マイクロコード(ファームウェア)において、または両方の組み合わせによって実行され得る。
上述のとおり、コンピュータ・システムは、ローカル(またはメイン)ストレージ内の情報、ならびにアドレス指定、保護、ならびに参照および変更記録を含む。アドレス指定の一部の側面は、アドレスのフォーマット、アドレス空間の概念、アドレスの様々なタイプ、および1つのタイプのアドレスが別のタイプのアドレスに変換される方法を含む。メイン・ストレージの一部は、永久的に割り振られたストレージ位置を含む。メイン・ストレージは、データの直接アドレス指定可能な高速アクセス・ストレージをシステムに提供する。データおよびプログラムはどちらも、(入力デバイスから)メイン・ストレージ内にロードされてから処理可能となる。
メイン・ストレージは、キャッシュと呼ばれることもある、より小型かつ高速アクセスのバッファ・ストレージを1つ以上含むとよい。キャッシュは、通常、CPUまたはI/Oプロセッサと物理的に関連付けられる。物理構造および別個のストレージ媒体を使用することの影響は、性能に対するものを除き、一般に、プログラムにより観測することはできない。
命令およびデータ・オペランドに対して、別々のキャッシュが維持されてもよい。キャッシュ内の情報は、キャッシュ・ブロックまたはキャッシュ・ライン(または略してライン)と呼ばれる、整数境界上にある連続したバイト内に維持される。モデルにより、キャッシュ・ラインのサイズをバイトで返すEXTRACT CACHE ATTRIBUTE命令が提供されることもある。さらに、モデルにより、データもしくは命令キャッシュへのストレージのプリフェッチ、またはキャッシュからのデータの解放をもたらす、PREFETCH DATAおよびPREFETCH DATA RELATIVE LONG命令が提供されることもある。
ストレージは、長い水平方向のビット列と見なされる。多くの動作に関して、ストレージへのアクセスは、左から右のシーケンスで進む。ビット列は、8ビットのユニットにさらに分割される。8ビット・ユニットは、バイトと呼ばれ、これは、すべての情報フォーマットの基本的な構成ブロックである。ストレージ内の各バイト位置は、当該バイト位置のアドレス、または簡単に言えばバイト・アドレスである、負ではない固有の整数によって識別される。隣接したバイト位置は、左の0から開始し、左から右のシーケンスで進む、連続したアドレスを有する。アドレスは、符号なし2進整数であり、24、31、または64ビットである。
情報は、ストレージと、CPUまたはチャネル・サブシステムとの間で、一度に1バイト、または複数バイトのグループで伝送される。別途指定されない限り、例えばz/Architecture(IBM社の登録商標)では、ストレージ内の複数バイトのグループは、グループの左端バイトによってアドレス指定される。グループ内のバイト数は、実行される動作により暗示されるか、または明示的に指定される。CPU動作において使用される場合、バイトのグループは、フィールドと呼ばれる。例えばz/Architecture(IBM社の登録商標)では、バイトの各グループの中で、ビットは左から右のシーケンスで番号を付けられる。z/Architecture(IBM社の登録商標)では、左端ビットが「上位」ビットと呼ばれ、右端ビットが「下位」ビットと呼ばれることもある。なお、ビットの番号は、ストレージ・アドレスではない。バイトのみがアドレス指定可能である。ストレージ内のバイトの個々のビットに対して演算を行うために、バイト全体がアクセスされる。バイト内のビットは、(例えばz/Architecture(IBM社の登録商標)では)左から右へ0から7の番号を付けられる。アドレス内のビットは、24ビット・アドレスの場合は、8〜31もしくは40〜63、または31ビット・アドレスの場合は、1〜31もしくは33〜63の番号を付けることができ、64ビット・アドレスの場合は、0〜63の番号が付けられる。その他任意の複数バイトの固定長フォーマット内で、フォーマットを構成するビットは0から開始して連続的に番号を付けられる。エラー検出、および好ましくは訂正のために、各バイトまたは複数バイトのグループとともに、1つ以上のチェック・ビットが伝送されるとよい。そのようなチェック・ビットは、マシンによって自動的に生成され、プログラムにより直接制御されることはできない。ストレージ容量は、バイト数で表現される。ストレージ・オペランド・フィールドの長さが命令の動作コードによって暗示される場合、フィールドは、固定長を有すると言われ、これは、1、2、4、8または16バイトとすることができる。一部の命令に関しては、より大きなフィールドが暗示されることもある。ストレージ・オペランド・フィールドの長さが暗示されないが、明示的に指定されている場合、フィールドは、可変長を有すると言われる。可変長オペランドは、1バイトのインクリメント単位で(または一部の命令に関しては、2バイトの倍数またはその他の倍数で)長さが異なり得る。情報がストレージに入れられるとき、ストレージへの物理パスの幅が、格納されるフィールドの長さを超え得るとしても、指示されたフィールドに含まれる当該バイト位置のみのコンテンツが置き換えられる。
情報の特定のユニットは、ストレージ内の整数境界上になければならない。境界のストレージ・アドレスが、バイト単位でのユニットの長さの倍数である場合、情報のユニットに関して、境界は整数であると言われる。整数境界上の2、4、8および16バイトのフィールドには、特別な名称が与えられる。ハーフワードは、2バイト境界上の連続した2バイトのグループであり、命令の基本的な構成ブロックである。ワードは、4バイト境界上の連続した4バイトのグループである。ダブルワードは、8バイト境界上の連続した8バイトのグループである。クワッドワードは、16バイト境界上の連続した16バイトのグループである。ストレージ・アドレスが、ハーフワード、ワード、ダブルワード、およびクワッドワードを指示する場合、アドレスの2進表現は、それぞれ1、2、3または4つ、右端のゼロビットを含む。命令は、2バイト整数境界上になければならない。多くの命令のストレージ・オペランドには、境界アラインメント要件がない。
命令およびデータ・オペランドに別々のキャッシュを実装するデバイスでは、命令が後にフェッチされるキャッシュ・ラインにプログラムが格納を行うと、後にフェッチされる命令がその格納によって変更されるかどうかに関係なく、大きな遅延が生じ得る。
一実施形態において、本発明はソフトウェア(ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピコ・コードなどと呼ばれることもあり、これらのいずれも本発明と矛盾しない)によって実施され得る。図33を参照する。本発明を具現化するソフトウェア・プログラム・コードは、通常、ホスト・システム5000のプロセッサ5001によって、CD−ROMドライブ、テープ・ドライブ、またはハード・ドライブなどの長期ストレージ媒体デバイス5011からアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ、またはCD−ROMなど、データ処理システムとともに使用される種々の周知の媒体のいずれかにおいて具現化され得る。コードは、そのような媒体上で配布されてもよく、または、1つのコンピュータ・システムのコンピュータ・メモリ5002またはストレージから、ネットワーク5010上でほかのコンピュータ・システムへと、そのようなほかのシステムのユーザにより使用されるよう、ユーザに対し配布されてもよい。
ソフトウェア・プログラム・コードは、様々なコンピュータ・コンポーネントおよび1つ以上のアプリケーション・プログラムの機能および対話を制御するオペレーティング・システムを含む。プログラム・コードは、通常は、ストレージ媒体デバイス5011から、相対的に高速なコンピュータ・ストレージ5002にページングされ、そこでプログラム・コードは、プロセッサ5001による処理に利用可能となる。メモリ内、物理媒体上にソフトウェア・プログラム・コードを具現化する技術および方法、もしくはネットワークを介してソフトウェア・コードを配布する技術および方法、またはその両方は周知であり、本願明細書ではこれ以上説明しない。プログラム・コードは、作成されて有形媒体(電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD:Compact Disc)、DVD、磁気テープおよび同様のものを含むがこれらに限定はされない)上に格納される場合、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、通常、好適にはコンピュータ・システム内にある処理回路によって、処理回路による実行のために読み取り可能である。
図34は、本発明が実施され得る代表的なワークステーションまたはサーバ・ハードウェア・システムを示す。図34のシステム5020は、任意選択の周辺デバイスを含む、パーソナル・コンピュータ、ワークステーションまたはサーバなどの代表的なベース・コンピュータ・システム5021を含む。ベース・コンピュータ・システム5021は、1つ以上のプロセッサ5026、および周知の技術に従ってプロセッサ(単数または複数)5026とシステム5021のほかのコンポーネントとを接続し通信を可能にするために用いられるバスを含む。バスは、プロセッサ5026をメモリ5025および長期ストレージ5027に接続し、長期ストレージ5027は、例えばハード・ドライブ(例えば、磁気媒体、CD、DVDおよびフラッシュ・メモリのいずれかを含む)またはテープ・ドライブを含むことができる。システム5021はさらに、バスを介してマイクロプロセッサ5026をキーボード5024、マウス5023、プリンタ/スキャナ5030、もしくはタッチ・センシティブ・スクリーン、デジタル化入力パッドなどの任意のユーザ・インターフェースとすることができるその他のインターフェース・デバイス、またはそのいずれかの組み合わせなどの1つ以上のインターフェース・デバイスに接続する、ユーザ・インターフェース・アダプタを含み得るであろう。バスはさらに、LCDスクリーンまたはモニタなどのディスプレイ・デバイス5022を、ディスプレイ・アダプタを介してマイクロプロセッサ5026に接続する。
システム5021は、ネットワーク5029と通信5028できるネットワーク・アダプタを経由してほかのコンピュータまたはコンピュータのネットワークと通信し得る。例示のネットワーク・アダプタは、通信チャネル、トークン・リング、イーサネット(R)、またはモデムである。あるいは、システム5021は、CDPD(cellular digital packet data:セルラ・デジタル・パケット・データ)カードなどの無線インターフェースを使用して通信してもよい。システム5021は、そのようなほかのコンピュータに、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)において関連付けられてもよく、またはシステム5021は、別のコンピュータなどとのクライアント/サーバ構成におけるクライアントとされることも可能である。これらの構成のすべて、ならびに適切な通信ハードウェアおよびソフトウェアは、当該技術分野において周知である。
図35は、本発明が実施され得るデータ処理ネットワーク5040を示す。データ処理ネットワーク5040は、無線ネットワークおよび有線ネットワークなど、複数の個別のネットワークを含むとよく、そのそれぞれが、複数の個別のワークステーション5041、5042、5043、5044を含むとよい。さらに、当業者には当然のことながら、1つ以上のLANが含まれてもよく、LANは、ホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含むとよい。
さらに図35を参照する。ネットワークはさらに、ゲートウェイ・コンピュータ(クライアント・サーバ5046)またはアプリケーション・サーバ(データ・リポジトリにアクセスでき、さらにワークステーション5045から直接アクセスされ得る遠隔サーバ5048)などのメインフレーム・コンピュータまたはサーバを含んでもよい。ゲートウェイ・コンピュータ5046は、個別のネットワークそれぞれへの入口点としての機能を果たす。ゲートウェイは、1つのネットワーキング・プロトコルを別のネットワーキング・プロトコルに接続するときに必要とされる。ゲートウェイ5046は、好適には、通信リンクによって別のネットワーク(例えばインターネット5047)に結合されるとよい。ゲートウェイ5046はさらに、通信リンクを使用して、1つ以上のワークステーション5041、5042、5043、5044に直接結合されてもよい。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なIBM eServer(IBM社の商標)System z(IBM社の登録商標)サーバを利用して実装されてもよい。
図34および図35をともに参照する。本発明を具現化するとよいソフトウェア・プログラミング・コードは、CD−ROMドライブまたはハード・ドライブなどの長期ストレージ媒体5027から、システム5020のプロセッサ5026によってアクセスされるとよい。ソフトウェア・プログラミング・コードは、データ処理システムとともに使用されるよう、ディスケット、ハード・ドライブ、またはCD−ROMなど、種々の周知の媒体のいずれかにおいて具現化され得る。コードは、そのような媒体上で配布されてもよく、または、1つのコンピュータ・システムのメモリまたはストレージから、ネットワーク上でほかのコンピュータ・システムへと、そのようなほかのシステムのユーザにより使用されるよう、ユーザ5050、5051に対し配布されてもよい。
あるいは、プログラミング・コードは、メモリ5025において具現化され、プロセッサ・バスを使用してプロセッサ5026によってアクセスされてもよい。そのようなプログラミング・コードは、様々なコンピュータ・コンポーネントおよび1つ以上のアプリケーション・プログラム5032の機能および対話を制御するオペレーティング・システムを含む。プログラム・コードは、通常は、ストレージ媒体5027から高速メモリ5025にページングされ、そこでプログラム・コードは、プロセッサ5026による処理に利用可能になる。メモリ内、物理媒体上にソフトウェア・プログラミング・コードを具現化する技術および方法、もしくはネットワークを介してソフトウェア・コードを配布する技術および方法、またはその両方は周知であり、本願明細書ではこれ以上説明しない。プログラム・コードは、作成されて有形媒体(電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープおよび同様のものを含むがこれらに限定はされない)上に格納される場合、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、通常、好適にはコンピュータ・システム内にある処理回路によって、処理回路による実行のために読み取り可能である。
プロセッサが最も迅速に利用できるキャッシュ(通常はプロセッサのほかのキャッシュよりも高速かつ小型である)は、最下位の(L1またはレベル1)キャッシュであり、メイン・ストア(メイン・メモリ)は、最上位キャッシュ(3レベルある場合はL3)である。最下位キャッシュは、実行されるマシン命令を保持する命令キャッシュ(I(instruction:命令)キャッシュ)と、データ・オペランドを保持するデータ・キャッシュ(D(data:データ)キャッシュ)とに分けられることが多い。
図36を参照する。プロセッサ5026に関する、例示のプロセッサの実施形態が示されている。通常、1つ以上のレベルのキャッシュ5053が、メモリ・ブロックをバッファに入れてプロセッサ性能を改善するために用いられる。キャッシュ5053は、使用される可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは、64、128または256バイトのメモリ・データである。データをキャッシュに入れるのとは別のキャッシュが、命令をキャッシュに入れるために用いられることが多い。キャッシュ・コヒーレンス(メモリおよびキャッシュにおけるラインのコピーの同期)は、当該技術分野で周知の様々な「スヌープ」アルゴリズムによって提供されることが多い。プロセッサ・システムのメイン・メモリ・ストレージ5025は、キャッシュと呼ばれることが多い。4つのレベルのキャッシュ5053を有するプロセッサ・システムでは、メイン・ストレージ5025は、通常はより高速であり、かつコンピュータ・システムに利用可能な不揮発性ストレージ(DASD、テープなど)の一部分のみを保持するため、レベル5(L5)キャッシュと呼ばれることもある。メイン・ストレージ5025は、オペレーティング・システムによってメイン・ストレージ5025に対するページ・インおよびページ・アウトが行われるデータのページを「キャッシュに入れる」。
プログラム・カウンタ(命令カウンタ)5061は、実行される現在の命令のアドレスを追跡する。z/Architecture(IBM社の登録商標)プロセッサのプログラム・カウンタは、64ビットであり、従来のアドレス指定制限をサポートするために31または24ビットに切り捨てることができる。プログラム・カウンタは、通常、コンテキスト・スイッチの間持続するようコンピュータのPSW(プログラム・ステータス・ワード)において具現化される。したがって、プログラム・カウンタ値を有する進行中のプログラムは、例えばオペレーティング・システムにより割り込みされてもよい(プログラム環境からオペレーティング・システム環境へのコンテキスト・スイッチ)。プログラムのPSWは、プログラムがアクティブでない間、プログラム・カウンタ値を維持し、オペレーティング・システムの実行中、オペレーティング・システムのプログラム・カウンタ(PSW内)が使用される。通常、プログラム・カウンタは、現在の命令のバイト数に等しい量だけインクリメントされる。RISC(Reduced Instruction Set Computing:縮小命令セット・コンピューティング)命令は、通常、固定長であり、CISC(Complex Instruction Set Computing:複合命令セット・コンピューティング)命令は、通常、可変長である。IBM z/Architecture(IBM社の登録商標)の命令は、2バイト、4バイトまたは6バイトの長さを有するCISC命令である。例えば、コンテキスト・スイッチ動作または分岐命令の分岐成立動作のいずれかにより、プログラム・カウンタ5061が変更される。コンテキスト・スイッチ動作では、現在のプログラム・カウンタ値が、実行中のプログラムについてのほかの状態情報(条件コードなど)とともにプログラム・ステータス・ワードに保存され、実行される新たなプログラム・モジュールの命令をポイントする新しいプログラム・カウンタ値がロードされる。分岐命令の結果をプログラム・カウンタ5061にロードすることによって、プログラムが決定を下すことまたはプログラム内でループすることができるよう、分岐成立動作が実行される。
通常、プロセッサ5026の代わりに命令をフェッチするために、命令フェッチ・ユニット5055が用いられる。フェッチ・ユニットは、「次の逐次命令」、分岐成立命令のターゲット命令、またはコンテキスト・スイッチ後のプログラムの最初の命令のいずれかをフェッチする。現代の命令フェッチ・ユニットは、プリフェッチされた命令が使用され得る可能性に基づいて命令を投機的にプリフェッチする、プリフェッチ技術を用いることが多い。例えば、フェッチ・ユニットは、次の逐次命令と、さらなる逐次命令の追加のバイトとを含む、16バイトの命令をフェッチし得る。
続いて、フェッチされた命令は、プロセッサ5026によって実行される。一実施形態では、フェッチされた命令(単数または複数)は、フェッチ・ユニットのディスパッチ・ユニット5056に渡される。ディスパッチ・ユニットは、命令(単数または複数)をデコードし、デコードされた命令(単数または複数)についての情報を適切なユニット5057、5058、5060に転送する。実行ユニット5057は、通常、命令フェッチ・ユニット5055から、デコードされた算術命令についての情報を受領し、命令のオペコードに従って、オペランドに対する算術演算を実行する。オペランドは、好適には、メモリ5025、アーキテクチャ化されたレジスタ5059、または実行されている命令の即値フィールドのいずれかから、実行ユニット5057に提供される。実行の結果は、格納される場合、メモリ5025、レジスタ5059、またはほかのマシン・ハードウェア(制御レジスタ、PSWレジスタおよび同様のものなど)のいずれかに格納される。
プロセッサ5026は、通常、命令の機能を実行する1つ以上のユニット5057、5058、5060を有する。図37を参照する。実行ユニット5057は、インターフェース論理5071を経由して、アーキテクチャ化された汎用レジスタ5059、デコード/ディスパッチ・ユニット5056、ロード/格納ユニット5060、およびほかのプロセッサ・ユニット5065と通信するとよい。実行ユニット5057は、いくつかのレジスタ回路5067、5068、5069を用いて、算術論理ユニット(ALU:arithmetic logic unit)5066が演算を行う情報を保持することができる。ALUは、加算、減算、乗算、および除算などの算術演算、ならびに論理積、論理和および排他的論理和(XOR:exclusive−or)、ローテートおよびシフトなどの論理関数を実行する。ALUは、設計に依存する専用の演算をサポートすることが好ましい。ほかの回路は、例えば条件コードおよびリカバリ・サポート論理を含む、ほかのアーキテクチャ化されたファシリティ5072を提供するとよい。通常、ALU演算の結果は、出力レジスタ回路5070に保持され、出力レジスタ回路5070は、結果をほかの様々な処理機能に転送することができる。プロセッサ・ユニットの構成は多数あり、本記載は、一実施形態の代表的な理解を与えるためのものでしかない。
例えばADD命令は、算術および論理機能性を有する実行ユニット5057で実行される一方、例えば浮動小数点命令は、専用の浮動小数点能力を有する浮動小数点実行部で実行されると考えられる。実行ユニットは、オペコードが規定する機能をオペランドに対して実行することにより、命令によって特定されたオペランドに対して演算を行うことが好ましい。例えば、ADD命令は、命令のレジスタ・フィールドによって特定された2つのレジスタ5059にあるオペランドに対して、実行ユニット5057により実行され得る。
実行ユニット5057は、2つのオペランドに対して算術加算を実行し、結果を第3オペランドに格納する。第3オペランドは、第3レジスタであっても、または2つのソース・レジスタのうちの1つであってもよい。実行ユニットは、シフト、ローテート、論理積、論理和、およびXORなどの様々な論理関数、ならびに加算、減算、乗算、除算のいずれかを含む様々な代数関数を実行できる算術論理ユニット(ALU)5066を利用することが好ましい。ALU5066には、スカラー演算のために設計されたものも、浮動小数点のために設計されたものもある。データは、アーキテクチャに応じて、ビッグ・エンディアン(最下位のバイトが最も高いバイト・アドレスにある)、またはリトル・エンディアン(最下位のバイトが最も低いバイト・アドレスにある)とされ得る。IBM z/Architecture(IBM社の登録商標)は、ビッグ・エンディアンである。符号付きフィールドは、アーキテクチャに応じて、符号および大きさ、1の補数、または2の補数とされ得る。2の補数における負の値または正の値はどちらもALU内で加法しか必要としないため、ALUが減算能力を設計する必要がないという点で、2の補数は有利である。通常、数値は省略表現で記述され、例えば12ビット・フィールドは、4,096バイト・ブロックのアドレスを規定し、通常は4Kバイト(キロバイト)ブロックとして記述される。
図38を参照する。分岐命令を実行するための分岐命令情報は、通常、分岐ユニット5058に送られる。分岐ユニット5058は、多くの場合、分岐履歴テーブル5082などの分岐予測アルゴリズムを用いて、ほかの条件付き演算が完了する前に分岐の結果を予測する。条件付き演算が完了する前に、現在の分岐命令のターゲットがフェッチされ、投機的に実行される。条件付き演算が完了すると、投機的に実行された分岐命令は、条件付き演算の条件および予測された結果に基づいて、完了または破棄される。典型的な分岐命令は、条件コードをテストし、条件コードが分岐命令の分岐要件を満たす場合、ターゲット・アドレスに分岐するとよく、ターゲット・アドレスは、例えば、命令のレジスタ・フィールドまたは即値フィールド内にある数値を含むいくつかの数値に基づいて計算され得る。分岐ユニット5058は、複数の入力レジスタ回路5075、5076、5077と、出力レジスタ回路5080とを有するALU5074を用いるとよい。分岐ユニット5058は、例えば、汎用レジスタ5059、デコード・ディスパッチ・ユニット5056、またはほかの回路5073と通信するとよい。
例えば、オペレーティング・システムによって開始されるコンテキスト・スイッチ、コンテキスト・スイッチをもたらすプログラム例外もしくはエラー、コンテキスト・スイッチをもたらすI/O割り込み信号、または(マルチスレッド環境における)複数のプログラムのマルチスレッディング・アクティビティを含む様々な理由により、命令群の実行に割り込みが行われることがある。コンテキスト・スイッチ・アクションは、現在実行中のプログラムについての状態情報を保存し、続いて、呼び出される別のプログラムについての状態情報をロードすることが好ましい。状態情報は、例えば、ハードウェア・レジスタまたはメモリ内に保存され得る。状態情報は、実行される次の命令をポイントするプログラム・カウンタ値と、条件コードと、メモリ変換情報と、アーキテクチャ化されたレジスタ・コンテンツとを含むことが好ましい。コンテキスト・スイッチのアクティビティは、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、またはファームウェア・コード(マイクロコード、ピコ・コード、またはライセンス内部コード(LIC))のみによって、またはその組み合わせによって遂行することができる。
プロセッサは、命令により規定された方法に従ってオペランドにアクセスする。命令は、命令の一部分の値を使用して即値オペランドを提供することも、汎用レジスタまたは専用レジスタ(例えば浮動小数点レジスタ)のいずれかを明示的にポイントする1つ以上のレジスタ・フィールドを提供することもできる。命令は、オペコード・フィールドによってオペランドとして特定される暗黙のレジスタを利用することもできる。命令は、オペランドのメモリ位置を利用することもできる。オペランドのメモリ位置は、レジスタまたは即値フィールドによって提供されることもでき、または、命令がベース・レジスタ、インデックス・レジスタ、および即値フィールド(変位フィールド)を規定し、これらが例えば互いに加算されることで、メモリ内のオペランドのアドレスが提供される、z/Architecture(IBM社の登録商標)の長変位ファシリティにより例示されるように、レジスタと即値フィールドとの組み合わせによって提供されることもできる。ここでの位置とは、通常、別途指示されない限り、メイン・メモリ(メイン・ストレージ)内の位置を意味する。
図39を参照する。プロセッサは、ロード/格納ユニット5060を使用してストレージにアクセスする。ロード/格納ユニット5060は、メモリ5053内のターゲット・オペランドのアドレスを取得し、オペランドをレジスタ5059または別のメモリ5053位置にロードすることによってロード動作を実行することも、メモリ5053内のターゲット・オペランドのアドレスを取得し、レジスタ5059または別のメモリ5053位置から取得されたデータをメモリ5053内のターゲット・オペランド位置に格納することによって格納動作を実行することもできる。ロード/格納ユニット5060は、投機的であってもよく、命令シーケンスに対してアウト・オブ・オーダー式のシーケンスでメモリにアクセスしてもよいが、ロード/格納ユニット5060は、命令がイン・オーダー実行されたという見かけをプログラムに対して維持する必要がある。ロード/格納ユニット5060は、汎用レジスタ5059、デコード/ディスパッチ・ユニット5056、キャッシュ/メモリ・インターフェース5053、またはほかの構成要素5083と通信するとよく、ストレージ・アドレスを計算して、パイプラインの順序付けを提供し動作をイン・オーダーに保持するための、種々のレジスタ回路、ALU5085、および制御論理5090を含む。一部の動作は、アウト・オブ・オーダー式とすることができるが、当該技術分野において周知のように、ロード/格納ユニットは、アウト・オブ・オーダー式動作を、イン・オーダー実行されたようにプログラムに見せる機能性を提供する。
好適には、アプリケーション・プログラムが「見る」アドレスは、多くの場合、仮想アドレスと呼ばれる。仮想アドレスは、「論理アドレス」および「実効アドレス」と呼ばれることもある。これらの仮想アドレスは、単に仮想アドレスにオフセット値をプリフィックス付加すること、1つ以上の変換テーブルを介して仮想アドレスを変換することを含むがこれらに限定されない、様々な動的アドレス変換(DAT)技術の1つによって、物理メモリ位置にリダイレクトされるという点で仮想のものであり、変換テーブルは、少なくともセグメント・テーブルおよびページ・テーブルを単体で、または組み合わせて含むことが好ましく、セグメント・テーブルは、ページ・テーブルをポイントするエントリを有することが好ましい。z/Architecture(IBM社の登録商標)では、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、および任意選択のページ・テーブルを含む、変換の階層が提供される。アドレス変換の性能は、仮想アドレスを関連した物理メモリ位置にマッピングするエントリを含む変換ルックアサイド・バッファ(TLB)を利用することによって改善されることが多い。エントリは、DATが変換テーブルを使用して仮想アドレスを変換するときに作成される。その結果、その後の仮想アドレスの使用では、低速な逐次変換テーブル・アクセスではなく、高速なTLBのエントリを利用できる。TLBのコンテンツは、LRU(Least Recently Used:最長時間未使用法)を含む様々な置換アルゴリズムによって管理され得る。
プロセッサがマルチプロセッサ・システムのプロセッサである場合、各プロセッサは、コヒーレンシのために、I/O、キャッシュ、TLBおよびメモリなどの共有リソースをインターロック状態に保持する責任を負う。通常、キャッシュ・コヒーレンシの維持には「スヌープ」技術が利用される。スヌープ環境においては、共有を促進するために、各キャッシュ・ラインが、共有状態、排他的状態、変更状態、無効状態などのうちのいずれか1つであるとマーク付けされ得る。
I/Oユニット5054(図36)は、例えばテープ、ディスク、プリンタ、ディスプレイ、およびネットワークを含む周辺機器に連結するための手段をプロセッサに提供する。I/Oユニットは、ソフトウェア・ドライバによってコンピュータ・プログラムに提示されることが多い。IBM(IBM社の登録商標)のSystem z(IBM社の登録商標)などのメインフレームにおいては、チャネル・アダプタおよびオープン・システム・アダプタが、オペレーティング・システムと周辺デバイスとの間の通信を提供するメインフレームのI/Oユニットである。
さらに、ほかのタイプのコンピューティング環境が、本発明の1つ以上の側面から利益を得ることができる。例として、環境は、特定のアーキテクチャ(例えば命令実行、アドレス変換などのアーキテクチャ化された機能、およびアーキテクチャ化されたレジスタを含む)またはそのサブセットが(例えばプロセッサおよびメモリを有するネイティブ・コンピュータ・システム上で)エミュレートされる、エミュレータ(例えばソフトウェアまたはその他のエミュレーション・メカニズム)を含み得る。そのような環境では、エミュレータを実行するコンピュータが、エミュレートされる能力とは異なるアーキテクチャを有しても、エミュレータの1つ以上のエミュレーション機能が、本発明の1つ以上の側面を実装することができる。一例として、エミュレーション・モードでは、エミュレートされる特定の命令または動作がデコードされ、適切なエミュレーション機能が構築されて、個々の命令または動作が実装される。
エミュレーション環境において、ホスト・コンピュータは、例えば、命令およびデータを格納するメモリと、メモリから命令をフェッチし、任意選択で、フェッチされた命令のローカル・バッファリングを提供する命令フェッチ・ユニットと、フェッチされた命令を受領し、フェッチされた命令のタイプを判断する命令デコード・ユニットと、命令を実行する命令実行ユニットとを含む。実行は、メモリからデータをレジスタにロードすること、データをレジスタから再びメモリに格納すること、またはデコード・ユニットによって判断された、何らかのタイプの算術または論理演算を実行することを含み得る。一例では、各ユニットは、ソフトウェアにおいて実装される。例えば、ユニットによって実行される動作は、エミュレータ・ソフトウェア内の1つ以上のサブルーチンとして実装される。
より具体的には、メインフレームにおいて、アーキテクチャ化されたマシン命令は、多くの場合コンパイラ・アプリケーションを介して、プログラマ、今日では通常、「C」プログラマによって使用される。ストレージ媒体に格納されたこれらの命令は、z/Architecture(IBM社の登録商標)IBM(IBM社の登録商標)サーバにおいて、または代わりにほかのアーキテクチャを実行するマシンにおいて、ネイティブに実行され得る。これらの命令は、既存のおよび将来のIBM(IBM社の登録商標)メインフレーム・サーバ内、およびIBM(IBM社の登録商標)のほかのマシン(例えば、Power Systems(IBM社の商標)サーバおよびSystem x(IBM社の登録商標)サーバ)上でエミュレートすることができる。これらの命令は、IBM(IBM社の登録商標)、Intel(R)、AMD(TM)などによって製造されたハードウェアを使用して様々なマシン上でLinux(R)を実行しているマシンにおいて実行することができる。z/Architecture(IBM社の登録商標)に基づく当該ハードウェア上での実行のほか、Linux(R)を使用することも、ならびに実行が全般的にエミュレーション・モードであるHercules、UMXまたはFSI(Fundamental Software,Inc)によるエミュレーションを使用するマシンを使用することもできる。エミュレーション・モードでは、ネイティブ・プロセッサによってエミュレーション・ソフトウェアが実行され、エミュレートされるプロセッサのアーキテクチャがエミュレートされる。
ネイティブ・プロセッサは、通常、ファームウェアまたはネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェアを実行して、エミュレートされるプロセッサのエミュレーションを実行する。エミュレーション・ソフトウェアは、エミュレートされるプロセッサ・アーキテクチャの命令のフェッチおよび実行を担当する。エミュレーション・ソフトウェアは、エミュレートされるプログラム・カウンタを維持し、命令境界を追跡する。エミュレーション・ソフトウェアは、エミュレートされたマシン命令を一度に1つ以上フェッチして、ネイティブ・プロセッサによる実行のために、その1つ以上のエミュレートされたマシン命令を、対応するネイティブ・マシン命令群に変換するとよい。これらの変換された命令は、より高速な変換を達成できるようキャッシュに入れられてもよい。いずれにせよ、エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ・ルールを維持し、オペレーティング・システムおよびエミュレートされたプロセッサのために書かれたアプリケーションが正常に動作することを保証する必要がある。さらに、エミュレーション・ソフトウェアは、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブルおよびページ・テーブルを含む動的アドレス変換機能、割り込みメカニズム、コンテキスト・スイッチ・メカニズム、時刻(TOD:Time of Day)クロック、ならびにI/Oサブシステムへのアーキテクチャ化されたインターフェースを含むがこれらに限定されない、エミュレートされたプロセッサ・アーキテクチャによって識別されるリソースを提供し、オペレーティング・システムまたはエミュレートされたプロセッサ上で実行するように設計されたアプリケーション・プログラムを、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で実行できるようにしなければならない。
エミュレートされる特定の命令がデコードされ、個々の命令の機能を実行するためのサブルーチンが呼び出される。エミュレートされたプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、例えば、「C」サブルーチンもしくはドライバにおいて、または好適な実施形態の説明を理解すれば当業者の技術の範囲内となる特定のハードウェアのドライバを提供するほかの何らかの方法で実装される。参照によって内容全体を本願明細書にそれぞれ引用したものとする、「Multiprocessor for Hardware Emulation」と題された、Beausoleilらの米国特許第5,551,013号、および「Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor」と題された、Scalziらの米国特許第6,009,261号、および「Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions」と題された、Davidianらの米国特許第5,574,873号、および「Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non−Native Code to Run in a System」と題された、Gorishekらの米国特許第6,308,255号、および「Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method」と題された、Lethinらの米国特許第6,463,582号、および「Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions」と題された、Eric Trautらの米国特許第5,790,825号、およびその他多数を含むがこれらに限定されない、様々なソフトウェアおよびハードウェア・エミュレーションの特許が、当業者が利用可能なターゲット・マシンのために、種々のマシン向けにアーキテクチャ化された命令フォーマットのエミュレーションを実現するための、様々な既知の方法を示している。
図40には、ホスト・アーキテクチャのホスト・コンピュータ・システム5000’をエミュレートする、エミュレートされたホスト・コンピュータ・システム5092の例が提供されている。エミュレートされたホスト・コンピュータ・システム5092において、ホスト・プロセッサ(CPU)5091は、エミュレートされたホスト・プロセッサ(または仮想ホスト・プロセッサ)であり、ホスト・コンピュータ5000’のプロセッサ5091のものとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ5093を含む。エミュレートされたホスト・コンピュータ・システム5092は、エミュレーション・プロセッサ5093がアクセス可能なメモリ5094を有する。例示の実施形態では、メモリ5094は、ホスト・コンピュータ・メモリ5096部分と、エミュレーション・ルーチン5097部分とに分割されている。ホスト・コンピュータ・メモリ5096は、ホスト・コンピュータ・アーキテクチャに従い、エミュレートされたホスト・コンピュータ5092のプログラムに利用可能である。エミュレーション・プロセッサ5093は、エミュレートされたプロセッサ5091のアーキテクチャ以外のアーキテクチャの、アーキテクチャ化された命令セットのネイティブ命令を実行する。このネイティブ命令は、エミュレーション・ルーチン・メモリ5097から取得される。さらにエミュレーション・プロセッサ5093は、シーケンス&アクセス/デコード・ルーチンにおいて取得される、1つ以上の命令(単数または複数)を用いて、ホスト・コンピュータ・メモリ5096内のプログラムの実行すべきホスト命令にアクセスするとよく、シーケンス&アクセス/デコード・ルーチンは、アクセスされたホスト命令(単数または複数)をデコードして、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判断するとよい。ホスト・コンピュータ・システム5000’のアーキテクチャのために定義された、例えば汎用レジスタ、制御レジスタ、動的アドレス変換およびI/Oサブシステム・サポート、ならびにプロセッサ・キャッシュのようなファシリティを含むほかのファシリティを、アーキテクチャ化されたファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を改善するために、エミュレーション・プロセッサ5093において利用可能な機能(汎用レジスタ、および仮想アドレスの動的変換など)を利用することもできる。ホスト・コンピュータ5000’の機能のエミュレートにおいてプロセッサ5093を支援するために、専用のハードウェアおよびオフ・ロード・エンジンも提供され得る。
本願明細書で使用される専門用語は、特定の実施形態を説明するためのものでしかなく、本発明の限定となることは目的としていない。本願明細書で使用される、単数形「a」、「an」および「the」は、文脈によりそうでないことが明確に示されていない限り、複数形も含むものとする。さらに、当然のことながら、「含む」もしくは「含んでいる」またはその両方の用語は、本明細書で使用されるとき、記載された機能、完全体、ステップ、動作、構成要素、もしくはコンポーネント、またはそのいずれかの組み合わせの存在を指定するが、1つ以上のほかの機能、完全体、ステップ、動作、構成要素、コンポーネント、もしくはそのグループ、またはそのいずれかの組み合わせの存在または追加を除外するものではない。
添付の特許請求の範囲のミーンズまたはステップ・プラス・ファンクション構成要素すべての、対応する構造、材料、動作、および等価物がある場合、それらは、明確に請求されているほかの請求される構成要素とともに機能を実行する任意の構造、材料、または動作を含むものとする。本発明の記載は、例示および説明のために示されたものであるが、包括的であることも、開示された形態の発明に限定されることも目的としていない。当業者には、本発明の範囲および趣旨から逸脱することのない、多数の変更および変形が明らかであろう。実施形態は、本発明の原理および実際の応用を最もよく説明して、当業者が、意図される特定の用途に適する様々な変更を用いた様々な実施形態に関して、本発明を理解できるように選択され、記載された。