(57)【要約】【課題】トランザクションを優先順位付けする【解決手段】コンピューティング環境内のプロセッサがトランザクションの実行を開始する。このプロセッサはトランザクション・コアを含み、トランザクションの実行は、このトランザクション・コアによって行われる。このプロセッサは、トランザクション・コアによるトランザクションの実行と同時に、トランザクションと、コンピューティング環境内のその他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の指示を取得する。このプロセッサは、トランザクション・コアがインジケータを含んでいるかどうかを決定し、トランザクション・コアがインジケータを含んでいるという決定に基づいて、このプロセッサは競合を無視し、トランザクション・コアを使用してトランザクションの実行を完了する。【選択図】図１
2019508797.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、プロセッサによって、コンピューティング環境内でトランザクションの実行を開始することであって、前記プロセッサがトランザクション・コアを備えており、前記トランザクションの前記実行が前記トランザクション・コアによって実行される、前記開始することと、
前記プロセッサによって、前記トランザクション・コアによる前記トランザクションの前記実行と同時に、前記トランザクションと、前記コンピューティング環境内のその他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の表れを取得することと、
前記プロセッサによって、前記トランザクション・コアがインジケータを備えているかどうかを決定することと、
前記トランザクション・コアがインジケータを備えているという決定に基づいて、前記プロセッサによって、前記競合を無視し、前記トランザクション・コアを使用して前記トランザクションの実行を完了することと
を含む、コンピュータ実装方法。
【請求項２】
前記表れが、前記トランザクションの前記実行中に前記トランザクション・コアによって使用されているデータに関連する前記その他のコアからの要求を含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記データが、前記トランザクション・コアのキャッシュに配置され、読み取りデータまたは書き込みデータとしてマークが付けられる、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記無視することが、前記プロセッサによって、前記データへの前記その他のコアのアクセスを拒否することをさらに含む、請求項２に記載のコンピュータ実装方法。
【請求項５】
前記プロセッサによって、前記要求をキューに入れることと、
前記トランザクションの実行の完了に基づいて、前記プロセッサによって、前記データへのアクセスを前記その他のコアに提供することによって前記要求を満たすこととをさらに含む、請求項２に記載のコンピュータ実装方法。
【請求項６】
前記プロセッサによって、前記トランザクション・コアによる前記トランザクションの前記実行を監視することと、
前記トランザクションをコミットすることによって前記トランザクション・コアが前記実行を完了することに基づいて、前記プロセッサによって、前記インジケータを消去することと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項７】
前記プロセッサによって、前記インジケータに関する要求を前記トランザクション・コアから取得することと、
前記プロセッサによって、スーパー・コア状態が使用可能であるかどうかを決定することと、
スーパー・コア状態が使用可能であるという決定に基づいて、前記プロセッサによって、前記トランザクション・コアを変更し、前記インジケータを提供することと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項８】
前記トランザクション・コアがインジケータを備えていないという決定に基づいて、前記プロセッサによって、前記トランザクションをアボートすることと、
前記プロセッサによって、前記トランザクションに関連付けられた値をインクリメントすることと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項９】
前記プロセッサによって、前記トランザクションに関連付けられた前記値を取得することと、
前記プロセッサによって、前記値を評価して、前記値がしきい値を満たしているかどうかを決定することと、
前記値が前記しきい値を満たしているという決定に基づいて、前記プロセッサによって、前記トランザクション・コアのインジケータを要求することと、
前記プロセッサによって、スーパー・コア状態が使用可能であると決定することと、
決定に基づいて、前記プロセッサによって、前記トランザクション・コアを変更し、前記インジケータを提供することと
をさらに含む、請求項８に記載のコンピュータ実装方法。
【請求項１０】
前記スーパー・コア状態が使用可能であるかどうかを前記決定することが、
前記プロセッサによって、前記コンピューティング環境内のコアにアクセスして、しきい値の数のコアがインジケータを備えているかどうかを決定することと、
前記プロセッサによって、インジケータを備えているコアの数が前記しきい値未満であることに基づいて、前記スーパー・コア状態が使用可能であると決定することと
を含む、請求項９に記載のコンピュータ実装方法。
【請求項１１】
コンピュータ・プログラム製品であって、プロセッサによって読み取り可能な、方法を実行するために１つまたは複数のプロセッサによって実行されるための命令を記憶しているコンピュータ可読記憶媒体を備え、前記方法が、
前記プロセッサによって、コンピューティング環境内でトランザクションの実行を開始することであって、前記プロセッサがトランザクション・コアを備えており、前記トランザクションの前記実行が前記トランザクション・コアによって実行される、前記開始することと、
前記プロセッサによって、前記トランザクション・コアによる前記トランザクションの前記実行と同時に、前記トランザクションと、前記コンピューティング環境内のその他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の表れを取得することと、
前記プロセッサによって、前記トランザクション・コアがインジケータを備えているかどうかを決定することと、
前記トランザクション・コアがインジケータを備えているという決定に基づいて、前記プロセッサによって、前記競合を無視し、前記トランザクション・コアを使用して前記トランザクションの実行を完了することと
を含む、コンピュータ・プログラム製品。
【請求項１２】
前記表れが、前記トランザクションの前記実行中に前記トランザクション・コアによって使用されているデータに関連する前記その他のコアからの要求を含む、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１３】
前記データが、前記トランザクション・コアのキャッシュに配置され、読み取りデータまたは書き込みデータとしてマークが付けられる、請求項１２に記載のコンピュータ・プログラム製品。
【請求項１４】
前記無視することが、前記プロセッサによって、前記データへの前記その他のコアのアクセスを拒否することをさらに含む、請求項１２に記載のコンピュータ・プログラム製品。
【請求項１５】
前記方法が、
前記プロセッサによって、前記要求をキューに入れることと、
前記トランザクションの実行の完了に基づいて、前記プロセッサによって、前記データへのアクセスを前記その他のコアに提供することによって前記要求を満たすことと
をさらに含む、請求項１２に記載のコンピュータ・プログラム製品。
【請求項１６】
前記方法が、
前記プロセッサによって、前記インジケータに関する要求を前記トランザクション・コアから取得することと、
前記プロセッサによって、スーパー・コア状態が使用可能であるかどうかを決定することと、
スーパー・コア状態が使用可能であるという決定に基づいて、前記プロセッサによって、前記トランザクション・コアを変更し、前記インジケータを提供することと
をさらに含む、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１７】
前記方法が、
前記トランザクション・コアがインジケータを備えていないという決定に基づいて、前記プロセッサによって、前記トランザクションをアボートすることと、
前記プロセッサによって、前記トランザクションに関連付けられた値をインクリメントすることと
をさらに含む、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１８】
前記方法が、
前記プロセッサによって、前記トランザクションに関連付けられた前記値を取得することと、
前記プロセッサによって、前記値を評価して、前記値がしきい値を満たしているかどうかを決定することと、
前記値が前記しきい値を満たしているという決定に基づいて、前記プロセッサによって、前記トランザクション・コアのインジケータを要求することと、
前記プロセッサによって、スーパー・コア状態が使用可能であると決定することと、
決定に基づいて、前記プロセッサによって、前記トランザクション・コアを変更し、前記インジケータを提供することと
をさらに含む、請求項１７に記載のコンピュータ・プログラム製品。
【請求項１９】
システムであって、
メモリと、
前記メモリと通信するプロセッサと、
方法を実行するために前記メモリを介して前記プロセッサによって実行可能なプログラム命令と
を備え、前記方法が、
プロセッサによって、コンピューティング環境内でトランザクションの実行を開始することであって、前記プロセッサがトランザクション・コアを備えており、前記トランザクションの前記実行が前記トランザクション・コアによって実行される、前記開始することと、
前記プロセッサによって、前記トランザクション・コアによる前記トランザクションの前記実行と同時に、前記トランザクションと、前記コンピューティング環境内のその他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の表れを取得することと、
前記プロセッサによって、前記トランザクション・コアがインジケータを備えているかどうかを決定することと、
前記トランザクション・コアがインジケータを備えているという決定に基づいて、前記プロセッサによって、前記競合を無視し、前記トランザクション・コアを使用して前記トランザクションの実行を完了することと
を含む、システム。
【請求項２０】
前記表れが、前記トランザクションの前記実行中に前記トランザクション・コアによって使用されているデータに関連する前記その他のコアからの要求を含む、請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、多重処理コンピューティング環境に関連し、特に、そのようなコンピューティング環境内のトランザクション処理に関連する。
【背景技術】
【０００２】
トランザクション・システムでは、１つまたは複数のプロセッサがトランザクションを実行する。特定のトランザクションの実行中に競合が検出されることがあり、競合が検出された場合、特定のトランザクションがアボートされる。例えば競合は、あるプロセッサが、別のプロセッサが読み取っているデータを書き込むときに発生する。トランザクション・コア（transactional core）は、現在、競合を回避または保留するための手段を何も持たないため、トランザクションをアボートする。
【０００３】
制約付きトランザクションが実行されている場合、それらのトランザクションは業界標準アーキテクチャ（ＩＳＡ：Industry Standard Architecture）仕様に従って完了する。制約付きトランザクションと制約なしトランザクションの間の重要な違いは、制約付きトランザクションの場合、繰り返される割り込みまたはその他の制約違反がなければ、制約付きトランザクションは、最終的な完了が保証されているため、フォールバック経路を必要としないという点である。したがって、制約付きトランザクションが繰り返し失敗した場合、コンピュータ・システムは、完了を保証するために、エスカレートする手段を使用してそのトランザクションを再実行する。採用されるエスカレーションは、他のコアを除外するためのロックの取得を含むが、これに限定されない。これらのエスカレーションは、コンピュータ・システム全体の性能に悪影響を与えるだけでなく、制約付きトランザクションが完了することを保証しない。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】IBM Publication entitled “z/Architecture - Principles of Operation,”Publication No. SA22-7932-09, 10th Edition, September 2012
【発明の概要】
【課題を解決するための手段】
【０００５】
トランザクションを優先順位付けするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。このコンピュータ・プログラム製品は、処理回路によって読み取り可能な、方法を実行するために処理回路によって実行される命令を記憶している記憶媒体を備える。この方法は、例えば、プロセッサによって、コンピューティング環境内でトランザクションの実行を開始することであって、このプロセッサがトランザクション・コアを備えており、トランザクションの実行がトランザクション・コアによって実行される、開始することと、プロセッサによって、トランザクション・コアによるトランザクションの実行と同時に、トランザクションと、コンピューティング環境内のその他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の表れを取得することと、プロセッサによって、トランザクション・コアがインジケータを備えているかどうかを決定することと、トランザクション・コアがインジケータを備えているという決定に基づいて、プロセッサによって競合を無視し、トランザクション・コアを使用してトランザクションの実行を完了することとを含む。
【０００６】
トランザクションを優先順位付けする方法の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。この方法は、例えば、プロセッサによって、コンピューティング環境においてトランザクションの実行を開始することであって、このプロセッサがトランザクション・コアを備えており、トランザクションの実行がこのトランザクション・コアによって実行される、開始することと、プロセッサによって、トランザクション・コアによるトランザクションの実行と同時に、トランザクションと、コンピューティング環境内のその他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の表れを取得することと、プロセッサによって、トランザクション・コアがインジケータを備えているかどうかを決定することと、トランザクション・コアがインジケータを備えているという決定に基づいて、プロセッサによって競合を無視し、トランザクション・コアを使用してトランザクションの実行を完了することとを含む。
【０００７】
トランザクションを優先順位付けするためのシステムの提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。このシステムは、メモリと、このメモリと通信する１つまたは複数のプロセッサと、方法を実行するためにメモリを介して１つまたは複数のプロセッサによって実行可能なプログラム命令とを含む。この方法は、例えば、プロセッサによって、コンピューティング環境においてトランザクションの実行を開始することであって、このプロセッサがトランザクション・コアを備えており、トランザクションの実行がこのトランザクション・コアによって実行される、開始することと、プロセッサによって、トランザクション・コアによるトランザクションの実行と同時に、トランザクションと、コンピューティング環境内のその他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の表れを取得することと、プロセッサによって、トランザクション・コアがインジケータを備えているかどうかを決定することと、トランザクション・コアがインジケータを備えているという決定に基づいて、プロセッサによって競合を無視し、トランザクション・コアを使用してトランザクションの実行を完了することとを含む。
【０００８】
本発明の１つまたは複数の実施形態に関連する方法およびシステムも本明細書に記載され、請求される。さらに、１つまたは複数の実施形態に関連するサービスも本明細書に記載されており、請求されてよい。
【０００９】
その他の特徴および長所が、本明細書に記載された技術によって実現される。その他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。例えば、本発明の一実施形態では、トランザクションは制約付きトランザクションである。本発明の一実施形態では、この方法は、プロセッサによって、トランザクション・コアによるトランザクションの実行を監視することと、トランザクション・コアがトランザクションをコミットすることによって実行を完了することに基づいて、プロセッサによってインジケータを消去することとも含む。本発明のさらに別の実施形態における方法は、プロセッサによって、インジケータに関する要求をトランザクション・コアから取得することと、プロセッサによって、スーパー・コア状態が使用可能であるかどうかを決定することと、スーパー・コア状態が使用可能であるという決定に基づいて、プロセッサによってトランザクション・コアを変更し、インジケータを提供することとも含む。
【００１０】
本発明の別の実施形態では、この方法は、トランザクション・コアがインジケータを備えていないという決定に基づいて、プロセッサによってトランザクションをアボートすることと、プロセッサによって、トランザクションに関連付けられた値をインクリメントすることとも含む。この実施形態では、この方法は、プロセッサによって、トランザクションに関連付けられた値を取得することと、プロセッサによって値を評価して、値がしきい値を満たしているかどうかを決定することと、値がしきい値を満たしているという決定に基づいて、プロセッサによって、トランザクション・コアのインジケータを要求することと、プロセッサによって、スーパー・コア状態が使用可能であると決定することと、この決定に基づいて、プロセッサによってトランザクション・コアを変更し、インジケータを提供することとを含んでもよい。この実施形態では、スーパー・コア状態が使用可能であるかどうかを決定することは、プロセッサによってコンピューティング環境内のコアにアクセスして、しきい値の数のコアがインジケータを備えているかどうかを決定することと、プロセッサによって、インジケータを備えているコアの数がしきい値未満であることに基づいて、スーパー・コア状態が使用可能であると決定することとを含んでよい。
【００１１】
本発明の一実施形態では、競合の表れは、トランザクションの実行中にトランザクション・コアによって使用されているデータに関連するその他のコアからの要求を含む。このデータは、トランザクション・コアのキャッシュに配置されてよく、読み取りデータまたは書き込みデータとしてマークが付けられる。本発明のこの実施形態では、無視することが、プロセッサによって、データへのその他のコアのアクセスを拒否することを含んでよい。この方法は、プロセッサによって、要求をキューに入れることと、トランザクションの実行の完了に基づいて、プロセッサによって、データへのアクセスをその他のコアに提供することによって要求を満たすこととをさらに含んでよい。
【００１２】
ここで、以下の図面を単に例として参照し、本発明の１つまたは複数の実施形態について説明する。
【図面の簡単な説明】
【００１３】
【図１】コンピューティング環境の一実施形態を示す図である。
【図２】トランザクション開始（ＴＢＥＧＩＮ）命令の一例を示す図である。
【図３】図２のＴＢＥＧＩＮ命令のフィールドの詳細の一実施形態を示す図である。
【図４】制約付きトランザクション開始（ＴＢＥＧＩＮＣ）命令の例を示す図である。
【図５】図４のＴＢＥＧＩＮＣ命令のフィールドの詳細の一実施形態を示す図である。
【図６】トランザクション終了（ＴＥＮＤ）命令の一例を示す図である。
【図７】トランザクション・アボート（ＴＡＢＯＲＴ）命令の一例を示す図である。
【図８】ネストされたトランザクションの一例を示す図である。
【図９】トランザクション診断ブロックの一例を示す図である。
【図１０】コンピューティング・システムでの実行としてトランザクションのワークフローの例を示す図である。
【図１１】競合が存在する場合にプログラム・コードがトランザクションをアボートし得る方法の例を示す図であり、この競合は、本発明の一部の実施形態によって対処される問題である。
【図１２】本発明の特定の実施形態のスーパー・コア・インジケータ（super coreindicator）が使用されるシステムの特定の機能のフローチャートの例である。
【図１３】本発明の特定の実施形態を示す図である。
【図１４】本発明の特定の実施形態を示す図である。
【図１５】図１４の実施形態のその他の例を示す図である。
【図１６】本発明の一部の実施形態を説明するワークフローを示す図である。
【図１７】コンピュータ・プログラム製品の一実施形態を示す図である。
【図１８】ホスト・コンピュータ・システムの一実施形態を示す図である。
【図１９】コンピュータ・システムのその他の例を示す図である。
【図２０】コンピュータ・ネットワークを含んでいるコンピュータ・システムの別の例を示す図である。
【図２１】コンピュータ・システムのさまざまな要素の一実施形態を示す図である。
【図２２】図２１のコンピュータ・システムの実行ユニットの一実施形態を示す図である。
【図２３】図２１のコンピュータ・システムの分岐ユニットの一実施形態を示す図である。
【図２４】図２１のコンピュータ・システムの読み込み／格納ユニットの一実施形態を示す図である。
【図２５】エミュレートされるホスト・コンピュータ・システムの一実施形態を示す図である。
【図２６】クラウド・コンピューティング・ノードの一実施形態を示す図である。
【図２７】クラウド・コンピューティング環境の一実施形態を示す図である。
【図２８】抽象モデル・レイヤの一例を示す図である。
【発明を実施するための形態】
【００１４】
個々の図を通じて類似する参照番号が同一の要素または機能的に類似する要素を参照している、本明細書に包含されてその一部を形成する添付の図面は、詳細な説明と共に本発明の実施形態をさらに示し、本発明の原理を説明するのに役立つ。当業者によって理解されるように、添付の図面は、本発明の特定の実施形態の態様の理解を容易にするために提供され、それらの態様を説明する。本発明は、図に示された実施形態に限定されない。
【００１５】
当業者によって理解されるように、本出願全体を通じて参照されているプログラム・コードは、ソフトウェアとハードウェアの両方を含む。例えば、本発明の特定の実施形態におけるプログラム・コードは、固定された機能のハードウェアを含むが、他の実施形態は、説明された機能のソフトウェアベースの実装を使用している。特定の実施形態は、両方のタイプのプログラム・コードを組み合わせる。
【００１６】
本発明の実施形態は、コンピューティング環境内の１つまたは複数のコアをスーパー・コア（トランザクション・スーパー・コア（transactional super core）とも呼ばれる）として指定する、１つまたは複数のプロセッサ上で実行されるプログラム・コードによって、特定のトランザクションの優先順位付けを提供する。コアがスーパー・コアに指定された場合、競合が存在する場合でも（例えば、スーパー・コアが、読み取りデータまたは書き込みデータとしてマークが付けられてスーパー・コアのキャッシュに格納されたデータに関する要求を受信した場合でも）、スーパー・コアはトランザクションをアボートしないため、このコアは制約付きトランザクションを完了する。この指定されたスーパー・コアは、データに関する要求を無視して、データへのアクセスを提供せず、代わりに、トランザクションが完了するまでトランザクションを実行し続ける。本発明の一実施形態では、コアは、例えばトランザクションの実行に１回または複数回失敗した場合に、スーパー・コアとしてマークが付けられてよい。トランザクションの完了を保証するために、プログラム・コードは、コアをトランザクション・コア状態から、トランザクション状態のスーパー・コアに切り替えてよい。本発明の一実施形態では、トランザクションが完了したときに、コアは、スーパー・コア状態からトランザクション状態に戻される。
【００１７】
本発明の一実施形態では、スーパー・コア状態（またはこの状態の可能性）をコンピューティング環境内の処理中のコアに拡張するために、各コアはインジケータ（例えば、スーパー・ユーザ・ビットを含むがこれに限定されない、ビット）を含む。特定の状況では、プログラム・コードは、インジケータを設定して、コアをスーパー・コアとして指定することができる。前述したように、このプログラム・コードは、ハードウェアまたはソフトウェアあるいはその両方であることができる。したがって、本発明の一部の実施形態では、スーパー・コアを指定するプログラム・コードは、ハードウェア・ロジックである。他の実施形態では、スーパー・コア状態は、マイクロコード、ミリコード、またはファームウェア・コード、あるいはその組み合わせのうちの少なくとも１つによって指定される。本発明の一部の実施形態では、オペレーティング・システム（ＯＳ：Operating System）またはハイパーバイザあるいはその両方が、コアをスーパー・コアに指定している。本発明の一実施形態では、プロセッサは、コアをスーパー・コア状態に設定できる明示的な命令を実行してよい。本発明の一実施形態では、プログラム・コードは、アルゴリズムを使用してスーパー・コアになるコアを選択する。
【００１８】
本発明の一実施形態では、プログラム・コードは、特定のトランザクションの開始時に、第１のトランザクション・コアをスーパー・コアに指定する。第１のトランザクション・コアは、スーパー・コアに指定された場合、スーパー・コアに指定されなかったコアと同じ方法でトランザクションの実行を開始し、メモリ読み取りコマンドおよびメモリ書き込みコマンドの発行を開始する。ただし、第１のトランザクション・コアは、スーパー・コアであるため、他のコアからのコヒーレンス・プロトコル要求に従わない。例えば、第２のトランザクション・コアが、第１のトランザクション・コアがそのキャッシュに保存したデータを要求した場合、第１のトランザクション・コアは、コヒーレンス・プロトコルに従うデータおよび状態の変更に反応せず、トランザクションが完了するまでトランザクションを実行し続ける。
【００１９】
本発明の一実施形態では、プログラム・コードは、トランザクション・コアによるトランザクションの実行を開始する。プログラム・コードは、トランザクション・コアによるトランザクションの実行と同時に、トランザクションと、コンピューティング環境内のその他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の表れを取得する。プログラム・コードは、トランザクション・コアがインジケータ（例えば、前述のスーパー・コア・インジケータ）を備えているかどうかを決定し、トランザクション・コアがインジケータを備えているという決定に基づいて、プログラム・コードは競合を無視し、トランザクション・コアを使用してトランザクションの実行を完了する。
【００２０】
本発明の一部の実施形態では、表れは、トランザクションの実行中にトランザクション・コアによって使用されるデータに関連するその他のコアからの要求を含む。本発明の一実施形態では、このデータは、トランザクション・コアのキャッシュに配置され、読み取りデータまたは書き込みデータとしてマークが付けられる。本発明の一実施形態では、プログラム・コードは、データへのその他のコアのアクセスを拒否することによって、競合を無視する。トランザクションは、例えば、制約付きトランザクションであってよい。
【００２１】
本発明の一実施形態では、表れが前述の要求を含んでいる場合、プログラム・コードは、この要求をキューに入れることも行い、トランザクションの実行の完了に基づいて、その他のコアにデータへのアクセスを提供することによって、この要求を満たす。
【００２２】
本発明の一実施形態では、プログラム・コードは、トランザクション・コアによるトランザクションの実行を監視してもよく、トランザクション・コアが実行を完了することに基づいて（すなわち、トランザクションをコミットすることによって）、プログラム・コードはインジケータを消去してよい。
【００２３】
本発明の一実施形態では、プログラム・コードは、インジケータに関する要求をトランザクション・コアから取得する。プログラム・コードは、スーパー・コア状態が使用可能であるどうかを決定し、スーパー・コア状態が使用可能であるという決定に基づいて、プログラム・コードはトランザクション・コアを変更し、インジケータを提供する。
【００２４】
本発明の一実施形態では、トランザクション・コアがインジケータを備えていないという決定に基づいて、プログラム・コードはトランザクションをアボートし、トランザクションに関連付けられた値をインクリメントする。本発明の一部の実施形態において、この値を使用できる。例えば、本発明の一実施形態では、プログラム・コードは、トランザクションに関連付けられた値を取得し、この値を評価して、この値がしきい値を満たしているかどうかを決定する。この値がしきい値を満たしているという決定に基づいて、プログラム・コードはトランザクション・コアのインジケータを要求する。次に、プログラム・コードは、スーパー・コア状態が使用可能であると決定し、この状態が使用可能であるという決定に基づいてトランザクション・コアを変更し、インジケータを提供する。本発明の一実施形態では、プログラム・コードは、コンピューティング環境内のコアにアクセスして、しきい値の数のコアがインジケータを備えているかどうかを決定することと、インジケータを備えているコアの数がしきい値未満であることに基づいて、スーパー・コア状態が使用可能であると決定することとによって、スーパー・コア状態が使用可能であると決定している。
【００２５】
ただし、スーパー・コアの指定を詳細に説明する前に、制約なしトランザクションおよび制約付きトランザクションの実行モードを含めて、トランザクション実行機能に関する詳細について説明する。前述したように、本発明の実施形態の特定の態様は、制約付きトランザクションがアボートされた場合でも１つまたは複数のプロセッサが引き続きこれらの命令の実行を試みる結果として、システム全体が非効率的になるため、制約付きトランザクションに特に関連しており、トランザクションを実行している特定のコアがスーパー・コアであることを示すことによって、トランザクションは、スーパー・コアの指定なしでは完了を妨げていた競合にもかかわらず、繰り返し試行されずに、完了するようになる。
【００２６】
トランザクション実行機能は、トランザクション実行（ＴＸ）モードと呼ばれるＣＰＵの状態を導入する。ＣＰＵのリセット後に、ＣＰＵはＴＸモードにならない。ＣＰＵは、ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令によってＴＸモードに移行し、（ａ）最外ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令（内部および外部に関する詳細は、下で説明される）、（ｂ）条件コードを０に設定するＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令、または（ｃ）トランザクションがアボートされることによって、ＴＸモードを終了する。ＴＸモードにある間、ＣＰＵによるストレージ・アクセスは、他のＣＰＵおよびＩ／Ｏサブシステムによって観察されたときに、ブロック・コンカレントであるように見える。ストレージ・アクセスは、（ａ）最外トランザクションがアボートすることなく終了したときにストレージにコミットされる（すなわち、例えば、ＣＰＵに局在するキャッシュまたはバッファ内で行われた更新が実メモリに伝達されて記憶され、他のＣＰＵから見えるようになる）か、または（ｂ）トランザクションがアボートされた場合に破棄される。
【００２７】
トランザクションはネストされてよい。つまり、ＣＰＵは、ＴＸモードである間、別のＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令を実行してよい。ＴＸモードにＣＰＵを移行させる命令は、最外ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮと呼ばれ、同様にプログラムは、最外トランザクションにあると言われる。ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮのその後の実行は内部命令と呼ばれ、プログラムは内部トランザクションを実行している。モデルは、最小ネスト深度（minimum nesting depth）およびモデルに依存する最大ネスト深度（maximum nesting depth）を提供する。ＥＸＴＲＡＣＴ  ＴＲＡＮＳＡＣＴＩＯＮ  ＮＥＳＴＩＮＧ  ＤＥＰＴＨ命令は、現在のネスト深度値を返し、さらに別の実施形態では、最大ネスト深度値を返してよい。この手法は「平坦化ネスト（flattened nesting）」と呼ばれるモデルを使用し、このモデルでは、いずれかのネスト深度でのアボート条件が、すべてのレベルのトランザクションをアボートし、最外ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮの後に、制御が命令に返される。
【００２８】
トランザクションの処理中に１つのＣＰＵによって行われるトランザクション・アクセスと、（ａ）別のＣＰＵによって行われるトランザクション・アクセスまたは非トランザクション・アクセス、あるいは（ｂ）Ｉ／Ｏサブシステムによって行われる非トランザクション・アクセスのいずれかとは、両方のアクセスが同じキャッシュ・ライン内のいずれかの位置に対するものであり、かつアクセスのうちの一方または両方が記憶部である場合に、競合すると言われる。言い換えると、トランザクション実行が有効になるには、ＣＰＵがコミットするまで、ＣＰＵがトランザクション・アクセスを行っていることが観察されないようにする必要がある。このプログラミング・モデルは、特定の環境（例えば、１００万個の要素の二重連結リスト内の２点の更新）において非常に効果的であることがある。ただし、このプログラミング・モデルは、トランザクションにおいてアクセスされている記憶位置に関して多くの競合が存在する場合、あまり効果的ではないことがある。
【００２９】
トランザクション実行の１つのモデル（本明細書では制約なしトランザクションと呼ばれる）では、トランザクションがアボートされたときに、プログラムはアボート条件が存在しなくなっていることを期待してトランザクションの再実行を試みてよく、またはプログラムは同等の非トランザクション経路に「フォールバック」してよい。トランザクション実行の別のモデル（本明細書では制約付きトランザクションと呼ばれる）では、アボートされたトランザクションはＣＰＵによって自動的に再実行される。制約違反がなければ、制約付きトランザクションは最終的な完了を保証される。
【００３０】
プログラムは、トランザクションを開始するときに、（ａ）トランザクションがアボートされた場合、どの汎用レジスタが元の内容に回復するか、（ｂ）トランザクションが、例えば浮動小数点レジスタおよび浮動小数点制御レジスタを含めて、浮動小数点レジスタのコンテキストを変更することを許可されるかどうか、（ｃ）トランザクションが、アクセス・レジスタ（ＡＲ：access registers）を変更することを許可されるかどうか、および（ｄ）特定のプログラム例外条件が割り込みを引き起こすことがブロックされるかどうかなどの、さまざまな制御を指定することができる。制約なしトランザクションがアボートされた場合、さまざまな診断情報が提供されてよい。例えば、制約なしトランザクションを開始する最外ＴＢＥＧＩＮ命令は、プログラムによって規定されたトランザクション診断ブロック（ＴＤＢ：transaction diagnostic block）を指定してよい。さらに、プログラム割り込み、または解釈実行を終了させる条件に起因してトランザクションがアボートされた場合に、ＣＰＵのプレフィックス領域内のＴＤＢまたはホストの状態記述によって指定されたＴＤＢがそれぞれ使用されてもよい。
【００３１】
さまざまな種類のレジスタが上で示された。本明細書では、それらがさらに詳細に説明される。汎用レジスタは、一般的な算術演算および論理演算における累算器として使用されることがある。一実施形態では、各レジスタは６４個のビット位置を含み、１６個の汎用レジスタが存在する。汎用レジスタは、０〜１５の番号によって識別され、命令内の４ビットのＲフィールドによって指定される。一部の命令は、複数のＲフィールドを含むことによって、複数の汎用レジスタのアドレス指定を提供する。一部の命令では、特定の汎用レジスタの使用が、命令のＲフィールドによって明示的に指定されるのではなく、暗示される。
【００３２】
１６個の汎用レジスタのうちの１５個は、一般的な算術演算および論理演算における累算器としての使用に加えて、アドレス生成においてベース・アドレス・レジスタおよびインデックス・レジスタとしても使用される。そのような場合、レジスタは、命令内の４ビットのＢフィールドまたはＸフィールドによって指定される。ＢフィールドまたはＸフィールド内のゼロの値は、ベースもインデックスも適用されず、したがって、汎用レジスタ０がベース・アドレスまたはインデックスを含んでいるとして指定されないということを規定する。
【００３３】
浮動小数点命令は、一連の浮動小数点レジスタを使用する。一実施形態では、ＣＰＵは１６個の浮動小数点レジスタを含む。浮動小数点レジスタは、０〜１５の番号によって識別され、浮動小数点命令内の４ビットのＲフィールドによって指定される。各浮動小数点レジスタは、６４ビット長であり、短精度（３２ビット）浮動小数点オペランドまたは長精度（６４ビット）浮動小数点オペランドのいずれかを含むことができる。
【００３４】
浮動小数点制御（ＦＰＣ：floating point control）レジスタは、マスク・ビット、フラグ・ビット、データ例外コード、および丸めモード・ビットを含む３２ビット・レジスタであり、浮動小数点演算の処理中に使用される。
【００３５】
さらに、一実施形態では、ＣＰＵは、それぞれ６４個のビット位置を含んでいる１６個の制御レジスタを含む。レジスタ内のビット位置は、プログラム・イベント記録（ＰＥＲ：Program Event Recording）（下で説明される）などのシステム内の特定の機能に割り当てられ、処理を行うことができることを規定するため、または機能によって必要とされる特殊な情報を提供するために使用される。一実施形態では、下で説明されるように、ＣＲ０（ビット８および９）およびＣＲ２（ビット６１〜６３）がトランザクション機能に使用される。
【００３６】
ＣＰＵは、例えば、０〜１５の番号が付けられた１６個のアクセス・レジスタを含む。アクセス・レジスタは、アドレス空間制御要素（ＡＳＣＥ：address space control element）の間接指定を含んでいる３２個のビット位置で構成される。アドレス空間制御要素は、対応するアドレス空間への参照を変換するために動的アドレス変換（ＤＡＴ：dynamic address translation）メカニズムによって使用されるパラメータである。ＣＰＵがアクセス・レジスタ・モードと呼ばれるモード（プログラム状態ワード（ＰＳＷ：program status word）内のビットによって制御される）にある場合、ストレージ・オペランド参照の論理アドレスの指定に使用される命令のＢフィールドがアクセス・レジスタを指定し、このアクセス・レジスタによって規定されるアドレス空間制御要素が、行われている参照のためにＤＡＴによって使用される。一部の命令では、Ｂフィールドの代わりにＲフィールドが使用される。アクセス・レジスタの内容の読み込みおよび記憶を行うため、ならびにあるアクセス・レジスタの内容を別のアクセス・レジスタに移動させるための命令が提供される。
【００３７】
アクセス・レジスタ１〜１５はそれぞれ、任意のアドレス空間を指定することができる。アクセス・レジスタ０は、一次アドレス空間を指定する。アクセス・レジスタ１〜１５のうちの１つが、アドレス空間の指定に使用される場合、ＣＰＵは、アクセス・レジスタの内容を変換することによって、指定されるアドレス空間を決定する。アクセス・レジスタ０がアドレス空間の指定に使用される場合、ＣＰＵは、このアクセス・レジスタを、一次アドレス空間を指定しているとして扱い、このアクセス・レジスタの実際の内容を調べない。したがって、１６個のアクセス・レジスタは、いつの時点でも一次アドレス空間および最大１５個の他の空間を指定することができる。
【００３８】
一実施形態では、複数の種類のアドレス空間が存在する。アドレス空間は、各整数をストレージ内のバイト位置に関連付けることができるようにする特定の変換パラメータを伴う、連続する整数（仮想アドレス）のシーケンスである。このシーケンスはゼロから始まり、左から右に進む。
【００３９】
例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、ＣＰＵが仮想アドレスを使用して主記憶装置（メイン・メモリとも呼ばれる）にアクセスする場合、仮想アドレスは、まず動的アドレス変換（ＤＡＴ）を用いて実アドレスに変換され、次にプレフィックス変換を用いて絶対アドレスに変換される。ＤＡＴは、１〜５レベルのテーブル（ページ、セグメント、第３の領域、第２の領域、および第１の領域）を変換パラメータとして使用してよい。特定のアドレス空間の最高レベルのテーブルの指定（原点および長さ）は、アドレス空間制御要素と呼ばれ、ＤＡＴによって使用するために制御レジスタ内において見つけられるか、またはアクセス・レジスタによって指定される。あるいは、アドレス空間のアドレス空間制御要素は実空間の指定であってよく、この指定は、ＤＡＴが仮想アドレスを単に実アドレスとして扱うことによって、どのテーブルも使用せずに仮想アドレスを変換する、ということを示す。
【００４０】
ＤＡＴは、その時々において、異なる制御レジスタ内のアドレス空間制御要素、またはアクセス・レジスタによって指定されたアドレス空間制御要素を使用する。この選択は、現在のＰＳＷにおいて規定された変換モードによって決定される。使用できる変換モードは、一次空間モード、二次空間モード、アクセス・レジスタ・モード、およびホーム空間モードの４つである。変換モードに応じて、異なるアドレス空間がアドレス指定可能になる。
【００４１】
ＣＰＵが一次空間モードまたは二次空間モードにあるときはいつでも、ＣＰＵは２つのアドレス空間（一次アドレス空間および二次アドレス空間）に属している仮想アドレスを変換することができる。ＣＰＵがアクセス・レジスタ・モードにあるときはいつでも、ＣＰＵは最大１６個のアドレス空間（一次アドレス空間および最大１５個のＡＲによって規定されたアドレス空間）の仮想アドレスを変換することができる。ＣＰＵがホーム空間モードにあるときときはいつでも、ＣＰＵはホーム・アドレス空間の仮想アドレスを変換することができる。
【００４２】
一次アドレス空間は、一次仮想アドレスで構成されているため、一次アドレス空間として識別され、一次仮想アドレスは、一次アドレス空間制御要素（ＡＳＣＥ）を用いて変換される。同様に、二次アドレス空間は、二次ＡＳＣＥを用いて変換される二次仮想アドレスで構成され、ＡＲによって規定されたアドレス空間は、ＡＲによって規定されたＡＳＣＥを用いて変換されるＡＲによって規定された仮想アドレスで構成され、ホーム・アドレス空間は、ホームＡＳＣＥを用いて変換されるホーム仮想アドレスで構成される。一次ＡＳＣＥおよび二次ＡＳＣＥは、それぞれ制御レジスタ１および７内にある。ＡＲによって規定されたＡＳＣＥは、制御レジスタ２、５、および８を使用してアクセス・レジスタ変換（ＡＲＴ：access-register translation）と呼ばれるプロセスによって配置されるＡＳＮ第２テーブル・エントリ内にある。ホームＡＳＣＥは、制御レジスタ１３内にある。
【００４３】
本明細書に記載された変換機能の１つまたは複数の態様を包含して使用するコンピューティング環境の一実施形態が、図１を参照して説明される。
【００４４】
図１を参照すると、１つの例では、コンピューティング環境１００は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ（ＩＢＭ（Ｒ））Ｃｏｒｐｏｒａｔｉｏｎ（ニューヨーク州アーモンク市）によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づく。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅは、「z/Architecture - Principles of Operation」というタイトルのＩＢＭの公開文献（公開番号ＳＡ２２−７９３２−０９、第１０版、２０１２年９月）に記載されており、この文献は本明細書において参照によって全体として本明細書に包含されている。
【００４５】
Ｚ／ＡＲＣＨＩＴＥＣＴＵＲＥ、ＩＢＭ、ならびにＺ／ＯＳおよびＺ／ＶＭ（下で参照される）は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ニューヨーク州アーモンク市）の登録商標である。本明細書において使用されるその他の名称は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎまたはその他の会社の登録商標、商標、または製品名であることがある。
【００４６】
１つの例として、コンピューティング環境１００は、１つまたは複数の制御ユニット１０８を介して１つまたは複数の入出力（Ｉ／Ｏ：input/output）デバイス１０６に結合された中央処理装置複合体（ＣＰＣ：central processor complex）１０２を含んでいる。中央処理装置複合体１０２は、例えば、１つまたは複数のセントラル・プロセッサ（中央処理装置（ＣＰＵ：central processing unit）とも呼ばれる）１１０に結合されたプロセッサ・メモリ１０４（メイン・メモリ、主記憶装置、中央記憶装置とも呼ばれる）、および入出力サブシステム１１１を含み、これらはそれぞれ下で説明される。
【００４７】
プロセッサ・メモリ１０４は、例えば、１つまたは複数のパーティション１１２（例えば、論理パーティション）、およびプロセッサ・ファームウェア１１３を含んでおり、プロセッサ・ファームウェア１１３は論理パーティション・ハイパーバイザ１１４およびその他のプロセッサ・ファームウェア１１５を含んでいる。論理パーティション・ハイパーバイザ１１４の１つの例は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ニューヨーク州アーモンク市）によって提供されるプロセッサ・リソース／システム管理機構（ＰＲ／ＳＭ：Processor Resource/System Manager）である。
【００４８】
論理パーティションは、個別のシステムとして機能し、１つまたは複数のアプリケーション１２０を含み、必要に応じて、論理パーティションごとに異なってよい常駐オペレーティング・システム１２２を含む。一実施形態では、オペレーティング・システムは、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ニューヨーク州アーモンク市）によって提供されるｚ／ＯＳオペレーティング・システム、ｚ／ＶＭオペレーティング・システム、ｚ  Ｓｙｓｔｅｍｕｓ（Ｒ）上のＬｉｎｕｘ（Ｒ）オペレーティング・システム、またはＴＰＦオペレーティング・システムである。論理パーティション１１２は、プロセッサ１１０上で実行されるファームウェアによって実装される論理パーティション・ハイパーバイザ１１４によって管理される。本明細書において使用されているように、ファームウェアは、例えば、プロセッサのマイクロコードまたはミリコードあるいはその両方を含む。ファームウェアは、例えば、上位レベルの機械コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。一実施形態では、ファームウェアは、例えば、信頼できるソフトウェアを含んでいるマイクロコード、または基盤になるハードウェアに固有のマイクロコードとして通常は提供される、システムのハードウェアへのオペレーティング・システムのアクセスを制御する独自のコードを含む。Ｌｉｎｕｘは、米国またはその他の国あるいはその両方における、Ｌｉｎｕｘ  Ｔｏｒｖａｌｄｓの登録商標である。Ｚ  Ｓｙｓｔｅｍｓは、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標である。
【００４９】
セントラル・プロセッサ１１０は、論理パーティションに割り当てられる物理プロセッサ・リソースである。特に、各論理パーティション１１２は、１つまたは複数の論理プロセッサを有し、それらの各論理プロセッサは、パーティションに割り当てられた物理プロセッサ１１０の全部または一部を表す。特定のパーティション１１２の論理プロセッサは、基盤になるプロセッサ・リソース１１０がこのパーティション用に確保されるように、このパーティション専用であるか、または基盤になるプロセッサ・リソースが別のパーティションに潜在的に使用可能であるように、別のパーティションと共有されてよい。一例を挙げると、ＣＰＵのうちの１つまたは複数は、本明細書に記載されたトランザクション実行機能１３０および条件付きトランザクション終了機能１３２の態様を含む。
【００５０】
入出力サブシステム１１１は、入出力デバイス１０６と主記憶装置１０４の間の情報の流れを管理する。入出力サブシステム１１１は中央処理装置複合体に結合され、この結合において、入出力サブシステム１１１は中央処理装置複合体の一部であるか、または中央処理装置複合体から分離することができる。Ｉ／Ｏサブシステムは、入出力デバイスとの直接的な通信のタスクからセントラル・プロセッサを解放し、データ処理が入出力処理と同時に進行できるようにする。通信を提供するために、Ｉ／ＯサブシステムはＩ／Ｏ通信アダプタを採用する。さまざまな種類の通信アダプタが存在しており、例えば、チャネル、Ｉ／Ｏアダプタ、ＰＣＩカード、イーサネット（Ｒ）・カード、小型コンピュータ用周辺機器インターフェイス（ＳＣＳＩ：Small Computer Storage Interface）カードなどが挙げられる。本明細書に記載された特定の例では、Ｉ／Ｏ通信アダプタはチャネルであり、したがってＩ／Ｏサブシステムは、本明細書ではチャネル・サブシステムと呼ばれる。ただし、これは１つの例にすぎない。他の種類のＩ／Ｏサブシステムが使用可能である。
【００５１】
Ｉ／Ｏサブシステムは、入出力デバイス１０６との間の情報の流れの管理において、１つまたは複数の入出力経路を通信リンクとして使用する。この特定の例では、これらの経路は、通信アダプタがチャネルであるので、チャネル経路と呼ばれる。
【００５２】
前述されたコンピューティング環境は、使用可能なコンピューティング環境の１つの例にすぎない。分割されない環境、その他の分割された環境、またはエミュレートされた環境、あるいはその組み合わせを含むが、これらに限定されない、その他の環境が使用されてよく、実施形態はいずれか１つの環境に限定されない。
【００５３】
１つまたは複数の態様に従って、トランザクション実行機能は、中央処理装置の拡張機能であり、ＣＰＵが、記憶位置の更新を含めて、複数の記憶位置にアクセスできる命令のシーケンス（トランザクションと呼ばれる）を実行できるようにする手段を提供する。他のＣＰＵおよびＩ／Ｏサブシステムによって観察されるように、トランザクションは、（ａ）１つのアトミックな処理として全体的に完了するか、または（ｂ）アボートされて、実行されていたことの証拠を残さない可能性がある（ただし、本明細書に記載された特定の条件を除く）。したがって、正常に完了したトランザクションは、標準的なマルチプロセッシング・モデルにおいて必要とされる特殊なロックを行わずに、非常に多くの記憶位置を更新できる。
【００５４】
トランザクション実行機能の例としては、１つまたは複数の制御、１つまたは複数の命令、制約付き実行および制約なし実行を含むトランザクション処理、ならびにアボート処理が挙げられ、これらはそれぞれ、下でさらに説明される。
【００５５】
一実施形態では、トランザクション・アボート・プログラム状態ワード（ＰＳＷ：transaction abort Program Status Word）、トランザクション診断ブロック（ＴＤＢ）アドレス、およびトランザクション・ネスト深度（transaction nesting depth）を含む、３つの専用制御と、５つの制御レジスタ・ビットと、ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ（制約付きおよび制約なし）、ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ、ＥＸＴＲＡＣＴ  ＴＲＡＮＳＡＣＴＩＯＮ  ＮＥＳＴＩＮＧ  ＤＥＰＴＨ、ＴＲＡＮＳＡＣＴＩＯＮ  ＡＢＯＲＴ、およびＮＯＮＴＲＡＮＳＡＣＴＩＯＮＡＬ  ＳＴＯＲＥを含む複数の汎用命令とが、トランザクション実行機能の制御に使用される。機能がインストールされるときに、機能は、例えば構成内のすべてのＣＰＵにインストールされる。機能表れ（１つの実装ではビット７３）は、１である場合に、トランザクション実行機能がインストールされていることを示す。
【００５６】
さらに、１つの態様では、トランザクション実行機能がインストールされるときに、別の機能（条件付きトランザクション終了機能とも呼ばれる）がインストールされてもよい。条件付きトランザクション終了機能は、例えば機能表れビットのビット５５が１に設定された場合に、インストールされる。１つ実装では、このビットは、トランザクション実行機能を表すビット７３も１である場合にのみ、意味を持つ。両方の機能がインストールされた場合、ＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令もＣＰＵの拡張機能であり、トランザクション実行の制御に使用される。
【００５７】
トランザクション実行機能がインストールされた場合、構成は制約なしトランザクション実行機能を提供し、必要に応じて制約付きトランザクション実行機能を提供する。これらはそれぞれ、下で説明される。例として、機能表れ５０および７３が両方とも１である場合、制約付きトランザクション実行機能がインストールされる。機能表れは、両方ともメモリ内の規定された位置に記憶される。
【００５８】
本明細書において使用されるように、命令名ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮは、ニーモニックＴＢＥＧＩＮ（制約なしトランザクションのトランザクション開始）およびＴＢＥＧＩＮＣ（制約付きトランザクションのトランザクション開始）を含んでいる命令のことを指している。特定の命令に関する説明は、命令名の後に丸括弧または角括弧内のニーモニックを続けることによって、あるいは単にニーモニックによって示される。
【００５９】
ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ（ＴＢＥＧＩＮ）命令の形式の一実施形態が、図２〜３に示されている。１つの例として、ＴＢＥＧＩＮ命令２００（図２）は、制約なしトランザクション開始処理を規定するオペコードを含んでいるオペコード・フィールド２０２と、ベース・フィールド（Ｂ１）２０４と、変位フィールド（Ｄ１）２０６と、即時フィールド（immediate field）（Ｉ２）２０８とを含んでいる。Ｂ１フィールドがゼロ以外である場合、第１のオペランド・アドレスを取得するために、Ｂ１２０４によって規定された汎用レジスタの内容がＤ１２０６に追加される。
【００６０】
Ｂ１フィールドがゼロ以外である場合、以下が適用される。
【００６１】
＊  トランザクション・ネスト深度が最初にゼロである場合、第１のオペランド・アドレスは、ＴＢＥＧＩＮによって規定されたＴＤＢ（下でさらに説明される）と呼ばれる２５６バイトのトランザクション診断ブロックの位置を指定し、トランザクションがアボートされた場合、ＴＢＥＧＩＮによって規定されたＴＤＢには、さまざまな診断情報が記憶されてよい。ＣＰＵが一次空間モードまたはアクセス・レジスタ・モードにある場合、第１のオペランド・アドレスは、一次アドレス空間内の位置を指定する。ＣＰＵが二次空間モードまたはホーム空間モードにある場合、第１のオペランド・アドレスは、二次アドレス空間またはホーム・アドレス空間内の位置をそれぞれ指定する。ＤＡＴがオフである場合、トランザクション診断ブロック（ＴＤＢ）アドレス（ＴＤＢＡ）は、実ストレージ内の位置を指定する。
【００６２】
記憶部への第１のオペランドのアクセス可能性が決定される。アクセス可能である場合、オペランドの論理アドレスがトランザクション診断ブロック・アドレス（ＴＤＢＡ）内に配置され、ＴＤＢＡが有効である。
【００６３】
＊  ＣＰＵがすでに制約なしトランザクション実行モードにある場合、ＴＤＢＡは変更されず、第１のオペランドのアクセス可能性がテストされるかどうかは予測不可能である。
【００６４】
Ｂ１フィールドがゼロである場合、第１のオペランドに関するアクセス例外は検出されず、最外ＴＢＥＧＩＮ命令に関しては、ＴＤＢＡが無効である。
【００６５】
１つの例では、Ｉ２フィールドのビットは次のように定義される。
【００６６】
汎用レジスタ保存マスク（ＧＲＳＭ：General Register Save Mask）２１０（図３）：Ｉ２フィールドのビット０〜７は、汎用レジスタ保存マスク（ＧＲＳＭ）を含む。ＧＲＳＭの各ビットは、汎用レジスタの番号の偶数と奇数の対を表し、ビット０がレジスタ０および１を表し、ビット１がレジスタ２および３を表す、などとなる。最外ＴＢＥＧＩＮ命令のＧＲＳＭ内のビットがゼロである場合、対応するレジスタ対は保存されない。最外ＴＢＥＧＩＮ命令のＧＲＳＭ内のビットが１である場合、対応するレジスタ対は、プログラムによって直接アクセスできないモデルに依存する位置に保存される。
【００６７】
トランザクションがアボートした場合、保存されたレジスタ対は、最外ＴＢＥＧＩＮ命令は実行されたときの内容に回復させる。他のすべての（保存されない）汎用レジスタの内容は、トランザクションがアボートしたときに回復しない。
【００６８】
汎用レジスタ保存マスクは、最外ＴＢＥＧＩＮを除くすべてのＴＢＥＧＩＮでは無視される。
【００６９】
ＡＲ変更許可（Allow AR Modification）（Ａ）２１２：Ａ制御（Ｉ２フィールドのビット１２）は、トランザクションがアクセス・レジスタを変更することを許可されるかどうかを制御する。有効なＡＲ変更許可制御は、現在のネスト・レベルおよびすべての外部レベルのＴＢＥＧＩＮ命令内のＡ制御の論理ＡＮＤである。
【００７０】
有効なＡ制御がゼロである場合、いずれかのアクセス・レジスタを変更しようとする試みが行われると、トランザクションは、アボート・コード１１（制限された命令）に基づいてアボートされる。有効なＡ制御が１である場合、アクセス・レジスタが変更されても、（他にアボート条件がなければ）トランザクションはアボートされない。
【００７１】
浮動小数点演算許可（Allow Floating Point Operation）（Ｆ）２１４：Ｆ制御（Ｉ２フィールドのビット１３）は、トランザクションが規定された浮動小数点命令を実行することを許可されるかどうかを制御する。有効な浮動小数点演算許可制御は、現在のネスト・レベルおよびすべての外部レベルのＴＢＥＧＩＮ命令内のＦ制御の論理ＡＮＤである。
【００７２】
有効なＦ制御がゼロである場合、（ａ）浮動小数点命令を実行しようとする試みが行われると、トランザクションは、アボート・コード１１（制限された命令）に基づいてアボートされ、（ｂ）浮動小数点制御レジスタ（ＦＰＣＲ：floating point control register）のバイト２内のデータ例外コード（ＤＸＣ：data exception code）は、どのデータ例外プログラム例外条件によっても設定されない。有効なＦ制御が１である場合、（ａ）浮動小数点命令を実行しようとする試みが行われても、（他にアボート条件がなければ）トランザクションはアボートされず、（ｂ）ＦＰＣＲ内のＤＸＣは、データ例外プログラム例外条件によって設定されてよい。
【００７３】
プログラム割り込みフィルタリング制御（ＰＩＦＣ：Program Interruption Filtering Control）２１６：Ｉ２フィールドのビット１４〜１５は、プログラム割り込みフィルタリング制御（ＰＩＦＣ）である。ＰＩＦＣは、ＣＰＵがトランザクション実行モードにある間に発生する特定のクラスのプログラム例外条件（例えば、アドレス指定例外、データ例外、演算例外、保護例外など）が割り込みをもたらすかどうかを制御する。
【００７４】
有効なＰＩＦＣは、現在のネスト・レベルおよびすべての外部レベルのＴＢＥＧＩＮ命令内のＰＩＦＣの最高の値である。有効なＰＩＦＣがゼロである場合、すべてのプログラム例外条件は割り込みをもたらす。有効なＰＩＦＣが１である場合、１および２のトランザクション実行クラスを持っているプログラム例外条件は、割り込みをもたらす。（例外の重大度に応じて、各プログラム例外条件には少なくとも１つのトランザクション実行クラスが割り当てられる。重大度は、トランザクション実行が反復される実行の間に回復する可能性、および割り込みがオペレーティング・システムから見える必要があるかどうかに基づく。）有効なＰＩＦＣが２である場合、１のトランザクション実行クラスを持っているプログラム例外条件は、割り込みをもたらす。３のＰＩＦＣは予備である。
【００７５】
Ｉ２フィールドのビット８〜１１（命令のビット４０〜４３）は予備であり、ゼロを含むべきである。そうでない場合、プログラムは将来、互換性を維持して動作しなくなることがある。
【００７６】
制約付きトランザクション開始（ＴＢＥＧＩＮＣ）命令の形式の一実施形態が、図４〜５を参照して説明される。１つの例では、ＴＢＥＧＩＮＣ命令３００（図４）は、制約付きトランザクション開始処理を規定するオペコードを含んでいるオペコード・フィールド３０２と、ベース・フィールド（Ｂ１）３０４と、変位フィールド（Ｄ１）３０６と、即時フィールド（Ｉ２）３０８とを含んでいる。第１のオペランド・アドレスを取得するために、Ｂ１３０４によって規定された汎用レジスタの内容がＤ１３０６に追加される。ただし、制約付きトランザクション開始命令では、第１のオペランド・アドレスはストレージへのアクセスに使用されない。代わりに、命令のＢ１フィールドはゼロを含む。そうでない場合、指定例外が認識される。
【００７７】
一実施形態では、Ｉ２フィールドはさまざまな制御を含み、その一例が図５に示されている。
【００７８】
１つの例では、Ｉ２フィールドのビットは次のように定義される。
【００７９】
汎用レジスタ保存マスク（ＧＲＳＭ）３１０：Ｉ２フィールドのビット０〜７は、汎用レジスタ保存マスク（ＧＲＳＭ）を含む。ＧＲＳＭの各ビットは、汎用レジスタの番号の偶数と奇数の対を表し、ビット０がレジスタ０および１を表し、ビット１がレジスタ２および３を表す、などとなる。ＧＲＳＭ内のビットがゼロである場合、対応するレジスタ対は保存されない。ＧＲＳＭ内のビットが１である場合、対応するレジスタ対は、プログラムによって直接アクセスできないモデルに依存する位置に保存される。
【００８０】
トランザクションがアボートした場合、保存されたレジスタ対は、最外ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令が実行されたときの内容に回復させる。他のすべての（保存されない）汎用レジスタの内容は、制約付きトランザクションがアボートしたときに回復しない。
【００８１】
ＴＢＥＧＩＮＣが、制約なしトランザクション実行モードで実行を継続するために使用された場合、汎用レジスタ保存マスクは無視される。
【００８２】
ＡＲ変更許可（Ａ）３１２：Ａ制御（Ｉ２フィールドのビット１２）は、トランザクションがアクセス・レジスタを変更することを許可されるかどうかを制御する。有効なＡＲ変更許可制御は、現在のネスト・レベルのＴＢＥＧＩＮＣ命令内のＡ制御、およびすべての外部のＴＢＥＧＩＮ命令またはＴＢＥＧＩＮＣ命令のＡ制御の論理ＡＮＤである。
【００８３】
有効なＡ制御がゼロである場合、いずれかのアクセス・レジスタを変更しようとする試みが行われると、トランザクションは、アボート・コード１１（制限された命令）に基づいてアボートされる。有効なＡ制御が１である場合、アクセス・レジスタが変更されても、（他にアボート条件がなければ）トランザクションはアボートされない。
【００８４】
Ｉ２フィールドのビット８〜１１および１３〜１５（命令のビット４０〜４３および４５〜４７）は予備であり、ゼロを含むべきである。
【００８５】
トランザクション開始命令の終了は、１つの例ではＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ（ＴＥＮＤ）命令によって規定され、その形式が図６に示されている。１つの例として、ＴＥＮＤ命令４００は、トランザクション終了処理を規定するオペコードを含むオペコード・フィールド４０２を含んでいる。
【００８６】
トランザクション実行機能に関して複数の用語が使用されているため、以下では、単に便宜のために用語のリストがアルファベット順に提供される。一実施形態では、各用語は以下のように定義される。
【００８７】
アボート：トランザクションは、ゼロのトランザクション・ネスト深度をもたらすＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令よりも前に終了した場合、またはＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令がゼロの条件コードを設定した場合、アボートする。トランザクションがアボートした場合、一実施形態では、以下が発生する。
【００８８】
＊  あらゆるレベルのトランザクションによって行われたトランザクション格納アクセス（Transactional store accesses）が破棄される（つまり、コミットされない）。
【００８９】
＊  あらゆるレベルのトランザクションによって行われた非トランザクション格納アクセスがコミットされる。
【００９０】
＊  最外ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令の汎用レジスタ保存マスク（ＧＲＳＭ）によって指定されたレジスタは、トランザクション実行前の内容（つまり、最外ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令の実行時の内容）に回復させる。最外ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令の汎用レジスタ保存マスクによって指定されない汎用レジスタは、回復しない。
【００９１】
＊  アクセス・レジスタ、浮動小数点レジスタ、および浮動小数点制御レジスタは回復しない。トランザクションがアボートしたときに、トランザクション実行中にこれらのレジスタに対して行われたすべての変更は維持される。
【００９２】
トランザクションは、制限された命令の試みられた実行、制限されたリソースの試みられた変更、トランザクションの競合、さまざまなＣＰＵリソースの超過、解釈実行インターセプション条件（interpretive-execution interception condition）、割り込み、ＴＲＡＮＳＡＣＴＩＯＮ  ＡＢＯＲＴ命令、およびその他の利用を含む、さまざまな理由のために、アボートされることがある。トランザクション・アボート・コードは、トランザクションがアボートされ得る特定の理由を提供する。
【００９３】
ＴＲＡＮＳＡＣＴＩＯＮ  ＡＢＯＲＴ（ＴＡＢＯＲＴ）命令の形式の１つの例が、図７を参照して説明される。１つの例として、ＴＡＢＯＲＴ命令５００は、制約なしトランザクション・アボート処理を規定するオペコードを含んでいるオペコード・フィールド５０２と、ベース・フィールド（Ｂ２）５０４と、変位フィールド（Ｄ２）５０６とを含んでいる。Ｂ２フィールドがゼロ以外である場合、第２のオペランド・アドレスを取得するために、Ｂ２５０４によって規定された汎用レジスタの内容がＤ２５０６に追加される。そうでない場合、第２のオペランド・アドレスはＤ２フィールドのみから形成され、Ｂ２フィールドは無視される。第２のオペランド・アドレスはデータのアドレス指定に使用されず、代わりにこのアドレスはトランザクション・アボート・コードを形成し、トランザクション・アボート・コードは、アボート処理中にトランザクション診断ブロックに配置される。第２のオペランド・アドレスのアドレス計算は、２４ビット・アドレス指定モードではビット０〜２９がゼロに設定され、３１ビット・アドレス指定モードではビット０〜３２がゼロに設定されるという、アドレス演算のルールに従う。
【００９４】
コミット：最外ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令の完了時、または条件コード０を設定するＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令の完了時に、ＣＰＵは、トランザクション（すなわち、最外トランザクションおよびすべてのネストされたレベル）によって行われた格納アクセスを、他のＣＰＵおよびＩ／Ｏサブシステムから見えるようにコミットする。他のＣＰＵおよびＩ／Ｏサブシステムによって観察されたときに、コミットが発生した場合、すべてのネストされたレベルのトランザクションによって行われたすべてのフェッチ・アクセスおよび格納アクセスは、１つの同時処理として発生しているように見える。
【００９５】
汎用レジスタ、アクセス・レジスタ、浮動小数点レジスタ、および浮動小数点制御レジスタの内容は、コミット・プロセスによって変更されない。トランザクションの格納がコミットされるときに、トランザクション実行中にこれらのレジスタに対して行われたすべての変更は維持される。
【００９６】
競合：１つのＣＰＵによって行われるトランザクション・アクセスと、（ａ）別のＣＰＵによって行われるトランザクション・アクセスまたは非トランザクション・アクセス、あるいは（ｂ）Ｉ／Ｏサブシステムによって行われる非トランザクション・アクセスのいずれかとは、両方のアクセスが同じキャッシュ・ライン内のいずれかの位置に対するものであり、かつアクセスのうちの１つまたは複数が記憶部である場合に、競合する。
【００９７】
競合は、概念的シーケンス（conceptual sequence）において検出され得ない場合でも、ＣＰＵの命令の投機的実行によって検出されることがある。
【００９８】
制約付きトランザクション：制約付きトランザクションは、制約付きトランザクション実行モードで実行されるトランザクションであり、以下の制限を受ける。
【００９９】
＊  使用できるのは汎用命令のサブセットである。
【０１００】
＊  実行できる命令の数は制限される。
【０１０１】
＊  アクセスできるストレージ・オペランド位置の数は制限される。
【０１０２】
＊  トランザクションが、１つのネスト・レベルに制限される。
【０１０３】
反復される割り込みまたは他のＣＰＵもしくはＩ／Ｏサブシステムとの競合がなければ、制約付きトランザクションは最終的に完了するので、アボート・ハンドラ・ルーチンは不要である。
【０１０４】
ＣＰＵがすでに制約なしトランザクション実行モードにあるときに、制約付きＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ（ＴＢＥＧＩＮＣ）命令が実行された場合、実行はネストされた制約なしトランザクションとして継続する。
【０１０５】
制約付きトランザクション実行モード：トランザクション・ネスト深度がゼロであり、トランザクションがＴＢＥＧＩＮＣ命令によって開始された場合、ＣＰＵは制約付きトランザクション実行モードに移行する。ＣＰＵが制約付きトランザクション実行モードにある間、トランザクション・ネスト深度は１である。
【０１０６】
ネストされたトランザクション：ＣＰＵが制約なしトランザクション実行モードにある間、ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令が発行された場合、トランザクションはネストされる。
【０１０７】
トランザクション実行機能は、平坦化ネストと呼ばれるモデルを使用する。平坦化ネスト・モードでは、内部トランザクションによって行われた格納は、最外トランザクションがその格納をコミットするまで、他のＣＰＵおよびＩ／Ｏサブシステムによって観察されない。同様に、トランザクションがアボートした場合、すべてのネストされたトランザクションがアボートし、すべてのネストされたトランザクションのすべてのトランザクション格納（transactional stores）が破棄される。
【０１０８】
ネストされたトランザクションの１つの例が、図８に示されている。図に示されているように、第１のＴＢＥＧＩＮ６００が最外トランザクション６０１を開始し、ＴＢＥＧＩＮ６０２が第１のネストされたトランザクションを開始し、ＴＢＥＧＩＮ６０４が第２のネストされたトランザクションを開始する。この例では、ＴＢＥＧＩＮ６０４およびＴＥＮＤ６０６が最内トランザクション６０８を定義している。ＴＥＮＤ６１０が実行されるときに、最外トランザクションおよびすべての内部トランザクションのトランザクション格納がコミットされる（６１２）。
【０１０９】
制約なしトランザクション：制約なしトランザクションは、制約なしトランザクション実行モードで実行されるトランザクションである。制約なしトランザクションは、制約付きトランザクションのようには制限されないが、さまざまな原因のために依然としてアボートされることがある。
【０１１０】
制約なしトランザクション実行モード：トランザクションがＴＢＥＧＩＮＣ命令によって開始された場合、ＣＰＵは制約なしトランザクション実行モードに移行する。ＣＰＵが制約なしトランザクション実行モードにある間、トランザクション・ネスト深度が１から最大トランザクション・ネスト深度まで変化することがある。
【０１１１】
非トランザクション・アクセス：非トランザクション・アクセスは、ＣＰＵがトランザクション実行モードでないときにＣＰＵによって行われるストレージ・オペランド・アクセス（storage operand accesses）（つまり、トランザクションの外側の標準的なストレージ・アクセス）である。また、Ｉ／Ｏサブシステムによって行われるアクセスは、非トランザクション・アクセスである。さらに、ＣＰＵが制約なしトランザクション実行モードにある間に非トランザクション格納アクセスを引き起こすために、ＮＯＮＴＲＡＮＳＡＣＴＩＯＮＡＬ  ＳＴＯＲＥ命令が使用されてよい。
【０１１２】
外部／最外トランザクション：より低い番号が付けられたトランザクション・ネスト深度を持つトランザクションは、外部トランザクションである。１のトランザクション・ネスト深度値を持つトランザクションは、最外トランザクションである。
【０１１３】
最外ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令は、トランザクション・ネスト深度が最初にゼロであるときに実行される命令である。最外ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令は、トランザクション・ネスト深度を１からゼロに移行させる命令である。さらに、条件コードをゼロに設定するＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令も、最外の形態の命令であると見なされてよい。この実施形態では、制約付きトランザクションは最外トランザクションである。
【０１１４】
プログラム割り込みフィルタリング：特定のプログラム例外条件のためにトランザクションがアボートされた場合、プログラムは、必要に応じて割り込みの発生を防ぐことができる。この手法は、プログラム割り込みフィルタリングと呼ばれる。プログラム割り込みフィルタリングは、制御レジスタ０内の、割り込みのトランザクション・クラス、ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令からの有効なプログラム割り込みフィルタリング制御、およびトランザクション実行プログラム割り込みフィルタリング・オーバーライド（transactional execution program interruption filtering override）の対象になる。
【０１１５】
トランザクション：トランザクションは、ＣＰＵがトランザクション実行モードにある間に行われるストレージ・オペランド・アクセス、および変更される選択済み汎用レジスタを含む。制約なしトランザクションの場合、ストレージ・オペランド・アクセスは、トランザクション・アクセスと非トランザクション・アクセスの両方を含んでよい。制約付きトランザクションの場合、ストレージ・オペランド・アクセスはトランザクション・アクセスに制限される。他のＣＰＵおよびＩ／Ｏサブシステムによって観察されたときに、トランザクション実行モードにある間にＣＰＵによって行われるすべてのストレージ・オペランド・アクセスは、１つの同時処理として発生するように見える。トランザクションがアボートされた場合、トランザクション格納アクセスが破棄され、最外ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令の汎用レジスタ保存マスクによって指定されたすべてのレジスタは、トランザクション実行前の内容に回復させる。
【０１１６】
トランザクション・アクセス：トランザクション・アクセスは、ＮＯＮＴＲＡＮＳＡＣＴＩＯＮＡＬ  ＳＴＯＲＥ命令によって行われるアクセスを除いて、ＣＰＵがトランザクション実行モードにある間に行われるストレージ・オペランド・アクセスである。
【０１１７】
トランザクション実行モード：トランザクション実行モード（transactional execution mode）（トランザクション実行モード（transaction execution mode）とも呼ばれる）という用語は、制約なしトランザクション実行モードと制約付きトランザクション実行モードの両方の共通処理を表す。したがって、処理が説明されるときに、「制限なし」および「制限付き」という用語が、「トランザクション実行モード」を修飾するために使用される。
【０１１８】
トランザクション・ネスト深度がゼロである場合、ＣＰＵはトランザクション実行モードではない（非トランザクション実行モードとも呼ばれる）。
【０１１９】
ＣＰＵによって観察されるように、トランザクション実行モードにおいて行われるフェッチおよび格納は、トランザクション実行モードではないときに行われるフェッチおよび格納と異ならない。
【０１２０】
ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの一実施形態では、トランザクション実行機能は、制御レジスタ０のビット８〜９、制御レジスタ２のビット６１〜６３、トランザクション・ネスト深度、トランザクション診断ブロック・アドレス、およびトランザクション・アボート・プログラム状態ワード（ＰＳＷ）の制御下にある。
【０１２１】
初期ＣＰＵリセットの後に、制御レジスタ０のビット位置８〜９の内容、制御レジスタ２のビット位置６２〜６３の内容、およびトランザクション・ネスト深度が、ゼロに設定される。トランザクション実行制御（制御レジスタ０のビット８）がゼロである場合、ＣＰＵはトランザクション実行モードに移行できない。
【０１２２】
以下では、さまざまな制御に関する詳細について説明する。
【０１２３】
示されたように、トランザクション実行機能は、制御レジスタ０内の２ビットおよび制御レジスタ２内の３ビットによって制御される。以下に例を示す。
【０１２４】
制御レジスタ０のビット：一実施形態では、ビット割り当ては次のとおりである。
【０１２５】
トランザクション実行制御（ＴＸＣ：Transactional Execution Control）：制御レジスタ０のビット８は、トランザクション実行制御である。このビットは、トランザクション実行機能がプログラムによって使用可能であるかどうかを制御プログラム（例えば、オペレーティング・システム）が示すことができるメカニズムを提供する。トランザクション実行モードに正常に移行するには、ビット８が１になる必要がある。
【０１２６】
制御レジスタ０のビット８がゼロである場合、ＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令、ＥＸＴＲＡＣＴ  ＴＲＡＮＳＡＣＴＩＯＮ  ＮＥＳＴＩＮＧ  ＤＰＴＨ命令、ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令、およびＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令の実行が試みられると、特殊処理が実行される。
【０１２７】
トランザクション実行プログラム割り込みフィルタリング・オーバーライド（ＰＩＦＯ：Program Interruption Filtering Override）：制御レジスタ０のビット９は、トランザクション実行プログラム割り込みフィルタリング・オーバーライドである。このビットは、ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令によって規定または暗示された有効なプログラム割り込みフィルタリング制御にかかわらず、ＣＰＵがトランザクション実行モードにあるときに発生するどのプログラム例外条件も割り込みをもたらすことを、制御プログラムが保証できるメカニズムを提供する。
【０１２８】
制御レジスタ２のビット：一実施形態では、割り当ては次のとおりである。
【０１２９】
トランザクション診断範囲（ＴＤＳ：Transaction Diagnostic Scope）：制御レジスタ２のビット６１は、レジスタのビット６２〜６３内のトランザクション診断制御（ＴＤＣ：transaction diagnosis control）の適用可能性を次のように制御する。
【０１３０】
ＴＤＳ
値  意味
０  ＣＰＵが問題状態（problem state）にあるのか、スーパーバイザ状態にあるのかにかかわらず、ＴＤＣが適用される。
１  ＣＰＵが問題状態にある場合にのみ、ＴＤＣが適用される。ＣＰＵがスーパーバイザ状態にある場合、処理は、ＴＤＣがゼロを含んでいるかのようになる。
【０１３１】
トランザクション診断制御（ＴＤＳ）：制御レジスタ２のビット６２〜６３は、２ビットの符号なし整数であり、診断の目的でトランザクションをランダムにアボートさせるために使用されてよい。１つの例では、ＴＤＣのエンコーディングは次のとおりである。
【０１３２】
ＴＤＣ
値  意味
０  通常動作トランザクションは、ＴＤＣの結果としてアボートされない。
１  ランダムな命令ですべてのトランザクションをアボートする（ただし、最外ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令または条件コード０を設定するＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令の実行前）。
２  ランダムなトランザクションをランダムな命令でアボートする。
３  予備
【０１３３】
ゼロ以外のＴＤＣに起因してトランザクションがアボートされた場合、次のいずれかが発生してよい。
【０１３４】
＊  アボート・コードが、ＣＰＵによってコードの値がランダムに選択されて、７〜１１、１３〜１８、または２５５のいずれかに設定される。条件コードは、アボート・コードに応じて設定される。
【０１３５】
＊  制約なしトランザクションの場合、条件コードは１に設定される。この場合、アボート・コードは適用できない。
【０１３６】
１のＴＤＣ値が実装されるかどうかは、モデルに依存する。実装されない場合、１の値は、２が規定されたかのように機能する。
【０１３７】
制約付きトランザクションの場合、１のＴＤＣ値は、２のＴＤＣ値が規定されたかのように扱われる。
【０１３８】
３のＴＤＣ値が規定された場合、結果は予測不可能である。
【０１３９】
トランザクション診断ブロック・アドレス（ＴＤＢＡ）
有効なトランザクション診断ブロック・アドレス（ＴＤＢＡ）は、命令のＢ１フィールドがゼロ以外である場合に、最外ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ（ＴＢＥＧＩＮ）命令の第１のオペランド・アドレスから設定される。ＣＰＵが一次空間モードまたはアクセス・レジスタ・モードにある場合、ＴＤＢＡは、一次アドレス空間内の位置を指定する。ＣＰＵが二次空間モードまたはホーム空間モードにある場合、ＴＤＢＡは、二次アドレス空間またはホーム・アドレス空間内の位置をそれぞれ指定する。ＤＡＴ（動的アドレス変換）がオフである場合、ＴＤＢＡは実ストレージの位置を指定する。
【０１４０】
ＴＤＢＡは、その後トランザクションがアボートされた場合に、ＣＰＵによって、トランザクション診断ブロック（ＴＢＥＧＩＮによって規定されたＴＤＢと呼ばれる）の位置を特定するために使用される。ＴＤＢＡの右端の３ビットはゼロであり、つまり、ＴＢＥＧＩＮによって規定されたＴＤＢはダブルワード境界上にある。
【０１４１】
最外ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ（ＴＢＥＧＩＮ）命令のＢ１フィールドがゼロである場合、トランザクション診断ブロック・アドレスは無効であり、トランザクションがその後アボートされても、ＴＢＥＧＩＮによって規定されたＴＤＢは記憶されない。
【０１４２】
トランザクション・アボートＰＳＷ（ＴＡＰＳＷ：Transaction Abort PSW）
ネスト深度が最初にゼロであるときに、ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ（ＴＢＥＧＩＮ）命令の実行中に、トランザクション・アボートＰＳＷは現在のＰＳＷの内容に設定され、トランザクション・アボートＰＳＷの命令アドレスは、次の順次命令（つまり、最外ＴＢＥＧＩＮに続く命令）を指定する。ネスト深度が最初にゼロであるときに、制約付きＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ（ＴＢＥＧＩＮＣ）命令の実行中に、トランザクション・アボートＰＳＷは、トランザクション・アボートＰＳＷの命令アドレスが（ＴＢＥＧＩＮＣに続く次の順次命令ではなく）ＴＢＥＧＩＮＣ命令を指定することを除き、現在のＰＳＷの内容に設定される。
【０１４３】
トランザクションがアボートされた場合、トランザクション・アボートＰＳＷ内の条件コードは、アボート条件の重大度を示すコードに置き換えられる。その後、割り込みをもたらさない原因のためにトランザクションがアボートされた場合、ＰＳＷがトランザクション・アボートＰＳＷから読み込まれ、割り込みをもたらす原因のためにトランザクションがアボートされた場合、トランザクション・アボートＰＳＷが割り込み旧ＰＳＷとして記憶される。
【０１４４】
内部ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令の実行中に、トランザクション・アボートＰＳＷは変更されない。
【０１４５】
トランザクション・ネスト深度（ＴＮＤ：Transaction Nesting Depth）
トランザクション・ネスト深度は、例えば、ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令が条件コード０に基づいて完了するたびにインクリメントされ、ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令またはＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令が条件コード０に基づいて完了するたびにデクリメントされる、１６ビットの符号なし値である。トランザクション・ネスト深度は、トランザクションがアボートされたとき、またはＣＰＵリセットによって、ゼロにリセットされる。
【０１４６】
一実施形態では、１５の最大ＴＮＤが実装される。
【０１４７】
１つの実装では、ＣＰＵが制約付きトランザクション実行モードにあるとき、トランザクション・ネスト深度は１である。さらに、最大ＴＮＤは４ビット値として表され得るが、トランザクション診断ブロック内の検査を容易にするために、ＴＮＤは１６ビット値になるように定義される。
【０１４８】
トランザクション診断ブロック（ＴＤＢ）
トランザクションがアボートされた場合、次のようなさまざまな状態情報がトランザクション診断ブロック（ＴＤＢ）に保存されてよい。
【０１４９】
１．ＴＢＥＧＩＮによって規定されたＴＤＢ：制約なしトランザクションの場合、最外ＴＢＥＧＩＮ命令のＢ１フィールドがゼロ以外であるときに、命令の第１のオペランド・アドレスが、ＴＢＥＧＩＮによって規定されたＴＤＢを指定する。これは、アプリケーションのアボート・ハンドラによって調べられてよい、アプリケーション・プログラムによって規定された位置である。
【０１５０】
２．プログラム割り込み（ＰＩ：Program-Interruption）ＴＤＢ：フィルタリングされないプログラム例外条件に起因して制約なしトランザクションがアボートされた場合、またはいずれかのプログラム例外条件（つまり、プログラム割り込みが認識されることをもたらすいずれかの条件）に起因して制約付きトランザクションがアボートされた場合、ＰＩ−ＴＤＢがプレフィックス領域内の位置に記憶される。これは、オペレーティング・システムが提供することがある診断レポートの検査およびログ出力を行うために、オペレーティング・システムに使用可能である。
【０１５１】
３．インターセプションＴＤＢ（Interception TDB）：割り込みをもたらすいずれかのプログラム例外条件に起因してトランザクションがアボートされた場合（つまり、条件が解釈実行を終了させ、制御をホスト・プログラムに戻した場合）、ＴＤＢは、ゲスト・オペレーティング・システムの状態記述ブロック内で規定された位置に記憶される。
【０１５２】
ＴＢＥＧＩＮによって規定されたＴＤＢは、一実施形態では、ＴＤＢアドレスが有効である場合（つまり、最外ＴＢＥＧＩＮ命令のＢ１フィールドがゼロ以外である場合）にのみ記憶される。
【０１５３】
フィルタリングされないプログラム例外条件に起因するアボートの場合、ＰＩ−ＴＤＢまたはインターセプションＴＤＢのいずれか一方のみが記憶される。したがって、アボートの場合、ゼロ、１つ、または２つのＴＤＢが記憶されることがある。
【０１５４】
以下では、各ＴＤＢの１つの例に関する詳細についてさらに説明する。
【０１５５】
ＴＢＥＧＩＮによって規定されたＴＤＢ：有効なトランザクション診断ブロック・アドレスによって規定された２５６バイトの位置。トランザクション診断ブロック・アドレスが有効である場合、トランザクション・アボートの発生時に、ＴＢＥＧＩＮによって規定されたＴＤＢは記憶される。ＴＢＥＧＩＮによって規定されたＴＤＢは、最外ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令の実行時に有効であるすべてのストレージ保護メカニズムの対象になる。ＴＢＥＧＩＮによって規定されたＴＤＢのいずれかの部分のＰＥＲ（プログラム・イベント記録）ストレージ変更イベントは、トランザクション・アボート処理中ではなく、最外ＴＢＥＧＩＮの実行中に検出される。
【０１５６】
ＰＥＲの１つの目的は、プログラムのデバッグを支援することである。ＰＥＲは、次の例のようなタイプのイベントについて、プログラムに警告できるようにする。
【０１５７】
＊  正常な分岐命令の実行分岐の目標位置が指定された記憶領域内である場合にのみイベントを発生させるオプションが提供される。
【０１５８】
＊  指定された記憶領域からの命令のフェッチ
【０１５９】
＊  指定された記憶領域の内容の変更記憶領域が指定されたアドレス空間内にある場合にのみイベントを発生させるオプションが提供される。
【０１６０】
＊  ＳＴＯＲＥ  ＵＳＩＮＧ  ＲＥＡＬ  ＡＤＤＲＥＳＳ命令の実行
【０１６１】
＊  ＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令またはＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令の実行
【０１６２】
プログラムは、上のタイプのイベントのうちの１つまたは複数が認識されることを選択的に規定できるが、ＳＴＯＲＥ  ＵＳＩＮＧ  ＲＥＡＬ  ＡＤＤＲＥＳＳのイベントがストレージ変更イベントと共にのみ規定され得るということを除く。プログラム割り込みを用いて、割り込みの原因が割り込みコードで識別されて、ＰＥＲイベントに関する情報がプログラムに提供される。
【０１６３】
トランザクション診断ブロック・アドレスが有効でない場合、ＴＢＥＧＩＮによって規定されたＴＤＢは記憶されない。
【０１６４】
プログラム割り込みＴＤＢ：実位置６，１４４〜６，３９９（１８００〜１８ＦＦ（１６進数））プログラム割り込みＴＤＢは、プログラム割り込みに起因してトランザクションがアボートされたときに記憶される。他の原因のためにトランザクションがアボートされた場合、プログラム割り込みＴＤＢの内容は予測不可能である。
【０１６５】
プログラム割り込みＴＤＢは、どの保護メカニズムの対象にもならない。ＰＥＲストレージ変更イベントは、プログラム割り込みＴＤＢがプログラム割り込み中に記憶された場合、プログラム割り込みＴＤＢに関して検出されない。
【０１６６】
インターセプションＴＤＢ：状態記述の位置４８８〜４９５によって規定される２５６バイトのホスト実位置インターセプションＴＤＢは、アボートされたトランザクションがゲスト・プログラム割り込みインターセプション（guest program interruption interception）（つまり、インターセプションコード８）をもたらす場合に、記憶される。他の原因のためにトランザクションがアボートされた場合、インターセプションＴＤＢの内容は予測不可能である。インターセプションＴＤＢは、どの保護メカニズムの対象にもならない。
【０１６７】
図９に示されているように、一実施形態では、トランザクション診断ブロック７００のフィールドは次のとおりである。
【０１６８】
形式７０２：バイト０は、次のような有効性および形式の表れを格納する。
【０１６９】
値  意味
０  ＴＤＢの残りのフィールドは予測不可能である。
１  形式１  ＴＤＢＴＤＢの残りのフィールドは下で説明される。
２〜２５５  予備
【０１７０】
形式フィールドがゼロであるＴＤＢは、ヌルＴＤＢと呼ばれる。
【０１７１】
フラグ７０４：バイト１は、次のようなさまざまな表れを格納する。
【０１７２】
競合トークン有効性（Conflict Token Validity）（ＣＴＶ：Conflict Token Validity）：フェッチまたは記憶の競合に起因してトランザクションがアボートされた場合（つまり、それぞれアボート・コード９または１０）、バイト１のビット０が競合トークン有効性表れである。ＣＴＶ表れが１である場合、ＴＤＢのバイト１６〜２３内の競合トークン７１０は、競合が検出された論理アドレスを格納する。ＣＴＶ表れがゼロである場合、ＴＤＢのバイト１６〜２３は予測不可能である。
【０１７３】
フェッチまたは記憶の競合以外のいずれかの理由のためにトランザクションがアボートされた場合、バイト１のビット０にはゼロが記憶される。
【０１７４】
制約付きトランザクション表れ（ＣＴＩ：Constrained-Transaction Indication）：ＣＰＵが制約付きトランザクション実行モードにあるとき、バイト１のビット１は１に設定される。ＣＰＵが制約なしトランザクション実行モードにあるとき、バイト１のビット１はゼロに設定される。
【０１７５】
予備：バイト１のビット２〜７は予備であり、ゼロが記憶される。
【０１７６】
トランザクション・ネスト深度（ＴＮＤ）７０６：トランザクションがアボートされたときに、バイト６〜７はトランザクション・ネスト深度を格納する。
【０１７７】
トランザクション・アボート・コード（ＴＡＣ：Transaction Abort Code）７０８：バイト８〜１５は、６４ビットの符号なしトランザクション・アボート・コードを格納する。各コードは、トランザクションがアボートされている理由を示す。
【０１７８】
プログラム割り込み以外の条件に起因してトランザクションがアボートされたときに、トランザクション・アボート・コードがプログラム割り込みＴＤＢに記憶されるかどうかは、モデルに依存する。
【０１７９】
競合トークン７１０：フェッチまたは記憶の競合に起因してアボートされたトランザクションの場合（つまり、それぞれアボート・コード９および１０）、バイト１６〜２３は、競合が検出された記憶位置の論理アドレスを格納する。競合トークンは、ＣＴＶビット（バイト１のビット０）が１の場合にのみ意味を持つ。
【０１８０】
ＣＴＶビットがゼロである場合、バイト１６〜２３は予測不可能である。
【０１８１】
ＣＰＵによる投機的実行のために、競合トークンは、トランザクションの概念的実行シーケンスによって必ずしもアクセスされない記憶位置を指定することがある。
【０１８２】
アボート済みトランザクション命令アドレス（ＡＴＩＡ：Aborted Transaction Instruction Address）７１２：バイト２４〜３１は、アボートが検出されたときに実行されていた命令を識別する命令アドレスを格納する。アボート・コード２、５、６、１１、１３、１７、１８、または２５６以上に起因してトランザクションがアボートされた場合、またはアボート・コード４または１２に起因してトランザクションがアボートされ、かつプログラム例外条件が無効である場合、ＡＴＩＡは実行されていた命令を直接指す。アボート・コード４または１２に起因してトランザクションがアボートされ、かつプログラム例外条件が無効でない場合、ＡＴＩＡは実行されていた命令を過ぎた位置を指す。
【０１８３】
アボート・コード７〜１０、１４〜１６、または２５５に起因してトランザクションがアボートされた場合、ＡＴＩＡは、アボートを引き起こしている正確な命令を必ずしも示さず、トランザクション内のより前またはより後の命令を指すことがある。
【０１８４】
実行タイプ命令のターゲットである命令に起因してトランザクションがアボートされた場合、ＡＴＩＡは実行タイプ命令を識別し、アボート・コードに応じて、命令または命令を過ぎた位置を指す。ＡＴＩＡは、実行タイプ命令のターゲットを示さない。
【０１８５】
ＡＴＩＡは、トランザクションがアボートされたときにアドレス指定モードの対象になる。２４ビット・アドレス指定モードでは、フィールドのビット０〜４０はゼロを格納する。３１ビット・アドレス指定モードでは、フィールドのビット０〜３２はゼロを格納する。
【０１８６】
プログラム割り込み以外の条件に起因してトランザクションがアボートされたときに、アボートされたトランザクションの命令アドレスがプログラム割り込みＴＤＢに記憶されるかどうかは、モデルに依存する。
【０１８７】
アボート・コード４または１２に起因してトランザクションがアボートされ、かつプログラム例外条件が無効でない場合、ＡＴＩＡはアボートを引き起こしている命令を指さない。割り込み長コード（ＩＬＣ：interruption length code）によって示されたハーフワードの数をＡＴＩＡから引くことによって、アボートを引き起こしている命令が、抑制または終了している条件において、または完了している非ＰＥＲイベントに関して、識別され得る。ＰＥＲイベントに起因してトランザクションがアボートされ、かつ他のプログラム例外条件が存在しない場合、ＡＴＩＡは予測不可能である。
【０１８８】
トランザクション診断ブロック・アドレスが有効である場合、ＴＢＥＧＩＮによって規定されたＴＤＢのバイト３６〜３９内のプログラム割り込み識別情報（ＰＩＩＤ）においてＩＬＣが調べられてよい。フィルタリングが適用されない場合、実ストレージ内の位置１４０〜１４３で、ＰＩＩＤにおいてＩＬＣが調べられてよい。
【０１８９】
例外アクセス識別情報（ＥＡＩＤ：Exception Access Identification）７１４：特定のフィルタリングされたプログラム例外条件に起因してアボートされたトランザクションの場合、ＴＢＥＧＩＮによって規定されたＴＤＢのバイト３２は例外アクセス識別情報を格納する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの１つの例では、ＥＡＩＤの形式、およびＥＡＩＤが記憶される状況は、上で参照によって包含された「Principles of Operation」に記載されているように、例外条件が割り込みをもたらすときに実位置１６０に記述される形式および状況と同じである。
【０１９０】
プログラム割り込みをもたらす任意の例外条件を含む、他の理由のためにアボートされたトランザクションの場合、バイト３２は予測不可能である。プログラム割り込みＴＤＢ内のバイト３２は、予測不可能である。
【０１９１】
このフィールドは、トランザクション診断ブロック・アドレスによって指定されたＴＤＢにおいてのみ記憶される。そうでない場合、このフィールドは予備である。ＥＡＩＤは、制御されたアクセス・リストまたはＤＡＴ保護、ＡＳＣＥタイプ、ページ変換、第１の領域変換、第２の領域変換、第３の領域変換、およびセグメント変換プログラム例外条件のためにのみ記憶される。
【０１９２】
データ例外コード（ＤＸＣ）７１６：フィルタリングされたデータ例外プログラム例外条件に起因してアボートされたトランザクションの場合、ＴＢＥＧＩＮによって規定されたＴＤＢのバイト３３はデータ例外コードを格納する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの１つの例では、ＤＸＣの形式、およびＤＸＣが記憶される状況は、上で参照によって包含された「Principles of Operation」に記載されているように、例外条件が割り込みをもたらすときに実位置１４７に記述される形式および状況と同じである。１つの例では、位置１４７はＤＸＣを含む。
【０１９３】
プログラム割り込みをもたらす任意の例外条件を含む、他の理由のためにアボートされたトランザクションの場合、バイト３３は予測不可能である。プログラム割り込みＴＤＢ内のバイト３３は、予測不可能である。
【０１９４】
このフィールドは、トランザクション診断ブロック・アドレスによって指定されたＴＤＢにおいてのみ記憶される。そうでない場合、このフィールドは予備である。ＤＸＣは、データ・プログラム例外条件のためにのみ記憶される。
【０１９５】
プログラム割り込み識別情報（ＰＩＩＤ：Program Interruption Identification）７１８：フィルタリングされたプログラム例外条件に起因してアボートされたトランザクションの場合、ＴＢＥＧＩＮによって規定されたＴＤＢのバイト３６〜３９はプログラム割り込み識別情報を格納する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの１つの例では、ＰＩＩＤの形式は、ＰＩＩＤのビット１３〜１４内の命令長コードが、例外条件が検出された命令に対して個別であることを除き、（上で参照によって包含された「Principles of Operation」に記載されているように）条件が割り込みをもたらすときに実位置１４０〜１４３に記述される形式と同じである。
【０１９６】
プログラム割り込みをもたらす例外条件を含む、他の理由のためにアボートされたトランザクションの場合、バイト３６〜３９は予測不可能である。プログラム割り込みＴＤＢ内のバイト３６〜３９は、予測不可能である。
【０１９７】
このフィールドは、トランザクション診断ブロック・アドレスによって指定されたＴＤＢにおいてのみ記憶される。そうでない場合、このフィールドは予備である。プログラム割り込み識別情報は、プログラム例外条件のためにのみ記憶される。
【０１９８】
トランザクション例外識別情報（ＴＥＩＤ：Translation Exception Identification）７２０：次のフィルタリングされたプログラム例外条件のいずれかに起因してアボートされたトランザクションの場合、ＴＢＥＧＩＮによって規定されたＴＤＢのバイト４０〜４７はトランザクション例外識別情報を格納する。
【０１９９】
＊  制御されたアクセス・リストまたはＤＡＴ保護
【０２００】
＊  ＡＳＣＥタイプ
【０２０１】
＊  ページ変換
【０２０２】
＊  第１の領域変換
【０２０３】
＊  第２の領域変換
【０２０４】
＊  第３の領域変換
【０２０５】
＊  セグメント変換例外
【０２０６】
ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの１つの例では、ＴＥＩＤの形式は、上で参照によって包含された「Principles of Operation」に記載されているように、条件が割り込みをもたらすときに実位置１６８〜１７５に記述される形式と同じである。
【０２０７】
プログラム割り込みをもたらす例外条件を含む、他の理由のためにアボートされたトランザクションの場合、バイト４０〜４７は予測不可能である。プログラム割り込みＴＤＢ内のバイト４０〜４７は、予測不可能である。
【０２０８】
このフィールドは、トランザクション診断ブロック・アドレスによって指定されたＴＤＢにおいてのみ記憶される。そうでない場合、このフィールドは予備である。
【０２０９】
停止イベント・アドレス７２２：フィルタリングされたプログラム例外条件に起因してアボートされたトランザクションの場合、ＴＢＥＧＩＮによって規定されたＴＤＢのバイト４８〜５５は停止イベント・アドレスを格納する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの１つの例では、停止イベント・アドレスの形式は、上で参照によって包含された「Principles of Operation」に記載されているように、条件が割り込みをもたらすときに実位置２７２〜２７９に記述される形式と同じである。
【０２１０】
プログラム割り込みをもたらす例外条件を含む、他の理由のためにアボートされたトランザクションの場合、バイト４８〜５５は予測不可能である。プログラム割り込みＴＤＢ内のバイト４８〜５５は、予測不可能である。
【０２１１】
このフィールドは、トランザクション診断ブロック・アドレスによって指定されたＴＤＢにおいてのみ記憶される。そうでない場合、このフィールドは予備である。
【０２１２】
以下では、停止イベントに関する詳細についてさらに説明する。
【０２１３】
ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの一実施形態では、ＰＥＲ−３機能がインストールされた場合、ＰＥＲ−３機能は、ＣＰＵを順次実行において停止させるために、最後の命令のアドレスをプログラムに提供する。停止イベント・アドレス記録は、ワイルド分岐検出（wild branch detection）のためのデバッグ支援として使用され得る。この機能は、例えば、停止イベント・アドレス・レジスタと呼ばれる、ＣＰＵ内の６４ビット・レジスタを提供する。ＴＲＡＮＳＡＣＴＩＯＮ  ＡＢＯＲＴ以外の命令が順次命令実行を停止させる（つまり、ＰＳＷ内の命令アドレスが、命令の長さでインクリメントされるのではなく、置換される）たびに、その命令のアドレスが停止イベント・アドレス・レジスタに配置される。プログラム割り込みが発生した場合、ＰＥＲが示されているかどうかにかかわらず、停止イベント・アドレス・レジスタの現在の内容が、実ストレージ位置２７２〜２７９に配置される。
【０２１４】
停止イベントを引き起こす命令が実行タイプ命令（ＥＸＥＣＵＴＥまたはＥＸＥＣＵＴＥ  ＲＥＬＡＴＩＶＥ  ＬＯＮＧ）のターゲットである場合、実行タイプ命令をフェッチするのに使用される命令アドレスが、停止イベント・アドレス・レジスタに配置される。
【０２１５】
ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの一実施形態では、停止イベントは、次の命令のうちの１つが分岐を引き起こすときに必ず発生すると考えられる。ＢＲＡＮＣＨ  ＡＮＤ  ＬＩＮＫ（ＢＡＬ、ＢＡＬＲ）、ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ（ＢＡＳ、ＢＡＳＲ）、ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ（ＢＡＳＳＭ）、ＢＲＡＮＣＨ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ（ＢＳＭ）、ＢＲＡＮＣＨ  ＡＮＤ  ＳＴＡＣＫ（ＢＡＫＲ）、ＢＲＡＮＣＨ  ＯＮ  ＣＯＮＤＩＴＩＯＮ（ＢＣ、ＢＣＲ）、ＢＲＡＮＣＨ  ＯＮ  ＣＯＵＮＴ（ＢＣＴ、ＢＣＴＲ、ＢＣＴＧ、ＢＣＴＧＲ）、ＢＲＡＮＣＨ  ＯＮ  ＩＮＤＥＸ  ＨＩＧＨ（ＢＸＨ、ＢＸＨＧ）、ＢＲＡＮＣＨ  ＯＮ  ＩＮＤＥＸ  ＬＯＷ  ＯＲ  ＥＱＵＡＬ（ＢＸＬＥ、ＢＸＬＥＧ）、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＮＤＩＴＩＯＮ（ＢＲＣ）、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＮＤＩＴＩＯＮ  ＬＯＮＧ（ＢＲＣＬ）、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＵＮＴ（ＢＲＣＴ、ＢＲＣＴＧ）、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＩＮＤＥＸ  ＨＩＧＨ（ＢＲＸＨ、ＢＲＸＨＧ）、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＩＮＤＥＸ  ＬＯＷ  ＯＲ  ＥＱＵＡＬ（ＢＲＸＬＥ、ＢＲＸＬＧ）、ＣＯＭＰＡＲＥ  ＡＮＤ  ＢＲＡＮＣＨ（ＣＲＢ、ＣＧＲＢ）、ＣＯＭＰＡＲＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ（ＣＲＪ、ＣＧＲＪ）、ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ（ＣＩＢ、ＣＧＩＢ）、ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ（ＣＩＪ、ＣＧＩＪ）、ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＡＮＤ  ＢＲＡＮＣＨ（ＣＬＲＢ、ＣＬＧＲＢ）、ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ（ＣＬＲＪ、ＣＬＧＲＪ）、ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ（ＣＬＩＢ、ＣＬＧＩＢ）、およびＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ（ＣＬＩＪ、ＣＬＧＩＪ）
【０２１６】
停止イベントは、次の命令のうちの１つが完了するときにも必ず発生すると考えられる。ＢＲＡＮＣＨ  ＡＮＤ  ＳＥＴ  ＡＵＴＨＯＲＩＴＹ（ＢＳＡ）、ＢＲＡＮＣＨ  ＩＮ  ＳＵＢＳＰＡＣＥ  ＧＲＯＵＰ（ＢＳＧ）、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＡＮＤ  ＳＡＶＥ、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＡＮＤ  ＳＡＶＥ  ＬＯＮＧ（ＢＲＡＳＬ）、ＬＯＡＤ  ＰＳＷ（ＬＰＳＷ）、ＬＯＡＤ  ＰＳＷ  ＥＸＴＥＮＤＥＤ（ＬＰＳＷＥ）、ＰＲＯＧＲＡＭ  ＣＡＬＬ（ＰＣ）、ＰＲＯＧＲＡＭ  ＲＥＴＵＲＮ（ＰＲ）、ＰＲＯＧＲＡＭ  ＴＲＡＮＳＦＥＲ（ＰＴ）、ＰＲＯＧＲＡＭ  ＴＲＡＮＳＦＥＲ  ＷＩＴＨ  ＩＮＳＴＡＮＣＥ（ＰＴＩ）、ＲＥＳＵＭＥ  ＰＲＯＧＲＡＭ（ＲＰ）、およびＴＲＡＰ（ＴＲＡＰ２、ＴＲＡＰ４）
【０２１７】
停止イベントは、（暗黙的に、またはＴＲＡＮＳＡＣＴＩＯＮ  ＡＢＯＲＴ命令の結果として）アボートされているトランザクションの結果として発生するとは考えられない。
【０２１８】
モデル依存診断情報７２４：バイト１１２〜１２７は、モデル依存診断情報を格納する。
【０２１９】
１２（フィルタリングされたプログラム割り込み）を除くすべてのアボート・コードの場合、モデル依存診断情報は、記憶された各ＴＤＢ内に保存される。
【０２２０】
一実施形態では、モデル依存診断情報は次を含む。
【０２２１】
＊  バイト１１２〜１１９は、トランザクション実行分岐表れ（ＴＸＢＩ：transactional execution branch indications）と呼ばれる６４ビットのベクトルを格納する。ベクトルの最初の６３ビットはそれぞれ、次のような、ＣＰＵがトランザクション実行モードにあったときの分岐命令の実行結果を示す。
【０２２２】
値  意味
０  命令が分岐を実行せずに完了した。
１  命令が分岐を実行して完了した。
【０２２３】
ビット０はこのような第１の分岐命令の結果を表し、ビット１はこのような第２の分岐命令の結果を表す、などとなる。
【０２２４】
ＣＰＵがトランザクション実行モードにある間に、６３個よりも少ない分岐命令が実行された場合、分岐命令に対応しない右端のビット（ビット６３を含む）はゼロに設定される。６３個よりも多い分岐命令が実行された場合、ＴＸＢＩのビット６３は１に設定される。
【０２２５】
ＴＸＢＩ内のビットは、次のことを除き、上で示されたように、停止イベントを引き起こすことができる命令によって設定される。
【０２２６】
−  どの制限された命令によっても、ＴＸＢＩ内のビットは設定されない。
【０２２７】
−  例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの命令の場合、ＢＲＡＮＣＨ  ＯＮ  ＣＯＮＤＩＴＩＯＮ命令、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＮＤＩＴＩＯＮ命令、またはＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＮＤＩＴＩＯＮ  ＬＯＮＧ命令のＭ１フィールドがゼロである場合、または次の命令のＲ２フィールドがゼロである場合、命令の実行によってＴＸＢＩ内のビットが設定されるかどうかは、モデルに依存する。
【０２２８】
＊  ＢＲＡＮＣＨ  ＡＮＤ  ＬＩＮＫ（ＢＡＬＲ）、ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ（ＢＡＳＲ）、ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ（ＢＡＳＳＭ）、ＢＲＡＮＣＨ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ（ＢＳＭ）、ＢＲＡＮＣＨ  ＯＮ  ＣＯＮＤＩＴＩＯＮ（ＢＣＲ）、およびＢＲＡＮＣＨ  ＯＮ  ＣＯＵＮＴ（ＢＣＴＲ、ＢＣＴＧＲ）
【０２２９】
＊  ホスト・アクセス例外によって引き起こされたアボート条件の場合、バイト１２７のビット位置０が１に設定される。他のすべてのアボート条件の場合、バイト１２７のビット位置０がゼロに設定される。
【０２３０】
＊  読み込み／記憶ユニット（ＬＳＵ）によって検出されたアボート条件の場合、バイト１２７の右端の５ビットが、原因の表れを格納する。ＬＳＵによって検出されなかったアボート条件の場合、バイト１２７は予備である。
【０２３１】
汎用レジスタ７３０：トランザクションがアボートされたときに、バイト１２８〜２５５は汎用レジスタ０〜１５の内容を格納する。各レジスタは、バイト１２８〜１３５内の汎用レジスタ０、バイト１３６〜１４３内の汎用レジスタ１などから開始して、昇順で記憶される。
【０２３２】
予備：その他すべてのフィールドは予備である。特に示されない限り、予備フィールドの内容は予測不可能である。
【０２３３】
他のＣＰＵおよびＩ／Ｏサブシステムによって観察されるように、トランザクション・アボート中のＴＤＢの記憶は、いずれかの非トランザクション記憶の後に発生する複数のアクセス参照である。
【０２３４】
トランザクションは、そのトランザクションが実行されている即時構成（immediate configuration）の範囲外の原因のためにアボートされることがある。例えば、ハイパーバイザ（ＬＰＡＲまたはｚ／ＶＭなど）によって認識される一時的イベントは、トランザクションをアボートすることがある。
【０２３５】
トランザクション診断ブロックによって提供される情報は診断を目的としており、おおむね正しい。しかし、アボートは、即時構成の範囲外のイベントによって引き起こされていることがあり、アボート・コードまたはプログラム割り込み識別情報などの情報は、構成内の状態を正確に反映しない場合があるため、プログラムの動作の決定に使用されるべきではない。
【０２３６】
ＴＤＢに保存される診断情報に加えて、いずれかのデータ例外プログラム例外条件に起因してトランザクションがアボートされ、かつＡＦＰレジスタ制御（制御レジスタ０のビット４５）と有効な浮動小数点演算許可制御（Ｆ）の両方が１である場合、フィルタリングがプログラム例外条件に適用されるかどうかにかかわらず、データ例外コード（ＤＸＣ）が浮動小数点制御レジスタ（ＦＰＣＲ）のバイト２に配置される。トランザクションがアボートされ、かつＡＦＰレジスタ制御または有効な浮動小数点演算許可制御あるいはその両方がゼロである場合、ＤＸＣはＦＰＣＲに配置されない。
【０２３７】
一実施形態では、本明細書に示されているように、トランザクション実行機能がインストールされている場合、例えばＥＸＴＲＡＣＴ  ＴＲＡＮＳＡＣＴＩＯＮ  ＮＥＳＴＩＮＧ  ＤＰＴＨ、ＮＯＮＴＲＡＮＳＡＣＴＩＯＮＡＬ  ＳＴＯＲＥ、ＴＲＡＮＳＡＣＴＩＯＮ  ＡＢＯＲＴ、ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ、およびＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤを含む、複数の汎用命令が提供される。さらに、条件付きトランザクション終了機能がインストールされている場合、ＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令が提供される。
【０２３８】
ＣＰＵがトランザクション実行モードにある場合、特定の命令の試みられた実行が制限され、トランザクションをアボートする。
【０２３９】
制限された命令の試みられた実行は、制約付きトランザクション実行モードで発行された場合、トランザクション制約プログラム割り込み（transaction constraint program interruption）ももたらすことがあり、またはトランザクションが制約されていないかのような実行の継続をもたらすこともある。
【０２４０】
ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの１つの例では、制限された命令の例として、次の非特権命令が挙げられる。ＣＯＭＰＡＲＥ  ＡＮＤ  ＳＷＡＰ  ＡＮＤ  ＳＴＯＲＥ、ＭＯＤＩＦＹ  ＲＵＮＴＩＭＥ  ＩＮＳＴＲＵＭＥＮＴＡＴＩＯＮ  ＣＯＮＴＲＯＬＳ、ＰＥＲＦＯＲＭ  ＬＯＣＫＥＤ  ＯＰＥＲＡＴＩＯＮ、ＰＲＥＦＥＴＣＨ  ＤＡＴＡ（ＲＥＬＡＴＩＶＥ  ＬＯＮＧ）（Ｍ１フィールド内のコードが６または７である場合）、ＳＴＯＲＥ  ＣＨＡＲＡＣＴＥＲＳ  ＵＮＤＥＲ  ＭＡＳＫ  ＨＩＧＨ（Ｍ３フィールドがゼロであり、かつＲ１フィールド内のコードが６または７である場合）、ＳＴＯＲＥ  ＦＡＣＩＬＩＴＹ  ＬＩＳＴ  ＥＸＴＥＮＤＥＤ、ＳＴＯＲＥ  ＲＵＮＴＩＭＥ  ＩＮＳＴＲＵＭＥＮＴＡＴＩＯＮ  ＣＯＮＴＲＯＬＳ、ＳＵＰＥＲＶＩＳＯＲ  ＣＡＬＬ、およびＴＥＳＴ  ＲＵＮＴＩＭＥ  ＩＮＳＴＲＵＭＥＮＴＡＴＩＯＮ  ＣＯＮＴＲＯＬＳ
【０２４１】
上のリストでは、ＣＯＭＰＡＲＥ  ＡＮＤ  ＳＷＡＰ  ＡＮＤ  ＳＴＯＲＥおよびＰＥＲＦＯＲＭ  ＬＯＣＫＥＤ  ＯＰＥＲＡＴＩＯＮは、ＴＸモードで基本命令を使用することによってより効率的に実装され得る複合命令である。ＰＲＥＦＥＴＣＨ  ＤＡＴＡおよびＰＲＥＦＥＴＣＨ  ＤＡＴＡ  ＲＥＬＡＴＩＶＥ  ＬＯＮＧの場合は、６および７のコードがキャッシュ・ラインを解放するため、制限され、トランザクションの完了前にデータのコミットを必要とする可能性がある。ＳＵＰＥＲＶＩＳＯＲ  ＣＡＬＬは、（トランザクションをアボートする）割り込みを引き起こすので、制限される。
【０２４２】
下に示された条件下で、以下の命令が制限される。
【０２４３】
＊  ＢＲＡＮＣＨ  ＡＮＤ  ＬＩＮＫ（ＢＡＬＲ）、ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ（ＢＡＳＲ）、およびＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ（命令のＲ２フィールドがゼロ以外であり、かつ分岐トレースが有効化されている場合）
【０２４４】
＊  ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ  ＡＮＤ  ＳＥＴ  ＭＯＤＥおよびＢＲＡＮＣＨ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ（命令のＲ２フィールドがゼロ以外であり、かつモード・トレースが有効化されている場合）、ＳＥＴ  ＡＤＤＲＥＳＳＩＮＧ  ＭＯＤＥ（モード・トレースが有効化されている場合）
【０２４５】
＊  ＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ（トランザクション・ネスト深度が１よりも大きい場合）
【０２４６】
＊  ＭＯＮＩＴＯＲ  ＣＡＬＬ（監視イベント条件が認識されている場合）
【０２４７】
上のリストは、トレース・エントリを形成することができる命令を含む。これらの命令が、トランザクションにおいて実行することを許可されていて、トレース・エントリを形成しており、その後、トランザクションがアボートした場合、制御レジスタ１２内のトレース・テーブル・ポインタが進められるが、トレース・テーブルへの記憶は破棄される。これによって、トレース・テーブル内に矛盾したギャップが残るため、命令がトレース・エントリを形成する場合、それらの命令は制限される。
【０２４８】
ＣＰＵがトランザクション実行モードにある場合、次の命令が制限されるかどうかはモデルに依存する。ＣＩＰＨＥＲ  ＭＥＳＳＡＧＥ、ＣＩＰＨＥＲ  ＭＥＳＳＡＧＥ  ＷＩＴＨ  ＣＦＢ、ＣＩＰＨＥＲ  ＭＥＳＳＡＧＥ  ＷＩＴＨ  ＣＨＡＩＮＩＮＧ、ＣＩＰＨＥＲ  ＭＥＳＳＡＧＥ  ＷＩＴＨ  ＣＯＵＮＴＥＲ、ＣＩＰＨＥＲ  ＭＥＳＳＡＧＥ  ＷＩＴＨ  ＯＦＢ、ＣＯＭＰＲＥＳＳＩＯＮ  ＣＡＬＬ、ＣＯＭＰＵＴＥ  ＩＮＴＥＲＭＥＤＩＡＴＥ  ＭＥＳＳＡＧＥ  ＤＩＧＥＳＴ、ＣＯＭＰＵＴＥ  ＬＡＳＴ  ＭＥＳＳＡＧＥ  ＤＩＧＥＳＴ、ＣＯＭＰＵＴＥ  ＭＥＳＳＡＧＥ  ＡＵＴＨＥＮＴＩＣＡＴＩＯＮ  ＣＯＤＥ、ＣＯＮＶＥＲＴ  ＵＮＩＣＯＤＥ−１６  ＴＯ  ＵＮＩＣＯＤＥ−３２、ＣＯＮＶＥＲＴ  ＵＮＩＣＯＤＥ−１６  ＴＯ  ＵＮＩＣＯＤＥ−８、ＣＯＮＶＥＲＴ  ＵＮＩＣＯＤＥ−３２  ＴＯ  ＵＮＩＣＯＤＥ−１６、ＣＯＮＶＥＲＴ  ＵＮＩＣＯＤＥ−３２  ＴＯ  ＵＮＩＣＯＤＥ−８、ＣＯＮＶＥＲＴ  ＵＮＩＣＯＤＥ−８  ＴＯ  ＵＮＩＣＯＤＥ−１６、ＣＯＮＶＥＲＴ  ＵＮＩＣＯＤＥ−８  ＴＯ  ＵＮＩＣＯＤＥ−３２、ＰＥＲＦＯＲＭ  ＣＲＹＰＴＯＧＲＡＰＨＩＣ  ＣＯＭＰＵＴＡＴＩＯＮ、ＲＵＮＴＩＭＥ  ＩＮＳＴＲＵＭＥＮＴＡＴＩＯＮ  ＯＦＦ、およびＲＵＮＴＩＭＥ  ＩＮＳＴＲＵＭＥＮＴＡＴＩＯＮ  ＯＮ
【０２４９】
上の各命令は、ハードウェア・コプロセッサによって現在実装されているか、または過去のマシン内に存在するので、制限されていると見なされる。
【０２５０】
有効なＡＲ変更許可（Ａ）制御がゼロである場合、次の命令が制限される。ＣＯＰＹ  ＡＣＣＥＳＳ、ＬＯＡＤ  ＡＣＣＥＳＳ  ＭＵＬＴＩＰＬＥ、ＬＯＡＤ  ＡＤＤＲＥＳＳ  ＥＸＴＥＮＤＥＤ、およびＳＥＴ  ＡＣＣＥＳＳ
【０２５１】
上の各命令は、アクセス・レジスタの内容を変更する。ＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令内のＡ制御がゼロである場合、プログラムは、アクセス・レジスタの変更が許可されないことを明示的に示している。
【０２５２】
有効な浮動小数点演算許可（Ｆ）制御がゼロである場合、浮動小数点命令が制限される。
【０２５３】
特定の状況の下では、次の命令が制限されることがある。ＥＸＴＲＡＣＴ  ＣＰＵ  ＴＩＭＥ、ＥＸＴＲＡＣＴ  ＰＳＷ、ＳＴＯＲＥ  ＣＬＯＣＫ、ＳＴＯＲＥ  ＣＬＯＣＫ  ＥＸＴＥＮＤＥＤ、およびＳＴＯＲＥ  ＣＬＯＣＫ  ＦＡＳＴ
【０２５４】
上の各命令は、解釈実行状態記述において、インターセプション制御の対象になる。ハイパーバイザがこれらの命令に対してインターセプション制御を設定した場合、これらの命令の実行は、ハイパーバイザの実装に起因して延長されることがあるため、これらの命令は、インターセプションが発生する場合に制限されると見なされる。
【０２５５】
制限された命令の試みられた実行のために制約なしトランザクションがアボートされた場合、次の場合を除き、トランザクション診断ブロック内のトランザクション・アボート・コードが１１（制限された命令）に設定され、条件コードが３に設定される。アボートしなければ特権命令例外をもたらす可能性のある命令の試みられた実行のために、制約なしトランザクションがアボートされた場合、アボート・コードが１１（制限された命令）または４（特権命令プログラム割り込み（privileged operation program interruption）の認識から生じるフィルタリングされないプログラム割り込み）のいずれに設定されるかは予測不可能である。ＰＲＥＦＥＴＣＨ  ＤＡＴＡ（ＲＥＬＡＴＩＶＥ  ＬＯＮＧ）（Ｍ１フィールド内のコードが６または７である場合）またはＳＴＯＲＥ  ＣＨＡＲＡＣＴＥＲＳ  ＵＮＤＥＲ  ＭＡＳＫ  ＨＩＧＨ（Ｍ３フィールドがゼロで、かつＲ１フィールド内のコードが６または７である場合）の試みられた実行のために、制約なしトランザクションがアボートされた場合、アボート・コードが１１（制限された命令）または１６（キャッシュのその他の条件（cache other））のいずれに設定されるかは予測不可能である。ＭＯＮＩＴＯＲ  ＣＡＬＬの試みられた実行に起因して制約なしトランザクションがアボートされ、監視イベント条件および指定例外条件が存在する場合、アボート・コードが１１または４のいずれに設定されるか、あるいはプログラム割り込みがフィルタリングされる（１２）かどうかは、予測不可能である。
【０２５６】
制約付きトランザクションでは、その他の命令が制限されることがある。それらの命令は、制約なしトランザクションにおいて制限されるとは現在定義されていないが、将来のプロセッサ上の制約なしトランザクションにおける特定の状況の下では、制限されることがある。
【０２５７】
特定の制限された命令は、将来のプロセッサ上のトランザクション実行モードにおいて許可されることがある。したがって、プログラムは、制限された命令の試みられた実行に起因してトランザクションがアボートされることに頼るべきではない。トランザクションを確実にアボートするには、ＴＲＡＮＳＡＣＴＩＯＮ  ＡＢＯＲＴ命令が使用されるべきである。
【０２５８】
制約なしトランザクションでは、プログラムは、制限された命令に起因してアボートするトランザクションに対応するために、代替の非トランザクション・コード経路を提供するべきである。
【０２５９】
動作中に、トランザクション・ネスト深度がゼロである場合、条件コード０をもたらすＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ（ＴＢＥＧＩＮ）命令の実行は、制約なしトランザクション実行モードにＣＰＵを移行させる。トランザクション・ネスト深度がゼロである場合、条件コード０をもたらす制約付きＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ（ＴＢＥＧＩＮＣ）命令の実行は、制約付きトランザクション実行モードにＣＰＵを移行させる。
【０２６０】
特に明示的に注釈されない限り、非トランザクション実行に適用されるすべてのルールは、トランザクション実行にも適用される。ＣＰＵがトランザクション実行モードにある間の処理のその他の特徴を以下に示す。
【０２６１】
ＣＰＵが制約なしトランザクション実行モードにある場合、条件コード０をもたらすＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令の実行は、ＣＰＵを制約なしトランザクション実行モードに留まらせる。
【０２６２】
ＣＰＵによって観察されるように、トランザクション実行モードにおいて行われるフェッチおよび記憶は、トランザクション実行モードではないときに行われるフェッチおよび記憶と異ならない。他のＣＰＵおよびＩ／Ｏサブシステムによって観察されたときに、ＣＰＵがトランザクション実行モードにある間に行われるすべてのストレージ・オペランド・アクセスは、１つのブロック・コンカレント・アクセスであるように見える。つまり、ハーフワード、ワード、ダブルワード、またはクワッドワード内のすべてのバイトへのアクセスは、他のＣＰＵおよびＩ／Ｏ（例えば、チャネル）プログラムによって観察されたときにブロック・コンカレントに見えるように規定される。ハーフワード、ワード、ダブルワード、またはクワッドワードは、このセクションではブロックと呼ばれる。フェッチ・タイプの参照が、ブロック内でコンカレントに見えるように規定された場合、ブロックに格納されたバイトがフェッチされているときに、別のＣＰＵまたはＩ／Ｏプログラムによるこのブロックへの記憶アクセスは許可されない。記憶タイプの参照が、ブロック内でコンカレントに見えるように規定された場合、ブロック内のバイトが記憶されているときに、別のＣＰＵまたはＩ／Ｏプログラムによるこのブロックへのアクセス（フェッチまたは記憶）は許可されない。
【０２６３】
命令およびＤＡＴおよびＡＲＴ（アクセス・レジスタ・テーブル）テーブルのフェッチのストレージ・アクセスは、非トランザクション・ルール（non-transactional rules）に従う。
【０２６４】
ＣＰＵは、トランザクション・ネスト深度をゼロに移行させるＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令、または条件コードをゼロに設定するＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令を用いてトランザクション実行モードを正常に終了し、いずれの場合においても、トランザクションが完了する。
【０２６５】
ＣＰＵが、ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令または条件コードをゼロに設定するＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令の完了によってトランザクション実行モードを終了した場合、トランザクション実行モードにある間に行われたすべての記憶がコミットされる。つまり、記憶は、他のＣＰＵおよびＩ／Ｏサブシステムによって観察されたときに、１つのブロック・コンカレント操作として発生するように見える。
【０２６６】
トランザクションは、さまざまな原因のために暗黙的にアボートされてよく、またはＴＲＡＮＳＡＣＴＩＯＮ  ＡＢＯＲＴ命令によって明示的にアボートされてもよい。以下では、トランザクション・アボートの可能性のある原因の例、対応するアボート・コード、およびトランザクション・アボートＰＳＷに配置される条件コードについて説明する。
【０２６７】
外部割り込み：トランザクション・アボート・コードが２に設定され、トランザクション・アボートＰＳＷ内の条件コードが２に設定される。トランザクション・アボートＰＳＷは、外部割り込み処理の一環として、外部旧ＰＳＷとして記憶される。
【０２６８】
プログラム割り込み（フィルタリングされない）：割り込みをもたらすプログラム割り込み条件（つまり、フィルタリングされない条件）は、コード４に基づいてトランザクションをアボートする。トランザクション・アボートＰＳＷ内の条件コードは、プログラム割り込みコードに固有に設定される。トランザクション・アボートＰＳＷは、プログラム割り込み処理の一環として、プログラム旧ＰＳＷとして記憶される。
【０２６９】
トランザクションが演算例外に起因してアボートされる可能性のある命令は、次のような別の結果を生むことがある。制約なしトランザクションの場合、トランザクションは、代わりにアボート・コード１１（制限された命令）に基づいてアボートされることがあり、制約付きトランザクションの場合、演算例外の代わりに、トランザクション制約プログラム割り込みが認識されることがある。
【０２７０】
任意のその他のフィルタリングされないプログラム例外条件と共にＰＥＲ（プログラム・イベント記録）イベントが認識された場合、条件コードが３に設定される。
【０２７１】
マシン・チェック割り込み：トランザクション・アボート・コードが５に設定され、トランザクション・アボートＰＳＷ内の条件コードが２に設定される。トランザクション・アボートＰＳＷは、マシン・チェック割り込み処理の一環として、マシン・チェック旧ＰＳＷとして記憶される。
【０２７２】
Ｉ／Ｏ割り込み：トランザクション・アボート・コードが６に設定され、トランザクション・アボートＰＳＷ内の条件コードが２に設定される。トランザクション・アボートＰＳＷは、Ｉ／Ｏ割り込み処理の一環として、Ｉ／Ｏ旧ＰＳＷとして記憶される。
【０２７３】
フェッチ・オーバーフロー：フェッチ・オーバーフロー条件は、トランザクションが、ＣＰＵがサポートしている位置よりも多くの位置からフェッチしようとしたときに検出される。トランザクション・アボート・コードが７に設定され、条件コードが２または３に設定される。
【０２７４】
記憶オーバーフロー：記憶オーバーフロー条件は、トランザクションが、ＣＰＵがサポートしている位置よりも多くの位置に記憶しようとしたときに検出される。トランザクション・アボート・コードが８に設定され、条件コードが２または３に設定される。
【０２７５】
フェッチ・オーバーフロー・アボートまたは記憶オーバーフロー・アボートに応答して条件コードが２または３になることができることにより、ＣＰＵは、リトライできる可能性のある状況を示すことができる（例えば、条件コード２は、トランザクションの再実行が有効である場合があることを示し、一方、条件コード３は再実行を推奨しない）。
【０２７６】
フェッチ競合：フェッチ競合条件は、別のＣＰＵまたはＩ／Ｏサブシステムが、このＣＰＵによってトランザクションにおいてフェッチされている位置に記憶しようとしたときに検出される。トランザクション・アボート・コードが９に設定され、条件コードが２に設定される。
【０２７７】
記憶競合：記憶競合条件は、別のＣＰＵまたはＩ／Ｏサブシステムが、このＣＰＵによるトランザクションの実行中に記憶されている位置にアクセスしようとしたときに検出される。トランザクション・アボート・コードが１０に設定され、条件コードが２に設定される。
【０２７８】
制限された命令：ＣＰＵがトランザクション実行モードにある場合、制限された命令の試みられた実行が、トランザクションをアボートする。トランザクション・アボート・コードが１１に設定され、条件コードが３に設定される。
【０２７９】
ＣＰＵが制約付きトランザクション実行モードにある場合、制限された命令の試みられた実行が、トランザクション制約プログラム割り込みまたは制限された命令に起因するアボートのどちらをもたらすかは、予測不可能である。それでも、トランザクションはアボートされるが、アボート・コードはどちらかの原因を示す可能性がある。
【０２８０】
プログラム例外条件（フィルタリングされる）：割り込みをもたらさないプログラム例外条件（つまり、フィルタリングされた条件）は、トランザクション・アボート・コード１２に基づいてトランザクションをアボートする。条件コードは３に設定される。
【０２８１】
ネスト深度超過（Nesting Depth Exceeded）：ネスト深度超過条件は、トランザクション・ネスト深度が構成で許容される最大値であり、かつＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令が実行された場合に検出される。トランザクションが１３のトランザクション・アボート・コードに基づいてアボートされ、条件コードが３に設定される。
【０２８２】
キャッシュ・フェッチ関連条件：トランザクションによってフェッチされる記憶位置に関連する条件は、ＣＰＵのキャッシュ回路によって検出される。トランザクションが１４のトランザクション・アボート・コードに基づいてアボートされ、条件コードが２または３に設定される。
【０２８３】
キャッシュ記憶関連条件：トランザクションによって記憶される記憶位置に関連する条件は、ＣＰＵのキャッシュ回路によって検出される。トランザクションが１５のトランザクション・アボート・コードに基づいてアボートされ、条件コードが２または３に設定される。
【０２８４】
キャッシュのその他の条件：キャッシュのその他の条件は、ＣＰＵのキャッシュ回路によって検出される。トランザクションが１６のトランザクション・アボート・コードに基づいてアボートされ、条件コードが２または３に設定される。
【０２８５】
トランザクション実行中に、ＣＰＵが、同じ絶対アドレスにマッピングされた異なる論理アドレスを使用して命令またはストレージ・オペランドにアクセスした場合、トランザクションがアボートされるかどうかはモデルに依存する。同じ絶対アドレスにマッピングされた異なる論理アドレスを使用したアクセスに起因してトランザクションがアボートされた場合、条件に応じてアボート・コード１４、１５、または１６が設定される。
【０２８６】
ＣＴＥＮＤ負オペランド条件：ＣＴＥＮＤ負オペランド条件は、ＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令が実行され、かつ第２のオペランドの内容が負である場合に認識される。トランザクションが１７のトランザクション・アボート・コードに基づいてアボートされ、条件コードが３に設定される。
【０２８７】
ＣＴＥＮＤタイムアウト条件：ＣＴＥＮＤタイムアウト条件は、ＣＯＮＤＩＴＩＯＮＡＬ  ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ命令の実行が、モデルに依存する制限を超えた場合に認識される。トランザクション・アボート・コードが１８に設定され、条件コードが２に設定される。
【０２８８】
その他の条件：その他の条件は、トランザクションをアボートする、ＣＰＵによって認識される任意のその他の条件である。トランザクション・アボート・コードが２５５に設定され、条件コードが２または３に設定される。
【０２８９】
複数の構成が同じマシン（例えば、論理パーティションまたは仮想マシン）内で実行されている場合、異なる構成において発生した外部のマシン・チェックまたはＩ／Ｏ割り込みに起因してトランザクションがアボートされることがある。
【０２９０】
上では例が提供されたが、対応するアボート・コードおよび条件コードに基づいたトランザクション・アボートのその他の原因が提供されてよい。例えば、原因は再起動割り込みであってよく、再起動割り込みでは、トランザクション・アボート・コードが１に設定され、トランザクション・アボートＰＳＷ内の条件コードが２に設定される。トランザクション・アボートＰＳＷは、再起動処理の一環として、再起動旧ＰＳＷ（restart-old PSW）として記憶される。さらに別の例として、原因はスーパーバイザ呼び出し条件であってよく、スーパーバイザ呼び出し条件では、アボート・コードが３に設定され、トランザクション・アボートＰＳＷ内の条件コードが３に設定される。その他の例または異なる例も可能である。
【０２９１】
注：
【０２９２】
１．その他の条件は、次のいずれかから生じることがある。
【０２９３】
＊  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅにおける、ＣＯＭＰＡＲＥ  ＡＮＤ  ＲＥＰＬＡＣＥ  ＤＡＴ  ＴＡＢＬＥ  ＥＮＴＲＹ、ＣＯＭＰＡＲＥ  ＡＮＤ  ＳＷＡＰ  ＡＮＤ  ＰＵＲＧＥ、ＩＮＶＡＬＩＤＡＴＥ  ＤＡＴ  ＴＡＢＬＥ  ＥＮＴＲＹ、ＩＮＶＡＬＩＤＡＴＥ  ＰＡＧＥ  ＴＡＢＬＥ  ＥＮＴＲＹ、ＰＥＲＦＯＲＭ  ＦＲＡＭＥ  ＭＡＮＡＧＥＭＥＮＴ  ＦＵＮＣＴＩＯＮ（この命令では、ＮＱ制御がゼロ、ＳＫ制御が１である）、ＳＥＴ  ＳＴＯＲＡＧＥ  ＫＥＹ  ＥＸＴＥＮＤＥＤ（この命令では、ＮＱ制御がゼロである）などの、構成内の別のＣＰＵによって実行される命令条件コードは２に設定される。
【０２９４】
＊  リセット、再起動、または停止、あるいは同等のＳＩＧＮＡＬ  ＰＲＯＣＥＳＳＯＲ命令などのオペレータ機能が、ＣＰＵ上で実行される。条件コードは２に設定される。
【０２９５】
＊  上で列挙されない任意のその他の条件；条件コードは２または３に設定される。
【０２９６】
２．フェッチおよび記憶の競合が検出される位置は、同じキャッシュ・ライン内のどの位置であってもよい。
【０２９７】
３．特定の条件下で、ＣＰＵは、類似するアボート条件を区別できないことがある。例えば、フェッチ・オーバーフローはフェッチ競合と区別できず、記憶オーバーフローは記憶競合と区別できないことがある。
【０２９８】
４．ＣＰＵによる複数の命令パスの投機的実行は、競合条件またはオーバーフロー条件が概念的シーケンスにおいて発生しない場合でも、そのような条件に起因してトランザクションをアボートすることがある。ＣＰＵは、制約付きトランザクション実行モードにある間、投機的実行を一時的に禁止してよく、それによってトランザクションは、そのような競合またはオーバーフローを投機的に検出せずに、完了しようとすることができる。
【０２９９】
ＴＲＡＮＳＡＣＴＩＯＮ  ＡＢＯＲＴ命令の実行は、トランザクションをアボートする。トランザクション・アボート・コードは、第２のオペランド・アドレスから設定される。条件コードは、第２のオペランド・アドレスのビット６３が０である場合は２に設定され、第２のオペランド・アドレスのビット６３が１である場合は３に設定される。
【０３００】
図１０は、プログラム・コードがコンピュータ・システムでトランザクションを実行する場合のワークフロー８００を示している。このワークフロー８００は、上で提供されたトランザクションを、さらに説明している。図１０に示されているように、プログラム・コードはトランザクションを開始し、このトランザクションはＴＲＡＮＳＡＣＴＩＯＮ  ＢＥＧＩＮ命令から開始する（８１０）。例えば、制約付きトランザクションは、ＴＢＥＧＩＮＣ命令から開始し、制約なしトランザクションと同様に通常はＴＥＮＤ命令で終了するが、説明したように、多くのシステムによって定義された理由のためにアボートすることがある。プログラム・コードは、ビットなどのトランザクション・インジケータを設定し（８２０）、複数の順次命令をフェッチする（８３０）。プログラム・コードは、命令をデコードし（８４０）、命令を発行し（８５０）、命令を実行する。プログラム・コードが、トランザクションの終了を規定する命令（１つの例では、ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ（ＴＥＮＤ）命令）に達すると（８６０）、プログラム・コードは、結果を保存し（８７０）、トランザクション・インジケータ（例えば、ビット）をリセットする（８８０）。ＴＲＡＮＳＡＣＴＩＯＮ  ＥＮＤ（ＴＥＮＤ）命令が存在しない場合、プログラム・コードは複数の順次命令をフェッチすることに戻る（８３０）。
【０３０１】
図１１は、競合が存在する場合にプログラム・コードがトランザクションをアボートし得る方法の例を示している。図１１に示された問題は、本発明の一部の実施形態の態様によって軽減される。図１１に示されたトランザクションは、競合に基づいてトランザクションをアボートした後にトランザクションを実行しようとするプロセッサの試みによって示されているように、制約付きトランザクションである。図１１を参照すると、プログラム・コードがトランザクションを開始している（９１０）。プログラム・コードが競合を検出した場合（９２０）、プログラム・コードはトランザクションをアボートし（９３０ａ）、異なる時点でトランザクションを実行しようとする（９１０）。プログラム・コードが競合を検出しない場合（９２０）、プログラム・コードはトランザクション内の命令を実行し（９３０ｂ）、その結果を保存する（９４０ｂ）。
【０３０２】
図１２は、特定のトランザクションの完了を保証するために、本発明の特定の実施形態のスーパー・コア・インジケータが使用される、システムの機能の特定の態様を示している。図１２に示されているように、プログラム・コードがトランザクションを開始する（１０１０）。プログラム・コードが競合を検出しない場合（１０２０）、プログラム・コードはトランザクション（すなわち、トランザクション内の命令）を実行し（１０３０）、その結果を保存する（１０４０）。しかし、プログラム・コードが競合を検出した場合（１０２０）、プログラム・コードはスーパー・コア・インジケータをチェックする（１０２５）。前述したように、各コアは、コア、スーパー・コアを指定するため、またはコアがスーパー・コアであるかどうかを決定するため、あるいはその両方を行うためにプログラム・コードが使用するスーパー・コア・ビットを含むが、これに限定されない、インジケータ（例えば、ビット）を含んでよい。スーパー・コア・インジケータが、トランザクションを実行しているプロセッサがスーパー・コアではないということを示している場合、プログラム・コードはトランザクションをアボートし（１０２７）、プログラム・コードはトランザクションを再開しようとする（１０１０）。スーパー・コア・インジケータが、トランザクションを実行しているプロセッサがスーパー・コアであるということを示している場合、プログラム・コードはトランザクションを実行し（１０３０）、その結果を保存し（１０４０）、スーパー・コア・インジケータを消去する（１０５０）。
【０３０３】
コアがスーパー・コアに指定された場合、競合が存在する場合でも（例えば、実行中に、スーパー・コアが、読み取りデータまたは書き込みデータとしてマークが付けられてスーパー・コアのキャッシュに格納されたデータに関する要求を受信した場合でも）、プログラム・コードはトランザクションをアボートしないため、プログラム・コードは制約付きトランザクションの実行を完了する（１０３０）。本発明の一実施形態では、データに関する要求を受信することに応答して、指定されたスーパー・コアは、データに関する要求を無視し、データへのアクセスを提供せず、代わりに、トランザクションが完了するまでトランザクションを実行し続ける。本発明の一実施形態では、プログラム・コードが、トランザクションを実行しているスーパー・コアによって使用されるデータに関する要求を取得した場合、プログラム・コードはこの要求に応答しない。本発明の別の実施形態では、プログラム・コードは、事前に定義された「拒絶応答」を使用して要求に応答する。本発明の別の実施形態では、プログラム・コードは、保留中の要求をキューに入れ、トランザクションが完了した後に、プログラム・コードはそれらの要求に応答するか、またはそれらの要求を満たすか、あるいはその両方を実行する。
【０３０４】
本発明の一実施形態では、プログラム・コードは、トランザクションの実行（１０３０）後に、システムにおいて一度に１つのスーパー・コアのみがアクティブになるように、スーパー・コア・インジケータを消去する（１０５０）。プログラム・コードは、トランザクションの完了でスーパー・コア状態を終了することによって、例えば、この優先的なトランザクション状態を得るように競合している複数のコア間の、「公平性」を保証する。本発明の一実施形態では、プログラム・コードは、各パーティション内で１つのスーパー・コアを有効にする。
【０３０５】
特定の環境内で複数のスーパー・コアが存在するのを防ぐために、本発明の一実施形態は調停サイクルを含み、プログラム・コードは、この調停サイクルを使用して１つのコアをスーパー・コアに変更し、複数の同時要求が複数のコアを同時にスーパー・コアに変更することを防ぐ。本発明の一部の実施形態に含まれているこの調停の態様が、図１３に示されている。
【０３０６】
図１３を参照すると、本発明の一実施形態では、プログラム・コードは、スーパー・コア状態に関する要求をシステム内の調停プログラム・コードから取得する（１１１０）。この要求に基づいて、プログラム・コードはシステム内のスーパー・コア・インジケータをチェックする（１１２０）。スーパー・コアがシステム内にすでに存在する場合、スーパー・コア・インジケータが設定され、調停プログラム・コードが要求を拒絶する（１１３０ａ）。しかし、スーパー・コア状態を示すインジケータを使用して識別できるスーパー・コアがシステム内で設定されていない場合、調停プログラム・コードは、スーパー・コア状態を、この状態を要求したコアに付与し、インジケータを調停コアに設定する（１１３０ｂ）。次に、プログラム・コードは、トランザクションを実行しながらコアを監視する（１１４０ｂ）。スーパー・コアがトランザクションをコミットすることに基づいて、調停プログラム・コードはスーパー・コアを消去する（１１５０ｂ）。調停プログラム・コードは、このインジケータを消去することによって、スーパー・コア状態に対するその後の要求を受信した場合に、システム内のコアがスーパー・コア・インジケータを含んでいないため、この状態を付与できるようになる。
【０３０７】
図１４に示されているように、本発明の一実施形態では、プログラム・コードは、トランザクションがすでに１回または複数回失敗した後に、このトランザクションの完了を保証するために、トランザクションに関連付けられたスーパー・コア値を設定してよい。このようにして、プログラム・コードは、同じトランザクションを繰り返し再実行しようとしてアボートするのを防ぐ。図１４では、プログラム・コードは、トランザクションを開始し（１２１０）、競合が存在することを決定し（１２１５）、競合が存在することの決定に基づいて、トランザクションを実行しているコアに関連付けられたスーパー・コア・インジケータが存在するかどうかを決定する（１２２０）。前述したように、スーパー・コア・インジケータが存在する場合、プログラム・コードはトランザクションを完了し（１２３０ａ）、スーパー・コア・インジケータを消去する（１２４０ａ）。スーパー・コア・インジケータが、このトランザクションを実行しているコアに関連付けられていない場合、プログラム・コードはトランザクションをアボートし（１２３０ｂ）、トランザクションのアボートに基づいて、プログラム・コードは、トランザクションに関連付けられたスーパー・コア値を変更する（１２４０ｂ）。本発明の一実施形態では、プログラム・コードは、スーパー・コア値を設定することによって、トランザクションに関連付けられたスーパー・コア値を変更する。本発明の別の実施形態では、プログラム・コードは、失敗したトランザクションごとにスーパー・コア値をインクリメントすることによって、スーパー・コア値を変更する。本発明の一部の実施形態では、スーパー・コアになる資格を得るために、スーパー・コア値が事前に決定されたしきい値に達する必要がある。本発明の一実施形態では、この値は１である。別の実施形態では、この値は１よりも大きい数である。一実施形態では、スーパー・コア値はプログラム・コードによって設定される。別の実施形態では、この値は、コンピュータ・システムのハードウェア要素またはソフトウェア要素あるいはその両方において設定して、ハードコードされる。したがって、コアがこのトランザクションを再実行しようとするときに、トランザクションは完了することが保証される。スーパー・コア値の設定は、図１５でさらに説明される。
【０３０８】
本発明の一実施形態では、トランザクションが失敗するたびに、プログラム・コードは、このトランザクションに関連付けられたスーパー・コア値を１ずつインクリメントしてよい。図１５に示されているように、プログラム・コードはトランザクションを開始し、トランザクションを開始する一環として、トランザクションに関連付けられたスーパー・コア値を取得して、このスーパー・コア値がしきい値以上であるかどうかを決定する（１３１０）。本発明の一実施形態では、このしきい値は、事前に定義されるか、ハードコードされるか、あるいは静的または動的に構成可能であってよい。スーパー・コア値がしきい値以上であるという決定に基づいて、プログラム・コードは、トランザクションを実行しているコアのスーパー・コア状態を要求する（１３２０）。プログラム・コードは、スーパー・コア状態を（使用可能になった後に）取得し、プログラム・コードはコア内のスーパー・コア・インジケータを設定する（１３３０）。
【０３０９】
図１６は、本発明の一部の実施形態の一部の態様を示すワークフロー１４００である。本発明の一実施形態では、プロセッサがトランザクションの実行を開始し、このプロセッサはトランザクション・コアを備え、トランザクションの実行はこのトランザクション・コアによって行われる（１４１０）。本発明の一実施形態では、トランザクションは制約付きトランザクションである（１４１２）。
【０３１０】
プロセッサは、トランザクション・コアによるトランザクションの実行と同時に、トランザクションと、コンピューティング環境内のその他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の表れを取得する（１４２０）。本発明の一実施形態では、表れは、トランザクションの実行中にトランザクション・コアによって使用されているデータに関連するその他のコアからの要求を含む（１４２２）。この実施形態では、このデータは、トランザクション・コアのキャッシュに配置されてよく、読み取りデータまたは書き込みデータとしてマークが付けられる（１４２４）。本発明の一実施形態では、プロセッサは要求をキューに入れ、トランザクションの実行の完了に基づいて、プロセッサは、データへのアクセスをその他のコアに提供することによって要求を満たす（１４２６）。
【０３１１】
本発明の一実施形態では、プロセッサは、トランザクション・コアがインジケータを備えているかどうかを決定する（１４３０）。
【０３１２】
トランザクション・コアがインジケータを備えているという決定に基づいて、プロセッサは競合を無視し、トランザクション・コアを使用してトランザクションの実行を完了する（１４４０ａ）。表れが、トランザクションの実行中にトランザクション・コアによって使用されているデータに関連するその他のコアからの要求を含んでいる、本発明の一実施形態では、無視することは、プロセッサがデータへのその他のコアのアクセスを拒否することを含んでよい（１４４２）。
【０３１３】
本発明の一実施形態では、プロセッサは、トランザクション・コアによるトランザクションの実行を監視し（１４５０）、トランザクション・コアがトランザクションをコミットすることによって実行を完了することに基づいて、プロセッサはインジケータを消去する（１４６０）。
【０３１４】
本発明の一実施形態では、プロセッサは、インジケータに関する要求をトランザクション・コアから取得する（１４０２）。プロセッサは、スーパー・コア状態が使用可能であるかどうかを決定する（１４０４）。スーパー・コア状態が使用可能であるという決定に基づいて、プロセッサはトランザクション・コアを変更し、インジケータを提供する（１４０６）。
【０３１５】
本発明の一実施形態では、トランザクション・コアがインジケータを備えていないという決定に基づいて、プロセッサはトランザクションをアボートする（１４４１）。プロセッサは、トランザクションに関連付けられた値をインクリメントする（１４４３）。
【０３１６】
本発明の一実施形態では、プロセッサは、トランザクションに関連付けられた値を取得し（１４４５）、プロセッサはこの値を評価して、この値がしきい値を満たしているかどうかを決定する（１４４７）。この値がしきい値を満たしているという決定に基づいて、プロセッサはトランザクション・コアのインジケータを要求する（１４４９）。プロセッサは、スーパー・コア状態が使用可能であるかどうかを決定する（１４０４）。スーパー・コア状態が使用可能であるという決定に基づいて、プロセッサはトランザクション・コアを変更し、インジケータを提供する（１４０６）。
【０３１７】
本発明の一実施形態では、プロセッサは、コンピューティング環境内のコアにアクセスして、しきい値の数のコアがインジケータを備えているかどうかを決定することと（１４０５）、インジケータを備えているコアの数がしきい値未満であることに基づいて、スーパー・コア状態が使用可能であると決定することと（１４０７）によって、スーパー・コア状態が使用可能であると決定する。
【０３１８】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはこれらの組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいる１つまたは複数のコンピュータ可読記憶媒体を含んでよい。
【０３１９】
図１７を参照すると、１つの例では、コンピュータ・プログラム製品１２００は、１つまたは複数の実施形態を提供して容易にするために、例えば、コンピュータ可読プログラム・コードの手段、論理、または命令、あるいはその組み合わせ１２０４を記憶するための１つまたは複数の非一時的コンピュータ可読記憶媒体１２０２を含む。
【０３２０】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されているコンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一時的信号であると解釈されるべきではない。
【０３２１】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【０３２２】
本発明の処理を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide area network）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【０３２３】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【０３２４】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように表れできるものであってもよい。
【０３２５】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータ実装プロセスを作り出すべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラム可能な装置、またはその他のデバイス上で、一連の動作可能なステップを実行させるものであってもよい。
【０３２６】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および処理を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、指定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令を組み合わせて実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【０３２７】
上に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、１つまたは複数の態様が提供されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、１人または複数人の顧客のために１つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約の下で、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、１つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
【０３２８】
１つの態様では、１つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。１つの例として、アプリケーションのデプロイは、１つまたは複数の実施形態を実行するよう機能するコンピュータ・インフラストラクチャを提供することを含む。
【０３２９】
さらに別の態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、１つまたは複数の実施形態を実行できる。
【０３３０】
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が１つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、１つまたは複数の実施形態を実行できる。
【０３３１】
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、１つまたは複数の実施形態を組み込んで使用するために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、異なる命令、命令形式、命令フィールド、または命令値、あるいはその組み合わせが使用されてよい。さらに、アボート・コードおよび条件コードの値の例が提供されたが、他の値が使用されてよい。さらに、異なる制限／制約、他の制限／制約、または追加の制限／制約、あるいはその組み合わせが提供／使用されてよい。さらに、他の間隔が異なる方法で提供されること、または使用されること、あるいはその両方が行われてよい。多くの変形が可能である。
【０３３２】
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。一例として、プログラム・コードの記憶または実行あるいはその両方を行うのに適したデータ処理システムを使用することができ、このデータ処理システムは、システムバスを介して直接的または間接的にメモリ素子に結合された少なくとも２つのプロセッサを含む。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリと、バルク・ストレージと、実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に記憶するキャッシュ・メモリとを含む。
【０３３３】
入出力デバイスまたはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、およびその他の記憶媒体などを含むが、これらに限定されない）は、直接的に、または介在するＩ／Ｏコントローラを通じて、システムに結合できる。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット（Ｒ）・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
【０３３４】
図１８を参照すると、１つまたは複数の実施形態を実装するためのホスト・コンピュータ・システム５０００の代表的コンポーネントが示されている。代表的ホスト・コンピュータ５０００は、コンピュータ・メモリ（すなわち、中央記憶装置）５００２と通信する１つまたは複数のＣＰＵ５００１と、記憶媒体デバイス５０１１および他のコンピュータまたはＳＡＮなどと通信するためのネットワーク５０１０へのＩ／Ｏインターフェイスとを備える。ＣＰＵ５００１は、設計済み命令セットおよび設計済み機能を含んでいるアーキテクチャに準拠している。ＣＰＵ５００１は、アクセス・レジスタ変換（ＡＲＴ：access register translation）５０１２を含んでよく、このアクセス・レジスタ変換は、プログラム・アドレス（仮想アドレス）をメモリの実アドレスに変換するために動的アドレス変換（ＤＡＴ）５００３によって使用されるアドレス空間を選択するために、ＡＲＴ索引バッファ（ＡＬＢ：ART lookaside buffer）５０１３を含む。ＤＡＴは、後のコンピュータ・メモリ５００２のブロックへのアクセスがアドレス変換の遅延を必要としないように、変換をキャッシュするために、変換索引バッファ（ＴＬＢ：translation lookaside buffer）５００７を通常は含む。通常は、キャッシュ５００９は、コンピュータ・メモリ５００２とプロセッサ５００１の間で採用される。キャッシュ５００９は、２つ以上のＣＰＵに使用できる大きいキャッシュ、および大きいキャッシュと各ＣＰＵの間の小さい高速の（下位レベルの）キャッシュを含んで、階層的であってよい。一部の実装例では、下位レベルのキャッシュは、命令のフェッチおよびデータ・アクセスのための個別の下位レベル・キャッシュを提供するように、分割される。一実施形態では、ＴＸ機能の場合、トランザクション診断ブロック（ＴＤＢ）５１００および１つまたは複数のバッファ５１０１が、キャッシュ５００９およびメモリ５００２のうちの１つまたは複数に記憶されてよい。１つの例では、ＴＸモードでは、データは最初にＴＸバッファに記憶され、ＴＸモードが終了したときに（例えば、最外ＴＥＮＤ）、バッファ内のデータはメモリに記憶（コミット）されるか、またはアボートが存在する場合は、バッファ内のデータは破棄される。
【０３３５】
一実施形態では、命令は、キャッシュ５００９を介して命令フェッチ・ユニット５００４によってメモリ５００２からフェッチされる。命令は、命令デコード・ユニット５００６においてデコードされて、（一部の実施形態では、他の命令と共に）命令実行ユニット５００８にディスパッチされる。通常は、複数の実行ユニット５００８（例えば、演算実行ユニット、浮動小数点実行ユニット、および分岐命令実行ユニット）が採用される。さらに、ＴＸ機能の一実施形態では、さまざまなＴＸ制御５１１０が採用されてよい。命令は、実行ユニットによって実行され、必要に応じて、命令によって規定されたレジスタまたはメモリからオペランドにアクセスする。オペランドがメモリ５００２からアクセスされる（読み込まれるか、または記憶される）場合、読み込み／記憶ユニット５００５は、通常、実行されている命令の制御下でアクセスを処理する。命令は、ハードウェア回路で実行されるか、または内部マイクロコード（ファームウェア）で実行されるか、あるいはその両方の組み合わせによって実行されてよい。
【０３３６】
ＴＸ機能の態様に従って、プロセッサ５００１は、ＰＳＷ５１０２（例えば、ＴＸまたはアボートＰＳＷあるいはその両方）、ネスト深度５１０４、ＴＤＢＡ５１０６、および１つまたは複数の制御レジスタ５１０８も含む。
【０３３７】
前述したように、コンピュータ・システムは、アドレス指定、保護、ならびに参照および変更の記録に加えて、情報を局所記憶装置（または主記憶装置）に含める。アドレス指定の一部の態様は、アドレスの形式、アドレス空間の概念、さまざまなタイプのアドレス、およびあるタイプのアドレスを別のタイプのアドレスに変換する方法を含む。主記憶装置の一部は、永続的に割り当てられた記憶位置を含む。主記憶装置は、直接アドレス指定可能な高速アクセスのデータ記憶部をシステムに提供する。データとプログラムの両方が、処理され得る前に主記憶装置に（入力デバイスから）読み込まれる。
【０３３８】
主記憶装置は、１つまたは複数のより小さい高速アクセス・バッファ・ストレージ（しばしば、キャッシュと呼ばれる）を含んでよい。キャッシュは、通常、ＣＰＵまたはＩ／Ｏプロセッサに物理的に関連付けられる。物理的構築および個別の記憶媒体の使用の、性能に関する以外の影響は、通常はプログラムによって観察できない。
【０３３９】
命令のため、およびデータ・オペランドのための別々のキャッシュが維持されてよい。キャッシュ内の情報は、キャッシュ・ブロックまたはキャッシュ・ライン（または、略してライン）と呼ばれる整数境界上の連続するバイト内で維持される。モデルは、キャッシュ・ラインのサイズをバイト単位で返すＥＸＴＲＡＣＴ  ＣＡＣＨＥ  ＡＴＴＲＩＢＵＴＥ命令を提供してよい。モデルは、データ・キャッシュまたは命令キャッシュへのストレージのプリフェッチまたはキャッシュからのデータの解放を実行するＰＲＥＦＥＴＣＨ  ＤＡＴＡ命令およびＰＲＥＦＥＴＣＨ  ＤＡＴＡ  ＲＥＬＡＴＩＶＥ  ＬＯＮＧ命令を提供してもよい。
【０３４０】
ストレージは、長い水平なビット列と見なされる。ほとんどの処理の場合、ストレージへのアクセスは左から右の順に進む。ビット列は、８ビットの単位にさらに分割される。８ビットの単位はバイトと呼ばれ、すべての情報形式の基本的な構成要素である。ストレージ内の各バイト位置は、そのバイト位置のアドレス（または単に、バイト・アドレス）である、一意の非負整数によって識別される。隣接するバイト位置は、連続するアドレスを有し、左端の０から開始して、左から右の順に進む。アドレスは、符号なし２進整数であり、２４ビット、３１ビット、または６４ビットである。
【０３４１】
情報は、ストレージとＣＰＵまたはチャネル・サブシステムとの間で、一度に１バイトまたはバイトのグループとして送信される。特に規定されない限り、例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、ストレージ内のバイトのグループは、グループの左端のバイトによってアドレス指定される。グループ内のバイトの数は、暗示されるか、または実行される処理によって明示的に規定される。ＣＰＵ処理で使用される場合、バイトのグループはフィールドと呼ばれる。例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、バイトの各グループ内のビットには、左から右の順に番号が付けられる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、左端のビットはしばしば「上位」ビットと呼ばれ、右端のビットは「下位」ビットと呼ばれる。ただし、ビット番号はストレージ・アドレスではない。バイトのみがアドレス指定され得る。ストレージ内のバイトの個別のビットを操作するために、バイト全体がアクセスされる。バイト内のビットには、（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは）左から右に、０〜７の番号が付けられる。アドレス内のビットは、２４ビット・アドレスの場合、８〜３１または４０〜６３の番号が付けられてよく、３１ビット・アドレスの場合、１〜３１または３３〜６３の番号が付けられてよい。６４ビット・アドレスの場合、アドレス内のビットには、０〜６３の番号が付けられる。１つの例では、ビット８〜３１および１〜３１は、３２ビット幅の位置（例えば、レジスタ）にあるアドレスに適用され、一方、ビット４０〜６３および３３〜６３は、６４ビット幅の位置にあるアドレスに適用される。複数バイトの任意のその他の固定長形式内で、形式を構成するビットには、０から始まる番号が連続的に付けられる。エラー検出の目的で、好ましくは修正のために、１つまたは複数のチェック・ビットが、各バイトまたはバイトのグループと共に送信されてよい。そのようなチェック・ビットは、マシンによって自動的に生成され、プログラムによって直接制御することはできない。記憶容量は、バイト数で表される。ストレージ・オペランド・フィールドの長さが命令のオペコードによって暗示される場合、フィールドは固定長を有すると言われ、固定長は、１バイト、２バイト、４バイト、８バイト、または１６バイトであることができる。一部の命令では、さらに大きいフィールドが暗示されてよい。ストレージ・オペランド・フィールドの長さが暗示されず、明示的に規定される場合、フィールドは可変長を有すると言われる。可変長オペランドの長さは、１バイト（または、一部の命令では、２バイトの倍数またはその他の倍数）のインクリメントによって変化させることができる。情報がストレージに配置された場合、ストレージへの物理的パスの幅が、記憶されるフィールドの長さよりも大きい場合でも、指定されたフィールドに含まれているバイト位置のみの内容が置換される。
【０３４２】
情報の特定の単位は、ストレージ内の整数境界上に存在する。ストレージ・アドレスがバイト単位の長さの倍数である場合、情報の単位の境界は整数と呼ばれる。整数境界上の２バイト、４バイト、８バイト、１６バイト、３２バイトのフィールドには、特殊な名前が与えられる。ハーフワードは、２バイト境界上の２つの連続するバイトのグループであり、命令の基本的な構成要素である。ワードは、４バイト境界上の４つの連続するバイトのグループである。ダブルワードは、８バイト境界上の８つの連続するバイトのグループである。クワッドワードは、１６バイト境界上の１６個の連続するバイトのグループである。オクトワードは、３２バイト境界上の３２個の連続するバイトのグループである。ストレージ・アドレスは、ハーフワード、ワード、ダブルワード、クワッドワード、およびオクトワードを指定し、アドレスの２進表現はそれぞれ、１つ、２つ、３つ、４つ、または５つの右端のゼロ・ビットを含む。命令は、２バイト整数境界上にある。ほとんどの命令のストレージ・オペランドには、境界合わせ要件がない。
【０３４３】
命令およびデータ・オペランドのために別々のキャッシュを実装するデバイスでは、プログラムがあるキャッシュ・ラインに記憶され、その後、そのキャッシュ・ラインから命令がフェッチされる場合、記憶部が後でフェッチされる命令を変更するかどうかにかかわらず、大幅な遅延が発生することがある。
【０３４４】
１つの例では、実施形態はソフトウェア（しばしば、ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどと呼ばれ、これらのいずれかが、１つまたは複数の実施形態と一致する）によって実践されてよい。図１７を参照すると、１つまたは複数の態様を具現化するソフトウェア・プログラム・コードは、ＣＤ−ＲＯＭドライブ、テープ・ドライブ、またはハード・ドライブなどの長期記憶媒体デバイス５０１１から、ホスト・システム５０００のプロセッサ５００１によってアクセスされてよい。ソフトウェア・プログラム・コードは、データ処理システムで使用するために、ディスケット、ハード・ドライブ、またはＣＤ−ＲＯＭなどの、さまざまな既知の媒体のいずれかで具現化されてよい。コードは、そのような媒体で配布されてよく、またはネットワーク５０１０を経由してあるコンピュータ・システムのコンピュータ・メモリ５００２またはストレージから他のコンピュータ・システムへ、そのような他のシステムのユーザによって使用されるために、ユーザに配布されてよい。
【０３４５】
ソフトウェア・プログラム・コードは、さまざまなコンピュータ・コンポーネントおよび１つまたは複数のアプリケーション・プログラムの機能および相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常は、記憶媒体デバイス５０１１から相対的に高速なコンピュータ・ストレージ５００２にページングされ、コンピュータ・ストレージ５００２において、プロセッサ５００１によって処理するために使用可能になる。ソフトウェア・プログラム・コードを、メモリ内、物理的媒体上で具現化するため、またはネットワークを介してソフトウェア・コードを配布するため、あるいはその両方を行うための手法および方法は、よく知られており、本明細書では詳細に説明されない。プログラム・コードは、作成されて有形の媒体（電子的メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ：Compact Discs）、ＤＶＤ、磁気テープなどを含むが、これらに限定されない）に記憶された場合、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品の媒体は、処理回路によって実行するために、好ましくはコンピュータ・システム内の処理回路によって、通常は読み取り可能である。
【０３４６】
図１９は、１つまたは複数の実施形態が実践されてよい代表的なワークステーションまたはサーバ・ハードウェア・システムを示している。図１９のシステム５０２０は、オプションの周辺機器を含むパーソナル・コンピュータ、ワークステーション、またはサーバなどの、代表的なベース・コンピュータ・システム５０２１を含んでいる。ベース・コンピュータ・システム５０２１は、１つまたは複数のプロセッサ５０２６と、既知の手法に従ってプロセッサ５０２６とシステム５０２１の他のコンポーネントの間の通信を接続して有効にするために採用されたバスとを含んでいる。バスは、プロセッサ５０２６を、メモリ５０２５と、例えばハード・ドライブ（例えば、磁気媒体、ＣＤ、ＤＶＤ、およびフラッシュ・メモリのいずれかを含む）またはテープ・ドライブを含むことができる長期記憶装置５０２７とに接続する。システム５０２１は、ユーザ・インターフェイス・アダプタを含んでもよく、このユーザ・インターフェイス・アダプタは、バスを介してマイクロプロセッサ５０２６を、キーボード５０２４、マウス５０２３、プリンタ／スキャナ５０３０、または任意のユーザ・インターフェイス・デバイスであることができるその他のインターフェイス・デバイス（タッチ・センサ式画面、ディジタイズ入力パッドなど）、あるいはその組み合わせなどの、１つまたは複数のインターフェイス・デバイスに接続する。また、バスは、ＬＣＤ画面またはモニタなどのディスプレイ・デバイス５０２２を、ディスプレイ・アダプタを介してマイクロプロセッサ５０２６に接続する。
【０３４７】
システム５０２１は、ネットワーク５０２９と通信（５０２８）できるネットワーク・アダプタを経由して、他のコンピュータまたはコンピュータのネットワークと通信してよい。ネットワーク・アダプタの例は、通信チャネル、トークン・リング、イーサネット（Ｒ）、またはモデムである。あるいは、システム５０２１は、ＣＤＰＤ（セルラー・デジタル・パケット・データ：cellular digital packet data）カードなどの無線インターフェイスを使用して通信してよい。システム５０２１は、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）内のそのような他のコンピュータに関連付けられてよく、またはシステム５０２１は、別のコンピュータなどを含むクライアント／サーバ配置内のクライアントであることができる。これらすべての構成、ならびに適切な通信ハードウェアおよびソフトウェアは、従来技術において知られている。
【０３４８】
図２０は、１つまたは複数の実施形態が実践されてよいデータ処理ネットワーク５０４０を示している。データ処理ネットワーク５０４０は、無線ネットワークおよび有線ネットワークなどの、複数の個別のネットワークを含んでよく、各ネットワークは、複数の個別のワークステーション５０４１、５０４２、５０４３、５０４４を含んでよい。さらに、当業者が理解するように、１つまたは複数のＬＡＮが含まれてよく、ＬＡＮはホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含んでよい。
【０３４９】
引き続き図２０を参照すると、ネットワークは、ゲートウェイ・コンピュータ（クライアント・サーバ５０４６）またはアプリケーション・サーバ（データ・リポジトリにアクセスしてよく、ワークステーション５０４５から直接アクセスされてもよいリモート・サーバ５０４８）などの、メインフレーム・コンピュータまたはサーバを含んでもよい。ゲートウェイ・コンピュータ５０４６は、個々のネットワークへの入り口として機能する。ゲートウェイは、あるネットワーク・プロトコルを別のネットワーク・プロトコルに接続する場合に必要になる。ゲートウェイ５０４６は、好ましくは、通信リンクを用いて別のネットワーク（例えば、インターネット５０４７）に結合されてよい。ゲートウェイ５０４６は、通信リンクを使用して、１つまたは複数のワークステーション５０４１、５０４２、５０４３、５０４４に直接結合されてもよい。ゲートウェイ・コンピュータは、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎから提供されているＩＢＭ  ｅＳｅｒｖｅｒ  Ｓｙｓｔｅｍ  ｚサーバを使用して実装されてよい。
【０３５０】
図１９および２０を同時に参照すると、１つまたは複数の態様を具現化できるソフトウェア・プログラム・コード５０３１は、ＣＤ−ＲＯＭドライブまたはハード・ドライブなどの長期記憶媒体５０２７から、システム５０２０のプロセッサ５０２６によってアクセスされてよい。ソフトウェア・プログラム・コードは、データ処理システムで使用するために、ディスケット、ハード・ドライブ、またはＣＤ−ＲＯＭなどの、さまざまな既知の媒体のいずれかで具現化されてよい。コードは、そのような媒体で配布されてよく、またはネットワークを経由してあるコンピュータ・システムのメモリまたはストレージから他のコンピュータ・システムへ、そのような他のシステムのユーザによって使用されるために、ユーザ５０５０、５０５１に配布されてよい。
【０３５１】
あるいは、プログラム・コードは、メモリ５０２５内で具現化され、プロセッサ・バスを使用してプロセッサ５０２６によってアクセスされてよい。そのようなプログラム・コードは、さまざまなコンピュータ・コンポーネントおよび１つまたは複数のアプリケーション・プログラム５０３２の機能および相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常は、記憶媒体デバイス５０２７から高速メモリ５０２５にページングされ、高速メモリ５０２５において、プロセッサ５０２６によって処理するために使用可能になる。ソフトウェア・プログラム・コードを、メモリ内、物理的媒体上で具現化するため、またはネットワークを介してソフトウェア・コードを配布するため、あるいはその両方を行うための手法および方法は、よく知られており、本明細書では詳細に説明されない。プログラム・コードは、作成されて有形の媒体（電子的メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ：Compact Discs）、ＤＶＤ、磁気テープなどを含むが、これらに限定されない）に記憶された場合、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品の媒体は、処理回路によって実行するために、好ましくはコンピュータ・システム内の処理回路によって、通常は読み取り可能である。
【０３５２】
最も容易にプロセッサで使用できるキャッシュ（通常は、プロセッサの他のキャッシュよりも高速で小さい）は、最下位レベル（Ｌ１またはレベル１）のキャッシュであり、主記憶部（メイン・メモリ）は、最上位レベルのキャッシュ（３つのレベルが存在する場合は、Ｌ３）である。最下位レベルのキャッシュは、多くの場合、実行される機械命令を保持する命令キャッシュ（Ｉキャッシュ）およびデータ・オペランドを保持するデータ・キャッシュ（Ｄキャッシュ）に分割される。
【０３５３】
図２１を参照すると、プロセッサの実施形態例が、プロセッサ５０２６に対して示されている。プロセッサの性能を向上させるために、通常は１つまたは複数のレベルのキャッシュ５０５３が採用されて、メモリ・ブロックをバッファする。キャッシュ５０５３は、使用される可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。標準的なキャッシュ・ラインは、メモリ・データの６４バイト、１２８バイト、または２５６バイトである。命令をキャッシュするため、およびデータをキャッシュするために、多くの場合、別々のキャッシュが採用される。従来技術においてよく知られたさまざまな「スヌープ」アルゴリズムによって、キャッシュ・コヒーレンス（メモリおよびキャッシュ内のラインのコピーの同期）がしばしば提供される。プロセッサ・システムのメイン・メモリ・ストレージ５０２５は、多くの場合、キャッシュと呼ばれる。４つのレベルのキャッシュ５０５３を含んでいるプロセッサ・システムでは、主記憶装置５０２５は、通常は高速であり、コンピュータ・システムで使用できる不揮発性記憶装置（ＤＡＳＤ、テープなど）の一部のみを保持するため、しばしばレベル５（Ｌ５）のキャッシュと呼ばれる。主記憶装置５０２５は、オペレーティング・システムによって主記憶装置５０２５内へページングされるデータおよび主記憶装置５０２５から外へページングされるデータのページを「キャッシュ」する。
【０３５４】
プログラム・カウンタ（命令カウンタ）５０６１は、実行される現在の命令のアドレスを追跡する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサでは、プログラム・カウンタは６４ビットであり、以前のアドレス指定制限をサポートするために、３１ビットまたは２４ビットに切り詰められ得る。プログラム・カウンタは、コンテキスト切り替え時に持続するように、通常はコンピュータのＰＳＷ（プログラム状態ワード）内で具現化される。したがって、プログラム・カウンタ値を含んでいる進行中のプログラムは、例えばオペレーティング・システム（プログラム環境からオペレーティング・システム環境へのコンテキスト切り替え）によって中断されることがある。プログラムのＰＳＷは、プログラムがアクティブでない間、プログラム・カウンタ値を維持し、オペレーティング・システムの（ＰＳＷ内の）プログラム・カウンタは、オペレーティング・システムの実行中に使用される。通常、プログラム・カウンタは、現在の命令のバイト数に等しい数だけインクリメントされる。ＲＩＳＣ（Reduced Instruction Set Computing）命令は、通常、固定長であるが、ＣＩＳＣ（Complex Instruction Set Computing）命令は、通常、可変長である。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの命令は、２バイト、４バイト、または６バイトの長さを有するＣＩＳＣ命令である。プログラム・カウンタ５０６１は、例えば、コンテキスト切り替え処理、または分岐命令の分岐実行処理（branch taken operation）のいずれかによって変更される。コンテキスト切り替え処理では、現在のプログラム・カウンタ値は、実行されているプログラムに関する他の状態情報（条件コードなど）と共にプログラム状態ワードに保存され、実行される新しいプログラム・モジュールの命令を指す新しいプログラム・カウンタ値が読み込まれる。分岐実行処理は、分岐命令の結果をプログラム・カウンタ５０６１に読み込むことによって、プログラムが決定を行うか、またはプログラム内でループできるようにするために実行される。
【０３５５】
通常は、プロセッサ５０２６の代わりに命令をフェッチするために、命令フェッチ・ユニット５０５５が採用される。フェッチ・ユニットは、「次の順次命令」、分岐実行命令のターゲットの命令、またはコンテキスト切り替えの後のプログラムの最初の命令のいずれかをフェッチする。最新の命令フェッチ・ユニットは、多くの場合、プリフェッチ手法を採用しており、プリフェッチされた命令が使用される可能性に基づいて、命令を投機的にプリフェッチする。例えば、フェッチ・ユニットは、次の順次命令を含んでいる命令の１６バイト、および以降の順次命令の追加バイトをフェッチしてよい。
【０３５６】
その後、フェッチされた命令は、プロセッサ５０２６によって実行される。一実施形態では、フェッチされた命令はフェッチ・ユニットのディスパッチ・ユニット５０５６に渡される。ディスパッチ・ユニットは、命令をデコードし、デコードされた命令に関する情報を、適切なユニット５０５７、５０５８、５０６０に転送する。実行ユニット５０５７は、通常、デコードされた算術命令に関する情報を命令フェッチ・ユニット５０５５から受信し、命令のオペコードに従ってオペランドに対して算術演算を実行する。オペランドは、好ましくは、メモリ５０２５、設計済みレジスタ５０５９から、または実行されている命令の即時フィールドから、実行ユニット５０５７に提供される。実行の結果は、記憶される場合、メモリ５０２５、レジスタ５０５９に、または他のマシンのハードウェア（制御レジスタ、ＰＳＷレジスタなど）に記憶される。
【０３５７】
仮想アドレスは、動的アドレス変換５０６２を使用し、必要に応じてアクセス・レジスタ変換５０６３を使用して、実アドレスに変換される。
【０３５８】
プロセッサ５０２６は、命令の機能を実行するために、通常は１つまたは複数のユニット５０５７、５０５８、５０６０を含む。図２２を参照すると、実行ユニット５０５７は、インターフェイス論理５０７１を経由して、設計済み汎用レジスタ５０５９、デコード／ディスパッチ・ユニット５０５６、読み込み記憶ユニット５０６０、およびその他のプロセッサ・ユニット５０６５と通信（５０７１）してよい。実行ユニット５０５７は、算術論理演算ユニット（ＡＬＵ：arithmetic logic unit）５０６６が操作する情報を保持するために、複数のレジスタ回路５０６７、５０６８、５０６９を採用してよい。ＡＬＵは、加算、減算、乗算、および除算などの算術演算と、ＡＮＤ、ＯＲ、および排他的ＯＲ（ＸＯＲ）などの論理関数と、ローテートと、シフトとを実行する。好ましくは、ＡＬＵは、設計に依存する特殊な演算をサポートする。その他の回路は、例えば条件コードおよび回復支援論理を含むその他の設計済み機能５０７２を提供してよい。通常、ＡＬＵの演算の結果は出力レジスタ回路５０７０に保持され、出力レジスタ回路５０７０は、この結果をさまざまな他の処理機能に転送できる。プロセッサ・ユニットの多くの配置が存在し、本説明は、一実施形態の代表的な理解を提供することのみを目的としている。
【０３５９】
例えばＡＤＤ命令は、算術論理演算機能を備えている実行ユニット５０５７で実行され、一方、例えば浮動小数点命令は、特殊な浮動小数点機能を備えている浮動小数点実行ユニットで実行される。好ましくは、実行ユニットは、オペコードによって定義された機能をオペランドに対して実行することによって、命令によって識別されたオペランドを操作する。例えば、ＡＤＤ命令は、実行ユニット５０５７によって、命令のレジスタ・フィールドによって識別された２つのレジスタ５０５９にあるオペランドに対して実行されてよい。
【０３６０】
実行ユニット５０５７は、２つのオペランドに対して加算を実行し、その結果を第３のオペランドに格納し、第３のオペランドは、第３のレジスタまたは２つのソース・レジスタのうちの１つであってよい。実行ユニットは、好ましくは、シフト、ローテート、ＡＮＤ、ＯＲ、およびＸＯＲなどのさまざまな論理関数、ならびに加算、減算、乗算、除算のいずれかを含むさまざまな代数関数を実行できる算術論理演算ユニット（ＡＬＵ）５０６６を使用する。一部のＡＬＵ５０６６はスカラー演算用に設計され、一部のＡＬＵ５０６６は浮動小数点用に設計される。データは、アーキテクチャに応じて、ビッグ・エンディアン（最下位バイトが最も大きいバイト・アドレスにある）またはリトル・エンディアン（最上位バイトが最も小さいバイト・アドレスにある）であってよい。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅはビッグ・エンディアンである。符号付きフィールドは、符号および大きさであってよく、アーキテクチャに応じて１の補数または２の補数であってよい。２の補数では、負値または正値がＡＬＵ内で加算のみを必要とするため、２の補数は、ＡＬＵで減算機能を設計する必要がないという点において有利である。数値は、一般に省略して記述され、例えば、１２ビット・フィールドは４，０９６バイト・ブロックのアドレスを定義するが、一般に、４キロバイト・ブロックとして記述される。
【０３６１】
図２３を参照すると、分岐命令を実行するための分岐命令情報は、通常、分岐ユニット５０５８に送信され、分岐ユニット５０５８は、多くの場合、他の条件付き演算が完了する前に分岐の結果を予測するために、分岐履歴テーブル５０８２などの分岐予測アルゴリズムを採用する。現在の分岐命令のターゲットは、条件付き演算が完了する前に、フェッチされて投機的に実行される。条件付き演算が完了したときに、投機的に実行された分岐命令は、条件付き演算の条件および投機的実行の結果に基づいて、完了するか、または破棄される。標準的な分岐命令は、条件コードをテストし、条件コードが分岐命令の分岐要件を満たす場合、ターゲット・アドレスに分岐してよく、ターゲット・アドレスは、例えば命令のレジスタ・フィールドまたは即時フィールドにある数値を含む複数の数値に基づいて計算されてよい。分岐ユニット５０５８は、複数の入力レジスタ回路５０７５、５０７６、５０７７、および出力レジスタ回路５０８０を含んでいるＡＬＵ５０７４を採用してよい。分岐ユニット５０５８は、例えば汎用レジスタ５０５９、デコード・ディスパッチ・ユニット５０５６、またはその他の回路５０７３と、通信（５０８１）してよい。
【０３６２】
命令のグループの実行は、例えば、オペレーティング・システムによって開始されたコンテキスト切り替え、コンテキスト切り替えを引き起こすプログラム例外またはエラー、コンテキスト切り替えを引き起こすＩ／Ｏ割り込み信号、または（マルチスレッド環境内の）複数のプログラムのマルチスレッド動作を含む、さまざまな理由のために中断される可能性がある。好ましくは、コンテキスト切り替え動作は、現在実行中のプログラムに関する状態情報を保存してから、呼び出されている別のプログラムに関する状態情報を読み込む。状態情報は、例えば、ハードウェア・レジスタまたはメモリに保存されてよい。状態情報は、好ましくは、実行される次の命令を指すプログラム・カウンタ値、条件コード、メモリ変換情報、および設計済みレジスタの内容を含む。コンテキスト切り替え動作は、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、またはファームウェア・コード（マイクロコード、ピココード、またはライセンス内部コード（ＬＩＣ：licensed internal code））によって、単独で、または組み合わせて行われ得る。
【０３６３】
プロセッサは、命令によって定義された方法に従ってオペランドにアクセスする。命令は、命令の一部の値を使用して即時オペランドを提供してよく、汎用レジスタまたは専用レジスタ（例えば、浮動小数点レジスタ）を明示的に指す１つまたは複数のレジスタ・フィールドを提供してよい。命令は、オペコード・フィールドによってオペランドとして識別された暗黙のレジスタを使用してよい。命令は、オペランドのメモリ位置を使用してよい。オペランドのメモリ位置は、レジスタ、即時フィールド、またはｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの長変位ファシリティ（long displacement facility）などのレジスタと即時フィールドの組み合わせによって提供されてよく、長変位ファシリティでは、命令がベース・レジスタ、インデックス・レジスタ、および即時フィールド（変位フィールド）を定義し、これらが一緒に加算されて、例えばメモリ内のオペランドのアドレスを提供する。本明細書では、特に示されない限り、位置は通常、メイン・メモリ（主記憶装置）内の位置を意味する。
【０３６４】
図２４を参照すると、プロセッサは、読み込み／記憶ユニット５０６０を使用してストレージにアクセスする。読み込み／記憶ユニット５０６０は、メモリ５０５３内のターゲット・オペランドのアドレスを取得し、レジスタ５０５９内または別のメモリ（５０５３）位置内のオペランドを読み込むことによって、読み込み処理を実行してよく、またはメモリ５０５３内のターゲット・オペランドのアドレスを取得して、レジスタ５０５９または別のメモリ（５０５３）位置から取得されたデータを、メモリ５０５３内のターゲット・オペランドの位置に記憶することによって、記憶処理を実行してよい。読み込み／記憶ユニット５０６０は、投機的であってよく、命令の順序とは異なる順序でメモリにアクセスしてよいが、読み込み／記憶ユニット５０６０は、プログラムからは命令が順序通りに実行されたように見えるということを維持する。読み込み／記憶ユニット５０６０は、汎用レジスタ５０５９、デコード／ディスパッチ・ユニット５０５６、キャッシュ／メモリ・インターフェイス５０５３、またはその他の要素５０８３と通信（５０８４）してよく、ストレージ・アドレスを計算するため、および処理の順序を維持するパイプライン・シーケンシングを提供するために、さまざまなレジスタ回路５０８６、５０８７、５０８８、および５０８９、ＡＬＵ５０８５、ならびに制御ロジック５０９０を備えている。一部の処理の順序は、命令の順序とは異なる順序であってよいが、読み込み／記憶ユニットは、従来技術において知られているように、プログラムからは不規則な順序の処理が順序通りに実行されたように見えるようにする機能を提供する。
【０３６５】
好ましくは、アプリケーション・プログラムから「見える」アドレスは、多くの場合、仮想アドレスと呼ばれる。仮想アドレスは、しばしば「論理アドレス」および「実効アドレス」と呼ばれる。これらの仮想アドレスは、さまざまな動的アドレス変換（ＤＡＴ）技術のうちの１つによって物理的メモリ位置にリダイレクトされるという点において仮想的であり、動的アドレス変換技術は、仮想アドレスの先頭に単純にオフセット値を付加することと、１つまたは複数の変換テーブルを介して仮想アドレスを変換することとを含むが、これらに限定されず、変換テーブルは、好ましくは少なくともセグメント・テーブルおよびページ・テーブルを単独で、または組み合わせて含み、セグメント・テーブルは、好ましくはページ・テーブルを指すエントリを含む。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、第１の領域テーブル、第２の領域テーブル、第３の領域テーブル、セグメント・テーブル、およびオプションのページ・テーブルを含む、変換の階層が提供される。アドレス変換の性能は、多くの場合、仮想アドレスを関連する物理的メモリ位置にマッピングするエントリを含んでいる変換索引バッファ（ＴＬＢ）を使用することによって改善される。このエントリは、ＤＡＴが変換テーブルを使用して仮想アドレスを変換するときに作成される。その後、仮想アドレスを使用する際に、低速で順次的な変換テーブル・アクセスではなく、高速なＴＬＢのエントリを使用することができる。ＴＬＢの内容は、ＬＲＵ（Least Recently used）を含むさまざまな置換アルゴリズムによって管理されてよい。
【０３６６】
プロセッサがマルチプロセッサ・システムのプロセッサである場合、各プロセッサは、Ｉ／Ｏ、キャッシュ、ＴＬＢ、およびメモリなどの共有リソースが連動されて、一貫性を保つ責任を持つ。通常は、キャッシュの一貫性の維持において「スヌープ」技術が使用される。スヌープ環境では、共有を容易にするために、各キャッシュ・ラインには、共有状態、排他的状態、変更済み状態、無効状態などのうちのいずれか１つであるとしてマークが付けられてよい。
【０３６７】
Ｉ／Ｏユニット５０５４（図２１）は、例えばテープ、ディスク、プリンタ、ディスプレイ、およびネットワークを含む周辺機器に接続するための手段をプロセッサに提供する。Ｉ／Ｏユニットは、多くの場合、ソフトウェア・ドライバによってコンピュータ・プログラムに提供される。ＩＢＭ（Ｒ）のＳｙｓｔｅｍ  ｚなどのメインフレームでは、チャネル・アダプタおよびオープン・システム・アダプタが、オペレーティング・システムと周辺機器の間の通信を提供するメインフレームのＩ／Ｏユニットである。
【０３６８】
さらに、他の種類のコンピューティング環境が、１つまたは複数の態様から恩恵を受けることができる。一例として、環境は、エミュレータ（例えば、ソフトウェアまたはその他のエミュレーション・メカニズム）を含んでよく、エミュレータでは、特定のアーキテクチャ（例えば、命令実行、アドレス変換などの設計済み機能、および設計済みレジスタを含む）またはそのサブセットが、（例えば、プロセッサおよびメモリを含んでいるネイティブ・コンピュータ・システム上で）エミュレートされる。そのような環境では、エミュレータの１つまたは複数のエミュレーション機能は、エミュレータを実行しているコンピュータが、エミュレートされている機能とは異なるアーキテクチャを有している場合でも、１つまたは複数の実施形態を実装できる。１つの例として、エミュレーション・モードでは、エミュレートされる特定の命令または処理がデコードされ、適切なエミュレーション機能が構築されて、個別の命令または処理を実装する。
【０３６９】
エミュレーション環境では、ホスト・コンピュータは、例えば、命令およびデータを格納するためのメモリと、命令をメモリからフェッチするため、および必要に応じてフェッチされた命令のローカル・バッファを提供するための命令フェッチ・ユニットと、フェッチされた命令を受信するため、およびフェッチされた命令のタイプを決定するための命令デコード・ユニットと、命令を実行するための実行ユニットとを含む。実行は、データをメモリからレジスタに読み込むこと、データをレジスタからメモリに再び記憶すること、あるいはデコード・ユニットによって決定された何らかのタイプの算術演算または論理演算を実行することを含んでよい。１つの例では、各ユニットはソフトウェアで実装される。例えば、ユニットによって実行される処理は、エミュレータ・ソフトウェア内の１つまたは複数のサブルーチンとして実装される。
【０３７０】
さらに具体的には、メインフレームでは、設計済み機械命令は、多くの場合コンパイラ・アプリケーションを経由して、プログラマ（通常、現在は「Ｃ」プログラマ）によって使用される。記憶媒体に記憶されたこれらの命令は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  ＩＢＭ（Ｒ）  Ｓｅｒｖｅｒにおいてネイティブに実行されるか、または代替として、他のアーキテクチャを実行しているマシンにおいて実行されてよい。これらの命令は、既存の、または将来のＩＢＭ（Ｒ）のメインフレーム・サーバにおいて、およびＩＢＭ（Ｒ）のその他のマシン（例えば、Ｐｏｗｅｒ  ＳｙｓｔｅｍｓサーバおよびＳｙｓｔｅｍ  ｘ  Ｓｅｒｖｅｒｓ）上でエミュレートされ得る。これらの命令は、ＩＢＭ（Ｒ）、Ｉｎｔｅｌ（Ｒ）、ＡＭＤ、およびその他の企業によって製造されたハードウェアを使用して、多種多様なマシン上のＬｉｎｕｘを実行しているマシンにおいて実行され得る。このハードウェア上のｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの下での実行に加えて、Ｈｅｒｃｕｌｅｓ、ＵＭＸ、またはＦＳＩ（Ｆｕｎｄａｍｅｎｔａｌ  Ｓｏｆｔｗａｒｅ，  Ｉｎｃ）によるエミュレーションを使用するマシンとして、Ｌｉｎｕｘも使用することができ、その場合、実行は通常、エミュレーション・モードにある。エミュレーション・モードでは、エミュレーション・ソフトウェアは、ネイティブ・プロセッサによって実行されて、エミュレートされるプロセッサのアーキテクチャをエミュレートする。
【０３７１】
ネイティブ・プロセッサは、通常、ファームウェアまたはネイティブ・オペレーティング・システムのいずれかを含んでいるエミュレーション・ソフトウェアを実行して、エミュレートされるプロセッサのエミュレーションを実行する。エミュレーション・ソフトウェアは、エミュレートされるプロセッサ・アーキテクチャの命令をフェッチして実行することを担当する。エミュレーション・ソフトウェアは、エミュレートされるプログラム・カウンタを維持し、命令境界を追跡する。エミュレーション・ソフトウェアは、１つまたは複数のエミュレートされる機械命令を一度にフェッチし、１つまたは複数のエミュレートされる機械命令を、ネイティブ・プロセッサによって実行するために、ネイティブ機械命令の対応するグループに変換してよい。これらの変換された命令は、より高速な変換を実現できるように、キャッシュされてよい。それでも、エミュレーション・ソフトウェアは、エミュレートされるプロセッサ用に記述されたオペレーティング・システムおよびアプリケーションが正しく動作することを保証するために、エミュレートされるプロセッサ・アーキテクチャのアーキテクチャ・ルールを維持する。さらに、エミュレーション・ソフトウェアは、エミュレートされるプロセッサ上で実行されるように設計されたオペレーティング・システムまたはアプリケーション・プログラムを、エミュレーション・ソフトウェアを含んでいるネイティブ・プロセッサ上で実行できるように、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブルおよびページ・テーブルを含んでいる動的アドレス変換機能、割り込みメカニズム、コンテキスト切り替えメカニズム、時刻（ＴＯＤ：Time of Day）クロック、ならびにＩ／Ｏサブシステムへの設計済みインターフェイスを含むが、これらに限定されない、エミュレートされるプロセッサ・アーキテクチャによって識別されるリソースを提供する。
【０３７２】
エミュレートされる特定の命令がデコードされ、サブルーチンが呼び出されて個別の命令の機能を実行する。エミュレートされるプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、好ましい実施形態の説明を理解した上で、当業者のスキルの範囲内で、例えば「Ｃ」のサブルーチンまたはドライバで実装されるか、または特定のハードウェアのドライバを提供する何らかのその他の方法で実装される。
【０３７３】
図２５では、エミュレートされるホスト・コンピュータ・システム５０９２の例が提供されており、この例では、ホスト・アーキテクチャのホスト・コンピュータ・システム５０００’をエミュレートする。エミュレートされるホスト・コンピュータ・システム５０９２では、ホスト・プロセッサ（ＣＰＵ）５０９１は、エミュレートされるホスト・プロセッサ（または仮想ホスト・プロセッサ）であり、ホスト・コンピュータ５０００’のプロセッサ５０９１のネイティブ命令セット・アーキテクチャとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ５０９３を備えている。エミュレートされるホスト・コンピュータ・システム５０９２は、エミュレーション・プロセッサ５０９３がアクセスできるメモリ５０９４を含む。実施形態例では、メモリ５０９４は、ホスト・コンピュータ・メモリ５０９６の部分とエミュレーション・ルーチン５０９７の部分に分割される。ホスト・コンピュータ・メモリ５０９６は、ホスト・コンピュータ・アーキテクチャに従って、エミュレートされるホスト・コンピュータ５０９２のプログラムで使用できる。エミュレーション・プロセッサ５０９３は、エミュレートされるプロセッサ５０９１のアーキテクチャ以外のアーキテクチャの設計済み命令セットのネイティブ命令（エミュレーション・ルーチン５０９７から取得されたネイティブ命令）を実行し、シーケンスおよびアクセス／デコード・ルーチン（sequence & access/decode routine）において取得された１つまたは複数の命令を採用することによって、ホスト・コンピュータ・メモリ５０９６内のプログラムから実行するために、ホスト命令にアクセスしてよく、シーケンスおよびアクセス／デコード・ルーチンは、アクセスされるホスト命令をデコードして、アクセスされるホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを決定してよい。ホスト・コンピュータ・システム５０００’のアーキテクチャに対して定義されたその他の機能は、例えば汎用レジスタ、制御レジスタ、動的アドレス変換、およびＩ／Ｏサブシステムのサポート、およびプロセッサ・キャッシュなどの機能を含む、設計済み機能ルーチンによってエミュレートされてよい。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を向上させるために、エミュレーション・プロセッサ５０９３で使用できる機能（汎用レジスタおよび仮想アドレスの動的変換など）も利用してよい。ホスト・コンピュータ５０００’の機能のエミュレーションにおいてプロセッサ５０９３を支援するために、特殊なハードウェアおよびオフロード・エンジンが提供されてもよい。
【０３７４】
さらに別の実施形態では、１つまたは複数の態様がクラウド・コンピューティングに関連している。本開示にはクラウド・コンピューティングの詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないということが、あらかじめ理解される。本発明の実施形態は、既知または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【０３７５】
クラウド・コンピューティングは、構成可能な計算リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、それらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、および少なくとも４つのデプロイメント・モデルを含むことができる。
【０３７６】
特徴は、次のとおりである。
オンデマンドのセルフ・サービス：クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどのコンピューティング能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス：クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による利用を促進する。
リソース・プール：プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベル（例えば、国、州、データセンタ）では、場所を指定できる場合がある。
迅速な順応性：クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス：クラウド・システムは、計測機能を活用することによって、サービスの種類（例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント）に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【０３７７】
サービス・モデルは、次のとおりである。
ＳａａＳ（Software as a Service）：利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Ｗｅｂブラウザ（例えば、Ｗｅｂベースの電子メール）などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
ＰａａＳ（Platform as a Service）：利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
ＩａａＳ（Infrastructure as a Service）：利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント（例えば、ホスト・ファイアウォール）を限定的に制御できる。
【０３７８】
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド：このクラウド・インフラストラクチャは、組織のためにのみ運用される。このクラウド・インフラストラクチャは、この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド：このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事（例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項）を共有している特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド：このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド：このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術（例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト）によって固有の実体を残したまま互いに結合された２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の複合である。
【０３７９】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを備えるインフラストラクチャである。
【０３８０】
ここで図２６を参照すると、クラウド・コンピューティング・ノードの例の概略図が示されている。クラウド・コンピューティング・ノード６０１０は、適切なクラウド・コンピューティング・ノードの一例に過ぎず、本明細書に記載された本発明の実施形態の使用または機能の範囲に関して、いかなる制限を示唆することも意図されていない。いずれにせよ、クラウド・コンピューティング・ノード６０１０は、前述した任意の機能を実装すること、または実行すること、あるいはその両方を行うことができる。
【０３８１】
クラウド・コンピューティング・ノード６０１０内には、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用できるコンピュータ・システム／サーバ６０１２が存在する。コンピュータ・システム／サーバ６０１２での使用に適した既知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【０３８２】
コンピュータ・システム／サーバ６０１２は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連で説明することができる。通常、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム／サーバ６０１２は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実行されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム記憶媒体に配置されてよい。
【０３８３】
図２６に示すように、クラウド・コンピューティング・ノード６０１０内のコンピュータ・システム／サーバ６０１２は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ６０１２のコンポーネントは、１つまたは複数のプロセッサまたはプロセッシング・ユニット６０１６、システム・メモリ６０２８、およびシステム・メモリ６０２８を含むさまざまなシステム・コンポーネントをプロセッサ６０１６に結合するバス６０１８を含むことができるが、これらに限定されない。
【０３８４】
バス６０１８は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、１つまたは複数の任意の種類のバス構造を表す。例として、そのようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）バス、MCA（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、およびＰＣＩ（Peripheral Component Interconnect）バスを含むが、これらに限定されない。
【０３８５】
コンピュータ・システム／サーバ６０１２は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ６０１２によってアクセスできる任意の使用可能な媒体にすることができ、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。
【０３８６】
システム・メモリ６０２８は、ランダム・アクセス・メモリ（ＲＡＭ）６０３０またはキャッシュ・メモリ６０３２あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ６０１２は、その他の取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム記憶媒体をさらに含むことができる。単に例として、取り外し不可、不揮発性の磁気媒体（図示されておらず、通常は「ハード・ドライブ」と呼ばれる）に対する読み取りと書き込みを行うために、ストレージ・システム６０３４を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー（Ｒ）・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、１つまたは複数のデータ媒体インターフェイスによってバス６０１８に接続することができる。下で詳細に示され、説明されるように、メモリ６０２８は、本発明の実施形態の機能を実行するように構成された一連の（例えば、少なくとも１つの）プログラム・モジュールを備える少なくとも１つのプログラム製品を含むことができる。
【０３８７】
例えば、一連の（少なくとも１つの）プログラム・モジュール６０４２を含んでいるプログラム／ユーティリティ６０４０がメモリ６０２８に記憶されてよいが、これに限定されず、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも記憶されてよい。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせは、それぞれネットワーク環境の実装を含むことができる。プログラム・モジュール６０４２は、通常、本明細書に記載された本発明の実施形態の機能または方法あるいはその両方を実行する。
【０３８８】
また、コンピュータ・システム／サーバ６０１２は、キーボード、ポインティング・デバイス、ディスプレイ６０２４などの１つまたは複数の外部デバイス６０１４、ユーザがコンピュータ・システム／サーバ６０１２と情報をやりとりできるようにする１つまたは複数のデバイス、またはコンピュータ・システム／サーバ６０１２が１つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはその組み合わせと通信することもできる。そのような通信は、入力／出力（Ｉ／Ｏ：Input/Output）インターフェイス６０２２を介して行うことができる。さらに、コンピュータ・システム／サーバ６０１２は、ローカル・エリア・ネットワーク（ＬＡＮ：Local Area Network）、一般的な広域ネットワーク（WAN：Wide Area Network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組み合わせなどの１つまたは複数のネットワークと、ネットワーク・アダプタ６０２０を介して通信することができる。図示されているように、ネットワーク・アダプタ６０２０は、バス６０１８を介してコンピュータ・システム／サーバ６０１２の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム／サーバ６０１２と併用できるということが理解されるべきである。その例は、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどを含むが、これらに限定されない。
【０３８９】
ここで図２７を参照すると、クラウド・コンピューティング環境６０５０の例が示されている。図示されているように、クラウド・コンピューティング環境６０５０は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス（例えば、ＰＤＡ（Personal Digital Assistant）または携帯電話６０５４Ａ、デスクトップ・コンピュータ６０５４Ｂ、ラップトップ・コンピュータ６０５４Ｃ、または自動車コンピュータ・システム６０５４Ｎ、あるいはその組み合わせなど）が通信できる１つまたは複数のクラウド・コンピューティング・ノード６０１０を備える。ノード６０１０は、互いに通信することができる。ノード６０１０は、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなど、１つまたは複数のネットワーク内で物理的または仮想的にグループ化されてよい（図示されていない）。これによって、クラウド・コンピューティング環境６０５０は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組み合わせをサービスとして提供できる。図２７に示されたコンピューティング・デバイス６０５４Ａ〜Ｎの種類は、例示のみが意図されており、コンピューティング・ノード６０１０およびクラウド・コンピューティング環境６０５０は、任意の種類のネットワークまたはネットワーク・アドレス指定可能な接続（例えば、Ｗｅｂブラウザを使用した接続）あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【０３９０】
ここで図２８を参照すると、クラウド・コンピューティング環境６０５０（図２５）によって提供される機能的抽象レイヤのセットが示されている。図２８に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【０３９１】
ハードウェアおよびソフトウェア・レイヤ６０６０は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム（一例を挙げると、ＩＢＭ（Ｒ）  ｚＳｅｒｉｅｓ（Ｒ）システム）、ＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャ・ベース・サーバ（一例を挙げると、ＩＢＭ  ｐＳｅｒｉｅｓ（Ｒ）システム）、ＩＢＭ  ｘＳｅｒｉｅｓ（Ｒ）システム、ＩＢＭ  ＢｌａｄｅＣｅｎｔｅｒ（Ｒ）システム、ストレージ・デバイス、ネットワークおよびネットワーク・コンポーネントを含む。ソフトウェア・コンポーネントの例は、ネットワーク・アプリケーション・サーバ・ソフトウェア（一例を挙げると、ＩＢＭ  ＷｅｂＳｐｈｅｒｅ（Ｒ）アプリケーション・サーバ・ソフトウェア）、およびデータベース・ソフトウェア（一例を挙げると、ＩＢＭ  ＤＢ２（Ｒ）データベース・ソフトウェア）を含む。（ＩＢＭ、ｚＳｅｒｉｅｓ、ｐＳｅｒｉｅｓ、ｘＳｅｒｉｅｓ、ＢｌａｄｅＣｅｎｔｅｒ、ＷｅｂＳｐｈｅｒｅ、およびＤＢ２は、世界中の多くの管轄区域で登録されているＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）
【０３９２】
仮想化レイヤ６０６２は、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーションおよびオペレーティング・システム、ならびに仮想クライアントなどの仮想的実体を提供できる抽象レイヤを備える。
【０３９３】
一例を挙げると、管理レイヤ６０６４は、以下で説明される機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定は、クラウド・コンピューティング環境内でリソースが利用された際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウドの利用者およびタスクのＩＤ検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータルは、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意（ＳＬＡ：Service Level Agreement）計画および実行は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、ＳＬＡに従って行う。
【０３９４】
ワークロード・レイヤ６０６６は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供できるワークロードおよび機能の例は、マッピングおよびナビゲーション、ソフトウェア開発およびライフサイクル管理、仮想クラスルーム教育の配信、データ解析処理、およびトランザクション処理を含む。
【０３９５】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書で使用される単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、特に明示的に示されない限り、複数形も含むことが意図されている。「備える（ｃｏｍｐｒｉｓｅ）」または「備えている（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、処理、要素、またはコンポーネント、あるいはその組み合わせの存在を示すが、１つまたは複数のその他の機能、整数、ステップ、処理、要素、コンポーネント、またはこれらのグループ、あるいはその組み合わせの存在または追加を除外していないということが、さらに理解されるであろう。
【０３９６】
下の特許請求の範囲内のすべてのミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素の対応する構造、材料、動作、および均等物は、もしあれば、具体的に請求されるその他の請求された要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。１つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が可能であるということは、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
【図１】
2019508797.tif 000003
【図２】
2019508797.tif 000004
【図３】
2019508797.tif 000005
【図４】
2019508797.tif 000006
【図５】
2019508797.tif 000007
【図６】
2019508797.tif 000008
【図７】
2019508797.tif 000009
【図８】
2019508797.tif 000010
【図９】
2019508797.tif 000011
【図１０】
2019508797.tif 000012
【図１１】
2019508797.tif 000013
【図１２】
2019508797.tif 000014
【図１３】
2019508797.tif 000015
【図１４】
2019508797.tif 000016
【図１５】
2019508797.tif 000017
【図１６】
2019508797.tif 000018
【図１７】
2019508797.tif 000019
【図１８】
2019508797.tif 000020
【図１９】
2019508797.tif 000021
【図２０】
2019508797.tif 000022
【図２１】
2019508797.tif 000023
【図２２】
2019508797.tif 000024
【図２３】
2019508797.tif 000025
【図２４】
2019508797.tif 000026
【図２５】
2019508797.tif 000027
【図２６】
2019508797.tif 000028
【図２７】
2019508797.tif 000029
【図２８】
2019508797.tif 000030
【手続補正書】
【提出日】平成30年11月28日(2018.11.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、プロセッサによって、コンピューティング環境内でトランザクションの実行を開始することであって、前記プロセッサがトランザクション・コアを備えており、前記トランザクションの前記実行が前記トランザクション・コアによって実行される、前記開始することと、
前記プロセッサによって、前記トランザクションと、前記コンピューティング環境内の他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の表れを取得することと、
前記プロセッサによって、前記トランザクション・コアがインジケータを備えているかどうかを決定することと、
前記トランザクション・コアがインジケータを備えているという決定に基づいて、前記プロセッサによって、前記競合を無視し、前記トランザクション・コアを使用して前記トランザクションの実行を完了することと
を含む、コンピュータ実装方法。
【請求項２】
前記競合の表れが、前記トランザクションの前記実行中に前記トランザクション・コアによって使用されているデータに関連する前記他のコアからの要求を含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記データが、前記トランザクション・コアのキャッシュに配置され、読み取りデータまたは書き込みデータとしてマークが付けられる、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記無視することが、前記プロセッサによって、前記データへの前記他のコアのアクセスを拒否することをさらに含む、請求項２に記載のコンピュータ実装方法。
【請求項５】
前記プロセッサによって、前記要求をキューに入れることと、
前記トランザクションの実行の完了に基づいて、前記プロセッサによって、前記データへのアクセスを前記他のコアに提供することによって前記要求を満たすこととをさらに含む、請求項２に記載のコンピュータ実装方法。
【請求項６】
前記プロセッサによって、前記トランザクション・コアによる前記トランザクションの前記実行を監視することと、
前記トランザクションをコミットすることによって前記トランザクション・コアが前記実行を完了することに基づいて、前記プロセッサによって、前記インジケータを消去することと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項７】
前記プロセッサによって、前記インジケータに関する要求を前記トランザクション・コアから取得することと、
前記プロセッサによって、スーパー・コア状態が使用可能であるかどうかを決定することと、
スーパー・コア状態が使用可能であるという決定に基づいて、前記プロセッサによって、前記トランザクション・コアを変更し、前記インジケータを提供することと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項８】
前記トランザクション・コアがインジケータを備えていないという決定に基づいて、前記プロセッサによって、前記トランザクションをアボートすることと、
前記プロセッサによって、前記トランザクションに関連付けられた値をインクリメントすることと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項９】
前記プロセッサによって、前記トランザクションに関連付けられた前記値を取得することと、
前記プロセッサによって、前記値を評価して、前記値がしきい値を満たしているかどうかを決定することと、
前記値が前記しきい値を満たしているという決定に基づいて、前記プロセッサによって、前記トランザクション・コアのインジケータを要求することと、
前記プロセッサによって、スーパー・コア状態が使用可能であると決定することと、
決定に基づいて、前記プロセッサによって、前記トランザクション・コアを変更し、前記インジケータを提供することと
をさらに含む、請求項８に記載のコンピュータ実装方法。
【請求項１０】
前記スーパー・コア状態が使用可能であるかどうかを前記決定することが、
前記プロセッサによって、前記コンピューティング環境内のトランザクション・コアにアクセスして、しきい値の数のトランザクション・コアがインジケータを備えているかどうかを決定することと、
前記プロセッサによって、インジケータを備えているトランザクション・コアの数が前記しきい値未満であることに基づいて、前記スーパー・コア状態が使用可能であると決定することと
を含む、請求項９に記載のコンピュータ実装方法。
【請求項１１】
プロセッサに、コンピューティング環境内でトランザクションの実行を開始するさせることであって、前記プロセッサがトランザクション・コアを備えており、前記トランザクションの前記実行が前記トランザクション・コアによって実行される、前記開始させること、
前記プロセッサに、前記トランザクションと、前記コンピューティング環境内の他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の表れを取得させること、
前記プロセッサに、前記トランザクション・コアがインジケータを備えているかどうかを決定させること、
前記トランザクション・コアがインジケータを備えているという決定に基づいて、前記プロセッサに、前記競合を無視し、前記トランザクション・コアを使用して前記トランザクションの実行を完了させること
を実行させるためのコンピュータ・プログラム。
【請求項１２】
前記競合の表れが、前記トランザクションの前記実行中に前記トランザクション・コアによって使用されているデータに関連する前記他のコアからの要求を含む、請求項１１に記載のコンピュータ・プログラム。
【請求項１３】
前記データが、前記トランザクション・コアのキャッシュに配置され、読み取りデータまたは書き込みデータとしてマークが付けられる、請求項１２に記載のコンピュータ・プログラム。
【請求項１４】
前記無視することが、前記プロセッサに、前記データへの前記他のコアのアクセスを拒否させることをさらに実行させる、請求項１２に記載のコンピュータ・プログラム。
【請求項１５】
前記コンピュータ・プログラムが、
前記プロセッサに、前記要求をキューに入れさせること、
前記トランザクションの実行の完了に基づいて、前記プロセッサに、前記データへのアクセスを前記他のコアに提供することによって前記要求を満たさせること
をさらに実行させる、請求項１２に記載のコンピュータ・プログラム。
【請求項１６】
前記コンピュータ・プログラムが、
前記プロセッサに、前記インジケータに関する要求を前記トランザクション・コアから取得させること、
前記プロセッサに、スーパー・コア状態が使用可能であるかどうかを決定させること、
スーパー・コア状態が使用可能であるという決定に基づいて、前記プロセッサに、前記トランザクション・コアを変更し、前記インジケータを提供させること
をさらに実行させる、請求項１１に記載のコンピュータ・プログラム。
【請求項１７】
前記コンピュータ・プログラムが、
前記トランザクション・コアがインジケータを備えていないという決定に基づいて、前記プロセッサに、前記トランザクションをアボートさせること、
前記プロセッサに、前記トランザクションに関連付けられた値をインクリメントさせること
をさらに実行させる、請求項１１に記載のコンピュータ・プログラム。
【請求項１８】
前記コンピュータ・プログラムが、
前記プロセッサに、前記トランザクションに関連付けられた前記値を取得させること、
前記プロセッサに、前記値を評価して、前記値がしきい値を満たしているかどうかを決定させること、
前記値が前記しきい値を満たしているという決定に基づいて、前記プロセッサに、前記トランザクション・コアのインジケータを要求させること、
前記プロセッサによって、スーパー・コア状態が使用可能であると決定させること、
決定に基づいて、前記プロセッサに、前記トランザクション・コアを変更し、前記インジケータを提供させること
をさらに実行させる、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
システムであって、
メモリと、
前記メモリと通信するプロセッサと、
方法を実行するために前記メモリを介して前記プロセッサによって実行可能なプログラム命令と
を備え、前記方法が、
前記プロセッサによって、コンピューティング環境内でトランザクションの実行を開始することであって、前記プロセッサがトランザクション・コアを備えており、前記トランザクションの前記実行が前記トランザクション・コアによって実行される、前記開始することと、
前記プロセッサによって、前記トランザクションと、前記コンピューティング環境内の他のコアによって実行されている少なくとも１つの他のトランザクションとの間の競合の表れを取得することと、
前記プロセッサによって、前記トランザクション・コアがインジケータを備えているかどうかを決定することと、
前記トランザクション・コアがインジケータを備えているという決定に基づいて、前記プロセッサによって、前記競合を無視し、前記トランザクション・コアを使用して前記トランザクションの実行を完了することと
を含む、システム。
【請求項２０】
前記競合の表れが、前記トランザクションの前記実行中に前記トランザクション・コアによって使用されているデータに関連する前記他のコアからの要求を含む、請求項１９に記載のシステム。
【国際調査報告】
2019508797.tif 000031
2019508797.tif 000032