JP5657074B2 - 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ - Google Patents
命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ Download PDFInfo
- Publication number
- JP5657074B2 JP5657074B2 JP2013162972A JP2013162972A JP5657074B2 JP 5657074 B2 JP5657074 B2 JP 5657074B2 JP 2013162972 A JP2013162972 A JP 2013162972A JP 2013162972 A JP2013162972 A JP 2013162972A JP 5657074 B2 JP5657074 B2 JP 5657074B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- instruction
- operand
- bit
- general
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
Description
命令が指定した量だけソース・オペランドをローテートさせることと、
ローテートされたソース・オペランドの選択された部分をターゲット・オペランドの選択された部分に挿入することと、
を含むROTATE THEN INSERT SELECTED BITS関数である。
「3モード・アドレッシング(Trimodal addressing)」は、24ビット・アドレッシング・モード、31ビット・アドレッシング・モード、及び64ビット・アドレッシング・モードの間で切り換える能力を指す。この切り換えは、以下により行うことができる。
:即ち、
・従来の命令BRANCH AND SAVE AND SET MODE及びBRANCH AND SET MODE。これらの命令はどちらも、R2汎用レジスタのビット63が1である場合、64ビット・アドレッシング・モードを設定する。ビット63が0である場合には、これらの命令は、レジスタのビット32が0又は1である場合、それぞれ、24ビット・アドレッシング・モード又は31ビット・アドレッシング・モードを設定する。
・新しい命令SET ADDRESSING MODE(SAM24、SAM31、及びSAM64)。この命令は、命令コードの決定に従って、24ビット・アドレッシング・モード、31ビット・アドレッシング・モード、及び64ビット・アドレッシング・モードを設定する。
3モード・アドレッシングは、以下のものを除き、一般命令において論理ストレージ・アドレスを扱う方法に対して影響を与えるだけである。:即ち、
・命令BRANCH AND LINK、BRANCH AND SAVE、BRANCH AND SAVE AND SET MODE、BRANCH AND SET MODE、及びBRANCH RELATIVE AND SAVEは、24ビット又は31ビット・アドレッシング・モードでは、ESA/390の場合と同様に、汎用レジスタR1のビット位置32−39に情報を入れ、又は、64ビット・アドレッシング・モードでは、これらのビット位置にアドレス・ビットを入れる。新しい命令BRANCH RELATIVE AND SAVE LONGも同じことを行う。
・命令BRANCH AND SAVE AND SET MODE及びBRANCH AND SET MODEは、64ビット・アドレッシング・モードでは、汎用レジスタR1のビット位置63に1を入れる。24ビット又は31ビット・モードでは、BRANCH AND SAVE AND SET MODEは、ビット63を0に設定し、BRANCH AND SET MODEは、このビットを変更しないままにする。
・特定の命令は、24ビット又は31ビット・アドレッシング・モードでは、汎用レジスタのビット0−31を変更しないままにするが、64ビット・アドレッシング・モードでは、これらのビット内でアドレス又は長さ情報を配置又は更新する。これらの命令は、ページ7−7の「プログラミング上の注意1」に列挙されており、モーダル命令(modal instruction)と呼ばれることもある。
汎用レジスタのビット0−31への影響
汎用レジスタのビット0−31は、2つのタイプの命令により変更される。第1のタイプは、命令が64ビット・アドレッシング・モードで実行されるときのモーダル命令である(前のセクションを参照されたい)。第2のタイプは、アドレッシング・モードに関係なく、64ビットの結果オペランドを単一の汎用レジスタに入れる命令、又は、128ビットの結果オペランドを偶数−奇数対の汎用レジスタに入れる命令である。第2のタイプの命令の大部分は、ニーモニック中の「G」のみ又は「GF」により示される。第2のタイプの全ての命令を「Gタイプ」命令と呼ぶこともある。プログラムが64ビット・アドレッシング・モード(大容量GPRモード)で実行されておらず、Gタイプ命令も含まない場合、そのプログラムは、いずれの汎用レジスタのビット0−31も変更することができない(小容量GPRモード)。幾つかの実施形態においては、アプリケーション・プログラムの一部分が小容量GPRモードにあり、別の部分が大容量GPRモードにあってもよい。一実施形態においては、特定の命令が小容量GPRモード命令であり、他の命令が大容量GPRモード命令であってもよく、ここでコンピュータのモードは、該コンピュータが小容量GPRモード命令を実行しているか、又は、大容量GPRモード命令を実行しているかによって決まる。
コンピュータ・システムは、主ストレージ内の情報、並びに、アドレッシング、保護、参照、及び変更の記録を含む。アドレッシングの幾つかの態様は、アドレスの形式、アドレス空間の概念、種々のタイプのアドレス、及び1つのタイプのアドレスを別のタイプのアドレスに変換する方法を含む。主ストレージの一部は、永続的に割り当てられた記憶位置を含む。主ストレージは、システムに、データの直接アドレス指定可能な高速アクセス・ストレージを与える。データ及びプログラムを処理できるようになる前に、(入力装置から)データ及びプログラムの両方を主ストレージにロードしなければならない。
典型的には、CPUの動作は、ストレージ内の命令により制御され、これらの命令は、ストレージ・アドレスの昇順に従って左から右へ一度に1つずつ順に実行される。この順次操作は、分岐、LOAD PSW、割り込み、SIGNAL PROCESSORの指令、又は手作業の介入によって変更され得る。
・実行される動作を指定するオペレーション・コード(オペコード)
・随意的に、関与するオペランドの指定を含むことが好ましい。
1.簡略表記法を使用して完全なアドレスを指定する、
2.汎用レジスタをオペランドとして用いる命令を使用して、アドレス操作を行う、
3.命令ストリームを変更することなく、プログラム手段によりアドレスを変更する、
4.他のプログラムから受け取ったアドレスを直接使用して、データ域の記憶位置に関係なく操作を行う、
ことが可能になる。
・RISは、レジスタ対即値操作及びストレージ操作を示す。
・RRSは、レジスタ間操作及びストレージ操作を示す。
・SILは、16ビットの即値フィールドを有するストレージ対即値操作を示す。
・24ビット・アドレッシング・モードでは、どちらの命令も、汎用レジスタR1のビット位置40−63に戻りアドレスを入れ、そのレジスタのビット0−31は変わらないままである。BRANCH AND LINKは、汎用レジスタR1のビット位置32−39に、命令長コードと、現行PSWからの条件コード及びプログラム・マスクを入れる。BRANCH AND SAVEは、これらのビット位置に0を入れる。
・31ビット・アドレッシング・モードでは、どちらの命令も、汎用レジスタR1のビット位置33−63に戻りアドレスを入れ、ビット位置32に1を入れ、レジスタのビット0−31は変わらないままである。
・64ビット・アドレッシング・モードでは、どちらの命令も、汎用レジスタR1のビット位置0−63に戻りアドレスを入れる。
・どのアドレッシング・モードにおいても、どちらの命令も現行アドレッシング・モードの制御下で分岐アドレスを生成する。これらの命令は、分岐アドレスのビット0−63をPSWのビット位置64−127に入れる。RR形式では、命令のR2フィールドが0であるときは、どちらの命令も分岐を行わない。
・BRANCH AND SAVE AND SET MODEは、汎用レジスタR1の内容をBRANCH AND SAVEの場合と同じ設定にする。さらに、この命令は、拡張アドレッシング・モード・ビット、即ちPSWのビット31を、レジスタのビット位置63に入れる。
・BRANCH AND SET MODEは、R1が0以外のときは、以下のことを行う。24ビット又は31ビット・モードでは、この命令は、PSWのビット32を汎用レジスタR1のビット位置32に入れ、レジスタのビット0−31及び33−63は変更しない。このレジスタが命令アドレスを含む場合、レジスタのビット63は0でなければならないという点に留意されたい。64ビット・モードでは、この命令は、PSWのビット31(1つ)を汎用レジスタ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つのクラスにグループ化される。
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.CIPHER MESSAGE、CIPHER MESSAGE WITH CHAINING、COMPUTE INTERMEDIATE MESSAGE DIGEST、COMPUTE LAST MESSAGE DIGEST、又はCOMPUTE MESSAGE AUTHENTICATION CODEの実行が試みられ、汎用レジスタ0のビット57−63における機能コードは、未割り当ての又はインストールされていない機能コードを含む。
11.CIPHER MESSAGE又はCIPHER MESSAGE WITH CHAININGの実行が試みられ、R1又はR2フィールドは、奇数番号のレジスタ又は汎用レジスタ0を指示する。
12.CIPHER MESSAGE、CIPHER MESSAGE WITH CHAINING、COMPUTE INTERMEDIATE MESSAGE DIGEST、又はCOMPUTE MESSAGE AUTHENTICATION CODEの実行が試みられ、第2オペランドの長さは、指定された関数のデータ・ブロックのサイズの倍数ではない。この指定例外条件は、クエリ関数に適用されない。
13.COMPARE AND FORM CODEWORDの実行が試みられ、汎用レジスタ1、2、及び3は最初に偶数値を含んでいない。
32.COMPARE AND SWAP AND STOREの実行が試みられ、かつ、次の条件のいずれかが存在する。:
・機能コードが未割り当ての値を指定する。
・格納特性が未割り当ての値を指定する。
・機能コードは0であり、第1オペランドはワード境界上に指定されない。
・機能コードは1であり、第1オペランドはダブルワード境界上に指定されない。
・第2オペランドは、格納値のサイズに対応する整数境界上に指定されない。
33.COMPARE LOGICAL LONG UNICODE又はMOVE LONG UNICODEの実行が試みられ、汎用レジスタR1+1又はR3+1のいずれの内容も、偶数のバイト数を指定しない。
34.COMPARE LOGICAL STRING、MOVE STRING、又はSEARCH STRINGの実行が試みられ、汎用レジスタ0のビット32−55が全て0ではない。
35.COMPRESSION CALLの実行が試みられ、汎用レジスタ0のビット48−51が、値0000及び0110−1111(2進数)のいずれかを有する。
36.COMPUTE INTERMEDIATE MESSAGE DIGEST、COMPUTE LAST MESSAGE DIGEST、又はCOMPUTE MESSAGE AUTHENTICATION CODEの実行が試みられ、次のいずれかが真である。:
・R2フィールドが、奇数番号のレジスタ又は汎用レジスタ0を指定する。
・汎用レジスタ0のビット56が0ではない。
37.CONVERT HFP TO BFP、CONVERT TO FIXED(BFP又はHFP)、又はLOAD FP INTEGER(BFP)の実行が試みられ、M3フィールドが有効な修飾子を指定していない。
38.DIVIDE TO INTEGERの実行が試みられ、M4フィールドが有効な修飾子を指定していない。
39.EXECUTEの実行が試みられ、ターゲット・アドレスが奇数である。
40.EXTRACT STACKED STATEの実行が試みられ、汎用レジスタR2のビット位置56−63のコードは、ASN−and−LX−reuseファシリティがインストールされていない場合に4より大きく、或いは、このファシリティがインストールされている場合に5より大きい。
41.FIND LEFTMOST ONEの実行が試みられ、R1フィールドが、奇数番号のレジスタを指定する。
42.INVALIDATE DAT TABLE ENTRYの実行が試みられ、汎用レジスタR2のビット44−51が全て0ではない。
43.LOAD FPCの実行が試みられ、FPCレジスタ内のサポートされていないビットに対応する第2オペランドの1つ又は複数のビットが1である。
44.LOAD PAGE−TABLE−ENTRY ADDRESSの実行が試みられ、命令のM4フィールドが、0000−0100(2進数)以外のいずれかの値を含む。
45.LOAD PSWの実行が試みられ、第2オペランド・アドレスにおけるダブルワードのビット12が0である。この例外が発生するかどうかは、モデルによって決まる。
46.MONITOR CALLの実行が試みられ、命令のビット位置8−11が0を含まない。
47.MOVE PAGEの実行が試みられ、汎用レジスタ0のビット位置48−51が0を含まないか、又は、レジスタのビット52と53が両方とも1である。
48.PACK ASCIIの実行が試みられ、L2フィールドが31より大きい。
49.PACK UNICODEの実行が試みられ、L2フィールドが63より大きいか、又は偶数である。
50.PERFORM FLOATING POINT OPERATIONの実行が試みられ、汎用レジスタ0のビット32が0であり、ビット33−63の1つ又は複数のフィールドが無効であるか、又はインストールされていない機能を指定する。
51.PERFORM LOCKED OPERATIONの実行が試みられ、次のいずれかが真である。:
・汎用レジスタ0のTビット、即ちビット55が0であり、レジスタのビット56−63の機能コードが無効である。
・汎用レジスタ0のビット32−54が全て0ではない。
・アクセス・レジスタ・モードにおいて、ALETを含むパラメータ・リストを使用させる機能コードについて、R3フィールドが0である。
52.PERFORM TIMING FACILITY FUNCTIONの実行が試みられ、次のいずれかが真である。:
・汎用レジスタ0のビット56が0ではない。
・汎用レジスタ0のビット57−63が、未割り当ての又はインストールされていない機能コードを指定する。
53.PROGRAM TRANSFER又はPROGRAM TRANSFER WITH INSTANCEの実行が試みられ、次の全てが真である。:
・PSWの拡張アドレッシング・モード・ビットが0である。
・命令のR2フィールドが指定する汎用レジスタ内の基本アドレッシング・モード・ビット、即ちビット32が0である。
・同じレジスタ内の命令アドレスのビット33−39が全て0ではない。
54.RESUME PROGRAMの実行が試みられ、次のいずれかが真である。:
・現行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.SEARCH STRING UNICODEの実行が試みられ、汎用レジスタ0のビット32−47が全て0ではない。
56.SET ADDRESS SPACE CONTROL、又はSET ADDRESS SPACE CONTROL FASTの実行が試みられ、第2オペランド・アドレスのビット52及び53が両方とも0ではない。
57.SET ADDRESSING MODE(SAM24)の実行が試みられ、PSW内の未更新の命令アドレスのビット0−39、PSWのビット64−103が、全て0ではない。
58.SET ADDRESSING MODE(SAM31)の実行が試みられ、PSW内の未更新の命令アドレスのビット0−32、PSWのビット64−96が、全て0ではない。
59.SET CLOCK PROGRAMMABLE FIELDの実行が試みられ、汎用レジスタ0のビット32−47が全て0ではない。
60.SET FPCの実行が試みられ、FPCレジスタ内のサポートされていないビットに対応する第1オペランドの1つ又は複数のビットが1である。
61.STORE SYSTEM INFORMATIONの実行が試みられ、汎用レジスタ0内の機能コードが有効であり、次のいずれかが真である。:
・汎用レジスタ0のビット36−55及び汎用レジスタ1のビット32−47が全て0ではない。
・第2オペランド・アドレスが、4Kバイト境界上に位置合わせされない。
62.TRANSLATE TWO TO ONE又はTRANSLATE TWO TO TWOの実行が試みられ、汎用レジスタR1+1における長さは偶数のバイトを指定していない。
63.UNPACK ASCIIの実行が試みられ、L1フィールドが31より大きい。
64.UNPACK UNICODEの実行が試みられ、L1フィールドが63より大きいか、又は偶数である。
65.UPDATE TREEの実行が試みられ、汎用レジスタ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)のために例外が発生し、LOAD PSW、LOAD PSW EXTENDED、PROGRAM RETURN、又は割り込みによりその例外が導入された場合は、ILCは0である。例外がSET ADDRESSING MODE(SAM24、SAM31)により導入された場合は、ILCは1であり、或いは、SET ADDRESSING MODEがEXECUTEのターゲットであった場合、ILCは2である。例外が、SET SYSTEM MASK又はSTORE THEN OR SYSTEM MASKにより導入された場合、ILCは2である。
・算術又は論理演算のソース・オペランドとして。
・算術又は論理演算のターゲット・オペランドとして。
・メモリ・オペランドのアドレスとして(基底レジスタ、指標レジスタ、又は直接)。
・メモリ・オペランドの長さとして。
・命令との間で機能コード又は他の情報を提供するといった他の使用。
・プログラム設計(モジュラー・プログラミングのように単純な)は、基底レジスタの過剰使用を最小限にするのに役立った。
・コンパイラは、レジスタの動的な再割り当てを管理するために、レジスタの「色分け」のような技術を使用している。
・以下を用いて、基底レジスタの使用を減らすことができる。:即ち、
・(命令内に)即値定数を有するよりより新しい算術及び論理命令。
・相対−即値オペランド・アドレスを有するより新しい命令。
・長変位を有するより新しい命令。
CPUが32ビット・モードにあるときに64ビットの汎用レジスタの上位ワード(最上位の32ビット)を利用するために、新しい一連の汎用命令(つまり、アプリケーション・プログラムが利用可能な命令)が導入される。プログラムは、新しい命令を利用し、引き続き下位ワードに制限される従来の命令に加えて、GPRの隠れた(これまで利用可能でなかった)上位ワードにアクセスすることができる。
・ADD HIGH(AHHHR、AHHLR)
・ADD IMMEDIATE HIGH(AIH)
・ADD LOGICAL HIGH(ALHHHR、ALHHLR)
・ADD LOGICAL WITH SIGNED IMMEDIATE HIGH(ALSIH、ALSIHN)
・BRANCH RELATIVE ON COUNT HIGH(BRCTH)
・COMPARE HIGH(CHHR、CHLR、CHF)
・COMPARE IMMEDIATE HIGH(CIH)
・COMPARE LOGICAL HIGH(CLHHR、CLHLR、CLHF)
・COMPARE LOGICAL IMMEDIATE HIGH(CLIH)
・LOAD BYTE HIGH(LBH)
・LOAD HALFWORD HIGH(LHH)
・LOAD HIGH(LFH)
・LOAD LOGICAL CHARACTER HIGH(LLCH)
・LOAD LOGICAL HALFWORD HIGH(LLHH)
・ROTATE THEN INSERT SELECTED BITS HIGH(RISBHG)
・ROTATE THEN INSERT SELECTED BITS LOW(RISBLG)
・STORE CHARACTER HIGH(STCH)
・STORE HALFWORD HIGH(STHH)
・STORE HIGH(STFH)
・SUBTRACT HIGH(SHHHR、SHHLR)
・SUBTRACT LOGICAL HIGH(SLHHHR、SLHHLR)
である。
・LOAD AND ADD(LAA、LAAG)
・LOAD AND ADD LOGICAL(LAAL、LAALG)
・LOAD AND AND(LAN、LANG)
・LOAD AND EXCLUSIVE OR(LAX、LAXG)
・LOAD AND OR(LAO、LAOG)
・LOAD PAIR DISJOINT(LPD、LPDG)
である。
・LOAD ON CONDITION(LOC、LGOC、LGROC、LROC)
・STORE ON CONDITION(STOC、STGOC)
である。
・ADD(ARK、AGRK)
・ADD IMMEDIATE(AHIK、AGHIK)
・ADD LOGICAL(ALRK、ALGRK)
・ADD LOGICAL WITH SIGNED IMMEDIATE(ALHSIK、ALGHSIK)
・AND(NRK、NGRK)
・EXCLUSIVE OR(XRK、XGRK)
・OR(ORK、OGRK)
・SHIFT LEFT SINGLE(SLAK)
・SHIFT LEFT SINGLE LOGICAL(SLLK)
・SHIFT RIGHT SINGLE(SRAK)
・SHIFT RIGHT SINGLE LOGICAL(SRLK)
・SUBTRACT(SRK、SGRK)
・SUBTRACT LOGICAL(SLRK、SLGRK)
である。
次のものは、上位ワード・ファシリティを用いることができる例示的な命令である。
命令がコンピュータ・システムにより実行されると、第2オペランドが第3オペランドに加算され、和が第1オペランド位置に入れられる。オペランドと和は、32ビットの符号付き2進整数として扱われる。第1及び第2オペランドは、それぞれ、汎用レジスタR1及びR2のビット位置0−31にあり、汎用レジスタR1のビット32−63は変更されず、汎用レジスタR2のビット32−63は無視される。AHHHRオペコードの場合、第3オペランドは、汎用レジスタR3のビット位置0−31にあり、レジスタのビット32−63は無視される。AHHLRオペコードの場合、第3オペランドは、汎用レジスタR3のビット位置32−63にあり、レジスタのビット0−31は無視される。オーバーフローが発生すると、符号ビット位置へのいずれの繰り上がりも許容し、符号ビット位置からのいずれの繰り上がりも無視することにより、結果が得られ、条件コード3が設定される。固定小数点オーバーフロー・マスクが1の場合、固定小数点オーバーフローに関するプログラム割り込みが発生する。
結果として得られる条件コード:
0 結果は0であり、オーバーフローは発生しない
1 結果は0より小さく、オーバーフローは発生しない
2 結果が0より大きく、オーバーフローは発生しない
3 オーバーフロー
プログラム例外:
・固定小数点オーバーフロー例外
・操作例外(上位ワード・ファシリティがインストールされない場合)
命令がコンピュータ・システムにより実行されると、第2オペランドが第1オペランドに加算され、和が第1オペランド位置に入れられる。オペランドと和は、32ビットの符号付き2進整数として扱われる。第1オペランドは、汎用レジスタR1のビット位置0−31にあり、レジスタのビット32−63は変更されない。オーバーフローが発生すると、符号ビット位置へのいずれの繰り上がりも許容し、符号ビット位置からのいずれの繰り上がりも無視することによって、結果が得られ、条件コード3が設定される。固定小数点オーバーフロー・マスクが1の場合、固定小数点オーバーフローに関するプログラム割り込みが発生する。
結果として得られる条件コード:
0 結果は0であり、オーバーフローは発生しない
1 結果は0より小さく、オーバーフローは発生しない
2 結果が0より大きく、オーバーフローは発生しない
3 オーバーフロー
プログラム例外:
・固定小数点オーバーフロー例外
・操作例外(上位ワード・ファシリティがインストールされない場合)
命令がコンピュータ・システムにより実行されると、第2オペランドが第3オペランドに加算され、和が第1オペランド位置に入れられる。オペランドと和は、32ビットの符号なし2進整数として扱われる。第1及び第2オペランドは、それぞれ、汎用レジスタR1及びR2のビット位置0−31にあり、汎用レジスタR1のビット32−63は変更されず、汎用レジスタR2のビット32−63は無視される。ALHHHRオペコードの場合、第3オペランドは、汎用レジスタR3のビット0−31にあり、レジスタのビット32−63は無視される。ALHHLRオペコードの場合、第3オペランドは、汎用レジスタR3のビット32−63にあり、レジスタのビット0−31は無視される。
結果として得られる条件コード:
0 結果は0であり、繰り上がりはない
1 結果は0でなく、繰り上がりはない
2 結果は0であり、繰り上がる
3 結果は0でなく、繰り上がる
プログラム例外:
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、第2オペランドが第1オペランドに加算され、和が第1オペランド位置に入れられる。第1オペランドと和は、32ビットの符号なし2進整数として扱われる。第2オペランドは、32ビットの符号付き2進整数として扱われる。第1オペランドは、汎用レジスタR1のビット0−31にあり、レジスタのビット32−63は変更されない。
結果として得られる条件コード:
ALSIHの場合、コードは次のように設定される。:
0 結果は0であり、繰り上がりはない
1 結果は0でなく、繰り上がりはない
2 結果は0であり、繰り上がる
3 結果は0でなく、繰り上がる
ALSIHNの場合、コードは変更されないままである。
プログラム例外:
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、第1オペランドから1が減算され、結果が第1オペランド位置に入れられる。BRANCH RELATIVE ON COUNT(BRCTオペコード)の場合、第1オペランド及び結果は、汎用レジスタR1のビット32−63にある32ビットの2進整数として扱われ、オーバーフローは無視され、レジスタのビット0−31は変更されない。BRANCH RELATIVE ON COUNT HIGH(BRCTHオペコード)の場合、第1オペランド及び結果は、汎用レジスタR1のビット0−31にある32ビットの2進整数として扱われ、オーバーフローは無視され、レジスタのビット32−63は変更されない。BRANCH RELATIVE ON COUNT(BRCTGオペコード)の場合、第1オペランド及び結果は、64ビットの2進整数として扱われ、オーバーフローは無視される。結果が0のときには、更新済み命令アドレスを使用して通常の命令順序に従って処理が進められる。結果が0でない場合は、現行PSWの中の命令アドレスが、分岐アドレスに置き換えられる。I2フィールドの内容が、分岐アドレスを生成するために命令のアドレスに加えられるハーフワードの数を指定する符号付き2進整数である。
条件コード:コードは変更されないままである。
プログラム例外:
・操作例外(BRCTH、上位ワード・ファシリティがインストールされていない場合)
1.操作は、分岐アドレスを指定する方法を除いて、BRANCH ON COUNT命令のものと同じである。
2.2進数減算の結果は符号付きの場合でも又は符号なしの場合でも同じになるため、第1オペランド及び結果は、符号付き2進整数又は符号なし2進整数のどちらと見なすこともできる。
3.初期カウントが1の場合、結果は0であり、分岐は実行されない。初期カウントが0の場合、結果は−1であり、分岐が実行される。初期カウントが−1の場合、結果は−2であり、分岐が実行される。以下同様である。ループ内では、結果が再び0に戻るまでは、命令が実行されるたびに分岐が実行される。
BRCTの場合は、数値範囲上の理由で、初期カウントが−231なら、結果は正の値231−1になり、又は、BRCTGの場合は、初期カウントが−263なら、結果は正の値263−1になることに留意されたい。
4.命令が、実行(execute)タイプ命令のターゲットであるとき、分岐は、ターゲット・アドレスを基準とする相対的なものになる。
命令がコンピュータ・システムにより実行されると、第1オペランドが第2オペランドと比較され、その結果が条件コードで示される。これらのオペランドは、32ビットの符号付き2進整数として扱われる。第1オペランドは、汎用レジスタR1のビット位置0−31にあり、レジスタのビット位置32−63は無視される。COMPARE HIGH(CHHRオペコード)の場合、第2オペランドは、汎用レジスタR2のビット位置0−31にあり、レジスタのビット位置32−63は無視される。COMPARE HIGH(CHLRオペコード)の場合、第2オペランドは、汎用レジスタR2のビット位置32−63にあり、レジスタのビット位置0−31は無視される。CHFに関する変位は、20ビットの符号付き2進整数として扱われる。
結果として得られる条件コード:
0 両オペランドは等しい
1 第1オペランドの方が小さい
2 第1オペランドの方が大きい
3 −−
プログラム例外:
・アクセス例外(CHFのオペランド2のみ)
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、第1オペランドが第2オペランドと比較され、その結果が条件コードで示される。これらのオペランドは、32ビットの符号なし2進整数として扱われる。第1オペランドは、汎用レジスタR1のビット位置0−31にあり、レジスタのビット位置32−63は無視される。COMPARE LOGICAL HIGH(CLHHRオペコード)の場合、第2オペランドは、汎用レジスタR2のビット位置0−31にあり、レジスタのビット位置32−63は無視される。COMPARE LOGICAL HIGH(CLHLRオペコード)の場合、第2オペランドは、汎用レジスタR2のビット位置32−63にあり、レジスタのビット位置0−31は無視される。CLHFに関する変位は、20ビットの符号付き2進整数として扱われる。
結果として得られる条件コード:
0 両オペランドは等しい
1 第1オペランドの方が小さい
2 第1オペランドの方が大きい
3 −−
プログラム例外:
・アクセス例外(CLHFのオペランド2のみ)
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、第2オペランドは符号拡張され、第1オペランド位置に入れられる。第2オペランドは、長さが1バイトであり、8ビットの符号付き2進整数として扱われる。第1オペランドは、汎用レジスタR1のビット0−31にある32ビットの符号付き2進整数として扱われ、レジスタのビット32−63は変更されない。変位は、20ビットの符号付き2進整数として扱われる。
条件コード:コードは変更されないままである。
プログラム例外:
・アクセス例外(フェッチ、オペランド2)
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、第2オペランドは符号拡張され、第1オペランド位置に入れられる。第2オペランドは、長さが2バイトであり、16ビットの符号付き2進整数として扱われる。第1オペランドは、汎用レジスタR1のビット0−31にある32ビットの符号付き2進整数として扱われ、レジスタのビット32−63は変更されない。変位は、20ビットの符号付き2進整数として扱われる。
条件コード:コードは変更されないあまである。
プログラム例外:
・アクセス例外(フェッチ、オペランド2)
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、第2オペランドは、変更されずに、第1オペランド位置に入れられる。第2オペランドは32ビットであり、第1オペランドは、汎用レジスタR1のビット0−31にあり、レジスタのビット32−63は変更されない。変位は、20ビットの符号付き2進整数として扱われる。
条件コード:コードは変更されないままである。
プログラム例外:
・アクセス例外(フェッチ、オペランド2)
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、1バイトの第2オペランドが、汎用レジスタR1のビット位置24−31に入れられ、0が、汎用レジスタR1のビット位置0−23に入れられ、汎用レジスタR1のビット位置32−63は変更されない。変位は、20ビットの符号付き2進整数として扱われる。
条件コード:コードは変更されないままである。
プログラム例外:
・アクセス例外(フェッチ、オペランド2)
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、2バイトの第2オペランドが、汎用レジスタR1のビット位置16−31に入れられ、0が、汎用レジスタR1のビット位置0−15に入れられ、汎用レジスタR1のビット位置32−63は変更されない。変位は、20ビットの符号付き2進整数として扱われる。
条件コード:コードは変更されないままである。
プログラム例外:
・アクセス例外(フェッチ、オペランド2)
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、64ビットの第2オペランドが、第5オペランドに指定されたビットの数だけ左にローテートされる。オペランドの左端のビット位置から外にシフトされた各ビットは、オペランドの右端のビット位置に再び入る。ローテートされた第2オペランドの選択されたビットは、第1オペランドの対応するビット位置の内容に置き換わる。ROTATE THEN INSERT SELECTED BITS HIGHの場合、第1オペランドは、汎用レジスタR1のビット0−31にあり、レジスタのビット32−63は変更されない。ROTATE THEN INSERT SELECTED BITS LOWの場合、第1オペランドは、汎用レジスタR1のビット32−63にあり、レジスタのビット0−31は変更されない。第2オペランドは、汎用レジスタR2において変更されないままである。ROTATE THEN INSERT SELECTED BITS HIGHの場合は、各々の左側に2進数の0が付加された、I3フィールド及びI4フィールドのビット3−7(それぞれ、命令のビット位置19−23及び27−31)は、ローテート後に、第1オペランド及び第2オペランドにおける選択されたビット範囲の開始ビット位置及び最終ビット位置(これらを含めた)を指定する6ビットの符号なし2進整数を形成する。最終ビット位置が開始ビット位置より小さいときは、選択されたビット範囲は、ビット31からビット0へ循環する(wrap around)。従って、選択されたビット範囲の開始ビット位置及び最終ビット位置は、常に、0から31までの間になる。ROTATE THEN INSERT SELECTED BITS LOWの場合は、各々の左側に2進数の1が付加された、I3フィールド及びI4フィールドのビット位置3−7は、ローテート後、第1オペランド及び第2オペランドにおける選択されたビット範囲の開始ビット位置及び最終ビット位置(これらを含めた)を指定する6ビットの符号なし2進整数を形成する。最終ビット位置が開始ビット位置より小さいときは、選択されたビット範囲は、ビット63からビット32に循環する。従って、選択されたビット範囲の開始ビット位置及び最終ビット位置は、常に、32から63までの間になる。I5フィールドのビット2−7(命令のビット34−39)は、第2オペランドを左にローテートさせるビット数を指定する符号なし2進整数を含む。I4フィールドのビット0(命令のビット24)は、0−残りのビットの制御(Z)を含む。Zビット制御は、第1オペランドの残りのビットがどのように設定されるかを示す(即ち、あるとしたら、指定された範囲の外にあるビット)。Zビットが0のときは、第1オペランドの残りのビットは変更されない。Zビットが1のときは、第1オペランドの残りのビットは0に設定される。ここで説明された即値フィールドは、次のとおりである。:すなわち、I3フィールドのビット0−2及びI4フィールドのビット1−2(それぞれ、命令のビット16−19及び25−26)は予約されており、0を含む必要がある。そうでない場合には、将来、プログラムが、互換性を有した状態で動作しない可能性がある。I5フィールドのビット0−1(命令のビット32−33)は無視される。
条件コード:コードは変更されないままである。
プログラム例外:
・操作例外(上位ワード・ファシリティがインストールされていない場合)
プログラミング上の注意:
1.I5フィールドのビット2−7は、第2オペランドを左にローテートさせるビット数を指定する符号なし2進整数を含むように定められるが、負の値をコード化し、右へのローテート量を有効に指定するようにすることもできる。
2.第1オペランドは、常に、ローテートされていない形で使用される。R1フィールド及びR2フィールドが同じレジスタを指定するときは、レジスタ内に含まれる値が最初にローテートされ、次いで、ローテート値の選択されたビットが、ローテートされていないレジスタの内容の対応するビットに挿入される。
3.アセンブラ構文においては、ローテート量を含むI5オペランドは随意的であると考えられる。I5フィールドがコード化されていないとき、ローテート量0を意味する。
4.I4フィールドは、0−残りのビットの制御(Z)(ビット0における)と、最終ビット位置の値(ビット2−7における)の両方を含む。例えば、レジスタ7のビット40−43をレジスタ5の対応するビット位置に挿入し(ローテーションなし)、レジスタ5の右半分の残りのビットをゼロにするために、プログラマは、次のようにコード化することができる:即ち、X「80」は、最終ビット位置に付加されてI4フィールドを形成する、0−残りのビットの制御を表す。高レベル・アセンブラ(HLASM)は、それぞれ、RISBHGZ及びRISBLHZの形態の、RISBHG及びRISBLGの0−残りのビットバージョンに対する代替的なニーモニックを提供する。ニーモニックへの「Z」サフィックス付加は、オブジェクト・コードを生成するときに、指定されたI4フィールドが、X「80」の値と論理和演算されることを示す。Zサフィックスを付加したニーモニックを使用する上記に示された例に相当するのは次の通りである。:
5.幾つかのモデルでは、0−残りのビットの制御を1に設定することにより(又は、Zサフィックスを付加したニーモニックを使用することにより)、RISBHG及びRISBLGの改善された性能を達成することができる。
6.条件コードを設定するROTATE THEN INSERT SELECTED BITSとは異なり、ROTATE THEN INSERT SELECTED BITS HIGH及びROTATE THEN INSERT SELECTED BITS LOWは、条件コードを設定しない。
命令がコンピュータ・システムにより実行されると、汎用レジスタR1のビット24−31は、変更されずに、第2オペランド位置に入れられる。第2オペランドの長さは、1バイトである。変位は、20ビットの符号付き2進整数として扱われる。
条件コード:コードは変更されない。
プログラム例外:
・アクセス例外(ストア、オペランド2)
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、汎用レジスタR1のビット16−31が、変更されずに、第2オペランド位置に入れられる。第2オペランドの長さは、2バイトである。変位は、20ビットの符号付き2進整数として扱われる。
条件コード:コードは変更されない。
プログラム例外:
・アクセス例外(ストア、オペランド2)
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、第1オペランドは、変更されずに、第2オペランド位置に入れられる。第1オペランドは、汎用レジスタR1のビット0−31にあり、第2オペランドはストレージ内の32ビットである。変位は、20ビットの符号付き2進整数として扱われる。
条件コード:コードは変更されない。
プログラム例外:
・アクセス例外(ストア、オペランド2)
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、第2オペランドから第3オペランドが減算され、差が第1オペランド位置に入れられる。オペランドと差は、32ビットの符号付き2進整数として扱われる。第1及び第2オペランドは、それぞれ、汎用レジスタR1及びR2のビット0−31にあり、汎用レジスタR1のビット32−63は変更されず、汎用レジスタR2のビット32−63は無視される。SHHHRオペコードの場合は、第3オペランドは、汎用レジスタR3のビット0−31にあり、レジスタのビット32−63は無視される。SHHLRオペコードの場合、第3オペランドは、汎用レジスタR3のビット32−63にあり、レジスタのビット0−31は無視される。オーバーフローが発生する、符号ビット位置へのいずれの繰り上がりも許容し、符号ビット位置からのいずれの繰り上がりも無視することによって、結果が得られ、条件コード3が設定される。
固定小数点オーバーフロー・マスクが1の場合、固定小数点オーバーフローに関するプログラム割り込みが発生する。
結果として得られる条件コード:
0 結果が0であり、オーバーフローは発生しない
1 結果が0より小さく、オーバーフローは発生しない
2 結果が0より大きく、オーバーフローは発生しない
3 オーバーフロー
プログラム例外:
・固定小数点オーバーフロー例外
・操作例外(上位ワード・ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、第2オペランドから第3オペランドが減算され、差が第1オペランド位置に入れられる。オペランドと差は、32ビットの符号なし2進整数として扱われる。第1及び第2オペランドは、それぞれ、汎用レジスタR1及びR2のビット0−31にあり、汎用レジスタR1のビット32−63は変更されず、汎用レジスタR2のビット32−63は無視される。SLHHHRオペコードの場合は、第3オペランドは、汎用レジスタR3のビット位置0−31にあり、レジスタのビット32−63は無視される。SLHHLRオペコードの場合、第3オペランドは、汎用レジスタR3のビット32−63にあり、レジスタのビット0−31は無視される。
結果として得られる条件コード:
0 −−
1 結果は0でなく、繰り下がりがある
2 結果は0であり、繰り下がりはない
3 結果は0でなく、繰り下がりはない
プログラム例外:
・操作例外(上位ワード・ファシリティがインストールされていない場合)
2:コンピュータ・メモリ(高速メモリ)
3:動的アドレス変換(DAT)
4:命令フェッチ・ユニット
5:ロード・ストア・ユニット
6:命令デコード・ユニット
7:変換ルックアサイド・バッファ(TLB)(長期ストレージ媒体)
8:命令実行ユニット
9:キャッシュ
10:ネットワーク
11:高密度ストレージ媒体
21:エミュレートされたホスト・コンピュータ・システム
22:メモリ
23:エミュレーション・ルーチン
27:エミュレーション・プロセッサ
50:コンピュータ・システム
100:システム
101:コンピュータ・システム(ワークステーション)
102:ディスプレイ装置
103:マウス
104:キーボード
105:メモリ(高速メモリ、主ストレージ)
106:プロセッサ(マイクロプロセッサ)
107:長期ストレージ媒体(高密度ストレージ媒体)
108:通信
109:ネットワーク
110:プリンタ/スキャナ
111:プログラム・コード
112:アプリケーション・プログラム
200:データ処理ネットワーク
201、202、203、204、205:ワークステーション
206:クライアント・サーバ(ゲートウェイ・コンピュータ)
207:ネットワーク(インターネット)
208:リモート・サーバ
210、211:ユーザ
303:キャッシュ
305:命令フェッチ・ユニット
306:ディスパッチ・ユニット(デコード/ディスパッチ・ユニット)
307:実行ユニット
308:分岐ユニット
309:アーキテクチャ化レジスタ
310:ロード/ストア・ユニット
311:プログラム・カウンタ
401:他のプロセッサ・ユニット
402、426、455:算術論理演算ユニット(ALU)
403、404、405:レジスタ回路
406:出力レジスタ回路
407:インターフェース論理
408:他のアーキテクチャ化ファシリティ
425:他の回路
427、428、429:入力レジスタ回路
430:出力レジスタ回路
432:分岐履歴テーブル
455:他の要素
463:制御論理
Claims (9)
- 複数の汎用レジスタを有するコンピュータにおいて、プログラムの命令が利用可能な汎用レジスタの有効数を拡張するためにコンピュータが実行する方法であって、前記複数の汎用レジスタ各々は、上位部分と下位部分とを含み、前記命令各々は、オペレーションを特定するオペコードを含むとともに、前記複数の汎用レジスタから選択される、対応するオペランドを保持する汎用レジスタを特定するレジスタ・フィールドを含み、第1のアドレッシング・モードでは、汎用レジスタの下位部分から、該下位部分のサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、第2のアドレッシング・モードでは、汎用レジスタの上位部分および下位部分の組み合わせから、該汎用レジスタのサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、
前記方法は、前記コンピュータが、前記第1のアドレッシング・モードで命令を実行するステップを含み、当該命令を実行するステップは、前記コンピュータが、
第1のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの上位部分のみにアクセスすることが可能に構成されるとして、命令が前記第1のサブセットの命令であることに応答して、対応する汎用レジスタの上位部分のみを含み構成されるオペランドにアクセスするステップと、
第2のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの少なくとも下位部分にアクセスすることが可能に構成されるとして、命令が前記第2のサブセットの命令であることに応答して、対応する汎用レジスタの下位部分を含み構成されるオペランドにアクセスするステップと
を実行することを含む、方法。 - 前記方法は、前記コンピュータが、
上位ワード・ファシリティがインストールされていると判断された場合、前記第1のサブセットの命令の実行を行うステップと、
前記上位ワード・ファシリティがインストールされていない場合、前記第1のサブセットの命令の実行の例外を発生させるステップと
をさらに含む、請求項1に記載の方法。 - 対応する汎用レジスタの上位部分のみを含み構成されるオペランドにアクセスする前記ステップは、対応する汎用レジスタの上位部分からレジスタ・オペランドの全体を取得するステップ、または、対応する汎用レジスタの上位部分にレジスタ・オペランドの全体を格納するステップを含む、請求項1または2に記載の方法。
- 前記第1のサブセットの命令に応答した前記ステップは、2つのオペランドに基づいて、対応するオペコードで定義された関数の演算を実行し、結果を格納するステップを含み、前記対応するオペコードで定義された関数は、2つのオペランドのADD関数、又は2つのオペランドのCOMPARE関数から成る、請求項1〜3のいずれか1項に記載の方法。
- 前記第1のサブセットの命令に応答した前記ステップは、2つのオペランドに基づいて、対応するオペコードで定義された関数の演算を実行し、結果を格納するステップを含み、前記対応するオペコードで定義された関数は、メモリからのオペランドのLOAD関数、又はメモリへのオペランドのSTORE関数から成る、請求項1〜3のいずれか1項に記載の方法。
- 前記第1のサブセットの命令に応答した前記ステップは、2つのオペランドに基づいて、対応するオペコードで定義された関数の演算を実行し、結果を格納するステップを含み、前記対応するオペコードで定義された関数は、
命令が指定した量だけソース・オペランドをローテートさせることと、
前記ローテートされたソース・オペランドの選択された部分をターゲット・オペランドの選択された部分に挿入することと、
を含む、ROTATE THEN INSERT SELECTED BITS関数である、請求項1〜3のいずれか1項に記載の方法。 - 前記汎用レジスタ各々は、64ビットから構成され、前記上位部分は、前記64ビットのうちの上位32ビットから構成され、前記下位部分は、前記64ビットのうちの下位32ビットから構成され、前記第2のサブセットの命令は、対応する汎用レジスタの下位部分のみを含み構成されるオペランドにアクセスするものであり、前記第1のアドレッシング・モードは、24ビット・アドレッシング・モード又は31ビット・アドレッシング・モードの一方であり、前記第2のアドレッシング・モードは、64ビットアドレッシング・モードである、請求項1〜6のいずれか1項に記載の方法。
- 複数の汎用レジスタを有するコンピュータにおいて、プログラムの命令が利用可能な汎用レジスタの有効数を拡張するためのコンピュータ・プログラムであって、前記複数の汎用レジスタ各々は、上位部分と下位部分とを含み、前記命令各々は、オペレーションを特定するオペコードを含むとともに、前記複数の汎用レジスタから選択される、対応するオペランドを保持する汎用レジスタを特定するレジスタ・フィールドを含み、第1のアドレッシング・モードでは、汎用レジスタの下位部分から、該下位部分のサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、第2のアドレッシング・モードでは、汎用レジスタの上位部分および下位部分の組み合わせから、該汎用レジスタのサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、前記コンピュータ・プログラムは、前記コンピュータに、前記第1のアドレッシング・モードで命令を実行するステップを実行させるためのものであり、当該命令を実行するステップは、前記コンピュータが、
第1のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの上位部分のみにアクセスすることが可能に構成されるとして、命令が前記第1のサブセットの命令であることに応答して、対応する汎用レジスタの上位部分のみを含み構成されるオペランドにアクセスするステップと、
第2のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの少なくとも下位部分にアクセスすることが可能に構成されるとして、命令が前記第2のサブセットの命令であることに応答して、対応する汎用レジスタの下位部分を含み構成されるオペランドにアクセスするステップと
を実行することを特徴とする、コンピュータ・プログラム。 - 複数の汎用レジスタを有し、プログラムの命令が利用可能な汎用レジスタの有効数を拡張するためのコンピュータ・システムであって、
前記複数の汎用レジスタ各々は、上位部分と下位部分とを含み、前記命令各々は、オペレーションを特定するオペコードを含むとともに、前記複数の汎用レジスタから選択される、対応するオペランドを保持する汎用レジスタを特定するレジスタ・フィールドを含み、第1のアドレッシング・モードでは、汎用レジスタの下位部分から、該下位部分のサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、第2のアドレッシング・モードでは、汎用レジスタの上位部分および下位部分の組み合わせから、該汎用レジスタのサイズに応じたサイズの、フラットな実効アドレス空間におけるアドレスが形成され、前記コンピュータ・システムは、
メモリと、
前記メモリと通信状態にあるプロセッサであって、メモリから命令をフェッチするための命令フェッチ要素と、フェッチした命令を実行するための1つ又は複数の実行要素とを含む、プロセッサと、
を含み、
前記コンピュータ・システムは、
前記コンピュータが、前記第1のアドレッシング・モードでの命令の実行であって、
第1のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの上位部分のみにアクセスすることが可能に構成されるとして、命令が前記第1のサブセットの命令であることに応答して、対応する汎用レジスタの上位部分のみを含み構成されるオペランドにアクセスすることと、
第2のサブセットが、前記レジスタ・フィールドにより前記汎用レジスタの少なくとも下位部分にアクセスすることが可能に構成されるとして、命令が前記第2のサブセットの命令であることに応答して、対応する汎用レジスタの下位部分を含み構成されるオペランドにアクセスすることとを含む、当該命令の実行を行う
ように構成される、コンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/820735 | 2010-06-22 | ||
US12/820,735 US8914619B2 (en) | 2010-06-22 | 2010-06-22 | High-word facility for extending the number of general purpose registers available to instructions |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011133182A Division JP5379825B2 (ja) | 2010-06-22 | 2011-06-15 | 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013242918A JP2013242918A (ja) | 2013-12-05 |
JP5657074B2 true JP5657074B2 (ja) | 2015-01-21 |
Family
ID=43334493
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011133182A Active JP5379825B2 (ja) | 2010-06-22 | 2011-06-15 | 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ |
JP2013162972A Active JP5657074B2 (ja) | 2010-06-22 | 2013-08-06 | 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011133182A Active JP5379825B2 (ja) | 2010-06-22 | 2011-06-15 | 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ |
Country Status (14)
Country | Link |
---|---|
US (2) | US8914619B2 (ja) |
EP (1) | EP2430521A1 (ja) |
JP (2) | JP5379825B2 (ja) |
KR (1) | KR101464808B1 (ja) |
CN (1) | CN102314333A (ja) |
AU (1) | AU2010355817B2 (ja) |
BR (1) | BRPI1103516B1 (ja) |
CA (1) | CA2786049C (ja) |
IL (1) | IL223587A (ja) |
MX (1) | MX2012014533A (ja) |
RU (1) | RU2562430C2 (ja) |
SG (1) | SG186078A1 (ja) |
WO (1) | WO2011160726A1 (ja) |
ZA (1) | ZA201209644B (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8914619B2 (en) | 2010-06-22 | 2014-12-16 | International Business Machines Corporation | High-word facility for extending the number of general purpose registers available to instructions |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US8468284B2 (en) | 2010-06-23 | 2013-06-18 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification to a guest operating system |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US8572635B2 (en) | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
US9696975B2 (en) * | 2010-09-03 | 2017-07-04 | International Business Machines Corporation | Allocating register halves independently |
US9317285B2 (en) * | 2012-04-30 | 2016-04-19 | Apple Inc. | Instruction set architecture mode dependent sub-size access of register with associated status indication |
US20130339656A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Compare and Replace DAT Table Entry |
US9639369B2 (en) | 2013-11-11 | 2017-05-02 | Apple Inc. | Split register file for operands of different sizes |
US10671391B2 (en) * | 2014-02-25 | 2020-06-02 | MIPS Tech, LLC | Modeless instruction execution with 64/32-bit addressing |
US20150293767A1 (en) * | 2014-04-11 | 2015-10-15 | Fujitsu Limited | Rotating register file with bit expansion support |
CN106663027A (zh) * | 2014-09-03 | 2017-05-10 | 联发科技股份有限公司 | 具有较少不必要寄存器数据存取的模式切换处理方法及相关非临时机器可读介质 |
CN107145334B (zh) * | 2017-04-26 | 2020-10-09 | 龙芯中科技术有限公司 | 常量获取方法、装置、处理器及计算机可读存储介质 |
WO2022067510A1 (zh) * | 2020-09-29 | 2022-04-07 | 华为技术有限公司 | 一种处理器、处理方法及相关设备 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3432532B2 (ja) * | 1992-08-03 | 2003-08-04 | 株式会社日立製作所 | データ処理装置 |
JP2686011B2 (ja) * | 1992-01-27 | 1997-12-08 | 富士通株式会社 | レジスタ制御装置 |
WO1994027215A1 (en) | 1993-05-07 | 1994-11-24 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
US5546557A (en) | 1993-06-14 | 1996-08-13 | International Business Machines Corporation | System for storing and managing plural logical volumes in each of several physical volumes including automatically creating logical volumes in peripheral data storage subsystem |
US5751614A (en) | 1994-03-08 | 1998-05-12 | Exponential Technology, Inc. | Sign-extension merge/mask, rotate/shift, and boolean operations executed in a vectored mux on an ALU |
GB2289353B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Data processing with multiple instruction sets |
US5551013A (en) | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
US5790825A (en) | 1995-11-08 | 1998-08-04 | Apple Computer, Inc. | Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions |
TW364976B (en) | 1996-09-23 | 1999-07-21 | Arm Corp | Input operand control in data processing systems |
TW343318B (en) * | 1996-09-23 | 1998-10-21 | Advanced Risc Mach Ltd | Register addressing in a data processing apparatus |
GB2317467B (en) | 1996-09-23 | 2000-11-01 | Advanced Risc Mach Ltd | Input operand control in data processing systems |
US5838960A (en) | 1996-09-26 | 1998-11-17 | Bay Networks, Inc. | Apparatus for performing an atomic add instructions |
US5864703A (en) | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US6009261A (en) | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
US6343356B1 (en) * | 1998-10-09 | 2002-01-29 | Bops, Inc. | Methods and apparatus for dynamic instruction controlled reconfiguration register file with extended precision |
US20020147969A1 (en) | 1998-10-21 | 2002-10-10 | Richard A. Lethin | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
US6857061B1 (en) * | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
US6877084B1 (en) | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
JP3659252B2 (ja) | 2003-03-28 | 2005-06-15 | セイコーエプソン株式会社 | ベクトルデータのアドレス参照方法およびベクトルプロセッサ |
US7284092B2 (en) | 2004-06-24 | 2007-10-16 | International Business Machines Corporation | Digital data processing apparatus having multi-level register file |
US7627723B1 (en) | 2006-09-21 | 2009-12-01 | Nvidia Corporation | Atomic memory operators in a parallel processor |
US7840783B1 (en) * | 2007-09-10 | 2010-11-23 | Netlogic Microsystems, Inc. | System and method for performing a register renaming operation utilizing hardware which is capable of operating in at least two modes utilizing registers of multiple widths |
US8694758B2 (en) | 2007-12-27 | 2014-04-08 | Intel Corporation | Mixing instructions with different register sizes |
US20090182982A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Rotate Then Insert Selected Bits Facility and Instructions Therefore |
US20090182983A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare and Branch Facility and Instruction Therefore |
US7877582B2 (en) * | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
US20100100692A1 (en) | 2008-10-21 | 2010-04-22 | International Business Machines Corporation | Exploiting Register High-Words |
US8386754B2 (en) * | 2009-06-24 | 2013-02-26 | Arm Limited | Renaming wide register source operand with plural short register source operands for select instructions to detect dependency fast with existing mechanism |
US8850166B2 (en) | 2010-02-18 | 2014-09-30 | International Business Machines Corporation | Load pair disjoint facility and instruction therefore |
US8438340B2 (en) | 2010-02-18 | 2013-05-07 | International Business Machines Corporation | Executing atomic store disjoint instructions |
US8914619B2 (en) | 2010-06-22 | 2014-12-16 | International Business Machines Corporation | High-word facility for extending the number of general purpose registers available to instructions |
-
2010
- 2010-06-22 US US12/820,735 patent/US8914619B2/en active Active
- 2010-11-08 AU AU2010355817A patent/AU2010355817B2/en active Active
- 2010-11-08 RU RU2012149004/08A patent/RU2562430C2/ru active
- 2010-11-08 CA CA2786049A patent/CA2786049C/en active Active
- 2010-11-08 EP EP10776353A patent/EP2430521A1/en not_active Ceased
- 2010-11-08 WO PCT/EP2010/067048 patent/WO2011160726A1/en active Application Filing
- 2010-11-08 MX MX2012014533A patent/MX2012014533A/es active IP Right Grant
- 2010-11-08 SG SG2012087284A patent/SG186078A1/en unknown
-
2011
- 2011-05-26 KR KR1020110050027A patent/KR101464808B1/ko active IP Right Grant
- 2011-06-15 JP JP2011133182A patent/JP5379825B2/ja active Active
- 2011-06-22 CN CN2011101682150A patent/CN102314333A/zh active Pending
- 2011-06-22 BR BRPI1103516-1A patent/BRPI1103516B1/pt active IP Right Grant
-
2012
- 2012-12-12 IL IL223587A patent/IL223587A/en active IP Right Grant
- 2012-12-19 ZA ZA2012/09644A patent/ZA201209644B/en unknown
- 2012-12-26 US US13/726,787 patent/US9459872B2/en active Active
-
2013
- 2013-08-06 JP JP2013162972A patent/JP5657074B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
ZA201209644B (en) | 2013-08-28 |
RU2012149004A (ru) | 2014-05-27 |
JP2013242918A (ja) | 2013-12-05 |
WO2011160726A1 (en) | 2011-12-29 |
AU2010355817B2 (en) | 2014-04-03 |
SG186078A1 (en) | 2013-01-30 |
US20110314260A1 (en) | 2011-12-22 |
US8914619B2 (en) | 2014-12-16 |
AU2010355817A1 (en) | 2012-07-05 |
RU2562430C2 (ru) | 2015-09-10 |
JP5379825B2 (ja) | 2013-12-25 |
MX2012014533A (es) | 2013-01-29 |
IL223587A (en) | 2017-07-31 |
KR101464808B1 (ko) | 2014-11-27 |
BRPI1103516B1 (pt) | 2021-01-12 |
US20130117545A1 (en) | 2013-05-09 |
US9459872B2 (en) | 2016-10-04 |
CN102314333A (zh) | 2012-01-11 |
KR20110139098A (ko) | 2011-12-28 |
JP2012009020A (ja) | 2012-01-12 |
CA2786049A1 (en) | 2011-12-29 |
BRPI1103516A2 (pt) | 2016-05-17 |
EP2430521A1 (en) | 2012-03-21 |
CA2786049C (en) | 2018-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5657074B2 (ja) | 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ | |
JP5039905B2 (ja) | 2つのオペランドに対して演算を行い、その後オペランドの元の値を格納するための命令 | |
JP5357181B2 (ja) | コンピュータ・システム、その動作方法、及び、コンピュータ・プログラム | |
JP5052678B2 (ja) | コンピュータを動作させる方法及びシステム | |
US9250904B2 (en) | Modify and execute sequential instruction facility and instructions therefor | |
US10963391B2 (en) | Extract target cache attribute facility and instruction therefor | |
JP2011509475A5 (ja) | ||
US20090182988A1 (en) | Compare Relative Long Facility and Instructions Therefore | |
KR101285072B1 (ko) | 실행 관련 명령어 | |
US20090182992A1 (en) | Load Relative and Store Relative Facility and Instructions Therefore | |
US20090182985A1 (en) | Move Facility and Instructions Therefore | |
JP2011509473A (ja) | Rotatetheninsertselectedbitsファシリティ及びそのための命令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140708 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140922 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20141104 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20141104 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141125 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5657074 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |