(57)【要約】【課題】入出力処理を機能強化する機能を提供すること。【解決手段】ページング可能ストレージ・モード・ゲストからの入出力動作要求が、ホスト介入なしで解釈される。ページング可能モード仮想環境で、ページング可能ストレージ・モード・ゲストによって発行された要求が、環境の１つまたは複数のホストからの介入なしで、環境の１つまたは複数のプロセッサによって処理される。要求の処理に、ゲストのために少なくとも１つのプロセッサによって、ホスト・ストレージに保管されたバッファ状態情報を操作することが含まれる。操作は、ゲストによって開始され、１つまたは複数のプロセッサによって処理される命令を介して実行される。【選択図】図１
2005353055.tif 000002
【特許請求の範囲】
【請求項１】
ページング可能モード仮想環境においてデータ転送を促進する方法であり、
前記ページング可能モード仮想環境のプロセッサによって、データ転送に使用されるバッファを確保するステップであり、前記バッファが、前記ページング可能モード仮想環境のページング可能モード仮想計算機内で動作するゲスト・プログラムに関連付けられているステップと、
データ転送を可能にするために前記バッファに関連する処理を前記プロセッサによって実行するステップであり、前記実行するステップが、前記ページング可能モード仮想環境のホストの介入なしで行われるステップと
を含む方法。
【請求項２】
ホスト・ストレージ内で前記バッファの状態情報を提供するステップをさらに含み、
前記実行するステップが、前記状態情報を前記プロセッサによって操作するステップを含む、請求項１に記載の方法。
【請求項３】
前記操作するステップが、前記状態情報を操作するために、前記ゲスト・プログラムによって発行され、前記プロセッサによって実行される少なくとも１つの命令を使用するステップを含む、請求項２に記載の方法。
【請求項４】
前記少なくとも１つの命令が、バッファ状態セット命令およびバッファ状態抽出命令の少なくとも１つを含む、請求項３に記載の方法。
【請求項５】
前記確保するステップが、前記バッファの前記表示を前記ゲスト・プログラムから受け取るステップを含む、請求項１に記載の方法。
【請求項６】
前記ゲスト・プログラムが、命令を介して前記バッファの前記表示を前記プロセッサに転送する、請求項５に記載の方法。
【請求項７】
前記バッファが、トークンによって識別される装置に関連付けられ、
前記実行するステップが、
前記トークンの有効性を検査するステップと、
有効なトークンの表示に応答して、前記バッファに関連する処理を継続するステップと
を含む、請求項１に記載の方法。
【請求項８】
前記バッファが、キューのバッファであり、
前記実行するステップが、前記バッファに関連する処理を実行するために前記キューをロックするステップを含む、請求項１に記載の方法。
【請求項９】
前記実行するステップが、前記処理を前記プロセッサの代わりに前記ホストによって完了させる例外処理を行い、
前記方法が、さらに、前記ロックの所有権を前記プロセッサから前記ホストに転送するステップを含む、請求項８に記載の方法。
【請求項１０】
前記実行するステップが、
データ転送に使用される前記バッファの１つまたは複数のページを識別するステップと、
前記１つまたは複数のページを物理ホスト・ストレージ内でピン固定するステップと
を含む、請求項１に記載の方法。
【請求項１１】
前記ピン固定するステップが、バッファ状態セット命令を介して開始される、請求項１０に記載の方法。
【請求項１２】
ピン固定される前記１つまたは複数のページの１ページが、物理ストレージに常駐しないという点で無効であり、
前記実行するステップが、さらに、前記ページを有効にするために前記ページを解決するステップを含む、請求項１０に記載の方法。
【請求項１３】
前記解決ステップが、前記プロセッサに供給される１つまたは複数の使用可能な記述子のリストを使用して前記無効なページを動的に解決するステップを含み、
前記１つまたは複数の使用可能な記述子が、前記ページを物理ストレージにバッキングするのに使用可能な１つまたは複数の使用可能なページ・フレームを指定する、請求項１２に記載の方法。
【請求項１４】
前記バッファの１つまたは複数のページをピン解除しなければならないかどうかを判定するステップと、
前記１つまたは複数のページをピン解除するステップと
をさらに含む、請求項１０に記載の方法。
【請求項１５】
前記データ転送が、ファイバ・チャネル・プロトコルを使用するステップを含み、
前記判定するステップが、前記データ転送を要求する入出力動作が完了したかどうかに関する入力キューでの表示を検査するステップを含み、
前記ピン解除するステップが、前記表示が完了を示す時に実行される、請求項１４に記載の方法。
【請求項１６】
前記ピン解除するステップが、バッファ状態抽出命令を介して開始される、請求項１４に記載の方法。
【請求項１７】
前記バッファの１つまたは複数のページをピン解除する前に、前記バッファの状態を前記プロセッサによって抽出するステップをさらに含む、請求項１４に記載の方法。
【請求項１８】
前記プロセッサによって、１つまたは複数のページに関するピン固定動作およびピン解除動作の少なくとも１つを追跡するステップをさらに含む、請求項１４に記載の方法。
【請求項１９】
前記実行するステップが、前記バッファの状態を変更するステップを含む、請求項１に記載の方法。
【請求項２０】
前記バッファの状態を変更するステップが、前記バッファの状態をプログラム所有からアダプタ所有に変更するステップを含む、請求項１９に記載の方法。
【請求項２１】
前記確保するステップが、データ転送に使用される前記バッファのページの識別を入手するステップを含み、
前記実行するステップが、
前記ページが物理ストレージに常駐するかどうかを判定するステップと、
前記ページが常駐しないステップを示す前記判定に応答して、前記ページを常駐させるために前記ページを解決するステップと、
前記ページを物理ストレージ内でピン固定するステップと
を含む、請求項１に記載の方法。
【請求項２２】
前記データ転送が、前記ページの前の内容が必要でない入力動作に関連付けられ、
前記解決するステップが、前記ページを前にクリアされたページ・フレームに関連付けるステップを含む、請求項２１に記載の方法。
【請求項２３】
前記ページの前記識別の前記入手するステップが、前記ページのゲスト・プログラム指定を含むゲスト・データ構造を受け取るステップを含み、
前記実行するステップが、さらに、
前記プロセッサによって前記ゲスト・データ構造の内容の少なくとも一部をホスト・データ構造にコピーするステップと、
前記ページが物理ストレージに常駐するかどうかを判定する際に使用するために、前記ゲスト・プログラム指定を前記ホスト・データ構造から取り出すステップと、
前記ページのホスト指定を入手するステップと、
前記ページの前記ホスト指定を前記ホスト・データ構造に置くステップであって、前記ホスト指定が、データ転送に使用可能である、ステップと
を含む、請求項２１に記載の方法。
【請求項２４】
前記ページング可能モード仮想環境のアダプタが前記バッファにアクセスすることを可能にするために、前記バッファの状態をアダプタ所有に変更するステップをさらに含む、請求項２３に記載の方法。
【請求項２５】
前記アダプタが、前記ホスト指定を使用して前記バッファの前記ページにアクセスする、請求項２４に記載の方法。
【請求項２６】
前記ゲスト・データ構造が、前記ゲスト・プログラムから受け取られる、請求項２３に記載の方法。
【請求項２７】
ピン解除動作を実行しなければならないかどうかを判定するステップと、
前記ピン解除動作を実行しなければならないステップを示す前記判定に応答して、前記ピン解除動作を実行するステップと
をさらに含む、請求項２３に記載の方法。
【請求項２８】
前記バッファが、キューに関連し、前記方法が、前記バッファに対する処理を実行するために前記キューをロックするステップを含む、請求項２７に記載の方法。
【請求項２９】
前記バッファが、トークンによって識別される装置に対応し、前記実行が、さらに、前記トークンを検証するステップを含む、請求項２８に記載の方法。
【請求項３０】
前記データ転送が、通信アダプタを用いる、請求項１に記載の方法。
【請求項３１】
前記データ転送が、ファイバ・チャネル・プロトコル・アダプタを用いる、請求項１に記載の方法。
【請求項３２】
前記バッファの状態を前記ゲスト・プログラムによって問い合わせるステップをさらに含む、請求項１に記載の方法。
【請求項３３】
前記問合せるステップが、バッファ状態抽出命令を介する、請求項３２に記載の方法。
【請求項３４】
ページング可能モード仮想環境における入出力動作の処理を促進する方法であり、
ページング可能モード仮想環境のプロセッサによって、前記ページング可能モード仮想環境の仮想計算機内で動作するゲスト・プログラムの入出力動作を処理するステップであって、前記処理するステップが、前記ページング可能モード仮想環境のホストによる介入なしで行われる
方法。
【請求項３５】
前記入出力動作が、待機直接入出力（ＱＤＩＯ）動作を含む、請求項３４に記載の方法。
【請求項３６】
前記ＱＤＩＯ動作が、通信アダプタを用いる、請求項３５に記載の方法。
【請求項３７】
前記ＱＤＩＯ動作が、ファイバ・チャネル・プロトコル・アダプタを用いる、請求項３５に記載の方法。
【請求項３８】
ページング可能モード仮想環境でのデータ転送を容易にするシステムであり、
ページング可能モード仮想環境のプロセッサによって、データ転送に使用されるバッファの表示を確保する手段であって、前記バッファが、前記ページング可能モード仮想環境のページング可能モード仮想計算機内で動作するゲスト・プログラムに関連する、手段と、
データ転送を可能にするために前記バッファに関連する処理を前記プロセッサによって実行する手段であって、前記実行が、前記ページング可能モード仮想環境のホストの介入なしで行われる、手段と
を含むシステム。
【請求項３９】
ホスト・ストレージ内で前記バッファの状態情報を提供する手段をさらに含み、前記実行する手段が、前記状態情報を前記プロセッサによって操作する手段を含む、請求項３８に記載のシステム。
【請求項４０】
前記確保する手段が、前記ゲスト・プログラムから前記バッファの前記表示を受け取る手段を含む、請求項３８に記載のシステム。
【請求項４１】
前記バッファが、トークンによって識別される装置に関連付けられ、
前記実行する手段が、
前記トークンの有効性を検査する手段と、
有効なトークンの表示に応答して、前記バッファに関連する処理を継続する手段と
を含む、請求項３８に記載のシステム。
【請求項４２】
前記バッファが、キューのバッファであり、
前記実行する手段が、前記バッファに関連する処理を実行するために前記キューをロックする手段を含む、請求項３８に記載のシステム。
【請求項４３】
前記処理が、処理を前記プロセッサの代わりに前記ホストによって完了させる例外処理を行い、
前記システムが、さらに、前記ロックの所有権を前記プロセッサから前記ホストに転送する手段を含む、請求項４２に記載のシステム。
【請求項４４】
前記実行する手段が、
データ転送に使用される前記バッファの１つまたは複数のページを識別する手段と、
前記１つまたは複数のページを物理ホスト・ストレージ内でピン固定する手段と
を含む、請求項３８に記載のシステム。
【請求項４５】
ピン固定される前記１つまたは複数のページの１ページが、物理ストレージに常駐しないという点で無効であり、
前記実行する手段が、さらに、前記ページを有効にするために前記ページを解決する手段を含む、請求項４４に記載のシステム。
【請求項４６】
解決する前記手段が、前記プロセッサに供給される１つまたは複数の使用可能な記述子のリストを使用して前記無効なページを動的に解決する手段を含み、前記１つまたは複数の使用可能な記述子が、物理ストレージ内での前記ページのバッキングに使用可能な１つまたは複数の使用可能なページ・フレームを指定する、請求項４５に記載のシステム。
【請求項４７】
前記バッファの１つまたは複数のページをピン解除しなければならないかどうかを判定する手段と、
前記１つまたは複数のページをピン解除する手段と
をさらに含む、請求項４４に記載のシステム。
【請求項４８】
前記バッファの１つまたは複数のページをピン解除する前に、前記プロセッサによって前記バッファの状態を抽出する手段をさらに含む、請求項４７に記載のシステム。
【請求項４９】
１つまたは複数のページのピン固定動作およびピン解除動作の少なくとも１つを前記プロセッサによって追跡する手段をさらに含む、請求項４７に記載のシステム。
【請求項５０】
前記実行する手段が、前記バッファの状態を変更する手段を含む、請求項３８に記載のシステム。
【請求項５１】
前記確保する手段が、データ転送に使用される前記バッファのページの識別を入手する手段を含み、
前記実行する手段が、
前記ページが物理ストレージに常駐するかどうかを判定する手段と、
前記ページが常駐しないことを示す前記判定に応答して、前記ページを常駐させるために前記ページを解決する手段と、
前記ページを物理ストレージ内でピン固定する手段と
を含む、請求項３８に記載のシステム。
【請求項５２】
前記データ転送が、前記ページの前の内容が不要である入力動作に関連付けられ、解決する前記手段が、前記ページを前にクリアされたページ・フレームに関連付ける手段を含む、請求項５１に記載のシステム。
【請求項５３】
前記ページの前記識別を入手する前記入手する手段が、前記ページのゲスト・プログラム指定を含むゲスト・データ構造を受け取る手段を含み、
前記実行する手段が、さらに、
前記プロセッサによって、前記ゲスト・データ構造の内容の少なくとも一部をホスト・データ構造にコピーする手段と、
前記ページが物理ストレージに常駐するかどうかを判定するのに使用するために、前記ゲスト・プログラム指定を前記ホスト・データ構造から取り出す手段と、
前記ページのホスト指定を入手する手段と、
前記ホスト・データ構造に前記ページの前記ホスト指定を置く手段であって、前記ホスト指定が、データ転送に使用可能である、手段と
を含む、請求項５１に記載のシステム。
【請求項５４】
前記ページング可能モード仮想環境のアダプタが前記バッファにアクセスすることを可能にするために、前記バッファの状態をアダプタ所有に変更する手段をさらに含む、請求項５３に記載のシステム。
【請求項５５】
ピン解除動作を実行しなければならないかどうかを判定する手段と、
前記ピン解除動作を実行しなければならないことを示す前記判定に応答して、前記ピン解除動作を実行する手段と
をさらに含む、請求項５３に記載のシステム。
【請求項５６】
前記バッファが、キューに関連し、前記システムが、前記バッファに対する処理を実行するために前記キューをロックする手段を含む、請求項５５に記載のシステム。
【請求項５７】
前記バッファが、トークンによって識別される装置に対応し、処理を実行する前記手段が、さらに、前記トークンを検証する手段を含む、請求項５６に記載のシステム。
【請求項５８】
前記ゲスト・プログラムによって前記バッファの状態を問い合わせる手段をさらに含む、請求項３８に記載のシステム。
【請求項５９】
ページング可能モード仮想環境でのデータ転送を促進にするシステムであり、
データ転送に使用されるバッファの指示を確保するように適合されたページング可能モード環境のプロセッサであって、前記バッファが、前記ページング可能モード環境のページング可能モード仮想計算機内で動作するゲスト・プログラムに関連付けられる、プロセッサと、
前記プロセッサが、さらに、データ転送を可能にするために前記バッファに関連する処理を実行するように適合され、前記実行において、前記ページング可能モード仮想環境のホストの介入がない、プロセッサと
を含むシステム。
【請求項６０】
ページング可能モード仮想環境でのデータ転送を促進することを管理するためのコンピュータ可読プログラム・コード論理を有するコンピュータ・プログラムであって、
前記コンピュータ可読プログラム・コード論理として、
データ転送に使用されるバッファの指示を前記ページング可能モード仮想環境のプロセッサによって確保する確保論理であって、前記バッファが、前記ページング可能モード仮想環境のページング可能モード仮想計算機内で動作するゲスト・プログラムに関連付けられる、確保論理と、
データ転送を可能にするために前記バッファに関連する処理を前記プロセッサによって実行する実行論理であって、前記実行が、前記ページング可能モード仮想環境のホストの介入がなく行われる、実行論理と
を含むコンピュータ・プログラム。
【請求項６１】
前記バッファに関する状態情報をホスト・ストレージ内で提供する提供論理をさらに含み、
前記実行論理が、前記プロセッサによって前記状態情報を操作する操作論理を含む、請求項６０に記載のコンピュータ・プログラム。
【請求項６２】
前記確保論理が、前記ゲスト・プログラムから前記バッファの前記指示を受け取る受取論理を含む、請求項６０に記載のコンピュータ・プログラム。
【請求項６３】
前記バッファが、トークンによって識別される装置に関連付けられ、
前記実行論理が、
前記トークンの有効性を検査する検査論理と、
有効なトークンの表示に応答して、前記バッファに関連する処理を継続する継続論理と
を含む、請求項６０に記載のコンピュータ・プログラム。
【請求項６４】
前記バッファが、キューのバッファであり、前記実行論理が、前記バッファに関連する処理を実行するために前記キューをロックするロック論理を含む、請求項６０に記載のコンピュータ・プログラム。
【請求項６５】
前記処理が、処理を前記プロセッサの代わりに前記ホストによって完了させる例外に出会い、前記処理論理が、さらに、前記ロックの所有権を前記プロセッサから前記ホストに転送する転送論理を含む、請求項６４に記載のコンピュータ・プログラム。
【請求項６６】
前記実行論理が、
データ転送に使用される前記バッファの１つまたは複数のページを識別する識別論理と、
前記１つまたは複数のページを物理ホスト・ストレージ内でピン固定するピン固定論理と
を含む、請求項６０に記載のコンピュータ・プログラム。
【請求項６７】
ピン固定される前記１つまたは複数のページの１ページが、物理ストレージに常駐しないという点で無効であり、前記実行論理が、さらに、前記ページを有効にするために前記ページを解決する解決論理を含む、請求項６６に記載のコンピュータ・プログラム。
【請求項６８】
前記解決論理が、前記プロセッサに供給される１つまたは複数の使用可能な記述子のリストを使用して前記無効なページを動的に解決する論理を含み、前記１つまたは複数の使用可能な記述子が、物理ストレージ内での前記ページのバッキングに使用可能な１つまたは複数の使用可能なページ・フレームを指定する、請求項６７に記載のコンピュータ・プログラム。
【請求項６９】
前記バッファの１つまたは複数のページをピン解除しなければならないかどうかを判定する判定論理と、
前記１つまたは複数のページをピン解除するピン解除論理と
をさらに含む、請求項６６に記載のコンピュータ・プログラム。
【請求項７０】
前記バッファの１つまたは複数のページをピン解除する前に、前記バッファの状態を前記プロセッサによって抽出する抽出論理をさらに含む、請求項６９に記載のコンピュータ・プログラム。
【請求項７１】
１つまたは複数のページに関するピン固定動作およびピン解除動作の少なくとも１つを前記プロセッサによって追跡する追跡論理をさらに含む、請求項６９に記載のコンピュータ・プログラム。
【請求項７２】
実行する前記実行論理が、前記バッファの状態を変更する変更論理を含む、請求項６０に記載のコンピュータ・プログラム。
【請求項７３】
前記入手論理が、データ転送に使用される前記バッファのページの識別を入手する論理を含み、前記実行論理が、
前記ページが物理ストレージに常駐するかどうかを判定する判定論理と、
前記ページが常駐しないことを示す前記判定に応答して、前記ページを常駐させるために前記ページを解決する解決論理と、
前記ページを物理ストレージ内でピン固定するピン固定論理と
を含む、請求項６０に記載のコンピュータ・プログラム。
【請求項７４】
前記データ転送が、前記ページの前の内容が不要である入力動作に関連し、前記解決が、前記ページを前にクリアされたページ・フレームに関連付けることを含む、請求項７３に記載のコンピュータ・プログラム。
【請求項７５】
前記ページの前記識別を入手する前記確保論理が、前記ページのゲスト・プログラム指定を含むゲスト・データ構造を受け取る受取論理を含み、
前記実行論理が、さらに、
前記プロセッサによって、前記ゲスト・データ構造の内容の少なくとも一部をホスト・データ構造にコピーするコピー論理と、
前記ページが物理ストレージに常駐するかどうかを判定するのに使用するために、前記ホスト・データ構造から前記ゲスト・プログラム指定を取り出す取出論理と、
前記ページのホスト指定を入手する入手論理と、
前記ホスト・データ構造に前記ページの前記ホスト指定を置く配置論理であって、前記ホスト指定が、データ転送に使用可能である、配置論理と
を含む、請求項７３に記載のコンピュータ・プログラム。
【請求項７６】
前記ページング可能モード仮想環境のアダプタが前記バッファにアクセスすることを可能にするために、前記バッファの状態をアダプタ所有に変更する変更論理をさらに含む、請求項７５に記載のコンピュータ・プログラム。
【請求項７７】
ピン解除動作を実行しなければならないかどうかを判定する判定論理と、
前記ピン解除動作を実行しなければならないことを示す前記判定に応答して、前記ピン解除動作を実行する実行論理と
をさらに含む、請求項７５に記載のコンピュータ・プログラム。
【請求項７８】
前記バッファが、キューに関連し、前記コンピュータ・プログラムが、前記バッファに対する処理を実行するために前記キューをロックするロック論理を含む、請求項７７に記載のコンピュータ・プログラム。
【請求項７９】
前記バッファが、トークンによって識別される装置に対応し、処理を実行する前記実行論理が、さらに、前記トークンを検証する検証論理を含む、請求項７８に記載のコンピュータ・プログラム。
【請求項８０】
前記ゲスト・プログラムによって前記バッファの状態を問い合わせる問合せ論理をさらに含む、請求項６０に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的には入出力処理に関し、具体的には、ページング可能（pageable）ゲストの入出力動作要求の解釈を容易にすることに関する。
【背景技術】
【０００２】
本願には、本願と同一の譲受人に譲渡された、次の特許／特許出願の主題に関する主題と関連する。下にリストされた特許／特許出願のそれぞれが、その全体を本明細書に参照される。
【０００３】
２００１年１２月１８日発行の米国特許第６３３２１７１  Ｂ１号、発明者バスケイ（Baskey）他、名称「SELF-CONTAINEDQUEUES WITH ASSOCIATED CONTROL INFORMATION FOR RECEIPT AND TRANSFER OF INCOMINGAND OUTGOING DATA USING A QUEUED DIRECT INPUT-OUTPUT DEVICE」。
【０００４】
２００２年２月５日発行の米国特許第６３４５２４１  Ｂ１号、発明者ブライス（Brice）他、名称「METHODAND APPARATUS FOR SIMULATION OF DATA IN A VIRTUAL ENVIRONMENT USING A QUEUED DIRECTINPUT-OUTPUT DEVICE」。
【０００５】
２００３年２月１１日発行の米国特許第６５１９６４５  Ｂ２号、発明者マルコス（Markos）他、名称「METHODAND APPARATUS FOR PROVIDING CONFIGURATION INFORMATION USING A QUEUED DIRECTINPUT-OUTPUT DEVICE」。
【０００６】
本願対応米国出願と同時に出願された米国特許出願第１０／１７６９０２号：米国特許第８８７７２５９（整理番号ＰＯＵ９２００４００７２ＵＳ１）、発明者ブランディ（Blandy）他、名称「FACILITATING MANAGEMENT OF STORAGE OF A PAGEABLE MODEVIRTUAL ENVIRONMENT ABSENT INTERVENTION OF A HOST OF THE ENVIRONMENT」
【０００７】
効率的な入出力処理は、増え続ける課題であり、効率改善への進歩が継続的に行われている。一例として、前に可能であったものよりかなり高い帯域幅を達成するために、待機直接入出力（queued direct input/output、ＱＤＩＯ）アーキテクチャと称する機能強化された入出力アーキテクチャが、InternationalBusiness Machines Corporation社によって設計された。このアーキテクチャは、International BusinessMachines Corporation社によって提供されるｚＳｅｒｉｅｓシステム（たとえばｚ９００）およびｚ／ＶＭオペレーティング・システム製品を含むさまざまなシステムおよび製品で活用されている。これらのシステムおよび製品は機能強化され、ホスト（たとえばｚ／ＶＭ）制御の下で動作する複数のオペレーティング・システム・イメージが、ＴＣＰ／ＩＰ通信アダプタおよびファイバ・チャネル・プロトコル（FiberChannel Protocol、ＦＣＰ）アダプタを使用して待機直接入出力動作を実行できるようなった。
【０００８】
現在、ページング可能モード仮想計算機で実行されるゲスト・オペレーティング・システムによるＱＤＩＯの使用は、ホストに大きいオーバーヘッドを必要とする。たとえば、ホストは、シャドウＱＤＩＯデータ・キューを作成し、維持する必要がある。このシャドウＱＤＩＯデータ・キューは、ＱＤＩＯアダプタに接続されたネットワークまたは入出力装置にアクセスするのに使用されるゲスト・オペレーティング・システム作成のＱＤＩＯキューに対して行われるＱＤＩＯアクションをミラーリングする。このＱＤＩＯシャドウイング／ミラーリング要件は、ホストがゲスト・オペレーティング・システム実メモリ・アドレスを仮想化し、オペレーティング・システムのそれぞれが動作するゲスト仮想計算機の間でシステムの実メモリ・ページを透過的に共用する固有の形に起因して存在する。[MSOffice1]
【０００９】
具体的には、ゲスト・オペレーティング・システムは、仮想化された実メモリをＱＤＩＯキューに使用する。しかし、アダプタは、ホスト実メモリ位置だけにアクセスし、仮想化されたゲスト実メモリ位置にアクセスしない。これは、アダプタが、中央処理装置のような動的アドレス変換機構を有しないからである。したがって、ゲスト・オペレーティング・システムによってＱＤＩＯキューに使用される仮想化された実メモリは、ホストによって、実際のメモリまたは物理メモリ内の異なるメモリ・ページに透過的にマッピングされる。したがって、ハイパーバイザは、ゲスト・オペレーティング・システムがＱＤＩＯアダプタを使用できるようにするために、さまざまなアクションを実行しなければならない。
【００１０】
まず、ハイパーバイザは、ゲストＱＤＩＯキューのシャドウ・コピーをホスト実メモリ内に作成することによって、ゲスト・オペレーティング・システムによりゲスト実メモリ内に作成されたＱＤＩＯキューをミラーリングしなければならない。これらのシャドウ・キューは、ホストによって透過的に作成され、維持され、ＱＤＩＯアダプタにアクセスするためにゲストによって暗黙的に使用される。シャドウ・キューだけが、ＱＤＩＯアダプタに接続され、ＱＤＩＯシャドウ・キューに含まれるホスト実メモリ入出力データ区域アドレスだけが、アダプタおよびメイン・メモリの間でデータを転送するのに実際に使用される。
【００１１】
さらに、ホストは、ゲスト・オペレーティング・システムが指定したＱＤＩＯ動作を実行するために、ゲストが作成したＱＤＩＯキューのそれぞれを、ＱＤＩＯアダプタによって使用される、それに対応するホストが作成したシャドウＱＤＩＯキューと同期した状態に保たなければならない。具体的には、ゲスト実メモリ内のゲストＱＤＩＯキュー内のＱＤＩＯ状態情報のすべてを、ホスト実メモリ内の対応するホスト・シャドウＱＤＩＯキュー内の状態情報と同期した状態に保たなければならず、オペレーティング・システムが指定する、ゲストＱＤＩＯキュー内のゲスト実メモリ入出力データ区域アドレスを、ホストによって対応するホスト実メモリ・データ区域に割り当てなければならず、これらのデータ区域アドレスが、アダプタによって指定されるホストが作成したシャドウ・キュー内で指定されなければならない。
【００１２】
このシャドウイングおよび同期維持の処理は、ゲスト・オペレーティング・システムがＱＤＩＯ動作を実行するたびに、ホストが中央プロセッサの制御を握ることを必要とする。さらに、ゲストがＱＤＩＯ動作を行うたびに生じるゲスト・オペレーティング・システムとホストとの間の制御の転送に関連する処理サイクルは、ＱＤＩＯ処理に必要な総プロセッサ・オーバーヘッドを、オペレーティング・システムがネイティブ計算機環境で実行される場合に必要なものに比べてかなり多くなる。この追加の処理オーバーヘッドは、ネイティブ実行と比較して、ページング可能ゲストとしてワークロードを実行するのに必要な総処理サイクルの４０％程度の増加に寄与する可能性がある。
【特許文献１】米国特許第６３３２１７１  Ｂ１号
【特許文献２】米国特許第６３４５２４１  Ｂ１号
【特許文献３】米国特許第６５１９６４５  Ｂ２号
【特許文献４】米国特許出願第１０／１７６９０２号（整理番号ＰＯＵ９２００４００７２ＵＳ１）
【非特許文献１】ＩＢＭ（Ｒ）資料、題名「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ動作の原理（z/ArchitecturePrinciples of Operation）」、ＩＢＭ（Ｒ）資料番号ＳＡ２２−７８３２−０２、２００３年６月
【非特許文献２】ＩＢＭ資料、題名「ｚ／ＶＭゲスト・オペレーティング・システムの稼動（z/VM:Running Guest Operating Systems）」、ＩＢＭ資料番号ＳＣ２４−５９９７−０２、２００１年１０月
【非特許文献３】ＩＢＭ資料、題名「ｚ／ＶＭ全般的な情報マニュアル（z/VM:General Information Manual）」、ＩＢＭ資料番号ＧＣ２４−５９９１−０４、２００１年１０月
【非特許文献４】システム／３７０拡張アーキテクチャ／解釈実行（System/370Extended Architecture/Interpretative Execution）、ＩＢＭ資料番号ＳＡ２２−７０９５−０１、１９８５年１１月
【発明の開示】
【発明が解決しようとする課題】
【００１３】
前述に基づいて、入出力処理を機能強化する機能が必要である。たとえば、ＱＤＩＯ動作など、入出力動作の実行に関連するホスト処理オーバーヘッドを減らす機能が必要である。
【課題を解決するための手段】
【００１４】
ページング可能モード仮想環境でデータ転送を容易にする方法の提供を介して、従来技術の短所が克服され、追加の利益がもたらされる。この方法は、たとえば、ページング可能モード仮想環境のプロセッサによって、データ転送に使用されるバッファの表示を入手することであって、前記バッファが、前記ページング可能モード仮想環境のページング可能モード仮想計算機で動作するゲスト・プログラムに関連する、入手することと、データ転送を可能にするために前記バッファに関連する処理を前記プロセッサによって実行することであって、前記実行が、前記ページング可能モード仮想環境のホストの介入がない、実行することとを含む。
【００１５】
本発明のもう１つの態様では、ページング可能モード仮想環境での入出力動作の処理を容易にする方法が提供される。この方法は、たとえば、前記ページング可能モード仮想環境のプロセッサによる、前記ページング可能モード仮想環境の仮想計算機で動作するゲスト・プログラムの入出力動作の処理を含み、前記処理は、前記ページング可能モード仮想環境のホストによる介入がない。
【００１６】
上で要約した方法に対応するシステムおよびコンピュータ・プログラム製品も、本明細書に記載され、請求されている。
【００１７】
追加の特徴および長所は、本発明の教示を介して実現される。本発明の他の実施形態および態様は、本明細書に詳細に記載され、請求される発明の一部とみなされる。
【００１８】
本発明と見なされる主題は、本明細書の請求項で規定され、明確に請求される。本発明の前述および他の目的、特徴、および長所は、添付図面と共に検討される次の詳細な説明から明白になる。
【発明を実施するための最良の形態】
【００１９】
本発明の態様によれば、ページング可能ストレージ・ゲスト（たとえばＶ＝Ｖゲスト）からの入出力要求が、ホスト介入なしで解釈される。たとえば、ゲスト・オペレーティング・システムおよびホストへまたはこれからの制御の転送を必要とせずにＶ＝Ｖゲスト・オペレーティング・システムＱＤＩＯ動作を処理するために、ｚ／ＶＭ（Ｒ）ハイパーバイザなどのホストおよびｚＳｅｒｉｅｓプロセッサなどのプロセッサのハードウェア／ファームウェアが制御された協力する形で互いに相互作用できるようにする機能が提供される。
【００２０】
さらに、本発明のもう１つの態様によれば、ページング可能ストレージ・モード・ゲストの解釈中に呼び出すことができるホスト・ページ管理支援機能が提供される。これらの機能に、ホスト・ページ無効状態を動的に解決するのに使用されるホスト・ページ解決機能、ホスト・ページの内容がホスト・ページ・フレームにピン固定（pin）されていることを示すのに使用されるホスト・ページ・ピン固定機能、ホスト・ページの内容がもはやホスト・ページ・フレームにピン固定されていないことを示すのに使用される仮想アドレスによるホスト・ページ・ピン解除（unpin）機能またはＰＴＥアドレスによるホスト・ページ・ピン解除機能あるいはその両方が含まれる。
【００２１】
本発明の１つまたは複数の態様を組み込み、使用するコンピューティング環境の一実施形態を、図１に関して説明する。コンピューティング環境１００は、たとえば、米国ニューヨーク州アーモンクのInternational Business Machines Corporation社が提供するｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づく。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅは、ＩＢＭ（Ｒ）資料、題名「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ動作の原理（z/ArchitecturePrinciples of Operation）」、ＩＢＭ（Ｒ）資料番号ＳＡ２２−７８３２−０２、２００３年６月に記載されており、この文献は、その全体が本明細書に参照される。（ＩＢＭ（Ｒ）は、米国ニューヨーク州アーモンクのInternationalBusiness Machines Corporation社の登録商標である。本明細書で使用される他の名前が、International BusinessMachines Corporation社または他の会社の登録商標、商標、または製品名である場合がある）。一例では、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づくコンピューティング環境に、米国ニューヨーク州アーモンクのInternationalBusiness Machines Corporation社が提供するｅＳｅｒｖｅｒ  ｚＳｅｒｉｅｓが含まれる。
【００２２】
一例として、コンピューティング環境１００に、仮想計算機サポートを提供する中央演算処理装置複合システム（ＣＰＣ）１０２が含まれる。ＣＰＣ１０２には、たとえば、１つまたは複数の仮想計算機１０４、１つまたは複数の中央処理装置１０６、少なくとも１つのホスト１０８（たとえば、ハイパーバイザなどの制御プログラム）、および入出力サブシステム１１０が含まれ、このそれぞれを、下で説明する。
【００２３】
ＣＰＣの仮想計算機サポートは、それぞれがＬｉｎｕｘなどのゲスト・オペレーティング・システム１１２をホスティングできる多数の仮想計算機を動作させる能力を提供する。各仮想計算機１０４は、別々のシステムとして機能することができる。すなわち、各仮想計算機は、独立にリセットされ、ゲスト・オペレーティング・システムをホスティングし、異なるプログラムを動作させることができる。仮想計算機で稼動するオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステムへのアクセスを有するように見えるが、実際には、完全なシステムの一部だけが使用（アクセス）可能である。
【００２４】
この特定の例では、仮想計算機のモデルが、Ｖ＝Ｖモデルであり、この場合に、仮想計算機のメモリは、実メモリではなく仮想メモリによってバッキングされる。各仮想計算機は、仮想線形メモリ空間を有する。物理リソースは、ホスト１０８によって所有され、共用物理リソースは、必要に応じてホストによってゲスト・オペレーティング・システムにディスパッチされて、その処理の必要を満たす。このＶ＝Ｖ仮想計算機モデルでは、ゲスト・オペレーティング・システムと物理共用計算機リソースの間の相互作用が、ホストによって制御されることが前提である。というのは、多数のゲストが、通常、ホストが単純にハードウェア・リソースを区分し、構成されたゲストに割り当てることを阻むからである。Ｖ＝Ｖモデルの１つまたは複数の態様が、ＩＢＭ資料、題名「ｚ／ＶＭゲスト・オペレーティング・システムの稼動（z/VM: Running Guest Operating Systems）」、ＩＢＭ資料番号ＳＣ２４−５９９７−０２、２００１年１０月に記載されており、この文献は、参照することができる。
【００２５】
中央処理装置１０６は、仮想計算機に割当可能な物理プロセッサ・リソースである。たとえば、仮想計算機１０４に、１つまたは複数の論理プロセッサが含まれ、この論理プロセッサのそれぞれは、仮想計算機に動的に割り当てることができる物理プロセッサ・リソース１０６のすべてまたは一部を表す。仮想計算機１０４は、ホスト１０８によって管理される。たとえば、ホストは、プロセッサ１０６で稼動するマイクロコードで実施するか、計算機で実行されるホスト・オペレーティング・システムの一部とすることができる。一例で、ホスト１０８が、米国ニューヨーク州アーモンクのInternational Business Machines Corporation社が提供するｚ／ＶＭ（Ｒ）などのＶＭハイパーバイザである。ｚ／ＶＭ（Ｒ）の一実施形態が、ＩＢＭ資料、題名「ｚ／ＶＭ全般的な情報マニュアル（z/VM:General Information Manual）」、ＩＢＭ資料番号ＧＣ２４−５９９１−０４、２００１年１０月に記載されており、この文献は、参照することができる
【００２６】
入出力サブシステム１１０は、装置とメイン・ストレージの間の情報の流れを指示する。入出力サブシステム１１０は、中央演算処理複合システムの一部とするかそれと別々にすることができるという点で、中央演算処理複合システムに結合される。入出力サブシステムは、ＣＰＣに結合された入出力装置と直接に通信するという作業から中央処理装置を解放し、データ処理を入出力処理と並行して進められるようにする。一実施形態で、入出力サブシステムは、待機直接入出力（ＱＤＩＯ）アーキテクチャに基づくが、その一例が、米国特許第６５１９６４５  Ｂ２号、発明者マルコス（Markos）他、名称「Method And Apparatus For Providing ConfigurationInformation Using A Queued Direct Input-Output Device」に記載されており、この全体が、参照によって本明細書に組み込まれる。入出力サブシステム１１０に関するさらなる詳細を、図２に関して説明する。
【００２７】
入出力サブシステム１１０に、複数の入出力装置１２２に結合された複数のアダプタ１２０が含まれる。１特定のアダプタを、１つまたは複数の入出力装置に結合することができ、１つの入出力装置を、１つまたは複数のアダプタに結合することができる。
【００２８】
アダプタの例が、ＱＤＩＯアダプタである。ＱＤＩＯアダプタは、通常は入出力制御装置に関連する機能ならびに通常は入出力チャネルに関連する機能を提供する。ＱＤＩＯアダプタは、メイン・ストレージにアクセスできるプログラムとデータを交換するために、同一のメイン・ストレージに直接にアクセスする能力を有する。
【００２９】
ＱＤＩＯアダプタの論理表現が、ＱＤＩＯ制御装置である。同一のＱＤＩＯアダプタを表す複数のＱＤＩＯ制御装置を設けることができる。
【００３０】
ＱＤＩＯアダプタは、アダプタとメイン・ストレージの間のデータ伝送経路を提供するチャネル経路を介してＣＰＣ内の他の要素に接続される。接続された入出力装置または装置のネットワークから受け取られたデータをプログラムに送るために、アダプタは、メイン・ストレージ内に配置されたＱＤＩＯ入力キューを使用する。同様に、ＱＤＩＯアダプタ（接続された入出力装置または装置のネットワークにデータを送ることができる）にデータを送るために、プログラムは、ＱＤＩＯ出力キューを使用する。
【００３１】
特定のアダプタから使用可能な複数（たとえば３２個）の入力キューおよび出力キューを設けることができる。どのキューが特定のアダプタから使用可能であるのかを示すために、ＱＤＩＯサブチャネルと称する論理構造が使用される。ＱＤＩＯサブチャネルには、０個以上の入力キューおよび０個以上の出力キューが含まれ、１つまたは複数のサブチャネルが、特定のアダプタに関連し、そのアダプタにこれらのキューへのアクセスを与える。
【００３２】
ＱＤＩＯ入力キューおよびＱＤＩＯ出力キューの両方に関して、メイン・ストレージ（たとえばホスト・ストレージ）が、それによってデータがプログラムとアダプタの間で交換される媒体として使用される。さらに、これらのキューは、オペレーティング・システム入出力スーパバイザなどの集中制御機構のサービスおよびそのような制御機構が暗示する結果のオーバーヘッドを必要とせずに、予測可能かつ効率的である非同期の形でプログラムとアダプタの両方が互いに直接に通信する能力を提供する。入力キューおよび出力キューの両方が、プログラムによってメイン・ストレージ内で構成され、ＱＤＩＯアダプタによって確立され、アクティブ化される。これらのキューは、入出力動作の処理中の通信に使用される。
【００３３】
本発明の態様によれば、ホスト（たとえばｚ／ＶＭ）およびプロセッサ（たとえばｚＳｅｒｉｅｓ）ハードウェア／ファームウェアは、ゲスト・オペレーティング・システムおよびホストからまたはこれらへの制御の転送を必要とせずにＶ＝Ｖゲスト・オペレーティング・システムＱＤＩＯ動作を処理するために、制御された協力的な形で相互に作用する。ゲストＱＤＩＯ動作は、ＱＤＩＯ拡張バッファ状態管理（Enhanced Buffer State Management、ＱＥＢＳＭ）と称する機能を利用することができ、これが行われる場合には、選択された命令をページング可能ストレージ・モード・ゲストのために解釈的に実行できるようにするＱＤＩＯ拡張バッファ状態管理解釈（EnhancedBuffer State Management Interpretation、ＱＥＢＳＭＩ）機能と称する機能を介して、動作を、ホスト介入なしで直接にホストを介してＱＤＩＯアダプタとの間で受け渡すことができる。解釈実行の一例（たとえば、StartInterpretive Execution（ＳＩＥ））が、システム／３７０拡張アーキテクチャ／解釈実行（System/370 ExtendedArchitecture/Interpretative Execution）、ＩＢＭ資料番号ＳＡ２２−７０９５−０１、１９８５年９月に記載されており、この資料を参照することができる。
【００３４】
ＱＥＢＳＭおよびＱＥＢＳＭＩを使用できるようにシステムを構成するために、さまざまな構成タスクが実行される。図３から４を参照して説明するように、これらのタスクは、プログラム（たとえばゲスト・プログラム）２００、ホスト（たとえばｚ／ＶＭ）２０２、ならびにゲストおよびホストが稼動する計算機２０４（たとえばプロセッサ）によって実行される。
【００３５】
一実施形態で、ゲスト・プログラム２００（図３）が、ステップ２０６で、プログラムがＱＥＢＳＭを使用してＱＤＩＯ接続を管理できるかどうかを判定する。この判定は、たとえば、プログラムによってホストに発行されるチャネル・サブシステム呼出し（ＣＨＳＣ）チャネル・サブシステム特性ストア（Store Channel Subsystem Characteristics）コマンドを介して行われる。ホストは、ＣＨＳＣチャネル・サブシステム特性ストア命令をハードウェアに発行して、ステップ２０８で、計算機にインストールされた機能を得る。計算機は、ステップ２１０でＣＨＳＣ命令を処理し、情報をホストに渡す。
【００３６】
チャネル・サブシステム特性ストア・コマンドは、入出力サブシステムの特性に関する情報を保管するのに使用される。チャネル・サブシステム特性ストア・コマンドの実行は、入出力サブシステムに含まれる情報を一切変更しない。チャネル・サブシステム特性ストア・コマンドは、同期式に実行され、解釈的に実行されない。
【００３７】
チャネル・サブシステム特性ストア・コマンドの要求ブロックの一実施形態を、図５を参照して説明する。コマンド要求ブロック３００に、たとえば、下記が含まれる。
【００３８】
（ａ）長さフィールド３０２：このフィールドは、コマンド要求ブロックの長さを指定する。
【００３９】
（ｂ）コマンド・コード３０４：このフィールドは、チャネル・サブシステム特性ストア・コマンドを指定する。
【００４０】
（ｃ）イメージＩｄ（ＩＩＤ）３０８：ＩＩＤフィールドには、一例として、０が含まれる。
【００４１】
（ｄ）フォーマット３１０：コマンド要求フォーマット・フィールドには、コマンド要求ブロックのレイアウトを指定する値を有する符号なし整数が含まれる。
【００４２】
チャネル・サブシステム特性ストア・コマンドの応答ブロックの一実施形態を、図６を参照して説明する。一例では、応答ブロック３２０に、下記が含まれる。
【００４３】
（ａ）長さフィールド３２２：このフィールドは、チャネル・サブシステム特性ストア・コマンドを実行する試みの結果として保管されたコマンド応答コードの長さを指定する。
【００４４】
成功の表示以外の応答コードが応答コード・フィールドに保管される場合に、そのコマンドの実行の試みの結果として特性情報は保管されず、長さフィールドは、コマンド応答ブロックの、たとえば８バイトの長さを指定する。
【００４５】
成功を示す応答コードが応答コード・フィールドに保管される場合に、全般的な特性およびＣＨＳＣコマンド特性の両方が、コマンド応答ブロックに保管されている。したがって、長さフィールドは、たとえば４０８０バイトのコマンド応答ブロック長さを指定する。
【００４６】
（ｂ）応答コード３２４：このフィールドには、チャネル・サブシステム特性ストア・コマンドの実行の試みの結果を示す符号なし２進整数が含まれる。
【００４７】
（ｃ）フォーマット３２６：コマンド応答フォーマット・フィールドには、コマンド応答ブロックのレイアウトを示す値を有する符号なし整数が含まれる。
【００４８】
（ｄ）全般的特性３２８：成功を示す応答コードが応答フィールドに保管される場合に、全般的特性フィールドに、さまざまな機能のうちのどれが入出力サブシステムによって提供されるかを指定する情報が含まれる。機能に、たとえば、ＣＨＳＣサブチャネル；動的入出力構成機能；メッセージ・プロセッサ・チャネル構成機能；ＱＤＩＯ拡張バッファ状態管理機能；ＱＤＩＯ拡張バッファ状態管理解釈（ＱＥＢＳＭＩ）機能などが含まれる。本明細書でさまざまな機能を説明するが、他の機能または異なる機能が存在し得る。特定の機能に対応する全般的特性フィールドのビットが１である場合には、これは、その機能が提供されることを示す。
【００４９】
（ｅ）ＣＨＳＣ特性３３０：成功応答コードが応答コード・フィールドに保管される場合に、ＣＨＳＣ特性フィールドに、あるＣＨＳＣコマンドが入出力サブシステムによって提供されるかどうかを指定する情報が含まれる。このコマンドの例に、たとえば、チャネル経路構成変更、制御装置構成変更、入出力装置構成変更、構成コンポーネント・リスト・ストア、ドメイン構成コンポーネント・リスト・ストア、およびドメイン属性セット、ならびに他のコマンドが含まれる。特定のコマンドに対応するＣＨＳＣ特性フィールドのビットが１である場合には、そのコマンドが提供される。
【００５０】
図３に戻って、ホストがインストールされた機能のリストを受け取ることに応答して、ホストは、ステップ２１２で、ＱＤＩＯ拡張バッファ状態管理解釈（ＱＥＢＳＭＩ）機能が計算機にインストールされているかどうかを判定する。ＱＥＢＳＭＩがインストールされており、サブチャネルがＱＤＩＯ対応である場合には、ホストは、ＣＨＳＤ応答データのＱＥＢＳＭ使用可能インジケータをオンにして、ＱＥＢＳＭ機能が使用可能であることを示す。したがって、ステップ２１４で、ＱＥＢＳＭ機能の可用性を示してコマンドが終了する。
【００５１】
次に、ステップ２１６で、指定されたサブチャネル番号のＱＤＩＯ特性に関する判定を行う。一例では、この判定が、プログラムによってホストに発行されるＣＨＳＣサブチャネルＱＤＩＯデータ・ストア・コマンドを介して行われる。次に、ホストが、ステップ２１８で、キュー特性を獲得するために実際のサブチャネルに命令を発行する。ステップ２２０で、計算機がこの命令を処理する。
【００５２】
サブチャネルＱＤＩＯデータ・ストア・コマンドは、指定された範囲のサブチャネルに関連するＱＤＩＯアダプタの自己記述型情報を入手するのに使用される。
【００５３】
サブチャネルＱＤＩＯデータ・ストア・コマンドの実行は、入出力サブシステムに含まれる情報を一切変更しない。一例では、このコマンドは同期式に実行される。
【００５４】
サブチャネルＱＤＩＯデータ・ストア・コマンドのコマンド要求ブロック４００（図７）に、たとえば下記が含まれる。
【００５５】
（ａ）長さフィールド４０２：このフィールドは、コマンド要求ブロックの長さを指定する。
【００５６】
（ｂ）コマンド・コード４０４：このフィールドは、サブチャネルＱＤＩＯデータ・ストア・コマンドを指定する。
【００５７】
（ｃ）イメージＩＤ（ＩＩＤ）４０６：ＩＩＤフィールドには、この実施形態では０の値が含まれる。
【００５８】
（ｄ）フォーマット（ＦＭＴ）４０８：コマンド要求フォーマット・フィールドには、コマンド要求ブロックのレイアウトを指定する値を有する符号なし整数が含まれる。
【００５９】
（ｅ）第１サブチャネル番号４１０：このフィールドは、ＱＤＩＯアダプタ情報が要求される最初のサブチャネルを識別するサブチャネル番号を指定する。
【００６０】
（ｆ）最終サブチャネル番号４１２：このフィールドは、ＱＤＩＯアダプタ情報が要求される最後のサブチャネルを識別するサブチャネル番号を指定する。
【００６１】
サブチャネルＱＤＩＯデータ・ストア・コマンドの応答ブロックの一実施形態を、図８を参照して説明する。一例で、応答ブロック４２０に、たとえば下記が含まれる。
【００６２】
（ａ）長さフィールド４２２：このフィールドは、コマンド応答ブロックの長さを指定する。長さは、サブチャネルＱＤＩＯデータ・ストア・コマンドを実行する試みの結果として保管された応答コードに依存する。
【００６３】
成功の表示以外の応答コードが応答コード・フィールドに保管される場合に、サブチャネルＱＤＩＯ記述ブロックは、コマンド実行の試みの結果として保管されず、長さフィールドは、たとえばコマンド応答ブロックの８バイトの長さを指定する。
【００６４】
成功を示す応答コードが応答コード・フィールドに保管される場合に、少なくとも１つのサブチャネルＱＤＩＯ記述ブロックが、コマンド実行の結果としてコマンド応答ブロックに保管され、長さは、たとえば保管されたサブチャネルＱＤＩＯ記述ブロックの各々について８バイト＋３２バイトのコマンド応答ブロック長さを指定する。
【００６５】
（ｂ）応答コード４２４：このフィールドには、サブチャネルＱＤＩＯデータ・ストア・コマンド実行の試みの結果を記述する符号なし２進整数が含まれる。
【００６６】
（ｃ）圧縮（Ｃ）４２６：このフィールドは、サブチャネルＱＤＩＯ記述ブロックが圧縮されているかどうかを指定する。
【００６７】
１の場合に、Ｃビットは、記述ブロックが圧縮されていることを指定する。すなわち、ＱＤＩＯ対応と指定されたサブチャネルの記述ブロックだけが保管されている。ＱＤＩＯ対応でないサブチャネルの記述ブロックは、応答ブロックに保管されない。
【００６８】
０の場合に、Ｃビットは、記述ブロックが圧縮されていないことを指定する。すなわち、記述ブロックは、ＱＤＩＯ対応サブチャネルを記述するかどうかにかかわりなく、応答ブロックに保管される。要求されたサブチャネルの範囲内で保管される複数の記述ブロックについて、各可能なサブチャネル番号が、記述ブロックによって表される。
【００６９】
（ｄ）フォーマット（ＦＭＴ）４２８：コマンド応答フォーマット・フィールドには、コマンド応答ブロックのレイアウトを指定する値を有する符号なし整数が含まれる。このフィールドの値は、たとえば０である。
【００７０】
（ｅ）サブチャネルＱＤＩＯ記述ブロック４３０：成功の応答コードが保管される場合に、１２７個までの３２バイト（一例として）サブチャネルＱＤＩＯ記述ブロックが、コマンド応答ブロックの応答データ区域に保管される。保管されるサブチャネルＱＤＩＯ記述ブロックの数は、コマンド要求ブロックで指定された範囲内のサブチャネルの数、ＣＨＳＣが実行される時の入出力サブシステムの状態、および入出力サブシステム・モデルに依存する。
【００７１】
少なくとも１つのサブチャネルＱＤＩＯ記述ブロックが保管され、実際に保管されるブロックの数は、コマンド応答ブロックのサイズから８バイトを引き、残りを３２で割ることによって判定される。
【００７２】
サブチャネルＱＤＩＯ記述ブロックは、指定されたサブチャネルの一部またはすべてについて、第１サブチャネル番号フィールドによって指定されたサブチャネルから開始して保管される。サブチャネルＱＤＩＯ記述ブロックは、サブチャネル番号の昇順で保管される。
【００７３】
サブチャネルＱＤＩＯ記述ブロックの一例を、図９を参照して説明する。サブチャネルＱＤＩＯ記述ブロック４３０に、たとえば下記が含まれる。
【００７４】
（ａ）フラグ４４０：このフィールドには、サブチャネルＱＤＩＯ記述ブロックの内容に関する情報が含まれる。ビット０から７の意味は、一例で次の通りである。
【００７５】
ビット  意味
０  ＱＤＩＯ対応：１の場合に、ビット０は、指定されたサブチャネルに関連する入出力装置が、ＱＤＩＯ動作を実行できることを示す。０の場合に、ビット０は、指定されたサブチャネルに関連する入出力装置が、ＱＤＩＯ動作を実行できないことを示す。
【００７６】
１  有効性：１の場合に、ビット１は、サブチャネルＱＤＩＯ記述ブロックが有効であることを示す。０の場合に、ビット１は、サブチャネルＱＤＩＯ記述ブロックが、ビット０、１、および２ならびにサブチャネル番号フィールドを除いて有効ではなく、サブチャネルＱＤＩＯ記述ブロックの内容に意味がないことを示す。ビット１は、ＱＤＩＯ機能性を有すると指定されていないサブチャネル（すなわちビット０が１の場合）について０になる。
【００７７】
２  最終ＱＤＩＯサブチャネル。１の場合に、ビット２は、ＱＤＩＯ機能性を有するそれより大きい番号のサブチャネルがないことを示す。０の場合に、ビット２は、ＱＤＩＯ機能性を有するそれより大きい番号のサブチャネルがあることを示す。
【００７８】
（ｂ）サブチャネル番号４４２：このフィールドは、このサブチャネルＱＤＩＯ記述ブロックの情報が適用されるサブチャネルを指定する。
【００７９】
（ｃ）ＱＤＩＯキュー・フォーマット（ＱＦＭＴ）４４４：このフィールドには、指定されたサブチャネルで使用できるＱＤＩＯキューのフォーマットを識別する符号なし２進整数が含まれる。
【００８０】
（ｄ）Ｐａｒｍ  ４４６：このフィールドには、このサブチャネルＱＤＩＯ記述ブロックによって表されるサブチャネルまたは装置に関するパラメータ情報が含まれる。
【００８１】
（ｅ）ＱＤＩＯアダプタ特性１（ＱＤＩＯＡＣ１）４４８：このフィールドは、指定されたサブチャネルに関連するＱＤＩＯアダプタのモデル依存特性を記述する。ビット０から７の意味は、一例では次の通りである。
【００８２】
ビット  意味
０  非送信請求入力キュー割込み：１の場合に、ビット０は、サブチャネルがＱＤＩＯアクティブ状態である間にバッファがプライム状態への推移を行った時に、ＱＤＩＯアダプタが非送信請求入力キュー進行報告割込みのプログラムへの提示を動的に開始できることを示す。この割込みは、入力キュー割込み要求がサポートされる場合に、プログラムが下で説明する入力キューＳＢＡＬの入力キュー割込み要求インジケータをセットした結果として提示される送信請求割込みと独立に提示される。
【００８３】
０の場合に、ビット０は、ＱＤＩＯアダプタが、プログラムへの非送信請求入力キュー進行報告割込みの提示を開始しないことを示す。
【００８４】
１  ＳＩＧＡが入力キューを開始：ビット１が１でビット７が０の場合に、ＱＤＩＯアダプタは、プログラムがSIGNAL ADAPTER - read by subchannel（ＳＩＧＡ−ｒ）を実行することを必要とする。ビット１が１でビット７が１の場合に、ＱＤＩＯアダプタは、プログラムがSIGNALADAPTER - ready by token（ＳＩＧＡ−ｒｔ）を実行することを必要とする。ＳＩＧＡの一例が、２００１年１２月１８日発行の米国特許第６３３２１７１号、名称「Self-ContainedQueues With Associated Control Information For Receipt And Transfer Of IncomingAnd Outgoing Data Using A Queued Direct Input-Output Device」、２００２年２月５日発行の米国特許第６５１９６４５号、名称「MethodAnd Apparatus Of Simulation Of Data In A Virtual Environment Using A QueuedDirect Input-Output Device」、および２００３年２月１１日発行の米国特許第６３４５２４１号、名称「Method AndApparatus For Providing Configuration Information Using A Queued DirectInput-Output Device」に記載されており、これらのそれぞれが、参照することができる。
【００８５】
０の場合に、ビット１は、プログラムがＳＩＧＡ−ｒまたはＳＩＧＡ−ｒｔを実行することをＱＤＩＯアダプタが必要としないことを示す。
【００８６】
２  ＳＩＧＡが出力キューを開始または処理：ビット２が１でビット７が０の場合に、ＱＤＩＯアダプタは、その命令の記述で述べられる理由から、プログラムがSIGNAL ADAPTER - write by subchannel（ＳＩＧＡ−ｗ）を実行することを必要とする。ビット２が１でビット７が１の場合に、ＱＤＩＯアダプタは、プログラムがSIGNALADAPTER - write by token（ＳＩＧＡ−ｗｔ）を実行することを必要とする。
【００８７】
０の場合に、ビット２は、ＱＤＩＯアダプタが、プログラムがＳＩＧＡ−ｗまたはＳＩＧＡ−ｗｔを実行することを必要としないことを示す。
【００８８】
３  ＳＩＧＡ同期：ビット３が１でビット７が０の場合に、ＱＤＩＯアダプタは、プログラムがSIGNALADAPTER - synchronize by subchannel（ＳＩＧＡ−ｓ）を実行することを必要とする。ビット３が１でビット７が１の場合に、プログラムは、SIGNALADAPTER - logout by token（ＳＩＧＡ−ｌｔ）を実行することができる。
【００８９】
０の場合に、ビット３は、プログラムがＳＩＧＡ−ｓを実行することをＱＤＩＯアダプタが必要としないことを示す。
【００９０】
４  アダプタ割込みキュー同期化補助アクティブ：ビット４が１の場合に、アダプタ割込みキュー同期化補助がアクティブである。この補助がアクティブであり、ＳＩＧＡ−ｓが要求される（ビット３が１でビット７が０）場合に、指定されたサブチャネルに関連するアダプタに関連する入力キューおよび出力キューは、割込みの前に動的に同期化される。したがって、アダプタ割込み機能（adapter interruption facility、ＡＩＦ）割込みの直後にプログラムがＳＩＧＡ−ｓ命令を発行する必要はない。
【００９１】
ビット４が０の場合に、アダプタ割込みキュー同期化補助はアクティブでない。
【００９２】
５  ＰＣＩ割込みキュー同期化補助アクティブ：ビット５が１の場合に、ＰＣＩ割込みキュー同期化補助がアクティブである。この補助がアクティブでＳＩＧＡ−ｓが要求される（ビット３が１でビット７が０）場合に、指定されたサブチャネルに関連する出力キューは、割込みの前に動的に同期化される。したがって、ＰＣＩ割込みの直後にプログラムがＳＩＧＡ−ｓ命令を発行する必要はない。
【００９３】
ビット５が０の場合に、ＰＣＩ割込みキュー同期化補助はアクティブでない。
【００９４】
ＱＤＩＯＡＣ１フィールドのビット４および５は、ホストによってセットされる。
【００９５】
６  ＱＥＢＳＭ使用可能：１の場合に、ビット６は、ＱＤＩＯ拡張バッファ状態管理が、指定されたサブチャネルの使用可能化のために使用可能であることを示す。
【００９６】
０の場合に、ビット６は、ＱＤＩＯ拡張バッファ状態管理が、指定されたサブチャネルの使用可能化に使用可能でないことを示す。
【００９７】
このフィールドは、ＣＨＳＣチャネル・サブシステム特性ストア・コマンドに応答して保管される全般的特性の指定されたビットの設定に基づいてホストによってセットされる。
【００９８】
７  ＱＥＢＳＭ使用可能：１の場合に、ビット７は、指定されたサブチャネルがＱＤＩＯ拡張バッファ状態管理に使用可能にされ、その結果、下記が真であることを示す。
【００９９】
・指定されたサブチャネルに関連するＱＤＩＯバッファ状態が、プログラム・ストレージ内の、下で説明するＳＬＳＢでアクセス可能でない。そうではなく、プログラムは、ＱＤＩＯバッファ状態セット命令およびＱＤＩＯバッファ状態抽出命令を使用する。
【０１００】
・サブチャネル・トークン・フィールドにサブチャネル・トークンが含まれる。
【０１０１】
０の場合に、ビット７は、指定されたサブチャネルがＱＤＩＯ拡張バッファ状態管理に使用可能にされていないことと、ＱＤＩＯバッファ状態が、プログラムによって直接に操作可能とすることができるプログラム・ストレージ内のＳＬＳＢでアクセス可能であることを示す。
【０１０２】
このフィールドは、指定されたサブチャネルがＱＤＩＯ拡張バッファ状態管理解釈（ＱＥＢＳＭＩ）について使用可能にされているかどうかに基づいて、ホストによってセットされる。ビット７は、ホストが完全にアダプタをエミュレートしている（たとえばゲスト・トレース中）時にも、ホストによってセットされる可能性がある（ＱＤＩＯサブチャネルがＱＥＢＳＭＩについてどのように使用可能にされるかの説明については、下で説明するＣＨＳＣチャネル・サブシステム特性セット・コマンドを参照されたい）。
【０１０３】
（ｆ）クラス４５０：このフィールドには、指定されたサブチャネルに関連する入出力装置のクラスを識別する符号なし２進整数が含まれる。クラスの一例が、通信コントローラである。
【０１０４】
（ｇ）入力キュー・カウント（ＩＱＣＮＴ）４５２：このフィールドには、入出力動作を実行するためにＱＤＩＯアダプタによって使用される入力ＱＤＩＯキューの数を指定する符号なし２進整数が含まれる。
【０１０５】
（ｈ）出力キュー・カウント（ＯＱＣＮＴ）４５４：このフィールドには、入出力動作を実行するためにＱＤＩＯアダプタによって使用される出力ＱＤＩＯキューの数を指定する符号なし２進整数が含まれる。
【０１０６】
（ｉ）最大バッファ・チェーン・カウント（ＭＢＣＣＮＴ）４５６：このフィールドが０でない場合には、アダプタによってサポートされるチェーン・バッファ（すなわち、下で説明するチェーンＳＢＡＬ）の最大個数の符号なし整数が含まれる。このフィールドが０であり、ＱＦＭＴフィールドが、指定されたサブチャネルでフォーマット１キュー（たとえばＦＣＰ）が使用されることを示す場合には、最大３６個のバッファをチェーンすることができる。このフィールドが０であり、ＱＦＭＴフィールドが、指定されたサブチャネルでフォーマット１キューが使用されないことを示す場合には、バッファー・チェーニングは、アダプタによってサポートされない。
【０１０７】
（ｊ）ＱＤＩＯアダプタ特性２（ＱＤＩＯＡＣ２）４５８：このフィールドは、指定されたサブチャネルに関連するＱＤＩＯアダプタのモデル依存特性を記述する。ビット０から３の意味は、一例で次の通りである。
【０１０８】
ビット  意味
０  入力キュー割込み要求サポート：１の場合に、ビット０は、アダプタが、下で説明する入力キューＳＢＡＬのＳＢＡＬＦ  ０フィールドの割込み要求ビットをサポートすることを示す。ビット０が１でビット３が０の場合に、関連する入力キューでのアダプタの進行を報告する割込みは、プログラムの要求に厳密に従う。ビット０が１でビット３が１の場合には、関連する入力キューでのアダプタの進行を報告する割込みは、プログラムの要求に従い、非送信請求進行報告割込みも発生する可能性がある。
【０１０９】
０の場合に、ビット０は、アダプタが、入力キューのＳＢＡＬのＳＢＡＬＦ  ０フィールドの割込み要求ビットをサポートしないことを示す。
【０１１０】
１  出力キュー割込み要求サポート：１の場合に、ビット１は、アダプタが、出力キューＳＢＡＬのＳＢＡＬＦ  ０フィールドの割込み要求ビットをサポートすることを示す。関連する出力キューでのアダプタの進行を報告する割込みは、プログラムの要求に厳密に従う。
【０１１１】
０の場合に、ビット１は、アダプタが、出力キューのＳＢＡＬのＳＢＡＬＦ  ０フィールドの割込み要求ビットをサポートしないことを示す。
【０１１２】
２  単一バッファ・プリフェッチ・アクティブ：１の場合に、ビット２は、アダプタが、そのアダプタが処理している現行バッファの多くとも１つのバッファを前もってプリフェッチすることを示す。０の場合に、ビット２は、アダプタが、複数のバッファをプリフェッチできることを示す。
【０１１３】
３  非送信請求入力キュー割込みインアクティブ：１の場合に、ビット３は、非送信請求入力キュー割込みが、そのアダプタについてインアクティブであることを示す。０の場合に、ビット３は、非送信請求入力キュー割込みが、そのアダプタについてアクティブであることを示す。ビット３が０の場合には、ＱＤＩＯＡＣ１ビット０が１である。
【０１１４】
（ｋ）サブチャネル・トークン４６０：ＱＤＩＯＡＣ１フィールドのビット７が１の場合に、このフィールドに、指定されたサブチャネルに関連するトークンが含まれる。
【０１１５】
サブチャネル・トークン・フィールドは、ホストによってセットされる。指定されたサブチャネルがＱＥＢＳＭＩについて使用可能にされている場合に、ホストは、そのサブチャネルに関連するＱＤＩＯバッファ情報制御ブロック（ＱＢＩＣＢ）のホスト実アドレスまたはホスト絶対アドレスの値をサブチャネル・トークン・フィールドにセットする（ＱＢＩＣＢは、下で説明するように、ＱＤＩＯサブチャネルがＱＥＢＳＭＩについて使用可能にされている時にＣＨＳＣチャネル・サブシステム特性セット・コマンドを介してサブチャネルに関連付けられる）。サブチャネル・トークンは、ホストによって、ホストがアダプタを完全にエミュレートする時にもセットされる可能性がある。指定されたサブチャネルが、ＱＥＢＳＭＩについて使用可能にされておらず、ホストがアダプタをエミュレートしていない場合には、サブチャネル・トークン値として０が返される。
【０１１６】
サブチャネル・トークンは、ＱＥＢＳＭ動作についてＱＤＩＯサブチャネルを指定するのに使用される。サブチャネルからのＱＤＩＯキューの確立解除を引き起こすアクションまたはイベントが発生する時に、サブチャネル・トークンが古くなり、プログラムがもう一度ＱＥＢＳＭ動作を使用する前に、新しいサブチャネル・トークンを入手しなければならない。前に割り当てられたトークンは、無効になり、その後、別のサブチャネルに割り当てられる。
【０１１７】
サブチャネルＱＤＩＯ記述ブロックに保管されるアダプタ記述情報は、サブチャネルＱＤＩＯデータ・ストア・コマンドが実行された時点における最新のものである。しかし、アダプタ記述情報の一部は、指定されたアダプタによる、下で説明するＱＤＩＯキューＣＣＷ確立コマンドの成功裡の実行の結果として変更される場合がある。したがって、下記に関する最新の記述を入手するためには、ＱＤＩＯキューＣＣＷ確立コマンドの成功裡の完了の後に、サブチャネルＱＤＩＯデータ・ストア・コマンドを再発行しなければならない。
ＱＤＩＯＡＣ１ビット１（ＳＩＧＡが入力キューを開始）
ＱＤＩＯＡＣ１ビット２（ＳＩＧＡが出力キューを開始または処理）
ＱＤＩＯＡＣ１ビット３（ＳＩＧＡ同期）
ＱＤＩＯＡＣ１ビット７（ＱＥＢＳＭ使用可能）
ＱＤＩＯＡＣ２ビット２（単一バッファ・プリフェッチ・アクティブ）
ＱＤＩＯＡＣ２ビット３（非送信請求入力キュー割込みインアクティブ）
サブチャネル・トークン
【０１１８】
残りのアダプタ記述情報は、ＱＤＩＯキュー確立コマンドの成功裡の完了に無関係に最新である。
【０１１９】
図３を参照すると、ステップ２２２でのＣＨＳＣサブチャネルＱＤＩＯデータ・ストア・コマンドの完了に応答して、ステップ２２４で、ホストが、ＱＥＢＳＭＩ機能が計算機で使用可能であるかどうかを判定する。ＱＥＢＳＭＩが使用可能であり、そのサブチャネルがＱＤＩＯ対応であり、ホストがこの接続に関してＱＥＢＳＭをサポートする場合に、プログラムに返されるＣＨＳＣ応答データで、このサブチャネルにＱＥＢＳＭを使用できることの表示を行う。プログラムは、ステップ２２６で、サブチャネルＱＤＩＯデータに関するエンド・オペレーション（end operation）を受け取る。
【０１２０】
ＣＨＳＣ応答データで返される情報を使用して、ステップ２２８で、プログラムによってメイン・ストレージ内でＱＤＩＯキューが作成される。ＱＤＩＯキューには、キューならびにデータ転送に使用されるバッファ・ストレージ・ブロックを記述するデータ構造が含まれる。一例で、キュー・コンポーネントと称する、キューの特性を集合的に記述し、プログラムとアダプタの間のデータの交換を可能にする制御を提供する複数の別々のデータ構造に、たとえば下記が含まれる。
【０１２１】
１．キュー情報ブロック（ＱＩＢ）５００（図１０）：ＱＤＩＯサブチャネルごとに１つのＱＩＢが定義される。ＱＩＢは、サブチャネルに関連する入力キューおよび出力キューの集合に関する情報を提供する。ＱＩＢの絶対アドレスは、本明細書で説明するＱＤＩＯキュー確立コマンドによってＱＤＩＯアダプタに供給される。ＱＩＢは、たとえば下記を含む（その一部を図１０に示す）、さまざまなフィールドを有する。
【０１２２】
（ａ）キュー・フォーマット（ＱＦＭＴ）：このフィールドには、ＱＤＩＯキューのフォーマットを識別する符号なし２進整数が含まれる。
【０１２３】
（ｂ）実装依存のパラメータ・フォーマット（ＰＦＭＴ）：このフィールドには、実装依存パラメータの内容のフォーマットを識別する符号なし２進整数が含まれる。
【０１２４】
（ｃ）要求フラグ（ＲＦｌａｇｓ）：このフィールドには、要求フラグが含まれる。１つのフラグに、ＱＤＩＯ拡張バッファ状態管理（ＱＥＢＳＭ）使用可能化が含まれる。ＱＤＩＯキューＣＣＷ確立コマンドが発行される時にこのビットが１である場合には、ＱＥＢＳＭについてサブチャネルを使用可能にする要求が示される。
【０１２５】
（ｄ）アダプタ特性（ＡＣ）：このフィールドには、サブチャネルに関連する入力キューおよび出力キューの組に関するアダプタの能力に関する情報が含まれる。ＡＣフィールドは、ＱＤＩＯキューＣＣＷ確立コマンドが発行される前にプログラムによって０がセットされるが、アダプタはこれを検査しない。
【０１２６】
このフィールドは、ＱＤＩＯキューＣＣＷ確立コマンドの実行中にアダプタによってセットされ、このコマンドの成功裡の完了の前にアダプタがサポートする値を示すためにセットされる。ビット０から１の意味は、一例では次の通りである。
【０１２７】
ビット  意味
０  入力キュー割込み要求サポート：０の場合に、ビット０は、アダプタが入力キューのＳＢＡＬのＳＢＡＬＦ  ０フィールド（下で説明する）の割込み要求ビットをサポートしないことを示す。
【０１２８】
１の場合に、ビット０は、アダプタがＳＢＡＬのＳＢＡＬＦ  ０フィールドの割込み要求ビットをサポートすることを示す。
【０１２９】
１  出力キュー割込み要求サポート：０の場合に、ビット１は、アダプタが出力キューのＳＢＡＬのＳＢＡＬＦ  ０フィールドの割込み要求ビットをサポートしないことを示す。関連する出力キューでのアダプタの進行を報告する割込みは、提示されない。
【０１３０】
１の場合に、ビット１は、アダプタがＳＢＡＬのＳＢＡＬＦ  ０フィールドの割込み要求ビットをサポートすることを示す。
【０１３１】
（ｅ）第１入力ストレージ・リスト情報ブロック（ＳＬＩＢ）アドレス５０２：このフィールドには、このＱＩＢが関連するサブチャネルの最高優先順位の入力キューＳＬＩＢの論理アドレスが含まれる。
【０１３２】
（ｆ）第１出力ＳＬＩＢアドレス５０４：このフィールドには、このＱＩＢが関連するサブチャネルの最高優先順位の出力キューＳＬＩＢの論理アドレスが含まれる。
【０１３３】
（ｇ）アダプタ識別子：このフィールドには、このＱＩＢが関連するサブチャネルのＱＤＩＯアダプタにプログラムが割り当てた名前が含まれる。
【０１３４】
（ｈ）実装依存パラメータ：このフィールドには、１つまたは複数の実装依存パラメータが含まれる。
【０１３５】
２．ストレージ・リスト情報ブロック（ＳＬＩＢ）５０６：キューごとに１つのＳＬＩＢが定義される。ＳＬＩＢは、キューおよびデータの保持に使用可能な各キュー・バッファに関する情報を提供する。ＳＬＩＢの絶対アドレスは、ＱＤＩＯキュー確立コマンドによってＱＤＩＯアダプタに供給される。
【０１３６】
一例で、ストレージ・リスト情報ブロックに、次のフィールドが含まれ、その一部を図１０に示す。
【０１３７】
（ａ）次ストレージ・リスト情報ブロック・アドレス５０８：同一サブチャネルの同一のタイプのＱＤＩＯキュー（入力または出力）に追加のより低い優先順位のＳＬＩＢがある場合に、このフィールドに、そのＳＬＩＢの論理アドレスが含まれる。
【０１３８】
（ｂ）ストレージ・リスト・アドレス５１０：このフィールドには、ストレージ・リストと呼ばれる制御ブロックの論理アドレスが含まれる。ストレージ・リストには、ストレージ・ブロック・アドレス・リスト（ＳＢＡＬ）の絶対アドレスが含まれる。各ＳＢＡＬには、たとえば１６個までのブロック（たとえばページ）の絶対アドレスが含まれる。単一のＳＢＡＬ内のアドレスを使用して突きとめることができるストレージ・ブロックの集合を、ＱＤＩＯバッファと呼ぶ。
【０１３９】
（ｃ）ストレージ・リスト状態ブロック・アドレス（ＳＬＳＢ）５１２：このフィールドには、ＱＩＢ  ＲＦｌａｇｓフィールドの拡張ＱＤＩＯバッファ状態管理使用可能化インジケータが０である場合に、ストレージ・リスト状態ブロック（ＳＬＳＢ）の論理アドレスが含まれる。
【０１４０】
３．ストレージ・リスト（ＳＬ）５１４：キューごとに１つのＳＬが定義される。ＳＬには、キューに関連するＱＤＩＯ入出力バッファごとに１つの、たとえば１２８個の項目が含まれる。ＳＬは、メイン・ストレージ内の入出力バッファ位置に関する情報を提供する。各項目に、ストレージ・ブロック・アドレス・リストの絶対アドレス５１６が含まれ、各ＳＢＡＬに、このキューに関連する１２８個までのデータ・バッファの１つを集合的に構成するストレージ・ブロックの絶対アドレスのリストが含まれる。
【０１４１】
ストレージ・リストの絶対アドレスは、ＱＤＩＯキュー確立コマンドによってＱＤＩＯアダプタに供給される。
【０１４２】
４．ストレージ・リスト状態ブロック（ＳＬＳＢ）またはストレージ・リスト状態ログアウト（ＳＬＳＬ）５１８：ＱＤＩＯサブチャネルが、拡張ＱＤＩＯ管理動作について使用可能にされる時に、キューごとに１つのＳＬＳＬが定義され、対応するＳＬＳＢも、プログラム・ストレージの外部にキューごとに存在する。ＳＬＳＬは、長さが１２８バイトであり、Signal Adapter - logout by token（ＳＩＧＡ−ｌｔ）が実行される時に必ず、またはキューがアダプタから確立解除される時に作られるＳＬＳＢのログアウトを含む。ＳＬＳＢには、キューに関連する１２８個の入出力バッファごとに１項目の、ＳＱＢＮ（キュー・バッファＮの状態）と称する１２８個の項目５２０が含まれる。各項目は、それに関連する入出力バッファに関する状態情報を提供する。本明細書で説明するＱＤＩＯバッファ状態セット命令およびＱＤＩＯバッファ状態抽出命令は、ＳＬＳＢ内の状態情報にアクセスするのに使用される。たとえば、状態は、バッファがプログラム所有またはアダプタ所有のいずれであるか、およびバッファが出力バッファまたは入力バッファのいずれであるかを示す。
【０１４３】
ストレージ・リスト状態ブロックの絶対アドレスは、ＱＤＩＯキュー確立コマンドによってＱＤＩＯアダプタに供給される。
【０１４４】
５．ストレージ・ブロック・アドレス・リスト（ＳＢＡＬ）５２２：各キューに関連する１２８個の入出力バッファごとに１つのＳＢＡＬが定義される。ＳＢＡＬは、入出力バッファのストレージ・ブロック（ＳＢ）位置に関する情報を提供する。
【０１４５】
ストレージ・ブロック・アドレス・リストに、ストレージ・ブロック・アドレス・リスト項目（ＳＢＡＬＥ）５２４と称する１６個の項目が含まれる。各ＳＢＡＬＥに、ストレージ・ブロック５２６の絶対ストレージ・アドレスが含まれる。集合的に、単一のＳＢＡＬの項目によってアドレッシングされるストレージ・ブロックが、ＱＤＩＯキューの１２８個の可能なＱＤＩＯバッファの１つを構成する。
【０１４６】
一例で、ストレージ・ブロック・アドレス・リストに、下記が含まれる。
【０１４７】
（ａ）フラグ：このフィールドには、ＳＢＡＬＥ内容に関する情報が含まれる。
【０１４８】
（ｂ）仮想化フラグ：ＱＤＩＯ拡張バッファ状態管理解釈機能がインストールされている場合に、このフィールドに、仮想化情報が含まれる。このフィールドに対する変更は、ＱＳＤロックワードの制御の下で直列化されなければならない。一例で、このフィールドのビット０は、ページ・ピン固定インジケータを表す。ビット０が１である場合に、データ・アドレス・フィールドのデータ・アドレスに対応するホスト・ページが、このＳＢＡＬＥの代わりにピン固定される。ビット０が０である場合に、データ・アドレス・フィールドのデータ・アドレスに対応するホスト・ページは、このＳＢＡＬＥの代わりにピン固定されない。
【０１４９】
（ｃ）ＳＢＡＬフラグ（ＳＢＡＬＦ）：このフィールドには、このＳＢＡＬＥに関連するストレージ・ブロックに関する情報だけではなく、このＳＢＡＬＥを含むＳＢＡＬに関連するバッファに関する情報が含まれる。一例で、ビット０は、バッファがプログラム所有状態であるまたは次にそれに戻る場合に、次のＳＱＢＳ動作をそのバッファについて実行する前にそのバッファについてＥＱＢＳ動作を実行しなければならないかどうかを示す。ビット１は、バッファがプログラム所有状態であるまたは次にそれに戻る場合に、そのバッファについて実行される次のＥＱＢＳ動作の一部として、このＳＢＡＬおよび対応するゲストＳＢＡＬを同期化しなければならないかどうかを示す。バッファ同期化には、対応するホストＳＢＡＬＥからのゲストＳＢＡＬＥの更新を含めることができ、ホスト・ページのピン解除も含めることができる。
【０１５０】
（ｄ）データ・カウント：このフィールドには、データ・アドレス・フィールドで指定されるアドレスから始めて読み取られるか書き込まれるデータのバイト数を指定する符号なし２進整数が含まれる。
【０１５１】
（ｅ）データ・アドレス：このフィールドには、書き込まれるデータを含むストレージ・ブロック（出力キュー）の絶対アドレスまたは読み取られるデータ（入力キュー）のアドレスが含まれる。
【０１５２】
６．ストレージ・ブロック（ＳＢ）５２６：集合的に単一の入出力バッファを定義する１個から１６個までの別々のストレージ・ブロック（たとえばページ）が定義される。
【０１５３】
ＱＤＩＯキューに関するさらなる詳細は、２００３年２月１１日発行の米国特許第６５１９６４５号、発明者マルコス（Markos）他、名称「Method And Apparatus For Providing ConfigurationInformation Using A Queued Direct Input-Output Device」および２００２年２月５日発行の米国特許第６３４５２４１号、発明者ブライス（Brice）他、名称「MethodAnd Apparatus For Providing Configuration Information Using A Queued DirectInput-Output Device」に記載されている。これらを参照することができる。
【０１５４】
図３に戻ると、キューの作成の次に、ステップ２３０で、サブチャネルがＱＥＢＳＭをサポートする場合に、ＱＩＢのＱＥＢＳＭ使用可能化ビットをセットして、ＱＥＢＳＭを使用する接続を管理する。
【０１５５】
その後、ステップ２３２で、アダプタ内でＱＤＩＯキューを確立する。一例として、これは、ＱＤＩＯキュー・チャネル・コマンド・ワード確立を伴うサブチャネル開始命令を発行するプログラムによって達成され、この処理の例が、２００１年１２月１８日発行の米国特許第６３３２１７１号、発明者バスケイ（Baskey）他、名称「Self-Contained Queues With Associated ControlInformation For Receipt And Transfer Of Incoming And Outgoing Data Using AQueued Direct Input-Output Device」に記載されている。
【０１５６】
ＱＤＩＯキュー確立コマンドは、キュー記述子レコード（ＱＤＲ）を入出力装置に書き込むのに使用される。入出力装置に関連する制御装置（たとえばアダプタ）は、キュー記述子レコードの情報を使用して、優先順位付きデータ・キューの確立に使用されるＱＤＩＯ制御ブロックを突きとめる。これらのキューは、その後、入出力装置との間でのデータの直接伝送に使用される。
【０１５７】
確立手順は、ステップ２３４で、ホストに、プログラムによって確立されるキューのシャドウＱＤＩＯキューの組をホスト・ストレージ内で作成させる。すなわち、ホストは、たとえばストレージ・リストおよびストレージ・ブロック・アドレス・リストを含む、ＱＤＩＯ制御構造の一部のシャドウ版を作る。また、ＳＬＳＢが、プログラムおよびアダプタの協力プロセスの調整機構としてのその定義のゆえに、アドレスは含まないがホスト・ストレージ内で割り振られる。ＱＤＩＯキュー確立コマンドに関連するキュー記述子レコードに、プログラムによって見られるＱＤＩＯキュー・コンポーネントのメイン・メモリ・アドレスが含まれる。ホストは、キュー記述子レコードのコピー、シャドウＳＬ、およびシャドウＳＢＡＬを作る際に、これらのアドレスならびにＳＬおよびＳＢＡＬ内のアドレスを変換する。ＱＤＲに関連するシャドウイングおよび処理のさらなる詳細は、前述の米国特許に開示されている。
【０１５８】
シャドウ・キューの作成の後に、ＱＥＢＳＭ使用可能化ビットがＱＩＢ内でセットされている場合に、ホストは、ステップ２３６で、ホスト・ストレージ内でＱＤＩＯバッファ情報制御ブロック（ＱＢＩＣＢ）と称する構造を作成して、ゲストおよびホストの両方のシャドウＱＤＩＯキューを計算機にマッピングする。ＱＢＩＣＢには、ゲスト構造およびホスト構造を記述するポインタおよび情報が含まれる。ＱＢＩＣＢは、ＱＤＩＯサブチャネルに関連し、その結果、サブチャネルがＳＱＢＳおよびＥＱＢＳのオペランドとして識別される場合に、下で説明するように、ゲスト構造およびホスト構造を突きとめ、使用できるようになる。ＱＢＩＣＢに関するさらなる詳細を、図１１から１２を参照して説明する。
【０１５９】
ＱＤＩＯバッファ情報制御ブロック（ＱＢＩＣＢ）６００（図１１）には、バッファ・ストレージおよびＱＤＩＯデータ・キュー・セットのバッファ状態に関する情報が含まれ、ＱＢＩＣＢは、バッファ・ストレージおよびバッファ状態を所与のＱＤＩＯサブチャネルに関連付けるのに使用される。ＱＢＩＣＢは、たとえば、ダブルワード境界から始まり、６４バイトの最小長さを有するホスト実ストレージまたはホスト絶対ストレージ内の可変長制御ブロックである。ＱＢＩＣＢのサイズは、そのキュー・カウント・フィールドによって指定される、それが記述するキューの個数（すなわち、それに含まれるキュー記述子の個数）によって決定される。
【０１６０】
一例で、ＱＢＩＣＢ  ６００に、次のフィールドが含まれる。
【０１６１】
（ａ）キュー・フォーマット（ＱＦＭＴ）６０２：このフィールドには、キュー記述子のフォーマットおよびキュー記述子の内容によってアドレッシングされる制御ブロックのフォーマットを識別する符号なし２進整数コード値が含まれる。例として、フォーマット０は、ＯＳＡダイレクト・エクスプレス・キュー（direct express queue）を示し、フォーマット１は、ファイバ・チャネル・プロトコル（ＦＣＰ）キューを示し、フォーマット２は、内部待機直接通信キューを示す。
【０１６２】
（ｂ）キュー・カウント（ＱＣＮＴ）６０４：このフィールドには、このＱＢＩＣＢによって記述される入力キューおよび出力キューの総数を指定する符号なし整数が含まれる。
【０１６３】
（ｃ）サブシステムＩＤ  ６０６：このフィールドには、このＱＢＩＣＢに関連するＱＤＩＯサブチャネルのサブシステムＩＤが含まれる。
【０１６４】
（ｄ）キュー記述子６０８：キュー記述子は、たとえば、１６バイトの構造であり、一実施形態で、ＱＢＩＣＢに６４個までのキュー記述子を含めることができる。各キュー記述子に、１つのＱＤＩＯ入力キューまたはＱＤＩＯ出力キューのバッファ状態およびバッファ・データ・ストレージを記述するのに使用されるキュー・ストレージ記述子のアドレスが含まれる。
【０１６５】
入力キューのキュー記述子がある場合に、これらは連続的にリストされる。出力キューのキュー記述子がある場合に、これらは、入力キューのキュー記述子のリストに続いて、連続的にリストされる。ＱＣＮＴフィールドの値によって、キュー記述子の総数が指定される。
【０１６６】
ＱＢＩＣＢキュー記述子に、キュー・ストレージ記述子原点フィールドが含まれ、その右に７つの０を付加されたこのフィールドは、対応するキューのキュー・ストレージ記述子の６４ビットのホスト実アドレスまたはホスト絶対アドレスを指定する。
【０１６７】
キュー・ストレージ記述子は、たとえば、対応するキューのホスト・バッファ・ストレージおよびゲスト・バッファ・ストレージに関する情報を含む１２８バイトの構造である。一例で、キュー・ストレージ記述子６２０（図１２）に、次のフィールドが含まれる。
【０１６８】
（ａ）ロックワード６２２：ロックワード・フィールドは、たとえば、キュー・ストレージ記述子およびアクティブ要求ヘッドＦＯＢリスト（下で説明する）のインターロック・コントロールである３２ビット・フィールドである。ロックワード値は、事前定義の値に応じて、次の意味の１つを有することができる。使用可能：このロックに関連する構造は、計算機またはホストによる使用に使用可能である。計算機のためにロック済み：計算機が、関連する構造のロックおよび所有権を入手している。計算機によりホストのためにロック済み：計算機が、ホストからのサービスを必要とする状況に出会い、ロックおよび関連する構造の所有権をホストに転送した。ホストによりホストのためにロック済み：ホストが、関連する構造のロックおよび所有権を入手している。
【０１６９】
（ｂ）キュー・フラグ（ＱＦｌａｇｓ）６２４：このフィールドには、たとえば、８ビット・フラグ・フィールドが含まれる。フラグの例に、下記が含まれる。
【０１７０】
ビット  意味
０  キュー／バッファ・タイプ：ビット０が０の場合に、キューは入力キューである。ビット０が１の場合に、キューは出力キューである。
１  保留中要求コンポーネントＦＯＢリスト完了：ビット１が１の場合に、最初のアクティブ要求ヘッドＦＯＢアドレス・フィールドによって識別されるＦＯＢは、要求コンポーネントＦＯＢリストが不完全であり、まだ構成中の複数バッファ要求のヘッドＦＯＢである。
【０１７１】
（ｃ）ＳＬＳＢアドレス６２６：このフィールドには、対応するキューに関連するストレージ・リスト状態ブロック（ＳＬＳＢ）のホスト実アドレスまたはホスト絶対アドレスが含まれる。
【０１７２】
（ｄ）ホストＳＬアドレス６２８：このフィールドには、対応するキューに関連するホスト・ストレージ・リスト（ＳＬ）のホスト実アドレスまたはホスト絶対アドレスが含まれる。このアドレスによって指定されるＳＬは、アダプタによって観察可能である。
【０１７３】
（ｅ）ゲストＳＬアドレス６３０：このフィールドには、対応するキューに関連するゲスト・ストレージ・リスト（ＳＬ）のゲスト絶対アドレスが含まれる。このアドレスによって指定されるＳＬは、アダプタによって観察可能でない。
【０１７４】
（ｆ）ゲストＳＬＳＬアドレス６３２：このフィールドには、対応するキューに関連するストレージ・リスト状態ログアウト（ＳＬＳＬ）区域のゲスト絶対アドレスが含まれる。
【０１７５】
（ｇ）状態推移カウント６３４：このフィールドには、ＱＤＩＯバッファ状態抽出命令を介してプログラムによって観察されたアダプタ所有状態からプログラム所有状態へのバッファ状態推移の回数の符号なし整数カウントが含まれる。
【０１７６】
（ｈ）バイト転送カウント６３６：このフィールドには、アダプタによって転送されたバイト数の符号なし整数カウントが含まれる。ファイバ・チャネル・プロトコル（ＦＣＰ）キューの場合に、バイト転送カウントは、実際に転送されたバイトのカウントではない。そうではなく、バイト転送カウントは、転送を指定されたバイトのカウントである。
【０１７７】
（ｉ）第１アクティブ要求ヘッドＦＣＰ動作ブロック（ＦＯＢ）アドレス６３８：キューがフォーマット１キュー（すなわちＦＣＰ）であることをＱＢＩＣＢのＱＦＭＴフィールドが指定し、右に８つの０を付加されたこのフィールドの事前定義のビットが、例としてこのフィールドの第１バイトのホスト実アドレスまたはホスト絶対アドレスを形成しない場合に、右に８つの０を付加されたこのフィールドの事前定義のビットが、アクティブであるＦＣＰ要求のリストの最初のＦＣＰ要求のヘッドＦＯＢのホスト実アドレスまたはホスト絶対アドレスを形成する（すなわち、アクティブ要求ヘッドＦＯＢリストの最初のＦＣＰ要求のヘッドＦＯＢのアドレス）。キューがフォーマット１キューであることをＱＢＩＣＢのＱＦＭＴフィールドが指定し、８つの０を右に付加された事前定義のビットが、例としてこのフィールドの最初のバイトのホスト実アドレスまたはホスト絶対アドレスを形成する場合には、アクティブＦＣＰ要求がなく、アクティブ要求ヘッドＦＯＢリストは空である。
【０１７８】
（ｊ）最終アクティブ要求ヘッドＦＯＢアドレス６４０：キューがフォーマット１キューであることをＱＢＩＣＢのＱＦＭＴフィールドが指定し、右に８つの０を付加されたこのフィールドの事前定義のビットが、例としてフィールド６３８の第１バイトのホスト実アドレスまたはホスト絶対アドレスを形成しない場合に、右に８つの０を付加されたこのフィールドの事前定義のビットが、アクティブであるＦＣＰ要求のリストの最後のＦＣＰ要求のヘッドＦＯＢの６４ビットのホスト実アドレスまたはホスト絶対アドレスを形成する（すなわち、アクティブ要求ヘッドＦＯＢリストの最後のＦＣＰ要求のヘッドＦＯＢのアドレス）。キューがフォーマット１キューであることをＱＢＩＣＢのＱＦＭＴフィールドが指定し、例として右に８つの０を付加されたこのフィールドの事前定義のビットが、フィールド６３８の第１バイトのホスト実アドレスまたはホスト絶対アドレスを形成する場合には、アクティブＦＣＰ要求はなく、アクティブ要求ヘッドＦＯＢリストは空である。
【０１７９】
ファイバ・チャネル・プロトコル動作ブロック（ＦＯＢ）は、ＦＣＰ入出力動作の持続時間の間ホスト・ページ・フレームにピン固定される、たとえば１６個までのホスト・ページを記述する。一例で、ＦＣＰ動作ブロック（ＦＯＢ）６４８（図１３）に、次のフィールドが含まれる。
【０１８０】
（ａ）次要求ヘッドＦＯＢアドレス６５０：このＦＯＢが、アクティブ要求のヘッドＦＯＢである場合に、右に８つの０を付加されたこのフィールドが、アクティブ要求ヘッドＦＯＢリストの次のＦＣＰ要求のヘッドＦＯＢのホスト実アドレスまたはホスト絶対アドレス、またはこのＦＯＢがアクティブ要求ヘッドＦＯＢリストの最後のヘッドＦＯＢである場合にＱＳＤ内の最初のアクティブ要求ヘッドＦＯＢアドレス・フィールドのホスト実アドレスまたはホスト絶対アドレスを形成する。このＦＯＢが、使用可能ＦＯＢリストにあり、このフィールドが０でない場合に、右に８つの０を付加されたこのフィールドが、使用可能ＦＯＢリストの次のＦＯＢのホスト実アドレスまたはホスト絶対アドレスを形成する。このＦＯＢが、使用可能ＦＯＢリストにあり、このフィールドが０である場合に、このＦＯＢは、使用可能ＦＯＢリストの最後のＦＯＢである。このＦＯＢが、ヘッドＦＯＢ以外の要求コンポーネントＦＯＢである場合には、このフィールドの内容は無意味である。
【０１８１】
（ｂ）前要求ヘッドＦＯＢアドレス６５２：このＦＯＢがアクティブ要求のヘッドＦＯＢである場合に、右に８つの０を付加されたこのフィールドが、アクティブ要求ヘッドＦＯＢリストの前のＦＣＰ要求のヘッドＦＯＢのホスト実アドレスまたはホスト絶対アドレス、またはこのＦＯＢがアクティブ要求ヘッドＦＯＢリストの最初のヘッドＦＯＢである場合にＱＳＤ内の最初のアクティブ要求ヘッドＦＯＢアドレス・フィールドのホスト実アドレスまたはホスト絶対アドレスを形成する。このＦＯＢが使用可能ＦＯＢリストにあるか、ヘッドＦＯＢ以外の要求コンポーネントＦＯＢである場合には、このフィールドの内容は無意味である。
【０１８２】
（ｃ）次要求コンポーネントＦＯＢアドレス６５４：このＦＯＢが要求コンポーネントＦＯＢであり、このフィールドが０でない場合に、右に８つの０を付加されたこのフィールドが、要求コンポーネントＦＯＢリストの次のＦＯＢのホスト実アドレスまたはホスト絶対アドレスを形成する。このＦＯＢが要求コンポーネントＦＯＢであり、このフィールドが０である場合には、このＦＯＢは、要求コンポーネントＦＯＢリストの最後のまたは唯一のＦＯＢである。
【０１８３】
（ｄ）キュー・ストレージ記述子（ＱＳＤ）アドレス６５６：このＦＯＢがヘッドＦＯＢである場合に、７つの０を右に付加されたこのフィールドが、要求のヘッドＦＯＢが待機している出力キューのキュー・ストレージ記述子のホスト実アドレスまたはホスト絶対アドレスを形成する。
【０１８４】
（ｅ）ＱＤＩＯバッファ情報制御ブロック（ＱＢＩＣＢ）アドレス６５８：このＦＯＢがヘッドＦＯＢである場合に、３つの０を右に付加されたこのフィールドが、ＦＣＰ動作がアクティブであるサブチャネルに関連するＱＤＩＯバッファ情報制御ブロックのホスト実アドレスまたはホスト絶対アドレスを形成する。
【０１８５】
（ｆ）ゲスト要求ＩＤ６６０：このＦＯＢがヘッドＦＯＢである場合に、このフィールドに、ゲストによってそのＳＢＡＬで指定されるＦＣＰ要求ｉｄが含まれる。
【０１８６】
（ｇ）フラグ６６２：このＦＯＢがヘッドＦＯＢである場合に、このフィールドに、たとえば８ビット・フラグ・フィールドが含まれる。ビットおよびその意味の例に、たとえば下記が含まれる。
【０１８７】
１）ビット０−要求アクティブ：ビット０は、ヘッドＦＯＢがアクティブ要求ヘッドＦＯＢリストにあり、アクティブＦＣＰ要求を表すことを示す。
【０１８８】
２）ビット１−構成完了：ビット１は、ＦＣＰ要求を含むバッファが処理され、ＦＣＰ要求の構成が完了したことを示す。
【０１８９】
３）ビット２−要求ＩＤポスト済み：ビット２は、アダプタがこの要求ＦＣＰ要求識別子をポストしたことを示す。
【０１９０】
４）ビット３から４−ストレージ・ブロック・タイプ：ビット３から４は、このＦＯＢおよび対応するＳＢＡＬによって記述されるフォーマット１出力バッファのストレージ・ブロック・タイプを指定する。ビット３から４は、対応するＳＢＡＬのＳＢＡＬＦ  ０フィールドのビット３から４と同一の値および同一の意味を有する。
【０１９１】
（ｈ）ページ・テーブル項目（ＰＴＥ）カウント（ＰＴＥＣＮＴ）６６４：このフィールドには、意味のあるＰＴＥアドレス・アレイ項目のカウントが含まれる。
【０１９２】
（ｉ）ＰＴＥアドレス６６６：このフィールドには、０個から１６個までのＰＴＥアドレス・フィールドのアレイが含まれる。右に３つの０を付加された各ＰＴＥアドレス・フィールドのビットは、ＦＯＢが関係する要求のためにピン固定されたＰＴＥのホスト実アドレスまたはホスト絶対アドレスを形成する。
【０１９３】
ＦＯＢを互いにリンクして、さまざまなリストを形成することができる。リストの１つが、使用可能ＦＯＢリストである。ＦＯＢが、ホストによって割り振られ、ＱＤＩＯ動作に使用されていない場合に、そのＦＯＢは、使用可能ＦＯＢリスト（ＡＦＯＢＬ）にある。一例で、別々の使用可能ＦＯＢリストが、プロセッサごとに設けられる。使用可能ＦＯＢリストにあるＦＯＢは、次要求ヘッドＦＯＢアドレス・フィールドを使用して単一方向にリンクされる。リストの最後の項目は、次要求ヘッドＦＯＢアドレス・フィールドの０の値によって指定される。使用可能ＦＯＢリストの原点および使用可能ＦＯＢリスト内のＦＯＢのカウントは、ＣＰＵプリフィックス区域内のフィールドによって指定される。
【０１９４】
もう１つのリストが、単一のアクティブＦＣＰ要求を含む１つまたは複数のＦＯＢを含む要求コンポーネントＦＯＢリストである。要求コンポーネントＦＯＢリスト内のＦＯＢの数は、ＦＣＰ要求のＳＢＡＬの個数に対応する。要求コンポーネントＦＯＢリストの最初のＦＯＢは、ヘッドＦＯＢであり、アクティブ要求ヘッドＦＯＢリスト内のアクティブ要求の存在を表すのに使用される。
【０１９５】
単一ＳＢＡＬ（すなわち単一バッファ）ＦＣＰ要求に関して、要求コンポーネント・リストは、ヘッドＦＯＢからなる。ヘッドＦＯＢは、構成された後に、アクティブ要求ヘッドＦＯＢリストの先頭に置かれ、ＦＯＢのフラグ・フィールドの構成完了インジケータおよび要求アクティブ・インジケータの両方に１がセットされて、ＦＣＰ要求全体の構成が完了し、要求がアクティブであることが示される。
【０１９６】
複数ＳＢＡＬ（すなわち複数バッファ）ＦＣＰ要求の場合に、１つのＦＯＢが、要求を含む各ＳＢＡＬに対応して構成される。最初に構成されるＦＯＢが、ヘッドＦＯＢになる。ヘッドＦＯＢは、アクティブ要求ヘッドＦＯＢリストの先頭に追加され、構成された後に、そのＦＯＢのフラグ・フィールドの要求アクティブ・ビットに１がセットされて、要求がアクティブであることが示される。残りの要求コンポーネントＦＯＢのリストのアンカは、ヘッドＦＯＢにある。
【０１９７】
残りのＦＯＢは、要求コンポーネントＦＯＢリストに追加され、ヘッドＦＯＢから始めて、次要求コンポーネントＦＯＢアドレス・フィールドを使用して単一方向にリンクされる。リストの最後のＦＯＢは、次要求コンポーネントＦＯＢアドレス・フィールドの０の値によって指定される。最後のＦＯＢがリストに追加された後に、ヘッドＦＯＢのフラグ・フィールドの構成完了インジケータに１がセットされて、ＦＣＰ要求全体の構成が完了し、要求がアクティブであることが示される。
【０１９８】
ヘッドＦＯＢを含む要求コンポーネントＦＯＢリストのＦＯＢは、要求コンポーネントＦＯＢとみなされる。
【０１９９】
もう１つのリストが、アクティブ要求ヘッドＦＯＢリストである。ＦＣＰ要求がアクティブである場合に、要求のヘッドＦＯＢが、アクティブ要求ヘッドＦＯＢリストにある。アクティブ要求ヘッドＦＯＢリストは、次要求ヘッドＦＯＢアドレス・フィールドおよび前要求ヘッドＦＯＢアドレス・フィールドを使用して二重リンクされる。アクティブ要求ヘッドＦＯＢリストのアンカは、キューのキュー・ストレージ記述子の第１アクティブ要求ヘッドＦＯＢアドレス・フィールドおよび最終アクティブ要求ヘッドＦＯＢアドレス・フィールドである。このリストの最初の項目は、ヘッドＦＯＢの前要求ヘッドＦＯＢアドレス・フィールド内のキュー・ストレージ記述子の第１アクティブ要求ヘッドＦＯＢアドレス・フィールドのアドレスの値と、キュー・ストレージ記述子の第１アクティブ要求ヘッドＦＯＢアドレス内の第１項目のヘッドＦＯＢのアドレスの値とによって指定される。このリストの最後の項目は、ヘッドＦＯＢ次要求ヘッドＦＯＢアドレス・フィールド内のキュー・ストレージ記述子の第１アクティブ要求ヘッドＦＯＢアドレス・フィールドのアドレスの値と、キュー記述子の最終アクティブ要求ヘッドＦＯＢアドレス内の最後の項目のヘッドＦＯＢのアドレスの値とによって指定される。
【０２００】
図３に戻って、ＱＢＩＣＢの作成の後に、ステップ２３８で、ＱＤＩＯキュー・チャネル・コマンド・ワード確立を伴うサブチャネル開始命令が、ホストによって計算機に発行されて、確立される接続のシャドウＱＤＩＯキューの位置についてアダプタに知らせる。計算機は、ステップ２４０でＱＤＩＯキュー確立コマンドをアダプタに送り、ステップ２４２（図４）で、ホストが動作の完了を待つ。計算機は、ステップ２４４で入出力完了割込みを発行し、これが、ホストによって受け取られ、ホストは、ステップ２４６で仮想入出力完了割込みを反射する。ステップ２４８で、ＱＤＩＯキュー確立コマンドの入出力完了割込みが、プログラム２００によって受け取られる。
【０２０１】
その後、プログラムは、ステップ２５０で、ＱＥＢＳＭ接続のサブチャネル・トークンおよび必要な（または所望の）ＳＩＧＡのタイプを取り出して、この接続を管理する。一例で、これは、上で説明したＣＨＳＣサブチャネルＱＤＩＯデータ・ストア・コマンドを発行することによって実行される。
【０２０２】
ステップ２５２で、ホストは、ＱＢＩＣＢをサブチャネルに関連付ける。一例では、この関連付けが、チャネル・サブシステム特性セット・コマンドを発行することによって実行される。ＣＨＳＣチャネル・サブシステム特性セット・コマンドは、このコマンドのコマンド要求ブロックの動作コードに基づいて、選択されたチャネル・サブシステム・コントロールをセットする。
【０２０３】
コマンド要求ブロック７００の一例を、図１４を参照して説明する。この要求ブロックには、たとえば下記が含まれる。
【０２０４】
（ａ）長さフィールド７０２：このフィールドは、このコマンド要求ブロックの長さを指定する。
【０２０５】
（ｂ）コマンド・コード７０４：このフィールドは、チャネル・サブシステム特性セット・コマンドを指定する。
【０２０６】
（ｃ）動作コード（ＯＣ）７０６：このフィールドには、実行される動作を指定する値が含まれる。一例として、０のＯＣは、アダプタ装置コントロール・セット動作を指定する。アダプタ装置コントロール・セット動作の実行は、指定されたアダプタ装置コントロールが使用可能にされ、指定されたサブチャネルについてセットされるか、サブチャネルについて使用不能にされることを必要とする。アダプタ装置コントロールは、たとえば下記である。
・装置状態変化インジケータのアドレス
・装置状態変化インジケータのストレージ保護キー
・アダプタ・ローカル・サマリ・インジケータのアドレス
・アダプタ・ローカル・サマリ・インジケータのストレージ保護キー
・割込みサブクラス・コード
・ゲスト割込みサブクラス・コード
・ＱＢＩＣＢの原点
【０２０７】
（ｄ）フォーマット（ＦＭＴ）７０８：コマンド要求フォーマット・フィールドには、コマンド要求ブロックのレイアウトを指定する値を有する符号なし整数が含まれる。このフィールドの値の一例が、０である。
【０２０８】
（ｅ）動作データ区域７１０：コマンド要求ブロックのこの区域は、動作が使用することができる。動作データ区域のデータのフォーマットは、各動作コードに固有である。
【０２０９】
一例として、アダプタ装置コントロール・セット動作の動作データ区域に、たとえば、図１５を参照して説明する次のフィールドが含まれる。
【０２１０】
（ａ）アダプタ・ローカル・サマリ・インジケータ（ＡＬＳＩ）アドレス７２０：このフィールドには、指定されたサブチャネルのストレージ内のアダプタ・ローカル・サマリ・インジケータ・バイトの絶対アドレスが含まれる。
【０２１１】
（ｂ）装置状態変更インジケータ（ＤＳＣＩ）アドレス７２２：このフィールドには、指定されたサブチャネルのストレージ内の装置状態変更インジケータ・バイトの絶対アドレスが含まれる。
【０２１２】
（ｃ）アダプタ・ローカル・サマリ・インジケータ・キー（ＫＳ）７２４：このフィールドには、指定されたサブチャネルのアダプタ・ローカル・サマリ・インジケータ・バイトにアクセスするのに使用されるストレージ・アクセス・キーが含まれる。
【０２１３】
（ｄ）装置状態変更インジケータ・キー（ＫＣ）７２６：このフィールドには、指定されたサブチャネルの装置状態変更インジケータ・バイトにアクセスするのに使用されるストレージ・アクセス・キーが含まれる。
【０２１４】
（ｅ）割込みサブクラス・コード（ＩＳ）７３２：このフィールドには、アダプタ割込みの使用可能化を制御するのに使用される割込みサブクラス・コードを指定する符号なし整数が含まれる。
【０２１５】
（ｆ）サブシステム識別（ＳＩＤ）７３４：このフィールドには、アダプタ・ローカル・サマリ・インジケータ・アドレスおよび装置状態変更インジケータ・アドレスがセットされているサブチャネルを識別するサブシステムＩＤを指定する符号なし整数が含まれる。
【０２１６】
（ｇ）ＱＤＩＯバッファ情報制御ブロック（ＱＢＩＣＢ）原点７３６：このフィールドは、ＱＢＩＣＢの絶対アドレスを形成するのに使用される。このフィールドが、０でない有効なアドレスを指定し、ＱＢＩＣＢが、４Ｋバイト境界をまたがないように指定される場合に、指定されたＱＢＩＣＢは、指定されたサブチャネルに関連し、そのサブチャネルは、ＱＤＩＯ拡張バッファ状態管理解釈について使用可能にされる。このフィールドに０が含まれ、指定されたサブチャネルがＱＢＩＣＢに関連する場合に、そのサブチャネルは、ＱＢＩＣＢとの関連付けを解除され、そのサブチャネルは、ＱＤＩＯ拡張バッファ状態管理解釈について使用不能にされる。このフィールドに無効なアドレスが含まれる場合に、応答コードを保管することができる。このフィールドが０でない有効なアドレスを指定し、ＱＢＩＣＢが４Ｋバイト境界をまたいで指定される場合に、ＱＢＩＣＢ指定は無効であり、応答コードを保管することができる。
【０２１７】
有効な非０のＱＢＩＣＢ原点が、動作データ区域で供給される場合に、装置は、さらに、指定されたＱＢＩＣＢに関連付けられ、ＱＤＩＯ拡張バッファ状態管理解釈について使用可能にされる。０のＱＢＩＣＢ原点が動作データ区域で供給される場合に、装置がＱＢＩＣＢに関連するならば、その装置は、そのＱＢＩＣＢとの関連付けを解除される。
【０２１８】
チャネル・サブシステム特性セット・コマンドのコマンド応答ブロック７４０の一例を、図１６を参照して説明する。応答ブロックには、たとえば下記が含まれる。
【０２１９】
（ａ）長さフィールド７４２：このフィールドは、このコマンド応答ブロックの長さを指定する。
【０２２０】
（ｂ）応答コード７４４：このフィールドには、チャネル・サブシステム特性セット・コマンドを実行する試みの結果を記述する符号なし整数が含まれる。
【０２２１】
成功の応答コードは、指定されたチャネル・サブシステム特性が、コマンド要求ブロックの動作コードおよび動作データ区域によって決定される通りにセットされたことを示す。成功以外の応答コードが保管される場合には、コマンドが抑止され、指定されたチャネル・サブシステム特性は、セットされていない。
【０２２２】
（ｃ）フォーマット７４６：このフィールドには、コマンド応答ブロックのレイアウトを指定する値を有する符号なし整数が含まれる。
【０２２３】
図４に戻ると、ステップ２５４で、計算機が、チャネル・サブシステム特性セット・コマンドを処理し、情報が、ホストに返される。
【０２２４】
さらに、ホストは、ステップ２５６で、プログラムによって要求された最新のＱＤＩＯ特性を取り出す。一例では、これが、上で説明したサブチャネルＱＤＩＯデータ・ストア・コマンドを使用して実行される。サブチャネルＱＤＩＯデータ・ストア命令は、ステップ２５８で計算機によって処理され、情報がホストに返される。
【０２２５】
ホストは、ステップ２６０で、ＱＥＢＳＭが使用可能にされていることを示し、プログラムのＣＨＳＣ応答データで、サブチャネル・トークンおよび要求されたＳＩＧＡとしてＱＢＩＣＢのホスト絶対アドレスを返す。プログラムは、ステップ２６２で、サブチャネル・トークンおよび接続の特性を受け取る。
【０２２６】
その後、プログラムは、ステップ２６４で、返されたサブチャネル・トークンと共にＳＱＢＳ命令を使用して、ＱＤＩＯバッファを適当な開始状態に初期化する。下で説明するＳＱＢＳ命令は、ステップ２６６で、計算機によって処理され、情報がプログラムに返される。
【０２２７】
さらに、ステップ２６８で、ＱＤＩＯキュー・チャネル・コマンド・ワード・アクティブ化を伴うサブチャネル開始が、プログラムによって発行されて、データ転送のためにキューがアクティブ化される。このコマンドに関連する処理の一例が、２００１年１２月１８日発行の米国特許第６３３２１７１号、発明者バスケイ（Baskey）他、名称「Self-Contained Queues With Associated ControlInformation For Receipt And Transfer Of Incoming And Outgoing Data Using AQueued Direct Input-Output Device」に開示されている。ホストは、このサブチャネル開始命令を受け取り、ステップ２７０で、ＱＤＩＯキュー・チャネル・コマンド・ワード・アクティブ化を伴うサブチャネル開始を発行して、データ転送のためにキューをアクティブ化するようにアダプタに知らせる。次に、ステップ２７２で、計算機が、ＱＤＩＯキュー・アクティブ化をアダプタに送る。その要求が開始される時に、ステップ２７４でＱＤＩＯデータ転送を開始することができる。
【０２２８】
ＱＤＩＯデータ転送の一部として、ゲスト・プログラムは、ＱＤＩＯバッファ状態を管理する。これを行うために、本発明の態様に従って、２つの命令が実装された。一方の命令は、ＱＤＩＯバッファ状態セット（ＳＱＢＳ）命令と称し、他方の命令は、ＱＤＩＯバッファ状態抽出（ＥＱＢＳ）命令と称する。これらの命令を用いると、Ｖ＝Ｖ仮想計算機（ゲスト）ＱＤＩＯキューをこれらのキューのホスト・シャドウ・コピーと動的に同期化できるようになる。動的キュー同期化は、ホスト介入なしで、ゲスト実行中に計算機によって実行される。したがって、ゲストによるＱＤＩＯバッファ状態セット命令およびＱＤＩＯバッファ状態抽出命令の使用によって、ゲストＱＩＤＯキューとホスト・シャドウＱＤＩＯキューを同期させるために、従来生じていたコンテキスト切替オーバーヘッドがなくなる。
【０２２９】
ＱＤＩＯバッファ状態セット命令の使用の一実施形態を、図１７から１９を参照して説明する。ＱＤＩＯバッファ状態セット命令を呼び出す前に、ある初期化が行われる。たとえば、ホストは、ステップ８００（図１７）で、たとえば処理済みフレーム記述子リストのフレームの除去および処理を含む、さまざまなクリーンアップ・タスクを実行する。
【０２３０】
処理済みフレーム記述子リスト（ＰＦＤＬ）は、ゲスト解釈中にホスト・ページ無効状態を解決するのに使用されたホスト・ページ・フレームを記述するフレーム記述子のリストである。ＰＦＤＬによって記述されるホスト・ページ・フレームは、ストレージをゲストに提供するホスト・ページに割り当てられたものである。ＰＦＤＬは、指定されたホスト実アドレスのＰＦＤＬ原点（ＰＦＤＬＯ）によって指定される。右に５つの０を付加されたＰＦＤＬＯの内容が、ＰＦＤＬの最初のフレーム記述子のホスト・ホーム空間仮想アドレスを指定する。０の値は、リストが空であることを示す。
【０２３１】
ＰＦＤＬＯは、ホストによって初期化され、ホストまたはホスト・ページ管理補助機能（本明細書で説明する）によって変更することができる。ＰＦＤＬＯは、一実施形態で、リストの保全性を維持するダブルワード並列インターロック更新動作によって変更される。
【０２３２】
フレーム記述子は、ホスト・ページ・フレームを記述し、複数のフレーム記述子を互いにリンクして、ＰＦＤＬまたは使用可能フレーム記述子リスト（ＡＦＤＬ）などのリストを形成することができる。フレーム記述子は、ホストによって割り振られ、割振り解除され、初期化され、ホスト・ページ管理補助機能（本明細書で説明する）によって更新することができる。一例で、フレーム記述子９００（図２０）は、たとえば、ホスト・ホーム空間仮想ストレージの３２バイト境界にある３２バイト・ブロックであり、次のフィールドが含まれる。
【０２３３】
（ａ）次フレーム記述子アドレス９０２：一例で、右に５つの０を付加されたこのフィールドの内容が、リストの次のフレーム記述子のホスト・ホーム空間仮想アドレスを指定する。０の値は、このフレーム記述子がリストの最後のフレーム記述子であることを示す。
【０２３４】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理補助機能によって変更することができる。
【０２３５】
（ｂ）ページ・フレーム実アドレスまたはＰＴＥコピー９０４：フレーム記述子が、使用可能フレーム記述子リスト（ＡＦＤＬ）にある場合に、右に１２個の０を付加されたこのフィールドの内容が、ホスト・ストレージを提供するための割振りに使用可能なホスト・ページ・フレームの最初のバイト（バイト０）のホスト実アドレスを指定する。
【０２３６】
フレーム記述子が、処理済みフレーム記述子リスト（ＰＦＤＬ）にある場合に、このフィールドに、ホスト・ページが解決される前の、ページ・テーブル項目アドレス・フィールドによって指定されるページ・テーブル項目（ＰＴＥ）のコピーが含まれる。
【０２３７】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理補助機能によって変更することができる。
【０２３８】
（ｃ）ページ・テーブル項目アドレス９０６：フレーム記述子が、処理済みフレーム記述子リストにある場合に、右に３個の０を付加されたこのフィールドの内容が、ホスト仮想ページのページ・テーブル項目のホスト実アドレスまたはホスト絶対アドレスを指定する。
【０２３９】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理補助機能によって変更することができる。
【０２４０】
図１７に戻って、クリーンアップの実行に加えて、ホストは、ステップ８０２で、ホスト・ストレージに関する次の複数の要求をサービスするのに十分なフレームが、使用可能フレーム記述子リストにあるようにする。使用可能フレーム記述子リスト（ＡＦＤＬ）は、ホストがホスト・ページ割振りに使用可能にしたホスト・フレームを記述するフレーム記述子のリストである。ＡＦＤＬは、指定されたホスト実アドレスのＡＦＤＬ原点（ＡＦＤＬＯ）によって指定される。
【０２４１】
右に５つの０を付加されたＡＦＤＬＯの内容は、ＡＦＤＬの最初のフレーム記述子のホスト・ホーム空間仮想アドレスを指定する。０の値は、そのリストが空であることを示す。
【０２４２】
ＡＦＤＬＯは、ホストによって初期化され、ホストによってまたはホスト・ページ管理補助機能によって変更することができる。ＡＦＤＬＯは、非インターロック更新動作によって変更される。
【０２４３】
フレーム記述子は、２つのリストすなわち、処理済みフレーム記述子リスト（ＰＦＤＬ）または使用可能フレーム記述子リスト（ＡＦＤＬ）のいずれかに存在する。このリストの別々の対が、ＣＰＵごとに設けられる。あるＣＰＵのＡＦＤＬおよびＰＦＤＬの原点は、そのＣＰＵのプレフィックス区域のフィールドによって指定される。
【０２４４】
その後、ホストは、ステップ８０４でプログラムの解釈実行を開始（ＳＩＥ）することができる。解釈実行開始に応答して、プログラムが、実行を開始し、実行中に、ステップ８０６で、次にアダプタに転送されるＱＤＩＯバッファを選択する。プログラムは、ステップ８０８で、データ転送に使用されるストレージ・ブロックのプログラム絶対アドレスをＳＢＡＬに書き込む。さらに、プログラムは、ステップ８１０で、ＱＤＩＯバッファの状態をプログラム所有からアダプタ所有に変更するＱＤＩＯバッファ状態セット命令を発行することによって、バッファの所有権をアダプタに転送する。ＱＤＩＯバッファ状態セット命令のフォーマットの一例を、図２１を参照して説明する。ＱＤＩＯバッファ状態セット命令１０００には、この例では分離動作コードである、ＱＤＩＯバッファ状態セット命令を指定する動作コード１００２と、Ｒ１およびＲ３などの複数の汎用レジスタ１００４と、Ｂ２、ＤＬ２、およびＤＨ２によって指定される第２オペランド１００６が含まれる。
【０２４５】
ＱＤＩＯバッファ状態セット命令を用いると、Ｒ１フィールドおよびＲ３フィールドによって指定される汎用レジスタによって指定される１つまたは複数のＱＤＩＯ入力キューまたは出力キューの状態に、第２オペランドによって指定される状態がセットされる。動作は、指定されたバッファ状態がセットされるまで、またはＣＰＵ判定の個数のバッファ状態がセットされるまで（いずれか早い方が発生するまで）進行する。結果が、条件コードで示される。
【０２４６】
汎用レジスタ１に、ＱＤＩＯ拡張バッファ状態管理（ＱＥＢＳＭ）に使用可能にされ、１つまたは複数のバッファ状態をセットされるＱＤＩＯサブチャネルを指定するサブチャネル・トークンが含まれる（サブチャネル・トークンは、ＱＤＩＯサブチャネルがＱＥＢＳＭに使用可能にされた後に、ＣＨＳＣサブチャネルＱＤＩＯデータ・ストア・コマンドを介して入手される）。
【０２４７】
Ｒ１フィールドによって指定される汎用レジスタに、状態をセットされるＱＤＩＯキューおよび最初のバッファの指定が含まれる。命令が発行される時に、Ｒ１フィールドによって指定される汎用レジスタに、下記のフィールドが含まれる。
【０２４８】
（ａ）キュー・インデックス（ＱＩＸ）：このフィールドには、状態をセットされるバッファを含むキューを指定する符号なし整数インデックス値が含まれる。キューが入力キューである場合には、キュー・インデックスは、そのキューの入力キュー番号と等しい。キューが出力キューである場合には、キュー・インデックスは、そのキューの出力キュー番号と確立された入力キューの総数の合計と等しい。このフィールドの値は、既存のキューを指定しなければならず（すなわち、キュー・インデックス値は、確立された入力キューの総数と確立された出力キューの総数の合計を超えてはならない）、そうでなければ、一例では条件コードおよび条件コード修飾子がセットされる。
【０２４９】
（ｂ）バッファ番号（ＢＮＵＭ）：このフィールドには、状態をセットされる最初のバッファの番号を指定する符号なし整数が含まれる。
【０２５０】
Ｒ３フィールドによって指定される汎用レジスタに、状態がセットされるバッファの個数のカウントが含まれる。Ｒ３レジスタには、命令が完了する時に条件コードをセットすることと共にセットされる条件コード修飾子も含まれる。命令が発行される時に、Ｒ３フィールドによって指定される汎用レジスタに、次のフィールドが含まれる。
【０２５１】
（ａ）条件コード修飾子（ＣＣＱ）：命令が発行される時には、このフィールドの内容は意味を持たない。命令が完了した時に、このフィールドに、条件コードがセットされる場合にセットされる条件コード修飾子（ＣＣＱ）が含まれる。次のリストに、可能なＣＣＱが含まれる。
【０２５２】
・指定されたバッファのすべてがセットされた。
【０２５３】
・現在指定されているバッファは、アダプタ所有状態である。このバッファの状態は変更されない。
【０２５４】
・現在指定されているバッファ状態は、状態が最後にアダプタ所有からプログラム所有状態に変更された時以降にＱＤＩＯバッファ状態抽出命令によって抽出されていない。このバッファの状態は変更されない。
【０２５５】
・現在指定されているキューのストレージ・リスト（ＳＬ）のアドレスが、無効である。
【０２５６】
・現在指定されているバッファのストレージ・バッファ・アドレス・リスト（ＳＢＡＬ）のアドレスが、無効である。
【０２５７】
・現在指定されているバッファのストレージ・ブロック（ＳＢ）のアドレスが、無効である。
【０２５８】
指定されたバッファにＳＢＡＬシーケンス・エラーがある。
【０２５９】
・指定されたサブチャネルが、動作していない。
【０２６０】
・指定されたサブチャネル・トークンが、ＱＥＢＳＭについて使用可能にされた有効なサブチャネルを指定していない。
【０２６１】
・指定されたキューが、指定されたサブチャネルについて確立されていない。
【０２６２】
・指定されたバッファ番号が、無効である。
【０２６３】
・指定されたバッファ・カウントが、無効である。
【０２６４】
・指定されたバッファ状態が、アダプタ所有状態でもプログラム所有状態でもないか、指定されたバッファ状態が、アダプタ所有状態とプログラム所有状態の両方である。
【０２６５】
・ＣＰＵ判定の個数のバッファ状態がセットされた。
【０２６６】
（ｂ）カウント：このフィールドには、状態をセットされるバッファのカウントを指定する符号なし整数が含まれる。このフィールドの値は、一例で、０を超え、１２８以下でなければならず、そうでない場合には、条件コードおよび条件コード修飾子がセットされる。
【０２６７】
バッファ番号空間は、一例では０から１２７までの範囲である。Ｒ１  ＢＮＵＭ値に関するカウント値は、バッファ番号空間内でのラップ・アラウンドを指定することができる。
【０２６８】
第２オペランド・アドレスは、データのアドレッシングに使用されない。そうではなく、第２オペランド・アドレスの右８ビットが、ストレージ・リスト状態ブロック（ＳＬＳＢ）バッファ状態インジケータの形で、セットされるＱＤＩＯバッファ状態を指定する。第２オペランド・アドレスが、アダプタ所有状態でもプログラム所有状態でもない状態を指定するか、第２オペランド・アドレスが、アダプタ所有状態とプログラム所有状態の両方である状態を指定する場合（すなわち、指定された状態のビット０とビット１が等しい場合）に、条件コードがセットされ、Ｒ３条件コード修飾子に、事前に指定された値がセットされる。
【０２６９】
ＱＤＩＯバッファ状態セットの動作の単位に、１つのバッファ状態をセットすること、Ｒ３レジスタのカウント・フィールドを１つ減分すること、およびＲ１レジスタのバッファ番号フィールドを１つ増分することが含まれる。バッファ番号フィールドの増分によって、バッファ番号が１２７という最大バッファ番号を越える場合には、バッファ空間内のラップ・アラウンドが行われ、バッファ番号が０にリセットされる。
【０２７０】
命令動作は、次のいずれか１つが最初に発生する時に完了する。
【０２７１】
・Ｒ３カウント・フィールドで指定される個数のバッファ状態がセットされており、エラー状態または例外状態に出会わない場合。この場合に、条件コードおよびＲ３条件コード修飾子フィールドがセットされる。
【０２７２】
・例外状態に出会い、指定されたバッファ状態のうちの０個、一部、またはすべてがセットされている場合。この場合に、条件コードがセットされ、Ｒ３条件コード修飾子フィールドに、例外を示す値がセットされる。Ｒ３レジスタのカウント・フィールドは、セットされたバッファ状態の個数だけ減分され、Ｒ１レジスタのバッファ番号（ＢＮＵＭ）フィールドは、同一の数だけ増分され、必要な場合には０をまたいでラップ・アラウンドする。したがって、Ｒ３レジスタのカウント・フィールドが０の場合には、指定されたバッファ状態がセットされている。このカウント・フィールドが０でない場合には、Ｒ１のキュー・インデックス（ＱＩＸ）フィールドおよびバッファ番号（ＢＮＵＭ）フィールドは、例外状態に出会った時に処理されていたバッファを識別する。
【０２７３】
・エラー状態に出会い、指定されたバッファ状態が全くセットされていない場合。この場合に、条件コードがセットされ、Ｒ３条件コード修飾子フィールドに、このエラーを示す値がセットされる。
【０２７４】
・指定されたバッファ状態の総数をセットせずに、ＣＰＵ判定の個数の指定されたバッファ状態がセットされた場合。この場合に、条件コードおよびＲ３条件コード修飾子フィールドが、セットされる。Ｒ３レジスタのカウント・フィールドは、セットされたバッファ状態の個数だけ減分され、Ｒ１レジスタのバッファ番号（ＢＮＵＭ）フィールドは、同一の数だけ増分され、必要な場合には０をまたいでラップ・アラウンドする。
【０２７５】
直列化およびチェックポイント同期化機能が、指定されたバッファ状態がセットされる前およびその後に実行される。
【０２７６】
ＱＤＩＯバッファ状態セット命令の実行は、サブチャネルに含まれる情報を一切変更せず、入出力サブシステムにアダプタにシグナリングさせず、プログラム・ストレージ内のバッファ状態を変更しない。
【０２７７】
ＳＱＢＳ命令の実行に関連する処理を、図１７から１９を参照して説明する。この命令は、例外状態が発生しない限り、計算機によって有利に実行される。そのような例外状態が発生する場合に、ホストがリストされた残りのステップを計算機の下で実行するという点で、処理は、ホストによって完了される。
【０２７８】
図１７を参照すると、ＳＱＢＳ命令の発行に応答して、計算機は、ステップ８１２で、ホストがＱＥＢＳＭ機能に関してゲストを使用可能にしたかどうかを判定するホスト使用可能化検査を実行する。ステップ８１４で、ＱＥＢＳＭＩ使用可能化コントロール（たとえばゲスト状態の）に０がセットされ、非使用可能化が示される場合に、ステップ８１６で、計算機ではなくホストが処理を完了しなければならない。ＱＤＩＯバッファ状態セット解釈中に、ホストからのアクションまたはサービスを必要とする条件に出会う場合に、命令インターセプトまたは部分的実行インターセプト（ＰＥＩ）のいずれかが認識され、インターセプション・パラメータに、ＱＤＩＯバッファ状態セット命令テキストがセットされ、ＰＥＩの場合に、ＱＥＢＳＭ−ＰＥＩパラメータがゲスト状態にセットされる。
【０２７９】
次に、ステップ８１８で、計算機が、サブチャネル判定を実行する。一例で、ＳＱＢＳサブチャネル・トークンが、サブチャネルを識別するＳＩＤを含むＱＢＩＣＢを突きとめるのに使用される。サブチャネル・トークンが、ＱＢＩＣＢによって指定されるサブチャネルに保管されたトークンと一致するかどうかに関する判定を行う。一致しない場合に、ステップ８２０で、ホストによって処理が完了される。そうでない場合には、計算機によって処理が継続される。
【０２８０】
さらに詳細に言うと、ＱＤＩＯバッファ状態セット命令（ならびにアダプタ・シグナル命令またはＱＤＩＯバッファ状態抽出命令）が実行される場合に、汎用レジスタ１のサブチャネル・トークンが、サブチャネルの指定に使用される。このトークンは、指定されたサブチャネルがＱＤＩＯ拡張バッファ状態管理解釈について使用可能にされているかどうかの判定と、サブチャネルのサブシステムｉｄの判定に使用される。一例では、これらの判定を行うのに使用されるステップに、次が含まれる。
【０２８１】
（１）レジスタ１のサブチャネル・トークン値は、ＱＤＩＯ拡張バッファ状態管理解釈について使用可能にされた時にサブチャネルに関連したＱＤＩＯバッファ情報制御ブロック（ＱＢＩＣＢ）のホスト実アドレスまたはホスト絶対アドレスとして使用される。ＱＢＩＣＢを参照する時にアクセス例外状態が存在する場合には、ゲスト命令が、抑制され、命令インターセプトが認識される。そうでない場合には、処理が継続される。
【０２８２】
（２）ＱＢＩＣＢのサブシステムｉｄフィールドは、使用されるサブチャネルを指定する。ＱＢＩＣＢのサブシステムｉｄフィールドに、有効なサブシステムｉｄが含まれない場合には、ゲスト命令が抑制され、命令インターセプトが認識される。そうでない場合には、処理が継続される。これによって、たとえば、ホストが、シミュレートされた装置の動作を処理でき、あるいは、トレーシング機能を処理できるようになる。
【０２８３】
（３）ＱＢＩＣＢのサブシステムｉｄフィールドによって指定されるサブチャネルが、ＱＥＢＳＭＩについて使用可能にされていないか、サブチャネル・トークンによって指定されるＱＢＩＣＢに関連しない場合には、ゲスト命令が抑制され、命令インターセプトが認識される。そうでない場合には、処理が継続される。
【０２８４】
次に、ステップ８２１で、ＳＱＢＳオペランドが有効であるかどうかに関する判定が、計算機によって行われる。一例では、バッファ番号が検証される。一例では、Ｒ１バッファ番号フィールドが、１２７を超える値を指定する場合に、命令が完了し、条件コードおよび条件コード修飾子がセットされる。さらに、カウント値が検証される。Ｒ３カウント・フィールドが、０の値または１２８を超える値を指定する場合に、命令は、やはり完了し、条件コードおよび条件コード修飾子がセットされる。さらに、指定されたバッファ状態が、有効性について検査される。第２オペランド・アドレスによって指定されるバッファ状態が、同時のアダプタ所有状態およびプログラム所有状態、またはアダプタ所有でもプログラム所有でもない状態を指定する場合に、命令が完了し、条件コードおよび条件コード修飾子がセットされる。さらに、指定されたキューのキュー・ストレージ記述子が突きとめられる。Ｒ１キュー・インデックス・フィールドが、ＱＢＩＣＢキュー・カウント・フィールドの値以上である場合に、指定されたキューは、そのサブチャネルについて確立されておらず、命令が完了し、条件コードおよび条件コード修飾子がセットされる。そうでない場合に、Ｒ１キュー・インデックス・フィールドの値が、ＱＢＩＣＢキュー記述子アドレス・アレイへのインデックスとして使用されて、キュー記述子アドレスが決定される。
【０２８５】
上のテストのいずれかに失敗する場合に、ステップ８２２で、処理が完了し、条件コードおよび条件コード修飾子がセットされる。そうでない場合に、処理が継続される。
【０２８６】
ゲスト状態のインターバル完了インジケータに、１がセットされ、直列化およびチェックポイント同期化機能が実行される。計算機障害の場合に、このインジケータは、ホストに、ホスト制御構造が疑わしい状態である可能性があることを知らせる。
【０２８７】
次に、ステップ８２４で、指定されたキューのキュー・ストレージ記述子ロックを獲得する試みを行う。キュー・ストレージ記述子アドレスが、指定されたキューのＱＢＩＣＢキュー記述子のキュー・ストレージ・アドレス・フィールドから取り出される。インターロック更新動作を使用して、ＱＳＤロックワード値を、使用可能から計算機によるロックに変更する試みを行う。ロックワードのセットを試みるときに、ＱＳＤアドレスが０であるか、アクセス例外状態が存在する場合に、有効性インターセプトが認識され、有効性インターセプト理由コードがセットされる。
【０２８８】
インターロック更新動作が失敗する場合に、この動作を、モデル依存の回数だけ再試行することができる。ＱＳＤロックワードに、計算機によるロックの値をセットできない場合に、部分的実行インターセプトが認識され、ホスト・プログラムに返されるＱＥＢＳＭ−ＰＥＩパラメータ・フィールドの部分的実行理由コードに、たとえば１がセットされ、ステップ８２６で、ホストによって処理が完了される。インターロック更新動作に成功する場合に、処理が継続される。
【０２８９】
次の論理が、ＳＱＢＳ命令のカウント・フィールドによって指定されるＱＤＩＯバッファの数だけ繰り返される。まず、ステップ８２８で、処理されるＱＤＩＯバッファのＳＱＢＮおよびＳＢＡＬを突きとめる。一例では、指定されたキューのホスト・ストレージ・リストを突きとめる。すなわち、ホスト・ストレージ・リスト・アドレスが、キュー・ストレージ記述子のホスト・ストレージ・リスト・アドレス・フィールドから取り出される。次に、指定されたキュー・ストレージ・リスト状態ブロックを突きとめる。このアドレスは、キュー・ストレージ記述子のＳＬＳＢアドレス・フィールドから取り出される。セットされる最初のＳＬＳＢ項目（ＳＱＢＮ）を突きとめる。Ｒ１バッファ番号（ＢＮＵＭ）フィールドが、ＳＬＳＢへのインデックスとして使用されて、セットされる最初のＳＱＢＮのアドレスが決定される。ＳＱＢＮにアクセスするときにアクセス例外状態が存在する場合には、有効性インターセプトが認識され、有効性インターセプト理由コードがセットされる。
【０２９０】
その後、ステップ８３０で、指定されたバッファが現在プログラムによって所有されているかどうかに関する判定を行う。一例では、この判定が、ＳＱＢＮを検査することによって行われる。そうでない場合には、ステップ８３２で、処理が完了し、条件コードおよび条件コード修飾子がセットされる。指定されたバッファが現在プログラムによって所有されている場合に、処理は、ステップ８３４（図１８）で、指定されたバッファの状態を抽出する必要があるかどうかに関する判定を計算機が行うことによって継続される。状態を、たとえばＥＱＢＳ命令を介して抽出する必要がある場合には、ステップ８３６で、処理が完了し、条件コードおよび条件コード修飾子がセットされる。指定されたバッファの状態を抽出する必要がない場合には、ステップ８３８で、プログラムＳＢＡＬの内容をホストのＳＢＡＬにコピーする。さらに、ステップ８４０で、ホストのＳＢＡＬのバッファ同期化必要ビットおよびＥＱＢＳ動作必要ビットをセットする。
【０２９１】
さらに、ステップ８４２で、有効なストレージ・ブロックを有する意味のあるホストＳＢＡＬＥごとに、次の機能を実行する。（１）ステップ８４４で、プログラム絶対（ホスト仮想）ストレージ・ブロック・アドレスをホストＳＢＡＬＥから取り出し、（２）ステップ８４６で、下で説明するＨＰＭＡピン固定機能を呼び出して、ページを変換し、ストレージ内でピン固定する。ステップ８４８で、ＨＰＭＡピン固定機能が不成功の場合に、ステップ８５０で、処理がホストによって完了される。そうでない場合に、処理は、計算機によって継続され、（４）ステップ８５２で、ＨＰＭＡピンによって返されたストレージ・ブロックのホスト絶対アドレスを、ホストのＳＢＡＬＥに移動し、（５）ステップ８５４（図１９）で、ホストのＳＢＡＬのページ・ピン固定インジケータをセットする。
【０２９２】
その後、ステップ８５６で、バッファのＳＱＢＮに、ＳＱＢＳ命令によって指定されるアダプタ所有状態をセットする。一例では、この状態が、第２オペランドによって指定される。さらに、ステップ８５８で、ＳＱＢＳバッファ番号（ＢＮＵＭ）を１つ増分し、ステップ８６０で、ＳＱＢＳカウント・フィールドを１つ減分する。
【０２９３】
ステップ８６２で、ＳＱＢＳカウントが０と等しいかどうかに関する判定を行う。ＳＱＢＳカウントが０と等しくない場合には、ステップ８２８（図１７）で、処理されるＱＤＩＯバッファのＳＱＢＮおよびＳＢＡＬを突きとめることによって処理を継続する。しかし、ＳＱＢＳカウントが０と等しい場合には、処理は、ステップ８６４（図１９）で、ＱＳＤロックをロック解除することによって継続される。成功の場合に、ステップ８６６で、成功の表示をプログラムに転送する。
【０２９４】
これが、この時に転送される最後のＱＤＩＯバッファである場合には、ステップ８６８で、適当なＳＩＧＡ命令機能、たとえば出力動作の場合にＳＩＧＡ−ｗｔ、入力をアダプタによる後の使用に使用可能にする場合にはＳＩＧＡ−ｒｔを発行して、入出力動作が保留中であることをアダプタに知らせる。
【０２９５】
ＳＱＢＳ処理をホストによって完了しなければならなかった場合に、計算機ではなくホストが、適当なｅｎｄ  ｏｐをプログラムに提示することに留意されたい。
【０２９６】
ＳＱＢＳ命令を記述する際に、ホスト・ページ管理補助（ＨＰＭＡ）が参照される。本発明の態様によれば、ホスト・ページ管理補助に、ページング可能ストレージ・ゲストの解釈中に他のＣＰＵ機能によって呼び出すことができる４つの補助機能が含まれる。この機能には、ピン固定機能、ホスト・ページ解決機能、仮想アドレスによるホスト・ページ・ピン解除機能、およびＰＴＥアドレスによるホスト・ページ・ピン解除機能が含まれ、このそれぞれを、下で説明する。
【０２９７】
ＳＱＢＳ命令から呼び出されるＨＰＭＡピン固定機能は、ＣＰＵに、ホスト・ページの内容がホスト・ページ・フレームにピン固定されたことを示す能力を与える。ページが、単一の命令の実行（たとえば入出力命令の持続時間）を超えて常駐することが要求されるときに、ページをピン固定することができる。ページが、ピン固定状態である場合に、これによって、そのページがページ無効化の資格がないことがホストに示される。ページが、ホスト・ページ・ピン固定機能によって成功裡にピン固定される場合に、そのページに関連するページ・ピン固定カウントを増分することができる。
【０２９８】
一例で、デルタ・ページ・ピン固定カウンタ・アレイ（ＤＰＰＣＡ）が、たとえば３１ビット符号付き整数のページ・ピン固定カウンタであり、このカウンタの１つを、ページが成功裡にピン固定された場合にホスト・ページ・ピン固定機能によって増分することができる。さらに、ＤＰＰＣＡカウンタの１つを、ページが成功裡にピン解除された場合に仮想アドレスによるホスト・ページ・ピン解除機能またはＰＴＥによるホスト・ページ・ピン解除機能（下で説明する）によって減分することができる。一実施形態で、ＤＰＰＣＡの一方のカウンタが、所与のサイズ（たとえば２ＧＢ）未満のホスト実アドレスに常駐するページに関連し、他方のカウンタが、そのサイズ以上のホスト実アドレスに常駐するページに関連する。
【０２９９】
ホストは、各ページをクラス０ページまたはクラス１ページのいずれかとして分類し、それ相応にページのページ状況テーブル項目（ＰＧＳＴＥ）のページ・クラス・インジケータをセットする。ページ状況テーブル項目１１００の一例を、図２２を参照して説明する。ページ状況テーブル項目１１００には、たとえば下記が含まれる。
【０３００】
（ａ）Ａｃｃ  １１０２：アクセス制御キー
【０３０１】
（ｂ）ＦＰ  １１０４：取り出し保護インジケータ
【０３０２】
（ｃ）ページ制御インターロック（ＰＣＬ）１１０６：これは、予約済みとマークされているＰＧＳＴＥ状況区域およびＰＧＳＴＥビットを除く、ページ・テーブル項目（ＰＴＥ）および対応するＰＧＳＴＥへの更新を直列化するためのインターロック制御である。
【０３０３】
（ｄ）ＨＲ  １１０８：ホスト参照バックアップ・インジケータ
【０３０４】
（ｅ）ＨＣ  １１１０：ホスト変更バックアップ・インジケータ
【０３０５】
（ｆ）ＧＲ  １１１２：ゲスト参照バックアップ・インジケータ
【０３０６】
（ｇ）ＧＣ  １１１４：ゲスト変更バックアップ・インジケータ
【０３０７】
（ｈ）ページ内容論理０インジケータ（Ｚ）１１１６：１の場合に、このＰＧＳＴＥおよび対応するＰＴＥによって記述されるページの内容が、０とみなされる。そのページの前の内容は、保存する必要がなく、０のページによって置換することができる。
【０３０８】
０の場合に、このＰＧＳＴＥおよび対応するＰＴＥによって記述されるページの内容は、０とみなされない。ページの内容が、保存されなければならず、置換されてはならない。
【０３０９】
このビットは、対応するＰＴＥページ無効（ＰＴＥ．Ｉ）ビットが１の場合に意味を持つ。
【０３１０】
１．Ｚビットが１であり、対応するＰＴＥ．Ｉビット（下で説明する）が１の場合に、ページ内容を、ホストによってまたはホスト・ページ管理補助の機能によって置換することができる。
【０３１１】
２．Ｚビットが１であり、対応するＰＴＥ．Ｉビットが１であり、ページ内容が置換される場合に、ページは、０をセットされたフレームに関連付けられることによって置換されなければならない。
【０３１２】
（ｉ）ページ・クラス（ＰＣ）１１１８：０の場合に、このＰＧＳＴＥおよび対応するＰＴＥによって記述されるページは、クラス０ページであり、クラス０ページに関するデルタ・ページ・ピン固定カウンタ・アレイ（ＤＰＰＣＡ）が、そのページのピン固定動作およびピン解除動作をカウントするのに使用される。１の場合に、ＰＧＳＴＥおよび対応するＰＴＥによって記述されるページは、クラス１ページであり、クラス１ページに関するＤＰＰＣＡが、そのページのピン固定動作およびピン解除動作をカウントするのに使用される。
【０３１３】
（ｊ）ピン・カウント・オーバーフロー（ＰＣＯ）１１２０：１の場合に、ピン・カウント・フィールドがオーバーフロー状態である。０の場合に、ピン・カウント・フィールドはオーバーフロー状態でない。この場合に、総ピン・カウントは、計算機によってアクセスされない別のデータ構造でホストによって保たれる。
【０３１４】
（ｋ）処理済みフレーム記述子リストのフレーム記述子（ＦＰＬ）１１２２：１の場合に、このＰＧＳＴＥおよび対応するＰＴＥによって記述されるページのフレーム記述子が、処理済みフレーム記述子リストにある。フレーム記述子は、ページのＨＰＭＡホスト・ページ解決機能によって使用されたホスト・ページ・フレームを識別する。
【０３１５】
（ｌ）ページ内容置換必要（ＰＣＲ）１１２４：１の場合に、このＰＧＳＴＥおよび対応するＰＴＥによって表されるページのＨＰＭＡホスト・ページ解決機能が呼び出されたときにページ置換が要求された。
【０３１６】
（ｍ）ピン・カウント１１２６：このＰＧＳＴＥおよび対応するＰＴＥによって表されるホスト仮想ページの内容が、ＰＴＥのページ・フレーム実アドレス・フィールドによって指定される実ホスト・ページ・フレームにピン固定されているかどうかを示すのに使用される符号なし２進整数カウント。このフィールドの値が０より大きいか、ページ・カウント・オーバーフロー（ＰＣＯ）ビットが１の場合に、対応するページは、ピン固定されているとみなされる。このフィールドの値が０であり、ＰＣＯビットが０の場合に、対応するページは、ピン固定されていないとみなされる。
【０３１７】
ページが、ホストまたはＣＰＵのいずれかによってピン固定される時に、このフィールドを１つ増分しなければならない。ページが、ホストまたはＣＰＵのいずれかによってピン解除される時に、このフィールドを１つ減分しなければならない。
【０３１８】
ピン・カウント・フィールドの値が０より大きいかＰＣＯビットが１の場合に、対応するＰＴＥ．Ｉ（ページ無効）ビットが０でなければならない。そうでない場合に、予測不能な結果が発生する可能性がある。
【０３１９】
ページがピン固定されている間に、ホスト・プログラムは、ＰＴＥページ・フレーム実アドレス（ＰＲＦＡ）フィールド、ＰＴＥページ無効（Ｉ）ビットの設定、またはＰＴＥあるいはセグメント・テーブル項目（ＳＴＥ）のページ保護（Ｐ）ビットの設定を変更してはならない。そうでない場合に、予測不能な結果が発生する可能性がある。
【０３２０】
ＰＧＳＴＥは、ページ・テーブル項目（ＰＴＥ）に対応し、その一例を、図２３を参照して説明する。ページ・テーブル項目１１５０に、たとえば下記が含まれる。
【０３２１】
（ａ）ページ・フレーム実アドレス１１５２：このフィールドは、実ストレージ・アドレスの左側のビットを提供する。これらのビットが、右側に仮想アドレスのバイト・インデックス・フィールドを連結される場合に、実アドレスが得られる。
【０３２２】
（ｂ）ページ無効インジケータ１１５４：このフィールドは、このページ・テーブル項目に関連するページが使用可能であるかどうかを制御する。このインジケータが０の場合に、このページ・テーブル項目を使用することによってアドレス変換が進行する。このインジケータが１の場合に、このページ・テーブル項目を変換に使用することはできない。
【０３２３】
（ｃ）ページ保護インジケータ１１５６：このフィールドは、ページへのストア・アクセスが許可されるかどうかを制御する。
【０３２４】
本明細書で言及するページ・テーブル項目およびページ・テーブルならびにセグメント・テーブル項目に関するさらなる詳細は、ＩＢＭ（Ｒ）資料、題名「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ動作の原理（z/Architecture Principles of Operation）」、ＩＢＭ（Ｒ）資料番号ＳＡ２２−７８３２−０２、２００３年６月に開示されている。
【０３２５】
ＤＰＰＣＡの議論を続けると、別々のＤＰＰＣＡが、クラス０ピン・ページ・カウントの各仮想構成に関連し、仮想構成の各記述のクラス０  ＤＰＰＣＡ原点フィールドによって指定される。単一のＤＰＰＣＡが、クラス１ピン・ページ・カウントについて存在し、プレフィックス区域のクラス１  ＤＰＰＣＡ原点フィールドによって指定される。
【０３２６】
ＤＰＰＣＡは、キー制御保護および低アドレス保護の対象ではない。一例で、ＤＰＰＣＡは、ダブルワード境界で割り振られた８バイト制御ブロックであり、たとえば、あるサイズ（たとえば２ＧＢ）未満のページ・フレーム実アドレスのデルタ・ページ・ピン固定カウントと、そのサイズ以上のページ・フレーム実アドレスのデルタ・ページ・ピン固定カウントを含む。内容の精度を維持するために、このフィールドを変更するのにインターロック更新動作を使用しなければならない。ページがホスト・ページ・ピン固定機能によって成功裡にピン固定された時に、デルタ・ページ・ピン固定カウンタを増分することができる。
【０３２７】
ホスト・ページ・ピン固定機能が呼び出される時に、次のデータがこの機能に入力される：ピン固定されるホスト仮想アドレス（ページ）、ゲストに割り当てられたアドレス空間を識別する有効ホスト・アドレス空間制御要素（ＡＳＣＥ）および使用される変換テーブル、ページが取出動作とストア動作のどちらのためにピン固定されるかの表示、およびページ内容置換インジケータ。
【０３２８】
ホスト・ページ・ピン固定機能に関連する論理の一実施形態を、図２４を参照して説明する。まず、ステップ１２００で、ページのＰＴＥ／ＰＧＳＴＥ対を突きとめる。たとえば、ＡＳＣＥおよびピン固定される仮想アドレス（ページ）を使用して、ピン固定される仮想アドレスのホスト・ストレージ内のページ・テーブル項目およびページ状況テーブル項目の位置を判定する。
【０３２９】
ステップ１２０２で、たとえばインターロック更新動作を使用して、突きとめられたＰＴＥ／ＰＧＳＴＥをロックして、ＰＧＳＴＥのページ制御ロック・インジケータを０から１に変更する。照会１２０４で、ページ対をロックできない場合、またはページ制御インターロック（ＰＣＬ）が既に１である場合には、ステップ１２０６で失敗を示す。そうでない場合に、処理は、照会１２０８で、ページのピン・カウントが次のピン固定でオーバーフローするかどうか（すなわち、ＰＧＳＴＥのピン・カウント・フィールドが所定の値（たとえば２５５）であるかどうか）を判定することによって継続される。そうである場合には、ステップ１２０６で、処理が失敗で終わる。そうでない場合には、ステップ１２１０で、ピン固定される仮想ページのＰＴＥを取り出す。
【０３３０】
次に、照会１２１２で、そのページが保護されており、ストア動作のためにピン固定されるかどうかに関する判定を行う。すなわち、入力表示が、ストア動作に関するものであり、ページ保護ビットが、ページのセグメント・テーブル項目またはページ・テーブル項目で１である場合に、ステップ１２０６で失敗が示される。そうでない場合には、処理は、照会１２１４でページが無効であるかどうかを判定することによって継続される。ページが無効である場合には、ステップ１２１６で、ホスト・ページ解決機能を呼び出す。照会１２１７で、ホスト・ページ解決機能が失敗する場合に、ステップ１２０６で、ピン固定機能が失敗する。しかし、解決に成功するか、ページが無効でない場合には、ステップ１２１８で、ピン・カウントを増分する。
【０３３１】
その後、照会１２２０で、ピン状態がピン解除状態からピン固定状態に変更されているかどうかに関する判定を行う。そうである場合には、ステップ１２２２で、関連するデルタ・ピン固定カウント（すなわち、ページ・クラスおよびＰＦＲＡに基づいて選択されたカウント）を１つ増分する。すなわち、ピン・カウントが、現在１であり、ピン・カウントが、オーバーフロー状態でない（ＰＧＳＴＥ．ＰＣＬ＝０）場合に、そのページ状態は、ピン解除状態からピン固定状態に推移している。この場合に、デルタ・ページ・ピン固定カウントを１つ増分する。その後、またはページ状態がピン解除状態からピン固定状態に変化していない場合に、ステップ１２２４で、ＰＴＥ／ＰＧＳＴＥ対をロック解除する。たとえば、ＰＧＳＴＥのページ制御インターロック・ビットに０をセットし、処理が成功で完了する。
【０３３２】
ホスト・ページ・ピン固定機能が、成功の表示を伴って終了する場合に、指定されたページは、ピン固定されており、ホスト・ページ解決機能の呼出しによって解決されている場合がある。この場合に、そのページのページ・カウントが、計算機によって状況テーブル内で増分されており、ホスト変換テーブルが、計算機によって更新されている可能性もあり、ページのピン固定および解決のためにホストに制御を転送するという以前の要件が、軽減される。
【０３３３】
ページ・ホスト・ピン固定機能が、失敗の表示を伴って終了する場合に、変換テーブルおよび状況テーブルに対する永久的変更は行われておらず、ピン固定機能によってセットされたページ制御されるインターロック・ビットのすべてが、失敗が認識された時にリセットされる。この場合に、計算機は、この機能が呼び出されなかったかのように振る舞い、ホストに、その失敗を処理するために制御が与えられる。
【０３３４】
上で説明したように、ピン固定されるページが無効である場合には、ホスト・ページ解決機能が呼び出される。ホスト・ページ解決機能は、条件が許す場合に、ＣＰＵによって使用できる使用可能ホスト・ページ・フレームのホストが供給するリストを利用して、ホスト・ページ無効状態を動的に解決する。この機能は、特定のホスト・ページに割り当てられることによってホスト・ページ無効状態の解決に使用されたホスト・ページ・フレームについてホストに知らせる手段も提供する。
【０３３５】
ホスト・ページ管理補助が使用可能にされ、ホスト・ページ解決機能が、ホスト・ページについて呼び出され、そのページを記述するページ・テーブル項目のページ有効ビット（ＰＴＥ．Ｉ）が１である場合に、ホストが使用可能にしたホスト・ページ・フレームのうちの１つを使用して、ホスト・ページ無効状態を動的に解決することができる。
【０３３６】
ホスト・ページ解決機能への入力に、使用可能フレーム記述子リスト、解決される仮想アドレス（ページ）、使用されるアドレス空間および変換テーブルを識別する有効アドレス空間制御要素（ＡＳＣＥ）、ページ内容置換インジケータ、インターバル完了インジケータが呼出し側によって既にセットされているかどうかの表示、およびＰＴＥ／ＰＧＳＴＥ対へのアクセスが呼出し側によってロックされているかどうかの表示が含まれる。
【０３３７】
解決機能に関連する論理の一実施形態を、図２５および２６を参照して説明する。まず、照会１３００（図２５）で、使用可能なフレームがあるかどうかに関する判定を行う。この判定は、たとえば、使用可能フレーム記述子リストが空であるかどうかを検査することによって行うことができる。ＡＦＤＬＯが０のアドレスを指定する（すなわち、ローカル・プロセッサが使用可能なホスト・ページ・フレームがない）場合には、使用可能なフレームがなく、ステップ１３０２で、失敗を示して処理が終了する。
【０３３８】
しかし、使用可能なフレームがある場合に、処理は、ステップ１３０４で、このページのＰＴＥ／ＰＧＳＴＥ対を突きとめることによって継続される。一例では、ＡＳＣＥおよび解決される仮想アドレス（ページ）を使用して、解決される仮想アドレスのホスト・ストレージ内のページ・テーブル項目およびページ状況テーブル項目の位置を判定する。
【０３３９】
その後、ステップ１３０６で、使用可能フレーム記述子リストの最初のフレーム記述子から、ページ・フレーム実アドレスを取り出す。また、まだ呼出し元によって確立されたと示されていない場合に、ステップ１３０８で、インターバル完了インジケータをマークして、ホスト・ページ解決機能が開始されたことを示し、直列化機能およびチェックポイント同期化機能も実行する。
【０３４０】
その後、ステップ１３１０で、ＰＴＥ／ＰＧＳＴＥ対を条件的にロックする。ホスト・ページ解決機能進入条件が、解決されるホスト仮想アドレスに対応するＰＴＥおよびＰＧＳＴＥへのアクセスが、まだ直列化されていないと示す場合に、ＰＧＳＴＥのページ制御インターロック・インジケータ（ＰＧＳＴＥ．ＰＣＬ）を０から１に変更する試みで、インターロック更新動作を使用する。照会１３１２で、ＰＴＥ／ＰＧＳＴＥ対をロックできないか、ＰＧＳＴＥ．ＰＣＬが既に１であることがわかった場合に、ステップ１３０２で、処理が失敗で終了する。そうでない場合に、処理は、ステップ１３１４で、解決される仮想ページのＰＴＥを取り出すことによって継続される。一例では、ページ・テーブル項目が、ホスト・ストレージから並列にブロック取出しされる。
【０３４１】
さらに、照会１３１６で、ページを解決する必要があるかどうかに関する判定を行う。一例では、この判定が、ＰＴＥの無効インジケータを検査することによって行われる。ページが無効であるとＰＴＥが示す（ＰＴＥ．Ｉ＝０）場合に、ページが解決されており、処理が完了する。しかし、ページを解決する必要がある場合には、照会１３１８で、ページを解決できるかどうかに関するさらなる判定を行う。たとえば、解決される仮想ページのＰＧＳＴＥが、ページ内容が論理的にゼロにされないことを示し（ＰＧＳＴＥ．Ｚ＝０）、入力ページ内容置換インジケータが、ページを置換できないことを示す場合に、ステップ１３０２で、失敗で処理が終了する。しかし、ＰＧＳＴＥのページ内容論理ゼロ・インジケータが１であるか、ホスト・ページ解決機能進入条件が、解決されるホスト仮想ページの内容を置換できることを示す場合には、ステップ１３２０で、ページを解決する試みを行うことができ、処理が継続される。
【０３４２】
ページを解決するために、図２６を参照して説明するさまざまなステップが実行される。ステップの１つに、ステップ１３３０でページのストレージ・キーをセットすることが含まれる。たとえば、フレーム記述子のページ・フレーム実アドレス・フィールドによって識別されるホスト・フレームのストレージ・キーは、ＰＧＳＴＥ．ＡＣＣからのアクセス制御ビットをセットすることと、ＰＧＳＴＥ．ＦＰからの取出保護ビットをセットすることと、参照インジケータに０をセットすることと、変更インジケータに０をセットすることとによってセットされる。
【０３４３】
さらに、ステップ１３３２で、フレーム記述子を使用可能フレーム記述子リストから除去する。一例として、非インターロック更新動作を使用して、フレーム記述子を使用可能フレーム記述子リストから除去する。フレーム記述子の次フレーム記述子アドレス・フィールドの内容によって、ＡＦＤＬＯの古い値が置換される。
【０３４４】
次に、ステップ１３３４で、フレーム割当を記録する。ホスト仮想ページのＰＴＥが、そのＰＴＥをフレーム記述子のＰＴＥコピー・フィールドにコピーすることによって保存される。さらに、ホスト仮想ページのＰＴＥのアドレスが、フレーム記述子のページ・テーブル項目アドレス・フィールドに保管される。
【０３４５】
次に、照会１３３８で、ページ内容を置換できるかどうかに関する判定を行う。一例として、入力ページ内容置換インジケータを検査することによって、この判定が行われる。入力ページ内容置換インジケータが、ページ内容を置換できることを示す場合に、ステップ１３４０で、ＰＧＳＴＥのページ内容置換インジケータ（ＰＧＳＴＥ．ＰＣＲ）に１をセットする。これによって、ホストが、ページ内容置換を許可する動作の数に対する統計を保てるようになる。
【０３４６】
その後、または内容を置換できない場合に、ホスト仮想ページのＰＴＥを更新して、ページ無効状態を除去する。たとえば、ステップ１３４２で、同時ストア動作によって、ページ・テーブル項目のページ・フレーム実アドレス・フィールドの内容を、フレーム記述子のページ・フレーム実アドレス・フィールドの内容に置換し、ページ・テーブル項目のページ無効ビットに０をセットする。ＰＴＥの他のビットは、変更されないままにされる。さらに、ステップ１３４４で、フレーム記述子を処理済みリストに追加する。これは、インターロック更新動作を介して実行される。これによって、解決の処理が完了する。
【０３４７】
図２５に戻ると、ページを解決した後に、ステップ１３２２で、ＰＴＥ／ＰＧＳＴＥ対を条件的にロック解除する。たとえば、この機能によってページ制御インターロック・インジケータに１がセットされた場合に、このインジケータに０をセットする。
【０３４８】
さらに、この機能によってインターバル完了インジケータがセットされた場合に、ステップ１３２４で、直列化機能およびチェックポイント同期化機能を実行し、インターバル完了インジケータをリセットする。これによって、解決機能の処理が完了する。
【０３４９】
解決機能が成功の表示と共に終了する場合に、指定されたページが解決されている。この場合に、ホスト変換テーブルが、計算機によって更新されており、ページ解決のためにホストに制御を転送するという以前の要件が、軽減される。
【０３５０】
解決機能が失敗の表示と共に終了する場合に、変換テーブルに対する変更は、行われていない。この場合に、計算機は、この機能が呼び出されなかったかのように振る舞い、ホストに、この失敗を処理するために制御が与えられる。
【０３５１】
ＳＱＢＳ命令のほかに、ＥＱＢＳ命令が、本発明の態様に従って実施された。例として、ゲストが、アダプタから通知を受け取る場合に、またはバッファ状態を抽出しなければならない場合に自発的に、ゲストが、ＱＤＩＯバッファ状態抽出命令を発行する。ＱＤＩＯバッファ状態抽出命令に関連する論理の一実施形態を、図２７から２９を参照して説明する。
【０３５２】
プログラムを実行する前に、ある初期化が行われる。たとえば、ステップ１４００（図２７）で、ホストが、たとえば処理済みフレーム記述子リストのフレームの除去および処理を含むさまざまなクリーンアップ・タスクを実行する。さらに、ステップ１４０２で、ホストは、使用可能フレーム記述子リストに十分なフレームがあるようにする。その後、ステップ１４０４で、ホストが、プログラムの解釈実行を開始する。
【０３５３】
実行中に、ステップ１４０６で、プログラムは、そのプログラムがアダプタの処理が完了するのを待っている次の未解決のＱＤＩＯバッファを選択する。プログラムは、ステップ１４０８で、選択されたバッファの現在の状態を取り出すためにＥＱＢＳ命令を発行する。
【０３５４】
ＥＱＢＳ命令のフォーマットの一例を、図３０を参照して説明する。ＱＤＩＯバッファ状態抽出命令１５００には、ＥＱＢＳ命令を指定する動作コード１５０２、汎用レジスタＲ１フィールド１５０４、汎用レジスタＲ３フィールド１５０６、および汎用レジスタＲ２フィールド１５０８が含まれ、これらのそれぞれを、下で説明する。
【０３５５】
ＱＤＩＯバッファ状態抽出命令では、Ｒ１フィールドおよびＲ３フィールドによって指定される汎用レジスタによって指定される１つまたは複数の同一の状態のＱＤＩＯ入力キュー・バッファまたはＱＤＩＯ出力キュー・バッファの状態が、抽出され、ＱＤＩＯバッファ状態インジケータの形で、Ｒ２フィールドによって指定される汎用レジスタにロードされる。任意選択として、入力バッファ・プライム状態の指定されたバッファを、入力バッファ肯定応答状態に変更することができる。動作は、指定されたバッファがその共通の状態を抽出されるまで、少なくともいくつかの指定されたバッファがその共通の状態を抽出され、次に抽出されるバッファの状態が、これらの前に抽出されたものと異なるまで、または、ＣＰＵ判定の個数のバッファ状態が共通の状態を抽出されるまで（いずれか早いものが発生するまで）進行する。結果は、条件コードで示される。
【０３５６】
汎用レジスタ１には、ＱＤＩＯ拡張バッファ状態管理（ＱＥＢＳＭ）について使用可能にされ、１つまたは複数のバッファ状態が抽出されるＱＤＩＯサブチャネルを指定するサブチャネル・トークンが含まれる。
【０３５７】
Ｒ１フィールドによって指定される汎用レジスタに、状態が抽出されるＱＤＩＯキューおよび最初のバッファの指定が含まれる。命令が発行される時に、Ｒ１フィールドによって指定される汎用レジスタに、次のフィールドが含まれる。
【０３５８】
（ａ）キュー・インデックス（ＱＩＸ）：このフィールドには、状態を抽出されるバッファを含むキューを指定する符号なし整数インデックス値が含まれる。キューが入力キューである場合には、キュー・インデックスは、そのキューの入力キュー番号と等しい。キューが出力キューである場合には、キュー・インデックスは、そのキューの出力キュー番号と確立された入力キューの総数の合計と等しい。このフィールドは、既存のキューを指定しなければならない（すなわち、キュー・インデックス値は、確立された入力キューの総数と確立された出力キューの総数の合計引く１を超えてはならない）。
【０３５９】
（ｂ）バッファ番号（ＢＮＵＭ）：このフィールドには、状態を抽出される最初のバッファの番号を指定する符号なし整数が含まれる。このフィールドの値は、一例では１２８未満でなければならない。
【０３６０】
Ｒ３フィールドによって指定される汎用レジスタには、状態を抽出されるバッファの個数のカウントが含まれる。Ｒ３レジスタには、命令が完了する時に条件コードをセットするのと一緒にセットされる条件コード修飾子も含まれる。命令が発行される時に、Ｒ３フィールドによって指定される汎用レジスタに、一例で次のフィールドが含まれる。
【０３６１】
（ａ）条件コード修飾子（ＣＣＱ）：命令が発行される時には、このフィールドの内容は意味を持たない。命令が完了した時に、このフィールドに、条件コードがセットされる場合にセットされる符号なし整数条件コード修飾子（ＣＣＱ）が含まれる。条件コード修飾子の例に、次が含まれる。
【０３６２】
・指定されたバッファのすべてが抽出された。
【０３６３】
・現在指定されているバッファの状態が、この命令の前の実行中に前に抽出された状態と異なる。このバッファの状態は、抽出されない。
【０３６４】
・現在指定されているキューのストレージ・リスト（ＳＬ）のアドレスが、無効である。
【０３６５】
・現在指定されているバッファのストレージ・バッファ・アドレス・リスト（ＳＢＡＬ）のアドレスが、無効である。
【０３６６】
・現在指定されているバッファのストレージ・ブロック（ＳＢ）のアドレスが、無効である。
【０３６７】
・指定されたサブチャネルが、動作していない。
【０３６８】
・指定されたサブチャネル・トークンが、ＱＥＢＳＭについて使用可能にされた有効なサブチャネルを指定していない。
【０３６９】
・指定されたキューが、指定されたサブチャネルについて確立されていない。
【０３７０】
・指定されたバッファ番号が、無効である。
【０３７１】
・指定されたバッファ・カウントが、無効である。
【０３７２】
・ＣＰＵ判定の個数のバッファ状態が抽出された。
【０３７３】
・ＣＰＵ判定の個数のバッファ・ストレージ・ブロックが処理されたが、完全なバッファが処理されておらず、バッファ状態は抽出されなかった。
【０３７４】
（ｂ）カウント：このフィールドには、状態を抽出されるバッファのカウントを指定する符号なし整数が含まれる。このフィールドの値は、０を超え、１２８以下でなければならず、そうでない場合には、条件コードおよびＲ３条件コード修飾子フィールドがセットされる。バッファ番号空間は、０から１２７までの範囲である。Ｒ１  ＢＮＵＭ値に関するカウント値は、バッファ番号空間内でのラップ・アラウンドを指定することができる。
【０３７５】
命令を発行する前に、Ｒ２フィールドによって指定される汎用レジスタに、抽出され、入力バッファ・プライム状態で発見される指定されたバッファ状態を、バッファ状態を抽出した後に入力バッファ肯定応答状態に変更しなければならないかどうかを示す表示が含まれる。命令が完了した時に、結果の条件コードおよび条件コード修飾子が、たとえば、Ｒ２フィールドによって指定されたレジスタに１つまたは複数のバッファの状態が含まれるかどうかを示す。この状態が適用される最初のバッファは、命令が発行された時のＲ１のＱＩＸフィールドおよびＢＮＵＭフィールドの値によって識別される。この状態が適用される、連続した番号のバッファのカウントは、命令が発行された時のＲ３カウント・フィールドと、命令が完了した時の減分されたＲ３カウント・フィールドの間の差である。
【０３７６】
Ｒ２フィールドによって指定される汎用レジスタに、たとえば、次のフィールドが含まれる。
【０３７７】
（ａ）入力バッファ肯定応答制御（Ｉ）：命令が発行され、このフィールドが１である場合に、入力バッファ・プライム状態で見つかる指定されたバッファが、バッファ状態を抽出された後に、入力バッファ肯定応答状態に変更される。命令が発行され、このフィールドが０である場合に、入力バッファ状態は変更されない。
【０３７８】
（ｂ）バッファ状態（ＢＳＴＡＴＥ）：命令が発行される時には、このフィールドは意味を持たない。命令が完了し、Ｒ３のカウント・フィールドが減分されている場合に、このフィールドに、ストレージ・リスト状態ブロック（ＳＬＳＢ）バッファ状態インジケータから取り出された値が含まれる。命令が完了し、Ｒ３のカウント・フィールドが減分されてない場合には、このフィールドの内容は、変更されないままであり、意味を持たない。
【０３７９】
ＱＤＩＯバッファ状態抽出の動作の単位に、１つのバッファ状態を抽出することと、その状態をＲ２のＢＳＴＡＴＥフィールドにロードすることと、任意選択としてバッファ状態を変更することと、Ｒ３レジスタのカウント・フィールドを１つ減分することと、Ｒ１レジスタのバッファ番号フィールドを１つ増分することが含まれる。バッファ番号フィールドを増分することによって、バッファ番号が、たとえば１２７の、最大バッファ番号を超える場合に、バッファ番号空間でのラップ・アラウンドが行われ、バッファ番号は、たとえば０にリセットされる。
【０３８０】
命令動作は、次のいずれか１つが最初に発生する時に完了する。
【０３８１】
・Ｒ３のカウント・フィールドで指定されるカウントのバッファが、その共通の状態をＲ２のバッファ状態（ＢＳＴＡＴＥ）フィールドに抽出され、エラー状態または例外状態に出会わない場合。この場合に、条件コードおよびＲ３の条件コード修飾子がセットされる。
【０３８２】
・例外状態に出会い、指定されたバッファのうちの０個または一部が、その共通の状態を抽出された場合。この場合には、条件コードがセットされ、Ｒ３の条件コード修飾子に、この例外を示す値がセットされる。Ｒ３レジスタのカウント・フィールドは、抽出されたバッファ状態の数だけ減分され、Ｒ１レジスタのバッファ番号（ＢＮＵＭ）フィールドは、同一の数だけ増分され、必要な場合には０をまたいでラップ・アラウンドする。指定されたバッファ状態は、抽出されている。カウント・フィールドが０でない場合に、Ｒ１のキュー・インデックス（ＱＩＸ）フィールドおよびバッファ番号（ＢＮＵＭ）フィールドは、例外条件にであった時に処理されていたバッファを識別する。
【０３８３】
・エラー状態に出会い、指定されたバッファのどれもが状態を抽出されていない場合。この場合に、条件コードがセットされ、Ｒ３の条件コード修飾子フィールドに、このエラーを示す値がセットされる。
【０３８４】
・指定された総カウントのバッファ状態を抽出せずに、ＣＰＵ判定の個数のバッファが、その共通の状態を抽出された場合。この場合に、条件コードおよびＲ３の条件コード修飾子フィールドがセットされる。Ｒ３レジスタのカウント・フィールドは、抽出されたバッファ状態の数だけ減分され、Ｒ１レジスタのバッファ番号（ＢＮＵＭ）フィールドは、同一の数だけ増分され、必要な場合には０をまたいでラップ・アラウンドする。
【０３８５】
・動作の単一の単位を完了する前に、命令を完了したとＣＰＵが判定する場合。この場合に、条件コードおよび条件コード修飾子がセットされる。Ｒ３レジスタのカウント・フィールドおよびＲ１レジスタのバッファ番号（ＢＮＵＭ）フィールドは、変更されないままになり、状態情報は、Ｒ２レジスタのバッファ状態（ＢＳＴＡＴＥ）フィールドに置かれない。
【０３８６】
指定されたバッファ状態が抽出される前およびその後に、直列化およびチェックポイント同期化動作が実行される。
【０３８７】
ＱＤＩＯバッファ状態抽出の実行は、サブチャネルに含まれる情報を変更せず、入出力サブシステムによるアダプタへの問合せまたはシグナリングを引き起こさない。
【０３８８】
ＥＱＢＳ命令の実行に関連する処理を、図２７から２８を参照して説明する。この命令は、例外状態が発生しない限り、計算機によって有利に実行される。そのような例外状態が発生する場合には、この命令の処理は、ホストによって完了される。
【０３８９】
図２７を参照すると、ＥＱＢＳ命令の発行に応答して、ステップ１４１０で、計算機が、ホスト使用可能化検査を実行して、ホストがＱＥＢＳＭ機能についてゲストを使用可能にしたかどうかを判定する。ゲストが、ページング可能ストレージ・モード・ゲストでないか、ＱＥＢＳＭＩ機能使用可能化コントロールが０である場合には、ステップ１４１２で、処理がホストによって完了される。そうでない場合には、処理は計算機によって継続される。
【０３９０】
次に、ステップ１４１４で、計算機がサブチャネル判定を実行する。一例で、汎用レジスタ１のサブチャネル・トークンが、そのサブチャネルを識別するＳＩＤを含むＱＢＩＣＢを突きとめるのに使用される。サブチャネル・トークンが、ＱＢＩＣＢによって指定されるサブチャネルに保管されたトークンと一致するかどうかに関する判定を行う。一致しない場合には、処理がホストによって完了され、一致する場合には、処理は計算機によって継続される。
【０３９１】
ステップ１４１６で、ＥＱＢＳオペランドが有効であるかどうかに関する判定を行う。一例では、バッファ番号を検証する。Ｒ１のバッファ番号（ＢＮＵＭ）フィールドが、たとえば１２７より大きい値を指定する場合に、ステップ１４１８で、命令が完了し、条件コードおよび条件コード修飾子がセットされる。さらに、カウント値が検証される。Ｒ３のカウント・フィールドが、０の値またはたとえば１２８を超える値を指定する場合に、命令が完了し、条件コードおよび条件コード修飾子がセットされる。さらに、指定されたキューのキュー・ストレージ記述子を突きとめる。Ｒ１のキュー・インデックス・フィールドが、ＱＢＩＣＢキュー・カウント・フィールドの値以上である場合に、指定されたキューは、そのサブチャネルについて確立されておらず、命令が完了し、条件コードおよび条件コード修飾子がセットされる。そうでない場合に、Ｒ１キュー・インデックス・フィールドの値を、ＱＢＩＣＢキュー記述子アドレス・アレイへのインデックスとして使用して、キュー記述子アドレスを判定する。
【０３９２】
その後、ステップ１４２０で、計算機によって、指定されたキューのキュー・ストレージ記述子ロックを獲得する試みが行われる。ＱＳＤアドレスを、指定されたキューのＱＢＩＣＢキュー記述子のキュー・ストレージ・アドレス・フィールドから取り出す。インターロック更新動作を使用して、ＱＳＤロックワード値を使用可能から計算機によるロックに変更する試みを行う。ＱＳＤアドレスが０であるか、ロックワードのセットを試みる時にアクセス例外状態が存在する場合に、例外が認識される。インターロック更新動作が失敗する場合に、この動作を、モデル依存の回数だけ再試行することができる。ＱＳＤロックワードを、事前定義の値にセットできない場合に、部分的実行インターセプトが認識され、ステップ１４２２で、ホストによって処理が完了される。しかし、インターロック更新動作が成功する場合に、処理は計算機によって継続される。
【０３９３】
次に、ステップ１４２４（図２８）で、最初のＱＤＩＯバッファのＳＱＢＮを突きとめる。このバッファの状態は、命令完了時にＳＴＡＴＥで返される状態である。具体的に言うと、指定されたキューのホスト・ストレージ・リストが、キュー・ストレージ記述子のホスト・ストレージ・リスト・アドレス・フィールドからホスト・ストレージ・リスト・アドレスを取り出すことによって突きとめられる。次に、指定されたキューのストレージ・リスト状態ブロックが、キュー・ストレージ記述子のＳＬＳＢアドレス・フィールドからＳＬＳＢアドレスを取り出すことによって突きとめられる。さらに、抽出される最初のＳＬＳＢ項目（ＳＱＢＮ）を突きとめる。Ｒ１のバッファ番号フィールドの値が、ＳＬＳＢへのインデックスとして使用されて、抽出される最初のＳＱＢＮのアドレスが判定される。
【０３９４】
次の論理が、ＥＱＢＳ命令のカウント・フィールドによって指定されるＱＤＩＯバッファの数だけ繰り返される。まず、ステップ１４２６で、処理されるＱＤＩＯバッファのＳＱＢＮおよびＳＢＡＬを突きとめる。次に、ステップ１４２８で、このＳＱＢＮが返されたＳＴＡＴＥと一致するかどうかに関する判定を行う。すなわち、少なくとも１つのバッファ状態が抽出され、現在のバッファのＳＱＢＮに、前に抽出されたものと異なる状態の指定が含まれる場合に、ステップ１４３０で、動作の単位が抑制され、ＥＱＢＳ命令が完了し、条件コードおよび条件コード修飾子がセットされる。そうでない場合には、処理が継続される。
【０３９５】
ステップ１４３１で、指定されたバッファが、現在プログラムによって諸流され、抽出を必要とする（ホストＳＢＡＬのバッファ同期化＝１）場合に、ＳＢＡＬ内のすべてのＳＢＡＬＥ（たとえば１６個）について、次を実行する。
【０３９６】
（１）ステップ１４３２で、ＳＢＡＬＦ  ２を除いて、ホストＳＢＡＬＥのＳＢＡＬＦフィールドをプログラムＳＢＡＬＥの対応するフィールドにコピーする
【０３９７】
（２）ページ・ピン固定インジケータがホストＳＢＡＬでオンである場合に、
【０３９８】
ａ）ステップ１４３４で、ＨＰＭＡピン解除機能を、ホスト仮想アドレス（プログラムＳＢＡＬＥから）およびホスト実アドレス（ホストＳＢＡＬＥから）を用いて呼び出す
【０３９９】
ｂ）ステップ１４３６で、ピン解除機能が成功であったかどうかに関する判定を行う。ピン解除が不成功であった場合には、ステップ１４３８で、ホストによって処理が完了される。そうでない場合には、処理は計算機によって継続される。
【０４００】
ｃ）ステップ１４３８で、ホストＳＢＡＬＥのページ・ピン固定インジケータに０をセットする。
【０４０１】
ｄ）ステップ１４４０（図２９）で、キューが入力キューである場合に、ホストＳＢＡＬＥカウントをプログラムＳＢＡＬＥにコピーする
【０４０２】
ｅ）ステップ１４４２で、フォーマット２入力キューの場合に、ホストＳＢＡＬＥのバッファ・データ・オフセット（すなわち、バッファ・ページへのデータのオフセット）をゲストＳＢＡＬＥにコピーし、バッファ・アドレスの残りは手付かずのままにする
【０４０３】
（３）その後、ステップ１４４で、ホストＳＢＡＬのバッファ同期化必要インジケータおよびＥＱＢＳ動作必要インジケータをオフにし、ＱＳＤの状態推移カウントを１つ増分する。
【０４０４】
ステップ１４４６で、入力バッファ肯定応答制御がオンであり、ＳＱＢＮの値が入力バッファ・プライム状態を示す場合に、ＳＱＢＮに入力バッファ肯定応答状態をセットする。ステップ１４４８で、ＥＱＢＳバッファ番号も１つ増分し、ステップ１４５０で、ＥＱＢＳカウント・フィールドを１つ減分する。
【０４０５】
次に、ステップ１４５２で、ＥＱＢＳカウントが０と等しいかどうかに関する判定を行う。そうでない場合には、処理は、ステップ１４２６（図２８）で、処理されるＱＤＩＯバッファのＳＱＢＮおよびＳＢＡＬを突きとめることによって継続される。ＥＱＢＳカウントが０と等しい場合には、処理は、成功の表示と共に完了する。プログラムは、ステップ１４５４で、アダプタ所有状態からプログラム所有状態に推移したバッファを処理する。たとえば、プログラムは、到着した入力を処理するか、出力要求の完了を処理する（たとえば、バッファを再利用する）ことができる。
【０４０６】
ＥＱＢＳ処理が、ホストによって完了されなければならなかった場合には、計算機ではなくホストが、適当な条件コードおよび条件コード修飾子をプログラムに提示する。
【０４０７】
上で説明したように、ＥＱＢＳ命令は、ＨＰＭＡ仮想アドレスによるピン解除機能を呼び出すことができる。この機能は、ＣＰＵに、もはや入出力要求のためにホスト・ページの内容をホスト・ページ・フレームにピン固定する必要がないことを示す能力を与える。ピン解除されるページは、ホスト仮想アドレスによって指定される。ページが成功裡にピン解除される場合に、ページに関連する１つまたは複数のページ・ピン固定カウンタを減分することができる。
【０４０８】
一例で、この機能への入力に、ピン固定される仮想アドレス（ページ）、ゲストに割り当てられたアドレス空間および使用される変換テーブルを識別する有効アドレス空間制御要素（ＡＳＣＥ）、およびピン解除されるページのホスト実アドレスが含まれる。
【０４０９】
ホスト・データ構造有効性判定を容易にするために、仮想アドレスによるホスト・ページ・ピン解除機能の呼出し側は、この機能が呼び出されるチェックポイント・インターバル全体を通じてインターバル完了インジケータがセットされるようにする責任を負う。仮想アドレスによるホスト・ページ・ピン解除機能は、インターバル完了インジケータを検査せず、変更しない。
【０４１０】
仮想アドレスによるホスト・ページ・ピン解除機能に関連する論理の一実施形態を、図３１を参照して説明する。まず、ステップ１６００で、ページのＰＴＥ／ＰＧＳＴＥ対を突きとめる。ピン解除されるホスト仮想アドレスおよびホスト・アドレス空間制御要素（ＡＳＣＥ）を使用して、対応するページ・テーブル項目およびページ状況テーブル項目のホスト実アドレスが判定される。突きとめられたならば、ステップ１６０２で、ＰＴＥ／ＰＧＳＴＥ対を、たとえばページ制御インターロック・インジケータを０から１に変更するインターロック更新動作を使用してロックする。照会１６０４で、ＰＴＥ／ＰＧＳＴＥ対をロックできないか、ＰＧＳＴＥ．ＰＣＬが既に１である場合には、ステップ１６０６で、処理が失敗で終了し、そうでない場合には、処理が継続される。
【０４１１】
照会１６０８で、ページのピン・カウントが、次のピン解除でアンダーフローする（すなわち、ＰＧＳＴＥのピン・カウント・フィールドの値が０である）かどうかに関する判定を行う。そうである場合には、ステップ１６０６で、処理がやはり失敗で終了し、そうでない場合には、ステップ１６１０で、ピン解除される仮想ページのＰＴＥを取り出すことによって処理が継続される。一例では、ページ・テーブル項目が、ホスト・ストレージからブロック並列に取り出される。
【０４１２】
照会１６１２で、ページが無効であるかページ無効ビットが１である場合に、処理は、やはりステップ１６０６において失敗で終了する。そうでない場合に、照会１６１４で、不正なＰＴＥが突きとめられたかどうかに関する判定を行う。すなわち、ＰＴＥのページ・フレーム実アドレス・フィールドが、ピン解除されるページの入力ホスト実アドレスと同一のページを指定しない場合に、不正なＰＴＥが突きとめられており、処理はステップ１６０６で終了する。そうでない場合には、処理が継続される。ステップ１６１６で、ＰＧＳＴＥのピン・カウント・フィールドを１つ増分し、照会１６１８で、ページ状態がピン固定からピン解除に変更されているかどうかに関する判定を行う。ページ状態がピン固定状態からピン解除状態に変更されている場合に、ステップ１６２０で、関連するデルタ・ページ・ピン固定カウントを１つ減分する。すなわち、ピン・カウントが０であり、ピン・カウントがオーバーフロー状態でない（ＰＧＳＴＥ．ＰＣＯ＝０）場合に、ピン状態は、ピン固定状態からピン解除状態に推移しており、デルタ・ページ・ピン固定カウントが、１つ減分される。
【０４１３】
その後、またはページ状態がピン固定からピン解除に変化していない場合に、ステップ１６２２で、たとえばページ制御インターロック・インジケータに０をセットすることによって、ＰＴＥ／ＰＧＳＴＥ対をロック解除する。これによって、仮想アドレスによるピン解除機能の処理が完了する。
【０４１４】
ピン解除機能が、失敗の表示と共に終了する場合に、状況テーブルへの変更は行われていない。この場合に、計算機は、その機能が呼び出されなかったかのように振る舞い、ホストに、その失敗を処理するために制御が与えられる。この機能が、成功の表示と共に終了する場合に、指定されたページが、ピン解除されている。この場合に、ホスト状況テーブルは、計算機によって更新されており、ページ・ピン解除のためにホストに制御を転送するという前の要件が、軽減される。
【０４１５】
呼び出すことができるもう１つの機能が、ＰＴＥアドレスによるホスト・ページ・ピン解除機能である。この機能は、ＣＰＵに、ホスト・ページの内容がもはやホスト・ページ・フレームにピン固定されないことを示す能力を与える。ピン解除されるページは、ホスト・ページ・テーブル項目のホスト実アドレスまたはホスト絶対アドレスによって指定される。ページが成功裡にピン解除される時に、ページ・テーブル項目に関連する１つまたは複数のページ・ピン固定カウンタを減分することができる。
【０４１６】
一例で、ＰＴＥアドレスによるホスト・ページ・ピン解除機能への入力に、ピン解除されるページのホスト実アドレスまたはホスト・ページ・テーブル項目が含まれる。
【０４１７】
ＰＴＥアドレスによるホスト・ページ・ピン解除機能に関連する論理の一実施形態を、図３２を参照して説明する。まず、ステップ１７００で、入力ページ・テーブル項目に対応するページ状況テーブル項目を突きとめる。次に、ステップ１７０２で、ＰＴＥ／ＰＧＳＴＥ対をロックする。一例で、ＰＧＳＴＥのページ制御インターロック・インジケータを０から１に変更する試みで、インターロック更新動作が使用される。照会１７０４で、ＰＴＥ／ＰＧＳＴＥ対をロックできないか、ＰＧＳＴＥ．ＰＣＬが既に１である場合に、ステップ１７０６で、処理が失敗で終了する。
【０４１８】
その一方で、ロックが成功の場合に、照会１７０８で、ページのピン・カウントが、次のピン解除でアンダーフローするかどうか（すなわち、ＰＧＳＴＥのピン・カウント・フィールドの値が０であるかどうか）に関する判定を行う。そうである場合には、ステップ１７０６で、処理がやはり失敗で終了する。そうでない場合には、ステップ１７１０で、ピン解除される仮想ページのＰＴＥを取り出す。一例で、これは、ホスト・ストレージからブロック並列に取り出される。
【０４１９】
その後、照会１７１２で、ページが無効であるかどうかに関する判定を行う。具体的には、ページ無効インジケータを検査する。これが１である場合には、ページは無効であり、ステップ１７０６で処理が失敗で終了する。ページが有効である場合には、ステップ１７１４で、ＰＧＳＴＥのピン・カウント・フィールドを１つ減分する。
【０４２０】
次に、照会１７１６で、ページ状態がピン固定からピン解除に変更されているかどうかに関する判定を行う。ピン・カウントが０であり、ピン・カウントがオーバーフロー状態でない場合に、ピン状態は、ピン固定状態からピン解除状態に推移している。したがって、ステップ１７１８で、デルタ・ページ・ピン固定カウントを１つ減分する。その後、またはページ状態がピン固定からピン解除に変更されていない場合に、ステップ１７２０で、ＰＴＥ／ＰＧＳＴＥ対をロック解除する。一例では、これに、ページ制御インターロック・インジケータに０をセットすることが含まれる。これによって、ＰＴＥアドレスによるピン解除機能の処理が完了する。
【０４２１】
ピン解除機能が失敗の表示で終了する場合に、状況テーブルに対する変更は行われていない。この場合に、計算機は、機能が呼び出されなかったかのように振る舞い、ホストに、この失敗を処理するために制御が与えられる。この機能が成功の表示と共に終了する場合に、指定されたページがピン解除されている。この場合に、ホスト変換テーブルが、計算機によって更新されており、ページ・ピン解除のためにホストに制御を転送するという以前の要件が、軽減される。
【０４２２】
上で詳細に説明したものは、ホスト介入なしの、ページング可能ストレージ・ゲストからの入出力動作要求の解釈に関連する処理である。要求は、ネットワーク・プロトコル（たとえばインターネット・プロトコル）に対する要求または、ネットワーク・プロトコルに基づくＱＤＩＯアダプタまたは類似するアダプタを介するネットワーク装置への要求とすることができる。もう１つの例として、要求を、ファイバ・チャネル・プロトコル（ＦＣＰ）に基づく、ファイバ・チャネル接続された装置への要求とすることができる。
【０４２３】
ＦＣＰアダプタは、ＱＤＩＯアダプタなどの非ＦＣＰアダプタに似て、アダプタとメイン・ストレージの間のチャネル経路を介してＣＰＣ内の他の要素に接続される。しかし、ＦＣＰアダプタに関連する処理は、いくつかの点で、非ＦＣＰアダプタに関連する処理と異なる。たとえば、データ入力およびデータ出力は、ＱＤＩＯ出力キューを介して実行され、ＱＤＩＯ入力キューは、アダプタが入出力動作の完了をシグナリングすることだけに使用される。さらに、ＦＣＰアダプタが、出力キュー・バッファをプログラム所有状態にする場合に、データの転送を含む入出力動作が、完全には完了しない場合がある（これは、非ＦＣＰアダプタのＱＤＩＯアーキテクチャと対照的である）。バッファが、プログラム所有状態である場合でも、アダプタが入力キューを介する入出力動作の完了をシグナリングするまで、プログラムは、バッファ・ページに対するアクションを実行しない。しかし、プログラムは、バッファ・ページが未変更のままである限り、バッファに関連するＱＤＩＯデータ構造に対するアクションを実行することができる。
【０４２４】
ＦＣＰ動作が開始される時に、一意の要求ｉｄが、プログラムからアダプタに渡される。動作が完全に完了したこととプログラムがバッファ・ページと相互作用できることをシグナリングするのは、入力キューで返されるこの要求ｉｄである。
【０４２５】
したがって、ＦＣＰでは、ＱＤＩＯデータ構造からバッファ・ページを切断する能力がある。言い換えると、ＱＤＩＯデータ構造内のバッファ・ページのアドレスのコピーを、別の位置で保持することができ、新しいバッファ・ページを割り振ることができ、そのアドレスは、ＱＤＩＯデータ構造、具体的には所望のＳＢＡＬＥに置かれ、新しい入出力動作が開始され、このすべてが、動作がバッファ・ページの元の組（アドレスがコピーされた）に対して完了したアダプタからの要求ｉｄを待っている間に行われる。
【０４２６】
切断されたバッファ・ページの記述のこの保存を容易にするために、ＦＣＰ動作ブロック（ＦＯＢ）が設計された。ＦＯＢは、ゲストがＦＣＰ要求を指定することによってＳＱＢＳが発行される時に作られる構造であり、計算機がページを解決し、ピン固定する時に、ＦＯＢ内に、バッファ・ページのホスト・ページ・テーブル項目アドレスが記録される。計算機は、ゲストの要求ｉｄもＦＯＢに記録し、これをＦＯＢのアドレスと等しい要求ｉｄと置換する。その後、アダプタが入力キューでその要求ｉｄを返し、ゲストが入力キューの状態を問い合わせるためにＥＱＢＳを発行する場合に、計算機は、ＦＯＢを突きとめ、ページをピン解除し、要求ｉｄを、前に記録された元のゲスト値に置換することができる。
【０４２７】
ＦＣＰの処理に関するさらなる詳細を、図３３から３６および３７から４１を参照して説明する。具体的に言うと、ＦＣＰプロトコルのＳＱＢＳ命令に関連する処理の一例を、図３３から３６を参照して説明し、ＦＣＰプロトコルのＥＱＢＳ命令に関連する処理の一例を、図３７から４１を参照して説明する。
【０４２８】
まず図３３を参照すると、ＦＣＰに関するＱＤＩＯバッファ状態セット命令を呼び出す前に、ある初期化が行われる。たとえば、ホストは、ステップ１８００（図３３）で、たとえば処理済みフレーム記述子リストのフレームの除去および処理を含むさまざまなクリーンアップ・タスクを実行する。クリーンアップを実行するほかに、ホストは、ステップ１８０２で、使用可能記述子リストおよび使用可能ＦＯＢリストに十分なフレームがあるようにする。
【０４２９】
クリーンアップまたは関連リストに十分なフレームがあるようにすることあるいはその両方の後に、ホストは、ステップ１８０４で、プログラムの解釈実行を開始することができる。プログラムは、実行を開始し、実行中に、ステップ１８０６で、アダプタに次に転送されるＱＤＩＯバッファを選択する。プログラムは、１８０８で、データ転送に使用されるストレージ・ブロックのプログラム絶対アドレスをＳＢＡＬに書き込む。さらに、ステップ１８１０で、プログラムは、ＱＤＩＯバッファの状態をプログラム所有からアダプタ所有に変更するＱＤＩＯバッファ状態セット命令を発行することによって、バッファの所有権をアダプタに転送する。
【０４３０】
ＳＱＢＳ命令の発行に応答して、ステップ１８１２で、計算機が、ホスト使用可能化検査を実行して、ホストがＱＥＢＳＭ機能についてゲストを使用可能にしたかどうかを判定する。ステップ１８１４で、ＱＥＢＳＭＩ使用可能化コントロール（たとえばゲスト状態内）に０がセットされ、非使用可能化が示される場合に、ステップ１８１６で、処理が、計算機ではなくホストによって完了される。ＱＤＩＯバッファ状態セット命令中に、ホストからのアクションまたはサービスを必要とする状態に出会う場合に、命令インターセプトまたは部分的実行インターセプト（ＰＥＩ）のいずれかが認識され、インターセプション・パラメータに、ＱＤＩＯバッファ状態セット命令テキストがセットされ、ＰＥＩの場合に、ＱＥＢＳＭ−ＰＥＩパラメータがゲスト状態にセットされる。
【０４３１】
次に、ステップ１８１８で、計算機が、サブチャネル判定を実行し、サブチャネル・トークンがＱＢＩＣＢによって指定されるサブチャネルに保管されたトークンと一致するかどうかに関する判定を行う。一致しない場合に、ステップ１８２０で、ホストによって処理が完了される。そうでない場合には、処理は計算機によって継続される。
【０４３２】
さらに、ステップ１８２２で、ＳＱＢＳオペランドが有効であるかどうかに関する判定が、計算機によって行われる。オペランドのいずれかが無効である場合に、ステップ１８２４で処理が終了し、条件コードおよび条件コード修飾子がセットされる。そうでない場合に、処理が継続される。
【０４３３】
次に、ステップ１８２６で、指定されたキューのキュー・ストレージ記述子ロックを獲得する試みを行う。ＱＳＤロックが獲得されない場合には、ステップ１８２８で、ホストによって処理が完了される。そうでない場合に、処理が計算機によって継続される。
【０４３４】
次の論理が、ＳＱＢＳ命令のカウント・フィールドで指定されるＱＤＩＯバッファの個数だけ繰り返される。まず、ステップ１８３０で、処理されるＱＤＩＯバッファのＳＱＢＮ、プログラムＳＢＡＬ、および対応するホストＳＢＡＬを突きとめる。その後、ステップ１８３２で、指定されたバッファが現在プログラムによって所有されているかどうかに関する判定を行う。バッファがプログラムによって所有されていない場合には、ステップ１８３４で、処理が、条件コードおよび条件コード修飾子と共に完了する。そうでない場合に、処理は、ステップ１３８６（図３４）で、指定されたバッファの状態をＥＱＢＳ命令を用いて抽出しなければならないかどうかに関する判定によって継続される。そうである場合には、ステップ１８３８で、やはり、処理が条件コードおよび条件コード修飾子と共に完了する。そうでない場合には、ステップ１８４０で、ゲストＳＢＡＬの内容をホストＳＢＡＬにコピーすることによって処理が継続される。さらに、ステップ１８４２で、ホストＳＢＡＬのバッファ同期化必要ビットおよびＥＱＢＳ動作必要ビットをセットする。
【０４３５】
さらに、これが新しいＦＣＰ要求である（複数のＳＢＡＬにまたがる要求の継続ではなく）ことをＳＢＡＬバッファ・シーケンス・ビットが示す場合に、ステップ１８４４で、前のＦＣＰ要求が存在する場合に、そのＦＣＰ要求を完了としてマークする。たとえば、ホストＳＢＡＬＥ  ０項目を、新しい要求の表示について検査する。ゲストＳＢＡＬＥ  ０のＳＢＡＬ−Ｆｌａｇｓ（ＳＢＡＬＦ）フィールドのバッファ・シーケンス・タイプが、コマンドが指定されていることを示し、ＱＳＤアドレスのキュー・フラグ・フィールドの保留中要求コンポーネントＦＯＢリスト完了ビットが１であり、アクティブ要求ヘッドＦＯＢリストにＦＯＢがある場合に、リストの最初のヘッドＦＯＢのフラグ・フィールドの構成完了ビットに１をセットし、ＱＳＤアドレスのキュー・フラグ・フィールドの保留中要求コンポーネントＦＯＢリスト完了ビットに０をセットする。
【０４３６】
次に、ステップ１８４６で、使用可能ＦＯＢリストにＦＯＢがあるかどうかに関する判定を行う。そうでない場合には、ステップ１８４８で、ホストによって処理が完了される。そうである場合には、処理が計算機によって継続される。たとえば、ステップ１８５０で、使用可能ＦＯＢリストの最初の使用可能ＦＯＢが、そのリストから除去され、使用可能ＦＯＢカウントが１つ減分される。次に、ステップ１８５２で、ＳＢＡＬのバッファ・シーケンス・ビットに基づいて、新しいＦＯＢを適当なリストに追加する。たとえば、これが最初のまたは唯一のＳＢＡＬである場合に、これは新しいＦＣＰ要求である。その場合に、このＦＯＢはヘッドＦＯＢであり、アクティブ要求ＦＯＢリストに挿入され、要求が、ＦＯＢ内でアクティブとマークされる。しかし、これが途中のまたは最後のＳＢＡＬである場合に、これは、複数ＳＢＡＬ  ＦＣＰ要求の継続または最後のＳＢＡＬである。したがって、このＦＯＢは、非ヘッド・コンポーネントＦＯＢであり、キュー・ストレージ記述子でアンカされたアクティブ要求ＦＯＢリストの最初のヘッドＦＯＢの要求コンポーネントＦＯＢリストに追加される。
【０４３７】
ステップ１８５４で、ヘッドＦＯＢについて、次の処理を行う。
【０４３８】
１）ステップ１８５６で、ＱＳＤフラグの保留中要求コンポーネント完了インジケータをセットする。
【０４３９】
２）ステップ１８５８で、ＳＢＡＬＥ  ０のプログラムによって指定される要求識別子をゲスト要求ｉｄフィールドに保管する。
【０４４０】
３）ステップ１８６０（図３５）で、ＱＳＤのアドレスを、この要求に関連する特定のキューを識別するＦＯＢ内のキュー・ストレージ記述子アドレス・フィールドに保管する。
【０４４１】
４）ステップ１８６２で、ＱＢＩＣＢのアドレスを、サブチャネルをこの要求に関連付けるＱＤＩＯバッファ情報制御ブロック・アドレス・フィールドに保管する。
【０４４２】
５）ステップ１８６４で、ヘッドＦＯＢのアドレスを、ホストＳＢＡＬのＳＢＡＬＥ  ０の要求ｉｄフィールドとしてセットする。
【０４４３】
６）ステップ１８６６で、ＳＢＡＬＦ  ０からのＦＣＰストレージ・ブロック・タイプを、ＦＯＢのストレージ・ブロック・タイプに保管して、実行されるストレージ動作のタイプを定義する。
【０４４４】
さらに、ステップ１８６８で、有効なストレージ・ブロック・アドレスを有する意味のあるホストＳＢＡＬＥごとに、次の機能を実行する。
【０４４５】
１）ステップ１８７０で、プログラム絶対（ホスト仮想）ストレージ・ブロック・アドレスを、ホストＳＢＡＬＥから取り出す。
【０４４６】
２）ステップ１８７２で、ＨＰＭＡピン固定機能を呼び出して、ページを変換し、ストレージ内でロックする。一例で、ＨＰＭＡ機能が、呼び出され、次の入力データ項目を渡される。
【０４４７】
・ピン固定されるホスト仮想アドレス：ホストＳＢＡＬＥからのゲスト・ストレージ・ブロック・データ・アドレスが、ピン固定される仮想アドレスである。
【０４４８】
・ページがピン固定されるアドレス空間の有効ホスト・アドレス空間制御要素（ＡＳＣＥ）：主アドレス空間制御要素（ＰＡＳＣＥ）が、有効ＡＳＣＥとして指定される。
【０４４９】
・取り出しまたはストアのアクセス表示：指定されたキューが入力キューである場合に、ストア・アクセス動作が示される。指定されたキューが出力キューであり、ＱＢＩＣＢキュー・フォーマット（ＱＦＭＴ）フィールドが、そのキューがフォーマット１出力キューでないことを示す場合に、取出しアクセス動作が示される。指定されたキューが出力キューであり、ＱＢＩＣＢキュー・フォーマット（ＱＦＭＴ）フィールドが、そのキューがフォーマット１出力キューであることを示す場合に、ホストＳＢＡＬＥが書き込みバッファ・ストレージ・ブロックを指定するならば取出しアクセス動作、そうでなければストア・アクセス動作が示される。
【０４５０】
・ページの内容を置換できるかどうかの表示：指定されたキューが入力キューである場合に、ページ内容置換が示される。指定されたキューが出力キューであり、ＱＢＩＣＢキュー・フォーマット（ＱＦＭＴ）フィールドが、そのキューがフォーマット１出力キューでないことを示す場合に、ページ内容置換は示されない。指定されたキューが出力キューであり、ＱＢＩＣＢキュー・フォーマット（ＱＦＭＴ）フィールドが、そのキューがフォーマット１出力キューであることを示す場合に、ホストＳＢＡＬＥが状況読取バッファまたは読取バッファ・ストレージ・ブロックを指定し、ＳＢＡＬＥのデータ・カウントが、たとえば４Ｋバイトであるならば、ページ置換が示される。
【０４５１】
３）ステップ１８７４で、ＨＰＭＡピン固定機能が不成功の場合に、ステップ１８７６で、ホストによって処理が完了される。そうでない場合に、処理は計算機によって継続される。たとえば、ＨＰＭＡホスト・ページ・ピン固定機能が、成功の表示と共に完了する場合に、ホスト・ページ・ピン固定機能によって返されるページ・フレーム実アドレスが、ホストＳＢＡＬＥのデータ・アドレス・フィールドにコピーされ、現在のＳＢＡＬＥの仮想化フラグ（ＶＦｌａｇｓ）フィールドのページ・ピン固定インジケータ・ビットに１がセットされる。ＨＰＭＡホスト・ページ・ピン固定機能が、有効性インターセプトを認識しなければならないことの表示と共に完了する場合に、示された有効性インターセプトが認識される。ＨＰＭＡホスト・ページ・ピン固定機能が、失敗の表示と共に完了する場合に、部分的実行インターセプトが、認識され、ゲスト状態のＱＥＢＳＭ−ＰＥＩパラメータの部分的実行インターセプト理由コードが、ＨＰＭＡホスト・ページ・ピン固定機能失敗理由に従ってセットされ、そうでない場合には、処理が継続される。
【０４５２】
４）ステップ１８７８（図３６）で、ＨＰＭＡによって返されるＰＴＥアドレスを、ＦＯＢ  ＰＴＥアドレス・アレイの次の使用可能項目に移動し、ＰＴＥカウント・フィールドを、１つ増分する。
【０４５３】
５）ステップ１８８０で、ホストＳＢＡＬＥのデータ・カウント・フィールドに、ＱＳＤのバイト転送カウントを加算する。
【０４５４】
これが複数ＳＢＡＬの最後のＳＢＡＬまたはＦＣＰ要求の唯一のＳＢＡＬである場合に、要求が、ＦＯＢ内で完了とマークされ、保留中要求ＦＯＢリスト完了インジケータに、０がセットされる。
【０４５５】
その後、ステップ１８８４で、バッファのＳＱＢＮに、ＳＱＢＳ命令によって指定されたアダプタ所有状態をセットする。さらに、ステップ１８８６で、ＳＱＢＳバッファ番号を１つ増分し、ステップ１８８８で、ＳＱＢＳカウント・フィールドを１つ減分する。
【０４５６】
ステップ１８９０で、ＳＱＢＳカウントが０と等しいかどうかに関する判定を行う。ＳＱＢＳカウントが０と等しくない場合には、処理は、ステップ１８３０（図３３）で、処理されるＱＤＩＯバッファのＳＱＢＮ、プログラムＳＢＡＬ、およびホストＳＢＡＬを突きとめることによって継続される。しかし、ＳＱＢＳカウントが０と等しい場合には、ステップ１８９２で、ＱＳＤロックをロック解除することによって処理が継続される。成功の場合に、ステップ１８９４で、成功の表示がプログラムに転送される。ステップ１８９６で、これが、この時に転送される最後のＱＤＩＯバッファである場合に、ＳＩＧＡ−ｗｔ命令を発行する。
【０４５７】
ＦＣＰプロトコルに関するＳＱＢＳ命令の処理に関連する上記の変更のほかに、ＥＱＢＳ命令に関連する変更がある。ＦＣＰ要求に関するＥＱＢＳ命令に関連する論理の一例を、図３７から４１を参照して説明する。
【０４５８】
プログラムを実行する前に、ある初期化が行われる。たとえば、ステップ１９００で、ホストは、たとえば処理済みフレーム記述子リストのフレームの除去および処理を含むさまざまなクリーンアップ・タスクを実行する。さらに、ステップ１９０２で、ホストは、使用可能フレーム記述子リストおよび使用可能ＦＯＢリストに十分なフレームがあるようにする。その後、ステップ１９０４で、ホストが、プログラムの解釈実行を開始する。
【０４５９】
実行中に、ステップ１９０６で、プログラムが、アダプタが処理を完了するのをプログラムが待っている次の未解決のＱＤＩＯバッファを選択する。ステップ１９０８で、プログラムが、ＥＱＢＳ命令を発行して、選択されたバッファの現在の状態を取り出す。
【０４６０】
ステップ１９１０で、ＥＱＢＳ命令の発行に応答して、計算機が、ホスト使用可能化検査を実行して、ホストがＱＥＢＳＭ機能についてゲストを使用可能にしたかどうかを判定する。照会１９１２で、ゲストが、ページング可能ストレージ・モード・ゲストでないか、ＱＥＢＳＭＩ機能使用可能化コントロールが０である場合に、ステップ１９１４で、ホストによって処理が完了される。そうでない場合には、処理は計算機によって継続される。
【０４６１】
次に、ステップ１９１６で、計算機が、サブチャネル判定を実行する。サブチャネル・トークンがＱＢＩＣＢによって指定されたサブチャネルに保管されたトークンと一致しない場合に、ステップ１９１４で、ホストによって処理が完了される。そうでない場合に、処理は計算機によって継続される。
【０４６２】
さらに、ステップ１９１８で、ＥＱＢＳオペランドが有効であるかどうかに関する判定を行う。１つまたは複数のオペランドが無効である場合に、ステップ１９２０で、処理が終了し、条件コードおよび条件コード修飾子がセットされる。そうでない場合に、処理が継続される。
【０４６３】
ステップ１９２２で、指定されたキューのキュー・ストレージ記述子ロックを獲得する試みを、計算機によって行う。ＱＳＤロックが獲得されない場合に、ステップ１９２４で、部分的実行インターセプトが認識され、ホストによって処理が継続される。しかし、ロックが獲得される（たとえば、インターロック更新動作が成功する）場合に、処理は、計算機によって継続される。
【０４６４】
次に、ステップ１９２６で、最初のＱＤＩＯバッファのＳＱＢＮを突きとめる。このバッファの状態は、命令完了時にＳＴＡＴＥで返される状態である。
【０４６５】
ＥＱＢＳ命令のカウント・フィールドによって指定されるＱＤＩＯバッファの数だけ、次の論理を繰り返す。まず、ステップ１９２８で、処理されるＱＤＩＯバッファのＳＱＢＮ、プログラムＳＢＡＬ、および対応するホストＳＢＡＬを突きとめる。次に、ステップ１９３０（図３８）で、ＳＱＢＮが返されたＳＴＡＴＥと一致するかどうかに関する判定を行う。そうでない場合には、ステップ１９３２で処理が終了し、条件コードおよび条件コード修飾子がセットされる。そうでない場合に、処理が継続される。
【０４６６】
ステップ１９３４で、キューがＦＣＰ（たとえばフォーマット１）出力キューであり、ＳＱＢＮがプログラム所有状態を指定する場合に、ホストＳＢＡＬのバッファ同期化必要インジケータおよびＥＱＢＳ動作必要インジケータをオフにする。さらに、ステップ１９３６で、ＳＢＡＬＦ  ２を除くＳＢＡＬＦフィールドを、プログラムＳＢＡＬＥの対応するフィールドにコピーする。
【０４６７】
ステップ１９３８で、指定されたバッファが、現在はプログラムによって所有され、フォーマット１入力キューである場合に、ホストＳＢＡＬでＳＢＡＬＥ要求識別子フィールドが０でない意味のあるＳＢＡＬＥについて、次のステップを実行する。
【０４６８】
１）完了したＦＣＰ要求を表すヘッドＦＯＢの絶対アドレスは、ホストＳＢＡＬＥで返される要求識別子である。ステップ１９４０で、この要求識別子が有効なＦＯＢを指定するかどうかに関する判定を行う。たとえば、要求ｉｄによってポイントされるＦＯＢで指定されるＱＢＩＣＢのサブチャネル・トークンが、ＳＱＢＳ命令で指定されたトークンと一致するかどうかに関する検査を行う。一致しない場合に、ステップ１９４２でホストにより処理が完了され、一致する場合に、処理は計算機によって継続される。
【０４６９】
２）アダプタによって返されたヘッドＦＯＢが、そのＦＯＢで指定されたＱＢＩＣＢのサブチャネル・トークンがＳＱＢＳ命令で指定されたトークンと一致することを検証することによって、このユーザについて検証される。ステップ１９４４で、ＦＯＢがこのユーザに関するものでない場合には、ステップ１９４６で、ホストによって処理が完了され、ＦＯＢがこのユーザに関するものである場合には、計算機によって処理が継続される。
【０４７０】
３）ＦＣＰ要求が開始された時に作られたＦＯＢで指定された出力キューのＱＳＤロックを獲得する試みを行う。ステップ１９４８（図３９）で、ロックを適当な時間のうちに獲得できない場合には、ステップ１９５０でホストによって処理が完了され、そうでない場合には、処理は計算機によって継続される。このステップおよび、計算機が１つまたは複数のロックを入手した後に処理がホストによって完了された後のステップでは、これらのロックの状態が、まず、「ホストのための計算機によるロック」に変更される。
【０４７１】
４）ＦＯＢが、現在アクティブ要求リストにあり、完全であることを検証する。ステップ１９５２で、要求アクティブ・インジケータおよび構成完了インジケータが、オンであり、要求ｉｄポスト済みインジケータがＦＯＢフラグでオフである場合に、ステップ１９５４でホストによって処理が完了され、そうでない場合に、計算機によって処理が継続される。
【０４７２】
５）ステップ１９５６で、ヘッドＦＯＢフラグ・フィールドの要求ｉｄポスト済みインジケータにオンをセットする。
【０４７３】
６）ステップ１９５８で、要求を表すヘッドＦＯＢおよびヘッドＦＯＢに関連し、それからリンクされるコンポーネントＦＯＢについて、次の論理が発生する（ヘッドＦＯＢが最後に処理される）。
【０４７４】
ａ）ステップ１９６０で、ＦＯＢ  ＰＴＥカウントによって指定される範囲内のＦＯＢの非０ＰＴＥアドレス・アレイ項目ごとに、ＨＰＭＡ  ＰＴＥアドレスによるホスト・ピン解除機能を呼び出す。ピン解除機能が不成功の場合に、ステップ１９６２で、ホストによって処理が完了され、そうでない場合に、計算機によって処理が継続される。
【０４７５】
ｂ）ステップ１９６４（図４０）で、これがコンポーネントＦＯＢである場合に、ヘッドＦＯＢからアンカされた要求コンポーネントＦＯＢリストからこれを除去する。
【０４７６】
ｃ）ステップ１９６６で、これがヘッドＦＯＢである場合に、ヘッドＦＯＢからのゲスト要求ｉｄをプログラムＳＢＡＬＥの要求ｉｄフィールドにコピーし、ホストＳＢＡＬＥの要求ｉｄをゼロにして、要求ｉｄが処理されたことを示し、出力キューＱＳＤからアンカされたアクティブ要求ＦＯＢリストからヘッドＦＯＢを除去する。
【０４７７】
ｄ）ステップ１９６８で、ＦＯＢの事前に指定されたワードをクリアし、使用可能ＦＯＢリストの先頭に挿入し、使用可能ＦＯＢカウントを１つ増分する。
【０４７８】
７）ステップ１９７０で、出力キューＱＳＤロックを解放する。
【０４７９】
８）ステップ１９７２で、ホストＳＢＡＬのバッファ同期化必要インジケータおよびＥＱＢＳ動作必要インジケータをオフにし、状態推移カウントを１つ増分する。
【０４８０】
ステップ１９７４で、入力バッファ肯定応答コントロールが１であり、ＳＱＢＮの値が入力バッファ・プライム状態を示す場合に、ＳＱＢＮに、入力バッファ肯定応答状態をセットする。
【０４８１】
その後、ステップ１９７６で、ＥＱＢＳバッファ番号を１つ増分し、ステップ１９７８で、ＥＱＢＳカウント・フィールドを１つ減分する。ステップ１９０８（図４１）で、ＥＱＢＳカウント・フィールドが０と等しくない場合に、処理は、ステップ１９２８（図３７）で、処理されるＱＤＩＯバッファのＳＱＢＮ、プログラムＳＢＡＬ、および対応するホストＳＢＡＬを突きとめることによって継続される。そうでない場合に、ステップ１９８２で処理が完了する。ステップ１９８４で、プログラムは、アダプタ所有状態からプログラム所有状態に推移したバッファを処理することができる。
【０４８２】
上で説明したように、ＱＤＩＯアーキテクチャは、ページング可能ストレージ・モード・ゲストがネイティブに近いＱＤＩＯ性能を経験できるように拡張されている。このＶ＝Ｖ  ＱＤＩＯパススルー能力は、仮想計算機動作環境なしでネイティブに導出されるものと同一レベルのプロセッサ効率に近づくことができる。これは、ＱＤＩＯバッファ状態情報を、ページング可能ストレージ・モード・ゲスト実行アドレス空間からホスト（たとえばＶＭホスト）ストレージに再配置することと、ゲストがバッファ状態を操作でき、ホスト変換およびシャドウ構造をそれ相応に管理できるようにする命令を実装することによって達成される。プログラム・ストレージ内のバッファ状態を直接にアドレッシングするのではなく、キュー番号／バッファ番号指定によってＱＤＩＯバッファ状態を管理する能力をプログラムに与える２つの命令が導入される。このバッファ状態指定の抽象化された形を用いると、ページング可能モード仮想計算機ＱＤＩＯ動作の性能を高める形でこれらの命令の解釈される版を実装できるようになる。これによって、ＳＩＧＡオーバーヘッドの削減（より少ないＳＩＧＡ）も可能になる。さらに、サブチャネル・トークン表現を用いると、プログラムで割り当てられたサブチャネルのＳＩＧＡの解釈が可能になり、したがって、ほとんどの場合のＳＩＧＡ処理でのホスト介入がなくなる。
【０４８３】
ＱＤＩＯ拡張バッファ状態管理使用可能化に関する要求を指定するＱＤＩＯキューＣＣＷ確立コマンドが成功裡に完了する場合に、ＱＤＩＯサブチャネルは、ＱＤＩＯ拡張バッファ状態管理について使用可能にされる。
【０４８４】
ＱＤＩＯ拡張バッファ状態管理使用可能化に関する要求を指定しないＱＤＩＯキューＣＣＷ確立コマンドが成功裡に実行される場合、またはサブチャネルからのキューの確立解除を引き起こすアクションまたはイベントが発生する場合に、ＱＤＩＯサブチャネルは、ＱＤＩＯ拡張バッファ状態管理について使用不能にされる。
【０４８５】
ＣＨＳＣサブチャネルＱＤＩＯデータ・ストア・コマンド応答ブロックの一部であるサブチャネルＱＤＩＯデータ・ブロック内のＱＤＩＯアダプタ特性１（ＱＤＩＯＡＣ１）のビット７は、ＱＤＩＯ拡張バッファ状態管理が特定のサブチャネルについて使用可能にされているかどうかを示す。
【０４８６】
ＱＤＩＯ拡張バッファ状態管理についてＱＤＩＯサブチャネルが使用可能にされる場合に、サブチャネルは、次の命令について汎用レジスタ１のサブチャネル・トークンによって指定される。
【０４８７】
・Ｓｉｇｎａｌ  Ａｄａｐｔｅｒ（ＳＩＧＡ）−具体的には、ＳＩＧＡ−ｒおよびＳＩＧＡ−ｗの代替物である、ＳＩＧＡ−ｒｔ（トークンによる読取）およびＳＩＧＡ−ｗｔ（トークンによる書込）。ＳＩＧＡ−ｒｔ命令およびＳＩＧＡ−ｗｔ命令は、それぞれＳＩＧＡ−ｒおよびＳＩＧＡ−ｗと同一の機能を実行するが、サブシステムｉｄではなくトークンが、サブチャネルの指定に使用される。ＳＩＧＡ−ｒおよびＳＩＧＡ−ｗの例が、参照することができる、２００１年１２月１８日発行の米国特許第６３３２１７１  Ｂ１号、発明者バスケイ（Baskey）他、名称「Self-Contained Queues With Associated ControlInformation For Receipt And Transfer Of Incoming And Outgoing Data Using AQueued Direct Input-Output Device」に記載されている。
・ＱＤＩＯバッファ状態セット（ＳＱＢＳ）
・ＱＤＩＯバッファ状態抽出（ＥＱＢＳ）
【０４８８】
サブチャネル・トークンは、サブチャネルがＱＥＢＳＭについて使用可能にされた後に実行されるＣＨＳＣサブチャネルＱＤＩＯデータ・ストア・コマンドに対する応答の一部であるサブチャネルＱＤＩＯデータ・ブロックのサブチャネル・トークン・フィールドから入手される。したがって、ＱＥＢＳＭ使用可能化をもたらし、特定のサブチャネルのサブチャネル・トークンを得るために、プログラムは、次のシーケンスを実行する。
【０４８９】
１．ＱＥＢＳＭがサブチャネルについて使用可能であることを検証するために、ＣＨＳＣサブチャネルＱＤＩＯデータ・ストアを実行する。
【０４９０】
２．ＱＥＢＳＭについてサブチャネルを使用可能にするために、ＱＤＩＯキューＣＣＷ確立コマンドを実行する。
【０４９１】
３．ＱＥＢＳＭが使用可能であることを検証し、サブチャネル・トークンを入手し、その一部がＱＤＩＯキューＣＣＷ確立コマンドの成功裡の実行の結果として変更されている可能性があるアダプタの特性を検査するために、ＣＨＳＣサブチャネルＱＤＩＯデータ・ストアを実行する。
【０４９２】
ＱＤＩＯサブチャネルが、ＱＥＢＳＭについて使用可能にされた後に、ＱＤＩＯバッファ状態セット（ＳＱＢＳ）命令が、サブチャネルでアクティブなキュー・バッファの状態を変更するのに使用される。サブチャネルでアクティブなキュー・バッファの状態を問い合わせるためのＱＤＩＯバッファ状態抽出（ＥＱＢＳ）命令のタイムリーな使用によって、非常に多数のページング可能ストレージ・モード・ゲストの管理に関連するストレージ・オーバーコミットメントに不当に圧力を加えない形でホスト・ページをピン解除できるようになる。代替案では、プログラムがよく振る舞わないか、ホスト・ストレージに関する需要が大きい場合に、ホストは、ゲストがＥＱＢＳを発行するのを待たずに、プログラム所有状態のピン固定されたバッファ・ページのいずれをもピン解除することができる。
【０４９３】
ＱＤＩＯバッファ状態セットによって、バッファの状態がプログラム所有状態からアダプタ所有状態に変更されたならば、その状態は、ＱＤＩＯバッファ状態抽出によって問い合わされ、もう１つのＱＤＩＯバッファ状態セットがそのバッファについてもう一度使用される前に、プログラム所有に戻っていることが見つけられなければならない。要するに、ゲストは、データ・バッファを準備し、ＱＤＩＯバッファ状態セット（ＳＱＢＳ）命令を実行する。ＳＱＢＳ命令は、すべての指定されたバッファ・ページが存在するようにすることを試みる。バッファ・ページが参照されたことがない場合に、ホスト・ページ管理補助機能を使用して、ページ・テーブル内で新しいフレームを動的に割り当て、そのページをピン固定し、ホスト・シャドウＱＤＩＯ  ＳＢＡＬ項目を更新する。しかし、バッファ・ページが、存在し、現在ページ・アウトされており、入力キュー・バッファ・ページである場合には、ホスト・ページ管理補助機能を使用して、ページ・テーブル内で新しいフレームを動的に割り当て、ページをピン固定し、ホスト・シャドウＱＤＩＯ  ＳＢＡＬ項目を更新する。
【０４９４】
アダプタ所有状態からプログラム所有状態へのアダプタ開始の状態変化は、プログラムが前にアダプタ所有状態にしたバッファを指定し、現在のバッファ状態を返すＱＤＩＯバッファ状態抽出（ＥＱＢＳ）命令を介して、ゲストが直接に観察可能である。
【０４９５】
上記に加えて、ホスト・ページ管理補助機能（ＨＰＭＡ）を、ページング可能ストレージ・モード・ゲストの解釈中に他のＣＰＵ機能によって呼び出すことができる。ＨＰＭＡ機能の１つまたは複数の態様を、ＱＤＩＯアーキテクチャと共にまたはＱＤＩＯアーキテクチャなしで使用することができる。ＨＰＭＡには、たとえば、ホスト・ページ解決機能、ホスト・ページ・ピン固定機能、仮想アドレスによるホスト・ページ・ピン解除機能、およびＰＴＥアドレスによるホスト・ページ・ピン解除機能など、４つのＨＰＭＡ補助機能が含まれる。
【０４９６】
命令取出または命令オペランド・アクセスでホスト・ページ無効状態が存在し、ホスト・ページ管理補助が使用可能にされている場合に、ホスト・ページ解決機能を呼び出すことができる。ホスト・ページ解決機能を変換プロセス中に使用して、ホスト・ページ無効状態を動的に解決し、ページ変換例外が認識されないようにすることができる。ホスト・ページ解決機能が成功裡に完了する場合に、一例で、ホスト・ページ無効状態がそれに関して存在した動作の単位が、無効にされ、再試行される。ホスト・ページ解決機能が不成功に完了する場合に、ホスト・ページ管理補助が使用可能にされていないかのように、最初のホスト・ページ無効状態が処理される。
【０４９７】
ＱＥＢＳＭは、ＨＰＭＡと共に、次の長所および性能改善をもたらす：より少ないＳＩＥ開始／終了オーバーヘッドならびにホスト・コンテキスト切替およびルーティングに関するより少ないオーバーヘッド（生産的な作業により多くのサイクルを与える）；ＱＤＩＯバッファ状態のホスト・シャドウ・コピーおよび関連する同期化オーバーヘッドの除去；ページ状況テーブルおよび変換テーブルの動的更新；ホスト・ページ障害の動的予防；改善されたＱＤＩＯシャドウイング；解釈実行モードである間のホスト介入なしのＣＰＵによるホスト・シャドウ構造の動的維持。
【０４９８】
さまざまな例および実施形態を本明細書で説明したが、これらは例示にすぎず、本発明の範囲に、多数の変形が含まれる。たとえば、本明細書に記載のコンピューティング環境は、１つの例にすぎない。他のタイプの通信環境を含む多数の他の環境に、本発明の１つまたは複数の態様を含めることができる。たとえば、異なるタイプのプロセッサ、ゲスト、またはホストあるいはこれらの組合せを使用することができる。さらに、他のタイプのアーキテクチャで、本発明の１つまたは複数の態様を使用することができる。
【０４９９】
さらに、本明細書で提供するデータ構造および流れの例で、異なるフィールの作成または使用あるいはその両方に、異なる数のビット；異なる順序のビット；本明細書に記載のものより多数の、少数の、または異なるビット；多数の、少数の、または異なるフィールド；異なる順序のフィールド；異なるサイズのフィールド；などのさまざまな変形を含めることができる。やはり、これらのフィールドは、例としてのみ提供され、さまざまな変形形態を含めることができる。さらに、本明細書に記載のインジケータまたはコントロールあるいはその両方を、多数の異なる形とすることができる。たとえば、これらを、ビット以外の形で表すことができる。さらに、本明細書では用語アドレスが使用されるが、どの指定でも使用することができる。
【０５００】
さらに、本発明の諸態様を、インターネット・プロトコルおよびファイバ・チャネル・プロトコルに関して説明したが、やはり、これらは例にすぎない。他のネットワーク・プロトコルを含むがこれに制限されない他のプロトコルが、本発明の１つまたは複数の態様から利益を得ることができる。
【０５０１】
やはり、ＨＰＭＡを、ＱＤＩＯおよび本明細書に記載の例に関して説明したが、ＨＰＭＡの１つまたは複数の態様が、単独で使用可能である。ＱＤＩＯと共の使用は、１つの例にすぎない。
【０５０２】
本明細書で使用する用語「ページ」は、固定サイズのまたは事前定義のサイズのストレージ区域を指すのに使用される。ページのサイズは、本明細書で示した例では４Ｋであるが、変更することができる。同様に、バッファは、データを保持する構造であり、多数のタイプおよびサイズの構造が可能である。同様に、ストレージ・ブロックは、ストレージのブロックであり、本明細書で使用されているように、ストレージのページと同等である。しかし、他の実施形態で、ストレージのブロックまたはページあるいはその両方の異なるサイズを設けることができる。さらに、他の代替案が可能である。さらに、キュー、リスト・テーブルなどの用語が、本明細書で使用されるが、すべてのタイプのデータ構造を使用することができる。やはり、本明細書で言及されるものは、例にすぎない。
【０５０３】
本発明を、たとえばコンピュータ使用可能媒体を有する、製造品（たとえば、１つまたは複数のコンピュータ・プログラム製品）に含めることができる。媒体は、その中に、たとえば本発明の機能を提供し、容易にするコンピュータ可読プログラム・コード手段または論理（たとえば、命令、コード、コマンドなど）を有する。製造品を、コンピュータ・システムの一部として含めるか、別々に販売することができる。
【０５０４】
さらに、本発明の機能を実行するために機械によって実行可能な命令の少なくとも１つのプログラムを実施する、機械によって可読の少なくとも１つのプログラム・ストレージ装置を提供することができる。
【０５０５】
本明細書に示された流れ図は、例にすぎない。本発明の趣旨から逸脱しない、これらの図またはステップ（あるいは動作）に対する多数の変形形態がありえる。たとえば、ステップを異なる順序で実行することができ、ステップを、追加し、削除し、または変更することができる。これらの変形のすべてが、請求される発明の一部とみなされる。
【０５０６】
本明細書で、好ましい実施形態を図示し、詳細に説明したが、本発明の趣旨から逸脱せずに多数の変更、追加、置換などを行うことができ、したがって、これらが、請求項で定義される発明の範囲に含まれるとみなされることを、当業者は諒解するであろう。
【図面の簡単な説明】
【０５０７】
【図１】本発明の１つまたは複数の態様を組み込み、使用する、コンピューティング環境の一実施形態を示す図である。
【図２】本発明の態様による、図１の入出力サブシステムのさらなる詳細を示す図である。
【図３】本発明の態様による、ゲスト構成に関連する論理の一実施形態を示す図である。
【図４】本発明の態様による、ゲスト構成に関連する論理の一実施形態を示す図である。
【図５】本発明の態様による、チャネル・サブシステム特性ストア・コマンドの要求ブロックの一例を示す図である。
【図６】本発明の態様による、チャネル・サブシステム特性ストア・コマンドの応答ブロックの一例を示す図である。
【図７】本発明の態様による、サブチャネルＱＤＩＯデータ・ストア・コマンドの要求ブロックの一例を示す図である。
【図８】本発明の態様による、サブチャネルＱＤＩＯデータ・ストア・コマンドの応答ブロックの一例を示す図である。
【図９】本発明の態様による、図８の応答ブロックのサブチャネルＱＤＩＯ記述ブロックの一例を示す図である。
【図１０】本発明の態様による、ＱＤＩＯキューのデータ構造の一実施形態を示す図である。
【図１１】本発明の態様による、ＱＤＩＯバッファ情報制御ブロック（ＱＢＩＣＢ）の一例を示す図である。
【図１２】本発明の態様による、図１１のＱＢＩＣＢのキュー・ストレージ記述子の一例を示す図である。
【図１３】本発明の態様による、ファイバ・チャネル・プロトコル（ＦＣＰ）動作ブロック（ＦＯＢ）の一例を示す図である。
【図１４】本発明の態様による、チャネル・サブシステム特性セット・コマンドの要求ブロックの一例を示す図である。
【図１５】本発明の態様による、図１４の要求ブロックの動作データ区域の一例を示す図である。
【図１６】本発明の態様による、チャネル・サブシステム特性セット・コマンドの応答ブロックの一例を示す図である。
【図１７】本発明の態様による、ネットワーク・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態セット命令に関連する論理の一実施形態の一部を示す図である。
【図１８】本発明の態様による、ネットワーク・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態セット命令に関連する論理の一実施形態の一部を示す図である。
【図１９】本発明の態様による、ネットワーク・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態セット命令に関連する論理の一実施形態の一部を示す図である。
【図２０】本発明の態様に従って使用されるフレーム記述子の一例を示す図である。
【図２１】本発明の態様による、ＱＤＩＯバッファ状態セット命令のフォーマットの一例を示す図である。
【図２２】本発明の態様による、ページ状況テーブル項目（ＰＧＳＴＥ）の一例を示す図である。
【図２３】本発明の態様による、ページ・テーブル項目（ＰＴＥ）の一例を示す図である。
【図２４】本発明の態様による、ピン固定機能に関連する論理の一実施形態を示す図である。
【図２５】本発明の態様による、解決機能に関連する論理の一実施形態の一部を示す図である。
【図２６】本発明の態様による、解決機能に関連する論理の一実施形態の一部を示す図である。
【図２７】本発明の態様による、ネットワーク・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態抽出命令に関連する論理の一実施形態の一部を示す図である。
【図２８】本発明の態様による、ネットワーク・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態抽出命令に関連する論理の一実施形態の一部を示す図である。
【図２９】本発明の態様による、ネットワーク・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態抽出命令に関連する論理の一実施形態の一部を示す図である。
【図３０】本発明の態様による、ＱＤＩＯバッファ状態抽出命令のフォーマットの一例を示す図である。
【図３１】本発明の態様による、仮想アドレスによるホスト・ページ・ピン解除機能に関連する論理の一実施形態を示す図である。
【図３２】本発明の態様による、ＰＴＥアドレスによるホスト・ページ・ピン解除機能に関連する論理の一実施形態を示す図である。
【図３３】ファイバ・チャネル・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態セット命令に関連する論理の一実施形態の一部を示す図である。
【図３４】ファイバ・チャネル・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態セット命令に関連する論理の一実施形態の一部を示す図である。
【図３５】ファイバ・チャネル・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態セット命令に関連する論理の一実施形態の一部を示す図である。
【図３６】ファイバ・チャネル・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態セット命令に関連する論理の一実施形態の一部を示す図である。
【図３７】ファイバ・チャネル・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態抽出命令に関連する論理の一実施形態の一部を示す図である。
【図３８】ファイバ・チャネル・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態抽出命令に関連する論理の一実施形態の一部を示す図である。
【図３９】ファイバ・チャネル・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態抽出命令に関連する論理の一実施形態の一部を示す図である。
【図４０】ファイバ・チャネル・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態抽出命令に関連する論理の一実施形態の一部を示す図である。
【図４１】ファイバ・チャネル・プロトコル入出力要求と共に使用されるＱＤＩＯバッファ状態抽出命令に関連する論理の一実施形態の一部を示す図である。
【符号の説明】
【０５０８】
１００  コンピューティング環境
１０２  中央演算処理装置複合システム（ＣＰＣ）
１０４  仮想計算機
１０６  中央処理装置
１０８  ホスト
１１０  入出力サブシステム
１１２  ゲスト・オペレーティング・システム
１２０  アダプタ
１２２  入出力装置
[MSOffice1]意味がとれません。
【図１】
2005353055.tif 000003
【図２】
2005353055.tif 000004
【図３】
2005353055.tif 000005
【図４】
2005353055.tif 000006
【図５】
2005353055.tif 000007
【図６】
2005353055.tif 000008
【図７】
2005353055.tif 000009
【図８】
2005353055.tif 000010
【図９】
2005353055.tif 000011
【図１０】
2005353055.tif 000012
【図１１】
2005353055.tif 000013
【図１２】
2005353055.tif 000014
【図１３】
2005353055.tif 000015
【図１４】
2005353055.tif 000016
【図１５】
2005353055.tif 000017
【図１６】
2005353055.tif 000018
【図１７】
2005353055.tif 000019
【図１８】
2005353055.tif 000020
【図１９】
2005353055.tif 000021
【図２０】
2005353055.tif 000022
【図２１】
2005353055.tif 000023
【図２２】
2005353055.tif 000024
【図２３】
2005353055.tif 000025
【図２４】
2005353055.tif 000026
【図２５】
2005353055.tif 000027
【図２６】
2005353055.tif 000028
【図２７】
2005353055.tif 000029
【図２８】
2005353055.tif 000030
【図２９】
2005353055.tif 000031
【図３０】
2005353055.tif 000032
【図３１】
2005353055.tif 000033
【図３２】
2005353055.tif 000034
【図３３】
2005353055.tif 000035
【図３４】
2005353055.tif 000036
【図３５】
2005353055.tif 000037
【図３６】
2005353055.tif 000038
【図３７】
2005353055.tif 000039
【図３８】
2005353055.tif 000040
【図３９】
2005353055.tif 000041
【図４０】
2005353055.tif 000042
【図４１】
2005353055.tif 000043