(57)【特許請求の範囲】
【請求項１】
仮想アドレスを、前記仮想アドレスの変換のために用いられる変換テーブル階層構造を有するマシン・アーキテクチャのコンピュータ・システムにおける主ストレージ内のデータ・ブロックの変換アドレスに変換するための方法であって、
前記変換テーブル階層構造はセグメント・テーブル及びページ・テーブルを含み、前記ページ・テーブルは前記セグメント・テーブルによって基点アドレスを指定され、ページ・フレーム実アドレスを含み、
変換すべき仮想アドレスを取得するステップと、
前記変換テーブル階層構造の前記セグメント・テーブルの基点アドレスを取得するステップと、
前記仮想アドレスのインデックス部分を用いて、前記セグメント・テーブル内のエントリ（以下、セグメント・テーブル・エントリという）を参照するステップと、
前記セグメント・テーブル・エントリ内のフォーマット制御フィールドがイネーブルであるかどうかを判定するステップであって、前記セグメント・テーブル・エントリは、前記フォーマット制御フィールドがイネーブルの場合は、主ストレージ内の大データ・ブロックのフレーム絶対アドレスおよびアクセス制御ビットを含み、前記フォーマット制御フィールドがイネーブルでない場合は、前記変換テーブル階層構造の前記ページ・テーブルの基点アドレスを含み且つ前記アドレス制御ビットを含まない、判定するステップと、
前記フォーマット制御フィールドがイネーブルであることに応答して、
前記セグメント・テーブル・エントリから、前記フレーム絶対アドレスを取得するステップと、
前記フレーム絶対アドレスを前記仮想アドレスのオフセット部分と組み合わせて、主ストレージ内の前記大データ・ブロックの所望のデータ・ブロックの変換アドレスを形成するステップであって、前記所望のデータ・ブロックが１つ又は複数のデータ・バイトから成るステップと、
前記アクセス制御ビットまたはストレージ・キーがストレージ・アクセス要求に関連付けられたアクセス・キーと一致する場合に、前記変換アドレスによってアドレス指定された前記所望の大データ・ブロックにアクセスするステップと
を実施するステップと、
前記フォーマット制御フィールドがイネーブルでないことに応答して、
前記セグメント・テーブル・エントリから、前記基点アドレスを取得するステップと、
前記仮想アドレスのインデックス部分を用いて、前記ページ・テーブル内のエントリを参照し、前記ページ・テーブル内のエントリから、主ストレージ内の小データ・ブロックであって、前記大データ・ブロックより小さい小データ・ブロックの小フレーム実アドレスを取得するステップと、
前記小フレーム実アドレスを前記仮想アドレスのオフセット部分と組み合わせて、主ストレージ内の前記所望の小データ・ブロックの変換アドレスを形成するステップと、
前記変換アドレスによってアドレス指定された主ストレージ内の前記所望の小データ・ブロックにアクセスするステップとを実施するステップと
を含む方法。
【請求項２】
前記セグメント・テーブル・エントリから、前記アクセスを前記大データ・ブロックの制限部分に限定するための制限情報を取得するステップと、
前記変換アドレスによってアドレス指定された前記所望の大データ・ブロックへの前記アクセスを、前記大データ・ブロックの前記制限部分のみに限定するステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記制限情報が、テーブル・オフセット又はテーブル長のうちのいずれか１つを含む、請求項２に記載の方法。
【請求項４】
前記変換テーブル階層構造が、領域第２テーブルを位置決めするための領域第１テーブル・エントリを有する領域第１テーブル、領域第３テーブルを位置決めするための領域第２テーブル・エントリを有する領域第２テーブル、セグメント・テーブルを位置決めするための領域第３テーブル・エントリを有する領域第３テーブル、及びセグメント・テーブル・エントリを有するセグメント・テーブルのうちの１つ又は複数から成り、前記方法が、
前記変換テーブル階層構造の所定の変換テーブルから開始して、前記変換テーブル階層構造の１つ又は複数の変換テーブル・エントリを、イネーブルなフォーマット制御フィールドを有するセグメント・テーブル・エントリが見つかるまで、逐次的に検索するステップをさらに含み、前記イネーブルなフォーマット制御フィールドを有する前記セグメント・テーブル・エントリを有する前記セグメント・テーブルのセグメント・テーブル基点アドレスが、前記変換テーブル階層構造の前記セグメント・テーブルの前記取得された基点アドレスである、請求項１に記載の方法。
【請求項５】
前記仮想アドレスの前記変換に用いられた情報を、少なくとも１つの変換ルックアサイド・バッファ内にストアするステップと、
その後の仮想アドレスの、主ストレージ内の前記データ・ブロックの絶対アドレスへのそれ以降の変換を、前記変換テーブル階層構造ではなく前記変換ルックアサイド・バッファ由来の前記ストアされた情報を用いて実施するステップと
をさらに含む、請求項１に記載の方法。
【請求項６】
前記変換が前記マシン・アーキテクチャに対してネイティブではないことに応答して、
前記変換をエミュレートするための所定のソフトウェア・ルーチンを識別するステップであって、前記所定のソフトウェア・ルーチンが複数の命令を含むステップと、
前記所定のソフトウェア・ルーチンを実行するステップと
をさらに含む、請求項１に記載の方法。
【請求項７】
前記大データ・ブロックが、少なくとも１メガバイトのサイズのブロックを含む、請求項１に記載の方法。
【請求項８】
方法に係る請求項１から請求項７のいずれか１項に記載の方法の全てのステップを実行するように適合された手段を備える、システム。
【請求項９】
コンピュータ・プログラムであって、前記コンピュータ・プログラムがコンピュータ・システム上で実行されるときに、請求項１から請求項７のいずれか１項に記載の方法の全てのステップをコンピュータに実行させるための、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・システムにおいて仮想アドレスを変換するためのシステム及び方法に関し、より具体的には、仮想アドレス変換が変換テーブル階層構造を経て生じる動的アドレス・ファシリティを有するコンピュータ・システムにおいて、仮想アドレスをデータ・ブロックの実アドレス又は絶対アドレスに変換するシステム及び方法に関する。
【背景技術】
【０００２】
動的アドレス変換は、任意の瞬間にプログラムの実行への割り込みを行い、そのプログラム及びそのプログラムのデータを直接アクセス・ストレージ・デバイスなどの補助ストレージに記録し、後の時点で、プログラム及びデータを異なる主ストレージ位置に戻して実行を再開する能力を提供する。主ストレージと補助ストレージとの間のプログラム及びデータの転送は断片的に行うことができ、主ストレージへの情報のリターンは、その情報が実行のために必要になった時点でＣＰＵによるアクセスの試行に応答して行われるものとすることができる。これらの機能は、プログラム及びそのデータを変更又は検査することなく実施することができ、再配置されたプログラムにおけるいかなる明示的なプログラミング規則も必要とせず、時間的遅延が伴うことを除いて、プログラムの実行を妨げない。
【０００３】
オペレーティング・システムによる適切なサポートがあれば、動的アドレス変換ファシリティを用いて、ユーザに、ストレージがその構成において利用可能な主ストレージより大きく見えるようなシステムを提供することができる。この見かけの主ストレージは、しばしば仮想ストレージと呼ばれ、仮想ストレージ内の位置を指定するために用いられるアドレスは、しばしば仮想アドレスと呼ばれる。ユーザの仮想ストレージは、その構成において利用可能な主ストレージのサイズを遥かに超過することができ、通常は補助ストレージ内で維持される。仮想ストレージは、一般にページと呼ばれる（セグメント及び領域とも呼ばれる）データのブロックで構成されるものと見なされる。仮想ストレージのうち、直前に参照されたページのみが、物理的主ストレージのブロックを占有するように割り当てられる。ユーザが、主ストレージに現れていない仮想ストレージのページを参照する際には、それらのページを取り込んで、必要とされる可能性の低い主ストレージ内のページを置き換える。幾つかの場合には、仮想ストレージは、ストレージが参照されるかどうかに関わりなく、長期間にわたって（又は永続的に）主ストレージに割り当てられる。ストレージのページのスワッピングは、オペレーティング・システムによって、ユーザが知ることなく行われる。
【０００４】
プログラムは、アドレス（又は仮想アドレス）を用いて仮想ストレージにアクセスする。プログラムは仮想アドレスを用いて、仮想ストレージから命令をフェッチすることができ、又は仮想ストレージからデータをロードするか若しくはデータをストアすることができる。ある範囲の仮想ストレージに関連付けられた仮想アドレスが、アドレス空間を定める。オペレーティング・システムによる適切なサポートがあれば、動的アドレス変換ファシリティを用いて、多数のアドレス空間を提供することができる。これらのアドレス空間を用いて、ユーザ間に様々な度合いの分離を提供することができる。このようなサポートは、ユーザごとに完全に異なるアドレス空間から成ることによって完全な分離を提供することもでき、又は各アドレス空間の一部を単一の共通ストレージ領域にマッピングすることによって共有エリアを提供することもできる。また、半特権的プログラムが１つより多くのこのようなアドレス空間にアクセスすることを許可する命令も、提供される。
【０００５】
動的アドレス変換は、多数の異なるアドレス空間からの仮想アドレスの変換を規定する。これらのアドレス空間は、一次アドレス空間、二次アドレス空間、及びアクセス・レジスタ指定アドレス空間と呼ばれる。特権的プログラムは、アクセスすべきホーム・アドレス空間を生じさせることもできる。動的アドレス変換は、ＣＰＵによって生成された命令及びデータ・アドレスに対して指定することができる。
【０００６】
当該技術分野において今まで知られていない更なる機能、能力、及び保護を提供する、強化された動的アドレス変換ファシリティが必要とされている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第５，５５１，０１３号
【特許文献２】米国特許第５，５７４，８７３号
【特許文献３】米国特許第５，７９０，８２５号
【特許文献４】米国特許第６，００９，２６１号
【特許文献５】米国特許第６，３０８，２５５号
【特許文献６】米国特許第６，４６３，５８２号
【非特許文献】
【０００８】
【非特許文献１】「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、ＩＢＭ（登録商標）刊行番号ＳＡ２２−７８３２−０５、第６版、２００７年４月
【非特許文献２】「ＩＢＭ（登録商標）Ｓｙｓｔｅｍ／３７０  Ｅｘｔｅｎｄｅｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ」、ＩＢＭ（登録商標）刊行番号ＳＡ２２−７０９５、１９８５年
【発明の概要】
【発明が解決しようとする課題】
【０００９】
仮想アドレスを、変換のために用いられる変換テーブル階層構造を備えたマシン・アーキテクチャを有するコンピュータ・システムの主ストレージ内の所望のデータ・ブロックの実アドレス又は絶対アドレスに変換する強化型動的アドレス変換ファシリティのためのシステム、方法、及びコンピュータ・プログラム製品が提供される。実アドレスにプリフィックス付加を行って、絶対アドレスを形成することができる。
【課題を解決するための手段】
【００１０】
１つの例示的な実施形態において、変換されるべき仮想アドレスが最初に取得され、変換テーブル階層構造の変換テーブルの初期基点アドレスが取得される。仮想アドレスのインデックス部分を用いて、変換テーブル内のエントリを参照する。変換テーブル・エントリ内のフォーマット制御フィールドがイネーブルであるかどうかの判定が行われる。フォーマット制御フィールドがイネーブルであれば、変換テーブル・エントリから、主ストレージ内の大データ・ブロックのフレーム・アドレスを取得する。大データ・ブロックは少なくとも１メガバイトのサイズのブロックを含む。次いで、フレーム・アドレスを仮想アドレスのオフセット部分と組み合わせて、主ストレージ内の大データ・ブロック内の所望のデータ・ブロックの変換アドレスを形成する。次いで、変換アドレスによってアドレス指定された所望の大データ・ブロックにアクセスする。別の実施形態において、無効なテーブル・エントリ・フィールドが変換テーブル・エントリから取得される。対応する無効なテーブル・エントリ・フィールドがイネーブルであれば、例外アクションが起動される。
【００１１】
別の実施形態において、変換テーブル・エントリから制限情報が取得される。制限情報は、大ブロックの制限部分へのアクセスを制限するために用いられる。変換アドレスによってアドレス指定された所望の大データ・ブロックへのアクセスは、それ以降、データ・ブロックの制限部分に対してのみ許可される。
【００１２】
本発明は、次に、特定の例示的な実施形態との関連で説明される。当業者であれば本発明の精神及び範囲から逸脱することなく種々の変更及び修正を行うことが可能であることを理解されたい。
【００１３】
添付の図面において、同一又は機能的に類似の要素には別々の図の全体を通じて同様の参照符号が付されており、これらの図面は以下の詳細な説明と共に本明細書に組み入れられ、その一部を形成するものであり、種々の実施形態をさらに例証し、且つ、全て本発明に従う種々の原理及び利点を説明する役割を果たす。
【図面の簡単な説明】
【００１４】
【図１】強化型動的アドレス変換を実施することができるホスト・コンピュータ・システムの一実施形態を示す。
【図２】ホスト・アーキテクチャのホスト・コンピュータ・システムをエミュレートする、エミュレートされたホスト・コンピュータ・システムの一例を示す。
【図３】プログラム・ステータス・ワードを用いて仮想アドレスの動的アドレス変換のための実効ＡＳＣＥを判定する手法の一実施形態を示す。
【図４】図３において判定された実効ＡＳＣＥを用いて、仮想アドレスの変換に用いられる変換テーブル階層構造の中で最も高位の変換テーブルを判定する一実施形態を示す。
【図５】変換テーブル階層構造をセグメント・テーブル・レベルまで用いて仮想アドレスを動的アドレス変換するプロセスの一実施形態を示す。
【図６】セグメント・テーブル・エントリ（ＳＴＥ）フォーマット制御（ＦＣ）が０である場合の、図５の動的アドレス変換の続きを示す。
【図７】セグメント・テーブル・エントリ（ＳＴＥ）フォーマット制御（ＦＣ）が１である場合の、図５の動的アドレス変換の続きを示す。
【図８】セグメント・テーブル・エントリ内のフォーマット制御フィールドを取得するための強化型（enhanced)動的アドレス変換（ｅＤＡＴ）の一実施形態の流れ図を示す。
【図９】図８のノード６１４からの流れ図の続きを示す。
【図１０】図８のノード６１６からの流れ図の続きを示す。
【図１１】変換された仮想アドレスによってアドレス指定された所望のデータ・ブロックに適用すべきＤＡＴ保護のレベルを判定する一実施形態の流れ図を示す。
【図１２】変換された仮想アドレスによってアドレス指定された所望のデータ・ブロックに適用すべきアクセス制御保護のレベルを判定する、図１０のノード８２２からの流れ図の続きを示す。
【図１３】変換された仮想アドレスによってアドレス指定された所望のデータ・ブロックに適用すべきフェッチ保護のレベルを判定する、図１０のノード８２２からの流れ図の続きを示す。
【図１４】変更記録オーバーライド・フィールドがセグメント・テーブル・エントリから取得される、図１０のノード８２２からの流れ図の続きを示す。
【発明を実施するための形態】
【００１５】
本出願の明細書における記述は、特許請求される種々の発明いずれをも必ずしも限定するものではないことを理解されたい。さらに、幾つかの記述は、幾つかの発明の特徴に当てはまることがあるが、他の発明の特徴には当てはまらないこともある。特に断りのない限り、単数形の要素は、一般性を失うことなく、複数形の場合もあり、その逆もまた真である。
【００１６】
当業者であれば、コンピュータ環境内のストレージに対してアドレス指定すること、及び、様々な状態及びそれらの状態上での動作を示すためにレジスタ又はアドレス・フィールド内のビットを使用することに容易に精通するはずである。さらに、当業者であれば、コンピュータ・プログラム分野の知識を有し、かつ、コンピュータ・システムのコンポーネント間の働き及び相互関係についての知識を有しているはずである。
【００１７】
概要
強化型動的アドレス変換（ＤＡＴ）ファシリティの例示的な実施形態が提供される。強化型ＤＡＴファシリティがインストールされており、且つイネーブルである場合、ＤＡＴ変換は、ページ・フレーム実アドレス、又はセグメント・テーブル・エントリ内のセグメント・テーブル・エントリ（ＳＴＥ）フォーマット制御によって決定されるセグメント・フレーム絶対アドレスを生成することができる。本明細書において用いられる「強化型ＤＡＴを適用する」という用語は、以下の全てが真であることを意味する。即ち、１）ＥＤＡＴファシリティがインストールされており、２）ＥＤＡＴファシリティが制御レジスタ０（ＣＲ０）ビット４０を通じてイネーブルになっており、且つ３）アドレスはＤＡＴテーブル・エントリによって変換される。
【００１８】
強化型ＤＡＴを適用する場合、ＤＡＴプロセスにおいて以下の追加機能が利用可能である。即ち、
ＤＡＴ保護ビットが領域テーブル・エントリに追加され、セグメント・テーブル・エントリ及びページ・テーブル・エントリ内のＤＡＴ保護ビットと同様の機能を与える。
ＳＴＥフォーマット制御がセグメント・テーブル・エントリに追加される。ＳＴＥフォーマット制御が０である場合、ＤＡＴは、そのページに対する変更ビットの設定がバイパスされるかどうかをページ・テーブル・エントリ内の変更記録オーバーライドが示すこと以外は、現在定められている通りに進行する。
【００１９】
ＳＴＥフォーマット制御が１である場合、セグメント・テーブル・エントリは、さらに以下を含む。即ち、
１メガバイト・ブロックの絶対ストレージ位置を指定するセグメント・フレーム絶対アドレス（ページ・テーブル基点ではなく）。
セグメントの個々のストレージ・キーの中の対応するビットの代わりに随意的に用いることができる、アクセス制御ビット及びフェッチ保護ビット。
セグメント・テーブル・エントリ内のアクセス制御ビット及びフェッチ保護ビットの妥当性を決定するビット。
セグメントの個々のストレージ・キーにおいて変更ビットの設定をバイパスすることができるかどうかを示す、変更記録オーバーライド。
【００２０】
ホスト・コンピュータ・システム
図１を参照すると、ホスト・コンピュータ・システム１００の代表的なコンポーネントが描かれている。他のコンポーネント構成をコンピュータ・システムにおいて用いることもでき、これは当該技術分野において周知である。
【００２１】
ホスト・コンピュータ環境は、ニューヨーク州Ａｒｍｏｎｋ所在のＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ＩＢＭ（登録商標））により提供される、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）に基づくものであることが好ましい。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）は、引用によりその全体をここに組み入れる非特許文献１に、より詳細に記載されている。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）に基づくコンピュータ環境は、例えば、共にＩＢＭ（登録商標）によるｅＳｅｒｖｅｒ及びｚＳｅｒｉｅｓ（登録商標）を含む。
【００２２】
代表的なホスト・コンピュータ１００は、１つ又は複数のＣＰＵ１０１を含み、これは、主ストア（コンピュータ・メモリ１０２）、並びに、ストレージ・デバイス１１１に対するＩ／Ｏインターフェース、及び他のコンピュータ又はストレージ・エリア・ネットワーク（ＳＡＮ）などとの通信のためのネットワーク１１０に対するＩ／Ｏインターフェースと通信する。ＣＰＵは、プログラム・アドレス（仮想アドレス）をメモリの実アドレスに変換するための動的アドレス変換（ＤＡＴ）ファシリティ（機能又はユニット）１０３を含む。ＤＡＴファシリティは、典型的には、後でコンピュータ・メモリ１０２のブロックにアクセスしたときにアドレス変換による遅延を必要とせずに済むように変換をキャッシュに入れるための、変換ルックアサイド・バッファ１０７を含む。典型的には、キャッシュ１０９は、コンピュータ・メモリ１０２とプロセッサ１０１との間で用いられる。キャッシュ１０９は、１つより多くのＣＰＵが利用できる大型キャッシュと、大型キャッシュと各ＣＰＵとの間のより小型でより高速な（下位レベルの）キャッシュとを有する階層構造とすることができる。幾つかの実装において、下位レベルのキャッシュは、命令のフェッチ及びデータ・アクセスのための個別の低レベルキャッシュを提供するように分割される。一実施形態において、命令は、命令フェッチ・ユニット１０４によりメモリ１０２からキャッシュ１０９を経由してフェッチされる。命令は、命令デコード・ユニット（１０６）内でデコードされ、（幾つかの実施形態においては他の命令と共に）命令実行ユニット１０８へディスパッチされる。典型的にはいくつかの実行ユニット１０８、例えば、算術演算実行ユニット、浮動小数点実行ユニット、及び分岐命令実行ユニットが用いられる。命令は、実行ユニットにより、必要に応じて命令が指定するレジスタ又はメモリからのオペランドにアクセスしながら実行される。オペランドがメモリ１０２からアクセスされる（ロードされる又はストアされる）場合には、典型的には、ロード・ストア・ユニット１０５が、実行されている命令の制御下でアクセスを取り扱う。
【００２３】
一実施形態において、本発明は、ソフトウェア（ライセンス内部コード（ＬＩＣ）、ファームウェア、マイクロ・コード、ミリ・コード、ピコ・コードなどと呼ばれる場合もあるが、そのいずれも本発明と整合性がある）により実施することができる。本発明を具体化するソフトウェア・プログラム・コードは、典型的には、コンピュータ・システム１００のＣＰＵ（中央演算処理装置）１０１としても知られるプロセッサにより、ＣＤ‐ＲＯＭドライブ、テープ・ドライブ又はハード・ドライブといった長期ストレージ媒体１１１からアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ又はＣＤ‐ＲＯＭといった、データ処理システムと共に使用するための種々の公知の媒体のいずれかの上で具体化することができる。コードは、そのような媒体上で配布することができ、又は１つのコンピュータ・システムのコンピュータ・メモリ１０２若しくはストレージから、他のシステムのユーザが使用するために、ネットワーク１１０を介してそのような他のコンピュータ・システムに配布することができる。
【００２４】
あるいは、プログラム・コードをメモリ１０２内で具体化し、プロセッサ・バスを用いてプロセッサ１０１によってアクセスすることができる。このようなプログラム・コードは、種々のコンピュータ・コンポーネント及び１つ又は複数のアプリケーション・プログラムの機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、高密度ストレージ媒体１１１から高速メモリ１０２にページングされ、そこでプロセッサ１０１による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理媒体上で具体化し、及び／又はネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、作成され、有形の媒体（電子メモリ・モジュール（ＲＡＭ）、フラッシュメモリ、コンパクトディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含むがこれらに限定されない）に格納された場合には、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品媒体は、典型的には、処理回路によって実行されるために、好ましくはコンピュータ・システム内にある処理回路によって読み出し可能である。
【００２５】
図２に、ホスト・アーキテクチャのホスト・コンピュータ・システム１００をエミュレートする、エミュレートされたホスト・コンピュータ・システム２０１の一例を示す。エミュレートされたホスト・コンピュータ・システム２０１において、ホスト・プロセッサ（ＣＰＵ）２０８は、エミュレートされたホスト・プロセッサ（又は仮想ホスト・プロセッサ）であり、ホスト・コンピュータ１００のプロセッサ１０１によって用いられるものとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ２０７を備える。エミュレートされたホスト・コンピュータ・システム２０１は、エミュレーション・プロセッサ２０７によってアクセス可能なメモリ２０２を有する。例示的な実施形態において、メモリ２０２は、ホスト・コンピュータ・メモリ１０２部分と、エミュレーション・ルーチン２０３部分（エミュレーションを提供するルーチンはホスト・メモリの一部とすることができる）とのパーティションに分けられている。ホスト・コンピュータ・メモリ１０２は、ホスト・コンピュータ・アーキテクチャに従い、エミュレートされたホスト・コンピュータ・システム２０１のプログラムによって利用可能である。エミュレーション・プロセッサ２０７は、エミュレートされたプロセッサ２０８のアーキテクチャ以外のアーキテクチャのアーキテクチャ化された（architected）命令セットのネイティブ命令を実行し、このネイティブ命令はエミュレーション・ルーチン・メモリ２０３から取得されたものであり、且つ、エミュレーション・プロセッサ２０７は、シーケンス及びアクセス／デコード・ルーチンにおいて取得される１つ又は複数の命令を用いることによって、ホスト・コンピュータ・メモリ１０２の中のプログラム由来の実行のためのホスト命令にアクセスすることができ、このシーケンス及びアクセス／デコード・ルーチンは、アクセスされたホスト命令をデコードして、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判定することができる。
【００２６】
ホスト・コンピュータ・システム１００アーキテクチャのために定義された、例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、並びにＩ／Ｏサブシステム・サポート及びプロセッサ・キャッシュといったファシリティを含む他のファシリティを、アーキテクチャ化ファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を高めるために、エミュレーション・プロセッサ２０７において利用可能な（汎用レジスタ、及び仮想アドレスの動的変換といった）ファシリティを利用することもできる。ホスト・コンピュータ１００の機能をエミュレートする際にプロセッサ２０７を補助するために、特殊ハードウェア及びオフ・ロード・エンジンを設けることもできる。
【００２７】
コンピュータ・プロセッサ及びレジスタ
一実施形態において、ＣＰＵのプログラム命令機能は、通信バスを介して複数のレジスタと通信する。通信バスは、ＣＰＵの内部にあっても、又は外部にあってもよい。いくつかのレジスタは読み出し専用とすることができる。他のハードウェア及び／又はソフトウェアも、ＣＰＵによってアクセス可能な１つ又は複数のレジスタを読み出す／書き込むことができる。命令動作コード（オペコード）が、いずれかの特定のマシン命令動作において、どのタイプのレジスタが用いられるかを決定する。
【００２８】
汎用レジスタ
命令は、１６個の汎用レジスタのうちの１つ又は複数の中の情報を指示することができる。汎用レジスタは、アドレス算術演算におけるベース・アドレス・レジスタ及びインデックス・レジスタとして用いることができ、且つ、一般算術演算及び論理演算におけるアキュムレータとして用いることができる。各レジスタは、６４個のビット位置を含む。汎用レジスタは、番号０−１５によって識別され、命令内の４ビットのＲフィールドによって指示される。ある命令は、数個のＲフィールドを有することによって、複数の汎用レジスタをアドレス指定することを規定する。命令によっては、特定の汎用レジスタの使用は、命令のＲフィールドによって明示的に指示されるのではなく暗黙的であることもある。
【００２９】
演算によっては、２つの隣接する汎用レジスタのビット３２−６３又は０−６３のいずれかを結合して、それぞれ、６４ビット又は１２８ビット形式を提供する場合もある。これらの演算においては、プログラムは、最左端（高位）の３２ビット又は６４ビットを含む偶数番号のレジスタを指示しなければならない。次に高位の番号のレジスタは最右端（低位）の３２ビット又は６４ビットを含む。一般算術演算及び論理演算におけるアキュムレータとしての使用に加えて、１６個の汎用レジスタのうちの１５個は、アドレス生成におけるベース・アドレス及びインデックス・レジスタとして用いることもできる。これらの場合において、レジスタは、命令内の４ビットのＢフィールド又はＸフィールドによって指示される。Ｂ又はＸフィールドにおける０の値は、適用されるべきベース又はインデックスが存在しないことを指定し、従って、汎用レジスタ０を、ベース・アドレス又はインデックスを含むものとして指示することはできない。
【００３０】
制御レジスタ
制御レジスタは、プログラム・ステータス・ワードの外部での制御情報の保持及び操作を規定する。ＣＰＵは、各々が６４のビット位置を有する１６個の制御レジスタを有する。レジスタ内のビット位置は、プログラム・イベント記録のようなシステム内の特定のファシリティに割り当てられ、ある演算を行うことができることを指定すること、又はそのファシリティが要求する特別な情報を供給することのどちらかのために用いられる。制御レジスタは、番号０−１５によって識別され、ＬＯＡＤ  ＣＯＮＴＲＯＬ命令及びＳＴＯＲＥ  ＣＯＮＴＲＯＬ命令内の４ビットのＲフィールドによって指示される。複数の制御レジスタを、これらの命令によってアドレス指定することが可能である。
【００３１】
制御レジスタ１
制御レジスタ１は、一次アドレス空間制御要素（ＰＡＳＣＥ）を含む。一実施形態において、制御レジスタ１は、レジスタ内の実空間制御ビット（Ｒ）に応じて、以下の２つのフォーマットのうちの１つを有する。
【表１】
0005602638.tif 000002
【００３２】
一次アドレス空間制御要素（ＰＡＳＣＥ）内の選択されたフィールドは、以下のように割り振られる。
一次領域テーブル又はセグメント・テーブル基点：制御レジスタ１の中の一次領域テーブル又はセグメント・テーブル指示のビット０−５１は、右に１２個の０が付加されると、一次領域テーブル又はセグメント・テーブルの開始位置を指示する６４ビット・アドレスを形成する。このアドレスが実であるか絶対であるかは予測不可能である。このテーブルは、一次アドレス空間における仮想アドレスを変換するために用いられるので、一次領域テーブル又はセグメント・テーブルと呼ばれる。
【００３３】
一次実空間制御（Ｒ）：制御レジスタ１のビット５８が０であれば、レジスタは領域テーブル又はセグメント・テーブル指示を含む。ビット５８が１であれば、レジスタは実空間指示を含む。ビット５８が１である場合、セグメント・テーブル・エントリの変換ルックアサイド・バッファ表示内の共通セグメント・ビットの値１は、制御レジスタ１の中のトークン基点と変換ルックアサイド・バッファ・エントリの中のテーブル基点との間に一致が存在したとしても、一次アドレス空間への参照を変換するときにエントリ及びそれが指示する変換ルックアサイド・バッファ・ページ・テーブル・コピーが用いられることを防止する。
【００３４】
一次指示タイプ制御（ＤＴ）：Ｒが０である場合、制御レジスタ１の中のテーブル指示タイプは、レジスタ内のビット６０及び６１によって以下のように指定される。
【表２】
0005602638.tif 000003
【００３５】
Ｒが０である場合、最左端の１ビットがアドレスのビット位置０−１０にある仮想アドレスを変換するためにＰＡＳＣＥの使用が試行される場合には、ビット６０及び６１は二進数字１１でなければならない。同様に、最左端の１ビットがアドレスのビット位置１１−２１にある場合には、ビット６０及び６１は二進数字１１又は１０でなければならず、最左端の１ビットがアドレスのビット位置２２−３２にある場合には、二進数字１１、１０、又は０１でなければならない。それ以外の場合には、ＡＳＣＥタイプ例外が認識される。
【００３６】
一次領域テーブル又はセグメント・テーブル長（ＴＬ）：制御レジスタ１の中の一次領域テーブル指示又はセグメント・テーブル指示のビット６２及び６３は、一次領域テーブル又はセグメント・テーブルの長さを４，０９６バイトの単位で指定し、従って、領域テーブル又はセグメント・テーブルの長さを５１２エントリの倍数として可変にする。一次領域テーブル又はセグメント・テーブルの長さは、４，０９６バイト単位で、ＴＬの値より１多い。長さフィールドの内容は、そのテーブルによって変換されるべき仮想アドレスの一部（ＲＦＸ、ＲＳＸ、ＲＴＸ、又はＳＸ）が、そのテーブルの範囲内にあるエントリを指示しているかどうかを確立するために用いられる。
【００３７】
一次実空間トークン基点：制御レジスタ１の中の一次実空間のビット０−５１は、右に１２個の０が付加されると、６４ビットのアドレスを形成し、このアドレスは、一次アドレス空間の参照のための仮想と実が等しい変換（virtual equals real translation）を提供する変換ルックアサイド・バッファ・エントリの形成及び使用の際に用いることができる。このアドレスはトークンとしてのみ用いられるものであり、ストレージ参照を実施するために用いられるものではないが、それでもなお、有効なアドレスでなければならない。そうでなければ、制御レジスタ１の内容が用いられるときに、正しくない変換ルックアサイド・バッファ・エントリが用いられることがある。
【００３８】
制御レジスタ１の以下のビット、即ち、レジスタが領域テーブル指示又はセグメント・テーブル指示を含む場合のビット５２、５３及び５９、レジスタが実空間指示を含む場合のビット５２、５３及び５９−６３は、割り当てられず、無視される。
【００３９】
制御レジスタ７
制御レジスタ７は、二次アドレス空間制御要素（ＳＡＳＣＥ）を含む。一実施形態において、制御レジスタ７は、レジスタ内の実空間制御ビット（Ｒ）に応じて、以下の２つのフォーマットのうちの１つを有する。即ち、
【表３】
0005602638.tif 000004
【００４０】
制御レジスタ１３
制御レジスタ１３は、ホーム・アドレス空間制御要素（ＨＡＳＣＥ）を含む。一実施形態において、制御レジスタ１３は、レジスタ内の実空間制御ビット（Ｒ）に応じて、以下の２つのフォーマットのうちの１つを有する。即ち、
【表４】
0005602638.tif 000005
【００４１】
アクセス・レジスタ
ＣＰＵは、０−１５の番号を与えられた１６個のアクセス・レジスタを有する。アクセス・レジスタは、ＡＳＣＥの間接的な指定を含む３２個のビット位置から成る。ＡＳＣＥは、動的アドレス変換（ＤＡＴ）機構によって、対応するアドレス空間に対する参照を変換するために用いられるパラメータである。ＣＰＵがアクセス・レジスタ・モードと呼ばれるモード（プログラム・ステータス・ワード内のビットによって制御される）にある場合、ストレージ・オペランド参照のための論理アドレスを指定するために用いられる命令Ｂフィールドがアクセス・レジスタを指示し、そのアクセス・レジスタによって指定されるＡＳＣＥが、ＤＡＴによって、行われている参照のために用いられる。命令によっては、Ｂフィールドの代わりにＲフィールドが用いられることもある。アクセス・レジスタの内容をロード及びストアするための命令、並びに１つのアクセス・レジスタの内容を別のアクセス・レジスタに移動するための命令が与えられる。
【００４２】
アクセス・レジスタ１−１５の各々は、現在の命令空間（一次アドレス空間）を含めた任意のアドレス空間を指示することができる。アクセス・レジスタ０は、一次アドレス空間を指示する。アクセス・レジスタ１−１５のうちの１つがアドレス空間を指示するために用いられている場合、ＣＰＵは、そのアクセス・レジスタの内容を変換することによって、どのアドレス空間が指示されているかを判定する。アクセス・レジスタ０がアドレス空間を指示するために用いられる場合、ＣＰＵは、そのアクセス・レジスタが一次命令空間を指示するものとして扱い、アクセス・レジスタの実際の内容は検査しない。従って、１６個のアクセス・レジスタは、任意の一時点に、一次命令空間と、最大で１５個の他の空間とを指示することができる。
【００４３】
プログラム・ステータス・ワード（ＰＳＷ）
プログラム・ステータス・ワードは、命令アドレスと、条件コードと、命令の順序付けを制御し、ＣＰＵの状態を決定するために用いられる他の情報とを含む。アクティブな又は制御中のプログラム・ステータス・ワードは、カレント・プログラム・ステータス・ワードと呼ばれる。これは、現在実行されているプログラムを支配する。
【００４４】
ＣＰＵは割り込み能力を有し、これにより、ＣＰＵを例外条件及び外部刺激に応答して別のプログラムに迅速に切り替えることが可能になる。割り込みが発生すると、ＣＰＵは、カレント・プログラム・ステータス・ワードを、古いプログラム・ステータス・ワード位置と呼ばれる、特定の割り込みのクラス毎に割り当てられたストレージ位置に置く。ＣＰＵは、第２の割り当てられたストレージ位置から新たなプログラム・ステータス・ワードをフェッチする。この新たなプログラム・ステータス・ワードが、次に実行されるプログラムを決定する。割り込みの処理が終了すると、割り込みを扱うプログラムは、割り込まれたプログラムが続行できるように、古いプログラム・ステータス・ワードをリロードして、それを再びカレント・プログラム・ステータス・ワードとすることができる。
【００４５】
割り込みには、外部、Ｉ／Ｏ、マシン・チェック、プログラム、再起動、及びスーパーバイザー・コールの６つのクラスがある。各クラスは、実ストレージに永続的に割り当てられた、古いプログラム・ステータス・ワード位置と新しいプログラム・ステータス・ワード位置との別個のペアを有する。
【００４６】
カレント・プログラム・ステータス・ワード
ＣＰＵ内のカレント・プログラム・ステータス・ワードは、現在アクティブなプログラムの実行に必要な情報を含む。プログラム・ステータス・ワードは、１２８ビット長であり、命令アドレス、条件コード、及び他の制御フィールドを含む。一般に、プログラム・ステータス・ワードは、命令の順序付けを制御し、ＣＰＵの状態のうちの多くを、現在実行中のプログラムとの関係で保持及び表示するために用いられる。付加的な制御及び状態情報は、制御レジスタ及び永続的に割り当てられたストレージ位置に含まれる。ＣＰＵの状態は、新たなプログラム・ステータス・ワード又はプログラム・ステータス・ワードの一部をロードすることによって変更することができる。
【００４７】
ＣＰＵの割り込み中に、ＣＰＵの状態を保存するためにカレント・プログラム・ステータス・ワードをストアし、次いで新たなプログラム・ステータス・ワードをロードすることによって、制御が切り替えられる。ＬＯＡＤ  ＰＳＷ又はＬＯＡＤ  ＰＳＷ  ＥＸＴＥＮＤＥＤの実行、又は初期プログラム・ロード・シーケンスの終結の成功により、新たなプログラム・ステータス・ワードが導入される。命令アドレスは、逐次的な命令実行によって更新され、成功した分岐によって置換される。プログラム・ステータス・ワードの一部の上で動作する他の命令が与えられる。
【００４８】
プログラム・ステータス・ワードを変更する命令の割り込み又は実行が完了すると、新たな又は修正されたプログラム・ステータス・ワードがアクティブになる（即ち、カレント・プログラム・ステータス・ワードに導入された情報がＣＰＵに対する制御を担う）。プログラム・ステータス・ワードを変更する命令に関連するプログラム・イベント記録（ＰＥＲ）のための割り込みは、その動作の開始時に有効なＰＥＲマスクの制御下で生じる。プログラム・ステータス・ワードのビット０−７は集合的にシステム・マスクと呼ばれる。一実施形態において、プログラム・ステータス・ワードは以下のフォーマットを有する。
【表５】
0005602638.tif 000006
【００４９】
以下は選択されたプログラム・ステータス・ワードフィールドの機能の概要である。
【００５０】
ＤＡＴモード（Ｔ）：ビット５は、ストレージにアクセスするために用いられる論理アドレス及び命令アドレスの暗黙的な動的アドレス変換が行われるかどうかを制御する。ビット５が０である場合には、ＤＡＴはオフであり、論理アドレス及び命令アドレスは実アドレスとして扱われる。ビット５が１である場合には、ＤＡＴはオンであり、動的アドレス変換機構が起動される。
【００５１】
ＰＳＷキー：ビット８−１１は、ＣＰＵによるストレージ参照のためのアクセス・キーを形成する。参照がキー制御保護を受ける場合は、情報がストアされるとき又は情報がフェッチに対して保護されている位置からフェッチされるときに、ＰＳＷキーは、ストレージ・キーと照合される。しかし、ＭＯＶＥ  ＴＯ  ＰＲＩＭＡＲＹ、ＭＯＶＥ  ＴＯ  ＳＥＣＯＮＤＡＲＹ、ＭＯＶＥ  ＷＩＴＨ  ＫＥＹ、ＭＯＶＥ  ＷＩＴＨ  ＳＯＵＲＣＥ  ＫＥＹ、及びＭＯＶＥ  ＷＩＴＨ  ＤＥＳＴＩＮＡＴＩＯＮ  ＫＥＹの各々のオペランドのうちの１つについては、オペランドとして指定されるアクセス・キーがＰＳＷキーの代わりに用いられる。
【００５２】
アドレス空間制御（ＡＳ）：ビット１６及び１７は、プログラム・ステータス・ワードのビット５と共に、変換モードを制御する。
【００５３】
条件コード（ＣＣ）：ビット１８及び１９は２ビットの条件コードである。条件コードは、特定の命令の実行で得られた結果に応じて、０、１、２、又は３に設定される。ほとんどの算術演算及び論理演算、並びに幾つかの他の演算は、条件コードを設定する。ＢＲＡＮＣＨ  ＯＮ  ＣＯＮＤＩＴＩＯＮ命令は、分岐のための基準として、条件コード値のいずれかの選択を指定することができる。
【００５４】
命令アドレス：プログラム・ステータス・ワードのビット６４−１２７は、命令アドレスである。このアドレスは、ＣＰＵが待機状態（プログラム・ステータス・ワードのビット１４が１）でない限り、次に実行される命令の最左端のバイトの位置を指示する。
【００５５】
アドレスのタイプ及びフォーマット
主ストレージをアドレス指定するために、絶対、実、及び仮想の３つの基本的なアドレスのタイプが認識される。アドレスは、ストレージ・アクセスの間にアドレスに適用される変形に基づいて区別される。アドレス変換は、仮想アドレスを実アドレスに変換する。プリフィックス付加は、実アドレスを絶対アドレスに変換する。３つの基本的なアドレス・タイプに加えて、命令及びカレント・モードに応じて、３つの基本的なタイプのうちの１つ又は他の１つとして扱われる付加的なタイプが定義される。
【００５６】
絶対アドレス
絶対アドレスは、主ストレージ位置に割り当てられたアドレスである。絶対アドレスは、いかなる変形も行われることなく、ストレージ・アクセスのために用いられる。構成内のチャネル・サブシステム及び全てのＣＰＵは、同じ絶対アドレスを用いることによっで、共有された主ストレージ位置を参照する。利用可能な主ストレージには、通常、０から始まる連続した絶対アドレスが割り当てられ、このアドレスは整数の境界上の完全な４キロバイトのブロックで割り当てられる。物理位置に割り当てられていないブロック内の絶対アドレスを用いようとする試行が行われた場合、例外が認識される。幾つかのモデルでは、オペレータが絶対アドレスと物理位置との間の対応を変更することを許可する、ストレージ再構成制御が提供されることがある。しかし、どの時点であっても、１つの物理位置に１つより多くの絶対アドレスが割り当てられることはない。その絶対アドレスに従って配列されたバイト位置から成るストレージを、絶対ストレージと呼ぶ。
【００５７】
実アドレス
実アドレスは、実ストレージにおける位置を特定する。主ストレージへのアクセスのために実アドレスが用いられる場合には、実アドレスをプリフィックス付加によって変換して、絶対アドレスが形成される。任意の一瞬において、構成内のＣＰＵごとに、実アドレスから絶対アドレスへのマッピングが１つ存在する。実アドレスが、ＣＰＵによって主ストレージにアクセスするために用いられる場合には、実アドレスをプリフィックス付加によって絶対アドレスに変換することができる。具体的な変形は、そのＣＰＵのためのプリフィックス・レジスタ内の値によって定められる。その実アドレスに従って配列されたバイト位置から成るストレージを、実ストレージと呼ぶ。
【００５８】
仮想アドレス
仮想アドレスは、仮想ストレージにおける位置を特定する。主ストレージへのアクセスのために仮想アドレスが用いられる場合には、仮想アドレスは、動的アドレス変換によって、プリフィックス付加を行うと絶対アドレスを形成することができる実アドレスに変換されるか、又は直接、絶対アドレスに変換されるかのいずれかである。
【００５９】
一次仮想アドレス
一次仮想アドレスは、一次アドレス空間制御要素（ＰＡＳＣＥ）によって変換されるべき仮想アドレスである。論理アドレスは、一次空間モードにある場合に一次仮想アドレスとして扱われる。命令アドレスは、一次空間モード、二次空間モード、又はアクセス・レジスタ・モードにある場合に一次仮想アドレスとして扱われる。ＭＯＶＥ  ＴＯ  ＰＲＩＭＡＲＹの第１オペランド・アドレス、及びＭＯＶＥ  ＴＯ  ＳＥＣＯＮＤＡＲＹの第２オペランド・アドレスは、一次仮想アドレスとして扱われる。
【００６０】
二次仮想アドレス
二次仮想アドレスは、二次アドレス空間制御要素（ＳＡＳＣＥ）によって変換されるべき仮想アドレスである。論理アドレスは、二次空間モードにある場合に二次仮想アドレスとして扱われる。ＭＯＶＥ  ＴＯ  ＰＲＩＭＡＲＹの第２オペランド・アドレス、及びＭＯＶＥ  ＴＯ  ＳＥＣＯＮＤＡＲＹの第１オペランド・アドレスは、二次仮想アドレスとして扱われる。
【００６１】
ＡＲ指定仮想アドレス
ＡＲ指定仮想アドレスは、アクセス・レジスタ指定アドレス空間制御要素によって変換されるべき仮想アドレスである。論理アドレスは、アクセス・レジスタ・モードにある場合にＡＲ指定仮想アドレスとして扱われる。
【００６２】
ホーム仮想アドレス
ホーム指定仮想アドレスは、ホーム・アドレス空間制御要素（ＨＡＳＣＥ）によって変換されるべき仮想アドレスである。論理アドレス及び命令アドレスは、ホーム空間モードにある場合にホーム仮想アドレスとして扱われる。
【００６３】
命令アドレス
ストレージから命令をフェッチするために用いられるアドレスは、命令アドレスと呼ばれる。命令アドレスは、実モードにあるときには実アドレスとして扱われ、一次空間モード、二次空間モード、又はアクセス・レジスタ・モードにあるときには一次仮想アドレスとして扱われ、ホーム空間モードにあるときにはホーム仮想アドレスとして扱われる。カレント・プログラム・ステータス・ワード内の命令アドレス、及びＥＸＥＣＵＴＥのターゲット・アドレスは、命令アドレスである。
【００６４】
実効アドレス
ある状況においては、「実効アドレス」という用語を用いることが便利である。実効アドレスは、動的アドレス変換又はプリフィックス付加によるいずれかの変形が行われる前に存在するアドレスである。実効アドレスは、レジスタ内において直接指定されることもあり、又はアドレス算術演算の結果であることもある。アドレス算術演算は、ベースと変位との加算、又はベースとインデックスと変位との加算である。
【００６５】
プリフィックス付加
プリフィックス付加は、実アドレスの０−８１９１の範囲を、ＣＰＵごとに絶対ストレージ内の異なるブロックに割り当て、それにより、特に割り込みの処理の際に、主ストレージを共有する１つより多くのＣＰＵが最小限の干渉で同時に動作することを可能にする能力を提供する。プリフィックス付加により、０−８１９１の範囲の実アドレスを、そのＣＰＵのためのプリフィックス・レジスタのビット位置０−５０における値によって識別される８Ｋバイトの絶対アドレス・ブロック（プリフィックス領域）に１対１で対応させ、且つ、プリフィックス・レジスタ内のその値によって識別される実アドレス・ブロックを、絶対アドレス０−８１９１に１対１で対応させる。残りの実アドレスは、対応する絶対アドレスと同一である。この変形により、各ＣＰＵは、最初の８Ｋバイトと、他のＣＰＵのプリフィックス・レジスタによって指示される位置とを含む、主ストレージの全てにアクセスするこが可能になる。
【００６６】
プリフィックスは、プリフィックス・レジスタのビット位置０−５０に含まれる５１ビット量である。一実施形態において、プリフィックス・レジスタは、以下のフォーマットを有する。
【表６】
0005602638.tif 000007
【００６７】
プリフィックス付加が適用された場合、実アドレスは、実アドレスのビット０−５０に応じて、以下の規則のうちの１つを用いることによって絶対アドレスに変形される。即ち、
アドレスのビット０−５０は、全てが０であれば、プリフィックスのビット０−５０で置き換えられる。
アドレスのビット０−５０は、プリフィックスのビット０−５０と等しければ、０で置き換えられる。
アドレスのビット０−５０は、０でないものがあり、且つプリフィックスのビット０−５０と等しくなければ、変更されないままである。
【００６８】
ストレージに提示されたアドレスのみがプリフィックス付加によって変換される。アドレスのソースの内容は変更されないままである。
【００６９】
実アドレスと絶対アドレスとは、プリフィックス・レジスタが全て０を含み、従って実アドレスと対応する絶対アドレスとが同一である場合でさえ、区別される。図１５は、実アドレスと絶対アドレスとの間の関係を示す。
【００７０】
アドレス空間は、整数番号の連続シーケンス（仮想アドレス）であり、各番号をストレージ内のバイト位置に関連付けることを可能にする特定の変形パラメータを伴う。シーケンスは、０から開始して左から右へと進む。
【００７１】
仮想アドレスは、ＣＰＵによって主ストレージにアクセスするために用いられる場合、最初に、動的アドレス変換（ＤＡＴ）によって実アドレス又は絶対アドレスに変換される。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。ＤＡＴは、変形パラメータとして、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、及びページ・テーブルを用いることができる。特定のアドレス空間のための最も高位のレベルのテーブルの指示（基点及び長さ）はアドレス空間制御要素（ＡＳＣＥ）と呼ばれ、これは、ＤＡＴによる使用のために制御レジスタ内に見出されるか、又はアクセス・レジスタによって指定された通りのものである。あるいは、アドレス空間のためのＡＳＣＥが実空間指示の場合もあり、これは、ＤＡＴが、いかなるテーブルも用いることなく単に仮想アドレスを実アドレスとして扱うことで仮想アドレスを変換するということを示す。
【００７２】
ＤＡＴは、異なる時点で、異なる制御レジスタ内のＡＳＣＥか、又はアクセス・レジスタによって指定されたＡＳＣＥを用いる。選択は、カレント・プログラム・ステータス・ワードにおいて指定される変換モードによって決定される。一次空間モード、二次空間モード、アクセス・レジスタ・モード、及びホーム空間モードの４つの変換モードが利用可能である。変換モードに応じて、異なるアドレス空間をアドレス指定することが可能である。
【００７３】
ＣＰＵが一次空間モード又は二次空間モードにある場合にはいつでも、ＣＰＵは、２つのアドレス空間、即ち一次アドレス空間及び二次アドレス空間に属する仮想アドレスを変換することができる。ＣＰＵがアクセス・レジスタ・モードにある場合にはいつでも、ＣＰＵは、最大で１６個のアドレス空間、即ち、一次アドレス空間及び最大で１５個のＡＲ指定アドレス空間の仮想アドレスを変換することができる。ＣＰＵがホーム空間モードにある場合にはいつでも、ＣＰＵは、ホーム・アドレス空間の仮想アドレスを変換することができる。
【００７４】
一次アドレス空間は、一次アドレス空間制御要素（ＰＡＳＣＥ）によって変換される一次仮想アドレスでから成るので、それ自体として識別される。同様に、二次アドレス空間は、二次アドレス空間制御要素（ＳＡＳＣＥ）によって変換される二次仮想アドレスでから成る。ＡＲ指定アドレス空間は、アクセス・レジスタ指定アドレス空間制御要素（ＡＲ指定ＡＳＣＥ）によって変換されるＡＲ指定仮想アドレスから成り、ホーム・アドレス空間は、ホーム・アドレス空間制御要素（ＨＡＳＣＥ）によって変換されるホーム仮想アドレスから成る。一次ＡＳＣＥ及び二次ＡＳＣＥは、それぞれ制御レジスタ１及び７の中にある。ＡＲ指定ＡＳＣＥは、制御レジスタ１及び７の中にある場合もあり、又は、ＡＳＮ第２テーブル・エントリと呼ばれるテーブル・エントリの中にある場合もある。ＨＡＳＣＥは、制御レジスタ１３の中にある。
【００７５】
動的アドレス変換
動的アドレス変換は、仮想アドレスを（例えば、ストレージ参照中に）対応するメイン・メモリ・アドレス（本実施形態においては実アドレス又は絶対アドレス）に変換するプロセスである。仮想アドレスは、一次仮想アドレス、二次仮想アドレス、アクセス・レジスタ指定仮想アドレス、又はホーム仮想アドレスとすることができる。これらのアドレスは、それぞれ、ＰＡＳＣＥ、ＳＡＳＣＥ、ＡＲ指定ＡＳＣＥ、又はＨＡＳＣＥによって変換される。適切なＡＳＣＥを選択した後の変換プロセスは、４つのタイプの仮想アドレスの全てについて同一である。
【００７６】
アドレス指定変換モード
実効アドレスは、動的アドレス変換又はプリフィックス付加によるいずれかの変形が行われる前に存在するアドレス（仮想アドレス）である。動的アドレス変換を制御するプログラム・ステータス・ワード内の３つのビットは、ＤＡＴモード・ビットであるビット５と、アドレス空間制御ビットであるビット１６及び１７である。ＤＡＴモード・ビットが０である場合、ＤＡＴはオフであり、ＣＰＵは実モードにある。ＤＡＴモード・ビットが１の場合、ＤＡＴはオンであり、ＣＰＵはアドレス空間制御ビットによって指示される変換モードにある。即ち、二進数字００は一次空間モードを指示し、二進数字０１はアクセス・レジスタ・モードを指示し、二進数字１０は二次空間モードを指示し、二進数字１１はホーム空間モードを指示する。種々のモードを、各モードにおけるアドレスの取り扱いと共に以下に示す。
【表７】
0005602638.tif 000008
【００７７】
プログラム・ステータス・ワードは１２８ビット・ワードであり、これは、一部が、アドレス指定モードを示す２ビットを与える。一実施形態において、ビット３１は拡張アドレス指定モード（ＥＡ）ビットであり、ビット３２はベース・アドレス指定モード（ＢＡ）ビットである。これらの２つのビットは、アドレスのサイズを示す。これらの２つのビットの各々の状態は、二進数（１又は０）である。ＥＡビットが０であり、且つＢＡビットが０であるならば、２４ビット・アドレス指定が示される。２４ビット・アドレス指定が示される場合、６４ビット・ワード（６４ビット・エンティティは一般に倍長語と呼ばれる）のビット４０−６３が、アドレスが配置される位置である。命令アドレスが１２８ビット・エンティティ（４倍長語）の２番目の６４ビットを占める場合、プログラム・ステータス・ワードにおけるビット位置は以下の通りである。２４ビット・モードでは、命令アドレスは、プログラム・ステータス・ワードのビット１０４−１２７に置かれる。３１ビット・モードでは、命令アドレスは、プログラム・ステータス・ワードのビット９７−１２７に置かれる。６４ビット・モードでは、命令アドレスは、プログラム・ステータス・ワードのビット６４−１２７に置かれる。ＥＡビットが０であり、且つＢＡビットが１であるならば、３１ビット・アドレス指定が示される。適切な６４ビット・ワードは、ビット位置３３−６３に配置された３１ビット・アドレスを含む。ＥＡビットが１であり、且つＢＡビットが１であるならば、６４ビット・ワードのビット０−６３、即ち６４ビット全体がアドレスを含む。そうでない場合には、例外条件が示される。一旦、アドレス指定モードが取得されると、ＡＳＣＥを決定する必要がある。
【００７８】
アドレス空間制御要素（ＡＳＣＥ）
ここで、プログラム・ステータス・ワードを用いて仮想アドレスの動的アドレス変換のための実効アドレス空間制御要素（ＡＳＣＥ）を決定する方法の一実施形態を示す、図３を参照する。ＡＳＣＥは、例えば、２ギガバイト（ギガ＝２３０）のアドレス空間を指定することができる。又は、ＡＳＣＥは、例えば、４テラバイト（テラ＝２４０）、８ペタバイト（ペタ＝２５０）、又は１６エクサバイト（エクサ＝２６０）のアドレス空間を指定することができる。又は、ＡＳＣＥは、実空間指示を指定することができる。実空間指示は、仮想アドレスを、１つ又は複数のアドレス変換テーブルを参照することなく、ストレージ内で実アドレスとして扱うようにさせる。
【００７９】
プログラム・ステータス・ワード３００は、変換（Ｔ）ビット３０２及びアドレス空間（ＡＳ）ビット３０４を含む。３０６において、変換（Ｔ）ビットが０であれば、アドレスは実アドレス３２６である。３０８において、アドレス空間（ＡＳ）が０に等しければ（二進数字００）、この仮想アドレスのための実効ＡＳＣＥは、一次アドレス空間制御要素（ＰＡＳＣＥ）３１０である。３１２において、アドレス空間（ＡＳ）が１に等しければ（二進数字０１）、実効ＡＳＣＥは、アクセス・レジスタ指定アドレス空間制御要素３１４である。３１６において、アドレス空間（ＡＳ）が２に等しければ（二進数字１０）、実効ＡＳＣＥは、二次アドレス空間制御要素（ＳＡＳＣＥ）３１８である。それ以外の場合には、アドレス空間（ＡＳ）は３に等しく（二進数字１１）、実効ＡＳＣＥはホーム・アドレス空間制御要素（ＨＡＳＣＥ）３２２である。
【００８０】
実効ＡＳＣＥを選択した後の動的アドレス変換プロセスは、好ましくは、４つのタイプの仮想アドレスの全てについて同一である。
【００８１】
セグメント・テーブル指示又は領域テーブル指示は、オペレーティング・システムによって実ストレージ又は絶対ストレージ内に確立されたテーブルによる変換を実行させる。実空間指示は、ストレージ内のテーブルを用いることなく、仮想アドレスを単に実アドレスとして扱わせる。
【００８２】
セグメント・テーブル指示又は領域テーブル指示を用いる場合の変換プロセスにおいて、３つのタイプの情報単位、即ち、領域、セグメント、及びページが認識される。領域は、２ギガバイトにわたり、且つ２ギガバイト境界から始まる逐次的な仮想アドレス・ブロックである。セグメントは、１ギガバイトにわたり、且つ１ギガバイト境界から始まる逐次的な仮想アドレス・ブロックである。ページは、４キロバイトにわたり、且つ４キロバイト境界から始まる逐次的な仮想アドレス・ブロックである。
【００８３】
仮想アドレスのフォーマット
仮想アドレスの変換は、実アドレス又は絶対アドレスを取得するために、変換テーブル階層構造の複数の変換テーブルを参照することを伴うことができる。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。仮想アドレスは、変換テーブル階層構造の変換テーブル内のエントリに対するインデックスを含む。仮想アドレスは、従って、４つの主要フィールドに分割される。ビット０−３２は領域インデックス（ＲＸ）と呼ばれ、ビット３３−４３はセグメント・インデックス（ＳＸ）と呼ばれ、ビット４４−５１はページ・インデックスと呼ばれ、ビット５２−６３はバイト・インデックス（ＢＸ）と呼ばれる。一実施形態において、仮想アドレスは以下のフォーマットを有する。
【表８】
0005602638.tif 000009
【００８４】
仮想アドレス空間は、そのＡＳＣＥによって決定される通りに、１つの領域から成る２ギガバイトの空間とすることができ、又は最大８ギガバイト領域から成る最大で１６エクサバイトまでの空間とすることができる。２ギガバイトのアドレス空間に適用される仮想アドレスのＲＸ部分は、全て０でなければならない。そうでない場合には、例外が認識される。仮想アドレスのＲＸ部分は、それ自体が３つのフィールドに分割される。ビット０−１０は領域第１インデックス（ＲＦＸ）と呼ばれ、ビット１１−２１は領域第２インデックス（ＲＳＸ）と呼ばれ、ビット２２−３２は領域第３インデックス（ＲＴＸ）と呼ばれる。一実施形態において、仮想アドレスのビット０−３２は、以下のフォーマットを有する。
【表９】
0005602638.tif 000010
【００８５】
ＲＴＸが最左端の有効部分（significant part）となっている仮想アドレス（４２ビット・アドレス）は、４テラバイト（２０４８領域）をアドレス指定することができ、ＲＳＸが最左端の有効部分となっている仮想アドレス（５３ビット・アドレス）は、８ペタバイト（４，１９３，０４４領域）をアドレス指定することができ、ＲＦＸが最左端の有効部分となっている仮想アドレス（６４ビット・アドレス）は、１６エクサバイト（８，５８９，９３４，５９２領域）をアドレス指定することができる。
【００８６】
ＲＸが０である仮想アドレスは、２つの変換テーブル、即ちセグメント・テーブル及びページ・テーブルによって実アドレスに変換することができる。ＥＤＡＴファシリティがイネーブルであれば、変換はセグメント・テーブルのみで完了させることができる。ＲＦＸは非０であってもよく、その場合は、領域第１テーブル、領域第２テーブル、及び領域第３テーブルが必要とされる。ＲＦＸが０である場合でも、ＲＳＸが非０であってもよく、その場合、領域第２テーブル及び領域第３テーブルが必要とされる。ＲＦＸ及びＲＳＸが０である場合でも、ＲＴＸは非０であってもよく、その場合、領域第３テーブルが必要とされる。
【００８７】
あるアドレス空間のためのＡＳＣＥが、そのアドレス空間に対する参照を変換するために必要とされる最も高レベルのテーブル（領域第１テーブルから始まり、下位に向けてセグメント・テーブルまで続く）を指示していない場合、例外が認識される。
【００８８】
仮想アドレスの動的変換
ここで、図３において決定された実効ＡＳＣＥを用いて、仮想アドレスの変換に用いられる変換テーブル階層構造内の最初の変換テーブルを決定する一実施形態を示す、図４を参照する。
【００８９】
一実施形態において、制御レジスタ１（ＣＲ１）はＰＡＳＣＥを含む。制御レジスタ７（ＣＲ７）はＳＡＳＣＥを含む。制御レジスタ１３（ＣＲ１３）はＨＡＳＣＥを含み、アクセス・レジスタ変換（ＡＲＴ）プロセスによって導出されるアドレス空間第２テーブル・エントリ（ＡＳＴＥ）はアクセス・レジスタ指定アドレス空間制御要素を含む。実効ＡＳＣＥ４００は、これらの位置のうちの１つから選択される。
【００９０】
実効ＡＳＣＥ４００の第１の部分は、領域第１テーブル、領域第２テーブル、領域第３テーブル、又はセグメント・テーブルのうちのいずれかを指示する基点アドレスを含んだテーブル基点４０２を含む。テーブル基点（ビット０．．．５１）に対して１２個の二進数字０が付加されると、仮想アドレスの変換に用いられる変換テーブル階層構造の中で最も高位の変換テーブルの６４ビットの基点アドレスが形成される。実効ＡＳＣＥ４００はさらに、実空間制御（Ｒ）ビット４０４及びＤＴビット４０６も含む。実空間制御（Ｒ）ビットが０の場合、どの特定の基点アドレスがテーブル基点４０２であるのかを判定するためにＤＴがセレクタ４０８によってデコードされる。ＤＴビットが３（二進数字１１）に等しい場合、テーブル基点４０２は領域第１テーブル４１０を指示する。ＤＴビットが２（二進数字１０）に等しい場合、テーブル基点４０２は領域第２テーブル４１２を指示する。ＤＴビットが１（二進数字０１）に等しい場合、テーブル基点４０２は領域第３テーブル４１４指示する。そうではなくて、ＤＴビットが０（二進数字００）に等しい場合、テーブル基点４０２はセグメント・テーブル４１６を指示する。
【００９１】
領域第１テーブル、領域第２テーブル、又は領域第３テーブルは、単に領域テーブルと呼ばれることもある。同様に、領域第１テーブル指示、領域第２テーブル指示、又は領域第３テーブル指示は、領域テーブル指示と呼ばれることもある。領域テーブル、セグメント・テーブル、及びページ・テーブルは、実ストレージの現在の割り当てを反映する。ページは、仮想ストレージの割り当てに対して用いられる用語である。実ストレージは固定ブロック単位で割り振られる。ページは、逐次的な仮想アドレスの組に対して割り当てられた場合でさえも、実ストレージ内で隣接している必要はない。
【００９２】
変換に用いられるＡＳＣＥが領域第１テーブル指示である場合には、変換プロセスは、例えば、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、及び随意にページ・テーブルを用いたマルチ・レベル・ルックアップから成る。これらのテーブルは、実ストレージ又は絶対ストレージ内に存在する。ＡＳＣＥが、領域第２テーブル指示、領域第３テーブル指示、又はセグメント・テーブル指示である場合、指示されたレベルより高位のレベルのテーブルにおけるルックアップは省かれ、より高位レベルのテーブル自体が省かれる。
【００９３】
ここで、変換テーブル階層構造を用いた仮想アドレスの動的アドレス変換の一実施形態を示す、図５を参照する。
【００９４】
図４の実効ＡＳＣＥ４００は、指示タイプ（ＤＴ）ビット４０６を含む。ＡＳＣＥの実空間制御（Ｒ）ビット４０４が０の場合、テーブル基点４０２がどの基点アドレスを指示するのかを判定するために、ＤＴビットはセレクタ４０８によってデコードされる。実空間制御（Ｒ）ビットが１の場合、動的アドレス変換は、図６のノードＤ５６４において示されるようにして行われる。
【００９５】
セレクタ４０８において、ＤＴビットが３（二進数字１１）に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、領域第１テーブルである。テーブル基点４０２に対して、５０２において、仮想アドレスの領域第１インデックス（ＲＦＸ）５０８部分が算術的に加算され、領域第１テーブル内の領域第１テーブル・エントリ５０６が参照される。テーブル基点（右側に１２個の０が付加されたもの、又は４０９６を乗じたもの）が、インデックスに８を乗じた積（又は右側に３つの０が付加されたインデックス）に対して加算される。領域第１テーブル・エントリは、変換に用いられる変換テーブル階層構造の中で次に下位のテーブルに対する領域第２テーブル基点５０４を含む。領域第１テーブルの次に下位のテーブルは、領域第２テーブルである。領域第１テーブル・エントリの無効（Ｉ）ビットが１に等しい場合には、その領域第１テーブル・エントリは無効であり、変換に用いることはできない。例外条件が示される。
【００９６】
セレクタ４０８において、ＤＴビットが２（二進数字１０）に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、領域第２テーブルである。テーブル基点４０２に対して、５１０において、仮想アドレスの領域第２インデックス（ＲＳＸ）５１６部分が算術的に加算され、領域第２テーブル内の領域第２テーブル・エントリ５１４が参照される。テーブル基点（右側に１２個の０が付加されたもの、又は４０９６を乗じた）が、インデックスに８を乗じた積（又は右側に３つの０が付加されたインデックス）に対して加算される。領域第２テーブル・エントリは、変換に用いられる変換テーブル階層構造の中で次に下位のテーブルに対する領域第３テーブル基点５１２を含む。領域第２テーブルの次に下位のテーブルは、領域第３テーブルである。領域第２テーブル・エントリの無効（Ｉ）ビットが１に等しい場合には、その領域第２テーブル・エントリは無効であり、例外条件が示される。
【００９７】
セレクタ４０８において、ＤＴビットが１（二進数字（０１）に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、領域第３テーブルである。テーブル基点４０２に対して、５１８において、仮想アドレスの領域第３インデックス（ＲＴＸ）５２４部分が算術的に加算され、領域第３テーブル内の領域第３テーブル・エントリ５２２が参照される。テーブル基点（右側に１２個の０が付加されたもの、又は４０９６を乗じたもの）が、インデックスに８を乗じた積（又は、右側に３つの０が付加されたインデックス）に対して加算される。領域第３テーブル・エントリは、変換に用いられる変換テーブル階層構造の中で次に下位のテーブルに対するセグメント・テーブル基点５２０を含む。領域第３テーブルの次に下位のテーブルは、セグメント・テーブルである。領域第３テーブル・エントリの無効（Ｉ）ビットが１に等しい場合には、その領域第３テーブル・エントリは無効であり、例外条件が示される。
【００９８】
セレクタ４０８において、ＤＴビットが０（二進数字（００）に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、セグメント・テーブルである。テーブル基点４０２に対して、５２６において、仮想アドレスのセグメント・インデックス（ＳＸ）５３２部分が算術演算的に加算され、セグメント・テーブル内のセグメント・テーブル・エントリ５３０が参照される。テーブル基点（右側に１２個の０が付加されたるか、又は４０９６を乗じたもの）が、インデックスに８を乗じた積（又は右側に３つの０が付加されたインデックス）に対して加算される。セグメント・テーブル・エントリは、どちらも５２８で示される、ページ・テーブルに対する基点アドレスか、又はセグメント・フレーム絶対アドレス（ＳＦＡＡ）を含む。セグメント・テーブル・エントリの無効（Ｉ）ビットが１に等しい場合には、そのセグメント・テーブル・エントリは無効であり、例外条件が示される。
【００９９】
５３８において、セグメント・テーブルのＳＴＥフォーマット制御（ＦＣ）ビットが検査される。ＳＴＥフォーマット制御が１である場合、セグメント・テーブル・エントリ５３０はセグメント・フレーム絶対アドレス（ＳＦＡＡ）５５２を含み、動的アドレス変換は図７のノード５６２を参照して続行する。そうでない場合には、セグメント・テーブルから取得されたセグメント・テーブル・エントリはページ・テーブル基点アドレスを含み、動的アドレス変換は図６のノード５６０を参照して続行する。
【０１００】
ここで、図６を参照する。セグメント・テーブル・エントリ内のＳＴＥフォーマット制御が０である場合、セグメント・テーブルから取得されたセグメント・テーブル・エントリは、変換テーブル階層構造の中で次に下位のテーブルに対する基点アドレスを含む。セグメント・テーブルの次に下位のテーブルは、ページ・テーブルである。図５のセグメント・テーブル・エントリ５３０から取得されたページ・テーブル基点５２８に対して、５３８において、仮想アドレスのページ・インデックス（ＰＸ）５３４部分が算術的に加算され、ページ・テーブル内のページ・テーブル・エントリ５４２が参照される。ページ・テーブル・エントリは、ページ・フレーム実アドレス（ＰＦＲＡ）５４６を含む。ページ・フレーム実アドレスの最左端のビットが、５４８において、仮想アドレスのバイト・インデックス（ＢＸ）５３６部分に連結されると、６４ビットの実アドレス５５０が得られる。６４ビット実アドレスに対してさらにプリフィックス付加操作を行って、絶対アドレスを形成することができる。変換された仮想アドレスは、主ストレージ又はメモリ内の所望の４キロバイト（４０９６バイト）のデータ・ブロックを参照する。
【０１０１】
好ましくは、仮想アドレスからメモリ・アドレスへの動的アドレス変換に用いられた情報は、変換ルックアサイド・バッファ・エントリ・タグ内に、その仮想アドレスと関連付けられたメモリのブロックのアドレスと共にストアされる。その後のストレージ・アクセスは、ＡＳＣＥ情報及び仮想アドレス情報を変換ルックアサイド・バッファ・タグと比較することによって、仮想アドレスを迅速に変換することができる。あるタグがその仮想アドレスのものであることが分かれば、関与する各変換テーブルへの時間のかかる逐次的なアクセスを実行する代わりに、そのメモリ・ブロックの変換ルックアサイド・バッファ・アドレスを用いることができる。一実施形態において、ページ・フレーム実アドレス（ＰＦＲＡ）は、例えば、ＡＳＣＥと仮想アドレスのＲＸ、ＳＸ及びＰＸ部分とから成るタグと共に、変換ルックアサイド・バッファ５４４のエントリ内にストアされる。この仮想アドレスのその後の変換は、これ以降、変換ルックアサイド・バッファ内にストアされた情報から導出される。
【０１０２】
ここで、図５Ｃを参照する。セグメント・テーブル・エントリ５３０内のＳＴＥフォーマット制御が１である場合、セグメント・テーブル・エントリは、セグメント・フレーム絶対アドレス（ＳＦＡＡ）５５２を含む。セグメント・フレーム絶対アドレスの最左端のビットが、５５４において、仮想アドレスのページ・インデックス５３４部分及びバイト・インデックス５３６部分に連結されると、６４ビットの絶対アドレス５５６が得られる。変換された仮想アドレスは、主ストレージ又はメモリ内の所望の大データ・ブロックを参照する。大データ・ブロックは少なくとも１メガバイト（１，０４８，５７６バイト）のサイズである。
【０１０３】
一実施形態において、セグメント・フレーム絶対アドレス（ＳＦＡＡ）は、仮想アドレスのＲＸ及びＳＸ部分と共に、変換ルックアサイド・バッファ５４４内にストアされる。この仮想アドレスのその後の変換は、これ以降、変換ルックアサイド・バッファ内にストアされた情報から導出される。
【０１０４】
変換テーブル・エントリのフォーマット
変換に用いられる変換テーブル階層構造における種々の変換テーブル・エントリの実施形態は以下の通りである。
【０１０５】
領域テーブル・エントリ
「領域テーブル・エントリ」という用語は、領域第１テーブル・エントリ、領域第２テーブル・エントリ、又は領域第３テーブル・エントリを意味する。領域第１テーブル、領域第２テーブル、及び領域第３テーブルからフェッチされたエントリは、以下のフォーマットを有する。あるエントリを含むテーブルのレベル（第１、第２、又は第３）は、エントリ内のテーブル・タイプ（ＴＴ）ビットによって識別される。
【０１０６】
一実施形態において、領域第１テーブル・エントリ、領域第２テーブル・エントリ、及び領域第３テーブル・エントリのフォーマットは以下の通りである。
【表１０】
0005602638.tif 000011
【０１０７】
領域第２テーブル基点、領域第３テーブル基点、及びセグメント・テーブル基点：領域第１テーブル・エントリは、領域第２テーブル基点を含む。領域第２テーブル・エントリは、領域第３テーブル基点を含む。領域第３テーブル・エントリは、セグメント・テーブル基点を含む。以下の説明は３つのテーブル基点の各々に対して適用される。エントリのビット０−５１は、右に１２個の０を付加すると、次に下位レベルのテーブルの開始を指示する６４ビットのアドレスを形成する。
【０１０８】
ＤＡＴ保護ビット（Ｐ）：強化型ＤＡＴが適用される場合には、ビット５４は、変換に用いられる後続の各領域テーブル・エントリ、セグメント・テーブル・エントリ、及び、適用可能な場合にはページ・テーブル・エントリの中のＤＡＴ保護ビットとＯＲ（論理和）演算されたものとして扱われる。それゆえ、そのビットが１であるときには、ＤＡＴ保護は、領域全体又は領域テーブル・エントリによって指定される領域に対して適用される。強化型ＤＡＴファシリティがインストールされていない場合、又はファシリティはインストールされているが強化型ＤＡＴイネーブルメント制御が０である場合には、領域テーブル・エントリのビット５４は無視される。
【０１０９】
領域第２テーブル・オフセット、領域第３テーブル・オフセット、及びセグメント・テーブル・オフセット（ＴＦ）：領域第１テーブル・エントリは、領域第２テーブル・オフセットを含む。領域第２テーブル・エントリは、領域第３テーブル・オフセットを含む。領域第３テーブル・エントリは、セグメント・テーブル・オフセットを含む。以下の説明は、３つのテーブル・オフセットの各々に対して適用される。エントリのビット５６及び５７は、次に下位レベルのテーブルの中で、テーブルの始めのところで欠落している部分の長さを指定するものであり、即ち、このビットは、次に下位レベルのテーブル内で実際に存在する最初のエントリの位置を指定する。このビットは、欠落部分の長さを４，０９６バイト単位で指定するので、従って、欠落部分の長さは５１２エントリの倍数として可変になる。４，０９６バイト単位で表された欠落部分の長さは、ＴＦの値に等しい。オフセット・フィールドの内容を、長さフィールドであるビット６２及び６３と組み合わせて用いて、次に下位レベルのテーブルによって変換される仮想アドレスの部分（ＲＳＸ、ＲＴＸ、又はＳＸ）がテーブル内に実際に存在するエントリを指示するのかどうかが確立される。
【０１１０】
領域無効ビット（Ｉ）：領域第１テーブル・エントリ又は領域第２テーブル・エントリ内のビット５８は、そのエントリに関連付けられた領域の組が利用可能かどうかを制御する。領域第３テーブル・エントリ内のビット５８は、エントリに関連付けられた単一の領域が利用可能であるかどうかを制御する。ビット５８が０である場合には、アドレス変換は領域テーブル・エントリを用いることによって進行する。ビットが１である場合には、そのエントリを変換に用いることはできない。
【０１１１】
テーブル・タイプ・ビット（ＴＴ）：領域第１テーブル・エントリ、領域第２テーブル・エントリ、又は領域第３テーブル・エントリのビット６０及び６１は、そのエントリを含むテーブルのレベルを以下のように識別する。ビット６０及び６１は、変換に用いられるＡＳＣＥであるテーブル指示のタイプ、及び、それまでに用いられたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別しなければならない。そうでない場合には、変換指定例外（translation specification exception）が認識される。以下のテーブルはテーブル・タイプ・ビットを示す。
【表１１】
0005602638.tif 000012
【０１１２】
領域第２テーブル長、領域第３テーブル長、及びセグメント・テーブル長（ＴＬ）：領域第１テーブル・エントリは、領域第２テーブル長を含む。領域第２テーブル・エントリは、領域第３テーブル長を含む。領域第３テーブル・エントリは、セグメント・テーブル長を含む。以下の説明は、３つのテーブル長の各々に対して適用される。エントリのビット６２及び６２は、次に下位レベルのテーブルの長さを４，０９６バイト単位で指定するので、従って、テーブルの長さは５１２エントリの倍数として可変になる。４，０９６バイト単位で表された次に下位レベルのテーブルの長さは、ＴＬの値より１大きい。長さフィールドの内容を、オフセット・フィールドであるビット５６及び５７と組み合わせて用いて、次に下位レベルのテーブルによって変換される仮想アドレスの部分（ＲＳＸ、ＲＴＸ、又はＳＸ）がテーブル内に実際に存在するエントリを指示するかどうかを確立する。領域テーブル・エントリの他の全てのビット位置は、可能性のある将来的な拡張のために未使用とされ、０を含むべきである。そうしなければ、プログラムが将来、互換的に動作できなくなるおそれがある。強化型ＤＡＴが適用される場合、領域テーブル・エントリ内の未使用のビット位置は、そのテーブル・エントリがたとえ無効だとしても、０を含むべきである。
【０１１３】
セグメント・テーブル・エントリ
強化型ＤＡＴが適用されない場合、又は強化型ＤＡＴは適用されるが、ＳＴＥフォーマット制御、即ちセグメント・テーブル・エントリのビット５３が０である場合には、セグメント・テーブルからフェッチされるエントリは、一実施形態において、以下のフォーマットを有する。
【表１２】
0005602638.tif 000013
【０１１４】
強化型ＤＡＴが適用され、且つＳＴＥフォーマット制御が１である場合には、セグメント・テーブルからフェッチされるエントリは、一実施形態において、以下のフォーマットを有する。
【表１３】
0005602638.tif 000014
【０１１５】
セグメント・テーブル・エントリ内の選択されたフィールドは、以下のように割り振られる。
ページ・テーブル基点：強化型ＤＡＴが適用されない場合、又は強化型ＤＡＴは適用されるが、ＳＴＥフォーマット制御、即ちセグメント・テーブル・エントリのビット５３が０である場合には、ビット０−５２は、右に１１個の０を付加すると、ページ・テーブルの開始を示す６４ビットのアドレスを形成する。アドレスが実であるか絶対であるかは予測不可能である。
【０１１６】
セグメント・フレーム絶対アドレス（ＳＦＡＡ）：強化型ＤＡＴが適用され、且つＳＴＥフォーマット制御が１である場合には、エントリのビット０−４３は、右に２０個の０を付加すると、セグメントの６４ビット絶対アドレスを形成する。
【０１１７】
ＡＣＣＦ妥当性制御（ＡＶ）：強化型ＤＡＴが適用され、且つＳＴＥフォーマット制御が１である場合には、ビット４７はアクセス制御ビット及びフェッチ保護ビット（ＡＣＣＦ）妥当性制御である。ＡＶ制御が０である場合、セグメント・テーブル・エントリのビット４８−５２は無視される。ＡＶ制御が１である場合、ビット４８−５２は以下で説明されるように用いられる。
【０１１８】
アクセス制御ビット（ＡＣＣ）：強化型ＤＡＴが適用され、ＳＴＥフォーマット制御が１であり、且つ、ＡＶ制御が１である場合には、セグメント・テーブル・エントリのビット４８−５１は、そのアドレスに適用されるいずれのキー制御アクセス・チェックにも用いることができるアクセス制御ビットを含む。
【０１１９】
フェッチ保護ビット（Ｆ）：強化型ＤＡＴが適用され、ＳＴＥフォーマット制御が１であり、且つ、ＡＶ制御が１である場合には、セグメント・テーブル・エントリのビット５２は、そのアドレスに適用されるいずれのキー制御アクセス・チェックにも用いることができるフェッチ保護ビットを含む。
【０１２０】
ＳＴＥフォーマット制御（ＦＣ）：強化型ＤＡＴが適用される場合には、ビット５３は以下のように、セグメント・テーブル・エントリのためのフォーマット制御である。即ち、
【０１２１】
ＦＣビットが０である場合、エントリのビット０−５２はページ・テーブル基点を形成し、ビット５５は未使用とされる。
【０１２２】
ＦＣビットが１である場合、エントリのビット０−４３はセグメント・フレーム絶対アドレスを形成し、ビット４７はＡＣＣＦ妥当性制御であり、ビット４８−５１はアクセス制御ビットであり、ビット５２はフェッチ保護ビットであり、ビット５５は変更記録オーバーライドである。強化型ＤＡＴが適用されない場合には、ビット５３は無視される。
【０１２３】
ＤＡＴ保護ビット（Ｐ）：ビット５４は、１である場合には、ＤＡＴ保護がセグメント全体に適用されることを示す。
【０１２４】
強化型ＤＡＴが適用されない場合には、ビット５４は、変換に用いられるページ・テーブル・エントリの中のＤＡＴ保護ビットと論理和（ＯＲ）演算されたものとして扱われる。
【０１２５】
強化型ＤＡＴが適用される場合には、変換に用いられるいずれかの及び全ての領域テーブル・エントリ内のＤＡＴ保護ビットは、セグメント・テーブル・エントリ内のＤＡＴ保護ビットと論理和演算されたものとして扱われ、ＳＴＥフォーマット制御が０である場合には、ＳＴＥの中のＤＡＴ保護ビットはさらに、ページ・テーブル・エントリ内のＤＡＴ保護ビットと論理和演算されたものとして扱われる。
【０１２６】
変更記録オーバーライド（ＣＯ）：強化型ＤＡＴが適用され、且つ、ＳＴＥフォーマット制御が１である場合、セグメント・テーブル・エントリのビット５５は、そのセグメントについての変更記録オーバーライドである。強化型ＤＡＴが適用されない場合、又は、強化型ＤＡＴは適用されるがＳＴＥフォーマット制御が０である場合には、セグメント・テーブル・エントリのビット５５は無視される。
【０１２７】
セグメント無効ビット（Ｉ）：ビット５８は、そのセグメント・テーブル・エントリに関連付けられたセグメントが利用可能であるかどうかを制御する。
【０１２８】
このビットが０である場合、アドレス変換はそのセグメント・テーブル・エントリを用いることによって進行する。
【０１２９】
このビットが１である場合、そのセグメント・テーブル・エントリを変換に用いることができない。
【０１３０】
共通セグメント・ビット（Ｃ）：ビット５９は、セグメント・テーブル・エントリの変換ルックアサイド・バッファ・コピーの使用を制御する。強化型ＤＡＴが適用されない場合、又は、強化型ＤＡＴは適用されるがフォーマット制御が０である場合には、ビット５９は、そのセグメント・テーブル・エントリによって指示されるページ・テーブルの変換ルックアサイド・バッファ・コピーの使用も制御する。
【０１３１】
０はプライベート・セグメントを識別し、この場合、セグメント・テーブル・エントリ及びそれが指示するいずれのページ・テーブルも、そのセグメント・テーブル・エントリが存在するセグメント・テーブルを指示するセグメント・テーブル基点との関連でのみ用いることができる。
【０１３２】
１は共通セグメントを識別し、この場合、セグメント・テーブル・エントリ及びそれが指示するいずれのページ・テーブルも、異なるセグメント・テーブルが指定されたとしても、引き続き、そのセグメント・インデックスに対応するアドレスを変換するために用いることができる。
【０１３３】
しかしながら、共通セグメントのための、セグメント・テーブル・エントリ及びいずれかのページ・テーブルの変換ルックアサイド・バッファ・コピーは、変換に用いられるＡＳＣＥの中のプライベート空間制御であるビット５５が１である場合、又は、そのＡＳＣＥが実空間指示である場合には、使用可能ではない。用いられているＡＳＣＥの中のプライベート空間制御が１である場合に、セグメント・テーブル・エントリが変換中にストレージからフェッチされたのであれば、その共通セグメント・ビットは０でなければならない。そうでない場合には、変換指定例外が認識される。
【０１３４】
テーブル・タイプ・ビット（ＴＴ）：セグメント・テーブル・エントリのビット６０及び６１は、そのエントリを含むテーブルのレベルを識別するための二進数字００である。領域テーブル・エントリ又はセグメント・テーブル・エントリの中のビット６０及び６１の可能な全ての値の意味は、以下の通りである。
【表１４】
0005602638.tif 000015
【０１３５】
ビット６０及び６１は、変換に用いられるＡＳＣＥであるテーブル指示のタイプ、及び、それまでに用いられたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別するものでなければならない。そうでない場合には、変換指定例外が認識される。セグメント・テーブル・エントリの他の全てのビット位置は、可能性のある将来的な拡張のために未使用とされ、０を含むべきである。そうしなければ、プログラムが将来、互換的に動作できなくなるおそれがある。強化型ＤＡＴが適用される場合、セグメント・テーブル・エントリ内の未使用のビット位置は、そのテーブル・エントリがたとえ無効だとしても、０を含むべきである。
【０１３６】
ページ・テーブル・エントリ
一実施形態において、ページ・テーブルからフェッチされるエントリは、以下のフォーマットを有する。
【表１５】
0005602638.tif 000016
【０１３７】
ページ・テーブル・エントリの選択されたフィールドは、以下のように割り振られる。即ち、
ページ・フレーム実アドレス（ＰＦＲＡ）：ビット０−５１は、実ストレージのアドレスの最左端のビットを与える。これらのビットの右に仮想アドレスの１２ビット・バイトのインデックス・フィールドを連結すると、６４ビットの実アドレスが得られる。
【０１３８】
ページ無効ビット（Ｉ）：ビット５３は、ページ・テーブル・エントリに関連付けられたページが利用可能であるかどうかを制御する。ビットが０である場合、アドレス変換はそのページ・テーブル・エントリを用いることによって進行する。ビットが１である場合、そのページ・テーブル・エントリを変換に用いることはできない。
【０１３９】
ＤＡＴ保護ビット（Ｐ）：ビット５４は、そのページでストア・アクセスを行うことができるかどうかを制御する。この保護機構は、キー制御保護及び低いアドレス保護機構に加えてのものである。このビットは、フェッチ・アクセスに対して影響を与えない。このビットが０である場合、以下の追加的制約に従って、そのページへのストアが許可される。即ち、
変換に用いられるセグメント・テーブル・エントリ内のＤＡＴ保護ビットが０である。
強化型ＤＡＴが適用される場合には、変換に用いられる全ての領域テーブル・エントリ内のＤＡＴ保護ビットが０である。
【０１４０】
他の保護機構
ビットが１である場合、ストアは許可されない。より優先順位の高い例外条件が存在しない場合には、ＤＡＴ保護ビットが１であるときにストアしようとする試行は、保護例外の認識を発生させる。セグメント・テーブル・エントリ内のＤＡＴ保護ビットは、そのページに対してＤＡＴ保護が適用されるかどうかを判定するときに、ビット５４と論理和演算されたものとして扱われる。強化型ＤＡＴが適用される場合、変換に用いられるいずれの領域テーブル・エントリ内のＤＡＴ保護ビットもまた、ＤＡＴ保護が適用されるかどうかを判定するときに、ビット５４と論理和演算されたものとして扱われる。
【０１４１】
変更記録オーバーライド（ＣＯ）：強化型ＤＡＴが適用されない場合、ページ・テーブル・エントリのビット５５は、０を含んでいなければならない。そうしなければ、アドレス変換のためにそのエントリを用いる命令の実行の一部として、変換指定例外が認識される。強化型ＤＡＴが適用され、且つ、ＳＴＥフォーマット制御が０である場合、ページ・テーブル・エントリのビット５５は、そのページについての変更記録オーバーライドである。
【０１４２】
エントリのビット位置５２は、０を含んでいなければならない。そうしなければ、アドレス変換のためにそのエントリを用いる命令の実行の一部として、変換指定例外が認識される。ビット５６−６３は割り当てられず、無視される。
【０１４３】
動的変換の別の実施形態
このセクションは、仮想アドレスを用いて主ストレージにアクセスする前に暗黙的に実施されるときの変換プロセスを説明する。
【０１４４】
仮想アドレスの変換は、プログラム・ステータス・ワード内のＤＡＴモード・ビット及びアドレス空間制御ビットにより制御され、且つ、制御レジスタ１、７、及び１３内のＡＳＣＥにより制御され、そして、アクセス・レジスタによって指定されるように制御される。変換に用いられるＡＳＣＥが領域第１テーブル指示である場合には、変換は領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、及びページ・テーブルによって実施され、その全てが実ストレージ又は絶対ストレージ内に存在する。ＡＳＣＥがより下位レベルのタイプのテーブル指示（領域第２テーブル指示、領域第３テーブル指示、又はセグメント・テーブル指示）である場合には、変換は、指示されたレベルから始まるテーブル・レベルのみを用いて実施され、非０であればより高位の１つ又は複数のレベルのテーブルの使用を要求するはずの仮想アドレスのビットは、全て０でなければならずそうでない場合には、ＡＳＣＥタイプ例外が認識される。ＡＳＣＥが実空間指示である場合には、仮想アドレスは実アドレスとして扱われ、実ストレージ又は絶対ストレージの内のテーブル・エントリは用いられない。
【０１４５】
特定のアドレス変換に用いられるＡＳＣＥを、実効ＡＳＣＥと呼ぶ。従って、一次仮想アドレスが変換される場合には、制御レジスタ１の内容が実効ＡＳＣＥとして用いられる。同様に、二次仮想アドレスの場合には制御レジスタ７の内容が用いられ、ＡＲ指定仮想アドレスの場合にはアクセス・レジスタによって指定されたＡＳＣＥが用いられ、ホーム仮想アドレスの場合には制御レジスタ１３の内容が用いられる。
【０１４６】
実効ＡＳＣＥの中の実空間制御が０である場合、ＡＳＣＥの中の指示タイプはテーブル指示タイプ、即ち、領域第１テーブル、領域第２テーブル、領域第３テーブル、又はセグメント・テーブルを指定する。仮想アドレスの対応する部分（領域第１インデックス、領域第２インデックス、領域第３インデックス、又はセグメント・インデックス）が、指示の中のテーブル長フィールドに対してチェックされ、これを指示内の基点に加算して、指示されたテーブルの中のエントリを選択する。選択されたエントリが、指示内のテーブル長フィールドによって判定してテーブルの外部にある場合、又は選択されたエントリ内のＩビットが１である場合は、指示によって指定されたテーブル・レベルに応じて、領域第１変換、領域第２変換、領域第３変換、又はセグメント変換の例外が認識される。選択されたエントリ内のテーブル・タイプ・ビットが予期されたテーブル・レベルを示していない場合には、変換指定例外が認識される。
【０１４７】
実効ＡＳＣＥによって選択されたテーブル・エントリは、用いられるべき次に下位レベルのテーブルを指示する。現在のテーブルが領域第１テーブル、領域第２テーブル、又は領域第３テーブルであれば、仮想アドレスの次の部分（それぞれ、領域第２インデックス、領域第３インデックス、又はセグメント・インデックス）が現在のテーブル・エントリ内のテーブル・オフセット及びテーブル長フィールドに対してチェックされ、これをエントリ内の基点に加算して、次に下位レベルのテーブルの中のエントリを選択する。次のテーブルの中の選択されたエントリが、現在のテーブル・エントリ内のテーブル・オフセット及びテーブル長フィールドによって判定して、そのテーブルの外部にある場合、又は、選択されたエントリ内のＩビットが１である場合は、次のテーブルのレベルに応じて、領域第２変換、領域第３変換、又はセグメント変換の例外が認識される。選択されたエントリ内のテーブル・タイプ・ビットが予期されたテーブル・レベルを示していない場合には、変換指定例外が認識される。
【０１４８】
逐次的なテーブル・レベルによる仮想アドレスの部分の処理は、セグメント・テーブル・エントリが選択されるまで続く。セグメント・テーブル・エントリは、指定されたセグメントの中の全てのページに適用されるページ保護ビットを含む。
【０１４９】
仮想アドレスのページ・インデックス部分を、セグメント・テーブル・エントリ内のページ・テーブル基点に加算して、ページ・テーブル内のエントリを選択する。ページ・テーブル・エントリ内のＩビットが１である場合には、ページ変換例外が認識される。ページ・テーブル・エントリは、仮想アドレスの変換を示す実アドレスの最左端のビットを含み、且つ、そのページ・テーブル・エントリによって指定されるページのみに適用されるページ保護ビットを含む。
【０１５０】
仮想アドレスのバイト・インデックス・フィールドは、実アドレスの最右端のビット位置として、変更せずに用いられる。
【０１５１】
実ストレージ又は絶対ストレージ内の変換テーブルを参照することに関連する遅延を排除するために、テーブルからフェッチされた情報は通常、特別なバッファである変換ルックアサイド・バッファ内にも置かれ、同じテーブル・エントリが関与するその後の変換は、変換ルックアサイド・バッファ内に記録された情報を用いて行うことができる。変換ルックアサイド・バッファは、実空間指示に関係した、仮想と実が等しい（virtual equals real）変換を記録することもできる。
【０１５２】
領域テーブル、セグメント・テーブル、又はページ・テーブルからエントリをフェッチする目的で、アドレス変換プロセス中に実ストレージ又は絶対ストレージにアクセスする場合であればいつでも、キー制御保護は適用されない。
【０１５３】
ＡＳＣＥによって指示されるテーブルにおけるルックアップ
実効ＡＳＣＥのＤＴ制御であるビット６０−６１は、ＡＳＣＥのテーブル指示タイプ、及び、指示されたテーブルによって変換される仮想アドレスの部分の両方を以下のように指定する。
【表１６】
0005602638.tif 000017
【０１５４】
ビット６０及び６１が二進数字１１の値を有する場合、仮想アドレスの領域第１インデックス部分を、ＡＳＣＥに含まれる領域第１テーブル基点と組み合わせて用いて、領域第１テーブルからエントリを選択する。実ストレージ又は絶対ストレージの中の領域第１テーブル・エントリの６４ビット・アドレスは、領域第１テーブル指示のビット０−５１の右側に１２個の０を付加すること、及び、最右端に３つ、最左端に５０個の０が付加された領域第１インデックスを加算することによって得られる。領域第１テーブル・ルックアップ・プロセスの一部として、アドレス指定されたエントリが領域第１テーブル内にあるかどうかを確立するために、仮想アドレスのビット０及び１（領域第１インデックスのビット０及び１である）が、領域第１テーブル指示のテーブル長、即ちビット６２及び６３に対して比較される。テーブル長フィールドにおける値が仮想アドレスの対応するビット位置における値より小さい場合には、領域第１変換例外が認識される。変換ルックアサイド・バッファ内の領域第１テーブル・エントリの等価物が変換に用いられる場合には、テーブル長に対する比較を省略することができる。領域第１テーブルからフェッチされたエントリは、対応する領域第２テーブルの開始位置を示し、そのオフセット及び長さを指定する。
【０１５５】
ＡＳＣＥのビット６０及び６１が二進数字１０の値を有する場合、仮想アドレスの領域第２インデックス部分を、ＡＳＣＥに含まれる領域第２テーブル基点と組み合わせて用いて、領域第２テーブルからエントリを選択する。仮想アドレスのビット１１及び１２（領域第２インデックスのビット０及び１である）が、ＡＳＣＥの中のテーブル長に対して比較される。テーブル長フィールドにおける値が、仮想アドレスの対応するビット位置における値より小さい場合には、領域第２変換例外が認識される。変換ルックアサイド・バッファ内の領域第２テーブル・エントリの等価物が変換に用いられる場合には、テーブル長に対する比較を省略することができる。その他の点では、領域第２テーブル・ルックアップ・プロセスは、領域第１テーブル・ルックアップ・プロセスと同じであり、領域第２テーブルからフェッチされたエントリは、対応する領域第３テーブルの開始位置を示し、そのオフセット及び長さを指定する。
【０１５６】
ＡＳＣＥのビット６０及び６１が二進数字０１の値を有する場合、仮想アドレスの領域第３インデックス部分を、ＡＳＣＥに含まれる領域第３テーブル基点と組み合わせて用いて、領域第３テーブルからエントリを選択する。仮想アドレスのビット２２及び２３（領域第３インデックスのビット０及び１である）が、ＡＳＣＥの中のテーブル長に対して比較される。テーブル長フィールドにおける値が、仮想アドレスの対応するビット位置における値より小さい場合には、領域第３変換例外が認識される。その他の点では、領域第３テーブル・ルックアップ・プロセスは領域第１テーブル・ルックアップ・プロセスと同じであり、領域第３テーブル・エントリ内のテーブル・タイプ・ビットをチェックすることを含む。領域第３テーブルからフェッチされたエントリは、対応するセグメント・テーブルの開始位置を示し、そのオフセット及び長さを指定する。
【０１５７】
ＡＳＣＥのビット６０及び６１が二進数字００の値を有する場合、仮想アドレスのセグメント・インデックス部分を、ＡＳＣＥに含まれるセグメント・テーブル基点と組み合わせて用いて、セグメント・テーブルからエントリを選択する。仮想アドレスのビット３３及び３４（セグメント・インデックスのビット０及び１である）が、ＡＳＣＥの中のテーブル長に対して比較される。テーブル長フィールドにおける値が、仮想アドレスの対応するビット位置における値より小さい場合には、セグメント変換例外が認識される。変換ルックアサイド・バッファ内のセグメント・テーブル・エントリの等価物が変換に用いられる場合には、テーブル長に対する比較を省略することができる。その他の点では、セグメント・テーブル・ルックアップ・プロセスは領域第１テーブル・ルックアップ・プロセスと同じであり、セグメント・テーブル・エントリ内のテーブル・タイプ・ビットをチェックすることを含む。処理は以下の通りである。
【０１５８】
強化型ＤＡＴが適用されない場合、又は、強化型ＤＡＴは適用されるが、ＳＴＥフォーマット制御が０である場合には、セグメント・テーブルからフェッチされたエントリは、対応するページ・テーブルの開始位置を示し、処理は以下の「ページ・テーブル・ルックアップ」において説明されるように続行する。
【０１５９】
強化型ＤＡＴが適用され、且つ、ＳＴＥフォーマット制御が１である場合には、セグメント・テーブルからフェッチされたエントリは、セグメント・フレーム絶対アドレスの最左端のビットを含む。変換に用いられるいずれかの領域テーブル・エントリ、又はセグメント・テーブル・エントリのどちらかにおいてＤＡＴ保護ビットが１であり、且つ、変換が実施されているストレージ参照がストアであれば、保護例外が認識される。
【０１６０】
領域テーブル・エントリによって指示されるテーブルにおけるルックアップ
実効ＡＳＣＥが領域テーブル指示である場合には、前掲のセクションにおいて説明されたように領域テーブル・エントリが選択される。次いで、選択されたエントリの内容と、仮想アドレスの次のインデックス部分とを用いて、次に下位レベルのテーブルにおけるエントリが選択され、このテーブルは、別の領域テーブルの場合もあり、セグメント・テーブルの場合もある。ＡＳＣＥによって選択されたテーブル・エントリが領域第１テーブル・エントリである場合には、仮想アドレスの領域第２インデックス部分を領域第１テーブル・エントリに含まれる領域第２テーブル基点と組み合わせて用いて、領域第２テーブルからエントリを選択する。実ストレージ又は絶対ストレージの中の領域第２テーブル・エントリの６４ビット・アドレスは、領域第１テーブル・エントリのビット０−５１の右側に１２個の０を付加すること、及び、最右端に３つ、最左端に５０個の０が付加された領域第２インデックスを加算することによって得られる。
【０１６１】
領域第２テーブル・エントリ、領域第３テーブル・エントリ、又はセグメント・テーブル・エントリのアドレスを形成する際に、プリフィックス付加が行われる場合には、それは、より高位レベルのテーブル・エントリに含まれるそれぞれのテーブル基点に対してテーブル・インデックスの値を加算する前に適用されるのか、又はテーブル基点とテーブル・インデックス値との加算によって形成されたテーブル・エントリ・アドレスに対して適用されるのかは、予測不可能である。
【０１６２】
領域第２テーブル・ルックアップ・プロセスの一部として、仮想アドレスのビット１１及び１２（領域第２インデックスのビット０及び１である）は、領域第１テーブル・エントリのテーブル・オフセットであるビット５６及び５７に対して、及び領域第１テーブル・エントリのテーブル長であるビット６２及び６３に対して比較され、アドレス指定されたエントリが領域第２テーブルの範囲内にあるどうかを確立する。テーブル・オフセット・フィールドにおける値が仮想アドレスの対応するビット位置における値より大きい場合、又はテーブル長フィールドにおける値が仮想アドレスの対応するビット位置における値より小さい場合には、領域第２変換例外が認識される。
【０１６３】
領域第２テーブルは、対応する領域第３テーブルの開始位置を示し、そのオフセット及び長さを指定する。
【０１６４】
ＡＳＣＥによって選択されたテーブル・エントリが領域第２テーブル・エントリである場合、又は領域第２テーブル・エントリが領域第１テーブル・エントリの内容によって選択されている場合には、仮想アドレスの領域第３インデックス部分を、領域第２テーブル・エントリに含まれる領域第３テーブル基点と組み合わせて用いて、領域第３テーブルからエントリを選択する。仮想アドレスのビット２２及び２３（領域第３インデックスのビット０及び１である）が、領域第２テーブル・エントリ内のテーブル・オフセット及びテーブル長に対して比較される。テーブル・オフセットがビット２２及び２３より大きい場合、又はテーブル長がビット２２及び２３より小さい場合には、領域第３変換例外が認識される。その他の点では、領域第３テーブル・ルックアップ・プロセスは、領域第２テーブル・ルックアップ・プロセスと同一である。領域第３テーブルからフェッチされたエントリは、対応するセグメント・テーブルの開始位置を示し、そのオフセット及び長さを指定する。
【０１６５】
ＡＳＣＥによって選択されたテーブル・エントリが領域第３テーブル・エントリである場合、又は領域第３テーブル・エントリが領域第２テーブル・エントリの内容によって選択されている場合には、仮想アドレスのセグメント・インデックス部分を、領域第３テーブル・エントリに含まれるセグメント・テーブル基点と組み合わせて用いて、セグメント・テーブルからエントリを選択する。仮想アドレスのビット３３及び３４（セグメント・インデックスのビット０及び１である）が、領域第３テーブル・エントリ内のテーブル・オフセット及びテーブル長に対して比較される。テーブル・オフセットがビット３３及び３４より大きい場合、又はテーブル長がビット３３及び３４より小さい場合には、セグメント変換例外が認識される。変換指定例外は、（１）ＡＳＣＥの中のプライベート空間制御であるビット５５が１であり、且つ（２）セグメント・テーブルからフェッチされたエントリ内の共通セグメント・ビットであるビット５９が１である場合に、認識される。その他の点では、セグメント・テーブル・ルックアップ・プロセスは、領域第２テーブル・ルックアップ・プロセスと同一である。処理は以下の通りである。
【０１６６】
強化型ＤＡＴが適用されない場合、又は、強化型ＤＡＴは適用されるがＳＴＥフォーマット制御が０である場合には、セグメント・テーブルからフェッチされたエントリは、対応するページ・テーブルの開始位置を示し、処理は後述の「ページ・テーブル・ルックアップ」において説明されるように続行する。
【０１６７】
強化型ＤＡＴが適用され、且つ、ＳＴＥフォーマット制御が１である場合には、セグメント・テーブルからフェッチされたエントリは、セグメント・フレーム絶対アドレスの最左端ビットを含む。変換に用いられるいずれかの領域テーブル・エントリ、又はセグメント・テーブル・エントリのどちらかにおいて、ＤＡＴ保護ビットが１であり、且つ、変換が実施されている対象のストレージ参照がストアであれば、保護例外が認識される。
【０１６８】
ページ・テーブルのルックアップ
強化型ＤＡＴが適用されない場合、又は強化型ＤＡＴは適用されるがＳＴＥフォーマット制御が０である場合には、仮想アドレスのページ・インデックス部分を、セグメント・テーブル・エントリに含まれるページ・テーブル基点と組み合わせて用いて、ページ・テーブルからエントリを選択する。
【０１６９】
実ストレージ又は絶対ストレージ内のページ・テーブル・エントリの６４ビット・アドレスは、ページ・テーブル基点の右に１１個の０を付加すること、及び、最右端に３つ、最左端に５３個の０が付加されたページ・インデックスを加算することによって得られる。ビット位置０のキャリーアウトは、生じることができない。
【０１７０】
ページ・テーブルからフェッチされたエントリは、そのページの可用性を示し、ページ・フレーム絶対アドレスの最左端ビットを含む。対応するページが利用可能であるかどうかを確立するために、ページ無効ビットであるビット５３が検査される。このビットが１である場合、ページ変換例外が認識される。ビット位置５２が１を含んでいる場合、変換指定例外が認識される。強化型ＤＡＴが適用されない場合、又は強化型ＤＡＴは適用されるがＳＴＥフォーマット制御が０である場合には、ビット位置５５が１を含む場合にも変換指定例外が認識される。変換に用いられるセグメント・テーブル・エントリ、ページ・テーブル・エントリ、又は強化型ＤＡＴが適用される場合に変換中に用いられるいずれかの領域テーブル・エントリのうちのいずれかにおいて、ＤＡＴ保護ビットが１であり、且つ、変換が実施されている対象のストレージ参照がストアであれば、保護例外が認識される。
【０１７１】
実アドレス及び絶対アドレスの形成
実効ＡＳＣＥが実空間指示である場合には、仮想アドレスのビット０−６３は直接、実ストレージ・アドレスとして用いられる。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。実効ＡＳＣＥが実空間指示ではなく、変換プロセスにおいて例外が発生しない場合には、以下の条件が適用される。
【０１７２】
強化型ＤＡＴが適用されない場合、又は強化型ＤＡＴは適用されるがＳＴＥフォーマット制御が０である場合には、ページ・フレーム実アドレスは、ページ・テーブル・エントリから得られる。ページ・フレーム実アドレスと仮想アドレスのバイト・インデックス部分とを、ページ・フレーム実アドレスが最左端部分を形成するようにして連結させる。その結果が、その仮想アドレスに対応する実ストレージ・アドレスである。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。
【０１７３】
強化型ＤＡＴが適用され、且つ、ＳＴＥフォーマット制御が１である場合には、セグメント・フレーム絶対アドレスと仮想アドレスのページ・インデックス部分及びバイト・インデックス部分とを左から右に連結して、仮想アドレスに対応する絶対アドレスを形成する。
【０１７４】
変換中の例外の認識
無効アドレス及び無効フォーマットは、変換プロセス中に認識される例外を発生することがある。テーブル・エントリに含まれる情報が変換のために用いられ、それが正しくない正しくないことが見いだされた場合に、例外が認識される。
【０１７５】
ここで、動的アドレス変換の一実施形態の流れ図をセグメント・テーブル・エントリからフォーマット制御フィールドを取得する時点まで示す、図８を参照する。
【０１７６】
６０２において、変換する仮想アドレスが取得される。６０４において、仮想アドレスの変換に用いられる最も高位の変換テーブルの基点アドレスが取得される。変換に用いられる最初の変換テーブルの基点アドレスは、ＡＤＣＥ及びＤＴビットに依存する。６０６において、仮想アドレスの一部を用いて、変換テーブル内の適切なテーブル・エントリを参照する。６０８において、変換テーブルからフェッチされたエントリがセグメント・テーブル・エントリでない場合には、変換テーブル階層構造の中のセグメント・テーブルはまだ参照されていない。この場合、６１０において、変換テーブル階層構造内の次に低位の変換テーブルの基点アドレスが、テーブル・エントリから取得される。仮想アドレスの適切な部分を用いて、変換に用いられる次に低位のテーブル内の対応するテーブル・エントリを参照する。
【０１７７】
例えば、変換に用いられる最初の変換テーブルの基点アドレスが領域第１テーブルであれば、仮想アドレスのＲＦＸ部分を用いて、領域第１テーブル内の領域第１テーブル・エントリを参照する。テーブル基点アドレスが領域第２テーブルに対するものであれば、仮想アドレスのＲＳＸ部分を用いて、領域第２テーブル内の領域第２テーブル・エントリを参照する。テーブル基点アドレスが領域第３テーブルに対するものであれば、仮想アドレスのＲＴＸ部分を用いて、領域第３テーブル内の領域第３テーブル・エントリを参照する。テーブル基点アドレスがセグメント・テーブルに対するものであれば、仮想アドレスのＳＸ部分を用いて、セグメント・テーブル内のセグメント・テーブル・エントリを参照するセグメント・テーブル・エントリがフェッチされるまで、逐次的なテーブルが参照される。
【０１７８】
一旦セグメント・テーブル・エントリがフェッチされると、６１２において、セグメント・テーブル・エントリ（ＳＴＥ）フォーマット制御ビットが検査され、この特定の仮想アドレスに対してフォーマット制御がイネーブルであるかどうかを判定する。ＳＴＥフォーマット制御が０であれば、動的アドレス変換はノード６１４に関して行われる。ＳＴＥフォーマット制御が１であれば、動的アドレス変換はノード６１６に関して行われる。
【０１７９】
動的アドレス変換（ＳＴＥフォーマット制御が０）
ここで、ＳＴＥフォーマット制御が０である場合の図８のノード６１４からの流れ図の続きを示す、図９を参照する。
【０１８０】
７１０において、セグメント・テーブル・エントリから、ページ・テーブルの基点アドレスが取得される。７１２において、仮想アドレスのＰＸ部分を用いて、ページ・テーブル内のページ・エントリを参照する。７１４において、ページ・テーブル・エントリから、ページ・フレーム実アドレス（ＰＦＲＡ）が取得される。無効（Ｉ）ビットがページ・テーブル・エントリから取得される。７１６において、無効（Ｉ）ビットが１である場合、このページ・テーブル・エントリは無効であるものとしてマークされているので、７１８において、このページ・テーブル・エントリを用いた仮想アドレスの変換を続けることはできない。このページ・テーブル・エントリを用いた仮想アドレスのそれ以上の変換は、停止する（７２２）。７１６において、無効（Ｉ）ビットが０である場合、７２０において、ページ・フレーム実アドレス（ＰＦＲＡ）を仮想アドレスのＢＸ部分と組み合わせて、実アドレスを生成する。実アドレスに対してさらにプリフィックス付加操作を行って、絶対アドレスを形成することができる。７２４において、実アドレスを用いて、変換された仮想アドレスによってアドレス指定されたデータ・ブロックにアクセスする。
【０１８１】
動的アドレス変換（ＳＴＥフォーマット制御が１）
ここで、図８のノード６１６からの流れ図の続きを示す、図１０を参照する。
【０１８２】
８１０において、セグメント・フレーム絶対アドレス（ＳＦＡＡ）が、セグメント・テーブル・エントリの一部から取得される。無効（Ｉ）ビットがセグメント・テーブル・エントリから取得される。８１２において、無効（Ｉ）ビットが１である場合、セグメント・テーブル・エントリは無効であるものとしてマークされているので、８１４において、このセグメント・テーブル・エントリを用いた仮想アドレスのそれ以上の変換を続けることはできない。一実施形態において、変換を要求するプログラム・エンティティに対して、例外コードが戻される。このセグメント・テーブル・エントリを用いた仮想アドレスのそれ以上の変換は、停止する（８１８）。
【０１８３】
８１２において、無効（Ｉ）ビットが０である場合、８１６において、セグメント・フレーム絶対アドレス（ＳＦＡＡ）を仮想アドレスのＰＸ部分及びＢＸ部分と組み合わせて、主ストレージ又はメモリ内の所望の大データ・ブロックに対する絶対アドレスを生成する。８２０において、変換された仮想アドレスによってアドレス指定される所望の大データ・ブロックにアクセスする。
【０１８４】
各テーブル・エントリにおいて、取得されたテーブル・エントリの妥当性を判定するために、無効ビットが検査される。変換された仮想アドレスによってアドレス指定されるデータ・ブロックを保護する他の変換保護機構について、本明細書においてさらに検討する。
【０１８５】
別の実施形態において、制限情報が変換テーブル・エントリから取得される。制限情報は、アクセスを仮想アドレス範囲の制限部分に対するものに限定するために用いられる。これ以降は、変換されたアドレスによってアドレス指定される所望の大データ・ブロックに対するアクセスは、アドレス範囲の制限部分に対してのみ許可される。制限情報は、テーブル・オフセット又はテーブル長のどれか１つである。
【０１８６】
さらに別の実施形態において、仮想アドレスの変換に用いられる情報は、少なくとも１つの変換ルックアサイド・バッファ内にストアされる。その後の仮想アドレスの、主ストレージ内のデータ・ブロックの絶対アドレスへの変換は、それ以降、変換テーブル階層構造ではなく変換ルックアサイド・バッファ由来のストアされた情報を用いて実施される。
【０１８７】
さらに別の実施形態において、変換がマシン・アーキテクチャに対してネイティブでない場合には、変換をエミュレートするための所定のソフトウェア・ルーチンが識別される。所定のソフトウェア・ルーチンは、複数の命令を含む。所定のソフトウェア・ルーチンが実行される。
【０１８８】
アドレス指定されたデータ・ブロックの保護
本明細書で説明されるように、仮想アドレスが強化型ＤＡＴファシリティを用いて変換されると、変換された仮想アドレスによってアドレス指定される主ストレージ又はメモリ内の所望のデータ・ブロックに対して、付加的な保護機構を適用することができる。
【０１８９】
ＤＡＴ保護
ＤＡＴ保護機能は、仮想ストレージへのアクセスを、各ページ・テーブル・エントリ及びセグメント・テーブル・エントリ内のＤＡＴ保護ビット、及び、強化型ＤＡＴファシリティがインストールされている場合には各領域テーブル・エントリ内のＤＡＴ保護ビットを用いることによって、制御する。これは不正なストアに対する保護を与える。
【０１９０】
ページ・テーブル・エントリのＤＡＴ保護ビット（ビット５４）は、対応する４キロバイトのページへのストアが許可されるかどうかを制御する。ビットが０である場合にはフェッチ及びストアの両方が許可され、ビットが１である場合にはフェッチのみが許可される。保護されたページへのストアが試行された場合、ページの内容は変更されず、操作単位（unit of operation）又は命令の実行が抑制され、保護のためのプログラム割り込みが発生する。
【０１９１】
セグメント・テーブル・エントリのＤＡＴ保護ビット（ビット５４）は、対応する１メガバイトのセグメントへのストアが許可されるかどうかを以下のように制御する。
【０１９２】
強化型ＤＡＴが適用されない場合、又は強化型ＤＡＴが適用され、且つＳＴＥフォーマット制御が０である場合には、セグメント・テーブル・エントリのＤＡＴ保護ビットは、そのセグメント・テーブル・エントリによって指示されるページ・テーブル内の各エントリのＤＡＴ保護ビット位置内へと論理和演算されたものとして扱われる。よって、セグメント・テーブル・エントリのＤＡＴ保護ビットが１である場合、その効果は、あたかも指示されたページ・テーブルの中の各エントリ内のＤＡＴ保護ビットが１であるかのようなものである。
【０１９３】
強化型ＤＡＴが適用され、且つＳＴＥフォーマット制御が１である場合には、セグメント・テーブル・エントリのＤＡＴ保護ビットは、対応する１メガバイトのセグメントへのストアが許可されるどうかを制御する。ビットが０である場合にはフェッチ及びストアの両方が許可され、ビットが１である場合にはフェッチのみが許可される。保護されたセグメントへストアが試行された場合、セグメントの内容は変更されず、操作単位又は命令の実行が抑制され、保護のためのプログラム割り込みが発生する。
【０１９４】
強化型ＤＡＴが適用される場合、領域テーブル・エントリのＤＡＴ保護ビットは、対応する領域へのストアが許可されるかどうかを制御する。領域テーブル・エントリ内のＤＡＴ保護ビットは、変換に用いられるいずれかの後続の領域テーブル・エントリ及びセグメント・テーブル・エントリのＤＡＴ保護ビット位置内へと論理和演算されたものとして扱われる。ＳＴＥフォーマット制御が０である場合、ＤＡＴ保護ビットは、さらにページ・テーブル・エントリまで伝搬される。
【０１９５】
ＤＡＴ保護は、仮想アドレスを用いる全てのストア・タイプ参照に適用される。
【０１９６】
ここで、変換に用いられるセグメント・テーブル・エントリからＤＡＴ保護ビットを得る一実施形態の流れ図を示す、図１１を参照する。
【０１９７】
９０２において、変換される仮想アドレスが取得される。９０４において、仮想アドレスの変換に用いられる最初の変換テーブルの基点が取得される。９０６において、前述された手法で、仮想アドレスの一部を用いて変換テーブル内のエントリを参照する。９０８において、実アドレス又は絶対アドレスが、取得されたセグメント・フレーム絶対アドレス（ＳＦＡＡ）又はページ・フレーム実アドレス（ＰＦＲＡ）から生成される。
【０１９８】
９１０において、ＤＡＴ保護（Ｐ）ビットが、仮想アドレスの変換に用いられた変換テーブルの各エントリから取得される。ＤＡＴ保護の実効レベルは、変換に用いられた各テーブル・エントリから取得される複数のＰビットの論理和であることを理解すべきである。９１２において、ＤＡＴ保護ビットが検査され、変換された仮想アドレスによってアドレス指定されたデータ・ブロックがＤＡＴ保護されるかどうかを判定する。９１２において、ＤＡＴ保護（Ｐ）ビットが０である場合、９１４において、変換された仮想アドレスによってアドレス指定されるデータ・ブロックへのストア動作が許可される。９１２において、ＤＡＴ保護（Ｐ）ビットが１である場合、９１６において、変換された仮想アドレスによってアドレス指定されたデータ・ブロックへのストア動作が防止される。あるいは、ＤＡＴ保護フィールドによって示される保護レベルが、その仮想アドレスを用いる全てのストア・タイプ参照に対して適用される。ＤＡＴ保護フィールドがイネーブルである場合、変換された仮想アドレスによってアドレス指定された所望のデータ・ブロックへのストアが試行されると、保護例外条件が示される。
【０１９９】
キー制御保護
キー制御保護がストレージ・アクセスに適用される場合、ストアは、ストレージ・キーがストレージ・アクセス要求に関連付けられたアクセス・キーと一致する場合にのみ許可され、フェッチは、キーが一致する場合、又はストレージ・キーのフェッチ保護ビットが０である場合に許可される。ストレージ・キーの４つのアクセス制御ビットがアクセス・キーに等しい場合、又はアクセス・キーが０である場合に、キーが一致したと言う。保護アクションは、以下のように要約される。
【表１７】
0005602638.tif 000018
【０２００】
ストレージへのアクセスがＣＰＵによって開始され、且つキー制御保護が適用される場合には、ＰＳＷキーがアクセス・キーであるが、但し、ＭＯＶＥ  ＴＯ  ＳＥＣＯＮＤＡＲＹ及びＭＯＶＥ  ＷＩＴＨ  ＤＥＳＴＩＮＡＴＩＯＮ  ＫＥＹの第１オペランド、ＭＯＶＥ  ＴＯ  ＰＲＩＭＡＲＹ、ＭＯＶＥ  ＷＩＴＨ  ＫＥＹ、及びＭＯＶＥ  ＷＩＴＨ  ＳＯＵＲＣＥ  ＫＥＹの第２オペランド、並びに第ＭＯＶＥ  ＰＡＧＥの１オペランド又は第２オペランドのいずれかについては、アクセス・キーは汎用レジスタ内で指定される。ＰＳＷキーは、カレント・プログラム・ステータス・ワードの８−１１のビット位置を占める。
【０２０１】
キー制御保護が原因でＣＰＵアクセスが禁止されるとき、命令の実行は停止し、保護例外のためのプログラム割り込みが発生する。しかしながら、操作単位又は命令の実行は抑制されることもある。
【０２０２】
ストレージ・キー
ストレージ・キーは、構成内で利用可能なストレージの各々の４キロバイト・ブロックに関連付けられる。ストレージ・キーはアドレス指定可能なストレージの一部ではない。一実施形態において、ストレージ・キーは以下のフォーマットを有する。
【表１８】
0005602638.tif 000019
【０２０３】
ストレージ・キーの中のビット位置は以下のように割り振られる。
アクセス制御ビット（ＡＣＣ）：参照がキー制御保護を受けているならば、情報がストアされる場合、及びフェッチに対して保護されている位置から情報がフェッチされる場合に、４つのアクセス制御ビットが、４ビットのアクセス・キーと照合される。
【０２０４】
フェッチ保護ビット（Ｆ）：参照がキー制御保護を受けているならば、フェッチ保護ビットは、キー制御保護がフェッチ・タイプ参照に適用されるかどうかを制御し、０は、ストア・タイプ参照のみが監視され、どのようなアクセス・キーを有するフェッチも許可されることを示し、１は、キー制御保護がフェッチ及びストアの両方に適用されることを示す。
【０２０５】
参照ビット（Ｒ）：参照ビットは通常、対応するストレージ・ブロック内の位置が情報のストア又はフェッチのいずれかのために参照される都度、１に設定される。
【０２０６】
変更ビット（Ｃ）：変更ビットは、対応するストレージ・ブロック内の位置に情報がストアされる都度、１に設定される。
【０２０７】
強化型ＤＡＴが適用される場合、以下の追加条件が効力をもつ。
【０２０８】
ＳＴＥフォーマット制御（変換中に用いられるセグメント・テーブル・エントリのビット５３であるＦＣ）が０である場合、変換中に用いられるページ・テーブル・エントリのビット５５は、そのページのための変更記録オーバーライド（ＣＯ）である。ページ・テーブル・エントリ内のＣＯビットが１である場合、そのページに対するいずれのストア動作についても変更記録は予測不可能である。
【０２０９】
セグメント・テーブル・エントリの中のフォーマット制御ビット（ＣＯ）が１である場合、以下が適用される。
【０２１０】
セグメント・テーブル・エントリのビット位置４７は、ＡＣＣＦ妥当性制御を含む。ＡＣＣＦ妥当性制御は、ＳＴＥの中のアクセス制御ビット及びフェッチ保護ビットの妥当性を決定する。ＡＣＣＦ妥当性制御が０である場合、キー制御保護は、そのアドレスに対応する４Ｋバイト・ブロックのためのストレージ・キーの中のアクセス制御ビット及びフェッチ保護ビットを用いる。
【０２１１】
ＡＣＣＦ妥当性制御が１である場合、セグメント・テーブル・エントリのビット位置４８−５２は、そのセグメントについてのアクセス制御ビット及びフェッチ保護ビットを含む。ストレージ・オペランドに対するアクセス可能性を判定するときに、ＳＴＥのビット４８−５２、又は、セグメントを構成する４Ｋバイト・ブロックのための個々のストレージ・キーのビット０−４のどちらが検査されるかは、予測不可能である。
【０２１２】
セグメント・テーブル・エントリのビット５５は、そのセグメントについての変更記録オーバーライド（ＣＯ）である。セグメント・テーブル・エントリ内のＣＯビットが１である場合、そのセグメントに対するいずれかのストア動作について変更記録が設定されるかどうかは予測不可能である。
【０２１３】
ストレージ・キー・アクセス
ストレージ・キーへの参照は、以下のように取り扱われる。
【０２１４】
ストレージの参照が行われ、且つキー制御保護が参照に適用される場合には常に、そのストレージ位置に関連付けられた４つのアクセス制御ビット及びフェッチ保護ビットが同時に、且つストレージ位置に対する参照と同時に、検査される。（１）強化型ＤＡＴが適用されない場合、（２）強化型ＤＡＴは適用されるが、ＳＴＥフォーマット制御が０であるセグメント・テーブル・エントリによってストレージがアクセスされる場合、又は（３）強化型ＤＡＴが適用され、ＳＴＥフォーマット制御が１であるが、ＡＣＣＦ妥当性制御が０であるセグメント・テーブル・エントリによってストレージがアクセスされる場合、アクセス制御ビット及びフェッチ保護ビットは、４Ｋバイト・ブロックのためのストレージ・キーのビット０−４に存在する。強化型ＤＡＴが適用され、ＳＴＥフォーマット制御及びＡＣＣＦ妥当性制御の両方が１であるセグメント・テーブル・エントリによってストレージがアクセスされる場合、ストレージ・キーのビット０−４又はセグメント・テーブル・エントリのビット４８−５２のどちらがアクセス制御ビット及びフェッチ保護ビットを与えるかは予測不可能である。さらに、セグメント・テーブル・エントリがアクセス制御ビット及びフェッチ保護ビットを与える場合には、変換ルックアサイド・バッファ由来のバッファされたコピーを用いることができる。
【０２１５】
強化型ＤＡＴが適用され、且つ、（ａ）ＳＴＥフォーマット制御が０であり、且つ、ＤＡＴによって用いられるページ・テーブル・エントリ内の変更記録オーバーライドが１であるか、又は（ｂ）ＳＴＥフォーマット制御が１であり、且つ、ＤＡＴによって用いられるセグメント・テーブル・エントリ内の変更記録オーバーライドが１であるかのいずれかの場合、ＣＰＵがストア動作を実施するときに変更ビットを設定するかどうかは予測不可能である。変更記録オーバーライドは、ＰＴＥ又はＳＴＥの変換ルックアサイド・バッファ・コピーの中にバッファリングすることができる。
【０２１６】
条件付きＳＳＫＥ特徴がインストールされていない場合、ＳＥＴ  ＳＴＯＲＡＧＥ  ＫＥＹ  ＥＸＴＥＮＤＥＤ命令によって、ストレージ・キーの中の７つのビットの全てが同時に設定される。条件付きＳＳＫＥがインストールされている場合、ＳＥＴ  ＳＴＯＲＡＧＥ  ＫＥＹ  ＥＸＴＥＮＤＥＤ命令を用いて、プログラム指定基準に基づいてストレージ・キーの全て又は一部を設定することができる。
【０２１７】
ＩＮＳＥＲＴ  ＳＴＯＲＡＧＥ  ＫＥＹ  ＥＸＴＥＮＤＥＤ命令は、４Ｋバイト・ブロックのためのストレージ・キーのビット０−６の一貫したイメージを提供する。同様に、ＩＮＳＥＲＴ  ＶＩＲＴＵＡＬ  ＳＴＯＲＡＧＥ  ＫＥＹ命令及びＴＥＳＴ  ＰＲＯＴＥＣＴＩＯＮ命令は、アクセス制御ビット及びフェッチ保護ビットの一貫したイメージを提供する。
【０２１８】
ＲＥＳＥＴ  ＲＥＦＥＲＥＮＣＥ  ＢＩＴ  ＥＸＴＥＮＤＥＤ命令は、参照ビットのみを修正する。ストレージ・キーの他の全てのビットは変更されないままである。条件コードを設定するために、参照ビット及び変更ビットが同時に検査される。
【０２１９】
参照ビットによって提供される参照の記録は、必ずしも正確でない。しかし、大部分の状況において、参照記録は、関連するストレージ参照とほぼ一致する。変更ビットを、ストアが発生しなかった場合に設定することができる。
【０２２０】
他のＣＰＵによって観察される際に、ストレージ・キーを明示的に操作する命令（ＩＮＳＥＲＴ  ＳＴＯＲＡＧＥ  ＫＥＹ  ＥＸＴＥＮＤＥＤ、ＩＮＳＥＲＴ  ＶＩＲＴＵＡＬ  ＳＴＯＲＡＧＥ  ＫＥＹ、ＲＥＳＥＴ  ＲＥＦＥＲＥＣＥ  ＢＩＴ  ＥＸＴＥＮＤＥＤ、及びＳＥＴ  ＳＴＯＲＡＧＥ  ＫＥＹ  ＥＸＴＥＮＤＥＤ）に起因するストレージ・キー・フェッチ及びストアは、あたかもストレージ・キー・アクセス自体がそれぞれストレージ・オペランド・フェッチ及びストアであるかのように、それ自体の中で、及びストレージ・オペランド参照の中で順序付けられる。
【０２２１】
アクセス制御及びフェッチ保護（ＡＣＣ／Ｆ）
主ストレージ又はメモリ内のデータ・ブロックは、セグメント・テーブル・エントリ内に与えられたアクセス制御ビット及びフェッチ保護ビットによって、さらに保護することができる。
【０２２２】
アクセス妥当性（ＡＶ）及びアクセス制御（ＡＣＣ）
ここで、変換された仮想アドレスによってアドレス指定される所望のデータ・ブロックに適用されるアクセス制御保護を判定する流れ図の一実施形態を示す、図１２を参照する。
【０２２３】
動的アドレス変換は、図８においてノード６１６のところまで説明されたように、変換に用いられるセグメント・テーブルからセグメント・テーブル・エントリがフェッチされた時点まで進行する。アドレス変換は、図１０においてノード８２２のところまで説明されたように、ストレージ又はメモリ内の所望のデータ・ブロックに対する絶対アドレスが取得されたところまで続行する。図１２のフローはノード８２２から開始する。
【０２２４】
１００２において、アクセス妥当性（ＡＶ）フィールドがセグメント・テーブル・エントリから取得される。１００４において、セグメント・テーブル・エントリ内のアクセス妥当性がイネーブルである（ＡＶ＝１）かどうかの判定が行われる。アクセス妥当性フィールドが０であれば、セグメント・テーブル・エントリ内のアクセス制御（ＡＣＣ）フィールドは有効ではない。１００６において、アクセス制御（ＡＣＣ）フィールドのビットは無視される。アクセス妥当性フィールドかイネーブルであれば、アクセス制御フィールドは有効である。１００８において、アクセス制御（ＡＣＣ）フィールドのビットがセグメント・テーブル・エントリから取得される。１０１０において、セグメント・テーブル・エントリ内のＡＣＣフィールドによって示されるアクセス制御保護レベルが、変換された仮想アドレスによってアドレス指定される所望のデータ・ブロックに適用される。
【０２２５】
別の実施形態において、所望のデータ・ブロックへのストア動作は、アクセス制御フィールドが、プログラム・ステータス・ワード又は実行中のプログラム命令のオペランドといったプログラム・エンティティによって与えられるアクセス・キーに一致した場合にのみ、許可される。所望のデータ・ブロックにおいてストアが試行され、且つアクセス制御フィールドがアクセス・キーに一致しなければ、保護例外が示されることが好ましい。
【０２２６】
さらに別の実施形態において、アクセス妥当性フィールドがイネーブルである場合、所望のメモリ・ブロックにおいてフェッチ動作又はストア動作が試行され、且つセグメント・アクセス制御フィールドがプログラム・アクセス制御フィールドに一致しなければ、保護例外が示される。
【０２２７】
アクセス妥当性（ＡＶ）及びフェッチ保護（Ｆ）
ここで、変換された仮想アドレスによってアドレス指定される所望のデータ・ブロックに適用されるフェッチ保護を判定する流れ図の一実施形態を示す、図１３を参照する。
【０２２８】
動的アドレス変換は、図８においてノード６１６のところまで説明されたように、変換に用いられるセグメント・テーブルからセグメント・テーブル・エントリがフェッチされた時点まで進行する。アドレス変換は、図１０においてノード８２２のところまで説明されたように、ストレージ又はメモリ内の所望のデータ・ブロックに対する絶対アドレスが取得されたところまで続行する。図１３のフローはノード８２２から開始する。
【０２２９】
１１０２において、アクセス妥当性（ＡＶ）フィールドがセグメント・テーブル・エントリから取得される。１１０４において、セグメント・テーブル・エントリ内のアクセス妥当性がイネーブルである（ＡＶ＝１）かどうかの判定が行われる。１１０４において、アクセス妥当性フィールドが０であれば、１１０６において、フェッチ保護ビットは無視される。１１０４において、アクセス妥当性フィールドかイネーブルであれば、１１０８において、フェッチ保護ビットがセグメント・テーブル・エントリから取得される。１１１０において、セグメント・テーブル・エントリ内のＦフィールドによって示されるフェッチ保護レベルが、変換された仮想アドレスによってアドレス指定される所望のデータ・ブロックに適用される。変換された仮想アドレスによってアドレス指定されるデータ・ブロックからのフェッチ動作は、フェッチ保護フィールドがアクセス・キーに一致した場合にのみ、許可される。アクセス・キーは、プログラム・ステータス・ワード又は実行中のプログラム命令のオペランドによって与えられる。所望のデータ・ブロックからのフェッチ動作は、フェッチ保護フィールドがディスエーブルである場合、又はフェッチ保護フィールドがイネーブルであり、且つ仮想アドレスに関連付けられたアクセス制御フィールドがアクセス・キーに等しい場合にのみ、許可される。アクセス・キーが０であれば、所望のデータ・ブロックからのフェッチが許可される。
【０２３０】
さらに別の実施形態において、プログラム・アクセス・キーが０であれば、所望のメモリ・ブロックへのストア動作及び所望のメモリ・ブロックからのフェッチ動作が許可される。
【０２３１】
さらに別の実施形態において、アクセス妥当性フィールド及びフェッチ保護フィールドがイネーブルである場合、所望のメモリ・ブロックからのフェッチ動作が試行され、且つセグメント・アクセス制御フィールドがプログラム・アクセス制御フィールドに一致しないことに応答して、保護例外が示される。
【０２３２】
ＳＥＴ  ＳＴＯＲＡＧＥ  ＫＥＹ  ＥＸＴＥＮＤＥＤ（ＳＳＫＥ）
ストレージ・キーは、ＳＥＴ  ＳＴＯＲＡＧＥ  ＫＥＹ  ＥＸＴＥＮＤＥＤ（ＳＳＫＥ）命令によって設定することができる。一実施形態において、ＳＳＫＥ命令は、以下のフォーマットを有する。
【表１９】
0005602638.tif 000020
【０２３３】
１つ又は複数の４Ｋバイト・ブロックのためのストレージ・キーが、第１オペランド・レジスタ内の値で置換される。条件付きＳＳＫＥファシリティがインストールされている場合には、キー設定動作の特定の機能をバイパスすることができる。条件付きＳＳＫＥファシリティがインストールされていない場合、又は条件付きＳＳＫＥファシリティがインストールされ、且つＭ３フィールドのＭＲビット及びＭＣビットの両方が０である場合には、汎用レジスタＲ２の内容によってアドレス指定される４Ｋバイト・ブロックのためのストレージ・キーが、汎用レジスタＲ１からのビットで置換される。命令は、条件コードを変更することなく完了する。
【０２３４】
条件付きＳＳＫＥファシリティがインストールされ、且つＭＲビット及びＭＣビットの一方又は両方が１である場合には、汎用レジスタＲ２の内容によってアドレス指定されるストレージ・キーのアクセス制御ビット、フェッチ保護ビット、及び随意に参照ビット及び変更ビットが、汎用レジスタＲ１内の対応するビットと比較される。比較されたビットが等しければ、キーに対する変更は行われない。そうでない場合には、キーの選択されたビットが、汎用レジスタＲ１内の対応するビットによって置換される。いずれかの変更の前のストレージ・キーは、汎用レジスタＲ１の中に挿入され、結果は条件コードによって示される。
【０２３５】
強化型ＤＡＴファシリティがインストールされている場合、後述の複数ブロック制御の制御の下で、同一の１ＭＢブロック内の複数の４Ｋバイト・ブロックのストレージ・キーに対して上記の動作を繰り返すことができる。一実施形態において、Ｍ３フィールドは、以下のフォーマットを有する。
【表２０】
0005602638.tif 000021
Ｍ３フィールドのビットは、以下のように定められる。
【０２３６】
未使用：ビット０は未使用とされる。
【０２３７】
参照ビット更新マスク（ＭＲ）：ＭＲビット、即ちＭ３フィールドのビット１は、後述のように、ストレージ・キーの中の参照ビットに対する更新をバイパスすることができるかどうかを制御する。
【０２３８】
変更ビット更新マスク（ＭＣ）：ＭＣビット、即ちＭ３フィールドのビット２は、後述のように、ストレージ・キーの中の変更ビットに対する更新をバイパスすることができるかどうかを制御する。
【０２３９】
複数ブロック制御（ＭＢ）：ＭＢビット、即ちＭ３フィールドのビット３は、ストレージの複数の４Ｋバイト・ブロックのためのストレージ・キーを、複数の４Ｋバイト・ブロックにおけるストレージ・キーの設定の項で説明されるように設定してもよいかどうかを制御する。
【０２４０】
強化型ＤＡＴファシリティがインストールされていない場合、Ｍ３フィールドのビット位置３は未使用とされる。条件付きＳＳＫＥファシリティがインストールされている場合、処理は以下の通りである。
【０２４１】
ＭＲビット及びＭＣビット、即ちＭ３フィールドのビット１及び２の両方が０である場合、命令は、あたかも条件付きＳＳＫＥファシリティがインストールされていないかのように完了する。汎用レジスタＲ２の内容によってアドレス指定される４Ｋバイト・ブロックのためのストレージ・キーは、汎用レジスタＲ１からのビットで置換され、命令は条件コードを変更することなく完了する。
【０２４２】
ＭＲビット及びＭＣビットの一方又は両方が１である場合、処理は以下の通りである。
【０２４３】
いずれかの変更に先立ち、汎用レジスタＲ２の内容によってアドレス指定される４Ｋバイト・ブロックのためのストレージ・キーの内容が汎用レジスタＲ１のビット位置４８−５４に置かれ、汎用レジスタＲ１のビット５５は０に設定される。レジスタのビット０−４７及び５６−６３は変更されない。ストレージ・キーをフェッチするときに無効なチェック・ブロック・コード（ＣＢＣ）が検出された場合には、（ａ）４Ｋバイト・ブロックのためのストレージ・キー全体が汎用レジスタＲ１のビット５６−６２によって置換され、（ｂ）汎用レジスタＲ１のビット位置４８−５５の内容は予測不可能であり、且つ（ｃ）命令は条件コード３を設定することによって完了する。
【０２４４】
指示された４Ｋバイト・ブロックのためのストレージ・キーのアクセス制御ビット及びフェッチ保護ビットが、汎用レジスタＲ１のビット５６−６０における対応するフィールドと比較される。それぞれのフィールドが等しくない場合には、４Ｋバイト・ブロックのためのストレージ・キー全体が汎用レジスタＲ１からのビットによって置換され、命令は条件コード１を設定することによって完了する。ストレージ・キーの中のアクセス制御ビット及びフェッチ保護ビットが汎用レジスタＲ１の中のそれぞれのビットに等しい場合には、処理は以下で説明されるように続行する。
【０２４５】
ＭＲビット及びＭＣビットの両方が１である場合、命令は条件コード０を設定することによって完了する。この場合は、ストレージ・キーは変更されないままである。
【０２４６】
ＭＲビットが０であり、且つＭＣビットが１である場合には、指示された４Ｋバイト・ブロックのためのストレージ・キーの参照ビットが、汎用レジスタＲ１のビット６１と比較される。ビットが等しければ、命令は条件コード０を設定することによって完了する。この場合は、ストレージ・キーは変更されないままである。ビットが等しくない場合は、（ａ）指示された４Ｋバイト・ブロックのためのストレージ・キー全体が汎用レジスタＲ１の中のビットによって置換され、命令は条件コード１を設定することによって完了するか、又は（ｂ）ストレージ・キーのための参照ビットが汎用レジスタＲ１のビット６１によって置換され、そのキーのための変更ビットは予測不可能であり、命令は条件コード２を設定することによって完了するかの、いずれかである。条件コード１又は２のどちらが設定されるかは、予測不可能である。
【０２４７】
ＭＣビットが０であり、且つＭＲビットが１である場合には、指示された４Ｋバイト・ブロックのためのストレージ・キーの変更ビットが、汎用レジスタＲ１のビット６２と比較される。ビットが等しければ、命令は条件コード０を設定することによって完了する。この場合は、ストレージ・キーは変更されないままである。ビットが等しくない場合は、（ａ）指示された４Ｋバイト・ブロックのためのストレージ・キー全体が汎用レジスタＲ１の中のビットによって置換され、命令は条件コード１を設定することによって完了するか、又は（ｂ）ストレージ・キーのための参照ビットが汎用レジスタＲ１のビット６２によって置換され、そのキーのための変更ビットは予測不可能であり、命令は条件コード２を設定することによって完了するかの、いずれかである。条件コード１又は２のどちらが設定されるかは、予測不可能である。
【０２４８】
強化型ＤＡＴファシリティがインストールされていない場合、又はファシリティはインストールされているが複数ブロック制御が０である場合には、汎用レジスタＲ２は実アドレスを含む。強化型ＤＡＴファシリティがインストールされており、且つ複数ブロック制御が１である場合には、汎用レジスタＲ２は絶対アドレスを含む。２４ビット・アドレス指定モードにおいては、汎用レジスタＲ２のビット４０−５１が実ストレージ又は絶対ストレージ内の４Ｋバイト・ブロックを指示し、レジスタのビット０−３９及び５２−６３は無視される。３１ビット・アドレス指定モードにおいては、汎用レジスタＲ２のビット３３−５１が実ストレージ又は絶対ストレージ内の４Ｋバイト・ブロックを指示し、レジスタのビット０−３２及び５２−６３は無視される。６４ビット・アドレス指定モードにおいては、汎用レジスタＲ２のビット０−５１が実ストレージ又は絶対ストレージ内の４Ｋバイト・ブロックを指示し、レジスタのビット５２−６３は無視される。ストレージ・ブロックを指示するアドレスは、実アドレス又は絶対アドレスであるため、動的アドレス変換の対象ではない。ストレージ・キーに対する参照は、保護例外の対象ではない。
【０２４９】
新たな７ビットのストレージ・キー値、又はその選択されたビットが、汎用レジスタＲ１のビット位置５６−６２から取得される。レジスタのビット位置０−５５及び６３の内容は無視される。条件付きＳＳＫＥファシリティがインストールされており、且つＭＲビット及びＭＣビットの一方又は両方が１である場合には、ビット位置６３は０を含むべきである。さもなければ、プログラムは、将来的に互換的に動作しなくなる可能性がある。
【０２５０】
シリアル化及びチェックポイント同期化機能が、動作の開始前に実施され、動作の完了後にも再度、実施されるが、但し、条件付きＳＳＫＥファシリティがインストールされており、且つ結果として得られた条件コードが０である場合には、動作完了後にシリアル化及びチェックポイント同期化機能が実施されるかどうかは予測不可能である。いずれかのＣＰＵ又はチャネル・プログラムによる、指示された４Ｋバイト・ブロックに対する、この命令によるキーの設定の前又は後のどちらかに完了する、どのストア・アクセスについても、そのブロックのためのストレージ・キーにおける関連付けられた参照ビット及び変更ビットの１への設定もまた、この命令の実行のそれぞれ前又は後に完了する。
【０２５１】
複数の４Ｋバイト・ブロックにおけるストレージ・キーの設定
強化型ＤＡＴファシリティがインストールされていない場合、又はファシリティはインストールされているが複数ブロック制御が０である場合には、上述のように、単一の４Ｋバイト・ブロックのためのストレージ・キーが設定される。強化型ＤＡＴファシリティがインストールされており、且つ複数ブロック制御が１である場合には、１メガバイト・ブロック内の複数４Ｋバイト・ブロックのためのストレージ・キーを、第２オペランド・アドレスによって指定されるブロックから開始して、右方向に各々の逐次的なブロックに続き、次の１メガバイト境界まで設定することができる。この場合、ＳＥＴ  ＳＴＯＲＡＧＥ  ＫＥＹ  ＥＸＴＥＮＤＥＤは割り込み可能であり、処理は以下の通りである。
【０２５２】
割り込みが発生したとき（停止に続くもの以外の）、汎用レジスタＲ２は更新されているので、命令は、再実行されたときに割り込み時点で再開する。ＭＲビット又はＭＣビットの一方又は両方が１であれば、条件コードは予測不可能である。そうでない場合には、条件コードは変更されない。
【０２５３】
命令が割り込みなしに完了したとき、汎用レジスタＲ２は次の１メガバイト境界まで更新されている。ＭＲビット又はＭＣビットの一方又は両方が１であれば、条件コード３が設定される。そうでない場合には、条件コードは変更されない。
【０２５４】
上記の２つの場合のいずれかにおいて、ＭＲビット又はＭＣビットの一方又は両方が１であれば、汎用レジスタＲ１のビット４８−５５は予測不可能である。
【０２５５】
複数ブロック処理が発生し、Ｒ１フィールド及びＲ２フィールドが同じレジスタを指示する場合、第２オペランド・アドレスがレジスタ内に置かれる。複数ブロック処理が２４ビット又は３１ビット・アドレス指定モードで発生した場合、汎用レジスタＲ２のビット位置３２−６３におけるアドレスの一部ではない最左端ビットは０に設定され、レジスタのビット０−３１は変更されない。
【０２５６】
得られる条件コード：
条件付きＳＳＫＥファシリティがインストールされていない場合、又はＭ３フィールドのＭＲビット及びＭＣビットの両方が０である場合には、条件コードは変更されないままである。条件付きＳＳＫＥがインストールされており、且つＭＲビット及びＭＣビットの一方又は両方が１である場合には、条件コードは以下のように設定される。
０−ストレージ・キーは設定されない
１−ストレージ・キー全体が設定される
２−ストレージ・キーの一部が設定される
３−ストレージ・キー全体が設定され、汎用レジスタＲ１のビット４８−５５は予測不可能である。
【０２５７】
プログラム例外：
アドレス指定（汎用レジスタＲ２によって指定されるアドレス）
特権操作
【０２５８】
変更記録
変更記録は、主ストレージにおいてページが置換されるときにどのページを補助ストレージ内に保存しなければならないかについての情報を提供する。変更記録は、ストレージ・キーの変更ビット（ビット６）を用いる。変更ビットは、ストア・アクセスが対応するストレージ・ブロックの内容を変更させ、且つ（ａ）強化型ＤＡＴが適用されない場合、又は（ｂ）強化型ＤＡＴが適用される場合のどちらかであって、且つ以下のうちのどちらかが真であるときに、その都度、１に設定される。即ち、
ＤＡＴによって用いられるセグメント・テーブル・エントリ内のＳＴＥフォーマット制御が０であり、且つＤＡＴによって用いられるページ・テーブル・エントリ内の変更記録オーバーライド（ＣＯ）が０である。
ＤＡＴによって用いられるセグメント・テーブル・エントリ内のＳＴＥフォーマット制御が１であり、且つＤＡＴによって用いられるセグメント・テーブル・エントリ内の変更記録オーバーライド（ＣＯ）が０である。
【０２５９】
ストレージの内容を変更しないストア・アクセスは、変更ビットを１に設定する場合も設定しない場合もある。アクセスが禁止されている場合にストアする試行については、変更ビットは１に設定されない。具体的には、
ＣＰＵについて、ストア・アクセスは、そのアクセスに対してアクセス例外が存在する場合には常に、又はそのアクセスに対するアクセス例外の優先順位より高い優先順位を有する例外が存在する場合には常に、禁止される。
チャネル・サブシステムについて、ストア・アクセスは、そのアクセスに対してキー制御保護違反が存在する場合には常に、禁止される。
【０２６０】
変更記録は、常にアクティブであり、いずれかのＣＰＵ（但し、本明細書で説明される、変更記録オーバーライドによって抑制される場合を除く）、いずれかのオペレータ・ファシリティ、又はチャネル・サブシステムによって行われるストア・アクセスを含む、ストレージへの全てのストア・アクセスに対して発生する。それは、マシンによって行われる暗黙的な参照、例えば割り込みの一部である参照に対して発生する。
【０２６１】
以下の命令のオペランドは、ストレージ位置を修正することなくストレージ・キーを直接修正するので、これらの命令のオペランドに対しては、変更記録は発生しない。
ＲＥＳＥＴ  ＲＥＦＥＲＥＮＣＥ  ＢＩＴ  ＥＸＴＥＮＤＥＤ
ＳＥＴ  ＳＴＯＲＡＧＥ  ＫＥＹ  ＥＸＴＥＮＤＥＤ（変更ビットは指定された値に設定される）
【０２６２】
０から１に変更された変更ビットは、ＣＰＵの再試行の際に必ずしも０に復旧される必要はない。
【０２６３】
変更記録オーバーライド（ＣＯ）
ストレージ・キーの変更ビットは、ストア・アクセスが対応するストレージ・ブロックの内容を変更させる都度、１に設定される。ストレージの内容を変更しないストア・アクセスは、変更ビットを１に設定する場合も、しない場合もある。アクセスが禁止されている場合にストアする試行については、変更ビットは１に設定されない。変更記録オーバーライドは、ストレージ・キーの変更ビットの設定をバイパスすることを可能にする。
【０２６４】
強化型ＤＡＴが適用され、且つＤＡＴテーブル・エントリによって仮想アドレスが変換される場合、セグメント・テーブル・エントリ及びページ・テーブル・エントリの両方のビット５５において変更記録オーバーライド（ＣＯ）が与えられる。セグメント・テーブル・エントリのＳＴＥフォーマット制御（ＦＣ）ビット５３が０である場合には、ページ・テーブル・エントリ内の変更記録オーバーライドが適用される。ＰＴＥ内の変更記録オーバーライドが０である場合には、４Ｋバイト・ブロックへのストア動作に対して、変更記録が発生する。変更記録オーバーライドが１である場合には、４Ｋバイト・ブロックへのストア動作に対して変更記録が発生するかどうかは予測不可能である。ＳＴＥフォーマット制御が１である場合には、ＳＴＥ内の変更記録オーバーライドが適用される。ＳＴＥ内の変更記録オーバーライドが０である場合には、セグメントの２５６個の４Ｋバイト・ブロックのうちのいずれかへのストア動作に対して、変更記録が発生する。ＳＴＥ内の変更記録オーバーライドが１である場合には、セグメントの２５６個の４Ｋバイト・ブロックのうちのいずれかに対して変更記録が発生するかどうかは予測不可能である。
【０２６５】
変更記録オーバーライドは、実アドレス若しくは絶対アドレスに対しては適用されず、又は、実空間指示によって変換される仮想アドレスに対しても適用されない。
【０２６６】
ここで、仮想アドレスの動的アドレス変換において用いられるセグメント・テーブル・エントリから変更記録オーバーライド・フィールドを取得する一実施形態の流れ図を示す、図１４を参照する。
【０２６７】
動的アドレス変換は、図８においてノード６１６のところまで説明されたように、変換に用いられるセグメント・テーブルからセグメント・テーブル・エントリがフェッチされた時点まで進行する。アドレス変換は、図１０においてノード８２２のところまで説明されたように、ストレージ又はメモリ内の所望のデータ・ブロックに対する絶対アドレスが取得されたところまで続行する。図１４のフローはノード８２２から開始する。
【０２６８】
１２１０において、変更記録オーバーライド（ＣＯ）フィールドが、変換に用いられるセグメント・テーブル・エントリから取得される。変更記録オーバーライドは、ストレージ・キーの変更ビットを上書きすることを可能にする。１２１２において、変換された仮想アドレスによってアドレス指定される所望のデータ・ブロックに対して行われるアクセスがストア・タイプ又はフェッチ・タイプのどちらであるかについての判定が行われる。アクセスがフェッチ・タイプの場合、１２１３において、変更ビットの設定は発生せず、変更記録オーバーライドは適用されない。アクセスがストア・タイプ動作であった場合、１２１４において、セグメント・テーブル・エントリ内の変更記録オーバーライドがイネーブルであるかどうかについての判定が行われる。１２１４において、変更記録オーバーライドがイネーブルではない場合、１２１８において、所望のブロックに関連付けられるストレージ・キーの変更ビットは１に設定される。１２１４において、変更記録オーバーライドがイネーブルである場合、１２１６において、関連付けられたストレージ・キーの変更ビットは設定されない。１２２０において、所望のデータ・ブロックが修正されたことが示される。
【０２６９】
別の実施形態において、強化型ＤＡＴが適用され、且つＳＴＥ内のフォーマット制御がイネーブルでない場合、ページ・テーブルの基点がセグメント・テーブル・エントリから取得される。仮想アドレスのページ・インデックス部分を用いて、ページ・テーブル内のページ・テーブル・エントリを参照する。主ストレージ内の小データ・ブロックのページ・フレーム実アドレス、及びページ変更オーバーライド・フィールドが、ページ・テーブル・エントリから取得される。小データ・ブロックの各々は、変更ビットを含む関連付けられたストレージ・キーを有する。小データ・ブロックは、大データ・ブロックよりサイズが小さく、４キロバイト（４０９６バイト）のデータ・ブロックから成る。主ストレージ内の所望の実データ・ブロックの変換されたアドレスは、ページ・フレーム実アドレスと仮想アドレスのバイト・インデックス部分との組み合わせを含む。所望のデータ・ブロックに対してストア・タイプ動作又はフェッチ・タイプ動作のどちらが行われたかについて判定が行われる。アクセス動作がフェッチ・タイプ動作であった場合、変更記録オーバーライドは適用されない。アクセスがストア・タイプ動作であった場合、仮想アドレスに関連付けられた変更記録オーバーライド・フィールドがディスエーブルであれば、所望の４Ｋブロックに関連付けられたストレージ・キーの変更ビットは１に設定される。所望の４Ｋブロックが修正されたことが示される。
【０２７０】
別の実施形態において、変更記録オーバーライド・フィールドがイネーブルであれば、所望の４Ｋブロックに関連付けられたストレージ・キーの変更ビットは、予測不可能である。
【０２７１】
商業的な実装
本明細書においてはＩＢＭ（登録商標）によるｚ／Ａｒｈｉｔｅｃｔｕｒｅについて述べているが、本発明の１つ又は複数の態様は、ページング可能なエンティティ又は同様の構成を使用する他のマシン・アーキテクチャ及び／又はコンピュータ環境に対しても同等に適用可能である。
【０２７２】
本明細書において開示されるｅＤＡＴファシリティ並びに他のフォーマット、命令及び属性の商業的な実施形態は、ハードウェア内に、又はオペレーティング・システム・プログラマのようなプログラマによって、例えば、アセンブリ言語で記述された状態で実装することができる。このようなプログラミング命令は、ＩＢＭ（登録商標）Ｓｙｓｔｅｍ  ｚ  ｓｅｒｖｅｒのようなコンピュータ環境において、又は代替的に他のアーキテクチャを実行するマシンにおいて、ネイティブに実行されることが意図されるストレージ媒体上にストアすることができる。命令は、既存の又は将来のＩＢＭ（登録商標）サーバにおいて、及び他のマシン又はメインフレーム上で、エミュレートすることができる。それらは、一般に実行がエミュレーション・モードであるマシンにおいて実行することができる。
【０２７３】
本発明の１つ又は複数の態様は、例えば、仮想機械エミュレーションに対しても同等に適用可能であり、そこでは、１つ又は複数のページング可能なエンティティ（例えば、ゲスト）を１つ又は複数のプロセッサ上で実行する。一例として、ページング可能なゲストは、その全体を引用によりここに組み入れる非特許文献２に記載されるＳｔａｒｔ  Ｉｎｔｅｒｐｒｅｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ（ＳＩＥ）アーキテクチャによって定義される。
【０２７４】
エミュレーション・モードにおいては、本明細書の記載を理解した後の当業者の技術範囲内にあるように、エミュレートされる特定の命令がデコードされ、サブルーチン又はドライバの場合のように個々の命令を実装するためにサブルーチンが実行され、又は特定のハードウェアのためのドライバを提供するために他の何らかの技術が用いられる。種々のソフトウェア及びハードウェア・エミュレーション技術は、その各々が引用によりここに組み入れられる特許文献１、特許文献２、特許文献３、特許文献４、特許文献５、及び特許文献６を含む、多数の米国特許に記載されている。他の多くの教示が、ターゲット・マシンのためのアーキテクチャ化された命令セットのエミュレーションを達成するための種々の手法をさらに説明している。
【０２７５】
他の変形及びアーキテクチャ
本明細書において説明された種々の実施形態は、単なる例である。これらの実施形態には、本発明の精神から逸脱することなく、多数の変形が存在し得る。本発明の１つ又は複数の能力は、ソフトウェア、ファームウェア、ハードウェア、又はその幾つかの組み合わせで実装することができる。本発明の態様は、複数のゾーンを有する他の環境、及びパーティション化されていない環境を含む、多くの種類の環境にとって有利である。さらに、中央処理装置の複合体は存在しないかもしれないが、それでも互いに結合された複数のプロセッサが存在する場合もある。本明細書における種々の態様は、単一プロセッサ環境に対して適用可能である。
【０２７６】
本明細書においては特定の環境が説明されているが、ここでもまた、本発明の精神から逸脱することなく、これらの環境の多数の変形を実装することができる。例えば、環境が論理パーティション化されている場合、より多数又はより少数の論理パーティションを環境に含めることができる。さらに、互いに結合された複数の中央処理装置複合体が存在し得る。これらは、本発明の精神から逸脱することなく行うことができる変形のごく一部である。付加的に、他の変形も可能である。
【０２７７】
「ページ」という用語は、固定されたサイズ又は所定サイズのストレージ・エリアを指すために用いられているが、ページのサイズは様々であり得る。同様に、ブロックのサイズは様々であり得る。異なるサイズのブロック及び／又はページが存在してもよい。ページはブロックと均等であり得る。他の構造を代替的に用いることができ、又は、ソフトウェア及び／又はハードウェアを通じて、他の形で実装することができる。さらに、本明細書において説明された例において、異なるサイズのワード又はアドレス、異なるビット数、異なる順序のビット、より多数の、より少数の、又は異なるビット、より多数の、より少数の、又は異なるフィールド、異なる順序のフィールド、異なるサイズのフィールドなどを含むがこれらに限定されない多数の変形が存在し得る。ここでもまた、それらは例としてのみ提供される。多数の変形が可能である。
【０２７８】
処理ユニットは、ゲスト、ホスト、他のプロセッサ、エミュレータ、仮想マシン、及び／又は他の同様の構造のようなページング可能なエンティティを含む。バッファは、ストレージ及び／又はメモリのエリア、並びに、アレイ又はページング可能なエンティティを含むがこれらに限定されない異なる種類のデータ構造を含む。テーブルも同様に他のデータ構造を含むことができる。命令は、他のレジスタを参照することができる。さらに、ページ、セグメント、及び／又は領域は、本明細書に記載されたものとは異なる種々のサイズとすることができる。
【０２７９】
本発明の１つ又は複数の態様は、例えば、コンピュータ使用可能又は機械可読媒体を有する製品（例えば、１つ又は複数のコンピュータ・プログラム製品）内に組み入れることができる。媒体は、例えば、本発明の能力を提供し、促進するためのコンピュータ可読プログラム・コード手段又は論理（例えば、命令、コード、コマンドなど）をその中に具体化する。製品は、コンピュータ・システムの一部として組み入れることもでき、又は単独で販売することもできる。さらに、機械によって読み出し可能であり、且つ、本発明の能力を実施するための、その機械によって実行可能な命令の少なくとも１つのプログラムを具体化する、少なくとも１つのプログラム・ストレージ・デバイスを提供することができる。
【０２８０】
本明細書において描かれた流れ図は例示的なものである。記載された図面又はステップ若しくは動作には、本発明の精神から逸脱することなく、多数の変形が存在し得る。例えば、ステップは違う順序で実施することができ、又はステップを追加、削除若しくは修正することができる。これらの変形の全ては、特許請求される本発明の一部であると見なされる。
【０２８１】
その実施形態を、本明細書において詳細に描写し、説明してきたが、本発明の精神から逸脱することなく、種々の修正、付加、置換などを行うことができること、従って、それらは添付の特許請求の範囲において定められる本発明の範囲内にあると見なされることが当業者には明らかである。
【図１】
0005602638.tif 000022
【図２】
0005602638.tif 000023
【図３】
0005602638.tif 000024
【図４】
0005602638.tif 000025
【図５】
0005602638.tif 000026
【図６】
0005602638.tif 000027
【図７】
0005602638.tif 000028
【図８】
0005602638.tif 000029
【図９】
0005602638.tif 000030
【図１０】
0005602638.tif 000031
【図１１】
0005602638.tif 000032
【図１２】
0005602638.tif 000033
【図１３】
0005602638.tif 000034
【図１４】
0005602638.tif 000035