JP4815539B2 - フレーム管理を有する動的アドレス変換 - Google Patents

フレーム管理を有する動的アドレス変換 Download PDF

Info

Publication number
JP4815539B2
JP4815539B2 JP2010541764A JP2010541764A JP4815539B2 JP 4815539 B2 JP4815539 B2 JP 4815539B2 JP 2010541764 A JP2010541764 A JP 2010541764A JP 2010541764 A JP2010541764 A JP 2010541764A JP 4815539 B2 JP4815539 B2 JP 4815539B2
Authority
JP
Japan
Prior art keywords
address
bit
storage
bits
region
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010541764A
Other languages
English (en)
Other versions
JP2011509471A (ja
Inventor
グライナー、ダン
ゲイニー、ジュニア、チャールズ
ヘラー、リサ
オシセック、ダミアン
スレゲル、ティモシー
シットマン、サード、グスタフ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2011509471A publication Critical patent/JP2011509471A/ja
Application granted granted Critical
Publication of JP4815539B2 publication Critical patent/JP4815539B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Machine Translation (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)

Description

本発明は、一般に、コンピュータ・システムにおいて仮想アドレスを変換するためのシステム及び方法に関し、より具体的には、仮想アドレス変換が可能なコンピュータ・システムにおいて、フレーム管理機能を実施するシステム及び方法に関する。
動的アドレス変換は、任意の瞬間にプログラムの実行への割り込みを行い、そのプログラム及びそのプログラムのデータを直接アクセス・ストレージ・デバイスなどの補助ストレージに記録し、後の時点で、プログラム及びデータを異なる主ストレージ位置に戻して実行を再開する能力を提供する。主ストレージと補助ストレージとの間のプログラム及びデータの転送は断片的に行うことができ、主ストレージへの情報のリターンは、その情報が実行のために必要になった時点でCPUによるアクセスの試行に応答して行われるものとすることができる。これらの機能は、プログラム及びそのデータを変更又は検査することなく実施することができ、再配置されたプログラムにおけるいかなる明示的なプログラミング規則も必要とせず、時間的遅延が伴うことを除いて、プログラムの実行を妨げない。
オペレーティング・システムによる適切なサポートがあれば、動的アドレス変換ファシリティを用いて、ユーザに、ストレージがその構成において利用可能な主ストレージより大きく見えるようなシステムを提供することができる。この見かけの主ストレージは、しばしば仮想ストレージと呼ばれ、仮想ストレージ内の位置を指定するために用いられるアドレスは、しばしば仮想アドレスと呼ばれる。ユーザの仮想ストレージは、その構成において利用可能な主ストレージのサイズを遥かに超過することができ、通常は補助ストレージ内で維持される。仮想ストレージは、一般にページと呼ばれる(セグメント及び領域とも呼ばれる)データのブロックで構成されるものと見なされる。仮想ストレージのうち、直前に参照されたページのみが、物理的主ストレージのブロックを占有するように割り当てられる。ユーザが、主ストレージに現れていない仮想ストレージのページを参照する際には、それらのページを取り込んで、必要とされる可能性の低い主ストレージ内のページを置き換える。幾つかの場合には、仮想ストレージは、ストレージが参照されるかどうかに関わりなく、長期間にわたって(又は永続的に)主ストレージに割り当てられる。ストレージのページのスワッピングは、オペレーティング・システムによって、ユーザが知ることなく行われる。
プログラムは、アドレス(又は仮想アドレス)を用いて仮想ストレージにアクセスする。プログラムは仮想アドレスを用いて、仮想ストレージから命令をフェッチすることができ、又は仮想ストレージからデータをロードするか若しくはデータをストアすることができる。ある範囲の仮想ストレージに関連付けられた仮想アドレスが、アドレス空間を定める。オペレーティング・システムによる適切なサポートがあれば、動的アドレス変換ファシリティを用いて、多数のアドレス空間を提供することができる。これらのアドレス空間を用いて、ユーザ間に様々な度合いの分離を提供することができる。このようなサポートは、ユーザごとに完全に異なるアドレス空間から成ることによって完全な分離を提供することもでき、又は各アドレス空間の一部を単一の共通ストレージ領域にマッピングすることによって共有エリアを提供することもできる。また、半特権的プログラムが1つより多くのこのようなアドレス空間にアクセスすることを許可する命令も、提供される。
動的アドレス変換は、多数の異なるアドレス空間からの仮想アドレスの変換を規定する。これらのアドレス空間は、一次アドレス空間、二次アドレス空間、及びアクセス・レジスタ指定アドレス空間と呼ばれる。特権的プログラムは、アクセスすべきホーム・アドレス空間を生じさせることもできる。動的アドレス変換は、CPUによって生成された命令及びデータ・アドレスに対して指定することができる。
当該技術分野において今まで知られていない更なる機能、能力、及び保護を提供する、強化された動的アドレス変換ファシリティが必要とされている。
米国特許第5,551,013号 米国特許第5,574,873号 米国特許第5,790,825号 米国特許第6,009,261号 米国特許第6,308,255号 米国特許第6,463,582号
「z/Architecture(登録商標) Principles of Operation」、IBM(登録商標)刊行番号SA22−7832−05、第6版、2007年4月 「IBM(登録商標)System/370 Extended Architecture」、IBM(登録商標)刊行番号SA22−7095、1985年
仮想アドレスを主ストレージ又はメモリのブロック・データの実アドレス又は絶対アドレスに変換するために用いられる変換テーブル階層構造を有するコンピュータ・システムのマシン・アーキテクチャのために定義された、セット・キー及びクリア・フレーム管理機能が提供される。実アドレスにプリフィックス付加を行って、絶対アドレスを形成することができる。
1つの例示的な実施形態において、第1汎用レジスタを識別する第1フィールドと第2汎用レジスタを識別する第2フィールドとを有するフレーム管理命令のためのオペコードを含む、マシン命令が取得される。第1汎用レジスタのために、複数のアクセス保護ビットとブロックサイズ・インジケータ・フィールドとを有するキー・フィールドを備えた、フレーム管理フィールドが取得される。マシン命令がその上で実施されるストレージ・フレームのオペランド・アドレスが、第2汎用レジスタから取得される。オペランド・アドレスは、大データ・ブロックに対する絶対アドレス又は小データ・ブロックに対する実アドレスのいずれかである。セット・ストレージ・キー機能がイネーブルであれば、決定されたデータ・ブロックに関連付けられた各ストレージ・キーのストレージ・アクセス保護ビットは、キー・フィールドのアクセス保護ビットの値に設定される。クリア機能がイネーブルであれば、オペランド・アドレスによってアドレス指定された各データ・ブロックは、各データ・ブロックの全てのバイトを0に設定することによって、クリアされる。
別の実施形態において、ストレージ・キーは、ストレージ保護ビット、ストレージ参照ビット、及びストレージ変更ビットを有する。キー・フィールドは、フェッチ保護ビット、参照ビット、及び変更ビットを有する。大データ・ブロックは、小データ・ブロックよりも大きい。小データ・ブロックのために、複数のストレージ・アクセス保護ビットを備えたストレージ・キーを有する小データ・ブロックのオペランド・アドレスが、第2汎用レジスタから取得される。キー・フィールドのアクセス保護ビットが、ストレージ・キーのストレージ・アクセス保護ビットの中に設定される。
本発明は、次に、特定の例示的な実施形態との関連で説明される。当業者であれば本発明の精神及び範囲から逸脱することなく種々の変更及び修正を行うことが可能であることを理解されたい。
添付の図面において、同一又は機能的に類似の要素には別々の図の全体を通じて同様の参照符号が付されており、これらの図面は以下の詳細な説明と共に本明細書に組み入れられ、その一部を形成するものであり、種々の実施形態をさらに例証し、且つ、全て本発明に従う種々の原理及び利点を説明する役割を果たす。本明細書に開示される主題の前述及び他の特徴並びに利点は、以下の詳細な説明を添付の図面と組み合わせることで明らかとなる。
強化型動的アドレス変換を実施することができるホスト・コンピュータ・システムの一実施形態を示す。 ホスト・アーキテクチャのホスト・コンピュータ・システムをエミュレートする、エミュレートされたホスト・コンピュータ・システムの一例を示す。 プログラム・ステータス・ワードを用いて仮想アドレスの動的アドレス変換のための実効ASCEを判定する手法の一実施形態を示す。 図3において判定された実効ASCEを用いて、仮想アドレスの変換に用いられる変換テーブル階層構造の中で最も高位の変換テーブルを判定する一実施形態を示す。 変換テーブル階層構造をセグメント・テーブル・レベルまで用いて仮想アドレスを動的アドレス変換するプロセスの一実施形態を示す。 セグメント・テーブル・エントリ(STE)フォーマット制御(FC)が0である場合の、図5の動的アドレス変換の続きを示す。 セグメント・テーブル・エントリ(STE)フォーマット制御(FC)が1である場合の、図5の動的アドレス変換の続きを示す。 セグメント・テーブル・エントリ内のフォーマット制御フィールドを取得するための強化型(enhanced)動的アドレス変換(eDAT)の一実施形態の流れ図を示す。 図8のノード614からの流れ図の続きを示す。 図8のノード616からの流れ図の続きを示す。 示されたストレージ・キーが設定される、実施フレーム管理機能(PFMF)の一実施形態の流れ図を示す。 示されたフレームがクリアされる、実施フレーム管理機能(PFMF)の一実施形態の流れ図を示す。
本出願の明細書における記述は、特許請求される種々の発明いずれをも必ずしも限定するものではないことを理解されたい。さらに、幾つかの記述は、幾つかの発明の特徴に当てはまることがあるが、他の発明の特徴には当てはまらないこともある。特に断りのない限り、単数形の要素は、一般性を失うことなく、複数形の場合もあり、その逆もまた真である。
当業者であれば、コンピュータ環境内のストレージに対してアドレス指定すること、及び、様々な状態及びそれらの状態上での動作を示すためにレジスタ又はアドレス・フィールド内のビットを使用することに容易に精通するはずである。さらに、当業者であれば、コンピュータ・プログラム分野の知識を有し、かつ、コンピュータ・システムのコンポーネント間の働き及び相互関係についての知識を有しているはずである。
概要
強化型動的アドレス変換(DAT)ファシリティの例示的な実施形態が提供される。強化型DATファシリティがインストールされており、且つイネーブルである場合、DAT変換は、ページ・フレーム実アドレス、又はセグメント・テーブル・エントリ内のセグメント・テーブル・エントリ(STE)フォーマット制御によって決定されるセグメント・フレーム絶対アドレスを生成することができる。本明細書において用いられる「強化型DATを適用する」という用語は、以下の全てが真であることを意味する。即ち、1)EDATファシリティがインストールされており、2)EDATファシリティが制御レジスタ0(CR0)ビット40を通じてイネーブルになっており、且つ3)アドレスはDATテーブル・エントリによって変換される。
強化型DATを適用する場合、DATプロセスにおいて以下の追加機能が利用可能である。即ち、
DAT保護ビットが領域テーブル・エントリに追加され、セグメント・テーブル・エントリ及びページ・テーブル・エントリ内のDAT保護ビットと同様の機能を与える。
STEフォーマット制御がセグメント・テーブル・エントリに追加される。STEフォーマット制御が0である場合、DATは、そのページに対する変更ビットの設定がバイパスされるかどうかをページ・テーブル・エントリ内の変更記録オーバーライドが示すこと以外は、現在定められている通りに進行する。
STEフォーマット制御が1である場合、セグメント・テーブル・エントリは、さらに以下を含む。即ち、
1メガバイト・ブロックの絶対ストレージ位置を指定するセグメント・フレーム絶対アドレス(ページ・テーブル基点ではなく)。
セグメントの個々のストレージ・キーの中の対応するビットの代わりに随意的に用いることができる、アクセス制御ビット及びフェッチ保護ビット。
セグメント・テーブル・エントリ内のアクセス制御ビット及びフェッチ保護ビットの妥当性を決定するビット。
セグメントの個々のストレージ・キーにおいて変更ビットの設定をバイパスすることができるかどうかを示す、変更記録オーバーライド。
ホスト・コンピュータ・システム
図1を参照すると、ホスト・コンピュータ・システム100の代表的なコンポーネントが描かれている。他のコンポーネント構成をコンピュータ・システムにおいて用いることもでき、これは当該技術分野において周知である。
ホスト・コンピュータ環境は、ニューヨーク州Armonk所在のInternational Business Machines Corporation(IBM(登録商標))により提供される、z/Architecture(登録商標)に基づくものであることが好ましい。z/Architecture(登録商標)は、引用によりその全体をここに組み入れる非特許文献1に、より詳細に記載されている。z/Architecture(登録商標)に基づくコンピュータ環境は、例えば、共にIBM(登録商標)によるeServer及びzSeries(登録商標)を含む。
代表的なホスト・コンピュータ100は、1つ又は複数のCPU101を含み、これは、主ストア(コンピュータ・メモリ102)、並びに、ストレージ・デバイス111に対するI/Oインターフェース、及び他のコンピュータ又はストレージ・エリア・ネットワーク(SAN)などとの通信のためのネットワーク110に対するI/Oインターフェースと通信する。CPUは、プログラム・アドレス(仮想アドレス)をメモリの実アドレスに変換するための動的アドレス変換(DAT)ファシリティ(機能又はユニット)103を含む。DATファシリティは、典型的には、後でコンピュータ・メモリ102のブロックにアクセスしたときにアドレス変換による遅延を必要とせずに済むように変換をキャッシュに入れるための、変換ルックアサイド・バッファ107を含む。典型的には、キャッシュ109は、コンピュータ・メモリ102とプロセッサ101との間で用いられる。キャッシュ109は、1つより多くのCPUが利用できる大型キャッシュと、大型キャッシュと各CPUとの間のより小型でより高速な(下位レベルの)キャッシュとを有する階層構造とすることができる。幾つかの実装において、下位レベルのキャッシュは、命令のフェッチ及びデータ・アクセスのための個別の低レベルキャッシュを提供するように分割される。一実施形態において、命令は、命令フェッチ・ユニット104によりメモリ102からキャッシュ109を経由してフェッチされる。命令は、命令デコード・ユニット(106)内でデコードされ、(幾つかの実施形態においては他の命令と共に)命令実行ユニット108へディスパッチされる。典型的にはいくつかの実行ユニット108、例えば、算術演算実行ユニット、浮動小数点実行ユニット、及び分岐命令実行ユニットが用いられる。命令は、実行ユニットにより、必要に応じて命令が指定するレジスタ又はメモリからのオペランドにアクセスしながら実行される。オペランドがメモリ102からアクセスされる(ロードされる又はストアされる)場合には、典型的には、ロード・ストア・ユニット105が、実行されている命令の制御下でアクセスを取り扱う。
一実施形態において、本発明は、ソフトウェア(ライセンス内部コード(LIC)、ファームウェア、マイクロ・コード、ミリ・コード、ピコ・コードなどと呼ばれる場合もあるが、そのいずれも本発明と整合性がある)により実施することができる。本発明を具体化するソフトウェア・プログラム・コードは、典型的には、コンピュータ・システム100のCPU(中央演算処理装置)101としても知られるプロセッサにより、CD‐ROMドライブ、テープ・ドライブ又はハード・ドライブといった長期ストレージ媒体111からアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ又はCD‐ROMといった、データ処理システムと共に使用するための種々の公知の媒体のいずれかの上で具体化することができる。コードは、そのような媒体上で配布することができ、又は1つのコンピュータ・システムのコンピュータ・メモリ102若しくはストレージから、他のシステムのユーザが使用するために、ネットワーク110を介してそのような他のコンピュータ・システムに配布することができる。
あるいは、プログラム・コードをメモリ102内で具体化し、プロセッサ・バスを用いてプロセッサ101によってアクセスすることができる。このようなプログラム・コードは、種々のコンピュータ・コンポーネント及び1つ又は複数のアプリケーション・プログラムの機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、高密度ストレージ媒体111から高速メモリ102にページングされ、そこでプロセッサ101による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理媒体上で具体化し、及び/又はネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、作成され、有形の媒体(電子メモリ・モジュール(RAM)、フラッシュメモリ、コンパクトディスク(CD)、DVD、磁気テープなどを含むがこれらに限定されない)に格納された場合には、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品媒体は、典型的には、処理回路によって実行されるために、好ましくはコンピュータ・システム内にある処理回路によって読み出し可能である。
図2に、ホスト・アーキテクチャのホスト・コンピュータ・システム100をエミュレートする、エミュレートされたホスト・コンピュータ・システム201の一例を示す。エミュレートされたホスト・コンピュータ・システム201において、ホスト・プロセッサ(CPU)208は、エミュレートされたホスト・プロセッサ(又は仮想ホスト・プロセッサ)であり、ホスト・コンピュータ100のプロセッサ101によって用いられるものとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ207を備える。エミュレートされたホスト・コンピュータ・システム201は、エミュレーション・プロセッサ207によってアクセス可能なメモリ202を有する。例示的な実施形態において、メモリ202は、ホスト・コンピュータ・メモリ102部分と、エミュレーション・ルーチン203部分(エミュレーションを提供するルーチンはホスト・メモリの一部とすることができる)とのパーティションに分けられている。ホスト・コンピュータ・メモリ102は、ホスト・コンピュータ・アーキテクチャに従い、エミュレートされたホスト・コンピュータ・システム201のプログラムによって利用可能である。エミュレーション・プロセッサ207は、エミュレートされたプロセッサ208のアーキテクチャ以外のアーキテクチャのアーキテクチャ化された(architected)命令セットのネイティブ命令を実行し、このネイティブ命令はエミュレーション・ルーチン・メモリ203から取得されたものであり、且つ、エミュレーション・プロセッサ207は、シーケンス及びアクセス/デコード・ルーチンにおいて取得される1つ又は複数の命令を用いることによって、ホスト・コンピュータ・メモリ102の中のプログラム由来の実行のためのホスト命令にアクセスすることができ、このシーケンス及びアクセス/デコード・ルーチンは、アクセスされたホスト命令をデコードして、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判定することができる。
ホスト・コンピュータ・システム100アーキテクチャのために定義された、例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、並びにI/Oサブシステム・サポート及びプロセッサ・キャッシュといったファシリティを含む他のファシリティを、アーキテクチャ化ファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を高めるために、エミュレーション・プロセッサ207において利用可能な(汎用レジスタ、及び仮想アドレスの動的変換といった)ファシリティを利用することもできる。ホスト・コンピュータ100の機能をエミュレートする際にプロセッサ207を補助するために、特殊ハードウェア及びオフ・ロード・エンジンを設けることもできる。
コンピュータ・プロセッサ及びレジスタ
一実施形態において、CPUのプログラム命令機能は、通信バスを介して複数のレジスタと通信する。通信バスは、CPUの内部にあっても、又は外部にあってもよい。いくつかのレジスタは読み出し専用とすることができる。他のハードウェア及び/又はソフトウェアも、CPUによってアクセス可能な1つ又は複数のレジスタを読み出す/書き込むことができる。命令動作コード(オペコード)が、いずれかの特定のマシン命令動作において、どのタイプのレジスタが用いられるかを決定する。
汎用レジスタ
命令は、16個の汎用レジスタのうちの1つ又は複数の中の情報を指示することができる。汎用レジスタは、アドレス算術演算におけるベース・アドレス・レジスタ及びインデックス・レジスタとして用いることができ、且つ、一般算術演算及び論理演算におけるアキュムレータとして用いることができる。各レジスタは、64個のビット位置を含む。汎用レジスタは、番号0−15によって識別され、命令内の4ビットのRフィールドによって指示される。ある命令は、数個のRフィールドを有することによって、複数の汎用レジスタをアドレス指定することを規定する。命令によっては、特定の汎用レジスタの使用は、命令のRフィールドによって明示的に指示されるのではなく暗黙的であることもある。
演算によっては、2つの隣接する汎用レジスタのビット32−63又は0−63のいずれかを結合して、それぞれ、64ビット又は128ビット形式を提供する場合もある。これらの演算においては、プログラムは、最左端(高位)の32ビット又は64ビットを含む偶数番号のレジスタを指示しなければならない。次に高位の番号のレジスタは最右端(低位)の32ビット又は64ビットを含む。一般算術演算及び論理演算におけるアキュムレータとしての使用に加えて、16個の汎用レジスタのうちの15個は、アドレス生成におけるベース・アドレス及びインデックス・レジスタとして用いることもできる。これらの場合において、レジスタは、命令内の4ビットのBフィールド又はXフィールドによって指示される。B又はXフィールドにおける0の値は、適用されるべきベース又はインデックスが存在しないことを指定し、従って、汎用レジスタ0を、ベース・アドレス又はインデックスを含むものとして指示することはできない。
制御レジスタ
制御レジスタは、プログラム・ステータス・ワードの外部での制御情報の保持及び操作を規定する。CPUは、各々が64のビット位置を有する16個の制御レジスタを有する。レジスタ内のビット位置は、プログラム・イベント記録のようなシステム内の特定のファシリティに割り当てられ、ある演算を行うことができることを指定すること、又はそのファシリティが要求する特別な情報を供給することのどちらかのために用いられる。制御レジスタは、番号0−15によって識別され、LOAD CONTROL命令及びSTORE CONTROL命令内の4ビットのRフィールドによって指示される。複数の制御レジスタを、これらの命令によってアドレス指定することが可能である。
制御レジスタ1
制御レジスタ1は、一次アドレス空間制御要素(PASCE)を含む。一実施形態において、制御レジスタ1は、レジスタ内の実空間制御ビット(R)に応じて、以下の2つのフォーマットのうちの1つを有する。
Figure 0004815539
一次アドレス空間制御要素(PASCE)内の選択されたフィールドは、以下のように割り振られる。
一次領域テーブル又はセグメント・テーブル基点:制御レジスタ1の中の一次領域テーブル又はセグメント・テーブル指示のビット0−51は、右に12個の0が付加されると、一次領域テーブル又はセグメント・テーブルの開始位置を指示する64ビット・アドレスを形成する。このアドレスが実であるか絶対であるかは予測不可能である。このテーブルは、一次アドレス空間における仮想アドレスを変換するために用いられるので、一次領域テーブル又はセグメント・テーブルと呼ばれる。
一次実空間制御(R):制御レジスタ1のビット58が0であれば、レジスタは領域テーブル又はセグメント・テーブル指示を含む。ビット58が1であれば、レジスタは実空間指示を含む。ビット58が1である場合、セグメント・テーブル・エントリの変換ルックアサイド・バッファ表示内の共通セグメント・ビットの値1は、制御レジスタ1の中のトークン基点と変換ルックアサイド・バッファ・エントリの中のテーブル基点との間に一致が存在したとしても、一次アドレス空間への参照を変換するときにエントリ及びそれが指示する変換ルックアサイド・バッファ・ページ・テーブル・コピーが用いられることを防止する。
一次指示タイプ制御(DT):Rが0である場合、制御レジスタ1の中のテーブル指示タイプは、レジスタ内のビット60及び61によって以下のように指定される。
Figure 0004815539
Rが0である場合、最左端の1ビットがアドレスのビット位置0−10にある仮想アドレスを変換するためにPASCEの使用が試行される場合には、ビット60及び61は二進数字11でなければならない。同様に、最左端の1ビットがアドレスのビット位置11−21にある場合には、ビット60及び61は二進数字11又は10でなければならず、最左端の1ビットがアドレスのビット位置22−32にある場合には、二進数字11、10、又は01でなければならない。それ以外の場合には、ASCEタイプ例外が認識される。
一次領域テーブル又はセグメント・テーブル長(TL):制御レジスタ1の中の一次領域テーブル指示又はセグメント・テーブル指示のビット62及び63は、一次領域テーブル又はセグメント・テーブルの長さを4,096バイトの単位で指定し、従って、領域テーブル又はセグメント・テーブルの長さを512エントリの倍数として可変にする。一次領域テーブル又はセグメント・テーブルの長さは、4,096バイト単位で、TLの値より1多い。長さフィールドの内容は、そのテーブルによって変換されるべき仮想アドレスの一部(RFX、RSX、RTX、又はSX)が、そのテーブルの範囲内にあるエントリを指示しているかどうかを確立するために用いられる。
一次実空間トークン基点:制御レジスタ1の中の一次実空間のビット0−51は、右に12個の0が付加されると、64ビットのアドレスを形成し、このアドレスは、一次アドレス空間の参照のための仮想と実が等しい変換(virtual equals real translation)を提供する変換ルックアサイド・バッファ・エントリの形成及び使用の際に用いることができる。このアドレスはトークンとしてのみ用いられるものであり、ストレージ参照を実施するために用いられるものではないが、それでもなお、有効なアドレスでなければならない。そうでなければ、制御レジスタ1の内容が用いられるときに、正しくない変換ルックアサイド・バッファ・エントリが用いられることがある。
制御レジスタ1の以下のビット、即ち、レジスタが領域テーブル指示又はセグメント・テーブル指示を含む場合のビット52、53及び59、レジスタが実空間指示を含む場合のビット52、53及び59−63は、割り当てられず、無視される。
制御レジスタ7
制御レジスタ7は、二次アドレス空間制御要素(SASCE)を含む。一実施形態において、制御レジスタ7は、レジスタ内の実空間制御ビット(R)に応じて、以下の2つのフォーマットのうちの1つを有する。即ち、
Figure 0004815539
制御レジスタ13
制御レジスタ13は、ホーム・アドレス空間制御要素(HASCE)を含む。一実施形態において、制御レジスタ13は、レジスタ内の実空間制御ビット(R)に応じて、以下の2つのフォーマットのうちの1つを有する。即ち、
Figure 0004815539
アクセス・レジスタ
CPUは、0−15の番号を与えられた16個のアクセス・レジスタを有する。アクセス・レジスタは、ASCEの間接的な指定を含む32個のビット位置から成る。ASCEは、動的アドレス変換(DAT)機構によって、対応するアドレス空間に対する参照を変換するために用いられるパラメータである。CPUがアクセス・レジスタ・モードと呼ばれるモード(プログラム・ステータス・ワード内のビットによって制御される)にある場合、ストレージ・オペランド参照のための論理アドレスを指定するために用いられる命令Bフィールドがアクセス・レジスタを指示し、そのアクセス・レジスタによって指定されるASCEが、DATによって、行われている参照のために用いられる。命令によっては、Bフィールドの代わりにRフィールドが用いられることもある。アクセス・レジスタの内容をロード及びストアするための命令、並びに1つのアクセス・レジスタの内容を別のアクセス・レジスタに移動するための命令が与えられる。
アクセス・レジスタ1−15の各々は、現在の命令空間(一次アドレス空間)を含めた任意のアドレス空間を指示することができる。アクセス・レジスタ0は、一次アドレス空間を指示する。アクセス・レジスタ1−15のうちの1つがアドレス空間を指示するために用いられている場合、CPUは、そのアクセス・レジスタの内容を変換することによって、どのアドレス空間が指示されているかを判定する。アクセス・レジスタ0がアドレス空間を指示するために用いられる場合、CPUは、そのアクセス・レジスタが一次命令空間を指示するものとして扱い、アクセス・レジスタの実際の内容は検査しない。従って、16個のアクセス・レジスタは、任意の一時点に、一次命令空間と、最大で15個の他の空間とを指示することができる。
プログラム・ステータス・ワード(PSW)
プログラム・ステータス・ワードは、命令アドレスと、条件コードと、命令の順序付けを制御し、CPUの状態を決定するために用いられる他の情報とを含む。アクティブな又は制御中のプログラム・ステータス・ワードは、カレント・プログラム・ステータス・ワードと呼ばれる。これは、現在実行されているプログラムを支配する。
CPUは割り込み能力を有し、これにより、CPUを例外条件及び外部刺激に応答して別のプログラムに迅速に切り替えることが可能になる。割り込みが発生すると、CPUは、カレント・プログラム・ステータス・ワードを、古いプログラム・ステータス・ワード位置と呼ばれる、特定の割り込みのクラス毎に割り当てられたストレージ位置に置く。CPUは、第2の割り当てられたストレージ位置から新たなプログラム・ステータス・ワードをフェッチする。この新たなプログラム・ステータス・ワードが、次に実行されるプログラムを決定する。割り込みの処理が終了すると、割り込みを扱うプログラムは、割り込まれたプログラムが続行できるように、古いプログラム・ステータス・ワードをリロードして、それを再びカレント・プログラム・ステータス・ワードとすることができる。
割り込みには、外部、I/O、マシン・チェック、プログラム、再起動、及びスーパーバイザー・コールの6つのクラスがある。各クラスは、実ストレージに永続的に割り当てられた、古いプログラム・ステータス・ワード位置と新しいプログラム・ステータス・ワード位置との別個のペアを有する。
カレント・プログラム・ステータス・ワード
CPU内のカレント・プログラム・ステータス・ワードは、現在アクティブなプログラムの実行に必要な情報を含む。プログラム・ステータス・ワードは、128ビット長であり、命令アドレス、条件コード、及び他の制御フィールドを含む。一般に、プログラム・ステータス・ワードは、命令の順序付けを制御し、CPUの状態のうちの多くを、現在実行中のプログラムとの関係で保持及び表示するために用いられる。付加的な制御及び状態情報は、制御レジスタ及び永続的に割り当てられたストレージ位置に含まれる。CPUの状態は、新たなプログラム・ステータス・ワード又はプログラム・ステータス・ワードの一部をロードすることによって変更することができる。
CPUの割り込み中に、CPUの状態を保存するためにカレント・プログラム・ステータス・ワードをストアし、次いで新たなプログラム・ステータス・ワードをロードすることによって、制御が切り替えられる。LOAD PSW又はLOAD PSW EXTENDEDの実行、又は初期プログラム・ロード・シーケンスの終結の成功により、新たなプログラム・ステータス・ワードが導入される。命令アドレスは、逐次的な命令実行によって更新され、成功した分岐によって置換される。プログラム・ステータス・ワードの一部の上で動作する他の命令が与えられる。
プログラム・ステータス・ワードを変更する命令の割り込み又は実行が完了すると、新たな又は修正されたプログラム・ステータス・ワードがアクティブになる(即ち、カレント・プログラム・ステータス・ワードに導入された情報がCPUに対する制御を担う)。プログラム・ステータス・ワードを変更する命令に関連するプログラム・イベント記録(PER)のための割り込みは、その動作の開始時に有効なPERマスクの制御下で生じる。プログラム・ステータス・ワードのビット0−7は集合的にシステム・マスクと呼ばれる。一実施形態において、プログラム・ステータス・ワードは以下のフォーマットを有する。
Figure 0004815539
以下は選択されたプログラム・ステータス・ワードフィールドの機能の概要である。
DATモード(T):ビット5は、ストレージにアクセスするために用いられる論理アドレス及び命令アドレスの暗黙的な動的アドレス変換が行われるかどうかを制御する。ビット5が0である場合には、DATはオフであり、論理アドレス及び命令アドレスは実アドレスとして扱われる。ビット5が1である場合には、DATはオンであり、動的アドレス変換機構が起動される。
PSWキー:ビット8−11は、CPUによるストレージ参照のためのアクセス・キーを形成する。参照がキー制御保護を受ける場合は、情報がストアされるとき又は情報がフェッチに対して保護されている位置からフェッチされるときに、PSWキーは、ストレージ・キーと照合される。しかし、MOVE TO PRIMARY、MOVE TO SECONDARY、MOVE WITH KEY、MOVE WITH SOURCE KEY、及びMOVE WITH DESTINATION KEYの各々のオペランドのうちの1つについては、オペランドとして指定されるアクセス・キーがPSWキーの代わりに用いられる。
アドレス空間制御(AS):ビット16及び17は、プログラム・ステータス・ワードのビット5と共に、変換モードを制御する。
条件コード(CC):ビット18及び19は2ビットの条件コードである。条件コードは、特定の命令の実行で得られた結果に応じて、0、1、2、又は3に設定される。ほとんどの算術演算及び論理演算、並びに幾つかの他の演算は、条件コードを設定する。BRANCH ON CONDITION命令は、分岐のための基準として、条件コード値のいずれかの選択を指定することができる。
命令アドレス:プログラム・ステータス・ワードのビット64−127は、命令アドレスである。このアドレスは、CPUが待機状態(プログラム・ステータス・ワードのビット14が1)でない限り、次に実行される命令の最左端のバイトの位置を指示する。
アドレスのタイプ及びフォーマット
主ストレージをアドレス指定するために、絶対、実、及び仮想の3つの基本的なアドレスのタイプが認識される。アドレスは、ストレージ・アクセスの間にアドレスに適用される変形に基づいて区別される。アドレス変換は、仮想アドレスを実アドレスに変換する。プリフィックス付加は、実アドレスを絶対アドレスに変換する。3つの基本的なアドレス・タイプに加えて、命令及びカレント・モードに応じて、3つの基本的なタイプのうちの1つ又は他の1つとして扱われる付加的なタイプが定義される。
絶対アドレス
絶対アドレスは、主ストレージ位置に割り当てられたアドレスである。絶対アドレスは、いかなる変形も行われることなく、ストレージ・アクセスのために用いられる。構成内のチャネル・サブシステム及び全てのCPUは、同じ絶対アドレスを用いることによっで、共有された主ストレージ位置を参照する。利用可能な主ストレージには、通常、0から始まる連続した絶対アドレスが割り当てられ、このアドレスは整数の境界上の完全な4キロバイトのブロックで割り当てられる。物理位置に割り当てられていないブロック内の絶対アドレスを用いようとする試行が行われた場合、例外が認識される。幾つかのモデルでは、オペレータが絶対アドレスと物理位置との間の対応を変更することを許可する、ストレージ再構成制御が提供されることがある。しかし、どの時点であっても、1つの物理位置に1つより多くの絶対アドレスが割り当てられることはない。その絶対アドレスに従って配列されたバイト位置から成るストレージを、絶対ストレージと呼ぶ。
実アドレス
実アドレスは、実ストレージにおける位置を特定する。主ストレージへのアクセスのために実アドレスが用いられる場合には、実アドレスをプリフィックス付加によって変換して、絶対アドレスが形成される。任意の一瞬において、構成内のCPUごとに、実アドレスから絶対アドレスへのマッピングが1つ存在する。実アドレスが、CPUによって主ストレージにアクセスするために用いられる場合には、実アドレスをプリフィックス付加によって絶対アドレスに変換することができる。具体的な変形は、そのCPUのためのプリフィックス・レジスタ内の値によって定められる。その実アドレスに従って配列されたバイト位置から成るストレージを、実ストレージと呼ぶ。
仮想アドレス
仮想アドレスは、仮想ストレージにおける位置を特定する。主ストレージへのアクセスのために仮想アドレスが用いられる場合には、仮想アドレスは、動的アドレス変換によって、プリフィックス付加を行うと絶対アドレスを形成することができる実アドレスに変換されるか、又は直接、絶対アドレスに変換されるかのいずれかである。
一次仮想アドレス
一次仮想アドレスは、一次アドレス空間制御要素(PASCE)によって変換されるべき仮想アドレスである。論理アドレスは、一次空間モードにある場合に一次仮想アドレスとして扱われる。命令アドレスは、一次空間モード、二次空間モード、又はアクセス・レジスタ・モードにある場合に一次仮想アドレスとして扱われる。MOVE TO PRIMARYの第1オペランド・アドレス、及びMOVE TO SECONDARYの第2オペランド・アドレスは、一次仮想アドレスとして扱われる。
二次仮想アドレス
二次仮想アドレスは、二次アドレス空間制御要素(SASCE)によって変換されるべき仮想アドレスである。論理アドレスは、二次空間モードにある場合に二次仮想アドレスとして扱われる。MOVE TO PRIMARYの第2オペランド・アドレス、及びMOVE TO SECONDARYの第1オペランド・アドレスは、二次仮想アドレスとして扱われる。
AR指定仮想アドレス
AR指定仮想アドレスは、アクセス・レジスタ指定アドレス空間制御要素によって変換されるべき仮想アドレスである。論理アドレスは、アクセス・レジスタ・モードにある場合にAR指定仮想アドレスとして扱われる。
ホーム仮想アドレス
ホーム指定仮想アドレスは、ホーム・アドレス空間制御要素(HASCE)によって変換されるべき仮想アドレスである。論理アドレス及び命令アドレスは、ホーム空間モードにある場合にホーム仮想アドレスとして扱われる。
命令アドレス
ストレージから命令をフェッチするために用いられるアドレスは、命令アドレスと呼ばれる。命令アドレスは、実モードにあるときには実アドレスとして扱われ、一次空間モード、二次空間モード、又はアクセス・レジスタ・モードにあるときには一次仮想アドレスとして扱われ、ホーム空間モードにあるときにはホーム仮想アドレスとして扱われる。カレント・プログラム・ステータス・ワード内の命令アドレス、及びEXECUTEのターゲット・アドレスは、命令アドレスである。
実効アドレス
ある状況においては、「実効アドレス」という用語を用いることが便利である。実効アドレスは、動的アドレス変換又はプリフィックス付加によるいずれかの変形が行われる前に存在するアドレスである。実効アドレスは、レジスタ内において直接指定されることもあり、又はアドレス算術演算の結果であることもある。アドレス算術演算は、ベースと変位との加算、又はベースとインデックスと変位との加算である。
プリフィックス付加
プリフィックス付加は、実アドレスの0−8191の範囲を、CPUごとに絶対ストレージ内の異なるブロックに割り当て、それにより、特に割り込みの処理の際に、主ストレージを共有する1つより多くのCPUが最小限の干渉で同時に動作することを可能にする能力を提供する。プリフィックス付加により、0−8191の範囲の実アドレスを、そのCPUのためのプリフィックス・レジスタのビット位置0−50における値によって識別される8Kバイトの絶対アドレス・ブロック(プリフィックス領域)に1対1で対応させ、且つ、プリフィックス・レジスタ内のその値によって識別される実アドレス・ブロックを、絶対アドレス0−8191に1対1で対応させる。残りの実アドレスは、対応する絶対アドレスと同一である。この変形により、各CPUは、最初の8Kバイトと、他のCPUのプリフィックス・レジスタによって指示される位置とを含む、主ストレージの全てにアクセスするこが可能になる。
プリフィックスは、プリフィックス・レジスタのビット位置0−50に含まれる51ビット量である。一実施形態において、プリフィックス・レジスタは、以下のフォーマットを有する。
Figure 0004815539
プリフィックス付加が適用された場合、実アドレスは、実アドレスのビット0−50に応じて、以下の規則のうちの1つを用いることによって絶対アドレスに変形される。即ち、
アドレスのビット0−50は、全てが0であれば、プリフィックスのビット0−50で置き換えられる。
アドレスのビット0−50は、プリフィックスのビット0−50と等しければ、0で置き換えられる。
アドレスのビット0−50は、0でないものがあり、且つプリフィックスのビット0−50と等しくなければ、変更されないままである。
ストレージに提示されたアドレスのみがプリフィックス付加によって変換される。アドレスのソースの内容は変更されないままである。
実アドレスと絶対アドレスとは、プリフィックス・レジスタが全て0を含み、従って実アドレスと対応する絶対アドレスとが同一である場合でさえ、区別される。
実アドレスと絶対アドレスとの間の関係を以下のように図式的に示す。
Figure 0004815539
アドレス空間は、整数番号の連続シーケンス(仮想アドレス)であり、各番号をストレージ内のバイト位置に関連付けることを可能にする特定の変形パラメータを伴う。シーケンスは、0から開始して左から右へと進む。
仮想アドレスは、CPUによって主ストレージにアクセスするために用いられる場合、最初に、動的アドレス変換(DAT)によって実アドレス又は絶対アドレスに変換される。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。DATは、変形パラメータとして、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、及びページ・テーブルを用いることができる。特定のアドレス空間のための最も高位のレベルのテーブルの指示(基点及び長さ)はアドレス空間制御要素(ASCE)と呼ばれ、これは、DATによる使用のために制御レジスタ内に見出されるか、又はアクセス・レジスタによって指定された通りのものである。あるいは、アドレス空間のためのASCEが実空間指示の場合もあり、これは、DATが、いかなるテーブルも用いることなく単に仮想アドレスを実アドレスとして扱うことで仮想アドレスを変換するということを示す。
DATは、異なる時点で、異なる制御レジスタ内のASCEか、又はアクセス・レジスタによって指定されたASCEを用いる。選択は、カレント・プログラム・ステータス・ワードにおいて指定される変換モードによって決定される。一次空間モード、二次空間モード、アクセス・レジスタ・モード、及びホーム空間モードの4つの変換モードが利用可能である。変換モードに応じて、異なるアドレス空間をアドレス指定することが可能である。
CPUが一次空間モード又は二次空間モードにある場合にはいつでも、CPUは、2つのアドレス空間、即ち一次アドレス空間及び二次アドレス空間に属する仮想アドレスを変換することができる。CPUがアクセス・レジスタ・モードにある場合にはいつでも、CPUは、最大で16個のアドレス空間、即ち、一次アドレス空間及び最大で15個のAR指定アドレス空間の仮想アドレスを変換することができる。CPUがホーム空間モードにある場合にはいつでも、CPUは、ホーム・アドレス空間の仮想アドレスを変換することができる。
一次アドレス空間は、一次アドレス空間制御要素(PASCE)によって変換される一次仮想アドレスでから成るので、それ自体として識別される。同様に、二次アドレス空間は、二次アドレス空間制御要素(SASCE)によって変換される二次仮想アドレスでから成る。AR指定アドレス空間は、アクセス・レジスタ指定アドレス空間制御要素(AR指定ASCE)によって変換されるAR指定仮想アドレスから成り、ホーム・アドレス空間は、ホーム・アドレス空間制御要素(HASCE)によって変換されるホーム仮想アドレスから成る。一次ASCE及び二次ASCEは、それぞれ制御レジスタ1及び7の中にある。AR指定ASCEは、制御レジスタ1及び7の中にある場合もあり、又は、ASN第2テーブル・エントリと呼ばれるテーブル・エントリの中にある場合もある。HASCEは、制御レジスタ13の中にある。
動的アドレス変換
動的アドレス変換は、仮想アドレスを(例えば、ストレージ参照中に)対応するメイン・メモリ・アドレス(本実施形態においては実アドレス又は絶対アドレス)に変換するプロセスである。仮想アドレスは、一次仮想アドレス、二次仮想アドレス、アクセス・レジスタ指定仮想アドレス、又はホーム仮想アドレスとすることができる。これらのアドレスは、それぞれ、PASCE、SASCE、AR指定ASCE、又はHASCEによって変換される。適切なASCEを選択した後の変換プロセスは、4つのタイプの仮想アドレスの全てについて同一である。
アドレス指定変換モード
実効アドレスは、動的アドレス変換又はプリフィックス付加によるいずれかの変形が行われる前に存在するアドレス(仮想アドレス)である。動的アドレス変換を制御するプログラム・ステータス・ワード内の3つのビットは、DATモード・ビットであるビット5と、アドレス空間制御ビットであるビット16及び17である。DATモード・ビットが0である場合、DATはオフであり、CPUは実モードにある。DATモード・ビットが1の場合、DATはオンであり、CPUはアドレス空間制御ビットによって指示される変換モードにある。即ち、二進数字00は一次空間モードを指示し、二進数字01はアクセス・レジスタ・モードを指示し、二進数字10は二次空間モードを指示し、二進数字11はホーム空間モードを指示する。種々のモードを、各モードにおけるアドレスの取り扱いと共に以下に示す。
Figure 0004815539
プログラム・ステータス・ワードは128ビット・ワードであり、これは、一部が、アドレス指定モードを示す2ビットを与える。一実施形態において、ビット31は拡張アドレス指定モード(EA)ビットであり、ビット32はベース・アドレス指定モード(BA)ビットである。これらの2つのビットは、アドレスのサイズを示す。これらの2つのビットの各々の状態は、二進数(1又は0)である。EAビットが0であり、且つBAビットが0であるならば、24ビット・アドレス指定が示される。24ビット・アドレス指定が示される場合、64ビット・ワード(64ビット・エンティティは一般に倍長語と呼ばれる)のビット40−63が、アドレスが配置される位置である。命令アドレスが128ビット・エンティティ(4倍長語)の2番目の64ビットを占める場合、プログラム・ステータス・ワードにおけるビット位置は以下の通りである。24ビット・モードでは、命令アドレスは、プログラム・ステータス・ワードのビット104−127に置かれる。31ビット・モードでは、命令アドレスは、プログラム・ステータス・ワードのビット97−127に置かれる。64ビット・モードでは、命令アドレスは、プログラム・ステータス・ワードのビット64−127に置かれる。EAビットが0であり、且つBAビットが1であるならば、31ビット・アドレス指定が示される。適切な64ビット・ワードは、ビット位置33−63に配置された31ビット・アドレスを含む。EAビットが1であり、且つBAビットが1であるならば、64ビット・ワードのビット0−63、即ち64ビット全体がアドレスを含む。そうでない場合には、例外条件が示される。一旦、アドレス指定モードが取得されると、ASCEを決定する必要がある。
アドレス空間制御要素(ASCE)
ここで、プログラム・ステータス・ワードを用いて仮想アドレスの動的アドレス変換のための実効アドレス空間制御要素(ASCE)を決定する方法の一実施形態を示す、図3を参照する。ASCEは、例えば、2ギガバイト(ギガ=230)のアドレス空間を指定することができる。又は、ASCEは、例えば、4テラバイト(テラ=240)、8ペタバイト(ペタ=250)、又は16エクサバイト(エクサ=260)のアドレス空間を指定することができる。又は、ASCEは、実空間指示を指定することができる。実空間指示は、仮想アドレスを、1つ又は複数のアドレス変換テーブルを参照することなく、ストレージ内で実アドレスとして扱うようにさせる。
プログラム・ステータス・ワード300は、変換(T)ビット302及びアドレス空間(AS)ビット304を含む。306において、変換(T)ビットが0であれば、アドレスは実アドレス326である。308において、アドレス空間(AS)が0に等しければ(二進数字00)、この仮想アドレスのための実効ASCEは、一次アドレス空間制御要素(PASCE)310である。312において、アドレス空間(AS)が1に等しければ(二進数字01)、実効ASCEは、アクセス・レジスタ指定アドレス空間制御要素314である。316において、アドレス空間(AS)が2に等しければ(二進数字10)、実効ASCEは、二次アドレス空間制御要素(SASCE)318である。それ以外の場合には、アドレス空間(AS)は3に等しく(二進数字11)、実効ASCEはホーム・アドレス空間制御要素(HASCE)322である。
実効ASCEを選択した後の動的アドレス変換プロセスは、好ましくは、4つのタイプの仮想アドレスの全てについて同一である。
セグメント・テーブル指示又は領域テーブル指示は、オペレーティング・システムによって実ストレージ又は絶対ストレージ内に確立されたテーブルによる変換を実行させる。実空間指示は、ストレージ内のテーブルを用いることなく、仮想アドレスを単に実アドレスとして扱わせる。
セグメント・テーブル指示又は領域テーブル指示を用いる場合の変換プロセスにおいて、3つのタイプの情報単位、即ち、領域、セグメント、及びページが認識される。領域は、2ギガバイトにわたり、且つ2ギガバイト境界から始まる逐次的な仮想アドレス・ブロックである。セグメントは、1ギガバイトにわたり、且つ1ギガバイト境界から始まる逐次的な仮想アドレス・ブロックである。ページは、4キロバイトにわたり、且つ4キロバイト境界から始まる逐次的な仮想アドレス・ブロックである。
仮想アドレスのフォーマット
仮想アドレスの変換は、実アドレス又は絶対アドレスを取得するために、変換テーブル階層構造の複数の変換テーブルを参照することを伴うことができる。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。仮想アドレスは、変換テーブル階層構造の変換テーブル内のエントリに対するインデックスを含む。仮想アドレスは、従って、4つの主要フィールドに分割される。ビット0−32は領域インデックス(RX)と呼ばれ、ビット33−43はセグメント・インデックス(SX)と呼ばれ、ビット44−51はページ・インデックスと呼ばれ、ビット52−63はバイト・インデックス(BX)と呼ばれる。一実施形態において、仮想アドレスは以下のフォーマットを有する。
Figure 0004815539
仮想アドレス空間は、そのASCEによって決定される通りに、1つの領域から成る2ギガバイトの空間とすることができ、又は最大8ギガバイト領域から成る最大で16エクサバイトまでの空間とすることができる。2ギガバイトのアドレス空間に適用される仮想アドレスのRX部分は、全て0でなければならない。そうでない場合には、例外が認識される。仮想アドレスのRX部分は、それ自体が3つのフィールドに分割される。ビット0−10は領域第1インデックス(RFX)と呼ばれ、ビット11−21は領域第2インデックス(RSX)と呼ばれ、ビット22−32は領域第3インデックス(RTX)と呼ばれる。一実施形態において、仮想アドレスのビット0−32は、以下のフォーマットを有する。
Figure 0004815539
RTXが最左端の有効部分(significant part)となっている仮想アドレス(42ビット・アドレス)は、4テラバイト(2048領域)をアドレス指定することができ、RSXが最左端の有効部分となっている仮想アドレス(53ビット・アドレス)は、8ペタバイト(4,193,044領域)をアドレス指定することができ、RFXが最左端の有効部分となっている仮想アドレス(64ビット・アドレス)は、16エクサバイト(8,589,934,592領域)をアドレス指定することができる。
RXが0である仮想アドレスは、2つの変換テーブル、即ちセグメント・テーブル及びページ・テーブルによって実アドレスに変換することができる。EDATファシリティがイネーブルであれば、変換はセグメント・テーブルのみで完了させることができる。RFXは非0であってもよく、その場合は、領域第1テーブル、領域第2テーブル、及び領域第3テーブルが必要とされる。RFXが0である場合でも、RSXが非0であってもよく、その場合、領域第2テーブル及び領域第3テーブルが必要とされる。RFX及びRSXが0である場合でも、RTXは非0であってもよく、その場合、領域第3テーブルが必要とされる。
あるアドレス空間のためのASCEが、そのアドレス空間に対する参照を変換するために必要とされる最も高レベルのテーブル(領域第1テーブルから始まり、下位に向けてセグメント・テーブルまで続く)を指示していない場合、例外が認識される。
仮想アドレスの動的変換
ここで、図3において決定された実効ASCEを用いて、仮想アドレスの変換に用いられる変換テーブル階層構造内の最初の変換テーブルを決定する一実施形態を示す、図4を参照する。
一実施形態において、制御レジスタ1(CR1)はPASCEを含む。制御レジスタ7(CR7)はSASCEを含む。制御レジスタ13(CR13)はHASCEを含み、アクセス・レジスタ変換(ART)プロセスによって導出されるアドレス空間第2テーブル・エントリ(ASTE)はアクセス・レジスタ指定アドレス空間制御要素を含む。実効ASCE400は、これらの位置のうちの1つから選択される。
実効ASCE400の第1の部分は、領域第1テーブル、領域第2テーブル、領域第3テーブル、又はセグメント・テーブルのうちのいずれかを指示する基点アドレスを含んだテーブル基点402を含む。テーブル基点(ビット0...51)に対して12個の二進数字0が付加されると、仮想アドレスの変換に用いられる変換テーブル階層構造の中で最も高位の変換テーブルの64ビットの基点アドレスが形成される。実効ASCE400はさらに、実空間制御(R)ビット404及びDTビット406も含む。実空間制御(R)ビットが0の場合、どの特定の基点アドレスがテーブル基点402であるのかを判定するためにDTがセレクタ408によってデコードされる。DTビットが3(二進数字11)に等しい場合、テーブル基点402は領域第1テーブル410を指示する。DTビットが2(二進数字10)に等しい場合、テーブル基点402は領域第2テーブル412を指示する。DTビットが1(二進数字01)に等しい場合、テーブル基点402は領域第3テーブル414指示する。そうではなくて、DTビットが0(二進数字00)に等しい場合、テーブル基点402はセグメント・テーブル416を指示する。
領域第1テーブル、領域第2テーブル、又は領域第3テーブルは、単に領域テーブルと呼ばれることもある。同様に、領域第1テーブル指示、領域第2テーブル指示、又は領域第3テーブル指示は、領域テーブル指示と呼ばれることもある。領域テーブル、セグメント・テーブル、及びページ・テーブルは、実ストレージの現在の割り当てを反映する。ページは、仮想ストレージの割り当てに対して用いられる用語である。実ストレージは固定ブロック単位で割り振られる。ページは、逐次的な仮想アドレスの組に対して割り当てられた場合でさえも、実ストレージ内で隣接している必要はない。
変換に用いられるASCEが領域第1テーブル指示である場合には、変換プロセスは、例えば、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、及び随意にページ・テーブルを用いたマルチ・レベル・ルックアップから成る。これらのテーブルは、実ストレージ又は絶対ストレージ内に存在する。ASCEが、領域第2テーブル指示、領域第3テーブル指示、又はセグメント・テーブル指示である場合、指示されたレベルより高位のレベルのテーブルにおけるルックアップは省かれ、より高位レベルのテーブル自体が省かれる。
ここで、変換テーブル階層構造を用いた仮想アドレスの動的アドレス変換の一実施形態を示す、図5を参照する。
図4の実効ASCE400は、指示タイプ(DT)ビット406を含む。ASCEの実空間制御(R)ビット404が0の場合、テーブル基点402がどの基点アドレスを指示するのかを判定するために、DTビットはセレクタ408によってデコードされる。実空間制御(R)ビットが1の場合、動的アドレス変換は、図6のノードD564において示されるようにして行われる。
セレクタ408において、DTビットが3(二進数字11)に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、領域第1テーブルである。テーブル基点402に対して、502において、仮想アドレスの領域第1インデックス(RFX)508部分が算術的に加算され、領域第1テーブル内の領域第1テーブル・エントリ506が参照される。テーブル基点(右側に12個の0が付加されたもの、又は4096を乗じたもの)が、インデックスに8を乗じた積(又は右側に3つの0が付加されたインデックス)に対して加算される。領域第1テーブル・エントリは、変換に用いられる変換テーブル階層構造の中で次に下位のテーブルに対する領域第2テーブル基点504を含む。領域第1テーブルの次に下位のテーブルは、領域第2テーブルである。領域第1テーブル・エントリの無効(I)ビットが1に等しい場合には、その領域第1テーブル・エントリは無効であり、変換に用いることはできない。例外条件が示される。
セレクタ408において、DTビットが2(二進数字10)に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、領域第2テーブルである。テーブル基点402に対して、510において、仮想アドレスの領域第2インデックス(RSX)516部分が算術的に加算され、領域第2テーブル内の領域第2テーブル・エントリ514が参照される。テーブル基点(右側に12個の0が付加されたもの、又は4096を乗じた)が、インデックスに8を乗じた積(又は右側に3つの0が付加されたインデックス)に対して加算される。領域第2テーブル・エントリは、変換に用いられる変換テーブル階層構造の中で次に下位のテーブルに対する領域第3テーブル基点512を含む。領域第2テーブルの次に下位のテーブルは、領域第3テーブルである。領域第2テーブル・エントリの無効(I)ビットが1に等しい場合には、その領域第2テーブル・エントリは無効であり、例外条件が示される。
セレクタ408において、DTビットが1(二進数字(01)に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、領域第3テーブルである。テーブル基点402に対して、518において、仮想アドレスの領域第3インデックス(RTX)524部分が算術的に加算され、領域第3テーブル内の領域第3テーブル・エントリ522が参照される。テーブル基点(右側に12個の0が付加されたもの、又は4096を乗じたもの)が、インデックスに8を乗じた積(又は、右側に3つの0が付加されたインデックス)に対して加算される。領域第3テーブル・エントリは、変換に用いられる変換テーブル階層構造の中で次に下位のテーブルに対するセグメント・テーブル基点520を含む。領域第3テーブルの次に下位のテーブルは、セグメント・テーブルである。領域第3テーブル・エントリの無効(I)ビットが1に等しい場合には、その領域第3テーブル・エントリは無効であり、例外条件が示される。
セレクタ408において、DTビットが0(二進数字(00)に等しい場合、変換テーブル階層構造において指示される最初のテーブルは、セグメント・テーブルである。テーブル基点402に対して、526において、仮想アドレスのセグメント・インデックス(SX)532部分が算術演算的に加算され、セグメント・テーブル内のセグメント・テーブル・エントリ530が参照される。テーブル基点(右側に12個の0が付加されたるか、又は4096を乗じたもの)が、インデックスに8を乗じた積(又は右側に3つの0が付加されたインデックス)に対して加算される。セグメント・テーブル・エントリは、どちらも528で示される、ページ・テーブルに対する基点アドレスか、又はセグメント・フレーム絶対アドレス(SFAA)を含む。セグメント・テーブル・エントリの無効(I)ビットが1に等しい場合には、そのセグメント・テーブル・エントリは無効であり、例外条件が示される。
538において、セグメント・テーブルのSTEフォーマット制御(FC)ビットが検査される。STEフォーマット制御が1である場合、セグメント・テーブル・エントリ530はセグメント・フレーム絶対アドレス(SFAA)552を含み、動的アドレス変換は図7のノード562を参照して続行する。そうでない場合には、セグメント・テーブルから取得されたセグメント・テーブル・エントリはページ・テーブル基点アドレスを含み、動的アドレス変換は図6のノード560を参照して続行する。
ここで、図6を参照する。セグメント・テーブル・エントリ内のSTEフォーマット制御が0である場合、セグメント・テーブルから取得されたセグメント・テーブル・エントリは、変換テーブル階層構造の中で次に下位のテーブルに対する基点アドレスを含む。セグメント・テーブルの次に下位のテーブルは、ページ・テーブルである。図5のセグメント・テーブル・エントリ530から取得されたページ・テーブル基点528に対して、538において、仮想アドレスのページ・インデックス(PX)534部分が算術的に加算され、ページ・テーブル内のページ・テーブル・エントリ542が参照される。ページ・テーブル・エントリは、ページ・フレーム実アドレス(PFRA)546を含む。ページ・フレーム実アドレスの最左端のビットが、548において、仮想アドレスのバイト・インデックス(BX)536部分に連結されると、64ビットの実アドレス550が得られる。64ビット実アドレスに対してさらにプリフィックス付加操作を行って、絶対アドレスを形成することができる。変換された仮想アドレスは、主ストレージ又はメモリ内の所望の4キロバイト(4096バイト)のデータ・ブロックを参照する。
好ましくは、仮想アドレスからメモリ・アドレスへの動的アドレス変換に用いられた情報は、変換ルックアサイド・バッファ・エントリ・タグ内に、その仮想アドレスと関連付けられたメモリのブロックのアドレスと共にストアされる。その後のストレージ・アクセスは、ASCE情報及び仮想アドレス情報を変換ルックアサイド・バッファ・タグと比較することによって、仮想アドレスを迅速に変換することができる。あるタグがその仮想アドレスのものであることが分かれば、関与する各変換テーブルへの時間のかかる逐次的なアクセスを実行する代わりに、そのメモリ・ブロックの変換ルックアサイド・バッファ・アドレスを用いることができる。一実施形態において、ページ・フレーム実アドレス(PFRA)は、例えば、ASCEと仮想アドレスのRX、SX及びPX部分とから成るタグと共に、変換ルックアサイド・バッファ544のエントリ内にストアされる。この仮想アドレスのその後の変換は、これ以降、変換ルックアサイド・バッファ内にストアされた情報から導出される。
ここで、図5Cを参照する。セグメント・テーブル・エントリ530内のSTEフォーマット制御が1である場合、セグメント・テーブル・エントリは、セグメント・フレーム絶対アドレス(SFAA)552を含む。セグメント・フレーム絶対アドレスの最左端のビットが、554において、仮想アドレスのページ・インデックス534部分及びバイト・インデックス536部分に連結されると、64ビットの絶対アドレス556が得られる。変換された仮想アドレスは、主ストレージ又はメモリ内の所望の大データ・ブロックを参照する。大データ・ブロックは少なくとも1メガバイト(1,048,576バイト)のサイズである。
一実施形態において、セグメント・フレーム絶対アドレス(SFAA)は、仮想アドレスのRX及びSX部分と共に、変換ルックアサイド・バッファ544内にストアされる。この仮想アドレスのその後の変換は、これ以降、変換ルックアサイド・バッファ内にストアされた情報から導出される。
変換テーブル・エントリのフォーマット
変換に用いられる変換テーブル階層構造における種々の変換テーブル・エントリの実施形態は以下の通りである。
領域テーブル・エントリ
「領域テーブル・エントリ」という用語は、領域第1テーブル・エントリ、領域第2テーブル・エントリ、又は領域第3テーブル・エントリを意味する。領域第1テーブル、領域第2テーブル、及び領域第3テーブルからフェッチされたエントリは、以下のフォーマットを有する。あるエントリを含むテーブルのレベル(第1、第2、又は第3)は、エントリ内のテーブル・タイプ(TT)ビットによって識別される。
一実施形態において、領域第1テーブル・エントリ、領域第2テーブル・エントリ、及び領域第3テーブル・エントリのフォーマットは以下の通りである。
Figure 0004815539
領域第2テーブル基点、領域第3テーブル基点、及びセグメント・テーブル基点:領域第1テーブル・エントリは、領域第2テーブル基点を含む。領域第2テーブル・エントリは、領域第3テーブル基点を含む。領域第3テーブル・エントリは、セグメント・テーブル基点を含む。以下の説明は3つのテーブル基点の各々に対して適用される。エントリのビット0−51は、右に12個の0を付加すると、次に下位レベルのテーブルの開始を指示する64ビットのアドレスを形成する。
DAT保護ビット(P):強化型DATが適用される場合には、ビット54は、変換に用いられる後続の各領域テーブル・エントリ、セグメント・テーブル・エントリ、及び、適用可能な場合にはページ・テーブル・エントリの中のDAT保護ビットとOR(論理和)演算されたものとして扱われる。それゆえ、そのビットが1であるときには、DAT保護は、領域全体又は領域テーブル・エントリによって指定される領域に対して適用される。強化型DATファシリティがインストールされていない場合、又はファシリティはインストールされているが強化型DATイネーブルメント制御が0である場合には、領域テーブル・エントリのビット54は無視される。
領域第2テーブル・オフセット、領域第3テーブル・オフセット、及びセグメント・テーブル・オフセット(TF):領域第1テーブル・エントリは、領域第2テーブル・オフセットを含む。領域第2テーブル・エントリは、領域第3テーブル・オフセットを含む。領域第3テーブル・エントリは、セグメント・テーブル・オフセットを含む。以下の説明は、3つのテーブル・オフセットの各々に対して適用される。エントリのビット56及び57は、次に下位レベルのテーブルの中で、テーブルの始めのところで欠落している部分の長さを指定するものであり、即ち、このビットは、次に下位レベルのテーブル内で実際に存在する最初のエントリの位置を指定する。このビットは、欠落部分の長さを4,096バイト単位で指定するので、従って、欠落部分の長さは512エントリの倍数として可変になる。4,096バイト単位で表された欠落部分の長さは、TFの値に等しい。オフセット・フィールドの内容を、長さフィールドであるビット62及び63と組み合わせて用いて、次に下位レベルのテーブルによって変換される仮想アドレスの部分(RSX、RTX、又はSX)がテーブル内に実際に存在するエントリを指示するのかどうかが確立される。
領域無効ビット(I):領域第1テーブル・エントリ又は領域第2テーブル・エントリ内のビット58は、そのエントリに関連付けられた領域の組が利用可能かどうかを制御する。領域第3テーブル・エントリ内のビット58は、エントリに関連付けられた単一の領域が利用可能であるかどうかを制御する。ビット58が0である場合には、アドレス変換は領域テーブル・エントリを用いることによって進行する。ビットが1である場合には、そのエントリを変換に用いることはできない。
テーブル・タイプ・ビット(TT):領域第1テーブル・エントリ、領域第2テーブル・エントリ、又は領域第3テーブル・エントリのビット60及び61は、そのエントリを含むテーブルのレベルを以下のように識別する。ビット60及び61は、変換に用いられるASCEであるテーブル指示のタイプ、及び、それまでに用いられたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別しなければならない。そうでない場合には、変換指定例外(translation specification exception)が認識される。以下のテーブルはテーブル・タイプ・ビットを示す。
Figure 0004815539
領域第2テーブル長、領域第3テーブル長、及びセグメント・テーブル長(TL):領域第1テーブル・エントリは、領域第2テーブル長を含む。領域第2テーブル・エントリは、領域第3テーブル長を含む。領域第3テーブル・エントリは、セグメント・テーブル長を含む。以下の説明は、3つのテーブル長の各々に対して適用される。エントリのビット62及び62は、次に下位レベルのテーブルの長さを4,096バイト単位で指定するので、従って、テーブルの長さは512エントリの倍数として可変になる。4,096バイト単位で表された次に下位レベルのテーブルの長さは、TLの値より1大きい。長さフィールドの内容を、オフセット・フィールドであるビット56及び57と組み合わせて用いて、次に下位レベルのテーブルによって変換される仮想アドレスの部分(RSX、RTX、又はSX)がテーブル内に実際に存在するエントリを指示するかどうかを確立する。領域テーブル・エントリの他の全てのビット位置は、可能性のある将来的な拡張のために未使用とされ、0を含むべきである。そうしなければ、プログラムが将来、互換的に動作できなくなるおそれがある。強化型DATが適用される場合、領域テーブル・エントリ内の未使用のビット位置は、そのテーブル・エントリがたとえ無効だとしても、0を含むべきである。
セグメント・テーブル・エントリ
強化型DATが適用されない場合、又は強化型DATは適用されるが、STEフォーマット制御、即ちセグメント・テーブル・エントリのビット53が0である場合には、セグメント・テーブルからフェッチされるエントリは、一実施形態において、以下のフォーマットを有する。
Figure 0004815539
強化型DATが適用され、且つSTEフォーマット制御が1である場合には、セグメント・テーブルからフェッチされるエントリは、一実施形態において、以下のフォーマットを有する。
Figure 0004815539
セグメント・テーブル・エントリ内の選択されたフィールドは、以下のように割り振られる。
ページ・テーブル基点:強化型DATが適用されない場合、又は強化型DATは適用されるが、STEフォーマット制御、即ちセグメント・テーブル・エントリのビット53が0である場合には、ビット0−52は、右に11個の0を付加すると、ページ・テーブルの開始を示す64ビットのアドレスを形成する。アドレスが実であるか絶対であるかは予測不可能である。
セグメント・フレーム絶対アドレス(SFAA):強化型DATが適用され、且つSTEフォーマット制御が1である場合には、エントリのビット0−43は、右に20個の0を付加すると、セグメントの64ビット絶対アドレスを形成する。
ACCF妥当性制御(AV):強化型DATが適用され、且つSTEフォーマット制御が1である場合には、ビット47はアクセス制御ビット及びフェッチ保護ビット(ACCF)妥当性制御である。AV制御が0である場合、セグメント・テーブル・エントリのビット48−52は無視される。AV制御が1である場合、ビット48−52は以下で説明されるように用いられる。
アクセス制御ビット(ACC):強化型DATが適用され、STEフォーマット制御が1であり、且つ、AV制御が1である場合には、セグメント・テーブル・エントリのビット48−51は、そのアドレスに適用されるいずれのキー制御アクセス・チェックにも用いることができるアクセス制御ビットを含む。
フェッチ保護ビット(F):強化型DATが適用され、STEフォーマット制御が1であり、且つ、AV制御が1である場合には、セグメント・テーブル・エントリのビット52は、そのアドレスに適用されるいずれのキー制御アクセス・チェックにも用いることができるフェッチ保護ビットを含む。
STEフォーマット制御(FC):強化型DATが適用される場合には、ビット53は以下のように、セグメント・テーブル・エントリのためのフォーマット制御である。即ち、
FCビットが0である場合、エントリのビット0−52はページ・テーブル基点を形成し、ビット55は未使用とされる。
FCビットが1である場合、エントリのビット0−43はセグメント・フレーム絶対アドレスを形成し、ビット47はACCF妥当性制御であり、ビット48−51はアクセス制御ビットであり、ビット52はフェッチ保護ビットであり、ビット55は変更記録オーバーライドである。強化型DATが適用されない場合には、ビット53は無視される。
DAT保護ビット(P):ビット54は、1である場合には、DAT保護がセグメント全体に適用されることを示す。
強化型DATが適用されない場合には、ビット54は、変換に用いられるページ・テーブル・エントリの中のDAT保護ビットと論理和(OR)演算されたものとして扱われる。
強化型DATが適用される場合には、変換に用いられるいずれかの及び全ての領域テーブル・エントリ内のDAT保護ビットは、セグメント・テーブル・エントリ内のDAT保護ビットと論理和演算されたものとして扱われ、STEフォーマット制御が0である場合には、STEの中のDAT保護ビットはさらに、ページ・テーブル・エントリ内のDAT保護ビットと論理和演算されたものとして扱われる。
変更記録オーバーライド(CO):強化型DATが適用され、且つ、STEフォーマット制御が1である場合、セグメント・テーブル・エントリのビット55は、そのセグメントについての変更記録オーバーライドである。強化型DATが適用されない場合、又は、強化型DATは適用されるがSTEフォーマット制御が0である場合には、セグメント・テーブル・エントリのビット55は無視される。
セグメント無効ビット(I):ビット58は、そのセグメント・テーブル・エントリに関連付けられたセグメントが利用可能であるかどうかを制御する。
このビットが0である場合、アドレス変換はそのセグメント・テーブル・エントリを用いることによって進行する。
このビットが1である場合、そのセグメント・テーブル・エントリを変換に用いることができない。
共通セグメント・ビット(C):ビット59は、セグメント・テーブル・エントリの変換ルックアサイド・バッファ・コピーの使用を制御する。強化型DATが適用されない場合、又は、強化型DATは適用されるがフォーマット制御が0である場合には、ビット59は、そのセグメント・テーブル・エントリによって指示されるページ・テーブルの変換ルックアサイド・バッファ・コピーの使用も制御する。
0はプライベート・セグメントを識別し、この場合、セグメント・テーブル・エントリ及びそれが指示するいずれのページ・テーブルも、そのセグメント・テーブル・エントリが存在するセグメント・テーブルを指示するセグメント・テーブル基点との関連でのみ用いることができる。
1は共通セグメントを識別し、この場合、セグメント・テーブル・エントリ及びそれが指示するいずれのページ・テーブルも、異なるセグメント・テーブルが指定されたとしても、引き続き、そのセグメント・インデックスに対応するアドレスを変換するために用いることができる。
しかしながら、共通セグメントのための、セグメント・テーブル・エントリ及びいずれかのページ・テーブルの変換ルックアサイド・バッファ・コピーは、変換に用いられるASCEの中のプライベート空間制御であるビット55が1である場合、又は、そのASCEが実空間指示である場合には、使用可能ではない。用いられているASCEの中のプライベート空間制御が1である場合に、セグメント・テーブル・エントリが変換中にストレージからフェッチされたのであれば、その共通セグメント・ビットは0でなければならない。そうでない場合には、変換指定例外が認識される。
テーブル・タイプ・ビット(TT):セグメント・テーブル・エントリのビット60及び61は、そのエントリを含むテーブルのレベルを識別するための二進数字00である。領域テーブル・エントリ又はセグメント・テーブル・エントリの中のビット60及び61の可能な全ての値の意味は、以下の通りである。
Figure 0004815539
ビット60及び61は、変換に用いられるASCEであるテーブル指示のタイプ、及び、それまでに用いられたテーブル・レベルの数を考慮して、正しいテーブル・レベルを識別するものでなければならない。そうでない場合には、変換指定例外が認識される。セグメント・テーブル・エントリの他の全てのビット位置は、可能性のある将来的な拡張のために未使用とされ、0を含むべきである。そうしなければ、プログラムが将来、互換的に動作できなくなるおそれがある。強化型DATが適用される場合、セグメント・テーブル・エントリ内の未使用のビット位置は、そのテーブル・エントリがたとえ無効だとしても、0を含むべきである。
ページ・テーブル・エントリ
一実施形態において、ページ・テーブルからフェッチされるエントリは、以下のフォーマットを有する。
Figure 0004815539
ページ・テーブル・エントリの選択されたフィールドは、以下のように割り振られる。即ち、
ページ・フレーム実アドレス(PFRA):ビット0−51は、実ストレージのアドレスの最左端のビットを与える。これらのビットの右に仮想アドレスの12ビット・バイトのインデックス・フィールドを連結すると、64ビットの実アドレスが得られる。
ページ無効ビット(I):ビット53は、ページ・テーブル・エントリに関連付けられたページが利用可能であるかどうかを制御する。ビットが0である場合、アドレス変換はそのページ・テーブル・エントリを用いることによって進行する。ビットが1である場合、そのページ・テーブル・エントリを変換に用いることはできない。
DAT保護ビット(P):ビット54は、そのページでストア・アクセスを行うことができるかどうかを制御する。この保護機構は、キー制御保護及び低いアドレス保護機構に加えてのものである。このビットは、フェッチ・アクセスに対して影響を与えない。このビットが0である場合、以下の追加的制約に従って、そのページへのストアが許可される。即ち、
変換に用いられるセグメント・テーブル・エントリ内のDAT保護ビットが0である。
強化型DATが適用される場合には、変換に用いられる全ての領域テーブル・エントリ内のDAT保護ビットが0である。
他の保護機構
ビットが1である場合、ストアは許可されない。より優先順位の高い例外条件が存在しない場合には、DAT保護ビットが1であるときにストアしようとする試行は、保護例外の認識を発生させる。セグメント・テーブル・エントリ内のDAT保護ビットは、そのページに対してDAT保護が適用されるかどうかを判定するときに、ビット54と論理和演算されたものとして扱われる。強化型DATが適用される場合、変換に用いられるいずれの領域テーブル・エントリ内のDAT保護ビットもまた、DAT保護が適用されるかどうかを判定するときに、ビット54と論理和演算されたものとして扱われる。
変更記録オーバーライド(CO):強化型DATが適用されない場合、ページ・テーブル・エントリのビット55は、0を含んでいなければならない。そうしなければ、アドレス変換のためにそのエントリを用いる命令の実行の一部として、変換指定例外が認識される。強化型DATが適用され、且つ、STEフォーマット制御が0である場合、ページ・テーブル・エントリのビット55は、そのページについての変更記録オーバーライドである。
エントリのビット位置52は、0を含んでいなければならない。そうしなければ、アドレス変換のためにそのエントリを用いる命令の実行の一部として、変換指定例外が認識される。ビット56−63は割り当てられず、無視される。
動的変換の別の実施形態
このセクションは、仮想アドレスを用いて主ストレージにアクセスする前に暗黙的に実施されるときの変換プロセスを説明する。
仮想アドレスの変換は、プログラム・ステータス・ワード内のDATモード・ビット及びアドレス空間制御ビットにより制御され、且つ、制御レジスタ1、7、及び13内のASCEにより制御され、そして、アクセス・レジスタによって指定されるように制御される。変換に用いられるASCEが領域第1テーブル指示である場合には、変換は領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、及びページ・テーブルによって実施され、その全てが実ストレージ又は絶対ストレージ内に存在する。ASCEがより下位レベルのタイプのテーブル指示(領域第2テーブル指示、領域第3テーブル指示、又はセグメント・テーブル指示)である場合には、変換は、指示されたレベルから始まるテーブル・レベルのみを用いて実施され、非0であればより高位の1つ又は複数のレベルのテーブルの使用を要求するはずの仮想アドレスのビットは、全て0でなければならずそうでない場合には、ASCEタイプ例外が認識される。ASCEが実空間指示である場合には、仮想アドレスは実アドレスとして扱われ、実ストレージ又は絶対ストレージの内のテーブル・エントリは用いられない。
特定のアドレス変換に用いられるASCEを、実効ASCEと呼ぶ。従って、一次仮想アドレスが変換される場合には、制御レジスタ1の内容が実効ASCEとして用いられる。同様に、二次仮想アドレスの場合には制御レジスタ7の内容が用いられ、AR指定仮想アドレスの場合にはアクセス・レジスタによって指定されたASCEが用いられ、ホーム仮想アドレスの場合には制御レジスタ13の内容が用いられる。
実効ASCEの中の実空間制御が0である場合、ASCEの中の指示タイプはテーブル指示タイプ、即ち、領域第1テーブル、領域第2テーブル、領域第3テーブル、又はセグメント・テーブルを指定する。仮想アドレスの対応する部分(領域第1インデックス、領域第2インデックス、領域第3インデックス、又はセグメント・インデックス)が、指示の中のテーブル長フィールドに対してチェックされ、これを指示内の基点に加算して、指示されたテーブルの中のエントリを選択する。選択されたエントリが、指示内のテーブル長フィールドによって判定してテーブルの外部にある場合、又は選択されたエントリ内のIビットが1である場合は、指示によって指定されたテーブル・レベルに応じて、領域第1変換、領域第2変換、領域第3変換、又はセグメント変換の例外が認識される。選択されたエントリ内のテーブル・タイプ・ビットが予期されたテーブル・レベルを示していない場合には、変換指定例外が認識される。
実効ASCEによって選択されたテーブル・エントリは、用いられるべき次に下位レベルのテーブルを指示する。現在のテーブルが領域第1テーブル、領域第2テーブル、又は領域第3テーブルであれば、仮想アドレスの次の部分(それぞれ、領域第2インデックス、領域第3インデックス、又はセグメント・インデックス)が現在のテーブル・エントリ内のテーブル・オフセット及びテーブル長フィールドに対してチェックされ、これをエントリ内の基点に加算して、次に下位レベルのテーブルの中のエントリを選択する。次のテーブルの中の選択されたエントリが、現在のテーブル・エントリ内のテーブル・オフセット及びテーブル長フィールドによって判定して、そのテーブルの外部にある場合、又は、選択されたエントリ内のIビットが1である場合は、次のテーブルのレベルに応じて、領域第2変換、領域第3変換、又はセグメント変換の例外が認識される。選択されたエントリ内のテーブル・タイプ・ビットが予期されたテーブル・レベルを示していない場合には、変換指定例外が認識される。
逐次的なテーブル・レベルによる仮想アドレスの部分の処理は、セグメント・テーブル・エントリが選択されるまで続く。セグメント・テーブル・エントリは、指定されたセグメントの中の全てのページに適用されるページ保護ビットを含む。
仮想アドレスのページ・インデックス部分を、セグメント・テーブル・エントリ内のページ・テーブル基点に加算して、ページ・テーブル内のエントリを選択する。ページ・テーブル・エントリ内のIビットが1である場合には、ページ変換例外が認識される。ページ・テーブル・エントリは、仮想アドレスの変換を示す実アドレスの最左端のビットを含み、且つ、そのページ・テーブル・エントリによって指定されるページのみに適用されるページ保護ビットを含む。
仮想アドレスのバイト・インデックス・フィールドは、実アドレスの最右端のビット位置として、変更せずに用いられる。
実ストレージ又は絶対ストレージ内の変換テーブルを参照することに関連する遅延を排除するために、テーブルからフェッチされた情報は通常、特別なバッファである変換ルックアサイド・バッファ内にも置かれ、同じテーブル・エントリが関与するその後の変換は、変換ルックアサイド・バッファ内に記録された情報を用いて行うことができる。変換ルックアサイド・バッファは、実空間指示に関係した、仮想と実が等しい(virtual equals real)変換を記録することもできる。
領域テーブル、セグメント・テーブル、又はページ・テーブルからエントリをフェッチする目的で、アドレス変換プロセス中に実ストレージ又は絶対ストレージにアクセスする場合であればいつでも、キー制御保護は適用されない。
ASCEによって指示されるテーブルにおけるルックアップ
実効ASCEのDT制御であるビット60−61は、ASCEのテーブル指示タイプ、及び、指示されたテーブルによって変換される仮想アドレスの部分の両方を以下のように指定する。
Figure 0004815539
ビット60及び61が二進数字11の値を有する場合、仮想アドレスの領域第1インデックス部分を、ASCEに含まれる領域第1テーブル基点と組み合わせて用いて、領域第1テーブルからエントリを選択する。実ストレージ又は絶対ストレージの中の領域第1テーブル・エントリの64ビット・アドレスは、領域第1テーブル指示のビット0−51の右側に12個の0を付加すること、及び、最右端に3つ、最左端に50個の0が付加された領域第1インデックスを加算することによって得られる。領域第1テーブル・ルックアップ・プロセスの一部として、アドレス指定されたエントリが領域第1テーブル内にあるかどうかを確立するために、仮想アドレスのビット0及び1(領域第1インデックスのビット0及び1である)が、領域第1テーブル指示のテーブル長、即ちビット62及び63に対して比較される。テーブル長フィールドにおける値が仮想アドレスの対応するビット位置における値より小さい場合には、領域第1変換例外が認識される。変換ルックアサイド・バッファ内の領域第1テーブル・エントリの等価物が変換に用いられる場合には、テーブル長に対する比較を省略することができる。領域第1テーブルからフェッチされたエントリは、対応する領域第2テーブルの開始位置を示し、そのオフセット及び長さを指定する。
ASCEのビット60及び61が二進数字10の値を有する場合、仮想アドレスの領域第2インデックス部分を、ASCEに含まれる領域第2テーブル基点と組み合わせて用いて、領域第2テーブルからエントリを選択する。仮想アドレスのビット11及び12(領域第2インデックスのビット0及び1である)が、ASCEの中のテーブル長に対して比較される。テーブル長フィールドにおける値が、仮想アドレスの対応するビット位置における値より小さい場合には、領域第2変換例外が認識される。変換ルックアサイド・バッファ内の領域第2テーブル・エントリの等価物が変換に用いられる場合には、テーブル長に対する比較を省略することができる。その他の点では、領域第2テーブル・ルックアップ・プロセスは、領域第1テーブル・ルックアップ・プロセスと同じであり、領域第2テーブルからフェッチされたエントリは、対応する領域第3テーブルの開始位置を示し、そのオフセット及び長さを指定する。
ASCEのビット60及び61が二進数字01の値を有する場合、仮想アドレスの領域第3インデックス部分を、ASCEに含まれる領域第3テーブル基点と組み合わせて用いて、領域第3テーブルからエントリを選択する。仮想アドレスのビット22及び23(領域第3インデックスのビット0及び1である)が、ASCEの中のテーブル長に対して比較される。テーブル長フィールドにおける値が、仮想アドレスの対応するビット位置における値より小さい場合には、領域第3変換例外が認識される。その他の点では、領域第3テーブル・ルックアップ・プロセスは領域第1テーブル・ルックアップ・プロセスと同じであり、領域第3テーブル・エントリ内のテーブル・タイプ・ビットをチェックすることを含む。領域第3テーブルからフェッチされたエントリは、対応するセグメント・テーブルの開始位置を示し、そのオフセット及び長さを指定する。
ASCEのビット60及び61が二進数字00の値を有する場合、仮想アドレスのセグメント・インデックス部分を、ASCEに含まれるセグメント・テーブル基点と組み合わせて用いて、セグメント・テーブルからエントリを選択する。仮想アドレスのビット33及び34(セグメント・インデックスのビット0及び1である)が、ASCEの中のテーブル長に対して比較される。テーブル長フィールドにおける値が、仮想アドレスの対応するビット位置における値より小さい場合には、セグメント変換例外が認識される。変換ルックアサイド・バッファ内のセグメント・テーブル・エントリの等価物が変換に用いられる場合には、テーブル長に対する比較を省略することができる。その他の点では、セグメント・テーブル・ルックアップ・プロセスは領域第1テーブル・ルックアップ・プロセスと同じであり、セグメント・テーブル・エントリ内のテーブル・タイプ・ビットをチェックすることを含む。処理は以下の通りである。
強化型DATが適用されない場合、又は、強化型DATは適用されるが、STEフォーマット制御が0である場合には、セグメント・テーブルからフェッチされたエントリは、対応するページ・テーブルの開始位置を示し、処理は以下の「ページ・テーブル・ルックアップ」において説明されるように続行する。
強化型DATが適用され、且つ、STEフォーマット制御が1である場合には、セグメント・テーブルからフェッチされたエントリは、セグメント・フレーム絶対アドレスの最左端のビットを含む。変換に用いられるいずれかの領域テーブル・エントリ、又はセグメント・テーブル・エントリのどちらかにおいてDAT保護ビットが1であり、且つ、変換が実施されているストレージ参照がストアであれば、保護例外が認識される。
領域テーブル・エントリによって指示されるテーブルにおけるルックアップ
実効ASCEが領域テーブル指示である場合には、前掲のセクションにおいて説明されたように領域テーブル・エントリが選択される。次いで、選択されたエントリの内容と、仮想アドレスの次のインデックス部分とを用いて、次に下位レベルのテーブルにおけるエントリが選択され、このテーブルは、別の領域テーブルの場合もあり、セグメント・テーブルの場合もある。ASCEによって選択されたテーブル・エントリが領域第1テーブル・エントリである場合には、仮想アドレスの領域第2インデックス部分を領域第1テーブル・エントリに含まれる領域第2テーブル基点と組み合わせて用いて、領域第2テーブルからエントリを選択する。実ストレージ又は絶対ストレージの中の領域第2テーブル・エントリの64ビット・アドレスは、領域第1テーブル・エントリのビット0−51の右側に12個の0を付加すること、及び、最右端に3つ、最左端に50個の0が付加された領域第2インデックスを加算することによって得られる。
領域第2テーブル・エントリ、領域第3テーブル・エントリ、又はセグメント・テーブル・エントリのアドレスを形成する際に、プリフィックス付加が行われる場合には、それは、より高位レベルのテーブル・エントリに含まれるそれぞれのテーブル基点に対してテーブル・インデックスの値を加算する前に適用されるのか、又はテーブル基点とテーブル・インデックス値との加算によって形成されたテーブル・エントリ・アドレスに対して適用されるのかは、予測不可能である。
領域第2テーブル・ルックアップ・プロセスの一部として、仮想アドレスのビット11及び12(領域第2インデックスのビット0及び1である)は、領域第1テーブル・エントリのテーブル・オフセットであるビット56及び57に対して、及び領域第1テーブル・エントリのテーブル長であるビット62及び63に対して比較され、アドレス指定されたエントリが領域第2テーブルの範囲内にあるどうかを確立する。テーブル・オフセット・フィールドにおける値が仮想アドレスの対応するビット位置における値より大きい場合、又はテーブル長フィールドにおける値が仮想アドレスの対応するビット位置における値より小さい場合には、領域第2変換例外が認識される。
領域第2テーブルは、対応する領域第3テーブルの開始位置を示し、そのオフセット及び長さを指定する。
ASCEによって選択されたテーブル・エントリが領域第2テーブル・エントリである場合、又は領域第2テーブル・エントリが領域第1テーブル・エントリの内容によって選択されている場合には、仮想アドレスの領域第3インデックス部分を、領域第2テーブル・エントリに含まれる領域第3テーブル基点と組み合わせて用いて、領域第3テーブルからエントリを選択する。仮想アドレスのビット22及び23(領域第3インデックスのビット0及び1である)が、領域第2テーブル・エントリ内のテーブル・オフセット及びテーブル長に対して比較される。テーブル・オフセットがビット22及び23より大きい場合、又はテーブル長がビット22及び23より小さい場合には、領域第3変換例外が認識される。その他の点では、領域第3テーブル・ルックアップ・プロセスは、領域第2テーブル・ルックアップ・プロセスと同一である。領域第3テーブルからフェッチされたエントリは、対応するセグメント・テーブルの開始位置を示し、そのオフセット及び長さを指定する。
ASCEによって選択されたテーブル・エントリが領域第3テーブル・エントリである場合、又は領域第3テーブル・エントリが領域第2テーブル・エントリの内容によって選択されている場合には、仮想アドレスのセグメント・インデックス部分を、領域第3テーブル・エントリに含まれるセグメント・テーブル基点と組み合わせて用いて、セグメント・テーブルからエントリを選択する。仮想アドレスのビット33及び34(セグメント・インデックスのビット0及び1である)が、領域第3テーブル・エントリ内のテーブル・オフセット及びテーブル長に対して比較される。テーブル・オフセットがビット33及び34より大きい場合、又はテーブル長がビット33及び34より小さい場合には、セグメント変換例外が認識される。変換指定例外は、(1)ASCEの中のプライベート空間制御であるビット55が1であり、且つ(2)セグメント・テーブルからフェッチされたエントリ内の共通セグメント・ビットであるビット59が1である場合に、認識される。その他の点では、セグメント・テーブル・ルックアップ・プロセスは、領域第2テーブル・ルックアップ・プロセスと同一である。処理は以下の通りである。
強化型DATが適用されない場合、又は、強化型DATは適用されるがSTEフォーマット制御が0である場合には、セグメント・テーブルからフェッチされたエントリは、対応するページ・テーブルの開始位置を示し、処理は後述の「ページ・テーブル・ルックアップ」において説明されるように続行する。
強化型DATが適用され、且つ、STEフォーマット制御が1である場合には、セグメント・テーブルからフェッチされたエントリは、セグメント・フレーム絶対アドレスの最左端ビットを含む。変換に用いられるいずれかの領域テーブル・エントリ、又はセグメント・テーブル・エントリのどちらかにおいて、DAT保護ビットが1であり、且つ、変換が実施されている対象のストレージ参照がストアであれば、保護例外が認識される。
ページ・テーブルのルックアップ
強化型DATが適用されない場合、又は強化型DATは適用されるがSTEフォーマット制御が0である場合には、仮想アドレスのページ・インデックス部分を、セグメント・テーブル・エントリに含まれるページ・テーブル基点と組み合わせて用いて、ページ・テーブルからエントリを選択する。
実ストレージ又は絶対ストレージ内のページ・テーブル・エントリの64ビット・アドレスは、ページ・テーブル基点の右に11個の0を付加すること、及び、最右端に3つ、最左端に53個の0が付加されたページ・インデックスを加算することによって得られる。ビット位置0のキャリーアウトは、生じることができない。
ページ・テーブルからフェッチされたエントリは、そのページの可用性を示し、ページ・フレーム絶対アドレスの最左端ビットを含む。対応するページが利用可能であるかどうかを確立するために、ページ無効ビットであるビット53が検査される。このビットが1である場合、ページ変換例外が認識される。ビット位置52が1を含んでいる場合、変換指定例外が認識される。強化型DATが適用されない場合、又は強化型DATは適用されるがSTEフォーマット制御が0である場合には、ビット位置55が1を含む場合にも変換指定例外が認識される。変換に用いられるセグメント・テーブル・エントリ、ページ・テーブル・エントリ、又は強化型DATが適用される場合に変換中に用いられるいずれかの領域テーブル・エントリのうちのいずれかにおいて、DAT保護ビットが1であり、且つ、変換が実施されている対象のストレージ参照がストアであれば、保護例外が認識される。
実アドレス及び絶対アドレスの形成
実効ASCEが実空間指示である場合には、仮想アドレスのビット0−63は直接、実ストレージ・アドレスとして用いられる。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。実効ASCEが実空間指示ではなく、変換プロセスにおいて例外が発生しない場合には、以下の条件が適用される。
強化型DATが適用されない場合、又は強化型DATは適用されるがSTEフォーマット制御が0である場合には、ページ・フレーム実アドレスは、ページ・テーブル・エントリから得られる。ページ・フレーム実アドレスと仮想アドレスのバイト・インデックス部分とを、ページ・フレーム実アドレスが最左端部分を形成するようにして連結させる。その結果が、その仮想アドレスに対応する実ストレージ・アドレスである。実アドレスに対してさらにプリフィックス付加を行って、絶対アドレスを形成することができる。
強化型DATが適用され、且つ、STEフォーマット制御が1である場合には、セグメント・フレーム絶対アドレスと仮想アドレスのページ・インデックス部分及びバイト・インデックス部分とを左から右に連結して、仮想アドレスに対応する絶対アドレスを形成する。
変換中の例外の認識
無効アドレス及び無効フォーマットは、変換プロセス中に認識される例外を発生することがある。テーブル・エントリに含まれる情報が変換のために用いられ、それが正しくない正しくないことが見いだされた場合に、例外が認識される。
ここで、動的アドレス変換の一実施形態の流れ図をセグメント・テーブル・エントリからフォーマット制御フィールドを取得する時点まで示す、図8を参照する。
602において、変換する仮想アドレスが取得される。604において、仮想アドレスの変換に用いられる最も高位の変換テーブルの基点アドレスが取得される。変換に用いられる最初の変換テーブルの基点アドレスは、ADCE及びDTビットに依存する。606において、仮想アドレスの一部を用いて、変換テーブル内の適切なテーブル・エントリを参照する。608において、変換テーブルからフェッチされたエントリがセグメント・テーブル・エントリでない場合には、変換テーブル階層構造の中のセグメント・テーブルはまだ参照されていない。この場合、610において、変換テーブル階層構造内の次に低位の変換テーブルの基点アドレスが、テーブル・エントリから取得される。仮想アドレスの適切な部分を用いて、変換に用いられる次に低位のテーブル内の対応するテーブル・エントリを参照する。
例えば、変換に用いられる最初の変換テーブルの基点アドレスが領域第1テーブルであれば、仮想アドレスのRFX部分を用いて、領域第1テーブル内の領域第1テーブル・エントリを参照する。テーブル基点アドレスが領域第2テーブルに対するものであれば、仮想アドレスのRSX部分を用いて、領域第2テーブル内の領域第2テーブル・エントリを参照する。テーブル基点アドレスが領域第3テーブルに対するものであれば、仮想アドレスのRTX部分を用いて、領域第3テーブル内の領域第3テーブル・エントリを参照する。テーブル基点アドレスがセグメント・テーブルに対するものであれば、仮想アドレスのSX部分を用いて、セグメント・テーブル内のセグメント・テーブル・エントリを参照するセグメント・テーブル・エントリがフェッチされるまで、逐次的なテーブルが参照される。
一旦セグメント・テーブル・エントリがフェッチされると、612において、セグメント・テーブル・エントリ(STE)フォーマット制御ビットが検査され、この特定の仮想アドレスに対してフォーマット制御がイネーブルであるかどうかを判定する。STEフォーマット制御が0であれば、動的アドレス変換はノード614に関して行われる。STEフォーマット制御が1であれば、動的アドレス変換はノード616に関して行われる。
動的アドレス変換(STEフォーマット制御が0)
ここで、STEフォーマット制御が0である場合の図8のノード614からの流れ図の続きを示す、図9を参照する。
710において、セグメント・テーブル・エントリから、ページ・テーブルの基点アドレスが取得される。712において、仮想アドレスのPX部分を用いて、ページ・テーブル内のページ・エントリを参照する。714において、ページ・テーブル・エントリから、ページ・フレーム実アドレス(PFRA)が取得される。無効(I)ビットがページ・テーブル・エントリから取得される。716において、無効(I)ビットが1である場合、このページ・テーブル・エントリは無効であるものとしてマークされているので、718において、このページ・テーブル・エントリを用いた仮想アドレスの変換を続けることはできない。このページ・テーブル・エントリを用いた仮想アドレスのそれ以上の変換は、停止する(722)。716において、無効(I)ビットが0である場合、720において、ページ・フレーム実アドレス(PFRA)を仮想アドレスのBX部分と組み合わせて、実アドレスを生成する。実アドレスに対してさらにプリフィックス付加操作を行って、絶対アドレスを形成することができる。724において、実アドレスを用いて、変換された仮想アドレスによってアドレス指定されたデータ・ブロックにアクセスする。
動的アドレス変換(STEフォーマット制御が1)
ここで、図8のノード616からの流れ図の続きを示す、図10を参照する。
810において、セグメント・フレーム絶対アドレス(SFAA)が、セグメント・テーブル・エントリの一部から取得される。無効(I)ビットがセグメント・テーブル・エントリから取得される。812において、無効(I)ビットが1である場合、セグメント・テーブル・エントリは無効であるものとしてマークされているので、814において、このセグメント・テーブル・エントリを用いた仮想アドレスのそれ以上の変換を続けることはできない。一実施形態において、変換を要求するプログラム・エンティティに対して、例外コードが戻される。このセグメント・テーブル・エントリを用いた仮想アドレスのそれ以上の変換は、停止する(818)。
812において、無効(I)ビットが0である場合、816において、セグメント・フレーム絶対アドレス(SFAA)を仮想アドレスのPX部分及びBX部分と組み合わせて、主ストレージ又はメモリ内の所望の大データ・ブロックに対する絶対アドレスを生成する。820において、変換された仮想アドレスによってアドレス指定される所望の大データ・ブロックにアクセスする。
各テーブル・エントリにおいて、取得されたテーブル・エントリの妥当性を判定するために、無効ビットが検査される。変換された仮想アドレスによってアドレス指定されるデータ・ブロックを保護する他の変換保護機構について、本明細書においてさらに検討する。
別の実施形態において、制限情報が変換テーブル・エントリから取得される。制限情報は、アクセスを仮想アドレス範囲の制限部分に対するものに限定するために用いられる。これ以降は、変換されたアドレスによってアドレス指定される所望の大データ・ブロックに対するアクセスは、アドレス範囲の制限部分に対してのみ許可される。制限情報は、テーブル・オフセット又はテーブル長のどれか1つである。
さらに別の実施形態において、仮想アドレスの変換に用いられる情報は、少なくとも1つの変換ルックアサイド・バッファ内にストアされる。その後の仮想アドレスの、主ストレージ内のデータ・ブロックの絶対アドレスへの変換は、それ以降、変換テーブル階層構造ではなく変換ルックアサイド・バッファ由来のストアされた情報を用いて実施される。
さらに別の実施形態において、変換がマシン・アーキテクチャに対してネイティブでない場合には、変換をエミュレートするための所定のソフトウェア・ルーチンが識別される。所定のソフトウェア・ルーチンは、複数の命令を含む。所定のソフトウェア・ルーチンが実行される。
アドレス指定されたデータ・ブロックの保護
本明細書で説明されるように、仮想アドレスが強化型DATファシリティを用いて変換されると、変換された仮想アドレスによってアドレス指定される主ストレージ又はメモリ内の所望のデータ・ブロックに対して、付加的な保護機構を適用することができる。
DAT保護
DAT保護機能は、仮想ストレージへのアクセスを、各ページ・テーブル・エントリ及びセグメント・テーブル・エントリ内のDAT保護ビット、及び、強化型DATファシリティがインストールされている場合には各領域テーブル・エントリ内のDAT保護ビットを用いることによって、制御する。これは不正なストアに対する保護を与える。
ページ・テーブル・エントリのDAT保護ビット(ビット54)は、対応する4キロバイトのページへのストアが許可されるかどうかを制御する。ビットが0である場合にはフェッチ及びストアの両方が許可され、ビットが1である場合にはフェッチのみが許可される。保護されたページへのストアが試行された場合、ページの内容は変更されず、操作単位(unit of operation)又は命令の実行が抑制され、保護のためのプログラム割り込みが発生する。
セグメント・テーブル・エントリのDAT保護ビット(ビット54)は、対応する1メガバイトのセグメントへのストアが許可されるかどうかを以下のように制御する。
強化型DATが適用されない場合、又は強化型DATが適用され、且つSTEフォーマット制御が0である場合には、セグメント・テーブル・エントリのDAT保護ビットは、そのセグメント・テーブル・エントリによって指示されるページ・テーブル内の各エントリのDAT保護ビット位置内へと論理和演算されたものとして扱われる。よって、セグメント・テーブル・エントリのDAT保護ビットが1である場合、その効果は、あたかも指示されたページ・テーブルの中の各エントリ内のDAT保護ビットが1であるかのようなものである。
強化型DATが適用され、且つSTEフォーマット制御が1である場合には、セグメント・テーブル・エントリのDAT保護ビットは、対応する1メガバイトのセグメントへのストアが許可されるどうかを制御する。ビットが0である場合にはフェッチ及びストアの両方が許可され、ビットが1である場合にはフェッチのみが許可される。保護されたセグメントへストアが試行された場合、セグメントの内容は変更されず、操作単位又は命令の実行が抑制され、保護のためのプログラム割り込みが発生する。
強化型DATが適用される場合、領域テーブル・エントリのDAT保護ビットは、対応する領域へのストアが許可されるかどうかを制御する。領域テーブル・エントリ内のDAT保護ビットは、変換に用いられるいずれかの後続の領域テーブル・エントリ及びセグメント・テーブル・エントリのDAT保護ビット位置内へと論理和演算されたものとして扱われる。STEフォーマット制御が0である場合、DAT保護ビットは、さらにページ・テーブル・エントリまで伝搬される。
DAT保護は、仮想アドレスを用いる全てのストア・タイプ参照に適用される。
キー制御保護
キー制御保護がストレージ・アクセスに適用される場合、ストアは、ストレージ・キーがストレージ・アクセス要求に関連付けられたアクセス・キーと一致する場合にのみ許可され、フェッチは、キーが一致する場合、又はストレージ・キーのフェッチ保護ビットが0である場合に許可される。ストレージ・キーの4つのアクセス制御ビットがアクセス・キーに等しい場合、又はアクセス・キーが0である場合に、キーが一致したと言う。保護アクションは、以下のように要約される。
Figure 0004815539
ストレージへのアクセスがCPUによって開始され、且つキー制御保護が適用される場合には、PSWキーがアクセス・キーであるが、但し、MOVE TO SECONDARY及びMOVE WITH DESTINATION KEYの第1オペランド、MOVE TO PRIMARY、MOVE WITH KEY、及びMOVE WITH SOURCE KEYの第2オペランド、並びに第MOVE PAGEの1オペランド又は第2オペランドのいずれかについては、アクセス・キーは汎用レジスタ内で指定される。PSWキーは、カレント・プログラム・ステータス・ワードの8−11のビット位置を占める。
キー制御保護が原因でCPUアクセスが禁止されるとき、命令の実行は停止し、保護例外のためのプログラム割り込みが発生する。しかしながら、操作単位又は命令の実行は抑制されることもある。
ストレージ・キー
ストレージ・キーは、構成内で利用可能なストレージの各々の4キロバイト・ブロックに関連付けられる。ストレージ・キーはアドレス指定可能なストレージの一部ではない。一実施形態において、ストレージ・キーは以下のフォーマットを有する。
Figure 0004815539
ストレージ・キーの中のビット位置は以下のように割り振られる。
アクセス制御ビット(ACC):参照がキー制御保護を受けているならば、情報がストアされる場合、及びフェッチに対して保護されている位置から情報がフェッチされる場合に、4つのアクセス制御ビットが、4ビットのアクセス・キーと照合される。
フェッチ保護ビット(F):参照がキー制御保護を受けているならば、フェッチ保護ビットは、キー制御保護がフェッチ・タイプ参照に適用されるかどうかを制御し、0は、ストア・タイプ参照のみが監視され、どのようなアクセス・キーを有するフェッチも許可されることを示し、1は、キー制御保護がフェッチ及びストアの両方に適用されることを示す。
参照ビット(R):参照ビットは通常、対応するストレージ・ブロック内の位置が情報のストア又はフェッチのいずれかのために参照される都度、1に設定される。
変更ビット(C):変更ビットは、対応するストレージ・ブロック内の位置に情報がストアされる都度、1に設定される。
強化型DATが適用される場合、以下の追加条件が効力をもつ。
STEフォーマット制御(変換中に用いられるセグメント・テーブル・エントリのビット53であるFC)が0である場合、変換中に用いられるページ・テーブル・エントリのビット55は、そのページのための変更記録オーバーライド(CO)である。ページ・テーブル・エントリ内のCOビットが1である場合、そのページに対するいずれのストア動作についても変更記録は予測不可能である。
セグメント・テーブル・エントリの中のフォーマット制御ビット(CO)が1である場合、以下が適用される。
セグメント・テーブル・エントリのビット位置47は、ACCF妥当性制御を含む。ACCF妥当性制御は、STEの中のアクセス制御ビット及びフェッチ保護ビットの妥当性を決定する。ACCF妥当性制御が0である場合、キー制御保護は、そのアドレスに対応する4Kバイト・ブロックのためのストレージ・キーの中のアクセス制御ビット及びフェッチ保護ビットを用いる。
ACCF妥当性制御が1である場合、セグメント・テーブル・エントリのビット位置48−52は、そのセグメントについてのアクセス制御ビット及びフェッチ保護ビットを含む。ストレージ・オペランドに対するアクセス可能性を判定するときに、STEのビット48−52、又は、セグメントを構成する4Kバイト・ブロックのための個々のストレージ・キーのビット0−4のどちらが検査されるかは、予測不可能である。
セグメント・テーブル・エントリのビット55は、そのセグメントについての変更記録オーバーライド(CO)である。セグメント・テーブル・エントリ内のCOビットが1である場合、そのセグメントに対するいずれかのストア動作について変更記録が設定されるかどうかは予測不可能である。
ストレージ・キー・アクセス
ストレージ・キーへの参照は、以下のように取り扱われる。
ストレージの参照が行われ、且つキー制御保護が参照に適用される場合には常に、そのストレージ位置に関連付けられた4つのアクセス制御ビット及びフェッチ保護ビットが同時に、且つストレージ位置に対する参照と同時に、検査される。(1)強化型DATが適用されない場合、(2)強化型DATは適用されるが、STEフォーマット制御が0であるセグメント・テーブル・エントリによってストレージがアクセスされる場合、又は(3)強化型DATが適用され、STEフォーマット制御が1であるが、ACCF妥当性制御が0であるセグメント・テーブル・エントリによってストレージがアクセスされる場合、アクセス制御ビット及びフェッチ保護ビットは、4Kバイト・ブロックのためのストレージ・キーのビット0−4に存在する。強化型DATが適用され、STEフォーマット制御及びACCF妥当性制御の両方が1であるセグメント・テーブル・エントリによってストレージがアクセスされる場合、ストレージ・キーのビット0−4又はセグメント・テーブル・エントリのビット48−52のどちらがアクセス制御ビット及びフェッチ保護ビットを与えるかは予測不可能である。さらに、セグメント・テーブル・エントリがアクセス制御ビット及びフェッチ保護ビットを与える場合には、変換ルックアサイド・バッファ由来のバッファされたコピーを用いることができる。
強化型DATが適用され、且つ、(a)STEフォーマット制御が0であり、且つ、DATによって用いられるページ・テーブル・エントリ内の変更記録オーバーライドが1であるか、又は(b)STEフォーマット制御が1であり、且つ、DATによって用いられるセグメント・テーブル・エントリ内の変更記録オーバーライドが1であるかのいずれかの場合、CPUがストア動作を実施するときに変更ビットを設定するかどうかは予測不可能である。変更記録オーバーライドは、PTE又はSTEの変換ルックアサイド・バッファ・コピーの中にバッファリングすることができる。
条件付きSSKE特徴がインストールされていない場合、SET STORAGE KEY EXTENDED命令によって、ストレージ・キーの中の7つのビットの全てが同時に設定される。条件付きSSKEがインストールされている場合、SET STORAGE KEY EXTENDED命令を用いて、プログラム指定基準に基づいてストレージ・キーの全て又は一部を設定することができる。
INSERT STORAGE KEY EXTENDED命令は、4Kバイト・ブロックのためのストレージ・キーのビット0−6の一貫したイメージを提供する。同様に、INSERT VIRTUAL STORAGE KEY命令及びTEST PROTECTION命令は、アクセス制御ビット及びフェッチ保護ビットの一貫したイメージを提供する。
RESET REFERENCE BIT EXTENDED命令は、参照ビットのみを修正する。ストレージ・キーの他の全てのビットは変更されないままである。条件コードを設定するために、参照ビット及び変更ビットが同時に検査される。
参照ビットによって提供される参照の記録は、必ずしも正確でない。しかし、大部分の状況において、参照記録は、関連するストレージ参照とほぼ一致する。変更ビットを、ストアが発生しなかった場合に設定することができる。
他のCPUによって観察される際に、ストレージ・キーを明示的に操作する命令(INSERT STORAGE KEY EXTENDED、INSERT VIRTUAL STORAGE KEY、RESET REFERECE BIT EXTENDED、及びSET STORAGE KEY EXTENDED)に起因するストレージ・キー・フェッチ及びストアは、あたかもストレージ・キー・アクセス自体がそれぞれストレージ・オペランド・フェッチ及びストアであるかのように、それ自体の中で、及びストレージ・オペランド参照の中で順序付けられる。
SET STORAGE KEY EXTENDED(SSKE)
ストレージ・キーは、SET STORAGE KEY EXTENDED(SSKE)命令によって設定することができる。一実施形態において、SSKE命令は、以下のフォーマットを有する。
Figure 0004815539
1つ又は複数の4Kバイト・ブロックのためのストレージ・キーが、第1オペランド・レジスタ内の値で置換される。条件付きSSKEファシリティがインストールされている場合には、キー設定動作の特定の機能をバイパスすることができる。条件付きSSKEファシリティがインストールされていない場合、又は条件付きSSKEファシリティがインストールされ、且つM3フィールドのMRビット及びMCビットの両方が0である場合には、汎用レジスタR2の内容によってアドレス指定される4Kバイト・ブロックのためのストレージ・キーが、汎用レジスタR1からのビットで置換される。命令は、条件コードを変更することなく完了する。
条件付きSSKEファシリティがインストールされ、且つMRビット及びMCビットの一方又は両方が1である場合には、汎用レジスタR2の内容によってアドレス指定されるストレージ・キーのアクセス制御ビット、フェッチ保護ビット、及び随意に参照ビット及び変更ビットが、汎用レジスタR1内の対応するビットと比較される。比較されたビットが等しければ、キーに対する変更は行われない。そうでない場合には、キーの選択されたビットが、汎用レジスタR1内の対応するビットによって置換される。いずれかの変更の前のストレージ・キーは、汎用レジスタR1の中に挿入され、結果は条件コードによって示される。
強化型DATファシリティがインストールされている場合、後述の複数ブロック制御の制御の下で、同一の1MBブロック内の複数の4Kバイト・ブロックのストレージ・キーに対して上記の動作を繰り返すことができる。一実施形態において、M3フィールドは、以下のフォーマットを有する。
Figure 0004815539

M3フィールドのビットは、以下のように定められる。
未使用:ビット0は未使用とされる。
参照ビット更新マスク(MR):MRビット、即ちM3フィールドのビット1は、後述のように、ストレージ・キーの中の参照ビットに対する更新をバイパスすることができるかどうかを制御する。
変更ビット更新マスク(MC):MCビット、即ちM3フィールドのビット2は、後述のように、ストレージ・キーの中の変更ビットに対する更新をバイパスすることができるかどうかを制御する。
複数ブロック制御(MB):MBビット、即ちM3フィールドのビット3は、ストレージの複数の4Kバイト・ブロックのためのストレージ・キーを、複数の4Kバイト・ブロックにおけるストレージ・キーの設定の項で説明されるように設定してもよいかどうかを制御する。
強化型DATファシリティがインストールされていない場合、M3フィールドのビット位置3は未使用とされる。条件付きSSKEファシリティがインストールされている場合、処理は以下の通りである。
MRビット及びMCビット、即ちM3フィールドのビット1及び2の両方が0である場合、命令は、あたかも条件付きSSKEファシリティがインストールされていないかのように完了する。汎用レジスタR2の内容によってアドレス指定される4Kバイト・ブロックのためのストレージ・キーは、汎用レジスタR1からのビットで置換され、命令は条件コードを変更することなく完了する。
MRビット及びMCビットの一方又は両方が1である場合、処理は以下の通りである。
いずれかの変更に先立ち、汎用レジスタR2の内容によってアドレス指定される4Kバイト・ブロックのためのストレージ・キーの内容が汎用レジスタR1のビット位置48−54に置かれ、汎用レジスタR1のビット55は0に設定される。レジスタのビット0−47及び56−63は変更されない。ストレージ・キーをフェッチするときに無効なチェック・ブロック・コード(CBC)が検出された場合には、(a)4Kバイト・ブロックのためのストレージ・キー全体が汎用レジスタR1のビット56−62によって置換され、(b)汎用レジスタR1のビット位置48−55の内容は予測不可能であり、且つ(c)命令は条件コード3を設定することによって完了する。
指示された4Kバイト・ブロックのためのストレージ・キーのアクセス制御ビット及びフェッチ保護ビットが、汎用レジスタR1のビット56−60における対応するフィールドと比較される。それぞれのフィールドが等しくない場合には、4Kバイト・ブロックのためのストレージ・キー全体が汎用レジスタR1からのビットによって置換され、命令は条件コード1を設定することによって完了する。ストレージ・キーの中のアクセス制御ビット及びフェッチ保護ビットが汎用レジスタR1の中のそれぞれのビットに等しい場合には、処理は以下で説明されるように続行する。
MRビット及びMCビットの両方が1である場合、命令は条件コード0を設定することによって完了する。この場合は、ストレージ・キーは変更されないままである。
MRビットが0であり、且つMCビットが1である場合には、指示された4Kバイト・ブロックのためのストレージ・キーの参照ビットが、汎用レジスタR1のビット61と比較される。ビットが等しければ、命令は条件コード0を設定することによって完了する。この場合は、ストレージ・キーは変更されないままである。ビットが等しくない場合は、(a)指示された4Kバイト・ブロックのためのストレージ・キー全体が汎用レジスタR1の中のビットによって置換され、命令は条件コード1を設定することによって完了するか、又は(b)ストレージ・キーのための参照ビットが汎用レジスタR1のビット61によって置換され、そのキーのための変更ビットは予測不可能であり、命令は条件コード2を設定することによって完了するかの、いずれかである。条件コード1又は2のどちらが設定されるかは、予測不可能である。
MCビットが0であり、且つMRビットが1である場合には、指示された4Kバイト・ブロックのためのストレージ・キーの変更ビットが、汎用レジスタR1のビット62と比較される。ビットが等しければ、命令は条件コード0を設定することによって完了する。この場合は、ストレージ・キーは変更されないままである。ビットが等しくない場合は、(a)指示された4Kバイト・ブロックのためのストレージ・キー全体が汎用レジスタR1の中のビットによって置換され、命令は条件コード1を設定することによって完了するか、又は(b)ストレージ・キーのための参照ビットが汎用レジスタR1のビット62によって置換され、そのキーのための変更ビットは予測不可能であり、命令は条件コード2を設定することによって完了するかの、いずれかである。条件コード1又は2のどちらが設定されるかは、予測不可能である。
強化型DATファシリティがインストールされていない場合、又はファシリティはインストールされているが複数ブロック制御が0である場合には、汎用レジスタR2は実アドレスを含む。強化型DATファシリティがインストールされており、且つ複数ブロック制御が1である場合には、汎用レジスタR2は絶対アドレスを含む。24ビット・アドレス指定モードにおいては、汎用レジスタR2のビット40−51が実ストレージ又は絶対ストレージ内の4Kバイト・ブロックを指示し、レジスタのビット0−39及び52−63は無視される。31ビット・アドレス指定モードにおいては、汎用レジスタR2のビット33−51が実ストレージ又は絶対ストレージ内の4Kバイト・ブロックを指示し、レジスタのビット0−32及び52−63は無視される。64ビット・アドレス指定モードにおいては、汎用レジスタR2のビット0−51が実ストレージ又は絶対ストレージ内の4Kバイト・ブロックを指示し、レジスタのビット52−63は無視される。ストレージ・ブロックを指示するアドレスは、実アドレス又は絶対アドレスであるため、動的アドレス変換の対象ではない。ストレージ・キーに対する参照は、保護例外の対象ではない。
新たな7ビットのストレージ・キー値、又はその選択されたビットが、汎用レジスタR1のビット位置56−62から取得される。レジスタのビット位置0−55及び63の内容は無視される。条件付きSSKEファシリティがインストールされており、且つMRビット及びMCビットの一方又は両方が1である場合には、ビット位置63は0を含むべきである。さもなければ、プログラムは、将来的に互換的に動作しなくなる可能性がある。
シリアル化及びチェックポイント同期化機能が、動作の開始前に実施され、動作の完了後にも再度、実施されるが、但し、条件付きSSKEファシリティがインストールされており、且つ結果として得られた条件コードが0である場合には、動作完了後にシリアル化及びチェックポイント同期化機能が実施されるかどうかは予測不可能である。いずれかのCPU又はチャネル・プログラムによる、指示された4Kバイト・ブロックに対する、この命令によるキーの設定の前又は後のどちらかに完了する、どのストア・アクセスについても、そのブロックのためのストレージ・キーにおける関連付けられた参照ビット及び変更ビットの1への設定もまた、この命令の実行のそれぞれ前又は後に完了する。
複数の4Kバイト・ブロックにおけるストレージ・キーの設定
強化型DATファシリティがインストールされていない場合、又はファシリティはインストールされているが複数ブロック制御が0である場合には、上述のように、単一の4Kバイト・ブロックのためのストレージ・キーが設定される。強化型DATファシリティがインストールされており、且つ複数ブロック制御が1である場合には、1メガバイト・ブロック内の複数4Kバイト・ブロックのためのストレージ・キーを、第2オペランド・アドレスによって指定されるブロックから開始して、右方向に各々の逐次的なブロックに続き、次の1メガバイト境界まで設定することができる。この場合、SET STORAGE KEY EXTENDEDは割り込み可能であり、処理は以下の通りである。
割り込みが発生したとき(停止に続くもの以外の)、汎用レジスタR2は更新されているので、命令は、再実行されたときに割り込み時点で再開する。MRビット又はMCビットの一方又は両方が1であれば、条件コードは予測不可能である。そうでない場合には、条件コードは変更されない。
命令が割り込みなしに完了したとき、汎用レジスタR2は次の1メガバイト境界まで更新されている。MRビット又はMCビットの一方又は両方が1であれば、条件コード3が設定される。そうでない場合には、条件コードは変更されない。
上記の2つの場合のいずれかにおいて、MRビット又はMCビットの一方又は両方が1であれば、汎用レジスタR1のビット48−55は予測不可能である。
複数ブロック処理が発生し、R1フィールド及びR2フィールドが同じレジスタを指示する場合、第2オペランド・アドレスがレジスタ内に置かれる。複数ブロック処理が24ビット又は31ビット・アドレス指定モードで発生した場合、汎用レジスタR2のビット位置32−63におけるアドレスの一部ではない最左端ビットは0に設定され、レジスタのビット0−31は変更されない。
得られる条件コード:
条件付きSSKEファシリティがインストールされていない場合、又はM3フィールドのMRビット及びMCビットの両方が0である場合には、条件コードは変更されないままである。条件付きSSKEがインストールされており、且つMRビット及びMCビットの一方又は両方が1である場合には、条件コードは以下のように設定される。
0−ストレージ・キーは設定されない
1−ストレージ・キー全体が設定される
2−ストレージ・キーの一部が設定される
3−ストレージ・キー全体が設定され、汎用レジスタR1のビット48−55は予測不可能である。
プログラム例外:
アドレス指定(汎用レジスタR2によって指定されるアドレス)
特権操作
変更記録
変更記録は、主ストレージにおいてページが置換されるときにどのページを補助ストレージ内に保存しなければならないかについての情報を提供する。変更記録は、ストレージ・キーの変更ビット(ビット6)を用いる。変更ビットは、ストア・アクセスが対応するストレージ・ブロックの内容を変更させ、且つ(a)強化型DATが適用されない場合、又は(b)強化型DATが適用される場合のどちらかであって、且つ以下のうちのどちらかが真であるときに、その都度、1に設定される。即ち、
DATによって用いられるセグメント・テーブル・エントリ内のSTEフォーマット制御が0であり、且つDATによって用いられるページ・テーブル・エントリ内の変更記録オーバーライド(CO)が0である。
DATによって用いられるセグメント・テーブル・エントリ内のSTEフォーマット制御が1であり、且つDATによって用いられるセグメント・テーブル・エントリ内の変更記録オーバーライド(CO)が0である。
ストレージの内容を変更しないストア・アクセスは、変更ビットを1に設定する場合も設定しない場合もある。アクセスが禁止されている場合にストアする試行については、変更ビットは1に設定されない。具体的には、
CPUについて、ストア・アクセスは、そのアクセスに対してアクセス例外が存在する場合には常に、又はそのアクセスに対するアクセス例外の優先順位より高い優先順位を有する例外が存在する場合には常に、禁止される。
チャネル・サブシステムについて、ストア・アクセスは、そのアクセスに対してキー制御保護違反が存在する場合には常に、禁止される。
変更記録は、常にアクティブであり、いずれかのCPU(但し、本明細書で説明される、変更記録オーバーライドによって抑制される場合を除く)、いずれかのオペレータ・ファシリティ、又はチャネル・サブシステムによって行われるストア・アクセスを含む、ストレージへの全てのストア・アクセスに対して発生する。それは、マシンによって行われる暗黙的な参照、例えば割り込みの一部である参照に対して発生する。
以下の命令のオペランドは、ストレージ位置を修正することなくストレージ・キーを直接修正するので、これらの命令のオペランドに対しては、変更記録は発生しない。
RESET REFERENCE BIT EXTENDED
SET STORAGE KEY EXTENDED(変更ビットは指定された値に設定される)
0から1に変更された変更ビットは、CPUの再試行の際に必ずしも0に復旧される必要はない。
変更記録オーバーライド(CO)
ストレージ・キーの変更ビットは、ストア・アクセスが対応するストレージ・ブロックの内容を変更させる都度、1に設定される。ストレージの内容を変更しないストア・アクセスは、変更ビットを1に設定する場合も、しない場合もある。アクセスが禁止されている場合にストアする試行については、変更ビットは1に設定されない。変更記録オーバーライドは、ストレージ・キーの変更ビットの設定をバイパスすることを可能にする。
強化型DATが適用され、且つDATテーブル・エントリによって仮想アドレスが変換される場合、セグメント・テーブル・エントリ及びページ・テーブル・エントリの両方のビット55において変更記録オーバーライド(CO)が与えられる。セグメント・テーブル・エントリのSTEフォーマット制御(FC)ビット53が0である場合には、ページ・テーブル・エントリ内の変更記録オーバーライドが適用される。PTE内の変更記録オーバーライドが0である場合には、4Kバイト・ブロックへのストア動作に対して、変更記録が発生する。変更記録オーバーライドが1である場合には、4Kバイト・ブロックへのストア動作に対して変更記録が発生するかどうかは予測不可能である。STEフォーマット制御が1である場合には、STE内の変更記録オーバーライドが適用される。STE内の変更記録オーバーライドが0である場合には、セグメントの256個の4Kバイト・ブロックのうちのいずれかへのストア動作に対して、変更記録が発生する。STE内の変更記録オーバーライドが1である場合には、セグメントの256個の4Kバイト・ブロックのうちのいずれかに対して変更記録が発生するかどうかは予測不可能である。
変更記録オーバーライドは、実アドレス若しくは絶対アドレスに対しては適用されず、又は、実空間指示によって変換される仮想アドレスに対しても適用されない。
実施フレーム管理機能(PFMF)
Figure 0004815539
第1オペランド・レジスタの制御の下で、第2オペランド・アドレスによって指定されるストレージ・フレームのためにフレーム管理機能が実施される。汎用レジスタR1の内容は以下の通りである。
フレーム管理機能表示:
汎用レジスタR1のビット位置44−47は、以下のようなフレーム管理機能表示(FMFI)を含む。
セット・キー制御(SK):ビット46は、フレーム内の各4Kバイト・ブロックのためのストレージ・キーを汎用レジスタR1のビット56−62から設定するかどうかを制御する。SK制御が0である場合、キーは設定されず、SK制御が1である場合、キーは設定される。
クリア・フレーム制御(CF):ビット47は、フレームを0に設定するかどうかを制御する。CF制御が0である場合、クリア動作は実施されない。CF制御が1である場合、フレームは0にクリアされる。
使用表示(UI):汎用レジスタR1のビット位置48は、使用表示(UI)を含む。ビット48が0である場合、プログラムがそのフレームの即時の使用を予期していないことを示す。ビット48が1である場合、プログラムがそのフレームを近い将来に使用することを予期していることを示す。
フレーム・サイズ・コード(FSC):汎用レジスタR1のビット49−51は、以下のようなフレーム・サイズ・コード(FSC)を含む。
Figure 0004815539
参照ビット更新マスク(MR):セット・キー制御、即ち汎用レジスタR1のビット46が1である場合、汎用レジスタR1のビット53は、後述のように、ストレージ・キー内の参照ビットに対する更新をバイパスすることができるかどうかを制御する。
変更ビット更新マスク(MC):セット・キー制御、即ち汎用レジスタR1のビット46が1である場合、汎用レジスタR1のビット54は、ストレージ・キー内の変更ビットに対する更新をバイパスすることができるかどうかを制御する。
MR及びMCビットの扱いは、汎用レジスタR1が以前のキーの内容で更新されないこと、及び条件コードが変更されないこと以外は、SET STORAGE KEY EXTENDED命令のM3フィールドの対応するビットの扱いと同一である。
キー:セット・キー制御、即ち汎用レジスタR1のビット46が1である場合、レジスタのビット56−62は、フレーム内の4Kバイト・ブロックごとに設定すべきストレージ・キーを含み、アクセス保護ビット、フェッチ保護ビット、参照ビット、及び変更ビットを、それぞれビット位置56−59、60、61、及び62に有する。
汎用レジスタR2は、その上でフレーム管理機能を実施すべきストレージ・フレームの実アドレス又は絶対アドレスを含む。フレーム・サイズ・コードが、4Kバイト・ブロックを指示する場合、第2オペランド・アドレスは実であり、フレーム・サイズ・コードが、1Mバイト・ブロックを指示する場合、第2オペランド・アドレスは絶対である。汎用レジスタR2内のアドレスの扱いは、アドレス指定モードに依存する。24ビット・アドレス指定モードでは、レジスタのビット位置40−51の最右端に12個の0を付加したものがアドレスであり、ビット0−39及び52−63は無視される。31ビット・アドレス指定モードでは、レジスタのビット位置33−51の最右端に12個の0を付加したものがアドレスであり、ビット0−32及び52−63は無視される。64ビット・アドレス指定モードでは、レジスタのビット位置0−51の最右端に12個の0を付加したものがアドレスであり、ビット52−63は無視される。
ここで説明したレジスタの内容を以下に示す。
Figure 0004815539
フレーム・サイズ・コードが0である場合、指定されたフレーム管理機能は、第2オペランドによって指定された4Kバイト・フレームについて実施される。汎用レジスタR2は、この場合には未修正である。
フレーム・サイズ・コードが1である場合、指定されたフレーム管理機能は、1Mバイト・フレーム内の1つ又は複数の4Kバイト・ブロックについて、第2オペランド・アドレスによって指定されるブロックから開始して、右方向に各々の逐次的なブロックに続けて、次の1メガバイト境界まで実施することができる。
この場合、実施フレーム管理機能は割り込み可能であり、処理は以下の通りである。
割り込みが発生したとき(停止に続くもの以外の)、汎用レジスタR2内の第2オペランド・アドレスは処理された4Kバイト・ブロックの数で更新されているので、命令は、再実行されたときに割り込み時点で再開する。
命令が割り込みなしに完了したとき、汎用レジスタR2内の第2オペランド・アドレス、は次の1メガバイト境界まで更新されている。
24ビット又は31ビット・アドレス指定モードにおけるフレーム・サイズ・コードが1である場合、汎用レジスタR2のビット位置32−63における、アドレスの一部ではない最左端ビットは0に設定され、レジスタのビット0−31は変更されない。
クリア・フレーム制御が1である場合、第2オペランド内の主ストレージに対する参照は、必ずしも単一アクセス参照である必要はなく、且つ、他のCPU及びチャンネル・プログラムによって観察されるように必ずしも左から右へ向かう方向で実施される必要はない。クリア動作は、キー制御保護の対象ではない。
ストレージ・キー制御が1である場合、各4Kバイト・ブロックに対する動作は、複数ブロックのためのキーが設定されたときに制御コード及び汎用レジスタR1の内容が変更されないこと以外は、SSKEに関して説明された動作と同様である。シリアル化及びチェックポイント同期化機能が、動作の開始前に実施され、動作の完了後にも再度、実施されるが、但し、設定すべき全てのストレージ・キーの7つのビットが汎用レジスタR1のビット56−62と同一である場合、又はMR及びMCビットが全てのストレージ・キーを未変更のままとする場合には、動作完了後にシリアル化及びチェックポイント同期化動作が実施されるかどうかは予測不可能である。クリア・フレーム又はセット・キー動作のそれぞれの制御が両方とも1である場合に、どちらの動作が最初に実施されるのかは、予測不可能である。ストレージへの他のCPU又はチャネル・サブシステムによる他のアクセスがないという条件で、命令の最終結果は、MR及びMCが0である場合に指定されたR及びC値を含む指定されたキー値を反映する。
特別な条件
以下の条件については、指定例外が認識され、動作が抑制される。即ち、
汎用レジスタR1のビット32−45、52、55、又は63が0ではない。
フレーム・サイズ・コードが、未使用の値を指定する。
条件コード:コードは、変更されないままである。
実施フレーム管理機能(PFMF)−ストレージ・キー
ここで、関連付けられたストレージ・キーが命令に従って設定される実施フレーム管理機能の流れ図の一実施形態を示す、図11を参照する。
910において、マシン・アーキテクチャに対して定義されたマシン命令が取得される。マシン命令は、フレーム管理命令のためのオペコードを含む。マシン命令は、第1汎用レジスタを識別する第1フィールドと、第2汎用レジスタを識別する第2フィールドとを含む。912において、主ストレージ又はメモリ内の大データ・ブロック内の初期第1データ・ブロックのアドレスが、第2汎用レジスタから取得される。914において、フレーム管理情報が、第1汎用レジスタから取得される。フレーム管理情報は、アクセス保護ビットの第1のセットを備えたキー・フィールドを有する。大データ・ブロックのために、大データ・ブロックの初期第1データ・ブロックの第2オペランド・アドレスが、第2汎用レジスタから取得される。大データ・ブロックは、複数の小データ・ブロックを有する。小データ・ブロックの各々は、ストレージ・アクセス保護ビットを有する対応するストレージ・キーを有する。916において、大データ・ブロックのために、キー・フィールドのアクセス保護ビットが、大ブロックに関連付けられた各キーのストレージ・アクセス保護ビットの中に設定される。小データ・ブロックのために、初期第1小データ・ブロックのオペランド・アドレスが、第2汎用レジスタから取得される。各データ・ブロックは、対応するストレージ・キーを有する。ストレージ・キーは、ストレージ・アクセス保護ビットを有する。アクセス保護ビットが、小ブロックのためのストレージ・キーのストレージ・アクセス保護ビットの中に設定される。
実施フレーム管理機能(PFMF)−クリア・フレーム
ここで、示されたフレームがクリアされる実施フレーム管理機能の一実施形態の流れ図を示す、図10を参照する。
1010において、マシン・アーキテクチャに対して定義されたマシン命令が取得される。マシン命令は、フレーム管理命令のためのオペコードを含む。マシン命令は、第1汎用レジスタを識別する第1フィールドと、第2汎用レジスタを識別する第2フィールドとを含む。1012において、フレーム・サイズ・フィールドを有するクリア・フレーム情報が、第1汎用レジスタから取得される。1014において、そのフレーム・サイズ・フィールドが、ストレージ・フレームがメモリ内の小データ・ブロック、又はメモリ内の大データ・ブロックのうちのどちらの1つであることを示しているかの判定が行われる。1016において、マシン命令がその上で実施されるべきストレージ・フレームの第2のオペランド・アドレスが、第2汎用レジスタから取得される。第2オペランド・アドレスは、メモリ内の小データ・ブロックの実アドレス又はメモリ内の大データ・ブロックの絶対アドレスのうちのいずれかである。1018において、示されたストレージ・フレームが小データ・ブロックであれば、その小データ・ブロックは、小データ・ブロックの全てのバイトを0に設定することによってクリアされる。示されたストレージ・フレームが大データ・ブロックであれば、その大データ・ブロックの初期第1データ・ブロックのオペランド・アドレスが、第2汎用レジスタから取得される。大データ・ブロックは、第1の複数の小データ・ブロックを有する。1020において、小データ・ブロックの各々が、初期第1データ・ブロックから開始して、データの全てのバイトを0に設定することによってクリアされる。
フレーム管理機能の別の実施形態において、ブロック・サイズ表示が、マシン命令のフィールド又は第1汎用レジスタのフィールドから取得される。ブロック・サイズ表示に基づいて、アドレス指定されたオペランドが大データ・ブロック又は小データ・ブロックのどちらであるかについての判定が行われる。オペランド・アドレスは、大データ・ブロックの絶対アドレス又は小データ・ブロックの実アドレスのいずれかである。実アドレスにプリフィックス付加を行って、絶対アドレスが決定される。大データ・ブロックのために、次のデータ・ブロックのアドレスが第2汎用レジスタ内に保存される。次のデータ・ブロックは、第1データ・ブロックの後に続くデータ・ブロックである。次のデータ・ブロックのアドレスは、大データ・ブロックの境界に遭遇することによって、又はプログラム割り込みイベントに対する応答して、判定される。
フレーム管理機能のさらに別の実施形態において、フレーム管理フィールドは、参照制御フィールド及び変更制御フィールドを含む。キー・フィールドは、フェッチ保護ビット、変更ビット、及び参照ビットを有する。ストレージ・キーは、ストレージ・フェッチ保護ビット、ストレージ参照ビット、及びストレージ変更ビットを有する。参照制御フィールド及び変更制御フィールドがイネーブルでない場合、キー・フィールドのフェッチ保護ビット、参照ビット、及び変更ビットが、関連付けられたストレージ・キーの対応するストレージ・フェッチ保護ビット、ストレージ参照ビット、及びストレージ変更ビットの中に設定される。参照制御フィールド又は変更制御フィールドのいずれかがイネーブルであり、且つ、キー・フィールドのアクセス保護ビットがストレージ・キーのストレージ・アクセス保護ビットと等しくないか又は保護ビットがストレージ保護ビットと等しくない場合、キー・フィールドのフェッチ保護ビット、参照ビット、及び変更ビットが、各々関連付けられたストレージの対応するストレージ・フェッチ保護ビット、ストレージ参照ビット及びストレージ変更ビットの中に設定される。
別の実施形態において、マシン命令がプロセッサのマシン命令アーキテクチャに対してネイティブでない場合には、マシン命令は、そのマシン命令の動作をエミュレートするための所定のソフトウェア・ルーチンを識別するために翻訳される。所定のソフトウェア・ルーチンは、複数の命令を含む。所定のソフトウェア・ルーチンが実行される。
商業的な実装
本明細書においてはIBM(登録商標)によるz/Arhitectureについて述べているが、本発明の1つ又は複数の態様は、ページング可能なエンティティ又は同様の構成を使用する他のマシン・アーキテクチャ及び/又はコンピュータ環境に対しても同等に適用可能である。
本明細書において開示されるeDATファシリティ並びに他のフォーマット、命令及び属性の商業的な実施形態は、ハードウェア内に、又はオペレーティング・システム・プログラマのようなプログラマによって、例えば、アセンブリ言語で記述された状態で実装することができる。このようなプログラミング命令は、IBM(登録商標)System z serverのようなコンピュータ環境において、又は代替的に他のアーキテクチャを実行するマシンにおいて、ネイティブに実行されることが意図されるストレージ媒体上にストアすることができる。命令は、既存の又は将来のIBM(登録商標)サーバにおいて、及び他のマシン又はメインフレーム上で、エミュレートすることができる。それらは、一般に実行がエミュレーション・モードであるマシンにおいて実行することができる。
本発明の1つ又は複数の態様は、例えば、仮想機械エミュレーションに対しても同等に適用可能であり、そこでは、1つ又は複数のページング可能なエンティティ(例えば、ゲスト)を1つ又は複数のプロセッサ上で実行する。一例として、ページング可能なゲストは、その全体を引用によりここに組み入れる非特許文献2に記載されるStart Interpretive Execution(SIE)アーキテクチャによって定義される。
エミュレーション・モードにおいては、本明細書の記載を理解した後の当業者の技術範囲内にあるように、エミュレートされる特定の命令がデコードされ、サブルーチン又はドライバの場合のように個々の命令を実装するためにサブルーチンが実行され、又は特定のハードウェアのためのドライバを提供するために他の何らかの技術が用いられる。種々のソフトウェア及びハードウェア・エミュレーション技術は、その各々が引用によりここに組み入れられる特許文献1、特許文献2、特許文献3、特許文献4、特許文献5、及び特許文献6を含む、多数の米国特許に記載されている。他の多くの教示が、ターゲット・マシンのためのアーキテクチャ化された命令セットのエミュレーションを達成するための種々の手法をさらに説明している。
他の変形及びアーキテクチャ
本明細書において説明された種々の実施形態は、単なる例である。これらの実施形態には、本発明の精神から逸脱することなく、多数の変形が存在し得る。
本発明の1つ又は複数の能力は、ソフトウェア、ファームウェア、ハードウェア、又はその幾つかの組み合わせで実装することができる。本発明の態様は、複数のゾーンを有する他の環境、及びパーティション化されていない環境を含む、多くの種類の環境にとって有利である。さらに、中央処理装置の複合体は存在しないかもしれないが、それでも互いに結合された複数のプロセッサが存在する場合もある。本明細書における種々の態様は、単一プロセッサ環境に対して適用可能である。
本明細書においては特定の環境が説明されているが、ここでもまた、本発明の精神から逸脱することなく、これらの環境の多数の変形を実装することができる。例えば、環境が論理パーティション化されている場合、より多数又はより少数の論理パーティションを環境に含めることができる。さらに、互いに結合された複数の中央処理装置複合体が存在し得る。これらは、本発明の精神から逸脱することなく行うことができる変形のごく一部である。付加的に、他の変形も可能である。
「ページ」という用語は、固定されたサイズ又は所定サイズのストレージ・エリアを指すために用いられているが、ページのサイズは様々であり得る。同様に、ブロックのサイズは様々であり得る。異なるサイズのブロック及び/又はページが存在してもよい。ページはブロックと均等であり得る。他の構造を代替的に用いることができ、又は、ソフトウェア及び/又はハードウェアを通じて、他の形で実装することができる。さらに、本明細書において説明された例において、異なるサイズのワード又はアドレス、異なるビット数、異なる順序のビット、より多数の、より少数の、又は異なるビット、より多数の、より少数の、又は異なるフィールド、異なる順序のフィールド、異なるサイズのフィールドなどを含むがこれらに限定されない多数の変形が存在し得る。ここでもまた、それらは例としてのみ提供される。多数の変形が可能である。
処理ユニットは、ゲスト、ホスト、他のプロセッサ、エミュレータ、仮想マシン、及び/又は他の同様の構造のようなページング可能なエンティティを含む。バッファは、ストレージ及び/又はメモリのエリア、並びに、アレイ又はページング可能なエンティティを含むがこれらに限定されない異なる種類のデータ構造を含む。テーブルも同様に他のデータ構造を含むことができる。命令は、他のレジスタを参照することができる。さらに、ページ、セグメント、及び/又は領域は、本明細書に記載されたものとは異なる種々のサイズとすることができる。
本発明の1つ又は複数の態様は、例えば、コンピュータ使用可能又は機械可読媒体を有する製品(例えば、1つ又は複数のコンピュータ・プログラム製品)内に組み入れることができる。媒体は、例えば、本発明の能力を提供し、促進するためのコンピュータ可読プログラム・コード手段又は論理(例えば、命令、コード、コマンドなど)をその中に具体化する。製品は、コンピュータ・システムの一部として組み入れることもでき、又は単独で販売することもできる。さらに、機械によって読み出し可能であり、且つ、本発明の能力を実施するための、その機械によって実行可能な命令の少なくとも1つのプログラムを具体化する、少なくとも1つのプログラム・ストレージ・デバイスを提供することができる。
本明細書において描かれた流れ図は例示的なものである。記載された図面又はステップ若しくは動作には、本発明の精神から逸脱することなく、多数の変形が存在し得る。例えば、ステップは違う順序で実施することができ、又はステップを追加、削除若しくは修正することができる。これらの変形の全ては、特許請求される本発明の一部であると見なされる。
その実施形態を、本明細書において詳細に描写し、説明してきたが、本発明の精神から逸脱することなく、種々の修正、付加、置換などを行うことができること、従って、それらは添付の特許請求の範囲において定められる本発明の範囲内にあると見なされることが当業者には明らかである。

Claims (8)

  1. 仮想アドレスを、前記仮想アドレスの変換のために用いられる変換テーブル階層構造を有するマシン・アーキテクチャのコンピュータ・システムにおける主ストレージ内のデータ・ブロックの変換アドレスに変換することが可能なプロセッサにおける、フレーム管理機能を実施するための方法であって、前記フレーム管理機能は、前記マシン・アーキテクチャのために定義されており、前記方法が、
    セット・ストレージ・キー及びクリア命令のためのオペコードを含むマシン命令を取得するステップと、
    前記マシン命令を実行するステップと
    を含み、前記マシン命令を実行するステップが、
    複数のアクセス保護ビットとブロックサイズ・インジケータ・フィールドとを含むキー・フィールドを備えたフレーム管理フィールドを取得するステップと、
    前記マシン命令がその上で実施されるべきストレージ・フレームのオペランド・アドレスを取得するステップであって、前記オペランド・アドレスが、大データ・ブロックに対するアドレス及び小データ・ブロックに対するアドレスのうちの1つである、ステップと、
    セット・ストレージ・キー機能がイネーブルであることに応答して、決定された前記データ・ブロックに関連付けられた各ストレージ・キーのストレージ・アクセス保護ビットを、前記キー・フィールドの前記アクセス保護ビットの値に設定するステップと、
    クリア機能がイネーブルであることに応答して、前記オペランド・アドレスによってアドレス指定された各データ・ブロックを、各データ・ブロックの全てのバイトを0に設定することによってクリアするステップと
    を含む、方法。
  2. 前記取得されたマシン命令が、第1汎用レジスタを識別する第1フィールドと第2汎用レジスタを識別する第2フィールドとをさらに含み、前記複数のアクセス保護ビットとブロックサイズ・インジケータ・フィールドとを含むキー・フィールドを備えたフレーム管理フィールドが、前記第1汎用レジスタから取得され、前記マシン命令がその上で実施されるべきストレージ・フレームのオペランド・アドレスが、前記第2汎用アドレスから取得され、前記オペランド・アドレスが、大データ・ブロックに対する絶対アドレス、又は小データ・ブロックに対する実アドレスのうちの1つであり、前記実アドレスに対してプリフィックス付加が行われる、請求項1に記載の方法。
  3. 前記ストレージ・キーが、ストレージ保護ビット、ストレージ参照ビット、及びストレージ変更ビットをさらに含み。前記キー・フィールドが、フェッチ保護ビット、参照ビット、及び変更ビットさらに含み、前記大データ・ブロックが前記小データ・ブロックより大きく、前記小データ・ブロックのために、
    前記第2汎用レジスタから前記小データ・ブロックのオペランド・アドレスを取得するステップであって、前記小データ・ブロックが複数のストレージ・アクセス保護ビットを含むストレージ・キーを有するステップと、
    前記キー・フィールドの前記アクセス保護ビットを、前記ストレージ・キーの前記ストレージ・アクセス保護ビットの中に設定するステップと
    をさらに含む、請求項2に記載の方法。
  4. 前記大データ・ブロックのために、次のデータ・ブロックのアドレスを前記第2汎用レジスタ内に保存し、前記次のデータ・ブロックが、前記大データ・ブロックの後に続くデータ・ブロックである、請求項3に記載の方法。
  5. 前記フレーム管理フィールドが、セット・ストレージ・キー・インジケータ及びクリア・ストレージ・インジケータをさらに含み、前記決定するステップが、前記セット・ストレージ・キー・インジケータがイネーブルであれば、前記セット・ストレージ・キー機能がイネーブルであり、前記セット・ストレージ・キー・インジケータがイネーブルでなければ、前記セット・ストレージ・キー機能がイネーブルでなく、前記クリア・ストレージ・インジケータがイネーブルであれば、前記クリア機能がイネーブルであり、前記クリア・ストレージ・インジケータがイネーブルでなければ、クリア機能がイネーブルでないことをさらに含む、請求項1に記載の方法。
  6. 前記マシン命令が、前記プロセッサの前記マシン命令のアーキテクチャに対してネイティブではなく、
    前記マシン命令を、前記マシン命令の動作をエミュレートするための所定のソフトウェア・ルーチンを識別するために翻訳するステップであって、前記所定のソフトウェア・ルーチンが複数の命令を含む、ステップと、
    前記所定のソフトウェア・ルーチンを実行するステップと
    をさらに含む、請求項1に記載の方法。
  7. 方法に係る請求項1から請求項6のいずれか1項に記載の方法の全てのステップを実行するように適合された手段を備える、システム。
  8. コンピュータ・プログラムであって、前記コンピュータ・プログラムがコンピュータ・システム上で実行されるときに、請求項1から請求項6のいずれか1項に記載の方法の全てのステップをコンピュータに実行させる、コンピュータ・プログラム。
JP2010541764A 2008-01-11 2009-01-05 フレーム管理を有する動的アドレス変換 Active JP4815539B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/972,725 US8417916B2 (en) 2008-01-11 2008-01-11 Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US11/972,725 2008-01-11
PCT/EP2009/050051 WO2009087134A1 (en) 2008-01-11 2009-01-05 Dynamic address translation with frame management

Publications (2)

Publication Number Publication Date
JP2011509471A JP2011509471A (ja) 2011-03-24
JP4815539B2 true JP4815539B2 (ja) 2011-11-16

Family

ID=40428033

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010541764A Active JP4815539B2 (ja) 2008-01-11 2009-01-05 フレーム管理を有する動的アドレス変換

Country Status (16)

Country Link
US (1) US8417916B2 (ja)
EP (1) EP2229631B1 (ja)
JP (1) JP4815539B2 (ja)
KR (1) KR101310412B1 (ja)
CN (1) CN101911024B (ja)
AT (1) ATE551653T1 (ja)
BR (1) BRPI0906426B1 (ja)
CA (1) CA2701086C (ja)
CY (1) CY1112694T1 (ja)
DK (1) DK2229631T3 (ja)
ES (1) ES2381428T3 (ja)
IL (1) IL206847A (ja)
PL (1) PL2229631T3 (ja)
PT (1) PT2229631E (ja)
SI (1) SI2229631T1 (ja)
WO (1) WO2009087134A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103851B2 (en) 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8082405B2 (en) * 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8335906B2 (en) * 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8019964B2 (en) 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8041922B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8037278B2 (en) 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8176280B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8086811B2 (en) * 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US8806179B2 (en) 2009-12-15 2014-08-12 International Business Machines Corporation Non-quiescing key setting facility
JP4915756B2 (ja) * 2009-12-16 2012-04-11 インターナショナル・ビジネス・マシーンズ・コーポレーション アドレス変換を高速化する方法及びシステム
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
DE102013216885A1 (de) 2013-08-26 2015-02-26 Volkswagen Aktiengesellschaft Fahrzeugsitz mit einer Massageeinrichtung und mindestens einer Heizeinrichtung zur Umsetzung einer "Hot-Stone"-Massagefunktion"
US9996349B2 (en) * 2015-01-27 2018-06-12 International Business Machines Corporation Clearing specified blocks of main storage
EP3497624A1 (en) * 2016-08-13 2019-06-19 Intel Corporation Apparatuses, methods, and systems for neural networks
US11500665B2 (en) * 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
CN110837372B (zh) * 2019-11-04 2021-01-26 贵阳动视云科技有限公司 汇编代码清除混淆的方法、装置、介质及设备
CN112965724B (zh) * 2021-03-22 2024-06-07 中国信息安全测评中心 一种固件的装载基址范围的确定方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03137747A (ja) * 1989-10-20 1991-06-12 Internatl Business Mach Corp <Ibm> プロセツサおよび命令実行方法
JPH0573417A (ja) * 1992-02-14 1993-03-26 Hitachi Ltd データ処理装置
US20060036824A1 (en) * 2003-05-12 2006-02-16 International Business Machines Corporation Managing the updating of storage keys

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4972338A (en) * 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
JP2635058B2 (ja) * 1987-11-11 1997-07-30 株式会社日立製作所 アドレス変換方式
US5058003A (en) * 1988-12-15 1991-10-15 International Business Machines Corporation Virtual storage dynamic address translation mechanism for multiple-sized pages
US5617554A (en) * 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
JP3137747B2 (ja) 1992-07-09 2001-02-26 株式会社リコー 昇華型熱転写用受像シート
AU6629894A (en) * 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5551013A (en) * 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US5790825A (en) * 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
GB2325061B (en) * 1997-04-30 2001-06-06 Advanced Risc Mach Ltd Memory access protection
US6009261A (en) * 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) * 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
DE10002120B4 (de) * 1999-02-13 2006-04-20 International Business Machines Corp. Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung
US7069412B2 (en) * 1999-02-17 2006-06-27 Elbrus International Method of using a plurality of virtual memory spaces for providing efficient binary compatibility between a plurality of source architectures and a single target architecture
FR2814557B1 (fr) * 2000-09-27 2002-12-27 Gemplus Card Int Protection contre l'exploitation abusive d'une instruction dans une memoire
US6574706B2 (en) * 2001-02-28 2003-06-03 International Business Machines Corporation Managing unvirtualized data pages in real storage
US6985951B2 (en) * 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US7299243B2 (en) * 2001-09-19 2007-11-20 Bmc Software, Inc. System and method for controlling free space distribution by key range within a database
US7120746B2 (en) * 2002-09-09 2006-10-10 International Business Machines Corporation Technique for data transfer
US7703097B2 (en) * 2002-11-15 2010-04-20 International Business Machines Corporation Auto-commit processing in an IMS batch application
US7530067B2 (en) * 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7020761B2 (en) * 2003-05-12 2006-03-28 International Business Machines Corporation Blocking processing restrictions based on page indices
US6996698B2 (en) * 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
US7234037B2 (en) * 2003-11-25 2007-06-19 International Business Machines Corporation Memory mapped Input/Output operations
US7941799B2 (en) * 2004-05-27 2011-05-10 International Business Machines Corporation Interpreting I/O operation requests from pageable guests without host intervention
US8214622B2 (en) * 2004-05-27 2012-07-03 International Business Machines Corporation Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment
US8387049B2 (en) * 2005-07-15 2013-02-26 International Business Machines Corporation Facilitating processing within computing environments supporting pageable guests
US7464249B2 (en) * 2005-07-26 2008-12-09 International Business Machines Corporation System and method for alias mapping of address space
JP4469783B2 (ja) * 2005-11-28 2010-05-26 株式会社東芝 メモリ保護装置、メモリ保護システムおよびメモリ保護方法
JP5073417B2 (ja) 2007-08-27 2012-11-14 株式会社ディスコ チャックテーブル
US8041923B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8151083B2 (en) * 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8103851B2 (en) * 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8019964B2 (en) * 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8335906B2 (en) * 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8041922B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8677098B2 (en) * 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8082405B2 (en) * 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8037278B2 (en) * 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8117417B2 (en) * 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8095773B2 (en) * 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03137747A (ja) * 1989-10-20 1991-06-12 Internatl Business Mach Corp <Ibm> プロセツサおよび命令実行方法
JPH0573417A (ja) * 1992-02-14 1993-03-26 Hitachi Ltd データ処理装置
US20060036824A1 (en) * 2003-05-12 2006-02-16 International Business Machines Corporation Managing the updating of storage keys
JP2006526203A (ja) * 2003-05-12 2006-11-16 インターナショナル・ビジネス・マシーンズ・コーポレーション ストレージの無効化、バッファ・エントリの消去

Also Published As

Publication number Publication date
IL206847A0 (en) 2010-12-30
PT2229631E (pt) 2012-05-11
KR20100101616A (ko) 2010-09-17
SI2229631T1 (sl) 2012-05-31
CN101911024A (zh) 2010-12-08
PL2229631T3 (pl) 2012-11-30
BRPI0906426B1 (pt) 2020-12-01
US20090187724A1 (en) 2009-07-23
ATE551653T1 (de) 2012-04-15
JP2011509471A (ja) 2011-03-24
DK2229631T3 (da) 2012-05-07
CY1112694T1 (el) 2016-02-10
EP2229631A1 (en) 2010-09-22
EP2229631B1 (en) 2012-03-28
KR101310412B1 (ko) 2013-09-23
US8417916B2 (en) 2013-04-09
WO2009087134A1 (en) 2009-07-16
CN101911024B (zh) 2012-11-14
IL206847A (en) 2013-07-31
ES2381428T3 (es) 2012-05-28
CA2701086C (en) 2017-09-19
CA2701086A1 (en) 2009-07-16
BRPI0906426A2 (pt) 2016-10-11

Similar Documents

Publication Publication Date Title
JP4815539B2 (ja) フレーム管理を有する動的アドレス変換
JP5373817B2 (ja) フェッチ保護を有する動的アドレス変換
JP5602638B2 (ja) フォーマット制御を有する動的アドレス変換
KR101174583B1 (ko) 변환 예외 한정자를 갖는 동적 어드레스 변환
US9158711B2 (en) Creating a program product or system for executing a perform frame management instruction
US9244856B2 (en) Dynamic address translation with translation table entry format control for identifying format of the translation table entry
US9003134B2 (en) Emulation of a dynamic address translation with change record override on a machine of another architecture
US8041923B2 (en) Load page table entry address instruction execution based on an address translation format control field
WO2009087135A1 (en) Dynamic address translation with dat protection
WO2009087131A1 (en) Dynamic address translation with load real address

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110708

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20110708

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20110728

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110809

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110829

R150 Certificate of patent or registration of utility model

Ref document number: 4815539

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140902

Year of fee payment: 3