特許第6284130号(P6284130)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

<>
  • 特許6284130-ローカル・クリア制御 図000004
  • 特許6284130-ローカル・クリア制御 図000005
  • 特許6284130-ローカル・クリア制御 図000006
  • 特許6284130-ローカル・クリア制御 図000007
  • 特許6284130-ローカル・クリア制御 図000008
  • 特許6284130-ローカル・クリア制御 図000009
  • 特許6284130-ローカル・クリア制御 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6284130
(24)【登録日】2018年2月9日
(45)【発行日】2018年2月28日
(54)【発明の名称】ローカル・クリア制御
(51)【国際特許分類】
   G06F 12/10 20160101AFI20180215BHJP
   G06F 12/12 20160101ALI20180215BHJP
【FI】
   G06F12/10 501B
   G06F12/12 555
【請求項の数】17
【全頁数】44
(21)【出願番号】特願2015-516532(P2015-516532)
(86)(22)【出願日】2013年5月21日
(65)【公表番号】特表2015-523650(P2015-523650A)
(43)【公表日】2015年8月13日
(86)【国際出願番号】EP2013060346
(87)【国際公開番号】WO2013186015
(87)【国際公開日】20131219
【審査請求日】2016年4月19日
(31)【優先権主張番号】13/524,612
(32)【優先日】2012年6月15日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】グライナー、ダン
(72)【発明者】
【氏名】ジットマン、グスタフ
【審査官】 塚田 肇
(56)【参考文献】
【文献】 米国特許出願公開第2005/0027960(US,A1)
【文献】 特開昭61−248135(JP,A)
【文献】 特表2006−526203(JP,A)
【文献】 特開昭63−201854(JP,A)
【文献】 米国特許出願公開第2004/0230749(US,A1)
【文献】 米国特許出願公開第2011/0040950(US,A1)
【文献】 米国特許出願公開第2011/0119466(US,A1)
【文献】 米国特許出願公開第2004/064618(US,A1)
【文献】 中森 章,初めて読むMIPS 第2回,Oh!X 2000春号,2000年 4月 9日,pp.227−228
【文献】 インテル株式会社,インテル・アーキテクチャ・ソフトウェア・ディベロッパーズ・マニュアル 中巻:命令セット・リファレンス,1997年,第1版,p.3-232
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/10
G06F 12/12
(57)【特許請求の範囲】
【請求項1】
1つのプロセッサの1つのローカル変換ルックアサイド・バッファ(TLB)、又は複数のプロセッサの複数のローカル変換ルックアサイド・バッファを選択的にクリアするためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
プロセッサに、命令を実行させ、前記命令の実行は、
前記命令により指定される1つ又は複数の変換テーブル・エントリ位置を決定するステップと、
前記命令により指定される偶数・奇数レジスタ対のうち偶数レジスタに含まれる第1のオペランドと、前記決定された1つ又は複数の変換テーブル・エントリ位置に格納される、オリジナルの第2のオペランドとが等しいことに基づいて、前記決定された1つ又は複数の変換テーブル・エントリ位置の内容を無効化するステップ又は置換するステップと、
前記命令により指定されるローカル・クリア(LC)制御が第1の値であること及び決定された前記変換テーブル・エントリ位置の内容に基づいて、構成内の複数のプロセッサ内のTLBから、前記決定された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップと、
前記命令により指定されるローカル・クリア(LC)制御が第2の値であること及び前記決定された変換テーブル・エントリ位置の内容に基づいて、前記命令を実行している前記構成の前記プロセッサの前記TLBのみから、前記決定された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップと、
を含む、プログラム。
【請求項2】
前記命令の実行は、ある範囲の1つ又は複数の変換テーブル・エントリ位置の内容を無効化するステップをさらに含む、請求項に記載のプログラム。
【請求項3】
前記命令の実行は、前記1つ又は複数の変換テーブル・エントリ位置の内容を新しい内容と置換するステップをさらに含む、請求項に記載のプログラム。
【請求項4】
前記選択的にクリアするステップは、
依存する変換テーブル・エントリ位置と関連付けられたTLBエントリをクリアするステップをさらに含み、
前記依存する変換テーブル・エントリは、前記1つ又は複数の変換テーブル・エントリ位置の動的アドレス変換によりアクセスされるように構成された下位レベル変換テーブル内のエントリである、請求項1に記載のプログラム。
【請求項5】
前記LC制御がゼロであることに基づいて、構成内のCPUの全てのTLBから、前記決定された変換テーブル・エントリ位置に対応するエントリが選択的にクリアされる、請求項1に記載のプログラム。
【請求項6】
前記LC制御が1であることに基づいて、前記命令を実行しているCPU内の前記TLBが選択的にクリアされる、請求項1に記載のプログラム。
【請求項7】
ローカル変換ルックアサイド・バッファ(TLB)をクリアするためのコンピュータ・システムであって、前記システムは、
メモリと、
前記メモリと通信するように構成されたプロセッサと、
を含み、且つ、方法を実施するように構成され、前記方法は、
プロセッサにより、命令を実行するステップを含み、前記実行するステップは、
前記命令により指定される1つ又は複数の変換テーブル・エントリ位置を決定するステップと、
前記命令により指定される偶数・奇数レジスタ対のうち偶数レジスタに含まれる第1のオペランドと、前記決定された1つ又は複数の変換テーブル・エントリ位置に格納される、オリジナルの第2のオペランドとが等しいことに基づいて、前記決定された1つ又は複数の変換テーブル・エントリ位置の内容を無効化するステップ又は置換するステップと、
前記命令により指定されるローカル・クリア(LC)制御が第1の値であること及び決定された前記変換テーブル・エントリ位置の内容に基づいて、構成内の複数のプロセッサ内のTLBから、前記決定された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップと、
前記命令により指定されるローカル・クリア(LC)制御が第2の値であること及び前記決定された変換テーブル・エントリ位置の内容に基づいて、前記命令を実行している前記構成の前記プロセッサの前記TLBのみから、前記決定された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップと、
を含む、システム。
【請求項8】
前記実行するステップは、ある範囲の1つ又は複数の変換テーブル・エントリ位置の内容を無効化するステップをさらに含む、請求項に記載のシステム。
【請求項9】
前記実行するステップは、前記1つ又は複数の変換テーブル・エントリ位置の内容を新しい内容と置換するステップをさらに含む、請求項に記載のシステム。
【請求項10】
前記選択的にクリアするステップは、
依存する変換テーブル・エントリ位置と関連付けられたTLBエントリをクリアするステップをさらに含み、
前記依存する変換テーブル・エントリは、前記1つ又は複数の変換テーブル・エントリ位置の動的アドレス変換によりアクセスされるように構成された下位レベルの変換テーブル内のエントリである、請求項に記載のシステム。
【請求項11】
前記LC制御がゼロであることに基づいて、構成内のCPUの全てのTLBから、前記決定された変換テーブル・エントリ位置に対応するエントリが選択的にクリアされる、請求項に記載のシステム。
【請求項12】
前記LC制御が1であることに基づいて、前記命令を実行している前記CPU内の前記TLBが選択的にクリアされる、請求項に記載のシステム。
【請求項13】
ローカル変換ルックアサイド・バッファ(TLB)をクリアするためのコンピュータ実装方法であって、前記方法は、
命令により指定される1つ又は複数の変換テーブル・エントリ位置を決定するステップと、
前記命令により指定される偶数・奇数レジスタ対のうち偶数レジスタに含まれる第1のオペランドと、前記決定された1つ又は複数の変換テーブル・エントリ位置に格納される、オリジナルの第2のオペランドとが等しいことに基づいて、前記決定された1つ又は複数の変換テーブル・エントリ位置の内容を無効化するステップ又は置換するステップと、
前記命令により指定されるローカル・クリア(LC)制御が第1の値であること及び決定された前記変換テーブル・エントリ位置の内容に基づいて、構成内の複数のプロセッサ内のTLBから、前記決定された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップと、
前記命令により指定されるローカル・クリア(LC)制御が第2の値であること及び前記決定された変換テーブル・エントリ位置の内容に基づいて、前記命令を実行している前記構成の前記プロセッサの前記TLBのみから、前記決定された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップと、
を含む、方法。
【請求項14】
ある範囲の1つ又は複数の変換テーブル・エントリ位置の内容を無効化するステップをさらに含む、請求項13に記載の方法。
【請求項15】
前記1つ又は複数の変換テーブル・エントリ位置の内容を新しい内容と置換するステップをさらに含む、請求項13に記載の方法。
【請求項16】
前記選択的にクリアするステップは、
依存する変換テーブル・エントリ位置と関連付けられたTLBエントリをクリアするステップをさらに含み、
前記依存する変換テーブル・エントリは、前記1つ又は複数の変換テーブル・エントリ位置の動的アドレス変換によりアクセスされるように構成された下位レベルの変換テーブル内のエントリである、請求項13に記載の方法。
【請求項17】
前記LC制御がゼロであることに基づいて、構成内のCPUの全てのTLBから、前記決定された変換テーブル・エントリ位置に対応するエントリが選択的にクリアされ、前記LC制御が1であることに基づいて、前記命令を実行している前記CPU内の前記TLBが選択的にクリアされる、請求項13に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピューティング環境内での処理に関し、具体的には、1つのプロセッサの1つのローカル変換ルックアサイド・バッファ(TLB)、又は複数のプロセッサの複数のローカル変換ルックアサイド・バッファを選択的にクリアすることに関する。
【背景技術】
【0002】
2003年5月12日に出願された「INVALIDATING STORAGE,CLEARING BUFFER ENTRIES,AND AN INSTRUCTION THEREFORE」という名称の特許文献1に記載されるように、ストレージのセグメント又はストレージの領域などの選択されたストレージ・ユニットが無効化される。この無効化は、無効化されるストレージ・ユニットに対応するデータ構造のエントリ内に配置された無効化インジケータを設定することにより容易にされる。付加的に、無効化されるストレージ・ユニット又は他の選択されたストレージ・ユニットと関連付けられたバッファ・エントリがクリアされる。無効化及び/又はクリアを実施するために、命令が提供される。加えて、いずれの無効化も用いることなく、特定のアドレス空間と関連付けられたバッファ・エントリがクリアされる。このことも、命令により実施される。命令は、ソフトウェア、ハードウェア、ファームウェア、又はそれらの何らかの組み合わせの形で実装することができ、又は、エミュレートすることができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第7,284,100号明細書
【特許文献2】米国特許第6,199,219号明細書
【特許文献3】米国特許第5,551,013号明細書
【特許文献4】米国特許第6,009,261号明細書
【特許文献5】米国特許第5,574,873号明細書
【特許文献6】米国特許第6,308,255号明細書
【特許文献7】米国特許第6,463,582号明細書
【特許文献8】米国特許第5,790,825号明細書
【特許文献9】米国特許第7,530,067号明細書
【特許文献10】米国特許第7,020,761号明細書
【特許文献11】米国特許第6,996,698号明細書
【非特許文献】
【0004】
【非特許文献1】「z/Architecture Principles of Operation」、IBM(登録商標)出版番号SA22−7832−08、2010年8月
【非特許文献2】「IBM Systems/370 Extended Architecture」、IBM(登録商標)出版番号SA22−7095(1985年)
【発明の概要】
【発明が解決しようとする課題】
【0005】
1つのプロセッサの1つのローカル変換ルックアサイド・バッファ(TLB)、又は複数のプロセッサの複数のローカル変換ルックアサイド・バッファを選択的にクリアするためのコンピュータ・プログラム製品、コンピュータ・システム及びコンピュータ実装方法を提供する。
【課題を解決するための手段】
【0006】
一実施形態において、1つのプロセッサの1つのローカル変換ルックアサイド・バッファ(TLB)、又は複数のプロセッサの複数のローカル変換ルックアサイド・バッファを選択的にクリアするためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、具体化され且つ方法を実施するためにコンピュータ・プロセッサにより読み取り可能なプログラム・コードを有するコンピュータ可読媒体を含む。この方法は、プロセッサにより、命令を実行するステップを含む。この実行するステップは、命令により指定される1つ又は複数の変換テーブル・エントリ位置を判断するステップと、命令により指定されるローカル・クリア(LC)制御が第1の値であることに基づいて、構成の複数のプロセッサ内のTLBから、判断された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップと、命令により指定されるローカル・クリア(LC)制御が第2の値であることに基づいて、命令を実行している構成のプロセッサのTLBのみから、判断された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップとを含む。
【0007】
別の実施形態において、1つのプロセッサの1つのローカル変換ルックアサイド・バッファ(TLB)、又は複数のプロセッサの複数のローカル変換ルックアサイド・バッファを選択的にクリアするためのコンピュータ・システムが提供される。このシステムは、メモリと、メモリと通信するように構成されたプロセッサとを含む。コンピュータ・システムは、方法を実施するように構成され、この方法は、プロセッサにより、命令を実行するステップを含む。この実行するステップは、命令により指定される1つ又は複数の変換テーブル・エントリ位置を判断するステップと、命令により指定されるローカル・クリア(LC)制御が第1の値であることに基づいて、構成の複数のプロセッサ内のTLBから、判断された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップと、命令により指定されるローカル・クリア(LC)制御が第2の値であることに基づいて、命令を実行している構成のプロセッサのTLBのみから、判断された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップとを含む。
【0008】
さらに別の実施形態において、1つのプロセッサの1つのローカル変換ルックアサイド・バッファ(TLB)、又は複数のプロセッサの複数のローカル変換ルックアサイド・バッファを選択的にクリアするためのコンピュータ実装方法が提供される、この方法は、プロセッサにより、命令を実行するステップを含む。この実行するステップは、命令により指定される1つ又は複数の変換テーブル・エントリ位置を判断するステップと、命令により指定されるローカル・クリア(LC)制御が第1の値であることに基づいて、構成の複数のプロセッサ内のTLBから、判断された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップと、命令により指定されるローカル・クリア(LC)制御が第2の値であることに基づいて、命令を実行している構成のプロセッサのTLBのみから、判断された変換テーブル・エントリ位置に対応するエントリを選択的にクリアするステップとを含む。
【0009】
説明される技術を通じて、付加的な特徴及び利点が実現される。他の実施形態及び態様は本明細書で詳細に説明され、含まれるものと考えられる。
【0010】
ここで、添付図面を参照して本発明の好ましい実施形態を単なる例示として説明する。
【図面の簡単な説明】
【0011】
図1】1つ又は複数の態様を組み入れ、使用するコンピューティング環境の一実施形態を示す。
図2図1のコントローラと関連付けられたさらなる詳細の一実施形態を示す。
図3】別のコンピュータをエミュレートすることができるホスト・コンピュータの一実施形態を示す。
図4】COMPARE AND REPLACE DAT TABLE ENTRY命令の命令イメージ及びその動作を示す。
図5】COMPARE AND REPLACE DAT TABLE ENTRY命令のレジスタ・オペランドを示す。
図6】Mフィールドを示す。
図7】コンピュータ可読媒体を示す。
【発明を実施するための形態】
【0012】
コンピューティング環境は仮想ストレージを使用することができ、この仮想ストレージは通常、利用可能なストレージのサイズを増大させるための補助ストレージ内に保持される。仮想ストレージのページを参照する際、ページの参照に使用される仮想アドレスは、動的アドレス変換により実ストレージ・アドレスに変換される。変換が成功した場合、仮想アドレスは有効であり、他の場合には、仮想アドレスは無効である。仮想ストレージのページは、ページ・テーブル・エントリ内の無効ビットにより有効又は無効として示され、ページが有効である場合、このエントリは実ストレージ・アドレスを含む。
【0013】
ストレージのページは、一度に1ページずつ無効化することができる。例えば、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/Architectureに基づくコンピューティング環境においては、Invalidate Page Table Entry(IPTE)命令と呼ばれる命令を使用して、仮想ストレージの1つ又は複数のページを無効化する。無効化は、仮想ストレージと関連付けられ、物理主ストレージ内に配置された無効インジケータを制御構造内に設定することを含み、当該無効インジケータは、動的アドレス変換により仮想ストレージ内のある位置の仮想アドレスを実アドレスとも呼ばれる物理的主ストレージのアドレスに変換できないことを示す。さらに、命令を用いてページと関連付けられた内部マシンのバッファ・エントリをクリアし、このエントリは、動的アドレス変換中に、物理主ストレージ内の制御構造にアクセスするのを回避するために使用することができる。例えば、z/Architectureにおいて、仮想アドレスから実アドレスへの動的アドレス変換の際に使用される変換ルックアサイド・バッファが存在する。ストレージのページが無効化されると、対応するバッファから、そのページと関連したエントリもクリアされる。
【0014】
変換ルックアサイド・バッファ全体のパージを可能にする命令も存在する。例えば、z/Architectureにおいて、Compare and Swap and Purge(CSP)命令と呼ばれる命令は、構成の全てのCPU内の変換ルックアサイド・バッファの全てのエントリをパージし、PURGE TLBは、命令を実行するCPU上のTLBの全てのエントリをクリアする。
【0015】
変換ルックアサイド・バッファ
性能を高めるために、動的アドレス変換機構は、通常、領域テーブル、セグメント・テーブル、及びページ・テーブル内で指定される情報の一部が、変換ルックアサイド・バッファ(TLB)と呼ばれる特殊なバッファ内に保持されるように実装される。CPUは、そのエントリに最初にアクセスするときにのみ、実ストレージ又は絶対ストレージ内のDATテーブル・エントリを参照する必要がある。この情報は、TLB内に配置することができ、その後は、TLB内の情報を使用することにより、変換を実施することができる。操作(operation)の一貫性を保つために、TLB内の情報を使用することにより、実空間指定により指定される仮想空間実空間等価変換(virtual-equals-real translation)も実施することができる。TLBの存在は、(1)実ストレージ又は絶対ストレージ内のテーブル・エントリの内容の変更が、あるとしても、必ずしも変換に直ちに影響を及ぼさない、(2)アドレス空間制御要素(address-space-control element、ASCE)内の領域第1テーブル起点、領域第2テーブル起点、領域第3テーブル起点、セグメント・テーブル起点、又は実空間トークン起点は、2つの起点が異なるタイプのものである場合でも、同じ値の起点を含むASCEによって形成されたTLBエントリを選択することがある、及び、(3)指定されたテーブルと同等のTLBが使用される場合、アドレス空間制御要素内のテーブル長に対する比較を省略できるという点で、変換プロセスに影響を及ぼす。マルチCPU構成においては、各CPUがそれ自体のTLBを有する。TLB内のエントリは、プログラムにより明示的にアドレス指定可能でない。
【0016】
情報は、必ずしも、こうした保持が許容される全ての条件下でTLB内に保持されるわけではない。その上、TLB内の情報は、クリアが必須である条件に追加の条件下でクリアされ得る。
【0017】
TLB構造
TLBの論理構造の説明は、z/Architectureにより定められるように動作する全てのシステムによる実装をカバーする。TLBエントリは、6つのタイプのものとして考えられえる。即ち、TLB領域第1テーブル・エントリ、TLB領域第2テーブル・エントリ、TLB領域第3テーブル・エントリ(TLB領域テーブル・エントリと総称される)、TLBセグメント・テーブル・エントリ、TLBページ・テーブル・エントリ、及びTLB実空間エントリである。TLB領域テーブル・エントリ、TLBセグメント・テーブル・エントリ、又はTLBページ・テーブル・エントリは、実ストレージ又は絶対ストレージ内のテーブル・エントリから取得される情報、及びストレージからこの情報をフェッチするのに使用される属性の両方を、その内部に含むものと考えられえる。TLB実空間エントリは、ページ・フレーム実アドレス及び実空間トークン起点、並びにエントリを形成するのに使用される領域インデックス、セグメント・インデックス、及びページ・インデックスを含むものと考えられる。
【0018】
いずれの適用可能なTLB領域テーブル・エントリ、TLBセグメント・テーブル・エントリ、及びTLBページ・テーブル・エントリも、TLB複合テーブル・エントリと呼ばれる単一のエントリにマージする(merge)ことができる。同様の方法で、実装は、任意の連続したテーブル・レベル・サブセットを結合してもよい。これが行われる場合、中間のテーブル起点、オフセット、及び長さをバッファに入れる必要はない。
【0019】
テーブル起点ビット、領域インデックス・ビット、セグメント・インデックス・ビット、及び共通セグメント・ビットを、セグメント・フレーム絶対アドレス又はページ・テーブル起点(及び、他の指定されるフィールド)にマッピングする、アーキテクチャの旧バージョンに記載されているTLB結合領域及びセグメント・テーブル・エントリ(TLB combined region-and-segment-table-entry、CRSTE)と同等のものを形成することができる。TLB実空間エントリ内のトークン起点は、TLB複合テーブル・エントリ、領域テーブル・エントリ、又はセグメント・テーブル・エントリ内のテーブル起点と区別できない。
【0020】
注記:以下のセクションは、情報をTLB内に配置できる条件、TLBからの情報をアドレス変換に使用できる条件、及び変換テーブルへの変更がどのように変換プロセスに影響を及ぼすかについて説明する。
【0021】
TLBエントリの形成
実ストレージ又は絶対ストレージ内のテーブル・エントリからのTLB領域テーブル・エントリ、TLBセグメント・テーブル・エントリ、及びTLBページ・テーブル・エントリの形成、並びに、プログラムによるストレージ内のテーブル・エントリの内容のいずれかの操作の影響は、ストレージ内のエントリが特定のCPUに接続されているかどうか、及びエントリが有効であるかどうかによって決まる。
【0022】
テーブル・エントリの接続された状態(attached state)状態とは、これが接続されているCPUが暗黙的アドレス変換のためにそのテーブル・エントリの使用を試行できることを示すが、但し、CPUがそれらの空間のいずれからもフェッチしない場合でも、一次アドレス空間又はホーム・アドレス空間のためのテーブル・エントリが接続され得る。テーブル・エントリは、一度に1つより多いCPUに接続され得る。
テーブル・エントリの有効(valid)な状態とは、テーブル・エントリと関連付けられた領域設定、領域、セグメント、又はページが利用可能であることを示す。エントリ内の領域無効、セグメント無効、又はページ無効ビットがゼロである場合、エントリは有効である。
【0023】
エントリが接続され且つ有効であり、変換に使用される場合に変換指定例外を発生させないときは常に、領域テーブル・エントリ、セグメント・テーブル・エントリ、又はページ・テーブル・エントリをTLB内に配置することができる。
【0024】
仮想アドレスを変換するのに使用される領域テーブル・エントリ(もしあれば)、及びセグメント・テーブル・エントリ(もしあれば)は、「変換経路(translation path)」と呼ばれる。変換経路内の最上位のテーブル・エントリは、これが、接続しているアドレス空間制御要素(address-space-control element、ASCE)が指定するテーブル内にある場合には、接続されている。「テーブル内に」とは、ASCE内の起点及び長さフィールドによる判断を意味する。ASCEは、以下の条件の全てが満たされた場合、接続しているASCEとなる。
1.現PSWが、DATがオンであることを指定する。
2.現PSWが、早期指定例外の認識をもたらすエラーを含んでいない。
3.ASCEが、以下のa、b、c、又はdの要件を満たす。
a.ASCEは制御レジスタ1内の一次ASCEである。
b.ASCEは制御レジスタ7内の二次ASCEであり、以下の要件のいずれも満たされる。即ち、
・CPUは、二次空間モード又はアクセス・レジスタ・モードにある。
・CPUは、一次空間モードにあり、二次空間制御(制御レジスタ0のビット37)は1である。
・LOAD PAGE TABLE ENTRY ADDRESSのMオペランドは二次空間へのアクセスを明示的に許可する、又は、アクセス・レジスタ変換を明示的に許可する。
・MOVE WITH OPTIONAL SPECIFICATIONSのいずれのオペランドのオペランド・アクセス制御(OAC)も、二次空間へのアクセスを明示的に許可する、又はアクセス・レジスタ変換を明示的に許可する。
上記の2つの項目に用いられる「明示的に許可する」という用語のさらなる説明については、以下のプログラミング上の注意を参照されたい。
c.ASCEは、接続され且つ有効なASN第2テーブル・エントリ(ASTE)内、又は、使用可能なALB ASTE内のいずれかにあり、以下の要件のいずれも満たされる。即ち、
・CPUはアクセス・レジスタ・モードにある。
・LOAD PAGE TABLE ENTRY ADDRESSのMフィールドは、アクセス・レジスタ変換の実施を明示的に許可する。
・MOVE WITH OPTIONAL SPECIFICATIONSのいずれかのオペランドのOACは、アクセス・レジスタ変換の実施を明示的に許可する。
d.ASCEは、制御レジスタ13内のホームASCEである。
【0025】
DATがオンであるか又はオフであるかに関係なく、現PSWが早期指定例外の認識をもたらすエラーを含まない場合、ASCEもまた、接続しているASCEであり、以下の条件のいずれかが満たされる。即ち、
・ホームASCEは、監視イベント・カウント操作が行われる場合、接続しているASCEであると考えられる。
【0026】
変換経路内の残りのテーブル・エントリの各々は、それが、変換に使用された場合に変換指定例外を引き起こさない次の上位レベルの、接続され且つ有効なエントリ、又は次の上位レベルの使用可能なTLBエントリによって指示されるテーブル内にある場合、接続されている。「テーブル内に」とは、次の上位レベルのエントリ内の起点、オフセット、及び長さフィールドによる判断を意味する。使用可能なTLBエントリは、次のセクションで説明される。
【0027】
ページ・テーブル・エントリは、それが、変換に使用された場合に変換指定例外を引き起こさない接続され且つ有効なセグメント・テーブル・エントリ、又は使用可能なTLBセグメント・テーブル・エントリにより指示されるページ・テーブル内にある場合、接続されている。
【0028】
領域テーブル・エントリ又はセグメント・テーブル・エントリは、エントリ内のテーブル・タイプ・ビット(ビット60及び61)が、変換プロセスにおいて変換経路を使用する際にエントリが遭遇するレベルと一致しない場合、変換指定例外を引き起こす。セグメント・テーブル・エントリもまた、それを選択するのに使用されるアドレス空間制御要素において専用空間制御ビットが1であり、且つ、エントリにおいて共通セグメント・ビットが1である場合、変換指定例外を引き起こす。EDAT−2が適用される場合、領域第3テーブル・エントリもまた、それを選択するのに使用されるアドレス空間制御要素において専用空間制御ビットが1であり、且つ、エントリにおいて共通領域ビットが1である場合、変換指定例外を引き起こす。ページ・テーブル・エントリは、エントリのビット52が1である場合、変換指定例外を引き起こす。EDAT−1が適用されない場合、ページ・テーブル・エントリもまた、エントリのビット55が1である場合、変換指定例外を引き起こす。
【0029】
TLB実空間は、認識される早期指定例外を使用し、以下の条件のいずれかが満たされる。即ち、
・ホームASCEは、監視イベント・カウント操作が行われる場合、接続しているASCEであると考えられる。
【0030】
変換経路内の残りのテーブル・エントリの各々は、それが、変換に使用された場合に変換指定例外を引き起こさない次の上位レベルの、接続され且つ有効なエントリ、又は次の上位レベルの使用可能なTLBエントリにより指示されるテーブル内にある場合、接続されている。「テーブル内に」とは、次の上位レベルのエントリ内の起点、オフセット、及び長さフィールドにより判断されることを意味する。使用可能なTLBエントリは、次のセクションで説明される。
【0031】
ページ・テーブル・エントリは、それが、変換に使用された場合に変換指定例外を引き起こさない接続され且つ有効なセグメント・テーブル・エントリ、又は使用可能なTLBセグメント・テーブル・エントリにより指示されるページ・テーブル内にある場合、接続されている。
【0032】
領域テーブル・エントリ又はセグメント・テーブル・エントリは、エントリ内のテーブル・タイプ・ビット(ビット60及び61)が、変換プロセスにおいて変換経路を使用する際にエントリが遭遇するレベルと一致しない場合、変換指定例外を引き起こす。セグメント・テーブル・エントリもまた、それを選択するのに使用されるアドレス空間制御要素において専用空間制御ビットが1であり、且つ、エントリにおいて共通セグメント・ビットが1である場合、変換指定例外を引き起こす。EDAT−2が適用される場合、領域第3テーブル・エントリもまた、それを選択するのに使用されるアドレス空間制御要素において専用空間制御ビットが1であり、且つ、エントリにおいて共通領域ビットが1である場合、変換指定例外を引き起こす。ページ・テーブル・エントリは、エントリのビット52が1である場合、変換指定例外を引き起こす。EDAT−1が適用されない場合、ページ・テーブル・エントリもまた、エントリのビット55が1である場合、変換指定例外を引き起こす。
【0033】
上に定められた接続され且つ有効な制約に従って、CPUは、将来のストレージ参照に備えて、又は命令の投機的実行の結果として、TLBエントリを形成することができる。
【0034】
プログラミング上の注意:ASCEが接続するための条件の上記リストにおいて、以下に説明されるように、項目3.b及び3.cは、「明示的に許可する」という用語を使用する。
・LPTEAは、Mフィールドが2進数0010である場合、二次空間へのアクセスを明示的に許可する。
・LPTEAは、Mフィールドが2進数0001である場合、ARTの実施を明示的に許可する。
・オペランドのOACのビット8−9が2進数10であり、OACのビット15が1であり、且つ、二次空間制御(制御レジスタ0のビット37)が1である場合、MVCOSのいずれかのオペランドは、二次空間へのアクセスを明示的に許可する。
・オペランドのOACのビット8−9が2進数01であり、且つ、OACのビット15が1である場合、MVCOSのいずれかのオペランドは、ARTの実施を明示的に許可する。
【0035】
TLBエントリの使用
TLBエントリの使用可能(usable)状態とは、CPUが暗黙的アドレス変換のためにTLBエントリの使用を試みることができることを示す。使用可能なTLBエントリは、もしあれば、次のより下位レベルのテーブルに接続され、暗黙的アドレス変換の特定のインスタンスに対して使用可能とすることができる。
【0036】
TLBエントリに関して、「現レベル(current level)」という用語は、TLBエントリが形成された変換テーブル(領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、又はページ・テーブル)のレベルを指す。同様に、「現レベル・インデックス」とは、変換テーブルの現レベルへのインデックスとして使用される仮想アドレスの部分である。
【0037】
TLB領域テーブル・エントリ又はセグメント・テーブル・エントリは、以下の条件の全てが満たされたときに、使用可能状態となる。
1.現PSWが、DATがオンであることを指定する。
2.現PSWは、早期指定例外の認識をもたらすエラーを含んでいない。
3.TLBエントリは、以下の要件の少なくとも1つを満たす。即ち、
a.TLB領域第3テーブル・エントリにおいて、共通領域ビットは1である。
b.TLBセグメント・テーブル・エントリにおいて、共通セグメント・ビットは1である。
c.TLBエントリ内のASCEテーブル起点(ASCETO)フィールドは、接続しているアドレス空間制御要素内のテーブル起点フィールド又はトークン起点フィールドと合致する。
d.TLBエントリは、TLBの領域第2テーブル、領域第3テーブル、又はセグメント・テーブルのエントリであり、且つ、TLBエントリ内の現レベル・テーブル起点フィールドは、以下の1つに合致する。即ち、
・現テーブル・レベル(R及びDTビットにより示される)を直接指示する接続しているASCE内のテーブル起点フィールド、
・次の上位レベルの接続されている領域テーブル・エントリ内のテーブル起点フィールド、
・次の上位レベルの使用可能なTLB領域テーブル・エントリ内の同じレベルのテーブル起点フィールド。
【0038】
TLB領域テーブル・エントリは、エントリが使用可能状態にあり、TLBエントリ内の現レベル・インデックス・フィールドが、変換される仮想アドレスの対応するインデックス・フィールドに合致し、且つ、以下の条件のいずれかが満たされた場合にのみ、暗黙的アドレス変換の特定のインスタンスに対して使用することができる。
1.TLBエントリ内のASCEテーブル起点(ASCETO)フィールドは、変換に使用されているアドレス空間制御要素内のテーブル起点フィールド又はトークン起点フィールドに合致し、且つ、現レベル・インデックスの左にある、変換される仮想アドレスの部分は、TLBエントリ内の対応するインデックス・フィールドに合致する。
2.変換に使用されるアドレス空間制御要素は現レベルのテーブルを指示し、TLBエントリ内の現レベル・テーブル起点フィールドはそのアドレス空間制御要素内のテーブル起点に合致する。
3.TLBエントリ内の現レベル・テーブル起点フィールドは、次の上位レベルのテーブル・エントリ内の同じレベルのテーブル起点、又は変換に使用されるTLBエントリに合致する。
4.TLB領域第3テーブル・エントリに関して、TLBエントリにおいて共通領域ビットは1であり、TLBエントリ内の領域第1インデックス・フィールド及び領域第2インデックス・フィールドは、変換される仮想アドレスのものに合致する。
【0039】
しかしながら、EDAT−2が適用される場合、エントリにおいて共通領域ビットが1であり、且つ、変換に使用されるアドレス空間制御要素において専用空間制御ビットが1である又はそのアドレス空間制御要素が実空間指示である場合、TLB領域第3テーブル・エントリは使用されない。これらどちらの場合も、エントリ内のASCEテーブル起点(ASCETO)フィールドとアドレス空間制御要素内のテーブル起点フィールド又はトークン起点フィールドが合致する場合でも、TLBエントリは使用されない。
【0040】
TLBセグメント・テーブル・エントリは、エントリが使用可能状態にあり、TLBエントリ内のセグメント・インデックス・フィールドが、変換される仮想アドレスのものに合致し、且つ、以下の条件のいずれかが満たされる場合にだけ、暗黙的アドレス変換の特定のインスタンスに対して使用することができる。即ち、
1.TLBエントリ内のASCEテーブル起点(ASCETO)フィールドは、変換に使用されるアドレス空間制御要素内のテーブル起点フィールド又はトークン起点フィールドに合致し、TLBエントリ内のセグメント・インデックス・フィールドは、変換される仮想アドレスのセグメント・インデックス・フィールドに合致する。
2.TLBエントリ内のセグメント・テーブル起点フィールドは、変換に使用されるアドレス空間制御要素内のテーブル起点フィールドに合致し、そのアドレス空間制御要素はセグメント・テーブル指定である。
3.TLBエントリ内のセグメント・テーブル起点フィールドは、領域第3テーブル・エントリ内のセグメント・テーブル起点フィールド、又は変換に使用されるTLB領域第3テーブル・エントリに合致する。
4.TLBエントリにおいて共通セグメント・ビットが1であり、TLBエントリ内の領域インデックス・フィールドは、変換される仮想アドレスのものに合致する。
【0041】
しかしながら、エントリにおいて共通セグメント・ビットが1であり、且つ、変換に使用されるアドレス空間制御要素において専用空間制御ビットが1である場合、又はそのアドレス空間制御要素が実空間指定である場合、TLBセグメント・テーブル・エントリは使用されない。これらどちらの場合も、エントリ内のASCEテーブル起点(ASCETO)フィールドとアドレス空間制御要素内のテーブル起点フィールド又はトークン起点フィールドが合致する場合でも、TLBエントリは使用されない。
【0042】
エントリ内のページ・テーブル起点フィールドがセグメント・テーブル・エントリ内のテーブル起点フィールドに合致するか、又は変換に使用されるTLBセグメント・テーブル・エントリ内のページ・テーブル起点フィールド及びTBCページ・テーブル・エントリ内のページ・インデックス・フィールドが変換される仮想アドレスのページ・インデックスに合致する場合にのみ、暗黙的アドレス変換の特定のインスタンスに対してTLBページ・テーブル・エントリを使用することができる。
【0043】
TLBエントリ内のトークン起点フィールドが変換に使用されるアドレス空間制御要素内のテーブル起点フィールド又はトークン起点フィールドに合致し、且つ、TLBエントリ内の領域インデックス・フィールド、セグメント・インデックス・フィールド、及びページ・インデックス・フィールドが、変換される仮想アドレスのものに合致する場合にのみ、暗黙的アドレス変換の特定のインスタンスに対してTLB実空間エントリを使用することができる。
【0044】
LOAD PAGE−TABLE−ENRTY ADDRESS、LOAD REAL ADDRESS、及びSTOER REAL ADDRESSのオペランド・アドレス、並びに強化された監視カウント・アレイへのアクセスは、DATがオンであろうと又はオフであろうと、TLBの内容を使用して変換することができる。しかしながら、LOAD PAGE−TABLE−ENRTY ADDRESS、LOAD REAL ADDRESS、及びSTOER REAL ADDRESSについては、依然としてDATがオンの場合にのみ、TLBエントリが形成される。
【0045】
プログラミング上の注意:
1.テーブル・エントリの内容は、テーブル・エントリが接続され且つ有効である場合にのみTLB内にコピーできるが、このコピーは、テーブル・エントリ自体がもはや接続されていない又は有効でない場合でもTLB内に残すことができる。
2.強化された監視カウント操作の結果として変換が実施される場合を除いて、その時点のテーブル・エントリは接続されていないので、DATがオフの場合には、内容をTLBにコピーすることができない。特に、DATがオフ状態でのLOAD PAGE−TABLE−ENRTY ADDRESS、LOAD REAL ADDRESS及びSTOER REAL ADDRESSのオペランド・アドレスの変換により、エントリはTLB内に配置されない。逆に、DATがオンの場合、現在の変換パラメータ、アドレス空間制御ビットの設定、及びアクセス・レジスタの内容が与えられると、アドレス変換に使用できる全ての変換テーブル・エントリから、情報をTLB内にコピーすることができる。TLBのロードは、エントリが現在の命令の実行の一部として変換に使用されるかどうかに左右されず、こうしたロードは、CPUが待機状態にある際に行うことができる。
3.TLBにおいて、テーブル・エントリの内容の1つより多くのコピーが存在することがある。例えば、エントリが接続されるようになった各アドレス空間制御要素内のテーブル起点に関して、幾つかの実施により、有効なテーブル・エントリの内容のコピーをTLB内に配置することができる。
【0046】
変換テーブルの変更
接続され且つ無効なテーブル・エントリが有効にされ、関連付けられた仮想アドレスの変換のために使用可能なエントリがTLB内に存在しない場合、現在の操作単位の終了までに、変更が効力を生じる。同様に、接続されていない有効なテーブル・エントリが接続され、関連付けられた仮想アドレスに関する使用可能エントリがTLB内に存在しない場合、変更は、現在の操作単位の終了までに効力を生じる。
【0047】
接続され且つ有効なテーブル・エントリを変更した場合、及び、TLBから、そのエントリの置換に適したエントリをクリアする前に、変換のためにそのエントリを必要とする仮想アドレスを使用してストレージを参照しようとする試みがなされた場合、以下の程度まで予測不能な結果が生じ得る。変更をもたらした命令を含む、複数の命令の間又は1の命令の実行中に、新しい値の使用が開始することがある。さらに、TLBから、そのエントリの置換に適したエントリをクリアするまで、TLBが古い値と新しい値の両方を含むことがあり、特定のアクセスに対して古い値が選択されるか又は新しい値が選択されるかは、予測不能である。TLB内に上位レベルのテーブル・エントリの古い値と新しい値の両方が存在する場合、一方の値を使用して下位レベルのテーブル・エントリをフェッチし、それを他方の値と関連付けられたTLB内に配置することができる。エントリの新しい値が例外を引き起こす値である場合、例外が、割り込みを発生させることも、又は発生させないこともある。割り込みが発生した場合、例外が一般に、抑止又は無効化を引き起こしたとしても、命令の結果フィールドが変更されることがある。
【0048】
エントリは、以下の規則に従ってTLBからクリアされる。即ち、
1.全てのエントリは、PURGE TLB又はSET PREFIXの実行及びCPUのリセットにより、TLBからクリアされる。
2.全てのエントリは、命令が使用する汎用レジスタ内のビットに応じて、構成内のCPUのいずれかによるCOMPARE AND SWAP AND PURGEの実行により、構成内の全てのTLBからクリアされ得る。
3.選択されたエントリは、構成内のCPUのいずれかによるINVALIDATE DAT TABLE ENTRY又はINVALIDATE PAGE TABLE ENTRYの実行により、構成内の全てのTLBからクリアされる。
4.一部又は全てのTLBエントリは、前述の規則により必要とされる以外の時にクリアされ得る。
【0049】
プログラミング上の注意:
1.TLB内のエントリは、それらを形成したテーブル・エントリが接続されなくなった又は無効になった後も、引き続き変換のために使用することができる。これらのTLBエントリは、TLBから明示的にクリアされない限り、必ずしも除去されない。
TLBエントリがそのテーブル・エントリの置換に適していなければ、次の命令のための又は次の命令よりも早い変換プロセスにおいて、接続され且つ有効なエントリに対する変更、又はエントリが接続され且つ有効になるテーブル・エントリに対してなされる変更が反映される。しかしながら、TLBからそのテーブル・エントリに適したエントリがクリアされるまで、エントリを未接続又は無効にする、テーブル・エントリに対する変更は、必ずしも変換プロセスに反映されない。
【0050】
2.命令実行の開始の一部として実施される、オペランドのアクセス可能性に関する予備試験によって、動的アドレス変換と関連付けられた例外が確立され得る。その結果、命令は、使用するテーブル・エントリを確認し、命令がオペランドを一度に1バイトずつ処理すると考えられた場合にテーブル・エントリが有効であるように見えたとしても、実行の開始時にテーブル・エントリが無効である場合には、領域第1変換例外、領域第2変換例外、領域第3変換例外、セグメント変換例外、又はページ変換例外が示され得る。
【0051】
3.接続されているテーブル・エントリに対してなされる変更は、Iビットを0に設定すること、セグメント・テーブル・エントリ又はページ・テーブル・エントリのCOビットを1に設定すること、又はページ・テーブル・エントリの最右端バイトを変更することを除いて、TLBからそのエントリの内容の全てのコピーをクリアする前にそのエントリが変換のために使用された場合には、予測不能な結果をもたらし得る。変更をもたらした命令を含む命令間又は命令の実行中、新しい値の使用が開始されることがある。MOVE(MVC)などの命令が、エントリを無効にする変更を含む、接続されているテーブル・エントリに対する変更を行い、その後、変更のためにエントリを使用する場合には、変更されたエントリは、前もってTLBからエントリをクリアせずに使用され、結果の値及び例外認識の関連した予測不可能性が適用される。
【0052】
接続されているテーブル・エントリの操作により、誤ったテーブル・エントリ値がTLB内に記録されることがある。例えば、変更が断片的に行われる場合、接続されている有効なエントリの変更により、部分的に更新されたエントリが記録されることがあり、又は、変更のプロセスにおいて中間値が導入された場合、無効であると推定されるエントリが一時的に有効であるように見え、TLBに記録されることがある。再試行されたI/O操作により変更が行われた場合、又は、単一の命令の実行中に中間値が導入された場合、こうした中間値が導入されることがある。
【0053】
別の例として、セグメント・テーブル・エントリが、異なるページ・テーブルを指示するように変更され、TLBをクリアせずに使用される場合、新しいページ・テーブル・エントリをフェッチし、古いページ・テーブル起点と関連付けることができる。このような場合、新しいページ・テーブル起点を指示するINVALIDATE PAGE TABLE ENTRYの実行は、必ずしも、新しいページ・テーブルからフェッチされたページ・テーブル・エントリをクリアしない。
【0054】
4.ページ・テーブルの操作を容易にするために、INVALIDATE PAGE TABLE ENTRY命令が提供される。この命令は、ページ・テーブル・エントリ内のIビットを1に設定し、以下のように、構成内の1つ又は複数のTLBから、これらのテーブル・エントリから形成されたエントリをクリアする。即ち、
a.ローカルTLBクリア・ファシリティ(local-TLB clearing facility)がインストールされていない場合、又は、ファシリティがインストールされ、命令が全てのTLBのクリアを指定する(即ち、命令内のローカル・クリア制御がゼロである)場合、構成内の全てのTLBをクリアする。
b.ローカルTLBクリア・ファシリティがインストールされ、命令がローカルTLBのみのクリアを指定する(即ち、命令内のローカル・クリア制御が1である)場合、INVALIDATE PAGE TABLE ENTRY命令を実行するCPU内のTLBのみをクリアする。
【0055】
INVALIDATE PAGE TABLE ENTRYを使用する際、TLB操作の以下の態様を考慮すべきである。(INVALIDATE PAGE TABLE ENTRYに関するプログラミング上の注意も参照されたい。)
a.最右端バイトの変更以外の、ページ・テーブル・エントリに対するいずれかの変更を行う前に、INVALIDATE PAGE TABLE ENTRYを実行しなければならず、他の場合には、INVALIDATE PAGE TABLE ENTRYの選択的クリア部分は、エントリのTLBコピーをクリアしないことがある。
b.INVALIDATE PAGE TABLE ENTRYによる、1つのページ・テーブル内の全てのページ・テーブル・エントリの無効化は、必ずしも、TLBからページ・テーブルを指示するいずれのセグメント・テーブル・エントリもクリアしない。領域テーブル・エントリ又はセグメント・テーブル・エントリのTLBの無効化及びクリアが望ましい場合は、以下の注記5の規則に従う必要がある。
同様に、INVALIDATE PAGE TABLE ENTRYによる、領域テーブル又はセグメント・テーブル内の全ての下位レベル・テーブル・エントリの無効化は、必ずしも、下位レベル・テーブルを指示するいずれの上位レベル・テーブル・エントリのTLBもクリアしない。上位レベル・テーブル・エントリのTLBの無効化及びクリアが望ましい場合、以下の注記5の規則に従う必要がある。
c.一回に多数のページ・テーブル・エントリを無効化する場合、COMPARE AND SWAP AND PURGE(TLBをパージするもの)、INVALIDATE DAT TABLE ENTRY、又はPURGE TLBを使用し、以下の注記5の規則に従うことに関与するオーバーヘッドは、ページ・テーブル・エントリごとにINVALIDATE PAGE TABLE ENTRYを発行するよりも小さくなり得る。
【0056】
5.テーブル・エントリの操作は、以下の規則に従うべきである。これらの規則を遵守すれば、変換は、変換プロセスにおいて常に実ストレージ又は絶対ストレージからのテーブル・エントリが使用されたかのように実施される。
a.有効なテーブル・エントリは、これがいずれかのCPUに接続されている間は変更すべきでなく、(1)INVALIDATE PAGE TABLE ENTRY又はINVALIDATE DAT TABLE ENTRYを使用することによりエントリを無効化する、(2)ページ・テーブル・エントリのビット56−63を変更する、(3)TLBをパージするCOMPARE AND SWAP AND PURGE命令によって変更を行う、又は(4)COMPARE AND REPLACE DAT TABLE ENTRYを使用することによりエントリを置換する以外は、そのCPUによる変換のために使用することができる。
b.ページ・テーブル・エントリのビット56−63に対する変更以外の、接続され且つ有効なテーブル・エントリ、又は接続されていないテーブル・エントリに対して何らかの変更が行われる場合、変更が行われた後、及び、そのCPUによる暗黙的変換のためにそのエントリを使用する前、そのエントリから形成されたTLBエントリを有することができる各CPUが、そのTLBをパージするようにしなければならない。(COMPARE AND REPLACE DAT TABLE ENTRY、INVALIDATE DAT TABLE ENTRY、INVALIDATE PAGE TABLE ENTRY、又はTLBをパージするCOMPARE AND SWAP AND PURGE命令を用いて変更が行われた場合、別個のパージは不必要であることに留意されたい。)テーブル・エントリが接続され且つ有効である場合、変換のためにエントリを必要とし得るプログラムが実行されていないことが既知である場合も、この規則が適用される。
c.中間有効値がエントリ内に現れるのを可能にするように、無効なテーブル・エントリに対して変更が行われ場合、変更が行われた後、及び、そのCPUによる暗黙的アドレス変換のためにエントリを用いる前、エントリが接続されている各CPUが、そのTLBをパージするようにしなければならない。
d.テーブルについて指定されたオフセット又は長さに対して何らかの変更が行われた場合、変更が行われた後、及び、そのCPUによる暗黙的変換のためにテーブルを使用する前に、もはやそのテーブル内にはないテーブル・エントリから形成されたTLBエントリを有し得るCPUの各々が、そのTLBをパージするようにしなければならない。
【0057】
中間有効値を導入せずに無効なページ・テーブル・エントリが有効にされた場合、そのエントリから形成されたいずれのTLBエントリも有さないCPUについては、TLBをクリアする必要がないことに留意されたい。同様に、中間有効値を導入せずに、無効な領域テーブル・エントリ又はセグメント・テーブル・エントリが有効にされた場合、その有効にされたエントリから形成されたTLBエントリを有さず、且つ、その有効にされたエントリにより接続されているページ・テーブル内のエントリから形成されたいずれのTLBエントリも有さないCPUにおいては、TLBをクリアする必要はない。
【0058】
PURGE TLB、COMPARE AND SWAP AND PURGE、又はSET PREFIXの実行は、幾つかのモデルの性能に悪影響を与えることがある。従って、これらの命令の使用は、上記の規則に従って最小限にすべきである。
【0059】
6.EDAT−1が適用される場合、以下の考慮事項が実施される。即ち、
a.STE形式制御及びACCF妥当性制御の両方とも1である場合、CPUが、いずれかの所与のキー制御保護チェックに関して、セグメント・テーブル・エントリ内又は対応する4Kバイト・ブロックのストレージ・キー内のアクセス制御ビット及びフェッチ保護ビットを検査するかどうかは予測不能である。従って、プログラムは、STE内の無効ビットをゼロに設定する前に、セグメント・テーブル・エントリ内のアクセス制御ビット及びフェッチ保護ビットが、セグメントの構成要素である4Kバイト・ブロックに関する256個のストレージ・キー全てにおけるそれぞれのフィールドと同一であることを保証すべきである。このセクションで上述したように、セグメント・テーブル・エントリ内のACCF妥当性制御、アクセス制御ビット、又はフェッチ保護ビットを変更する前、及び、セグメントの256個のストレージ・キーのいずれかにおけるアクセス制御ビット又はフェッチ保護ビットを変更する前に、プログラムは、最初に、セグメント・テーブル・エントリにおいて無効ビットを1に設定し、構成内の全てのTLB内の全てのエントリをクリアすべきである。
b.セグメント・テーブル・エントリにおいて変更記録オーバーライドをゼロに設定する前、プログラムは、(例えば、INVALIDATE DAT TABLE ENTRYを使用して)セグメント・テーブル・エントリにおいて無効ビットを1に設定し、構成内の全てのTLB内の全てのエントリをクリアすべきである。変更が、COMPARE AND REPLACE DAT TABLE ENTRY、又はTLBをクリアするCOMPARE AND SWAP AND PURGEの形態を使用して行われる場合、テーブル・エントリの無効化は不要である。
c.ページ・テーブル・エントリにおいて変更記録オーバーライドをゼロに設定する前、プログラムは、ページ・テーブル・エントリにおいて無効ビットを1に設定し、構成内の全てのTLB内の全てのエントリをクリアすべきである(例えば、INVALIDATE PAGE TABLE ENTRYを使用して)。変更が、COMPARE AND REPLACE DAT TABLE ENTRY、又はTLBをクリアするCOMPARE AND SWAP AND PURGEの形態を使用して行われる場合、テーブル・エントリの無効化は不要である。
【0060】
EDAT−2が適用される場合、以下の付加的な考慮事項が実施される。即ち、
a.RTTE形式制御及びACCF妥当性制御の両方とも1である場合、CPUがいずれかの所与のキー制御保護チェックに関して、領域第3テーブル・エントリ内又は対応する4Kバイト・ブロックのストレージ・キー内のアクセス制御ビット及びフェッチ保護ビットを検査するかどうかは予測不能である。従って、プログラムは、RTTE内の無効ビットをゼロに設定する前に、領域第3テーブル・エントリ内のアクセス制御ビット及びフェッチ保護ビットが、領域の構成要素である4Kバイト・ブロックに関する524,288個のストレージ・キー全てにおけるそれぞれのフィールドと同一であることを保証すべきである。このセクションにおいて上述したように、領域第3テーブル・エントリにおいてACCF妥当性制御、アクセス制御ビット、又はフェッチ保護ビットを変更する前、及び、領域の524,288個のストレージ・キーのいずれかにおけるアクセス制御ビット又はフェッチ保護ビットを変更する前、プログラムは最初に、領域第3テーブル・エントリ内の無効ビットを1に設定し、構成内の全てのTLB内の全てのエントリをクリアすべきである。
b.領域第3テーブル・エントリにおいて変更記録オーバーライドをゼロに設定する前、プログラムは、領域第3テーブル・エントリにおいて無効ビットを1に設定し、構成内の全てのTLB内の全てのエントリをクリアすべきである(例えば、INVALIDATE DAT TABLE ENTRYを使用して)。変更が、COMPARE AND REPLACE DAT TABLE ENTRY、又はTLBをクリアするCOMPARE AND SWAP AND PURGEの形態を使用して行われる場合、テーブル・エントリの無効化は不要である。
【0061】
これらの手順に従わなければと、潜在的に、遅延アクセス例外マシン・チェック、又は変更の記録の失敗を含む、予測不能な結果がもたらされ得る。
【0062】
強化されたDATファシリティ1
強化されたDATファシリティ(enhanced-DAT facility)1が、z/Architectureを実装するモデルで利用可能である。このファシリティがインストールされ、イネーブルにされている場合、DAT変換は、セグメント・テーブル・エントリ内のSTE形式制御によって決定される、ページ・フレーム実アドレス又はセグメント・フレーム絶対アドレスのいずれかを生成することができる。構成内にファシリティがインストールされている場合、制御レジスタ0の新しいビットがファシリティをイネーブルにする。
注記:EDAT−1が適用されるという用語は、本文書においては、強化されたDATファシリティ1が構成内にインストールされており、制御レジスタ0によってイネーブルにされている状態を説明するために広汎に用いられる。
【0063】
EDAT−1が適用される場合、DATプロセスにおいて、以下の付加的な機能が利用可能である。
・DAT保護ビットが領域テーブル・エントリに付加され、セグメント・テーブル・エントリ及びページ・テーブル・エントリ内のDAT保護ビットに類似した機能を提供する。
・STE形式制御がセグメント・テーブル・エントリに付加される。STE形式制御がゼロである場合、DATは、ページ・テーブル・エントリ内の変更記録オーバーライドが、そのページに関して変更ビットの設定をバイパスできるかどうかを示す点を除いて、現在定められている通りに進行する。
・STE形式制御が1である場合、セグメント・テーブル・エントリも以下を含む。
1Mバイト・ブロックの絶対ストレージ位置を指定するセグメント・フレーム絶対アドレス(ページ・テーブル起点ではなく)。
セグメントの個々のストレージ・キー内の対応するビットの代わりに随意的に使用できるアクセス制御ビット及びフェッチ保護ビット。
セグメント・テーブル・エントリ内のアクセス制御ビット及びフェッチ保護ビットの妥当性を決定するビット。
セグメントの個々のストレージ・キーにおいて変更ビットの設定をバイパスすることができるかどうかを示す変更記録オーバーライド。このファシリティは、PERFORM FRAME MANAGEMENT FUNCTION制御命令を付加する。このファシリティは、以下の制御命令に対する機能強化又は変更を含む。即ち、
・LOAD PAGE−TABLE−ENTRY ADDRESS
・MOVE PAGE
・SET STORAGE KEY EXTENDED
・TEST PROTECTION。
【0064】
強化されたDATファシリティ2
強化されたDATファシリティ2は、z/Architectureを実装するモデルで利用可能である。このファシリティがインストールされ、イネーブルにされている場合、DAT変換は、領域第3テーブル・エントリ(もしあれば)及びセグメント・テーブル・エントリ(もしあれば)内の形式制御によって決定される、ページ・フレーム実アドレス、セグメント・フレーム絶対アドレス、又は領域フレーム絶対アドレスのいずれかを生成することができる。
注記:EDAT−2が適用されるという用語は、本文書においては、強化されたDATファシリティ2が構成内にインストールされており、制御レジスタ0によってイネーブルにされている状態を説明するために広汎に用いられている。
【0065】
EDAT−2が適用される場合、DATプロセスにおいて、以下の付加的な機能が利用可能である。
・EDAT−1が適用される。
・形式制御が領域第3テーブル・エントリ(RTEE)に付加される。RTTE形式制御がゼロである場合、DATは、EDAT−1が適用される場合と同様に進行する。
・RTTE形式制御が1である場合、領域第3テーブル・エントリも以下を含む。
2Gバイト・ブロックの絶対ストレージ位置を指定する領域フレーム絶対アドレス(セグメント・テーブル起点ではなく)。
領域の個々のストレージ・キー内の対応するビットの代わりに随意的に使用できるアクセス制御ビット及びフェッチ保護ビット。
領域第3テーブル・エントリ内のアクセス制御ビット及びフェッチ保護ビットの妥当性を決定するビット。
領域の個々のストレージ・キーにおいて変更ビットの設定をバイパスできるかどうかを示す変更記録オーバーライド。強化されたDATファシリティ2は、COMPARE AND REPLACE DAT TABLE ENTRY命令を付加し、接続され且つ有効なDATテーブル・エントリの動的置換、及び置換されたエントリから作成されるあらゆるTLBエントリの選択的なクリアをもたらす。強化されたDATファシリティ2もまた、以下の制御命令に対する強化又は変更を含む。:
・INVALIDATE DAT TABLE ENTRY
・LOAD PAGE−TABLE−ENTRY ADDRESS
・MOVE PAGE
・PERFORM FRAME MANAGEMENT FUNCTION
・TEST PROTECTION。
強化されたDATファシリティ2がインストールされている場合、強化されたDATファシリティ1もインストールされている。
【0066】
INVALIDATE DAT TABLE ENTRY(IDTE)は、セグメント・テーブル・エントリが無効化されると、TLB結合領域及びセグメント・テーブル・エントリを選択的にクリアすることにより、無効化及びクリア操作(invalidation-and-clearing operation)を実施する。IDTEもまた、ASCEによるクリア操作(clearing-by-ASCE operation)を実施する。
【0067】
IDTE命令の実行中、ストレージ(例えば、仮想ストレージ)の指定された部分が無効化される。例として、複数のストレージ・ページを含むストレージ・セグメント、又は、複数のストレージ・セグメントを含むストレージ領域が、無効化されるように選択される。無効化されるストレージの単位に対応する、データ構造エントリ内に配置された無効化インジケータを設定することにより、無効化が容易になる。さらに別の態様において、無効化されるストレージ又は他のストレージと関連付けられたバッファ・エントリ(例えば、変換ルックアサイド・バッファ・エントリ)がクリアされる。さらに、別の態様において、選択されたアドレス空間と関連付けられたバッファ・エントリが、選択されていないアドレス空間のバッファ・エントリに影響を与えることなく、及び、無効化を実施することなく、バッファからクリアされる。一例において、本明細書において、上記の操作の1つ又は複数を実施するために、IBM(登録商標)z/ArchitectureからのInvalidate Dynamic Address Translation(DAT)Table Entry(動的アドレス変換(DAT)テーブル・エントリ無効化、IDTE)命令と呼ばれる命令が用いられる。
【0068】
INVALIDATE DAT TABLE ENTRY
IDTE R,R,R[,M
注記:「指定されたCPU」という用語は、この命令によって影響を受けるTLBの範囲に関して以下の意味を有する。
・ローカルTLBクリア・ファシリティがインストールされていない場合、又は、ファシリティがインストールされ、Mフィールド内のローカル・クリア制御(LC)ビットがゼロである場合、「指定されたCPU」という用語は、構成内のCPU全てを意味する。
・ローカルTLBクリア・ファシリティがインストールされ、Mフィールド内のLCビットが1である場合、「指定されたCPU」という用語は、IDTE命令を実行しているCPU(ローカルCPU)のみを意味する。構成内の他の全てのCPUのTLBは、影響を受けないことがある。
【0069】
ASCEによるクリア・オプション(clearing-by-ASCE-option)ビット(汎用レジスタRのビット52)がゼロである場合、無効化及びクリア操作(invalidation-and-clearing operation)と呼ばれる操作が、以下のように実施される。ストレージ内の指示された領域テーブル・エントリ若しくはセグメント・テーブル・エントリ、又は指示されたエントリで始まるある範囲のエントリが無効化され、構成内の指定されたCPU内の変換ルックアサイド・バッファ(TLB)から、(1)ストレージ内の無効化されたエントリを用いて形成された、指示されたタイプの全てのTLBテーブル・エントリ、及び(2)クリアされた上位レベルのTLBテーブル・エントリを用いて形成された全ての下位レベルのTLBエントリがクリアされる。クリアされるTLBエントリは、随意的に、指定されたアドレス空間内のアドレスを変換するために形成されたエントリに制限することができる。
【0070】
ASCEによるクリア・オプション・ビットが1である場合、ASCEによるクリア操作と呼ばれる操作が、以下のように実施される。操作は、ストレージ内のDATテーブル・エントリのいずれの無効化も実施しないが、構成内の全てのCPU内のTLBから、指定されたアドレス空間内のアドレスを変換するために形成された全ての領域第1テーブル・エントリ、領域第2テーブル・エントリ、領域第3テーブル・エントリ、セグメント・テーブル・エントリ、及びページ・テーブル・エントリがクリアされる。
【0071】
フィールドのビットは、以下のように定められる。
・予約される:Mフィールドのビット0−1は無視されるが、ゼロを含むはずであり、他の場合には、プログラムは、将来、互換性のある状態で動作しないことがある。
・形式制御サマリ(FS):EDAT−2が適用される場合、Mフィールドのビット2は無効化及びクリア操作に関する形式制御サマリ(FS)である。EDAT−2が適用されない場合、Mフィールドのビット2は、ASCEによるクリア操作に関して無視される。
形式制御サマリは、指示タイプ(DT)(汎用レジスタRのビット60−61)が2進数00又は01である場合に適用され、汎用レジスタR内のDTが2進数10又は11である場合、形式制御サマリは無視される。
・ローカル・クリア制御(LC):ローカルTLBクリア・ファシリティがインストールされている場合、LCビット(Mフィールドのビット3)は、ローカルCPU内のTLBのみをクリアするかどうか、又は構成の全てのCPU内のTLBをクリアするかどうかを制御する。ローカルTLBクリア・ファシリティがインストールされていない場合、Mフィールドのビット3は無視される。
【0072】
無効化及びクリア操作
汎用レジスタRのビット52(ASCEによるクリア・オプション・ビット)がゼロである場合、無効化及びクリア操作が指定される。
【0073】
汎用レジスタRの内容は、テーブル起点(ビット0−51)、並びに指示タイプ制御(DT)(ビット60及び61)だけが使用される、アドレス空間制御要素の形式を有する。テーブル起点は、1つ又は複数のエントリが無効化されるDATテーブルを指示し、DTはそのテーブル・タイプを指定する。汎用レジスタRのビット52−59、62及び63は無視される。
【0074】
汎用レジスタRのビット0−43は、仮想アドレスの領域インデックス及びセグメント・インデックスの形式を有する。汎用レジスタRにより指示されるテーブル・タイプのエントリを選択するために、通常DATにより使用されるビット0−43の部分は、有効な無効化インデックス(effective invalidation index)と呼ばれる。汎用レジスタRのビット60及び61は、テーブル・タイプ及び有効な無効化インデックスを以下のように指定する。有効な無効化インデックスの右にある汎用レジスタRのビット0−43の部分は無視される。
【0075】
汎用レジスタR内のテーブル起点、及び有効な無効化インデックスは、無効化されるDATテーブル・エントリを指し示す。汎用レジスタRのビット53−63は、無効化される付加的なテーブル・エントリの数を指定する符号なし2進整数である。従って、無効化されるエントリの数は、ビット53−63の値に対応する、1−2,048個となる。汎用レジスタRのビット44−51はゼロでなければならず、他の場合には、指定例外が認識される。
【0076】
が非ゼロの場合、汎用レジスタRの内容は、テーブル起点(ビット0−51)、並びに指示タイプ制御(DT)(ビット60及び61)だけが使用される、アドレス空間制御要素の形式を有する。これらの内容は、クリアされるTLBエントリを選択するために使用される。汎用レジスタRのビット52−59、62及び63は無視される。Rがゼロの場合、汎用レジスタ0の内容全体が無視され、TLBエントリは、それらを形成するのに使用されるASCEに関係なくクリアされる。
【0077】
汎用レジスタR内のテーブル起点、及び汎用レジスタR内の有効な無効化インデックスは、結果として得られるアドレスのビット位置0からの繰り上がりが常に無視され、インデックスがテーブル長フィールドに対してチェックされない点を除いて、非特許文献1の「Lookup in a Table Designated by an Address−Space−Control Element」における規則に従って、テーブル・エントリを指示する。テーブル起点は64ビット・アドレスとして扱われ、加算は、現PSWのビット31及び32により指定される現在のアドレッシング・モードに関係なく、64ビット・アドレスの算術演算の規則を用いて行われる。これら2つのコンポーネントから形成されるアドレスは、実アドレス又は絶対アドレスである。この領域テーブル・エントリ又はセグメント・テーブル・エントリの無効ビット(ビット58)は、1に設定される。この手続きの際、エントリは、形式エラーに関して、又はエントリにおける次の下位レベルのテーブル起点がアドレッシング例外を引き起こすかどうかに関して、チェックされない。エントリ内のテーブル・タイプ・フィールドは無視される。エントリがセグメント・テーブル・エントリである場合、エントリ内の共通セグメント・ビットは無視される。EDAT−2が適用され、エントリが領域第3テーブル・エントリである場合、エントリ内の共通領域ビットは無視される。
【0078】
テーブル・エントリ全体が、ストレージから同時にフェッチされる。その後、無効ビットを含むバイトが格納される。エントリへのフェッチ・アクセスはキー制御保護の対象となり、ストア・アクセスは、キー制御保護及び低アドレス保護の対象となる。
【0079】
汎用レジスタRのビット53−63が全てゼロでない場合、領域テーブル・エントリ又はセグメント・テーブル・エントリにおける無効ビットの1への設定は、有効な無効化インデックスの以前使用した値に1を加算することによって繰り返され、これは、ビット53−63によって指定された回数だけ行われる。有効な無効化インデックスの最左端のビット位置の繰り上がりは無視され、この場合、テーブル内のラップアラウンドが行われる。汎用レジスタRの内容は変更されないままである。
【0080】
シリアル化機能が、操作の開始前に実施され、操作の完了後に再実施される。全てのシリアル化操作の場合のように、このシリアル化は、このCPUのみに適用され、他のCPUは必ずしもシリアル化されない。
【0081】
このCPUが無効ビットを1に設定した後、そのTLBから、選択されたエントリをクリアする。次いで、ローカルTLBクリア・ファシリティがインストールされていない場合、又は、ファシリティがインストールされ、Mフィールド内のLCビットがゼロである場合、このCPUは、そのTLBから選択されたエントリをクリアするように、構成内の他の全てのCPUに知らせる。影響を受けるTLBの各々から、少なくとも、以下の条件の全てを満たすエントリがクリアされる。
・汎用レジスタR内の有効な無効化インデックスは、汎用レジスタRのビット60−61におけるDTフィールドにより指示されるタイプのTLBテーブル・エントリ内の対応するインデックスと合致する。モデルがDTフィールドにより指示されるインデックスを含む複合TLBエントリを実装する場合、汎用レジスタR内の有効インデックスの左にあるビットも、指示されたTLBテーブル・エントリ内に与えられるいずれの対応するビットにも合致する。汎用レジスタRのビット53−63に起因して複数のテーブル・エントリが無効化される場合、次いで有効な無効化インデックスがインクリメントされ、インデックスの最左端ビット位置の繰り上がりはなくなり、そのように取得されたインデックスの各値について、TLB領域テーブル・エントリ又はセグメント・テーブル・エントリがクリアされることに留意されたい。
・Rフィールドがゼロであるか、又は汎用レジスタR内のテーブル起点及び指示タイプ・フィールドが、TLBテーブル・エントリを形成するのに使用されたアドレス空間制御要素(ASCE)内のテーブル起点及び指示タイプ・フィールドと合致する。
・Rフィールドがゼロである場合、このステップで説明される条件は適用されない。
・ストレージ内で無効化されたエントリが下位レベルの変換テーブルを指示する場合、無効化されたエントリ内の下位レベルのテーブル起点は、TLBテーブル・エントリ内のテーブル起点フィールドと合致する。
【0082】
影響を受けるTLBの各々から、以下の条件の全てを満たす、少なくともいずれかの下位レベルのTLBテーブル・エントリもまたクリアされる。
・下位レベルのTLBテーブル・エントリが、ストレージ内で無効化されたエントリ、又はストレージ内で無効化されたエントリ若しくはこのプロセスでクリアされたTLBエントリのいずれかを用いて形成された上位レベルのTLBテーブル・エントリを使用することにより形成された。
・Rフィールドがゼロであるか、又は汎用レジスタR内のテーブル起点及び指示タイプ・フィールドが、下位レベルのTLBテーブル・エントリを形成するのに使用されたアドレス空間制御要素(ASCE)内のテーブル起点及び指示タイプ・フィールドと合致する。このASCEは、下位レベルのTLBテーブル・エントリが形成されたストレージ内の下位レベルのテーブル・エントリを接続した上位レベルのテーブル・エントリを含む変換経路を接続したものとすることができ、又は、このASCEは、下位レベルのTLBテーブル・エントリが形成されたストレージ内の下位レベルのテーブル・エントリを接続した上位レベルのTLBテーブル・エントリを使用可能にしたものとすることができる。Rフィールドがゼロである場合、このステップで説明された条件は適用されない。
・ストレージ内で無効化されたエントリが下位レベルの変換テーブルを指示する場合、無効化されたエントリ内の下位レベルのテーブル起点は、TLBテーブル・エントリ内のテーブル起点フィールドと合致する。
【0083】
プログラミング上の注意:
1.形式制御サマリを1に設定することにより、特定のモデルにおける性能の改善がもたらされ得る。
2.指示タイプ(DT)(汎用レジスタRのビット60−61)が2進数00である場合、形式制御サマリが、無効化されるセグメント・テーブル・エントリに適用される。汎用レジスタR内のDTが2進数01である場合、形式制御サマリは、無効化される領域第3テーブル・エントリに適用される。
3.プログラムは、無効化されるテーブル・エントリの全てにおいて形式制御(テーブル・エントリのビット53)が1であることを保証できる場合、単に、形式制御サマリを1に設定すべきである。形式制御サマリは1に設定されるが、無効化されているテーブル・エントリの全てにおいて形式制御が1ではない場合、TLBの不完全なパージが生じることがあり、DATから予測不能な結果をもたらす。
4.アセンブラ構文の括弧[]内に含まれるフィールドで示されるように、命令のMフィールドは随意的であると考えられる。Mフィールドが指定されていない場合、アセンブラは、命令のそのフィールドにゼロを入れる。
【0084】
領域テーブル・エントリ又はセグメント・テーブル・エントリにおいて無効ビットが既に1である場合、領域テーブル・エントリ又はセグメント・テーブル・エントリへの格納、及びTLBエントリのクリアは、行われることも又は行われないこともある。
【0085】
複数のエントリが無効化される場合、全てのエントリが無効化されるまで、TLBエントリのクリアを遅らせることができる。
【0086】
ASCEによるクリア操作
汎用レジスタRのビット52(ASCEによるクリア・オプション・ビット)が1である場合、ASCEによるクリア操作が指定される。
【0087】
汎用レジスタRの内容は、テーブル起点(ビット0−51)、及び指示タイプ制御(DT)(ビット60及び61)だけが使用される、アドレス空間制御要素の形式を有する。これらの内容は、クリアされるTLBエントリを選択するために使用される。汎用レジスタRのビット52−59、62及び63は無視される。Rは、ゼロであっても又は非ゼロであってもよく、つまり、レジスタ0を含む任意の汎用レジスタを指示することができる。
【0088】
汎用レジスタRのビット44−51はゼロにしなければならない。他の場合には、指定例外が認識される。
【0089】
汎用レジスタRの内容、並びに汎用レジスタRのビット位置0−43及び53−63の内容は無視される。
【0090】
少なくとも、汎用レジスタR内のテーブル起点及び指示タイプ・フィールドがエントリを形成するのに使用されるアドレス空間制御要素(ASCE)内のテーブル起点及び指示タイプ・フィールドと合致するエントリの全てのレベルにおいて、構成内の指定されたCPUのTLBがクリアされる。このASCEは、エントリが形成された変換に使用されるものである。ASCEによるクリア・オプション・ビット(汎用レジスタRのビット52)が1である場合、Mフィールドは無視される。
【0091】
共通の操作
INVALIDATE DAT TABLE ENTRYの実行は、これを実行するCPU上で、以下が行われるまで完了しない。
1.上記で指定された基準を満たす全てのエントリが、このCPUのTLBからクリアされている。ローカルTLBクリア・ファシリティがインストールされ、Mフィールド内のLCビットが1である場合、INVALIDATE DAT TABLE ENTRYの実行はこの時点で完了し、次のステップは実施されない。
2.ローカルTLBクリア・ファシリティがインストールされていない場合、又は、ファシリティがインストールされ、Mフィールド内のLCビットがゼロである場合、構成内の他の全てのCPUは、指定されたパラメータに対応するTLBエントリを用いて、変更及び参照ビットの更新を含むいずれのストレージ・アクセスも完了している。この操作は、必ずしもTLBの実空間エントリに何らかの影響を与えるものではない。
【0092】
特別な条件:
汎用レジスタRのビット44−51はゼロでなければならず、他の場合には、指定例外が認識される。
この操作は全てのアドレッシング例外及び保護例外において抑止される(無効化及びクリア操作のみ)。
【0093】
結果の条件コード:コードは予測不能である。
【0094】
プログラム例外:
・アドレッシング例外(無効化された領域テーブル・エントリ又はセグメント・テーブル・エントリ、無効化及びクリア操作のみ)
・操作例外(DAT強化ファシリティがインストールされていない場合)
・特権操作例外
・保護例外(フェッチ及びストア、領域テーブル・エントリ又はセグメント・テーブル・エントリ、キー制御保護及び低アドレス保護、無効化及びクリア操作のみ)
・指定例外
【0095】
プログラミング上の注意:
1.TLBエントリの選択的クリアは、モデルに応じて異なる方法で実施することができ、一般に、必要最小数よりも多くのエントリがクリアされ得る。無効化及びクリア操作が実施される場合、幾つかのモデルは、有効な無効化インデックスがセグメント・インデックスではない場合に全てのTLBをクリアすること、又は、エントリ内のページ・テーブル起点に関係なくエントリをクリアすることが可能である。その操作又はASCEによるクリア操作が実施される場合、幾つかのモデルは、汎用レジスタR内の指示タイプ・フィールドに関係なく、TLBエントリをクリアし得る。いずれかの操作が実施される場合、他のモデルは、必要最小数のエントリを正確にクリアすることができる。従って、プログラムが全てのモデル上で動作するために、プログラムは、特定のモデルでの選択性が少ないクリアによって得られたいずれの特性も利用すべきではない。
2.共通のセグメントと関連付けられたTLBエントリをクリアするためにASCEによるクリア操作を使用する場合、これらのエントリは、多数の異なるテーブル起点を含むアドレス空間制御要素を用いて形成されたものであり得ることに留意されたい。
【0096】
以下の注記は、無効化及びクリア操作が指定されるときに適用される。
3.TLBエントリのクリアでは、セグメント・テーブル・エントリ内のページ・テーブル起点を利用することができる。従って、セグメント・テーブル・エントリは、接続された状態にあるとき、過去に、現在の値とは異なるページ・テーブル起点を含んでいた場合、以前の値を含むエントリのコピーは、TLB内にあるままとすることができる。
4.別のCPU又はチャネル・プログラムもまた位置を更新できる可能性が存在する場合、主ストレージ内の共有位置を更新するために、INVALIDATE DAT TABLE ENTRYを安全に使用することはできない。
5.INVALIDATE DAT TABLE ENTRYについてのDATテーブル・エントリのアドレスは64ビット・アドレスであり、アドレス算術演算は、264−1でのラップアラウンドにより、64ビット・アドレス算術計算に関する以下の通常の規則に従って実施される。また、オフセット及び長さフィールドは使用されない。これは、LOAD REAL ADDRESS及びSTORE REAL ADDRESSについての暗黙的変換とは対照的であり、その全てがラップアラウンド、又はビット位置0からの繰り上がりが生じた場合にはアドレッシング例外をもたらすことがあり、且つ、指示されたエントリがそのテーブル内に存在しない場合には例外条件を示す。従って、DATテーブルを、最大ストレージ位置から位置0にラップするように指定すべきではなく、汎用レジスタRのビット53−63により指定される最初の指定エントリ及び全ての付加的なエントリは、指示されたテーブル内にあるべきである。
6.ローカルTLBクリア・ファシリティがインストールされている場合、クリアされるTLBエントリを形成するために使用されたASCEが、IDTE命令を実行しているCPUのみに接続されていた場合(例えば、プログラムがユニプロセッサ上で実行されている場合)、ローカル・クリア制御を1として指定すべきである。他の場合には、遅延アクセス例外マシン・チェックの提示を含む予測不能な結果が発生し得る。幾つかのモデルにおいては、上記に列挙した場合のローカルTLBのみのクリアを指定するINVALIDATE DAT TABLE ENTRYの使用により、著しい性能の改善がもたらされ得る。
7.アセンブラ構文の括弧[]内に含まれるフィールドで示されるように、命令のMフィールドは随意的であると考えられる。Mフィールドが指定されていない場合、アセンブラは命令のそのフィールドにゼロを入れる。
【0097】
INVALIDATE PAGE TABLE ENTRY
IPTE R,R[,R[,M]]
注記:「指定されたCPU」という用語は、この命令が影響を及ぼすTLBの範囲に関して、以下の意味を有する。
・ローカルTLBクリア・ファシリティがインストールされていない場合、又は、ファシリティがインストールされ、Mフィールドのローカル・クリア制御(LC)ビットがゼロである場合、「指定されたCPU」という用語は、構成内のCPUの全てを意味する。
・ローカルTLBクリア・ファシリティがインストールされ、MフィールドのLCビットが1である場合、「指定されたCPU」という用語は、IPTE命令を実行するCPU(ローカルCPU)のみを意味する。構成内の他の全てのCPU内のTLBに影響を及ぼすことはない。
【0098】
指し示されたページ・テーブル・エントリが無効化され、構成内の指定されたCPU内の変換ルックアサイド・バッファ(TLB)から、関連したエントリがクリアされる。
【0099】
汎用レジスタRの内容は、ページ・テーブル起点のみが使用される、セグメント・テーブル・エントリの形式を有する。汎用レジスタRの内容は、ページ・インデックスのみが使用される、仮想アドレスの形式を有する。ページ・テーブル起点又はページ・インデックスの部分ではないフィールドの内容は無視される。IPTE範囲ファシリティがインストールされていない場合、又は、Rフィールドがゼロである場合、第1オペランド及び第2オペランドにより指示される単一のページ・テーブル・エントリは無効化される。
【0100】
IPTE範囲ファシリティがインストールされ、Rフィールドが非ゼロである場合、汎用レジスタRのビット53−63は、無効化される付加的なページ・テーブル・エントリのカウントを指定する符号なし2進整数を含む。従って、無効化されるページ・テーブル・エントリの数は、レジスタのビット53−63における0−255の値に対応する、1−256個となる。
【0101】
IPTE範囲ファシリティがインストールされていない場合、Rフィールドは無視されるが、ゼロを含むべきであり、他の場合には、プログラムは、将来、互換性のある状態で動作しないことがある。
【0102】
フィールドのビットは、以下のように定められる。
・予約される:ビット0−2は予約される。Mフィールドの予約されたビット位置は無視されるが、ゼロを含むべきであり、他の場合には、プログラムは、将来、互換性のある状態で動作しないことがある。
・ローカル・クリア制御(LC):ローカルTLBクリア・ファシリティがインストールされている場合、LCビット(Mフィールドのビット3)は、ローカルCPU内のTLBのみをクリアするかどうか、又は構成内の全てのCPU内のTLBをクリアするかどうかを制御する。ローカルTLBクリア・ファシリティがインストールされていない場合、Mフィールドのビット3は予約される。
【0103】
ページ・テーブル起点及びページ・インデックスは、ページ・テーブル・エントリを指示し、ページ・ルックアップに関する動的アドレス変換規則に従う。ページ・テーブル起点は64ビット・アドレスとして扱われ、加算は、現PSWのビット31及び32により指定される現在のアドレッシング・モードに関係なく、64ビット・アドレスの算術演算の規則を用いて行われる。ページ・インデックスとページ・テーブル起点の加算の結果としてのビット位置0の繰り上がりは発生し得ない。これら2つのコンポーネントから形成されるアドレスは、実アドレス又は絶対アドレスである。このページ・テーブル・エントリのページ無効ビットは、1に設定される。この手続きの際、ページ無効ビットが既に1であるかどうか又は形式エラーに関して、ページ・テーブル・エントリは検査されない。付加的に、エントリ内に含まれるページ・フレーム実アドレスは、アドレッシング例外に関してチェックされない。
【0104】
IPTE範囲ファシリティがインストールされ、Rフィールドが非ゼロである場合、命令は割り込み可能であり、処理は次の通りである。
1.汎用レジスタRのビット53−63において指定された付加的なエントリの数が無効化されるまで、又は割り込みが発生するまで、ページ・テーブル内の後のエントリの各々について、上述した無効化プロセスが繰り返される。
2.汎用レジスタRのビット44−51におけるページ・インデックスは、無効化されたページ・テーブル・エントリの数だけインクリメントされ、汎用レジスタRのビット位置44の繰り上がりは無視される。
3.汎用レジスタRのビット56−63における付加的なエントリのカウントは、無効化されたページ・テーブル・エントリの数だけデクリメントされる。
【0105】
従って、IPTE範囲ファシリティがインストールされ、Rフィールドは非ゼロであり、且つ割り込みが発生した(終了を引き起こすもの以外の)場合、汎用レジスタR及びRは更新されており、命令は、再実行されると、割り込みの時点で再開する。IPTE範囲ファシリティがインストールされていない場合、又は、Rフィールドがゼロである場合、レジスタR及びRの内容は変更されないままである。
【0106】
無効化されるページ・テーブル・エントリの各々について、他のCPUから観察すると、ページ・テーブル・エントリ全体が、ストレージから同時にフェッチされるように見える。その後、ページ無効化ビットを含むバイトが格納される。各ページ・テーブル・エントリへのフェッチ・アクセスはキー制御保護の対象となり、ストア・アクセスはキー制御保護及び低アドレス保護の対象となる。
【0107】
シリアル化機能が、操作の開始前に実施され、操作の完了後に再実施される。全てのシリアル化操作の場合のように、このシリアル化は、このCPUのみに適用され、他のCPUは必ずしもシリアル化されない。
【0108】
例外が認識されない場合、このCPUは、そのTLBから、選択されたエントリをクリアする。次いで、ローカルTLBクリア・ファシリティがインストールされていない場合、又は、ファシリティがインストールされ、Mフィールド内のLCビットがゼロである場合、このCPUは、そのTLBから選択されたエントリをクリアするように、構成内の他の全てのCPUに知らせる。無効化されるページ・テーブル・エントリの各々について、影響を受けるTLBの各々から、少なくとも、以下の全てを用いて形成されたエントリがクリアされる。
・汎用レジスタRにより指定されたページ・テーブル起点、
・汎用レジスタRにより指定されたページ・インデックス、
・指示されたページ・テーブル・エントリ内に含まれるページ・フレーム実アドレス。
【0109】
INVALIDATE PAGE TABLE ENTRYの実行は、これを実行するCPU上で、以下が発生するまで完了しない。
1.指定されたパラメータに対応する全てのページ・テーブル・エントリが無効化されている。
2.指定されたパラメータに対応する全てのエントリが、このCPUのTLBからクリアされている。ローカルTLBクリア・ファシリティがインストールされ、Mフィールド内のLCビットが1である場合、INVALIDATE PAGE TABLE ENTRYの実行はこの時点で完了し、次のステップは実施されない。
3.ローカルTLBクリア・ファシリティがインストールされていない場合、又は、ファシリティがインストールされ、Mフィールド内のLCビットがゼロである場合、構成内の他の全てのCPUは、指定されたパラメータに対応するTLBエントリを用いて、変更及び参照ビットの更新を含むいずれのストレージ・アクセスも完了している。
【0110】
特別な条件:
IPTE範囲ファシリティがインストールされ、Rフィールドは非ゼロであり、且つ、汎用レジスタR内のページ・インデックス+汎用レジスタR内の付加的なエントリのカウントが255を上回る場合、指定例外が認識される。全てのアドレッシング例外及び保護例外において、この操作は抑止される。
【0111】
条件コード:コードは変更されないままである。
【0112】
プログラム例外:
・アドレッシング例外(ページ・テーブル・エントリ)
・特権操作例外
・保護例外(フェッチ及びストア、ページ・テーブル・エントリ、キー制御保護、及び低アドレス保護)
・指定例外
【0113】
プログラミング上の注意:
1.エントリの選択的なクリアは、モデルに応じて、異なる方法で実装することができ、一般に、必要最小数よりも多くのエントリがクリアされ得る。無効化及びクリア操作が実施される場合、幾つかのモデルは、ストレージ内のページ・テーブル・エントリから取得されたページ・フレーム実アドレスを含む全てのTLBをクリアすることができる。他のモデルは、指示されたページ・インデックスを含む全てのエントリをクリアすることができ、幾つかの実装は、必要最小数のエントリを正確にクリアすることができる。従って、プログラムが全てのモデル上で動作するために、プログラムは、特定のモデルでの選択性が少ないクリアによって得られたいずれの特性も利用すべきではない。
2.TLBエントリのクリアでは、ページ・テーブル・エントリ内のページ・フレーム実アドレスを利用することができる。従って、ページ・テーブル・エントリは、接続された状態にあるとき、過去に、現在の値とは異なるページ・テーブル起点を含んでいた場合、以前の値を含むエントリのコピーは、TLB内にあるままとすることができる。
3.別のCPU又はチャネル・プログラムもまた位置を更新できる可能性が存在する場合、主ストレージ内の共有位置を更新するために、INVALIDATE PAGE TABLE ENTRYを安全に使用することはできない。
4.IPTE範囲ファシリティがインストールされ、Rフィールドが非ゼロである場合、以下が適用される。
a.無効化されるページ・テーブル・エントリの全てが同じページ・テーブル内にある必要がある。汎用レジスタR内のページ・インデックス+汎用レジスタR内の付加的なエントリのカウントが255の最大ページ・インデックスを上回る場合、指定例外が認識される。
b.INVALIDATE PAGE TABLE ENTRYにより無効化されるページ・テーブル・エントリの数は、実行によって異なり得る。
c.プログラムが割り込みなしの(uninterrupted)命令の実行に依存しなければならない状況のために、命令を使用することはできない。同様に、プログラムは、通常、そのページ・フレーム実アドレスが、命令を含む4Kバイト・ブロックを指定する又はIPTEを実行するexecute型命令のものである、ページ・テーブル・エントリを無効化するために、INVALIDATE PAGE TABLE ENTRYを使用すべきではない。
5.ローカルTLBクリア・ファシリティがインストールされている場合、クリアされるTLBエントリを形成するのに使用されたASCEが、IPTE命令を実行するCPUのみに接続されている場合(例えば、プログラムがユニプロセッサ上で実行されている場合)、ローカル・クリア制御を1として指定すべきである。他の場合には、遅延アクセス例外マシン・チェックの提示を含む予測不能な結果が生じ得る。幾つかのモデルにおいては、上記に列挙した場合のローカルTLBのみのクリアを指定するINVALIDATE PAGE TABLE ENTRYの使用により、著しい性能の改善がもたらされ得る。
6.アセンブラ構文の括弧[]内に含まれるフィールドで示されるように、命令のR及びMフィールドは、随意的なものであると考えられる。いずれのフィールドも指定されていない場合、アセンブラは、命令の対応するフィールドにゼロを入れる。Mフィールドはコード化されるが、Rフィールドは必要とされない場合、第3オペランドの場所を指示するために、ゼロをコード化すべきである。
【0114】
1つ又は複数の態様を組み込み、用いるためのコンピューティング環境100の一実施形態が、図1を参照して説明される。コンピューティング環境100は、例えば、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/Architectureに基づく。z/Architectureは、非特許文献1に記載される。(IBM(登録商標)は、米国ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で使用される他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーション又は他の会社の登録商標、商標、又は製品名であり得る。)一例において、z/Architectureに基づくコンピューティング環境は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるeServer zSeriesを含む。
【0115】
一例として、コンピューティング環境100は、コントローラ120に結合された中央プロセッサ複合体(central processor complex、CPC)102を含む。中央プロセッサ複合体102は、例えば、1つ又は複数のパーティション104(例えば、論理パーティションLP1−LPn)、1つ又は複数の中央プロセッサ106(例えば、CP1−CPm)、及びハイパーバイザ108(例えば、論理パーティション・マネージャ)を含み、その各々を以下に説明する。
【0116】
各々の論理パーティション104は、別個のシステムとして機能することができる。つまり、各々の論理パーティションを独立してリセットし、必要に応じて、オペレーティング・システムに最初にロードし、異なるプログラムで動作させることができる。論理パーティション内で実行されているオペレーティング・システム又はアプリケーション・プログラムは、十分且つ完全なシステムへのアクセスを有するように見えるが、実際は、その一部しか使用できない。ハードウェアとライセンス内部コード(一般に、マイクロコードと呼ばれる)の組み合わせが、論理パーティション内のプログラムを、異なる論理パーティション内のプログラムと干渉しないように保持する。このことは、幾つかの異なる論理パーティションが、単一又は複数の物理プロセッサ上で、タイム・スライス方式で動作するのを可能にする。この特定の例において、各々の論理パーティションは、1つ又は複数の論理パーティションに対して異なり得る常駐オペレーティング・システム110を有する。一実施形態において、オペレーティング・システム110は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/OSオペレーティング・システムである。
【0117】
中央プロセッサ106は、論理パーティションに割り当てられた物理プロセッサ・リソースである。例えば、論理パーティション104は、1つ又は複数の論理プロセッサを含み、その各々は、パーティションに割り当てられた物理プロセッサ・リソース106の全てまたは割り当て分(share)を表す。特定のパーティション104の論理プロセッサは、基礎をなすプロセッサ・リソースは、基礎をなすプロセッサ・リソースがそのパーティションのために予約されるように、そのパーティション専用であってもよく、又は、基礎をなすプロセッサ・リソースが潜在的に別のパーティションにも利用可能となるように、別のパーティションと共有してもよい。
【0118】
論理パーティション104は、プロセッサ106上で実行されるマイクロコードによって実装されるハイパーバイザ108により管理される。論理パーティション104及びハイパーバイザ108は、各々が中央プロセッサと関連した中央ストレージのそれぞれの部分に常駐する1つ又は複数のプログラムを含む。ハイパーバイザ108の一例は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるProcessor Resource/System Manager(PR/SM)である。
【0119】
中央プロセッサ複合体に結合されるコントローラ120は、要求を発行する異なるプロセッサ間の仲裁を担当する集中型論理を含む。例えば、コントローラ120が要求を受信すると、コントローラ120は、要求元がその要求に関するマスター・プロセッサであり、他のプロセッサがスレーブ・プロセッサであることを判断し、メッセージをブロードキャストし、他の形で要求を処理する。コントローラの一例は、2000年9月12日付けのWebb他による「System Serialization With Early Release Of Individual Processor」という名称の特許文献2に記載されている。さらなる詳細は、同じく図2を参照して説明される。
【0120】
図2は、複数の中央プロセッサ(CPU)201に結合されたコントローラ200の一例を示す。この例では、2つの中央プロセッサが示される。しかしながら、2つより多くのプロセッサをコントローラ200に結合できることが理解されるであろう。
【0121】
コントローラ200は、例えば、システム・シリアル化制御202を含む種々の制御を含む。システム・シリアル化制御は、コンピューティング環境においては、こうした命令が一度に一つだけ進行するという点で、無効化命令などのシリアル化操作がシリアル化されることを保証するために用いられる。コントローラ200はまた、その操作についてのイベントのシーケンスを監視する。
【0122】
コントローラ200は、種々のインターフェースを介して各々の中央プロセッサに結合される。例えば、インターフェース204は、中央プロセッサ内のライセンス内部コードにより使用され、実行すべきアクションを指定する「制御」コマンドをコントローラに送り、コントローラから情報を戻す「センス」コマンドを送る。別のインターフェースは、「感知(sense)」コマンドに関する情報をコントローラから戻すために使用される応答バス206である。応答バスは、「制御」コマンドに関するコマンド状態を通信するためにも使用され、システム・シリアル化制御を含むコントローラ内の複数のソースから設定することができる。中央プロセッサは、このインターフェースを用いて、コントローラ200内のシステム・シリアル化制御の状態を感知することができる。
【0123】
さらに別のインターフェースは、各CPUにコマンドを送信するために使用されるインターフェース208である。これも、システム・シリアル化制御202を含むコントローラ内の複数のソースから制御することができる。さらに別のインターフェースは、中央プロセッサ201のキャッシュ制御212に信号を与えるインターフェース210である。キャッシュ制御212は、信号に応答してコマンドを処理する。一例においては、以下でさらに詳細に説明されるように、キャッシュ制御212は、変換ルックアサイド・バッファ(TLB)213などの、1つ又は複数のバッファに影響を与えるコマンドを処理する。
【0124】
キャッシュ制御212に加えて、中央プロセッサ201は、例えば割り込み制御220及び実行制御222を含む種々の他の制御を含む。特定のイベントに応答して、割り込み制御220は、CPUにおいて内部割り込みを保留中にし、それにより、次の割り込み可能な時点で、実行制御222にプログラム命令処理を一時停止させる。割り込みに応答して、実行制御222はライセンス内部コードのルーチンを呼び出し、ブロードキャスト操作許可ラッチ224を設定して、キャッシュ制御212が保留中コマンドを処理するのを可能にする。
【0125】
中央プロセッサ201は、中央プロセッサが休止されたかどうかを示す、中央演算処理装置(Central Processing Unit、CPU)休止ラッチ226も含む。CPU及びプロセッサという用語は、本明細書では交換可能に使用することができる。
【0126】
上述のコンピューティング環境は一例にすぎない。多くの変形が可能である。例えば、1つ又は複数のパーティションを異なるアーキテクチャ・モードで実行することができる。さらに、別の例として、環境は、z/Architectureに基づく必要はなく、代わりに、Intel、Sun Microsystems、並びにその他により提供される他のアーキテクチャに基づくことが可能である。さらに、環境は、特定のアーキテクチャ又はそのサブセットをエミュレートするエミュレータ(例えば、ソフトウェア又は他のエミュレーション機構)を含むことができる。こうした環境においては、エミュレータを実行しているコンピュータが、エミュレートされる機能とは異なるアーキテクチャを有することができたとしても、エミュレータの1つ又は複数のエミュレーション機能は、1つ又は複数の態様を実装することが可能である。一例として、エミュレーション・モードにおいては、エミュレートされる特定の命令又は操作がデコードされ、適切なエミュレーション機能が構築され、個々の命令又は操作を実施する。
【0127】
エミュレーション環境のさらなる詳細が、図3を参照して説明される。一例として、ホスト・コンピュータ300は、別のアーキテクチャ、コンピュータ、及び/又は別のコンピュータの処理能力をエミュレートすることができる。例えば、ホスト・コンピュータ300は、Intelアーキテクチャ、PowerPCなどのRISCアーキテクチャ、Sun Microsystemsにより提供されるSPARCアーキテクチャ、又は別のアーキテクチャに基づいており、且つ、IBM(登録商標)のz/Architecture、又はIBM(登録商標)若しくは別のエンティティの別のアーキテクチャをエミュレートすることができる。
【0128】
ホスト・コンピュータ300は、例えば、命令及びデータを格納するためのメモリ302と、メモリ302から命令をフェッチし、随意的に、フェッチされた命令のためのローカル・バッファリングを提供するための命令フェッチ・ユニット304と、命令フェッチ・ユニット304から命令を受け取り、フェッチされた命令のタイプを判断するための命令デコード・ユニット306と、命令を実行するための命令実行ユニット308とを含む。実行は、データをメモリ302からレジスタにロードすること、データをレジスタから再びメモリに格納すること、又はデコード・ユニットにより判断されるように、何らかのタイプの算術演算又は論理演算を実行することを含むことができる。
【0129】
一例においては、上述した各ユニットは、ソフトウェアの形で実装される。例えば、ユニットにより実施される演算は、エミュレータ・ソフトウェア内の1つ又は複数のサブルーチンとして実施される。別の例においては、演算の1つ又は複数は、ファームウェア、ハードウェア、ソフトウェア、又はそれらの何らかの組み合わせの形で実施される。
【0130】
さらに、図3はエミュレーションに関して説明したが、図3の環境は、エミュレーション環境である必要はない。別の例においては、命令はネイティブ環境において実行され、演算は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの何らかの組み合わせの形で実施される。
【0131】
コンピューティング環境は、主ストレージ、並びに仮想ストレージを含むことができる。仮想ストレージは、構成内で利用可能な主ストレージのサイズを大きく上回ることができ、通常、補助ストレージ内に保持される。仮想ストレージは、ページと呼ばれるアドレス・ブロックで構成されると考えられる。直前に参照された仮想ストレージのページが、物理的な主ストレージのブロックを占めるように割り当てられる。ユーザが主ストレージ内に現れない仮想ストレージのページを参照すると、仮想ページは、使用される可能性がより低い主ストレージ内のページと置き換わる。ストレージにおけるページのスワッピングは、ユーザに知られることなく、オペレーティング・システムにより実施できる。
【0132】
仮想ストレージ内の位置を指示するのに使用されるアドレスは、仮想アドレスと呼ばれる。例えば最大4kバイトに及ぶ順次的な仮想アドレスのブロックは、ページと呼ばれる。同様に、例えば最大1Mバイトに及ぶ順次的な仮想ページのブロックは、セグメントと呼ばれ、例えば最大2Gバイトに及ぶ順次的な仮想セグメントのブロックは、領域と呼ばれる。さらに、アドレス空間制御要素(ASCE)により指示される仮想ストレージと関連付けられた一連の仮想アドレスは、アドレス空間と呼ばれる。アドレス空間を使用して、ユーザ間の分離度を提供することができる。アドレス空間は、1つ又は複数の領域、1つ又は複数のセグメント、1つ又は複数のページ、又はそれらの何らかの組み合わせを含むことができる。
【0133】
異なるタイプのストレージ・ユニット(例えば、領域、セグメント、ページ)と関連付けられるのが、ストレージ・ユニットと関連付けられた処理に使用されるデータ構造である。例えば、領域と関連付けられるのは領域テーブルであり、セグメントと関連付けられるのはセグメント・テーブルであり、ページと関連付けられるのはページ・テーブルである。これらのテーブルは、例えば、仮想アドレスから、主ストレージへのアクセスに使用される実アドレスへの変換(例えば、動的アドレス変換)中に使用される。本明細書で変換テーブルと呼ばれる、変換に使用されるテーブルは、アドレス空間制御要素(ASCE)により指示される。現在主ストレージに割り当てられていない仮想ストレージのユニットは、無効と称される。仮想ストレージのユニットの無効状態は、ユニットと関連付けられたデータ構造内の無効インジケータにより示される。
【0134】
アドレス変換の性能を強化するために、一実施形態において、動的アドレス変換機構が実装され、DATプロセスを通じて変換テーブル(例えば、領域テーブル、セグメント・テーブル、及び/又はページ・テーブル)から得られた情報が、本明細書で変換ルックアサイド・バッファと呼ばれるプロセッサ内に配置された1つ又は複数のバッファ内に保持される。つまり、変換の際、必要とされる情報に関してバッファをチェックし、次いで、その情報がバッファ内にない場合、変換テーブルの1つ又は複数にアクセスする。
【0135】
エミュレーション・モードにおいては、エミュレートされた特定の命令がデコードされ、個々の命令を実施するためのサブルーチンが構築されるか、又は実施形態の説明を理解した後に当業者の技術の範囲内にあるような特定のハードウェアのためにドライバを提供する他の何らかの技術が用いられる。種々のソフトウェア及びハードウェア・エミュレーションの特許には、これらに限られるものではないが、Beausoleil他による「Multiprocessor for Hardware Emulation」という名称の特許文献3、Scalzi他による「Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor」という名称の特許文献4、Davidian他による「Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions」という名称の特許文献5、Gorishek他による「Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non−Native Code to Run in a System」という名称の特許文献6、Lethin他による「Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method」という名称の特許文献7、Eric Trautによる「Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions」という名称の特許文献8、及び他の多くが挙げられ、これらの参考文献は、当業者が利用可能なターゲット・マシンのための異なるマシン用に設計された命令形式のエミュレーションを達成する様々な既知の方法を示す。これらの参考文献は、当業者が利用可能なターゲット・マシンのための異なるマシン用に設計された命令形式のエミュレーションを達成するための様々な既知の方法、並びに、上記で参照したものにより使用される商業的ソフトウェア技術を示す。
【0136】
COMPARE AND REPLACE DAT TABLE ENTRY(CRDTE)
有効なDATテーブル・エントリを新しいエントリに置換し、TLBから、構成内の全てのCPU上の(少なくとも)単一のエントリのいずれかのコピーをパージすることができるCPU命令(COMPARE AND REPLACE DAT TABLE ENTRY)を説明する。この命令は、いずれかのアクティブなタスクを一時停止することを必要とせず、また、必要とするより多くのエントリをパージすることはできない。
【0137】
CRDTE命令が実行される際、エントリの選択的なクリアは、モデルに応じて異なる方法で実装することができ、一般に、必要最小数よりも多くのエントリがクリアされ得る。幾つかのモデルは、ストレージ内のページ・テーブル・エントリから取得されたページ・フレーム実アドレスを含む全てのエントリをクリアすることができる。
【0138】
制御プログラムは、DATテーブル内の有効なエントリ(つまり、他のCPUにより使用中である可能性があるテーブル・エントリ)を置換する必要がある場合、以下の操作の1つを実施することができる。
・構成内の全てのCPU上のこのDATテーブル・エントリを使用できる全てのタスクの実行を一時停止し、全てのCPU上のこのエントリを無効化及びパージし(例えば、IPTEを用いて)、無効化されたエントリを新しいエントリに置換し、一時停止したタスクを再ディスパッチする。
・DATテーブル・エントリを置換し、構成内の全てのCPU上のTLB全体をパージする(例えば、CSPGを用いて)。
【0139】
第1の選択肢は、これがタスクの非ディスパッチ及び再ディスパッチを必要とする点で複雑である。第2の選択肢は、1つだけのエントリが変更される場合でも、これがTLB全体のパージを必要とするという点で最適には及ばない。
【0140】
一実施形態において、コンピュータ・プロセッサは、処理のための命令を取得する。オペコードに基づいて、Compare and DAT Table Entry(CRDTE)命令を処理する。CRDTE命令は、以下の形式を有する。
【表1】
【0141】
及びRフィールドの各々は、偶数・奇数対の汎用レジスタを指定し、偶数番号のレジスタを指定する必要がある。他の場合には、指定例外が認識される。汎用レジスタR(対の偶数レジスタ)は、第1オペランドを含む。第1オペランドは、比較値と呼ぶことができる。汎用レジスタR+1(対の奇数レジスタ)は置換値と呼ぶことができる。
【0142】
命令を実行する際、第1オペランドと第2オペランドが比較される。第1オペランドは汎用レジスタR内に配置される。第2オペランドは、汎用レジスタR及びR+1によって指定される。R及びR+1は、指定されたテーブル・タイプ(DTT)などのアドレッシング情報、及び第2オペランドを見つけるためのテーブルへの有効インデックスを含む。
【0143】
ひとたび第1オペランド及び第2オペランドが取得されると、次にこれらを比較し、これらが等しい場合、汎用レジスタR+1の内容を第2オペランド位置に格納し、構成内の指定されたCPUから、(1)ストレージ内の置換されたエントリを用いて形成された、指定されたタイプの全てのTLBテーブル・エントリ、及び(2)クリアされた上位レベルのTLBテーブル・エントリを用いて形成された全ての下位レベルのTLBテーブル・エントリがクリアされる。クリアされるTLBエントリは、随意的に、指定されたアドレス空間内のアドレスを変換するために形成されたエントリに制限することができる。結果の条件コードは0に設定される。
【0144】
第1オペランドと第2オペランドが等しくない場合、第2オペランドは第1オペランド位置にロードされ、結果の条件コードは1に設定される。Mフィールドは、構成内の全てのCPUのTLBをクリアするのか、又は命令を実行しているCPU内のTLBのみをクリアするのかを決定することができる。
【0145】
図4は、一実施形態のチャートを示す。一実施形態において、コンピュータ・プロセッサは、処理のためのCRDTE命令401を取得する。マシンは、オペコードに基づいて、Compare and Replace DAT Table Entry命令を処理する。
【0146】
及びRフィールドの各々は、偶数・奇数対の汎用レジスタ405を指定し、偶数のレジスタを指定する必要がある。他の場合には、指定例外が認識される。汎用レジスタR(対の偶数レジスタ)410は、ビット位置0−63に第1オペランドを含む。第1オペランドは、比較値と呼ぶことができる。汎用レジスタR+1(対の奇数レジスタ)411のビット位置0−63は、置換値と呼ぶことができる。
【0147】
命令を実行する際、第1オペランドと第2オペランドが比較される。第1オペランドは、汎用レジスタR 410内に配置される。第2オペランドは、汎用レジスタR 420及びR+1 421により指定されるストレージ内のダブルワードである。汎用レジスタRのビット59−61は、指定されたテーブル・タイプ(DTT)であり、ストレージ440内のテーブル430の起点を形成する汎用レジスタR内のビットを指定し、DTTはまた、第2オペランド435を見つけるためのテーブルへの有効インデックスとして用いられる汎用レジスタR+1内のビットも指定する。
【0148】
ひとたび第1オペランド及び第2オペランドが比較されると436、これらが等しい場合、汎用レジスタR+1の内容が第2オペランド位置445に格納され、450に示されるように、構成内の指定されたCPUから、(1)ストレージ内の置換されたエントリを用いて形成された、指定されたタイプの全てのTLBテーブル・エントリ、及び(2)クリアされた上位レベルのTLBテーブル・エントリを用いて形成された全ての下位レベルのTLBテーブル・エントリがクリアされる。クリアされるTLBエントリは、随意的に、指定されたアドレス空間内のアドレスを変換するために形成されたエントリに制限することができる。455に示されるように、結果の条件コードは0に設定される。
【0149】
第1オペランドと第2オペランドが等しくない場合、第2オペランドは、第1オペランド位置406にロードされる。465に示されるように、結果の条件コードは1に設定される。
【0150】
命令401は、Mフィールド402を用いて、構成内の全てのCPUのTLBを選択的にクリアするか1570、又は命令を実行しているCPUのTLBのみをクリアするか1575を決定することができる。Mフィールドは、ローカル・クリア(LC)制御を含む。Mフィールド内のLC制御がゼロである場合、構成内の全てのCPU内のTLBが影響を受ける。Mフィールド内のLC制御フィールドが1である場合、Compare and Replace DAT Table Entry命令を実行しているCPUと関連付けられたTLBのみが影響を受け得る。構成内の他の全てのCPU内のTLBは影響を受けないことがある。
【0151】
注記:「指定されたCPU」という用語は、この命令によって影響を受けるTLBの範囲に関して、以下の意味を有する。Mフィールド内のローカル・クリア(LC)制御がゼロである場合、「指定されたCPU」という用語は、構成内の全てのCPUを意味する。
【0152】
フィールド内のLC制御が1である場合、「指定されたCPU」という用語は、COMPARE AND REPLACE DAT TABLE ENTRY命令を実行しているCPU(ローカルCPU)のみを意味する。構成内の他の全てのCPUのTLBは、影響を受けないことがある。
・第1オペランド及び第2オペランドが比較される。これらが等しい場合、汎用レジスタR+1の内容を第2オペランド位置に格納し、構成内の指定されたCPUから、(1)ストレージ内の置換されたエントリを用いて形成された指定されたタイプの全てのTLBテーブル・エントリ、及び(2)クリアされた上位レベルのTLBテーブル・エントリを用いて形成された全ての下位レベルのTLBテーブル・エントリがクリアされる。クリアされるTLBエントリは、随意的に、指定されたアドレス空間内のアドレスを変換するために形成されたエントリに制限することができる。
・第1オペランドと第2オペランドが等しくない場合、第2オペランドは第1オペランド位置にロードされる。しかしながら、モデルによっては、第2オペランドをフェッチし、その後、再び第2オペランド位置に無変更のまま格納することができる。この更新は、他のCPUから観察すると、ブロック・コンカレント(block-concurrent)のインターロック更新参照のように見える。比較の結果は、条件コードにより示される。
【0153】
及びRフィールドの各々は、偶数・奇数対の汎用レジスタを指定し、偶数番号のレジスタを指定する必要がある。他の場合には、指定例外が認識される。ここで図5に関して、第1オペランドは比較値501と呼ばれ、汎用レジスタRのビット位置0−63に含まれる。汎用レジスタR+1のビット位置0−63は、置換値510と呼ばれる。
【0154】
第2オペランドは、汎用レジスタR及びR+1 540によって指定されるストレージ内のダブルワードである。汎用レジスタRのビット59−61は、指定されたテーブル・タイプ(DTT)であり、ストレージ内のテーブルの起点を形成する汎用レジスタR内のビットを指定し、DTTは、以下のように、第2オペランドを見つけるためのテーブルへの有効なインデックスとして使用される汎用レジスタR+1 540内のビットも指定する。
【表2】
【0155】
520に示されるようにDTTが2進数000である場合、右に11個のゼロを付加した用レジスタRのビット位置0−52の内容521がテーブル起点を形成し、レジスタの522内のビット53−58、523内のビット62、及び524内のビット63は無視される。530に示されるようにDTTが2進数100−111である場合、右に12個のゼロを付加した汎用レジスタRのビット位置0−51の内容531がテーブル起点を形成し、レジスタの532内のビット52−58、533内のビット62、及び534内のビット63は無視される。2進数001、010及び011のDTTの値は無効であり、DTTが無効である場合、指定例外が認識される。
【0156】
汎用レジスタR+1 540のビット0−51は、仮想アドレスの領域インデックス、セグメント・インデックス、及びページ・インデックスの形式を有する。DTTにより指定されるテーブル・タイプのエントリを選択するために、通常、DATにより使用される541内のビット0−51の部分は、有効インデックスと呼ばれる。有効インデックスの右の、汎用レジスタR+1のビット0−51の部分は無視される。汎用レジスタR+1のビット位置52−63 542は予約されており、ゼロを含むべきであり、他の場合には、指定例外が認識される。
【0157】
550が非ゼロの場合、汎用レジスタRの内容は、テーブル起点(551内のビット0−51)、並びに指定タイプ制御(DT)(553内のビット60及び61)のみが使用される、アドレス空間制御要素の形式を有する。これらは、クリアされるTLBエントリを選択するのに使用される。汎用レジスタRの552内のビット52−59、553内のビット62、及び554内のビット63は無視される。Rがゼロの場合、汎用レジスタ0の内容全体は無視され、TLBエントリは、それを形成するのに使用されたASCEに関係なくクリアされる。
【0158】
フィールドが図6に示される。Mフィールドのビットは以下のように定められる。
予約される:601内に示されるようなビット0−2は予約される。Mフィールドの予約されたビット位置は無視されるが、ゼロを含むべきであり、他の場合には、プログラムが将来、互換性のある状態で動作しないことがある。
【0159】
ローカル・クリア制御(LC):
LCビット(Mフィールド602のビット3)は、ローカルCPU内のTLBのみをクリアするかどうか、又は構成の全てのCPU内のTLBをクリアするかどうかを制御する。
【0160】
第1オペランドと第2オペランドが等しい場合、汎用レジスタR+1の内容は、第2オペランド位置に格納され、構成内の指定されたCPU内の変換ルックアサイド・バッファ(TLB)から、(1)ストレージ内の第2オペランドのオリジナルの内容(つまり、置換値に置換される前の第2オペランドの内容)を用いて形成された、指定されたタイプの全てのTLBテーブル・エントリ、及び(2)クリアされた上位レベルのTLBテーブル・エントリを用いて形成された全ての下位レベルのTLBエントリがクリアされる。クリアされるTLBエントリは、随意的に、指定されたアドレス空間内のアドレスを変換するために形成されたエントリに制限することができる。
【0161】
テーブル・タイプによって、汎用レジスタR内のテーブル起点及び汎用レジスタR+1内の有効インデックスは、結果のアドレスのビット位置0からの繰り上がりが常に無視され、インデックスがテーブル長フィールドに対してチェックされないことを除いて、非特許文献1内の「Lookup in a Table Designated by an Address−Space−Control Element」又は「Page−Table Lookup」における規則に従って、テーブル・エントリを指定する。テーブル起点は、64ビット・アドレスとして取り扱われ、加算は、現PSWのビット31及び32により指定される現在のアドレッシング・モードに関係なく、64ビット・アドレスの算術演算の規則を用いて行われる。これら2つのコンポーネントから形成されるアドレスは、実アドレス又は絶対アドレスである。テーブル・エントリの内容は、妥当性に関してチェックされず、テーブル・エントリの内容に起因して、例外条件は認識されない。
【0162】
テーブル・エントリのフェッチ及びストアは、ブロック並行処理のインターロック更新として実施される。エントリへのフェッチ・アクセスはキー制御保護の対象となり、ストア・アクセスは、キー制御保護及び低アドレス保護の対象となる。
【0163】
シリアル化機能は、操作が開始する前に実施され、操作が完了した後で再び実施される。全てのシリアル化操作の場合のように、このシリアル化は、このCPUにのみ適用され、他のCPUは必ずしもシリアル化されない。
【0164】
第1オペランドと第2オペランドが等しい場合、このCPUは、選択されたエントリをそのTLBからクリアする。ローカルCPUのクリアに加えて、Mフィールド内のLCビットがゼロである場合、選択されたエントリをそのTLBからクリアするように、構成内の他の全てのCPUに知らせる。各TLBから、少なくとも、以下の条件の全てを満たすエントリがクリアされる。
汎用レジスタR+1内の有効インデックスが、汎用レジスタRのビット59−61のDTTフィールドにより指定されるタイプのTLBテーブル・エントリ内の対応するインデックスと合致する。モデルがDTTフィールドにより指定されるインデックスを含む複合TLBエントリを実装する場合、汎用レジスタR+1内の有効インデックスの左にあるビットもまた、指定されるTLBテーブル・エントリ内に与えられるいずれかの対応するビットと合致する。
フィールドがゼロであるか、又は、汎用レジスタR内のテーブル起点フィールド及び指定タイプ・フィールドが、TLBテーブル・エントリを形成するのに使用されたアドレス空間制御要素(ASCE)内のテーブル起点フィールド及び指定タイプ・フィールドと合致するかのいずれかである。
フィールドがゼロの場合、このステップにおいて説明された条件は適用されない。
EDAT−1が適用され、且つストレージ内で置換されたエントリがセグメント・テーブル・エントリである場合、又は、EDAT−2が適用され、ストレージ内で置換されたエントリが領域第3テーブル・エントリである場合、置換されたエントリ内の形式制御がTLB内のものと合致する。
−ストレージ内の置換されたエントリが下位レベルの変換テーブルを指定する場合、エントリ内の下位レベルのテーブル起点は、TLBテーブル・エントリ内のテーブル起点フィールドと合致する。
EDAT−1が適用され、且つストレージ内で置換されたエントリがセグメント・テーブル・エントリであり、そこで形式制御が1である場合、又は、EDAT−2が適用され、ストレージ内で置換されたエントリが領域第3テーブル・エントリであり、そこで形式制御が1である場合、置換されたエントリ内のセグメント・フレームの絶対アドレス又は領域フレームの絶対アドレスが、それぞれ、TLBエントリのものに合致する。
【0165】
さらに、影響を受けるTLBの各々から、少なくとも、以下の条件の全てを満たすいずれかの下位レベルのTLBテーブル・エントリもクリアされる。
下位レベルのTLBテーブル・エントリが、ストレージ内の置換されたエントリを用いて、又はストレージ内の置換されたエントリ若しくはこのプロセスでクリアされたTLBエントリのいずれかを用いて形成された上位レベルのTLBテーブル・エントリを用いて、形成された。
フィールドがゼロであるか、又は、汎用レジスタR内のテーブル起点フィールド及び指定タイプ・フィールドが、下位レベルTLBテーブル・エントリを形成するのに使用されたアドレス空間制御要素(ASCE)内のテーブル起点フィールド及び指定タイプ・フィールドと合致するかのいずれかである。このASCEは、下位レベルTLBテーブル・エントリが形成されたストレージ内の下位レベル・テーブル・エントリを接続した上位レベル・テーブル・エントリを含む変換経路を接続したものとすることができ、又は、このASCEは、下位レベルTLBテーブル・エントリが形成されたストレージ内の下位レベル・テーブル・エントリを接続した上位レベルTLBテーブル・エントリを使用可能にしたものとすることができる。
【0166】
フィールドがゼロの場合、このステップで説明された条件は適用されない。
EDAT−1が適用され、ストレージ内の置換されたエントリがセグメント・テーブル・エントリである場合、又は、EDAT−2が適用され、ストレージ内の置換されたエントリが領域第3テーブル・エントリである場合、置換されたエントリ内の形式制御がTLBエントリのものと合致する。
【0167】
ストレージ内のエントリが下位レベル変換テーブルを指定する場合、エントリ内の下位レベル・テーブル起点がTLBテーブル・エントリ内のテーブル起点フィールドと合致する。
【0168】
第1オペランドと第2オペランドが等しい場合、COMPARE AND REPLACE DAT TABLE ENTRYの実行は、これを実行するCPU上で、以下が発生するまで完了しない。
1.上記に指定された基準を満たす全てのエントリが、このCPUのTLBからクリアされている。Mフィールド内のLC制御が1である場合、COMPARE AND REPLACE DAT TABLE ENTRYの実行は完了し、次のステップは実施されない。
2.Mフィールド内のLC制御がゼロである場合、構成内の他の全てのCPUが、変更ビット及び参照ビットの更新を含むいずれのストレージ・アクセスも完了している。
【0169】
操作は、必ずしも、TLBの実空間エントリに対して何らかの影響を有するとは限らない。
【0170】
特別な条件:
以下のいずれかが真である場合、指定例外が認識され、操作は抑止される。
又はRフィールドのいずれかが奇数である。
DTTフィールド(汎用レジスタRのビット位置59−61)が、2進数001、010、又は011を含む。
汎用レジスタR+1のビット位置52−63が非ゼロの値を含む。
【0171】
操作は、全てのアドレッシング例外及び保護例外において抑止される。
【0172】
結果の条件コード:
0−−第1オペランドと第2オペランドが等しく、第2オペランドは、汎用レジスタR+1の内容に置換された。
1−−第1オペランドと第2オペランドは等しくなく、第1オペランドは第2オペランドに置換された。
2−−
3−−
【0173】
プログラム例外:
・アドレッシング例外
・操作例外(強化DATファシリティ2がインストールされていない場合)
・特権操作例外
・保護例外(フェッチ及びストア、領域テーブル・エントリ、セグメント・テーブル・エントリ、又はページ・テーブル・エントリ、キー制御保護及び低アドレス保護)
・指定例外
【0174】
プログラミング上の注意:
1.TLBエントリの選択的クリアは、モデルによって異なる方法で実施することができ、一般に、必要最小数よりも多くのエントリがクリアされ得る。
2.共通セグメントと関連付けられたTLBエントリをクリアする場合、これらのエントリが、多くの異なるテーブル起点を含むアドレス空間制御要素を用いて形成され得たことに留意されたい。
3.アセンブラ構文の括弧[]内に含まれているフィールドにより示されるように、命令のMフィールドは、随意的であると考えられる。Mフィールドが指定されていない場合、アセンブラは命令のそのフィールド内にゼロを入れる。
4.以下のいずれかが真である場合にのみ、ローカル・クリア制御を1に指定すべきであり、他の場合には、遅延アクセス例外マシン・チェックの提示を含む予測不能な結果が発生することがある。
・プログラムは、ユニプロセッサ構成内で実行されている。
・プログラムは、単一のCPU上で実行されるように割り当てられ、プログラムとそのCPUとの間のアフィニティ(affinity)が維持される。
幾つかのモデルでは、上記で列挙した場合に、ローカルTLBのみのクリアを指定するCOMPARE AND REPLACE DAT TABLE ENTRYの使用により、著しい性能の改善がもたらされ得る。
【0175】
上記の環境の多数の変形が可能である。例えば、1つ又は複数の態様は、例えば、1つ又は複数のページング可能なエンティティ(例えば、ゲスト)が1つ又は複数のプロセッサ上で実行される、仮想マシンのエミュレーションに等しく適用可能である。一例として、ページング可能なゲストが解釈実行開始(Start Interpretive Execution、SIE)アーキテクチャによって定められ、その一例は、その全体を引用により本明細書に組み入れる非特許文献2に記載される。
【0176】
SIE及びz/Architectureが上述されたが、1つ又は複数の態様は、ページング可能なエンティティ又は類似の構造を用いる他のアーキテクチャ及び/又は環境にも等しく適用可能である。
【0177】
さらに、上述した種々の実施形態は一例にすぎない。例えば、本明細書では、論理的に区分化された環境について説明されるが、これはほんの一例である。態様は、複数のゾーンを有する他の環境、及び区分化されていない環境を含む、多数のタイプの環境にとって有益である。さらに、中央プロセッサ複合体が存在しないが、互いに結合された複数のプロセッサが存在することがある。さらにまた、1つ又は複数の態様は、単一のプロセッサ環境に適用可能である。
【0178】
本明細書において特定の環境が説明されたが、同様に、これらの環境に対する多数の変形を実装することができる。例えば、環境が論理的に区分化されている場合、環境内により多くの又はより少ない論理パーティションを含むことができる。さらに、互いに結合された複数の中央処理複合体が存在し得る。これらは、なし得る変形のほんの一部にすぎない。付加的に、他の変形が可能である。さらに、環境は、複数のコントローラを含むことができる。さらにまた、(1つ又は複数のコントローラからの)複数の休止要求が、システム内で同時に未処理となることがある。付加的な変形も可能である。
【0179】
有利なことに、1つ又は複数の態様は、以下の、Slegel他による「Filtering Processor Requests Based On Identifiers」という名称の特許文献9、Slegel他による「Blocking Processing Restrictions Based On Page Indices」という名称の特許文献10、及びSlegel他による「Blocking Processing Restrictions Based On Addresses」という名称の特許文献11のうちの1つ又は複数に記載される性能の強化から利益を得ることができる。
【0180】
本明細書で使用されるとき、「処理ユニット」という用語は、ゲスト、プロセッサ、エミュレータ、及び/又は他の類似のコンポーネントなどのページング可能なエンティティを含む。さらに、「処理ユニットによって」という用語は、処理ユニットの代わりに、を含む。「バッファ」という用語はストレージ域、並びに、アレイを含むがこれらに限定されない異なるタイプのデータ構造を含み、「テーブル」という用語は、テーブル・タイプのデータ構造以外を含むことができる。さらに、命令は、情報を指示するためのレジスタ以外のものを含むことができる。それに加えて、ページ、セグメント、及び/又は領域は、本明細書で説明されたものとは異なるサイズのものとすることができる。
【0181】
1つ又は複数の機能は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの何らかの組み合わせの形で実装することができる。さらに、1つ又は複数の機能をエミュレートすることができる。
【0182】
1つ又は複数の態様を、例えば、コンピュータ使用可能媒体を有する製品(例えば、1つ又は複数のコンピュータ・プログラム製品)内に含ませることができる。媒体は、例えば、能力を提供し、容易にするためのコンピュータ可読プログラム・コード手段又は論理(例えば、命令、コード、コマンド等)を内部に具体化している。製品は、コンピュータ・システムの一部として含ませることができ、又は、単独で販売することができる。
【0183】
付加的に、能力を実施するために機械が実行可能な命令の少なくとも1つのプログラムを具体化する機械によって読み出し可能な、少なくとも1つのプログラム・ストレージ・デバイスを提供することができる。
【0184】
本明細書で示される流れ図は一例にすぎない。本明細書で説明されるこれらの図、又はステップ(若しくは操作)の多数の変形が存在し得る。例えば、ステップを異なる順序で実施してもよく、又は、ステップを付加、削除、又は変更してもよい。
【0185】
好ましい実施形態が本明細書で詳細に示され、説明されたが、当業者であれば、種々の変更、付加、置換等を行うことができ、従って、これらは以下の特許請求の範囲に定められるような本発明の範囲内にあると考えられることを理解するであろう。
【0186】
さらに別の実施形態において、システム・バスを通してメモリ要素に直接的に又は間接的に結合された少なくとも1つのプロセッサを含む、プログラム・コードを格納及び/又は実行するのに適したデータ処理システムが使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行時に用いられるローカル・メモリと、大容量記憶装置と、実行時に大容量記憶装置からコードを取得すべき回数を減少させるために少なくとも幾つかのプログラム・コードの一時的なストレージを提供するキャッシュ・メモリとを含む。
【0187】
入力/出力、即ちI/O装置(キーボード、ディスプレイ、ポインティング装置、DASD、テープ、CD、DVD、サムドライブ、及び他のメモリ媒体等を含むが、これらに限定されるものではない)は、直接的に、又は介在するI/Oコントローラを通して、システムに結合することができる。データ処理システムが、介在するプライベート・ネットワーク又は公衆ネットワークを通して、他のデータ処理システム又は遠隔プリンタ若しくはストレージ装置に結合できるように、ネットワーク・アダプタをシステムに結合することもできる。モデム、ケーブル・モデム及びイーサネット・カードは、利用可能なタイプのネットワーク・アダプタのほんの数例にすぎない。
【0188】
1つ又は複数の態様を、例えば、コンピュータ使用可能媒体を有する製品(例えば、1つ又は複数のコンピュータ・プログラム製品)内に含ませることができる。媒体は、例えば、能力を提供し、容易にするためのコンピュータ可読プログラム・コード手段又は論理(例えば、命令、コード、コマンド等)を内部に有する。製品は、システム(例えば、コンピュータ・システム)の一部として含ませることができ、又は、単独で販売することができる。
【0189】
図7を参照して、1つ又は複数の態様を組み込む製品又はコンピュータ・プログラム製品の一例が説明される。コンピュータ・プログラム製品700は、例えば、1つ又は複数の態様を提供し、容易にするように、コンピュータ可読プログラム・コード手段又は論理704をその上に格納するための1つ又は複数のコンピュータ使用可能媒体702を含む。媒体は、電子、磁気、光学、電磁気、赤外線又は半導体のシステム(若しくは装置若しくはデバイス)、又は伝搬媒体とすることができる。コンピュータ可読媒体の例として、半導体又はソリッド・ステート・メモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、剛性磁気ディスク及び光ディスクが挙げられる。光ディスクの例として、コンパクト・ディスク−読み出し専用メモリ(CD−ROM)、コンパクト・ディスク−読み出し/書き込み(CD−R/W)及びDVDが挙げられる。一連のプログラム命令、又は、1つ又は複数のコンピュータ可読プログラム・コード手段又は論理により定められる1つ又は複数の相互に関連したモジュールの論理組立体が、1つ又は複数の態様の性能を指示する。
【符号の説明】
【0190】
100:コンピューティング環境
102:中央プロセッサ複合体(CPC)
104:論理パーティション
106、201:中央プロセッサ(CPU)
108:ハイパーバイザ
110:オペレーティング・システム
120、200:コントローラ
202:システム・シリアル化制御
204、208、210:インターフェース
206:応答バス
212:キャッシュ制御
213:変換ルックアサイド・バッファ(TLB)
220:割り込み制御
222:実行制御
224:ブロードキャスト操作許可ラッチ
226:中央演算処理装置(CPU)休止ラッチ
300:ホスト・コンピュータ
302:メモリ
304:命令フェッチ・ユニット
306:命令デコード・ユニット
308:命令実行ユニット
401:命令
501:比較値
510:置換値
551:テーブル起点
553:指示タイプ制御
700:コンピュータ・プログラム製品
702:コンピュータ使用可能媒体
704:コンピュータ可読プログラム・コード手段又は論理
図1
図2
図3
図4
図5
図6
図7