(57)【特許請求の範囲】
【請求項１】
ページング可能ゲストをサポートするコンピューティング環境のストレージに関する管理をするための方法であって、コンピュータが、
ホスト・レベルの保護とゲスト・レベルの保護との区別を可能にする表示を提供する保護テスト命令を入手するステップであって、前記保護テスト命令が命令コード・フィールドと、第１オペランドと、第２オペランドとを含む、前記入手するステップと、
ページング可能ゲストにより、前記入手した保護テスト命令を実行するステップであって、前記実行するステップが、
１つまたは複数の保護例外について前記第１オペランドによって指定された位置をテストするステップであって、前記第２オペランドのキーを使用し、保護例外の表示が、前記保護例外がホスト・レベル保護によるものであるかまたはゲスト・レベル保護によるものであるかという表示を含む、前記テストするステップと、
前記位置に関する保護例外条件がホスト・レベル保護によるものであること且つホスト・コピー・オン・ライト方式の一部であることにさらに応じて、当該ホスト・コピー・オン・ライト方式を実行するステップと、
前記位置に関する保護例外条件がゲスト・レベル保護によるものであることに応じて、前記ページング可能ゲストに示す条件コードを、（０）取り出し許可；ストア許可；（１）取り出し許可；ストア不許可；（２）取り出し不許可；ストア不許可；（３）変換使用不能、のうちの一つに設定するステップと
を実行することを含む、前記方法。    
【請求項２】
前記コンピュータが、
前記保護例外条件がホスト・レベル保護によるものであることに応じて、前記保護テスト命令の実行をインターセプトするステップ
を実行することをさらに含む、請求項１に記載の方法。    
【請求項３】
結果としてインターセプトが行われる前記ホスト・レベル保護がホスト変換保護を含む、請求項２に記載の方法。    
【請求項４】
ホスト・レベル保護による前記インターセプトに応答して、前記ページング可能ゲストをディスパッチするホストにより、前記保護テスト命令の実行をシミュレートするステップ
を実行することをさらに含む、請求項２又は３に記載の方法。    
【請求項５】
前記保護例外条件がゲスト・レベル保護によるものであることに応じて、前記ホストへのインターセプトが防止される、請求項２に記載の方法。    
【請求項６】
前記ストレージの前記一領域がホスト・メイン・ストレージの第１のフレームに割り当てられており、
前記保護例外条件が前記ホスト・レベルの保護によるものであること且つホスト・コピー・オン・ライト方式の一部であることにさらに応じて、前記ストレージの前記一領域に第２のフレームを割り当て、前記第１のフレームの内容を前記第２のフレームにコピーし、そしてページング可能ゲストが前記第２のフレームを含む前記ストレージの前記一領域に格納することを許可すること
を含む、請求項１〜５のいずれか一項に記載の方法。    
【請求項７】
ページング可能ゲストをサポートするコンピューティング環境のストレージに関する管理をするためのコンピュータであって、少なくとも１つのプロセッサを備えており、請求項１〜６のいずれか一項に記載の方法の各ステップを実行する、前記コンピュータ。    
【請求項８】
ページング可能ゲストをサポートするコンピューティング環境のストレージに関する管理をするためのコンピュータ・プログラムであって、コンピュータに、請求項１〜６のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ページング可能ゲスト（pageable guest）をサポートするコンピューティング環境に関し、特に、コンピューティング環境の複数のページング可能ゲストによるストレージの使用の管理に関する。
【背景技術】
【０００２】
コンピューティング環境のストレージ（本明細書ではメモリとも言う）の少なくとも一部分は、典型的に、その環境内で実行される複数のプロセス間で共用される。このストレージの共用は、ストレージ内に保管されたデータの保全性を損なう危険性を増すものである。したがって、データ保全性を提供するために、特定のストレージ保護が適用される。このような保護は、ストレージを管理し、それにより、データを保護するために使用される。
【０００３】
この保護は、解釈実行およびページング可能ゲストをサポートするものを含む、種々のタイプのコンピューティング環境で適用することができる。たとえば、ページング可能ゲスト環境では、複数のゲストが同じストレージを共用し、この場合も、データ保全性を提供し、ストレージを保護するために、保護が使用される。しかし、このような環境では、保護に関する情報は、ゲストまたはゲストを実行するホストあるいはその両方にとって極めて複雑なものになる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願第１１／９７２７２５号
【特許文献２】米国特許出願第１０／８５４９９０号
【特許文献３】米国特許出願公報ＵＳ２００７／００１６９０４Ａ１号
【特許文献４】米国特許第５５５１０１３号
【特許文献５】米国特許第５５７４８７３号
【特許文献６】米国特許第５７９０８２５号
【特許文献７】米国特許第６００９２６１号
【特許文献８】米国特許第６３０８２５５号
【特許文献９】米国特許第６４６３５８２号
【特許文献１０】米国特許第７１９７５８５号
【非特許文献】
【０００５】
【非特許文献１】「z/Architecture Principlesof Operation」という題名のＩＢＭの資料（２００７年４月発行のＩＢＭ資料番号ＳＡ２２−７８３２−０５）
【非特許文献２】「z/VM: Running Guest Operating Systems」という題名のＩＢＭの資料（２００１年１０月発行のＩＢＭ資料番号ＳＣ２４−５９９７−０２）
【非特許文献３】「z/VM: General Information Manual」という題名のＩＢＭの資料（２００１年１０月発行のＩＢＭ資料番号ＧＣ２４−５９９１−０４）
【非特許文献４】「System/370 ExtendedArchitecture/Interpretive Execution」（１９８５年９月発行のＩＢＭ資料番号ＳＡ２２−７０９５−０１）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記に基づいて、複数のページング可能ゲストによって使用されるストレージの管理を容易にする機能が必要である。一例では、ストレージ保護障害がホスト・レベル保護によるものであったかまたはゲスト・レベル保護によるものであったかを示す機能が必要である。
【課題を解決するための手段】
【０００７】
ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするためのコンピュータ可読プログラム・コード・ロジックを有する少なくとも１つのコンピュータ使用可能媒体を含む装置（article of manufacture）の提供により、従来技術の短所が克服され、追加の利点が提供される。方法を実行するためにコンピュータによって実行するためのコンピュータ可読プログラム・コード・ロジックは、たとえば、ホスト・レベルの保護およびゲスト・レベルの保護によって保護されたストレージの一領域へのアクセスを試みるステップと、試行済みアクセスに応じて受け取られた障害がホスト・レベルの保護によるものであるかまたはゲスト・レベルの保護によるものであるかを判断するステップとを含む。
【０００８】
また、命令を実行するためのコンピュータ・プログラム（computer program product）の提供により、従来技術の短所が克服され、追加の利点が提供される。このコンピュータ・プログラムは、処理回路によって読み取り可能であって、方法を実行するために処理回路によって実行するための命令を保管する記憶媒体を含む。この方法は、たとえば、保護テスト機械命令（test protection machine instruction）を入手するステップであって、その保護テスト機械命令が命令コード・フィールドと、第１オペランドと、第２オペランドとを含む、入手するステップと、ページング可能ゲストにより、入手した保護テスト機械命令を実行するステップであって、たとえば、１つまたは複数の保護例外について第１オペランドによって指定された位置をテストするステップを含み、そのテストするステップが第２オペランドのキーを使用し、保護例外の表示が、保護例外がホスト・レベル保護によるものであるかまたはゲスト・レベル保護によるものであるかという表示を含む、実行するステップとを含む。
【０００９】
本発明の１つまたは複数の態様に関する方法、システム、およびコンピュータ・プログラムについても、本明細書に記載され、請求される。
【００１０】
追加の特徴および利点は、本発明の技法により実現される。本発明のその他の諸実施形態および諸態様は、本明細書に詳細に記載され、請求された本発明の一部と見なされる。
【００１１】
次に、本発明の好ましい一実施形態について、以下の図面に関連して、一例としてのみ説明する。
【図面の簡単な説明】
【００１２】
【図１】本発明の１つまたは複数の態様を取り入れて使用するためのコンピューティング環境の一実施形態を示す図である。
【図２】本発明の１つまたは複数の態様を取り入れて使用するためのエミュレートされたコンピューティング環境の一実施形態を示す図である。
【図３】本発明の一態様により使用されるフレーム記述子（frame descriptor）の一例を示す図である。
【図４】本発明の一態様により使用される領域テーブル項目（region table entry）の一例を示す図である。
【図５】本発明の一態様により使用される領域テーブル項目の一例を示す図である。
【図６】本発明の一態様により使用される領域テーブル項目の一例を示す図である。
【図７】本発明の一態様により使用されるセグメント・テーブル項目（segment table entry）の一例を示す図である。
【図８】本発明の一態様により使用されるセグメント・テーブル項目の一例を示す図である。
【図９】本発明の一態様により使用されるページ・テーブル項目（page table entry）の一例を示す図である。
【図１０】本発明の一態様により使用されるページ状況テーブル項目（page status table entry）の一例を示す図である。
【図１１】本発明の一態様により、保護抑止（suppression on protection）機構および拡張保護抑止（enhancedsuppression on protection）機構をサポートする環境におけるゲスト処理ロジックの一実施形態を示す図である。
【図１２】本発明の一態様により、保護抑止機構および拡張保護抑止機構をサポートする環境におけるゲスト処理ロジックの一実施形態を示す図である。
【図１３】本発明の一態様により、保護テスト命令のフォーマットの一例を示す図である。
【図１４】本発明の一態様により、保護テスト命令のロジックの一実施形態を示す図である。
【図１５】本発明の一態様により、保護テスト命令のロジックの一実施形態を示す図である。
【図１６】本発明の１つまたは複数の態様を取り入れるコンピュータ・プログラムの一実施形態を示す図である。
【発明を実施するための形態】
【００１３】
本発明の一態様により、コンピューティング環境の複数のページング可能ゲストによって使用されるストレージの管理を容易にする機能が提供される。一例として、どのレベルの保護（ホストまたはゲスト）が障害条件（fault condition）を引き起こしたかという判断を可能にする拡張保護抑止機構が提供される。他の例として、照会に示されているストレージの領域に関する情報を詳述する照会命令（たとえば、保護テスト（ＴＰＲＯＴ：Test Protection）が提供される。
【００１４】
本発明の１つまたは複数の態様を取り入れて使用するためのコンピューティング環境の一実施形態について、図1に関連して説明する。コンピューティング環境１００は、たとえば、ＩＢＭ（Ｒ）のｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づくものである。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅについては、「z/Architecture Principles of Operation」という題名のＩＢＭの資料（２００７年４月発行のＩＢＭ資料番号ＳＡ２２−７８３２−０５）に記載されている。一例では、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づくコンピューティング環境はＩＢＭのｅＳｅｒｖｅｒ（ＴＭ）を含む。（ＩＢＭ、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ、ｅＳｅｒｖｅｒ、およびｚＳｅｒｉｅｓは、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である。）本明細書で使用するその他の名称は、インターナショナル・ビジネス・マシーンズ社またはその他の企業の登録商標、商標、または製品名である可能性がある。
【００１５】
一例として、コンピューティング環境１００は、仮想計算機（ＶＭ：virtualmachine）サポートを提供する中央演算処理装置複合システム（ＣＰＣ：central processorcomplex）１０２を含む。ＣＰＣ１０２は、たとえば、１つまたは複数の仮想計算機１０４と、１つまたは複数の中央処理装置１０６と、少なくとも１つのホスト１０８（たとえば、ハイパーバイザなどの制御プログラム）と、入出力サブシステム１１０とを含み、そのそれぞれについて以下に説明する。この例では、仮想計算機およびホストはメモリに含まれている。
【００１６】
ＣＰＣの仮想計算機サポートは、それぞれがＬｉｎｕｘなどのゲスト・オペレーティング・システム１１２をホストとして処理することができる多数の仮想計算機を操作するための能力を提供する（Ｌｉｎｕｘは、米国、その他の国、あるいはその両方におけるＬｉｎｕｓＴｏｒｖａｌｄｓの登録商標である）。それぞれの仮想計算機１０４は、個別システムとして機能することができる。すなわち、それぞれの仮想計算機は、独立してリセットすることができ、ゲスト・オペレーティング・システムをホストとして処理することができ、種々のプログラムで動作することができる。仮想計算機内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際はその一部分のみが使用可能である。
【００１７】
この特定の例では、仮想計算機のモデルはＶ＝Ｖモデルであり、仮想計算機の絶対メモリまたは実メモリは、実メモリまたは絶対メモリの代わりにホスト仮想メモリによってバッキングされる。それぞれの仮想計算機は仮想線形メモリ空間を有する。物理リソースはホスト１０８によって所有され、共用物理リソースは、それぞれの処理要求に応じるために必要に応じてホストによってゲスト・オペレーティング・システムにディスパッチされる。このＶ＝Ｖ仮想計算機（すなわち、ページング可能ゲスト）モデルでは、典型的に、ゲストが多数であるために、ホストがハードウェア・リソースを単純に区分して、構成済みゲストにそのハードウェア・リソースを割り当てることが妨げられるので、ゲスト・オペレーティング・システムと物理的な共用マシン・リソースとの対話がホストによって制御されるものと想定している。Ｖ＝Ｖモデルの１つまたは複数の態様については、「z/VM: Running GuestOperating Systems」という題名のＩＢＭの資料（２００１年１０月発行のＩＢＭ資料番号ＳＣ２４−５９９７−０２）にさらに記載されている。
【００１８】
中央処理装置１０６は、仮想計算機に割り当て可能な物理プロセッサ・リソースである。たとえば、仮想計算機１０４は１つまたは複数の論理プロセッサを含み、そのそれぞれは、仮想計算機に動的に割り振り可能な物理プロセッサ・リソース１０６のすべてまたは割り当て分（share）を表す。仮想計算機１０４はホスト１０８によって管理される。例として、ホストは、プロセッサ１０６上で実行されるマイクロコードで実装するか、またはマシン上で実行されるホスト・オペレーティング・システムの一部にすることができる。一例では、ホスト１０８は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるｚ／ＶＭ（Ｒ）などのＶＭハイパーバイザである（ｚ／ＶＭは、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である）。ｚ／ＶＭの一実施形態については、「z/VM: GeneralInformation Manual」という題名のＩＢＭの資料（２００１年１０月発行のＩＢＭ資料番号ＧＣ２４−５９９１−０４）に記載されている。
【００１９】
入出力サブシステム１１０は、デバイスとメイン・ストレージとの間の情報の流れを指図するものである。入出力サブシステムは、中央演算処理複合システム（central processing complex）の一部になるかまたはそれとは分離したものになる可能性があるという点で、中央演算処理複合システムに結合される。入出力サブシステムは、ＣＰＣに結合された入出力装置と直接通信するというタスクから中央処理装置を解放し、入出力処理と同時にデータ処理を続行できるようにする。
【００２０】
一実施形態では、ホスト（たとえば、ｚ／ＶＭ）およびプロセッサ（たとえば、Ｓｙｓｔｅｍ  ｚ（Ｒ））のハードウェア／ファームウェアは、ゲスト・オペレーティング・システムおよびホストとの間で制御を転送する必要なしにＶ＝Ｖゲスト・オペレーティング・システム動作を処理するために、制御連携方式で相互に対話する。（Ｓｙｓｔｅｍ  ｚは、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である。）ページング可能ストレージ・モード・ゲストについて命令を解釈実行できるようにする機構を介して、ゲスト動作をホスト介入なしに直接実行することができる。この機構は解釈実行開始（ＳＩＥ：Start Interpretive Execution）という命令を提供し、この命令は、ゲスト（仮想計算機）状態および制御を保持する状態記述という制御ブロックを指定して、ホストが発行することができる。この命令はマシンを解釈実行モードにするものであって、そのモードでは、ホスト・アテンションを必要とする条件が発生するまでゲスト命令および割り込みが直接処理される。このような条件が発生すると、解釈実行が終了し、ホスト割り込みが提示されるかまたはＳＩＥ命令が検出された条件の詳細の保管を完了し、この後者のアクションはインターセプトという。解釈実行の一例については、「System/370 Extended Architecture/Interpretive Execution」（１９８５年９月発行のＩＢＭ資料番号ＳＡ２２−７０９５−０１）に記載されている。
【００２１】
一例では、この解釈実行機構は、ＩＢＭによって提供されるプロセッサ・リソース／システム管理機構（ＴＭ）（ＰＲ／ＳＭ：Processor Resource/Systems Manager）の要素の１つである。これは、解釈実行開始（ＳＩＥ）という単一命令を使用してプロセッサ上で仮想サーバ命令ストリームを実行できるようにする。ＳＩＥ命令は、たとえば、ｚＳｅｒｉｅｓまたはＳ／３９０（Ｒ）処理装置複合システムを証明されたセキュア・ロジカル・パーティションに分割するためにサーバのロジカル・パーティショニング（ＬＰＡＲ：logical partitioning）サポートによって使用される。（プロセッサ・リソース／システム管理機構およびＳ／３９０は、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である。）（注：ＩＢＭのＳ／３９０  ＣＭＯＳ  Ｇ６ファミリのプロセッサのＰＲ／ＳＭ機構は、ＩＴＳＥＣ  Ｅ４レベルのセキュリティの認証を取得している。）
【００２２】
サーバのタイム・スライスが消費されるまで、あるいはハードウェアが仮想化できない動作または制御プログラムがそれに関する制御を回復する動作をサーバが実行する必要が発生するまで、ＳＩＥ命令は制御プログラムによってディスパッチされた仮想サーバを実行する。その時点で、ＳＩＥ命令は終了し、制御は制御プログラムに戻り、制御プログラムはその命令をシミュレートするかまたは仮想サーバを強制待ち状態にする。完了すると、制御プログラムは、実行するよう仮想サーバをもう一度スケジュールし、サイクルがもう一度始まる。このようにして、中央演算処理装置（ＣＰＵ）の全機能および最高速度が仮想サーバにとって使用可能になる。制御プログラムによる支援または妥当性検査を必要とする特権命令のみがインターセプトされる。このようなＳＩＥインターセプトは、そう呼ばれるように、仮想サーバが実デバイス上で実行できる動作に対して制限を課すために制御プログラムによって使用される。
【００２３】
その上、このメカニズムにより、制御プログラムは、多くの種類のハードウェアまたはソフトウェア障害の範囲を制限することができる。特定の仮想サーバにエラーを隔離できる場合、その仮想サーバのみに障害が発生し、他の仮想サーバで実行されるテストまたは生産作業に影響せずに、その動作を再試行するかまたはその仮想サーバを再初期化（リブート）することができる。制御プログラムは、仮想サーバで発生する障害が制御プログラムまたはその他の仮想サーバに影響しないように設計される。
【００２４】
本発明の１つまたは複数の態様を取り入れるためのコンピューティング環境の他の例は図２に示されている。この例では、ホスト・アーキテクチャのホスト・コンピュータ２０２をエミュレートする、エミュレートされたホスト・コンピュータ・システム２００が提供される。エミュレートされたホスト・コンピュータ・システム２００では、ホスト・プロセッサ（ＣＰＵ）２０４は、エミュレートされたホスト・プロセッサ（または仮想ホスト・プロセッサ）であり、ホスト・コンピュータ２０２のプロセッサによって使用されるものとは異なる固有命令セット・アーキテクチャを有するエミュレーション・プロセッサ２０６により実現される。エミュレートされたホスト・コンピュータ・システム２００は、エミュレーション・プロセッサ２０６にとってアクセス可能なメモリ２０８を有する。この実施形態例では、メモリ２０８は、ホスト・コンピュータ・メモリ２１０の部分と、エミュレーション・ルーチン２１２の部分に区分されている。ホスト・コンピュータ・メモリ２１０は、ホスト・コンピュータ・アーキテクチャによりエミュレートされたホスト・コンピュータ２０２のプログラムにとって使用可能であり、図１の同様の名前の要素に類似して、ホストまたはハイパーバイザ２１４と、ゲスト・オペレーティング・システム２１８が実行される１つまたは複数の仮想計算機２１６の両方を含むことができる。
【００２５】
エミュレーション・プロセッサ２０６は、エミュレートされたプロセッサ２０４のもの以外のアーキテクチャの設計済み命令セットの固有命令を実行する。この固有命令は、たとえば、エミュレーション・ルーチン・メモリ２１２から入手される。エミュレーション・プロセッサ２０６は、アクセスされたホスト命令の機能をエミュレートするための固有命令実行ルーチンを決定するために、アクセスされたホスト命令（複数も可）をデコードすることができるシーケンスおよびアクセス／デコード・ルーチンで入手した１つまたは複数の命令を使用することにより、ホスト・コンピュータ・メモリ２１０内のプログラムから実行するためにホスト命令にアクセスすることができる。このようなホスト命令の１つは、たとえば、解釈実行開始（ＳＩＥ）命令にすることができ、それによりホストは仮想計算機内でゲスト・プログラムを実行しようと努める。エミュレーション・ルーチン２１２は、この命令のサポートおよびこのＳＩＥ命令の定義により仮想計算機２１６内でゲスト命令のシーケンスを実行するためのサポートを含むことができる。
【００２６】
ホスト・コンピュータ・システム２０２のアーキテクチャ用に定義されたその他の機構は、たとえば、汎用レジスタ、制御レジスタ、動的アドレス変換、入出力サブシステム・サポートおよびプロセッサ・キャッシュなどの機構を含む、設計済み機構ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンのパフォーマンスを改善するために、エミュレーション・プロセッサ２０６内で使用可能な機能（仮想アドレスの汎用レジスタおよび動的変換など）を利用することもできる。また、ホスト・コンピュータ２０２の機能をエミュレートする際にプロセッサ２０６を支援するために、特殊ハードウェアおよびオフロード・エンジンも設けることができる。
【００２７】
上記のもの、汎用コンピュータ、データ処理システム、その他を含む、多くのタイプのコンピューティング環境は、仮想メモリ方式を使用して編成されたストレージを使用する。仮想メモリ・システムは、ブロック（またはページ）と呼ばれる単位でストレージを編成する。これらのブロックは、高速の１次メモリと、１つまたは複数のより大きく通常はより低速の２次、３次などのストレージ・ユニットとの間を移動する。ブロックの移動（スワッピングと呼ばれる場合が多い）は、コンピューティング環境内で実行されるアプリケーションまたはプロセスにとって透過的なものであり、アプリケーションまたはプロセスがそれぞれ無制限の量のストレージを有するように動作できるようにする。
【００２８】
汎用仮想メモリにより、コンピューティング環境内で実行されるアプリケーションまたはプロセスあるいはその両方が無制限の量のメモリを自由に有するように動作することができるが、実際には、特定のアプリケーションまたはプロセスにとって使用可能なストレージの量は、コンピューティング環境内のストレージの量によって制限され、そのストレージを共用するプログラムであって、同時に実行されているプログラムの数によってさらに制限される。仮想メモリ方式は、メモリの実際の物理アドレスをアプリケーション・プログラムから隠すものである。アプリケーション・プログラムは、論理アドレス（たとえば、仮想アドレス）を使用して自分のメモリ空間にアクセスし、次にその論理アドレスがコンピューティング環境によって物理アドレスに変換される。
【００２９】
ストレージ参照中に仮想アドレスを対応する実アドレスまたは絶対アドレスに変換するプロセスは、動的アドレス変換（ＤＡＴ）という。仮想アドレスは、１次仮想アドレス、２次仮想アドレス、アクセス・レジスタ（ＡＲ）指定仮想アドレス、またはホーム仮想アドレスにすることができる。これらのアドレスは、１次アドレス・スペース制御要素、２次アドレス・スペース制御要素、ＡＲ指定アドレス・スペース制御要素、またはホーム・アドレス・スペース制御要素によってそれぞれ変換される。適切なアドレス・スペース制御要素を選択した後、変換プロセスは、４つのタイプの仮想アドレスのいずれについても同じである。ＤＡＴは、変換パラメータとして、５〜２レベルのテーブル（領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、およびページ・テーブル）を使用することができる。拡張動的アドレス変換（ＥＤＡＴ）プロセスは、一部または全部の変換についてページ・テーブルを省略することにより、５〜１レベルのテーブルを使用することができる。特定のアドレス・スペースに関する最高レベル・テーブルの指定（起点および長さ）はアドレス・スペース制御要素と呼ばれ、制御レジスタ内でＤＡＴによって使用するために検出されるか、またはアクセス・レジスタが指定した通りに検出される。代わって、アドレス・スペースに関するアドレス・スペース制御要素は実スペース指定にすることができ、これは、ＤＡＴが、いかなるテーブルも使用せずに、単に仮想アドレスを実アドレスとして処理することにより、仮想アドレスを変換することであることを示す。
【００３０】
ＤＡＴは、異なる時期に、異なる制御レジスタ内のアドレス・スペース制御要素またはアクセス・レジスタによって指定されたアドレス・スペース制御要素を使用する。その選択は、現行ＰＳＷ（プログラム状況ワード）に指定されたプログラム指定変換モードによって決定される。１次スペース・モード、２次スペース・モード、アクセス・レジスタ・モード、およびホーム・スペース・モードという４つの変換モードが使用可能である。変換モードに応じて、異なるアドレス・スペースがアドレス可能である。
【００３１】
仮想アドレスに対する拡張ＤＡＴの結果は、実アドレスまたは絶対アドレスのいずれかになる可能性がある。それが実アドレスである場合、プレフィックス変換動作を実行して対応する絶対アドレスを入手し、その絶対アドレスを使用してメモリを参照することができる。プレフィックス変換は、各ＣＰＵごとに０〜８１９１という範囲の実アドレス（一例として）を絶対ストレージ内の異なる領域に割り当てる能力を提供し、その結果、メイン・ストレージを共用する２つ以上のＣＰＵが、特に割り込みの処理において、最小限の干渉で同時に動作することができる。プレフィックス変換により、０〜８１９１という範囲内の実アドレスは、そのＣＰＵに関するプレフィックス・レジスタのビット位置０〜５０内の値によって識別された８Ｋバイトの絶対アドレスの領域（プレフィックス域）に１対１で対応し、プレフィックス・レジスタ内の値によって識別された実アドレスの領域は、絶対アドレス０〜８１９１に１対１で対応する。残りの実アドレスは対応する絶対アドレスと同じである。この変換により、各ＣＰＵは、最初の８Ｋバイトと、他のＣＰＵのプレフィックス・レジスタによって指定された位置を含む、メイン・ストレージのすべてにアクセスすることができる。
【００３２】
動的アドレス変換、プレフィックス変換、および拡張ＤＡＴについては、２００８年１月１１日に出願されたＧａｉｎｅｙ他による「Enhanced Dynamic Address Translation with Frame Management Function」という発明の名称の米国特許出願第１１／９７２７２５号（ＩＢＭ整理番号ＰＯＵ９２００７０３１３ＵＳ１）により詳細に記載されている。
【００３３】
本発明の１つまたは複数の態様の理解を容易にするために、以下に記載する様々な用語およびデータ構造（たとえば、テーブル、リスト）を参照する。
【００３４】
フレーム記述子
フレーム記述子は、ホスト・ページ・フレーム、すなわち、仮想メモリの一部分（ページ）を保持できる実メモリの一領域（フレーム）を記述するものである。これは、ホストによって割り振られ、割り振り解除され、初期化されるものであり、ホスト・ページ管理支援（Host Page Management Assist）機能（たとえば、２００４年５月２７日に出願されたＢｌａｎｄｙ他による「Facilitating Management of Storage of a Pageable Mode VirtualEnvironment Absent Intervention of a Host of the Environment」という発明の名称の米国特許出願第１０／８５４９９０号に記載されている）によって更新することができる。
【００３５】
一例では、フレーム記述子３００（図３）は、たとえば、３２バイト境界上のホスト・ホーム・スペース仮想ストレージ内に常駐する３２バイト・ブロックであり、例として以下のフィールドを含む。
【００３６】
（ａ）次フレーム記述子アドレス３０２：  一例では、このフィールドの内容は、右に５個の０が付加された状態で、リスト上の次フレーム記述子のホスト・ホーム・スペース仮想アドレスを指定する。０という値は、そのフレーム記述子がリスト上の最後のものであることを示す。
【００３７】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。
【００３８】
（ｂ）ページ・フレーム実アドレスまたはページ・テーブル項目（ＰＴＥ）コピー３０４：  フレーム記述子が使用可能フレーム記述子リスト（ＡＦＤＬ）内にあるときに、このフィールドの内容は、右に１２個の０が付加された状態で、ホスト・ストレージを提供するための割り振りに使用可能なホスト・フレームの最初のバイト（バイト０）のホスト実アドレスを指定する。
【００３９】
フレーム記述子が処理済みフレーム記述子リスト（ＰＦＤＬ）内にあるときに、このフィールドは、ホスト・ページが解決される前に現れるので、ページ・テーブル項目アドレス・フィールドによって指定されたＰＴＥのコピーを含む。
【００４０】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。
【００４１】
（ｃ）ページ・テーブル項目アドレス３０６：  フレーム記述子が処理済みフレーム記述子リスト上にあるときに、このフィールドの内容は、右に３個の０が付加された状態で、ホスト仮想ページに関するページ・テーブル項目のホスト実アドレスまたはホスト絶対アドレスを指定する。
【００４２】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。
【００４３】
複数のフレーム記述子を相互にリンクして、使用可能フレーム記述子リスト（ＡＦＤＬ）または処理済みフレーム記述子リスト（ＰＦＤＬ）などのリストを形成することができる。フレーム記述子はこの２つのリストのうちの１つに存在する。各ＣＰＵごとにこれらのリストが１対ずつ個別に用意される。１つのＣＰＵに関するＡＦＤＬおよびＰＦＤＬの起点は、そのＣＰＵのプレフィックス域内のフィールドにより指定される。
【００４４】
使用可能フレーム記述子リスト（ＡＦＤＬ）は、ホストがクリアしたホスト・フレームであって、ホスト・ページへの割り振りに使用可能になっているホスト・フレームを記述する、フレーム記述子のリストである。ＡＦＤＬは、指定のホスト実アドレスのＡＦＤＬ起点（ＡＦＤＬＯ）によって指定される。
【００４５】
ＡＦＤＬＯの内容は、右に５個の０が付加された状態で、ＡＦＤＬ上の最初のフレーム記述子のホスト・ホーム・スペース仮想アドレスを指定する。０という値は、このリストが空であることを示す。
【００４６】
ＡＦＤＬＯは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。ＡＦＤＬＯは、一実施形態では、非インターロック更新動作により変更される。
【００４７】
処理済みフレーム記述子リスト（ＰＦＤＬ）は、ゲスト解釈中にホスト・ページ無効条件を解決するために使用されたホスト・フレームを記述する、フレーム記述子のリストである。ＰＦＤＬによって記述されたホスト・フレームは、ゲスト用のストレージを提供するホスト・ページに割り当てられている。ＰＦＤＬは、指定のホスト実アドレスのＰＦＤＬ起点（ＰＦＤＬＯ）によって指定される。ＰＦＤＬＯの内容は、右に５個の０が付加された状態で、ＰＦＤＬ上の最初のフレーム記述子のホスト・ホーム・スペース仮想アドレスを指定する。０という値は、このリストが空であることを示す。
【００４８】
ＰＦＤＬＯは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。ＰＦＤＬＯは、一実施形態では、リストの保全性を維持するダブルワード同時インターロック更新動作により変更される。
【００４９】
領域テーブル項目
「領域テーブル項目」という用語は、領域第１テーブル項目、領域第２テーブル項目、または領域第３テーブル項目を示す。ある項目を含むテーブルのレベル（第１、第２、または第３）は、その項目内のテーブル・タイプ（ＴＴ）ビットによって識別される。領域第１テーブル、領域第２テーブル、および領域第３テーブルから取り出された項目のフォーマットの例は図４〜図６に描写されている。特に、図４は領域第１テーブル項目４００のフォーマットの一実施形態を描写し、図５は領域第２テーブル項目４３０のフォーマットの一実施形態を描写し、図６は領域第３テーブル項目４６０のフォーマットの一実施形態を描写している。
【００５０】
例として、３つのレベルの領域テーブル項目内のフィールドは以下のように割り振られている。
【００５１】
領域第２テーブル起点４０２、領域第３テーブル起点４３２、およびセグメント・テーブル起点４６２：  領域第１テーブル項目は領域第２テーブル起点を含む。領域第２テーブル項目は領域第３テーブル起点を含む。領域第３テーブル項目はセグメント・テーブル起点を含む。以下の記述は３つの起点のそれぞれに適用される。一例では、この項目のビット０〜５１は、右に１２個の０が付加された状態で、次の下位レベル・テーブルの始まりを指定する６４ビットのアドレスを形成する。
【００５２】
ＤＡＴ保護ビット（Ｐ）４０６、４３６、４６６：  拡張ＤＡＴが適用されるときに、ビット５４は、変換時に使用されるその後の領域テーブル項目、セグメント・テーブル項目、および適用可能であればページ・テーブル項目のそれぞれのＤＡＴ保護ビットとのＯＲが取られるものとして処理される。したがって、このビットが１であるときに、ＤＡＴ保護は、領域テーブル項目によって指定された１つまたは複数の領域全体に適用される。拡張ＤＡＴ機構がインストールされていないときに、またはその機構がインストールされているが、拡張ＤＡＴ使用可能化制御が０であるときに、領域テーブル項目のビット５４は無視される。
【００５３】
領域第２テーブル・オフセット４０８、領域第３テーブル・オフセット４３８、およびセグメント・テーブル・オフセット（ＴＦ）４６８：  領域第１テーブル項目は領域第２テーブル・オフセットを含む。領域第２テーブル項目は領域第３テーブル・オフセットを含む。領域第３テーブル項目はセグメント・テーブル・オフセットを含む。以下の記述は３つのオフセットのそれぞれに適用される。この項目のビット５６および５７は、テーブルの始まりで欠落している、次の下位レベル・テーブルの一部分の長さを指定し、すなわち、これらのビットは、次の下位レベル・テーブル内に実際に存在する最初の項目の位置を指定する。これらのビットは、欠落部分の長さを４０９６バイト単位で指定し、その結果、欠落部分の長さが５１２項目の倍数単位で可変のものになる。４０９６バイト単位の欠落部分の長さはＴＦ値に等しい。次の下位レベル・テーブルにより変換すべき仮想アドレスの一部分（ＲＳＸ、ＲＴＸ、またはＳＸ）がそのテーブル内に実際に存在する項目を指定するかどうかを設定するために、長さフィールドであるビット６２および６３に併せてオフセット・フィールドの内容を使用する。
【００５４】
領域無効ビット（Ｉ）４１０、４４０、４７０：  １つの領域は、たとえば、２ギガバイトの仮想アドレスからなる連続範囲である。領域第１テーブル項目または領域第２テーブル項目内のビット５８は、その項目に関連する１組の領域が使用可能であるかどうかを制御する。領域第３テーブル項目内のビット５８は、その項目に関連する単一領域が使用可能であるかどうかを制御する。ビット５８が０であるときに、領域テーブル項目を使用することにより、アドレス変換が続行される。このビットが１であるときに、その項目を変換に使用することはできない。
【００５５】
テーブル・タイプ・ビット（ＴＴ）４１２、４２２、４７２：  領域第１テーブル項目、領域第２テーブル項目、および領域第３テーブル項目のビット６０および６１は、以下のように、その項目を含むテーブルのレベルを識別する。ビット６０および６１は、変換時に使用中のアドレス・スペース制御要素であるテーブル指定のタイプと、これまで使用してきたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別し、そうでなければ、変換指定例外が認識される。一例として、以下の表はテーブル・タイプ・ビットを示している。
【表１】
0005812245.tif 000002
【００５６】
領域第２テーブル長４１４、領域第３テーブル長４４４、およびセグメント・テーブル長４７４（ＴＬ）：  領域第１テーブル項目は領域第２テーブル長を含む。領域第２テーブル項目は領域第３テーブル長を含む。領域第３テーブル項目はセグメント・テーブル長を含む。以下の記述は３つの長さのそれぞれに適用される。この項目のビット６２および６３は、次の下位レベル・テーブルの長さを４０９６バイト単位で指定し、その結果、テーブルの長さが５１２項目の倍数単位で可変のものになる。４０９６バイト単位の次の下位レベル・テーブルの長さはＴＬ値より１大きい。次の下位レベル・テーブルにより変換すべき仮想アドレスの一部分（ＲＳＸ、ＲＴＸ、またはＳＸ）がそのテーブル内に実際に存在する項目を指定するかどうかを設定するために、オフセット・フィールドであるビット５６および５７に併せて長さフィールドの内容を使用する。
【００５７】
領域テーブル項目の他のビット位置はいずれも、考えられる今後の拡張のために予約されており、０を含んでいなければならず、そうでなければ、プログラムは今後、矛盾なく動作することができない。拡張ＤＡＴが適用されるときに、テーブル項目が無効であっても、領域テーブル項目の予約ビット位置は０を含んでいなければならない。
【００５８】
セグメント・テーブル項目
拡張ＤＡＴが適用されないときに、または拡張ＤＡＴが適用され、セグメント・テーブル項目（ＳＴＥ）フォーマット制御であるセグメント・テーブル項目のビット５３が０であるときに、セグメント・テーブルから取り出された項目は図７に描写されているフォーマット（たとえば、フォーマット０）を有する。拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であるときに、セグメント・テーブルから取り出された項目は、たとえば、図８に描写されているフォーマット（たとえば、フォーマット１）を有する。
【００５９】
一例として、フォーマット０セグメント・テーブル項目５００（図７）は以下のフィールドを含む。
【００６０】
ページ・テーブル起点５０２：  拡張ＤＡＴが適用されないときに、または拡張ＤＡＴが適用されるが、ＳＴＥフォーマット制御であるセグメント・テーブル項目のビット５３が０であるときに、ビット０〜５２は、右に１１個の０が付加された状態で、ページ・テーブルの始まりを指定する６４ビットのアドレスを形成する。そのアドレスが実アドレスであるかまたは絶対アドレスであるかは予測不能である。
【００６１】
ＳＴＥフォーマット制御（ＦＣ）５０６：  拡張ＤＡＴが適用されるときに、ビット５３は以下のようにセグメント・テーブル項目用のフォーマット制御である。
・  ＦＣビットが０であるときに、この項目のビット０〜５２はページ・テーブル起点を形成し、ビット５５は予約される。
・  ＦＣビットが１であるときに、この項目のビット０〜４３はセグメント・フレーム絶対アドレスを形成し、ビット４７はＡＣＣＦ妥当性制御であり、ビット４８〜５１はアクセス制御ビットであり、ビット５２は取り出し保護ビットであり、ビット５５は変更記録オーバーライドである。拡張ＤＡＴが適用されないときに、ビット５３は無視される。
【００６２】
ＤＡＴ保護ビット（Ｐ）５０８：  ビット５４は、１であるときに、ＤＡＴ保護がセグメント全体に適用されることを示す。
・  拡張ＤＡＴが適用されないときに、ビット５４は、変換時に使用されるページ・テーブル項目内のＤＡＴ保護ビットとのＯＲが取られるものとして処理される。
・  拡張ＤＡＴが適用されるときに、変換時に使用される任意およびすべての領域テーブル項目内のＤＡＴ保護ビットは、セグメント・テーブル項目内のＤＡＴ保護ビットとのＯＲが取られるものとして処理され、ＳＴＥフォーマット制御が０であるときに、ＳＴＥ内のＤＡＴ保護ビットは、ページ・テーブル項目内のＤＡＴ保護ビットとのＯＲが取られるものとしてさらに処理される。
【００６３】
セグメント無効ビット（Ｉ）５１０：  ビット５８は、セグメント・テーブル項目に関連するセグメントが使用可能であるかどうかを制御する。
・  このビットが０であるときに、セグメント・テーブル項目を使用することにより、アドレス変換が続行される。
・  このビットが１であるときに、セグメント・テーブル項目を変換に使用することはできない。
【００６４】
共通セグメント・ビット（Ｃ）５１２：  ビット５９は、セグメント・テーブル項目の変換索引バッファ（ＴＬＢ：translation lookaside buffer）コピーの使用を制御する。拡張ＤＡＴが適用されないときに、または拡張ＤＡＴが適用されるが、フォーマット制御が０であるときに、ビット５９はセグメント・テーブル項目によって指定されたページ・テーブルのＴＬＢコピーの使用も制御する。
・  ０は専用セグメント（private segment）を識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、そのセグメント・テーブル項目が常駐するセグメント・テーブルを指定するセグメント・テーブル起点に関連する場合にのみ使用することができる。
・  １は共通セグメントを識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、異なるセグメント・テーブルが指定されている場合でも、セグメント索引に対応するアドレスを変換するために使用し続けることができる。
【００６５】
しかし、専用スペース制御であるビット５５が変換時に使用されるアドレス・スペース制御要素内で１である場合、またはそのアドレス・スペース制御要素が実スペース指定である場合、共通セグメントに関するセグメント・テーブル項目および任意のページ・テーブルのＴＬＢコピーは使用不能である。使用中のアドレス・スペース制御要素内で専用スペース制御が１であるときに、セグメント・テーブル項目が変換中にストレージから取り出される場合、共通セグメント・ビットは０になるはずであり、そうでなければ、変換指定例外が認識される。
【００６６】
テーブル・タイプ・ビット（ＴＴ）５１４：  セグメント・テーブル項目のビット６０および６１は、その項目を含むテーブルのレベルを識別するために２進数の００になる。領域テーブル項目またはセグメント・テーブル項目内のビット６０および６１として考えられる値の意味は以下の通りである。
【表２】
0005812245.tif 000003
【００６７】
ビット６０および６１は、変換時に使用中のアドレス・スペース制御要素であるテーブル指定のタイプと、これまで使用してきたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別するはずであり、そうでなければ、変換指定例外が認識される。
【００６８】
セグメント・テーブル項目の他のビット位置はいずれも、考えられる今後の拡張のために予約されており、０を含んでいなければならず、そうでなければ、プログラムは今後、矛盾なく動作することができない。拡張ＤＡＴが適用されるときに、テーブル項目が無効であっても、セグメント・テーブル項目の予約ビット位置は０を含んでいなければならない。
【００６９】
一例として、フォーマット１セグメント・テーブル項目５５０（図８）は以下のフィールドを含む。
【００７０】
セグメント・フレーム絶対アドレス（ＳＦＡＡ）５５２：  拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であるときに、この項目のビット０〜４３は、右に２０個の０が付加された状態で、セグメントの６４ビットの絶対アドレスを形成する。
【００７１】
ＡＣＣＦ妥当性制御（ＡＶ）５５６：  拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であるときに、ビット４７はアクセス制御ビットおよび取り出し保護ビット（ＡＣＣＦ）の妥当性制御である。ＡＶ制御が０であるときに、セグメント・テーブル項目のビット４８〜５２は無視される。ＡＶ制御が１であるときに、ビット４８〜５２は以下に記載するように使用される。
【００７２】
アクセス制御ビット（ＡＣＣ）５５８：  拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であり、ＡＶ制御が１であるときに、セグメント・テーブル項目のビット４８〜５１は、そのアドレスに適用される任意のキー制御アクセス・チェックに使用可能なアクセス制御ビットを含む。
【００７３】
取り出し保護ビット（Ｆ）５６０：  拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であり、ＡＶ制御が１であるときに、セグメント・テーブル項目のビット５２は、そのアドレスに適用される任意のキー制御アクセス・チェックに使用可能な取り出し保護ビットを含む。
【００７４】
ＳＴＥフォーマット制御（ＦＣ）５６２：  拡張ＤＡＴが適用されるときに、ビット５３は以下のようにセグメント・テーブル項目用のフォーマット制御である。
・  ＦＣビットが０であるときに、この項目のビット０〜５２はページ・テーブル起点を形成し、ビット５５は予約される。
・  ＦＣビットが１であるときに、この項目のビット０〜４３はセグメント・フレーム絶対アドレスを形成し、ビット４７はアクセス制御ビットおよび取り出し保護ビットのＡＣＣＦ妥当性制御であり、ビット４８〜５１はアクセス制御ビットであり、ビット５２は取り出し保護ビットであり、ビット５５は変更記録オーバーライドである。拡張ＤＡＴが適用されないときに、ビット５３は無視される。
【００７５】
ＤＡＴ保護ビット（Ｐ）５６４：  ビット５４は、１であるときに、ＤＡＴ保護がセグメント全体に適用されることを示す。
・  拡張ＤＡＴが適用されないときに、ビット５４は、変換時に使用されるページ・テーブル項目内のＤＡＴ保護ビットとのＯＲが取られるものとして処理される。
・  拡張ＤＡＴが適用されるときに、変換時に使用される任意およびすべての領域テーブル項目内のＤＡＴ保護ビットは、セグメント・テーブル項目内のＤＡＴ保護ビットとのＯＲが取られるものとして処理され、ＳＴＥフォーマット制御が０であるときに、ＳＴＥ内のＤＡＴ保護ビットは、ページ・テーブル項目内のＤＡＴ保護ビットとのＯＲが取られるものとしてさらに処理される。
【００７６】
変更記録オーバーライド（ＣＯ）５６６：  拡張ＤＡＴが適用され、ＳＴＥフォーマットが１であるときに、セグメント・テーブル項目のビット５５はそのセグメントに関する変更記録オーバーライドである。拡張ＤＡＴが適用されないときに、または拡張ＤＡＴが適用されるが、ＳＴＥフォーマット制御が０であるときに、セグメント・テーブル項目のビット５５は無視される。
【００７７】
セグメント無効ビット（Ｉ）５６８：  ビット５８は、セグメント・テーブル項目に関連するセグメントが使用可能であるかどうかを制御する。
・  このビットが０であるときに、セグメント・テーブル項目を使用することにより、アドレス変換が続行される。
・  このビットが１であるときに、セグメント・テーブル項目を変換に使用することはできない。
【００７８】
共通セグメント・ビット（Ｃ）５７０：  ビット５９は、セグメント・テーブル項目の変換索引バッファ（ＴＬＢ）コピーの使用を制御する。拡張ＤＡＴが適用されないときに、または拡張ＤＡＴが適用されるが、フォーマット制御が０であるときに、ビット５９はセグメント・テーブル項目によって指定されたページ・テーブルのＴＬＢコピーの使用も制御する。
・  ０は専用セグメントを識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、そのセグメント・テーブル項目が常駐するセグメント・テーブルを指定するセグメント・テーブル起点に関連する場合にのみ使用することができる。
・  １は共通セグメントを識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、異なるセグメント・テーブルが指定されている場合でも、セグメント索引に対応するアドレスを変換するために使用し続けることができる。
【００７９】
しかし、専用スペース制御であるビット５５が変換時に使用されるアドレス・スペース制御要素内で１である場合、またはそのアドレス・スペース制御要素が実スペース指定である場合、共通セグメントに関するセグメント・テーブル項目および任意のページ・テーブルのＴＬＢコピーは使用不能である。使用中のアドレス・スペース制御要素内で専用スペース制御が１であるときに、セグメント・テーブル項目が変換中にストレージから取り出される場合、共通セグメント・ビットは０になるはずであり、そうでなければ、変換指定例外が認識される。
【００８０】
テーブル・タイプ・ビット（ＴＴ）５７２：  セグメント・テーブル項目のビット６０および６１は、その項目を含むテーブルのレベルを識別するために２進数の００になる。領域テーブル項目またはセグメント・テーブル項目内のビット６０および６１として考えられる値の意味は以下の通りである。
【表３】
0005812245.tif 000004
【００８１】
ビット６０および６１は、変換時に使用中のアドレス・スペース制御要素であるテーブル指定のタイプと、これまで使用してきたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別するはずであり、そうでなければ、変換指定例外が認識される。
【００８２】
セグメント・テーブル項目の他のビット位置はいずれも、考えられる今後の拡張のために予約されており、０を含んでいなければならず、そうでなければ、プログラムは今後、矛盾なく動作することができない。拡張ＤＡＴが適用されるときに、テーブル項目が無効であっても、セグメント・テーブル項目の予約ビット位置は０を含んでいなければならない。
【００８３】
ページ・テーブル項目
ゲスト・ブロック（たとえば、単一ストレージ・キー（storage key）および協調メモリ管理（ＣＭＭ：collaborative memory management）状態がそれに関連付けられている絶対メモリ内の領域（たとえば、４Ｋバイト））に関する状態情報は、たとえば、ゲストのメモリを記述するホスト・ページ・テーブル（ＰＴ）およびページ状況テーブル（ＰＧＳＴ）に維持される。これらのテーブルは、たとえば、以下により詳細に記載する、１つまたは複数のページ・テーブル項目（ＰＴＥ）および１つまたは複数のページ状況テーブル項目（ＰＧＳＴＥ）をそれぞれ含む。
【００８４】
ページ・テーブル項目６００の一例について、図９に関連して説明する。一実施形態では、ページ・テーブル項目内のフィールドは以下のように割り振られている。
【００８５】
ページ・フレーム実アドレス（ＰＦＲＡ）６０２：  ビット０〜５１は、実（この場合はホストの実）ストレージ・アドレスの最左端ビットを提供する。これらのビットが、右側の仮想アドレスの１２ビットのバイト・インデックス・フィールドと連結されると、６４ビットの実アドレスが得られる。
【００８６】
ページ無効ビット（Ｉ）６０４：  ビット５３は、ページ・テーブル項目に関連するページが使用可能であるかどうかを制御する。このビットが０であるときに、ページ・テーブル項目を使用することにより、アドレス変換が続行される。さらに、ホストとゲストとの協調メモリ管理（ＣＭＭ）に関しては、ホスト状態はｒ（常駐（resident）、すなわち、ゲスト・ブロックはホスト・フレーム内に存在する）になる。このビットが１であるときに、ページ・テーブル項目は変換に使用されず、ＣＭＭホスト状態は、ＰＧＳＴＥ．Ｚによって決定されるように、ｐ（保存済み（preserved）、すなわち、ゲスト・ブロックはホスト・フレーム内に存在しないが、ホストによって何らかの補助ストレージに保存されている）になるか、またはｚ（論理ゼロ（logically zero）、すなわち、ゲスト・ブロックはホスト・フレーム内に存在せず、ゲスト・ブロックの内容は０になることが分かっている）になる。
【００８７】
ＤＡＴ保護ビット（Ｐ）６０６：  ビット５４は、そのページ内でストア・アクセス（store access）を行うことができるかどうかを制御する。この保護メカニズムは、キー制御保護（key controlled protection）メカニズムおよび低アドレス保護（lowaddress protection）メカニズムに加えて行われるものである。このビットは取り出しアクセス（fetchaccess）には何も影響を及ぼさない。このビットが０である場合、以下の追加の制約を条件として、そのページへのストアが許可される。
・  ＤＡＴ保護ビットは、変換時に使用されるセグメント・テーブル項目では０になる。
・  拡張ＤＡＴが適用されるときに、ＤＡＴ保護ビットは、変換時に使用されるすべての領域テーブル項目で０になる。
【００８８】
ＤＡＴ保護ビットが１である場合、ストアは認可されない。優先順位の高い例外条件がまったく存在しない場合、ＤＡＴ保護ビットが１であるときにストアしようと試みると、保護例外が認識される。セグメント・テーブル項目内のＤＡＴ保護ビットは、ＤＡＴ保護がそのページに適用されるかどうかを判断するときに、ビット５４とのＯＲが取られるものとして処理される。拡張ＤＡＴが適用されるときに、変換時に使用される任意の領域テーブル項目内のＤＡＴ保護ビットも、ＤＡＴ保護が適用されるかどうかを判断するときに、ビット５４とのＯＲが取られるものとして処理される。
【００８９】
キー制御保護、低アドレス保護、およびアクセス・リスト制御保護（access-list-controlledprotection）などのその他の保護メカニズムは、ＤＡＴ保護とは無関係に適用することができ、アクセスを禁止することもできる。
【００９０】
変更記録オーバーライド（ＣＯ）６０８：  拡張ＤＡＴが適用されないときに、ページ・テーブル項目のビット５５は０を含まないはずであり、そうでなければ、アドレス変換にその項目を使用する命令の実行の一部として、変換指定例外が認識される。拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が０であるときに、ページ・テーブル項目のビット５５はそのページに関する変更記録オーバーライドである。
【００９１】
上記に加えて、一例では、その項目のビット位置５２は０を含むはずであり、そうでなければ、アドレス変換にその項目を使用する命令の実行の一部として、変換指定例外が認識される。ビット位置５６〜６３は割り当てられず、無視される。
【００９２】
ページ状況テーブル項目の一例について、図１０に関連して説明する。ページ状況テーブル項目７００は、たとえば、以下のものを含む。
（ａ）Ａｃｃ７０２：  アクセス制御キー
（ｂ）ＦＰ７０４：  取り出し保護インジケータ
（ｃ）ページ制御インターロック（ＰＣＬ）７０６：  これは、予約済みとマークされているＰＧＳＴＥ状況領域およびＰＧＳＴＥビットを除き、ページ・テーブル項目（ＰＴＥ）および対応するＰＧＳＴＥへの更新を直列化するためのインターロック制御である。
（ｄ）ＨＲ７０８：  ホスト参照バックアップ・インジケータ
（ｅ）ＨＣ７１０：  ホスト変更バックアップ・インジケータ
（ｆ）ＧＲ７１２：  ゲスト参照バックアップ・インジケータ
（ｇ）ＧＣ７１４：  ゲスト変更バックアップ・インジケータ
（ｈ）状況７１６：  ホスト・プログラム用として意図されている。
（ｉ）ページ内容論理ゼロ・インジケータ（Ｚ）７１８：  このビットは、対応するＰＴＥページ無効（ＰＴＥ．Ｉ）ビットが１であるときに意味がある。
Ｚが１であるときに、このＰＧＳＴＥおよび対応するＰＴＥによって記述されたページの内容は０であると見なされる。そのページの前の内容はいずれも保存される必要はなく、０のページで置き換えることができる。
Ｚが０であるときに、ＰＧＳＴＥおよび対応するＰＴＥによって記述されたページの内容は０であると見なされない。そのページの内容はホストによって保存される。
Ｚビットが１であり、対応するＰＴＥ．Ｉビットが１であるときに、ＣＭＭホスト状態はｚ（論理ゼロ）になる。これは、ページ内容をホストによってまたはホスト・ページ管理支援機構の一機能によって置き換えることができることを意味する。
Ｚビットが１であり、対応するＰＴＥ．Ｉビットが１であり、ページ内容が置き換えられるときに、そのページは、０に設定されているフレームにそれを関連付けることによって置き換えなければならない。
Ｚビットが０であり、ＰＴＥ無効ビットが１であるときに、ＣＭＭホスト状態はｐ（保存済み）になる。
（ｊ）ページ・クラス（ＰＣ）７２０：  ０であるときに、ＰＧＳＴＥおよび対応するＰＴＥによって記述されたページはクラス０ページであり、クラス０ページ用のデルタ・ピン固定ページ・カウント・アレイ（ＤＰＰＣＡ：delta pinned page count array）は、そのページに関するピン固定（pinning）動作およびピン解除（unpinning）動作をカウントするために使用される。１であるときに、ＰＧＳＴＥおよび対応するＰＴＥによって記述されたページはクラス１ページであり、クラス１ページ用のＤＰＰＣＡは、そのページに関するピン固定動作およびピン解除動作をカウントするために使用される。
（ｋ）ピン・カウント・オーバーフロー（ＰＣＯ）７２２：  １であるときに、ピン・カウント・フィールドはオーバーフロー状態になっている。この場合、全ピン・カウントは、マシンによってアクセスされない他のデータ構造にホストによって保持される。０であるときに、ピン・カウント・フィールドはオーバーフロー状態になっていない。
（ｌ）処理済みフレーム記述子リスト上のフレーム記述子（ＦＰＬ）７２４：  １であるときに、ＰＧＳＴＥおよび対応するＰＴＥによって記述されたページに関するフレーム記述子は処理済みフレーム記述子リスト内にある。フレーム記述子は、そのページに関するＨＰＭＡ解決ホスト・ページ機能によって使用されたホスト・フレームを識別する。
（ｍ）ページ内容置き換え要求（ＰＣＲ）７２６：  １であるときに、ＰＧＳＴＥおよび対応するＰＴＥによって表されるページについてＨＰＭＡ解決ホスト・ページ機能が呼び出されたときに、ページ内容置き換えが要求された。
（ｎ）使用状態（ＵＳ）７２８：  ホストとゲストとの協調メモリ管理の場合、このフィールドは、ゲスト状態がＳ（安定（stable）、すなわち、安定ブロックの内容はゲストによって設定されたものに等しいままになる）になるか、Ｕ（未使用（unused）、すなわち、未使用ブロックの内容はゲストにとって意味がない）になるか、Ｖ（揮発性（volatile）、すなわち、揮発性ブロックの内容はゲストにとって意味があるが、ホストはそのブロックの内容をいつでも廃棄し、バッキング・フレームを再利用（reclaim）することができる）になるか、またはＰ（潜在的揮発性（potentiallyvolatile）、すなわち、潜在的揮発性ブロックの内容はゲストにとって意味があるが、ゲスト変更履歴に基づいて、ホストは、そのブロックの内容を廃棄できるかまたは保存しなければならない）になるかを示す。
（ｏ）状況７３０：  ホスト・プログラム用として意図されている。
（ｐ）ピン・カウント７３２：  ＰＧＳＴＥおよび対応するＰＴＥによって表されるホスト仮想ページの内容がＰＴＥのページ・フレーム実アドレス・フィールドによって指定された実ホスト・フレーム内にピン固定されるかどうかを示すために使用される符号なし２進整数カウント。このフィールドの値が０より大きいかまたはページ・カウント・オーバーフロー（ＰＣＯ）ビットが１であるときに、対応するページはピン固定されていると見なされる。このフィールドの値が０であり、ＰＣＯビットが０であるときに、対応するページはピン固定されていると見なされない。
ホストまたはＣＰＵのいずれかによってページがピン固定された時点で、このフィールドは１だけ増分されるはずである。ホストまたはＣＰＵのいずれかによってページがピン解除された時点で、このフィールドは１だけ減分されるはずである。
ピン・カウント・フィールドの値が０より大きいかまたはＰＣＯビットが１であるときに、対応するＰＴＥ．Ｉ（ページ無効）ビットは０になるはずである。そうでなければ、予測不能な結果が発生する可能性がある。
ページがピン固定されている間、ホスト・プログラムは、ＰＴＥまたはセグメント・テーブル項目（ＳＴＥ）内のＰＴＥページ・フレーム実アドレス（ＰＦＲＡ）フィールドの内容、ＰＴＥページ無効（Ｉ）ビットの設定、またはページ保護（Ｐ）ビットの設定を変更してはならない。そうでなければ、予測不能な結果が発生する可能性がある。
【００９３】
ページ・テーブル項目およびページ・テーブルならびにセグメント・テーブル項目に関する詳細については、「z/Architecture Principles of Operation」という題名のＩＢＭの資料（２００７年４月発行のＩＢＭ資料番号ＳＡ２２−７８３２−０５）に記載されている。その上、ＰＧＳＴＥに関する詳細については、２００４年５月２７日に出願されたＢｌａｎｄｙ他による「Facilitating Management of Storage of a Pageable Mode VirtualEnvironment Absent Intervention of a Host of the Environment」という発明の名称の米国特許出願第１０／８５４９９０号、および２００７年１月１８日に発行されたＡｄｌｕｎｇ他による「Facilitating Processing Within Computing Environment SupportingPageable Guests」という発明の名称の米国特許出願公報ＵＳ２００７／００１６９０４Ａ１号に記載されている。
【００９４】
一実施形態では、ページ・テーブルあたり１つのページ状況テーブルが存在し、ページ状況テーブルはページ・テーブルと同じサイズであり、ページ状況テーブル項目はページ・テーブル項目と同じサイズであり、ページ状況テーブルはページ・テーブルから固定変位（ホスト実メモリ内）に位置している。したがって、各ページ・テーブル項目とページ状況テーブル項目との間には１対１の対応が存在する。あるページのホストの仮想アドレスを考慮すると、マシンとホストはいずれも、ゲスト・ブロックに関するページ・テーブル項目に対応するページ状況テーブル項目を容易に突き止めることができる。
【００９５】
コピー・オン・ライト（Copy-On-Write）
時には、メモリの各部分がコピーされるはずである。このコピーは、ユーザ開始であるか、またはオペレーティング・システムによって開始することができる。従来のシステムは、フラッシュ・コピーに遅延コピー技法（lazy copy technique）を使用する場合が多く、コピーすべきストレージには読み取り専用（read-only）という状況が割り当てられるが、実際のコピーは後ほどまで据え置かれる。オリジナルまたはコピーへの書き込みを試みる場合、メモリはその時点でコピーされ、オリジナルとコピーの両方に読み取り書き込み（read-write）という入出力（Ｉ／Ｏ）状況が与えられる。このようにして、コピーは直ちに行われたように見えるが、実際のコピーは後ほど（たとえば、考えられる最も遅い時間）まで据え置かれる。書き込みがまったく行われない場合、コピーもまったく行われない。このため、この方法はコピー・オン・ライト（ＣＯＷ）または仮想コピーと呼ばれる。
【００９６】
一般に、単一書き込みの結果、２回の書き込み動作が行われるので、コピー・オン・ライト動作は計算上、高価なものである。すなわち、既存のデータ・ブロックは古い物理ブロックから新しい物理ブロックにコピーされ、実際の更新／書き込み動作は新しい物理ブロックについて実行される。
【００９７】
命令実行
ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、たとえば、命令実行は、完了（completion）、ヌル文字化（nullification）、抑止（suppression）、終了（termination）、および部分完了（partial completion）という５通りのうちの１つで終了し、そのそれぞれについて以下に説明する。
【００９８】
命令実行の完了は、その命令の定義時に要求された通りの結果を提供する。命令実行の完了後に割り込みが行われると、旧ＰＳＷ内の命令アドレスによって次の順次命令が指定される。
【００９９】
命令実行のヌル文字化は、命令の実行がヌル文字化された後で割り込みが行われると、次の順次命令の代わりにその実行がヌル文字化された命令（または、適宜、実行（Execute）命令）が旧ＰＳＷ内の命令アドレスによって指定されることを除いて、以下に記載する抑止と同じ効果を有する。
【０１００】
命令実行の抑止により、命令は「ノーオペレーション（nooperation）」を指定した場合のように実行される。条件コードを含む、任意の結果フィールドの内容は変更されない。抑止後の割り込み時に旧ＰＳＷ内の命令アドレスによって次の順次命令が指定される。
【０１０１】
命令実行の終了により、その命令によって変更する予定の任意のフィールドの内容は予測不能なものになる。動作は、指定された結果フィールドの内容の全部または一部を置き換える場合もあれば、いずれも置き換えない場合もあり、このような変更が命令によって要求されている場合は条件コードを変更することができる。マシン・チェック条件によって割り込みが引き起こされない限り、ＰＳＷ内の命令アドレスの妥当性、割り込みコード、および命令長コードは影響されず、マシンの動作の状態も他のいずれの方法でも影響されない。終了後の割り込み時に旧ＰＳＷ内の命令アドレスによって次の順次命令が指定される。
【０１０２】
命令実行の部分完了は割り込み可能命令について行われる。
【０１０３】
抑止またはヌル文字化が行われるときに命令の実行はノーオペレーションとして処理されるが、何らかの命令に関連する暗黙追跡アクションの結果として、ストアを実行することができる。
【０１０４】
保護
エラーを含むかまたは無許可であるプログラムによる破壊または誤用からメイン・ストレージの内容を保護するために、キー制御保護、アクセス・リスト制御保護、ページ保護、および低アドレス保護という４つの保護機構が提供される。これらの保護機構は独立して適用され、いずれの機構もアクセスを禁止しないときに、メイン・ストレージへのアクセスが許可される。それぞれの保護機構について以下に説明する。
【０１０５】
キー制御保護：  キー制御保護は、不適切なストアまたは不適切なストアおよび取り出しの両方に対する保護を提供するが、不適切な取り出しのみに対する保護は提供しない。
【０１０６】
キー制御保護がストレージ・アクセスに適用される場合、ストレージ・キーがストレージ・アクセスに関する要求に関連するアクセス・キーと一致するときにストアが許可され、両方のキーが一致するときにまたはストレージ・キーの取り出し保護ビットが０であるときに取り出しが許可される。ストレージ・キーの４つのアクセス制御ビットがアクセス・キーに等しいときにまたはアクセス・キーが０であるときに、両方のキーは一致すると言われる。保護アクションについては以下の表に要約する。
【表４】
0005812245.tif 000005
【０１０７】
ストレージへのアクセスがＣＰＵによって開始され、キー制御保護が適用されるときに、２次への移動（Move To Secondary）および宛先キーによる移動（Move WithDestination Key）などの特定の命令の第１オペランドについて、１次への移動（Move ToPrimary）、キーによる移動（Move With Key）、およびソース・キーによる移動（Move With Source Key）などの命令の第２オペランドについて、さらに、たとえば、ページ移動（Move Page）命令の第１オペランドまたは第２オペランドのいずれかについて、汎用レジスタ内にアクセス・キーが指定されることを除いて、ＰＳＷキーはアクセス・キーになる。ＰＳＷキーは、たとえば、現行ＰＳＷのビット位置８〜１１を占有する。ストレージへのアクセスがチャネル・プログラム実行のためであるときに、そのチャネル・プログラムに関連するサブチャネル・キーがアクセス・キーになる。チャネル・プログラム用のサブチャネル・キーは操作要求ブロック（ＯＲＢ：operation-request block）に指定される。チャネル・サブシステム・モニターのために測定ブロックへのアクセスが行われるときに、測定ブロック・キーがアクセス・キーになる。測定ブロック・キーは、たとえば、チャネル・モニター設定（Set Channel Monitor）命令によって指定される。
【０１０８】
キー制御保護のためにＣＰＵアクセスが禁止されると、その命令の実行は終了され、保護例外のためのプログラム割り込みが行われる。しかし、操作単位または命令の実行は抑止することができる。チャネル・プログラム・アクセスが禁止されると、始動機能は終了し、保護チェック条件が関連の割り込み応答ブロック（ＩＲＢ：interruption-response block）に示される。測定ブロック・アクセスが禁止されると、入出力測定ブロック保護チェック条件が示される。キー制御保護のためにストア・アクセスが禁止されると、保護位置の内容は変わらない。取り出しアクセスが禁止されると、保護情報はレジスタ内にロードされないか、他のストレージ・ロケーションに移動するか、または入出力装置に提供される。禁止された命令取り出しの場合、その命令は抑止され、任意の命令長コードが示される。
【０１０９】
キー制御保護は、ＣＰＵが問題プログラム状態にあるかまたは監視プログラム状態にあるかとは無関係であり、いくつかの例外を除いて、実行中のＣＰＵ命令またはチャネル・コマンド・ワードのタイプに依存しない。その他の指定がある場合を除き、プログラムによって明示的に指定されたストレージ・ロケーションであって、情報をストアするかまたは取り出すためにＣＰＵによって使用されるストレージ・ロケーションへのアクセスは、キー制御保護の対象になる。ストレージ保護オーバーライド制御が１であり、ストレージ・キーの４つのアクセス制御ビットの値が、たとえば、９であるときに、キー制御保護は適用されない。取り出しのためのキー制御保護は、有効アドレスおよび専用スペース制御次第で、取り出し保護オーバーライド制御が１であるときに、適用される場合もあれば、適用されない場合もある。ストレージ保護オーバーライド制御および取り出し保護オーバーライド制御は、チャネル・サブシステムによって行われるストレージ参照に影響しない。たとえば、ブロック・テスト（Test Block）命令の第２オペランドへのアクセスは、キー制御保護の対象にならない。入出力測定ブロックにアクセスするためにチャネル・サブシステムによって行われるストレージ・アクセス、あるいはＣＣＷ、ＩＤＡＷ（間接データ・アドレス・ワード）、またはＭＩＤＡＷ（変更間接データ・アドレス・ワード）を取り出すためにまたはＣＣＷの実行中に指定されたデータ領域にアクセスするためにチャネル・プログラムによって行われるストレージ・アクセスは、キー制御保護の対象になる。しかし、ＣＣＷ、ＩＤＡＷ、ＭＩＤＡＷ、または出力データが事前取り出しされる場合、ＣＣＷ、ＩＤＡＷ、またはＭＩＤＡＷが制御を取る予定になるまで、あるいはそのデータが書き込まれる予定になるまで、保護チェックは示されない。以下のようなシーケンスのいずれかについて暗黙に行われるアクセスにはキー制御保護は適用されない。
・  割り込み
・  ＣＰＵログアウト
・  アクセス・レジスタ変換、動的アドレス変換、ＰＣ番号変換、ＡＳＮ変換、またはＡＳＮ許可に関するテーブル項目の取り出し
・  追跡
・  ストア状況機能
・  保留割り込みテスト（Test Pending Interruption）が０というオペランド・アドレスを有するときに実位置１８４〜１９１へのストア
・  初期プログラム・ローディング
【０１１０】
同様に、情報を変更または表示するためにオペレータ機構を介して開始されたアクセスには保護は適用されない。しかし、プログラムがこれらの位置を明示的に指定する場合、それらは保護の対象になる。
【０１１１】
キー制御保護の対象になるアクセスは、ストレージ保護オーバーライド制御によって実施される可能性がある。一例として、制御レジスタ０のビット３９はストレージ保護オーバーライド制御である。このビットが１であるときに、ストレージ保護オーバーライドはアクティブである。このビットが０であるときに、ストレージ保護オーバーライドは非アクティブである。ストレージ保護オーバーライドがアクティブである場合、たとえば、９という関連ストレージ・キー値を有するストレージ・ロケーションについて、キー制御ストレージ保護は無視される。ストレージ保護オーバーライドが非アクティブである場合、９というストレージ・キー値について、特殊なアクションは何も行われない。ストレージ保護オーバーライドは、命令取り出し、ならびにそのオペランド・アドレスが論理、仮想、または実である命令の取り出しアクセスおよびストア・アクセスに適用される。これは、チャネル・プログラム実行のために、またはチャネル・サブシステム・モニターのために行われるアクセスには適用されない。ストレージ保護オーバーライドは、キー制御保護の対象にならないアクセスには何も影響を及ぼさない。
【０１１２】
信頼できるサブシステムに併せておそらく誤ったアプリケーション・プログラムが実行される場合に信頼性を改善するためにストレージ保護オーバーライドを使用することができるが、アプリケーション・プログラムはそのサブシステムによってアクセスされたストレージの一部分のみにアクセスする必要がある。これを実行するための技法は以下の通りである。アプリケーション・プログラムによってアクセスされたストレージにはストレージ・キー９が与えられる。サブシステムのみによってアクセスされたストレージには、他の何らかの非ゼロのストレージ・キー、たとえば、キー８が与えられる。アプリケーションはＰＳＷキー９によって実行される。サブシステムは（この例では）ＰＳＷキー８によって実行される。その結果、サブシステムはキー８とキー９の両方のストレージにアクセスすることができ、アプリケーション・プログラムはキー９のストレージのみにアクセスすることができる。
【０１１３】
ストレージ保護オーバーライドは、ＣＰＵによって行われたストレージへのアクセスに影響し、保護テストによって設定された結果にも影響する。しかし、問題プログラム状態であるときに、特定のキー値を使用できるかどうかを判断するためにＰＳＷキー・マスクをテストする命令は、ストレージ保護オーバーライドがアクティブであるかどうかによって影響されない。このような命令としては、とりわけ、キーによる移動（Move With Key）およびアドレスによるＰＳＷキーの設定（Set PSW KeyFrom Address）を含む。これらの命令が問題プログラム状態で９というアクセス・キーを使用できるようにするために、ＰＳＷキー・マスクのビット９は１になるはずである。
【０１１４】
ストレージ保護オーバーライド制御に加えて、キー制御保護の対象になるアクセスは、取り出し保護オーバーライド制御によって実施される可能性がある。一例として、制御レジスタ０のビット３８は取り出し保護オーバーライド制御である。このビットが１であるときに、たとえば、有効アドレス０〜２０４７の位置については取り出し保護は無視される。有効アドレスは、動的アドレス変換またはプレフィックス変換による任意の変換の前に存在するアドレスである。しかし、有効アドレスが動的アドレス変換の対象であり、専用スペース制御、たとえば、ビット５５が変換時に使用されるアドレス・スペース制御要素内で１である場合、取り出し保護は無視されない。取り出し保護オーバーライドは、命令取り出し、ならびにそのオペランド・アドレスが論理、仮想、または実である命令の取り出しアクセスに適用される。これは、チャネル・プログラム実行のために、またはチャネル・サブシステム・モニターのために行われる取り出しアクセスには適用されない。このビットが０に設定されると、有効アドレス０〜２０４７の位置の取り出し保護は、これらの位置に関連するストレージ・キーの取り出し保護ビットの状態によって決定される。取り出し保護オーバーライドは、キー制御保護の対象にならないアクセスには何も影響を及ぼさない。
【０１１５】
取り出し保護オーバーライド制御は、たとえば、アドレス２０４８〜４０９５の位置の取り出し保護を可能にするが、アドレス０〜２０４７の位置の取り出し保護はまったく行わない。
【０１１６】
アクセス・リスト制御保護
アクセス・レジスタ・モードでは、取り出し専用ビットであるアクセス・リスト項目のビット６は、アクセス・リスト項目によって指定されたアドレス・スペースに対し、どのタイプのオペランド参照が許可されるかを制御する。ある参照のアクセス・レジスタ変換部分でその項目が使用され、ビット６が０であるときに、取り出しタイプおよびストア・タイプの両方の参照が許可され、ビット６が１であるときに、取り出しタイプ参照が許可され、ストアしようという試みによって、保護例外が認識され、命令の実行が抑止される。取り出し専用ビットはＡＬＢアクセス・リスト項目に含まれる。メイン・ストレージ内のアクセス・リスト項目内の取り出し専用ビットに対する変更は、保護例外が認識されるかどうかに対して影響を及ぼす場合でも、必ずしも直ちに影響を及ぼすわけではない。しかし、このビットに対するこの変更は、たとえば、ＡＬＢをパージするＡＬＢパージ（Purge ALB）命令または比較交換パージ（Compare And Swap AndPurge）命令が実行された直後に影響を及ぼす。以下に記載する保護テスト命令は、ＣＰＵがアクセス・レジスタ・モードにあるときにアクセス・リスト制御保護を考慮に入れる。アクセス・リスト制御保護に違反すると、一例として、条件コード１が設定されるが、例外として、たとえば、条件コード２または３に関する条件が満足されたときにこれらの条件コードが設定されるのを妨げない。
【０１１７】
アクセス・リスト制御保護に違反すると、抑止が行われる。他の保護タイプのいずれかに違反すると、終了が行われる可能性がある。
【０１１８】
ページ保護
ページ保護機構は、それぞれのページ・テーブル項目およびセグメント・テーブル項目内のページ保護ビットを使用することにより、仮想ストレージへのアクセスを制御する。これは、不適切なストアに対する保護を提供する。ページ保護ビットであるページ・テーブル項目のビット５４は、対応する４Ｋバイト・ページへのストアが許可されるかどうかを制御する。このビットが０であるときに、取り出しとストアの両方が許可され、このビットが１であるときに、取り出しのみが許可される。保護ページにストアしようという試みが行われると、そのページの内容は変わらず、操作単位または命令の実行は抑止され、保護のためのプログラム割り込みが行われる。ページ保護ビットであるセグメント・テーブル項目のビット５４は、セグメント・テーブル項目によって指定されたページ・テーブル内の各項目のページ保護ビット位置内にＯＲされるものとして処理される。したがって、セグメント・テーブル項目ページ保護ビットが１であるときに、その結果は、指定されたページ・テーブル内の各項目でページ保護ビットが１である場合のようになる。ページ保護は、仮想アドレスを使用するストア・タイプ参照に適用される。
【０１１９】
低アドレス保護
低アドレス保護機構は、割り込み処理中にＣＰＵによって使用されるメイン・ストレージ情報の破壊に対する保護を提供する。これは、たとえば、０〜５１１の範囲および４０９６〜４６０７の範囲内の有効アドレス（第１および第２の４Ｋバイトの有効アドレス・ブロックの最初の５１２バイト）によって命令がストアすることを禁止することによって達成される。この範囲基準は、動的アドレス変換またはプレフィックス変換によってアドレスのアドレス変換が行われる場合にその前に適用される。しかし、この範囲基準が適用されないと、その結果、有効アドレスが動的アドレス変換の対象になり、専用スペース制御であるビット５５が変換時に使用されるアドレス・スペース制御要素内で１である場合に、低アドレス保護が適用されない。使用すべきアドレス・スペース制御要素が他のタイプの例外のために使用不能である場合に、低アドレス保護は適用されない。低アドレス保護は、低アドレス保護制御ビットである制御レジスタ０のビット３５の制御下にある。このビットが０であるときに、低アドレス保護はオフであり、このビットが１であるときに、低アドレス保護はオンである。
【０１２０】
低アドレス保護のためにアクセスが禁止された場合、保護位置の内容は変わらず、命令の実行は終了され、保護例外のためのプログラム割り込みが行われる。しかし、操作単位または命令の実行は抑止することができる。たとえば、０〜５１１の範囲または４０９６〜４６０７の範囲内の有効アドレスを使用することによりストアしようというプログラムによる試みは、低アドレス保護の対象になる。低アドレス保護は、そのオペランド・アドレスが論理、仮想、または実である命令のストア・アクセスに適用される。また、低アドレス保護はトレース・テーブルにも適用される。低アドレス保護は、割り込み、ＣＰＵログアウト、たとえば、保留割り込みテストによる実位置１８４〜１９１への入出力割り込みコードのストア、初期プログラム・ローディングおよびストア状況機能などのシーケンスのためにＣＰＵまたはチャネル・サブシステムによって行われるアクセスには適用されず、入出力データ転送中のデータ・ストアにも適用されない。しかし、これらの位置のいずれかにおいてプログラムによって行われる明示的ストアは低アドレス保護の対象になる。
【０１２１】
低アドレス保護およびキー制御保護は同じストア・アクセスに適用されるが、例外として、低アドレス保護はチャネル・サブシステムによって実行されるストアには適用されないのに対して、キー制御保護は適用され、キー制御保護は追跡、ブロック・テストの第２オペランド、または特にリンケージ・スタックについて操作する命令には適用されないのに対して、低アドレス保護は適用される。
【０１２２】
取り出し保護オーバーライドおよび低アドレス保護は、それに関する専用スペース制御がアドレス・スペース制御要素内で１になるアドレス・スペースには適用されないので、アドレス・スペース内の０〜２０４７および４０９７〜４６０７という位置は、そのスペース内の他の位置と同じように使用可能である。
【０１２３】
保護抑止
一部の命令定義は、いずれかのタイプの保護による保護例外が認識された場合に動作が抑止されることを指定する。この指定が欠けていると、アクセス・リスト制御保護またはＤＡＴ保護（ページ保護とも呼ばれる）による保護例外が認識された場合に命令の実行は抑止され、低アドレス保護またはキー制御保護による保護例外が認識された場合に命令の実行は抑止されるかまたは終了される可能性がある。
【０１２４】
保護抑止機能により、制御プログラムは、例外がＤＡＴ保護によるものであるかどうかを判断するために、保護例外を引き起こした仮想アドレスの変換時に使用されるセグメント・テーブル項目、ページ・テーブル項目、拡張ＤＡＴが適用されるときは領域テーブル項目を突き止めることができる。これは、たとえば、ＰＯＳＩＸフォーク機能（またはコピー・オン・ライト機能）の実装のために使用される。また、保護抑止機能により、制御プログラムは、アドレスが仮想ではなかった場合または例外がアクセス・リスト制御保護によるものであった場合にセグメント・テーブル項目およびページ・テーブル項目を突き止めることを回避することもできる。拡張ＤＡＴが適用されるときは、制御プログラムは、アドレスが仮想ではなかった場合または例外がアクセス・リスト制御保護によるものであった場合に領域テーブル項目を突き止めることを回避することもできる。
【０１２５】
保護例外によるプログラム割り込み中に、たとえば、実位置１６８〜１７５のビット位置６１に１または０がストアされる。一例として、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、ビット位置６１に１をストアすることは、以下のことを示している。
・  その間に例外が認識された操作単位または命令実行は抑止されていた。
・  プログラムの旧ＰＳＷ内のＤＡＴモード・ビットによって示されているように、動的アドレス変換（ＤＡＴ）がオンであった場合、例外を引き起こした有効アドレスは、ＤＡＴによって変換すべきであった１である。（有効アドレスは、ＤＡＴまたはプレフィックス変換による任意の変換の前に存在するアドレスである。）ＤＡＴがオンであった場合にビット６１は０に設定されるが、有効アドレスは実アドレスであるのでＤＡＴによって変換されないはずであった。ＤＡＴがオフであった場合、保護例外は、ＤＡＴ保護またはアクセス・リスト制御保護によるものであった可能性はない。
・  実位置１６８〜１７５のビット位置０〜５１は、例外を引き起こした有効アドレスのビット０〜５１を含む。ＤＡＴがオンであって、有効アドレスがＤＡＴによって変換されるはずであったことを示していた場合、実位置１６８〜１７５のビット位置６２および６３ならびに実位置１６０は、ページ変換例外によるプログラム割り込み中にストアされるものと同じ情報を含み、この情報は保護アドレスを含むアドレス・スペースを識別する。また、実位置１６８〜１７５のビット６０は、保護例外がアクセス・リスト制御保護によるものではなかった場合に０になり、その例外がアクセス・リスト制御保護によるものであった場合に１になる。ビット位置６０の１は、その例外がＤＡＴ保護によるものではなかったことを示す。ＤＡＴがオフであった場合、実位置１６８〜１７５のビット位置６０、６２、および６３の内容、ならびに実位置１６０の内容は予測不能である。実位置１６８〜１７５のビット位置５２〜５９の内容は予測不能である。
【０１２６】
ビット６１が０であることは、その操作が抑止されたかまたは終了されたことと、実位置１６８〜１７５の残りのビット位置ならびに実位置１６０の内容は予測不能である。
【０１２７】
保護例外がアクセス・リスト制御保護またはＤＡＴ保護によるものであった場合、ビット６１は１に設定される。保護例外が低アドレス保護またはキー制御保護によるものであった場合、ビット６１は１に設定することができる。
【０１２８】
保護例外条件がアクセス・リスト制御保護またはＤＡＴ保護のいずれかによって存在するが、低アドレス保護またはキー制御保護のいずれかによっても存在する場合、ビット６１が０に設定されるか１に設定されるかは予測不能である。
【０１２９】
保護抑止機能は、重複アドレス・スペースを作成させるＰＯＳＩＸフォーク機能を実行する際に有用である。以下の考察は、拡張ＤＡＴが適用されない場合、または拡張ＤＡＴが適用されるが、セグメント・テーブル項目内のフォーマット制御（ＦＣ）ビットが０である場合に関するものである。フォークが行われると、そのページ内のストアが試行されない限り、制御プログラムにより、異なるアドレス・スペースの同じページが、実ストレージの単一ページ・フレームにマッピングされる。次に、特定のアドレス・スペースでストアが試行されると、制御プログラムは、そのアドレス・スペース内のページに固有のページ・フレームを割り当て、そのページの内容を新しいページ・フレームにコピーする。この最後のアクションはコピー・オン・ライト機能と呼ばれることもある。ページ内でストアしようという試みを検出するために、制御プログラムはそのページに関するページ・テーブル項目内でＤＡＴ保護ビットを１に設定する。指定のセグメント内のどこかにストアしようという試みを検出するために、制御プログラムは初めにセグメント・テーブル項目内でＤＡＴ保護ビットを１に設定することができる。拡張ＤＡＴが適用され、セグメント・テーブル項目内のフォーマット制御（ＦＣ）ビットが１である場合、同様の技法を使用して、絶対ストレージの単一セグメント・フレームをマッピングすることができる。
【０１３０】
ＤＡＴがオンであったときに実位置１６８〜１７５でビット６１が１であることは、保護例外を引き起こしたアドレスが仮想であることを示す。この表示により、例外が低アドレス保護またはキー制御保護とは対照的にＤＡＴ保護によるものであったかどうかを判断するために、アクセス・レジスタ変換および動的アドレス変換のプログラム化形式を実行することができる。
【０１３１】
保護抑止の結果については以下の表に要約する。
【表５】
0005812245.tif 000006
【０１３２】
拡張保護抑止
拡張保護抑止機能がインストールされると、保護例外中に何が発生する可能性があるかについて以下の追加の制約が発生する。これらの制約は、元の保護抑止機能に定義されているどの制約よりも優先される。
【０１３３】
保護例外によるプログラム割り込み中に、実位置１６８〜１７５のビット６１は、認識される保護例外のタイプを示す。保護例外がアクセス・リスト制御保護またはＤＡＴ保護によるものであった場合、ビット６１は１に設定される。保護例外が低アドレス保護またはキー制御保護によるものであった場合、ビット６１は０に設定される。
【０１３４】
保護例外条件がアクセス・リスト制御保護またはＤＡＴ保護のいずれかによって存在するが、低アドレス保護またはキー制御保護のいずれかによっても存在する場合、どの例外が認識されるかならびにビット６１が０に設定されるか１に設定されるかは予測不能である。しかし、どの例外が認識されるかは予測不能であるが、以下の表に要約するように、認識される例外は一貫性のある動作を発生する。
【表６】
0005812245.tif 000007
【０１３５】
ＳＯＰおよびＥＳＯＰ機構は、ネイティブ・アーキテクチャのために、ならびに解釈実行モードで提供される。
【０１３６】
ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、解釈実行モードでの保護抑止は、例外制御（たとえば、ＥＣＡ．１８）が１であるときに保護例外を処理するために使用され、解釈実行モードでの拡張保護抑止は、例外制御（たとえば、ＥＣＡ．１８）が１であり、拡張保護抑止機構がインストールされたときの動作のために使用される。この例では、ＥＣＡ．１８は保護インターセプト制御であり、一般に、ＥＣＡ内のビットが０である場合、関連条件の結果としてインターセプトが行われ、ＥＣＡ内のビットが１である場合、関連機能の解釈実行がホストによって試行される。
【０１３７】
さらに、一例では、実行制御（たとえば、ＥＣＢ．６）はホスト保護割り込み制御である。一般に、ＥＣＢ内のビットが０である場合、関連条件の結果としてインターセプトが行われ、ＥＣＢ内のビットが１である場合、関連機能の解釈実行が試行される。拡張実行モードでの拡張保護抑止は、ＥＣＢ．６が１であり、拡張保護抑止機構がインストールされたときのホスト・ページ保護例外の処理に使用される。
【０１３８】
保護例外の結果、ＥＣＡ．１８、ＥＣＢ．６、およびＩＣ．２（インターセプト制御）の値次第で、プログラム割り込みインターセプトが行われる可能性がある。そうでなければ、対応するインターセプト制御であるビット１またはビット２が１に設定されるタイプである場合、プログラム割り込みにより、たとえば、インターセプト・コード０８のインターセプトが行われる。一例では、インターセプト・コード０８のインターセプトは必須である。たとえば、アドレス指定、指定、および特殊操作という例外によって引き起こされるゲスト・プログラム割り込みについて、インターセプト・コード０８がストアされる。
【０１３９】
ゲスト・アドレス指定例外は、無効ゲストまたはホスト・アドレスによるものである可能性がある。
【０１４０】
ゲスト保護例外は、ゲスト保護条件、ホスト・ページ保護条件、または所与のモード（たとえば、ＭＣＤＳ−−複数制御データ・スペース）ではホスト・アクセス・リスト制御保護条件によるものである可能性がある。
【０１４１】
割り込みのパラメータは状態記述に入れられる。
【０１４２】
様々な解釈実行モードでは、ゲスト・ストレージへのゲスト・アドレスは、実マシン・ストレージ・キーを使用して、固有に定義されたキー制御ストレージ保護の対象になる。また、ゲスト・アクセスは、ゲスト低アドレス保護、ゲスト・ページ保護、ゲスト取り出し保護オーバーライド、およびゲスト・アクセス・リスト制御保護の対象になる。ホスト低アドレス保護は、ゲスト・ストレージへのゲスト参照に適用されない。
【０１４３】
加えて、ホスト・ページ保護は、ＭＣＤＳモードでのホスト・アクセス・リスト制御保護のように、ページング可能ストレージ・モード・ゲスト参照に適用される。
【０１４４】
一般に、許可されないストアにより、保護例外が認識され、その結果、ゲストまたはホスト・プログラム割り込みが行われる。しかし、ゲスト・プレフィックス域の最初の４Ｋバイト・ブロックへのストア・アクセスは、解釈実行モードに入るときにチェックされ、このテスト中に検出された任意のアクセス例外の結果として、妥当性インターセプトが行われる（たとえば、１６進の００３７であるＶＩＲコード）。その後、解釈実行中に、ゲスト・プレフィックス域の最初の４Ｋバイト・ブロックへのアクセス時に検出されたアクセス例外条件は、通常通りに提示される場合もあれば、その結果として妥当性インターセプトが行われる場合もある。ゲスト割り込みを実行するためのゲスト・プレフィックス域への参照によって検出されたアクセス例外条件の結果として妥当性インターセプトが行われる場合、以下の情報が失われる可能性がある。
・  ゲスト・プレフィックス域にストアすべき割り込み情報（しかし、割り込み以前のゲストＰＳＷは状態記述にストアされる。）
・  適用可能であれば、割り込み要求そのもの
【０１４５】
以下に記述するゲストの保護テスト命令の解釈実行中に条件コードが設定される場合、ホスト・ページ保護およびアクセス・リスト制御保護のメカニズムが考慮される。
【０１４６】
解釈実行モードでのＳＯＰおよびＥＳＯＰに関する詳細については以下に説明する。
【０１４７】
解釈実行モードでの保護抑止
保護抑止機能は、ページング可能モードＤＡＴオフ・ゲストのために、ホスト・アクセス・リスト制御保護およびホスト・ページ保護により、たとえばｚ／ＶＭによって使用可能である。ＤＡＴモード・ビット（たとえば、プログラムの旧ＰＳＷのビット５）が０であるときにゲストはＤＡＴオフであり、ＤＡＴモード・ビットが１であるときにゲストはＤＡＴオンである。ホスト・アクセス・リスト制御保護はＭＣＤＳゲスト（ＤＡＴオフ・ゲストである）に適用される。
【０１４８】
解釈実行モードでは、この保護抑止定義のために、実位置１６８〜１７５にストアされた有効アドレスは、保護例外がホスト・アクセス・リスト制御保護またはホスト・ページ保護によるものであっても、ゲスト有効アドレスである。
【０１４９】
保護例外がホスト・アクセス・リスト制御保護またはホスト・ページ保護によって引き起こされ、ゲストがＤＡＴオフ・ゲストであるとき、ゲスト有効アドレスが実（論理とは対照的）アドレスになるように定義されているものであっても、ビット６１は１に設定され、ゲスト有効アドレスのビット０〜５１がストアされる。この場合、実位置１６８〜１７５のビット６２および６３、ならびに実位置１６０の内容は、ゲストがＭＣＤＳモード・ゲストである場合に例外が適用されるホスト・アドレス・スペースを適切に示すか、あるいはこれらのフィールドの内容は、ゲストが非ＭＣＤＳモードＤＡＴオフ・ゲストである場合に予測不能になる。（後者の場合、例外がホスト１次アドレス・スペースに適用されることが知られている。）
【０１５０】
ＥＳＯＰがない場合、保護例外がホスト・ページ保護によって引き起こされ、ゲストがＤＡＴオン・ゲストであるときに、ビット６１は予測不能になる。ＤＡＴオン・ゲスト・ページ保護例外とホスト・ページ保護例外とを区別することはできないので、ホスト・ページ保護はＤＡＴオン・ゲストには使用不能である。
【０１５１】
通常通り、実位置に対する上記の参照は、ゲスト割り込みが行われた場合にゲスト実位置を参照する。ゲスト割り込みの代わりにインターセプトが行われた場合、情報はむしろ状態記述内の対応する位置にストアされる。
【０１５２】
上述の通り、ＥＣＡ．１８（状態記述内）は保護インターセプト制御である。ＥＣＡ．１８が０であるときに、保護例外の結果として必須インターセプトが行われる。ＥＣＡ．１８が１であるときに、インターセプトは防止され、ゲスト割り込みが行われる。ＥＣＡ．１８はＩＣ．２によってオーバーライドされ、このＩＣ．２は１であるときに、任意のプログラム割り込みでインターセプトが行われることを指定する。ＥＣＡ．１８は、ＳＩＥ状態保存支援によって保持可能である。
【０１５３】
解釈実行モードでの拡張保護抑止
解釈実行モードでの拡張保護抑止は、たとえば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅモードで動作するホストおよびｚ／Ａｒｃｈｉｔｅｃｔｕｒｅモードのホストの下で任意のアーキテクチャ・モードで動作するゲストについて定義される。（しかし、他の諸実施形態では、ホストは他のアーキテクチャ・モードで動作することができる。）
【０１５４】
ＥＣＡ．１８およびＥＣＢ．６（状態記述内）は、それぞれ、保護インターセプトおよびホスト保護割り込み制御である。ＥＣＡ．１８が１であり、ＩＣ．２が０であるときに、インターセプトはゲストによって認識された任意の保護例外について防止され、ゲスト割り込みが行われる。ＥＣＡ．１８が０であるときに、保護例外（ＥＣＢ．６が１であるときのホスト・ページ保護例外を除く）の結果、必須インターセプトが行われる。
【０１５５】
ＥＣＢ．６が１である場合、ホスト・ページ保護による例外は、ホスト・プログラム割り込みとして提示される。ＥＣＢ．６が０である場合、ホスト・ページ保護例外は、ＥＣＡ．１８およびＩＣ．２によって管理されるように、ゲスト・プログラム割り込みまたはインターセプトとして提示される。ホスト・ページ保護によるホスト割り込みの場合、以下のことが行われる。
・  その間に例外が認識されたゲスト操作単位またはゲスト命令実行はヌル文字化される。
・  解釈実行開始命令は抑止される。
・  情報は、それがホスト内の通常例外であった場合のようにホスト・ストレージにストアされる。変換例外ＩＤにストアされたアドレスはホスト仮想アドレスであり、ＡＳＣＥ  ＩＤおよび例外アクセスＩＤはホスト・アドレス・スペースを識別する。（非ＭＣＤＳゲストの場合、これはホスト１次スペースである。）
【０１５６】
ＥＣＡ．１８によるインターセプト防止はＩＣ．２によってオーバーライドされ、これは、１であるときに、ゲスト・プログラム割り込みの代わりにインターセプトが行われることを指定する。しかし、ＥＣＢ．６およびＩＣ．２の両方が１である場合、ホスト・ページ保護例外は依然としてホスト割り込みとして提示される（すなわち、ＥＣＢ．６＝１の処理はＩＣ．２＝１の処理より優先される）。ＥＣＡ．１８およびＥＣＢ．６はＳＩＥ状態保存支援によって保持可能である。
【０１５７】
ゲスト保護例外がホスト・アクセス・リスト制御保護またはホスト・ページ保護によって引き起こされ、ゲストがＭＣＤＳモードであるとき、ゲスト有効アドレスが実（論理とは対照的）アドレスになるように定義されている場合でも、ゲスト実位置１６８〜１７５のビット６１は１に設定され、ゲスト有効アドレスのビット０〜５１はストアされ、ビット６２および６３、ならびに実位置１６０の内容は、例外が適用されるホスト・アドレス・スペースを適切に示す。ホスト・ページ保護による保護例外が非ＭＣＤＳゲストで認識され、ホスト保護割り込みが使用不能である（すなわち、ＥＣＢ．６が０である）ときに、ゲスト実位置１６８〜１７５のビット６１は０に設定され、残りのフィールドは未定義である。
【０１５８】
ＳＯＰおよびＥＳＯＰに関するさらなる詳細について、図１１〜図１２に関連して説明するが、これらの図には、本発明の一態様により、ＳＯＰ／ＥＳＯＰゲスト処理の一実施形態が記載されている。
【０１５９】
初めに図１１を参照すると、このロジックへの入口は、ステップ８００で、この環境内で実行されるページング可能ゲストによって発行され、ストレージ・ロケーションで取り出しまたはストア・アクセスを実行しようと試みるゲスト命令に基づくものである。照会８０２で、ストレージ・アクセスに関する要求に応答して、要求されたアクセス（たとえば、取り出しまたはストア）がゲストおよびホストによって許可されるかどうかについて判断が行われる。この例では、ステップ８０４で、アクセスが試行され、成功した場合、アクセスが実行され、命令が完了する。しかし、試行済みアクセスが失敗した場合、処理は、アクセスを失敗させたものがホスト・レベル保護であったかまたはゲスト・レベル保護であったかを判断し続ける。
【０１６０】
アクセスが許可されない場合、照会８０６で、ＤＡＴ処理がそのゲストについてオンである（ＤＡＴオン・ゲストとも呼ばれる）かどうかについて判断が行われる。ゲストが変換中に動作していない（すなわち、ＤＡＴオフ・ゲストである）場合、照会８０８で、キー制御保護がそのゲストについて設定されるかどうかについて追加の照会が行われる。この例では、ＤＡＴオフ・ゲストの場合、依然として実ストレージ・ブロックのゲスト・キー制御保護が存在する可能性がある。ゲスト・キー制御保護がまったく存在しない場合、それはアクセスを拒否するゲスト・レベル保護ではなく、むしろ、ホスト・レベル保護である。したがって、ステップ８１０で、以下に記載するようにホスト割り込みが提供される。
【０１６１】
照会８０８に戻り、ゲスト・キー制御保護が存在する場合、ステップ８１２で、ゲスト割り込みが提示される。これは、示されているゲストが保護された位置にアクセスしようと試みたことをゲストに示すものである。
【０１６２】
もう一度、照会８０６を参照すると、ＤＡＴがそのゲストについてオンである場合、たとえば、低アドレス保護、アクセス・リスト制御保護、キー制御保護、またはＤＡＴ保護（拡張ＤＡＴ以前のページ保護とも呼ばれる）を含み、同じく適用可能な他の保護形式が存在するかどうかについて追加の照会が行われる。これらの他の保護形式のいずれも適用されない場合、それはホスト問題であり（すなわち、ホスト・レベル保護によってアクセスが失敗する）、したがって、ステップ８１０で、ホスト割り込みが提示される。しかし、これらの他の保護形式の１つが適用される場合、ステップ８１６で、ゲスト割り込みが提供される。
【０１６３】
さらに、ゲスト保護方式が適用される場合、照会８１８で、適用されるものがゲストＤＡＴ保護（ＤＡＴＰ）であるかどうかならびに要求がストア・アクセスに関するものであるどうかについて判断が行われる。そうではない場合、ステップ８２０で、ゲスト例外が処理される。一例では、ゲストがこれらの保護条件のうちの１つを受け取ると、ポリシーによって決定されているように、必要または所望の処理であれば何でも監視プログラム（たとえば、ホスト）が実行する。
【０１６４】
照会８１８に戻り、それがゲストＤＡＴＰおよびストア・アクセスである場合、おそらく、ステップ８２２で、ゲスト・オペレーティング・システムはゲスト・レベルのコピー・オン・ライトを理解する。コピー・オン・ライトという概念がまったく存在しない場合、ゲスト例外を実行することができる。
【０１６５】
ホスト割り込みの処理に関する詳細について、図１２に関連して説明する。初めに、照会８４０で、保護割り込みがストア・アクセス時のホストＤＡＴＰによるものであるかどうかについて判断が行われる。そうではない場合、ステップ８４２で、その条件がゲストに反映される。一例では、ホストは、障害を引き起こす特定の条件をゲストに示すために必要なアクションであれば何でも実行する。
【０１６６】
もう一度、照会８４０を参照すると、それがストア・アクセス時のホストＤＡＴＰである場合、照会８４４で、それがＤＡＴオン・ゲストであるかどうかについて判断が行われる。それがＤＡＴオン・ゲストである場合、照会８４６で、ＳＯＰまたはＥＳＯＰ処理が制御しているかどうかについて追加の照会が行われる。それがＳＯＰ処理である場合、ステップ８４８で、その条件がゲストに反映される。しかし、それがＥＳＯＰ処理である場合、変換例外識別（ＴＥＩＤ）におけるビット６１は、ＤＡＴＰ条件を検出したストア・アクセス試行の場合に予測可能である。ＥＳＯＰがない場合、ゲストＤＡＴオンは、ゲストへの反映という結末に導かれる。
【０１６７】
照会８４４でゲストＤＡＴがオフである場合、または照会８４６でゲストＤＡＴがオンであり、それがＥＳＯＰである場合、以下のことが行われる。照会８５０で、アクセスすべきストレージ域（たとえば、ページ）がホスト・コピー・オン・ライト方式の一部であるかどうかについて判断が行われる。そうではない場合、ステップ８５２で、その条件がゲストに反映される。しかし、それがホスト・コピー・オン・ライト方式の一部である場合、ステップ８５４で、ホスト・コピー・オン・ライトが実行される。
【０１６８】
有利なことに、ＥＳＯＰは、ストレージ（たとえば、ページ）障害について何が行われているかならびに誰の責任であるかをホストおよびゲストが把握するための手段を提供する。ＥＳＯＰ機構は、解釈的に動作しているときにホスト・ページ保護からゲストを見分けるマシン（たとえば、ＣＰＵ）の能力を提供する。以前、ページ保護は、ゲスト対ホスト・ページ障害について責任を負わされることにより区別することができなかった。すなわち、ページ保護例外は、ゲストまたはホストのいずれかである可能性があり、何らかの不確実性が存在した。したがって、ホストはそれに対して大したことはできなかった。ＥＳＯＰにより、以前の不確実性は解消され、ホスト・ページ保護は、ホストの不良ページ（たとえば、ホスト・アドレスの障害）に関する情報によるホスト・プログラム割り込みを引き起こす。同様に、ゲスト・ページ保護は、ゲスト・ページ（たとえば、ゲスト・アドレスの障害）に関する情報によるゲスト・プログラム割り込みを発生する。
【０１６９】
以前、ＤＡＴオフ・ゲストの場合、ページ保護はホストの問題であったはずなので、ホストＣＯＷは、ＤＡＴオフ・ゲストであったことをホスト・プログラムが把握していたゲスト（たとえば、ＣＭＳ、ＭＣＤＳ）のみについて実行することができた。しかし、ＤＡＴオン・ゲストの場合、ページ保護がホストの問題であったかまたはゲストの問題であったかは不確かであり、したがって、ＣＯＷは使用することができなかった。
【０１７０】
本発明の一態様により、これは変化した。拡張保護抑止（ＥＳＯＰ）機構により、ホスト・レベル保護とゲスト・レベル保護とを区別することができ、したがって、適切なときにＣＯＷの使用が可能になる。ＥＳＯＰの場合、この追加の機能により、ＤＡＴオン・ゲスト（それ自体の保護ページでつまずいた可能性がある）に関するインターセプトの状況下でも、その例外が属すホストを見分け、コピー・オン・ライトがそのホストに属すときに依然としてそのコピー・オン・ライトを実行するために十分な情報が使用可能になるように、区別することができる。
【０１７１】
保護テスト
本発明の一態様により、保護例外に関するテストを可能にする機能が提供される。一例として、保護テスト（ＴＰＲＯＴ）命令は、ＴＰＲＯＴ命令を実行しているプログラムに対してプログラムによって使用すべきストレージに関する情報を提供するために使用される。たとえば、これは、ストレージの保護に関する表示を提供し、ホスト・レベル保護とゲスト・レベル保護との区別を可能にする。ＴＰＲＯＴは、本発明の１つまたは複数の態様により、ＥＳＯＰを利用する。
【０１７２】
さらに説明するために、プログラムが保管フレーム（storageframe）を頻繁に割り振る場合、プログラムは、プログラムによるアクセスを可能にする属性をそのフレームが有するかどうかを学習するために照会コマンドを実行することになる（すなわち、それが常駐しているか、それが書き込み保護されていないか）。例として、ＩＢＭのＳｙｓｔｅｍ  ｚプロセッサでは、このために保護テスト命令が使用され、サン・マイクロシステムズでは、ｍｉｎｃｏｒｅ（）システム呼び出しが使用される。この命令または呼び出しを発行することにより、プログラムは、前者の条件コードおよび後者の戻りコードからフレームの属性を学習する。ストレージ照会コマンドを発行するプログラムがホスト・ハイパーバイザの制御下のゲストとして解釈的に実行している場合、戻りコードは、ゲスト・アドレス変換テーブルならびにホスト・アドレス変換テーブルの観点からフレームの属性を反映することができる。このような動作は、ゲストへのコピー・オン・ライトなどの特定のホスト・ストレージ制御方式を使用した結果を露顕する可能性があり、したがって、ハイパーバイザによって提供された隔離を損なうことになる。
【０１７３】
本明細書に記載されているように、コピー・オン・ライト（ＣＯＷ）方式は、オペレーティング・システムによるメモリ圧力を低減するために使用される。プロセッサ・パフォーマンスが高くなるにつれて、単一オペレーティング・システムの制御下で複数のプログラムを実行し、単一ハイパーバイザの制御下で複数のオペレーティング・システムを実行する能力も非常に高くなる。より多くの同時プログラムに対処するために、システム・メモリ要件を管理するための特殊措置が実装される。
【０１７４】
このような措置の１つはＣＯＷの使用である。プログラムがオペレーティング・システムによって始動されると、初めに割り振られたその保管フレームには、書き込み保護とマークが付けられ、同じＯＳの制御下にある他のプログラムと物理的に共用される。次に、これらのフレームの１つに対してストア動作が試行されると、プログラム例外が発生し、オペレーティング・システムは、固有のストレージ・フレームを割り振り、元の共用フレームの内容にコピーする。
【０１７５】
いくつかのプログラムは、ゲストおよびホスト・レベルでフレームの属性の複合ビューを返すストレージ照会コマンドで正常に動作することができる。しかし、書き込み保護ストレージの割り振りを回避するためにプログラムが書き込まれた場合、そのフレームに関するゲストのビューの変更によりリソースをまったく持っておらず、ストレージ照会コマンドが照会されたすべてのフレームについて書き込み保護の表示を返す場合にそのプログラムは障害を発生する可能性がある。このようなケースは、ハイパーバイザがコピー・オン・ライト方式を実装しない場合に発生する可能性がある。
【０１７６】
いくつかのシステムでは、疑似仮想化（para-virtualization）を使用するようにゲスト・プログラムを作成することができ、ゲスト要件は定義済みインターフェースによりホストに渡される。この場合、ゲストは、ストレージを使用するというその意図をホストに直接指定することができ、ホストは、コピーされたフレームを割り振ることにより上述の通り応答することができる。このような場合、ゲスト・プログラムは、それが実行している各ハイパーバイザ・ホストへのインターフェースを補償するように変更されるはずである。また、疑似仮想化呼び出しは、典型的に、高いオーバーヘッドを有し、ハイパーバイザに対する実行圧力を引き起こす。
【０１７７】
解釈的に実行しているゲスト・プログラムが保管フレームに対する照会コマンドを発行すると、ホスト・アドレス変換テーブル内で書き込み保護されているというだけでそのフレームが書き込み保護されていることをそのコマンドの条件コードまたは戻りコードが示すような条件が存在する場合、ホスト・アドレス変換テーブルの状態を反映する条件コードまたは戻りコード表示で実行完了する代わりに、プログラム・インターセプトが行われる。
【０１７８】
本発明の一態様により、コピー・オン・ライトなどの特定のホスト・ストレージ管理技法はゲスト・プログラムに対して透過的に機能する。これにより、プログラム・ロジックは、フレームのストレージ属性に関するゲスト・ビューのみを反映するようにストレージ照会コマンドの結果に依存することができる。ゲスト・アドレス変換テーブルでのみページが書き込み保護されている場合、ゲストは、システム呼び出しまたはハイパーバイザとの通信を遂行する必要なしにそれを学習することになる。
【０１７９】
一例では、保護テスト（ＴＰＲＯＴ）命令は、入力オペランドとしてフレーム・アドレスを取り、以下の４通りの戻りコードのうちの１つで完了する。
０  取り出し許可；ストア許可
１  取り出し許可；ストア不許可
２  取り出し不許可；ストア不許可
３  変換使用不能
【０１８０】
本発明の一態様により、ホスト・レベル保護とゲスト・レベル保護とを区別すること、ならびにＣＯＷに対処するように変換テーブルが更新されていないが、正常に完了した実行を示す偽戻りコードを提供することを含むが、これらに限定されない特定の恩恵をもたらすように、保護テスト（ＴＰＲＯＴ）命令を実行するための機構が提供される。この実施形態では、ハイパーバイザはロジカル・パーティションのゲスト・イメージに関する状態値（ＥＣＢ．６）を設定し、ゲスト・イメージのゲスト・プログラムはＴＰＲＯＴ命令を実行のために取り出し、ＴＰＲＯＴ命令はテストすべきメモリ位置を指定し、ＴＰＲＯＴ命令は保護（ストア）のためにメモリ位置をテストし、抑止なしを示す状態値に応答して、テストに基づく条件コードの設定または例外動作の実行のうちのいずれかを実行するか、または抑止を示す状態値に応答して、条件コードを設定しなければならないことを示すテストに応答して実行し、命令の実行を抑止し、命令のインターセプトを実行する。
【０１８１】
一例では、以下のすべてが真であるときに、ページング可能モード・ゲストによる保護テスト命令の実行が抑止され、（条件コード１を設定する代わりに）ホスト割り込みが認識される。
・  拡張保護抑止機構がホストにインストールされる。
・  ＥＣＢ．６が１である。
・  条件コード１が設定されることを要求する条件が存在する。
・  ホスト・ページ保護例外条件が存在する。
・  アクセス・リスト制御保護例外条件またはゲスト・ページ保護例外条件のいずれも存在しない。
【０１８２】
ストレージ参照中に、ゲスト・ページ保護条件が検出されると、キー制御ストレージ保護のために条件コード２が設定されない限り、１という条件コードがゲストによって設定され、ホストによるアクションはまったく行われない。ホスト・ページ保護の場合、上記で指定した条件が真である場合に、ゲストによる実行は抑止され、命令インターセプトが認識され、ホストによるアクションはまったく行われない。
【０１８３】
ＴＰＲＯＴ命令のフォーマットの一例について、図１３に関連して説明する。描写されている通り、ＴＰＲＯＴ命令９００は、たとえば、ＴＰＲＯＴ命令を識別する命令コード９０２（たとえば、Ｅ５０１）と、第１のレジスタ・フィールド（Ｂ1）９０４および第１の変位フィールド（Ｄ1）９０６と、第２のレジスタ・フィールド（Ｂ2）９０８および第２の変位フィールド（Ｄ2）９１０とを含む。第１オペランド・アドレスは、Ｂ1フィールドによって識別されたレジスタの内容にＤ1フィールドの内容を加えることによって決定される。同様に、第２オペランド・アドレスは、Ｂ2フィールドによって指定されたレジスタの内容とＤ2フィールドの内容を加えることによって形成される。
【０１８４】
実行時に、第１オペランド・アドレスによって指定された位置は、たとえば、第２オペランド・アドレスのビット５６〜５９によって指定されたアクセス・キーを使用することにより、保護例外についてテストされる。
【０１８５】
第２オペランド・アドレスはデータをアドレス指定するために使用されず、その代わりに、そのアドレスのビット５６〜５９は、テストの際に使用すべきアクセス・キーを形成する。この例では、第２オペランド・アドレスのビット０〜５５および６０〜６３は無視される。
【０１８６】
第１オペランド・アドレスは論理アドレスである。ＣＰＵがアクセス・レジスタ・モードであるときに（ＤＡＴがオンであり、ＰＳＷビット１６および１７が２進数の０１であるときに）、第１オペランド・アドレスは、アクセス・レジスタ変換（ＡＲＴ）および動的アドレス変換（ＤＡＴ）の両方のプロセスによるＴＰＲＯＴ命令を実行のために取り出し変換の対象になる。ＡＲＴは、Ｂ1フィールドによって指定されたアクセス・レジスタに適用され、ＤＡＴによって使用すべきアドレス・スペース制御要素を入手する。ＤＡＴがオンであるが、ＣＰＵがアクセス・レジスタ・モードではないときに、第１オペランド・アドレスはＤＡＴによる変換の対象になる。この場合、ＤＡＴは、ＣＰＵが１次スペース・モード、２次スペース・モード、またはホーム・スペース・モードであるときに制御レジスタ１、７、または１３に含まれるアドレス・スペース制御要素をそれぞれ使用する。ＤＡＴがオフである場合、第１オペランド・アドレスは、ＡＲＴまたはＤＡＴのいずれかによる変換の対象にならない実アドレスである。
【０１８７】
ＣＰＵがアクセス・レジスタ・モードであり、通常、以下の表に示されている例外の１つを引き起こすと思われる条件のためにＡＲＴがアドレス・スペース制御要素を入手できない場合、条件コード３を設定することにより、命令が完了する。
【表７】
0005812245.tif 000008
【０１８８】
アクセス・レジスタが１６進の００００００００または１６進の０００００００１を含む場合、ＡＲＴは、アクセス・リストにアクセスせずに、制御レジスタ１または７からアドレス・スペース制御要素をそれぞれ入手する。Ｂ1フィールドがアクセス・レジスタ０を指定するときに、ＡＲＴは、１６進の００００００００を含むものとしてアクセス・レジスタを処理し、アクセス・レジスタの実際の内容を検査しない。
【０１８９】
ＡＲＴが正常に完了した場合、ＤＡＴの実行により動作は続行される。
【０１９０】
ＤＡＴがオンであり、通常、以下の表に示されている例外の１つを引き起こすと思われる条件のために第１オペランド・アドレスを変換できない場合、条件コード３を設定することにより、命令が完了する。
【表８】
0005812245.tif 000009
【０１９１】
第１オペランド・アドレスの変換を完了できる場合またはＤＡＴがオフである場合、第１オペランド・アドレスによって指定されたブロックに関するストレージ・キーは、第２オペランド・アドレスのビット位置５６〜５９に指定されたアクセス・キーと照らし合わせてテストされ、適用可能な保護メカニズムを考慮に入れて、ストア・アクセスおよび取り出しアクセスが許可されるかどうかを示すために条件コードが設定される。したがって、たとえば、低アドレス保護がアクティブであり、第１オペランド有効アドレスが０〜５１１または４０９６〜４６０７の範囲内である場合、ストア・アクセスは許可されない。アクセス・リスト制御保護、ページ保護、ストレージ保護オーバーライド、および取り出し保護オーバーライドも考慮される。
【０１９２】
変更ビットを含む、ストレージの内容は影響されない。その位置が取り出しに対して保護されている場合でも、モデル次第で、第１オペランド・アドレスに関する参照ビットを１に設定することができる。
【０１９３】
ＣＰＵがアクセス・レジスタ・モードである場合、有効アクセス・リスト指定あるいはＡＬＥ、ＡＳＴＥ、または権限テーブル項目を取り出すためにＡＲＴによって使用されるアドレスが、その構成で使用不能な位置を指定するときに、アドレス指定例外が認識される。
【０１９４】
ＤＡＴがオンである場合、１つまたは複数の領域テーブル項目、セグメント・テーブル項目、またはページ・テーブル項目のアドレス、あるいは変換後のオペランド実アドレスが、その構成で使用不能な位置を指定するときに、アドレス指定例外が認識される。また、領域テーブル項目またはセグメント・テーブル項目またはページ・テーブル項目がフォーマット・エラーを有するときに、変換指定例外が認識される。この例では、ＤＡＴがオフである場合、オペランド実アドレスによるアドレス指定例外のみが適用される。
【０１９５】
上記のケースのすべてについて、動作は抑止される。
【０１９６】
結果の条件コード：
０  取り出し許可；ストア許可
１  取り出し許可；ストア不許可
２  取り出し不許可；ストア不許可
３  変換使用不能
【０１９７】
プログラム例外：
・  アドレス指定（有効アクセス・リスト指定、アクセス・リスト項目、ＡＳＮ第２テーブル項目、権限テーブル項目、領域テーブル項目、セグメント・テーブル項目、ページ・テーブル項目、またはオペランド１）
・  特権操作
・  変換指定
【０１９８】
保護テストにより、プログラムは、プログラム例外を発生せずに呼び出し側プログラムから渡されたアドレスの保護属性を決定することができる。この命令は、その命令の第１オペランド・アドレスによって指定された位置で取り出しまたはストアが許可されるかどうかを示すために条件コードを設定する。この命令は、たとえば、アクセス・リスト制御、ページ、キー制御、低アドレス保護、ストレージ保護オーバーライド、および取り出し保護オーバーライドというマシン内の保護メカニズムを考慮に入れる。さらに、ＡＳＣＥタイプ、領域変換、セグメント変換、およびページ変換の例外条件は、保護違反のためのプログラム代用品である可能性があるので、これらの条件は、プログラム例外を引き起こすのではなく、条件コードを設定するために使用される。ＣＰＵがアクセス・レジスタ・モードである場合、保護テストにより、さらにプログラムは、プログラム例外を発生せずにアクセス・レジスタ内のアクセス・リスト項目トークン（ＡＬＥＴ）の使用可能度をチェックすることができる。ＡＬＥＴは、妥当性（ＡＬＥＴ指定、ＡＬＥＮ変換、およびＡＬＥシーケンス例外条件の欠落）について、ならびにプログラムによる使用について許可されているかどうか（ＡＳＴＥ妥当性、ＡＳＴＥシーケンス、および拡張権限例外条件の欠落）についてチェックされる。
【０１９９】
保護テストを使用する手法は、結果的に割り込みを発生しないテストの利点を有するが、テストと使用は時間的に分離されており、問題の位置のストレージ・キーが、テストされる時間と使用される時間との間で変化する可能性が存在する場合、正確ではない可能性がある。
【０２００】
動的アドレス変換を処理する際に、保護テストは、その命令がＡＳＣＥタイプ、領域変換、セグメント変換、およびページ変換例外を引き起こさないという点で実アドレス・ロード（Load Real Address）と同様である。その代わりに、これらの例外条件は、条件コード設定により示される。同様に、アクセス・レジスタ変換は、２つの命令のいずれかの間に実行されたときに、特定の例外条件に関する条件コードを設定する。実アドレス・ロードの場合に条件コード１、２、および３になる条件の結果、保護テストの場合に条件コード３になる。また、これらの命令は他のいくつかの点で異なっている。保護テストの第１オペランド・アドレスは、論理アドレスであり、したがって、ＤＡＴがオフであるときに動的アドレスの対象にならない。実アドレス・ロードの第２オペランド・アドレスは、変換される仮想アドレスである。
【０２０１】
アクセス・レジスタ変換は、ＣＰＵがアクセス・レジスタ・モードである（ＤＡＴがオンである）ときに保護テストに適用されるのに対し、ＤＡＴがオンまたはオフのいずれであるかにかかわらず、ＰＳＷビット１６および１７が２進数の０１であるときに実アドレス・ロードに適用される。アクセス・レジスタ変換における例外条件のために条件コード３が設定される場合、保護テストではなく、実アドレス・ロードは、その例外に割り当てられたプログラム割り込みコードを汎用レジスタに入れて返す。
【０２０２】
条件コード３は、第１オペランド位置が常にプログラムにとってアクセス不能になることを必ずしも示すわけではなく、むしろ、現行条件によりその命令がオペランドの保護属性を決定するのを防止することを示すだけである。たとえば、仮想ストレージ環境では、ストレージ・ロケーションがオペレーティング・システムによってページアウトされた場合に条件コード３を設定することができる。プログラムがその位置にアクセスしようと試みる場合、オペレーティング・システムは、ページ変換例外を解決し、その後、その位置をプログラムにとってアクセス可能なものにすることができる。同様に、条件コード１は、アドレスをストアできないことを必ずしも示すわけではない。ＰＯＳＩＸフォーク機能を実装するオペレーティング・システムでは、ページ保護は、コピー・オン・ライト・イベントについてオペレーティング・システムに警告するために使用される。コピー・オン・ライト・イベントのオペレーティング・システム解決後に、プログラムはその位置へのストア・アクセスが許可される可能性がある。
【０２０３】
本発明の一態様により、保護テスト命令の実行に関連するロジックの一実施形態について、図１４〜図１５に関連して説明する。初めに、ステップ１０００で、ゲストは、保護テスト命令によって照会中のストレージに関する情報を学習するために、保護テスト命令を実行する。実行中に、照会１００２で、ゲストおよびホストによってストアが許可されるかどうかについて判断が行われる。一例では、ストアが実際には行われないが、ストアを行えたかどうかをテストすることによって、この判断が行われる。たとえば、ストアのアドレスにより様々な許可およびテストがチェックされるが、ストアは実行されない。実行された場合にストアが成功する場合、ストアはゲストおよびホストの両方によって許可されたものと見なされる。したがって、ステップ１００４で、照会命令は成功条件コード（たとえば、０）で完了する。
【０２０４】
しかし、ストアがゲスト、ホスト、またはその両方によって許可されない場合、照会１００６で、ゲスト・アドレス変換が使用可能であるかどうかについて追加の照会が行われる。例として、ゲストがＤＡＴオフ・ゲストである場合、そのＩＤが変換後のアドレスであるという意味で変換は使用可能である。しかし、ゲストがＤＡＴオン・ゲストである場合、１つまたは複数のゲスト変換テーブルをサーチして、対応する項目が有効であるかどうかを確認する。その項目が有効である場合、ゲスト・アドレス変換はＤＡＴオン・ゲストに使用可能である。ゲスト・アドレス変換が使用不能である場合、ステップ１００８で、保護テスト命令は、この状況を示す条件コード（（たとえば、ＣＣ＝３）で完了する。
【０２０５】
ゲスト・アドレス変換が使用可能である場合、照会１０１０で、ホスト・アドレス変換が使用可能であるかどうかについて追加の判断が行われる。この判断は、ゲスト・アドレス変換が使用可能であるかどうかを判断することと同様に行われる。しかし、ＤＡＴオン・ホストの場合、ゲスト変換テーブルの代わりに、ＤＡＴ変換テーブルが使用される。ホスト・アドレス変換が使用不能である場合、ステップ１０１２で、ホスト割り込みが実行される。一例では、ゲストは終了し、この状況を管理するために呼び出されるホスト例外ルーチンが存在する。
【０２０６】
ゲスト・アドレス変換とホスト・アドレス変換の両方が使用可能である場合、照会１０１４で、ゲストおよびホストによって取り出しが許可されるかどうかについて追加の判断が行われる。一例では、ＤＡＴテーブルにストアされた許可に基づいてこの判断が行われる。ゲストとホストの両方によって取り出しが許可されない場合、ステップ１０１６で、この命令は選択された条件コード（たとえば、ＣＣ＝２）で完了する。ゲストとホストの両方によって取り出しが許可される場合、照会１０１８で、ホスト保護例外条件トラップが使用可能になっているかどうかについて追加の判断が行われる。一例では、ホスト保護例外条件は、本発明の一態様であり、ＥＳＯＰが使用可能になっており、ＥＣＢ．６がオンであるときに使用可能になる。ホスト保護例外条件トラップが使用可能になっていない場合、ステップ１０２０で、この命令は選択された条件コード（たとえば、ＣＣ＝１）で完了する。使用可能になっているトラップがない場合、ゲストとホストとの間ならびにＤＡＴとその他のタイプのストア保護との間に特別な区別はまったく行われない。
【０２０７】
ホスト保護例外条件トラップが使用可能になっている場合、照会１０２２で、ゲスト設定によってストアが許可されるかどうかについて追加の判断が行われる。一例では、たとえば、変換テーブル（たとえば、ゲストＤＡＴテーブル）またはゲストによって設定された保護を含むものなどのその他のデータ構造あるいはその両方でゲストによって設定された設定をチェックすることにより、この判断が行われる。ストアが許可されない場合、ステップ１０２４で、この命令は選択された条件コード（たとえば、ＣＣ＝１）で完了する。しかし、ゲストによってストアが許可される場合、照会１０２６で、ホスト書き込み保護がＤＡＴ以外のものであるかどうかについて追加の判断が行われる。そうである場合、ステップ１０２８で、この命令は指定の条件コード（たとえば、ＣＣ＝１）で完了する。しかし、ホストＤＡＴ保護のみが存在する場合、ステップ１０３０で、ホスト・インターセプトが提供される。
【０２０８】
この時点で、ステップ１０３２で、ホストによってＴＰＲＯＴ命令がシミュレートされる。すなわち、ある命令のゲスト実行によってホストに対するインターセプトが行われると、ゲスト・プログラムが（ホストによって）再始動されたときに、ゲストにはインターセプトされた命令が実行されたように見えるように、ホスト・プログラムはゲスト環境を変更する。シミュレーション中に、照会１０４０で、アクセスすべきストレージ内の領域（たとえば、ページ）がホストＣＯＷ方式の一部であるかどうかについて判断が行われる。このページがホストＣＯＷ方式の一部でなく、それに対する書き込みを行えないことを示す場合、ステップ１０４２で、選択された完了コード（たとえば、ＣＣ＝１）が提供される。しかし、このページがホストＣＯＷ方式の一部である場合、ステップ１０４４で、ＴＰＲＯＴは成功完了コード（たとえば、ＣＣ＝０）を発行する。
【０２０９】
本発明の一態様によれば、この成功条件コードにより、ホストはそのＤＡＴテーブルの状態を変更しない。そのフレームは書き込み保護のままになる。ホストＣＯＷ方式では、ゲストが実際にフレームにストアすると、ホスト割り込みが（たとえば、ＥＳＯＰを介して）行われ、ホスト例外ルーチンがＣＯＷを実行することになる。この「偽」戻りコードは、それに対して決してストアされないブロックについてＴＰＲＯＴが発行されたときに、ＣＯＷの実行が回避されるという点で、本発明の好ましい一実施形態の一態様の利点の１つである。
【０２１０】
一実施形態では、保護照会命令（たとえば、ＴＰＲＯＴ）が提供され、ホスト・テーブル内の保護設定が取り出し保護であるときに、ホスト割り込みが行われる。しかし、ゲスト・テーブル内の保護設定が取り出し保護であるときに、条件コードが返される。
【０２１１】
一例として、ＴＰＲＯＴ命令が解釈的に実行される場合、ならびにそのフレームがホスト・ビュー内（すなわち、ホスト・アドレス変換テーブル内）で書き込み保護され、ゲスト・ビュー内（すなわち、ゲスト・アドレス変換テーブル内）で書き込み保護されないという理由のみで、その命令がＣＣ＝１で完了すると思われる場合、ホスト・インターセプトが行われる。インターセプトを処理している間、ホストがコピー・オン・ライト（ＣＯＷ）ストレージ制御方式を実装している場合、ならびにそのフレームがゲスト・プログラムによって変更するために本当に使用可能である場合、コピーはそのフレームから構成され、ホスト・アドレス変換テーブルは更新され、ゲスト実行は続行されてＴＰＲＯＴ命令がＣＣ＝０で完了することになる。
【０２１２】
本発明の１つまたは複数の態様は、たとえば、コンピュータ使用可能媒体を有する装置（たとえば、１つまたは複数のコンピュータ・プログラム）に含めることができる。この媒体は、たとえば、本発明の諸機能を提供し容易にするためのコンピュータ可読プログラム・コード手段またはロジック（たとえば、命令、コード、コマンドなど）をそこに有する。この装置は、１つのコンピュータ・システムの一部として含めるか、または別個に販売することができる。
【０２１３】
本発明の１つまたは複数の態様を取り入れる装置またはコンピュータ・プログラムの一例について、図１６に関連して説明する。コンピュータ・プログラム１１００は、たとえば、本発明の１つまたは複数の態様を提供し容易にするためのコンピュータ可読プログラム・コード手段またはロジック１１０４をそこに保管するために１つまたは複数のコンピュータ使用可能媒体１１０２を含む。この媒体は、電子、磁気、光学、電磁、赤外線、または半導体システム（あるいは装置またはデバイス）もしくは伝搬媒体にすることができる。コンピュータ可読媒体の例としては、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、ハード・ディスク（rigid magnetic disk）、および光ディスクを含む。光ディスクの例としては、読み取り専用コンパクト・ディスク（ＣＤ−ＲＯＭ）、読み取り／書き込みコンパクト・ディスク（ＣＤ−Ｒ／Ｗ）、およびデジタル多目的ディスク（ＤＶＤ）を含む。
【０２１４】
１つまたは複数のコンピュータ可読プログラム・コード手段またはロジックによって定義された複数のプログラム命令のシーケンスまたは１つまたは複数の相互に関連するモジュールからなる論理アセンブリは、本発明の１つまたは複数の態様のパフォーマンスを指図するものである。
【０２１５】
商用実装例
本明細書ではＩＢＭによるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅについて言及しているが、本発明の１つまたは複数の態様は、ページング可能エンティティまたは同様の構成体を使用する他のマシン・アーキテクチャまたはコンピューティング環境あるいはその両方に同等に適用可能である。
【０２１６】
本明細書で開示されているＴＰＲＯＴ命令、機構、およびその他のフォーマット、命令、属性の商用実装例は、ハードウェアで、またはたとえばアセンブリ言語で作成するオペレーティング・システム・プログラマなどのプログラマによって実装することができる。このようなプログラミング命令は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  ＩＢＭサーバなどのコンピューティング環境でまたはその他のアーキテクチャを実行するマシンで固有に実行するための記憶媒体に保管することができる。このような命令は、既存のおよび今後のＩＢＭサーバで、ならびにその他のマシンまたはメインフレーム上でエミュレートすることができる。これらは、一般に実行がエミュレーション・モードであるマシンで実行することができる。
【０２１７】
エミュレーション・モードでは、エミュレート中の特定の命令がデコードされ、サブルーチンまたはドライバにおけるように個々の命令を実装するためにサブルーチンが構築され、あるいは本明細書の説明を理解した後に当業者の技能の範囲内である特定のハードウェア用のドライバを提供するためにその他の何らかの技法が使用される。様々なソフトウェアおよびハードウェア・エミュレーション技法については、米国特許第５５５１０１３号、米国特許第５５７４８７３号、米国特許第５７９０８２５号、米国特許第６００９２６１号、米国特許第６３０８２５５号、および米国特許第６４６３５８２号を含む多数の米国特許に記載されている。多くのその他の教示は、ターゲット・マシンのために設計された命令フォーマットのエミュレーションを達成するための様々な方法をさらに示している。
【０２１８】
上記に加えて、ゲスト・プロセッサおよび関連の処理に関する詳細については、２００７年３月２７日に発行されたＦａｒｒｅｌｌ他による「Method and Apparatus for Managing the Execution of a BroadcastInstruction on a Guest Processor」という発明の名称の米国特許第７１９７５８５号に記載されている。
【０２１９】
その他の変形例およびアーキテクチャ
様々な例および実施形態が本明細書に記載されているが、これらは例に過ぎず、多くの変形例が本発明の範囲内に含まれる。たとえば、本明細書に記載されているコンピューティング環境は一例に過ぎない。他のタイプの通信環境を含む、多くのその他の環境は、本発明の１つまたは複数の態様を含むことができる。たとえば、種々のタイプのプロセッサ、ゲスト、またはホスト、あるいはそれらの組み合わせを使用することができる。さらに、ページング可能ホストならびにページング可能ゲストは、本発明の１つまたは複数の態様を使用することができる。その上、その他のタイプのアーキテクチャは、本発明の１つまたは複数の態様を使用することができる。
【０２２０】
本発明の好ましい一実施形態の諸態様は、複数のゾーンを有する環境および非区分環境を含む、多くのタイプの環境にとって有益である。さらに、中央演算処理装置複合システムはまったく存在しない可能性があるが、複数のプロセッサがまとめて結合される可能性はある。本発明の様々な態様は、単一プロセッサ環境に適用可能である。
【０２２１】
さらに、本明細書に提供されるデータ構造および流れの例では、種々のフィールドの作成または使用あるいはその両方は、異なる数のビット、異なる順序のビット、本明細書に記載されているものより多いかまたは少ないビットあるいはそれとは異なるビット、より多いかまたは少ないフィールドあるいは異なるフィールド、異なる順序のフィールド、種々のサイズのフィールドなど、多くの変形例を含むことができる。この場合も、これらのフィールドは一例として提供されているに過ぎず、多くの変形例を含むことができる。さらに、本明細書に記載されているインジケータまたはコントロールあるいはその両方は、多種多様な形式のものにすることができる。たとえば、これらは、ビット以外の方法で表すことができる。さらに、本明細書ではアドレスという用語が使用されているが、任意の名称を使用することができる。
【０２２２】
本明細書で使用する「ページ」という用語は、仮想ストレージ（すなわち、仮想メモリ）の固定サイズまたは定義済みサイズの領域を指すために使用される。一例として、ホスト・ページはホスト仮想ストレージの一領域である。本明細書に提供されている例では１ページは４Ｋバイトであるが、ページのサイズは様々になる可能性がある。さらに、「フレーム」は、実ストレージまたは絶対ストレージ（すなわち、メモリ）の固定サイズまたは定義済みサイズの領域を指すために使用される。例として、ホスト・フレームはホスト実ストレージまたはホスト絶対ストレージの一領域であり、ゲスト・フレームはゲスト実ストレージまたはゲスト絶対ストレージの一領域である。ページング可能ゲストの場合、このゲスト実ストレージまたはゲスト絶対ストレージはホスト仮想ストレージによってマッピングされる。一般的であるように、ホスト仮想ストレージのページは、必要に応じて、ホスト実ストレージまたはホスト絶対ストレージのフレームによってバッキングされる。本明細書に提供されている例では１フレームは４Ｋバイトまたは１Ｍバイトであるが、フレームのサイズは様々になる可能性がある。しかし、その他の諸実施形態では、種々のサイズのページ、フレーム、セグメント、領域、またはブロックのストレージなどが存在する可能性がある。その上、その他のアーキテクチャでは、「ページ」および「セグメント」という用語は区別なく使用する場合もあれば、「ページ」という用語を使用して複数のサイズ単位の仮想ストレージに適用する場合もある。命令を入手するなどの「入手する」という用語は、取り出す、有する、受け取る、提供される、作成する、形成する、発行するなどを含むが、これらに限定されない。命令は、他のレジスタを参照するか、オペランド、フィールド、ロケーションなど、レジスタ以外を参照することができる。上記に代わる多くのその他のものも可能である。さらに、本明細書では、リスト、テーブルなどの用語が使用されているが、任意のタイプのデータ構造を使用することができる。たとえば、テーブルは他のデータ構造も含むことができる。この場合も、本明細書で言及しているものは例に過ぎない。
【０２２３】
さらに、プログラム・コードの保管または実行あるいはその両方に適したデータ処理システムであって、メモリ・エレメントに直接結合されるかまたはシステム・バスを介してメモリ・エレメントに間接的に結合される少なくとも１つのプロセッサを含むデータ処理システムが使用可能である。メモリ・エレメントとしては、たとえば、プログラム・コードを実際に実行している間に使用されるローカル・メモリ、バルク・ストレージ、および実行中にバルク・ストレージからコードを取り出さなければならない回数を低減するために少なくとも一部のプログラム・コードの一時記憶を提供するキャッシュ・メモリを含む。
【０２２４】
入出力またはＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、およびその他のメモリ媒体などを含むが、これらに限定されない）は、直接または介在する入出力コントローラを介してシステムに結合することができる。また、データ処理システムが介在する私設網または公衆網を介して他のデータ処理システムあるいはリモート・プリンタまたはストレージ・デバイスに結合された状態になるように、ネットワーク・アダプタもシステムに結合することができる。モデム、ケーブル・モデム、およびイーサネット・カードは、使用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
【０２２５】
本発明の１つまたは複数の態様の諸機能は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの何らかの組み合わせで実装することができる。本発明の諸機能を実行するためにマシンによって実行可能な複数命令からなる少なくとも１つのプログラムを実施するマシンによって読み取り可能な少なくとも１つのプログラム・ストレージ・デバイスを提供することができる。
【０２２６】
本明細書に描写されている流れ図は例に過ぎない。本発明の好ましい一実施形態の精神を逸脱せずに、これらの図またはそこに記載されているステップ（または動作）に対する多くの変形例が存在する可能性がある。たとえば、これらのステップは異なる順序で実行することができ、いくつかのステップを追加、削除、または変更することもできる。これらの変形例はいずれも、請求された本発明の一部と見なされる。
【０２２７】
本明細書には諸実施形態が詳しく描写され記載されているが、本発明の好ましい一実施形態の精神を逸脱せずに様々な変更、追加、代用などを行うことができ、したがって、これらが特許請求の範囲に定義される本発明の範囲内のものであると見なされることは、当業者には自明なことになるであろう。
【図１】
0005812245.tif 000010
【図２】
0005812245.tif 000011
【図３】
0005812245.tif 000012
【図４】
0005812245.tif 000013
【図５】
0005812245.tif 000014
【図６】
0005812245.tif 000015
【図７】
0005812245.tif 000016
【図８】
0005812245.tif 000017
【図９】
0005812245.tif 000018
【図１０】
0005812245.tif 000019
【図１１】
0005812245.tif 000020
【図１２】
0005812245.tif 000021
【図１３】
0005812245.tif 000022
【図１４】
0005812245.tif 000023
【図１５】
0005812245.tif 000024
【図１６】
0005812245.tif 000025