一態様によると、1つのプロセッサ(例えば、中央処理ユニット(CPU))上で実行されているプログラムが、別のプロセッサ(例えば、別のCPU)のトランザクション実行に影響を与える能力が提供される。一実施形態において、制約なし(nonconstrained)トランザクション実行モードで実行されているプログラムが、別のCPU又はI/Oサブシステムのいずれかにより変更されるストレージ位置を検査することを可能にする、CONDITIONAL TRANSACTION END(CTEND)命令と呼ばれる命令が提供される。検査されたデータに基づいて、トランザクション実行を終了若しくはアボートすること、又は、例えば所定のイベントが発生するまで、終了/アボートの決定を遅延させることが可能である。
例えば、CTEND命令が実行され、プロセッサが制約なしトランザクション実行モードにあり、命令の始めに、トランザクション・ネスト化深さ(transaction nesting depth)が1であるとき、命令の第2のオペランドが検査され、検査されたデータに基づいて、トランザクション実行を終了若しくはアボートすること、又は、例えば第2のオペランドの値が所定の値になる、又は選択された時間間隔との所定の関係が満たされる(例えば、ある時間間隔を超過する)といった所定のイベントが発生するまで、終了/アボートの決定を遅延させることが可能である。更に別の例として、所定のイベントは、割り込みが保留状態になることを含むことができる。他のイベントも可能である。
しかしながら、この説明を詳細に説明する前に、制約なし及び制約付き(constrained)トランザクション実行モードを含む、トランザクション実行ファシリティに関する詳細を論じる。
トランザクション実行ファシリティは、トランザクション実行(TX)モードと呼ばれるCPU状態を導入する。CPUのリセット後、CPUは、TXモードにはない。CPUは、TRANSACTION BEGIN命令によりTXモードに入り、(a)最外(outermost)TRANSACTION END命令(「内部(inner)」及び「外部(outer)」の詳細については後述する)により、(b)条件コードを0に設定するCONDITIONAL TRANSACTION END命令により、又は(c)トランザクションがアボートされることにより、TXモードを終了する。TXモードにある間、CPUによるストレージ・アクセスは、他のCPU及びI/Oサブシステムによって観察すると、ブロック・コンカレント(block-concurrent)であるように見える。ストレージ・アクセスは、(a)最外トランザクションがアボートすることなく終了したとき、ストレージにコミットされる(即ち、例えば、キャッシュ又はCPUにローカルなバッファにおいて行われた更新が伝搬され、実メモリに格納され、他のCPUに可視となる)か、又は(b)トランザクションがアボートされた場合に廃棄されるかのいずれかである。
トランザクションをネスト化することができる。つまり、CPUがTXモードにある間、CPUは、別のTRANSACTION BEGIN命令を実行することができる。CPUがTXモードに入るようにする命令は、最外TRANSACTION BEGINと呼ばれ、同様に、プログラムは最外トランザクション内にあると言われる。TRANSACTION BEGINの後続の実行は、内部命令と呼ばれ、プログラムは、内部トランザクションを実行している。モデルは、最小ネスト化深さ及びモデル依存の最大ネスト化深さを提供する。EXTRACT TRANSACTION NESTING DEPTH命令は、現在のネスト化深さ値を返し、更に別の実施形態においては、最大ネスト化深さ値を返すことができる。この技術は、「平坦化されたネスト化(flattened nesting)」と呼ばれるモデルを使用し、そこでは、任意のネスト化深さにおけるアボート条件により、全てのレベルのトランザクションがアボートされ、制御は、最外TRANSACTION BEGINに続く命令に返される。
トランザクションの処理中、両方のアクセスが同じキャッシュ・ライン内のいずれかの記憶位置に対するものであり、かつ、アクセスの一方又は両方がストアである場合、1つのCPUにより行われるトランザクション・アクセスは、(a)別のCPUにより行われたトランザクション・アクセス又は非トランザクション・アクセス、又は(b)I/Oサブシステムにより行われる非トランザクション・アクセスのいずれかと競合すると言われる。換言すれば、トランザクション実行が生産的であるために、CPUは、これがコミットするまで、トランザクション・アクセスを行っているように見られない。このプログラム・モデルは、例えば百万個の要素の二重連結リスト(doubly-linked list)内の2つのポイントを更新するといった特定の環境においては、非常に有効であり得る。しかしながら、このプログラム・モデルは、トランザクション・アクセスが行われるストレージ位置に対する競合が多数ある場合、あまり有効ではない。
トランザクション実行の1つのモデル(本明細書では、制約なしトランザクションと呼ぶ)においては、トランザクションがアボートされると、プログラムは、アボート条件がもはや存在しないことを期待してトランザクションの再駆動を試みること、又は、プログラムが同等の非トランザクション経路に「フォールバックする(fall back)」ことができる。トランザクション実行の別のモデル(本明細書では、制約付きトランザクション(constrained transaction)と呼ぶ)においては、アボートされたトランザクションは、CPUにより自動的に再駆動され、制約違反がない限り、制約付きトランザクションが最終的に完了することが保証される。
トランザクションを開始する際、プログラムは、(a)トランザクションがアボートされた場合、どの汎用レジスタをオリジナルの内容に復元するか、(b)トランザクションが、例えば浮動小数点レジスタ及び浮動小数点制御レジスタを含む、浮動小数点レジスタのコンテキストの変更を許可されているかどうか、(c)トランザクションが、アクセス・レジスタ(AR)の変更を許可されているかどうか、及び(d)特定のプログラム例外条件が、割り込みを発生させないようにブロックされているかどうかといった、種々の制御を指定することができる。制約なしトランザクションがアボートされた場合、種々の診断情報を提供することができる。例えば、制約なしトランザクションを開始する最外TBEGIN命令は、プログラムが指定したトランザクション診断ブロック(TDB)を指定することができる。さらに、トランザクションが、プログラム割り込み又は解釈実行を終了させる条件に起因してアボートされた場合、それぞれ、CPUのプリフィックス領域内のTDB又はホストの状態記述により指定されるTDBを用いることもできる。
種々のタイプのレジスタが上述されている。これらは、本明細書でさらに詳細に説明される。汎用レジスタは、一般算術演算及び論理演算においてアキュムレータとして使用される。一実施形態において、各レジスタは、64個のビット位置を含み、16個の汎用レジスタがある。汎用レジスタは、番号0−15により識別され、命令内の4ビットのRフィールドによって指定される。ある命令は、数個のRフィールドを有することによって、複数の汎用レジスタをアドレス指定することを規定する。命令によっては、特定の汎用レジスタの使用は、命令のRフィールドによって明示的に指定されるのではなく、暗黙指定される。
一般算術演算及び論理演算においてアキュムレータとして使用されるのに加えて、16個の汎用レジスタのうちの15個は、アドレス生成におけるベース・アドレス・レジスタ及びインデックス・レジスタとしても用いられる。これらの場合、レジスタは、命令内の4ビットのBフィールド又はXフィールドによって指定される。Bフィールド又はXフィールドにおける0の値は、適用されるべきベース又はインデックスが存在しないことを指定し、従って、汎用レジスタ0は、ベース・アドレス又はインデックスを含むものとして指定されない。
浮動小数点命令は、1組の浮動小数点レジスタを使用する。一実施形態において、CPUは、16個の浮動小数点レジスタを有する。浮動小数点レジスタは、番号0−15により識別され、浮動小数点命令内の4ビットのRフィールドによって指定される。各浮動小数点レジスタは、64ビットの長さであり、かつ、短い(32ビット)又は長い(64ビット)浮動小数点オペランドを含むことができる。
浮動小数点制御(FPC)レジスタは、マスク・ビット、フラグ・ビット、データ例外コード及び丸めモード・ビットを含む32ビット・レジスタであり、浮動小数点演算の処理の際に使用される。
さらに、一実施形態において、CPUは、各々が64のビット位置を有する16個の制御レジスタを有する。レジスタにおけるビット位置は、プログラム・イベント記録(PER)(以下に説明される)のような、システム内の特定のファシリティに割り当てられ、かつ、演算が行われることを規定するため又はファシリティが必要とする特別な情報を与えるために用いられる。一実施形態においては、以下に説明されるように、トランザクション・ファシリティについては、CR0(ビット8及び9)及びCR2(ビット61−63)が用いられる。
例えば、CPUは、0−15の番号が付された16個のアクセス・レジスタを有する。アクセス・レジスタは、アドレス空間制御要素(ASCE)の間接的指定を含む32個のビット位置から成る。アドレス空間制御要素は、対応するアドレス空間への参照を変換するための動的アドレス変換(DAT)機構により用いられるパラメータである。CPUがアクセス・レジスタ・モード(プログラム状況ワード(program status word:PSW)内のビットにより制御される)と呼ばれるモードにあるとき、ストレージ・オペランド参照のための論理アドレスを指定するために用いられる命令のBフィールドがアクセス・レジスタを指定し、アクセス・レジスタにより指定されるアドレス空間制御要素が、行われている参照用にDATにより使用される。命令によっては、Bフィールドの代わりにRフィールドが使用される。アクセス・レジスタの内容をロードし、格納するための命令、及び1つのアクセス・レジスタの内容を別のアクセス・レジスタに移動するための命令が用意されている。
アクセス・レジスタ1−15の各々は、任意のアドレス空間を指定することができる。アクセス・レジスタ0は、一次アドレス空間を指定する。アクセス・レジスタ1−15の1つを用いてアドレス空間を指定する場合、CPUは、アクセス・レジスタの内容を変換することにより、どのアドレス空間が指定されるかを判断する。アクセス・レジスタ0を用いてアドレス空間を指定する場合、CPUは、そのアクセス・レジスタを、一次アドレス空間を指定しているものとして扱い、アクセス・レジスタの実際の内容を調べない。従って、16個のアクセス・レジスタは、任意の一時点において、一次アドレス空間と、最大15個の他の空間とを指定することができる。
一実施形態において、複数のタイプのアドレス空間がある。アドレス空間は、各々の番号をストレージ内のバイト位置と関連付けることを可能にする特別な変換パラメータとともに、連続した整数番号のシーケンス(仮想アドレス)である。シーケンスは0から始まり、左から右へ進む。
例えば、z/Architectureにおいて、主ストレージ(主メモリともいう)にアクセスするためにCPUにより仮想アドレスが使用されると、その仮想アドレスは、最初に、動的アドレス変換(DAT)により実アドレスに変換され、次に、プリフィックス付加により絶対アドレスに変換される。DATは、1乃至5レベルのテーブル(ページ・テーブル、セグメント・テーブル、領域第3テーブル、領域第2テーブル、及び領域第1テーブル)を変換パラメータとして使用することができる。特定のアドレス空間のための最高レベルのテーブルの指定(起点及び長さ)は、アドレス空間制御要素と呼ばれ、これは、DATが使用するために制御レジスタにおいて見出されるか、又はアクセス・レジスタにより指定される。代替的に、アドレス空間のためのアドレス空間制御要素は、実空間指定とすることができ、この実空間指定は、DATが、いずれのテーブルも使用することなく、単に仮想アドレスを実アドレスとして扱うことにより、仮想アドレスを変換することを示す
DATは、その時々において、異なる制御レジスタ内のアドレス空間制御要素又はアクセス・レジスタにより指定されるアドレス空間制御要素を使用する。その選択は、現PSWにおいて指定される変換モードによって決定される。一次空間モード、二次空間モード、アクセス・レジスタ・モード及びホーム空間モードの4つの変換モードが利用可能である。変換モードに応じて、異なるアドレス空間がアドレス指定可能である。
CPUが一次空間モード又は二次空間モードにある何れの時点でも、CPUは、2つのアドレス空間即ち一次アドレス空間及び二次アドレス空間に属する仮想アドレスを変換することができる。CPUがアクセス・レジスタ・モードにある何れの時点でも、CPUは、最大16個のアドレス空間(一次アドレス及び最大15個のAR指定アドレス空間)の仮想アドレスを変換することができる。CPUがホーム空間モードにある何れの時点でも、CPUは、ホーム・アドレス空間の仮想アドレスを変換することができる。
一次アドレス空間は、一次仮想アドレスから成るため、そのように識別され、一次仮想アドレスは、一次アドレス空間制御要素(ASCE)により変換される。同様に、二次アドレス空間は、二次ASCEによって変換された二次仮想アドレスから成り、AR指定アドレス空間は、AR指定ASCEによって変換されたAR指定仮想アドレスから成り、ホーム・アドレス空間は、ホームASCEによって変換されたホーム仮想アドレスから成る。一次ASCE及び二次ASCEは、それぞれ、制御レジスタ1及び7内にある。AR指定ASCEは、制御レジスタ2、5及び8を用いてアクセス・レジスタ変換(ART)と呼ばれるプロセスを通して配置されるASN第2テーブル・エントリ内にある。ホームASCEは、制御レジスタ13内にある。
図1を参照して、トランザクション・ファシリティの1つ又は複数の態様、並びにCONDITIONAL TRANSACTION END命令を含む、条件付きトランザクション終了ファシリティを組み込み、使用するためのコンピューティング環境の一実施形態を説明する。
図1を参照すると、一例において、コンピューティング環境100は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーション(IBM(登録商標))により提供されるz/Architectureに基づいている。z/Architectureは、引用によりその全体が本明細書に組み入れられる非特許文献1に記載されている。
z/Architecture、IBM、並びにz/OS及びz/VM(以下に参照される)は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で用いられる他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーション又は他の企業の登録商標、商標、又は製品名であり得る。
一例として、コンピューティング環境100は、1つ又は複数の制御ユニット108を介して、1つ又は複数の入力/出力(I/O)デバイス106に結合された中央プロセッサ・コンプレックス(CPC)102を含む。中央プロセッサ・コンプレックス102は、例えば、1つ又は複数の中央プロセッサ(中央処理ユニット(CPU)としても知られる)110及び入力/出力サブシステム111に結合されたプロセッサ・メモリ104(主メモリ、主ストレージ、中央ストレージとも呼ばれる)を含み、これらの各々を以下に説明する。
プロセッサ・メモリ104は、例えば、1つ又は複数のパーティション112(例えば、論理パーティション)と、論理パーティション・ハイパーバイザ114及び他のプロセッサ・ファームウェア115を含むプロセッサ・ファームウェア113とを含む。論理パーティション・ハイパーバイザ114の一例は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される、プロセッサ・リソース/システム・マネジャ(PR/SM)である。
論理パーティションは、別個のシステムとして機能し、かつ、1つ又は複数のアプリケーション120と、任意に、各々の論理パーティションで異なり得る常駐オペレーティング・システム122とを内部に有する。一実施形態において、オペレーティング・システムは、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/OSオペレーティング・システム、z/VMオペレーティング・システム、z/Linuxオペレーティング・システム、又はTPFオペレーティング・システムである。論理パーティション112は、プロセッサ110上で実行されているファームウェアが実装する論理パーティション・ハイパーバイザ114により管理される。本明細書で用いられるファームウェアは、例えば、プロセッサのマイクロコード及び/又はミリコードを含む。ファームウェアは、例えば、より上位レベルのマシン・コードの実装に用いられる、ハードウェア・レベルの命令及び/又はデータ構造体を含む。一実施形態において、ファームウェアは、例えば、典型的には、信頼できるソフトウェアを含むマイクロコード又は基礎をなすハードウェアに特有のマイクロコードとして配信される独自のコードを含み、システム・ハードウェアへのオペレーティング・システムのアクセスを制御する。
中央プロセッサ110は、論理パーティションに割り当てられる物理プロセッサ・リソースである。特に、各論理パーティション112は、その各々がパーティションに割り当てられた物理プロセッサ110の全て又は割り当て分(share)を表す、1つ又は複数の論理プロセッサを有する。特定のパーティション112の論理プロセッサは、そのパーティション専用とし、そのパーティションに対して基礎をなすプロセッサ・リソース110が予約されるようにしても、又は、別のパーティションと共有し、基礎をなすプロセッサ・リソースが潜在的に別のパーティションに利用可能であるようにしてもよい。一例において、CPUの1つ又は複数は、本明細書で説明されるトランザクション実行ファシリティ130及び条件付きトランザクション終了ファシリティ132の態様を含む。
入力/出力サブシステム111は、入力/出力デバイス106と主ストレージ104との間の情報の流れを方向付ける。この入力/出力サブシステム111は、中央処理コンプレックスに結合され、中央処理コンプレックスの一部とすることも又はそれとは別個のものとすることもできる。I/Oサブシステムは、中央プロセッサを、入力/出力デバイスと直接通信するタスクから解放し、データ処理が、入力/出力処理と同時に進行することを可能にする。通信を提供するために、I/Oサブシステムは、I/O通信アダプタを用いる。例えば、チャネル、I/Oアダプタ、PCIカード、イーサネット・カード、Small Computer System Interface(SCSI)カード等を含む、種々のタイプの通信アダプタがある。本明細書で説明される特定の例において、I/O通信アダプタはチャネルであり、従って、I/Oサブシステムは、本明細書ではチャネル・サブシステムと呼ばれる。しかしながら、これは一例にすぎない。他のタイプのI/Oサブシステムを用いることもできる。
I/Oサブシステムは、入力/出力デバイス106との間の情報の流れを管理する際に、1つ又は複数の入力/出力経路を通信リンクとして使用する。この特定の例において、通信アダプタはチャネルであるので、これらの経路は、チャネル経路と呼ばれる。
上述のコンピューティング環境は、用いることができるコンピューティング環境の一例にすぎない。これらに限定されるものではないが、パーティション化されていない環境、他のパーティション化された環境、及び/又はエミュレートされた環境を含む他の環境を用いることもでき、実施形態は、いずれか1つの環境に限定されるものではない。
1つ又は複数の態様によると、トランザクション実行ファシリティは、中央処理ユニットの機能強化であり、これは、CPUが、それらの記憶位置の更新を含む、複数のストレージ位置にアクセスできる(トランザクションとして知られる)一連の命令を実行することができる手段を提供する。他のCPU及びI/Oサブシステムにより観察されるとき、トランザクションは、(a)単一のアトミック操作として全体的に完了されるか、又は(b)潜在的に、トランザクションがこれまでに実行されたという証拠を残さずにアボートされる(本明細書で説明される特定の条件を除いて)。従って、成功裏に完了したトランザクションは、典型的なマルチプロセッシング・モデルにおいて必要とされるいずれの特別なロック機構もなしに、多数のストレージ位置を更新することができる。
トランザクション実行ファシリティは、例えば、1つ又は複数の制御、1つ又は複数の命令、制約付き実行及び制約なし実行を含むトランザクション処理、アボート処理を含み、その各々を以下にさらに説明する。
一実施形態において、トランザクション・アボート・プログラム状況ワード(PSW)、トランザクション診断ブロック(TDB)アドレス、及びトランザクション・ネスト化深さを含む3つの特殊目的の制御と、5つの制御レジスタのビットと、TRANSACTION BEGIN(制約付き及び制約なし)、TRANSACTION END、EXTRACT TRANSACTION NESTING DEPTH、TRANSACTION ABORT、及びNONTRANSACTIONAL STOREを含む複数の一般命令とを用いて、トランザクション実行ファシリティを制御する。ファシリティがインストールされる際、ファシリティは、例えば、構成内の全てのCPU内にインストールされる。ファシリティ表示は、1つの実施においてはビット73であり、1の場合、トランザクション実行ファシリティがインストールされていることを示す。
さらに、一態様において、トランザクション実行ファシリティがインストールされると、条件付きトランザクション終了ファシリティと呼ばれる別のファシリティをインストールすることもできる。例えば、ファシリティ表示ビットのビット55が1に設定されたとき、条件付きトランザクション終了ファシリティがインストールされる。1つの実施において、このビットは、トランザクション実行ファシリティを表すビット73が同じく1に設定されたときにのみ、有意である。両方のファシリティがインストールされると、CONDITIONAL TRANSACTION END命令もまた、CPUの機能強化となり、トランザクション実行を制御するために使用される。
トランザクション実行ファシリティがインストールされると、構成は、制約なしトランザクション実行ファシリティと、任意に、制約付きトランザクション実行ファシリティとを提供し、その各々を以下に説明する。例として、ファシリティ表示50及び73が共に1であるとき、制約付きトランザクション実行ファシリティがインストールされる。両方のファシリティ表示は、メモリの特定の位置に格納される。
本明細書で用いられる場合、命令名TRANSACTION BEGINは、簡略記号TBEGIN(制約なしトランザクションに対するTRANSACTION BEGIN)及び簡略記号TBEGINC(制約付きトランザクションに対するTRANSACTION BEGIN)を有する命令を指す。特定の命令に関する説明は、命令名と、それに続く丸括弧若しくは角括弧内の簡略記号又は単に簡略記号によって示される。
TRANSACTION BEGIN(TBEGIN)命令の形式の一実施形態が、図2−図3に示される。一例として、TBEGIN命令200(図2)は、制約なしトランザクション開始操作を指定するオペコードを含むオペコード・フィールド202と、ベース・フィールド(B1)204と、変位フィールド(D1)206と、即値フィールド(I2)208とを含む。B1フィールドが0でないとき、B1204が指定する汎用レジスタの内容をD1206に付加して、第1のオペランド・アドレスを取得する。
B1フィールドが0でないとき、以下が適用される。:
*トランザクション・ネスト化深さが最初に0のとき、第1のオペランド・アドレスは、トランザクションがアボートされた場合に種々の診断情報を格納することができる、TBEGIN指定TDB(以下にさらに説明される)と呼ばれる、256バイトのトランザクション診断ブロックの記憶位置を指定する。CPUが一次空間モード又はアクセス・レジスタ・モードにあるとき、第1のオペランド・アドレスは、一次アドレス空間内の記憶位置を指定する。CPUが二次空間モード又はホーム空間モードにあるとき、第1のオペランド・アドレスは、それぞれ、二次アドレス空間又はホーム・アドレス空間内の記憶位置を指定する。DATがオフのとき、トランザクション診断ブロック(TDB)アドレス(TDBA)は、実ストレージ内の記憶位置を指定する。
第1のオペランドに対するストア・アクセス可能性が判断される。アクセス可能である場合、オペランドの論理アドレスは、トランザクション診断ブロック・アドレス(TDBA)内に入れられ、TDBAは有効である。
*CPUが既に制約なしトランザクション実行モードにあるとき、TDBAは変更されず、アクセス可能性について第1のオペランドが試験されるかどうかは予測不能である。
B1フィールドが0のとき、第1のオペランドについてアクセス例外は検出されず、最外TBEGIN命令について、TDBAは無効である。
一例において、I2フィールドのビットは、次のように定められる。:
汎用レジスタ保存マスク(GRSM)210(図3):I2フィールドのビット0−7は、汎用レジスタ保存マスク(GRSM)を含む。GRSMの各ビットは、汎用レジスタの偶数−奇数対を表し、ここでビット0はレジスタ0及び1を表し、ビット1はレジスタ2及び3を表し、以下同様である。最外TBEGIN命令のGRSMにおけるビットが0のとき、対応するレジスタ対は保存されない。最外TBEGIN命令のGRSMにおけるビットが1のとき、対応するレジスタ対は、プログラムが直接アクセスできないモデル依存位置に保存される。
トランザクションがアボートした場合、最外TBEGIN命令が実行されたときに、保存されたレジスタ対は、その内容に復元される。トランザクションがアボートするとき、全ての他の(保存されていない)汎用レジスタの内容が復元されるとは限らない。
汎用レジスタ保存マスクは、最外のものを除いて、全てのTBEGIN命令において無視される。
AR変更許可(A)212:A制御、即ちI2フィールドのビット12は、トランザクションがアクセス・レジスタを変更するのを許可されるかどうかを制御する。有効なAR変更許可制御は、現在のネスト化レベル及び全ての外部レベルに対するTBEGIN命令におけるA制御の論理積である。
有効なA制御が0のとき、いずれかのアクセス・レジスタを変更しようとする試みがなされた場合、トランザクションは、アボート・コード11(限定された命令)でアボートされる。有効なA制御が1のとき、アクセス・レジスタが変更される場合(いずれの他のアボート条件もない場合)、トランザクションはアボートされない。
浮動小数点演算許可(F)214:F制御、即ちI2フィールドのビット13は、トランザクションが特定の浮動小数点命令を実行するのを許可されているかどうかを制御する。有効な浮動小数点演算許可制御は、現在のネスト化レベル及び全ての外部レベルに対するTBEGIN命令におけるF制御の論理積である。
有効なF制御が0である場合、(a)浮動小数点命令を実行しようとする試みがなされた場合、トランザクションは、アボート・コード11(限定された命令)でアボートされ、かつ、(b)浮動小数点制御レジスタ(FPCR)のバイト2におけるデータ例外コード(DXC)は、いずれのデータ例外プログラム例外条件によっても設定されない。有効なF制御が1である場合、(a)浮動小数点命令を実行しようとする試みがなされた場合(いずれの他のアボート条件もない場合)、トランザクションはアボートされず、かつ、(b)データ例外プログラム例外条件によりFPCRにおけるDXCを設定することができる。
プログラム割り込みフィルタ処理制御(PIFC)216:I2フィールドのビット14−15は、プログラム割り込みフィルタ処理制御(PIFC)である。PIFCは、CPUがトランザクション実行モードにある間に発生するプログラム例外条件(例えば、アドレス指定例外、データ例外、操作例外、保護例外等)の特定のクラスが割り込みをもたらすかどうかを制御する。
有効なPIFCは、現在のネスト化レベル及び全ての外部レベルに対するTBEGIN命令におけるPIFCの最高値である。有効なPIFCが0のとき、全てのプログラム例外条件は、割り込みをもたらす。有効なPIFCが1のとき、1及び2のトランザクション実行クラスを有するプログラム例外条件は、割り込みをもたらす。(例外の重大度に応じて、各プログラム例外条件が少なくとも1つのトランザクション実行クラスに割り当てられる。重大度は、トランザクション実行の実行を反復する際の復元の尤度、及び、オペレーティング・システムが割り込みを見る必要があるかどうかに基づく。)有効なPIFCが2のとき、1のトランザクション実行クラスを有するプログラム例外条件は、割り込みをもたらす。3の有効なPIFCは予約される。
I2フィールドのビット8−11(命令のビット40−43)は予約され、0を含む必要があり、他の場合には、プログラムは、将来互換性をもって動作することができなくなることがある。
図4−図5を参照して、TRANSACTION BEGIN constrained(TBEGINC)命令の形式の一実施形態を説明する。一例において、TBEGINC300(図4)は、制約付きトランザクション開始操作を指定するオペコードを含むオペコード・フィールド302と、ベース・フィールド(B1)304と、変位フィールド(D1)306と、即値フィールド(I2)308とを含む。B1304が指定する汎用レジスタの内容をD1306に付加して、第1のオペランド・アドレスを取得する。しかしながら、TRANSACTION BEGIN constrained命令においては、ストレージにアクセスするために、第1のオペランド・アドレスは使用されない。代わりに、命令のB1フィールドは0を含み、他の場合には、指定例外が認識される。
一実施形態において、I2フィールドは種々の制御を含み、その一例が図5に示される。
一例において、I2フィールドのビットは、次のように定められる。:
汎用レジスタ保存マスク(GRSM)310:I2フィールドのビット0−7は、汎用レジスタ保存マスク(GRSM)を含む。GRSMの各ビットは、汎用レジスタの偶数−奇数対を表し、ここで、ビット0はレジスタ0及び1を表し、ビット1はレジスタ2及び3を表し、以下同様である。GRSMにおけるビットが0のとき、対応するレジスタ対は保存されない。GRSMにおけるビットが1のとき、対応するレジスタ対は、プログラムが直接アクセスできないモデル依存位置に保存される。
トランザクションがアボートした場合、最外TBEGIN命令が実行されたときに、保存されたレジスタ対は、その内容に復元される。制約付きトランザクションがアボートするとき、全ての他の(保存されていない)汎用レジスタの内容が復元されるとは限らない。
TBEGINCを使用して制約なしトランザクション実行モードで実行を継続するとき、汎用レジスタ保存マスクは無視される。
AR変更許可(A)312:A制御、即ち、I2フィールドのビット12は、トランザクションがアクセス・レジスタを変更するのを許可されるかどうかを制御する。有効なAR変更許可制御は、現在のネスト化レベル及びあらゆる外部TBEGIN又はTBEGINC命令に対するTBEGINC命令におけるA制御の論理積である。
有効なA制御が0のとき、いずれかのアクセス・レジスタを変更しようとする試みがなされた場合、トランザクションは、アボート・コード11(限定された命令)でアボートされる。有効なA制御が1のとき、アクセス・レジスタが変更される場合(いずれの他のアボート条件もない場合)、トランザクションはアボートされない。
I2フィールドのビット8−11及びビット13−15(命令のビット40−43及びビット45−47)は予約され、0を含む必要がある。
一例において、TRANSACTION BEGIN命令の終わりは、その形式を図6に示すTRANSACTION END(TEND)命令により指定される。一例として、TEND命令400は、トランザクション終了操作を指定するオペコードを含むオペコード・フィールド402を含む。
更に別の実施形態において、トランザクションの終わりは、CONDITIONAL TRANSACTION END(CTEND)命令により指定することができ、この命令を以下にさらに説明する。
トランザクション実行ファシリティに関して多数の用語が用いられ、従って、便宜のためだけに、用語のリストを以下にアルファベット順で提供する。一実施形態において、これらの用語は、次のように定められる。:
アボート:TRANSACTION END命令の前にトランザクションが終了し、0のトランザクション・ネスト化深さをもたらすとき、又はCONDITIONAL TRANSACTION END命令が条件コード0を設定するとき、トランザクションがアボートする。一実施形態において、トランザクションがアボートすると、以下のことが行われる。
*あらゆるレベルのトランザクションにより行われたトランザクション・ストア・アクセスが廃棄される(即ち、コミットされない)。
*あらゆるレベルのトランザクションにより行われた非トランザクション・ストア・アクセスがコミットされる。
*最外TRANSACTION BEGIN命令の汎用レジスタ保存マスク(GRSM)により指定されたレジスタが、トランザクション実行より前のレジスタの内容に(即ち、最外TRANSACTION BEGIN命令の実行時のレジスタの内容に)復元される。最外TRANSACTION BEGIN命令の汎用レジスタ保存マスクにより指定されていない汎用レジスタは、復元されない。
*アクセス・レジスタ、浮動小数点レジスタ、及び浮動小数点制御レジスタは、復元されない。トランザクションがアボートすると、トランザクション実行中にこれらのレジスタに対してなされた全ての変更が保持される。
トランザクションは、限定された命令の実行を試みること、限定されたリソースの変更を試みること、トランザクションの競合、種々のCPUリソースの超過、いずれかの解釈実行インターセプト条件、いずれかの割り込み、TRANSACTION ABORT命令及び他の理由を含む、様々な理由に起因してアボートすることがある。トランザクション・アボート・コードは、トランザクションをアボートできる具体的な理由を提供する。
図7を参照して、TRANSACTION ABORT(TABORT)命令の形式の一例を説明する。一例として、TABORT命令500は、トランザクション・アボート操作を指定するオペコードを含むオペコード・フィールド502と、ベース・フィールド(B2)504と、変位フィールド(D2)506とを含む。B2フィールドが0でないとき、B2504により指定される汎用レジスタの内容をD2506に付加して、第2のオペランド・アドレスを取得し、他の場合には、第2のオペランド・アドレスは、D2フィールドのみから形成され、B2フィールドは無視される。第2のオペランド・アドレスは、データをアドレス指定するためには用いられず、代わりに、アドレスは、アボート処理中にトランザクション診断ブロックに配置されるトランザクション・アボート・コードを形成する。第2のオペランド・アドレスについてのアドレス計算は、アドレス算術演算の規則に従い、24ビット・アドレッシング・モードにおいては、ビット0−39が0に設定され、31ビット・アドレッシング・モードにおいては、ビット0−32が0に設定される。
コミット:最外TRANSACTION END命令の完了時、又は条件コード0を設定するCONDITIONAL TRANSACTION END命令の完了時に、CPUは、トランザクション(即ち、最外トランザクション及びあらゆるネスト化レベル)によって行われたストア・アクセスをコミットし、それらが他のCPU及びI/Oサブシステムに見えるようにする。他のCPU及びI/Oサブシステムにより観察されるとき、トランザクションの全てのネスト化レベルによって行われた全てのフェッチ及びストア・アクセスは、コミットが行われたときに単一の同時操作として行われるように見える。
汎用レジスタ、アクセス・レジスタ、浮動小数点レジスタ及び浮動小数点制御レジスタの内容は、コミット・プロセスによって変更されない。トランザクションのストアがコミットされる際、トランザクション実行中にこれらのレジスタに対して行われるいずれの変更も保持される。
競合:両方のアクセスが同じキャッシュ・ライン内のいずれかの記憶位置に対するものであり、かつ、アクセスの1つ又は複数がストアである場合、1つのCPUによって行われたトランザクション・アクセスは、(a)別のCPUによって行われたトランザクション・アクセス若しくは非トランザクション・アクセス、又は(b)I/Oサブシステムによって行われた非トランザクション・アクセスと競合する。
競合が概念的シーケンスにおいて検出できない場合でも、CPUの命令の投機的実行により、競合を検出することができる。
制約付きトランザクション:制約付きトランザクションは、制約付きトランザクション実行モードで実行されるトランザクションであり、以下の制限を受ける。
*一般命令のサブセットが利用可能である。
*制限された数の命令を実行することができる。
*制限された数のストレージ・オペランド位置にアクセスすることできる。
*トランザクションは、単一のネスト化レベルに制限される。
割り込みの反復又は他のCPU若しくはI/Oサブシステムとの競合がない場合、制約付きトランザクションは最終的に完了し、従って、アボート・ハンドラ・ルーチンは必要ない。
CPUが既に制約なしトランザクション実行モードにある間にTRANSACTION BEGIN constrained(TBEGINC)命令が実行されると、実行は、ネスト化された制約なしトランザクションとして継続する。
制約付きトランザクション実行モード:トランザクション・ネスト化深さが0であり、トランザクションがTBEGINC命令により開始されたとき、CPUは、制約付きトランザクション実行モードに入る。CPUが制約付きトランザクション実行モードにある間、トランザクション・ネスト化深さは1である。
ネスト化されたトランザクション:CPUが制約なしトランザクション実行モードにある間にTRANSACTION BEGIN命令が出されると、トランザクションがネスト化される。
トランザクション実行ファシリティは、平坦化されたネスト化と呼ばれるモデルを使用する。平坦化されたネスト化モードにおいて、内部トランザクションにより行われたストアは、最外トランザクションがそのストアをコミットするまで、他のCPU及びI/Oサブシステムにより観察することができない。同様に、トランザクションがアボートした場合、全てのネスト化されたトランザクションがアボートし、全てのネスト化されたトランザクションの全てのトランザクション・ストアが廃棄される。
ネスト化されたトランザクションの一例を図8に示す。図示されるように、第1のTBEGIN600が最外トランザクション601を開始し、TBEGIN602は第1のネスト化されたトランザクションを開始し、TBEGIN604は、第2のネスト化されたトランザクションを開始する。この例において、TBEGIN604及びTEND606は、最内トランザクション608を定める。TEND610が実行されると、トランザクション・ストアが、最外トランザクション及び全ての内部トランザクションに対してコミットされる612。
制約なしトランザクション:制約なしトランザクションとは、制約なしトランザクション実行モードで実行されるトランザクションである。制約なしトランザクションは、制約付きトランザクションのような方法では制限されないが、依然として様々な理由によりアボートされ得る。
制約なしトランザクション実行モード:トランザクションがTBEGIN命令により開始されると、CPUは制約なしトランザクション実行モードに入る。CPUが制約なしトランザクション実行モードにある間、トランザクション・ネスト化深さは、1から最大トランザクション・ネスト化深さまで変化し得る。
非トランザクション・アクセス:非トランザクション・アクセスは、CPUがトランザクション実行モードにないとき、CPUにより行われるストレージ・オペランド・アクセスである(即ち、トランザクション以外の典型的なストレージ・アクセス)。さらに、I/Oサブシステムにより行われるアクセスは、非トランザクション・アクセスである。さらに、NONTRANSACTIONAL STORE命令を用いて、CPUが制約なしトランザクション実行モードにある間に非トランザクション・ストア・アクセスをもたらすことができる。
外部/最外トランザクション:より低い番号のトランザクション・ネスト化深さを有するトランザクションが、外部トランザクションである。トランザクション・ネスト化深さが1のトランザクションが、最外トランザクションである。
最外TRANSACTION BEGIN命令は、トランザクション・ネスト化深さが最初に0であるときに実行されるものである。最外TRANSACTION END命令は、トランザクション・ネスト化深さを1から0に移行させるものである。さらに、条件コードを0に設定するCONDITIONAL TRANSACTION END命令もまた、命令の最外形態と考えることができる。本実施形態において、制約付きトランザクションは、最外トランザクションである。
プログラム割り込みフィルタ処理:特定のプログラム例外条件が原因でトランザクションがアボートされると、プログラムは、随意的に、割り込みが発生するのを防止することができる。この技術は、プログラム割り込みフィルタ処理と呼ばれる。プログラム割り込みフィルタ処理は、割り込みのトランザクション・クラス、TRANSACTION BEGIN命令からの有効なプログラム割り込みフィルタ処理制御、及び制御レジスタ0におけるトランザクション実行プログラム割り込みフィルタ処理オーバーライドを受ける。
トランザクション:トランザクションは、CPUがトランザクション実行モードにある間に行われたストレージ・オペランド・アクセス、及び変更された選択された汎用レジスタを含む。制約なしトランザクションの場合、ストレージ・オペランド・アクセスは、トランザクション・アクセス及び非トランザクション・アクセスの両方を含むことができる。制約付きトランザクションの場合、ストレージ・オペランド・アクセスは、トランザクション・アクセスに制限される。他のCPU及びI/Oサブシステムにより観察されるとき、トランザクション実行モードにある間にCPUにより行われる全ストレージ・オペランド・アクセスは、単一の同時操作として行われるように見える。トランザクションがアボートされると、トランザクション・ストア・アクセスは廃棄され、最外TRANSACTION BEGIN命令の汎用レジスタ保存マスクにより指定されるいずれのレジスタも、トランザクション実行より前のレジスタの内容に復元される。
トランザクション・アクセス:トランザクション・アクセスとは、NONTRANSACTIONAL STORE命令により行われたアクセスを除いた、CPUがトランザクション実行モードにある間に行われたストレージ・オペランド・アクセスである。
トランザクション実行モード:トランザクション実行モードという用語は、制約なしトランザクション実行モード及び制約付きトランザクション実行モードの両方の共通操作を説明する。従って、操作を説明する際、制約なし及び制約付きという用語は、トランザクション実行モードを限定するために用いられる。
トランザクション・ネスト化深さが0のとき、CPUはトランザクション実行モードにない(非トランザクション実行モードとも呼ばれる)。
CPUにより観察されるとき、トランザクション実行モードで行われたフェッチ及びストアは、トランザクション実行モードにない間に行われたものと変わらない。
z/Architectureの一実施形態において、トランザクション実行ファシリティは、制御レジスタ0のビット8−9、制御レジスタ2のビット61−63、トランザクション・ネスト化深さ、トランザクション診断ブロック・アドレス及びトランザクション・アボート・プログラム状況ワード(PSW)の制御下にある。
最初のCPUリセットに続いて、制御レジスタ0のビット位置8−9、制御レジスタ2のビット位置62−63及びトランザクション・ネスト化深さが0に設定される。トランザクション実行制御、即ち制御レジスタ0のビット8が0のとき、CPUをトランザクション実行モードに入れることはできない。
種々の制御に関するさらなる詳細を以下に説明する。
示されるように、トランザクション実行ファシリティは、制御レジスタ0の2個のビット及び制御レジスタ2の3個のビットによって制御される。例えば:
制御レジスタ0のビット:一実施形態において、ビット割り当ては、以下の通りである。:
トランザクション実行制御(TXC):制御レジスタ0のビット8は、トランザクション実行制御である。このビットは、制御プログラム(例えば、オペレーティング・システム)が、トランザクション実行ファシリティがプログラムによって使用可能かどうかを示すことができる機構を提供する。ビット8は、トランザクション実行モードに成功裏に入るために、1であるべきである。
制御レジスタ0のビット8が0のとき、CONDITIONAL TRANSACTION END、EXTRACT TRANSACTION NESTING DEPTH、TRANSACTION BEGIN及びTRANSACTION END命令を実行しようとする試みは、特別な操作実行をもたらす。
トランザクション実行プログラム割り込みフィルタ処理オーバーライド(PIFO):制御レジスタ0のビット9は、トランザクション実行プログラム割り込みフィルタ処理オーバーライドである。このビットは、制御プログラムが、TRANSACTION BEGIN命令により指定又は暗黙指定された有効なプログラム割り込みフィルタ処理制御に関係なく、CPUがトランザクション実行モードにある間に発生するあらゆるプログラム例外条件が割り込みをもたらすのを保証できる機構を提供する。
制御レジスタ2のビット:一実施形態において、割り当ては以下の通りである。:
トランザクション診断範囲(TDS):次のように、制御レジスタ2のビット61は、レジスタのビット62−63におけるトランザクション診断制御(TDC)の適用性を制御する。:
TDS
トランザクション診断制御(TDC):制御レジスタのビット62−63は、2ビットの符号なし整数であり、これを用いて、診断目的のために、トランザクションをランダムにアボートすることができる。一実施形態において、TDCの符号化は、以下の通りである。:
TDC
0でないTDCが原因でトランザクションがアボートしたとき、以下のいずれかを行うことができる。
*アボート・コードは、コード7−11、13−16又は255のいずれかに設定され、コードの値はCPUによりランダムに選択され、条件コードはアボート・コードに対応して設定される。
*制約なしトランザクションの場合、条件コードは1に設定される。この場合、アボート・コードは適用可能でない。
TDC値1が実装されるかどうかはモデル依存である。実装されない場合、1の値は、あたかも2が指定されたかのように機能する。
制約付きトランザクションの場合、1のTDC値は、あたかも2のTDC値が指定されたかのように扱われる。
3のTDC値が指定された場合、結果は予測不能である。
トランザクション診断ブロック・アドレス(TDBA)
命令のB1フィールドが0でないとき、最外TRANSACTION BEGIN(TBEGIN)命令の第1のオペランド・アドレスから、有効なトランザクション診断ブロック・アドレス(TDBA)が設定される。CPUが一次空間又はアクセス・レジスタ・モードにあるとき、TDBAは、一次アドレス空間内の記憶位置を指定する。CPUが二次空間又はホーム空間モードにあるとき、TDBAは、それぞれ、二次アドレス空間又はホーム・アドレス空間内の記憶位置を指定する。DAT(動的アドレス変換)がオフのとき、TDBAは、実ストレージ内の記憶位置を指定する。
トランザクションが後でアボートされる場合、TBEGIN指定TDBと呼ばれるトランザクション診断ブロックを見つけるために、CPUによりTDBAが用いられる。TDBAの右端の3つのビットは0であり、TBEGIN指定TDBがダブルワード境界上にあることを意味する。
最外TRANSACTION BEGIN(TBEGIN)命令のB1フィールドが0のとき、トランザクション診断ブロック・アドレスは無効であり、トランザクションが後でアボートされる場合、TBEGIN指定TDBは格納されない。
トランザクション・アボートPSW(TAPSW)
TRANSACTION BEGIN(TBEGIN)命令の実行中、ネスト化深さが最初に0であるとき、トランザクション・アボートPSWは現PSWの内容に設定され、トランザクション・アボートPSWの命令アドレスは、次の順次命令を指定する(即ち、最外TBEGINに続く命令)。TRANSACTION BEGIN constrained(TBEGINC)命令の実行中、ネスト化深さが最初に0であるとき、トランザクション・アボートPSWは、トランザクション・アボートPSWの命令アドレスが(TBEGINCに続く次の順次命令ではなく)TBEGINC命令を指定することを除いて、現PSWの内容に設定される。
トランザクションがアボートされると、トランザクション・アボートPSWにおける条件コードが、アボート条件の重大度を示すコードに置き換えられる。その後、割り込みをもたらさない原因に起因してトランザクションがアボートされた場合、PSWは、トランザクション・アボートPSWからロードされ、割り込みをもたらす理由に起因してトランザクションがアボートされた場合、トランザクション・アボートPSWは、割り込み旧PSWとして格納される。
トランザクション・アボートPSWは、いずれの内部TRANSACTION BEGIN命令の実行中にも変更されない。
トランザクション・ネスト化深さ(TND)
トランザクション・ネスト化深さは、例えば、TRANSACTION BEGIN命令が条件コード0で完了するたびにインクリメントし、かつ、TRANSACTION END又はCONDITIONAL TRANSACTION END命令が条件コード0で完了するたびにデクリメントする、16ビットの符号なし値である。トランザクション・ネスト化深さは、トランザクションがアボートされたとき、又はCPUのリセットにより、0に設定される。
一実施形態において、15の最大TNDが実装される。
1つの実装において、CPUが制約付きトランザクション実行モードにあるとき、トランザクション・ネスト化深さは1である。さらに、最大TNDは4ビットの値として表すことができるが、TNDは、トランザクション診断ブロックにおける検査を容易にするために、16ビットの値となるように定められる。
トランザクション診断ブロック(TDB)
トランザクションがアボートされた場合、種々の状態情報を、以下のようなトランザクション診断ブロック(TDB)内に保存することができる。:
1.TBEGIN指定TDB:制約なしトランザクションについて、最外TBEGIN命令のB1フィールドが0でないとき、命令の第1のオペランド・アドレスは、TBEGIN指定TDBを指定する。これは、アプリケーションのアボート・ハンドラにより調べることができるアプリケーション・プログラムにより指定される記憶位置である。
2.プログラム割り込み(PI)TDB:制約なしトランザクションが、非フィルタ処理(unfiltered)プログラム例外条件に起因してアボートされた場合、又は制約付きトランザクションがいずれかのプログラム例外条件に起因してアボートされた場合(即ち、プログラム割り込みをもたらすいずれかの条件が認識される)、PI−TDBは、プリフィックス領域内の記憶位置に格納される。これは、オペレーティング・システムが提供できるあらゆる診断報告において、オペレーティング・システムが検査又はログアウトするのに利用可能である。
3.インターセプトTDB:トランザクションが、インターセプトをもたらす(即ち、条件により解釈実行が終了し、制御がホスト・プログラムに戻る)いずれかのプログラム例外条件に起因してアボートされた場合、TDBは、ゲスト・オペレーティング・システムについての状態記述ブロックにおいて指定された記憶位置に格納される。
一実施形態において、TBEGIN指定TDBは、TDBアドレスが有効であるとき(即ち、最外TBEGIN命令のB1フィールドが0でないとき)にのみ格納される。
非フィルタ処理プログラム例外条件に起因するアボートの場合、PI−TDB又はインターセプトTDBのいずれか1つだけが格納される。従って、1つのアボートに対して、0、1又は2つのTDBが格納され得る。
TDBの各々の一例に関するさらなる詳細を以下に説明する。:
TBEGIN指定TDB:有効なトランザクション診断ブロック・アドレスにより指定された256バイトの記憶位置である。トランザクション診断ブロック・アドレスが有効であるとき、TBEGIN指定TDBは、トランザクション・アボート上に格納される。TBEGIN指定TDBは、最外TRANSACTION BEGIN命令の実行時に有効である全てのストレージ保護機構の影響下にある。TBEGIN指定TDBの任意の部分についてのPER(Program Event Recording:プログラム・イベント記録)ストレージ変更イベントは、トランザクション・アボート処理中ではなく、最外TBEGINの実行中に検出される。
PERの1つの目的は、プログラムのデバッグを支援することである。これにより、プログラムに、例示するような以下のタイプのイベントをアラートすることが可能になる。
*分岐命令の実行の成功:分岐ターゲット位置が指定したストレージ領域内にあるときにのみイベントが生じるようにする選択肢が提供される。
*指定したストレージ領域からの命令のフェッチ。
*指定したストレージ領域の内容の変更。ストレージ領域が指定したアドレス空間内にあるときにのみイベントを生じるようにする選択肢が提供される。
*STORE USING REAL ADDRESS命令の実行。
*CONDITIONAL TRANSACTION END又はTRANSACTION END命令の実行。
STORE USING REAL ADDRESSに関するイベントは、ストレージ変更イベントと一緒にしか指定できないことを除いて、プログラムは、上記のイベント・タイプの1つ又は複数を認識できることを選択的に指定することができる。PERイベントに関する情報は、プログラム割り込みを用いてプログラムに与えられ、割り込みの原因は、割り込みコードで識別される。
トランザクション診断ブロック・アドレスが有効でないとき、TBEGIN指定TDBは格納されない。
プログラム割り込みTDB:実記憶位置6,144−6,399(1800−18FF hex)である。プログラム割り込みに起因してトランザクションがアボートされるとき、プログラム割り込みTDBが格納される。他の原因のためにトランザクションがアボートされるとき、プログラム割り込みTDBの内容は予測不能である。
プログラム割り込みTDBは、いずれの保護機構の影響下にもない。プログラム割り込み中にプログラム割り込みTDBが格納されたとき、プログラム割り込みTDBについて、PERストレージ変更イベントは検出されない。
インターセプトTDB:状態記述の記憶位置488−495により指定される256バイトのホストの実記憶位置である。インターセプトTDBは、アボートされたトランザクションが、ゲスト・プログラム割り込みインターセプト(つまり、インターセプト・コード8)をもたらすときに格納される。他の原因のためにトランザクションがアボートされるとき、インターセプトTDBの内容は予測不能である。インターセプトTDBは、いずれの保護機構の影響下にもない。
図9に示すように、一実施形態において、トランザクション診断ブロック700のフィールドは、次のとおりである。:
形式702:バイト0は、次のように、妥当性及び形式の表示を含む。:
形式フィールドが0であるTDBは、ヌル(null)TDBと呼ばれる。
フラグ704:バイト1は、次のような種々の表示を含む。:
競合トークン妥当性(CTV):トランザクションが、フェッチ又はストア競合のためにアボートされるとき(つまり、それぞれ、アボート・コード9又は10)、バイト1のビット0は、競合トークン妥当性表示である。CTV表示が1のとき、TDBのバイト16−23における競合トークン910は、競合が検出された論理アドレスを含む。CTV表示が0であるとき、TDBのバイト16−23は予測不能である。
トランザクションが、フェッチ又はストア競合以外のいずれかの理由のためにアボートされたとき、バイト1のビット0は、0として格納される。
制約付きトランザクション表示(CTI):CPUが制約付きトランザクション実行モードにあるとき、バイト1のビット1は1に設定される。CPUが制約なしトランザクション実行モードにあるとき、バイト1のビット1は0に設定される。
予約:バイト1のビット2−7は予約され、0として格納される。
トランザクション・ネスト化深さ(TND)706:トランザクションがアボートされたとき、バイト6−7はトランザクション・ネスト化深さを含む。
トランザクション・アボート・コード(TAC)708:バイト8−15は、64ビットの符号なしトランザクション・アボート・コードを含む。各々のコードは、トランザクションがアボートされる理由を示す。
トランザクションがプログラム割り込み以外の条件のためにアボートされたとき、トランザクション・アボート・コードがプログラム割り込みTDB内に格納されるかどうかは、モデル依存である。
競合トークン710:フェッチ又はストア競合(つまり、それぞれ、アボート・コード9及び10)に起因してアボートされたトランザクションの場合、バイト16−23は、競合が検出されたストレージ位置の論理アドレスを含む。競合トークンは、CTVビット、即ちバイト1のビット0が1であるときに意味をもつ。
CTVビットが0のとき、バイト16−23は予測不能である。
CPUによる投機的実行のため、競合トークンは、トランザクションの概念的実行シーケンスより必ずしもアクセスされないストレージ位置を指定することができる。
アボートされたトランザクション命令アドレス(ATIA)712:バイト24−31は、アボートが検出されたときに実行していた命令を識別する命令アドレスを含む。トランザクションがアボート・コード2、5、6、11、13、17、18、若しくは256、又はこれより大きいアボート・コードに起因してアボートされたとき、或いはトランザクションがアボート・コード4又は12に起因してアボートされ、かつ、プログラム例外条件が無効化しているとき、ATIAは、実行されていた命令を直接指し示す。アボート・コード4又は12に起因してトランザクションがアボートされ、かつ、プログラム例外条件が無効化していないとき、ATIAは、実行されていた命令を超えて指し示す。
トランザクションがアボート・コード7−10、14−16又は255に起因してアボートされたとき、ATIAは必ずしもアボートを引き起こすまさにその命令を示さないが、トランザクション内のそれより前又は後の命令を指し示し得る。
トランザクションが、実行タイプ(execute-type)命令のターゲットである命令に起因してアボートされた場合、ATIAは、実行タイプ命令を識別し、アボート・コードに応じて、命令を指し示すか、又は命令を超えて指し示す。ATIAは、実行タイプ命令のターゲットを示さない。
トランザクションがアボートされると、ATIAは、アドレッシング・モードの影響下にある。24ビット・アドレッシング・モードにおいて、フィールドのビット0−40は0を含む。31ビット・アドレッシング・モードにおいて、フィールドのビット0−32は0を含む。
プログラム割り込み以外の条件に起因してトランザクションがアボートされたとき、アボートされたトランザクション命令アドレスがプログラム割り込みTDBに格納されるかどうかは、モデル依存である。
アボート・コード4又は12に起因してトランザクションがアボートされ、かつ、プログラム例外条件が無効化していないとき、ATIAは、アボートを引き起こす命令を指し示さない。ATIAから、割り込み長さコード(ILC)により示されるハーフワードの数を減算することにより、抑止又は終了している条件において、又は完了している非PERイベントに対して、アボートを引き起こす命令を識別することができる。PERイベントに起因してトランザクションがアボートされ、かつ、他のプログラム例外条件が存在しないとき、ATIAは予測不能である。
トランザクション診断ブロック・アドレスが有効であるとき、TBEGIN指定TDBのバイト36−39におけるプログラム割り込み識別(PIID)において、ILCを調べることができる。フィルタ処理が適用されないときは、実記憶装置におけるPIIDの位置140−143においてILCを調べることができる。
例外アクセス識別(EAID)714:特定のフィルタ処理済みプログラム例外条件に起因してアボートされたトランザクションについては、TBEGIN指定TDBのバイト32は、例外アクセス識別を含む。引用により上記に組み入れられた非特許文献1に述べられるように、z/Architectureの一例においては、EAIDの形式及びこれが格納される事例は、例外条件が割り込みをもたらすときの実記憶位置160に記述されるものと同じである。
プログラム割り込みをもたらすあらゆる例外条件を含む他の理由のためにアボートされたトランザクションの場合、バイト32は予測不能である。プログラム割り込みTDBにおいて、バイト32は予測不能である。
このフィールドは、トランザクション診断ブロック・アドレスにより指定されるTDB内にのみ格納され、他の場合には、フィールドは予約される。EAIDは、制御されたアクセス・リスト又はDAT保護、ASCEタイプ、ページ変換、領域第1変換、領域第2変換、領域第3変換及びセグメント変換プログラムの例外条件に対してのみ格納される。
データ例外コード(DXC)716:フィルタ処理済みデータ例外プログラム例外条件に起因してアボートされたトランザクションについては、TBEGIN指定TDBのバイト33は、データ例外コードを含む。上記に引用により組み入れられる非特許文献1に述べられるように、z/Architectureの一例において、DXCの形式及びこれが格納される事例は、例外条件をもたらすときの実記憶位置147に記述されるものと同じである。一例において、記憶位置147はDXCを含む。
プログラム割り込みをもたらすあらゆる例外条件を含む他の理由のためにアボートされたトランザクションに対して、バイト33は予測不能である。プログラム割り込みTDBにおいて、バイト33は予測不能である。
このフィールドは、トランザクション診断ブロック・アドレスにより指定されるTDB内にのみ格納され、他の場合には、フィールドは予約される。DXCは、データ・プログラム例外条件に対してのみ格納される。
プログラム割り込み識別(PIID)718:フィルタ処理済みプログラム例外条件に起因してアボートされたトランザクションに対して、TBEGIN指定TDBのバイト36−39は、プログラム割り込み識別を含む。z/Architectureの一例において、PIIDの形式は、PIIDのビット13−14における命令長コードが、例外条件が検出された命令に対して個別のものであることを除いて、(引用により上記に組み入れられる非特許文献1に述べられるように)条件が割り込みをもたらすときの実記憶位置140−143に記述されるものと同じである。
プログラム割り込みをもたらす例外条件を含む他の理由によりアボートされたトランザクションについては、バイト36−39は予測不能である。プログラム割り込みTDBにおいて、バイト36−39は予測不能である。
このフィールドは、トランザクション診断ブロック・アドレスにより指定されたTDB内にのみ格納され、他の場合には、フィールドは予約される。プログラム割り込み識別は、プログラム例外条件に対してのみ格納される。
変換例外識別(TEID)720:以下のフィルタ処理済みプログラム例外条件のいずれかに起因してアボートされたトランザクションに対して、TBEGIN指定TDBのバイト40−47は、変換例外識別を含む。
*制御されたアクセス・リスト又はDAT保護
*ASCEタイプ
*ページ変換
*領域第1変換
*領域第2変換
*領域第3変換
*セグメント変換例外
引用により上記に組み入れられる非特許文献1に述べられるように、z/Architectureの一例において、条件が割り込みをもたらすとき、TEIDの形式は、実記憶位置168−175に記述されるものと同じである。
プログラム割り込みをもたらす例外条件を含む他の理由によりアボートされたトランザクションに対して、バイト40−47は予測不能である。プログラム割り込みTDBにおいて、バイト40−47は予測不能である。
このフィールドは、トランザクション診断ブロック・アドレスにより指定されたTDB内にのみ格納され、他の場合には、フィールドは予約される。
ブレーキング・イベント・アドレス722:フィルタ処理済みプログラム例外条件に起因してアボートされたトランザクションに対して、TBEGIN指定TDBのバイト48−55は、ブレーキング・イベント・アドレスを含む。引用により上記に組み入れられる非特許文献1に述べられるように、z/Architectureの一例において、ブレーキング・イベント・アドレスの形式は、例外条件が割り込みをもたらすときの実記憶位置272−279に記述されるものと同じである。
プログラム割り込みをもたらす例外条件を含む他の理由によりアボートされたトランザクションに対して、バイト48−55は予測不能である。プログラム割り込みTDBにおいて、バイト48−55は予測不能である。
このフィールドは、トランザクション診断ブロック・アドレスにより指定されたTDB内にのみ格納され、他の場合には、フィールドは予約される。
以下にブレーキング・イベントに関連するさらなる詳細を説明する。
z/Architectureの一実施形態において、PER−3ファシリティがインストールされると、このPER−3ファシリティは、プログラムに、CPUの順次実行においてブレークを生じさせる最後の命令のアドレスを与える。ブレーキング・イベント・アドレスの記録は、ワイルド分岐検出のためのデバッグ支援として用いることができる。このファシリティは、例えば、ブレーキング・イベント・アドレス・レジスタと呼ばれる、CPUにおける64ビット・レジスタを与える。TRANSACTION ABORT以外の命令が、順次命令の実行においてブレークを生じさせる(つまり、PSW内の命令アドレスが、命令長によりインクリメントされるのではなく、置き換えられる)たびに、その命令のアドレスが、ブレーキング・イベント・アドレス・レジスタ内に配置される。PERが表示されるにせよ又はされないにせよ、プログラム割り込みが発生するたびに、ブレーキング・イベント・アドレス・レジスタの現在の内容が実ストレージ位置272−279に配置される。
ブレーキング・イベントを引き起こす命令が、実行タイプ命令(EXECUTE又はEXECUTE RELATIVE LONG)のターゲットである場合、その実行タイプ命令をフェッチするために用いられた命令アドレスが、ブレーキング・イベント・アドレス・レジスタ内に配置される。
z/Architectureの一実施形態において、次の命令:即ち、BRANCH AND LINK(BAL、BALR);BRANCH AND SAVE(BAS、BASR);BRANCH AND SAVE AND SET MODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH AND STACK(BAKR);BRANCH ON CONDITION(BC、BCR);BRANCH ON COUNT(BCT、BCTR、BCTG、BCTGR);BRANCH ON INDEX HIGH(BXH、BXHG);BRANCH ON INDEX LOW OR EQUAL(BXLE、BXLEG);BRANCH RELATIVE ON CONDITION(BRC);BRANCH RELATIVE ON CONDITION LONG(BRCL);BRANCH RELATIVE ON COUNT(BRCT、BRCTG);BRANCH RELATIVE ON INDEX HIGH(BRXH、BRXHG);BRANCH RELATIVE ON INDEX LOW OR EQUAL(BRXLE、BRXLG);COMPARE AND BRANCH(CRB、CGRB);COMPARE AND BRANCH RELATIVE(CRJ、CGRJ);COMPARE IMMEDIATE AND BRANCH(CIB、CGIB);COMPARE IMMEDIATE AND BRANCH RELATIVE(CIJ、CGIJ);COMPARE LOGICAL AND BRANCH(CLRB、CLGRB);COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ、CLGRJ);COMPARE LOGICAL IMMEDIATE AND BRANCH(CLIB、CLGIB);及びCOMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE(CLIJ、CLGIJ)の1つが分岐をもたらすたびに、ブレーキング・イベントが発生すると考えられる。
次の命令:即ち、BRANCH AND SET AUTHORITY(BSA);BRANCH IN SUBSPACE GROUP(BSG);BRANCH RELATIVE AND SAVE;BRANCH RELATIVE AND SAVE LONG(BRASL);LOAD PSW(LPSW);LOAD PSW EXTENDED(LPSWE);PROGRAM CALL(PC);PROGRAM RETURN(PR);PROGRAM TRANSFER(PT);PROGRAM TRANSFER WITH INSTANCE(PTI);RESUME PROGRAM(RP);及びTRAP(TRAP2、TRAP4)の1つが完了するたびに、ブレーキング・イベントが発生するとも考えられる。
ブレーキング・イベントは、(暗黙的に、又はTRANSACTION ABORT命令の結果として)トランザクションがアボートされた結果として生じるのではないと考えられる。
モデル依存診断情報724:バイト112−127は、モデル依存診断情報を含む。
12(フィルタ処理済みプログラム割り込み)を除く全てのアボート・コードに対して、モデル依存診断情報が、格納されるTDBの各々に保存される。
一実施形態において、モデル依存診断情報は次のものを含む。:
*バイト112−119は、トランザクション実行分岐表示(TXBI)と呼ばれる64ビットのベクトルを含む。ベクトルの最初の63ビットの各々は、次のように、CPUがトランザクション実行モードにある間の分岐命令の実行の結果を示す。
ビット0は、最初のこうした分岐命令の結果を表し、ビット1は、第2のこうした命令の結果を表し、以下同様である。
CPUがトランザクション実行モードにある間、63より少ない分岐命令が実行された場合、分岐命令に対応しない最右端のビットが0に設定される(ビット63を含む)。63より多い分岐命令が実行されると、TXBIのビット63は1に設定される。
TXBI内のビットは、以下のものを除いて、上記に列挙した、ブレーキング・イベントを生じさせることができる命令によって設定される。:即ち、
−いずれの限定された命令も、TXBI内にビットを設定させない
−例えばz/Architectureの命令において、BRANCH ON CONDITION、BRANCH RELATIVE ON CONDITION、又はBRANCH RELATIVE ON CONDITION LONG命令のM1フィールドが0であるとき、又は、以下の命令のR2フィールドが0のとき、命令の実行により、TXBI内にビットが設定されるかどうかは、モデル依存である。
*BRANCH AND LINK(BALR);BRANCH AND SAVE(BASR);BRANCH AND SAVE AND SET MODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH ON CONDITION(BCR);及びBRANCH ON COUNT(BCTR、BCTGR)
*ホスト・アクセス例外により生じたアボート条件について、バイト127のビット位置0が1に設定される。他の全てのアボート条件について、バイト127のビット位置0が0に設定される。
*ロード/ストア・ユニット(LSU)により検出されたアボート条件に対して、バイト127の右端の5ビットは、原因の表示を含む。LSUにより検出されなかったアボート条件に対して、バイト127が予約される。
汎用レジスタ730:バイト128−255は、トランザクションがアボートされたときの汎用レジスタ0−15の内容を含む。レジスタは、昇順に格納され、バイト128−135の汎用レジスタ0から始まり、次にバイト136−143の汎用レジスタ1、以下同様である。
予約:他の全てのフィールドは予約される。特に断りのない限り、予約されるフィールドの内容は予測不能である。
他のCPU及びI/Oサブシステムにより観察されるとき、トランザクション・アボート中のTDBのストアは、あらゆる非トランザクション・ストア後に行われる多重アクセス参照である。
トランザクションが実行する即値構成の範囲外の原因のために、トランザクションがアボートされることがある。例えば、ハイパーバイザ(LPAR又はz/VMなどの)により認識された一時的イベントにより、トランザクションがアボートされることがある。
トランザクション診断ブロック内に与えられる情報は、診断目的であることを意図しており、かつ、実質的に正しい。しかしながら、即値構成の範囲外のイベントによりアボートが発生することがあるため、アボート・コード又はプログラム割り込み識別のような情報が構成内の条件を正確に反映しないことがあるので、プログラム・アクションを決定するのに、この情報を使用すべきではない。
TDB内に保存された診断情報に加えて、いずれかのデータ例外プログラム例外条件に起因してトランザクションがアボートされ、かつ、AFPレジスタ制御、即ち制御レジスタ0のビット45と、有効な浮動小数点演算許可(F)制御との両方が1であるとき、フィルタ処理がプログラム例外条件に適用されるかどうかに関係なく、データ例外コード(DXC)が、浮動小数点制御レジスタ(FPCR)のバイト2に配置される。トランザクションがアボートされ、かつ、AFPレジスタ制御又は有効な浮動小数点演算許可制御のいずれか又は両方が0であるとき、DXCは、FPCRに配置されない。
一実施形態においては、本明細書に示されるように、トランザクション実行ファシリティがインストールされたとき、例えば、EXTRACT TRANSACTION NESTING DEPTH、NONTRANSACTIONAL STORE、TRANSACTION ABORT、TRANSACTION BEGIN及びTRANSACTION ENDを含む、多数の一般命令が与えられる。さらに、条件付きトランザクション終了ファシリティがインストールされる場合、CONDITIONAL TRANSACTION END命令が与えられる。
CPUがトランザクション実行モードにあるとき、特定の命令を実行しようとする試みが制限され、トランザクションがアボートされる。
制約付きトランザクション実行モードで発行されたとき、特定の命令を実行しようとする試みが、トランザクション制約プログラム割り込みをもたらすこともあり、又はあたかもトランザクションが制約されていないかのように実行を進行させ得る。
z/Architectureの一例において、制限された命令は、例として、次の非特権命令:即ち、COMPARE AND SWAP AND STORE;MODIFY RUNTIME INSTRUMENTATION CONTROLS;PERFORM LOCKED OPERATION;M1フィールドのコードが6又は7であるときのPREFETCH DATA(RELATIVE LONG);M3フィールドが0であり、R1フィールドのコードが6又は7であるときのSTORE CHARACTERS UNDER MASK HIGH;STORE FACILITY LIST EXTENDED;STORE RUNTIME INSTRUMENTATION CONTROLS;SUPERVISOR CALL;及びTEST RUNTIME INSTRUMENTATION CONTROLSを含む。
上記のリストにおいて、COMPARE AND SWAP AND STORE及びPERFORM LOCKED OPERATIONは、TXモードにおいて基本命令を用いてより効果的に実施できる複合命令である。PREFETCH DATA及びPREFETCH DATA RELATIVE LONGについての事例は、6及び7のコードがキャッシュ・ラインを解放するときに限定され、トランザクションの完了前に潜在的にデータのコミットを必要とする。SUPERVISOR CALLは、これが割り込みを発生させる(トランザクションをアボートさせる)ときに制限される。
以下に列挙される条件下で、次の命令が制限される。:
*命令のR2フィールドが0でなく、かつ、分岐トレースがイネーブルにされたときのBRANCH AND LINK(BALR)、BRANCH AND SAVE (BASR)及びBRANCH AND SAVE AND SET MODE。
*命令のR2フィールドが0でなく、かつ、モード・トレースがイネーブルにされたときのBRANCH AND SAVE AND SET MODE及びBRANCH AND SET MODE、モード・トレースがイネーブルにされたときのSET ADDRESSING MODE。
*トランザクション・ネスト化深さが1より大きいときの、CONDITIONAL TRANSACTION END。
*監視イベント条件が認識されたときのMONITOR CALL。
上記のリストは、トレース・エントリを形成できる命令を含む。これらの命令がトランザクション的に実行することを許可され、かつ、トレース・エントリを形成し、その後トランザクションがアボートされた場合、制御レジスタ12のトレース・テーブル・ポインタが進められるが、トレース・テーブルへのストアは廃棄される。このことは、トレース・テーブル内に一貫性のないギャップを残す。従って、トレース・エントリを形成する場合に、命令は制限される。
CPUがトランザクション実行モードにあるとき、次の命令:即ち、CIPHER MESSAGE;CIPHER MESSAGE WITH CFB;CIPHER MESSAGE WITH CHAINING;CIPHER MESSAGE WITH COUNTER;CIPHER MESSAGE WITH OFB;COMPRESSION CALL;COMPUTE INTERMEDIATE MESSAGE DIGEST;COMPUTE LAST MESSAGE DIGEST;COMPUTE MESSAGE AUTHENTICATION CODE;CONVERT UNICODE−16 TO UNICODE−32;CONVERT UNICODE−16 TO UNICODE−8;CONVERT UNICODE−32 TO UNICODE−16;CONVERT UNICODE−32 TO UNICODE−8;CONVERT UNICODE−8 TO UNICODE−16;CONVERT UNICODE−8 TO UNICODE−32;PERFORM CRYPTOGRAPHIC COMPUTATION;RUNTIME INSTRUMENTATION OFF;及びRUNTIME INSTRUMENTATION ONが制限されるかどうかは、モデル依存である。
上記の命令の各々は、ハードウェア・コプロセッサにより現在実施されているか、又は過去のマシンで実施されたかのいずれかであり、従って制限されると考えられる。
有効なAR変更許可(A)制御が0のとき、次の命令:即ち、COPY ACCESS;LOAD ACCESS MULTIPLE;LOAD ADDRESS EXTENDED;及びSET ACCESSが制限される。
上記の命令の各々により、アクセス・レジスタの内容が変更される。TRANSACTION BEGIN命令のA制御が0である場合、プログラムは、アクセス・レジスタの変更が許可されないことを明示的に表示する。
有効な浮動小数点演算許可(F)制御が0であるとき、浮動小数点命令が制限される。
特定の環境下で、次の命令:即ち、EXTRACT CPU TIME;EXTRACT PSW;STORE CLOCK;STORE CLOCK EXTENDED;及びSTORE CLOCK FASTを制限することができる。
上記の命令の各々は、解釈実行状態記述におけるインターセプト制御を受ける。ハイパーバイザが、これらの命令についてのインターセプト制御を設定した場合、これらの命令の実行は、ハイパーバイザの実装のために延長され、従って、インターセプトが発生する場合に制限されると考えられる。
制限された命令を実行しようとする試みにより、制約なしトランザクションがアボートされると、トランザクション診断ブロック内のトランザクション・アボート・コードは11(制限された命令)に設定され、条件コードは3に設定されるが、次の場合を除く。即ち、制約なしトランザクションが、他の場合には特権操作例外をもたらす命令を実行しようと試みることに起因してアボートされたとき、アボート・コードが11(制限された命令)に設定されるか、又は4(特権操作プログラム割り込みの認識の結果もたらされる非フィルタ処理プログラム割り込み)に設定されるかは、予測不能である。制約なしトランザクションが、M1フィールド内のコードが6又は7のときのPREFETCH DATA(RELATIVE LONG)又はM3フィールドが0であり、かつ、R1フィールド内のコードが6又は7のときのSTORE CHARACTERS UNDER MASK HIGHを実行しようとする試みに起因してアボートされたとき、アボート・コードが11(制限された命令)に設定されるか又は16(キャッシュ・アザー(その他をキャッシュに入れる))に設定されるかは、予測不能である。制約なしトランザクションが、MONITOR CALLを実行しようとする試みに起因してアボートされ、かつ、監視イベント条件及び指定例外条件の両方が存在するとき、アボート・コードが11若しくは4に、又はプログラム割り込みがフィルタ処理されている場合に12に設定されるかどうかは予測不能である。
制約付きトランザクションにおいて、付加的な命令を制限することができる。これらの命令は、制約なしトランザクションにおいて制限されるように現在定義されていないが、将来のプロセッサ上での制約なしトランザクションにおける特定の環境下で制限され得る。
特定の制限された命令は、将来のプロセッサ上ではトランザクション実行モードにおいて許容され得る。従って、プログラムは、制限された命令を実行しようとする試みに起因してアボートされるトランザクションに依存すべきではない。TRANSACTION ABORT命令は、安定的にトランザクションをアボートさせるために使用すべきである。
制約なしトランザクションにおいて、プログラムは、制限された命令に起因してアボートするトランザクションを収容するための、代替的な非トランザクション・コード経路を提供しなければならない。
動作において、トランザクション・ネスト化深さが0であるとき、条件コード0をもたらすTRANSACTION BEGIN(TBEGIN)命令の実行により、CPUが制約なしトランザクション実行モードに入る。トランザクション・ネスト化深さが0であるとき、条件コード0をもたらすTRANSACTION BEGIN constrained(TBEGINC)命令の実行により、CPUが制約付きトランザクション実行モードに入る。
特に明示的に断りがある場合を除いて、非トランザクション実行に適用される全ての原則は、トランザクション実行にも適用される。以下はCPUがトランザクション実行モードにある間の処理の付加的な特徴である。
CPUが制約なしトランザクション実行モードにあるとき、条件コード0をもたらすTRANSACTION BEGIN命令の実行により、CPUは制約なしトランザクション実行モードのままである。
CPUにより観察されるとき、トランザクション実行モードで行われたフェッチ及びストアは、トランザクション実行モードでないときに行われたフェッチ及びストアと変わりがない。他のCPU及びI/Oサブシステムにより観察されるとき、CPUがトランザクション実行モードにある間に行われた全てのストレージ・オペランド・アクセスは、単一のブロック同時アクセスであるように見える。つまり、他のCPU及びI/O(例えば、チャネル)プログラムにより観察されるとき、ハーフワード、ワード、ダブルワード又はクワッドワード内の全てのバイトへのアクセスは、ブロック・コンカレントに見えるように指定される。ハーフワード、ワード、ダブルワード又はクワッドワードは、このセクションではブロックと呼ばれる。フェッチ・タイプ参照が、ブロック内でコンカレントに見えるように指定されると、ブロック内に含まれるバイトがフェッチされている間、別のCPU又はI/Oプログラムによるそのブロックへのストア・アクセスは許可されない。ストア・タイプ参照が、ブロック内でコンカレントに見えるように指定されると、ブロック内に含まれるバイトがストアされる間、別のCPU又はI/Oプログラムによるブロックへのアクセス、即ちフェッチ又はストアは許可されない。
命令及びDATのためのストレージ・アクセス、並びにART(アクセス・レジスタ・テーブル)テーブル・フェッチは、非トランザクション規則に従う。
CPUが、通常、トランザクション・ネスト化深さを0に移行させるTRANSACTION END命令、又は条件コードを0に設定するCONDITIONAL TRANSACTION END命令により、トランザクション実行モードを終了し、これらの場合のいずれにおいても、トランザクションが完了する。
CPUが、TRANSACTION END命令又は条件コードを0に設定するCONDITIONAL TRANSACTION END命令の完了によりトランザクション実行モードを終了すると、トランザクション実行モードにある間に行われた全てのストアがコミットされる。つまり、他のCPU又はI/Oサブシステムにより観察されるとき、ストアは、単一のブロック・コンカレント操作として行われるように見える。
トランザクションは、種々の原因のために暗黙的にアボートされ得る、又はTRANSACTION ABORT命令により明示的にアボートされ得る。トランザクション・アボートの例示的な可能な原因、対応するアボート・コード、トランザクション・アボートPSWに配置される条件コードを、以下に説明する。
外部割り込み:トランザクション・アボート・コードは2に設定され、かつ、トランザクション・アボートPSWの条件コードは2に設定される。トランザクション・アボートPSWは、外部割り込み処理の一部として外部旧PSWとして格納される。
プログラム割り込み(非フィルタ処理):割り込みをもたらすプログラム例外条件(つまり、非フィルタ処理条件)により、トランザクションがコード4でアボートされる。トランザクション・アボートPSWの条件コードは、そのプログラム割り込みコード特有に設定される。トランザクション・アボートPSWは、プログラム割り込み処理の一部としてプログラム旧PSWとして格納される。
他の場合には操作例外に起因してアボートされるトランザクションをもたらす命令が、代替的な結果をもたらすことがある。制約なしトランザクションにおいては、トランザクションは、代わりにアボート・コード11(制限された命令)でアボートすることができ、制約付きトランザクションの場合、操作例外の代わりに、トランザクション制約プログラム割り込みが認識され得る。
いずれかの他の非フィルタ処理プログラム例外条件と共にPER(プログラム・イベント記録)イベントが認識されると、条件コードは3に設定される。
マシン・チェック割り込み:トランザクション・アボート・コードは5に設定され、トランザクション・アボートPSWの条件コードは2に設定される。トランザクション・アボートPSWは、マシン・チェック割り込み処理の一部として、マシン・チェック旧PSWとして格納される。
I/O割り込み:トランザクション・アボート・コードは6に設定され、トランザクション・アボートPSWの条件コードは2に設定される。トランザクション・アボートPSWは、I/O割り込み処理の一部としてI/O旧PSWとして格納される。
フェッチ・オーバーフロー:トランザクションが、CPUがサポートするより多い記憶位置からフェッチしようと試みたとき、フェッチ・オーバーフロー条件が検出される。トランザクション・アボート・コードは7に設定され、条件コードは2又は3のいずれかに設定される。
ストア・オーバーフロー:トランザクションが、CPUがサポートするより多い記憶位置にストアしようと試みたとき、ストア・オーバーフロー条件が検出される。トランザクション・アボート・コードは8に設定され、条件コードは2又は3に設定される。
フェッチ又はストア・オーバーフローに応じて条件コードを2又は3とするのを可能にすることにより、CPUが潜在的に再試行可能な状況を示すことが可能になる(例えば、条件コード2は、トランザクションの再実行が生産的であり得ることを示し、条件コード3は、再実行を推奨しない)。
フェッチ競合:フェッチ競合条件は、別のCPU又はI/Oサブシステムが、このCPUによってトランザクション的にフェッチされた記憶位置に格納しようと試みるときに検出される。トランザクション・アボート・コードは9に設定され、条件コードは2に設定される。
ストア競合:ストア競合条件は、別のCPU又はI/Oサブシステムが、このCPUによりトランザクション実行中に格納された記憶位置にアクセスしようと試みるときに検出される。トランザクション・アボート・コードは10に設定され、条件コードは2に設定される。
制限された命令:CPUがトランザクション実行モードにあるとき、制限された命令の実行を試みることにより、トランザクションがアボートされる。トランザクション・アボート・コードは11に設定され、条件コードは3に設定される。
CPUが制約付きトランザクション実行モードにあるとき、制限された命令を実行しようとする試みは、トランザクション制約プログラム割り込みをもたらすか、又は制限された命令が原因のアボートをもたらすかは予測不能である。トランザクションは、依然としてアボートされるが、アボート・コードはいずれの原因も表示し得る。
プログラム例外条件(フィルタ処理済み):割り込みをもたらさないプログラム例外条件(即ち、フィルタ処理済み条件)は、トランザクション・アボート・コード12でトランザクションをアボートさせる。条件コードは、3に設定される。
ネスト化深さ超過:ネスト化深さ超過条件は、トランザクション・ネスト化深さが、構成についての最大許容可能値であり、かつ、TRANSACTION BEGIN命令が実行されたときに検出される。トランザクションは、トランザクション・アボート・コード13でアボートされ、条件コードは3に設定される。
キャッシュ・フェッチ関連条件:トランザクションによりフェッチされたストレージ位置に関連する条件が、CPUのキャッシュ回路により検出される。トランザクションは、トランザクション・アボート・コード14でアボートされ、条件コードは2又は3のいずれかに設定される。
キャッシュ・ストア関連条件:トランザクションにより格納されたストレージ位置に関連する条件は、CPUのキャッシュ回路により検出される。トランザクションは、トランザクション・アボート・コード15でアボートされ、条件コードは2又は3のいずれかに設定される。
キャッシュ・アザー条件:キャッシュ・アザー条件は、CPUのキャッシュ回路により検出される。トランザクションは、トランザクション・アボート・コード16でアボートされ、条件コードは2又は3のいずれかに設定される。
トランザクションの実行中、CPUが同じ絶対アドレスにマッピングされた異なる論理アドレスを用いて命令又はストレージ・オペランドにアクセスする場合、トランザクションがアボートされるかどうかは、モデル依存である。トランザクションが、同じ絶対アドレスにマッピングされた異なる論理アドレスを用いるアクセスに起因してアボートされた場合、条件に応じて、アボート・コード14、15又は16が設定される。
CTENDの負のオペランド条件:CONDITIONAL TRANSACTION END命令が実行されるとき、CTENDの負のオペランド条件が認識され、第2のオペランドの内容は負である。トランザクションは、トランザクション・アボート・コード17でアボートされ、条件コードは3に設定される。
CTENDタイムアウト条件:CONDITIONAL TRANSACTION END命令の実行がモデル依存の限界値を超えると、CTENDタイムアウト条件が認識される。トランザクション・アボート・コードは18に設定され、条件コードは2に設定される
その他の条件:その他の条件とは、トランザクションをアボートさせるCPUにより認識される任意の他の条件である。トランザクション・アボート・コードは255に設定され、かつ、条件コードは2又は3のいずれかに設定される。
複数の構成が同じマシン(例えば、論理パーティション又は仮想マシン)内で実行されているとき、トランザクションは、外部マシン・チェック又は異なる構成で行われたI/O割り込みに起因してアボートされ得る。
上記に例が与えられたが、対応するアボート・コード及び条件コードでのトランザクション・アボートの他の原因を提供することができる。例えば、原因が再起動割り込みである場合があり、この場合、トランザクション・アボート・コードは1に設定され、トランザクション・アボートPSWの条件コードは2に設定される。トランザクション・アボートPSWは、再起動処理の一部として再起動−旧PSWとして格納される。更に別の例として、原因は、スーパーバイザ呼び出し条件とすることができ、この場合、アボート・コードは3に設定され、トランザクション・アボートPSWの条件コードは3に設定される。他の又は異なる例も可能である。
注記:
1.その他の条件は、以下のいずれかからもたらされ得る。
*z/Architectureにおける、COMPARE AND REPLACE DAT TABLE ENTRY、COMPARE AND SWAP AND PURGE、INVALIDATE DAT TABLE ENTRY、INVALIDATE PAGE TABLE ENTRY、NQ制御が0であり、かつ、SK制御が1であるPERFORM FRAME MANAGEMENT FUNCTION、NQ制御が0であり、構成内の別のCPUにより実行され、条件コードが2に設定されるSET STORAGE KEY EXTENDEDのような命令。
*リセット、再起動若しくは停止、又は同等のSIGNAL PROCESSOR命令のようなオペレータ機能がCPU上で実行される。条件コードは2に設定される。
*上記に列挙されないいずれかの他の条件;条件コードは2又は3に設定される。
2.フェッチ及びストア競合が検出された記憶位置は、同一キャッシュ・ライン内のどの場所であってもよい。
3.特定の条件下で、CPUは、類似のアボート条件を区別できないことがある。例えば、フェッチ又はストア・オーバーフローは、それぞれのフェッチ又はストア競合と区別できないことがある。
4.CPUによる複数の命令経路の投機的実行により、こうした条件が概念的シーケンスで行われない場合でも、競合又はオーバーフロー条件に起因して、トランザクションがアボートされる。制約付きトランザクション・モードにある間、CPUは、投機的実行を一時的に禁止し、こうした競合又はオーバーフローを投機的に検出することなく、トランザクションを完了しようと試みることを可能にする。
TRANSACTION ABORT命令の実行により、トランザクションがアボートする。第2のオペランド・アドレスから、トランザクション・アボート・コードが設定される。条件コードは、第2のオペランド・アドレスのビット63が、0であるか又は1であるかによって、それぞれ、2又は3のいずれかに設定される。
本明細書で述べられるように、トランザクション・ファシリティは、制約なしトランザクション(及び、制約付きトランザクション)、並びに、これらに限定されるものではないが、トランザクション終了及び条件付きトランザクション終了を含むこれと関連した処理を提供し、条件付きトランザクション終了ファシリティがインストールされると仮定する。
一実施形態において、制約なしトランザクションの処理は、以下を含む。:
●TND=0の場合
〇B1≠0の場合、トランザクション診断ブロック・アドレスは第1のオペランド・アドレスから設定される。
〇トランザクション・アボートPSWは、次の順次命令アドレスに設定される。
〇I2フィールドにより指定される汎用レジスタ対は、モデル依存記憶位置に保存される。
−プログラムにより直接アクセス可能でない
●有効なPIFC、A、&F制御が計算される
○有効なA=TBEGIN A&任意の外部A
○有効なF=TBEGIN F&任意の外部F
○有効なPIFC=最大値(TBEGIN PIFC、任意の外部PIFC)
●トランザクション・ネスト化深さ(TND)がインクリメントされる
●TNDが0から1に移行する場合、CPUはトランザクション実行モードに入る
●条件コードが0に設定される。
○TBEGINに続く命令が制御を受け取ると、
−TBEGINの成功がCC0により示される
−アボートされたトランザクションが、0でないCCにより示される
●例外
○ネスト化深さ超過の場合、アボート・コード13
○B1フィールドが0でなく、かつ、ストア操作に関してストレージ・オペランドにアクセスできない場合、アクセス例外(種々のPICの1つ)
○TBEGIN命令がexecute型命令のターゲットである場合、実行例外(PIC 0003)
○トランザクション実行ファシリティがインストールされていない場合、操作例外(PIC 0001)
○次のいずれかの場合、PIC 0006
−PIFCが無効である(3の値)
−第2のオペランド・アドレスがダブルワードに位置合わせされていない
○トランザクション実行制御(CR0.8)が0である場合、PIC 0013 hex
○制約付きTXモードで発行された場合、PIC 0018 hex
上述のように、制約なし(又は、制約付き)トランザクションは、TRANSACTION END(TEND)命令により終了させることができる。TRANSACTION END(TEND)命令の処理に関する更なる詳細を本明細書に説明する。
初めに、TEND命令を取得する(例えば、フェッチする、受け取る等)プロセッサに基づいて、種々の例外チェックが行われ、例外がある場合、例外が処理される。例えば、TRANSACTION ENDが実行タイプ命令のターゲットである場合、操作は抑止され、実行例外が認識され、トランザクション実行制御、即ちCR0のビット8が0である場合、特殊操作例外が認識され、操作が抑止される。さらに、トランザクション実行ファシリティが構成内にインストールされていない場合、操作例外が認識され、操作は抑止される。
しかしながら、実行例外が認識されない場合、トランザクション・ネスト化深さがデクリメントされる(例えば1だけ)。デクリメントの後に、トランザクション・ネスト化深さが0であるかどうかの判断が行われる。トランザクション・ネスト化深さが0の場合、トランザクションにより行われた全てのストア・アクセスがコミットされる。さらに、CPUはトランザクション実行モードを終了し、命令は完了する。
トランザクション・ネスト化深さが0と等しくない場合、TRANSACTION END命令は直ぐに完了する。
操作の開始時にCPUがトランザクション実行モードにある場合、条件コードは0に設定され、他の場合には、条件コードは2に設定される。
有効な浮動小数点許可(F)制御、AR変更許可(A)制御及びプログラム割り込みフィルタ処理制御(PIFC)は、終了されたレベルを開始したTRANSACTION BEGIN命令の前のそれぞれの値にリセットされることに留意されたい。さらに、操作の完了時に、シリアル化機能が実施される。
最外TRANSACTION END命令の完了時に認識されるPER命令フェッチ及びトランザクション終了イベントにより、トランザクションはアボートされない。
更に別の実施形態において、条件付きトランザクション終了ファシリティがインストールされている場合、次いで、TRANSACTION END命令に加えて、CONDITIONAL TRANSACTION END命令が存在する。CONDITIONAL TRANSACTION END(CTEND)命令は、制約なしトランザクション実行モードで実行されているプログラムが、別のCPU及び/又はI/Oサブシステムのいずれかによって変更されたストレージ位置を検査し、検査に基づいてアクションをとることを可能にする特殊命令である。例えば、さらに後述されるように、検査されたデータに基づいて、トランザクション実行を終了し、アボートすることができ、又は選択された時間間隔との所定の関係が満たされる(例えば、ある時間間隔を超過する)又は検査されたデータが所定の値になるといった所定のイベントが発生するまで、終了/アボートの決定を遅延させることができる。さらに、付加的な又は他のイベントを用いて、割り込みが保留状態になる又は他のイベントなどの遅延を終了させることができる。
図10を参照して、CONDITIONAL TRANSACTION END命令の形式の一実施形態を説明する。一例として、CONDITIONAL TRANSACTION END命令800は、条件付きトランザクション終了操作を指定するオペコードを指定する複数のオペコード・フィールド802a、802b;マスク・フィールド(M1)804;インデックス・フィールド(X2)806;ベース・フィールド(B2)808;第1の変位フィールド(DL2)810;及び第2の変位フィールド(DH2)812を含む。X2フィールド及びB2フィールドにより指定される汎用レジスタの内容を、DH2及びDL2フィールドの連結の内容に付加して、第2のオペランドのアドレス(即ち、第2のオペランドを含むストレージ位置のアドレス)を形成する。X2フィールド又はB2フィールドのいずれか又は両方が0の場合、対応するレジスタは、この付加に関与しない。
動作において、CTEND命令が実行されると、次のことが発生する。
CPUが制約なしトランザクション実行モードにあり、命令の始めに、トランザクション・ネスト化深さが1であるとき、ダブルワードの第2のオペランドが検査される。第2のオペランドは、64ビットの符号付き2進整数として扱われ、後の実行は、次のように、オペランドの内容に依存する。:
●第2のオペランドが負であるとき、トランザクション実行は、アボート・コード17(CTENDアボート)でアボートされ、トランザクション・アボートPSWにおける条件コードは3に設定される。
●第2のオペランドが0であるとき、トランザクションは終了する。トランザクションにより行われた全てのストア・アクセスがコミットされ、トランザクション・ネスト化深さは0に設定され、CPUはトランザクション実行モードを終了し、命令は、条件コード0を設定することにより完了する。
●第2のオペランドが正であるとき、(a)オペランドが負又は0になるまで(その場合、命令実行は上述の通りである)、又は(b)モデル依存の間隔を超過するまで、例えば1ミリ秒を超過するまで、命令の完了が遅延される。
●モデル依存の間隔を超過した場合、トランザクション実行は、アボート・コード18でアボートされ、トランザクション・アボートPSWにおける条件コードは2に設定される。CPUが遅延される際、割り込みが保留状態になった場合、命令は無効化され、割り込みが処理される。
●ストレージ・アクセス順序付け及びブロック・コンカレンシ(block concurrency)の目的のため、第2のオペランドは、正であるときにフェッチされないと考えられる。しかしながら、CTENDは、オペランドが負又は0のときに、単一のオペランド・フェッチを行うように見える。さらに、その符号に関係なく、オペランドについてアクセス例外が認識される。
CONDITIONAL TRANSACTION ENDは、次の条件下で限定された命令である。
●命令は、制約付きトランザクション実行モードで実行される。この場合、トランザクション制約プログラム例外条件が認識され得る。
●命令は、制約なしトランザクション実行モードで実行され、命令の始めに、トランザクション・ネスト化深さは1より大きい。この場合、トランザクション実行は、限定された命令アボート条件(アボート・コード11)に起因してアボートされる。
命令の始めに、CPUがトランザクション実行モードにあるとき、以下が適用される。:
●第2のオペランド位置について、アクセス例外又はPERゼロ・アドレス検出イベントが認識されるかどうかはモデル依存である。
●第2のオペランド位置について、アクセス例外が認識されない場合、命令は、条件コード2を設定することにより完了する。
。
操作完了時に、シリアル化機能が実施される。
M1フィールドは無視されるが、0を含む必要があり、他の場合には、プログラムは、将来互換性をもって動作しないことがある。
特別な条件
命令が実行タイプ命令のターゲットである場合、実行例外が認識され、操作は抑止される。
トランザクション−実行制御、制御レジスタ0のビット8が0の場合、特殊操作例外が認識され、操作は抑止される。
第2のオペランドがダブルワード境界上にない場合、指定例外が認識され、操作は抑止される。命令の始めに、CPUがトランザクション実行モードにないとき、この条件が認識されるかどうかは、モデル依存である。
結果の条件コード:
0 トランザクションは終了される
1 適用なし
2 CPUはトランザクション実行モードにない
3 適用なし
プログラム例外:
*アクセス(フェッチ、第2のオペランド)
*実行
*操作(条件付きトランザクション終了ファシリティはインストールされていない)
*特殊操作
*指定
*トランザクション制約
命令についての実行の優先順位は、一例において、以下の通りである。:
1.〜7.D 一般的な場合に関するプログラム割り込み条件の優先順位と同じ優先順位を有する例外。
7.E トランザクション・ネスト化深さが1より大きい場合のアボート・コード11(限定された命令)。
8.A 指定例外(第2のオペランドはダブルワード境界上にない)*
8.B アクセス例外(第2のオペランド位置)*。
9 条件コード2(トランザクション・ネスト化深さが0である)。
10 アボート・コード17(トランザクション・ネスト化深さが1であり、第2のオペランドは負である)。
11 条件コード0(トランザクション・ネスト化深さが1であり、第2のオペランドは0である)。
12 アボート・コード18(トランザクション・ネスト化深さが1であり、モデル依存の限度値に関し、第2のオペランドは正のままである)。
*トランザクション・ネスト化深さが0であるとき(つまり、CPUがトランザクション実行モードにないとき)、この条件が認識されるかどうかはモデル依存である。
プログラミング上の注意
1.トランザクション実行がアボートされる場合、命令は直接条件コードを3に設定しないが、後のトランザクション・アボート処理により、トランザクション・アボートPSWにおける条件コードが3に設定される。
2.CTENDを実行しているCPUにより観察されるとき、他のCPUにより第2のオペランド位置に対して行われた変更の順序付けは保証されない。例えば、(a)CPUはトランザクション実行モードにある、(b)ダブルワード記憶位置(DW)は、最初に正の値を含む、及び(c)CTENDが実行され、DWをその第2のオペランド位置として指定すると仮定する。1つ又は複数の他のCPUが負、0及び正の値をダブルワードにストアする場合、CTENDがアボートするか、条件コード0で完了するか、又は遅延を続行するかどうかは予測不能である。
3.モデルによって、別のCPUがCTENDストレージ・オペランドを変更しようと試みるとき、CTENDストレージ・オペランドがトランザクション内でアクセスされる他のデータと同じキャッシュ・ライン内にある場合、CPUはトランザクションをアボートすることがある。従って、通常のトランザクション・データは、CTENDストレージ・オペランドと同じキャッシュ・ラインに入れるべきではない。
図11〜図12を参照して、CONDITIONAL TRANSACTION END命令の実行に関するさらなる詳細を説明する。図11を参照すると、最初に、プロセッサは、CONDITIONAL TRANSACTION END命令を取得する(例えば、フェッチする、受け取る、提供される、又は他の方法で取得する)(ステップ900)。次に、プロセッサは、命令を実行する(ステップ902)。本明細書で説明されるように、実行中、第2のオペランドは、命令により指定されるストレージ位置からフェッチされ、検査される。命令の後の実行は、そのオペランドの内容に依存する。例えば、第2のオペランドが負の値である場合、トランザクションはアボートされ、トランザクション・アボートPSWにおける条件コードが、例えば3に設定される。さらに、第2のオペランドが0である場合、命令は終了し、ストア・アクセスがコミットされ、トランザクション・ネスト化深さは0に設定され、条件コードは0に設定され、プロセッサはトランザクション・モードを終了する。さらに、第2のオペランドが正の値を有する場合、例えば所定のイベントが発生するまで、命令の完了が遅延される。
図12を参照して、プロセッサによるCONDITIONAL TRANSACTION END命令の実行に関するさらなる態様を説明する。一例において、CONDITIONAL TRANSACTION END命令が実行されると、トランザクション実行ファシリティが使用可能かどうかについての判断が行われる(問い合わせ1000)。例えば、制御レジスタ(CR)0のビット8が0に設定された場合、ファシリティは使用可能でなく、例外(例えば、特殊操作例外)が与えられる(ステップ1002)。しかしながら、制御レジスタ0のビット8が0に等しくない場合、トランザクション実行ファシリティは使用可能であり、命令を実行しているプロセッサ(例えば、CPU)がトランザクション実行モードにあるかどうかについて、さらなる判断が行われる(問い合わせ1004)。0に等しいトランザクション・ネスト化深さ(TND)により示されるように、プロセッサがトランザクション実行モードにない場合、条件コードは、例えば2に設定され、命令は終了する(ステップ1006)。しかしながら、トランザクション・ネスト化深さが0より大きく、プロセッサがトランザクション実行モードにあることを示す場合、命令を実行しているプロセッサが制約なしトランザクション実行モードにあるかどうかについての判断が行われる(問い合わせ1008)。命令を実行しているプロセッサが制約なしトランザクション実行モードにない場合、一例において、トランザクション制約プログラム割り込みのような例外が与えられる(ステップ1010)。
プロセッサが制約なしトランザクション実行モードにある場合、命令の始めのトランザクション・ネスト化深さが1に等しいかどうかについての判断が行われる(問い合わせ1012)。トランザクション・ネスト化深さが1より大きい場合、例外が与えられ、一例においては、限定された命令:アボート・コード11を示す(ステップ1014)。しかしながら、CPUが制約なしトランザクション実行モードにあり、命令の始めにトランザクション・ネスト化深さが1である場合、第2のオペランドがフェッチされる(ステップ1016)。一例において、第2のオペランドは、64ビットの符号付き2進整数として扱われ、CONDITIONAL TRANSACTION END命令の後の実行は、第2のオペランドの内容に依存する。例えば、第2のオペランドの値が負の値である場合(問い合わせ1018)、トランザクション実行は、例えばアボート・コード17でアボートされ、トランザクション・アボート・プログラム状況ワード(PSW)における条件コードは、例えば3に設定される(ステップ1020)。この場合、トランザクション・ストア・データは廃棄される。
しかしながら、第2のオペランドの値が0である場合(問い合わせ1018)、トランザクションは終了し、トランザクションにより行われた全てのストア・アクセスはコミットされ、トランザクション・ネスト化深さは0に設定され、プロセッサは、トランザクション実行モードを終了し、命令は、条件コードを例えば0に設定することによって完了する(ステップ1022)。
問い合わせ1018に戻ると、第2のオペランドの値が正の値である場合、例えば、オペランドが負又は0になる(その場合、命令実行は上述の通りである)、又はモデル依存の間隔を超過するまでといった所定のイベントの発生まで、命令の完了が遅延される。遅延の間、一例において、割り込みが保留状態になることがある。従って、一例において、処理は、プロセッサについての割り込みが保留状態であるかどうかの判断を続行する(問い合わせ1024)。割り込みが保留状態である場合、トランザクションはアボートされ、割り込みが処理される(ステップ1026)。しかしながら、割り込みが保留状態でない場合、モデル依存の間隔(例えば、1ミリ秒を上回らない)を超過したかどうかについての判断が行われる(問い合わせ1028)。モデル依存の間隔を超過した場合、例えば、トランザクション実行は、例えばアボート・コード18(CTENDタイムアウト)でアボートされ、トランザクション・アボートPSWにおける条件コードは、例えば2に設定される(トランザクションを再試行することができる)(ステップ1030)。別の実施形態において、アボート・コードは、例えば255(その他)に設定され、トランザクション・アボートPSWにおける条件コードは、例えば3に設定される(再試行しない)。他のアボート・コード及び条件コードも可能である。
モデル依存のタイムアウトが存在しない場合、処理は、第2のオペランドの再フェッチ(ステップ1016)及び第2のオペランドの検査(問い合わせ1018)を続行する。見られるように、例として、例えば第2のオペランドが負の値になるまで、第2のオペランドが0になるまで、割り込みが保留状態になるまで、又はモデル依存のタイムアウトまで、遅延が続行する。これによりCTEND命令の処理が終了する。
ストレージ・アクセス順序付け及びブロック・コンカレンシの目的のため、第2のオペランドは、正であるときにフェッチされないと考えられる。しかしながら、その符号に関係なく、オペランドに関して、アクセス例外が認識される。
上記の例において、モデル依存の間隔は時間間隔であるが、他の例では、命令の数又は他のタイプの間隔など、時間間隔以外のものであってもよい。さらに、問い合わせは間隔を超過したかどうかであるが、更に別の実施形態においては、等しい(equal)、より小さい(小なり、less than)等といった他の操作を用いてもよい。多くの変形が可能である。
制約なしトランザクション実行モードで実行されているプロセッサが、別のCPU又はI/Oサブシステムによって変更されたストレージ位置を検査するのを可能にするCONDITIONAL TRANSACTION END命令が、上記に詳細に説明され、検査されたデータに基づいて、トランザクション実行を終了すること、アボートすること、又は終了/アボートの決定を一時的に遅延させることが可能である。CONDITIONAL TRANSACTION END命令の一部である条件付きトランザクション終了ファシリティは、1つのCPU上のトランザクション実行が、ストア競合に起因してトランザクションがアボートされることなく、別のCPU又はI/Oサブシステムによって行われるストアに影響を及ぼし得る機構を提供する。
一態様において、実行時に、符号付きの値に関して命令により指定されるメモリ・オペランド(例えば、第2のオペランド)を絶えず試験する命令(例えば、CTEND)が与えられる。符号付きの値が第1の値(例えば、負の値)を有することに基づいて、トランザクションがアボートされ、トランザクション・ストア・データが廃棄される。さらに、符号付きの値が第2の値(例えば、0)を有することに基づいて、トランザクションが終了し、トランザクション・ストア・データがメモリに格納される。さらに、符号付きの値が第3の値(例えば、正の値)を有することに基づいて、符号付きの値が第1の値若しくは第2の値になるまで、又はモデル依存の間隔との所定の関係を満たす(例えば、間隔を超過する)といった所定のアクションの発生まで、トランザクションのアボート又は終了が遅延される。他の所定のアクションも可能である。
一実施形態において、CTEND命令は、プロセッサとI/Oサブシステムとの間で共有されるメモリ位置の検査に基づいて、トランザクションを条件付きで終了し、他のプロセッサは、トランザクション方式で実行されていることも又はいないこともある。一般的には、トランザクション実行モードにおいてCPUにより検査されているメモリ位置へのストアにより、トランザクションがアボートされるが、CTENDは、競合を理由としてアボートが認識されないという点が異なる。
更に別の実施形態において、命令によりフェッチされる第2のオペランドが正の値であるとき、これを用いて、予想される遅延の期間の表示を与えることができる。例えば、CPU1がCTENDを実行し、CPU2は、そのシリアル化処理の完了を待つことが可能である。CPU2は、CPU1のCTENDの第2のオペランドの記憶位置に繰り返しストアを行い、その予想される遅延(例えば、5ミリ秒内に行われる、4、3、2、1・・・ミリ秒内に行われる)を指し示すことができる。CPU2がタイムリーな方法で終わらないであろうとCPU1が理解した場合、CPU1は、待つことなく、CTENDを直ちに終了させることができる。他の例及び/又は変形も可能である。
1つ又は複数の態様において、トランザクション処理において用いられることも又は用いられないこともある、条件付き命令終了(conditional instruction end)ファシリティが提供される。このファシリティは、例えば、命令のオペランドが特定の値に達するまで、完了を遅延させることができる単一命令を含む。一例において、オペランドは、命令により明示的に定められ、別の実施形態においては、オペランドは、暗黙指定される。図13〜図15を参照して、条件付き命令終了ファシリティと関連した論理の一実施形態を説明する。
図13を参照すると、プロセッサが、条件付き命令終了操作を指定するためのオペコード(1102)と、この例では、オペランドを提供するための1つ又は複数のフィールド(1104)とを含む、マシン命令を取得する(例えば、受け取る、提供される、又は他の方法で得る)(ステップ110)。一実施形態において、1つ又は複数のフィールドは、メモリ内のオペランドの位置を提供する。例えば、1つ又は複数のフィールドは、インデックス・フィールド、ベース・フィールド、第1の変位フィールド、及び第2の変位フィールドを含み、インデックス・フィールド及びベース・フィールドの1つ又は複数により指定されたレジスタの内容を、第2の変位フィールド及び第1の変位フィールドの連結に付加して、オペランドの記憶位置を提供する。
次に、プロセッサは、マシン命令を実行する(ステップ1110)。一実施形態において、図14を参照すると、実行は、オペランドを取得すること(例えば、オペランドを記憶位置からフェッチすること)を含む(ステップ1120)。オペランドが、ある値と所定の関係を有するかどうかについて判断を行う(問い合わせ1122)。一実施形態において、所定の関係は、等しいことを含み、値は0である。しかしながら、他の関係及び/又は値を用いることもできる。オペランドが値(例えば、オペランド=0)と所定の関係を有することに基づいて、命令の実行が、プロセッサにより完了する(ステップ1124)。
しかしながら、オペランドが値と所定の関係を有していないことに基づいて(問い合わせ1122)、命令の完了が遅延される(ステップ1126)。従って、オペランドを再取得し(ステップ1120)、処理は値のチェックを続行する。つまり、この実施形態において、オペランドが値に設定されるまで、命令はスピンする。
図15を参照して、更に別の実施形態を説明する。この実施形態において、プロセッサは、オペランドを取得し(オペランドをメモリからフェッチし)(ステップ1150)、オペランドが、ある値(例えば、0)と所定の関係(例えば、等しい)を有するかどうかについて、判断を行う(問い合わせ1152)。オペランドが、値と所定の関係を有する場合、命令の実行は完了する(ステップ1154)。一例において、条件コードが0に設定される。更に別の実施形態において、命令は、トランザクションの部分であるか又はトランザクションと関連付けられており、命令の完了は、トランザクションも終了させる。トランザクションの終了の際、1つの特定の実施形態において、トランザクションにより行われるストア・アクセスがコミットされ、トランザクション・ネスト化深さが0に設定される。
問い合わせ1152に戻ると、オペランドが値と所定の関係を有していない場合、一実施形態において、オペランドが値と別の関係を有するかどうかについて、さらなる判断を行う(問い合わせ1156)。例えば、オペランドが0より大きいかどうかについて、判断を行う。オペランドが0より大きい場合、命令の完了は遅延され(ステップ1158)、処理は、オペランドの再フェッチを続行する(ステップ1150)。命令がトランザクションの部分であるか又はトランザクションと関連付けられている1つの特定の実施形態において、命令の完了の遅延は、トランザクションの完了も遅延させる。
問い合わせ1156に戻ると、例えば、オペランドが0より小さい(すなわち、オペランドは値と所定の関係を有していない又は値と別の関係を有する)場合、命令は早期に終了する(ステップ1160)。命令がトランザクションの部分であるか又はトランザクションと関連付けられている一実施形態において、トランザクションはアボートされ、一例において、トランザクション・アボート・プログラム状況ワード(PSW)における条件コードが所定の値に設定される。
種々の実施形態が上述されたが、1つ又は複数の態様は、トランザクション処理を含むことも又は含まないこともある他の実施形態に関連し得る。例えば、ロック命令又はファシリティは、本明細書で説明される態様の1つ又は複数を含むことができる。多くの他の可能性が存在する。
本明細書で用いられる場合、ストレージ、中央ストレージ、主ストレージ、メモリ及び主メモリは、慣例によって暗黙的に又は明示的に、特に断りのない限り、交換可能に用いられる。
図16を参照すると、一例において、コンピュータ・プログラム製品1200は、例えば、1つ又は複数の実施形態を提供し、容易にするように、その上にコンピュータ可読プログラム・コード手段、論理及び/又は命令1204を格納するための、1つ又は複数の一時的でないコンピュータ可読ストレージ媒体1202を含む。
本発明は、システム、方法、及び/又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用するための命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、即ち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク型読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード又は命令がその上に記録された溝の中の隆起構造などの機械的にエンコードされるデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で用いられる場合、コンピュータ可読ストレージ媒体は、電波若しくは他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルの中を通る光パルス)、又は配線を介して伝送される電気信号などの、一時的な信号自体と解釈されるべきではない。
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードしてもよく、又は、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードしてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カード又はネットワーク・インタフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するように、コンピュータ可読プログラム命令を転送する。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データとすることができ、又は、Smalltalk、C++等のようなオブジェクト指向プログラミング言語、及び、「C」プログラミング言語若しくは類似のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組み合わせで書かれたソース・コード若しくはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、全体をユーザのコンピュータ上で実行することができ、独立型ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されることができ、一部をユーザのコンピュータ上で実行し、一部を遠隔コンピュータ上で実行することができ、又は全体を遠隔コンピュータ若しくはサーバ上で実行することができる。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、又は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを使用してインターネット経由で)接続が行われてもよい。幾つかの実施形態においては、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラマブル論理アレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するための手段を生成するようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、その結果、命令をその内部に格納したコンピュータ可読ストレージ媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を含むようにすることもできる。
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で一連の動作ステップを行わせてコンピュータ実装プロセスを生成し、それにより、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実行するための1つ又は複数の実行可能な命令を含む、モジュール、セグメント又は命令の一部を表すことができる。幾つかの代替的な実施において、ブロック内に記された機能は、図面内に記された順序とは異なる順序で行われることもある。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、ときには逆の順序で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェアベースのシステムにより実装すること、又は専用ハードウェアとコンピュータ命令との組み合わせによって実施することができることにも留意されたい。
上記に加えて、1つ又は複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって供与、提供、配置、管理、サービス等を行うことができる。例えば、サービス・プロバイダは、1又は複数の顧客のために1つ又は複数の態様を実施するコンピュータ・コード及び/又はコンピュータ・インフラストラクチャの作成、保守、サポート等を行うことができる。見返りに、サービス・プロバイダは、例として、予約申し込み及び/又は報酬契約の下で顧客から支払いを受けることができる。付加的に又は代替的に、サービス・プロバイダは、1又は複数の第三者に対する広告内容の販売から支払いを受けることができる。
一態様において、1つ又は複数の実施形態を実施するために、アプリケーションを配備することができる。一例として、アプリケーションの配備は、1つ又は複数の実施形態を実施するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを配置することができ、そこでは、コードは、コンピューティング・システムと協働して、1つ又は複数の実施形態を実施することができる。
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、プロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、ここで、コンピュータ媒体は、1つ又は複数の実施形態を含む。コードは、コンピュータ・システムと協働して、1つ又は複数の実施形態を実施することができる。
種々の実施形態が上述されたが、これらは例にすぎない。例えば、1つ又は複数の実施形態を組み込み、使用するために、他のアーキテクチャのコンピューティング環境を使用することもできる。さらに、異なる命令、命令形式、命令フィールド、及び/又は命令の値を使用することができる。加えて、アボート・コード及び条件コードについての値の例が与えられるが、他の値を用いることができる。さらに、異なる、他の、及び/又は付加的な制限/制約を提供/使用することもできる。多くの変形が可能である。
さらに、他のタイプのコンピューティング環境の利益を得、これを使用することができる。一例として、プログラム・コードを格納及び/又は実行するのに適しており、システム・バスを介してメモリ要素に直接又は間接的に結合された少なくとも2つのプロセッサを含む、データ処理システムを使用することができる。メモリ要素は、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量記憶装置、及び実行中に大容量記憶装置からコードを取り出さなければならない回数を減らすために少なくとも幾つかのプログラム・コードの一時的なストレージを提供するキャッシュ・メモリを含む。
入力/出力即ちI/Oデバイス(これらに限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サムドライブ及び他のメモリ媒体等)は、直接システムに結合することもでき、又は介在するI/Oコントローラを介してシステムに結合することができる。ネットワーク・アダプタをシステムに結合させて、データ処理システムが、介在する私的ネットワーク又は公衆ネットワークを通じて他のデータ処理システム又は遠隔プリンタ若しくはストレージ・デバイスに結合できるようにすることもできる。モデム、ケーブル・モデム及びイーサネット・カードは、ネットワーク・アダプタの利用可能なタイプのうちのほんの数例である。
図17を参照すると、これは、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との間のより小型で高速な(下位レベルの)キャッシュとを有する階層構造とすることができる。いくつかの実施において、下位レベルのキャッシュは、命令フェッチ及びデータ・アクセスのための個別の下位レベル・キャッシュを提供するように分割される。一実施形態において、TXファシリティについては、トランザクション診断ブロック(TDB)5100及び1つ又は複数のバッファ5101を、キャッシュ5009及びメモリ5002の1つ又は複数に格納することができる。一例においては、TXモードにおいて、データは最初にTXバッファに格納され、TXモードが終了すると(例えば、最外TEND)、バッファ内のデータは、メモリに格納(コミット)されるか、又は、アボートがある場合、バッファ内のデータが廃棄される。
一実施形態において、命令は、命令フェッチ・ユニット5004によりメモリ5002からキャッシュ5009を介してフェッチされる。命令は、命令デコード・ユニット5006内でデコードされ(幾つかの実施形態においては他の命令と共に)命令実行ユニット5008にディスパッチされる。典型的には、幾つかの実行ユニット5008、例えば、算術演算実行ユニット、浮動小数点実行ユニット及び分岐命令実行ユニットが用いられる。さらに、TXファシリティの一実施形態において、種々のTX制御5110を用いることができる。命令は、実行ユニットにより、必要に応じて命令が指定するレジスタ又はメモリからのオペランドにアクセスすることにより実行される。オペランドがメモリ5002からアクセスされる(ロードされる又はストアされる)場合には、典型的には、ロード/ストア・ユニット5005が、実行されている命令の制御下でアクセスを取り扱う。命令は、ハードウェア回路若しくは内部マイクロコード(ファームウェア)、又はこの両方の組み合わせにより実行することができる。
TXファシリティの態様によると、プロセッサ5001は、PSW5102(例えばTX及び/又はアボートPSW)、ネスト化深さ5104、TDBA5106及び1つ又は複数の制御レジスタ5108も含む。
既述のように、コンピュータ・システムは、ローカル(又は、主)ストレージ内の情報、並びにアドレス指定、保護、並びに参照及び変更記録を含む。アドレス指定の幾つかの態様は、アドレスの形式、アドレス空間の概念、アドレスの種々のタイプ及び1つのタイプのアドレスが別のタイプのアドレスに変換される方法を含む。主ストレージの一部は、恒久的に割り当てられたストレージ位置を含む。主ストレージは、システムに、直接アドレス可能なデータの高速アクセス・ストレージを提供する。データ及びプログラムの両方とも、これらが処理される前に(入力デバイスから)主ストレージにロードされる。
主ストレージは、キャッシュと呼ばれることがある、1つ又は複数のより小型の高速アクセス・バッファ・ストレージを含むことができる。キャッシュは、典型的には、CPU又はI/Oプロセッサと物理的に関連付けられる。物理的構造の、性能を除いた効果及び別個のストレージ媒体の使用は、一般に、プログラムにより観察することができない。
命令及びデータ・オペランドに対して、別個のキャッシュを維持することができる。キャッシュ内の情報は、キャッシュ・ブロック又はキャッシュ・ライン(又は、簡単に言えばライン)と呼ばれる整数境界上の連続バイトで維持される。モデルは、キャッシュ・ラインのサイズをバイト単位で戻すEXTRACT CACHE ATTRIBUTE命令を提供することができる。モデルはまた、データ又は命令キャッシュへのストレージのプリフェッチ又はキャッシュからのデータの解放を行うPREFETCH DATA及びPREFETCH DATA RELATIVE LONG命令も提供することができる。
ストレージは、ビットの水平の長い文字列として見ることができる。殆どの操作では、ストレージへのアクセスは、左から右への順で進行する。ビットの文字列は、8ビット単位で細分される。この8ビットの単位はバイトと呼ばれ、これは全ての情報形式の基本構成単位である。ストレージ内の各々のバイト位置は、負でない固有の整数により識別され、この整数がバイト位置のアドレス、即ち、簡単にバイト・アドレスである。隣接するバイト位置は連続するアドレスを有し、左端の0から始まって左から右へ順に進行する。アドレスは、符号なしの2進整数であり、24ビット、31ビット又は64ビットである。
情報は、ストレージとCPU又はチャネル・サブシステムとの間で、一度に1バイトずつ、又は1グループ分のバイトで伝送される。特に断りのない限り、例えばz/Architectureにおいて、ストレージ内のバイト・グループは、グループの左端のバイトによりアドレス指定される。グループ内のバイト数は、実行される操作により暗黙的に決定される場合、又は明示的に決定される場合がある。CPU操作に使用される場合、バイト・グループはフィールドと呼ばれる。各々のバイト・グループ内において、例えばz/Architectureにおいて、ビットは、左から右の順に番号付けされる。z/アーキテクチャにおいて、左端のビットを「最上位」ビットと呼び、右端のビットを「最下位」ビットと呼ぶことがある。しかしながら、ビット番号はストレージ・アドレスではない。アドレス指定できるのはバイトだけである。ストレージ内の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バイトの倍数又は他の倍数で)で長さが変化し得る。情報がストレージ内に配置されると、ストレージへの物理的パスの幅が格納されるフィールドの長さより大きい場合であっても、指定したフィールドに含まれているバイト位置の内容のみが置き換えられる。
情報の特定の単位は、ストレージ内の整数境界上にあるべきである。境界は、そのストレージ・アドレスがバイトでの単位の長さの倍数である場合に、情報の単位に対して整数であると呼ばれる。整数境界上にある2バイト、4バイト、8バイト、16バイト及び32バイトのフィールドには、特別な名称が与えられる。ハーフワードは、2バイト境界上にある2個の連続したバイトのグループであり、これは命令の基本構成単位である。ワードは、4バイト境界上にある4個の連続したバイトのグループである。ダブルワードは、8バイト境界上にある8個の連続したバイトのグループである。クワッドワードは、16バイト境界上にある16個の連続したバイトのグループである。オクトワードは、32バイト境界上にある32個の連続したバイトのグループである。ストレージ・アドレスが、ハーフワード、ワード、ダブルワード、クワッドワード及びオクトワードを指定するとき、そのアドレスの2進表現では、それぞれ1個、2個、3個、4個又は5個の右端の0ビットを含む。命令は、2バイト整数境界上にあるべきである。殆どの命令のストレージ・オペランドは、境界位置合わせ要件を有さない。
命令及びデータ・オペランドに対して別個のキャッシュを実装するデバイスにおいては、ストアが後にフェッチされる命令を変更するかどうかに関係なく、プログラムが、後にフェッチされるキャッシュ・ラインに格納される場合、著しい遅延が生じ得る。
一例において、実施形態は、ソフトウェア(ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどとも呼ばれる場合があるが、そのいずれも1つ又は複数の実施形態と整合性がある)により実施することができる。図17を参照すると、1つ又は複数の態様を具体化するソフトウェア・プログラム・コードは、CD−ROMドライブ、テープドライブ、又はハードドライブといった長期ストレージ媒体デバイス5011から、ホスト・システム5000のプロセッサ5001によりアクセスすることができる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はCD−ROMのようなデータ処理システムと共に使用するための種々の周知の媒体のいずれかの上で具体化することができる。コードは、こうした媒体上に分散させても、又はコンピュータ・メモリ5002からユーザに分散させても、又はこうした他のシステムのユーザが使用するために、ネットワーク5010上の1つのコンピュータ・システムのストレージから他のコンピュータ・システムに分散させてもよい。
ソフトウェア・プログラム・コードは、種々のコンピュータ・コンポーネント及び1つ又は複数のアプリケーション・プログラムの機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体デバイス5011から相対的により高速のコンピュータ・ストレージ5002にページングされ、そこでプロセッサ5001による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び/又は、ネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、有形の媒体(これらに限定されるものではないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープ等)上に作成され格納されたとき、「コンピュータ・プログラム」と呼ばれることが多い。コンピュータ・プログラム媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
図18は、1つ又は複数の実施形態を実施することができる代表的なワークステーション又はサーバ・ハードウェア・システムを示す。図18のシステム5020は、随意的な周辺機器を含む、パーソナル・コンピュータ、ワークステーション、又はサーバなどの代表的なベース・コンピュータ・システム5021を含む。ベース・コンピュータ・システム5021は、1つ又は複数のプロセッサ5026と、周知の技術に従ってプロセッサ5026とシステム5021の他のコンポーネントを接続し、これらの間の通信を可能にするために用いられるバスとを含む。バスは、プロセッサ5026を、ハードドライブ(例えば、磁気媒体、CD、DVD及びフラッシュ・メモリのいずれかを含む)又はテープドライブを含むことができる、メモリ5025及び長期ストレージ5027に接続する。システム5021はまた、バスを介して、マイクロプロセッサ5026を、キーボード5024、マウス5023、プリンタ/スキャナ5030、及び/又はタッチ・センシティブ・スクリーン、デジタル化された入力パッド等のいずれかのユーザ・インターフェース機器とすることができる他のインターフェース機器といった、1つ又は複数のインターフェース機器に接続する、ユーザ・インターフェース・アダプタを含むこともできる。バスはまた、ディスプレイ・アダプタを介して、LCDスクリーン又はモニタなどのディスプレイ装置5022をマイクロプロセッサ5026にも接続する。
システム5021は、ネットワーク5029と通信する5028ことができるネットワーク・アダプタを介して、他のコンピュータ又はコンピュータ・ネットワークと通信することができる。例示的なネットワーク・アダプタは、通信チャネル、トークン・リング、イーサネット又はモデムである。代替的に、システム5021は、CDPD(セルラー・デジタル・パケット・データ)カードのような無線インターフェースを用いて通信することもできる。システム5021は、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)又はシステム5021内のこうした他のコンピュータと関連付けることができ、又は、別のコンピュータ等とのクライアント/サーバ構成におけるクライアントとすることができる。これら構成の全て、並びに、適切な通信ハードウェア及びソフトウェアは、当技術分野において周知である。
図19は、1つ又は複数の実施形態を実施することができるデータ処理ネットワーク5040を示す。データ処理ネットワーク5040は、各々が複数の個々のワークステーション5041、5042、5043、5044を含むことができる、無線ネットワーク及び有線ネットワークのような複数の個々のネットワークを含むことができる。さらに、当業者であれば理解するように、1つ又は複数のLANを含ませることができ、そこで、LANは、ホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含むことができる。
さらに図19を参照すると、ネットワークはまた、ゲートウェイ・コンピュータ(クライアント・サーバ5046)、又はアプリケーション・サーバ(データ・リポジトリにアクセスすることができ、かつ、ワークステーション5045から直接アクセスすることもできる遠隔サーバ5048)のような、メインフレーム・コンピュータ又はサーバを含むこともできる。ゲートウェイ・コンピュータ5046は、各々の個々のネットワークへの入力点のとして働く。ゲートウェイは、1つのネットワーク・プロトコルを別のものに接続するときに必要とされる。ゲートウェイ5046は、通信リンクによって別のネットワーク(例えば、インターネット5047)に結合できることが好ましい。ゲートウェイ5046はまた、通信リンクを用いて、1つ又は複数のワークステーション5041、5042、5043、5044に直接結合することもできる。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なIBM eServer System zサーバを用いて実装することができる。
図18及び図19を同時に参照すると、1つ又は複数の態様を具体化することができるソフトウェア・プログラム・コード5031には、一般的に、CD−ROMドライブ又はハードドライブといった長期ストレージ媒体5027から、システム5020のプロセッサ5026によってアクセスすることができる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はCD−ROMといった、データ処理システムと共に用いるための種々の周知の媒体のいずれかの上で具体化することができる。コードは、そのような媒体上で分散させても、又はメモリからユーザ5050、5051に分散させても、又は、こうした他のシステムのユーザが用いるために、ネットワーク上の1つのコンピュータ・システムのメモリ若しくはストレージから他のコンピュータ・システムに分散させてもよい。
代替的に、プログラム・コードをメモリ5025内で具体化し、プロセッサ・バスを用いてプロセッサ5026によってプログラム・コードにアクセスすることができる。このようなプログラム・コードは、種々のコンピュータ・コンポーネント及び1つ又は複数のアプリケーション・プログラム5032の機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体5027から高速メモリ5025にページングされ、そこでプロセッサ5026による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び/又は、ネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、有形の媒体(これらに限定されるものではないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープなどを含む)に格納されたとき、「コンピュータ・プログラム」と呼ばれることが多い。コンピュータ・プログラム媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
プロセッサが最も容易に利用できるキャッシュ(通常、プロセッサの他のキャッシュよりも高速で小さい)は、最下位(L1又はレベル1)のキャッシュであり、主ストア(主メモリ)は、最上位レベルのキャッシュ(3つのレベルがある場合にはL3)である。最下位レベルのキャッシュは、実行されるマシン命令を保持する命令キャッシュ(I−キャッシュ)と、データ・オペランドを保持するデータ・キャッシュ(D−キャッシュ)とに分割されることが多い。
図20を参照すると、プロセッサ5026についての例示的なプロセッサの実施形態が示される。典型的には、メモリ・ブロックをバッファに入れてプロセッサ性能を向上させるために、1つ又は複数のレベルのキャッシュ5053が用いられる。キャッシュ5053は、用いられる可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは、64バイト、128バイト、又は256バイトのメモリ・データである。データをキャッシュに入れるのではなく、命令をキャッシュに入れるために、別個のキャッシュが用いられることが多い。キャッシュ・コヒーレンス(メモリ及びキャッシュ内のラインのコピーの同期)は、多くの場合、当技術分野において周知の種々の「スヌープ」アルゴリズムによって与えられる。プロセッサ・システムの主メモリ・ストレージ5025は、キャッシュと呼ばれることが多い。4つのレベルのキャッシュ5053を有するプロセッサ・システムにおいて、主ストレージ5025は、典型的にはより高速であり、かつ、コンピュータ・システムが利用できる不揮発性ストレージ(DASD、テープ等)の一部だけを保持するので、レベル5(L5)のキャッシュと呼ばれることがある。主ストレージ5025は、オペレーティング・システムによって主ストレージ5025との間でページングされるデータのページを「キャッシュに入れる」。
プログラム・カウンタ(命令カウンタ)5061は、実行される現行の命令のアドレスを常時監視している。z/Architectureプロセッサのプログラム・カウンタは64ビットであり、従来のアドレッシング制限をサポートするために、31ビット又は24ビットに切り捨てることができる。プログラム・カウンタは、典型的には、コンテキスト・スイッチの際に持続するように、コンピュータのPSW(プログラム状況ワード)内で具体化される。従って、例えば、オペレーティング・システムにより、プログラム・カウンタ値を有する進行中のプログラムに割り込みをかけることが可能である(プログラム環境からオペレーティング・システム環境へのコンテキスト・スイッチ)。プログラムのPSWは、プログラムがアクティブでない間、プログラム・カウンタ値を保持し、オペレーティング・システムが実行されている間、オペレーティング・システムの(PSW内の)プログラム・カウンタが用いられる。典型的には、プログラム・カウンタは、現行の命令のバイト数に等しい量だけインクリメントされる。RISC命令は、典型的には固定長であり、CISC命令は、典型的には可変長である。IBM z/Architectureの命令は、2バイト、4バイト、又は6バイトの長さを有するCISC命令である。例えば、コンテキスト・スイッチ操作又は分岐命令の分岐成立操作により、プログラム・カウンタ5061が変更される。コンテキスト・スイッチ操作において、現行のプログラム・カウンタ値は、実行されるプログラムについての他の状態情報(条件コードのような)と共にプログラム状況ワード内に保存され、実行される新しいプログラム・モジュールの命令を指し示す新しいプログラム・カウンタ値がロードされる。分岐成立操作を行い、分岐命令の結果をプログラム・カウンタ5061にロードすることにより、プログラムが判断を下すこと又はプログラム内でループすることを可能にする。
典型的には、プロセッサ5026の代わりに命令をフェッチするために、命令フェッチ・ユニット5055が用いられる。フェッチ・ユニットは、「次の順次命令」、分岐成立命令のターゲット命令、又はコンテキスト・スイッチの後のプログラムの最初の命令のいずれかをフェッチする。今日の命令フェッチ・ユニットは、プリフェッチされた命令を用いることができる可能性に基づいて、命令を投機的にプリフェッチするプリフェッチ技術を用いることが多い。例えば、フェッチ・ユニットは、次の順次命令を含む16バイトの命令と、付加的なバイトの更なる順次命令とをフェッチすることができる。
次いで、フェッチされた命令が、プロセッサ5026によって実行される。一実施形態において、フェッチされた命令は、フェッチ・ユニットのディスパッチ・ユニット5056に渡される。ディスパッチ・ユニットは命令をデコードし、デコードされた命令についての情報を適切なユニット5057、5058、5060に転送する。実行ユニット5057は、典型的には、命令フェッチ・ユニット5055からデコードされた算術命令についての情報を受け取り、命令のオペコードに従ってオペランドに関する算術演算を行う。オペランドは、好ましくは、メモリ5025、アーキテクチャ化レジスタ5059、又は実行される命令の即値フィールドのいずれかから、実行ユニット5057に与えられる。実行の結果は、格納された場合には、メモリ5025、レジスタ5059、又は他のマシン・ハードウェア(制御レジスタ、PSWレジスタなどのような)内に格納される。
仮想アドレスは、動的アドレス変換5062、及び随意的に、アクセス・レジスタ変換5063を用いて、実アドレスに変換される。
プロセッサ5026は、典型的には、命令の機能を実行するための1つ又は複数の実行ユニット5057、5058、5060を有する。図21を参照すると、実行ユニット5057は、インターフェース論理5071を介して、アーキテクチャ化された汎用レジスタ5059、デコード/ディスパッチ・ユニット5056、ロード・ストア・ユニット5060、及び他のプロセッサ・ユニット5065と通信することができる。実行ユニット5057は、幾つかのレジスタ回路5067、5068、5069を用いて、算術論理演算ユニット(ALU)5066が動作する情報を保持することができる。ALUは、加算、減算、乗算、及び除算などの算術演算、並びに、論理積、論理和、及び排他的論理和、ローテート及びシフトのような論理関数を実行する。ALUは、設計に依存する専用の演算をサポートすることが好ましい。他の回路は、例えば条件コード及び回復サポート論理を含む、他のアーキテクチャ化ファシリティ5072を提供することができる。典型的には、ALU演算の結果は、出力レジスタ回路5070に保持され、この出力レジスタ回路5070が、結果を種々の他の処理機能に転送することができる。多数のプロセッサ・ユニットの構成が存在し、本説明は、一実施形態の代表的な理解を与えることのみを意図している。
例えばADD命令は、算術及び論理機能を有する実行ユニット5057で実行され、一方、例えば浮動小数点命令は、特化された浮動小数点能力を有する浮動小数点実行部で実行される。実行ユニットは、オペランドに対してオペコードが定めた関数を行うことにより、命令が特定したオペランドに対して動作することが好ましい。例えば、ADD命令は、命令のレジスタ・フィールドによって特定された2つのレジスタ5059内に見出されるオペランドに対して、実行ユニット5057により実行することができる。
実行ユニット5057は、2つのオペランドに対して算術加算を実行し、結果を第3オペランドに格納し、ここで第3オペランドは、第3のレジスタであっても又は2つのソース・レジスタのいずれかであってもよい。実行ユニットは、シフト、ローテート、論理積、論理和、及び排他的論理和のような種々の論理関数、並びに、加算、減算、乗算、除法のいずれかを含む、種々の代数関数を実行することができる算術論理演算ユニット(ALU)5066を用いることが好ましい。スカラー演算のために設計されたALU5066もあり、浮動小数点のために設計されたものALU5066もある。データは、アーキテクチャに応じて、ビッグ・エンディアン(最下位のバイトが最も高いバイト・アドレスである)、又はリトル・エンディアン(最下位のバイトが最も低いバイト・アドレスである)とすることができる。IBM z/Architectureは、ビッグ・エンディアンである。符号付きフィールドは、アーキテクチャに応じて、符号及び大きさ、1の補数、又は2の補数とすることができる。2の補数における負の値又は正の値は、ALU内で加法しか必要としないため、ALUが減算能力を設計する必要がないという点で、2の補数は有利である。数値は、通常、省略表現で記述され、12ビット・フィールドは、4,096バイトブロックのアドレスを定め、通常、例えば4Kバイト(キロバイト)ブロックのように記述される。
図22を参照すると、分岐命令を実行するための分岐命令情報が、典型的には、分岐ユニット5058に送られ、この分岐ユニット5058は、多くの場合、分岐履歴テーブル5082のような分岐予測アルゴリズムを用いて、他の条件付き演算が完了する前に分岐の結果を予測する。条件付き演算が完了する前に、現行の分岐命令のターゲットがフェッチされ、投機的に実行される。条件付き演算が完了すると、投機的に実行された分岐命令は、条件付き演算の条件及び投機された結果に基づいて、完了されるか又は破棄される。典型的な分岐命令は、条件コードを試験し、条件コードが分岐命令の分岐要件を満たす場合、ターゲット・アドレスに分岐することができ、ターゲット・アドレスは、例えば、命令のレジスタ・フィールド又は即値フィールド内に見出されるものを含む幾つかの数に基づいて計算することができる。分岐ユニット5058は、複数の入力レジスタ回路5075、5076、5077と、出力レジスタ回路5080とを有するALU5074を用いることができる。分岐ユニット5058は、例えば、汎用レジスタ5059、デコード・ディスパッチ・ユニット5056、又は他の回路5073と通信すること5081ができる。
例えば、オペレーティング・システムによって開始されるコンテキスト・スイッチ、コンテキスト・スイッチを発生させるプログラム例外又はエラー、コンテキスト・スイッチを発生させるI/O割り込み信号、又は(マルチスレッド環境における)複数のプログラムのマルチスレッド活動を含む様々な理由により、命令のグループの実行に割り込みがかけられることがある。コンテキスト・スイッチ動作は、現在実行中のプログラムについての状態情報を保存し、次いで、起動される別のプログラムについての状態情報をロードすることが好ましい。状態情報は、例えば、ハードウェア・レジスタ又はメモリ内に保存することができる。状態情報は、実行される次の命令を指し示すプログラム・カウンタ値と、条件コードと、メモリ変換情報と、アーキテクチャ化されたレジスタの内容とを含むことが好ましい。コンテキスト・スイッチの活動は、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、又はファームウェア・コード(マイクロコード、ピココード、又はライセンス内部コード(LIC))単独で又はその組み合わせで実施することができる。
プロセッサは、命令により定義された方法に従ってオペランドにアクセスする。命令は、命令の一部の値を用いて即値オペランドを与えることができ、汎用レジスタ又は専用レジスタ(例えば、浮動小数点レジスタ)のいずれかを明示的に指し示す1つ又は複数のレジスタ・フィールドを与えることができる。命令は、オペコード・フィールドによって、オペランドとして識別されるインプライド・レジスタを用いることができる。命令は、オペランドのためのメモリ位置を用いることができる。z/Architectureの長変位ファシリティにより例示されるように、オペランドのメモリ位置を、レジスタ、即値フィールド、又はレジスタと即値フィールドの組み合わせによって与えることができ、命令は、ベース・レジスタ、索引レジスタ、及び即値フィールド(変位フィールド)を定め、これらが、例えば互いに加算されてメモリ内のオペランドのアドレスをもたらす。ここでの位置は、典型的には、特に断りのない限り、主メモリ(主ストレージ)内の記憶位置を意味する。
図23を参照すると、プロセッサは、ロード/ストア・ユニット5060を用いて、ストレージにアクセスする。ロード/ストア・ユニット5060は、メモリ5025内のターゲット・オペランドのアドレスを取得し、オペランドをレジスタ5059又は別のメモリ5025の記憶位置にロードすることによってロード操作を行うことができ、或いは、メモリ5025内のターゲット・オペランドのアドレスを取得し、レジスタ5059又は別のメモリ5025の記憶位置から取得したデータをメモリ5025内のターゲット・オペランドの記憶位置に格納することによって、ストア操作を行うことができる。ロード/ストア・ユニット5060は、投機的なものであってもよく、命令シーケンスに対してアウト・オブ・オーダー式の順序でメモリにアクセスすることができるが、プログラムに対して、命令がインオーダー式に実行されたという外観を維持することになる。ロード/ストア・ユニット5060は、汎用レジスタ5059、デコード/ディスパッチ・ユニット5056、キャッシュ/メモリ・インターフェース5053、又は他の要素5083と通信することができ、ストレージ・アドレスを計算し、かつ、パイプライン処理を順に行って操作をインオーダー式に保持するための、種々のレジスタ回路、ALU5085、及び制御論理5090を含む。一部の動作は、アウト・オブ・オーダー式とすることができるが、ロード/ストア・ユニットは、アウト・オブ・オーダー式動作が、プログラムに対して、当技術分野において周知のようなインオーダー式に実行されたように見えるようにする機能を提供する。
好ましくは、アプリケーション・プログラムが「見ている」アドレスは、仮想アドレスと呼ばれることが多い。仮想アドレスは、「論理アドレス」及び「実効アドレス」と呼ばれることもある。これらの仮想アドレスは、これらに限定されるものではないが、単に仮想アドレスをオフセット値にプリフィックス付加すること、1つ又は複数の変換テーブルを介して仮想アドレスを変換することを含む、種々の動的アドレス変換(DAT)技術の1つによって、物理的メモリ位置にリダイレクトされるという点で仮想のものであり、変換テーブルは、少なくともセグメント・テーブル及びページ・テーブルを単独で又は組み合わせて含むことが好ましく、セグメント・テーブルは、ページ・テーブルを指し示すエントリを有することが好ましい。z/Architectureでは、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、及び随意的なページ・テーブルを含む、変換の階層構成が提供される。アドレス変換の性能は、仮想アドレスを関連した物理的メモリ位置にマッピングするエントリを含む変換ルックアサイド・バッファ(TLB)を用いることにより改善されることが多い。DATが変換テーブルを用いて仮想アドレスを変換したときに、エントリが作成される。次いで、後に仮想アドレスを用いることで、低速の順次変換テーブル・アクセスではなく、高速のTLBのエントリを用いることが可能になる。TLBの内容は、LRUを含む種々の置換アルゴリズムによって管理することができる。
プロセッサがマルチプロセッサ・システムのプロセッサである場合には、各プロセッサは、コヒーレンシのために、I/O、キャッシュ、TLB、及びメモリといった共有リソースをインターロック状態に保持する責任を負う。キャッシュ・コヒーレンシを保持する際に、一般的には「スヌープ」技術が用いられる。スヌープ環境においては、共有を容易にするために、各キャッシュ・ラインを、共有状態、排他的状態、変更状態、無効状態等のいずれか1つの状態にあるものとしてマーク付けすることができる。
I/Oユニット5054(図20)は、プロセッサに、例えば、テープ、ディスク、プリンタ、ディスプレイ、及びネットワークを含む周辺機器に取り付けるための手段を与える。I/Oユニットは、ソフトウェア・ドライバによってコンピュータ・プログラムに提示されることが多い。IBMによるSystem zのようなメインフレームにおいては、チャネル・アダプタ及びオープン・システム・アダプタが、オペレーティング・システムと周辺機器との間に通信をもたらすメインフレームのI/Oユニットである。
さらに、他のタイプのコンピューティング環境が、1つ又は複数の態様から利益を得ることができる。一例として、環境は、特定のアーキテクチャ(例えば、命令実行、アドレス変換などのアーキテクチャ化された機能、及びアーキテクチャ化されたレジスタを含む)又はそのサブセットをエミュレートする(例えば、プロセッサ及びメモリを有するネイティブ・コンピュータ・システム上で)エミュレータ(例えば、ソフトウェア又は他のエミュレーション機構)を含むことができる。このような環境においては、エミュレータを実行しているコンピュータが、エミュレートされる機能とは異なるアーキテクチャを有することができたとしても、エミュレータの1又は複数のエミュレーション機能により、1つ又は複数の実施形態が実施され得る。一例として、エミュレーション・モードにおいては、エミュレートされる特定の命令又は操作がデコードされ、適切なエミュレーション機能が構築され、個々の命令又は操作を実施する。
エミュレーション環境においては、ホスト・コンピュータは、例えば、命令及びデータを格納するためのメモリと、メモリから命令をフェッチし、随意的に、フェッチされた命令のためのローカル・バッファリングを提供するための命令フェッチ・ユニットと、フェッチされた命令を受信し、フェッチされた命令のタイプを判断するための命令デコード・ユニットと、命令を実行するための命令実行ユニットとを含む。実行は、データをメモリからレジスタ内にロードすること、データをレジスタから再びメモリに格納すること、又はデコード・ユニットにより判断されるように、何らかのタイプの算術演算又は論理演算を実行することを含むことができる。一例においては、各ユニットは、ソフトウェアで実装される。例えば、ユニットが実行する演算は、エミュレータ・ソフトウェア内の1つ又は複数のサブルーチンとして実装される。
より具体的には、メインフレームにおいて、アーキテクチャ化されたマシン命令は、通常、プログラマによって、多くの場合コンパイラ・アプリケーションを介して、今日では「C」プログラマによって用いられる。ストレージ媒体内に格納されたこれらの命令は、z/ArchitectureのIBMサーバにおいて、又は代替的に他のアーキテクチャを実行するマシンにおいて、ネイティブに実行することができる。これらの命令は、既存の及び将来のIBMメインフレーム・サーバにおいて、及び、IBMの他のマシン(例えば、Power Systemsサーバ及びSystem xサーバ)上で、エミュレートすることができる。これらの命令は、IBM社、Intel社、AMD社などによって製造されたハードウェアを用いて種々のマシン上でLinux(登録商標)を実行しているマシンにおいて実行することができる。z/Architecture下でそのハードウェア上で実行することに加えて、Linuxを用いること、並びに、一般に実行がエミュレーション・モードにあるHercules、UMX、又はFSI(Fundamental Software,Inc)によるエミュレーションを用いるマシンを用いることもできる。エミュレーション・モードにおいては、ネイティブ・プロセッサによって、エミュレーション・ソフトウェアが実行され、エミュレートされたプロセッサのアーキテクチャをエミュレートする。
ネイティブ・プロセッサは、一般的に、エミュレートされたプロセッサのエミュレーションを実行するためにファームウェア又はネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェアを実行する。エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャの命令のフェッチと実行を担当する。エミュレーション・ソフトウェアは、エミュレートされたプログラム・カウンタを維持し、命令境界を常時監視している。エミュレーション・ソフトウェアは、一度に1つ又は複数のエミュレートされたマシン命令をフェッチし、ネイティブ・プロセッサにより実行するために、その1つ又は複数のエミュレートされたマシン命令を、対応するネイティブマシン命令のグループに変換することができる。これらの変換された命令は、より速い変換を達成できるようにキャッシュに入れることができる。それにも関わらず、エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ規則を維持して、オペレーティング・システム及びエミュレートされたプロセッサのために書かれたアプリケーションが正確に動作することを保証しなければならない。さらに、エミュレーション・ソフトウェアは、これらに限定されるものではないが、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブル及びページ・テーブルを含む動的アドレス変換機能、割り込み機構、コンテキスト・スイッチ機構、時刻(TOD)クロック、及びI/Oサブシステムへのアーキテクチャ化インターフェースを含む、エミュレートされたプロセッサのアーキテクチャによって識別されるリソースを提供し、オペレーティング・システム又はエミュレートされたプロセッサ上で実行するように設計されたアプリケーション・プログラムが、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で実行することができる。
エミュレートされた特定の命令がデコードされ、個々の命令の機能を実行するためのサブルーチンが呼び出される。エミュレートされたプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、例えば、「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及び他の多くを含むがこれらに限定されない、種々のソフトウェア及びハードウェア・エミュレーションの特許は、当業者が利用可能なターゲット・マシンのための異なるマシン用に設計された命令形式のエミュレーションを達成する様々な既知の方法を示す。
図24において、ホスト・アーキテクチャのホスト・コンピュータ・システム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を補助するために、専用のハードウェア及びオフ・ロード・エンジンを設けることもできる。
更に別の実施形態において、1つ又は複数の態様は、クラウド・コンピューティングに関する。本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で述べられる教示の実装は、クラウド・コンピューティング環境に限定されるものではないことが予め理解される。むしろ、本発明の実施形態は、現在知られている又は後に開発される他のいずれかのタイプのコンピューティング環境と併せて実装することができる。
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、及び少なくとも4つの配備モデルを含むことができる。
特徴は、以下の通りである。
オンデマンド・セルフサービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置(例えば、国、州、又はデータセンタ)を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性:機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
サービス・モデルは以下の通りである。
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
配備モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
クラウド・コンピューティング環境は、無国籍性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで図25を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示される。クラウド・コンピューティング・ノード6010は、好適なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明される本発明の実施形態の使用又は機能の範囲に対するいずれかの制限を示唆することを意図するものではない。上記に関係なく、クラウド・コンピューティング・ノード6010は、本明細書で上述された機能のいずれかを実装及び/又は実施することができる。
クラウド・コンピューティング・ノード6010には、他の多数の汎用又は専用コンピューティング・システム環境又は構成で動作可能な、コンピュータ・システム/サーバ6012が存在する。コンピュータ・システム/サーバ6012と共に用いるのに好適な周知のコンピューティング・システム、環境、及び/又は構成の例としては、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステム又はデバイス等のいずれかを含む分散型クラウド・コンピューティング環境が含まれる。
コンピュータ・システム/サーバ6012は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ6012は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体に配置することができる。
図25に示されるように、クラウド・コンピューティング・ノード6010のコンピュータ・システム/サーバ6012は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム/サーバ6012のコンポーネントは、これらに限定されるものではないが、1つ又は複数のプロセッサ又は処理ユニット6016、システム・メモリ6028、及びシステム・メモリ6028を含む種々のシステム・コンポーネントをプロセッサ6016に結合するバス6018を含むことができる。
バス6018は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの1つ又は複数を表す。限定ではなく例としては、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture、ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro Channel Architecture、MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、及びPeripheral Component Interconnect(PCI)バスを含む。
コンピュータ・システム/サーバ6012は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ6012がアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
システム・メモリ6028は、ランダム・アクセス・メモリ(RAM)6030及び/又はキャッシュ・メモリ6032など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ6012は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体(図示されておらず、典型的には「ハードドライブ」と呼ばれる)との間の読み出し及び書き込みのために、ストレージ・システム6034を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フレキシブル・ディスク」)との間の読み出し及び書き込みのための磁気ディスク・ドライブと、CD−ROM、DVD−ROM又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、それぞれを、1つ又は複数のデータ媒体インターフェースによってバス6018に接続することができる。以下でさらに示され説明されるように、メモリ6028は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールの組(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
限定ではなく例として、メモリ6028内に、プログラム・モジュール6042の組(少なくとも1つ)を有するプログラム/ユーティリティ6040、並びにオペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール6042は、一般に、本明細書で説明される本発明の実施形態の機能及び/又は方法を実行する。
コンピュータ・システム/サーバ6012は、キーボード、ポインティング・デバイス、ディスプレイ6024等のような1つ又は複数の外部デバイス6014;ユーザがコンピュータ・システム/サーバ6012と対話することを可能にする1つ又は複数のデバイス;及び/又はコンピュータ・システム/サーバ6012が1つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス(例えば、ネットワーク・カード、モデムなど)と通信することもできる。このような通信は、入力/出力(I/O)インターフェース6022を経由して行うことができる。さらにまた、コンピュータ・システム/サーバ6012は、ネットワーク・アダプタ6020を介して、ローカル・エリア・ネットワーク(LAN)、汎用広域ネットワーク(WAN)、及び/又はパブリック・ネットワーク(例えば、インターネット)などの1つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ6020は、バス6018を介して、コンピュータ・システム/サーバ6012の他のコンポーネントと通信する。図示されないが、コンピュータ・システム/サーバ6012と共に他のハードウェア及び/又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、RAIDシステム、テープドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
ここで図26を参照すると、例示的なクラウド・コンピューティング環境6050が示される。示されるように、クラウド・コンピューティング環境6050は、例えば携帯情報端末(PDA)又は携帯電話6054A、デスクトップ・コンピュータ6054B、ラップトップ・コンピュータ6054C、及び/又は自動車コンピュータ・システム6054Nなどといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、1つ又は複数のクラウド・コンピューティング・ノード6010を含む。ノード6010は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境6050は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、及び/又はソフトウェアを提供することが可能になる。図26に示されるコンピューティング・デバイス6054A−Nのタイプは単に例示であることを意図し、コンピューティング・ノード10及びクラウド・コンピューティング環境6050は、いずれのタイプのネットワーク及び/又はネットワーク・アドレス指定可能な接続上でも(例えば、ウェブ・ブラウザを用いて)、いずれのタイプのコンピュータ化された装置とも通信できることを理解されたい。
ここで図27を参照すると、クラウド・コンピューティング環境6050(図26)によって提供される機能抽象化層の組が示される。図27に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層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は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーション及びオペレーティング・システム、並びに仮想クライアントを提供することができる。
一例においては、管理層6060は、以下で説明される機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、リソースの消費に対する課金又は請求とを提供する。1つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータルは、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
ワークロード層6066は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例には、マッピング及びナビゲーション、ソフトウェア開発及びライフサイクル管理、仮想教室教育配信、データ分析処理、及びトランザクション処理が含まれる。
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指示するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
以下の特許請求の範囲に存在する場合、「手段又はステップと機能との組合せ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物は、明確に特許請求された他の請求要素と共に機能を実行するための任意の構造体、材料、又は行為を含むことを意図したものである。本発明の説明は、例証及び説明のためだけに提示されたものであり、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正物及び変形物が明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最もよく説明するため、及び、当業者が、企図した特定の用途に適するように種々の修正を有する種々の実施形態に関して本発明を理解することができるように、選択され記述された。