(58)【調査した分野】(Int.Cl.,DB名)
前記ホスト・プロセッサ及び前記第1のゲスト仮想マシンの少なくとも1つは、動的アドレス変換を用いて1つのアドレスを別のアドレスに変換し、前記第2のゲスト仮想マシンにおいて、動的アドレス変換は利用不能であるが、制御ブロック内のインジケータは、動的アドレス変換がオンにされたことを示す、請求項2に記載の方法。
前記動作は、前記選択されたアーキテクチャ機能をオンにしようと試みるLoad Program Status Word命令、Load Real Address命令、前記選択されたアーキテクチャ機能をオンにしようと試みるSet System Mask命令、前記選択されたアーキテクチャ機能をオンにしようと試みるStore Then OR System Mask命令、又は割り込みプログラム状況ワードが前記選択されたアーキテクチャ機能をオンにしようと試みる割り込みのうちの1つを含む、請求項4から請求項6までのいずれかに記載の方法。
前記第1のアーキテクチャ・モードは、64ビット・アドレッシングを含み、64ビットの汎用レジスタを使用し、前記第2のアーキテクチャ・モードは、31ビット・アドレッシングを含み、32ビットの汎用レジスタを使用する、前記請求項1ないし8のいずれかに記載の方法。
前記ホスト・プロセッサ及び前記第1のゲスト仮想マシンの少なくとも1つは、動的アドレス変換を用いて1つのアドレスを別のアドレスに変換し、前記第2のゲスト仮想マシンにおいて、動的アドレス変換は利用不能であるが、制御ブロック内のインジケータは、動的アドレス変換がオンにされたことを示す、請求項11に記載のコンピュータ・システム。
前記動作は、前記選択されたアーキテクチャ機能をオンにしようと試みるLoad Program Status Word命令、Load Real Address命令、前記選択されたアーキテクチャ機能をオンにしようと試みるSet System Mask命令、前記選択されたアーキテクチャ機能をオンにしようと試みるStore Then OR System Mask命令、又は割り込みプログラム状況ワードが前記選択されたアーキテクチャ機能をオンにしようと試みる割り込みのうちの1つを含む請求項13に記載のコンピュータ・システム。
【発明を実施するための形態】
【0019】
1つ又は複数の態様によると、インストールされると、アーキテクチャから、選択されたアーキテクチャ機能を除去(remove)し、環境内の他の制御に関係なく、その機能をオン/オフできなくするファシリティが提供される。ファシリティがインストールされている場合、アーキテクチャ機能はサポートされない。これは、アーキテクチャにおいてアーキテクチャ機能が利用不能であるかのようであり、実際には、ファシリティを実装するコードを、削除、バイパス、又は他の方法で排除することができる。1つのこうしたアーキテクチャ機能は、動的アドレス変換(DAT)のような仮想アドレス変換であり、アーキテクチャは、例えばESA/390である。
【0020】
1つの特定の実施形態において、複数のアーキテクチャ・モード、例えばz/Architectureなどの強化されたモードのような第1のアーキテクチャ・モード、及び、例えばESA/390などのレガシー・モードのような第2のアーキテクチャ・モードをサポートするように構成されたコンピューティング環境が提供される。1つの実施形態において、第1のアーキテクチャ・モードは64ビット・アドレッシングを提供し、64ビットの汎用レジスタを使用し、第2のアーキテクチャ・モードは31ビット・アドレッシングを提供し、32ビットの汎用レジスタを使用するといったように、第1のアーキテクチャ・モードは、第2のアーキテクチャ・モードとはアーキテクチャ上の相違を有する。さらに、DATなどの特定のアーキテクチャ機能は、第1のアーキテクチャ・モードによってサポートされ、第2のアーキテクチャ・モードによってサポートすることはできない。
【0021】
コンピューティング環境は、複数のアーキテクチャ・モードを同時に(concurrently)サポートするように構成されるが、コンピューティング環境は、これらのモードの1つのみで処理される。従って、1つの態様によると、コンピューティング環境のプロセッサが、選択されたアーキテクチャ機能を使用する操作を実行する要求を受け取ることに応答して、プロセッサは、機能を実行するか、又は、コンピューティング環境が現在処理しているアーキテクチャ・モードから機能が除去されたかどうかに基づいて、機能を実行しないという表示を提供する。
【0022】
別の実施形態において、コンピューティング環境は、プロセッサ、及びホストによりサポートされる複数のゲスト仮想マシン上で実行されているホスト制御プログラムを有する仮想環境である。ホストは、例えば、第1のアーキテクチャ・モードで処理を行っているが、ホストにより開始されるゲスト仮想マシンが、ホストと同じアーキテクチャ・モードで処理される場合も又はされない場合もある。例えば、1つの仮想マシンは、選択された機能を提供する第1のアーキテクチャ・モードで開始することができ、別の仮想マシンは、選択されたアーキテクチャ機能を提供しない第2のアーキテクチャ・モードで開始することができる。1つの実施形態において、第2のアーキテクチャ・モードは、第1のアーキテクチャ・モードのアーキテクチャ機能の縮小セット(reduced set)を提供する。選択されたアーキテクチャ機能は、アーキテクチャから除去されたという点で、アーキテクチャの部分ではない(例えば、機能を実装するコードなしに、アーキテクチャのバージョンが作成される、又は、この機能をサポートするために既にアーキテクチャ内にあったコードがバイパス、削除、又は他の方法で排除された)。
【0023】
別の実施形態において、第2のアーキテクチャ・モードは、第1のアーキテクチャ・モードとは異なる機能又はファシリティを提供でき、特定のアーキテクチャ能力を、第1のアーキテクチャ・モードで提供ができるが、第2のアーキテクチャ・モードでは提供できない。1つの例示的な実施形態においては、DAT変換が第1のアーキテクチャで与えられ、第2のアーキテクチャでは与えられない(第1のアーキテクチャにより定められた形態、又は、例えばESA/390、S/390、S/370、S/360、PowerPC、Book 3E、Intel/AMD x86、Itanium、又はDAT若しくはDAT様ファシリティに対応する他のいずれかのアーキテクチャ仕様に従ったPowerPCに従って提供できるような他の何れかの形態で)。IBM、z/OS、z/VM、z/Architecture、Processor Resource/Systems Manager、PowerPC、及びPower Systemsは、世界中の多数の管轄区域において登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。本明細書で使用される他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーション又は他の会社の登録商標、商標、又は製品名であり得る。Intel及びItaniumは、米国及び他の国々におけるIntel Corporation又はその子会社の商標又は登録商標である。
【0024】
本明細書で示されるように、一例において、第1のアーキテクチャにおいて与えられ、第2のアーキテクチャにおいては与えられないアーキテクチャ機能は、動的アドレス変換(DAT)のような仮想アドレス変換である。従って、1つの特定の例において、動的アドレス変換が特定のアーキテクチャ・モード(例えば、レガシー・アーキテクチャ・モード)によってサポートされないことを示す、No−DAT(NDATとも呼ばれる)ファシリティが、コンピューティング環境において与えられる。このファシリティは、例えば、動的アドレス変換(DAT)がオンの状態で、ESA/390アーキテクチャ・モードにおける構成の可能性を除去する。つまり、このファシリティがインストールされ、イネーブルにされると、ESA/390アーキテクチャ・モードにおける構成は、DATをオンにすることができない。DATをオンにしようとする試みは、例えば、No−DAT例外プログラム割り込みを引き起こす。他の実施形態においては、他の例外コードが示される。
【0025】
1つの実施形態において、NDATファシリティは、一般に、例えばLoad Real Address(LRA)命令などのDAT変換と併用される1つ又は複数の命令の実行をディスエーブルにする。Load Real Address命令は、例えば、この命令を第1のアーキテクチャ・モードで実行できるときに、第2のアーキテクチャ・モードで実行することはできない。
【0026】
1つの実施形態において、1つ又は複数のコンピューティング環境(例えば、プロセッサ、LPAR、ゲスト)において、NDATファシリティを選択的にイネーブルにすることができる。しかしながら、コンピューティング環境においてNDATファシリティがイネーブルにされると、環境内の他の制御の設定に関係なく、環境は、第2のアーキテクチャにおいてDATを使用することができない(すなわち、非ESA/390DAT)。それらの他の制御は、バイパス又はオーバーライドされる。
【0027】
図1を参照して、No−DATファシリティの1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の一例を説明する。
図1を参照すると、一例において、コンピューティング環境100は、ニューヨーク州Armonk所在のインターナショナル・ビジネス・マシーンズ(IBM(登録商標)コーポレーションにより提供されるz/Architectureに基づいている。z/Architectureは、非特許文献1に記載されている。コンピューティング環境は、z/Architectureに基づいているが、1つの実施形態においては、ESA/390又はESA/390のサブセットのような、1つ又は複数の他のアーキテクチャ構成もサポートする。
【0028】
一例として、コンピューティング環境100は、1つ又は複数の制御ユニット108を介して、1つ又は複数の入力/出力(I/O)デバイス106に結合された中央プロセッサ・コンプレックス(CPC)102を含む。中央プロセッサ・コンプレックス102は、例えば、1つ又は複数の中央プロセッサ(中央処理ユニット(CPU)としても知られる)110及び入力/出力サブシステム111に結合されたプロセッサ・メモリ104(主メモリ、主ストレージ、中央ストレージとも呼ばれる)を含み、これらの各々を以下に説明する。
【0029】
プロセッサ・メモリ104は、例えば、1つ又は複数のパーティション112(例えば、論理パーティション)と、論理パーティション・ハイパーバイザ114及び他のプロセッサ・ファームウェア115を含むプロセッサ・ファームウェア113とを含む。論理パーティション・ハイパーバイザ114の一例は、ニューヨーク州Armonk所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるProcessor Resource/System Manager(PR/SM)である。
【0030】
論理パーティションは、別個のシステムとして機能し、かつ、1つ又は複数のアプリケーション120、及び任意に、各々の論理パーティションについて異なり得る、内部の常駐オペレーティング・システム122とを有する。1つの実施形態において、オペレーティング・システムは、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/OSオペレーティング・システム、z/VMオペレーティング・システム、z/Linuxオペレーティング・システム、又はTPFオペレーティング・システムである。論理パーティション112は、プロセッサ110上で実行されているファームウェアが実装する論理パーティション・ハイパーバイザ114により管理される。本明細書で用いられるファームウェアは、例えば、プロセッサのマイクロコード及び/又はミリコードを含む。ファームウェアは、例えば、より上位レベルのマシン・コードの実装に用いられる、ハードウェア・レベルの命令及び/又はデータ構造体を含む。1つの実施形態において、ファームウェアは、例えば、典型的には、信頼できるソフトウェアを含むマイクロコードとして又は基礎をなすハードウェアに特有のマイクロコードとして配信される独自のコードを含み、システム・ハードウェアへのオペレーティング・システムのアクセスを制御する。
【0031】
中央プロセッサ110は、論理パーティションに割り当てられた物理プロセッサ・リソースである。特に、各論理パーティション112は、その各々がパーティションに割り当てられた物理プロセッサ110の全て又は割り当て分(share)を表す、1つ又は複数の論理プロセッサを有する。特定のパーティション112の論理プロセッサは、そのパーティション専用とし、そのパーティションに対して基礎をなすプロセッサ・リソース110が予約されるようにしても、又は、別のパーティションと共有し、基礎をなすプロセッサ・リソースが潜在的に別のパーティションに利用可能であるようにしてもよい。一例において、CPUの1つ又は複数は、本明細書で説明されるNo−DAT(NDAT)ファシリティ130の態様を含む。
【0032】
入力/出力サブシステム111は、入力/出力デバイス106と主ストレージ104との間の情報の流れを方向付ける。この入力/出力サブシステム111は、中央処理コンプレックスに結合され、中央処理コンプレックスの一部とすることも又はそれとは別個のものとすることもできる。I/Oサブシステムは、中央プロセッサを、入力/出力デバイスと直接通信するタスクから解放し、データ処理が、入力/出力処理と同時に進行することを可能にする。通信を提供するために、I/Oサブシステムは、I/O通信アダプタを用いる。例えば、チャネル、I/Oアダプタ、PCIカード、イーサネット・カード、Small Computer System Interface(SCSI)カード等を含む、種々のタイプの通信アダプタがある。本明細書で説明される特定の例において、I/O通信アダプタはチャネルであり、従って、I/Oサブシステムは、本明細書ではチャネル・サブシステムと呼ばれる。しかしながら、これは一例にすぎない。他のタイプのI/Oサブシステムを用いることもできる。
【0033】
I/Oサブシステムは、入力/出力デバイス106との間の情報の流れを管理する際に、1つ又は複数の入力/出力経路を通信リンクとして使用する。この特定の例において、通信アダプタはチャネルであるので、これらの経路は、チャネル経路と呼ばれる。
【0034】
図2を参照して、No−DATファシリティの1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の別の例を説明する。この例では、コンピューティング環境150は、仮想マシン・サポートを提供する中央プロセッサ・コンプレックス152を含む。CPU152は、1つ又は複数の制御ユニット108を介して、1つ又は複数の入力/出力(I/O)デバイス106に結合される。中央プロセッサ・コンプレックス152は、例えば、1つ又は複数の中央プロセッサ(中央処理ユニット(CPU)としても知られる)110及び入力/出力サブシステム111に結合されたプロセッサ・メモリ154(主メモリ、主ストレージ、中央ストレージとも呼ばれる)を含む。
【0035】
プロセッサ・メモリ154は、例えば、1つ又は複数の仮想マシン162と、ホスト・ハイパーバイザ164及び他のプロセッサ・ファームウェア165を含むプロセッサ・ファームウェア163とを含む。ホスト・ハイパーバイザ164の一例は、ニューヨーク州Armonk所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/VM(登録商標)である。
【0036】
CPUの仮想マシン・サポートは、各々がLinux(登録商標)のようなゲスト・オペレーティング・システム172をホストすることができる、多数の仮想マシン162を動作させる能力を提供する。各々の仮想マシン162は、別個のシステムとして機能することができる。つまり、各々の仮想マシンは、独立してリセットし、ゲスト・オペレーティング・システムをホストし、異なるプログラム120により動作することができる。仮想マシン内で実行されているオペレーティング・システム又はアプリケーション・プログラムは、十分かつ完全なシステムへのアクセスを有するように見えるが、実際には、その一部分しか利用可能ではない。Linuxは、米国、他の国々、又はその両方におけるLinus Torvaldsの登録商標である。
【0037】
この特定の例において、仮想マシンのモデルはV=Vモデルであり、仮想マシンの絶対メモリ又は実メモリは、実メモリ又は絶対メモリの代わりにホスト仮想メモリによってバッキングされる。各々の仮想マシンは仮想線形メモリ空間を有する。物理リソースはホスト164によって所有され、共用物理リソースは、それぞれの処理要求に応じるために、必要に応じてホストによってゲスト・オペレーティング・システムにディスパッチされる。このV=V仮想マシン(すなわち、ページング可能ゲスト)モデルでは、典型的には、ゲストが多数であるために、ホストがハードウェア・リソースを単にパーティション化して、構成済みゲストにそのハードウェア・リソースを割り当てることが妨げられるので、ゲスト・オペレーティング・システムと物理的な共用マシン・リソースとの間の対話がホストによって制御されるものと想定している。V=Vモデルの1つ又は複数の態様は、非特許文献2にさらに説明される。
【0038】
中央プロセッサ110は、仮想マシンに割り当て可能な物理プロセッサ・リソースである。例えば、仮想マシン162は1つ又は複数の論理プロセッサを含み、その各々は仮想マシンに動的に割り当て可能な物理プロセッサ・リソース110の全て又は割り当て分を表す。仮想マシン162は、ホスト164によって管理される。
【0039】
1つの実施形態においては、ホスト(例えば、z/VM(登録商標))及びプロセッサ(例えば、System z)のハードウェア/ファームウェアは、ゲスト・オペレーティング・システムとホストとの間で制御を転送する必要なしに、V=Vゲスト・オペレーティング・システム動作を処理するために、制御連携方式で相互に対話する。ページング可能ストレージ・モード・ゲストについて命令を解釈実行するのを可能にするファシリティを介して、ゲスト動作をホストの介入なしに直接実行することができる。このファシリティは、Start Interpretive Execution(解釈実行開始、SIE)という命令を提供し、この命令は、ゲスト(仮想マシン)の状態及び制御を保持する状態記述という制御ブロックを指定して、ホストが発行することができる。この命令は、マシンを解釈実行モードにするものであり、そのモードでは、ホストの注意を必要とする条件が発生するまでゲスト命令及び割り込みが直接処理される。このような条件が発生すると、解釈実行が終了し、ホスト割り込みが提示されるか又はSIE命令が検出された条件の詳細の格納を完了し、この後者のアクションはインターセプトと呼ばれる。解釈実行の一例は、非特許文献3に説明される。
【0040】
具体的には、1つの実施形態において、解釈実行ファシリティが、仮想マシンの実行のための命令を提供する。Start Interpretative Execution(解釈実行開始、SIE)と呼ばれるこの命令は、ゲスト実行環境を確立するホストにより発行される。ホストは、実マシンを直接管理する制御プログラムであり、ゲストは、任意の仮想マシン又は解釈されるマシンを指す。マシンは、SIE命令を発行するホストにより、解釈実行モードにされる。このモードにおいて、マシンは、選択されたアーキテクチャ(例えば、z/Architecture、ESA/390)の機能を提供する。この機能は、例えば、特に特権及び問題プログラム命令の実行、アドレス変換、割り込み処理及びタイミングを含む。マシンは、該マシンが仮想マシンの文脈で実行する機能を解釈すると言われる。
【0041】
SIE命令は、ゲストの現在の状態に関連する情報を含む、状態記述と呼ばれるオペランドを有する。SIEの実行が終了すると、制御がホストに戻される前に、ゲストPSWを含むゲストの状態を表す情報は、状態記述に保存される。
【0042】
解釈実行アーキテクチャは、ページング可能ストレージ・モードと呼ばれる絶対ストレージのためのストレージ・モードを提供する。ページング可能ストレージ・モードにおいては、ホスト・レベルにおける動的アドレス変換が、ゲストの主ストレージをマッピングするために用いられる。ホストは、ページング可能ストレージ・モード・ゲストの実ストレージを、ホストDATを用いることによってホスト実ストレージのどの場所でも、使用可能なフレームに拡散させ、かつ、ゲスト・データを補助ストレージにページアウトする能力を有する。この技術は、ゲスト用絶対ストレージの連続的な範囲の期待される外観を保持しながら、実マシン・リソースを割り当てる際に柔軟性を与える。
【0043】
仮想マシン環境は、DATのアプリケーションを二度呼び出すことができる:最初は、ゲスト・レベルで、ゲストにより管理される変換テーブルによってゲスト仮想アドレスをゲスト実アドレスに変換し、次に、ページング可能ゲストに関して、ホスト・レベルで、対応するホスト仮想アドレスをホスト実アドレスに変換する。
【0044】
特定の場合には、ホストは、通常、マシンにデリゲートされた(delegated)動作の仲裁を行う必要がある。この目的のため、状態記述は、特別な条件を「トラップする」又はインターセプトするために、ホストによって設定可能な制御を含む。インターセプト制御ビットは、特定のゲスト命令に遭遇したとき、マシンが制御をホスト・シミュレーションに戻すことを要求する。介入制御は、イネーブルにされた状態のPSWへの導入をキャプチャするので、ホストは、ゲストのために保留状態を保持する割り込みを提示することができる。解釈が進行する間、別の実プロセッサ上のホストによって、介入制御を非同期的に設定することができる。マシンは、ストレージから制御を周期的に再フェッチするので、更新された値が認識される。これにより、時期尚早に解釈を妨げることなく、ゲスト割り込みを保留状態にすることができる。
【0045】
本発明の1つの好ましい実施形態において、仮想環境において、実行制御インジケータが、SIE状態記述内に与えられる。一般に、このアーキテクチャ機能についてのインジケータが0である場合、仮想マシン内で機能は利用不能にされ、インジケータが1である場合、関連した機能の解釈実行が試行される。一例では、ページング可能ストレージ・モードのゲストがESA/390アーキテクチャ・モードにあり、インジケータが1であるとき、NDATファシリティがゲスト内にインストールされ、0であるとき、NDATはインストールされない。NDATがインストールされると、DAT機能の可用性を支配すできる他の制御(例えば、仮想環境における実行を制御している他の制御又はファシリティ)に関係なく、ゲストは、DATを使用しない。(別の実施形態において、NDATは、特別なインジケータを設けることなく、仮想環境において、グローバル・ファシリティとして与えられる。)
【0046】
実行の制御に加えて、状態記述におけるモード制御は、ゲストがESA/390モードで実行されるか又はz/Architectureモードで実行されるかを指定し、ホスト・ストレージ内のゲスト仮想マシンのゲスト主ストレージを表すための複数の方法の1つを選択する。本発明の1つの好ましい実施形態によると、第1のアーキテクチャ・モード及び第2のアーキテクチャ・モード(例えば、それぞれz/Architecture及びESA/390)にあるゲスト間で選択するために、状態制御において制御ビットが与えられる。本発明の別の好ましい実施形態によると、2つの別個の命令が、ホストに、第1及び第2のゲスト仮想マシンを生成する能力を与えることができ、例えば、別個の命令SIEz及びSIEeを与えて、それぞれ、z/Architectureモード及びESA/390モードでゲスト・マシンを開始することができる。
【0047】
サーバのタイム・スライスが消費されるまで、又は、ハードウェアが仮想化できない動作、又は制御プログラムがそれに関する制御を回復する動作をサーバが実行する必要が生じるまで、SIE命令は、制御プログラムによってディスパッチされた仮想サーバで実行される。その時点で、SIE命令は終了し、制御は制御プログラムに戻り、制御プログラムはその命令をシミュレートするか又は仮想サーバを強制待機状態にする。完了すると、制御プログラムは、仮想サーバの実行を再びスケジュールし、サイクルが再び始まる。このようにして、CPUの全能力及び速度が仮想サーバに利用可能になる。制御プログラムによる支援又は妥当性検査を必要とする特権命令だけがインターセプトされる。これらのSIEインターセプトは、そう呼ばれるように、仮想サーバが実デバイス上で実行できる動作に対して制限を課すために制御プログラムよって使用される。
【0048】
SIEに関するさらなる詳細は、非特許文献4に記載されている。
【0049】
本発明の1つの好ましい実施形態において、NDATファシリティは、いずれの制御も参照することなく、ESA/390ゲスト内に自動的にインストールされる。従って、SIE状態制御ブロックにおけるいずれの制御、又はSIE若しくは他の仮想マシン生成命令に対する他のオプションへの参照なしに、ESA/390モードに対応する仮想マシンは、DATファシリティにアクセスすることができない。
【0050】
図3を参照して、No−DATファシリティの1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の更に別の例を説明する。この例では、コンピューティング環境200は、z/Architecture及びESA/390、又はESA/390のサブセットを含む複数のアーキテクチャ・モード用に構成された、パーティション化されていない環境を含む。例えば、コンピューティング環境200は、例えばNo−DAT(NDAT)ファシリティ204及び1つ又は複数のキャッシュ206を含むプロセッサ(中央処理ユニット−CPU)202を含む。プロセッサ202は、1つ又は複数のキャッシュ210を有するメモリ部分208、及び入力/出力(I/O)サブシステム212に通信可能に結合される。I/Oサブシステム212は、例えば、データ入力デバイス、センサ、及び/又はディスプレイなどの出力デバイスを含むことができる外部I/Oデバイス214に通信可能に結合される。
【0051】
図4を参照して、No−DATファシリティの1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の本発明の別の好ましい実施形態を説明する。この例では、コンピューティング環境300は、例えば1つ又は複数のバス308及び/又は他の接続を介して互いに結合された、例えば、ネイティブ中央処理ユニット(CPU)302、メモリ304、及び1つ又は複数の入力/出力デバイス及び/又はインターフェース306を含む。例として、コンピューティング環境300は、ニューヨーク州Armonk所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるPowerPCプロセッサ又はPower Systemsサーバ;カリフォルニア州Palo Alto所在のHewlett Packard Co.により提供されるIntel Itanium IIプロセッサを伴うHP Superdome;及び/又は、インターナショナル・ビジネス・マシーンズ・コーポレーション、Hewlett Packard、Intel、Oracle、又はその他により提供されるアーキテクチャに基づく他のマシンを含むことができる。
【0052】
ネイティブ中央処理ユニット302は、環境内での処理の際に用いられる1つ又は複数の汎用レジスタ及び/又は1つ又は複数の専用レジスタなどの1つ又は複数のネイティブ・レジスタ310と、No−DATファシリティ311とを含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【0053】
さらに、ネイティブ中央処理ユニット302は、メモリ304内に格納された命令及びコードを実行する。1つの特定の例において、中央処理ユニットは、メモリ304内に格納されたエミュレータ・コード312を実行する。このコードにより、1つのアーキテクチャにおいて構成されたコンピューティング環境が、1つ又は複数の他のアーキテクチャをエミュレートすることが可能になる。例えば、エミュレータ・コード312により、PowerPCプロセッサ、PowerSytemsサーバ、HP Superdomeサーバ又は他のものなどの、z/Architecture以外のアーキテクチャに基づくマシンが、z/Architecture(及び/又はESA/390)をエミュレートし、z/Architectureに基づいて開発されたソフトウェア及び命令を実行することが可能になる。
【0054】
図5を参照して、エミュレータ・コード312に関する更なる詳細が、説明される。ゲスト命令350が、ネイティブCPU302のもの以外のアーキテクチャにおいて実行されるように開発されたソフトウェア命令(例えば、マシン命令と相関する)を含む。例えば、ゲスト命令350は、z/Architectureプロセッサ202上で実行されるように設計されるが、代わりに、例えばIntel Itanium IIプロセッサとすることができるネイティブCPU302上でエミュレートされることもある。一例において、エミュレータ・コード312は、メモリ304から1つ又は複数のゲスト命令350を取得し、取得された命令に対してローカル・バッファリングを任意に提供するための命令フェッチ・ルーチン352を含む。エミュレータ・コード312また、取得されたゲスト命令のタイプを判断し、ゲスト命令を1つ又は複数の対応するネイティブ命令356に変換するための命令変換ルーチン354も含む。この変換は、例えば、ゲスト命令により実施される機能を識別することと、その機能を実施するためのネイティブ命令を選択することとを含む。
【0055】
さらに、エミュレータ・コード312は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン360を含む。エミュレーション制御ルーチン360は、ネイティブCPU302に、1つ又は複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、こうした実行の最後に、次のゲスト命令又はゲスト命令のグループの取得をエミュレートするように、制御を命令フェッチ・ルーチンに戻させることができる。ネイティブ命令356の実行は、データをメモリ304からレジスタにロードすること、データをレジスタから再びメモリに格納すること、又は変換ルーチンによって定められるような何らかのタイプの算術演算又は論理演算を実施することを含むことができる。
【0056】
各ルーチンは、例えば、メモリ内に格納され、ネイティブ中央処理ユニット302によって実行される、ソフトウェアで実装される。他の例において、1つ又は複数のルーチン又は演算は、ファームウェア、ハードウェア、ソフトウェア、又はそれらの何らかの組み合わせで実装される。エミュレートされるプロセッサのレジスタは、ネイティブCPUのレジスタ310又はメモリ304内の位置を使用して、エミュレートすることができる。実施形態において、ゲスト命令350、ネイティブ命令356、及びエミュレータ・コード312は、同一のメモリ内に存在してもよく、又は、異なるメモリ・デバイスの間に分配されてもよい。
【0057】
図4及び
図5のエミュレーション・システムの本発明の少なくとも1つの好ましい実施形態によると、NDATファシリティが、第1のアーキテクチャ(例えば、z/Architecture)用ではなく第2のアーキテクチャ(例えば、ESA/390)用にインストールされたシステムのエミュレータが、z/Architectureモード用の、DAT変換を実施するためのエミュレーション・ルーチンを含み、ESA/390アーキテクチャ・モード用の、DAT変換を実施するためのエミュレーション・ルーチンを含まない。代わりに、第2のアーキテクチャ・モード用のエミュレータレータ・コード312は、第2のアーキテクチャ・モードで実行されているエミュレートされたプログラムがDAT変換をイネーブルにしようと試みているかどうかを判断し、もし試みている場合には、1つ又は複数のエラー表示を直接生成するためのテストを含む。本発明の別の好ましい実施形態において、第1及び第2のアーキテクチャ・モードを実装するために共通コード・ルーチンが用いられるとき、DAT関連機能がプログラムにより呼び出されるとき、現在のアーキテクチャ・モードを判断するために、第1のテストが実行される。現在のアーキテクチャ・モードが第1のアーキテクチャ・モードに対応する場合、制御は、第1のアーキテクチャにおいてDATを実装するコードに移行する。現在のモードが第2のアーキテクチャ・モードに対応するとき、制御は、エラー・ルーチン及びDAT変換のイネーブル化に対応するコードに移るか、又はDAT変換の実行が呼び出される。
【0058】
本発明の少なくとも1つの好ましい実施形態によると、NDATファシリティがインストールされると、DATと併せて、多数の命令(例えば、LRA)が使用され、これらの命令は、第2のアーキテクチャ・モードで随意的にディスエーブルにされる。本発明の少なくとも1つの好ましい実施形態によると、エミュレータ・コード312は、第2のアーキテクチャ・モードでDATと併せて使用されるディスエーブルにされた命令に対応する命令をエミュレートするためのコードを含まない。本発明の1つのこうした好ましい実施形態によると、エミュレータ・コード312は、第1のアーキテクチャ・モードでDATと併せて使用される命令に対応する命令をエミュレートするためのコードを含む。本発明の別の好ましい実施形態において、第1及び第2のアーキテクチャ・モードを実装するために共通コード・ルーチンが使用されるとき、DAT関連機能と併せて使用される命令がプログラムにより呼び出されたとき、現在のアーキテクチャ・モードを判断するために、第1のテストが実行される。現在のモードが第1のアーキテクチャ・モードに対応する場合、制御は、第1のアーキテクチャにおいてそうした命令を実施するコードに移行する。現在のモードが第2のアーキテクチャ・モードに対応するとき、制御は、エラー・ルーチン及びDAT変換と併せて使用される命令に対応するコードに移行するか、又はDAT変換の実行が呼び出される。
【0059】
上述のコンピューティング環境は、使用できるコンピューティング環境の単なる例に過ぎない。これらに限定されるものではないが、他のパーティション化されていない環境、他のパーティション化された環境、及び/又は他のエミュレートされた環境を含む他の環境を用いてもよく、実施形態は、いずれか1つの環境に限定されるものではない。さらに、特定のアーキテクチャの例が本明細書に説明され、特定のアーキテクチャの違い及び異なるアーキテクチャ機能が説明されるが、これらは単なる例に過ぎない。他のアーキテクチャを用いてもよく、他のアーキテクチャの違いが存在することがあり、及び/又は他のアーキテクチャ機能が、アーキテクチャの1つ又は複数によりサポートされることも又はされないこともある。
【0060】
本発明の1つの好ましい実施形態において、各々のコンピューティング環境は、これに限定されるものではないが、動的アドレス変換を含む、第1セットのアーキテクチャ機能を提供する第1のアーキテクチャ(例えば、z/Architecture)及び第2セットのアーキテクチャ機能を提供する第2のアーキテクチャ(例えば、ESA/390)のような複数のアーキテクチャをサポートするように構成される。第2セットのアーキテクチャ機能は、第1セットのアーキテクチャ機能内に含まれる、DATのような機能の1つ又は複数が、第2セットのアーキテクチャ機能にないという点で、機能の縮小セットである。
【0061】
動的アドレス変換(DAT)は、任意の時点でプログラムの実行に割り込み、プログラム及びそのデータを、直接アクセス・ストレージ・デバイスなどの補助ストレージに記録しておき、後で、プログラム及びそのデータを主ストレージ内の別の位置に戻して、実行を再開できる能力を提供する。主ストレージと補助ストレージとの間のプログラム及びそのデータの転送は断片的に行われ、実行が必要になった時点で、CPUがこれらの情報にアクセスしようと試みるのに応答して、情報が主ストレージに戻される。これらの機能は、プログラム及びそのデータの変更又は検査を必要とせずに実行でき、再配置されたプログラムについては明示的なプログラミング上の規則は何も適用されず、時間的遅延が生じる以外には、プログラムの実行が妨げられることはない。
【0062】
オペレーティング・システムによる適切なサポートによって、動的アドレス変換ファシリティを用いて、ユーザにシステムを提供することができ、このシステムでは、ストレージが、構成内で利用可能にされている主ストレージよりも大きく見える。この見かけの主ストレージを仮想ストレージと呼び、仮想ストレージ内の位置を指定するために用いられるアドレスを仮想アドレスと呼ぶことができる。ユーザの仮想ストレージは、構成内で利用可能な主ストレージのサイズをはるかに上回ることができ、通常、補助ストレージ内に維持される。仮想ストレージは、ページと呼ばれるアドレスのブロックから成るものと見なされる。仮想ストレージの中の最近参照されたページのみが、物理的な主ストレージのブロックを占有するものとして割り当てられる。ユーザが、主ストレージ内には存在しない仮想ストレージのページを参照すると、そのページは、主ストレージに取り込まれて、必要度が低いと認められるページと置き換わる。ストレージのページのスワップは、ユーザに認識されない形でオペレーティング・システムが行うことができる。
【0063】
仮想ストレージと関連した仮想アドレスのシーケンスは、アドレス空間(address space)と呼ばれる。オペレーティング・システムによる適切なサポートにより、動的アドレス変換ファシリティを用いて、多数のアドレス空間を与えることができる。これらのアドレス空間は、ユーザ間の独立性の程度を高めることができる。こうしたサポートにより、各々のユーザごとに完全に異なるアドレス空間を含むことができ、従って、完全な独立性をもたらすことができ、又は各アドレス空間の一部分を単一の共通ストレージ領域にマッピングすることにより、共有領域を与えることができる。準特権(semi-privileged)プログラムが1つより多いこのようなアドレス空間にアクセスするのを可能にする命令も与えられる。動的アドレス変換では、制御レジスタ内の変換パラメータを変換することなく、複数の異なるアドレス空間から、例えば仮想アドレスを変換することができる。これらのアドレス空間は、一次アドレス空間、二次アドレス空間、及びAR指定アドレス空間と呼ばれる。特権プログラムでは、ホーム・アドレス空間へのアクセスが可能になる。
【0064】
主ストレージのブロックを外部媒体からの新しい情報に置き換えるプロセスでは、どのブロックを置き換えるか、及びその置き換えられたブロックを補助ストレージに記録して保存する必要があるかどうかを決定する。この決定プロセスを助けるために、参照ビット及び変更ビットが、ストレージ・キーと関連付けられる。
【0065】
動的アドレス変換は、CPUにより生成される命令及びデータ・アドレスに対して指定することができる。
【0066】
アドレス計算は、24ビット、31ビット、又は64ビットのアドレッシング・モードで実行することができる。アドレス計算が24ビット又は31ビットのアドレッシング・モードで行われる場合、それぞれ左側に40個又は33個の0を付加して、64ビット・アドレスを形成する。従って、結果として得られる論理アドレスは、64ビットの長さになる。動的アドレス変換により作成される実アドレス又は絶対アドレス、及びその後でプリフィックス付加により作成される絶対アドレスは、1つの実施形態においては、64ビットの長さになる。
【0067】
動的アドレス変換は、ストレージ参照の際に、仮想アドレスをそれに対応する実アドレス又は絶対アドレスに変換するプロセスである。仮想アドレスは、一次仮想アドレス、二次仮想アドレス、AR(アクセス・レジスタ)指定仮想アドレス、又はホーム仮想アドレスとすることができる。これらのアドレスは、それぞれ、一次、二次、AR指定、又はホームのアドレス空間制御要素を用いて変換される。適切なアドレス空間制御要素が選択された後、変換プロセスは、4つのタイプの仮想アドレスの全てについて同じである。アドレス空間制御要素は、2Gバイト・アドレス空間を指定するセグメント・テーブル指定、4Tバイト、8Pバイト、又は16Eバイトの空間を指定する領域テーブル指定、又は16バイトの空間を指定する実空間指定とすることができる。(K、M、G、T,P及びEの文字は、それぞれ、キロ(2
10)、メガ(2
20)、ギガ(2
30)、テラ(2
40)、ペタ(2
50)及びエクサ(2
60)を表す。)セグメント・テーブル指定又は領域テーブル指定により、オペレーティング・システムにより実ストレージ又は絶対ストレージ内に確立されたテーブルを使用して変換が行われる。実空間指定の場合は、ストレージ内のテーブルを使用せずに、単に、仮想アドレスが実アドレスとして扱われる。
【0068】
セグメント・テーブル指定又は領域テーブル指定を使用したときの変換プロセスにおいて、3つのタイプの情報単位、すなわち、領域、セグメント及びページが認識される。領域は、例えば2Gバイトにわたり、2Gバイト境界で始まる、順次仮想アドレスのブロックである。セグメントは、例えば1Mバイトにわたり、1Mバイト境界で始まる、順次仮想アドレスのブロックである。ページは、例えば4Kバイトにわたり、4Kバイト境界で始まる、順次仮想アドレスのブロックである。
【0069】
従って、仮想アドレスは、4つの基本フィールドに分けられる。ビット0−32は、領域インデックス(RX)と呼ばれ、ビット33−43は、セグメント・インデックス(SX)と呼ばれ、ビット44−51は、ページ・インデックス(PX)と呼ばれ、ビット52−63は、バイト・インデックス(BX)と呼ばれる。
【0070】
仮想アドレス空間は、そのアドレス空間制御要素により決定されるように、1つの領域を含む2Gバイトの空間、又は、最大8G個の領域からなる16Eバイトの空間とすることができる。2Gバイトのアドレス空間に適用される、仮想アドレスのRX部分は、全て0でなければならない。さもなければ、一例では、例外が認識される。
【0071】
仮想アドレスのRX部分は、それ自体が3つのフィールドに分けられる。ビット0−10は領域第1インデックス(RFX)と呼ばれ、ビット11−21は、領域第2インデックス(RSX)と呼ばれ、ビット22−32は領域第3インデックス(RTX)と呼ばれる。
【0072】
図6を参照して、仮想アドレスを実アドレスに変換する一例を説明する。この例において、アドレス空間制御要素400は、テーブル起点402、及び変換のための開始レベルの表示(すなわち、階層アドレス変換内のどのレベルで始まるかの表示)である指定タイプ(DT)制御404を含む。テーブル起点402及びDT404を用いて、特定のテーブルの起点が配置される。次に、テーブルに基づいて、仮想アドレスのビットを用いて特定のテーブルにインデックス付けし、次のレベルのテーブルの起点を得る。例えば、領域第1テーブル406が選択される場合、仮想アドレスのビット0−10(RFX)408を用いて領域第1テーブルにインデックス付けし、領域第2テーブル410の起点を得る。次に、仮想アドレスのビット11−21(RSX)412を用いて領域第2テーブル410にインデックス付けし、領域第3テーブル414の起点を得る。同様に、仮想アドレスのビット22−32(RTX)416を用いて領域第3テーブル414にインデックス付けし、セグメント・テーブル418の起点を得る。次に、仮想アドレスのビット33−43(SX)420を用いてセグメント・テーブル418にインデックス付けし、ページ・テーブル422の起点を得、仮想アドレスのビット44−51(PX)を用いてページ・テーブル422にインデックス付けし、ページ・フレーム実アドレス426を有するページ・テーブル・エントリ(PTE)425を得る。次に、ページ・フレーム実アドレスをオフセット428(ビット52−63)と結合(例えば、連結)して、実アドレスを得る。
【0073】
本明細書に述べられるように、1つの態様において、動的アドレス変換ファシリティは、選択されたアーキテクチャにより与えられる利用可能な機能のセットの中に含まれていない。特に、一例において、DATがサポートされていないことを示すNo−DATファシリティが与えられる。No−DATファシリティは、該ファシリティをインストールし、任意に、該ファシリティがインストールされていることを示す、ファシリティ・ビット、例えばビット140などのインジケータを設定することにより、コンピューティング環境において提供することができる。一例において、ビットが1に設定された場合、ファシリティはインストールされている。1つの実施形態において、ファシリティはファシリティ・ビットを介してイネーブルにされ、他の実施形態においては、ファシリティは他の機構によってイネーブルにすることができる。例えば、仮想ゲストを有する環境においては、ファシリティは、デフォルトでイネーブルにすることができる。
【0074】
さらに、DATファシリティを含まない選択されたアーキテクチャのサブセット又は縮小セットを提供することによって、No−DATファシリティを提供することができる。この環境において、DATファシリティがサポートされていないという明示的な表示がない場合があり、これは単にアーキテクチャに存在しないだけである。1つの実施形態において、No−DATファシリティ(NDAT、ESA/390−No−DAT、又は390NDATとも呼ばれる)は、z/Architectureを実装するモデルにおいて利用可能であり得る。ファシリティは、動的アドレス変換(DAT)がオンの状態で構成がESA/390アーキテクチャ・モードにある可能性を除去する。つまり、NDATファシリティが与えられる場合、ESA/390アーキテクチャ・モードにある構成では、DATをオンにすることができない。1つの実施形態において、DATをオンにする試みにより、No−DAT例外プログラム割り込みが引き起こされる。他の実施形態においては、他のプログラム割り込みコード、又はエラーを示す他の方法が与えられる。さらに別の実施形態においては、エラーは示されないが、DATはディスエーブルにされたままである。
【0075】
1つの実施形態において、ファシリティ用に構成されたプロセッサにおけるNo−DATファシリティをイネーブルにするのはオプションであるが、他の実施形態においては、これは、コンピューティング環境の全てのプロセッサ(又は、さらに別の実施形態においては、選択されたプロセッサ)上で自動的にインストールされ、イネーブルにされる。1つの特定の実施形態において、No−DATファシリティは、ゲスト−2構成(ゲストが別のゲストによって初期化される第2レベルのゲスト)においてインストールされる。こうした構成において、ゲスト−2がESA/390で初期化される場合、DATを使用することはきないが、ゲスト−1及びホスト・プロセッサは、z/Architectureで初期化することができ、従って、DATを使用する。さらに、1つの実施形態において、ゲスト−1又はホストは、ESA/390で開始することができ、No−DATファシリティはイネーブルにされない。従って、ゲスト−1又はホストはDATを使用できるが、No−DATはゲスト−2のためにインストールされ、従って、ESA/390にあるとき、ゲスト−2はDATを使用することができない。
【0076】
複数のアーキテクチャ・モードをサポートするコンピューティング環境においてNo−DATファシリティがインストールされている場合、環境がz/Architectureアーキテクチャ・モードのような第1のアーキテクチャ・モードにあるときは、DATを実行できるが、環境がESA/390アーキテクチャ・モードのような第2のアーキテクチャ・モードにあるときは、DATを実行することができない。一例において、ESA/390アーキテクチャ・モードにあり、NDATが与えられるときにDATを実行しようとする試みは、例えば、No−DAT例外プログラム割り込みをもたらす。他の実施形態においては、エラーを示すために、別のプログラム割り込みが使用される。さらに別の実施形態において、エラーは示されず、実行は進行するが、DATはイネーブルにされない。
【0077】
本明細書に述べられるように、動的アドレス変換機能が構成内に与えられていず、DATをオンにする又はDATを実行する試みがなされるとき、No−DAT例外が認識される。
【0078】
例として、例外は、次の場合に認識される。
1.LOAD PSW命令の実行により、DATをオンにする試みがなされる。PSWを変更する前、ロードされる値はチェックされない。
2.LOAD REAL ADDRESS命令が実行される。実行は抑止され、命令長コードは2に設定される。
3.SET SYSTEM MASK命令の実行により、DATをオンにする試みがなされる。現PSWを変更する前、設定される値はチェックされない。
4.STORE THEN OR SYSTEM MASK命令の実行により、DATをオンにする試みがなされる。現PSWのシステム・マスクを変更する前、システム・マスクに論理和演算される値はチェックされない。
5.ケース1と同様に、割り込みが発生し、割り込み−新PSWは、ビット位置5を1として有する。
【0079】
上述のケースの各々をさらに以下に説明する。
図7を参照して、Load PSW命令に関するさらなる詳細を説明する。1つの実施形態において、Load PSW命令500が、PSWロード操作を示すためのオペコード(opcode)を含むオペコード・フィールド502、ベース・フィールド(B
2)504、及び変位フィールド(D
2)506を含む。B
2フィールドにより指定される汎用レジスタの内容をD
2フィールドの内容に付加して、ストレージ内の第2のオペランドのアドレスを形成する(第2オペランド・アドレスと呼ばれる)。
【0080】
Load PSW命令の操作において、現PSWは、第2オペランド・アドレスによって指定される位置におけるダブルワードの内容から形成された16バイトのPSWに置き換えられる。
【0081】
ダブルワードのビット12は1となり、そうでない場合には、モデルに応じて、指定例外が認識され得る。構成z/Architectureアーキテクチャ・モード(CZAM)ファシリティがインストールされている場合、ダブルワードのビット12が1ではない場合、指定例外が認識される。1つの実施形態において、CZAMファシリティは、コンピューティング環境(例えば、プロセッサ、LPAR、ゲスト)を再構成するので、マルチ・アーキテクチャによりサポートされる環境における、ESA/390のようなアーキテクチャの1つ又は複数の態様はもはやサポートされない。CZAMのインストールは、パワーオン、リセット等のようなコンピューティング環境の特定のプロセスに影響を与える。例えば、CZAMがインストールされ、イネーブルにされている場合、パワーオン又はリセット・シーケンスは、例えばESA/390ではなくz/Architectureを開始する。CZAMの態様は、同時出願された、同一出願人による、Gainey他の「Architectural Mode Configuration」という名称の出願(IBM整理番号第POU920140021US1)に記載されている。
【0082】
ダブルワードのビット0−32は、ビット12が反転されることを除いて、現PSWの位置0−32に入れられる。ダブルワードのビット33−63は、現PSWの位置97−127に入れられる。現PSWのビット33−96は、0に設定される。
【0083】
シリアル化及びチェックポイント同期機能は、オペランドのフェッチ前又は後、及び再び操作の完了後に実行される。
【0084】
オペランドは、ダブルワード境界上で指定され、そうでない場合には、指定例外が認識される。モデルによって、オペランドのビット12が0である場合、指定例外が認識され得る。
【0085】
命令によってロードされるPSWフィールドは、ビット12のチェックを除き、それらがロードされる前に、妥当性に関してチェックされない。しかしながら、ロードの直後、指定例外が認識され、新しくロードされたPSWに関して以下のいずれかが真であるとき、プログラム割り込みが発生する。
*ビット0、2−4、12、又は24−30のいずれかが1である。
*ビット31及び32の両方とも0であり、ビット97−103は全て0ではない。
*ビット31及び32は、それぞれ、1及び0である。
これらの場合、操作は完了し、結果として得られる命令長コードは0である。
【0086】
全てのアドレッシング及び保護例外において、操作は抑止される。
結果の条件コード:コードは、ロードされた新しいPSWにおいて指定されるように設定される。
プログラム例外:
*アクセス(フェッチ、オペランド2)
*特権操作
*指定
プログラミング上の注意:第2のオペランドは、ESA/390 PSWの形式を有するべきである。オペランドのビット12が0である場合、PSWロードの実行中又は実行後、指定例外が認識される。
【0087】
PSWに関する更なる詳細が、非特許文献5に記載される。
【0088】
図8を参照して、プログラム状況ワード(PSW)の形式の1つの実施形態を説明する。
図8を参照すると、この例では、プログラム状況ワードの形式は、以下に示されるようにビット31がEAとして示される点を除いて、ESA/390の形式である。
【0089】
1つの実施形態において、プログラム状況ワード600は、一例として、以下のフィールドを含む。
【0090】
マスク毎(Per Mask)(R)602:ビット1は、CPUがプログラム・イベント記録(PER)と関連した割り込みに関してイネーブルにされるかどうかを制御する。ビットが0である場合、PERイベントが割り込みを引き起こすことはない。ビットが1である場合、割り込みは許容され、制御レジスタ9内のPERイベント・マスク・ビットに左右される。
【0091】
DATモード(T)604:ビット5は、ストレージにアクセスするのに用いられる論理及び命令アドレスの暗黙的な動的アドレス変換(DAT)が行われるかどうかを制御する。ビットが0である場合、DATはオフであり、論理及び命令アドレスは実アドレスとして扱われる。ビットが1である場合、DATはオンであり、動的アドレス変換機構が呼び出される。
【0092】
I/Oマスク(IO)606:ビット6は、CPUが、I/O割り込みに関してイネーブルにされるかどうかを制御する。ビットが0である場合、I/O割り込みが発生することはない。ビットが1である場合、I/O割り込みは、制御レジスタ6内のI/O割り込みサブクラス・マスク・ビットに左右される。I/O割り込みサブクラス・マスク・ビットが0である場合、そのI/O割り込みサブクラスに対するI/O割り込みが発生することはなく、I/O割り込みサブクラス・マスク・ビットが1である場合、そのI/O割り込みサブクラスに対するI/O割り込みが発生することがある。
【0093】
外部マスク(EX)608:ビット7は、CPUが、外部クラス内に含まれる条件による割り込みに関してイネーブルにされるかどうかを制御する。ビットが0である場合、外部割り込みが発生することはない。ビットが1である場合、外部割り込みは、制御レジスタ0内の対応する外部サブクラス・マスク・ビットに左右される。サブクラス・マスク・ビットが0である場合、サブクラスと関連した条件が割り込みを発生させることはない。サブクラス・マスク・ビットが1である場合、そのサブクラス内の割り込みが発生し得る。
【0094】
PSWキー(キー)610:ビット9−11は、CPUによるストレージ参照のためのアクセス・キーを形成する。参照がキー制御保護を受ける場合、情報が格納されるとき又はフェッチから保護される記憶位置から情報がフェッチされるとき、PSWキーがストレージ・キーと適合される。しかしながら、Move to Primary、Move to Secondary、Move with Key、Move with Source Key、及びMove with Destination Keyの各々のオペランドの1つ、並びに、Move with Optional Specificationsのいずれか又は両方のオペランドでは、オペランドとして指定されるアクセス・キーが、PSWキーの代わりに使用される。
【0095】
ビット12 612:このビットは、現在のアーキテクチャ・モードを示す。このビットは、ESA/390 PSW形式の場合、1に設定される。z/Architecture PSW形式の場合、このビットは、0になるように定められる。z/Architectureモードにあるとき、真のz/Architecture PSW(命令アドレスをビット64−127に有することを含む、本明細書で説明される形式とは異なる形式を有する)をロードするために、load PSW extended(ロードPSW拡張)(LPSWE)命令が定められる。しかしながら、ESA/390ロードPSW(LPSW)は依然としてサポートされ、これを用いてESA/390形式のPSWをロードすることができる。LPSWが実行され、コンピューティング環境がz/Architectureモードにあるとき、プロセッサは、ESA/390形式のPSWを、ビット12を反転させることを含む、z/Architecture形式に拡張する。これは、オペレーティング・システムが、ESA/390形式のPSWを生成するために実行するz/ArchitectureのPSW形式を折りたたむ(collapse)のと逆である。つまり、ESA/390及びz/Architectureの両方をサポートするコンピューティング環境において、PSWのコピーはストレージ内に入れられ、オペレーティング・システムは、完全なz/Architecture PSWを、ESA/390 PSWのサイズ及び形式に折りたたむ。従って、PSW形式の依存関係を用いる他のソフトウェアは、z/Architecture PSWに気付くことができない。
【0096】
マシン・チェック・マスク(M)614:ビット13は、CPUが、マシン・チェック条件による割り込みに対してイネーブルにされるかどうかを制御する。ビットが0である場合、マシン・チェック割り込みが発生することはない。ビットが1である場合、システム損傷及び命令処理損傷に起因するマシン・チェック割り込みが許容されるが、他のマシン・チェック・サブクラス条件に起因する割り込みは、制御レジスタ14内のサブクラス・マスク・ビットに左右される。
【0097】
待機状態(W)616:ビット14が1である場合、CPUは待機中である、つまり、命令はCPUにより処理されず、割り込みが発生し得る。ビット14が0である場合、命令のフェッチ及び実行は、通常の方法で行われる。ビットが1である場合、待機インジケータは1である。
【0098】
問題状態(P)618:ビット15が1である場合、CPUは問題状態(problem state)にある。ビット15が0である場合、CPUは、スーパーバイザ状態(supervisor state)にある。スーパーバイザ状態においては、全ての命令が有効である。問題状態においては、意味のある情報を問題プログラムに提供し、かつ、システムの完全性に影響を与えることのない命令のみが有効であり、そうした命令は、非特権(unprivileged)命令と呼ばれる。問題状態において有効ではない命令は、特権(priviledged)命令と呼ばれる。問題状態において、CPUが特権命令を実行しようと試みるとき、特権操作例外が認識される。準特権命令と呼ばれる命令の別のグループは、特定の権限試験が満たされる場合にのみ、問題状態においてCPUにより実行され、そうでない場合には、違反した特定の要件に応じて、特権操作例外又は何らかの他のプログラム例外が認識される。
【0099】
アドレス空間制御(AS)620:ビット16及び17は、PSWビット5と共に、変換モードを制御する。
【0100】
条件コード(CC)622:ビット18及び19は、条件コードの2つのビットである。条件コードは、特定の命令の実行において得られる結果に応じて、0、1、2、又は3に設定される。大部分の算術及び論理演算、並びに一部の他の演算が、条件コードを設定する。命令BRANCH ON CONDITIONは、分岐のための基準として、条件コード値の任意の選択を指定することができる。
【0101】
プログラム・マスク624:ビット20−23は、4つのプログラム・マスク・ビットである。各ビットは、次のように、プログラム例外と関連付けられる。
【表1】
【0102】
マスク・ビットが1のとき、例外は割り込みをもたらす。マスク・ビットが0のとき、割り込みは発生しない。HFP・有効数字・マスク・ビットのHFP・指数・アンダー・フロー・マスク・ビットの設定もまた、対応する例外が発生するときに演算が完了する方式を決定する。
【0103】
拡張アドレッシング・モード(EA)626:ビット31は、ビット32、即ち基本アドレッシング・モード・ビットと併せて、有効アドレス(effective address)のサイズ及び有効アドレス生成を制御する。ビット31が0の場合、アドレッシング・モードは、ビット32により制御される。ビット31及び32が両方とも1の場合、64ビット・アドレッシングが指定される。
【0104】
基本アドレッシング・モード(BA)628:ビット31及び32は、有効アドレスのサイズ及び有効アドレスの生成を制御する。ビット31及び32の両方が0の場合、24ビット・アドレッシングが指定される。ビット31が0であり、ビット32が1である場合、31ビット・アドレッシングが指定される。ビット31及び32の両方とも1である場合、64ビット・アドレッシングが指定される。ビット31 1及びビット32 0は、指定例外を認識させる無効な組み合わせである。アドレッシング・モードは、DAT、ASN、ディスパッチ可能ユニット制御、リンケージ、エントリ、及びトレース・テーブル又はアクセス・リスト又はリンケージ・スタックにアクセスするのに用いられる、PERアドレス又はアドレスのサイズを制御しない。PSWのビット31及び32によるアドレッシング・モードの制御は、次のように要約される。
【表2】
命令アドレス630:PSWのビット33−63は、命令アドレスである。アドレスは、CPUが待機状態(PSWのビット14が1)でない限り、実行される次の命令の左端バイトの位置を指定する。
【0105】
上述のように、Load PSW命令に加えて、Load Real Address命令により、No−DAT例外が認識され得る。
【0106】
図9−
図11において、Load Real Address命令の例示的な形式が示される。
図9に示されるように、1つの実施形態において、Load Real Address命令700は、例えば、実アドレス・ロード操作を示すオペコードを有するオペコード・フィールド702、第1のレジスタ・フィールド(R
1)704、インデックス・フィールド(X
2)706、ベース・フィールド(B
2)708、及び変位フィールド(D
2)710を含む。
【0107】
別の実施形態において、
図10を参照すると、Load Real Address命令720が、例えば、実アドレス・ロード操作を示すオペコードを有するオペコード・フィールド722a、722b、第1のレジスタ・フィールド(R
1)724、インデックス・フィールド(X
2)726、ベース・フィールド(B
2)728、及び複数の変位フィールド(DL
2、DH
2)730a、730bを含む。
【0108】
さらに別の実施形態において、
図11を参照すると、Load Real Address命令740が、例えば、実アドレス・ロード操作を示すオペコードを有するオペコード・フィールド742a、742b、第1のレジスタ・フィールド(R
1)744、インデックス・フィールド(X
2)746、ベース・フィールド(B
2)748、及び複数の変位フィールド(DL
2、DH
2)750a、750bを含む。
【0109】
上記の形式において、R
1は、第1のオペランドを含む汎用レジスタを指定し、X
2及びX
2フィールドにより指定された汎用レジスタの内容をD
2フィールド又はDH
2及びDL
2フィールドの内容に付加して、第2オペランド・アドレスを形成する。
【0110】
24ビット又は31ビット・アドレッシング・モードにおけるLoad Real Address(LRA、LRAY)の場合、第2のオペランド仮想アドレスに対応する64ビットの実アドレス又は絶対アドレスのビット0−32が全て0である場合、実アドレス又は絶対アドレスのビット32−63は、汎用レジスタR
1のビット位置32−63に入れられ、レジスタのビット0−31は変更されないままである。実アドレス又は絶対アドレスのビット0−32が全て0ではない場合、特殊操作例外が認識される。
【0111】
64ビット・アドレッシング・モードにおけるLRA又はLRAY、及び、いずれかのアドレッシング・モードにおけるLoad Real Address(LRAG)の場合、第2のオペランドの仮想アドレスに対応する64ビットの実アドレス又は絶対アドレスは、汎用レジスタR
1に入れられる。
【0112】
EDAT−1(強化されたDAT−1)が適用されないとき、又はEDAT−1が適用されるが、第2のオペランドが、STE形式制御が0であるセグメント・テーブル・エントリ(STE)を用いて変換されるとき、汎用レジスタR
1に入れられるアドレスは、実アドレスである。EDAT−1が適用され、第2のオペランドが、STE形式制御が1であるセグメント・テーブル・エントリを用いて変換されるとき、又は、EDAT−2が適用され、第2のオペランドが、RTTE形式制御が1である領域第3テーブル・エントリを用いて変換されるとき、汎用レジスタR
1に入れられるアドレスは、絶対アドレスである。
【0113】
X
2、B
2及びD
2フィールドにより指定される仮想アドレスは、DATがオンであるか又はオフであるかに関係なく、動的アドレス変換ファシリティによって変換される。
【0114】
LRAについての変位は、12ビットの符号なし2進整数として扱われる。LRAY及びLRAGについての変位は、20ビットの符号付き2進整数として扱われる。
【0115】
次のテーブルに示されるように、DATは、PSWのアドレス空間制御ビット、すなわちビット16及び17の現在の値に依存するアドレス空間制御要素を用いて実行される。
【表3】
【0116】
ART及びDATは、それぞれ、ARTルックアサイド・バッファ(ALB)及び変換ルックアサイド・バッファ(TLB)を用いて実行することができる。
仮想アドレス計算は、現PSWのビット31及び32により指定される現在のアドレッシング・モードに従って行われる。
【0117】
使用されるならば領域テーブル・エントリ(単数又は複数の)のアドレス、並びに使用されるならばセグメント・テーブル・エントリ及びページ・テーブル・エントリのアドレスは、現在のアドレッシング・モードに関係なく、64ビットのアドレスとして扱われる。これらのエントリのアドレスが実アドレスとして扱われるか又は絶対アドレスとして扱われるかは、予測不能である。
【0118】
該当する場合はART及びDATの両方を完了することができるとき、条件コード0が設定され、特殊操作例外は認識されない、つまり、アドレス空間制御要素を得ることができるとき、各DATテーブルのエントリはテーブル内にあり、0のIビットを有し、24ビット又は31ビット・アドレッシング・モードにおけるLRA又はLRAYにおいては、結果として得られる実アドレス又は絶対アドレスのビット0−32は0である。変換されたアドレスは、境界合わせ、又はアドレッシング若しくは保護例外に関して検査されない。
【0119】
PSWのビット16及び17が01(2進法)であり、通常、以下に示される例外の1つを引き起こす条件のためにアドレス空間制御要素を取得できない場合、(1)例外に割り当てられた割り込みコードは汎用レジスタR
1のビット位置48−63に入れられ、このレジスタのビット32は1に設定され、ビット33−47は0に設定され、ビット0−31は変更されないままであり、及び(2)条件コード3を設定することにより、命令は完了する。
【表4】
【0120】
ARTが正常に完了した場合、DATの実行により動作は続行する。
【0121】
セグメント・テーブル・エントリがテーブル外にあり、エントリの実アドレス又は絶対アドレスのビット0−32が全て0である場合、条件コード3が設定され、エントリ・アドレスのビット32−63は汎用レジスタR
1のビット位置32−63に入れられ、レジスタのビット0−31は変更されないままである。アドレスのビット0−32が全て0ではない場合、結果は以下に示される通りである。
【0122】
64ビット・アドレッシング・モードのLRA又はLRAY、又は、いずれかのアドレッシング・モードのLRAGにおいて、セグメント・テーブル・エントリにおけるIビットが1である場合、条件コード1が設定され、セグメント・テーブル・エントリの64ビットの実アドレス又は絶対アドレスが汎用レジスタR
1に入れられる。この場合、LRA又はLRAYが24ビット又は31ビット・アドレッシング・モードにあることを除いて、セグメント・テーブル・エントリのアドレスのビット0−32が全て0である場合、汎用レジスタR
1のビット0−31が変更されないままであることを除いて、結果は同じである。アドレスのビット0−32が全て0ではない場合、結果は以下に示される通りである。
【0123】
64ビット・アドレッシング・モードのLRA又はLRAY、又は、いずれかのアドレッシング・モードのLRAGにおいて、ページ・テーブル・エントリにおけるIビットが1である場合、条件コード2が設定され、ページ・テーブル・エントリの64ビットの実アドレス又は絶対アドレスが汎用レジスタR
1に入れられる。この場合、LRA又はLRAYが24ビット又は31ビット・アドレッシング・モードにあることを除いて、ページ・テーブル・エントリのアドレスのビット0−32が全て0である場合、汎用レジスタR
1のビット0−31が変更されないままであることを除いて、結果は同じである。アドレスのビット0−32が全て0ではない場合、結果は以下に示される通りである。
【0124】
変換の試行の際に用いられるアドレスのタイプに従って、汎用レジスタR
1に入れられたセグメント・テーブル・エントリ又はページ・テーブル・エントリは、実アドレス又は絶対アドレスである。
【0125】
一般に、以下に示される例外の1つを引き起こす条件が存在する場合、(1)例外に割り当てられた割り込みコードが汎用レジスタR
1のビット位置48−63に入れられ、このレジスタのビット32が1に設定され、ビット33−47が0に設定され、ビット0−31は変更されないままであり、かつ(2)条件コード3を設定することにより、命令が完了する。
【表5】
【0126】
特別な条件
24ビット又は31ビット・アドレッシング・モードにおけるLRA又はLRAYにおいて、結果として得られる64ビットの実アドレスのビット0−32が全て0ではない場合、特殊操作例外が認識される。
【0127】
有効アクセス・リスト指定又はALE、ASTE、又は権限テーブル・エントリをフェッチするためにARTによって使用されるアドレスが、その構成内で利用不能な位置を指定するとき、或いは、領域テーブル・エントリ(単数又は複数)、もしあれば、セグメント・テーブル・エントリ、又はページ・テーブル・エントリが、その構成内で利用不能な位置を指定するとき、アドレス指定例外が認識される。
【0128】
アクセスされた領域テーブル・エントリ又はセグメント・テーブル・エントリ又はページ・テーブル・エントリが0のIビット及び形式エラーを有するとき、変換指定例外が認識される。
【0129】
領域テーブル・エントリ又はセグメント・テーブル・エントリのアドレスを計算するために行われた加算の結果としてのビット位置0の繰り上がりは、無視することができ、又はアドレス指定例外をもたらし得る。
【0130】
全てのアドレス指定例外について、動作は抑止される。
結果の条件コード:
0 変換が利用可能
1 セグメント・テーブル・エントリが無効(Iビットが1)
2 ページ・テーブル・エントリが無効(Iビットが1)
3 アドレス空間制御要素が利用不能、領域テーブル・エントリがテーブル外又は無効(Iビットが1)、セグメント・テーブル・エントリがテーブル外、又はエントリ・アドレスのビット0−32が全て0ではない場合、LRA及びLRAYのみ及び24ビット又は31ビット・アドレッシング・モードにおいてのみ、セグメント・テーブル・エントリ又はページ・テーブル・エントリが無効(Iビットが1)。
【0131】
プログラム例外
*アドレス指定(有効アクセス・リスト指定、アクセシ・リスト・エントリ、ASN第2テーブル・エントリ、権限テーブル・エントリ、領域テーブル・エントリ、セグメント・テーブル・エントリ、又はページ・テーブル・エントリ)
・操作(長変位ファシリティがインストールされていない場合、LRAY)
・特権操作
・特殊操作(LRA、LRAYのみ)
・変換制約
・変換指定
【0132】
プログラミング上の注意
1.マルチプロセッシング構成におけるLoad Real Addressの使用において、注意を払うべきである。他のCPUのTLBにおける対応するエントリがクリアされる前に、DATテーブル・エントリ無効化又はページ・テーブル・エントリ無効化によりストレージ内のIビットを1に設定できるので、このCPU上でのLoad Real Address及びDATテーブル・エントリ無効化又はページ・テーブル・エントリ無効化のいずれかを同時に実行すると、矛盾した結果がもたらされる。Load Real Addressでは、ストレージ内のテーブルにアクセスできるので、対応するTLBエントリがまだクリアされていなくても、領域テーブル・エントリ、セグメント・テーブル・エントリ又はページ・テーブル・エントリは、無効のように見えることがあり(それぞれ、条件コード3、1又は2)、他のCPU上のDATテーブル・エントリ無効化又はページ・テーブル・エントリ無効化の完了まで、TLBエントリがTLB内に残っていることがある。Load Real Addressの完了からTLBがエントリをクリアするまでの間に実行され得る命令の数に対する保証された制限はない。
【0133】
Load Real Addressを使用するための上記の注意は、DATテーブル・エントリ内に無効ビットを明示的に設定するために、Compare And Swap And Purge又はCompare And Replace DAT Table Entryが使用されるときにも当てはまる。
【0134】
Load PSW及びLoad Real Address命令に加えて、Set System Mask命令によってもNo−DAT例外が認識され得る。
【0135】
図12を参照して、Set System Mask命令の形式の本発明の1つの好ましい実施形態を説明する。
図12を参照すると、Set System Mask命令800が、例えば、システム・マスク設定操作を指定するためのオペコード(opcode)を含むオペコード・フィールド802、ベース・フィールド(B
2)804、及び変位フィールド(D
2)806を含む。
【0136】
動作において、現PSWのビット0−7は、第2オペランド・アドレス(B
2により指定された汎用レジスタの内容を変位フィールドの値に付加することによって形成された)によって指定される位置におけるバイトに置き換えられる。
【0137】
特別な条件
SSM抑止制御ビット(制御レジスト0のビット33)が1であり、CPUがスーパーバイザ状態(supervisorstate)にあるとき、特殊操作例外が認識される。
【0138】
PSWのビット位置0及び2−4の内容が全て0ではない場合、ロードする前、PSWにロードされる値は、妥当性に関してチェックされず、指定例外が認識され、プログラム割り込みが発生する。この場合、命令は完了し、命令長コードは2に設定される。指定例外は、この命令についてのプログラム例外として列挙される。この例外は、この命令の実行により引き起こされるもの、又は後の命令の実行を準備するプロセスの初期に発生するものと考えることができる。
【0139】
全てのアドレス指定及び保護例外において、動作は抑止される。
条件コード:コードは変更されないままである。
プログラム例外:
*アクセス(フェッチ、オペランド2)
*特権操作
*特殊操作
*指定
*変換制約
【0140】
さらに、Store Then OR Sytem Mask命令により、No−DAT例外が認識され得る。
図13を参照して、Store Then OR Sytem Mask命令の形式の本発明の1つの好ましい実施形態を説明する。
図13を参照すると、Store Then OR Sytem Mask命令900が、例えば、Store Then OR System Mask(システム・マスクをストアし、次に論理和演算する)操作を指定するためのオペコード(opcode)を含むオペコード・フィールド902、即値フィールド(I
2)904、ベース・フィールド(B
1)906、及び変位フィールド(D
1)908を含む。一例において、B
1により指定されるレジスタの内容を変位フィールドに付加して、第1のオペランドのアドレスを与える。即値フィールドは第2のオペランドである。
【0141】
動作において、現PSWのビット0−7は、第1のオペランドの位置に格納される。次に、現PSWのビット位置0−7の内容は、そのオリジナルの内容及び第2のオペランド(I
2フィールド)の論理ORに置き換えられる)。
【0142】
特別な条件
ロードする前、PSWにロードされる値は、妥当性に関してチェックされない。しかしながら、ロードした直後、指定例外が認識され、PSWのビット位置0及び2−4の内容が全て0ではない場合、指定例外が認識され、プログラム割り込みが発生する。この場合、命令が完了し、命令長コードが2に設定される。指定例外がプログラム例外として列挙される。これは、次の命令の実行を準備するプロセスの初期に発生するものと考えることができる。
アドレス指定及び保護例外において、動作が抑止される。
条件コード:コードは変更されないままである。
プログラム例外:
・アクセス(ストア、オペランド1)
・特権操作
・指定
・変換制約
【0143】
プログラミング上の注意:Store Then OR Sytem Mask命令により、後の復元のために、オリジナルの内容を保持しながら、プログラムを、システム・マスク内の選択されたビット1に設定することができる。例えば、プログラムは、外部マスク・ビットの現在の状況を利用可能にする必要なしに、I/O割り込みに関してCPUをイネーブルにすることができる。
【0144】
上述したケース1(Load PSW)及び3−5(Set System Mask、Store Then Or Sytem Mask、割り込み)において、PSWのビット5を0から1に変更した直後、No−DAT例外が認識され、プログラム割り込みが発生する。これらの場合、適用できる場合、命令実行又はPSWスワップが完了し、命令長コードは0となる。No−DAT例外は、次の順次命令(next sequential instruction)の実行を準備するプロセスの初期に発生するものと考えることができる。従って、プログラム旧PSWにより指定された命令アドレスに配置された命令が無効化される。No−DAT例外は、003D(16進数)(又は、同時PERイベントが示される場合は、00BD(16進数))のプログラム割り込みコードで示される。
【0145】
割り込みは、現PSWを旧PSWとして格納すること、割り込みの原因を識別する情報を格納すること、及び新PSWをフェッチすることを含む。処理は、新PSWにより指定されるように再開する。
【0146】
割り込みにおいて格納される旧PSWは、通常、割り込みが発生しなかった次に実行された命令のアドレスを含んでおり、従って、割り込まれたプログラムの再開を可能にする。プログラム及びスーパーバイザ呼び出し(supervisor-call)割り込みにおいては、格納される情報は、最後に実行された命令の長さを識別するコードも含み、従って、プログラムが、割り込みの原因に応答するのを可能にする。通常の応答が、割り込みを引き起こす命令の再実行である幾つかのプログラム条件の場合、命令アドレスは、最後に実行された命令を直接識別する。
【0147】
再開を除いて、CPUが動作状態にあるときのみ、割り込みが発生し得る。
【0148】
PER基本イベントを除いて、プログラム割り込みにより、1つのプログラム割り込み条件だけが示される。しかしながら、1つの条件の存在により、他の条件の存在は妨げられない。1つより多いプログラム割り込み条件が存在する場合、一例では、割り込みコードにおいて、割り込みコードにおいて、最も高い優先順位を有する条件が識別される。同じ優先順位の複数の条件が適用される場合、どれが示されるかは予測不能である。
【0149】
同じストレージ・オペランドの複数の部分が別個のアクセス制御の対象になるとき、その部分と関連したアクセス例外の優先順位は予測不能であり、かつ、必ずしも、オペランド内のバイトのアクセスについて指定されたシーケンスに関連しない。例えば、(a)MOVE(MVC)命令の第1のオペランドがセグメント境界を超え、(b)オペランドの左端部分を変換するのに用いられるセグメント・テーブル・エントリにおいて無効ビットが1であり、及び(c)オペランドの右端部分を変換するのに用いられる有効ページ・テーブル・エントリにおいてDAT保護ビットが1である場合、セグメント変換例外が認識されるか又は保護例外が認識されるかは予測不能である。
【0150】
命令が2つのストレージ・オペランドを有し、両方のオペランドについてアクセス例外条件が存在する場合、どの条件が認識されるかは予測不能である。同じ命令(同じ例外条件を有する)の後の実行により、第1の実行と同じオペランド、又は他のオペランドに関して例外条件が認識され得る。
【0151】
発生する終了のタイプ(無効化、抑止、又は終了)は、割り込みコードにおいて示される例外のタイプについて定められるものである。しかしながら、終了を許可する条件が示され、無効化又は抑止のいずれかを引き起こす別の条件も存在する場合、操作単位は抑止される。
【0152】
図14を参照して、複数のアーキテクチャ・モードをサポートするコンピューティング環境においてNo−DATファシリティを提供することと関連した処理の本発明の1つの実施形態を説明する。この特定の例において、両方のアーキテクチャ・モードは、選択されたアーキテクチャ機能(すなわち、各々が、例えばDATを含むように定められる)用に構成されるが、第1のアーキテクチャ・モードが機能をサポートする一方で、第2のアーキテクチャ・モードにおいて機能が除去され(例えば、サポートされない、バイパスされる、アーキテクチャから排除される等)、DATのオン及び/又はオフ制御がある場合でもこの機能をオンにすることができない。
【0153】
図14を参照すると、一例において、コンピューティング環境が、複数のアーキテクチャ:すなわち、選択されたアーキテクチャ機能(例えば、DAT)用に構成され、これをサポートする第1のアーキテクチャ(例えば、強化されたアーキテクチャ、例えばz/Architecture)、及び、選択されたアーキテクチャ機能用に構成されるが、これを選択的に除去する第2のアーキテクチャ(例えば、レガシー・アーキテクチャ、例えばESA/390)を同時にサポートするように構成される(ステップ1000)。機能を除去する(No−DATをオンにする、又はNo−DATを恒久的な工場で実装済みのオプションとして提供する)際、別の制御が、DATをオンにするように設定されている場合でも、DATをオンにすることはできない。
【0154】
コンピューティング環境のプロセッサが、選択されたアーキテクチャ機能を含む操作を実行する要求を取得する(ステップ1002)。プロセッサが、第2のアーキテクチャに基づく第2のアーキテクチャ・モードで処理を行っているかどうかについての判断がなされる(問い合わせ1004)。プロセッサが、第1のアーキテクチャ、例えばz/Architectureなどの、第2のアーキテクチャとは異なるアーキテクチャ・モードで処理を行っている場合、選択されたアーキテクチャ機能が実行される(ステップ1006)。
【0155】
問い合わせ1004に戻ると、プロセッサが第2のアーキテクチャ・モードにある場合、選択されたアーキテクチャ機能が除去されたかどうかについての判断がなされる(問い合わせ1008)。本発明の1つの好ましい実施形態において、これは、ファシリティ・インジケータ及び/又は別のインジケータをチェックすることにより判断される。機能が除去されていない(例えば、No−DATがインストールされていない)場合、選択されたアーキテクチャ機能(例えば、DAT)が実行される(ステップ1006)。そうでない場合、選択されたアーキテクチャ機能は実行されないという表示が与えられる(ステップ1010)。例えば、エラーが与えられる。エラーは例外とすることができ、既知の例外タイプ又は新しい例外タイプのいずれかを用いることができる。
【0156】
上記の例において、第2のアーキテクチャ・モードはDAT用に構成されるが、別の実施形態においては、DATがアーキテクチャから除去され、第2のアーキテクチャ・モードは、DAT用に構成されず、代わりに、第2のアーキテクチャは、1つ又は複数の選択されたアーキテクチャ機能(DATなどの)がないアーキテクチャの縮小セットを含む。この場合、DATは、アーキテクチャから除去されるとも言われる。
【0157】
本発明の更に別の好ましい実施形態において、NDATファシリティは、ページング可能ストレージ・モード・ゲストを含むコンピューティング環境内に含まれる。そうした環境において、一例では、ホストは、第1のアーキテクチャ・モード(例えば、z/Architecture)で初期化及び処理され、ゲストは、第1のアーキテクチャ・モード又は第2のアーキテクチャ・モード(例えば、ESA/390又はそのサブセット)のような別のアーキテクチャ・モードのいずれかで初期化することができる。ESA/390アーキテクチャ・モードにおけるページング可能ストレージ・モード・ゲストにおいて、No−DATファシリティがインストールされている場合、一例において、次のアクションが行われる。
1.本発明の1つの好ましい実施形態において、NDATがインストールされている場合、ゲストは、状態制御内に存在する他のインジケータ(例えば、ありとあらゆる他のインジケータ)に関係なく、DATが与えられていないかのように有効に振る舞い、他の場合には、DAT若しくは他のフィーチャの可用性を支配できる仮想環境における実行を制御する。
2.DAT機能をイネーブルにし、DAT機能を使用し、又はDAT機能の存在を必要とする命令(例えば、これに限定されるものではないが、LRA命令を含む)を実行する試みがなされた場合、No−DAT例外プログラム割り込みが提示される。
【0158】
図15−
図16を参照して、ゲスト環境においてNo−DATファシリティを提供するための論理の、本発明の1つの好ましい実施形態を説明する。
図15を参照すると、ホストが第1のアーキテクチャ・モード(例えば、z/Architecture)で処理を行い(ステップ1100)、ホストは1つ又は複数のゲスト仮想マシンを開始するためのstart interpretative execution(解釈実行開始)命令を発行する(ステップ1102)。第1のゲスト仮想マシンは、第1のアーキテクチャ・モードで処理を行っており、第1のアーキテクチャ・モードは、第1の命令セット・アーキテクチャを有し、第1セットのアーキテクチャ機能を含む(ステップ1104)。しかしながら、第2のゲスト仮想マシンは、第2のアーキテクチャ・モードで処理を行い(ステップ1106)、第2のアーキテクチャ・モードは、第2の命令セット・アーキテクチャ・モードを有し、第2セットのアーキテクチャ機能を含む。第2セットのアーキテクチャ機能は、第1セットの縮小セットであり、そこには、1つ又は複数の機能(例えば、DATなどの選択されたアーキテクチャ機能)が存在しない。従って、第2のアーキテクチャ機能は、DATなどの機能を禁止する機能禁止(function inhibit)モードである。一例では、選択されたアーキテクチャ機能の不存在は、ファシリティ・ビットにより示される。しかしながら、1つ又は複数の実施形態において、これはオプションである。
【0159】
本発明の1つの特定の好ましい実施形態において、第1のアーキテクチャ・モードは、64ビット・アドレッシングを含み、64ビットの汎用レジスタを使用し、第2のアーキテクチャ・モードは、31ビット・アドレッシングを含み、32ビットの汎用レジスタを使用する。
【0160】
第2のゲスト仮想マシンは、第2のアーキテクチャ・モードで処理を行い、この処理は、第2のゲスト仮想マシンの実行を制御するのに用いることができる選択されたアーキテクチャ機能と関連した1つ又は複数の制御をオーバーライドする(ステップ1108)。例えば、DATがオンであることを示すためにインジケータが使用される場合、このインジケータは、第2のゲスト仮想マシンに対してNo−DATファシリティがインストールされているときにオーバーライドされる制御である。更に別の例として、仮想マシンに対応するアーキテクチャの指定は、特定のフィーチャの可用性を制御し、この指定は、NDATファシリティによりオーバーライドされる制御でもある。オーバーライドされる制御の他の例も可能である。
【0161】
本発明の1つの好ましい実施形態において、第2のゲストは、選択された機能(例えば、DAT)を使用する又はイネーブルにする操作を実行する要求を取得する(ステップ1120)。第2のゲストが第2のアーキテクチャ・モードで処理を行っているかどうかについての判断がなされる(問い合わせ1122)。第2のゲストが第2のアーキテクチャ・モードで処理を行っていない場合、操作を実行することができ、選択されたアーキテクチャ機能を使用する又はイネーブルにすることができる(ステップ1124)。しかしながら、第2のゲストが第2のアーキテクチャ・モードで処理を行っており、従って、選択された機能がサポートされていない(すなわち、選択された機能が除去される)場合、操作は実行されず(ステップ1126)、エラーが与えられる(ステップ1128)。
【0162】
上述した本発明の好ましい実施形態において、両方のゲストとも、レベル1のゲスト(すなわち、各々がホストによって初期化される)であるが、更に別の例では、1又は複数のゲストは、ゲストが別のゲストにより開始される第2レベルのゲストである。本発明のこのような好ましい実施形態において、第2レベルのゲストは、ESA/390で処理が行われ、No−DATがデフォルトである。つまり、ESA/390で開始した第2レベルのゲストは、様々に指示し得る他の制御(例えば、SIE制御)に関係なく、DATを使用しない。DATに関する他のいずれの制御もオーバーライドされる。さらに、本発明の1つの好ましい実施形態において、第1レベル・ゲスト及び/又はホストがESA/390でも又はz/ArchitectureでもDATを実行できたとしても、これは、第2レベル・ゲストについてのデフォルトである。本発明のさらに別の好ましい実施形態において、ESA/390仮想マシンは、ゲスト−2仮想マシンとして生成することしかできず、ホスト及びゲスト−1モードの一方又は両方において利用可能ではない。
【0163】
第2のアーキテクチャ・モードにおけるNo−DATファシリティの提供を特に参照して、機能を説明してきたが、本明細書に説明される態様は、1つのアーキテクチャ・モードにおいてディスエーブルにすることができ、ゲスト又はホスト環境の更に別のアーキテクチャ・モードにおいて提供できる他のプロセッサ機能に適用することができる。
【0164】
本明細書に説明されるのは、命令セットを提供し、かつ、命令及びデータについての、アーキテクチャのデータ・アドレス変換を排除するための能力である。1つの実施形態にさらに説明されるのは、特定のアーキテクチャからデータ・アドレス変換を除去するための制御である。1つの実施形態において、除去することは、制御レジスタに従い、更に別の実施形態においては、1つ又は複数のデフォルト・モードに従い、例えばゲスト2などのデータ・アドレス変換の除去を自動的にイネーブルにする。さらに、本発明の1つの好ましい実施形態において、DATが除去されたときにDATをイネーブルにする及び/又は使用する試みを示すために割り込みが与えられる。さらに、1つ又は複数の実施形態において、仮想環境のための動作モードが与えられる。
【0165】
本明細書で説明されるように、特定のアーキテクチャから、DAT変換のような選択された機能を除去するためのファシリティが与えられるので、もはやテストする必要性はない。例として、プログラム(スーパーバイザ・プログラムのような)が除去された機能をイネーブルにしようと試みた場合、(既知の例外コード又は新しいコードのいずれかを用いて)エラー又は例外のような指示が与えられる。さらに、プログラムが、除去された機能を利用する命令を実行しようと試みる場合、例として、エラー又は例外のような指示が与えられる。
【0166】
本発明の1つの好ましい実施形態において、No−DATファシリティは、例えば、次の同時出願された、同一出願人による、Gainey他の「Architectural Mode Configuration」という名称の出願(米国特許出願第14/217840号)及びMichael K.Gschwindによる「Common Boot Sequence for Control Utility Able to be Initialized in Multiple Architectures」という名称の出願(米国特許出願第14/217800号)に記載される、CZAMファシリティ及び/又は制御ユーティリティ・ブート・ファシリティを含む1つ又は複数の他のファシリティと共に使用することができる。
【0167】
図17を参照すると、一例において、コンピュータ・プログラム製品1200は、例えば、1つ又は複数の実施形態を提供し、容易にするように、その上にコンピュータ可読プログラム・コード手段、論理及び/又は命令1204を格納するための、1つ又は複数の一時的でないコンピュータ可読ストレージ媒体1202を含む。
【0168】
本発明は、システム、方法、及び/又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことができる。
【0169】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用するための命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、即ち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、クリア可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク型読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード又は命令がその上に記録された溝の中の隆起構造などの機械的にエンコードされるデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で用いられる場合、コンピュータ可読ストレージ媒体は、電波若しくは他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルの中を通る光パルス)、又は配線を介して伝送される電気信号などの、一時的な信号自体と解釈されるべきではない。
【0170】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードしてもよく、又は、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードしてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カード又はネットワーク・インタフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するように、コンピュータ可読プログラム命令を転送する。
【0171】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データとすることができ、又は、Smalltalk、C++等のようなオブジェクト指向プログラミング言語、及び、「C」プログラミング言語若しくは類似のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組み合わせで書かれたソース・コード若しくはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、全体をユーザのコンピュータ上で実行することができ、独立型ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されることができ、一部をユーザのコンピュータ上で実行し、一部を遠隔コンピュータ上で実行することができ、又は全体を遠隔コンピュータ若しくはサーバ上で実行することができる。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、又は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを使用してインターネット経由で)接続が行われてもよい。幾つかの実施形態においては、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラマブル論理アレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
【0172】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【0173】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するための手段を生成するようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、その結果、命令をその内部に格納したコンピュータ可読ストレージ媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を含むようにすることもできる。
【0174】
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で一連の動作ステップを行わせてコンピュータ実装プロセスを生成し、それにより、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施するようにすることもできる。
【0175】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実行するための1つ又は複数の実行可能な命令を含む、モジュール、セグメント又は命令の一部を表すことができる。幾つかの代替的な実施において、ブロック内に記された機能は、図面内に記された順序とは異なる順序で行われることもある。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、ときには逆の順序で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェアベースのシステムにより実装すること、又は専用ハードウェアとコンピュータ命令との組み合わせによって実施することができることにも留意されたい。
【0176】
上記に加えて、1つ又は複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって供与、提供、配置、管理、サービス等を行うことができる。例えば、サービス・プロバイダは、1又は複数の顧客のために1つ又は複数の態様を実施するコンピュータ・コード及び/又はコンピュータ・インフラストラクチャの作成、保守、サポート等を行うことができる。見返りに、サービス・プロバイダは、例として、予約申し込み及び/又は報酬契約の下で顧客から支払いを受けることができる。付加的に又は代替的に、サービス・プロバイダは、1又は複数の第三者に対する広告内容の販売から支払いを受けることができる。
【0177】
一態様において、1つ又は複数の実施形態を実施するために、アプリケーションを配備することができる。一例として、アプリケーションの配備は、1つ又は複数の実施形態を実施するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【0178】
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを配置することができ、そこでは、コードは、コンピューティング・システムと協働して、1つ又は複数の実施形態を実施することができる。
【0179】
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、プロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、ここで、コンピュータ媒体は、1つ又は複数の実施形態を含む。コードは、コンピュータ・システムと協働して、1つ又は複数の実施形態を実施することができる。
【0180】
種々の実施形態が上述されたが、これらは例にすぎない。例えば、1つ又は複数の実施形態を組み込み、使用するために、他のアーキテクチャのコンピューティング環境を使用することもできる。さらに、異なる命令、命令形式、命令フィールド、及び/又は命令の値を使用することができる。さらにまた、他のタイプのアドレス変換も、1つ又は複数の態様から利益を得ることができる。また、他のアーキテクチャ機能を同様に除去することができる。多くの変形が可能である。
【0181】
さらに、他のタイプのコンピューティング環境の利益を得、これを使用することができる。一例として、プログラム・コードを格納及び/又は実行するのに適しており、システム・バスを介してメモリ要素に直接又は間接的に結合された少なくとも2つのプロセッサを含む、データ処理システムを使用することができる。メモリ要素は、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量記憶装置、及び実行中に大容量記憶装置からコードを取り出さなければならない回数を減らすために少なくとも幾つかのプログラム・コードの一時的なストレージを提供するキャッシュ・メモリを含む。
【0182】
入力/出力即ちI/Oデバイス(これらに限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サムドライブ及び他のメモリ媒体等)は、直接システムに結合することもでき、又は介在するI/Oコントローラを介してシステムに結合することができる。ネットワーク・アダプタをシステムに結合させて、データ処理システムが、介在する私的ネットワーク又は公衆ネットワークを通じて他のデータ処理システム又は遠隔プリンタ若しくはストレージ・デバイスに結合できるようにすることもできる。モデム、ケーブル・モデム及びイーサネット・カードは、ネットワーク・アダプタの利用可能なタイプのうちのほんの数例である。
【0183】
図18を参照すると、これは、1つ又は複数の実施形態を実装するためのホスト・コンピュータ・システム5000の代表的なコンポーネントが描かれる。代表的なホスト・コンピュータ5000は、コンピュータ・メモリ(即ち、中央ストレージ)5002と通信する1つ又は複数のCPU5001と、他のコンピュータ若しくはSANなどとの通信のためのストレージ媒体デバイス5011及びネットワーク5010に対するI/Oインターフェースとを含む。CPU5001は、アーキテクチャ化命令セット及びアーキテクチャ化機能を有するアーキテクチャに準拠している。CPU5001は、アクセス・レジスタ変換(ART)5012を有し、これは、プログラム・アドレス(仮想アドレス)をメモリの実アドレスに変換するための動的アドレス変換(DAT)5003により用いられるアドレス空間を選択するためのARTルックアサイド・バッファ(ALB)5013を含む。DATは、典型的には、変換をキャッシュに入れるための変換ルックアサイド・バッファ(TLB)5007を含み、後でコンピュータ・メモリ5002のブロックにアクセスしたときにアドレス変換による遅延を必要とせずに済むように変換をキャッシュに入れるための、変換ルックアサイド・バッファ(TLB)5007を含む。典型的には、キャッシュ5009は、コンピュータ・メモリ5002とプロセッサ5001との間で用いられる。キャッシュ5009は、1つより多くのCPUが利用できる大型キャッシュと、大型キャッシュと各CPUとの間のより小型で高速な(下位レベルの)キャッシュとを有する階層構造とすることができる。いくつかの実施において、下位レベルのキャッシュは、命令フェッチ及びデータ・アクセスのための個別の下位レベル・キャッシュを提供するように分割される。
【0184】
1つの実施形態において、命令は、命令フェッチ・ユニット5004によりメモリ5002からキャッシュ5009を介してフェッチされる。命令は、命令デコード・ユニット5006内でデコードされ(幾つかの実施形態においては他の命令と共に)命令実行ユニット5008にディスパッチされる。典型的には、幾つかの実行ユニット5008、例えば、算術演算実行ユニット、浮動小数点実行ユニット及び分岐命令実行ユニットが用いられる。命令は、実行ユニットにより、必要に応じて命令が指定するレジスタ又はメモリからのオペランドにアクセスすることにより実行される。オペランドがメモリ5002からアクセスされる(ロードされる又はストアされる)場合には、典型的には、ロード/ストア・ユニット5005が、実行されている命令の制御下でアクセスを取り扱う。命令は、ハードウェア回路若しくは内部マイクロコード(ファームウェア)、又はこの両方の組み合わせにより実行することができる。
【0185】
既述のように、コンピュータ・システムは、ローカル(又は、主)ストレージ内の情報、並びにアドレス指定、保護、並びに参照及び変更記録を含む。アドレス指定の幾つかの態様は、アドレスの形式、アドレス空間の概念、アドレスの種々のタイプ及び1つのタイプのアドレスが別のタイプのアドレスに変換される方法を含む。主ストレージの一部は、恒久的に割り当てられたストレージ位置を含む。主ストレージは、システムに、直接アドレス可能なデータの高速アクセス・ストレージを提供する。データ及びプログラムの両方とも、これらが処理される前に(入力デバイスから)主ストレージにロードされる。
【0186】
主ストレージは、キャッシュと呼ばれることがある、1つ又は複数のより小型の高速アクセス・バッファ・ストレージを含むことができる。キャッシュは、典型的には、CPU又はI/Oプロセッサと物理的に関連付けられる。物理的構造の、性能を除いた効果及び別個のストレージ媒体の使用は、一般に、プログラムにより観察することができない。
【0187】
命令及びデータ・オペランドに対して、別個のキャッシュを維持することができる。キャッシュ内の情報は、キャッシュ・ブロック又はキャッシュ・ライン(又は、簡単に言えばライン)と呼ばれる整数境界上の連続バイトで維持される。モデルは、キャッシュ・ラインのサイズをバイト単位で戻すEXTRACT CACHE ATTRIBUTE命令を提供することができる。別の実施形態において、この情報は、例えば、Power Architecture Platform Reference仕様により指定されるインターフェースに従ったファームウェアから取得することができる。モデルはまた、データ・キャッシュ・ブロック・タッチ(dcbt)、データ又は命令キャッシュへのストレージのプリフェッチ又はキャッシュからのデータの解放を行うPREFETCH DATA及びPREFETCH DATA RELATIVE LONG命令のうちの1つ又は複数を提供することもできる。
【0188】
ストレージは、ビットの水平の長い文字列として見ることができる。殆どの操作では、ストレージへのアクセスは、左から右への順で進行する。ビットの文字列は、8ビット単位で細分される。この8ビットの単位はバイトと呼ばれ、これは全ての情報形式の基本構成単位である。ストレージ内の各々のバイト位置は、負でない固有の整数により識別され、この整数がバイト位置のアドレス、即ち、簡単にバイト・アドレスである。隣接するバイト位置は連続するアドレスを有し、左端の0から始まって左から右へ順に進行する。アドレスは、符号なしの2進整数であり、24ビット、31ビット又は64ビットである。
【0189】
情報は、ストレージとCPU又はチャネル・サブシステムとの間で、一度に1バイトずつ、又は1グループ分のバイトで伝送される。特に断りのない限り、例えば、Power ISA及びz/Architectureにおいて、ストレージ内のバイト・グループは、グループの左端のバイトによりアドレス指定される。グループ内のバイト数は、実行される操作により暗黙的に決定される場合、又は明示的に決定される場合がある。CPU操作に使用される場合、バイト・グループはフィールドと呼ばれる。各々のバイト・グループ内において、例えば、Power ISA及びz/Architectureにおいて、ビットは、左から右の順に番号付けされる。Power ISA及びz/Architectureにおいて、左端のビットを「最上位」ビットと呼び、右端のビットを「最下位」ビットと呼ぶことがある。しかしながら、ビット番号はストレージ・アドレスではない。アドレス指定できるのはバイトだけである。ストレージ内の1つのバイトの個々のビットに対して操作を行うためには、そのバイト全体にアクセスされる。1バイトの中のビットには、(z/Architectureにおいて)左から右に0から7までの番号が付けられる。1つのアドレスの中のビットには、24ビット・アドレスの場合は、8−31又は40−63の番号が付けられ、又は31ビット・アドレスの場合は、1−31又は33−63の番号が付けられ、又は64ビット・アドレスの場合は、0−63の番号が付けられる。一例においては、ビット8−31及び1−31は、32ビット長の記憶位置(例えばレジスタ)にあるアドレスに適用され、一方、ビット40−63及び33−63は、64ビット長の記憶位置にあるアドレスに適用される。複数バイトの任意の他の固定長形式において、形式を構成するビットは、0から始まって連続的に番号が付けられる。エラー検出のため、また好ましくは訂正のため、各々のバイト又はバイト・グループと共に1又は複数の検査ビットを伝送することができる。こうした検査ビットは、マシンにより自動的に生成され、プログラムにより直接制御することはできない。ストレージ容量は、バイト数で表現される。ストレージ・オペランド・フィールドの長さが命令のオペコードで暗黙指定される場合、そのフィールドは固定長を有するといわれ、この長さは1バイト、2バイト、4バイト、8バイト又は16バイトとすることができる。幾つかの命令に対しては、より大きいフィールドが暗黙指定される。ストレージ・オペランドの長さが暗黙指定されず、明示的に指定される場合は、そのフィールドは可変長を有するといわれる。可変長オペランドは、1バイトのインクリメント(又は幾つかの命令では、2バイトの倍数又は他の倍数で)で長さが変化し得る。情報がストレージ内に配置されると、ストレージへの物理的パスの幅が格納されるフィールドの長さより大きい場合であっても、指定したフィールドに含まれているバイト位置の内容のみが置き換えられる。
【0190】
情報の特定の単位は、ストレージ内の整数境界上にあるべきである。境界は、そのストレージ・アドレスがバイトでの単位の長さの倍数である場合に、情報の単位に対して整数であると呼ばれる。整数境界上にある2バイト、4バイト、8バイト、16バイト及び32バイトのフィールドには、特別な名称が与えられる。ハーフワードは、2バイト境界上にある2個の連続したバイトのグループであり、これは命令の基本構成単位である。ワードは、4バイト境界上にある4個の連続したバイトのグループである。ダブルワードは、8バイト境界上にある8個の連続したバイトのグループである。クワッドワードは、16バイト境界上にある16個の連続したバイトのグループである。オクトワードは、32バイト境界上にある32個の連続したバイトのグループである。ストレージ・アドレスが、ハーフワード、ワード、ダブルワード、クワッドワード及びオクトワードを指定するとき、そのアドレスの2進表現では、それぞれ1個、2個、3個、4個又は5個の右端の0ビットを含む。命令は、2バイト整数境界上にあるべきである。殆どの命令のストレージ・オペランドは、境界位置合わせ要件を有さない。
【0191】
命令及びデータ・オペランドに対して別個のキャッシュを実装するデバイスにおいては、ストアが後にフェッチされる命令を変更するかどうかに関係なく、プログラムが、後にフェッチされるキャッシュ・ラインに格納される場合、著しい遅延が生じ得る。
【0192】
一例において、実施形態は、ソフトウェア(ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどとも呼ばれる場合があるが、そのいずれも1つ又は複数の実施形態と整合性がある)により実施することができる。
図18を参照すると、1つ又は複数の態様を具体化するソフトウェア・プログラム・コードは、CD−ROMドライブ、テープドライブ、又はハードドライブといった長期ストレージ媒体デバイス5011から、ホスト・システム5000のプロセッサ5001によりアクセスすることができる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はCD−ROMのようなデータ処理システムと共に使用するための種々の周知の媒体のいずれかの上で具体化することができる。コードは、こうした媒体上に分散させても、又はコンピュータ・メモリ5002からユーザに分散させても、又はこうした他のシステムのユーザが使用するために、ネットワーク5010上の1つのコンピュータ・システムのストレージから他のコンピュータ・システムに分散させてもよい。
【0193】
ソフトウェア・プログラム・コードは、種々のコンピュータ・コンポーネント及び1つ又は複数のアプリケーション・プログラムの機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体デバイス5011から相対的により高速のコンピュータ・ストレージ5002にページングされ、そこでプロセッサ5001による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び/又は、ネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、有形の媒体(これらに限定されるものではないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープ等)上に作成され格納されたとき、「コンピュータ・プログラム」と呼ばれることが多い。コンピュータ・プログラム媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
【0194】
図19は、1つ又は複数の実施形態を実施することができる代表的なワークステーション又はサーバ・ハードウェア・システムを示す。
図25のシステム5020は、随意的な周辺機器を含む、パーソナル・コンピュータ、ワークステーション、又はサーバなどの代表的なベース・コンピュータ・システム5021を含む。ベース・コンピュータ・システム5021は、1つ又は複数のプロセッサ5026と、周知の技術に従ってプロセッサ5026とシステム5021の他のコンポーネントを接続し、これらの間の通信を可能にするために用いられるバスとを含む。バスは、プロセッサ5026を、ハードドライブ(例えば、磁気媒体、CD、DVD及びフラッシュ・メモリのいずれかを含む)又はテープドライブを含むことができる、メモリ5025及び長期ストレージ5027に接続する。システム5021はまた、バスを介して、マイクロプロセッサ5026を、キーボード5024、マウス5023、プリンタ/スキャナ5030、及び/又はタッチ・センシティブ・スクリーン、デジタル化された入力パッド等のいずれかのユーザ・インターフェース機器とすることができる他のインターフェース機器といった、1つ又は複数のインターフェース機器に接続する、ユーザ・インターフェース・アダプタを含むこともできる。バスはまた、ディスプレイ・アダプタを介して、LCDスクリーン又はモニタなどのディスプレイ装置5022をマイクロプロセッサ5026にも接続する。
【0195】
システム5021は、ネットワーク5029と通信する5028ことができるネットワーク・アダプタを介して、他のコンピュータ又はコンピュータ・ネットワークと通信することができる。例示的なネットワーク・アダプタは、通信チャネル、トークン・リング、イーサネット又はモデムである。代替的に、システム5021は、CDPD(セルラー・デジタル・パケット・データ)カードのような無線インターフェースを用いて通信することもできる。システム5021は、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)又はシステム5021内のこうした他のコンピュータと関連付けることができ、又は、別のコンピュータ等とのクライアント/サーバ構成におけるクライアントとすることができる。これら構成の全て、並びに、適切な通信ハードウェア及びソフトウェアは、当技術分野において周知である。
【0196】
図20は、1つ又は複数の実施形態を実施することができるデータ処理ネットワーク5040を示す。データ処理ネットワーク5040は、各々が複数の個々のワークステーション5041、5042、5043、5044を含むことができる、無線ネットワーク及び有線ネットワークのような複数の個々のネットワークを含むことができる。さらに、当業者であれば理解するように、1つ又は複数のLANを含ませることができ、そこで、LANは、ホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含むことができる。
【0197】
さらに
図20を参照すると、ネットワークはまた、ゲートウェイ・コンピュータ(クライアント・サーバ5046)、又はアプリケーション・サーバ(データ・リポジトリにアクセスすることができ、かつ、ワークステーション5045から直接アクセスすることもできる遠隔サーバ5048)のような、メインフレーム・コンピュータ又はサーバを含むこともできる。ゲートウェイ・コンピュータ5046は、各々の個々のネットワークへの入力点のとして働く。ゲートウェイは、1つのネットワーク・プロトコルを別のものに接続するときに必要とされる。ゲートウェイ5046は、通信リンクによって別のネットワーク(例えば、インターネット5047)に結合できることが好ましい。ゲートウェイ5046はまた、通信リンクを用いて、1つ又は複数のワークステーション5041、5042、5043、5044に直接結合することもできる。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なIBM Power Systemsサーバ及びIBM System zサーバの一方を用いて実装することができる。
【0198】
図19及び
図20を同時に参照すると、1つ又は複数の態様を具体化することができるソフトウェア・プログラム・コード5031には、一般的に、CD−ROMドライブ又はハードドライブといった長期ストレージ媒体5027から、システム5020のプロセッサ5026によってアクセスすることができる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はCD−ROMといった、データ処理システムと共に用いるための種々の周知の媒体のいずれかの上で具体化することができる。コードは、そのような媒体上で分散させても、又はメモリからユーザ5050、5051に分散させても、又は、こうした他のシステムのユーザが用いるために、ネットワーク上の1つのコンピュータ・システムのメモリ若しくはストレージから他のコンピュータ・システムに分散させてもよい。
【0199】
代替的に、プログラム・コードをメモリ5025内で具体化し、プロセッサ・バスを用いてプロセッサ5026によってプログラム・コードにアクセスすることができる。このようなプログラム・コードは、種々のコンピュータ・コンポーネント及び1つ又は複数のアプリケーション・プログラム5032の機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体5027から高速メモリ5025にページングされ、そこでプロセッサ5026による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び/又は、ネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、有形の媒体(これらに限定されるものではないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープなどを含む)に格納されたとき、「コンピュータ・プログラム」と呼ばれることが多い。コンピュータ・プログラム媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
【0200】
プロセッサが最も容易に利用できるキャッシュ(通常、プロセッサの他のキャッシュよりも高速で小さい)は、最下位(L1又はレベル1)のキャッシュであり、主ストア(主メモリ)は、最上位レベルのキャッシュ(3つのレベルがある場合にはL3)である。最下位レベルのキャッシュは、実行されるマシン命令を保持する命令キャッシュ(I−キャッシュ)と、データ・オペランドを保持するデータ・キャッシュ(D−キャッシュ)とに分割されることが多い。
【0201】
図21を参照すると、プロセッサ5026についての例示的なプロセッサの実施形態が示される。典型的には、メモリ・ブロックをバッファに入れてプロセッサ性能を向上させるために、1つ又は複数のレベルのキャッシュ5053が用いられる。キャッシュ5053は、用いられる可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは、64バイト、128バイト、又は256バイトのメモリ・データである。データをキャッシュに入れるのではなく、命令をキャッシュに入れるために、別個のキャッシュが用いられることが多い。キャッシュ・コヒーレンス(メモリ及びキャッシュ内のラインのコピーの同期)は、多くの場合、当技術分野において周知の種々の「スヌープ」アルゴリズムによって与えられる。プロセッサ・システムの主メモリ・ストレージ5025は、キャッシュと呼ばれることが多い。4つのレベルのキャッシュ5053を有するプロセッサ・システムにおいて、主ストレージ5025は、典型的にはより高速であり、かつ、コンピュータ・システムが利用できる不揮発性ストレージ(DASD、テープ等)の一部だけを保持するので、レベル5(L5)のキャッシュと呼ばれることがある。主ストレージ5025は、オペレーティング・システムによって主ストレージ5025との間でページングされるデータのページを「キャッシュに入れる」。
【0202】
プログラム・カウンタ(命令カウンタ)5061は、実行される現行の命令のアドレスを常時監視している。z/Architectureプロセッサのプログラム・カウンタは64ビットであり、従来のアドレッシング制限をサポートするために、31ビット又は24ビットに切り捨てることができる。Power Architectureプロセッサのプログラム・カウンタは、64ビットであり、従来のアドレッシング制限をサポートするために、32ビットに切り捨てることができる。プログラム・カウンタは、典型的には、コンテキスト・スイッチの際に持続するように、コンピュータのPSW(プログラム状況ワード)内で具体化される。従って、例えば、オペレーティング・システムにより、プログラム・カウンタ値を有する進行中のプログラムに割り込みをかけることが可能である(プログラム環境からオペレーティング・システム環境へのコンテキスト・スイッチ)。プログラムのPSWは、プログラムがアクティブでない間、プログラム・カウンタ値を保持し、オペレーティング・システムが実行されている間、オペレーティング・システムの(PSW内の)プログラム・カウンタが用いられる。典型的には、プログラム・カウンタは、現行の命令のバイト数に等しい量だけインクリメントされる。RISC(Reduced Instruction Set Computing)命令は、典型的には固定長であり、CISC(Complex Instruction Set Computing)命令は、典型的には可変長である。IBM z/Architectureの命令は、2バイト、4バイト、又は6バイトの長さを有するCISC命令である。IBM Power ISAの命令は、4バイトの長さを有するRISC命令である。例えば、コンテキスト・スイッチ操作又は分岐命令の分岐成立操作により、プログラム・カウンタ5061が変更される。コンテキスト・スイッチ操作において、現行のプログラム・カウンタ値は、実行されるプログラムについての他の状態情報(条件コードのような)と共にプログラム状況ワード内に保存され、実行される新しいプログラム・モジュールの命令を指し示す新しいプログラム・カウンタ値がロードされる。分岐成立操作を行い、分岐命令の結果をプログラム・カウンタ5061にロードすることにより、プログラムが判断を下すこと又はプログラム内でループすることを可能にする。
【0203】
典型的には、プロセッサ5026の代わりに命令をフェッチするために、命令フェッチ・ユニット5055が用いられる。フェッチ・ユニットは、「次の順次命令」、分岐成立命令のターゲット命令、又はコンテキスト・スイッチの後のプログラムの最初の命令のいずれかをフェッチする。今日の命令フェッチ・ユニットは、プリフェッチされた命令を用いることができる可能性に基づいて、命令を投機的にプリフェッチするプリフェッチ技術を用いることが多い。例えば、フェッチ・ユニットは、次の順次命令を含む16バイトの命令と、付加的なバイトの更なる順次命令とをフェッチすることができる。
【0204】
次いで、フェッチされた命令が、プロセッサ5026によって実行される。1つの実施形態において、フェッチされた命令は、フェッチ・ユニットのディスパッチ・ユニット5056に渡される。ディスパッチ・ユニットは命令をデコードし、デコードされた命令についての情報を適切なユニット5057、5058、5060に転送する。実行ユニット5057は、典型的には、命令フェッチ・ユニット5055からデコードされた算術命令についての情報を受け取り、命令のオペコードに従ってオペランドに関する算術演算を行う。オペランドは、好ましくは、メモリ5025、アーキテクチャ化レジスタ5059、又は実行される命令の即値フィールドのいずれかから、実行ユニット5057に与えられる。実行の結果は、格納された場合には、メモリ5025、レジスタ5059、又は他のマシン・ハードウェア(制御レジスタ、PSWレジスタなどのような)内に格納される。
【0205】
仮想アドレスは、動的アドレス変換5062、及び随意的に、アクセス・レジスタ変換5063を用いて、実アドレスに変換される。
【0206】
プロセッサ5026は、典型的には、命令の機能を実行するための1つ又は複数の実行ユニット5057、5058、5060を有する。
図22を参照すると、実行ユニット5057は、インターフェース論理5071を介して、アーキテクチャ化された汎用レジスタ5059、デコード/ディスパッチ・ユニット5056、ロード・ストア・ユニット5060、及び他のプロセッサ・ユニット5065と通信することができる。実行ユニット5057は、幾つかのレジスタ回路5067、5068、5069を用いて、算術論理演算ユニット(ALU)5066が動作する情報を保持することができる。ALUは、加算、減算、乗算、及び除算などの算術演算、並びに、論理積、論理和、及び排他的論理和、ローテート及びシフトのような論理関数を実行する。ALUは、設計に依存する専用の演算をサポートすることが好ましい。他の回路は、例えば条件コード及び回復サポート論理を含む、他のアーキテクチャ化ファシリティ5072を提供することができる。典型的には、ALU演算の結果は、出力レジスタ回路5070に保持され、この出力レジスタ回路5070が、結果を種々の他の処理機能に転送することができる。多数のプロセッサ・ユニットの構成が存在し、本説明は、1つの実施形態の代表的な理解を与えることのみを意図している。
【0207】
例えばADD命令は、算術及び論理機能を有する実行ユニット5057で実行され、一方、例えば浮動小数点命令は、特化された浮動小数点能力を有する浮動小数点実行部で実行される。実行ユニットは、オペランドに対してオペコードが定めた関数を行うことにより、命令が特定したオペランドに対して動作することが好ましい。例えば、ADD命令は、命令のレジスタ・フィールドによって特定された2つのレジスタ5059内に見出されるオペランドに対して、実行ユニット5057により実行することができる。
【0208】
実行ユニット5057は、2つのオペランドに対して算術加算を実行し、結果を第3オペランドに格納し、ここで第3オペランドは、第3のレジスタであっても又は2つのソース・レジスタのいずれかであってもよい。実行ユニットは、シフト、ローテート、論理積、論理和、及び排他的論理和のような種々の論理関数、並びに、加算、減算、乗算、除法のいずれかを含む、種々の代数関数を実行することができる算術論理演算ユニット(ALU)5066を用いることが好ましい。スカラー演算のために設計されたALU5066もあり、浮動小数点のために設計されたものALU5066もある。データは、アーキテクチャに応じて、ビッグ・エンディアン(最下位のバイトが最も高いバイト・アドレスである)、又はリトル・エンディアン(最下位のバイトが最も低いバイト・アドレスである)とすることができる。IBM z/Architectureは、ビッグ・エンディアンである。IBM Power ISAは、ビッグ・エンディアン及びリトル・エンディアン実行モードの両方をサポートする。符号付きフィールドは、アーキテクチャに応じて、符号及び大きさ、1の補数、又は2の補数とすることができる。2の補数における負の値又は正の値は、ALU内で加法しか必要としないため、ALUが減算能力を設計する必要がないという点で、2の補数は有利である。数値は、通常、省略表現で記述され、12ビット・フィールドは、4,096バイトブロックのアドレスを定め、通常、例えば4Kバイト(キロバイト)ブロックのように記述される。
【0209】
図23を参照すると、分岐命令を実行するための分岐命令情報が、典型的には、分岐ユニット5058に送られ、この分岐ユニット5058は、多くの場合、分岐履歴テーブル5082のような分岐予測アルゴリズムを用いて、他の条件付き演算が完了する前に分岐の結果を予測する。条件付き演算が完了する前に、現行の分岐命令のターゲットがフェッチされ、投機的に実行される。条件付き演算が完了すると、投機的に実行された分岐命令は、条件付き演算の条件及び投機された結果に基づいて、完了されるか又は破棄される。典型的な分岐命令は、条件コードを試験し、条件コードが分岐命令の分岐要件を満たす場合、ターゲット・アドレスに分岐することができ、ターゲット・アドレスは、例えば、命令のレジスタ・フィールド又は即値フィールド内に見出されるものを含む幾つかの数に基づいて計算することができる。分岐ユニット5058は、複数の入力レジスタ回路5075、5076、5077と、出力レジスタ回路5080とを有するALU5074を用いることができる。分岐ユニット5058は、例えば、汎用レジスタ5059、デコード・ディスパッチ・ユニット5056、又は他の回路5073と通信すること5081ができる。
【0210】
例えば、オペレーティング・システムによって開始されるコンテキスト・スイッチ、コンテキスト・スイッチを発生させるプログラム例外又はエラー、コンテキスト・スイッチを発生させるI/O割り込み信号、又は(マルチスレッド環境における)複数のプログラムのマルチスレッド活動を含む様々な理由により、命令のグループの実行に割り込みがかけられることがある。コンテキスト・スイッチ動作は、現在実行中のプログラムについての状態情報を保存し、次いで、起動される別のプログラムについての状態情報をロードすることが好ましい。状態情報は、例えば、ハードウェア・レジスタ又はメモリ内に保存することができる。状態情報は、実行される次の命令を指し示すプログラム・カウンタ値と、条件コードと、メモリ変換情報と、アーキテクチャ化されたレジスタの内容とを含むことが好ましい。コンテキスト・スイッチの活動は、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、又はファームウェア・コード(マイクロコード、ピココード、又はライセンス内部コード(LIC))単独で又はその組み合わせで実施することができる。
【0211】
プロセッサは、命令により定義された方法に従ってオペランドにアクセスする。命令は、命令の一部の値を用いて即値オペランドを与えることができ、汎用レジスタ又は専用レジスタ(例えば、浮動小数点レジスタ)のいずれかを明示的に指し示す1つ又は複数のレジスタ・フィールドを与えることができる。命令は、オペコード・フィールドによって、オペランドとして識別されるインプライド・レジスタを用いることができる。命令は、オペランドのためのメモリ位置を用いることができる。命令がベース・レジスタ、インデックス・レジスタ、及び即値フィールド(変位フィールド)を定め、これらを互いに付加してメモリ内のオペランドのアドレスをもたらすz/Architectureの長変位ファシリティ、又は、D−形式のアドレスがベース・レジスタ及び即値フィールド(変位フィールド)を定め、これらを互いに付加してメモリ内のオペランドのアドレスをもたらし、かつ、X−形式のアドレスがベース・レジスタ及びインデックス・レジスタを定め、これらが互いに加えられてメモリ内のオペランドのアドレスをもたらす、Power ISAアドレッシング・モードにより例示されるように、オペランドのメモリ位置を、レジスタ、即値フィールド、又はレジスタと即値フィールドの組み合わせによって与えることができる。ここでの位置は、典型的には、特に断りのない限り、主メモリ(主ストレージ)内の記憶位置を意味する。
【0212】
図24を参照すると、プロセッサは、ロード/ストア・ユニット5060を用いて、ストレージにアクセスする。ロード/ストア・ユニット5060は、メモリ5025内のターゲット・オペランドのアドレスを取得し、オペランドをレジスタ5059又は別のメモリ5025の記憶位置にロードすることによってロード操作を行うことができ、或いは、メモリ5025内のターゲット・オペランドのアドレスを取得し、レジスタ5059又は別のメモリ5025の記憶位置から取得したデータをメモリ5025内のターゲット・オペランドの記憶位置に格納することによって、ストア操作を行うことができる。ロード/ストア・ユニット5060は、投機的なものであってもよく、命令シーケンスに対してアウト・オブ・オーダー式の順序でメモリにアクセスすることができるが、プログラムに対して、命令がインオーダー式に実行されたという外観を維持することになる。ロード/ストア・ユニット5060は、汎用レジスタ5059、デコード/ディスパッチ・ユニット5056、キャッシュ/メモリ・インターフェース5053、又は他の要素5083と通信することができ、ストレージ・アドレスを計算し、かつ、パイプライン処理を順に行って操作をインオーダー式に保持するための、種々のレジスタ回路、ALU5085、及び制御論理5090を含む。一部の動作は、アウト・オブ・オーダー式とすることができるが、ロード/ストア・ユニットは、アウト・オブ・オーダー式動作が、プログラムに対して、当技術分野において周知のようなインオーダー式に実行されたように見えるようにする機能を提供する。
【0213】
好ましくは、アプリケーション・プログラムが「見ている」アドレスは、仮想アドレスと呼ばれることが多い。仮想アドレスは、「論理アドレス」及び「実効アドレス」と呼ばれることもある。これらの仮想アドレスは、これらに限定されるものではないが、単に仮想アドレスをオフセット値にプリフィックス付加すること、1つ又は複数の変換テーブルを介して仮想アドレスを変換することを含む、種々の動的アドレス変換(DAT)技術の1つによって、物理的メモリ位置にリダイレクトされるという点で仮想のものであり、変換テーブルは、少なくともセグメント・テーブル及びページ・テーブルを単独で又は組み合わせて含むことが好ましく、セグメント・テーブルは、ページ・テーブルを指し示すエントリを有することが好ましい。z/Architectureでは、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、及び随意的なページ・テーブルを含む、変換の階層構成が提供される。アドレス変換の性能は、仮想アドレスを関連した物理的メモリ位置にマッピングするエントリを含む変換ルックアサイド・バッファ(TLB)を用いることにより改善されることが多い。DATが変換テーブルを用いて仮想アドレスを変換したときに、エントリが作成される。次いで、後に仮想アドレスを用いることで、低速の順次変換テーブル・アクセスではなく、高速のTLBのエントリを用いることが可能になる。TLBの内容は、LRU(Least Recently used:最長時間未使用)を含む種々の置換アルゴリズムによって管理することができる。
【0214】
プロセッサがマルチプロセッサ・システムのプロセッサである場合には、各プロセッサは、コヒーレンシのために、I/O、キャッシュ、TLB、及びメモリといった共有リソースをインターロック状態に保持する責任を負う。キャッシュ・コヒーレンシを保持する際に、一般的には「スヌープ」技術が用いられる。スヌープ環境においては、共有を容易にするために、各キャッシュ・ラインを、共有状態、排他的状態、変更状態、無効状態等のいずれか1つの状態にあるものとしてマーク付けすることができる。
【0215】
I/Oユニット5054(
図21)は、プロセッサに、例えば、テープ、ディスク、プリンタ、ディスプレイ、及びネットワークを含む周辺機器に取り付けるための手段を与える。I/Oユニットは、ソフトウェア・ドライバによってコンピュータ・プログラムに提示されることが多い。IBMによるSystem zのようなメインフレームにおいては、チャネル・アダプタ及びオープン・システム・アダプタが、オペレーティング・システムと周辺機器との間に通信をもたらすメインフレームのI/Oユニットである。IBM(登録商標)からのPower SystemsのようなRISCサーバにおいて、専用アダプタ及びオープン・システム・アダプタは、オペレーティング・システムと周辺機器との間の通信を与えるI/Oユニットである。
【0216】
さらに、他のタイプのコンピューティング環境が、1つ又は複数の態様から利益を得ることができる。一例として、環境は、特定のアーキテクチャ(例えば、命令実行、アドレス変換などのアーキテクチャ化された機能、及びアーキテクチャ化されたレジスタを含む)又はそのサブセットをエミュレートする(例えば、プロセッサ及びメモリを有するネイティブ・コンピュータ・システム上で)エミュレータ(例えば、ソフトウェア又は他のエミュレーション機構)を含むことができる。このような環境においては、エミュレータを実行しているコンピュータが、エミュレートされる機能とは異なるアーキテクチャを有することができたとしても、エミュレータの1又は複数のエミュレーション機能により、1つ又は複数の実施形態が実施され得る。一例として、エミュレーション・モードにおいては、エミュレートされる特定の命令又は操作がデコードされ、適切なエミュレーション機能が構築され、個々の命令又は操作を実施する。
【0217】
エミュレーション環境においては、ホスト・コンピュータは、例えば、命令及びデータを格納するためのメモリと、メモリから命令をフェッチし、随意的に、フェッチされた命令のためのローカル・バッファリングを提供するための命令フェッチ・ユニットと、フェッチされた命令を受信し、フェッチされた命令のタイプを判断するための命令デコード・ユニットと、命令を実行するための命令実行ユニットとを含む。実行は、データをメモリからレジスタ内にロードすること、データをレジスタから再びメモリに格納すること、又はデコード・ユニットにより判断されるように、何らかのタイプの算術演算又は論理演算を実行することを含むことができる。一例においては、各ユニットは、ソフトウェアで実装される。例えば、ユニットが実行する演算は、エミュレータ・ソフトウェア内の1つ又は複数のサブルーチンとして実装される。
【0218】
より具体的には、メインフレームにおいて、アーキテクチャ化されたマシン命令は、通常、プログラマによって、多くの場合コンパイラ・アプリケーションを介して、今日では「C」プログラマによって用いられる。ストレージ媒体内に格納されたこれらの命令は、Power Systems又はz/ArchitectureのIBM(登録商標)サーバにおいて、又は代替的に他のアーキテクチャを実行するマシンにおいて、ネイティブに実行することができる。これらの命令は、既存の及び将来のIBM(登録商標)メインフレーム・サーバ、Power Systemサーバにおいて、及び、IBM(登録商標)の他のマシン(例えば、System xサーバ)上で、エミュレートすることができる。これらの命令は、IBM(登録商標)、Intel(登録商標)、AMDなどによって製造されたハードウェアを用いて種々のマシン上でLinuxを実行しているマシンにおいて実行することができる。Power Architecture又はz/Architecture下でそのハードウェア上で実行することに加えて、Linuxを用いること、並びに、一般に実行がエミュレーション・モードにあるHercules、UMX、又はFSI(Fundamental Software,Inc)によるエミュレーションを用いるマシンを用いることもできる。エミュレーション・モードにおいては、ネイティブ・プロセッサによって、エミュレーション・ソフトウェアが実行され、エミュレートされたプロセッサのアーキテクチャをエミュレートする。
【0219】
ネイティブ・プロセッサは、一般的に、エミュレートされたプロセッサのエミュレーションを実行するためにファームウェア又はネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェアを実行する。エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャの命令のフェッチと実行を担当する。エミュレーション・ソフトウェアは、エミュレートされたプログラム・カウンタを維持し、命令境界を常時監視している。エミュレーション・ソフトウェアは、一度に1つ又は複数のエミュレートされたマシン命令をフェッチし、ネイティブ・プロセッサにより実行するために、その1つ又は複数のエミュレートされたマシン命令を、対応するネイティブマシン命令のグループに変換することができる。これらの変換された命令は、より速い変換を達成できるようにキャッシュに入れることができる。それにも関わらず、エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ規則を維持して、オペレーティング・システム及びエミュレートされたプロセッサのために書かれたアプリケーションが正確に動作することを保証しなければならない。さらに、エミュレーション・ソフトウェアは、これらに限定されるものではないが、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブル及びページ・テーブルを含む動的アドレス変換機能、割り込み機構、コンテキスト・スイッチ機構、時刻(TOD)クロック、及びI/Oサブシステムへのアーキテクチャ化インターフェースを含む、エミュレートされたプロセッサのアーキテクチャによって識別されるリソースを提供し、オペレーティング・システム又はエミュレートされたプロセッサ上で実行するように設計されたアプリケーション・プログラムが、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で実行することができる。
【0220】
エミュレートされた特定の命令がデコードされ、個々の命令の機能を実行するためのサブルーチンが呼び出される。エミュレートされたプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、例えば、「C」サブルーチン若しくはドライバにおいて、又は好ましい実施形態の説明を理解した後で当業者の技術の範囲内にあるような特定のハードウェアのためにドライバを提供する他の何らかの方法で実装される。Beausoleil他による「Multiprocessor for Hardware Emulation」という名称の特許文献1、Scalzi他による「Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor」という名称の特許文献2、Davidian他による「Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions」という名称の特許文献3、Gorishek他による「Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non−Native Code to Run in a System」という名称の特許文献4、Lethin他による「Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method」という名称の特許文献5、Eric Trautによる「Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions」という名称の特許文献6及び他の多くを含むがこれらに限定されない、種々のソフトウェア及びハードウェア・エミュレーションの特許は、当業者が利用可能なターゲット・マシンのための異なるマシン用に設計された命令形式のエミュレーションを達成する様々な既知の方法を示す。
【0221】
図25において、ホスト・アーキテクチャのホスト・コンピュータ・システム5000’をエミュレートする、エミュレートされたホスト・コンピュータ・システム5092の一例が提供される。エミュレートされたホスト・コンピュータ・システム5092では、ホスト・プロセッサ(CPU)5091は、エミュレートされたホスト・プロセッサ(又は、仮想ホスト・プロセッサ)であり、かつ、ホスト・コンピュータ5000’のプロセッサ5091のものとは異なるネイティブな命令セット・アーキテクチャを有するエミュレーション・プロセッサ5093を含む。エミュレートされたホスト・コンピュータ・システム5092は、エミュレーション・プロセッサ5093がアクセス可能なメモリ5094を有する。例示的な施形態において、メモリ5094は、ホスト・コンピュータ・メモリ5096の部分と、エミュレーション・ルーチン5097の部分とにパーティション化される。ホスト・コンピュータ・メモリ5096は、ホスト・コンピュータ・アーキテクチャに従い、エミュレートされたホスト・コンピュータ・システム5092のプログラムに利用可能である。エミュレーション・プロセッサ5093は、エミュレートされたプロセッサ5091のもの以外のアーキテクチャのアーキテクチャ化された命令セットのネイティブ命令を実行し、このネイティブ命令はエミュレーション・ルーチン・メモリ5097から取得されたものであり、かつ、エミュレーション・プロセッサ5093は、シーケンス及びアクセス/デコード・ルーチンにおいて取得される1つ又は複数の命令を用いることにより、ホスト・コンピュータ・メモリ5096の中のプログラム由来の実行のためのホスト命令にアクセスすることができ、このシーケンス及びアクセス/デコード・ルーチンは、アクセスされたホスト命令をデコードして、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判断することができる。ホスト・コンピュータ・システム5000’のアーキテクチャのために定められた、例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、及びI/Oサブシステムのサポート、並びにプロセッサ・キャッシュといったファシリティを含む他のファシリティを、アーキテクチャ化ファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を高めるために、エミュレーション・プロセッサ5093において利用可能な(汎用レジスタ、及び仮想アドレスの動的変換といった)機能を利用することもできる。ホスト・コンピュータ5000’の機能をエミュレートする際にプロセッサ5093を補助するために、専用のハードウェア及びオフ・ロード・エンジンを設けることもできる。
【0222】
更に別の実施形態において、1つ又は複数の態様は、クラウド・コンピューティングに関する。本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で述べられる教示の実装は、クラウド・コンピューティング環境に限定されるものではないことが予め理解される。むしろ、本発明の実施形態は、現在知られている又は後に開発される他のいずれかのタイプのコンピューティング環境と併せて実装することができる。
【0223】
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、及び少なくとも4つの配備モデルを含むことができる。
【0224】
特徴は、以下の通りである。
オンデマンド・セルフサービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置(例えば、国、州、又はデータセンタ)を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性:機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
【0225】
サービス・モデルは以下の通りである。
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
【0226】
配備モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
【0227】
クラウド・コンピューティング環境は、無国籍性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0228】
ここで
図26を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示される。クラウド・コンピューティング・ノード6010は、好適なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明される本発明の実施形態の使用又は機能の範囲に対するいずれかの制限を示唆することを意図するものではない。上記に関係なく、クラウド・コンピューティング・ノード6010は、本明細書で上述された機能のいずれかを実装及び/又は実施することができる。
【0229】
クラウド・コンピューティング・ノード6010には、他の多数の汎用又は専用コンピューティング・システム環境又は構成で動作可能な、コンピュータ・システム/サーバ6012が存在する。コンピュータ・システム/サーバ6012と共に用いるのに好適な周知のコンピューティング・システム、環境、及び/又は構成の例としては、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステム又はデバイス等のいずれかを含む分散型クラウド・コンピューティング環境が含まれる。
【0230】
コンピュータ・システム/サーバ6012は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ6012は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体に配置することができる。
【0231】
図26に示されるように、クラウド・コンピューティング・ノード6010のコンピュータ・システム/サーバ6012は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム/サーバ6012のコンポーネントは、これらに限定されるものではないが、1つ又は複数のプロセッサ又は処理ユニット6016、システム・メモリ6028、及びシステム・メモリ6028を含む種々のシステム・コンポーネントをプロセッサ6016に結合するバス6018を含むことができる。
【0232】
バス6018は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの1つ又は複数を表す。限定ではなく例としては、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture、ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro Channel Architecture、MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、及びPeripheral Component Interconnect(PCI)バスを含む。
【0233】
コンピュータ・システム/サーバ6012は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ6012がアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
【0234】
システム・メモリ6028は、ランダム・アクセス・メモリ(RAM)6030及び/又はキャッシュ・メモリ6032など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ6012は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体(図示されておらず、典型的には「ハードドライブ」と呼ばれる)との間の読み出し及び書き込みのために、ストレージ・システム6034を設けることができる。図示されないが、取り外し可能な不揮発性磁気ディスク(例えば、「フレキシブル・ディスク」)との間の読み出し及び書き込みのための磁気ディスク・ドライブと、CD−ROM、DVD−ROM又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、それぞれを、1つ又は複数のデータ媒体インターフェースによってバス6018に接続することができる。以下でさらに示され説明されるように、メモリ6028は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールの組(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0235】
限定ではなく例として、メモリ6028内に、プログラム・モジュール6042の組(少なくとも1つ)を有するプログラム/ユーティリティ6040、並びにオペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール6042は、一般に、本明細書で説明される本発明の実施形態の機能及び/又は方法を実行する。
【0236】
コンピュータ・システム/サーバ6012は、キーボード、ポインティング・デバイス、ディスプレイ6024等のような1つ又は複数の外部デバイス6014;ユーザがコンピュータ・システム/サーバ6012と対話することを可能にする1つ又は複数のデバイス;及び/又はコンピュータ・システム/サーバ6012が1つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス(例えば、ネットワーク・カード、モデムなど)と通信することもできる。このような通信は、入力/出力(I/O)インターフェース6022を経由して行うことができる。さらにまた、コンピュータ・システム/サーバ6012は、ネットワーク・アダプタ6020を介して、ローカル・エリア・ネットワーク(LAN)、汎用広域ネットワーク(WAN)、及び/又はパブリック・ネットワーク(例えば、インターネット)などの1つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ6020は、バス6018を介して、コンピュータ・システム/サーバ6012の他のコンポーネントと通信する。図示されないが、コンピュータ・システム/サーバ6012と共に他のハードウェア及び/又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、RAIDシステム、テープドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
【0237】
ここで
図27を参照すると、例示的なクラウド・コンピューティング環境6050が示される。示されるように、クラウド・コンピューティング環境6050は、例えば携帯情報端末(PDA)又は携帯電話6054A、デスクトップ・コンピュータ6054B、ラップトップ・コンピュータ6054C、及び/又は自動車コンピュータ・システム6054Nなどといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、1つ又は複数のクラウド・コンピューティング・ノード6010を含む。ノード6010は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境6050は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、及び/又はソフトウェアを提供することが可能になる。
図27に示されるコンピューティング・デバイス6054A−Nのタイプは単に例示であることを意図し、コンピューティング・ノード10及びクラウド・コンピューティング環境6050は、いずれのタイプのネットワーク及び/又はネットワーク・アドレス指定可能な接続上でも(例えば、ウェブ・ブラウザを用いて)、いずれのタイプのコンピュータ化された装置とも通信できることを理解されたい。
【0238】
ここで
図28を参照すると、クラウド・コンピューティング環境6050(
図27)によって提供される機能抽象化層の組が示される。
図28に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層6060は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、IBM(登録商標)zSeriesシステムを一例とするメインフレームと、IBM(登録商標) pSeriesシステムを一例とするRISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバと、IBM(登録商標) xSeries(登録商標)システムと、IBM(登録商標) BladeCenter(登録商標)システムと、ストレージ・デバイスと、ネットワーク及びネットワーク・コンポーネントと、が含まれる。ソフトウェア・コンポーネントの例として、IBM(登録商標) WebSphere(登録商標)アプリケーション・サーバ・ソフトウェアを一例とするネットワーク・アプリケーション・サーバ・ソフトウェアと、IBM(登録商標) DB2(登録商標)データベース・ソフトウェアを一例とするデータベース・ソフトウェアとが含まれる。(IBM、zSeries、xSeries、BladeCenter、WebSphere、及びDB2は、世界中の多数の管轄区域において登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。)
仮想化層6062は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーション及びオペレーティング・システム、並びに仮想クライアントを提供することができる。
【0239】
一例においては、管理層6060は、以下で説明される機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、リソースの消費に対する課金又は請求とを提供する。1つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータルは、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
【0240】
ワークロード層6066は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例には、マッピング及びナビゲーション、ソフトウェア開発及びライフサイクル管理、仮想教室教育配信、データ分析処理、及びトランザクション処理が含まれる。
【0241】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指示するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
【0242】
以下の特許請求の範囲に存在する場合、「手段又はステップと機能との組合せ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物は、明確に特許請求された他の請求要素と共に機能を実行するための任意の構造体、材料、又は行為を含むことを意図したものである。1つ又は複数の実施形態の説明は、例証及び説明のためだけに提示されたものであり、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正物及び変形物が明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最もよく説明するため、及び、当業者が、企図した特定の用途に適するように種々の修正を有する種々の実施形態に関して本発明を理解することができるように、選択され記述された。