(57)【特許請求の範囲】
【請求項１】
多機能命令のうちの選択されたインストール済み機能を隠蔽するためのコンピュータで実装される方法であって、前記多機能命令が複数のインストール済み機能のうちの１つの機能を実行するように設計され、前記方法が、
インストール済み機能の可用性を制御する値を１つまたは複数のプロセッサを含むホスト・コンピュータの多機能命令に設定することであって、１つのプロセッサが前記多機能命令のうちの複数のインストール済み機能を有し、前記複数のインストール済み機能が１つまたは複数の第１のインストール済み機能と１つまたは複数の第２のインストール済み機能とを含むことと、
多機能命令を実行することであって、前記多機能命令が命令コード・フィールドを含むことを含み、前記実行が、
前記多機能命令が他の機能の可用性を示す手段を提供する照会機能を指定することに応答して、前記多機能命令にとって使用可能なインストール済み機能を判定するために前記照会機能を実行することと、
前記照会機能の実行において前記値を使用して、前記多機能命令にとって使用可能な前記１つまたは複数の第２のインストール済み機能を判定することと、
前記照会機能の実行において前記１つまたは複数の第１のインストール済み機能が前記多機能命令にとって使用可能ではないことを示す結果値であって、各ビット位置が１つの機能に対応するビット有効値であり、１つのビットが１であることは前記対応する機能がサポートされていることを示す、結果値をストアすることと、
前記多機能命令が前記複数のインストール済み機能のうちの非照会機能を指定することに応答して、前記非照会機能が前記第２のインストール済み機能のうちの１つであるときに前記非照会機能を実行し、前記非照会機能が前記第１のインストール済み機能のうちの１つであるときに前記非照会機能の実行をブロックすること
を含む、方法。
【請求項２】
前記値が前記ホスト・コンピュータの仮想計算機について前記ホスト・コンピュータのハイパーバイザによって設定され、前記仮想計算機が１つまたは複数の論理プロセッサを含み、前記１つまたは複数の論理プロセッサが１つまたは複数の物理プロセッサに割り当てられ、１つの物理プロセッサが前記多機能命令のうちの前記複数のインストール済み機能を有し、前記多機能命令が前記１つまたは複数の物理プロセッサのうちの１つの物理プロセッサ上の１つまたは複数の論理プロセッサのうちの１つの論理プロセッサによって前記仮想計算機内で実行される、請求項１記載の方法。
【請求項３】
前記１つまたは複数の第２のインストール済み機能を判定することが、前記多機能命令の命令コードごとに前記第２のインストール済み機能のうちの１つか否かを定める、請求項２記載の方法。
【請求項４】
前記ハイパーバイザにより、インストール済み機能の可用性を制御する他の値を前記ホスト・コンピュータ・システムの他の仮想計算機上で実行される多機能命令に設定することと、
１つまたは複数の他の論理プロセッサのうちの１つの他の論理プロセッサによって前記他の仮想計算機内で他の多機能命令を実行することと、
前記他の多機能命令が他の照会機能を指定することに応答して、前記他の多機能命令にとって使用可能なインストール済み機能を判定するために前記他の照会機能を実行することと、
前記他の照会機能の実行において前記他の値を使用して、１つまたは複数の第３のインストール済み機能を判定することと、
前記他の照会機能の実行において前記１つまたは複数の第３のインストール済み機能が前記他の多機能命令にとって使用可能ではないことを示す他の結果値をストアすること
をさらに含む、請求項２記載の方法。
【請求項５】
前記照会機能が、多機能命令指定機能コードまたは多機能命令指定テスト・ビットによって指定される、請求項２記載の方法。
【請求項６】
前記多機能命令が、暗号命令、タイミング機構機能実行命令、浮動小数点演算実行命令、またはロック演算実行命令のうちのいずれか１つからなるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ命令であり、前記暗号命令が、暗号メッセージ命令、チェーニング付き暗号メッセージ命令、中間メッセージ・ダイジェスト計算命令、最終メッセージ・ダイジェスト計算命令、メッセージ認証コード計算命令のうちのいずれか１つを含み、前記多機能命令が照会機能を指定することが、
前記多機能命令が暗号命令またはＰＴＦＦ命令であることに応答して、実行すべき前記多機能命令指定機能コードを入手し、前記入手された機能コードが照会機能からなり、前記ストアされた結果値が複数のビットであり、前記複数のビットのうちの各ビットが対応する機能コードがサポートされるかどうかを示すことと、
前記多機能命令が暗号命令またはＰＴＦＦ命令であることに応答して、実行すべき前記多機能命令指定機能コードを入手し、前記入手された機能コードが前記照会機能ではなく、前記入手された機能コードに応じて暗号機能またはＰＴＦＦ機能を実行することと、
前記多機能命令が前記ロック演算実行命令または前記浮動小数点演算実行命令であり、
前記多機能命令指定テスト・ビットが１であることに応答して、多機能命令指定機能コードがサポートされていることを判断し、前記ストアされた結果値が条件コード値であることと、
前記多機能命令が前記ロック演算実行命令または前記浮動小数点演算実行命令であり、前記多機能命令指定テスト・ビットが０であることに応答して、前記入手された機能コードに応じて浮動小数点機能またはロック演算を実行すること
を含む、請求項５記載の方法。
【請求項７】
多機能命令のうちの選択されたインストール済み機能を隠蔽するためのコンピュータ・システムであって、前記多機能命令が複数のインストール済み機能のうちの１つの機能を実行するように設計され、
メモリと、
前記メモリと通信状態にあるプロセッサであって、メモリから命令を取り出すための命令取り出し要素と取り出した命令を実行するための１つまたは複数の実行要素とを含むプロセッサとを含み、
請求項１ないし６のいずれかに記載の方法を実行するように構成された、コンピュータ・システム。
【請求項８】
多機能命令のうちの選択されたインストール済み機能を隠蔽するためのコンピュータ・プログラムであって、前記多機能命令が複数のインストール済み機能のうちの１つの機能を実行するように設計され、処理回路によって読み取り可能であって、請求項１ないし６のいずれかに記載の方法を前記処理回路に実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムに関し、詳細には、コンピュータ・システム・プロセッサ命令機能に関する。
【背景技術】
【０００２】
商標：  ＩＢＭ（Ｒ）は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社の登録商標である。Ｓ／３９０、ｚ９００、ｚ９９０、およびｚ１０ならびにその他の製品名は、インターナショナル・ビジネス・マシーンズ社またはその他の企業の登録商標または製品名である可能性がある。
【０００３】
ＩＢＭは、１９６０年代のＩＢＭ（Ｒ）システム３６０として知られるマシンから現在までの多くの非常に有能なエンジニアの研究により、コンピューティング・システムに対するその本質的な性質のために、「メインフレーム」として知られるようになった特別なアーキテクチャを創出してきたが、そのメインフレームの解説書は、これまでの年月に提示されてきたＩＢＭの解説書に含めることによる相当な貢献として、「メインフレーム」によって表されるコンピューティング・マシンの状態の改善に対する相当な貢献のために、ＩＢＭの発明者によって発明され採用された命令の「メインフレーム」による実装時に実行することができる命令を記述することによりマシンのアーキテクチャを提示するものである。２００９年２月に発行された「IBM(R) z/Architecture(R) Principles of Operation」の第８版は、SA22-7832-07として標準的な出版文献になり、ＩＢＭのｚ１０（Ｒ）メインフレーム・サーバに組み込まれている。
【０００４】
図１を参照すると、従来技術のホスト・コンピュータ・システム５０の代表的なコンポーネントが描かれている。当技術分野で周知のその他のコンポーネントの配置もコンピュータ・システムで使用することができる。代表的なホスト・コンピュータ５０は、主記憶装置（コンピュータ・メモリ２）と通信状態にある１つまたは複数のＣＰＵ１ならびに記憶装置１１への入出力インターフェースおよび他のコンピュータまたはＳＡＮなどと通信するためのネットワーク１０を含む。ＣＰＵ１は、設計された命令セットおよび設計された機能性を有するアーキテクチャに準拠している。ＣＰＵ１は、プログラム・アドレス（仮想アドレス）をメモリの実アドレスに変換するための動的アドレス変換（ＤＡＴ）３を有することができる。ＤＡＴは、典型的に、コンピュータ・メモリ２のブロックへのその後のアクセスがアドレス変換の遅延を必要としないように、変換をキャッシュするための変換索引バッファ（ＴＬＢ）７を含む。典型的に、キャッシュ９は、コンピュータ・メモリ２とプロセッサ１との間で使用される。キャッシュ９は、２つ以上のＣＰＵにとって使用可能な１つの大きいキャッシュと、その大きいキャッシュと各ＣＰＵとの間にあってそれより小さく高速の（下位レベルの）複数キャッシュとを有する階層的なものにすることができる。いくつかの実装例では、命令取り出しおよびデータ・アクセスのために個別の下位レベル・キャッシュを提供するために、この下位レベル・キャッシュが分割される。一実施形態では、命令は、キャッシュ９を介して命令取り出しユニット４によってメモリ２から取り出される。その命令は、命令デコード・ユニット６でデコードされ、（いくつかの実施形態では他の命令とともに）命令実行ユニット８にディスパッチされる。典型的に、いくつかの実行ユニット８、たとえば、演算実行ユニット、浮動小数点実行ユニット、および分岐命令実行ユニットが使用される。その命令は、実行ユニットによって実行され、必要に応じて、命令指定のレジスタまたはメモリからのオペランドにアクセスする。メモリ２からオペランドにアクセスする（ロードまたはストアする）場合、ロード・ストア・ユニット５は、典型的に、実行されている命令の制御下にあるアクセスを処理する。命令は、ハードウェア回路または内部マイクロコード（ファームウェア）であるいはその両方の組み合わせによって実行することができる。
【０００５】
図２には、ホスト・アーキテクチャのホスト・コンピュータ・システム５０をエミュレートする従来技術のエミュレートされたホスト・コンピュータ・システム２１の一例が示されている。エミュレートされたホスト・コンピュータ・システム２１では、ホスト・プロセッサ（ＣＰＵ）１は、エミュレートされたホスト・プロセッサ（または仮想ホスト・プロセッサ）であり、ホスト・コンピュータ５０のプロセッサ１のものとは異なる固有命令セット・アーキテクチャを有するエミュレーション・プロセッサ２７を含む。エミュレートされたホスト・コンピュータ・システム２１は、エミュレーション・プロセッサ２７にとってアクセス可能なメモリ２２を有する。この実施形態例では、メモリ２２は、ホスト・コンピュータ・メモリ２の部分とエミュレーション・ルーチン２３の部分にパーティション化されている。ホスト・コンピュータ・メモリ２は、ホスト・コンピュータ・アーキテクチャに応じてエミュレートされたホスト・コンピュータ２１のプログラムにとって使用可能である。エミュレーション・プロセッサ２７は、エミュレートされたプロセッサ１のものとは異なるアーキテクチャの設計された命令セットの固有命令、すなわち、エミュレーション・ルーチン・メモリ２３から入手した固有命令を実行し、アクセスされたホスト命令の機能をエミュレートするための固有命令実行ルーチンを決定するためにアクセスされたホスト命令（複数も可）をデコードすることができるシーケンス・アクセス／デコード・ルーチンで入手した１つまたは複数の命令を使用することにより、ホスト・コンピュータ・メモリ２内のプログラムから実行するためにホスト命令にアクセスすることができる。ホスト・コンピュータ・システム５０のアーキテクチャのために定義されたその他の機構は、たとえば、汎用レジスタ、制御レジスタ、動的アドレス変換、ならびに入出力サブシステム・サポートおよびプロセッサ・キャッシュなどの機構を含む、設計機構ルーチン（Architected Facilities Routine）によってエミュレートすることができる。また、エミュレーション・ルーチンは、エミュレーション・ルーチンのパフォーマンスを改善するためにエミュレーション・プロセッサ２７で使用可能な機能（汎用レジスタおよび仮想アドレスの動的変換など）を利用することもできる。ホスト・コンピュータ５０の機能をエミュレートする際にプロセッサ２７を支援するために、特殊ハードウェアおよびオフロード・エンジンを設けることもできる。
【０００６】
メインフレームでは、設計された機械命令は、プログラマ、通常現在はしばしばコンパイラ・アプリケーションを経由する「Ｃ」プログラマによって使用される。記憶媒体に保管されたこれらの命令は、本来はｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  ＩＢＭサーバで実行することができ、または代わって他のアーキテクチャを実行するマシンで実行することができる。これらは、既存のおよび将来のＩＢＭメインフレーム・サーバでならびにＩＢＭの他のマシン（たとえば、ｐＳｅｒｉｅｓ（Ｒ）サーバおよびｘＳｅｒｉｅｓ（Ｒ）サーバ）上でエミュレートすることができる。これらは、ＩＢＭ（Ｒ）、Ｉｎｔｅｌ（Ｒ）、ＡＭＤ（ＴＭ）、サン・マイクロシステムズ社、その他によって製造されたハードウェアを使用する多種多様なマシン上でＬｉｎｕｘを実行するマシンで実行することができる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）下のハードウェア上での実行の他に、http://www.turbohercules.com、http://www.hercules-390.org、およびhttp://www.funsoft.comに記載されているエミュレーションを使用するマシンでもＬｉｎｕｘを使用することができる。エミュレーション・モードでは、エミュレートされたプロセッサのアーキテクチャをエミュレートするために固有プロセッサによってエミュレーション・ソフトウェアが実行される。
【０００７】
固有プロセッサ２７は、典型的に、エミュレートされたプロセッサのエミュレーションを実行するためにファームウェアまたは固有オペレーティング・システムのいずれか一方を含むエミュレーション・ソフトウェア２３を実行する。エミュレーション・ソフトウェア２３は、エミュレートされたプロセッサ・アーキテクチャの命令を取り出して実行する役割を担う。エミュレーション・ソフトウェア２３は、命令境界を追跡するためにエミュレートされたプログラム・カウンタを維持する。エミュレーション・ソフトウェア２３は、一度に１つまたは複数のエミュレートされた機械命令を取り出し、固有プロセッサ２７による実行のためにその１つまたは複数のエミュレートされた機械命令を対応する固有機械命令のグループに変換することができる。これらの変換された命令は、より高速の変換を達成できるようにキャッシュすることができる。それにもかかわらず、エミュレーション・ソフトウェアは、エミュレートされたプロセッサのために作成されたオペレーティング・システムおよびアプリケーションが正しく動作することを保証するために、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ・ルールを維持しなければならない。さらに、エミュレーション・ソフトウェアは、エミュレートされたプロセッサ上で実行するように設計されたオペレーティング・システムまたはアプリケーション・プログラムがエミュレーション・ソフトウェアを有する固有プロセッサ上で実行できるように、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、たとえばセグメント・テーブルおよびページ・テーブルを含む動的アドレス変換機能、割り込みメカニズム、コンテキスト・スイッチ・メカニズム、時刻（ＴＯＤ）クロック、および入出力サブシステムへの設計されたインターフェースを含むが、これらに限定されないエミュレートされたプロセッサ１アーキテクチャによって識別されたリソースを提供しなければならない。
【０００８】
エミュレートされている特定の命令はデコードされ、この個別命令の機能を実行するためにサブルーチンが呼び出される。エミュレートされたプロセッサ１の機能をエミュレートするエミュレーション・ソフトウェア機能２３は、たとえば、「Ｃ」サブルーチンまたはドライバ、あるいは好ましい実施形態の説明を理解した後で当業者の技能の範囲内になる特定のハードウェアに関するドライバを提供する何らかのその他の方法で実装される。様々なソフトウェアおよびハードウェア・エミュレーション特許としては、Beausoleil他の「Multiprocessor for hardwareemulation」に関する米国特許第５５５１０１３号、Scalzi他の「Preprocessing of stored target routines for emulating incompatibleinstructions on a target processor」という米国特許第６００９２６１号、Davidian他の「Decoding guest instruction to directly access emulation routinesthat emulate theguest instructions」という米国特許第５５７４８７３号、Gorishek他の「Symmetricalmultiprocessing bus and chipset used for coprocessorsupport allowing non-nativecode to run in a system」という米国特許第６３０８２５５号、Lethin他の「Dynamicoptimizing object codetranslator for architecture emulation and dynamic optimizing object codetranslation method」という米国特許第６４６３５８２号、およびEric Trautの「Method for emulating guest instructions on a host computer throughdynamic recompilation of host instructions」という米国特許第５７９０８２５号を含むが、これらに限定されない。これらの参考文献は、当業者にとって使用可能なターゲット・マシンのために異なるマシンについて設計された命令フォーマットのエミュレーションを達成するための様々な既知の方法、ならびに上記で参照したものによって使用される商用ソフトウェア技法を示している。
【０００９】
２００９年９月３日に公表されたAstrandの「Selective Exposure to USB DeviceFunctionality for a Virtual Machine」という米国特許出願公報第ＵＳ２００９／０２２２８１４Ａ１号では、仮想計算機（ＶＭ）アプリケーションは、ゲスト・オペレーティング・システム（ＯＳ）を実行し、コンピュータに接続されたＵＳＢデバイスにゲストＯＳが接続できるようにすることができる。ＶＭアプリケーションは、ＵＳＢデバイスの機能の一部のみがゲストＯＳに対して露出されるように、ＵＳＢデバイスに関連する機能をフィルタリングすることができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許第５５５１０１３号
【特許文献２】米国特許第６００９２６１号
【特許文献３】米国特許第５５７４８７３号
【特許文献４】米国特許第６３０８２５５号
【特許文献５】米国特許第６４６３５８２号
【特許文献６】米国特許第５７９０８２５号
【特許文献７】米国特許出願公報第ＵＳ２００９／０２２２８１４Ａ１号
【特許文献８】米国特許出願公報第２００９／００７０７６０号
【非特許文献】
【００１１】
【非特許文献１】２００９年２月に発行された「IBM(R)z/Architecture(R) Principles of Operation」の第８版（SA22-7832-07）
【非特許文献２】「Virtualization Overview」というＶＭｗａｒｅ（Ｒ）による白書
【非特許文献３】「VMware VMotion and CPUCompatibility」というＶＭｗａｒｅ（Ｒ）による白書
【非特許文献４】ＶＭｗａｒｅ（Ｒ）による「VMware(R)Infrastructure 3」
【非特許文献５】「Intel(R) Itanium(R)Architecture Software Developer’s Manual,Volume2, Revision 2.2 January 2006」
【発明の概要】
【発明が解決しようとする課題】
【００１２】
一実施形態では、多機能命令のうちの選択されたインストール済み機能は隠蔽され、その多機能命令は複数のインストール済み機能のうちの１つの機能を実行するように設計され、この隠蔽は、インストール済み機能の可用性を制御する値を１つまたは複数のプロセッサを含むホスト・コンピュータの多機能命令に設定することであって、１つのプロセッサが多機能命令のうちの第１の複数の前記インストール済み機能を有し、第１の複数のインストール済み機能が１つまたは複数の第１のインストール済み機能と１つまたは複数の第２のインストール済み機能とを含むことと、多機能命令を実行することであって、その多機能命令が命令コード・フィールドを含むことを含み、その実行が、それについて照会機能が指定された多機能命令に応答して、多機能命令にとって使用可能なインストール済み機能を決定するために照会機能を実行することと、照会機能実行が１つまたは複数の第２のインストール済み機能を決定するためにその値を使用することと、照会機能実行が１つまたは複数の第２のインストール済み機能のうちの１つまたは複数が多機能命令にとって使用可能ではないことを示す結果値をストアすることを含む。
【課題を解決するための手段】
【００１３】
一実施形態では、この値はホスト・コンピュータの仮想計算機についてホスト・コンピュータのハイパーバイザによって設定され、仮想計算機が１つまたは複数の論理プロセッサを含み、１つまたは複数の論理プロセッサが１つまたは複数の物理プロセッサに割り当てられ、１つの物理プロセッサが多機能命令のうちの１つまたは複数の第２のインストール済み機能を有し、多機能命令が１つまたは複数の物理プロセッサのうちの１つの物理プロセッサ上の１つまたは複数の論理プロセッサのうちの１つの論理プロセッサによって仮想計算機内で実行される。
【００１４】
一実施形態では、１つまたは複数の第２のインストール済み機能は、多機能命令の命令コードに基づいて決定される。
【００１５】
一実施形態では、ハイパーバイザは、インストール済み機能の可用性を制御する他の値をホスト・コンピュータ・システムの他の仮想計算機上で実行される多機能命令に設定し、１つまたは複数の他の論理プロセッサのうちの１つの他の論理プロセッサによって他の仮想計算機内で他の多機能命令を実行し、他の多機能命令が他の照会機能を指定することに応答して、他の多機能命令にとって使用可能なインストール済み機能を決定するために他の照会機能が実行され、他の照会機能実行が１つまたは複数の第３のインストール済み機能を決定するために他の値を使用し、他の照会機能実行が１つまたは複数の第３のインストール済み機能のうちの１つまたは複数が他の多機能命令にとって使用可能ではないことを示す他の結果値をストアする。
【００１６】
一実施形態では、ストアされた結果値はビット有効値（bit significant value）であり、各ビット位置は１つの機能に対応し、１つのビットが１であることは対応する機能がインストールされていることを示す。
【００１７】
一実施形態では、照会機能は、多機能命令指定機能コードまたは多機能命令指定テスト・ビットによって指定される。
【００１８】
一実施形態では、多機能命令は、暗号命令、タイミング機構機能実行（ＰＴＦＦ：Perform Timing Facility Function）命令、浮動小数点演算実行（Perform Floating Point Operation）命令、またはロック演算実行（Perform Locked Operation）命令のうちのいずれか１つからなるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ命令であり、暗号命令は、暗号メッセージ命令、中間メッセージ計算命令、最終メッセージ・ダイジェスト計算命令、最終メッセージ・ダイジェスト計算命令、メッセージ認証コード計算命令のうちのいずれか１つを含み、多機能命令が照会機能を指定し、多機能命令が暗号命令またはＰＴＦＦ命令であることに応答して、実行すべき多機能命令指定機能コードが入手され、入手された機能コードが照会機能からなり、ストアされた結果値が複数のビットであり、複数のビットのうちの各ビットが対応する機能コードがサポートされるかどうかを示し、多機能命令が暗号命令またはＰＴＦＦ命令であることに応答して、実行すべき多機能命令指定機能コードが入手され、入手された機能コードが照会機能ではなく、入手された機能コードに応じて暗号機能またはＰＴＦＦ機能が実行され、多機能命令がロック演算実行命令または浮動小数点演算実行命令であり、多機能命令指定テスト・ビットが１であることに応答して、多機能命令指定機能コードがインストールされたかどうかの判断が行われ、ストアされた結果値が条件コード値であり、多機能命令がロック演算実行命令または浮動小数点演算実行命令であり、多機能命令指定テスト・ビットが０であることに応答して、入手された機能コードに応じて浮動小数点機能またはロック演算が実行される。
【００１９】
上記ならびに追加の目的、特徴、および利点は以下に示す説明で明らかになるであろう。
【００２０】
その他の諸実施形態および諸態様については、本明細書に詳細に記載され、請求された本発明の一部と見なされる。利点および特徴をさらに理解するために、以下の説明および添付図面を参照されたい。
【００２１】
次に、添付図面に関連して、例としてのみ、本発明の諸実施形態について説明する。
【図面の簡単な説明】
【００２２】
【図１】ホスト・コンピュータ・システムの一例を描写する図である。
【図２】エミュレーション・ホスト・コンピュータ・システムの一例を描写する図である。
【図３】コンピュータ・システムの一例を描写する図である。
【図４】コンピュータ・ネットワークの一例を描写する図である。
【図５】コンピュータ・システムの諸要素の例を描写する図である。
【図６】実行ユニットの一例を描写する図である。
【図７】分岐ユニットの一例を描写する図である。
【図８】ロード／ストア・ユニットの一例を描写する図である。
【図９】ロジカル・パーティショニングの一例を描写する図である。
【図１０】ロジカル・パーティショニング要素の例を描写する図である。
【図１１】ロジカル・パーティショニング要素の例を描写する図である。
【図１２】命令コード・テーブルの一例を描写する流れ図である。
【図１３】ブロッキング技法の一例を描写する流れ図である。
【図１４】ブロッキング技法の一例を描写する流れ図である。
【図１５】ブロッキング技法の一例を描写する流れ図である。
【図１６】機能照会ブロッキング技法を描写する流れ図である。
【図１７】機能照会ブロッキング技法を描写する流れ図である。
【図１８】機能照会ブロッキング技法を描写する流れ図である。
【図１９】機能照会ブロッキング技法を描写する流れ図である。
【図２０】機能照会ブロッキング技法を描写する流れ図である。
【図２１】機能照会ブロッキング技法を描写する流れ図である。
【発明を実施するための形態】
【００２３】
諸実施形態は、ソフトウェア（時には、ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどと呼ばれ、そのいずれも本明細書の教示と一貫したものになるであろう）によって実践することができる。図１を参照すると、ソフトウェア・プログラム・コードの一実施形態は、典型的に、ＣＤ−ＲＯＭドライブ、磁気テープ・ドライブ、またはハード・ディスクなどの長期記憶媒体１１からシステム５０のＣＰＵ（中央演算処理装置）１としても知られるプロセッサによってアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ディスク、またはＣＤ−ＲＯＭなど、データ処理システムで使用するための様々な既知の媒体のいずれかの上に実施することができる。このコードは、このような媒体上で配布される場合もあれば、他のコンピュータ・システムのユーザによる使用のためにこのような他のコンピュータ・システムへのネットワーク１０により、あるコンピュータ・システムのコンピュータ・メモリ２または記憶装置からユーザに配布される場合もある。
【００２４】
代わって、プログラム・コードは、メモリ２内に実施し、プロセッサ・バスを使用してプロセッサ１によってアクセスすることもできる。このようなプログラム・コードは、様々なコンピュータ・コンポーネントと１つまたは複数のアプリケーション・プログラムの機能および対話を制御するオペレーティング・システムを含む。プログラム・コードは、通常、プロセッサ１による処理に使用可能である場合、高密度記憶媒体１１から高速メモリ２にページングされる。メモリ内、物理媒体上にソフトウェア・プログラム・コードを実施するか、ネットワークを介してソフトウェア・コードを配布するか、あるいはその両方を行うための技法および方法は、周知のものであり、本明細書ではこれ以上考察しない。プログラム・コードは、有形媒体（電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含むが、これらに限定されない）上に作成され保管されると、しばしば「コンピュータ・プログラム（computer program product）」と呼ばれる。コンピュータ・プログラム媒体は、典型的に、好ましくはコンピュータ・システム内の処理回路による実行のためにその処理回路によって読み取り可能である。
【００２５】
図３は、諸実施形態を実践することができる代表的なワークステーションまたはサーバ・ハードウェア・システムを示している。図３のシステム１００は、任意選択の周辺装置を含む、パーソナル・コンピュータ、ワークステーション、またはサーバなどの代表的なコンピュータ・システム１０１を含む。ワークステーション１０１は、１つまたは複数のプロセッサ１０６と、既知の技法によりシステム１０１のその他のコンポーネントとプロセッサ（複数も可）１０６との間を接続し、その間の通信を可能にするために使用されるバスとを含む。バスは、プロセッサ１０６をメモリ１０５および、たとえば、ハード・ディスク（たとえば、磁気媒体、ＣＤ、ＤＶＤ、およびフラッシュ・メモリのうちのいずれかを含む）または磁気テープ・ドライブを含むことができる長期記憶装置１０７に接続する。また、システム１０１はユーザ・インターフェース・アダプタも含むことができ、このアダプタはバスを介してマイクロプロセッサ１０６をキーボード１０４、マウス１０３、プリンタ／スキャナ１１０、またはその他のインターフェース・デバイス、あるいはこれらの組み合わせなどの１つまたは複数のインターフェース・デバイスに接続し、その他のインターフェース・デバイスは、タッチ検知スクリーン、デジタル化入力パッドなどの任意のユーザ・インターフェース・デバイスにすることができる。また、バスは、ＬＣＤスクリーンまたはモニターなどのディスプレイ装置１０２をディスプレイ・アダプタを介してマイクロプロセッサ１０６に接続する。
【００２６】
システム１０１は、ネットワーク１０９と通信１０８を行うことができるネットワーク・アダプタを経由してその他のコンピュータまたはコンピュータのネットワークと通信することができる。ネットワーク・アダプタの例は、通信チャネル、トークン・リング、イーサネット、またはモデムである。代わって、ワークステーション１０１は、ＣＤＰＤ（セルラー・デジタル・パケット・データ）カードなどのワイヤレス・インターフェースを使用して通信することもできる。ワークステーション１０１は、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）内のこのようなその他のコンピュータに関連付けられる場合もあれば、ワークステーション１０１は、他のコンピュータなどを含むクライアント／サーバ配置内のクライアントである場合もある。これらの構成のすべてならびに適切な通信ハードウェアおよびソフトウェハは当技術分野で周知のものである。
【００２７】
図４は、一実施形態を実践することができるデータ処理ネットワーク２００を示している。データ処理ネットワーク２００は、無線ネットワークおよび有線ネットワークなどの複数の個別ネットワークを含むことができ、そのそれぞれは複数の個別ワークステーション１０１、２０１、２０２、２０３、２０４を含むことができる。さらに、当業者であれば分かるように、１つまたは複数のＬＡＮを含むことができ、１つのＬＡＮは１つのホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含むことができる。
【００２８】
さらに図４を参照すると、ネットワークは、ゲートウェイ・コンピュータ（クライアント・サーバ２０６）またはアプリケーション・サーバ（データ・リポジトリにアクセスすることができ、ワークステーション２０５から直接アクセスすることもできるリモート・サーバ２０８）などのメインフレーム・コンピュータまたはサーバも含むことができる。ゲートウェイ・コンピュータ２０６は各ネットワーク２０７への入口点として働く。ゲートウェイは、あるネットワーキング・プロトコルを他のネットワーキング・プロトコルに接続するときに必要になる。ゲートウェイ２０６は、好ましくは、通信リンクにより他のネットワーク（たとえば、インターネット２０７）に結合することができる。また、ゲートウェイ２０６は、通信リンクを使用して、１つまたは複数のワークステーション１０１、２０１、２０２、２０３、２０４に直接結合することもできる。ゲートウェイ・コンピュータは、ＩＢＭ社から入手可能なＩＢＭ  ｅＳｅｒｖｅｒ（ＴＭ）  ｚＳｅｒｉｅｓ（Ｒ）  ｚ９（Ｒ）サーバを使用して実装することができる。
【００２９】
ソフトウェア・プログラミング・コードは、典型的に、ＣＤ−ＲＯＭドライブまたはハード・ディスクなどの長期記憶媒体１０７からシステム１０１のプロセッサ１０６によってアクセスされる。ソフトウェア・プログラミング・コードは、ディスケット、ハード・ディスク、またはＣＤ−ＲＯＭなど、データ処理システムで使用するための様々な既知の媒体のいずれかの上に実施することができる。このコードは、このような媒体上で配布される場合もあれば、他のコンピュータ・システムのユーザによる使用のためにこのような他のコンピュータ・システムへのネットワークにより、あるコンピュータ・システムのメモリまたは記憶装置からユーザ２１０、２１１に配布される場合もある。
【００３０】
代わって、プログラミング・コード１１１は、メモリ１０５内に実施し、プロセッサ・バスを使用してプロセッサ１０６によってアクセスすることもできる。このようなプログラミング・コードは、様々なコンピュータ・コンポーネントと１つまたは複数のアプリケーション・プログラム１１２の機能および対話を制御するオペレーティング・システムを含む。プログラム・コードは、通常、プロセッサ１０６による処理に使用可能である場合、高密度記憶媒体１０７から高速メモリ１０５にページングされる。メモリ内、物理媒体上にソフトウェア・プログラミング・コードを実施するか、ネットワークを介してソフトウェア・コードを配布するか、あるいはその両方を行うための技法および方法は、周知のものであり、本明細書ではこれ以上考察しない。プログラム・コードは、有形媒体（電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含むが、これらに限定されない）上に作成され保管されると、しばしば「コンピュータ・プログラム」と呼ばれる。コンピュータ・プログラム媒体は、典型的に、好ましくはコンピュータ・システム内の処理回路による実行のためにその処理回路によって読み取り可能である。
【００３１】
プロセッサにとって最も容易に使用可能であるキャッシュ（通常はプロセッサの他のキャッシュより高速で小さい）は最下位（Ｌ１またはレベル１）キャッシュであり、主記憶装置（メイン・メモリ）は最上位レベル・キャッシュ（３つのレベルがある場合はＬ３）である。最下位レベル・キャッシュは、しばしば、実行すべき機械命令を保持する命令キャッシュ（Ｉ−Ｃａｃｈｅ）とデータ・オペランドを保持するデータ・キャッシュ（ＤＣａｃｈｅ）に分割される。
【００３２】
図５を参照すると、プロセッサ１０６について模範的なプロセッサの一実施形態が描写されている。典型的に、プロセッサのパフォーマンスを改善するために、１つまたは複数のレベルのキャッシュ３０３を使用して、メモリ・ブロックをバッファリングする。キャッシュ３０３は、使用される可能性のあるメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは、６４、１２８、または２５６バイトのメモリ・データである。個別キャッシュは、しばしば、データをキャッシュするためではなく、命令をキャッシュするために使用される。キャッシュ・コヒーレンス（メモリおよびキャッシュ内のラインのコピーの同期）は、しばしば、当技術分野で周知の様々な「スヌープ」アルゴリズムによって提供される。プロセッサ・システムの主記憶装置１０５は、しばしば、キャッシュと呼ばれる。４つのレベルのキャッシュ３０３を有するプロセッサ・システムでは、主記憶装置１０５は、典型的に、より高速であり、コンピュータ・システムにとって使用可能な不揮発性記憶装置（ＤＡＳＤ、磁気テープなど）の一部分を保持するだけであるので、時にはレベル５（Ｌ５）キャッシュと呼ばれる。主記憶装置１０５は、オペレーティング・システムによって主記憶装置１０５にページインされたデータのページおよび主記憶装置１０５からページアウトされたデータのページを「キャッシュ」する。
【００３３】
プログラム・カウンタ（命令カウンタ）３１１は、実行すべき現在の命令のアドレスを追跡する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサ内のプログラム・カウンタは６４ビットであり、従来のアドレッシング限界をサポートするために３１または２４ビットに切り捨てることができる。プログラム・カウンタは、典型的に、コンテキスト・スイッチ中に持続するようにコンピュータのＰＳＷ（プログラム状況ワード）に実施される。したがって、進行中のプログラムは、プログラム・カウンタ値を有し、たとえば、オペレーティング・システムによって割り込むことができる（プログラム環境からオペレーティング・システム環境へのコンテキスト・スイッチ）。プログラムがアクティブではない間、プログラムのＰＳＷがプログラム・カウンタ値を維持し、オペレーティング・システムが実行中である間、オペレーティング・システムのプログラム・カウンタ（ＰＳＷ内）が使用される。典型的に、プログラム・カウンタは、現在の命令のバイト数に等しい量だけ増分される。ＲＩＳＣ（縮小命令セット・コンピューティング）命令は、典型的に、固定長であり、ＣＩＳＣ（複雑命令セット・コンピューティング）命令は、典型的に、可変長である。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの命令は、２、４、または６バイトの長さを有するＣＩＳＣ命令である。プログラム・カウンタ３１１は、たとえば、コンテキスト・スイッチ動作または分岐命令の分岐獲得動作（Branch taken operation）のいずれかによって変更される。コンテキスト・スイッチ動作では、現在のプログラム・カウンタ値は実行中のプログラムに関するその他の状態情報（条件コードなど）とともにプログラム状況ワード（ＰＳＷ）に保存され、実行すべき新しいプログラム・モジュールの命令を指し示す新しいプログラム・カウンタ値がロードされる。分岐命令の結果をプログラム・カウンタ３１１にロードすることにより、プログラムが判断を行うかまたはプログラム内でループできるようにするために、分岐獲得動作が実行される。
【００３４】
典型的に、命令取り出しユニット３０５は、プロセッサ１０６のために命令を取り出すために使用される。取り出しユニットは、「次の順次命令」、分岐獲得命令のターゲット命令、またはコンテキスト・スイッチ後のプログラムの第１の命令を取り出す。現代の命令取り出しユニットは、しばしば、事前取り出しされた命令を使用できる可能性に基づいて、命令を推論的に事前取り出しするために事前取り出し技法を使用する。たとえば、取り出しユニットは、次の順次命令およびその後の順次命令の追加のバイトを含む１６バイトの命令を取り出すことができる。
【００３５】
取り出された命令は、次に、プロセッサ１０６によって実行される。一実施形態では、取り出された命令（複数も可）は、取り出しユニットのディスパッチ・ユニット３０６に渡される。ディスパッチ・ユニットは、命令（複数も可）をデコードし、デコードされた命令（複数も可）に関する情報を適切なユニット３０７、３０８、３１０に転送する。実行ユニット３０７は、典型的に、デコードされた算術命令に関する情報を命令取り出しユニット３０５から受け取り、その命令の命令コードに応じてオペランドについて算術演算を実行する。オペランドは、好ましくは、メモリ１０５、設計されたレジスタ３０９、または実行中の命令の即値フィールドから実行ユニット３０７に提供される。実行の結果は、ストアされる場合、メモリ１０５、レジスタ３０９、またはその他のマシン・ハードウェア（制御レジスタ、ＰＳＷレジスタなど）にストアされる。
【００３６】
図９を参照すると、仮想計算機（ＶＭ）環境の一例が示されている。ハイパーバイザ・プログラム（それ自体がＩＢＭによるｚＶＭなどのオペレーティング・システム（ＯＳ）である可能性がある）は、複数の物理プロセッサと、１つの物理メイン・メモリと、記憶装置、ネットワーク、ディスプレイなどを含む入出力周辺装置と通信するための複数の物理アダプタとを含む、マルチプロセッサ「ハードウェア」上で実行される。ハイパーバイザは、ＯＳおよびアプリケーション・プログラムを含むソフトウェアが仮想リソースを使用する仮想計算機内で実行できるように、ＶＭイメージ（たとえば、ＶＭ１、ＶＭ２、およびＶＭ３）を作成する。ＶＭ内で実行されるソフトウェアは、それがＶＭ内で実行していることに気付かず、それらが物理リソースである場合のように仮想リソースを使用して動作する。ＩＢＭによるｚＶＭオペレーティング・システムは「ゲスト」イメージを作成することができ、それぞれのゲスト・イメージは事実上、仮想計算機である。さらに、いずれのｚＶＭゲストも「第２レベル・ゲスト」を作成してそれ自体がｚＶＭ  ＯＳを実行することができる。したがって、仮想計算機（ゲスト・イメージ）は仮想計算機の階層にネストすることができ、それぞれのｚＶＭはそのゲスト・イメージのためにハイパーバイザの役割を果たす。これに反して、マルチプロセッサ・プラットフォームは「物理的にパーティショニング」することができ、それぞれのフィジカル・パーティションにはリソース（プロセッサ、メモリ、入出力）を割り当てることができる。それぞれのフィジカル・パーティション内で実行されるソフトウェアはそのパーティションに割り当てられていないマシンのリソースに気付かないので、そのパーティションはＶＭになる。したがって、マシンのリソースは「仮想化」される。他の実施形態では、ホスト・マシンはロジカル・パーティションをサポートすることができ、それぞれのロジカル・パーティションがＶＭになる。
【００３７】
仮想化については、たとえば、「VirtualizationOverview」および「VMware VMotion and CPU Compatibility」というＶＭｗａｒｅ（Ｒ）による白書ならびにＶＭｗａｒｅ（Ｒ）による「VMware(R) Infrastructure 3」に描写されている。さらに、２００７年９月６日に出願されたKhatri他による「VIRTUAL MACHINE (VM) MIGRATIONBETWEEN PROCESSOR ARCHITECTURES」という米国特許出願公報第２００９／００７０７６０号では、ＣＰＵＩＤレジスタの選択されたビットをマスクすることによりマシンの同様のプール間でＶＭマイグレーションを可能にするために特定の特徴セットをエミュレートすることについて論じている。
【００３８】
図１０を参照すると、それぞれのＶＭは、異なるＯＳと異なるアプリケーションを有することができる。たとえば、ＯＳ１はＩＢＭによるｚ／ＯＳにすることができ、ＯＳ２はＩＢＭによるｚＬｉｎｕｘにすることができ、あるいはすべてのＯＳがｚ／ＯＳなどの同じＯＳにすることもできる。
【００３９】
ハイパーバイザは、物理的な特徴、リソース、および機能に基づいて、それぞれのＶＭについて論理的な特徴、リソース、および機能を作成する。システムの一例では、動的アドレス変換によりそれぞれのＶＭに物理メモリ部分が割り振られ、物理プロセッサは入出力機能のようにＶＭ間で時分割される。
【００４０】
図１１を参照すると、それぞれの論理プロセッサは、ハイパーバイザ管理の論理特徴マスク（Logical Feature Mask）を経由して物理特徴レジスタ（physicalfeature register）にアクセスすることができる。したがって、論理プロセッサ上で実行されるソフトウェアは、実際のプロセッサが異なるアーキテクチャ・レベルにある場合でも、共通のプロセッサ・アーキテクチャ・レベル上で動作しているという外観を示すことができる。一例では、物理特徴レジスタは、Ｉｎｔｅｌプロセッサのアーキテクチャ・レベルならびにプログラマにとって使用可能な特定の特徴を示すＩｎｔｅｌ  ＣＰＵＩＤレジスタにすることができる。論理特徴マスクは、ＶＭが対応する論理プロセッサのＣＰＵＩＤを照会するときに仮想計算機（ＶＭ）内のソフトウェアに物理プロセッサＣＰＵＩＤのすべてまたはそのサブセットを提供するようにプログラミングされる。
【００４１】
Ｉｎｔｅｌ（Ｒ）によるｘ８６プロセッサ・アーキテクチャ、すなわち、「Intel(R)Itanium(R) Architecture Software Developer’sManual, Volume 2, Revision 2.2 January 2006」には、プロセッサによってサポートされる特徴を識別するためのＣＰＵＩＤレジスタが記載されている。ＣＰＵＩＤレジスタは、特権が与えられておらず、ｉｎｄｉｒｅｃｔ  ｍｏｖ  （ｆｒｏｍ）命令を使用してアクセスされる。レジスタＣＰＵＩＤ数を上回るすべてのレジスタは予約され、それらがアクセスされた場合、予約レジスタ／フィールド障害を発生させる。このような動作については、書き込みは許可されず、いかなる命令も存在しない。ベンダ情報は、ＣＰＵＩＤレジスタ０および１に位置し、プロセッサ実装のためにベンダ名をＡＳＣＩＩで指定する。ストリングの終了後から１６番目のバイトまでのすべてのバイトはゼロになる。それ以前のＡＳＣＩＩ文字は、下位番号レジスタおよび下位番号のバイト位置に置かれる。ＣＰＵＩＤレジスタ４は、プロセッサの特徴に関する一般的なアプリケーションレベルの情報を提供する。これは、所与の特徴がそのプロセッサ・モデルでサポートされるかどうかを示すために使用される１組のフラグ・ビットを含む。１つのビットが１であるとき、その特徴はサポートされ、０であるとき、その特徴はサポートされない。新しい特徴が将来のプロセッサ・モデルに追加される（またはそこから除去される）と、新しい特徴の存在（または除去）は新しい特徴ビットによって示される。ＣＰＵＩＤレジスタ４は論理的に２等分され、そのどちらの部分も一般的な特徴および機能情報を含むが、異なる使用法モデルおよびアクセス機能を有し、この情報は任意の使用可能または使用不可特徴の状況を反映している。ＣＰＵＩＤレジスタ４の上半分と下半分はいずれも間接レジスタ移動（move indirect register）命令によりアクセス可能であり、実装例次第で、このアクセスのための待ち時間は長くなる可能性があり、このアクセス方式は自己選択を使用する短待ち時間コード・バージョン管理には適していない。加えて、ＣＰＵＩＤレジスタ４の上半分はテスト特徴命令を使用してもアクセス可能であり、このアクセスの待ち時間はテスト・ビット命令のものに匹敵し、このアクセス方式は自己選択を使用する短待ち時間コード・バージョン管理を可能にする。
【００４２】
「z/Architecture Principles ofOperation」には、Ｉｎｔｅｌ  ＣＰＵＩＤレジスタのように、基礎をなす中央演算処理装置（ＣＰＵ）またはプロセッサの特徴（またはアーキテクチャ・レベル）の知識をソフトウェアに提供する、拡張機構リスト・ストア（ＳＴＦＬＥ：Store Facility List Extended）命令が記載されている。ＳＴＦＬＥ命令は、以下の表１に示すフォーマットを有する。
【表１】
0005893012.tif 000002
【００４３】
ＳＴＦＬＥ命令（表１）は、命令コード・フィールド・ビット（０〜１５）と、レジスタ・フィールドＢ２（１６〜１９）と、変位（即値）フィールドＤ２（２０〜３１）とを含む。マシンによってＳＴＦＬＥ命令を実行すると、その命令のＢ２フィールドによって指定されたレジスタの内容を１２ビットのＤ２即値フィールドに加えることによって決定されたプログラム・メモリ位置内の機構に関する情報を提供するビットのリストがストアされ、そのメモリ位置は第２オペランド・アドレス（（Ｂ２）＋Ｄ２）によって指定されたダブルワード（８バイト、１つのワードは４バイトである）から始まる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅにおけるプログラム・メモリ位置のアドレスは動的アドレス変換（ＤＡＴ）の対象になる。
【００４４】
予約ビットは、ある機構を表すために現在割り当てられていないビットである。機構ビットが割り当てられている最左端ダブルワードの場合、予約ビットはゼロとしてストアされる。あるモデルについて最高位番号の機構ビットが割り当てられているダブルワードの右側のダブルワードは、ストアされる場合もあれば、ストアされない場合もある。アクセス例外およびＰＥＲイベントは、ストアされないダブルワードについて認識されない。ダブルワード内の第２オペランドのサイズは、汎用レジスタ０のビット５６〜６３に指定された値より１大きい。汎用レジスタ０の残りのビットは割り当てられておらず、ゼロを含むはずであり、そうではない場合、プログラムは将来、矛盾せずに動作しない可能性がある。
【００４５】
第２オペランドのサイズが、あるモデルについて割り当てられた機構ビットのすべてを含むのに十分な大きさである場合、完全な機構リストが第２オペランド位置にストアされ、汎用レジスタ０のビット５６〜６３がそのモデルについて割り当てられた機構ビットのすべてを含むのに必要なダブルワードの数より１少ない数を含むように更新され、条件コード０が設定される。
【００４６】
第２オペランドのサイズが、あるモデルについて割り当てられた機構ビットのすべてを含むのに十分な大きさではない場合、第２オペランド・サイズによって指定されたダブルワードの数のみがストアされ、汎用レジスタ０のビット５６〜６３がそのモデルについて割り当てられた機構ビットのすべてを含むのに必要なダブルワードの数より１少ない数を含むように更新され、条件コード３が設定される。
【００４７】
この命令を実行した結果、条件コード値が設定され、その条件コード値はプログラム状況ワード（ＰＳＷ）とともにコンテキスト・スイッチ中に保存される。
【００４８】
特殊条件：
第２オペランドはダブルワード境界上に指定しなければならず、そうではない場合、指定例外が認識される。
【００４９】
結果条件コード：
０  完全な機構リストがストアされた
１  −
２  −
３  不完全な機構リストがストアされた
【００５０】
プログラム例外：
・アクセス（ストア、第２オペランド）
・動作（拡張機構リスト・ストア機構がインストールされない場合）
・指定
【００５１】
プログラミング上の注意：
拡張機構リスト・ストアのパフォーマンスは、記憶装置内のバイトを単純にテストする場合よりかなり遅くなる可能性がある。ある機構の存在について頻繁にテストする必要があるプログラム−−たとえば、その機構をあるパスで使用するが、他のパスでは使用しないというデュアルパス・コード−−は、初期設定中に拡張機構リスト・ストア命令を１回実行しなければならない。その後、プログラムは、マスク下テスト（TEST UNDER MASK）などの命令を使用して、ストアされている結果を検査することにより、その機構の存在についてテストすることができる。
【００５２】
条件コード０が設定された場合、汎用レジスタ０のビット５６〜６３は、ストアされたダブルワードの数を示すように更新される。プログラムが汎用レジスタ０内の結果を無視することを選択した場合、拡張機構リスト・ストアを実行する前に記憶装置内の第２オペランド全体がゼロに設定されることを保証しなければならない。
【００５３】
表２は、従来技術のｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ割り当てＳＴＦＬＥビットとそれぞれの意味を示している。１つのビットは、その意味が真である場合、現在のアーキテクチャ・モードにかかわらず、１に設定される。特定のアーキテクチャ・モードに適用されると言われない限り、１つの意味が現在のアーキテクチャ・モードに適用される。
【００５４】
割り当てられていないビットは新しい機構を示すために予約され、これらのビットは将来、１としてストアすることができる。
【００５５】
従来技術のｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ機構リストは、以下の表２に示されているように定義される。
表２
ビットが１のときのビットの意味：
０  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの第７章および第１０章の命令要約図に「Ｎ３」とマークされている命令がインストールされる。
１  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードがインストールされる。
２  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードがアクティブである。このビットがゼロである場合、ＥＳＡ／３９０アーキテクチャ・モードがアクティブである。
３  ＤＡＴ強化機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。ＤＡＴ強化機構は、ＤＡＴテーブル項目無効化（ＩＤＴＥ：INVALIDATE DATTABLE ENTRY）命令および比較交換パージ（ＣＳＰＧ：COMPARE AND SWAP AND PURGE）命令を含む。
４  ＤＡＴテーブル項目無効化（ＩＤＴＥ）は、１つまたは複数のセグメント・テーブル項目が無効化されたときに、結合された領域セグメント・テーブル項目を選択的にクリアすることにより、無効化クリア動作を実行する。また、ＩＤＴＥは、ＡＳＣＥによるクリア動作も実行する。ビット４が１でない限り、ＩＤＴＥは単純にすべてのＴＬＢをパージする。ビット４が１である場合、ビット３は１である。
５  ＤＡＴテーブル項目無効化（ＩＤＴＥ）は、１つまたは複数の領域テーブル項目が無効化されたときに、結合された領域セグメント・テーブル項目を選択的にクリアすることにより、無効化クリア動作を実行する。ビット５が１である場合、ビット３および４は１である。
６  ＡＳＮ／ＬＸ再利用（ASN-and-LX reuse）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
７  拡張機構リスト・ストア機構がインストールされる。
８  拡張ＤＡＴ機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
９  実行状況感知（sense-running-status）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
１０  条件付きＳＳＫＥ機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
１１  構成トポロジ機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
１６  拡張変換機構２がインストールされる。
１７  メッセージ・セキュリティ・アシストがインストールされる。
１８  長変位（long-displacement）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
１９  長変位機構が高いパフォーマンスを有する。ビット１９が１である場合、ビット１８は１である。
２０  ＨＦＰ乗算加算／減算（HFP-multiply-and-add/subtract）機構がインストールされる。
２１  拡張即値（extended-immediate）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
２２  拡張変換機構３がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
２３  ＨＦＰ非正規拡張（HFP-unnormalized-extension）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
２４  ＥＴＦ２強化機構がインストールされる。
２５  急速クロック・ストア（store-clock-fast）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
２６  解析強化機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
２７  任意選択指定移動（move-with-optional-specifications）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
２８  ＴＯＤクロック・ステアリング（TOD-clock-steering）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
３０  ＥＴＦ３強化機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
３１  ＣＰＵ時間抽出機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
３２  比較交換ストア（compare-and-swap-and-store）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
３３  比較交換ストア機構２がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
３４  汎用命令拡張（general-instructions-extension）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
３５  拡張実行（execute-extensions）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
３９  ＩＢＭ内部使用に割り当てられている。
４１  浮動小数点サポート強化機構（ＦＰＲ−ＧＲ転送、ＦＰＳ符号操作、およびＤＦＰ丸め）がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
４２  ＤＦＰ（１０進浮動小数点）機構がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
４３  ＤＦＰ（１０進浮動小数点）機構が高いパフォーマンスを有する。ビット４３が１である場合、ビット４２は１である。
４４  ＰＦＰＯ命令がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードでインストールされる。
【００５６】
１つの命令は、アーキテクチャ内の単一機能を実行するか、場合によっては、複数の選択可能機能のうちのいずれかを実行することができる。１つの命令について定義された選択可能機能はマシンごとに異なる可能性がある。たとえば、多機能命令は、設計された命令セットに初めて導入された場合、いくつかの選択可能機能しか有することができない。その後の設計された命令セットは、前に導入された多機能命令に対してより多くの選択可能機能を導入することができる。一実施形態では、ＶＭには物理プロセッサの選択可能機能のサブセットを割り当てることができ、それにより、ＶＭの論理プロセッサ上で実行される命令は、論理プロセッサの使用可能機能のリストを照会することができ、物理プロセッサがもっと多くの選択可能機能を実行できる場合でも、ＶＭに割り当てられた機能のみが返される。一実施形態では、これは、使用可能機能の縮小リストを提示するために、ゲスト（仮想計算機）によるこの照会機能の実行をハイパーバイザがトラップまたはインターセプトできるようにする命令指示機能インターセプト機構（ＦＩＩＩＦ：Function-Indicating-Instruction Interception Facility）により実施される。他の実施形態では、ハイパーバイザは、たとえば、ビット・マスクにより、ゲストに報告すべき機能のセットを指定し、多機能命令の照会機能がこのリストを報告する。さらに、一実施形態では、論理プロセッサ上で実行される命令は、選択された選択可能機能を実行しようと試みる場合、プログラム例外を経験することになる。
【００５７】
インストール済み機能の存在を照会することができ、インストール済み機能のうちの選択された１つの機能を実行することもできる多機能命令の場合、照会機能を含むインストール済み機能の実行は、最良のパフォーマンスを達成するために、ハードウェア（たとえば、回路およびマイクロコードを含む）で実行することができる。一実施形態では、ＦＩＩＩＦ機能がインストールされると、照会機能は、ハードウェアではなく、実行用のソフトウェアによりインターセプトされる。したがって、照会機能の実行のみが、どのインストール済み機能を報告するかを決定するために追加の遅延に遭遇することになる。一実施形態では、照会機能を実行し、仮想計算機のために適切な結果を返す、ハイパーバイザ・コードに対してインターセプトが行われる。
【００５８】
選択可能機能を有する命令の一例は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの暗号メッセージ命令である。
【００５９】
暗号メッセージ（ＫＭ）命令は、複数の暗号メッセージ機能のうちのいずれかを実行することができる。暗号メッセージによって提供される機能のうちの１つは、プロセッサによってサポートされる暗号メッセージ機能のビット有効リストについてプロセッサに照会することである。
【００６０】
暗号メッセージ命令（表３）のフォーマットは以下の通りであり、ここでＲ１は第１の汎用レジスタを指定し、Ｒ２は第２の汎用レジスタを指示する。
【表２】
0005893012.tif 000003
【００６１】
暗号メッセージ命令（表３）の実行は以下の通りである。
暗黙の汎用レジスタ０内の機能コードによって指定された機能が実行される。
命令のビット１６〜２３は無視される。
汎用レジスタ０のビット位置５７〜６３は機能コードを含む。
【００６２】
暗号メッセージおよびチェーニング付き暗号メッセージについて、それぞれ、現在割り当てられている機能コード（０〜３および１８〜２０）は表４に示されている。その他の機能コードはいずれも割り当てられていない。暗号機能の場合、ビット５６は、暗号化動作が実行されるかまたは暗号化解除動作が実行されるかを指定する修飾ビットである。この修飾ビットは、他のすべての機能について無視される。汎用レジスタ０の他のすべてのビットは無視される。
【００６３】
暗黙の汎用レジスタ１は、記憶装置内のパラメータ・ブロックの最左端バイトの論理アドレスを含む。２４ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置４０〜６３の内容がアドレスを構成し、ビット位置０〜３９の内容は無視される。３１ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置３３〜６３の内容がアドレスを構成し、ビット位置０〜３２の内容は無視される。６４ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置０〜６３の内容がアドレスを構成する。
【００６４】
照会機能は、その他の機能の可用性を示す手段を提供する。命令のフィールドによって指定された汎用レジスタの内容（Ｒ１、Ｒ２）およびＲ２＋１は、照会機能については無視される。
【００６５】
その他のすべての機能の場合、第２オペランド（Ｒ２によって指定される）は、パラメータ・ブロック内の暗号鍵を使用して機能コードによって指定された通りに暗号化され、その結果は第１オペランド位置に置かれる。
【００６６】
チェーニング付き暗号メッセージの場合、暗号化はパラメータ・ブロック内の初期チェーニング値も使用し、このチェーニング値は動作の一部として更新される。２４ビットのアドレッシングのためのレジスタ使用については表５に示されている。
【００６７】
Ｒ１フィールドは汎用レジスタを指定するものであって、偶数番号レジスタを指定しなければならず、そうではない場合、指定例外が認識される。
【００６８】
Ｒ２フィールドは汎用レジスタの奇偶対を指定するものであって、偶数番号レジスタを指定しなければならず、そうではない場合、指定例外が認識される。
【００６９】
第１および第２オペランドの最左端バイトの位置は、それぞれ、Ｒ１およびＲ２汎用レジスタの内容によって指定される。第２オペランド位置のバイト数は汎用レジスタＲ２＋１に指定される。第１オペランドは第２オペランドと同じ長さである。
【００７０】
動作の一部として、汎用レジスタＲ１およびＲ２内のアドレスは処理されたバイト数だけ増分され、汎用レジスタＲ２＋１内の長さは同じ数だけ減分される。アドレスおよび長さの形成および更新はアドレッシング・モードに依存する。
【００７１】
２４ビットのアドレッシング・モードでは、汎用レジスタＲ１およびＲ２のビット位置４０〜６３の内容が、それぞれ、第１および第２オペランドのアドレスを構成し、ビット位置０〜３９の内容は無視され、更新されたアドレスのビット４０〜６３は汎用レジスタＲ１およびＲ２内の対応するビットに取って代わり、更新されたアドレスのビット位置４０からの繰り上がりは無視され、汎用レジスタＲ１およびＲ２のビット位置３２〜３９の内容はゼロに設定される。３１ビットのアドレッシング・モードでは、汎用レジスタＲ１およびＲ２のビット位置３３〜６３の内容が、それぞれ、第１および第２オペランドのアドレスを構成し、ビット位置０〜３２の内容は無視され、更新されたアドレスのビット３３〜６３は汎用レジスタＲ１およびＲ２内の対応するビットに取って代わり、更新されたアドレスのビット位置３３からの繰り上がりは無視され、汎用レジスタＲ１およびＲ２のビット位置３２の内容はゼロに設定される。６４ビットのアドレッシング・モードでは、汎用レジスタＲ１およびＲ２のビット位置０〜６３の内容が、それぞれ、第１および第２オペランドのアドレスを構成し、更新されたアドレスのビット０〜６３は汎用レジスタＲ１およびＲ２の内容に取って代わり、ビット位置０からの繰り上がりは無視される。
【００７２】
２４ビットと３１ビットのどちらのアドレッシング・モードでも、汎用レジスタＲ２＋１のビット位置３２〜６３の内容が、第１および第２オペランド内のバイト数を指定する３２ビットの符号なし２進整数を形成し、ビット位置０〜３１の内容は無視され、更新された値のビット３２〜６３は汎用レジスタＲ２＋１内の対応するビットに取って代わる。６４ビットのアドレッシング・モードでは、汎用レジスタＲ２＋１のビット位置０〜６３の内容が、第１および第２オペランド内のバイト数を指定する６４ビットの符号なし２進整数を形成し、更新された値は汎用レジスタＲ２＋１の内容に取って代わる。
【００７３】
２４ビットまたは３１ビットのアドレッシング・モードでは、汎用レジスタＲ１、Ｒ２、およびＲ２＋１のビット位置０〜３１の内容は常に変わらない。以下の図は、上述の汎用レジスタの内容を描写している。
【００７４】
アクセス・レジスタ・モードでは、アクセス・レジスタ１、Ｒ１、およびＲ２は、それぞれ、パラメータ・ブロック、第１および第２オペランドを含むアドレス・スペースを指定する。
【００７５】
この結果は、処理が第１および第２の両方のオペランドの左端から始まって、ブロックごとに右に進む場合のように得られる。汎用レジスタＲ２＋１内に指定されたように第２オペランド内のバイト数が処理され、第１オペランド位置に置かれたとき（通常完了という）または第２オペランドの長さより小さく、ＣＰＵが決定したブロック数が処理されたとき（部分完了という）に、動作が終了する。ＣＰＵが決定したブロック数はモデルに依存し、命令が実行されるたびに異なる数になる可能性がある。ＣＰＵが決定したブロック数は、通常、非ゼロである。特定の異常な状況では、この数がゼロになる可能性があり、進行なしで条件コード３が設定される可能性がある。しかし、ＣＰＵは、この進行なしのケースの無限再発を防止する。
【００７６】
以下の状況のいずれかが発生した場合、第１オペランド位置およびチェーニング値フィールド内の結果は予測不能である。
暗号鍵フィールドが第１オペランドのいずれかの部分にオーバラップする。
チェーニング値フィールドが第１オペランドまたは第２オペランドのいずれかの部分にオーバラップする。
第１および第２オペランドが破壊的にオーバラップする。処理が一度に１バイトずつ左から右に実行されると想定して、データがそこに移動した後で第１オペランド位置がソースとして使用されるときに、オペランドは破壊的にオーバラップすると言われる。
【００７７】
通常完了により動作が終了すると、条件コード０が設定され、Ｒ２＋１内の結果値はゼロになる。部分完了により動作が終了すると、条件コード３が設定され、Ｒ２＋１内の結果値は非ゼロになる。
【００７８】
ストレージ変更ＰＥＲイベントが認識されると、そのイベントが報告される前に、４Ｋより少ない追加バイトが第１オペランド位置にストアされる。
【００７９】
第２オペランド長が最初にゼロである場合、パラメータ・ブロック、第１オペランド、および第２オペランドはアクセスされず、汎用レジスタＲ１、Ｒ２、およびＲ２＋１は変更されず、条件コード０が設定される。
【００８０】
Ｒ１フィールドとＲ２フィールドの内容が同じである場合、指定されたレジスタの内容は、処理されたバイト数の２倍ではなく、処理されたバイト数だけ増分される。
【００８１】
その他のＣＰＵおよびチャネル・プログラムによって観察されるように、パラメータ・ブロックおよびストレージ・オペランドに対する参照は多重アクセス参照になる可能性があり、これらの記憶位置へのアクセスは必ずしもブロックコンカレント（block-concurrent）ではなく、これらのアクセスまたは参照のシーケンスは未定義である。
【００８２】
特定の異常な状況では、処理された第１および第２オペランドの最後のユニットを反映するためにレジスタおよびチェーニング値を更新せずに条件コード３を設定することにより、命令実行が完了する可能性がある。このケースで処理されたユニットのサイズは状況およびモデルに依存するが、処理されたが報告されていない第１および第２オペランドの一部分が記憶装置内でオーバラップしないように制限される。いずれのケースでも、適用可能であれば、処理された第１オペランド位置のすべてについて、変更ビットが設定され、ＰＥＲストレージ変更イベントが報告される。
【００８３】
オペランドのうち、命令の単一実行で処理されるより大きい部分について、アクセス例外が報告される可能性があるが、オペランドの長さを超える位置または処理されている現在の位置を４Ｋバイトより大きく超える位置については、アクセス例外は認識されない。
【００８４】
暗号メッセージに関する機能コードは以下の通りである。
【表３】
0005893012.tif 000004
【表４】
0005893012.tif 000005
【００８５】
一例として暗号メッセージ命令を使用すると、マシンの一例は暗号メッセージ機能を実装することができる。この実装例では、ホスト・プロセッサは示されている機能のすべて（機能コード０〜３および１８〜２０）を実装することができる。ホスト・オペレーティング・システム（ＯＳ）（またはハイパーバイザ）は、ゲストＯＳのために１つまたは複数の仮想計算機を作成することができる。仮想計算機は、暗号メッセージ命令を有するものではなく、前のレベルのアーキテクチャについて定義することができる。
【００８６】
一実施形態によれば、命令ブロッキング機構がインストールされ、暗号メッセージ命令がＶＭ用のブロック化命令として指定された場合、基礎をなすホスト・マシンが暗号メッセージ命令をサポートしている場合でも、仮想計算機は、仮想計算機内で実行されるプログラムによる暗号メッセージ命令実行を許可しないであろう。ＶＭ内で暗号メッセージ命令を実行しようと試みると、その結果、プログラム・チェック（プログラム例外）が発生するであろう。
【００８７】
他の実施形態によれば、機能ブロッキング機構がインストールされ、暗号メッセージ機能のサブセット（たとえば、機能コード０〜３）のみがＶＭ内で許可された場合、基礎をなすホスト・マシンが機能コード（０〜３および１８〜２０）をサポートする暗号メッセージ命令をサポートしている場合でも、仮想計算機は、暗号メッセージ実行を許可するであろうが、仮想計算機内で実行されるプログラムによる、０〜３以外の機能コードを有する暗号メッセージ命令の暗号メッセージ命令実行を許可しないであろう。１８〜２０のうちのいずれかなど、０〜３以外の機能コードを有する暗号メッセージ命令を実行しようと試みると、その結果、プログラム・チェック（プログラム例外）が発生するであろう。
【００８８】
他の実施形態では、機能テスト／照会機構がインストールされ、暗号メッセージ機能のサブセット（たとえば、機能コード０〜３）のみがＶＭ内で許可された場合、基礎をなすホスト・マシンが機能コード０〜３および１８〜２０をサポートしている場合でも、暗号メッセージ機能の暗号メッセージ照会を実行すると、機能コード０〜３のみが返されるであろう。
【００８９】
ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ多機能命令のその他の例：
中間メッセージ・ダイジェスト計算（ＫＩＭＤ）および最終メッセージ・ダイジェスト計算（ＫＬＭＤ）命令：
コンピュータ・システムによって実行されると、汎用レジスタ０内の機能コードによって指定された機能が実行される。この命令のビット１６〜２３およびＲ１フィールドは無視される。汎用レジスタ０のビット位置５７〜６３は機能コードを含む。汎用レジスタ０のビット５６はゼロでなければならず、そうではない場合、指定例外が認識される。汎用レジスタ０の他のすべてのビットは無視される。汎用レジスタ１は記憶装置内のパラメータ・ブロックの最左端バイトの論理アドレスを含む。２４ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置４０〜６３の内容がアドレスを構成し、ビット位置０〜３９の内容は無視される。３１ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置３３〜６３の内容がアドレスを構成し、ビット位置０〜３２の内容は無視される。６４ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置０〜６３の内容がアドレスを構成する。その他の機能コードはいずれも割り当てられていない。照会機能は、その他の機能の可用性を示す手段を提供する。汎用レジスタＲ２およびＲ２＋１の内容は照会機能については無視される。その他のすべての機能の場合、第２オペランドは、パラメータ・ブロック内の初期チェーニング値を使用して機能コードによって指定された通りに処理され、その結果はチェーニング値に取って代わる。最終メッセージ・ダイジェスト計算の場合、動作はパラメータ・ブロック内のメッセージ・ビット長も使用する。第２オペランド位置の終わりに達したときまたはＣＰＵが決定したバイト数が処理されたときのうち、どちらか先に発生するまで、動作が進行する。その結果は条件コードに示される。Ｒ２フィールドは汎用レジスタの奇偶対を指定するものであって、偶数番号レジスタを指定しなければならず、そうではない場合、指定例外が認識される。第２オペランドの最左端バイトの位置はＲ２汎用レジスタの内容によって指定される。第２オペランド位置のバイト数は汎用レジスタＲ２＋１に指定される。動作の一部として、汎用レジスタＲ２内のアドレスは第２オペランドから処理されたバイト数だけ増分され、汎用レジスタＲ２＋１内の長さは同じ数だけ減分される。アドレスおよび長さの形成および更新はアドレッシング・モードに依存する。２４ビットのアドレッシング・モードでは、汎用レジスタＲ２のビット位置４０〜６３の内容が第２オペランドのアドレスを構成し、ビット位置０〜３９の内容は無視され、更新されたアドレスのビット４０〜６３は汎用レジスタＲ２内の対応するビットに取って代わり、更新されたアドレスのビット位置４０からの繰り上がりは無視され、汎用レジスタＲ２のビット位置３２〜３９の内容はゼロに設定される。３１ビットのアドレッシング・モードでは、汎用レジスタＲ２のビット位置３３〜６３の内容が第２オペランドのアドレスを構成し、ビット位置０〜３２の内容は無視され、更新されたアドレスのビット３３〜６３は汎用レジスタＲ２内の対応するビットに取って代わり、更新されたアドレスのビット位置３３からの繰り上がりは無視され、汎用レジスタＲ２のビット位置３２の内容はゼロに設定される。６４ビットのアドレッシング・モードでは、汎用レジスタＲ２のビット位置０〜６３の内容が第２オペランドのアドレスを構成し、更新されたアドレスのビット０〜６３は汎用レジスタＲ２の内容に取って代わり、ビット位置０からの繰り上がりは無視される。２４ビットと３１ビットのどちらのアドレッシング・モードでも、汎用レジスタＲ２＋１のビット位置３２〜６３の内容が、第２オペランド内のバイト数を指定する３２ビットの符号なし２進整数を形成し、更新された値は汎用レジスタＲ２＋１のビット位置３２〜６３の内容に取って代わる。６４ビットのアドレッシング・モードでは、汎用レジスタＲ２＋１のビット位置０〜６３の内容が、第２オペランド内のバイト数を指定する６４ビットの符号なし２進整数を形成し、更新された値は汎用レジスタＲ２＋１の内容に取って代わる。２４ビットまたは３１ビットのアドレッシング・モードでは、汎用レジスタＲ２およびＲ２＋１のビット位置０〜３１の内容は常に変わらない。アクセス・レジスタ・モードでは、アクセス・レジスタ１およびＲ２は、それぞれ、パラメータ・ブロックおよび第２オペランドを含むアドレス・スペースを指定する。この結果は、処理が第２オペランドの左端から始まって、ブロックごとに右に進む場合のように得られる。第２オペランド内のすべてのソース・バイトが処理されたとき（通常完了という）または第２オペランドの長さより小さく、ＣＰＵが決定したブロック数が処理されたとき（部分完了という）に、動作が終了する。ＣＰＵが決定したブロック数はモデルに依存し、命令が実行されるたびに異なる数になる可能性がある。ＣＰＵが決定したブロック数は、通常、非ゼロである。特定の異常な状況では、この数がゼロになる可能性があり、進行なしで条件コード３が設定される可能性がある。しかし、ＣＰＵは、この進行なしのケースの無限再発を防止する。チェーニング値フィールドが第２オペランドのいずれかの部分にオーバラップする場合、チェーニング値フィールド内の結果は予測不能である。中間メッセージ・ダイジェスト計算の場合、汎用レジスタＲ２＋１内に指定された第２オペランド内のバイト数が処理されたときに通常完了が行われる。最終メッセージ・ダイジェスト計算の場合、汎用レジスタＲ２＋１内に指定された第２オペランド内のすべてのバイトが処理された後、埋め込み操作が行われ、次に通常完了が行われる。通常完了により動作が終了すると、条件コード０が設定され、Ｒ２＋１内の結果値はゼロになる。部分完了により動作が終了すると、条件コード３が設定され、Ｒ２＋１内の結果値は非ゼロになる。第２オペランド長が最初にゼロである場合、第２オペランドはアクセスされず、汎用レジスタＲ２およびＲ２＋１は変更されず、条件コード０が設定される。中間メッセージ・ダイジェスト計算の場合、パラメータ・ブロックはアクセスされない。しかし、最終メッセージ・ダイジェスト計算の場合、空ブロック（Ｌ＝０）のケースでは、埋め込み操作が行われ、その結果はパラメータ・ブロックにストアされる。その他のＣＰＵおよびチャネル・プログラムによって観察されるように、パラメータ・ブロックおよびストレージ・オペランドに対する参照は多重アクセス参照になる可能性があり、これらの記憶位置へのアクセスは必ずしもブロックコンカレントではなく、これらのアクセスまたは参照のシーケンスは未定義である。第２オペランドのうち、命令の単一実行で処理されるより大きい部分について、アクセス例外が報告される可能性があるが、第２オペランドの長さを超える位置または処理されている現在の位置を４Ｋバイトより大きく超える位置については、アクセス例外は認識されない。
【００９０】
ＫＩＭＤ照会（ＫＩＭＤ機能コード０）
１２８ビットの状況ワードはパラメータ・ブロックにストアされる。このフィールドのビット０〜１２７は、それぞれ、中間メッセージ・ダイジェスト計算命令の機能コード０〜１２７に対応する。１つのビットが１である場合、対応する機能がインストールされ、そうではない場合、その機能はインストールされない。条件コード０はＫＩＭＤ照会機能の実行が完了したときに設定され、条件コード３はこの機能には適用可能ではない。
【００９１】
ＫＩＭＤ−ＳＨＡ−１（ＫＩＭＤ機能コード１）
２０バイトの中間メッセージ・ダイジェストは、パラメータ・ブロック内の２０バイトのチェーニング値とともにＳＨＡ−１ブロック・ダイジェスト・アルゴリズムを使用して、オペランド２内の６４バイトのメッセージ・ブロックについて生成される。生成された中間メッセージ・ダイジェストは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。
【００９２】
ＫＩＭＤ−ＳＨＡ−２５６（ＫＩＭＤ機能コード２）
３２バイトの中間メッセージ・ダイジェストは、パラメータ・ブロック内の３２バイトのチェーニング値とともにＳＨＡ−２５６ブロック・ダイジェスト・アルゴリズムを使用して、オペランド２内の６４バイトのメッセージ・ブロックについて生成される。生成された中間メッセージ・ダイジェストは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。
【００９３】
ＫＩＭＤ−ＳＨＡ−５１２（ＫＩＭＤ機能コード３）
６４バイトの中間メッセージ・ダイジェストは、パラメータ・ブロック内の６４バイトのチェーニング値とともにＳＨＡ−５１２ブロック・ダイジェスト・アルゴリズムを使用して、オペランド２内の１２８バイトのメッセージ・ブロックについて生成される。生成された中間メッセージ・ダイジェストは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。
【００９４】
ＫＬＭＤ照会（ＫＬＭＤ機能コード０）
１２８ビットの状況ワードはパラメータ・ブロックにストアされる。このフィールドのビット０〜１２７は、それぞれ、最終メッセージ・ダイジェスト計算命令の機能コード０〜１２７に対応する。１つのビットが１である場合、対応する機能がインストールされ、そうではない場合、その機能はインストールされない。条件コード０はＫＬＭＤ照会機能の実行が完了したときに設定され、条件コード３はこの機能には適用可能ではない。
【００９５】
ＫＬＭＤ−ＳＨＡ−１（ＫＬＭＤ機能コード１）
オペランド２内のメッセージ（Ｍ）に関するメッセージ・ダイジェストは、パラメータ・ブロック内のチェーニング値およびメッセージ・ビット長情報とともにＳＨＡ−１アルゴリズムを使用して生成される。オペランド２内のメッセージの長さが６４バイトに等しいかまたはそれより大きい場合、中間メッセージ・ダイジェストは、パラメータ・ブロック内の２０バイトのチェーニング値とともにＳＨＡ−１ブロック・ダイジェスト・アルゴリズムを使用して、６４バイトの各メッセージ・ブロックについて生成され、生成された中間メッセージ・ダイジェストは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。この動作は、残りのメッセージが６４バイト未満になるまで繰り返される。メッセージまたは残りのメッセージの長さが０バイトである場合、動作は実行される。メッセージまたは残りのメッセージの長さが１バイト以上で５５バイト以下である場合、動作は実行され、その長さが５６バイト以上で６３バイト以下である場合、動作は実行される。メッセージ・ダイジェストは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。
【００９６】
ＫＬＭＤ−ＳＨＡ−２５６（ＫＬＭＤ機能コード２）
オペランド２内のメッセージ（Ｍ）に関するメッセージ・ダイジェストは、パラメータ・ブロック内のチェーニング値およびメッセージ・ビット長情報とともにＳＨＡ−２５６アルゴリズムを使用して生成される。オペランド２内のメッセージが６４バイトに等しいかまたはそれより大きい場合、中間メッセージ・ダイジェストは、パラメータ・ブロック内の３２バイトのチェーニング値とともにＳＨＡ−２５６ブロック・ダイジェスト・アルゴリズムを使用して、６４バイトの各メッセージ・ブロックについて生成され、生成された中間メッセージ・ダイジェストは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。この動作は、残りのメッセージが６４バイト未満になるまで繰り返される。メッセージまたは残りのメッセージの長さが０バイトである場合、動作は実行される。メッセージまたは残りのメッセージの長さが１バイト以上で５５バイト以下である場合、動作は実行され、その長さが５６バイト以上で６３バイト以下である場合、動作は実行される。メッセージ・ダイジェストは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。
【００９７】
ＫＬＭＤ−ＳＨＡ−５１２（ＫＬＭＤ機能コード３）
オペランド２内のメッセージ（Ｍ）に関するメッセージ・ダイジェストは、パラメータ・ブロック内のチェーニング値およびメッセージ・ビット長情報とともにＳＨＡ−５１２アルゴリズムを使用して生成される。オペランド２内のメッセージが１２８バイトに等しいかまたはそれより大きい場合、中間メッセージ・ダイジェストは、パラメータ・ブロック内の６４バイトのチェーニング値とともにＳＨＡ−５１２ブロック・ダイジェスト・アルゴリズムを使用して、１２８バイトの各メッセージ・ブロックについて生成され、生成された中間メッセージ・ダイジェストは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。この動作は、残りのメッセージが１２８バイト未満になるまで繰り返される。メッセージまたは残りのメッセージの長さが０バイトである場合、動作は実行される。メッセージまたは残りのメッセージの長さが１バイト以上で１１１バイト以下である場合、動作は実行され、その長さが１１２バイト以上で１２７バイト以下である場合、動作は実行される。メッセージ・ダイジェストは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。
【００９８】
メッセージ認証コード計算（ＫＭＡＣ）命令
コンピュータ・システムによって実行されると、汎用レジスタ０内の機能コードによって指定された機能が実行される。この命令のビット１６〜２３およびＲ１フィールドは無視される。汎用レジスタ０のビット位置５７〜６３は機能コードを含む。その他の機能コードはいずれも割り当てられていない。汎用レジスタ０のビット５６はゼロでなければならず、そうではない場合、指定例外が認識される。汎用レジスタ０の他のすべてのビットは無視される。汎用レジスタ１は記憶装置内のパラメータ・ブロックの最左端バイトの論理アドレスを含む。２４ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置４０〜６３の内容がアドレスを構成し、ビット位置０〜３９の内容は無視される。３１ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置３３〜６３の内容がアドレスを構成し、ビット位置０〜３２の内容は無視される。６４ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置０〜６３の内容がアドレスを構成する。照会機能は、その他の機能の可用性を示す手段を提供する。汎用レジスタＲ２およびＲ２＋１の内容は無視される。その他のすべての機能の場合、第２オペランドは、パラメータ・ブロック内の初期チェーニング値を使用して機能コードによって指定された通りに処理され、その結果はチェーニング値に取って代わる。動作はパラメータ・ブロック内の暗号鍵も使用する。第２オペランド位置の終わりに達したときまたはＣＰＵが決定したバイト数が処理されたときのうち、どちらか先に発生するまで、動作が進行する。その結果は条件コードに示される。Ｒ２フィールドは汎用レジスタの奇偶対を指定するものであって、偶数番号レジスタを指定しなければならず、そうではない場合、指定例外が認識される。第２オペランドの最左端バイトの位置はＲ２汎用レジスタの内容によって指定される。第２オペランド位置のバイト数は汎用レジスタＲ２＋１に指定される。動作の一部として、汎用レジスタＲ２内のアドレスは第２オペランドから処理されたバイト数だけ増分され、汎用レジスタＲ２＋１内の長さは同じ数だけ減分される。アドレスおよび長さの形成および更新はアドレッシング・モードに依存する。２４ビットのアドレッシング・モードでは、汎用レジスタＲ２のビット位置４０〜６３の内容が第２オペランドのアドレスを構成し、ビット位置０〜３９の内容は無視され、更新されたアドレスのビット４０〜６３は汎用レジスタＲ２内の対応するビットに取って代わり、更新されたアドレスのビット位置４０からの繰り上がりは無視され、汎用レジスタＲ２のビット位置３２〜３９の内容はゼロに設定される。３１ビットのアドレッシング・モードでは、汎用レジスタＲ２のビット位置３３〜６３の内容が第２オペランドのアドレスを構成し、ビット位置０〜３２の内容は無視され、更新されたアドレスのビット３３〜６３は汎用レジスタＲ２内の対応するビットに取って代わり、更新されたアドレスのビット位置３３からの繰り上がりは無視され、汎用レジスタＲ２のビット位置３２の内容はゼロに設定される。６４ビットのアドレッシング・モードでは、汎用レジスタＲ２のビット位置０〜６３の内容が第２オペランドのアドレスを構成し、更新されたアドレスのビット０〜６３は汎用レジスタＲ２の内容に取って代わり、ビット位置０からの繰り上がりは無視される。２４ビットと３１ビットのどちらのアドレッシング・モードでも、汎用レジスタＲ２＋１のビット位置３２〜６３の内容が、第２オペランド内のバイト数を指定する３２ビットの符号なし２進整数を形成し、更新された値は汎用レジスタＲ２＋１のビット位置３２〜６３の内容に取って代わる。６４ビットのアドレッシング・モードでは、汎用レジスタＲ２＋１のビット位置０〜６３の内容が、第２オペランド内のバイト数を指定する６４ビットの符号なし２進整数を形成し、更新された値は汎用レジスタＲ２＋１の内容に取って代わる。２４ビットまたは３１ビットのアドレッシング・モードでは、汎用レジスタＲ２およびＲ２＋１のビット位置０〜３１の内容は常に変わらない。アクセス・レジスタ・モードでは、アクセス・レジスタ１およびＲ２は、それぞれ、パラメータ・ブロックおよび第２オペランドを含むアドレス・スペースを指定する。この結果は、処理が第２オペランドの左端から始まって、ブロックごとに右に進む場合のように得られる。第２オペランド内のすべてのソース・バイトが処理されたとき（通常完了という）または第２オペランドの長さより小さく、ＣＰＵが決定したブロック数が処理されたとき（部分完了という）に、動作が終了する。ＣＰＵが決定したブロック数はモデルに依存し、命令が実行されるたびに異なる数になる可能性がある。ＣＰＵが決定したブロック数は、通常、非ゼロである。特定の異常な状況では、この数がゼロになる可能性があり、進行なしで条件コード３が設定される可能性がある。しかし、ＣＰＵは、この進行なしのケースの無限再発を防止する。チェーニング値フィールドが第２オペランドのいずれかの部分にオーバラップする場合、チェーニング値フィールド内の結果は予測不能である。汎用レジスタＲ２＋１内に指定された第２オペランド内のバイト数が処理されたときに通常完了が行われる。通常完了により動作が終了すると、条件コード０が設定され、Ｒ２＋１内の結果値はゼロになる。部分完了により動作が終了すると、条件コード３が設定され、Ｒ２＋１内の結果値は非ゼロになる。第２オペランド長が最初にゼロである場合、第２オペランドおよびパラメータ・ブロックはアクセスされず、汎用レジスタＲ２およびＲ２＋１は変更されず、条件コード０が設定される。その他のＣＰＵおよびチャネル・プログラムによって観察されるように、パラメータ・ブロックおよびストレージ・オペランドに対する参照は多重アクセス参照になる可能性があり、これらの記憶位置へのアクセスは必ずしもブロックコンカレントではなく、これらのアクセスまたは参照のシーケンスは未定義である。第２オペランドのうち、命令の単一実行で処理されるより大きい部分について、アクセス例外が報告される可能性があるが、第２オペランドの長さを超える位置または処理されている現在の位置を４Ｋバイトより大きく超える位置については、アクセス例外は認識されない。
【００９９】
ＫＭＡＣ照会（機能コード０）
１２８ビットの状況ワードはパラメータ・ブロックにストアされる。このフィールドのビット０〜１２７は、それぞれ、ＫＭＡＣ命令の機能コード０〜１２７に対応する。１つのビットが１である場合、対応する機能がインストールされ、そうではない場合、その機能はインストールされない。条件コード０はＫＭＡＣ照会機能の実行が完了したときに設定され、条件コード３はこの機能には適用可能ではない。
【０１００】
ＫＭＡＣ−ＤＥＡ（機能コード１）
オペランド２内の８バイトのメッセージ・ブロック（Ｍ１、Ｍ２、．．．、Ｍｎ）に関するメッセージ認証コードは、６４ビットの暗号鍵とパラメータ・ブロック内の６４ビットのチェーニング値とともにＤＥＡアルゴリズムを使用して計算される。メッセージ認証コードは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。
【０１０１】
ＫＭＡＣ−ＴＤＥＡ−１２８（機能コード２）
オペランド２内の８バイトのメッセージ・ブロック（Ｍ１、Ｍ２、．．．、Ｍｎ）に関するメッセージ認証コードは、２つの６４ビットの暗号鍵とパラメータ・ブロック内の６４ビットのチェーニング値とともにＴＤＥＡアルゴリズムを使用して計算される。メッセージ認証コードは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。
【０１０２】
ＫＭＡＣ−ＴＤＥＡ−１９２（機能コード３）
オペランド２内の８バイトのメッセージ・ブロック（Ｍ１、Ｍ２、．．．、Ｍｎ）に関するメッセージ認証コードは、３つの６４ビットの暗号鍵とパラメータ・ブロック内の６４ビットのチェーニング値とともにＴＤＥＡアルゴリズムを使用して計算される。メッセージ認証コードは、出力チェーニング値（ＯＣＶ）とも呼ばれ、パラメータ・ブロックのチェーニング値フィールドにストアされる。
【０１０３】
ロック演算実行命令
コンピュータ・システムによって実行されると、汎用レジスタ１に指定されたロックが取得された後、汎用レジスタ０内の機能コードによって指定された動作が実行され、次にロックが解除される。しかし、その他のＣＰＵによって観察されるように、（１）使用可能なパラメータ・リスト内のフィールドを含むストレージ・オペランドは、取り出すことができ、ロックが取得される前に、テスト済み位置におけるストアが可能であれば、ストアタイプ・アクセス例外についてテストすることができ、（２）ロックが解除された後、オペランドはパラメータ・リストにストアすることができる。ロックが取得される前にパラメータ・リスト内にないオペランドが取り出された場合、それは、ロックが取得された後にもう一度取り出される。機能コードは、比較ロード（compare and load）、比較交換（compare and swap）、二重比較交換（double compare and swap）、比較交換ストア（compare andswap and store）、比較交換二重ストア（compare and swap and doublestore）、または比較交換三重ストア（compare and swap and triple store）という６つの動作のいずれかを指定することができる。汎用レジスタ０内のテスト・ビットは、１であるときに、ロックが取得されず、６つの動作のいずれも実行されないが、その代わりに、機能コードの妥当性がテストされることを指定する。これは、追加の動作に関する追加の機能コードが将来、割り当てられる場合に有用になる。この定義は、別の表明がある場合を除き、テスト・ビットがゼロである場合のように作成される。比較ロードが指定された場合、第１オペランド比較値と第２オペランドが比較される。これらが等しい場合、第４オペランドが第３オペランド位置に置かれる。比較が不一致（inequality）を示す場合、第２オペランドは、新しい第１オペランド比較値として第１オペランド比較値位置に置かれる。比較交換が指定された場合、第１オペランド比較値と第２オペランドが比較される。これらが等しい場合、第１オペランド置換値が第２オペランド位置にストアされる。比較が不一致を示す場合、第２オペランドは、新しい第１オペランド比較値として第１オペランド比較値位置に置かれる。二重比較交換が指定された場合、第１オペランド比較値と第２オペランドが比較される。これらが等しい場合、第３オペランド比較値と第４オペランドが比較される。両方の比較が一致（equality）を示す場合、第１オペランド置換値および第３オペランド置換値が、それぞれ、第２オペランド位置および第４オペランド位置にストアされる。第１の比較が不一致を示す場合、第２オペランドは、新しい第１オペランド比較値として第１オペランド比較値位置に置かれる。第１の比較が一致を示すが、第２の比較が一致を示さない場合、第４オペランドは、新しい第３オペランド比較値として第３オペランド比較値位置に置かれる。比較交換ストア、比較交換二重ストア、または比較交換三重ストアが指定された場合、第１オペランド比較値と第２オペランドが比較される。これらが等しい場合、第１オペランド置換値が第２オペランド位置にストアされ、第３オペランドが第４オペランド位置にストアされる。次に、この動作が二重ストアまたは三重ストア動作である場合、第５オペランドが第６オペランド位置にストア��れ、この動作が三重ストア動作である場合、第７オペランドが第８オペランド位置にストアされる。第１オペランド比較が不一致を示す場合、第２オペランドは、新しい第１オペランド比較値として第１オペランド比較値位置に置かれる。６つの動作のいずれの後でも、１つまたは複数の比較の結果は条件コードに示される。機能コード（ＦＣ）は汎用レジスタ０のビット位置５６〜６３にある。機能コードは、実行すべき動作だけでなく、オペランドの長さ、ならびに、まとめて単純に第１および第３オペランドと呼ばれる第１オペランド比較値および第１オペランド置換値と第３オペランドまたは第３オペランド比較値および第３オペランド置換値が汎用レジスタまたはパラメータ・リスト内にあるかどうかも指定する。機能コードのパターンは以下の通りである。・４の倍数（０を含む）である機能コードは、汎用レジスタのビット位置３２〜６３内の第１および第３オペランドで３２ビットの長さを指定する。・４の倍数より１大きい機能コードは、パラメータ・リスト内の第１および第３オペランドで６４ビットの長さを指定する。・４の倍数より２大きい機能コードは、汎用レジスタのビット位置０〜６３内の第１および第３オペランドで６４ビットの長さを指定する。・４の倍数より３大きい機能コードは、パラメータ・リスト内の第１および第３オペランドで１２８ビットの長さを指定する。
【０１０４】
たとえば、ＰＬＯ．ＤＣＳは、機能コード８でロック演算実行を意味するために使用することができる。記号内の英字「Ｇ」は６４ビットのオペランド長を示し、英字「Ｒ」は一部またはすべての６４ビットのオペランドが汎用レジスタ内にあることを示し、英字「Ｘ」は１２８ビットのオペランド長を示す。動作に割り当てられていない機能コード、またはその動作が実装（インストール）されていないためにＣＰＵが実行できない動作を指定する機能コードは、無効と呼ばれる。汎用レジスタ０のビット５５はテスト・ビット（Ｔ）である。ビット５５がゼロである場合、汎用レジスタ０内の機能コードは有効でなければならず、そうではない場合、指定例外が認識される。ビット５５が１である場合、条件コードは、機能コードが有効であれば０に設定され、機能コードが無効であれば３に設定され、他の動作はまったく実行されない。汎用レジスタ０のビット３２〜５４はすべてゼロでなければならず、そうではない場合、指定例外が認識される。このレジスタのビット５５が１である場合、これは、認識できる唯一の例外である。汎用レジスタ０のビット０〜３１は無視される。使用すべきロックは、その論理アドレスが汎用レジスタ１に指定されるプログラム・ロック・トークン（ＰＬＴ）によって表される。２４ビットのアドレッシング・モードでは、ＰＬＴアドレスは汎用レジスタ１のビット４０〜６３であり、このレジスタのビット０〜３９は無視される。３１ビットのアドレッシング・モードでは、ＰＬＴアドレスはこのレジスタのビット３３〜６３であり、このレジスタのビット０〜３２は無視される。６４ビットのアドレッシング・モードでは、ＰＬＴアドレスはこのレジスタのビット０〜６３である。０を含む偶数番号機能コードの場合、第１オペランド比較値は汎用レジスタＲ１内にある。４から始まる偶数番号機能コードの場合、第１オペランド置換値は汎用レジスタＲ１＋１内にあり、Ｒ１はレジスタの奇偶対を指定するものであって、偶数番号レジスタを指定しなければならず、そうではない場合、指定例外が認識される。機能コード０および２の場合、Ｒ１は偶数または奇数にすることができる。機能コード０、２、１２、および１４の場合、第３オペランドは汎用レジスタＲ３内にあり、Ｒ３は偶数または奇数にすることができる。機能コード８および１０の場合、第３オペランド比較値は汎用レジスタＲ３内にあり、第３オペランド置換値は汎用レジスタＲ３＋１内にあり、Ｒ３はレジスタの奇偶対を指定するものであって、偶数番号レジスタを指定しなければならず、そうではない場合、指定例外が認識される。すべての機能コードの場合、命令のＢ２およびＤ２フィールドは第２オペランド・アドレスを指定する。機能コード０、２、８、１０、１２、および１４の場合、命令のＢ４およびＤ４フィールドは第４オペランド・アドレスを指定する。機能コード１、３、５、７、９、１１、１３、１５、および１６〜２３の場合、命令のＢ４およびＤ４フィールドは、その命令が使用するパラメータ・リストのアドレスを指定し、このアドレスは第４オペランド・アドレスとは呼ばれない。パラメータ・リストは、比較値および置換値を含む奇数番号オペランドと、第２オペランド以外の偶数番号オペランドのアドレスとを含む。アクセス・レジスタ・モードでは、パラメータ・リストは、偶数番号オペランド・アドレスに関連するアクセス・リスト項目トークン（ＡＬＥＴ）も含む。アクセス・レジスタ・モードでは、ＡＬＥＴを含むパラメータ・リストの使用を引き起こす機能コードの場合、Ｒ３はゼロであってはならず、そうではない場合、指定例外が認識される。パラメータ・リスト内のオペランド・アドレスは、使用される場合、リスト内のダブルワードにある。２４ビットのアドレッシング・モードでは、オペランド・アドレスはダブルワードのビット４０〜６３であり、ダブルワードのビット０〜３９は無視される。３１ビットのアドレッシング・モードでは、オペランド・アドレスはダブルワードのビット３３〜６３であり、ダブルワードのビット０〜３２は無視される。６４ビットのアドレッシング・モードでは、オペランド・アドレスはダブルワードのビット０〜６３である。アクセス・レジスタ・モードでは、アクセス・レジスタ１はプログラム・ロック・トークン（ＰＬＴ）を含むアドレス・スペースを指定し、アクセス・レジスタＢ２は第２オペランドを含むアドレス・スペースを指定し、アクセス・レジスタＢ４は第４オペランドまたはパラメータ・リストを含むアドレス・スペースを指定する。また、そのアドレスがパラメータ・リスト内にあるオペランドの場合、アクセス・リスト項目トークン（ＡＬＥＴ）は、アドレスとともにリスト内にあり、オペランドを含むアドレス・スペースを指定するためにアクセス・レジスタ・モードで使用される。アクセス・レジスタ・モードでは、そのアドレスがパラメータ・リスト内にあるオペランドについてアクセス例外またはＰＥＲストレージ変更イベントが認識された場合、パラメータ・リスト内の関連ＡＬＥＴは、例外またはイベントが認識されたときにアクセス・レジスタＲ３にロードされる。次に、結果として発生するプログラム割り込み中に、値が実位置１６０の例外アクセス識別または実位置１６１のＰＥＲアクセス識別としてストアされる場合、Ｒ３がストアされる。例外またはイベントの認識なしに命令実行が完了する場合、アクセス・レジスタＲ３の内容は予測不能である。アクセス・レジスタ・モードではない場合またはＡＬＥＴを含むパラメータ・リストを使用しない場合、アクセス・レジスタＲ３の内容は変わらない。偶数番号（２、４、６、および８）ストレージ・オペランドは整数境界上に指定しなければならず、その整数境界は、４の倍数である機能コードについてはワード境界、４の倍数より１または２大きい機能コードについてはダブルワード境界、４の倍数より３大きい機能コードについては４倍長ワード境界になる。パラメータ・リストは、使用する場合、ダブルワード境界上に指定しなければならない。そうではない場合、指定例外が認識される。汎用レジスタ１内のプログラム・ロック・トークン（ＰＬＴ）アドレスには境界合わせ要件がない。パラメータ・リスト内のすべての未使用フィールドはすべてゼロを含むはずであり、そうではない場合、プログラムは将来、矛盾せずに動作しない可能性がある。直列化機能は、ロックが取得された直後に実行され、ロックが解除される直前にもう一度実行される。しかし、ロックが取得される前にパラメータ・リストから取り出した値は必ずしも再取り出しされない。汎用レジスタ０のビット５５であるテスト・ビットが１である場合、直列化機能は実行されない。
【０１０５】
機能コード０〜３（比較ロード）
第１オペランド比較値は第２オペランドと比較される。第１オペランド比較値が第２オペランドと等しい場合、第３オペランドが第４オペランドで置き換えられ、条件コード０が設定される。第１オペランド比較値が第２オペランドと等しくない場合、第１オペランド比較値が第２オペランドで置き換えられ、条件コード１が設定される。
【０１０６】
機能コード４〜７（比較交換）
第１オペランド比較値は第２オペランドと比較される。第１オペランド比較値が第２オペランドと等しい場合、第１オペランド置換値が第２オペランド位置にストアされ、条件コード０が設定される。第１オペランド比較値が第２オペランドと等しくない場合、第１オペランド比較値が第２オペランドで置き換えられ、条件コード１が設定される。
【０１０７】
機能コード８〜１１（二重比較交換）
第１オペランド比較値は第２オペランドと比較される。第１オペランド比較値が第２オペランドと等しい場合、第３オペランド比較値が第４オペランドと比較される。第３オペランド比較値が第４オペランドと等しい場合（第１オペランド比較値が第２オペランドと等しいと判明した後）、第１オペランド置換値が第２オペランド位置にストアされ、第３オペランド置換値が第４オペランド位置にストアされ、条件コード０が設定される。第１オペランド比較値が第２オペランドと等しくない場合、第１オペランド比較値が第２オペランドで置き換えられ、条件コード１が設定される。第３オペランド比較値が第４オペランドと等しくない場合（第１オペランド比較値が第２オペランドと等しいと判明した後）、第３オペランド比較値が第４オペランドで置き換えられ、条件コード２が設定される。
【０１０８】
機能コード１２〜１５（比較交換ストア）
第１オペランド比較値は第２オペランドと比較される。第１オペランド比較値が第２オペランドと等しい場合、第１オペランド位置である第３オペランドが第４オペランド位置にストアされ、条件コード０が設定される。第１オペランド比較値が第２オペランドと等しくない場合、第１オペランド比較値が第２オペランドで置き換えられ、条件コード１が設定される。
【０１０９】
機能コード１６〜１９（比較交換二重ストア）
第１オペランド比較値は第２オペランドと比較される。第１オペランド比較値が第２オペランドと等しい場合、第１オペランド置換値が第２オペランド位置にストアされ、第３オペランドが第４オペランド位置にストアされ、第５オペランドが第６オペランド位置にストアされ、条件コード０が設定される。第１オペランド比較値が第２オペランドと等しくない場合、第１オペランド比較値が第２オペランドで置き換えられ、条件コード１が設定される。
【０１１０】
機能コード２０〜２３（比較交換三重ストア）
第１オペランド比較値は第２オペランドと比較される。第１オペランド比較値が第２オペランドと等しい場合、第１オペランド置換値が第２オペランド位置にストアされ、第３オペランドが第４オペランド位置にストアされ、第５オペランドが第６オペランド位置にストアされ、第７オペランドが第８オペランド位置にストアされ、条件コード０が設定される。第１オペランド比較値が第２オペランドと等しくない場合、第１オペランド比較値が第２オペランドで置き換えられ、条件コード１が設定される。
【０１１１】
ロッキング
ロックは、動作の始めに取得され、動作の終わりに解除される。取得されたロックは、すでに述べた通り、その論理アドレスが汎用レジスタ１に指定されるプログラム・ロック・トークン（ＰＬＴ）によって表される。ＰＬＴは、ＰＬＴ論理アドレスのモデル依存変換によって生成された値である。モデル次第で、ＰＬＴは、ＰＬＴ論理アドレスから直接導出される場合もあれば、ＤＡＴがオンである場合、ＤＡＴによるＰＬＴ論理アドレスの変換の結果として得られる実アドレスから導出される場合もある。ＤＡＴが使用される場合、アクセス・レジスタ変換（ＡＲＴ）はアクセス・レジスタ・モードでＤＡＴより先行する。ＰＬＴは、その構成内でモデル依存数のロックのうちの１つを選択する。異なるＣＰＵによって実行されているプログラムは、同じであるＰＬＴ論理アドレスのうち、異なるＣＰＵによって同じ実アドレスに変換できるＰＬＴ論理アドレスを指定することによってのみ、同じロックを指定することを確信することができる。あるモデルがＰＬＴを形成するときにＡＲＴおよびＤＡＴを使用する場合もあれば、使用しない場合もあるので、ＡＲＴおよびＤＡＴ中に遭遇できるアクセス例外条件は、例外として認識される場合もあれば、認識されない場合もある。ＰＬＴによって指定された位置のアクセスは行われないが、その位置についてアドレッシング例外が認識される可能性がある。保護例外は、ＰＬＴ論理アドレスの処理中にいかなる理由でも認識されない。ＣＰＵは一度に１つのロックを保持することができる。ロック演算実行がこのＣＰＵによって実行され、他のＣＰＵによるロック演算実行命令の実行のために他のＣＰＵによってすでに保持されているロックを使用する場合、このＣＰＵによる実行は、ロックがもはや保持されなくなるまで遅延される。過剰な遅延は、マシンの誤動作のみによって引き起こされる可能性があり、マシン・チェック条件の１つである。同じロックに関する複数の要求が満足される順序は未定義である。ロックを保持している間のＣＰＵの回復不能障害の結果として、マシン・チェック、チェック停止状態への移行、またはシステム・チェック停止が発生する可能性がある。マシン・チェックは、すべてのオペランドが損傷していない場合はバックアップを処理し、レジスタ・オペランドが損傷している場合は損傷を処理する。その結果がマシン・チェックまたはチェック停止状態である場合、いかなるストレージ・オペランドも変更されていないかまたは変更予定のすべてのストレージ・オペランドが正しく変更されており、いずれの場合も、ロックは解除されている。ストレージ・オペランドがそれぞれの正しい元の状態またはそれぞれの正しい最終状態にない場合、その結果はシステム・チェック停止になる。
【０１１２】
浮動小数点演算実行命令：
コンピュータ・システムによって実行されると、汎用レジスタ０内の機能コードによって指定された動作が実行され、その結果を示すために条件コードが設定される。例外条件がまったくない場合、条件コード０が設定される。ＩＥＥＥ非トラップ例外が認識された場合、条件コード１が設定される。代替アクションを伴うＩＥＥＥトラップ例外が認識された場合、条件コード２が設定される。３２ビットの戻りコードが汎用レジスタ１のビット３２〜６３に置かれ、汎用レジスタ１のビット０〜３１は変わらない。浮動小数点演算実行（ＰＦＰＯ）命令は、制御レジスタ０のビット４５であるＡＦＰレジスタ制御ビットの対象になる。ＰＦＰＯが正常に実行されるために、ＡＦＰレジスタ制御ビットは１でなければならず、そうではない場合、ＡＦＰレジスタ・データ例外であるＤＸＣ１が認識される。汎用レジスタ０のビット３２はテスト・ビットである。ビット３２がゼロである場合、汎用レジスタ０のビット３３〜６３によって指定された機能が実行され、ビット３３〜６３内の各フィールドは有効でなければならず、その組み合わせは有効かつインストール済み機能でなければならず、そうではない場合、指定例外が認識される。ビット３２が１である場合、ビット３３〜６３によって指定された機能は実行されないが、その代わりに、これらのビットが有効かつインストール済み機能を指定するかどうかを示すために条件コードが設定され、条件コードは、その機能が有効かつインストール済みである場合は０に設定され、その機能が無効であるかまたはインストールされていない場合は３に設定される。これは、追加の機能が将来、割り当てられる場合に有用になる。この定義は、別の表明がある場合を除き、テスト・ビットがゼロである場合のように作成される。
【０１１３】
ＧＲ０のビット３３〜３９は演算タイプを指定する。現在定義されているのは１つの演算タイプのみであり、１６進の０１はＰＦＰＯ浮動小数点基数変換である。ＰＦＰＯ浮動小数点基数変換演算の場合、汎用レジスタ０内の他のフィールドは、第１オペランド・フォーマット、第２オペランド・フォーマット、制御フラグ、および丸め方法を含む。ＰＦＰＯ浮動小数点基数変換演算の場合、第２オペランドは第１オペランドのフォーマットに変換されて、第１オペランド位置に置かれ、戻りコードは汎用レジスタ１のビット３２〜６３に置かれ、条件コードは例外条件が認識されたかどうかを示すように設定される。第１および第２オペランドは暗黙浮動小数点レジスタ内にある。第１オペランドはＦＰＲ０（拡張の場合、ＦＰＲ２と対になる）内にある。第２オペランドはＦＰＲ４（拡張の場合、ＦＰＲ６と対になる）内にある。
【０１１４】
代替例外アクション制御：
汎用レジスタ０のビット５７は代替例外アクション制御である。この制御の設定は、ＩＥＥＥオーバフローおよびＩＥＥＥアンダフロー・トラップ例外について行われるアクションに影響を及ぼす。代替例外アクション制御がゼロである場合、ＩＥＥＥオーバフローおよびＩＥＥＥアンダフロー・トラップ例外は通常の方法で報告される。すなわち、適切なデータ例外コード（ＤＸＣ）が浮動小数点制御レジスタのバイト２に置かれ、動作が完了し、データ例外に関するプログラム割り込みが行われる。（プログラム割り込みの一部として、ＤＸＣが位置１４７にストアされる。）これは、通常アクション付きのＩＥＥＥトラップ例外と呼ばれる。代替例外アクション制御が１である場合、ＤＸＣは浮動小数点制御レジスタのバイト２に置かれ、動作が完了し、条件コード２が設定され、プログラム実行は次の順次命令を続行する。（プログラム割り込みはまったく行われず、ＤＸＣは位置１４７にストアされない。）これは、代替アクション付きのＩＥＥＥトラップ例外と呼ばれる。
【０１１５】
ＨＦＰオーバフロー制御：
汎用レジスタ０のビット５８はＨＦＰオーバフロー制御である。ＨＦＰオーバフロー制御がゼロである場合、ＨＦＰオーバフロー条件は、ＩＥＥＥ無効動作例外として報告され、ＩＥＥＥ無効動作マスクの対象になる。ＨＦＰオーバフロー制御が１である場合、ＨＦＰオーバフロー条件は、ＩＥＥＥオーバフロー例外として報告され、ＩＥＥＥオーバフロー・マスクの対象になる。ＨＦＰオーバフロー制御はＨＦＰターゲットについてのみ定義され、ＨＦＰターゲット以外のものが指定された場合、このビットはゼロでなければならない。
【０１１６】
ＨＦＰアンダフロー制御：
ＨＦＰターゲットの場合、汎用レジスタ０のビット５９はＨＦＰ代替アンダフロー制御である。ＨＦＰアンダフロー制御がゼロである場合、ＨＦＰアンダフローにより、結果はソースと同じ符号が付いた真のゼロに設定され、アンダフローは報告されない。（この場合の結果は不正確になり、不正確抑制制御の対象になる。）ＨＦＰアンダフロー制御が１である場合、この条件は、ＩＥＥＥアンダフロー例外として報告され、ＩＥＥＥアンダフロー・マスクの対象になる。汎用レジスタ０のビット５９はＨＦＰおよびＤＦＰターゲットについてのみ定義され、ＢＦＰターゲットが指定された場合、このビットはゼロでなければならない。
【０１１７】
ＤＦＰ優先量制御（ＤＰＱＣ）：
ＤＦＰターゲットの場合、汎用レジスタ０のビット５９はＤＦＰ優先量制御（ＤＰＱＣ）である。ＤＦＰターゲットによる基数変換の場合、引き渡された値が不正確である場合、最小量を有するコホート・メンバ（cohort member）が選択され、引き渡された値が正確である場合、選択はＤＦＰ優先量制御（ＤＰＱＣ）である汎用レジスタ０のビット５９の値に依存する。引き渡された値が正確であり、ＤＰＱＣビットがゼロである場合、最大量を有するコホート・メンバが選択される。引き渡された値が正確であり、ＤＰＱＣビットが１である場合、優先量は１であり、１に最も近い量を有するコホート・メンバが選択される。
【０１１８】
戻りコード
どの条件コードが設定されるかにかかわらず、テスト・ビットが１であるかどうかに関係なく、３２ビットの戻りコードが汎用レジスタ１のビット３２〜６３に置かれ、汎用レジスタ１のビット０〜３１は変わらない。ＩＥＥＥトラップ例外が完了するためにプログラム割り込みが行われる場合、戻りコードも汎用レジスタ１に置かれ、ＩＥＥＥトラップ例外が抑制されるためにプログラム割り込みが行われる場合、汎用レジスタ１は更新されない。したがって、汎用レジスタ１は、ＩＥＥＥオーバフロー、ＩＥＥＥアンダフロー、およびＩＥＥＥ不正確トラップ例外に関するプログラム割り込みのときに更新されるが、ＩＥＥＥ無効動作トラップ例外に関するプログラム割り込みのときに更新されない。別の指定がある場合を除き、戻りコードはゼロという値である。
【０１１９】
符号保存
ＰＦＰＯ浮動小数点基数変換の場合、結果の符号はソースの符号と同じである。これに対する唯一の例外は、ソースがＮａＮであり、ターゲットがＨＦＰである場合であり、この場合、結果はターゲットＨＦＰフォーマットの最大表現可能数（Ｈｍａｘ）であり、符号はプラスに設定される。
【０１２０】
優先量
ＤＦＰターゲットによる基数変換の場合、引き渡された値が不正確である場合、最小量を有するコホート・メンバが選択され、引き渡された値が正確である場合、選択はＤＦＰ優先量制御（ＤＰＱＣ）である汎用レジスタ０のビット５９の値に依存する。引き渡された値が正確であり、ＤＰＱＣビットがゼロである場合、最大量を有するコホート・メンバが選択される。引き渡された値が正確であり、ＤＰＱＣビットが１である場合、優先量は１であり、１に最も近い量を有するコホート・メンバが選択される。
【０１２１】
ＮａＮ変換
ＤＦＰとＢＦＰとの間で変換する場合、ＮａＮの符号は常に保存され、ペイロードの値は可能であれば保存される。ソース・ペイロードの値がターゲット・ペイロードの最大値を超える場合、ターゲットはデフォルトＱＮａＮに設定されるが、符号はソースと同じである。トラップが使用不可になっている場合、ＳＮａＮは対応するＱＮａＮに変換され、ペイロードは可能であれば保存され、すなわち、ＳＮａＮ（ｘ）はＱＮａＮ（ｘ）に変換され、ここでｘはペイロードの値である。ＤＦＰの場合、ＱＮａＮ（０）およびＳＮａＮ（０）はいずれも表すことができるが、ＢＦＰでは、ＱＮａＮ（０）に関する表現はあるが、ＳＮａＮ（０）に関する表現はない。
【０１２２】
ＰＦＰＯに関するスケーリング済みの値（scaled value）および符号付きスケーリング指数（signed scaling exponent）（Ω）
ＰＦＰＯ浮動数点基数変換演算の場合、ＩＥＥＥオーバフロー・トラップ・アクションまたはＩＥＥＥアンダフロー・トラップ・アクションが行われると、以下のステップを使用して、スケーリング済みの値が計算される。
Ψ＝ｂΩ
ｚ＝ｇ÷Ψ
ここで、Ωは符号付きスケーリング指数であり、ｂはターゲット基数（２、１０、または１６）であり、Ψはスケール係数（scale factor）であり、ｇは精度丸め値（precisionroundedvalue）であり、ｚはスケーリング済みの値である。符号付きスケーリング指数（Ω）は、スケーリング済みの結果（ｚ）の値の大きさを１＜｜ｚ｜＜ｂという範囲に入れるように選択される。符号付きスケーリング指数（Ω）の値は、３２ビットの符号付き２進整数として扱われ、汎用レジスタ１のビット３２〜６３に置かれ、汎用レジスタ１のビット０〜３１は変わらない。スケーリング済みの値は、引き渡された値として使用され、結果位置に置かれる。ＤＦＰターゲットの場合、スケーリング済みの優先量に最も近い量を有するコホート・メンバが選択される。（しかし、現在サポートされている変換のすべてについて、結果が常に不正確になり、したがって、最小量を有するコホート・メンバが選択されることに留意されたい。）ＢＦＰターゲットの場合、冗長表現はまったく存在せず、１つのコホート内には１つのメンバのみが存在する。ＨＦＰターゲットの場合、結果は正規化される。
【０１２３】
ＨＦＰ値
非正規ＨＦＰ値は入力時に受け入れられるが、すべてのＨＦＰ結果は正規化される。ＨＦＰ結果が最小（大きさの点で）表現可能正規化数より小さくなる場合、ＨＦＰアンダフロー条件が存在する。
【０１２４】
ＰＦＰＯに関するＨＦＰオーバフローおよびアンダフロー
ＰＦＰＯ浮動数点基数変換演算のＨＦＰターゲットの場合、オーバフローおよびアンダフロー条件の処理は、それぞれ、ＨＦＰオーバフロー制御およびＨＦＰアンダフロー制御によって制御される。
【０１２５】
ＨＦＰオーバフロー：  ＨＦＰオーバフロー条件は、精度丸め値の大きさがＨＦＰターゲット精度の最大数（Ｈｍａｘ）を超えるときに存在する。すなわち、正規化ＨＦＰ結果の特性が１２７を超え、小数部（fraction）がゼロではない場合である。ＨＦＰオーバフロー制御がゼロである場合、ＨＦＰオーバフローはＩＥＥＥ無効動作例外として報告され、ＦＰＣレジスタ内でＩＥＥＥ無効動作マスクの対象になる。これは、ＩＥＥＥ無効動作条件としてのＨＦＰオーバフローと呼ばれる。ＨＦＰオーバフロー制御が１である場合、ＨＦＰオーバフローはＩＥＥＥオーバフロー例外として報告され、ＦＰＣレジスタ内でＩＥＥＥオーバフロー・マスクの対象になる。これは、ＩＥＥＥオーバフロー条件としてのＨＦＰオーバフローと呼ばれる。
【０１２６】
ＨＦＰアンダフロー：  ＨＦＰアンダフロー条件は、精度丸め値が非ゼロであり、その大きさがＨＦＰターゲット精度の最小正規化数Ｈｍｉｎより小さいときに存在する。すなわち、正規化ＨＦＰ結果の特性がゼロより小さくなり、小数部がゼロではない場合である。結果は、ソースと同じ符号が付いた真のゼロに設定される。ＨＦＰアンダフロー条件の報告はＨＦＰアンダフロー制御の対象になる。しかし、この場合の結果は不正確になり、その条件に関する制御の対象になる。ＨＦＰアンダフロー制御がゼロである場合、ＨＦＰアンダフロー条件は報告されない。ＨＦＰアンダフロー制御が１である場合、ＨＦＰアンダフローはＩＥＥＥアンダフロー例外として報告され、ＦＰＣレジスタ内でＩＥＥＥアンダフロー・マスクの対象になる。これは、ＩＥＥＥアンダフロー条件としてのＨＦＰアンダフローと呼ばれる。
【０１２７】
タイミング機構機能実行命令：
コンピュータ・システムによって実行されると、汎用レジスタ０内の機能コードによって指定されたタイミング機構機能が実行される。条件コードは、機能の結果を示すように設定される。汎用レジスタ１は記憶装置内のパラメータ・ブロックのアドレスを含む。ＰＴＦＦ照会機能はパラメータ・ブロック内に情報を入れ、ＰＴＦＦ制御機能はパラメータ・ブロックから入手された情報を使用する。その他のＣＰＵおよびチャネル・プログラムによって観察されるように、パラメータ・ブロックに対する参照は多重アクセス参照になる可能性があり、これらの記憶位置へのアクセスは必ずしもブロックコンカレントではなく、これらのアクセスまたは参照のシーケンスは未定義である。汎用レジスタ０のビット位置５７〜６３は機能コードを含む。汎用レジスタ０のビット５６はゼロでなければならず、そうではない場合、指定例外が認識される。汎用レジスタ０の他のすべてのビットは無視される。汎用レジスタ１は記憶装置内のパラメータ・ブロックの最左端バイトの論理アドレスを含む。２４ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置４０〜６３の内容がアドレスを構成し、ビット位置０〜３９の内容は無視される。３１ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置３３〜６３の内容がアドレスを構成し、ビット位置０〜３２の内容は無視される。６４ビットのアドレッシング・モードでは、汎用レジスタ１のビット位置０〜６３の内容がアドレスを構成する。ＰＴＦＦ−ＱＡＦ（使用可能機能照会）機能は、その他の機能の可用性を示す手段を提供する。ＰＴＦＦ−ＱＡＦ機能は、基本マシン・レベルにおいて監視プログラム状態で実行されているプログラムについてこの機能がインストールされるかどうかを示す。
【０１２８】
ＰＴＦＦ−ＱＡＦ（使用可能機能照会）
この機能に使用されるパラメータ・ブロックは以下のフォーマットを有し、１２８ビットのフィールドがパラメータ・ブロックにストアされる。このフィールドのビット０〜１２７は、それぞれ、ＰＴＦＦ命令の機能コード０〜１２７に対応する。１つのビットが１である場合、対応する機能がインストールされ、そうではない場合、その機能はインストールされない。ｐｂ．ｗ１のビット０〜３は、現在、照会機能に割り当てられている機能コード０〜３を表すので、１に設定される。ｐｂ．ｗ１のビット４〜３１は追加の照会機能のために予約される。ｐｂ．ｗ３のビット０〜３は、現在、制御機能に割り当てられている機能コード６４〜６７を表すので、１に設定される。ｐｂ．ｗ３のビット４〜３１は追加の制御機能のために予約される。パラメータ・ブロック・ワードｐｂ．ｗ２およびｐｂ．ｗ４は将来の拡張のために予約される。
【０１２９】
ＰＴＦＦ−ＱＴＯ（ＴＯＤオフセット照会）
返される６４ビットの物理クロック値（ｐｂ．Ｔｕ）は、最新のＴＯＤオフセット更新イベントにおける物理クロックの値である。返される６４ビットのＴＯＤオフセット値（ｐｂ．ｄ）はＴＯＤオフセット（ｄ）の値を示す。これは、Ｔｂ（基本マシンＴＯＤクロック）を入手するためにＴｒ（物理クロック）に加えられる現行値であり、すなわち、Ｔｂ＝Ｔｒ＋ｐｂ．ｄである。返される６４ビットの論理ＴＯＤオフセット値（ｐｂ．ｄｌ）は、Ｔｃ（ＣＰＵ実行の現行レベルに関する論理ＴＯＤクロック）を入手するためにＴｒ（物理クロック）に加えられる現行値を示し、すなわち、Ｔｃ＝Ｔｒ＋ｐｂ．ｄｌである。したがって、基本マシン・レベルで実行されると、ｐｂ．ｄｌ＝ｐｂ．ｄ＝ｄであり、ロジカル・パーティション・レベルで実行されると、Ｔｐ−Ｔｂエポック差（Ｄｐ）が加えられ、その結果、ｐｂ．ｄｌ＝ｄ＋Ｄｐになり、仮想計算機レベルで実行されると、Ｔｖ−Ｔｐエポック差（Ｄｖ）も加えられ、その結果、ｐｂ．ｄｌ＝ｄ＋Ｄｐ＋Ｄｖになる。ビット位置０からの繰り上がりがある場合、これらの式のそれぞれに関する加算の際には無視される。返される６４ビットのＴＯＤエポック差値（ｐｂ．ｅｄ）は、ＣＰＵ実行の現行レベルに関するＴＯＤエポック差である。基本マシン・レベルで実行されると、この値はゼロになり、ロジカル・パーティション・レベルで実行されると、この値はＴｐ−Ｔｂエポック差（Ｄｐ）になり、仮想計算機レベルで実行されると、この値はＴｖ−Ｔｐエポック差（Ｄｖ）になる。
【０１３０】
ＰＴＦＦ−ＱＳＩ（ステアリング情報照会）
返される６４ビットの物理クロック値（ｐｂ．Ｔｕ）は、最新のＴＯＤオフセット更新イベントにおける物理クロックの値である。残りのフィールドは、旧エピソードおよび新エピソード・レジスタの値である。
【０１３１】
ＰＴＦＦ−ＱＰＴ（物理クロック照会）
返される６４ビットの物理クロック値（ｐｂ．Ｔｒ）は、物理クロックの現行値である。物理クロックによって提供されない最右端のビット位置についてゼロがストアされる。クロックが実行されている場合、同じかまたは異なるＣＰＵ上でＰＴＦＦ−ＱＰＴを２回実行すると必ずしもクロックの異なる値を返すわけではない。
【０１３２】
ＰＴＦＦ−ＡＴＯ（ＴＯＤオフセット調整）
パラメータ・ブロックからの６４ビット値（ｐｂ．ａ）は、符号なし２進値として扱われ、次のエピソードのベース・オフセットに加えられる。ビット位置０からの繰り上がりがある場合、この加算の際には無視される。その効果は即座ではないが、次のＴＯＤオフセット更新イベントと一致するようにスケジューリングされる。次のエピソードがすでにスケジューリングされているが、まだアクティブになっていない場合、ｐｂ．ａとｎｅｗ．ｂの合計はｎｅｗ．ｂに取って代わり、その他のアクションはまったく行われない。次のエピソードがスケジューリングされていない（すなわち、新エピソード・レジスタが現行エピソードである）場合、新エピソード・レジスタは旧エピソード・レジスタに保存され、新エピソードがスケジューリングされる（したがって、旧エピソード・レジスタを現行エピソードにする）。新エピソード開始時間（ｎｅｗ．ｓ）は、物理クロックが次のＴＯＤオフセット更新イベントのときに有することになる値に設定され、新エピソード・ベース・オフセット（ｎｅｗ．ｂ）は、ｐｂ．ａと、ＴＯＤオフセットが同じ瞬間に持っていたと思われる値であって、現在のステアリング・パラメータを使用して計算された値との合計に設定される。新エピソードがスケジューリングされ、新エピソードの細密ステアリング（finesteering）および概略ステアリング（gross-steering）・レートが現行値と同じである場合、ステアリング・レート（steering rate）はこの機能によって変更されない。ＴＯＤオフセット調整機能の実行は、構成内のすべてのＣＰＵによって観察されるようにＴＯＤオフセット・レジスタの内容全体が同時にかつ一斉に更新されるように見えるように、インターロックされる。しかし、構成内のＣＰＵによる論理ＴＯＤクロック（基本マシンＴＯＤクロック、ロジカル・パーティションＴＯＤクロック、および仮想計算機ＴＯＤクロック）へのアクセスは人工的に遅延されず、したがって、大きい符号なし調整値を加えることは、否定的変化という効果がある可能性があり、論理ＴＯＤクロックが後に進むように見えるようになる可能性がある。
【０１３３】
ＰＴＦＦ−ＳＴＯ（ＴＯＤオフセット設定）
パラメータ・ブロックからの６４ビット値（ｐｂ．ｄ）はＴＯＤオフセットに取って代わる。基本マシン・レベルで発行されると、その効果は即座ではないが、次のＴＯＤオフセット更新イベントと一致するようにスケジューリングされる。次のエピソードがすでにスケジューリングされているが、まだアクティブになっていない場合、ｐｂ．ｄはｎｅｗ．ｂに取って代わり、その他のアクションはまったく行われない。次のエピソードがスケジューリングされていない（すなわち、新エピソード・レジスタが現行エピソードである）場合、新エピソード・レジスタは旧エピソード・レジスタに保存され、新エピソードがスケジューリングされる（したがって、旧エピソード・レジスタを現行エピソードにする）。新エピソード開始時間（ｎｅｗ．ｓ）は、物理クロックが次のＴＯＤオフセット更新イベントのときに有することになる値に設定され、新エピソード・ベース・オフセット（ｎｅｗ．ｂ）はｐｂ．ｄの値に設定される。新エピソードがスケジューリングされ、新エピソードの細密ステアリングおよび概略ステアリング・レートが現行値と同じである場合、ステアリング・レートはこの機能によって変更されない。ロジカル・パーティションまたは仮想計算機レベルで発行されると、この機能はハイパーバイザによってシミュレートすることができ、ＣＰＵ実行の現行レベルに関するＴＯＤエポック差（それぞれ、ＤｐまたはＤｖ）について動作し、いかなる新エピソードもスケジューリングされず、変更が直ちに効力を発する。ＴＯＤオフセット設定機能の実行は、構成内のすべてのＣＰＵによって観察されるようにＴＯＤオフセット・レジスタの内容全体が同時にかつ一斉に更新されるように見えるように、インターロックされる。しかし、構成内のＣＰＵによる論理ＴＯＤクロック（基本マシンＴＯＤクロック、ロジカル・パーティションＴＯＤクロック、および仮想計算機ＴＯＤクロック）へのアクセスは人工的に遅延されず、したがって、より小さい値でＴＯＤオフセットを置換することにより、論理ＴＯＤクロックが後に進むように見えるようになる可能性がある。
【０１３４】
ＰＴＦＦ−ＳＦＳ（細密ステアリング・レート設定）
パラメータ・ブロックからの３２ビット値（ｐｂ．ｆ）は次のエピソードに関する細密ステアリング・レートになる。その効果は即座ではないが、次のＴＯＤオフセット更新イベントと一致するようにスケジューリングされる。次のエピソードがすでにスケジューリングされているが、まだアクティブになっていない場合、ｐｂ．ｆはｎｅｗ．ｆに取って代わり、その他のアクションはまったく行われない。次のエピソードがスケジューリングされていない（すなわち、新エピソード・レジスタが現行エピソードである）場合、新エピソード・レジスタは旧エピソード・レジスタに保存され、新エピソードがスケジューリングされる（したがって、旧エピソード・レジスタを現行エピソードにする）。新エピソード開始時間（ｎｅｗ．ｓ）は、物理クロックが次のＴＯＤオフセット更新イベントのときに有することになる値に設定され、新エピソード・ベース・オフセット（ｎｅｗ．ｂ）は、ＴＯＤオフセットが同じ瞬間に有することになる値であって、現在のステアリング・パラメータを使用して計算された値に設定される。新エピソード細密ステアリング・レート（ｎｅｗ．ｆ）はｐｂ．ｆに設定され、新エピソード概略ステアリング・レートは現行値と同じになる。新エピソードが効力を発すると、構成内のＣＰＵによる論理ＴＯＤクロックへのアクセスは、すべてのプログラムによって観察されるように論理ＴＯＤクロックが固有かつ単調に増加するように見えることを保証するようにインターロックされる。
【０１３５】
ＰＴＦＦ−ＳＧＳ（概略ステアリング・レート設定）
パラメータ・ブロックからの３２ビット値（ｐｂ．ｇ）は次のエピソードに関する概略ステアリング・レートになる。その効果は即座ではないが、次のＴＯＤオフセット更新イベントと一致するようにスケジューリングされる。次のエピソードがすでにスケジューリングされているが、まだアクティブになっていない場合、ｐｂ．ｇはｎｅｗ．ｇに取って代わり、その他のアクションはまったく行われない。次のエピソードがスケジューリングされていない（すなわち、新エピソード・レジスタが現行エピソードである）場合、新エピソード・レジスタは旧エピソード・レジスタに保存され、新エピソードがスケジューリングされる（したがって、旧エピソード・レジスタを現行エピソードにする）。新エピソード開始時間（ｎｅｗ．ｓ）は、物理クロックが次のＴＯＤオフセット更新イベントのときに有することになる値に設定され、新エピソード・ベース・オフセット（ｎｅｗ．ｂ）は、ＴＯＤオフセットが同じ瞬間に有することになる値であって、現在のステアリング・パラメータを使用して計算された値に設定される。新エピソード概略ステアリング・レート（ｎｅｗ．ｇ）はｐｂ．ｇに設定され、新エピソード細密ステアリング・レートは現行値と同じになる。新エピソードが効力を発すると、構成内のＣＰＵによる論理ＴＯＤクロックへのアクセスは、すべてのプログラムによって観察されるように論理ＴＯＤクロックが固有かつ単調に増加するように見えることを保証するようにインターロックされる。
【０１３６】
命令ブロッキング機構：
図１２を参照すると、ＶＭ内の仮想アーキテクチャ・レベル（ＶＡＬ）命令ブロッキング機構の機能が示されている。ＶＭ内で実行すべき各命令（記憶装置内の命令の列に示されている通り）は命令コードを含む。いくつかの実装例では、命令コードは命令９０１、９０２、９０３、９０４内の単一フィールドである。他の実装例では、命令コードは、命令９０５（命令コード｜｜ＯＣ）、９０６（命令コード｜｜命令コード）の２つ以上のフィールドに分散することができる。好ましくは、回路、マイクロコード、またはこれらの組み合わせは、命令コードに基づいて、実行すべき命令が現在の仮想計算機によってサポートされているかどうかを判断することになるであろう。サポートされていない場合、プログラム割り込み、たとえば、プログラム例外が示され、命令が抑制されるであろう。
【０１３７】
一実装例では、実行すべき命令の命令コードは、その命令コードに関連する項目の位置を突き止めるために命令コード・テーブル９０７内へのインデックスを付けるために使用されるであろう。突き止められた項目は、その命令コードによってサポートされるマシン・レベルを示すコードを含むことになるであろう。他の実装例では、各仮想計算機は命令コード・テーブルを有し、テーブル内の項目は命令コードが仮想計算機によってサポートされているかどうかを示すであろう。
【０１３８】
図１３を参照すると、テーブル９０７から入手したコード（マシン・レベル（ＭＬ））１００２は、１００５で仮想計算機の状態記述テーブル１００４の状態記述項目（ＩＢＣ）１００８と照らし合わせて比較され、マシン・レベル・コード１００２がＩＢＣ状態記述項目１００８より大きい場合、その命令は１００７で通常通りに実行され、そうではない場合、実行しようという試みの結果、１００６でプログラム例外が発生するであろう。他の実施形態では、命令コード・フィールドに加えてまたはそれ以外の命令のフィールドは、命令コード・テーブル９０７内へのインデックスを付けるために使用することができる。たとえば、命令コードは、従来のマシン・アーキテクチャにおいて、新しい機能を提供するためにより新しいアーキテクチャ・レベルで使用される予約フィールド（０になるかまたは無視されるもの）を有することができる。一実施形態は、命令コード・テーブル９０７内へのインデックスを付けるための命令コードとともにこれらのビットを含むであろう。他の実施形態では、命令コード・テーブル９０７は、ＭＬフィールドに加えて、関連命令において予約ビットの許可使用を示すために使用されるフィールドを有することができる。たとえば、命令が４つの予約ビットを有する場合、ＭＬテーブルは、すべてのビットが０でなければならない場合に００００を含み、（ＶＭに関する命令の新たに導入された機能を許可して）そのフィールドの対応する事前予約ビットが０または１になり得ることを１が示す場合に選択されたビット内に１を含むことができる。
【０１３９】
命令テスト／照会機構：
命令テスト／照会機構の機能ブロッキング機構がインストールされた場合（図１４）、命令コード・テーブル項目１００１は、一実施形態では、機能コード・フィールド（ＦＣｘ）１００３（または機能コード・テーブル１１０８を指すポインタ）をさらに含むことができる。機能コード・フィールド１００３（または機能コード・テーブル１１０８の項目１１０７）は、１１０３で実行すべき機能コード１１０２と比較される。機能コードが匹敵する場合、命令は１１０５で機能コードを使用するために許可され、１１０３で機能コードが匹敵しない場合、命令実行により、１１０４でプログラム例外または指定例外（プログラム・チェック）などのプログラム割り込みが行われる。
【０１４０】
図１５を参照すると、命令テスト／照会機構の機能テスト／照会ブロッキング機構がインストールされた場合、命令のインストール済み機能を決定するために任意の照会命令１２０１が実行される場合、１２０５で仮想計算機によって許可された機能コードのみが返される。一実施形態では、このような照会に応答するために仮想計算機によって使用されるビット有効テーブル１１０８が仮想計算機に提供される。他の実施形態では、ＶＭ内の命令の許可された機能コード１１０７の結果を作成するためにホスト・マシンのインストール済み機能コードとのＡＮＤが取られるように、仮想計算機にマスクが提供される（図示せず）。
【０１４１】
図１２を参照すると、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ命令フォーマットの例が示されている。フォーマット９０１は２バイトのフォーマットを描写しており、命令コード（Ｏｐ）は上位バイトを占有し、汎用レジスタ・フィールドＲ１およびＲ２は残りのバイトのそれぞれ４ビットを占有する。フォーマット９０２は２バイトの命令コード専用命令フォーマットを描写している。フォーマット９０３は、１バイトの命令コード（Ｏｐ）とそれに続く３つのレジスタ・フィールド（Ｒ１、Ｘ２、およびＢ２）と次の変位フィールド（Ｄ２）と呼ばれる即値フィールドとを有する、４バイト（ワード）の命令を描写している。フォーマット９０４は、２バイトの命令コード（Ｏｐ）とそれに続く４ビットのレジスタ・フォールド（Ｂ２）と次の１２ビットの即値フィールド（Ｉ２）とを有する、４バイトの命令を描写している。フォーマット９０５は、１バイトの命令コード（Ｏｐ）とそれに続く４ビットのマスクＭ１とそれに続く４ビットの命令コード拡張（Ｏｐ）および予約された４ビット・フィールドとそれに続く１２ビットの即値フィールド（Ｉ２）とを有する、４バイトの命令を描写している。フォーマット９０６は、１バイトの命令コード（Ｏｐ）とそれに続く３つのレジスタ・フィールド（Ｒ１、Ｘ２、およびＢ２）と次の変位フィールド（ＤＬ２）と呼ばれる即値フィールドとそれに続く８ビットの即値フィールド（ＤＨ２）および８ビットの命令コード拡張（Ｏｐ）とを有する、６バイトの命令を描写している。
【０１４２】
図１２および図１３を参照すると、一実施形態では、仮想計算機の論理プロセッサによる実行のために命令が取り出されると、命令の命令コード（複数も可）を検索引数として使用して、命令コード・テーブル９０７が検索される。１００１でその命令について項目が見つかった場合、その項目は命令許可情報を決定するための情報１００２、１００３を含む。好ましい一実施形態では、１つの項目は、その命令をサポートしているアーキテクチャのマシン・レベルを示すコード（ＭＬ）を指定するフィールド１００２を含む。状態記述１００４は各ＶＭについて提供される。状態記述は、ＶＭがシミュレートする予定のアーキテクチャのマシン・レベルを表すフィールド（ＩＢＣ）１００５を含む。１００５でその命令をサポートしているアーキテクチャのマシン・レベル（ＭＬ）がＶＭがシミュレートする予定のアーキテクチャのマシン・レベル（ＩＢＣ）より大きい場合、プログラム例外（プログラム・チェック）が信号で通知され、一実施形態では、その命令の実行を抑制することができる。これに反して、その命令をサポートしているアーキテクチャのマシン・レベル（ＭＬ）がＶＭがシミュレートする予定のアーキテクチャのマシン・レベル（ＩＢＣ）より大きくない場合、その命令は実行することが許可される。
【０１４３】
いくつかの環境では、複数の機能のいずれかを実行することができる命令（上述の暗号メッセージ命令など）が提供される。命令による機能の選択は、その機能を表す機能コード（ＦＣ）を指定することによるものにすることができる。機能コードは、その命令によって間接的に指定するか、または、たとえば、その命令のビットまたはフィールドによって明示的に指定することができる。場合によっては、特定の機能コードをマシン・アーキテクチャ・レベルに最初に実装することができ（たとえば、０〜３）、追加の機能コードをその後のマシン・アーキテクチャ・レベルで追加することができる。ＶＭには、より古いアーキテクチャ・レベルの機能コードのみを実行できるようにする能力を提供することができる。
【０１４４】
図１４を参照すると、これは、命令コード・テーブル項目１００１内に機能コード・フィールド（ＦＣｘ）１００３を有することによって達成することができる。命令を実行しようとしている場合、ＦＣｘフィールド１００３は、ホスト・プロセッサによってサポートされる実際の機能コードではなく、返すことが許可された機能コード・リストを指定する。実施形態では、命令コード・テーブル項目のＦＣｘフィールド１００３は、許可された機能コード（ＦＣ）１１０７を含む項目の位置を突き止めるためにＦＣｘテーブル１１０８内へのインデックスを付けるためにＩＢＣフィールド１００５と連結される。許可されたＦＣ１１０７は、命令１１０２によって指定されたＦＣと比較される（暗号メッセージ命令では、汎用レジスタ０  １１０１のビット１１０２は指定されたＦＣ１１０２を含む）。１１０３でＦＣ値が許可されている場合、１１０５でＦＣビットによって表された機能の通常実行が許可される。１１０３でＦＣ値が許可されていない場合、１１０４でプログラム例外（プログラム・チェック）イベントが実行される。同様に、機能照会／テスト動作１２０１（暗号メッセージ命令の照会動作など）を実行するときに、命令コード・テーブル項目のＦＣｘビット１００３は、その命令コードが命令コード・テーブル項目１００１の位置を突き止める命令について許可されたＦＣ１１０７の位置を突き止めるためにＦＣｘテーブル内へのインデックスを付けるためにＩＢＣビット１００５と連結される。次に、１１０５で許可されたＦＣは機能照会／テスト動作によって指定された位置に返される。
【０１４５】
一実施形態では、ＦＣＸビットが０である場合、ＦＣｘテーブル１１０８へのアクセスはまったく実行されず、対応する命令によって示される任意の機能コードが変換なしで使用される。
【０１４６】
一実施形態では、命令に対するその他のアーキテクチャ変更は、機能コードについて説明したものと同じメカニズムを使用することができる。この場合、例えば、アーキテクチャ・レベルの命令９０５では、命令コード拡張フィールドとＩ２フィールドとの間のビットが予約されている（００００）。好ましくは、非ゼロ・ビットがまだサポートされていない機能をサポートする環境でその命令が適切に実行することを確認するために、０の有無について予約ビットがテストされる。より新しいアーキテクチャでは、新しい機能を識別するために予約ビットのうちの１つまたは複数を使用して新しい機能を実装する。一例では、これらの４つの予約ビット（Ｒｅｓ）は、図１４にＦＣビット１１０２について示されているようにそれらがサポートされているかどうかを判断するためにＦＣｘテーブル１１０８内へのインデックスを付けることができる。この場合、連結は、機能コードについては０｜｜ＩＢＣ｜｜ＦＣｘになり、新機能許可テスト１１０３については１｜｜ＩＢＣ｜｜ＦＣｘになるであろう。ＦＣ１１０２が許可されたＦＣ１１０７と比較される代わりに、命令９０５のＲｅｓフィールドは、１１０３でその機能が許可されているかどうかを判断するために許可されたＦＣビット１１０７と照らし合わせてチェックされるであろう。
【０１４７】
他の実施形態では、命令９０５のＲｅｓフィールドは、そのフィールドによって導入された機能が許可されているかどうかを判断するために命令コード・テーブル９０７内へのインデックスを付けるために、それが９０５の命令コードの第３の命令コード拡張である場合のように連結することができるであろう。
【０１４８】
命令の取り出しの一部として、またはそれ以後、ＣＰＵは、その命令の特定の属性、たとえば、オペランドの数、オペランドのタイプ（ストレージまたはレジスタ）、オペランド位置合わせ要件、および許可要件を決定することができる。エミュレーション環境では、この決定は、命令コードをインデックスとして使用する単純なテーブル・ルックアップの結果になる可能性があり、高性能ＣＰＵでは、この決定は、プロセッサの命令デコード回路内に組み込むことができる。
【０１４９】
仮想アーキテクチャ・レベル機構では、各命令に関連する追加の属性、すなわち、その命令が最初にアーキテクチャに導入されたマシン・レベルを取り入れる。このマシン・レベルは、連続体上でエンコードされた数字ポイント（たとえば、第２のファームウェア・レベルの第１０世代マシンを意味する１０．２）にすることができるか、または単純に最新のマシン・レベルに対する値（たとえば、現在のマシンより２世代前のマシンに命令が導入されたことを意味する２［または−２］）にすることができる。
【０１５０】
図１６を参照すると、一実施形態では、多機能命令のうちの選択されたインストール済み機能は隠蔽され、その多機能命令は複数のインストール済み機能のうちの１つの機能を実行するように設計され、この隠蔽は、１２０１でインストール済み機能の可用性を制御する値を１つまたは複数のプロセッサを含むホスト・コンピュータの多機能命令に設定することであって、１つのプロセッサが多機能命令のうちの第１の複数の前記インストール済み機能を有し、第１の複数のインストール済み機能が１つまたは複数の第１のインストール済み機能と１つまたは複数の第２のインストール済み機能とを含むことと、１２０２で多機能命令を実行することであって、その多機能命令が命令コード・フィールドを含むことを含み、その実行が、多機能命令が照会機能を指定することに応答して、多機能命令にとって使用可能なインストール済み機能を決定するために照会機能を実行することと、照会機能実行が１つまたは複数の第２のインストール済み機能を決定するためにその値を使用することと、１２０３で照会機能実行が１つまたは複数の第２のインストール済み機能のうちの１つまたは複数が多機能命令にとって使用可能ではないことを示す結果値をストアすることを含む。
【０１５１】
図１７を参照すると、一実施形態では、１３０１でこの値はホスト・コンピュータの仮想計算機についてホスト・コンピュータのハイパーバイザによって設定され、仮想計算機が１つまたは複数の論理プロセッサを含み、１つまたは複数の論理プロセッサが１つまたは複数の物理プロセッサに割り当てられ、１つの物理プロセッサが多機能命令のうちの１つまたは複数の第２のインストール済み機能を有し、多機能命令が１つまたは複数の物理プロセッサのうちの１つの物理プロセッサ上の１つまたは複数の論理プロセッサのうちの１つの論理プロセッサによって仮想計算機内で実行される。
【０１５２】
一実施形態では、１３０２で１つまたは複数の第２のインストール済み機能は、多機能命令の命令コードに基づいて決定される。
【０１５３】
図１８を参照すると、一実施形態では、１２０１で仮想計算機において制御値を設定したハイパーバイザは、１４０１でインストール済み機能の可用性を制御する他の値をホスト・コンピュータ・システムの他の仮想計算機上で実行される多機能命令に設定し、１４０２で他の多機能命令は１つまたは複数の他の論理プロセッサのうちの１つの他の論理プロセッサによって他の仮想計算機内で実行され、他の多機能命令が他の照会機能を指定することに応答して、他の多機能命令にとって使用可能なインストール済み機能を決定するために他の照会機能が実行され、他の照会機能実行が１つまたは複数の第３のインストール済み機能を決定するために他の値を使用し、１４０３で他の照会機能実行が１つまたは複数の第３のインストール済み機能のうちの１つまたは複数が他の多機能命令にとって使用可能ではないことを示す他の結果値をストアする。
【０１５４】
一実施形態では、ストアされた結果値はビット有効値であり、各ビット位置は１つの機能に対応し、１つのビットが１であることは対応する機能がインストールされていることを示す。
【０１５５】
図１９を参照すると、一実施形態では、照会機能は、１５０１では多機能命令指定機能コードによって、１５０２では多機能命令指定テスト・ビットによって指定される。
【０１５６】
図２０を参照すると、一実施形態では、多機能命令は、１６０１の暗号命令、タイミング機構機能実行命令のうちのいずれか１つ、あるいは図２１の１７０１の浮動小数点演算実行命令、またはロック演算実行命令のうちのいずれか１つからなるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ命令であり、暗号命令は、暗号メッセージ命令、中間メッセージ計算命令、最終メッセージ・ダイジェスト計算命令、最終メッセージ・ダイジェスト計算命令、メッセージ認証コード計算命令のうちのいずれか１つを含み、多機能命令が照会機能を指定し、多機能命令が暗号命令またはＰＴＦＦ命令であることに応答して、１６０２で実行すべき多機能命令指定機能コードが入手され、入手された機能コードが１６０５で照会機能からなり、１６０４で制御値に基づいてストアされた結果値が複数のビットであり、複数のビットのうちの各ビットが対応する機能コードがサポートされるかどうかを示し、多機能命令が暗号命令またはＰＴＦＦ命令であることに応答して、実行すべき多機能命令指定機能コードが入手され、入手された機能コードが１６０５で照会機能ではなく、入手された機能コードに応じて１６０３で暗号機能またはＰＴＦＦ機能が実行され、１７０１で多機能命令がロック演算実行命令または浮動小数点演算実行命令であり、１７０２で多機能命令指定テスト・ビットが１であることに応答して、１７０４で制御値に基づいて多機能命令指定機能コードがインストールされたかどうかの判断が行われ、１７０４でストアされた結果値が条件コード値であり、多機能命令がロック演算実行命令または浮動小数点演算実行命令であり、１７０２で多機能命令指定テスト・ビットが０であることに応答して、入手された機能コードに応じて１７０３で浮動小数点機能またはロック演算が実行される。
【０１５７】
一実施形態では、多機能命令が第１の複数の前記インストール済み機能のうちの非照会機能を指定することに応答して、非照会機能が前記第２のインストール済み機能のうちの１つであることに応答して、非照会機能が実行され、非照会機能が前記第２のインストール済み機能のうちの１つ以外の機能であることに応答して、前記非照会機能の実行がブロックされる。
【０１５８】
上記の説明は、コンピュータ・システムの一実施形態の用語および構造を理解する際に有用である可能性がある。諸実施形態は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅまたはそれについて提供された説明に限定されない可能性がある。諸実施形態は、本明細書の教示とともにその他のコンピュータ製造業者のその他のコンピュータ・アーキテクチャに有利に適用することができる。
【０１５９】
好ましい諸実施形態について本明細書で例示し説明してきたが、諸実施形態は本明細書に開示されている正確な構造に限定されない可能性があることは理解すべきである可能性があり、特許請求の範囲に定義された本発明の範囲内に入るすべての変更および修正に対する権利は留保することができる。
【図１】
0005893012.tif 000006
【図２】
0005893012.tif 000007
【図３】
0005893012.tif 000008
【図４】
0005893012.tif 000009
【図５】
0005893012.tif 000010
【図６】
0005893012.tif 000011
【図７】
0005893012.tif 000012
【図８】
0005893012.tif 000013
【図９】
0005893012.tif 000014
【図１０】
0005893012.tif 000015
【図１１】
0005893012.tif 000016
【図１２】
0005893012.tif 000017
【図１３】
0005893012.tif 000018
【図１４】
0005893012.tif 000019
【図１５】
0005893012.tif 000020
【図１７】
0005893012.tif 000021
【図１９】
0005893012.tif 000022
【図２０】
0005893012.tif 000023
【図１６】
0005893012.tif 000024
【図１８】
0005893012.tif 000025
【図２１】
0005893012.tif 000026