JP2011513808A - 変換例外修飾子を用いる動的アドレス変換 - Google Patents

変換例外修飾子を用いる動的アドレス変換 Download PDF

Info

Publication number
JP2011513808A
JP2011513808A JP2010547162A JP2010547162A JP2011513808A JP 2011513808 A JP2011513808 A JP 2011513808A JP 2010547162 A JP2010547162 A JP 2010547162A JP 2010547162 A JP2010547162 A JP 2010547162A JP 2011513808 A JP2011513808 A JP 2011513808A
Authority
JP
Japan
Prior art keywords
address
exception
translation
host
bit
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.)
Granted
Application number
JP2010547162A
Other languages
English (en)
Other versions
JP5079104B2 (ja
JP2011513808A5 (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 JP2011513808A publication Critical patent/JP2011513808A/ja
Publication of JP2011513808A5 publication Critical patent/JP2011513808A5/ja
Application granted granted Critical
Publication of JP5079104B2 publication Critical patent/JP5079104B2/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/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • 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
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】拡張動的アドレス変換機構を提供すること。
【解決手段】一実施形態では、変換すべき仮想アドレスと、変換テーブルの階層の変換テーブルの初期オリジン・アドレスとが得られる。仮想アドレスの動的アドレス変換が進行する。動的アドレス変換中に発生した変換割込みに応答して、ビットが変換例外修飾子(TXQ)フィールド内に格納され、例外が、ホスト・プログラムを実行中に発生したホストDAT例外、またはゲスト・プログラムを実行中に発生したホストDAT例外のどちらかであったことが示される。TXQはさらに、例外がゲスト・ページ・フレーム実アドレスまたはゲスト・セグメント・フレーム絶対アドレスから導出されたホスト仮想アドレスに関連付けられたことを示すことができる。TXQはさらに、ゲスト・フレームを支持するのに、より大きいまたは小さいホスト・フレーム・サイズが好ましいことを示すことができる。
【選択図】図7

Description

本発明は、一般にはコンピュータ・システムで仮想アドレスを変換するシステムおよび方法に関し、より詳細には、動的アドレス変換機構を有するコンピュータ・システムで仮想アドレスをデータのブロックの実アドレスまたは絶対アドレスに変換し、仮想アドレス変換が変換テーブルの階層を介して行われるシステムおよび方法に関する。
動的アドレス変換(DAT)は、任意の瞬間にプログラムの実行を中断し、プログラムおよびプログラムのデータを直接アクセス記憶装置などの補助ストレージに記録し、後でプログラムおよびデータを異なる主ストレージ(メモリ)位置に戻して実行を再開する能力を提供する。主ストレージと補助ストレージとの間でのプログラムおよびプログラムのデータの転送は、1つずつ実行することができ、主ストレージに情報を戻すことは、実行のために情報が必要となるときにCPUが情報にアクセスしようと試みることに応答して行うことができる。これらの機能は、プログラムおよびプログラムのデータの変更または検査なしに実施することができ、再配置されるプログラムでどんな明示的なプログラミング規約も必要とせず、必要とされる時間遅延を除いて、プログラムの実行を妨害しない。
オペレーティング・システムによる適切なサポートと共に、動的アドレス変換機構を使用して、ストレージが構成内で利用可能な主ストレージよりも大きく見えるシステムをユーザに提供することができる。この見掛けの主ストレージは、しばしば仮想ストレージと呼ばれ、仮想ストレージ内の位置を指定するのに使用されるアドレスは、しばしば仮想アドレスと呼ばれる。ユーザの仮想ストレージは、構成内で利用可能である主ストレージのサイズをはるかに超過することがあり、通常は補助ストレージ内に維持される。仮想ストレージは、一般にページと呼ばれる(セグメントおよび領域とも呼ばれる)データのブロックから構成されるとみなされる。仮想ストレージの最後に参照されたページが、物理的主ストレージのブロックを占有するように割り当てられる。ユーザが、主ストレージ内に出現しない仮想ストレージのページを参照するとき、そのページが導入され、必要となる可能性がより低い主ストレージ内のページが置き換えられる。ある場合には、仮想ストレージが参照されるかどうかに関わらず、仮想ストレージが長期間にわたって(または永続的に)主ストレージに割り当てられる。ストレージのページのスワッピング(swapping)をユーザの知識なしにオペレーティング・システムで実施することができる。
プログラムは、アドレス(または仮想アドレス)を使用して仮想ストレージにアクセスする。プログラムは、仮想アドレスを使用して、仮想ストレージから命令をフェッチすることができ、あるいは仮想ストレージからデータをロードし、または仮想ストレージへデータを格納することができる。仮想ストレージの範囲に関連する仮想アドレスが、アドレス空間を定義する。オペレーティング・システムによる適切なサポートと共に、動的アドレス変換機構を使用していくつかのアドレス空間を提供することができる。こうしたアドレス空間を使用して、ユーザ間の分離の程度を提供することができる。そのようなサポートは、各ユーザについての完全に異なるアドレス空間からなることができ、したがって完全な分離を実現し、または各アドレス空間の一部を単一の共通ストレージにマッピングすることによって共有エリアを設けることができる。さらに、準特権プログラムがそのような複数のアドレス空間にアクセスすることを可能にする命令が提供される。
動的アドレス変換(DAT)は、複数の異なるアドレス空間からの仮想アドレスの変換を可能にする。例えば、IBM(R) System zプロセッサ上では、こうしたアドレス空間は、1次アドレス空間、2次アドレス空間、およびアクセス・レジスタ指定アドレス空間と呼ばれる。特権プログラムはまた、ホーム・アドレス空間にアクセスさせることもできる。CPUで生成される命令アドレスおよびデータ・アドレスについて動的アドレス変換を指定することができる。
当技術分野で一般的であるように、DATは、仮想アドレスの連続する部分を一連の変換テーブル(例えば、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、およびページ・テーブル)内のエントリを選択するための索引として使用することによって実施される。各中間テーブル・エントリは、有効とマークされる場合、次に低いレベルのテーブルのオリジン、オフセット、および長さを含み、次いで次に低いレベルのテーブルが、実フレーム・アドレスまたは絶対フレーム・アドレスを含む「リーフ」エントリに達するまで、仮想アドレスの次の部分で索引付けされる。次いで、変換結果を完了するために、仮想アドレスの残りの部分が、そのフレームへのバイト索引として使用される。
コンピューティング環境内の効率および柔軟性を改善するのに仮想化が使用される。仮想化の前に、通常は、単一のオペレーティング・システムがマシン内で動作する。仮想化環境では、ハイパーバイザ・プログラムまたはホストが、マシン資源を制御する。このホストは、ゲストと呼ばれる別々の独立したオペレーティング・システム・インスタンスがその中で動作することのできるコンテナである複数の仮想マシンを作成し、ホストの制御下でプロセッサやメモリなどの資源を共有する。
例えばIBM(R) System zプロセッサ上の、ページ可能ゲスト(仮想マシン)環境では、動的アドレス変換が2つのレベルで行われ、ゲスト仮想ページがゲスト実フレームによって支持され、そしてこうしたゲスト・フレームがホスト仮想メモリとして表され、ホスト実フレームによって支持されるホスト仮想ページに分割される。アドレス変換がゲストおよびホストによって独立して管理されるので、いずれのサイズのゲスト・フレームを、いずれのサイズのページからなるホスト仮想エリアにマッピングすることもできる。したがって、ゲスト・フレームは、1つのホスト・ページ、複数のホスト・ページ(小さいホスト・ページ内の大きいゲスト・フレーム)、またはホスト・ページの一部(大きいホスト・ページ内の小さいゲスト・フレーム)からなることがある。ホストが、ホストが支持するゲスト・フレームと同サイズのページを使用するとき、メモリをより効率的に管理することができ、マシン内の変換ルックアサイド・バッファ(TLB)をより効率的に使用することができる。したがって、例えば、ゲスト1メガバイト・フレームが、ゲストによって1単位として扱われ、256個の別々にページングされる4キロバイト・フレームではなく、ホスト1メガバイト・フレームによって支持されるべきである。これにより、単一のTLBエントリが、ゲスト仮想アドレスのメガバイト全体を、対応するホスト絶対アドレスにマッピングすることが可能となる。
ホスト・ページ・サイズがゲスト・フレーム・サイズに一致するために、ホストは、ゲストがゲスト・メモリの様々なエリアで使用することを意図するフレームのサイズを求めることができなければならない。ある場合には、ゲストは、所期のゲスト・フレーム・サイズを指示するフレーム管理命令を使用することができ、次いで、ファームウェアまたはホストによる命令の処理が、ゲスト・フレームを支持するようなサイズに一致するホスト・フレームを提供することができる。しかし、ゲストが配置時にこの命令を使用しない場合、またはゲストがフレーム・サイズを後で変更する場合、ホスト・サイズとゲスト・サイズはもはや一致しないことがある。具体的には、ホストがゲスト・メモリの一部をページアウトし、次いでゲスト・メモリがそれを参照した場合、ホスト変換例外がそれに続いて発生し、その結果、ホストは、バッキング・メモリに好ましいゲスト・フレーム内容を提供する機会を有する。この割込みにより、ホストがゲスト・フレームのサイズに一致するフレームを割り当てるための追加の機会が与えられる。
米国特許第5551013号 米国特許第5574873号 米国特許第5790825号 米国特許第6009261号 米国特許第6308255号 米国特許第6463582号
"IBM(R) System/370 ExtendedArchitecture", IBM(R) Pub. No. SA22-7095 (1985) "z/Architecture(R) Principlesof Operation", IBM(R) Pub. No. SA22-7832-05, 6th Edition, (April 2007) "z/VM: Running Guest OperatingSystems", IBM(R) Pub. No. SC24-5997-02, (2001) "z/VM: General InformationManual", IBM(R) Pub. No. GC24-5991-04, (2001)
ホスト構成で実行することによって割込みが引き起こされたか、それともゲスト構成で実行することによって引き起こされたか、およびゲスト構成では、割込みがリーフ・ゲストDATテーブル・エントリによって識別されるゲスト大フレームまたはゲスト小フレームに関係するか、それとも何らかの他の方式で参照されるゲスト・フレームに関係するかに応答して、ゲスト・フレームを支持するための適切なサイズのフレームを割り振るようにホスト・プロセッサに効果的かつ効率的に通知する、当技術分野でこれまで知られていない追加の機能を提供する拡張動的アドレス変換機構が求められている。
仮想アドレスを、マシン・アーキテクチャを有するコンピュータ・システムの主ストレージ内のデータのブロックの実アドレスまたは絶対アドレスに変換する動的アドレス変換機構のための変換例外修飾子を提供するシステム、方法、およびコンピュータ・プログラム製品が提供される。
例示的一実施形態では、変換すべき仮想アドレスが得られる。変換で使用される変換テーブルの階層の第1変換テーブルのオリジン・アドレスが得られる。変換テーブルの階層は、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、および任意選択でページ・テーブルのうちの1つまたは複数からなる。仮想アドレスの、主ストレージ内のデータのブロックの実アドレスまたは絶対アドレスへの動的アドレス変換に進む。変換を完了することができない場合、例えば、変換に必要なテーブル・エントリのうちの1つが無効とマークされる場合、変換例外割込みが発生する。仮想アドレスの変換中に発生したホスト変換例外割込みイベントに応答して、ビットが変換例外修飾子内に格納され、変換例外が、ホスト・プログラムを実行中に発生したホストDAT例外と、ゲスト・プログラムを実行中に発生したホストDAT例外の一方であったことが示される。TXQフィールドはまた、変換例外がゲスト・プログラムを実行中に発生したゲストDAT例外であったこと、ホストDAT例外がゲスト・リーフ・テーブル・エントリから導出されたアドレスに関係したこと、ホストDAT例外がゲスト・ページ・フレーム実アドレスから導出されたアドレスに関係したこと、およびホストDAT例外がゲスト・セグメント・フレーム絶対アドレスから導出されたアドレスに関係したことも示すことができる。TXQフィールドは、ホストDAT例外が関係するゲスト・フレームのサイズ、およびより大きいまたは小さいフレーム・サイズが必要であることもさらに示すことができ、その結果、ホストまたはファームウェアは、ゲスト・フレームを支持するためのホスト・フレームの適切なサイズを与えることができる。別の実施形態が提供される。
次に、いくつかの図示された実施形態と共に本発明を説明する。本発明の精神または範囲から逸脱することなく、当業者によって様々な変更および修正を行えることを理解されたい。
同様の参照番号が別々の図全体を通して同一の要素または機能的に類似の要素を指し、以下の詳細な説明と共に本明細書に組み込まれ、本明細書の一部を形成する添付の図が、様々な実施形態をさらに示し、様々な原理および利点をすべて本発明に従って説明する働きをする。
ゲストおよびホスト拡張動的アドレス変換が実施される従来技術ホスト・コンピュータ・システムの一実施形態を示す図である。 ホスト・アーキテクチャのホスト・コンピュータ・システムをエミュレートする例示的な従来技術のエミュレート化ホスト・コンピュータ・システムを与える図である。 仮想アドレスの動的アドレス変換のための有効なASCEを求めるのにプログラム・ステータス・ワードがどのように使用されるかについての従来技術の一実施形態を示す図である。 図3で求められた有効なASCEが使用され、仮想アドレスの変換で使用される変換テーブルの階層内の最高の変換テーブルが求められる従来技術の一実施形態を示す図である。 セグメント・テーブル・レベルに対する変換テーブルの階層を使用する、仮想アドレスの動的アドレス変換のプロセスの一実施形態を示す図である。 セグメント・テーブル・エントリ(STE)フォーマット制御(FC)が0である、図5の動的アドレス変換の続きを示す図である。 セグメント・テーブル・エントリ(STE)フォーマット制御(FC)が1である、図5の動的アドレス変換の続きを示す図である。 セグメント・テーブル・エントリ内のフォーマット制御フィールドを得るためのゲスト・レベルの拡張動的アドレス変換(EDAT)の一実施形態の流れ図を示す図である。 ゲストSTEフォーマット制御が0であるときの、図8のノード630からの流れ図の続きを示す図である。 ゲストSTEフォーマット制御が1であるときの、図8のノード632からの流れ図の続きを示す図である。 ゲストEDATプロセスから起動して、ホスト・セグメント・テーブル・エントリ内のフォーマット制御フィールドを得ることのできるホスト・レベルのEDATの一実施形態の流れ図を示す図である。 ホストSTEフォーマット制御が0であるときの、図11のノード928からの流れ図の続きを示す図である。 ホストSTEフォーマット制御が1であるときの、図11のノード930からの流れ図の続きを示す図である。
本願の明細書で行われる陳述は、必ずしも特許請求される様々な発明のいずれかを制限するものではないことを理解されたい。さらに、いくつかの陳述は、本発明のある特徴には当てはまるが、別の特徴には当てはまらないことがある。別段の指示がない限り、一般性を失うことなく、単数の要素は複数でよく、逆も同様である。
コンピューティング環境でストレージをアドレス指定すること、およびレジスタ・フィールドまたはアドレス・フィールド内のビットを使用して、様々な状態を示し、そうした状態に基づいて行動することに当業者なら容易に通じているであろう。さらに、当業者なら、コンピュータ・ソフトウェアの技術分野に精通し、過度の実験なしに当業者自身のコンピューティング環境で本明細書の教示を実施するのに十分な、コンピュータ・システムの構成要素間の動作および相関関係について精通しているであろう。
概要
拡張動的アドレス変換(DAT)機構の例示的実施形態が提供される。拡張DAT機構がインストールされ、動作可能となるとき、DAT変換は、セグメント・テーブル・エントリ内のセグメント・テーブル・エントリ(STE)フォーマット制御で決定されるページ・フレーム実アドレスまたはセグメント・フレーム絶対アドレスを生成することができる。本明細書では、「拡張DAT(EDAT)が適用される」という術語は、以下のすべてが真であることを意味する。1)EDAT機構がインストールされること、2)制御レジスタ0(CR0)ビット40を介してEDAT機構が動作可能となること、および3)アドレスがDATテーブル・エントリによって変換されること。
拡張DATが適用されるとき、以下の追加の機能がDATプロセスで利用可能となる。
・DAT保護ビットが領域テーブル・エントリに追加され、セグメント・テーブル・エントリおよびページ・テーブル・エントリ内のDAT保護ビットに類似の機能が提供される。
・STEフォーマット制御がセグメント・テーブル・エントリに追加される。STEフォーマット制御が0であるとき、DATは、ページ・テーブル・エントリ内の変更記録オーバーライドが変更ビットの設定をページのために迂回することができるかどうかを示すことを除いて、現在定義されている通りに進行する。
・STEフォーマット制御が1であるとき、セグメント・テーブル・エントリは以下も含む。
・1メガバイト・ブロックの絶対ストレージ位置を指定する(ページ・テーブル・オリジンではなく)セグメント・フレーム絶対アドレス。
・セグメントの個々のストレージ・キー内の対応するビットの代わりに任意選択で使用することのできるアクセス制御ビットおよびフェッチ保護ビット。
・セグメント・テーブル・エントリ内のアクセス制御ビットおよびフェッチ保護ビットの有効性を判定するビット。
・変更ビットの設定をセグメントの個々のストレージ・キーで迂回することができるかどうかを示す変更記録オーバーライド。
・DAT例外割込みが発生したときに変換例外修飾子(TXQ)が格納され、例外が発生した実行環境(ホストまたはゲスト)、および変換中であったアドレスのソースに関する詳細が提供される。
ホスト・コンピュータ・システム
エミュレート化システムは、ホスト・アーキテクチャと解釈実行機能のどちらも提供することのできるコンピュータ・システムをエミュレートするエミュレータ・プログラムを含む。エミュレート化システム・メモリは、ホストとページ可能ゲストのどちらも含むことができる。エミュレート化ホスト・アーキテクチャ内で動作中のホスト・プログラムは、ゲスト・プログラムのStart Interpretive Executionでよく、次いでゲスト・プログラムは、解釈実行機構のエミュレーション下で動作することができる。ページ可能ゲストを実行するための解釈実行機構およびStartInterpretive Execution(SIE)命令の一例が、参照によりその全体が本明細書に組み込まれる"IBM(R) System/370Extended Architecture", IBM(R) Pub. No. SA22-7095 (1985)で説明されている。
次に図1を参照すると、ゲストおよびホスト拡張動的アドレス変換が実施されるホスト・コンピュータ・システム100の一実施形態が示されている。好ましくは、ホスト・コンピューティング環境100は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーション(IBM)によって提供されるz/Architecture(R)に基づく。z/Architecture(R)は、参照によりその全体が本明細書に組み込まれる"z/Architecture(R) Principles of Operation", IBM(R) Pub.No. SA22-7832-05, 6th Edition, (April 2007)でより完全に説明されている。z/Architecture(R)に基づくコンピューティング環境は、例えば、共にIBM(R)によるeServerおよびzSeries(R)を含む。
コンピューティング環境100は、仮想マシン・サポートを提供する中央プロセッサ・コンプレックス(CPC)102を含む。CPC102は、例えば、1つまたは複数の仮想マシン104、1つまたは複数のプロセッサ106、少なくとも1つのホスト108(例えば、ハイパーバイザなどの制御プログラム)、および入出力サブシステム110を含む。CPCの仮想マシン・サポートは、Linuxなどのゲスト・オペレーティング・システム112をそれぞれホストすることのできる多数の仮想マシンを操作する能力を提供する。
各仮想マシンは、別々のシステムとして機能することができる。すなわち、各仮想マシンを単独でリセットすることができ、ホストがゲスト・オペレーティング・システムを含み、異なるプログラムと共に動作する。仮想マシン内で動作中のオペレーティング・システムまたはアプリケーション・プログラムは、全部の完全なシステムへのアクセス権を有するように見えるが、実際にはシステムの一部だけが利用可能である。
この特定の例では、仮想マシンのモデルはV=Vモデルであり、V=Vモデルでは、仮想マシンのメモリが、実メモリではなく仮想メモリによって支持される。各仮想マシンは仮想線形メモリ空間を有する。物理資源はホストによって所有され、必要に応じて、ゲスト・オペレーティング・システムの処理要求を満たすように、共有物理資源がホストによってゲスト・オペレーティング・システムにディスパッチされる。このV=V仮想マシン・モデルは、ゲスト・オペレーティング・システムと物理共有マシン資源との対話がホストによって制御されることを仮定する。通常、多数のゲストにより、ホストが単にハードウェア・リソースを区分化し、構成されたゲストに割り当てることが妨げられるからである。V=Vモデルの1つまたは複数の側面が、参照によりその全体が本明細書に組み込まれる"z/VM: Running Guest Operating Systems", IBM(R) Pub. No.SC24-5997-02, (2001)でより完全に説明されている。
中央プロセッサ106は、仮想マシンに割当て可能な物理プロセッサ資源である。例えば、仮想マシン104は、1つまたは複数の仮想プロセッサを含み、仮想プロセッサのそれぞれは、仮想マシンに動的に割振り可能な物理プロセッサ資源のすべてまたは一部を表す。仮想マシンはホストによって管理される。ホストは、1つまたは複数のプロセッサ上で動作中のマイクロコードで実装することができ、またはマシン上で実行中のホスト・オペレーティング・システムの一部でよい。一実施例では、ホストは、IBM(R)によって提供されるz/VM(R)などのVMハイパーバイザである。z/VM(R)の一実施形態が、参照によりその全体が本明細書に組み込まれる"z/VM: General Information Manual", IBM(R) Pub. No.GC24-5991-04, (2001)でより完全に説明されている。
入出力システム110は、装置と主ストレージとの間の情報の流れを指示する。入出力システム110は、中央処理コンプレックス(CPC)に結合される。入出力システム110は、中央処理コンプレックスの一部でよく、または中央処理コンプレックスとは別々のものでよい。I/Oサブシステムは、CPCに結合されたI/O装置と直接的に通信する作業から中央プロセッサを解放し、データ処理がI/O処理と同時に進行することを可能にする。
中央プロセッサ106は、プログラム・アドレス(仮想アドレス)をメモリの実アドレスに変換する動的アドレス変換(DAT)機構(機能またはユニット)を有することができる。DAT機構は通常、後のコンピュータ・メモリのブロックへのアクセスがアドレス変換の遅延を必要としないように、変換をキャッシュする変換ルックアサイド・バッファを含む。通常、キャッシュは、コンピュータ・メモリとプロセッサとの間で使用される。キャッシュは、複数のCPUが使用できる大型のキャッシュと、大型のキャッシュと各CPUとの間の、より小型で高速な(低レベル)キャッシュとを有する階層型でよい。ある実装では、下位レベル・キャッシュが分割され、命令フェッチングとデータ・アクセスについて別々の低レベル・キャッシュが提供される。一実施形態では、命令が、命令フェッチ・ユニットによってメモリからキャッシュを介してフェッチされる。命令が命令復号化ユニットで復号化され、命令実行ユニットに(ある実施形態では他の命令と共に)ディスパッチされる。通常、いくつかの実行ユニット、例えば算術実行ユニット、浮動小数点実行ユニット、およびブランチ命令実行ユニットが使用される。命令が実行ユニットで実行され、必要に応じて、命令指定のレジスタまたはメモリからオペランドにアクセスする。メモリからオペランドにアクセスすべき場合、通常はロード・ストア・ユニットが、実行中の命令の制御下でアクセスを処理する。
一実施形態では、本発明はソフトウェア(Licensed InternalCode(LIC)、ファームウェア、マイクロコード、ミリコード、ピココードなどと呼ばれることがあり、そのいずれも本発明に適合する)で実施することができる。本発明を実施するソフトウェア・プログラム・コードは通常、コンピュータ・システムのCPU(中央演算処理装置)とも呼ばれるプロセッサによって、CD−ROMドライブ、テープ・ドライブ、ハード・ドライブなどの長期記憶媒体からアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ、CD−ROMなどの、データ処理システムと共に使用される様々な周知の媒体のいずれかの上に実施することができる。コードは、そのような媒体上で配布することができ、またはあるコンピュータ・システムのコンピュータ・メモリまたはストレージからネットワークを介して、他のコンピュータ・システムのユーザによる使用のためにそのような他のシステムに配布することができる。
あるいは、プログラム・コードをメモリ内に実施し、プロセッサ・バスを使用してプロセッサでアクセスすることができる。そのようなプログラム・コードは、様々なコンピュータ構成要素および1つまたは複数のアプリケーション・プログラムの機能および対話を制御するオペレーティング・システムを含む。プログラム・コードは通常、高密度記憶媒体から高速メモリにページングされ、高速メモリで、プログラム・コードはプロセッサによる処理のために利用可能となる。メモリ内で、もしくは物理媒体上でソフトウェア・プログラム・コードを実施すること、またはネットワークを介してソフトウェア・コードを配布すること、あるいはその両方を行う技法および方法は周知であり、本明細書ではさらに議論しない。プログラム・コードは、有形媒体(限定はしないが電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープなどを含む)上に作成および格納されるとき、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品媒体は通常、好ましくはコンピュータ・システム内の処理回路により、処理回路で実行するために読取り可能である。
本発明の1つまたは複数の態様を組み込むコンピューティング環境の別の例が、図2に示されている。この例では、ホスト・アーキテクチャのホスト・コンピュータ・システム202をエミュレートするエミュレート化ホスト・コンピュータ・システム200が提供される。エミュレート化ホスト・プロセッサ204(または仮想ホスト・プロセッサ)が、ホスト・コンピュータのプロセッサで使用されるのとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ206を介して実現される。エミュレート化ホスト・コンピュータ・システムは、エミュレーション・プロセッサ206にとってアクセス可能なメモリ208を有する。例示的実施形態では、メモリ208が、ホスト・コンピュータ・メモリ210部分とエミュレーション・ルーチン212部分に区分化される。ホスト・コンピュータ・メモリ210は、エミュレート化ホスト・コンピュータ202のプログラムが使用することができ、図1の同様に名前の付けられた要素と類似の、ホストまたはハイパーバイザ214と、ゲスト・オペレーティング・システム218を実行する1つまたは複数の仮想マシン216のどちらも含むことができる。エミュレーション・プロセッサ206は、エミュレート化プロセッサのもの以外のアーキテクチャのアーキテクテッド命令セットのネイティブ命令を実行し、ネイティブ命令は、例えばエミュレーション・ルーチン・メモリ212から得られる。エミュレーション・プロセッサ206は、アクセスされるホスト命令の機能をエミュレートするネイティブ命令実行ルーチンを求めるためにアクセスされるホスト命令(複数可)を復号化することのできるシーケンスおよびアクセス/復号化ルーチンで得られる1つまたは複数の命令(複数可)を使用することにより、ホスト・コンピュータ・メモリ210内のプログラムから実行するためにホスト命令にアクセスすることができる。そのような1つのホスト命令は、例えば、ホストが仮想マシン内のプログラムを実行するためにそれによってシークするStart Interpretive Execution(SIE)命令でよい。エミュレーション・ルーチン212は、この命令のためのサポート、およびこのSIE命令の定義に従って仮想マシンで一続きのゲスト命令を実行するためのサポートを含むことができる。
ホスト・コンピュータ・システム・アーキテクチャについて定義される他の機能は、例えば汎用レジスタ、制御レジスタ、動的アドレス変換、I/Oサブシステム・サポート、プロセッサ・キャッシュなどの機構を含むアーキテクテッド機構ルーチンでエミュレートすることができる。エミュレーション・ルーチンはまた、エミュレーション・ルーチンの性能を改善するために、エミュレーション・プロセッサ206で利用可能な機能(汎用レジスタ、仮想アドレスの動的変換など)も利用することができる。ホスト・コンピュータの機能をエミュレートする際にプロセッサを支援するために、特殊ハードウェアおよびオフロード・エンジンも設けることができる。一実施形態では、ホスト・コンピュータは、例えばディスケット、ハード・ドライブ、CD−ROMなどの様々な周知の記憶媒体220と通信する。ソフトウェア・プログラム・コードは、そのような媒体上で配布することができ、またはネットワーク222を介してユーザに配布することができる。
コンピュータ・プロセッサおよびレジスタ
一実施形態では、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は1次アドレス空間制御要素(PASCE)を含む。一実施形態では、制御レジスタ1は、レジスタ内の実空間制御ビット(R)に応じて、以下の2つのフォーマットのうちの一方を有する。
Figure 2011513808
Figure 2011513808
1次アドレス空間制御要素(PASCE)内の選択されたフィールドが、以下のように割り振られる。
1次領域テーブルまたはセグメント・テーブル・オリジン:制御レジスタ1内の1次領域テーブルまたはセグメント・テーブル指定のビット0〜51の右側に12個の0を付加したものが、1次領域テーブルまたはセグメント・テーブルの先頭を指定する64ビット・アドレスを形成する。アドレスが実アドレスか、それとも絶対アドレスかは予測不能である。このテーブルは、1次アドレス空間内の仮想アドレスを変換するのに使用されるので、1次領域テーブルまたはセグメント・テーブルと呼ばれる。
1次実空間制御(R):制御レジスタ1のビット58が0である場合、レジスタは、領域テーブルまたはセグメント・テーブル指定を含む。ビット58が1である場合、レジスタは実空間指定を含む。ビット58が1であるとき、セグメント・テーブル・エントリの変換ルックアサイド・バッファ表現内の共通セグメント・ビットの1の値により、1次アドレス空間に対する参照の変換時に、制御レジスタ1内のトークン・オリジンと変換ルックアサイド・バッファ・エントリ内のテーブル・オリジンとが合致しても、それが指定するエントリおよび変換ルックアサイド・バッファ・ページ・テーブル・コピーの使用が防止される。
1次指定タイプ制御(DT):Rが0であるとき、制御レジスタ1内のテーブル指定のタイプが、レジスタ内のビット60および61によって以下のように指定される。
Figure 2011513808
Rが0であるとき、PASCEを使用して、左端の1ビットがアドレスのビット位置0〜10にある仮想アドレスを変換する試行が行われるとき、ビット60および61は、2進数11でなければならない。同様に、左端の1ビットがアドレスのビット位置11〜21にあるとき、ビット60および61は、2進数11または10でなければならず、左端の1ビットがアドレスのビット位置22〜32にあるとき、ビット60および61は、2進数11、10、または01でなければならない。そうでない場合、ASCEタイプ例外が認識される。
1次領域テーブルまたはセグメント・テーブルの長さ(TL):制御レジスタ1内の1次領域テーブル指定またはセグメント・テーブル指定のビット62および63が、1次領域テーブルまたはセグメント・テーブルの長さを4096バイト単位で指定し、したがって領域テーブルまたはセグメント・テーブルの長さは、512エントリの倍数単位で可変となる。4096バイト単位の1次領域テーブルまたはセグメント・テーブルの長さは、TL値よりも1つ大きい。長さフィールドの内容は、テーブルで変換すべき仮想アドレスの部分(RFX、RSX、RTX、またはSX)がテーブル内に含まれるエントリを指定するかどうかを確立するのに使用される。
1次実空間トークン・オリジン:制御レジスタ1内の1次実空間指定のビット0〜51の右側に12個の0を付加したものが、1次アドレス空間を参照するためのV=R変換を実現する変換ルックアサイド・バッファ・エントリを形成および使用する際に使用することのできる64ビット・アドレスを形成する。このアドレスはトークンとして使用されるだけであり、ストレージ参照を実施するのには使用されないが、それでもこのアドレスは有効なアドレスでなければならない。そうでない場合、制御レジスタ1の内容が使用されるとき、誤った変換ルックアサイド・バッファ・エントリが使用されることがある。
制御レジスタ1の以下のビットは割り当てられず、無視される。レジスタが領域テーブル指定またはセグメント・テーブル指定を含む場合、ビット52、53、および59。レジスタが実空間指定を含む場合、ビット52、53、および59〜63。
制御レジスタ7
制御レジスタ7は2次アドレス空間制御要素(SASCE)を含む。一実施形態では、制御レジスタ7は、レジスタ内の実空間制御ビット(R)に応じて、以下の2つのフォーマットの一方を有する。
Figure 2011513808
Figure 2011513808
制御レジスタ13
制御レジスタ13はホーム・アドレス空間制御要素(HASCE)を含む。一実施形態では、制御レジスタ13は、レジスタ内の実空間制御ビット(R)に応じて、以下の2つのフォーマットの一方を有する。
Figure 2011513808
Figure 2011513808
アクセス・レジスタ
CPUは、0〜15と番号が付けられる16個のアクセス・レジスタを有する。アクセス・レジスタは、ASCEの間接指定を含む32ビット位置からなる。ASCEは、対応するアドレス空間に対する参照を変換する動的アドレス変換(DAT)機構で使用されるパラメータである。CPUがアクセス・レジスタ・モードと呼ばれるモードにあるとき(プログラム・ステータス・ワード内のビットで制御される)、ストレージ・オペランド参照に関する論理アドレスを指定するのに使用される命令Bフィールドが、アクセス・レジスタを指定し、アクセス・レジスタで指定されるASCEが、参照を行うためにDATで使用される。ある命令では、Rフィールドが、Bフィールドの代わりに使用される。アクセス・レジスタの内容をロードおよび格納し、あるアクセス・レジスタから別のアクセス・レジスタに内容を移動する命令が提供される。
アクセス・レジスタ1〜15のそれぞれは、現命令空間(1次アドレス空間)を含む任意のアドレス空間を指定することができる。アクセス・レジスタ0は1次命令空間を指定する。アクセス・レジスタ1〜15のうちの1つがアドレス空間を指定するのに使用されるとき、CPUは、アクセス・レジスタの内容を変換することによってどのアドレス空間が指定されるかを決定する。アクセス・レジスタ0がアドレス空間を指定するのに使用されるとき、CPUは、アクセス・レジスタを1次命令空間を指定するものとして扱い、アクセス・レジスタの実際の内容を検査しない。したがって、16個のアクセス・レジスタは、任意のある時間に、1次命令空間と、最大で15個の他の空間とを指定することができる。
プログラム・ステータス・ワード(PSW)
プログラム・ステータス・ワードは、命令アドレス、条件コード、および命令順序付けを制御し、CPUの状態を判定するのに使用される他の情報を含む。アクティブなプログラム・ステータス・ワード、または制御中のプログラム・ステータス・ワードは、現プログラム・ステータス・ワードと呼ばれる。現プログラム・ステータス・ワードは、現在実行中のプログラムを管理する。
CPUは、例外条件および外部刺激に応答してCPUが別のプログラムに迅速に切り替わることを可能にする割込み機能を有する。割込みが発生したとき、CPUは、現プログラム・ステータス・ワードを、特定のクラスの割込み用の、旧プログラム・ステータス・ワード位置と呼ばれる、割り当てられたストレージ位置に配置する。CPUは、2番目に割り当てられたストレージ位置から新しいプログラム・ステータス・ワードをフェッチする。この新しいプログラム・ステータス・ワードは、実行すべき次のプログラムを決定する。CPUが割込みの処理を終了したとき、割込みを処理するプログラムが、旧プログラム・ステータス・ワードを再ロードし、再び現プログラム・ステータス・ワードにし、その結果割込みを受けたプログラムが続行することができる。
割込みには、外部、I/O、マシン・チェック、プログラム、再始動、およびスーパーバイザ呼出しという6つのクラスがある。各クラスは、実ストレージに永続的に割り当てられる旧プログラム・ステータス・ワード位置と新プログラム・ステータス・ワード位置の別個の対を有する。
現プログラム・ステータス・ワード
CPU内の現プログラム・ステータス・ワードは、現在アクティブなプログラムの実行のために必要な情報を含む。プログラム・ステータス・ワードは、長さ128ビットであり、命令アドレス、条件コード、および他の制御フィールドを含む。一般には、プログラム・ステータス・ワードは、命令順序付けを制御し、現在実行中のプログラムに関するCPUのステータスの多くを保持および指示するのに使用される。追加の制御およびステータス情報が制御レジスタ内に含まれ、ストレージ位置が永続的に割り当てられる。CPUのステータスは、新しいプログラム・ステータス・ワードまたはプログラム・ステータス・ワードの一部をロードすることによって変更することができる。
CPUの割込み中に、CPUのステータスを保存するように現プログラム・ステータス・ワードを格納し、次いで新しいプログラム・ステータス・ワードをロードすることによって制御が切り替わる。LOAD PSWまたはLOAD PSW EXTENDEDの実行、または初期プログラム・ローディング・シーケンスの正常な終了により、新しいプログラム・ステータス・ワードが導入される。命令アドレスは、順次命令実行によって更新され、正常な分岐で置き換えられる。プログラム・ステータス・ワードの一部に対して作用する他の命令が提供される。
プログラム・ステータス・ワードを変更する命令の割込みまたは実行が完了したとき、新しいプログラム・ステータス・ワード、または修正後プログラム・ステータス・ワードがアクティブとなる(すなわち、現プログラム・ステータス・ワードに導入される情報が、CPUの制御を引き受ける)。プログラム・ステータス・ワードを変更する命令に関連するプログラム・イベント記録(PER)に関する割込みが、演算の開始時に有効なPERマスクの制御下で発生する。プログラム・ステータス・ワードのビット0〜7は、集合的にシステム・マスクと呼ばれる。一実施形態では、プログラム・ステータス・ワードは以下のフォーマットを有する。
Figure 2011513808
以下は、選択されたプログラム・ステータス・ワード・フィールドの機能の簡潔な概要である。
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、およびMOVEWITH 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つの基本タイプのうちのいずれかとして扱われる追加のタイプが定義される。
絶対アドレス
絶対アドレスは、主ストレージ位置に割り当てられるアドレスである。絶対アドレスは、それに対してどんな変換も実施されないストレージ・アクセスのために使用される。構成内のチャネル・サブシステムおよびすべてのCPUは、同じ絶対アドレスを使用することによって共有主ストレージ位置を参照する。利用可能な主ストレージには通常、0から始まる連続する絶対アドレスが割り当てられ、整数境界上に完全な4キロバイト・ブロックとしてアドレスが割り当てられる。物理位置に割り当てられていないブロックで絶対アドレスを使用する試行が行われるときに、例外が認識される。あるモデルでは、オペレータが絶対アドレスと物理位置との対応を変更することを可能にするストレージ再構成制御を提供することができる。しかし、任意の1時点で、物理位置は、複数の絶対アドレスとは関連付けられない。その絶対アドレスに従って順序付けられたバイト位置からなるストレージは、絶対ストレージと呼ばれる。
実アドレス
実アドレスは、実ストレージ内の位置を特定する。主ストレージにアクセスするために実アドレスが使用されるとき、実アドレスがプレフィックス変換によって変換され、絶対アドレスが形成される。任意の瞬間に、構成内の各CPUについて1つの実アドレス−絶対アドレス・マッピングが存在する。主ストレージにアクセスするために実アドレスがCPUで使用されるとき、プレフィックス変換によって実アドレスを絶対アドレスに変換することができる。この特定の変換は、CPUに関するプレフィックス・レジスタ内の値で定義される。その実アドレスに従って順序付けられたバイト位置からなるストレージは、実ストレージと呼ばれる。
仮想アドレス
仮想アドレスは、仮想ストレージ内の位置を特定する。主ストレージにアクセスするために仮想アドレスが使用されるとき、仮想アドレスが、動的アドレス変換により、プレフィックス変換の対象となる可能性のある実アドレスに変換されて絶対アドレスが形成され、または直接的に絶対アドレスに変換される。
1次仮想アドレス
1次仮想アドレスは、1次アドレス空間制御要素(PASCE)によって変換すべき仮想アドレスである。論理アドレスは、1次空間モードにあるとき、1次仮想アドレスとして扱われる。命令アドレスは、1次空間モード、2次空間モード、またはアクセス・レジスタ・モードにあるとき、1次仮想アドレスとして扱われる。MOVE TO PRIMARYの第1オペランド・アドレスおよびMOVE TO SECONDARYの第2オペランド・アドレスが、1次仮想アドレスとして扱われる。さらに、ページ可能ゲストが実行中のとき、ゲストが絶対ストレージとみなす主ストレージ(メモリ)が、ホストの1次アドレス空間内で表現され、すなわち、ゲスト絶対アドレスがホスト1次仮想アドレスとして扱われる。
2次仮想アドレス
2次仮想アドレスは、2次アドレス空間制御要素(SASCE)によって変換すべき仮想アドレスである。論理アドレスは、2次空間モードにあるとき、2次仮想アドレスとして扱われる。MOVE TO PRIMARYの第2オペランド・アドレスおよびMOVE TO SECONDARYの第1オペランド・アドレスが、2次仮想アドレスとして扱われる。
AR指定仮想アドレス
AR指定仮想アドレスは、アクセス・レジスタ指定アドレス空間制御要素によって変換すべき仮想アドレスである。論理アドレスは、アクセス・レジスタ・モードにあるとき、AR指定アドレスとして扱われる。
ホーム仮想アドレス
ホーム仮想アドレスは、ホーム・アドレス空間制御要素(HASCE)によって変換すべき仮想アドレスである。論理アドレスおよび命令アドレスは、ホーム空間モードにあるとき、ホーム仮想アドレスとして扱われる。
命令アドレス
ストレージから命令をフェッチするのに使用されるアドレスは、命令アドレスと呼ばれる。命令アドレスは、実モードでは実アドレスとして扱われ、1次空間モード、2次空間モード、またはアクセス・レジスタ・モードでは1次仮想アドレスとして扱われ、ホーム空間モードではホーム仮想アドレスとして扱われる。現プログラム・ステータス・ワード内の命令アドレスおよびEXECUTEのターゲット・アドレスは、命令アドレスである。
有効アドレス
ある状況では、「有効アドレス」という用語を用いることが便利である。有効アドレスは、動的アドレス変換またはプレフィックス変換による任意の変換が実施される前に存在するアドレスである。有効アドレスは、レジスタ内に直接的に指定することができ、またはアドレス計算の結果として得ることができる。アドレス計算は、ベースおよび変位の追加、またはベース、索引、および変位の追加である。
プレフィックス変換
プレフィックス変換は、実アドレスの範囲0〜8191を各CPUについての絶対ストレージ内の異なるブロックに割り当てる能力を提供し、したがって、主ストレージを共有する複数のCPUが、特に割込みの処理で、干渉を最小限に抑えて同時に動作することが可能となる。プレフィックス変換は、範囲0〜8191内の実アドレスを、CPUに関するプレフィックス・レジスタのビット位置0〜50内の値で識別される8Kバイト絶対アドレスのブロック(プレフィックス・エリア)に1対1に対応させ、プレフィックス・レジスタ内のその値で識別される実アドレスのブロックを、絶対アドレス0〜8191に1対1に対応させる。残りの実アドレスは、対応する絶対アドレスと同じである。この変換により、各CPUが、最初の8Kバイト、および他のCPUのプレフィックス・レジスタで指定される位置を含む主ストレージのすべてにアクセスすることが可能となる。
プレフィックスは、プレフィックス・レジスタのビット位置0〜50内に含まれる51ビット量である。一実施形態では、プレフィックス・レジスタは以下のフォーマットを有する。
Figure 2011513808
プレフィックス変換が適用されるとき、実アドレスのビット0〜50に応じて以下の規則のうちの1つを使用することにより、実アドレスが絶対アドレスに変換される。
1.アドレスのビット0〜50がすべて0である場合、アドレスのビット0〜50がプレフィックスのビット0〜50で置き換えられる。
2.アドレスのビット0〜50がプレフィックスのビット0〜50に等しい場合、アドレスのビット0〜50が0で置き換えられる。
3.アドレスのビット0〜50がすべてが0ではなく、プレフィックスのビット0〜50に等しくない場合、アドレスのビット0〜50は不変のままである。
ストレージに提示されるアドレスだけが、プレフィックス変換で変換される。アドレスのソースの内容は不変のままである。
実アドレスと絶対アドレスとの間の区別は、プレフィックス・レジスタがすべて0を含むときであっても行われ、その場合、実アドレスとその対応する絶対アドレスとは同一である。
実アドレスと絶対アドレスとの関係
実アドレスと絶対アドレスとの関係は、以下のように図式で示される。
Figure 2011513808
アドレス空間
アドレス空間は、整数の連続するシーケンス(仮想アドレス)と、各数をストレージ内のバイト位置と関連付けることを可能にする特定の変換パラメータである。シーケンスは0で始まり、左から右に進む。
主ストレージにアクセスするために仮想アドレスがCPUで使用されるとき、仮想アドレスがまず、動的アドレス変換(DAT)によって実アドレスまたは絶対アドレスに変換される。実アドレスはさらに、絶対アドレスを形成するためにプレフィックス変換が施されることがある。DATは、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、およびページ・テーブルを変換パラメータとして使用することができる。特定のアドレス空間についての最高レベル・テーブルの指定(オリジンおよび長さ)は、アドレス空間制御要素(ASCE)と呼ばれ、制御レジスタ内でDATで使用するために見い出され、またはアクセス・レジスタで指定されるように見出される。あるいは、アドレス空間に関するASCEは実空間指定でよく、このことは、DATは、どんなテーブルも使用することなく、単に仮想アドレス実アドレスとして扱うことによって仮想アドレスを変換すべきであることを示す。
DATは、異なる時間に、異なる制御レジスタ内のASCE、またはアクセス・レジスタで指定されるASCEを使用する。現プログラム・ステータス・ワードで指定される変換モードで選択が決定される。1次空間モード、2次空間モード、アクセス・レジスタ・モード、およびホーム空間モードという4つの変換モードが利用可能である。変換モードに応じて、異なるアドレス空間がアドレス可能である。
CPUが1次空間モードまたは2次空間モードにある任意の瞬間に、CPUは、1次アドレス空間および2次アドレス空間の2つのアドレス空間に属する仮想アドレスを変換することができる。CPUがアクセス・レジスタ・モードにある任意の瞬間に、CPUは、最大で16のアドレス空間−1次アドレス空間と最大で15のAR指定アドレス空間−の仮想アドレスを変換することができる。CPUがホーム空間モードにある任意の瞬間に、CPUは、ホーム・アドレス空間の仮想アドレスを変換することができる。
1次アドレス空間はそのようなものとして識別される。1次アドレス空間は、1次アドレス空間制御要素(PASCE)によって変換される1次仮想アドレスからなるからである。同様に、2次アドレス空間は、2次アドレス空間制御要素(SASCE)によって変換される2次仮想アドレスからなる。AR指定アドレス空間は、アクセス・レジスタ指定アドレス空間制御要素(AR指定ASCE)によって変換されるAR指定仮想アドレスからなり、ホーム・アドレス空間は、ホーム・アドレス空間制御要素(HASCE)によって変換されるホーム仮想アドレスからなる。1次および2次ASCEは、それぞれ制御レジスタ1および7内にある。AR指定ASCEは、制御レジスタ1および7内でよく、またはASN第2テーブル・エントリと呼ばれるテーブル・エントリ内でよい。HASCEは制御レジスタ13内にある。
動的アドレス変換
動的アドレス変換は、(例えばストレージ参照中に)仮想アドレスを対応するメイン・メモリ・アドレス(実施形態では実アドレスまたは絶対アドレス)に変換するプロセスである。仮想アドレスは、1次仮想アドレス、2次仮想アドレス、アクセス・レジスタ指定仮想アドレス、またはホーム仮想アドレスでよい。こうしたアドレスは、それぞれPASCE、SASCE、AR指定ASCE、またはHASCEによって変換される。適切なASCEの選択後、変換プロセスは、4つのタイプの仮想アドレスのすべてについて同一である。
アドレッシング変換モード
有効アドレスは、動的アドレス変換またはプレフィックス変換による任意の変換が実施される前に存在するアドレス(仮想アドレス)である。動的アドレス変換を制御するプログラム・ステータス・ワード内の3つのビットは、DATモード・ビットであるビット5、ならびにアドレス空間制御ビットであるビット16および17である。DATモード・ビットが0であるとき、DATはオフであり、CPUは実モードにある。DATモード・ビットが1であるとき、DATはオンであり、CPUは、アドレス空間制御ビットで指定される変換モードにある。2進数00が1次空間モードを示し、2進数01がアクセス・レジスタ・モードを示し、2進数10が2次空間モードを示し、2進数11がホーム空間モードを示す。様々なモードを、各モードでのアドレスの処理と共に以下に示す。
Figure 2011513808
プログラム・ステータス・ワードは128ビット・ワードであり、部分的に、アドレッシング・モードを示す2ビットを与える。一実施形態では、ビット31は拡張アドレッシング・モード(EA)ビットであり、ビット32はベース・アドレッシング・モード(BA)ビットである。こうした2つのビットは、アドレスのサイズを示す。こうした2つのビットのそれぞれの状態は、2進数(1または0)である。EAビットが0であり、BAビットが0である場合、24ビット・アドレッシングが示される。24ビット・アドレッシングが示される場合、64ビット・ワード(64ビット・エンティティは一般にダブルワードと呼ばれる)のビット40〜63が、アドレスが配置される所である。命令アドレスが128ビット・エンティティ(クワッドワード)の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ビット・ワードの64ビット全体であるビット0〜63がアドレスを含む。そうでない場合、例外条件が示される。アドレッシング・モードが得られた後は、ASCEを求める必要がある。
アドレス空間制御要素(ASCE)
次に図3を参照すると、仮想アドレスの動的アドレス変換のための有効アドレス空間制御要素(ASCE)を求めるのにプログラム・ステータス・ワードがどのように使用されるかについての一実施形態が示されている。ASCEは、例えば2ギガバイト(ギガ=230)アドレス空間を指定することができる。あるいは、ASCEは、例えば4テラバイト(テラ=240)、8ペタバイト(ペタ=250)、または16エクサバイト(エクサ=260)アドレス空間を指定することができる。あるいは、ASCEは、実空間指定を指定することができる。実空間指定により、仮想アドレスが、1つまたは複数のアドレス変換テーブルを参照することなくストレージ内の実アドレスとして処理される。
プログラム・ステータス・ワード300は、変換(T)ビット302およびアドレス空間(AS)ビット304を含む。306で、変換(T)ビットが0である場合、アドレスは実アドレス326である。308で、アドレス空間(AS)が0(2進数00)に等しい場合、この仮想アドレスに関する有効なASCEは1次アドレス空間制御要素(PASCE)310である。312で、アドレス空間(AS)が1(2進数01)に等しい場合、有効なASCEはアクセス・レジスタ指定アドレス空間制御要素314である。316で、アドレス空間(AS)が2(2進数10)に等しい場合、有効なASCEは2次アドレス空間制御要素(SASCE)318である。そうでない場合、アドレス空間(AS)は3(2進数11)に等しく、有効なASCEはホーム・アドレス空間制御要素(HASCE)322である。
有効なASCEの選択の後、好ましくは、動的アドレス変換のプロセスは、すべての4つのタイプの仮想アドレスについて同一である。
セグメント・テーブル指定または領域テーブル指定により、実ストレージまたは絶対ストレージでオペレーティング・システムによって確立されたテーブルによって変換が実施される。実空間指定により、仮想アドレスは、ストレージ内のテーブルを使用することなく単に実アドレスとして処理される。
セグメント・テーブル指定または領域テーブル指定を使用するときの変換のプロセスでは、領域、セグメント、およびページという3つのタイプの情報単位が認識される。領域は、2ギガバイトに及び、2ギガバイト境界で始まる順次仮想アドレスのブロックである。セグメントは、1メガバイトに及び、1メガバイト境界で始まる順次仮想アドレスのブロックである。ページは、4キロバイトに及び、4キロバイト境界で始まる順次仮想アドレスのブロックである。
仮想アドレス・フォーマット
仮想アドレスの変換は、変換テーブルの階層の複数の変換テーブルを参照して、実アドレスまたは絶対アドレスを得ることを含むことがある。実アドレスはさらに、絶対アドレスを形成するためのプレフィックス変換操作の対象となることがある。仮想アドレスは、変換テーブルの階層内の変換テーブル内のエントリに対する索引を含む。したがって、仮想アドレスは4つの基本フィールドに分割される。ビット0〜32は領域索引(RX)と呼ばれ、ビット33〜43はセグメント索引(SX)と呼ばれ、ビット44〜51はページ索引(PX)と呼ばれ、ビット52〜63はバイト索引(BX)と呼ばれる。一実施形態では、仮想アドレスは以下のフォーマットを有する。
Figure 2011513808
その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 2011513808
RTXがその中で左端最上位部分(42ビット・アドレス)である仮想アドレスが、4テラバイト(2048領域)をアドレス指定することができ、RSXがその中で左端最上位部分(53ビット・アドレス)である仮想アドレスが、8ペタバイト(4194304領域)をアドレス指定することができ、RFXがその中で左端最上位部分(64ビット・アドレス)である仮想アドレスが、16エクサバイト(8589934592領域)をアドレス指定することができる。
RXがその中で0である仮想アドレスは、セグメント・テーブルおよびページ・テーブルの2つの変換テーブルによって実アドレスに変換することができる。EDAT機構が動作可能であると、セグメント・テーブルだけで変換を完了することができる。RFXは非0でよく、その場合、領域第1テーブル、領域第2テーブル、および領域第3テーブルが必要となる。RFXが0であるが、RSXが非0であることがある場合、領域第2テーブルおよび領域第3テーブルが必要となる。RFXおよびRSXが0であるが、RTXが非0であることがある場合、領域第3テーブルが必要となる。
アドレス空間に関するASCEが、アドレス空間に対する参照を変換するのに必要なテーブルの最高レベル(領域第1テーブルで始まり、セグメント・テーブルの下方に続く)を指定しない場合、例外が認識される。
仮想アドレスの動的変換
次に図4を参照すると、図3で求めた有効なASCEを使用して、仮想アドレスの変換で使用される変換テーブルの階層内の第1変換テーブルを求める一実施形態が示されている。
一実施形態では、制御レジスタ1(CR1)はPASCEを含む。制御レジスタ7(CR7)はSASCEを含む。制御レジスタ13(CR13)はHASCEを含み、アクセス・レジスタ変換(ART)プロセスで導出されるアドレス空間第2テーブル・エントリ(ASTE)が、アクセス・レジスタ指定アドレス空間制御要素を含む。有効なASCE400が、こうした場所のうちの1つから選択される。
有効なASCE400の第1部分は、領域第1テーブル、領域第2テーブル、領域第3テーブル、またはセグメント・テーブルを指定するオリジン・アドレスを含むテーブル・オリジン402を含む。テーブル・オリジン(ビット0..51)に12個の2進数0が付加されて、仮想アドレスの変換で使用すべき変換テーブルの階層内の最高の変換テーブルの64ビット・オリジン・アドレスが形成される。有効なASCE400はまた、実空間制御(R)ビット404およびDTビット406をも含む。実空間制御(R)ビットが0である場合、DTビットがセレクタ408で復号化され、どの特定のオリジン・アドレスがテーブル・オリジン402であるかが判定される。DTビットが3(2進数11)に等しい場合、テーブル・オリジン402は領域第1テーブル410を指定する。DTビットが2(2進数10)に等しい場合、テーブル・オリジン402は領域第2テーブル412を指定する。DTビットが1(2進数01)に等しい場合、テーブル・オリジン402は領域第3テーブル414を指定する。そうではなく、DTビットが0(2進数00)に等しい場合、テーブル・オリジン402はセグメント・テーブル416を指定する。
領域第1テーブル、領域第2テーブル、または領域第3テーブルは、単に領域テーブルと呼ばれることもある。同様に、領域第1テーブル指定、領域第2テーブル指定、または領域第3テーブル指定は、領域テーブル指定と呼ばれることもある。領域、セグメント、およびページ・テーブルは、実ストレージの現割当てを反映する。ページは、仮想ストレージの割当てについて使用される用語である。実ストレージは固定ブロックで配分される。ページは、1組の順次仮想アドレスに割り振られるとしても、実ストレージ内で隣接する必要はない。
変換で使用されるASCEが領域第1テーブル指定であるとき、変換プロセスは、例えば領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、および任意選択でページ・テーブルを使用してマルチレベル・ルックアップを行うものである。こうしたテーブルは、実ストレージまたは絶対ストレージ内に常駐する。ASCEが領域第2テーブル指定、領域第3テーブル指定、またはセグメント・テーブル指定であるとき、指定されたレベルの上のテーブルのレベル内のルックアップが省略され、上位レベル・テーブル自体が省略される。
次に図5を参照すると、変換テーブルの階層を使用する仮想アドレスの動的アドレス変換の一実施形態が示されている。
図4の有効なASCE400は、指定タイプ(DT)ビット406を含む。ASCEの実空間制御(R)404ビットが0である場合、DTビットがセレクタ408で復号化され、テーブル・オリジン402が指定するオリジン・アドレスはどれかが求められる。実空間制御(R)ビットが1である場合、図6のノードD564で示されるように、動的アドレス変換が行われる。
DTビットがセレクタ408で3(2進数11)に等しい場合、変換テーブルの階層内の指定された第1テーブルが、領域第1テーブルである。502で、テーブル・オリジン402が、仮想アドレスの領域第1索引(RFX)508部分と算術的に加算され、領域第1テーブル内の領域第1テーブル・エントリ506が参照される。(右側に12個の0が付加され、または4096が掛けられた)テーブル・オリジンが、索引に8を掛けた積(または右側に3つの0が付加された索引)に加算される。領域第1テーブル・エントリは、変換で使用される変換テーブルの階層内の次の下位テーブルに対する領域第2テーブル・オリジン504を含む。領域第1テーブルに対する次の下位テーブルは、領域第2テーブルである。領域第1テーブル・エントリの無効(I)ビットが1に等しい場合、領域第1テーブル・エントリは無効であり、変換で使用することができない。例外条件が示される。
DTビットがセレクタ408で2(2進数10)に等しい場合、変換テーブルの階層内の指定された第1テーブルは、領域第2テーブルである。510で、テーブル・オリジン402が、仮想アドレスの領域第2索引(RSX)516部分と算術的に加算され、領域第2テーブル内の領域第2テーブル・エントリ514が参照される。(右側に12個の0が付加され、または4096が掛けられた)テーブル・オリジンが、索引に8を掛けた積(または右側に3つの0が付加された索引)に加算される。領域第2テーブル・エントリは、変換で使用される変換テーブルの階層内の次の下位テーブルに対する領域第3テーブル・オリジン512を含む。領域第2テーブルに対する次の下位テーブルは、領域第3テーブルである。領域第2テーブル・エントリの無効(I)ビットが1に等しい場合、領域第2テーブル・エントリは無効であり、例外条件が示される。
DTビットがセレクタ408で1(2進数01)に等しい場合、変換テーブルの階層内の指定された第1テーブルは、領域第3テーブルである。518で、テーブル・オリジン402が、仮想アドレスの領域第3索引(RTX)524部分と算術的に加算され、領域第3テーブル内の領域第3テーブル・エントリ522が参照される。(右側に12個の0が付加され、または4096が掛けられた)テーブル・オリジンが、索引に8を掛けた積(または右側に3つの0が付加された索引)に加算される。領域第3テーブル・エントリは、変換で使用される変換テーブルの階層内の次の下位テーブルに対するセグメント・テーブル・オリジン520を含む。領域第3テーブルに対する次の下位テーブルは、セグメント・テーブルである。領域第3テーブル・エントリの無効(I)ビットが1に等しい場合、領域第3テーブル・エントリは無効であり、例外条件が示される。
DTビットがセレクタ408で0(2進数00)に等しい場合、変換テーブルの階層内の指定された第1テーブルは、セグメント・テーブルである。526で、テーブル・オリジン402が、仮想アドレスのセグメント索引(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である場合、セグメント・テーブルから得られるセグメント・テーブル・エントリは、変換テーブルの階層内の次の下位テーブルに対するオリジン・アドレスを含む。セグメント・テーブルに対する次の下位テーブルは、ページ・テーブルである。538で、図5のセグメント・テーブル・エントリ530から得られるページ・テーブル・オリジン528が、仮想アドレスのページ索引(PX)534部分と算術的に加算され、ページ・テーブル内のページ・テーブル・エントリ542が参照される。(右側に11個の0が付加され、または2048が掛けられた)テーブル・オリジンが、索引に8を掛けた積(または右側に3つの0が付加された索引)に加算される。ページ・テーブル・エントリはページ・フレーム実アドレス(PFRA)546を含む。548で、ページ・フレーム実アドレスの左端ビットが、仮想アドレスのバイト索引(BX)536部分と連結されるとき、64ビット実アドレス550が得られる。実64ビット・アドレスにはさらに、絶対アドレスが形成するためにプレフィックス変換操作が施されることがある。変換後仮想アドレスは、主ストレージまたはメモリ内のデータの所望の4キロバイト(4096バイト)ブロックを参照する。
好ましくは、仮想アドレスのメモリ・アドレスへの動的変換で使用される情報が、仮想アドレスに関連するメモリのブロックのアドレスと共に、変換ルックアサイド・バッファ・エントリ・タグ内に格納される。後続のストレージ・アクセスは、ASCE情報および仮想アドレス情報を変換ルックアサイド・バッファ・タグと比較することによって仮想アドレスを迅速に変換することができる。タグが仮想アドレスのタグであると判明した場合、関係する各変換テーブルの低速順次アクセスを実施する代わりに、メモリのブロックの変換ルックアサイド・バッファ・アドレスを使用することができる。一実施形態では、ページ・フレーム実アドレス(PFRA)、ならびに例えばASCEと、仮想アドレスのRX、SX、およびPX部分とからなるタグが、変換ルックアサイド・バッファ544のエントリ内に格納される。その後で、この仮想アドレスの後続の変換が、変換ルックアサイド・バッファ内に含まれる情報から導出される。
次に図7を参照する。セグメント・テーブル・エントリ530内のSTEフォーマット制御が1である場合、セグメント・テーブル・エントリはセグメント・フレーム絶対アドレス(SFAA)552を含む。554で、セグメント・フレーム絶対アドレスの左端ビットが、仮想アドレスのページ索引534部分およびバイト索引536部分と連結されるとき、64ビット絶対アドレス556が得られる。変換後仮想アドレスは、主ストレージまたはメモリ内のデータの所望の大きなブロックを参照する。データの大きなブロックは、少なくとも1メガバイト(1048576バイト)のサイズである。
一実施形態では、セグメント・フレーム絶対アドレス(SFAA)、ならびに仮想アドレスのRX部分およびSX部分が、変換ルックアサイド・バッファ544内に格納される。その後で、この仮想アドレスの後続の変換が、変換ルックアサイド・バッファ内に含まれる情報から導出される。
変換テーブル・エントリ・フォーマット
変換で使用される変換テーブルの階層内の様々な変換テーブル・エントリの実施形態は以下の通りである。
領域テーブル・エントリ
「領域テーブル・エントリ」という用語は、領域第1テーブル・エントリ、領域第2テーブル・エントリ、または領域第3テーブル・エントリを意味する。領域第1テーブル、領域第2テーブル、および領域第3テーブルからフェッチされるエントリが、以下のフォーマットを有する。エントリを含むテーブルのレベル(第1、第2、または第3)は、エントリ内のテーブル・タイプ(TT)ビットで識別される。
一実施形態では、領域第1テーブル・エントリ、領域第2テーブル・エントリ、および領域第3テーブル・エントリのフォーマットは以下の通りである。
Figure 2011513808
Figure 2011513808
Figure 2011513808
領域第2テーブル・オリジン、領域第3テーブル・オリジン、およびセグメント・テーブル・オリジン:領域第1テーブル・エントリは領域第2テーブル・オリジンを含む。領域第2テーブル・エントリは領域第3テーブル・オリジンを含む。領域第3テーブル・エントリはセグメント・テーブル・オリジンを含む。以下の説明は、3つのテーブル・オリジンのそれぞれに当てはまる。エントリのビット0〜51の右側に12個の0が付加されて、次の下位レベル・テーブルの先頭を指定する64ビット・アドレスが形成される。
DAT保護ビット(P):拡張DATが適用されるとき、ビット54は、後続の各領域テーブル・エントリ、セグメント・テーブル・エントリ、および適用可能なときは、変換で使用されるページ・テーブル・エントリ内のDAT保護ビットとORされるものとして扱われる。したがって、ビットが1であるとき、DAT保護は、領域テーブル・エントリで指定される領域(複数可)全体に適用される。拡張DAT機構がインストールされないとき、または機構がインストールされるが、拡張DAT動作可能制御(enhanced DAT enablement control)が0であるとき、領域テーブル・エントリのビット54は無視される。
領域第2テーブル・オフセット、領域第3テーブル・オフセット、およびセグメント・テーブル・オフセット(TF):領域第1テーブル・エントリは領域第2テーブル・オフセットを含む。領域第2テーブル・エントリは領域第3テーブル・オフセットを含む。領域第3テーブル・エントリはセグメント・テーブル・オフセットを含む。以下の説明は、3つのテーブル・オフセットのそれぞれに当てはまる。エントリのビット56および57は、テーブルの先頭で欠落している次の下位レベル・テーブルの一部の長さを指定し、すなわちこのビットは、次の下位レベル・テーブル内に実際に存在する第1エントリの位置を指定する。このビットは、欠落部分の長さを4096バイト単位で指定し、したがって欠落部分の長さは、512エントリの倍数単位で可変となる。4096バイト単位の欠落部分の長さは、TF値に等しい。オフセット・フィールドの内容は、ビット62および63の長さフィールドと共に、次の下位レベル・テーブルによって変換すべき仮想アドレス(RSX、RTX、またはSX)の部分がテーブル内に実際に存在するエントリを指定するかどうかを確立するのに使用される。
領域無効ビット(I):領域第1テーブル・エントリまたは領域第2テーブル・エントリ内のビット58は、エントリに関連する領域のセットが利用可能かどうかを制御する。領域第3テーブル・エントリ内のビット58は、エントリに関連する単一の領域が利用可能かどうかを制御する。ビット58が0であるとき、領域テーブル・エントリを使用することによってアドレス変換が進行する。ビットが1であるとき、エントリを変換のために使用することができない。
テーブル・タイプ・ビット(TT):領域第1テーブル・エントリ、領域第2テーブル・エントリ、および領域第3テーブル・エントリのビット60および61は、エントリを含むテーブルのレベルを以下のように特定する。ビット60および61は、変換で使用中のASCEであるテーブル指定のタイプと、これまで使用されたテーブル・レベルの数とを考慮して、正しいテーブル・レベルを特定しなければならない。そうでない場合、変換指定例外が認識される。以下のテーブルは、テーブル・タイプ・ビットを示す。
Figure 2011513808
領域第2テーブル長、領域第3テーブル長、およびセグメント・テーブル長(TL):領域第1テーブル・エントリは領域第2テーブル長を含む。領域第2テーブル・エントリは領域第3テーブル長を含む。領域第3テーブル・エントリはセグメント・テーブル長を含む。以下の説明は、3つのテーブル長のそれぞれに当てはまる。エントリのビット62および63は、次の下位レベル・テーブルの長さを4096バイト単位で指定し、したがってテーブルの長さは、512エントリの倍数単位で可変となる。4096バイト単位の、次の下位レベル・テーブルの長さは、TL値よりも1つ大きい。長さフィールドの内容は、ビット56および57のオフセット・フィールドと共に、次の下位レベル・テーブルによって変換すべき仮想アドレス(RSX、RTX、またはSX)の部分がテーブル内に実際い存在するエントリを指定するかどうかを確立するのに使用される。領域テーブル・エントリのすべての他のビット位置は、可能性のある将来の拡張のために予約され、0を含むべきである。そうでない場合、プログラムは、将来に互換式に動作しないことがある。拡張DATが適用されるとき、領域テーブル・エントリの予約済みビット位置は、テーブル・エントリが無効であっても0を含むべきである。
セグメント・テーブル・エントリ
拡張DATが適用されないとき、または拡張DATが適用され、セグメント・テーブル・エントリのビット53であるSTEフォーマット制御が0であるとき、一実施形態では、セグメント・テーブルからフェッチされるエントリが、以下のフォーマットを有する。
Figure 2011513808
拡張DATが適用され、STEフォーマット制御が1であるとき、一実施形態では、セグメント・テーブルからフェッチされるエントリが、以下のフォーマットを有する。
Figure 2011513808
セグメント・テーブル・エントリ内の選択されるフィールドが、以下のように割り振られる。
ページ・テーブル・オリジン:拡張DATが適用されないとき、または拡張DATが適用されるが、セグメント・テーブル・エントリのビット53であるSTEフォーマット制御が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保護ビットとORされるものとして扱われる。STEフォーマット制御が0であるとき、STE内のDAT保護ビットはさらに、ページ・テーブル・エントリ内のDAT保護ビットとORされるものとして扱われる。
変更記録オーバーライド(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は、エントリを含むテーブルのレベルを特定するために2進数00である。領域テーブル・エントリまたはセグメント・テーブル・エントリ内のビット60および61のすべての可能な値の意味は、以下の通りである。
Figure 2011513808
ビット60および61は、変換で使用中のASCEであるテーブル指定のタイプと、これまで使用されたテーブル・レベルの数とを考慮して、正しいテーブル・レベルを特定しなければならない。そうでない場合、変換指定例外が認識される。セグメント・テーブル・エントリのすべての他のビット位置は、可能性のある将来の拡張のために予約され、0を含むべきである。そうでない場合、プログラムは、将来に互換式に動作しないことがある。拡張DATが適用されるとき、セグメント・テーブル・エントリの予約済みビット位置は、テーブル・エントリが無効であっても0を含むべきである。
ページ・テーブル・エントリ
一実施形態では、ページ・テーブルからフェッチされるエントリが、以下のフォーマットを有する。
Figure 2011513808
ページ・テーブル・エントリ内の選択されたフィールドは、以下のように割り振られる。
ページ・フレーム実アドレス(PFRA):ビット0〜51が、実ストレージ・アドレスの左端ビットを与える。これらのビットが仮想アドレスの12ビット・バイト索引フィールドの右側に連結されるとき、64ビット実アドレスが得られる。
ページ無効ビット(I):ビット53は、ページ・テーブル・エントリに関連するページが利用可能かどうかを制御する。ビットが0であるとき、ページ・テーブル・エントリを使用することによってアドレス変換が進行する。ビットが1であるとき、ページ・テーブル・エントリを変換のために使用することができない。
DAT保護ビット(P):ビット54は、ページ内でストア・アクセスを行うことができるかどうかを制御する。この保護機構が、キー制御保護機構および低アドレス保護機構に追加される。ビットは、フェッチ・アクセスには効果を及ぼさない。ビットが0であるとき、ページに対してストアが許可され、以下の追加の制限の対象となる。
・変換で使用されるセグメント・テーブル・エントリ内でDAT保護ビットが0となる。
・拡張DATが適用されるとき、変換で使用されるすべての領域テーブル・エントリ内でDAT保護ビットは0となる。
・他の保護機構。
ビットが1である場合、ストアが却下される。より高い優先順位の例外が存在しないとき、DAT保護ビットが1であるときの格納する試みにより、保護例外が認識される。DAT保護がページに適用されるかどうかを判定するとき、セグメント・テーブル・エントリ内のDAT保護ビットは、ビット54とORされるものとして扱われる。拡張DATが適用されるとき、DAT保護が適用されるかどうかを判定するとき、変換で使用される任意の領域テーブル・エントリ内のDAT保護ビットもビット54とORされるものとして扱われる。
変更記録オーバーライド(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でない場合により高いレベル(複数化)のテーブルの使用を必要とすることになる仮想アドレス・ビットは、すべて0でなければならない。そうでない場合、ASCEタイプ例外が認識される。ASCEが実空間指定であるとき、仮想アドレスは実アドレスとして扱われ、実ストレージまたは絶対ストレージ内のテーブル・エントリは使用されない。
特定のアドレス変換のために使用されるASCEは、有効なASCEと呼ばれる。したがって、1次仮想アドレスが変換されるとき、制御レジスタ1の内容が、有効なASCEとして使用される。同様に、2次仮想アドレスでは、制御レジスタ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である場合、ページ変換例外が認識される。ページ・テーブル・エントリは、仮想アドレスの変換を表す実アドレスの左端ビットを含み、ページ・テーブル・エントリで指定されるページにのみ適用されるページ保護ビットを含む。
仮想アドレスのバイト索引フィールドが、実アドレスの右端のビット位置として変わらずに使用される。
実ストレージまたは絶対ストレージ内の変換テーブルへの参照に関連する遅延をなくすために、テーブルから一般にフェッチされた情報は、特別なバッファである変換ルックアサイド・バッファ内にも配置され、変換ルックアサイド・バッファ内に記録された情報を使用することにより、同じテーブル・エントリを伴う後続の変換を実施することができる。変換ルックアサイド・バッファはまた、実空間指定に関するV=R変換をも記録することができる。
領域テーブル、セグメント・テーブル、またはページ・テーブルからエントリをフェッチする目的で実ストレージまたは絶対ストレージへのアクセスがアドレス変換プロセス中に行われるときはいつでも、キー制御保護は適用されない。
ASCEで指定されるテーブル内のルックアップ
有効なASCEのビット60〜61のDT制御は、以下のように、ASCEのテーブル指定タイプと、指定のテーブルによって変換すべき仮想アドレスの部分のどちらも指定する。
Figure 2011513808
ビット60および61が2進数の値11を有するとき、仮想アドレスの領域第1索引部分は、ASCE内に含まれる領域第1テーブル・オリジンと共に、領域第1テーブルからエントリを選択するのに使用される。実ストレージまたは絶対ストレージ内の領域第1テーブル・エントリ64ビット・アドレスは、領域第1テーブル指定のビット0〜51の右側に12個の0を付加すること、および右端に3つの0を付加し、左端に50個の0を付加した領域第1索引を加えることによって得られる。領域第1テーブル・ルックアップ・プロセスの部分として、仮想アドレスのビット0および1(これは領域第1索引のビット0および1である)が、領域第1テーブル指定のビット62および63であるテーブル長と比較され、アドレス指定されたエントリが領域第1テーブル内にあるかどうかが確立される。テーブル長フィールド内の値が仮想アドレスの対応するビット位置内の値未満である場合、領域第1変換例外が認識される。変換ルックアサイド・バッファ内の領域第1テーブル・エントリの同等物が変換で使用される場合、テーブル長との比較を省略することができる。領域第1テーブルからフェッチされるエントリが、対応する領域第2テーブルの先頭を指定し、対応する領域第2テーブルのオフセットおよび長さを指定する。
ASCEのビット60および61が2進数の値10を有するとき、仮想アドレスの領域第2索引部分は、ASCE内に含まれる領域第2テーブル・オリジンと共に、領域第2テーブルからエントリを選択するのに使用される。仮想アドレスのビット11および12(これは領域第2索引のビット0および1である)が、ASCE内のテーブル長と比較される。テーブル長フィールド内の値が仮想アドレスの対応するビット位置内の値未満である場合、領域第2変換例外が認識される。変換ルックアサイド・バッファ内の領域第2テーブル・エントリの同等物が変換で使用される場合、テーブル長との比較を省略することができる。領域第2テーブル・ルックアップ・プロセスは、その他の点では領域第1テーブル・ルックアップ・プロセスと同じである。領域第2テーブルからフェッチされるエントリが、対応する領域第3テーブルの先頭を指定し、対応する領域第3テーブルのオフセットおよび長さを指定する。
ASCEのビット60および61が2進数の値01を有するとき、仮想アドレスの領域第3索引部分は、ASCE内に含まれる領域第3テーブル・オリジンと共に、領域第3テーブルからエントリを選択するのに使用される。仮想アドレスのビット22および23(これは領域第3索引のビット0および1である)が、ASCE内のテーブル長と比較される。テーブル長フィールド内の値が仮想アドレスの対応するビット位置内の値未満である場合、領域第3変換例外が認識される。領域第3テーブル・ルックアップ・プロセスは、その他の点では、領域第3テーブル・エントリ内のテーブル・タイプ・ビットのチェッキングを含めて、領域第1テーブル・ルックアップ・プロセスと同じである。領域第3テーブルからフェッチされるエントリが、対応するセグメント・テーブルの先頭を指定し、対応するセグメント・テーブルのオフセットおよび長さを指定する。
ASCEのビット60および61が2進数の値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つの0を付加し、左端に50個の0を付加した領域第2索引を加えることによって得られる。
領域第2、領域第3、またはセグメント・テーブル・エントリのアドレスを形成するとき、プレフィックス変換がある場合にそれがより高レベルのテーブル・エントリ内に含まれるそれぞれのテーブル・オリジンにテーブル索引値の追加前に適用されるか、それともテーブル・オリジンおよびテーブル索引値の追加によって形成されるテーブル・エントリ・アドレスにプレフィックス変換が適用されるかは予測不能である。
領域第2テーブル・ルックアップ・プロセスの部分として、仮想アドレスのビット11および12(これは領域第2索引のビット0および1である)が、領域第1テーブル指定のビット56および57であるテーブル・オフセット、ならびに領域第1テーブル・エントリのビット62および63であるテーブル長と比較され、アドレス指定されるエントリが領域第2テーブル内にあるかどうかが確立される。テーブル・オフセット・フィールド内の値が仮想アドレスの対応するビット位置内の値よりも大きい場合、またはテーブル長フィールド内の値が仮想アドレスの対応するビット位置内の値未満である場合、領域第2変換例外が認識される。
領域第2テーブルは、対応する領域第3テーブルの先頭を指定し、対応する領域第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つの0を付加し、左端に53個の0を付加したページ索引を加えることによって得られる。ビット位置0のキャリーアウトを行うことはできない。
ページ・テーブルからフェッチされるエントリが、ページの可用性を示し、ページ・フレーム実アドレスの左端ビットを含む。ビット53であるページ無効ビットが検査され、対応するページが利用可能であるかどうかが確立される。このビットが1である場合、ページ変換例外が認識される。ビット位置52が1を含む場合、変換指定例外が認識される。拡張DATが適用されないとき、または拡張DATが適用され、STEフォーマット制御が0であるとき、ビット位置55が1を含む場合、変換指定例外がやはり認識される。DAT保護ビットが変換で使用されるセグメント・テーブル・エントリ内、またはページ・テーブル・エントリ内で1である場合、または変換で使用される何らかの領域テーブル・エントリ拡張DATが適用され、変換を実施中のストレージ参照がストアであるとき、保護例外が認識される。
実アドレスおよび絶対アドレスの形成
有効なASCEが実空間指定であるとき、仮想アドレスのビット0〜63が、実ストレージ・アドレスとして直接的に使用される。実アドレスにさらにプレフィックス変換を施して、絶対アドレスを形成することができる。有効なASCEが実空間指定ではなく、変換プロセスで例外に直面しないとき、以下の条件が適用される。
・拡張DATが適用されないとき、または拡張DATが適用されるが、STEフォーマット制御が0であるとき、ページ・フレーム実アドレスがページ・テーブル・エントリから得られる。ページ・フレーム実アドレスと仮想アドレスのバイト索引部分とが連結され、ページ・フレーム実アドレスが左端部を形成する。その結果は、仮想アドレスに対応する実ストレージ・アドレスである。実アドレスにさらにプレフィックス変換を施し、絶対アドレスを形成することができる。
・拡張DATが適用され、STEフォーマット制御が1であるとき、セグメント・フレーム絶対アドレスと、仮想アドレスのページ索引部分およびバイト索引部分とが、それぞれ左から右に連結され、仮想アドレスに対応する絶対アドレスが形成される。
変換中の例外の認識
無効とマークされたテーブル・エントリ、あるいは無効アドレス無効フォーマットを含むテーブル・エントリにより、変換プロセス中に例外が認識されることがある。例外は、テーブル・エントリ内に含まれる情報が変換のために使用され、誤っていると判明したときに認識される。
さらに、変換すべき仮想アドレスがASCEで指定されるトップ・レベル・テーブルで表すことのできる範囲を超える場合に、例外、例えばASCEタイプ例外が発生する可能性がある。一例として、以下の擬似コードの結果としてASCEタイプ例外が発生する。
If ((DT < 3 AND RFX != 0) OR (DT < 2AND (RFX || RSX) != 0) OR (DT < 1 AND RX != 0)) then asce_type_exception();
DTビットは指定タイプ(ASCEのビット60〜61)である。RFXは領域第1索引(仮想アドレスのビット0〜10)である。RSXは領域2索引(仮想アドレスのビット11〜21)である。RXは領域索引全体(仮想アドレスのビット0〜32)である。擬似コードで使用される論理演算および比較オペランドを当業者は容易に理解されよう。
変換例外修飾子(TXQ)
変換例外修飾子に関して、「拡張DATが適用されるとき」という語句は、変換例外が提示されるレベル(ホストまたはゲスト)に関する。例えば、拡張DATがホスト・レベルに適用されるときにはいつでも、拡張DATがゲスト・レベルで適用されるか否かに関わらず、TXQがホスト変換例外上で提示される。
DAT関連プログラム割込みの間に、変換例外識別(TEID)が格納される。拡張DAT機構がインストールされ、動作可能となるとき、変換例外修飾子(TXQ)が、TEIDの3ビット内に格納される。TXQは、割込みがホストで引き起こされたか、それともゲストで引き起こされたかを判定する際にホスト構成を支援する。例外がゲストで引き起こされた場合、TXQは、割込みがゲスト・リーフ・テーブル・エントリ内に含まれるアドレスで引き起こされたか否かを示し、そうである場合、リーフ・エントリがセグメント・テーブル・エントリであったか、それともページ・テーブル・エントリであったかを示す。これにより、ゲストが4Kバイト・フレーム対1Mバイト・フレームとみなすエリアに対する参照をホストが認識することが可能となる。TXQは、より大きいフレーム・サイズ、例えば2ギガバイトが必要である場合に拡張することができるように設計される。
ASCEタイプ例外、領域第1変換例外、領域第2変換例外、領域第3変換例外、セグメント変換例外、またはページ変換例外によるプログラム割込みの間に、例外を引き起こす仮想アドレスのビット0〜51が、位置168〜175のビット位置0〜51内に格納される。このアドレスは、変換例外アドレスと呼ばれることもある。位置168〜175のビット52〜56は、予測不能である。
拡張DAT機構がホスト構成でインストールされ、動作可能となり、ホストASCEタイプ、領域変換例外、セグメント変換例外、またはページ変換例外が認識されるとき、ビット57〜59は、以下のように変換例外修飾子(TXQ)を含む。
・0−例外が、現在実行中の構成で引き起こされた(すなわち、ゲスト実行中にゲストDAT例外が提示され、またはホスト実行中にホストDAT例外が提示される)。
・1−例外が、以下で列挙されるもの以外のゲスト・アドレスから導出されたホスト仮想アドレスと関連付けられた。
・2−例外が、ゲスト・ページ・フレーム実アドレスから導出されたホスト仮想アドレスと関連付けられた。
・3−例外が、ゲスト・セグメント・フレーム絶対アドレスから導出されたホスト仮想アドレスと関連付けられた。
・4〜7予約済み。
TXQ値1〜3は、ゲスト実行中に発生したホスト例外に関してのみ提示される。
2レベルDAT
上述のように、ページ可能ゲストの実行中、2つのレベルのDATが実施される。ゲスト仮想アドレスが、ゲストDAT、および適用可能なときはプレフィックス変換を介してゲスト絶対アドレスに変換され、次いでゲスト絶対アドレスは、ホスト1次アドレス空間内のホスト仮想アドレスとして扱われ、ホストDAT、および適用可能なときはプレフィックス変換を介してホスト絶対アドレスに変換される。ゲストDATプロセスの間、ホストDATおよび適用可能なときはプレフィックス変換を介してやはり変換しなければならないゲスト絶対アドレスを介して配置されるゲスト変換テーブル・エントリに対する参照が行われる。プロセスの結果、ゲスト・テーブル仕様および内容に基づくゲストDAT例外が発生する可能性があり、ゲスト・テーブル・エントリまたはゲスト変換の最終目標のための、ゲスト絶対アドレスに対する各参照により、ホストDAT例外が引き起こされる可能性がある。こうした例外のそれぞれについて適切なTXQを生成しなければならない。図8〜11は、ゲストDATプロセスを詳細に示し、図11〜13は、ホストDATプロセスを示す。
ゲストDAT
次に図8を参照すると、ゲスト・セグメント・テーブル・エントリからフォーマット制御フィールドを得る地点に対するゲスト動的アドレス変換の一実施形態の流れ図が示されている。
602で、変換すべきゲスト仮想アドレスが得られる。604で、仮想アドレスの変換で使用される最高の変換テーブルのオリジン・アドレス、テーブル・レベル、およびテーブル長さが得られる。変換で使用される第1変換テーブルのオリジン・アドレスが、ASCE内のテーブル・オリジン・フィールドから取られる。テーブル・レベルおよびテーブル長は、それぞれASCE内のDTビットおよびTLビットに依存する。使用される最高の変換テーブルに関するテーブル・オフセットは、常に0として扱われる。606で、変換テーブル内の適切なテーブル・エントリを参照するのに使用すべきゲスト仮想アドレスの索引部分がまず、テーブル内で表される最小索引値および最大索引値を決定するテーブル・オフセットおよびテーブル長と突き合わせてチェックされる。606で、索引がこの範囲外である場合、仮想アドレスのそれ以上の変換を進めることができない。一実施形態では、608で、索引付け中のテーブル・レベルに対して適切なゲスト変換例外が提示される(例えば、領域第1例外、領域第2例外、領域第3例外、またはセグメント変換例外)。これは、ゲストを実行中に直面したゲストDAT例外であるので、TXQが0に設定され、現構成レベルでの例外が示される。次いで、610で、この仮想アドレスの変換が停止する。606で、索引が有効範囲内にある場合、612で、索引にテーブル・エントリ長を掛けたものがテーブル・オリジンに加えられ、テーブル・エントリのゲスト絶対アドレスが生成される。614で、このゲスト絶対アドレスがホスト仮想アドレスとして扱われ、ホストDATおよび適用可能なときはプレフィックス変換が起動され、対応するホスト絶対アドレスが得られる。必要な場合にTXQを生成する際に使用すべきホストDATに対する追加のパラメータが、変換すべきアドレスのソースがページ・フレーム実アドレスまたはセグメント・フレーム絶対アドレス以外のゲスト・アドレスであることを示す。以下で説明する図11〜13が、ホストDATプロセスを詳述する。616で、ホストDATプロセスに障害が起こった場合、618で、ゲスト変換プロセスは終了する。ホストDATプロセスは例外を生成している。このホスト例外に関するTXQが、図11で説明するように求められる。616で、ホストDATプロセスが成功した場合、620で、得られるホスト絶対アドレスを使用して、ゲスト変換テーブル・エントリがフェッチされる。622で、ゲスト・テーブル・エントリ内の無効(I)ビットが検査される。Iビットが設定されている場合、Iビットが無効とマークされているので、テーブル・エントリを使用して仮想アドレスのそれ以上の変換を進めることができない。608で、上記と同様に、現構成を示すTXQ値と共にゲスト変換例外が提示され、610で、このセグメント・テーブル・エントリを使用するこの仮想アドレスのそれ以上の変換が停止する。そうでない場合、624で、ゲスト変換テーブルからフェッチされるエントリがセグメント・テーブル・エントリではない場合、変換テーブルの階層内のセグメント・テーブルはまだ参照されていない。この場合、626で、ゲスト変換テーブルの階層内の次の下位テーブルのオリジン、オフセット、および長さが、テーブル・エントリから得られる。制御はステップ606に戻り、ステップ606で、ゲスト仮想アドレス内の次の索引フィールドが、この新しいオフセットおよび長さと突き合わせてチェックされ、範囲内である場合、この索引が、変換で使用される次の下位テーブル内の対応するテーブル・エントリを参照するのに使用される。
例えば、変換で使用すべき第1ゲスト変換テーブルのテーブル・オリジン・アドレスが領域第1テーブルである場合、ゲスト仮想アドレスのRFX部分が、領域第1テーブル内の領域第1テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスが領域第2テーブルに対するものである場合、仮想アドレスのRSX部分が、領域第2テーブル内の領域第2テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスが領域第3テーブルに対するものである場合、仮想アドレスのRTX部分が、領域第3テーブル内の領域第3テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスがセグメント・テーブルに対するものである場合、仮想アドレスのSX部分が、セグメント・テーブル内のセグメント・テーブル・エントリを参照するのに使用される。セグメント・テーブル・エントリがフェッチされるまで、連続するテーブルが参照される。
ゲスト・セグメント・テーブル・エントリがフェッチされると、628で、セグメント・テーブル・エントリ(STE)フォーマット制御ビットが検査され、この特定の仮想アドレスについてフォーマット制御が設定されているかどうかが判定される。STEフォーマット制御が0である場合、ノード630に関して動的アドレス変換が行われる。STEフォーマット制御が1である場合、ノード632に関して動的アドレス変換が行われる。
ゲスト動的アドレス変換(STEフォーマット制御が0である)
次に図9を参照すると、ゲストSTEフォーマット制御が0であるときの、図8のノード630からの流れ図の続きが示されている。
710で、ゲスト・ページ・テーブルに対するオリジン・アドレスが、ゲスト・セグメント・テーブル・エントリから得られる。712で、ゲスト仮想アドレスのページ索引(PX)部分にテーブル・エントリ長が掛けられ、それがゲスト・ページ・テーブル・オリジンに加えられ、ゲスト・ページ・テーブル・エントリのゲスト絶対アドレスが生成される。714で、このゲスト絶対アドレスは、ホスト仮想アドレスとして扱われ、ホストDATおよび適用可能なときはプレフィックス変換が起動され、対応するホスト絶対アドレスが得られる。必要な場合にTXQを生成する際に使用すべきホストDATに対する追加のパラメータが、変換すべきアドレスのソースがページ・フレーム実アドレスまたはセグメント・フレーム絶対アドレス以外のゲスト・アドレスであることを示す。716で、ホストDATプロセスに障害が起こった場合、718で、ゲスト変換プロセスは終了する。ホストDATプロセスは例外を生成している。716で、ホストDATプロセスが成功した場合、720で、得られるホスト絶対アドレスを使用して、ゲスト・ページ・テーブル・エントリがフェッチされる。ゲスト・ページ・テーブル・エントリから無効(I)ビットが得られる。722で、無効(I)ビットが1である場合、エントリが無効とマークされているので、このページ・テーブル・エントリを使用して仮想アドレスの変換を続行することができない。724で、ゲスト・ページ変換例外が提示され、TXQ値が、現構成レベルでの変換から例外が発生したことを示す。726で、このページ・テーブル・エントリを使用する仮想アドレスのそれ以上の変換が停止する。722で、無効(I)ビットが0である場合、728で、ゲスト・ページ・テーブル・エントリからのゲスト・ページ・フレーム実アドレス(PFRA)が、ゲスト仮想アドレスのバイト索引(BX)部分と組み合わされ、入力ゲスト仮想アドレスに対応するゲスト実アドレスが生成される。730で、このゲスト実アドレスにさらにゲスト・プレフィックス変換操作が施され、ゲスト絶対アドレスが形成される。732で、このゲスト絶対アドレスはホスト仮想アドレスとして扱われ、ホストDATおよび適用可能なときはプレフィックス変換が起動され、対応するホスト絶対アドレスが得られる。必要な場合にTXQを生成する際に使用すべきホストDATに対する追加のパラメータが、変換すべきアドレスのソースがゲスト・ページ・フレーム実アドレスであることを示す。734で、ホストDATプロセスに障害が起こった場合、718で、ゲスト変換プロセスは終了する。ホストDATプロセスは例外を生成している。734で、ホストDATプロセスが成功した場合、736で、得られるホスト絶対アドレスを使用して、変換後ゲスト仮想アドレスでアドレス指定されるデータのブロックがアクセスされる。
ゲスト動的アドレス変換(STEフォーマット制御が1である)
次に図10を参照すると、ゲストSTEフォーマット制御が1であるときの、図8のノード632からの流れ図の続きが示されている。
810で、ゲスト・セグメント・フレーム絶対アドレス(SFAA)が、ゲスト・セグメント・テーブル・エントリの一部から得られる。812で、ゲスト・セグメント・フレーム絶対アドレス(SFAA)が、ゲスト仮想アドレスのPX部分およびBX部分と組み合わされ、主ストレージまたはメモリ内のデータの所望のブロックのゲスト絶対アドレスが生成される。814で、このゲスト絶対アドレスがホスト仮想アドレスとして扱われ、ホストDATおよび適用可能なときはプレフィックス変換が起動され、対応するホスト絶対アドレスが得られる。必要な場合にTXQを生成する際に使用すべきホストDATに対する追加のパラメータが、変換すべきアドレスのソースがゲスト・セグメント・フレーム絶対アドレスであることを示す。816で、ホストDATプロセスに障害が起こった場合、818で、ゲスト変換プロセスは終了する。ホストDATプロセスは例外を生成している。816で、ホストDATプロセスが成功した場合、720で、得られるホスト絶対アドレスを使用して、変換後ゲスト仮想アドレスでアドレス指定されるデータの所望のブロックがアクセスされる。
ホストDAT
次に図11を参照すると、ホスト・セグメント・テーブル・エントリからフォーマット制御フィールドを得るために、ゲストEDATプロセスから起動することのできる、ホスト・レベルでのホスト動的アドレス変換の一実施形態の流れ図が示されている。
902で、変換すべきホスト仮想アドレスが得られる。904で、ホスト仮想アドレスの変換で使用される最高のホスト変換テーブルのオリジン・アドレス、テーブル・レベル、およびテーブル長さが得られる。変換で使用される第1ホスト変換テーブルのオリジン・アドレスが、ASCE内のテーブル・オリジン・フィールドから取られる。テーブル・レベルおよびテーブル長は、それぞれASCE内のDTビットおよびTLビットに依存する。使用される最高の変換テーブルに関するテーブル・オフセットは、常に0として扱われる。906で、変換テーブル内の適切なテーブル・エントリを参照するのに使用すべきホスト仮想アドレスの索引部分がまず、テーブル内で表される最小索引値および最大索引値を決定するテーブル・オフセットおよびテーブル長と突き合わせてチェックされる。906で、索引がこの範囲外である場合、仮想アドレスのそれ以上の変換を進めることができない。索引付け中のテーブル・レベルに対して適切なホスト変換例外を提示しなければならない(例えば、領域第1例外、領域第2例外、領域第3例外、またはセグメント変換例外)。一実施形態では、908で、ゲスト・プログラムが現在実行中であるかどうかテストが行われる。そうでない場合、すなわちホストが実行中である場合、910で、TXQが例えば0に設定されたホスト変換例外が提示され、現構成レベルでの例外が示される。そうではなく、ゲスト・プログラムが実行中である場合、912で、TXQがゲスト変換操作から渡されたアドレス・ソース値に設定されたホスト変換例外が提示される。どちらの場合も、次いで914で変換プロセスが停止する。
906で、索引が有効な範囲内にある場合、916で、索引にテーブル・エントリ長を掛けたものがホスト・テーブル・オリジンに加えられ、ホスト・テーブル・エントリのホスト絶対アドレスが生成される。918で、このホスト絶対アドレスを使用して、ホスト変換テーブル・エントリがフェッチされる。920で、ホスト・テーブル・エントリ内の無効(I)ビットが検査される。Iビットが設定されている場合、Iビットが無効とマークされているので、テーブル・エントリを使用して仮想アドレスのそれ以上の変換を進めることができない。制御は908に移り、上記と同様に、TXQ値と共にホスト変換例外が提示され、このセグメント・テーブル・エントリを使用するこの仮想アドレスのそれ以上の変換が停止する。そうでない場合、922で、変換テーブルからフェッチされるエントリがセグメント・テーブル・エントリではない場合、変換テーブルの階層内のセグメント・テーブルはまだ参照されていない。この場合、924で、ホスト変換テーブルの階層内の次の下位テーブルのオリジン、オフセット、および長さが、テーブル・エントリから得られる。制御はステップ906に戻り、ステップ906で、ホスト仮想アドレス内の次の索引フィールドが、この新しいオフセットおよび長さと突き合わせてチェックされ、範囲内である場合、この索引が、変換で使用される次の下位テーブル内の対応するホスト・テーブル・エントリを参照するのに使用される。
例えば、変換で使用すべき第1ホスト変換テーブルのテーブル・オリジン・アドレスが領域第1テーブルである場合、ホスト仮想アドレスのRFX部分が、領域第1テーブル内の領域第1テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスが領域第2テーブルに対するものである場合、仮想アドレスのRSX部分が、領域第2テーブル内の領域第2テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスが領域第3テーブルに対するものである場合、仮想アドレスのRTX部分が、領域第3テーブル内の領域第3テーブル・エントリを参照するのに使用される。テーブル・オリジン・アドレスがセグメント・テーブルに対するものである場合、仮想アドレスのSX部分が、セグメント・テーブル内のセグメント・テーブル・エントリを参照するのに使用される。セグメント・テーブル・エントリがフェッチされるまで、連続するテーブルが参照される。
ホスト・セグメント・テーブル・エントリがフェッチされると、926で、セグメント・テーブル・エントリ(STE)フォーマット制御ビットが検査され、この特定の仮想アドレスについてフォーマット制御が設定されているかどうかが判定される。STEフォーマット制御が0である場合、ノード928に関して動的アドレス変換が行われる。STEフォーマット制御が1である場合、ノード930に関して動的アドレス変換が行われる。
ホスト動的アドレス変換(STEフォーマット制御が0である)
次に図12を参照すると、ホストSTEフォーマット制御が0であるときの、図11のノード928からの流れ図の続きが示されている。
1002で、ホスト・ページ・テーブルに対するオリジン・アドレスが、ホスト・セグメント・テーブル・エントリから得られる。1004で、ホスト仮想アドレスのページ索引(PX)部分にテーブル・エントリ長が掛けられ、それがページ・テーブル・オリジンに加えられ、ホスト・ページ・テーブル・エントリのホスト絶対アドレスが生成される。1006で、このホスト絶対アドレスを使用して、ホスト・ページ・テーブル・エントリがフェッチされる。ホスト・ページ・テーブル・エントリから無効(I)ビットが得られる。1008で、無効(I)ビットが1である場合、エントリが無効とマークされているので、このページ・テーブル・エントリを使用して仮想アドレスの変換を続行することができない。制御は図11の940に移り、上記と同様に、適切なTXQ値と共にホスト変換例外が提示され、このページ・テーブル・エントリを使用するこの仮想アドレスのそれ以上の変換が停止する。1008で、無効(I)ビットが0である場合、1010で、ページ・テーブル・エントリからのホスト・ページ・フレーム実アドレス(PFRA)が、ホスト仮想アドレスのバイト索引(BX)部分と組み合わされ、入力ホスト仮想アドレスに対応するホスト実アドレスが生成される。1012で、このホスト実アドレスにさらにホスト・プレフィックス変換操作が施され、ホスト絶対アドレスが形成される。1014で、このホスト絶対アドレスが、ホスト・アドレス変換の結果として返され、例えばホスト・アドレス変換を起動したゲストDATプロセスで使用され、またはそれがない場合は、ホスト実行中にターゲット・データにアクセスするために使用される。
ホスト動的アドレス変換(STEフォーマット制御が1である)
次に図13を参照すると、ホストSTEフォーマット制御が1であるときの、図11のノード930からの流れ図の続きが示されている。
1102で、ホスト・セグメント・フレーム絶対アドレス(SFAA)が、ホスト・セグメント・テーブル・エントリの一部から得られる。1104で、ホスト・セグメント・フレーム絶対アドレス(SFAA)が、ホスト仮想アドレスのPX部分およびBX部分と組み合わされ、主ストレージまたはメモリ内のデータの所望のブロックのホスト絶対アドレスが生成される。1106で、このホスト絶対アドレスが、ホスト・アドレス変換の結果として返され、例えばホスト・アドレス変換を起動したゲストDATプロセスで使用され、またはそれがない場合は、ホスト実行中にターゲット・データにアクセスするために使用される。
したがって、変換例外修飾子(TXQ)フィールドは、割込みがゲスト・リーフ・テーブル・エントリ内に含まれるアドレスによって引き起こされたことを示すことができ、そうである場合、リーフ・エントリがセグメント・テーブル・エントリであったか、それともページ・テーブル・エントリであったか、すなわち例外がゲスト・ページ・フレーム実アドレスから導出されたホスト仮想アドレスに関連付けられたか、それともゲスト・セグメント・フレーム絶対アドレスから導出されたホスト仮想アドレスと関連付けられたかを示すことができる。それによってTXQフィールドは、ゲスト・フレームを支持するためのホスト・フレームの適切なサイズを示すことができる。TXQフィールドはさらに、より大きいフレーム・サイズ、例えば2ギガバイト以上が必要であることを示すことができる。
商業的実装
本明細書ではIBM(R)によるz/Architecture(R)に言及したが、本発明の1つまたは複数の態様は、ページ可能エンティティまたは類似の構成を使用する他のマシン・アーキテクチャまたはコンピューティング環境あるいはその両方に同等に適用可能である。
本明細書で開示されるEDAT機構、TXQ、および他のフォーマット、命令、ならびに属性の商業的実装は、ハードウェアで実装することができ、または例えばアセンブリ言語で書くオペレーティング・システム・プログラマなどのプログラマによって実装することができる。そのようなプログラミング命令は、IBM(R) System zサーバなどのコンピューティング環境内で、あるいは他のアーキテクチャを実行するマシン内でネイティブに実行されることが意図される記憶媒体上に格納することができる。命令は、既存のサーバおよび将来のサーバ内で、および他のマシンまたはメインフレーム上でエミュレートすることができる。命令は、一般的に実行がエミュレーション・モードであるマシン内で実行することができる。
エミュレーション・モードでは、エミュレート中の特定の命令が復号化され、サブルーチンが実行されて個々の命令がサブルーチンまたはドライバとして実装され、または本明細書の説明を理解した後の当業者の技術の範囲内にあるのと同様の、特定のハードウェア用のドライバを提供するために何らかの他の技法が使用される。様々なソフトウェアおよびハードウェア・エミュレーション技法が、参照により本明細書にそれぞれ組み込まれる米国特許第5551013号、第5574873号、第5790825号、第6009261号、第6308255号、および第6463582号を含む多数の米国特許で説明されている。多数の他の教示がさらに、ターゲット・マシン向けにアーキテクトされた命令セットのエミュレーションを達成する様々な方式を例示している。
他の変形形態およびアーキテクチャ
本明細書で説明した様々な実施形態は、単なる例に過ぎない。本発明の精神から逸脱することなく、こうした実施形態に対する多数の変形形態が存在することがある。
本発明の機能のうちの1つまたは複数は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの何らかの組合せとして実装することができる。本発明の諸態様は、複数のゾーンを有する他の環境、および非区分化環境を含む、多数のタイプの環境にとって有益である。さらに、中央プロセッサ・コンプレックスがないが、互いに結合された複数のプロセッサが存在することがある。本明細書の様々な態様は、単一プロセッサ環境に適用可能である。
本明細書では特定の環境を説明したが、やはり、本発明の精神から逸脱することなくこうした環境に対する多数の変形形態を実装することができる。例えば、環境が論理的に区分化される場合、より多数または少数の論理パーティションを環境内に含めることができる。さらに、互いに結合された複数の中央処理コンプレックスが存在することがある。これらは、本発明の精神から逸脱することなく作成することのできる変形形態の一部に過ぎない。さらに、他の変形形態も可能である。
固定サイズまたは所定のサイズのストレージのエリアを指すのに「ページ」という用語が使用されるが、ページのサイズは変化する可能性がある。同様に、ブロックのサイズは変化する可能性がある。異なるサイズのブロックまたはページあるいはその両方が存在することがある。ページはブロックと同等でよい。あるいは他の構造を使用することができ、あるいは他の構造をソフトウェアまたはハードウェアあるいはその両方によって実装することができる。さらに、本明細書で説明した例では、限定はしないが様々なサイズのワードまたはアドレス、様々な数のビット、異なる順序のビット、より多数または少数のビットまたは異なるビット、より多数または少数のフィールドまたは異なるフィールド、異なる順序のフィールド、異なるサイズのフィールドなどを含む多数の変形形態が存在することがある。この場合も、これらは一例として与えたに過ぎない。多数の変形形態が可能である。
ここで説明した変換プロセスの可能な変形形態は、DATテーブル・エントリ・アドレスを絶対アドレスではなく実アドレスとして扱うことである。別の可能な変形形態は、ゲスト主ストレージ・オリジンを追加すること、ホスト・アドレス空間を含む所望の部分にゲスト絶対ストレージを制限するように、ゲスト主ストレージ限界に対してテストすることなどの、ゲスト絶対アドレスとホスト仮想アドレスとの間の変換を実施することである。さらに別の変形形態は、複数のホスト・アドレス空間内でゲスト絶対アドレスを参照し、例えばアクセス・レジスタ内容によって選択することを可能にする。
処理装置は、ゲスト、ホスト、他のプロセッサ、エミュレータ、仮想マシン、または他の類似の構成、あるいはそれらの組合せなどのページ可能エンティティを含む。バッファは、ストレージまたはメモリあるいはその両方のエリア、ならびに限定はしないがアレイまたはページ可能エンティティを含む様々なタイプのデータ構造を含む。テーブルは、他のデータ構造も含むことができる。命令は他のレジスタを参照することができる。さらに、ページ、セグメント、または領域、あるいはそれらの組合せは、本明細書で説明したものとは異なる様々なサイズでよい。
本発明の1つまたは複数の態様を、例えばコンピュータ使用可能媒体または機械可読媒体を有する製品(例えば1つまたは複数のコンピュータ・プログラム製品)内に含めることができる。媒体は、その中で、例えばコンピュータ可読プログラム・コード手段または論理(例えば、命令、コード、コマンドなど)を実施し、本発明の機能を提供および促進する。製品をコンピュータ・システムの一部として含めることができ、または別々に販売することができる。さらに、本発明の機能を実施するためにマシンで実行可能な命令の少なくとも1つのプログラムを実施する、マシンで読取り可能な少なくとも1つのプログラム記憶装置を設けることができる。
本明細書で示される流れ図は例示的なものである。本発明の精神から逸脱することなく、説明したこれらの図またはステップまたは動作に対する多数の変形形態が存在することがある。例えば、ステップを異なる順序で実施することができ、またはステップを追加、削除、または修正することができる。これらの変形形態のすべては、特許請求される本発明の一部とみなされる。
本明細書の実施形態を本明細書で詳細に図示し、説明したが、本発明の精神から逸脱することなく様々な修正、追加、置換などを行うことができ、したがってこうしたものが以下の特許請求の範囲で定義される本発明の範囲内にあるとみなされることは当業者には明らかであろう。

Claims (15)

  1. 仮想アドレスをコンピュータ・システム内の主ストレージ内のデータのブロックの変換後アドレスに変換することのできる動的アドレス変換機構内の変換例外を修飾する方法であって、
    変換すべき仮想アドレスを得ること、
    前記仮想アドレスを主ストレージ内のデータの所望のブロックの実アドレスまたは絶対アドレスに動的に変換すること、および
    前記仮想アドレスの動的アドレス変換中に発生した変換例外割込みイベントに応答して、
    前記変換例外が、ホスト・プログラムを実行中に発生したホストDAT例外と、ゲスト・プログラムを実行中に発生したホストDAT例外の一方であったことを示すビットを変換例外修飾子内に格納すること
    を含む方法。
  2. 前記変換例外が、前記ゲスト・プログラムを実行中に発生したゲストDAT例外であったことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項1に記載の方法。
  3. 前記ホストDAT例外が、ゲスト・リーフ・テーブル・エントリから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項1または2に記載の方法。
  4. 前記ホストDAT例外が、ゲスト・ページ・フレーム実アドレスから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項1、2、または3に記載の方法。
  5. 前記ホストDAT例外が、ゲスト・セグメント・フレーム絶対アドレスから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項1、2、3、または4に記載の方法。
  6. 前記ホストDAT例外が関係するゲスト・フレームのサイズ、および前記ゲスト・フレームを支持するために割り振るべきホスト・フレームのサイズのいずれかを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項1ないし5のいずれか一項に記載の方法。
  7. 仮想アドレスをコンピュータ・システム内の主ストレージ内のデータのブロックの変換後アドレスに変換することのできる動的アドレス変換機構内の変換例外を修飾するシステムであって、
    仮想アドレスの、前記主ストレージ内のデータの所望のブロックの実アドレスまたは絶対アドレスへの動的アドレス変換のために使用される機械語命令と変換テーブルの階層とを格納することのできるコンピュータ・メモリと、
    前記コンピュータ・メモリと通信するプロセッサであって、前記メモリ内に格納された変換テーブルの前記階層にアクセスすることができ、
    変換すべき仮想アドレスを得ること、
    前記仮想アドレスを主ストレージ内のデータの所望のブロックの実アドレスまたは絶対アドレスに動的に変換すること、および
    前記仮想アドレスの動的アドレス変換中に発生した変換例外割込みイベントに応答して、
    前記変換例外が、ホスト・プログラムを実行中に発生したホストDAT例外と、ゲスト・プログラムを実行中に発生したホストDAT例外の一方であったことを示すビットを変換例外修飾子内に格納すること
    を含む方法を実施するプロセッサと
    を備えるシステム。
  8. 前記変換例外が、前記ゲスト・プログラムを実行中に発生したゲストDAT例外であったことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項7に記載のシステム。
  9. 前記ホストDAT例外が、ゲスト・リーフ・テーブル・エントリから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項7または8に記載のシステム。
  10. 前記ホストDAT例外が、ゲスト・ページ・フレーム実アドレスから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項7、8、または9に記載のシステム。
  11. 前記ホストDAT例外が、ゲスト・セグメント・フレーム絶対アドレスから導出されたアドレスに関係したことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項7、8、9、または10に記載のシステム。
  12. 前記ホストDAT例外が関係するゲスト・フレームのサイズを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項7ないし11のいずれか一項に記載のシステム。
  13. 前記ゲスト・フレームを支持するために割り振るべきホスト・フレームのサイズを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項7ないし12のいずれか一項に記載のシステム。
  14. 仮想アドレスをコンピュータ・システム内の主ストレージ内のデータのブロックの変換後アドレスに変換することのできる動的アドレス変換機構内の変換例外を修飾するコンピュータ・プログラムであって、
    前記コンピュータ・システムで実行されることにより、前記コンピュータ・システムに、
    変換すべき仮想アドレスを得ること、
    前記仮想アドレスを主ストレージ内のデータの所望のブロックの実アドレスまたは絶対アドレスに動的に変換すること、および
    前記仮想アドレスの動的アドレス変換中に発生した変換例外割込みイベントに応答して、
    前記変換例外が、ホスト・プログラムを実行中に発生したホストDAT例外と、ゲスト・プログラムを実行中に発生したホストDAT例外の一方であったことを示すビットを変換例外修飾子内に格納すること
    を実施させる
    コンピュータ・プログラム。
  15. 前記変換例外が、前記ゲスト・プログラムを実行中に発生したゲストDAT例外であったことを示すビットを前記変換例外修飾子内に格納することをさらに含む請求項14に記載のコンピュータ・プログラム。
JP2010547162A 2008-02-26 2009-02-17 変換例外修飾子を用いる動的アドレス変換 Active JP5079104B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/037,268 US8095773B2 (en) 2008-02-26 2008-02-26 Dynamic address translation with translation exception qualifier
US12/037,268 2008-02-26
PCT/EP2009/051864 WO2009106457A1 (en) 2008-02-26 2009-02-17 Dynamic address translation with translation exception qualifier

Publications (3)

Publication Number Publication Date
JP2011513808A true JP2011513808A (ja) 2011-04-28
JP2011513808A5 JP2011513808A5 (ja) 2012-08-02
JP5079104B2 JP5079104B2 (ja) 2012-11-21

Family

ID=40626591

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010547162A Active JP5079104B2 (ja) 2008-02-26 2009-02-17 変換例外修飾子を用いる動的アドレス変換

Country Status (13)

Country Link
US (6) US8095773B2 (ja)
EP (1) EP2248025B1 (ja)
JP (1) JP5079104B2 (ja)
KR (1) KR101174583B1 (ja)
CN (1) CN101960432B (ja)
AT (1) ATE551652T1 (ja)
CY (1) CY1112693T1 (ja)
DK (1) DK2248025T3 (ja)
ES (1) ES2381432T3 (ja)
PL (1) PL2248025T3 (ja)
PT (1) PT2248025E (ja)
SI (1) SI2248025T1 (ja)
WO (1) WO2009106457A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017513113A (ja) * 2014-03-18 2017-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 選択されたアーキテクチャ・ファシリティと関連した処理の管理

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8037278B2 (en) * 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8335906B2 (en) * 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
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
US8041922B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8019964B2 (en) * 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8082405B2 (en) * 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
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
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
US8417916B2 (en) * 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8176279B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US10248453B2 (en) 2012-10-23 2019-04-02 Red Hat Israel, Ltd. Client live migration for a virtual machine
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US20160062911A1 (en) * 2014-08-27 2016-03-03 Advanced Micro Devices, Inc. Routing direct memory access requests in a virtualized computing environment
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
EP3274824B1 (en) * 2015-03-27 2021-03-17 Intel Corporation Efficient address translation
WO2016162720A1 (en) * 2015-04-10 2016-10-13 Google Inc. Binary translation into native client
KR102023668B1 (ko) * 2015-04-10 2019-09-20 구글 엘엘씨 공유된 객체 레벨에 대한 이진 트랜슬레이션
JP6441171B2 (ja) * 2015-06-12 2018-12-19 東芝メモリ株式会社 メモリシステム
US9658837B1 (en) * 2015-11-06 2017-05-23 Sentry Insurance a Mutual Company Integration of independent platforms
US9424155B1 (en) 2016-01-27 2016-08-23 International Business Machines Corporation Use efficiency of platform memory resources through firmware managed I/O translation table paging
US11150928B2 (en) * 2016-06-08 2021-10-19 Red Hat Israel, Ltd. Hypervisor translation bypass
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US9798597B1 (en) 2016-09-26 2017-10-24 International Business Machines Corporation Verifying selective purging of entries from translation look-aside buffers
SG11201903311XA (en) * 2016-11-09 2019-05-30 Mediatek Inc Enhanced multimedia call control in next generation mobile communication systems
US10831664B2 (en) 2017-06-16 2020-11-10 International Business Machines Corporation Cache structure using a logical directory
US10698836B2 (en) 2017-06-16 2020-06-30 International Business Machines Corporation Translation support for a virtual cache
US10606762B2 (en) 2017-06-16 2020-03-31 International Business Machines Corporation Sharing virtual and real translations in a virtual cache
US11469953B2 (en) 2017-09-27 2022-10-11 Intel Corporation Interworking of legacy appliances in virtualized networks
WO2019079960A1 (en) * 2017-10-24 2019-05-02 Intel Corporation MATERIAL ASSISTED VIRTUAL SWITCH
US10387325B2 (en) * 2017-11-28 2019-08-20 International Business Machines Corporation Dynamic address translation for a virtual machine
US11029991B2 (en) * 2019-03-08 2021-06-08 International Business Machines Corporation Dispatch of a secure virtual machine

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63308644A (ja) * 1987-06-10 1988-12-16 Fujitsu Ltd 割込み処理制御方式
JPH01125640A (ja) * 1987-11-11 1989-05-18 Hitachi Ltd アドレス変換方式
US20040024953A1 (en) * 1999-02-17 2004-02-05 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
JP2004110812A (ja) * 2002-09-17 2004-04-08 Internatl Business Mach Corp <Ibm> マルチプロセッサ・ホスト上でのマルチプロセッサ・アドレス変換の効率のよいエミュレーションのための方法およびシステム

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US669043A (en) * 1900-08-20 1901-02-26 Adolph K Cross Concentrating apparatus.
US4669043A (en) 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
US4972338A (en) 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
JP2693770B2 (ja) 1987-10-26 1997-12-24 株式会社トプコン レーザービーム走査式眼底観察装置
US5008811A (en) 1988-02-10 1991-04-16 International Business Machines Corp. Control mechanism for zero-origin data spaces
US5058003A (en) 1988-12-15 1991-10-15 International Business Machines Corporation Virtual storage dynamic address translation mechanism for multiple-sized pages
JPH02235640A (ja) 1989-03-08 1990-09-18 Seiko Instr Inc ビデオインターフェース回路
US5617554A (en) 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
JPH0695898A (ja) * 1992-09-16 1994-04-08 Hitachi Ltd 仮想計算機の制御方法および仮想計算機システム
WO1994027215A1 (en) 1993-05-07 1994-11-24 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
JP3500751B2 (ja) 1995-01-20 2004-02-23 ソニー株式会社 画像信号処理装置及び撮像装置
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
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
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
US7321026B2 (en) * 2001-06-27 2008-01-22 Skytech Technology Limited Framework-patched immunoglobulins
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
US6801993B2 (en) * 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US7120746B2 (en) 2002-09-09 2006-10-10 International Business Machines Corporation Technique for data transfer
US7197585B2 (en) 2002-09-30 2007-03-27 International Business Machines Corporation Method and apparatus for managing the execution of a broadcast instruction on a guest processor
US7703097B2 (en) 2002-11-15 2010-04-20 International Business Machines Corporation Auto-commit processing in an IMS batch application
US7073042B2 (en) * 2002-12-12 2006-07-04 Intel Corporation Reclaiming existing fields in address translation data structures to extend control over memory accesses
US7111145B1 (en) * 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US6996698B2 (en) 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
US7284100B2 (en) 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US7020761B2 (en) 2003-05-12 2006-03-28 International Business Machines Corporation Blocking processing restrictions based on page indices
US7530067B2 (en) 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
DE60311462T2 (de) 2003-09-19 2008-01-03 Sun Microsystems, Inc., Santa Clara Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen
US7234037B2 (en) 2003-11-25 2007-06-19 International Business Machines Corporation Memory mapped Input/Output operations
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
US7941799B2 (en) 2004-05-27 2011-05-10 International Business Machines Corporation Interpreting I/O operation requests from pageable guests without host intervention
EP1783615A4 (en) 2004-07-23 2009-10-28 Sharp Kk STORAGE, STORAGE, AND IMAGE DISPLAY
US8843727B2 (en) 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US7428626B2 (en) * 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine 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
JP2007122305A (ja) * 2005-10-27 2007-05-17 Hitachi Ltd 仮想計算機システム
JP4469783B2 (ja) 2005-11-28 2010-05-26 株式会社東芝 メモリ保護装置、メモリ保護システムおよびメモリ保護方法
US7596654B1 (en) * 2006-01-26 2009-09-29 Symantec Operating Corporation Virtual machine spanning multiple computers
US8032897B2 (en) * 2007-07-31 2011-10-04 Globalfoundries Inc. Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization
US8335906B2 (en) 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US20090182732A1 (en) 2008-01-11 2009-07-16 Jianwei Dian Query based operation realization interface
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
US8019964B2 (en) 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8412700B2 (en) 2008-01-11 2013-04-02 International Business Machines Corporation Database query optimization using index carryover to subset an index
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
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
US8417916B2 (en) 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
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
US8082405B2 (en) 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8775441B2 (en) 2008-01-16 2014-07-08 Ab Initio Technology Llc Managing an archive for approximate string matching
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
JPS63308644A (ja) * 1987-06-10 1988-12-16 Fujitsu Ltd 割込み処理制御方式
JPH01125640A (ja) * 1987-11-11 1989-05-18 Hitachi Ltd アドレス変換方式
US20040024953A1 (en) * 1999-02-17 2004-02-05 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
JP2004110812A (ja) * 2002-09-17 2004-04-08 Internatl Business Mach Corp <Ibm> マルチプロセッサ・ホスト上でのマルチプロセッサ・アドレス変換の効率のよいエミュレーションのための方法およびシステム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017513113A (ja) * 2014-03-18 2017-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 選択されたアーキテクチャ・ファシリティと関連した処理の管理
US10747582B2 (en) 2014-03-18 2020-08-18 International Business Machines Corporation Managing processing associated with selected architectural facilities
US10747583B2 (en) 2014-03-18 2020-08-18 International Business Machines Corporation Managing processing associated with selected architectural facilities

Also Published As

Publication number Publication date
CY1112693T1 (el) 2016-02-10
ES2381432T8 (es) 2012-06-27
ATE551652T1 (de) 2012-04-15
US20140181360A1 (en) 2014-06-26
US20120084488A1 (en) 2012-04-05
PT2248025E (pt) 2012-05-10
US11074180B2 (en) 2021-07-27
US10241910B2 (en) 2019-03-26
CN101960432A (zh) 2011-01-26
US20190213126A1 (en) 2019-07-11
JP5079104B2 (ja) 2012-11-21
EP2248025A1 (en) 2010-11-10
DK2248025T3 (da) 2012-05-07
ES2381432T3 (es) 2012-05-28
US9092351B2 (en) 2015-07-28
US20090216992A1 (en) 2009-08-27
KR20100126286A (ko) 2010-12-01
PL2248025T3 (pl) 2012-11-30
US20150339226A1 (en) 2015-11-26
US8683176B2 (en) 2014-03-25
US20180081800A9 (en) 2018-03-22
WO2009106457A1 (en) 2009-09-03
US8095773B2 (en) 2012-01-10
US10078585B2 (en) 2018-09-18
EP2248025B1 (en) 2012-03-28
CN101960432B (zh) 2012-10-10
KR101174583B1 (ko) 2012-08-16
US20170315910A1 (en) 2017-11-02
SI2248025T1 (sl) 2012-05-31

Similar Documents

Publication Publication Date Title
JP5079104B2 (ja) 変換例外修飾子を用いる動的アドレス変換
US10977190B2 (en) Dynamic address translation with access control in an emulator environment
JP5602638B2 (ja) フォーマット制御を有する動的アドレス変換
JP4815539B2 (ja) フレーム管理を有する動的アドレス変換
US9158711B2 (en) Creating a program product or system for executing a perform frame management instruction
US9003134B2 (en) Emulation of a dynamic address translation with change record override on a machine of another architecture
US20140181463A1 (en) Dynamic Address Translation with Translation Table Entry Format Control for Identifying Format of the Translation Table Entry
WO2009087135A1 (en) Dynamic address translation with dat protection

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120618

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20120618

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120627

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: 20120807

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: 20120828

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

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5079104

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150