(58)【調査した分野】(Int.Cl.,DB名)
前記異なるパワーオン・シーケンスは、前記別のアーキテクチャ・モードで前記コンピュータの操作を制御するための新しいプログラム状況ワードを作成することを含み、前記新しいプログラム状況ワードを作成することは、前記別のアーキテクチャ・モードを示すように、前記新しいプログラム状況ワード内のアーキテクチャ・モード・インジケータを反転させることを含む、請求項1に記載の方法。
前記新しいプログラム状況ワードを作成することは、前記別のアーキテクチャ・モードにより示される形式を有するように前記新しいプログラム状況ワードを形成することであって、前記形式は、アドレス・フィールドを第1のサイズから第2のサイズへ拡張させることを含む、形成することと、前記アーキテクチャ・モード・インジケータの前記反転を実行することとを含む、請求項2に記載の方法。
前記構成アーキテクチャ・モード・ファシリティがインストールされていることを判断することは、ファシリティ・インジケータをチェックすることを含み、前記ファシリティ・インジケータは、無条件に又は構成インジケータの制御下で設定される、前記請求項1ないし3のいずれかに記載の方法。
前記再構成することは、前記コンピュータ内で、前記1つのアーキテクチャ・モードをサポートするために1又は複数の操作をディスエーブルにすることをさらに含み、前記1又は複数の操作は、前記別のアーキテクチャ・モードから元の前記1つのアーキテクチャ・モードへ切り替えるための切り替え操作を含み、元の前記1つのアーキテクチャ・モードへの切り替えがディスエーブルにされる、前記請求項1ないし4のいずれかに記載の方法。
前記ディスエーブルにすることは、元の前記1つのアーキテクチャ・モードへ切り替える要求に基づいてエラーを与えるように、Signal Processor命令の処理を変更することを含む、請求項5に記載の方法。
前記再構成することは、プロセッサ信号操作の処理を変更することを含み、前記コンピュータのアーキテクチャ・モードを、これが現在ある前記アーキテクチャ・モードに設定するための前記プロセッサ信号操作は、前記コンピュータが現在前記アーキテクチャ・モードにあることを示す状況の格納をもたらし、この状況は、前記プロセッサ信号操作の発行者により受け入れ可能なものとして扱われる、前記請求項1ないし7のいずれかに記載の方法。
前記1つのアーキテクチャ・モードはレガシー・モードであり、前記別のアーキテクチャ・モードは強化されたモードであり、前記第1セットのサポートされたフィーチャは、31ビット・アドレッシング及び32ビット汎用レジスタの使用を含み、前記第2セットのサポートされたフィーチャは、64ビット・アドレッシング及び64ビット汎用レジスタの使用を含む、前記請求項1ないし8のいずれかに記載の方法。
前記コンピュータは、ホスト・プロセッサ、第1レベルの仮想化における第1のゲスト仮想マシン、及び第2レベルの仮想化における第2のゲスト仮想マシンを有する仮想ゲストコンピュータであり、前記再構成することは、前記ホスト・プロセッサ及び前記第1のゲスト仮想マシンに関して実行されるが、前記第2のゲスト仮想マシンに関しては実行されず、前記第2のゲスト仮想マシンは前記1つのアーキテクチャ・モードで開始され、処理する、前記請求項1ないし9のいずれかに記載の方法。
前記異なるパワーオン・シーケンスは、前記別のアーキテクチャ・モードで前記コンピュータ・システムの操作を制御するための新しいプログラム状況ワードを作成することを含み、前記新しいプログラム状況ワードを作成することは、前記別のアーキテクチャ・モードを示すように、前記新しいプログラム状況ワード内のアーキテクチャ・モード・インジケータを反転させることを含む、請求項12に記載のコンピュータ・システム。
前記新しいプログラム状況ワードを作成することは、前記別のアーキテクチャ・モードにより示される形式を有するように前記新しいプログラム状況ワードを形成することであって、前記形式は、アドレス・フィールドを第1のサイズから第2のサイズへ拡張させることを含む、形成することと、前記アーキテクチャ・モード・インジケータの前記反転を実行することとを含む、請求項13に記載のコンピュータ・システム。
前記再構成することは、前記コンピュータ・システム内で、前記1つのアーキテクチャ・モードをサポートするために1又は複数の操作をディスエーブルにすることをさらに含み、前記1又は複数の操作は、前記別のアーキテクチャ・モードから元の前記1つのアーキテクチャ・モードへ切り替えるための切り替え操作を含み、元の前記1つのアーキテクチャ・モードへの切り替えがディスエーブルにされる、請求項12から請求項14までのいずれかに記載のコンピュータ・システム。
前記ディスエーブルにすることは、元の前記1つのアーキテクチャ・モードへ切り替える要求に基づいてエラーを与えるように、Signal Processor命令の処理を変更することを含む、請求項15に記載のコンピュータ・システム。
前記再構成することは、プロセッサ信号操作の処理を変更することを含み、前記コンピュータ・システムのアーキテクチャ・モードを、これが現在ある前記アーキテクチャ・モードに設定するための前記プロセッサ信号操作は、前記コンピュータが現在前記アーキテクチャ・モードにあることを示す状況の格納をもたらし、この状況は、前記プロセッサ信号操作の発行者により受け入れ可能なものとして扱われる、請求項12から請求項16までのいずれかに記載のコンピュータ・システム。
【発明を実施するための形態】
【0018】
1つの態様によると、複数の構成をサポートするように構成されたコンピューティング環境による構成の使用を制限し、制限された構成の1つ又は複数の態様を使用できなくする能力が与えられる。一例として、プロセッサは、構成アーキテクチャ・モード(CAM)で構成される。CAMにおいて、コンピューティング環境(例えば、プロセッサ、論理パーティション、ゲスト)は、もともと複数のアーキテクチャ、例えばレガシー・アーキテクチャ・モード及び強化されたアーキテクチャ用に構成されており、レガシー・アーキテクチャのような、アーキテクチャの少なくとも1つの1つ又は複数の態様がもはやサポートされなくなるように再構成される。そうした構成において、アーキテクチャのサポートされない態様は、利用することができない。
【0019】
1つの特定の例として、ESA/390及びz/Architectureのような複数のアーキテクチャ・モードをサポートするコンピューティング環境において、ESA/390の態様を使用する能力を除去する、構成z/Architectureアーキテクチャ・モード(Configuration z/Architecture Architectural Mode、CZAM)ファシリティが提供される。代わりに、z/Architecture(及び/又は、他の実施形態においては、ESA/390以外の他のアーキテクチャ)が用いられる。例として、CZAMは、ネイティブ・マシン、論理パーティション、及び/又は仮想ゲストに適用できる。
【0020】
図1を参照して、構成アーキテクチャ・モード・ファシリティの1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の一例を説明する。
図1を参照すると、一例において、コンピューティング環境100は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ(IBM(登録商標))コーポレーションにより提供されるによりz/Architectureに基づいている。z/Architectureは、非特許文献1に記載されている。コンピューティング環境はz/Architectureに基づくが、1つの好ましい実施形態においては、コンピューティング環境は、ESA/390のような1つ又は複数のアーキテクチャ構成もサポートする。
【0021】
一例として、コンピューティング環境100は、1つ又は複数の制御ユニット108を介して、1つ又は複数の入力/出力(I/O)デバイス106に結合された中央プロセッサ・コンプレックス(CPC)102を含む。中央プロセッサ・コンプレックス102は、例えば、1つ又は複数の中央プロセッサ(中央処理ユニット(CPU)としても知られる)110及び入力/出力サブシステム111に結合されたプロセッサ・メモリ104(主メモリ、主ストレージ、中央ストレージとも呼ばれる)を含み、これらの各々を以下に説明する。
【0022】
プロセッサ・メモリ104は、例えば、1つ又は複数のパーティション112(例えば、論理パーティション)と、論理パーティション・ハイパーバイザ114及び他のプロセッサ・ファームウェア115を含むプロセッサ・ファームウェア113とを含む。論理パーティション・ハイパーバイザ114の一例は、ニューヨーク州Armonk所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるProcessor Resource/System Manager(PR/SM)である。
【0023】
論理パーティションは、別個のシステムとして機能し、かつ、1つ又は複数のアプリケーション120、及び任意に、各々の論理パーティションについて異なり得る、内部の常駐オペレーティング・システム122とを有する。本発明の1つの好ましい実施形態において、オペレーティング・システムは、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/OSオペレーティング・システム、z/VMオペレーティング・システム、z/Linuxオペレーティング・システム、又はTPFオペレーティング・システムである。論理パーティション112は、プロセッサ110上で実行されているファームウェアが実装する論理パーティション・ハイパーバイザ114により管理される。本明細書で用いられるファームウェアは、例えば、プロセッサのマイクロコード及び/又はミリコードを含む。ファームウェアは、例えば、より上位レベルのマシン・コードの実装に用いられる、ハードウェア・レベルの命令及び/又はデータ構造体を含む。本発明の1つの好ましい実施形態において、ファームウェアは、例えば、典型的には、信頼できるソフトウェアを含むマイクロコードとして又は基礎をなすハードウェアに特有のマイクロコードとして配信される独自のコードを含み、システム・ハードウェアへのオペレーティング・システムのアクセスを制御する。
【0024】
中央プロセッサ110は、論理パーティションに割り当てられた物理プロセッサ・リソースである。特に、各論理パーティション112は、その各々がパーティションに割り当てられた物理プロセッサ110の全て又は割り当て分(share)を表す、1つ又は複数の論理プロセッサを有する。特定のパーティション112の論理プロセッサは、そのパーティション専用とし、そのパーティションに対して基礎をなすプロセッサ・リソース110が予約されるようにしても、又は、別のパーティションと共有し、基礎をなすプロセッサ・リソースが潜在的に別のパーティションに利用可能であるようにしてもよい。一例において、CPUの1つ又は複数は、本明細書で説明される構成アーキテクチャ・モード・ファシリティ130の態様を含む。
【0025】
入力/出力サブシステム111は、入力/出力デバイス106と主ストレージ104との間の情報の流れを方向付ける。この入力/出力サブシステム111は、中央処理コンプレックスに結合され、中央処理コンプレックスの一部とすることも又はそれとは別個のものとすることもできる。I/Oサブシステムは、中央プロセッサを、入力/出力デバイスと直接通信するタスクから解放し、データ処理が、入力/出力処理と同時に進行することを可能にする。通信を提供するために、I/Oサブシステムは、I/O通信アダプタを用いる。例えば、チャネル、I/Oアダプタ、PCIカード、イーサネット・カード、Small Computer System Interface(SCSI)カード等を含む、種々のタイプの通信アダプタがある。本明細書で説明される特定の例において、I/O通信アダプタはチャネルであり、従って、I/Oサブシステムは、本明細書ではチャネル・サブシステムと呼ばれる。しかしながら、これは一例にすぎない。他のタイプのI/Oサブシステムを用いることもできる。
【0026】
I/Oサブシステムは、入力/出力デバイス106との間の情報の流れを管理する際に、1つ又は複数の入力/出力経路を通信リンクとして使用する。この特定の例において、通信アダプタはチャネルであるので、これらの経路は、チャネル経路と呼ばれる。
【0027】
図2を参照して、CAMファシリティの1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の別の例を説明する。この例では、コンピューティング環境150は、仮想マシン・サポートを提供する中央プロセッサ・コンプレックス152を含む。CPU152は、1つ又は複数の制御ユニット108を介して、1つ又は複数の入力/出力(I/O)デバイス106に結合される。中央プロセッサ・コンプレックス152は、例えば、1つ又は複数の中央プロセッサ(中央処理ユニット(CPU)としても知られる)110及び入力/出力サブシステム111に結合されたプロセッサ・メモリ154(主メモリ、主ストレージ、中央ストレージとも呼ばれる)を含む。
【0028】
プロセッサ・メモリ154は、例えば、1つ又は複数の仮想マシン162と、ホスト・ハイパーバイザ164及び他のプロセッサ・ファームウェア165を含むプロセッサ・ファームウェア163とを含む。ホスト・ハイパーバイザ164の一例は、ニューヨーク州Armonk所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/VM(登録商標)である。
【0029】
CPUの仮想マシン・サポートは、各々がLinux(登録商標)のようなゲスト・オペレーティング・システム172をホストすることができる、多数の仮想マシン162を動作させる能力を提供する。各々の仮想マシン162は、別個のシステムとして機能することができる。つまり、各々の仮想マシンは、独立してリセットし、ゲスト・オペレーティング・システムをホストし、異なるプログラム120により動作することができる。仮想マシン内で実行されているオペレーティング・システム又はアプリケーション・プログラムは、十分かつ完全なシステムへのアクセスを有するように見えるが、実際には、その一部分しか利用可能ではない。Linuxは、米国、他の国々、又はその両方におけるLinus Torvaldsの登録商標である。
【0030】
この特定の例において、仮想マシンのモデルはV=Vモデルであり、仮想マシンの絶対メモリ又は実メモリは、実メモリ又は絶対メモリの代わりにホスト仮想メモリによってバッキングされる。各々の仮想マシンは仮想線形メモリ空間を有する。物理リソースはホスト164によって所有され、共用物理リソースは、それぞれの処理要求に応じるために、必要に応じてホストによってゲスト・オペレーティング・システムにディスパッチされる。このV=V仮想マシン(すなわち、ページング可能ゲスト)モデルでは、典型的には、ゲストが多数であるために、ホストがハードウェア・リソースを単にパーティション化して、構成済みゲストにそのハードウェア・リソースを割り当てることが妨げられるので、ゲスト・オペレーティング・システムと物理的な共用マシン・リソースとの間の対話がホストによって制御されるものと想定している。V=Vモデルの1つ又は複数の態様は、非特許文献2にさらに説明される。
【0031】
中央プロセッサ110は、仮想マシンに割り当て可能な物理プロセッサ・リソースである。例えば、仮想マシン162は1つ又は複数の論理プロセッサを含み、その各々は仮想マシンに動的に割り当て可能な物理プロセッサ・リソース110の全て又は割り当て分を表す。仮想マシン162は、ホスト164によって管理される。
【0032】
本発明の1つの好ましい実施形態においては、ホスト(例えば、z/VM(登録商標))及びプロセッサ(例えば、System z)のハードウェア/ファームウェアは、ゲスト・オペレーティング・システムとホストとの間で制御を転送する必要なしに、V=Vゲスト・オペレーティング・システム動作を処理するために、制御連携方式で相互に対話する。ページング可能ストレージ・モード・ゲストについて命令を解釈実行するのを可能にするファシリティを介して、ゲスト動作をホストの介入なしに直接実行することができる。このファシリティは、Start Interpretive Execution(解釈実行開始、SIE)という命令を提供し、この命令は、ゲスト(仮想マシン)の状態及び制御を保持する状態記述という制御ブロックを指定して、ホストが発行することができる。この命令は、マシンを解釈実行モードにするものであり、そのモードでは、ホストの注意を必要とする条件が発生するまでゲスト命令及び割り込みが直接処理される。このような条件が発生すると、解釈実行が終了し、ホスト割り込みが提示されるか又はSIE命令が検出された条件の詳細の格納を完了し、この後者のアクションはインターセプトと呼ばれる。解釈実行の一例は、非特許文献3に説明される。
【0033】
具体的には、本発明の1つの好ましい実施形態において、解釈実行ファシリティが、仮想マシンの実行のための命令を提供する。Start Interpretative Execution(SIE、解釈実行開始)と呼ばれるこの命令は、ゲスト実行環境を確立するホストにより発行される。ホストは、実マシンを直接管理する制御プログラムであり、ゲストは、任意の仮想マシン又は解釈されるマシンを指す。マシンは、SIE命令を発行するホストにより、解釈実行モードにされる。このモードにおいて、マシンは、選択されたアーキテクチャ(例えば、z/Architecture、ESA/390)の機能を提供する。この機能は、例えば、特に特権及び問題プログラム命令の実行、アドレス変換、割り込み処理及びタイミングを含む。マシンは、該マシンが仮想マシンの文脈で実行する機能を解釈すると言われる。
【0034】
SIE命令は、ゲストの現在の状態に関連する情報を含む、状態記述と呼ばれるオペランドを有する。SIEの実行が終了すると、制御がホストに戻される前に、ゲストPSWを含むゲストの状態を表す情報は、状態記述に保存される。
【0035】
解釈実行アーキテクチャは、ページング可能ストレージ・モードと呼ばれる絶対ストレージのためのストレージ・モードを提供する。ページング可能ストレージ・モードにおいては、ホスト・レベルにおける動的アドレス変換が、ゲストの主ストレージをマッピングするために用いられる。ホストは、ページング可能ストレージ・モード・ゲストの実ストレージを、ホストDATを用いることによってホスト実ストレージのどの場所でも、使用可能なフレームに拡散させ、かつ、ゲスト・データを補助ストレージにページアウトする能力を有する。この技術は、ゲスト用絶対ストレージの連続的な範囲の期待される外観を保持しながら、実マシン・リソースを割り当てる際に柔軟性を与える。
【0036】
仮想マシン環境は、DATのアプリケーションを二度呼び出すことができる:最初は、ゲスト・レベルで、ゲストにより管理される変換テーブルを通じてゲスト仮想アドレスをゲスト実アドレスに変換し、次に、ページング可能ゲストに関して、ホスト・レベルで、対応するホスト仮想アドレスをホスト実アドレスに変換する。
【0037】
特定の場合には、ホストは、通常、マシンにデリゲートされた(delegated)動作の仲裁を行う必要がある。この目的のため、状態記述は、特別な条件を「トラップする」又はインターセプトするために、ホストによって設定可能な制御を含む。インターセプト制御ビットは、特定のゲスト命令に遭遇したとき、マシンが制御をホスト・シミュレーションに戻すことを要求する。介入制御は、イネーブルにされた状態のPSWへの導入をキャプチャするので、ホストは、ゲストのために保留状態を保持する割り込みを提示することができる。解釈が進行する間、別の実プロセッサ上のホストによって、介入制御を非同期的に設定することができる。マシンは、ストレージから制御を周期的に再フェッチするので、更新された値が認識される。これにより、時期尚早に解釈を妨げることなく、ゲスト割り込みを保留状態にすることができる。
【0038】
本発明の1つの好ましい実施形態において、状態記述におけるモード制御は、ゲストがESA/390モードで実行されるか又はz/Architectureモードで実行されるかを指定し、ホスト・ストレージ内のゲスト仮想マシンのゲスト主ストレージを表すための複数の方法の1つを選択する。本発明の1つの好ましい実施形態によると、第1のアーキテクチャ・モード及び第2のアーキテクチャ・モード(例えば、それぞれz/Architecture及びESA/390)にあるゲスト間で選択するために、状態制御において制御ビットが与えられる。本発明の別の好ましい実施形態によると、2つの別個の命令が、ホストに、第1及び第2のゲスト仮想マシンを生成する能力を与えることができ、例えば、別個の命令SIEz及びSIEeを与えて、それぞれ、z/Architectureモード及びESA/390モードでゲスト・マシンを開始することができる。
【0039】
サーバのタイム・スライスが消費されるまで、又は、ハードウェアが仮想化できない動作又は制御プログラムがそれに関する制御を回復する動作をサーバが実行する必要が発生するまで、SIE命令は、制御プログラムによってディスパッチされた仮想サーバを実行する。その時点で、SIE命令は終了し、制御は制御プログラムに戻り、制御プログラムはその命令をシミュレートするか又は仮想サーバを強制待機状態にする。完了すると、制御プログラムは、実行するよう仮想サーバを再びスケジュールし、サイクルが再び始まる。このようにして、CPUの全能力及び速度が仮想サーバに利用可能になる。制御プログラムによる支援又は妥当性検査を必要とする特権命令だけがインターセプトされる。これらのSIEインターセプトは、そう呼ばれるように、仮想サーバが実デバイス上で実行できる動作に対して制限を課すために制御プログラムよって使用される。
【0040】
SIEに関するさらなる詳細は、非特許文献4に記載されている。
【0041】
図3を参照して、構成アーキテクチャ・モード・ファシリティの1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の更に別の例を説明する。この例では、コンピューティング環境200は、z/Architecture及びESA/390を含む複数のアーキテクチャ・モード用に構成された、パーティション化されていない環境を含む。例えば、コンピューティング環境200は、例えば構成アーキテクチャ・モード・ファシリティ204及び1つ又は複数のキャッシュ206を含むプロセッサ(中央処理ユニット−CPU)202を含む。プロセッサ202は、1つ又は複数のキャッシュ210を有するメモリ部分208、及び入力/出力(I/O)サブシステム212に通信可能に結合される。I/Oサブシステム212は、例えば、データ入力デバイス、センサ、及び/又はディスプレイなどの出力デバイスを含むことができる外部I/Oデバイス214に通信可能に結合される。
【0042】
図4を参照して、構成アーキテクチャ・モード・ファシリティの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、又はその他により提供されるアーキテクチャに基づく他のマシンを含むことができる。Intel及びItaniumは、米国及び他の国々におけるIntel Corporation又はその子会社の商標又は登録商標である。
【0043】
ネイティブ中央処理ユニット302は、環境内での処理の際に用いられる1つ又は複数の汎用レジスタ及び/又は1つ又は複数の専用レジスタなどの1つ又は複数のネイティブ・レジスタ310と、構成アーキテクチャ・モード・ファシリティ311とを含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【0044】
さらに、ネイティブ中央処理ユニット302は、メモリ304内に格納された命令及びコードを実行する。1つの特定の例において、中央処理ユニットは、メモリ304内に格納されたエミュレータ・コード312を実行する。このコードにより、1つのアーキテクチャにおいて構成されたコンピューティング環境が、1つ又は複数の他のアーキテクチャをエミュレートすることが可能になる。例えば、エミュレータ・コード312により、PowerPCプロセッサ、PowerSytemsサーバ、HP Superdomeサーバ又は他のものなどの、z/Architecture以外のアーキテクチャに基づくマシンが、z/Architecture(及び/又はESA/390)をエミュレートし、z/Architectureに基づいて開発されたソフトウェア及び命令を実行することが可能になる。
【0045】
図5を参照して、エミュレータ・コード312に関する更なる詳細が、説明される。ゲスト命令350が、ネイティブCPU302のもの以外のアーキテクチャにおいて実行されるように開発されたソフトウェア命令(例えば、マシン命令と相関する)を含む。例えば、ゲスト命令350は、z/Architectureプロセッサ202上で実行されるように設計されるが、代わりに、例えばIntel Itanium IIプロセッサとすることができるネイティブCPU302上でエミュレートされることもある。一例において、エミュレータ・コード312は、メモリ304から1つ又は複数のゲスト命令350を取得し、取得された命令に対してローカル・バッファリングを任意に提供するための命令フェッチ・ルーチン352を含む。エミュレータ・コード312また、取得されたゲスト命令のタイプを判断し、ゲスト命令を1つ又は複数の対応するネイティブ命令356に変換するための命令変換ルーチン354も含む。この変換は、例えば、ゲスト命令により実施される機能を識別することと、その機能を実施するためのネイティブ命令を選択することとを含む。
【0046】
さらに、エミュレータ・コード312は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン360を含む。エミュレーション制御ルーチン360は、ネイティブCPU302に、1つ又は複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、こうした実行の最後に、次のゲスト命令又はゲスト命令のグループの取得をエミュレートするように、制御を命令フェッチ・ルーチンに戻させることができる。ネイティブ命令356の実行は、データをメモリ304からレジスタにロードすること、データをレジスタから再びメモリに格納すること、又は変換ルーチンによって定められるような何らかのタイプの算術演算又は論理演算を実施することを含むことができる。
【0047】
各ルーチンは、例えば、メモリ内に格納され、ネイティブ中央処理ユニット302によって実行される、ソフトウェアで実装される。他の例において、1つ又は複数のルーチン又は演算は、ファームウェア、ハードウェア、ソフトウェア、又はそれらの何らかの組み合わせで実装される。エミュレートされるプロセッサのレジスタは、ネイティブCPUのレジスタ310又はメモリ304内の位置を使用して、エミュレートすることができる。実施形態において、ゲスト命令350、ネイティブ命令356、及びエミュレータ・コード312は、同一のメモリ内に存在してもよく、又は、異なるメモリ・デバイスの間に分配されてもよい。
【0048】
上述のコンピューティング環境は、使用できるコンピューティング環境の単なる例に過ぎない。これらに限定されるものではないが、他のパーティション化されていない環境、他のパーティション化された環境、及び/又は他のエミュレートされた環境を含む他の環境を用いてもよく、実施形態は、いずれか1つの環境に限定されるものではない。
【0049】
1つ又は複数の態様によると、環境の再構成を制御するために、コンピューティング環境の1つ又は複数のプロセッサ(例えば、中央処理ユニット)内に、構成アーキテクチャ・モード(CAM)ファシリティがインストールされる。例えば、CAMが、複数のアーキテクチャ・モードをサポートするコンピューティング環境内にインストールされると、コンピューティング環境は、アーキテクチャ・モードの少なくとも1つの1つ又は複数の態様の使用が制限されるように再構成される。
【0050】
構成アーキテクチャ・モード・ファシリティの1つの特定の例は、構成z/Architectureアーキテクチャ・モード(CZAM)ファシリティである。例えば、CZAMのインストールは、例えば1に設定されたビット138などのファシリティ・インストール・インジケータにより示される。1つの特定の例において、ビット138が1に設定されると、CZAMファシリティがインストールされ、インストール時に、通常リセット及びクリア・リセットにより、構成がz/Architectureアーキテクチャ・モードになる。従って、一例において、例えば、z/Architectureアーキテクチャ・モードを示す、ビット2などのファシリティ・ビットは、アクティブであり、同じく1に設定される。
【0051】
CZAMのインストールに基づいて、コンピューティング環境(例えば、シングル・プロセッサ、論理パーティション、仮想ゲスト等)は、例えばESA/390などの選択されたアーキテクチャの1つ又は複数の態様がもはやサポートされなくなるように、再構成される。もはやサポートされなくなるそれらの態様、及び/又はCZAMのインストールにより影響を受けるプロセスが、以下に説明される。
【0052】
本明細書に説明される実施形態において、複数のアーキテクチャ・モードは、レガシー・アーキテクチャ(例えば、ESA/390)及び強化されたアーキテクチャ(例えば、z/Architecture)を含み、レガシー・アーキテクチャ(ESA/390)の態様は、もはやサポートされないが、他の実施形態は、他のアーキテクチャを含むことができる。ESA/390及びz/Architectureは、例に過ぎない。
【0053】
CZAMのインストールにより影響を受ける1つのプロセスは、パワーオン・プロセスである。このプロセスがどのように影響を受けるかを説明するために、最初に、
図6−
図7を参照して、複数のアーキテクチャ構成をサポートし、CZAMファシリティを含まない環境についてのパワーオン・プロセスを説明し、次に、
図9−
図10を参照して、複数のアーキテクチャ構成をサポートし、CZAMファシリティを含む環境についてのパワーオン・プロセスを説明する。システムのパワーオンは、例えば、システムを開始し、ブート・シーケンス又はシステムにおける開始操作の他の手段を開始することを含む。パワーオンは、物理的パワーオン、ハードウェア・リセット、及び/又は仮想パワーオン(例えば、エミュレートされたシステム、仮想マシン、又はゲスト環境における)に対応し得る。
【0054】
最初に
図6を参照すると、コンピューティング環境のプロセッサをパワーオンし、例えば、ロード・ノーマル・キー又はロード・クリア・キーなどのオペレータ・キーをアクティブにすることに基づいて、プロセッサは、ロード状態になり、コンピューティング環境を、例えばESA/390モードなどの特定のアーキテクチャ・モードに設定する(ステップ400)。例えば、チャネル制御ワード(channel control word、CCW)の初期プログラム・ロード(initialprogram load、IPL)のような初期プログラム・ロード(IPL)が実行される(ステップ402)。初期プログラム・ローディングは、指定されたデバイスからプログラムを読み取り、そのプログラムの実行を開始するための手動手段を提供する。CCWタイプのIPLは、ロード・ユニット・アドレス制御を、入力デバイスを指示する4桁の数字に設定し、その後、特定のCPUについてロード・クリア・キー又はロード・ノーマル・キーをアクティブにすることにより、手作業で開始される。
【0055】
ロード・クリア・キーをアクティブにすると、構成に対してクリア・リセットが実行され、ロード・ノーマル・キーをアクティブにすると、このCPU(キーがアクティブにされたCPU)に対して初期CPUリセットが実行され、CPUリセットが構成内の他の全てのCPUに伝搬され、構成の残りに対してサブシステム・リセットが実行される。ロード・クリア・キー又はロード・ノーマル・キーをアクティブにすると、アーキテクチャ・モード(例えば、ESA/390)が設定される。
【0056】
操作のローディング部分の中で、リセットが実行された後は、このCPUはロード状態に入る。このCPUは、リセット操作の実行中、必ずしも停止状態に入るとは限らない。CPUがロード状態にあるときは、ロード・インジケータはオンである。
【0057】
その後、ロード・ユニット・アドレス制御により指定されているI/Oデバイスから、チャネル・プログラム読み取り操作が開始される。チャネル・プログラムの実行効果は、あたかも、絶対ストレージ位置0で始まる形式0のCCWで、修飾子ビットを0、データ・アドレスを0、バイト・カウントを24、チェーン・コマンド及びSLIフラグを1、そして他の全てのフラグを0に設定して、読み取りコマンドを指定した場合と同じになる。
【0058】
IPLの入力/出力操作が正常に完了すると、IPLデバイスのサブシステム識別ワードが、選択された絶対ストレージ位置(例えば、位置184−187)に格納され、他の選択された絶対ストレージ位置(例えば、位置188−191)には0が格納され、選択された絶対ストレージ位置(例えば、位置0−7)から、新しいプログラム状況ワード(PSW)がロードされる(ステップ404)。プログラム状況ワードは、コンピューティング環境の操作を制御する。
【0059】
PSWロードが成功し、マシンの誤動作が検出されなければ、このCPUはロード状態を終了し、ロード・インジケータはオフにされる。速度制御が処理の位置に設定されている場合、CPUは動作状態になり、新しいプログラム状況ワード(PSW)の制御下で、コンピューティング環境の操作が進行する(ステップ406)。次に、
図7を参照してさらに説明されるように、ブートされたコンピューティング環境が実行される(ステップ408)。
【0060】
図7を参照すると、ブートされたコンピューティング環境が、ESA/390モードで開始され(ステップ420)、従って、操作は、ESA/390モードで実行される(ステップ422)。ある時点で、アーキテクチャ・モードをESA/390からz/Architectureに変更する要求を行うことができる。具体的には、プログラムは、指令コード(order code)(例えば、Set Architecture(アーキテクチャ設定)を指定するコード)をプロセッサに送り、プロセッサは、ESA/390モードからz/Architectureモードに切り替えるための指令コードによりSignal Processor(SIGP)命令を発行する(ステップ424)。例えば、Signal Processor命令(後述される)及びアーキテクチャ設定のためのものを含む、指令コードを解釈し、サーバ上で実行するための機構を含むCPUの信号発信(signaling)及び応答ファシリティが使用される。ファシリティは、割り当てられた指令コードのセットを伝送し、受信し、デコードする;指定された操作を開始する;及びCPUの信号発信に応答することを含む、CPU間の通信を提供する。アーキテクチャ設定の使用により、アーキテクチャ・モードは、所望の構成、例えばz/Architectureに設定される。この処理の更なる詳細を以下にさらに説明する。
【0061】
その後、SIGP操作が受け入れられたかどうかについての判断が行われる(問い合わせ426)。戻りコードに基づいて、CPUが既にコードに指定されたアーキテクチャ・モードにある(即ち、アーキテクチャ設定が現在のモード自体への切り替えを表すか、又はこれが1つのモードから別のモードへの切り替えであるかどうか)の判断がなされたときの「無効パラメータ」表示を含む、多数のエラー条件を診断することができる。SIGPが受け入れられ、アーキテクチャ設定がレガシー・モード切り替え操作を表す場合、SIGP操作を受けたコンピューティング環境の全てのプロセッサは、例えば、本明細書で説明されるアーキテクチャ設定処理を用いて、z/Architectureにモードに移行する(ステップ428)。しかしながら、SIGP操作が合法でない場合、エラーが示される(ステップ430)。
【0062】
上述のように、パワーオン操作により、プログラム状況ワードがロードされる。
図8を参照して、プログラム状況ワード(PSW)の形式の本発明の1つの好ましい実施形態を説明する。
図8を参照すると、この例では、プログラム状況ワードの形式は、以下に示されるようにビット31がEAとして示される点を除いて、ESA/390の形式である。
【0063】
本発明の1つの好ましい実施形態において、プログラム状況ワード500は、一例として、以下のフィールドを含む。
マスク毎(Per Mask)(R)502:ビット1は、CPUがプログラム・イベント記録(PER)と関連した割り込みに関してイネーブルにされるかどうかを制御する。ビットが0である場合、PERイベントが割り込みを引き起こすことはない。ビットが1である場合、割り込みは許容され、制御レジスタ9内のPERイベント・マスク・ビットに左右される。
DATモード(T)504:ビット5は、ストレージにアクセスするのに用いられる論理及び命令アドレスの暗黙的な動的アドレス変換(DAT)が行われるかどうかを制御する。ビットが0である場合、DATはオフであり、論理及び命令アドレスは実アドレスとして扱われる。ビットが1である場合、DATはオンであり、動的アドレス変換機構が呼び出される。
【0064】
I/Oマスク(IO)506:ビット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割り込みが発生することがある。
外部マスク(EX)508:ビット7は、CPUが、外部クラス内に含まれる条件による割り込みに関してイネーブルにされるかどうかを制御する。ビットが0である場合、外部割り込みが発生することはない。ビットが1である場合、外部割り込みは、制御レジスタ0内の対応する外部サブクラス・マスク・ビットに左右される。サブクラス・マスク・ビットが0である場合、サブクラスと関連した条件が割り込みを発生させることはない。サブクラス・マスク・ビットが1である場合、そのサブクラス内の割り込みが発生し得る。
【0065】
PSWキー(キー)510:ビット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キーの代わりに使用される。
【0066】
ビット12 512:このビットは、現在のアーキテクチャ・モードを示す。このビットは、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に気付くことができない。
【0067】
マシン・チェック・マスク(M)514:ビット13は、CPUが、マシン・チェック条件による割り込みに対してイネーブルにされるかどうかを制御する。ビットが0である場合、マシン・チェック割り込みが発生することはない。ビットが1である場合、システム損傷及び命令処理損傷に起因するマシン・チェック割り込みが許容されるが、他のマシン・チェック・サブクラス条件に起因する割り込みは、制御レジスタ14内のサブクラス・マスク・ビットに左右される。
【0068】
待機状態(W)516:ビット14が1である場合、CPUは待機中である、つまり、命令はCPUにより処理されず、割り込みが発生し得る。ビット14が0である場合、命令のフェッチ及び実行は、通常の方法で行われる。ビットが1である場合、待機インジケータは1である。
【0069】
問題状態(P)518:ビット15が1である場合、CPUは問題状態(problem state)にある。ビット15が0である場合、CPUは、スーパーバイザ状態(supervisor state)にある。スーパーバイザ状態においては、全ての命令が有効である。問題状態においては、意味のある情報を問題プログラムに提供し、かつ、システムの完全性に影響を与えることのない命令のみが有効であり、そうした命令は、非特権(unprivileged)命令と呼ばれる。問題状態において有効ではない命令は、特権(priviledged)命令と呼ばれる。問題状態において、CPUが特権命令を実行しようと試みるとき、特権操作例外が認識される。準特権(semiprivileged)命令と呼ばれる命令の別のグループは、特定の権限試験が満たされる場合にのみ、問題状態においてCPUにより実行され、そうでない場合には、違反した特定の要件に応じて、特権操作例外又は何らかの他のプログラム例外が認識される。
【0070】
アドレス空間制御(AS)520:ビット16及び17は、PSWビット5と共に、変換モードを制御する。
【0071】
条件コード(CC)522:ビット18及び19は、条件コードの2つのビットである。条件コードは、特定の命令の実行において得られる結果に応じて、0、1、2、又は3に設定される。大部分の算術及び論理演算、並びに一部の他の演算が、条件コードを設定する。命令BRANCH ON CONDITIONは、分岐のための基準として、条件コード値の任意の選択を指定することができる。
【0072】
プログラム・マスク524:ビット20−23は、4つのプログラム・マスク・ビットである。各ビットは、次のように、プログラム例外と関連付けられる。
【表1】
【0073】
マスク・ビットが1のとき、例外は割り込みをもたらす。マスク・ビットが0のとき、割り込みは発生しない。HFP・有効数字・マスク・ビットのHFP・指数・アンダー・フロー・マスク・ビットの設定もまた、対応する例外が発生するときに演算が完了する方式を決定する。
【0074】
拡張アドレッシング・モード(EA)526:ビット31は、ビット32、即ち基本アドレッシング・モード・ビットと共に、有効アドレス(effective address)のサイズ及び有効アドレス生成を制御する。ビット31が0の場合、アドレッシング・モードは、ビット32により制御される。ビット31及び32が両方とも1の場合、64ビット・アドレッシングが指定される。
【0075】
基本アドレッシング・モード(BA)528:ビット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】
【0076】
命令アドレス530:PSWのビット33−63は、命令アドレスである。アドレスは、CPUが待機状態(PSWのビット14が1)でない限り、実行される次の命令の左端バイトの位置を指定する。
【0077】
1つの態様によると、構成z/Architecruteアーキテクチャ・モード(CZAM)ファシリティのような構成アーキテクチャ・モード・ファシリティが、コンピューティング環境にインストールされ、アクティブにされると、パワーオン・プロセスが変更される。
図9を参照して、CZAMパワーオン・プロセスの本発明の1つの好ましい実施形態が説明される。
【0078】
図9を参照すると、コンピューティング環境のプロセッサのパワーオンに基づき、CZAMがインストールされると、コンピューティング環境が、例えば、z/Architectureモード(ESAMEとも呼ばれる)などの構成アーキテクチャ・モード・ファシリティが指定する特定のアーキテクチャ・モードに設定される(ステップ600)。例えば、ステップ602において、上述のように、チャネル制御ワード(CCW)初期プログラム・ロード(IPL)のような初期プログラム・ロード(IPL)が実行され、IPL入力/出力操作が正常に完了すると、IPLデバイスについてのサブシステム識別ワードが選択された絶対ストレージ位置(例えば、位置184−187)に格納され、他の選択された絶対ストレージ位置(例えば、位置188−191)に0が格納され、この実施形態において、絶対ストレージ位置(例えば、位置0−7)から、16バイトの新しいプログラム状況ワード(PSW)が生成される(ステップ604)。新しい16バイトPSWは、例えば、選択されたストレージのダブルワード(例えば、位置0−7)から形成される。ダブルワードのビット12は、1となり、そうでない場合は、エラーが示され得る。(エラーは、認識される指定例外、マシン・チェック、又は別のエラー表示であり得る)。新しく作成されたPSWのビット0−32は、ビット12が反転されることを除いて、選択されたダブルワードのビット0−32に設定される。新しく作成されたPSWのビット33−96は、0に設定される。新しく作成されたPSWのビット位置97−127は、選択されたダブルワードのビット33−63から初期化される。
【0079】
本発明の1つの好ましい実施形態において、命令によりロードされるPSWフィールドは、それらがロードされる前に、妥当性に関してチェックされない。本発明の1つの好ましい実施形態において、PSWのビット12は、妥当性に関してチェックされる。さらに本発明の別の好ましい実施形態において、全てのフィールドは、妥当性に関してチェックされる。本発明の別の好ましい実施形態において、PSWのロード前にチェックされなかったいずれのビットも、PSWが初期化された後、妥当性に関してチェックされ、プロセッサは、エラーを示し得る(例えば、認識される指定例外、マシン・チェック、又は別のエラー表示を生成することによって)。
【0080】
コンピューティング環境が動作状態になり、新しいプログラム状況ワード(PSW)の制御下コンピューティング環境の動作が進行する(ステップ606)。
図10を参照してさらに説明されるように、ブートされたコンピューティング環境が実行される(ステップ608)。
【0081】
図10を参照すると、ブートされたコンピューティング環境が、z/Architectureモードで開始され(ステップ620)、従って、動作は、z/Architectureモードで実行される(ステップ622)。モード切り替えは不要であり、処理は、z/Architectureモードでの処理を直接続行する。従って、本発明の1つの好ましい実施形態において、以下のステップは必要としない。:即ち、ESA/390モードからz/Architectureモードに切り替えるためのプロセッサ信号(SIGP)操作;SIGP操作が受け入れられる操作であるかどうかの判断;SIGP操作が受け入れられる操作である場合のz/Architectureへの移行;又は、SIGP操作が受け入れられない場合のエラー表示。
【0082】
コンピューティング環境のプロセッサの全て(すなわち、シングル・プロセッサ、論理パーティション、VMゲストなどの構成されている環境)は、上述のステップを行うことなく、z/Architectureモードにある。従って、本明細書で説明されるように、1つの態様によれば、ESA/390モードでブート又はパワーオンする能力が、ESA/390及びz/Architectureの両方のために構成されるコンピューティング環境から除去される。具体的には、コンピューティング環境は、複数のアーキテクチャをサポートするように構成されるが、構成されたアーキテクチャの少なくとも1つの態様を制限するための機能が与えられ、態様の1つは、そのアーキテクチャでパワーオンするための能力である。
【0083】
1つ又は複数の実施形態において、z/Architectureモードでのパワーオンは、(1)論理パーティション(ゲスト−1)及び(2)論理パーティション、及びESA/390モードでブートする必要なしにz/Architectureモードでブート及びリセットされるゲスト−2、のうちの一方を指定するための機構を提供する。この特徴は、無条件に又は構成切り替えの制御下でインストールすることができる。
【0084】
PSW初期化に関するブート・シーケンスが修正される。例えば、IPLの終わりに、絶対位置0−7におけるIPL PSWがロードされる。リセット条件がESA/390であるとき現在行われているように、ビット12は、有効なESA/390アーキテクチャ・モードにする1であり、プログラムは、ESA/390アーキテクチャ・モードでの命令の実行を続行する。CZAMがインストールされた場合、リセット条件はz/Architectureであり、ビット12は、依然として、有効なESA/390アーキテクチャ・モードにする1であるが、上述のように、16バイトz/Architectureの現PSWの形成の際、ビット12は反転される。
【0085】
パワーオン・プロセスに加えて、他のプロセス、挙動及び/又は操作も、構成アーキテクチャ・モード・ファシリティのインストールにより変更される又は影響を受けることがある。これらの影響を受けるプロセス、挙動、及び/又は操作は、ESA/390及びz/Architectureモードに特有である。しかしながら、他のタイプのアーキテクチャにおいて、類似の及び/又は異なるプロセスが影響を受けることがある。1つ又は複数の実施形態において影響を受け得る例示的なプロセス、挙動及び/又は操作として、例えば、以下が挙げられる。
(1)エラーを発生することなく(又はエラーを無視することなく)、モードから自身への(z/Architectureモードからz/Architectureモードへの)切り替えをイネーブルにすること。つまり、プロセッサは、SIGP命令を発行して、z/Architectureモードに切り替えることができ、プロセッサが既にそのモードにある場合、エラーは発生しない。これまで、現在のモードに対応するモードに切り替えようとする試みにより、エラーが発生した。
(2)ESA/390モードへの切り替えをディスエーブルにすること。CZMをインストールし、アクティブにすることに基づいて、ESA/390への切り替えがディスエーブルにされ、今やエラーが発生する。ESA/390への再切り替えは、PSWのビット12をチェックすることにより防止され、ビット12がz/Architectureモードを示すように設定されない場合(ストレージ内の「1」のビット12により表され、このビットは、ESA/390 PSWが有効なz/Architecture PSWに変換されたとき、PSWにおけるz/Architectureを表すように、ビット「0」に反転される)、例外が発生する。
(3)ビット12の処理を制限するために、Load PSW(PSWロード)操作を変更すること。構成z/Architectureアーキテクチャ・モード・ファシリティがインストールされている場合、PSWロードは、その第2のオペランドが1でない場合には、指定例外を認識する。PSWロードは、ビット12が反転されることを除いて、その第2のオペランドのビット0−32を、そして、オペランドのビット33−63を、現PSWのそれぞれ、ビット0−32及び97−127としてロードし、現PSWのビット33−96を0に設定する。
【0086】
図11を参照して、Load PSW命令に関する更なる詳細を説明する。本発明の1つの好ましい実施形態において、Load PSW命令700は、PSWロード操作を示すためのオペコードを含むオペコード・フィールド702、ベース・フィールド(B
2)704、及び変位フィールド(D
2)706を含む。B
2フィールドにより指定される汎用レジスタの内容をD
2フィールドの内容に加えて、ストレージ内の第2のオペランドのアドレスを形成する(第2のオペランド・アドレスと呼ばれる)。
【0087】
Load PSW命令の動作において、現PSWは、第2のオペランド・アドレスが指定する位置におけるダブルワードの内容から形成された16バイトのPSWに置き換えられる。
【0088】
ダブルワードのビット12は1となり、そうでない場合は、モデルによって、指定例外が認識され得る。構成z/Architectureアーキテクチャ・モード・ファシリティがインストールされた場合、ダブルワードのビット12が1でなければ、指定例外が認識される。
【0089】
ダブルワードのビット0−32は、ビット12が反転されることを除いて、現PSWの位置0−32に入れられる。ダブルワードのビット33−63は、現PSWの位置97−127に入れられる。現PSWのビット33−96は、0に設定される。
【0090】
シリアル化及びチェックポイント同期機能は、オペランドのフェッチ前又は後、及び再び操作の完了後に実行される。
【0091】
オペランドは、ダブルワード境界上で指定され、そうでない場合には、指定例外が認識される。モデルによって、オペランドのビット12が0である場合、指定例外が認識され得る。
【0092】
命令によってロードされるPSWフィールドは、ビット12のチェックを除き、それらがロードされる前に、妥当性に関してチェックされない。しかしながら、ロードの直後、指定例外が認識され、新しくロードされたPSWに関して以下のいずれかが真であるとき、プログラム割り込みが発生する。
*ビット0、2−4、12、又は24−30のいずれかが1である。
*ビット31及び32の両方とも0であり、ビット97−103は全て0ではない。
*ビット31及び32は、それぞれ、1及び0である。
これらの場合、操作は完了し、結果として得られる命令長コードは0である。
【0093】
全てのアドレッシング及び保護例外において、操作は抑止される。
結果の条件コード:コードは、ロードされた新しいPSWにおいて指定されるように設定される。
プログラム例外:
*アクセス(フェッチ、オペランド2)
*特権操作
*指定
【0094】
プログラミング上の注意:第2のオペランドは、ESA/390 PSWの形式を有するべきである。オペランドのビット12が0である場合、PSWロードの実行中又は実行後、指定例外が認識される。
【0095】
PSWに関する更なる詳細が、非特許文献5に記載される。
【0096】
構成アーキテクチャ・モード・ファシリティのインストールに起因して変更され得る上記のプロセス、操作及び/又は挙動に加えて、以下に説明されるように、1つ又は複数の実施形態において、リセット・モードを変更することもできる。
(4)(例えば、リセット、クリア・リセット、及びリセットのための他のアクションに関する)リセット・モードを変更すること。CZAMファシリティがインストールされているとき、CPUリセットは、例えばロード・ノーマル・キーなどをアクティブにすることにより引き起こされる場合、アーキテクチャ・モードをz/Architectureモードに設定する。
【0097】
例えば、CPUリセット、初期CPUリセット、サブシステム・リセット、クリア・リセット及びパワーオン・リセットを含む、ESA/390及びz/Architectureモードの部分として含まれる多数のリセット機能があり、その各々を以下に説明する。
【0098】
CPUリセット
CPUリセットは、機器チェック表示をクリアする手段と、破壊される情報の破壊を最小量に抑えた、CPU状態における結果の予測不能性とをもたらす。特に、CPUリセットは、CPU状態が分析又は操作の再開のために予約されるとき、チェック条件をクリアするために使用される。構成z/Architectureアーキテクチャ・モード(CZAM)ファシリティがインストールされていない場合、CPUリセットは、これがロード・ノーマル・キー(オペレータ・ファシリティ)をアクティブにすることによって引き起こされるのであれば、アーキテクチャ・モードをESA/390モードに設定する。CZAMファシリティがインストールされている場合、CPUリセットは、これがロード・ノーマル・キーをアクティブにすることによって引き起こされるのであれば、アーキテクチャ・モードをz/Architectureモードに設定する。CPUリセットによりESA/390モードが設定される場合、これは現PSWを保存するので、アーキテクチャ・モードを元のz/Architectureに変更するSignal Processor Set Architecture指令により、PSWを復元することができる。
本発明の1つの好ましい実施形態において、CPUリセットにより、次のアクションが引き起こされる。
1.現在の命令又は割り込みなどの他の処理シーケンスの実行が終了し、全てのプログラム割り込み及びスーパーバイザ呼び出し・割り込み条件がクリアされる。
2.CPUにローカルなあらゆる保留中の外部割り込み条件がクリアされる。浮動外部割り込み条件はクリアされない。
3.CPUにローカルなあらゆる保留中のマシン・チェック・割り込み条件及びエラー表示、並びにあらゆるチェック停止状態がクリアされる。浮動マシン・チェック割り込み条件はクリアされない。構成内の全てのCPUに報告され、CPUに対して保留状態にされたあらゆるマシン・チェック条件は、CPUにローカルであると言われる。
4.プリフェッチされた命令又はオペランドの全てのコピーがクリアされる。付加的に、現在のチェックポイント間隔での命令の実行が理由で格納されるあらゆる結果がクリアされる。
5.ART(Access Register Translation)ルックアサイド・バッファ及び変換ルックアサイド・バッファは、エントリをクリアする。
6.構成内のいずれかのCPU上のロード・ノーマル・キーをアクティブすることにより、リセットが引き起こされた場合、次のアクションが行われる。
a.CZAMファシリティがインストールされていないとき、CPU(及び、CPUリセット又はそれらにより実行されるCPUリセットのため、構成内の他の全てのCPU)のアーキテクチャ・モードが、z/ArchitectureモードからESA/390モードに設定される。
b.CZAMファシリティがインストールされていないとき、現PSWは、z/Architectureモードを復元するSignal Processor Set Architecture命令による後の使用のために保存される。
c.CZAMファシリティがインストールされていないとき、現PSWは、16バイトから8バイトに変更される。8バイトのPSWのビットは、次のように設定される。:即ち、ビット0−11及び13−32は、16バイトのPSWの同じビットと等しくなるように設定され、ビット12は1に設定され、ビット33−63は、16バイトのPSWのビット97−127と等しくなるように設定される。
システム・リセット・ノーマル・キーをアクティブにすることにより又はSignal Processor CPU−Reset命令により引き起こされるCPUリセット、並びにESA/390モードにおけるあらゆるCPUリセットは、キャプチャされたz/Architecture−PSWレジスタ(即ち、コード0でのSet Architecture命令、又はロード・ノーマル・キーをアクティブにすることに起因するCPUリセットのために、CPUが、z/ArchitectureモードからESA/390モードに最後に変わったときに保存されるPSW)に影響を与えない。
7.アクション1−6が完了した後、CPUは停止状態になる。CCWタイプのIPLシーケンスがそのCPUにおけるリセット機能に従うとき、CPUは、リセット機能の完了時にロード状態になり、リセット動作の実行中、必ずしも停止状態にはならない。リスト指示のIPLシーケンスがそのCPUにおけるリセット機能に従うとき、CPUは動作状態になり、リセット操作の実行中、必ずしも停止状態にはならない。
【0099】
レジスタ、ストレージの内容、及びCPUの外部の条件の状態は、CPUリセットにより変更されないままである。しかしながら、リセット時に内容を変更する操作が進行中の場合、レジスタ、記憶位置、又は状態の後の内容は予測不能である。PERFORM LOCKED OPERATIONの実行時にCPUにより保持されるロックは、CPUリセットにより解放されない。
【0100】
CPUがI/O命令を実行しているとき又はI/O割り込みを実施しているときに、CPUにおけるリセット機能が開始された場合、CPUとチャネル・サブシステムとの間の現在の動作は、完了することも又は完了しないこともあり、関連したチャネル・サブシステム・ファシリティの結果として得られる状態は、予測不可能であり得る。
【0101】
プログラミング上の注意:
1.CPUが停止状態にあるとき、状態、条件、又はフィールドの内容を変更する大部分の操作が行われないことがある。しかしながら、一部のプロセッサ信号機能及び一部のオペレータ機能により、これらのフィールドが変更されることがある。CPUリセットが生じたときにフィールドを失う可能性を排除するために、CPUを停止すべきであり、オペレータ機能が進行中であってはならない。
2.アーキテクチャ・モードがESA/390モードに変更され、現PSWのビット31が1である場合、PSWは無効である。
【0102】
初期CPUリセット
初期CPUリセットは、現PSWの初期化、キャプチャされたz/ArchitecturePSW、CPUタイマ、クロック・コンパレータ、プリフィックス、ブレーキング・イベント・アドレス制御、浮動小数点制御、及び時刻(Time of Day、TOD)プログラム可能レジスタと共に、CPUリセットの機能を提供する。CZAMファシリティがインストールされていない場合、初期CPUリセットは、ロード・ノーマル・キーをアクティブにすることによりリセットが引き起こされるならば、アーキテクチャ・モードがESA/390モードに設定される。CZAMファシリティがインストールされている場合、初期CPUリセットは、これがロード・ノーマル・キーをアクティブにすることにより引き起こされるならば、アーキテクチャ・モードがz/Architectureモードに設定される。
初期CPUリセットは、CPUリセット機能を以下のクリア及び初期化機能と結合させる。
1.CZAMファシリティがインストールされていない場合、ロード・ノーマル・キーをアクティブにすることによりリセットが引き起こされるならば、CPU(及び構成内の他の全てのCPUの)アーキテクチャ・モードが、ESA/390モードに設定される。そうでない場合、CZAMファシリティがインストールされているならば、CPU(及び構成内の他の全てのCPU)のアーキテクチャ・モードは、z/Architectureモードに設定される。
2.現PSW、キャプチャされたz/Architecture−PSW、プリフィックス、CPUタイマ、クロック・コンパレータ、及びTODプログラム可能レジスタの内容が、0に設定される。IPLシーケンスがそのCPUにおけるリセット機能に従うとき、PSWの内容は、必ずしも0に設定されない。
3.制御レジスタの内容は、その初期z/Architecture値に設定される。CPUがESA/390モードにあるか又はz/Architectureモードにあるかに関係なく、制御レジスタの全ての64ビットが設定される。
4.浮動小数点制御レジスタの内容は、0に設定される。
5.ブレーキング・イベント・アドレス・レジスタの内容は、0000000000000001hexに初期化される。
これらのクリア及び初期化機能は、妥当性検査を含む。
【0103】
PSWビット12はそのモードで1となるので、動作の終わりにCPUがESA/390アーキテクチャ・モードにあるときに現PSWを0に設定することにより、PSWは無効となる。従って、この場合、新PSWを最初に導入することなく、CPUがリセット後に動作状態になった場合、指定例外が認識される。
【0104】
サブシステム・リセット
サブシステム・リセットは、浮動割り込み条件のクリア及びI/Oシステム・リセットの呼び出しのための手段を提供する。
【0105】
クリア・リセット
クリア・リセットにより、初期CPUリセット及びサブシステム・リセットが実行され、付加的に、TODクロックを除く、構成内の全てのCPUにおける全てのストレージ位置及びレジスタがクリア又は初期化される。こうしたクリアは、プログラムをデバッグする際及びユーザのプライバシーを保証する際に有用である。また、クリア・リセットにより、PERFORM LOCKED OPERATION命令によって使用される全てのロックが解放される。CZAMファシリティがインストールされていない場合、クリア・リセットにより、アーキテクチャ・モードがESA/390モードに設定される。CZAMファシリティがインストールされている場合、クリア・リセットにより、アーキテクチャ・モードがz/Architectureモードに設定される。クリアは、アドレス指定可能でないページの内容を保持するために制御プログラムが使用するダイレクト・アクセス・ストレージ・デバイスなどの外部ストレージに影響を与えない。
クリア・リセットは、初期CPU上のリセット機能を初期化機能と結合し、それにより以下のアクションが引き起こされる。
1.CZAMファシリティがインストールされていない場合、構成内の全てのCPUのアーキテクチャ・モードは、ESA/390モードに設定される。CZAMファシリティがインストールされている場合、構成内の全てのCPUのアーキテクチャ・モードは、z/Architectureモードに設定される。
2.構成内の全てのCPUのアクセス、汎用、及び浮動小数点レジスタは、0に設定される。クリア・リセットが開始されると、CPUがESA/390モードにあったか又はz/Architectureアーキテクチャ・モードにあったかに関係なく、汎用レジスタの全ての64ビットが0に設定される。
3.構成内の主ストレージの内容及び関連したストレージ・キーは、有効なチェック・ブロック・コードにより0に設定される。
4.PERFORM LOCKED OPERATION命令を実行する際に構成内のあらゆるCPUにより使用されるロックが、解放される。
5.サブシステム・リセットが実施される。
妥当性検査は、レジスタの設定、並びにストレージ及びストレージ・キーのクリアに含まれる。
【0106】
プログラミング上の注意:
1.アーキテクチャ・モードは、システム・リセット・ノーマル・キーのアクティブ化により、又はSignal Processor CPU−Reset若しくはInitial−CPU−reset指令の実行により、変更されない。構成内の全てのCPUは、同じアーキテクチャ・モードにある。
2.CPUリセット動作が変更されないままにされるフィールドの内容に影響を与えない場合、CPUは命令を実行しておらず、リセット時に全ての割り込みに関してディスエーブルにされる。CPUタイマの動作及びマシン・チェック割り込みの発生の可能性を除き、CPUを待機状態にすること、及び、I/O及び外部割り込みに対してこれをディスエーブルにすることにより、全てのCPU活動を停止させることができる。CPUタイマが更新されるとき又はマシン・チェック割り込みが発生するときにリセットを引き起こす可能性を回避するために、CPUは停止状態になる。
3.CPUリセット、初期CPUリセット、サブシステム・リセット、及びクリア・リセットは、TODクロックの値及び状態に影響を与えない。
4.CPUがチェック停止状態になる条件はモデル依存であり、現在の動作の完了を妨げる機能不良を含む。従って、CPUがチェック停止状態にある間にCPUリセット又は初期CPUリセットが実行された場合、PSW、レジスタ、及びエラー時にアクセスされるストレージ・キー及びストレージ位置を含むストレージ位置の内容は、予測不能な値を有することがあり、場合によっては、内容は、チェック停止状態がこれらのリセットによってクリアされた後、依然としてエラーになり得る。この状況において、クリア・リセットは、エラーのクリアを必要とする。
【0107】
パワーオン・リセット
マシンのコンポーネントのためのパワーオン・リセット機能は、そのコンポーネントのためのパワーオン・シーケンスの一部として実行される。TODクロック、主ストレージ、拡張ストレージ及びチャネル・サブシステムのパワーオン・シーケンスは、CPUパワーオン・シーケンスの一部として含ませることができ、又は、これらのユニットのパワーオン・シーケンスを別個に開始することができる。
CPUパワーオン・リセット:パワーオン・リセットにより、初期CPUリセットが実行され、チャネル・サブシステムにおいてI/Oシステム・リセットが実行されることも又はされないこともある。汎用レジスタ、アクセス・レジスタ、及び浮動小数点レジスタの内容は、チェック・ブロッサム・コードにより、0にクリアされる。PERFORM LOCKED OPERATIONにより使用され、CPUと関連付けられたロックは、それらが既にパワーオンしているCPUにより保持されない限り、解放される。CZAMファシリティがインストールされておらず、リセットが構成の確立と関連付けられている場合、CPUは、ESA/390モードになり、そうでない場合、CPUは、既に構成内にあるCPUのアーキテクチャ・モードになる。CZAMファシリティがインストールされている場合、CPUは、z/Architectureモードになる。
CPUリセット、初期CPUリセット、サブシステム・リセット、及びクリア・リセットは、オペレータ・ファシリティを用いて手動で開始することができる。初期CPUリセットは、初期プログラム・ロード機能の部分である。パワーオン・リセットは、パワーオンに変わる部分として実行される。
【0108】
CZAMファシリティがインストールされていない場合、リセットが、システム・リセット・クリア、ロード・ノーマル、又はロード・クリア・キーにより、又は構成を確立するCPUパワーオン・リセットにより開始されるのであれば、アーキテクチャ・モードはESA/390モードに設定され、そうでない場合、パワーオン・リセットにより、モードが既に構成内にあるCPUのモードに設定されることを除けば、アーキテクチャ・モードは変更されない。CZAMファシリティがインストールされている場合、アーキテクチャ・モードは、z/Architectureモードに設定される。
【0109】
構成アーキテクチャ・モード・ファシリティのインストールが原因で変更され得る他のプロセス、操作、及び/又は挙動が、以下に説明される。
(5)リセットが実行されると、ESA/390モードとz/Architectureモードとの間の変更を容易にするためにとられる他のリセット関連アクションを抑止する。CZAMファシリティがインストールされていない場合、現PSWは、z/Architectureモードを復元するSignal Processor Set Architecture指令による後の使用のために保存される。CZAMファシリティがインストールされていない場合、現PSWは、16バイトから8バイトに変更される。8バイトのPSWのビットは、一例では、次のように設定される。:即ち、ビット0−11及び13−32は、16バイトのPSWの同じビットに等しくなるように設定され、ビット12は1に設定され、ビット33−63は、16バイトのPSWのビット97−127に等しくなるように設定される。CZAMファシリティがインストールされている場合、PSWは、z/Architectureモードを復元するSignal Processor Set Architecture指令による後の使用のために保存されず、現PSWは、16バイトから8バイトに変更されない。
(6)CPU SCLP構成(configure Service Call Logical Processor)コマンド、及びロード・キー操作により、CPUを構成するためのプロセスを変更する。ESA/390における構成ではなく、リセットにより定められるモードで構成する。CPU SCLP構成コマンドは、対象CPUを、既に構成された状態にあるCPUのアーキテクチャ・モードにする。構成内に入れられた少なくとも第1のCPUは、CPUのパワーオン・リセットと共にそこに入れられ、そのリセットの一部分として、CPUパワーオン・リセットで定められたアーキテクチャ・モードにされる。モデルは、これが構成されるCPUのモードを設定するとき、待機状態にあるCPUのモードを代替的に設定することができる。
【0110】
ロード・クリア・キー又はロード・ノーマル・キーをアクティブにすることにより、アーキテクチャ・モードが、それぞれ、クリア・リセット又は初期CPUリセットで定められるように設定される。
【0111】
(7)Set Architecture指令によりアーキテクチャ・モードがESA/390モードに変更できないように、SIGPを変更する。
【0112】
図12を参照して、Signal Processor(SIGP)命令の本発明の1つの好ましい実施形態を説明する。1つの好ましい実施形態において、Signal Processor命令800は、例えば、プロセッサ信号操作を示すオペコードを有するオペコード・フィールド(オペコード)802、第1のレジスタ・フィールド(R
1)804、第2のレジスタ・フィールド(R
3)806、ベース・フィールド(B
2)808、及び変位フィールド(D
2)810を含む複数のフィールドを有する。R
1は、その内容が第1のオペランドである汎用レジスタを示し、R
3は、その内容が第3のオペランドである汎用レジスタを示し、R
2により示されるレジスタの内容をD
2における変位に加えて、第2のオペランドのアドレスをもたらす。
【0113】
動作において、8ビットの指令コード、及び、要求される場合は、32ビットのパラメータが、第3のオペランド内に含まれるCPUアドレスが指定するCPUに伝送される。結果は、条件コードにより示され、第1オペランド位置のビット位置32−63内に集められた状況により詳述することができる。
【0114】
第2オペランド・アドレスは、データをアドレス指定するために用いられず、代わりに、アドレスのビット56−63は、8ビットの指令コードを含む。第2オペランド・アドレスのビット0−55は無視される。指令コードは、アドレス指定されたCPUにより実施される機能を指定する。例えば、一例において、指令コードの割り当て及び定義は、以下の通りである。
【表3】
【0115】
汎用レジスタR
3のビット位置48−63内に含まれる16ビットの2進数は、CPUアドレスを形成する。レジスタのビット0−47は無視される。指定された指令が、Set Architecture指令であるとき、CPUアドレスは無視され、構成内の他の全てのCPUは、アドレス指定されるものと見なされる。
【0116】
ビット位置32−63内に32ビットのパラメータを含む汎用レジスタは、R
1又はR
1+1の、どちらかの奇数番号のレジスタである。パラメータが与えられているかどうか及びこれが使用される目的に関して、汎用レジスタは、指令コードに依存する。
【0117】
前述のオペランドは、一例において、以下の形式を有する。:
R
1により指定される汎用レジスタ:ビット0−31は使用されない;ビット32−63は状況を含む。
どちらであっても奇数番号のレジスタであるR
1又はR
1+1により指定される汎用レジスタ:ビット0−31は使用されない;ビット32−63はパラメータを含む。
R
3により指定される汎用レジスタ:ビット0−48は未使用;ビット49−63はCPUアドレスを含む。
第2オペランド・アドレス:ビット0−55は使用されない;ビット56−63は指令コードを含む。
【0118】
操作が開始する前及び操作が再び完了した後、シリアル化機能が実施される。
【0119】
指令コードが受け入れられ、非ゼロ(nonzero)状況が戻されないとき、条件コード0が設定される。状況情報がこのCPU(SIGPを実行しているCPU)により生成されるとき又はアドレス指定されたCPUにより戻されるとき、状況は、汎用レジスタR
1のビット位置32−63に入れられ、レジスタのビット0−31は変更されないままであり、条件コード1が設定される。
【0120】
アドレス指定されたCPUへのアクセス経路がビジーであるとき又はアドレス指定されたCPUが作動しているが、指令コードに応答できない状態にあるとき、条件コード2が設定される。
【0121】
アドレス指定されたCPUが非動作状態にある場合(つまり、インストールに供されていないか、構成内にないか、特定の顧客・エンジニア・テスト・モードのいずれかになっているか、又は電源がオフになっている場合)、条件コードが設定される。
【0122】
結果の条件コード
0 指令コードが受け入れられる
1 状況が格納される
2 ビジー
3 非動作状態
プログラム例外
*特権操作
*トランザクション制約
【0123】
Set Architecture Signal Processor指令がSignal Processor指令の第2オペランド・アドレスのビット位置56−63に指定されるとき、パラメータ・レジスタのビット位置56−63の内容は、構成内の全てのCPUが設定されるアーキテクチャ・モードを指定するコードとして使用される。:コード0は、ESA/390モードを指定し、コード1及び2は、z/Architectureモードを指定する。コード1は、構成内の全てのCPUの各々について、現在のESA/390PSWがアーキテクチャPSWに変換されることを規定する。コード2は、Signal Processorを実行しているCPUのPSWがz/Architecture PSWに変換されること、及び、構成内の他の全てのCPUについて、PSWがそのCPUについてのキャプチャされたz/Architecture PSWレジスタの値を有するように設定されることを規定する。キャプチャされたz/Architecture PSWレジスタがリセットにより全て0に設定されなかったならば、キャプチャされたz/Architecture PSWレジスタの値によるPSWの設定は、CPUが最後にz/Architectureモードにあったときに存在したPSWを復元する。
【0124】
パラメータ・レジスタのビット0−55は無視される。Sigal Processor指令のCPUアドレス・レジスタの内容は無視され、構成内の他の全てのCPUがアドレス指定されるものと見なされる。
【0125】
CZAMファシリティがインストールされていない場合、指令は、コードが0、1、又は2である場合にのみ受け入れられ、CPUは、既にコードにより指定されたモードにはなく、他の全てのPUの各々は停止又はチェック停止状態のいずれかになっており、かつ、他の条件は指令の受け入れを妨げない。
【0126】
CZAMファシリティがインストールされている場合、ESA/390モードへ戻るのは許容されないため、コード0は受け入れられず、CPUは既にz/Architectureアーキテクチャ・モードにあることから、コード1及び2の指定は完了をもたらし、無効パラメータ及び条件コード1を示す。Set Architecture指令により通常検証される他の必須条件は、チェックされることも又はされないこともある。
【0127】
受け入れられる場合、Signal Processorの実行中、指令は、全てのCPUにより完了する。この実施形態において、決して、異なるCPUが異なるアーキテクチャ・モードにあることはない。
【0128】
一例において、Set Architecture指令は、次のように完了する。:
・パラメータ・レジスタ内のコードが0、1、又は2でない場合、又はCPUが既にコードにより指定されるアーキテクチャ・モードにあるとき、指令は受け入れられない。代わりに、Signal Processor命令のR
1フィールドに指定されている汎用レジスタのビット55(無効パラメータ)が1に設定され、条件コード1が設定される。
・構成内の他の全てのCPUが停止又はチェック停止状態にある場合、指令は受け入れられない。代わりに、Signal Processor命令のR
1フィールドに指定されている汎用レジスタのビット54(誤り状態)が1に設定され、条件コード1が設定される。
・構成内の全てのCPUのアーキテクチャ・モードがコードで指定されているものに設定される(例えば、操作を制御するためのPSWのビット12は、指定されたアーキテクチャ・モードに設定され、及び/又は、コンピューティング環境内の別の表示は、指定されたアーキテクチャ・モードを示すように設定される)。
・指令によりアーキテクチャ・モードがESA/390からz/Architectureに変更され、コードが1である場合は、構成内の各CPUについて、8バイトの現PSWは16バイトのPSWに変更され、16バイトPSWのビットは、以下のように設定される。:即ち、ビット0−11及び13−32は8バイトPSWの同じビットと等しくなるように設定され、ビット12及びビット33−96は0に設定され、ビット97−127は8バイトPSWのビット33−63と等しくなるように設定される。また、ESA/390プリフィックスのビット19(これは、z/Architectureプリフィックスのビット51になる)は、0に設定される。
【0129】
コードが2である場合、Signal Processorを実行しているCPUのPSW及び全てのCPUのプリフィックス値は、コード1の場合におけるように設定される。構成内の他の全てのCPUの各々について、PSWは、キャプチャされたz/Architecture・PSWレジスタの値を有するように設定される。しかしながら、アーキテクチャ・モードの移行時に又はその後、CPUが、CPUリセット以外のリセットを実行した場合、キャプチャされたz/Architecture・PSWレジスタは全て0に設定された。
・指令により、アーキテクチャ・モードがz/ArchitectureからESA/390に変更された場合、構成内の各CPUについて、(1)Signal Processorを実行しているCPUの場合に更新されたPSWである現PSWが、キャプチャされたz/Architecture・PSWレジスタ内に保存され、(2)8バイトPSWのビットを以下のように設定すること:即ち、ビット0−11及び13−32は16バイトPSWの同じビットと等しくなるように設定され、ビット12は1に設定し、ビット33−63は16バイトPSWのビット97−127と等しくなるように設定することにより、16バイトPSWが8バイトPSWに変更される。z/Architectureプリフィックスのビット51(これは、ESA/390プリフィックスのビット19になる)は、変更されないままである。
・構成内の全てのCPUのALB及びTLBの内容がクリアされる。
・構成内の全てのCPUで、シリアル化及びチェックポイント同期化機能が実行される。
【0130】
指令により、アーキテクチャ・モードがz/ArchitectureからESA/390に変更され、Signal Processor命令により命令フェッチPERイベントが発生した場合、この命令のアドレスの右端31ビットだけが、ESA/390 PERアドレス・フィールドに格納される。
【0131】
本発明の1つの好ましい実施形態において、CZAMでは、以下が必須条件である。:即ち、他の全てのCPUの各々が停止又はチェック停止状態のいずれかにあり、他の条件が指令の受け入れを妨げない。CZAMファシリティがインストールされているとき、ESA/390モードに戻ることは許容されないので、コード0は受け入れられず、CPUは既にz/Architectureアーキテクチャ・モードにあるので、コード1及び2の指定は完了をもたらし、無効パラメータ及び条件コード1を示す。Set Architecture指令により通常検証される他の必須条件は、チェックされることも又はされないこともある。本発明のさらに別の好ましい実施形態において、コード1及び2でのSIGPは、更なる表示なしに、成功裏の完了を示す。
【0132】
図13を参照して、Set Architecture指令コードについてのSIGP命令の実行と関連した処理の本発明の1つの好ましい実施形態を説明する。
図13を参照すると、コンピューティング環境のプロセッサが、SIGP命令を実行し、アーキテクチャ設定操作を示す指令コードを取得する(ステップ850)。一例において、指令コードは、SIGP命令の第2オペランド・アドレスに含められる。
【0133】
付加的に、例えばSIGP命令が指定するパラメータ・レジスタから、切り替えられる要求されたアーキテクチャ・モードが取得される(ステップ852)。さらに、CZAMのような構成アーキテクチャ・モード・ファシリティがインストールされているかどうかについての判断がなされる(問い合わせ854)。これは、一例において、ファシリティ・インジケータにより判断される。
【0134】
CZAMがインストールされていない場合、CPUは既に要求されたアーキテクチャ・モードにあるかどうかについての更なる判断がなされる(問い合わせ856)。CPUが既に要求されたアーキテクチャ・モードにある場合、状況が、例えばSIGP命令に指定されたレジスタ内に与えられ(ステップ858)、状況はエラーとして扱われる(ステップ860)。しかしながら、CPUが要求されたモードにない場合(問い合わせ856)、構成されるコンピューティング環境の他のCPUが停止状態等にあるかどうかなど、命令により指定された他の条件が満たされるかどうかについての判断がなされる(問い合わせ862)。条件が満たされない場合、処理はステップ858に続く。そうでない場合には、指令は受け入れられ(ステップ864)、アーキテクチャ・モードが変更される。従って、上述のようにPSWが設定され(ステップ866)、命令のこの態様についての処理は終了する(ステップ868)。
【0135】
問い合わせ854に戻ると、CZAMがインストールされている場合、CPUが要求されたモードにあるかどうかについての判断がなされる(問い合わせ870)。CPUが既に要求されたモードにある場合、一例において、状況が与えられ、CPUは既に要求されたアーキテクチャ・モード(例えば、z/Architecture)にある(ステップ872)。しかしながら、この実施形態において、この状況は受け入れ可能であり、エラーとして扱われない(ステップ874)。これは無視されるか、又は別の実施形態においては、非エラー・コードである条件コードを与えることができる。本発明のさらに別の実施形態において、状況は、成功裏の完了を示すにすぎない。CPUが既に要求されたアーキテクチャ・モードにあったとしても、非エラーを示すために、他の可能性も存在する。
【0136】
問い合わせ870に戻ると、しかしながら、CPUが要求されたモードにない場合、1つのアーキテクチャ・モード(例えば、ESA/390)に戻るのは不正(illegal)であるので、指令は受け入れられない(ステップ876)。状況が与えられ(ステップ878)、これはエラーであるとみなされる(ステップ880)。
【0137】
本発明の1つの好ましい実施形態において、CZAMが選択可能でないファシリティとしてシステム内にあるとき、問い合わせ854を省略することができ、制御は、ステップ852から直接ステップ870に進むことができる。こうした実施形態において、ステップ854乃至868は実施されないことがある。
【0138】
本発明の別の好ましい実施形態において、現在のアーキテクチャ・モードに切り替えるための指令を受け取った場合、指令を受け入れることができず、エラーが示されることがある(ステップ874)。
【0139】
CZAMのインストールに基づいて変更できる他の挙動、プロセス、及び/又は操作は、以下を含むことができる。:即ち、
(8)ファシリティ・ビットへの変更:例えばビット138などの新しいビットが、構成z/Architectureアーキテクチャ・モード・ファシリティを示すようにファシリティ・ビットに加えられ、z/Architectureアーキテクチャ・モードがアクティブかどうかを示すビット2が1(アクティブを示す)に設定される。
【0140】
本発明の少なくとも1つの好ましい実施形態において、CZAMファシリティは、LPAR及びゲスト−1(第1レベル・ゲスト−ハイパーバイザによって開始されるゲスト(例えば、Start Interpretive Execution(SIE)命令を発行することによって))に対してインストールされているが、ゲスト−2(第2レベルのゲスト−別のゲストによって開始されるゲスト(例えば、SIE命令を発行することによって)に対してはインストールされていない。
【0141】
本発明の少なくとも1つの好ましい実施形態において、CZAMがインストールされ、z/Architectureゲスト−2が開始される場合、ゲストは、
図9の技術に従ってz/Architectureモードで開始される。しかしながら、CZAMがインストールされ、ESA/390ゲスト−2が開始される場合、この実施形態では、ゲストは、CZAMに影響を受けないので、
図6の技術に従ってESA/390モードで開始される。従って、ホスト及び第1レベル・ゲストはCZAMによって制御され、そこで、これらは、アーキテクチャ・モードのプリファレンスに関係なく、z/Architectureで開始/リセット等される(例えば、ESA/390はサポートされないので、z/Architectureにあるように強制される)が、第2レベルのESA/390ゲストは、CZAMにより影響を受けず、ESA/390において開始/リセット等を続行する。
【0142】
本明細書で説明されるように、構成z/Architectureアーキテクチャ・モード・ファシリティのような構成アーキテクチャ・モード・ファシリティをインストールすることに基づいて、複数のアーキテクチャ・モード用に構成されたコンピューティング環境の特定のプロセス、動作、及び/又は挙動が変更される。1つのこうしたプロセスは、パワーオン・プロセスである。構成アーキテクチャ・モード・ファシリティがインストールされたときのパワーオン・プロセスと関連した処理のさらなる態様が、
図14を参照して説明される。
【0143】
図14を参照すると、最初に、構成アーキテクチャ・モード・ファシリティが、複数のアーキテクチャ・モード用に構成されたコンピューティング環境にインストールされ、かつ、1つのアーキテクチャ・モード(例えば、ESA/390などのレガシー・モード)でコンピューティング環境をパワーオンするための定められたパワーオン・シーケンスを有するかどうかについての判断がなされる(ステップ900)。1つのアーキテクチャ・モードは、第1の命令セット・アーキテクチャを含み、31ビット・アドレッシング、32ビット汎用レジスタの使用、及び種々のフィーチャのような第1セットのサポートされたフィーチャを有する。構成アーキテクチャ・モード・ファシリティがインストールされていないと判断される場合(問い合わせ902)、
図6−
図7を参照して説明されるように、現在のパワーオン・シーケンスが実行される(ステップ904)。そうでない場合、コンピューティング環境は、1つのアーキテクチャ・モード(例えば、レガシーESA/390モード)の使用を制限するように再構成される(ステップ906)。再構成は、例えば、別のアーキテクチャ・モード(例えば、後の又は強化されたバージョンのアーキテクチャ・モード(例えばz/Architecture))でコンピューティング環境をパワーオンするための異なるパワーオン・シーケンスを選択することを含む(ステップ908)。別のアーキテクチャ・モードは、第2の命令セット・アーキテクチャ・モードを含み、64ビット・アドレッシング、64ビットの汎用レジスタの使用、及び動的アドレス変換のような種々のファシリティ、及び/又は他のファシリティのような第2セットのサポートされたフィーチャを有する。次に、例えば
図9−
図10を参照して説明されるように、パワーオン・シーケンスは、1つのアーキテクチャ・モードの使用を制限する他のアーキテクチャ・モードでコンピューティング環境をパワーオンするように実行される(ステップ910)。一例では、この実行は、PSWをロードし、ビット12を反転させることを含む。その後、コンピューティング環境は、他のアーキテクチャ・モード(例えば、z/Architecture)で実行される(ステップ912)。
【0144】
更に別の実施形態において、
図15を参照すると、再構成することは、切り替え操作をディスエーブルにすることを含む、1つのアーキテクチャ・モードをサポートする1つ又は複数の操作をディスエーブルにすることを含む(ステップ1000)。例えば、1つのアーキテクチャ・モード、例えばESA/390に再び切り替える要求に基づいてエラーを与えるように、Signal Processor命令が変更される。
【0145】
さらに、1つのアーキテクチャ・モードの代わりに他のアーキテクチャ・モードでパワーオンするのをサポートするために、1つ又は複数の他のプロセス、操作及び/又は挙動が変更され、1つのアーキテクチャ・モードの使用が制限される(ステップ1002)。これらの1つ又は複数の他のプロセスは、例えば、CPUを、既に構成された状態にあるCPUのアーキテクチャ・モードにするCPU SCLP構成コマンド(1004);それぞれ、アーキテクチャ・モードをクリア・リセット又は初期CPUリセットに定められるものとして設定するオペレータ・ファシリティである、ロード・クリア・キー及びロード・ノーマル・キー(1006);1つのアーキテクチャ・モードから同じアーキテクチャ・モードへの切り替えを受け入れて、状況が与えられ、エラーとして扱われないように変更されるSignal Processor命令(1008);及び構成アーキテクチャ・モード・ファシリティを示すようにファシリティ・インジケータに付加されるファシリティ・ビット(1010)を含む。
【0146】
本明細書で説明されるように、構成アーキテクチャ・モード・ファシリティのインストールにより影響を受ける別の操作は、リセット操作である。
図16を参照して、リセットと関連した処理の本発明の1つの好ましい実施形態を説明する。最初に、プロセッサは、リセット操作を取得する(例えば、受け取る、提供される、又は他の方法で取得する(ステップ1100)。本明細書で説明されるように、リセット操作は、コンピューティング環境を他のアーキテクチャ・モード(例えば、z/Architecture)にリセットするために実行される(ステップ1102)。これは、例えば、アーキテクチャのための適切な形式であるPSWを使用し、PSWのビット12を0に設定することを含む。
【0147】
本明細書で詳細に説明されるのは、複数のアーキテクチャ・モード用に構成されたコンピューティング環境によりサポートされるアーキテクチャの特定のアーキテクチャ態様の使用を制限する構成アーキテクチャ・モード・ファシリティである。一例では、構成アーキテクチャ・モード・ファシリティがインストールされ、複数のアーキテクチャ構成をサポートするコンピューティング環境を、アーキテクチャ・モードの一方(例えば、レガシー・モード)の態様はもはやサポートされないが、別のアーキテクチャ・モード(例えば、強化されたアーキテクチャ・モード)はサポートされるままであるように再構成することができる。コンピューティング環境がそのように構成される場合、コンピューティング環境が、再びサポートされないアーキテクチャ・モードに再構成することが防止される。
【0148】
更に別の実施形態において、コンピューティング環境は、z/Architectureのような選択されたアーキテクチャ・モードで動的に構成される。この実施形態において、CZAMファシリティがインストールされているかどうかをチェックすることができず、及び/又は明示的なSIGP Set Architecture指令を実行することはできない。
図17を参照して、この構成を実施するための論理の本発明の1つの好ましい実施形態を説明する。
【0149】
図17を参照すると、本発明の1つの好ましい実施形態において、プロセッサは、選択されたアーキテクチャ・モード(例えば、z/Architecture)で操作を実行するようにコンピューティング環境を構成する(ステップ1200)。構成することは、例えば、格納されたプログラム状況ワードを用いて、コンピューティング環境の初期化を開始することを含む(ステップ1202)。一例において、格納されたプログラム状況ワードは、選択されたアーキテクチャ・モードとは異なるアーキテクチャ・モードの形式を有する。従って、格納されたプログラム状況ワードは、選択されたアーキテクチャ・モードとは異なるアーキテクチャ・モードの形式を有すると判断される(ステップ1204)。その判断に基づいて、格納されたプログラム状況ワードは、選択されたアーキテクチャ・モードの形式を有するように自動的に修正される(ステップ1206)。自動的に修正することは、選択されたアーキテクチャへ切り替える明示的な要求なしに行われる。修正されたプログラム状況ワードを用いたコンピューティング環境の初期化を完了し、選択されたアーキテクチャ・モードでコンピューティング環境を構成する(ステップ1208)。
【0150】
本発明の1つの好ましい実施形態において、CZAMファシリティは、例えば、次の同時出願された、同一出願人による、Gainey他の「Architectural Mode Configuration」という名称の出願(米国特許出願第14/217840号)及びMichael K.Gschwindによる「Common Boot Sequence for Control Utility Able to be Initialized in Multiple Architectures」という名称の出願(米国特許出願第14/217800号)に記載される、No−DATファシリティ及び/又は制御ユーティリティ・ブート・ファシリティを含む1つ又は複数の他のファシリティと共に使用することができる。
【0151】
図18を参照すると、一例において、コンピュータ・プログラム製品1300は、例えば、1つ又は複数の実施形態を提供し、容易にするように、その上にコンピュータ可読プログラム・コード手段、論理及び/又は命令1304を格納するための、1つ又は複数の一時的でないコンピュータ可読ストレージ媒体1302を含む。
【0152】
本発明は、システム、方法、及び/又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことができる。
【0153】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用するための命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、即ち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、クリア可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク型読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード又は命令がその上に記録された溝の中の隆起構造などの機械的にエンコードされるデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で用いられる場合、コンピュータ可読ストレージ媒体は、電波若しくは他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルの中を通る光パルス)、又は配線を介して伝送される電気信号などの、一時的な信号自体と解釈されるべきではない。
【0154】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードしてもよく、又は、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードしてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カード又はネットワーク・インタフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するように、コンピュータ可読プログラム命令を転送する。
【0155】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データとすることができ、又は、Smalltalk、C++等のようなオブジェクト指向プログラミング言語、及び、「C」プログラミング言語若しくは類似のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組み合わせで書かれたソース・コード若しくはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、全体をユーザのコンピュータ上で実行することができ、独立型ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されることができ、一部をユーザのコンピュータ上で実行し、一部を遠隔コンピュータ上で実行することができ、又は全体を遠隔コンピュータ若しくはサーバ上で実行することができる。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、又は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを使用してインターネット経由で)接続が行われてもよい。幾つかの実施形態においては、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラマブル論理アレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
【0156】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【0157】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するための手段を生成するようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、その結果、命令をその内部に格納したコンピュータ可読ストレージ媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を含むようにすることもできる。
【0158】
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で一連の動作ステップを行わせてコンピュータ実装プロセスを生成し、それにより、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施するようにすることもできる。
【0159】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実行するための1つ又は複数の実行可能な命令を含む、モジュール、セグメント又は命令の一部を表すことができる。幾つかの代替的な実施において、ブロック内に記された機能は、図面内に記された順序とは異なる順序で行われることもある。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、ときには逆の順序で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェアベースのシステムにより実装すること、又は専用ハードウェアとコンピュータ命令との組み合わせによって実施することができることにも留意されたい。
【0160】
上記に加えて、1つ又は複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって供与、提供、配置、管理、サービス等を行うことができる。例えば、サービス・プロバイダは、1又は複数の顧客のために1つ又は複数の態様を実施するコンピュータ・コード及び/又はコンピュータ・インフラストラクチャの作成、保守、サポート等を行うことができる。見返りに、サービス・プロバイダは、例として、予約申し込み及び/又は報酬契約の下で顧客から支払いを受けることができる。付加的に又は代替的に、サービス・プロバイダは、1又は複数の第三者に対する広告内容の販売から支払いを受けることができる。
【0161】
一態様において、1つ又は複数の実施形態を実施するために、アプリケーションを配備することができる。一例として、アプリケーションの配備は、1つ又は複数の実施形態を実施するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【0162】
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを配置することができ、そこでは、コードは、コンピューティング・システムと協働して、1つ又は複数の実施形態を実施することができる。
【0163】
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、プロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、ここで、コンピュータ媒体は、1つ又は複数の実施形態を含む。コードは、コンピュータ・システムと協働して、1つ又は複数の実施形態を実施することができる。
【0164】
種々の実施形態が上述されたが、これらは例にすぎない。例えば、1つ又は複数の実施形態を組み込み、使用するために、他のアーキテクチャのコンピューティング環境を使用することもできる。さらに、異なる命令、命令形式、命令フィールド、及び/又は命令の値を使用することができる。さらにまた、他のタイプのプロセス、操作及び/又は挙動がCAMのインストールにより影響を受けることがある。多くの変形が可能である。
【0165】
さらに、他のタイプのコンピューティング環境の利益を得、これを使用することができる。一例として、プログラム・コードを格納及び/又は実行するのに適しており、システム・バスを介してメモリ要素に直接又は間接的に結合された少なくとも2つのプロセッサを含む、データ処理システムを使用することができる。メモリ要素は、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量記憶装置、及び実行中に大容量記憶装置からコードを取り出さなければならない回数を減らすために少なくとも幾つかのプログラム・コードの一時的なストレージを提供するキャッシュ・メモリを含む。
【0166】
入力/出力即ちI/Oデバイス(これらに限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サムドライブ及び他のメモリ媒体等)は、直接システムに結合することもでき、又は介在するI/Oコントローラを介してシステムに結合することができる。ネットワーク・アダプタをシステムに結合させて、データ処理システムが、介在する私的ネットワーク又は公衆ネットワークを通じて他のデータ処理システム又は遠隔プリンタ若しくはストレージ・デバイスに結合できるようにすることもできる。モデム、ケーブル・モデム及びイーサネット・カードは、ネットワーク・アダプタの利用可能なタイプのうちのほんの数例である。
【0167】
図19を参照すると、これは、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との間のより小型で高速な(下位レベルの)キャッシュとを有する階層構造とすることができる。いくつかの実施において、下位レベルのキャッシュは、命令フェッチ及びデータ・アクセスのための個別の下位レベル・キャッシュを提供するように分割される。
【0168】
本発明の1つの好ましい実施形態において、命令は、命令フェッチ・ユニット5004によりメモリ5002からキャッシュ5009を介してフェッチされる。命令は、命令デコード・ユニット5006内でデコードされ(幾つかの実施形態においては他の命令と共に)命令実行ユニット5008にディスパッチされる。典型的には、幾つかの実行ユニット5008、例えば、算術演算実行ユニット、浮動小数点実行ユニット及び分岐命令実行ユニットが用いられる。命令は、実行ユニットにより、必要に応じて命令が指定するレジスタ又はメモリからのオペランドにアクセスすることにより実行される。オペランドがメモリ5002からアクセスされる(ロードされる又はストアされる)場合には、典型的には、ロード/ストア・ユニット5005が、実行されている命令の制御下でアクセスを取り扱う。命令は、ハードウェア回路若しくは内部マイクロコード(ファームウェア)、又はこの両方の組み合わせにより実行することができる。
【0169】
既述のように、コンピュータ・システムは、ローカル(又は、主)ストレージ内の情報、並びにアドレス指定、保護、並びに参照及び変更記録を含む。アドレス指定の幾つかの態様は、アドレスの形式、アドレス空間の概念、アドレスの種々のタイプ及び1つのタイプのアドレスが別のタイプのアドレスに変換される方法を含む。主ストレージの一部は、恒久的に割り当てられたストレージ位置を含む。主ストレージは、システムに、直接アドレス可能なデータの高速アクセス・ストレージを提供する。データ及びプログラムの両方とも、これらが処理される前に(入力デバイスから)主ストレージにロードされる。
【0170】
主ストレージは、キャッシュと呼ばれることがある、1つ又は複数のより小型の高速アクセス・バッファ・ストレージを含むことができる。キャッシュは、典型的には、CPU又はI/Oプロセッサと物理的に関連付けられる。物理的構造の、性能を除いた効果及び別個のストレージ媒体の使用は、一般に、プログラムにより観察することができない。
【0171】
命令及びデータ・オペランドに対して、別個のキャッシュを維持することができる。キャッシュ内の情報は、キャッシュ・ブロック又はキャッシュ・ライン(又は、簡単に言えばライン)と呼ばれる整数境界上の連続バイトで維持される。モデルは、キャッシュ・ラインのサイズをバイト単位で戻すEXTRACT CACHE ATTRIBUTE命令を提供することができる。モデルはまた、データ又は命令キャッシュへのストレージのプリフェッチ又はキャッシュからのデータの解放を行うPREFETCH DATA及びPREFETCH DATA RELATIVE LONG命令を提供することもできる。
【0172】
ストレージは、ビットの水平の長い文字列として見ることができる。殆どの操作では、ストレージへのアクセスは、左から右への順で進行する。ビットの文字列は、8ビット単位で細分される。この8ビットの単位はバイトと呼ばれ、これは全ての情報形式の基本構成単位である。ストレージ内の各々のバイト位置は、負でない固有の整数により識別され、この整数がバイト位置のアドレス、即ち、簡単にバイト・アドレスである。隣接するバイト位置は連続するアドレスを有し、左端の0から始まって左から右へ順に進行する。アドレスは、符号なしの2進整数であり、24ビット、31ビット又は64ビットである。
【0173】
情報は、ストレージとCPU又はチャネル・サブシステムとの間で、一度に1バイトずつ、又は1グループ分のバイトで伝送される。特に断りのない限り、例えば、z/Architectureにおいて、ストレージ内のバイト・グループは、グループの左端のバイトによりアドレス指定される。グループ内のバイト数は、実行される操作により暗黙的に決定される場合、又は明示的に決定される場合がある。CPU操作に使用される場合、バイト・グループはフィールドと呼ばれる。各々のバイト・グループ内において、例えば、z/Architectureにおいて、ビットは、左から右の順に番号付けされる。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バイトの倍数又は他の倍数で)で長さが変化し得る。情報がストレージ内に配置されると、ストレージへの物理的パスの幅が格納されるフィールドの長さより大きい場合であっても、指定したフィールドに含まれているバイト位置の内容のみが置き換えられる。
【0174】
情報の特定の単位は、ストレージ内の整数境界上にあるべきである。境界は、そのストレージ・アドレスがバイトでの単位の長さの倍数である場合に、情報の単位に対して整数であると呼ばれる。整数境界上にある2バイト、4バイト、8バイト、16バイト及び32バイトのフィールドには、特別な名称が与えられる。ハーフワードは、2バイト境界上にある2個の連続したバイトのグループであり、これは命令の基本構成単位である。ワードは、4バイト境界上にある4個の連続したバイトのグループである。ダブルワードは、8バイト境界上にある8個の連続したバイトのグループである。クワッドワードは、16バイト境界上にある16個の連続したバイトのグループである。オクトワードは、32バイト境界上にある32個の連続したバイトのグループである。ストレージ・アドレスが、ハーフワード、ワード、ダブルワード、クワッドワード及びオクトワードを指定するとき、そのアドレスの2進表現では、それぞれ1個、2個、3個、4個又は5個の右端の0ビットを含む。命令は、2バイト整数境界上にあるべきである。殆どの命令のストレージ・オペランドは、境界位置合わせ要件を有さない。
【0175】
命令及びデータ・オペランドに対して別個のキャッシュを実装するデバイスにおいては、ストアが後にフェッチされる命令を変更するかどうかに関係なく、プログラムが、後にフェッチされるキャッシュ・ラインに格納される場合、著しい遅延が生じ得る。
【0176】
一例において、実施形態は、ソフトウェア(ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどとも呼ばれる場合があるが、そのいずれも1つ又は複数の実施形態と整合性がある)により実施することができる。
図19を参照すると、1つ又は複数の態様を具体化するソフトウェア・プログラム・コードは、CD−ROMドライブ、テープドライブ、又はハードドライブといった長期ストレージ媒体デバイス5011から、ホスト・システム5000のプロセッサ5001によりアクセスすることができる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はCD−ROMのようなデータ処理システムと共に使用するための種々の周知の媒体のいずれかの上で具体化することができる。コードは、こうした媒体上に分散させても、又はコンピュータ・メモリ5002からユーザに分散させても、又はこうした他のシステムのユーザが使用するために、ネットワーク5010上の1つのコンピュータ・システムのストレージから他のコンピュータ・システムに分散させてもよい。
【0177】
ソフトウェア・プログラム・コードは、種々のコンピュータ・コンポーネント及び1つ又は複数のアプリケーション・プログラムの機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体デバイス5011から相対的により高速のコンピュータ・ストレージ5002にページングされ、そこでプロセッサ5001による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び/又は、ネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、有形の媒体(これらに限定されるものではないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープ等)上に作成され格納されたとき、「コンピュータ・プログラム」と呼ばれることが多い。コンピュータ・プログラム媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
【0178】
図20は、1つ又は複数の実施形態を実施することができる代表的なワークステーション又はサーバ・ハードウェア・システムを示す。
図20のシステム5020は、随意的な周辺機器を含む、パーソナル・コンピュータ、ワークステーション、又はサーバなどの代表的なベース・コンピュータ・システム5021を含む。ベース・コンピュータ・システム5021は、1つ又は複数のプロセッサ5026と、周知の技術に従ってプロセッサ5026とシステム5021の他のコンポーネントを接続し、これらの間の通信を可能にするために用いられるバスとを含む。バスは、プロセッサ5026を、ハードドライブ(例えば、磁気媒体、CD、DVD及びフラッシュ・メモリのいずれかを含む)又はテープドライブを含むことができる、メモリ5025及び長期ストレージ5027に接続する。システム5021はまた、バスを介して、マイクロプロセッサ5026を、キーボード5024、マウス5023、プリンタ/スキャナ5030、及び/又はタッチ・センシティブ・スクリーン、デジタル化された入力パッド等のいずれかのユーザ・インターフェース機器とすることができる他のインターフェース機器といった、1つ又は複数のインターフェース機器に接続する、ユーザ・インターフェース・アダプタを含むこともできる。バスはまた、ディスプレイ・アダプタを介して、LCDスクリーン又はモニタなどのディスプレイ装置5022をマイクロプロセッサ5026にも接続する。
【0179】
システム5021は、ネットワーク5029と通信する5028ことができるネットワーク・アダプタを介して、他のコンピュータ又はコンピュータ・ネットワークと通信することができる。例示的なネットワーク・アダプタは、通信チャネル、トークン・リング、イーサネット又はモデムである。代替的に、システム5021は、CDPD(セルラー・デジタル・パケット・データ)カードのような無線インターフェースを用いて通信することもできる。システム5021は、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)又はシステム5021内のこうした他のコンピュータと関連付けることができ、又は、別のコンピュータ等とのクライアント/サーバ構成におけるクライアントとすることができる。これら構成の全て、並びに、適切な通信ハードウェア及びソフトウェアは、当技術分野において周知である。
【0180】
図21は、1つ又は複数の実施形態を実施することができるデータ処理ネットワーク5040を示す。データ処理ネットワーク5040は、各々が複数の個々のワークステーション5041、5042、5043、5044を含むことができる、無線ネットワーク及び有線ネットワークのような複数の個々のネットワークを含むことができる。さらに、当業者であれば理解するように、1つ又は複数のLANを含ませることができ、そこで、LANは、ホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含むことができる。
【0181】
さらに
図21を参照すると、ネットワークはまた、ゲートウェイ・コンピュータ(クライアント・サーバ5046)、又はアプリケーション・サーバ(データ・リポジトリにアクセスすることができ、かつ、ワークステーション5045から直接アクセスすることもできる遠隔サーバ5048)のような、メインフレーム・コンピュータ又はサーバを含むこともできる。ゲートウェイ・コンピュータ5046は、各々の個々のネットワークへの入力点のとして働く。ゲートウェイは、1つのネットワーク・プロトコルを別のものに接続するときに必要とされる。ゲートウェイ5046は、通信リンクによって別のネットワーク(例えば、インターネット5047)に結合できることが好ましい。ゲートウェイ5046はまた、通信リンクを用いて、1つ又は複数のワークステーション5041、5042、5043、5044に直接結合することもできる。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なIBM eServer System zサーバを用いて実装することができる。
【0182】
図20及び
図21を同時に参照すると、1つ又は複数の態様を具体化することができるソフトウェア・プログラム・コード5031には、一般的に、CD−ROMドライブ又はハードドライブといった長期ストレージ媒体5027から、システム5020のプロセッサ5026によってアクセスすることができる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はCD−ROMといった、データ処理システムと共に用いるための種々の周知の媒体のいずれかの上で具体化することができる。コードは、そのような媒体上で分散させても、又はメモリからユーザ5050、5051に分散させても、又は、こうした他のシステムのユーザが用いるために、ネットワーク上の1つのコンピュータ・システムのメモリ若しくはストレージから他のコンピュータ・システムに分散させてもよい。
【0183】
代替的に、プログラム・コードをメモリ5025内で具体化し、プロセッサ・バスを用いてプロセッサ5026によってプログラム・コードにアクセスすることができる。このようなプログラム・コードは、種々のコンピュータ・コンポーネント及び1つ又は複数のアプリケーション・プログラム5032の機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体5027から高速メモリ5025にページングされ、そこでプロセッサ5026による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び/又は、ネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、有形の媒体(これらに限定されるものではないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープなどを含む)に格納されたとき、「コンピュータ・プログラム」と呼ばれることが多い。コンピュータ・プログラム媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
【0184】
プロセッサが最も容易に利用できるキャッシュ(通常、プロセッサの他のキャッシュよりも高速で小さい)は、最下位(L1又はレベル1)のキャッシュであり、主ストア(主メモリ)は、最上位レベルのキャッシュ(3つのレベルがある場合にはL3)である。最下位レベルのキャッシュは、実行されるマシン命令を保持する命令キャッシュ(I−キャッシュ)と、データ・オペランドを保持するデータ・キャッシュ(D−キャッシュ)とに分割されることが多い。
【0185】
図22を参照すると、プロセッサ5026についての例示的なプロセッサの実施形態が示される。典型的には、メモリ・ブロックをバッファに入れてプロセッサ性能を向上させるために、1つ又は複数のレベルのキャッシュ5053が用いられる。キャッシュ5053は、用いられる可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは、64バイト、128バイト、又は256バイトのメモリ・データである。データをキャッシュに入れるのではなく、命令をキャッシュに入れるために、別個のキャッシュが用いられることが多い。キャッシュ・コヒーレンス(メモリ及びキャッシュ内のラインのコピーの同期)は、多くの場合、当技術分野において周知の種々の「スヌープ」アルゴリズムによって与えられる。プロセッサ・システムの主メモリ・ストレージ5025は、キャッシュと呼ばれることが多い。4つのレベルのキャッシュ5053を有するプロセッサ・システムにおいて、主ストレージ5025は、典型的にはより高速であり、かつ、コンピュータ・システムが利用できる不揮発性ストレージ(DASD、テープ等)の一部だけを保持するので、レベル5(L5)のキャッシュと呼ばれることがある。主ストレージ5025は、オペレーティング・システムによって主ストレージ5025との間でページングされるデータのページを「キャッシュに入れる」。
【0186】
プログラム・カウンタ(命令カウンタ)5061は、実行される現行の命令のアドレスを常時監視している。z/Architectureプロセッサのプログラム・カウンタは64ビットであり、従来のアドレッシング制限をサポートするために、31ビット又は24ビットに切り捨てることができる。プログラム・カウンタは、典型的には、コンテキスト・スイッチの際に持続するように、コンピュータのPSW(プログラム状況ワード)内で具体化される。従って、例えば、オペレーティング・システムにより、プログラム・カウンタ値を有する進行中のプログラムに割り込みをかけることが可能である(プログラム環境からオペレーティング・システム環境へのコンテキスト・スイッチ)。プログラムのPSWは、プログラムがアクティブでない間、プログラム・カウンタ値を保持し、オペレーティング・システムが実行されている間、オペレーティング・システムの(PSW内の)プログラム・カウンタが用いられる。典型的には、プログラム・カウンタは、現行の命令のバイト数に等しい量だけインクリメントされる。RISC(Reduced Instruction Set Computing)命令は、典型的には固定長であり、CISC(Complex Instruction Set Computing)命令は、典型的には可変長である。IBM z/Architectureの命令は、2バイト、4バイト、又は6バイトの長さを有するCISC命令である。例えば、コンテキスト・スイッチ操作又は分岐命令の分岐成立操作により、プログラム・カウンタ5061が変更される。コンテキスト・スイッチ操作において、現行のプログラム・カウンタ値は、実行されるプログラムについての他の状態情報(条件コードのような)と共にプログラム状況ワード内に保存され、実行される新しいプログラム・モジュールの命令を指し示す新しいプログラム・カウンタ値がロードされる。分岐成立操作を行い、分岐命令の結果をプログラム・カウンタ5061にロードすることにより、プログラムが判断を下すこと又はプログラム内でループすることを可能にする。
【0187】
典型的には、プロセッサ5026の代わりに命令をフェッチするために、命令フェッチ・ユニット5055が用いられる。フェッチ・ユニットは、「次の順次命令」、分岐成立命令のターゲット命令、又はコンテキスト・スイッチの後のプログラムの最初の命令のいずれかをフェッチする。今日の命令フェッチ・ユニットは、プリフェッチされた命令を用いることができる可能性に基づいて、命令を投機的にプリフェッチするプリフェッチ技術を用いることが多い。例えば、フェッチ・ユニットは、次の順次命令を含む16バイトの命令と、付加的なバイトの更なる順次命令とをフェッチすることができる。
【0188】
次いで、フェッチされた命令が、プロセッサ5026によって実行される。1つの実施形態において、フェッチされた命令は、フェッチ・ユニットのディスパッチ・ユニット5056に渡される。ディスパッチ・ユニットは命令をデコードし、デコードされた命令についての情報を適切なユニット5057、5058、5060に転送する。実行ユニット5057は、典型的には、命令フェッチ・ユニット5055からデコードされた算術命令についての情報を受け取り、命令のオペコードに従ってオペランドに関する算術演算を行う。オペランドは、好ましくは、メモリ5025、アーキテクチャ化レジスタ5059、又は実行される命令の即値フィールドのいずれかから、実行ユニット5057に与えられる。実行の結果は、格納された場合には、メモリ5025、レジスタ5059、又は他のマシン・ハードウェア(制御レジスタ、PSWレジスタなどのような)内に格納される。
【0189】
仮想アドレスは、動的アドレス変換5062、及び随意的に、アクセス・レジスタ変換5063を用いて、実アドレスに変換される。
【0190】
プロセッサ5026は、典型的には、命令の機能を実行するための1つ又は複数の実行ユニット5057、5058、5060を有する。
図23を参照すると、実行ユニット5057は、インターフェース論理5071を介して、アーキテクチャ化された汎用レジスタ5059、デコード/ディスパッチ・ユニット5056、ロード・ストア・ユニット5060、及び他のプロセッサ・ユニット5065と通信することができる。実行ユニット5057は、幾つかのレジスタ回路5067、5068、5069を用いて、算術論理演算ユニット(ALU)5066が動作する情報を保持することができる。ALUは、加算、減算、乗算、及び除算などの算術演算、並びに、論理積、論理和、及び排他的論理和、ローテート及びシフトのような論理関数を実行する。ALUは、設計に依存する専用の演算をサポートすることが好ましい。他の回路は、例えば条件コード及び回復サポート論理を含む、他のアーキテクチャ化ファシリティ5072を提供することができる。典型的には、ALU演算の結果は、出力レジスタ回路5070に保持され、この出力レジスタ回路5070が、結果を種々の他の処理機能に転送することができる。多数のプロセッサ・ユニットの構成が存在し、本説明は、本発明の1つの好ましい実施形態の代表的な理解を与えることのみを意図している。
【0191】
例えばADD命令は、算術及び論理機能を有する実行ユニット5057で実行され、一方、例えば浮動小数点命令は、特化された浮動小数点能力を有する浮動小数点実行部で実行される。実行ユニットは、オペランドに対してオペコードが定めた関数を行うことにより、命令が特定したオペランドに対して動作することが好ましい。例えば、ADD命令は、命令のレジスタ・フィールドによって特定された2つのレジスタ5059内に見出されるオペランドに対して、実行ユニット5057により実行することができる。
【0192】
実行ユニット5057は、2つのオペランドに対して算術加算を実行し、結果を第3オペランドに格納し、ここで第3オペランドは、第3のレジスタであっても又は2つのソース・レジスタのいずれかであってもよい。実行ユニットは、シフト、ローテート、論理積、論理和、及び排他的論理和のような種々の論理関数、並びに、加算、減算、乗算、除法のいずれかを含む、種々の代数関数を実行することができる算術論理演算ユニット(ALU)5066を用いることが好ましい。スカラー演算のために設計されたALU5066もあり、浮動小数点のために設計されたものALU5066もある。データは、アーキテクチャに応じて、ビッグ・エンディアン(最下位のバイトが最も高いバイト・アドレスである)、又はリトル・エンディアン(最下位のバイトが最も低いバイト・アドレスである)とすることができる。IBM z/Architectureは、ビッグ・エンディアンである。符号付きフィールドは、アーキテクチャに応じて、符号及び大きさ、1の補数、又は2の補数とすることができる。2の補数における負の値又は正の値は、ALU内で加法しか必要としないため、ALUが減算能力を設計する必要がないという点で、2の補数は有利である。数値は、通常、省略表現で記述され、12ビット・フィールドは、4,096バイトブロックのアドレスを定め、通常、例えば4Kバイト(キロバイト)ブロックのように記述される。
【0193】
図24を参照すると、分岐命令を実行するための分岐命令情報が、典型的には、分岐ユニット5058に送られ、この分岐ユニット5058は、多くの場合、分岐履歴テーブル5082のような分岐予測アルゴリズムを用いて、他の条件付き演算が完了する前に分岐の結果を予測する。条件付き演算が完了する前に、現行の分岐命令のターゲットがフェッチされ、投機的に実行される。条件付き演算が完了すると、投機的に実行された分岐命令は、条件付き演算の条件及び投機された結果に基づいて、完了されるか又は破棄される。典型的な分岐命令は、条件コードを試験し、条件コードが分岐命令の分岐要件を満たす場合、ターゲット・アドレスに分岐することができ、ターゲット・アドレスは、例えば、命令のレジスタ・フィールド又は即値フィールド内に見出されるものを含む幾つかの数に基づいて計算することができる。分岐ユニット5058は、複数の入力レジスタ回路5075、5076、5077と、出力レジスタ回路5080とを有するALU5074を用いることができる。分岐ユニット5058は、例えば、汎用レジスタ5059、デコード・ディスパッチ・ユニット5056、又は他の回路5073と通信すること5081ができる。
【0194】
例えば、オペレーティング・システムによって開始されるコンテキスト・スイッチ、コンテキスト・スイッチを発生させるプログラム例外又はエラー、コンテキスト・スイッチを発生させるI/O割り込み信号、又は(マルチスレッド環境における)複数のプログラムのマルチスレッド活動を含む様々な理由により、命令のグループの実行に割り込みがかけられることがある。コンテキスト・スイッチ動作は、現在実行中のプログラムについての状態情報を保存し、次いで、起動される別のプログラムについての状態情報をロードすることが好ましい。状態情報は、例えば、ハードウェア・レジスタ又はメモリ内に保存することができる。状態情報は、実行される次の命令を指し示すプログラム・カウンタ値と、条件コードと、メモリ変換情報と、アーキテクチャ化されたレジスタの内容とを含むことが好ましい。コンテキスト・スイッチの活動は、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、又はファームウェア・コード(マイクロコード、ピココード、又はライセンス内部コード(LIC))単独で又はその組み合わせで実施することができる。
【0195】
プロセッサは、命令により定義された方法に従ってオペランドにアクセスする。命令は、命令の一部の値を用いて即値オペランドを与えることができ、汎用レジスタ又は専用レジスタ(例えば、浮動小数点レジスタ)のいずれかを明示的に指し示す1つ又は複数のレジスタ・フィールドを与えることができる。命令は、オペコード・フィールドによって、オペランドとして識別されるインプライド・レジスタを用いることができる。命令は、オペランドのためのメモリ位置を用いることができる。命令がベース・レジスタ、インデックス・レジスタ、及び即値フィールド(変位フィールド)を定め、これらを互いに付加して、例えば、メモリ内のオペランドのアドレスをもたらすz/Architectureの長変位ファシリティにより例示されるように、オペランドのメモリ位置を、レジスタ、即値フィールド、又はレジスタと即値フィールドの組み合わせによって与えることができる。ここでの位置は、典型的には、特に断りのない限り、主メモリ(主ストレージ)内の記憶位置を意味する。
【0196】
図25を参照すると、プロセッサは、ロード/ストア・ユニット5060を用いて、ストレージにアクセスする。ロード/ストア・ユニット5060は、メモリ5025内のターゲット・オペランドのアドレスを取得し、オペランドをレジスタ5059又は別のメモリ5025の記憶位置にロードすることによってロード操作を行うことができ、或いは、メモリ5025内のターゲット・オペランドのアドレスを取得し、レジスタ5059又は別のメモリ5025の記憶位置から取得したデータをメモリ5025内のターゲット・オペランドの記憶位置に格納することによって、ストア操作を行うことができる。ロード/ストア・ユニット5060は、投機的なものであってもよく、命令シーケンスに対してアウト・オブ・オーダー式の順序でメモリにアクセスすることができるが、プログラムに対して、命令がインオーダー式に実行されたという外観を維持することになる。ロード/ストア・ユニット5060は、汎用レジスタ5059、デコード/ディスパッチ・ユニット5056、キャッシュ/メモリ・インターフェース5053、又は他の要素5083と通信することができ、ストレージ・アドレスを計算し、かつ、パイプライン処理を順に行って操作をインオーダー式に保持するための、種々のレジスタ回路、ALU5085、及び制御論理5090を含む。一部の動作は、アウト・オブ・オーダー式とすることができるが、ロード/ストア・ユニットは、アウト・オブ・オーダー式動作が、プログラムに対して、当技術分野において周知のようなインオーダー式に実行されたように見えるようにする機能を提供する。
【0197】
好ましくは、アプリケーション・プログラムが「見ている」アドレスは、仮想アドレスと呼ばれることが多い。仮想アドレスは、「論理アドレス」及び「実効アドレス」と呼ばれることもある。これらの仮想アドレスは、これらに限定されるものではないが、単に仮想アドレスをオフセット値にプリフィックス付加すること、1つ又は複数の変換テーブルを介して仮想アドレスを変換することを含む、種々の動的アドレス変換(DAT)技術の1つによって、物理的メモリ位置にリダイレクトされるという点で仮想のものであり、変換テーブルは、少なくともセグメント・テーブル及びページ・テーブルを単独で又は組み合わせて含むことが好ましく、セグメント・テーブルは、ページ・テーブルを指し示すエントリを有することが好ましい。z/Architectureでは、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、及び随意的なページ・テーブルを含む、変換の階層構成が提供される。アドレス変換の性能は、仮想アドレスを関連した物理的メモリ位置にマッピングするエントリを含む変換ルックアサイド・バッファ(TLB)を用いることにより改善されることが多い。DATが変換テーブルを用いて仮想アドレスを変換したときに、エントリが作成される。次いで、後に仮想アドレスを用いることで、低速の順次変換テーブル・アクセスではなく、高速のTLBのエントリを用いることが可能になる。TLBの内容は、LRU(Least Recently used:最長時間未使用)を含む種々の置換アルゴリズムによって管理することができる。
【0198】
プロセッサがマルチプロセッサ・システムのプロセッサである場合には、各プロセッサは、コヒーレンシのために、I/O、キャッシュ、TLB、及びメモリといった共有リソースをインターロック状態に保持する責任を負う。キャッシュ・コヒーレンシを保持する際に、一般的には「スヌープ」技術が用いられる。スヌープ環境においては、共有を容易にするために、各キャッシュ・ラインを、共有状態、排他的状態、変更状態、無効状態等のいずれか1つの状態にあるものとしてマーク付けすることができる。
【0199】
I/Oユニット5054(
図22)は、プロセッサに、例えば、テープ、ディスク、プリンタ、ディスプレイ、及びネットワークを含む周辺機器に取り付けるための手段を与える。I/Oユニットは、ソフトウェア・ドライバによってコンピュータ・プログラムに提示されることが多い。IBMによるSystem zのようなメインフレームにおいては、チャネル・アダプタ及びオープン・システム・アダプタが、オペレーティング・システムと周辺機器との間に通信をもたらすメインフレームのI/Oユニットである。
【0200】
さらに、他のタイプのコンピューティング環境が、1つ又は複数の態様から利益を得ることができる。一例として、環境は、特定のアーキテクチャ(例えば、命令実行、アドレス変換などのアーキテクチャ化された機能、及びアーキテクチャ化されたレジスタを含む)又はそのサブセットをエミュレートする(例えば、プロセッサ及びメモリを有するネイティブ・コンピュータ・システム上で)エミュレータ(例えば、ソフトウェア又は他のエミュレーション機構)を含むことができる。このような環境においては、エミュレータを実行しているコンピュータが、エミュレートされる機能とは異なるアーキテクチャを有することができたとしても、エミュレータの1又は複数のエミュレーション機能により、1つ又は複数の実施形態が実施され得る。一例として、エミュレーション・モードにおいては、エミュレートされる特定の命令又は操作がデコードされ、適切なエミュレーション機能が構築され、個々の命令又は操作を実施する。
【0201】
エミュレーション環境においては、ホスト・コンピュータは、例えば、命令及びデータを格納するためのメモリと、メモリから命令をフェッチし、随意的に、フェッチされた命令のためのローカル・バッファリングを提供するための命令フェッチ・ユニットと、フェッチされた命令を受信し、フェッチされた命令のタイプを判断するための命令デコード・ユニットと、命令を実行するための命令実行ユニットとを含む。実行は、データをメモリからレジスタ内にロードすること、データをレジスタから再びメモリに格納すること、又はデコード・ユニットにより判断されるように、何らかのタイプの算術演算又は論理演算を実行することを含むことができる。一例においては、各ユニットは、ソフトウェアで実装される。例えば、ユニットが実行する演算は、エミュレータ・ソフトウェア内の1つ又は複数のサブルーチンとして実装される。
【0202】
より具体的には、メインフレームにおいて、アーキテクチャ化されたマシン命令は、通常、プログラマによって、多くの場合コンパイラ・アプリケーションを介して、今日では「C」プログラマによって用いられる。ストレージ媒体内に格納されたこれらの命令は、z/ArchitectureのIBM(登録商標)サーバにおいて、又は代替的に他のアーキテクチャを実行するマシンにおいて、ネイティブに実行することができる。これらの命令は、既存の及び将来のIBM(登録商標)メインフレーム・サーバにおいて、及び、IBM(登録商標)の他のマシン(例えば、Power Systemサーバ及びSystem xサーバ)上で、エミュレートすることができる。これらの命令は、IBM(登録商標)、Intel(登録商標)、AMDなどによって製造されたハードウェアを用いて種々のマシン上でLinuxを実行しているマシンにおいて実行することができる。z/Architecture下でそのハードウェア上で実行することに加えて、Linuxを用いること、並びに、一般に実行がエミュレーション・モードにあるHercules、UMX、又はFSI(Fundamental Software,Inc)によるエミュレーションを用いるマシンを用いることもできる。エミュレーション・モードにおいては、ネイティブ・プロセッサによって、エミュレーション・ソフトウェアが実行され、エミュレートされたプロセッサのアーキテクチャをエミュレートする。
【0203】
ネイティブ・プロセッサは、一般的に、エミュレートされたプロセッサのエミュレーションを実行するためにファームウェア又はネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェアを実行する。エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャの命令のフェッチと実行を担当する。エミュレーション・ソフトウェアは、エミュレートされたプログラム・カウンタを維持し、命令境界を常時監視している。エミュレーション・ソフトウェアは、一度に1つ又は複数のエミュレートされたマシン命令をフェッチし、ネイティブ・プロセッサにより実行するために、その1つ又は複数のエミュレートされたマシン命令を、対応するネイティブ・マシン命令のグループに変換することができる。これらの変換された命令は、より速い変換を達成できるようにキャッシュに入れることができる。それにも関わらず、エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ規則を維持して、オペレーティング・システム及びエミュレートされたプロセッサのために書かれたアプリケーションが正確に動作することを保証しなければならない。さらに、エミュレーション・ソフトウェアは、これらに限定されるものではないが、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブル及びページ・テーブルを含む動的アドレス変換機能、割り込み機構、コンテキスト・スイッチ機構、時刻(TOD)クロック、及びI/Oサブシステムへのアーキテクチャ化インターフェースを含む、エミュレートされたプロセッサのアーキテクチャによって識別されるリソースを提供し、オペレーティング・システム又はエミュレートされたプロセッサ上で実行するように設計されたアプリケーション・プログラムが、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で実行することができる。
【0204】
エミュレートされた特定の命令がデコードされ、個々の命令の機能を実行するためのサブルーチンが呼び出される。エミュレートされたプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、例えば、「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及び他の多くを含むがこれらに限定されない、種々のソフトウェア及びハードウェア・エミュレーションの特許は、当業者が利用可能なターゲット・マシンのための異なるマシン用に設計された命令形式のエミュレーションを達成する様々な既知の方法を示す。
【0205】
図26において、ホスト・アーキテクチャのホスト・コンピュータ・システム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を補助するために、専用のハードウェア及びオフ・ロード・エンジンを設けることもできる。
【0206】
更に別の実施形態において、1つ又は複数の態様は、クラウド・コンピューティングに関する。本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で述べられる教示の実装は、クラウド・コンピューティング環境に限定されるものではないことが予め理解される。むしろ、本発明の実施形態は、現在知られている又は後に開発される他のいずれかのタイプのコンピューティング環境と併せて実装することができる。
【0207】
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、及び少なくとも4つの配備モデルを含むことができる。
【0208】
特徴は、以下の通りである。
オンデマンド・セルフサービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置(例えば、国、州、又はデータセンタ)を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性:機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
【0209】
サービス・モデルは以下の通りである。
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
【0210】
配備モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
【0211】
クラウド・コンピューティング環境は、無国籍性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0212】
ここで
図27を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示される。クラウド・コンピューティング・ノード6010は、好適なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明される本発明の実施形態の使用又は機能の範囲に対するいずれかの制限を示唆することを意図するものではない。上記に関係なく、クラウド・コンピューティング・ノード6010は、本明細書で上述された機能のいずれかを実装及び/又は実施することができる。
【0213】
クラウド・コンピューティング・ノード6010には、他の多数の汎用又は専用コンピューティング・システム環境又は構成で動作可能な、コンピュータ・システム/サーバ6012が存在する。コンピュータ・システム/サーバ6012と共に用いるのに好適な周知のコンピューティング・システム、環境、及び/又は構成の例としては、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステム又はデバイス等のいずれかを含む分散型クラウド・コンピューティング環境が含まれる。
【0214】
コンピュータ・システム/サーバ6012は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ6012は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体に配置することができる。
【0215】
図27に示されるように、クラウド・コンピューティング・ノード6010のコンピュータ・システム/サーバ6012は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム/サーバ6012のコンポーネントは、これらに限定されるものではないが、1つ又は複数のプロセッサ又は処理ユニット6016、システム・メモリ6028、及びシステム・メモリ6028を含む種々のシステム・コンポーネントをプロセッサ6016に結合するバス6018を含むことができる。
【0216】
バス6018は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの1つ又は複数を表す。限定ではなく例としては、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture、ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro Channel Architecture、MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、及びPeripheral Component Interconnect(PCI)バスを含む。
【0217】
コンピュータ・システム/サーバ6012は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ6012がアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
【0218】
システム・メモリ6028は、ランダム・アクセス・メモリ(RAM)6030及び/又はキャッシュ・メモリ6032など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ6012は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体(図示されておらず、典型的には「ハードドライブ」と呼ばれる)との間の読み出し及び書き込みのために、ストレージ・システム6034を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フレキシブル・ディスク」)との間の読み出し及び書き込みのための磁気ディスク・ドライブと、CD−ROM、DVD−ROM又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、それぞれを、1つ又は複数のデータ媒体インターフェースによってバス6018に接続することができる。以下でさらに示され説明されるように、メモリ6028は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールの組(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0219】
限定ではなく例として、メモリ6028内に、プログラム・モジュール6042の組(少なくとも1つ)を有するプログラム/ユーティリティ6040、並びにオペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール6042は、一般に、本明細書で説明される本発明の実施形態の機能及び/又は方法を実行する。
【0220】
コンピュータ・システム/サーバ6012は、キーボード、ポインティング・デバイス、ディスプレイ6024等のような1つ又は複数の外部デバイス6014;ユーザがコンピュータ・システム/サーバ6012と対話することを可能にする1つ又は複数のデバイス;及び/又はコンピュータ・システム/サーバ6012が1つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス(例えば、ネットワーク・カード、モデムなど)と通信することもできる。このような通信は、入力/出力(I/O)インターフェース6022を経由して行うことができる。さらにまた、コンピュータ・システム/サーバ6012は、ネットワーク・アダプタ6020を介して、ローカル・エリア・ネットワーク(LAN)、汎用広域ネットワーク(WAN)、及び/又はパブリック・ネットワーク(例えば、インターネット)などの1つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ6020は、バス6018を介して、コンピュータ・システム/サーバ6012の他のコンポーネントと通信する。図示されないが、コンピュータ・システム/サーバ6012と共に他のハードウェア及び/又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、RAIDシステム、テープドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
【0221】
ここで
図28を参照すると、例示的なクラウド・コンピューティング環境6050が示される。示されるように、クラウド・コンピューティング環境6050は、例えば携帯情報端末(PDA)又は携帯電話6054A、デスクトップ・コンピュータ6054B、ラップトップ・コンピュータ6054C、及び/又は自動車コンピュータ・システム6054Nなどといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、1つ又は複数のクラウド・コンピューティング・ノード6010を含む。ノード6010は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境6050は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、及び/又はソフトウェアを提供することが可能になる。
図28に示されるコンピューティング・デバイス6054A−Nのタイプは単に例示であることを意図し、コンピューティング・ノード10及びクラウド・コンピューティング環境6050は、いずれのタイプのネットワーク及び/又はネットワーク・アドレス指定可能な接続上でも(例えば、ウェブ・ブラウザを用いて)、いずれのタイプのコンピュータ化された装置とも通信できることを理解されたい。
【0222】
ここで
図29を参照すると、クラウド・コンピューティング環境6050(
図28)によって提供される機能抽象化層の組が示される。
図29示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層6060は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、IBM(登録商標)zSeriesシステムを一例とするメインフレームと、IBM(登録商標) pSeriesシステムを一例とするRISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバと、IBM(登録商標) xSeries(登録商標)システムと、IBM(登録商標) BladeCenter(登録商標)システムと、ストレージ・デバイスと、ネットワーク及びネットワーク・コンポーネントと、が含まれる。ソフトウェア・コンポーネントの例として、IBM(登録商標) WebSphere(登録商標)アプリケーション・サーバ・ソフトウェアを一例とするネットワーク・アプリケーション・サーバ・ソフトウェアと、IBM(登録商標) DB2(登録商標)データベース・ソフトウェアを一例とするデータベース・ソフトウェアとが含まれる。IBM、zSeries、xSeries、BladeCenter、WebSphere、及びDB2、z/OS、z/VM、z/Architecture、及びProcessor Resource/Systems Managerは、世界中の多数の管轄区域において登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。本明細書において用いられる他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーション又は他の会社の登録商標、商標、又は製品名とすることができる。
仮想化層6062は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーション及びオペレーティング・システム、並びに仮想クライアントを提供することができる。
【0223】
一例においては、管理層6060は、以下で説明される機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、リソースの消費に対する課金又は請求とを提供する。1つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータルは、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
【0224】
ワークロード層6066は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例には、マッピング及びナビゲーション、ソフトウェア開発及びライフサイクル管理、仮想教室教育配信、データ分析処理、及びトランザクション処理が含まれる。
【0225】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指示するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
【0226】
以下の特許請求の範囲に存在する場合、「手段又はステップと機能との組合せ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物は、明確に特許請求された他の請求要素と共に機能を実行するための任意の構造体、材料、又は行為を含むことを意図したものである。1つ又は複数の実施形態の説明は、例証及び説明のためだけに提示されたものであり、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正物及び変形物が明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最もよく説明するため、及び、当業者が、企図した特定の用途に適するように種々の修正を有する種々の実施形態に関して本発明を理解することができるように、選択され記述された。