(57)【特許請求の範囲】
【請求項１】
複数の汎用レジスタを有するコンピュータにおいて、プログラムの命令が利用可能な汎用レジスタの有効数を拡張するためにコンピュータが実行する方法であって、前記複数の汎用レジスタ各々は、上位部分と下位部分とを含み、前記命令各々は、オペレーションを特定するオペコードを含むとともに、前記複数の汎用レジスタから選択される、対応するオペランドを保持する汎用レジスタを特定するレジスタ・フィールドを含み、第１のアドレッシング・モードでは、汎用レジスタの下位部分から、該下位部分のサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、第２のアドレッシング・モードでは、汎用レジスタの上位部分および下位部分の組み合わせから、該汎用レジスタのサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、
前記方法は、前記コンピュータが、前記第１のアドレッシング・モードで命令を実行するステップを含み、当該命令を実行するステップは、前記コンピュータが、
第１のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの上位部分のみにアクセスすることが可能に構成されるとして、命令が前記第１のサブセットの命令であることに応答して、対応する汎用レジスタの上位部分のみを含み構成されるオペランドにアクセスするステップと、
第２のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの少なくとも下位部分にアクセスすることが可能に構成されるとして、命令が前記第２のサブセットの命令であることに応答して、対応する汎用レジスタの下位部分を含み構成されるオペランドにアクセスするステップと
を実行することを含む、方法。
【請求項２】
前記方法は、前記コンピュータが、
上位ワード・ファシリティがインストールされていると判断された場合、前記第１のサブセットの命令の実行を行うステップと、
前記上位ワード・ファシリティがインストールされていない場合、前記第１のサブセットの命令の実行の例外を発生させるステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
対応する汎用レジスタの上位部分のみを含み構成されるオペランドにアクセスする前記ステップは、対応する汎用レジスタの上位部分からレジスタ・オペランドの全体を取得するステップ、または、対応する汎用レジスタの上位部分にレジスタ・オペランドの全体を格納するステップを含む、請求項１または２に記載の方法。
【請求項４】
前記第１のサブセットの命令に応答した前記ステップは、２つのオペランドに基づいて、対応するオペコードで定義された関数の演算を実行し、結果を格納するステップを含み、前記対応するオペコードで定義された関数は、２つのオペランドのＡＤＤ関数、又は２つのオペランドのＣＯＭＰＡＲＥ関数から成る、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記第１のサブセットの命令に応答した前記ステップは、２つのオペランドに基づいて、対応するオペコードで定義された関数の演算を実行し、結果を格納するステップを含み、前記対応するオペコードで定義された関数は、メモリからのオペランドのＬＯＡＤ関数、又はメモリへのオペランドのＳＴＯＲＥ関数から成る、請求項１〜３のいずれか１項に記載の方法。
【請求項６】
前記第１のサブセットの命令に応答した前記ステップは、２つのオペランドに基づいて、対応するオペコードで定義された関数の演算を実行し、結果を格納するステップを含み、前記対応するオペコードで定義された関数は、
命令が指定した量だけソース・オペランドをローテートさせることと、
前記ローテートされたソース・オペランドの選択された部分をターゲット・オペランドの選択された部分に挿入することと、
を含む、ＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ関数である、請求項１〜３のいずれか１項に記載の方法。
【請求項７】
前記汎用レジスタ各々は、６４ビットから構成され、前記上位部分は、前記６４ビットのうちの上位３２ビットから構成され、前記下位部分は、前記６４ビットのうちの下位３２ビットから構成され、前記第２のサブセットの命令は、対応する汎用レジスタの下位部分のみを含み構成されるオペランドにアクセスするものであり、前記第１のアドレッシング・モードは、２４ビット・アドレッシング・モード又は３１ビット・アドレッシング・モードの一方であり、前記第２のアドレッシング・モードは、６４ビットアドレッシング・モードである、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
複数の汎用レジスタを有するコンピュータにおいて、プログラムの命令が利用可能な汎用レジスタの有効数を拡張するためのコンピュータ・プログラムであって、前記複数の汎用レジスタ各々は、上位部分と下位部分とを含み、前記命令各々は、オペレーションを特定するオペコードを含むとともに、前記複数の汎用レジスタから選択される、対応するオペランドを保持する汎用レジスタを特定するレジスタ・フィールドを含み、第１のアドレッシング・モードでは、汎用レジスタの下位部分から、該下位部分のサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、第２のアドレッシング・モードでは、汎用レジスタの上位部分および下位部分の組み合わせから、該汎用レジスタのサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、前記コンピュータ・プログラムは、前記コンピュータに、前記第１のアドレッシング・モードで命令を実行するステップを実行させるためのものであり、当該命令を実行するステップは、前記コンピュータが、
第１のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの上位部分のみにアクセスすることが可能に構成されるとして、命令が前記第１のサブセットの命令であることに応答して、対応する汎用レジスタの上位部分のみを含み構成されるオペランドにアクセスするステップと、
第２のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの少なくとも下位部分にアクセスすることが可能に構成されるとして、命令が前記第２のサブセットの命令であることに応答して、対応する汎用レジスタの下位部分を含み構成されるオペランドにアクセスするステップと
を実行することを特徴とする、コンピュータ・プログラム。
【請求項９】
複数の汎用レジスタを有し、プログラムの命令が利用可能な汎用レジスタの有効数を拡張するためのコンピュータ・システムであって、
前記複数の汎用レジスタ各々は、上位部分と下位部分とを含み、前記命令各々は、オペレーションを特定するオペコードを含むとともに、前記複数の汎用レジスタから選択される、対応するオペランドを保持する汎用レジスタを特定するレジスタ・フィールドを含み、第１のアドレッシング・モードでは、汎用レジスタの下位部分から、該下位部分のサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、第２のアドレッシング・モードでは、汎用レジスタの上位部分および下位部分の組み合わせから、該汎用レジスタのサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、前記コンピュータ・システムは、
メモリと、
前記メモリと通信状態にあるプロセッサであって、メモリから命令をフェッチするための命令フェッチ要素と、フェッチした命令を実行するための１つ又は複数の実行要素とを含む、プロセッサと、
を含み、
前記コンピュータ・システムは、
前記コンピュータが、前記第１のアドレッシング・モードでの命令の実行であって、
第１のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの上位部分のみにアクセスすることが可能に構成されるとして、命令が前記第１のサブセットの命令であることに応答して、対応する汎用レジスタの上位部分のみを含み構成されるオペランドにアクセスすることと、
第２のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの少なくとも下位部分にアクセスすることが可能に構成されるとして、命令が前記第２のサブセットの命令であることに応答して、対応する汎用レジスタの下位部分を含み構成されるオペランドにアクセスすることとを含む、当該命令の実行を行う
ように構成される、コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムに関し、より具体的には、コンピュータ・システム・プロセッサの命令機能に関する。
【背景技術】
【０００２】
商標：ＩＢＭ（登録商標）は米国ニューヨーク州アーモンク所在のＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標であり、Ｓ／３９０、Ｚ９００、ｚ９９０及びｚ１０、並びに他の製品名は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ社又は他の会社の登録商標又は製品名であり得る。
【０００３】
１９６０年代にＩＢＭ（登録商標）のＳｙｓｔｅｍｓ３６０として知られていたマシンに始まり現在に至るまで、ＩＢＭは、多くの非常に有能なエンジニアの研究により、コンピューティング・システムに対するその本質的な性質のために「メインフレーム」として知られるようになった特別なアーキテクチャを作り出してきており、その動作原理は、ＩＢＭの発明者が発明した命令の「メインフレーム」実装時に実行し、採用することができる命令を記述することによりそのマシンのアーキテクチャを示すものであり、それらは、長年にわたって示された通り、ＩＢＭの非特許文献１に含めることによって、重大な貢献として「メインフレーム」が表すコンピューティング・マシンの状態の改善に大きく貢献している。２００９年２月に発行された非特許文献１の第８版は、ＳＡ−２２−７８３２−０７として標準的な公開解説書になっており、ＩＢＭ  Ｓｙｓｔｅｍ  ｚ１０（登録商標）  Ｅｎｔｅｒｐｒｉｓｅ  Ｃｌａｓｓサーバを含むＩＢＭのｚ１０（登録商標）メインフレーム・サーバに組み込まれている。
【０００４】
図１を参照すると、ホスト・コンピュータ・システム５０の代表的なコンポーネントが描かれている。コンピュータ・システムにおいて、当技術分野において周知である他のコンポーネント構成を用いることもできる。代表的なホスト・コンピュータ５０は、メインストア（コンピュータ・メモリ２）と通信状態にある１つ又は複数のＣＰＵ１に加えて、ストレージ・デバイス１１及び他のコンピュータ又はＳＡＮ等と通信するためのネットワーク１０へのＩ／Ｏインターフェースを含む。ＣＰＵ１は、アーキテクチャ化された（architected）命令セット及びアーキテクチャ化された機能を有するアーキテクチャに準拠している。ＣＰＵ１は、プログラム・アドレス（仮想アドレス）をメモリの実アドレスに変換するための動的アドレス変換（Dynamic Address Translation、ＤＡＴ）３を有することができる。ＤＡＴは、一般的に、変換をキャッシュに入れるための変換ルックアサイド・バッファ（Translation Lookaside Buffer、ＴＬＢ）７を含むので、コンピュータ・メモリ２のブロックへの後のアクセスは、アドレス変換の遅延を必要としない。一般的に、コンピュータ・メモリ２とプロセッサ１との間に、キャッシュ９が用いられる。キャッシュ９は、１つより多いＣＰＵが利用可能な大容量のキャッシュと、大型のキャッシュと各ＣＰＵとの間のより小型でより高速な（下位レベルの）キャッシュとを有する階層とすることができる。幾つかの実装において、下位レベルのキャッシュは、命令のフェッチ及びデータ・アクセスのために別個の下位レベル・キャッシュを与えるように分割される。一実施形態においては、キャッシュ９を介して、命令フェッチ・ユニット４により、命令がメモリ２からフェッチされる。命令は、命令デコード・ユニット（６）でデコードされ、命令実行ユニット８にディスパッチされる（幾つかの実施形態においては他の命令と共に）。一般的には、例えば、演算実行ユニット、浮動小数点実行ユニット、及び分岐命令実行ユニットなどの幾つかの実行ユニット８が用いられる。命令は、実行ユニットにより実行され、必要に応じて命令が指定したレジスタ又はメモリからオペランドにアクセスする。メモリ２からオペランドにアクセスする（ロード又はストアする）場合、典型的には、ロード／ストア・ユニット５が、実行される命令の制御下でアクセスを処理する。命令は、ハードウェア回路又は内部のマイクロコード（ファームウェア）において、又はその両方の組み合わせによって実行することができる。
【０００５】
図２において、ホスト・アーキテクチャのホスト・コンピュータ・システム５０をエミュレートする、エミュレートされたホスト・コンピュータ・システム２１の一例が提供される。エミュレートされたホスト・コンピュータ・システム２１では、ホスト・プロセッサ（ＣＰＵ）１は、エミュレートされたホスト・プロセッサ（又は仮想ホスト・プロセッサ）であり、かつ、ホスト・コンピュータ５０のプロセッサ１のものとは異なるネイティブな命令セット・アーキテクチャを有するエミュレーション・プロセッサ２７を含む。エミュレートされたホスト・コンピュータ・システム２１は、エミュレーション・プロセッサ２７がアクセス可能なメモリ２２を有する。例示的な実施形態において、メモリ２２は、ホスト・コンピュータ・メモリ２の部分と、エミュレーション・ルーチン２３の部分とに区分化される。ホスト・コンピュータ・メモリ２は、ホスト・コンピュータ・アーキテクチャに従い、エミュレートされたホスト・コンピュータ・システム２１のプログラムに利用可能である。エミュレーション・プロセッサ２７は、エミュレートされたプロセッサ１のもの以外のアーキテクチャのアーキテクチャ化された命令セットのネイティブ命令を実行し、このネイティブ命令はエミュレーション・ルーチン・メモリ２３から取得されたものであり、かつ、エミュレーション・プロセッサ２７は、シーケンス及びアクセス／デコード・ルーチンにおいて取得される１つ又は複数の命令を用いることにより、ホスト・コンピュータ・メモリ２の中のプログラム由来の実行のためのホスト命令にアクセスすることができ、このシーケンス及びアクセス／デコード・ルーチンは、アクセスされたホスト命令をデコードして、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判定することができる。ホスト・コンピュータ・システム５０のアーキテクチャのために定められた、例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、及びＩ／Ｏサブシステムのサポート、並びにプロセッサ・キャッシュといったファシリティを含む他のファシリティを、アーキテクチャ化ファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を高めるために、エミュレーション・プロセッサ２７において利用可能な（汎用レジスタ、及び仮想アドレスの動的変換といった）機能を利用することもできる。ホスト・コンピュータ５０の機能をエミュレートする際にプロセッサ２７を補助するために、専用のハードウェア及びオフ・ロード・エンジンを設けることもできる。
【０００６】
メインフレームにおいて、アーキテクチャ化されたマシン命令は、通常、プログラマによって、多くの場合コンパイラ・アプリケーションを介して、今日では「Ｃ」プログラマによって用いられる。ストレージ媒体内に格納されたこれらの命令は、ｚ／ＡｒｃｈｉｔｅｃｔｕｒｅのＩＢＭサーバにおいて、又は代替的に他のアーキテクチャを実行するマシンにおいて、ネイティブに実行することができる。これらの命令は、既存の及び将来のＩＢＭメインフレーム・サーバにおいて、及び、ＩＢＭの他のマシン（例えば、ｐＳｅｒｉｅｓ（登録商標）サーバ及びｘＳｅｒｉｅｓ（登録商標）サーバ）上で、エミュレートすることができる。これらの命令は、ＩＢＭ（登録商標）、Ｉｎｔｅｌ（登録商標）、ＡＭＤ（商標）、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓなどによって製造されたハードウェアを用いて種々のマシン上でＬｉｎｕｘ(登録商標）を実行しているマシンにおいて実行することができる。Ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）下でそのハードウェア上で実行することに加えて、Ｌｉｎｕｘ(登録商標）を用いること、並びに、エミュレーション・モードにあるＨｅｒｃｕｌｅｓ、ＵＭＸ、ＦＳＩ（Ｆｕｎｄａｍｅｎｔａｌ  Ｓｏｆｔｗａｒｅ，Ｉｎｃ）、又はＰｌａｔｆｏｒｍ  Ｓｏｌｕｔｉｏｎｓ，Ｉｎｃ（ＰＳＩ）によるエミュレーションを用いるマシンを用いることもできる。エミュレーション・モードにおいては、ネイティブ・プロセッサによって、エミュレーション・ソフトウェアが実行され、エミュレートされたプロセッサのアーキテクチャをエミュレートする。
【０００７】
ネイティブ・プロセッサ２７は、一般的に、エミュレートされたプロセッサのエミュレーションを実行するためにファームウェア又はネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェア２３を実行する。エミュレーション・ソフトウェア２３は、エミュレートされたプロセッサ・アーキテクチャの命令のフェッチと実行を担当する。エミュレーション・ソフトウェア２３は、エミュレートされたプログラム・カウンタを維持し、命令境界を常時監視している。エミュレーション・ソフトウェア２３は、一度に１つ又は複数のエミュレートされたマシン命令をフェッチし、ネイティブ・プロセッサ２７により実行するために、その１つ又は複数のエミュレートされたマシン命令を、対応するネイティブマシン命令のグループに変換することができる。これらの変換された命令は、より速い変換を達成できるようにキャッシュに入れることができる。それにも関わらず、エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ規則を維持して、オペレーティング・システム及びエミュレートされたプロセッサのために書かれたアプリケーションが正確に動作することを保証しなければならない。さらに、エミュレーション・ソフトウェアは、これらに限られるものではないが、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブル及びページ・テーブルを含む動的アドレス変換機能、割り込み機構、コンテキスト・スイッチ機構、時刻（Time of Day、ＴＯＤ）クロック、及びＩ／Ｏサブシステムへのアーキテクチャ化インターフェースを含む、エミュレートされたプロセッサ１のアーキテクチャによって識別されるリソースを提供し、オペレーティング・システム又はエミュレートされたプロセッサ上で実行するように設計されたアプリケーション・プログラムが、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で実行できるようにしなければならない。
【０００８】
エミュレートされた特定の命令がデコードされ、個々の命令の機能を実行するためのサブルーチンが呼び出される。エミュレートされたプロセッサ１の機能をエミュレートするエミュレーション・ソフトウェア機能２３は、例えば、「Ｃ」サブルーチン又はドライバにおいて、或いは好ましい実施形態の説明を理解した後で当業者の技術の範囲内にあるような特定のハードウェアのためにドライバを提供する他の何らかの方法で実装される。種々のソフトウェア及びハードウェア・エミュレーションの特許には、これらに限られるものではないが、Ｂｅａｕｓｏｌｅｉｌ他による「Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  ｆｏｒ  ｈａｒｄｗａｒｅ  ｅｍｕｌａｔｉｏｎ」という名称の特許文献１、Ｓｃａｌｚｉ他による「Ｐｒｅｐｒｏｃｅｓｓｉｎｇ  ｏｆ  ｓｔｏｒｅｄ  ｔａｒｇｅｔ  ｒｏｕｔｉｎｅｓ  ｆｏｒ  ｅｍｕｌａｔｉｎｇ  ｉｎｃｏｍｐａｔｉｂｌｅ  ｉｎｓｔｒｕｃｔｉｏｎｓ  ｏｎ  ａ  ｔａｒｇｅｔ  ｐｒｏｃｅｓｓｏｒ」という名称の特許文献２、Ｄａｖｉｄｉａｎ他による「Ｄｅｃｏｄｉｎｇ  ｇｕｅｓｔ  ｉｎｓｔｒｕｃｔｉｏｎ  ｔｏ  ｄｉｒｅｃｔｌｙ  ａｃｃｅｓｓ  ｅｍｕｌａｔｉｏｎ  ｒｏｕｔｉｎｅｓ  ｔｈａｔ  ｅｍｕｌａｔｅ  ｔｈｅ  ｇｕｅｓｔ  ｉｎｓｔｒｕｃｔｉｏｎｓ」という名称の特許文献３、Ｇｏｒｉｓｈｅｋ他による「Ｓｙｍｍｅｔｒｉｃａｌ  ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ  ｂｕｓ  ａｎｄ  ｃｈｉｐｓｅｔ  ｕｓｅｄ  ｆｏｒ  ｃｏｐｒｏｃｅｓｓｏｒ  ｓｕｐｐｏｒｔ  ａｌｌｏｗｉｎｇ  ｎｏｎ−ｎａｔｉｖｅ  ｃｏｄｅ  ｔｏ  ｒｕｎ  ｉｎ  ａ  ｓｙｓｔｅｍ」という名称の特許文献４、Ｌｅｔｈｉｎ他による「Ｄｙｎａｍｉｃ  ｏｐｔｉｍｉｚｉｎｇ  ｏｂｊｅｃｔ  ｃｏｄｅ  ｔｒａｎｓｌａｔｏｒ  ｆｏｒ  ａｒｃｈｉｔｅｃｔｕｒｅ  ｅｍｕｌａｔｉｏｎ  ａｎｄ  ｄｙｎａｍｉｃ  ｏｐｔｉｍｉｚｉｎｇ  ｏｂｊｅｃｔ  ｃｏｄｅ  ｔｒａｎｓｌａｔｉｏｎ  ｍｅｔｈｏｄ」という名称の特許文献５、Ｅｒｉｃ  Ｔｒａｕｔによる「Ｍｅｔｈｏｄ  ｆｏｒ  ｅｍｕｌａｔｉｎｇ  ｇｕｅｓｔ  ｉｎｓｔｒｕｃｔｉｏｎｓ  ｏｎ  ａ  ｈｏｓｔ  ｃｏｍｐｕｔｅｒ  ｔｈｒｏｕｇｈ  ｄｙｎａｍｉｃ  ｒｅｃｏｍｐｉｌａｔｉｏｎ  ｏｆ  ｈｏｓｔ  ｉｎｓｔｒｕｃｔｉｏｎｓ」という名称の特許文献６が挙げられる。これらの参考文献は、当業者が利用可能なターゲット・マシンのための異なるマシン用に設計された命令形式のエミュレーションを達成する様々な既知の方法、並びに、上記で参照されたものにより使用される市販のソフトウェア技術を示す。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許第５５５１０１３号
【特許文献２】米国特許第６００９２６１号
【特許文献３】米国特許第５５７４８７３号
【特許文献４】米国特許第６３０８２５５号
【特許文献５】米国特許第６４６３５８２号
【特許文献６】米国特許第５７９０８２５号
【非特許文献】
【００１０】
【非特許文献１】「ＩＢＭ（登録商標）  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、刊行番号ＳＡ２２−７８３２−０７、第８版、２００９年２月
【発明の概要】
【発明が解決しようとする課題】
【００１１】
必要とされるのは、汎用レジスタのようなアーキテクチャ・リソースへの依存を軽減し、新しい命令を用いるソフトウェア・バージョンの機能及び性能を改善する、既存のアーキテクチャと整合性が取れた新しい命令機能である。
【課題を解決するための手段】
【００１２】
上位ワード（ｈｉｇｈ  ｗｏｒｄ）ファシリティの一実施形態においては、第１の数の大容量ＧＰＲを有するコンピュータにおいて、プログラムの命令が利用可能な汎用レジスタ（ＧＰＲ）の有効数が拡張され、各々の命令は、オペコード(op code）と、対応するＧＰＲを指定するための１つ又は複数のＧＰＲフィールドとを含み、各々の大容量ＧＰＲは第１の部分と第２の部分とを含み、大容量ＧＰＲは、第１の部分から成る第１の小容量ＧＰＲと、第２の部分から成る第２の小容量ＧＰＲとを含み、この方法は、コンピュータが小容量ＧＰＲモードにあることに応答して、ａ）第１の小容量ＧＰＲにアクセスするための第１の命令セットの命令を実行することであって、この実行は、第１の小容量ＧＰＲに基づいたメモリ・オペランドにアクセスするため又は第１の小容量ＧＰＲのオペランドにアクセスするためにメモリ・アドレスを生成することを含み、第１の小容量ＧＰＲは第１の部分から成る、実行すること、及び、ｂ）第２の小容量ＧＰＲにアクセスするための第２の命令セットの命令を実行することであって、この実行は、第２の小容量ＧＰＲに基づいたメモリ・オペランドにアクセスするため又は第２の小容量ＧＰＲのオペランドにアクセスするためにメモリ・アドレスを生成することを含み、第２の小容量ＧＰＲは第２の部分から成る、実行すること、であるａ）及びｂ）を実行する。さらに、この方法は、コンピュータが大容量ＧＰＲモードにあることに応答して、第３の命令セットの命令が実行され、この実行は、大容量ＧＰＲに基づいたメモリ・オペランドにアクセスするため又は第１の部分及び第２の部分を含む大容量ＧＰＲのオペランドにアクセスするためにメモリ・アドレスを生成することを含む。
【００１３】
一実施形態において、小容量ＧＰＲモードは、２４ビット・アドレッシング・モード又は３１ビット・アドレッシング・モードの一方にあることを含む。
【００１４】
一実施形態において、第１の部分は３２ビットであり、第２の部分は３２ビットであり、第３の部分は６４ビットである。
【００１５】
一実施形態において、第２の命令セットの命令の実行は、２つのオペランドに基づいた対応オペコード定義関数を実行し、結果を格納することを含み、対応オペコード定義関数は、２つのオペランドのＡＤＤ関数、又は２つのオペランドのＣＯＭＰＡＲＥ関数から成る。
【００１６】
一実施形態において、第２の命令セットの命令の実行は、２つのオペランドに基づいた対応オペコード定義関数を実行し、結果を格納することを含み、対応オペコード定義関数は、メモリからのオペランドのＬＯＡＤ関数、又はメモリへのオペランドのＳＴＯＲＥ関数から成る。
【００１７】
一実施形態において、第２の命令セットの命令の実行は、２つのオペランドに基づいた対応オペコード定義関数を実行し、結果を格納することを含み、対応オペコード定義関数は、
命令が指定した量だけソース・オペランドをローテートさせることと、
ローテートされたソース・オペランドの選択された部分をターゲット・オペランドの選択された部分に挿入することと、
を含むＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ関数である。
【００１８】
一実施形態において、大容量ＧＰＲモードで動作するオペレーティング・システムがサポートされ、大容量ＧＰＲは、小容量ＧＰＲモードで実行されているアプリケーションのためのコンテキスト・スイッチ中、保存され、復元される。
【００１９】
一実施形態において、オペレーティング・システムは大容量ＧＰＲモードで動作し、大容量ＧＰＲは、小容量ＧＰＲモードで実行されているアプリケーションのためのコンテキスト・スイッチ中、保存され、復元される。
【００２０】
実施形態の上記及び付加的な目的、特徴、並びに利点は、以下に書かれた説明において明らかになるであろう。
【００２１】
他の実施形態及び態様は、本明細書に詳細に説明され、特許請求される本発明の一部であるとみなされる。利点及び特徴をより良く理解するために、説明及び図面を参照されたい。
【００２２】
本発明とみなされる主題は、本明細書の最後にある特許請求の範囲において具体的に示され、明確に請求されている。本発明の前記及び他の目的、特徴、並びに利点は、添付の図面と併用される以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００２３】
【図１】例示的なホスト・コンピュータ・システムを示す図である。
【図２】例示的なエミュレーション・ホスト・コンピュータ・システムを示す図である。
【図３】例示的なコンピュータ・システムを示す図である。
【図４】例示的なコンピュータ・ネットワークを示す図である。
【図５】コンピュータ・システムの要素を示す図である。
【図６】コンピュータ・システムの詳細な要素を示す。
【図７】コンピュータ・システムの詳細な要素を示す。
【図８】コンピュータ・システムの詳細な要素を示す。
【図９】コンピュータ・システムのマシン命令形式を示す。
【図１０】コンピュータ・システムのマシン命令形式を示す。
【図１１】コンピュータ・システムのマシン命令形式を示す。
【図１２】コンピュータ・システムのマシン命令形式を示す。
【図１３】コンピュータ・システムのマシン命令形式を示す。
【図１４】コンピュータ・システムのマシン命令形式を示す。
【図１５】例示的な大容量ＧＰＲを示す。
【図１６】例示的な上位ワードの実施形態のフローを提示する。
【図１７】例示的な上位ワードの実施形態のフローを提示する。
【図１８】例示的なコンテキスト・スイッチのフローを示す。
【発明を実施するための形態】
【００２４】
１つの実施形態は、ソフトウェア（ライセンス内部コード（ＬＩＣ）、ファームウェア、マイクロ・コード、ミリ・コード、ピコ・コードなどと呼ばれる場合もあるが、そのいずれも実施形態と整合性がある）により実施することができる。図１を参照すると、ソフトウェア・プログラム・コードは、典型的には、システム５０のＣＰＵ（中央演算処理装置）１としても知られるプロセッサにより、ＣＤ−ＲＯＭドライブ、テープドライブ、又はハードドライブといった長期ストレージ媒体１１からアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はＣ−ＲＯＭといった、データ処理システムと共に使用するための種々の周知の媒体のいずれかの上で具体化することができる。コードは、こうした媒体上に分散させても、又はコンピュータ・メモリ２からユーザに分散させても、或いは、こうした他のシステムのユーザが使用するために、ネットワーク１０上の１つのコンピュータ・システムのストレージから他のコンピュータ・システムに分散させてもよい。
【００２５】
或いは、プログラム・コードをメモリ２内で具体化し、プロセッサ・バスを用いてプロセッサ１によってプログラム・コードにアクセスすることができる。このようなプログラム・コードは、種々のコンピュータ・コンポーネント及び１つ又は複数のアプリケーション・プログラムの機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、高密度ストレージ媒体１１から高速メモリ２にページングされ、そこでプロセッサ１による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び／又は、ネットワークを介してソフトウェア・コードを分散させる技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、有形の媒体（これらに限られるものではないが、電子メモリ・モジュール（ＲＡＭ）、フラッシュメモリ、コンパクトディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含む）上に作成され、格納されたとき、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、典型的には、処理回路によって実行されるために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
【００２６】
図３は、代表的なワークステーション又はサーバ・ハードウェア・システムを示す。図３のシステム１００は、随意的な周辺機器を含む、パーソナル・コンピュータ、ワークステーション、又はサーバなどの代表的なコンピュータ・システム１０１を含む。ワークステーション１０１は、１つ又は複数のプロセッサ１０６と、周知の技術に従ってプロセッサ１０６とシステム１０１の他のコンポーネントを接続し、これらの間の通信を可能にするために用いられるバスとを含む。バスは、プロセッサ１０６を、例えばハードドライブ（例えば、磁気媒体、ＣＤ、ＤＶＤ、及びフラッシュメモリのいずれかを含む）又はテープドライブを含むことができる、メモリ１０５及び長期ストレージ１０７に接続する。システム１０１はまた、バスを介して、マイクロプロセッサ１０６を、キーボード１０４、マウス１０３、プリンタ／スキャナ１１０、及び／又はタッチ・センシティブ・スクリーン、デジタル化された入力パッド等のいずれかのユーザ・インターフェース機器とすることができる他のインターフェース機器といった、１つ又は複数のインターフェース機器に接続する、ユーザ・インターフェース・アダプタを含むこともできる。バスはまた、ディスプレイ・アダプタを介して、ＬＣＤスクリーン又はモニタなどのディスプレイ装置１０２をマイクロプロセッサ１０６にも接続する。
【００２７】
システム１０１は、ネットワーク１０９と通信する１０８ことができるネットワーク・アダプタを介して、他のコンピュータ又はコンピュータ・ネットワークと通信することができる。例示的なネットワーク・アダプタは、通信チャネル、トークン・リング、イーサネット（登録商標）又はモデムである。代替的に、ワークステーション１０１は、ＣＤＰＤ（セルラー・デジタル・パケット・データ）カードのような無線インターフェースを用いて通信することもできる。ワークステーション１０１は、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域エリア・ネットワーク（ＷＡＮ）内のこうした他のコンピュータと関連付けることができ、或いは、別のコンピュータ等とのクライアント／サーバ構成におけるクライアントとすることができる。これらの構成の全て、並びに、適切な通信ハードウェア及びソフトウェアは、当技術分野において周知である。
【００２８】
図４は、実施形態を実施することができるデータ処理ネットワーク２００を示す。データ処理ネットワーク２００は、各々が複数の個々のワークステーション１０１、２０１、２０２、２０３、２０４を含むことができる、無線ネットワーク及び有線ネットワークのような複数の個々のネットワークを含むことができる。さらに、当業者であれば理解するように、１つ又は複数のＬＡＮを含ませることができ、そこで、ＬＡＮは、ホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含むことができる。
【００２９】
さらに図４を参照すると、ネットワークはまた、ゲートウェイ・コンピュータ（クライアント・サーバ２０６）、又はアプリケーション・サーバ（データ・リポジトリにアクセスすることができ、かつ、ワークステーション２０５から直接アクセスすることもできるリモート・サーバ２０８）のようなメインフレーム・コンピュータ又はサーバを含むこともできる。ゲートウェイ・コンピュータ２０６は、各ネットワーク２０７への入口点として働く。ゲートウェイは、１つのネットワーク・プロトコルを別のものに接続するときに必要とされる。ゲートウェイ２０６は、通信リンクによって別のネットワーク（例えば、インターネット２０７）に結合できることが好ましい。ゲートウェイ２０６はまた、通信リンクを用いて、１つ又は複数のワークステーション１０１、２０１、２０２、２０３、２０４に直接結合することもできる。ゲートウェイ・コンピュータは、ＩＢＭ  Ｃｏｒｐ．社から入手可能なＩＢＭ  ｅＳｅｒｖｅｒ（商標）、ｚＳｅｒｉｅｓ（登録商標）、ｚ９（登録商標）サーバを用いて実装することができる。
【００３０】
ソフトウェア・プログラム・コードは、一般的に、ＣＤ−ＲＯＭドライブ又はハードドライブといった、長期ストレージ媒体１０７から、システム１０１のプロセッサ１０６によってアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はＣＤ−ＲＯＭといった、データ処理システムと共に使用するための種々の周知の媒体のいずれかの上で具体化することができる。コードは、そのような媒体上で分散させても、又はメモリからユーザ２１０、２１１に分散させても、或いは、こうした他のシステムのユーザが使用するために、ネットワー上の１つのコンピュータ・システムのストレージから他のコンピュータ・システムに分散させてもよい。
【００３１】
或いは、プログラム・コード１１１をメモリ１０５内で具体化し、プロセッサ・バスを用いてプロセッサ１０６によってプログラム・コード１１１にアクセスすることができる。このようなプログラム・コードは、種々のコンピュータ・コンポーネント及び１つ又は複数のアプリケーション・プログラム１１２の機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、高密度ストレージ媒体１０７から高速メモリ１０５にページングされ、そこでプロセッサ１０６による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び／又は、ネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、作成され、有形の媒体（これらに限られるものではないが、電子メモリ・モジュール（ＲＡＭ）、フラッシュメモリ、コンパクトディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含む）に格納された場合には、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品媒体は、典型的には、処理回路によって実行されるために、好ましくはコンピュータ・システム内にある処理回路によって読み取り可能である。
【００３２】
プロセッサが最も容易に利用できるキャッシュ（通常、プロセッサの他のキャッシュよりも高速で小さい）は、最下位（Ｌ１又はレベル１）のキャッシュであり、メインストア（メイン・メモリ）は、最上位レベルのキャッシュ（３つのレベルがある場合にはＬ３）である。最下位レベルのキャッシュは、実行されるマシン命令を保持する命令キャッシュ（Ｉ−キャッシュ）と、データ・オペランドを保持するデータ・キャッシュ（Ｄ−キャッシュ）とに分割されることが多い。
【００３３】
図５を参照すると、プロセッサ１０６についての例示的なプロセッサの実施形態が示される。典型的には、メモリ・ブロックをバッファに入れてプロセッサ性能を向上させるために、１つ又は複数のレベルのキャッシュ３０３が用いられる。キャッシュ３０３は、使用される可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは、６４バイト、１２８バイト、又は２５６バイトのメモリ・データである。データをキャッシュに入れるのではなく、命令をキャッシュに入れるために、別個のキャッシュが用いられることが多い。キャッシュ・コヒーレンス（メモリ及びキャッシュ内のラインのコピーの同期）は、多くの場合、当技術分野において周知の種々の「スヌープ（Snoop）」アルゴリズムによって与えられる。プロセッサ・システムの主ストレージ１０５は、キャッシュと呼ばれることが多い。４つのレベルのキャッシュ３０３を有するプロセッサ・システムにおいて、主ストレージ１０５は、典型的にはより高速であり、かつ、コンピュータ・システムが利用できる不揮発性ストレージ（ＤＡＳＤ、テープ等）の一部だけを保持するので、レベル５（Ｌ５）のキャッシュと呼ばれることがある。主ストレージ１０５は、オペレーティング・システムによって主ストレージ１０５との間でページングされるデータのページを「キャッシュに入れる」。
【００３４】
プログラム・カウンタ（命令カウンタ）３１１は、実行される現行の命令のアドレスを常時監視している。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサのプログラム・カウンタは６４ビットであり、従来のアドレッシング制限をサポートするために、３１ビット又は２４ビットに切り捨てることができる。プログラム・カウンタは、典型的には、コンテキスト・スイッチの際に持続するように、コンピュータのＰＳＷ（プログラム状況ワード）内で具体化される。従って、例えば、オペレーティング・システムにより、プログラム・カウンタ値を有する進行中のプログラムに割り込みをかけることが可能である（プログラム環境からオペレーティング・システム環境へのコンテキスト・スイッチ）。プログラムのＰＳＷは、プログラムがアクティブでない間、プログラム・カウンタ値を保持し、オペレーティング・システムが実行されている間、オペレーティング・システムの（ＰＳＷ内の）プログラム・カウンタが使用される。典型的には、プログラム・カウンタは、現行の命令のバイト数に等しい量だけインクリメントされる。ＲＩＳＣ（Reduced Instruction Set Computing、縮小命令セット・コンピューティング）命令は、典型的には固定長であり、ＣＩＳＣ（Complex Instruction Set Computing、複合命令セット・コンピューティング）命令は、典型的には可変長である。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの命令は、２バイト、４バイト、又は６バイトの長さを有するＣＩＳＣ命令である。例えば、コンテキスト・スイッチ操作又は分岐命令の分岐成立（Branch taken）操作により、プログラム・カウンタ３１１が変更される。コンテキスト・スイッチ操作において、現行のプログラム・カウンタ値は、実行されるプログラムについての他の状態情報（条件コードのような）と共にプログラム状況ワード（ＰＳＷ）内に保存され、実行される新しいプログラム・モジュールの命令を指し示す新しいプログラム・カウンタ値がロードされる。分岐成立操作を行い、分岐命令の結果をプログラム・カウンタ３１１にロードすることにより、プログラムが判断を下すこと又はプログラム内でループすることを可能にする。
【００３５】
典型的には、プロセッサ１０６の代わりに命令をフェッチするために、命令フェッチ・ユニット３０５が用いられる。フェッチ・ユニットは、「次の順次命令（next sequential instruction）」、分岐成立命令のターゲット命令、又はコンテキスト・スイッチの後のプログラムの最初の命令のいずれかをフェッチする。今日の命令フェッチ・ユニットは、プリフェッチされた命令を使用することができる可能性に基づいて、命令を投機的にプリフェッチするプリフェッチ技術を用いることが多い。例えば、フェッチ・ユニットは、次の順次命令を含む１６バイトの命令と、付加的なバイトの更なる順次命令とをフェッチすることができる。
【００３６】
次いで、フェッチされた命令が、プロセッサ１０６によって実行される。一実施形態において、フェッチされた命令は、フェッチ・ユニットのディスパッチ・ユニット３０６に渡される。ディスパッチ・ユニット３０６は命令をデコードし、デコードされた命令についての情報を適切なユニット３０７、３０８、３１０に転送する。実行ユニット３０７は、典型的には、命令フェッチ・ユニット３０５からデコードされた算術命令についての情報を受け取り、命令のオペコードに従ってオペランドに関する算術演算を行う。オペランドは、好ましくは、メモリ１０５、アーキテクチャ化レジスタ３０９、又は実行される命令の即値フィールドのいずれかから、実行ユニット３０７に与えられる。実行の結果は、格納された場合には、メモリ１０５、レジスタ３０９、又は他のマシン・ハードウェア（制御レジスタ、ＰＳＷレジスタなどのような）内に格納される。
【００３７】
プロセッサ１０６は、典型的には、命令の機能を実行するための１つ又は複数の実行ユニット３０７、３０８、３１０を有する。図６を参照すると、実行ユニット３０７は、インターフェース論理４０７を介して、アーキテクチャ化された汎用レジスタ３０９、デコード／ディスパッチ・ユニット３０６、ロード・ストア・ユニット３１０、及び他のプロセッサ・ユニット４０１と通信することができる。実行ユニット３０７は、幾つかのレジスタ回路４０３、４０４、４０５を用いて、算術論理演算ユニット（ＡＬＵ）４０２が動作する情報を保持することができる。ＡＬＵは、加算（ａｄｄ）、減算（ｓｕｂｔｒａｃｔ）、乗算（ｍｕｌｔｉｐｌｙ）、及び除算（ｄｉｖｉｄｅ）などの算術演算、並びに、論理積（ａｎｄ）、論理和（ｏｒ）、及び排他的論理和（ｘｏｒ）、ローテート（ｒｏｔａｔｅ）及びシフト（ｓｈｉｆｔ）のような論理関数を実行する。ＡＬＵは、設計に依存する専用の演算をサポートすることが好ましい。他の回路は、例えば条件コード及びリカバリー・サポート論理を含む、他のアーキテクチャ化ファシリティ４０８を提供することができる。典型的には、ＡＬＵ演算の結果は、出力レジスタ回路４０６に保持され、この出力レジスタ回路４０６が、結果を種々の他の処理機能に転送することができる。多数のプロセッサ・ユニットの構成が存在し、本説明は、一実施形態の代表的な理解を与えることのみを意図している。
【００３８】
例えばＡＤＤ命令は、算術及び論理機能を有する実行ユニット３０７で実行され、一方、例えば浮動小数点命令は、特化された浮動小数点能力を有する浮動小数点実行部で実行される。実行ユニットは、オペランドに対してオペコードが定めた関数を行うことにより、命令が特定したオペランドに対して動作することが好ましい。例えば、ＡＤＤ命令は、命令のレジスタ・フィールドによって特定された２つのレジスタ３０９内に見出されるオペランドに対して、実行ユニット３０７により実行することができる。
【００３９】
実行ユニット３０７は、２つのオペランドに対して算術加算を実行し、結果を第３オペランドに格納し、ここで第３オペランドは、第３のレジスタであっても又は２つのソース・レジスタのいずれかであってもよい。実行ユニットは、シフト、ローテート、論理積、論理和、及び排他的論理和のような種々の論理関数、並びに、加算、減算、乗算、除法のいずれかを含む、種々の代数関数を実行することができる算術論理演算ユニット（ＡＬＵ）４０２を使用することが好ましい。スカラー演算のために設計されたＡＬＵ４０２もあり、浮動小数点のために設計されたＡＬＵ４０２もある。データは、アーキテクチャに応じて、ビッグエンディアン（Big Endian）（最下位のバイトが最も高いバイト・アドレスである）、又はリトルエンディアン（Little Endian）（最下位のバイトが最も低いバイト・アドレスである）とすることができる。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅは、ビッグエンディアンである。符号付きフィールドは、アーキテクチャに応じて、符号及び大きさ、１の補数、又は２の補数とすることができる。２の補数における負の値又は正の値は、ＡＬＵ内で加法しか必要としないため、ＡＬＵが減算能力を設計する必要がないという点で、２の補数は有利である。数値は、通常、省略表現で記述され、１２ビット・フィールドは、４，０９６バイトブロックのアドレスを定め、通常、例えば４Ｋバイト（キロバイト）ブロックのように記述される。
【００４０】
３モード・アドレッシング
「３モード・アドレッシング（Trimodal addressing）」は、２４ビット・アドレッシング・モード、３１ビット・アドレッシング・モード、及び６４ビット・アドレッシング・モードの間で切り換える能力を指す。この切り換えは、以下により行うことができる。
：即ち、
・従来の命令ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ及びＢＲＡＮＣＨ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ。これらの命令はどちらも、Ｒ２汎用レジスタのビット６３が１である場合、６４ビット・アドレッシング・モードを設定する。ビット６３が０である場合には、これらの命令は、レジスタのビット３２が０又は１である場合、それぞれ、２４ビット・アドレッシング・モード又は３１ビット・アドレッシング・モードを設定する。
・新しい命令ＳＥＴ  ＡＤＤＲＥＳＳＩＮＧ  ＭＯＤＥ（ＳＡＭ２４、ＳＡＭ３１、及びＳＡＭ６４）。この命令は、命令コードの決定に従って、２４ビット・アドレッシング・モード、３１ビット・アドレッシング・モード、及び６４ビット・アドレッシング・モードを設定する。
【００４１】
３モーダル命令
３モード・アドレッシングは、以下のものを除き、一般命令において論理ストレージ・アドレスを扱う方法に対して影響を与えるだけである。：即ち、
・命令ＢＲＡＮＣＨ  ＡＮＤ  ＬＩＮＫ、ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ、ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ、ＢＲＡＮＣＨ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ、及びＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＡＮＤ  ＳＡＶＥは、２４ビット又は３１ビット・アドレッシング・モードでは、ＥＳＡ／３９０の場合と同様に、汎用レジスタＲ１のビット位置３２−３９に情報を入れ、又は、６４ビット・アドレッシング・モードでは、これらのビット位置にアドレス・ビットを入れる。新しい命令ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＡＮＤ  ＳＡＶＥ  ＬＯＮＧも同じことを行う。
・命令ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ及びＢＲＡＮＣＨ  ＡＮＤ  ＳＥＴ  ＭＯＤＥは、６４ビット・アドレッシング・モードでは、汎用レジスタＲ１のビット位置６３に１を入れる。２４ビット又は３１ビット・モードでは、ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ  ＡＮＤ  ＳＥＴ  ＭＯＤＥは、ビット６３を０に設定し、ＢＲＡＮＣＨ  ＡＮＤ  ＳＥＴ  ＭＯＤＥは、このビットを変更しないままにする。
・特定の命令は、２４ビット又は３１ビット・アドレッシング・モードでは、汎用レジスタのビット０−３１を変更しないままにするが、６４ビット・アドレッシング・モードでは、これらのビット内でアドレス又は長さ情報を配置又は更新する。これらの命令は、ページ７−７の「プログラミング上の注意１」に列挙されており、モーダル命令（modal instruction）と呼ばれることもある。
汎用レジスタのビット０−３１への影響
汎用レジスタのビット０−３１は、２つのタイプの命令により変更される。第１のタイプは、命令が６４ビット・アドレッシング・モードで実行されるときのモーダル命令である（前のセクションを参照されたい）。第２のタイプは、アドレッシング・モードに関係なく、６４ビットの結果オペランドを単一の汎用レジスタに入れる命令、又は、１２８ビットの結果オペランドを偶数−奇数対の汎用レジスタに入れる命令である。第２のタイプの命令の大部分は、ニーモニック中の「Ｇ」のみ又は「ＧＦ」により示される。第２のタイプの全ての命令を「Ｇタイプ」命令と呼ぶこともある。プログラムが６４ビット・アドレッシング・モード（大容量ＧＰＲモード）で実行されておらず、Ｇタイプ命令も含まない場合、そのプログラムは、いずれの汎用レジスタのビット０−３１も変更することができない（小容量ＧＰＲモード）。幾つかの実施形態においては、アプリケーション・プログラムの一部分が小容量ＧＰＲモードにあり、別の部分が大容量ＧＰＲモードにあってもよい。一実施形態においては、特定の命令が小容量ＧＰＲモード命令であり、他の命令が大容量ＧＰＲモード命令であってもよく、ここでコンピュータのモードは、該コンピュータが小容量ＧＰＲモード命令を実行しているか、又は、大容量ＧＰＲモード命令を実行しているかによって決まる。
【００４２】
図７を参照すると、分岐命令を実行するための分岐命令情報が、典型的には、分岐ユニット３０８に送られ、この分岐ユニット３０８は、多くの場合、分岐履歴テーブル４３２のような分岐予測アルゴリズムを用いて、他の条件付き演算が完了する前に分岐の結果を予測する。条件付き演算が完了する前に、現行の分岐命令のターゲットがフェッチされ、投機的に実行される。条件付き演算が完了すると、投機的に実行された分岐命令は、条件付き演算の条件及び投機された結果に基づいて、完了されるか又は破棄される。典型的な分岐命令は、条件コードを試験し、条件コードが分岐命令の分岐要件を満たす場合、ターゲット・アドレスに分岐することができ、ターゲット・アドレスは、例えば、命令のレジスタ・フィールド又は即値フィールド内に見出されるものを含む幾つかの数に基づいて計算することができる。分岐ユニット３０８は、複数の入力レジスタ回路４２７、４２８、４２９と、出力レジスタ回路４３０とを有するＡＬＵ４２６を用いることができる。分岐ユニット３０８は、例えば、汎用レジスタ３０９、デコード・ディスパッチ・ユニット３０６、又は他の回路４２５と通信することができる。
【００４３】
例えば、オペレーティング・システムによって開始されるコンテキスト・スイッチ、コンテキスト・スイッチを発生させるプログラム例外又はエラー、コンテキスト・スイッチを発生させるＩ／Ｏ割り込み信号、或いは、（マルチスレッド環境における）複数のプログラムのマルチスレッド活動を含む様々な理由により、命令のグループの実行に割り込みがかけられることがある。コンテキスト・スイッチ動作は、現在実行中のプログラムについての状態情報を保存し、次いで、起動される別のプログラムについての状態情報をロードすることが好ましい。状態情報は、例えば、ハードウェア・レジスタ又はメモリ内に保存することができる。状態情報は、実行される次の命令を指し示すプログラム・カウンタ値と、条件コードと、メモリ変換情報と、アーキテクチャ化されたレジスタの内容とを含むことが好ましい。コンテキスト・スイッチの活動は、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、又はファームウェア・コード（マイクロ・コード、ピコ・コード、又はライセンス内部コード（ＬＩＣ））単独で又はその組み合わせで実施することができる。
【００４４】
プロセッサは、命令により定義された方法に従ってオペランドにアクセスする。命令は、命令の一部の値を用いて即値オペランドを与えることができ、汎用レジスタ又は専用レジスタ（例えば、浮動小数点レジスタ）のいずれかを明示的に指し示す１つ又は複数のレジスタ・フィールドを与えることができる。命令は、オペコード・フィールドによって、オペランドとして識別されるインプライド・レジスタ（implied register）を用いることができる。命令は、オペランドのためのメモリ位置を用いることができる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの長変位ファシリティ（long displacement facility）により例示されるように、オペランドのメモリ位置を、レジスタ、即値フィールド、又はレジスタと即値フィールドの組み合わせによって与えることができ、命令は、基底レジスタ、指標レジスタ、及び即値フィールド（変位フィールド）を定め、これらが、例えば互いに加算されてメモリ内のオペランドのアドレスをもたらす。ここでの位置（location）は、典型的には、特に断りのない限り、メイン・メモリ（主ストレージ）内の記憶位置を意味する。
【００４５】
図８を参照すると、プロセッサは、ロード／ストア・ユニット３１０を用いて、ストレージにアクセスする。ロード／ストア・ユニット３１０は、メモリ３０３内のターゲット・オペランドのアドレスを取得し、オペランドをレジスタ３０９又は別のメモリ３０３の記憶位置にロードすることによってロード操作を行うことができ、或いは、メモリ３０３内のターゲット・オペランドのアドレスを取得し、レジスタ３０９又は別のメモリ３０３の記憶位置から取得したデータをメモリ３０３内のターゲット・オペランドの記憶位置に格納することによって、ストア操作を行うことができる。ロード／ストア・ユニット３１０は、投機的なものであってもよく、命令シーケンスに対してアウト・オブ・オーダー式の順序でメモリにアクセスすることができるが、プログラムに対して、命令がイン・オーダー式に実行されたという外観を維持する必要がある。ロード／ストア・ユニット３１０は、汎用レジスタ３０９、デコード／ディスパッチ・ユニット３０６、キャッシュ／メモリ・インターフェース３０３、又は他の要素４５５と通信することができ、ストレージ・アドレスを計算し、かつ、パイプライン処理を順に行って操作をイン・オーダー式に保持するための、種々のレジスタ回路、ＡＬＵ４５８、及び制御論理４６３を含む。一部の動作は、アウト・オブ・オーダー式とすることができるが、ロード／ストア・ユニットは、アウト・オブ・オーダー式動作が、プログラムに対して、当技術分野において周知のようなイン・オーダー式に実行されたように見えるようにする機能を提供する。
【００４６】
好ましくは、アプリケーション・プログラムが「見ている」アドレスは、仮想アドレスと呼ばれることが多い。仮想アドレスは、「論理アドレス」及び「実効アドレス（effective address）」と呼ばれることもある。これらの仮想アドレスは、これらに限られるものではないが、単に仮想アドレスをオフセット値にプリフィックス付加すること、１つ又は複数の変換テーブルを介して仮想アドレスを変換することを含む、種々の動的アドレス変換（ＤＡＴ）３１２技術の１つによって、物理的メモリ位置にリダイレクトされるという点で仮想のものであり、変換テーブルは、少なくともセグメント・テーブル及びページ・テーブルを単独で又は組み合わせて含むことが好ましく、セグメント・テーブルは、ページ・テーブルを指し示すエントリを有することが好ましい。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、及び随意的なページ・テーブルを含む、変換の階層が提供される。アドレス変換の性能は、仮想アドレスを関連した物理的メモリ位置にマッピングするエントリを含む変換ルックアサイド・バッファ（ＴＬＢ）を用いることにより改善されることが多い。ＤＡＴ３１２が変換テーブルを用いて仮想アドレスを変換したときに、エントリが作成される。次いで、後に仮想アドレスを用いることで、低速の順次変換テーブル・アクセスではなく、高速のＴＬＢのエントリを用いることが可能になる。ＴＬＢの内容は、ＬＲＵ（Least Recently Used）を含む種々の置換アルゴリズムによって管理することができる。
【００４７】
プロセッサがマルチプロセッサ・システムのプロセッサである場合には、各プロセッサは、コヒーレンシのために、Ｉ／Ｏ、キャッシュ、ＴＬＢ、及びメモリといった共有リソースをインターロック状態に保持する責任を負う。キャッシュ・コヒーレンシを保持する際に、一般的には「スヌープ」技術が用いられる。スヌープ環境においては、共有を容易にするために、各キャッシュ・ラインを、共有状態、排他的状態、変更状態、無効状態等のいずれか１つの状態にあるものとしてマーク付けすることができる。
【００４８】
Ｉ／Ｏユニット３０４は、プロセッサに、例えば、テープ、ディスク、プリンタ、ディスプレイ、及びネットワークを含む周辺機器に取り付けるための手段を与える。Ｉ／Ｏユニットは、ソフトウェア・ドライバによってコンピュータ・プログラムに提示されることが多い。ＩＢＭによるｚ／Ｓｅｒｉｅｓのようなメインフレームにおいては、チャネル・アダプタ及びオープン・システム・アダプタが、オペレーティング・システムと周辺機器との間に通信をもたらすメインフレームのＩ／Ｏユニットである。
【００４９】
非特許文献１からの以下の記述は、コンピュータ・システムのアーキテクチャ上の観点を記載する。：
【００５０】
ストレージ：
コンピュータ・システムは、主ストレージ内の情報、並びに、アドレッシング、保護、参照、及び変更の記録を含む。アドレッシングの幾つかの態様は、アドレスの形式、アドレス空間の概念、種々のタイプのアドレス、及び１つのタイプのアドレスを別のタイプのアドレスに変換する方法を含む。主ストレージの一部は、永続的に割り当てられた記憶位置を含む。主ストレージは、システムに、データの直接アドレス指定可能な高速アクセス・ストレージを与える。データ及びプログラムを処理できるようになる前に、（入力装置から）データ及びプログラムの両方を主ストレージにロードしなければならない。
【００５１】
主ストレージは、キャッシュと呼ばれることもある、１つ又は複数のより小さくより高速アクセスのバッファ・ストレージを含むことができる。キャッシュは、典型的には、ＣＰＵ又はＩ／Ｏプロセッサと物理的に関連付けられる。物理的構成及び別個のストレージ媒体を使用することの影響は、性能に対するものを除き、通常、プログラムにより観察することはできない。
【００５２】
命令及びデータ・オペランドについて、別個のキャッシュを保持することができる。キャッシュ内の情報は、キャッシュ・ブロック又はキャッシュ・ライン（又は短縮してライン）と呼ばれる、整数境界（integral boundary）上にある連続したバイト内に保持される。モデルは、キャッシュ・ラインのサイズをバイトで返す、ＥＸＴＲＡＣＴ  ＣＡＣＨＥ  ＡＴＴＲＩＢＵＴＥ命令を提供することができる。モデルはまた、データ又は命令キャッシュへのストレージのプリフェッチ、或いは、キャッシュからのデータの解放に影響を与える、ＰＲＥＦＥＴＣＨ  ＤＡＴＡ及びＰＲＥＦＥＴＣＨ  ＤＡＴＡ  ＲＥＬＡＴＩＶＥ  ＬＯＮＧ命令を提供することができる。
【００５３】
ストレージは、長い水平方向のビットの文字列と考えられる。大部分の操作において、ストレージへのアクセスは、左から右への順序で進む。ビットの文字列は、８ビット単位で分割される。８ビットの単位は１バイトと呼ばれ、全ての情報の形式の基本的な構成要素（building block）である。ストレージ内の各々のバイト位置は、負でない一意の整数により識別され、この整数がそのバイト位置のアドレスであり、即ち、簡単にバイト・アドレスである。隣接するバイト位置は、連続するアドレスを有し、左の０で始まり、左から右への順序で進む。アドレスは、符号なしの２進整数であり、２４ビット、３１ビット、又は６４ビットである。
【００５４】
情報は、ストレージとＣＰＵ又はチャネル・サブシステムとの間で、一度に１バイトずつ、又は１バイト・グループずつ伝送される。特に断りのない限り、ストレージ内のバイト・グループは、グループの左端のバイトによりアドレス指定される。グループ内のバイト数は、実行される操作により暗黙に決定されるか、又は明示的に指定される。ＣＰＵ操作に使用される場合、バイト・グループはフィールドと呼ばれる。バイト・グループの中の各々において、ビットは、左から右の順序で番号が付けられる。左端のビットは「上位（high-order）」ビットと呼ばれることがあり、右端ビットは「下位（low-order）」ビットと呼ばれることがある。しかしながら、ビット数は、ストレージ・アドレスではない。バイトだけを、アドレス指定することができる。ストレージ内の１つのバイトを形成する個々のビットに対して操作を行うためには、そのバイト全体にアクセスする必要がある。１バイトの中のビットには、左から右に０から７までの番号が付けられる。１つのアドレスの中のビットには、２４ビット・アドレスの場合は８−３１又は４０−６３の番号を付けることができ、或いは、３１ビット・アドレスの場合は１−３１又は３３−６３の番号を付けることができ、６４ビット・アドレスの場合は０−６３の番号が付けられる。複数バイトから成る他のいずれかの固定長形式の中では、その形式を構成するビットには、０から始まる連続番号が付けられる。エラー検出のため及び好ましくは訂正のために、各バイト又はバイト・グループと共に、１つ又は複数の検査ビットが伝送されることがある。このような検査ビットは、マシンにより自動的に生成されるものであり、プログラムが直接制御することはできない。記憶容量は、バイト数で表わされる。ストレージ・オペランド・フィールドの長さが命令のオペレーション・コードで暗黙的に指定される場合、そのフィールドは固定長を有すると言われ、固定長は、１バイト、２バイト、４バイト、８バイト、又は１６バイトとすることができる。一部の命令では、より長いフィールドが暗黙的に指定されることもある。ストレージ・オペランド・フィールドの長さが暗黙的に指定されず明示的に記述される場合は、そのフィールドは可変長を有すると言われる。可変長オペランドは、１バイトのインクリメントにより変化し得る。情報がストレージ内に置かれるとき、ストレージへの物理パスの幅が格納されるフィールドの長さを上回り得るが、指定されたフィールド内に含まれるバイト位置の内容のみが置き換えられる。
【００５５】
特定の情報単位は、ストレージ内の整数境界上になければならない。そのストレージ・アドレスがバイトでの単位での長さの倍数であるとき、境界は、情報単位に関して整数のものであると言われる。整数境界上にある２バイト、４バイト、８バイト、及び１６バイトのフィールドには、特別な名称が与えられる。ハーフワード（halfword）は、２バイト境界上にある２個の連続したバイトのグループであり、これは、命令の基本的な構成要素である。ワード（word）は、４バイト境界上にある４個の連続したバイトのグループである。ダブルワード（doubleword）は、８バイト境界上にある８個の連続したバイトのグループである。クワッドワード（quadword）は、１６バイト境界上にある１６個の連続したバイトのグループである。ストレージ・アドレスが、ハーフワード、ワード、ダブルワード、及びクワッドワードを示す場合、そのアドレスの２進表現は、それぞれ、右端の１個、２個、３個、又は４個のビットが０になる。命令は、２バイトの整数境界上になければならない。大部分の命令のストレージ・オペランドは、境界合わせ（boundary alignment）要件をもたない。
【００５６】
命令及びデータ・オペランドに対して別個のキャッシュを実装するモデルにおいては、ストアが、後にフェッチされる命令を変更するかどうかに関係なく、後に命令をフェッチするキャッシュ・ライン内にプログラムが格納する場合には、著しい遅延が生じることがある。
【００５７】
命令：
典型的には、ＣＰＵの動作は、ストレージ内の命令により制御され、これらの命令は、ストレージ・アドレスの昇順に従って左から右へ一度に１つずつ順に実行される。この順次操作は、分岐、ＬＯＡＤ  ＰＳＷ、割り込み、ＳＩＧＮＡＬ  ＰＲＯＣＥＳＳＯＲの指令、又は手作業の介入によって変更され得る。
【００５８】
命令は、２つの主要部分：即ち、
・実行される動作を指定するオペレーション・コード（オペコード）
・随意的に、関与するオペランドの指定を含むことが好ましい。
【００５９】
ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの命令形式が、図９−図１４に示される。命令は、単にオペコード５０１を提供することができ、或いは、オペコードと、即値オペランド又はレジスタ若しくはメモリ内のオペランドを探し出すためのレジスタ指定子を含む種々のフィールドとを提供することもできる。オペコードは、１つ又は複数の特定の汎用レジスタ（ＧＰＲ）のような暗黙的リソース（オペランド等）が使用されることをハードウェアに指示することができる。オペランドは、３つのクラス、即ち、レジスタ内に入れられるオペランド、即値オペランド、及びストレージ内のオペランドにグループ化することができる。オペランドは、明示的に指定される場合又は暗黙的に指定される場合がある。レジスタ・オペランドは、汎用レジスタ、浮動小数点レジスタ、アクセス・レジスタ、又は制御レジスタ内に含めることができ、レジスタのタイプは、オペコードにより識別される。オペランドを含むレジスタは、命令の中のＲフィールドと呼ばれる４ビット・フィールド内のレジスタを識別することによって指定される。命令によっては、オペランドは、暗黙的に指定されたレジスタに含められ、このレジスタは、オペコードにより暗黙的に指定される。即値オペランドは、命令の中に含まれるものであり、即値オペランドを含む８ビット、１６ビット、又は３２ビットのフィールドを、Ｉフィールドと呼ぶ。ストレージ内のオペランドの長さは、暗黙的に指定されるか、ビット・マスクによって指定されるか、命令内のＬフィールドと呼ばれる４ビット又は８ビットの長さ指定により指定されるか、又は汎用レジスタの内容により指定され得る。ストレージ内のオペランドのアドレスは、汎用レジスタの内容をアドレスの一部として使用する形式により指定される。これにより、以下の：
１．簡略表記法を使用して完全なアドレスを指定する、
２．汎用レジスタをオペランドとして用いる命令を使用して、アドレス操作を行う、
３．命令ストリームを変更することなく、プログラム手段によりアドレスを変更する、
４．他のプログラムから受け取ったアドレスを直接使用して、データ域の記憶位置に関係なく操作を行う、
ことが可能になる。
【００６０】
ストレージを参照するために使用されるアドレスは、命令のＲフィールドが指すレジスタに含まれているか、又は、それぞれ、命令の中でＢフィールド、Ｘフィールド、及びＤフィールドにより指定されている基底アドレス、指標、及び変位から計算される。ＣＰＵがアクセス・レジスタ・モードにあるとき、Ｂフィールド又はＲフィールドは、アドレスを指定するために使用されるのに加えて、アクセス・レジスタを指定することもできる。命令の実行を記述するために、オペランドは、第１オペランド及び第２オペランド、そして場合によっては第３オペランド及び第４オペランドとして指定されることが好ましい。一般に、１つの命令の実行には２つのオペランドが関与し、実行結果は第１オペランドと置き換わる。
【００６１】
命令の長さは、１個、２個、又は３個のハーフワードとし、ストレージ内でハーフワード境界上に配置する必要がある。命令形式を示す図９−図１４を参照すると、各々の命令は、２５個の基本形式：即ち、Ｅ５０１、Ｉ５０２、ＲＩ５０３、５０４、ＲＩＥ５０５、５５１、５５２、５５３、５５４、ＲＩＬ５０６、５０７、ＲＩＳ５５５、ＲＲ５１０、ＲＲＥ５１１、ＲＲＦ５１２、５１３、５１４、ＲＲＳ、ＲＳ５１６、５１７、ＲＳＩ５２０、ＲＳＬ５２１、ＲＳＹ５２２、５２３、ＲＸ５２４、ＲＸＥ５２５、ＲＸＦ５２６、ＲＸＹ５２７、Ｓ５３０、ＳＩ５３１、ＳＩＬ５５６、ＳＩＹ５３２、ＳＳ５３３、５３４、５３５、５３６、５３７、ＳＳＥ５４１、及びＳＳＦ５４２のいずれかの形をとり、ＲＲＦには３つ、ＲＩ、ＲＩＬ、ＲＳ及びＲＳＹには２つ、ＲＩＥ及びＳＳには５つの変形がある。
【００６２】
形式の名前は、大まかに言うと、その操作に関与するオペランドのクラス、及びフィールドについての何らかの詳細を示す。即ち：
・ＲＩＳは、レジスタ対即値操作及びストレージ操作を示す。
・ＲＲＳは、レジスタ間操作及びストレージ操作を示す。
・ＳＩＬは、１６ビットの即値フィールドを有するストレージ対即値操作を示す。
【００６３】
Ｉ、ＲＲ、ＲＳ、ＲＳＩ、ＲＸ、ＳＩ、及びＳＳ形式では、命令の最初の１バイトが、オペコードを含む。Ｅ、ＲＲＥ、ＲＲＦ、Ｓ、ＳＩＬ、及びＳＳＥ形式では、Ｓ形式の一部の形式では最初の１バイト内にオペコードがあることを除いては、命令の最初の２バイトがオペコードを含む。ＲＩ及びＲＩＬ形式では、命令の最初の１バイト及びビット位置１２−１５内にオペコードがある。ＲＩＥ、ＲＩＳ、ＲＲＳ、ＲＳＬ、ＲＳＹ、ＲＸＥ、ＲＸＦ、ＲＸＹ、及びＳＩＹ形式では、命令の最初の１バイト及び第６バイト内にオペコードがある。オペコードの最初又は唯一のバイトの最初の２ビットは、以下のように、命令の長さと形式を指定する。
【００６４】
ＲＲ、ＲＲＥ、ＲＲＦ、ＲＲＲ、ＲＸ、ＲＸＥ、ＲＸＦ、ＲＸＹ、ＲＳ、ＲＳＹ、ＲＳＩ、ＲＩ、ＲＩＥ、及びＲＩＬ形式では、Ｒ１フィールドが示すレジスタの内容が、第１オペランドと呼ばれる。第１オペランドを含むレジスタは、「第１オペランド位置」と呼ばれ、「レジスタＲ１」と呼ばれることもある。ＲＲ、ＲＲＥ、ＲＲＦ、及びＲＲＲ形式では、Ｒ２フィールドは、第２オペランドを含むレジスタを示し、かつ、Ｒ１と同じレジスタを示すこともある。ＲＲＦ、ＲＸＦ、ＲＳ、ＲＳＹ、ＲＳＩ、及びＲＩＥ形式では、Ｒ３フィールドが使用されるかどうかは、命令によって決まる。ＲＳ及びＲＳＹ形式では、Ｒ３フィールドは、代わりに、マスクを指定するＭ３フィールドである場合もある。Ｒフィールドは、一般命令では汎用レジスタ又はアクセス・レジスタを指し、制御命令では汎用レジスタを指し、浮動小数点命令では浮動小数点レジスタ又は汎用レジスタを指す。汎用レジスタ及び制御レジスタについては、レジスタ・オペランドは、命令に応じて、６４ビット・レジスタのビット位置３２−６３にあるか、又はレジスタ全体を占める。
【００６５】
Ｉ形式では、８ビットの即値データ・フィールド、即ち命令のＩフィールドの内容が、直接オペランドとして使用される。ＳＩ形式では、８ビットの即値データ・フィールド、即ち命令のＩ２フィールドの内容が、直接第２オペランドとして使用される。Ｂ１フィールド及びＤ１フィールドが、第１オペランドを指定し、その長さは１バイトである。ＳＩＹ形式では、Ｄ１フィールドの代わりにＤＨ１フィールド及びＤＬ１フィールドが用いられることを除いて、操作は同じである。命令ＡＤＤ  ＨＡＬＦＷＯＲＤ  ＩＭＭＥＤＩＡＴＥ、ＣＯＭＰＡＲＥ  ＨＡＬＦＷＯＲＤ  ＩＭＭＥＤＩＡＴＥ、ＬＯＡＤ  ＨＡＬＦＷＯＲＤ  ＩＭＭＥＤＩＡＴＥ、及びＭＵＬＴＩＰＬＹ  ＨＡＬＦＷＯＲＤ  ＩＭＭＥＤＩＡＴＥのＲＩ形式では、命令の１６ビットのＩ２フィールドの内容が、直接符号付き２進整数として使用され、Ｒ１フィールドは第１オペランドを指定し、その長さは、命令に応じて、３２ビット又は６４ビットである。命令ＴＥＳＴ  ＵＮＤＥＲ  ＭＡＳＫ（ＴＭＨＨ、ＴＭＨＬ、ＴＭＬＨ、ＴＭＬＬ）については、Ｉ２フィールドの内容はマスクとして使用され、Ｒ１フィールドは、第１オペランドを指定し、その長さは６４ビットである。
【００６６】
命令ＩＮＳＥＲＴ  ＩＭＭＥＤＩＡＴＥ、ＡＮＤ  ＩＭＭＥＤＩＡＴＥ、ＯＲ  ＩＭＭＥＤＩＡＴＥ、及びＬＯＡＤ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥについては、Ｉ２フィールドの内容が、符号なし２進整数又は論理値として用いられ、Ｒ１フィールドは、第１オペランドを指定し、その長さは６４ビットである。ＲＩ及びＲＳＩ形式の相対・分岐命令の場合は、１６ビットのＩ２フィールドの内容が、ハーフワードの数を示す符号付き２進整数として使用される。この数値を分岐命令のアドレスに加えたものが、分岐アドレスを示す。ＲＩＬ形式の相対・分岐命令の場合、Ｉ２フィールドは３２ビットであり、同じように使用される。
【００６７】
ＲＩ及びＲＳＩ形式の相対・分岐命令の場合は、１６ビットのＩ２フィールドの内容が、ハーフワードの数を示す符号付き２進整数として使用される。この数値を分岐命令のアドレスに加えたものが、分岐アドレスを示す。ＲＩＬ形式の相対・分岐命令の場合、Ｉ２フィールドは３２ビットであり、同じように使用される。ＲＩＥ形式の命令ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ及びＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥの場合は、８ビットのＩ２フィールドの内容が、直接第２オペランドとして使用される。ＲＩＥ形式の命令ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ、ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＴＲＡＰ、ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ、及びＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＴＲＡＰの場合は、１６ビットのＩ２フィールドの内容が、直接第２オペランドとして用いられる。ＲＩＥ形式の命令ＣＯＭＰＡＲＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ、ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ、ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ、及びＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥの場合は、１６ビットのＩ４フィールドの内容が、ハーフワードの数を示す符号付き２進整数として使用され、これが命令のアドレスに加算されて分岐アドレスを形成する。
【００６８】
ＲＩＬ形式の命令ＡＤＤ  ＩＭＭＥＤＩＡＴＥ、ＡＤＤ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ、ＡＤＤ  ＬＯＧＩＣＡＬ  ＷＩＴＨ  ＳＩＧＮＥＤ  ＩＭＭＥＤＩＡＴＥ、ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ、ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ、ＬＯＡＤ  ＩＭＭＥＤＩＡＴＥ、及びＭＵＬＴＩＰＬＹ  ＳＩＮＧＬＥ  ＩＭＭＥＤＩＡＴＥの場合は、３２ビットのＩ２フィールドの内容が、直接第２オペランドとして用いられる。
【００６９】
ＲＩＳ形式の命令の場合は、８ビットのＩ２フィールドの内容が、直接第２オペランドとして使用される。ＳＩＬ形式では、１６ビットのＩ２フィールドの内容が、直接第２オペランドとして使用される。以下に説明されるように、Ｂ１及びＤ１フィールドが、第１オペランドを指定する。
【００７０】
ＲＳＬ、ＳＩ、ＳＩＬ、ＳＳＥ、及び殆どのＳＳ形式では、Ｂ１フィールドが示す汎用レジスタの内容がＤ１フィールドの内容に加えられ、第１オペランド・アドレスを形成する。ＲＳ、ＲＳＹ、Ｓ、ＳＩＹ、ＳＳ、及びＳＳＥ形式では、Ｂ２フィールドが示す汎用レジスタの内容がＤ２フィールド又はＤＨ２及びＤＬ２フィールドの内容に加えられ、第２オペランド・アドレスを形成する。ＲＸ、ＲＸＥ、ＲＸＦ、及びＲＸＹ形式では、Ｘ２及びＢ２フィールドが示す汎用レジスタの内容がＤ２フィールド又はＤＨ２及びＤＬ２フィールドの内容に加えられ、第２オペランド・アドレスを形成する。ＲＩＳ及びＲＲＳ形式並びに１つのＳＳ形式では、Ｂ４フィールドが示す汎用レジスタの内容がＤ４フィールドの内容に加えられ、第４オペランド・アドレスを形成する。
【００７１】
８ビットの長さのフィールドを１つだけ有するＳＳ形式では、命令ＡＮＤ（ＮＣ）、ＥＸＣＬＵＳＩＶＥ  ＯＲ（ＸＣ）、ＭＯＶＥ（ＭＶＣ）、ＭＯＶＥ  ＮＵＭＥＲＩＣＳ、ＭＯＶＥ  ＺＯＮＥＳ、及びＯＲ（ＯＣ）において、Ｌは、第１オペランド・アドレスが示すバイトの右側に追加するオペランド・バイトの数を指定する。従って、第１オペランドのバイト長は、Ｌの長さコード０−２５５に対応して、１−２５６になる。格納結果は、第１オペランドと置き換わり、アドレスと長さで指定されるフィールドの外部に格納されることは決してない。この形式では、第２オペランドは、第１オペランドと同じ長さを有する。ＥＤＩＴ、ＥＤＩＴ  ＡＮＤ  ＭＡＲＫ、ＰＡＣＫ  ＡＳＣＩＩ、ＰＡＣＫ  ＵＮＩＣＯＤＥ、ＴＲＡＮＳＬＡＴＥ、ＴＲＡＮＳＬＡＴＥ  ＡＮＤ  ＴＥＳＴ、ＵＮＰＡＣＫ  ＡＳＣＩＩ、及びＵＮＰＡＣＫ  ＵＮＩＣＯＤＥに適用される、前述の定義の変形がある。
【００７２】
２つの長さフィールドを有するＳＳ形式及びＲＳＬ形式では、Ｌ１は、第１オペランド・アドレスが示すバイトの右側に追加するオペランド・バイトの数を指定する。従って、第１オペランドのバイト長は、Ｌ１の長さコード０−１５に対応して、１−１６になる。同様に、Ｌ２は、第２オペランド・アドレスが示す記憶位置の右側に追加するオペランド・バイトの数を指定する。結果は第１オペランドと置き換わり、アドレスと長さで指定されるフィールドの外部に格納されることは決してない。第１オペランドが第２オペランドより長い場合は、第２オペランドは、第１オペランドの長さに等しくなるまで左方向に拡張され、その拡張部分には０が入る。この拡張によって、ストレージ内の第２オペランドが変更されることはない。ＭＯＶＥ  ＴＯ  ＰＲＩＭＡＲＹ、ＭＯＶＥ  ＴＯ  ＳＥＣＯＮＤＡＲＹ、及びＭＯＶＥ  ＷＩＴＨ  ＫＥＹ命令により使用される、２つのＲフィールドを有するＳＳ形式では、Ｒ１フィールドが示す汎用レジスタの内容は、３２ビットの符号なしの値であり、これは真の長さと呼ばれる。オペランドの長さは、どちらも、有効長と呼ばれる長さである。有効長は、真の長さ又は２５６の、どちらか短い方の長さである。命令では、条件コードを設定し、真の長さで指定された総バイト数を移動するためのループをプログラミングしやすくする。ＬＯＡＤ  ＭＵＬＴＩＰＬＥ  ＤＩＳＪＯＩＮＴ命令についての様々なレジスタ及び２つのストレージ・オペランドを指定するため、及び、ＰＥＲＦＯＲＭ  ＬＯＣＫＥＤ  ＯＰＥＲＡＴＩＯＮ命令についての１つ又は２つのレジスタ及び１つ又は２つのストレージ・オペランドを指定するためにも、２つのＲフィールドを有するＳＳ形式が使用される。
【００７３】
Ｂ１、Ｂ２、Ｘ２、又はＢ４フィールドのいずれかが０である場合は、それに対応するアドレス・コンポーネントが存在しないことを示す。存在しないコンポーネントについては、汎用レジスタ０の内容に関係なく、中間合計値を形成する際に０が使用される。変位が０であるということに、特別な意味はない。
【００７４】
現行ＰＳＷのビット３１及び３２は、アドレッシング・モード・ビットである。ビット３１は拡張アドレッシング・モード・ビットであり、ビット３２は基本アドレッシング・モード・ビットである。これらのビットは、アドレス生成により生成される実効アドレスのサイズを制御する。現行ＰＳＷのビット３１及び３２が両方とも０のときは、ＣＰＵは２４ビット・アドレッシング・モードになっており、２４ビットの命令実効アドレス及びオペランド実効アドレスが生成される。現行ＰＳＷのビット３１が０であり、ビット３２が１のときは、ＣＰＵは３１ビット・アドレッシング・モードになっており、３１ビットの命令実効アドレス及びオペランド実効アドレスが生成される。現行ＰＳＷのビット３１及び３２が両方とも１のときは、ＣＰＵは６４ビット・アドレッシング・モードになっており、６４ビットの命令実効アドレス及びオペランド実効アドレスが生成される。ＣＰＵが命令を実行するときには、命令及びオペランドのアドレスの生成が必要とされる。
【００７５】
現行ＰＳＷが示す記憶位置から命令がフェッチされると、命令アドレスがその命令に含まれるバイト数だけ増加され、命令が実行される。次いで、次の順番の命令をフェッチするために新しい命令のアドレス値を使用して、同じステップが繰り返される。２４ビット・アドレッシング・モードでは、命令アドレスは循環し、命令アドレス２２４−２の位置のハーフワードの次には、命令アドレス０の位置のハーフワードが続く。従って、２４ビット・アドレッシング・モードでは、命令アドレスの更新の結果としてＰＳＷビット位置１０４からの繰り上がりが生じる場合、その繰り上がりは失われる。３１ビット又は６４ビットのアドレッシング・モードでは、命令アドレスは同様に循環し、それぞれ、命令アドレス２３１−２の位置又は２６４−２の位置にあるハーフワードの次には、命令アドレス０の位置にあるハーフワードが続く。それぞれＰＳＷビット位置９７又は６４からの繰り上がりは失われる。
【００７６】
ストレージを参照するオペランド・アドレスは、中間値から導き出され、中間値は、命令のＲフィールドで指定されているレジスタに含まれるか、又は、基底アドレス、指標、及び変位の３つの２進数の和として求められる。基底アドレス（Ｂ）は、命令内のＢフィールドと呼ばれる４ビット・フィールドにプログラムで指定された汎用レジスタに含まれている、６４ビットの数値である。基底アドレスは、各々のプログラム及びデータ域を個別にアドレス指定するための手段として使用することができる。基底アドレスは、配列型の計算では配列の位置を示し、レコード型の処理ではレコードを識別することができる。基底アドレスを使用して、ストレージ全体のアドレス指定が行われる。基底アドレスはまた、指標付けにも使用できる。
【００７７】
指標（Ｘ）は、命令内のＸフィールドと呼ばれる４ビット・フィールドにプログラムで指定された汎用レジスタに含まれている、６４ビットの数値である。指標は、ＲＸ、ＲＸＥ、及びＲＸＹ形式の命令により指定されたアドレスの中にのみ含まれている。ＲＸ−、ＲＸＥ−、ＲＸＦ−、及びＲＸＹ−形式の命令では、二重の指標付けが可能である、即ち、指標を使用して、配列の中の要素のアドレスを与えることができる。
【００７８】
変位（Ｄ）は、命令内のＤフィールドと呼ばれるフィールドに含まれている、１２ビット又は２０ビットの数値である。１２ビット変位は符号なしであり、基底アドレスが指定する記憶位置を超えた最大４，０９５バイトまでの相対アドレッシングを提供する。２０ビットの変位は符号付きであり、基底アドレスの位置を超えた最大５２４，２８７バイトまで、又はその前の最大５２４，２８８バイトまでの相対アドレス指定を提供する。配列型の計算では、変位を使用して、１つの要素と関連した多数の項目のうちの１つを指定することができる。レコードの処理では、変位を使用して、レコード内の項目を識別することができる。１２ビットの変位は、特定の形式の命令のビット位置２０−３１にある。幾つかの形式の命令では、第２の１２ビットの変位も命令のビット位置３６−４７にある。
【００７９】
２０ビットの変位は、ＲＳＹ、ＲＸＹ、又はＳＩＹ形式の命令の中だけにある。これらの命令において、Ｄフィールドは、ビット位置２０−３１のＤＬ（低）フィールドと、ビット位置３２−３９のＤＨ（高）フィールドとから成る。長変位ファシリティがインストールされた場合、変位の数値は、ＤＬフィールドの内容の左にＤＨフィールドの内容を追加することにより形成される。長変位ファシリティがインストールされていない場合、変位の数値は、ＤＬフィールドの内容の左に８つの０ビットを追加することにより形成され、ＤＨフィールドの内容は無視される。
【００８０】
中間合計値を形成する際、基底アドレス及び指標は、６４ビットの２進整数として扱われる。１２ビットの変位は、１２ビットの符号なし２進整数として扱われ、左側に５２個の０ビットが追加される。２０ビットの変位は、２０ビットの符号付き２進整数として扱われ、左側に符号ビットと等しいビットが４４個追加される。この３つは、６４ビット２進整数として加算され、オーバーフローは無視される。合計値は常に６４ビットの長さであり、生成アドレスを形成するための中間値として用いられる。中間値のビットには、０−６３の番号が付けられる。Ｂ１、Ｂ２、Ｘ２、又はＢ４フィールドのいずれかが０である場合、それに対応するアドレス・コンポーネントが存在しないことを示す。存在しないコンポーネントについては、汎用レジスタ０の内容に関係なく、中間合計値を形成する際に０が使用される。変位が０であるということに、特別な意味はない。
【００８１】
Ｒフィールドが示す汎用レジスタの内容を使用してストレージ内のオペランドをアドレス指定することが命令の説明により指定されている場合は、そのレジスタの内容が６４ビットの中間値として使用される。
【００８２】
１つの命令で、アドレス計算及びオペランド位置の両方に同じ汎用レジスタを指定することができる。アドレス計算は、もしあれば、操作によりレジスタが変更される前に完了する。個々の命令定義の中で特に断りがない限り、生成されるオペランド・アドレスは、ストレージ内でのオペランドの左端のバイトを指す。
【００８３】
生成されるオペランド・アドレスは常に６４ビットの長さであり、ビットには０−６３の番号が付けられている。生成アドレスが中間値から取得される方法は、現行のアドレッシング・モードによって決まる。２４ビット・アドレッシング・モードでは、中間値のビット０−３９は無視され、生成アドレスのビット０−３９は、０に強制的に設定され、中間値のビット４０−６３が、生成アドレスのビット４０−６３になる。３１ビット・アドレッシング・モードでは、中間値のビット０−３２は無視され、生成アドレスのビット０−３２は０に強制的に設定され、中間値のビット３３−６３が、生成アドレスのビット３３−６３になる。６４ビット・アドレッシング・モードでは、中間値のビット０−６３が、生成アドレスのビット０−６３になる。指標レジスタ及び基底アドレス・レジスタの中では、負の値を使用することができる。３１ビット・アドレッシング・モードでは、これらの値のビット０−３２は無視され、２４ビット・アドレッシング・モードでは、これらの値のビット０−３９は無視される。
【００８４】
分岐命令の場合、分岐が実行されたときに次に実行される命令のアドレスを、分岐アドレスと呼ぶ。命令形式は、分岐命令に応じて、ＲＲ、ＲＲＥ、ＲＸ、ＲＸＹ、ＲＳ、ＲＳＹ、ＲＳＩ、ＲＩ、ＲＩＥ、又はＲＩＬとすることができる。分岐アドレスは、ＲＳ、ＲＳＹ、ＲＸ、及びＲＸＹ形式では、基底アドレスと変位により指定され、ＲＸ及びＲＸＹ形式では、指標により指定される。これらの形式において、中間値の生成は、オペランド・アドレスの中間値の生成と同じ規則に従って行われる。ＲＲ及びＲＲＥ形式では、Ｒ２フィールドが示す汎用レジスタの内容が、分岐アドレス形成の元となる中間値として使用される。汎用レジスタ０を、分岐アドレスを含むものとして指定することはできない。Ｒ２フィールドの値が０である場合は、その命令は分岐なしで実行される。
【００８５】
相対−分岐命令は、ＲＳＩ、ＲＩ、ＲＩＥ、及びＲＩＬ形式のものである。相対−分岐命令のＲＳＩ、ＲＩ、及びＲＩＳ形式では、Ｉ２フィールドの内容は、ハーフワードの数を示す１６ビットの符号付き２進整数として扱われる。ＲＩＬ形式では、Ｉ２フィールドの内容は、ハーフワードの数を示す３２ビットの符号付き２進整数として扱われる。分岐アドレスは、相対−分岐命令のアドレスに、Ｉ２フィールドに指定されているハーフワードの数を加えたものである。
【００８６】
ＲＳＩ、ＲＩ、ＲＩＥ、又はＲＩＬ形式の相対分岐命令の場合の６４ビットの中間値は、２つの加数の和であり、ビット位置０からのオーバーフローは無視される。ＲＳＩ、ＲＩ、又はＲＩＥ形式では、第１の加数は、ＣＯＭＰＡＲＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ、ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ  ＡＭＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ、ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ、及びＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥの場合に、Ｉ４フィールドの内容にＩ２フィールドについて上述したようにビットが追加されているという点を除いて、Ｉ２フィールドの内容の右側に１個の０ビットを付加し、左側にその内容の符号ビットと等しいビットを４７個付加したものである。ＲＩＬ形式では、第１の加数は、Ｉ２フィールドの内容の右側に１個の０ビットを付加し、左側にその内容の符号ビットと等しいビットを３１個付加したものである。第２の加数は、全ての形式において、分岐命令の６４ビット・アドレスである。分岐命令のアドレスは、次の順次命令をアドレス指定するためにアドレスが更新される前のＰＳＷの命令アドレスであるか、又は、ＥＸＥＣＵＴＥ命令が使用される場合は、ＥＸＥＣＵＴＥ命令のターゲットのアドレスである。ＥＸＥＣＵＴＥを２４ビット又は３１ビット・アドレッシング・モードで使用している場合、分岐命令のアドレスは、それぞれ、ターゲット・アドレスの左側に４０個又は３３個の０を付加したものである。
【００８７】
分岐アドレスは常に６４ビットの長さであり、ビットには０−６３の番号が付けられる。分岐アドレスは、現行ＰＳＷのビット６４−１２７と置き換わる。分岐アドレスを中間値から取得する方法は、アドレッシング・モードによって決まる。アドレッシング・モードを変更する分岐命令の場合は、新しいアドレッシング・モードが使用される。２４ビット・アドレッシング・モードでは、中間値のビット０−３９は無視され、分岐アドレスのビット０−３９は０にされ、中間値のビット４０−６３が、分岐アドレスのビット４０−６３になる。３１ビット・アドレッシング・モードでは、中間値のビット０−３２は無視され、分岐アドレスのビット０−３２は０にされ、中間値のビット３３−６３が、分岐アドレスのビット３３−６３になる。６４ビット・アドレッシング・モードでは、中間値のビット０−６３が分岐アドレスのビット０−６３になる。
【００８８】
幾つかの分岐命令では、指定された特定の条件を満たしているかどうかによって、分岐するかどうかが決まる。条件が満たされていない場合は、分岐は行われず、通常の順序で命令が続行され、分岐アドレスは使用されない。分岐が行われる場合は、分岐アドレスのビット０−６３が現行ＰＳＷのビット６４−１２７と置き換わる。分岐アドレスは、分岐操作の一部としてストレージにアクセスするためには使用されない。分岐アドレスが奇数であることが原因で起きる指定例外、及び、分岐位置にある命令のフェッチが原因で起こるアクセス例外は、分岐操作の一部として認識されるのではなく、代わりに、分岐位置にある命令の実行に関連した例外として認識される。
【００８９】
ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥのような分岐命令で、分岐アドレス計算及びオペランド位置の両方に同じ汎用レジスタを指定することができる。分岐アドレス計算が完了してから、操作の残りの部分が実行される。
【００９０】
第４章「制御」で説明したプログラム状況ワード（ＰＳＷ）には、プログラムの適正な実行のために必要な情報が含まれている。ＰＳＷは、命令の順序を制御し、現在実行中のプログラムとの関連におけるＣＰＵの状態を保持及び提示するために使用される。アクティブなＰＳＷ、即ち制御を行っているＰＳＷを、現行ＰＳＷ（current PSW）と呼ぶ。分岐命令は、意思決定、ループ制御、及びサブルーチン・リンケージの機能を実行する。分岐命令は、現行ＰＳＷに新しい命令アドレスを導入することにより、命令の順序に影響を与える。１６ビットのＩ２フィールドを有する相対−分岐命令では、基底レジスタを使用せずに、分岐命令の位置を基準として、プラス６４Ｋ−２バイトまで、又はマイナス６４Ｋバイトまでのオフセット位置に分岐することができる。３２ビットのＩ２フィールドを有する相対−分岐命令では、基底レジスタを使用せずに、分岐命令の位置を基準として、プラス４Ｇ−２バイトまで、又はマイナス４Ｇバイトまでのオフセット位置に分岐することができる。
【００９１】
意思決定のためのファシリティは、ＢＲＡＮＣＨ  ＯＮ  ＣＯＮＤＩＴＩＯＮ、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＮＤＩＴＩＯＮ、及びＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＮＤＩＴＩＯＮ  ＬＯＮＧ命令により与えられる。これらの命令は、殆どの算術操作、論理操作、及びＩ／Ｏ操作の結果を反映する条件コードを検査する。条件コードは、２ビットから成り、０、１、２、及び３の４通りの条件コード設定が可能である。
【００９２】
各設定の具体的な意味は、条件コードを設定する操作によって決まる。例えば、条件コードは、０である、０以外、第１オペランドが高い、等しい、オーバーフロー、及びサブチャネル使用中などの条件を反映する。一旦設定されると、条件コードは、別の条件コードを設定させる命令により変更されるまで、変わらないままである。
【００９３】
ＢＲＡＮＣＨ  ＯＮ  ＣＯＮＤＩＴＩＯＮ、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＮＤＩＴＩＯＮ、及びＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＮＤＩＴＩＯＮ  ＬＯＮＧを使用し、アドレスの算術操作及びカウント操作の結果をテストすることにより、ループ制御を行うことができる。特に使用頻度の高い算術とテストの組み合わせに使用する命令として、ＢＲＡＮＣＨ  ＯＮ  ＣＯＵＮＴ、ＢＲＡＮＣＨ  ＯＮ  ＩＮＤＥＸ  ＨＩＧＨ、及びＢＲＡＮＣＨ  ＯＮ  ＩＮＤＥＸ  ＬＯＷ  ＯＲ  ＥＱＵＡＬが提供され、これらの命令と同等の相対・分岐も提供される。これらの分岐は、これらのタスク用に特化されているので、それらの性能が向上する。
【００９４】
アドレッシング・モードの変更が必要ない場合のサブルーチン・リンケージを行う命令には、ＢＲＡＮＣＨ  ＡＮＤ  ＬＩＮＫ及びＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ命令がある。（ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥに関するこの説明は、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＡＮＤ  ＳＡＶＥ及びＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＡＮＤ  ＳＡＶＥ  ＬＯＮＧにも適用される。）これらの命令はどちらも、新しい命令アドレスを導入するだけでなく、戻りアドレスとそれに関連した情報を保存することもできる。分岐命令をターゲットとするＥＸＥＣＵＴＥ命令の場合は、ＥＸＥＣＵＴＥの後に続く命令のアドレスであるが、戻りアドレスは、ストレージ内の分岐命令の後に続く命令アドレスである。
【００９５】
ＢＲＡＮＣＨ  ＡＮＤ  ＬＩＮＫ及びＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥのどちらの命令も、Ｒ１フィールドを有する。これらの命令は、それぞれ命令に応じたフィールドを使用して分岐アドレスを形成する。以下のように命令の働きを要約する。：
・２４ビット・アドレッシング・モードでは、どちらの命令も、汎用レジスタＲ１のビット位置４０−６３に戻りアドレスを入れ、そのレジスタのビット０−３１は変わらないままである。ＢＲＡＮＣＨ  ＡＮＤ  ＬＩＮＫは、汎用レジスタＲ１のビット位置３２−３９に、命令長コードと、現行ＰＳＷからの条件コード及びプログラム・マスクを入れる。ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥは、これらのビット位置に０を入れる。
・３１ビット・アドレッシング・モードでは、どちらの命令も、汎用レジスタＲ１のビット位置３３−６３に戻りアドレスを入れ、ビット位置３２に１を入れ、レジスタのビット０−３１は変わらないままである。
・６４ビット・アドレッシング・モードでは、どちらの命令も、汎用レジスタＲ１のビット位置０−６３に戻りアドレスを入れる。
・どのアドレッシング・モードにおいても、どちらの命令も現行アドレッシング・モードの制御下で分岐アドレスを生成する。これらの命令は、分岐アドレスのビット０−６３をＰＳＷのビット位置６４−１２７に入れる。ＲＲ形式では、命令のＲ２フィールドが０であるときは、どちらの命令も分岐を行わない。
【００９６】
２４ビット又は３１ビットのアドレッシング・モードでは、ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥは、基本アドレッシング・モード・ビット、即ちＰＳＷのビット３２を、汎用レジスタＲ１のビット位置３２に入れることが分かる。ＢＲＡＮＣＨ  ＡＮＤ  ＬＩＮＫは、３１ビット・アドレッシング・モードの場合に同じことを行う。命令ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ  ＡＮＤ  ＳＥＴ  ＭＯＤＥ及びＢＲＡＮＣＨ  ＡＮＤ  ＳＥＴ  ＭＯＤＥは、リンケージ中にアドレッシング・モードの変更が必要な場合に使用するためのものである。これらの命令には、Ｒ１フィールドとＲ２フィールドとがある。以下にこれらの命令の働きを要約する。：
・ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ  ＡＮＤ  ＳＥＴ  ＭＯＤＥは、汎用レジスタＲ１の内容をＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥの場合と同じ設定にする。さらに、この命令は、拡張アドレッシング・モード・ビット、即ちＰＳＷのビット３１を、レジスタのビット位置６３に入れる。
・ＢＲＡＮＣＨ  ＡＮＤ  ＳＥＴ  ＭＯＤＥは、Ｒ１が０以外のときは、以下のことを行う。２４ビット又は３１ビット・モードでは、この命令は、ＰＳＷのビット３２を汎用レジスタＲ１のビット位置３２に入れ、レジスタのビット０−３１及び３３−６３は変更しない。このレジスタが命令アドレスを含む場合、レジスタのビット６３は０でなければならないという点に留意されたい。６４ビット・モードでは、この命令は、ＰＳＷのビット３１（１つ）を汎用レジスタＲ１のビット位置６３に入れ、レジスタのビット０−６２は変更されないままである。
・Ｒ２が０以外のときは、どちらの命令も、以下のように、アドレッシング・モードを設定し、分岐を行う。汎用レジスタＲ２のビット６３が、ＰＳＷのビット位置３１に入れられる。ビット６３が０の場合は、レジスタのビット３２がＰＳＷのビット位置３２に入れられる。ビット６３が１の場合は、ＰＳＷのビット３２は１に設定される。次いで、新しいアドレッシング・モードの制御下で、レジスタの内容から分岐アドレスが生成されるが、レジスタのビット６３は０と見なされる。命令は、分岐アドレスのビット０−６３をＰＳＷのビット位置６４−１２７に入れる。汎用レジスタＲ２のビット６３は変更されないままなので、呼び出し先プログラムに入る時点で１になっていることがある。Ｒ２がＲ１と同じである場合は、指定された汎用レジスタ内の結果は、Ｒ１レジスタについて指定されている結果と同じになる。
【００９７】
割り込み（コンテキスト・スイッチ）：
割り込み機構により、ＣＰＵが、構成の外部、構成の内部、又はＣＰＵ自体の中にある条件の結果として、状態を変化させることが可能になる。優先順位の高い条件に迅速に応答し、条件のタイプを即時認識するのを可能にするために、割り込み条件は、外部割り込み、入力／出力割り込み、マシン・チェック割り込み、プログラム割り込み、再始動割り込み、及び監視プログラム呼び出し割り込みの６つのクラスにグループ化される。
【００９８】
割り込みは、現行ＰＳＷを旧ＰＳＷとして格納し、割り込みの原因を示す情報を格納し、新しいＰＳＷをフェッチすることから成る。処理は、新しいＰＳＷの指定に従って再開する。通常、割り込みが発生したときに格納される旧ＰＳＷには、割り込みが発生しなかったとすれば次に実行されるはずだった命令のアドレスが含まれており、従って、中断されたプログラムの再開が可能である。プログラム割り込み及び監視プログラム呼び出し割り込みの場合、格納された情報は、最後に実行される命令の長さを識別するコードも含んでおり、従って、プログラムが割り込みの原因に対応することが可能である。通常の応答が割り込みを発生させた命令の再実行である或るプログラム条件の場合は、命令アドレスは、最後に実行された命令を直接識別する。
【００９９】
再始動割り込みを除き、ＣＰＵが作動状態にあるときにだけ、割り込みが発生し得る。再始動割り込みは、ＣＰＵが停止状態又は作動状態にあるときにも発生し得る。
【０１００】
いずれのアクセス例外も、その例外が関連している命令の実行の一部として発生する。ＣＰＵが、使用可能でない記憶位置からプリフェッチしようと試みた場合、或いは他の何らかのアクセス例外条件を検出したが、分岐命令又は割り込みが命令シーケンスを変更した結果、当該命令が実行されない場合は、アクセス例外は発生しない。どの命令でも、命令フェッチが原因でアクセス例外が発生することがある。さらに、ストレージ内のオペランドへのアクセスが原因で、命令実行に関連したアクセス例外が発生することがある。例外を発生させずに命令の第１ハーフワードをフェッチできないとき、命令のフェッチを原因とするアクセス例外が示される。命令の第１ハーフワードについてアクセス例外がないときは、命令の最初の２ビットに指定されている命令長に従って、付加的なハーフワードについてアクセス例外が示されることがあるが、命令の第２又は第３のハーフワードにアクセスせずに操作を実行できる場合は、その未使用部分についてアクセス例外が示されるかどうかは、予測不能である。命令フェッチに関するアクセス例外の指示は全ての命令について共通であるので、個々の命令の定義の中ではカバーされない。
【０１０１】
個々の命令の説明の中に特に明記されていない限り、オペランド位置へのアクセスに関連した例外には、以下の規則が適用される。フェッチ・タイプ・オペランドの場合は、アクセス例外が必ず示されるのは、操作の完了に必要なオペランド部分についてのみである。フェッチ・タイプのオペランドの中の、操作の完了に必要な部分については、アクセス例外が示されるかどうかは予測不能である。
【０１０２】
ストア・タイプのオペランドの場合は、オペランドのアクセス不能部分を使用せずに操作を完了できる場合であっても、オペランド全体についてアクセス例外が発生する。ストア・タイプのオペランドの値が予測不能として定義される状況では、アクセス例外が示されるかどうかは予測不能である。オペランド位置へのアクセスが原因でアクセス例外が発生するたびに、命令の説明の中のプログラム例外のリストに、「アクセス」という語が含められる。また、このエントリには、どのオペランドが例外の発生の原因となり得るか、及び、そのオペランド位置へのフェッチ・アクセス又はストア・アクセスのどちらで例外が発生するかも示される。アクセス例外は、オペランドの、個々の命令について定義されている部分についてのみ発生する。
【０１０３】
操作例外は、ＣＰＵが、無効なオペレーション・コードを有する命令を実行しようとした場合に発生する。そのオペレーション・コードは割り当てられていないものであるか、又は、そのオペレーション・コードを有する命令がＣＰＵにインストールされていない可能性がある。操作は抑止される。命令長コードは、１、２、又は３である。操作例外は、０００１（１６進数）のプログラム割り込みコードにより示される（又は、同時にＰＥＲイベントも示される場合は、００８１（１６進数）。
【０１０４】
一部のモデルでは、特殊機能又は特注機能の補助のため、又は、それらの一部として提供されている命令などのように、本明細書では説明されていない命令を提供することがある。従って、本明細書で説明されていないオペレーション・コードにより、必ずしも操作例外が発生するとは限らない。さらに、これらの命令により、操作モードがセットアップされたり、又は、後続の命令の実行に影響を及ぼすような変更がマシンに加えられたりすることもある。このような操作が生じるのを回避するために、本明細書で説明されていないオペレーション・コードを有する命令は、そのオペレーション・コードに関連した特定の機能が求められる場合に限り実行すべきである。
【０１０５】
指定例外（specification exception）は、以下のいずれかが真であるときに発生する。
１．ＰＳＷの未割り当てのビット位置（即ち、ビット位置０、２−４、２４−３０、又は３３−６３のいずれか）に１が入れられる。これは、早期ＰＳＷ指定例外として扱われる。
２．ＰＳＷのビット位置１２に１が入れられる。これは、早期ＰＳＷ指定例外として扱われる。
３．次のいずれかの理由により、ＰＳＷが無効である：
ａ．ＰＳＷのビット３１が１であり、ビット３２が０である。
ｂ．ＰＳＷのビット３１及び３２が、２４ビット・アドレッシング・モードを示す０であり、ＰＳＷのビット６４−１０３が全て０ではない。
ｃ．ＰＳＷのビット３１が０であり、ビット３２が、３１ビット・アドレッシング・モードを示す１であり、ＰＳＷのビット６４−９６が全て０ではない。これは、早期ＰＳＷ指定例外として扱われる。
４．ＰＳＷが奇数の命令アドレスを含む。
５．こうした整数境界指定を必要とする命令で、オペランド・アドレスが整数境界を示していない。
６．偶数番号のレジスタ指定を必要とする命令のＲフィールドにより、奇数番号の汎用レジスタが指定されている。
７．拡張オペランドに、０、１、４、５、８、９、１２、又は１３以外の浮動小数点レジスタが指定されている。
８．１０進数演算の乗数又は除数が、１５桁の数字と符号を超えている。
９．１０進数の乗算又は除算において、第１オペランド・フィールドの長さが、第２オペランド・フィールドの長さより短いか又はこれと等しい。
１０．ＣＩＰＨＥＲ  ＭＥＳＳＡＧＥ、ＣＩＰＨＥＲ  ＭＥＳＳＡＧＥ  ＷＩＴＨ  ＣＨＡＩＮＩＮＧ、ＣＯＭＰＵＴＥ  ＩＮＴＥＲＭＥＤＩＡＴＥ  ＭＥＳＳＡＧＥ  ＤＩＧＥＳＴ、ＣＯＭＰＵＴＥ  ＬＡＳＴ  ＭＥＳＳＡＧＥ  ＤＩＧＥＳＴ、又はＣＯＭＰＵＴＥ  ＭＥＳＳＡＧＥ  ＡＵＴＨＥＮＴＩＣＡＴＩＯＮ  ＣＯＤＥの実行が試みられ、汎用レジスタ０のビット５７−６３における機能コードは、未割り当ての又はインストールされていない機能コードを含む。
１１．ＣＩＰＨＥＲ  ＭＥＳＳＡＧＥ又はＣＩＰＨＥＲ  ＭＥＳＳＡＧＥ  ＷＩＴＨ  ＣＨＡＩＮＩＮＧの実行が試みられ、Ｒ１又はＲ２フィールドは、奇数番号のレジスタ又は汎用レジスタ０を指示する。
１２．ＣＩＰＨＥＲ  ＭＥＳＳＡＧＥ、ＣＩＰＨＥＲ  ＭＥＳＳＡＧＥ  ＷＩＴＨ  ＣＨＡＩＮＩＮＧ、ＣＯＭＰＵＴＥ  ＩＮＴＥＲＭＥＤＩＡＴＥ  ＭＥＳＳＡＧＥ  ＤＩＧＥＳＴ、又はＣＯＭＰＵＴＥ  ＭＥＳＳＡＧＥ  ＡＵＴＨＥＮＴＩＣＡＴＩＯＮ  ＣＯＤＥの実行が試みられ、第２オペランドの長さは、指定された関数のデータ・ブロックのサイズの倍数ではない。この指定例外条件は、クエリ関数に適用されない。
１３．ＣＯＭＰＡＲＥ  ＡＮＤ  ＦＯＲＭ  ＣＯＤＥＷＯＲＤの実行が試みられ、汎用レジスタ１、２、及び３は最初に偶数値を含んでいない。
３２．ＣＯＭＰＡＲＥ  ＡＮＤ  ＳＷＡＰ  ＡＮＤ  ＳＴＯＲＥの実行が試みられ、かつ、次の条件のいずれかが存在する。：
・機能コードが未割り当ての値を指定する。
・格納特性が未割り当ての値を指定する。
・機能コードは０であり、第１オペランドはワード境界上に指定されない。
・機能コードは１であり、第１オペランドはダブルワード境界上に指定されない。
・第２オペランドは、格納値のサイズに対応する整数境界上に指定されない。
３３．ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＬＯＮＧ  ＵＮＩＣＯＤＥ又はＭＯＶＥ  ＬＯＮＧ  ＵＮＩＣＯＤＥの実行が試みられ、汎用レジスタＲ１＋１又はＲ３＋１のいずれの内容も、偶数のバイト数を指定しない。
３４．ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＳＴＲＩＮＧ、ＭＯＶＥ  ＳＴＲＩＮＧ、又はＳＥＡＲＣＨ  ＳＴＲＩＮＧの実行が試みられ、汎用レジスタ０のビット３２−５５が全て０ではない。
３５．ＣＯＭＰＲＥＳＳＩＯＮ  ＣＡＬＬの実行が試みられ、汎用レジスタ０のビット４８−５１が、値００００及び０１１０−１１１１（２進数）のいずれかを有する。
３６．ＣＯＭＰＵＴＥ  ＩＮＴＥＲＭＥＤＩＡＴＥ  ＭＥＳＳＡＧＥ  ＤＩＧＥＳＴ、ＣＯＭＰＵＴＥ  ＬＡＳＴ  ＭＥＳＳＡＧＥ  ＤＩＧＥＳＴ、又はＣＯＭＰＵＴＥ  ＭＥＳＳＡＧＥ  ＡＵＴＨＥＮＴＩＣＡＴＩＯＮ  ＣＯＤＥの実行が試みられ、次のいずれかが真である。：
・Ｒ２フィールドが、奇数番号のレジスタ又は汎用レジスタ０を指定する。
・汎用レジスタ０のビット５６が０ではない。
３７．ＣＯＮＶＥＲＴ  ＨＦＰ  ＴＯ  ＢＦＰ、ＣＯＮＶＥＲＴ  ＴＯ  ＦＩＸＥＤ（ＢＦＰ又はＨＦＰ）、又はＬＯＡＤ  ＦＰ  ＩＮＴＥＧＥＲ（ＢＦＰ）の実行が試みられ、Ｍ３フィールドが有効な修飾子を指定していない。
３８．ＤＩＶＩＤＥ  ＴＯ  ＩＮＴＥＧＥＲの実行が試みられ、Ｍ４フィールドが有効な修飾子を指定していない。
３９．ＥＸＥＣＵＴＥの実行が試みられ、ターゲット・アドレスが奇数である。
４０．ＥＸＴＲＡＣＴ  ＳＴＡＣＫＥＤ  ＳＴＡＴＥの実行が試みられ、汎用レジスタＲ２のビット位置５６−６３のコードは、ＡＳＮ−ａｎｄ−ＬＸ−ｒｅｕｓｅファシリティがインストールされていない場合に４より大きく、或いは、このファシリティがインストールされている場合に５より大きい。
４１．ＦＩＮＤ  ＬＥＦＴＭＯＳＴ  ＯＮＥの実行が試みられ、Ｒ１フィールドが、奇数番号のレジスタを指定する。
４２．ＩＮＶＡＬＩＤＡＴＥ  ＤＡＴ  ＴＡＢＬＥ  ＥＮＴＲＹの実行が試みられ、汎用レジスタＲ２のビット４４−５１が全て０ではない。
４３．ＬＯＡＤ  ＦＰＣの実行が試みられ、ＦＰＣレジスタ内のサポートされていないビットに対応する第２オペランドの１つ又は複数のビットが１である。
４４．ＬＯＡＤ  ＰＡＧＥ−ＴＡＢＬＥ−ＥＮＴＲＹ  ＡＤＤＲＥＳＳの実行が試みられ、命令のＭ４フィールドが、００００−０１００（２進数）以外のいずれかの値を含む。
４５．ＬＯＡＤ  ＰＳＷの実行が試みられ、第２オペランド・アドレスにおけるダブルワードのビット１２が０である。この例外が発生するかどうかは、モデルによって決まる。
４６．ＭＯＮＩＴＯＲ  ＣＡＬＬの実行が試みられ、命令のビット位置８−１１が０を含まない。
４７．ＭＯＶＥ  ＰＡＧＥの実行が試みられ、汎用レジスタ０のビット位置４８−５１が０を含まないか、又は、レジスタのビット５２と５３が両方とも１である。
４８．ＰＡＣＫ  ＡＳＣＩＩの実行が試みられ、Ｌ２フィールドが３１より大きい。
４９．ＰＡＣＫ  ＵＮＩＣＯＤＥの実行が試みられ、Ｌ２フィールドが６３より大きいか、又は偶数である。
５０．ＰＥＲＦＯＲＭ  ＦＬＯＡＴＩＮＧ  ＰＯＩＮＴ  ＯＰＥＲＡＴＩＯＮの実行が試みられ、汎用レジスタ０のビット３２が０であり、ビット３３−６３の１つ又は複数のフィールドが無効であるか、又はインストールされていない機能を指定する。
５１．ＰＥＲＦＯＲＭ  ＬＯＣＫＥＤ  ＯＰＥＲＡＴＩＯＮの実行が試みられ、次のいずれかが真である。：
・汎用レジスタ０のＴビット、即ちビット５５が０であり、レジスタのビット５６−６３の機能コードが無効である。
・汎用レジスタ０のビット３２−５４が全て０ではない。
・アクセス・レジスタ・モードにおいて、ＡＬＥＴを含むパラメータ・リストを使用させる機能コードについて、Ｒ３フィールドが０である。
５２．ＰＥＲＦＯＲＭ  ＴＩＭＩＮＧ  ＦＡＣＩＬＩＴＹ  ＦＵＮＣＴＩＯＮの実行が試みられ、次のいずれかが真である。：
・汎用レジスタ０のビット５６が０ではない。
・汎用レジスタ０のビット５７−６３が、未割り当ての又はインストールされていない機能コードを指定する。
５３．ＰＲＯＧＲＡＭ  ＴＲＡＮＳＦＥＲ又はＰＲＯＧＲＡＭ  ＴＲＡＮＳＦＥＲ  ＷＩＴＨ  ＩＮＳＴＡＮＣＥの実行が試みられ、次の全てが真である。：
・ＰＳＷの拡張アドレッシング・モード・ビットが０である。
・命令のＲ２フィールドが指定する汎用レジスタ内の基本アドレッシング・モード・ビット、即ちビット３２が０である。
・同じレジスタ内の命令アドレスのビット３３−３９が全て０ではない。
５４．ＲＥＳＵＭＥ  ＰＲＯＧＲＡＭの実行が試みられ、次のいずれかが真である。：
・現行ＰＳＷに入れるために、第２オペランドのＰＳＷフィールドのビット３１、３２、及び６４−１２７は有効ではない。次のいずれかが真である場合、例外が発生する。：
−ビット３１及び３２の両方とも０であり、ビット６３−１０３が全て０ではない。
−ビット３１は０、ビット３２が１であり、ビット６４−９６が全て０ではない。
−ビット３１は１、ビット３２が０である。
−ビット１２７が１である。
・パラメータ・リストのビット０−１２が全て０ではない。
５５．ＳＥＡＲＣＨ  ＳＴＲＩＮＧ  ＵＮＩＣＯＤＥの実行が試みられ、汎用レジスタ０のビット３２−４７が全て０ではない。
５６．ＳＥＴ  ＡＤＤＲＥＳＳ  ＳＰＡＣＥ  ＣＯＮＴＲＯＬ、又はＳＥＴ  ＡＤＤＲＥＳＳ  ＳＰＡＣＥ  ＣＯＮＴＲＯＬ  ＦＡＳＴの実行が試みられ、第２オペランド・アドレスのビット５２及び５３が両方とも０ではない。
５７．ＳＥＴ  ＡＤＤＲＥＳＳＩＮＧ  ＭＯＤＥ（ＳＡＭ２４）の実行が試みられ、ＰＳＷ内の未更新の命令アドレスのビット０−３９、ＰＳＷのビット６４−１０３が、全て０ではない。
５８．ＳＥＴ  ＡＤＤＲＥＳＳＩＮＧ  ＭＯＤＥ（ＳＡＭ３１）の実行が試みられ、ＰＳＷ内の未更新の命令アドレスのビット０−３２、ＰＳＷのビット６４−９６が、全て０ではない。
５９．ＳＥＴ  ＣＬＯＣＫ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＦＩＥＬＤの実行が試みられ、汎用レジスタ０のビット３２−４７が全て０ではない。
６０．ＳＥＴ  ＦＰＣの実行が試みられ、ＦＰＣレジスタ内のサポートされていないビットに対応する第１オペランドの１つ又は複数のビットが１である。
６１．ＳＴＯＲＥ  ＳＹＳＴＥＭ  ＩＮＦＯＲＭＡＴＩＯＮの実行が試みられ、汎用レジスタ０内の機能コードが有効であり、次のいずれかが真である。：
・汎用レジスタ０のビット３６−５５及び汎用レジスタ１のビット３２−４７が全て０ではない。
・第２オペランド・アドレスが、４Ｋバイト境界上に位置合わせされない。
６２．ＴＲＡＮＳＬＡＴＥ  ＴＷＯ  ＴＯ  ＯＮＥ又はＴＲＡＮＳＬＡＴＥ  ＴＷＯ  ＴＯ  ＴＷＯの実行が試みられ、汎用レジスタＲ１＋１における長さは偶数のバイトを指定していない。
６３．ＵＮＰＡＣＫ  ＡＳＣＩＩの実行が試みられ、Ｌ１フィールドが３１より大きい。
６４．ＵＮＰＡＣＫ  ＵＮＩＣＯＤＥの実行が試みられ、Ｌ１フィールドが６３より大きいか、又は偶数である。
６５．ＵＰＤＡＴＥ  ＴＲＥＥの実行が試みられ、汎用レジスタ４及び５の最初の内容は、２４ビット又は３１ビット・アドレッシング・モードにおいて８の倍数ではないか、又は、６４ビット・アドレッシング・モードにおいて１６の倍数ではない。旧ＰＳＷにより識別される命令の実行は抑止される。しかしながら、早期ＰＳＷ指定例外（原因１−３）の場合は、新ＰＳＷを導入する操作は完了するが、その直後に割り込みが発生する。命令長コード（ＩＬＣ）は１、２、又は３であり、例外を引き起こした命令の長さを示すことが好ましい。命令アドレスが奇数（６〜３３ページの原因４）の場合は、ＩＬＣが１、２、又は３のいずれになるかは予測不能である。早期ＰＳＷ指定例外（原因１−３）のために例外が発生し、ＬＯＡＤ  ＰＳＷ、ＬＯＡＤ  ＰＳＷ  ＥＸＴＥＮＤＥＤ、ＰＲＯＧＲＡＭ  ＲＥＴＵＲＮ、又は割り込みによりその例外が導入された場合は、ＩＬＣは０である。例外がＳＥＴ  ＡＤＤＲＥＳＳＩＮＧ  ＭＯＤＥ（ＳＡＭ２４、ＳＡＭ３１）により導入された場合は、ＩＬＣは１であり、或いは、ＳＥＴ  ＡＤＤＲＥＳＳＩＮＧ  ＭＯＤＥがＥＸＥＣＵＴＥのターゲットであった場合、ＩＬＣは２である。例外が、ＳＥＴ  ＳＹＳＴＥＭ  ＭＡＳＫ又はＳＴＯＲＥ  ＴＨＥＮ  ＯＲ  ＳＹＳＴＥＭ  ＭＡＳＫにより導入された場合、ＩＬＣは２である。
【０１０６】
プログラム割り込みは、プログラムの実行中に起きた例外及びイベントを報告するために使用される。プログラム割り込みにより、旧ＰＳＷが実記憶位置（real location）３３６−３５１に格納され、新ＰＳＷが実記憶位置４６４−４７９からフェッチされる。割り込み原因は、割り込みコードにより識別される。割り込みコードは、実記憶位置１４２−１４３に入れられ、命令長コードは実記憶位置１４１のバイトのビット位置５及び６に入れられ、そのビットの残りは０に設定され、実記憶位置１４０には０が格納される。原因によっては、割り込みの理由を識別する付加的な情報が実記憶位置１４４−１８３に格納される。ＰＥＲ−３ファシリティがインストールされている場合、プログラム割り込み動作の一部として、ブレーキング・イベント・アドレス・レジスタの内容が、実記憶位置２７２−２７９に入れられる。ＰＥＲイベント及び暗号操作例外を除いて、割り込みコードの右端７個のビット位置に入れられたコード値が、割り込みの原因となった条件を示す。一度に１つの条件しか示すことはできない。割り込みコードのビット０−７は、０に設定される。ＰＥＲイベントは、割り込みコードのビット８が１に設定されることにより示される。これが唯一の条件である場合は、ビット０−７及び９−１５も０に設定される。ＰＥＲイベントと同時に別のプログラム割り込み条件も示される場合、ビット８は１に設定され、他の条件と同様にビット０−７及び９−１５が設定される。暗号操作例外は、割り込みコードの０１１９（１６進数）で示されるか、又は、ＰＥＲイベントも示される場合、０１９９（１６進数）で示される。
【０１０７】
対応するマスク・ビットが存在する場合、そのマスク・ビットが１のときだけ、プログラム割り込み起こり可能性がある。ＰＳＷ内のプログラム・マスクは４つの例外を制御し、ＦＰＣレジスタ内のＩＥＥＥマスクはＩＥＥＥ例外を制御し、制御レジスタ０のビット３３は、ＳＥＴ  ＳＹＳＴＥＭ  ＭＡＳＫが特殊操作例外を起こすかどうかを制御し、制御レジスタ８のビット４８−６３は、監視イベントが引き起こす割り込みを制御し、マスクの階層はＰＥＲイベントが引き起こす割り込みを制御する。いずれかの制御マスク・ビットが０であれば、条件は無視され、その条件は保留のまま残されることはない。
【０１０８】
プログラム割り込み用の新ＰＳＷにＰＳＷ形式エラーがあるか、又は、命令フェッチのプロセスにおいて例外が発生した場合、一連のプログラム割り込みが起きることがある。
【０１０９】
プログラム例外として示される条件の幾つかは、チャネル・サブシステムにより発生することもあり、その場合、例外はサブチャネル状況ワード又は拡張状況ワードで示される。
【０１１０】
データ例外が原因でプログラム割り込みが起きたときは、データ例外コード（ＤＸＣ）が記憶位置１４７に格納され、記憶位置１４４−１４６には０が格納される。ＤＸＣは、種々のタイプのデータ例外条件を識別する。ＡＦＰレジスタ（付加的浮動小数点レジスタ）制御ビット、即ち、制御レジスタ０のビット４５が１のとき、浮動小数点制御（ＦＰＣ）レジスタのＤＸＣフィールドにもＤＸＣが入れられる。他のいずれのプログラム例外が報告されても、ＦＰＣレジスタ内のＤＸＣフィールドは変更されないままである。ＤＸＣは、データ例外の具体的な原因を示す８ビットのコードである。
【０１１１】
ＤＸＣ２及び３は、相互排他的であり、いずれの他のＤＸＣよりも優先順位が高い。従って、例えば、ＤＸＣ２（ＢＦＰ命令）は、どのＩＥＥＥ例外よりも優先され、ＤＸＣ３（ＤＦＰ命令）は、どのＩＥＥＥ例外又はシミュレートされたＩＥＥＥ例外よりも優先される。別の例として、ＤＸＣ３（ＤＦＰ命令）及びＤＸＣ１（ＡＦＰレジスタ）の両方についての条件が存在する場合には、ＤＸＣ３が報告される。指定例外及びＡＦＰレジスタ・データ例外の両方が該当する場合は、どちらが報告されるかは予測不能である。
【０１１２】
アドレッシング例外は、ＣＰＵが、構成内で使用可能になっていない主記憶位置を参照しようと試みた場合に発生する。主記憶位置が構成内で使用できないのは、その位置がインストールされていない場合、ストレージ・ユニットが構成内に存在しない場合、又はストレージ・ユニットの電源がオフである場合である。構成内で使用可能でない記憶位置を指定しているアドレスを、無効であると言う。命令のアドレスが無効な場合は、操作は抑止される。同様に、ＥＸＥＣＵＴＥのターゲット命令のアドレスが無効な場合も、操作は抑止される。さらに、テーブル又はテーブル・エントリにアクセスする際にアドレッシング例外が発生した場合は、操作単位が抑止される。この規則が適用されるテーブル及びテーブル・エントリは、ディスパッチ可能単位制御テーブル、１次ＡＳＮ第２テーブル・エントリ、並びにアクセス・リスト、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、ページ・テーブル、リンケージ・テーブル、リンケージ第１テーブル、リンケージ第２テーブル、エントリ・テーブル、ＡＳＮ第１テーブル、ＡＳＮ第２テーブル、権限テーブル、リンケージ・スタック、及びトレース・テーブル内のエントリである。領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、及びページ・テーブルに対する参照についてアドレッシング例外が生じた場合は、動的アドレス変換の際の暗黙参照の場合も、ＬＯＡＤ  ＰＡＧＥ−ＴＡＢＬＥ−ＥＮＴＲＹ  ＡＤＤＲＥＳＳ、ＬＯＡＤ  ＲＥＡＬ  ＡＤＤＲＥＳＳ、ＳＴＯＲＥ  ＲＥＡＬ  ＡＤＤＲＥＳＳ、及びＴＥＳＴ  ＰＲＯＴＥＣＴＩＯＮの実行と関連した参照の場合も、アドレッシング例外は抑止をもたらす。同様に、ディスパッチ可能単位制御テーブル、１次ＡＳＮ第２テーブル・エントリ、アクセス・リスト、ＡＳＮ第２テーブル、又は権限テーブルへのアクセスについてアドレッシング例外が生じた場合は、暗黙的なアクセス・レジスタ変換の場合も、又は、ＬＯＡＤ  ＰＡＧＥ−ＴＡＢＬＥ−ＥＮＴＲＹ  ＡＤＤＲＥＳＳ、ＬＯＡＤ  ＲＥＡＬ  ＡＤＤＲＥＳＳ、ＳＴＯＲＥ  ＲＥＡＬ  ＡＤＤＲＥＳＳ、ＴＥＳＴ  ＡＣＣＥＳＳ、又はＴＥＳＴ  ＰＲＯＴＥＣＴＩＯＮの一部として行われるアクセス・レジスタ変換の場合も、抑止がもたらされる。実行が抑止される一部の特定の命令を除いて、オペランド・アドレスの変換はできても、そのアドレスが使用不能の位置を示している場合は、操作は終了する。終了の場合は、変更されるのは結果フィールドだけである。この文脈における「結果フィールド」という用語は、条件コード、レジスタ、及びいずれかの記憶位置のうち、命令により変更されるものとして指定されている位置が含まれる。
【０１１３】
上記は、１つのコンピュータ・システムの実施形態の用語及び構造の理解に有用である。実施形態は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ又はそこで提供される説明に制限されるものではない。実施形態は、ここでの教示を有する他のコンピュータ製造業者の他のコンピュータ・アーキテクチャに有利に適用することが可能である。
【０１１４】
異なるプロセッサ・アーキテクチャは、汎用レジスタ（general purpose register）と呼ばれることが多い、制限された数の汎用レジスタ（general register、ＧＲ）を提供し、それらは、アーキテクチャ化された命令セットの命令により明示的に（及び／又は、暗黙的に）識別される。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ及びその前身のアーキテクチャ（１９６４年頃のオリジナルのＳｙｓｔｅｍ３６０に遡ることができる）は、各々の中央演算処理装置（ＣＰＵ）に対して１６個の汎用レジスタ（ＧＲ）を提供する。以下のように、プロセッサ（中央演算処理装置（ＣＰＵ））の命令により、ＧＲを使用することができる。：
・算術又は論理演算のソース・オペランドとして。
・算術又は論理演算のターゲット・オペランドとして。
・メモリ・オペランドのアドレスとして（基底レジスタ、指標レジスタ、又は直接）。
・メモリ・オペランドの長さとして。
・命令との間で機能コード又は他の情報を提供するといった他の使用。
【０１１５】
２０００年にＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅメインフレームが導入されるまで、メインフレームの汎用レジスタは、３２ビットで構成されており、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの導入に伴い、汎用レジスタは６４ビットで構成されるようになったが、互換性の理由で、多くのｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ命令は、引き続き３２ビットをサポートしている。
【０１１６】
同様に、例えばＩｎｔｅｌ（登録商標）からのｘ８６のような他のアーキテクチャは、互換モードを提供するので、例えば３２ビット・レジスタを有する現行のマシンは、命令が、３２ビットＧＲの最初の８ビット又は１６ビットだけにアクセスするモードを提供する。
【０１１７】
初期のＩＢＭ  Ｓｙｓｔｅｍ３６０環境においてさえ、アセンブラ・プログラマ及びコンパイラ設計者にとって、１６個のレジスタ（例えば、命令内の４ビット・レジスタ・フィールドにより識別される）は難題であることが分かっていた。中規模サイズのプログラムは、コード及びデータをアドレス指定するために幾つかの基底レジスタを必要とすることがあり、アクティブな変数を保持するのに使用可能なレジスタの数を制限する。制限された数のレジスタに対処するために、特定の技術が使用される。：
・プログラム設計（モジュラー・プログラミングのように単純な）は、基底レジスタの過剰使用を最小限にするのに役立った。
・コンパイラは、レジスタの動的な再割り当てを管理するために、レジスタの「色分け」のような技術を使用している。
・以下を用いて、基底レジスタの使用を減らすことができる。：即ち、
・（命令内に）即値定数を有するよりより新しい算術及び論理命令。
・相対−即値オペランド・アドレスを有するより新しい命令。
・長変位を有するより新しい命令。
【０１１８】
しかしながら、ＣＰＵ内のレジスタの数が収容可能であるよりも多くの生存変数（livevariable）及びアドレッシング範囲がある場合、一定のレジスタ圧（register pressure）が残る。
【０１１９】
ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅは、３つのプログラムが選択可能なアドレッシング・モード：即ち、２４ビット、３１ビット、及び６４ビット・アドレッシングを提供する。しかしながら、６４ビット値を必要とせず、６４ビットのメモリ・アドレッシングも利用しないプログラムの場合には、６４ビットのＧＲを有することの利点は限られている。以下の開示は、通常は６４ビット・アドレッシング又は変数を使用しないプログラムに対して６４ビット・レジスタを利用するための技術を説明する。
【０１２０】
本開示においては、レジスタのビット位置に、左から右に昇順で番号が付けられる（ビッグエンディアン）慣例が使用される。６４ビット・レジスタでは、ビット０（左端のビット）が最上位の値（２６３）を表し、ビット６３（右端のビット）が最下位の値（２０）を表す。こうしたレジスタの左端の３２ビット（ビット０−３１）は、上位ワード（high word）と呼ばれ、レジスタの右端の３２ビット（ビット３２−６３）は、下位ワード（low word）と呼ばれ、１ワードは３２ビットである。
【０１２１】
上位ワード・ファシリティ
ＣＰＵが３２ビット・モードにあるときに６４ビットの汎用レジスタの上位ワード（最上位の３２ビット）を利用するために、新しい一連の汎用命令（つまり、アプリケーション・プログラムが利用可能な命令）が導入される。プログラムは、新しい命令を利用し、引き続き下位ワードに制限される従来の命令に加えて、ＧＰＲの隠れた（これまで利用可能でなかった）上位ワードにアクセスすることができる。
【０１２２】
図１８を参照すると、６４ビット・レジスタをサポートしているより新しいバージョンのアーキテクチャ上で、１６ビット又は３２ビット・レジスタを有するアーキテクチャに書き込まれたプログラムを実行することができる。例えば３２ビット・モード用に書かれたプログラムは、３２ビット・レジスタ、典型的には３２ビット又はそれより少ない論理アドレス・ビットのみを認識する。６４ビット・アーキテクチャ化コンピュータ・システム内のオペレーティング・システム（ＯＳ）８０１は、６４ビット・モード用に書かれたプログラム８０３、及び、３２ビット・モード用に書かれたプログラム８０２をサポートすることができる。アプリケーション・プログラム８０２、８０３が、３２ビット・モードであるか又は６４ビット・モードであるかに関係なく、プログラム及び／又はオペレーティング・システム間で切り換えを行うとき、こうしたマシンにおけるコンテキスト・スイッチ操作８０４が、６４ビット・レジスタ、及び、プログラム状況ワード（ＰＳＷ）を保存する８０５。従って、特定のコンテキスト・スイッチの際、６４ビット・オペレーティング・システムの制御下の６４ビット・マシンにおいて３２ビット・モードで実行されている３２ビット・プログラムは、そのレジスタが保存され、復元される。コンテキスト・スイッチが行われるプログラムが３２ビット・モードで実行されていても、コンテキスト・スイッチの際、コンピュータ・システム及びオペレーティング・システムは、実際には、汎用レジスタの６４ビット全てを保存し、復元することができる８０５。従って、プログラムは、レジスタの半分だけ、即ち、各レジスタの６４ビットの３２ビットのみを見る。実装されたレジスタの他の３２ビットは、３２ビット・プログラムから「隠されている」。既知のレジスタの３２ビットをアドレス指定のために使用することができ、コンピュータ・システムが６４ビット・アドレッシングをサポートしている場合でも、ＯＳは、動的アドレス変換を介して管理することができるので、アドレスの３２ビットだけが、３２ビット・モードの３２ビット・プログラムにより操作される。プログラムは、ダブルワード（６４ビット）レジスタの下位ワード（３２ビット・ワード）のみを使用しているので、３２ビット・モードは、下位ワード・モードと考えることができる。アプリケーション・プログラムは、ＯＳの制御下で動作し、ＯＳを起動して、ＯＳに特定の機能を実行させる。この「起動」は、アプリケーション・プログラムの状態を保存し、実行されるＯＳの状態をロードするコンテキスト・スイッチ８０４によって行われ、ＯＳは、コンテキスト・スイッチにより与えられたアドレスにおいて実行を開始する。次いで、ＯＳは、コンテキスト・スイッチ８０４によりアプリケーション・プログラムの１つを起動して、そのアプリケーション・プログラムの実行を可能にすることができる。幾つかのアプリケーションにおいては、各アプリケーションの動作のタイムスライスを可能にすることによって、リソースの使用がサポートされ、コンテキスト・スイッチ８０４を用いて、経過時間後にアクティブ・プログラムを「中断し」、ＯＳが、別のタイムスライスにおいて別のアプリケーション・プログラムをディスパッチするのを可能にする。
【０１２３】
上位ワード・ファシリティの可用性は、マシン内のビット又はフィールドにより制御することができ、上位ワード・ファシリティをイネーブルにするように、マシンを設定しなければならない。上位ワード・ファシリティがイネーブルにされたとき、３２ビット・プログラムは、新しい「上位ワード・ファシリティ」命令を実行することにより、レジスタの「隠れた」部分を利用することができる。下位ワード・レジスタを使用する命令に新しい命令を提供する、他の新しい「上位ワード・ファシリティ」命令を提供することができる。
【０１２４】
これらの命令の大部分においては、レジスタの上位ワードのみが操作される。特定の命令では、１つのソース・レジスタの上位ワードを別のソース・レジスタの下位ワードと共に操作するための変形形態が与えられ、その結果は、ターゲット・レジスタの上位ワードに入れられる（例えば、ＡＨＨＬＲ）。ＲＩＳＢＬＧは、上位ワードのＲＩＳＢＨＧ命令に類似した下位ワードを提供する。多数の擬似命令を実施する際に、ＲＩＳＢＨＧとＲＩＳＢＬＧは、大きい柔軟性をもたらす（アセンブラ・プログラムの支援により）。
【０１２５】
上述されたように、プロセッサ・アーキテクチャは、アーキテクチャの命令セットが利用可能な汎用レジスタ（ＧＰＲ）を利用する。プログラムは、ＧＰＲ内にあるデータを利用することができ、このデータは、より低速なメインストアにデータを有するよりも速い性能を得るように、チップ上の埋め込みラッチのような高速メモリ内に実装することができ、多くの場合、複雑な動的アドレス変換メカニズムにより実装される。６４個のＧＰＲを有するｘ８６のような幾つかのアーキテクチャにおいては、各ＧＰＲのサイズは、８ビットから１６ビット、３２ビット、及び現行の６４ビットへと、進化を伴って増大してきた。しかしながら、（命令内のＧＰＲフィールドのビット数（ｘ８６の場合は６）により決定される）命令が利用可能なＧＰＲの数（ｘ８６の場合は６４）は同じままであるので、例えば８ビットＧＰＲを有する従来の命令用に書かれたプログラムは、例えば３２ビットＧＰＲを有する新しいアーキテクチャ上でも依然として実行される。従って、８ビット・モードで動作している、３２ビットＧＰＲを有するマシンは、各々の３２ビットＧＰＲの下位８ビットにのみアクセスを与える。しかしながら、コンテキスト・スイッチ中、３２ビット・オペレーティング・システム（ＯＳ）は、常に、各ＧＰＲの３２ビット全てを保存し、復元する。
【０１２６】
ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの実装において、マシンは、各々が６４ビット（ビット０−６３）からなる１６個のＧＰＲを有することができるが、３２ビット・モードの３２ビット・レジスタ用に書かれたアプリケーション・プログラムを実行することができる。３２ビットは、ＧＰＲの下位の３２ビット（ビット３２−６３）とすることができ、３２ビットの操作モードでは、上位の３２ビット（ビット０−３１）は利用可能ではない（隠されている）。ＧＰＲの上位３２ビットはプログラムには見えないので、アプリケーション・プログラムは、それらを利用する術がない。一例において、アプリケーション・プログラムは、３２ビット・レジスタのみを有し、メモリに対して２４ビット又は３１ビットの論理アドレスをアドレス指定する、前世代のマシンの３２ビット・マシン用に書かれている場合がある。３２ビット・モードは、例示的な３２ビット・アプリケーション・プログラムが、６４ビットのＧＰＲをサポートし、６４ビット・オペレーション・システム（ＯＳ）を有し、６４ビット・モードの６４ビット・アプリケーション・プログラムをサポートするアーキテクチャを有する、より新しいマシン上での実行を可能にする。３２ビットＧＰＲ用に定められた別のマシン・アーキテクチャにおいては、アプリケーション・プログラムには見えない、３２ビットの「隠し（hidden）ＧＰＲ」の組を提供することができる。
【０１２７】
命令のサブセットが隠しＧＰＲ又は上位ＧＰＲにアクセスするのを可能にしながら、残りの命令セットが、アーキテクチャ化されたＧＰＲ又は下位ＧＰＲにアクセスできるようにする「上位ワード・ファシリティ・モード」が提供される。
【０１２８】
「上位ワード・ファシリティ・モード」では、命令のサブセットは、１つの実施においては、上位ＧＰＲにしかアクセスすることができないが、別の実施においては、上位ＧＰＲに向けられるＧＰＲフィールドと、下位ＧＰＲに向けられる別のＧＰＲフィールドとを定め得ることが好ましい。
【０１２９】
別の好ましい実施においては、「上位ワード・ファシリティ・モード」では、メインメモリ・アドレスを生成するために、下位ＧＰＲだけを用いることができる。
【０１３０】
１つの実施において、「上位ワード・ファシリティ・モード」で実行されているアプリケーションが、「上位ワード・ファシリティ・モード」で実行されていないアプリケーションと共存できる。上位ワード・ファシリティ・モードでないアプリケーションは、３２ビットＧＰＲアプリケーション又は６４ビットＧＰＲアプリケーションであり得る。この例では、３２ビットを用いるＧＰＲ用に書かれたアプリケーションと共に６４ビットを有するマシンのＧＰＲが用いられるが、本実施形態は、より少ない数のビット（８、１６、２４、３２、６４）を有するＧＰＲ用に書かれたアプリケーションを実行している、いずれの数のビット（１６、２４、３２、６４、１２８）を有するマシンのＧＰＲにも利点をもたらす。さらに、上位ワード・ファシリティ・モードの隠しレジスタは、該隠しＧＰＲの指定された部分しか用いることができないので、前の例の３２ビット・アプリケーション・プログラムにおいては、例えば、幾つかの命令に対して上位ワード・ファシリティ・モードで利用可能な隠しレジスタは、６４ビットＧＰＲの上位３２ビットのうちの下位８ビット又は１６ビットとすることができ、一方、他の隠しレジスタは、６４ビットＧＰＲの上位３２ビットのうちの上位８ビット又は１６ビットとすることができる。実施形態の教示は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ、及び／又は、ｘ／８６アーキテクチャを用いて提示されるが、本明細書での教示に照らすと、当業者には他の実装が容易に明らかである。
【０１３１】
例示的なｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの実施形態においては、選択された３２ビット命令について、上位ワード・ファシリティは、１６個の６４ビット汎用レジスタ（ビット０−６３）のうちのこれまで利用可能でなかった上位ビット０−３１を用いることにより、１６個の付加的な３２ビット・レジスタ（上位ワード・レジスタ）を有効に提供する。一実施形態において、上位ワード・ファシリティは、機能を示すニーモニック（例えば、ＡＤＤ  ＨＩＧＨを表すＡＨＨＨＲ）を有する次の命令を可能にすることができる。
・ＡＤＤ  ＨＩＧＨ（ＡＨＨＨＲ、ＡＨＨＬＲ）
・ＡＤＤ  ＩＭＭＥＤＩＡＴＥ  ＨＩＧＨ（ＡＩＨ）
・ＡＤＤ  ＬＯＧＩＣＡＬ  ＨＩＧＨ（ＡＬＨＨＨＲ、ＡＬＨＨＬＲ）
・ＡＤＤ  ＬＯＧＩＣＡＬ  ＷＩＴＨ  ＳＩＧＮＥＤ  ＩＭＭＥＤＩＡＴＥ  ＨＩＧＨ（ＡＬＳＩＨ、ＡＬＳＩＨＮ）
・ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＵＮＴ  ＨＩＧＨ（ＢＲＣＴＨ）
・ＣＯＭＰＡＲＥ  ＨＩＧＨ（ＣＨＨＲ、ＣＨＬＲ、ＣＨＦ）
・ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ  ＨＩＧＨ（ＣＩＨ）
・ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＨＩＧＨ（ＣＬＨＨＲ、ＣＬＨＬＲ、ＣＬＨＦ）
・ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ  ＨＩＧＨ（ＣＬＩＨ）
・ＬＯＡＤ  ＢＹＴＥ  ＨＩＧＨ（ＬＢＨ）
・ＬＯＡＤ  ＨＡＬＦＷＯＲＤ  ＨＩＧＨ（ＬＨＨ）
・ＬＯＡＤ  ＨＩＧＨ（ＬＦＨ）
・ＬＯＡＤ  ＬＯＧＩＣＡＬ  ＣＨＡＲＡＣＴＥＲ  ＨＩＧＨ（ＬＬＣＨ）
・ＬＯＡＤ  ＬＯＧＩＣＡＬ  ＨＡＬＦＷＯＲＤ  ＨＩＧＨ（ＬＬＨＨ）
・ＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ  ＨＩＧＨ（ＲＩＳＢＨＧ）
・ＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ  ＬＯＷ（ＲＩＳＢＬＧ）
・ＳＴＯＲＥ  ＣＨＡＲＡＣＴＥＲ  ＨＩＧＨ（ＳＴＣＨ）
・ＳＴＯＲＥ  ＨＡＬＦＷＯＲＤ  ＨＩＧＨ（ＳＴＨＨ）
・ＳＴＯＲＥ  ＨＩＧＨ（ＳＴＦＨ）
・ＳＵＢＴＲＡＣＴ  ＨＩＧＨ（ＳＨＨＨＲ、ＳＨＨＬＲ）
・ＳＵＢＴＲＡＣＴ  ＬＯＧＩＣＡＬ  ＨＩＧＨ（ＳＬＨＨＨＲ、ＳＬＨＨＬＲ）
である。
【０１３２】
インターロック・アクセス（interlocked-access）ファシリティがインストールされている場合、次の付加的な一般命令を利用可能にすることができる。：すなわち、
・ＬＯＡＤ  ＡＮＤ  ＡＤＤ（ＬＡＡ、ＬＡＡＧ）
・ＬＯＡＤ  ＡＮＤ  ＡＤＤ  ＬＯＧＩＣＡＬ（ＬＡＡＬ、ＬＡＡＬＧ）
・ＬＯＡＤ  ＡＮＤ  ＡＮＤ（ＬＡＮ、ＬＡＮＧ）
・ＬＯＡＤ  ＡＮＤ  ＥＸＣＬＵＳＩＶＥ  ＯＲ（ＬＡＸ、ＬＡＸＧ）
・ＬＯＡＤ  ＡＮＤ  ＯＲ（ＬＡＯ、ＬＡＯＧ）
・ＬＯＡＤ  ＰＡＩＲ  ＤＩＳＪＯＩＮＴ（ＬＰＤ、ＬＰＤＧ）
である。
【０１３３】
条件付きロード／ストア（load/store-on-condition）ファシリティがインストールされている場合、次の付加的な一般命令を利用可能にすることができる。：即ち、
・ＬＯＡＤ  ＯＮ  ＣＯＮＤＩＴＩＯＮ（ＬＯＣ、ＬＧＯＣ、ＬＧＲＯＣ、ＬＲＯＣ）
・ＳＴＯＲＥ  ＯＮ  ＣＯＮＤＩＴＩＯＮ（ＳＴＯＣ、ＳＴＧＯＣ）
である。
【０１３４】
独立オペランド（distinct-operands）ファシリティがインストールされている場合、次の付加的な一般命令を利用可能にすることができる。：即ち、
・ＡＤＤ（ＡＲＫ、ＡＧＲＫ）
・ＡＤＤ  ＩＭＭＥＤＩＡＴＥ（ＡＨＩＫ、ＡＧＨＩＫ）
・ＡＤＤ  ＬＯＧＩＣＡＬ（ＡＬＲＫ、ＡＬＧＲＫ）
・ＡＤＤ  ＬＯＧＩＣＡＬ  ＷＩＴＨ  ＳＩＧＮＥＤ  ＩＭＭＥＤＩＡＴＥ（ＡＬＨＳＩＫ、ＡＬＧＨＳＩＫ）
・ＡＮＤ（ＮＲＫ、ＮＧＲＫ）
・ＥＸＣＬＵＳＩＶＥ  ＯＲ（ＸＲＫ、ＸＧＲＫ）
・ＯＲ（ＯＲＫ、ＯＧＲＫ）
・ＳＨＩＦＴ  ＬＥＦＴ  ＳＩＮＧＬＥ（ＳＬＡＫ）
・ＳＨＩＦＴ  ＬＥＦＴ  ＳＩＮＧＬＥ  ＬＯＧＩＣＡＬ（ＳＬＬＫ）
・ＳＨＩＦＴ  ＲＩＧＨＴ  ＳＩＮＧＬＥ（ＳＲＡＫ）
・ＳＨＩＦＴ  ＲＩＧＨＴ  ＳＩＮＧＬＥ  ＬＯＧＩＣＡＬ（ＳＲＬＫ）
・ＳＵＢＴＲＡＣＴ（ＳＲＫ、ＳＧＲＫ）
・ＳＵＢＴＲＡＣＴ  ＬＯＧＩＣＡＬ（ＳＬＲＫ、ＳＬＧＲＫ）
である。
【０１３５】
例示的な上位ワード命令：
次のものは、上位ワード・ファシリティを用いることができる例示的な命令である。
【０１３６】
ＡＤＤ  ＨＩＧＨ（ＲＲＦ形式）
命令がコンピュータ・システムにより実行されると、第２オペランドが第３オペランドに加算され、和が第１オペランド位置に入れられる。オペランドと和は、３２ビットの符号付き２進整数として扱われる。第１及び第２オペランドは、それぞれ、汎用レジスタＲ１及びＲ２のビット位置０−３１にあり、汎用レジスタＲ１のビット３２−６３は変更されず、汎用レジスタＲ２のビット３２−６３は無視される。ＡＨＨＨＲオペコードの場合、第３オペランドは、汎用レジスタＲ３のビット位置０−３１にあり、レジスタのビット３２−６３は無視される。ＡＨＨＬＲオペコードの場合、第３オペランドは、汎用レジスタＲ３のビット位置３２−６３にあり、レジスタのビット０−３１は無視される。オーバーフローが発生すると、符号ビット位置へのいずれの繰り上がりも許容し、符号ビット位置からのいずれの繰り上がりも無視することにより、結果が得られ、条件コード３が設定される。固定小数点オーバーフロー・マスクが１の場合、固定小数点オーバーフローに関するプログラム割り込みが発生する。
結果として得られる条件コード：
０  結果は０であり、オーバーフローは発生しない
１  結果は０より小さく、オーバーフローは発生しない
２  結果が０より大きく、オーバーフローは発生しない
３  オーバーフロー
プログラム例外：
・固定小数点オーバーフロー例外
・操作例外（上位ワード・ファシリティがインストールされない場合）
【０１３７】
ＡＤＤ  ＩＭＭＥＤＩＡＴＥ  ＨＩＧＨ（ＲＩＬ形式）
命令がコンピュータ・システムにより実行されると、第２オペランドが第１オペランドに加算され、和が第１オペランド位置に入れられる。オペランドと和は、３２ビットの符号付き２進整数として扱われる。第１オペランドは、汎用レジスタＲ１のビット位置０−３１にあり、レジスタのビット３２−６３は変更されない。オーバーフローが発生すると、符号ビット位置へのいずれの繰り上がりも許容し、符号ビット位置からのいずれの繰り上がりも無視することによって、結果が得られ、条件コード３が設定される。固定小数点オーバーフロー・マスクが１の場合、固定小数点オーバーフローに関するプログラム割り込みが発生する。
結果として得られる条件コード：
０  結果は０であり、オーバーフローは発生しない
１  結果は０より小さく、オーバーフローは発生しない
２  結果が０より大きく、オーバーフローは発生しない
３  オーバーフロー
プログラム例外：
・固定小数点オーバーフロー例外
・操作例外（上位ワード・ファシリティがインストールされない場合）
【０１３８】
ＡＤＤ  ＬＯＧＩＣＡＬ  ＨＩＧＨ（ＲＲＦ形式）
命令がコンピュータ・システムにより実行されると、第２オペランドが第３オペランドに加算され、和が第１オペランド位置に入れられる。オペランドと和は、３２ビットの符号なし２進整数として扱われる。第１及び第２オペランドは、それぞれ、汎用レジスタＲ１及びＲ２のビット位置０−３１にあり、汎用レジスタＲ１のビット３２−６３は変更されず、汎用レジスタＲ２のビット３２−６３は無視される。ＡＬＨＨＨＲオペコードの場合、第３オペランドは、汎用レジスタＲ３のビット０−３１にあり、レジスタのビット３２−６３は無視される。ＡＬＨＨＬＲオペコードの場合、第３オペランドは、汎用レジスタＲ３のビット３２−６３にあり、レジスタのビット０−３１は無視される。
結果として得られる条件コード：
０  結果は０であり、繰り上がりはない
１  結果は０でなく、繰り上がりはない
２  結果は０であり、繰り上がる
３  結果は０でなく、繰り上がる
プログラム例外：
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１３９】
ＡＤＤ  ＬＯＧＩＣＡＬ  ＷＩＴＨ  ＳＩＧＮＥＤ  ＩＭＭＥＤＩＡＴＥ  ＨＩＧＨ（ＲＩＬ形式）
命令がコンピュータ・システムにより実行されると、第２オペランドが第１オペランドに加算され、和が第１オペランド位置に入れられる。第１オペランドと和は、３２ビットの符号なし２進整数として扱われる。第２オペランドは、３２ビットの符号付き２進整数として扱われる。第１オペランドは、汎用レジスタＲ１のビット０−３１にあり、レジスタのビット３２−６３は変更されない。
結果として得られる条件コード：
ＡＬＳＩＨの場合、コードは次のように設定される。：
０  結果は０であり、繰り上がりはない
１  結果は０でなく、繰り上がりはない
２  結果は０であり、繰り上がる
３  結果は０でなく、繰り上がる
ＡＬＳＩＨＮの場合、コードは変更されないままである。
プログラム例外：
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１４０】
ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＵＮＴ  ＨＩＧＨ（ＲＩ、ＲＩＬ形式）
命令がコンピュータ・システムにより実行されると、第１オペランドから１が減算され、結果が第１オペランド位置に入れられる。ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＵＮＴ（ＢＲＣＴオペコード）の場合、第１オペランド及び結果は、汎用レジスタＲ１のビット３２−６３にある３２ビットの２進整数として扱われ、オーバーフローは無視され、レジスタのビット０−３１は変更されない。ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＵＮＴ  ＨＩＧＨ（ＢＲＣＴＨオペコード）の場合、第１オペランド及び結果は、汎用レジスタＲ１のビット０−３１にある３２ビットの２進整数として扱われ、オーバーフローは無視され、レジスタのビット３２−６３は変更されない。ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＵＮＴ（ＢＲＣＴＧオペコード）の場合、第１オペランド及び結果は、６４ビットの２進整数として扱われ、オーバーフローは無視される。結果が０のときには、更新済み命令アドレスを使用して通常の命令順序に従って処理が進められる。結果が０でない場合は、現行ＰＳＷの中の命令アドレスが、分岐アドレスに置き換えられる。Ｉ２フィールドの内容が、分岐アドレスを生成するために命令のアドレスに加えられるハーフワードの数を指定する符号付き２進整数である。
条件コード：コードは変更されないままである。
プログラム例外：
・操作例外（ＢＲＣＴＨ、上位ワード・ファシリティがインストールされていない場合）
【０１４１】
プログラミング上の注意：
１．操作は、分岐アドレスを指定する方法を除いて、ＢＲＡＮＣＨ  ＯＮ  ＣＯＵＮＴ命令のものと同じである。
２．２進数減算の結果は符号付きの場合でも又は符号なしの場合でも同じになるため、第１オペランド及び結果は、符号付き２進整数又は符号なし２進整数のどちらと見なすこともできる。
３．初期カウントが１の場合、結果は０であり、分岐は実行されない。初期カウントが０の場合、結果は−１であり、分岐が実行される。初期カウントが−１の場合、結果は−２であり、分岐が実行される。以下同様である。ループ内では、結果が再び０に戻るまでは、命令が実行されるたびに分岐が実行される。
ＢＲＣＴの場合は、数値範囲上の理由で、初期カウントが−２３１なら、結果は正の値２３１−１になり、又は、ＢＲＣＴＧの場合は、初期カウントが−２６３なら、結果は正の値２６３−１になることに留意されたい。
４．命令が、実行（ｅｘｅｃｕｔｅ）タイプ命令のターゲットであるとき、分岐は、ターゲット・アドレスを基準とする相対的なものになる。
【０１４２】
ＣＯＭＰＡＲＥ  ＨＩＧＨ（ＲＲＥ、ＲＸＹ形式）、ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ  ＨＩＧＨ（ＲＩＬ形式）
命令がコンピュータ・システムにより実行されると、第１オペランドが第２オペランドと比較され、その結果が条件コードで示される。これらのオペランドは、３２ビットの符号付き２進整数として扱われる。第１オペランドは、汎用レジスタＲ１のビット位置０−３１にあり、レジスタのビット位置３２−６３は無視される。ＣＯＭＰＡＲＥ  ＨＩＧＨ（ＣＨＨＲオペコード）の場合、第２オペランドは、汎用レジスタＲ２のビット位置０−３１にあり、レジスタのビット位置３２−６３は無視される。ＣＯＭＰＡＲＥ  ＨＩＧＨ（ＣＨＬＲオペコード）の場合、第２オペランドは、汎用レジスタＲ２のビット位置３２−６３にあり、レジスタのビット位置０−３１は無視される。ＣＨＦに関する変位は、２０ビットの符号付き２進整数として扱われる。
結果として得られる条件コード：
０  両オペランドは等しい
１  第１オペランドの方が小さい
２  第１オペランドの方が大きい
３  −−
プログラム例外：
・アクセス例外（ＣＨＦのオペランド２のみ）
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１４３】
ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＨＩＧＨ（ＲＲＥ、ＲＸＹ形式）、ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ  ＨＩＧＨ（ＲＩＬ形式）
命令がコンピュータ・システムにより実行されると、第１オペランドが第２オペランドと比較され、その結果が条件コードで示される。これらのオペランドは、３２ビットの符号なし２進整数として扱われる。第１オペランドは、汎用レジスタＲ１のビット位置０−３１にあり、レジスタのビット位置３２−６３は無視される。ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＨＩＧＨ（ＣＬＨＨＲオペコード）の場合、第２オペランドは、汎用レジスタＲ２のビット位置０−３１にあり、レジスタのビット位置３２−６３は無視される。ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＨＩＧＨ（ＣＬＨＬＲオペコード）の場合、第２オペランドは、汎用レジスタＲ２のビット位置３２−６３にあり、レジスタのビット位置０−３１は無視される。ＣＬＨＦに関する変位は、２０ビットの符号付き２進整数として扱われる。
結果として得られる条件コード：
０  両オペランドは等しい
１  第１オペランドの方が小さい
２  第１オペランドの方が大きい
３  −−
プログラム例外：
・アクセス例外（ＣＬＨＦのオペランド２のみ）
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１４４】
ＬＯＡＤ  ＢＹＴＥ  ＨＩＧＨ（ＲＸＹ形式）
命令がコンピュータ・システムにより実行されると、第２オペランドは符号拡張され、第１オペランド位置に入れられる。第２オペランドは、長さが１バイトであり、８ビットの符号付き２進整数として扱われる。第１オペランドは、汎用レジスタＲ１のビット０−３１にある３２ビットの符号付き２進整数として扱われ、レジスタのビット３２−６３は変更されない。変位は、２０ビットの符号付き２進整数として扱われる。
条件コード：コードは変更されないままである。
プログラム例外：
・アクセス例外（フェッチ、オペランド２）
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１４５】
ＬＯＡＤ  ＨＡＬＦＷＯＲＤ  ＨＩＧＨ（ＲＸＹ形式）
命令がコンピュータ・システムにより実行されると、第２オペランドは符号拡張され、第１オペランド位置に入れられる。第２オペランドは、長さが２バイトであり、１６ビットの符号付き２進整数として扱われる。第１オペランドは、汎用レジスタＲ１のビット０−３１にある３２ビットの符号付き２進整数として扱われ、レジスタのビット３２−６３は変更されない。変位は、２０ビットの符号付き２進整数として扱われる。
条件コード：コードは変更されないあまである。
プログラム例外：
・アクセス例外（フェッチ、オペランド２）
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１４６】
ＬＯＡＤ  ＨＩＧＨ（ＲＸＹ形式）
命令がコンピュータ・システムにより実行されると、第２オペランドは、変更されずに、第１オペランド位置に入れられる。第２オペランドは３２ビットであり、第１オペランドは、汎用レジスタＲ１のビット０−３１にあり、レジスタのビット３２−６３は変更されない。変位は、２０ビットの符号付き２進整数として扱われる。
条件コード：コードは変更されないままである。
プログラム例外：
・アクセス例外（フェッチ、オペランド２）
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１４７】
ＬＯＡＤ  ＬＯＧＩＣＡＬ  ＣＨＡＲＡＣＴＥＲ  ＨＩＧＨ（ＲＸＹ形式）
命令がコンピュータ・システムにより実行されると、１バイトの第２オペランドが、汎用レジスタＲ１のビット位置２４−３１に入れられ、０が、汎用レジスタＲ１のビット位置０−２３に入れられ、汎用レジスタＲ１のビット位置３２−６３は変更されない。変位は、２０ビットの符号付き２進整数として扱われる。
条件コード：コードは変更されないままである。
プログラム例外：
・アクセス例外（フェッチ、オペランド２）
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１４８】
ＬＯＡＤ  ＬＯＧＩＣＡＬ  ＨＡＬＦＷＯＲＤ  ＨＩＧＨ（ＲＸＹ形式）
命令がコンピュータ・システムにより実行されると、２バイトの第２オペランドが、汎用レジスタＲ１のビット位置１６−３１に入れられ、０が、汎用レジスタＲ１のビット位置０−１５に入れられ、汎用レジスタＲ１のビット位置３２−６３は変更されない。変位は、２０ビットの符号付き２進整数として扱われる。
条件コード：コードは変更されないままである。
プログラム例外：
・アクセス例外（フェッチ、オペランド２）
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１４９】
ＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ  ＨＩＧＨ（ＲＩＥ形式）、ＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ  ＬＯＷ（ＲＩＥ形式）
命令がコンピュータ・システムにより実行されると、６４ビットの第２オペランドが、第５オペランドに指定されたビットの数だけ左にローテートされる。オペランドの左端のビット位置から外にシフトされた各ビットは、オペランドの右端のビット位置に再び入る。ローテートされた第２オペランドの選択されたビットは、第１オペランドの対応するビット位置の内容に置き換わる。ＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ  ＨＩＧＨの場合、第１オペランドは、汎用レジスタＲ１のビット０−３１にあり、レジスタのビット３２−６３は変更されない。ＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ  ＬＯＷの場合、第１オペランドは、汎用レジスタＲ１のビット３２−６３にあり、レジスタのビット０−３１は変更されない。第２オペランドは、汎用レジスタＲ２において変更されないままである。ＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ  ＨＩＧＨの場合は、各々の左側に２進数の０が付加された、Ｉ３フィールド及びＩ４フィールドのビット３−７（それぞれ、命令のビット位置１９−２３及び２７−３１）は、ローテート後に、第１オペランド及び第２オペランドにおける選択されたビット範囲の開始ビット位置及び最終ビット位置（これらを含めた）を指定する６ビットの符号なし２進整数を形成する。最終ビット位置が開始ビット位置より小さいときは、選択されたビット範囲は、ビット３１からビット０へ循環する（wrap around）。従って、選択されたビット範囲の開始ビット位置及び最終ビット位置は、常に、０から３１までの間になる。ＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ  ＬＯＷの場合は、各々の左側に２進数の１が付加された、Ｉ３フィールド及びＩ４フィールドのビット位置３−７は、ローテート後、第１オペランド及び第２オペランドにおける選択されたビット範囲の開始ビット位置及び最終ビット位置（これらを含めた）を指定する６ビットの符号なし２進整数を形成する。最終ビット位置が開始ビット位置より小さいときは、選択されたビット範囲は、ビット６３からビット３２に循環する。従って、選択されたビット範囲の開始ビット位置及び最終ビット位置は、常に、３２から６３までの間になる。Ｉ５フィールドのビット２−７（命令のビット３４−３９）は、第２オペランドを左にローテートさせるビット数を指定する符号なし２進整数を含む。Ｉ４フィールドのビット０（命令のビット２４）は、０−残りのビットの制御（Ｚ）を含む。Ｚビット制御は、第１オペランドの残りのビットがどのように設定されるかを示す（即ち、あるとしたら、指定された範囲の外にあるビット）。Ｚビットが０のときは、第１オペランドの残りのビットは変更されない。Ｚビットが１のときは、第１オペランドの残りのビットは０に設定される。ここで説明された即値フィールドは、次のとおりである。：すなわち、Ｉ３フィールドのビット０−２及びＩ４フィールドのビット１−２（それぞれ、命令のビット１６−１９及び２５−２６）は予約されており、０を含む必要がある。そうでない場合には、将来、プログラムが、互換性を有した状態で動作しない可能性がある。Ｉ５フィールドのビット０−１（命令のビット３２−３３）は無視される。
条件コード：コードは変更されないままである。
プログラム例外：
・操作例外（上位ワード・ファシリティがインストールされていない場合）
プログラミング上の注意：
１．Ｉ５フィールドのビット２−７は、第２オペランドを左にローテートさせるビット数を指定する符号なし２進整数を含むように定められるが、負の値をコード化し、右へのローテート量を有効に指定するようにすることもできる。
２．第１オペランドは、常に、ローテートされていない形で使用される。Ｒ１フィールド及びＲ２フィールドが同じレジスタを指定するときは、レジスタ内に含まれる値が最初にローテートされ、次いで、ローテート値の選択されたビットが、ローテートされていないレジスタの内容の対応するビットに挿入される。
３．アセンブラ構文においては、ローテート量を含むＩ５オペランドは随意的であると考えられる。Ｉ５フィールドがコード化されていないとき、ローテート量０を意味する。
４．Ｉ４フィールドは、０−残りのビットの制御（Ｚ）（ビット０における）と、最終ビット位置の値（ビット２−７における）の両方を含む。例えば、レジスタ７のビット４０−４３をレジスタ５の対応するビット位置に挿入し（ローテーションなし）、レジスタ５の右半分の残りのビットをゼロにするために、プログラマは、次のようにコード化することができる：即ち、Ｘ「８０」は、最終ビット位置に付加されてＩ４フィールドを形成する、０−残りのビットの制御を表す。高レベル・アセンブラ（ＨＬＡＳＭ）は、それぞれ、ＲＩＳＢＨＧＺ及びＲＩＳＢＬＨＺの形態の、ＲＩＳＢＨＧ及びＲＩＳＢＬＧの０−残りのビットバージョンに対する代替的なニーモニックを提供する。ニーモニックへの「Ｚ」サフィックス付加は、オブジェクト・コードを生成するときに、指定されたＩ４フィールドが、Ｘ「８０」の値と論理和演算されることを示す。Ｚサフィックスを付加したニーモニックを使用する上記に示された例に相当するのは次の通りである。：
５．幾つかのモデルでは、０−残りのビットの制御を１に設定することにより（又は、Ｚサフィックスを付加したニーモニックを使用することにより）、ＲＩＳＢＨＧ及びＲＩＳＢＬＧの改善された性能を達成することができる。
６．条件コードを設定するＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳとは異なり、ＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ  ＨＩＧＨ及びＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ  ＬＯＷは、条件コードを設定しない。
【０１５０】
ＳＴＯＲＥ  ＣＨＡＲＡＣＴＥＲ  ＨＩＧＨ（ＲＸＹ形式）
命令がコンピュータ・システムにより実行されると、汎用レジスタＲ１のビット２４−３１は、変更されずに、第２オペランド位置に入れられる。第２オペランドの長さは、１バイトである。変位は、２０ビットの符号付き２進整数として扱われる。
条件コード：コードは変更されない。
プログラム例外：
・アクセス例外（ストア、オペランド２）
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１５１】
ＳＴＯＲＥ  ＨＡＬＦＷＯＲＤ  ＨＩＧＨ（ＲＸＹ形式）
命令がコンピュータ・システムにより実行されると、汎用レジスタＲ１のビット１６−３１が、変更されずに、第２オペランド位置に入れられる。第２オペランドの長さは、２バイトである。変位は、２０ビットの符号付き２進整数として扱われる。
条件コード：コードは変更されない。
プログラム例外：
・アクセス例外（ストア、オペランド２）
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１５２】
ＳＴＯＲＥ  ＨＩＧＨ（ＲＸＹ形式）
命令がコンピュータ・システムにより実行されると、第１オペランドは、変更されずに、第２オペランド位置に入れられる。第１オペランドは、汎用レジスタＲ１のビット０−３１にあり、第２オペランドはストレージ内の３２ビットである。変位は、２０ビットの符号付き２進整数として扱われる。
条件コード：コードは変更されない。
プログラム例外：
・アクセス例外（ストア、オペランド２）
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１５３】
ＳＵＢＴＲＡＣＴ  ＨＩＧＨ（ＲＲＦ形式）
命令がコンピュータ・システムにより実行されると、第２オペランドから第３オペランドが減算され、差が第１オペランド位置に入れられる。オペランドと差は、３２ビットの符号付き２進整数として扱われる。第１及び第２オペランドは、それぞれ、汎用レジスタＲ１及びＲ２のビット０−３１にあり、汎用レジスタＲ１のビット３２−６３は変更されず、汎用レジスタＲ２のビット３２−６３は無視される。ＳＨＨＨＲオペコードの場合は、第３オペランドは、汎用レジスタＲ３のビット０−３１にあり、レジスタのビット３２−６３は無視される。ＳＨＨＬＲオペコードの場合、第３オペランドは、汎用レジスタＲ３のビット３２−６３にあり、レジスタのビット０−３１は無視される。オーバーフローが発生する、符号ビット位置へのいずれの繰り上がりも許容し、符号ビット位置からのいずれの繰り上がりも無視することによって、結果が得られ、条件コード３が設定される。
固定小数点オーバーフロー・マスクが１の場合、固定小数点オーバーフローに関するプログラム割り込みが発生する。
結果として得られる条件コード：
０  結果が０であり、オーバーフローは発生しない
１  結果が０より小さく、オーバーフローは発生しない
２  結果が０より大きく、オーバーフローは発生しない
３  オーバーフロー
プログラム例外：
・固定小数点オーバーフロー例外
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１５４】
ＳＵＢＴＲＡＣＴ  ＬＯＧＩＣＡＬ  ＨＩＧＨ（ＲＲＦ形式）
命令がコンピュータ・システムにより実行されると、第２オペランドから第３オペランドが減算され、差が第１オペランド位置に入れられる。オペランドと差は、３２ビットの符号なし２進整数として扱われる。第１及び第２オペランドは、それぞれ、汎用レジスタＲ１及びＲ２のビット０−３１にあり、汎用レジスタＲ１のビット３２−６３は変更されず、汎用レジスタＲ２のビット３２−６３は無視される。ＳＬＨＨＨＲオペコードの場合は、第３オペランドは、汎用レジスタＲ３のビット位置０−３１にあり、レジスタのビット３２−６３は無視される。ＳＬＨＨＬＲオペコードの場合、第３オペランドは、汎用レジスタＲ３のビット３２−６３にあり、レジスタのビット０−３１は無視される。
結果として得られる条件コード：
０  −−
１  結果は０でなく、繰り下がりがある
２  結果は０であり、繰り下がりはない
３  結果は０でなく、繰り下がりはない
プログラム例外：
・操作例外（上位ワード・ファシリティがインストールされていない場合）
【０１５５】
図１５を参照すると、１６個のＧＰＲを有する例示的な汎用レジスタ（ＧＰＲ）が示される（各々のＧＰＲは、小容量ＧＰＲモードにあるビット３２−６３と、大容量ＧＰＲモードにあるビット０−６３とを含む）。第１の数（１６）の大容量ＧＰＲを有するコンピュータにおいて、プログラムの命令が利用可能な汎用レジスタ（ＧＰＲ）の有効数を拡張することができ、各々の命令は、オペコードと、対応するＧＰＲを指定するための１つ又は複数のＧＰＲフィールドとを含み、各大容量ＧＰＲは、第１の部分（３２−６３）と第２の部分（０−３１）とから成る。図１６を参照すると、コンピュータは、第１のセット７０１、第２のセット７０２、又は第３のセット７１０のいずれかの命令を含む命令を、実行のためにフェッチする。第１のセットは、いずれかのＧＰＲの第１の部分のみにアクセスし、第２のセットは、いずれかのＧＰＲの第２の部分のみにアクセスし、第３のセットは、第１の部分及び第２の部分を含むＧＰＲ全体にアクセスする。例えばコンピュータが小容量ＧＰＲモードにあり７０３、かつ、第１の部分にアクセスするために第１の命令セットの命令を実行している７０７とき、実行は、小容量ＧＰＲに基づいてメモリ・オペランドにアクセスする又は小容量ＧＰＲのオペランドにアクセスする７０８ために、メモリ・アドレスを生成することを含み、小容量ＧＰＲの各々は、第１の部分から成る。コンピュータが小容量ＧＰＲモードにある７０３とき、コンピュータが上位ワード命令７０５を実行し、命令が指定した第２の部分にアクセスするための第２の命令セットの命令７０６を実行しているとき、実行は、小容量ＧＰＲに基づいてメモリ・オペランドにアクセスする、又は小容量ＧＰＲオペランドにアクセスする７０８ために、メモリ・アドレスを生成することを含み、小容量ＧＰＲは、命令が指定した第２の部分から成る。コンピュータが大容量ＧＰＲモードにあり７０４、各大容量ＧＰＲが第１の部分及び第２の部分から成るとき、コンピュータは、第３の命令セットの命令を実行し、この実行は、大容量ＧＰＲに基づいてメモリ・オペランドにアクセスする、又は大容量ＧＰＲオペランドにアクセスするためにメモリ・アドレスを生成することを含み、各大容量ＧＰＲは、第１の部分及び第２の部分から成る。
【０１５６】
コンピュータが小容量ＧＰＲモードにあることに応答して、コンピュータは、第２の命令セットの命令の実行に応答して操作例外を発生させる７０９ことがある。
【０１５７】
第２の命令セットの命令の実行は、２つのオペランドに基づいた対応するオペコードが定義する関数を実行し７５１、結果を格納することができ、対応オペコード定義関数は、２つのオペランドのＡＤＤ関数、２つのオペランドのＣＯＭＰＡＲＥ関数、又は２つのオペランドのＯＲ関数から成る７５２。
【０１５８】
第２の命令セットの命令の実行は、２つのオペランドに基づいた対応オペコード定義関数を実行し、結果を格納することができ、対応オペコード定義関数は、メモリからのオペランドのＬＯＡＤ関数、又はメモリへのオペランドのＳＴＯＲＥ関数から成る７５３。
【０１５９】
第２の命令セットの命令の実行は、２つのオペランドに基づいた対応オペコード定義関数を実行し、結果を格納することができ、対応オペコード定義関数は、命令が指定した量だけソース・オペランドをローテートし、次いで、ローテートされたソース・オペランドの選択された部分をターゲット・オペランドの選択された部分に挿入すること７５４を含むＲＯＴＡＴＥ  ＴＨＥＮ  ＩＮＳＥＲＴ  ＳＥＬＥＣＴＥＤ  ＢＩＴＳ関数である。
【０１６０】
本発明の好ましい実施形態がここに示され、説明されたが、本発明は、ここで開示される精密な構成に限定されるものではないこと、及び、添付の特許請求の範囲に定められる本発明の範囲内にある全ての変更及び修正に対する権利が保持されることを理解すべきである。
【符号の説明】
【０１６１】
１：プロセッサ（ＣＰＵ）
２：コンピュータ・メモリ（高速メモリ）
３：動的アドレス変換（ＤＡＴ）
４：命令フェッチ・ユニット
５：ロード・ストア・ユニット
６：命令デコード・ユニット
７：変換ルックアサイド・バッファ（ＴＬＢ）（長期ストレージ媒体）
８：命令実行ユニット
９：キャッシュ
１０：ネットワーク
１１：高密度ストレージ媒体
２１：エミュレートされたホスト・コンピュータ・システム
２２：メモリ
２３：エミュレーション・ルーチン
２７：エミュレーション・プロセッサ
５０：コンピュータ・システム
１００：システム
１０１：コンピュータ・システム（ワークステーション）
１０２：ディスプレイ装置
１０３：マウス
１０４：キーボード
１０５：メモリ（高速メモリ、主ストレージ）
１０６：プロセッサ（マイクロプロセッサ）
１０７：長期ストレージ媒体（高密度ストレージ媒体）
１０８：通信
１０９：ネットワーク
１１０：プリンタ／スキャナ
１１１：プログラム・コード
１１２：アプリケーション・プログラム
２００：データ処理ネットワーク
２０１、２０２、２０３、２０４、２０５：ワークステーション
２０６：クライアント・サーバ（ゲートウェイ・コンピュータ）
２０７：ネットワーク（インターネット）
２０８：リモート・サーバ
２１０、２１１：ユーザ
３０３：キャッシュ
３０５：命令フェッチ・ユニット
３０６：ディスパッチ・ユニット（デコード／ディスパッチ・ユニット）
３０７：実行ユニット
３０８：分岐ユニット
３０９：アーキテクチャ化レジスタ
３１０：ロード／ストア・ユニット
３１１：プログラム・カウンタ
４０１：他のプロセッサ・ユニット
４０２、４２６、４５５：算術論理演算ユニット（ＡＬＵ）
４０３、４０４、４０５：レジスタ回路
４０６：出力レジスタ回路
４０７：インターフェース論理
４０８：他のアーキテクチャ化ファシリティ
４２５：他の回路
４２７、４２８、４２９：入力レジスタ回路
４３０：出力レジスタ回路
４３２：分岐履歴テーブル
４５５：他の要素
４６３：制御論理
【図１】
0005657074.tif 000002
【図２】
0005657074.tif 000003
【図３】
0005657074.tif 000004
【図４】
0005657074.tif 000005
【図５】
0005657074.tif 000006
【図６】
0005657074.tif 000007
【図７】
0005657074.tif 000008
【図８】
0005657074.tif 000009
【図９】
0005657074.tif 000010
【図１０】
0005657074.tif 000011
【図１１】
0005657074.tif 000012
【図１２】
0005657074.tif 000013
【図１３】
0005657074.tif 000014
【図１４】
0005657074.tif 000015
【図１５】
0005657074.tif 000016
【図１６】
0005657074.tif 000017
【図１７】
0005657074.tif 000018
【図１８】
0005657074.tif 000019