(57)【要約】【課題】拡張動的アドレス変換機構を提供すること。【解決手段】一実施形態では、変換すべき仮想アドレスと、変換テーブルの階層の変換テーブルの初期オリジン・アドレスとが得られる。仮想アドレスの動的アドレス変換が進行する。動的アドレス変換中に発生した変換割込みに応答して、ビットが変換例外修飾子（ＴＸＱ）フィールド内に格納され、例外が、ホスト・プログラムを実行中に発生したホストＤＡＴ例外、またはゲスト・プログラムを実行中に発生したホストＤＡＴ例外のどちらかであったことが示される。ＴＸＱはさらに、例外がゲスト・ページ・フレーム実アドレスまたはゲスト・セグメント・フレーム絶対アドレスから導出されたホスト仮想アドレスに関連付けられたことを示すことができる。ＴＸＱはさらに、ゲスト・フレームを支持するのに、より大きいまたは小さいホスト・フレーム・サイズが好ましいことを示すことができる。【選択図】図７
2011513808.tif 000002
【特許請求の範囲】
【請求項１】
仮想アドレスをコンピュータ・システム内の主ストレージ内のデータのブロックの変換後アドレスに変換することのできる動的アドレス変換機構内の変換例外を修飾する方法であって、
変換すべき仮想アドレスを得ること、
前記仮想アドレスを主ストレージ内のデータの所望のブロックの実アドレスまたは絶対アドレスに動的に変換すること、および
前記仮想アドレスの動的アドレス変換中に発生した変換例外割込みイベントに応答して、
前記変換例外が、ホスト・プログラムを実行中に発生したホストＤＡＴ例外と、ゲスト・プログラムを実行中に発生したホストＤＡＴ例外の一方であったことを示すビットを変換例外修飾子内に格納すること
を含む方法。
【請求項２】
前記変換例外が、前記ゲスト・プログラムを実行中に発生したゲストＤＡＴ例外であったことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項１に記載の方法。
【請求項３】
前記ホストＤＡＴ例外が、ゲスト・リーフ・テーブル・エントリから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項１または２に記載の方法。
【請求項４】
前記ホストＤＡＴ例外が、ゲスト・ページ・フレーム実アドレスから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項１、２、または３に記載の方法。
【請求項５】
前記ホストＤＡＴ例外が、ゲスト・セグメント・フレーム絶対アドレスから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項１、２、３、または４に記載の方法。
【請求項６】
前記ホストＤＡＴ例外が関係するゲスト・フレームのサイズ、および前記ゲスト・フレームを支持するために割り振るべきホスト・フレームのサイズのいずれかを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項１ないし５のいずれか一項に記載の方法。
【請求項７】
仮想アドレスをコンピュータ・システム内の主ストレージ内のデータのブロックの変換後アドレスに変換することのできる動的アドレス変換機構内の変換例外を修飾するシステムであって、
仮想アドレスの、前記主ストレージ内のデータの所望のブロックの実アドレスまたは絶対アドレスへの動的アドレス変換のために使用される機械語命令と変換テーブルの階層とを格納することのできるコンピュータ・メモリと、
前記コンピュータ・メモリと通信するプロセッサであって、前記メモリ内に格納された変換テーブルの前記階層にアクセスすることができ、
変換すべき仮想アドレスを得ること、
前記仮想アドレスを主ストレージ内のデータの所望のブロックの実アドレスまたは絶対アドレスに動的に変換すること、および
前記仮想アドレスの動的アドレス変換中に発生した変換例外割込みイベントに応答して、
前記変換例外が、ホスト・プログラムを実行中に発生したホストＤＡＴ例外と、ゲスト・プログラムを実行中に発生したホストＤＡＴ例外の一方であったことを示すビットを変換例外修飾子内に格納すること
を含む方法を実施するプロセッサと
を備えるシステム。
【請求項８】
前記変換例外が、前記ゲスト・プログラムを実行中に発生したゲストＤＡＴ例外であったことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項７に記載のシステム。
【請求項９】
前記ホストＤＡＴ例外が、ゲスト・リーフ・テーブル・エントリから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項７または８に記載のシステム。
【請求項１０】
前記ホストＤＡＴ例外が、ゲスト・ページ・フレーム実アドレスから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項７、８、または９に記載のシステム。
【請求項１１】
前記ホストＤＡＴ例外が、ゲスト・セグメント・フレーム絶対アドレスから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項７、８、９、または１０に記載のシステム。
【請求項１２】
前記ホストＤＡＴ例外が関係するゲスト・フレームのサイズを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項７ないし１１のいずれか一項に記載のシステム。
【請求項１３】
前記ゲスト・フレームを支持するために割り振るべきホスト・フレームのサイズを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項７ないし１２のいずれか一項に記載のシステム。
【請求項１４】
仮想アドレスをコンピュータ・システム内の主ストレージ内のデータのブロックの変換後アドレスに変換することのできる動的アドレス変換機構内の変換例外を修飾するコンピュータ・プログラムであって、
前記コンピュータ・システムで実行されることにより、前記コンピュータ・システムに、
変換すべき仮想アドレスを得ること、
前記仮想アドレスを主ストレージ内のデータの所望のブロックの実アドレスまたは絶対アドレスに動的に変換すること、および
前記仮想アドレスの動的アドレス変換中に発生した変換例外割込みイベントに応答して、
前記変換例外が、ホスト・プログラムを実行中に発生したホストＤＡＴ例外と、ゲスト・プログラムを実行中に発生したホストＤＡＴ例外の一方であったことを示すビットを変換例外修飾子内に格納すること
を実施させる
コンピュータ・プログラム。
【請求項１５】
前記変換例外が、前記ゲスト・プログラムを実行中に発生したゲストＤＡＴ例外であったことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項１４に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはコンピュータ・システムで仮想アドレスを変換するシステムおよび方法に関し、より詳細には、動的アドレス変換機構を有するコンピュータ・システムで仮想アドレスをデータのブロックの実アドレスまたは絶対アドレスに変換し、仮想アドレス変換が変換テーブルの階層を介して行われるシステムおよび方法に関する。
【背景技術】
【０００２】
動的アドレス変換（ＤＡＴ）は、任意の瞬間にプログラムの実行を中断し、プログラムおよびプログラムのデータを直接アクセス記憶装置などの補助ストレージに記録し、後でプログラムおよびデータを異なる主ストレージ（メモリ）位置に戻して実行を再開する能力を提供する。主ストレージと補助ストレージとの間でのプログラムおよびプログラムのデータの転送は、１つずつ実行することができ、主ストレージに情報を戻すことは、実行のために情報が必要となるときにＣＰＵが情報にアクセスしようと試みることに応答して行うことができる。これらの機能は、プログラムおよびプログラムのデータの変更または検査なしに実施することができ、再配置されるプログラムでどんな明示的なプログラミング規約も必要とせず、必要とされる時間遅延を除いて、プログラムの実行を妨害しない。
【０００３】
オペレーティング・システムによる適切なサポートと共に、動的アドレス変換機構を使用して、ストレージが構成内で利用可能な主ストレージよりも大きく見えるシステムをユーザに提供することができる。この見掛けの主ストレージは、しばしば仮想ストレージと呼ばれ、仮想ストレージ内の位置を指定するのに使用されるアドレスは、しばしば仮想アドレスと呼ばれる。ユーザの仮想ストレージは、構成内で利用可能である主ストレージのサイズをはるかに超過することがあり、通常は補助ストレージ内に維持される。仮想ストレージは、一般にページと呼ばれる（セグメントおよび領域とも呼ばれる）データのブロックから構成されるとみなされる。仮想ストレージの最後に参照されたページが、物理的主ストレージのブロックを占有するように割り当てられる。ユーザが、主ストレージ内に出現しない仮想ストレージのページを参照するとき、そのページが導入され、必要となる可能性がより低い主ストレージ内のページが置き換えられる。ある場合には、仮想ストレージが参照されるかどうかに関わらず、仮想ストレージが長期間にわたって（または永続的に）主ストレージに割り当てられる。ストレージのページのスワッピング（swapping）をユーザの知識なしにオペレーティング・システムで実施することができる。
【０００４】
プログラムは、アドレス（または仮想アドレス）を使用して仮想ストレージにアクセスする。プログラムは、仮想アドレスを使用して、仮想ストレージから命令をフェッチすることができ、あるいは仮想ストレージからデータをロードし、または仮想ストレージへデータを格納することができる。仮想ストレージの範囲に関連する仮想アドレスが、アドレス空間を定義する。オペレーティング・システムによる適切なサポートと共に、動的アドレス変換機構を使用していくつかのアドレス空間を提供することができる。こうしたアドレス空間を使用して、ユーザ間の分離の程度を提供することができる。そのようなサポートは、各ユーザについての完全に異なるアドレス空間からなることができ、したがって完全な分離を実現し、または各アドレス空間の一部を単一の共通ストレージにマッピングすることによって共有エリアを設けることができる。さらに、準特権プログラムがそのような複数のアドレス空間にアクセスすることを可能にする命令が提供される。
【０００５】
動的アドレス変換（ＤＡＴ）は、複数の異なるアドレス空間からの仮想アドレスの変換を可能にする。例えば、IBM(R) System zプロセッサ上では、こうしたアドレス空間は、１次アドレス空間、２次アドレス空間、およびアクセス・レジスタ指定アドレス空間と呼ばれる。特権プログラムはまた、ホーム・アドレス空間にアクセスさせることもできる。ＣＰＵで生成される命令アドレスおよびデータ・アドレスについて動的アドレス変換を指定することができる。
【０００６】
当技術分野で一般的であるように、ＤＡＴは、仮想アドレスの連続する部分を一連の変換テーブル（例えば、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、およびページ・テーブル）内のエントリを選択するための索引として使用することによって実施される。各中間テーブル・エントリは、有効とマークされる場合、次に低いレベルのテーブルのオリジン、オフセット、および長さを含み、次いで次に低いレベルのテーブルが、実フレーム・アドレスまたは絶対フレーム・アドレスを含む「リーフ」エントリに達するまで、仮想アドレスの次の部分で索引付けされる。次いで、変換結果を完了するために、仮想アドレスの残りの部分が、そのフレームへのバイト索引として使用される。
【０００７】
コンピューティング環境内の効率および柔軟性を改善するのに仮想化が使用される。仮想化の前に、通常は、単一のオペレーティング・システムがマシン内で動作する。仮想化環境では、ハイパーバイザ・プログラムまたはホストが、マシン資源を制御する。このホストは、ゲストと呼ばれる別々の独立したオペレーティング・システム・インスタンスがその中で動作することのできるコンテナである複数の仮想マシンを作成し、ホストの制御下でプロセッサやメモリなどの資源を共有する。
【０００８】
例えばIBM(R) System zプロセッサ上の、ページ可能ゲスト（仮想マシン）環境では、動的アドレス変換が２つのレベルで行われ、ゲスト仮想ページがゲスト実フレームによって支持され、そしてこうしたゲスト・フレームがホスト仮想メモリとして表され、ホスト実フレームによって支持されるホスト仮想ページに分割される。アドレス変換がゲストおよびホストによって独立して管理されるので、いずれのサイズのゲスト・フレームを、いずれのサイズのページからなるホスト仮想エリアにマッピングすることもできる。したがって、ゲスト・フレームは、１つのホスト・ページ、複数のホスト・ページ（小さいホスト・ページ内の大きいゲスト・フレーム）、またはホスト・ページの一部（大きいホスト・ページ内の小さいゲスト・フレーム）からなることがある。ホストが、ホストが支持するゲスト・フレームと同サイズのページを使用するとき、メモリをより効率的に管理することができ、マシン内の変換ルックアサイド・バッファ（ＴＬＢ）をより効率的に使用することができる。したがって、例えば、ゲスト１メガバイト・フレームが、ゲストによって１単位として扱われ、２５６個の別々にページングされる４キロバイト・フレームではなく、ホスト１メガバイト・フレームによって支持されるべきである。これにより、単一のＴＬＢエントリが、ゲスト仮想アドレスのメガバイト全体を、対応するホスト絶対アドレスにマッピングすることが可能となる。
【０００９】
ホスト・ページ・サイズがゲスト・フレーム・サイズに一致するために、ホストは、ゲストがゲスト・メモリの様々なエリアで使用することを意図するフレームのサイズを求めることができなければならない。ある場合には、ゲストは、所期のゲスト・フレーム・サイズを指示するフレーム管理命令を使用することができ、次いで、ファームウェアまたはホストによる命令の処理が、ゲスト・フレームを支持するようなサイズに一致するホスト・フレームを提供することができる。しかし、ゲストが配置時にこの命令を使用しない場合、またはゲストがフレーム・サイズを後で変更する場合、ホスト・サイズとゲスト・サイズはもはや一致しないことがある。具体的には、ホストがゲスト・メモリの一部をページアウトし、次いでゲスト・メモリがそれを参照した場合、ホスト変換例外がそれに続いて発生し、その結果、ホストは、バッキング・メモリに好ましいゲスト・フレーム内容を提供する機会を有する。この割込みにより、ホストがゲスト・フレームのサイズに一致するフレームを割り当てるための追加の機会が与えられる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許第５５５１０１３号
【特許文献２】米国特許第５５７４８７３号
【特許文献３】米国特許第５７９０８２５号
【特許文献４】米国特許第６００９２６１号
【特許文献５】米国特許第６３０８２５５号
【特許文献６】米国特許第６４６３５８２号
【非特許文献】
【００１１】
【非特許文献１】"IBM(R) System/370 ExtendedArchitecture", IBM(R) Pub. No. SA22-7095 (1985)
【非特許文献２】"z/Architecture(R) Principlesof Operation", IBM(R) Pub. No. SA22-7832-05, 6th Edition, (April 2007)
【非特許文献３】"z/VM: Running Guest OperatingSystems", IBM(R) Pub. No. SC24-5997-02, (2001)
【非特許文献４】"z/VM: General InformationManual", IBM(R) Pub. No. GC24-5991-04, (2001)
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ホスト構成で実行することによって割込みが引き起こされたか、それともゲスト構成で実行することによって引き起こされたか、およびゲスト構成では、割込みがリーフ・ゲストＤＡＴテーブル・エントリによって識別されるゲスト大フレームまたはゲスト小フレームに関係するか、それとも何らかの他の方式で参照されるゲスト・フレームに関係するかに応答して、ゲスト・フレームを支持するための適切なサイズのフレームを割り振るようにホスト・プロセッサに効果的かつ効率的に通知する、当技術分野でこれまで知られていない追加の機能を提供する拡張動的アドレス変換機構が求められている。
【課題を解決するための手段】
【００１３】
仮想アドレスを、マシン・アーキテクチャを有するコンピュータ・システムの主ストレージ内のデータのブロックの実アドレスまたは絶対アドレスに変換する動的アドレス変換機構のための変換例外修飾子を提供するシステム、方法、およびコンピュータ・プログラム製品が提供される。
【００１４】
例示的一実施形態では、変換すべき仮想アドレスが得られる。変換で使用される変換テーブルの階層の第１変換テーブルのオリジン・アドレスが得られる。変換テーブルの階層は、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、および任意選択でページ・テーブルのうちの１つまたは複数からなる。仮想アドレスの、主ストレージ内のデータのブロックの実アドレスまたは絶対アドレスへの動的アドレス変換に進む。変換を完了することができない場合、例えば、変換に必要なテーブル・エントリのうちの１つが無効とマークされる場合、変換例外割込みが発生する。仮想アドレスの変換中に発生したホスト変換例外割込みイベントに応答して、ビットが変換例外修飾子内に格納され、変換例外が、ホスト・プログラムを実行中に発生したホストＤＡＴ例外と、ゲスト・プログラムを実行中に発生したホストＤＡＴ例外の一方であったことが示される。ＴＸＱフィールドはまた、変換例外がゲスト・プログラムを実行中に発生したゲストＤＡＴ例外であったこと、ホストＤＡＴ例外がゲスト・リーフ・テーブル・エントリから導出されたアドレスに関係したこと、ホストＤＡＴ例外がゲスト・ページ・フレーム実アドレスから導出されたアドレスに関係したこと、およびホストＤＡＴ例外がゲスト・セグメント・フレーム絶対アドレスから導出されたアドレスに関係したことも示すことができる。ＴＸＱフィールドは、ホストＤＡＴ例外が関係するゲスト・フレームのサイズ、およびより大きいまたは小さいフレーム・サイズが必要であることもさらに示すことができ、その結果、ホストまたはファームウェアは、ゲスト・フレームを支持するためのホスト・フレームの適切なサイズを与えることができる。別の実施形態が提供される。
【００１５】
次に、いくつかの図示された実施形態と共に本発明を説明する。本発明の精神または範囲から逸脱することなく、当業者によって様々な変更および修正を行えることを理解されたい。
【００１６】
同様の参照番号が別々の図全体を通して同一の要素または機能的に類似の要素を指し、以下の詳細な説明と共に本明細書に組み込まれ、本明細書の一部を形成する添付の図が、様々な実施形態をさらに示し、様々な原理および利点をすべて本発明に従って説明する働きをする。
【図面の簡単な説明】
【００１７】
【図１】ゲストおよびホスト拡張動的アドレス変換が実施される従来技術ホスト・コンピュータ・システムの一実施形態を示す図である。
【図２】ホスト・アーキテクチャのホスト・コンピュータ・システムをエミュレートする例示的な従来技術のエミュレート化ホスト・コンピュータ・システムを与える図である。
【図３】仮想アドレスの動的アドレス変換のための有効なＡＳＣＥを求めるのにプログラム・ステータス・ワードがどのように使用されるかについての従来技術の一実施形態を示す図である。
【図４】図３で求められた有効なＡＳＣＥが使用され、仮想アドレスの変換で使用される変換テーブルの階層内の最高の変換テーブルが求められる従来技術の一実施形態を示す図である。
【図５】セグメント・テーブル・レベルに対する変換テーブルの階層を使用する、仮想アドレスの動的アドレス変換のプロセスの一実施形態を示す図である。
【図６】セグメント・テーブル・エントリ（ＳＴＥ）フォーマット制御（ＦＣ）が０である、図５の動的アドレス変換の続きを示す図である。
【図７】セグメント・テーブル・エントリ（ＳＴＥ）フォーマット制御（ＦＣ）が１である、図５の動的アドレス変換の続きを示す図である。
【図８】セグメント・テーブル・エントリ内のフォーマット制御フィールドを得るためのゲスト・レベルの拡張動的アドレス変換（ＥＤＡＴ）の一実施形態の流れ図を示す図である。
【図９】ゲストＳＴＥフォーマット制御が０であるときの、図８のノード６３０からの流れ図の続きを示す図である。
【図１０】ゲストＳＴＥフォーマット制御が１であるときの、図８のノード６３２からの流れ図の続きを示す図である。
【図１１】ゲストＥＤＡＴプロセスから起動して、ホスト・セグメント・テーブル・エントリ内のフォーマット制御フィールドを得ることのできるホスト・レベルのＥＤＡＴの一実施形態の流れ図を示す図である。
【図１２】ホストＳＴＥフォーマット制御が０であるときの、図１１のノード９２８からの流れ図の続きを示す図である。
【図１３】ホストＳＴＥフォーマット制御が１であるときの、図１１のノード９３０からの流れ図の続きを示す図である。
【発明を実施するための形態】
【００１８】
本願の明細書で行われる陳述は、必ずしも特許請求される様々な発明のいずれかを制限するものではないことを理解されたい。さらに、いくつかの陳述は、本発明のある特徴には当てはまるが、別の特徴には当てはまらないことがある。別段の指示がない限り、一般性を失うことなく、単数の要素は複数でよく、逆も同様である。
【００１９】
コンピューティング環境でストレージをアドレス指定すること、およびレジスタ・フィールドまたはアドレス・フィールド内のビットを使用して、様々な状態を示し、そうした状態に基づいて行動することに当業者なら容易に通じているであろう。さらに、当業者なら、コンピュータ・ソフトウェアの技術分野に精通し、過度の実験なしに当業者自身のコンピューティング環境で本明細書の教示を実施するのに十分な、コンピュータ・システムの構成要素間の動作および相関関係について精通しているであろう。
【００２０】
概要
拡張動的アドレス変換（ＤＡＴ）機構の例示的実施形態が提供される。拡張ＤＡＴ機構がインストールされ、動作可能となるとき、ＤＡＴ変換は、セグメント・テーブル・エントリ内のセグメント・テーブル・エントリ（ＳＴＥ）フォーマット制御で決定されるページ・フレーム実アドレスまたはセグメント・フレーム絶対アドレスを生成することができる。本明細書では、「拡張ＤＡＴ（ＥＤＡＴ）が適用される」という術語は、以下のすべてが真であることを意味する。１）ＥＤＡＴ機構がインストールされること、２）制御レジスタ０（ＣＲ０）ビット４０を介してＥＤＡＴ機構が動作可能となること、および３）アドレスがＤＡＴテーブル・エントリによって変換されること。
【００２１】
拡張ＤＡＴが適用されるとき、以下の追加の機能がＤＡＴプロセスで利用可能となる。
・ＤＡＴ保護ビットが領域テーブル・エントリに追加され、セグメント・テーブル・エントリおよびページ・テーブル・エントリ内のＤＡＴ保護ビットに類似の機能が提供される。
・ＳＴＥフォーマット制御がセグメント・テーブル・エントリに追加される。ＳＴＥフォーマット制御が０であるとき、ＤＡＴは、ページ・テーブル・エントリ内の変更記録オーバーライドが変更ビットの設定をページのために迂回することができるかどうかを示すことを除いて、現在定義されている通りに進行する。
・ＳＴＥフォーマット制御が１であるとき、セグメント・テーブル・エントリは以下も含む。
・１メガバイト・ブロックの絶対ストレージ位置を指定する（ページ・テーブル・オリジンではなく）セグメント・フレーム絶対アドレス。
・セグメントの個々のストレージ・キー内の対応するビットの代わりに任意選択で使用することのできるアクセス制御ビットおよびフェッチ保護ビット。
・セグメント・テーブル・エントリ内のアクセス制御ビットおよびフェッチ保護ビットの有効性を判定するビット。
・変更ビットの設定をセグメントの個々のストレージ・キーで迂回することができるかどうかを示す変更記録オーバーライド。
・ＤＡＴ例外割込みが発生したときに変換例外修飾子（ＴＸＱ）が格納され、例外が発生した実行環境（ホストまたはゲスト）、および変換中であったアドレスのソースに関する詳細が提供される。
【００２２】
ホスト・コンピュータ・システム
エミュレート化システムは、ホスト・アーキテクチャと解釈実行機能のどちらも提供することのできるコンピュータ・システムをエミュレートするエミュレータ・プログラムを含む。エミュレート化システム・メモリは、ホストとページ可能ゲストのどちらも含むことができる。エミュレート化ホスト・アーキテクチャ内で動作中のホスト・プログラムは、ゲスト・プログラムのStart Interpretive Executionでよく、次いでゲスト・プログラムは、解釈実行機構のエミュレーション下で動作することができる。ページ可能ゲストを実行するための解釈実行機構およびStartInterpretive Execution(SIE)命令の一例が、参照によりその全体が本明細書に組み込まれる"IBM(R) System/370Extended Architecture", IBM(R) Pub. No. SA22-7095 (1985)で説明されている。
【００２３】
次に図１を参照すると、ゲストおよびホスト拡張動的アドレス変換が実施されるホスト・コンピュータ・システム１００の一実施形態が示されている。好ましくは、ホスト・コンピューティング環境１００は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ）によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づく。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）は、参照によりその全体が本明細書に組み込まれる"z/Architecture(R) Principles of Operation", IBM(R) Pub.No. SA22-7832-05, 6th Edition, (April 2007)でより完全に説明されている。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づくコンピューティング環境は、例えば、共にＩＢＭ（Ｒ）によるｅＳｅｒｖｅｒおよびｚＳｅｒｉｅｓ（Ｒ）を含む。
【００２４】
コンピューティング環境１００は、仮想マシン・サポートを提供する中央プロセッサ・コンプレックス（ＣＰＣ）１０２を含む。ＣＰＣ１０２は、例えば、１つまたは複数の仮想マシン１０４、１つまたは複数のプロセッサ１０６、少なくとも１つのホスト１０８（例えば、ハイパーバイザなどの制御プログラム）、および入出力サブシステム１１０を含む。ＣＰＣの仮想マシン・サポートは、Ｌｉｎｕｘなどのゲスト・オペレーティング・システム１１２をそれぞれホストすることのできる多数の仮想マシンを操作する能力を提供する。
【００２５】
各仮想マシンは、別々のシステムとして機能することができる。すなわち、各仮想マシンを単独でリセットすることができ、ホストがゲスト・オペレーティング・システムを含み、異なるプログラムと共に動作する。仮想マシン内で動作中のオペレーティング・システムまたはアプリケーション・プログラムは、全部の完全なシステムへのアクセス権を有するように見えるが、実際にはシステムの一部だけが利用可能である。
【００２６】
この特定の例では、仮想マシンのモデルはＶ＝Ｖモデルであり、Ｖ＝Ｖモデルでは、仮想マシンのメモリが、実メモリではなく仮想メモリによって支持される。各仮想マシンは仮想線形メモリ空間を有する。物理資源はホストによって所有され、必要に応じて、ゲスト・オペレーティング・システムの処理要求を満たすように、共有物理資源がホストによってゲスト・オペレーティング・システムにディスパッチされる。このＶ＝Ｖ仮想マシン・モデルは、ゲスト・オペレーティング・システムと物理共有マシン資源との対話がホストによって制御されることを仮定する。通常、多数のゲストにより、ホストが単にハードウェア・リソースを区分化し、構成されたゲストに割り当てることが妨げられるからである。Ｖ＝Ｖモデルの１つまたは複数の側面が、参照によりその全体が本明細書に組み込まれる"z/VM: Running Guest Operating Systems", IBM(R) Pub. No.SC24-5997-02, (2001)でより完全に説明されている。
【００２７】
中央プロセッサ１０６は、仮想マシンに割当て可能な物理プロセッサ資源である。例えば、仮想マシン１０４は、１つまたは複数の仮想プロセッサを含み、仮想プロセッサのそれぞれは、仮想マシンに動的に割振り可能な物理プロセッサ資源のすべてまたは一部を表す。仮想マシンはホストによって管理される。ホストは、１つまたは複数のプロセッサ上で動作中のマイクロコードで実装することができ、またはマシン上で実行中のホスト・オペレーティング・システムの一部でよい。一実施例では、ホストは、ＩＢＭ（Ｒ）によって提供されるｚ／ＶＭ（Ｒ）などのＶＭハイパーバイザである。ｚ／ＶＭ（Ｒ）の一実施形態が、参照によりその全体が本明細書に組み込まれる"z/VM: General Information Manual", IBM(R) Pub. No.GC24-5991-04, (2001)でより完全に説明されている。
【００２８】
入出力システム１１０は、装置と主ストレージとの間の情報の流れを指示する。入出力システム１１０は、中央処理コンプレックス（ＣＰＣ）に結合される。入出力システム１１０は、中央処理コンプレックスの一部でよく、または中央処理コンプレックスとは別々のものでよい。Ｉ／Ｏサブシステムは、ＣＰＣに結合されたＩ／Ｏ装置と直接的に通信する作業から中央プロセッサを解放し、データ処理がＩ／Ｏ処理と同時に進行することを可能にする。
【００２９】
中央プロセッサ１０６は、プログラム・アドレス（仮想アドレス）をメモリの実アドレスに変換する動的アドレス変換（ＤＡＴ）機構（機能またはユニット）を有することができる。ＤＡＴ機構は通常、後のコンピュータ・メモリのブロックへのアクセスがアドレス変換の遅延を必要としないように、変換をキャッシュする変換ルックアサイド・バッファを含む。通常、キャッシュは、コンピュータ・メモリとプロセッサとの間で使用される。キャッシュは、複数のＣＰＵが使用できる大型のキャッシュと、大型のキャッシュと各ＣＰＵとの間の、より小型で高速な（低レベル）キャッシュとを有する階層型でよい。ある実装では、下位レベル・キャッシュが分割され、命令フェッチングとデータ・アクセスについて別々の低レベル・キャッシュが提供される。一実施形態では、命令が、命令フェッチ・ユニットによってメモリからキャッシュを介してフェッチされる。命令が命令復号化ユニットで復号化され、命令実行ユニットに（ある実施形態では他の命令と共に）ディスパッチされる。通常、いくつかの実行ユニット、例えば算術実行ユニット、浮動小数点実行ユニット、およびブランチ命令実行ユニットが使用される。命令が実行ユニットで実行され、必要に応じて、命令指定のレジスタまたはメモリからオペランドにアクセスする。メモリからオペランドにアクセスすべき場合、通常はロード・ストア・ユニットが、実行中の命令の制御下でアクセスを処理する。
【００３０】
一実施形態では、本発明はソフトウェア（Licensed InternalCode(LIC)、ファームウェア、マイクロコード、ミリコード、ピココードなどと呼ばれることがあり、そのいずれも本発明に適合する）で実施することができる。本発明を実施するソフトウェア・プログラム・コードは通常、コンピュータ・システムのＣＰＵ（中央演算処理装置）とも呼ばれるプロセッサによって、ＣＤ−ＲＯＭドライブ、テープ・ドライブ、ハード・ドライブなどの長期記憶媒体からアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ、ＣＤ−ＲＯＭなどの、データ処理システムと共に使用される様々な周知の媒体のいずれかの上に実施することができる。コードは、そのような媒体上で配布することができ、またはあるコンピュータ・システムのコンピュータ・メモリまたはストレージからネットワークを介して、他のコンピュータ・システムのユーザによる使用のためにそのような他のシステムに配布することができる。
【００３１】
あるいは、プログラム・コードをメモリ内に実施し、プロセッサ・バスを使用してプロセッサでアクセスすることができる。そのようなプログラム・コードは、様々なコンピュータ構成要素および１つまたは複数のアプリケーション・プログラムの機能および対話を制御するオペレーティング・システムを含む。プログラム・コードは通常、高密度記憶媒体から高速メモリにページングされ、高速メモリで、プログラム・コードはプロセッサによる処理のために利用可能となる。メモリ内で、もしくは物理媒体上でソフトウェア・プログラム・コードを実施すること、またはネットワークを介してソフトウェア・コードを配布すること、あるいはその両方を行う技法および方法は周知であり、本明細書ではさらに議論しない。プログラム・コードは、有形媒体（限定はしないが電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含む）上に作成および格納されるとき、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品媒体は通常、好ましくはコンピュータ・システム内の処理回路により、処理回路で実行するために読取り可能である。
【００３２】
本発明の１つまたは複数の態様を組み込むコンピューティング環境の別の例が、図２に示されている。この例では、ホスト・アーキテクチャのホスト・コンピュータ・システム２０２をエミュレートするエミュレート化ホスト・コンピュータ・システム２００が提供される。エミュレート化ホスト・プロセッサ２０４（または仮想ホスト・プロセッサ）が、ホスト・コンピュータのプロセッサで使用されるのとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ２０６を介して実現される。エミュレート化ホスト・コンピュータ・システムは、エミュレーション・プロセッサ２０６にとってアクセス可能なメモリ２０８を有する。例示的実施形態では、メモリ２０８が、ホスト・コンピュータ・メモリ２１０部分とエミュレーション・ルーチン２１２部分に区分化される。ホスト・コンピュータ・メモリ２１０は、エミュレート化ホスト・コンピュータ２０２のプログラムが使用することができ、図１の同様に名前の付けられた要素と類似の、ホストまたはハイパーバイザ２１４と、ゲスト・オペレーティング・システム２１８を実行する１つまたは複数の仮想マシン２１６のどちらも含むことができる。エミュレーション・プロセッサ２０６は、エミュレート化プロセッサのもの以外のアーキテクチャのアーキテクテッド命令セットのネイティブ命令を実行し、ネイティブ命令は、例えばエミュレーション・ルーチン・メモリ２１２から得られる。エミュレーション・プロセッサ２０６は、アクセスされるホスト命令の機能をエミュレートするネイティブ命令実行ルーチンを求めるためにアクセスされるホスト命令（複数可）を復号化することのできるシーケンスおよびアクセス／復号化ルーチンで得られる１つまたは複数の命令（複数可）を使用することにより、ホスト・コンピュータ・メモリ２１０内のプログラムから実行するためにホスト命令にアクセスすることができる。そのような１つのホスト命令は、例えば、ホストが仮想マシン内のプログラムを実行するためにそれによってシークするStart Interpretive Execution(SIE)命令でよい。エミュレーション・ルーチン２１２は、この命令のためのサポート、およびこのＳＩＥ命令の定義に従って仮想マシンで一続きのゲスト命令を実行するためのサポートを含むことができる。
【００３３】
ホスト・コンピュータ・システム・アーキテクチャについて定義される他の機能は、例えば汎用レジスタ、制御レジスタ、動的アドレス変換、Ｉ／Ｏサブシステム・サポート、プロセッサ・キャッシュなどの機構を含むアーキテクテッド機構ルーチンでエミュレートすることができる。エミュレーション・ルーチンはまた、エミュレーション・ルーチンの性能を改善するために、エミュレーション・プロセッサ２０６で利用可能な機能（汎用レジスタ、仮想アドレスの動的変換など）も利用することができる。ホスト・コンピュータの機能をエミュレートする際にプロセッサを支援するために、特殊ハードウェアおよびオフロード・エンジンも設けることができる。一実施形態では、ホスト・コンピュータは、例えばディスケット、ハード・ドライブ、ＣＤ−ＲＯＭなどの様々な周知の記憶媒体２２０と通信する。ソフトウェア・プログラム・コードは、そのような媒体上で配布することができ、またはネットワーク２２２を介してユーザに配布することができる。
【００３４】
コンピュータ・プロセッサおよびレジスタ
一実施形態では、ＣＰＵのプログラム命令機能は、通信バスを介して複数のレジスタと通信する。通信バスは、ＣＰＵの内部または外部でよい。あるレジスタは読取り専用でよい。他のハードウェアまたはソフトウェアあるいはその両方も、ＣＰＵでアクセス可能なレジスタのうちの１つまたは複数に読取り／書込みすることができる。命令演算コード（命令コード）は、何らかの特定の機械語命令操作でどのタイプのレジスタを使用すべきかを決定する。
【００３５】
汎用レジスタ
命令は、１６個の汎用レジスタのうちの１つまたは複数の中の情報を指定することができる。汎用レジスタは、アドレス計算でベース・アドレス・レジスタおよび索引レジスタとして使用することができ、一般算術演算および論理演算でアキュムレータとして使用することができる。各レジスタは６４ビット位置を含む。汎用レジスタは、番号０〜１５で識別され、命令内の４ビットＲフィールドで指定される。ある命令は、いくつかのＲフィールドを有することによって複数の汎用レジスタをアドレス指定することを実現する。ある命令では、特定の汎用レジスタの使用が、命令のＲフィールドで明示的に指定されるのではなく、暗示される。
【００３６】
ある演算では、２つの隣接する汎用レジスタのビット３２〜６３またはビット０〜６３のどちらかが結合され、それぞれ６４ビット・フォーマットまたは１２８ビット・フォーマットが提供される。こうした演算では、プログラムは、左端の（高次）３２ビットまたは６４ビットを含む偶数番号のレジスタを指定しなければならない。次に高い番号のレジスタは、右端の（低次）３２ビットまたは６４ビットを含む。一般算術演算および論理演算でアキュムレータとして使用することに加えて、１６個の汎用レジスタのうちの１５個は、アドレス生成でベース・アドレスおよび索引レジスタとしても使用される。こうしたケースでは、レジスタが、命令内の４ビットＢフィールドまたはＸフィールドで指定される。ＢフィールドまたはＸフィールド内の値０は、ベースまたは索引が適用されないことを示し、したがって、ベース・アドレスまたは索引を含むものとして汎用レジスタ０を指定できないことを指定する。
【００３７】
制御レジスタ
制御レジスタは、プログラム・ステータス・ワードの外部で制御情報を維持および操作することを実現する。ＣＰＵは、６４ビット位置をそれぞれ有する１６個の制御レジスタを有する。レジスタ内のビット位置は、プログラム・イベント記録などのシステム内の特定の機構に割り当てられ、演算を行うことができることを示すのに使用され、または機構で必要とされる特別な情報を提供するのに使用される。制御レジスタは、番号０〜１５で識別され、命令LOAD CONTROLおよびSTORE CONTROLで４ビットＲフィールドで指定される。こうした命令で複数の制御レジスタをアドレス指定することができる。
【００３８】
制御レジスタ１
制御レジスタ１は１次アドレス空間制御要素（ＰＡＳＣＥ）を含む。一実施形態では、制御レジスタ１は、レジスタ内の実空間制御ビット（Ｒ）に応じて、以下の２つのフォーマットのうちの一方を有する。
【００３９】
【表１】
2011513808.tif 000003
【００４０】
【表２】
2011513808.tif 000004
【００４１】
１次アドレス空間制御要素（ＰＡＳＣＥ）内の選択されたフィールドが、以下のように割り振られる。
１次領域テーブルまたはセグメント・テーブル・オリジン：制御レジスタ１内の１次領域テーブルまたはセグメント・テーブル指定のビット０〜５１の右側に１２個の０を付加したものが、１次領域テーブルまたはセグメント・テーブルの先頭を指定する６４ビット・アドレスを形成する。アドレスが実アドレスか、それとも絶対アドレスかは予測不能である。このテーブルは、１次アドレス空間内の仮想アドレスを変換するのに使用されるので、１次領域テーブルまたはセグメント・テーブルと呼ばれる。
【００４２】
１次実空間制御（Ｒ）：制御レジスタ１のビット５８が０である場合、レジスタは、領域テーブルまたはセグメント・テーブル指定を含む。ビット５８が１である場合、レジスタは実空間指定を含む。ビット５８が１であるとき、セグメント・テーブル・エントリの変換ルックアサイド・バッファ表現内の共通セグメント・ビットの１の値により、１次アドレス空間に対する参照の変換時に、制御レジスタ１内のトークン・オリジンと変換ルックアサイド・バッファ・エントリ内のテーブル・オリジンとが合致しても、それが指定するエントリおよび変換ルックアサイド・バッファ・ページ・テーブル・コピーの使用が防止される。
【００４３】
１次指定タイプ制御（ＤＴ）：Ｒが０であるとき、制御レジスタ１内のテーブル指定のタイプが、レジスタ内のビット６０および６１によって以下のように指定される。
【００４４】
【表３】
2011513808.tif 000005
【００４５】
Ｒが０であるとき、ＰＡＳＣＥを使用して、左端の１ビットがアドレスのビット位置０〜１０にある仮想アドレスを変換する試行が行われるとき、ビット６０および６１は、２進数１１でなければならない。同様に、左端の１ビットがアドレスのビット位置１１〜２１にあるとき、ビット６０および６１は、２進数１１または１０でなければならず、左端の１ビットがアドレスのビット位置２２〜３２にあるとき、ビット６０および６１は、２進数１１、１０、または０１でなければならない。そうでない場合、ＡＳＣＥタイプ例外が認識される。
【００４６】
１次領域テーブルまたはセグメント・テーブルの長さ（ＴＬ）：制御レジスタ１内の１次領域テーブル指定またはセグメント・テーブル指定のビット６２および６３が、１次領域テーブルまたはセグメント・テーブルの長さを４０９６バイト単位で指定し、したがって領域テーブルまたはセグメント・テーブルの長さは、５１２エントリの倍数単位で可変となる。４０９６バイト単位の１次領域テーブルまたはセグメント・テーブルの長さは、ＴＬ値よりも１つ大きい。長さフィールドの内容は、テーブルで変換すべき仮想アドレスの部分（ＲＦＸ、ＲＳＸ、ＲＴＸ、またはＳＸ）がテーブル内に含まれるエントリを指定するかどうかを確立するのに使用される。
【００４７】
１次実空間トークン・オリジン：制御レジスタ１内の１次実空間指定のビット０〜５１の右側に１２個の０を付加したものが、１次アドレス空間を参照するためのＶ＝Ｒ変換を実現する変換ルックアサイド・バッファ・エントリを形成および使用する際に使用することのできる６４ビット・アドレスを形成する。このアドレスはトークンとして使用されるだけであり、ストレージ参照を実施するのには使用されないが、それでもこのアドレスは有効なアドレスでなければならない。そうでない場合、制御レジスタ１の内容が使用されるとき、誤った変換ルックアサイド・バッファ・エントリが使用されることがある。
【００４８】
制御レジスタ１の以下のビットは割り当てられず、無視される。レジスタが領域テーブル指定またはセグメント・テーブル指定を含む場合、ビット５２、５３、および５９。レジスタが実空間指定を含む場合、ビット５２、５３、および５９〜６３。
【００４９】
制御レジスタ７
制御レジスタ７は２次アドレス空間制御要素（ＳＡＳＣＥ）を含む。一実施形態では、制御レジスタ７は、レジスタ内の実空間制御ビット（Ｒ）に応じて、以下の２つのフォーマットの一方を有する。
【００５０】
【表４】
2011513808.tif 000006
【００５１】
【表５】
2011513808.tif 000007
【００５２】
制御レジスタ１３
制御レジスタ１３はホーム・アドレス空間制御要素（ＨＡＳＣＥ）を含む。一実施形態では、制御レジスタ１３は、レジスタ内の実空間制御ビット（Ｒ）に応じて、以下の２つのフォーマットの一方を有する。
【００５３】
【表６】
2011513808.tif 000008
【００５４】
【表７】
2011513808.tif 000009
【００５５】
アクセス・レジスタ
ＣＰＵは、０〜１５と番号が付けられる１６個のアクセス・レジスタを有する。アクセス・レジスタは、ＡＳＣＥの間接指定を含む３２ビット位置からなる。ＡＳＣＥは、対応するアドレス空間に対する参照を変換する動的アドレス変換（ＤＡＴ）機構で使用されるパラメータである。ＣＰＵがアクセス・レジスタ・モードと呼ばれるモードにあるとき（プログラム・ステータス・ワード内のビットで制御される）、ストレージ・オペランド参照に関する論理アドレスを指定するのに使用される命令Ｂフィールドが、アクセス・レジスタを指定し、アクセス・レジスタで指定されるＡＳＣＥが、参照を行うためにＤＡＴで使用される。ある命令では、Ｒフィールドが、Ｂフィールドの代わりに使用される。アクセス・レジスタの内容をロードおよび格納し、あるアクセス・レジスタから別のアクセス・レジスタに内容を移動する命令が提供される。
【００５６】
アクセス・レジスタ１〜１５のそれぞれは、現命令空間（１次アドレス空間）を含む任意のアドレス空間を指定することができる。アクセス・レジスタ０は１次命令空間を指定する。アクセス・レジスタ１〜１５のうちの１つがアドレス空間を指定するのに使用されるとき、ＣＰＵは、アクセス・レジスタの内容を変換することによってどのアドレス空間が指定されるかを決定する。アクセス・レジスタ０がアドレス空間を指定するのに使用されるとき、ＣＰＵは、アクセス・レジスタを１次命令空間を指定するものとして扱い、アクセス・レジスタの実際の内容を検査しない。したがって、１６個のアクセス・レジスタは、任意のある時間に、１次命令空間と、最大で１５個の他の空間とを指定することができる。
【００５７】
プログラム・ステータス・ワード（ＰＳＷ）
プログラム・ステータス・ワードは、命令アドレス、条件コード、および命令順序付けを制御し、ＣＰＵの状態を判定するのに使用される他の情報を含む。アクティブなプログラム・ステータス・ワード、または制御中のプログラム・ステータス・ワードは、現プログラム・ステータス・ワードと呼ばれる。現プログラム・ステータス・ワードは、現在実行中のプログラムを管理する。
【００５８】
ＣＰＵは、例外条件および外部刺激に応答してＣＰＵが別のプログラムに迅速に切り替わることを可能にする割込み機能を有する。割込みが発生したとき、ＣＰＵは、現プログラム・ステータス・ワードを、特定のクラスの割込み用の、旧プログラム・ステータス・ワード位置と呼ばれる、割り当てられたストレージ位置に配置する。ＣＰＵは、２番目に割り当てられたストレージ位置から新しいプログラム・ステータス・ワードをフェッチする。この新しいプログラム・ステータス・ワードは、実行すべき次のプログラムを決定する。ＣＰＵが割込みの処理を終了したとき、割込みを処理するプログラムが、旧プログラム・ステータス・ワードを再ロードし、再び現プログラム・ステータス・ワードにし、その結果割込みを受けたプログラムが続行することができる。
【００５９】
割込みには、外部、Ｉ／Ｏ、マシン・チェック、プログラム、再始動、およびスーパーバイザ呼出しという６つのクラスがある。各クラスは、実ストレージに永続的に割り当てられる旧プログラム・ステータス・ワード位置と新プログラム・ステータス・ワード位置の別個の対を有する。
【００６０】
現プログラム・ステータス・ワード
ＣＰＵ内の現プログラム・ステータス・ワードは、現在アクティブなプログラムの実行のために必要な情報を含む。プログラム・ステータス・ワードは、長さ１２８ビットであり、命令アドレス、条件コード、および他の制御フィールドを含む。一般には、プログラム・ステータス・ワードは、命令順序付けを制御し、現在実行中のプログラムに関するＣＰＵのステータスの多くを保持および指示するのに使用される。追加の制御およびステータス情報が制御レジスタ内に含まれ、ストレージ位置が永続的に割り当てられる。ＣＰＵのステータスは、新しいプログラム・ステータス・ワードまたはプログラム・ステータス・ワードの一部をロードすることによって変更することができる。
【００６１】
ＣＰＵの割込み中に、ＣＰＵのステータスを保存するように現プログラム・ステータス・ワードを格納し、次いで新しいプログラム・ステータス・ワードをロードすることによって制御が切り替わる。LOAD PSWまたはLOAD PSW EXTENDEDの実行、または初期プログラム・ローディング・シーケンスの正常な終了により、新しいプログラム・ステータス・ワードが導入される。命令アドレスは、順次命令実行によって更新され、正常な分岐で置き換えられる。プログラム・ステータス・ワードの一部に対して作用する他の命令が提供される。
【００６２】
プログラム・ステータス・ワードを変更する命令の割込みまたは実行が完了したとき、新しいプログラム・ステータス・ワード、または修正後プログラム・ステータス・ワードがアクティブとなる（すなわち、現プログラム・ステータス・ワードに導入される情報が、ＣＰＵの制御を引き受ける）。プログラム・ステータス・ワードを変更する命令に関連するプログラム・イベント記録（ＰＥＲ）に関する割込みが、演算の開始時に有効なＰＥＲマスクの制御下で発生する。プログラム・ステータス・ワードのビット０〜７は、集合的にシステム・マスクと呼ばれる。一実施形態では、プログラム・ステータス・ワードは以下のフォーマットを有する。
【００６３】
【表８】
2011513808.tif 000010
【００６４】
以下は、選択されたプログラム・ステータス・ワード・フィールドの機能の簡潔な概要である。
【００６５】
ＤＡＴモード（Ｔ）：ビット５は、ストレージにアクセスするのに使用される論理アドレスおよび命令アドレスの暗黙的動的アドレス変換が行われるかどうかを制御する。ビット５が０であるとき、ＤＡＴがオフであり、論理アドレスおよび命令アドレスが実アドレスとして扱われる。ビット５が１であるとき、ＤＡＴがオンであり、動的アドレス変換機構が起動される。
【００６６】
ＰＳＷキー：ビット８〜１１は、ＣＰＵによるストレージ参照のためのアクセス・キーを形成する。参照がキー制御保護の対象となる場合、情報が格納されるとき、または情報がフェッチングに対して保護される位置からフェッチされるとき、ＰＳＷキーがストレージ・キーと突き合わされる。しかし、MOVE TO PRIMARY、MOVE TO SECONDARY、MOVE WITH KEY、MOVE WITH SOURCE KEY、およびMOVEWITH DESTINATION KEYのそれぞれのオペランドのうちの１つについて、オペランドとして指定されるアクセス・キーが、ＰＳＷキーの代わりに使用される。
【００６７】
アドレス空間制御（ＡＳ）：ビット１６および１７が、プログラム・ステータス・ワード・ビット５と共に、変換モードを制御する。
【００６８】
条件コード（ＣＣ）：ビット１８および１９は、条件コードの２つのビットである。条件コードは、一定の命令を実行する際に得られる結果に応じて、０、１、２、または３に設定される。大部分の算術演算および論理演算、ならびにいくつかの他の演算は、条件コードを設定する。命令BRANCH ON CONDITIONは、条件コード値のうちの任意の選択内容を分岐に関する基準として指定することができる。
【００６９】
命令アドレス：プログラム・ステータス・ワードのビット６４〜１２７は命令アドレスである。このアドレスは、ＣＰＵが待ち状態にある（プログラム・ステータス・ワードのビット１４が１である）のでない限り、実行すべき次の命令の左端のバイトの位置を指定する。
【００７０】
アドレス・タイプおよびフォーマット
主ストレージをアドレス指定するために、絶対アドレス、実アドレス、および仮想アドレスという３つの基本的なタイプのアドレスが認識される。アドレスは、ストレージ・アクセス中にアドレスに適用される変換に基づいて区別される。アドレス変換は、仮想アドレスを実アドレスに変換する。プレフィックス変換は、実アドレスを絶対アドレスに変換する。３つの基本アドレス・タイプに加えて、命令および現モードに応じて、３つの基本タイプのうちのいずれかとして扱われる追加のタイプが定義される。
【００７１】
絶対アドレス
絶対アドレスは、主ストレージ位置に割り当てられるアドレスである。絶対アドレスは、それに対してどんな変換も実施されないストレージ・アクセスのために使用される。構成内のチャネル・サブシステムおよびすべてのＣＰＵは、同じ絶対アドレスを使用することによって共有主ストレージ位置を参照する。利用可能な主ストレージには通常、０から始まる連続する絶対アドレスが割り当てられ、整数境界上に完全な４キロバイト・ブロックとしてアドレスが割り当てられる。物理位置に割り当てられていないブロックで絶対アドレスを使用する試行が行われるときに、例外が認識される。あるモデルでは、オペレータが絶対アドレスと物理位置との対応を変更することを可能にするストレージ再構成制御を提供することができる。しかし、任意の１時点で、物理位置は、複数の絶対アドレスとは関連付けられない。その絶対アドレスに従って順序付けられたバイト位置からなるストレージは、絶対ストレージと呼ばれる。
【００７２】
実アドレス
実アドレスは、実ストレージ内の位置を特定する。主ストレージにアクセスするために実アドレスが使用されるとき、実アドレスがプレフィックス変換によって変換され、絶対アドレスが形成される。任意の瞬間に、構成内の各ＣＰＵについて１つの実アドレス−絶対アドレス・マッピングが存在する。主ストレージにアクセスするために実アドレスがＣＰＵで使用されるとき、プレフィックス変換によって実アドレスを絶対アドレスに変換することができる。この特定の変換は、ＣＰＵに関するプレフィックス・レジスタ内の値で定義される。その実アドレスに従って順序付けられたバイト位置からなるストレージは、実ストレージと呼ばれる。
【００７３】
仮想アドレス
仮想アドレスは、仮想ストレージ内の位置を特定する。主ストレージにアクセスするために仮想アドレスが使用されるとき、仮想アドレスが、動的アドレス変換により、プレフィックス変換の対象となる可能性のある実アドレスに変換されて絶対アドレスが形成され、または直接的に絶対アドレスに変換される。
【００７４】
１次仮想アドレス
１次仮想アドレスは、１次アドレス空間制御要素（ＰＡＳＣＥ）によって変換すべき仮想アドレスである。論理アドレスは、１次空間モードにあるとき、１次仮想アドレスとして扱われる。命令アドレスは、１次空間モード、２次空間モード、またはアクセス・レジスタ・モードにあるとき、１次仮想アドレスとして扱われる。MOVE TO PRIMARYの第１オペランド・アドレスおよびMOVE TO SECONDARYの第２オペランド・アドレスが、１次仮想アドレスとして扱われる。さらに、ページ可能ゲストが実行中のとき、ゲストが絶対ストレージとみなす主ストレージ（メモリ）が、ホストの１次アドレス空間内で表現され、すなわち、ゲスト絶対アドレスがホスト１次仮想アドレスとして扱われる。
【００７５】
２次仮想アドレス
２次仮想アドレスは、２次アドレス空間制御要素（ＳＡＳＣＥ）によって変換すべき仮想アドレスである。論理アドレスは、２次空間モードにあるとき、２次仮想アドレスとして扱われる。MOVE TO PRIMARYの第２オペランド・アドレスおよびMOVE TO SECONDARYの第１オペランド・アドレスが、２次仮想アドレスとして扱われる。
【００７６】
ＡＲ指定仮想アドレス
ＡＲ指定仮想アドレスは、アクセス・レジスタ指定アドレス空間制御要素によって変換すべき仮想アドレスである。論理アドレスは、アクセス・レジスタ・モードにあるとき、ＡＲ指定アドレスとして扱われる。
【００７７】
ホーム仮想アドレス
ホーム仮想アドレスは、ホーム・アドレス空間制御要素（ＨＡＳＣＥ）によって変換すべき仮想アドレスである。論理アドレスおよび命令アドレスは、ホーム空間モードにあるとき、ホーム仮想アドレスとして扱われる。
【００７８】
命令アドレス
ストレージから命令をフェッチするのに使用されるアドレスは、命令アドレスと呼ばれる。命令アドレスは、実モードでは実アドレスとして扱われ、１次空間モード、２次空間モード、またはアクセス・レジスタ・モードでは１次仮想アドレスとして扱われ、ホーム空間モードではホーム仮想アドレスとして扱われる。現プログラム・ステータス・ワード内の命令アドレスおよびEXECUTEのターゲット・アドレスは、命令アドレスである。
【００７９】
有効アドレス
ある状況では、「有効アドレス」という用語を用いることが便利である。有効アドレスは、動的アドレス変換またはプレフィックス変換による任意の変換が実施される前に存在するアドレスである。有効アドレスは、レジスタ内に直接的に指定することができ、またはアドレス計算の結果として得ることができる。アドレス計算は、ベースおよび変位の追加、またはベース、索引、および変位の追加である。
【００８０】
プレフィックス変換
プレフィックス変換は、実アドレスの範囲０〜８１９１を各ＣＰＵについての絶対ストレージ内の異なるブロックに割り当てる能力を提供し、したがって、主ストレージを共有する複数のＣＰＵが、特に割込みの処理で、干渉を最小限に抑えて同時に動作することが可能となる。プレフィックス変換は、範囲０〜８１９１内の実アドレスを、ＣＰＵに関するプレフィックス・レジスタのビット位置０〜５０内の値で識別される８Ｋバイト絶対アドレスのブロック（プレフィックス・エリア）に１対１に対応させ、プレフィックス・レジスタ内のその値で識別される実アドレスのブロックを、絶対アドレス０〜８１９１に１対１に対応させる。残りの実アドレスは、対応する絶対アドレスと同じである。この変換により、各ＣＰＵが、最初の８Ｋバイト、および他のＣＰＵのプレフィックス・レジスタで指定される位置を含む主ストレージのすべてにアクセスすることが可能となる。
【００８１】
プレフィックスは、プレフィックス・レジスタのビット位置０〜５０内に含まれる５１ビット量である。一実施形態では、プレフィックス・レジスタは以下のフォーマットを有する。
【００８２】
【表９】
2011513808.tif 000011
【００８３】
プレフィックス変換が適用されるとき、実アドレスのビット０〜５０に応じて以下の規則のうちの１つを使用することにより、実アドレスが絶対アドレスに変換される。
１．アドレスのビット０〜５０がすべて０である場合、アドレスのビット０〜５０がプレフィックスのビット０〜５０で置き換えられる。
２．アドレスのビット０〜５０がプレフィックスのビット０〜５０に等しい場合、アドレスのビット０〜５０が０で置き換えられる。
３．アドレスのビット０〜５０がすべてが０ではなく、プレフィックスのビット０〜５０に等しくない場合、アドレスのビット０〜５０は不変のままである。
【００８４】
ストレージに提示されるアドレスだけが、プレフィックス変換で変換される。アドレスのソースの内容は不変のままである。
【００８５】
実アドレスと絶対アドレスとの間の区別は、プレフィックス・レジスタがすべて０を含むときであっても行われ、その場合、実アドレスとその対応する絶対アドレスとは同一である。
【００８６】
実アドレスと絶対アドレスとの関係
実アドレスと絶対アドレスとの関係は、以下のように図式で示される。
【００８７】
【表１０】
2011513808.tif 000012
【００８８】
アドレス空間
アドレス空間は、整数の連続するシーケンス（仮想アドレス）と、各数をストレージ内のバイト位置と関連付けることを可能にする特定の変換パラメータである。シーケンスは０で始まり、左から右に進む。
【００８９】
主ストレージにアクセスするために仮想アドレスがＣＰＵで使用されるとき、仮想アドレスがまず、動的アドレス変換（ＤＡＴ）によって実アドレスまたは絶対アドレスに変換される。実アドレスはさらに、絶対アドレスを形成するためにプレフィックス変換が施されることがある。ＤＡＴは、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、およびページ・テーブルを変換パラメータとして使用することができる。特定のアドレス空間についての最高レベル・テーブルの指定（オリジンおよび長さ）は、アドレス空間制御要素（ＡＳＣＥ）と呼ばれ、制御レジスタ内でＤＡＴで使用するために見い出され、またはアクセス・レジスタで指定されるように見出される。あるいは、アドレス空間に関するＡＳＣＥは実空間指定でよく、このことは、ＤＡＴは、どんなテーブルも使用することなく、単に仮想アドレス実アドレスとして扱うことによって仮想アドレスを変換すべきであることを示す。
【００９０】
ＤＡＴは、異なる時間に、異なる制御レジスタ内のＡＳＣＥ、またはアクセス・レジスタで指定されるＡＳＣＥを使用する。現プログラム・ステータス・ワードで指定される変換モードで選択が決定される。１次空間モード、２次空間モード、アクセス・レジスタ・モード、およびホーム空間モードという４つの変換モードが利用可能である。変換モードに応じて、異なるアドレス空間がアドレス可能である。
【００９１】
ＣＰＵが１次空間モードまたは２次空間モードにある任意の瞬間に、ＣＰＵは、１次アドレス空間および２次アドレス空間の２つのアドレス空間に属する仮想アドレスを変換することができる。ＣＰＵがアクセス・レジスタ・モードにある任意の瞬間に、ＣＰＵは、最大で１６のアドレス空間−１次アドレス空間と最大で１５のＡＲ指定アドレス空間−の仮想アドレスを変換することができる。ＣＰＵがホーム空間モードにある任意の瞬間に、ＣＰＵは、ホーム・アドレス空間の仮想アドレスを変換することができる。
【００９２】
１次アドレス空間はそのようなものとして識別される。１次アドレス空間は、１次アドレス空間制御要素（ＰＡＳＣＥ）によって変換される１次仮想アドレスからなるからである。同様に、２次アドレス空間は、２次アドレス空間制御要素（ＳＡＳＣＥ）によって変換される２次仮想アドレスからなる。ＡＲ指定アドレス空間は、アクセス・レジスタ指定アドレス空間制御要素（ＡＲ指定ＡＳＣＥ）によって変換されるＡＲ指定仮想アドレスからなり、ホーム・アドレス空間は、ホーム・アドレス空間制御要素（ＨＡＳＣＥ）によって変換されるホーム仮想アドレスからなる。１次および２次ＡＳＣＥは、それぞれ制御レジスタ１および７内にある。ＡＲ指定ＡＳＣＥは、制御レジスタ１および７内でよく、またはＡＳＮ第２テーブル・エントリと呼ばれるテーブル・エントリ内でよい。ＨＡＳＣＥは制御レジスタ１３内にある。
【００９３】
動的アドレス変換
動的アドレス変換は、（例えばストレージ参照中に）仮想アドレスを対応するメイン・メモリ・アドレス（実施形態では実アドレスまたは絶対アドレス）に変換するプロセスである。仮想アドレスは、１次仮想アドレス、２次仮想アドレス、アクセス・レジスタ指定仮想アドレス、またはホーム仮想アドレスでよい。こうしたアドレスは、それぞれＰＡＳＣＥ、ＳＡＳＣＥ、ＡＲ指定ＡＳＣＥ、またはＨＡＳＣＥによって変換される。適切なＡＳＣＥの選択後、変換プロセスは、４つのタイプの仮想アドレスのすべてについて同一である。
【００９４】
アドレッシング変換モード
有効アドレスは、動的アドレス変換またはプレフィックス変換による任意の変換が実施される前に存在するアドレス（仮想アドレス）である。動的アドレス変換を制御するプログラム・ステータス・ワード内の３つのビットは、ＤＡＴモード・ビットであるビット５、ならびにアドレス空間制御ビットであるビット１６および１７である。ＤＡＴモード・ビットが０であるとき、ＤＡＴはオフであり、ＣＰＵは実モードにある。ＤＡＴモード・ビットが１であるとき、ＤＡＴはオンであり、ＣＰＵは、アドレス空間制御ビットで指定される変換モードにある。２進数００が１次空間モードを示し、２進数０１がアクセス・レジスタ・モードを示し、２進数１０が２次空間モードを示し、２進数１１がホーム空間モードを示す。様々なモードを、各モードでのアドレスの処理と共に以下に示す。
【００９５】
【表１１】
2011513808.tif 000013
【００９６】
プログラム・ステータス・ワードは１２８ビット・ワードであり、部分的に、アドレッシング・モードを示す２ビットを与える。一実施形態では、ビット３１は拡張アドレッシング・モード（ＥＡ）ビットであり、ビット３２はベース・アドレッシング・モード（ＢＡ）ビットである。こうした２つのビットは、アドレスのサイズを示す。こうした２つのビットのそれぞれの状態は、２進数（１または０）である。ＥＡビットが０であり、ＢＡビットが０である場合、２４ビット・アドレッシングが示される。２４ビット・アドレッシングが示される場合、６４ビット・ワード（６４ビット・エンティティは一般にダブルワードと呼ばれる）のビット４０〜６３が、アドレスが配置される所である。命令アドレスが１２８ビット・エンティティ（クワッドワード）の２番目の６４ビットを占有する場合、プログラム・ステータス・ワード内のビット位置は以下の通りである。２４ビット・モードでは、命令アドレスが、プログラム・ステータス・ワードのビット１０４〜１２７内にある。３１ビット・モードでは、命令アドレスは、プログラム・ステータス・ワードのビット９７〜１２７内にある。６４ビット・モードでは、命令アドレスは、プログラム・ステータス・ワードのビット６４〜１２７内にある。ＥＡビットが０であり、ＢＡビットが１である場合、３１ビット・アドレッシングが示される。適切な６４ビット・ワードが、ビット位置３３〜６３に位置する３１ビット・アドレスを含む。ＥＡビットが１であり、ＢＡビットが１である場合、６４ビット・ワードの６４ビット全体であるビット０〜６３がアドレスを含む。そうでない場合、例外条件が示される。アドレッシング・モードが得られた後は、ＡＳＣＥを求める必要がある。
【００９７】
アドレス空間制御要素（ＡＳＣＥ）
次に図３を参照すると、仮想アドレスの動的アドレス変換のための有効アドレス空間制御要素（ＡＳＣＥ）を求めるのにプログラム・ステータス・ワードがどのように使用されるかについての一実施形態が示されている。ＡＳＣＥは、例えば２ギガバイト（ギガ＝２３０）アドレス空間を指定することができる。あるいは、ＡＳＣＥは、例えば４テラバイト（テラ＝２４０）、８ペタバイト（ペタ＝２５０）、または１６エクサバイト（エクサ＝２６０）アドレス空間を指定することができる。あるいは、ＡＳＣＥは、実空間指定を指定することができる。実空間指定により、仮想アドレスが、１つまたは複数のアドレス変換テーブルを参照することなくストレージ内の実アドレスとして処理される。
【００９８】
プログラム・ステータス・ワード３００は、変換（Ｔ）ビット３０２およびアドレス空間（ＡＳ）ビット３０４を含む。３０６で、変換（Ｔ）ビットが０である場合、アドレスは実アドレス３２６である。３０８で、アドレス空間（ＡＳ）が０（２進数００）に等しい場合、この仮想アドレスに関する有効なＡＳＣＥは１次アドレス空間制御要素（ＰＡＳＣＥ）３１０である。３１２で、アドレス空間（ＡＳ）が１（２進数０１）に等しい場合、有効なＡＳＣＥはアクセス・レジスタ指定アドレス空間制御要素３１４である。３１６で、アドレス空間（ＡＳ）が２（２進数１０）に等しい場合、有効なＡＳＣＥは２次アドレス空間制御要素（ＳＡＳＣＥ）３１８である。そうでない場合、アドレス空間（ＡＳ）は３（２進数１１）に等しく、有効なＡＳＣＥはホーム・アドレス空間制御要素（ＨＡＳＣＥ）３２２である。
【００９９】
有効なＡＳＣＥの選択の後、好ましくは、動的アドレス変換のプロセスは、すべての４つのタイプの仮想アドレスについて同一である。
【０１００】
セグメント・テーブル指定または領域テーブル指定により、実ストレージまたは絶対ストレージでオペレーティング・システムによって確立されたテーブルによって変換が実施される。実空間指定により、仮想アドレスは、ストレージ内のテーブルを使用することなく単に実アドレスとして処理される。
【０１０１】
セグメント・テーブル指定または領域テーブル指定を使用するときの変換のプロセスでは、領域、セグメント、およびページという３つのタイプの情報単位が認識される。領域は、２ギガバイトに及び、２ギガバイト境界で始まる順次仮想アドレスのブロックである。セグメントは、１メガバイトに及び、１メガバイト境界で始まる順次仮想アドレスのブロックである。ページは、４キロバイトに及び、４キロバイト境界で始まる順次仮想アドレスのブロックである。
【０１０２】
仮想アドレス・フォーマット
仮想アドレスの変換は、変換テーブルの階層の複数の変換テーブルを参照して、実アドレスまたは絶対アドレスを得ることを含むことがある。実アドレスはさらに、絶対アドレスを形成するためのプレフィックス変換操作の対象となることがある。仮想アドレスは、変換テーブルの階層内の変換テーブル内のエントリに対する索引を含む。したがって、仮想アドレスは４つの基本フィールドに分割される。ビット０〜３２は領域索引（ＲＸ）と呼ばれ、ビット３３〜４３はセグメント索引（ＳＸ）と呼ばれ、ビット４４〜５１はページ索引（ＰＸ）と呼ばれ、ビット５２〜６３はバイト索引（ＢＸ）と呼ばれる。一実施形態では、仮想アドレスは以下のフォーマットを有する。
【０１０３】
【表１２】
2011513808.tif 000014
【０１０４】
そのＡＳＣＥで決定されるように、仮想アドレス空間は、１つの領域からなる２ギガバイト空間でよく、または最大８ギガバイト領域からなる最大１６エクサバイト空間でよい。２ギガバイト・アドレス空間に適用される仮想アドレスのＲＸ部分は、すべて０でなければならず、そうでない場合、例外が認識される。仮想アドレスのＲＸ部分はそれ自体、３つのフィールドに分割される。ビット０〜１０は領域第１索引（ＲＦＸ）と呼ばれ、ビット１１〜２１は領域第２索引（ＲＳＸ）と呼ばれ、ビット２２〜３２は領域第３索引（ＲＴＸ）と呼ばれる。一実施形態では、仮想アドレスのビット０〜３２は、以下のフォーマットを有する。
【０１０５】
【表１３】
2011513808.tif 000015
【０１０６】
ＲＴＸがその中で左端最上位部分（４２ビット・アドレス）である仮想アドレスが、４テラバイト（２０４８領域）をアドレス指定することができ、ＲＳＸがその中で左端最上位部分（５３ビット・アドレス）である仮想アドレスが、８ペタバイト（４１９４３０４領域）をアドレス指定することができ、ＲＦＸがその中で左端最上位部分（６４ビット・アドレス）である仮想アドレスが、１６エクサバイト（８５８９９３４５９２領域）をアドレス指定することができる。
【０１０７】
ＲＸがその中で０である仮想アドレスは、セグメント・テーブルおよびページ・テーブルの２つの変換テーブルによって実アドレスに変換することができる。ＥＤＡＴ機構が動作可能であると、セグメント・テーブルだけで変換を完了することができる。ＲＦＸは非０でよく、その場合、領域第１テーブル、領域第２テーブル、および領域第３テーブルが必要となる。ＲＦＸが０であるが、ＲＳＸが非０であることがある場合、領域第２テーブルおよび領域第３テーブルが必要となる。ＲＦＸおよびＲＳＸが０であるが、ＲＴＸが非０であることがある場合、領域第３テーブルが必要となる。
【０１０８】
アドレス空間に関するＡＳＣＥが、アドレス空間に対する参照を変換するのに必要なテーブルの最高レベル（領域第１テーブルで始まり、セグメント・テーブルの下方に続く）を指定しない場合、例外が認識される。
【０１０９】
仮想アドレスの動的変換
次に図４を参照すると、図３で求めた有効なＡＳＣＥを使用して、仮想アドレスの変換で使用される変換テーブルの階層内の第１変換テーブルを求める一実施形態が示されている。
【０１１０】
一実施形態では、制御レジスタ１（ＣＲ１）はＰＡＳＣＥを含む。制御レジスタ７（ＣＲ７）はＳＡＳＣＥを含む。制御レジスタ１３（ＣＲ１３）はＨＡＳＣＥを含み、アクセス・レジスタ変換（ＡＲＴ）プロセスで導出されるアドレス空間第２テーブル・エントリ（ＡＳＴＥ）が、アクセス・レジスタ指定アドレス空間制御要素を含む。有効なＡＳＣＥ４００が、こうした場所のうちの１つから選択される。
【０１１１】
有効なＡＳＣＥ４００の第１部分は、領域第１テーブル、領域第２テーブル、領域第３テーブル、またはセグメント・テーブルを指定するオリジン・アドレスを含むテーブル・オリジン４０２を含む。テーブル・オリジン（ビット０．．５１）に１２個の２進数０が付加されて、仮想アドレスの変換で使用すべき変換テーブルの階層内の最高の変換テーブルの６４ビット・オリジン・アドレスが形成される。有効なＡＳＣＥ４００はまた、実空間制御（Ｒ）ビット４０４およびＤＴビット４０６をも含む。実空間制御（Ｒ）ビットが０である場合、ＤＴビットがセレクタ４０８で復号化され、どの特定のオリジン・アドレスがテーブル・オリジン４０２であるかが判定される。ＤＴビットが３（２進数１１）に等しい場合、テーブル・オリジン４０２は領域第１テーブル４１０を指定する。ＤＴビットが２（２進数１０）に等しい場合、テーブル・オリジン４０２は領域第２テーブル４１２を指定する。ＤＴビットが１（２進数０１）に等しい場合、テーブル・オリジン４０２は領域第３テーブル４１４を指定する。そうではなく、ＤＴビットが０（２進数００）に等しい場合、テーブル・オリジン４０２はセグメント・テーブル４１６を指定する。
【０１１２】
領域第１テーブル、領域第２テーブル、または領域第３テーブルは、単に領域テーブルと呼ばれることもある。同様に、領域第１テーブル指定、領域第２テーブル指定、または領域第３テーブル指定は、領域テーブル指定と呼ばれることもある。領域、セグメント、およびページ・テーブルは、実ストレージの現割当てを反映する。ページは、仮想ストレージの割当てについて使用される用語である。実ストレージは固定ブロックで配分される。ページは、１組の順次仮想アドレスに割り振られるとしても、実ストレージ内で隣接する必要はない。
【０１１３】
変換で使用されるＡＳＣＥが領域第１テーブル指定であるとき、変換プロセスは、例えば領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、および任意選択でページ・テーブルを使用してマルチレベル・ルックアップを行うものである。こうしたテーブルは、実ストレージまたは絶対ストレージ内に常駐する。ＡＳＣＥが領域第２テーブル指定、領域第３テーブル指定、またはセグメント・テーブル指定であるとき、指定されたレベルの上のテーブルのレベル内のルックアップが省略され、上位レベル・テーブル自体が省略される。
【０１１４】
次に図５を参照すると、変換テーブルの階層を使用する仮想アドレスの動的アドレス変換の一実施形態が示されている。
【０１１５】
図４の有効なＡＳＣＥ４００は、指定タイプ（ＤＴ）ビット４０６を含む。ＡＳＣＥの実空間制御（Ｒ）４０４ビットが０である場合、ＤＴビットがセレクタ４０８で復号化され、テーブル・オリジン４０２が指定するオリジン・アドレスはどれかが求められる。実空間制御（Ｒ）ビットが１である場合、図６のノードＤ５６４で示されるように、動的アドレス変換が行われる。
【０１１６】
ＤＴビットがセレクタ４０８で３（２進数１１）に等しい場合、変換テーブルの階層内の指定された第１テーブルが、領域第１テーブルである。５０２で、テーブル・オリジン４０２が、仮想アドレスの領域第１索引（ＲＦＸ）５０８部分と算術的に加算され、領域第１テーブル内の領域第１テーブル・エントリ５０６が参照される。（右側に１２個の０が付加され、または４０９６が掛けられた）テーブル・オリジンが、索引に８を掛けた積（または右側に３つの０が付加された索引）に加算される。領域第１テーブル・エントリは、変換で使用される変換テーブルの階層内の次の下位テーブルに対する領域第２テーブル・オリジン５０４を含む。領域第１テーブルに対する次の下位テーブルは、領域第２テーブルである。領域第１テーブル・エントリの無効（Ｉ）ビットが１に等しい場合、領域第１テーブル・エントリは無効であり、変換で使用することができない。例外条件が示される。
【０１１７】
ＤＴビットがセレクタ４０８で２（２進数１０）に等しい場合、変換テーブルの階層内の指定された第１テーブルは、領域第２テーブルである。５１０で、テーブル・オリジン４０２が、仮想アドレスの領域第２索引（ＲＳＸ）５１６部分と算術的に加算され、領域第２テーブル内の領域第２テーブル・エントリ５１４が参照される。（右側に１２個の０が付加され、または４０９６が掛けられた）テーブル・オリジンが、索引に８を掛けた積（または右側に３つの０が付加された索引）に加算される。領域第２テーブル・エントリは、変換で使用される変換テーブルの階層内の次の下位テーブルに対する領域第３テーブル・オリジン５１２を含む。領域第２テーブルに対する次の下位テーブルは、領域第３テーブルである。領域第２テーブル・エントリの無効（Ｉ）ビットが１に等しい場合、領域第２テーブル・エントリは無効であり、例外条件が示される。
【０１１８】
ＤＴビットがセレクタ４０８で１（２進数０１）に等しい場合、変換テーブルの階層内の指定された第１テーブルは、領域第３テーブルである。５１８で、テーブル・オリジン４０２が、仮想アドレスの領域第３索引（ＲＴＸ）５２４部分と算術的に加算され、領域第３テーブル内の領域第３テーブル・エントリ５２２が参照される。（右側に１２個の０が付加され、または４０９６が掛けられた）テーブル・オリジンが、索引に８を掛けた積（または右側に３つの０が付加された索引）に加算される。領域第３テーブル・エントリは、変換で使用される変換テーブルの階層内の次の下位テーブルに対するセグメント・テーブル・オリジン５２０を含む。領域第３テーブルに対する次の下位テーブルは、セグメント・テーブルである。領域第３テーブル・エントリの無効（Ｉ）ビットが１に等しい場合、領域第３テーブル・エントリは無効であり、例外条件が示される。
【０１１９】
ＤＴビットがセレクタ４０８で０（２進数００）に等しい場合、変換テーブルの階層内の指定された第１テーブルは、セグメント・テーブルである。５２６で、テーブル・オリジン４０２が、仮想アドレスのセグメント索引（ＳＸ）５３２部分と算術的に加算され、セグメント・テーブル内のセグメント・テーブル・エントリ５３０が参照される。（右側に１２個の０が付加され、または４０９６が掛けられた）テーブル・オリジンが、索引に８を掛けた積（または右側に３つの０が付加された索引）に加算される。セグメント・テーブル・エントリは、５２８で示される、ページ・テーブルに対するオリジン・アドレス、またはセグメント・フレーム絶対アドレス（ＳＦＡＡ）を含む。セグメント・テーブル・エントリの無効（Ｉ）ビットが１に等しい場合、セグメント・テーブル・エントリは無効であり、例外条件が示される。
【０１２０】
５３８で、セグメント・テーブルのＳＴＥフォーマット制御（ＦＣ）ビットが検査される。ＳＴＥフォーマット制御が１である場合、セグメント・テーブル・エントリ５３０はセグメント・フレーム絶対アドレス（ＳＦＡＡ）５５２を含み、動的アドレス変換は、図７のノード５６２を参照しながら続行する。そうでない場合、セグメント・テーブルから得られるセグメント・テーブル・エントリはページ・テーブル・オリジン・アドレスを含み、動的アドレス変換は、図６のノード５６０を参照しながら続行する。
【０１２１】
次に図６を参照する。セグメント・テーブル・エントリ内のＳＴＥフォーマット制御が０である場合、セグメント・テーブルから得られるセグメント・テーブル・エントリは、変換テーブルの階層内の次の下位テーブルに対するオリジン・アドレスを含む。セグメント・テーブルに対する次の下位テーブルは、ページ・テーブルである。５３８で、図５のセグメント・テーブル・エントリ５３０から得られるページ・テーブル・オリジン５２８が、仮想アドレスのページ索引（ＰＸ）５３４部分と算術的に加算され、ページ・テーブル内のページ・テーブル・エントリ５４２が参照される。（右側に１１個の０が付加され、または２０４８が掛けられた）テーブル・オリジンが、索引に８を掛けた積（または右側に３つの０が付加された索引）に加算される。ページ・テーブル・エントリはページ・フレーム実アドレス（ＰＦＲＡ）５４６を含む。５４８で、ページ・フレーム実アドレスの左端ビットが、仮想アドレスのバイト索引（ＢＸ）５３６部分と連結されるとき、６４ビット実アドレス５５０が得られる。実６４ビット・アドレスにはさらに、絶対アドレスが形成するためにプレフィックス変換操作が施されることがある。変換後仮想アドレスは、主ストレージまたはメモリ内のデータの所望の４キロバイト（４０９６バイト）ブロックを参照する。
【０１２２】
好ましくは、仮想アドレスのメモリ・アドレスへの動的変換で使用される情報が、仮想アドレスに関連するメモリのブロックのアドレスと共に、変換ルックアサイド・バッファ・エントリ・タグ内に格納される。後続のストレージ・アクセスは、ＡＳＣＥ情報および仮想アドレス情報を変換ルックアサイド・バッファ・タグと比較することによって仮想アドレスを迅速に変換することができる。タグが仮想アドレスのタグであると判明した場合、関係する各変換テーブルの低速順次アクセスを実施する代わりに、メモリのブロックの変換ルックアサイド・バッファ・アドレスを使用することができる。一実施形態では、ページ・フレーム実アドレス（ＰＦＲＡ）、ならびに例えばＡＳＣＥと、仮想アドレスのＲＸ、ＳＸ、およびＰＸ部分とからなるタグが、変換ルックアサイド・バッファ５４４のエントリ内に格納される。その後で、この仮想アドレスの後続の変換が、変換ルックアサイド・バッファ内に含まれる情報から導出される。
【０１２３】
次に図７を参照する。セグメント・テーブル・エントリ５３０内のＳＴＥフォーマット制御が１である場合、セグメント・テーブル・エントリはセグメント・フレーム絶対アドレス（ＳＦＡＡ）５５２を含む。５５４で、セグメント・フレーム絶対アドレスの左端ビットが、仮想アドレスのページ索引５３４部分およびバイト索引５３６部分と連結されるとき、６４ビット絶対アドレス５５６が得られる。変換後仮想アドレスは、主ストレージまたはメモリ内のデータの所望の大きなブロックを参照する。データの大きなブロックは、少なくとも１メガバイト（１０４８５７６バイト）のサイズである。
【０１２４】
一実施形態では、セグメント・フレーム絶対アドレス（ＳＦＡＡ）、ならびに仮想アドレスのＲＸ部分およびＳＸ部分が、変換ルックアサイド・バッファ５４４内に格納される。その後で、この仮想アドレスの後続の変換が、変換ルックアサイド・バッファ内に含まれる情報から導出される。
【０１２５】
変換テーブル・エントリ・フォーマット
変換で使用される変換テーブルの階層内の様々な変換テーブル・エントリの実施形態は以下の通りである。
【０１２６】
領域テーブル・エントリ
「領域テーブル・エントリ」という用語は、領域第１テーブル・エントリ、領域第２テーブル・エントリ、または領域第３テーブル・エントリを意味する。領域第１テーブル、領域第２テーブル、および領域第３テーブルからフェッチされるエントリが、以下のフォーマットを有する。エントリを含むテーブルのレベル（第１、第２、または第３）は、エントリ内のテーブル・タイプ（ＴＴ）ビットで識別される。
【０１２７】
一実施形態では、領域第１テーブル・エントリ、領域第２テーブル・エントリ、および領域第３テーブル・エントリのフォーマットは以下の通りである。
【０１２８】
【表１４】
2011513808.tif 000016
【０１２９】
【表１５】
2011513808.tif 000017
【０１３０】
【表１６】
2011513808.tif 000018
【０１３１】
領域第２テーブル・オリジン、領域第３テーブル・オリジン、およびセグメント・テーブル・オリジン：領域第１テーブル・エントリは領域第２テーブル・オリジンを含む。領域第２テーブル・エントリは領域第３テーブル・オリジンを含む。領域第３テーブル・エントリはセグメント・テーブル・オリジンを含む。以下の説明は、３つのテーブル・オリジンのそれぞれに当てはまる。エントリのビット０〜５１の右側に１２個の０が付加されて、次の下位レベル・テーブルの先頭を指定する６４ビット・アドレスが形成される。
【０１３２】
ＤＡＴ保護ビット（Ｐ）：拡張ＤＡＴが適用されるとき、ビット５４は、後続の各領域テーブル・エントリ、セグメント・テーブル・エントリ、および適用可能なときは、変換で使用されるページ・テーブル・エントリ内のＤＡＴ保護ビットとＯＲされるものとして扱われる。したがって、ビットが１であるとき、ＤＡＴ保護は、領域テーブル・エントリで指定される領域（複数可）全体に適用される。拡張ＤＡＴ機構がインストールされないとき、または機構がインストールされるが、拡張ＤＡＴ動作可能制御(enhanced DAT enablement control)が０であるとき、領域テーブル・エントリのビット５４は無視される。
【０１３３】
領域第２テーブル・オフセット、領域第３テーブル・オフセット、およびセグメント・テーブル・オフセット（ＴＦ）：領域第１テーブル・エントリは領域第２テーブル・オフセットを含む。領域第２テーブル・エントリは領域第３テーブル・オフセットを含む。領域第３テーブル・エントリはセグメント・テーブル・オフセットを含む。以下の説明は、３つのテーブル・オフセットのそれぞれに当てはまる。エントリのビット５６および５７は、テーブルの先頭で欠落している次の下位レベル・テーブルの一部の長さを指定し、すなわちこのビットは、次の下位レベル・テーブル内に実際に存在する第１エントリの位置を指定する。このビットは、欠落部分の長さを４０９６バイト単位で指定し、したがって欠落部分の長さは、５１２エントリの倍数単位で可変となる。４０９６バイト単位の欠落部分の長さは、ＴＦ値に等しい。オフセット・フィールドの内容は、ビット６２および６３の長さフィールドと共に、次の下位レベル・テーブルによって変換すべき仮想アドレス（ＲＳＸ、ＲＴＸ、またはＳＸ）の部分がテーブル内に実際に存在するエントリを指定するかどうかを確立するのに使用される。
【０１３４】
領域無効ビット（Ｉ）：領域第１テーブル・エントリまたは領域第２テーブル・エントリ内のビット５８は、エントリに関連する領域のセットが利用可能かどうかを制御する。領域第３テーブル・エントリ内のビット５８は、エントリに関連する単一の領域が利用可能かどうかを制御する。ビット５８が０であるとき、領域テーブル・エントリを使用することによってアドレス変換が進行する。ビットが１であるとき、エントリを変換のために使用することができない。
【０１３５】
テーブル・タイプ・ビット（ＴＴ）：領域第１テーブル・エントリ、領域第２テーブル・エントリ、および領域第３テーブル・エントリのビット６０および６１は、エントリを含むテーブルのレベルを以下のように特定する。ビット６０および６１は、変換で使用中のＡＳＣＥであるテーブル指定のタイプと、これまで使用されたテーブル・レベルの数とを考慮して、正しいテーブル・レベルを特定しなければならない。そうでない場合、変換指定例外が認識される。以下のテーブルは、テーブル・タイプ・ビットを示す。
【０１３６】
【表１７】
2011513808.tif 000019
【０１３７】
領域第２テーブル長、領域第３テーブル長、およびセグメント・テーブル長（ＴＬ）：領域第１テーブル・エントリは領域第２テーブル長を含む。領域第２テーブル・エントリは領域第３テーブル長を含む。領域第３テーブル・エントリはセグメント・テーブル長を含む。以下の説明は、３つのテーブル長のそれぞれに当てはまる。エントリのビット６２および６３は、次の下位レベル・テーブルの長さを４０９６バイト単位で指定し、したがってテーブルの長さは、５１２エントリの倍数単位で可変となる。４０９６バイト単位の、次の下位レベル・テーブルの長さは、ＴＬ値よりも１つ大きい。長さフィールドの内容は、ビット５６および５７のオフセット・フィールドと共に、次の下位レベル・テーブルによって変換すべき仮想アドレス（ＲＳＸ、ＲＴＸ、またはＳＸ）の部分がテーブル内に実際い存在するエントリを指定するかどうかを確立するのに使用される。領域テーブル・エントリのすべての他のビット位置は、可能性のある将来の拡張のために予約され、０を含むべきである。そうでない場合、プログラムは、将来に互換式に動作しないことがある。拡張ＤＡＴが適用されるとき、領域テーブル・エントリの予約済みビット位置は、テーブル・エントリが無効であっても０を含むべきである。
【０１３８】
セグメント・テーブル・エントリ
拡張ＤＡＴが適用されないとき、または拡張ＤＡＴが適用され、セグメント・テーブル・エントリのビット５３であるＳＴＥフォーマット制御が０であるとき、一実施形態では、セグメント・テーブルからフェッチされるエントリが、以下のフォーマットを有する。
【０１３９】
【表１８】
2011513808.tif 000020
【０１４０】
拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であるとき、一実施形態では、セグメント・テーブルからフェッチされるエントリが、以下のフォーマットを有する。
【０１４１】
【表１９】
2011513808.tif 000021
【０１４２】
セグメント・テーブル・エントリ内の選択されるフィールドが、以下のように割り振られる。
ページ・テーブル・オリジン：拡張ＤＡＴが適用されないとき、または拡張ＤＡＴが適用されるが、セグメント・テーブル・エントリのビット５３であるＳＴＥフォーマット制御が０であるとき、ビット０〜５２の右側に１１個の０を付加することにより、ページ・テーブルの先頭を指定する６４ビット・アドレスが形成される。アドレスが実アドレスであるか、それとも絶対アドレスであるかは予測不能である。
【０１４３】
セグメント・フレーム絶対アドレス（ＳＦＡＡ）：拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であるとき、エントリのビット０〜４３の右側に２０個の０を付加することにより、セグメントの６４ビット絶対アドレスが形成される。
【０１４４】
ＡＣＣＦ有効性制御（ＡＶ）：拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であるとき、ビット４７は、アクセス制御ビットおよびフェッチ保護ビット（ＡＣＣＦ）有効性制御である。ＡＶ制御が０であるとき、セグメント・テーブル・エントリのビット４８〜５２が無視される。ＡＶ制御が１であるとき、ビット４８〜５２は、以下で説明するように使用される。
【０１４５】
アクセス制御ビット（ＡＣＣ）：拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であり、ＡＶ制御が１であるとき、セグメント・テーブル・エントリのビット４８〜５１は、アドレスに適用される任意のキー制御アクセス検査のために使用することのできるアクセス制御ビットを含む。
【０１４６】
フェッチ保護ビット（Ｆ）：拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であり、ＡＶ制御が１であるとき、セグメント・テーブル・エントリのビット５２は、アドレスに適用される任意のキー制御アクセス検査のために使用することのできるフェッチ保護ビットを含む。
【０１４７】
ＳＴＥフォーマット制御（ＦＣ）：拡張ＤＡＴが適用されるとき、ビット５３は、以下のように、セグメント・テーブル・エントリに関するフォーマット制御である。
・ＦＣビットが０であるとき、エントリのビット０〜５２がページ・テーブル・オリジンを形成し、ビット５５が予約される。
・ＦＣビットが１であるとき、エントリのビット０〜４３がセグメント・フレーム絶対アドレスを形成し、ビット４７はＡＣＣＦ有効性制御であり、ビット４８〜５１はアクセス制御ビットであり、ビット５２はフェッチ保護ビットであり、ビット５５は変更記録オーバーライドである。拡張ＤＡＴが適用されないとき、ビット５３は無視される。
【０１４８】
ＤＡＴ保護ビット（Ｐ）：ビット５４は、１であるとき、ＤＡＴ保護がセグメント全体に当てはまることを示す。
・拡張ＤＡＴが適用されないとき、ビット５４は、変換で使用されるページ・テーブル・エントリ内のＤＡＴ保護ビットとＯＲされるものとして扱われる。
・拡張ＤＡＴが適用されるとき、変換で使用される任意のすべての領域テーブル・エントリ内のＤＡＴ保護ビットは、セグメント・テーブル・エントリ内のＤＡＴ保護ビットとＯＲされるものとして扱われる。ＳＴＥフォーマット制御が０であるとき、ＳＴＥ内のＤＡＴ保護ビットはさらに、ページ・テーブル・エントリ内のＤＡＴ保護ビットとＯＲされるものとして扱われる。
【０１４９】
変更記録オーバーライド（ＣＯ）：拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であるとき、セグメント・テーブル・エントリのビット５５は、セグメントに関する変更記録オーバーライドである。拡張ＤＡＴが適用されないとき、または拡張ＤＡＴが適用されるが、ＳＴＥフォーマット制御が０であるとき、セグメント・テーブル・エントリのビット５５は無視される。
【０１５０】
セグメント無効ビット（Ｉ）：ビット５８は、セグメント・テーブル・エントリに関連するセグメントが利用可能かどうかを制御する。
・ビットが０であるとき、セグメント・テーブル・エントリを使用することによってアドレス変換が進行する。
・ビットが１であるとき、セグメント・テーブル・エントリを変換のために使用することができない。
【０１５１】
共通セグメント・ビット（Ｃ）：ビット５９は、セグメント・テーブル・エントリの変換ルックアサイド・バッファ・コピーの使用を制御する。拡張ＤＡＴが適用されないとき、または拡張ＤＡＴが適用されるが、フォーマット制御が０であるとき、ビット５９はまた、セグメント・テーブル・エントリで指定されるページ・テーブルの変換ルックアサイド・バッファ・コピーの使用も制御する。
・０はプライベート・セグメントを特定する。この場合、セグメント・テーブル・エントリが常駐するセグメント・テーブルを指定するセグメント・テーブル・オリジンに従って、セグメント・テーブル・エントリおよびセグメント・テーブル・エントリが指定する任意のページ・テーブルを使用することができるだけである。
・１は共通セグメントを特定する。この場合、異なるセグメント・テーブルが指定されるとしても、セグメント索引に対応するアドレスを変換するために、セグメント・テーブル・エントリおよびセグメント・テーブル・エントリが指定する任意のページ・テーブルを引き続き使用することができる。
【０１５２】
しかし、変換で使用されるＡＳＣＥでビット５５のプライベート空間制御が１である場合、またはそのＡＳＣＥが実空間指定である場合、共通セグメントに関するセグメント・テーブル・エントリおよび任意のページ・テーブルの変換ルックアサイド・バッファ・コピーは使用可能ではない。使用中のＡＳＣＥでプライベート空間制御が１であるとき、変換中にセグメント・テーブル・エントリがストレージからフェッチされる場合、共通セグメント・ビットは０でなければならない。そうでない場合、変換指定例外が認識される。
【０１５３】
テーブル・タイプ・ビット（ＴＴ）：セグメント・テーブル・エントリのビット６０および６１は、エントリを含むテーブルのレベルを特定するために２進数００である。領域テーブル・エントリまたはセグメント・テーブル・エントリ内のビット６０および６１のすべての可能な値の意味は、以下の通りである。
【０１５４】
【表２０】
2011513808.tif 000022
【０１５５】
ビット６０および６１は、変換で使用中のＡＳＣＥであるテーブル指定のタイプと、これまで使用されたテーブル・レベルの数とを考慮して、正しいテーブル・レベルを特定しなければならない。そうでない場合、変換指定例外が認識される。セグメント・テーブル・エントリのすべての他のビット位置は、可能性のある将来の拡張のために予約され、０を含むべきである。そうでない場合、プログラムは、将来に互換式に動作しないことがある。拡張ＤＡＴが適用されるとき、セグメント・テーブル・エントリの予約済みビット位置は、テーブル・エントリが無効であっても０を含むべきである。
【０１５６】
ページ・テーブル・エントリ
一実施形態では、ページ・テーブルからフェッチされるエントリが、以下のフォーマットを有する。
【０１５７】
【表２１】
2011513808.tif 000023
【０１５８】
ページ・テーブル・エントリ内の選択されたフィールドは、以下のように割り振られる。
ページ・フレーム実アドレス（ＰＦＲＡ）：ビット０〜５１が、実ストレージ・アドレスの左端ビットを与える。これらのビットが仮想アドレスの１２ビット・バイト索引フィールドの右側に連結されるとき、６４ビット実アドレスが得られる。
【０１５９】
ページ無効ビット（Ｉ）：ビット５３は、ページ・テーブル・エントリに関連するページが利用可能かどうかを制御する。ビットが０であるとき、ページ・テーブル・エントリを使用することによってアドレス変換が進行する。ビットが１であるとき、ページ・テーブル・エントリを変換のために使用することができない。
【０１６０】
ＤＡＴ保護ビット（Ｐ）：ビット５４は、ページ内でストア・アクセスを行うことができるかどうかを制御する。この保護機構が、キー制御保護機構および低アドレス保護機構に追加される。ビットは、フェッチ・アクセスには効果を及ぼさない。ビットが０であるとき、ページに対してストアが許可され、以下の追加の制限の対象となる。
・変換で使用されるセグメント・テーブル・エントリ内でＤＡＴ保護ビットが０となる。
・拡張ＤＡＴが適用されるとき、変換で使用されるすべての領域テーブル・エントリ内でＤＡＴ保護ビットは０となる。
・他の保護機構。
【０１６１】
ビットが１である場合、ストアが却下される。より高い優先順位の例外が存在しないとき、ＤＡＴ保護ビットが１であるときの格納する試みにより、保護例外が認識される。ＤＡＴ保護がページに適用されるかどうかを判定するとき、セグメント・テーブル・エントリ内のＤＡＴ保護ビットは、ビット５４とＯＲされるものとして扱われる。拡張ＤＡＴが適用されるとき、ＤＡＴ保護が適用されるかどうかを判定するとき、変換で使用される任意の領域テーブル・エントリ内のＤＡＴ保護ビットもビット５４とＯＲされるものとして扱われる。
【０１６２】
変更記録オーバーライド（ＣＯ）：拡張ＤＡＴが適用されないとき、ページ・テーブル・エントリのビット５５は０を含まなければなない。そうでない場合、アドレス変換のためにそのエントリを使用する命令の実行の一部として変換指定例外が認識される。拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が０であるとき、ページ・テーブル・エントリのビット５５は、ページに関する変更記録オーバーライドである。
【０１６３】
エントリのビット位置５２は、０を含まなければならない。そうでない場合、アドレス変換のためにそのエントリを使用する命令の実行の一部として変換指定例外が認識される。ビット位置５６〜６３は割り当てられず、無視される。
【０１６４】
動的変換の別の実施形態
本節は、主ストレージにアクセスするために仮想アドレスが使用される前に暗黙的に実施される変換プロセスを説明する。
【０１６５】
仮想アドレスの変換は、プログラム・ステータス・ワード内のＤＡＴモード・ビットおよびアドレス空間制御ビット、ならびに制御レジスタ１、７、および１３内のＡＳＣＥにより、アクセス・レジスタで指定されるように制御される。変換で使用されるＡＳＣＥが領域第１テーブル指定であるとき、変換は、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、およびページ・テーブルによって実施され、そのすべては、実ストレージまたは絶対ストレージ内に常駐する。ＡＳＣＥが下位レベル・タイプのテーブル指定（領域第２テーブル指定、領域第３テーブル指定、またはセグメント・テーブル指定）であるとき、指定のレベルで始まるテーブル・レベルだけで変換が実施され、０でない場合により高いレベル（複数化）のテーブルの使用を必要とすることになる仮想アドレス・ビットは、すべて０でなければならない。そうでない場合、ＡＳＣＥタイプ例外が認識される。ＡＳＣＥが実空間指定であるとき、仮想アドレスは実アドレスとして扱われ、実ストレージまたは絶対ストレージ内のテーブル・エントリは使用されない。
【０１６６】
特定のアドレス変換のために使用されるＡＳＣＥは、有効なＡＳＣＥと呼ばれる。したがって、１次仮想アドレスが変換されるとき、制御レジスタ１の内容が、有効なＡＳＣＥとして使用される。同様に、２次仮想アドレスでは、制御レジスタ７の内容が使用され、ＡＲ指定仮想アドレスでは、アクセス・レジスタで指定されるＡＳＣＥが使用され、ホーム仮想アドレスでは、制御レジスタ１３の内容が使用される。
【０１６７】
有効なＡＳＣＥ内の実空間制御が０であるとき、ＡＳＣＥ内の指定タイプは、テーブル指定タイプ、すなわち領域第１テーブル、領域第２テーブル、領域第３テーブル、またはセグメント・テーブルを指定する。仮想アドレスの対応する部分（領域第１索引、領域第２索引、領域第３索引、またはセグメント索引）が、指定内のテーブル長フィールドと突き合わせてチェックされ、指定内のオリジンに追加され、指定のテーブル内のエントリが選択される。指定内のテーブル長フィールドで判定されるように、選択されたエントリがそのテーブルの外部にある場合、または選択されたエントリ内でＩビットが１である場合、指定で指定されるテーブル・レベルに応じて、領域第１変換、領域第２変換、領域第３変換、またはセグメント変換例外が認識される。選択されたエントリ内のテーブル・タイプ・ビットが期待されるテーブル・レベルを示さない場合、変換指定例外が認識される。
【０１６８】
有効なＡＳＣＥによって選択されたテーブル・エントリは、使用すべき次の下位レベル・テーブルを指定する。現テーブルが領域第１テーブル、領域第２テーブル、または領域第３テーブルである場合、仮想アドレスの次の部分（それぞれ領域第２索引、領域第３索引、セグメント索引）が、現テーブル・エントリ内のテーブル・オフセットおよびテーブル長フィールドと突き合わせてチェックされ、エントリ内のオリジンに追加され、次の下位レベル・テーブル内のエントリが選択される。現テーブル・エントリ内のテーブル・オフセットおよびテーブル長フィールドで判定されるように、次のテーブル内の選択されたエントリがそのテーブルの外部にある場合、または選択されたエントリ内でＩビットが１である場合、次のテーブルのレベルに応じて、領域第２変換、領域第３変換、またはセグメント変換例外が認識される。選択されたエントリ内のテーブル・タイプ・ビットが期待されるテーブル・レベルを示さない場合、変換指定例外が認識される。
【０１６９】
セグメント・テーブル・エントリが選択されるまで、連続するテーブル・レベルによる仮想アドレスの各部分の処理が続行される。セグメント・テーブル・エントリは、指定のセグメント内のすべてのページに適用されるページ保護ビットを含む。
【０１７０】
仮想アドレスのページ索引部分が、セグメント・テーブル・エントリ内のページ・テーブル・オリジンに追加され、ページ・テーブル内のエントリが選択される。ページ・テーブル・エントリ内でＩビットが１である場合、ページ変換例外が認識される。ページ・テーブル・エントリは、仮想アドレスの変換を表す実アドレスの左端ビットを含み、ページ・テーブル・エントリで指定されるページにのみ適用されるページ保護ビットを含む。
【０１７１】
仮想アドレスのバイト索引フィールドが、実アドレスの右端のビット位置として変わらずに使用される。
【０１７２】
実ストレージまたは絶対ストレージ内の変換テーブルへの参照に関連する遅延をなくすために、テーブルから一般にフェッチされた情報は、特別なバッファである変換ルックアサイド・バッファ内にも配置され、変換ルックアサイド・バッファ内に記録された情報を使用することにより、同じテーブル・エントリを伴う後続の変換を実施することができる。変換ルックアサイド・バッファはまた、実空間指定に関するＶ＝Ｒ変換をも記録することができる。
【０１７３】
領域テーブル、セグメント・テーブル、またはページ・テーブルからエントリをフェッチする目的で実ストレージまたは絶対ストレージへのアクセスがアドレス変換プロセス中に行われるときはいつでも、キー制御保護は適用されない。
【０１７４】
ＡＳＣＥで指定されるテーブル内のルックアップ
有効なＡＳＣＥのビット６０〜６１のＤＴ制御は、以下のように、ＡＳＣＥのテーブル指定タイプと、指定のテーブルによって変換すべき仮想アドレスの部分のどちらも指定する。
【０１７５】
【表２２】
2011513808.tif 000024
【０１７６】
ビット６０および６１が２進数の値１１を有するとき、仮想アドレスの領域第１索引部分は、ＡＳＣＥ内に含まれる領域第１テーブル・オリジンと共に、領域第１テーブルからエントリを選択するのに使用される。実ストレージまたは絶対ストレージ内の領域第１テーブル・エントリ６４ビット・アドレスは、領域第１テーブル指定のビット０〜５１の右側に１２個の０を付加すること、および右端に３つの０を付加し、左端に５０個の０を付加した領域第１索引を加えることによって得られる。領域第１テーブル・ルックアップ・プロセスの部分として、仮想アドレスのビット０および１（これは領域第１索引のビット０および１である）が、領域第１テーブル指定のビット６２および６３であるテーブル長と比較され、アドレス指定されたエントリが領域第１テーブル内にあるかどうかが確立される。テーブル長フィールド内の値が仮想アドレスの対応するビット位置内の値未満である場合、領域第１変換例外が認識される。変換ルックアサイド・バッファ内の領域第１テーブル・エントリの同等物が変換で使用される場合、テーブル長との比較を省略することができる。領域第１テーブルからフェッチされるエントリが、対応する領域第２テーブルの先頭を指定し、対応する領域第２テーブルのオフセットおよび長さを指定する。
【０１７７】
ＡＳＣＥのビット６０および６１が２進数の値１０を有するとき、仮想アドレスの領域第２索引部分は、ＡＳＣＥ内に含まれる領域第２テーブル・オリジンと共に、領域第２テーブルからエントリを選択するのに使用される。仮想アドレスのビット１１および１２（これは領域第２索引のビット０および１である）が、ＡＳＣＥ内のテーブル長と比較される。テーブル長フィールド内の値が仮想アドレスの対応するビット位置内の値未満である場合、領域第２変換例外が認識される。変換ルックアサイド・バッファ内の領域第２テーブル・エントリの同等物が変換で使用される場合、テーブル長との比較を省略することができる。領域第２テーブル・ルックアップ・プロセスは、その他の点では領域第１テーブル・ルックアップ・プロセスと同じである。領域第２テーブルからフェッチされるエントリが、対応する領域第３テーブルの先頭を指定し、対応する領域第３テーブルのオフセットおよび長さを指定する。
【０１７８】
ＡＳＣＥのビット６０および６１が２進数の値０１を有するとき、仮想アドレスの領域第３索引部分は、ＡＳＣＥ内に含まれる領域第３テーブル・オリジンと共に、領域第３テーブルからエントリを選択するのに使用される。仮想アドレスのビット２２および２３（これは領域第３索引のビット０および１である）が、ＡＳＣＥ内のテーブル長と比較される。テーブル長フィールド内の値が仮想アドレスの対応するビット位置内の値未満である場合、領域第３変換例外が認識される。領域第３テーブル・ルックアップ・プロセスは、その他の点では、領域第３テーブル・エントリ内のテーブル・タイプ・ビットのチェッキングを含めて、領域第１テーブル・ルックアップ・プロセスと同じである。領域第３テーブルからフェッチされるエントリが、対応するセグメント・テーブルの先頭を指定し、対応するセグメント・テーブルのオフセットおよび長さを指定する。
【０１７９】
ＡＳＣＥのビット６０および６１が２進数の値００を有するとき、仮想アドレスのセグメント索引部分は、ＡＳＣＥ内に含まれるセグメント・テーブル・オリジンと共に、セグメント・テーブルからエントリを選択するのに使用される。仮想アドレスのビット３３および３４（これはセグメント索引のビット０および１である）が、ＡＳＣＥ内のテーブル長と比較される。テーブル長フィールド内の値が仮想アドレスの対応するビット位置内の値未満である場合、セグメント変換例外が認識される。変換ルックアサイド・バッファ内のセグメント・テーブル・エントリの同等物が変換で使用される場合、テーブル長との比較を省略することができる。セグメント・テーブル・ルックアップ・プロセスは、その他の点では、セグメント・テーブル・エントリ内のテーブル・タイプ・ビットのチェッキングを含めて、領域第１テーブル・ルックアップ・プロセスと同じである。処理は以下の通りである。
・拡張ＤＡＴが適用されないとき、または拡張ＤＡＴが適用されるが、ＳＴＥフォーマット制御が０であるとき、セグメント・テーブルからフェッチされるエントリが、対応するページ・テーブルの先頭を指定し、以下の「ページ・テーブル・ルックアップ」で説明するように処理が続行される。
・拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であるとき、セグメント・テーブルからフェッチされるエントリが、セグメント・フレーム絶対アドレスの左端ビットを含む。変換で使用される何らかの領域テーブル・エントリ内、またはセグメント・テーブル・エントリ内でＤＡＴ保護ビットが１であり、変換を実施中のストレージ参照がストアである場合、保護例外が認識される。
【０１８０】
領域テーブル・エントリで指定されるテーブル内のルックアップ
有効なＡＳＣＥが領域テーブル指定であるとき、先行するセクションで説明したように領域テーブル・エントリが選択される。次いで、選択されたエントリの内容と、仮想アドレスの次の索引部分とが使用されて、次の下位レベル・テーブル名のエントリが選択され、次の下位レベル・テーブルは、別の領域テーブルまたはセグメント・テーブルでよい。ＡＳＣＥによって選択されたテーブル・エントリが領域第１テーブル・エントリであるとき、仮想アドレスの領域第２索引部分が、領域第１テーブル・エントリ内に含まれる領域第２テーブル・オリジンと共に使用され、領域第２テーブルからエントリが選択される。実ストレージまたは絶対ストレージ内の領域第２テーブル・エントリの６４ビット・アドレスが、領域第１テーブル・エントリのビット０〜５１の右側に１２個の０を付加すること、および右端に３つの０を付加し、左端に５０個の０を付加した領域第２索引を加えることによって得られる。
【０１８１】
領域第２、領域第３、またはセグメント・テーブル・エントリのアドレスを形成するとき、プレフィックス変換がある場合にそれがより高レベルのテーブル・エントリ内に含まれるそれぞれのテーブル・オリジンにテーブル索引値の追加前に適用されるか、それともテーブル・オリジンおよびテーブル索引値の追加によって形成されるテーブル・エントリ・アドレスにプレフィックス変換が適用されるかは予測不能である。
【０１８２】
領域第２テーブル・ルックアップ・プロセスの部分として、仮想アドレスのビット１１および１２（これは領域第２索引のビット０および１である）が、領域第１テーブル指定のビット５６および５７であるテーブル・オフセット、ならびに領域第１テーブル・エントリのビット６２および６３であるテーブル長と比較され、アドレス指定されるエントリが領域第２テーブル内にあるかどうかが確立される。テーブル・オフセット・フィールド内の値が仮想アドレスの対応するビット位置内の値よりも大きい場合、またはテーブル長フィールド内の値が仮想アドレスの対応するビット位置内の値未満である場合、領域第２変換例外が認識される。
【０１８３】
領域第２テーブルは、対応する領域第３テーブルの先頭を指定し、対応する領域第３テーブルのオフセットおよび長さを指定する。
【０１８４】
ＡＳＣＥで選択されたテーブル・エントリが領域第２テーブル・エントリであるとき、または領域第２テーブル・エントリが領域第１テーブル・エントリの内容によって選択された場合、仮想アドレスの領域第３索引部分が、領域第２テーブル・エントリ内に含まれる領域第３テーブル・オリジンと共に使用され、領域第３テーブルからエントリが選択される。仮想アドレスのビット２２および２３（これは領域第３索引のビット０および１である）が、領域第２テーブル・エントリ内のテーブル・オフセットおよびテーブル長と比較される。テーブル・オフセットがビット２２および２３よりも大きい場合、またはテーブル長がビット２２および２３未満である場合、領域第３変換例外が認識される。領域第３テーブル・ルックアップ・プロセスは、その他の点では領域第２テーブル・ルックアップ・プロセスと同じである。領域第３テーブルからフェッチされるエントリが、対応するセグメント・テーブルの先頭を指定し、対応するセグメント・テーブルのオフセットおよび長さを指定する。
【０１８５】
ＡＳＣＥで選択されたテーブル・エントリが領域第３テーブル・エントリであるとき、または領域第３テーブル・エントリが領域第２テーブル・エントリの内容によって選択された場合、仮想アドレスのセグメント索引部分が、領域第３テーブル・エントリ内に含まれるセグメント・テーブル・オリジンと共に使用され、セグメント・テーブルからからエントリが選択される。仮想アドレスのビット３３および３４（これはセグメント索引のビット０および１である）が、領域第３テーブル・エントリ内のテーブル・オフセットおよびテーブル長と比較される。テーブル・オフセットがビット３３および３４よりも大きい場合、またはテーブル長がビット３３および３４未満である場合、セグメント変換例外が認識される。（１）ＡＳＣＥ内のビット５５であるプライベート空間制御が１であり、かつ（２）セグメント・テーブルからフェッチされるエントリ内のビット５９である共通セグメント・ビットが１である場合、変換指定例外が認識される。セグメント・テーブル・ルックアップ・プロセスは、その他の点では領域第２テーブル・ルックアップ・プロセスと同じである。処理は以下の通りである。
・拡張ＤＡＴが適用されないとき、または拡張ＤＡＴが適用されるが、ＳＴＥフォーマット制御が０であるとき、セグメント・テーブルからフェッチされるエントリが、対応するページ・テーブルの先頭を指定し、以下の「ページ・テーブル・ルックアップ」で説明するように処理が続行される。
・拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であるとき、セグメント・テーブルからフェッチされるエントリが、セグメント・フレーム絶対アドレスの左端ビットを含む。変換で使用される何らかの領域テーブル・エントリ内、またはセグメント・テーブル・エントリ内でＤＡＴ保護ビットが１であり、変換を実施中のストレージ参照がストアである場合、保護例外が認識される。
【０１８６】
ページ・テーブル・ルックアップ
拡張ＤＡＴが適用されないとき、または拡張ＤＡＴが適用されるが、ＳＴＥフォーマット制御が０であるとき、仮想アドレスのページ索引部分が、セグメント・テーブル・エントリ内に含まれるページ・テーブル・オリジンと共に使用され、ページ・テーブルからエントリが選択される。
【０１８７】
実ストレージまたは絶対ストレージ内のページ・テーブル・エントリの６４ビット・アドレスは、ページ・テーブル・オリジンの右側に１１個の０を付加すること、および右端に３つの０を付加し、左端に５３個の０を付加したページ索引を加えることによって得られる。ビット位置０のキャリーアウトを行うことはできない。
【０１８８】
ページ・テーブルからフェッチされるエントリが、ページの可用性を示し、ページ・フレーム実アドレスの左端ビットを含む。ビット５３であるページ無効ビットが検査され、対応するページが利用可能であるかどうかが確立される。このビットが１である場合、ページ変換例外が認識される。ビット位置５２が１を含む場合、変換指定例外が認識される。拡張ＤＡＴが適用されないとき、または拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が０であるとき、ビット位置５５が１を含む場合、変換指定例外がやはり認識される。ＤＡＴ保護ビットが変換で使用されるセグメント・テーブル・エントリ内、またはページ・テーブル・エントリ内で１である場合、または変換で使用される何らかの領域テーブル・エントリ拡張ＤＡＴが適用され、変換を実施中のストレージ参照がストアであるとき、保護例外が認識される。
【０１８９】
実アドレスおよび絶対アドレスの形成
有効なＡＳＣＥが実空間指定であるとき、仮想アドレスのビット０〜６３が、実ストレージ・アドレスとして直接的に使用される。実アドレスにさらにプレフィックス変換を施して、絶対アドレスを形成することができる。有効なＡＳＣＥが実空間指定ではなく、変換プロセスで例外に直面しないとき、以下の条件が適用される。
・拡張ＤＡＴが適用されないとき、または拡張ＤＡＴが適用されるが、ＳＴＥフォーマット制御が０であるとき、ページ・フレーム実アドレスがページ・テーブル・エントリから得られる。ページ・フレーム実アドレスと仮想アドレスのバイト索引部分とが連結され、ページ・フレーム実アドレスが左端部を形成する。その結果は、仮想アドレスに対応する実ストレージ・アドレスである。実アドレスにさらにプレフィックス変換を施し、絶対アドレスを形成することができる。
・拡張ＤＡＴが適用され、ＳＴＥフォーマット制御が１であるとき、セグメント・フレーム絶対アドレスと、仮想アドレスのページ索引部分およびバイト索引部分とが、それぞれ左から右に連結され、仮想アドレスに対応する絶対アドレスが形成される。
【０１９０】
変換中の例外の認識
無効とマークされたテーブル・エントリ、あるいは無効アドレス無効フォーマットを含むテーブル・エントリにより、変換プロセス中に例外が認識されることがある。例外は、テーブル・エントリ内に含まれる情報が変換のために使用され、誤っていると判明したときに認識される。
【０１９１】
さらに、変換すべき仮想アドレスがＡＳＣＥで指定されるトップ・レベル・テーブルで表すことのできる範囲を超える場合に、例外、例えばＡＳＣＥタイプ例外が発生する可能性がある。一例として、以下の擬似コードの結果としてＡＳＣＥタイプ例外が発生する。
If ((DT < 3 AND RFX != 0) OR (DT < 2AND (RFX || RSX) != 0) OR (DT < 1 AND RX != 0)) then asce_type_exception();
【０１９２】
ＤＴビットは指定タイプ（ＡＳＣＥのビット６０〜６１）である。ＲＦＸは領域第１索引（仮想アドレスのビット０〜１０）である。ＲＳＸは領域２索引（仮想アドレスのビット１１〜２１）である。ＲＸは領域索引全体（仮想アドレスのビット０〜３２）である。擬似コードで使用される論理演算および比較オペランドを当業者は容易に理解されよう。
【０１９３】
変換例外修飾子（ＴＸＱ）
変換例外修飾子に関して、「拡張ＤＡＴが適用されるとき」という語句は、変換例外が提示されるレベル（ホストまたはゲスト）に関する。例えば、拡張ＤＡＴがホスト・レベルに適用されるときにはいつでも、拡張ＤＡＴがゲスト・レベルで適用されるか否かに関わらず、ＴＸＱがホスト変換例外上で提示される。
【０１９４】
ＤＡＴ関連プログラム割込みの間に、変換例外識別（ＴＥＩＤ）が格納される。拡張ＤＡＴ機構がインストールされ、動作可能となるとき、変換例外修飾子（ＴＸＱ）が、ＴＥＩＤの３ビット内に格納される。ＴＸＱは、割込みがホストで引き起こされたか、それともゲストで引き起こされたかを判定する際にホスト構成を支援する。例外がゲストで引き起こされた場合、ＴＸＱは、割込みがゲスト・リーフ・テーブル・エントリ内に含まれるアドレスで引き起こされたか否かを示し、そうである場合、リーフ・エントリがセグメント・テーブル・エントリであったか、それともページ・テーブル・エントリであったかを示す。これにより、ゲストが４Ｋバイト・フレーム対１Ｍバイト・フレームとみなすエリアに対する参照をホストが認識することが可能となる。ＴＸＱは、より大きいフレーム・サイズ、例えば２ギガバイトが必要である場合に拡張することができるように設計される。
【０１９５】
ＡＳＣＥタイプ例外、領域第１変換例外、領域第２変換例外、領域第３変換例外、セグメント変換例外、またはページ変換例外によるプログラム割込みの間に、例外を引き起こす仮想アドレスのビット０〜５１が、位置１６８〜１７５のビット位置０〜５１内に格納される。このアドレスは、変換例外アドレスと呼ばれることもある。位置１６８〜１７５のビット５２〜５６は、予測不能である。
【０１９６】
拡張ＤＡＴ機構がホスト構成でインストールされ、動作可能となり、ホストＡＳＣＥタイプ、領域変換例外、セグメント変換例外、またはページ変換例外が認識されるとき、ビット５７〜５９は、以下のように変換例外修飾子（ＴＸＱ）を含む。
・０−例外が、現在実行中の構成で引き起こされた（すなわち、ゲスト実行中にゲストＤＡＴ例外が提示され、またはホスト実行中にホストＤＡＴ例外が提示される）。
・１−例外が、以下で列挙されるもの以外のゲスト・アドレスから導出されたホスト仮想アドレスと関連付けられた。
・２−例外が、ゲスト・ページ・フレーム実アドレスから導出されたホスト仮想アドレスと関連付けられた。
・３−例外が、ゲスト・セグメント・フレーム絶対アドレスから導出されたホスト仮想アドレスと関連付けられた。
・４〜７予約済み。
【０１９７】
ＴＸＱ値１〜３は、ゲスト実行中に発生したホスト例外に関してのみ提示される。
【０１９８】
２レベルＤＡＴ
上述のように、ページ可能ゲストの実行中、２つのレベルのＤＡＴが実施される。ゲスト仮想アドレスが、ゲストＤＡＴ、および適用可能なときはプレフィックス変換を介してゲスト絶対アドレスに変換され、次いでゲスト絶対アドレスは、ホスト１次アドレス空間内のホスト仮想アドレスとして扱われ、ホストＤＡＴ、および適用可能なときはプレフィックス変換を介してホスト絶対アドレスに変換される。ゲストＤＡＴプロセスの間、ホストＤＡＴおよび適用可能なときはプレフィックス変換を介してやはり変換しなければならないゲスト絶対アドレスを介して配置されるゲスト変換テーブル・エントリに対する参照が行われる。プロセスの結果、ゲスト・テーブル仕様および内容に基づくゲストＤＡＴ例外が発生する可能性があり、ゲスト・テーブル・エントリまたはゲスト変換の最終目標のための、ゲスト絶対アドレスに対する各参照により、ホストＤＡＴ例外が引き起こされる可能性がある。こうした例外のそれぞれについて適切なＴＸＱを生成しなければならない。図８〜１１は、ゲストＤＡＴプロセスを詳細に示し、図１１〜１３は、ホストＤＡＴプロセスを示す。
【０１９９】
ゲストＤＡＴ
次に図８を参照すると、ゲスト・セグメント・テーブル・エントリからフォーマット制御フィールドを得る地点に対するゲスト動的アドレス変換の一実施形態の流れ図が示されている。
【０２００】
６０２で、変換すべきゲスト仮想アドレスが得られる。６０４で、仮想アドレスの変換で使用される最高の変換テーブルのオリジン・アドレス、テーブル・レベル、およびテーブル長さが得られる。変換で使用される第１変換テーブルのオリジン・アドレスが、ＡＳＣＥ内のテーブル・オリジン・フィールドから取られる。テーブル・レベルおよびテーブル長は、それぞれＡＳＣＥ内のＤＴビットおよびＴＬビットに依存する。使用される最高の変換テーブルに関するテーブル・オフセットは、常に０として扱われる。６０６で、変換テーブル内の適切なテーブル・エントリを参照するのに使用すべきゲスト仮想アドレスの索引部分がまず、テーブル内で表される最小索引値および最大索引値を決定するテーブル・オフセットおよびテーブル長と突き合わせてチェックされる。６０６で、索引がこの範囲外である場合、仮想アドレスのそれ以上の変換を進めることができない。一実施形態では、６０８で、索引付け中のテーブル・レベルに対して適切なゲスト変換例外が提示される（例えば、領域第１例外、領域第２例外、領域第３例外、またはセグメント変換例外）。これは、ゲストを実行中に直面したゲストＤＡＴ例外であるので、ＴＸＱが０に設定され、現構成レベルでの例外が示される。次いで、６１０で、この仮想アドレスの変換が停止する。６０６で、索引が有効範囲内にある場合、６１２で、索引にテーブル・エントリ長を掛けたものがテーブル・オリジンに加えられ、テーブル・エントリのゲスト絶対アドレスが生成される。６１４で、このゲスト絶対アドレスがホスト仮想アドレスとして扱われ、ホストＤＡＴおよび適用可能なときはプレフィックス変換が起動され、対応するホスト絶対アドレスが得られる。必要な場合にＴＸＱを生成する際に使用すべきホストＤＡＴに対する追加のパラメータが、変換すべきアドレスのソースがページ・フレーム実アドレスまたはセグメント・フレーム絶対アドレス以外のゲスト・アドレスであることを示す。以下で説明する図１１〜１３が、ホストＤＡＴプロセスを詳述する。６１６で、ホストＤＡＴプロセスに障害が起こった場合、６１８で、ゲスト変換プロセスは終了する。ホストＤＡＴプロセスは例外を生成している。このホスト例外に関するＴＸＱが、図１１で説明するように求められる。６１６で、ホストＤＡＴプロセスが成功した場合、６２０で、得られるホスト絶対アドレスを使用して、ゲスト変換テーブル・エントリがフェッチされる。６２２で、ゲスト・テーブル・エントリ内の無効（Ｉ）ビットが検査される。Ｉビットが設定されている場合、Ｉビットが無効とマークされているので、テーブル・エントリを使用して仮想アドレスのそれ以上の変換を進めることができない。６０８で、上記と同様に、現構成を示すＴＸＱ値と共にゲスト変換例外が提示され、６１０で、このセグメント・テーブル・エントリを使用するこの仮想アドレスのそれ以上の変換が停止する。そうでない場合、６２４で、ゲスト変換テーブルからフェッチされるエントリがセグメント・テーブル・エントリではない場合、変換テーブルの階層内のセグメント・テーブルはまだ参照されていない。この場合、６２６で、ゲスト変換テーブルの階層内の次の下位テーブルのオリジン、オフセット、および長さが、テーブル・エントリから得られる。制御はステップ６０６に戻り、ステップ６０６で、ゲスト仮想アドレス内の次の索引フィールドが、この新しいオフセットおよび長さと突き合わせてチェックされ、範囲内である場合、この索引が、変換で使用される次の下位テーブル内の対応するテーブル・エントリを参照するのに使用される。
【０２０１】
例えば、変換で使用すべき第１ゲスト変換テーブルのテーブル・オリジン・アドレスが領域第１テーブルである場合、ゲスト仮想アドレスのＲＦＸ部分が、領域第１テーブル内の領域第１テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスが領域第２テーブルに対するものである場合、仮想アドレスのＲＳＸ部分が、領域第２テーブル内の領域第２テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスが領域第３テーブルに対するものである場合、仮想アドレスのＲＴＸ部分が、領域第３テーブル内の領域第３テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスがセグメント・テーブルに対するものである場合、仮想アドレスのＳＸ部分が、セグメント・テーブル内のセグメント・テーブル・エントリを参照するのに使用される。セグメント・テーブル・エントリがフェッチされるまで、連続するテーブルが参照される。
【０２０２】
ゲスト・セグメント・テーブル・エントリがフェッチされると、６２８で、セグメント・テーブル・エントリ（ＳＴＥ）フォーマット制御ビットが検査され、この特定の仮想アドレスについてフォーマット制御が設定されているかどうかが判定される。ＳＴＥフォーマット制御が０である場合、ノード６３０に関して動的アドレス変換が行われる。ＳＴＥフォーマット制御が１である場合、ノード６３２に関して動的アドレス変換が行われる。
【０２０３】
ゲスト動的アドレス変換（ＳＴＥフォーマット制御が０である）
次に図９を参照すると、ゲストＳＴＥフォーマット制御が０であるときの、図８のノード６３０からの流れ図の続きが示されている。
【０２０４】
７１０で、ゲスト・ページ・テーブルに対するオリジン・アドレスが、ゲスト・セグメント・テーブル・エントリから得られる。７１２で、ゲスト仮想アドレスのページ索引（ＰＸ）部分にテーブル・エントリ長が掛けられ、それがゲスト・ページ・テーブル・オリジンに加えられ、ゲスト・ページ・テーブル・エントリのゲスト絶対アドレスが生成される。７１４で、このゲスト絶対アドレスは、ホスト仮想アドレスとして扱われ、ホストＤＡＴおよび適用可能なときはプレフィックス変換が起動され、対応するホスト絶対アドレスが得られる。必要な場合にＴＸＱを生成する際に使用すべきホストＤＡＴに対する追加のパラメータが、変換すべきアドレスのソースがページ・フレーム実アドレスまたはセグメント・フレーム絶対アドレス以外のゲスト・アドレスであることを示す。７１６で、ホストＤＡＴプロセスに障害が起こった場合、７１８で、ゲスト変換プロセスは終了する。ホストＤＡＴプロセスは例外を生成している。７１６で、ホストＤＡＴプロセスが成功した場合、７２０で、得られるホスト絶対アドレスを使用して、ゲスト・ページ・テーブル・エントリがフェッチされる。ゲスト・ページ・テーブル・エントリから無効（Ｉ）ビットが得られる。７２２で、無効（Ｉ）ビットが１である場合、エントリが無効とマークされているので、このページ・テーブル・エントリを使用して仮想アドレスの変換を続行することができない。７２４で、ゲスト・ページ変換例外が提示され、ＴＸＱ値が、現構成レベルでの変換から例外が発生したことを示す。７２６で、このページ・テーブル・エントリを使用する仮想アドレスのそれ以上の変換が停止する。７２２で、無効（Ｉ）ビットが０である場合、７２８で、ゲスト・ページ・テーブル・エントリからのゲスト・ページ・フレーム実アドレス（ＰＦＲＡ）が、ゲスト仮想アドレスのバイト索引（ＢＸ）部分と組み合わされ、入力ゲスト仮想アドレスに対応するゲスト実アドレスが生成される。７３０で、このゲスト実アドレスにさらにゲスト・プレフィックス変換操作が施され、ゲスト絶対アドレスが形成される。７３２で、このゲスト絶対アドレスはホスト仮想アドレスとして扱われ、ホストＤＡＴおよび適用可能なときはプレフィックス変換が起動され、対応するホスト絶対アドレスが得られる。必要な場合にＴＸＱを生成する際に使用すべきホストＤＡＴに対する追加のパラメータが、変換すべきアドレスのソースがゲスト・ページ・フレーム実アドレスであることを示す。７３４で、ホストＤＡＴプロセスに障害が起こった場合、７１８で、ゲスト変換プロセスは終了する。ホストＤＡＴプロセスは例外を生成している。７３４で、ホストＤＡＴプロセスが成功した場合、７３６で、得られるホスト絶対アドレスを使用して、変換後ゲスト仮想アドレスでアドレス指定されるデータのブロックがアクセスされる。
【０２０５】
ゲスト動的アドレス変換（ＳＴＥフォーマット制御が１である）
次に図１０を参照すると、ゲストＳＴＥフォーマット制御が１であるときの、図８のノード６３２からの流れ図の続きが示されている。
【０２０６】
８１０で、ゲスト・セグメント・フレーム絶対アドレス（ＳＦＡＡ）が、ゲスト・セグメント・テーブル・エントリの一部から得られる。８１２で、ゲスト・セグメント・フレーム絶対アドレス（ＳＦＡＡ）が、ゲスト仮想アドレスのＰＸ部分およびＢＸ部分と組み合わされ、主ストレージまたはメモリ内のデータの所望のブロックのゲスト絶対アドレスが生成される。８１４で、このゲスト絶対アドレスがホスト仮想アドレスとして扱われ、ホストＤＡＴおよび適用可能なときはプレフィックス変換が起動され、対応するホスト絶対アドレスが得られる。必要な場合にＴＸＱを生成する際に使用すべきホストＤＡＴに対する追加のパラメータが、変換すべきアドレスのソースがゲスト・セグメント・フレーム絶対アドレスであることを示す。８１６で、ホストＤＡＴプロセスに障害が起こった場合、８１８で、ゲスト変換プロセスは終了する。ホストＤＡＴプロセスは例外を生成している。８１６で、ホストＤＡＴプロセスが成功した場合、７２０で、得られるホスト絶対アドレスを使用して、変換後ゲスト仮想アドレスでアドレス指定されるデータの所望のブロックがアクセスされる。
【０２０７】
ホストＤＡＴ
次に図１１を参照すると、ホスト・セグメント・テーブル・エントリからフォーマット制御フィールドを得るために、ゲストＥＤＡＴプロセスから起動することのできる、ホスト・レベルでのホスト動的アドレス変換の一実施形態の流れ図が示されている。
【０２０８】
９０２で、変換すべきホスト仮想アドレスが得られる。９０４で、ホスト仮想アドレスの変換で使用される最高のホスト変換テーブルのオリジン・アドレス、テーブル・レベル、およびテーブル長さが得られる。変換で使用される第１ホスト変換テーブルのオリジン・アドレスが、ＡＳＣＥ内のテーブル・オリジン・フィールドから取られる。テーブル・レベルおよびテーブル長は、それぞれＡＳＣＥ内のＤＴビットおよびＴＬビットに依存する。使用される最高の変換テーブルに関するテーブル・オフセットは、常に０として扱われる。９０６で、変換テーブル内の適切なテーブル・エントリを参照するのに使用すべきホスト仮想アドレスの索引部分がまず、テーブル内で表される最小索引値および最大索引値を決定するテーブル・オフセットおよびテーブル長と突き合わせてチェックされる。９０６で、索引がこの範囲外である場合、仮想アドレスのそれ以上の変換を進めることができない。索引付け中のテーブル・レベルに対して適切なホスト変換例外を提示しなければならない（例えば、領域第１例外、領域第２例外、領域第３例外、またはセグメント変換例外）。一実施形態では、９０８で、ゲスト・プログラムが現在実行中であるかどうかテストが行われる。そうでない場合、すなわちホストが実行中である場合、９１０で、ＴＸＱが例えば０に設定されたホスト変換例外が提示され、現構成レベルでの例外が示される。そうではなく、ゲスト・プログラムが実行中である場合、９１２で、ＴＸＱがゲスト変換操作から渡されたアドレス・ソース値に設定されたホスト変換例外が提示される。どちらの場合も、次いで９１４で変換プロセスが停止する。
【０２０９】
９０６で、索引が有効な範囲内にある場合、９１６で、索引にテーブル・エントリ長を掛けたものがホスト・テーブル・オリジンに加えられ、ホスト・テーブル・エントリのホスト絶対アドレスが生成される。９１８で、このホスト絶対アドレスを使用して、ホスト変換テーブル・エントリがフェッチされる。９２０で、ホスト・テーブル・エントリ内の無効（Ｉ）ビットが検査される。Ｉビットが設定されている場合、Ｉビットが無効とマークされているので、テーブル・エントリを使用して仮想アドレスのそれ以上の変換を進めることができない。制御は９０８に移り、上記と同様に、ＴＸＱ値と共にホスト変換例外が提示され、このセグメント・テーブル・エントリを使用するこの仮想アドレスのそれ以上の変換が停止する。そうでない場合、９２２で、変換テーブルからフェッチされるエントリがセグメント・テーブル・エントリではない場合、変換テーブルの階層内のセグメント・テーブルはまだ参照されていない。この場合、９２４で、ホスト変換テーブルの階層内の次の下位テーブルのオリジン、オフセット、および長さが、テーブル・エントリから得られる。制御はステップ９０６に戻り、ステップ９０６で、ホスト仮想アドレス内の次の索引フィールドが、この新しいオフセットおよび長さと突き合わせてチェックされ、範囲内である場合、この索引が、変換で使用される次の下位テーブル内の対応するホスト・テーブル・エントリを参照するのに使用される。
【０２１０】
例えば、変換で使用すべき第１ホスト変換テーブルのテーブル・オリジン・アドレスが領域第１テーブルである場合、ホスト仮想アドレスのＲＦＸ部分が、領域第１テーブル内の領域第１テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスが領域第２テーブルに対するものである場合、仮想アドレスのＲＳＸ部分が、領域第２テーブル内の領域第２テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスが領域第３テーブルに対するものである場合、仮想アドレスのＲＴＸ部分が、領域第３テーブル内の領域第３テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスがセグメント・テーブルに対するものである場合、仮想アドレスのＳＸ部分が、セグメント・テーブル内のセグメント・テーブル・エントリを参照するのに使用される。セグメント・テーブル・エントリがフェッチされるまで、連続するテーブルが参照される。
【０２１１】
ホスト・セグメント・テーブル・エントリがフェッチされると、９２６で、セグメント・テーブル・エントリ（ＳＴＥ）フォーマット制御ビットが検査され、この特定の仮想アドレスについてフォーマット制御が設定されているかどうかが判定される。ＳＴＥフォーマット制御が０である場合、ノード９２８に関して動的アドレス変換が行われる。ＳＴＥフォーマット制御が１である場合、ノード９３０に関して動的アドレス変換が行われる。
【０２１２】
ホスト動的アドレス変換（ＳＴＥフォーマット制御が０である）
次に図１２を参照すると、ホストＳＴＥフォーマット制御が０であるときの、図１１のノード９２８からの流れ図の続きが示されている。
【０２１３】
１００２で、ホスト・ページ・テーブルに対するオリジン・アドレスが、ホスト・セグメント・テーブル・エントリから得られる。１００４で、ホスト仮想アドレスのページ索引（ＰＸ）部分にテーブル・エントリ長が掛けられ、それがページ・テーブル・オリジンに加えられ、ホスト・ページ・テーブル・エントリのホスト絶対アドレスが生成される。１００６で、このホスト絶対アドレスを使用して、ホスト・ページ・テーブル・エントリがフェッチされる。ホスト・ページ・テーブル・エントリから無効（Ｉ）ビットが得られる。１００８で、無効（Ｉ）ビットが１である場合、エントリが無効とマークされているので、このページ・テーブル・エントリを使用して仮想アドレスの変換を続行することができない。制御は図１１の９４０に移り、上記と同様に、適切なＴＸＱ値と共にホスト変換例外が提示され、このページ・テーブル・エントリを使用するこの仮想アドレスのそれ以上の変換が停止する。１００８で、無効（Ｉ）ビットが０である場合、１０１０で、ページ・テーブル・エントリからのホスト・ページ・フレーム実アドレス（ＰＦＲＡ）が、ホスト仮想アドレスのバイト索引（ＢＸ）部分と組み合わされ、入力ホスト仮想アドレスに対応するホスト実アドレスが生成される。１０１２で、このホスト実アドレスにさらにホスト・プレフィックス変換操作が施され、ホスト絶対アドレスが形成される。１０１４で、このホスト絶対アドレスが、ホスト・アドレス変換の結果として返され、例えばホスト・アドレス変換を起動したゲストＤＡＴプロセスで使用され、またはそれがない場合は、ホスト実行中にターゲット・データにアクセスするために使用される。
【０２１４】
ホスト動的アドレス変換（ＳＴＥフォーマット制御が１である）
次に図１３を参照すると、ホストＳＴＥフォーマット制御が１であるときの、図１１のノード９３０からの流れ図の続きが示されている。
【０２１５】
１１０２で、ホスト・セグメント・フレーム絶対アドレス（ＳＦＡＡ）が、ホスト・セグメント・テーブル・エントリの一部から得られる。１１０４で、ホスト・セグメント・フレーム絶対アドレス（ＳＦＡＡ）が、ホスト仮想アドレスのＰＸ部分およびＢＸ部分と組み合わされ、主ストレージまたはメモリ内のデータの所望のブロックのホスト絶対アドレスが生成される。１１０６で、このホスト絶対アドレスが、ホスト・アドレス変換の結果として返され、例えばホスト・アドレス変換を起動したゲストＤＡＴプロセスで使用され、またはそれがない場合は、ホスト実行中にターゲット・データにアクセスするために使用される。
【０２１６】
したがって、変換例外修飾子（ＴＸＱ）フィールドは、割込みがゲスト・リーフ・テーブル・エントリ内に含まれるアドレスによって引き起こされたことを示すことができ、そうである場合、リーフ・エントリがセグメント・テーブル・エントリであったか、それともページ・テーブル・エントリであったか、すなわち例外がゲスト・ページ・フレーム実アドレスから導出されたホスト仮想アドレスに関連付けられたか、それともゲスト・セグメント・フレーム絶対アドレスから導出されたホスト仮想アドレスと関連付けられたかを示すことができる。それによってＴＸＱフィールドは、ゲスト・フレームを支持するためのホスト・フレームの適切なサイズを示すことができる。ＴＸＱフィールドはさらに、より大きいフレーム・サイズ、例えば２ギガバイト以上が必要であることを示すことができる。
【０２１７】
商業的実装
本明細書ではＩＢＭ（Ｒ）によるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に言及したが、本発明の１つまたは複数の態様は、ページ可能エンティティまたは類似の構成を使用する他のマシン・アーキテクチャまたはコンピューティング環境あるいはその両方に同等に適用可能である。
【０２１８】
本明細書で開示されるＥＤＡＴ機構、ＴＸＱ、および他のフォーマット、命令、ならびに属性の商業的実装は、ハードウェアで実装することができ、または例えばアセンブリ言語で書くオペレーティング・システム・プログラマなどのプログラマによって実装することができる。そのようなプログラミング命令は、IBM(R) System zサーバなどのコンピューティング環境内で、あるいは他のアーキテクチャを実行するマシン内でネイティブに実行されることが意図される記憶媒体上に格納することができる。命令は、既存のサーバおよび将来のサーバ内で、および他のマシンまたはメインフレーム上でエミュレートすることができる。命令は、一般的に実行がエミュレーション・モードであるマシン内で実行することができる。
【０２１９】
エミュレーション・モードでは、エミュレート中の特定の命令が復号化され、サブルーチンが実行されて個々の命令がサブルーチンまたはドライバとして実装され、または本明細書の説明を理解した後の当業者の技術の範囲内にあるのと同様の、特定のハードウェア用のドライバを提供するために何らかの他の技法が使用される。様々なソフトウェアおよびハードウェア・エミュレーション技法が、参照により本明細書にそれぞれ組み込まれる米国特許第５５５１０１３号、第５５７４８７３号、第５７９０８２５号、第６００９２６１号、第６３０８２５５号、および第６４６３５８２号を含む多数の米国特許で説明されている。多数の他の教示がさらに、ターゲット・マシン向けにアーキテクトされた命令セットのエミュレーションを達成する様々な方式を例示している。
【０２２０】
他の変形形態およびアーキテクチャ
本明細書で説明した様々な実施形態は、単なる例に過ぎない。本発明の精神から逸脱することなく、こうした実施形態に対する多数の変形形態が存在することがある。
【０２２１】
本発明の機能のうちの１つまたは複数は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの何らかの組合せとして実装することができる。本発明の諸態様は、複数のゾーンを有する他の環境、および非区分化環境を含む、多数のタイプの環境にとって有益である。さらに、中央プロセッサ・コンプレックスがないが、互いに結合された複数のプロセッサが存在することがある。本明細書の様々な態様は、単一プロセッサ環境に適用可能である。
【０２２２】
本明細書では特定の環境を説明したが、やはり、本発明の精神から逸脱することなくこうした環境に対する多数の変形形態を実装することができる。例えば、環境が論理的に区分化される場合、より多数または少数の論理パーティションを環境内に含めることができる。さらに、互いに結合された複数の中央処理コンプレックスが存在することがある。これらは、本発明の精神から逸脱することなく作成することのできる変形形態の一部に過ぎない。さらに、他の変形形態も可能である。
【０２２３】
固定サイズまたは所定のサイズのストレージのエリアを指すのに「ページ」という用語が使用されるが、ページのサイズは変化する可能性がある。同様に、ブロックのサイズは変化する可能性がある。異なるサイズのブロックまたはページあるいはその両方が存在することがある。ページはブロックと同等でよい。あるいは他の構造を使用することができ、あるいは他の構造をソフトウェアまたはハードウェアあるいはその両方によって実装することができる。さらに、本明細書で説明した例では、限定はしないが様々なサイズのワードまたはアドレス、様々な数のビット、異なる順序のビット、より多数または少数のビットまたは異なるビット、より多数または少数のフィールドまたは異なるフィールド、異なる順序のフィールド、異なるサイズのフィールドなどを含む多数の変形形態が存在することがある。この場合も、これらは一例として与えたに過ぎない。多数の変形形態が可能である。
【０２２４】
ここで説明した変換プロセスの可能な変形形態は、ＤＡＴテーブル・エントリ・アドレスを絶対アドレスではなく実アドレスとして扱うことである。別の可能な変形形態は、ゲスト主ストレージ・オリジンを追加すること、ホスト・アドレス空間を含む所望の部分にゲスト絶対ストレージを制限するように、ゲスト主ストレージ限界に対してテストすることなどの、ゲスト絶対アドレスとホスト仮想アドレスとの間の変換を実施することである。さらに別の変形形態は、複数のホスト・アドレス空間内でゲスト絶対アドレスを参照し、例えばアクセス・レジスタ内容によって選択することを可能にする。
【０２２５】
処理装置は、ゲスト、ホスト、他のプロセッサ、エミュレータ、仮想マシン、または他の類似の構成、あるいはそれらの組合せなどのページ可能エンティティを含む。バッファは、ストレージまたはメモリあるいはその両方のエリア、ならびに限定はしないがアレイまたはページ可能エンティティを含む様々なタイプのデータ構造を含む。テーブルは、他のデータ構造も含むことができる。命令は他のレジスタを参照することができる。さらに、ページ、セグメント、または領域、あるいはそれらの組合せは、本明細書で説明したものとは異なる様々なサイズでよい。
【０２２６】
本発明の１つまたは複数の態様を、例えばコンピュータ使用可能媒体または機械可読媒体を有する製品（例えば１つまたは複数のコンピュータ・プログラム製品）内に含めることができる。媒体は、その中で、例えばコンピュータ可読プログラム・コード手段または論理（例えば、命令、コード、コマンドなど）を実施し、本発明の機能を提供および促進する。製品をコンピュータ・システムの一部として含めることができ、または別々に販売することができる。さらに、本発明の機能を実施するためにマシンで実行可能な命令の少なくとも１つのプログラムを実施する、マシンで読取り可能な少なくとも１つのプログラム記憶装置を設けることができる。
【０２２７】
本明細書で示される流れ図は例示的なものである。本発明の精神から逸脱することなく、説明したこれらの図またはステップまたは動作に対する多数の変形形態が存在することがある。例えば、ステップを異なる順序で実施することができ、またはステップを追加、削除、または修正することができる。これらの変形形態のすべては、特許請求される本発明の一部とみなされる。
【０２２８】
本明細書の実施形態を本明細書で詳細に図示し、説明したが、本発明の精神から逸脱することなく様々な修正、追加、置換などを行うことができ、したがってこうしたものが以下の特許請求の範囲で定義される本発明の範囲内にあるとみなされることは当業者には明らかであろう。
【図１】
2011513808.tif 000025
【図２】
2011513808.tif 000026
【図３】
2011513808.tif 000027
【図４】
2011513808.tif 000028
【図５】
2011513808.tif 000029
【図６】
2011513808.tif 000030
【図７】
2011513808.tif 000031
【図８】
2011513808.tif 000032
【図９】
2011513808.tif 000033
【図１０】
2011513808.tif 000034
【図１１】
2011513808.tif 000035
【図１２】
2011513808.tif 000036
【図１３】
2011513808.tif 000037
【国際調査報告】
2011513808.tif 000038
2011513808.tif 000039