"インターロックされたメモリオペランドを有する算術/論理命令を実行するためにコンピュータに実装される方法であって、前記算術/論理命令は、オペコードフィールドと、第1のレジスタ内の第1オペランドを指定する第1のレジスタフィールドと、メモリ内の第2オペランドの位置を指定する第2のレジスタを指定する第2のレジスタフィールドと、第3のレジスタを指定する第3のレジスタフィールドとを含み、前記算術/論理命令の前記実行は、プロセッサにより、前記第2のレジスタによって指定されるメモリ内の位置からある値から成る第2オペランドを取得することと、前記第3のレジスタから第3オペランドを取得することと、前記取得した第2オペランド及び前記取得した第3オペランドに基づいて、オペコードが定義した算術演算又は論理演算を行って、結果を生成することと、前記生成した結果を、前記メモリ内の位置に格納することと、前記取得した第2オペランドの前記値を前記第1のレジスタに保存することと、を含む方法。前記結果が0であること、又は前記結果が0でないことを示す条件コードを保存することをさらに含む、請求項1に記載の方法。前記オペコードが定義した算術演算は、算術加算又は論理加算であり、前記オペコードが定義した論理演算は、論理積、排他的論理和、又は論理和のうちのいずれか1つであり、前記論理演算の前記結果が負であることに応答して、前記結果が負であることを示す前記条件コードを保存することと、前記論理演算の前記結果が正であることに応答して、前記結果が正であることを示す前記条件コードを保存することと、前記論理演算の前記結果がオーバーフローであることに応答して、前記結果がオーバーフローであることを示す前記条件コードを保存することと、をさらに含む、請求項2に記載の方法。前記オペコードによってオペランドのサイズが指定され、1つ又は複数の第1のオペコードは32ビットオペランドを指定し、1つ又は複数の第2のオペコードは64ビットオペランドを指定する、請求項3に記載の方法。前記算術/論理命令は、2つの別個のオペコードフィールド、第1の変位フィールド、及び第2の変位フィールドから成る前記オペコードをさらに含み、前記メモリ内の位置は、前記第2のレジスタの内容を符号付き変位値に加算することによって決定され、前記符号付き変位値は、前記第2の変位フィールドに連結された前記第1の変位フィールドの符号拡張された値を含む、請求項4に記載の方法。前記オペコードが第1のオペコードであり、前記第2オペランドが32ビット境界上にないことに応答して、指定例外を発生させることと、前記オペコードが第2のオペコードであり、前記第2オペランドが64ビット境界上にないことに応答して、指定例外を発生させることと、をさらに含む、請求項5に記載の方法。前記プロセッサは、マルチプロセッサシステム内のプロセッサであり、前記第2オペランドを取得することは、前記第2オペランドを取得することと、結果をメモリ内の前記第2の位置に格納することとの間に、前記マルチプロセッサシステムの他のプロセッサが前記メモリ内の位置にアクセスできないようにすることと、前記生成された結果の格納時に、前記マルチプロセッサシステムの他のプロセッサが前記メモリ内の位置にアクセスするのを可能にすることと、をさらに含む、請求項6に記載の方法。インターロックされたメモリオペランドを有する算術/論理命令を実行するためのコンピュータプログラムであって、前記算術/論理命令は、オペコードフィールドと、第1のレジスタ内の第1オペランドを指定する第1のレジスタフィールドと、メモリ内の第2オペランドの位置を指定する第2のレジスタを指定する第2のレジスタフィールドと、第3のレジスタを指定する第3のレジスタフィールドとを含み、前記コンピュータプログラムは、プロセッサに、前記第2のレジスタによって指定されるメモリ内の位置からある値から成る第2オペランドを取得することと、前記第3のレジスタから第3オペランドを取得することと、前記取得した第2オペランド及び前記取得した第3オペランドに基づいて、オペコードが定義した算術演算又は論理演算を行って、結果を生成することと、前記生成した結果を、前記メモリ内の位置に格納することと、前記取得した第2オペランドの前記値を前記第1のレジスタに保存することと、を実行させる、コンピュータプログラム。前記結果が0であること、又は前記結果が0でないことを示す条件コードを保存することをさらに実行させる、請求項8に記載のコンピュータプログラム。前記オペコードが定義した算術演算は、算術加算又は論理加算であり、前記オペコードが定義した論理演算は、論理積、排他的論理和、又は論理和のうちのいずれか1つであり、前記論理演算の前記結果が負であることに応答して、前記結果が負であることを示す前記条件コードを保存することと、前記論理演算の前記結果が正であることに応答して、前記結果が正であることを示す前記条件コードを保存することと、前記論理演算の前記結果がオーバーフローであることに応答して、前記結果がオーバーフローであることを示す前記条件コードを保存することと、をさらに実行させる、請求項9に記載のコンピュータプログラム。前記オペコードによってオペランドのサイズが指定され、1つ又は複数の第1のオペコードは32ビットオペランドを指定し、1つ又は複数の第2のオペコードは64ビットオペランドを指定する、請求項10に記載のコンピュータプログラム。前記算術/論理命令は、2つの別個のオペコードフィールド、第1の変位フィールド及び第2の変位フィールドから成る前記オペコードをさらに含み、前記メモリ内の位置は、前記第2のレジスタの内容を符号付き変位値に加算することによって決定され、前記符号付き変位値は、前記第2の変位フィールドに連結された前記第1の変位フィールドの符号拡張された値を含む、請求項11に記載のコンピュータプログラム。前記オペコードが第1のオペコードであり、前記第2オペランドが32ビット境界上にないことに応答して、指定例外を発生させることと、前記オペコードが第2のオペコードであり、前記第2オペランドが64ビット境界上にないことに応答して、指定例外を発生させることと、をさらに実行させる、請求項12に記載のコンピュータプログラム。前記プロセッサは、マルチプロセッサシステム内のプロセッサであり、前記第2オペランドを前記取得することが、前記第2オペランドを取得することと、結果をメモリ内の前記第2の位置に格納することの間に、前記マルチプロセッサシステムの他のプロセッサが前記メモリ内の位置にアクセスできないようにすることと、前記生成された結果の格納時に、前記マルチプロセッサシステムの他のプロセッサが前記メモリ内の位置にアクセスするのを可能にすることと、をさらに含む、請求項13に記載のコンピュータプログラム。インターロックされたメモリオペランドを有する算術/論理命令を実行するためのコンピュータシステムであって、前記算術/論理命令は、オペコードフィールドと、第1のレジスタ内の第1オペランドを指定する第1のレジスタフィールドと、メモリ内の第2オペランドの位置を指定する第2のレジスタを指定する第2のレジスタフィールドと、第3のレジスタを指定する第3のレジスタフィールドとを含み、メモリと、前記メモリと通信状態にあるプロセッサであって、メモリから命令をフェッチするための命令フェッチ要素と、フェッチされた命令を実行するための1つ又は複数の実行要素とを含むプロセッサと、を含む、前記コンピュータシステムは、プロセッサにより、前記第2のレジスタによって指定されるメモリ内の位置からある値から成る第2オペランドを取得することと、前記第3のレジスタから第3オペランドを取得することと、前記取得した第2オペランド及び前記取得した第3オペランドに基づいて、オペコードが定義して算術演算又は論理演算を行って、結果を生成することと、前記生成した結果を、前記メモリ内の位置に格納することと、前記生成した第2オペランドの前記値を前記第1のレジスタに保存することと、を含む前記算術/論理命令を実行するための方法を実行するように構成される、コンピュータシステム。前記算術/論理命令を実行するための方法は、前記結果が0であること、又は前記結果が0でないことを示す条件コードを保存することをさらに含む、請求項15に記載のコンピュータシステム。前記オペコードが定義した算術演算は、算術加算又は論理加算であり、前記オペコードが定義した論理演算は、論理積、排他的論理和、又は論理和のうちのいずれか1つであり、前記論理演算の前記結果が負であることに応答して、前記結果が負であることを示す前記条件コードを保存することと、前記論理演算の前記結果が正であることに応答して、前記結果が正であることを示す前記条件コードを保存することと、前記論理演算の前記結果がオーバーフローであることに応答して、前記結果がオーバーフローであることを示す前記条件コードを保存することと、を前記算術/論理命令を実行するための方法はさらに含む、請求項16に記載のコンピュータシステム。前記オペコードによってオペランドのサイズが指定され、1つ又は複数の第1のオペコードは32ビットオペランドを指定し、1つ又は複数の第2のオペコードは64ビットオペランドを指定する、請求項17に記載のコンピュータシステム。前記算術/論理命令は、2つの別個のオペコードフィールド、第1の変位フィールド、及び第2の変位フィールドから成る前記オペコードをさらに含み、前記メモリ内の位置は、前記第2のレジスタの内容を符号付き変位値に加算することによって決定され、前記符号付き変位値は、前記第2の変位フィールドに連結された前記第1の変位フィールドの符号拡張された値を含む、請求項18に記載のコンピュータシステム。前記オペコードが第1のオペコードであり、前記第2オペランドが32ビット境界上にないことに応答して、指定例外を発生させることと、前記オペコードが第2のオペコードであり、前記第2オペランドが64ビット境界上にないことに応答して、指定例外を発生させることと、を前記算術/論理命令を実行するための方法はさらに含む、請求項19に記載のコンピュータシステム。前記プロセッサは、マルチプロセッサシステム内のプロセッサであり、前記第2オペランドを取得することは、前記第2オペランドを取得することと、結果をメモリ内の前記第2の位置に格納することとの間に、前記マルチプロセッサシステムの他のプロセッサがメモリ内の前記位置にアクセスするのを防止することと、前記生成された結果の格納時に、前記マルチプロセッサシステムの他のプロセッサがメモリ内の前記位置にアクセスするのを可能にすることと、をさらに含む、請求項20に記載のコンピュータシステム。必要とされるのは、汎用レジスタのようなアーキテクチャリソースへの依存を軽減し、新しい命令を用いるソフトウェアバージョンの機能及び性能を改善する、既存のアーキテクチャと整合性が取れた新しい命令機能である。一実施形態において、インターロックされたメモリオペランドを含む算術/論理命令が実行され、この算術/論理命令は、オペコードopcodeフィールドと、第1のレジスタ内の第1オペランドを指定する第1のレジスタフィールドと、メモリ内の第2オペランドの位置を指定する第2のレジスタを指定する第2のレジスタフィールドと、第3のレジスタを指定する第3のレジスタフィールドとを含み、算術/論理命令の実行は、プロセッサにより、第2のレジスタによって指定されるメモリ内の位置からある値から成る第2オペランドを取得することと、第3のレジスタから第3オペランドを取得することと、取得した第2オペランド及び取得した第3オペランドに基づいて、オペコードが定義した算術演算又は論理演算を行って、結果を生成することと、生成した結果を、上記メモリ内の位置に格納することと、取得した第2オペランドの値を第1のレジスタに保存することとを含み、この値は、命令の実行により変更されない。一実施形態においては、結果が0であること、又は結果が0でないことを示す条件コードが保存される。一実施形態においては、オペコードが定義した算術演算は、算術加算又は論理加算であり、オペコードが定義した論理演算は、論理積、排他的論理和、又は論理和のうちのいずれか1つであり、実行は、論理演算の結果が負であることに応答して、結果が負であることを示す条件コードを保存することと、論理演算の結果が正であることに応答して、結果が正であることを示す条件コードを保存することと、論理演算の結果がオーバーフローであることに応答して、結果がオーバーフローであることを示す条件コードを保存することとを含む。一実施形態においては、オペコードによってオペランドのサイズが指定され、1つ又は複数の第1のオペコードは32ビットオペランドを指定し、1つ又は複数の第2のオペコードは64ビットオペランドを指定する。一実施形態においては、算術/論理命令は、2つの別個のオペコードフィールド、第1の変位フィールド、及び第2の変位フィールドから成るオペコードをさらに含み、メモリ内の位置は、第2のレジスタの内容を符号付き変位値に加算することによって決定され、符号付き変位値は、第2の変位フィールドに連結された第1の変位フィールドの符号拡張された値を含む。一実施形態においては、実行は、オペコードが第1のオペコードであり、第2オペランドが32ビット境界上にないことに応答して、指定例外を発生させることと、オペコードが第2のオペコードであり、第2オペランドが64ビット境界上にないことに応答して、指定例外を発生させることとをさらに含む。一実施形態においては、プロセッサは、マルチプロセッサシステム内のプロセッサであり、実行はさらに、第2オペランドを取得することが、第2オペランドを取得することと、結果をメモリ内の第2の位置に格納することとの間に、マルチプロセッサシステムの他のプロセッサがそのメモリ内の位置にアクセスできないようにすることと、生成された結果の格納時に、マルチプロセッサシステムの他のプロセッサがメモリ内の位置にアクセスするのを可能にすることとを含む。実施形態の上記及び付加的な目的、特徴、並びに利点は、以下に書かれた説明において明らかになるであろう。他の実施形態及び態様は、本明細書に詳細に説明され、特許請求される本発明の一部であるとみなされる。利点及び特徴をより良く理解するために、説明及び図面を参照されたい。本発明とみなされる主題は、本明細書の最後にある特許請求の範囲において具体的に示され、明確に請求されている。本発明の前記及び他の目的、特徴、並びに利点は、添付の図面と併用される以下の詳細な説明から明らかである。1つの実施形態は、ソフトウェアライセンス内部コードLIC、ファームウェア、マイクロコード、ミリコード、ピココードなどと呼ばれる場合もあるが、そのいずれも実施形態と整合性があるにより実施することができる。図1を参照すると、ソフトウェアプログラムコードは、典型的には、システム50のCPU中央演算処理装置1としても知られるプロセッサにより、CD-ROMドライブ、テープドライブ、又はハードドライブといった長期ストレージ媒体11からアクセスされる。ソフトウェアプログラムコードは、ディスケット、ハードドライブ、又はC-ROMといった、データ処理システムと共に使用するための種々の周知の媒体のいずれかの上で具体化することができる。コードは、こうした媒体上に分散させても、又はコンピュータメモリ2からユーザに分散させても、或いは、こうした他のシステムのユーザが使用するために、ネットワーク10上の1つのコンピュータシステムのストレージから他のコンピュータシステムに分散させてもよい。或いは、プログラムコードをメモリ2内で具体化し、プロセッサバスを用いてプロセッサ1によってプログラムコードにアクセスすることができる。このようなプログラムコードは、種々のコンピュータコンポーネント及び1つ又は複数のアプリケーションプログラムの機能及び相互作用を制御するオペレーティングシステムを含む。プログラムコードは、通常、高密度ストレージ媒体11から高速メモリ2にページングされ、そこでプロセッサ1による処理のために利用可能になる。ソフトウェアプログラムコードをメモリ内、物理的媒体上で具体化し、及び/又は、ネットワークを介してソフトウェアコードを分散させる技術及び方法は周知であり、ここではこれ以上論じない。プログラムコードは、有形の媒体これらに限られるものではないが、電子メモリモジュールRAM、フラッシュメモリ、コンパクトディスクCD、DVD、磁気テープなどを含む上に作成され、格納されたとき、コンピュータプログラム製品と呼ばれることが多い。コンピュータプログラム製品媒体は、典型的には、処理回路によって実行されるために、好ましくはコンピュータシステム内の処理回路によって読み取り可能である。図3は、代表的なワークステーション又はサーバハードウェアシステムを示す。図3のシステム100は、随意的な周辺機器を含む、パーソナルコンピュータ、ワークステーション、又はサーバなどの代表的なコンピュータシステム101を含む。ワークステーション101は、1つ又は複数のプロセッサ106と、周知の技術に従ってプロセッサ106とシステム101の他のコンポーネントを接続し、これらの間の通信を可能にするために用いられるバスとを含む。バスは、プロセッサ106を、例えばハードドライブ例えば、磁気媒体、CD、DVD、及びフラッシュメモリのいずれかを含む又はテープドライブを含むことができる、メモリ105及び長期ストレージ107に接続する。システム101はまた、バスを介して、マイクロプロセッサ106を、キーボード104、マウス103、プリンタ/スキャナ110、及び/又はタッチセンシティブスクリーン、デジタル化された入力パッド等のいずれかのユーザインターフェース機器とすることができる他のインターフェース機器といった、1つ又は複数のインターフェース機器に接続する、ユーザインターフェースアダプタを含むこともできる。バスはまた、ディスプレイアダプタを介して、LCDスクリーン又はモニタなどのディスプレイ装置102をマイクロプロセッサ106にも接続する。システム101は、ネットワーク109と通信する108ことができるネットワークアダプタを介して、他のコンピュータ又はコンピュータネットワークと通信することができる。例示的なネットワークアダプタは、通信チャネル、トークンリング、イーサネット又はモデムである。代替的に、ワークステーション101は、CDPDセルラーデジタルパケットデータカードのような無線インターフェースを用いて通信することもできる。ワークステーション101は、ローカルエリアネットワークLAN又は広域エリアネットワークWAN内のこうした他のコンピュータと関連付けることができ、或いは、別のコンピュータなどとのクライアント/サーバ構成におけるクライアントとすることができる。これらの構成の全て、並びに、適切な通信ハードウェア及びソフトウェアは、当技術分野において周知である。図4は、実施形態を実施することができるデータ処理ネットワーク200を示す。データ処理ネットワーク200は、各々が複数の個々のワークステーション101、201、202、203、204を含むことができる、無線ネットワーク及び有線ネットワークのような複数の個々のネットワークを含むことができる。さらに、当業者であれば理解するように、1つ又は複数のLANを含ませることができ、そこで、LANは、ホストプロセッサに結合された複数のインテリジェントワークステーションを含むことができる。さらに図4を参照すると、ネットワークはまた、ゲートウェイコンピュータクライアントサーバ206、又はアプリケーションサーバデータリポジトリにアクセスすることができ、かつ、ワークステーション205から直接アクセスすることもできるリモートサーバ208のようなメインフレームコンピュータ又はサーバを含むこともできる。ゲートウェイコンピュータ206は、各ネットワーク207への入口点として働く。ゲートウェイは、1つのネットワークプロトコルを別のものに接続するときに必要とされる。ゲートウェイ206は、通信リンクによって別のネットワーク例えば、インターネット207に結合できることが好ましい。ゲートウェイ206はまた、通信リンクを用いて、1つ又は複数のワークステーション101、201、202、203、204に直接結合することもできる。ゲートウェイコンピュータは、IBMCorp.社から入手可能なIBMeServer商標、zSeries登録商標、z9登録商標サーバを用いて実装することができる。ソフトウェアプログラムコードは、一般的に、CD-ROMドライブ又はハードドライブといった、長期ストレージ媒体107から、システム101のプロセッサ106によってアクセスされる。ソフトウェアプログラムコードは、ディスケット、ハードドライブ、又はCD-ROMといった、データ処理システムと共に使用するための種々の周知の媒体のいずれかの上で具体化することができる。コードは、そのような媒体上で分散させても、又はメモリからユーザ210、211に分散させても、或いは、こうした他のシステムのユーザが使用するために、ネットワー上の1つのコンピュータシステムのストレージから他のコンピュータシステムに分散させてもよい。或いは、プログラミングコード111をメモリ105内で具体化し、プロセッサバスを用いてプロセッサ106によってプログラミングコード111にアクセスすることができる。このようなプログラミングコードは、種々のコンピュータコンポーネント及び1つ又は複数のアプリケーションプログラム112の機能及び相互作用を制御するオペレーティングシステムを含む。プログラムコードは、通常、高密度ストレージ媒体107から高速メモリ105にページングされ、そこでプロセッサ106による処理のために利用可能になる。ソフトウェアプログラミングコードをメモリ内、物理的媒体上で具体化し、及び/又は、ネットワークを介してソフトウェアコードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラムコードは、作成され、有形の媒体これらに限られるものではないが、電子メモリモジュールRAM、フラッシュメモリ、コンパクトディスクCD、DVD、磁気テープなどを含むに格納された場合には、しばしばコンピュータプログラム製品と呼ばれる。コンピュータプログラム製品媒体は、典型的には、処理回路によって実行されるために、好ましくはコンピュータシステム内にある処理回路によって読み取り可能である。プロセッサが最も容易に利用できるキャッシュ通常、プロセッサの他のキャッシュよりも高速で小さいは、最下位L1又はレベル1のキャッシュであり、メインストアメインメモリは、最上位レベルのキャッシュ3つのレベルがある場合にはL3である。最下位レベルのキャッシュは、実行されるマシン命令を保持する命令キャッシュI-キャッシュと、データオペランドを保持するデータキャッシュD-キャッシュとに分割されることが多い。図5を参照すると、プロセッサ106についての例示的なプロセッサの実施形態が示される。典型的には、メモリブロックをバッファに入れてプロセッサ性能を向上させるために、1つ又は複数のレベルのキャッシュ303が用いられる。キャッシュ303は、使用される可能性が高いメモリデータのキャッシュラインを保持する高速バッファである。典型的なキャッシュラインは、64バイト、128バイト、又は256バイトのメモリデータである。データをキャッシュに入れるのではなく、命令をキャッシュに入れるために、別個のキャッシュが用いられることが多い。キャッシュコヒーレンスメモリ及びキャッシュ内のラインのコピーの同期は、多くの場合、当技術分野において周知の種々のスヌープSnoopアルゴリズムによって与えられる。プロセッサシステムの主ストレージ105は、キャッシュと呼ばれることが多い。4つのレベルのキャッシュ303を有するプロセッサシステムにおいて、主ストレージ105は、典型的にはより高速であり、かつ、コンピュータシステムが利用できる不揮発性ストレージDASD、テープ等の一部だけを保持するので、レベル5L5のキャッシュと呼ばれることがある。主ストレージ105は、オペレーティングシステムによって主ストレージ105との間でページングされるデータのページをキャッシュに入れる。プログラムカウンタ命令カウンタ311は、実行される現行の命令のアドレスを常時監視している。z/Architectureプロセッサのプログラムカウンタは64ビットであり、従来のアドレッシング制限をサポートするために、31ビット又は24ビットに切り捨てることができる。プログラムカウンタは、典型的には、コンテキストスイッチの際に持続するように、コンピュータのPSWプログラム状況ワード内で具体化される。従って、例えば、オペレーティングシステムにより、プログラムカウンタ値を有する進行中のプログラムに割り込みをかけることが可能であるプログラム環境からオペレーティングシステム環境へのコンテキストスイッチ。プログラムのPSWは、プログラムがアクティブでない間、プログラムカウンタ値を保持し、オペレーティングシステムが実行されている間、オペレーティングシステムのPSW内のプログラムカウンタが使用される。典型的には、プログラムカウンタは、現行の命令のバイト数に等しい量だけインクリメントされる。RISCReducedInstructionSetComputing、縮小命令セットコンピューティング命令は、典型的には固定長であり、CISCComplexInstructionSetComputing、複合命令セットコンピューティング命令は、典型的には可変長である。IBMz/Architectureの命令は、2バイト、4バイト、又は6バイトの長さを有するCISC命令である。例えば、コンテキストスイッチ操作又は分岐命令の分岐成立Branchtaken操作により、プログラムカウンタ311が変更される。コンテキストスイッチ操作において、現行のプログラムカウンタ値は、実行されるプログラムについての他の状態情報条件コードのようなと共にプログラム状況ワードPSWに保存され、実行される新しいプログラムモジュールの命令を指し示す新しいプログラムカウンタ値がロードされる。分岐成立操作を行い、分岐命令の結果をプログラムカウンタ311にロードすることによって、プログラムが判断を下すこと又はプログラム内でループすることを可能にする。典型的には、プロセッサ106の代わりに命令をフェッチするために、命令フェッチユニット305が用いられる。フェッチユニットは、次の順次命令nextsequentialinstruction、分岐成立命令のターゲット命令、又はコンテキストスイッチの後のプログラムの最初の命令のいずれかをフェッチする。今日の命令フェッチユニットは、プリフェッチされた命令を使用することができる可能性に基づいて、命令を投機的にプリフェッチするプリフェッチ技術を用いることが多い。例えば、フェッチユニットは、次の順次命令を含む16バイトの命令と、付加的なバイトの更なる順次命令とをフェッチすることができる。次いで、フェッチされた命令が、プロセッサ106によって実行される。一実施形態において、フェッチされた命令は、フェッチユニットのディスパッチユニット306に渡される。ディスパッチユニット306は命令をデコードし、デコードされた命令についての情報を適切なユニット307、308、310に転送する。実行ユニット307は、典型的には、命令フェッチユニット305からデコードされた算術命令についての情報を受け取り、命令のオペコードに従ってオペランドに関する算術演算を行う。オペランドは、好ましくは、メモリ105、アーキテクチャ化レジスタ309、又は実行される命令の即値フィールドのいずれかから、実行ユニット307に与えられる。実行の結果は、格納された場合には、メモリ105、レジスタ309、又は他のマシンハードウェア制御レジスタ、PSWレジスタなどのような内に格納される。プロセッサ106は、典型的には、命令の機能を実行するための1つ又は複数の実行ユニット307、308、310を有する。図6を参照すると、実行ユニット307は、インターフェース論理407を介して、アーキテクチャ化された汎用レジスタ309、デコード/ディスパッチユニット306、ロードストアユニット310、及び他のプロセッサユニット401と通信することができる。実行ユニット307は、幾つかのレジスタ回路403、404、405を用いて、算術論理演算ユニットALU402が動作する情報を保持することができる。ALUは、加算add、減算subtract、乗算multiply、及び除算divideなどの算術演算、並びに、論理積and、論理和or、及び排他的論理和xor、ローテートrotate及びシフトshiftのような論理関数を実行する。ALUは、設計に依存する専用の演算をサポートすることが好ましい。他の回路は、例えば条件コード及びリカバリーサポート論理を含む、他のアーキテクチャ化ファシリティ408を提供することができる。典型的には、ALU演算の結果は、出力レジスタ回路406に保持され、この出力レジスタ回路406が、結果を種々の他の処理機能に転送することができる。多数のプロセッサユニットの構成が存在し、本説明は、一実施形態の代表的な理解を与えることのみを意図している。例えばADD命令は、算術及び論理機能を有する実行ユニット307で実行され、一方、例えば浮動小数点命令は、特化された浮動小数点能力を有する浮動小数点実行部で実行される。実行ユニットは、オペランドに対してオペコードが定めた関数を行うことにより、命令が特定したオペランドに対して動作することが好ましい。例えば、ADD命令は、命令のレジスタフィールドによって特定された2つのレジスタ309内に見出されるオペランドに対して、実行ユニット307により実行することができる。実行ユニット307は、2つのオペランドに対して算術加算を実行し、結果を第3オペランドに格納し、ここで、第3オペランドは、第3のレジスタであってもよく又は2つのソースレジスタのいずれかであってもよい。実行ユニットは、シフト、ローテート、論理積、論理和、及び排他的論理和のような種々の論理関数、並びに、加算、減算、乗算、除法のいずれかを含む、種々の代数関数を実行することができる算術論理演算ユニットALU402を使用することが好ましい。スカラー演算のために設計されたALU402もあり、浮動小数点のために設計されたALU402もある。データは、アーキテクチャに応じて、ビッグエンディアンBigEndian最下位のバイトが最も高いバイトアドレスである、又はリトルエンディアンLittleEndian最下位のバイトが最も低いバイトアドレスであるとすることができる。IBMz/Architectureは、ビッグエンディアンである。符号付きフィールドは、アーキテクチャに応じて、符号及び大きさ、1の補数、又は2の補数とすることができる。2の補数における負の値又は正の値は、ALU内で加法しか必要としないため、ALUが減算能力を設計する必要がないという点で、2の補数は有利である。数値は、通常、省略表現で記述され、12ビットフィールドは、4,096バイトブロックのアドレスを定め、通常、例えば4Kバイトキロバイトブロックのように記述される。図7を参照すると、分岐命令を実行するための分岐命令情報が、典型的には、分岐ユニット308に送られ、この分岐ユニット308は、多くの場合、分岐履歴テーブル432のような分岐予測アルゴリズムを用いて、他の条件付き演算が完了する前に分岐の結果を予測する。条件付き演算が完了する前に、現行の分岐命令のターゲットがフェッチされ、投機的に実行される。条件付き演算が完了すると、投機的に実行された分岐命令は、条件付き演算の条件及び投機された結果に基づいて、完了されるか又は破棄される。典型的な分岐命令は、条件コードを試験し、条件コードが分岐命令の分岐要件を満たす場合、ターゲットアドレスに分岐することができ、ターゲットアドレスは、例えば、命令のレジスタフィールド又は即値フィールド内に見出されるものを含む幾つかの数に基づいて計算することができる。分岐ユニット308は、複数の入力レジスタ回路427、428、429と、出力レジスタ回路430とを有するALU426を用いることができる。分岐ユニット308は、例えば、汎用レジスタ309、デコードディスパッチユニット306、又は他の回路425と通信することができる。例えば、オペレーティングシステムによって開始されるコンテキストスイッチ、コンテキストスイッチを発生させるプログラム例外又はエラー、コンテキストスイッチを発生させるI/O割り込み信号、或いは、マルチスレッド環境における複数のプログラムのマルチスレッド活動を含む様々な理由により、命令のグループの実行に割り込みがかけられることがある。コンテキストスイッチ動作は、現在実行中のプログラムについての状態情報を保存し、次いで、起動される別のプログラムについての状態情報をロードすることが好ましい。状態情報は、例えば、ハードウェアレジスタ又はメモリ内に保存することができる。状態情報は、実行される次の命令を指し示すプログラムカウンタ値と、条件コードと、メモリ変換情報と、アーキテクチャ化されたレジスタの内容とを含むことが好ましい。コンテキストスイッチの活動は、ハードウェア回路、アプリケーションプログラム、オペレーティングシステムプログラム、又はファームウェアコードマイクロコード、ピココード、又はライセンス内部コードLIC単独で又はその組み合わせで実施することができる。プロセッサは、命令により定義された方法に従ってオペランドにアクセスする。命令は、命令の一部の値を用いて即値オペランドを与えることができ、汎用レジスタ又は専用レジスタ例えば、浮動小数点レジスタのいずれかを明示的に指し示す1つ又は複数のレジスタフィールドを与えることができる。命令は、オペコードフィールドによって、オペランドとして識別されるインプライドレジスタimpliedregisterを用いることができる。命令は、オペランドのためのメモリ位置を用いることができる。z/Architectureの長変位ファシリティlongdisplacementfacilityにより例示されるように、オペランドのメモリ位置を、レジスタ、即値フィールド、又はレジスタと即値フィールドの組み合わせによって与えることができ、命令は、基底レジスタ、指標レジスタ、及び即値フィールド変位フィールドを定め、これらが、例えば互いに加算されてメモリ内のオペランドのアドレスをもたらす。ここでの位置locationは、典型的には、特に断りのない限り、メインメモリ主ストレージ内の記憶位置を意味する。図8を参照すると、プロセッサは、ロード/ストアユニット310を用いて、ストレージにアクセスする。ロード/ストアユニット310は、メモリ303内のターゲットオペランドのアドレスを取得し、オペランドをレジスタ309又は別のメモリ303の記憶位置にロードすることによってロード操作を行うことができ、或いは、メモリ303内のターゲットオペランドのアドレスを取得し、レジスタ309又は別のメモリ303の記憶位置から取得したデータをメモリ303内のターゲットオペランドの記憶位置に格納することによって、ストア操作を行うことができる。ロード/ストアユニット310は、投機的なものであってもよく、命令シーケンスに対してアウトオブオーダー式の順序でメモリにアクセスすることができるが、プログラムに対して、命令がインオーダー式に実行されたという外観を維持する必要がある。ロード/ストアユニット310は、汎用レジスタ309、デコード/ディスパッチユニット306、キャッシュ/メモリインターフェース303、又は他の要素455と通信することができ、ストレージアドレスを計算し、かつ、パイプライン処理を順に行って操作をインオーダー式に保持するための、種々のレジスタ回路、ALU458、及び制御論理463を含む。一部の動作は、アウトオブオーダー式とすることができるが、ロード/ストアユニットは、アウトオブオーダー式動作が、プログラムに対して、当技術分野において周知のようなインオーダー式に実行されたように見えるようにする機能を提供する。好ましくは、アプリケーションプログラムが見ているアドレスは、仮想アドレスと呼ばれることが多い。仮想アドレスは、論理アドレス及び実効アドレスeffectiveaddressと呼ばれることもある。これらの仮想アドレスは、これらに限られるものではないが、単に仮想アドレスをオフセット値にプリフィックス付加すること、1つ又は複数の変換テーブルを介して仮想アドレスを変換することを含む、種々の動的アドレス変換DAT312技術の1つによって、物理的メモリ位置にリダイレクトされるという点で仮想のものであり、変換テーブルは、少なくともセグメントテーブル及びページテーブルを単独で又は組み合わせて含むことが好ましく、セグメントテーブルは、ページテーブルを指し示すエントリを有することが好ましい。z/Architectureでは、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメントテーブル、及び随意的なページテーブルを含む、変換の階層が提供される。アドレス変換の性能は、仮想アドレスを関連した物理的メモリ位置にマッピングするエントリを含む変換ルックアサイドバッファTLBを用いることにより改善されることが多い。DAT312が変換テーブルを用いて仮想アドレスを変換したときに、エントリが作成される。次いで、後に仮想アドレスを用いることで、低速の順次変換テーブルアクセスではなく、高速のTLBのエントリを用いることが可能になる。TLBの内容は、LRULeastRecentlyUsedを含む種々の置換アルゴリズムによって管理することができる。プロセッサがマルチプロセッサシステムのプロセッサである場合には、各プロセッサは、コヒーレンシのために、I/O、キャッシュ、TLB、及びメモリといった共有リソースをインターロック状態に保持する責任を負う。キャッシュコヒーレンシを保持する際に、一般的にはスヌープ技術が用いられる。スヌープ環境においては、共有を容易にするために、各キャッシュラインを、共有状態、排他的状態、変更状態、無効状態等のいずれか1つの状態にあるものとしてマーク付けすることができる。I/Oユニット304は、プロセッサに、例えば、テープ、ディスク、プリンタ、ディスプレイ、及びネットワークを含む周辺機器に取り付けるための手段を与える。I/Oユニットは、ソフトウェアドライバによってコンピュータプログラムに提示されることが多い。IBMによるz/Seriesのようなメインフレームにおいては、チャネルアダプタ及びオープンシステムアダプタが、オペレーティングシステムと周辺機器との間に通信をもたらすメインフレームのI/Oユニットである。非特許文献1からの以下の記述は、コンピュータシステムのアーキテクチャ上の観点を記載する。:ストレージ:コンピュータシステムは、主ストレージ内の情報、並びに、アドレッシング、保護、参照、及び変更の記録を含む。アドレッシングの幾つかの態様は、アドレスの形式、アドレス空間の概念、種々のタイプのアドレス、及び1つのタイプのアドレスを別のタイプのアドレスに変換する方法を含む。主ストレージの一部は、永続的に割り当てられた記憶位置を含む。主ストレージは、システムに、データの直接アドレス指定可能な高速アクセスストレージを与える。データ及びプログラムを処理できるようになる前に、入力装置からデータ及びプログラムの両方を主ストレージにロードしなければならない。主ストレージは、キャッシュと呼ばれることもある、1つ又は複数のより小さくより高速アクセスのバッファストレージを含むことができる。キャッシュは、典型的には、CPU又はI/Oプロセッサと物理的に関連付けられる。物理的構成及び別個のストレージ媒体を使用することの影響は、性能に対するものを除き、通常、プログラムにより観察することはできない。命令及びデータオペランドについて、別個のキャッシュを保持することができる。キャッシュ内の情報は、キャッシュブロック又はキャッシュライン又は短縮してラインと呼ばれる、整数境界integralboundary上にある連続したバイト内に保持される。モデルは、キャッシュラインのサイズをバイトで返す、EXTRACTCACHEATTRIBUTE命令を提供することができる。モデルはまた、データ又は命令キャッシュへのストレージのプリフェッチ、或いは、キャッシュからのデータの解放に影響を与える、PREFETCHDATA及びPREFETCHDATARELATIVELONG命令を提供することができる。ストレージは、長い水平方向のビットの文字列と考えられる。大部分の操作において、ストレージへのアクセスは、左から右への順序で進む。ビットの文字列は、8ビット単位で分割される。8ビットの単位は1バイトと呼ばれ、全ての情報の形式の基本的な構成要素buildingblockである。ストレージ内の各々のバイト位置は、負でない一意の整数により識別され、この整数がそのバイト位置のアドレスであり、即ち、簡単にバイトアドレスである。隣接するバイト位置は、連続するアドレスを有し、左の0で始まり、左から右への順序で進む。アドレスは、符号なしの2進整数であり、24ビット、31ビット、又は64ビットである情報は、ストレージとCPU又はチャネルサブシステムとの間で、一度に1バイトずつ、又は1バイトグループずつ伝送される。特に断りのない限り、ストレージ内のバイトグループは、グループの左端のバイトによりアドレス指定される。グループ内のバイト数は、実行される操作により暗黙に決定されるか、又は明示的に指定される。CPU操作に使用される場合、バイトグループはフィールドと呼ばれる。バイトグループの中の各々において、ビットは、左から右の順序で番号が付けられる。左端のビットは上位highorderビットと呼ばれることがあり、右端ビットは下位loworderビットと呼ばれることがある。しかしながら、ビット数は、ストレージアドレスではない。バイトだけを、アドレス指定することができる。ストレージ内の1つのバイトを形成する個々のビットに対して操作を行うためには、そのバイト全体にアクセスする必要がある。1バイトの中のビットには、左から右に0から7までの番号が付けられる。1つのアドレスの中のビットには、24ビットアドレスの場合は8-31又は40-63の番号を付けることができ、或いは、31ビットアドレスの場合は1-31又は33-63の番号を付けることができ、64ビットアドレスの場合は0-63の番号が付けられる。複数バイトから成る他のいずれかの固定長形式の中では、その形式を構成するビットには、0から始まる連続番号が付けられる。エラー検出のため及び好ましくは訂正のために、各バイト又はバイトグループと共に、1つ又は複数の検査ビットが伝送されることがある。このような検査ビットは、マシンにより自動的に生成されるものであり、プログラムが直接制御することはできない。記憶容量は、バイト数で表わされる。ストレージオペランドフィールドの長さが命令のオペレーションコードで暗黙的に指定される場合、そのフィールドは固定長を有すると言われ、固定長は、1バイト、2バイト、4バイト、8バイト、又は16バイトとすることができる。一部の命令では、より長いフィールドが暗黙的に指定されることもある。ストレージオペランドフィールドの長さが暗黙的に指定されず明示的に記述される場合は、そのフィールドは可変長を有すると言われる。可変長オペランドは、1バイトのインクリメントにより変化し得る。情報がストレージ内に置かれるとき、ストレージへの物理パスの幅が格納されるフィールドの長さを上回り得るが、指定されたフィールド内に含まれるバイト位置の内容のみが置き換えられる。特定の情報単位は、ストレージ内の整数境界上になければならない。そのストレージアドレスがバイトでの単位での長さの倍数であるとき、境界は、情報単位に関して整数のものであると言われる。整数境界上にある2バイト、4バイト、8バイト、及び16バイトのフィールドには、特別な名称が与えられる。ハーフワードhalfwordは、2バイト境界上にある2個の連続したバイトのグループであり、これは、命令の基本的な構成要素である。ワードwordは、4バイト境界上にある4個の連続したバイトのグループである。ダブルワードdoublewordは、8バイト境界上にある8個の連続したバイトのグループである。クワドワードquadwordは、16バイト境界上にある16個の連続したバイトのグループである。ストレージアドレスが、ハーフワード、ワード、ダブルワード、及びクワドワードを示す場合、そのアドレスの2進表現は、それぞれ、右端の1個、2個、3個、又は4個のビットが0になる。命令は、2バイトの整数境界上になければならない。大部分の命令のストレージオペランドは、境界合わせboundaryalignment要件をもたない。命令及びデータオペランドに対して別個のキャッシュを実装するモデルにおいては、ストアが、後にフェッチされる命令を変更するかどうかに関係なく、後に命令をフェッチするキャッシュライン内にプログラムが格納する場合には、著しい遅延が生じることがある。命令:典型的には、CPUの動作は、ストレージ内の命令により制御され、これらの命令は、ストレージアドレスの昇順に従って左から右へ一度に1つずつ順に実行される。この順次操作は、分岐、LOADPSW、割り込み、SIGNALPROCESSORの指令、又は手作業の介入によって変更され得る。命令は、2つの主要部分:即ち、実行される動作を指定するオペレーションコードオペコード随意的に、関与するオペランドの指定、を含むことが好ましい。z/Architectureの命令形式が、図9-図14に示される。命令は、単にオペコード501を提供することができ、或いは、オペコードと、即値オペランド又はレジスタ若しくはメモリ内のオペランドを探し出すためのレジスタ指定子を含む種々のフィールドとを提供することもできる。オペコードは、1つ又は複数の特定の汎用レジスタGPRのような暗黙的リソースオペランド等が使用されることをハードウェアに指示することができる。オペランドは、3つのクラス、即ち、レジスタ内に入れられるオペランド、即値オペランド、及びストレージ内のオペランドにグループ化することができる。オペランドは、明示的に指定される場合又は暗黙的に指定される場合がある。レジスタオペランドは、汎用レジスタ、浮動小数点レジスタ、アクセスレジスタ、又は制御レジスタ内に含めることができ、レジスタのタイプは、オペコードにより識別される。オペランドを含むレジスタは、命令の中のRフィールドと呼ばれる4ビットフィールド内のレジスタを識別することによって指定される。命令によっては、オペランドは、暗黙的に指定されたレジスタに含められ、このレジスタは、オペコードにより暗黙的に指定される。即値オペランドは、命令の中に含まれるものであり、即値オペランドを含む8ビット、16ビット、又は32ビットのフィールドを、Iフィールドと呼ぶ。ストレージ内のオペランドの長さは、暗黙的に指定されるか、ビットマスクによって指定されるか、命令内のLフィールドと呼ばれる4ビット又は8ビットの長さ指定により指定されるか、又は汎用レジスタの内容により指定され得る。ストレージ内のオペランドのアドレスは、汎用レジスタの内容をアドレスの一部として使用する形式により指定される。これにより、以下の:1.簡略表記法を使用して完全なアドレスを指定する、2.汎用レジスタをオペランドとして用いる命令を使用して、アドレス操作を行う、3.命令ストリームを変更することなく、プログラム手段によりアドレスを変更する、4.他のプログラムから受け取ったアドレスを直接使用して、データ域の記憶位置に関係なく操作を行う、ことが可能になる。ストレージを参照するために使用されるアドレスは、命令のRフィールドが指すレジスタに含まれているか、又は、それぞれ、命令の中でBフィールド、Xフィールド、及びDフィールドにより指定されている基底アドレス、指標、及び変位から計算される。CPUがアクセスレジスタモードにあるとき、Bフィールド又はRフィールドは、アドレスを指定するために使用されるのに加えて、アクセスレジスタを指定することもできる。命令の実行を記述するために、オペランドは、第1オペランド及び第2オペランド、そして場合によっては第3オペランド及び第4オペランドとして指定されることが好ましい。一般に、1つの命令の実行には2つのオペランドが関与し、実行結果は第1オペランドと置き換わる。命令の長さは、1個、2個、又は3個のハーフワードとし、ストレージ内でハーフワード境界上に配置する必要がある。命令形式を示す図9-図14を参照すると、各々の命令は、25個の基本形式:即ち、E501、I502、RI503、504、RIE505、551、552、553、554、RIL506、507、RIS555、RR510、RRE511、RRF512、513、514、RRS、RS516、517、RSI520、RSL521、RSY522、523、RX524、RXE525、RXF526、RXY527、S530、SI531、SIL556、SIY532、SS533、534、535、536、537、SSE541、及びSSF542のいずれかの形をとり、RRFには3つ、RI、RIL、RS及びRSYには2つ、RIE及びSSには5つの変形がある。形式の名前は、大まかに言うと、その操作に関与するオペランドのクラス、及びフィールドについての何らかの詳細を示す。即ち:RISは、レジスタ対即値操作及びストレージ操作を示す。RRSは、レジスタ間操作及びストレージ操作を示す。SILは、16ビットの即値フィールドを有するストレージ対即値操作を示す。I、RR、RS、RSI、RX、SI、及びSS形式では、命令の最初の1バイトが、オペコードを含む。E、RRE、RRF、S、SIL、及びSSE形式では、S形式の一部の形式では最初の1バイト内にオペコードがあることを除いては、命令の最初の2バイトがオペコードを含む。RI及びRIL形式では、命令の最初の1バイト及びビット位置12-15内にオペコードがある。RIE、RIS、RRS、RSL、RSY、RXE、RXF、RXY、及びSIY形式では、命令の最初の1バイト及び第6バイト内にオペコードがある。オペコードの最初又は唯一のバイトの最初の2ビットは、以下のように、命令の長さと形式を指定する。RR、RRE、RRF、RRR、RX、RXE、RXF、RXY、RS、RSY、RSI、RI、RIE、及びRIL形式では、R1フィールドが示すレジスタの内容が、第1オペランドと呼ばれる。第1オペランドを含むレジスタは、第1オペランド位置と呼ばれ、レジスタR1と呼ばれることもある。RR、RRE、RRF、及びRRR形式では、R2フィールドは、第2オペランドを含むレジスタを示し、かつ、R1と同じレジスタを示すこともある。RRF、RXF、RS、RSY、RSI、及びRIE形式では、R3フィールドが使用されるかどうかは、命令によって決まる。RS及びRSY形式では、R3フィールドは、代わりに、マスクを指定するM3フィールドである場合もある。Rフィールドは、一般命令では汎用レジスタ又はアクセスレジスタを指し、制御命令では汎用レジスタを指し、浮動小数点命令では浮動小数点レジスタ又は汎用レジスタを指す。汎用レジスタ及び制御レジスタについては、レジスタオペランドは、命令に応じて、64ビットレジスタのビット位置32-63にあるか、又はレジスタ全体を占める。I形式では、8ビットの即値データフィールド、即ち命令のIフィールドの内容が、直接オペランドとして使用される。SI形式では、8ビットの即値データフィールド、即ち命令のI2フィールドの内容が、直接第2オペランドとして使用される。B1フィールド及びD1フィールドが、第1オペランドを指定し、その長さは1バイトである。SIY形式では、D1フィールドの代わりにDH1フィールド及びDL1フィールドが用いられることを除いて、操作は同じである。命令ADDHALFWORDIMMEDIATE、COMPAREHALFWORDIMMEDIATE、LOADHALFWORDIMMEDIATE、及びMULTIPLYHALFWORDIMMEDIATEのRI形式では、命令の16ビットのI2フィールドの内容が、直接符号付き2進整数として使用され、R1フィールドは第1オペランドを指定し、その長さは、命令に応じて、32ビット又は64ビットである。命令TESTUNDERMASKTMHH、TMHL、TMLH、TMLLについては、I2フィールドの内容はマスクとして使用され、R1フィールドは、第1オペランドを指定し、その長さは64ビットである。命令INSERTIMMEDIATE、ANDIMMEDIATE、ORIMMEDIATE、及びLOADLOGICALIMMEDIATEについては、I2フィールドの内容が、符号なし2進整数又は論理値として用いられ、R1フィールドは、第1オペランドを指定し、その長さは64ビットである。RI及びRSI形式の相対分岐命令の場合は、16ビットのI2フィールドの内容が、ハーフワードの数を示す符号付き2進整数として使用される。この数値を分岐命令のアドレスに加えたものが、分岐アドレスを示す。RIL形式の相対分岐命令の場合、I2フィールドは32ビットであり、同じように使用される。RI及びRSI形式の相対分岐命令の場合は、16ビットのI2フィールドの内容が、ハーフワードの数を示す符号付き2進整数として使用される。この数値を分岐命令のアドレスに加えたものが、分岐アドレスを示す。RIL形式の相対分岐命令の場合、I2フィールドは32ビットであり、同じように使用される。RIE形式の命令COMPAREIMMEDIATEANDBRANCHRELATIVE及びCOMPARELOGICALIMMEDIATEANDBRANCHRELATIVEの場合は、8ビットのI2フィールドの内容が、直接第2オペランドとして使用される。RIE形式の命令COMPAREIMMEDIATEANDBRANCH、COMPAREIMMEDIATEANDTRAP、COMPARELOGICALIMMEDIATEANDBRANCH、及びCOMPARELOGICALIMMEDIATEANDTRAPの場合は、16ビットのI2フィールドの内容が、直接第2オペランドとして用いられる。RIE形式の命令COMPAREANDBRANCHRELATIVE、COMPAREIMMEDIATEANDBRANCHRELATIVE、COMPARELOGICALANDBRANCHRELATIVE、及びCOMPARELOGICALIMMEDIATEANDBRANCHRELATIVEの場合は、16ビットのI4フィールドの内容が、ハーフワードの数を示す符号付き2進整数として使用され、これが命令のアドレスに加算されて分岐アドレスを形成する。RIL形式の命令ADDIMMEDIATE、ADDLOGICALIMMEDIATE、ADDLOGICALWITHSIGNEDIMMEDIATE、COMPAREIMMEDIATE、COMPARELOGICALIMMEDIATE、LOADIMMEDIATE、及びMULTIPLYSINGLEIMMEDIATEの場合は、32ビットのI2フィールドの内容が、直接第2オペランドとして用いられる。RIS形式の命令の場合は、8ビットのI2フィールドの内容が、直接第2オペランドとして使用される。SIL形式では、16ビットのI2フィールドの内容が、直接第2オペランドとして使用される。以下に説明されるように、B1及びD1フィールドが、第1オペランドを指定する。RSL、SI、SIL、SSE、及び殆どのSS形式では、B1フィールドが示す汎用レジスタの内容がD1フィールドの内容に加えられ、第1オペランドアドレスを形成する。RS、RSY、S、SIY、SS、及びSSE形式では、B2フィールドが示す汎用レジスタの内容がD2フィールド又はDH2及びDL2フィールドの内容に加えられ、第2オペランドアドレスを形成する。RX、RXE、RXF、及びRXY形式では、X2及びB2フィールドが示す汎用レジスタの内容がD2フィールド又はDH2及びDL2フィールドの内容に加えられ、第2オペランドアドレスを形成する。RIS及びRRS形式並びに1つのSS形式では、B4フィールドが示す汎用レジスタの内容がD4フィールドの内容に加えられ、第4オペランドアドレスを形成する。8ビットの長さのフィールドを1つだけ有するSS形式では、命令ANDNC、EXCLUSIVEORXC、MOVEMVC、MOVENUMERICS、MOVEZONES、及びOROCにおいて、Lは、第1オペランドアドレスが示すバイトの右側に追加するオペランドバイトの数を指定する。従って、第1オペランドのバイト長は、Lの長さコード0-255に対応して、1-256になる。格納結果は、第1オペランドと置き換わり、アドレスと長さで指定されるフィールドの外部に格納されることは決してない。この形式では、第2オペランドは、第1オペランドと同じ長さを有する。EDIT、EDITANDMARK、PACKASCII、PACKUNICODE、TRANSLATE、TRANSLATEANDTEST、UNPACKASCII、及びUNPACKUNICODEに適用される、前述の定義の変形がある。2つの長さフィールドを有するSS形式及びRSL形式では、L1は、第1オペランドアドレスが示すバイトの右側に追加するオペランドバイトの数を指定する。従って、第1オペランドのバイト長は、L1の長さコード0-15に対応して、1-16になる。同様に、L2は、第2オペランドアドレスが示す記憶位置の右側に追加するオペランドバイトの数を指定する。結果は第1オペランドと置き換わり、アドレスと長さで指定されるフィールドの外部に格納されることは決してない。第1オペランドが第2オペランドより長い場合は、第2オペランドは、第1オペランドの長さに等しくなるまで左方向に拡張され、その拡張部分には0が入る。この拡張によって、ストレージ内の第2オペランドが変更されることはない。MOVETOPRIMARY、MOVETOSECONDARY、及びMOVEWITHKEY命令により使用される、2つのRフィールドを有するSS形式では、R1フィールドが示す汎用レジスタの内容は、32ビットの符号なしの値であり、これは真の長さと呼ばれる。オペランドの長さは、どちらも、有効長と呼ばれる長さである。有効長は、真の長さ又は256の、どちらか小さい方の長さである。命令では、条件コードを設定し、真の長さで指定された総バイト数を移動するためのループをプログラミングしやすくする。LOADMULTIPLEDISJOINT命令についての様々なレジスタ及び2つのストレージオペランドを指定するため、及び、PERFORMLOCKEDOPERATION命令についての1つ又は2つのレジスタ及び1つ又は2つのストレージオペランドを指定するためにも、2つのRフィールドを有するSS形式が使用される。B1、B2、X2、又はB4フィールドのいずれかが0である場合は、それに対応するアドレスコンポーネントが存在しないことを示す。存在しないコンポーネントについては、汎用レジスタ0の内容に関係なく、中間合計値を形成する際に0が使用される。変位が0であるということに、特別な意味はない。現行PSWのビット31及び32は、アドレッシングモードビットである。ビット31は拡張アドレッシングモードビットであり、ビット32は基本アドレッシングモードビットである。これらのビットは、アドレス生成により生成される実効アドレスのサイズを制御する。現行PSWのビット31及び32が両方とも0のときは、CPUは24ビットアドレッシングモードになっており、24ビットの命令実効アドレス及びオペランド実効アドレスが生成される。現行PSWのビット31が0であり、ビット32が1のときは、CPUは31ビットアドレッシングモードになっており、31ビットの命令実効アドレス及びオペランド実効アドレスが生成される。現行PSWのビット31及び32が両方とも1のときは、CPUは64ビットアドレッシングモードになっており、64ビットの命令実効アドレス及びオペランド実効アドレスが生成される。CPUが命令を実行するときには、命令及びオペランドのアドレスの生成が必要とされる。現行PSWが示す記憶位置から命令がフェッチされると、命令アドレスがその命令に含まれるバイト数だけ増加され、命令が実行される。次いで、次の順番の命令をフェッチするために新しい命令のアドレス値を使用して、同じステップが繰り返される。24ビットアドレッシングモードでは、命令アドレスは循環し、命令アドレス224-2の位置のハーフワードの次には、命令アドレス0の位置のハーフワードが続く。従って、24ビットアドレッシングモードでは、命令アドレスの更新の結果としてPSWビット位置104からの繰り上がりが生じる場合、その繰り上がりは失われる。31ビット又は64ビットのアドレッシングモードでは、命令アドレスは同様に循環し、それぞれ、命令アドレス231-2の位置又は264-2の位置にあるハーフワードの次には、命令アドレス0の位置にあるハーフワードが続く。それぞれPSWビット位置97又は64からの繰り上がりは失われる。ストレージを参照するオペランドアドレスは、中間値から導き出され、中間値は、命令のRフィールドで指定されているレジスタに含まれるか、又は、基底アドレス、指標、及び変位の3つの2進数の和として求められる。基底アドレスBは、命令内のBフィールドと呼ばれる4ビットフィールドにプログラムで指定された汎用レジスタに含まれている、64ビットの数値である。基底アドレスは、各々のプログラム及びデータ域を個別にアドレス指定するための手段として使用することができる。基底アドレスは、配列型の計算では配列の位置を示し、レコード型の処理ではレコードを識別することができる。基底アドレスを使用して、ストレージ全体のアドレス指定が行われる。基底アドレスはまた、指標付けにも使用できる。指標Xは、命令内のXフィールドと呼ばれる4ビットフィールドにプログラムで指定された汎用レジスタに含まれている、64ビットの数値である。指標は、RX、RXE、及びRXY形式の命令により指定されたアドレスの中にのみ含まれている。RX-、RXE-、RXF-、及びRXY-形式の命令では、二重の指標付けが可能である、即ち、指標を使用して、配列の中の要素のアドレスを与えることができる。変位Dは、命令内のDフィールドと呼ばれるフィールドに含まれている、12ビット又は20ビットの数値である。12ビット変位は符号なしであり、基底アドレスが指定する記憶位置を超えた最大4,095バイトまでの相対アドレッシングを提供する。20ビットの変位は符号付きであり、基底アドレスの位置を超えた最大524,287バイトまで、又はその前の最大524,288バイトまでの相対アドレス指定を提供する。配列型の計算では、変位を使用して、1つの要素と関連した多数の項目のうちの1つを指定することができる。レコードの処理では、変位を使用して、レコード内の項目を識別することができる。12ビットの変位は、特定の形式の命令のビット位置20-31にある。幾つかの形式の命令では、第2の12ビットの変位も命令のビット位置36-47にある。20ビットの変位は、RSY、RXY、又はSIY形式の命令の中だけにある。これらの命令において、Dフィールドは、ビット位置20-31のDL低フィールドと、ビット位置32-39のDH高フィールドとから成る。長変位ファシリティがインストールされた場合、変位の数値は、DLフィールドの内容の左にDHフィールドの内容を追加することにより形成される。長変位ファシリティがインストールされていない場合、変位の数値は、DLフィールドの内容の左に8つの0ビットを追加することにより形成され、DHフィールドの内容は無視される。中間合計値を形成する際、基底アドレス及び指標は、64ビットの2進整数として扱われる。12ビットの変位は、12ビットの符号なし2進整数として扱われ、左側に52個の0ビットが追加される。20ビットの変位は、20ビットの符号付き2進整数として扱われ、左側に符号ビットと等しいビットが44個追加される。この3つは、64ビット2進整数として加算され、オーバーフローは無視される。合計値は常に64ビットの長さであり、生成アドレスを形成するための中間値として用いられる。中間値のビットには、0-63の番号が付けられる。B1、B2、X2、又はB4フィールドのいずれかが0である場合、それに対応するアドレスコンポーネントが存在しないことを示す。存在しないコンポーネントについては、汎用レジスタ0の内容に関係なく、中間合計値を形成する際に0が使用される。変位が0であるということに、特別な意味はない。Rフィールドが示す汎用レジスタの内容を使用してストレージ内のオペランドをアドレス指定することが命令の説明により指定されている場合は、そのレジスタの内容が64ビットの中間値として使用される。1つの命令で、アドレス計算及びオペランド位置の両方に同じ汎用レジスタを指定することができる。アドレス計算は、もしあれば、操作によりレジスタが変更される前に完了する。個々の命令定義の中で特に断りがない限り、生成されるオペランドアドレスは、ストレージ内でのオペランドの左端のバイトを指す。生成されるオペランドアドレスは常に64ビットの長さであり、ビットには0-63の番号が付けられている。生成アドレスが中間値から取得される方法は、現行のアドレッシングモードによって決まる。24ビットアドレッシングモードでは、中間値のビット0-39は無視され、生成アドレスのビット0-39は、0に強制的に設定され、中間値のビット40-63が、生成アドレスのビット40-63になる。31ビットアドレッシングモードでは、中間値のビット0-32は無視され、生成アドレスのビット0-32は0に強制的に設定され、中間値のビット33-63が、生成アドレスのビット33-63になる。64ビットアドレッシングモードでは、中間値のビット0-63が、生成アドレスのビット0-63になる。指標レジスタ及び基底アドレスレジスタの中では、負の値を使用することができる。31ビットアドレッシングモードでは、これらの値のビット0-32は無視され、24ビットアドレッシングモードでは、これらの値のビット0-39は無視される。分岐命令の場合、分岐が実行されたときに次に実行される命令のアドレスを、分岐アドレスと呼ぶ。命令形式は、分岐命令に応じて、RR、RRE、RX、RXY、RS、RSY、RSI、RI、RIE、又はRILとすることができる。分岐アドレスは、RS、RSY、RX、及びRXY形式では、基底アドレスと変位により指定され、RX及びRXY形式では、指標により指定される。これらの形式において、中間値の生成は、オペランドアドレスの中間値の生成と同じ規則に従って行われる。RR及びRRE形式では、R2フィールドが示す汎用レジスタの内容が、分岐アドレス形成の元となる中間値として使用される。汎用レジスタ0を、分岐アドレスを含むものとして指定することはできない。R2フィールドの値が0である場合は、その命令は分岐なしで実行される。相対-分岐命令は、RSI、RI、RIE、及びRIL形式のものである。相対-分岐命令のRSI、RI、及びRIS形式では、I2フィールドの内容は、ハーフワードの数を示す16ビットの符号付き2進整数として扱われる。RIL形式では、I2フィールドの内容は、ハーフワードの数を示す32ビットの符号付き2進整数として扱われる。分岐アドレスは、相対-分岐命令のアドレスに、I2フィールドに指定されているハーフワードの数を加えたものである。RSI、RI、RIE、又はRIL形式の相対分岐命令の場合の64ビットの中間値は、2つの加数の和であり、ビット位置0からのオーバーフローは無視される。RSI、RI、又はRIE形式では、第1の加数は、COMPAREANDBRANCHRELATIVE、COMPAREIMMEDIATEAMDBRANCHRELATIVE、COMPARELOGICALANDBRANCHRELATIVE、及びCOMPARELOGICALIMMEDIATEANDBRANCHRELATIVEの場合に、I4フィールドの内容にI2フィールドについて上述したようにビットが追加されているという点を除いて、I2フィールドの内容の右側に1個の0ビットを付加し、左側にその内容の符号ビットと等しいビットを47個付加したものである。RIL形式では、第1の加数は、I2フィールドの内容の右側に1個の0ビットを付加し、左側にその内容の符号ビットと等しいビットを31個付加したものである。第2の加数は、全ての形式において、分岐命令の64ビットアドレスである。分岐命令のアドレスは、次の順次命令をアドレス指定するためにアドレスが更新される前のPSWの命令アドレスであるか、又は、EXECUTE命令が使用される場合は、EXECUTE命令のターゲットのアドレスである。EXECUTEを24ビット又は31ビットアドレッシングモードで使用している場合、分岐命令のアドレスは、それぞれ、ターゲットアドレスの左側に40個又は33個の0を付加したものである。分岐アドレスは常に64ビットの長さであり、ビットには0-63の番号が付けられる。分岐アドレスは、現行PSWのビット64-127と置き換わる。分岐アドレスを中間値から取得する方法は、アドレッシングモードによって決まる。アドレッシングモードを変更する分岐命令の場合は、新しいアドレッシングモードが使用される。24ビットアドレッシングモードでは、中間値のビット0-39は無視され、分岐アドレスのビット0-39は0にされ、中間値のビット40-63が、分岐アドレスのビット40-63になる。31ビットアドレッシングモードでは、中間値のビット0-32は無視され、分岐アドレスのビット0-32は0にされ、中間値のビット33-63が、分岐アドレスのビット33-63になる。64ビットアドレッシングモードでは、中間値のビット0-63が分岐アドレスのビット0-63になる。幾つかの分岐命令では、指定された特定の条件を満たしているかどうかによって、分岐するかどうかが決まる。条件が満たされていない場合は、分岐は行われず、通常の順序で命令が続行され、分岐アドレスは使用されない。分岐が行われる場合は、分岐アドレスのビット0-63が現行PSWのビット64-127と置き換わる。分岐アドレスは、分岐操作の一部としてストレージにアクセスするためには使用されない。分岐アドレスが奇数であることが原因で起きる指定例外、及び、分岐位置にある命令のフェッチが原因で起こるアクセス例外は、分岐操作の一部として認識されるのではなく、代わりに、分岐位置にある命令の実行に関連した例外として認識される。BRANCHANDSAVEのような分岐命令で、分岐アドレス計算及びオペランド位置の両方に同じ汎用レジスタを指定することができる。分岐アドレス計算が完了してから、操作の残りの部分が実行される。第4章制御で説明したプログラム状況ワードPSWには、プログラムの適正な実行のために必要な情報が含まれている。PSWは、命令の順序を制御し、現在実行中のプログラムとの関連におけるCPUの状態を保持及び提示するために使用される。アクティブなPSW、即ち制御を行っているPSWを、現行PSWcurrentPSWと呼ぶ。分岐命令は、意思決定、ループ制御、及びサブルーチンリンケージの機能を実行する。分岐命令は、現行PSWに新しい命令アドレスを導入することにより、命令の順序に影響を与える。16ビットのI2フィールドを有する相対-分岐命令では、基底レジスタを使用せずに、分岐命令の位置を基準として、プラス64K-2バイトまで、又はマイナス64Kバイトまでのオフセット位置に分岐することができる。32ビットのI2フィールドを有する相対-分岐命令では、基底レジスタを使用せずに、分岐命令の位置を基準として、プラス4G-2バイトまで、又はマイナス4Gバイトまでのオフセット位置に分岐することができる。意思決定のためのファシリティは、BRANCHONCONDITION、BRANCHRELATIVEONCONDITION、及びBRANCHRELATIVEONCONDITIONLONG命令により与えられる。これらの命令は、殆どの算術操作、論理操作、及びI/O操作の結果を反映する条件コードを検査する。条件コードは、2ビットから成り、0、1、2、及び3の4通りの条件コード設定が可能である。各設定の具体的な意味は、条件コードを設定する操作によって決まる。例えば、条件コードは、0である、0以外、第1オペランドが高い、等しい、オーバーフロー、及びサブチャネル使用中などの条件を反映する。一旦設定されると、条件コードは、別の条件コードを設定させる命令により変更されるまで、変わらないままである。BRANCHONCONDITION、BRANCHRELATIVEONCONDITION、及びBRANCHRELATIVEONCONDITIONLONGを使用し、アドレスの算術操作及びカウント操作の結果をテストすることにより、ループ制御を行うことができる。特に使用頻度の高い算術とテストの組み合わせに使用する命令として、BRANCHONCOUNT、BRANCHONINDEXHIGH、及びBRANCHONINDEXLOWOREQUALが提供され、これらの命令と同等の相対分岐も提供される。これらの分岐は、これらのタスク用に特化されているので、それらの性能が向上する。アドレッシングモードの変更が必要ない場合のサブルーチンリンケージを行う命令には、BRANCHANDLINK及びBRANCHANDSAVE命令がある。BRANCHANDSAVEに関するこの説明は、BRANCHRELATIVEANDSAVE及びBRANCHRELATIVEANDSAVELONGにも適用される。これらの命令はどちらも、新しい命令アドレスを導入するだけでなく、戻りアドレスとそれに関連した情報を保存することもできる。分岐命令をターゲットとするEXECUTE命令の場合は、EXECUTEの後に続く命令のアドレスであるが、戻りアドレスは、ストレージ内の分岐命令の後に続く命令アドレスである。BRANCHANDLINK及びBRANCHANDSAVEのどちらの命令も、R1フィールドを有する。これらの命令は、それぞれ命令に応じたフィールドを使用して分岐アドレスを形成する。以下のように命令の働きを要約する。:24ビットアドレッシングモードでは、どちらの命令も、汎用レジスタR1のビット位置40-63に戻りアドレスを入れ、そのレジスタのビット0-31は変わらないままである。BRANCHANDLINKは、汎用レジスタR1のビット位置32-39に、命令長コードと、現行PSWからの条件コード及びプログラムマスクを入れる。BRANCHANDSAVEは、これらのビット位置に0を入れる。31ビットアドレッシングモードでは、どちらの命令も、汎用レジスタR1のビット位置33-63に戻りアドレスを入れ、ビット位置32に1を入れ、レジスタのビット0-31は変わらないままである。64ビットアドレッシングモードでは、どちらの命令も、汎用レジスタR1のビット位置0-63に戻りアドレスを入れる。どのアドレッシングモードにおいても、どちらの命令も現行アドレッシングモードの制御下で分岐アドレスを生成する。これらの命令は、分岐アドレスのビット0-63をPSWのビット位置64-127に入れる。RR形式では、命令のR2フィールドが0であるときは、どちらの命令も分岐を行わない。24ビット又は31ビットのアドレッシングモードでは、BRANCHANDSAVEは、基本アドレッシングモードビット、即ちPSWのビット32を、汎用レジスタR1のビット位置32に入れることが分かる。BRANCHANDLINKは、31ビットアドレッシングモードの場合に同じことを行う。命令BRANCHANDSAVEANDSETMODE及びBRANCHANDSETMODEは、リンケージ中にアドレッシングモードの変更が必要な場合に使用するためのものである。これらの命令には、R1フィールドとR2フィールドとがある。以下にこれらの命令の働きを要約する。:BRANCHANDSAVEANDSETMODEは、汎用レジスタR1の内容をBRANCHANDSAVEの場合と同じ設定にする。さらに、この命令は、拡張アドレッシングモードビット、即ちPSWのビット31を、レジスタのビット位置63に入れる。BRANCHANDSETMODEは、R1が0以外のときは、以下のことを行う。24ビット又は31ビットモードでは、この命令は、PSWのビット32を汎用レジスタR1のビット位置32に入れ、レジスタのビット0-31及び33-63は変更しない。このレジスタが命令アドレスを含む場合、レジスタのビット63は0でなければならないという点に留意されたい。64ビットモードでは、この命令は、PSWのビット311つを汎用レジスタR1のビット位置63に入れ、レジスタのビット0-62は変更されないままである。R2が0以外のときは、どちらの命令も、以下のように、アドレッシングモードを設定し、分岐を行う。汎用レジスタR2のビット63が、PSWのビット位置31に入れられる。ビット63が0の場合は、レジスタのビット32がPSWのビット位置32に入れられる。ビット63が1の場合は、PSWのビット32は1に設定される。次いで、新しいアドレッシングモードの制御下で、レジスタの内容から分岐アドレスが生成されるが、レジスタのビット63は0と見なされる。命令は、分岐アドレスのビット0-63をPSWのビット位置64-127に入れる。汎用レジスタR2のビット63は変更されないままなので、呼び出し先プログラムに入る時点で1になっていることがある。R2がR1と同じである場合は、指定された汎用レジスタ内の結果は、R1レジスタについて指定されている結果と同じになる。割り込みコンテキストスイッチ:割り込み機構により、CPUが、構成の外部、構成の内部、又はCPU自体の中にある条件の結果として、状態を変化させることが可能になる。優先順位の高い条件に迅速に応答し、条件のタイプを即時認識するのを可能にするために、割り込み条件は、外部割り込み、入力/出力割り込み、マシンチェック割り込み、プログラム割り込み、再始動割り込み、及び監視プログラム呼び出し割り込みの6つのクラスにグループ化される。割り込みは、現行PSWを旧PSWとして格納し、割り込みの原因を示す情報を格納し、新しいPSWをフェッチすることから成る。処理は、新しいPSWの指定に従って再開する。通常、割り込みが発生したときに格納される旧PSWには、割り込みが発生しなかったとすれば次に実行されるはずだった命令のアドレスが含まれており、従って、中断されたプログラムの再開が可能である。プログラム割り込み及び監視プログラム呼び出し割り込みの場合、格納された情報は、最後に実行される命令の長さを識別するコードも含んでおり、従って、プログラムが割り込みの原因に対応することが可能である。通常の応答が割り込みを発生させた命令の再実行である或るプログラム条件の場合は、命令アドレスは、最後に実行された命令を直接識別する。再始動割り込みを除き、CPUが作動状態にあるときにだけ、割り込みが発生し得る。再始動割り込みは、CPUが停止状態又は作動状態にあるときにも発生し得る。いずれのアクセス例外も、その例外が関連している命令の実行の一部として発生する。CPUが、使用可能でない記憶位置からプリフェッチしようと試みた場合、或いは他の何らかのアクセス例外条件を検出したが、分岐命令又は割り込みが命令シーケンスを変更した結果、当該命令が実行されない場合は、アクセス例外は発生しない。どの命令でも、命令フェッチが原因でアクセス例外が発生することがある。さらに、ストレージ内のオペランドへのアクセスが原因で、命令実行に関連したアクセス例外が発生することがある。例外を発生させずに命令の第1ハーフワードをフェッチできないとき、命令のフェッチを原因とするアクセス例外が示される。命令の第1ハーフワードについてアクセス例外がないときは、命令の最初の2ビットに指定されている命令長に従って、付加的なハーフワードについてアクセス例外が示されることがあるが、命令の第2又は第3のハーフワードにアクセスせずに操作を実行できる場合は、その未使用部分についてアクセス例外が示されるかどうかは、予測不能である。命令フェッチに関するアクセス例外の指示は全ての命令について共通であるので、個々の命令の定義の中ではカバーされない。個々の命令の説明の中に特に明記されていない限り、オペランド位置へのアクセスに関連した例外には、以下の規則が適用される。フェッチタイプオペランドの場合は、アクセス例外が必ず示されるのは、操作の完了に必要なオペランド部分についてのみである。フェッチタイプのオペランドの中の、操作の完了に必要な部分については、アクセス例外が示されるかどうかは予測不能である。ストアタイプのオペランドの場合は、オペランドのアクセス不能部分を使用せずに操作を完了できる場合であっても、オペランド全体についてアクセス例外が発生する。ストアタイプのオペランドの値が予測不能として定義される状況では、アクセス例外が示されるかどうかは予測不能である。オペランド位置へのアクセスが原因でアクセス例外が発生するたびに、命令の説明の中のプログラム例外のリストに、アクセスという語が含められる。また、このエントリには、どのオペランドが例外の発生の原因となり得るか、及び、そのオペランド位置へのフェッチアクセス又はストアアクセスのどちらで例外が発生するかも示される。アクセス例外は、オペランドの、個々の命令について定義されている部分についてのみ発生する。操作例外は、CPUが、無効なオペレーションコードを有する命令を実行しようとした場合に発生する。そのオペレーションコードは割り当てられていないものであるか、又は、そのオペレーションコードを有する命令がCPUにインストールされていない可能性がある。操作は抑止される。命令長コードは、1、2、又は3である。操作例外は、16進数0001のプログラム割り込みコードにより示される又は、同時にPERイベントも示される場合は、16進数0081。一部のモデルでは、特殊機能又は特注機能の補助のため、又は、それらの一部として提供されている命令などのように、本明細書では説明されていない命令を提供することがある。従って、本明細書で説明されていないオペレーションコードにより、必ずしも操作例外が発生するとは限らない。さらに、これらの命令により、操作モードがセットアップされたり、又は、後続の命令の実行に影響を及ぼすような変更がマシンに加えられたりすることもある。このような操作が生じるのを回避するために、本明細書で説明されていないオペレーションコードを有する命令は、そのオペレーションコードに関連した特定の機能が求められる場合に限り実行すべきである。指定例外specificationexceptionは、以下のいずれかが真であるときに発生する。1.PSWの未割り当てのビット位置即ち、ビット位置0、2-4、24-30、又は33-63のいずれかに1が入れられる。これは、早期PSW指定例外として扱われる。2.PSWのビット位置12に1が入れられる。これは、早期PSW指定例外として扱われる。3.次のいずれかの理由により、PSWが無効である:a.PSWのビット31が1であり、ビット32が0である。b.PSWのビット31及び32が、24ビットアドレッシングモードを示す0であり、PSWのビット64-103が全て0ではない。c.PSWのビット31が0であり、ビット32が、31ビットアドレッシングモードを示す1であり、PSWのビット64-96が全て0ではない。これは、早期PSW指定例外として扱われる。4.PSWが奇数の命令アドレスを含む。5.こうした整数境界指定を必要とする命令で、オペランドアドレスが整数境界を示していない。6.偶数番号のレジスタ指定を必要とする命令のRフィールドにより、奇数番号の汎用レジスタが指定されている。7.拡張オペランドに、0、1、4、5、8、9、12、又は13以外の浮動小数点レジスタが指定されている。8.10進数演算の乗数又は除数が、15桁の数字と符号を超えている。9.10進数の乗算又は除算において、第1オペランドフィールドの長さが、第2オペランドフィールドの長さより短いか又はこれと等しい。10.CIPHERMESSAGE、CIPHERMESSAGEWITHCHAINING、COMPUTEINTERMEDIATEMESSAGEDIGEST、COMPUTELASTMESSAGEDIGEST、又はCOMPUTEMESSAGEAUTHENTICATIONCODEの実行が試みられ、汎用レジスタ0のビット57-63における機能コードは、未割り当ての又はインストールされていない機能コードを含む。11.CIPHERMESSAGE又はCIPHERMESSAGEWITHCHAININGの実行が試みられ、R1又はR2フィールドは、奇数番号のレジスタ又は汎用レジスタ0を指示する。12.CIPHERMESSAGE、CIPHERMESSAGEWITHCHAINING、COMPUTEINTERMEDIATEMESSAGEDIGEST、又はCOMPUTEMESSAGEAUTHENTICATIONCODEの実行が試みられ、第2オペランドの長さは、指定された関数のデータブロックのサイズの倍数ではない。この指定例外条件は、クエリ関数に適用されない。13.COMPAREANDFORMCODEWORDの実行が試みられ、汎用レジスタ1、2、及び3は最初に偶数値を含んでいない。32.COMPAREANDSWAPANDSTOREの実行が試みられ、かつ、次の条件のいずれかが存在する。:機能コードが未割り当ての値を指定する。格納特性が未割り当ての値を指定する。機能コードは0であり、第1オペランドはワード境界上に指定されない。機能コードは1であり、第1オペランドはダブルワード境界上に指定されない。第2オペランドは、格納値のサイズに対応する整数境界上に指定されない。33.COMPARELOGICALLONGUNICODE又はMOVELONGUNICODEの実行が試みられ、汎用レジスタR11又はR31のいずれの内容も、偶数のバイト数を指定しない。34.COMPARELOGICALSTRING、MOVESTRING、又はSEARCHSTRINGの実行が試みられ、汎用レジスタ0のビット32-55が全て0ではない。35.COMPRESSIONCALLの実行が試みられ、汎用レジスタ0のビット48-51が、値0000及び0110-11112進数のいずれかを有する。36.COMPUTEINTERMEDIATEMESSAGEDIGEST、COMPUTELASTMESSAGEDIGEST、又はCOMPUTEMESSAGEAUTHENTICATIONCODEの実行が試みられ、次のいずれかが真である。:R2フィールドが、奇数番号のレジスタ又は汎用レジスタ0を指定する。汎用レジスタ0のビット56が0ではない。37.CONVERTHFPTOBFP、CONVERTTOFIXEDBFP又はHFP、又はLOADFPINTEGERBFPの実行が試みられ、M3フィールドが有効な修飾子を指定していない。38.DIVIDETOINTEGERの実行が試みられ、M4フィールドが有効な修飾子を指定していない。39.EXECUTEの実行が試みられ、ターゲットアドレスが奇数である。40.EXTRACTSTACKEDSTATEの実行が試みられ、汎用レジスタR2のビット位置56-63のコードは、ASN-and-LX-reuseファシリティがインストールされていない場合に4より大きく、或いは、このファシリティがインストールされている場合には5より大きい。41.FINDLEFTMOSTONEの実行が試みられ、R1フィールドが、奇数番号のレジスタを指定する。42.INVALIDATEDATTABLEENTRYの実行が試みられ、汎用レジスタR2のビット44-51が全て0ではない。43.LOADFPCの実行が試みられ、FPCレジスタ内のサポートされていないビットに対応する第2オペランドの1つ又は複数のビットが1である。44.LOADPAGE-TABLE-ENTRYADDRESSの実行が試みられ、命令のM4フィールドが、0000-01002進数以外のいずれかの値を含む。45.LOADPSWの実行が試みられ、第2オペランドアドレスにおけるダブルワードのビット12が0である。この例外が発生するかどうかは、モデルによって決まる。46.MONITORCALLの実行が試みられ、命令のビット位置8-11が0を含まない。47.MOVEPAGEの実行が試みられ、汎用レジスタ0のビット位置48-51が0を含まないか、又は、レジスタのビット52と53が両方とも1である。48.PACKASCIIの実行が試みられ、L2フィールドが31より大きい。49.PACKUNICODEの実行が試みられ、L2フィールドが63より大きいか、又は偶数である。50.PERFORMFLOATINGPOINTOPERATIONの実行が試みられ、汎用レジスタ0のビット32が0であり、ビット33-63の1つ又は複数のフィールドが無効であるか、又はインストールされていない機能を指定する。51.PERFORMLOCKEDOPERATIONの実行が試みられ、次のいずれかが真である。:汎用レジスタ0のTビット、即ちビット55が0であり、レジスタのビット56-63の機能コードが無効である。汎用レジスタ0のビット32-54が全て0ではない。アクセスレジスタモードにおいて、ALETを含むパラメータリストを使用させる機能コードについて、R3フィールドが0である。52.PERFORMTIMINGFACILITYFUNCTIONの実行が試みられ、次のいずれかが真である。:汎用レジスタ0のビット56が0ではない。汎用レジスタ0のビット57-63が、未割り当ての又はインストールされていない機能コードを指定する。53.PROGRAMTRANSFER又はPROGRAMTRANSFERWITHINSTANCEの実行が試みられ、次の全てが真である。:PSWの拡張アドレッシングモードビットが0である。命令のR2フィールドが指定する汎用レジスタ内の基本アドレッシングモードビット、即ちビット32が0である。同じレジスタ内の命令アドレスのビット33-39が全て0ではない。54.RESUMEPROGRAMの実行が試みられ、次のいずれかが真である。:現行PSWに入れるために、第2オペランドのPSWフィールドのビット31、32、及び64-127は有効ではない。次のいずれかが真である場合、例外が発生する。:-ビット31及び32の両方とも0であり、ビット63-103が全て0ではない。-ビット31は0、ビット32は1であり、ビット64-96が全て0ではない。-ビット31は1、ビット32が0である。-ビット127が1である。パラメータリストのビット0-12が全て0ではない。55.SEARCHSTRINGUNICODEの実行が試みられ、汎用レジスタ0のビット32-47が全て0ではない。56.SETADDRESSSPACECONTROL、又はSETADDRESSSPACECONTROLFASTの実行が試みられ、第2オペランドアドレスのビット52及び53が両方とも0ではない。57.SETADDRESSINGMODESAM24の実行が試みられ、PSW内の未更新の命令アドレスのビット0-39、PSWのビット64-103が、全て0ではない。58.SETADDRESSINGMODESAM31の実行が試みられ、PSW内の未更新の命令アドレスのビット0-32、PSWのビット64-96が、全て0ではない。59.SETCLOCKPROGRAMMABLEFIELDの実行が試みられ、汎用レジスタ0のビット32-47が全て0ではない。60.SETFPCの実行が試みられ、FPCレジスタ内のサポートされていないビットに対応する第1オペランドの1つ又は複数のビットが1である。61.STORESYSTEMINFORMATIONの実行が試みられ、汎用レジスタ0内の機能コードが有効であり、次のいずれかが真である。:汎用レジスタ0のビット36-55及び汎用レジスタ1のビット32-47が全て0ではない。第2オペランドアドレスが、4Kバイト境界上に位置合わせされない。62.TRANSLATETWOTOONE又はTRANSLATETWOTOTWOの実行が試みられ、汎用レジスタR11における長さは偶数のバイトを指定していない。63.UNPACKASCIIの実行が試みられ、L1フィールドが31より大きい。64.UNPACKUNICODEの実行が試みられ、L1フィールドが63より大きいか、又は偶数である。65.UPDATETREEの実行が試みられ、汎用レジスタ4及び5の最初の内容は、24ビット又は31ビットアドレッシングモードにおいて8の倍数ではないか、又は、64ビットアドレッシングモードにおいて16の倍数ではない。旧PSWにより識別される命令の実行は抑止される。しかしながら、早期PSW指定例外原因1-3の場合は、新PSWを導入する操作は完了するが、その直後に割り込みが発生する。命令長コードILCは1、2、又は3であり、例外を引き起こした命令の長さを示すことが好ましい。命令アドレスが奇数6~33ページの原因4の場合は、ILCが1、2、又は3のいずれになるかは予測不能である。早期PSW指定例外原因1-3のために例外が発生し、LOADPSW、LOADPSWEXTENDED、PROGRAMRETURN、又は割り込みによりその例外が導入された場合は、ILCは0である。例外がSETADDRESSINGMODESAM24、SAM31により導入された場合は、ILCは1であり、或いは、SETADDRESSINGMODEがEXECUTEのターゲットであった場合、ILCは2である。例外が、SETSYSTEMMASK又はSTORETHENORSYSTEMMASKにより導入された場合、ILCは2である。プログラム割り込みは、プログラムの実行中に起きた例外及びイベントを報告するために使用される。プログラム割り込みにより、旧PSWが実記憶位置reallocation336-351に格納され、新PSWが実記憶位置464-479からフェッチされる。割り込み原因は、割り込みコードにより識別される。割り込みコードは、実記憶位置142-143に入れられ、命令長コードは実記憶位置141のバイトのビット位置5及び6に入れられ、そのビットの残りは0に設定され、実記憶位置140には0が格納される。原因によっては、割り込みの理由を識別する付加的な情報が実記憶位置144-183に格納される。PER-3ファシリティがインストールされている場合、プログラム割り込み動作の一部として、ブレーキングイベントアドレスレジスタの内容が、実記憶位置272-279に入れられる。PERイベント及び暗号操作例外を除いて、割り込みコードの右端7個のビット位置に入れられたコード値が、割り込みの原因となった条件を示す。一度に1つの条件しか示すことはできない。割り込みコードのビット0-7は、0に設定される。PERイベントは、割り込みコードのビット8が1に設定されることにより示される。これが唯一の条件である場合は、ビット0-7及び9-15も0に設定される。PERイベントと同時に別のプログラム割り込み条件も示される場合、ビット8は1に設定され、他の条件と同様にビット0-7及び9-15が設定される。暗号操作例外は、割り込みコードの011916進数で示されるか、又は、PERイベントも示される場合、019916進数で示される。対応するマスクビットが存在する場合、そのマスクビットが1のときだけ、プログラム割り込み起こり可能性がある。PSW内のプログラムマスクは4つの例外を制御し、FPCレジスタ内のIEEEマスクはIEEE例外を制御し、制御レジスタ0のビット33は、SETSYSTEMMASKが特殊操作例外を起こすかどうかを制御し、制御レジスタ8のビット48-63は、監視イベントが引き起こす割り込みを制御し、マスクの階層はPERイベントが引き起こす割り込みを制御する。いずれかの制御マスクビットが0であれば、条件は無視され、その条件は保留のまま残されることはない。プログラム割り込み用の新PSWにPSW形式エラーがあるか、又は、命令フェッチのプロセスにおいて例外が発生した場合、一連のプログラム割り込みが起きることがある。プログラム例外として示される条件の幾つかは、チャネルサブシステムにより発生することもあり、その場合、例外はサブチャネル状況ワード又は拡張状況ワードで示される。データ例外が原因でプログラム割り込みが起きたときは、データ例外コードDXCが記憶位置147に格納され、記憶位置144-146には0が格納される。DXCは、種々のタイプのデータ例外条件を識別する。AFPレジスタ付加的浮動小数点レジスタ制御ビット、即ち、制御レジスタ0のビット45が1のとき、浮動小数点制御FPCレジスタのDXCフィールドにもDXCが入れられる。他のいずれのプログラム例外が報告されても、FPCレジスタ内のDXCフィールドは変更されないままである。DXCは、データ例外の具体的な原因を示す8ビットのコードである。DXC2及び3は、相互排他的であり、いずれの他のDXCよりも優先順位が高い。従って、例えば、DXC2BFP命令は、どのIEEE例外よりも優先され、DXC3DFP命令は、どのIEEE例外又はシミュレートされたIEEE例外よりも優先される。別の例として、DXC3DFP命令及びDXC1AFPレジスタの両方についての条件が存在する場合には、DXC3が報告される。指定例外及びAFPレジスタデータ例外の両方が該当する場合は、どちらが報告されるかは予測不能である。アドレッシング例外は、CPUが、構成内で使用可能になっていない主記憶位置を参照しようと試みた場合に発生する。主記憶位置が構成内で使用できないのは、その位置がインストールされていない場合、ストレージユニットが構成内に存在しない場合、又はストレージユニットの電源がオフである場合である。構成内で使用可能でない記憶位置を指定しているアドレスを、無効であると言う。命令のアドレスが無効な場合は、操作は抑止される。同様に、EXECUTEのターゲット命令のアドレスが無効な場合も、操作は抑止される。さらに、テーブル又はテーブルエントリにアクセスする際にアドレッシング例外が発生した場合は、操作単位が抑止される。この規則が適用されるテーブル及びテーブルエントリは、ディスパッチ可能単位制御テーブル、1次ASN第2テーブルエントリ、並びにアクセスリスト、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメントテーブル、ページテーブル、リンケージテーブル、リンケージ第1テーブル、リンケージ第2テーブル、エントリテーブル、ASN第1テーブル、ASN第2テーブル、権限テーブル、リンケージスタック、及びトレーステーブル内のエントリである。領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメントテーブル、及びページテーブルに対する参照についてアドレッシング例外が生じた場合は、動的アドレス変換の際の暗黙参照の場合も、LOADPAGE-TABLE-ENTRYADDRESS、LOADREALADDRESS、STOREREALADDRESS、及びTESTPROTECTIONの実行と関連した参照の場合も、アドレッシング例外は抑止をもたらす。同様に、ディスパッチ可能単位制御テーブル、1次ASN第2テーブルエントリ、アクセスリスト、ASN第2テーブル、又は権限テーブルへのアクセスについてアドレッシング例外が生じた場合は、暗黙的なアクセスレジスタ変換の場合も、又は、LOADPAGE-TABLE-ENTRYADDRESS、LOADREALADDRESS、STOREREALADDRESS、TESTACCESS、又はTESTPROTECTIONの一部として行われるアクセスレジスタ変換の場合も、抑止がもたらされる。実行が抑止される一部の特定の命令を除いて、オペランドアドレスの変換はできても、そのアドレスが使用不能の位置を示している場合は、操作は終了する。終了の場合は、変更されるのは結果フィールドだけである。この文脈における結果フィールドという用語は、条件コード、レジスタ、及びいずれかの記憶位置のうち、命令により変更されるものとして指定されている位置が含まれる。上記は、1つのコンピュータシステムの実施形態の用語及び構造の理解に有用である。実施形態は、z/Architecture又はそこで提供される説明に制限されるものではない。実施形態は、ここでの教示を有する他のコンピュータ製造業者の他のコンピュータアーキテクチャに有利に適用することが可能である。図17を参照すると、コンピュータシステムは、オペレーティングシステムOS701、及び2つ以上のアプリケーションプログラム702、703を実行することができる。OSが、アプリケーションにより使用されるリソースを管理するのを可能にするために、コンテキストスイッチが用いられる。一例においては、OS701は、割り込みタイマーを設定し、該割り込みタイマーによって指定された期間だけアプリケーションプログラムが実行されるのを可能にするように、コンテキストスイッチ動作を開始する704。コンテキストスイッチ動作は、実行すべき次のOS命令を指し示すOSのプログラムカウンタを含む、OSの状態情報を保存する705。続いて、コンテキストスイッチ動作は、アプリケーションプログラム1702の状態情報を取得し705、アプリケーションプログラム1702が、アプリケーションプログラムの取得した現行プログラムカウンタにおいて、命令の実行を開始するのを可能にする706。割り込みタイマーが終了すると、コンテキストスイッチの動作を開始し704、コンピュータシステムをOSに戻す。異なるプロセッサアーキテクチャは、汎用レジスタgeneralpurposeregisterと呼ばれることが多い、制限された数の汎用レジスタgeneralregister、GRを提供し、それらは、アーキテクチャ化された命令セットの命令により明示的に及び/又は、暗黙的に識別される。IBMz/Architecture及びその前身のアーキテクチャ1964年頃のオリジナルのSystem360に遡ることができるは、各々の中央演算処理装置CPUに対して16個の汎用レジスタGRを提供する。以下のように、プロセッサ中央演算処理装置CPUの命令により、GRを使用することができる。:算術又は論理演算のソースオペランドとして。算術又は論理演算のターゲットオペランドとして。メモリオペランドのアドレスとして基底レジスタ、指標レジスタ、又は直接。メモリオペランドの長さとして。命令との間で機能コード又は他の情報を提供するといった他の使用。2000年にIBMz/Architectureメインフレームが導入されるまで、メインフレームの汎用レジスタは、32ビットで構成されており、z/Architectureの導入に伴い、汎用レジスタは64ビットで構成されるようになったが、互換性の理由で、多くのz/Architecture命令は、引き続き32ビットをサポートしている。同様に、例えばIntel登録商標からのx86のような他のアーキテクチャは、互換モードを提供するので、例えば32ビットレジスタを有する現行のマシンは、命令が、32ビットGRの最初の8ビット又は16ビットだけにアクセスするモードを提供する。初期のIBMSystem360環境においてさえ、アセンブラプログラマー及びコンパイラ設計者にとって、16個のレジスタ例えば、命令内の4ビットレジスタフィールドにより識別されるは難題であることが分かっていた。中規模サイズのプログラムは、コード及びデータをアドレス指定するために幾つかの基底レジスタを必要とすることがあり、アクティブな変数を保持するのに使用可能なレジスタの数を制限する。制限された数のレジスタに対処するために、特定の技術が使用される。:プログラム設計モジュラープログラミングのように単純なは、基底レジスタの過剰使用を最小限にするのに役立った。コンパイラは、レジスタの動的な再割り当てを管理するために、レジスタの色分けのような技術を使用している。以下を用いて、基底レジスタの使用を減らすことができる。:即ち、命令内に即値定数を有するよりより新しい算術及び論理命令。相対-即値オペランドアドレスを有するより新しい命令。長変位を有するより新しい命令。しかしながら、CPU内のレジスタの数が収容可能であるよりも多くの生存変数livevariable及びアドレッシング範囲がある場合、一定のレジスタ圧registerpressureが残る。z/Architectureは、3つのプログラムが選択可能なアドレッシングモード:即ち、24ビット、31ビット、及び64ビットアドレッシングを提供する。しかしながら、64ビット値を必要とせず、64ビットのメモリアドレッシングも利用しないプログラムの場合には、64ビットのGRを有することの利点は限られている。以下の開示は、通常は64ビットアドレッシング又は変数を使用しないプログラムに対して64ビットレジスタを利用するための技術を説明する。本開示においては、レジスタのビット位置に、左から右に昇順で番号が付けられるビッグエンディアン慣例が使用される。64ビットレジスタでは、ビット0左端のビットが最上位の値263を表し、ビット63右端のビットが最下位の値20を表す。こうしたレジスタの左端の32ビットビット0-31は、上位ワードhighwordと呼ばれ、レジスタの右端の32ビットビット32-63は、下位ワードlowwordと呼ばれ、1ワードは32ビットである。INTERLOCKED-ACCESSファシリティ:1つの例示的なz/Architectureの実施形態においては、単一命令においてインターロック更新により比較及びスワップcompare-and-swapタイプの更新を使用するのとは対照的に、ロード、更新、及びストア操作を行うことを可能にする手段を提供する、interlocked-accessインターロックアクセスファシリティを利用することができる。このファシリティはまた、インターロックフェッチ方式により、2つの別個の記憶位置からのロードを試みる命令を提供する。このファシリティは、以下の命令、LOADANDADDLOADANDADDLOGICALLOADANDANDLOADANDEXCLUSIVEORLOADANDORLOADPAIRDISJOINTを提供する。LOAD/STOREONCONDITIONファシリティ:1つの例示的なz/Architectureの実施形態においては、load/store-on-condition条件付きロード/ストアファシリティは、命令の条件コードマスクフィールドがPSW内の現在の条件コードに合致したときにのみ、選択された操作を実行できる手段を提供することができる。このファシリティは、以下の命令、LOADONCONDITIONSTOREONCONDITIONを提供する。DISTINCT-OPERANDSファシリティ:1つの例示的なz/Architectureの実施形態においては、distinct-operands独立オペランドファシリティは、結果レジスタが、ソースレジスタのいずれとも異なり得る、代替的な形態の選択された算術命令及び論理命令を提供することができる。このファシリティは、以下の命令、ADDADDIMMEDIATEADDLOGICALADDLOGICALWITHSIGNEDIMMEDIATEANDEXCLUSIVEORORSHIFTLEFTSINGLESHIFTLEFTSINGLELOGICALSHIFTRIGHTSINGLESHIFTRIGHTSINGLELOGICALSUBTRACTSUBTRACTLOGICALについての代替的な形態を提供する。POPULATION-COUNTファシリティ1つの例示的なz/Architectureの実施形態においては、population-countポピュレーションカウントファシリティは、汎用レジスタの各バイトの1のビット数のカウントを提供するPOPULATION-COUNT命令を提供することができる。ストレージオペランド参照:特定の特殊な命令の場合、多数のオペランドについてのフェッチ参照が、他のCPU及びチャネルプログラムによる特定のアクセスに対して、インターロックされているように見えることがある。そのようなフェッチ参照は、インターロックフェッチ参照と呼ばれる。インターロックフェッチ参照と関連したフェッチアクセスは、必ずしも連続して行われるとは限らず、インターロックフェッチ参照のフェッチアクセス間に、他のCPUによるストアアクセスが、インターロックフェッチ参照と同じ記憶位置において行われないことがある。LOADPAIRDISJOINT命令に対するストレージオペランドフェッチ参照は、インターロックフェッチ参照とすることができる。インターロックフェッチにより、LOADPAIRDISJOINTが、両方のオペランドをフェッチできるかどうかは、条件コードにより示される。特定の特殊な命令の場合、他のCPU及びチャネルプログラムによる特定のアクセスに対して、更新参照がインターロックされることがある。このような更新参照を、インターロック更新参照と呼ぶ。インターロック更新参照と関連したフェッチアクセス及びストアアクセスは、必ずしも連続して行われるとは限らないが、インターロック更新参照のフェッチアクセスとストアアクセスとの間に、他のCPU及びチャネルプログラムによる全てのストアアクセス、並びに、他のCPUによるインターロック更新参照と関連したフェッチアクセス及びストアアクセスが、同じ記憶位置で行なわれることが防止される。マルチプロセッサシステムはストレージオペランド参照をインターロックするための様々な手段を組み入れることができる。一実施形態は、参照中にシステム内のキャッシュラインの排他的所有権を取得するプロセッサを有する。別の実施形態は、例えば、メモリからアクセスされるオペランドがキャッシュライン内にある整数境界上にあることを必要とすることにより、ストレージアクセスが同じキャッシュラインに制限されることを必要とする。この場合、128バイトのキャッシュラインにおいてアクセスされるいずれの64ビット8バイトオペランドも、これが64ビット整数境界上にあれば、確実に全体がキャッシュライン内に収まる。ブロック並行処理参照:一部の参照では、ハーフワード2バイト、ワード4バイト、ダブルワード8バイト、又はクワドワード16バイト内の全てのバイト8ビットへのアクセスが、他のCPU及びチャネルプログラムから見ると、ブロック並行処理blockconcurrentに見えるように指定される。このセクションでは、ハーフワード、ワード、ダブルワード、又はクワドワードを、ブロックと呼ぶ。フェッチタイプ参照が、ブロック内での並行処理のように見えるよう指定されている場合、そのブロックに含まれるバイトがフェッチされている間、別のCPU又はチャネルプログラムによるそのブロックへのストアアクセスは許可されない。ストアタイプ参照が、ブロック内での並行処理のように見えるよう指定されている場合、そのブロック内のバイトがストアされている間、別のCPU又はチャネルプログラムによるそのブロックへのアクセスフェッチ又はストアは許可されない。逐次化serializing命令という用語は、1つ又は複数の逐次化機能を実行させる命令を指す。逐次化操作という用語は、命令内の操作の単位、又は割り込みのような逐次化機能を実行させるマシン操作を指す。特定オペランドの逐次化特定の命令は、命令のオペランドに対して、特定オペランドの逐次化specificoperandserializationを行わせることができる。他のCPU及びチャネルサブシステムから見ると、特定オペランドの逐次化操作は、概念上前にある全てのストレージアクセスが、概念上後にある命令の特定ストレージアクセスへのアクセスが行われる前に完了されることから成る。他のCPU及びチャネルプログラムから見ると、特定オペランドの逐次化を行わせる命令が完了すると、その命令のストアが完了する。特定オペランドの逐次化は、以下の命令:インターロックアクセスファシリティがインストールされており、第1オペランドが、オペランドのサイズに対して整数である境界上に位置合わせされている場合の、第1オペランドに対する、ADDIMMEDIATEASI、AGSI及びADDLOGICALWITHSIGNEDIMMEDIATE第2オペランドに対する、LOADANDADD、LOADANDADDLOGICAL、LOADANDAND、LOADANDEXCLUSIVEOR、LOADANDORの実行によって行われる。インターロック更新:IBMz/Architecture及びその前身のマルチプロセッサアーキテクチャ後のSystem360まで遡るは、特定のインターロック更新interlocked-update命令を実装している。インターロック更新命令は、命令を実行するCPUが、メモリがフェッチされた時点からこれが再びストアされるまで、そのメモリ位置に対する排他的なアクセスを有することを保証する。これにより、同じ記憶位置にアクセスしようとするマルチプロセッサ構成の複数のCPUが、間違った結果を見ないことが保証される。第1のインターロック更新命令は、S/360マルチプロセッシングシステムにおいて導入されたTESTANDSETTSであった。System370は、COMPAREANDSWAPCS及びCOMPAREDOUBLEANDSWAPCDS命令を導入した。ESA/390は、COMPAREANDSWAPANDPURGECSP命令仮想メモリの管理に使用される特化された形態を付加した。z/Architectureは、64ビットのCOMPAREANDSWAPCSG及びCOMPAREANDSWAPANDPURGECSPG、並びに128ビットのCOMPAREDOUBLEANDSWAPCDSG命令を付加した。z/Architectureの長変位ファシリティは、COMPAREANDSWAPCSY及びCOMPAREDOUBLEANDSWAPCDSY命令を付加した。z/Architectureのcompare-and-swap-and-storeファシリティは、COMPAREANDSWAPANDSTORE命令を付加した。TESTANDSET命令についてのTSのようなニーモニックは、命令を識別するためにアセンブラプログラマーによって使用される。アセンブラ表記法は、z/Architectureの参考文献において論じられており、本発明の教示には重要でない。従来技術のインターロック更新命令を用いて、複雑性及び付加的なCPUサイクルを犠牲にしてではあるが、ロックプロトコル、メモリ位置に対するインターロック算術及び論理操作その他を含む、より複雑な形態の逐次化されたアクセスを行うことができる。操作のアトミック単位として機能する種々のインターロック更新パラダイムに対する必要性が、引き続き存在する。本明細書における実施形態は、これらのパラダイムのうちの3つに対処する。本開示は、インターロック更新技術を実施する2つの新しい命令セット、及び、オペランドが適切に位置合わせされているときにインターロック更新を用いて機能するように定められた既存の第3の命令セットの機能拡張について説明する:LoadandPerform操作:この命令グループは、メモリ位置第2オペランドから汎用レジスタ第1オペランドに値をロードし、汎用レジスタ第3オペランド内の値に算術演算又はブール演算を行い、演算の結果を、再びメモリ位置に入れる。第2オペランドのフェッチ及びストアは、他のCPUには、ブロック並行処理のインターロック更新であるように見える。LoadPairDisjoint:この命令グループは、異なる別個のメモリ位置第1オペランド及び第2オペランドからの2つの値を、偶数/奇数対の汎用レジスタ第3オペランドとして指定されるにロードしようと試みる。インターロック方式で即ち、値の1つが別のCPUにより変更されることなく、2つの異なるメモリ位置にアクセスできるかは、条件コードにより示される。ADD[LOGICALWITHSIGNED]IMMEDIATEの機能拡張:従来技術のSystemz10は、命令内の即値定数を使用してメモリ位置への加算を行うために幾つかの命令:即ち、ADDIMMEDIATEASI、AGSI及びADDLOGICALWITHSIGNEDIMMEDIATEALSI、ALGSIを導入した。本来の定義では、これらの命令によるメモリアクセスは、インターロック更新ではなかった。インターロック更新ファシリティがインストールされており、これらの命令についてのメモリオペランドが整数境界上に位置合わせされている場合、オペランドのフェッチ/加算/ストアは、ブロック並行処理のインターロック更新であるように定義される。他のアーキテクチャは、この問題に対する代替的な解決策を実装する。例えば、IntelPentiumアーキテクチャは、特定の後続の命令についてのインターロック更新に影響を及ぼすロックプリフィックスLOCKprefix命令を定める。しかしながら、ロックプリフィックス技術は、不必要な複雑性をアーキテクチャに付加する。本明細書に記載される解決策は、プリフィックス命令を必要とせずに、操作のアトミック単位でインターロック更新を行うものである。INTERLOCKED-STORAGE-ACCESS命令:以下は、Interlocked-Storage-Accessインターロックストレージアクセス命令の例である。LOADANDADDRSY形式命令がコンピュータシステムにより実行されると、第2オペランドが第3オペランドに加算され、和が第2オペランド位置に入れられる。その後、第2オペランドの元の内容加算前のは変更されずに第1オペランド位置に入れられる。LAAオペコードの場合、オペランドは32ビットの符号付き2進整数として扱われる。LAAGオペコードの場合、オペランドは64ビットの符号付き2進整数として扱われる。ロード目的の第2オペランドのフェッチ、及び第2オペランド位置へのストアは、他のCPUから見ると、ブロック並行処理のインターロック更新参照であるように見える。特定オペランドの逐次化操作が行われる。変位は、20ビットの符号付き2進整数として扱われる。LAAの第2オペランドは、ワード境界上に指定されなければならない。LAAGの第2オペランドは、ダブルワード境界上に指定されなければならない。そうでない場合には、指定例外が発生する。結果として得られる条件コード:0結果が0であり、オーバーフローは発生しない1結果が0より小さく、オーバーフローは発生しない2結果が0より大きく、オーバーフローは発生しない3オーバーフロープログラム例外:アクセス例外フェッチ及びストア、オペランド2固定小数点オーバーフロー例外操作例外インターロックアクセスファシリティがインストールされていない場合指定例外プログラミング上の注意:1.R1及びR3フィールドが同じレジスタを指定する場合を除いて、汎用レジスタR3は変更されない。2.LOADANDADD、LOADANDADDLOGICAL、LOADANDAND、LOADANDEXCLUSIVEOR、及びLOADANDORの操作は、以下のように表現することができる。temp←operand_2;operand_2←operand_2OPoperand_3;operand_1←temp;OPは、命令によって実行される算術操作又は論理操作を表す。LOADANDADDLOGICALRSY形式命令がコンピュータシステムにより実行されると、第2オペランドが第3オペランドに加算され、和が第2オペランド位置に入れられる。その後、第2オペランドの元の内容加算前のは変更されずに、第1オペランド位置に入れられる。LAALオペコードの場合、オペランドは32ビットの符号なし2進整数として扱われる。LAALGオペコードの場合、オペランドは64ビットの符号なし2進整数として扱われる。ロードのための第2オペランドのフェッチ、及び第2オペランド位置へのストアは、他のCPUから見ると、ブロック並行処理のインターロック更新参照であるように見える。特定オペランドの逐次化操作が行われる。変位は、20ビットの符号付き2進整数として扱われる。LAALの第2オペランドは、ワード境界上に指定されなければならない。LAALGの第2オペランドは、ダブルワード境界上に指定されなければならない。そうでない場合には、指定例外が生じる。結果として得られる条件コード:0結果は0であり、繰り上がりはない1結果は0でなく、繰り上がりはない2結果は0であり、繰り上がる3結果は0でなく、繰り上がるプログラム例外:アクセス例外フェッチ及びストア、オペランド2操作例外インターロックアクセスファシリティがインストールされていない場合指定例外プログラミング上の注意:LOADANDADDについてのプログラミング上の注意を参照されたい。LOADANDANDRSY形式命令がコンピュータシステムにより実行されると、第2オペランドと第3オペランドの論理積ANDが、第2オペランド位置に入れられる。その後、第2オペランドの元の内容論理積演算前のは変更されずに、第1オペランド位置に入れられる。LANオペコードの場合、オペランドは32ビットである。LANGオペコードの場合、オペランドは64ビットである。連結子ANDは、ビット単位でオペランドに適用される。両方のオペランドの対応するビット位置が1を含む場合、結果のビット位置の内容が1に設定され、そうでない場合には、結果ビットが0に設定される。ロード目的の第2オペランドのフェッチ、及び第2オペランド位置へのストアは、他のCPUから見ると、ブロック並行処理のインターロック更新参照であるように見える。特定オペランド逐次化操作が行われる。変位は、20ビットの符号付き2進整数として扱われる。LANの第2オペランドは、ワード境界上に指定されなければならない。LANGの第2オペランドは、ダブルワード境界上に指定されなければならない。そうでない場合には、指定例外が生じる。結果として得られる条件コード:0結果は0である1結果は0でない2--3--プログラム例外:アクセス例外フェッチ及びストア、オペランド2操作例外インターロックアクセスファシリティがインストールされていない場合指定例外プログラミング上の注意:LOADANDADDについてのプログラミング上の注意を参照されたい。LOADANDEXCLUSIVEORRSY形式命令がコンピュータシステムにより実行されると、第2オペランドと第3オペランドの排他的論理和EXCLUSIVEORが、第2オペランド位置に入れられる。その後、第2オペランドの元の内容排他的論理和演算前のは変更されずに、第1オペランド位置に入れられる。LAXオペコードの場合、オペランドは32ビットである。LAXGオペコードの場合、オペランドは64ビットである。連結子exclusiveORは、ビット単位でオペランドに適用される。2つのオペランドの対応するビット位置のビットが異なる場合には、結果のビット位置の内容が1に設定され、そうでない場合には、結果ビットが0に設定される。ロード目的の第2オペランドのフェッチ、及び第2オペランド位置へのストアは、他のCPUから見ると、ブロック並行処理のインターロック更新参照であるように見える。特定オペランドの逐次化操作が行われる。変位は、20ビットの符号付き2進整数として扱われる。LAXの第2オペランドは、ワード境界上に指定されなければならない。LAXGの第2オペランドは、ダブルワード境界上に指定されなければならない。そうでない場合、指定例外が生じる。結果として得られる条件コード:0結果は0である1結果は0でない2--3--プログラム例外:アクセス例外フェッチ及びストア、オペランド2操作例外インターロックアクセスファシリティがインストールされていない場合指定例外プログラミング上の注意:LOADANDADDについてのプログラミング上の注意を参照されたい。LOADANDORRSY形式命令がコンピュータシステムにより実行されると、第2オペランドと第3オペランドの論理和ORが、第2オペランド位置に入れられる。その後、第2オペランドの元の内容論理和演算前のは変更されずに、第1オペランド位置に入れられる。LAOオペコードの場合、オペランドは32ビットである。LAOGオペコードの場合、オペランドは64ビットである。連結子ORは、ビット単位でオペランドに適用される。一方又は両方のオペランドの対応するビット位置が1を含む場合には、結果のビット位置の内容が1に設定され、そうでない場合には、結果ビットが0に設定される。ロード目的の第2オペランドのフェッチ、及び第2オペランド位置へのストアは、他のCPUから見ると、ブロック並行処理のインターロック更新参照であるように見える。特定オペランドの逐次化操作が行われる。変位は、20ビットの符号付き2進整数として扱われる。LAOの第2オペランドは、ワード境界上に指定されなければならない。LAOGの第2オペランドは、ダブルワード境界上に指定されなければならない。そうでない場合には、指定例外が生じる。結果として得られる条件コード:0結果は0である1結果は0でない2--3--プログラム例外:アクセス例外フェッチ及びストア、オペランド2操作例外インターロックアクセスファシリティがインストールされていない場合指定例外プログラミング上の注意:LOADANDADDについてのプログラミング上の注意を参照されたい。LOADPAIRDISJOINTSSF形式命令がコンピュータシステムにより実行されると、汎用レジスタR3は、偶数/奇数レジスタ対の偶数レジスタを指定する。第1オペランドは変更されずに、第3オペランドの偶数レジスタに入れられ、第2オペランドは変更されずに、第3オペランドの奇数レジスタに入れられる。条件コードは、第1及び第2オペランドが、ブロック並行処理のインターロックフェッチによってフェッチされたように見えるかどうかを示す。LPDオペコードの場合、第1及び第2オペランドは、ストレージ内のワードであり、第3オペランドは、汎用レジスタR3及びR31のビット32-63にあり、レジスタのビット0-31は変更されない。LPDGオペコードの場合、第1及び第2オペランドは、ストレージ内のダブルワードであり、第3オペランドは、汎用レジスタR3及びR31のビット0-63にある。他のCPUから見ると、第1及び第2オペランドは、ブロック並行処理のインターロックフェッチによってフェッチされたように見える場合、条件コード0が設定される。第1及び第2オペランドが、ブロック並行処理のインターロック更新によってフェッチされたように見えない場合、条件コード3が設定される。第3オペランドは、条件コードに関係なくロードされる。第1及び第2オペランドの変位は、12ビットの符号なし2進整数として扱われる。LPDの第1及び第2オペランドは、ワード境界上に指定されなければならない。LPDGの第1及び第2オペランドは、ダブルワード境界上に指定されなければならない。汎用レジスタR3は、偶数レジスタを指定しなければならない。そうでない場合には、指定例外が生じる。結果として得られる条件コード:0レジスタ対は、インターロックフェッチによってロードされる1--2--3レジスタ対は、インターロックフェッチによってはロードされないプログラム例外:アクセス例外フェッチ、オペランド1及び2操作例外インターロックアクセスファシリティがインストールされていない場合指定例外プログラミング上の注意:1.条件コードの設定は、構成内の他のCPUによるストレージアクセスによって決まる。2.結果として得られる条件コードが3である場合、プログラムは分岐し、LOADPAIRDISJOINT命令を再実行することができる。しかしながら、インターロックフェッチを得ようとする試みが繰り返し不成功に終わった後、プログラムは、ストレージオペランドへのアクセスを逐次化する代替的な手段を使用すべきである。代替的な経路に分岐する前に、プログラムが、LOADPAIRDISJOINTを10回以上再実行しないことが推奨される。3.プログラムは、決して条件コード0が設定されない状況に適合できなくてはならない。LOAD/STORE-ON-CONDITION命令:以下は、例示的Load/Store-on-condition命令である:LOADONCONDITIONRRF、RSY形式命令がコンピュータシステムにより実行されると、条件コードが、M3により指定された値のうちの1つを有する場合には、第2オペランドは、変更されずに、第1オペランド位置に入れられ、そうでない場合には、第1オペランドは変更されないままである。LOC及びLROCの場合、第1及び第2オペランドは32ビットであり、LGOCオペコード及びLGROCオペコードの場合、第1及び第2オペランドは64ビットである。M3フィールドは、4ビットのマスクとして使用される。4つの条件コード0、1、2、及び3は、次のように左から右へ、マスクの4つのビットに対応する。現行の条件コードを使用して、対応するマスクビットを選択する。条件コードにより選択されたマスクビットが1である場合には、ロードが実行される。選択されたマスクビットが0である場合には、ロードは実行されない。LOC及びLGOCについての変位は、20ビットの符号付き2進整数として扱われる。LOC及びLGOCの場合、M3フィールドにより指定された条件が満たされないとき即ち、ロード操作が実行されないとき、第2オペランドについて、アクセス例外が発生するか、又はPERゼロアドレス検出が行われるかは、モデルによって決まる。条件コード:コードは変更されないままである。プログラム例外:アクセス例外フェッチ、LOC及びLGOCのオペランド2操作例外load/store-on-conditionファシリティがインストールされていない場合プログラミング上の注意:1.M3フィールドが0を含む場合、命令は、NOPとして機能する。M3フィールドが全て1を含み、例外条件が存在しない場合、常にロード操作が実行される。しかしながら、これらは、それぞれNOP又は条件なしロードを実施する好ましい手段ではない。2.LOC及びLGOCの場合、M3フィールドにより指定された条件が満たされないとき、第2オペランドがキャッシュに持ち込まれるかどうかは、モデルによって決まる。3.LOADONCONDITIONが指標レジスタを提供しない点を除いて、LOADONCONDITIONは、別個のBRANCHONCONDITION命令にLOAD命令が続くのと似た機能を提供する。例えば、以下の2つの命令シーケンスは等しい。予測分岐を実施するモデルにおいては、CPUが分岐条件を成功裏に予測できるとき、BRANCHONCONDITION命令とLOAD命令の組み合わせは、LOADONCONDITION命令よりも幾分良好に機能し得る。しかしながら、条件がより不規則であるときのように、CPUが分岐条件を成功裏に予測できないモデルにおいては、LOADONCONDITION命令は、著しい性能の改善をもたらすことができる。STOREONCONDITIONRSY形式命令がコンピュータシステムにより実行されると、条件コードが、M3により指定された値のうちの1つを有する場合には、第1オペランドは変更されずに、第2オペランド位置に入れられ、そうでない場合には、第2オペランドは変更されないままである。STOCオペコードの場合、第1及び第2オペランドは32ビットであり、STGOCオペコードの場合、第1及び第2オペランドは64ビットである。M3フィールドは、4ビットのマスクとして使用される。4つの条件コード0、1、2、及び3は、次のように左から右へ、マスクの4つのビットに対応する。:即ち、現行の条件コードを使用して、対応するマスクビットを選択する。条件コードにより選択されたマスクビットが1である場合には、ストアが行われる。選択されたマスクビットが0である場合には、ストアは行われず、通常の命令の順序に従って次の順次命令に進む。変位は、20ビットの符号付き2進整数として扱われる。M3フィールドにより指定された条件が満たされない場合即ち、ストア操作が実行されない、第2オペランドについて、次の:即ち、aアクセス例外が生じる、bPERストレージ変更イベントが生じる、cPERゼロアドレス検出イベントが生じる、又はd変更ビットが設定される、のいずれか又は全てが発生するかどうかは、モデルによって決まる。条件コード:コードは変更されないままである。プログラム例外:アクセス例外ストア、オペランド2操作例外load/store-on-conditionファシリティがインストールされていない場合プログラミング上の注意:1.M3フィールドが0を含む場合、命令は、NOPとして機能する。M3フィールドが全て1を含み、例外条件が存在しない場合、常にストア操作が実行される。しかしながら、これらは、それぞれNOP又は条件なしストアを実施する好ましい手段ではない。2.M3フィールドにより指定された条件が満たされないとき、第2オペランドがキャッシュに持ち込まれるかどうかは、モデルによって決まる。3.STOREONCONDITIONが指標レジスタを提供しない点を除いて、STOREONCONDITIONは、別個のBRANCHONCONDITION命令にSTORE命令が続くのと似た機能を提供する。例えば、以下の2つの命令シーケンスは等しい。予測分岐を実施するモデルにおいては、CPUが分岐条件を成功裏に予測できるとき、BRANCHONCONDITION命令とSTORE命令の組み合わせは、STOREONCONDITION命令よりも幾分良好に機能し得る。しかしながら、条件がより不規則であるときのように、CPUが分岐条件を成功裏に予測できないモデルにおいては、STOREONCONDITION命令は、著しい性能の改善をもたらすことができる。DISTINCT-OPERANDSファシリティ命令:以下は、例示的なDistinct-operandsファシリティ命令である:ADDRR、RRE、RRF、RX、RXY形式、ADDIMMEDIATERIL、RIE、SIY形式命令がコンピュータシステムにより実行されると、ADDA、AG、AGF、AGFR、AGR、AR、及びAYオペコード及びADDIMMEDIATEAFI、AGFI、AGSI、及びASIオペコードの場合は、第2オペランドが第1オペランドに加算され、和が第1オペランド位置に入れられる。ADDAGRK及びARK及びADDIMMEDIATEAGHIK及びAHIKオペコードの場合は、第2オペランドが第3オペランドに加算され、和が第1オペランド位置に入れられる。ADDA、AR、ARK、及びAYオペコード及びADDIMMEDIATEAFIオペコードの場合は、オペランドと和は、32ビットの符号付き2進整数として扱われる。ADDAG、AGR、及びAGRKオペコードの場合は、これらは64ビットの符号付き2進整数として扱われる。ADDAGFR、AGFオペコード及びADDIMMEDIATEAGFIオペコードの場合は、第2オペランドは、32ビットの符号付き2進整数として扱われ、第1オペランドと和は、64ビットの符号付き2進整数として扱われる。ADDIMMEDIATEASIオペコードの場合は、第2オペランドは、8ビットの符号付き2進整数として扱われ、第1オペランドと和は、32ビットの符号付き2進整数として扱われる。ADDIMMEDIATEAGSIオペコードの場合は、第2オペランドは、8ビットの符号付き2進整数として扱われ、第1オペランドと和は、64ビットの符号付き2進整数として扱われる。ADDIMMEDIATEAHIKオペコードの場合、第1及び第3オペランドは、32ビットの符号付き2進整数として扱われ、第2オペランドは、16ビットの符号付き2進整数として扱われる。ADDIMMEDIATEAGHIKオペコードの場合は、第1及び第3オペランドは、64ビットの符号付き2進整数として扱われ、第2オペランドは、16ビットの符号付き2進整数として扱われる。オーバーフローが発生すると、符号ビット位置への繰り上がりを許容し、符号ビット位置からの繰り上がりは無視することによって、結果が取得され、条件コード3が設定される。固定小数点オーバーフローマスクが1の場合には、固定小数点オーバーフローに関するプログラム割り込みが発生する。インターロックアクセスファシリティがインストールされており、ADDIMMEDIATEASI、AGSIの第1オペランドが、そのサイズに対応する整数境界上に位置合わせされているとき場合、第1オペランドのフェッチ及びストアは、他のCPUから見るとインターロック更新として実行され、特定オペランドの逐次化操作が実行される。インターロックアクセスファシリティがインストールされていない場合、又はADDIMMEDIATEASI、AGSIの第1オペランドが、そのサイズに対応する整数境界上に位置合わせされていない場合、そのオペランドのフェッチ及びストアは、インターロック更新として実行されない。Aの変位は、12ビットの符号なし2進整数として扱われる。AY、AG、AGF、AGSI、及びASIの変位は、20ビットの符号付き2進整数として扱われる。結果として得られる条件コード:0結果が0であり、オーバーフローは発生しない1結果が0より小さく、オーバーフローは発生しない2結果が0より大きく、オーバーフローは発生しない3オーバーフロープログラム例外:アクセス例外フェッチ及びストア、AGSI及びASIのオペランド1のみ;フェッチ、A、AY、AG、及びAGFのオペランド2のみ固定小数点オーバーフロー例外操作例外AY、長変位ファシリティがインストールされていない場合;AFI及びAGFI、extendedimmediateファシリティがインストールされていない場合;AGSI及びASI、一般命令拡張ファシリティがインストールされていない場合;ARK、AGRK、AHIK及びAGHIK、distinct-operandsファシリティがインストールされていない場合プログラミング上の注意:1.ADDIMMEDIATEAGSI及びASIの第1オペランドへのアクセスは、ストレージから第1オペランドをフェッチし、その後、更新された値をストアすることから成る。インターロックアクセスファシリティがインストールされていない場合、又は、第1オペランドが、そのサイズに対応する整数境界上に位置合わせされていない場合、第1オペランドへのフェッチアクセス及びストアアクセスは、必ずしもフェッチアクセスの直後にストアアクセスが行われるとは限らない。このような条件下では、別のCPU又はチャネルサブシステムもまたその記憶位置を更新できる可能性がある場合には、ストレージ内の位置を更新するのに、ADDIMMEDIATEAGSI及びASIを安全に使用することができない。インターロックアクセスファシリティがインストールされており、第1オペランドが、そのサイズに対応する整数境界上に位置合わせされている場合、ブロック並行処理のインターロック更新を使用して、オペランドにアクセスされる。2.算術演算におけるオーバーフロー条件を無視する特定のプログラミング言語の場合、条件コード3を設定することにより、結果の符号が不明瞭になる。しかしながら、ADDIMMEDIATEの場合、分岐マスクを設定する際、I2フィールドの符号コード生成の時点で既知であるを使用することができ、これにより、結果の符号が正確に決定される。ADDLOGICALRR、RRE、RX、RXY形式、ADDLOGICALIMMEDIATERIL形式命令がコンピュータシステムにより実行されると、ADDLOGICALAL、ALG、ALGF、ALGFR、ALGR、ALR、及びALYオペコード及びADDLOGICALIMMEDIATEALGFI及びALFIオペコードの場合は、第2オペランドが第1オペランドに加算され、和が第1オペランド位置に入れられる。ADDLOGICALALGRK及びALRKオペコードの場合は、第2オペランドが第3オペランドに加算され、和が第1オペランド位置に入れられる。ADDLOGICALAL、ALR、ALRK、及びALYオペコード及びADDLOGICALIMMEDIATEALFIオペコードの場合は、オペランドと和は、32ビットの符号なし2進整数として扱われる。ADDLOGICALALG、ALGR、及びALGRKオペコードの場合は、それらは、64ビットの符号なし2進整数として扱われる。ADDLOGICALALGFR、ALGFオペコード及びADDLOGICALIMMEDIATEALGFIオペコードの場合は、第2オペランドは、32ビットの符号なし2進整数として扱われ、第1オペランドと和は、64ビットの符号なし2進整数として扱われる。ALの変位は、12ビットの符号なし2進整数として扱われる。ALY、ALG、及びALGFの変位は、20ビットの符号付き2進整数として扱われる。結果として得られる条件コード:0結果は0であり、繰り上がりはない1結果は0でなく、繰り上がりはない2結果は0であり、繰り上がる3結果は0でなく、繰り上がるプログラム例外:アクセス例外フェッチ、AL、ALY、ALG、及びALGFのオペランド2のみ操作例外ALY、長変位ファシリティがインストールされていない場合;ALFI及びALGFI、extendedimmediateファシリティがインストールされていない場合;ALRK及びALGRK、distinct-operandsファシリティがインストールされていない場合ADDLOGICALWITHSIGNEDIMMEDIATESIY、RIE形式命令がコンピュータシステムにより実行されると、ALGSIオペコード及びALSIオペコードの場合は、第2オペランドが第1オペランドに加算され、和が第1オペランド位置に入れられる。ALGHSIK及びALHSIKオペコードの場合は、第2オペランドが第3オペランドに加算され、和が第1オペランド位置に入れられる。ALSIオペコードの場合は、第1オペランドと和は、32ビットの符号なし2進整数として扱われる。ALGSIオペコードの場合は、第1オペランドと和は、64ビットの符号なし2進整数として扱われる。ALSI及びALGSIの両方の場合は、第2オペランドは、8ビットの符号付き2進整数として扱われる。ALHSIKオペコードの場合は、第1及び第3オペランドは、32ビットの符号なし2進整数として扱われる。ALGHSIKオペコードの場合は、第1及び第3オペランドは、64ビットの符号なし2進整数として扱われる。ALGHSIK及びALHSIKの両方の場合、第2オペランドは、16ビットの符号付き2進整数として扱われる。インターロックアクセスファシリティがインストールされており、第1オペランドが、そのサイズに対応する整数境界上に位置合わせされている場合、ブロック並行処理のインターロック更新を用いて、オペランドにアクセスされる。ALGSI及びALSIの場合は、第2オペランドが第1オペランドに加算され、和が第1オペランド位置に入れられる。ALGHSIK及びALHSIKの場合、第2オペランドが第3オペランドに加算され、和が第1オペランド位置に入れられる。ALSIの場合は、第1オペランドと和は、32ビットの符号なし2進整数として扱われる。ALGSIの場合は、第1オペランドと和は、64ビットの符号なし2進整数として扱われる。ALSI及びALGSIの両方の場合、第2オペランドは、8ビットの符号付き2進整数として扱われる。ALHSIKの場合は、第1及び第3オペランドは、32ビットの符号なし2進整数として扱われる。ALGHSIKの場合は、第1及び第3オペランドは、64ビットの符号なし2進整数として扱われる。ALGHSIK及びALHSIKの両方の場合、第2オペランドは、16ビットの符号付き2進整数として扱われる。インターロックアクセスファシリティがインストールされており、第1オペランドが、そのサイズに対応する整数境界上に位置合わせされている場合、第1オペランドのフェッチ及びストアは、他のCPUから見るとインターロック更新として実行され、特定オペランドの逐次化操作が実行される。インターロックアクセスファシリティがインストールされていない場合、又はADDLOGICALWITHSIGNEDIMMEDIATEALSI、ALGSIの第1オペランドが、そのサイズに対応する整数境界上に位置合わせされていない場合、そのオペランドのフェッチ及びストアは、インターロック更新として実行されない。第2オペランドが負の値を含む場合、条件コードは、SUBTRACTLOGICAL演算が実行されたかのように設定される。第2オペランドが負である場合、条件コード0は決して設定されない。変位は、20ビットの符号付き2進整数として扱われる。結果として得られる条件コード:0結果は0であり、繰り上がりはない1結果は0でなく、繰り上がりはない2結果は0であり、繰り上がる3結果は0でなく、繰り上がるANDRR、RRE、RRF、RX、RXY、SI、SIY、SS形式命令がコンピュータシステムにより実行されると、N、NC、NG、NGR、NI、NIY、NR、及びNYオペコードの場合は、第1オペランドと第2オペランドの論理積ANDが、第1オペランド位置に入れられる。NGRK及びNRKの場合、第2オペランドと第3オペランドの論理積は、第1オペランド位置に入れられる。連結子ANDは、ビット単位でオペランドに適用される。両方のオペランドの対応するビット位置が1を含む場合、結果のビット位置の内容が1に設定され、そうでない場合には、結果ビットが0に設定される。ANDNCオペコードの場合、各々のオペランドは、左から右へと処理される。オペランドがオーバーラップするときは、オペランドが一度に1バイトずつ処理され、各々の結果バイトは、必要なオペランドバイトをフェッチした直後に格納されるかのように、結果が取得される。ANDNI及びNIYオペコードの場合、第1オペランドの長さは1バイトであり、1バイトのみが格納される。ANDN、NR、NRK、及びNYの場合、オペランドは32ビットであり、ANDNG、NGR、及びNGRKオペコードの場合、オペランドは64ビットである。N、NI、及びNCの両方のオペランドの変位は、12ビットの符号なし2進整数として扱われる。NY、NIY及びNGの変位は、20ビットの符号付き2進整数として扱われる。結果として得られる条件コード:0結果は0である1結果は0でない2--3--プログラム例外:アクセス例外フェッチ、オペランド2、N、NY、NG及びNC;フェッチ及びストア、オペランド1、NI、NIY及びNC操作例外NIY及びNY、長変位ファシリティがインストールされていない場合;NGRK及びNRK、distinctoperandsファシリティがインストールされていない場合EXCLUSIVEORRR、RRE、RRF、RX、RXY、SI、SIY、SS形式命令がコンピュータシステムにより実行されると、X、XC、XG、XGR、XI、XIY、XR、及びXYオペコードの場合、第1オペランドと第2オペランドの排他的論理和EXCLUSIVEORが、第1オペランド位置に入れられる。XGRK及びXRKオペコードの場合、第2オペランドと第3オペランドの排他的論理和が、第1オペランド位置に入れられる。連結子EXCLUSIVEORは、ビット単位でオペランドに適用される。2つのオペランドの対応するビット位置のビットが異なる場合、結果のビット位置の内容が1に設定され、そうでない場合には、結果ビットが0に設定される。EXCLUSIVEORXCオペコードの場合、各々のオペランドは、左から右へと処理される。オペランドがオーバーラップするときは、オペランドが一度に1バイトずつ処理され、各々の結果バイトは、必要なオペランドバイトをフェッチした直後に格納されるかのように、結果が取得される。EXCLUSIVEORXI、XIYオペコードの場合、第1オペランドの長さは1バイトであり、1バイトのみが格納される。EXCLUSIVEORX、XR、XRK、及びXYオペコードの場合、オペランドは32ビットであり、EXCLUSIVEORXG、XGR、及びXGRKオペコードの場合、オペランドは64ビットである。X、XI、及びXCの両オペランドの変位は、12ビットの符号なし2進整数として扱われる。XY、XIY、及びXGの変位は、20ビットの符号付き2進整数として扱われる。結果として得られる条件コード:0結果は0である1結果は0でない2--3--プログラム例外:アクセス例外フェッチ、オペランド2、X、XY、XG及びXC;フェッチ及びストア、オペランド1、XI、XIY及びXC操作例外XIY及びXY、長変位ファシリティがインストールされていない場合;XGRK及びXRK、distinctoperandsファシリティがインストールされていない場合プログラミング上の注意:1.-2.EXCLUSIVEORは、ビットを反転するために使用することができ、この操作は、プログラム式2進スイッチのテスト及び設定の際に特に有用である。3.あるフィールドとそのフィールド自体との排他的論理和は、全て0になる。4.EXCLUSIVEORXR又はXGRの場合、AEXCLUSIVE-ORB、BEXCLUSIVE-ORA、AEXCLUSIVE-ORBというシーケンスの結果、付加的な汎用レジスタを使用することなく、AとBの内容が交換される。5.EXCLUSIVEORXI及びEXCLUSIVEORXCの第1オペランドへのアクセスは、ストレージから第1オペランドのバイトをフェッチし、その後、更新された値をストアすることから成る。特定のバイトへのこれらのフェッチアクセス及びストアアクセスは、必ずしもフェッチアクセスの直後にストアアクセスが行われるとは限らない。従って、別のCPU又はチャネルプログラムもまたその記憶位置を更新できる可能性がある場合には、ストレージ内の記憶位置を更新するのに、EXCLUSIVEORを安全に使用することはできない。ORRR、RRE、RRF、RX、RXY、SI、SIY、SS形式命令がコンピュータシステムにより実行されると、O、OC、OG、OGR、OI、OIY、OR、及びOYオペコードの場合は、第1オペランドと第2オペランドの論理和ORが、第1オペランド位置に入れられる。OGRK及びORKの場合、第2オペランドと第3オペランドの論理和が、第1オペランド位置に入れられる。連結子ORは、ビット単位でオペランドに適用される。一方又は両方のオペランドの対応するビット位置が1を含む場合には、結果のビット位置の内容が1に設定され、そうでない場合には、結果ビットが0に設定される。OROCオペコードの場合、各々のオペランドは、左から右へと処理される。オペランドがオーバーラップするときは、オペランドが一度に1バイトずつ処理され、各々の結果バイトは、必要なオペランドバイトをフェッチした直後に格納されるかのように、結果が取得される。OROI、OIYオペコードの場合、第1オペランドの長さは1バイトであり、1バイトのみが格納される。ORO、OR、ORK、及びOYオペコードの場合、オペランドは32ビットであり、OROG、OGR、及びOGRKオペコードの場合、オペランドは64ビットである。O、OI、及びOCの両オペランドの変位は、12ビットの符号なし2進整数として扱われる。OY、OIY、及びOGの変位は、20ビットの符号付き2進整数として扱われる。結果として得られる条件コード:0結果は0である1結果は0でない2--3--SHIFTLEFTSINGLERS、RSY形式命令がコンピュータシステムにより実行されると、SLAオペコードの場合は、符号付き第1オペランドの31ビットの数値部分が、第2オペランドアドレスにより指定されるビット数だけ左にシフトされ、結果が第1オペランド位置に入れられる。汎用レジスタR1のビット0-31は、変更されないままである。SLAKオペコードの場合は、符号付き第3オペランドの31ビットの数値部分が、第2オペランドアドレスにより指定されるビット数だけ左にシフトされ、結果の左側に第3オペランドの符号ビットを付加したものが、第1オペランド位置に入れられる。汎用レジスタR1のビット0-31は、変更されないままであり、汎用レジスタR3において第3オペランドは、変更されないままである。SLAGオペコードの場合は、符号付き第3オペランドの63ビットの数値部分が、第2オペランドアドレスにより指定されるビット数だけ左にシフトされ、結果の左側に第3オペランドの符号ビットを付加したものが、第1オペランド位置に入れられる。汎用レジスタR3において第3オペランドは変更されないままである。第2オペランドのアドレスは、データのアドレス指定には使用されず、その右端6ビットは、シフトされるビット位置の数を示す。アドレスの残りの部分は無視される。SLAオペコードの場合は、第1オペランドは、汎用レジスタR1のビット位置32-63にある32ビットの符号付き2進整数として扱われる。第1オペランドの符号は、変更されないままである。このオペランドの31個の数値ビットの全てが、左シフトに関与する。SLAKの場合は、第1及び第3オペランドは、それぞれ、汎用レジスタR1及びR3のビット位置32-63にある32ビットの符号付き2進整数として扱われる。第1オペランドの符号は、第3オペランドの符号と同じに設定される。第3オペランドの31個の数値ビットの全てが、左シフトに関与する。SLAGの場合は、第1及び第3オペランドは、それぞれ、汎用レジスタR1及びR3のビット位置0-63にある64ビットの符号付き2進整数として扱われる。第1オペランドの符号は、第3オペランドの符号と同じに設定される。第3オペランドの63個の数値ビットの全てが、左シフトに関与する。SLA、SLAG、又はSLAKの場合、右側の空いたビット位置に、0が与えられる。符号ビットとは異なる1つ又は複数のビットが、SLA又はSLAKの場合は、ビット位置33から、又はSLAGの場合はビット位置1から外にシフトされる場合には、オーバーフローが発生し、条件コード3が設定される。固定小数点オーバーフローマスクビットが1であれば、固定小数点オーバーフローに関するプログラム割り込みが発生する。結果として得られる条件コード:0結果が0であり、オーバーフローは発生しない1結果が0より小さく、オーバーフローは発生しない2結果が0より大きく、オーバーフローは発生しない3オーバーフロープログラム例外固定小数点オーバーフロー例外操作例外SLAK、distinct-operandsファシリティがインストールされていない場合SHIFTLEFTSINGLELOGICALRS、RSY形式命令がコンピュータシステムにより実行されると、SLLオペコードの場合は、32ビットの第1オペランドが、第2オペランドアドレスにより指定されるビット数だけ左にシフトされ、結果は、第1オペランド位置に入れられる。汎用レジスタR1のビット0-31は、変更されないままである。SLLKの場合は、32ビットの第3オペランドが、第2オペランドアドレスにより指定されるビット数だけ左にシフトされ、結果は、第1オペランド位置に入れられる。汎用レジスタR1のビット0-31は、変更されないままであり、汎用レジスタR3において第3オペランドは変更されないままである。SLLGオペコードの場合は、64ビットの第3オペランドが、第2オペランドアドレスにより指定されるビット数だけ左にシフトされ、結果は、第1オペランド位置に入れられる。汎用レジスタR3において第3オペランドは変更されないままである。第2オペランドアドレスは、データのアドレス指定には使用されず、その右端6ビットは、シフトされるビット位置の数を示す。アドレスの残りの部分は無視される。SLLの場合は、第1オペランドは、汎用レジスタR1のビット位置32-63にある。このオペランドの32ビットの全てが、左シフトに関与する。SLLKの場合は、第1及び第3オペランドは、それぞれ、汎用レジスタR1及びR3のビット位置32-63にある。第3オペランドの32ビットの全てが、左シフトに関与する。SLLGの場合は、第1及び第3オペランドは、それぞれ、汎用レジスタR1及びR3のビット位置0-63にある。第3オペランドの64ビットの全てが、左シフトに関与する。SLL、SLLG、又はSLLKオペコードの場合は、右側の空いたビット位置に0が与えられる。条件コード:コードは変更されないままである。プログラム例外:操作例外SLLK、distinct-operandsファシリティがインストールされていない場合SHIFTRIGHTSINGLERS、RSY形式命令がコンピュータシステムにより実行されると、SRAオペコードの場合は、符号付き第1オペランドの31ビットの数値部分が、第2オペランドアドレスにより指定されるビット数だけ右にシフトされ、結果は、第1オペランド位置に入れられる。汎用レジスタR1のビット0-32は、変更されないままである。SRAKオペコードの場合は、符号付き第3オペランドの31ビットの数値部分が、第2オペランドアドレスにより指定されるビット数だけ右にシフトされ、結果の左側に第3オペランドの符号ビットを付加したものが、第1オペランド位置に入れられる。汎用レジスタR1のビット0-32は、変更されないままである。SHIFTRIGHTSINGLESRAGオペコードの場合は、符号付き第3オペランドの63ビットの数値部分が、第2オペランドアドレスにより指定されるビットの数だけ右にシフトされ、結果の左側に第3オペランドの符号ビットを付加したものが、第1オペランド位置に入れられる。汎用レジスタR3において第3オペランドは変更されないままである。第2オペランドのアドレスは、データのアドレス指定には使用されず、その右端6ビットは、シフトされるビット位置の数を示す。アドレスの残りの部分は無視される。SRAの場合は、第1オペランドは、汎用レジスタR1のビット位置32-63にある32ビットの符号付き2進整数として扱われる。第1オペランドの符号は、変更されないままである。このオペランドの31個の数値ビットの全てが、右シフトに関与する。SRAKの場合は、第1及び第3オペランドは、それぞれ、汎用レジスタR1及びR3のビット位置32-63にある32ビットの符号付き2進整数として扱われる。第1オペランドの符号は、第3オペランドの符号と同じに設定される。第3オペランドの31個の数値ビットの全てが、右シフトに関与する。SRAGの場合は、第1及び第3オペランドは、それぞれ、汎用レジスタR1及びR3のビット位置0-63にある64ビットの符号付き2進整数として扱われる。第1オペランドの符号は、第3オペランドの符号と同じく設定される。第3オペランドの63個の数値ビットの全てが、右シフトに関与する。SRA、SRAG、又はSRAKの場合は、ビット位置63から外にシフトされたビットは検査されず、失われる。左側の空いたビット位置に、符号と等しいビットが与えられる。結果として得られる条件コード:0結果は0である1結果は0より小さい2結果は0より大きい3--プログラム例外:操作例外SRAK、distinct-operandsファシリティがインストールされていない場合プログラミング上の注意:1.ビット位置を1つだけ右にシフトすることは、2で割って結果を下向きに丸めることと同じである。偶数の数値を右に1桁シフトした場合は、結果はその数値を2で割るのと同じことである。奇数の数値を右に1桁シフトした場合の結果は、その数の次に小さい数を2で割るのと同じことである。例えば、5を右に1ビット位置だけシフトすると、2になるが、-5の場合は-3になる。2.SHIFTRIGHTSINGLESRA及びSRAKの場合は、シフト量が31から63までの範囲内である場合、数値部分の全体がレジスタから外にシフトされ、初期内容が負であったかどうかによって、-1又は0の結果が残る。SHIFTRIGHTSINGLESRAGの場合は、シフト量が63の場合に同じ結果が生じる。SHIFTRIGHTSINGLELOGICALRS、RSY形式命令がコンピュータシステムにより実行されると、SRLオペコードの場合、32ビットの第1オペランドが、第2オペランドアドレスにより指定されるビット数だけ右にシフトされ、結果は、第1オペランド位置に入れられる。汎用レジスタR1のビット0-31は、変更されないままである。SRLKオペコードの場合は、32ビットの第3オペランドが、第2オペランドアドレスにより指定されるビット数だけ右にシフトされ、結果は、第1オペランド位置に入れられる。汎用レジスタR1のビット0-31は、変更されないままであり、汎用レジスタR3において第3オペランドは変更されないままである。SRLGオペコードの場合は、64ビットの第3オペランドが、第2オペランドアドレスにより指定されるビット数だけ右にシフトされ、結果は、第1オペランド位置に入れられる。汎用レジスタR3において第3オペランドは変更されないままである。第2オペランドアドレスは、データのアドレス指定には使用されず、その右端6ビットは、シフトされるビット位置の数を示す。アドレスの残りの部分は無視される。SRLの場合は、第1オペランドは、汎用レジスタR1のビット位置32-63にある。このオペランドの32ビットの全てが、右シフトに関与する。SRLKの場合は、第1及び第3オペランドは、それぞれ、汎用レジスタR1及びR3のビット位置32-63にある。第3オペランドの32ビットの全てが、右シフトに関与する。SRLGの場合は、第1及び第3オペランドは、それぞれ、汎用レジスタR1及びR3のビット位置0-63にある。第3オペランドの64ビットの全てが、右シフトに関与する。SRL、SRLG、又はSRLKの場合、ビット位置63から外にシフトされたビットは検査されず、失われる。左側の空いたビット位置には0が与えられる。条件コード:コードは変更されないままである。プログラム例外:操作例外SLRK、distinct-operandsファシリティがインストールされていない場合SUBTRACTRR、RRE、RRF、RX、RXY形式命令がコンピュータシステムにより実行されると、S、SG、SGF、SGFR、SGR、SR、及びSYの場合は、第1オペランドから第2オペランドが減算され、差が第1オペランド位置に入れられる。SGRK及びSRKの場合は、第2オペランドから第3オペランドが減算され、差が第1オペランド位置に入れられる。S、SR、SRK、及びSYの場合は、オペランドと差は、32ビットの符号付き2進整数として扱われる。SG、SGR、及びSGRKの場合は、それらは、64ビットの符号付き2進整数として扱われる。SGFR及びSGFの場合は、第2オペランドは、32ビットの符号付き2進整数として扱われ、第1オペランドと差は、64ビットの符号付き2進整数として扱われる。オーバーフローが発生すると、符号ビット位置への繰り上がりを許容し、符号ビット位置からの繰り上がりは無視することによって、結果が取得され、条件コード3が設定される。固定小数点オーバーフローマスクが1のときは、固定小数点オーバーフローに関するプログラム割り込みが発生する。Sの変位は、12ビットの符号なし2進整数として扱われる。SY、SG、及びSGFの変位は、20ビットの符号付き2進整数として扱われる。結果として得られる条件コード:0結果が0であり、オーバーフローは発生しない1結果が0より小さく、オーバーフローは発生しない2結果が0より大きく、オーバーフローは発生しない3オーバーフロープログラム例外:アクセス例外フェッチ、S、SY、SG、及びSGFのオペランド2のみ固定小数点オーバーフロー例外操作例外SY、長変位ファシリティがインストールされていない場合;SRK、SGRK、distinct-operandsファシリティがインストールされていない場合プログラミング上の注意:1.SR及びSGRの場合は、R1とR2が同じレジスタを指定するとき、この減算はそのレジスタの内容を消去することと同じである。2.最大の負の数値から同じ値を減算すると、結果は0になり、オーバーフローは発生しない。SUBTRACTLOGICALRR、RRE、RRF、RX、RXY形式、SUBTRACTLOGICALIMMEDIATERIL形式命令がコンピュータシステムにより実行されると、SUBTRACTLOGICALSL、SLG、SLGF、SLGFR、SLGR、SLR、SLY及びSUBTRACTLOGICALIMMEDIATEの場合は、第1オペランドから第2オペランドが減算され、差が第1オペランド位置に入れられる。SUBTRACTLOGICALSLGRK及びSLRKの場合は、第2オペランドから第3オペランドが減算され、差が第1オペランド位置に入れられる。SUBTRACTLOGICALSL、SLR、SLRK、及びSLY及びSUBTRACTLOGICALIMMEDIATESLFIの場合は、オペランドと差は、32ビットの符号なし2進整数として扱われる。SUBTRACTLOGICALSLG、SLGR、及びSLGRKの場合は、それらは、64ビットの符号なし2進整数として扱われる。SUBTRACTLOGICALSLGFR,SLGF及びSUBTRACTLOGICALIMMEDIATESLGFIの場合は、第2オペランドは、32ビットの符号なし2進整数として扱われ、第1オペランドと差は、64ビットの符号なし2進整数として扱われる。SLの変位は、12ビットの符号なし2進整数として扱われる。SLY、SLG、及びSLGFの変位は、20ビットの符号付き2進整数として扱われる。結果として得られる条件コード0--1結果は0でなく、繰り下がりがある2結果は0であり、繰り下がりはない3結果が0でなく、繰り下がりはないプログラム例外:アクセス例外フェッチ、SL、SLY、SLG、及びSLGFのオペランド2のみ操作例外SLY、長変位ファシリティがインストールされていない場合;SLFI及びSLGFI、extendedimmediateファシリティがインストールされていない場合;SLRK及びSLGRK、distinct-operandsファシリティがインストールされていない場合プログラミング上の注意:1.論理減算は、第2オペランドの1の補数と値1とを、第1オペランドに加算することによって行われる。第2オペランドの2の補数の代わりに、1の補数と値1を使用するため、第2オペランドが0のときは繰り上がりが生じる。2.SUBTRACTLOGICALがSUBTRACTと異なるのは、条件コードの意味、及びオーバーフローについての割り込みが発生しないという点のみである。3.差が0のときは、常に、SLGR、SLGFR、SLG、及びSLGFではビット位置0からの、又は、SLR、SL、及びSLYではビット位置32からの繰り上がりが生じ、従って、繰り下がりはない。4.SUBTRACTLOGICALについての条件コード設定は、繰り上がりの有無を示すものと解釈することもできる。POPULATIONCOUNT命令:以下は、PopulationCount命令の一例である:POPULATIONCOUNTRRE形式命令がコンピュータシステムにより実行されると、汎用レジスタR2の8バイトの各々の1のビット数のカウントが、汎用レジスタR1の対応するバイトに入れられる。汎用レジスタR1の各バイトは、0-8の範囲の8ビットの2進整数である。結果として得られる条件コード:0結果は0である1結果は0でない2--3--プログラム例外:操作例外population-countファシリティがインストールされていない場合プログラミング上の注意:1.条件コードは、汎用レジスタR1、R2の全ての64ビットに基づいて設定される。汎用レジスタ内の1のビット総数は、以下に示すようにして計算することができる。この例では、汎用レジスタ15はカウントされたビット数を含み、汎用レジスタ15内の1のビット総数を含む結果は、汎用レジスタ8に入れられる。汎用レジスタ9は作業用レジスタとして使用され、完了時の残差値を含む。2.POPCNT命令の結果が0になる可能性が高い場合には、プログラムは、分岐命令を挿入して、POPCNTによって設定される条件コードに基づいた加算及びシフト操作を省くことができる。3.プログラミング上の注意2に示されたものと同様の技術を使用して、第2オペランドのワード、ハーフワード、又は非連続なバイトの1のビット総数を求めることができる。一実施形態においては、図15及び図16を参照すると、インターロックされたメモリオペランドを含む算術/論理命令608が実行され、この算術/論理命令は、オペコードフィールドOPと、第1のレジスタ内の第1オペランドを指定する第1のレジスタフィールドR1と、メモリ内の第2オペランドの位置を指定する第2レジスタを指定する第2レジスタフィールとB2と、第3のレジスタを指定する第3のレジスタフィールドR3とを含み、算術/論理命令の実行は:プロセッサにより、第2のレジスタによって指定されるメモリ内の位置から第2オペランドを取得する601ことであって、第2オペランドはある値一実施形態において、この値は、一時ストアに保存すること607ができる、取得することと、第3のレジスタから第3オペランドを取得すること602と、取得した第2オペランド及び取得した第3オペランドに基づいて、オペコードが定義した算術演算又は論理演算を行って、結果を生成する603ことと、生成した結果をメモリ内の位置に格納する604ことと、取得した第2オペランドの値一例として、一時ストアに保存しておいた取得した第2オペランドの値を第1のレジスタに保存すること605とを含み、この値は、命令の実行により変更されない。一実施形態においては、条件コードが保存され606、条件コードは、結果が0であること、又は結果が0でないことを示す。一実施形態においては、オペコードが定義した算術演算652は、算術又は論理加算ADDであり、オペコードが定義した論理演算は、論理積AND、排他的論理和EXCLUSIVE-OR、又は論理和ORのうちのいずれか1つであり、実行は、論理演算の結果が負であることに応答して、結果が負であることを示す条件コードを保存することと、論理演算の結果が正であることに応答して、結果が正であることを示す条件コードを保存することと、論理演算の結果がオーバーフローであることに応答して、結果がオーバーフローであることを示す条件コードを保存することとを含む。一実施形態においては、オペコードによりオペランドのサイズが指定され、1つ又は複数の第1のオペコードは、32ビットのオペランドを指定し、1つ又は複数の第2のオペコードは、64ビットのオペランドを指定する。一実施形態においては、算術/論理命令608は、2つの別個のオペコードフィールドOP、OP、第1の変位フィールドDH2及び第2の変位フィールドDL2から成るオペコードをさらに含み、メモリ内の位置は、第2のレジスタの内容を符号付き変位値に加算することによって決定され、符号付き変位値は、第2の変位フィールドに連結された第1の変位フィールドの符号拡張された値を含む。一実施形態においては、実行は、オペコードが第1のオペコードであり、第2オペランドが32ビット境界上にないことに応答して、指定例外を発生させること651と、オペコードが第2のオペコードであり、第2オペランドが64ビット境界上にないことに応答して、指定例外を発生させることとをさらに含む。一実施形態においては、プロセッサは、マルチプロセッサシステム内のプロセッサであり、実行はさらに、第2オペランドを取得することとが、第2オペランドを取得することと、結果をメモリ内の第2の位置に格納することとの間に、マルチプロセッサシステムの他のプロセッサがメモリ内の位置にアクセスできないようにすることと、生成された結果の格納時に、マルチプロセッサシステムの他のプロセッサがメモリ内の位置にアクセスするのを可能にすることを含む。本発明の好ましい実施形態がここに示され、説明されたが、本発明は、ここで開示される精密な構成に限定されるものではないこと、及び、添付の特許請求の範囲に定められる本発明の範囲内にある全ての変更及び修正に対する権利が保持されることを理解すべきである。"