ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするためのコンピュータ可読プログラム・コード・ロジック、方法、およびシステム
【課題】 コンピューティング環境の複数のページング可能ゲストによるストレージの使用の管理を提供する。
【解決手段】 コンピューティング環境のページング可能ゲストによって使用されるストレージの管理を容易にする。試行済みストレージ・アクセスに応じて、どのレベルの保護(ホストまたはゲスト)が障害条件を引き起こしたかという判断を可能にする拡張保護抑止機構を提供する。
【解決手段】 コンピューティング環境のページング可能ゲストによって使用されるストレージの管理を容易にする。試行済みストレージ・アクセスに応じて、どのレベルの保護(ホストまたはゲスト)が障害条件を引き起こしたかという判断を可能にする拡張保護抑止機構を提供する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、ページング可能ゲスト(pageable guest)をサポートするコンピューティング環境に関し、特に、コンピューティング環境の複数のページング可能ゲストによるストレージの使用の管理に関する。
【背景技術】
【0002】
コンピューティング環境のストレージ(本明細書ではメモリとも言う)の少なくとも一部分は、典型的に、その環境内で実行される複数のプロセス間で共用される。このストレージの共用は、ストレージ内に保管されたデータの保全性を損なう危険性を増すものである。したがって、データ保全性を提供するために、特定のストレージ保護が適用される。このような保護は、ストレージを管理し、それにより、データを保護するために使用される。
【0003】
この保護は、解釈実行およびページング可能ゲストをサポートするものを含む、種々のタイプのコンピューティング環境で適用することができる。たとえば、ページング可能ゲスト環境では、複数のゲストが同じストレージを共用し、この場合も、データ保全性を提供し、ストレージを保護するために、保護が使用される。しかし、このような環境では、保護に関する情報は、ゲストまたはゲストを実行するホストあるいはその両方にとって極めて複雑なものになる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願第11/972725号
【特許文献2】米国特許出願第10/854990号
【特許文献3】米国特許出願公報US2007/0016904A1号
【特許文献4】米国特許第5551013号
【特許文献5】米国特許第5574873号
【特許文献6】米国特許第5790825号
【特許文献7】米国特許第6009261号
【特許文献8】米国特許第6308255号
【特許文献9】米国特許第6463582号
【特許文献10】米国特許第7197585号
【非特許文献】
【0005】
【非特許文献1】「z/Architecture Principlesof Operation」という題名のIBMの資料(2007年4月発行のIBM資料番号SA22−7832−05)
【非特許文献2】「z/VM: Running Guest Operating Systems」という題名のIBMの資料(2001年10月発行のIBM資料番号SC24−5997−02)
【非特許文献3】「z/VM: General Information Manual」という題名のIBMの資料(2001年10月発行のIBM資料番号GC24−5991−04)
【非特許文献4】「System/370 ExtendedArchitecture/Interpretive Execution」(1985年9月発行のIBM資料番号SA22−7095−01)
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記に基づいて、複数のページング可能ゲストによって使用されるストレージの管理を容易にする機能が必要である。一例では、ストレージ保護障害がホスト・レベル保護によるものであったかまたはゲスト・レベル保護によるものであったかを示す機能が必要である。
【課題を解決するための手段】
【0007】
ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするためのコンピュータ可読プログラム・コード・ロジックを有する少なくとも1つのコンピュータ使用可能媒体を含む装置(article of manufacture)の提供により、従来技術の短所が克服され、追加の利点が提供される。方法を実行するためにコンピュータによって実行するためのコンピュータ可読プログラム・コード・ロジックは、たとえば、ホスト・レベルの保護およびゲスト・レベルの保護によって保護されたストレージの一領域へのアクセスを試みるステップと、試行済みアクセスに応じて受け取られた障害がホスト・レベルの保護によるものであるかまたはゲスト・レベルの保護によるものであるかを判断するステップとを含む。
【0008】
また、命令を実行するためのコンピュータ・プログラム(computer program product)の提供により、従来技術の短所が克服され、追加の利点が提供される。このコンピュータ・プログラムは、処理回路によって読み取り可能であって、方法を実行するために処理回路によって実行するための命令を保管する記憶媒体を含む。この方法は、たとえば、保護テスト機械命令(test protection machine instruction)を入手するステップであって、その保護テスト機械命令が命令コード・フィールドと、第1オペランドと、第2オペランドとを含む、入手するステップと、ページング可能ゲストにより、入手した保護テスト機械命令を実行するステップであって、たとえば、1つまたは複数の保護例外について第1オペランドによって指定された位置をテストするステップを含み、そのテストするステップが第2オペランドのキーを使用し、保護例外の表示が、保護例外がホスト・レベル保護によるものであるかまたはゲスト・レベル保護によるものであるかという表示を含む、実行するステップとを含む。
【0009】
本発明の1つまたは複数の態様に関する方法、システム、およびコンピュータ・プログラムについても、本明細書に記載され、請求される。
【0010】
追加の特徴および利点は、本発明の技法により実現される。本発明のその他の諸実施形態および諸態様は、本明細書に詳細に記載され、請求された本発明の一部と見なされる。
【0011】
次に、本発明の好ましい一実施形態について、以下の図面に関連して、一例としてのみ説明する。
【図面の簡単な説明】
【0012】
【図1】本発明の1つまたは複数の態様を取り入れて使用するためのコンピューティング環境の一実施形態を示す図である。
【図2】本発明の1つまたは複数の態様を取り入れて使用するためのエミュレートされたコンピューティング環境の一実施形態を示す図である。
【図3】本発明の一態様により使用されるフレーム記述子(frame descriptor)の一例を示す図である。
【図4】本発明の一態様により使用される領域テーブル項目(region table entry)の一例を示す図である。
【図5】本発明の一態様により使用される領域テーブル項目の一例を示す図である。
【図6】本発明の一態様により使用される領域テーブル項目の一例を示す図である。
【図7】本発明の一態様により使用されるセグメント・テーブル項目(segment table entry)の一例を示す図である。
【図8】本発明の一態様により使用されるセグメント・テーブル項目の一例を示す図である。
【図9】本発明の一態様により使用されるページ・テーブル項目(page table entry)の一例を示す図である。
【図10】本発明の一態様により使用されるページ状況テーブル項目(page status table entry)の一例を示す図である。
【図11】本発明の一態様により、保護抑止(suppression on protection)機構および拡張保護抑止(enhancedsuppression on protection)機構をサポートする環境におけるゲスト処理ロジックの一実施形態を示す図である。
【図12】本発明の一態様により、保護抑止機構および拡張保護抑止機構をサポートする環境におけるゲスト処理ロジックの一実施形態を示す図である。
【図13】本発明の一態様により、保護テスト命令のフォーマットの一例を示す図である。
【図14】本発明の一態様により、保護テスト命令のロジックの一実施形態を示す図である。
【図15】本発明の一態様により、保護テスト命令のロジックの一実施形態を示す図である。
【図16】本発明の1つまたは複数の態様を取り入れるコンピュータ・プログラムの一実施形態を示す図である。
【発明を実施するための形態】
【0013】
本発明の一態様により、コンピューティング環境の複数のページング可能ゲストによって使用されるストレージの管理を容易にする機能が提供される。一例として、どのレベルの保護(ホストまたはゲスト)が障害条件(fault condition)を引き起こしたかという判断を可能にする拡張保護抑止機構が提供される。他の例として、照会に示されているストレージの領域に関する情報を詳述する照会命令(たとえば、保護テスト(TPROT:Test Protection)が提供される。
【0014】
本発明の1つまたは複数の態様を取り入れて使用するためのコンピューティング環境の一実施形態について、図1に関連して説明する。コンピューティング環境100は、たとえば、IBM(R)のz/Architecture(R)に基づくものである。z/Architectureについては、「z/Architecture Principles of Operation」という題名のIBMの資料(2007年4月発行のIBM資料番号SA22−7832−05)に記載されている。一例では、z/Architectureに基づくコンピューティング環境はIBMのeServer(TM)を含む。(IBM、z/Architecture、eServer、およびzSeriesは、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である。)本明細書で使用するその他の名称は、インターナショナル・ビジネス・マシーンズ社またはその他の企業の登録商標、商標、または製品名である可能性がある。
【0015】
一例として、コンピューティング環境100は、仮想計算機(VM:virtualmachine)サポートを提供する中央演算処理装置複合システム(CPC:central processorcomplex)102を含む。CPC102は、たとえば、1つまたは複数の仮想計算機104と、1つまたは複数の中央処理装置106と、少なくとも1つのホスト108(たとえば、ハイパーバイザなどの制御プログラム)と、入出力サブシステム110とを含み、そのそれぞれについて以下に説明する。この例では、仮想計算機およびホストはメモリに含まれている。
【0016】
CPCの仮想計算機サポートは、それぞれがLinuxなどのゲスト・オペレーティング・システム112をホストとして処理することができる多数の仮想計算機を操作するための能力を提供する(Linuxは、米国、その他の国、あるいはその両方におけるLinusTorvaldsの登録商標である)。それぞれの仮想計算機104は、個別システムとして機能することができる。すなわち、それぞれの仮想計算機は、独立してリセットすることができ、ゲスト・オペレーティング・システムをホストとして処理することができ、種々のプログラムで動作することができる。仮想計算機内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際はその一部分のみが使用可能である。
【0017】
この特定の例では、仮想計算機のモデルはV=Vモデルであり、仮想計算機の絶対メモリまたは実メモリは、実メモリまたは絶対メモリの代わりにホスト仮想メモリによってバッキングされる。それぞれの仮想計算機は仮想線形メモリ空間を有する。物理リソースはホスト108によって所有され、共用物理リソースは、それぞれの処理要求に応じるために必要に応じてホストによってゲスト・オペレーティング・システムにディスパッチされる。このV=V仮想計算機(すなわち、ページング可能ゲスト)モデルでは、典型的に、ゲストが多数であるために、ホストがハードウェア・リソースを単純に区分して、構成済みゲストにそのハードウェア・リソースを割り当てることが妨げられるので、ゲスト・オペレーティング・システムと物理的な共用マシン・リソースとの対話がホストによって制御されるものと想定している。V=Vモデルの1つまたは複数の態様については、「z/VM: Running GuestOperating Systems」という題名のIBMの資料(2001年10月発行のIBM資料番号SC24−5997−02)にさらに記載されている。
【0018】
中央処理装置106は、仮想計算機に割り当て可能な物理プロセッサ・リソースである。たとえば、仮想計算機104は1つまたは複数の論理プロセッサを含み、そのそれぞれは、仮想計算機に動的に割り振り可能な物理プロセッサ・リソース106のすべてまたは割り当て分(share)を表す。仮想計算機104はホスト108によって管理される。例として、ホストは、プロセッサ106上で実行されるマイクロコードで実装するか、またはマシン上で実行されるホスト・オペレーティング・システムの一部にすることができる。一例では、ホスト108は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるz/VM(R)などのVMハイパーバイザである(z/VMは、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である)。z/VMの一実施形態については、「z/VM: GeneralInformation Manual」という題名のIBMの資料(2001年10月発行のIBM資料番号GC24−5991−04)に記載されている。
【0019】
入出力サブシステム110は、デバイスとメイン・ストレージとの間の情報の流れを指図するものである。入出力サブシステムは、中央演算処理複合システム(central processing complex)の一部になるかまたはそれとは分離したものになる可能性があるという点で、中央演算処理複合システムに結合される。入出力サブシステムは、CPCに結合された入出力装置と直接通信するというタスクから中央処理装置を解放し、入出力処理と同時にデータ処理を続行できるようにする。
【0020】
一実施形態では、ホスト(たとえば、z/VM)およびプロセッサ(たとえば、System z(R))のハードウェア/ファームウェアは、ゲスト・オペレーティング・システムおよびホストとの間で制御を転送する必要なしにV=Vゲスト・オペレーティング・システム動作を処理するために、制御連携方式で相互に対話する。(System zは、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である。)ページング可能ストレージ・モード・ゲストについて命令を解釈実行できるようにする機構を介して、ゲスト動作をホスト介入なしに直接実行することができる。この機構は解釈実行開始(SIE:Start Interpretive Execution)という命令を提供し、この命令は、ゲスト(仮想計算機)状態および制御を保持する状態記述という制御ブロックを指定して、ホストが発行することができる。この命令はマシンを解釈実行モードにするものであって、そのモードでは、ホスト・アテンションを必要とする条件が発生するまでゲスト命令および割り込みが直接処理される。このような条件が発生すると、解釈実行が終了し、ホスト割り込みが提示されるかまたはSIE命令が検出された条件の詳細の保管を完了し、この後者のアクションはインターセプトという。解釈実行の一例については、「System/370 Extended Architecture/Interpretive Execution」(1985年9月発行のIBM資料番号SA22−7095−01)に記載されている。
【0021】
一例では、この解釈実行機構は、IBMによって提供されるプロセッサ・リソース/システム管理機構(TM)(PR/SM:Processor Resource/Systems Manager)の要素の1つである。これは、解釈実行開始(SIE)という単一命令を使用してプロセッサ上で仮想サーバ命令ストリームを実行できるようにする。SIE命令は、たとえば、zSeriesまたはS/390(R)処理装置複合システムを証明されたセキュア・ロジカル・パーティションに分割するためにサーバのロジカル・パーティショニング(LPAR:logical partitioning)サポートによって使用される。(プロセッサ・リソース/システム管理機構およびS/390は、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である。)(注:IBMのS/390 CMOS G6ファミリのプロセッサのPR/SM機構は、ITSEC E4レベルのセキュリティの認証を取得している。)
【0022】
サーバのタイム・スライスが消費されるまで、あるいはハードウェアが仮想化できない動作または制御プログラムがそれに関する制御を回復する動作をサーバが実行する必要が発生するまで、SIE命令は制御プログラムによってディスパッチされた仮想サーバを実行する。その時点で、SIE命令は終了し、制御は制御プログラムに戻り、制御プログラムはその命令をシミュレートするかまたは仮想サーバを強制待ち状態にする。完了すると、制御プログラムは、実行するよう仮想サーバをもう一度スケジュールし、サイクルがもう一度始まる。このようにして、中央演算処理装置(CPU)の全機能および最高速度が仮想サーバにとって使用可能になる。制御プログラムによる支援または妥当性検査を必要とする特権命令のみがインターセプトされる。このようなSIEインターセプトは、そう呼ばれるように、仮想サーバが実デバイス上で実行できる動作に対して制限を課すために制御プログラムによって使用される。
【0023】
その上、このメカニズムにより、制御プログラムは、多くの種類のハードウェアまたはソフトウェア障害の範囲を制限することができる。特定の仮想サーバにエラーを隔離できる場合、その仮想サーバのみに障害が発生し、他の仮想サーバで実行されるテストまたは生産作業に影響せずに、その動作を再試行するかまたはその仮想サーバを再初期化(リブート)することができる。制御プログラムは、仮想サーバで発生する障害が制御プログラムまたはその他の仮想サーバに影響しないように設計される。
【0024】
本発明の1つまたは複数の態様を取り入れるためのコンピューティング環境の他の例は図2に示されている。この例では、ホスト・アーキテクチャのホスト・コンピュータ202をエミュレートする、エミュレートされたホスト・コンピュータ・システム200が提供される。エミュレートされたホスト・コンピュータ・システム200では、ホスト・プロセッサ(CPU)204は、エミュレートされたホスト・プロセッサ(または仮想ホスト・プロセッサ)であり、ホスト・コンピュータ202のプロセッサによって使用されるものとは異なる固有命令セット・アーキテクチャを有するエミュレーション・プロセッサ206により実現される。エミュレートされたホスト・コンピュータ・システム200は、エミュレーション・プロセッサ206にとってアクセス可能なメモリ208を有する。この実施形態例では、メモリ208は、ホスト・コンピュータ・メモリ210の部分と、エミュレーション・ルーチン212の部分に区分されている。ホスト・コンピュータ・メモリ210は、ホスト・コンピュータ・アーキテクチャによりエミュレートされたホスト・コンピュータ202のプログラムにとって使用可能であり、図1の同様の名前の要素に類似して、ホストまたはハイパーバイザ214と、ゲスト・オペレーティング・システム218が実行される1つまたは複数の仮想計算機216の両方を含むことができる。
【0025】
エミュレーション・プロセッサ206は、エミュレートされたプロセッサ204のもの以外のアーキテクチャの設計済み命令セットの固有命令を実行する。この固有命令は、たとえば、エミュレーション・ルーチン・メモリ212から入手される。エミュレーション・プロセッサ206は、アクセスされたホスト命令の機能をエミュレートするための固有命令実行ルーチンを決定するために、アクセスされたホスト命令(複数も可)をデコードすることができるシーケンスおよびアクセス/デコード・ルーチンで入手した1つまたは複数の命令を使用することにより、ホスト・コンピュータ・メモリ210内のプログラムから実行するためにホスト命令にアクセスすることができる。このようなホスト命令の1つは、たとえば、解釈実行開始(SIE)命令にすることができ、それによりホストは仮想計算機内でゲスト・プログラムを実行しようと努める。エミュレーション・ルーチン212は、この命令のサポートおよびこのSIE命令の定義により仮想計算機216内でゲスト命令のシーケンスを実行するためのサポートを含むことができる。
【0026】
ホスト・コンピュータ・システム202のアーキテクチャ用に定義されたその他の機構は、たとえば、汎用レジスタ、制御レジスタ、動的アドレス変換、入出力サブシステム・サポートおよびプロセッサ・キャッシュなどの機構を含む、設計済み機構ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンのパフォーマンスを改善するために、エミュレーション・プロセッサ206内で使用可能な機能(仮想アドレスの汎用レジスタおよび動的変換など)を利用することもできる。また、ホスト・コンピュータ202の機能をエミュレートする際にプロセッサ206を支援するために、特殊ハードウェアおよびオフロード・エンジンも設けることができる。
【0027】
上記のもの、汎用コンピュータ、データ処理システム、その他を含む、多くのタイプのコンピューティング環境は、仮想メモリ方式を使用して編成されたストレージを使用する。仮想メモリ・システムは、ブロック(またはページ)と呼ばれる単位でストレージを編成する。これらのブロックは、高速の1次メモリと、1つまたは複数のより大きく通常はより低速の2次、3次などのストレージ・ユニットとの間を移動する。ブロックの移動(スワッピングと呼ばれる場合が多い)は、コンピューティング環境内で実行されるアプリケーションまたはプロセスにとって透過的なものであり、アプリケーションまたはプロセスがそれぞれ無制限の量のストレージを有するように動作できるようにする。
【0028】
汎用仮想メモリにより、コンピューティング環境内で実行されるアプリケーションまたはプロセスあるいはその両方が無制限の量のメモリを自由に有するように動作することができるが、実際には、特定のアプリケーションまたはプロセスにとって使用可能なストレージの量は、コンピューティング環境内のストレージの量によって制限され、そのストレージを共用するプログラムであって、同時に実行されているプログラムの数によってさらに制限される。仮想メモリ方式は、メモリの実際の物理アドレスをアプリケーション・プログラムから隠すものである。アプリケーション・プログラムは、論理アドレス(たとえば、仮想アドレス)を使用して自分のメモリ空間にアクセスし、次にその論理アドレスがコンピューティング環境によって物理アドレスに変換される。
【0029】
ストレージ参照中に仮想アドレスを対応する実アドレスまたは絶対アドレスに変換するプロセスは、動的アドレス変換(DAT)という。仮想アドレスは、1次仮想アドレス、2次仮想アドレス、アクセス・レジスタ(AR)指定仮想アドレス、またはホーム仮想アドレスにすることができる。これらのアドレスは、1次アドレス・スペース制御要素、2次アドレス・スペース制御要素、AR指定アドレス・スペース制御要素、またはホーム・アドレス・スペース制御要素によってそれぞれ変換される。適切なアドレス・スペース制御要素を選択した後、変換プロセスは、4つのタイプの仮想アドレスのいずれについても同じである。DATは、変換パラメータとして、5〜2レベルのテーブル(領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、およびページ・テーブル)を使用することができる。拡張動的アドレス変換(EDAT)プロセスは、一部または全部の変換についてページ・テーブルを省略することにより、5〜1レベルのテーブルを使用することができる。特定のアドレス・スペースに関する最高レベル・テーブルの指定(起点および長さ)はアドレス・スペース制御要素と呼ばれ、制御レジスタ内でDATによって使用するために検出されるか、またはアクセス・レジスタが指定した通りに検出される。代わって、アドレス・スペースに関するアドレス・スペース制御要素は実スペース指定にすることができ、これは、DATが、いかなるテーブルも使用せずに、単に仮想アドレスを実アドレスとして処理することにより、仮想アドレスを変換することであることを示す。
【0030】
DATは、異なる時期に、異なる制御レジスタ内のアドレス・スペース制御要素またはアクセス・レジスタによって指定されたアドレス・スペース制御要素を使用する。その選択は、現行PSW(プログラム状況ワード)に指定されたプログラム指定変換モードによって決定される。1次スペース・モード、2次スペース・モード、アクセス・レジスタ・モード、およびホーム・スペース・モードという4つの変換モードが使用可能である。変換モードに応じて、異なるアドレス・スペースがアドレス可能である。
【0031】
仮想アドレスに対する拡張DATの結果は、実アドレスまたは絶対アドレスのいずれかになる可能性がある。それが実アドレスである場合、プレフィックス変換動作を実行して対応する絶対アドレスを入手し、その絶対アドレスを使用してメモリを参照することができる。プレフィックス変換は、各CPUごとに0〜8191という範囲の実アドレス(一例として)を絶対ストレージ内の異なる領域に割り当てる能力を提供し、その結果、メイン・ストレージを共用する2つ以上のCPUが、特に割り込みの処理において、最小限の干渉で同時に動作することができる。プレフィックス変換により、0〜8191という範囲内の実アドレスは、そのCPUに関するプレフィックス・レジスタのビット位置0〜50内の値によって識別された8Kバイトの絶対アドレスの領域(プレフィックス域)に1対1で対応し、プレフィックス・レジスタ内の値によって識別された実アドレスの領域は、絶対アドレス0〜8191に1対1で対応する。残りの実アドレスは対応する絶対アドレスと同じである。この変換により、各CPUは、最初の8Kバイトと、他のCPUのプレフィックス・レジスタによって指定された位置を含む、メイン・ストレージのすべてにアクセスすることができる。
【0032】
動的アドレス変換、プレフィックス変換、および拡張DATについては、2008年1月11日に出願されたGainey他による「Enhanced Dynamic Address Translation with Frame Management Function」という発明の名称の米国特許出願第11/972725号(IBM整理番号POU920070313US1)により詳細に記載されている。
【0033】
本発明の1つまたは複数の態様の理解を容易にするために、以下に記載する様々な用語およびデータ構造(たとえば、テーブル、リスト)を参照する。
【0034】
フレーム記述子
フレーム記述子は、ホスト・ページ・フレーム、すなわち、仮想メモリの一部分(ページ)を保持できる実メモリの一領域(フレーム)を記述するものである。これは、ホストによって割り振られ、割り振り解除され、初期化されるものであり、ホスト・ページ管理支援(Host Page Management Assist)機能(たとえば、2004年5月27日に出願されたBlandy他による「Facilitating Management of Storage of a Pageable Mode VirtualEnvironment Absent Intervention of a Host of the Environment」という発明の名称の米国特許出願第10/854990号に記載されている)によって更新することができる。
【0035】
一例では、フレーム記述子300(図3)は、たとえば、32バイト境界上のホスト・ホーム・スペース仮想ストレージ内に常駐する32バイト・ブロックであり、例として以下のフィールドを含む。
【0036】
(a)次フレーム記述子アドレス302: 一例では、このフィールドの内容は、右に5個の0が付加された状態で、リスト上の次フレーム記述子のホスト・ホーム・スペース仮想アドレスを指定する。0という値は、そのフレーム記述子がリスト上の最後のものであることを示す。
【0037】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。
【0038】
(b)ページ・フレーム実アドレスまたはページ・テーブル項目(PTE)コピー304: フレーム記述子が使用可能フレーム記述子リスト(AFDL)内にあるときに、このフィールドの内容は、右に12個の0が付加された状態で、ホスト・ストレージを提供するための割り振りに使用可能なホスト・フレームの最初のバイト(バイト0)のホスト実アドレスを指定する。
【0039】
フレーム記述子が処理済みフレーム記述子リスト(PFDL)内にあるときに、このフィールドは、ホスト・ページが解決される前に現れるので、ページ・テーブル項目アドレス・フィールドによって指定されたPTEのコピーを含む。
【0040】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。
【0041】
(c)ページ・テーブル項目アドレス306: フレーム記述子が処理済みフレーム記述子リスト上にあるときに、このフィールドの内容は、右に3個の0が付加された状態で、ホスト仮想ページに関するページ・テーブル項目のホスト実アドレスまたはホスト絶対アドレスを指定する。
【0042】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。
【0043】
複数のフレーム記述子を相互にリンクして、使用可能フレーム記述子リスト(AFDL)または処理済みフレーム記述子リスト(PFDL)などのリストを形成することができる。フレーム記述子はこの2つのリストのうちの1つに存在する。各CPUごとにこれらのリストが1対ずつ個別に用意される。1つのCPUに関するAFDLおよびPFDLの起点は、そのCPUのプレフィックス域内のフィールドにより指定される。
【0044】
使用可能フレーム記述子リスト(AFDL)は、ホストがクリアしたホスト・フレームであって、ホスト・ページへの割り振りに使用可能になっているホスト・フレームを記述する、フレーム記述子のリストである。AFDLは、指定のホスト実アドレスのAFDL起点(AFDLO)によって指定される。
【0045】
AFDLOの内容は、右に5個の0が付加された状態で、AFDL上の最初のフレーム記述子のホスト・ホーム・スペース仮想アドレスを指定する。0という値は、このリストが空であることを示す。
【0046】
AFDLOは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。AFDLOは、一実施形態では、非インターロック更新動作により変更される。
【0047】
処理済みフレーム記述子リスト(PFDL)は、ゲスト解釈中にホスト・ページ無効条件を解決するために使用されたホスト・フレームを記述する、フレーム記述子のリストである。PFDLによって記述されたホスト・フレームは、ゲスト用のストレージを提供するホスト・ページに割り当てられている。PFDLは、指定のホスト実アドレスのPFDL起点(PFDLO)によって指定される。PFDLOの内容は、右に5個の0が付加された状態で、PFDL上の最初のフレーム記述子のホスト・ホーム・スペース仮想アドレスを指定する。0という値は、このリストが空であることを示す。
【0048】
PFDLOは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。PFDLOは、一実施形態では、リストの保全性を維持するダブルワード同時インターロック更新動作により変更される。
【0049】
領域テーブル項目
「領域テーブル項目」という用語は、領域第1テーブル項目、領域第2テーブル項目、または領域第3テーブル項目を示す。ある項目を含むテーブルのレベル(第1、第2、または第3)は、その項目内のテーブル・タイプ(TT)ビットによって識別される。領域第1テーブル、領域第2テーブル、および領域第3テーブルから取り出された項目のフォーマットの例は図4〜図6に描写されている。特に、図4は領域第1テーブル項目400のフォーマットの一実施形態を描写し、図5は領域第2テーブル項目430のフォーマットの一実施形態を描写し、図6は領域第3テーブル項目460のフォーマットの一実施形態を描写している。
【0050】
例として、3つのレベルの領域テーブル項目内のフィールドは以下のように割り振られている。
【0051】
領域第2テーブル起点402、領域第3テーブル起点432、およびセグメント・テーブル起点462: 領域第1テーブル項目は領域第2テーブル起点を含む。領域第2テーブル項目は領域第3テーブル起点を含む。領域第3テーブル項目はセグメント・テーブル起点を含む。以下の記述は3つの起点のそれぞれに適用される。一例では、この項目のビット0〜51は、右に12個の0が付加された状態で、次の下位レベル・テーブルの始まりを指定する64ビットのアドレスを形成する。
【0052】
DAT保護ビット(P)406、436、466: 拡張DATが適用されるときに、ビット54は、変換時に使用されるその後の領域テーブル項目、セグメント・テーブル項目、および適用可能であればページ・テーブル項目のそれぞれのDAT保護ビットとのORが取られるものとして処理される。したがって、このビットが1であるときに、DAT保護は、領域テーブル項目によって指定された1つまたは複数の領域全体に適用される。拡張DAT機構がインストールされていないときに、またはその機構がインストールされているが、拡張DAT使用可能化制御が0であるときに、領域テーブル項目のビット54は無視される。
【0053】
領域第2テーブル・オフセット408、領域第3テーブル・オフセット438、およびセグメント・テーブル・オフセット(TF)468: 領域第1テーブル項目は領域第2テーブル・オフセットを含む。領域第2テーブル項目は領域第3テーブル・オフセットを含む。領域第3テーブル項目はセグメント・テーブル・オフセットを含む。以下の記述は3つのオフセットのそれぞれに適用される。この項目のビット56および57は、テーブルの始まりで欠落している、次の下位レベル・テーブルの一部分の長さを指定し、すなわち、これらのビットは、次の下位レベル・テーブル内に実際に存在する最初の項目の位置を指定する。これらのビットは、欠落部分の長さを4096バイト単位で指定し、その結果、欠落部分の長さが512項目の倍数単位で可変のものになる。4096バイト単位の欠落部分の長さはTF値に等しい。次の下位レベル・テーブルにより変換すべき仮想アドレスの一部分(RSX、RTX、またはSX)がそのテーブル内に実際に存在する項目を指定するかどうかを設定するために、長さフィールドであるビット62および63に併せてオフセット・フィールドの内容を使用する。
【0054】
領域無効ビット(I)410、440、470: 1つの領域は、たとえば、2ギガバイトの仮想アドレスからなる連続範囲である。領域第1テーブル項目または領域第2テーブル項目内のビット58は、その項目に関連する1組の領域が使用可能であるかどうかを制御する。領域第3テーブル項目内のビット58は、その項目に関連する単一領域が使用可能であるかどうかを制御する。ビット58が0であるときに、領域テーブル項目を使用することにより、アドレス変換が続行される。このビットが1であるときに、その項目を変換に使用することはできない。
【0055】
テーブル・タイプ・ビット(TT)412、422、472: 領域第1テーブル項目、領域第2テーブル項目、および領域第3テーブル項目のビット60および61は、以下のように、その項目を含むテーブルのレベルを識別する。ビット60および61は、変換時に使用中のアドレス・スペース制御要素であるテーブル指定のタイプと、これまで使用してきたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別し、そうでなければ、変換指定例外が認識される。一例として、以下の表はテーブル・タイプ・ビットを示している。
【表1】
【0056】
領域第2テーブル長414、領域第3テーブル長444、およびセグメント・テーブル長474(TL): 領域第1テーブル項目は領域第2テーブル長を含む。領域第2テーブル項目は領域第3テーブル長を含む。領域第3テーブル項目はセグメント・テーブル長を含む。以下の記述は3つの長さのそれぞれに適用される。この項目のビット62および63は、次の下位レベル・テーブルの長さを4096バイト単位で指定し、その結果、テーブルの長さが512項目の倍数単位で可変のものになる。4096バイト単位の次の下位レベル・テーブルの長さはTL値より1大きい。次の下位レベル・テーブルにより変換すべき仮想アドレスの一部分(RSX、RTX、またはSX)がそのテーブル内に実際に存在する項目を指定するかどうかを設定するために、オフセット・フィールドであるビット56および57に併せて長さフィールドの内容を使用する。
【0057】
領域テーブル項目の他のビット位置はいずれも、考えられる今後の拡張のために予約されており、0を含んでいなければならず、そうでなければ、プログラムは今後、矛盾なく動作することができない。拡張DATが適用されるときに、テーブル項目が無効であっても、領域テーブル項目の予約ビット位置は0を含んでいなければならない。
【0058】
セグメント・テーブル項目
拡張DATが適用されないときに、または拡張DATが適用され、セグメント・テーブル項目(STE)フォーマット制御であるセグメント・テーブル項目のビット53が0であるときに、セグメント・テーブルから取り出された項目は図7に描写されているフォーマット(たとえば、フォーマット0)を有する。拡張DATが適用され、STEフォーマット制御が1であるときに、セグメント・テーブルから取り出された項目は、たとえば、図8に描写されているフォーマット(たとえば、フォーマット1)を有する。
【0059】
一例として、フォーマット0セグメント・テーブル項目500(図7)は以下のフィールドを含む。
【0060】
ページ・テーブル起点502: 拡張DATが適用されないときに、または拡張DATが適用されるが、STEフォーマット制御であるセグメント・テーブル項目のビット53が0であるときに、ビット0〜52は、右に11個の0が付加された状態で、ページ・テーブルの始まりを指定する64ビットのアドレスを形成する。そのアドレスが実アドレスであるかまたは絶対アドレスであるかは予測不能である。
【0061】
STEフォーマット制御(FC)506: 拡張DATが適用されるときに、ビット53は以下のようにセグメント・テーブル項目用のフォーマット制御である。
・ FCビットが0であるときに、この項目のビット0〜52はページ・テーブル起点を形成し、ビット55は予約される。
・ FCビットが1であるときに、この項目のビット0〜43はセグメント・フレーム絶対アドレスを形成し、ビット47はACCF妥当性制御であり、ビット48〜51はアクセス制御ビットであり、ビット52は取り出し保護ビットであり、ビット55は変更記録オーバーライドである。拡張DATが適用されないときに、ビット53は無視される。
【0062】
DAT保護ビット(P)508: ビット54は、1であるときに、DAT保護がセグメント全体に適用されることを示す。
・ 拡張DATが適用されないときに、ビット54は、変換時に使用されるページ・テーブル項目内のDAT保護ビットとのORが取られるものとして処理される。
・ 拡張DATが適用されるときに、変換時に使用される任意およびすべての領域テーブル項目内のDAT保護ビットは、セグメント・テーブル項目内のDAT保護ビットとのORが取られるものとして処理され、STEフォーマット制御が0であるときに、STE内のDAT保護ビットは、ページ・テーブル項目内のDAT保護ビットとのORが取られるものとしてさらに処理される。
【0063】
セグメント無効ビット(I)510: ビット58は、セグメント・テーブル項目に関連するセグメントが使用可能であるかどうかを制御する。
・ このビットが0であるときに、セグメント・テーブル項目を使用することにより、アドレス変換が続行される。
・ このビットが1であるときに、セグメント・テーブル項目を変換に使用することはできない。
【0064】
共通セグメント・ビット(C)512: ビット59は、セグメント・テーブル項目の変換索引バッファ(TLB:translation lookaside buffer)コピーの使用を制御する。拡張DATが適用されないときに、または拡張DATが適用されるが、フォーマット制御が0であるときに、ビット59はセグメント・テーブル項目によって指定されたページ・テーブルのTLBコピーの使用も制御する。
・ 0は専用セグメント(private segment)を識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、そのセグメント・テーブル項目が常駐するセグメント・テーブルを指定するセグメント・テーブル起点に関連する場合にのみ使用することができる。
・ 1は共通セグメントを識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、異なるセグメント・テーブルが指定されている場合でも、セグメント索引に対応するアドレスを変換するために使用し続けることができる。
【0065】
しかし、専用スペース制御であるビット55が変換時に使用されるアドレス・スペース制御要素内で1である場合、またはそのアドレス・スペース制御要素が実スペース指定である場合、共通セグメントに関するセグメント・テーブル項目および任意のページ・テーブルのTLBコピーは使用不能である。使用中のアドレス・スペース制御要素内で専用スペース制御が1であるときに、セグメント・テーブル項目が変換中にストレージから取り出される場合、共通セグメント・ビットは0になるはずであり、そうでなければ、変換指定例外が認識される。
【0066】
テーブル・タイプ・ビット(TT)514: セグメント・テーブル項目のビット60および61は、その項目を含むテーブルのレベルを識別するために2進数の00になる。領域テーブル項目またはセグメント・テーブル項目内のビット60および61として考えられる値の意味は以下の通りである。
【表2】
【0067】
ビット60および61は、変換時に使用中のアドレス・スペース制御要素であるテーブル指定のタイプと、これまで使用してきたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別するはずであり、そうでなければ、変換指定例外が認識される。
【0068】
セグメント・テーブル項目の他のビット位置はいずれも、考えられる今後の拡張のために予約されており、0を含んでいなければならず、そうでなければ、プログラムは今後、矛盾なく動作することができない。拡張DATが適用されるときに、テーブル項目が無効であっても、セグメント・テーブル項目の予約ビット位置は0を含んでいなければならない。
【0069】
一例として、フォーマット1セグメント・テーブル項目550(図8)は以下のフィールドを含む。
【0070】
セグメント・フレーム絶対アドレス(SFAA)552: 拡張DATが適用され、STEフォーマット制御が1であるときに、この項目のビット0〜43は、右に20個の0が付加された状態で、セグメントの64ビットの絶対アドレスを形成する。
【0071】
ACCF妥当性制御(AV)556: 拡張DATが適用され、STEフォーマット制御が1であるときに、ビット47はアクセス制御ビットおよび取り出し保護ビット(ACCF)の妥当性制御である。AV制御が0であるときに、セグメント・テーブル項目のビット48〜52は無視される。AV制御が1であるときに、ビット48〜52は以下に記載するように使用される。
【0072】
アクセス制御ビット(ACC)558: 拡張DATが適用され、STEフォーマット制御が1であり、AV制御が1であるときに、セグメント・テーブル項目のビット48〜51は、そのアドレスに適用される任意のキー制御アクセス・チェックに使用可能なアクセス制御ビットを含む。
【0073】
取り出し保護ビット(F)560: 拡張DATが適用され、STEフォーマット制御が1であり、AV制御が1であるときに、セグメント・テーブル項目のビット52は、そのアドレスに適用される任意のキー制御アクセス・チェックに使用可能な取り出し保護ビットを含む。
【0074】
STEフォーマット制御(FC)562: 拡張DATが適用されるときに、ビット53は以下のようにセグメント・テーブル項目用のフォーマット制御である。
・ FCビットが0であるときに、この項目のビット0〜52はページ・テーブル起点を形成し、ビット55は予約される。
・ FCビットが1であるときに、この項目のビット0〜43はセグメント・フレーム絶対アドレスを形成し、ビット47はアクセス制御ビットおよび取り出し保護ビットのACCF妥当性制御であり、ビット48〜51はアクセス制御ビットであり、ビット52は取り出し保護ビットであり、ビット55は変更記録オーバーライドである。拡張DATが適用されないときに、ビット53は無視される。
【0075】
DAT保護ビット(P)564: ビット54は、1であるときに、DAT保護がセグメント全体に適用されることを示す。
・ 拡張DATが適用されないときに、ビット54は、変換時に使用されるページ・テーブル項目内のDAT保護ビットとのORが取られるものとして処理される。
・ 拡張DATが適用されるときに、変換時に使用される任意およびすべての領域テーブル項目内のDAT保護ビットは、セグメント・テーブル項目内のDAT保護ビットとのORが取られるものとして処理され、STEフォーマット制御が0であるときに、STE内のDAT保護ビットは、ページ・テーブル項目内のDAT保護ビットとのORが取られるものとしてさらに処理される。
【0076】
変更記録オーバーライド(CO)566: 拡張DATが適用され、STEフォーマットが1であるときに、セグメント・テーブル項目のビット55はそのセグメントに関する変更記録オーバーライドである。拡張DATが適用されないときに、または拡張DATが適用されるが、STEフォーマット制御が0であるときに、セグメント・テーブル項目のビット55は無視される。
【0077】
セグメント無効ビット(I)568: ビット58は、セグメント・テーブル項目に関連するセグメントが使用可能であるかどうかを制御する。
・ このビットが0であるときに、セグメント・テーブル項目を使用することにより、アドレス変換が続行される。
・ このビットが1であるときに、セグメント・テーブル項目を変換に使用することはできない。
【0078】
共通セグメント・ビット(C)570: ビット59は、セグメント・テーブル項目の変換索引バッファ(TLB)コピーの使用を制御する。拡張DATが適用されないときに、または拡張DATが適用されるが、フォーマット制御が0であるときに、ビット59はセグメント・テーブル項目によって指定されたページ・テーブルのTLBコピーの使用も制御する。
・ 0は専用セグメントを識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、そのセグメント・テーブル項目が常駐するセグメント・テーブルを指定するセグメント・テーブル起点に関連する場合にのみ使用することができる。
・ 1は共通セグメントを識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、異なるセグメント・テーブルが指定されている場合でも、セグメント索引に対応するアドレスを変換するために使用し続けることができる。
【0079】
しかし、専用スペース制御であるビット55が変換時に使用されるアドレス・スペース制御要素内で1である場合、またはそのアドレス・スペース制御要素が実スペース指定である場合、共通セグメントに関するセグメント・テーブル項目および任意のページ・テーブルのTLBコピーは使用不能である。使用中のアドレス・スペース制御要素内で専用スペース制御が1であるときに、セグメント・テーブル項目が変換中にストレージから取り出される場合、共通セグメント・ビットは0になるはずであり、そうでなければ、変換指定例外が認識される。
【0080】
テーブル・タイプ・ビット(TT)572: セグメント・テーブル項目のビット60および61は、その項目を含むテーブルのレベルを識別するために2進数の00になる。領域テーブル項目またはセグメント・テーブル項目内のビット60および61として考えられる値の意味は以下の通りである。
【表3】
【0081】
ビット60および61は、変換時に使用中のアドレス・スペース制御要素であるテーブル指定のタイプと、これまで使用してきたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別するはずであり、そうでなければ、変換指定例外が認識される。
【0082】
セグメント・テーブル項目の他のビット位置はいずれも、考えられる今後の拡張のために予約されており、0を含んでいなければならず、そうでなければ、プログラムは今後、矛盾なく動作することができない。拡張DATが適用されるときに、テーブル項目が無効であっても、セグメント・テーブル項目の予約ビット位置は0を含んでいなければならない。
【0083】
ページ・テーブル項目
ゲスト・ブロック(たとえば、単一ストレージ・キー(storage key)および協調メモリ管理(CMM:collaborative memory management)状態がそれに関連付けられている絶対メモリ内の領域(たとえば、4Kバイト))に関する状態情報は、たとえば、ゲストのメモリを記述するホスト・ページ・テーブル(PT)およびページ状況テーブル(PGST)に維持される。これらのテーブルは、たとえば、以下により詳細に記載する、1つまたは複数のページ・テーブル項目(PTE)および1つまたは複数のページ状況テーブル項目(PGSTE)をそれぞれ含む。
【0084】
ページ・テーブル項目600の一例について、図9に関連して説明する。一実施形態では、ページ・テーブル項目内のフィールドは以下のように割り振られている。
【0085】
ページ・フレーム実アドレス(PFRA)602: ビット0〜51は、実(この場合はホストの実)ストレージ・アドレスの最左端ビットを提供する。これらのビットが、右側の仮想アドレスの12ビットのバイト・インデックス・フィールドと連結されると、64ビットの実アドレスが得られる。
【0086】
ページ無効ビット(I)604: ビット53は、ページ・テーブル項目に関連するページが使用可能であるかどうかを制御する。このビットが0であるときに、ページ・テーブル項目を使用することにより、アドレス変換が続行される。さらに、ホストとゲストとの協調メモリ管理(CMM)に関しては、ホスト状態はr(常駐(resident)、すなわち、ゲスト・ブロックはホスト・フレーム内に存在する)になる。このビットが1であるときに、ページ・テーブル項目は変換に使用されず、CMMホスト状態は、PGSTE.Zによって決定されるように、p(保存済み(preserved)、すなわち、ゲスト・ブロックはホスト・フレーム内に存在しないが、ホストによって何らかの補助ストレージに保存されている)になるか、またはz(論理ゼロ(logically zero)、すなわち、ゲスト・ブロックはホスト・フレーム内に存在せず、ゲスト・ブロックの内容は0になることが分かっている)になる。
【0087】
DAT保護ビット(P)606: ビット54は、そのページ内でストア・アクセス(store access)を行うことができるかどうかを制御する。この保護メカニズムは、キー制御保護(key controlled protection)メカニズムおよび低アドレス保護(lowaddress protection)メカニズムに加えて行われるものである。このビットは取り出しアクセス(fetchaccess)には何も影響を及ぼさない。このビットが0である場合、以下の追加の制約を条件として、そのページへのストアが許可される。
・ DAT保護ビットは、変換時に使用されるセグメント・テーブル項目では0になる。
・ 拡張DATが適用されるときに、DAT保護ビットは、変換時に使用されるすべての領域テーブル項目で0になる。
【0088】
DAT保護ビットが1である場合、ストアは認可されない。優先順位の高い例外条件がまったく存在しない場合、DAT保護ビットが1であるときにストアしようと試みると、保護例外が認識される。セグメント・テーブル項目内のDAT保護ビットは、DAT保護がそのページに適用されるかどうかを判断するときに、ビット54とのORが取られるものとして処理される。拡張DATが適用されるときに、変換時に使用される任意の領域テーブル項目内のDAT保護ビットも、DAT保護が適用されるかどうかを判断するときに、ビット54とのORが取られるものとして処理される。
【0089】
キー制御保護、低アドレス保護、およびアクセス・リスト制御保護(access-list-controlledprotection)などのその他の保護メカニズムは、DAT保護とは無関係に適用することができ、アクセスを禁止することもできる。
【0090】
変更記録オーバーライド(CO)608: 拡張DATが適用されないときに、ページ・テーブル項目のビット55は0を含まないはずであり、そうでなければ、アドレス変換にその項目を使用する命令の実行の一部として、変換指定例外が認識される。拡張DATが適用され、STEフォーマット制御が0であるときに、ページ・テーブル項目のビット55はそのページに関する変更記録オーバーライドである。
【0091】
上記に加えて、一例では、その項目のビット位置52は0を含むはずであり、そうでなければ、アドレス変換にその項目を使用する命令の実行の一部として、変換指定例外が認識される。ビット位置56〜63は割り当てられず、無視される。
【0092】
ページ状況テーブル項目の一例について、図10に関連して説明する。ページ状況テーブル項目700は、たとえば、以下のものを含む。
(a)Acc702: アクセス制御キー
(b)FP704: 取り出し保護インジケータ
(c)ページ制御インターロック(PCL)706: これは、予約済みとマークされているPGSTE状況領域およびPGSTEビットを除き、ページ・テーブル項目(PTE)および対応するPGSTEへの更新を直列化するためのインターロック制御である。
(d)HR708: ホスト参照バックアップ・インジケータ
(e)HC710: ホスト変更バックアップ・インジケータ
(f)GR712: ゲスト参照バックアップ・インジケータ
(g)GC714: ゲスト変更バックアップ・インジケータ
(h)状況716: ホスト・プログラム用として意図されている。
(i)ページ内容論理ゼロ・インジケータ(Z)718: このビットは、対応するPTEページ無効(PTE.I)ビットが1であるときに意味がある。
Zが1であるときに、このPGSTEおよび対応するPTEによって記述されたページの内容は0であると見なされる。そのページの前の内容はいずれも保存される必要はなく、0のページで置き換えることができる。
Zが0であるときに、PGSTEおよび対応するPTEによって記述されたページの内容は0であると見なされない。そのページの内容はホストによって保存される。
Zビットが1であり、対応するPTE.Iビットが1であるときに、CMMホスト状態はz(論理ゼロ)になる。これは、ページ内容をホストによってまたはホスト・ページ管理支援機構の一機能によって置き換えることができることを意味する。
Zビットが1であり、対応するPTE.Iビットが1であり、ページ内容が置き換えられるときに、そのページは、0に設定されているフレームにそれを関連付けることによって置き換えなければならない。
Zビットが0であり、PTE無効ビットが1であるときに、CMMホスト状態はp(保存済み)になる。
(j)ページ・クラス(PC)720: 0であるときに、PGSTEおよび対応するPTEによって記述されたページはクラス0ページであり、クラス0ページ用のデルタ・ピン固定ページ・カウント・アレイ(DPPCA:delta pinned page count array)は、そのページに関するピン固定(pinning)動作およびピン解除(unpinning)動作をカウントするために使用される。1であるときに、PGSTEおよび対応するPTEによって記述されたページはクラス1ページであり、クラス1ページ用のDPPCAは、そのページに関するピン固定動作およびピン解除動作をカウントするために使用される。
(k)ピン・カウント・オーバーフロー(PCO)722: 1であるときに、ピン・カウント・フィールドはオーバーフロー状態になっている。この場合、全ピン・カウントは、マシンによってアクセスされない他のデータ構造にホストによって保持される。0であるときに、ピン・カウント・フィールドはオーバーフロー状態になっていない。
(l)処理済みフレーム記述子リスト上のフレーム記述子(FPL)724: 1であるときに、PGSTEおよび対応するPTEによって記述されたページに関するフレーム記述子は処理済みフレーム記述子リスト内にある。フレーム記述子は、そのページに関するHPMA解決ホスト・ページ機能によって使用されたホスト・フレームを識別する。
(m)ページ内容置き換え要求(PCR)726: 1であるときに、PGSTEおよび対応するPTEによって表されるページについてHPMA解決ホスト・ページ機能が呼び出されたときに、ページ内容置き換えが要求された。
(n)使用状態(US)728: ホストとゲストとの協調メモリ管理の場合、このフィールドは、ゲスト状態がS(安定(stable)、すなわち、安定ブロックの内容はゲストによって設定されたものに等しいままになる)になるか、U(未使用(unused)、すなわち、未使用ブロックの内容はゲストにとって意味がない)になるか、V(揮発性(volatile)、すなわち、揮発性ブロックの内容はゲストにとって意味があるが、ホストはそのブロックの内容をいつでも廃棄し、バッキング・フレームを再利用(reclaim)することができる)になるか、またはP(潜在的揮発性(potentiallyvolatile)、すなわち、潜在的揮発性ブロックの内容はゲストにとって意味があるが、ゲスト変更履歴に基づいて、ホストは、そのブロックの内容を廃棄できるかまたは保存しなければならない)になるかを示す。
(o)状況730: ホスト・プログラム用として意図されている。
(p)ピン・カウント732: PGSTEおよび対応するPTEによって表されるホスト仮想ページの内容がPTEのページ・フレーム実アドレス・フィールドによって指定された実ホスト・フレーム内にピン固定されるかどうかを示すために使用される符号なし2進整数カウント。このフィールドの値が0より大きいかまたはページ・カウント・オーバーフロー(PCO)ビットが1であるときに、対応するページはピン固定されていると見なされる。このフィールドの値が0であり、PCOビットが0であるときに、対応するページはピン固定されていると見なされない。
ホストまたはCPUのいずれかによってページがピン固定された時点で、このフィールドは1だけ増分されるはずである。ホストまたはCPUのいずれかによってページがピン解除された時点で、このフィールドは1だけ減分されるはずである。
ピン・カウント・フィールドの値が0より大きいかまたはPCOビットが1であるときに、対応するPTE.I(ページ無効)ビットは0になるはずである。そうでなければ、予測不能な結果が発生する可能性がある。
ページがピン固定されている間、ホスト・プログラムは、PTEまたはセグメント・テーブル項目(STE)内のPTEページ・フレーム実アドレス(PFRA)フィールドの内容、PTEページ無効(I)ビットの設定、またはページ保護(P)ビットの設定を変更してはならない。そうでなければ、予測不能な結果が発生する可能性がある。
【0093】
ページ・テーブル項目およびページ・テーブルならびにセグメント・テーブル項目に関する詳細については、「z/Architecture Principles of Operation」という題名のIBMの資料(2007年4月発行のIBM資料番号SA22−7832−05)に記載されている。その上、PGSTEに関する詳細については、2004年5月27日に出願されたBlandy他による「Facilitating Management of Storage of a Pageable Mode VirtualEnvironment Absent Intervention of a Host of the Environment」という発明の名称の米国特許出願第10/854990号、および2007年1月18日に発行されたAdlung他による「Facilitating Processing Within Computing Environment SupportingPageable Guests」という発明の名称の米国特許出願公報US2007/0016904A1号に記載されている。
【0094】
一実施形態では、ページ・テーブルあたり1つのページ状況テーブルが存在し、ページ状況テーブルはページ・テーブルと同じサイズであり、ページ状況テーブル項目はページ・テーブル項目と同じサイズであり、ページ状況テーブルはページ・テーブルから固定変位(ホスト実メモリ内)に位置している。したがって、各ページ・テーブル項目とページ状況テーブル項目との間には1対1の対応が存在する。あるページのホストの仮想アドレスを考慮すると、マシンとホストはいずれも、ゲスト・ブロックに関するページ・テーブル項目に対応するページ状況テーブル項目を容易に突き止めることができる。
【0095】
コピー・オン・ライト(Copy-On-Write)
時には、メモリの各部分がコピーされるはずである。このコピーは、ユーザ開始であるか、またはオペレーティング・システムによって開始することができる。従来のシステムは、フラッシュ・コピーに遅延コピー技法(lazy copy technique)を使用する場合が多く、コピーすべきストレージには読み取り専用(read-only)という状況が割り当てられるが、実際のコピーは後ほどまで据え置かれる。オリジナルまたはコピーへの書き込みを試みる場合、メモリはその時点でコピーされ、オリジナルとコピーの両方に読み取り書き込み(read-write)という入出力(I/O)状況が与えられる。このようにして、コピーは直ちに行われたように見えるが、実際のコピーは後ほど(たとえば、考えられる最も遅い時間)まで据え置かれる。書き込みがまったく行われない場合、コピーもまったく行われない。このため、この方法はコピー・オン・ライト(COW)または仮想コピーと呼ばれる。
【0096】
一般に、単一書き込みの結果、2回の書き込み動作が行われるので、コピー・オン・ライト動作は計算上、高価なものである。すなわち、既存のデータ・ブロックは古い物理ブロックから新しい物理ブロックにコピーされ、実際の更新/書き込み動作は新しい物理ブロックについて実行される。
【0097】
命令実行
z/Architectureでは、たとえば、命令実行は、完了(completion)、ヌル文字化(nullification)、抑止(suppression)、終了(termination)、および部分完了(partial completion)という5通りのうちの1つで終了し、そのそれぞれについて以下に説明する。
【0098】
命令実行の完了は、その命令の定義時に要求された通りの結果を提供する。命令実行の完了後に割り込みが行われると、旧PSW内の命令アドレスによって次の順次命令が指定される。
【0099】
命令実行のヌル文字化は、命令の実行がヌル文字化された後で割り込みが行われると、次の順次命令の代わりにその実行がヌル文字化された命令(または、適宜、実行(Execute)命令)が旧PSW内の命令アドレスによって指定されることを除いて、以下に記載する抑止と同じ効果を有する。
【0100】
命令実行の抑止により、命令は「ノーオペレーション(nooperation)」を指定した場合のように実行される。条件コードを含む、任意の結果フィールドの内容は変更されない。抑止後の割り込み時に旧PSW内の命令アドレスによって次の順次命令が指定される。
【0101】
命令実行の終了により、その命令によって変更する予定の任意のフィールドの内容は予測不能なものになる。動作は、指定された結果フィールドの内容の全部または一部を置き換える場合もあれば、いずれも置き換えない場合もあり、このような変更が命令によって要求されている場合は条件コードを変更することができる。マシン・チェック条件によって割り込みが引き起こされない限り、PSW内の命令アドレスの妥当性、割り込みコード、および命令長コードは影響されず、マシンの動作の状態も他のいずれの方法でも影響されない。終了後の割り込み時に旧PSW内の命令アドレスによって次の順次命令が指定される。
【0102】
命令実行の部分完了は割り込み可能命令について行われる。
【0103】
抑止またはヌル文字化が行われるときに命令の実行はノーオペレーションとして処理されるが、何らかの命令に関連する暗黙追跡アクションの結果として、ストアを実行することができる。
【0104】
保護
エラーを含むかまたは無許可であるプログラムによる破壊または誤用からメイン・ストレージの内容を保護するために、キー制御保護、アクセス・リスト制御保護、ページ保護、および低アドレス保護という4つの保護機構が提供される。これらの保護機構は独立して適用され、いずれの機構もアクセスを禁止しないときに、メイン・ストレージへのアクセスが許可される。それぞれの保護機構について以下に説明する。
【0105】
キー制御保護: キー制御保護は、不適切なストアまたは不適切なストアおよび取り出しの両方に対する保護を提供するが、不適切な取り出しのみに対する保護は提供しない。
【0106】
キー制御保護がストレージ・アクセスに適用される場合、ストレージ・キーがストレージ・アクセスに関する要求に関連するアクセス・キーと一致するときにストアが許可され、両方のキーが一致するときにまたはストレージ・キーの取り出し保護ビットが0であるときに取り出しが許可される。ストレージ・キーの4つのアクセス制御ビットがアクセス・キーに等しいときにまたはアクセス・キーが0であるときに、両方のキーは一致すると言われる。保護アクションについては以下の表に要約する。
【表4】
【0107】
ストレージへのアクセスがCPUによって開始され、キー制御保護が適用されるときに、2次への移動(Move To Secondary)および宛先キーによる移動(Move WithDestination Key)などの特定の命令の第1オペランドについて、1次への移動(Move ToPrimary)、キーによる移動(Move With Key)、およびソース・キーによる移動(Move With Source Key)などの命令の第2オペランドについて、さらに、たとえば、ページ移動(Move Page)命令の第1オペランドまたは第2オペランドのいずれかについて、汎用レジスタ内にアクセス・キーが指定されることを除いて、PSWキーはアクセス・キーになる。PSWキーは、たとえば、現行PSWのビット位置8〜11を占有する。ストレージへのアクセスがチャネル・プログラム実行のためであるときに、そのチャネル・プログラムに関連するサブチャネル・キーがアクセス・キーになる。チャネル・プログラム用のサブチャネル・キーは操作要求ブロック(ORB:operation-request block)に指定される。チャネル・サブシステム・モニターのために測定ブロックへのアクセスが行われるときに、測定ブロック・キーがアクセス・キーになる。測定ブロック・キーは、たとえば、チャネル・モニター設定(Set Channel Monitor)命令によって指定される。
【0108】
キー制御保護のためにCPUアクセスが禁止されると、その命令の実行は終了され、保護例外のためのプログラム割り込みが行われる。しかし、操作単位または命令の実行は抑止することができる。チャネル・プログラム・アクセスが禁止されると、始動機能は終了し、保護チェック条件が関連の割り込み応答ブロック(IRB:interruption-response block)に示される。測定ブロック・アクセスが禁止されると、入出力測定ブロック保護チェック条件が示される。キー制御保護のためにストア・アクセスが禁止されると、保護位置の内容は変わらない。取り出しアクセスが禁止されると、保護情報はレジスタ内にロードされないか、他のストレージ・ロケーションに移動するか、または入出力装置に提供される。禁止された命令取り出しの場合、その命令は抑止され、任意の命令長コードが示される。
【0109】
キー制御保護は、CPUが問題プログラム状態にあるかまたは監視プログラム状態にあるかとは無関係であり、いくつかの例外を除いて、実行中のCPU命令またはチャネル・コマンド・ワードのタイプに依存しない。その他の指定がある場合を除き、プログラムによって明示的に指定されたストレージ・ロケーションであって、情報をストアするかまたは取り出すためにCPUによって使用されるストレージ・ロケーションへのアクセスは、キー制御保護の対象になる。ストレージ保護オーバーライド制御が1であり、ストレージ・キーの4つのアクセス制御ビットの値が、たとえば、9であるときに、キー制御保護は適用されない。取り出しのためのキー制御保護は、有効アドレスおよび専用スペース制御次第で、取り出し保護オーバーライド制御が1であるときに、適用される場合もあれば、適用されない場合もある。ストレージ保護オーバーライド制御および取り出し保護オーバーライド制御は、チャネル・サブシステムによって行われるストレージ参照に影響しない。たとえば、ブロック・テスト(Test Block)命令の第2オペランドへのアクセスは、キー制御保護の対象にならない。入出力測定ブロックにアクセスするためにチャネル・サブシステムによって行われるストレージ・アクセス、あるいはCCW、IDAW(間接データ・アドレス・ワード)、またはMIDAW(変更間接データ・アドレス・ワード)を取り出すためにまたはCCWの実行中に指定されたデータ領域にアクセスするためにチャネル・プログラムによって行われるストレージ・アクセスは、キー制御保護の対象になる。しかし、CCW、IDAW、MIDAW、または出力データが事前取り出しされる場合、CCW、IDAW、またはMIDAWが制御を取る予定になるまで、あるいはそのデータが書き込まれる予定になるまで、保護チェックは示されない。以下のようなシーケンスのいずれかについて暗黙に行われるアクセスにはキー制御保護は適用されない。
・ 割り込み
・ CPUログアウト
・ アクセス・レジスタ変換、動的アドレス変換、PC番号変換、ASN変換、またはASN許可に関するテーブル項目の取り出し
・ 追跡
・ ストア状況機能
・ 保留割り込みテスト(Test Pending Interruption)が0というオペランド・アドレスを有するときに実位置184〜191へのストア
・ 初期プログラム・ローディング
【0110】
同様に、情報を変更または表示するためにオペレータ機構を介して開始されたアクセスには保護は適用されない。しかし、プログラムがこれらの位置を明示的に指定する場合、それらは保護の対象になる。
【0111】
キー制御保護の対象になるアクセスは、ストレージ保護オーバーライド制御によって実施される可能性がある。一例として、制御レジスタ0のビット39はストレージ保護オーバーライド制御である。このビットが1であるときに、ストレージ保護オーバーライドはアクティブである。このビットが0であるときに、ストレージ保護オーバーライドは非アクティブである。ストレージ保護オーバーライドがアクティブである場合、たとえば、9という関連ストレージ・キー値を有するストレージ・ロケーションについて、キー制御ストレージ保護は無視される。ストレージ保護オーバーライドが非アクティブである場合、9というストレージ・キー値について、特殊なアクションは何も行われない。ストレージ保護オーバーライドは、命令取り出し、ならびにそのオペランド・アドレスが論理、仮想、または実である命令の取り出しアクセスおよびストア・アクセスに適用される。これは、チャネル・プログラム実行のために、またはチャネル・サブシステム・モニターのために行われるアクセスには適用されない。ストレージ保護オーバーライドは、キー制御保護の対象にならないアクセスには何も影響を及ぼさない。
【0112】
信頼できるサブシステムに併せておそらく誤ったアプリケーション・プログラムが実行される場合に信頼性を改善するためにストレージ保護オーバーライドを使用することができるが、アプリケーション・プログラムはそのサブシステムによってアクセスされたストレージの一部分のみにアクセスする必要がある。これを実行するための技法は以下の通りである。アプリケーション・プログラムによってアクセスされたストレージにはストレージ・キー9が与えられる。サブシステムのみによってアクセスされたストレージには、他の何らかの非ゼロのストレージ・キー、たとえば、キー8が与えられる。アプリケーションはPSWキー9によって実行される。サブシステムは(この例では)PSWキー8によって実行される。その結果、サブシステムはキー8とキー9の両方のストレージにアクセスすることができ、アプリケーション・プログラムはキー9のストレージのみにアクセスすることができる。
【0113】
ストレージ保護オーバーライドは、CPUによって行われたストレージへのアクセスに影響し、保護テストによって設定された結果にも影響する。しかし、問題プログラム状態であるときに、特定のキー値を使用できるかどうかを判断するためにPSWキー・マスクをテストする命令は、ストレージ保護オーバーライドがアクティブであるかどうかによって影響されない。このような命令としては、とりわけ、キーによる移動(Move With Key)およびアドレスによるPSWキーの設定(Set PSW KeyFrom Address)を含む。これらの命令が問題プログラム状態で9というアクセス・キーを使用できるようにするために、PSWキー・マスクのビット9は1になるはずである。
【0114】
ストレージ保護オーバーライド制御に加えて、キー制御保護の対象になるアクセスは、取り出し保護オーバーライド制御によって実施される可能性がある。一例として、制御レジスタ0のビット38は取り出し保護オーバーライド制御である。このビットが1であるときに、たとえば、有効アドレス0〜2047の位置については取り出し保護は無視される。有効アドレスは、動的アドレス変換またはプレフィックス変換による任意の変換の前に存在するアドレスである。しかし、有効アドレスが動的アドレス変換の対象であり、専用スペース制御、たとえば、ビット55が変換時に使用されるアドレス・スペース制御要素内で1である場合、取り出し保護は無視されない。取り出し保護オーバーライドは、命令取り出し、ならびにそのオペランド・アドレスが論理、仮想、または実である命令の取り出しアクセスに適用される。これは、チャネル・プログラム実行のために、またはチャネル・サブシステム・モニターのために行われる取り出しアクセスには適用されない。このビットが0に設定されると、有効アドレス0〜2047の位置の取り出し保護は、これらの位置に関連するストレージ・キーの取り出し保護ビットの状態によって決定される。取り出し保護オーバーライドは、キー制御保護の対象にならないアクセスには何も影響を及ぼさない。
【0115】
取り出し保護オーバーライド制御は、たとえば、アドレス2048〜4095の位置の取り出し保護を可能にするが、アドレス0〜2047の位置の取り出し保護はまったく行わない。
【0116】
アクセス・リスト制御保護
アクセス・レジスタ・モードでは、取り出し専用ビットであるアクセス・リスト項目のビット6は、アクセス・リスト項目によって指定されたアドレス・スペースに対し、どのタイプのオペランド参照が許可されるかを制御する。ある参照のアクセス・レジスタ変換部分でその項目が使用され、ビット6が0であるときに、取り出しタイプおよびストア・タイプの両方の参照が許可され、ビット6が1であるときに、取り出しタイプ参照が許可され、ストアしようという試みによって、保護例外が認識され、命令の実行が抑止される。取り出し専用ビットはALBアクセス・リスト項目に含まれる。メイン・ストレージ内のアクセス・リスト項目内の取り出し専用ビットに対する変更は、保護例外が認識されるかどうかに対して影響を及ぼす場合でも、必ずしも直ちに影響を及ぼすわけではない。しかし、このビットに対するこの変更は、たとえば、ALBをパージするALBパージ(Purge ALB)命令または比較交換パージ(Compare And Swap AndPurge)命令が実行された直後に影響を及ぼす。以下に記載する保護テスト命令は、CPUがアクセス・レジスタ・モードにあるときにアクセス・リスト制御保護を考慮に入れる。アクセス・リスト制御保護に違反すると、一例として、条件コード1が設定されるが、例外として、たとえば、条件コード2または3に関する条件が満足されたときにこれらの条件コードが設定されるのを妨げない。
【0117】
アクセス・リスト制御保護に違反すると、抑止が行われる。他の保護タイプのいずれかに違反すると、終了が行われる可能性がある。
【0118】
ページ保護
ページ保護機構は、それぞれのページ・テーブル項目およびセグメント・テーブル項目内のページ保護ビットを使用することにより、仮想ストレージへのアクセスを制御する。これは、不適切なストアに対する保護を提供する。ページ保護ビットであるページ・テーブル項目のビット54は、対応する4Kバイト・ページへのストアが許可されるかどうかを制御する。このビットが0であるときに、取り出しとストアの両方が許可され、このビットが1であるときに、取り出しのみが許可される。保護ページにストアしようという試みが行われると、そのページの内容は変わらず、操作単位または命令の実行は抑止され、保護のためのプログラム割り込みが行われる。ページ保護ビットであるセグメント・テーブル項目のビット54は、セグメント・テーブル項目によって指定されたページ・テーブル内の各項目のページ保護ビット位置内にORされるものとして処理される。したがって、セグメント・テーブル項目ページ保護ビットが1であるときに、その結果は、指定されたページ・テーブル内の各項目でページ保護ビットが1である場合のようになる。ページ保護は、仮想アドレスを使用するストア・タイプ参照に適用される。
【0119】
低アドレス保護
低アドレス保護機構は、割り込み処理中にCPUによって使用されるメイン・ストレージ情報の破壊に対する保護を提供する。これは、たとえば、0〜511の範囲および4096〜4607の範囲内の有効アドレス(第1および第2の4Kバイトの有効アドレス・ブロックの最初の512バイト)によって命令がストアすることを禁止することによって達成される。この範囲基準は、動的アドレス変換またはプレフィックス変換によってアドレスのアドレス変換が行われる場合にその前に適用される。しかし、この範囲基準が適用されないと、その結果、有効アドレスが動的アドレス変換の対象になり、専用スペース制御であるビット55が変換時に使用されるアドレス・スペース制御要素内で1である場合に、低アドレス保護が適用されない。使用すべきアドレス・スペース制御要素が他のタイプの例外のために使用不能である場合に、低アドレス保護は適用されない。低アドレス保護は、低アドレス保護制御ビットである制御レジスタ0のビット35の制御下にある。このビットが0であるときに、低アドレス保護はオフであり、このビットが1であるときに、低アドレス保護はオンである。
【0120】
低アドレス保護のためにアクセスが禁止された場合、保護位置の内容は変わらず、命令の実行は終了され、保護例外のためのプログラム割り込みが行われる。しかし、操作単位または命令の実行は抑止することができる。たとえば、0〜511の範囲または4096〜4607の範囲内の有効アドレスを使用することによりストアしようというプログラムによる試みは、低アドレス保護の対象になる。低アドレス保護は、そのオペランド・アドレスが論理、仮想、または実である命令のストア・アクセスに適用される。また、低アドレス保護はトレース・テーブルにも適用される。低アドレス保護は、割り込み、CPUログアウト、たとえば、保留割り込みテストによる実位置184〜191への入出力割り込みコードのストア、初期プログラム・ローディングおよびストア状況機能などのシーケンスのためにCPUまたはチャネル・サブシステムによって行われるアクセスには適用されず、入出力データ転送中のデータ・ストアにも適用されない。しかし、これらの位置のいずれかにおいてプログラムによって行われる明示的ストアは低アドレス保護の対象になる。
【0121】
低アドレス保護およびキー制御保護は同じストア・アクセスに適用されるが、例外として、低アドレス保護はチャネル・サブシステムによって実行されるストアには適用されないのに対して、キー制御保護は適用され、キー制御保護は追跡、ブロック・テストの第2オペランド、または特にリンケージ・スタックについて操作する命令には適用されないのに対して、低アドレス保護は適用される。
【0122】
取り出し保護オーバーライドおよび低アドレス保護は、それに関する専用スペース制御がアドレス・スペース制御要素内で1になるアドレス・スペースには適用されないので、アドレス・スペース内の0〜2047および4097〜4607という位置は、そのスペース内の他の位置と同じように使用可能である。
【0123】
保護抑止
一部の命令定義は、いずれかのタイプの保護による保護例外が認識された場合に動作が抑止されることを指定する。この指定が欠けていると、アクセス・リスト制御保護またはDAT保護(ページ保護とも呼ばれる)による保護例外が認識された場合に命令の実行は抑止され、低アドレス保護またはキー制御保護による保護例外が認識された場合に命令の実行は抑止されるかまたは終了される可能性がある。
【0124】
保護抑止機能により、制御プログラムは、例外がDAT保護によるものであるかどうかを判断するために、保護例外を引き起こした仮想アドレスの変換時に使用されるセグメント・テーブル項目、ページ・テーブル項目、拡張DATが適用されるときは領域テーブル項目を突き止めることができる。これは、たとえば、POSIXフォーク機能(またはコピー・オン・ライト機能)の実装のために使用される。また、保護抑止機能により、制御プログラムは、アドレスが仮想ではなかった場合または例外がアクセス・リスト制御保護によるものであった場合にセグメント・テーブル項目およびページ・テーブル項目を突き止めることを回避することもできる。拡張DATが適用されるときは、制御プログラムは、アドレスが仮想ではなかった場合または例外がアクセス・リスト制御保護によるものであった場合に領域テーブル項目を突き止めることを回避することもできる。
【0125】
保護例外によるプログラム割り込み中に、たとえば、実位置168〜175のビット位置61に1または0がストアされる。一例として、z/Architectureでは、ビット位置61に1をストアすることは、以下のことを示している。
・ その間に例外が認識された操作単位または命令実行は抑止されていた。
・ プログラムの旧PSW内のDATモード・ビットによって示されているように、動的アドレス変換(DAT)がオンであった場合、例外を引き起こした有効アドレスは、DATによって変換すべきであった1である。(有効アドレスは、DATまたはプレフィックス変換による任意の変換の前に存在するアドレスである。)DATがオンであった場合にビット61は0に設定されるが、有効アドレスは実アドレスであるのでDATによって変換されないはずであった。DATがオフであった場合、保護例外は、DAT保護またはアクセス・リスト制御保護によるものであった可能性はない。
・ 実位置168〜175のビット位置0〜51は、例外を引き起こした有効アドレスのビット0〜51を含む。DATがオンであって、有効アドレスがDATによって変換されるはずであったことを示していた場合、実位置168〜175のビット位置62および63ならびに実位置160は、ページ変換例外によるプログラム割り込み中にストアされるものと同じ情報を含み、この情報は保護アドレスを含むアドレス・スペースを識別する。また、実位置168〜175のビット60は、保護例外がアクセス・リスト制御保護によるものではなかった場合に0になり、その例外がアクセス・リスト制御保護によるものであった場合に1になる。ビット位置60の1は、その例外がDAT保護によるものではなかったことを示す。DATがオフであった場合、実位置168〜175のビット位置60、62、および63の内容、ならびに実位置160の内容は予測不能である。実位置168〜175のビット位置52〜59の内容は予測不能である。
【0126】
ビット61が0であることは、その操作が抑止されたかまたは終了されたことと、実位置168〜175の残りのビット位置ならびに実位置160の内容は予測不能である。
【0127】
保護例外がアクセス・リスト制御保護またはDAT保護によるものであった場合、ビット61は1に設定される。保護例外が低アドレス保護またはキー制御保護によるものであった場合、ビット61は1に設定することができる。
【0128】
保護例外条件がアクセス・リスト制御保護またはDAT保護のいずれかによって存在するが、低アドレス保護またはキー制御保護のいずれかによっても存在する場合、ビット61が0に設定されるか1に設定されるかは予測不能である。
【0129】
保護抑止機能は、重複アドレス・スペースを作成させるPOSIXフォーク機能を実行する際に有用である。以下の考察は、拡張DATが適用されない場合、または拡張DATが適用されるが、セグメント・テーブル項目内のフォーマット制御(FC)ビットが0である場合に関するものである。フォークが行われると、そのページ内のストアが試行されない限り、制御プログラムにより、異なるアドレス・スペースの同じページが、実ストレージの単一ページ・フレームにマッピングされる。次に、特定のアドレス・スペースでストアが試行されると、制御プログラムは、そのアドレス・スペース内のページに固有のページ・フレームを割り当て、そのページの内容を新しいページ・フレームにコピーする。この最後のアクションはコピー・オン・ライト機能と呼ばれることもある。ページ内でストアしようという試みを検出するために、制御プログラムはそのページに関するページ・テーブル項目内でDAT保護ビットを1に設定する。指定のセグメント内のどこかにストアしようという試みを検出するために、制御プログラムは初めにセグメント・テーブル項目内でDAT保護ビットを1に設定することができる。拡張DATが適用され、セグメント・テーブル項目内のフォーマット制御(FC)ビットが1である場合、同様の技法を使用して、絶対ストレージの単一セグメント・フレームをマッピングすることができる。
【0130】
DATがオンであったときに実位置168〜175でビット61が1であることは、保護例外を引き起こしたアドレスが仮想であることを示す。この表示により、例外が低アドレス保護またはキー制御保護とは対照的にDAT保護によるものであったかどうかを判断するために、アクセス・レジスタ変換および動的アドレス変換のプログラム化形式を実行することができる。
【0131】
保護抑止の結果については以下の表に要約する。
【表5】
【0132】
拡張保護抑止
拡張保護抑止機能がインストールされると、保護例外中に何が発生する可能性があるかについて以下の追加の制約が発生する。これらの制約は、元の保護抑止機能に定義されているどの制約よりも優先される。
【0133】
保護例外によるプログラム割り込み中に、実位置168〜175のビット61は、認識される保護例外のタイプを示す。保護例外がアクセス・リスト制御保護またはDAT保護によるものであった場合、ビット61は1に設定される。保護例外が低アドレス保護またはキー制御保護によるものであった場合、ビット61は0に設定される。
【0134】
保護例外条件がアクセス・リスト制御保護またはDAT保護のいずれかによって存在するが、低アドレス保護またはキー制御保護のいずれかによっても存在する場合、どの例外が認識されるかならびにビット61が0に設定されるか1に設定されるかは予測不能である。しかし、どの例外が認識されるかは予測不能であるが、以下の表に要約するように、認識される例外は一貫性のある動作を発生する。
【表6】
【0135】
SOPおよびESOP機構は、ネイティブ・アーキテクチャのために、ならびに解釈実行モードで提供される。
【0136】
z/Architectureでは、解釈実行モードでの保護抑止は、例外制御(たとえば、ECA.18)が1であるときに保護例外を処理するために使用され、解釈実行モードでの拡張保護抑止は、例外制御(たとえば、ECA.18)が1であり、拡張保護抑止機構がインストールされたときの動作のために使用される。この例では、ECA.18は保護インターセプト制御であり、一般に、ECA内のビットが0である場合、関連条件の結果としてインターセプトが行われ、ECA内のビットが1である場合、関連機能の解釈実行がホストによって試行される。
【0137】
さらに、一例では、実行制御(たとえば、ECB.6)はホスト保護割り込み制御である。一般に、ECB内のビットが0である場合、関連条件の結果としてインターセプトが行われ、ECB内のビットが1である場合、関連機能の解釈実行が試行される。拡張実行モードでの拡張保護抑止は、ECB.6が1であり、拡張保護抑止機構がインストールされたときのホスト・ページ保護例外の処理に使用される。
【0138】
保護例外の結果、ECA.18、ECB.6、およびIC.2(インターセプト制御)の値次第で、プログラム割り込みインターセプトが行われる可能性がある。そうでなければ、対応するインターセプト制御であるビット1またはビット2が1に設定されるタイプである場合、プログラム割り込みにより、たとえば、インターセプト・コード08のインターセプトが行われる。一例では、インターセプト・コード08のインターセプトは必須である。たとえば、アドレス指定、指定、および特殊操作という例外によって引き起こされるゲスト・プログラム割り込みについて、インターセプト・コード08がストアされる。
【0139】
ゲスト・アドレス指定例外は、無効ゲストまたはホスト・アドレスによるものである可能性がある。
【0140】
ゲスト保護例外は、ゲスト保護条件、ホスト・ページ保護条件、または所与のモード(たとえば、MCDS−−複数制御データ・スペース)ではホスト・アクセス・リスト制御保護条件によるものである可能性がある。
【0141】
割り込みのパラメータは状態記述に入れられる。
【0142】
様々な解釈実行モードでは、ゲスト・ストレージへのゲスト・アドレスは、実マシン・ストレージ・キーを使用して、固有に定義されたキー制御ストレージ保護の対象になる。また、ゲスト・アクセスは、ゲスト低アドレス保護、ゲスト・ページ保護、ゲスト取り出し保護オーバーライド、およびゲスト・アクセス・リスト制御保護の対象になる。ホスト低アドレス保護は、ゲスト・ストレージへのゲスト参照に適用されない。
【0143】
加えて、ホスト・ページ保護は、MCDSモードでのホスト・アクセス・リスト制御保護のように、ページング可能ストレージ・モード・ゲスト参照に適用される。
【0144】
一般に、許可されないストアにより、保護例外が認識され、その結果、ゲストまたはホスト・プログラム割り込みが行われる。しかし、ゲスト・プレフィックス域の最初の4Kバイト・ブロックへのストア・アクセスは、解釈実行モードに入るときにチェックされ、このテスト中に検出された任意のアクセス例外の結果として、妥当性インターセプトが行われる(たとえば、16進の0037であるVIRコード)。その後、解釈実行中に、ゲスト・プレフィックス域の最初の4Kバイト・ブロックへのアクセス時に検出されたアクセス例外条件は、通常通りに提示される場合もあれば、その結果として妥当性インターセプトが行われる場合もある。ゲスト割り込みを実行するためのゲスト・プレフィックス域への参照によって検出されたアクセス例外条件の結果として妥当性インターセプトが行われる場合、以下の情報が失われる可能性がある。
・ ゲスト・プレフィックス域にストアすべき割り込み情報(しかし、割り込み以前のゲストPSWは状態記述にストアされる。)
・ 適用可能であれば、割り込み要求そのもの
【0145】
以下に記述するゲストの保護テスト命令の解釈実行中に条件コードが設定される場合、ホスト・ページ保護およびアクセス・リスト制御保護のメカニズムが考慮される。
【0146】
解釈実行モードでのSOPおよびESOPに関する詳細については以下に説明する。
【0147】
解釈実行モードでの保護抑止
保護抑止機能は、ページング可能モードDATオフ・ゲストのために、ホスト・アクセス・リスト制御保護およびホスト・ページ保護により、たとえばz/VMによって使用可能である。DATモード・ビット(たとえば、プログラムの旧PSWのビット5)が0であるときにゲストはDATオフであり、DATモード・ビットが1であるときにゲストはDATオンである。ホスト・アクセス・リスト制御保護はMCDSゲスト(DATオフ・ゲストである)に適用される。
【0148】
解釈実行モードでは、この保護抑止定義のために、実位置168〜175にストアされた有効アドレスは、保護例外がホスト・アクセス・リスト制御保護またはホスト・ページ保護によるものであっても、ゲスト有効アドレスである。
【0149】
保護例外がホスト・アクセス・リスト制御保護またはホスト・ページ保護によって引き起こされ、ゲストがDATオフ・ゲストであるとき、ゲスト有効アドレスが実(論理とは対照的)アドレスになるように定義されているものであっても、ビット61は1に設定され、ゲスト有効アドレスのビット0〜51がストアされる。この場合、実位置168〜175のビット62および63、ならびに実位置160の内容は、ゲストがMCDSモード・ゲストである場合に例外が適用されるホスト・アドレス・スペースを適切に示すか、あるいはこれらのフィールドの内容は、ゲストが非MCDSモードDATオフ・ゲストである場合に予測不能になる。(後者の場合、例外がホスト1次アドレス・スペースに適用されることが知られている。)
【0150】
ESOPがない場合、保護例外がホスト・ページ保護によって引き起こされ、ゲストがDATオン・ゲストであるときに、ビット61は予測不能になる。DATオン・ゲスト・ページ保護例外とホスト・ページ保護例外とを区別することはできないので、ホスト・ページ保護はDATオン・ゲストには使用不能である。
【0151】
通常通り、実位置に対する上記の参照は、ゲスト割り込みが行われた場合にゲスト実位置を参照する。ゲスト割り込みの代わりにインターセプトが行われた場合、情報はむしろ状態記述内の対応する位置にストアされる。
【0152】
上述の通り、ECA.18(状態記述内)は保護インターセプト制御である。ECA.18が0であるときに、保護例外の結果として必須インターセプトが行われる。ECA.18が1であるときに、インターセプトは防止され、ゲスト割り込みが行われる。ECA.18はIC.2によってオーバーライドされ、このIC.2は1であるときに、任意のプログラム割り込みでインターセプトが行われることを指定する。ECA.18は、SIE状態保存支援によって保持可能である。
【0153】
解釈実行モードでの拡張保護抑止
解釈実行モードでの拡張保護抑止は、たとえば、z/Architectureモードで動作するホストおよびz/Architectureモードのホストの下で任意のアーキテクチャ・モードで動作するゲストについて定義される。(しかし、他の諸実施形態では、ホストは他のアーキテクチャ・モードで動作することができる。)
【0154】
ECA.18およびECB.6(状態記述内)は、それぞれ、保護インターセプトおよびホスト保護割り込み制御である。ECA.18が1であり、IC.2が0であるときに、インターセプトはゲストによって認識された任意の保護例外について防止され、ゲスト割り込みが行われる。ECA.18が0であるときに、保護例外(ECB.6が1であるときのホスト・ページ保護例外を除く)の結果、必須インターセプトが行われる。
【0155】
ECB.6が1である場合、ホスト・ページ保護による例外は、ホスト・プログラム割り込みとして提示される。ECB.6が0である場合、ホスト・ページ保護例外は、ECA.18およびIC.2によって管理されるように、ゲスト・プログラム割り込みまたはインターセプトとして提示される。ホスト・ページ保護によるホスト割り込みの場合、以下のことが行われる。
・ その間に例外が認識されたゲスト操作単位またはゲスト命令実行はヌル文字化される。
・ 解釈実行開始命令は抑止される。
・ 情報は、それがホスト内の通常例外であった場合のようにホスト・ストレージにストアされる。変換例外IDにストアされたアドレスはホスト仮想アドレスであり、ASCE IDおよび例外アクセスIDはホスト・アドレス・スペースを識別する。(非MCDSゲストの場合、これはホスト1次スペースである。)
【0156】
ECA.18によるインターセプト防止はIC.2によってオーバーライドされ、これは、1であるときに、ゲスト・プログラム割り込みの代わりにインターセプトが行われることを指定する。しかし、ECB.6およびIC.2の両方が1である場合、ホスト・ページ保護例外は依然としてホスト割り込みとして提示される(すなわち、ECB.6=1の処理はIC.2=1の処理より優先される)。ECA.18およびECB.6はSIE状態保存支援によって保持可能である。
【0157】
ゲスト保護例外がホスト・アクセス・リスト制御保護またはホスト・ページ保護によって引き起こされ、ゲストがMCDSモードであるとき、ゲスト有効アドレスが実(論理とは対照的)アドレスになるように定義されている場合でも、ゲスト実位置168〜175のビット61は1に設定され、ゲスト有効アドレスのビット0〜51はストアされ、ビット62および63、ならびに実位置160の内容は、例外が適用されるホスト・アドレス・スペースを適切に示す。ホスト・ページ保護による保護例外が非MCDSゲストで認識され、ホスト保護割り込みが使用不能である(すなわち、ECB.6が0である)ときに、ゲスト実位置168〜175のビット61は0に設定され、残りのフィールドは未定義である。
【0158】
SOPおよびESOPに関するさらなる詳細について、図11〜図12に関連して説明するが、これらの図には、本発明の一態様により、SOP/ESOPゲスト処理の一実施形態が記載されている。
【0159】
初めに図11を参照すると、このロジックへの入口は、ステップ800で、この環境内で実行されるページング可能ゲストによって発行され、ストレージ・ロケーションで取り出しまたはストア・アクセスを実行しようと試みるゲスト命令に基づくものである。照会802で、ストレージ・アクセスに関する要求に応答して、要求されたアクセス(たとえば、取り出しまたはストア)がゲストおよびホストによって許可されるかどうかについて判断が行われる。この例では、ステップ804で、アクセスが試行され、成功した場合、アクセスが実行され、命令が完了する。しかし、試行済みアクセスが失敗した場合、処理は、アクセスを失敗させたものがホスト・レベル保護であったかまたはゲスト・レベル保護であったかを判断し続ける。
【0160】
アクセスが許可されない場合、照会806で、DAT処理がそのゲストについてオンである(DATオン・ゲストとも呼ばれる)かどうかについて判断が行われる。ゲストが変換中に動作していない(すなわち、DATオフ・ゲストである)場合、照会808で、キー制御保護がそのゲストについて設定されるかどうかについて追加の照会が行われる。この例では、DATオフ・ゲストの場合、依然として実ストレージ・ブロックのゲスト・キー制御保護が存在する可能性がある。ゲスト・キー制御保護がまったく存在しない場合、それはアクセスを拒否するゲスト・レベル保護ではなく、むしろ、ホスト・レベル保護である。したがって、ステップ810で、以下に記載するようにホスト割り込みが提供される。
【0161】
照会808に戻り、ゲスト・キー制御保護が存在する場合、ステップ812で、ゲスト割り込みが提示される。これは、示されているゲストが保護された位置にアクセスしようと試みたことをゲストに示すものである。
【0162】
もう一度、照会806を参照すると、DATがそのゲストについてオンである場合、たとえば、低アドレス保護、アクセス・リスト制御保護、キー制御保護、またはDAT保護(拡張DAT以前のページ保護とも呼ばれる)を含み、同じく適用可能な他の保護形式が存在するかどうかについて追加の照会が行われる。これらの他の保護形式のいずれも適用されない場合、それはホスト問題であり(すなわち、ホスト・レベル保護によってアクセスが失敗する)、したがって、ステップ810で、ホスト割り込みが提示される。しかし、これらの他の保護形式の1つが適用される場合、ステップ816で、ゲスト割り込みが提供される。
【0163】
さらに、ゲスト保護方式が適用される場合、照会818で、適用されるものがゲストDAT保護(DATP)であるかどうかならびに要求がストア・アクセスに関するものであるどうかについて判断が行われる。そうではない場合、ステップ820で、ゲスト例外が処理される。一例では、ゲストがこれらの保護条件のうちの1つを受け取ると、ポリシーによって決定されているように、必要または所望の処理であれば何でも監視プログラム(たとえば、ホスト)が実行する。
【0164】
照会818に戻り、それがゲストDATPおよびストア・アクセスである場合、おそらく、ステップ822で、ゲスト・オペレーティング・システムはゲスト・レベルのコピー・オン・ライトを理解する。コピー・オン・ライトという概念がまったく存在しない場合、ゲスト例外を実行することができる。
【0165】
ホスト割り込みの処理に関する詳細について、図12に関連して説明する。初めに、照会840で、保護割り込みがストア・アクセス時のホストDATPによるものであるかどうかについて判断が行われる。そうではない場合、ステップ842で、その条件がゲストに反映される。一例では、ホストは、障害を引き起こす特定の条件をゲストに示すために必要なアクションであれば何でも実行する。
【0166】
もう一度、照会840を参照すると、それがストア・アクセス時のホストDATPである場合、照会844で、それがDATオン・ゲストであるかどうかについて判断が行われる。それがDATオン・ゲストである場合、照会846で、SOPまたはESOP処理が制御しているかどうかについて追加の照会が行われる。それがSOP処理である場合、ステップ848で、その条件がゲストに反映される。しかし、それがESOP処理である場合、変換例外識別(TEID)におけるビット61は、DATP条件を検出したストア・アクセス試行の場合に予測可能である。ESOPがない場合、ゲストDATオンは、ゲストへの反映という結末に導かれる。
【0167】
照会844でゲストDATがオフである場合、または照会846でゲストDATがオンであり、それがESOPである場合、以下のことが行われる。照会850で、アクセスすべきストレージ域(たとえば、ページ)がホスト・コピー・オン・ライト方式の一部であるかどうかについて判断が行われる。そうではない場合、ステップ852で、その条件がゲストに反映される。しかし、それがホスト・コピー・オン・ライト方式の一部である場合、ステップ854で、ホスト・コピー・オン・ライトが実行される。
【0168】
有利なことに、ESOPは、ストレージ(たとえば、ページ)障害について何が行われているかならびに誰の責任であるかをホストおよびゲストが把握するための手段を提供する。ESOP機構は、解釈的に動作しているときにホスト・ページ保護からゲストを見分けるマシン(たとえば、CPU)の能力を提供する。以前、ページ保護は、ゲスト対ホスト・ページ障害について責任を負わされることにより区別することができなかった。すなわち、ページ保護例外は、ゲストまたはホストのいずれかである可能性があり、何らかの不確実性が存在した。したがって、ホストはそれに対して大したことはできなかった。ESOPにより、以前の不確実性は解消され、ホスト・ページ保護は、ホストの不良ページ(たとえば、ホスト・アドレスの障害)に関する情報によるホスト・プログラム割り込みを引き起こす。同様に、ゲスト・ページ保護は、ゲスト・ページ(たとえば、ゲスト・アドレスの障害)に関する情報によるゲスト・プログラム割り込みを発生する。
【0169】
以前、DATオフ・ゲストの場合、ページ保護はホストの問題であったはずなので、ホストCOWは、DATオフ・ゲストであったことをホスト・プログラムが把握していたゲスト(たとえば、CMS、MCDS)のみについて実行することができた。しかし、DATオン・ゲストの場合、ページ保護がホストの問題であったかまたはゲストの問題であったかは不確かであり、したがって、COWは使用することができなかった。
【0170】
本発明の一態様により、これは変化した。拡張保護抑止(ESOP)機構により、ホスト・レベル保護とゲスト・レベル保護とを区別することができ、したがって、適切なときにCOWの使用が可能になる。ESOPの場合、この追加の機能により、DATオン・ゲスト(それ自体の保護ページでつまずいた可能性がある)に関するインターセプトの状況下でも、その例外が属すホストを見分け、コピー・オン・ライトがそのホストに属すときに依然としてそのコピー・オン・ライトを実行するために十分な情報が使用可能になるように、区別することができる。
【0171】
保護テスト
本発明の一態様により、保護例外に関するテストを可能にする機能が提供される。一例として、保護テスト(TPROT)命令は、TPROT命令を実行しているプログラムに対してプログラムによって使用すべきストレージに関する情報を提供するために使用される。たとえば、これは、ストレージの保護に関する表示を提供し、ホスト・レベル保護とゲスト・レベル保護との区別を可能にする。TPROTは、本発明の1つまたは複数の態様により、ESOPを利用する。
【0172】
さらに説明するために、プログラムが保管フレーム(storageframe)を頻繁に割り振る場合、プログラムは、プログラムによるアクセスを可能にする属性をそのフレームが有するかどうかを学習するために照会コマンドを実行することになる(すなわち、それが常駐しているか、それが書き込み保護されていないか)。例として、IBMのSystem zプロセッサでは、このために保護テスト命令が使用され、サン・マイクロシステムズでは、mincore()システム呼び出しが使用される。この命令または呼び出しを発行することにより、プログラムは、前者の条件コードおよび後者の戻りコードからフレームの属性を学習する。ストレージ照会コマンドを発行するプログラムがホスト・ハイパーバイザの制御下のゲストとして解釈的に実行している場合、戻りコードは、ゲスト・アドレス変換テーブルならびにホスト・アドレス変換テーブルの観点からフレームの属性を反映することができる。このような動作は、ゲストへのコピー・オン・ライトなどの特定のホスト・ストレージ制御方式を使用した結果を露顕する可能性があり、したがって、ハイパーバイザによって提供された隔離を損なうことになる。
【0173】
本明細書に記載されているように、コピー・オン・ライト(COW)方式は、オペレーティング・システムによるメモリ圧力を低減するために使用される。プロセッサ・パフォーマンスが高くなるにつれて、単一オペレーティング・システムの制御下で複数のプログラムを実行し、単一ハイパーバイザの制御下で複数のオペレーティング・システムを実行する能力も非常に高くなる。より多くの同時プログラムに対処するために、システム・メモリ要件を管理するための特殊措置が実装される。
【0174】
このような措置の1つはCOWの使用である。プログラムがオペレーティング・システムによって始動されると、初めに割り振られたその保管フレームには、書き込み保護とマークが付けられ、同じOSの制御下にある他のプログラムと物理的に共用される。次に、これらのフレームの1つに対してストア動作が試行されると、プログラム例外が発生し、オペレーティング・システムは、固有のストレージ・フレームを割り振り、元の共用フレームの内容にコピーする。
【0175】
いくつかのプログラムは、ゲストおよびホスト・レベルでフレームの属性の複合ビューを返すストレージ照会コマンドで正常に動作することができる。しかし、書き込み保護ストレージの割り振りを回避するためにプログラムが書き込まれた場合、そのフレームに関するゲストのビューの変更によりリソースをまったく持っておらず、ストレージ照会コマンドが照会されたすべてのフレームについて書き込み保護の表示を返す場合にそのプログラムは障害を発生する可能性がある。このようなケースは、ハイパーバイザがコピー・オン・ライト方式を実装しない場合に発生する可能性がある。
【0176】
いくつかのシステムでは、疑似仮想化(para-virtualization)を使用するようにゲスト・プログラムを作成することができ、ゲスト要件は定義済みインターフェースによりホストに渡される。この場合、ゲストは、ストレージを使用するというその意図をホストに直接指定することができ、ホストは、コピーされたフレームを割り振ることにより上述の通り応答することができる。このような場合、ゲスト・プログラムは、それが実行している各ハイパーバイザ・ホストへのインターフェースを補償するように変更されるはずである。また、疑似仮想化呼び出しは、典型的に、高いオーバーヘッドを有し、ハイパーバイザに対する実行圧力を引き起こす。
【0177】
解釈的に実行しているゲスト・プログラムが保管フレームに対する照会コマンドを発行すると、ホスト・アドレス変換テーブル内で書き込み保護されているというだけでそのフレームが書き込み保護されていることをそのコマンドの条件コードまたは戻りコードが示すような条件が存在する場合、ホスト・アドレス変換テーブルの状態を反映する条件コードまたは戻りコード表示で実行完了する代わりに、プログラム・インターセプトが行われる。
【0178】
本発明の一態様により、コピー・オン・ライトなどの特定のホスト・ストレージ管理技法はゲスト・プログラムに対して透過的に機能する。これにより、プログラム・ロジックは、フレームのストレージ属性に関するゲスト・ビューのみを反映するようにストレージ照会コマンドの結果に依存することができる。ゲスト・アドレス変換テーブルでのみページが書き込み保護されている場合、ゲストは、システム呼び出しまたはハイパーバイザとの通信を遂行する必要なしにそれを学習することになる。
【0179】
一例では、保護テスト(TPROT)命令は、入力オペランドとしてフレーム・アドレスを取り、以下の4通りの戻りコードのうちの1つで完了する。
0 取り出し許可;ストア許可
1 取り出し許可;ストア不許可
2 取り出し不許可;ストア不許可
3 変換使用不能
【0180】
本発明の一態様により、ホスト・レベル保護とゲスト・レベル保護とを区別すること、ならびにCOWに対処するように変換テーブルが更新されていないが、正常に完了した実行を示す偽戻りコードを提供することを含むが、これらに限定されない特定の恩恵をもたらすように、保護テスト(TPROT)命令を実行するための機構が提供される。この実施形態では、ハイパーバイザはロジカル・パーティションのゲスト・イメージに関する状態値(ECB.6)を設定し、ゲスト・イメージのゲスト・プログラムはTPROT命令を実行のために取り出し、TPROT命令はテストすべきメモリ位置を指定し、TPROT命令は保護(ストア)のためにメモリ位置をテストし、抑止なしを示す状態値に応答して、テストに基づく条件コードの設定または例外動作の実行のうちのいずれかを実行するか、または抑止を示す状態値に応答して、条件コードを設定しなければならないことを示すテストに応答して実行し、命令の実行を抑止し、命令のインターセプトを実行する。
【0181】
一例では、以下のすべてが真であるときに、ページング可能モード・ゲストによる保護テスト命令の実行が抑止され、(条件コード1を設定する代わりに)ホスト割り込みが認識される。
・ 拡張保護抑止機構がホストにインストールされる。
・ ECB.6が1である。
・ 条件コード1が設定されることを要求する条件が存在する。
・ ホスト・ページ保護例外条件が存在する。
・ アクセス・リスト制御保護例外条件またはゲスト・ページ保護例外条件のいずれも存在しない。
【0182】
ストレージ参照中に、ゲスト・ページ保護条件が検出されると、キー制御ストレージ保護のために条件コード2が設定されない限り、1という条件コードがゲストによって設定され、ホストによるアクションはまったく行われない。ホスト・ページ保護の場合、上記で指定した条件が真である場合に、ゲストによる実行は抑止され、命令インターセプトが認識され、ホストによるアクションはまったく行われない。
【0183】
TPROT命令のフォーマットの一例について、図13に関連して説明する。描写されている通り、TPROT命令900は、たとえば、TPROT命令を識別する命令コード902(たとえば、E501)と、第1のレジスタ・フィールド(B1)904および第1の変位フィールド(D1)906と、第2のレジスタ・フィールド(B2)908および第2の変位フィールド(D2)910とを含む。第1オペランド・アドレスは、B1フィールドによって識別されたレジスタの内容にD1フィールドの内容を加えることによって決定される。同様に、第2オペランド・アドレスは、B2フィールドによって指定されたレジスタの内容とD2フィールドの内容を加えることによって形成される。
【0184】
実行時に、第1オペランド・アドレスによって指定された位置は、たとえば、第2オペランド・アドレスのビット56〜59によって指定されたアクセス・キーを使用することにより、保護例外についてテストされる。
【0185】
第2オペランド・アドレスはデータをアドレス指定するために使用されず、その代わりに、そのアドレスのビット56〜59は、テストの際に使用すべきアクセス・キーを形成する。この例では、第2オペランド・アドレスのビット0〜55および60〜63は無視される。
【0186】
第1オペランド・アドレスは論理アドレスである。CPUがアクセス・レジスタ・モードであるときに(DATがオンであり、PSWビット16および17が2進数の01であるときに)、第1オペランド・アドレスは、アクセス・レジスタ変換(ART)および動的アドレス変換(DAT)の両方のプロセスによるTPROT命令を実行のために取り出し変換の対象になる。ARTは、B1フィールドによって指定されたアクセス・レジスタに適用され、DATによって使用すべきアドレス・スペース制御要素を入手する。DATがオンであるが、CPUがアクセス・レジスタ・モードではないときに、第1オペランド・アドレスはDATによる変換の対象になる。この場合、DATは、CPUが1次スペース・モード、2次スペース・モード、またはホーム・スペース・モードであるときに制御レジスタ1、7、または13に含まれるアドレス・スペース制御要素をそれぞれ使用する。DATがオフである場合、第1オペランド・アドレスは、ARTまたはDATのいずれかによる変換の対象にならない実アドレスである。
【0187】
CPUがアクセス・レジスタ・モードであり、通常、以下の表に示されている例外の1つを引き起こすと思われる条件のためにARTがアドレス・スペース制御要素を入手できない場合、条件コード3を設定することにより、命令が完了する。
【表7】
【0188】
アクセス・レジスタが16進の00000000または16進の00000001を含む場合、ARTは、アクセス・リストにアクセスせずに、制御レジスタ1または7からアドレス・スペース制御要素をそれぞれ入手する。B1フィールドがアクセス・レジスタ0を指定するときに、ARTは、16進の00000000を含むものとしてアクセス・レジスタを処理し、アクセス・レジスタの実際の内容を検査しない。
【0189】
ARTが正常に完了した場合、DATの実行により動作は続行される。
【0190】
DATがオンであり、通常、以下の表に示されている例外の1つを引き起こすと思われる条件のために第1オペランド・アドレスを変換できない場合、条件コード3を設定することにより、命令が完了する。
【表8】
【0191】
第1オペランド・アドレスの変換を完了できる場合またはDATがオフである場合、第1オペランド・アドレスによって指定されたブロックに関するストレージ・キーは、第2オペランド・アドレスのビット位置56〜59に指定されたアクセス・キーと照らし合わせてテストされ、適用可能な保護メカニズムを考慮に入れて、ストア・アクセスおよび取り出しアクセスが許可されるかどうかを示すために条件コードが設定される。したがって、たとえば、低アドレス保護がアクティブであり、第1オペランド有効アドレスが0〜511または4096〜4607の範囲内である場合、ストア・アクセスは許可されない。アクセス・リスト制御保護、ページ保護、ストレージ保護オーバーライド、および取り出し保護オーバーライドも考慮される。
【0192】
変更ビットを含む、ストレージの内容は影響されない。その位置が取り出しに対して保護されている場合でも、モデル次第で、第1オペランド・アドレスに関する参照ビットを1に設定することができる。
【0193】
CPUがアクセス・レジスタ・モードである場合、有効アクセス・リスト指定あるいはALE、ASTE、または権限テーブル項目を取り出すためにARTによって使用されるアドレスが、その構成で使用不能な位置を指定するときに、アドレス指定例外が認識される。
【0194】
DATがオンである場合、1つまたは複数の領域テーブル項目、セグメント・テーブル項目、またはページ・テーブル項目のアドレス、あるいは変換後のオペランド実アドレスが、その構成で使用不能な位置を指定するときに、アドレス指定例外が認識される。また、領域テーブル項目またはセグメント・テーブル項目またはページ・テーブル項目がフォーマット・エラーを有するときに、変換指定例外が認識される。この例では、DATがオフである場合、オペランド実アドレスによるアドレス指定例外のみが適用される。
【0195】
上記のケースのすべてについて、動作は抑止される。
【0196】
結果の条件コード:
0 取り出し許可;ストア許可
1 取り出し許可;ストア不許可
2 取り出し不許可;ストア不許可
3 変換使用不能
【0197】
プログラム例外:
・ アドレス指定(有効アクセス・リスト指定、アクセス・リスト項目、ASN第2テーブル項目、権限テーブル項目、領域テーブル項目、セグメント・テーブル項目、ページ・テーブル項目、またはオペランド1)
・ 特権操作
・ 変換指定
【0198】
保護テストにより、プログラムは、プログラム例外を発生せずに呼び出し側プログラムから渡されたアドレスの保護属性を決定することができる。この命令は、その命令の第1オペランド・アドレスによって指定された位置で取り出しまたはストアが許可されるかどうかを示すために条件コードを設定する。この命令は、たとえば、アクセス・リスト制御、ページ、キー制御、低アドレス保護、ストレージ保護オーバーライド、および取り出し保護オーバーライドというマシン内の保護メカニズムを考慮に入れる。さらに、ASCEタイプ、領域変換、セグメント変換、およびページ変換の例外条件は、保護違反のためのプログラム代用品である可能性があるので、これらの条件は、プログラム例外を引き起こすのではなく、条件コードを設定するために使用される。CPUがアクセス・レジスタ・モードである場合、保護テストにより、さらにプログラムは、プログラム例外を発生せずにアクセス・レジスタ内のアクセス・リスト項目トークン(ALET)の使用可能度をチェックすることができる。ALETは、妥当性(ALET指定、ALEN変換、およびALEシーケンス例外条件の欠落)について、ならびにプログラムによる使用について許可されているかどうか(ASTE妥当性、ASTEシーケンス、および拡張権限例外条件の欠落)についてチェックされる。
【0199】
保護テストを使用する手法は、結果的に割り込みを発生しないテストの利点を有するが、テストと使用は時間的に分離されており、問題の位置のストレージ・キーが、テストされる時間と使用される時間との間で変化する可能性が存在する場合、正確ではない可能性がある。
【0200】
動的アドレス変換を処理する際に、保護テストは、その命令がASCEタイプ、領域変換、セグメント変換、およびページ変換例外を引き起こさないという点で実アドレス・ロード(Load Real Address)と同様である。その代わりに、これらの例外条件は、条件コード設定により示される。同様に、アクセス・レジスタ変換は、2つの命令のいずれかの間に実行されたときに、特定の例外条件に関する条件コードを設定する。実アドレス・ロードの場合に条件コード1、2、および3になる条件の結果、保護テストの場合に条件コード3になる。また、これらの命令は他のいくつかの点で異なっている。保護テストの第1オペランド・アドレスは、論理アドレスであり、したがって、DATがオフであるときに動的アドレスの対象にならない。実アドレス・ロードの第2オペランド・アドレスは、変換される仮想アドレスである。
【0201】
アクセス・レジスタ変換は、CPUがアクセス・レジスタ・モードである(DATがオンである)ときに保護テストに適用されるのに対し、DATがオンまたはオフのいずれであるかにかかわらず、PSWビット16および17が2進数の01であるときに実アドレス・ロードに適用される。アクセス・レジスタ変換における例外条件のために条件コード3が設定される場合、保護テストではなく、実アドレス・ロードは、その例外に割り当てられたプログラム割り込みコードを汎用レジスタに入れて返す。
【0202】
条件コード3は、第1オペランド位置が常にプログラムにとってアクセス不能になることを必ずしも示すわけではなく、むしろ、現行条件によりその命令がオペランドの保護属性を決定するのを防止することを示すだけである。たとえば、仮想ストレージ環境では、ストレージ・ロケーションがオペレーティング・システムによってページアウトされた場合に条件コード3を設定することができる。プログラムがその位置にアクセスしようと試みる場合、オペレーティング・システムは、ページ変換例外を解決し、その後、その位置をプログラムにとってアクセス可能なものにすることができる。同様に、条件コード1は、アドレスをストアできないことを必ずしも示すわけではない。POSIXフォーク機能を実装するオペレーティング・システムでは、ページ保護は、コピー・オン・ライト・イベントについてオペレーティング・システムに警告するために使用される。コピー・オン・ライト・イベントのオペレーティング・システム解決後に、プログラムはその位置へのストア・アクセスが許可される可能性がある。
【0203】
本発明の一態様により、保護テスト命令の実行に関連するロジックの一実施形態について、図14〜図15に関連して説明する。初めに、ステップ1000で、ゲストは、保護テスト命令によって照会中のストレージに関する情報を学習するために、保護テスト命令を実行する。実行中に、照会1002で、ゲストおよびホストによってストアが許可されるかどうかについて判断が行われる。一例では、ストアが実際には行われないが、ストアを行えたかどうかをテストすることによって、この判断が行われる。たとえば、ストアのアドレスにより様々な許可およびテストがチェックされるが、ストアは実行されない。実行された場合にストアが成功する場合、ストアはゲストおよびホストの両方によって許可されたものと見なされる。したがって、ステップ1004で、照会命令は成功条件コード(たとえば、0)で完了する。
【0204】
しかし、ストアがゲスト、ホスト、またはその両方によって許可されない場合、照会1006で、ゲスト・アドレス変換が使用可能であるかどうかについて追加の照会が行われる。例として、ゲストがDATオフ・ゲストである場合、そのIDが変換後のアドレスであるという意味で変換は使用可能である。しかし、ゲストがDATオン・ゲストである場合、1つまたは複数のゲスト変換テーブルをサーチして、対応する項目が有効であるかどうかを確認する。その項目が有効である場合、ゲスト・アドレス変換はDATオン・ゲストに使用可能である。ゲスト・アドレス変換が使用不能である場合、ステップ1008で、保護テスト命令は、この状況を示す条件コード((たとえば、CC=3)で完了する。
【0205】
ゲスト・アドレス変換が使用可能である場合、照会1010で、ホスト・アドレス変換が使用可能であるかどうかについて追加の判断が行われる。この判断は、ゲスト・アドレス変換が使用可能であるかどうかを判断することと同様に行われる。しかし、DATオン・ホストの場合、ゲスト変換テーブルの代わりに、DAT変換テーブルが使用される。ホスト・アドレス変換が使用不能である場合、ステップ1012で、ホスト割り込みが実行される。一例では、ゲストは終了し、この状況を管理するために呼び出されるホスト例外ルーチンが存在する。
【0206】
ゲスト・アドレス変換とホスト・アドレス変換の両方が使用可能である場合、照会1014で、ゲストおよびホストによって取り出しが許可されるかどうかについて追加の判断が行われる。一例では、DATテーブルにストアされた許可に基づいてこの判断が行われる。ゲストとホストの両方によって取り出しが許可されない場合、ステップ1016で、この命令は選択された条件コード(たとえば、CC=2)で完了する。ゲストとホストの両方によって取り出しが許可される場合、照会1018で、ホスト保護例外条件トラップが使用可能になっているかどうかについて追加の判断が行われる。一例では、ホスト保護例外条件は、本発明の一態様であり、ESOPが使用可能になっており、ECB.6がオンであるときに使用可能になる。ホスト保護例外条件トラップが使用可能になっていない場合、ステップ1020で、この命令は選択された条件コード(たとえば、CC=1)で完了する。使用可能になっているトラップがない場合、ゲストとホストとの間ならびにDATとその他のタイプのストア保護との間に特別な区別はまったく行われない。
【0207】
ホスト保護例外条件トラップが使用可能になっている場合、照会1022で、ゲスト設定によってストアが許可されるかどうかについて追加の判断が行われる。一例では、たとえば、変換テーブル(たとえば、ゲストDATテーブル)またはゲストによって設定された保護を含むものなどのその他のデータ構造あるいはその両方でゲストによって設定された設定をチェックすることにより、この判断が行われる。ストアが許可されない場合、ステップ1024で、この命令は選択された条件コード(たとえば、CC=1)で完了する。しかし、ゲストによってストアが許可される場合、照会1026で、ホスト書き込み保護がDAT以外のものであるかどうかについて追加の判断が行われる。そうである場合、ステップ1028で、この命令は指定の条件コード(たとえば、CC=1)で完了する。しかし、ホストDAT保護のみが存在する場合、ステップ1030で、ホスト・インターセプトが提供される。
【0208】
この時点で、ステップ1032で、ホストによってTPROT命令がシミュレートされる。すなわち、ある命令のゲスト実行によってホストに対するインターセプトが行われると、ゲスト・プログラムが(ホストによって)再始動されたときに、ゲストにはインターセプトされた命令が実行されたように見えるように、ホスト・プログラムはゲスト環境を変更する。シミュレーション中に、照会1040で、アクセスすべきストレージ内の領域(たとえば、ページ)がホストCOW方式の一部であるかどうかについて判断が行われる。このページがホストCOW方式の一部でなく、それに対する書き込みを行えないことを示す場合、ステップ1042で、選択された完了コード(たとえば、CC=1)が提供される。しかし、このページがホストCOW方式の一部である場合、ステップ1044で、TPROTは成功完了コード(たとえば、CC=0)を発行する。
【0209】
本発明の一態様によれば、この成功条件コードにより、ホストはそのDATテーブルの状態を変更しない。そのフレームは書き込み保護のままになる。ホストCOW方式では、ゲストが実際にフレームにストアすると、ホスト割り込みが(たとえば、ESOPを介して)行われ、ホスト例外ルーチンがCOWを実行することになる。この「偽」戻りコードは、それに対して決してストアされないブロックについてTPROTが発行されたときに、COWの実行が回避されるという点で、本発明の好ましい一実施形態の一態様の利点の1つである。
【0210】
一実施形態では、保護照会命令(たとえば、TPROT)が提供され、ホスト・テーブル内の保護設定が取り出し保護であるときに、ホスト割り込みが行われる。しかし、ゲスト・テーブル内の保護設定が取り出し保護であるときに、条件コードが返される。
【0211】
一例として、TPROT命令が解釈的に実行される場合、ならびにそのフレームがホスト・ビュー内(すなわち、ホスト・アドレス変換テーブル内)で書き込み保護され、ゲスト・ビュー内(すなわち、ゲスト・アドレス変換テーブル内)で書き込み保護されないという理由のみで、その命令がCC=1で完了すると思われる場合、ホスト・インターセプトが行われる。インターセプトを処理している間、ホストがコピー・オン・ライト(COW)ストレージ制御方式を実装している場合、ならびにそのフレームがゲスト・プログラムによって変更するために本当に使用可能である場合、コピーはそのフレームから構成され、ホスト・アドレス変換テーブルは更新され、ゲスト実行は続行されてTPROT命令がCC=0で完了することになる。
【0212】
本発明の1つまたは複数の態様は、たとえば、コンピュータ使用可能媒体を有する装置(たとえば、1つまたは複数のコンピュータ・プログラム)に含めることができる。この媒体は、たとえば、本発明の諸機能を提供し容易にするためのコンピュータ可読プログラム・コード手段またはロジック(たとえば、命令、コード、コマンドなど)をそこに有する。この装置は、1つのコンピュータ・システムの一部として含めるか、または別個に販売することができる。
【0213】
本発明の1つまたは複数の態様を取り入れる装置またはコンピュータ・プログラムの一例について、図16に関連して説明する。コンピュータ・プログラム1100は、たとえば、本発明の1つまたは複数の態様を提供し容易にするためのコンピュータ可読プログラム・コード手段またはロジック1104をそこに保管するために1つまたは複数のコンピュータ使用可能媒体1102を含む。この媒体は、電子、磁気、光学、電磁、赤外線、または半導体システム(あるいは装置またはデバイス)もしくは伝搬媒体にすることができる。コンピュータ可読媒体の例としては、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、ハード・ディスク(rigid magnetic disk)、および光ディスクを含む。光ディスクの例としては、読み取り専用コンパクト・ディスク(CD−ROM)、読み取り/書き込みコンパクト・ディスク(CD−R/W)、およびデジタル多目的ディスク(DVD)を含む。
【0214】
1つまたは複数のコンピュータ可読プログラム・コード手段またはロジックによって定義された複数のプログラム命令のシーケンスまたは1つまたは複数の相互に関連するモジュールからなる論理アセンブリは、本発明の1つまたは複数の態様のパフォーマンスを指図するものである。
【0215】
商用実装例
本明細書ではIBMによるz/Architectureについて言及しているが、本発明の1つまたは複数の態様は、ページング可能エンティティまたは同様の構成体を使用する他のマシン・アーキテクチャまたはコンピューティング環境あるいはその両方に同等に適用可能である。
【0216】
本明細書で開示されているTPROT命令、機構、およびその他のフォーマット、命令、属性の商用実装例は、ハードウェアで、またはたとえばアセンブリ言語で作成するオペレーティング・システム・プログラマなどのプログラマによって実装することができる。このようなプログラミング命令は、z/Architecture IBMサーバなどのコンピューティング環境でまたはその他のアーキテクチャを実行するマシンで固有に実行するための記憶媒体に保管することができる。このような命令は、既存のおよび今後のIBMサーバで、ならびにその他のマシンまたはメインフレーム上でエミュレートすることができる。これらは、一般に実行がエミュレーション・モードであるマシンで実行することができる。
【0217】
エミュレーション・モードでは、エミュレート中の特定の命令がデコードされ、サブルーチンまたはドライバにおけるように個々の命令を実装するためにサブルーチンが構築され、あるいは本明細書の説明を理解した後に当業者の技能の範囲内である特定のハードウェア用のドライバを提供するためにその他の何らかの技法が使用される。様々なソフトウェアおよびハードウェア・エミュレーション技法については、米国特許第5551013号、米国特許第5574873号、米国特許第5790825号、米国特許第6009261号、米国特許第6308255号、および米国特許第6463582号を含む多数の米国特許に記載されている。多くのその他の教示は、ターゲット・マシンのために設計された命令フォーマットのエミュレーションを達成するための様々な方法をさらに示している。
【0218】
上記に加えて、ゲスト・プロセッサおよび関連の処理に関する詳細については、2007年3月27日に発行されたFarrell他による「Method and Apparatus for Managing the Execution of a BroadcastInstruction on a Guest Processor」という発明の名称の米国特許第7197585号に記載されている。
【0219】
その他の変形例およびアーキテクチャ
様々な例および実施形態が本明細書に記載されているが、これらは例に過ぎず、多くの変形例が本発明の範囲内に含まれる。たとえば、本明細書に記載されているコンピューティング環境は一例に過ぎない。他のタイプの通信環境を含む、多くのその他の環境は、本発明の1つまたは複数の態様を含むことができる。たとえば、種々のタイプのプロセッサ、ゲスト、またはホスト、あるいはそれらの組み合わせを使用することができる。さらに、ページング可能ホストならびにページング可能ゲストは、本発明の1つまたは複数の態様を使用することができる。その上、その他のタイプのアーキテクチャは、本発明の1つまたは複数の態様を使用することができる。
【0220】
本発明の好ましい一実施形態の諸態様は、複数のゾーンを有する環境および非区分環境を含む、多くのタイプの環境にとって有益である。さらに、中央演算処理装置複合システムはまったく存在しない可能性があるが、複数のプロセッサがまとめて結合される可能性はある。本発明の様々な態様は、単一プロセッサ環境に適用可能である。
【0221】
さらに、本明細書に提供されるデータ構造および流れの例では、種々のフィールドの作成または使用あるいはその両方は、異なる数のビット、異なる順序のビット、本明細書に記載されているものより多いかまたは少ないビットあるいはそれとは異なるビット、より多いかまたは少ないフィールドあるいは異なるフィールド、異なる順序のフィールド、種々のサイズのフィールドなど、多くの変形例を含むことができる。この場合も、これらのフィールドは一例として提供されているに過ぎず、多くの変形例を含むことができる。さらに、本明細書に記載されているインジケータまたはコントロールあるいはその両方は、多種多様な形式のものにすることができる。たとえば、これらは、ビット以外の方法で表すことができる。さらに、本明細書ではアドレスという用語が使用されているが、任意の名称を使用することができる。
【0222】
本明細書で使用する「ページ」という用語は、仮想ストレージ(すなわち、仮想メモリ)の固定サイズまたは定義済みサイズの領域を指すために使用される。一例として、ホスト・ページはホスト仮想ストレージの一領域である。本明細書に提供されている例では1ページは4Kバイトであるが、ページのサイズは様々になる可能性がある。さらに、「フレーム」は、実ストレージまたは絶対ストレージ(すなわち、メモリ)の固定サイズまたは定義済みサイズの領域を指すために使用される。例として、ホスト・フレームはホスト実ストレージまたはホスト絶対ストレージの一領域であり、ゲスト・フレームはゲスト実ストレージまたはゲスト絶対ストレージの一領域である。ページング可能ゲストの場合、このゲスト実ストレージまたはゲスト絶対ストレージはホスト仮想ストレージによってマッピングされる。一般的であるように、ホスト仮想ストレージのページは、必要に応じて、ホスト実ストレージまたはホスト絶対ストレージのフレームによってバッキングされる。本明細書に提供されている例では1フレームは4Kバイトまたは1Mバイトであるが、フレームのサイズは様々になる可能性がある。しかし、その他の諸実施形態では、種々のサイズのページ、フレーム、セグメント、領域、またはブロックのストレージなどが存在する可能性がある。その上、その他のアーキテクチャでは、「ページ」および「セグメント」という用語は区別なく使用する場合もあれば、「ページ」という用語を使用して複数のサイズ単位の仮想ストレージに適用する場合もある。命令を入手するなどの「入手する」という用語は、取り出す、有する、受け取る、提供される、作成する、形成する、発行するなどを含むが、これらに限定されない。命令は、他のレジスタを参照するか、オペランド、フィールド、ロケーションなど、レジスタ以外を参照することができる。上記に代わる多くのその他のものも可能である。さらに、本明細書では、リスト、テーブルなどの用語が使用されているが、任意のタイプのデータ構造を使用することができる。たとえば、テーブルは他のデータ構造も含むことができる。この場合も、本明細書で言及しているものは例に過ぎない。
【0223】
さらに、プログラム・コードの保管または実行あるいはその両方に適したデータ処理システムであって、メモリ・エレメントに直接結合されるかまたはシステム・バスを介してメモリ・エレメントに間接的に結合される少なくとも1つのプロセッサを含むデータ処理システムが使用可能である。メモリ・エレメントとしては、たとえば、プログラム・コードを実際に実行している間に使用されるローカル・メモリ、バルク・ストレージ、および実行中にバルク・ストレージからコードを取り出さなければならない回数を低減するために少なくとも一部のプログラム・コードの一時記憶を提供するキャッシュ・メモリを含む。
【0224】
入出力またはI/O装置(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、およびその他のメモリ媒体などを含むが、これらに限定されない)は、直接または介在する入出力コントローラを介してシステムに結合することができる。また、データ処理システムが介在する私設網または公衆網を介して他のデータ処理システムあるいはリモート・プリンタまたはストレージ・デバイスに結合された状態になるように、ネットワーク・アダプタもシステムに結合することができる。モデム、ケーブル・モデム、およびイーサネット・カードは、使用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
【0225】
本発明の1つまたは複数の態様の諸機能は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの何らかの組み合わせで実装することができる。本発明の諸機能を実行するためにマシンによって実行可能な複数命令からなる少なくとも1つのプログラムを実施するマシンによって読み取り可能な少なくとも1つのプログラム・ストレージ・デバイスを提供することができる。
【0226】
本明細書に描写されている流れ図は例に過ぎない。本発明の好ましい一実施形態の精神を逸脱せずに、これらの図またはそこに記載されているステップ(または動作)に対する多くの変形例が存在する可能性がある。たとえば、これらのステップは異なる順序で実行することができ、いくつかのステップを追加、削除、または変更することもできる。これらの変形例はいずれも、請求された本発明の一部と見なされる。
【0227】
本明細書には諸実施形態が詳しく描写され記載されているが、本発明の好ましい一実施形態の精神を逸脱せずに様々な変更、追加、代用などを行うことができ、したがって、これらが特許請求の範囲に定義される本発明の範囲内のものであると見なされることは、当業者には自明なことになるであろう。
【技術分野】
【0001】
本発明は、一般に、ページング可能ゲスト(pageable guest)をサポートするコンピューティング環境に関し、特に、コンピューティング環境の複数のページング可能ゲストによるストレージの使用の管理に関する。
【背景技術】
【0002】
コンピューティング環境のストレージ(本明細書ではメモリとも言う)の少なくとも一部分は、典型的に、その環境内で実行される複数のプロセス間で共用される。このストレージの共用は、ストレージ内に保管されたデータの保全性を損なう危険性を増すものである。したがって、データ保全性を提供するために、特定のストレージ保護が適用される。このような保護は、ストレージを管理し、それにより、データを保護するために使用される。
【0003】
この保護は、解釈実行およびページング可能ゲストをサポートするものを含む、種々のタイプのコンピューティング環境で適用することができる。たとえば、ページング可能ゲスト環境では、複数のゲストが同じストレージを共用し、この場合も、データ保全性を提供し、ストレージを保護するために、保護が使用される。しかし、このような環境では、保護に関する情報は、ゲストまたはゲストを実行するホストあるいはその両方にとって極めて複雑なものになる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願第11/972725号
【特許文献2】米国特許出願第10/854990号
【特許文献3】米国特許出願公報US2007/0016904A1号
【特許文献4】米国特許第5551013号
【特許文献5】米国特許第5574873号
【特許文献6】米国特許第5790825号
【特許文献7】米国特許第6009261号
【特許文献8】米国特許第6308255号
【特許文献9】米国特許第6463582号
【特許文献10】米国特許第7197585号
【非特許文献】
【0005】
【非特許文献1】「z/Architecture Principlesof Operation」という題名のIBMの資料(2007年4月発行のIBM資料番号SA22−7832−05)
【非特許文献2】「z/VM: Running Guest Operating Systems」という題名のIBMの資料(2001年10月発行のIBM資料番号SC24−5997−02)
【非特許文献3】「z/VM: General Information Manual」という題名のIBMの資料(2001年10月発行のIBM資料番号GC24−5991−04)
【非特許文献4】「System/370 ExtendedArchitecture/Interpretive Execution」(1985年9月発行のIBM資料番号SA22−7095−01)
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記に基づいて、複数のページング可能ゲストによって使用されるストレージの管理を容易にする機能が必要である。一例では、ストレージ保護障害がホスト・レベル保護によるものであったかまたはゲスト・レベル保護によるものであったかを示す機能が必要である。
【課題を解決するための手段】
【0007】
ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするためのコンピュータ可読プログラム・コード・ロジックを有する少なくとも1つのコンピュータ使用可能媒体を含む装置(article of manufacture)の提供により、従来技術の短所が克服され、追加の利点が提供される。方法を実行するためにコンピュータによって実行するためのコンピュータ可読プログラム・コード・ロジックは、たとえば、ホスト・レベルの保護およびゲスト・レベルの保護によって保護されたストレージの一領域へのアクセスを試みるステップと、試行済みアクセスに応じて受け取られた障害がホスト・レベルの保護によるものであるかまたはゲスト・レベルの保護によるものであるかを判断するステップとを含む。
【0008】
また、命令を実行するためのコンピュータ・プログラム(computer program product)の提供により、従来技術の短所が克服され、追加の利点が提供される。このコンピュータ・プログラムは、処理回路によって読み取り可能であって、方法を実行するために処理回路によって実行するための命令を保管する記憶媒体を含む。この方法は、たとえば、保護テスト機械命令(test protection machine instruction)を入手するステップであって、その保護テスト機械命令が命令コード・フィールドと、第1オペランドと、第2オペランドとを含む、入手するステップと、ページング可能ゲストにより、入手した保護テスト機械命令を実行するステップであって、たとえば、1つまたは複数の保護例外について第1オペランドによって指定された位置をテストするステップを含み、そのテストするステップが第2オペランドのキーを使用し、保護例外の表示が、保護例外がホスト・レベル保護によるものであるかまたはゲスト・レベル保護によるものであるかという表示を含む、実行するステップとを含む。
【0009】
本発明の1つまたは複数の態様に関する方法、システム、およびコンピュータ・プログラムについても、本明細書に記載され、請求される。
【0010】
追加の特徴および利点は、本発明の技法により実現される。本発明のその他の諸実施形態および諸態様は、本明細書に詳細に記載され、請求された本発明の一部と見なされる。
【0011】
次に、本発明の好ましい一実施形態について、以下の図面に関連して、一例としてのみ説明する。
【図面の簡単な説明】
【0012】
【図1】本発明の1つまたは複数の態様を取り入れて使用するためのコンピューティング環境の一実施形態を示す図である。
【図2】本発明の1つまたは複数の態様を取り入れて使用するためのエミュレートされたコンピューティング環境の一実施形態を示す図である。
【図3】本発明の一態様により使用されるフレーム記述子(frame descriptor)の一例を示す図である。
【図4】本発明の一態様により使用される領域テーブル項目(region table entry)の一例を示す図である。
【図5】本発明の一態様により使用される領域テーブル項目の一例を示す図である。
【図6】本発明の一態様により使用される領域テーブル項目の一例を示す図である。
【図7】本発明の一態様により使用されるセグメント・テーブル項目(segment table entry)の一例を示す図である。
【図8】本発明の一態様により使用されるセグメント・テーブル項目の一例を示す図である。
【図9】本発明の一態様により使用されるページ・テーブル項目(page table entry)の一例を示す図である。
【図10】本発明の一態様により使用されるページ状況テーブル項目(page status table entry)の一例を示す図である。
【図11】本発明の一態様により、保護抑止(suppression on protection)機構および拡張保護抑止(enhancedsuppression on protection)機構をサポートする環境におけるゲスト処理ロジックの一実施形態を示す図である。
【図12】本発明の一態様により、保護抑止機構および拡張保護抑止機構をサポートする環境におけるゲスト処理ロジックの一実施形態を示す図である。
【図13】本発明の一態様により、保護テスト命令のフォーマットの一例を示す図である。
【図14】本発明の一態様により、保護テスト命令のロジックの一実施形態を示す図である。
【図15】本発明の一態様により、保護テスト命令のロジックの一実施形態を示す図である。
【図16】本発明の1つまたは複数の態様を取り入れるコンピュータ・プログラムの一実施形態を示す図である。
【発明を実施するための形態】
【0013】
本発明の一態様により、コンピューティング環境の複数のページング可能ゲストによって使用されるストレージの管理を容易にする機能が提供される。一例として、どのレベルの保護(ホストまたはゲスト)が障害条件(fault condition)を引き起こしたかという判断を可能にする拡張保護抑止機構が提供される。他の例として、照会に示されているストレージの領域に関する情報を詳述する照会命令(たとえば、保護テスト(TPROT:Test Protection)が提供される。
【0014】
本発明の1つまたは複数の態様を取り入れて使用するためのコンピューティング環境の一実施形態について、図1に関連して説明する。コンピューティング環境100は、たとえば、IBM(R)のz/Architecture(R)に基づくものである。z/Architectureについては、「z/Architecture Principles of Operation」という題名のIBMの資料(2007年4月発行のIBM資料番号SA22−7832−05)に記載されている。一例では、z/Architectureに基づくコンピューティング環境はIBMのeServer(TM)を含む。(IBM、z/Architecture、eServer、およびzSeriesは、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である。)本明細書で使用するその他の名称は、インターナショナル・ビジネス・マシーンズ社またはその他の企業の登録商標、商標、または製品名である可能性がある。
【0015】
一例として、コンピューティング環境100は、仮想計算機(VM:virtualmachine)サポートを提供する中央演算処理装置複合システム(CPC:central processorcomplex)102を含む。CPC102は、たとえば、1つまたは複数の仮想計算機104と、1つまたは複数の中央処理装置106と、少なくとも1つのホスト108(たとえば、ハイパーバイザなどの制御プログラム)と、入出力サブシステム110とを含み、そのそれぞれについて以下に説明する。この例では、仮想計算機およびホストはメモリに含まれている。
【0016】
CPCの仮想計算機サポートは、それぞれがLinuxなどのゲスト・オペレーティング・システム112をホストとして処理することができる多数の仮想計算機を操作するための能力を提供する(Linuxは、米国、その他の国、あるいはその両方におけるLinusTorvaldsの登録商標である)。それぞれの仮想計算機104は、個別システムとして機能することができる。すなわち、それぞれの仮想計算機は、独立してリセットすることができ、ゲスト・オペレーティング・システムをホストとして処理することができ、種々のプログラムで動作することができる。仮想計算機内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際はその一部分のみが使用可能である。
【0017】
この特定の例では、仮想計算機のモデルはV=Vモデルであり、仮想計算機の絶対メモリまたは実メモリは、実メモリまたは絶対メモリの代わりにホスト仮想メモリによってバッキングされる。それぞれの仮想計算機は仮想線形メモリ空間を有する。物理リソースはホスト108によって所有され、共用物理リソースは、それぞれの処理要求に応じるために必要に応じてホストによってゲスト・オペレーティング・システムにディスパッチされる。このV=V仮想計算機(すなわち、ページング可能ゲスト)モデルでは、典型的に、ゲストが多数であるために、ホストがハードウェア・リソースを単純に区分して、構成済みゲストにそのハードウェア・リソースを割り当てることが妨げられるので、ゲスト・オペレーティング・システムと物理的な共用マシン・リソースとの対話がホストによって制御されるものと想定している。V=Vモデルの1つまたは複数の態様については、「z/VM: Running GuestOperating Systems」という題名のIBMの資料(2001年10月発行のIBM資料番号SC24−5997−02)にさらに記載されている。
【0018】
中央処理装置106は、仮想計算機に割り当て可能な物理プロセッサ・リソースである。たとえば、仮想計算機104は1つまたは複数の論理プロセッサを含み、そのそれぞれは、仮想計算機に動的に割り振り可能な物理プロセッサ・リソース106のすべてまたは割り当て分(share)を表す。仮想計算機104はホスト108によって管理される。例として、ホストは、プロセッサ106上で実行されるマイクロコードで実装するか、またはマシン上で実行されるホスト・オペレーティング・システムの一部にすることができる。一例では、ホスト108は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるz/VM(R)などのVMハイパーバイザである(z/VMは、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である)。z/VMの一実施形態については、「z/VM: GeneralInformation Manual」という題名のIBMの資料(2001年10月発行のIBM資料番号GC24−5991−04)に記載されている。
【0019】
入出力サブシステム110は、デバイスとメイン・ストレージとの間の情報の流れを指図するものである。入出力サブシステムは、中央演算処理複合システム(central processing complex)の一部になるかまたはそれとは分離したものになる可能性があるという点で、中央演算処理複合システムに結合される。入出力サブシステムは、CPCに結合された入出力装置と直接通信するというタスクから中央処理装置を解放し、入出力処理と同時にデータ処理を続行できるようにする。
【0020】
一実施形態では、ホスト(たとえば、z/VM)およびプロセッサ(たとえば、System z(R))のハードウェア/ファームウェアは、ゲスト・オペレーティング・システムおよびホストとの間で制御を転送する必要なしにV=Vゲスト・オペレーティング・システム動作を処理するために、制御連携方式で相互に対話する。(System zは、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である。)ページング可能ストレージ・モード・ゲストについて命令を解釈実行できるようにする機構を介して、ゲスト動作をホスト介入なしに直接実行することができる。この機構は解釈実行開始(SIE:Start Interpretive Execution)という命令を提供し、この命令は、ゲスト(仮想計算機)状態および制御を保持する状態記述という制御ブロックを指定して、ホストが発行することができる。この命令はマシンを解釈実行モードにするものであって、そのモードでは、ホスト・アテンションを必要とする条件が発生するまでゲスト命令および割り込みが直接処理される。このような条件が発生すると、解釈実行が終了し、ホスト割り込みが提示されるかまたはSIE命令が検出された条件の詳細の保管を完了し、この後者のアクションはインターセプトという。解釈実行の一例については、「System/370 Extended Architecture/Interpretive Execution」(1985年9月発行のIBM資料番号SA22−7095−01)に記載されている。
【0021】
一例では、この解釈実行機構は、IBMによって提供されるプロセッサ・リソース/システム管理機構(TM)(PR/SM:Processor Resource/Systems Manager)の要素の1つである。これは、解釈実行開始(SIE)という単一命令を使用してプロセッサ上で仮想サーバ命令ストリームを実行できるようにする。SIE命令は、たとえば、zSeriesまたはS/390(R)処理装置複合システムを証明されたセキュア・ロジカル・パーティションに分割するためにサーバのロジカル・パーティショニング(LPAR:logical partitioning)サポートによって使用される。(プロセッサ・リソース/システム管理機構およびS/390は、米国、その他の国、あるいはその両方におけるインターナショナル・ビジネス・マシーンズ社の商標である。)(注:IBMのS/390 CMOS G6ファミリのプロセッサのPR/SM機構は、ITSEC E4レベルのセキュリティの認証を取得している。)
【0022】
サーバのタイム・スライスが消費されるまで、あるいはハードウェアが仮想化できない動作または制御プログラムがそれに関する制御を回復する動作をサーバが実行する必要が発生するまで、SIE命令は制御プログラムによってディスパッチされた仮想サーバを実行する。その時点で、SIE命令は終了し、制御は制御プログラムに戻り、制御プログラムはその命令をシミュレートするかまたは仮想サーバを強制待ち状態にする。完了すると、制御プログラムは、実行するよう仮想サーバをもう一度スケジュールし、サイクルがもう一度始まる。このようにして、中央演算処理装置(CPU)の全機能および最高速度が仮想サーバにとって使用可能になる。制御プログラムによる支援または妥当性検査を必要とする特権命令のみがインターセプトされる。このようなSIEインターセプトは、そう呼ばれるように、仮想サーバが実デバイス上で実行できる動作に対して制限を課すために制御プログラムによって使用される。
【0023】
その上、このメカニズムにより、制御プログラムは、多くの種類のハードウェアまたはソフトウェア障害の範囲を制限することができる。特定の仮想サーバにエラーを隔離できる場合、その仮想サーバのみに障害が発生し、他の仮想サーバで実行されるテストまたは生産作業に影響せずに、その動作を再試行するかまたはその仮想サーバを再初期化(リブート)することができる。制御プログラムは、仮想サーバで発生する障害が制御プログラムまたはその他の仮想サーバに影響しないように設計される。
【0024】
本発明の1つまたは複数の態様を取り入れるためのコンピューティング環境の他の例は図2に示されている。この例では、ホスト・アーキテクチャのホスト・コンピュータ202をエミュレートする、エミュレートされたホスト・コンピュータ・システム200が提供される。エミュレートされたホスト・コンピュータ・システム200では、ホスト・プロセッサ(CPU)204は、エミュレートされたホスト・プロセッサ(または仮想ホスト・プロセッサ)であり、ホスト・コンピュータ202のプロセッサによって使用されるものとは異なる固有命令セット・アーキテクチャを有するエミュレーション・プロセッサ206により実現される。エミュレートされたホスト・コンピュータ・システム200は、エミュレーション・プロセッサ206にとってアクセス可能なメモリ208を有する。この実施形態例では、メモリ208は、ホスト・コンピュータ・メモリ210の部分と、エミュレーション・ルーチン212の部分に区分されている。ホスト・コンピュータ・メモリ210は、ホスト・コンピュータ・アーキテクチャによりエミュレートされたホスト・コンピュータ202のプログラムにとって使用可能であり、図1の同様の名前の要素に類似して、ホストまたはハイパーバイザ214と、ゲスト・オペレーティング・システム218が実行される1つまたは複数の仮想計算機216の両方を含むことができる。
【0025】
エミュレーション・プロセッサ206は、エミュレートされたプロセッサ204のもの以外のアーキテクチャの設計済み命令セットの固有命令を実行する。この固有命令は、たとえば、エミュレーション・ルーチン・メモリ212から入手される。エミュレーション・プロセッサ206は、アクセスされたホスト命令の機能をエミュレートするための固有命令実行ルーチンを決定するために、アクセスされたホスト命令(複数も可)をデコードすることができるシーケンスおよびアクセス/デコード・ルーチンで入手した1つまたは複数の命令を使用することにより、ホスト・コンピュータ・メモリ210内のプログラムから実行するためにホスト命令にアクセスすることができる。このようなホスト命令の1つは、たとえば、解釈実行開始(SIE)命令にすることができ、それによりホストは仮想計算機内でゲスト・プログラムを実行しようと努める。エミュレーション・ルーチン212は、この命令のサポートおよびこのSIE命令の定義により仮想計算機216内でゲスト命令のシーケンスを実行するためのサポートを含むことができる。
【0026】
ホスト・コンピュータ・システム202のアーキテクチャ用に定義されたその他の機構は、たとえば、汎用レジスタ、制御レジスタ、動的アドレス変換、入出力サブシステム・サポートおよびプロセッサ・キャッシュなどの機構を含む、設計済み機構ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンのパフォーマンスを改善するために、エミュレーション・プロセッサ206内で使用可能な機能(仮想アドレスの汎用レジスタおよび動的変換など)を利用することもできる。また、ホスト・コンピュータ202の機能をエミュレートする際にプロセッサ206を支援するために、特殊ハードウェアおよびオフロード・エンジンも設けることができる。
【0027】
上記のもの、汎用コンピュータ、データ処理システム、その他を含む、多くのタイプのコンピューティング環境は、仮想メモリ方式を使用して編成されたストレージを使用する。仮想メモリ・システムは、ブロック(またはページ)と呼ばれる単位でストレージを編成する。これらのブロックは、高速の1次メモリと、1つまたは複数のより大きく通常はより低速の2次、3次などのストレージ・ユニットとの間を移動する。ブロックの移動(スワッピングと呼ばれる場合が多い)は、コンピューティング環境内で実行されるアプリケーションまたはプロセスにとって透過的なものであり、アプリケーションまたはプロセスがそれぞれ無制限の量のストレージを有するように動作できるようにする。
【0028】
汎用仮想メモリにより、コンピューティング環境内で実行されるアプリケーションまたはプロセスあるいはその両方が無制限の量のメモリを自由に有するように動作することができるが、実際には、特定のアプリケーションまたはプロセスにとって使用可能なストレージの量は、コンピューティング環境内のストレージの量によって制限され、そのストレージを共用するプログラムであって、同時に実行されているプログラムの数によってさらに制限される。仮想メモリ方式は、メモリの実際の物理アドレスをアプリケーション・プログラムから隠すものである。アプリケーション・プログラムは、論理アドレス(たとえば、仮想アドレス)を使用して自分のメモリ空間にアクセスし、次にその論理アドレスがコンピューティング環境によって物理アドレスに変換される。
【0029】
ストレージ参照中に仮想アドレスを対応する実アドレスまたは絶対アドレスに変換するプロセスは、動的アドレス変換(DAT)という。仮想アドレスは、1次仮想アドレス、2次仮想アドレス、アクセス・レジスタ(AR)指定仮想アドレス、またはホーム仮想アドレスにすることができる。これらのアドレスは、1次アドレス・スペース制御要素、2次アドレス・スペース制御要素、AR指定アドレス・スペース制御要素、またはホーム・アドレス・スペース制御要素によってそれぞれ変換される。適切なアドレス・スペース制御要素を選択した後、変換プロセスは、4つのタイプの仮想アドレスのいずれについても同じである。DATは、変換パラメータとして、5〜2レベルのテーブル(領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、およびページ・テーブル)を使用することができる。拡張動的アドレス変換(EDAT)プロセスは、一部または全部の変換についてページ・テーブルを省略することにより、5〜1レベルのテーブルを使用することができる。特定のアドレス・スペースに関する最高レベル・テーブルの指定(起点および長さ)はアドレス・スペース制御要素と呼ばれ、制御レジスタ内でDATによって使用するために検出されるか、またはアクセス・レジスタが指定した通りに検出される。代わって、アドレス・スペースに関するアドレス・スペース制御要素は実スペース指定にすることができ、これは、DATが、いかなるテーブルも使用せずに、単に仮想アドレスを実アドレスとして処理することにより、仮想アドレスを変換することであることを示す。
【0030】
DATは、異なる時期に、異なる制御レジスタ内のアドレス・スペース制御要素またはアクセス・レジスタによって指定されたアドレス・スペース制御要素を使用する。その選択は、現行PSW(プログラム状況ワード)に指定されたプログラム指定変換モードによって決定される。1次スペース・モード、2次スペース・モード、アクセス・レジスタ・モード、およびホーム・スペース・モードという4つの変換モードが使用可能である。変換モードに応じて、異なるアドレス・スペースがアドレス可能である。
【0031】
仮想アドレスに対する拡張DATの結果は、実アドレスまたは絶対アドレスのいずれかになる可能性がある。それが実アドレスである場合、プレフィックス変換動作を実行して対応する絶対アドレスを入手し、その絶対アドレスを使用してメモリを参照することができる。プレフィックス変換は、各CPUごとに0〜8191という範囲の実アドレス(一例として)を絶対ストレージ内の異なる領域に割り当てる能力を提供し、その結果、メイン・ストレージを共用する2つ以上のCPUが、特に割り込みの処理において、最小限の干渉で同時に動作することができる。プレフィックス変換により、0〜8191という範囲内の実アドレスは、そのCPUに関するプレフィックス・レジスタのビット位置0〜50内の値によって識別された8Kバイトの絶対アドレスの領域(プレフィックス域)に1対1で対応し、プレフィックス・レジスタ内の値によって識別された実アドレスの領域は、絶対アドレス0〜8191に1対1で対応する。残りの実アドレスは対応する絶対アドレスと同じである。この変換により、各CPUは、最初の8Kバイトと、他のCPUのプレフィックス・レジスタによって指定された位置を含む、メイン・ストレージのすべてにアクセスすることができる。
【0032】
動的アドレス変換、プレフィックス変換、および拡張DATについては、2008年1月11日に出願されたGainey他による「Enhanced Dynamic Address Translation with Frame Management Function」という発明の名称の米国特許出願第11/972725号(IBM整理番号POU920070313US1)により詳細に記載されている。
【0033】
本発明の1つまたは複数の態様の理解を容易にするために、以下に記載する様々な用語およびデータ構造(たとえば、テーブル、リスト)を参照する。
【0034】
フレーム記述子
フレーム記述子は、ホスト・ページ・フレーム、すなわち、仮想メモリの一部分(ページ)を保持できる実メモリの一領域(フレーム)を記述するものである。これは、ホストによって割り振られ、割り振り解除され、初期化されるものであり、ホスト・ページ管理支援(Host Page Management Assist)機能(たとえば、2004年5月27日に出願されたBlandy他による「Facilitating Management of Storage of a Pageable Mode VirtualEnvironment Absent Intervention of a Host of the Environment」という発明の名称の米国特許出願第10/854990号に記載されている)によって更新することができる。
【0035】
一例では、フレーム記述子300(図3)は、たとえば、32バイト境界上のホスト・ホーム・スペース仮想ストレージ内に常駐する32バイト・ブロックであり、例として以下のフィールドを含む。
【0036】
(a)次フレーム記述子アドレス302: 一例では、このフィールドの内容は、右に5個の0が付加された状態で、リスト上の次フレーム記述子のホスト・ホーム・スペース仮想アドレスを指定する。0という値は、そのフレーム記述子がリスト上の最後のものであることを示す。
【0037】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。
【0038】
(b)ページ・フレーム実アドレスまたはページ・テーブル項目(PTE)コピー304: フレーム記述子が使用可能フレーム記述子リスト(AFDL)内にあるときに、このフィールドの内容は、右に12個の0が付加された状態で、ホスト・ストレージを提供するための割り振りに使用可能なホスト・フレームの最初のバイト(バイト0)のホスト実アドレスを指定する。
【0039】
フレーム記述子が処理済みフレーム記述子リスト(PFDL)内にあるときに、このフィールドは、ホスト・ページが解決される前に現れるので、ページ・テーブル項目アドレス・フィールドによって指定されたPTEのコピーを含む。
【0040】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。
【0041】
(c)ページ・テーブル項目アドレス306: フレーム記述子が処理済みフレーム記述子リスト上にあるときに、このフィールドの内容は、右に3個の0が付加された状態で、ホスト仮想ページに関するページ・テーブル項目のホスト実アドレスまたはホスト絶対アドレスを指定する。
【0042】
このフィールドは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。
【0043】
複数のフレーム記述子を相互にリンクして、使用可能フレーム記述子リスト(AFDL)または処理済みフレーム記述子リスト(PFDL)などのリストを形成することができる。フレーム記述子はこの2つのリストのうちの1つに存在する。各CPUごとにこれらのリストが1対ずつ個別に用意される。1つのCPUに関するAFDLおよびPFDLの起点は、そのCPUのプレフィックス域内のフィールドにより指定される。
【0044】
使用可能フレーム記述子リスト(AFDL)は、ホストがクリアしたホスト・フレームであって、ホスト・ページへの割り振りに使用可能になっているホスト・フレームを記述する、フレーム記述子のリストである。AFDLは、指定のホスト実アドレスのAFDL起点(AFDLO)によって指定される。
【0045】
AFDLOの内容は、右に5個の0が付加された状態で、AFDL上の最初のフレーム記述子のホスト・ホーム・スペース仮想アドレスを指定する。0という値は、このリストが空であることを示す。
【0046】
AFDLOは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。AFDLOは、一実施形態では、非インターロック更新動作により変更される。
【0047】
処理済みフレーム記述子リスト(PFDL)は、ゲスト解釈中にホスト・ページ無効条件を解決するために使用されたホスト・フレームを記述する、フレーム記述子のリストである。PFDLによって記述されたホスト・フレームは、ゲスト用のストレージを提供するホスト・ページに割り当てられている。PFDLは、指定のホスト実アドレスのPFDL起点(PFDLO)によって指定される。PFDLOの内容は、右に5個の0が付加された状態で、PFDL上の最初のフレーム記述子のホスト・ホーム・スペース仮想アドレスを指定する。0という値は、このリストが空であることを示す。
【0048】
PFDLOは、ホストによって初期化され、ホストによってまたはホスト・ページ管理支援機能によって変更することができる。PFDLOは、一実施形態では、リストの保全性を維持するダブルワード同時インターロック更新動作により変更される。
【0049】
領域テーブル項目
「領域テーブル項目」という用語は、領域第1テーブル項目、領域第2テーブル項目、または領域第3テーブル項目を示す。ある項目を含むテーブルのレベル(第1、第2、または第3)は、その項目内のテーブル・タイプ(TT)ビットによって識別される。領域第1テーブル、領域第2テーブル、および領域第3テーブルから取り出された項目のフォーマットの例は図4〜図6に描写されている。特に、図4は領域第1テーブル項目400のフォーマットの一実施形態を描写し、図5は領域第2テーブル項目430のフォーマットの一実施形態を描写し、図6は領域第3テーブル項目460のフォーマットの一実施形態を描写している。
【0050】
例として、3つのレベルの領域テーブル項目内のフィールドは以下のように割り振られている。
【0051】
領域第2テーブル起点402、領域第3テーブル起点432、およびセグメント・テーブル起点462: 領域第1テーブル項目は領域第2テーブル起点を含む。領域第2テーブル項目は領域第3テーブル起点を含む。領域第3テーブル項目はセグメント・テーブル起点を含む。以下の記述は3つの起点のそれぞれに適用される。一例では、この項目のビット0〜51は、右に12個の0が付加された状態で、次の下位レベル・テーブルの始まりを指定する64ビットのアドレスを形成する。
【0052】
DAT保護ビット(P)406、436、466: 拡張DATが適用されるときに、ビット54は、変換時に使用されるその後の領域テーブル項目、セグメント・テーブル項目、および適用可能であればページ・テーブル項目のそれぞれのDAT保護ビットとのORが取られるものとして処理される。したがって、このビットが1であるときに、DAT保護は、領域テーブル項目によって指定された1つまたは複数の領域全体に適用される。拡張DAT機構がインストールされていないときに、またはその機構がインストールされているが、拡張DAT使用可能化制御が0であるときに、領域テーブル項目のビット54は無視される。
【0053】
領域第2テーブル・オフセット408、領域第3テーブル・オフセット438、およびセグメント・テーブル・オフセット(TF)468: 領域第1テーブル項目は領域第2テーブル・オフセットを含む。領域第2テーブル項目は領域第3テーブル・オフセットを含む。領域第3テーブル項目はセグメント・テーブル・オフセットを含む。以下の記述は3つのオフセットのそれぞれに適用される。この項目のビット56および57は、テーブルの始まりで欠落している、次の下位レベル・テーブルの一部分の長さを指定し、すなわち、これらのビットは、次の下位レベル・テーブル内に実際に存在する最初の項目の位置を指定する。これらのビットは、欠落部分の長さを4096バイト単位で指定し、その結果、欠落部分の長さが512項目の倍数単位で可変のものになる。4096バイト単位の欠落部分の長さはTF値に等しい。次の下位レベル・テーブルにより変換すべき仮想アドレスの一部分(RSX、RTX、またはSX)がそのテーブル内に実際に存在する項目を指定するかどうかを設定するために、長さフィールドであるビット62および63に併せてオフセット・フィールドの内容を使用する。
【0054】
領域無効ビット(I)410、440、470: 1つの領域は、たとえば、2ギガバイトの仮想アドレスからなる連続範囲である。領域第1テーブル項目または領域第2テーブル項目内のビット58は、その項目に関連する1組の領域が使用可能であるかどうかを制御する。領域第3テーブル項目内のビット58は、その項目に関連する単一領域が使用可能であるかどうかを制御する。ビット58が0であるときに、領域テーブル項目を使用することにより、アドレス変換が続行される。このビットが1であるときに、その項目を変換に使用することはできない。
【0055】
テーブル・タイプ・ビット(TT)412、422、472: 領域第1テーブル項目、領域第2テーブル項目、および領域第3テーブル項目のビット60および61は、以下のように、その項目を含むテーブルのレベルを識別する。ビット60および61は、変換時に使用中のアドレス・スペース制御要素であるテーブル指定のタイプと、これまで使用してきたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別し、そうでなければ、変換指定例外が認識される。一例として、以下の表はテーブル・タイプ・ビットを示している。
【表1】
【0056】
領域第2テーブル長414、領域第3テーブル長444、およびセグメント・テーブル長474(TL): 領域第1テーブル項目は領域第2テーブル長を含む。領域第2テーブル項目は領域第3テーブル長を含む。領域第3テーブル項目はセグメント・テーブル長を含む。以下の記述は3つの長さのそれぞれに適用される。この項目のビット62および63は、次の下位レベル・テーブルの長さを4096バイト単位で指定し、その結果、テーブルの長さが512項目の倍数単位で可変のものになる。4096バイト単位の次の下位レベル・テーブルの長さはTL値より1大きい。次の下位レベル・テーブルにより変換すべき仮想アドレスの一部分(RSX、RTX、またはSX)がそのテーブル内に実際に存在する項目を指定するかどうかを設定するために、オフセット・フィールドであるビット56および57に併せて長さフィールドの内容を使用する。
【0057】
領域テーブル項目の他のビット位置はいずれも、考えられる今後の拡張のために予約されており、0を含んでいなければならず、そうでなければ、プログラムは今後、矛盾なく動作することができない。拡張DATが適用されるときに、テーブル項目が無効であっても、領域テーブル項目の予約ビット位置は0を含んでいなければならない。
【0058】
セグメント・テーブル項目
拡張DATが適用されないときに、または拡張DATが適用され、セグメント・テーブル項目(STE)フォーマット制御であるセグメント・テーブル項目のビット53が0であるときに、セグメント・テーブルから取り出された項目は図7に描写されているフォーマット(たとえば、フォーマット0)を有する。拡張DATが適用され、STEフォーマット制御が1であるときに、セグメント・テーブルから取り出された項目は、たとえば、図8に描写されているフォーマット(たとえば、フォーマット1)を有する。
【0059】
一例として、フォーマット0セグメント・テーブル項目500(図7)は以下のフィールドを含む。
【0060】
ページ・テーブル起点502: 拡張DATが適用されないときに、または拡張DATが適用されるが、STEフォーマット制御であるセグメント・テーブル項目のビット53が0であるときに、ビット0〜52は、右に11個の0が付加された状態で、ページ・テーブルの始まりを指定する64ビットのアドレスを形成する。そのアドレスが実アドレスであるかまたは絶対アドレスであるかは予測不能である。
【0061】
STEフォーマット制御(FC)506: 拡張DATが適用されるときに、ビット53は以下のようにセグメント・テーブル項目用のフォーマット制御である。
・ FCビットが0であるときに、この項目のビット0〜52はページ・テーブル起点を形成し、ビット55は予約される。
・ FCビットが1であるときに、この項目のビット0〜43はセグメント・フレーム絶対アドレスを形成し、ビット47はACCF妥当性制御であり、ビット48〜51はアクセス制御ビットであり、ビット52は取り出し保護ビットであり、ビット55は変更記録オーバーライドである。拡張DATが適用されないときに、ビット53は無視される。
【0062】
DAT保護ビット(P)508: ビット54は、1であるときに、DAT保護がセグメント全体に適用されることを示す。
・ 拡張DATが適用されないときに、ビット54は、変換時に使用されるページ・テーブル項目内のDAT保護ビットとのORが取られるものとして処理される。
・ 拡張DATが適用されるときに、変換時に使用される任意およびすべての領域テーブル項目内のDAT保護ビットは、セグメント・テーブル項目内のDAT保護ビットとのORが取られるものとして処理され、STEフォーマット制御が0であるときに、STE内のDAT保護ビットは、ページ・テーブル項目内のDAT保護ビットとのORが取られるものとしてさらに処理される。
【0063】
セグメント無効ビット(I)510: ビット58は、セグメント・テーブル項目に関連するセグメントが使用可能であるかどうかを制御する。
・ このビットが0であるときに、セグメント・テーブル項目を使用することにより、アドレス変換が続行される。
・ このビットが1であるときに、セグメント・テーブル項目を変換に使用することはできない。
【0064】
共通セグメント・ビット(C)512: ビット59は、セグメント・テーブル項目の変換索引バッファ(TLB:translation lookaside buffer)コピーの使用を制御する。拡張DATが適用されないときに、または拡張DATが適用されるが、フォーマット制御が0であるときに、ビット59はセグメント・テーブル項目によって指定されたページ・テーブルのTLBコピーの使用も制御する。
・ 0は専用セグメント(private segment)を識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、そのセグメント・テーブル項目が常駐するセグメント・テーブルを指定するセグメント・テーブル起点に関連する場合にのみ使用することができる。
・ 1は共通セグメントを識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、異なるセグメント・テーブルが指定されている場合でも、セグメント索引に対応するアドレスを変換するために使用し続けることができる。
【0065】
しかし、専用スペース制御であるビット55が変換時に使用されるアドレス・スペース制御要素内で1である場合、またはそのアドレス・スペース制御要素が実スペース指定である場合、共通セグメントに関するセグメント・テーブル項目および任意のページ・テーブルのTLBコピーは使用不能である。使用中のアドレス・スペース制御要素内で専用スペース制御が1であるときに、セグメント・テーブル項目が変換中にストレージから取り出される場合、共通セグメント・ビットは0になるはずであり、そうでなければ、変換指定例外が認識される。
【0066】
テーブル・タイプ・ビット(TT)514: セグメント・テーブル項目のビット60および61は、その項目を含むテーブルのレベルを識別するために2進数の00になる。領域テーブル項目またはセグメント・テーブル項目内のビット60および61として考えられる値の意味は以下の通りである。
【表2】
【0067】
ビット60および61は、変換時に使用中のアドレス・スペース制御要素であるテーブル指定のタイプと、これまで使用してきたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別するはずであり、そうでなければ、変換指定例外が認識される。
【0068】
セグメント・テーブル項目の他のビット位置はいずれも、考えられる今後の拡張のために予約されており、0を含んでいなければならず、そうでなければ、プログラムは今後、矛盾なく動作することができない。拡張DATが適用されるときに、テーブル項目が無効であっても、セグメント・テーブル項目の予約ビット位置は0を含んでいなければならない。
【0069】
一例として、フォーマット1セグメント・テーブル項目550(図8)は以下のフィールドを含む。
【0070】
セグメント・フレーム絶対アドレス(SFAA)552: 拡張DATが適用され、STEフォーマット制御が1であるときに、この項目のビット0〜43は、右に20個の0が付加された状態で、セグメントの64ビットの絶対アドレスを形成する。
【0071】
ACCF妥当性制御(AV)556: 拡張DATが適用され、STEフォーマット制御が1であるときに、ビット47はアクセス制御ビットおよび取り出し保護ビット(ACCF)の妥当性制御である。AV制御が0であるときに、セグメント・テーブル項目のビット48〜52は無視される。AV制御が1であるときに、ビット48〜52は以下に記載するように使用される。
【0072】
アクセス制御ビット(ACC)558: 拡張DATが適用され、STEフォーマット制御が1であり、AV制御が1であるときに、セグメント・テーブル項目のビット48〜51は、そのアドレスに適用される任意のキー制御アクセス・チェックに使用可能なアクセス制御ビットを含む。
【0073】
取り出し保護ビット(F)560: 拡張DATが適用され、STEフォーマット制御が1であり、AV制御が1であるときに、セグメント・テーブル項目のビット52は、そのアドレスに適用される任意のキー制御アクセス・チェックに使用可能な取り出し保護ビットを含む。
【0074】
STEフォーマット制御(FC)562: 拡張DATが適用されるときに、ビット53は以下のようにセグメント・テーブル項目用のフォーマット制御である。
・ FCビットが0であるときに、この項目のビット0〜52はページ・テーブル起点を形成し、ビット55は予約される。
・ FCビットが1であるときに、この項目のビット0〜43はセグメント・フレーム絶対アドレスを形成し、ビット47はアクセス制御ビットおよび取り出し保護ビットのACCF妥当性制御であり、ビット48〜51はアクセス制御ビットであり、ビット52は取り出し保護ビットであり、ビット55は変更記録オーバーライドである。拡張DATが適用されないときに、ビット53は無視される。
【0075】
DAT保護ビット(P)564: ビット54は、1であるときに、DAT保護がセグメント全体に適用されることを示す。
・ 拡張DATが適用されないときに、ビット54は、変換時に使用されるページ・テーブル項目内のDAT保護ビットとのORが取られるものとして処理される。
・ 拡張DATが適用されるときに、変換時に使用される任意およびすべての領域テーブル項目内のDAT保護ビットは、セグメント・テーブル項目内のDAT保護ビットとのORが取られるものとして処理され、STEフォーマット制御が0であるときに、STE内のDAT保護ビットは、ページ・テーブル項目内のDAT保護ビットとのORが取られるものとしてさらに処理される。
【0076】
変更記録オーバーライド(CO)566: 拡張DATが適用され、STEフォーマットが1であるときに、セグメント・テーブル項目のビット55はそのセグメントに関する変更記録オーバーライドである。拡張DATが適用されないときに、または拡張DATが適用されるが、STEフォーマット制御が0であるときに、セグメント・テーブル項目のビット55は無視される。
【0077】
セグメント無効ビット(I)568: ビット58は、セグメント・テーブル項目に関連するセグメントが使用可能であるかどうかを制御する。
・ このビットが0であるときに、セグメント・テーブル項目を使用することにより、アドレス変換が続行される。
・ このビットが1であるときに、セグメント・テーブル項目を変換に使用することはできない。
【0078】
共通セグメント・ビット(C)570: ビット59は、セグメント・テーブル項目の変換索引バッファ(TLB)コピーの使用を制御する。拡張DATが適用されないときに、または拡張DATが適用されるが、フォーマット制御が0であるときに、ビット59はセグメント・テーブル項目によって指定されたページ・テーブルのTLBコピーの使用も制御する。
・ 0は専用セグメントを識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、そのセグメント・テーブル項目が常駐するセグメント・テーブルを指定するセグメント・テーブル起点に関連する場合にのみ使用することができる。
・ 1は共通セグメントを識別し、この場合、セグメント・テーブル項目およびそれが指定する任意のページ・テーブルは、異なるセグメント・テーブルが指定されている場合でも、セグメント索引に対応するアドレスを変換するために使用し続けることができる。
【0079】
しかし、専用スペース制御であるビット55が変換時に使用されるアドレス・スペース制御要素内で1である場合、またはそのアドレス・スペース制御要素が実スペース指定である場合、共通セグメントに関するセグメント・テーブル項目および任意のページ・テーブルのTLBコピーは使用不能である。使用中のアドレス・スペース制御要素内で専用スペース制御が1であるときに、セグメント・テーブル項目が変換中にストレージから取り出される場合、共通セグメント・ビットは0になるはずであり、そうでなければ、変換指定例外が認識される。
【0080】
テーブル・タイプ・ビット(TT)572: セグメント・テーブル項目のビット60および61は、その項目を含むテーブルのレベルを識別するために2進数の00になる。領域テーブル項目またはセグメント・テーブル項目内のビット60および61として考えられる値の意味は以下の通りである。
【表3】
【0081】
ビット60および61は、変換時に使用中のアドレス・スペース制御要素であるテーブル指定のタイプと、これまで使用してきたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別するはずであり、そうでなければ、変換指定例外が認識される。
【0082】
セグメント・テーブル項目の他のビット位置はいずれも、考えられる今後の拡張のために予約されており、0を含んでいなければならず、そうでなければ、プログラムは今後、矛盾なく動作することができない。拡張DATが適用されるときに、テーブル項目が無効であっても、セグメント・テーブル項目の予約ビット位置は0を含んでいなければならない。
【0083】
ページ・テーブル項目
ゲスト・ブロック(たとえば、単一ストレージ・キー(storage key)および協調メモリ管理(CMM:collaborative memory management)状態がそれに関連付けられている絶対メモリ内の領域(たとえば、4Kバイト))に関する状態情報は、たとえば、ゲストのメモリを記述するホスト・ページ・テーブル(PT)およびページ状況テーブル(PGST)に維持される。これらのテーブルは、たとえば、以下により詳細に記載する、1つまたは複数のページ・テーブル項目(PTE)および1つまたは複数のページ状況テーブル項目(PGSTE)をそれぞれ含む。
【0084】
ページ・テーブル項目600の一例について、図9に関連して説明する。一実施形態では、ページ・テーブル項目内のフィールドは以下のように割り振られている。
【0085】
ページ・フレーム実アドレス(PFRA)602: ビット0〜51は、実(この場合はホストの実)ストレージ・アドレスの最左端ビットを提供する。これらのビットが、右側の仮想アドレスの12ビットのバイト・インデックス・フィールドと連結されると、64ビットの実アドレスが得られる。
【0086】
ページ無効ビット(I)604: ビット53は、ページ・テーブル項目に関連するページが使用可能であるかどうかを制御する。このビットが0であるときに、ページ・テーブル項目を使用することにより、アドレス変換が続行される。さらに、ホストとゲストとの協調メモリ管理(CMM)に関しては、ホスト状態はr(常駐(resident)、すなわち、ゲスト・ブロックはホスト・フレーム内に存在する)になる。このビットが1であるときに、ページ・テーブル項目は変換に使用されず、CMMホスト状態は、PGSTE.Zによって決定されるように、p(保存済み(preserved)、すなわち、ゲスト・ブロックはホスト・フレーム内に存在しないが、ホストによって何らかの補助ストレージに保存されている)になるか、またはz(論理ゼロ(logically zero)、すなわち、ゲスト・ブロックはホスト・フレーム内に存在せず、ゲスト・ブロックの内容は0になることが分かっている)になる。
【0087】
DAT保護ビット(P)606: ビット54は、そのページ内でストア・アクセス(store access)を行うことができるかどうかを制御する。この保護メカニズムは、キー制御保護(key controlled protection)メカニズムおよび低アドレス保護(lowaddress protection)メカニズムに加えて行われるものである。このビットは取り出しアクセス(fetchaccess)には何も影響を及ぼさない。このビットが0である場合、以下の追加の制約を条件として、そのページへのストアが許可される。
・ DAT保護ビットは、変換時に使用されるセグメント・テーブル項目では0になる。
・ 拡張DATが適用されるときに、DAT保護ビットは、変換時に使用されるすべての領域テーブル項目で0になる。
【0088】
DAT保護ビットが1である場合、ストアは認可されない。優先順位の高い例外条件がまったく存在しない場合、DAT保護ビットが1であるときにストアしようと試みると、保護例外が認識される。セグメント・テーブル項目内のDAT保護ビットは、DAT保護がそのページに適用されるかどうかを判断するときに、ビット54とのORが取られるものとして処理される。拡張DATが適用されるときに、変換時に使用される任意の領域テーブル項目内のDAT保護ビットも、DAT保護が適用されるかどうかを判断するときに、ビット54とのORが取られるものとして処理される。
【0089】
キー制御保護、低アドレス保護、およびアクセス・リスト制御保護(access-list-controlledprotection)などのその他の保護メカニズムは、DAT保護とは無関係に適用することができ、アクセスを禁止することもできる。
【0090】
変更記録オーバーライド(CO)608: 拡張DATが適用されないときに、ページ・テーブル項目のビット55は0を含まないはずであり、そうでなければ、アドレス変換にその項目を使用する命令の実行の一部として、変換指定例外が認識される。拡張DATが適用され、STEフォーマット制御が0であるときに、ページ・テーブル項目のビット55はそのページに関する変更記録オーバーライドである。
【0091】
上記に加えて、一例では、その項目のビット位置52は0を含むはずであり、そうでなければ、アドレス変換にその項目を使用する命令の実行の一部として、変換指定例外が認識される。ビット位置56〜63は割り当てられず、無視される。
【0092】
ページ状況テーブル項目の一例について、図10に関連して説明する。ページ状況テーブル項目700は、たとえば、以下のものを含む。
(a)Acc702: アクセス制御キー
(b)FP704: 取り出し保護インジケータ
(c)ページ制御インターロック(PCL)706: これは、予約済みとマークされているPGSTE状況領域およびPGSTEビットを除き、ページ・テーブル項目(PTE)および対応するPGSTEへの更新を直列化するためのインターロック制御である。
(d)HR708: ホスト参照バックアップ・インジケータ
(e)HC710: ホスト変更バックアップ・インジケータ
(f)GR712: ゲスト参照バックアップ・インジケータ
(g)GC714: ゲスト変更バックアップ・インジケータ
(h)状況716: ホスト・プログラム用として意図されている。
(i)ページ内容論理ゼロ・インジケータ(Z)718: このビットは、対応するPTEページ無効(PTE.I)ビットが1であるときに意味がある。
Zが1であるときに、このPGSTEおよび対応するPTEによって記述されたページの内容は0であると見なされる。そのページの前の内容はいずれも保存される必要はなく、0のページで置き換えることができる。
Zが0であるときに、PGSTEおよび対応するPTEによって記述されたページの内容は0であると見なされない。そのページの内容はホストによって保存される。
Zビットが1であり、対応するPTE.Iビットが1であるときに、CMMホスト状態はz(論理ゼロ)になる。これは、ページ内容をホストによってまたはホスト・ページ管理支援機構の一機能によって置き換えることができることを意味する。
Zビットが1であり、対応するPTE.Iビットが1であり、ページ内容が置き換えられるときに、そのページは、0に設定されているフレームにそれを関連付けることによって置き換えなければならない。
Zビットが0であり、PTE無効ビットが1であるときに、CMMホスト状態はp(保存済み)になる。
(j)ページ・クラス(PC)720: 0であるときに、PGSTEおよび対応するPTEによって記述されたページはクラス0ページであり、クラス0ページ用のデルタ・ピン固定ページ・カウント・アレイ(DPPCA:delta pinned page count array)は、そのページに関するピン固定(pinning)動作およびピン解除(unpinning)動作をカウントするために使用される。1であるときに、PGSTEおよび対応するPTEによって記述されたページはクラス1ページであり、クラス1ページ用のDPPCAは、そのページに関するピン固定動作およびピン解除動作をカウントするために使用される。
(k)ピン・カウント・オーバーフロー(PCO)722: 1であるときに、ピン・カウント・フィールドはオーバーフロー状態になっている。この場合、全ピン・カウントは、マシンによってアクセスされない他のデータ構造にホストによって保持される。0であるときに、ピン・カウント・フィールドはオーバーフロー状態になっていない。
(l)処理済みフレーム記述子リスト上のフレーム記述子(FPL)724: 1であるときに、PGSTEおよび対応するPTEによって記述されたページに関するフレーム記述子は処理済みフレーム記述子リスト内にある。フレーム記述子は、そのページに関するHPMA解決ホスト・ページ機能によって使用されたホスト・フレームを識別する。
(m)ページ内容置き換え要求(PCR)726: 1であるときに、PGSTEおよび対応するPTEによって表されるページについてHPMA解決ホスト・ページ機能が呼び出されたときに、ページ内容置き換えが要求された。
(n)使用状態(US)728: ホストとゲストとの協調メモリ管理の場合、このフィールドは、ゲスト状態がS(安定(stable)、すなわち、安定ブロックの内容はゲストによって設定されたものに等しいままになる)になるか、U(未使用(unused)、すなわち、未使用ブロックの内容はゲストにとって意味がない)になるか、V(揮発性(volatile)、すなわち、揮発性ブロックの内容はゲストにとって意味があるが、ホストはそのブロックの内容をいつでも廃棄し、バッキング・フレームを再利用(reclaim)することができる)になるか、またはP(潜在的揮発性(potentiallyvolatile)、すなわち、潜在的揮発性ブロックの内容はゲストにとって意味があるが、ゲスト変更履歴に基づいて、ホストは、そのブロックの内容を廃棄できるかまたは保存しなければならない)になるかを示す。
(o)状況730: ホスト・プログラム用として意図されている。
(p)ピン・カウント732: PGSTEおよび対応するPTEによって表されるホスト仮想ページの内容がPTEのページ・フレーム実アドレス・フィールドによって指定された実ホスト・フレーム内にピン固定されるかどうかを示すために使用される符号なし2進整数カウント。このフィールドの値が0より大きいかまたはページ・カウント・オーバーフロー(PCO)ビットが1であるときに、対応するページはピン固定されていると見なされる。このフィールドの値が0であり、PCOビットが0であるときに、対応するページはピン固定されていると見なされない。
ホストまたはCPUのいずれかによってページがピン固定された時点で、このフィールドは1だけ増分されるはずである。ホストまたはCPUのいずれかによってページがピン解除された時点で、このフィールドは1だけ減分されるはずである。
ピン・カウント・フィールドの値が0より大きいかまたはPCOビットが1であるときに、対応するPTE.I(ページ無効)ビットは0になるはずである。そうでなければ、予測不能な結果が発生する可能性がある。
ページがピン固定されている間、ホスト・プログラムは、PTEまたはセグメント・テーブル項目(STE)内のPTEページ・フレーム実アドレス(PFRA)フィールドの内容、PTEページ無効(I)ビットの設定、またはページ保護(P)ビットの設定を変更してはならない。そうでなければ、予測不能な結果が発生する可能性がある。
【0093】
ページ・テーブル項目およびページ・テーブルならびにセグメント・テーブル項目に関する詳細については、「z/Architecture Principles of Operation」という題名のIBMの資料(2007年4月発行のIBM資料番号SA22−7832−05)に記載されている。その上、PGSTEに関する詳細については、2004年5月27日に出願されたBlandy他による「Facilitating Management of Storage of a Pageable Mode VirtualEnvironment Absent Intervention of a Host of the Environment」という発明の名称の米国特許出願第10/854990号、および2007年1月18日に発行されたAdlung他による「Facilitating Processing Within Computing Environment SupportingPageable Guests」という発明の名称の米国特許出願公報US2007/0016904A1号に記載されている。
【0094】
一実施形態では、ページ・テーブルあたり1つのページ状況テーブルが存在し、ページ状況テーブルはページ・テーブルと同じサイズであり、ページ状況テーブル項目はページ・テーブル項目と同じサイズであり、ページ状況テーブルはページ・テーブルから固定変位(ホスト実メモリ内)に位置している。したがって、各ページ・テーブル項目とページ状況テーブル項目との間には1対1の対応が存在する。あるページのホストの仮想アドレスを考慮すると、マシンとホストはいずれも、ゲスト・ブロックに関するページ・テーブル項目に対応するページ状況テーブル項目を容易に突き止めることができる。
【0095】
コピー・オン・ライト(Copy-On-Write)
時には、メモリの各部分がコピーされるはずである。このコピーは、ユーザ開始であるか、またはオペレーティング・システムによって開始することができる。従来のシステムは、フラッシュ・コピーに遅延コピー技法(lazy copy technique)を使用する場合が多く、コピーすべきストレージには読み取り専用(read-only)という状況が割り当てられるが、実際のコピーは後ほどまで据え置かれる。オリジナルまたはコピーへの書き込みを試みる場合、メモリはその時点でコピーされ、オリジナルとコピーの両方に読み取り書き込み(read-write)という入出力(I/O)状況が与えられる。このようにして、コピーは直ちに行われたように見えるが、実際のコピーは後ほど(たとえば、考えられる最も遅い時間)まで据え置かれる。書き込みがまったく行われない場合、コピーもまったく行われない。このため、この方法はコピー・オン・ライト(COW)または仮想コピーと呼ばれる。
【0096】
一般に、単一書き込みの結果、2回の書き込み動作が行われるので、コピー・オン・ライト動作は計算上、高価なものである。すなわち、既存のデータ・ブロックは古い物理ブロックから新しい物理ブロックにコピーされ、実際の更新/書き込み動作は新しい物理ブロックについて実行される。
【0097】
命令実行
z/Architectureでは、たとえば、命令実行は、完了(completion)、ヌル文字化(nullification)、抑止(suppression)、終了(termination)、および部分完了(partial completion)という5通りのうちの1つで終了し、そのそれぞれについて以下に説明する。
【0098】
命令実行の完了は、その命令の定義時に要求された通りの結果を提供する。命令実行の完了後に割り込みが行われると、旧PSW内の命令アドレスによって次の順次命令が指定される。
【0099】
命令実行のヌル文字化は、命令の実行がヌル文字化された後で割り込みが行われると、次の順次命令の代わりにその実行がヌル文字化された命令(または、適宜、実行(Execute)命令)が旧PSW内の命令アドレスによって指定されることを除いて、以下に記載する抑止と同じ効果を有する。
【0100】
命令実行の抑止により、命令は「ノーオペレーション(nooperation)」を指定した場合のように実行される。条件コードを含む、任意の結果フィールドの内容は変更されない。抑止後の割り込み時に旧PSW内の命令アドレスによって次の順次命令が指定される。
【0101】
命令実行の終了により、その命令によって変更する予定の任意のフィールドの内容は予測不能なものになる。動作は、指定された結果フィールドの内容の全部または一部を置き換える場合もあれば、いずれも置き換えない場合もあり、このような変更が命令によって要求されている場合は条件コードを変更することができる。マシン・チェック条件によって割り込みが引き起こされない限り、PSW内の命令アドレスの妥当性、割り込みコード、および命令長コードは影響されず、マシンの動作の状態も他のいずれの方法でも影響されない。終了後の割り込み時に旧PSW内の命令アドレスによって次の順次命令が指定される。
【0102】
命令実行の部分完了は割り込み可能命令について行われる。
【0103】
抑止またはヌル文字化が行われるときに命令の実行はノーオペレーションとして処理されるが、何らかの命令に関連する暗黙追跡アクションの結果として、ストアを実行することができる。
【0104】
保護
エラーを含むかまたは無許可であるプログラムによる破壊または誤用からメイン・ストレージの内容を保護するために、キー制御保護、アクセス・リスト制御保護、ページ保護、および低アドレス保護という4つの保護機構が提供される。これらの保護機構は独立して適用され、いずれの機構もアクセスを禁止しないときに、メイン・ストレージへのアクセスが許可される。それぞれの保護機構について以下に説明する。
【0105】
キー制御保護: キー制御保護は、不適切なストアまたは不適切なストアおよび取り出しの両方に対する保護を提供するが、不適切な取り出しのみに対する保護は提供しない。
【0106】
キー制御保護がストレージ・アクセスに適用される場合、ストレージ・キーがストレージ・アクセスに関する要求に関連するアクセス・キーと一致するときにストアが許可され、両方のキーが一致するときにまたはストレージ・キーの取り出し保護ビットが0であるときに取り出しが許可される。ストレージ・キーの4つのアクセス制御ビットがアクセス・キーに等しいときにまたはアクセス・キーが0であるときに、両方のキーは一致すると言われる。保護アクションについては以下の表に要約する。
【表4】
【0107】
ストレージへのアクセスがCPUによって開始され、キー制御保護が適用されるときに、2次への移動(Move To Secondary)および宛先キーによる移動(Move WithDestination Key)などの特定の命令の第1オペランドについて、1次への移動(Move ToPrimary)、キーによる移動(Move With Key)、およびソース・キーによる移動(Move With Source Key)などの命令の第2オペランドについて、さらに、たとえば、ページ移動(Move Page)命令の第1オペランドまたは第2オペランドのいずれかについて、汎用レジスタ内にアクセス・キーが指定されることを除いて、PSWキーはアクセス・キーになる。PSWキーは、たとえば、現行PSWのビット位置8〜11を占有する。ストレージへのアクセスがチャネル・プログラム実行のためであるときに、そのチャネル・プログラムに関連するサブチャネル・キーがアクセス・キーになる。チャネル・プログラム用のサブチャネル・キーは操作要求ブロック(ORB:operation-request block)に指定される。チャネル・サブシステム・モニターのために測定ブロックへのアクセスが行われるときに、測定ブロック・キーがアクセス・キーになる。測定ブロック・キーは、たとえば、チャネル・モニター設定(Set Channel Monitor)命令によって指定される。
【0108】
キー制御保護のためにCPUアクセスが禁止されると、その命令の実行は終了され、保護例外のためのプログラム割り込みが行われる。しかし、操作単位または命令の実行は抑止することができる。チャネル・プログラム・アクセスが禁止されると、始動機能は終了し、保護チェック条件が関連の割り込み応答ブロック(IRB:interruption-response block)に示される。測定ブロック・アクセスが禁止されると、入出力測定ブロック保護チェック条件が示される。キー制御保護のためにストア・アクセスが禁止されると、保護位置の内容は変わらない。取り出しアクセスが禁止されると、保護情報はレジスタ内にロードされないか、他のストレージ・ロケーションに移動するか、または入出力装置に提供される。禁止された命令取り出しの場合、その命令は抑止され、任意の命令長コードが示される。
【0109】
キー制御保護は、CPUが問題プログラム状態にあるかまたは監視プログラム状態にあるかとは無関係であり、いくつかの例外を除いて、実行中のCPU命令またはチャネル・コマンド・ワードのタイプに依存しない。その他の指定がある場合を除き、プログラムによって明示的に指定されたストレージ・ロケーションであって、情報をストアするかまたは取り出すためにCPUによって使用されるストレージ・ロケーションへのアクセスは、キー制御保護の対象になる。ストレージ保護オーバーライド制御が1であり、ストレージ・キーの4つのアクセス制御ビットの値が、たとえば、9であるときに、キー制御保護は適用されない。取り出しのためのキー制御保護は、有効アドレスおよび専用スペース制御次第で、取り出し保護オーバーライド制御が1であるときに、適用される場合もあれば、適用されない場合もある。ストレージ保護オーバーライド制御および取り出し保護オーバーライド制御は、チャネル・サブシステムによって行われるストレージ参照に影響しない。たとえば、ブロック・テスト(Test Block)命令の第2オペランドへのアクセスは、キー制御保護の対象にならない。入出力測定ブロックにアクセスするためにチャネル・サブシステムによって行われるストレージ・アクセス、あるいはCCW、IDAW(間接データ・アドレス・ワード)、またはMIDAW(変更間接データ・アドレス・ワード)を取り出すためにまたはCCWの実行中に指定されたデータ領域にアクセスするためにチャネル・プログラムによって行われるストレージ・アクセスは、キー制御保護の対象になる。しかし、CCW、IDAW、MIDAW、または出力データが事前取り出しされる場合、CCW、IDAW、またはMIDAWが制御を取る予定になるまで、あるいはそのデータが書き込まれる予定になるまで、保護チェックは示されない。以下のようなシーケンスのいずれかについて暗黙に行われるアクセスにはキー制御保護は適用されない。
・ 割り込み
・ CPUログアウト
・ アクセス・レジスタ変換、動的アドレス変換、PC番号変換、ASN変換、またはASN許可に関するテーブル項目の取り出し
・ 追跡
・ ストア状況機能
・ 保留割り込みテスト(Test Pending Interruption)が0というオペランド・アドレスを有するときに実位置184〜191へのストア
・ 初期プログラム・ローディング
【0110】
同様に、情報を変更または表示するためにオペレータ機構を介して開始されたアクセスには保護は適用されない。しかし、プログラムがこれらの位置を明示的に指定する場合、それらは保護の対象になる。
【0111】
キー制御保護の対象になるアクセスは、ストレージ保護オーバーライド制御によって実施される可能性がある。一例として、制御レジスタ0のビット39はストレージ保護オーバーライド制御である。このビットが1であるときに、ストレージ保護オーバーライドはアクティブである。このビットが0であるときに、ストレージ保護オーバーライドは非アクティブである。ストレージ保護オーバーライドがアクティブである場合、たとえば、9という関連ストレージ・キー値を有するストレージ・ロケーションについて、キー制御ストレージ保護は無視される。ストレージ保護オーバーライドが非アクティブである場合、9というストレージ・キー値について、特殊なアクションは何も行われない。ストレージ保護オーバーライドは、命令取り出し、ならびにそのオペランド・アドレスが論理、仮想、または実である命令の取り出しアクセスおよびストア・アクセスに適用される。これは、チャネル・プログラム実行のために、またはチャネル・サブシステム・モニターのために行われるアクセスには適用されない。ストレージ保護オーバーライドは、キー制御保護の対象にならないアクセスには何も影響を及ぼさない。
【0112】
信頼できるサブシステムに併せておそらく誤ったアプリケーション・プログラムが実行される場合に信頼性を改善するためにストレージ保護オーバーライドを使用することができるが、アプリケーション・プログラムはそのサブシステムによってアクセスされたストレージの一部分のみにアクセスする必要がある。これを実行するための技法は以下の通りである。アプリケーション・プログラムによってアクセスされたストレージにはストレージ・キー9が与えられる。サブシステムのみによってアクセスされたストレージには、他の何らかの非ゼロのストレージ・キー、たとえば、キー8が与えられる。アプリケーションはPSWキー9によって実行される。サブシステムは(この例では)PSWキー8によって実行される。その結果、サブシステムはキー8とキー9の両方のストレージにアクセスすることができ、アプリケーション・プログラムはキー9のストレージのみにアクセスすることができる。
【0113】
ストレージ保護オーバーライドは、CPUによって行われたストレージへのアクセスに影響し、保護テストによって設定された結果にも影響する。しかし、問題プログラム状態であるときに、特定のキー値を使用できるかどうかを判断するためにPSWキー・マスクをテストする命令は、ストレージ保護オーバーライドがアクティブであるかどうかによって影響されない。このような命令としては、とりわけ、キーによる移動(Move With Key)およびアドレスによるPSWキーの設定(Set PSW KeyFrom Address)を含む。これらの命令が問題プログラム状態で9というアクセス・キーを使用できるようにするために、PSWキー・マスクのビット9は1になるはずである。
【0114】
ストレージ保護オーバーライド制御に加えて、キー制御保護の対象になるアクセスは、取り出し保護オーバーライド制御によって実施される可能性がある。一例として、制御レジスタ0のビット38は取り出し保護オーバーライド制御である。このビットが1であるときに、たとえば、有効アドレス0〜2047の位置については取り出し保護は無視される。有効アドレスは、動的アドレス変換またはプレフィックス変換による任意の変換の前に存在するアドレスである。しかし、有効アドレスが動的アドレス変換の対象であり、専用スペース制御、たとえば、ビット55が変換時に使用されるアドレス・スペース制御要素内で1である場合、取り出し保護は無視されない。取り出し保護オーバーライドは、命令取り出し、ならびにそのオペランド・アドレスが論理、仮想、または実である命令の取り出しアクセスに適用される。これは、チャネル・プログラム実行のために、またはチャネル・サブシステム・モニターのために行われる取り出しアクセスには適用されない。このビットが0に設定されると、有効アドレス0〜2047の位置の取り出し保護は、これらの位置に関連するストレージ・キーの取り出し保護ビットの状態によって決定される。取り出し保護オーバーライドは、キー制御保護の対象にならないアクセスには何も影響を及ぼさない。
【0115】
取り出し保護オーバーライド制御は、たとえば、アドレス2048〜4095の位置の取り出し保護を可能にするが、アドレス0〜2047の位置の取り出し保護はまったく行わない。
【0116】
アクセス・リスト制御保護
アクセス・レジスタ・モードでは、取り出し専用ビットであるアクセス・リスト項目のビット6は、アクセス・リスト項目によって指定されたアドレス・スペースに対し、どのタイプのオペランド参照が許可されるかを制御する。ある参照のアクセス・レジスタ変換部分でその項目が使用され、ビット6が0であるときに、取り出しタイプおよびストア・タイプの両方の参照が許可され、ビット6が1であるときに、取り出しタイプ参照が許可され、ストアしようという試みによって、保護例外が認識され、命令の実行が抑止される。取り出し専用ビットはALBアクセス・リスト項目に含まれる。メイン・ストレージ内のアクセス・リスト項目内の取り出し専用ビットに対する変更は、保護例外が認識されるかどうかに対して影響を及ぼす場合でも、必ずしも直ちに影響を及ぼすわけではない。しかし、このビットに対するこの変更は、たとえば、ALBをパージするALBパージ(Purge ALB)命令または比較交換パージ(Compare And Swap AndPurge)命令が実行された直後に影響を及ぼす。以下に記載する保護テスト命令は、CPUがアクセス・レジスタ・モードにあるときにアクセス・リスト制御保護を考慮に入れる。アクセス・リスト制御保護に違反すると、一例として、条件コード1が設定されるが、例外として、たとえば、条件コード2または3に関する条件が満足されたときにこれらの条件コードが設定されるのを妨げない。
【0117】
アクセス・リスト制御保護に違反すると、抑止が行われる。他の保護タイプのいずれかに違反すると、終了が行われる可能性がある。
【0118】
ページ保護
ページ保護機構は、それぞれのページ・テーブル項目およびセグメント・テーブル項目内のページ保護ビットを使用することにより、仮想ストレージへのアクセスを制御する。これは、不適切なストアに対する保護を提供する。ページ保護ビットであるページ・テーブル項目のビット54は、対応する4Kバイト・ページへのストアが許可されるかどうかを制御する。このビットが0であるときに、取り出しとストアの両方が許可され、このビットが1であるときに、取り出しのみが許可される。保護ページにストアしようという試みが行われると、そのページの内容は変わらず、操作単位または命令の実行は抑止され、保護のためのプログラム割り込みが行われる。ページ保護ビットであるセグメント・テーブル項目のビット54は、セグメント・テーブル項目によって指定されたページ・テーブル内の各項目のページ保護ビット位置内にORされるものとして処理される。したがって、セグメント・テーブル項目ページ保護ビットが1であるときに、その結果は、指定されたページ・テーブル内の各項目でページ保護ビットが1である場合のようになる。ページ保護は、仮想アドレスを使用するストア・タイプ参照に適用される。
【0119】
低アドレス保護
低アドレス保護機構は、割り込み処理中にCPUによって使用されるメイン・ストレージ情報の破壊に対する保護を提供する。これは、たとえば、0〜511の範囲および4096〜4607の範囲内の有効アドレス(第1および第2の4Kバイトの有効アドレス・ブロックの最初の512バイト)によって命令がストアすることを禁止することによって達成される。この範囲基準は、動的アドレス変換またはプレフィックス変換によってアドレスのアドレス変換が行われる場合にその前に適用される。しかし、この範囲基準が適用されないと、その結果、有効アドレスが動的アドレス変換の対象になり、専用スペース制御であるビット55が変換時に使用されるアドレス・スペース制御要素内で1である場合に、低アドレス保護が適用されない。使用すべきアドレス・スペース制御要素が他のタイプの例外のために使用不能である場合に、低アドレス保護は適用されない。低アドレス保護は、低アドレス保護制御ビットである制御レジスタ0のビット35の制御下にある。このビットが0であるときに、低アドレス保護はオフであり、このビットが1であるときに、低アドレス保護はオンである。
【0120】
低アドレス保護のためにアクセスが禁止された場合、保護位置の内容は変わらず、命令の実行は終了され、保護例外のためのプログラム割り込みが行われる。しかし、操作単位または命令の実行は抑止することができる。たとえば、0〜511の範囲または4096〜4607の範囲内の有効アドレスを使用することによりストアしようというプログラムによる試みは、低アドレス保護の対象になる。低アドレス保護は、そのオペランド・アドレスが論理、仮想、または実である命令のストア・アクセスに適用される。また、低アドレス保護はトレース・テーブルにも適用される。低アドレス保護は、割り込み、CPUログアウト、たとえば、保留割り込みテストによる実位置184〜191への入出力割り込みコードのストア、初期プログラム・ローディングおよびストア状況機能などのシーケンスのためにCPUまたはチャネル・サブシステムによって行われるアクセスには適用されず、入出力データ転送中のデータ・ストアにも適用されない。しかし、これらの位置のいずれかにおいてプログラムによって行われる明示的ストアは低アドレス保護の対象になる。
【0121】
低アドレス保護およびキー制御保護は同じストア・アクセスに適用されるが、例外として、低アドレス保護はチャネル・サブシステムによって実行されるストアには適用されないのに対して、キー制御保護は適用され、キー制御保護は追跡、ブロック・テストの第2オペランド、または特にリンケージ・スタックについて操作する命令には適用されないのに対して、低アドレス保護は適用される。
【0122】
取り出し保護オーバーライドおよび低アドレス保護は、それに関する専用スペース制御がアドレス・スペース制御要素内で1になるアドレス・スペースには適用されないので、アドレス・スペース内の0〜2047および4097〜4607という位置は、そのスペース内の他の位置と同じように使用可能である。
【0123】
保護抑止
一部の命令定義は、いずれかのタイプの保護による保護例外が認識された場合に動作が抑止されることを指定する。この指定が欠けていると、アクセス・リスト制御保護またはDAT保護(ページ保護とも呼ばれる)による保護例外が認識された場合に命令の実行は抑止され、低アドレス保護またはキー制御保護による保護例外が認識された場合に命令の実行は抑止されるかまたは終了される可能性がある。
【0124】
保護抑止機能により、制御プログラムは、例外がDAT保護によるものであるかどうかを判断するために、保護例外を引き起こした仮想アドレスの変換時に使用されるセグメント・テーブル項目、ページ・テーブル項目、拡張DATが適用されるときは領域テーブル項目を突き止めることができる。これは、たとえば、POSIXフォーク機能(またはコピー・オン・ライト機能)の実装のために使用される。また、保護抑止機能により、制御プログラムは、アドレスが仮想ではなかった場合または例外がアクセス・リスト制御保護によるものであった場合にセグメント・テーブル項目およびページ・テーブル項目を突き止めることを回避することもできる。拡張DATが適用されるときは、制御プログラムは、アドレスが仮想ではなかった場合または例外がアクセス・リスト制御保護によるものであった場合に領域テーブル項目を突き止めることを回避することもできる。
【0125】
保護例外によるプログラム割り込み中に、たとえば、実位置168〜175のビット位置61に1または0がストアされる。一例として、z/Architectureでは、ビット位置61に1をストアすることは、以下のことを示している。
・ その間に例外が認識された操作単位または命令実行は抑止されていた。
・ プログラムの旧PSW内のDATモード・ビットによって示されているように、動的アドレス変換(DAT)がオンであった場合、例外を引き起こした有効アドレスは、DATによって変換すべきであった1である。(有効アドレスは、DATまたはプレフィックス変換による任意の変換の前に存在するアドレスである。)DATがオンであった場合にビット61は0に設定されるが、有効アドレスは実アドレスであるのでDATによって変換されないはずであった。DATがオフであった場合、保護例外は、DAT保護またはアクセス・リスト制御保護によるものであった可能性はない。
・ 実位置168〜175のビット位置0〜51は、例外を引き起こした有効アドレスのビット0〜51を含む。DATがオンであって、有効アドレスがDATによって変換されるはずであったことを示していた場合、実位置168〜175のビット位置62および63ならびに実位置160は、ページ変換例外によるプログラム割り込み中にストアされるものと同じ情報を含み、この情報は保護アドレスを含むアドレス・スペースを識別する。また、実位置168〜175のビット60は、保護例外がアクセス・リスト制御保護によるものではなかった場合に0になり、その例外がアクセス・リスト制御保護によるものであった場合に1になる。ビット位置60の1は、その例外がDAT保護によるものではなかったことを示す。DATがオフであった場合、実位置168〜175のビット位置60、62、および63の内容、ならびに実位置160の内容は予測不能である。実位置168〜175のビット位置52〜59の内容は予測不能である。
【0126】
ビット61が0であることは、その操作が抑止されたかまたは終了されたことと、実位置168〜175の残りのビット位置ならびに実位置160の内容は予測不能である。
【0127】
保護例外がアクセス・リスト制御保護またはDAT保護によるものであった場合、ビット61は1に設定される。保護例外が低アドレス保護またはキー制御保護によるものであった場合、ビット61は1に設定することができる。
【0128】
保護例外条件がアクセス・リスト制御保護またはDAT保護のいずれかによって存在するが、低アドレス保護またはキー制御保護のいずれかによっても存在する場合、ビット61が0に設定されるか1に設定されるかは予測不能である。
【0129】
保護抑止機能は、重複アドレス・スペースを作成させるPOSIXフォーク機能を実行する際に有用である。以下の考察は、拡張DATが適用されない場合、または拡張DATが適用されるが、セグメント・テーブル項目内のフォーマット制御(FC)ビットが0である場合に関するものである。フォークが行われると、そのページ内のストアが試行されない限り、制御プログラムにより、異なるアドレス・スペースの同じページが、実ストレージの単一ページ・フレームにマッピングされる。次に、特定のアドレス・スペースでストアが試行されると、制御プログラムは、そのアドレス・スペース内のページに固有のページ・フレームを割り当て、そのページの内容を新しいページ・フレームにコピーする。この最後のアクションはコピー・オン・ライト機能と呼ばれることもある。ページ内でストアしようという試みを検出するために、制御プログラムはそのページに関するページ・テーブル項目内でDAT保護ビットを1に設定する。指定のセグメント内のどこかにストアしようという試みを検出するために、制御プログラムは初めにセグメント・テーブル項目内でDAT保護ビットを1に設定することができる。拡張DATが適用され、セグメント・テーブル項目内のフォーマット制御(FC)ビットが1である場合、同様の技法を使用して、絶対ストレージの単一セグメント・フレームをマッピングすることができる。
【0130】
DATがオンであったときに実位置168〜175でビット61が1であることは、保護例外を引き起こしたアドレスが仮想であることを示す。この表示により、例外が低アドレス保護またはキー制御保護とは対照的にDAT保護によるものであったかどうかを判断するために、アクセス・レジスタ変換および動的アドレス変換のプログラム化形式を実行することができる。
【0131】
保護抑止の結果については以下の表に要約する。
【表5】
【0132】
拡張保護抑止
拡張保護抑止機能がインストールされると、保護例外中に何が発生する可能性があるかについて以下の追加の制約が発生する。これらの制約は、元の保護抑止機能に定義されているどの制約よりも優先される。
【0133】
保護例外によるプログラム割り込み中に、実位置168〜175のビット61は、認識される保護例外のタイプを示す。保護例外がアクセス・リスト制御保護またはDAT保護によるものであった場合、ビット61は1に設定される。保護例外が低アドレス保護またはキー制御保護によるものであった場合、ビット61は0に設定される。
【0134】
保護例外条件がアクセス・リスト制御保護またはDAT保護のいずれかによって存在するが、低アドレス保護またはキー制御保護のいずれかによっても存在する場合、どの例外が認識されるかならびにビット61が0に設定されるか1に設定されるかは予測不能である。しかし、どの例外が認識されるかは予測不能であるが、以下の表に要約するように、認識される例外は一貫性のある動作を発生する。
【表6】
【0135】
SOPおよびESOP機構は、ネイティブ・アーキテクチャのために、ならびに解釈実行モードで提供される。
【0136】
z/Architectureでは、解釈実行モードでの保護抑止は、例外制御(たとえば、ECA.18)が1であるときに保護例外を処理するために使用され、解釈実行モードでの拡張保護抑止は、例外制御(たとえば、ECA.18)が1であり、拡張保護抑止機構がインストールされたときの動作のために使用される。この例では、ECA.18は保護インターセプト制御であり、一般に、ECA内のビットが0である場合、関連条件の結果としてインターセプトが行われ、ECA内のビットが1である場合、関連機能の解釈実行がホストによって試行される。
【0137】
さらに、一例では、実行制御(たとえば、ECB.6)はホスト保護割り込み制御である。一般に、ECB内のビットが0である場合、関連条件の結果としてインターセプトが行われ、ECB内のビットが1である場合、関連機能の解釈実行が試行される。拡張実行モードでの拡張保護抑止は、ECB.6が1であり、拡張保護抑止機構がインストールされたときのホスト・ページ保護例外の処理に使用される。
【0138】
保護例外の結果、ECA.18、ECB.6、およびIC.2(インターセプト制御)の値次第で、プログラム割り込みインターセプトが行われる可能性がある。そうでなければ、対応するインターセプト制御であるビット1またはビット2が1に設定されるタイプである場合、プログラム割り込みにより、たとえば、インターセプト・コード08のインターセプトが行われる。一例では、インターセプト・コード08のインターセプトは必須である。たとえば、アドレス指定、指定、および特殊操作という例外によって引き起こされるゲスト・プログラム割り込みについて、インターセプト・コード08がストアされる。
【0139】
ゲスト・アドレス指定例外は、無効ゲストまたはホスト・アドレスによるものである可能性がある。
【0140】
ゲスト保護例外は、ゲスト保護条件、ホスト・ページ保護条件、または所与のモード(たとえば、MCDS−−複数制御データ・スペース)ではホスト・アクセス・リスト制御保護条件によるものである可能性がある。
【0141】
割り込みのパラメータは状態記述に入れられる。
【0142】
様々な解釈実行モードでは、ゲスト・ストレージへのゲスト・アドレスは、実マシン・ストレージ・キーを使用して、固有に定義されたキー制御ストレージ保護の対象になる。また、ゲスト・アクセスは、ゲスト低アドレス保護、ゲスト・ページ保護、ゲスト取り出し保護オーバーライド、およびゲスト・アクセス・リスト制御保護の対象になる。ホスト低アドレス保護は、ゲスト・ストレージへのゲスト参照に適用されない。
【0143】
加えて、ホスト・ページ保護は、MCDSモードでのホスト・アクセス・リスト制御保護のように、ページング可能ストレージ・モード・ゲスト参照に適用される。
【0144】
一般に、許可されないストアにより、保護例外が認識され、その結果、ゲストまたはホスト・プログラム割り込みが行われる。しかし、ゲスト・プレフィックス域の最初の4Kバイト・ブロックへのストア・アクセスは、解釈実行モードに入るときにチェックされ、このテスト中に検出された任意のアクセス例外の結果として、妥当性インターセプトが行われる(たとえば、16進の0037であるVIRコード)。その後、解釈実行中に、ゲスト・プレフィックス域の最初の4Kバイト・ブロックへのアクセス時に検出されたアクセス例外条件は、通常通りに提示される場合もあれば、その結果として妥当性インターセプトが行われる場合もある。ゲスト割り込みを実行するためのゲスト・プレフィックス域への参照によって検出されたアクセス例外条件の結果として妥当性インターセプトが行われる場合、以下の情報が失われる可能性がある。
・ ゲスト・プレフィックス域にストアすべき割り込み情報(しかし、割り込み以前のゲストPSWは状態記述にストアされる。)
・ 適用可能であれば、割り込み要求そのもの
【0145】
以下に記述するゲストの保護テスト命令の解釈実行中に条件コードが設定される場合、ホスト・ページ保護およびアクセス・リスト制御保護のメカニズムが考慮される。
【0146】
解釈実行モードでのSOPおよびESOPに関する詳細については以下に説明する。
【0147】
解釈実行モードでの保護抑止
保護抑止機能は、ページング可能モードDATオフ・ゲストのために、ホスト・アクセス・リスト制御保護およびホスト・ページ保護により、たとえばz/VMによって使用可能である。DATモード・ビット(たとえば、プログラムの旧PSWのビット5)が0であるときにゲストはDATオフであり、DATモード・ビットが1であるときにゲストはDATオンである。ホスト・アクセス・リスト制御保護はMCDSゲスト(DATオフ・ゲストである)に適用される。
【0148】
解釈実行モードでは、この保護抑止定義のために、実位置168〜175にストアされた有効アドレスは、保護例外がホスト・アクセス・リスト制御保護またはホスト・ページ保護によるものであっても、ゲスト有効アドレスである。
【0149】
保護例外がホスト・アクセス・リスト制御保護またはホスト・ページ保護によって引き起こされ、ゲストがDATオフ・ゲストであるとき、ゲスト有効アドレスが実(論理とは対照的)アドレスになるように定義されているものであっても、ビット61は1に設定され、ゲスト有効アドレスのビット0〜51がストアされる。この場合、実位置168〜175のビット62および63、ならびに実位置160の内容は、ゲストがMCDSモード・ゲストである場合に例外が適用されるホスト・アドレス・スペースを適切に示すか、あるいはこれらのフィールドの内容は、ゲストが非MCDSモードDATオフ・ゲストである場合に予測不能になる。(後者の場合、例外がホスト1次アドレス・スペースに適用されることが知られている。)
【0150】
ESOPがない場合、保護例外がホスト・ページ保護によって引き起こされ、ゲストがDATオン・ゲストであるときに、ビット61は予測不能になる。DATオン・ゲスト・ページ保護例外とホスト・ページ保護例外とを区別することはできないので、ホスト・ページ保護はDATオン・ゲストには使用不能である。
【0151】
通常通り、実位置に対する上記の参照は、ゲスト割り込みが行われた場合にゲスト実位置を参照する。ゲスト割り込みの代わりにインターセプトが行われた場合、情報はむしろ状態記述内の対応する位置にストアされる。
【0152】
上述の通り、ECA.18(状態記述内)は保護インターセプト制御である。ECA.18が0であるときに、保護例外の結果として必須インターセプトが行われる。ECA.18が1であるときに、インターセプトは防止され、ゲスト割り込みが行われる。ECA.18はIC.2によってオーバーライドされ、このIC.2は1であるときに、任意のプログラム割り込みでインターセプトが行われることを指定する。ECA.18は、SIE状態保存支援によって保持可能である。
【0153】
解釈実行モードでの拡張保護抑止
解釈実行モードでの拡張保護抑止は、たとえば、z/Architectureモードで動作するホストおよびz/Architectureモードのホストの下で任意のアーキテクチャ・モードで動作するゲストについて定義される。(しかし、他の諸実施形態では、ホストは他のアーキテクチャ・モードで動作することができる。)
【0154】
ECA.18およびECB.6(状態記述内)は、それぞれ、保護インターセプトおよびホスト保護割り込み制御である。ECA.18が1であり、IC.2が0であるときに、インターセプトはゲストによって認識された任意の保護例外について防止され、ゲスト割り込みが行われる。ECA.18が0であるときに、保護例外(ECB.6が1であるときのホスト・ページ保護例外を除く)の結果、必須インターセプトが行われる。
【0155】
ECB.6が1である場合、ホスト・ページ保護による例外は、ホスト・プログラム割り込みとして提示される。ECB.6が0である場合、ホスト・ページ保護例外は、ECA.18およびIC.2によって管理されるように、ゲスト・プログラム割り込みまたはインターセプトとして提示される。ホスト・ページ保護によるホスト割り込みの場合、以下のことが行われる。
・ その間に例外が認識されたゲスト操作単位またはゲスト命令実行はヌル文字化される。
・ 解釈実行開始命令は抑止される。
・ 情報は、それがホスト内の通常例外であった場合のようにホスト・ストレージにストアされる。変換例外IDにストアされたアドレスはホスト仮想アドレスであり、ASCE IDおよび例外アクセスIDはホスト・アドレス・スペースを識別する。(非MCDSゲストの場合、これはホスト1次スペースである。)
【0156】
ECA.18によるインターセプト防止はIC.2によってオーバーライドされ、これは、1であるときに、ゲスト・プログラム割り込みの代わりにインターセプトが行われることを指定する。しかし、ECB.6およびIC.2の両方が1である場合、ホスト・ページ保護例外は依然としてホスト割り込みとして提示される(すなわち、ECB.6=1の処理はIC.2=1の処理より優先される)。ECA.18およびECB.6はSIE状態保存支援によって保持可能である。
【0157】
ゲスト保護例外がホスト・アクセス・リスト制御保護またはホスト・ページ保護によって引き起こされ、ゲストがMCDSモードであるとき、ゲスト有効アドレスが実(論理とは対照的)アドレスになるように定義されている場合でも、ゲスト実位置168〜175のビット61は1に設定され、ゲスト有効アドレスのビット0〜51はストアされ、ビット62および63、ならびに実位置160の内容は、例外が適用されるホスト・アドレス・スペースを適切に示す。ホスト・ページ保護による保護例外が非MCDSゲストで認識され、ホスト保護割り込みが使用不能である(すなわち、ECB.6が0である)ときに、ゲスト実位置168〜175のビット61は0に設定され、残りのフィールドは未定義である。
【0158】
SOPおよびESOPに関するさらなる詳細について、図11〜図12に関連して説明するが、これらの図には、本発明の一態様により、SOP/ESOPゲスト処理の一実施形態が記載されている。
【0159】
初めに図11を参照すると、このロジックへの入口は、ステップ800で、この環境内で実行されるページング可能ゲストによって発行され、ストレージ・ロケーションで取り出しまたはストア・アクセスを実行しようと試みるゲスト命令に基づくものである。照会802で、ストレージ・アクセスに関する要求に応答して、要求されたアクセス(たとえば、取り出しまたはストア)がゲストおよびホストによって許可されるかどうかについて判断が行われる。この例では、ステップ804で、アクセスが試行され、成功した場合、アクセスが実行され、命令が完了する。しかし、試行済みアクセスが失敗した場合、処理は、アクセスを失敗させたものがホスト・レベル保護であったかまたはゲスト・レベル保護であったかを判断し続ける。
【0160】
アクセスが許可されない場合、照会806で、DAT処理がそのゲストについてオンである(DATオン・ゲストとも呼ばれる)かどうかについて判断が行われる。ゲストが変換中に動作していない(すなわち、DATオフ・ゲストである)場合、照会808で、キー制御保護がそのゲストについて設定されるかどうかについて追加の照会が行われる。この例では、DATオフ・ゲストの場合、依然として実ストレージ・ブロックのゲスト・キー制御保護が存在する可能性がある。ゲスト・キー制御保護がまったく存在しない場合、それはアクセスを拒否するゲスト・レベル保護ではなく、むしろ、ホスト・レベル保護である。したがって、ステップ810で、以下に記載するようにホスト割り込みが提供される。
【0161】
照会808に戻り、ゲスト・キー制御保護が存在する場合、ステップ812で、ゲスト割り込みが提示される。これは、示されているゲストが保護された位置にアクセスしようと試みたことをゲストに示すものである。
【0162】
もう一度、照会806を参照すると、DATがそのゲストについてオンである場合、たとえば、低アドレス保護、アクセス・リスト制御保護、キー制御保護、またはDAT保護(拡張DAT以前のページ保護とも呼ばれる)を含み、同じく適用可能な他の保護形式が存在するかどうかについて追加の照会が行われる。これらの他の保護形式のいずれも適用されない場合、それはホスト問題であり(すなわち、ホスト・レベル保護によってアクセスが失敗する)、したがって、ステップ810で、ホスト割り込みが提示される。しかし、これらの他の保護形式の1つが適用される場合、ステップ816で、ゲスト割り込みが提供される。
【0163】
さらに、ゲスト保護方式が適用される場合、照会818で、適用されるものがゲストDAT保護(DATP)であるかどうかならびに要求がストア・アクセスに関するものであるどうかについて判断が行われる。そうではない場合、ステップ820で、ゲスト例外が処理される。一例では、ゲストがこれらの保護条件のうちの1つを受け取ると、ポリシーによって決定されているように、必要または所望の処理であれば何でも監視プログラム(たとえば、ホスト)が実行する。
【0164】
照会818に戻り、それがゲストDATPおよびストア・アクセスである場合、おそらく、ステップ822で、ゲスト・オペレーティング・システムはゲスト・レベルのコピー・オン・ライトを理解する。コピー・オン・ライトという概念がまったく存在しない場合、ゲスト例外を実行することができる。
【0165】
ホスト割り込みの処理に関する詳細について、図12に関連して説明する。初めに、照会840で、保護割り込みがストア・アクセス時のホストDATPによるものであるかどうかについて判断が行われる。そうではない場合、ステップ842で、その条件がゲストに反映される。一例では、ホストは、障害を引き起こす特定の条件をゲストに示すために必要なアクションであれば何でも実行する。
【0166】
もう一度、照会840を参照すると、それがストア・アクセス時のホストDATPである場合、照会844で、それがDATオン・ゲストであるかどうかについて判断が行われる。それがDATオン・ゲストである場合、照会846で、SOPまたはESOP処理が制御しているかどうかについて追加の照会が行われる。それがSOP処理である場合、ステップ848で、その条件がゲストに反映される。しかし、それがESOP処理である場合、変換例外識別(TEID)におけるビット61は、DATP条件を検出したストア・アクセス試行の場合に予測可能である。ESOPがない場合、ゲストDATオンは、ゲストへの反映という結末に導かれる。
【0167】
照会844でゲストDATがオフである場合、または照会846でゲストDATがオンであり、それがESOPである場合、以下のことが行われる。照会850で、アクセスすべきストレージ域(たとえば、ページ)がホスト・コピー・オン・ライト方式の一部であるかどうかについて判断が行われる。そうではない場合、ステップ852で、その条件がゲストに反映される。しかし、それがホスト・コピー・オン・ライト方式の一部である場合、ステップ854で、ホスト・コピー・オン・ライトが実行される。
【0168】
有利なことに、ESOPは、ストレージ(たとえば、ページ)障害について何が行われているかならびに誰の責任であるかをホストおよびゲストが把握するための手段を提供する。ESOP機構は、解釈的に動作しているときにホスト・ページ保護からゲストを見分けるマシン(たとえば、CPU)の能力を提供する。以前、ページ保護は、ゲスト対ホスト・ページ障害について責任を負わされることにより区別することができなかった。すなわち、ページ保護例外は、ゲストまたはホストのいずれかである可能性があり、何らかの不確実性が存在した。したがって、ホストはそれに対して大したことはできなかった。ESOPにより、以前の不確実性は解消され、ホスト・ページ保護は、ホストの不良ページ(たとえば、ホスト・アドレスの障害)に関する情報によるホスト・プログラム割り込みを引き起こす。同様に、ゲスト・ページ保護は、ゲスト・ページ(たとえば、ゲスト・アドレスの障害)に関する情報によるゲスト・プログラム割り込みを発生する。
【0169】
以前、DATオフ・ゲストの場合、ページ保護はホストの問題であったはずなので、ホストCOWは、DATオフ・ゲストであったことをホスト・プログラムが把握していたゲスト(たとえば、CMS、MCDS)のみについて実行することができた。しかし、DATオン・ゲストの場合、ページ保護がホストの問題であったかまたはゲストの問題であったかは不確かであり、したがって、COWは使用することができなかった。
【0170】
本発明の一態様により、これは変化した。拡張保護抑止(ESOP)機構により、ホスト・レベル保護とゲスト・レベル保護とを区別することができ、したがって、適切なときにCOWの使用が可能になる。ESOPの場合、この追加の機能により、DATオン・ゲスト(それ自体の保護ページでつまずいた可能性がある)に関するインターセプトの状況下でも、その例外が属すホストを見分け、コピー・オン・ライトがそのホストに属すときに依然としてそのコピー・オン・ライトを実行するために十分な情報が使用可能になるように、区別することができる。
【0171】
保護テスト
本発明の一態様により、保護例外に関するテストを可能にする機能が提供される。一例として、保護テスト(TPROT)命令は、TPROT命令を実行しているプログラムに対してプログラムによって使用すべきストレージに関する情報を提供するために使用される。たとえば、これは、ストレージの保護に関する表示を提供し、ホスト・レベル保護とゲスト・レベル保護との区別を可能にする。TPROTは、本発明の1つまたは複数の態様により、ESOPを利用する。
【0172】
さらに説明するために、プログラムが保管フレーム(storageframe)を頻繁に割り振る場合、プログラムは、プログラムによるアクセスを可能にする属性をそのフレームが有するかどうかを学習するために照会コマンドを実行することになる(すなわち、それが常駐しているか、それが書き込み保護されていないか)。例として、IBMのSystem zプロセッサでは、このために保護テスト命令が使用され、サン・マイクロシステムズでは、mincore()システム呼び出しが使用される。この命令または呼び出しを発行することにより、プログラムは、前者の条件コードおよび後者の戻りコードからフレームの属性を学習する。ストレージ照会コマンドを発行するプログラムがホスト・ハイパーバイザの制御下のゲストとして解釈的に実行している場合、戻りコードは、ゲスト・アドレス変換テーブルならびにホスト・アドレス変換テーブルの観点からフレームの属性を反映することができる。このような動作は、ゲストへのコピー・オン・ライトなどの特定のホスト・ストレージ制御方式を使用した結果を露顕する可能性があり、したがって、ハイパーバイザによって提供された隔離を損なうことになる。
【0173】
本明細書に記載されているように、コピー・オン・ライト(COW)方式は、オペレーティング・システムによるメモリ圧力を低減するために使用される。プロセッサ・パフォーマンスが高くなるにつれて、単一オペレーティング・システムの制御下で複数のプログラムを実行し、単一ハイパーバイザの制御下で複数のオペレーティング・システムを実行する能力も非常に高くなる。より多くの同時プログラムに対処するために、システム・メモリ要件を管理するための特殊措置が実装される。
【0174】
このような措置の1つはCOWの使用である。プログラムがオペレーティング・システムによって始動されると、初めに割り振られたその保管フレームには、書き込み保護とマークが付けられ、同じOSの制御下にある他のプログラムと物理的に共用される。次に、これらのフレームの1つに対してストア動作が試行されると、プログラム例外が発生し、オペレーティング・システムは、固有のストレージ・フレームを割り振り、元の共用フレームの内容にコピーする。
【0175】
いくつかのプログラムは、ゲストおよびホスト・レベルでフレームの属性の複合ビューを返すストレージ照会コマンドで正常に動作することができる。しかし、書き込み保護ストレージの割り振りを回避するためにプログラムが書き込まれた場合、そのフレームに関するゲストのビューの変更によりリソースをまったく持っておらず、ストレージ照会コマンドが照会されたすべてのフレームについて書き込み保護の表示を返す場合にそのプログラムは障害を発生する可能性がある。このようなケースは、ハイパーバイザがコピー・オン・ライト方式を実装しない場合に発生する可能性がある。
【0176】
いくつかのシステムでは、疑似仮想化(para-virtualization)を使用するようにゲスト・プログラムを作成することができ、ゲスト要件は定義済みインターフェースによりホストに渡される。この場合、ゲストは、ストレージを使用するというその意図をホストに直接指定することができ、ホストは、コピーされたフレームを割り振ることにより上述の通り応答することができる。このような場合、ゲスト・プログラムは、それが実行している各ハイパーバイザ・ホストへのインターフェースを補償するように変更されるはずである。また、疑似仮想化呼び出しは、典型的に、高いオーバーヘッドを有し、ハイパーバイザに対する実行圧力を引き起こす。
【0177】
解釈的に実行しているゲスト・プログラムが保管フレームに対する照会コマンドを発行すると、ホスト・アドレス変換テーブル内で書き込み保護されているというだけでそのフレームが書き込み保護されていることをそのコマンドの条件コードまたは戻りコードが示すような条件が存在する場合、ホスト・アドレス変換テーブルの状態を反映する条件コードまたは戻りコード表示で実行完了する代わりに、プログラム・インターセプトが行われる。
【0178】
本発明の一態様により、コピー・オン・ライトなどの特定のホスト・ストレージ管理技法はゲスト・プログラムに対して透過的に機能する。これにより、プログラム・ロジックは、フレームのストレージ属性に関するゲスト・ビューのみを反映するようにストレージ照会コマンドの結果に依存することができる。ゲスト・アドレス変換テーブルでのみページが書き込み保護されている場合、ゲストは、システム呼び出しまたはハイパーバイザとの通信を遂行する必要なしにそれを学習することになる。
【0179】
一例では、保護テスト(TPROT)命令は、入力オペランドとしてフレーム・アドレスを取り、以下の4通りの戻りコードのうちの1つで完了する。
0 取り出し許可;ストア許可
1 取り出し許可;ストア不許可
2 取り出し不許可;ストア不許可
3 変換使用不能
【0180】
本発明の一態様により、ホスト・レベル保護とゲスト・レベル保護とを区別すること、ならびにCOWに対処するように変換テーブルが更新されていないが、正常に完了した実行を示す偽戻りコードを提供することを含むが、これらに限定されない特定の恩恵をもたらすように、保護テスト(TPROT)命令を実行するための機構が提供される。この実施形態では、ハイパーバイザはロジカル・パーティションのゲスト・イメージに関する状態値(ECB.6)を設定し、ゲスト・イメージのゲスト・プログラムはTPROT命令を実行のために取り出し、TPROT命令はテストすべきメモリ位置を指定し、TPROT命令は保護(ストア)のためにメモリ位置をテストし、抑止なしを示す状態値に応答して、テストに基づく条件コードの設定または例外動作の実行のうちのいずれかを実行するか、または抑止を示す状態値に応答して、条件コードを設定しなければならないことを示すテストに応答して実行し、命令の実行を抑止し、命令のインターセプトを実行する。
【0181】
一例では、以下のすべてが真であるときに、ページング可能モード・ゲストによる保護テスト命令の実行が抑止され、(条件コード1を設定する代わりに)ホスト割り込みが認識される。
・ 拡張保護抑止機構がホストにインストールされる。
・ ECB.6が1である。
・ 条件コード1が設定されることを要求する条件が存在する。
・ ホスト・ページ保護例外条件が存在する。
・ アクセス・リスト制御保護例外条件またはゲスト・ページ保護例外条件のいずれも存在しない。
【0182】
ストレージ参照中に、ゲスト・ページ保護条件が検出されると、キー制御ストレージ保護のために条件コード2が設定されない限り、1という条件コードがゲストによって設定され、ホストによるアクションはまったく行われない。ホスト・ページ保護の場合、上記で指定した条件が真である場合に、ゲストによる実行は抑止され、命令インターセプトが認識され、ホストによるアクションはまったく行われない。
【0183】
TPROT命令のフォーマットの一例について、図13に関連して説明する。描写されている通り、TPROT命令900は、たとえば、TPROT命令を識別する命令コード902(たとえば、E501)と、第1のレジスタ・フィールド(B1)904および第1の変位フィールド(D1)906と、第2のレジスタ・フィールド(B2)908および第2の変位フィールド(D2)910とを含む。第1オペランド・アドレスは、B1フィールドによって識別されたレジスタの内容にD1フィールドの内容を加えることによって決定される。同様に、第2オペランド・アドレスは、B2フィールドによって指定されたレジスタの内容とD2フィールドの内容を加えることによって形成される。
【0184】
実行時に、第1オペランド・アドレスによって指定された位置は、たとえば、第2オペランド・アドレスのビット56〜59によって指定されたアクセス・キーを使用することにより、保護例外についてテストされる。
【0185】
第2オペランド・アドレスはデータをアドレス指定するために使用されず、その代わりに、そのアドレスのビット56〜59は、テストの際に使用すべきアクセス・キーを形成する。この例では、第2オペランド・アドレスのビット0〜55および60〜63は無視される。
【0186】
第1オペランド・アドレスは論理アドレスである。CPUがアクセス・レジスタ・モードであるときに(DATがオンであり、PSWビット16および17が2進数の01であるときに)、第1オペランド・アドレスは、アクセス・レジスタ変換(ART)および動的アドレス変換(DAT)の両方のプロセスによるTPROT命令を実行のために取り出し変換の対象になる。ARTは、B1フィールドによって指定されたアクセス・レジスタに適用され、DATによって使用すべきアドレス・スペース制御要素を入手する。DATがオンであるが、CPUがアクセス・レジスタ・モードではないときに、第1オペランド・アドレスはDATによる変換の対象になる。この場合、DATは、CPUが1次スペース・モード、2次スペース・モード、またはホーム・スペース・モードであるときに制御レジスタ1、7、または13に含まれるアドレス・スペース制御要素をそれぞれ使用する。DATがオフである場合、第1オペランド・アドレスは、ARTまたはDATのいずれかによる変換の対象にならない実アドレスである。
【0187】
CPUがアクセス・レジスタ・モードであり、通常、以下の表に示されている例外の1つを引き起こすと思われる条件のためにARTがアドレス・スペース制御要素を入手できない場合、条件コード3を設定することにより、命令が完了する。
【表7】
【0188】
アクセス・レジスタが16進の00000000または16進の00000001を含む場合、ARTは、アクセス・リストにアクセスせずに、制御レジスタ1または7からアドレス・スペース制御要素をそれぞれ入手する。B1フィールドがアクセス・レジスタ0を指定するときに、ARTは、16進の00000000を含むものとしてアクセス・レジスタを処理し、アクセス・レジスタの実際の内容を検査しない。
【0189】
ARTが正常に完了した場合、DATの実行により動作は続行される。
【0190】
DATがオンであり、通常、以下の表に示されている例外の1つを引き起こすと思われる条件のために第1オペランド・アドレスを変換できない場合、条件コード3を設定することにより、命令が完了する。
【表8】
【0191】
第1オペランド・アドレスの変換を完了できる場合またはDATがオフである場合、第1オペランド・アドレスによって指定されたブロックに関するストレージ・キーは、第2オペランド・アドレスのビット位置56〜59に指定されたアクセス・キーと照らし合わせてテストされ、適用可能な保護メカニズムを考慮に入れて、ストア・アクセスおよび取り出しアクセスが許可されるかどうかを示すために条件コードが設定される。したがって、たとえば、低アドレス保護がアクティブであり、第1オペランド有効アドレスが0〜511または4096〜4607の範囲内である場合、ストア・アクセスは許可されない。アクセス・リスト制御保護、ページ保護、ストレージ保護オーバーライド、および取り出し保護オーバーライドも考慮される。
【0192】
変更ビットを含む、ストレージの内容は影響されない。その位置が取り出しに対して保護されている場合でも、モデル次第で、第1オペランド・アドレスに関する参照ビットを1に設定することができる。
【0193】
CPUがアクセス・レジスタ・モードである場合、有効アクセス・リスト指定あるいはALE、ASTE、または権限テーブル項目を取り出すためにARTによって使用されるアドレスが、その構成で使用不能な位置を指定するときに、アドレス指定例外が認識される。
【0194】
DATがオンである場合、1つまたは複数の領域テーブル項目、セグメント・テーブル項目、またはページ・テーブル項目のアドレス、あるいは変換後のオペランド実アドレスが、その構成で使用不能な位置を指定するときに、アドレス指定例外が認識される。また、領域テーブル項目またはセグメント・テーブル項目またはページ・テーブル項目がフォーマット・エラーを有するときに、変換指定例外が認識される。この例では、DATがオフである場合、オペランド実アドレスによるアドレス指定例外のみが適用される。
【0195】
上記のケースのすべてについて、動作は抑止される。
【0196】
結果の条件コード:
0 取り出し許可;ストア許可
1 取り出し許可;ストア不許可
2 取り出し不許可;ストア不許可
3 変換使用不能
【0197】
プログラム例外:
・ アドレス指定(有効アクセス・リスト指定、アクセス・リスト項目、ASN第2テーブル項目、権限テーブル項目、領域テーブル項目、セグメント・テーブル項目、ページ・テーブル項目、またはオペランド1)
・ 特権操作
・ 変換指定
【0198】
保護テストにより、プログラムは、プログラム例外を発生せずに呼び出し側プログラムから渡されたアドレスの保護属性を決定することができる。この命令は、その命令の第1オペランド・アドレスによって指定された位置で取り出しまたはストアが許可されるかどうかを示すために条件コードを設定する。この命令は、たとえば、アクセス・リスト制御、ページ、キー制御、低アドレス保護、ストレージ保護オーバーライド、および取り出し保護オーバーライドというマシン内の保護メカニズムを考慮に入れる。さらに、ASCEタイプ、領域変換、セグメント変換、およびページ変換の例外条件は、保護違反のためのプログラム代用品である可能性があるので、これらの条件は、プログラム例外を引き起こすのではなく、条件コードを設定するために使用される。CPUがアクセス・レジスタ・モードである場合、保護テストにより、さらにプログラムは、プログラム例外を発生せずにアクセス・レジスタ内のアクセス・リスト項目トークン(ALET)の使用可能度をチェックすることができる。ALETは、妥当性(ALET指定、ALEN変換、およびALEシーケンス例外条件の欠落)について、ならびにプログラムによる使用について許可されているかどうか(ASTE妥当性、ASTEシーケンス、および拡張権限例外条件の欠落)についてチェックされる。
【0199】
保護テストを使用する手法は、結果的に割り込みを発生しないテストの利点を有するが、テストと使用は時間的に分離されており、問題の位置のストレージ・キーが、テストされる時間と使用される時間との間で変化する可能性が存在する場合、正確ではない可能性がある。
【0200】
動的アドレス変換を処理する際に、保護テストは、その命令がASCEタイプ、領域変換、セグメント変換、およびページ変換例外を引き起こさないという点で実アドレス・ロード(Load Real Address)と同様である。その代わりに、これらの例外条件は、条件コード設定により示される。同様に、アクセス・レジスタ変換は、2つの命令のいずれかの間に実行されたときに、特定の例外条件に関する条件コードを設定する。実アドレス・ロードの場合に条件コード1、2、および3になる条件の結果、保護テストの場合に条件コード3になる。また、これらの命令は他のいくつかの点で異なっている。保護テストの第1オペランド・アドレスは、論理アドレスであり、したがって、DATがオフであるときに動的アドレスの対象にならない。実アドレス・ロードの第2オペランド・アドレスは、変換される仮想アドレスである。
【0201】
アクセス・レジスタ変換は、CPUがアクセス・レジスタ・モードである(DATがオンである)ときに保護テストに適用されるのに対し、DATがオンまたはオフのいずれであるかにかかわらず、PSWビット16および17が2進数の01であるときに実アドレス・ロードに適用される。アクセス・レジスタ変換における例外条件のために条件コード3が設定される場合、保護テストではなく、実アドレス・ロードは、その例外に割り当てられたプログラム割り込みコードを汎用レジスタに入れて返す。
【0202】
条件コード3は、第1オペランド位置が常にプログラムにとってアクセス不能になることを必ずしも示すわけではなく、むしろ、現行条件によりその命令がオペランドの保護属性を決定するのを防止することを示すだけである。たとえば、仮想ストレージ環境では、ストレージ・ロケーションがオペレーティング・システムによってページアウトされた場合に条件コード3を設定することができる。プログラムがその位置にアクセスしようと試みる場合、オペレーティング・システムは、ページ変換例外を解決し、その後、その位置をプログラムにとってアクセス可能なものにすることができる。同様に、条件コード1は、アドレスをストアできないことを必ずしも示すわけではない。POSIXフォーク機能を実装するオペレーティング・システムでは、ページ保護は、コピー・オン・ライト・イベントについてオペレーティング・システムに警告するために使用される。コピー・オン・ライト・イベントのオペレーティング・システム解決後に、プログラムはその位置へのストア・アクセスが許可される可能性がある。
【0203】
本発明の一態様により、保護テスト命令の実行に関連するロジックの一実施形態について、図14〜図15に関連して説明する。初めに、ステップ1000で、ゲストは、保護テスト命令によって照会中のストレージに関する情報を学習するために、保護テスト命令を実行する。実行中に、照会1002で、ゲストおよびホストによってストアが許可されるかどうかについて判断が行われる。一例では、ストアが実際には行われないが、ストアを行えたかどうかをテストすることによって、この判断が行われる。たとえば、ストアのアドレスにより様々な許可およびテストがチェックされるが、ストアは実行されない。実行された場合にストアが成功する場合、ストアはゲストおよびホストの両方によって許可されたものと見なされる。したがって、ステップ1004で、照会命令は成功条件コード(たとえば、0)で完了する。
【0204】
しかし、ストアがゲスト、ホスト、またはその両方によって許可されない場合、照会1006で、ゲスト・アドレス変換が使用可能であるかどうかについて追加の照会が行われる。例として、ゲストがDATオフ・ゲストである場合、そのIDが変換後のアドレスであるという意味で変換は使用可能である。しかし、ゲストがDATオン・ゲストである場合、1つまたは複数のゲスト変換テーブルをサーチして、対応する項目が有効であるかどうかを確認する。その項目が有効である場合、ゲスト・アドレス変換はDATオン・ゲストに使用可能である。ゲスト・アドレス変換が使用不能である場合、ステップ1008で、保護テスト命令は、この状況を示す条件コード((たとえば、CC=3)で完了する。
【0205】
ゲスト・アドレス変換が使用可能である場合、照会1010で、ホスト・アドレス変換が使用可能であるかどうかについて追加の判断が行われる。この判断は、ゲスト・アドレス変換が使用可能であるかどうかを判断することと同様に行われる。しかし、DATオン・ホストの場合、ゲスト変換テーブルの代わりに、DAT変換テーブルが使用される。ホスト・アドレス変換が使用不能である場合、ステップ1012で、ホスト割り込みが実行される。一例では、ゲストは終了し、この状況を管理するために呼び出されるホスト例外ルーチンが存在する。
【0206】
ゲスト・アドレス変換とホスト・アドレス変換の両方が使用可能である場合、照会1014で、ゲストおよびホストによって取り出しが許可されるかどうかについて追加の判断が行われる。一例では、DATテーブルにストアされた許可に基づいてこの判断が行われる。ゲストとホストの両方によって取り出しが許可されない場合、ステップ1016で、この命令は選択された条件コード(たとえば、CC=2)で完了する。ゲストとホストの両方によって取り出しが許可される場合、照会1018で、ホスト保護例外条件トラップが使用可能になっているかどうかについて追加の判断が行われる。一例では、ホスト保護例外条件は、本発明の一態様であり、ESOPが使用可能になっており、ECB.6がオンであるときに使用可能になる。ホスト保護例外条件トラップが使用可能になっていない場合、ステップ1020で、この命令は選択された条件コード(たとえば、CC=1)で完了する。使用可能になっているトラップがない場合、ゲストとホストとの間ならびにDATとその他のタイプのストア保護との間に特別な区別はまったく行われない。
【0207】
ホスト保護例外条件トラップが使用可能になっている場合、照会1022で、ゲスト設定によってストアが許可されるかどうかについて追加の判断が行われる。一例では、たとえば、変換テーブル(たとえば、ゲストDATテーブル)またはゲストによって設定された保護を含むものなどのその他のデータ構造あるいはその両方でゲストによって設定された設定をチェックすることにより、この判断が行われる。ストアが許可されない場合、ステップ1024で、この命令は選択された条件コード(たとえば、CC=1)で完了する。しかし、ゲストによってストアが許可される場合、照会1026で、ホスト書き込み保護がDAT以外のものであるかどうかについて追加の判断が行われる。そうである場合、ステップ1028で、この命令は指定の条件コード(たとえば、CC=1)で完了する。しかし、ホストDAT保護のみが存在する場合、ステップ1030で、ホスト・インターセプトが提供される。
【0208】
この時点で、ステップ1032で、ホストによってTPROT命令がシミュレートされる。すなわち、ある命令のゲスト実行によってホストに対するインターセプトが行われると、ゲスト・プログラムが(ホストによって)再始動されたときに、ゲストにはインターセプトされた命令が実行されたように見えるように、ホスト・プログラムはゲスト環境を変更する。シミュレーション中に、照会1040で、アクセスすべきストレージ内の領域(たとえば、ページ)がホストCOW方式の一部であるかどうかについて判断が行われる。このページがホストCOW方式の一部でなく、それに対する書き込みを行えないことを示す場合、ステップ1042で、選択された完了コード(たとえば、CC=1)が提供される。しかし、このページがホストCOW方式の一部である場合、ステップ1044で、TPROTは成功完了コード(たとえば、CC=0)を発行する。
【0209】
本発明の一態様によれば、この成功条件コードにより、ホストはそのDATテーブルの状態を変更しない。そのフレームは書き込み保護のままになる。ホストCOW方式では、ゲストが実際にフレームにストアすると、ホスト割り込みが(たとえば、ESOPを介して)行われ、ホスト例外ルーチンがCOWを実行することになる。この「偽」戻りコードは、それに対して決してストアされないブロックについてTPROTが発行されたときに、COWの実行が回避されるという点で、本発明の好ましい一実施形態の一態様の利点の1つである。
【0210】
一実施形態では、保護照会命令(たとえば、TPROT)が提供され、ホスト・テーブル内の保護設定が取り出し保護であるときに、ホスト割り込みが行われる。しかし、ゲスト・テーブル内の保護設定が取り出し保護であるときに、条件コードが返される。
【0211】
一例として、TPROT命令が解釈的に実行される場合、ならびにそのフレームがホスト・ビュー内(すなわち、ホスト・アドレス変換テーブル内)で書き込み保護され、ゲスト・ビュー内(すなわち、ゲスト・アドレス変換テーブル内)で書き込み保護されないという理由のみで、その命令がCC=1で完了すると思われる場合、ホスト・インターセプトが行われる。インターセプトを処理している間、ホストがコピー・オン・ライト(COW)ストレージ制御方式を実装している場合、ならびにそのフレームがゲスト・プログラムによって変更するために本当に使用可能である場合、コピーはそのフレームから構成され、ホスト・アドレス変換テーブルは更新され、ゲスト実行は続行されてTPROT命令がCC=0で完了することになる。
【0212】
本発明の1つまたは複数の態様は、たとえば、コンピュータ使用可能媒体を有する装置(たとえば、1つまたは複数のコンピュータ・プログラム)に含めることができる。この媒体は、たとえば、本発明の諸機能を提供し容易にするためのコンピュータ可読プログラム・コード手段またはロジック(たとえば、命令、コード、コマンドなど)をそこに有する。この装置は、1つのコンピュータ・システムの一部として含めるか、または別個に販売することができる。
【0213】
本発明の1つまたは複数の態様を取り入れる装置またはコンピュータ・プログラムの一例について、図16に関連して説明する。コンピュータ・プログラム1100は、たとえば、本発明の1つまたは複数の態様を提供し容易にするためのコンピュータ可読プログラム・コード手段またはロジック1104をそこに保管するために1つまたは複数のコンピュータ使用可能媒体1102を含む。この媒体は、電子、磁気、光学、電磁、赤外線、または半導体システム(あるいは装置またはデバイス)もしくは伝搬媒体にすることができる。コンピュータ可読媒体の例としては、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、ハード・ディスク(rigid magnetic disk)、および光ディスクを含む。光ディスクの例としては、読み取り専用コンパクト・ディスク(CD−ROM)、読み取り/書き込みコンパクト・ディスク(CD−R/W)、およびデジタル多目的ディスク(DVD)を含む。
【0214】
1つまたは複数のコンピュータ可読プログラム・コード手段またはロジックによって定義された複数のプログラム命令のシーケンスまたは1つまたは複数の相互に関連するモジュールからなる論理アセンブリは、本発明の1つまたは複数の態様のパフォーマンスを指図するものである。
【0215】
商用実装例
本明細書ではIBMによるz/Architectureについて言及しているが、本発明の1つまたは複数の態様は、ページング可能エンティティまたは同様の構成体を使用する他のマシン・アーキテクチャまたはコンピューティング環境あるいはその両方に同等に適用可能である。
【0216】
本明細書で開示されているTPROT命令、機構、およびその他のフォーマット、命令、属性の商用実装例は、ハードウェアで、またはたとえばアセンブリ言語で作成するオペレーティング・システム・プログラマなどのプログラマによって実装することができる。このようなプログラミング命令は、z/Architecture IBMサーバなどのコンピューティング環境でまたはその他のアーキテクチャを実行するマシンで固有に実行するための記憶媒体に保管することができる。このような命令は、既存のおよび今後のIBMサーバで、ならびにその他のマシンまたはメインフレーム上でエミュレートすることができる。これらは、一般に実行がエミュレーション・モードであるマシンで実行することができる。
【0217】
エミュレーション・モードでは、エミュレート中の特定の命令がデコードされ、サブルーチンまたはドライバにおけるように個々の命令を実装するためにサブルーチンが構築され、あるいは本明細書の説明を理解した後に当業者の技能の範囲内である特定のハードウェア用のドライバを提供するためにその他の何らかの技法が使用される。様々なソフトウェアおよびハードウェア・エミュレーション技法については、米国特許第5551013号、米国特許第5574873号、米国特許第5790825号、米国特許第6009261号、米国特許第6308255号、および米国特許第6463582号を含む多数の米国特許に記載されている。多くのその他の教示は、ターゲット・マシンのために設計された命令フォーマットのエミュレーションを達成するための様々な方法をさらに示している。
【0218】
上記に加えて、ゲスト・プロセッサおよび関連の処理に関する詳細については、2007年3月27日に発行されたFarrell他による「Method and Apparatus for Managing the Execution of a BroadcastInstruction on a Guest Processor」という発明の名称の米国特許第7197585号に記載されている。
【0219】
その他の変形例およびアーキテクチャ
様々な例および実施形態が本明細書に記載されているが、これらは例に過ぎず、多くの変形例が本発明の範囲内に含まれる。たとえば、本明細書に記載されているコンピューティング環境は一例に過ぎない。他のタイプの通信環境を含む、多くのその他の環境は、本発明の1つまたは複数の態様を含むことができる。たとえば、種々のタイプのプロセッサ、ゲスト、またはホスト、あるいはそれらの組み合わせを使用することができる。さらに、ページング可能ホストならびにページング可能ゲストは、本発明の1つまたは複数の態様を使用することができる。その上、その他のタイプのアーキテクチャは、本発明の1つまたは複数の態様を使用することができる。
【0220】
本発明の好ましい一実施形態の諸態様は、複数のゾーンを有する環境および非区分環境を含む、多くのタイプの環境にとって有益である。さらに、中央演算処理装置複合システムはまったく存在しない可能性があるが、複数のプロセッサがまとめて結合される可能性はある。本発明の様々な態様は、単一プロセッサ環境に適用可能である。
【0221】
さらに、本明細書に提供されるデータ構造および流れの例では、種々のフィールドの作成または使用あるいはその両方は、異なる数のビット、異なる順序のビット、本明細書に記載されているものより多いかまたは少ないビットあるいはそれとは異なるビット、より多いかまたは少ないフィールドあるいは異なるフィールド、異なる順序のフィールド、種々のサイズのフィールドなど、多くの変形例を含むことができる。この場合も、これらのフィールドは一例として提供されているに過ぎず、多くの変形例を含むことができる。さらに、本明細書に記載されているインジケータまたはコントロールあるいはその両方は、多種多様な形式のものにすることができる。たとえば、これらは、ビット以外の方法で表すことができる。さらに、本明細書ではアドレスという用語が使用されているが、任意の名称を使用することができる。
【0222】
本明細書で使用する「ページ」という用語は、仮想ストレージ(すなわち、仮想メモリ)の固定サイズまたは定義済みサイズの領域を指すために使用される。一例として、ホスト・ページはホスト仮想ストレージの一領域である。本明細書に提供されている例では1ページは4Kバイトであるが、ページのサイズは様々になる可能性がある。さらに、「フレーム」は、実ストレージまたは絶対ストレージ(すなわち、メモリ)の固定サイズまたは定義済みサイズの領域を指すために使用される。例として、ホスト・フレームはホスト実ストレージまたはホスト絶対ストレージの一領域であり、ゲスト・フレームはゲスト実ストレージまたはゲスト絶対ストレージの一領域である。ページング可能ゲストの場合、このゲスト実ストレージまたはゲスト絶対ストレージはホスト仮想ストレージによってマッピングされる。一般的であるように、ホスト仮想ストレージのページは、必要に応じて、ホスト実ストレージまたはホスト絶対ストレージのフレームによってバッキングされる。本明細書に提供されている例では1フレームは4Kバイトまたは1Mバイトであるが、フレームのサイズは様々になる可能性がある。しかし、その他の諸実施形態では、種々のサイズのページ、フレーム、セグメント、領域、またはブロックのストレージなどが存在する可能性がある。その上、その他のアーキテクチャでは、「ページ」および「セグメント」という用語は区別なく使用する場合もあれば、「ページ」という用語を使用して複数のサイズ単位の仮想ストレージに適用する場合もある。命令を入手するなどの「入手する」という用語は、取り出す、有する、受け取る、提供される、作成する、形成する、発行するなどを含むが、これらに限定されない。命令は、他のレジスタを参照するか、オペランド、フィールド、ロケーションなど、レジスタ以外を参照することができる。上記に代わる多くのその他のものも可能である。さらに、本明細書では、リスト、テーブルなどの用語が使用されているが、任意のタイプのデータ構造を使用することができる。たとえば、テーブルは他のデータ構造も含むことができる。この場合も、本明細書で言及しているものは例に過ぎない。
【0223】
さらに、プログラム・コードの保管または実行あるいはその両方に適したデータ処理システムであって、メモリ・エレメントに直接結合されるかまたはシステム・バスを介してメモリ・エレメントに間接的に結合される少なくとも1つのプロセッサを含むデータ処理システムが使用可能である。メモリ・エレメントとしては、たとえば、プログラム・コードを実際に実行している間に使用されるローカル・メモリ、バルク・ストレージ、および実行中にバルク・ストレージからコードを取り出さなければならない回数を低減するために少なくとも一部のプログラム・コードの一時記憶を提供するキャッシュ・メモリを含む。
【0224】
入出力またはI/O装置(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、およびその他のメモリ媒体などを含むが、これらに限定されない)は、直接または介在する入出力コントローラを介してシステムに結合することができる。また、データ処理システムが介在する私設網または公衆網を介して他のデータ処理システムあるいはリモート・プリンタまたはストレージ・デバイスに結合された状態になるように、ネットワーク・アダプタもシステムに結合することができる。モデム、ケーブル・モデム、およびイーサネット・カードは、使用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
【0225】
本発明の1つまたは複数の態様の諸機能は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの何らかの組み合わせで実装することができる。本発明の諸機能を実行するためにマシンによって実行可能な複数命令からなる少なくとも1つのプログラムを実施するマシンによって読み取り可能な少なくとも1つのプログラム・ストレージ・デバイスを提供することができる。
【0226】
本明細書に描写されている流れ図は例に過ぎない。本発明の好ましい一実施形態の精神を逸脱せずに、これらの図またはそこに記載されているステップ(または動作)に対する多くの変形例が存在する可能性がある。たとえば、これらのステップは異なる順序で実行することができ、いくつかのステップを追加、削除、または変更することもできる。これらの変形例はいずれも、請求された本発明の一部と見なされる。
【0227】
本明細書には諸実施形態が詳しく描写され記載されているが、本発明の好ましい一実施形態の精神を逸脱せずに様々な変更、追加、代用などを行うことができ、したがって、これらが特許請求の範囲に定義される本発明の範囲内のものであると見なされることは、当業者には自明なことになるであろう。
【特許請求の範囲】
【請求項1】
ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするためのコンピュータ可読プログラム・コード・ロジックであって、方法を実行するためにコンピュータによって実行するための前記コンピュータ可読プログラム・コード・ロジックを有する少なくとも1つのコンピュータ使用可能媒体を含む装置であって、前記方法が、
ホスト・レベルの保護およびゲスト・レベルの保護によって保護されたストレージの一領域へのアクセスを試みるステップと、
前記試行済みアクセスに応じて受け取られた障害が前記ホスト・レベルの保護によるものであるかまたは前記ゲスト・レベルの保護によるものであるかを判断するステップと、
を含む、装置。
【請求項2】
ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にする方法であって、
ホスト・レベルの保護およびゲスト・レベルの保護によって保護されたストレージの一領域へのアクセスを試みるステップと、
前記試行済みアクセスに応じて受け取られた障害が前記ホスト・レベルの保護によるものであるかまたは前記ゲスト・レベルの保護によるものであるかを判断するステップと、
を含む、方法。
【請求項3】
ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするシステムであって、
ホスト・レベルの保護およびゲスト・レベルの保護によって保護されたストレージの一領域へのアクセスを試みるための少なくとも1つのプロセッサと、
前記試行済みアクセスに応じて受け取られた障害が前記ホスト・レベルの保護によるものであるかまたは前記ゲスト・レベルの保護によるものであるかを判断するための少なくとも1つのプロセッサと、
を含む、システム。
【請求項4】
命令を実行するためのコンピュータ・プログラムであって、
処理回路によって読み取り可能であって、方法を実行するために前記処理回路によって実行するための命令を保管する記憶媒体を含み、前記方法が、
保護テスト機械命令を入手するステップであって、前記保護テスト機械命令が命令コード・フィールドと、第1オペランドと、第2オペランドとを含む、前記入手するステップと、
ページング可能ゲストにより、前記入手した保護テスト機械命令を実行するステップであって、前記実行するステップが、
1つまたは複数の保護例外について前記第1オペランドによって指定された位置をテストするステップを含み、前記テストするステップが前記第2オペランドのキーを使用し、保護例外の表示が、前記保護例外がホスト・レベル保護によるものであるかまたはゲスト・レベル保護によるものであるかという表示を含む、前記実行するステップと、
を含む、コンピュータ・プログラム。
【請求項5】
前記プログラムがコンピュータ上で実行されるときに請求項2記載の方法の前記ステップのすべてを実行するように適合されたコード手段を含む、コンピュータ・プログラム。
【請求項6】
方法のステップのすべてを実行するように適合されたコード手段を含む、コンピュータ・プログラムであって、前記方法が、
保護テスト機械命令を入手するステップであって、前記保護テスト機械命令が命令コード・フィールドと、第1オペランドと、第2オペランドとを含む、前記入手するステップと、
ページング可能ゲストにより、前記入手した保護テスト機械命令を実行するステップであって、前記実行するステップが、
1つまたは複数の保護例外について前記第1オペランドによって指定された位置をテストするステップを含み、前記テストするステップが前記第2オペランドのキーを使用し、保護例外の表示が、前記保護例外がホスト・レベル保護によるものであるかまたはゲスト・レベル保護によるものであるかという表示を含む、前記実行するステップと、
を含む、コンピュータ・プログラム。
【請求項1】
ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするためのコンピュータ可読プログラム・コード・ロジックであって、方法を実行するためにコンピュータによって実行するための前記コンピュータ可読プログラム・コード・ロジックを有する少なくとも1つのコンピュータ使用可能媒体を含む装置であって、前記方法が、
ホスト・レベルの保護およびゲスト・レベルの保護によって保護されたストレージの一領域へのアクセスを試みるステップと、
前記試行済みアクセスに応じて受け取られた障害が前記ホスト・レベルの保護によるものであるかまたは前記ゲスト・レベルの保護によるものであるかを判断するステップと、
を含む、装置。
【請求項2】
ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にする方法であって、
ホスト・レベルの保護およびゲスト・レベルの保護によって保護されたストレージの一領域へのアクセスを試みるステップと、
前記試行済みアクセスに応じて受け取られた障害が前記ホスト・レベルの保護によるものであるかまたは前記ゲスト・レベルの保護によるものであるかを判断するステップと、
を含む、方法。
【請求項3】
ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするシステムであって、
ホスト・レベルの保護およびゲスト・レベルの保護によって保護されたストレージの一領域へのアクセスを試みるための少なくとも1つのプロセッサと、
前記試行済みアクセスに応じて受け取られた障害が前記ホスト・レベルの保護によるものであるかまたは前記ゲスト・レベルの保護によるものであるかを判断するための少なくとも1つのプロセッサと、
を含む、システム。
【請求項4】
命令を実行するためのコンピュータ・プログラムであって、
処理回路によって読み取り可能であって、方法を実行するために前記処理回路によって実行するための命令を保管する記憶媒体を含み、前記方法が、
保護テスト機械命令を入手するステップであって、前記保護テスト機械命令が命令コード・フィールドと、第1オペランドと、第2オペランドとを含む、前記入手するステップと、
ページング可能ゲストにより、前記入手した保護テスト機械命令を実行するステップであって、前記実行するステップが、
1つまたは複数の保護例外について前記第1オペランドによって指定された位置をテストするステップを含み、前記テストするステップが前記第2オペランドのキーを使用し、保護例外の表示が、前記保護例外がホスト・レベル保護によるものであるかまたはゲスト・レベル保護によるものであるかという表示を含む、前記実行するステップと、
を含む、コンピュータ・プログラム。
【請求項5】
前記プログラムがコンピュータ上で実行されるときに請求項2記載の方法の前記ステップのすべてを実行するように適合されたコード手段を含む、コンピュータ・プログラム。
【請求項6】
方法のステップのすべてを実行するように適合されたコード手段を含む、コンピュータ・プログラムであって、前記方法が、
保護テスト機械命令を入手するステップであって、前記保護テスト機械命令が命令コード・フィールドと、第1オペランドと、第2オペランドとを含む、前記入手するステップと、
ページング可能ゲストにより、前記入手した保護テスト機械命令を実行するステップであって、前記実行するステップが、
1つまたは複数の保護例外について前記第1オペランドによって指定された位置をテストするステップを含み、前記テストするステップが前記第2オペランドのキーを使用し、保護例外の表示が、前記保護例外がホスト・レベル保護によるものであるかまたはゲスト・レベル保護によるものであるかという表示を含む、前記実行するステップと、
を含む、コンピュータ・プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公表番号】特表2011−517797(P2011−517797A)
【公表日】平成23年6月16日(2011.6.16)
【国際特許分類】
【出願番号】特願2010−547159(P2010−547159)
【出願日】平成21年2月16日(2009.2.16)
【国際出願番号】PCT/EP2009/051799
【国際公開番号】WO2009/106451
【国際公開日】平成21年9月3日(2009.9.3)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】
【公表日】平成23年6月16日(2011.6.16)
【国際特許分類】
【出願日】平成21年2月16日(2009.2.16)
【国際出願番号】PCT/EP2009/051799
【国際公開番号】WO2009/106451
【国際公開日】平成21年9月3日(2009.9.3)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】
[ Back to top ]